#!/bin/bash set -e ###################################################### # Configure parameters S=$(basename $0) PACKAGE=${S%%.build} VERSION=1.0.0 SRCNAM=$PACKAGE-$VERSION.tar.bz2 WRKDIR=$PACKAGE-$VERSION EXTNAM=$PACKAGE TMPDIR=/tmp/$PACKAGE-$VERSION OUTDIR=$PWD/../../build/$(version) SRCDIR=$PWD MUPDF=1.8 MUPDFDIR="mupdf-${MUPDF}-source" MUPDFSRC="${MUPDFDIR}.tar.gz" ###################################################### # Build export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:/usr/lib/pkgconfig export CPPFLAGS="-I/usr/local/include -I/usr/include" export CFLAGS="-Os -pipe -march=i486 -mtune=i686 -flto -fuse-linker-plugin" export CXXFLAGS="$CFLAGS -fno-exceptions -fno-rtti" export LDFLAGS="-Wl,-Os" export CFLAGS_MUPDF="-fPIC -shared -Os -pipe -ffunction-sections -Wl,--gc-sections -march=i486 -mtune=i686" export LDFLAGS_MUPDF="$CFLAGS_MUPD" # Unpack source in to WRK directory rm -Rf "$WRKDIR" "$TMPDIR" || : tar -xf "$SRCNAM" pushd "$WRKDIR" # Build MU-PDF tar -xf "$SRCDIR/$MUPDFSRC" pushd "$MUPDFDIR" env CFLAGS="$CFLAGS_MUPDF" LDFLAGS="$LDFLAGS_MUPDF" make HAVE_GLFW=no HAVE_CURL=no HAVE_WIN32=no build=release # use system ones mv build/release/libz.a build/release/libz.a.bak mv build/release/libfreetype.a build/release/libfreetype.a.bak popd # Configure ./configure --prefix=/usr/local --with-mupdf="${PWD}/$MUPDFDIR" --disable-poppler_pdf --disable-static make # Install mkdir -p "$TMPDIR" make install DESTDIR="$TMPDIR" # Add documents mkdir -p "$TMPDIR/usr/local/share/doc/$PACKAGE" cp AUTHORS COPYING NEWS README HACKING "$TMPDIR/usr/local/share/doc/$PACKAGE/" cp "$MUPDFDIR/README" "$TMPDIR/usr/local/share/doc/$PACKAGE/README.mupdf" cp "$MUPDFDIR/COPYING" "$TMPDIR/usr/local/share/doc/$PACKAGE/COPYING.mupdf" # Add MAN-page (so pandoc is not needed) tar -xjf "${SRCDIR}/${PACKAGE}-man-${VERSION}.tar.bz2" -C "$TMPDIR/usr/local/share/" popd rm -Rf "$WRKDIR" # Strip executables find $TMPDIR | xargs file | grep ELF | cut -f 1 -d : | while read F; do test -w "$F" && unset RO || { chmod u+w "$F"; RO="1"; } strip --strip-unneeded "$F" test -n "$RO" && chmod u-w "$F" true done ###################################################### # Split to set of extensions rm -Rf "$TMPDIR-doc" "$TMPDIR-locale" "$TMPDIR-dev" "$TMPDIR-mupdf" "$TMPDIR-libtiff" || : #rm unused rm ${TMPDIR}/usr/local/lib/flviewer/*.la # Move files to dev extension mkdir -p "$TMPDIR-dev/usr/local" "$TMPDIR-dev/usr/local/lib" "$TMPDIR-dev/usr/local/share/doc/$PACKAGE" mv "$TMPDIR/usr/local/include" "$TMPDIR-dev/usr/local/" mv "$TMPDIR/usr/local/lib/pkgconfig" "$TMPDIR-dev/usr/local/lib/" mv "$TMPDIR/usr/local/share/doc/$PACKAGE/HACKING" "$TMPDIR-dev/usr/local/share/doc/$PACKAGE" # plugin libtiff mkdir -p "$TMPDIR-libtiff/usr/local/lib/flviewer" mv "$TMPDIR/usr/local/lib/flviewer/fvp_libtiff.so" "$TMPDIR-libtiff/usr/local/lib/flviewer/" # plugin mupdf mkdir -p "$TMPDIR-mupdf/usr/local/lib/flviewer" "$TMPDIR-mupdf/usr/local/share/doc/$PACKAGE" mv "$TMPDIR/usr/local/lib/flviewer/fvp_mupdf.so" "$TMPDIR-mupdf/usr/local/lib/flviewer/" mv "$TMPDIR/usr/local/share/doc/$PACKAGE/README.mupdf" "$TMPDIR-mupdf/usr/local/share/doc/$PACKAGE/" mv "$TMPDIR/usr/local/share/doc/$PACKAGE/COPYING.mupdf" "$TMPDIR-mupdf/usr/local/share/doc/$PACKAGE/" # Move files to locale extension mkdir -p "$TMPDIR-locale/usr/local/share" mv "$TMPDIR/usr/local/share/locale" "$TMPDIR-locale/usr/local/share" # Move files to doc extension mkdir -p "$TMPDIR-doc/usr/local/share/doc" mv "$TMPDIR/usr/local/share/man" "$TMPDIR-doc/usr/local/share/man" mv "$TMPDIR/usr/local/share/doc/$PACKAGE" "$TMPDIR-doc/usr/local/share/doc/$PACKAGE" # if empty one rmdir "$TMPDIR/usr/local/lib/$PACKAGE" || : rmdir "$TMPDIR/usr/local/lib" || : rmdir "$TMPDIR/usr/local/share/man" || : rmdir "$TMPDIR/usr/local/share/doc" || : rmdir "$TMPDIR/usr/local/share" || : ################################################### # Create extensions mkdir -p "$OUTDIR" mksquashfs $TMPDIR $OUTDIR/$EXTNAM.tcz -noappend -no-xattrs -all-root mksquashfs $TMPDIR-doc $OUTDIR/$EXTNAM-doc.tcz -noappend -no-xattrs -all-root mksquashfs $TMPDIR-locale $OUTDIR/$EXTNAM-locale.tcz -noappend -no-xattrs -all-root mksquashfs $TMPDIR-dev $OUTDIR/$EXTNAM-dev.tcz -noappend -no-xattrs -all-root mksquashfs $TMPDIR-dev $OUTDIR/$EXTNAM-dev.tcz -noappend -no-xattrs -all-root mksquashfs $TMPDIR-mupdf $OUTDIR/$EXTNAM-mupdf.tcz -noappend -no-xattrs -all-root mksquashfs $TMPDIR-libtiff $OUTDIR/$EXTNAM-libtiff.tcz -noappend -no-xattrs -all-root rm -rf $TMPDIR rm -rf $TMPDIR-doc rm -rf $TMPDIR-locale rm -rf $TMPDIR-dev rm -rf $TMPDIR-libtiff rm -rf $TMPDIR-mupdf ################################################### # Update info/tree/dep/build-dep cp $EXTNAM.tcz.build-dep $OUTDIR/ for INFO in *.tcz.info; do TCZ=${INFO%%.info} SIZE=$(ls -sh "$OUTDIR/$TCZ" | cut -f1 -d' ') sed -re "s/\{SIZE\}/$SIZE/g" -e "s/\{TITLE\}/$TCZ/g" -e "s/\{VERSION\}/$VERSION/g" <$INFO >$OUTDIR/$INFO if [ -f $TCZ.tree ]; then cp $TCZ.tree $OUTDIR/$TCZ.tree cat $TCZ.tree | grep -wv "$TCZ" | sed -re 's/^[ \t]+//' | sort | uniq > $OUTDIR/$TCZ.dep fi done ################################################### # generate md5/list and check package with submitqc pushd $OUTDIR submitqc --libs --tcz=$EXTNAM.tcz submitqc --libs --tcz=$EXTNAM-doc.tcz submitqc --libs --tcz=$EXTNAM-locale.tcz submitqc --libs --tcz=$EXTNAM-dev.tcz submitqc --libs --tcz=$EXTNAM-libtiff.tcz submitqc --libs --tcz=$EXTNAM-mupdf.tcz popd