# 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
+# It also includes several other tests, to make sure the package
# works as it should.
+#DEBUG=echo;
+
+#########################################################
# A few variables need to be set, here at the top.
+# The script should not need any other customization.
#
# Where we will do our work
BASE="/cvs/lyx/lyx-release";
# Where our git repository lives
-SRCDIR="/cvs/lyx/lyx-20";
+SRCDIR="/cvs/lyx/lyx-stable"; # stable
+DEVDIR="/cvs/lyx/lyx-devel"; # devel
+
+BRANCH=$(git status | head -n1 | sed -e 's/On branch //');
+if [ $BRANCH == "master" ]; then
+ SRCDIR="$DEVDIR";
+fi
+
# editor
if [ -z "$EDITOR" ]; then EDITOR=vi; fi
+
+
+#########################################################
+# Option variables
+
# Options to make, when we compile
-MAKEOPTS="-j4";
+MAKEOPTS="-j8";
+# Compile?
+COMPILE="YES";
+# Make patch file?
+PATCH="YES";
+
+function usage() {
+echo "lyx-build [-C] [-m MAKEARGS[ [-P]";
+echo " -C: Do not test compilation";
+echo " -m MAKEARGS: Arguments for make";
+echo " -P: Do not build patch files";
+}
+
+while getopts ":Cm:Ph" opt; do
+ case $opt in
+ C ) COMPILE="";; # don't test compilation
+ m ) MAKEOPTS="$OPTARG";;
+ P ) PATCH="";; # don't build patch files
+ h ) usage; exit 0;;
+ \? ) echo "Unknown option $opt"; usage; exit 1;;
+ esac
+done
+shift $(($OPTIND - 1));
# Determine LyX version
cd $SRCDIR/
-VERSION=$(head configure.ac | grep AC_INIT | perl -e 'while (<>) {m/(\d\.\d+\.\d+)/; print $1;}');
+VERSION=$(head configure.ac | grep AC_INIT | \
+ perl -e 'while (<>) {m/AC_INIT\(\[LyX\],\[([^,]+)\]/; print $1;}');
+
+# Development release?
+DEVEL_RELEASE="";
+
+# If the version in configure.ac is e.g. "2.3.4dev", then we are building
+# a development release.
+PKG_VERSION=${VERSION%dev};
+if [ "$VERSION" != "$PKG_VERSION" ]; then
+ CURHASH=$(git rev-parse HEAD);
+ # Eight chars should be enough
+ CURHASH=${CURHASH:0:8};
+ # New version is e.g. 2.3.4dev-12649348
+ PKG_VERSION="$VERSION-$CURHASH";
+ PATCH="";
+fi
-echo "This is version $VERSION.";
+echo "This is version $PKG_VERSION.";
echo -n "Ready to build source packages...";
read
echo "Exporting clean tree...";
-rm -Rf $BASE/lyx-export/
-git checkout-index -a -f --prefix=$BASE/lyx-export/
-cd $BASE/lyx-export/
-./autogen.sh
-rm -Rf $BASE/lyx-build/
-mkdir $BASE/lyx-build/
-cd $BASE/lyx-build/
+$DEBUG rm -Rf "$BASE/lyx-export/";
+$DEBUG git checkout-index -a -f --prefix="$BASE/lyx-export/";
+$DEBUG cd "$BASE/lyx-export/";
+$DEBUG ./autogen.sh
+$DEBUG rm -Rf "$BASE/lyx-build/";
+$DEBUG mkdir "$BASE/lyx-build/";
+$DEBUG cd "$BASE/lyx-build/";
echo "Building distribution...";
-$BASE/lyx-export/configure --enable-build-type=rel
-if ! make lyxdist; then
+$DEBUG "$BASE/lyx-export/configure" --enable-build-type=rel
+if ! $DEBUG make dist; then
echo "Couldn't make distribution!";
exit 1;
fi
echo "Packages created:";
-cp -v lyx-$VERSION.tar.{gz,xz} $BASE;
+
+# This will happen with development releases
+if [ ! -f "lyx-$PKG_VERSION.tar.gz" ]; then
+ $DEBUG mv "lyx-$VERSION.tar.gz" "lyx-$PKG_VERSION.tar.gz" || exit 1;
+ $DEBUG mv "lyx-$VERSION.tar.xz" "lyx-$PKG_VERSION.tar.xz" || exit 1;
+fi
+
+$DEBUG ln lyx-$PKG_VERSION.tar.{gz,xz} $BASE/ || exit 1;
echo -n "Ready to build signatures...";
read
-gpg -b lyx-$VERSION.tar.gz
-gpg -b lyx-$VERSION.tar.xz
+$DEBUG gpg -b lyx-$PKG_VERSION.tar.gz
+$DEBUG gpg -b lyx-$PKG_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;
+$DEBUG ln lyx-$VERSION.tar.*.sig $BASE;
+
+if [ -n "$COMPILE" ]; then
+ echo -n "Ready to test compilation...";
+ read
+
+ $DEBUG rm -Rf "$BASE/lyx-test/";
+ $DEBUG mkdir "$BASE/lyx-test/";
+ $DEBUG cd "$BASE/lyx-test/";
+ $DEBUG tar -zxvf "$BASE/lyx-build/lyx-$VERSION.tar.gz";
+ if ! $DEBUG cd lyx-$PKG_VERSION; then
+ echo "Unable to enter build directory!";
+ exit 1;
+ fi
+
+ $DEBUG ./configure --enable-build-type=rel --enable-qt5
+
+ if $DEBUG make $MAKEOPTS; then
+ echo "Compilation complete.";
+ echo -n "Ready to run LyX...";
+ read;
+ $DEBUG src/lyx -userdir /tmp/lyx-test;
+ else
+ echo "Compilation errors!!";
+ exit 1;
+ fi
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;
+if [ -z "$PATCH" ]; then
+ echo "Skipping patch files.";
+ exit 0;
fi
-LASTNUM=$(echo $VERSION | sed -e 's/.*\.//');
-LAST=$(($LASTNUM - 1));
-FIRST=$(echo $VERSION | sed -e 's/[0-9]*$//');
+LASTNUM=$(echo $PKG_VERSION | sed -e 's/.*\.//');
+LAST=$((LASTNUM - 1));
+FIRST=$(echo $PKG_VERSION | sed -e 's/[0-9]*$//');
ORIGINAL=${FIRST}0;
LAST=$FIRST$LAST;
if [ ! -d "$BASE/lyx-patch/" ]; then
- mkdir "$BASE/lyx-patch/" || exit 1;
+ $DEBUG mkdir "$BASE/lyx-patch/" || exit 1;
fi
-if [ ! -d lyx-$LAST ]; then
- echo "Can't find directory for last version $LAST.";
- echo "Will try to download from LyX site....";
- read;
- wget ftp://ftp.lyx.org/pub/lyx/stable/${FIRST}x/lyx-$LAST.tar.gz;
- tar -zxvf lyx-$LAST.tar.gz;
- if [ ! -f lyx-$LAST.tar.gz ]; then
- echo "Still unable to find directory for last version $LAST.";
- exit 1;
- fi
+if [ ! -d "$BASE/lyx-patch/lyx-$LAST" ]; then
+ echo "Can't find directory for last version $LAST.";
+ echo "See if you can fix this in $BASE/lyx-patch/.";
+ echo "Try that, if you like, and then we'll continue.";
+ echo "We'll try to download from the LyX site if that does not work.";
+ read;
+
+ if [ -z "$DEBUG" ]; then
+ if [ ! -d $BASE/lyx-patch/lyx-$LAST ]; then
+ echo "Will try to download from LyX site....";
+ pushd "$BASE/lyx-patch/";
+ wget ftp://ftp.lyx.org/pub/lyx/stable/${FIRST}x/lyx-$LAST.tar.gz;
+ wget ftp://ftp.lyx.org/pub/lyx/stable/${FIRST}x/lyx-$LAST.tar.gz.sig
+ gpg -q --verify lyx-$LAST.tar.gz.sig
+ if ! [ $? == 0 ]; then
+ echo "Signature wrong!"
+ exit 1;
+ fi
+ rm lyx-$LAST.tar.gz.sig
+ tar -zxvf lyx-$LAST.tar.gz;
+ if [ ! -f lyx-$LAST.tar.gz ]; then
+ echo "Still unable to find directory for last version $LAST.";
+ exit 1;
+ fi
+ $DEBUG popd;
+ fi
+ fi
fi
echo -n "Ready to make patch against $LAST...";
read
-cd $BASE/lyx-patch/;
-tar -zxvf $BASE/lyx-build/lyx-$VERSION.tar.gz >/dev/null;
+$DEBUG cd "$BASE/lyx-patch/";
+if [ -z "$DEBUG" ]; then
+ tar -zxvf "$BASE/lyx-build/lyx-$VERSION.tar.gz" >/dev/null;
+ diff -urN -x .svn -x version.cpp lyx-$LAST lyx-$PKG_VERSION > patch;
+ echo -n "Please check the patch...";
+ read;
+ $EDITOR patch;
+else
+ $DEBUG tar -zxvf "$BASE/lyx-build/lyx-$VERSION.tar.gz";
+ $DEBUG diff -urN -x .svn -x version.cpp lyx-$LAST lyx-$PKG_VERSION;
+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="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
-if [ -f $PATCH.gz.sig ]; then
- rm $PATCH.gz.sig;
+if [ -z "$DEBUG" ]; then
+ cat "$BASE/lyx-export/development/tools/patch-preamble" | \
+ sed -e "s/VERSION/$PKG_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 "$BASE/lyx-export/ANNOUNCE" patch >$PATCH;
+ gzip -c $PATCH > $PATCH.gz
+ if [ -f $PATCH.gz.sig ]; then
+ rm $PATCH.gz.sig;
+ fi
+ gpg -b $PATCH.gz
+ xz -zc $PATCH > $PATCH.xz
+ if [ -f $PATCH.xz.sig ]; then
+ rm $PATCH.xz.sig;
+ fi
+ $DEBUG gpg -b $PATCH.xz
+
+ echo -n "Patch and signatures created...";
+ ln $PATCH.gz $PATCH.gz.sig $PATCH.xz $PATCH.xz.sig $BASE;
fi
-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.gz.sig $PATCH.xz $PATCH.xz.sig $BASE;
-
-