# 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.
+
+# This has been checked with shellcheck. It complains about a lot
+# of missing quotes, but we know, e.g., that $VERSION will not have
+# spaces in it. RH chose not to fix that stuff.
+#
+# That said, the variables $BASE and $SRCDIR will cause problems if
+# they have spaces in them, but RH did not fix that, either, since
+# he thinks spaces in directory names are just a bad idea.
# A few variables need to be set, here at the top.
-# where all the source trees live
+#
+# Where we will do our work
BASE="/cvs/lyx/lyx-release";
-# where the svn directory lives
-SRCDIR="/cvs/lyx/lyx-pristine";
+# Where our git repository lives
+SRCDIR="/cvs/lyx/lyx-20";
# editor
if [ -z "$EDITOR" ]; then EDITOR=vi; fi
-# options to make, when we compile
+# Options to make, when we compile
MAKEOPTS="-j4";
-
+# 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;}');
echo "This is version $VERSION.";
echo -n "Ready to build source packages...";
read
-echo "Running svn export...";
+echo "Exporting clean tree...";
rm -Rf $BASE/lyx-export/
-svn export . $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/
+echo "Building distribution...";
$BASE/lyx-export/configure --enable-build-type=rel
if ! make lyxdist; then
echo "Couldn't make distribution!";
echo "Signatures created:"
cp -v lyx-$VERSION.tar.*.sig $BASE;
-echo -n "Ready to test compilation.";
+echo -n "Ready to test compilation...";
read
rm -Rf $BASE/lyx-test/
fi
LASTNUM=$(echo $VERSION | sed -e 's/.*\.//');
-LAST=$(($LASTNUM - 1));
+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...";
+
+if [ ! -d "$BASE/lyx-patch/" ]; then
+ mkdir "$BASE/lyx-patch/" || 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 [ ! -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
+ popd;
+ 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;
-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...";
$EDITOR patch-preamble;
PATCH="patch-$VERSION";
-cat patch-preamble patch >$PATCH;
+cat patch-preamble $BASE/lyx-export/ANNOUNCE patch >$PATCH;
gzip -c $PATCH > $PATCH.gz
-rm $PATCH.gz.sig;
+if [ -f $PATCH.gz.sig ]; then
+ rm $PATCH.gz.sig;
+fi
gpg -b $PATCH.gz
xz -zc $PATCH > $PATCH.xz
-rm $PATCH.xz.sig;
+if [ -f $PATCH.xz.sig ]; then
+ rm $PATCH.xz.sig;
+fi
gpg -b $PATCH.xz
echo -n "Patch and signatures created...";
-cp -v $PATCH.gz $PATCH.xz $BASE;
+cp -v $PATCH.gz $PATCH.gz.sig $PATCH.xz $PATCH.xz.sig $BASE;