[MacPorts] #44346: Selfupdate fails with Undefined symbols for architecture x86_64: "_rl_username_completion_function"
#44346: Selfupdate fails with Undefined symbols for architecture x86_64: "_rl_username_completion_function" --------------------------------+-------------------------------- Reporter: bugmail-macports@… | Owner: macports-tickets@… Type: defect | Status: new Priority: Normal | Milestone: Component: base | Version: 2.3.1 Keywords: | Port: --------------------------------+-------------------------------- sudo port selfupdate fails with the following error: {{{ /usr/bin/cc -dynamiclib -g -O2 -std=c99 -Wextra -Wall -pedantic -Wl,-single_module Pextlib.o strsed.o fgetln.o md5cmd.o setmode.o xinstall.o fs-traverse.o strcasecmp.o vercomp.o filemap.o base32cmd.o sha1cmd.o curl.o rmd160cmd.o sha256cmd.o readline.o uid.o tracelib.o tty.o readdir.o pipe.o flock.o system.o mktemp.o realpath.o -o Pextlib.dylib -L/opt/local/var/macports/sources/rsync.macports.org/release/tarballs/base/vendor/tcl8.5.15/unix -ltclstub8.5 -install_name /opt/local/libexec/macports/lib/pextlib1.0/Pextlib.dylib -lcurl -lreadline ../registry2.0/registry.dylib Undefined symbols for architecture x86_64: "_rl_username_completion_function", referenced from: _attempted_completion_function in readline.o ld: symbol(s) not found for architecture x86_64 collect2: error: ld returned 1 exit status make[2]: *** [Pextlib.dylib] Error 1 make[1]: *** [all] Error 1 make: *** [all] Error 1 Command failed: cd /opt/local/var/macports/sources/rsync.macports.org/release/tarballs/base && CC=/usr/bin/cc OBJC=/usr/bin/cc ./configure --prefix=/opt/local --with- tclpackage=/Library/Tcl --with-install-user=root --with-install- group=admin --with-directory-mode=0755 --enable-readline && make SELFUPDATING=1 && make install SELFUPDATING=1 Exit code: 2 DEBUG: Error installing new MacPorts base: command execution failed while executing "macports::selfupdate [array get global_options] base_updated" Error: Error installing new MacPorts base: command execution failed }}} I read Ticket #43856 but I don't have homebrew nor a readline.o in /usr/local {{{ locate readline.o /opt/local/var/macports/sources/rsync.macports.org/release/tarballs/base/src/pextlib1.0/readline.o /opt/local/var/macports/sources/rsync.macports.org/release/tarballs/ports/devel/omake/files /patch-lib-configure-readline.om.diff }}} How can I fix this? I'm going to attach the output of sudo port -v selfupdate. -- Ticket URL: <https://trac.macports.org/ticket/44346> MacPorts <http://www.macports.org/> Ports system for OS X
#44346: Selfupdate fails with Undefined symbols for architecture x86_64: "_rl_username_completion_function" ---------------------------------+-------------------------------- Reporter: bugmail-macports@… | Owner: macports-tickets@… Type: defect | Status: new Priority: Normal | Milestone: Component: base | Version: 2.3.1 Resolution: | Keywords: Port: | ---------------------------------+-------------------------------- Comment (by cal@…): Well, you can use the installer from our website to update to 2.3.1 for now, but you'll likely hit the same problem again with the next update. Note that `readline.o` isn't the offending file in `/usr/local`, `readline.h` in `/usr/local/include` and/or `libreadline.*.dylib` in `/usr/local/lib` are. Please check for these files. If that doesn't help, what's the output of `openssl dgst -sha1 /usr/include/readline.h` and `nm /usr/lib/libreadline.dylib`? -- Ticket URL: <https://trac.macports.org/ticket/44346#comment:1> MacPorts <http://www.macports.org/> Ports system for OS X
#44346: Selfupdate fails with Undefined symbols for architecture x86_64: "_rl_username_completion_function" ---------------------------------+-------------------------------- Reporter: bugmail-macports@… | Owner: macports-tickets@… Type: defect | Status: new Priority: Normal | Milestone: Component: base | Version: 2.3.1 Resolution: | Keywords: Port: | ---------------------------------+-------------------------------- Comment (by bugmail-macports@…): Thanks for your answer. Indeed I have a couple of readline.h around, but not in /usr/local: {{{ locate readline.h /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.8.sdk/usr/include/editline/readline.h /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.8.sdk/usr/include/readline/readline.h /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include/editline/readline.h /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include/readline/readline.h /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator7.1.sdk/usr/include/editline/readline.h /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator7.1.sdk/usr/include/readline/readline.h /opt/local/include/editline/readline.h /opt/local/include/readline/readline.h /opt/local/share/doc/readline/html/readline.html /opt/local/var/macports/sources/rsync.macports.org/release/tarballs/base/src/pextlib1.0/readline.h /usr/include/editline/readline.h /usr/include/readline/readline.h }}} The ones in /usr/include/editline/ and /opt/local/include/*line/ all have the same signature (that of the Xcode for MacOSX10.9.sdk): {{{ /* $NetBSD: readline.h,v 1.33 2012/05/15 17:30:04 christos Exp $ */ }}} {{{ SHA1(/opt/local/include/editline/readline.h)= 36d79499fa4b1cb5885596d8b6feae802283a0c3 SHA1(/usr/include/readline/readline.h)= 36d79499fa4b1cb5885596d8b6feae802283a0c3 SHA1(/usr/include/editline/readline.h)= 36d79499fa4b1cb5885596d8b6feae802283a0c3 }}} while that in /opt/local/include/readline comes from the FSF: {{{ #define RL_READLINE_VERSION 0x0603 /* Readline 6.3 */ }}} {{{ SHA1(/opt/local/include/readline/readline.h)= eb43dd1ba2d57d996666c22cb13d31d9fedd485c }}} It's a big mess, not surprising it doesn't work. I also have multiple libreadline: {{{ locate libreadline /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.8.sdk/usr/lib/libreadline.dylib /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/lib/libreadline.dylib /Library/Frameworks/R.framework/Versions/2.15/Resources/lib/libreadline.5.2.dylib /Library/Frameworks/R.framework/Versions/2.15/Resources/lib/libreadline.dylib /Library/Frameworks/R.framework/Versions/3.0/Resources/lib/libreadline.5.2.dylib /Library/Frameworks/R.framework/Versions/3.0/Resources/lib/libreadline.dylib /Library/Frameworks/R.framework/Versions/3.1/Resources/lib/libreadline.5.2.dylib /Library/Frameworks/R.framework/Versions/3.1/Resources/lib/libreadline.dylib /opt/local/lib/libreadline.6.2.dylib /opt/local/lib/libreadline.6.3.dylib /opt/local/lib/libreadline.6.dylib /opt/local/lib/libreadline.a /opt/local/lib/libreadline.dylib /usr/lib/libreadline.dylib }}} The one in /usr/lib doesn't contain _rl_username_completion_function. I attach it in nm.txt. Ok, then I tried to move /opt/local/include/*line and /usr/include/*line away but I get a different error: {{{ -I/opt/local/var/macports/sources/rsync.macports.org/release/tarballs/base/src -I. -I/opt/local/var/macports/sources/rsync.macports.org/release/tarballs/base/vendor /vendor-destroot//opt/local/libexec/macports/include -fno-common sha256cmd.c -o sha256cmd.o /usr/bin/cc -c -DUSE_TCL_STUBS -DTCL_NO_DEPRECATED -g -O2 -std=c99 -Wextra -Wall -pedantic -DHAVE_CONFIG_H -I/opt/local/var/macports/sources/rsync.macports.org/release/tarballs/base/src -I/opt/local/var/macports/sources/rsync.macports.org/release/tarballs/base/src -I. -I/opt/local/var/macports/sources/rsync.macports.org/release/tarballs/base/vendor /vendor-destroot//opt/local/libexec/macports/include -fno-common readline.c -o readline.o readline.c: In function 'completion_generator': readline.c:66:6: error: 'completion_interp' undeclared (first use in this function) if (completion_interp && generator_word) { ^ }}} Apparently it is missing some headers... which one should I have kept? -- Ticket URL: <https://trac.macports.org/ticket/44346#comment:2> MacPorts <http://www.macports.org/> Ports system for OS X
#44346: Selfupdate fails with Undefined symbols for architecture x86_64: "_rl_username_completion_function" ---------------------------------+-------------------------------- Reporter: bugmail-macports@… | Owner: macports-tickets@… Type: defect | Status: new Priority: Normal | Milestone: Component: base | Version: 2.3.1 Resolution: | Keywords: Port: | ---------------------------------+-------------------------------- Comment (by cal@…): `/opt/local/include` and `/opt/local/lib` are removed from the respective compiler's search paths when using selfupdate. MacPorts itself (or rather, its configure script) takes care of that, so those are probably not the problem. That leaves the ones in `/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs` which are unused unless an SDK is being used (selfupdate doesn't). The version in `/usr/include/readline/readline.h` should be the correct header. I think what you're seeing is an incompatibility between the header being used and the library actually being linked. The copies of libreadline in `/Library/Frameworks/R.framework` might be the problem here -- I think those are, unfortunately, in the compiler's standard search paths. You could try moving R.framework to `/var/tmp` for the time of the selfupdate and see if that helps. -- Ticket URL: <https://trac.macports.org/ticket/44346#comment:3> MacPorts <http://www.macports.org/> Ports system for OS X
#44346: Selfupdate fails with Undefined symbols for architecture x86_64: "_rl_username_completion_function" ---------------------------------+-------------------------------- Reporter: bugmail-macports@… | Owner: macports-tickets@… Type: defect | Status: new Priority: Normal | Milestone: Component: base | Version: 2.3.1 Resolution: | Keywords: Port: | ---------------------------------+-------------------------------- Comment (by bugmail-macports@…): Thanks a lot, it worked! I moved R.framework but it still didn't work. Then I also moved /usr/lib/libreadline.dylib and then selfupdate succeeded. Not sure what would have happened with only the R.framework in the path... Now I restored both to their original location. -- Ticket URL: <https://trac.macports.org/ticket/44346#comment:4> MacPorts <http://www.macports.org/> Ports system for OS X
#44346: Selfupdate fails with Undefined symbols for architecture x86_64: "_rl_username_completion_function" ---------------------------------+-------------------------------- Reporter: bugmail-macports@… | Owner: macports-tickets@… Type: defect | Status: new Priority: Normal | Milestone: Component: base | Version: 2.3.1 Resolution: | Keywords: Port: | ---------------------------------+-------------------------------- Comment (by bugmail-macports@…): (I don't know how to close the ticket... Modify Ticket allows me only to leave it as new.) -- Ticket URL: <https://trac.macports.org/ticket/44346#comment:5> MacPorts <http://www.macports.org/> Ports system for OS X
#44346: Selfupdate fails with Undefined symbols for architecture x86_64: "_rl_username_completion_function" ---------------------------------+-------------------------------- Reporter: bugmail-macports@… | Owner: macports-tickets@… Type: defect | Status: closed Priority: Normal | Milestone: Component: base | Version: 2.3.1 Resolution: worksforme | Keywords: Port: | ---------------------------------+-------------------------------- Changes (by cal@…): * status: new => closed * resolution: => worksforme Comment: I guess moving libreadline.dylib made made the configure check decide your system didn't support readline, which in turn caused it to turn readline support off. Anyway, glad you got were able to fix it. -- Ticket URL: <https://trac.macports.org/ticket/44346#comment:6> MacPorts <http://www.macports.org/> Ports system for OS X
participants (1)
-
MacPorts