classification
Title: In tree cross-build fails copying Include/graminit.h to itself
Type: compile error Stage: resolved
Components: Cross-Build Versions: Python 3.6, Python 3.5, Python 2.7
process
Status: closed Resolution: fixed
Dependencies: Superseder:
Assigned To: Nosy List: Alex.Willmer, doko, martin.panter, ned.deily, python-dev, xdegaye
Priority: normal Keywords: patch

Created on 2016-06-05 13:05 by Alex.Willmer, last changed 2016-06-07 06:41 by martin.panter. This issue is now closed.

Files
File name Uploaded Description Edit
graminit-same-file.patch Alex.Willmer, 2016-06-05 13:05 review
vpath.patch xdegaye, 2016-06-05 22:05 review
Messages (7)
msg267417 - (view) Author: Alex Willmer (Alex.Willmer) * Date: 2016-06-05 13:05
While trying a cross compile of Python 3.6 I encountered the following

alex@martha:~/src/cpython default☿ hg summary
parent: 101753:31ad7885e2e5 
 Issue #27225: Fixed a reference leak in type_new when setting __new__ fails.
branch: default
commit: (clean)
update: (current)

alex@martha:~/src/cpython default☿ ./configure --build=x86_64-linux --host=arm-linux-gnueabihf --disable-ipv6 ac_cv_file__dev_ptc=no ac_cv_file__dev_ptmx=no
checking for hg... found
...
creating Makefile
alex@martha:~/src/cpython default☿ make
...
arm-linux-gnueabihf-gcc -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes   Parser/acceler.o Parser/grammar1.o Parser/listnode.o Parser/node.o Parser/parser.o Parser/bitset.o Parser/metagrammar.o Parser/firstsets.o Parser/grammar.o Parser/pgen.o Objects/obmalloc.o Python/dynamic_annotations.o Python/mysnprintf.o Python/pyctype.o Parser/tokenizer_pgen.o Parser/printgrammar.o Parser/parsetok_pgen.o Parser/pgenmain.o -lpthread -ldl  -lpthread -lutil -o Parser/pgen
if test "yes" != "yes"; then \
	Parser/pgen ./Grammar/Grammar Include/graminit.h Python/graminit.c; \
else \
	cp ./Include/graminit.h Include/graminit.h; \
fi
cp: './Include/graminit.h' and 'Include/graminit.h' are the same file
Makefile:806: recipe for target 'Include/graminit.h' failed
make: *** [Include/graminit.h] Error 1


The attached patch allows me to get past this error. I'm unsure if it's an appropriate fix or just a workaround.
msg267431 - (view) Author: Ned Deily (ned.deily) * (Python committer) Date: 2016-06-05 16:57
The culprit appears to be the changes introduced for Issue22359 (c36b9ef8ff39 and friends).
msg267480 - (view) Author: Xavier de Gaye (xdegaye) * (Python triager) Date: 2016-06-05 22:05
Yes, those changes incorrectly assume that the source directory and the build directory are always different (using VPATH). Alex patch LGTM, this other patch overwrites the graminit.[ch] files, not sure if this is better.
msg267497 - (view) Author: Martin Panter (martin.panter) * (Python committer) Date: 2016-06-06 01:20
I was a little concerned that Alex’s patch used “test A -ef B”, which is not specified by Posix. But it is apparently widely supported (and consider we would only need it for cross compilation). Anyway, I was going to suggest test "$(srcdir)" == "." instead, but maybe Xavier’s solution is slightly better again.

I say go with vpath.patch, perhaps with a brief comment explaining that the cp + mv dance avoids copying the file onto itself when doing an in-tree build.
msg267576 - (view) Author: Roundup Robot (python-dev) (Python triager) Date: 2016-06-07 00:45
New changeset 619f7a2aa40a by Martin Panter in branch '3.5':
Issue #27229: Fix in-tree cross-build rule, by Xavier de Gaye
https://hg.python.org/cpython/rev/619f7a2aa40a

New changeset 9902230b101f by Martin Panter in branch 'default':
Issue #27229: Merge cross-compiling fix from 3.5
https://hg.python.org/cpython/rev/9902230b101f

New changeset ffed402528c7 by Martin Panter in branch '2.7':
Issue #27229: Fix in-tree cross-build rule, by Xavier de Gaye
https://hg.python.org/cpython/rev/ffed402528c7
msg267579 - (view) Author: Roundup Robot (python-dev) (Python triager) Date: 2016-06-07 01:11
New changeset ec214654708f by Martin Panter in branch '2.7':
Issue #27229: Comment in middle of shell command fails on BSD and OS X
https://hg.python.org/cpython/rev/ec214654708f

New changeset de5b85f96266 by Martin Panter in branch '3.5':
Issue #27229: Comment in middle of shell command fails on BSD and OS X
https://hg.python.org/cpython/rev/de5b85f96266

New changeset b7a4c076ba40 by Martin Panter in branch 'default':
Issue #27229: Merge makefile fix from 3.5
https://hg.python.org/cpython/rev/b7a4c076ba40
msg267599 - (view) Author: Martin Panter (martin.panter) * (Python committer) Date: 2016-06-07 06:41
Thanks Alex & Xavier.
History
Date User Action Args
2016-06-07 06:41:23martin.pantersetstatus: open -> closed
resolution: fixed
messages: + msg267599

stage: commit review -> resolved
2016-06-07 01:11:50python-devsetmessages: + msg267579
2016-06-07 00:45:39python-devsetnosy: + python-dev
messages: + msg267576
2016-06-06 01:20:20martin.pantersetstage: commit review
messages: + msg267497
versions: + Python 2.7, Python 3.5
2016-06-05 22:05:37xdegayesetfiles: + vpath.patch

messages: + msg267480
2016-06-05 16:57:47ned.deilysetnosy: + xdegaye, ned.deily, martin.panter
messages: + msg267431
2016-06-05 16:50:51ned.deilysetnosy: + doko
2016-06-05 13:05:40Alex.Willmercreate