#!/bin/bash # This script builds a maintainance LyX distribution according to # the procedure outlined at: # http://wiki.lyx.org/Devel/ReleaseProcedure # It also includes several other tests, to make sure the packages # works as it should. # Note that this is for svn, not for git. # A few variables need to be set, here at the top. # where all the source trees live BASE="/cvs/lyx/lyx-release"; # where the svn directory lives SRCDIR="/cvs/lyx/lyx-pristine"; # editor if [ -z "$EDITOR" ]; then EDITOR=vi; fi # options to make, when we compile MAKEOPTS="-j4"; cd $SRCDIR/ VERSION=$(head configure.ac | grep AC_INIT | perl -e 'while (<>) {m/(\d\.\d+\.\d+)/; print $1;}'); echo "This is version $VERSION."; echo -n "Ready to build source packages..."; read echo "Running svn export..."; rm -Rf $BASE/lyx-export/ svn export . $BASE/lyx-export/ cd $BASE/lyx-export/ ./autogen.sh rm -Rf $BASE/lyx-build/ mkdir $BASE/lyx-build/ cd $BASE/lyx-build/ $BASE/lyx-export/configure --enable-build-type=rel if ! make lyxdist; then echo "Couldn't make distribution!"; exit 1; fi echo "Packages created:"; cp -v lyx-$VERSION.tar.{gz,xz} $BASE; echo -n "Ready to build signatures..."; read gpg -b lyx-$VERSION.tar.gz gpg -b lyx-$VERSION.tar.xz echo "Signatures created:" cp -v lyx-$VERSION.tar.*.sig $BASE; echo -n "Ready to test compilation."; read rm -Rf $BASE/lyx-test/ mkdir $BASE/lyx-test/ cd $BASE/lyx-test/ tar -zxvf $BASE/lyx-build/lyx-$VERSION.tar.gz >/dev/null if ! cd lyx-$VERSION; then echo "Unable to enter build directory!"; exit 1; fi ./configure --enable-build-type=rel if make $MAKEOPTS; then echo "Compilation complete."; echo -n "Ready to run LyX..."; read src/lyx -userdir /tmp/lyx-test else echo "Compilation errors!!"; exit 1; fi LASTNUM=$(echo $VERSION | sed -e 's/.*\.//'); LAST=$(($LASTNUM - 1)); FIRST=$(echo $VERSION | sed -e 's/[0-9]*$//'); ORIGINAL=${FIRST}0; LAST=$FIRST$LAST; echo "Last version was $LAST."; echo -n "Ready to make patch..."; read cd $BASE/lyx-patch/; tar -zxvf $BASE/lyx-build/lyx-$VERSION.tar.gz >/dev/null; if [ ! -d lyx-$LAST ]; then echo "Can't find directory for last version $LAST!"; exit 1; fi diff -urN -x .svn -x version.cpp lyx-$LAST lyx-$VERSION > patch echo -n "Please check the patch..."; read $EDITOR patch; NUMFIX="th"; if [ "$LASTNUM" = "1" ]; then NUMFIX="st"; elif [ "$LASTNUM" = "2" ]; then NUMFIX="nd"; fi NUM="$LASTNUM$NUMFIX"; cat $BASE/lyx-export/development/tools/patch-preamble | \ sed -e "s/VERSION/$VERSION/; s/ORIGINAL/$ORIGINAL/; s/LAST/$LAST/; s/NUM/$NUM/;" >patch-preamble; echo -n "Please verify the patch preamble..."; read $EDITOR patch-preamble; PATCH="patch-$VERSION"; cat patch-preamble patch >$PATCH; gzip -c $PATCH > $PATCH.gz rm $PATCH.gz.sig; gpg -b $PATCH.gz xz -zc $PATCH > $PATCH.xz rm $PATCH.xz.sig; gpg -b $PATCH.xz echo -n "Patch and signatures created..."; cp -v $PATCH.gz $PATCH.xz $BASE;