Opened 10 years ago

Last modified 3 years ago

#43809 closed defect

port selfupgrade to base v2.3.0 fails on G4 — at Version 1

Reported by: paulccobb@… Owned by: macports-tickets@…
Priority: Normal Milestone: MacPorts 2.4.0
Component: base Version: 2.3.0
Keywords: Cc:
Port:

Description (last modified by ryandesign (Ryan Carsten Schmidt))

Today I've been trying to run 'port selfupgrade' on my PowerBook G4. It has Mac OS 10.5.8, and XCode version 3.1.4

After the command failed on several attempts, I reran with -v to get some information; at the outset, I see:

MacPorts base version 2.2.1 installed,
MacPorts base version 2.3.0 downloaded.

All appears to proceed ok until:

===> staging to destroot in vendor/tcllib-1.15
/usr/bin/tclsh8.6-64 `echo ./installer.tcl` \
		-pkg-path   /opt/local/var/macports/sources/rsync.macports.org/release/base/vendor/vendor-destroot/opt/local/libexec/macports/lib/. \
		-no-examples -no-html -no-nroff \
		-no-wait -no-gui -no-apps
/bin/sh: /usr/bin/tclsh8.6-64: Bad CPU type in executable
make[2]: *** [install-libraries] Error 126
make[1]: *** [destroot-tcllib] Error 2
make: *** [all] Error 1
Command failed: cd /opt/local/var/macports/sources/rsync.macports.org/release/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
Error: Error installing new MacPorts base: command execution failed

The invocation of /usr/bin/tclsh8.6-64 seems incorrect; the 'file' command says:

/usr/bin/tclsh8.6-64: Mach-O universal binary with 2 architectures: [ppc64: Mach-O ppc64 executable] [x86_64: Mach-O 64-bit x86_64 executable]

On my PowerBook G4, clearly neither of those architectures is going to be any help.

Looks like a better choice would be:

/usr/bin/tclsh8.6:    Mach-O universal binary with 2 architectures: [ppc: Mach-O ppc executable] [i386: Mach-O i386 executable]

I'll continue to pursue this myself, in an effort to understand why the 64-bit tclsh8.6 is being selected on what's clearly a 32-bit host; but I'm sure someone familiar with MacPorts internals could get there much more quickly. I can provide more info if needed.

Change History (1)

comment:1 Changed 10 years ago by ryandesign (Ryan Carsten Schmidt)

Description: modified (diff)

MacPorts does not support Tcl 8.6. Mac OS X 10.4 and 10.5 ship with Tcl 8.4. Mac OS X 10.6, 10.7, 10.8 and 10.9 ship with Tcl 8.5. MacPorts 2.3.0 for the first time includes its own copy of Tcl 8.5, which is what we intend to use to avoid differences between Tcl versions and insulate ourselves from a hypothetical future version of OS X in which Apple upgrades Tcl to 8.6.

It seems you have installed a version of Tcl 8.6 into /usr/bin. That's probably a bad idea, and you should uninstall it. Possibly it has overwritten Apple's copy of Tcl 8.4 that was there. If so, you should put that back by reinstalling your OS and combo updates.

It does seem like a bug that we're trying to use /usr/bin/tclsh8.6-64 (or any tclsh from /usr/bin) and we should fix that if we can figure out a way to do so.

Note: See TracTickets for help on using tickets.