[Python-Dev] Bug in build system for cross-platform builds (original) (raw)
Nick Coghlan ncoghlan at gmail.com
Tue Mar 15 04:04:38 EDT 2016
- Previous message (by thread): [Python-Dev] Bug in build system for cross-platform builds
- Next message (by thread): [Python-Dev] Bug in build system for cross-platform builds
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
On 15 March 2016 at 15:15, Martin Panter <vadmium+py at gmail.com> wrote:
The problem is not the reference to Makefile. The graminit files do not depend on Makefile. The bigger problem is that the checked-in files depend on compiled programs. This is a summary of the current rules for importlib:
freezeimportlib.o: freezeimportlib.c Makefile freezeimportlib: freezeimportlib.o [. . .] $(LINKCC) [. . .] importlibexternal.h: bootstrapexternal.py freezeimportlib freezeimportlib bootstrapexternal.py importlibexternal.h importlib.h: bootstrap.py freezeimportlib freezeimportlib bootstrap.py importlib.h So importlib.h depends on the freezeimportlib compiled program (and only indirectly on Makefile). The makefile says we have to compile freezeimportlib before checking if importlib.h is up to date.
Ah, I understand now - the fundamental problem is with a checked in file depending on a non-checked-in file, so if you clean out all the native build artifacts when cross-compiling, the makefile will attempt to create target versions of all the helper utilities (pgen, _freeze_importlib, argument clinic, etc).
Would it help to have a "make bootstrap" target that touched all the checked in generated files with build dependencies on non-checked-in files, but only after first touching the expected locations of the built binaries they depend on?
Cheers, Nick.
-- Nick Coghlan | ncoghlan at gmail.com | Brisbane, Australia
- Previous message (by thread): [Python-Dev] Bug in build system for cross-platform builds
- Next message (by thread): [Python-Dev] Bug in build system for cross-platform builds
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]