Opened 11 years ago

Last modified 10 years ago

#41872 new defect

cyrus-sasl2 @2.1.26_3 +kerberos+sql+universal: muniversal destroot merge failure

Reported by: cooljeanius (Eric Gallager) Owned by: macports-tickets@…
Priority: Normal Milestone:
Component: ports Version: 2.2.1
Keywords: Cc: jmpalacios (Juan Manuel Palacios), landonf (Landon Fuller), ryandesign (Ryan Carsten Schmidt)
Port: cyrus-sasl2

Description

relevant part of log:

Command failed: /usr/bin/cmp -s "/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_security_cyrus-sasl2/cyrus-sasl2/work/destroot-i386//opt/local/lib/sasl2/libsasldb.la" "/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_security_cyrus-sasl2/cyrus-sasl2/work/destroot-x86_64//opt/local/lib/sasl2/libsasldb.la" && /bin/cp -v "/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_security_cyrus-sasl2/cyrus-sasl2/work/destroot-i386//opt/local/lib/sasl2/libsasldb.la" "/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_security_cyrus-sasl2/cyrus-sasl2/work/destroot-intel//opt/local/lib/sasl2"
Exit code: 1
/usr/bin/lipo: can't figure out the architecture type of: /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_security_cyrus-sasl2/cyrus-sasl2/work/destroot-i386//opt/local/lib/sasl2/libsasldb.la
Command failed: /usr/bin/lipo -create "/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_security_cyrus-sasl2/cyrus-sasl2/work/destroot-i386//opt/local/lib/sasl2/libsasldb.la" "/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_security_cyrus-sasl2/cyrus-sasl2/work/destroot-x86_64//opt/local/lib/sasl2/libsasldb.la" -output "/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_security_cyrus-sasl2/cyrus-sasl2/work/destroot-intel//opt/local/lib/sasl2/libsasldb.la"
Exit code: 1
/usr/bin/libtool: file: /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_security_cyrus-sasl2/cyrus-sasl2/work/destroot-i386//opt/local/lib/sasl2/libsasldb.la is not an object file (not allowed in a library)
/usr/bin/libtool: file: /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_security_cyrus-sasl2/cyrus-sasl2/work/destroot-x86_64//opt/local/lib/sasl2/libsasldb.la is not an object file (not allowed in a library)
Command failed: /usr/bin/libtool "/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_security_cyrus-sasl2/cyrus-sasl2/work/destroot-i386//opt/local/lib/sasl2/libsasldb.la" "/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_security_cyrus-sasl2/cyrus-sasl2/work/destroot-x86_64//opt/local/lib/sasl2/libsasldb.la" -o "/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_security_cyrus-sasl2/cyrus-sasl2/work/destroot-intel//opt/local/lib/sasl2/libsasldb.la"
Exit code: 1
Error: org.macports.destroot for port cyrus-sasl2 returned: /opt/local/lib/sasl2/libsasldb.la differs in /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_security_cyrus-sasl2/cyrus-sasl2/work/destroot-i386 and /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_security_cyrus-sasl2/cyrus-sasl2/work/destroot-x86_64 and cannot be merged
DEBUG: Error code: NONE
DEBUG: Backtrace: /opt/local/lib/sasl2/libsasldb.la differs in /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_security_cyrus-sasl2/cyrus-sasl2/work/destroot-i386 and /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_security_cyrus-sasl2/cyrus-sasl2/work/destroot-x86_64 and cannot be merged

This is because the clearing of dependency_libs is not done until after the merging process is done:

Local-Admins-MacBook-Pro:~ root# diff -u /opt/local/var/macports/build.build/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_security_cyrus-sasl2/cyrus-sasl2/work/destroot-i386/opt/local/lib/sasl2/libsasldb.la /opt/local/var/macports/build.build/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_security_cyrus-sasl2/cyrus-sasl2/work/destroot-x86_64/opt/local/lib/sasl2/libsasldb.la
--- /opt/local/var/macports/build.build/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_security_cyrus-sasl2/cyrus-sasl2/work/destroot-i386/opt/local/lib/sasl2/libsasldb.la	2013-12-21 14:10:39.000000000 -0500
+++ /opt/local/var/macports/build.build/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_security_cyrus-sasl2/cyrus-sasl2/work/destroot-x86_64/opt/local/lib/sasl2/libsasldb.la	2013-12-21 14:10:37.000000000 -0500
@@ -14,7 +14,7 @@
 old_library=''
 
 # Libraries that this one depends upon.
