(begin (use-modules (ice-9 ftw) (ice-9 match) (ice-9 regex) (srfi srfi-1) (srfi srfi-26) (srfi srfi-34) (srfi srfi-35) (guix build utils)) (define tar-supports-sort? (guard (c ((message-condition? c) #f)) (invoke/quiet (string-append "/gnu/store/snyn870y9z8a00r49sxyjpk8sk0b9361-bootstrap-binaries-0" "/bin/tar") "cf" "/dev/null" "--files-from=/dev/null" "--sort=name") #t)) (define (apply-patch patch) (format (current-error-port) "applying '~a'...~%" patch) (invoke (string-append "/gnu/store/snyn870y9z8a00r49sxyjpk8sk0b9361-bootstrap-binaries-0" "/bin/patch") "--force" "--no-backup-if-mismatch" "-p1" "--input" patch)) (define (first-file directory) (car (scandir directory (lambda (name) (not (member name (quote ("." "..")))))))) (define (repack directory output) (unless tar-supports-sort? (call-with-output-file ".file_list" (lambda (port) (for-each (lambda (name) (format port "~a~%" name)) (find-files directory #:directories? #t #:fail-on-error? #t))))) (apply invoke "/gnu/store/snyn870y9z8a00r49sxyjpk8sk0b9361-bootstrap-binaries-0/bin/tar" "cvfa" output "--mtime=@1" "--owner=root:0" "--group=root:0" (if tar-supports-sort? (quasiquote ("--sort=name" (unquote directory))) (quote ("--no-recursion" "--files-from=.file_list"))))) (let ((line (cond-expand (guile-2.0 _IOLBF) (else (quote line))))) (setvbuf (current-output-port) line) (setvbuf (current-error-port) line)) (fluid-set! %default-port-conversion-strategy (quote error)) (let ((locale "C.UTF-8")) (catch (quote system-error) (lambda () (setlocale LC_ALL locale)) (lambda args (format (current-error-port) "failed to install '~a' locale: ~a~%" locale (system-error-errno args))))) (setenv "PATH" (string-join (map (cut string-append <> "/bin") (delete-duplicates (filter-map identity (list #f "/gnu/store/snyn870y9z8a00r49sxyjpk8sk0b9361-bootstrap-binaries-0" "/gnu/store/snyn870y9z8a00r49sxyjpk8sk0b9361-bootstrap-binaries-0")))) ":")) (setenv "ZSTD_NBTHREADS" (number->string (parallel-job-count))) (let ((name (strip-store-file-name "/gnu/store/in64drd331kxss68lrhz0iv527fylf7c-gcc-14.3.0.tar.xz")) (command (and=> "/gnu/store/snyn870y9z8a00r49sxyjpk8sk0b9361-bootstrap-binaries-0" (cut string-append <> "/bin/" (compressor "/gnu/store/in64drd331kxss68lrhz0iv527fylf7c-gcc-14.3.0.tar.xz"))))) (if (file-is-directory? "/gnu/store/in64drd331kxss68lrhz0iv527fylf7c-gcc-14.3.0.tar.xz") (copy-recursively "/gnu/store/in64drd331kxss68lrhz0iv527fylf7c-gcc-14.3.0.tar.xz" name) (cond ((tarball? "/gnu/store/in64drd331kxss68lrhz0iv527fylf7c-gcc-14.3.0.tar.xz") (invoke (string-append "/gnu/store/snyn870y9z8a00r49sxyjpk8sk0b9361-bootstrap-binaries-0" "/bin/tar") "xvf" "/gnu/store/in64drd331kxss68lrhz0iv527fylf7c-gcc-14.3.0.tar.xz")) ((and=> (compressor "/gnu/store/in64drd331kxss68lrhz0iv527fylf7c-gcc-14.3.0.tar.xz") (cut string= "unzip" <>)) (invoke "unzip" "/gnu/store/in64drd331kxss68lrhz0iv527fylf7c-gcc-14.3.0.tar.xz")) (else (copy-file "/gnu/store/in64drd331kxss68lrhz0iv527fylf7c-gcc-14.3.0.tar.xz" name) (when command (invoke command "--decompress" name)))))) (let* ((file (first-file ".")) (directory (if (file-is-directory? file) file "."))) (format (current-error-port) "source is at '~a'~%" file) (with-directory-excursion directory (for-each apply-patch (quote ("/gnu/store/5pdqk0wql3kzjn2j6p3q7gklypd3al8j-gcc-12-strmov-store-file-names.patch" "/gnu/store/5705r4ajxl8lav1hz9xm19w75zdcz1n2-gcc-5.0-libvtv-runpath.patch"))) (let ((module (make-fresh-user-module))) (module-use-interfaces! module (map resolve-interface (quote ((guix build utils))))) ((@ (system base compile) compile) (quote (begin (substitute* "libcc1/configure" (("\\$gcc_cv_objdump -T") "$OBJDUMP_FOR_TARGET -T")) (system* "/gnu/store/gn9ngz6psd2frzslwifsvli61dmijgbq-coreutils-boot0-9.1/bin/rm" "-rf" "gcc/testsuite/go.test/test/fixedbugs/issue27836.dir"))) #:to (quote value) #:opts %auto-compilation-options #:env module))) (cond ((file-is-directory? "/gnu/store/in64drd331kxss68lrhz0iv527fylf7c-gcc-14.3.0.tar.xz") (copy-recursively directory ((@ (guile) getenv) "out") #:log (%make-void-port "w"))) ((or "/gnu/store/snyn870y9z8a00r49sxyjpk8sk0b9361-bootstrap-binaries-0" (tarball? "/gnu/store/in64drd331kxss68lrhz0iv527fylf7c-gcc-14.3.0.tar.xz")) (repack directory ((@ (guile) getenv) "out"))) (else (copy-file file ((@ (guile) getenv) "out"))))))