From mboxrd@z Thu Jan 1 00:00:00 1970 From: Maxim Cournoyer Subject: bug#35603: Go build system mishandles repetitive import paths (was [PATCH] build: go-build-system: Ensure uniform unpacking directory.) Date: Mon, 06 May 2019 21:10:21 -0400 Message-ID: <87a7fzcbnm.fsf@gmail.com> References: <87tvf1nshy.fsf@gmail.com> <20190506154249.GA9060@jasmine.lan> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Return-path: Received: from eggs.gnu.org ([209.51.188.92]:42445) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hNojL-0003D0-Be for bug-guix@gnu.org; Mon, 06 May 2019 21:17:16 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hNodL-0006Kj-1b for bug-guix@gnu.org; Mon, 06 May 2019 21:11:04 -0400 Received: from debbugs.gnu.org ([209.51.188.43]:44319) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hNodK-0006KN-QT for bug-guix@gnu.org; Mon, 06 May 2019 21:11:02 -0400 Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1hNodK-00067I-Dt for bug-guix@gnu.org; Mon, 06 May 2019 21:11:02 -0400 Sender: "Debbugs-submit" Resent-To: bug-guix@gnu.org Resent-Message-ID: In-Reply-To: <20190506154249.GA9060@jasmine.lan> (Leo Famulari's message of "Mon, 6 May 2019 11:42:49 -0400") List-Id: Bug reports for GNU Guix List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-guix-bounces+gcggb-bug-guix=m.gmane.org@gnu.org Sender: "bug-Guix" To: Leo Famulari Cc: 35603-done@debbugs.gnu.org Hello Leo, Leo Famulari 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 >> Date: Fri, 5 Apr 2019 00:00:08 -0400 >> Subject: [PATCH 3/3] build: go-build-system: Ensure uniform unpacking >> directory. >> >> Depending on whether the source is a directory or an archive, we strip t= he >> 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 > others. 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' > Backtrace: > 6 (primitive-load "/gnu/store/yfvy06fscz726da5wjvh9jxjsah=E2= =80=A6") > In ice-9/eval.scm: > 191:35 5 (_ _) > In srfi/srfi-1.scm: > 863:16 4 (every1 # =E2=80=A6) > In /gnu/store/zmc0hcmdfg5n4kl32vcla4cg9c9bspfg-module-import/guix/build/g= nu-build-system.scm: > 799:28 3 (_ _) > In ice-9/eval.scm: > 619:8 2 (_ #(#(#) (#:inputs # =E2=80= =A6))) > In /gnu/store/zmc0hcmdfg5n4kl32vcla4cg9c9bspfg-module-import/guix/build/u= tils.scm: > 635:19 1 (with-atomic-file-replacement "src/github.com/syncthin=E2=80= =A6" =E2=80=A6) > In unknown file: > 0 (mkstemp! "src/github.com/syncthing/syncthing/build.go=E2=80= =A6" =E2=80=A6) > > 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 > definition. > > 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. Thank you! Maxim