Subject: bug#36747: Official MesCC bootstrap binaries differ from my locally built ones

From: Marius Bakke <[email-masked]>
Date: Wed, 14 Aug 2019 17:03:55 +0200

Jan Nieuwenhuizen <[email-masked]> writes:

> Mark H Weaver writes:
>
> Hi Mark,
>
>>> I called that `wip-binaries', @master from three weeks ago.
>>
>> Thank you, that was a good start.  I found that some additional patches
>> were needed to match the bootstrap binaries that 'core-updates' is
>> currently based on.
>>
>> I ended up deleting and repushing a revised 'wip-binaries' to Savannah.
>> It includes slightly modified versions of the two commits you had
>> included, as well as some additional cherry-picked commits of yours to
>> update mescc-tools and add linux-libre-headers-bootstrap-tarball, and a
>> few of my own.
>
> Very nice.
>
>> I built the new bootstrap tarballs at the new 'wip-binaries', commit
>> c67becb31c30a5cd7685f166970ac4793e3a34a9, and here's what I got:
>>
>> mhw@jojen ~/guix-wip-binaries$ git describe
>> v1.0.1-2404-gc67becb31c
>> mhw@jojen ~/guix-wip-binaries$ ./pre-inst-env guix build --system=i686-linux bootstrap-tarballs
>> /gnu/store/bg086i2qw1fn2jgbd15d9v91hyjrjsb2-bootstrap-tarballs-0
>> mhw@jojen ~/guix-wip-binaries$ cd /gnu/store/bg086i2qw1fn2jgbd15d9v91hyjrjsb2-bootstrap-tarballs-0
>> mhw@jojen /gnu/store/bg086i2qw1fn2jgbd15d9v91hyjrjsb2-bootstrap-tarballs-0$ sha256sum *
>> 3e50c070a100b6bcf84c4bf5c868f9cd0a9fd1570f5d82fbfb78f8411959091b  guile-static-stripped-2.2.4-i686-linux.tar.xz
>> 1acd8f83e27d2fac311a5ca78e9bf11a9a1638b82469870d5c854c4e7afaa26a  linux-libre-headers-stripped-4.14.67-i686-linux.tar.xz
>> 021543d9bb6af55f39e68d69692e3cb74646ced2cad0bb9ac0047ef81e9d7330  mescc-tools-static-stripped-0.5.2-0.bb062b0-i686-linux.tar.xz
>> fb32090071b39fc804fb9a7fba96f0bc5eb844a0efd268fb24c42e6bfa959de0  mes-minimal-stripped-0.19-i686-linux.tar.xz
>> c80cdd17b0a24eebdd75570ff72c4ec06e129bd702ac008186b57f6301c448e7  static-binaries-0-i686-linux.tar.xz
>
>> Can you try "guix build --system=i686-linux bootstrap-tarballs" at the
>> new 'wip-binaries' branch and see if you get the same results?
>
> Yes, on c67becb31c30a5cd7685f166970ac4793e3a34a9 running
> "./pre-inst-env guix build --system=i686-linux bootstrap-tarballs" gives me exactly this,
> also for guile-static-stripped! \o/
>
>> Also, I have a question: One of the changes I made to 'wip-binaries' was
>> to update mescc-tools to 0.5.2-0.bb062b0, to match the
>> %bootstrap-mescc-tools that's currently being used in 'core-updates'.
>>
>> However, I noticed that you have also apparently built the official
>> release of mescc-tools-0.5.2, which is on your site:
>>
>>   http://lilypond.org/janneke/guix/20190722/mescc-tools-static-stripped-0.5.2-i686-linux.tar.xz
>>
>> and that this tarball is identical to the build output of the later git
>> commit: mescc-tools-static-stripped-0.5.2-0.bb062b0-i686-linux.tar.xz.
>>
>> With this in mind, could we just use 0.5.2?  What changed between 0.5.2
>> and 0.5.2-0.bb062b0, and what was the rationale for updating to bb062b0?
>
> Good catch.  We probably can, we might try that.
>
> I think the need for updating to bb062b0 has been removed during the
> review of the integration of the reduced binary seed bootstrap into
> core-updates by Ludovic.
>
> For historical reasons, I think this mescc-tools commit
>
> --8<---------------cut here---------------start------------->8---
> commit c184e95096881a13f29ebd7fc507fe305d3d8de5 (gitlab/janneke, janneke)
> Author: Jan Nieuwenhuizen <[email-masked]>
> Date:   Thu Oct 4 22:03:31 2018 +0200
>
>     build.sh: Update for mes 0.18.
> --8<---------------cut here---------------end--------------->8---
>
> was needed at a time that we did not have mescc-tools or mes in
> bootstrap tarballs.  We built bootstrap variants of mescc-tools and mes
> using a externally (outside fo Guix) built mescc-tools-seed and
> (an almost pure ASCII) mes-seed.

I tried building the i686 bootstrap tarballs from wip-binaries with this
additional patch:

diff --git a/gnu/packages/mes.scm b/gnu/packages/mes.scm
index e298cb05c1..380cac6c88 100644
--- a/gnu/packages/mes.scm
+++ b/gnu/packages/mes.scm
@@ -139,33 +139,31 @@ Guile.")
     (license gpl3+)))
 
 (define-public mescc-tools
-  (let ((commit "bb062b0da7bf2724ca40f9002b121579898d4ef7")
-        (revision "0")
-        (version "0.5.2"))
-    (package
-      (name "mescc-tools")
-      (version (string-append version "-" revision "." (string-take commit 7)))
-      (source (origin
-                (method url-fetch)
-                (uri (string-append
-                      "https://git.savannah.nongnu.org/cgit/mescc-tools.git/snapshot/"
-                      name "-" commit
-                      ".tar.gz"))
-                (sha256
-                 (base32
-                  "1h6j57wyf91i42b26f8msbv6451cw3nm4nmpl1fckp9c7vi8mwkh"))))
-      (build-system gnu-build-system)
-      (supported-systems '("i686-linux" "x86_64-linux"))
-      (arguments
-       `(#:make-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out")))
-         #:test-target "test"
-         #:phases (modify-phases %standard-phases
-                    (delete 'configure))))
-      (synopsis "Tools for the full source bootstrapping process")
-      (description
-       "Mescc-tools is a collection of tools for use in a full source
+  (package
+    (name "mescc-tools")
+    (version "0.5.2")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "https://git.savannah.nongnu.org/cgit/mescc-tools.git/snapshot/"
+                    name "-Release_" version
+                    ".tar.gz"))
+              (file-name (string-append name "-" version ".tar.gz"))
+              (sha256
+               (base32
+                "01x7bhmgwyf6mc2g1hcvibhps98nllacqm4f0j5l51b1mbi18pc2"))))
+    (build-system gnu-build-system)
+    (supported-systems '("i686-linux" "x86_64-linux"))
+    (arguments
+     `(#:make-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out")))
+       #:test-target "test"
+       #:phases (modify-phases %standard-phases
+                  (delete 'configure))))
+    (synopsis "Tools for the full source bootstrapping process")
+    (description
+     "Mescc-tools is a collection of tools for use in a full source
 bootstrapping process.  It consists of the M1 macro assembler, the hex2
 linker, the blood-elf symbol table generator, the kaem shell, exec_enable and
 get_machine.")
     (home-page "https://savannah.nongnu.org/projects/mescc-tools")
-    (license gpl3+))))
+    (license gpl3+)))

And got this result:

$ cd /gnu/store/rdwyr8mh7dvhfkb5g4cws6q40hp23rbi-bootstrap-tarballs-0
$ sha256sum *
3e50c070a100b6bcf84c4bf5c868f9cd0a9fd1570f5d82fbfb78f8411959091b  guile-static-stripped-2.2.4-i686-linux.tar.xz
1acd8f83e27d2fac311a5ca78e9bf11a9a1638b82469870d5c854c4e7afaa26a  linux-libre-headers-stripped-4.14.67-i686-linux.tar.xz
021543d9bb6af55f39e68d69692e3cb74646ced2cad0bb9ac0047ef81e9d7330  mescc-tools-static-stripped-0.5.2-i686-linux.tar.xz
fb32090071b39fc804fb9a7fba96f0bc5eb844a0efd268fb24c42e6bfa959de0  mes-minimal-stripped-0.19-i686-linux.tar.xz
c80cdd17b0a24eebdd75570ff72c4ec06e129bd702ac008186b57f6301c448e7  static-binaries-0-i686-linux.tar.xz

I also merged the branch to core-updates and reverted the bash patch,
which produced this derivation for "guix build -d -s i686-linux
bootstrap-tarballs":

/gnu/store/ld82vli1msfrlimjaryznrqcwm0jc5ii-bootstrap-tarballs-0.drv

I will report back with hashes once it finishes building.  It would be
great if someone else could try to resolve the merge and see if they get
the same derivation.