gnu: spacefm: Fix functionality.

* gnu/packages/lxde.scm (spacefm): Update package definition.
[source]: Change from url-fetch to git-fetch.
[inputs]: Add btrfs-progs, coreutils, e2fsprogs, fsarchiver,
gphotofs, ntfs-3g and procps.
[arguments]<#:phases>[patch-source-files]: Delete phase.
[patch-bin-dirs]: New phase.
[patch-mime-dirs]: New phase.
[patch-setuid-progs]: New phase.
[patch-spacefm-conf]: New phase.
[arguments]<:configure-flags>: Add "--with-preferable-sudo".

Signed-off-by: Danny Milosavljevic <dannym@scratchpost.org>
This commit is contained in:
Raghav Gururajan 2020-05-07 15:51:43 -04:00 committed by Danny Milosavljevic
parent a632eeb86c
commit 7ee215dea9
No known key found for this signature in database
GPG key ID: E71A35542C30BAA5

View file

@ -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 <sys/types\\.h>" all)
;; Add missing include for 'major' and 'minor' with glibc
;; >= 2.28.
(string-append all "\n"
"#include <sys/sysmacros.h>\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 <sys/types\\.h>" all)
;; Add missing include for 'major' and 'minor' with glibc
;; >= 2.28.
(string-append all "\n"
"#include <sys/sysmacros.h>\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")