Opened 12 years ago

Closed 12 years ago

#35042 closed defect (invalid)

cyrus-sasl2 +sql rev-upgrade problem in presence of non-macports libmysqlclient.dylib

Reported by: robsonpeixoto@… Owned by: jmpp@…
Priority: Normal Milestone:
Component: ports Version: 2.1.1
Keywords: rev-upgrade Cc:
Port: cyrus-sasl2

Description

I tried: sudo port upgrade --enforce-variants cyrus-sasl2 -kerberos +sql

After the problem, I created the log: sudo port -d -y rev-upgrade > log 2>&1

Attachments (1)

log (4.0 KB) - added by robsonpeixoto@… 12 years ago.

Download all attachments as: .zip

Change History (9)

Changed 12 years ago by robsonpeixoto@…

Attachment: log added

comment:1 Changed 12 years ago by neverpanic (Clemens Lang)

Keywords: rev-upgrade added
Owner: changed from macports-tickets@… to jmpp@…

Since cyrus-sasl2 +sql only adds a dependency on sqlite3, it should either not link against libmysqlclient.dylib or also declare a dependency on mysql. It would be helpful to know where your libmysqlclient.18.dylib file comes from. What does port -v installed mysql* print?

comment:2 Changed 12 years ago by jmroot (Joshua Root)

Summary: rev-upgrade problemcyrus-sasl2 +sql rev-upgrade problem

comment:3 Changed 12 years ago by robsonpeixoto@…

$ port -v installed mysql*
The following ports are currently installed:
  mysql5 @5.1.63_0+universal (active) platform='darwin 11' archs='i386 x86_64'
  mysql55 @5.5.25_0 (active) platform='darwin 11' archs='x86_64'
  mysql_select @0.1.2_0 (active) platform='darwin 11' archs='noarch'

$ port -v contents mysql* | grep libmysqlclient.18.dylib
  /opt/local/lib/mysql55/mysql/libmysqlclient.18.dylib

$ locate libmysqlclient.18.dylib
/Applications/MySQLWorkbench.app/Contents/Frameworks/libmysqlclient.18.dylib
/opt/local/lib/mysql55/mysql/libmysqlclient.18.dylib
/usr/local/mysql-5.5.25-osx10.6-x86_64/lib/libmysqlclient.18.dylib

$ locate libmysqlclient.18.dylib
/Applications/MySQLWorkbench.app/Contents/Frameworks/libmysqlclient.18.dylib
/opt/local/lib/mysql55/mysql/libmysqlclient.18.dylib
/usr/local/mysql-5.5.25-osx10.6-x86_64/lib/libmysqlclient.18.dylib
Last edited 12 years ago by ryandesign (Ryan Carsten Schmidt) (previous) (diff)

comment:4 Changed 12 years ago by robsonpeixoto@…

Maybe it can be helpful:

on .profile: export DYLD_LIBRARY_PATH=/usr/local/mysql/lib:$DYLD_LIBRARY_PATH

Version 0, edited 12 years ago by robsonpeixoto@… (next)

comment:5 Changed 12 years ago by neverpanic (Clemens Lang)

Having stuff in /usr/local is not supported. However, cyrus-sasl2 +sql should still either not link against mysql at all, or link against MacPorts mysql.

I'm not sure DYLD_LIBRARAY_PATH has any effect on what libraries the build links against; Do you have /usr/local/mysql? From the output you pasted earlier only /usr/local/mysql-5.5.25-osx10.6-x86_64 seems to be present.

Please try again while moving /usr/local aside and see if that works.

comment:6 Changed 12 years ago by robsonpeixoto@…

I moved /usr/local to /usr/local-OLD and the error continues. And yes, I had /usr/local/mysql installed.

