(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" "-p0" "--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/593qs51b8v255i6nn1ypj3svw0zg6r2n-bash-5.2.tar.gz")) (command (and=> "/gnu/store/snyn870y9z8a00r49sxyjpk8sk0b9361-bootstrap-binaries-0" (cut string-append <> "/bin/" (compressor "/gnu/store/593qs51b8v255i6nn1ypj3svw0zg6r2n-bash-5.2.tar.gz"))))) (if (file-is-directory? "/gnu/store/593qs51b8v255i6nn1ypj3svw0zg6r2n-bash-5.2.tar.gz") (copy-recursively "/gnu/store/593qs51b8v255i6nn1ypj3svw0zg6r2n-bash-5.2.tar.gz" name) (cond ((tarball? "/gnu/store/593qs51b8v255i6nn1ypj3svw0zg6r2n-bash-5.2.tar.gz") (invoke (string-append "/gnu/store/snyn870y9z8a00r49sxyjpk8sk0b9361-bootstrap-binaries-0" "/bin/tar") "xvf" "/gnu/store/593qs51b8v255i6nn1ypj3svw0zg6r2n-bash-5.2.tar.gz")) ((and=> (compressor "/gnu/store/593qs51b8v255i6nn1ypj3svw0zg6r2n-bash-5.2.tar.gz") (cut string= "unzip" <>)) (invoke "unzip" "/gnu/store/593qs51b8v255i6nn1ypj3svw0zg6r2n-bash-5.2.tar.gz")) (else (copy-file "/gnu/store/593qs51b8v255i6nn1ypj3svw0zg6r2n-bash-5.2.tar.gz" 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/lmk2jb50vry5fx258chpy9f0fyn9cvli-bash-linux-pgrp-pipe.patch" "/gnu/store/fp2b4nwq2b690xpzz9bzv2an6rl9gp99-bash52-001" "/gnu/store/fqwzw14fixbzkc9p9hs4fri8a6pwvl45-bash52-002" "/gnu/store/1461vnj02s6jvvdi52986wzjdzhqrzyd-bash52-003" "/gnu/store/vddk69xvv165cmy5pc32mb0d736ypa8z-bash52-004" "/gnu/store/k82gjns5l25akrl6y4zsjjjgsczjic37-bash52-005" "/gnu/store/2bnq3vi4jw2b9nwl5bnj243a22rwccpi-bash52-006" "/gnu/store/hdd8fywj1bi1dqg056q2ji42ydwln33b-bash52-007" "/gnu/store/daqb9qkcglhy097lia7nv6kazpjrs5f1-bash52-008" "/gnu/store/9g2ncc5wszzqng4ai65d0fqxk4asphq7-bash52-009" "/gnu/store/dp6z87b94854sz0v3zq769vndz2kvd9r-bash52-010" "/gnu/store/axsy4nm6hmqrli3rg3qhrpz75plfkxnb-bash52-011" "/gnu/store/l8lja61nfrqvksylfmqzrc3dlpqgrnnh-bash52-012" "/gnu/store/m7kbxhcixwlc97smk0y7526pgf3aa899-bash52-013" "/gnu/store/yqlkx90ysj34mmh85d4ibnpmqkbz5n15-bash52-014" "/gnu/store/k9nzpnlngsfk9sqj43blkhp768bbc47l-bash52-015" "/gnu/store/5jfiz60pjlsazjm7c4xi20hkm6fksw84-bash52-016" "/gnu/store/mwzn5fsqpn945a1zvbgvhjpm9c0f1ad7-bash52-017" "/gnu/store/78x7xyfmh9wh2k3d3rnjrd3h0087lsj4-bash52-018" "/gnu/store/yw1vfd8x1f5pqqmvc27rxqgrdpf44179-bash52-019" "/gnu/store/jrpjnvhm9vvhidiizs25d3mj3gj57mig-bash52-020" "/gnu/store/6bc42i3kz1kky7dalgk1zfg871vyvva0-bash52-021" "/gnu/store/fm3m7m53srsx0vvvn6b0vqlw371h1zf9-bash52-022" "/gnu/store/sqwc9qgn3a26vh2h5p925lsck05n264z-bash52-023" "/gnu/store/w4qxsjvqlhdjabdzvrlh56vjnzcd4451-bash52-024" "/gnu/store/gj68b58p1x99x0ldr2phaqaafx7h9pa2-bash52-025" "/gnu/store/zpjwdvxfk8alyw4waii4syaxrzkr62z0-bash52-026" "/gnu/store/6ydmlcbl4w6m9xfax8pgk2fp53p3kpz4-bash52-027" "/gnu/store/cslyg9cpnph2yjj1yfjngvcyhplygasv-bash52-028" "/gnu/store/gwvz3lfplza0qaj5dqzd9haf1bc8lzai-bash52-029" "/gnu/store/npc1svcdjx3l4yis83z3cplr11lzh65w-bash52-030" "/gnu/store/hvz8zdxkgnxv18lsfxvb39zbvhx7yl4y-bash52-031" "/gnu/store/jxj0s2fahz8dki25wmklfs2gxyab26f2-bash52-032" "/gnu/store/gr7wkjc6rhmd8ysnm5rswzsyx7kgsz2y-bash52-033" "/gnu/store/zqag63sxq5zkqjs67wd7xf1853j0n7j0-bash52-034" "/gnu/store/bh2k1pdgp4dmmhpdzspybr0gymw6mdhw-bash52-035" "/gnu/store/8vyiyxl6hqmcva7650jih49lrvyapjax-bash52-036" "/gnu/store/4yhq6snb3zbc7vwy8yv7ppdq5jdrbnp6-bash52-037"))) #t) (cond ((file-is-directory? "/gnu/store/593qs51b8v255i6nn1ypj3svw0zg6r2n-bash-5.2.tar.gz") (copy-recursively directory ((@ (guile) getenv) "out") #:log (%make-void-port "w"))) ((or "/gnu/store/snyn870y9z8a00r49sxyjpk8sk0b9361-bootstrap-binaries-0" (tarball? "/gnu/store/593qs51b8v255i6nn1ypj3svw0zg6r2n-bash-5.2.tar.gz")) (repack directory ((@ (guile) getenv) "out"))) (else (copy-file file ((@ (guile) getenv) "out"))))))