From fae2fcdbc9000405e01e6cdf635c10835f697045 Mon Sep 17 00:00:00 2001 From: Maxime Devos Date: Fri, 1 Oct 2021 16:21:03 +0200 Subject: [PATCH] build-system/mozilla: New build system. * guix/build-system/mozilla.scm (lower-mozilla): New procedure. (mozilla-build-system): New variable. * Makefile.am (MODULES): Add it. * doc/guix.texi (Build Systems): Document it. Signed-off-by: Mathieu Othacehe --- Makefile.am | 1 + doc/guix.texi | 9 ++++++ guix/build-system/mozilla.scm | 52 +++++++++++++++++++++++++++++++++++ 3 files changed, 62 insertions(+) create mode 100644 guix/build-system/mozilla.scm diff --git a/Makefile.am b/Makefile.am index 56f60278b7..76166f4eec 100644 --- a/Makefile.am +++ b/Makefile.am @@ -140,6 +140,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 830a230bd0..996526eb83 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -8000,6 +8000,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/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 +;;; +;;; 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 . + +(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