Opened 11 years ago
Closed 11 years ago
#41469 closed defect (fixed)
xxl @1.0.1 +universal variant doesn't install fully universal software
Reported by: | cooljeanius (Eric Gallager) | Owned by: | landonf (Landon Fuller) |
---|---|---|---|
Priority: | Normal | Milestone: | |
Component: | ports | Version: | 2.2.1 |
Keywords: | Cc: | ryandesign (Ryan Carsten Schmidt) | |
Port: | safestr xxl |
Description
Instead of using the installed xxl, safestr tries to build its own xxl, which results in it trying to install a conflicting header:
x ./opt/local/lib/libsafestr.la x ./opt/local/lib/libxxl.1.1.0.dylib x ./opt/local/lib/libxxl.1.dylib x ./opt/local/lib/libxxl.a x ./opt/local/lib/libxxl.dylib x ./opt/local/lib/libxxl.la x ./opt/local/include/safestr-c99.h x ./opt/local/include/safestr.h x ./opt/local/include/xxl.h Error: org.macports.activate for port safestr returned: Image error: /opt/local/include/xxl.h is being used by the active xxl port. Please deactivate this port first, or use 'port -f activate safestr' to force the activation. DEBUG: Error code: registry::image-error DEBUG: Backtrace: Image error: /opt/local/include/xxl.h is being used by the active xxl port. Please deactivate this port first, or use 'port -f activate safestr' to force the activation.
Attachments (2)
Change History (6)
Changed 11 years ago by cooljeanius (Eric Gallager)
comment:1 Changed 11 years ago by cooljeanius (Eric Gallager)
Turns out this is an error with the configure script. Relevant part of the config.log:
configure:18686: checking for xxl_release_asset in -lxxl configure:18717: ccache /usr/bin/gcc-4.2 -o conftest -pipe -Os -arch x86_64 -arch i386 -I/opt/local/include -I/opt/local/include -L/opt/local/lib -Wl,-headerpad_max_install_names -arch x86_64 -arch i386 -L/opt/local/lib conftest.c -lxxl >&5 ld: warning: in /opt/local/lib/libxxl.dylib, file was built for unsupported file format which is not the architecture being linked (i386) Undefined symbols for architecture i386: "_xxl_release_asset", referenced from: _main in ccmKaPxx.o ld: symbol(s) not found for architecture i386 collect2: ld returned 1 exit status
I do have xxl installed universal though:
Local-Admins-MacBook-Pro:~ root# port -d installed xxl The following ports are currently installed: xxl @1.0.1_0+universal (active) platform='darwin 10' archs='i386 x86_64'
and it is providing the library in question:
Local-Admins-MacBook-Pro:~ root# port provides /opt/local/lib/libxxl.dylib /opt/local/lib/libxxl.dylib is provided by: xxl
Apparently the library is only x86_64 though?
Local-Admins-MacBook-Pro:~ root# file /opt/local/lib/libxxl.dylib /opt/local/lib/libxxl.dylib: Mach-O 64-bit dynamically linked shared library x86_64 Local-Admins-MacBook-Pro:~ root# lipo -info /opt/local/lib/libxxl.dylib Non-fat file: /opt/local/lib/libxxl.dylib is architecture: x86_64
Not sure how that happened, seeing as I installed it with +universal
...
Also btw, even though the library is the wrong architecture, it does actually contain the symbol checked for:
Local-Admins-MacBook-Pro:~ root# nm -m /opt/local/lib/libxxl.dylib | grep xxl_release_asset 00000000000007d0 (__TEXT,__text) external _xxl_release_asset
Changed 11 years ago by cooljeanius (Eric Gallager)
Attachment: | config.log added |
---|
full config.log for safestr
comment:2 follow-up: 3 Changed 11 years ago by ryandesign (Ryan Carsten Schmidt)
Cc: | ryandesign@… added; landonf@… removed |
---|---|
Owner: | changed from macports-tickets@… to landonf@… |
Summary: | safestr @1.0.3 depends on xxl but also conflicts with it → xxl @1.0.1 +universal variant doesn't install fully universal software |
The first bug is in the xxl port, which, when the universal variant is used, builds a universal static library but a nonuniversal dynamic library:
$ lipo -info /opt/local/lib/libxxl.{a,dylib} Architectures in the fat file: /opt/local/lib/libxxl.a are: x86_64 i386 Non-fat file: /opt/local/lib/libxxl.dylib is architecture: x86_64
This behavior is common of configure scripts generated with a version of autotools released before Apple introduced Intel Macs in 2006.
If no newer version of xxl is available that fixes this problem, running autoreconf should fix it.
The second bug is in the safestr port, which, instead of exiting with an error when it cannot find xxl, tries to build and install its own bundled copy.
comment:3 Changed 11 years ago by ryandesign (Ryan Carsten Schmidt)
Replying to ryandesign@…:
This behavior is common of configure scripts generated with a version of autotools released before Apple introduced Intel Macs in 2006.
xxl 1.0.1 and safestr 1.0.3 were both released January 30, 2005.
If no newer version of xxl is available that fixes this problem, running autoreconf should fix it.
Those are the latest versions I can see in the wayback machine archive for the projects' homepages. The projects' web sites are currently inaccessible (the server does not respond to http requests).
The second bug is in the safestr port, which, instead of exiting with an error when it cannot find xxl, tries to build and install its own bundled copy.
Plus, safestr has the same problem of not building fully universal software.
comment:4 Changed 11 years ago by ryandesign (Ryan Carsten Schmidt)
Resolution: | → fixed |
---|---|
Status: | new → closed |
main.log for safestr