From e680954ca2b0d0987045c22642e4c1290a6de05b Mon Sep 17 00:00:00 2001 From: Zhu Zihao Date: Thu, 3 Feb 2022 22:27:40 +0800 Subject: [PATCH 1/4] gnu: g-golf: Update to 0.0.1-1010-1824633. * gnu/packages/guile-xyz.scm (g-golf)[arguments]: Use G-Expression. : Add phase 'fix-guile-site-directory'. Patch 'configure.ac' before bootstrapping, avoid breaking configure script in accident. In phase 'substitute-libs', use `search-input-file` for searching libraries. In phase 'start-xorg-server', simplify the X server startup script. [inputs]: Remove gtk+ and clutter. Use label-less style. [native-inputs]: Add gtk+ and clutter, they're now only needed in test. Use label-less style. --- gnu/packages/guile-xyz.scm | 124 +++++++++++++++++++------------------ 1 file changed, 63 insertions(+), 61 deletions(-) diff --git a/gnu/packages/guile-xyz.scm b/gnu/packages/guile-xyz.scm index f35ba43057..7be33c060f 100644 --- a/gnu/packages/guile-xyz.scm +++ b/gnu/packages/guile-xyz.scm @@ -39,6 +39,7 @@ ;;; Copyright © 2021 Zelphir Kaltstahl ;;; Copyright © 2021 Oleg Pykhalov ;;; Copyright © 2021, 2022 Artyom V. Poptsov +;;; Copyright © 2022 Zhu Zihao ;;; ;;; This file is part of GNU Guix. ;;; @@ -117,6 +118,7 @@ (define-module (gnu packages guile-xyz) #:use-module (gnu packages xorg) #:use-module (guix packages) #:use-module (guix download) + #:use-module (guix gexp) #:use-module (guix git-download) #:use-module (guix hg-download) #:use-module (guix build-system cmake) @@ -1969,8 +1971,8 @@ (define-public guile-sly (license license:gpl3+))) (define-public g-golf - (let ((commit "ef830107b9765bd6a2da848d0cbe45e11374c0b5") - (revision "839")) + (let ((commit "1824633d37da3794f349d6829e9dac2cf89adaa8") + (revision "1010")) (package (name "g-golf") (version (git-version "0.1.0" revision commit)) @@ -1982,69 +1984,69 @@ (define-public g-golf (commit commit))) (file-name (git-file-name name version)) (sha256 - (base32 "0r472hvmf447kqvkahp1wy4irb5gy8y793hm8r9rc511smdx66cw")))) + (base32 "0ncpqv6pbsx9fjmdzvzbjljnhqgw9pynqy9vr9aq35nb7rzrhfdf")))) (build-system gnu-build-system) - (native-inputs - `(("autoconf" ,autoconf) - ("automake" ,automake) - ("texinfo" ,texinfo) - ("gettext" ,gettext-minimal) - ("libtool" ,libtool) - ("pkg-config" ,pkg-config) - ("xorg-server" ,xorg-server))) + (arguments + (list + #:configure-flags + #~(list "--with-guile-site=no") + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'fix-guile-site-directory + (lambda _ + (substitute* "configure.ac" + (("SITEDIR=.*$") + "SITEDIR=\"$datadir/guile/site/$GUILE_EFFECTIVE_VERSION\";\n") + (("SITECCACHEDIR=\"\\$libdir/g-golf") + "SITECCACHEDIR=\"$libdir/")))) + (add-before 'configure 'tests-work-arounds + (lambda* (#:key inputs #:allow-other-keys) + ;; In build environment, There is no /dev/tty + (substitute* "test-suite/tests/gobject.scm" + (("/dev/tty") "/dev/null")))) + (add-before 'configure 'substitute-libs + (lambda* (#:key inputs outputs #:allow-other-keys) + (define (get lib) + (search-input-file inputs (string-append "lib/" lib ".so"))) + + (let* ((libgi (get "libgirepository-1.0")) + (libglib (get "libglib-2.0")) + (libgobject (get "libgobject-2.0")) + (libg-golf (string-append #$output "/lib/libg-golf"))) + (substitute* "g-golf/init.scm" + (("libgirepository-1.0") libgi) + (("libglib-2.0") libglib) + (("libgobject-2.0") libgobject) + (("\\(dynamic-link \"libg-golf\"\\)") + (format #f "~s" + `(catch #t + (lambda () + (dynamic-link "libg-golf")) + (lambda _ + (dynamic-link ,libg-golf)))))) + (setenv "GUILE_AUTO_COMPILE" "0") + #t))) + (add-before 'check 'start-xorg-server + (lambda* (#:key inputs #:allow-other-keys) + ;; The test suite requires a running X server. + (system "Xvfb :1 &") + (setenv "DISPLAY" ":1") + #t))))) (inputs - `(("guile" ,guile-2.2) - ("guile-lib" ,guile2.2-lib) - ("clutter" ,clutter) - ("gtk" ,gtk+) - ("glib" ,glib))) + (list guile-3.0 guile-lib glib)) + (native-inputs + (list autoconf + automake + texinfo + gettext-minimal + libtool + pkg-config + ;; required for tests + gtk+ + clutter + xorg-server-for-tests)) (propagated-inputs (list gobject-introspection)) - (arguments - `(#:phases - (modify-phases %standard-phases - (add-before 'configure 'tests-work-arounds - (lambda* (#:key inputs #:allow-other-keys) - ;; In build environment, There is no /dev/tty - (substitute* - "test-suite/tests/gobject.scm" - (("/dev/tty") "/dev/null")))) - (add-before 'configure 'substitute-libs - (lambda* (#:key inputs outputs #:allow-other-keys) - (let* ((get (lambda (key lib) - (string-append (assoc-ref inputs key) "/lib/" lib))) - (libgi (get "gobject-introspection" "libgirepository-1.0")) - (libglib (get "glib" "libglib-2.0")) - (libgobject (get "glib" "libgobject-2.0")) - (libgdk (get "gtk" "libgdk-3"))) - (substitute* "configure" - (("SITEDIR=\"\\$datadir/g-golf\"") - "SITEDIR=\"$datadir/guile/site/$GUILE_EFFECTIVE_VERSION\"") - (("SITECCACHEDIR=\"\\$libdir/g-golf/") - "SITECCACHEDIR=\"$libdir/")) - (substitute* "g-golf/init.scm" - (("libgirepository-1.0") libgi) - (("libglib-2.0") libglib) - (("libgdk-3") libgdk) - (("libgobject-2.0") libgobject) - (("\\(dynamic-link \"libg-golf\"\\)") - (format #f "~s" - `(dynamic-link - (format #f "~alibg-golf" - (if (getenv "GUILE_GGOLF_UNINSTALLED") - "" - ,(format #f "~a/lib/" - (assoc-ref outputs "out")))))))) - (setenv "GUILE_AUTO_COMPILE" "0") - (setenv "GUILE_GGOLF_UNINSTALLED" "1") - #t))) - (add-before 'check 'start-xorg-server - (lambda* (#:key inputs #:allow-other-keys) - ;; The test suite requires a running X server. - (system (format #f "~a/bin/Xvfb :1 &" - (assoc-ref inputs "xorg-server"))) - (setenv "DISPLAY" ":1") - #t))))) (home-page "https://www.gnu.org/software/g-golf/") (synopsis "Guile bindings for GObject Introspection") (description -- 2.34.0