Code

Updated index.php to allow passwords with quotes.
[gosa.git] / gosa-core / contrib / make-gosa-package
index 461b4f135087b0b1c8986b075a2fdde73c9a99a3..297eb5920bc2e62a5fd6f753728caa1580c83d72 100755 (executable)
-#!/bin/sh
+#!/bin/bash
+# This code is part of GOsa (http://www.gosa-project.org)
+# Copyright (C) 2008 GONICUS GmbH
+#
+# ID: $$Id$$
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 
-# TODO: getopts ###########################################################
+# Define defaults
 RELEASE_REASON="GOsa svn snapshot"
 BRANCH="trunk"
 SECTION="web"
 SI_SECTION="utils"
 TARGET_RELEASE="etch"
 MAKE_PLUGINS=""
-###########################################################################
-
-[ $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
-
-# 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}"
+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
+       GOsa Debian package build tool. Build snapshots from selected SVN locations or local directories.
+       Usage: ${0##*/} [options]
+       
+       Options:
+         -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
+}
+
+for cmd in dh-make-gosa debchange dpkg-buildpackage dpkg-source svn; do
+  if ! which $cmd >/dev/null; then
+       echo "Error: cannot find '$cmd' command in path!";
+       exit 1
+  fi
+done
+
+# Import command line parameters
+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
+        case "$1" in
+                -b|--branch)
+                       BRANCH=$2; shift 2 ;;
+                -r|--release)
+                       TARGET_RELEASE=$2; shift 2 ;;
+                -c|--changelog)
+                       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)
+                        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 ;;
+                --)
+                       shift; break ;;
+                *)
+                       echo "getopt error" ;;
+        esac
+done
+
+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
+
 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}"
+GOTO_DIR="goto-${BNAME}"
+
+if [ "$NO_SVN" = "use" ]
+then
+       if [ "$BNAME" != "$GOSA_VER" ]
+       then
+               rm -rf "gosa-${GOSA_VER}"
+       fi
+fi
 
-if [ -d "gosa-${GOSA_VER}" ]
+if [ "$NO_SVN" = "use" ]
 then
-       rm -rf "gosa-${GOSA_VER}"
+       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 [ "$GOTO" = "use" ]
+then
+       find goto-${BNAME} -type d -name ".svn" -exec rm -rf {} \; >/dev/null 2>&1
 fi
-mv "gosa-${BRANCH}" "gosa-${GOSA_VER}"
-mv "gosa-si-${BRANCH}" "gosa-si-${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 -9 "gosa_${GOSA_VER}.orig.tar"
-gzip -9 "gosa-si_${GOSA_VER}.orig.tar"
+gzip -f -9 "gosa_${GOSA_VER}.orig.tar"
+gzip -f -9 "gosa-si_${GOSA_VER}.orig.tar"
 
 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
+
 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"
-       yes | dh-make-gosa --section web $plugin
+       yes | dh-make-gosa $NOBREAKS --section $SECTION $plugin
        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 -9 "gosa-plugin-${plugin}_${GOSA_VER}.orig.tar"
+       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
@@ -87,16 +325,28 @@ for patch in $(find patches -type f | grep -v .svn); do
        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
+
+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"
-       (cd "$dir"; echo | debchange -v "${GOSA_VER}-1${TARGET_RELEASE}1" -D "$TARGET_RELEASE" "$RELEASE_REASON" &> /dev/null)
+       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
@@ -111,22 +361,62 @@ then
        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..."
+
        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)
+       fi
        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..."
-#for dir in $GOSA_DIR $GOSA_SI_DIR $GOSA_PLUGIN_DIRS; do
-#      rm -rf "$dir"
-#done
+if [ -z "$DEBIAN_PKG" ]
+then
+       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
 
-echo
-echo "Moving result to 'dest'"
-[ -d dest ] && rm -rf dest
-mkdir dest
+        if [ "$GOTO" = "use" ]
+        then
+               for dir in $GOTO_DIRs; do
+               rm -rf "$dir"
+               done
+       fi
+fi
 
-mv *.deb *.changes *.dsc *.gz dest/