On Wed, 18 Feb 2026, "Bernhard M. Wiedemann" <[email protected]> wrote: > On 2/18/26 1:55 PM, Olivier Dion wrote: >> On Wed, 18 Feb 2026, "Bernhard M. Wiedemann" <[email protected]> wrote: >>> Today I reverted that work-around for a test and parallelism still >>> caused variations. >> >> Interesting, so cross-modules inlining is not the only culprit. Do you >> have an idea? If you have a .tar.gz, with two binaries so I could use >> diffoscope on them, that would be great. > > I uploaded 2 rpms to > https://rb.zq1.de/other/guile/ > > With rpm2cpio you can unpack them. > And I uploaded them to diffoscope for you:
But is this the case with Guile core? It seems to me that guile-parted is not reproducible, because of the inlining issue. I attached a small patch (to be applied on top of 0.0.7) that I just copied from the two stages from Guile core. On my system, I managed to make guile-parted reproducible that way.
>From ee847341fb7957dee974919e032b08a77a5ef2a3 Mon Sep 17 00:00:00 2001 From: Olivier Dion <[email protected]> Date: Wed, 18 Feb 2026 12:12:49 -0500 Subject: [PATCH] reproducible --- Makefile.am | 22 ++-------------------- am/compile.am | 41 +++++++++++++++++++++++++++++++++++++++++ configure.ac | 2 +- guile.am | 14 -------------- 4 files changed, 44 insertions(+), 35 deletions(-) create mode 100644 am/compile.am delete mode 100644 guile.am diff --git a/Makefile.am b/Makefile.am index 291a1b4..cfae4ad 100644 --- a/Makefile.am +++ b/Makefile.am @@ -1,22 +1,4 @@ -include guile.am - -moddir=$(prefix)/share/guile/site/$(GUILE_EFFECTIVE_VERSION) -godir=$(libdir)/guile/$(GUILE_EFFECTIVE_VERSION)/site-ccache - -SOURCES = \ - parted.scm \ - parted/bindings.scm \ - parted/config.scm \ - parted/constraint.scm \ - parted/device.scm \ - parted/disk.scm \ - parted/exception.scm \ - parted/filesystem.scm \ - parted/geom.scm \ - parted/unit.scm \ - parted/timer.scm \ - parted/natmath.scm \ - parted/structs.scm +SUBDIRS = stage1 stage2 TESTS = \ tests/constraint.scm \ @@ -40,7 +22,7 @@ AM_SCM_LOG_DRIVER_FLAGS = --brief=yes AM_SCM_LOG_FLAGS = --no-auto-compile -L "$(top_srcdir)" -EXTRA_DIST += \ +EXTRA_DIST = \ pre-inst-env.in \ build-aux/test-driver.scm \ $(TESTS) diff --git a/am/compile.am b/am/compile.am new file mode 100644 index 0000000..0b0dd08 --- /dev/null +++ b/am/compile.am @@ -0,0 +1,41 @@ +vpath %.scm @top_srcdir@ + +SOURCES = \ + parted.scm \ + parted/bindings.scm \ + $(top_builddir)/parted/config.scm \ + parted/constraint.scm \ + parted/device.scm \ + parted/disk.scm \ + parted/exception.scm \ + parted/filesystem.scm \ + parted/geom.scm \ + parted/unit.scm \ + parted/timer.scm \ + parted/natmath.scm \ + parted/structs.scm + +GOBJECTS = $(SOURCES:%.scm=%.go) + +moddir=$(prefix)/share/guile/site/$(GUILE_EFFECTIVE_VERSION) +godir=$(libdir)/guile/$(GUILE_EFFECTIVE_VERSION)/site-ccache + +nobase_mod_DATA = $(SOURCES) $(NOCOMP_SOURCES) +nobase_go_DATA = $(GOBJECTS) + +guile_install_go_files = install-nobase_goDATA +$(guile_install_go_files): install-nobase_modDATA + +CLEANFILES = $(GOBJECTS) +EXTRA_DIST = $(SOURCES) $(NOCOMP_SOURCES) +GUILE_WARNINGS = -Wunbound-variable -Warity-mismatch -Wformat +SUFFIXES = .scm .go + +COMPILE = $(AM_V_GEN) \ + $(top_builddir)/pre-inst-env \ + $(GUILE_TOOLS) compile \ + $(GUILE_TARGET) \ + $(GUILE_WARNINGS) $(GUILE_STAGE_OPTIMIZATIONS) + +.scm.go: + $(COMPILE) -o "$@" "$<" diff --git a/configure.ac b/configure.ac index 210029b..61bbafc 100644 --- a/configure.ac +++ b/configure.ac @@ -24,7 +24,7 @@ AS_IF([test "x$LIBPARTED_LIBDIR" = "x"], [ ]) AC_SUBST([LIBPARTED_LIBDIR]) -AC_CONFIG_FILES([Makefile parted/config.scm]) +AC_CONFIG_FILES([Makefile stage1/Makefile stage2/Makefile parted/config.scm]) AC_CONFIG_FILES([pre-inst-env], [chmod +x pre-inst-env]) if test "$cross_compiling" != no; then diff --git a/guile.am b/guile.am deleted file mode 100644 index 3761e41..0000000 --- a/guile.am +++ /dev/null @@ -1,14 +0,0 @@ -GOBJECTS = $(SOURCES:%.scm=%.go) - -nobase_mod_DATA = $(SOURCES) $(NOCOMP_SOURCES) -nobase_go_DATA = $(GOBJECTS) - -guile_install_go_files = install-nobase_goDATA -$(guile_install_go_files): install-nobase_modDATA - -CLEANFILES = $(GOBJECTS) -EXTRA_DIST = $(SOURCES) $(NOCOMP_SOURCES) -GUILE_WARNINGS = -Wunbound-variable -Warity-mismatch -Wformat -SUFFIXES = .scm .go -.scm.go: - $(AM_V_GEN)$(top_builddir)/pre-inst-env $(GUILE_TOOLS) compile $(GUILE_TARGET) $(GUILE_WARNINGS) -o "$@" "$<" -- 2.52.0
Note that I did not added the logic to install the binaries from stage2. Now I wonder, is Guile core itself reproducible? Thanks, Olivier -- Olivier Dion
