387e3da3b1058116b412be01d0f4fb252e45a130
[ctsim.git] / make-dist.sh
1 #!/bin/bash 
2 #
3 # Creates debian and upstream packages
4 # Programmer: Kevin Rosenberg
5
6 set -e # abort on error
7
8 progname="`basename \"$0\"`"
9
10 usage () {
11   cat >&2 <<EOF
12 Usage: $progname [options]
13 Options:
14   -t   Tag CVS tree with current version numbers
15   -c   Use cvs-buildpackage rather than default dpkg-buildpackage
16   -l   Run lintian after building
17   -h   Print this brief help
18 EOF
19 }
20
21 opt_dpkg_buildpackage=1  # default is to use dpkg-buildpackage
22
23 # Command line processing
24 while [ $# != 0 ]; do
25     value="`echo x\"$1\" | sed -e 's/^x-.//'`"
26     case "$1" in
27         -h)  usage; exit 0           ;;
28         -t)  opt_tag=1               ;;
29         -c)  opt_dpkg_buildpackage=  ;;
30         -l)  opt_lintian=1           ;;
31          *)  usage; exit 0           ;;
32     esac
33     shift
34 done
35
36 DEBPKG=ctsim
37 PKG=ctsim
38 TOPDIR=`pwd`
39
40 VERSION=`sed -n -e "s/${DEBPKG} (\(.*\)-[0-9.]).*/\1/p" < debian/changelog  |head -1`
41 DEBVERSION=`sed -n -e "s/${DEBPKG} (\(.*\)).*/\1/p" < debian/changelog  |head -1`
42 PACKAGE_DIR=/usr/local/src/Packages/${DEBPKG}
43 DISTDIR=${PKG}-${VERSION}
44 DEBDIR=${DEBPKG}-${VERSION}
45
46 if [ -z ${opt_dpkg_buildpackage} ]; then
47   export CVSROOT=`cat CVS/Root`
48 fi
49
50 if [ ! -z ${opt_tag} ]; then
51   DEB_TAG=debian_version_`echo ${DEBVERSION} | tr . _`
52   UPSTREAM_TAG=upstream_version_`echo ${VERSION} | tr . _`
53   echo "(Re-)tagging with Debian tag '${DEB_TAG}'"
54   cvs -q rtag -d ${DEB_TAG} ${PKG} > /dev/null
55   cvs -q tag -F ${DEB_TAG} > /dev/null
56
57   # Retag with upstream tag if release not 0 or 1
58   if [ "`echo ${DEBVERSION} | egrep '\-0$\-1$]'`" != "" ]; then
59     echo "(Re-)tagging with Upstream tag '${UPSTREAM_TAG}'"
60     cvs -q rtag -d $UPSTREAM_TAG $PKG > /dev/null
61     cvs -q tag -F $UPSTREAM_TAG > /dev/null
62   fi
63 fi
64
65 if [ ! -f docs/${PKG}.htb -o ! -f docs/html/${PKG}_contents.html -o ! -f docs/${PKG}.pdf ]; then
66   echo "Making documentation"
67   pushd doc
68   make all
69   popd
70 fi
71
72 # Prepare for archive
73 cd ..
74 rm -f ${PKG}_${VERSION}.tar.gz ${DEBPKG}_${VERSION}.orig.tar.gz
75 rm -rf ${DISTDIR} ${DEBDIR} ${DISTDIR}.zip
76 cp -a ${TOPDIR} ${DISTDIR}
77
78 echo "Cleaning distribution directory ${DISTDIR}"
79 cd ${DISTDIR}
80 make distclean
81 rm -f upload.sh make-dist.sh make-doc.sh cvsbp-prepare 
82 rm -f `find . -type f -name .cvsignore`
83 rm -rf `find . -type d -name CVS`
84 rm -f `find . -type f -name '*~' -or -name '#*#' -or -name '.#*' -or -name '.*~'`
85 rm -f `find doc -type f -name \*.tex -or -name \*.aux -or \
86   -name \*.log -or -name \*.out -or -name \*.dvi`
87 rm -rf images doc stamp-h.in build-stamp configure-stamp autom4te.cache
88 cd ..
89
90 echo "Creating upstream archives"
91 rm -rf ${DISTDIR}/debian
92 GZIP=-9 tar czf ${DISTDIR}.tar.gz ${DISTDIR}
93
94 if [ "${DISTDIR}" != "${DEBDIR}" ]; then 
95   cp -a ${DISTDIR} ${DEBDIR}
96 else
97   cp -a ${DISTDIR} ${DEBDIR}-copy
98 fi
99
100 unix2dos `find ${DISTDIR} -type f -and -name '*.c' -or -name '*.h' -or \
101   -name '*.cpp' -or -name '*.sh' -or -name '*.in' -or \
102   -name 'Makefile*' -or -name ChangeLog -or -name COPYRIGHT -or -name TODO -or \
103   -name README -or -name INSTALL -or -name NEWS -or -name '*.tex' -or \
104   -name '*.hhc' -or -name '*.hhk' -or -name '*.hpj' -or -name '*.ini' -or \
105   -name COPYING* -or -name catalog` 
106 zip -rq ${DISTDIR}.zip ${DISTDIR}
107
108 rm -rf ${DISTDIR}
109 if [ "${DISTDIR}" == "${DEBDIR}" ]; then 
110   mv ${DEBDIR}-copy ${DEBDIR}
111 fi
112 GZIP=-9 tar czf ${DEBPKG}_${VERSION}.orig.tar.gz ${DEBDIR}
113
114 cp -a ${TOPDIR}/debian ${DEBDIR}
115 rm -f ${DEBDIR}/debian/.cvsignore 
116 rm -rf ${DEBDIR}/debian/CVS
117
118 echo "Building Debian files"
119 if [ -z ${opt_dpkg_buildpackage} ]; then
120   cd ${TOPDIR}
121   cvs-buildpackage -rfakeroot -kkevin@rosenberg.net -H${TOPDIR}/cvsbp-prepare -tC -i.pdf -mkevin@rosenberg.net ${DEBPKG}
122   cd ..
123 else
124   cd ${DEBDIR}
125   dpkg-buildpackage -rfakeroot -kkevin@rosenberg.net 
126   cd ..
127   mv -f ${DEBPKG}_${VERSION}* ${PACKAGE_DIR}
128 fi
129 rm -rf ${DEBDIR}
130
131 echo "Moving upstream archives to ${PACKAGE_DIR}"
132 mkdir -p /usr/local/src/Packages/${DEBPKG}
133 mv -f ${DISTDIR}.zip ${DISTDIR}.tar.gz ${PACKAGE_DIR}
134
135 if [ ! -z ${opt_lintian} ]; then
136   pushd ${PACKAGE_DIR} > /dev/null
137   lintian ${DEBPKG}_${DEBVERSION}_*.changes
138   popd > /dev/null
139 fi
140
141 cd ${TOPDIR}
142
143 exit 0
144
145