Source: gpick
Version: 0.2.6~rc1-3
Severity: wishlist
Tags: patch
User: reproducible-bui...@lists.alioth.debian.org
Usertags: buildpath
X-Debbugs-Cc: reproducible-b...@lists.alioth.debian.org
Hi,
Whilst working on the Reproducible Builds effort [0] we noticed that
gpick could not be built reproducibly.
This is because it embeds the absolute build directory via a LOCALEDIR
definition:
- 0x000a98c0 2f627569 6c642f31 /build/1
- 0x000a98d0 73742f67 7069636b 2d302e32 2e367e72 st/gpick-0.2.6~r
- 0x000a98e0 63312f64 65626961 6e2f6770 69636b2f c1/debian/gpick/
- 0x000a98f0 7573722f 73686172 652f6c6f 63616c65 usr/share/locale
- 0x000a9900 6661696c 65642074 failed t
+ 0x000a98c0 2f627569 6c642f32 /build/2
+ 0x000a98d0 2f677069 636b2d30 2e322e36 7e726331 /gpick-0.2.6~rc1
+ 0x000a98e0 2f326e64 2f646562 69616e2f 67706963 /2nd/debian/gpic
+ 0x000a98f0 6b2f7573 722f7368 6172652f 6c6f6361 k/usr/share/loca
+ 0x000a9900 6c65 6661696c 65642074 le..failed t
A patch is attached -- very much a proof of concept -- that hacks the
upstream SConscript file to obey the LOCALEDIR UNIX environment
variable; Scons seems to have it's own idea of what an environment is
which I don't immediately grok. (Maybe you can do it via the command-
line in debian/rules but I can't quite figure that out.)
[0] https://reproducible-builds.org/
Regards,
--
,''`.
: :' : Chris Lamb
`. `'` la...@debian.org / chris-lamb.co.uk
`-
--- a/debian/patches/08_reproducible_build.patch1970-01-01
01:00:00.0 +0100
--- b/debian/patches/08_reproducible_build.patch2020-04-13
11:49:16.474797776 +0100
@@ -0,0 +1,15 @@
+Description: Make the build reproducible
+Author: Chris Lamb
+Last-Update: 2020-04-13
+
+--- gpick-0.2.6~rc1.orig/SConscript
gpick-0.2.6~rc1/SConscript
+@@ -10,7 +10,7 @@ env = GpickEnvironment(ENV=os.environ, B
+
+ vars = Variables(os.path.join(env.GetLaunchDir(), 'user-config.py'))
+ vars.Add('DESTDIR', 'Directory to install under', '/usr/local')
+-vars.Add('LOCALEDIR', 'Path to locale directory', '')
++vars.Add('LOCALEDIR', 'Path to locale directory', os.environ.get('LOCALEDIR',
''))
+ vars.Add('DEBARCH', 'Debian package architecture', 'i386')
+ vars.Add(BoolVariable('ENABLE_NLS', 'Compile with gettext support', True))
+ vars.Add(BoolVariable('DEBUG', 'Compile with debug information', False))
--- a/debian/patches/series 2020-04-13 10:37:49.183261253 +0100
--- b/debian/patches/series 2020-04-13 11:49:15.734785870 +0100
@@ -4,3 +4,4 @@
05_scons_python3.patch
06_fix_python_indentation.patch
07_environment_variable_version.patch
+08_reproducible_build.patch
--- a/debian/rules 2020-04-13 10:37:49.183261253 +0100
--- b/debian/rules 2020-04-13 11:48:11.581744647 +0100
@@ -7,6 +7,8 @@
CXXFLAGS+=$(CPPFLAGS)
LDFLAGS += -Wl,--as-needed
+export LOCALEDIR = /usr/share/locale
+
debian_destdir :=$(CURDIR)/debian/gpick/usr
%:
@@ -15,7 +17,7 @@
override_dh_clean:
dh_testdir
dh_testroot
- scons -c -C src
+ scons -c -C src LOCALE_DIR=loldongs
find -name "*.pyc" -delete
rm -f build-stamp configure-stamp
rm -rf .sconsign.dblite config.log .sconf_temp/ build/
--- a/debian/source/include-binaries1970-01-01 01:00:00.0 +0100
--- b/debian/source/include-binaries2020-04-13 11:48:40.018208428 +0100
@@ -0,0 +1,10 @@
+.sconf_temp/conftest_5
+.sconf_temp/conftest_5.o
+tools/__pycache__/__init__.cpython-38.pyc
+tools/__pycache__/flex.cpython-38.pyc
+tools/__pycache__/gettext.cpython-38.pyc
+tools/__pycache__/gpick.cpython-38.pyc
+tools/__pycache__/lemon.cpython-38.pyc
+tools/__pycache__/ragel.cpython-38.pyc
+tools/__pycache__/resource_template.cpython-38.pyc
+tools/__pycache__/template.cpython-38.pyc