Package: x42-plugins
Version: 20160619-1
Severity: normal
Tags: upstream patch
User: reproducible-bui...@lists.alioth.debian.org
Usertags: environment

Dear Maintainer,

While working on the “reproducible builds” effort, we have noticed that
x42-plugins could not be built reproducibly; the diff between two
builds is:

    
https://tests.reproducible-builds.org/debian/dbdtxt/unstable/amd64/x42-plugins_20160619-1.diffoscope.txt
    │   │   │   ├── ./usr/lib/lv2/midimap.lv2/manifest.ttl
    │   │   │   │ @@ -14,43 +14,43 @@
    │   │   │   │  mmpset:lp_thirds_c4_colors
    │   │   │   │       a pset:Preset ;
    │   │   │   │       lv2:appliesTo <http://gareus.org/oss/lv2/midimap> ;
    │   │   │   │ -     rdfs:seeAlso <presets.ttl> .
    │   │   │   │ +\trdfs:seeAlso <presets.ttl> .

This difference is down to midimap.lv2/Makefile [1] calling echo(1) with
an argument that contains a literal backslash.  The behaviour of echo(1)
in that case is (according to POSIX) implementation-defined.  Since
makefiles use echo(1) from the building user's shell, the build output
differs when the building user uses SHELL=bash v. SHELL=dash:

    % LC_ALL=C dash -c 'echo "\t"' | xxd 
    0000000: 090a                                     ..
    % LC_ALL=C bash -c 'echo "\t"' | xxd 
    0000000: 5c74 0a                                  \t.

I believe the attached patch will fix the issue.

Note that when built under bash, pluginlibConfig.cmakep.lv2/manifest.ttl
would contain literal «\t» sequences; I'm not sure what their effect
would be.

Cheers,

Daniel

[1] 
https://sources.debian.net/src/x42-plugins/20160619-1/midimap.lv2/Makefile/#L84
Description: Avoid non-portable shell syntax
Author: Daniel Shahaf <danie...@apache.org>
Bug-Debian: https://bugs.debian.org/-1
Last-Update: 2016-06-25

--- x42-plugins-20160619.orig/midimap.lv2/Makefile
+++ x42-plugins-20160619/midimap.lv2/Makefile
@@ -81,7 +81,7 @@ $(BUILDDIR)manifest.ttl: lv2ttl/manifest
 			>> $(BUILDDIR)manifest.ttl;\
 		head -n 3 $$file \
 			>> $(BUILDDIR)manifest.ttl; \
-		echo "\trdfs:seeAlso <presets.ttl> ." \
+		printf '\trdfs:seeAlso <presets.ttl> .\n' \
 			>> $(BUILDDIR)manifest.ttl;\
 		done
 

Reply via email to