[Buildroot] [PATCH v4 13/18] python2: generate reproducible .pyc

Arnout Vandecappelle arnout at mind.be
Thu Nov 24 19:06:55 UTC 2016



On 23-11-16 23:05, Thomas Petazzoni wrote:
> Hello,
> 
> On Wed, 23 Nov 2016 13:58:52 +0100, Jérôme Pouiller wrote:
>> .pyc files contain modification time of .py source. In order to make
>> build reproducible, we fix modification time of all .py before to
>> compile .pyc files.
> 
> "before to compile" -> "before compiling".
> 
>> diff --git a/package/python/python.mk b/package/python/python.mk
>> index cc65376..c17b267 100644
>> --- a/package/python/python.mk
>> +++ b/package/python/python.mk
>> @@ -226,10 +226,18 @@ PYTHON_PATH = $(TARGET_DIR)/usr/lib/python$(PYTHON_VERSION_MAJOR)/sysconfigdata/
>>  $(eval $(autotools-package))
>>  $(eval $(host-autotools-package))
>>  
>> +ifeq ($(BR2_REPRODUCIBLE),y)
>> +define PYTHON_FIX_TIME
>> +find $(TARGET_DIR)/usr/lib/python$(PYTHON_VERSION_MAJOR) -name '*.py' -print0 | \
>> +		xargs -0 --no-run-if-empty touch -d @$(SOURCE_DATE_EPOCH)
>> +endef
>> +PYTHON_TARGET_FINALIZE_HOOKS += PYTHON_FIX_TIME
>> +endif
>> +
>>  define PYTHON_CREATE_PYC_FILES
>>  	PYTHONPATH="$(PYTHON_PATH)" \
> 
> It would make more sense to just do:
> 
> 	$(PYTHON_FIX_TIME)
> 
> here, rather than registering it as a PYTHON_TARGET_FINALIZE_HOOKS.

 No. It iterates over all python files in $(TARGET_DIR), not just the ones
installed by this package, so it really should be a TARGET_FINALIZE_HOOK.


 Regards,
 Arnout



> Also, maybe it should be named PYTHON_SET_PY_FILES_TIME.
> 
>>  	$(HOST_DIR)/usr/bin/python$(PYTHON_VERSION_MAJOR) \
>> -		support/scripts/pycompile.py \
>> +		support/scripts/pycompile.py $(if $(BR2_REPRODUCIBLE),--force) \
> 
> Why do we need to force?
> 
> Thomas
> 

-- 
Arnout Vandecappelle                          arnout at mind be
Senior Embedded Software Architect            +32-16-286500
Essensium/Mind                                http://www.mind.be
G.Geenslaan 9, 3001 Leuven, Belgium           BE 872 984 063 RPR Leuven
LinkedIn profile: http://www.linkedin.com/in/arnoutvandecappelle
GPG fingerprint:  7493 020B C7E3 8618 8DEC 222C 82EB F404 F9AC 0DDF



More information about the buildroot mailing list