mbox series

[bug#70380,v2,0/3] Reproducible `make dist' tarball: Avoid override stamp-N warnings.

Message ID cover.1713190364.git.janneke@gnu.org
Headers show
Series Reproducible `make dist' tarball: Avoid override stamp-N warnings. | expand

Message

Janneke Nieuwenhuizen April 15, 2024, 2:27 p.m. UTC
V2 fixes embarrasing typos in 1/3 that should have prevented for this patch to
build a reproducible tarball at all.  Most probably I only tested a previous
version where mdate-from-git was a plain shell script.

Janneke Nieuwenhuizen (3):
  maint: Generate doc/version[-LANG].texi using `mdate-from-git.scm'.
  Revert "maint: Generate 'doc/version-LANG.texi' reproducibly."
  Revert "maint: Generate 'doc/version.texi' reproducibly."

 bootstrap                    |  8 +++-
 build-aux/mdate-from-git.scm | 86 ++++++++++++++++++++++++++++++++++++
 doc/local.mk                 | 32 --------------
 3 files changed, 93 insertions(+), 33 deletions(-)
 create mode 100755 build-aux/mdate-from-git.scm


base-commit: e5dda412c2e28fb65a549824f492895e72c33813

Comments

pelzflorian (Florian Pelz) April 16, 2024, 7:33 a.m. UTC | #1
Hi again, Jan.

Janneke Nieuwenhuizen <janneke@gnu.org> writes:
> V2 fixes embarrasing typos in 1/3 that should have prevented for this patch to
> build a reproducible tarball at all.  Most probably I only tested a previous
> version where mdate-from-git was a plain shell script.
>
> Janneke Nieuwenhuizen (3):
>   maint: Generate doc/version[-LANG].texi using `mdate-from-git.scm'.
>   Revert "maint: Generate 'doc/version-LANG.texi' reproducibly."
>   Revert "maint: Generate 'doc/version.texi' reproducibly."

It all looked great when reading, but sorry to say, there are errors.  I
run “make dist” from a “make dist”-generated tarball and get (with
LC_ALL=C):

 HELP2MAN doc/guix-style.1
 HELP2MAN doc/guix-system.1
 HELP2MAN doc/guix-time-machine.1
 HELP2MAN doc/guix-weather.1
  HELP2MAN doc/guix.1
  CXX      nix/nix-daemon/guix_daemon-guix-daemon.o
  CXXLD    guix-daemon
  HELP2MAN doc/guix-daemon.1
make[2]: *** No rule to make target 'build-aux/mdate-sh', needed by 'distdir-am'.  Stop.
make[2]: Leaving directory '/home/florian/src/guix-1.3.0.57920-346e22'
make[1]: *** [Makefile:6570: distdir] Error 2
make[1]: Leaving directory '/home/florian/src/guix-1.3.0.57920-346e22'
make: *** [Makefile:6679: dist] Error 2


Alarming is also, when I run “make -j6” from a generated tarball, it
fails.  I had not tested this previously but should have.  Arrgh.  The
error message about an error at Makefile:6301 gives me no clue.  “make”
runs almost through, though, except for the above error.  Strange.  Does
it work for you?

Something else less relevant, when running “./bootstrap && ./configure
--localstatedir=/var --sysconfdir=/etc” from a generated tarball, it
prints many harmless errors:

Copying file m4/visibility.m4
Copying file m4/wchar_t.m4
Copying file m4/wint_t.m4
Copying file m4/xsize.m4
Copying file po/guix/Makevars.template
Copying file po/packages/Makevars.template
autoreconf: running: aclocal --force -I m4
sh: line 1: build-aux/git-version-gen: Datei oder Verzeichnis nicht gefunden
sh: line 1: build-aux/git-version-gen: Datei oder Verzeichnis nicht gefunden
sh: line 1: build-aux/git-version-gen: Datei oder Verzeichnis nicht gefunden
sh: line 1: build-aux/git-version-gen: Datei oder Verzeichnis nicht gefunden
sh: line 1: build-aux/git-version-gen: Datei oder Verzeichnis nicht gefunden
sh: line 1: build-aux/git-version-gen: Datei oder Verzeichnis nicht gefunden
sh: line 1: build-aux/git-version-gen: Datei oder Verzeichnis nicht gefunden
sh: line 1: build-aux/git-version-gen: Datei oder Verzeichnis nicht gefunden
sh: line 1: build-aux/git-version-gen: Datei oder Verzeichnis nicht gefunden
sh: line 1: build-aux/git-version-gen: Datei oder Verzeichnis nicht gefunden
sh: line 1: build-aux/git-version-gen: Datei oder Verzeichnis nicht gefunden
autoreconf: configure.ac: tracing
sh: line 1: build-aux/git-version-gen: No such file or directory
sh: line 1: build-aux/git-version-gen: No such file or directory
sh: line 1: build-aux/git-version-gen: No such file or directory
sh: line 1: build-aux/git-version-gen: No such file or directory
sh: line 1: build-aux/git-version-gen: No such file or directory
sh: line 1: build-aux/git-version-gen: No such file or directory
sh: line 1: build-aux/git-version-gen: No such file or directory
sh: line 1: build-aux/git-version-gen: No such file or directory
sh: line 1: build-aux/git-version-gen: No such file or directory
sh: line 1: build-aux/git-version-gen: No such file or directory
sh: line 1: build-aux/git-version-gen: No such file or directory
autoreconf: configure.ac: not using Libtool
autoreconf: running: /gnu/store/4q6xf35c45c2a7xrw8brdgqn20cgb4bx-autoconf-2.69/bin/autoconf --force
sh: line 1: build-aux/git-version-gen: No such file or directory
sh: line 1: build-aux/git-version-gen: No such file or directory
sh: line 1: build-aux/git-version-gen: No such file or directory
sh: line 1: build-aux/git-version-gen: No such file or directory
sh: line 1: build-aux/git-version-gen: No such file or directory
sh: line 1: build-aux/git-version-gen: No such file or directory
sh: line 1: build-aux/git-version-gen: No such file or directory
sh: line 1: build-aux/git-version-gen: No such file or directory
sh: line 1: build-aux/git-version-gen: No such file or directory
sh: line 1: build-aux/git-version-gen: No such file or directory
sh: line 1: build-aux/git-version-gen: No such file or directory
autoreconf: running: /gnu/store/4q6xf35c45c2a7xrw8brdgqn20cgb4bx-autoconf-2.69/bin/autoheader --force
sh: line 1: build-aux/git-version-gen: Datei oder Verzeichnis nicht gefunden
sh: line 1: build-aux/git-version-gen: Datei oder Verzeichnis nicht gefunden
sh: line 1: build-aux/git-version-gen: Datei oder Verzeichnis nicht gefunden
sh: line 1: build-aux/git-version-gen: Datei oder Verzeichnis nicht gefunden
sh: line 1: build-aux/git-version-gen: Datei oder Verzeichnis nicht gefunden
sh: line 1: build-aux/git-version-gen: Datei oder Verzeichnis nicht gefunden
sh: line 1: build-aux/git-version-gen: Datei oder Verzeichnis nicht gefunden
sh: line 1: build-aux/git-version-gen: Datei oder Verzeichnis nicht gefunden
sh: line 1: build-aux/git-version-gen: Datei oder Verzeichnis nicht gefunden
sh: line 1: build-aux/git-version-gen: Datei oder Verzeichnis nicht gefunden
sh: line 1: build-aux/git-version-gen: Datei oder Verzeichnis nicht gefunden
autoreconf: running: automake --add-missing --copy --force-missing
sh: line 1: build-aux/git-version-gen: No such file or directory
sh: line 1: build-aux/git-version-gen: No such file or directory
sh: line 1: build-aux/git-version-gen: No such file or directory
sh: line 1: build-aux/git-version-gen: No such file or directory
sh: line 1: build-aux/git-version-gen: No such file or directory
sh: line 1: build-aux/git-version-gen: No such file or directory
sh: line 1: build-aux/git-version-gen: No such file or directory
sh: line 1: build-aux/git-version-gen: No such file or directory
sh: line 1: build-aux/git-version-gen: No such file or directory
sh: line 1: build-aux/git-version-gen: No such file or directory
sh: line 1: build-aux/git-version-gen: No such file or directory
Makefile.am:922: warning: AM_GNU_GETTEXT used but 'po' not in SUBDIRS
autoreconf: Leaving directory `.'
+ chmod +w build-aux/mdate-sh
+ rm -f build-aux/mdate-sh
+ ln -s mdate-from-git.scm build-aux/mdate-sh
checking for a BSD-compatible install... /gnu/store/gfcvx5bbybpvc5dbq32dra04ncrvdhn9-profile/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... /gnu/store/gfcvx5bbybpvc5dbq32dra04ncrvdhn9-profile/bin/mkdir -p
checking for gawk... gawk
checking whether make sets $(MAKE)... yes


(“Datei oder Verzeichnis nicht gefunden” is German for “No such file or
directory”, so it sometimes gets translated and sometimes not.  Possibly
it is related to your patches, possibly not; I have not tested without
patches.)

Regards,
Florian
pelzflorian (Florian Pelz) April 16, 2024, 7:38 a.m. UTC | #2
I’ve reported wrongly,

"pelzflorian (Florian Pelz)" <pelzflorian@pelzflorian.de> writes:
> make[2]: *** No rule to make target 'build-aux/mdate-sh', needed by 'distdir-am'.  Stop.
> make[2]: Leaving directory '/home/florian/src/guix-1.3.0.57920-346e22'
> make[1]: *** [Makefile:6570: distdir] Error 2
> make[1]: Leaving directory '/home/florian/src/guix-1.3.0.57920-346e22'
> make: *** [Makefile:6679: dist] Error 2
>
>
> Alarming is also, when I run “make -j6” from a generated tarball, it
> fails.  I had not tested this previously but should have.  Arrgh.  The
> error message about an error at Makefile:6301 gives me no clue.  “make”
> runs almost through, though, except for the above error.

It was not the above mdate-sh error.  The error running make from a
tarball is

[100%] GUILEC   guix/scripts/time-machine.go
[100%] GUILEC   guix/scripts/copy.go
[100%] GUILEC   guix/scripts/discover.go
[100%] GUILEC   guix/scripts/offload.go
  HELP2MAN doc/guix-daemon.1
make[2]: *** No rule to make target 'etc/git/pre-push', needed by '.git/hooks/pre-push'.  Stop.
make[2]: Leaving directory '/home/florian/guix-1.3.0.57920-346e22'
make[1]: *** [Makefile:6301: all-recursive] Error 1
make[1]: Leaving directory '/home/florian/guix-1.3.0.57920-346e22'
make: *** [Makefile:4368: all] Error 2

Regards,
Florian
Janneke Nieuwenhuizen April 17, 2024, 8:10 a.m. UTC | #3
pelzflorian (Florian Pelz) writes:

Hi!

> I’ve reported wrongly,

Ah, phew.  And thanks for testing!

> "pelzflorian (Florian Pelz)" <pelzflorian@pelzflorian.de> writes:
>> make[2]: *** No rule to make target 'build-aux/mdate-sh', needed by 'distdir-am'.  Stop.
>> make[2]: Leaving directory '/home/florian/src/guix-1.3.0.57920-346e22'
>> make[1]: *** [Makefile:6570: distdir] Error 2
>> make[1]: Leaving directory '/home/florian/src/guix-1.3.0.57920-346e22'
>> make: *** [Makefile:6679: dist] Error 2
>>
>>
>> Alarming is also, when I run “make -j6” from a generated tarball, it
>> fails.  I had not tested this previously but should have.  Arrgh.  The
>> error message about an error at Makefile:6301 gives me no clue.  “make”
>> runs almost through, though, except for the above error.
>
> It was not the above mdate-sh error.  The error running make from a
> tarball is
>
> [100%] GUILEC   guix/scripts/time-machine.go
> [100%] GUILEC   guix/scripts/copy.go
> [100%] GUILEC   guix/scripts/discover.go
> [100%] GUILEC   guix/scripts/offload.go
>   HELP2MAN doc/guix-daemon.1
> make[2]: *** No rule to make target 'etc/git/pre-push', needed by '.git/hooks/pre-push'.  Stop.
> make[2]: Leaving directory '/home/florian/guix-1.3.0.57920-346e22'
> make[1]: *** [Makefile:6301: all-recursive] Error 1
> make[1]: Leaving directory '/home/florian/guix-1.3.0.57920-346e22'
> make: *** [Makefile:4368: all] Error 2

Okay, this reproduces.  I didn't think about this scenario test this at
all...  V3 comes with an extra commit to cater for this.

Greetings,
Janneke