Opened 10 years ago

Closed 10 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)

main.log (61.3 KB) - added by cooljeanius (Eric Gallager) 10 years ago.
main.log for safestr
config.log (54.9 KB) - added by cooljeanius (Eric Gallager) 10 years ago.
full config.log for safestr

Download all attachments as: .zip

Change History (6)

Changed 10 years ago by cooljeanius (Eric Gallager)

Attachment: main.log added

main.log for safestr

comment:1 Changed 10 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 10 years ago by cooljeanius (Eric Gallager)

Attachment: config.log added

full config.log for safestr

comment:2 Changed 10 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 itxxl @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 in reply to:  2 Changed 10 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 10 years ago by ryandesign (Ryan Carsten Schmidt)

Resolution: fixed
Status: newclosed

Fixed xxl in r114011; safestr in r114012.

Note: See TracTickets for help on using tickets.