X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=gosa-core%2Fcontrib%2Fmake-gosa-package;h=297eb5920bc2e62a5fd6f753728caa1580c83d72;hb=e488772123d2b0ee56ebd92c95880576f27aea62;hp=57dffb8507cce951a9b35e2844361cd3546b7858;hpb=afa82bdba0dbff4f7c5e36d9bd9cb90aa496a603;p=gosa.git diff --git a/gosa-core/contrib/make-gosa-package b/gosa-core/contrib/make-gosa-package index 57dffb850..297eb5920 100755 --- a/gosa-core/contrib/make-gosa-package +++ b/gosa-core/contrib/make-gosa-package @@ -1,4 +1,4 @@ -#!/bin/sh +#!/bin/bash # This code is part of GOsa (http://www.gosa-project.org) # Copyright (C) 2008 GONICUS GmbH # @@ -25,22 +25,34 @@ SECTION="web" SI_SECTION="utils" TARGET_RELEASE="etch" MAKE_PLUGINS="" -NOT_RELEASED="heimdal dak dfs glpi opsi apache2 ssh" +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. + 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. - -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 @@ -54,7 +66,7 @@ for cmd in dh-make-gosa debchange dpkg-buildpackage dpkg-source svn; do 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 @@ -67,12 +79,22 @@ while true; do 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=$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 ;; --) @@ -82,42 +104,139 @@ while true; do 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" -# 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 [ "$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 -if [ -d "gosa-${GOSA_VER}" ] +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 - rm -rf "gosa-${GOSA_VER}" + 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 -f -9 "gosa_${GOSA_VER}.orig.tar" @@ -125,28 +244,71 @@ 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 $SECTION $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 -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 @@ -163,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 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 @@ -187,23 +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..." if [ -z "$DEBIAN_PKG" ] then - for dir in $GOSA_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 + + if [ "$GOTO" = "use" ] + then + for dir in $GOTO_DIRs; do + rm -rf "$dir" + done + fi fi