;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2015, 2022 Ludovic Courtès ;;; ;;; 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 (test-cpio) #:use-module (guix cpio) #:use-module (guix tests) #:use-module ((guix build utils) #:select (which)) #:use-module ((guix utils) #:select (call-with-temporary-output-file)) #:use-module (ice-9 match) #:use-module (ice-9 popen) #:use-module (rnrs io ports) #:use-module (srfi srfi-1) #:use-module (srfi srfi-26) #:use-module (srfi srfi-64)) (define %cpio-program (which "cpio")) (define %test-file (search-path %load-path "guix.scm")) (test-begin "cpio") ;; The cpio format expects 'ino' to fit in 32 bits. If we have a bigger inode ;; number, skip this test. (test-skip (if (>= (stat:ino (lstat %test-file)) (expt 2 32)) 1 0)) (test-assert "file->cpio-header + write-cpio-header + read-cpio-header" (let* ((header (file->cpio-header %test-file))) (call-with-values (lambda () (open-bytevector-output-port)) (lambda (port get-bv) (write-cpio-header header port) (let ((port (open-bytevector-input-port (get-bv)))) (equal? header (read-cpio-header port))))))) (unless %cpio-program (test-skip 1)) (test-assert "bit-identical to GNU cpio's output" (call-with-temporary-output-file (lambda (link _) (delete-file link) (symlink "chbouib" link) (let ((files (cons* "/" (canonicalize-path (dirname (search-path %load-path "guix.scm"))) link (map (compose canonicalize-path (cut search-path %load-path <>)) '("guix.scm" "guix/build/syscalls.scm" "guix/packages.scm"))))) (call-with-temporary-output-file (lambda (ref-file _) (let ((pipe (open-pipe* OPEN_WRITE %cpio-program "-o" "-O" ref-file "-H" "newc" "--null"))) (for-each (lambda (file) (format pipe "~a\0" file)) files) (and (zero? (close-pipe pipe)) (call-with-temporary-output-file (lambda (file port) (write-cpio-archive files port) (close-port port) (or (file=? ref-file file) (throw 'cpio-archives-differ files ref-file file (stat:size (stat ref-file)) (stat:size (stat file)))))))))))))) (test-end "cpio") u/packages/patches/mingw-w64-6.0.0-gcc.patch: New file. * gnu/packages/patches/mingw-w64-5.0rc2-gcc-4.9.3.patch: Delete it. * gnu/local.mk (dist_patch_DATA): Add new patch. Delete old patch. * gnu/build/cross-toolchain.scm (set-cross-path/mingw): Add additional autoconf-like substitutions. David Thompson 2019-08-22Merge branch 'master' into core-updatesMark H Weaver 2019-08-14gnu: mingw: Add x86_64 support....This patch parameterizes previously hard-coded instances of i686-w64-mingw32, adding support for x86_64-w64-mingw32. * gnu/packages/mingw.scm (make-mingw-w64): New procedure. (mingw-w64-i686, mingw-w64-x86_64): New variables. (%mingw-triplet): Remove. (mingw-w64): Update to point to 'mingw-w64-i686'. * gnu/packages/cross-base.scm (cross-gcc): Use 'libc' keyword argument if specified, instead of treating it as a boolean. (native-libc): Return the correct mingw-w64 depending on machine specified in target. * gnu/packages/bootstrap.scm (glibc-dynamic-linker): Add "x86_64-mingw". * gnu/build/cross-toolchain.scm (set-cross-path/mingw): Replace hardcoded 'i686-w64-mingw32' instances with 'target' keyword argument. (cross-gcc-build-phases): Update accordingly; use 'target-mingw?' implementation of target checking and add commentary. * gnu/ci.scm (%cross-targets): Add "x86_64-w64-mingw32". Carl Dong 2019-02-28gnu: GCC: Move cross-toolchain build fix to (gnu packages cross-base)....This makes sure it is inherited by packages using (cross-gcc ...). This commit is a followup to 01e8263febb9634564b4b73af49b81a36567a11b. * gnu/build/cross-toolchain.scm (cross-gcc-build-phases): Move 'treat-glibc-as-system-header' phase ... * gnu/packages/cross-base.scm (cross-gcc-arguments): ... here. Marius Bakke 2019-02-09gnu: Use GCC 7 as the default compiler....* gnu/packages/cross-base.scm (%gcc-cross-include-paths): Remove CROSS_C_INCLUDE_PATH & co in favor of CROSS_CPATH. * gnu/build/cross-toolchain.scm (%gcc-cross-include-paths): Likewise. (cross-gcc-build-phases): Set CROSS_C_INCLUDE_PATH and CROSS_CPLUS_INCLUDE_PATH when building the cross GCC. * gnu/packages/commencement.scm (libstdc++): Add "--disable-libstdcxx-dual-abi" to #:configure-flags. (gcc-boot0)[arguments]: Add "--disable-libmpx" to #:configure-flags. (gcc-final): Add phase to set C_INCLUDE_PATH and CPLUS_INCLUDE_PATH before building GCC. (gcc-toolchain-5): Use MAKE-GCC-TOOLCHAIN. (gcc-toolchain-7): Change to GCC-TOOLCHAIN. * gnu/packages/gcc.scm (gcc): Change from GCC-5 to GCC-7. (gfortran): Change to GFORTRAN-7. (gcc-objc): Change to GCC-OBJC-7. (gcc-objc++): Change to GCC-OBJC++-7. * gnu/packages/rust.scm (rust-1.19.0)[native-search-paths]: Change from C_INCLUDE_PATH & co to CPATH. Marius Bakke