From mboxrd@z Thu Jan 1 00:00:00 1970 From: George Clemmer Subject: bug#33262: guix fails to find and use some available substitutes Date: Sun, 04 Nov 2018 20:09:56 -0500 Message-ID: Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:41431) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gJTQ3-0000uM-3Z for bug-guix@gnu.org; Sun, 04 Nov 2018 20:11:08 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gJTPz-0008Oy-38 for bug-guix@gnu.org; Sun, 04 Nov 2018 20:11:07 -0500 Received: from debbugs.gnu.org ([208.118.235.43]:58422) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1gJTPy-0008Nl-Oy for bug-guix@gnu.org; Sun, 04 Nov 2018 20:11:02 -0500 Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1gJTPy-0005yj-Ef for bug-guix@gnu.org; Sun, 04 Nov 2018 20:11:02 -0500 Sender: "Debbugs-submit" Resent-Message-ID: Received: from eggs.gnu.org ([2001:4830:134:3::10]:41187) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gJTP2-0000fW-1G for bug-guix@gnu.org; Sun, 04 Nov 2018 20:10:05 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gJTOy-0006Sl-T1 for bug-guix@gnu.org; Sun, 04 Nov 2018 20:10:04 -0500 Received: from mail-qk1-x743.google.com ([2607:f8b0:4864:20::743]:44547) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1gJTOy-0006S0-Ko for bug-guix@gnu.org; Sun, 04 Nov 2018 20:10:00 -0500 Received: by mail-qk1-x743.google.com with SMTP id n12so12075266qkh.11 for ; Sun, 04 Nov 2018 17:10:00 -0800 (PST) List-Id: Bug reports for GNU Guix List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-guix-bounces+gcggb-bug-guix=m.gmane.org@gnu.org Sender: "bug-Guix" To: 33262@debbugs.gnu.org --=-=-= Content-Type: text/plain I run 'guix system vm-image' VMs on a GuixSD server (hostname g1). The VMs are configured to get substitutes from g1 in addition to the official Guix servers. This works great except that the VMs are failing to find/use some of the substitutes that are available on g1. E.g., in the attached log (setup.log.gz) of the first 'guix package' issued on VM sysi58, curl is built ... building /gnu/store/24ag580271wa640529ycykdwj0lk0g6z-curl-7.61.1.tar.xz.drv... downloading from https://curl.haxx.se/download/curl-7.61.1.tar.xz... building /gnu/store/17lw3svpjqygpj739yynyz6b8abddikx-curl-7.61.1.drv... ... when the substitute is available in the g1 store ... /gnu/store: -r--r--r-- 2 root root 3747 Dec 31 1969 17lw3svpjqygpj739yynyz6b8abddikx-curl-7.61.1.drv This is "infrequent", in the sense that a high percentabe of the substitutes available from g1 are being found and used. However, these other packages for which substitutes are available on g1 are also built: downloading from ftp://ftp.knackered.org/pub/psutils/psutils.tar.gz... downloading from http://download.osgeo.org/libtiff/tiff-4.0.9.tar.gz... downloading from https://ftpmirror.gnu.org/gnu/groff/groff-1.22.3.tar.gz... downloading from https://github.com/apple/cups/releases/download/v2.2.8/cups-2.2.8-source.tar.gz... downloading from https://github.com/ArtifexSoftware/ghostpdl-downloads/releases/download/gs924/ghostscript-9.24.tar.xz... downloading from https://gnupg.org/ftp/gcrypt/libgcrypt/libgcrypt-1.8.3.tar.bz2... downloading from http://www.x.org/releases/individual/lib/libX11-1.6.6.tar.bz2... downloading from http://www.x.org/releases/individual/lib/xtrans-1.3.5.tar.bz2... Details: Using Guix from Git: Server g1: sys.scm v0.15.0-2913-g21c51ebd6 VM sysi58: sysi58.scm v0.15.0-3115-g7571ec357 TIA - George --=-=-= Content-Type: application/octet-stream Content-Disposition: attachment; filename=sysi58.scm Content-Transfer-Encoding: base64 OzsgLSotU2NoZW1lLSotCjs7OyBtaW5pbWFsICdndWl4IHN5c3RlbSB2bS1pbWFnZScgY29uZmln IH4gc3lzLnNjbQooZGVmaW5lIHN5cy1wYWNrYWdlcwogICcoCiAgICAiY3VwcyIKICAgICJnaXQi CiAgICAiZ2xpYmMtdXRmOC1sb2NhbGVzIgogICAgIm1vc2giCiAgICAibnNzLWNlcnRzIgogICAg Im9wZW5zc2giCiAgICAic2NyZWVuIgogICAgKSkKKHVzZS1tb2R1bGVzIChnbnUpKQoodXNlLW1v ZHVsZXMgKGdudSBwYWNrYWdlcykpCih1c2UtbW9kdWxlcyAoZ251IHN5c3RlbSBuc3MpKSA7IG5h bWUgc2VydmljZSBzd2l0Y2gKKHVzZS1zZXJ2aWNlLW1vZHVsZXMKIGF2YWhpCiBuZXR3b3JraW5n IDsgZGhjcC1jbGllbnQtc2VydmljZQogc3NoIDsgb3BlbnNzaC1zZXJ2aWNlLXR5cGUKICkKKGRl ZmluZSAlbXktc2VydmljZXMKICAobW9kaWZ5LXNlcnZpY2VzICViYXNlLXNlcnZpY2VzCiAgICAo Z3VpeC1zZXJ2aWNlLXR5cGUgY29uZmlnID0+CgkJICAgICAgIChndWl4LWNvbmZpZ3VyYXRpb24K CQkJKGluaGVyaXQgY29uZmlnKQoJCQkoc3Vic3RpdHV0ZS11cmxzIChsaXN0ICJodHRwOi8vZzEu bG9jYWw6ODA4MCIKCQkJCQkgICAgICAgImh0dHBzOi8vbWlycm9yLmh5ZHJhLmdudS5vcmciCgkJ CQkJICAgICAgICJodHRwczovL2h5ZHJhLmdudS5vcmciCgkJCQkJICAgICAgICJodHRwczovL2Jl cmxpbi5ndWl4c2Qub3JnIgoJCQkJCSAgICAgICApKSkpKSkKKG9wZXJhdGluZy1zeXN0ZW0KICAo aG9zdC1uYW1lICJzeXNpNTgiKQogICh0aW1lem9uZSAiQW1lcmljYS9OZXdfWW9yayIpCiAgKGxv Y2FsZSAiZW5fVVMudXRmOCIpCiAgKGJvb3Rsb2FkZXIgKGdydWItY29uZmlndXJhdGlvbiAodGFy Z2V0ICIvZGV2L3NkYSIpKSkKICAoZmlsZS1zeXN0ZW1zIChjb25zIChmaWxlLXN5c3RlbQoJCQko ZGV2aWNlIChmaWxlLXN5c3RlbS1sYWJlbCAiZzFzZCIpKQoJCQkobW91bnQtcG9pbnQgIi8iKQoJ CQkodHlwZSAiZXh0NCIpKQoJCSAgICAgICViYXNlLWZpbGUtc3lzdGVtcykpCiAgKHVzZXJzIChj b25zKgoJICAodXNlci1hY2NvdW50CgkgICAobmFtZSAiZzEiKQoJICAgKGdyb3VwICJ1c2VycyIp CgkgICAoc3VwcGxlbWVudGFyeS1ncm91cHMgJygid2hlZWwiKSkKCSAgIChob21lLWRpcmVjdG9y eSAiL2hvbWUvZzEiKSkKCSAgKHVzZXItYWNjb3VudAoJICAgKG5hbWUgImFsIikKCSAgIChncm91 cCAidXNlcnMiKQoJICAgKHN1cHBsZW1lbnRhcnktZ3JvdXBzICcoIndoZWVsIikpCgkgICAoaG9t ZS1kaXJlY3RvcnkgIi9ob21lL2FsIikpCgkgICViYXNlLXVzZXItYWNjb3VudHMpKQogIChwYWNr YWdlcyAoYXBwZW5kIChtYXAgc3BlY2lmaWNhdGlvbi0+cGFja2FnZSBzeXMtcGFja2FnZXMpCgkJ ICAgICViYXNlLXBhY2thZ2VzKSkKICAoc2VydmljZXMgKGNvbnMqCgkgICAgIChkaGNwLWNsaWVu dC1zZXJ2aWNlKQoJICAgICAoc2VydmljZSBvcGVuc3NoLXNlcnZpY2UtdHlwZQoJCSAgICAgIChv cGVuc3NoLWNvbmZpZ3VyYXRpb24KCQkgICAgICAgKHgxMS1mb3J3YXJkaW5nPyAjdCkKCQkgICAg ICAgKHBlcm1pdC1yb290LWxvZ2luICN0KQoJCSAgICAgICAoYWxsb3ctZW1wdHktcGFzc3dvcmRz PyAjdCkKCQkgICAgICAgKGF1dGhvcml6ZWQta2V5cwoJCQlgKAoJCQkgICgiZzEiICwobG9jYWwt ZmlsZSAiZ2xjLnB1YiIpKQoJCQkgICgiYWwiICwobG9jYWwtZmlsZSAiZ2xjLnB1YiIpKQoJCQkg ICgicm9vdCIgLChsb2NhbC1maWxlICJnbGMucHViIikpKSkpKQoJICAgICAoYXZhaGktc2Vydmlj ZSkKCSAgICAgKG50cC1zZXJ2aWNlKQoJICAgICAoZXh0cmEtc3BlY2lhbC1maWxlICIvZXRjL2dl bi9zeXNpNTguc2NtIgoJCQkJIChsb2NhbC1maWxlICJzeXNpNTguc2NtIikpCgkgICAgICVteS1z ZXJ2aWNlcykpCiAgKG5hbWUtc2VydmljZS1zd2l0Y2ggJW1kbnMtaG9zdC1sb29rdXAtbnNzKSkK --=-=-= Content-Type: application/octet-stream Content-Disposition: attachment; filename=sys.scm Content-Transfer-Encoding: base64 OzsgLSotU2NoZW1lLSotCjs7IGcxOiBHdWl4U0QgaGVhZGxlc3Mgc2VydmVyIHcvIE5WTWUgTS4y IFNTRCByb290IGRyaXZlCihkZWZpbmUgc3lzLXBhY2thZ2VzCiAgJygKICAgICJjdXBzIgogICAg ImVtYWNzLW5vLXgiCiAgICAiZW1hY3MtZ3VpeCIKICAgICJlbWFjcy1wYXJlZGl0IgogICAgImZy ZWVpcG1pIgogICAgImdpdCIKICAgICJnbGliYy11dGY4LWxvY2FsZXMiCiAgICAibWFnaXQiCiAg ICAibWRhZG0iCiAgICAibW9zaCIKICAgICJuc3MtY2VydHMiCiAgICAib3BlbnNzaCIKICAgICJx ZW11IgogICAgInNjcmVlbiIKICAgICJzbWFydG1vbnRvb2xzIgogICAgKSkKKHVzZS1tb2R1bGVz IChnbnUpKQoodXNlLW1vZHVsZXMgKGdudSBwYWNrYWdlcykpCih1c2UtbW9kdWxlcyAoZ251IHN5 c3RlbSBuc3MpKSA7IG5hbWUgc2VydmljZSBzd2l0Y2gKKHVzZS1zZXJ2aWNlLW1vZHVsZXMKIGFk bWluICAgICAgICAgICAgICAgIDsgcm90dGxvZwogYXZhaGkKIG5ldHdvcmtpbmcgICAgICAgICAg IDsgc3RhdGljLCBudHAKIHNzaCAgICAgICAgICAgICAgICAgIDsgb3BlbnNzaC1zZXJ2aWNlLXR5 cGUKIG1jcm9uCiApCihkZWZpbmUgdXBkYXRlZGItam9iCiAgOzsgUnVuICd1cGRhdGVkYicgYXQg M0FNIGV2ZXJ5IGRheS4KICAjfihqb2IgJyhuZXh0LWhvdXIgJygzKSkKCSAobGFtYmRhICgpCgkg ICAoZXhlY2wgKHN0cmluZy1hcHBlbmQgIyRmaW5kdXRpbHMgIi9iaW4vdXBkYXRlZGIiKQoJCSAg InVwZGF0ZWRiIgoJCSAgIi0tcHJ1bmVwYXRocz0vdG1wIC92YXIvdG1wIC9nbnUvc3RvcmUiKSkp KQooZGVmaW5lIGdhcmJhZ2UtY29sbGVjdG9yLWpvYgogIDs7IENvbGxlY3QgZ2FyYmFnZSA0NSBt aW51dGVzIGFmdGVyIG1pZG5pZ2h0IGV2ZXJ5IGRheS4KICAjfihqb2IgIjQ1IDAgKiAqICoiICAg ICAgICAgICAgO1ZpeGllIGNyb24gc3ludGF4CgkgImd1aXggZ2MgLUYgMUciKSkKKGRlZmluZSBi YWNrdXAtam9iCiAgOzsgYmFja3VwIHNzZCA1IG1pbnV0ZXMgYWZ0ZXIgbWlkbmlnaHQgZXZlcnkg ZGF5LgogICN+KGpvYiAiNSAwICogKiAqIiAgICAgICAgICAgIDtWaXhpZSBjcm9uIHN5bnRheAoJ ICIvcm9vdC9iaW4vYnVzc2QiKSkKKGRlZmluZSAlbXktc2VydmljZXMKICAobW9kaWZ5LXNlcnZp Y2VzICViYXNlLXNlcnZpY2VzCgkJICAgKGFnZXR0eS1zZXJ2aWNlLXR5cGUgY29uZmlnID0+CgkJ CQkJKGFnZXR0eS1jb25maWd1cmF0aW9uCgkJCQkJICh0dHkgInR0eVMxIikKCQkJCQkgKGJhdWQt cmF0ZSAiMTE1MjAwIikKCQkJCQkgKHRlcm0gInh0ZXJtLTI1NmNvbG9yIikpKQoJCSAgIChndWl4 LXNlcnZpY2UtdHlwZSBjb25maWcgPT4KCQkJCSAgICAgIChndWl4LWNvbmZpZ3VyYXRpb24KCQkJ CSAgICAgICAoaW5oZXJpdCBjb25maWcpCgkJCQkgICAgICAgKHN1YnN0aXR1dGUtdXJscyAobGlz dCAiaHR0cHM6Ly9taXJyb3IuaHlkcmEuZ251Lm9yZyIgCgkJCQkJCQkgICAgICAiaHR0cHM6Ly9o eWRyYS5nbnUub3JnIgoJCQkJCQkJICAgICAgImh0dHBzOi8vYmVybGluLmd1aXhzZC5vcmciCgkJ CQkJICAgICAgICkpKSkpKQoob3BlcmF0aW5nLXN5c3RlbQogKGhvc3QtbmFtZSAiZzEiKQogKHRp bWV6b25lICJBbWVyaWNhL05ld19Zb3JrIikKIChsb2NhbGUgImVuX1VTLnV0ZjgiKQogKGtlcm5l bC1hcmd1bWVudHMgJygiY29uc29sZT10dHlTMSwxMTUyMDAiKSkKIDs7IE5WTWUgTS4yIFNTRCBy b290IGRyaXZlCiAoYm9vdGxvYWRlciAoZ3J1Yi1jb25maWd1cmF0aW9uICh0YXJnZXQgIi9kZXYv bnZtZTBuMSIpCgkJCQkgKHRlcm1pbmFsLW91dHB1dHMgJyhjb25zb2xlKSkKCQkJCSAodGVybWlu YWwtaW5wdXRzICcoc2VyaWFsIGNvbnNvbGUpKQoJCQkJIChzZXJpYWwtc3BlZWQgMTE1MjAwKQoJ CQkJICkpCiAoZmlsZS1zeXN0ZW1zIChjb25zIChmaWxlLXN5c3RlbQoJCSAgICAgIChkZXZpY2Ug KGZpbGUtc3lzdGVtLWxhYmVsICJnMU5WTWUiKSkKCQkgICAgICAobW91bnQtcG9pbnQgIi8iKQoJ CSAgICAgICh0eXBlICJleHQ0IikpCgkJICAgICAlYmFzZS1maWxlLXN5c3RlbXMpKQogKHN3YXAt ZGV2aWNlcyAnKCIvZGV2L252bWUwbjFwMiIgKSkKICh1c2VycyAoY29ucyogKHVzZXItYWNjb3Vu dCAobmFtZSAiZzEiKQoJCQkgICAgIChncm91cCAidXNlcnMiKQoJCQkgICAgIChzdXBwbGVtZW50 YXJ5LWdyb3VwcyAnKCJ3aGVlbCIgImt2bSIpKQoJCQkgICAgIChob21lLWRpcmVjdG9yeSAoc3Ry aW5nLWFwcGVuZCAiL2hvbWUvIiBuYW1lKSkpCgkgICAgICAgKHVzZXItYWNjb3VudCAobmFtZSAi YWwiKQoJCQkgICAgIChncm91cCAidXNlcnMiKQoJCQkgICAgIChzdXBwbGVtZW50YXJ5LWdyb3Vw cyAnKCJ3aGVlbCIgImt2bSIpKQoJCQkgICAgIChob21lLWRpcmVjdG9yeSAoc3RyaW5nLWFwcGVu ZCAiL2hvbWUvIiBuYW1lKSkpCgkgICAgICAgKHVzZXItYWNjb3VudCAobmFtZSAiZ2xjIikKCQkJ ICAgICAoZ3JvdXAgInVzZXJzIikKCQkJICAgICAoc3VwcGxlbWVudGFyeS1ncm91cHMgJygid2hl ZWwiICJrdm0iKSkKCQkJICAgICAoaG9tZS1kaXJlY3RvcnkgKHN0cmluZy1hcHBlbmQgIi9ob21l LyIgbmFtZSkpKQoJICAgICAgICViYXNlLXVzZXItYWNjb3VudHMpKQogKHBhY2thZ2VzIChhcHBl bmQgKG1hcCBzcGVjaWZpY2F0aW9uLT5wYWNrYWdlCgkJCXN5cy1wYWNrYWdlcykKCQkgICAlYmFz ZS1wYWNrYWdlcykpCiAoc2VydmljZXMgKGNvbnMqIChzdGF0aWMtbmV0d29ya2luZy1zZXJ2aWNl CgkJICAgImVucDNzMCIgIjE5Mi4xNjguMS43IgoJCSAgICM6Z2F0ZXdheSAiMTkyLjE2OC4xLjEi CgkJICAgIzpuYW1lLXNlcnZlcnMgJygiMTkyLjE2OC4xLjEiICI0Ni4xNy4xMDIuMjQiKSkKCQkg IChzZXJ2aWNlIG9wZW5zc2gtc2VydmljZS10eXBlCgkJCSAgIChvcGVuc3NoLWNvbmZpZ3VyYXRp b24KCQkJICAgICh4MTEtZm9yd2FyZGluZz8gI3QpCgkJCSAgICAocGVybWl0LXJvb3QtbG9naW4g I3QpCgkJCSAgICAoYXV0aG9yaXplZC1rZXlzCgkJCSAgICAgYCgKCQkJICAgICAgICgiZzEiICwo bG9jYWwtZmlsZSAiZ2xjLnB1YiIpKQoJCQkgICAgICAgKCJnbGMiICwobG9jYWwtZmlsZSAiZ2xj LnB1YiIpKQoJCQkgICAgICAgKCJyb290IiAsKGxvY2FsLWZpbGUgImdsYy5wdWIiKSkpKSkpCgkJ ICAoc2VydmljZSByb3R0bG9nLXNlcnZpY2UtdHlwZSkKCQkgIChtY3Jvbi1zZXJ2aWNlIChsaXN0 IGdhcmJhZ2UtY29sbGVjdG9yLWpvYgoJCQkJICAgICAgIHVwZGF0ZWRiLWpvYgoJCQkJICAgICAg IGJhY2t1cC1qb2IpKQoJCSAgKGF2YWhpLXNlcnZpY2UpCgkJICAobnRwLXNlcnZpY2UpCgkJICAo c2VydmljZSBndWl4LXB1Ymxpc2gtc2VydmljZS10eXBlCgkJCSAgIChndWl4LXB1Ymxpc2gtY29u ZmlndXJhdGlvbgoJCQkgICAgKGhvc3QgIjAuMC4wLjAiKQoJCQkgICAgKHBvcnQgODA4MCkpKQkJ ICAKCQkgICVteS1zZXJ2aWNlcykpCiAobmFtZS1zZXJ2aWNlLXN3aXRjaCAlbWRucy1ob3N0LWxv b2t1cC1uc3MpKQo= --=-=-= Content-Type: application/octet-stream Content-Disposition: attachment; filename=setup.log.gz Content-Transfer-Encoding: base64 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 +w6+ncJPF98BFAHhMx/JAAA= --=-=-=--