Opened 12 years ago

Closed 12 years ago

#35443 closed defect (fixed)

py25-pynifti, py26-pynifti: ld: unknown option: --no-undefined

Reported by: ns358@… Owned by: jameskyle@…
Priority: Normal Milestone:
Component: ports Version: 2.1.2
Keywords: Cc: ryandesign (Ryan Carsten Schmidt)
Port: py25-pynifti, py26-pynifti

Description (last modified by ryandesign (Ryan Carsten Schmidt))

Failure to install.

I've tried

sudo port install py26-pynifti configure.compiler=llvm-gcc-4.2
sudo port install py26-pynifti configure.compiler=apple-gcc-4.2 configure.cxx=g++-apple-4.2

and the patch from Ticket #32268 has been applied.

Attachments (1)

main.log (48.8 KB) - added by ns358@… 12 years ago.

Download all attachments as: .zip

Change History (6)

Changed 12 years ago by ns358@…

Attachment: main.log added

comment:1 Changed 12 years ago by ryandesign (Ryan Carsten Schmidt)

Description: modified (diff)
Keywords: clang added
Owner: changed from macports-tickets@… to jameskyle@…
Port: py25-pynifti py26-pynifti added
Summary: py26-pyniftipy25-pynifti, py26-pynifti: ld: unknown option: --no-undefined

Sounds like the project contains a typo: "--no-undefined" should be "-no-undefined" (one leading hyphen, not two). Sounds like that's what #32268 was supposed to have fixed. Maybe there's more than one occurrence of the problem.

Python modules (e.g. py26-pynifti) ignore configure.compiler and instead use the compiler that was used to compile the corresponding python port (e.g. python26) so manually overriding configure.compiler when building a python module has no effect.

Manually adding configure.cxx when setting the compiler to apple-gcc-4.2 has not been necessary since the release of MacPorts 2.0.4; if we still have documentation somewhere saying this is necessary, please let us know where so that we can correct it.

comment:2 in reply to:  1 Changed 12 years ago by ns358@…

Replying to ryandesign@…:

Sounds like the project contains a typo: "--no-undefined" should be "-no-undefined" (one leading hyphen, not two). Sounds like that's what #32268 was supposed to have fixed. Maybe there's more than one occurrence of the problem.

Python modules (e.g. py26-pynifti) ignore configure.compiler and instead use the compiler that was used to compile the corresponding python port (e.g. python26) so manually overriding configure.compiler when building a python module has no effect.

Manually adding configure.cxx when setting the compiler to apple-gcc-4.2 has not been necessary since the release of MacPorts 2.0.4; if we still have documentation somewhere saying this is necessary, please let us know where so that we can correct it.

Thanks. I have removed the extra '-' from patch-setup-py.diff but still get the error (see below). Am I missing something?

The suggestion of the configure.compliers etc was from the previous ticket.

--- setup.py.orig	2009-03-04 03:13:23.000000000 +1100
+++ setup.py	2012-06-25 12:54:38.000000000 +1000
@@ -21,7 +21,7 @@
 # Common configuration #
 ########################
 
-extra_link_args = ['--Wl,-no-undefined']
+extra_link_args = ['-Wl,-no-undefined']
 include_dirs = []
 library_dirs = []
 defines = []
@@ -45,11 +45,8 @@
 else:
     # try to look for nifticlibs in some place
     if not sys.platform.startswith('win'):
-        include_dirs += ['/usr/include/nifti',
-                         '/usr/include/nifticlibs',
-                         '/usr/local/include/nifti',
-                         '/usr/local/include/nifticlibs',
-                         '/usr/local/include']
+        include_dirs += ['@@PREFIX@@/include/nifti']
+        library_dirs.append('@@PREFIX@@/lib')
     else:
         # no clue on windows
         pass
Last edited 12 years ago by ryandesign (Ryan Carsten Schmidt) (previous) (diff)

comment:3 in reply to:  1 Changed 12 years ago by jmroot (Joshua Root)

Replying to ryandesign@…:

Python modules (e.g. py26-pynifti) ignore configure.compiler and instead use the compiler that was used to compile the corresponding python port (e.g. python26) so manually overriding configure.compiler when building a python module has no effect.

This is not true in general.

comment:4 Changed 12 years ago by jmroot (Joshua Root)

Keywords: clang removed

Besides which, the log clearly shows llvm-gcc-4.2 being used.

comment:5 Changed 12 years ago by ryandesign (Ryan Carsten Schmidt)

Cc: ryandesign@… added
Resolution: fixed
Status: newclosed

Ok yes, I confirm that even if we fix setup.py to use "extra_link_args = ['-Wl,-no-undefined']" we still get the error:

/usr/bin/clang -isysroot / -L/opt/local/lib -bundle -undefined dynamic_lookup -m64 build/temp.macosx-10.8-x86_64-2.6/build/src.macosx-10.8-x86_64-2.6/nifti/clib_wrap.o -L/opt/local/lib -lniftiio -o build/lib.macosx-10.8-x86_64-2.6/nifti/_clib.so -Wl,-no-undefined -bundle
ld: unknown option: -no-undefined

I think ld is getting confused because we're asking for both "-undefined dynamic_lookup" (comes from python's config/Makefile) and "-no-undefined" (comes from pynifti's setup.py). I also see "-bundle" is specified twice, once from each, which is unnecessary.

I think it's safe to remove the duplicate and conflicting options from pynifti's setup.py and just use the options python sets. Done with some other changes in r98768.

Note: See TracTickets for help on using tickets.