Opened 14 years ago

Closed 14 years ago

Last modified 14 years ago

#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 :

  1. apr-util builds with x86_64 architecture only, even if build_arch parameter is set to a value of "x86_64 i386"
  2. 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)

apr-util.buildlog (55.9 KB) - added by neil_mayhew@… 14 years ago.
Verbose build log for port install apr-util +universal
apr-util.arch.txt (159 bytes) - added by michaelsafyan@… 14 years ago.
Shows library has only x86_64 architecture.
apr-util.buildlog2 (56.0 KB) - added by michaelsafyan@… 14 years ago.
Another buildlog for apr-util (with "+universal" in "variants.conf" since MacPorts installation).
log4cxx.buildlog (396.6 KB) - added by michaelsafyan@… 14 years ago.
Buildlog for log4cxx (with "+universal" in "variants.conf"), showing failed build due to "apr-util" missing i386 architecture.

Download all attachments as: .zip

Change History (24)

comment:1 Changed 14 years ago by danielluke (Daniel J. Luke)

Owner: changed from macports-tickets@… to dluke@…

comment:2 Changed 14 years ago by nerdling (Jeremy Lavergne)

Cc: snc@… added

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.

comment:3 Changed 14 years ago by jmroot (Joshua Root)

Description: modified (diff)

comment:4 Changed 14 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 in reply to:  4 ; Changed 14 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 14 years ago by neil_mayhew@…

Attachment: apr-util.buildlog added

Verbose build log for port install apr-util +universal

comment:6 in reply to:  5 Changed 14 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:7 Changed 14 years ago by neil_mayhew@…

Cc: neil_mayhew@… added

Cc Me!

comment:8 Changed 14 years ago by eemeli.kantola@…

Cc: eemeli.kantola@… added

Cc Me!

comment:9 Changed 14 years ago by nicos_pavlov@…

Cc: nicos_pavlov@… added

Cc Me!

comment:10 Changed 14 years ago by david.darais@…

Cc: david.darais@… added

Cc Me!

comment:11 Changed 14 years ago by benjamin@…

Cc: benjamin@… added

Cc Me!

comment:12 in reply to:  description Changed 14 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 14 years ago by michaelsafyan@…

Attachment: apr-util.arch.txt added

Shows library has only x86_64 architecture.

Changed 14 years ago by michaelsafyan@…

Attachment: apr-util.buildlog2 added

Another buildlog for apr-util (with "+universal" in "variants.conf" since MacPorts installation).

Changed 14 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:13 Changed 14 years ago by michaelsafyan@…

Cc: michaelsafyan@… added

Cc Me!

comment:14 Changed 14 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 14 years ago by danielluke (Daniel J. Luke)

Resolution: fixed
Status: newclosed

patch applied in r61550

comment:16 Changed 14 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 in reply to:  16 Changed 14 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 14 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 14 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 14 years ago by michaelsafyan@…

Thanks. I didn't realize that. Everything is working now.

Note: See TracTickets for help on using tickets.