aboutsummaryrefslogtreecommitdiff
path: root/gnu
diff options
context:
space:
mode:
authorDanny Milosavljevic <dannym@scratchpost.org>2019-01-22 16:38:19 +0100
committerDanny Milosavljevic <dannym@scratchpost.org>2019-01-22 16:38:19 +0100
commitd1dfcc7c1b38d816dddc2868917ba490db7e7c3b (patch)
treed822b6ab7b66d83cc54ee8050d2088f505c1413c /gnu
parentc63d7b7975fd15066c056d8a8715d9ce1b10389e (diff)
downloadguix-d1dfcc7c1b38d816dddc2868917ba490db7e7c3b.tar
guix-d1dfcc7c1b38d816dddc2868917ba490db7e7c3b.tar.gz
gnu: Add fakeroot.
* gnu/packages/linux.scm (fakeroot): New variable.
Diffstat (limited to 'gnu')
-rw-r--r--gnu/packages/linux.scm63
1 files changed, 63 insertions, 0 deletions
diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm
index 5f3d4707aa..6cb59662e2 100644
--- a/gnu/packages/linux.scm
+++ b/gnu/packages/linux.scm
@@ -5060,3 +5060,66 @@ filesystem as a normal (non-root) user. It does not require you to mount
the image file to copy files on it, nor does it require that you become
the superuser to make device nodes.")
(license license:gpl2)))
+
+(define-public fakeroot
+ (package
+ (name "fakeroot")
+ (version "1.23")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "http://ftp.debian.org/debian/pool/main/f/"
+ "fakeroot/fakeroot_" version ".orig.tar.xz"))
+ (file-name (string-append name "-" version ".tar.gz"))
+ (sha256
+ (base32
+ "1xpl0s2yjyjwlf832b6kbkaa5921liybaar13k7n45ckd9lxd700"))))
+ (build-system gnu-build-system)
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (add-after 'configure 'patch-Makefile
+ (lambda _
+ ;; Note: The root of the problem is already in "Makefile.am".
+ (substitute* "Makefile"
+ (("/bin/sh") (which "sh")))
+ #t))
+ (add-after 'unpack 'patch-getopt
+ (lambda* (#:key inputs #:allow-other-keys)
+ (substitute* "scripts/fakeroot.in"
+ (("getopt")
+ (string-append (assoc-ref inputs "util-linux")
+ "/bin/getopt")))
+ #t))
+ (add-before 'check 'prepare-check
+ (lambda _
+ (setenv "SHELL" (which "bash"))
+ (setenv "VERBOSE" "1")
+ (substitute* "test/t.touchinstall"
+ ;; We don't have the name of the root user, so use ID=0.
+ (("grep root") "grep \"\\<0\\>\""))
+ (substitute* "test/tartest"
+ ;; We don't have the name of the root group, so use ID=0.
+ (("ROOTGROUP=root") "ROOTGROUP=0")
+ ;; We don't have the name of the daemon user, so use IDs.
+ (("daemon:sys") "1:3")
+ (("daemon:") "1:"))
+ ;; We don't have an /etc/passwd entry for "root" - use numeric IDs.
+ (substitute* "test/compare-tar"
+ (("tar -tvf") "tar --numeric-owner -tvf"))
+ #t)))))
+ (native-inputs
+ `(("sharutils" ,sharutils) ; for the tests
+ ("xz" ,xz))) ; for the tests
+ (inputs
+ `(("libcap" ,libcap)
+ ("util-linux" ,util-linux)))
+ (synopsis "Provides a fake root environment")
+ (description "@command{fakeroot} runs a command in an environment where
+it appears to have root privileges for file manipulation. This is useful
+for allowing users to create archives (tar, ar, .deb etc.) with files in
+them with root permissions/ownership. Without fakeroot one would have to
+have root privileges to create the constituent files of the archives with
+the correct permissions and ownership, and then pack them up, or one would
+have to construct the archives directly, without using the archiver.")
+ (home-page "http://freshmeat.sourceforge.net/projects/fakeroot")
+ (license license:gpl3+)))