Subject: gcc-core-mesboot1 may not be deterministic

From: Thiago Jung Bauermann <[email-masked]>
Date: Thu, 12 Aug 2021 16:19:37 -0300

Hello,

Using Guix from both the ‘master’ branch¹ and from the ‘core-updates-frozen’
branch², the following command fails:

--8<---------------cut here---------------start------------->8---
$ guix build --check \
    -e '(@@ (gnu packages commencement) gcc-core-mesboot1)’
    ⋮
guix build: erro: derivation `/gnu/store/qbnxfv7v7288iisl44kccz68k0pv9qdi-gcc-core-mesboot1-4.6.4.drv' may not be deterministic: output `/gnu/store/rn3qvn67nraicabvlrx1rhw6nsjrpgpx-gcc-core-mesboot1-4.6.4' differs
--8<---------------cut here---------------end--------------->8---

During the stripping phase, there are many of these warnings, which may be
related:

--8<---------------cut here---------------start------------->8---
starting phase `strip'
stripping binaries in "/gnu/store/rn3qvn67nraicabvlrx1rhw6nsjrpgpx-gcc-core-mesboot1-4.6.4/lib" with "strip" and flags ("--strip-debug" "--enable-deterministic-archives")
strip: unrecognized option `--enable-deterministic-archives'
Usage: strip <option(s)> in-file(s)
 Removes symbols and sections from files
 The options are:
  -I --input-target=<bfdname>      Assume input file is in format <bfdname>
  -O --output-target=<bfdname>     Create an output file in format <bfdname>
  -F --target=<bfdname>            Set both input and output format to <bfdname>
  -p --preserve-dates              Copy modified/access timestamps to the output
  -R --remove-section=<name>       Remove section <name> from the output
  -s --strip-all                   Remove all symbol and relocation information
  -g -S -d --strip-debug           Remove all debugging symbols
     --strip-unneeded              Remove all symbols not needed by relocations
  -N --strip-symbol=<name>         Do not copy symbol <name>
  -K --keep-symbol=<name>          Only copy symbol <name>
  -x --discard-all                 Remove all non-global symbols
  -X --discard-locals              Remove any compiler-generated symbols
  -v --verbose                     List all object files modified
  -V --version                     Display this program's version number
  -h --help                        Display this output
     --info                        List object formats & architectures supported
  -o <file>                        Place stripped output into <file>
strip: supported targets: elf32-i386 a.out-i386-linux efi-app-ia32 elf32-little elf32-big srec symbolsrec tekhex binary ihex trad-core
--8<---------------cut here---------------end--------------->8---

-- 
Thanks,
Thiago

¹ commit eb0abba3877c0caeac24d0f9c71f31420dba8d6b
² commit a3fc64e4f159b601c18d091713f9c76c01b010aa