[robinho@robinho ~  ]$ sudo port upgrade --enforce-variants cyrus-sasl2 +sql
--->  Computing dependencies for cyrus-sasl2
--->  Fetching archive for cyrus-sasl2
--->  Attempting to fetch cyrus-sasl2-2.1.25_1+kerberos+sql+universal.darwin_11.i386-x86_64.tbz2 from http://packages.macports.org/cyrus-sasl2
--->  Fetching distfiles for cyrus-sasl2
--->  Verifying checksum(s) for cyrus-sasl2
--->  Extracting cyrus-sasl2
--->  Applying patches to cyrus-sasl2
--->  Configuring cyrus-sasl2
--->  Building cyrus-sasl2
--->  Staging cyrus-sasl2 into destroot
--->  Installing cyrus-sasl2 @2.1.25_1+kerberos+sql+universal
--->  Cleaning cyrus-sasl2
--->  Computing dependencies for cyrus-sasl2
--->  Deactivating cyrus-sasl2 @2.1.25_1+kerberos+universal
--->  Cleaning cyrus-sasl2
--->  Activating cyrus-sasl2 @2.1.25_1+kerberos+sql+universal
--->  Cleaning cyrus-sasl2
--->  Updating database of binaries: 100.0%
--->  Scanning binaries for linking errors: 100.0%
--->  Found 1 broken file(s), matching files to ports
--->  Found 1 broken port(s), determining rebuild order
--->  Rebuilding in order
     cyrus-sasl2 @2.1.25 +kerberos+sql+universal
--->  Computing dependencies for cyrus-sasl2
--->  Cleaning cyrus-sasl2
--->  Scanning binaries for linking errors: 100.0%
--->  Found 1 broken file(s), matching files to ports
--->  Found 1 broken port(s), determining rebuild order
--->  Rebuilding in order
     cyrus-sasl2 @2.1.25 +kerberos+sql+universal
--->  Computing dependencies for cyrus-sasl2
--->  Cleaning cyrus-sasl2
--->  Unable to uninstall cyrus-sasl2 @2.1.25_1+kerberos+sql+universal, the following ports depend on it:
--->  	subversion-javahlbindings @1.7.5_0+universal
--->  	subversion @1.7.5_0+bash_completion+mod_dav_svn+tools+unicode_path+universal
--->  	openldap @2.4.21_5+overlays+universal
--->  	php53-ldap @5.3.14_0
--->  	php54-ldap @5.4.4_0
--->  	subversion-perlbindings @1.7.5_1
Warning: Uninstall forced.  Proceeding despite dependencies.
--->  Deactivating cyrus-sasl2 @2.1.25_1+kerberos+sql+universal
--->  Unable to deactivate cyrus-sasl2 @2.1.25_1+kerberos+sql+universal, the following ports depend on it:
--->  	subversion-javahlbindings @1.7.5_0+universal
--->  	subversion @1.7.5_0+bash_completion+mod_dav_svn+tools+unicode_path+universal
--->  	openldap @2.4.21_5+overlays+universal
--->  	php53-ldap @5.3.14_0
--->  	php54-ldap @5.4.4_0
--->  	subversion-perlbindings @1.7.5_1
Warning: Deactivate forced.  Proceeding despite dependencies.
--->  Cleaning cyrus-sasl2
--->  Uninstalling cyrus-sasl2 @2.1.25_1+kerberos+sql+universal
--->  Cleaning cyrus-sasl2
--->  Computing dependencies for cyrus-sasl2
--->  Fetching distfiles for cyrus-sasl2
--->  Verifying checksum(s) for cyrus-sasl2
--->  Extracting cyrus-sasl2
--->  Applying patches to cyrus-sasl2
--->  Configuring cyrus-sasl2
--->  Building cyrus-sasl2
--->  Staging cyrus-sasl2 into destroot
--->  Installing cyrus-sasl2 @2.1.25_1+kerberos+sql+universal
--->  Activating cyrus-sasl2 @2.1.25_1+kerberos+sql+universal
--->  Cleaning cyrus-sasl2
--->  Updating database of binaries: 100.0%
--->  Scanning binaries for linking errors: 100.0%
--->  Found 1 broken file(s), matching files to ports
--->  Found 1 broken port(s), determining rebuild order
--->  Rebuilding in order
     cyrus-sasl2 @2.1.25 +kerberos+sql+universal
