Bug 11596

Summary: bzip2-ptest: improve reproducible build
Product: [Build System, Metadata & Runtime] OE-Core Reporter: Juro Bystricky <juro.bystricky>
Component: coreAssignee: Cinly Ooi <cinly.ooi>
Status: RESOLVED FIXED QA Contact:
Severity: enhancement    
Priority: Medium CC: meta.mr.watcher, meta.watcher, sgw
Version: 2.4   
Target Milestone: 2.5 M1   
Hardware: x86   
OS: Multiple   
Whiteboard:
OS type for building Yocto: --- Type of Regression: ---
Verified: Documentation change: No (bug/feature does not impact docs)
Attachments:
Description Flags
diffoscope output of two bzip2-ptest debian packages none

Description Juro Bystricky 2017-05-31 17:14:05 UTC
Created attachment 3781 [details]
diffoscope output of two bzip2-ptest debian packages

bzip2-ptest requires Makefile. This file contains numerous references to the host build system (see the attached diffoscope output). These are harmless and also unneeded, as the ptest runs this:

$ make -k runtest

and the "runtest" target in the Makefile is:

runtest:
	./bzip2 -1  < sample1.ref > sample1.rb2
	./bzip2 -2  < sample2.ref > sample2.rb2
	./bzip2 -3  < sample3.ref > sample3.rb2
	./bzip2 -d  < sample1.bz2 > sample1.tst
	./bzip2 -d  < sample2.bz2 > sample2.tst
	./bzip2 -ds < sample3.bz2 > sample3.tst
	@if cmp sample1.bz2 sample1.rb2; then echo "PASS: sample1 compress";\
	else echo "FAIL: sample1 compress"; fi
	@if cmp sample2.bz2 sample2.rb2; then echo "PASS: sample2 compress";\
	else echo "FAIL: sample2 compress"; fi
	@if cmp sample3.bz2 sample3.rb2; then echo "PASS: sample3 compress";\
	else echo "FAIL: sample3 compress"; fi
	@if cmp sample1.tst sample1.ref; then echo "PASS: sample1 decompress";\
	else echo "FAIL: sample1 decompress"; fi
	@if cmp sample2.tst sample2.ref; then echo "PASS: sample2 decompress";\
	else echo "FAIL: sample2 decompress"; fi
	@if cmp sample3.tst sample3.ref; then echo "PASS: sample3 decompress";\
	else echo "FAIL: sample3 decompress"; fi


The references to the host build system prevent the bzip2-ptest package from being binary reproducible.
One option is to sanitize all host references, the other (probably better) is to create/install only the relevant part of the Makefile
Comment 1 Cinly Ooi 2017-09-14 09:49:03 UTC
Patch ready. Followed Juro's second suggestion, i.e.  "... to create/install only the relevant part of the Makefile"
Comment 2 Cinly Ooi 2017-09-21 16:39:55 UTC
Merged into oe-core on 21st Sept 2017

From OE-Core rev: 752a8a02d52cf868d1c182672d6ceb3d455dfa1e