Message ID | 20230302091233.28226-1-ludo@gnu.org |
---|---|
State | New |
Headers | show |
Series | [bug#61910] git-download: Download a bare Git repository from SWH. | expand |
Hi, On jeu., 02 mars 2023 at 10:12, Ludovic Courtès <ludo@gnu.org> wrote: > I don’t know of a repository that has this CRLF problem though, so > we should check that it actually works as advertised on such a repo. Here my test: + disable network and only allow archive.softwareheritage.org, + run, ./pre-inst-env guix build -L /tmp/pkg hidapi@0.9.0 -S --check where /tmp/pkg.test.scm is just the old version of hidapi. The patch fixes the discrepancy but it seems more work on SWH side and this will not scale, as Valentin reported in [1]. Since it is a corner case, it would be best if first let try with the flat method and if it fails, let use git-bare. Well, it would mean add some integrity check in the last resort attempt. WDYT? 1: <https://sympa.inria.fr/sympa/arc/swh-devel/2023-03/msg00003.html> --8<---------------cut here---------------start------------->8--- $ cat /tmp/pkg/test.scm (define-module (test) #:use-module (guix packages) #:use-module (guix git-download) #:use-module (gnu packages libusb) ) (define-public hidapi-0.9 (package (inherit hidapi) (name "hidapi") (version "0.9.0") (source (origin (method git-fetch) (uri (git-reference (url "https://github.com/libusb/hidapi") (commit (string-append "hidapi-" version)))) (file-name (git-file-name name version)) (sha256 (base32 "1p4g8lgwj4rki6lbn5l6rvwj0xlbn1xfh4d255bg5pvgczmwmc4i")))))) $ ./pre-inst-env guix build -L /tmp/pkg hidapi@0.9.0 -S --check The following derivation will be built: /gnu/store/cg34yy4pd7b246qpi946x5lhcg1x80sw-hidapi-0.9.0-checkout.drv building /gnu/store/cg34yy4pd7b246qpi946x5lhcg1x80sw-hidapi-0.9.0-checkout.drv... guile: warning: failed to install locale environment variable `PATH' set to `/gnu/store/0c1yfbxyv877mlgychfgvmk5ha2jqh52-gzip-1.10/bin:/gnu/store/8z1q7vjxylm6l4ibsywd4h6m6jv6zqm4-tar-1.34/bin' hint: Using 'master' as the name for the initial branch. This default branch name hint: is subject to change. To configure the initial branch name to use in all hint: of your new repositories, which will suppress this warning, call: hint: hint: git config --global init.defaultBranch <name> hint: hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and hint: 'development'. The just-created branch can be renamed via this command: hint: hint: git branch -m <name> Initialized empty Git repository in /gnu/store/n6rvypb3z386v0ml6n0xyga2x4q9ij58-hidapi-0.9.0-checkout/.git/ fatal: unable to access 'https://github.com/libusb/hidapi/': Could not resolve host: github.com Failed to do a shallow fetch; retrying a full fetch... fatal: unable to access 'https://github.com/libusb/hidapi/': Could not resolve host: github.com git-fetch: '/gnu/store/5qcj54m8smhp9gd0i8zq1y4c08cmrfii-git-minimal-2.39.1/bin/git fetch origin' failed with exit code 128 Trying content-addressed mirror at berlin.guix.gnu.org... Trying content-addressed mirror at berlin.guix.gnu.org... Trying to download from Software Heritage... SWH: found revision 7da5cc91fc0d2dbe4df4f08cd31f6ca1a262418f with directory at 'https://archive.softwareheritage.org/api/1/directory/c95078f3645abc050536d3aaf76cb5fb6eb6b288/' SWH vault: requested bundle cooking, waiting for completion... SWH vault: Processing... 1334 objects processed Over 403 remaining SWH vault: Processing... 1484 objects processed Over 301 remaining SWH vault: Processing... 1603 objects processed Over 212 remaining SWH vault: Processing... 1712 objects processed Over 115 remaining swh:1:rev:7da5cc91fc0d2dbe4df4f08cd31f6ca1a262418f.git/ swh:1:rev:7da5cc91fc0d2dbe4df4f08cd31f6ca1a262418f.git/HEAD swh:1:rev:7da5cc91fc0d2dbe4df4f08cd31f6ca1a262418f.git/branches/ swh:1:rev:7da5cc91fc0d2dbe4df4f08cd31f6ca1a262418f.git/config swh:1:rev:7da5cc91fc0d2dbe4df4f08cd31f6ca1a262418f.git/description swh:1:rev:7da5cc91fc0d2dbe4df4f08cd31f6ca1a262418f.git/hooks/ swh:1:rev:7da5cc91fc0d2dbe4df4f08cd31f6ca1a262418f.git/info/ swh:1:rev:7da5cc91fc0d2dbe4df4f08cd31f6ca1a262418f.git/info/exclude swh:1:rev:7da5cc91fc0d2dbe4df4f08cd31f6ca1a262418f.git/info/refs swh:1:rev:7da5cc91fc0d2dbe4df4f08cd31f6ca1a262418f.git/objects/ swh:1:rev:7da5cc91fc0d2dbe4df4f08cd31f6ca1a262418f.git/objects/info/ swh:1:rev:7da5cc91fc0d2dbe4df4f08cd31f6ca1a262418f.git/objects/info/packs swh:1:rev:7da5cc91fc0d2dbe4df4f08cd31f6ca1a262418f.git/objects/pack/ swh:1:rev:7da5cc91fc0d2dbe4df4f08cd31f6ca1a262418f.git/objects/pack/pack-f10e443dcb1d90e42a4fb9519c0fc5429ba49ba9.idx swh:1:rev:7da5cc91fc0d2dbe4df4f08cd31f6ca1a262418f.git/objects/pack/pack-f10e443dcb1d90e42a4fb9519c0fc5429ba49ba9.pack swh:1:rev:7da5cc91fc0d2dbe4df4f08cd31f6ca1a262418f.git/refs/ swh:1:rev:7da5cc91fc0d2dbe4df4f08cd31f6ca1a262418f.git/refs/heads/ swh:1:rev:7da5cc91fc0d2dbe4df4f08cd31f6ca1a262418f.git/refs/heads/master swh:1:rev:7da5cc91fc0d2dbe4df4f08cd31f6ca1a262418f.git/refs/tags/ Cloning into '/gnu/store/n6rvypb3z386v0ml6n0xyga2x4q9ij58-hidapi-0.9.0-checkout'... done. successfully built /gnu/store/cg34yy4pd7b246qpi946x5lhcg1x80sw-hidapi-0.9.0-checkout.drv successfully built /gnu/store/cg34yy4pd7b246qpi946x5lhcg1x80sw-hidapi-0.9.0-checkout.drv /gnu/store/n6rvypb3z386v0ml6n0xyga2x4q9ij58-hidapi-0.9.0-checkout --8<---------------cut here---------------end--------------->8--- Cheers, simon
diff --git a/guix/git-download.scm b/guix/git-download.scm index a1566bed4d..9f57b4170d 100644 --- a/guix/git-download.scm +++ b/guix/git-download.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2014-2021, 2023 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2017 Mathieu Lirzin <mthl@gnu.org> ;;; Copyright © 2017 Christopher Baines <mail@cbaines.net> ;;; Copyright © 2020 Jakub Kądziołka <kuba@kadziolka.net> @@ -162,8 +162,17 @@ (define recursive? (parameterize ((%verify-swh-certificate? #f)) (format (current-error-port) "Trying to download from Software Heritage...~%") + + ;; Fetch the source as a bare Git repository (rather + ;; than 'flat') so Git can post-process it in the usual + ;; way, for instance to perform CR/LF conversion. (swh-download (getenv "git url") (getenv "git commit") - #$output)))))))) + "git-repo" + #:archive-type 'git-bare) + (invoke #+(file-append git "/bin/git") + "clone" "git-repo" #$output) + (delete-file-recursively + (string-append #$output "/.git"))))))))) (mlet %store-monad ((guile (package->derivation guile system))) (gexp->derivation (or name "git-checkout") build