Subject: bug#47480: gprolog: hash mismatch

From: zimoun <[email-masked]>
Date: Tue, 30 Mar 2021 14:33:53 +0200

Hi,

On Mon, 29 Mar 2021 at 23:37, Ludovic Courtès <[email-masked]> wrote:
> zimoun <[email-masked]> skribis:
>
>> It is probably an upstream in-place replacement.  This kind of thing is
>> really annoying because it means that people using substitutes do not
>> notice whereas people building from source do.
>
> Could you send a diff of the two tarballs?

Hehe!  I have opened the bug because I wanted to avoid to investigate
myself. ;-)

Basically, I think it is a classical upstream in-place replacement.

>From upstream:

--8<---------------cut here---------------start------------->8---
$ guix build -S  gprolog --no-substitutes
The following derivation will be built:
   /gnu/store/yjrcalnckwmi1ah217xh85sd7ksjcxfw-gprolog-1.4.5.tar.gz.drv
building /gnu/store/yjrcalnckwmi1ah217xh85sd7ksjcxfw-gprolog-1.4.5.tar.gz.drv...

Starting download of /gnu/store/wm72f18w1gvshkz39yp12vnmnkkib79k-gprolog-1.4.5.tar.gz
>From http://gprolog.org/gprolog-1.4.5.tar.gz...
downloading from http://gprolog.org/gprolog-1.4.5.tar.gz ...
 gprolog-1.4.5.tar.gz  3.4MiB         556KiB/s 00:06 [##################] 100.0%
sha256 hash mismatch for /gnu/store/wm72f18w1gvshkz39yp12vnmnkkib79k-gprolog-1.4.5.tar.gz:
  expected hash: 0z4cc42n3k6i35b8mr816iwsvrpxshw6d7dgz6s2h1hy0l7g1p5z
  actual hash:   18mrmx44fll0g1qphadna9g6m7miw8d22lkjavah22vzc38kalyf
hash mismatch for store item '/gnu/store/wm72f18w1gvshkz39yp12vnmnkkib79k-gprolog-1.4.5.tar.gz'
build of /gnu/store/yjrcalnckwmi1ah217xh85sd7ksjcxfw-gprolog-1.4.5.tar.gz.drv failed
View build log at '/var/log/guix/drvs/yj/rcalnckwmi1ah217xh85sd7ksjcxfw-gprolog-1.4.5.tar.gz.drv.bz2'.
guix build: error: build of `/gnu/store/yjrcalnckwmi1ah217xh85sd7ksjcxfw-gprolog-1.4.5.tar.gz.drv' failed

$ guix download http://gprolog.org/gprolog-1.4.5.tar.gz

Starting download of /tmp/guix-file.aqmcFI
>From http://gprolog.org/gprolog-1.4.5.tar.gz...
 gprolog-1.4.5.tar.gz  3.4MiB         557KiB/s 00:06 [##################] 100.0%
/gnu/store/59hpvhs8zk66g62yisx363fkl53svcnf-gprolog-1.4.5.tar.gz
18mrmx44fll0g1qphadna9g6m7miw8d22lkjavah22vzc38kalyf
--8<---------------cut here---------------end--------------->8---

>From Guix CI:

--8<---------------cut here---------------start------------->8---
$ guix hash $(guix build -S gprolog)
3.6 MB will be downloaded:
   /gnu/store/wm72f18w1gvshkz39yp12vnmnkkib79k-gprolog-1.4.5.tar.gz
substituting /gnu/store/wm72f18w1gvshkz39yp12vnmnkkib79k-gprolog-1.4.5.tar.gz...
downloading from https://ci.guix.gnu.org/nar/wm72f18w1gvshkz39yp12vnmnkkib79k-gprolog-1.4.5.tar.gz ...
 gprolog-1.4.5.tar.gz  3.4MiB         559KiB/s 00:06 [##################] 100.0%

0z4cc42n3k6i35b8mr816iwsvrpxshw6d7dgz6s2h1hy0l7g1p5z
--8<---------------cut here---------------end--------------->8---

Then, let get the content:

--8<---------------cut here---------------start------------->8---
$ tar -xf /gnu/store/59hpvhs8zk66g62yisx363fkl53svcnf-gprolog-1.4.5.tar.gz
$ mv gprolog-1.4.5 from-upstream

$ tar -xf /gnu/store/wm72f18w1gvshkz39yp12vnmnkkib79k-gprolog-1.4.5.tar.gz
$ mv gprolog-1.4.5 from-ci
--8<---------------cut here---------------end--------------->8---

and show which files are differing:

--8<---------------cut here---------------start------------->8---
$ diff -r --no-dereference from-{ci,upstream}
diff -r --no-dereference from-ci/ChangeLog from-upstream/ChangeLog
diff -r --no-dereference from-ci/doc/copyright.tex from-upstream/doc/copyright.tex
Binary files from-ci/doc/gprolog.dvi and from-upstream/doc/gprolog.dvi differ
diff -r --no-dereference from-ci/doc/gprolog.html from-upstream/doc/gprolog.html
Binary files from-ci/doc/gprolog.pdf and from-upstream/doc/gprolog.pdf differ
diff -r --no-dereference from-ci/doc/gprolog.ps from-upstream/doc/gprolog.ps
diff -r --no-dereference from-ci/doc/html_node/gprolog001.html from-upstream/doc/html_node/gprolog001.html

[...]

diff -r --no-dereference from-ci/doc/html_node/gprolog073.html from-upstream/doc/html_node/gprolog073.html
diff -r --no-dereference from-ci/doc/html_node/gprolog-idx.html from-upstream/doc/html_node/gprolog-idx.html
diff -r --no-dereference from-ci/doc/html_node/index.html from-upstream/doc/html_node/index.html
diff -r --no-dereference from-ci/NEWS from-upstream/NEWS
diff -r --no-dereference from-ci/src/EnginePl/gp_config.h from-upstream/src/EnginePl/gp_config.h
diff -r --no-dereference from-ci/src/EnginePl/gprolog_cst.h from-upstream/src/EnginePl/gprolog_cst.h
diff -r --no-dereference from-ci/src/Ma2Asm/x86_64_any.c from-upstream/src/Ma2Asm/x86_64_any.c
diff -r --no-dereference from-ci/src/Wam2Ma/wam2ma.c from-upstream/src/Wam2Ma/wam2ma.c
--8<---------------cut here---------------end--------------->8---

Basically, most seems a Copyright update and a documentation
regeneration. Except this:

--8<---------------cut here---------------start------------->8---
$ diff -r --no-dereference from-ci/src/Ma2Asm/x86_64_any.c from-upstream/src/Ma2Asm/x86_64_any.c
213,214c213,216
< #if defined(M_x86_64_darwin) || defined(M_x86_64_bsd) || defined(M_x86_64_linux) 
<   pic_code = 1;			/* NB: on darwin and BSD everything is PIC code, last gcc 6 needs this for linux */
---
> #if defined(M_x86_64_darwin) || defined(M_x86_64_bsd)
>   pic_code = 1;                 /* NB: on darwin and BSD everything is PIC code */
> #elif defined(M_x86_64_linux) && __GNUC__ >= 6 /* gcc >= 6 needs PIC for linux */
>   pic_code = 1;

$ diff -r --no-dereference from-ci/src/Wam2Ma/wam2ma.c from-upstream/src/Wam2Ma/wam2ma.c
514c514,516
<     Syntax_Error("multifile or multifile expected");
---
>     {
>       Syntax_Error("multifile or multifile expected");
>     }
--8<---------------cut here---------------end--------------->8---

Cheers,
simon