diff options
-rw-r--r-- | Makefile.am | 1 | ||||
-rw-r--r-- | doc/guix.texi | 9 | ||||
-rw-r--r-- | gnu/packages/admin.scm | 31 | ||||
-rw-r--r-- | gnu/packages/autotools.scm | 4 | ||||
-rw-r--r-- | gnu/packages/avahi.scm | 32 | ||||
-rw-r--r-- | gnu/packages/glib.scm | 18 | ||||
-rw-r--r-- | gnu/packages/gnuzilla.scm | 21 | ||||
-rw-r--r-- | gnu/packages/gtk.scm | 18 | ||||
-rw-r--r-- | gnu/packages/kerberos.scm | 9 | ||||
-rw-r--r-- | gnu/packages/linux.scm | 7 | ||||
-rw-r--r-- | gnu/packages/networking.scm | 12 | ||||
-rw-r--r-- | gnu/packages/nss.scm | 14 | ||||
-rw-r--r-- | gnu/packages/patches/gobject-introspection-absolute-shlib-path.patch | 54 | ||||
-rw-r--r-- | gnu/packages/patches/gobject-introspection-cc.patch | 18 | ||||
-rw-r--r-- | guix/build-system/mozilla.scm | 52 | ||||
-rw-r--r-- | guix/build/minetest-build-system.scm | 9 | ||||
-rw-r--r-- | guix/build/qt-utils.scm | 10 | ||||
-rw-r--r-- | guix/build/utils.scm | 11 | ||||
-rw-r--r-- | guix/lint.scm | 3 |
19 files changed, 172 insertions, 161 deletions
diff --git a/Makefile.am b/Makefile.am index c4ccee65f1..024596d790 100644 --- a/Makefile.am +++ b/Makefile.am @@ -142,6 +142,7 @@ MODULES = \ guix/build-system/font.scm \ guix/build-system/go.scm \ guix/build-system/meson.scm \ + guix/build-system/mozilla.scm \ guix/build-system/minify.scm \ guix/build-system/minetest.scm \ guix/build-system/asdf.scm \ diff --git a/doc/guix.texi b/doc/guix.texi index aca88cdada..db479605ee 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -8450,6 +8450,15 @@ directory, the parameter @code{#:javascript-files} can be used to specify a list of file names to feed to the minifier. @end defvr +@defvr {Scheme Variable} mozilla-build-system +This variable is exported by @code{(guix build-system mozilla)}. It +sets the @code{--target} and @code{--host} configuration flags to what +software developed by Mozilla expects -- due to historical reasons, +Mozilla software expects @code{--host} to be the system that is +cross-compiled from and @code{--target} to be the system that is +cross-compiled to, contrary to the standard Autotools conventions. +@end defvr + @defvr {Scheme Variable} ocaml-build-system This variable is exported by @code{(guix build-system ocaml)}. It implements a build procedure for @uref{https://ocaml.org, OCaml} packages, which consists diff --git a/gnu/packages/admin.scm b/gnu/packages/admin.scm index 3b1a998452..72b0b4ee72 100644 --- a/gnu/packages/admin.scm +++ b/gnu/packages/admin.scm @@ -1198,8 +1198,7 @@ connection alive.") (("^RELEASETYPE=.*") (format #f "RELEASETYPE=~a\n" ,bind-release-type)) (("^RELEASEVER=.*") - (format #f "RELEASEVER=~a\n" ,bind-release-version))) - #t)) + (format #f "RELEASEVER=~a\n" ,bind-release-version))))) ,@(if (%current-target-system) '((add-before 'configure 'fix-bind-cross-compilation (lambda _ @@ -1247,11 +1246,7 @@ connection alive.") "--owner=root:0" "--group=root:0"))))) (add-after 'install 'post-install - ;; TODO(core-updates): native-inputs isn't required anymore. - (lambda* (#:key ,@(if (%current-target-system) - '(native-inputs) - '()) - inputs outputs #:allow-other-keys) + (lambda* (#:key inputs outputs #:allow-other-keys) ;; Install the dhclient script for GNU/Linux and make sure ;; if finds all the programs it needs. (let* ((out (assoc-ref outputs "out")) @@ -1274,31 +1269,13 @@ connection alive.") ,(map (lambda (dir) (string-append dir "/bin:" dir "/sbin")) - (list inetutils net-tools coreutils sed)))) - ;; TODO(core-updates): should not be required anymore, - ;; once <https://issues.guix.gnu.org/49290> has been merged. - ,@(if (%current-target-system) - '((for-each - (lambda (file) - (substitute* file - (((assoc-ref native-inputs "bash")) - (assoc-ref inputs "bash")))) - (list (string-append libexec - "/dhclient-script") - (string-append libexec - "/.dhclient-script-real")))) - '()) - #t)))))) + (list inetutils net-tools coreutils sed)))))))))) (native-inputs (list perl file)) (inputs `(("inetutils" ,inetutils) - ;; TODO(core-updates): simply make this unconditional - ,@(if (%current-target-system) - ;; for wrap-program - `(("bash" ,(canonical-package bash-minimal))) - '()) + ("bash" ,bash-minimal) ,@(if (hurd-target?) '() `(("net-tools" ,net-tools) ("iproute" ,iproute))) diff --git a/gnu/packages/autotools.scm b/gnu/packages/autotools.scm index a8bf36a966..fbde262499 100644 --- a/gnu/packages/autotools.scm +++ b/gnu/packages/autotools.scm @@ -327,14 +327,14 @@ output is indexed in many ways to simplify browsing.") (define-public automake (package (name "automake") - (version "1.16.3") + (version "1.16.4") (source (origin (method url-fetch) (uri (string-append "mirror://gnu/automake/automake-" version ".tar.xz")) (sha256 (base32 - "0fmz2fhmzcpacnprl5msphvaflwiy0hvpgmqlgfny72ddijzfazz")) + "0v8kbw4fan7apbjwziylyjl5z708w452r5q6kpafcmssi04wryl0")) (patches (search-patches "automake-skip-amhello-tests.patch")))) (build-system gnu-build-system) diff --git a/gnu/packages/avahi.scm b/gnu/packages/avahi.scm index 7dcaa17a76..797e35e7eb 100644 --- a/gnu/packages/avahi.scm +++ b/gnu/packages/avahi.scm @@ -75,26 +75,20 @@ ,@(if (%current-target-system) '("ac_cv_prog_have_pkg_config=yes") '())) - ;; TODO(core-updates): Make this unconditional. - ,@(if (%current-target-system) - `(#:modules ((srfi srfi-26) - (guix build utils) - (guix build gnu-build-system)) - #:phases - ,#~(modify-phases %standard-phases - (add-after 'patch-shebangs 'patch-more-shebangs - (lambda* (#:key inputs #:allow-other-keys) - (define path - `(,(dirname (search-input-file inputs "bin/sh")))) - (for-each - (cut patch-shebang <> path) - (find-files (string-append #$output "/etc/avahi"))))))) - '()))) + #:modules ((srfi srfi-26) + (guix build utils) + (guix build gnu-build-system)) + #:phases + ,#~(modify-phases %standard-phases + (add-after 'patch-shebangs 'patch-more-shebangs + (lambda* (#:key inputs #:allow-other-keys) + (define path + `(,(dirname (search-input-file inputs "bin/sh")))) + (for-each + (cut patch-shebang <> path) + (find-files (string-append #$output "/etc/avahi")))))))) (inputs - ;; TODO(core-updates): Make this input unconditional. - `(,@(if (%current-target-system) - `(("bash-minimal" ,bash-minimal)) - '()) + `(("bash-minimal" ,bash-minimal) ("dbus" ,dbus) ("expat" ,expat) ("gdbm" ,gdbm) diff --git a/gnu/packages/glib.scm b/gnu/packages/glib.scm index 1bd1d6c138..3e51045cd1 100644 --- a/gnu/packages/glib.scm +++ b/gnu/packages/glib.scm @@ -428,14 +428,14 @@ be used when cross-compiling." (define gobject-introspection (package (name "gobject-introspection") - (version "1.66.1") + (version "1.68.0") (source (origin (method url-fetch) (uri (string-append "mirror://gnome/sources/" "gobject-introspection/" (version-major+minor version) "/gobject-introspection-" version ".tar.xz")) (sha256 - (base32 "078n0q7b6z682mf4irclrksm73cyixq295mqnqifl9plwmgaai6x")) + (base32 "09sawnv3xj9pzgy2qrrk87dl3jibfphnswb61i5bh0d2h4j28afj")) (patches (search-patches "gobject-introspection-cc.patch" "gobject-introspection-girepository.patch" @@ -482,18 +482,10 @@ be used when cross-compiling." (native-inputs `(("glib" ,glib "bin") ("pkg-config" ,pkg-config) - ;; TODO(core-updates): Unconditionally place "flex" and "bison" - ;; in 'native-inputs'. - ,@(if (%current-target-system) - `(("bison" ,bison) - ("flex" ,flex)) - '()))) + ("bison" ,bison) + ("flex" ,flex))) (inputs - `(,@(if (%current-target-system) - `(("python" ,python)) - `(("bison" ,bison) - ("flex" ,flex) - ("python" ,python-wrapper))) + `(("python" ,python) ("zlib" ,zlib))) (propagated-inputs (list glib diff --git a/gnu/packages/gnuzilla.scm b/gnu/packages/gnuzilla.scm index 27a9d099ce..4e86ab835c 100644 --- a/gnu/packages/gnuzilla.scm +++ b/gnu/packages/gnuzilla.scm @@ -51,6 +51,7 @@ #:use-module (guix build-system gnu) #:use-module (guix build-system cargo) #:use-module (guix build-system trivial) + #:use-module (guix build-system mozilla) #:use-module (gnu packages admin) #:use-module (gnu packages audio) #:use-module (gnu packages autotools) @@ -113,7 +114,7 @@ (substitute* '("js/src/config/milestone.pl") (("defined\\(@TEMPLATE_FILE)") "@TEMPLATE_FILE")) #t)))) - (build-system gnu-build-system) + (build-system mozilla-build-system) (native-inputs `(("perl" ,perl) ("pkg-config" ,pkg-config) @@ -369,11 +370,7 @@ in C/C++.") `(#:tests? #f ; FIXME: all tests pass, but then the check phase fails anyway. #:test-target "check-jstests" #:configure-flags - ;; TODO(core-updates): unconditionally use 'quasiquote - ,#~(#$(if (%current-target-system) - #~quasiquote - #~quote) - ("--enable-ctypes" + ,#~`("--enable-ctypes" "--enable-optimize" "--enable-pie" "--enable-readline" @@ -390,15 +387,7 @@ in C/C++.") ;; This is important because without it gjs will segfault during the ;; configure phase. With jemalloc only the standalone mozjs console ;; will work. - "--disable-jemalloc" - ;; Mozilla deviates from Autotools conventions due to historical - ;; reasons. - #$@(if (%current-target-system) - #~(#$(string-append - "--host=" - (nix-system->gnu-triplet (%current-system))) - #$(string-append "--target=" (%current-target-system))) - #~()))) + "--disable-jemalloc") #:phases (modify-phases %standard-phases ;; Make sure pkg-config will be found. @@ -891,7 +880,7 @@ in C/C++.") (name "icecat") (version %icecat-version) (source icecat-source) - (build-system gnu-build-system) + (build-system mozilla-build-system) (inputs `(("alsa-lib" ,alsa-lib) ("bzip2" ,bzip2) diff --git a/gnu/packages/gtk.scm b/gnu/packages/gtk.scm index a5b804d848..f18cd5bc9a 100644 --- a/gnu/packages/gtk.scm +++ b/gnu/packages/gtk.scm @@ -188,10 +188,7 @@ tools have full access to view and control running applications.") ("pkg-config" ,pkg-config) ("python" ,python-wrapper))) (inputs - ;; TODO(core-updates): make this unconditional - `(,@(if (%current-target-system) - `(("bash-minimal" ,bash-minimal)) ; for glib-or-gtk-wrap - '()) + `(("bash-minimal" ,bash-minimal) ; for glib-or-gtk-wrap ("drm" ,libdrm) ("ghostscript" ,ghostscript) ("libspectre" ,libspectre) @@ -641,9 +638,8 @@ highlighting and other features typical of a source code editor.") (with-directory-excursion "docs" (substitute* "meson.build" (("http://docbook.sourceforge.net/release/xsl/current/") - (string-append (assoc-ref ,(if (%current-target-system) - '(or native-inputs inputs) - 'inputs) "docbook-xsl") + (string-append (assoc-ref (or native-inputs inputs) + "docbook-xsl") "/xml/xsl/docbook-xsl-1.79.2/"))) (substitute* (find-files "." "\\.xml$") (("http://www.oasis-open.org/docbook/xml/4\\.3/") @@ -657,11 +653,11 @@ highlighting and other features typical of a source code editor.") (("\\[ 'pixbuf-fail', \\['conform', 'slow'\\], \\],") "")))) ;; The slow tests take longer than the specified timeout. - ,@(if (any (cute string=? <> (%current-system)) - '("armhf-linux" "aarch64-linux")) + ,@(if (target-arm? (%current-system)) '((replace 'check - (lambda _ - (invoke "meson" "test" "--timeout-multiplier" "5")))) + (lambda* (#:key tests? #:allow-other-keys) + (when tests? + (invoke "meson" "test" "--timeout-multiplier" "5"))))) '())))) (propagated-inputs (list ;; Required by gdk-pixbuf-2.0.pc diff --git a/gnu/packages/kerberos.scm b/gnu/packages/kerberos.scm index 717d43190c..bf87a066a5 100644 --- a/gnu/packages/kerberos.scm +++ b/gnu/packages/kerberos.scm @@ -216,14 +216,7 @@ After installation, the system administrator should generate keys using #~())) #:phases (modify-phases %standard-phases (add-before 'configure 'pre-configure - ;; TODO(core-updates): Unconditionally use the - ;; %current-target-system branch. - (,(if (%current-target-system) - 'lambda* - 'lambda) - ,(if (%current-target-system) - '(#:key inputs #:allow-other-keys) - '_) + (lambda* (#:key inputs #:allow-other-keys) ,@(if (%current-target-system) `((substitute* "configure" ;; The e2fsprogs input is included for libcom_err, diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm index d41ac29ade..97b2120cd0 100644 --- a/gnu/packages/linux.scm +++ b/gnu/packages/linux.scm @@ -2915,12 +2915,7 @@ configuration (iptunnel, ipmaddr).") (substitute* "Make.Rules" (("LDFLAGS \\?= #-g") (string-append "LDFLAGS ?= -Wl,-rpath=" - ;; TODO(core-updates): Use #$output - ;; unconditionally. - #$(if (%current-target-system) - #~#$output - '%output) - "/lib")))))) + #$output "/lib")))))) #:test-target "test" #:make-flags (list "lib=lib" diff --git a/gnu/packages/networking.scm b/gnu/packages/networking.scm index 333ddb7ca8..1eb6bffcb6 100644 --- a/gnu/packages/networking.scm +++ b/gnu/packages/networking.scm @@ -2244,16 +2244,12 @@ sockets in Perl.") (inputs (list dbus zlib)) (arguments - `(#:phases + '(#:phases (modify-phases %standard-phases (replace 'check - ;; TODO(core-updates): Make this unconditional. - ,(if (%current-target-system) - '(lambda* (#:key tests? #:allow-other-keys) - (when tests? - (invoke "ctest" "-E" "url-test"))) - '(lambda _ - (invoke "ctest" "-E" "url-test"))))))) + (lambda* (#:key tests? #:allow-other-keys) + (when tests? + (invoke "ctest" "-E" "url-test"))))))) (synopsis "Library providing automatic proxy configuration management") (description "Libproxy handles the details of HTTP/HTTPS proxy configuration for applications across all scenarios. Applications using diff --git a/gnu/packages/nss.scm b/gnu/packages/nss.scm index bb449352a6..7dc12b6cbe 100644 --- a/gnu/packages/nss.scm +++ b/gnu/packages/nss.scm @@ -29,6 +29,7 @@ #:use-module (guix gexp) #:use-module (guix download) #:use-module (guix build-system gnu) + #:use-module (guix build-system mozilla) #:use-module ((guix licenses) #:prefix license:) #:use-module (gnu packages) #:use-module (gnu packages bash) @@ -49,7 +50,7 @@ (sha256 (base32 "1j5b2m8cjlhnnv8sq34587avaagkqvh521w4f95miwgvsn3xlaap")))) - (build-system gnu-build-system) + (build-system mozilla-build-system) (inputs ;; For 'compile-et.pl' and 'nspr-config'. (list perl ;for 'compile-et.pl' @@ -69,16 +70,7 @@ (list "--disable-static" "--enable-64bit" (string-append "LDFLAGS=-Wl,-rpath=" - (assoc-ref %outputs "out") "/lib") - ;; Mozilla deviates from Autotools conventions - ;; due to historical reasons. Adjust to Mozilla conventions, - ;; otherwise the Makefile will try to use TARGET-gcc - ;; as a ‘native’ compiler. - ,@(if (%current-target-system) - `(,(string-append "--host=" - (nix-system->gnu-triplet (%current-system))) - ,(string-append "--target=" (%current-target-system))) - '())) + (assoc-ref %outputs "out") "/lib")) ;; Use fixed timestamps for reproducibility. #:make-flags '("SH_DATE='1970-01-01 00:00:01'" ;; This is epoch 1 in microseconds. diff --git a/gnu/packages/patches/gobject-introspection-absolute-shlib-path.patch b/gnu/packages/patches/gobject-introspection-absolute-shlib-path.patch index 956fa617c3..c23b054a39 100644 --- a/gnu/packages/patches/gobject-introspection-absolute-shlib-path.patch +++ b/gnu/packages/patches/gobject-introspection-absolute-shlib-path.patch @@ -1,11 +1,20 @@ -# Names of libraries included in typelib files are opened by dlopen. Here we -# add the full path. -# -# This patch was provided by Luca Bruno <lucabru@src.gnome.org> for -# 'gobject-introspection' 1.40.0 in Nix. -# -# It has since been updated to work with newer versions of -# gobject-introspection. +Names of libraries included in typelib files are opened by dlopen. +Here we add the full path. + +This patch was provided by Luca Bruno <lucabru@src.gnome.org>, +for 'gobject-introspection' 1.40.0 in Nix. + +It has since been updated to work with newer versions of +gobject-introspection. +--- + giscanner/scannermain.py | 37 ++++++++++++++++++++++++++++++++++++ + giscanner/shlibs.py | 30 ++++++++++++++++++++--------- + giscanner/utils.py | 15 +++++---------- + tests/scanner/test_shlibs.py | 3 ++- + 4 files changed, 65 insertions(+), 20 deletions(-) + +diff --git a/giscanner/scannermain.py b/giscanner/scannermain.py +index 957ba0b7..78f9b11b 100644 --- a/giscanner/scannermain.py +++ b/giscanner/scannermain.py @@ -95,6 +95,39 @@ def get_windows_option_group(parser): @@ -48,7 +57,7 @@ def _get_option_parser(): parser = optparse.OptionParser('%prog [options] sources', version='%prog ' + giscanner.__version__) -@@ -205,6 +238,10 @@ match the namespace prefix.""") +@@ -214,6 +247,10 @@ match the namespace prefix.""") parser.add_option("", "--filelist", action="store", dest="filelist", default=[], help="file containing headers and sources to be scanned") @@ -59,6 +68,8 @@ group = get_preprocessor_option_group(parser) parser.add_option_group(group) +diff --git a/giscanner/shlibs.py b/giscanner/shlibs.py +index 9f8ab5df..8aa37c99 100644 --- a/giscanner/shlibs.py +++ b/giscanner/shlibs.py @@ -57,6 +57,14 @@ def _ldd_library_pattern(library_name): @@ -76,7 +87,7 @@ # This is a what we do for non-la files. We assume that we are on an # ELF-like system where ldd exists and the soname extracted with ldd is # a filename that can be opened with dlopen(). -@@ -106,7 +112,8 @@ def _resolve_non_libtool(options, binary, libraries): +@@ -108,7 +116,8 @@ def _resolve_non_libtool(options, binary, libraries): output = output.decode("utf-8", "replace") shlibs = resolve_from_ldd_output(libraries, output) @@ -86,7 +97,7 @@ def sanitize_shlib_path(lib): -@@ -115,19 +122,18 @@ def sanitize_shlib_path(lib): +@@ -117,19 +126,18 @@ def sanitize_shlib_path(lib): # In case we get relative paths on macOS (like @rpath) then we fall # back to the basename as well: # https://gitlab.gnome.org/GNOME/gobject-introspection/issues/222 @@ -111,7 +122,7 @@ if len(patterns) == 0: return [] -@@ -139,8 +145,12 @@ def resolve_from_ldd_output(libraries, output): +@@ -141,8 +149,12 @@ def resolve_from_ldd_output(libraries, output): if line.endswith(':'): continue for word in line.split(): @@ -126,10 +137,11 @@ if m: del patterns[library] shlibs.append(m.group()) - +diff --git a/giscanner/utils.py b/giscanner/utils.py +index 45807f17..8a319cd1 100644 --- a/giscanner/utils.py +++ b/giscanner/utils.py -@@ -111,17 +111,11 @@ def extract_libtool_shlib(la_file): +@@ -113,16 +113,11 @@ def extract_libtool_shlib(la_file): if dlname is None: return None @@ -141,8 +153,7 @@ - if libdir is None: - return dlbasename - return libdir + '/' + dlbasename -- # From the comments in extract_libtool(), older libtools had -- # a path rather than the raw dlname +- # Older libtools had a path rather than the raw dlname - return os.path.basename(dlname) + dlbasename = os.path.basename(dlname) + libdir = _extract_libdir_field(la_file) @@ -151,10 +162,12 @@ + return libdir + '/' + dlbasename - def extract_libtool(la_file): + # Returns arguments for invoking libtool, if applicable, otherwise None +diff --git a/tests/scanner/test_shlibs.py b/tests/scanner/test_shlibs.py +index a8337c60..7f123103 100644 --- a/tests/scanner/test_shlibs.py +++ b/tests/scanner/test_shlibs.py -@@ -40,6 +64,7 @@ class TestLddParser(unittest.TestCase): +@@ -40,7 +40,8 @@ class TestLddParser(unittest.TestCase): self.assertEqual( sanitize_shlib_path('/foo/bar'), @@ -163,4 +176,7 @@ + '/foo/bar') def test_unresolved_library(self): -output = '' + output = '' +-- +2.33.0 + diff --git a/gnu/packages/patches/gobject-introspection-cc.patch b/gnu/packages/patches/gobject-introspection-cc.patch index 6a86b56b44..748a1a0a89 100644 --- a/gnu/packages/patches/gobject-introspection-cc.patch +++ b/gnu/packages/patches/gobject-introspection-cc.patch @@ -1,14 +1,22 @@ Use gcc as the default C compiler if CC is not set. -diff -ru gobject-introspection-1.58.1.orig/giscanner/__init__.py gobject-introspection-1.58.1/giscanner/__init__.py ---- gobject-introspection-1.58.1.orig/giscanner/__init__.py 1970-01-01 01:00:00.000000000 +0100 -+++ gobject-introspection-1.58.1/giscanner/__init__.py 2018-12-03 13:33:28.788971299 +0100 -@@ -22,6 +22,8 @@ +--- + giscanner/__init__.py | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/giscanner/__init__.py b/giscanner/__init__.py +index 7c2f365a..607fe341 100644 +--- a/giscanner/__init__.py ++++ b/giscanner/__init__.py +@@ -21,6 +21,8 @@ import os builddir = os.environ.get('UNINSTALLED_INTROSPECTION_BUILDDIR') if builddir is not None: - __path__.append(os.path.join(builddir, 'giscanner')) + __path__.append(os.path.join(builddir, 'giscanner')) # type: ignore # mypy issue #1422 +if not 'CC' in os.environ: + os.environ['CC'] = 'gcc' try: from ._version import __version__ except ImportError: +-- +2.33.0 + diff --git a/guix/build-system/mozilla.scm b/guix/build-system/mozilla.scm new file mode 100644 index 0000000000..b4141c8177 --- /dev/null +++ b/guix/build-system/mozilla.scm @@ -0,0 +1,52 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2021 Maxime Devos <maximedevos@telenet.be> +;;; +;;; 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 (guix build-system mozilla) + #:use-module (guix build-system gnu) + #:use-module (guix build-system) + #:use-module (guix utils) + #:export (mozilla-build-system)) + +;; +;; Build procedure for packages using Autotools with the Mozillian conventions +;; for --target, --host and --build, which are different from the GNU +;; conventions. +;; +;; Code: + +(define* (lower-mozilla name #:key system target #:allow-other-keys + #:rest arguments) + (define lower (build-system-lower gnu-build-system)) + (if target + (apply lower + (substitute-keyword-arguments arguments + ;; Override --target and --host to what Mozillian configure + ;; scripts expect. + ((#:configure-flags configure-flags ''()) + `(cons* ,(string-append "--target=" target) + ,(string-append "--host=" (nix-system->gnu-triplet system)) + ,configure-flags)))) + (apply lower name arguments))) ; not cross-compiling + +(define mozilla-build-system + (build-system + (name 'mozilla) + (description "The build system for Mozilla software using the Autotools") + (lower lower-mozilla))) + +;;; mozilla.scm ends here diff --git a/guix/build/minetest-build-system.scm b/guix/build/minetest-build-system.scm index 5f68686067..4a7a87ab83 100644 --- a/guix/build/minetest-build-system.scm +++ b/guix/build/minetest-build-system.scm @@ -91,15 +91,6 @@ If it is unknown, make an educated guess." #:install-plan (mod-install-plan (apply guess-mod-name arguments)) arguments)) -(define %png-magic-bytes - ;; Magic bytes of PNG images, see ‘5.2 PNG signatures’ in - ;; ‘Portable Network Graphics (PNG) Specification (Second Edition)’ - ;; on <https://www.w3.org/TR/PNG/>. - #vu8(137 80 78 71 13 10 26 10)) - -(define png-file? - ((@@ (guix build utils) file-header-match) %png-magic-bytes)) - (define* (minimise-png #:key inputs native-inputs #:allow-other-keys) "Minimise PNG images found in the working directory." (define optipng (which "optipng")) diff --git a/guix/build/qt-utils.scm b/guix/build/qt-utils.scm index fa018a93ac..b9c5a76f34 100644 --- a/guix/build/qt-utils.scm +++ b/guix/build/qt-utils.scm @@ -91,7 +91,7 @@ '("QTWEBENGINEPROCESS_PATH" = regular "/lib/qt5/libexec/QtWebEngineProcess")))) -(define* (wrap-qt-program* program #:key inputs output-dir +(define* (wrap-qt-program* program #:key sh inputs output-dir qt-wrap-excluded-inputs) (define input-directories @@ -106,9 +106,9 @@ (cons output-dir input-directories) output-dir))) (when (not (null? vars-to-wrap)) - (apply wrap-program program vars-to-wrap)))) + (apply wrap-program program #:sh sh vars-to-wrap)))) -(define* (wrap-qt-program program-name #:key inputs output +(define* (wrap-qt-program program-name #:key (sh (which "bash")) inputs output (qt-wrap-excluded-inputs %qt-wrap-excluded-inputs)) "Wrap the specified program (which must reside in the OUTPUT's \"/bin\" directory) with suitably set environment variables. @@ -116,10 +116,11 @@ directory) with suitably set environment variables. This is like qt-build-systems's phase \"qt-wrap\", but only the named program is wrapped." (wrap-qt-program* (string-append output "/bin/" program-name) + #:sh sh #:output-dir output #:inputs inputs #:qt-wrap-excluded-inputs qt-wrap-excluded-inputs)) -(define* (wrap-all-qt-programs #:key inputs outputs +(define* (wrap-all-qt-programs #:key (sh (which "bash")) inputs outputs (qt-wrap-excluded-outputs '()) (qt-wrap-excluded-inputs %qt-wrap-excluded-inputs) #:allow-other-keys) @@ -148,6 +149,7 @@ add a dependency of that output on Qt." ((output . output-dir) (unless (member output qt-wrap-excluded-outputs) (for-each (cut wrap-qt-program* <> + #:sh sh #:output-dir output-dir #:inputs inputs #:qt-wrap-excluded-inputs qt-wrap-excluded-inputs) (find-files-to-wrap output-dir)))))) diff --git a/guix/build/utils.scm b/guix/build/utils.scm index 3beb7da67a..39e581b0fa 100644 --- a/guix/build/utils.scm +++ b/guix/build/utils.scm @@ -61,6 +61,8 @@ symbolic-link? call-with-temporary-output-file call-with-ascii-input-file + file-header-match + png-file? elf-file? ar-file? gzip-file? @@ -290,6 +292,15 @@ with the bytes in HEADER, a bytevector." #f ;FILE is a directory (apply throw args)))))) +(define %png-magic-bytes + ;; Magic bytes of PNG images, see ‘5.2 PNG signatures’ in + ;; ‘Portable Network Graphics (PNG) Specification (Second Edition)’ + ;; on <https://www.w3.org/TR/PNG/>. + #vu8(137 80 78 71 13 10 26 10)) + +(define png-file? + (file-header-match %png-magic-bytes)) + (define %elf-magic-bytes ;; Magic bytes of ELF files. See <elf.h>. (u8-list->bytevector (map char->integer (string->list "\x7FELF")))) diff --git a/guix/lint.scm b/guix/lint.scm index 379bd0e80b..74b9a304d9 100644 --- a/guix/lint.scm +++ b/guix/lint.scm @@ -572,13 +572,10 @@ or \"bash-minimal\" is not in its inputs. 'wrap-script' is not supported." (define (check-procedure-body body) (match body ;; Explicitely setting an interpreter is acceptable, - ;; #:sh support is added on 'core-updates'. - ;; TODO(core-updates): remove mention of core-updates. (('wrap-program _ '#:sh . _) '()) (('wrap-program _ . _) (list (report-wrap-program-error package 'wrap-program))) ;; Wrapper of 'wrap-program' for Qt programs. - ;; TODO #:sh is not yet supported but probably will be. (('wrap-qt-program _ '#:sh . _) '()) (('wrap-qt-program _ . _) (list (report-wrap-program-error package 'wrap-qt-program))) |