libgnustl: Fix broken stripped library on aarch64
authorFredrik Fornwall <fredrik@fornwall.net>
Mon, 6 Mar 2017 23:34:55 +0000 (00:34 +0100)
committerFredrik Fornwall <fredrik@fornwall.net>
Mon, 6 Mar 2017 23:34:55 +0000 (00:34 +0100)
Fixes #823.

build-package.sh
packages/libgnustl/build.sh

index 2df9b50..7281c5f 100755 (executable)
@@ -601,6 +601,7 @@ termux_step_setup_toolchain() {
                        _STL_LIBFILE=$TERMUX_STANDALONE_TOOLCHAIN/${TERMUX_HOST_PLATFORM}/lib64/libgnustl_shared.so
                fi
                cp "$_STL_LIBFILE" .
+               $STRIP --strip-unneeded libgnustl_shared.so
                $TERMUX_ELF_CLEANER libgnustl_shared.so
                ln -f -s libgnustl_shared.so libstdc++.so
        fi
index ab832c8..64e5de8 100644 (file)
@@ -1,6 +1,7 @@
 TERMUX_PKG_HOMEPAGE=http://gcc.gnu.org/onlinedocs/libstdc++/
 TERMUX_PKG_DESCRIPTION="The GNU Standard C++ Library (a.k.a. libstdc++-v3), necessary on android since the system libstdc++.so is stripped down"
 TERMUX_PKG_VERSION=$TERMUX_NDK_VERSION
+TERMUX_PKG_REVISION=1
 # Since every C++ package links against this by default (due
 # to the libstdc++.so -> libgnustl_shared.so setup in
 # build-package.sh) this package is considered essential,
@@ -8,7 +9,11 @@ TERMUX_PKG_VERSION=$TERMUX_NDK_VERSION
 # dependency on it.
 TERMUX_PKG_ESSENTIAL=yes
 
-termux_step_make_install () {
-       # Just bump timestamp to have it packaged.
-       touch $TERMUX_PREFIX/lib/libgnustl_shared.so
+termux_step_post_massage () {
+       # We take the library here after massage step to
+       # avoid stripping the library after running termux-elf-cleaner,
+       # which causes a broken library (program compiled on the
+       # device linking to the library will segfault, at least on aarch64).
+       mkdir lib
+       cp $TERMUX_PREFIX/lib/libgnustl_shared.so lib/
 }