r1972: *** empty log message ***
[ctsim.git] / make-dist.sh
index 823d4b03b3fec26893e8602ce029c8408e75966b..387e3da3b1058116b412be01d0f4fb252e45a130 100755 (executable)
-#!/bin/sh
+#!/bin/bash 
+#
+# Creates debian and upstream packages
+# Programmer: Kevin Rosenberg
+
+set -e # abort on error
+
+progname="`basename \"$0\"`"
+
+usage () {
+  cat >&2 <<EOF
+Usage: $progname [options]
+Options:
+  -t   Tag CVS tree with current version numbers
+  -c   Use cvs-buildpackage rather than default dpkg-buildpackage
+  -l   Run lintian after building
+  -h   Print this brief help
+EOF
+}
+
+opt_dpkg_buildpackage=1  # default is to use dpkg-buildpackage
+
+# Command line processing
+while [ $# != 0 ]; do
+    value="`echo x\"$1\" | sed -e 's/^x-.//'`"
+    case "$1" in
+        -h)  usage; exit 0           ;;
+        -t)  opt_tag=1               ;;
+        -c)  opt_dpkg_buildpackage=  ;;
+        -l)  opt_lintian=1           ;;
+         *)  usage; exit 0           ;;
+    esac
+    shift
+done
 
-# Creates debian and system-independent archive files
-# Programmer: Kevin Rosenberg based on script used by onShore Development
-
-set -e
-
-VERSION=`cat VERSION`
 DEBPKG=ctsim
 PKG=ctsim
-TOPDIR=`basename $PWD`
+TOPDIR=`pwd`
 
+VERSION=`sed -n -e "s/${DEBPKG} (\(.*\)-[0-9.]).*/\1/p" < debian/changelog  |head -1`
+DEBVERSION=`sed -n -e "s/${DEBPKG} (\(.*\)).*/\1/p" < debian/changelog  |head -1`
+PACKAGE_DIR=/usr/local/src/Packages/${DEBPKG}
 DISTDIR=${PKG}-${VERSION}
 DEBDIR=${DEBPKG}-${VERSION}
 
-TAG=upstream_version_`echo $VERSION | tr . _`
-echo "(re)tagging with release tag '$TAG'"
-cvs -q rtag -d $TAG $PKG
-cvs -q tag -F $TAG
-
-
-# build the tarball
-echo "building tarballs"
+if [ -z ${opt_dpkg_buildpackage} ]; then
+  export CVSROOT=`cat CVS/Root`
+fi
+
+if [ ! -z ${opt_tag} ]; then
+  DEB_TAG=debian_version_`echo ${DEBVERSION} | tr . _`
+  UPSTREAM_TAG=upstream_version_`echo ${VERSION} | tr . _`
+  echo "(Re-)tagging with Debian tag '${DEB_TAG}'"
+  cvs -q rtag -d ${DEB_TAG} ${PKG} > /dev/null
+  cvs -q tag -F ${DEB_TAG} > /dev/null
+
+  # Retag with upstream tag if release not 0 or 1
+  if [ "`echo ${DEBVERSION} | egrep '\-0$\-1$]'`" != "" ]; then
+    echo "(Re-)tagging with Upstream tag '${UPSTREAM_TAG}'"
+    cvs -q rtag -d $UPSTREAM_TAG $PKG > /dev/null
+    cvs -q tag -F $UPSTREAM_TAG > /dev/null
+  fi
+fi
+
+if [ ! -f docs/${PKG}.htb -o ! -f docs/html/${PKG}_contents.html -o ! -f docs/${PKG}.pdf ]; then
+  echo "Making documentation"
+  pushd doc
+  make all
+  popd
+fi
+
+# Prepare for archive
 cd ..
 rm -f ${PKG}_${VERSION}.tar.gz ${DEBPKG}_${VERSION}.orig.tar.gz
 rm -rf ${DISTDIR} ${DEBDIR} ${DISTDIR}.zip
 cp -a ${TOPDIR} ${DISTDIR}
 
