Subject: Re: bug#33235: Bzip hash error

From: Björn Höfling <[email-masked]>
Date: Fri, 2 Nov 2018 12:07:01 +0100

Hi brettg,

I tried with a fresh guixsd 0.15 install and can confirm your problem:

On Fri, 02 Nov 2018 04:33:10 +0100
[email-masked] wrote:

> Hi Leo,
> 
> Are you perhaps mistaken? the URL for bzip2 is bzip.org not bzip2.org
> 
> Regardless, even when pulling from the archive I am still being given
> an incorrect hash.

$ guix build -S --no-substitutes bzip2

--> As you see it, there is a hash mismatch
That's because the URL expired and the new "archive.org/..." URL was
added in commit

7598b678fad2112ea87a85acf755908a59dd4676
Committer: Leo Famulari <[email-masked]>  2018-08-10 22:42:01

Which follows the 0.15.0 release.

If you then look into the log output and open that downloaded file:

less /gnu/store/...-bzip2-1.0.6.tar.gz

you see plain HTML. Of cause, that mismatches.

If there is an error while downloading (i.e. a 404 - not found) then
guix downloader would fallback and try to download the sources from
subistitute servers or even NixOS servers by hashsum. But as we get a
good HTTP return code here, it assumes everything is fine and saves to
the store, not trying anything else.

Now to download the sources from web.archive.org I needed these
steps:

# find out path of guix:
readlink `which guix`

# Then use that directory to authorize berlin:
guix archive --authorize
< /gnu/store/...-guix-0.15.0.../share/guix/berlin.guixsd.org.pub

#Install nss-certs for HTTPS access:
guix package -i nss-certs
# set environment variables, see 6.2.9 X.509 Certificates
export SSL_CERT_DIR="$HOME/.guix-profile/etc/ssl/certs"
export SSL_CERT_FILE="$HOME/.guix-profile/etc/ssl/certs/ca-certificates.crt"

# Now download --with-source
guix build -S
--with-source="https://web.archive.org/web/20180624184835/http://www.bzip.org/1.0.6/bzip2-1.0.6.tar.gz"

# This fails with a stacktrace "wrong type, expected struc", I can't
# copy it out of VM currently.
# 
# Anyway, it downloads the sources and the next:

guix build -S bzip2

# does succeed.

Sorry for the inconveniences with substitutes missing, hope this brings
you a step further?

Björn