Subject: bug#44835: closed (Re: bug#44835: gnu/ci.go: Embeds build path, breaking reproducible builds)

From: [email-masked] (GNU bug Tracking System)
Date: Thu, 07 Mar 2024 21:48:02 +0000

Your bug report

#44835: gnu/ci.go: Embeds build path, breaking reproducible builds

which was filed against the guix package, has been closed.

The explanation is attached below, along with your original report.
If you require more details, please reply to [email-masked].

-- 
44835: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=44835
GNU Bug Tracking System
Contact [email-masked] with problems

Subject: Re: bug#44835: gnu/ci.go: Embeds build path, breaking reproducible builds
From: Vagrant Cascadian <[email-masked]>
To: Ludovic Courtès <[email-masked]>, Mathieu Othacehe <[email-masked]>
Cc: [email-masked]
Date: Thu, 07 Mar 2024 13:46:01 -0800
List-Id: <debbugs-submit.debbugs.gnu.org>

On 2020-12-03, Ludovic Courtès wrote:
> Mathieu Othacehe <[email-masked]> skribis:
>
>>> … but I don’t think we can assume that the checkout is in the
>>> ‘%load-path’ when this code is executed.  WDYT, Mathieu?
>>
>> Cuirass happens to add checkouts to the %load-path just before loading
>> this file.
>
> Is that systematic?  Isn’t it only when ‘load_path_inputs’ is non-empty?
>
>> I tested your path, it works fine. I think it is acceptable as this (gnu
>> ci) interface needs a big rework anyway.
>>
>> I can apply your patch if it's ok for you.
>
> Sure if you’re confident you can go ahead.  :-)

This looks to have been fixed some time ago in:

  76bea3f8bcd951ded88dfb7f8cad5bc3e5a1701f ci: Remove hydra support.

live well,
  vagrant

Subject: gnu/ci.go: Embeds build path, breaking reproducible builds
From: Vagrant Cascadian <[email-masked]>
To: [email-masked]
Date: Mon, 23 Nov 2020 20:19:54 -0800
List-Id: <debbugs-submit.debbugs.gnu.org>

Something in gnu/ci.scm is embedding the build path when compiled into
gnu/ci.go, as can be seen:

  https://tests.reproducible-builds.org/debian/rb-pkg/experimental/amd64/diffoscope-results/guix.html

  ./usr/lib/x86_64-linux-gnu/guile/3.0/site-ccache/gnu/ci.go
  strings --all --bytes=8 {}
  Offset 85, 15 lines modified	Offset 85, 15 lines modified
  ...
  92 	/build/1st/guix-1.2.0~rc2/gnu/ci.scm	92 	/build/2/guix-1.2.0~rc2/2nd/gnu/ci.scm

While guix builds of guix are typically built with a consistent build
path, it would be nice to fix this issue for other environments where
the build path may vary between builds.

My *wild* guess is it maybe has something to do with the use of
canonicalize-path:

  (define (find-current-checkout arguments)
  "Find the first checkout of ARGUMENTS that provided the current file.
Return #f if no such checkout is found."
  (let ((current-root
         (canonicalize-path
          (string-append (dirname (current-filename)) "/.."))))
    (find (lambda (argument)
            (and=> (assq-ref argument 'file-name)
                   (lambda (name)
                     (string=? name current-root)))) arguments)))

Either directly or indirectly... does canonicalize-path resolve at build
time? run time? somewhere in-between? Or is this a red herring, and
something else entirely is responsible? I'll let a competent schemer
ponder this! :)

Thanks for all your help!

live well,
  vagrant