--->  Computing dependencies for cyrus-sasl2
--->  Cleaning cyrus-sasl2
--->  Unable to uninstall cyrus-sasl2 @2.1.25_1+kerberos+sql+universal, the following ports depend on it:
--->  	subversion-javahlbindings @1.7.5_0+universal
--->  	subversion @1.7.5_0+bash_completion+mod_dav_svn+tools+unicode_path+universal
--->  	openldap @2.4.21_5+overlays+universal
--->  	php53-ldap @5.3.14_0
--->  	php54-ldap @5.4.4_0
--->  	subversion-perlbindings @1.7.5_1
Warning: Uninstall forced.  Proceeding despite dependencies.
--->  Deactivating cyrus-sasl2 @2.1.25_1+kerberos+sql+universal
--->  Unable to deactivate cyrus-sasl2 @2.1.25_1+kerberos+sql+universal, the following ports depend on it:
--->  	subversion-javahlbindings @1.7.5_0+universal
--->  	subversion @1.7.5_0+bash_completion+mod_dav_svn+tools+unicode_path+universal
--->  	openldap @2.4.21_5+overlays+universal
--->  	php53-ldap @5.3.14_0
--->  	php54-ldap @5.4.4_0
--->  	subversion-perlbindings @1.7.5_1
Warning: Deactivate forced.  Proceeding despite dependencies.
--->  Cleaning cyrus-sasl2
--->  Uninstalling cyrus-sasl2 @2.1.25_1+kerberos+sql+universal
--->  Cleaning cyrus-sasl2
--->  Computing dependencies for cyrus-sasl2
--->  Fetching distfiles for cyrus-sasl2
--->  Verifying checksum(s) for cyrus-sasl2
--->  Extracting cyrus-sasl2
--->  Applying patches to cyrus-sasl2
--->  Configuring cyrus-sasl2
--->  Building cyrus-sasl2
--->  Staging cyrus-sasl2 into destroot
--->  Installing cyrus-sasl2 @2.1.25_1+kerberos+sql+universal
--->  Activating cyrus-sasl2 @2.1.25_1+kerberos+sql+universal
--->  Cleaning cyrus-sasl2
--->  Updating database of binaries: 100.0%
--->  Scanning binaries for linking errors: 100.0%
--->  Found 1 broken file(s), matching files to ports
Error: Port cyrus-sasl2 is still broken after rebuiling it more than 3 times.
Error: Please run port -d -y rev-upgrade and use the output to report a bug.
Port cyrus-sasl2 still broken after rebuilding 3 time(s)
    while executing
"error "Port $portname still broken after rebuilding [expr $broken_port_counts($portname) - 1] time(s)""
    (procedure "revupgrade_scanandrebuild" line 256)
    invoked from within
"revupgrade_scanandrebuild broken_port_counts $opts"
    (procedure "macports::revupgrade" line 5)
    invoked from within
"macports::revupgrade $opts"
    (procedure "action_revupgrade" line 2)
    invoked from within
"action_revupgrade $action $portlist $opts"
    (procedure "action_upgrade" line 24)
    invoked from within
"$action_proc $action $portlist [array get global_options]"
    (procedure "process_cmd" line 95)
    invoked from within
"process_cmd $remaining_args"
    invoked from within
