#!/bin/bash # Slackware build script for GraphicsMagick # Originally written by Giovanne Castro . # Updated by B. Watson , as the original author is # MIA. Original version had no license; I'm licensing the update under the # terms of the WTFPL. See http://www.wtfpl.net/txt/copying/ for details. # 20210910 bkw: update for v1.3.36. # 20201019 bkw: update for v1.3.35. # 20200111 bkw: update for v1.3.34, quit using sourceforge dl link. # 20191130 bkw: update for v1.3.33. # 20181201 bkw: update for v1.3.31 (BUILD=1 again). # 20181126 bkw: # - fix the perl module. at one point it really did work, but lately # people (including me) were getting 'undefined symbol' errors when # trying to load the perl module (e.g. by running findimagedupes). # Thanks to Kevin Smallman for a very helpful bug report. # - update find/chmod stuff to my personal template. # - BUILD=2 # 20180627 bkw: # - updated for v1.3.30. # - get rid of the need to build/install/build again for the Tcl bindings. # - actually install the damn perl module (when did *that* break?) # - get rid of static tcl/tk libs # - get rid of --disable-openmp (but add OPENMP=no just in case) # 20180123 bkw: updated for v1.3.28 # 20171219 bkw: updated for v1.3.27, added last few missing delegates # 20170708 bkw: updated for v1.3.26 # 20161016 bkw: updated for v1.3.25 # 20151127 bkw: fix build on -current, in anticipation of 14.2 # 20150803 bkw: # - updated for v1.3.21 # - install docs to /usr/doc/$PRGNAM-$VERSION, not /usr/share/doc # - build perl bindings (PerlMagick) # - build Tcl bindings (TclMagick) # - document optional deps in README cd $(dirname $0) ; CWD=$(pwd) PRGNAM=GraphicsMagick VERSION=${VERSION:-1.3.36} BUILD=${BUILD:-1} TAG=${TAG:-_SBo} PKGTYPE=${PKGTYPE:-tgz} if [ -z "$ARCH" ]; then case "$( uname -m )" in i?86) ARCH=i586 ;; arm*) ARCH=arm ;; *) ARCH=$( uname -m ) ;; esac fi if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE" exit 0 fi TMP=${TMP:-/tmp/SBo} PKG=$TMP/package-$PRGNAM OUTPUT=${OUTPUT:-/tmp} if [ "$ARCH" = "i586" ]; then SLKCFLAGS="-O2 -march=i586 -mtune=i686" LIBDIRSUFFIX="" elif [ "$ARCH" = "i686" ]; then SLKCFLAGS="-O2 -march=i686 -mtune=i686" LIBDIRSUFFIX="" elif [ "$ARCH" = "x86_64" ]; then SLKCFLAGS="-O2 -fPIC" LIBDIRSUFFIX="64" else SLKCFLAGS="-O2" LIBDIRSUFFIX="" fi set -e OLDVER="$(pkg-config --silence-errors --modversion $PRGNAM || true)" if [ "$OLDVER" != "" ]; then cat <&2 ************************************************************************ * * $PRGNAM is already installed (version $OLDVER). * * If the build fails, 'removepkg $PRGNAM' and try again. * * Don't say I didn't warn you. * ************************************************************************ EOF sleep 3 fi rm -rf $PKG mkdir -p $TMP $PKG $OUTPUT cd $TMP rm -rf $PRGNAM-$VERSION tar xvf $CWD/$PRGNAM-$VERSION.tar.?z* cd $PRGNAM-$VERSION chown -R root:root . find -L . -perm /111 -a \! -perm 755 -a -exec chmod 755 {} \+ -o \ \! -perm /111 -a \! -perm 644 -a -exec chmod 644 {} \+ # libfpx isn't autodetected, so let's help it a bit: if [ -e /usr/include/fpxlib.h ]; then FPXOPT=yes else FPXOPT=no fi # 20180628 bkw: OpenMP seems to work OK now, so enable it by default. In # fact it may have worked in GraphicsMagick all along: I copied the # config arguments from Pat's SlackBuild for ImageMagick... But since # I haven't done exhaustive testing, make it possible to disable: if [ "${OPENMP:-yes}" = "yes" ]; then OMPOPT=--enable-openmp WITHOMP=WITH else OMPOPT=--disable-openmp WITHOMP=WITHOUT fi CFLAGS="$SLKCFLAGS" \ CXXFLAGS="$SLKCFLAGS" \ ./configure \ $OMPOPT \ --prefix=/usr \ --libdir=/usr/lib${LIBDIRSUFFIX} \ --mandir=/usr/man \ --docdir=/usr/doc/$PRGNAM-$VERSION \ --program-prefix= \ --with-x \ --with-frozenpaths=no \ --without-modules \ --enable-static=no \ --enable-shared \ --with-perl \ --with-quantum-depth=16 \ --with-fpx=$FPXOPT \ --build=$ARCH-slackware-linux make INSTALLDIRS=vendor make install INSTALLDIRS=vendor DESTDIR=$PKG ### Build the perl module, if not disabled. # In the olden days, PerlMagick was a separate module, not part of # GraphicsMagick, and it had its own SlackBuild. These days, PerlMagick # is integrated into the GraphicsMagick source. Supposedly, PerlMagick # has to be built after GraphicsMagick is installed system-wide, but # I've come up with functional (if unattractive) way around that. # 20181126 bkw: ...which stopped working with 1.3.30. Updated this # so it works again, and as a side effect, it's slightly less repulsive # to look at. WITHPERL=WITHOUT if [ "${PERL:-yes}" = "yes" ]; then cd PerlMagick perl Makefile.PL \ PREFIX=/usr \ INSTALLDIRS=vendor \ INSTALLVENDORMAN1DIR=/usr/man/man1 \ INSTALLVENDORMAN3DIR=/usr/man/man3 sed -i "/^LDDLFLAGS/s,\$, -L$PKG/usr/lib$LIBDIRSUFFIX -l$PRGNAM," Makefile make # 'make test' will attempt to display an image, if it thinks it's running # in X. Let's not do this. Also, use the shared libs in $PKG. # The rungm.sh script sets up the environment so GraphicsMagick will look # for its support files in the source tree instead of /usr. DISPLAY="" \ LD_PRELOAD="$PKG/usr/lib$LIBDIRSUFFIX/lib$PRGNAM.so" \ ../rungm.sh make test make install DESTDIR=$PKG cd - WITHPERL=WITH fi ### Done with perl module ### Build the tcl module, if not disabled. WITHTCL=WITHOUT if [ "${TCL:-yes}" = "yes" ]; then # 20180627 bkw: the TclMagick build chokes on the .la file. # In 15.0, we will be removing all .la files. For 14.2, I'll # temporarily rename it out of the way. # You can thank libtool and its .la files (with hard-coded # paths) for this stupidity. rename .la .la_renamed $PKG/usr/lib$LIBDIRSUFFIX/*.la INC=$(pwd) cd TclMagick # LIBS needed to avoid libTclMagick.so: undefined symbol: tclStubsPtr source /usr/lib$LIBDIRSUFFIX/tclConfig.sh LIBS="$TCL_STUB_LIB_FLAG -L$PKG/usr/lib$LIBDIRSUFFIX" \ CFLAGS="$SLKCFLAGS -I$INC" \ CXXFLAGS="$SLKCFLAGS -I$INC" \ ../rungm.sh ./configure \ --with-magick=$(pwd)/../wand/GraphicsMagickWand-config \ --prefix=/usr \ --libdir=/usr/lib${LIBDIRSUFFIX} \ --mandir=/usr/man \ --enable-shared \ --disable-static \ --with-tcl=/usr/lib$LIBDIRSUFFIX \ --with-tk=/usr/lib$LIBDIRSUFFIX ../rungm.sh make ../rungm.sh make install INSTALL=$( which install ) DESTDIR=$PKG WITHTCL=WITH cd - rename .la_renamed .la $PKG/usr/lib$LIBDIRSUFFIX/*.la_renamed fi ### Done with tcl module find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \ | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true find $PKG/usr/man -type f -exec gzip -9 {} \; for i in $( find $PKG/usr/man -type l ) ; do ln -s $( readlink $i ).gz $i.gz ; rm $i ; done find $PKG -name perllocal.pod \ -o -name ".packlist" \ -o -name "*.bs" \ | xargs rm -f mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION cp -a ChangeLog *.txt $PKG/usr/doc/$PRGNAM-$VERSION cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild mkdir -p $PKG/install sed \ -e "s,@WITHOMP@,$WITHOMP," \ -e "s,@WITHTCL@,$WITHTCL," \ -e "s,@WITHPERL@,$WITHPERL," \ $CWD/slack-desc > $PKG/install/slack-desc cd $PKG /sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE