#65575 closed defect (fixed)
[OSX 10.6.8] -- Error: Failed to build ld64-274: command execution failed
Reported by: | lawlist | Owned by: | MarcusCalhoun-Lopez (Marcus Calhoun-Lopez) |
---|---|---|---|
Priority: | Normal | Milestone: | |
Component: | ports | Version: | |
Keywords: | Cc: | MarcusCalhoun-Lopez (Marcus Calhoun-Lopez) | |
Port: | ld64-274 |
Description
- Snow Leopard 10.6.8, with Xcode 3.2.6.
- This particular attempt at building ld64-274 [with the ultimate goal of building the "rust" port] was performed _without_ any toolchain update as suggested in the following link:
https://trac.macports.org/wiki/LibcxxOnOlderSystems
- I have made a couple of previous attempts at building the rust port _with_ the aforementioned toolchain update, but those prior attempts also failed.
- Terminal Output:
---> Fetching distfiles for ld64-274 ---> Attempting to fetch ld64-274.2.tar.gz from http://distfiles.macports.org/ld64 ---> Verifying checksums for ld64-274 ---> Extracting ld64-274 ---> Applying patches to ld64-274 ---> Configuring ld64-274 ---> Building ld64-274 Error: Failed to build ld64-274: command execution failed Error: See ..._var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_devel_ld64/ld64-274/main.log for details. Error: Follow https://guide.macports.org/#project.tickets if you believe there is a bug. Error: Processing of port rust failed
- Build Log (main.log)
:info:build /.../bin/clang++-mp-11 -Os -Os -std=c++11 -stdlib=libc++ -stdlib=libc++ -arch x86_64 -I/.../libexec/llvm-3.4/include -DLTO_SUPPORT -Isrc/abstraction -Isrc/ld -Isrc/ld/parsers -I/.../include -I/.../var/macports/build/_..._var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_devel_ld64/ld64-274/work/dyld-655.1.1/include -c -o src/ld/parsers/macho_relocatable_file.o src/ld/parsers/macho_relocatable_file.cpp :info:build In file included from src/ld/parsers/macho_relocatable_file.cpp:37: :info:build In file included from src/ld/parsers/libunwind/DwarfInstructions.hpp:43: :info:build In file included from src/ld/parsers/libunwind/AddressSpace.hpp:38: :info:build /.../var/macports/build/_..._var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_devel_ld64/ld64-274/work/dyld-655.1.1/include/mach-o/dyld_priv.h:255:5: error: 'TARGET_OS_WATCH' is not defined, evaluates to 0 [-Werror,-Wundef-prefix=TARGET_OS_] :info:build #if TARGET_OS_WATCH :info:build ^ :info:build /.../var/macports/build/_..._var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_devel_ld64/ld64-274/work/dyld-655.1.1/include/mach-o/dyld_priv.h:270:5: error: 'TARGET_OS_BRIDGE' is not defined, evaluates to 0 [-Werror,-Wundef-prefix=TARGET_OS_] :info:build #if TARGET_OS_BRIDGE :info:build ^ :info:build 2 errors generated. :info:build make: *** [src/ld/parsers/macho_relocatable_file.o] Error 1 :info:build make: Leaving directory `/.../var/macports/build/_..._var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_devel_ld64/ld64-274/work/ld64-274.2' :info:build Command failed: cd "/.../var/macports/build/_..._var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_devel_ld64/ld64-274/work/ld64-274.2" && /usr/bin/make -j1 -w all CC="/.../bin/clang-mp-11" CXX="/.../bin/clang++-mp-11" OTHER_CPPFLAGS="-I/.../include -I/.../var/macports/build/_..._var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_devel_ld64/ld64-274/work/dyld-655.1.1/include" OTHER_CFLAGS="-Os -arch x86_64" OTHER_CXXFLAGS="-Os -std=c++11 -stdlib=libc++ -stdlib=libc++ -arch x86_64" OTHER_LDFLAGS="-L/.../lib -Wl,-headerpad_max_install_names -lc++abi -stdlib=libc++ -arch x86_64" LLVM_CONFIG=/.../bin/llvm-config-mp-3.4 :info:build Exit code: 2 :error:build Failed to build ld64-274: command execution failed :debug:build Error code: CHILDSTATUS 89038 2 :debug:build Backtrace: command execution failed :debug:build while executing :debug:build "system {*}$notty {*}$callback {*}$nice $fullcmdstring" :debug:build invoked from within :debug:build "command_exec -callback portprogress::target_progress_callback build" :debug:build (procedure "portbuild::build_main" line 8) :debug:build invoked from within :debug:build "$procedure $targetname" :error:build See /.../var/macports/logs/_..._var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_devel_ld64/ld64-274/main.log for details.
Attachments (5)
Change History (24)
Changed 2 years ago by lawlist
Attachment: | 0.ld64-274_main.log added |
---|
Changed 2 years ago by lawlist
Attachment: | 0.ld64-274_terminal.log added |
---|
comment:1 Changed 2 years ago by lawlist
Port: | ld64-274 added |
---|
comment:2 Changed 2 years ago by kencu (Ken)
Changed 2 years ago by lawlist
Attachment: | 0.ld64-274_terminal_002.log added |
---|
Changed 2 years ago by lawlist
Attachment: | 0.ld64-274_main_002.log added |
---|
comment:3 Changed 2 years ago by lawlist
Thank you, @kencu, your suggestion resulted in a successful build of ld64-274. The attempt to build rust, however, was unsuccessful. I will submit a separate ticket for the failed rust build. There were a couple of warnings building ld64-274, but I assume those are not important. In case the updated logs might be helpful, I've attached them as version ...002.
src/ld/parsers/lto_file.cpp:51:9: warning: '__STDC_LIMIT_MACROS' macro redefined [-Wmacro-redefined] #define __STDC_LIMIT_MACROS 1 ^ /Users/HOME/.0.data/.0.emacs/.0.macports_2_7_2/libexec/llvm-5.0/include/c++/v1/stdint.h:113:12: note: previous definition is here # define __STDC_LIMIT_MACROS ^ src/ld/parsers/lto_file.cpp:52:9: warning: '__STDC_CONSTANT_MACROS' macro redefined [-Wmacro-redefined] #define __STDC_CONSTANT_MACROS 1 ^ /Users/HOME/.0.data/.0.emacs/.0.macports_2_7_2/libexec/llvm-5.0/include/c++/v1/stdint.h:116:12: note: previous definition is here # define __STDC_CONSTANT_MACROS ^ 2 warnings generated.
comment:4 Changed 2 years ago by kencu (Ken)
OK, progress. Your new error:
6755 :info:build running: /.../var/macports/build/_..._var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_lang_rust/rust/work/cargo-1.60.0-x86_64-apple-darwin/cargo/bin/cargo build --manifest-path /.../var/macports/build/_..._var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_lang_rust/rust/work/rustc-1.61.0-src/src/bootstrap/Cargo.toml --verbose --verbose --offline 6756 :info:build dyld: Library not loaded: /opt/local/lib/libiconv.2.dylib 6757 :info:build Referenced from: /.../var/macports/build/_..._var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_lang_rust/rust/work/cargo-1.60.0-x86_64-apple-darwin/cargo/bin/cargo 6758 :info:build Reason: Incompatible library version: cargo requires version 9.0.0 or later, but libiconv.2.dylib provides version 7.0.0
seems to indicate that the version of libiconv you have installed is somehow too old...
I'm on Monterey right now, but my libconv seems to be the right version:
% port info libiconv libiconv @1.17 (textproc) % otool -L /opt/local/lib/libiconv.2.dylib /opt/local/lib/libiconv.2.dylib: /opt/local/lib/libiconv.2.dylib (compatibility version 9.0.0, current version 9.1.0) /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1311.0.0)
do you have some old version of libiconv installed somehow? what does your installation show for the above ?
comment:5 Changed 2 years ago by lawlist
This is a barebones installation of OSX Snow Leopard retail DVD, with 10.6.8 update combo from Apple, and Xcode 3.2.6. The installation of Macports is a new/fresh install beginning with port -v selfupdate
and then port install rust
, _without_ the toolchain update described in the document section of ... LibcxxOnOlderSystems
. Macports has chosen libiconv 1.17 during the installation of the prerequisites to building rust.
$ port info libiconv libiconv @1.17 (textproc) Variants: universal Description: A character-set conversion library which implements the iconv() API for dealing with unicode and other types of conversion. Homepage: https://www.gnu.org/software/libiconv/ Build Dependencies: gperf, clang-3.4 Library Dependencies: libcxx Platforms: darwin, freebsd, linux License: (LGPL-2+ or GPL-3+) Maintainers: Email: ryandesign@macports.org, GitHub: ryandesign
comment:6 Changed 2 years ago by lawlist
$ /.../macports_2_7_2/bin/otool -L /.../macports_2_7_2/lib/libiconv.2.dylib /.../macports_2_7_2/lib/libiconv.2.dylib: /.../macports_2_7_2/lib/libiconv.2.dylib (compatibility version 9.0.0, current version 9.1.0) /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 125.2.11)
comment:7 Changed 2 years ago by kencu (Ken)
what do you have at here, though?
/opt/local/lib/libiconv.2.dylib
your error shows you have some different libiconv.2.dylib that is supplying version 7.0.0 there, and that is the one that is not being accepted by cargo...
now, if you have absolutely nothing there:
/opt/local/lib/libiconv.2.dylib
then that is a mystery indeed, and may indicate some issue with the port using alternative prefixes.
comment:8 Changed 2 years ago by kencu (Ken)
If you have nothing at /opt/local/lib/libiconv.2.dylib
then throw a copy of libiconv.2.dylib
there, or symlink it to that location, or update the reference to libiconv in cargo that fails and point it to the one you actually have installed, or some similar workaround to make cargo happy.
Making rust work on 10.6.8 was a helluva project, and I'm not sure that anyone has actually tried alternative prefixes with it before. There could be some issues to be discovered still.
Changed 2 years ago by lawlist
Attachment: | 0.ld64-274_main_003.log added |
---|
comment:9 Changed 2 years ago by kencu (Ken)
:info:build dyld: Library not loaded: /opt/local/libexec/openssl11/lib/libssl.1.1.dylib
just out of curiosity, do you have any version of macports installed in /opt/local??
Something sure thinks you do…
comment:10 Changed 2 years ago by kencu (Ken)
seems like 99% of your current troubles are being caused by your alternative prefix, for some reason or another…
whether it’s the rust port or your setup is not yet clear.
comment:11 Changed 2 years ago by lawlist
Yes, I'm using a custom configure installation path:
./configure --prefix=/Users/HOME/.0.data/.0.emacs/.0.macports_2_7_2 \ --with-applications-dir=/Users/HOME/.0.data/.0.emacs/.0.macports_2_7_2/.0.applications
I have now created the directory structure of /opt/local/lib
and copied the file libiconv.2.dylib
to that location and made a clean
and install
. Nothing else is located at the new path of /opt/local/
. I've attached the updated build log as ...03 to this ticket. It looks like Macports is now looking for other things at /opt/local/...
. Perhaps I could set a configuration of CPPFLAGS
and LDFLAGS
in the terminal?
The past 30 years of my life is stored in /Users/HOME/.0.data/...
, and that directory gets synced with rsync
to a few different computers, and is also backed up to dedicated backup disks by date ... A custom directory structure for the Macports installation is what I have been using for several years now.
:info:build Building rustbuild :info:build running: /Users/HOME/.0.data/.0.emacs/.0.macports_2_7_2/var/macports/build/_Users_HOME_.0.data_.0.emacs_.0.macports_2_7_2_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_lang_rust/rust/work/cargo-1.60.0-x86_64-apple-darwin/cargo/bin/cargo build --manifest-path /Users/HOME/.0.data/.0.emacs/.0.macports_2_7_2/var/macports/build/_Users_HOME_.0.data_.0.emacs_.0.macports_2_7_2_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_lang_rust/rust/work/rustc-1.61.0-src/src/bootstrap/Cargo.toml --verbose --verbose --offline :info:build dyld: Library not loaded: /opt/local/libexec/openssl11/lib/libssl.1.1.dylib :info:build Referenced from: /Users/HOME/.0.data/.0.emacs/.0.macports_2_7_2/var/macports/build/_Users_HOME_.0.data_.0.emacs_.0.macports_2_7_2_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_lang_rust/rust/work/cargo-1.60.0-x86_64-apple-darwin/cargo/bin/cargo :info:build Reason: image not found :info:build Traceback (most recent call last): :info:build File "/Users/HOME/.0.data/.0.emacs/.0.macports_2_7_2/var/macports/build/_Users_HOME_.0.data_.0.emacs_.0.macports_2_7_2_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_lang_rust/rust/work/rustc-1.61.0-src/src/bootstrap/bootstrap.py", line 1342, in <module> :info:build main() :info:build File "/Users/HOME/.0.data/.0.emacs/.0.macports_2_7_2/var/macports/build/_Users_HOME_.0.data_.0.emacs_.0.macports_2_7_2_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_lang_rust/rust/work/rustc-1.61.0-src/src/bootstrap/bootstrap.py", line 1325, in main :info:build bootstrap(help_triggered) :info:build File "/Users/HOME/.0.data/.0.emacs/.0.macports_2_7_2/var/macports/build/_Users_HOME_.0.data_.0.emacs_.0.macports_2_7_2_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_lang_rust/rust/work/rustc-1.61.0-src/src/bootstrap/bootstrap.py", line 1299, in bootstrap :info:build build.build_bootstrap() :info:build File "/Users/HOME/.0.data/.0.emacs/.0.macports_2_7_2/var/macports/build/_Users_HOME_.0.data_.0.emacs_.0.macports_2_7_2_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_lang_rust/rust/work/rustc-1.61.0-src/src/bootstrap/bootstrap.py", line 1044, in build_bootstrap :info:build run(args, env=env, verbose=self.verbose) :info:build File "/Users/HOME/.0.data/.0.emacs/.0.macports_2_7_2/var/macports/build/_Users_HOME_.0.data_.0.emacs_.0.macports_2_7_2_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_lang_rust/rust/work/rustc-1.61.0-src/src/bootstrap/bootstrap.py", line 185, in run :info:build raise RuntimeError(err) :info:build RuntimeError: failed to run: /Users/HOME/.0.data/.0.emacs/.0.macports_2_7_2/var/macports/build/_Users_HOME_.0.data_.0.emacs_.0.macports_2_7_2_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_lang_rust/rust/work/cargo-1.60.0-x86_64-apple-darwin/cargo/bin/cargo build --manifest-path /Users/HOME/.0.data/.0.emacs/.0.macports_2_7_2/var/macports/build/_Users_HOME_.0.data_.0.emacs_.0.macports_2_7_2_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_lang_rust/rust/work/rustc-1.61.0-src/src/bootstrap/Cargo.toml --verbose --verbose --offline :info:build make: *** [all] Error 1 :info:build make: Leaving directory `/Users/HOME/.0.data/.0.emacs/.0.macports_2_7_2/var/macports/build/_Users_HOME_.0.data_.0.emacs_.0.macports_2_7_2_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_lang_rust/rust/work/rustc-1.61.0-src' :info:build Command failed: cd "/Users/HOME/.0.data/.0.emacs/.0.macports_2_7_2/var/macports/build/_Users_HOME_.0.data_.0.emacs_.0.macports_2_7_2_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_lang_rust/rust/work/rustc-1.61.0-src" && /usr/bin/make -j1 -w all BOOTSTRAP_ARGS="-j1" :info:build Exit code: 2 :error:build Failed to build rust: command execution failed :debug:build Error code: CHILDSTATUS 63825 2 :debug:build Backtrace: command execution failed :debug:build while executing :debug:build "system {*}$notty {*}$callback {*}$nice $fullcmdstring" :debug:build invoked from within :debug:build "command_exec -callback portprogress::target_progress_callback build" :debug:build (procedure "portbuild::build_main" line 8) :debug:build invoked from within :debug:build "$procedure $targetname" :error:build See /Users/HOME/.0.data/.0.emacs/.0.macports_2_7_2/var/macports/logs/_Users_HOME_.0.data_.0.emacs_.0.macports_2_7_2_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_lang_rust/rust/main.log for details.
comment:12 Changed 2 years ago by kencu (Ken)
cargo seems to be looking for several different libs it needs it /opt/local.
see https://trac.macports.org/ticket/65468
there seems to be an embedded cargo binary. You may need to change all the lib references to your custom prefix in that cargo binary using install_name_tool
that’s a bit yuk, but easy enough to do…
comment:13 Changed 2 years ago by lawlist
Thank you for the suggestion. I will have another crack at this again tomorrow with a cup of coffee in hand ...
comment:14 Changed 2 years ago by kencu (Ken)
during bootstrap on 10.6 (and 10.5) the rust port, via the cargo portgroup, then via the rust portgroup, will download a bootstrap cargo binary from Marcus' personal github repo here:
https://github.com/MarcusCalhoun-Lopez/rust/releases/
that bootstrap cargo is hard-coded to look for it's libraries in /opt/local :
% otool -L cargo cargo: /opt/local/lib/libiconv.2.dylib (compatibility version 9.0.0, current version 9.1.0) /System/Library/Frameworks/Security.framework/Versions/A/Security (compatibility version 1.0.0, current version 55471.14.40) /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation (compatibility version 150.0.0, current version 855.17.0) /System/Library/Frameworks/SystemConfiguration.framework/Versions/A/SystemConfiguration (compatibility version 1.0.0, current version 596.15.0) /opt/local/lib/libz.1.dylib (compatibility version 1.0.0, current version 1.2.12) /opt/local/libexec/openssl11/lib/libssl.1.1.dylib (compatibility version 1.1.0, current version 1.1.0) /opt/local/libexec/openssl11/lib/libcrypto.1.1.dylib (compatibility version 1.1.0, current version 1.1.0) /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1197.1.1) /usr/lib/libresolv.9.dylib (compatibility version 1.0.0, current version 1.0.0)
So to use that prebuilt cargo bootstrap binary with an alternate prefix, you will need to make it happy somehow.
Either install all those libraries it wants into "/opt/local", or use install_name_tool to change the library locations in the cargo binary itself.
This port, at present, cannot be installed in an alternate prefix on < 10.7 at least.
comment:15 Changed 2 years ago by lawlist
The installation of rust
succeeded by adding three (3) of the files mentioned in the previous post, using the following directory structure:
/opt/local /opt/local/lib /opt/local/lib/libiconv.2.dylib /opt/local/libexec /opt/local/libexec/openssl11 /opt/local/libexec/openssl11/lib /opt/local/libexec/openssl11/lib/libcrypto.1.1.dylib /opt/local/libexec/openssl11/lib/libssl.1.1.dylib
I was able to see the cargo
executable during the building process in one of the temporary working directories, but I did not see it anywhere else that would permit patching with the install-name-tool
utility (which I have not yet learned how to use). Even after the successful build, I don't see a cargo
executable in the bin
directory of the Macports installation -- the new executables that appeared after the build was completed are .../bin/cargo-clippy
and .../bin/cargo-fmt
. Perhaps the cargo
executable is only available on a temporary basis while building rust
and is then later removed when the build completes ...
[Building the rust
port in the virtual machine that I am using to test the Macports installation, with all the port prerequisites / dependencies already installed, is approximately 12 hours in duration.]
comment:16 Changed 23 months ago by MarcusCalhoun-Lopez (Marcus Calhoun-Lopez)
Cc: | MarcusCalhoun-Lopez added |
---|
comment:17 Changed 23 months ago by MarcusCalhoun-Lopez (Marcus Calhoun-Lopez)
There is a pull request that attempts to fix this problem.
comment:18 Changed 23 months ago by MarcusCalhoun-Lopez (Marcus Calhoun-Lopez)
Owner: | set to MarcusCalhoun-Lopez |
---|---|
Resolution: | → fixed |
Status: | new → closed |
the likely issue here is that clang-11 is too new to tolerate small issues in the build that older clangs did tolerate.
Sure, someone should fix those. But for now, you could take 5 minutes and try building it with an older clang, perhaps like this: