1687f42a3373db0324bc4731d08014f4adab2a57
1 #!/bin/bash
2 # This code is part of GOsa (http://www.gosa-project.org)
3 # Copyright (C) 2008 GONICUS GmbH
4 #
5 # ID: $$Id$$
6 #
7 # This program is free software; you can redistribute it and/or modify
8 # it under the terms of the GNU General Public License as published by
9 # the Free Software Foundation; either version 2 of the License, or
10 # (at your option) any later version.
11 #
12 # This program is distributed in the hope that it will be useful,
13 # but WITHOUT ANY WARRANTY; without even the implied warranty of
14 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 # GNU General Public License for more details.
16 #
17 # You should have received a copy of the GNU General Public License
18 # along with this program; if not, write to the Free Software
19 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
21 # Define defaults
22 RELEASE_REASON="GOsa svn snapshot"
23 BRANCH="trunk"
24 SECTION="web"
25 SI_SECTION="utils"
26 TARGET_RELEASE="etch"
27 MAKE_PLUGINS=""
29 usage() {
30 cat <<-EOF
31 GOsa Debian package build tool. Build snapshots from selected SVN locations.
32 Usage: ${0##*/} [options]
34 Options:
35 -b|--branch Branch to export [$BRANCH]
36 -p|--plugins Comma seperate list of plugins to build. Leave empty to build all.
37 -r|--release Debian release to build for [$TARGET_RELEASE]
38 -c|--changelog Debian changelog entry [$RELEASE_REASON]
39 -s|--section Debian section to place GOsa in [$SECTION]
40 -i|--si-section Debian section to place GOsa-SI in [$SI_SECTION]
41 -h|--help this help
43 EOF
44 exit 1
45 }
47 # Import command line parameters
48 PARMS=`getopt -o brscip:,h --long branch,changelog,plugins,section,si-section,release:,help -n "${0##*/}" -- "$@"`
49 eval set -- "$PARMS"
51 while true; do
52 case "$1" in
53 -b|--branch)
54 BRANCH=$2; shift 2 ;;
55 -r|--release)
56 TARGET_RELEASE=$2; shift 2 ;;
57 -c|--changelog)
58 RELEASE_REASON=$2; shift 2 ;;
59 -p|--plugins)
60 MAKE_PLUGINS=${2//,/ }; shift 2 ;;
61 -s|--section)
62 SECTION=$2; shift 2 ;;
63 -i|--si-section)
64 SI_SECTION=$2; shift 2 ;;
65 -h|--help)
66 usage ;;
67 --)
68 shift; break ;;
69 *)
70 echo "getopt error" ;;
71 esac
72 done
74 [ $BRANCH = "trunk" ] || BRANCH="branches/$BRANCH"
75 echo "Loading svn information for '${BRANCH}'..."
76 svn co -N https://oss.gonicus.de/repositories/gosa/${BRANCH} gosa-info/ > /dev/null
77 BRANCH_REV=$(LANG=C svn info gosa-info | sed -n -e 's/^Last Changed Rev: \([0-9]*\).*$/\1/p')
78 rm -rf gosa-info
80 # Load current revision from logs
81 VERSION=$(svn cat -r "${BRANCH_REV}" https://oss.gonicus.de/repositories/gosa/${BRANCH}/gosa-core/debian/changelog \
82 | head -n 1 | sed -n -e 's/.*(\([^-]*\).*/\1/p')
83 GOSA_VER="${VERSION}+svn${BRANCH_REV}"
84 GOSA_DIR="gosa-${GOSA_VER}"
86 ORIG_FILE="gosa_${GOSA_VER}.orig.tar.gz"
88 # Export from svn...
89 [ -d "gosa-${BRANCH}" ] && rm -rf gosa-$BRANCH
90 echo "Exporting current GOsa (rev: ${BRANCH_REV}) from '${BRANCH}'..."
91 svn export -r "${BRANCH_REV}" https://oss.gonicus.de/repositories/gosa/${BRANCH}/gosa-core gosa-${BRANCH} > /dev/null
92 svn export -r "${BRANCH_REV}" https://oss.gonicus.de/repositories/gosa/${BRANCH}/gosa-si gosa-si-${BRANCH} > /dev/null
93 svn export -r "${BRANCH_REV}" https://oss.gonicus.de/repositories/gosa/${BRANCH}/gosa-plugins gosa-plugins-${BRANCH} > /dev/null
95 VERSION=$(cat "gosa-${BRANCH}/debian/changelog" | head -n 1 | sed -n -e 's/.*(\([^-]*\).*/\1/p')
96 GOSA_VER="${VERSION}+svn${BRANCH_REV}"
97 GOSA_DIR="gosa-${GOSA_VER}"
98 GOSA_SI_DIR="gosa-si-${GOSA_VER}"
100 if [ -d "gosa-${GOSA_VER}" ]
101 then
102 rm -rf "gosa-${GOSA_VER}"
103 fi
104 mv "gosa-${BRANCH}" "gosa-${GOSA_VER}"
105 mv "gosa-si-${BRANCH}" "gosa-si-${GOSA_VER}"
107 echo "Creating original sources 'gosa-${GOSA_VER}'..."
108 tar -c -f "gosa_${GOSA_VER}.orig.tar" "${GOSA_DIR}"
109 tar -c -f "gosa-si_${GOSA_VER}.orig.tar" "${GOSA_SI_DIR}"
111 echo "Compressing sources..."
112 gzip -9 "gosa_${GOSA_VER}.orig.tar"
113 gzip -9 "gosa-si_${GOSA_VER}.orig.tar"
115 export OVERRIDE_VERSION="$GOSA_VER"
116 if [ -z "$MAKE_PLUGINS" ]; then
117 MAKE_PLUGINS=$(ls -1 gosa-plugins-${BRANCH}/*/plugin.dsc | sed 's/^.*\/\([^\/]*\)\/plugin.dsc$/\1/')
118 fi
119 for plugin in $MAKE_PLUGINS; do
121 GOSA_PLUG_DIR="gosa-plugin-$plugin-${GOSA_VER}"
122 mv "gosa-plugins-${BRANCH}/$plugin" .
124 echo "Debianizing plugin $plugin"
125 yes | dh-make-gosa --section web $plugin
126 rm -rf "$plugin"
128 echo "Packing original sources 'gosa-plugin-$plugin-${GOSA_VER}'..."
129 tar -c -f "gosa-plugin-${plugin}_${GOSA_VER}.orig.tar" "${GOSA_PLUG_DIR}"
131 echo "Compressing sources..."
132 gzip -9 "gosa-plugin-${plugin}_${GOSA_VER}.orig.tar"
133 done
135 rm -rf gosa-plugins-${BRANCH}
137 echo "Deploying patches..."
138 for patch in $(find patches -type f | grep -v .svn); do
140 if echo $patch | grep -q gosa-plugin; then
141 plugin=$(echo $patch | sed 's/^.*gosa-plugin-\([^-]*\).*$/\1/g')
142 echo "* gosa-plugin-$plugin patch: $patch"
143 [ -d "gosa-plugin-${plugin}-${GOSA_VER}/debian/patches" ] || mkdir -p "gosa-plugin-${plugin}-${GOSA_VER}/debian/patches"
144 cp "$patch" gosa-plugin-${plugin}-${GOSA_VER}/debian/patches
145 else
146 echo "* gosa-core patch: $patch"
147 [ -d "${GOSA_DIR}/debian/patches" ] && mkdir -p "${GOSA_DIR}/debian/patches"
148 cp "$patch" ${GOSA_DIR}/debian/patches
149 fi
150 done
152 # Passe section im GOsa_DIR an
153 sed -i "s#^Section: web#Section: $SECTION#g" ${GOSA_DIR}/debian/control
154 sed -i "s#^Section: utils#Section: $SI_SECTION#g" ${GOSA_SI_DIR}/debian/control
156 for plugin in $MAKE_PLUGINS; do
157 GOSA_PLUGIN_DIRS="$GOSA_PLUGIN_DIRS gosa-plugin-$plugin-${GOSA_VER}"
158 done
159 for dir in $GOSA_DIR $GOSA_SI_DIR $GOSA_PLUGIN_DIRS; do
160 echo "Adapting version in $dir"
161 (cd "$dir"; echo | debchange -v "${GOSA_VER}-1${TARGET_RELEASE}1" -D "$TARGET_RELEASE" "$RELEASE_REASON" &> /dev/null)
162 [ -d $dir/debian/patches ] || continue
163 echo "Creating patch list for $dir"
164 ls -1 $dir/debian/patches | grep -v 00list | sed 's%^.*/%%g' > $dir/debian/patches/00list
165 done
167 # Update revision
168 sed -i "s/^\$svn_revision = .*$/\$svn_revision = '\$Revision: $BRANCH_REV \$';/g" $GOSA_DIR/include/functions.inc
170 if [ "$1" = "-s" ]
171 then
172 echo "Creating debian sources..."
173 for dir in $GOSA_DIR $GOSA_SI_DIR $GOSA_PLUGIN_DIRS; do
174 dpkg-source -b "$dir"
175 done
176 else
177 echo "Creating debian packages..."
178 for dir in $GOSA_DIR $GOSA_SI_DIR $GOSA_PLUGIN_DIRS; do
179 (cd "$dir"; dpkg-buildpackage -k$DEBSIGN_KEYID -rfakeroot -sa)
180 done
181 fi
183 echo "Removing gosa snapshot..."
184 for dir in $GOSA_DIR $GOSA_SI_DIR $GOSA_PLUGIN_DIRS; do
185 rm -rf "$dir"
186 done