#22610 closed defect (fixed)
apr-util port installed with x86_64 architecture only
Reported by: | lucien.gentis@… | Owned by: | danielluke (Daniel J. Luke) |
---|---|---|---|
Priority: | Normal | Milestone: | |
Component: | ports | Version: | 1.8.1 |
Keywords: | Cc: | nerdling (Jeremy Lavergne), neil_mayhew@…, eemeli.kantola@…, nicos_pavlov@…, david.darais@…, benjamin@…, michaelsafyan@… | |
Port: | apr-util apache2 |
Description (last modified by jmroot (Joshua Root))
Hello,
Machine : iMac - Intel Core 2 Duo System : Mac OS X 10.6.2
I wanted to build apache2 port via command "sudo port install apache2", and got following error :
*
/opt/local/share/apr-1/build/libtool --silent --mode=link /usr/bin/gcc-4.2 -I/opt/local/include -O2 -arch x86_64 -arch i386 -L/opt/local/lib/db46 -L/opt/local/lib -arch x86_64 -arch i386 -o htpasswd htpasswd.lo -L/opt/local/lib -lpcre /opt/local/lib/libaprutil-1.la -ldb-4.6 -lexpat -liconv /opt/local/lib/libapr-1.la -lpthread /opt/local/share/apr-1/build/libtool --silent --mode=link /usr/bin/gcc-4.2 -I/opt/local/include -O2 -arch x86_64 -arch i386 -L/opt/local/lib/db46 -L/opt/local/lib -arch x86_64 -arch i386 -o htdigest htdigest.lo -L/opt/local/lib -lpcre /opt/local/lib/libaprutil-1.la -ldb-4.6 -lexpat -liconv /opt/local/lib/libapr-1.la -lpthread ld: warning: in /opt/local/lib/libaprutil-1.dylib, file is not of required architecture Undefined symbols for architecture i386: "_apr_sha1_base64", referenced from: _main in htpasswd.o "_apr_md5_encode", referenced from: _main in htpasswd.o ld: symbol(s) not found for architecture i386 collect2: ld returned 1 exit status lipo: can't open input file: /var/tmp//ccXvh5lT.out (No such file or directory) make[2]: *** [htpasswd] Error 1 make[2]: *** Waiting for unfinished jobs.... ld: warning: in /opt/local/lib/libaprutil-1.dylib, file is not of required architecture Undefined symbols for architecture i386: "_apr_md5_update", referenced from: _add_password in htdigest.o "_apr_md5_final", referenced from: _add_password in htdigest.o "_apr_md5_init", referenced from: _add_password in htdigest.o ld: symbol(s) not found for architecture i386 collect2: ld returned 1 exit status lipo: can't open input file: /var/tmp//cczMWGnn.out (No such file or directory) make[2]: *** [htdigest] Error 1 make[1]: *** [all-recursive] Error 1 make: *** [all-recursive] Error 1 Error: Status 1 encountered during processing.
*
apache2 tries to build with both architectures x86_64 and i386, and apr-util builds only with x86_64 architecture whatever value has parameter build_arch in macport.conf
command "file /opt/local/lib/libaprutil-1.0.3.9.dylib" only returns :
/opt/local/lib/libaprutil-1.0.3.9.dylib: Mach-O 64-bit dynamically linked shared library x86_64
The only way I found to install apache2 was to set universal_archs to x86_64 in macport.conf, which is not very "clean".
Summary :
- apr-util builds with x86_64 architecture only, even if build_arch parameter is set to a value of "x86_64 i386"
- apache2 tries to build with both x86_64 and i386 architectures, but it should only build with x86_64 as I work on iMac (64 bits) under Snow Leopard (as said in comments for build_arch parameter in macport.conf)
Lucien
Attachments (4)
Change History (24)
comment:1 Changed 15 years ago by danielluke (Daniel J. Luke)
Owner: | changed from macports-tickets@… to dluke@… |
---|
comment:2 Changed 15 years ago by nerdling (Jeremy Lavergne)
Cc: | snc@… added |
---|
comment:3 Changed 15 years ago by jmroot (Joshua Root)
Description: | modified (diff) |
---|
comment:4 follow-up: 5 Changed 15 years ago by neil_mayhew@…
However, I do want universal since wxWidgets is currently 32-bit-only because it still uses Carbon. Any program that uses wxWidgets needs to be 32-bit and therefore needs 32-bit versions of all the libraries it uses. I need to have +universal
set in my variants.conf
but any port that depends on apr-util is currently broken.
comment:5 follow-up: 6 Changed 15 years ago by danielluke (Daniel J. Luke)
Replying to neil_mayhew@…:
However, I do want universal
Can you attach your failed build log for apr-util 64/32 bit universal, please?
Changed 15 years ago by neil_mayhew@…
Attachment: | apr-util.buildlog added |
---|
Verbose build log for port install apr-util +universal
comment:6 Changed 15 years ago by neil_mayhew@…
Replying to dluke@…:
Can you attach your failed build log for apr-util 64/32 bit universal, please?
Note that the build succeeds, but builds only x86_64
. There don't appear to be any -arch
flags anywhere.
Other +universal
builds then fail (eg serf) because there's no i386
in /opt/local/lib/libaprutil-1.dylib
.
comment:12 Changed 15 years ago by michaelsafyan@…
I'm running into the same problem. I added "+universal" to the variants.conf file immediately after I installed MacPorts and before installing any packages. I tried installing "log4cxx", but it failed due to its dependency "apr-util" not having the required architecture (i386). I'm on Mac OS X Snow Leoard and so everything should be built as i386/x86_64 universal binaries, but "apr-util" builds as only i386. I am attaching "apr-util.arch.txt" which demonstrates that the file contains only the i386 architecture, I am attaching "apr-util.buildlog2" which is another build log for apr-util (in case it helps), and "log4cxx.buildlog" showing the failed build of log4cxx due to "apr-util" being i386-only.
Changed 15 years ago by michaelsafyan@…
Attachment: | apr-util.arch.txt added |
---|
Shows library has only x86_64 architecture.
Changed 15 years ago by michaelsafyan@…
Attachment: | apr-util.buildlog2 added |
---|
Another buildlog for apr-util (with "+universal" in "variants.conf" since MacPorts installation).
Changed 15 years ago by michaelsafyan@…
Attachment: | log4cxx.buildlog added |
---|
Buildlog for log4cxx (with "+universal" in "variants.conf"), showing failed build due to "apr-util" missing i386 architecture.
comment:14 Changed 15 years ago by michaelsafyan@…
So, apparently there is a diff for repairing apr-util given in this bug report: #17090 . Can any of the MacPorts developers apply the apr-util-universal.diff patch to the mainline apr-util port? Thanks.
comment:15 Changed 15 years ago by danielluke (Daniel J. Luke)
Resolution: | → fixed |
---|---|
Status: | new → closed |
patch applied in r61550
comment:16 follow-up: 17 Changed 15 years ago by michaelsafyan@…
So, apparently that patch doesn't fix it. I am now getting a new error (although at least apr-util refuses to build instead of silently building in the wrong mode). The error that I am getting is this:
[michaelsafyan@codemage ~]$ sudo port install apr-util ---> Computing dependencies for apr-util ---> Fetching apr-util ---> Verifying checksum(s) for apr-util ---> Extracting apr-util ---> Configuring apr-util ---> Building apr-util Error: Target org.macports.build returned: invalid command name "EXTRA_LDFLAGS='-arch x86_64 -arch i386'" Error: Status 1 encountered during processing
comment:17 Changed 15 years ago by danielluke (Daniel J. Luke)
Replying to michaelsafyan@…:
So, apparently that patch doesn't fix it.
Sorry, there was some trailing whitespace that caused that.
I've just committed r61551 to fix
comment:18 Changed 15 years ago by michaelsafyan@…
Things still don't seem to be building....
[michaelsafyan@codemage ~]$ sudo port clean apr-util ---> Cleaning apr-util [michaelsafyan@codemage ~]$ sudo port selfupdate ---> Updating the ports tree ---> Updating MacPorts base sources using rsync MacPorts base version 1.8.1 installed, MacPorts base version 1.8.1 downloaded. ---> MacPorts base is already the latest version The ports tree has been updated. To upgrade your installed ports, you should run port upgrade outdated [michaelsafyan@codemage ~]$ sudo port install apr-util ---> Computing dependencies for apr-util ---> Fetching apr-util ---> Verifying checksum(s) for apr-util ---> Extracting apr-util ---> Configuring apr-util ---> Building apr-util Error: Target org.macports.build returned: invalid command name "EXTRA_LDFLAGS='-arch x86_64 -arch i386'" Error: Status 1 encountered during processing.
I'm thinking that maybe the "configure.cflags-append" and "configure.ldflags-append" MacPorts commands should be used instead of setting EXTRA_CFLAGS and EXTRA_LDFLAGS. As in:
if {[variant_isset universal]} { configure.cflags-append '${configure.universal_cflags}' configure.ldflags-append '${configure.universal_ldflags}' }
I haven't tested this, though, so that should probably be tested before committing.
comment:19 Changed 15 years ago by danielluke (Daniel J. Luke)
It takes some time for the stuff checked into the svn server to make it to the rsync server (where selfupdate gets the Portfiles unless you've changed things to use an svn checkout).
comment:20 Changed 15 years ago by michaelsafyan@…
Thanks. I didn't realize that. Everything is working now.
Do you have
+universal
set in your variants.conf? I don't think it should be building both architectures unless you specified a universal build.