#!/bin/sh # 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. # 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 # 20151127 bkw: # - fix build on -current, in anticipation of 14.2 PRGNAM=GraphicsMagick VERSION=${VERSION:-1.3.21} BUILD=${BUILD:-1} TAG=${TAG:-_SBo} if [ -z "$ARCH" ]; then case "$( uname -m )" in i?86) ARCH=i486 ;; arm*) ARCH=arm ;; *) ARCH=$( uname -m ) ;; esac fi CWD=$(pwd) TMP=${TMP:-/tmp/SBo} PKG=$TMP/package-$PRGNAM OUTPUT=${OUTPUT:-/tmp} if [ "$ARCH" = "i486" ]; then SLKCFLAGS="-O2 -march=i486 -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 rm -rf $PKG mkdir -p $TMP $PKG $OUTPUT cd $TMP rm -rf $PRGNAM-$VERSION tar xvf $CWD/$PRGNAM-$VERSION.tar.bz2 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 \ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \ -exec chmod 644 {} \; CFLAGS="$SLKCFLAGS" \ CXXFLAGS="$SLKCFLAGS" \ ./configure \ --prefix=/usr \ --libdir=/usr/lib${LIBDIRSUFFIX} \ --mandir=/usr/man \ --docdir=/usr/doc/$PRGNAM-$VERSION \ --program-prefix= \ --with-x \ --with-frozenpaths=no \ --without-modules \ --disable-openmp \ --enable-static=no \ --enable-shared \ --with-perl \ --with-quantum-depth=16 \ --build=$ARCH-slackware-linux make INSTALLDIRS=vendor make install INSTALLDIRS=vendor DESTDIR=$PKG ### Build the perl module # 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. cd PerlMagick # munge Makefile.PL to build using the includes/libs we just installed # to $PKG, instead of systemwide ones. sed -i \ -e "/magick_CFLAGS/s,=',&-I$PKG/usr/include ," \ -e "/magick_LDFLAGS/s,=',&-L$PKG/usr/lib$LIBDIRSUFFIX ," \ Makefile.PL # don't know why we have to explicitly force -lGraphicsMagick here... perl Makefile.PL \ LIBS=-lGraphicsMagick \ PREFIX=/usr \ INSTALLDIRS=vendor \ INSTALLVENDORMAN1DIR=/usr/man/man1 \ INSTALLVENDORMAN3DIR=/usr/man/man3 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 - ### Done with perl module ### Build the tcl module, if & only if GraphicsMagick was already # installed system-wide. This means, to get tcl bindings, you have to # build twice. You can thank libtool and its .la files (with hard-coded # paths) for this stupidity. I could probably spend more time with # this and fix it (like the perl stuff above), but I suspect nobody # really cares about TclMagick. GMVER="$(pkg-config --silence-errors --modversion $PRGNAM || true)" if [ "$GMVER" = "$VERSION" ]; then cd TclMagick # LIBS needed to avoid libTclMagick.so: undefined symbol: tclStubsPtr source /usr/lib$LIBDIRSUFFIX/tclConfig.sh LIBS="$TCL_STUB_LIB_FLAG" \ CFLAGS="$SLKCFLAGS" \ CXXFLAGS="$SLKCFLAGS" \ ./configure \ --prefix=/usr \ --libdir=/usr/lib${LIBDIRSUFFIX} \ --mandir=/usr/man \ --with-magick=/usr/bin/${PRGNAM}Wand-config \ --with-tcl=/usr/lib$LIBDIRSUFFIX \ --with-tk=/usr/lib$LIBDIRSUFFIX make make install DESTDIR=$PKG WITHTCL=WITH cd - else cat < /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 "s,@WITHTCL@,$WITHTCL," $CWD/slack-desc > $PKG/install/slack-desc cd $PKG /sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}