Subject: bug#40392: [core-updates] pack vs. build discrepancy with --target=i586-pc-gnu

From: Ludovic Courtès <[email-masked]>
Date: Thu, 02 Apr 2020 23:34:32 +0200

On current ‘wip-hurd-vm’ (very close to ‘core-updates’), there’s this
discrepancy between ‘pack’ and ‘build’:

--8<---------------cut here---------------start------------->8---
$ ./pre-inst-env guix build hurd --target=i586-pc-gnu -d --no-grafts
/gnu/store/m8gvpjh1dlgx8v3dbvkpqw17k00h9hv3-hurd-0.9-1.91a5167.drv
$ ./pre-inst-env guix pack hurd --target=i586-pc-gnu -n --no-grafts
The following derivations would be built:
   /gnu/store/1vq3dzc74afy34i6ylymlqqw8hmxvrc8-tarball-pack.tar.gz.drv
   /gnu/store/bzxr1n7z5rkksavql1nckyri4qdslrms-profile.drv
   /gnu/store/gs1zz38m5vvm6fy3nh1jv3fj4vikzmhf-hurd-0.9-1.91a5167.drv
   /gnu/store/17m76zz1nia4mxafh5bzcjlcgf631pzq-glibc-hurd-headers-2.31.drv
The following profile hooks would be built:
   /gnu/store/0sk6qm07y32gf3ljxk718d2g7c0nnh8m-manual-database.drv
   /gnu/store/61qr5qwryi3k1vwbi2ddhy24qy7ld4di-fonts-dir.drv
   /gnu/store/ahcfp2f1ddnym4sw4j8c23mz64mkzvid-info-dir.drv
   /gnu/store/iw2hzd7fsl62a7y2nj577bg89cys0i3q-ca-certificate-bundle.drv
$ git log |head
commit b61467c0c813e65ed86d9b1b8ba1187f117751b9
Author: Ludovic Courtès <[email-masked]>
Date:   Thu Apr 2 16:47:40 2020 +0200

    gnu: cross-libc: Add patch to add 'mach_print' symbol on GNU/Hurd.
    
    * gnu/packages/patches/glibc-hurd-mach-print.patch: New file.
    * gnu/local.mk (dist_patch_DATA): Add it.
    * gnu/packages/cross-base.scm (cross-libc): Add 'patch-libc/hurd' phase
    when 'hurd-target?' is true.
--8<---------------cut here---------------end--------------->8---

‘guix pack’ would build a different hurd derivation, one that actually
fails to build.  The difference here is that the “wrong” hurd derivation
depends on a glibc-hurd-headers-2.31.drv that lacks MiG as an input,
which suggests that the (if (hurd-target?) …) conditional in ‘glibc’ is
not working as expected.

Ludo’.