Source: adacgi
Version: 1.6-31
Severity: wishlist
Tags: patch
User: [email protected]
Usertags: buildpath
X-Debbugs-Cc: [email protected]

Hi,

Whilst working on the Reproducible Builds effort [0] we noticed that
adacgi could not be built reproducibly.

This is because it installs /usr/share/gpr/adacgi.gpr that contains
the build flags that it was built with. This causes a problem because
these contain the current build directory, making the package
unreproducible:

     ldflags   := ("-Wl,-z,relro", "-Wl,-z,now", 
"-Wl,--no-allow-shlib-undefined", "-Wl,--no-copy-dt-needed-entries", 
"-Wl,--no-undefined");
 -   adaflags  := ("-g", "-O2", "-ffile-prefix-map=/build/1st/adacgi-1.6=.", 
"-fstack-protector-strong", "", "-gno-record-gcc-switches");
 +   adaflags  := ("-g", "-O2", "-ffile-prefix-map=/build/2/adacgi-1.6/2nd=.", 
"-fstack-protector-strong", "", "-gno-record-gcc-switches");
     soversion := "4";

A patch is attached that will modify this file just prior to
installation, but the better solution may actually belong somewhere
else in Debian's Ada toolchain. Unfortunately, I lack the knowledge
to know precisely where, but hopefully this helps demonstrate the
problem and a route to a solution.

 [0] https://reproducible-builds.org/


Regards,

-- 
      ,''`.
     : :'  :     Chris Lamb
     `. `'`      [email protected] / chris-lamb.co.uk
       `-

--- a/debian/rules      2023-02-06 08:36:58.934987698 -0800
--- b/debian/rules      2023-02-06 09:47:37.153782287 -0800
@@ -34,6 +34,9 @@
        gprinstall debian/adacgi.gpr $(call shared_GPRINSTALLFLAGS,adacgi) \
          -Xsoversion=$(adacgi_SO_VERSION)
 
+execute_before_dh_ada_library:
+       sed -i -e 's@$(CURDIR)@/build@g' debian/tmp/usr/share/gpr/adacgi.gpr
+
 .PHONY: override_dh_installchangelogs
 override_dh_installchangelogs:
        dh_installchangelogs debian/upstream_changelog.txt

Reply via email to