diff --git a/gnu/packages/lxde.scm b/gnu/packages/lxde.scm index a52e403106..38dcd0e8ed 100644 --- a/gnu/packages/lxde.scm +++ b/gnu/packages/lxde.scm @@ -29,6 +29,7 @@ (define-module (gnu packages lxde) #:use-module (gnu packages) #:use-module (gnu packages admin) #:use-module (gnu packages autotools) + #:use-module (gnu packages base) #:use-module (gnu packages bash) #:use-module (gnu packages disk) #:use-module (gnu packages docbook) @@ -56,6 +57,7 @@ (define-module (gnu packages lxde) #:use-module (guix build-system gnu) #:use-module (guix build-system trivial) #:use-module (guix download) + #:use-module (guix git-download) #:use-module ((guix licenses) #:prefix license:) #:use-module (guix packages) #:use-module (guix utils)) @@ -250,25 +252,26 @@ (define-public spacefm (package (name "spacefm") (version "1.0.6") - (source (origin - (method url-fetch) - (uri (string-append - "https://github.com/IgnorantGuru/spacefm/archive/" - version ".tar.gz")) - (sha256 - (base32 - "1jg7xfyr7kihjnalxp8wxyb9qjk8hqf5l36rp3s0lvkpmpyakppy")) - (modules '((guix build utils))) - (snippet - '(begin - (substitute* "src/main.c" - (("#include " all) - ;; Add missing include for 'major' and 'minor' with glibc - ;; >= 2.28. - (string-append all "\n" - "#include \n"))) - #t)) - (file-name (string-append name "-" version ".tar.gz")))) + (source + (origin + (method git-fetch) + (uri + (git-reference + (url "https://github.com/IgnorantGuru/spacefm.git") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 "193mdcv73cfc2bnm4bzmnf1wmkzgj1ya64y0lgyxn3ww36ghcsx9")) + (modules '((guix build utils))) + (snippet + '(begin + (substitute* "src/main.c" + (("#include " all) + ;; Add missing include for 'major' and 'minor' with glibc + ;; >= 2.28. + (string-append all "\n" + "#include \n"))) + #t)))) (build-system glib-or-gtk-build-system) (native-inputs `(("desktop-file-utils" ,desktop-file-utils) @@ -278,20 +281,27 @@ (define-public spacefm ("pkg-config" ,pkg-config))) (inputs `(("bash" ,bash) + ("btrfs-progs" ,btrfs-progs) ("cairo" ,cairo) + ("coreutils" ,coreutils) ("curlftpfs" ,curlftpfs) + ("e2fsprogs" ,e2fsprogs) ("eudev" ,eudev) ("fakeroot" ,fakeroot) ("ffmpegthumbnailer" ,ffmpegthumbnailer) + ("fsarchiver" ,fsarchiver) ("fuseiso" ,fuseiso) ("glib" ,glib) + ("gphotofs" ,gphotofs) ("gtk+" ,gtk+) ("ifuse" ,ifuse) ("jmtpfs" ,jmtpfs) ("ktsuss" ,ktsuss) ("libx11" ,libx11) ("lsof" ,lsof) + ("ntfs-3g" ,ntfs-3g) ("pango" ,pango) + ("procps" ,procps) ("shared-mime-info" ,shared-mime-info) ("startup-notification" ,startup-notification) ("udevil" ,udevil) @@ -300,23 +310,88 @@ (define-public spacefm (arguments `(#:phases (modify-phases %standard-phases - (add-after 'unpack 'patch-source-files + (add-after 'unpack 'patch-bin-dirs + (lambda* (#:key inputs #:allow-other-keys) + (let* ((bash (assoc-ref inputs "bash")) + (coreutils (assoc-ref inputs "coreutils")) + (util-linux (assoc-ref inputs "util-linux")) + (procps (assoc-ref inputs "procps")) + (e2fsprogs (assoc-ref inputs "e2fsprogs")) + (btrfs-progs (assoc-ref inputs "btrfs-progs")) + (ntfs-3g (assoc-ref inputs "ntfs-3g")) + (lsof (assoc-ref inputs "lsof")) + (fsarchiver (assoc-ref inputs "fsarchiver")) + (ktsuss (assoc-ref inputs "ktsuss"))) + (with-directory-excursion "src" + (substitute* '("ptk/ptk-file-task.c" "ptk/ptk-handler.h" + "ptk/ptk-location-view.c" "spacefm-auth" + "spacefm-auth.bash" "vfs/vfs-file-task.c" + "settings.c" "../data/ui/prefdlg.ui" + "../data/ui/prefdlg2.ui") + (("/bin/sh" file) (string-append bash file)) + (("/bin/bash" file) (string-append bash file)) + (("/bin/kill" file) (string-append coreutils file)) + (("/bin/ls" file) (string-append coreutils file)) + (("/usr(/bin/sha256sum)" _ file) (string-append coreutils file)) + (("/usr(/bin/sha512sum)" _ file) (string-append coreutils file)) + (("/sbin/fsck" file) (string-append util-linux file)) + (("/sbin/mkfs" file) (string-append util-linux file)) + (("/sbin/mkswap" file) (string-append util-linux file)) + (("/bin/ps" file) (string-append procps file)) + (("/sbin/tune2fs" file) (string-append e2fsprogs file)) + (("/sbin/btrfs") (string-append btrfs-progs "/bin/btrfs")) + (("/sbin/ntfslabel" file) (string-append ntfs-3g file)) + (("/usr(/bin/lsof)" _ file) (string-append lsof file)) + (("(/usr)?/(sbin|bin)/fsarchiver") (string-append fsarchiver + "/sbin/fsarchiver")) + (("/usr(/bin/ktsuss)" _ file) (string-append ktsuss file)))) + #t))) + (add-after 'patch-bin-dirs 'patch-share-dirs + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (share (string-append out "/share"))) + (with-directory-excursion "src" + (substitute* '("main-window.c" "settings.c" + "ptk/ptk-app-chooser.c") + (("/usr(/local)?/share") share))) + #t))) + (add-after 'patch-share-dirs 'patch-mime-dirs + (lambda* (#:key inputs #:allow-other-keys) + (let* ((mime (string-append (assoc-ref inputs "shared-mime-info") + "/share/mime"))) + (with-directory-excursion "src" + (substitute* '("mime-type/mime-type.c" "ptk/ptk-file-menu.c") + (("/usr(/local)?/share/mime") mime))) + #t))) + (add-after 'patch-mime-dirs 'patch-setuid-progs + (lambda _ + (let* ((su "/run/setuid-programs/su") + (mount "/run/setuid-programs/mount") + (umount "/run/setuid-programs/umount") + (udevil "/run/setuid-programs/udevil")) + (with-directory-excursion "src" + (substitute* '("settings.c" "settings.h" "vfs/vfs-file-task.c" + "vfs/vfs-volume-hal.c" "../data/ui/prefdlg.ui" + "../data/ui/prefdlg2.ui") + (("(/usr)?/bin/su") su) + (("/(bin|sbin)/mount") mount) + (("/(bin|sbin)/umount") umount) + (("/usr/bin/udevil") udevil))) + #t))) + (add-after 'patch-setuid-progs 'patch-spacefm-conf (lambda* (#:key inputs #:allow-other-keys) - ;; Patch config file to load programs correctly. (substitute* "etc/spacefm.conf" (("#terminal_su=/bin/su") - "terminal_su=/run/setuid-programs/sudo") + "terminal_su=/run/setuid-programs/su") (("#graphical_su=/usr/bin/gksu") (string-append "graphical_su=" (string-append (assoc-ref inputs "ktsuss") "/bin/ktsuss")))) - ;; SpaceFM expects udevil to have uid set to root. - ;; User has to manually add udevil to setuid-programs. - (substitute* "src/settings.c" - (("/usr/bin/udevil") - "/run/setuid-programs/udevil")) #t))) #:configure-flags (list + (string-append "--with-preferable-sudo=" + (assoc-ref %build-inputs "ktsuss") + "/bin/ktsuss") (string-append "--with-bash-path=" (assoc-ref %build-inputs "bash") "/bin/bash")