"if { [llength $remaining_args] > 0 } {

    # If there are remaining arguments, process those as a command
    set exit_status [process_cmd $remaining..."
    (file "/opt/local/bin/port" line 4784)
[robinho@robinho ~  ]$ sudo port -d -y rev-upgrade
DEBUG: Copying /Users/robinho/Library/Preferences/com.apple.dt.Xcode.plist to /opt/local/var/macports/home/Library/Preferences
DEBUG: skipping ppc in /opt/local/share/cmake-2.8/Modules/CPack.OSXScriptLauncher.in since this system can't run it anyway
DEBUG: Ignoring loadcommand containing @executable_path in /opt/local/libexec/llvm-3.0/bin/bugpoint
DEBUG: Ignoring loadcommand containing @executable_path in /opt/local/libexec/llvm-3.0/bin/llc
DEBUG: Ignoring loadcommand containing @executable_path in /opt/local/libexec/llvm-3.0/bin/lli
DEBUG: Ignoring loadcommand containing @executable_path in /opt/local/libexec/llvm-3.0/bin/llvm-ar
DEBUG: Ignoring loadcommand containing @executable_path in /opt/local/libexec/llvm-3.0/bin/llvm-as
DEBUG: Ignoring loadcommand containing @executable_path in /opt/local/libexec/llvm-3.0/bin/llvm-bcanalyzer
DEBUG: Ignoring loadcommand containing @executable_path in /opt/local/libexec/llvm-3.0/bin/llvm-cov
DEBUG: Ignoring loadcommand containing @executable_path in /opt/local/libexec/llvm-3.0/bin/llvm-diff
DEBUG: Ignoring loadcommand containing @executable_path in /opt/local/libexec/llvm-3.0/bin/llvm-dis
DEBUG: Ignoring loadcommand containing @executable_path in /opt/local/libexec/llvm-3.0/bin/llvm-dwarfdump
DEBUG: Ignoring loadcommand containing @executable_path in /opt/local/libexec/llvm-3.0/bin/llvm-extract
DEBUG: Ignoring loadcommand containing @executable_path in /opt/local/libexec/llvm-3.0/bin/llvm-ld
DEBUG: Ignoring loadcommand containing @executable_path in /opt/local/libexec/llvm-3.0/bin/llvm-link
DEBUG: Ignoring loadcommand containing @executable_path in /opt/local/libexec/llvm-3.0/bin/llvm-mc
DEBUG: Ignoring loadcommand containing @executable_path in /opt/local/libexec/llvm-3.0/bin/llvm-nm
DEBUG: Ignoring loadcommand containing @executable_path in /opt/local/libexec/llvm-3.0/bin/llvm-objdump
DEBUG: Ignoring loadcommand containing @executable_path in /opt/local/libexec/llvm-3.0/bin/llvm-prof
DEBUG: Ignoring loadcommand containing @executable_path in /opt/local/libexec/llvm-3.0/bin/llvm-ranlib
DEBUG: Ignoring loadcommand containing @executable_path in /opt/local/libexec/llvm-3.0/bin/llvm-rtdyld
DEBUG: Ignoring loadcommand containing @executable_path in /opt/local/libexec/llvm-3.0/bin/llvm-size
DEBUG: Ignoring loadcommand containing @executable_path in /opt/local/libexec/llvm-3.0/bin/macho-dump
DEBUG: Ignoring loadcommand containing @executable_path in /opt/local/libexec/llvm-3.0/bin/opt
DEBUG: Ignoring loadcommand containing @executable_path in /opt/local/libexec/ld64/ld
DEBUG: Missing architecture arm in file /usr/lib/libc++abi.dylib
DEBUG: Missing architecture arm in file outside prefix referenced from /opt/local/lib/apple-gcc42/gcc/i686-apple-darwin11/4.2.1/libstdc++.dylib
DEBUG: Missing architecture arm in file /usr/lib/libSystem.B.dylib
DEBUG: Missing architecture arm in file outside prefix referenced from /opt/local/lib/apple-gcc42/gcc/i686-apple-darwin11/4.2.1/libstdc++.dylib
--->  Scanning binaries for linking errors
Could not open libmysqlclient.18.dylib: Error opening or reading file (referenced from /opt/local/lib/sasl2/libsql.2.0.25.so)
DEBUG: Marking /opt/local/lib/sasl2/libsql.2.0.25.so as broken

--->  Found 1 broken file(s), matching files to ports
--->  Found 1 broken port(s), determining rebuild order
DEBUG: Broken: cyrus-sasl2
DEBUG: Processing port cyrus-sasl2 @0:2.1.25_1 +kerberos+sql+universal 
DEBUG: Processing port subversion-javahlbindings @0:1.7.5_0 +universal 
DEBUG: Processing port subversion @0:1.7.5_0 +bash_completion+mod_dav_svn+tools+unicode_path+universal 
DEBUG: Processing port git-core @0:1.7.11.1_0 +bash_completion+credential_osxkeychain+doc+gitweb+pcre+python27+svn 
DEBUG: Processing port tig @0:1.0_0  
DEBUG: Processing port subversion-perlbindings @0:1.7.5_1  
DEBUG: Processing port p5.12-svn-simple @0:0.280.0_3  
DEBUG: Processing port openldap @0:2.4.21_5 +overlays+universal 
DEBUG: Processing port apr-util @0:1.4.1_0 +mysql5+openldap+universal 
DEBUG: Processing port serf1 @0:1.1.0_0 +universal 
DEBUG: Processing port apache2 @0:2.2.22_2 +preforkmpm 
DEBUG: Processing port php53-apache2handler @0:5.3.14_0 +suhosin 
DEBUG: Processing port php54-apache2handler @1:5.4.4_0  
DEBUG: Processing port php53-ldap @0:5.3.14_0  
DEBUG: Processing port php54-ldap @1:5.4.4_0  
DEBUG: Processing port curl @0:7.26.0_0 +ares+openldap+sftp_scp+ssl 
DEBUG: Processing port php53-curl @0:5.3.14_0  
DEBUG: Processing port php54-curl @1:5.4.4_0  
DEBUG: Processing port netcdf @2:4.2.0_4 +dap+netcdf4 
DEBUG: Processing port py27-scientific @0:2.9.1_0  
DEBUG: Processing port py27-ipython @0:0.12.1_0 +scientific 
--->  Rebuilding in order
     cyrus-sasl2 @2.1.25 +kerberos+sql+universal
DEBUG: epoch: in tree: 0 installed: 0
DEBUG: cyrus-sasl2 2.1.25_1 exists in the ports tree
DEBUG: cyrus-sasl2 2.1.25_1 +kerberos+sql+universal is the latest installed
DEBUG: cyrus-sasl2 2.1.25_1 +kerberos+sql+universal is active
DEBUG: Merging existing variants '+kerberos+sql+universal' into variants
DEBUG: new fully merged portvariants: sql + universal + kerberos + framework + mmx + quartz + bash_completion +
DEBUG: Changing to port directory: /opt/local/var/macports/sources/rsync.macports.org/release/tarballs/ports/security/cyrus-sasl2
DEBUG: OS darwin/11.4.0 (Mac OS X 10.7) arch i386
DEBUG: org.macports.load registered provides 'load', a pre-existing procedure. Target override will not be provided
DEBUG: org.macports.unload registered provides 'unload', a pre-existing procedure. Target override will not be provided
DEBUG: org.macports.distfiles registered provides 'distfiles', a pre-existing procedure. Target override will not be provided
DEBUG: Using group file /opt/local/var/macports/sources/rsync.macports.org/release/tarballs/ports/_resources/port1.0/group/muniversal-1.0.tcl
DEBUG: Reading variant descriptions from /opt/local/var/macports/sources/rsync.macports.org/release/tarballs/ports/_resources/port1.0/variant_descriptions.conf
DEBUG: universal variant already exists, so not adding the default one
DEBUG: Requested variant +mmx is not provided by port cyrus-sasl2.
DEBUG: Requested variant +framework is not provided by port cyrus-sasl2.
DEBUG: Requested variant +bash_completion is not provided by port cyrus-sasl2.
DEBUG: Requested variant +quartz is not provided by port cyrus-sasl2.
DEBUG: Executing variant universal provides universal
DEBUG: Executing variant kerberos provides kerberos
DEBUG: Executing variant sql provides sql
DEBUG: rev-upgrade override ... upgrading!
DEBUG: Not following dependencies
Skipping deactivate cyrus-sasl2 @2.1.25_1+kerberos+sql+universal (dry run)
Skipping activate cyrus-sasl2 @2.1.25_1+kerberos+sql+universal (dry run)
DEBUG: Rebuilding port cyrus-sasl2 finished with status 0
Warning: If this was no dry run, rev-upgrade would now run the checks again to find unresolved and newly created problems

comment:7 Changed 12 years ago by robsonpeixoto@…

Now, I'm using the mysql from macports =D

It's working like charm!

comment:8 Changed 12 years ago by neverpanic (Clemens Lang)

Resolution: invalid
Status: newclosed
Summary: cyrus-sasl2 +sql rev-upgrade problemcyrus-sasl2 +sql rev-upgrade problem in presence of non-macports libmysqlclient.dylib

The problem was caused by the libmysqlclient.18.dylib file the build linked against. Linking against a library on Macs works like this:

  • find the library you want to link
  • Get its ID loadcommand (run otool -L on the file, it's the first line, usually an absolute path, as opposed to Linux, where the paths are usually relative)
  • Copy the path mentioned there into your binary

So we know from the rev-upgrade output that this copied path is libmysqlclient.18.dylib, which is relative, which causes rev-upgrade to try and find a file libmysqlclient.18.dylib in whatever directory it runs in. It fails to locate this file and assumes the binary is broken.

The problem doesn't occur with MacPorts libmysqlclient.dylib, because its ID loadcommand correctly contains the absolute path:

:) clemens@cSchlepptop:~$ otool -L /opt/local/lib/mysql55/mysql/libmysqlclient.18.dylib
/opt/local/lib/mysql55/mysql/libmysqlclient.18.dylib:
	/opt/local/lib/mysql55/mysql/libmysqlclient.18.dylib (compatibility version 18.0.0, current version 18.0.0)

Anyway, glad you could solve this.

Note: See TracTickets for help on using tickets.