aboutsummaryrefslogtreecommitdiff
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2016-2017, 2024 Ludovic Courtès <ludo@gnu.org>
;;;
;;; 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 (test-modules)
  #:use-module (guix modules)
  #:use-module ((guix build-system gnu) #:select (%default-gnu-imported-modules))
  #:use-module ((guix utils) #:select (call-with-temporary-directory))
  #:use-module (srfi srfi-1)
  #:use-module (srfi srfi-34)
  #:use-module (srfi srfi-64))

(test-begin "modules")

(test-assert "closure of (guix build gnu-build-system)"
  (lset= equal?
         (live-module-closure '((guix build gnu-build-system)))
         (source-module-closure '((guix build gnu-build-system)))
         %default-gnu-imported-modules
         (source-module-closure %default-gnu-imported-modules)
         (live-module-closure %default-gnu-imported-modules)))

(test-assert "closure of (gnu build install)"
  (lset= equal?
         (live-module-closure '((gnu build install)))
         (source-module-closure '((gnu build install)))))

(test-assert "closure of (gnu build image)"
  (lset= equal?
         (live-module-closure '((gnu build image)))
         (source-module-closure '((gnu build image)))))

(test-equal "&missing-dependency-error"
  '(something that does not exist)
  (call-with-temporary-directory
   (lambda (directory)
     (call-with-output-file (string-append directory "/foobar.scm")
       (lambda (port)
         (write '(define-module (foobar)
                   #:use-module (something that does not exist))
                port)))

     (call-with-output-file (string-append directory "/baz.scm")
       (lambda (port)
         (write '(define-module (baz)
                   #:use-module (foobar))
                port)))

     (guard (c ((missing-dependency-error? c)
                (missing-dependency-module c)))
       (source-module-closure '((baz)) (list directory)
                              #:select? (const #t))))))

(test-equal "file-name->module-name"
  '(guix foo)
  (file-name->module-name "guix/foo.scm"))

(test-equal "file-name->module-name, leading dot"
  '(guix foo)
  (file-name->module-name "./guix/foo.scm"))

(test-end)
ass='msg-tooltip'>* gnu/packages/bootstrap.scm (%bootstrap-gcc)[arguments] When building for thee 64bit Hurd have the #:builder also wrap g++. Co-authored-by: Efraim Flashner <efraim@flashner.co.il> Change-Id: I2cdbc6837e1c451f108b309f2608240a7f57b82c Janneke Nieuwenhuizen 2024-12-03gnu: bootstrap: %bootstrap-glibc: Also fix libm.so....On the 64bit Hurd, glibc-2.39's libm.so is also a linker script. This fixes having it refer to /gnu/store/eee...-glibc-cross-x86_64-pc-gnu-2.39/lib/libm.so.6 /gnu/store/eee...-glibc-cross-x86_64-pc-gnu-2.39/lib/libmvec.so.1 * gnu/packages/bootstrap.scm (%bootstrap-glibc)[arguments]: When building for the 64bit Hurd, also substitute libm.so linker script. Update the regexp to also cater for libh[urduser] and libm[achuser]. Change-Id: I878e63d18f1012b6e186e90eb68cb97bec5ae94c Janneke Nieuwenhuizen 2024-12-03gnu: bootstrap: Add support for x86_64-gnu, aka the 64bit Hurd....On commit: ec8a5ec15f898e864705e5a5c834532e3fa8d0a4 gnu: make-bootstrap: Update gcc-static to gcc-14, for the 64bit Hurd. Run: ./pre-inst-env guix build --target=x86_64-gnu bootstrap-tarballs Producing: /gnu/store/w1n7bdpn88plcc49h7n0jriaj41sgwx8-bootstrap-tarballs-0/ With guix hash -r: 15cb1xh7s2hhp8s0d81bjnw1759w9sh7ckc9n5jq2f3rqw6z76by * gnu/packages/bootstrap.scm (%bootstrap-executables): Add entries for x86_64-gnu. (%bootstrap-guile-hash, %bootstrap-coreutils&co, %bootstrap-binutils, %bootstrap-glibc, %bootstrap-gcc): Add entry for x86_64-gnu. * guix/packages.scm (%supported-systems, %hurd-systems): Add x86_64-gnu. (%cuirass-supported-systems): Remove x86_64-gnu. * guix/utils.scm (target-64bit?): Add x86_64-gnu. * m4/guix.m4: Add x86_64-gnu as a supported system. * doc/guix.texi (GNU Distribution): Add x86_64-gnu. Change-Id: I828159aedb3f66caba98e935083cc3682429f219 Janneke Nieuwenhuizen 2024-12-03gnu: cross-libc: Support cross-building for the 64bit Hurd....* gnu/packages/base.scm (glibc)[arguments]: When building for the Hurd, in phase "create-machine-symlink", do not assume CPU is i386, also cater for x86_64. * gnu/packages/cross-base.scm (cross-libc*)[arguments]: Likewise. Change-Id: Ib009b7bd301b543b8629382330cca9d963b7a812 Janneke Nieuwenhuizen 2024-12-03gnu: Add basic support for x86_64-pc-gnu target, aka 64bit Hurd....* gnu/packages/bootstrap.scm (glibc-dynamic-linker): Update comment on where to find shared linker name. (make-raw-bag): Also use raw-build-guile3 when building for the 64bit Hurd. * gnu/packages/cross-base.scm (cross-kernel-headers*): Use target-hurd? instead of custom "i586..." matching to also use xhurd-core-headers for target-hurd64. * gnu/packages/make-bootstrap.scm (package-with-relocatable-glibc) [native-inputs]: Move final-inputs before cross-packages. (%binutils-static)[arguments]: When building for the 64bit Hurd, add "lt_cv_prog_compiler_static_works=yes", "lt_cv_prog_compiler_static_works_CXX=yes" to #:make-flags to convince to actually link the binaries statically. (make-guile-static)[arguments]: When building for the 64bit Hurd, add "lt_cv_prog_compiler_static_works=yes" to #:configure-flags to convince libtool to actually link guile statically. * guix/platforms/x86.scm (x86_64-gnu): New exported variable. * guix/utils.scm (target-hurd64? system-hurd64?): New procedures. Janneke Nieuwenhuizen 2024-08-31gnu: glibc-bootstrap: Update i586-gnu variant....‘glibc-stripped-2.39-i586-pc-gnu.tar.xz’ was built from x86_64-linux from the previous commit with: ./pre-inst-env guix build --target=i586-pc-gnu \ -e '((@@ (gnu packages make-bootstrap) %glibc-bootstrap-tarball))' This updated variant is necessary to match newer GNU Mach headers, which are themselves necessary for the newer Hurd. Fixes <https://issues.guix.gnu.org/72315>. * gnu/packages/bootstrap.scm (%bootstrap-glibc): Update i586-gnu variant. Change-Id: I2d770e8001896059e1f27e50f7a4ddf15e4b5812 Ludovic Courtès