[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#35603: Go build system mishandles repetitive import paths (was [PATC
bug#35603: Go build system mishandles repetitive import paths (was [PATCH] build: go-build-system: Ensure uniform unpacking directory.)
Mon, 06 May 2019 21:10:21 -0400
Gnus/5.13 (Gnus v5.13) Emacs/26.1 (gnu/linux)
Leo Famulari <address@hidden> writes:
> On Sun, Apr 14, 2019 at 12:03:05AM -0400, Maxim Cournoyer wrote:
>> From 1f7535fbe28f7ac96e824b792e9f1a140b8c54cd Mon Sep 17 00:00:00 2001
>> From: Maxim Cournoyer <address@hidden>
>> Date: Fri, 5 Apr 2019 00:00:08 -0400
>> Subject: [PATCH 3/3] build: go-build-system: Ensure uniform unpacking
>> Depending on whether the source is a directory or an archive, we strip the
>> source directory or preserve it, respectively. This change makes it so that
>> whether the type of the source, it is unpacked at the expected location given
>> by the IMPORT-PATH of the Go build system.
>> * guix/build/go-build-system.scm: Add the (ice-9 ftw) module.
>> (unpack): Add inner procedure to maybe strip the top level directory of an
>> archive, document it and use it.
> This commit (or patch series) broke the build of Syncthing and maybe
Thanks for the heads-up!
> It seems like the the new unpacking code is stripping duplicate
> directory names?
It does as documented in the docstring of the unpack phase:
If the SOURCE archive has a single top level directory,
it is stripped so that the sources appear directly under UNPACK-PATH.
This behavior was made possible with commit
f42e4ebb56fe4f16991ca6c6e060c8f3535865cb, that made it so that:
[...] whether the type of the source, it is unpacked at the expected
location given by the IMPORT-PATH of the Go build system.
> It fails like this:
> starting phase `increase-test-timeout'
> 6 (primitive-load "/gnu/store/yfvy06fscz726da5wjvh9jxjsah…")
> In ice-9/eval.scm:
> 191:35 5 (_ _)
> In srfi/srfi-1.scm:
> 863:16 4 (every1 #<procedure 870540 at /gnu/store/zmc0hcmdfg5n4…> …)
> 799:28 3 (_ _)
> In ice-9/eval.scm:
> 619:8 2 (_ #(#(#<directory (guile-user) 5ce140>) (#:inputs # …)))
> 635:19 1 (with-atomic-file-replacement "src/github.com/syncthin…" …)
> In unknown file:
> 0 (mkstemp! "src/github.com/syncthing/syncthing/build.go…" …)
> ERROR: In procedure mkstemp!:
> In procedure mkstemp!: No such file or directory
> And indeed, if you keep the failed build directory, you will see that
> the path 'src/github.com/syncthing/syncthing' does not exist, even
> though this corresponds to the Go import path specified in the package
> Instead it is like src/github.com/syncthing' which is incorrect.
The fix was to drop the "unpack-pack" argument of the go-build-system for
syncthing, which means we want the sources unpacked at the location
specified by the "import-path".
Done with commit d879fd80c74371120a2cfa30e18a2e28dc02d31d; closing.