On 2020-01-04 12:37, Ximin Luo wrote:
> Aurelien Jarno:
> > On 2020-01-04 01:56, Ximin Luo wrote:
> >> Source: z3
> >> Version: 4.8.7-2
> >> Severity: important
> >> Tags: patch
> >>
> >> Dear Maintainer,
> >>
> >> Please apply the attached patch to fix the FTBFS on riscv64.
> >>
> > 
> > Thanks for the patch. I however do not get why it disables java
> > support. Both javahelper and default-jdk are available on riscv64.
> > 
> > In addition to that there is no need to add a depends on libatomic1, it
> > is (indirectly) part of build-essential.
> > 
> 
> Mirroring our IRC discussion on #debian-ports for the record:
> 
> - I disabled java on riscv64 because I couldn't make it work when 
> cross-building from amd64 to riscv64, but it was during an early part of my 
> experimentation and perhaps you are right and it doesn't have to be disabled.

I have actually found that while the dependencies are there, the
java packages are not built. I have verified they build fine on riscv64.
Please find the patch attached.

> - You are working on a better way to fix this, using -pthread instead of 
> -lpthread -latomic. In any case the cross-compiling patch from my OP should 
> still be useful, as it allows one to test with a regular schroot rather than 
> qemu-riscv64.

I confirm this approach work. By using -pthread instead of -lpthread,
threads support is enabled, including linking with libatomic if
necessary, instead of just linking with the thread library.

Aurelien

-- 
Aurelien Jarno                          GPG: 4096R/1DDD8C9B
aurel...@aurel32.net                 http://www.aurel32.net
diff -Nru z3-4.8.7/debian/control z3-4.8.7/debian/control
--- z3-4.8.7/debian/control	2019-12-09 13:39:38.000000000 +0100
+++ z3-4.8.7/debian/control	2020-01-04 21:31:27.000000000 +0100
@@ -87,7 +87,7 @@
 
 Package: libz3-java
 Section: java
-Architecture: amd64 arm64 armel armhf i386 mips mips64el mipsel powerpc ppc64el s390x alpha kfreebsd-amd64 kfreebsd-i386 powerpcspe sparc64 x32
+Architecture: amd64 arm64 armel armhf i386 mips mips64el mipsel powerpc ppc64el s390x alpha kfreebsd-amd64 kfreebsd-i386 powerpcspe riscv64 sparc64 x32
 Multi-Arch: foreign
 Depends: libz3-jni (>= ${binary:Version}), libz3-jni (<< ${source:Version}.1~), libz3-dev, ${misc:Depends}, ${java:Depends}
 Description: theorem prover from Microsoft Research - java bindings
@@ -98,7 +98,7 @@
 
 Package: libz3-jni
 Section: java
-Architecture: amd64 arm64 armel armhf i386 mips mips64el mipsel powerpc ppc64el s390x alpha kfreebsd-amd64 kfreebsd-i386 powerpcspe sparc64 x32
+Architecture: amd64 arm64 armel armhf i386 mips mips64el mipsel powerpc ppc64el s390x alpha kfreebsd-amd64 kfreebsd-i386 powerpcspe riscv64 sparc64 x32
 Multi-Arch: same
 Pre-Depends: ${misc:Pre-Depends}
 Depends: libz3-dev (= ${binary:Version}), ${misc:Depends}, ${shlibs:Depends}
diff -Nru z3-4.8.7/debian/patches/06-pthread.patch z3-4.8.7/debian/patches/06-pthread.patch
--- z3-4.8.7/debian/patches/06-pthread.patch	1970-01-01 01:00:00.000000000 +0100
+++ z3-4.8.7/debian/patches/06-pthread.patch	2020-01-04 21:31:27.000000000 +0100
@@ -0,0 +1,25 @@
+Description: Link with -pthread instead of -lpthread to correctly enable threads support
+Author: Aurelien Jarno <aure...@debian.org>
+Forwarded: no
+Last-Update: 2020-01-04
+---
+This patch header follows DEP-3: http://dep.debian.net/deps/dep3/
+--- z3-4.8.7.orig/scripts/mk_util.py
++++ z3-4.8.7/scripts/mk_util.py
+@@ -2621,13 +2621,13 @@ def mk_config():
+         config.write('LINK_FLAGS=\n')
+         config.write('LINK_OUT_FLAG=-o \n')
+         if is_linux() and (build_static_lib() or build_static_bin()):
+-            config.write('LINK_EXTRA_FLAGS=-Wl,--whole-archive -lpthread -Wl,--no-whole-archive %s\n' % LDFLAGS)
++            config.write('LINK_EXTRA_FLAGS=-Wl,--whole-archive -pthread -Wl,--no-whole-archive %s\n' % LDFLAGS)
+         else:
+-            config.write('LINK_EXTRA_FLAGS=-lpthread %s\n' % LDFLAGS)
++            config.write('LINK_EXTRA_FLAGS=-pthread %s\n' % LDFLAGS)
+         config.write('SO_EXT=%s\n' % SO_EXT)
+         config.write('SLINK=%s\n' % CXX)
+         config.write('SLINK_FLAGS=%s\n' % SLIBFLAGS)
+-        config.write('SLINK_EXTRA_FLAGS=-lpthread %s\n' % SLIBEXTRAFLAGS)
++        config.write('SLINK_EXTRA_FLAGS=-pthread %s\n' % SLIBEXTRAFLAGS)
+         config.write('SLINK_OUT_FLAG=-o \n')
+         config.write('OS_DEFINES=%s\n' % OS_DEFINES)
+         if is_verbose():
diff -Nru z3-4.8.7/debian/patches/series z3-4.8.7/debian/patches/series
--- z3-4.8.7/debian/patches/series	2019-12-09 13:39:38.000000000 +0100
+++ z3-4.8.7/debian/patches/series	2020-01-04 21:31:27.000000000 +0100
@@ -4,3 +4,4 @@
 03-kfreebsd.patch
 04-soname.patch
 05-reproducibility.patch
+06-pthread.patch

Reply via email to