From e3f073b275e4e60e5fd8e6e55cf3d0a1950925aa Mon Sep 17 00:00:00 2001 From: Isaac Connor Date: Sat, 14 Jan 2017 09:58:36 -0500 Subject: [PATCH] update to add binary options, dput to ppa and use alternate fork. Also support newer distros and wheezy. --- utils/do_debian_package.sh | 139 ++++++++++++++++++++++++++++--------- 1 file changed, 105 insertions(+), 34 deletions(-) diff --git a/utils/do_debian_package.sh b/utils/do_debian_package.sh index 49c91acfc..3a47704ec 100755 --- a/utils/do_debian_package.sh +++ b/utils/do_debian_package.sh @@ -12,44 +12,78 @@ fi DATE=`date -R` DISTRO=$1 SNAPSHOT=$2 -if [ "$SNAPSHOT" == "stable" ]; then -SNAPSHOT=""; -fi; - TYPE=$3 if [ "$TYPE" == "" ]; then -TYPE="source"; + echo "Defaulting to source build" + TYPE="source"; fi; BRANCH=$4 - - -if [ ! -d 'zoneminder_release' ]; then - git clone https://github.com/ZoneMinder/ZoneMinder.git zoneminder_release +GITHUB_FORK=$5 +if [ "$GITHUB_FORK" == "" ]; then + echo "Defaulting to ZoneMinder upstream git" + GITHUB_FORK="ZoneMinder" fi; -if [ "$BRANCH" != "" ]; then - cd zoneminder_release - if [ "$BRANCH" == "stable" ]; then - BRANCH=$(git describe --tags $(git rev-list --tags --max-count=1)); - echo "Latest stable branch is $BRANCH"; - - fi - git checkout $BRANCH - cd ../ + +if [ "$SNAPSHOT" == "stable" ]; then + if [ "$BRANCH" == "" ]; then + BRANCH=$(git describe --tags $(git rev-list --tags --max-count=1)); + echo "Latest stable branch is $BRANCH"; + fi; +else + if [ "$BRANCH" == "" ]; then + echo "Defaulting to master branch"; + BRANCH="master"; + fi; fi; -VERSION=`cat zoneminder_release/version` + +# Instead of cloning from github each time, if we have a fork lying around, update it and pull from there instead. +if [ ! -d "${GITHUB_FORK}_zoneminder_release" ]; then + if [ -d "${GITHUB_FORK}_ZoneMinder.git" ]; then + echo "Using local clone ${GITHUB_FORK}_ZoneMinder.git to pull from." + cd "${GITHUB_FORK}_ZoneMinder.git" + echo "git checkout $BRANCH" + git checkout $BRANCH + echo "git pull..." + git pull + cd ../ + echo "git clone ${GITHUB_FORK}_ZoneMinder.git ${GITHUB_FORK}_zoneminder_release" + git clone "${GITHUB_FORK}_ZoneMinder.git" "${GITHUB_FORK}_zoneminder_release" + else + echo "git clone https://github.com/$GITHUB_FORK/ZoneMinder.git ${GITHUB_FORK}_zoneminder_release" + git clone "https://github.com/$GITHUB_FORK/ZoneMinder.git" "${GITHUB_FORK}_zoneminder_release" + fi +else + echo "release dir already exists. Please remove it." + exit 0; +fi; + +cd "${GITHUB_FORK}_zoneminder_release" +git checkout $BRANCH +cd ../ + +VERSION=`cat ${GITHUB_FORK}_zoneminder_release/version` if [ $VERSION == "" ]; then exit 1; fi; -echo "Doing $TYPE release zoneminder_$VERSION-$DISTRO-$SNAPSHOT"; -mv zoneminder_release zoneminder_$VERSION-$DISTRO-$SNAPSHOT.orig -cd zoneminder_$VERSION-$DISTRO-$SNAPSHOT.orig +DIRECTORY="zoneminder_$VERSION-$DISTRO"; +if [ "$SNAPSHOT" != "stable" ] && [ "$SNAPSHOT" != "" ]; then + DIRECTORY="$DIRECTORY-$SNAPSHOT"; +fi; +echo "Doing $TYPE release $DIRECTORY"; +mv "${GITHUB_FORK}_zoneminder_release" "$DIRECTORY.orig"; +cd "$DIRECTORY.orig"; + git submodule init git submodule update --init --recursive -if [ $DISTRO == "trusty" ]; then -ln -sf distros/ubuntu1204 debian -else -ln -sf distros/ubuntu1604 debian +if [ $DISTRO == "trusty" ] || [ $DISTRO == "precise" ]; then + ln -sf distros/ubuntu1204 debian +else + if [ $DISTRO == "wheezy" ]; then + ln -sf distros/debian debian + else + ln -sf distros/ubuntu1604 debian + fi; fi; # Auto-install all ZoneMinder's depedencies using the Debian control file @@ -62,14 +96,25 @@ else AUTHOR="`getent passwd $USER | cut -d ':' -f 5 | cut -d ',' -f 1` <`whoami`@`hostname`>" fi +if [ "$SNAPSHOT" == "stable" ]; then +cat < debian/changelog +zoneminder ($VERSION-$DISTRO) $DISTRO; urgency=medium + + * Release $VERSION + + -- $AUTHOR $DATE + +EOF +else cat < debian/changelog zoneminder ($VERSION-$DISTRO-$SNAPSHOT) $DISTRO; urgency=medium * - -- $AUTHOR $DATE + -- $AUTHOR $DATE EOF +fi; #rm -rf .git #rm .gitignore #cd ../ @@ -78,18 +123,44 @@ EOF if [ $TYPE == "binary" ]; then debuild else - if [ $TYPE == "local" ]; then - debuild -i -us -uc -b - else - debuild -S -sa - fi; + if [ $TYPE == "local" ]; then + debuild -i -us -uc -b + else + debuild -S -sa + fi; fi; cd ../ - read -p "Do you want to keep the checked out version of Zoneminder (incase you want to modify it later) [y/N]" -[[ $REPLY == [yY] ]] && { mv zoneminder_$VERSION-$DISTRO-$SNAPSHOT.orig zoneminder_release; echo "The checked out copy is preserved in zoneminder_release"; } || { rm -fr zoneminder_$VERSION-$DISTRO-$SNAPSHOT.orig; echo "The checked out copy has been deleted"; } +[[ $REPLY == [yY] ]] && { mv $DIRECTORY zoneminder_release; echo "The checked out copy is preserved in zoneminder_release"; } || { rm -fr $DIRECTORY; echo "The checked out copy has been deleted"; } echo "Done!" +if [ $TYPE == "binary" ]; then + echo "Not doing dput since it's a binary release. Do you want to install it? (Y/N)" + read install + if [ "$install" == "Y" ]; then + sudo dpkg -i $DIRECTORY*.deb + fi; +else + SC=""; + PPA=""; + if [ "$SNAPSHOT" == "stable" ]; then + PPA="ppa:iconnor/zoneminder"; + SC="zoneminder_${VERSION}-${DISTRO}_source.changes"; + else + SC="zoneminder_${VERSION}-${DISTRO}-${SNAPSHOT}_source.changes"; + if [ "$BRANCH" == "" ]; then + PPA="ppa:iconnor/zoneminder-master"; + else + PPA="ppa:iconnor/zoneminder-$BRANCH"; + fi; + fi; + + echo "Ready to dput $SC to $PPA ? Y/N..."; + read dput + if [ "$dput" == "Y" -o "$dput" == "y" ]; then + dput $PPA $SC + fi; +fi;