macosforge / darwinbuild

Darwinbuild is a collection of tools that assist compilation of the many projects contained in Darwin, the open source base of Apple's macOS operating system.
https://macosforge.github.io/darwinbuild/
Other
128 stars 54 forks source link

darwinbuild r627 Darwin9 doesn't compile on PPC #98

Closed macosforgebot closed 14 years ago

macosforgebot commented 14 years ago

BHuntsman@… originally submitted this as ticket:100


DarwinBuild now has a build dependency on libredo_prebinding.a, which is Intel-only, even in the MacOSX SDK.

.... ld warning: in /usr/local/lib/libredo_prebinding.a, missing required architecture ppc in file Undefined symbols for architecture ppc:

"_object_file_type", referenced from:

SHA1DigestMachO::SHA1DigestMachO(char const)in Digest.o SHA1DigestMachO::SHA1DigestMachO(char const)in Digest.o

"_unprebind", referenced from:

SHA1DigestMachO::SHA1DigestMachO(char const)in Digest.o SHA1DigestMachO::SHA1DigestMachO(char const)in Digest.o

ld: symbol(s) not found for architecture ppc collect2: ld returned 1 exit status ld warning: in /usr/local/lib/libredo_prebinding.a, missing required architecture ppc64 in file Undefined symbols for architecture ppc64:

"_object_file_type", referenced from:

SHA1DigestMachO::SHA1DigestMachO(char const)in Digest.o SHA1DigestMachO::SHA1DigestMachO(char const)in Digest.o

"_unprebind", referenced from:

SHA1DigestMachO::SHA1DigestMachO(char const)in Digest.o SHA1DigestMachO::SHA1DigestMachO(char const)in Digest.o

ld: symbol(s) not found for architecture ppc64 collect2: ld returned 1 exit status lipo: can't open input file: /var/tmpccwKB14I.out (No such file or directory) make[1]: * [darwinup] Error 1 make:* [all] Error 1

macosforgebot commented 14 years ago

wsiegrist@… originally submitted this as comment:1:⁠ticket:100


What are all the commands that you ran to get to this point? Also please attach the entire build log. I'm guessing you tried to build trunk which defaults to installing an Intel-only libredo_prebinding.a for 10A432 to /usr/local, and then tried to build Darwin9 which will see that file in /usr/local and prefer it over the libredo.o that is on the Darwin9 branch. You need to remove the file from /usr/local or install the Leopard version of it from cctools_ofiles.

macosforgebot commented 14 years ago

BHuntsman@… originally submitted this as comment:2:⁠ticket:100


Please change Version to 9L30. I chose the wrong option when submitting this ticket.

macosforgebot commented 14 years ago

BHuntsman@… originally submitted this as comment:3:⁠ticket:100


I am building the Darwin9 branch of Darwinbuild, r627. My build system runs Mac OS X 10.5.8, with Xcode Tools 3.1.4. libredo_prebinding.a is still Intel-only:

bash-3.2# lipo -detailed_info /usr/local/lib/libredo_prebinding.a Fat header in: /usr/local/lib/libredo_prebinding.a fat_magic 0xcafebabe nfat_arch 2 architecture i386

cputype CPU_TYPE_I386 cpusubtype CPU_SUBTYPE_I386_ALL offset 48 size 273256 align 22\ (4)

architecture x86_64

cputype CPU_TYPE_X86_64 cpusubtype CPU_SUBTYPE_X86_64_ALL offset 273304 size 294424 align 22\ (4)

bash-3.2# ls /Developer/SDKs/MacOSX10.5.sdk/usr/local/lib/libredo_prebinding.a /Developer/SDKs/MacOSX10.5.sdk/usr/local/lib/libredo_prebinding.a bash-3.2# lipo -detailed_info /Developer/SDKs/MacOSX10.5.sdk/usr/local/lib/libredo_prebinding.a Fat header in: /Developer/SDKs/MacOSX10.5.sdk/usr/local/lib/libredo_prebinding.a fat_magic 0xcafebabe nfat_arch 2 architecture i386

cputype CPU_TYPE_I386 cpusubtype CPU_SUBTYPE_I386_ALL offset 48 size 273256 align 22\ (4)

architecture x86_64

cputype CPU_TYPE_X86_64 cpusubtype CPU_SUBTYPE_X86_64_ALL offset 273304 size 294424 align 22\ (4)

bash-3.2#

The commands used to build are:

make make install

Attached is a build log. However I tracked the problem down to the darwinup makefile. Also attached is a patch that will always use the local libredo.o, as the local libredo.o is 4-way fat.

macosforgebot commented 14 years ago

BHuntsman@… originally submitted this as attachment:Makefile.p2.patch:⁠ticket:100

macosforgebot commented 14 years ago

BHuntsman@… originally submitted this as attachment:log.txt:⁠ticket:100

macosforgebot commented 14 years ago

BHuntsman@… originally submitted this as comment:4:⁠ticket:100


Also, please pardon the formatting above. Apparently it doesn't like copy-and-paste.

macosforgebot commented 14 years ago

wsiegrist@… originally submitted this as comment:5:⁠ticket:100


Your patch prevents darwinbuild from using the file from /usr/local/lib when it is available. The real problem is you have a file in /usr/local/lib on Leopard. Did you try building trunk on that box before trying to build the Darwin9 branch? Right now, trunk puts that file in /usr/local/lib which is not the best behavior. I'll be fixing that soon, but your problem is probably solved by removing that file.

macosforgebot commented 14 years ago

BHuntsman@… originally submitted this as comment:6:⁠ticket:100


Your patch prevents darwinbuild from using the file from /usr/local/lib when it is available.

Yes, that was purposeful. /usr/local/lib/libredo_prebinding.a is supplied by Apple, is it not? I thought it came with Xcode 3.1.4 or thereabouts? Either way, it is provided as Intel-only.

Or are you saying that it comes with DarwinBuild trunk (Darwin10)? Because yes, I attempted to build trunk on this box shortly before the release branches became available.

Regardless, does it hurt to not build against libredo_prebinding.a (using instead the included libredo.o) in all cases?

macosforgebot commented 14 years ago

wsiegrist@… originally submitted this as comment:7:⁠ticket:100


Your attempt to build trunk on Leopard is what installed the file into /usr/local/lib. Remove that file. There's no need to patch the Makefile.