From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?UTF-8?Q?Bj=C3=B6rn_?= =?UTF-8?Q?H=C3=B6fling?= Subject: bug#33419: guix package is not showing that the checksum is mismatching Date: Mon, 19 Nov 2018 10:13:10 +0100 Message-ID: <20181119101310.1f42d7e2@alma-ubu> References: <20181118150433.63437ece@alma-ubu> <20181118225948.GC25252@jasmine.lan> Mime-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha1; boundary="Sig_/5Y4po6qh6QA45auDunPIIhq"; protocol="application/pgp-signature" Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:57502) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gOfd8-0008Kp-Of for bug-guix@gnu.org; Mon, 19 Nov 2018 04:14:07 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gOfd4-0007Y6-Pr for bug-guix@gnu.org; Mon, 19 Nov 2018 04:14:06 -0500 Received: from debbugs.gnu.org ([208.118.235.43]:55398) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1gOfd4-0007Y2-Lc for bug-guix@gnu.org; Mon, 19 Nov 2018 04:14:02 -0500 Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1gOfd4-0005wS-CC for bug-guix@gnu.org; Mon, 19 Nov 2018 04:14:02 -0500 Sender: "Debbugs-submit" Resent-Message-ID: In-Reply-To: <20181118225948.GC25252@jasmine.lan> 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: 33419@debbugs.gnu.org --Sig_/5Y4po6qh6QA45auDunPIIhq Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Hi Leo, On Sun, 18 Nov 2018 17:59:48 -0500 Leo Famulari wrote: > On Sun, Nov 18, 2018 at 03:04:33PM +0100, Bj=C3=B6rn H=C3=B6fling wrote: > > I updated a package-definition and forgot to update the Checksum. > > When then updating, it just fails, and the new, nice, > > logging-reduced UI doesn't tell: =20 >=20 > Yes, this is a classic "gotcha" of Guix package development. >=20 > In Guix, those "things" for which you provide a hash are called > "fixed-output derivations": >=20 > https://www.gnu.org/software/guix/manual/en/html_node/Derivations.html >=20 > Unlike regular derivations, we know in advance what the output of the > derivation will be. Therefore, it does not matter to us how it is > built (from source, downloaded over HTTP, downloaded with Git, found > in /gnu/store, etc). >=20 > When building fixed-output derivations, Guix first looks in /gnu/store > to see if they are already built. If so, it just uses what it finds > there. >=20 > So, if you give the wrong hash, as you did in your example, Guix will > use that wrong source code. >=20 > This failure mode is often discovered by people who used `guix > download` to calculate a source hash, but then put the wrong URI in > their package definition. Because the source is already > in /gnu/store, the URI is not tested and their package doesn't work > for anybody else. >=20 > It may also happen when the source is only found on the > content-addressed mirrors provided by Nix; no file-name checking is > performed in that case. >=20 > > $ guix package -u guix-tools > > substitute: updating list of substitutes from > > 'https://berlin.guixsd.org'... 0 [..] > > building /gnu/store/vy3s1y7bv1w6d8gmp5b10xppy9skbgkd-guix-tools-0.1.0-2= .4f17b79-checkout.drv... > > build > > of /gnu/store/vy3s1y7bv1w6d8gmp5b10xppy9skbgkd-guix-tools-0.1.0-2.4f17b= 79-checkout.drv > > failed View build log at > > '/var/log/guix/drvs/vy/3s1y7bv1w6d8gmp5b10xppy9skbgkd-guix-tools-0.1.0-= 2.4f17b79-checkout.drv.bz2'. > > -guix package: error: build failed: build of > > `/gnu/store/iwma3gq778n32mqz6y7277g67nvx1abb-guix-tools-0.1.0-2.4f17b79= .drv' > > failed =20 >=20 > [...] >=20 > > Only when I explicitly built it, the error was shown: > >=20 > > $ guix build guix-tools > >=20 > > HEAD is now at 4f17b79 gdev: Add more package to environment. > > environment variable `PATH' unset > > output path > > `/gnu/store/s399g9f1k19v01rs992w5dl6aif87har-guix-tools-0.1.0-2.4f17b79= -checkout' > > should have r:sha256 hash > > `1j4q43hk7jrys7zsmws37g6w7babzshfdb1s5myl7qwr3mcx6hnf', instead has > > `0b61q29915b4i6adidx3zixnx3m0zp58rjbfa9byqcz13szznc52' build > > of /gnu/store/vy3s1y7bv1w6d8gmp5b10xppy9skbgkd-guix-tools-0.1.0-2.4f17b= 79-checkout.drv > > failed View build log at > > '/var/log/guix/drvs/vy/3s1y7bv1w6d8gmp5b10xppy9skbgkd-guix-tools-0.1.0-= 2.4f17b79-checkout.drv.bz2'. > > cannot build derivation > > `/gnu/store/iwma3gq778n32mqz6y7277g67nvx1abb-guix-tools-0.1.0-2.4f17b79= .drv': > > 1 dependencies couldn't be built guix build: error: build failed: > > build of > > `/gnu/store/iwma3gq778n32mqz6y7277g67nvx1abb-guix-tools-0.1.0-2.4f17b79= .drv' > > failed > >=20 > > Is it intended that this build-failure detail is not shown? I > > suppose not. At least in a log it should be shown. =20 >=20 > I agree that `guix package` should print the relevant error. thank you very much for your lengthy explanations. I'm just no longer sure we talk about the same problem :-)=20 What you described is the fact that somethings wrong in the URL from beginning but someone seeded the store with 'guix download'. Or the URL 404s out but the sources are all available in the Content-Addressed-Network. Then Guix still downloads it by hash (though it is not locally searching in the store by hash, cmp this bug https://debbugs.gnu.org/cgi/bugreport.cgi?bug=3D32245). But that's not what I was referring to here: My point was: "guix build" failed, and it was failing because the hash of the (then newly downloaded) sources did not match the expected ones. And "guix build" is saying so in its output. But: A "guix package" (with -u or -i) is of cause also failing. But it hides the cause. And that is nice, the new UI is meant to hide all those details and backtraces from the user. It refers to the log for those details. But in the referenced log you cannot find the cause either. It is not fully equivalent with the "guix build" logs. Does that make sense? Bj=C3=B6rn --Sig_/5Y4po6qh6QA45auDunPIIhq Content-Type: application/pgp-signature Content-Description: OpenPGP digital signature -----BEGIN PGP SIGNATURE----- Version: GnuPG v2 iEYEARECAAYFAlvyfqcACgkQvyhstlk+X/0fywCgl6Oo3VZ7Rn2DjElcAHWgpqBj 5BcAnRFtDz6cg2bErcTRDEEWR/ioC4dr =QqWW -----END PGP SIGNATURE----- --Sig_/5Y4po6qh6QA45auDunPIIhq--