Re: rust fails to build on amd64

2018-03-08 Thread Jonathan Gray
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

2018-03-07 Thread Jonathan Gray
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