#!/bin/bash set -xe ###################################################### # Build script for Core 6.0 # ###################################################### ###################################################### # Configure extension creation parameters # ###################################################### S=$(basename $0) PACKAGE=${S%%.build} VERSION=0.9.1 SRCNAM=$PACKAGE-$VERSION.tar.bz2 WRKDIR=$PACKAGE-$VERSION EXTNAM=$PACKAGE TMPDIR=/tmp/$PACKAGE-$VERSION OUTDIR=$PWD/../../build/$(version) SRCDIR=$PWD ENTRIES=(fltk qt4 gtk-2 curses) ###################################################### # Prepare extension creation # ###################################################### rm -r -f $WRKDIR sudo rm -r -f $TMPDIR sudo rm -r -f $TMPDIR-doc for ENTRY in ${ENTRIES[@]}; do sudo rm -Rf $TMPDIR-$ENTRY done # Crete temporary directory mkdir -p $TMPDIR ###################################################### # Compile extension # ###################################################### # Export variables needed for compilation 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" export CXXFLAGS="-Os -pipe -fno-rtti -march=i486 -mtune=i686 -fexceptions -std=c++11" export LDFLAGS="-Wl,-Os" # Unpack source in to WRK directory tar -xf $SRCNAM pushd $WRKDIR tar -xf "$SRCDIR/$PACKAGE-$VERSION-fltk.tar.bz2" patch -p1 < "$SRCDIR/$PACKAGE-$VERSION-1-fltk.patch" tar -xf "$SRCDIR/$PACKAGE-$VERSION-fltk-configure.tar.bz2" patch -p1 < "$SRCDIR/$PACKAGE-$VERSION-2-configure-qt4.patch" cp ./tty/pinentry-tty.c ./fltk/pinentry-tty.c touch ./fltk/pinentry-tty.h patch -p1 < "$SRCDIR/$PACKAGE-$VERSION-3-fallback-tty.patch" # Configure,Compile,Check,Install in base temp dir PREFIX=/usr/local ./configure --prefix=/usr/local --enable-pinentry-tty --enable-pinentry-gtk2 --enable-pinentry-qt4 --enable-pinentry-fltk --enable-fallback-curses make make install DESTDIR=$TMPDIR # Delete compilation work directory popd rm -r -f $WRKDIR # Strip executables find $TMPDIR | xargs file | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded # Move files to doc extension mkdir -p $TMPDIR-doc/usr/local/share/ mv $TMPDIR/usr/local/share/info $TMPDIR-doc/usr/local/share for ENTRY in ${ENTRIES[@]}; do mkdir -p $TMPDIR-$ENTRY/usr/local/bin mv $TMPDIR/usr/local/bin/pinentry-$ENTRY $TMPDIR-$ENTRY/usr/local/bin/ mkdir -p $TMPDIR-$ENTRY/usr/local/tce.installed cat >$TMPDIR-$ENTRY/usr/local/tce.installed/$PACKAGE-$ENTRY </dev/null 2>&1 || ln -s ${PACKAGE}-${ENTRY} /usr/local/bin/pinentry EOS done unlink $TMPDIR/usr/local/bin/pinentry # if empty one rmdir $TMPDIR/usr/local/share || true ################################################### # Startup script ################################################### mkdir -p $TMPDIR/usr/local/tce.installed cat >$TMPDIR/usr/local/tce.installed/$PACKAGE </dev/null 2>&1 || ln -s pinentry-tty /usr/local/bin/pinentry EOS ################################################### # Create extensions ################################################### sudo chown -R root:root $TMPDIR sudo chown root:staff $TMPDIR/usr/local/tce.installed sudo chmod 775 $TMPDIR/usr/local/tce.installed sudo chown tc:staff $TMPDIR/usr/local/tce.installed/* sudo chmod 755 $TMPDIR/usr/local/tce.installed/* mksquashfs $TMPDIR $OUTDIR/$EXTNAM.tcz -noappend -no-xattrs mksquashfs $TMPDIR-doc $OUTDIR/$EXTNAM-doc.tcz -noappend -no-xattrs -all-root sudo rm -rf $TMPDIR rm -rf $TMPDIR-doc for ENTRY in ${ENTRIES[@]}; do sudo chown -R root:root $TMPDIR-$ENTRY sudo chown root:staff $TMPDIR-$ENTRY/usr/local/tce.installed sudo chmod 775 $TMPDIR-$ENTRY/usr/local/tce.installed sudo chown tc:staff $TMPDIR-$ENTRY/usr/local/tce.installed/* sudo chmod 755 $TMPDIR-$ENTRY/usr/local/tce.installed/* mksquashfs $TMPDIR-$ENTRY $OUTDIR/$EXTNAM-$ENTRY.tcz -noappend -no-xattrs sudo rm -rf $TMPDIR-$ENTRY done ################################################### # 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 for ENTRY in ${ENTRIES[@]}; do submitqc --libs --tcz=$EXTNAM-$ENTRY.tcz done popd