You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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.
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.
Activity
benjaminp commentedon Dec 9, 2017
This header has no public functions. It shouldn't be distributed.
benjaminp commentedon Dec 15, 2017
New changeset e425bd7 by Benjamin Peterson in branch 'master':
move pygetopt.h to internal (closes bpo-32264) (bpo-4830)
e425bd7
db3l commentedon Dec 17, 2017
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.
db3l commentedon Dec 17, 2017
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.
benjaminp commentedon Dec 17, 2017
Thanks the report and debugging. You're exactly right—I forgot to add extern.
benjaminp commentedon Dec 17, 2017
New changeset 4c72bc4 by Benjamin Peterson in branch 'master':
add 'extern' to pygetopt.h symbols, so then don't end up in comdat (bpo-4909)
4c72bc4