aboutsummaryrefslogtreecommitdiff
path: root/system/statifier
diff options
context:
space:
mode:
authorB. Watson <yalhcru@gmail.com>2018-01-19 15:37:49 -0500
committerWilly Sudiarto Raharjo <willysr@slackbuilds.org>2018-01-20 07:01:18 +0700
commit903aa21b7eb609f6478d49a8c2f3f5a8bee45ec7 (patch)
tree2b3dfe3384b62ecf0d841a1db50848258a10ddd8 /system/statifier
parent1f8b511d1118e756b64765109aa8fe16dc2f8688 (diff)
system/statifier: Updated for version 1.7.4, new maintainer.
Signed-off-by: B. Watson <yalhcru@gmail.com>
Diffstat (limited to 'system/statifier')
-rw-r--r--system/statifier/README41
-rw-r--r--system/statifier/detect_vdso.diff24
-rw-r--r--system/statifier/slack-desc8
-rw-r--r--system/statifier/statifier.SlackBuild35
-rw-r--r--system/statifier/statifier.info10
5 files changed, 93 insertions, 25 deletions
diff --git a/system/statifier/README b/system/statifier/README
index c9c7e17210eef..d4c8a64be2342 100644
--- a/system/statifier/README
+++ b/system/statifier/README
@@ -1,3 +1,38 @@
-Statifier combines a dynamically linked executable with its libraries into
-one large file. The result can be easier to distribute and may make a
-32-bits binary work on 64-bits.
+statifier (convert dynamic executables to statically linked)
+
+Statifier combines a dynamically linked executable with its libraries
+into one large file. The result can be easier to distribute and may
+allow a 32-bit binary to run on a 64-bit-only system.
+
+Notes:
+
+1. To get statifier to work properly, VDSO support must be disabled in
+ the kernel. This must be done on the system statifier is being run on,
+ before it's run. The converted binaries themselves don't require this,
+ only statifier itself. If you forget to do this, statifier will appear
+ to run OK, but the converted binaries will segfault when run.
+
+ For 32-bit systems only, this can be done without a reboot.
+ Execute this as root:
+
+ echo "0" > /proc/sys/vm/vdso_enabled
+
+ ...and to re-enable VDSO, replace the "0" with "1".
+
+ For 64-bit systems, you must use kernel parameters, meaning a reboot is
+ required. At the lilo (elilo, grub, etc) prompt, enter:
+
+ linux vdso=0 vdso32=0
+
+ ...or add 'append="vdso=0 vdso32=0"' to the kernel image section in
+ /etc/lilo.conf to make it permanent (not recommended).
+
+ If you run statifier with VDSO enabled, it will remind you to disable it.
+
+2. Executables converted with statifier will show up as dynamic, in
+ 'file' output, but ldd will say 'not a dynamic executable'.
+
+3. Converting 32-bit executables on a 64-bit system requires multilib
+ and probably a 32-bit statifier package. The SlackBuild maintainer
+ hasn't tested multilib, and would be interested to know what kind of
+ results you get with it.
diff --git a/system/statifier/detect_vdso.diff b/system/statifier/detect_vdso.diff
new file mode 100644
index 0000000000000..8ff51f75c56ab
--- /dev/null
+++ b/system/statifier/detect_vdso.diff
@@ -0,0 +1,24 @@
+diff -Naur statifier-1.7.4/src/statifier statifier-1.7.4.patched/src/statifier
+--- statifier-1.7.4/src/statifier 2015-10-23 05:17:13.000000000 -0400
++++ statifier-1.7.4.patched/src/statifier 2018-01-19 15:04:54.809053542 -0500
+@@ -7,4 +7,20 @@
+ # modify it under the terms of the GNU General Public License.
+ # See LICENSE file in the doc directory.
+
++# Modified by B. Watson for the SlackBuilds.org project: detects
++# whether VDSO has been disabled and prints a warning if not.
++if ldd /bin/ls | grep -q 'linux-\(gate\|vdso\)\.'; then
++ echo "VDSO is enabled. Converted binary will likely segfault when run."
++ if [ -e /proc/sys/vm/vdso_enabled ]; then
++ cat <<EOF
++Disable VDSO by running this command, as root:
++ echo "0" > /proc/sys/vm/vdso_enabled
++EOF
++ else
++ cat <<EOF
++To disable VDSO, reboot with 'vdso=0 vdso32=0' on the kernel command line.
++EOF
++ fi
++fi
++
+ ${STATIFIER_ROOT_DIR:-/usr/lib/statifier}/statifier.sh "$@"
diff --git a/system/statifier/slack-desc b/system/statifier/slack-desc
index 86d7a637ec80e..4c5e3885ccc70 100644
--- a/system/statifier/slack-desc
+++ b/system/statifier/slack-desc
@@ -6,14 +6,14 @@
# customary to leave one space after the ':' except on otherwise blank lines.
|-----handy-ruler------------------------------------------------------|
-statifier: statifier (Transform dynamic executables into static files)
+statifier: statifier (convert dynamic executables to statically linked)
statifier:
statifier: Statifier combines a dynamically linked executable with its libraries
statifier: into one large file. The result can be easier to distribute and may
-statifier: make a 32-bits binary work on 64-bits.
-statifier:
-statifier: http://statifier.sourceforge.net/
+statifier: allow a 32-bit binary to run on a 64-bit-only system.
statifier:
+statifier: For statifier to work correctly, the VDSO must be disabled in the
+statifier: kernel. See the README for details.
statifier:
statifier:
statifier:
diff --git a/system/statifier/statifier.SlackBuild b/system/statifier/statifier.SlackBuild
index af7b559276ebe..3ce16e89147db 100644
--- a/system/statifier/statifier.SlackBuild
+++ b/system/statifier/statifier.SlackBuild
@@ -2,12 +2,21 @@
# Slackware build script for statifier
-# Written by Niels Horn <niels.horn@gmail.com>
-# revision date: 2010/03/13
-# Updated by Willy Sudiarto Raharjo <willysr@slackware-id.org>
+# Written by Niels Horn <email removed>, revision date: 2010/03/13
+# Updated by Willy Sudiarto Raharjo <email removed>
+# Updated again and now maintained by B. Watson <yalhcru@gmail.com>
+
+# Licensed under the WTFPL. See http://www.wtfpl.net/txt/copying/ for details.
+
+# 20180118 bkw:
+# - take over maintenance.
+# - update for v1.7.4.
+# - grammar nitpicks in README and slack-desc.
+# - add useful info to README, like how to actually get this to work.
+# - add patch to help the user remember to disable VDSO.
PRGNAM=statifier
-VERSION=${VERSION:-1.7.2}
+VERSION=${VERSION:-1.7.4}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
@@ -31,7 +40,6 @@ elif [ "$ARCH" = "i686" ]; then
elif [ "$ARCH" = "x86_64" ]; then
LIBDIRSUFFIX="64"
else
- SLKCFLAGS="-O2"
LIBDIRSUFFIX=""
fi
@@ -46,14 +54,17 @@ cd $PRGNAM-$VERSION
chown -R root:root .
find -L . \
\( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 -o -perm 511 \) \
- -exec chmod 755 {} \; -o \
+ -exec chmod 755 {} \+ -o \
\( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
- -exec chmod 644 {} \;
+ -exec chmod 644 {} \+
# We need to patch config.x86_64 because Slackware64 is not multi-lib and we
# only have the 32-bits libraries
patch -p1 < $CWD/64pure.patch
+# If VDSO is enabled, print a warning and directions on how to disable it.
+patch -p1 < $CWD/detect_vdso.diff
+
# "usr/lib/" is hardcoded in the Makefile...
sed -i "s,usr/lib/,usr/lib${LIBDIRSUFFIX}/," src/Makefile
# And in the startup script...
@@ -68,15 +79,13 @@ make install DESTDIR=$PKG
find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF \
| cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
-( cd $PKG/usr/man
- find . -type f -exec gzip -9 {} \;
- for i in $( find . -type l ) ; do ln -s $( readlink $i ).gz $i.gz ; rm $i ; done
-)
+gzip $PKG/usr/man/man1/$PRGNAM.1
mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
cp -a \
- AUTHORS ChangeLog FAQ INSTALL LICENSE NEWS README RELEASE THANKS \
- TODO VERSION doc $PKG/usr/doc/$PRGNAM-$VERSION
+ AUTHORS ChangeLog FAQ INSTALL LICENSE NEWS \
+ README RELEASE THANKS TODO VERSION doc \
+ $PKG/usr/doc/$PRGNAM-$VERSION
cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
mkdir -p $PKG/install
diff --git a/system/statifier/statifier.info b/system/statifier/statifier.info
index 7a5ed7c512480..c167aefb6e54a 100644
--- a/system/statifier/statifier.info
+++ b/system/statifier/statifier.info
@@ -1,10 +1,10 @@
PRGNAM="statifier"
-VERSION="1.7.2"
+VERSION="1.7.4"
HOMEPAGE="http://statifier.sourceforge.net/"
-DOWNLOAD="http://downloads.sourceforge.net/statifier/statifier-1.7.2.tar.gz"
-MD5SUM="20b80e6aebc7a36d4e0435790990f248"
+DOWNLOAD="http://downloads.sourceforge.net/statifier/statifier-1.7.4.tar.gz"
+MD5SUM="e6004f1436be1d525e973536d12b44de"
DOWNLOAD_x86_64="UNSUPPORTED"
MD5SUM_x86_64=""
REQUIRES=""
-MAINTAINER="Niels Horn"
-EMAIL="niels.horn@gmail.com"
+MAINTAINER="B. Watson"
+EMAIL="yalhcru@gmail.com"