-# Remove junk from distribution dir
-find ${DISTDIR} -type f -name .cvsignore -exec rm {} \;
-find ${DISTDIR} -type d -name CVS | xargs rm -r
-find ${DISTDIR}/doc -type f -name \*.tex -or -name \*.aux -or \
-    -name \*.log -or -name \*.out -or -name \*.dvi -or \
-    -name \*~ -or -name .\#\*  -or -name \#*\# |xargs rm -f
+echo "Cleaning distribution directory ${DISTDIR}"
+cd ${DISTDIR}
+make distclean
+rm -f upload.sh make-dist.sh make-doc.sh cvsbp-prepare 
+rm -f `find . -type f -name .cvsignore`
+rm -rf `find . -type d -name CVS`
+rm -f `find . -type f -name '*~' -or -name '#*#' -or -name '.#*' -or -name '.*~'`
+rm -f `find doc -type f -name \*.tex -or -name \*.aux -or \
+  -name \*.log -or -name \*.out -or -name \*.dvi`
+rm -rf images doc stamp-h.in build-stamp configure-stamp autom4te.cache
+cd ..
 
-# Create original distribution archives
+echo "Creating upstream archives"
 rm -rf ${DISTDIR}/debian
 GZIP=-9 tar czf ${DISTDIR}.tar.gz ${DISTDIR}
 
-cp -a ${DISTDIR} ${DEBDIR}
-GZIP=-9 tar czf ${DEBPKG}_${VERSION}.orig.tar.gz ${DEBDIR}
-
-find ${DISTDIR} -type f -and -name \*.cl -or -name \*.list -or \
-    -name \*.system -or -name Makefile -or -name ChangeLog -or \
-    -name COPYRIGHT -or -name TODO -or -name README -or -name INSTALL \
-    -or -name NEWS -or -name \*.sgml -or -name COPYING\* -or -name catalog \
-    | xargs unix2dos
+if [ "${DISTDIR}" != "${DEBDIR}" ]; then 
+  cp -a ${DISTDIR} ${DEBDIR}
+else
+  cp -a ${DISTDIR} ${DEBDIR}-copy
+fi
+
+unix2dos `find ${DISTDIR} -type f -and -name '*.c' -or -name '*.h' -or \
+  -name '*.cpp' -or -name '*.sh' -or -name '*.in' -or \
+  -name 'Makefile*' -or -name ChangeLog -or -name COPYRIGHT -or -name TODO -or \
+  -name README -or -name INSTALL -or -name NEWS -or -name '*.tex' -or \
+  -name '*.hhc' -or -name '*.hhk' -or -name '*.hpj' -or -name '*.ini' -or \
+  -name COPYING* -or -name catalog` 
 zip -rq ${DISTDIR}.zip ${DISTDIR}
 
-cp -a ${TOPDIR}/debian ${DEBDIR}
-
-cd ${DEBDIR}
-dpkg-buildpackage -rfakeroot -kkevin@b9.com -a
+rm -rf ${DISTDIR}
+if [ "${DISTDIR}" == "${DEBDIR}" ]; then 
+  mv ${DEBDIR}-copy ${DEBDIR}
+fi
+GZIP=-9 tar czf ${DEBPKG}_${VERSION}.orig.tar.gz ${DEBDIR}
 
-cd ..
+cp -a ${TOPDIR}/debian ${DEBDIR}
+rm -f ${DEBDIR}/debian/.cvsignore 
+rm -rf ${DEBDIR}/debian/CVS
+
+echo "Building Debian files"
+if [ -z ${opt_dpkg_buildpackage} ]; then
+  cd ${TOPDIR}
+  cvs-buildpackage -rfakeroot -kkevin@rosenberg.net -H${TOPDIR}/cvsbp-prepare -tC -i.pdf -mkevin@rosenberg.net ${DEBPKG}
+  cd ..
+else
+  cd ${DEBDIR}
+  dpkg-buildpackage -rfakeroot -kkevin@rosenberg.net 
+  cd ..
+  mv -f ${DEBPKG}_${VERSION}* ${PACKAGE_DIR}
+fi
 rm -rf ${DEBDIR}
-rm -rf ${DISTDIR}
 
-lintian ${DEBPKG}_${VERSION}-*.changes
+echo "Moving upstream archives to ${PACKAGE_DIR}"
+mkdir -p /usr/local/src/Packages/${DEBPKG}
+mv -f ${DISTDIR}.zip ${DISTDIR}.tar.gz ${PACKAGE_DIR}
+
+if [ ! -z ${opt_lintian} ]; then
+  pushd ${PACKAGE_DIR} > /dev/null
+  lintian ${DEBPKG}_${DEBVERSION}_*.changes
+  popd > /dev/null
+fi
 
-mkdir -p /usr/local/share/Packages/${DEBPKG}
-mv ${DEBPKG}_${VERSION}* /usr/local/share/Packages/${DEBPKG}
 cd ${TOPDIR}
+
 exit 0
+
+