-dependency_libs=' -L/opt/local/lib -lresolv -lresolv -lpam -lresolv -lresolv -lpam'
+dependency_libs=' -L/opt/local/lib -lresolv -lresolv -lpam -ldb -lresolv -lresolv -lpam'
 
 # Version information for libsasldb.
 current=3

Attachments (2)

main.log (355.8 KB) - added by cooljeanius (Eric Gallager) 11 years ago.
build failure log for cyrus-sasl2
muniversal_offending_files.diff (775 bytes) - added by cooljeanius (Eric Gallager) 11 years ago.
diff between offending files

Download all attachments as: .zip

Change History (5)

Changed 11 years ago by cooljeanius (Eric Gallager)

Attachment: main.log added

build failure log for cyrus-sasl2

Changed 11 years ago by cooljeanius (Eric Gallager)

diff between offending files

comment:1 in reply to:  description Changed 11 years ago by ryandesign (Ryan Carsten Schmidt)

Cc: ryandesign@… added

Replying to egall@…:

This is because the clearing of dependency_libs is not done until after the merging process is done:

Local-Admins-MacBook-Pro:~ root# diff -u /opt/local/var/macports/build.build/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_security_cyrus-sasl2/cyrus-sasl2/work/destroot-i386/opt/local/lib/sasl2/libsasldb.la /opt/local/var/macports/build.build/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_security_cyrus-sasl2/cyrus-sasl2/work/destroot-x86_64/opt/local/lib/sasl2/libsasldb.la
--- /opt/local/var/macports/build.build/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_security_cyrus-sasl2/cyrus-sasl2/work/destroot-i386/opt/local/lib/sasl2/libsasldb.la	2013-12-21 14:10:39.000000000 -0500
+++ /opt/local/var/macports/build.build/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_security_cyrus-sasl2/cyrus-sasl2/work/destroot-x86_64/opt/local/lib/sasl2/libsasldb.la	2013-12-21 14:10:37.000000000 -0500
@@ -14,7 +14,7 @@
 old_library=''
 
 # Libraries that this one depends upon.
-dependency_libs=' -L/opt/local/lib -lresolv -lresolv -lpam -lresolv -lresolv -lpam'
+dependency_libs=' -L/opt/local/lib -lresolv -lresolv -lpam -ldb -lresolv -lresolv -lpam'
 
 # Version information for libsasldb.
 current=3

This shows us that the x86_64 part is using libdb and the i386 part is not. That is the bug that should be fixed. Either both parts should use the library and the port should declare a dependency on the port that provides it, or neither part should use the library.

Last edited 11 years ago by ryandesign (Ryan Carsten Schmidt) (previous) (diff)

comment:2 Changed 10 years ago by cooljeanius (Eric Gallager)

Running into this again; it is preventing me from a bunch of ports because openldap depends on it, and I have curl installed with its +openldap variant, and a large number of ports depend on curl, either directly or indirectly.

It looks like the fortrancl Portfile was experiencing similar issues, as it does this:

# They differ when universal due to gcc multilib being messy non-universal
destroot.delete_la_files yes

Could we at least do something similar for cyrus-sasl2 as a temporary workaround until the libdb linking issue is worked out?

comment:3 Changed 10 years ago by cooljeanius (Eric Gallager)

Never mind, I figured it out, it was my fault for having a non-universal copy of berkeley-db installed in /usr/local... (although it could have just as easily been a non-universal db4* port selected via port select with the db_select port)

I tried the following configure flags as well; not sure how helpful they were though:

    configure.args-append   --with-dblib=berkeley \
                            --with-bdb-libdir=${prefix}/lib \
                            --with-bdb-incdir=${prefix}/include
Note: See TracTickets for help on using tickets.