summaryrefslogtreecommitdiffstats
path: root/development/icon/icon.SlackBuild
diff options
context:
space:
mode:
author Kyle Guinn2019-07-07 21:24:42 +0200
committer Willy Sudiarto Raharjo2019-07-13 03:31:02 +0200
commitb89ba185a16ad7d9f69341b7cc0920399b627fa6 (patch)
tree97967a3e13fd73310ab51c9498b3b1d484ea4d1b /development/icon/icon.SlackBuild
parent38a15d32baf99425e9c68f9056821ca348a5c0b8 (diff)
downloadslackbuilds-b89ba185a16ad7d9f69341b7cc0920399b627fa6.tar.gz
development/icon: Fix URLs, add upstream patches.
Signed-off-by: Kyle Guinn <elyk03@gmail.com>
Diffstat (limited to 'development/icon/icon.SlackBuild')
-rw-r--r--development/icon/icon.SlackBuild123
1 files changed, 68 insertions, 55 deletions
diff --git a/development/icon/icon.SlackBuild b/development/icon/icon.SlackBuild
index a981930b94..c444ae2fbe 100644
--- a/development/icon/icon.SlackBuild
+++ b/development/icon/icon.SlackBuild
@@ -2,37 +2,38 @@
# Slackware build script for icon
-# Copyright 2013 Kyle Guinn <elyk03@gmail.com>, USA
+# Copyright 2010-2019 Kyle Guinn <elyk03@gmail.com>
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
# permitted provided that the following conditions are met:
#
# 1. Redistributions of this script must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
+# notice, this list of conditions and the following disclaimer.
#
-# THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED
-# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
-# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
-# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
-# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
-# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
-# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED
+# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
+# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
PRGNAM=icon
VERSION=${VERSION:-9.5.1}
-BUILD=${BUILD:-1}
+SRCVER=v$(echo $VERSION | tr -d .)src
+BUILD=${BUILD:-2}
TAG=${TAG:-_SBo}
if [ -z "$ARCH" ]; then
- case "$(uname -m)" in
- i?86) ARCH=i486 ;;
- arm*) ARCH=arm ;;
- *) ARCH=$(uname -m) ;;
- esac
+ case "$(uname -m)" in
+ i?86) ARCH=i586 ;;
+ arm*) ARCH=arm ;;
+ *) ARCH=$(uname -m) ;;
+ esac
fi
CWD=$(pwd)
@@ -40,66 +41,78 @@ TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM-$VERSION
OUTPUT=${OUTPUT:-/tmp}
-# Removed "-O2"; enabling optimization seems to cause
-# "Run-time error 302", "memory violation"
-# whenever running icon programs.
+# At one point, enabling "-O2" appeared to cause
+# "Run-time error 302", "memory violation" (from the SIGSEGV trap)
+# whenever running icon programs. I can't reproduce it.
+# However, one of the tests fails with "-O2". Use "-O" instead
+# since it is the default in config/linux/Makedefs.
if [ "$ARCH" = "i486" ]; then
- SLKCFLAGS="-march=i486 -mtune=i686"
- LIBDIRSUFFIX=""
+ SLKCFLAGS="-O -march=i486 -mtune=i686"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "i586" ]; then
+ SLKCFLAGS="-O -march=i586 -mtune=i686"
+ LIBDIRSUFFIX=""
elif [ "$ARCH" = "i686" ]; then
- SLKCFLAGS="-march=i686 -mtune=i686"
- LIBDIRSUFFIX=""
+ SLKCFLAGS="-O -march=i686 -mtune=i686"
+ LIBDIRSUFFIX=""
elif [ "$ARCH" = "x86_64" ]; then
- SLKCFLAGS="-fPIC"
- LIBDIRSUFFIX="64"
+ SLKCFLAGS="-O -fPIC"
+ LIBDIRSUFFIX="64"
else
- SLKCFLAGS=""
- LIBDIRSUFFIX=""
+ SLKCFLAGS="-O"
+ LIBDIRSUFFIX=""
fi
set -e
-PKGVERSION=$(echo $VERSION | tr -d .)
rm -rf $PKG
mkdir -p $TMP $PKG $OUTPUT
cd $TMP
-rm -rf $PRGNAM-v${PKGVERSION}src
-tar xvf $CWD/$PRGNAM-v${PKGVERSION}src.tgz
-cd $PRGNAM-v${PKGVERSION}src
+rm -rf $PRGNAM-$SRCVER
+tar xvf $CWD/$PRGNAM-$SRCVER.tgz
+cd $PRGNAM-$SRCVER
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 \
- \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
- -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
-
-# Let's put the package in /opt/icon instead of filling /usr/lib
-# (and not a '/usr/lib/icon' subdirectory) with icon-related files.
-# The makefile will attempt to create the /opt/icon directory, but
-# doesn't use the -p option with mkdir, so we have to create only
-# its parent directory first.
-mkdir -p $PKG/opt
+chmod -R u+w,go-w,a+rX-st .
+
+# Cherry-picked bugfix and ftbfs patches from upstream
+# https://github.com/gtownsend/icon
+patch -p1 < $CWD/patches/display.patch
+patch -p1 < $CWD/patches/maxtype.patch
+patch -p1 < $CWD/patches/lexer.patch
+patch -p1 < $CWD/patches/implicit-defs.patch
+patch -p1 < $CWD/patches/glibc.patch
+
+# Installation creates bin, lib, man, and doc dirs inside the "dest" dir.
+# Edit the Install rule to avoid having to manually rearrange files.
+# The bin and lib dirs need to share a parent directory, but we don't want
+# to clutter /usr/lib with icon files, nor /usr/bin with demo programs and
+# a shared lib. Move both to /opt/icon, the suggested canonical location.
+sed -i -e "s|mkdir|mkdir -p|" \
+ -e "s|\$D/bin|\$D/opt/$PRGNAM/bin|g" \
+ -e "s|\$D/lib|\$D/opt/$PRGNAM/lib|g" \
+ -e "s|\$D/man|\$D/usr/man|g" \
+ -e "s|\$D/doc|\$D/usr/doc/$PRGNAM-$VERSION|g" Makefile
+
make X-Configure name=linux
make CFLAGS="$SLKCFLAGS"
-make Install dest=$PKG/opt/icon
+make Test
+make Samples
+make Install dest=$PKG
# Create symlinks from /usr/bin to /opt/icon/bin.
+# Anything not symlinked is a demo/sample program.
mkdir -p $PKG/usr/bin
for i in icon icont iconx vib; do
- ln -s ../../opt/icon/bin/$i $PKG/usr/bin/$i
+ ln -s /opt/$PRGNAM/bin/$i $PKG/usr/bin/$i
done
-find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF \
+find $PKG -exec file {} + | grep -e "executable" -e "shared object" | grep ELF \
| cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
-# Move man pages and docs to their usual locations.
-mkdir -p $PKG/usr/doc
-mv $PKG/opt/icon/man $PKG/usr/man
-mv $PKG/opt/icon/doc $PKG/usr/doc/$PRGNAM-$VERSION
-mv $PKG/opt/icon/README $PKG/usr/doc/$PRGNAM-$VERSION
-
-find $PKG/usr/man -type f -exec gzip -9 {} \;
+find $PKG/usr/man -type f -exec gzip -9 {} +
+mv $PKG/README $PKG/usr/doc/$PRGNAM-$VERSION
+rm $PKG/usr/doc/$PRGNAM-$VERSION/clnroff.sed
cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
mkdir -p $PKG/install