classification
Title: move pygetopt.h into internal/
Type: enhancement Stage: resolved
Components: Interpreter Core Versions: Python 3.7
process
Status: closed Resolution: fixed
Dependencies: Superseder:
Assigned To: Nosy List: benjamin.peterson, db3l, ned.deily, ronaldoussoren
Priority: normal Keywords: patch

Created on 2017-12-09 22:08 by benjamin.peterson, last changed 2018-11-12 15:31 by vstinner. This issue is now closed.

Pull Requests
URL Status Linked Edit
PR 4830 merged benjamin.peterson, 2017-12-13 07:26
PR 4909 merged benjamin.peterson, 2017-12-17 18:15
PR 10275 vstinner, 2018-11-12 15:31
Messages (6)
msg307925 - (view) Author: Benjamin Peterson (benjamin.peterson) * (Python committer) Date: 2017-12-09 22:08
This header has no public functions. It shouldn't be distributed.
msg308367 - (view) Author: Benjamin Peterson (benjamin.peterson) * (Python committer) Date: 2017-12-15 07:48
New changeset e425bd75177ffb7f098bdb0618b4a5ba3211fe52 by Benjamin Peterson in branch 'master':
move pygetopt.h to internal (closes bpo-32264) (#4830)
https://github.com/python/cpython/commit/e425bd75177ffb7f098bdb0618b4a5ba3211fe52
msg308482 - (view) Author: David Bolen (db3l) Date: 2017-12-17 01:13
This commit appears to have broken OSX installer builds using the build-installer.py script (as in the last two attempts on the bolen-dmg-3.x builder), confirmed with a bisection from the first failing worker build (covering the range 02a0a19..3327a2d)

It fails during the main python compilation with:

ld: multiple definitions of symbol __PyOS_optarg
libpython3.7m.a(getopt.o) definition of __PyOS_optarg in section (__DATA,__data)
libpython3.7m.a(main.o) definition of __PyOS_optarg in section (__DATA,__common)
ld: multiple definitions of symbol __PyOS_opterr

(repeated for the various __PyOS__opt* symbols.

It doesn't seem to be a problem with a simple manual configure/make build (probably why the regular OSX workers aren't failing).  

So best guess at the moment is it's related to one of the extra configure options used by the build-installer script.  I'm not sure which of the commit or build process needs correction, although reverting this at least temporarily would resolve the immediate issue.
msg308483 - (view) Author: David Bolen (db3l) Date: 2017-12-17 02:03
After some further testing, it does not appear to be configure related but something environmental (maybe MACOSX_DEPLOYMENT_TARGET) - using the same configure options manually as build-installer seems ok.

For what it's worth, since there do appear to be duplicate definitions in pygetopt.h and getopt.c, adding "extern" to the declarations in pygetopt.h appears to resolve the issue.  It looks like that was lost with the removal of PyAPI_DATA.
msg308492 - (view) Author: Benjamin Peterson (benjamin.peterson) * (Python committer) Date: 2017-12-17 18:16
Thanks the report and debugging. You're exactly right—I forgot to add extern.
msg308494 - (view) Author: Benjamin Peterson (benjamin.peterson) * (Python committer) Date: 2017-12-17 18:34
New changeset 4c72bc4a38eced10a55ba7071e084b26a2b5ed4b by Benjamin Peterson in branch 'master':
add 'extern' to pygetopt.h symbols, so then don't end up in comdat (#4909)
https://github.com/python/cpython/commit/4c72bc4a38eced10a55ba7071e084b26a2b5ed4b
History
Date User Action Args
2018-11-12 15:31:47vstinnersetpull_requests: + pull_request9747
2017-12-17 18:34:02benjamin.petersonsetmessages: + msg308494
2017-12-17 18:16:14benjamin.petersonsetmessages: + msg308492
2017-12-17 18:15:35benjamin.petersonsetpull_requests: + pull_request4803
2017-12-17 02:03:44db3lsetmessages: + msg308483
2017-12-17 01:13:48db3lsetnosy: + db3l, ronaldoussoren, ned.deily
messages: + msg308482
2017-12-15 07:48:14benjamin.petersonsetstatus: open -> closed
resolution: fixed
messages: + msg308367

stage: patch review -> resolved
2017-12-13 07:26:24benjamin.petersonsetkeywords: + patch
stage: patch review
pull_requests: + pull_request4722
2017-12-09 22:08:43benjamin.petersoncreate