diff options
Diffstat (limited to 'gnu/packages/gnome.scm')
-rw-r--r-- | gnu/packages/gnome.scm | 114 |
1 files changed, 94 insertions, 20 deletions
diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm index 8f7d0a3dad..4d12ab4d59 100644 --- a/gnu/packages/gnome.scm +++ b/gnu/packages/gnome.scm @@ -59,6 +59,7 @@ #:use-module (gnu packages avahi) #:use-module (gnu packages base) #:use-module (gnu packages bison) + #:use-module (gnu packages build-tools) #:use-module (gnu packages calendar) #:use-module (gnu packages check) #:use-module (gnu packages cmake) @@ -99,6 +100,7 @@ #:use-module (gnu packages imagemagick) #:use-module (gnu packages music) #:use-module (gnu packages networking) + #:use-module (gnu packages ninja) #:use-module (gnu packages password-utils) #:use-module (gnu packages pcre) #:use-module (gnu packages perl) @@ -5152,10 +5154,20 @@ libxml2.") (sha256 (base32 "1s2xzrwcjhfb4ra8jrxqfycs1jpv97id0f6idb2h6vjkspxbjy23")))) - (build-system gnu-build-system) + (build-system glib-or-gtk-build-system) (arguments '(#:configure-flags - '("--without-plymouth") + `("--without-plymouth" + "--disable-systemd-journal" + "--localstatedir=/var" + ,(string-append "--with-default-path=" + (string-join '("/run/setuid-programs" + "/run/current-system/profile/bin" + "/run/current-system/profile/sbin") + ":")) + ;; Put GDM in bindir so that glib-or-gtk-build-system wraps the + ;; XDG_DATA_DIRS so that it finds its schemas. + "--sbindir" ,(string-append (assoc-ref %outputs "out") "/bin")) #:phases (modify-phases %standard-phases (add-before @@ -5173,9 +5185,54 @@ libxml2.") "libgdm/gdm-user-switching.c") (("#include <systemd/sd-login\\.h>") "#include <elogind/sd-login.h>")) - ;; Avoid checking SYSTEMD using pkg-config. - (setenv "SYSTEMD_CFLAGS" " ") - (setenv "SYSTEMD_LIBS" "-lelogind") + ;; Check for elogind. + (substitute* '("configure") + (("libsystemd") + "libelogind")) + ;; Look for system-installed sessions in + ;; /run/current-system/profile/share. + (substitute* '("libgdm/gdm-sessions.c" + "daemon/gdm-session.c" + "daemon/gdm-display.c" + "daemon/gdm-launch-environment.c") + (("DATADIR \"/x") + "\"/run/current-system/profile/share/x") + (("DATADIR \"/wayland") + "\"/run/current-system/profile/share/wayland") + (("DATADIR \"/gnome") + "\"/run/current-system/profile/share/gnome")) + (substitute* '("daemon/gdm-session.c") + (("set_up_session_environment \\(self\\);") + (string-append + "set_up_session_environment (self);\n" + ;; Propagate GDM_X_SERVER environment variable (which is set + ;; by the GDM service, as it's a function of what X modules + ;; the user decides to have available) down to worker + ;; processes. + "gdm_session_set_environment_variable (self, \"GDM_X_SERVER\",\n" + " g_getenv (\"GDM_X_SERVER\"));\n" + ;; FIXME: Really glib should be declaring XDG_CONFIG_DIRS as a + ;; variable, but it doesn't do that right now. Anyway + ;; /run/current-system/profile/share/gnome-session/sessions/gnome.desktop + ;; requires that a number of .desktop files be present, and + ;; these special .desktop files are in $XDG_CONFIG_DIRS (which + ;; defaults to /etc/xdg if it's not set). Here we need to + ;; provide a value such that the GNOME session's requirements + ;; are met (provided GNOME is installed of course). + "gdm_session_set_environment_variable (self, \"XDG_CONFIG_DIRS\",\n" + " \"/run/current-system/profile/etc/xdg\");\n" + ))) + ;; Look for custom GDM conf in /run/current-system. + (substitute* '("common/gdm-settings-backend.c") + (("GDM_CUSTOM_CONF") + "/run/current-system/etc/gdm/custom.conf")) + ;; Use service-supplied path to X. + (substitute* '("daemon/gdm-server.c") + (("\\(X_SERVER X_SERVER_ARG_FORMAT") + "(\"%s\" X_SERVER_ARG_FORMAT, g_getenv (\"GDM_X_SERVER\")")) + (substitute* '("daemon/gdm-x-session.c") + (("X_SERVER") + "g_getenv (\"GDM_X_SERVER\")")) #t))))) (native-inputs `(("dconf" ,dconf) @@ -5799,6 +5856,7 @@ associations for GNOME.") ("pulseaudio" ,pulseaudio) ("shared-mime-info" ,shared-mime-info) ("totem" ,totem) + ("xdg-user-dirs" ,xdg-user-dirs) ("yelp" ,yelp) ("zenity" ,zenity))) (synopsis "The GNU desktop environment") @@ -6517,7 +6575,7 @@ that support the Assistive Technology Service Provider Interface (AT-SPI).") (define-public gspell (package (name "gspell") - (version "1.4.1") + (version "1.4.2") (source (origin (method url-fetch) (uri (string-append "mirror://gnome/sources/" name "/" @@ -6525,7 +6583,7 @@ that support the Assistive Technology Service Provider Interface (AT-SPI).") name "-" version ".tar.xz")) (sha256 (base32 - "1ghh1xdzf04mfgb13zqpj88krpa44xv2vbyhm6k017kzrpz8hbs4")) + "1683vyyfq3q0ph665jj6id8hnlyid4qxzmqiwpv97gmz8zksg6x5")) (patches (search-patches "gspell-dash-test.patch")))) (build-system glib-or-gtk-build-system) (arguments @@ -6620,7 +6678,7 @@ views can be printed as PDF or PostScript files, or exported to HTML.") (define-public lollypop (package (name "lollypop") - (version "0.9.240") + (version "0.9.244") (source (origin (method url-fetch) @@ -6629,31 +6687,48 @@ views can be printed as PDF or PostScript files, or exported to HTML.") name "-" version ".tar.xz")) (sha256 (base32 - "0n1ycmg6dgz1pajs80fwlcbxw3rx1hff1xw6ja67zngm85ydbjvq")))) + "0y9nmwrplz4mlvc2badfbyjj97ksn6qqis3rgm8lvp5llsk1583w")))) + ;; TODO: Use meson-build-system (build-system glib-or-gtk-build-system) (arguments `(#:imported-modules ((guix build python-build-system) ,@%glib-or-gtk-build-system-modules) - #:phases (modify-phases %standard-phases - (add-after 'install 'wrap-program - (lambda* (#:key outputs #:allow-other-keys) - (let ((out (assoc-ref outputs "out")) - (gi-typelib-path (getenv "GI_TYPELIB_PATH"))) - (wrap-program (string-append out "/bin/lollypop") - `("GI_TYPELIB_PATH" ":" prefix (,gi-typelib-path)))) - #t)) - (add-after 'install 'wrap - (@@ (guix build python-build-system) wrap))))) + #:tests? #f ; no test suite + #:phases + (modify-phases %standard-phases + (delete 'configure) + (replace 'build + (lambda* (#:key inputs outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out"))) + ;; remove post-install script, we update the caches later + (substitute* "meson.build" + (("meson.add_install_script\\('meson_post_install.py'\\)") "")) + (zero? + (system* "meson" "builddir" (string-append "--prefix=" out)))))) + (replace 'install + (lambda _ (zero? (system* "ninja" "-C" "builddir" "install")))) + (add-after 'install 'wrap-program + (lambda* (#:key outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out")) + (gi-typelib-path (getenv "GI_TYPELIB_PATH"))) + (wrap-program (string-append out "/bin/lollypop") + `("GI_TYPELIB_PATH" ":" prefix (,gi-typelib-path)))) + #t)) + (add-after 'install 'wrap + (@@ (guix build python-build-system) wrap))))) (native-inputs `(("intltool" ,intltool) ("itstool" ,itstool) + ("ninja" ,ninja) ("pkg-config" ,pkg-config))) (inputs `(("gobject-introspection" ,gobject-introspection) + ("gst-plugins-base" ,gst-plugins-base) ("gtk+" ,gtk+) ("libnotify" ,libnotify) ("libsecret" ,libsecret) ("libsoup" ,libsoup) + ("meson" ,meson) ("python" ,python) ("python-beautifulsoup4" ,python-beautifulsoup4) ("python-gst" ,python-gst) @@ -6665,7 +6740,6 @@ views can be printed as PDF or PostScript files, or exported to HTML.") (propagated-inputs `(;; gst-plugins-base is required to start Lollypop, ;; the others are required to play streaming. - ("gst-plugins-base" ,gst-plugins-base) ("gst-plugins-good" ,gst-plugins-good) ("gst-plugins-ugly" ,gst-plugins-ugly))) (home-page "https://gnumdk.github.io/lollypop-web") |