aboutsummaryrefslogtreecommitdiff
path: root/gnu/packages/genimage.scm
blob: 4a9d24fe783718e669f4f5a7ea62abead81f566a (about) (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2018 Danny Milosavljevic <dannym@scratchpost.org>
;;; Copyright © 2021 Vincent Legoll <vincent.legoll@gmail.com>
;;; Copyright © 2021 Tobias Geerinckx-Rice <me@tobias.gr>
;;;
;;; This file is part of GNU Guix.
;;;
;;; GNU Guix is free software; you can redistribute it and/or modify it
;;; under the terms of the GNU General Public License as published by
;;; the Free Software Foundation; either version 3 of the License, or (at
;;; your option) any later version.
;;;
;;; GNU Guix is distributed in the hope that it will be useful, but
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
;;; GNU General Public License for more details.
;;;
;;; You should have received a copy of the GNU General Public License
;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.

(define-module (gnu packages genimage)
  #:use-module (guix utils)
  #:use-module (guix packages)
  #:use-module (guix git-download)
  #:use-module ((guix licenses) #:prefix license:)
  #:use-module (guix build-system gnu)
  #:use-module (guix build utils)
  #:use-module (gnu packages)
  #:use-module (gnu packages autotools)
  #:use-module (gnu packages base)
  #:use-module (gnu packages bash)
  #:use-module (gnu packages bootloaders)
  #:use-module (gnu packages cdrom)
  #:use-module (gnu packages compression)
  #:use-module (gnu packages cpio)
  #:use-module (gnu packages disk)
  #:use-module (gnu packages linux)
  #:use-module (gnu packages mtools)
  #:use-module (gnu packages pkg-config)
  #:use-module (gnu packages textutils)
  #:use-module (gnu packages virtualization))

(define-public genimage
  (let ((commit "ec44ae086c705e6f0439e742c5a2e9b8f3d6ca82")
        (revision "1"))
    (package
      (name "genimage")
      (version (git-version "15" 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
                  "0amj2vjff58yna6kq959i2gqmbjywqr8j5kr5pjqsvbqam3vgg0r"))
                (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/ext2test.1.dump"
                              "test/ext3test.0.dump"
                              "test/ext3test.1.dump"
                              "test/ext4test.0.dump"
                              "test/ext4test.1.dump"
                              "test/ext2test-percent.0.dump"
                              "test/ext2test-percent.1.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))))
problems with native or cross building for i586-gnu, and one factor mixed up with this is that some of the gcc packages use sexp's for the phases, and thus introducing gexp's has caused problems. As part of the going in circles with this, this commit switches gcc-boot0 to use gexp's in it's arguments, and then also modifies libstdc++-boot0, libstdc++-boot0-gcc7, cross-gcc-wrapper, gcc-final and make-libstdc++ to handle this change. If done correctly, this change shouldn't affect any derivations. * gnu/packages/commencement.scm (libstdc++-boot0, libstdc++-boot0-gcc7, gcc-boot0, gcc-final)[arguments]: Use gexps. (cross-gcc-wrapper): Use gexps in the generated package. * gnu/packages/gcc.scm (make-libstdc++): Use gexps in the generated package. Christopher Baines 2023-05-05gnu: gcc-11: Fix patch-hurd-libpthread phase....It didn't work when it was introduced in 08acdd0765b5f4fbfafa699a823ea7985d4d35a7. * gnu/packages/gcc.scm (gcc-11)[arguments]: Remove the procedure arguments, and use %build-inputs rather than inputs. * gnu/packages/commencement.scm (gcc-boot0)[native-inputs]: Add hurd-patch, as this package inherits from gcc-11. Christopher Baines 2023-04-10gnu: Add gdc-toolchain-11....* gnu/packages/commencement.scm (gdc-toolchain-11): New variable. Efraim Flashner 2023-03-20Merge remote-tracking branch 'origin/master' into core-updatesAndreas Enge 2023-03-15gnu: coreutils-boot0: Fix building on armhf-linux....* gnu/packages/commencement.scm (coreutils-boot0)[arguments]: When building for armhf-linux include the workaround to force 32-bit time. Rearrange arguments so that the configure-flags for armhf-linux aren't overridden. Efraim Flashner 2023-03-02Merge remote-tracking branch 'savannah/master' into core-updates...Conflicts: gnu/local.mk gnu/packages/autotools.scm gnu/packages/cmake.scm gnu/packages/gnuzilla.scm gnu/packages/haskell.scm gnu/packages/pdf.scm gnu/packages/python-xyz.scm gnu/packages/samba.scm gnu/packages/tex.scm gnu/packages/tls.scm gnu/packages/wxwidgets.scm Christopher Baines 2023-02-28gnu: static-bash-for-glibc: Use gexps....* gnu/packages/commencement.scm (static-bash-for-glibc)[arguments]: Use gexps. Ludovic Courtès 2023-03-04gnu: mig: Remove dependency on Perl....* gnu/packages/hurd.scm (mig)[inputs]: Remove PERL. [arguments]: Remove 'patch-non-shebang-references' phase and add 'avoid-perl-dependency' phase. Ludovic Courtès 2023-02-15gnu: commencement: mes-boot: Update to 0.24.2....This fixes <https://debbugs.gnu.org/41264>. * gnu/packages/commencement.scm (mes-boot): Update to 0.24.2. Jan (janneke) Nieuwenhuizen 2023-02-15gnu: commencement: tcc-boot: Rebuild Mes C Library....* gnu/packages/commencement.scm (tcc-boot)[arguments]: Rebuild the Mes C Library in the "install" phase. Jan (janneke) Nieuwenhuizen 2023-02-15Revert "gnu: commencement: mes-boot: Update to 0.24.2."...This reverts commit b928e38bd333e6186727fe5c5e94b85d157b79d6. The gcc-core-mesboot0 package fails to build with mes-boot-0.24.2, `ar' segfaults $ strace ar rc libiberty.a argv.o execve("/gnu/store/nvb6jh26hfjifs79h7hrlkw3cisgc353-binutils-mesboot0-2.20.1a/bin/ar", ["ar", "rc", "libiberty.a", "argv.o"], 0x7ffc4187fff8 /* 82 vars */) = 0 [ Process PID=22689 runs in 32 bit mode. ] brk(NULL) = 0x830f000 brk(0x830f000) = 0x830f000 stat64("libiberty.a", {st_mode=S_IFREG|0600, st_size=8, ...}) = 0 brk(0x830f0a4) = 0x830f0a4 brk(0x830f0b4) = 0x830f0b4 brk(0x8310098) = 0x8310098 brk(0x83100a4) = 0x83100a4 brk(0x8311088) = 0x8311088 --- SIGSEGV {si_signo=SIGSEGV, si_code=SEGV_MAPERR, si_addr=0x63ecebc8} --- +++ killed by SIGSEGV +++ Segmentation fault See also <https://debbugs.gnu.org/41264>. Jan (janneke) Nieuwenhuizen 2023-02-15gnu: commencement: mes-boot: Update to 0.24.2....This fixes <https://debbugs.gnu.org/41264>. * gnu/packages/commencement.scm (mes-boot): Update to 0.24.2. Jan (janneke) Nieuwenhuizen 2023-02-14gnu: %boot6-inputs: Replace xz with xz-final....* gnu/packages/commencement.scm (xz-final): New variable. (%boot6-inputs): Add xz-final. Remove xz. (%final-inputs): Add xz-final. Remove xz from packages 'to finalize'. Efraim Flashner 2023-02-12gnu: coreutils-boot0: Add comment about arm* configure-flags....* gnu/packages/commencement.scm (coreutils-boot0)[arguments]: Add a full comment around the configure-flags used when building for arm architectures. Efraim Flashner 2023-02-05gnu: Rename 'guile-3.0/fixed' to 'guile-3.0/pinned'....* gnu/packages/guile.scm: Rename variable 'guile-3.0/fixed' to 'guile-3.0/pinned', add deprecation. * etc/release-manifest.scm (%packages-to-cross-build): Replace 'guile-3.0/fixed' with 'guile-3.0/pinned'. * gnu/packages/autotools.scm (make-autoconf-wrapper)[inputs]: Likewise. * gnu/packages/commencement.scm (guile-final): Likewise. Signed-off-by: Liliana Marie Prikler <liliana.prikler@gmail.com> Simon Tournier 2023-01-30Merge remote-tracking branch 'origin/master' into core-updates... Conflicts: doc/guix.texi gnu/local.mk gnu/packages/admin.scm gnu/packages/base.scm gnu/packages/chromium.scm gnu/packages/compression.scm gnu/packages/databases.scm gnu/packages/diffoscope.scm gnu/packages/freedesktop.scm gnu/packages/gnome.scm gnu/packages/gnupg.scm gnu/packages/guile.scm gnu/packages/inkscape.scm gnu/packages/llvm.scm gnu/packages/openldap.scm gnu/packages/pciutils.scm gnu/packages/ruby.scm gnu/packages/samba.scm gnu/packages/sqlite.scm gnu/packages/statistics.scm gnu/packages/syndication.scm gnu/packages/tex.scm gnu/packages/tls.scm gnu/packages/version-control.scm gnu/packages/xml.scm guix/build-system/copy.scm guix/scripts/home.scm Efraim Flashner 2022-12-11gnu: coreutils-boot0: Fix building on arm architectures....* gnu/packages/commencement.scm (coreutils-boot0)[arguments]: When building for arm architectures skip building some programs. Efraim Flashner