Re: rust fails to build on amd64
On Thu, Mar 08, 2018 at 02:02:45AM +1100, Jonathan Gray wrote: > In trying to build rust on a system with a llvm package built with > LLVM_ENABLE_FFI that includes a shared libLLVM linked against libffi > > https://marc.info/?l=3Dopenbsd-ports&m=3D151870701912987&w=3D2 LLVM_ENABLE_FFI was previously False not True. As I see no need to enable it I'll likely commit this after verifying llvm and rust build. Index: Makefile === RCS file: /cvs/ports/devel/llvm/Makefile,v retrieving revision 1.172 diff -u -p -r1.172 Makefile --- Makefile2 Feb 2018 13:33:11 - 1.172 +++ Makefile8 Mar 2018 14:07:09 - @@ -18,7 +18,7 @@ DISTNAME =llvm-${LLVM_V}.src PKGNAME = llvm-${LLVM_V} PKGNAME-main = llvm-${LLVM_V} PKGNAME-python = py-llvm-${LLVM_V} -REVISION-main =1 +REVISION-main =2 CATEGORIES = devel DISTFILES =llvm-${LLVM_V}.src${EXTRACT_SUFX} \ cfe-${LLVM_V}.src${EXTRACT_SUFX} \ @@ -57,8 +57,10 @@ LIB_DEPENDS-python = ${BUILD_PKGPATH},-m SEPARATE_BUILD = Yes CONFIGURE_ARGS = -DLLVM_ENABLE_FFI:Bool=False \ -DLLVM_ENABLE_TERMINFO:Bool=False \ - -DLLVM_REQUIRES_RTTI:Bool=True \ + -DLLVM_ENABLE_RTTI:Bool=True \ -DCMAKE_DISABLE_FIND_PACKAGE_LibXml2:Bool=True \ + -DLLVM_LINK_LLVM_DYLIB:Bool=True \ + -DLLVM_BUILD_LLVM_DYLIB:Bool=True \ -DGO_EXECUTABLE=GO_EXECUTABLE-NOTFOUND \ -DBacktrace_LIBRARY='' Index: patches/patch-tools_llvm-shlib_CMakeLists_txt === RCS file: patches/patch-tools_llvm-shlib_CMakeLists_txt diff -N patches/patch-tools_llvm-shlib_CMakeLists_txt --- /dev/null 1 Jan 1970 00:00:00 - +++ patches/patch-tools_llvm-shlib_CMakeLists_txt 8 Mar 2018 14:07:09 - @@ -0,0 +1,26 @@ +$OpenBSD$ + +fix symbols not getting added to shared library + +Index: tools/llvm-shlib/CMakeLists.txt +--- tools/llvm-shlib/CMakeLists.txt.orig tools/llvm-shlib/CMakeLists.txt +@@ -37,15 +37,15 @@ endif() + add_llvm_library(LLVM SHARED DISABLE_LLVM_LINK_LLVM_DYLIB SONAME ${SOURCES}) + + list(REMOVE_DUPLICATES LIB_NAMES) +-if(("${CMAKE_SYSTEM_NAME}" STREQUAL "Linux") OR (MINGW) OR (HAIKU) OR ("${CMAKE_SYSTEM_NAME}" STREQUAL "FreeBSD") OR ("${CMAKE_SYSTEM_NAME}" STREQUAL "DragonFly")) # FIXME: It should be "GNU ld for elf" ++if("${CMAKE_SYSTEM_NAME}" STREQUAL "Darwin") ++ set(LIB_NAMES -Wl,-all_load ${LIB_NAMES}) ++else() + configure_file( + ${CMAKE_CURRENT_SOURCE_DIR}/simple_version_script.map.in + ${LLVM_LIBRARY_DIR}/tools/llvm-shlib/simple_version_script.map) + + # GNU ld doesn't resolve symbols in the version script. + set(LIB_NAMES -Wl,--version-script,${LLVM_LIBRARY_DIR}/tools/llvm-shlib/simple_version_script.map -Wl,--whole-archive ${LIB_NAMES} -Wl,--no-whole-archive) +-elseif("${CMAKE_SYSTEM_NAME}" STREQUAL "Darwin") +- set(LIB_NAMES -Wl,-all_load ${LIB_NAMES}) + endif() + + target_link_libraries(LLVM PRIVATE ${LIB_NAMES}) Index: pkg/PLIST-main === RCS file: /cvs/ports/devel/llvm/pkg/PLIST-main,v retrieving revision 1.5 diff -u -p -r1.5 PLIST-main --- pkg/PLIST-main 8 Sep 2017 05:58:19 - 1.5 +++ pkg/PLIST-main 8 Mar 2018 14:07:10 - @@ -1939,6 +1939,9 @@ lib/cmake/llvm/LLVMInstallSymlink.cmake lib/cmake/llvm/LLVMProcessSources.cmake lib/cmake/llvm/TableGen.cmake lib/cmake/llvm/VersionFromVCS.cmake +lib/libLLVM-${LLVM_V}.so +lib/libLLVM-5.0.so +lib/libLLVM.so lib/libLLVMAArch64AsmParser.a lib/libLLVMAArch64AsmPrinter.a lib/libLLVMAArch64CodeGen.a
rust fails to build on amd64
In trying to build rust on a system with a llvm package built with LLVM_ENABLE_FFI that includes a shared libLLVM linked against libffi https://marc.info/?l=3Dopenbsd-ports&m=3D151870701912987&w=3D2 /usr/local/lib/libLLVM-5.0.so 0x0001 (NEEDED) Shared library: [libffi.so.1.2] 0x0001 (NEEDED) Shared library: [libpthread.so.25.1] 0x0001 (NEEDED) Shared library: [libz.so.5.0] 0x0001 (NEEDED) Shared library: [libm.so.10.0] 0x0001 (NEEDED) Shared library: [libc++.so.1.0] 0x0001 (NEEDED) Shared library: [libc++abi.so.0.0] U ffi_call U ffi_prep_cif U ffi_type_double U ffi_type_float U ffi_type_pointer U ffi_type_sint16 U ffi_type_sint32 U ffi_type_sint64 U ffi_type_sint8 U ffi_type_void I see the following failure, which is similiar to https://github.com/rust-lang/rust/issues/39880 /usr/ports/pobj/rust-1.24.0/build-amd64/build/x86_64-unknown-openbsd/stage0= -rustc/x86_64-unknown-openbsd/release/deps/librustc_llvm-03fe8b1005c5e1bf.so 0x0001 (NEEDED) Shared library: [libpthread.so.25.1] 0x0001 (NEEDED) Shared library: [libz.so.5.0] 0x0001 (NEEDED) Shared library: [libm.so.10.0] 0x0001 (NEEDED) Shared library: [libc++.so.1.0] 0x0001 (NEEDED) Shared library: [libstd-3b6b56d8c88= cdc51.so] 0x0001 (NEEDED) Shared library: [libc++abi.so.0.0] 0x0001 (NEEDED) Shared library: [libc.so.92.3] U ffi_call U ffi_prep_cif U ffi_type_double U ffi_type_float U ffi_type_pointer U ffi_type_sint16 U ffi_type_sint32 U ffi_type_sint64 U ffi_type_sint8 U ffi_type_void Compiling rustc-main v0.0.0 (file:///usr/ports/pobj/rust-1.24.0/rustc-1.= 24.0-src/src/rustc) Running `/usr/ports/pobj/rust-1.24.0/build-amd64/build/bootstrap/debug= /rustc --crate-name rustc rustc/rustc.rs --error-format json --crate-type b= in --emit=3Ddep-info,link -C opt-level=3D2 --cfg 'feature=3D"jemalloc"' --c= fg 'feature=3D"llvm"' --cfg 'feature=3D"rustc_back"' --cfg 'feature=3D"rust= c_driver"' -C metadata=3Da84dc84e4f0334f7 -C extra-filename=3D-a84dc84e4f03= 34f7 --out-dir /usr/ports/pobj/rust-1.24.0/build-amd64/build/x86_64-unknown= -openbsd/stage0-rustc/x86_64-unknown-openbsd/release/deps --target x86_64-u= nknown-openbsd -L dependency=3D/usr/ports/pobj/rust-1.24.0/build-amd64/buil= d/x86_64-unknown-openbsd/stage0-rustc/x86_64-unknown-openbsd/release/deps -= L dependency=3D/usr/ports/pobj/rust-1.24.0/build-amd64/build/x86_64-unknown= -openbsd/stage0-rustc/release/deps --extern rustc_back=3D/usr/ports/pobj/ru= st-1.24.0/build-amd64/build/x86_64-unknown-openbsd/stage0-rustc/x86_64-unkn= own-openbsd/release/deps/librustc_back-d5fc11b79e855d8c.so --extern rustc_d= river=3D/usr/ports/pobj/rust-1.24.0/build-amd64/build/x86_64-unknown-openbs= d/stage0-rustc/x86_64-unknown-openbsd/release/deps/librustc_driver-e1adaacc= 77d481ac.so -L native=3D/usr/ports/pobj/rust-1.24.0/build-amd64/build/x86_6= 4-unknown-openbsd/stage0-rustc/x86_64-unknown-openbsd/release/build/backtra= ce-sys-b7ad29fc4a3c7b5a/out/.libs -L native=3D/usr/ports/pobj/rust-1.24.0/b= uild-amd64/build/x86_64-unknown-openbsd/stage0-rustc/x86_64-unknown-openbsd= /release/build/miniz-sys-32b97495796da1b5/out -L native=3D/usr/ports/pobj/r= ust-1.24.0/build-amd64/build/x86_64-unknown-openbsd/stage0-rustc/x86_64-unk= nown-openbsd/release/build/rustc_binaryen-53e24040dc201423/out/build/lib -L= native=3D/usr/ports/pobj/rust-1.24.0/build-amd64/build/x86_64-unknown-open= bsd/stage0-rustc/x86_64-unknown-openbsd/release/build/rustc_binaryen-53e240= 40dc201423/out -L native=3D/usr/ports/pobj/rust-1.24.0/build-amd64/build/x8= 6_64-unknown-openbsd/stage0-rustc/x86_64-unknown-openbsd/release/build/rust= c_llvm-052f0139555b67fb/out -L native=3D/usr/local/lib` rustc command: "/usr/ports/pobj/rust-1.24.0/rustc-bootstrap-amd64-1.24.0-20= 180213/bin/rustc" "--crate-name" "rustc" "rustc/rustc.rs" "--crate-type" "b= in" "--emit=3Ddep-info,link" "-C" "opt-level=3D2" "--cfg" "feature=3D\"jema= lloc\"" "--cfg" "feature=3D\"llvm\"" "--cfg" "feature=3D\"rustc_back\"" "--= cfg" "feature=3D\"rustc_driver\"" "-C" "metadata=3Da84dc84e4f0334f7-rustc" = "-C" "extra-filename=3D-a84dc84e4f0334f7" "--out-dir" "/usr/ports/pobj/rust= -1.24.0/build-amd64/build/x86_64-unknown-openbsd/stage0-rustc/x86_64-unknow= n-openbsd/release/deps" "--target" "x86_64-unknown-openbsd" "-L" "dependenc= y=3D/usr/ports/pobj/rust-1.24.0/build-amd64/build/x86_64-unknown-openbsd/st= age0-rustc/x86_64-unknown-openbsd/release/deps" "-L" "dependency=3D/usr/por= ts/pobj/rust-1.24.0/build-amd64/build/x86_64-unknown-openbsd/stage0-rustc/r= elease/deps" "--extern" "rustc_back=3D/usr/ports/pobj/rust-1.24.0/build-amd= 64/build/x86_64-unknown-openbsd/stage0-rustc/x86_64-unknown-openbsd/release= /deps/librustc_back-d5fc11b79e855d8c.so" "--extern" "rustc_d