index e0f1cbc3b4e6daf85399bc185cde10295d99c57d..297eb5920bc2e62a5fd6f753728caa1580c83d72 100755 (executable)
-#!/bin/sh
+#!/bin/bash
# This code is part of GOsa (http://www.gosa-project.org)
# Copyright (C) 2008 GONICUS GmbH
#
# This code is part of GOsa (http://www.gosa-project.org)
# Copyright (C) 2008 GONICUS GmbH
#
SI_SECTION="utils"
TARGET_RELEASE="etch"
MAKE_PLUGINS=""
SI_SECTION="utils"
TARGET_RELEASE="etch"
MAKE_PLUGINS=""
+MAKE_GOTO=""
+GOTO=""
+PBUILDER=""
+NOT_RELEASED="heimdal dak dfs glpi apache2"
+GOTO_NOT_RELEASED="apache-directory-studio goto-cd libresourcepool-net-ldap-perl-1.002 libresourcepool-perl-1.0104 openproj ptc syslinux konch ldm openssh-4.3p2"
+DEBIAN_PKG="remove"
+NO_SVN="use"
+EXTRACT=`pwd`
usage() {
cat <<-EOF
usage() {
cat <<-EOF
- GOsa Debian package build tool. Build snapshots from selected SVN locations.
+ GOsa Debian package build tool. Build snapshots from selected SVN locations or local directories.
Usage: ${0##*/} [options]
Options:
Usage: ${0##*/} [options]
Options:
- -b|--branch Branch to export [$BRANCH]
- -p|--plugins Comma seperate list of plugins to build. Leave empty to build all.
- -r|--release Debian release to build for [$TARGET_RELEASE]
- -c|--changelog Debian changelog entry [$RELEASE_REASON]
- -s|--section Debian section to place GOsa in [$SECTION]
- -i|--si-section Debian section to place GOsa-SI in [$SI_SECTION]
- -d|--debian-pkg Don't clear up debian packages for plugins (for developers only)
- -h|--help this help
+ -b|--branch Branch to export [$BRANCH]
+ -p|--plugins Comma seperate list of plugins to build. Leave empty to build all.
+ -e|--experimental Build not released plugins (for testers and developers only)
+ -r|--release Debian release to build for [$TARGET_RELEASE]
+ -c|--changelog Debian changelog entry [$RELEASE_REASON]
+ -s|--section Debian section to place GOsa in [$SECTION]
+ -i|--si-section Debian section to place GOsa-SI in [$SI_SECTION]
+ -d|--debian-pkg Don't clear up debian packages for plugins (for developers only)
+ -n|--no-svn Don't extract gosa from svn (when internet connectivity is not present)
+ -x|--extract-dir Directory where the checkout is for no-svn
+ -g|--build-goto Build the goto2 packages
+ -l|--use-pbuilder Use pbuilder to build the packages
+ -h|--help this help
EOF
exit 1
EOF
exit 1
done
# Import command line parameters
done
# Import command line parameters
-PARMS=`getopt -o d::b:r:s:c:i:p:,h --long branch:,changelog:,plugins:,section:,si-section:,release:,help -n "${0##*/}" -- "$@"`
+PARMS=`getopt -o e::d::b:r:s:c:i:p:n:x:g::l::,h --long branch:,changelog:,plugins:,section:,si-section:,release:,help -n "${0##*/}" -- "$@"`
eval set -- "$PARMS"
while true; do
eval set -- "$PARMS"
while true; do
RELEASE_REASON=$2; shift 2 ;;
-p|--plugins)
MAKE_PLUGINS=$(echo $2 | tr ',' ' '); shift 2 ;;
RELEASE_REASON=$2; shift 2 ;;
-p|--plugins)
MAKE_PLUGINS=$(echo $2 | tr ',' ' '); shift 2 ;;
+ -e|--experimental)
+ NOT_RELEASED=""; shift 2;;
-s|--section)
SECTION=$2; shift 2 ;;
-i|--si-section)
SI_SECTION=$2; shift 2 ;;
-d|--debian-pkg)
-s|--section)
SECTION=$2; shift 2 ;;
-i|--si-section)
SI_SECTION=$2; shift 2 ;;
-d|--debian-pkg)
- DEBIAN_PKG=$2; shift 2 ;;
+ DEBIAN_PKG=""; shift 2 ;;
+ -n|--no-svn)
+ NO_SVN=""; shift 2;;
+ -x|--extract-dir)
+ EXTRACT=$2; shift 2;;
+ -g|--build-goto)
+ GOTO="use"; shift 2;;
+ -l|--use-pbuilder)
+ PBUILDER="use"; shift 2;;
-h|--help)
usage ;;
--)
-h|--help)
usage ;;
--)
esac
done
esac
done
-[ $BRANCH = "trunk" ] || BRANCH="branches/$BRANCH"
-echo "Loading svn information for '${BRANCH}'..."
-svn co -N https://oss.gonicus.de/repositories/gosa/${BRANCH} gosa-info/ > /dev/null
-BRANCH_REV=$(LANG=C svn info gosa-info | sed -n -e 's/^Last Changed Rev: \([0-9]*\).*$/\1/p')
-rm -rf gosa-info
+if [ "$NO_SVN" = "use" ]
+then
+ echo "Loading svn information for gosa '${BRANCH}'..."
+ svn co -N https://oss.gonicus.de/repositories/gosa/${BRANCH} gosa-info/ > /dev/null
+ BRANCH_REV=$(LANG=C svn info gosa-info | sed -n -e 's/^Last Changed Rev: \([0-9]*\).*$/\1/p')
+ rm -rf gosa-info
+
+ if [ "$GOTO" = "use" ]
+ then
+ echo "Loading svn information for goto '${BRANCH}'..."
+ svn co -N https://oss.gonicus.de/repositories/goto/${BRANCH} goto-info/ > /dev/null
+ GOTO_BRANCH_REV=$(LANG=C svn info goto-info | sed -n -e 's/^Last Changed Rev: \([0-9]*\).*$/\1/p')
+ rm -rf goto-info
+ fi
+else
+ echo "Loading svn information for gosa '${BRANCH}' from local checkout ..."
+ BRANCH_REV=$(LANG=C svn info $EXTRACT/gosa-core | sed -n -e 's/^Last Changed Rev: \([0-9]*\).*$/\1/p')
+
+ if [ "$GOTO" = "use" ]
+ then
+ echo "Loading svn information for goto '${BRANCH}' from local checkout ..."
+ GOTO_BRANCH_REV=$(LANG=C svn info $EXTRACT/goto | sed -n -e 's/^Last Changed Rev: \([0-9]*\).*$/\1/p')
+ fi
+fi
+
+if [ "$NO_SVN" = "use" ]
+then
+ # Load current revision from logs
+ VERSION=$(svn cat -r "${BRANCH_REV}" https://oss.gonicus.de/repositories/gosa/${BRANCH}/gosa-core/debian/changelog \
+ | head -n 1 | sed -n -e 's/.*(\([^-]*\).*/\1/p')
+ if [ "$BRANCH" == "trunk" ]; then
+ GOSA_VER="${VERSION}+svn${BRANCH_REV}"
+
+ if [ "$GOTO" = "use" ]
+ then
+ GOTO_VER="+svn${GOTO_BRANCH_REV}"
+ fi
+ else
+ GOSA_VER="${VERSION}"
+
+ if [ "$GOTO" = "use" ]
+ then
+ GOTO_VER=""
+ fi
+
+ fi
+
+else
+ # Load current revision from logs
+ VERSION=$(cat $EXTRACT/gosa-core/debian/changelog | head -n 1 | sed -n -e 's/.*(\([^-]*\).*/\1/p')
+
+ if [ "$BRANCH" == "trunk" ]; then
+ GOSA_VER="${VERSION}+svn${BRANCH_REV}"
+ else
+ GOSA_VER="${VERSION}"
+ fi
+ echo $GOSA_VER
+fi
-# Load current revision from logs
-VERSION=$(svn cat -r "${BRANCH_REV}" https://oss.gonicus.de/repositories/gosa/${BRANCH}/gosa-core/debian/changelog \
- | head -n 1 | sed -n -e 's/.*(\([^-]*\).*/\1/p')
-GOSA_VER="${VERSION}+svn${BRANCH_REV}"
GOSA_DIR="gosa-${GOSA_VER}"
ORIG_FILE="gosa_${GOSA_VER}.orig.tar.gz"
GOSA_DIR="gosa-${GOSA_VER}"
ORIG_FILE="gosa_${GOSA_VER}.orig.tar.gz"
-# Export from svn...
-[ -d "gosa-${BRANCH}" ] && rm -rf gosa-$BRANCH
-echo "Exporting current GOsa (rev: ${BRANCH_REV}) from '${BRANCH}'..."
-svn export -r "${BRANCH_REV}" https://oss.gonicus.de/repositories/gosa/${BRANCH}/gosa-core gosa-${BRANCH} > /dev/null
-svn export -r "${BRANCH_REV}" https://oss.gonicus.de/repositories/gosa/${BRANCH}/gosa-si gosa-si-${BRANCH} > /dev/null
-svn export -r "${BRANCH_REV}" https://oss.gonicus.de/repositories/gosa/${BRANCH}/gosa-plugins gosa-plugins-${BRANCH} > /dev/null
+if [ "$NO_SVN" = "use" ]
+then
+ # Export from svn...
+ BNAME=$(basename $BRANCH)
+ [ -d "gosa-${BNAME}" ] && rm -rf gosa-$BNAME
+ echo "Exporting current GOsa (rev: ${BRANCH_REV}) from '${BRANCH}'..."
+ svn export -r "${BRANCH_REV}" https://oss.gonicus.de/repositories/gosa/${BRANCH}/gosa-core gosa-${BNAME} > /dev/null
+ svn export -r "${BRANCH_REV}" https://oss.gonicus.de/repositories/gosa/${BRANCH}/gosa-si gosa-si-${BNAME} > /dev/null
+ svn export -r "${BRANCH_REV}" https://oss.gonicus.de/repositories/gosa/${BRANCH}/gosa-plugins gosa-plugins-${BNAME} > /dev/null
+
+ if [ "$GOTO" = "use" ]
+ then
+ echo "Exporting current GOto (rev: ${GOTO_BRANCH_REV}) from '${BRANCH}'..."
+ svn export -r "${GOTO_BRANCH_REV}" https://oss.gonicus.de/repositories/goto/${BRANCH}/ goto-${BNAME} > /dev/null
+ fi
+else
+ # Export from local checkout...
+ echo "Exporting current GOsa (rev: ${BRANCH_REV}) from localcheckout '${BRANCH}'..."
+ BNAME=$(basename $BRANCH)
+ cp -r gosa-core gosa-${GOSA_VER}
+ mv gosa-si gosa-si-${GOSA_VER}
+ mv gosa-plugins gosa-plugins-${BNAME}
+
+ if [ "$GOTO" = "use" ]
+ then
+ echo "Exporting current GOto (rev: ${GOTO_BRANCH_REV}) from localcheckout '${BRANCH}'..."
+ BNAME=$(basename $BRANCH)
+ mv goto goto-${BNAME}
+ fi
+fi
+
+if [ "$NO_SVN" = "use" ]
+then
+ VERSION=$(cat "gosa-${BNAME}/debian/changelog" | head -n 1 | sed -n -e 's/.*(\([^-]*\).*/\1/p')
+fi
-VERSION=$(cat "gosa-${BRANCH}/debian/changelog" | head -n 1 | sed -n -e 's/.*(\([^-]*\).*/\1/p')
-GOSA_VER="${VERSION}+svn${BRANCH_REV}"
GOSA_DIR="gosa-${GOSA_VER}"
GOSA_SI_DIR="gosa-si-${GOSA_VER}"
GOSA_DIR="gosa-${GOSA_VER}"
GOSA_SI_DIR="gosa-si-${GOSA_VER}"
+GOTO_DIR="goto-${BNAME}"
+
+if [ "$NO_SVN" = "use" ]
+then
+ if [ "$BNAME" != "$GOSA_VER" ]
+ then
+ rm -rf "gosa-${GOSA_VER}"
+ fi
+fi
+
+if [ "$NO_SVN" = "use" ]
+then
+ if [ "$BNAME" != "$GOSA_VER" ]
+ then
+ mv "gosa-${BNAME}" "gosa-${GOSA_VER}"
+ mv "gosa-si-${BNAME}" "gosa-si-${GOSA_VER}"
+ fi
+fi
+
+echo "cleaning svn entries from sources"
+find ${GOSA_DIR} -type d -name ".svn" -exec rm -rf {} \; >/dev/null 2>&1
+find ${GOSA_SI_DIR} -type d -name ".svn" -exec rm -rf {} \; >/dev/null 2>&1
+find gosa-plugins-${BNAME} -type d -name ".svn" -exec rm -rf {} \; >/dev/null 2>&1
-if [ -d "gosa-${GOSA_VER}" ]
+if [ "$GOTO" = "use" ]
then
then
- rm -rf "gosa-${GOSA_VER}"
+ find goto-${BNAME} -type d -name ".svn" -exec rm -rf {} \; >/dev/null 2>&1
fi
fi
-mv "gosa-${BRANCH}" "gosa-${GOSA_VER}"
-mv "gosa-si-${BRANCH}" "gosa-si-${GOSA_VER}"
echo "Creating original sources 'gosa-${GOSA_VER}'..."
echo "Creating original sources 'gosa-${GOSA_VER}'..."
-tar -c -f "gosa_${GOSA_VER}.orig.tar" "${GOSA_DIR}"
-tar -c -f "gosa-si_${GOSA_VER}.orig.tar" "${GOSA_SI_DIR}"
+tar -c --exclude "${GOSA_DIR}"/debian -f "gosa_${GOSA_VER}.orig.tar" "${GOSA_DIR}"
+tar -c --exclude "${GOSA_SI_DIR}"/debian -f "gosa-si_${GOSA_VER}.orig.tar" "${GOSA_SI_DIR}"
echo "Compressing sources..."
gzip -f -9 "gosa_${GOSA_VER}.orig.tar"
echo "Compressing sources..."
gzip -f -9 "gosa_${GOSA_VER}.orig.tar"
export OVERRIDE_VERSION="$GOSA_VER"
if [ -z "$MAKE_PLUGINS" ]; then
export OVERRIDE_VERSION="$GOSA_VER"
if [ -z "$MAKE_PLUGINS" ]; then
- MAKE_PLUGINS=$(ls -1 gosa-plugins-${BRANCH}/*/plugin.dsc | sed 's/^.*\/\([^\/]*\)\/plugin.dsc$/\1/')
+ MAKE_PLUGINS=$(ls -1 gosa-plugins-${BNAME}/*/plugin.dsc | sed 's/^.*\/\([^\/]*\)\/plugin.dsc$/\1/')
+ for i in $NOT_RELEASED; do
+ MAKE_PLUGINS=$(echo -n $MAKE_PLUGINS | sed "s/$i//")
+ done
+fi
+
+if [ "TARGET_RELEASE" == "etch" ]; then
+ NOBREAKS="--no-break"
fi
fi
+
for plugin in $MAKE_PLUGINS; do
GOSA_PLUG_DIR="gosa-plugin-$plugin-${GOSA_VER}"
for plugin in $MAKE_PLUGINS; do
GOSA_PLUG_DIR="gosa-plugin-$plugin-${GOSA_VER}"
- mv "gosa-plugins-${BRANCH}/$plugin" .
+
+ echo "gosa plugin dir" $GOSA_PLUG_DIR
+
+ mv "gosa-plugins-${BNAME}/$plugin" .
echo "Debianizing plugin $plugin"
echo "Debianizing plugin $plugin"
- yes | dh-make-gosa --section $SECTION $plugin
+ yes | dh-make-gosa $NOBREAKS --section $SECTION $plugin
rm -rf "$plugin"
echo "Packing original sources 'gosa-plugin-$plugin-${GOSA_VER}'..."
rm -rf "$plugin"
echo "Packing original sources 'gosa-plugin-$plugin-${GOSA_VER}'..."
- tar -c -f "gosa-plugin-${plugin}_${GOSA_VER}.orig.tar" "${GOSA_PLUG_DIR}"
+ tar -c --exclude "gosa-plugin-${plugin}-${GOSA_VER}/debian" -f "gosa-plugin-${plugin}_${GOSA_VER}.orig.tar" "${GOSA_PLUG_DIR}"
echo "Compressing sources..."
gzip -f -9 "gosa-plugin-${plugin}_${GOSA_VER}.orig.tar"
done
echo "Compressing sources..."
gzip -f -9 "gosa-plugin-${plugin}_${GOSA_VER}.orig.tar"
done
-rm -rf gosa-plugins-${BRANCH}
+rm -rf gosa-plugins-${BNAME}
+
+if [ "$GOTO" = "use" ]
+then
+ MAKE_GOTO=$(ls -1 goto-${BNAME}/)
+
+ for i in $GOTO_NOT_RELEASED; do
+ MAKE_GOTO=$(echo -n $MAKE_GOTO | sed "s/$i//")
+ done
+
+ for goto in $MAKE_GOTO; do
+
+ mv "goto-${BNAME}/$goto" .
+
+ echo "Packing original sources '$goto'..."
+ GOTO_VERSION=$(cat $goto/debian/changelog | head -n 1 | sed -n -e 's/.*(\([^-]*\).*/\1/p')
+
+ if [ "$GOTO_VER" = "" ]
+ then
+ tar -c --exclude "$goto/debian" -f "${goto}_${GOTO_VERSION}.orig.tar" $goto
+ echo "Compressing sources..."
+ gzip -f -9 "${goto}_${GOTO_VERSION}.orig.tar"
+ else
+ tar -c --exclude "$goto/debian" -f "${goto}_${GOTO_VERSION}${GOTO_VER}.orig.tar" $goto
+
+ echo "Compressing svn sources..."
+ gzip -f -9 "${goto}_${GOTO_VERSION}${GOTO_VER}.orig.tar"
+
+ echo "Adapting version in $goto"
+ (cd "$goto"; echo | debchange -v "${GOTO_VERSION}${GOTO_VER}-1${TARGET_RELEASE}1" -D "$TARGET_RELEASE" "$RELEASE_REASON")
+ fi
+
+ done
+
+ rm -rf goto-${BNAME}
+fi
echo "Deploying patches..."
for patch in $(find patches -type f | grep -v .svn); do
echo "Deploying patches..."
for patch in $(find patches -type f | grep -v .svn); do
fi
done
fi
done
-# Passe section im GOsa_DIR an
+# Put section in GOsa_DIR
sed -i "s#^Section: web#Section: $SECTION#g" ${GOSA_DIR}/debian/control
sed -i "s#^Section: utils#Section: $SI_SECTION#g" ${GOSA_SI_DIR}/debian/control
for plugin in $MAKE_PLUGINS; do
GOSA_PLUGIN_DIRS="$GOSA_PLUGIN_DIRS gosa-plugin-$plugin-${GOSA_VER}"
done
sed -i "s#^Section: web#Section: $SECTION#g" ${GOSA_DIR}/debian/control
sed -i "s#^Section: utils#Section: $SI_SECTION#g" ${GOSA_SI_DIR}/debian/control
for plugin in $MAKE_PLUGINS; do
GOSA_PLUGIN_DIRS="$GOSA_PLUGIN_DIRS gosa-plugin-$plugin-${GOSA_VER}"
done
+
+if [ "$GOTO" = "use" ]
+then
+ for goto in $MAKE_GOTO; do
+ GOTO_DIRS="$GOTO_DIRS $goto"
+ done
+fi
+
for dir in $GOSA_DIR $GOSA_SI_DIR $GOSA_PLUGIN_DIRS; do
echo "Adapting version in $dir"
for dir in $GOSA_DIR $GOSA_SI_DIR $GOSA_PLUGIN_DIRS; do
echo "Adapting version in $dir"
- (cd "$dir"; echo | debchange -v "${GOSA_VER}-1${TARGET_RELEASE}1" -D "$TARGET_RELEASE" "$RELEASE_REASON" >/dev/null 2>&1)
+ if [ "$TARGET_RELEASE" == "unstable" ]; then
+ (cd "$dir"; echo | debchange -v "${GOSA_VER}" "$RELEASE_REASON" >/dev/null 2>&1)
+ else
+ (cd "$dir"; echo | debchange -v "${GOSA_VER}-1${TARGET_RELEASE}1" -D "$TARGET_RELEASE" "$RELEASE_REASON" >/dev/null 2>&1)
+ fi
[ -d $dir/debian/patches ] || continue
echo "Creating patch list for $dir"
ls -1 $dir/debian/patches | grep -v 00list | sed 's%^.*/%%g' > $dir/debian/patches/00list
[ -d $dir/debian/patches ] || continue
echo "Creating patch list for $dir"
ls -1 $dir/debian/patches | grep -v 00list | sed 's%^.*/%%g' > $dir/debian/patches/00list
for dir in $GOSA_DIR $GOSA_SI_DIR $GOSA_PLUGIN_DIRS; do
dpkg-source -b "$dir"
done
for dir in $GOSA_DIR $GOSA_SI_DIR $GOSA_PLUGIN_DIRS; do
dpkg-source -b "$dir"
done
+
+ if [ "$GOTO" = "use" ]
+ then
+ echo "Creating GOto sources..."
+ for dir in $GOTO_DIRS; do
+ dpkg-source -b "$dir"
+ done
+ fi
else
echo "Creating debian packages..."
else
echo "Creating debian packages..."
+
for dir in $GOSA_DIR $GOSA_SI_DIR $GOSA_PLUGIN_DIRS; do
for dir in $GOSA_DIR $GOSA_SI_DIR $GOSA_PLUGIN_DIRS; do
+ if [ "$PBUILDER" = "use" ]
+ then
+ echo "using pbuilder to build gosa gosa-si gosa-plugins"
+ (cd "$dir"; pdebuild --debbuildopts -sa; debsign)
+ else
(cd "$dir"; dpkg-buildpackage -k$DEBSIGN_KEYID -rfakeroot -sa)
(cd "$dir"; dpkg-buildpackage -k$DEBSIGN_KEYID -rfakeroot -sa)
+ fi
done
done
+
+ if [ "$GOTO" = "use" ]
+ then
+ echo "Creating GOto debian packages..."
+ for dir in $GOTO_DIRS; do
+ if [ "$PBUILDER" = "use" ]
+ then
+ echo "using pbuilder to build goto debian packages"
+ (cd "$dir"; pdebuild --debbuildopts -sa; debsign -k$DEBSIGN_KEYID)
+ else
+ (cd "$dir"; dpkg-buildpackage -k$DEBSIGN_KEYID -rfakeroot -sa)
+ fi
+ done
+ fi
fi
echo "Removing gosa snapshot..."
if [ -z "$DEBIAN_PKG" ]
then
fi
echo "Removing gosa snapshot..."
if [ -z "$DEBIAN_PKG" ]
then
- for dir in $GOSA_DIR $GOSA_SI_DIR; do
- rm -rf "$dir"
- done
+ if [ "$NO_SVN" = "use" ]
+ then
+ for dir in $GOSA_DIR; do
+ rm -rf "$dir"
+ done
+ fi
else
for dir in $GOSA_DIR $GOSA_SI_DIR $GOSA_PLUGIN_DIRS; do
rm -rf "$dir"
done
else
for dir in $GOSA_DIR $GOSA_SI_DIR $GOSA_PLUGIN_DIRS; do
rm -rf "$dir"
done
+
+ if [ "$GOTO" = "use" ]
+ then
+ for dir in $GOTO_DIRs; do
+ rm -rf "$dir"
+ done
+ fi
fi
fi