diff options
Diffstat (limited to 'gnu/packages/genimage.scm')
-rw-r--r-- | gnu/packages/genimage.scm | 249 |
1 files changed, 95 insertions, 154 deletions
diff --git a/gnu/packages/genimage.scm b/gnu/packages/genimage.scm index bd77e4dc33..eb50141374 100644 --- a/gnu/packages/genimage.scm +++ b/gnu/packages/genimage.scm @@ -1,6 +1,7 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2018 Danny Milosavljevic <[email protected]> ;;; Copyright © 2021 Vincent Legoll <[email protected]> +;;; Copyright © 2021 Tobias Geerinckx-Rice <[email protected]> ;;; ;;; This file is part of GNU Guix. ;;; @@ -40,158 +41,98 @@ #:use-module (gnu packages virtualization)) (define-public genimage - (package - (name "genimage") - (version "11") - (source (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/pengutronix/genimage") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "15jmh17lvm3jw9c92bjarly7iwhmnfl322d91mprfv10ppb9ip54")) - ;; will be shipped with release 14 - (patches (search-patches "genimage-signedness.patch")))) - (build-system gnu-build-system) - (arguments - `(#:phases - (modify-phases %standard-phases - (add-after 'unpack 'guixify - (lambda* (#:key inputs #:allow-other-keys) - ;; Note to maintainers: Check ".def =" lines in source. - (substitute* "config.c" - (("\\.def = \"cpio\"") - (string-append ".def = \"" - (assoc-ref inputs "cpio") - "/bin/cpio\"")) - (("\\.def = \"dd\"") - (string-append ".def = \"" - (assoc-ref inputs "coreutils") - "/bin/dd\"")) - (("\\.def = \"debugfs\"") - (string-append ".def = \"" - (assoc-ref inputs "e2fsprogs") - "/sbin/debugfs\"")) - (("\\.def = \"e2fsck\"") - (string-append ".def = \"" - (assoc-ref inputs "e2fsprogs") - "/sbin/e2fsck\"")) - (("\\.def = \"genext2fs\"") - (string-append ".def = \"" - (assoc-ref inputs "genext2fs") - "/bin/genext2fs\"")) - (("\\.def = \"genisoimage\"") - (string-append ".def = \"" - (assoc-ref inputs "cdrkit-libre") - "/bin/genisoimage\"")) - (("\\.def = \"mcopy\"") - (string-append ".def = \"" - (assoc-ref inputs "mtools") - "/bin/mcopy\"")) - (("\\.def = \"mmd\"") - (string-append ".def = \"" - (assoc-ref inputs "mtools") - "/bin/mmd\"")) - ;;; Note: mkcramfs is obsolete. - (("\\.def = \"mkdosfs\"") - (string-append ".def = \"" - (assoc-ref inputs "dosfstools") - "/sbin/mkfs.fat\"")) - (("\\.def = \"mke2fs\"") - (string-append ".def = \"" - (assoc-ref inputs "e2fsprogs") - "/sbin/mke2fs\"")) - (("\\.def = \"mkfs\\.jffs2\"") - (string-append ".def = \"" - (assoc-ref inputs "mtd-utils") - "/sbin/mkfs.jffs2\"")) - (("\\.def = \"mkfs\\.ubifs\"") - (string-append ".def = \"" - (assoc-ref inputs "mtd-utils") - "/sbin/mkfs.ubifs\"")) - (("\\.def = \"mksquashfs\"") - (string-append ".def = \"" - (assoc-ref inputs "squashfs-tools") - "/bin/mksquashfs\"")) - (("\\.def = \"qemu-img\"") - (string-append ".def = \"" - (assoc-ref inputs "qemu") - "/bin/qemu-img\"")) - (("\\.def = \"tar\"") - (string-append ".def = \"" - (assoc-ref inputs "tar") - "/bin/tar\"")) - (("\\.def = \"tune2fs\"") - (string-append ".def = \"" - (assoc-ref inputs "e2fsprogs") - "/sbin/tune2fs\"")) - (("\\.def = \"ubinize\"") - (string-append ".def = \"" - (assoc-ref inputs "mtd-utils") - "/sbin/ubinize\"")) - (("\\.def = \"mkimage\"") - (string-append ".def = \"" - (assoc-ref inputs "u-boot-tools") - "/bin/mkimage\""))) - (substitute* "test/basic-images.test" - ;; Work around bug in sharness.sh. - (("mkdosfs") - "mkfs.fat") - ;; Work around bug in sharness.sh. - (("dd,mkfs\\.fat,mcopy") - "dd,mkfs_fat,mcopy") - ;; Should be in the next upstream release. - (("qemu_img") "qemu-img")) - (substitute* "util.c" - (("\"/bin/sh\"") - (string-append "\"" (assoc-ref inputs "bash") "/bin/sh\""))) - ;; We don't have /etc/passwd so uid 0 is not known as "root". - ;; Thus patch it out. - (substitute* '("test/ext2test.dump" - "test/ext3test.dump" - "test/ext4test.dump" - "test/ext2test-percent.dump" - "test/mke2fs.dump") - (("root") "unknown")) - #t)) - (add-before 'check 'setenv-check - (lambda _ - ;; Our container doesn't provide access to /etc/mtab - (setenv "EXT2FS_NO_MTAB_OK" "1") - ;; Make test reproducible - (setenv "GENIMAGE_MKFJFFS2" "mkfs.jffs2 -U") - (setenv "GENIMAGE_MKE2FS" "mke2fs -E no_copy_xattrs") - #t)) - (replace 'check - (lambda _ - (invoke "make" "TEST_LOG_COMPILER=" "check")))))) - (native-inputs - `(("autoconf" ,autoconf) - ("automake" ,automake) - ;;; Note: cramfs is obsolete. - ("dtc" ,dtc) ; for the tests - ("pkg-config" ,pkg-config) - ("util-linux" ,util-linux))) ; for the tests - (inputs - `(("bash" ,bash) - ("cdrkit-libre" ,cdrkit-libre) - ("cpio" ,cpio) - ;; Note: invoked by final executable. - ("coreutils" ,coreutils) ; chmod, dd - ("dosfstools" ,dosfstools) - ("e2fsprogs" ,e2fsprogs) - ("genext2fs" ,genext2fs) - ("libconfuse" ,libconfuse) - ("mtd-utils" ,mtd-utils) - ("mtools" ,mtools) - ("qemu" ,qemu-minimal) - ("squashfs-tools" ,squashfs-tools) - ("tar" ,tar) - ("u-boot-tools" ,u-boot-tools))) - (synopsis "Create Flash images according to specification") - (description "@command{genimage} creates Flash images according to a + (let ((commit "11bb04455eaf5434f0723c91a2224918ebd0a196") + (revision "1")) + (package + (name "genimage") + (version (git-version "14" revision commit)) + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/pengutronix/genimage") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1dq3lk0awk12v2aidry35gvrci5a3nr6rzcq0j9hyyf0w1z1rn0l")) + (patches + (search-patches "genimage-mke2fs-test.patch")))) + (build-system gnu-build-system) + (arguments + `(#:modules + ((ice-9 match) + ,@%gnu-build-system-modules) + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'guixify + (lambda* (#:key inputs #:allow-other-keys) + (map (match-lambda + ((input directory regexp) + (substitute* "config.c" + (((format #f "\\.def = \"(~a)\"" regexp) _ command) + (format #f ".def = \"~a/~a/~a\"" + (assoc-ref inputs input) directory command))))) + '(("cpio" "bin" "cpio") + ("coreutils" "bin" "dd") + ("e2fsprogs" "sbin" "debugfs|e2fsck|mke2fs|tune2fs") + ("genext2fs" "bin" "genext2fs") + ("cdrkit-libre" "bin" "genisoimage") + ("mtools" "bin" "mcopy|mmd") + ;; mkcramfs is obsolete. + ("dosfstools" "sbin" "mkdosfs") + ("mtd-utils" "sbin" "mkfs.(jffs2|ubifs)|ubinize") + ("squashfs-tools" "bin" "mksquashfs") + ("qemu" "bin" "qemu-img") + ("tar" "bin" "tar") + ("u-boot-tools" "bin" "mkimage"))) + (substitute* "util.c" + (("\"/bin/sh\"") + (string-append "\"" (assoc-ref inputs "bash") "/bin/sh\""))))) + (add-before 'check 'fix-failing-tests + (lambda _ + ;; We don't have /etc/passwd so uid 0 is not known as "root". + ;; Thus patch it out. + (substitute* '("test/ext2test.0.dump" + "test/ext3test.0.dump" + "test/ext4test.0.dump" + "test/ext2test-percent.0.dump" + "test/mke2fs.0.dump") + (("root") "unknown")))) + (add-before 'check 'setenv-check + (lambda _ + ;; Our container doesn't provide access to /etc/mtab + (setenv "EXT2FS_NO_MTAB_OK" "1") + ;; Make test reproducible + (setenv "GENIMAGE_MKFJFFS2" "mkfs.jffs2 -U") + (setenv "GENIMAGE_MKE2FS" "mke2fs -E no_copy_xattrs"))) + (replace 'check + (lambda _ + (invoke "make" "TEST_LOG_COMPILER=" "check")))))) + (native-inputs + (list autoconf + automake + ;;; Note: cramfs is obsolete. + dtc ; for the tests + pkg-config + util-linux)) ; for the tests + (inputs + `(("bash" ,bash) + ("cdrkit-libre" ,cdrkit-libre) + ("cpio" ,cpio) + ;; Note: invoked by final executable. + ("coreutils" ,coreutils) ; chmod, dd + ("dosfstools" ,dosfstools) + ("e2fsprogs" ,e2fsprogs) + ("genext2fs" ,genext2fs) + ("libconfuse" ,libconfuse) + ("mtd-utils" ,mtd-utils) + ("mtools" ,mtools) + ("qemu" ,qemu-minimal) + ("squashfs-tools" ,squashfs-tools) + ("tar" ,tar) + ("u-boot-tools" ,u-boot-tools))) + (synopsis "Create Flash images according to specification") + (description "@command{genimage} creates Flash images according to a specification file.") - (home-page "https://github.com/pengutronix/genimage") - (license license:gpl2))) + (home-page "https://github.com/pengutronix/genimage") + (license license:gpl2)))) |