9e002cd30f60101cc7ee4cbaa3cab5a9c9949d39
[uffi.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 versions
15   -c   Use cvs-buildpackage
16   -l   Run lintian on package
17   -h   Print this brief help
18 EOF
19 }
20
21 # Command line
22 while [ $# != 0 ]; do
23     value="`echo x\"$1\" | sed -e 's/^x-.//'`"
24     case "$1" in
25         -h)  usage; exit 0           ;;
26         -t)  opt_tag=1               ;;
27         -c)  opt_cvs_buildpackage=1  ;;
28         -l)  opt_lintian=1           ;;
29          *)  usage; exit 0           ;;
30     esac
31     shift
32 done
33
34 DEBPKG=cl-uffi
35 PKG=uffi
36 TOPDIR=`pwd`
37
38 VERSION=`cat VERSION`
39 DEBVERSION=`sed -n -e "s/${DEBPKG} (\(.*\)).*/\1/p" < debian/changelog  |head -1`
40 PACKAGE_DIR=/usr/local/src/Packages/${DEBPKG}
41 DISTDIR=${PKG}-${VERSION}
42 DEBDIR=${DEBPKG}-${VERSION}
43
44 if [ ! -z ${opt_cvs_buildpackage} ]; then
45   export CVSROOT=`cat CVS/Root`
46 fi
47
48 if [ ! -z ${opt_tag} ]; then
49   DEB_TAG=debian_version_`echo ${DEBVERSION} | tr . _`
50   UPSTREAM_TAG=upstream_version_`echo ${VERSION} | tr . _`
51   echo "(Re-)tagging with Debian tag '${DEB_TAG}'"
52   cvs -q rtag -d ${DEB_TAG} ${PKG} > /dev/null
53   cvs -q tag -F ${DEB_TAG} > /dev/null
54
55   # Retag with upstream tag if release not 0 or 1
56   if [ "`echo ${DEBVERSION} | egrep '\-0$\-1$]'`" != "" ]; then
57     echo "(Re-)tagging with Upstream tag '${UPSTREAM_TAG}'"
58     cvs -q rtag -d $UPSTREAM_TAG $PKG > /dev/null
59     cvs -q tag -F $UPSTREAM_TAG > /dev/null
60   fi
61 fi
62 # Prepare for archive
63 cd ..
64 rm -f ${PKG}_${VERSION}.tar.gz ${DEBPKG}_${VERSION}.orig.tar.gz
65 rm -rf ${DISTDIR} ${DEBDIR} ${DISTDIR}.zip
66 cp -a ${TOPDIR} ${DISTDIR}
67
68 echo "Cleaning distribution directory ${DISTDIR}"
69 rm -f ${DISTDIR}/upload.sh ${DISTDIR}/make-dist.sh
70 rm -f `find ${DISTDIR} -type f -name .cvsignore`
71 rm -rf `find ${DISTDIR} -type d -name CVS`
72 rm -f `find ${DISTDIR} -type f -name '*~' -or -name '#*'  -or -name '#*#'`
73 rm -f `find ${DISTDIR}/doc -type f -name \*.tex -or -name \*.aux -or \
74   -name \*.log -or -name \*.out -or -name \*.dvi`
75
76 echo "Creating upstream archives"
77 rm -rf ${DISTDIR}/debian
78 GZIP=-9 tar czf ${DISTDIR}.tar.gz ${DISTDIR}
79
80 cp -a ${DISTDIR} ${DEBDIR}
81 GZIP=-9 tar czf ${DEBPKG}_${VERSION}.orig.tar.gz ${DEBDIR}
82
83 unix2dos `find ${DISTDIR} -type f -name \*.cl -or -name \*.list -or \
84     -name \*.system -or -name Makefile -or -name ChangeLog -or \
85     -name COPYRIGHT -or -name TODO -or -name README -or -name INSTALL -or \
86     -name NEWS -or -name \*.sgml -or -name COPYING\* -or -name catalog`
87 zip -rq ${DISTDIR}.zip ${DISTDIR}
88
89 cp -a ${TOPDIR}/debian ${DEBDIR}
90 rm -f ${DEBDIR}/debian/.cvsignore 
91 rm -rf ${DEBDIR}/debian/CVS
92
93 rm -rf ${DISTDIR}
94
95 if [ -z ${opt_cvs_buildpackage} ]; then
96   cd ${DEBDIR}
97   echo "Building Debian files"
98   dpkg-buildpackage -rfakeroot -kkevin@rosenberg.net -a
99   cd ..
100 else
101   cd ${TOPDIR}
102   cvs-buildpackage -rfakeroot -kkevin@rosenberg.net -H${TOPDIR}/cvsbp-prepare -tC -i\*.pdf ${DEBPKG}
103   cd ..
104 fi
105
106 rm -rf ${DEBDIR}
107
108 echo "Moving Upstream and Debian Files to ${PACKAGE_DIR}"
109 mkdir -p /usr/local/src/Packages/${DEBPKG}
110 mv ${DEBPKG}_${VERSION}* ${PACKAGE_DIR}
111 mv ${DISTDIR}.zip ${PACKAGE_DIR}
112 mv ${DISTDIR}.tar.gz ${PACKAGE_DIR}
113
114 if [ ! -z ${opt_lintian} ]; then
115   pushd ${PACKAGE_DIR} > /dev/null
116   lintian ${DEBPKG}_${DEBVERSION}_*.changes
117   popd > /dev/null
118 fi
119
120 cd ${TOPDIR}
121
122 exit 0