Skip to content
Snippets Groups Projects
Commit a22b5955 authored by Julien Bonjean's avatar Julien Bonjean
Browse files

[#2181] Updated build system

parent 843165e3
No related branches found
No related tags found
No related merge requests found
#!/bin/bash
#####################################################
# File Name: launch-build-machine.sh
#
# Purpose :
#
# Author: Julien Bonjean (julien@bonjean.info)
#
# Creation Date: 2009-10-20
# Last Modified: 2009-10-21 16:54:28 -0400
#####################################################
# home directory
ROOT_DIR=${HOME}
# gpg passphrase file
GPG_FILE="${ROOT_DIR}/.gpg-sflphone"
IS_RELEASE=
VERSION_INDEX="1"
DO_PUSH=1
DO_LOGGING=1
DO_UPLOAD=1
DO_GIT_BRANCH_CHANGE=1
EDITOR=echo
export EDITOR
REFERENCE_REPOSITORY="${ROOT_DIR}/sflphone-source-repository"
WORKING_DIR="${ROOT_DIR}/sflphone-build-repository/tools/build-system"
LAUNCHPAD_DIR="${WORKING_DIR}/launchpad"
LAUNCHPAD_DISTRIBUTIONS=( "jaunty" "karmic" )
LAUNCHPAD_PACKAGES=( "sflphone-client-gnome" "sflphone-common" )
echo
echo " /***********************\\"
echo " | SFLPhone build system |"
echo " \\***********************/"
echo
for PARAMETER in $*
do
case ${PARAMETER} in
--help)
echo
echo "Options :"
echo " --skip-push"
echo " --skip-upload"
echo " --no-logging"
echo " --skip-git-branch-change"
echo " --release"
echo " --version-index=[1,2,...]"
echo
exit 0;;
--skip-push)
unset DO_PUSH;;
--skip-git-branch-change)
unset DO_GIT_BRANCH_CHANGE;;
--skip-upload)
unset DO_UPLOAD;;
--no-logging)
unset DO_LOGGING;;
--release)
IS_RELEASE=1;;
--version-index=*)
VERSION_INDEX=(${PARAMETER##*=});;
*)
echo "Unknown parameter : ${PARAMETER}"
exit -1;;
esac
done
#########################
# LAUNCHPAD
#########################
# change to working directory
cd ${LAUNCHPAD_DIR}
if [ "$?" -ne "0" ]; then
echo " !! Cannot cd to launchpad directory"
exit -1
fi
# logging
if [ ${DO_LOGGING} ]; then
# open file descriptor
exec 3<> ${ROOT_DIR}/packaging.log
# redirect outputs (stdout & stderr)
exec 1>&3
exec 2>&3
fi
if [ ${RELEASE_MODE} ]; then
echo "Release mode"
else
echo "Snapshot mode"
fi
#########################
# COMMON PART
#########################
echo "Update reference sources"
if [ ${IS_RELEASE} ]; then
cd ${REFERENCE_REPOSITORY} && git checkout origin/release -b release && git pull
else
cd ${REFERENCE_REPOSITORY} && git checkout master && git pull
fi
echo "Retrieve build info"
# retrieve info we may need
cd ${REFERENCE_REPOSITORY}
CURRENT_RELEASE_TAG_NAME=`git tag -l "[0-9]\.[0-9]\.[0-9]\.*" | tail -n 1`
PREVIOUS_RELEASE_TAG_NAME=`git tag -l "[0-9]\.[0-9]\.[0-9]\.*" | tail -n 2 | sed -n '1p;1q'`
CURRENT_RELEASE_COMMIT_HASH=`git show --pretty=format:"%H" -s ${CURRENT_RELEASE_TAG_NAME} | tail -n 1`
PREVIOUS_RELEASE_COMMIT_HASH=`git show --pretty=format:"%H" -s ${PREVIOUS_RELEASE_TAG_NAME} | tail -n 1`
CURRENT_COMMIT=`git show --pretty=format:"%H" -s | tail -n 1`
CURRENT_RELEASE_TYPE=${CURRENT_RELEASE_TAG_NAME##*.}
PREVIOUS_RELEASE_TYPE=${PREVIOUS_RELEASE_TAG_NAME##*.}
CURRENT_RELEASE_VERSION=${CURRENT_RELEASE_TAG_NAME%*.*}
PREVIOUS_VERSION=${PREVIOUS_RELEASE_TAG_NAME%*.*}
cd ${LAUNCHPAD_DIR}
COMMIT_HASH_BEGIN=""
COMMIT_HASH_END=""
SOFTWARE_VERSION=""
echo "Clean build directory"
git clean -f -x ${LAUNCHPAD_DIR}/* >/dev/null
if [ ${IS_RELEASE} ]; then
VERSION_APPEND=""
if [ "${CURRENT_RELEASE_TYPE}" != "stable" ] ; then
VERSION_APPEND="~${CURRENT_RELEASE_TYPE}"
fi
SOFTWARE_VERSION="${CURRENT_RELEASE_VERSION}${VERSION_APPEND}"
COMMIT_HASH_BEGIN="${PREVIOUS_RELEASE_COMMIT_HASH}"
else
SNAPSHOT_TAG=`date +%Y%m%d`
SOFTWARE_VERSION="snapshot${SNAPSHOT_TAG}0${VERSION_INDEX}"
COMMIT_HASH_BEGIN="${CURRENT_RELEASE_COMMIT_HASH}"
fi
cd ${LAUNCHPAD_DIR}
VERSION="ppa~SYSTEM~${SOFTWARE_VERSION}"
for LAUNCHPAD_PACKAGE in ${LAUNCHPAD_PACKAGES[*]}
do
echo " Package: ${LAUNCHPAD_PACKAGE}"
echo " --> Clean old sources"
git clean -f -x ${LAUNCHPAD_DIR}/${LAUNCHPAD_PACKAGE}/* >/dev/null
echo " --> Retrieve new sources"
cp -r ${REFERENCE_REPOSITORY}/${LAUNCHPAD_PACKAGE} ${LAUNCHPAD_DIR}/
DEBIAN_DIR="${LAUNCHPAD_DIR}/${LAUNCHPAD_PACKAGE}/debian"
echo " --> Clean debian directory"
git checkout ${DEBIAN_DIR}
echo " --> Update debian changelog"
cat << END > ${WORKING_DIR}/sfl-git-dch.conf
WORKING_DIR="${WORKING_DIR}"
SOFTWARE="${LAUNCHPAD_PACKAGE}"
VERSION="${VERSION}"
DISTRIBUTION="SYSTEM"
CHANGELOG_FILE="${DEBIAN_DIR}/changelog"
COMMIT_HASH_BEGIN="${COMMIT_HASH_BEGIN}"
COMMIT_HASH_END="${COMMIT_HASH_END}"
IS_RELEASE=${IS_RELEASE}
export DEBFULLNAME="SFLphone Automatic Build System"
export DEBEMAIL="team@sflphone.org"
export EDITOR="echo"
END
${WORKING_DIR}/sfl-git-dch-2.sh ${WORKING_DIR}/sfl-git-dch.conf
if [ "$?" -ne "0" ]; then
echo "!! Cannot update debian changelogs"
exit -1
fi
rm -f ${WORKING_DIR}/sfl-git-dch.conf >/dev/null 2>&1
cp ${DEBIAN_DIR}/changelog ${DEBIAN_DIR}/changelog.generic
for LAUNCHPAD_DISTRIBUTION in ${LAUNCHPAD_DISTRIBUTIONS[*]}
do
LOCAL_VERSION="ppa~${LAUNCHPAD_DISTRIBUTION}~${SOFTWARE_VERSION}"
cp ${DEBIAN_DIR}/control.${LAUNCHPAD_DISTRIBUTION} ${DEBIAN_DIR}/control
cp ${DEBIAN_DIR}/changelog.generic ${DEBIAN_DIR}/changelog
sed -i "s/SYSTEM/${LAUNCHPAD_DISTRIBUTION}/g" ${DEBIAN_DIR}/changelog
cd ${LAUNCHPAD_DIR}/${LAUNCHPAD_PACKAGE}
./autogen.sh
debuild -S -sa -kCCCC676C
cd ${LAUNCHPAD_DIR}
if [ ${DO_UPLOAD} ] ; then
dput -f -c ${LAUNCHPAD_DIR}/dput.conf sflphone-${LAUNCHPAD_DISTRIBUTION} ${LAUNCHPAD_PACKAGE}_${LOCAL_VERSION}_source.changes
fi
done
done
# if push is activated
if [[ ${DO_PUSH} && ${IS_RELEASE} && ${DO_GIT_BRANCH_CHANGE} ]];then
echo " Doing commit"
git commit -m "[#1262] Released ${SOFTWARE_VERSION}" .
echo " Pushing commit"
git push origin release
fi
# close file descriptor
exec 3>&-
exit 0
Source: sflphone-client-gnome
Maintainer: SavoirFaireLinux Inc <julien.bonjean@savoirfairelinux.com>
Section: gnome
Priority: optional
Build-Depends: debhelper, libgcc1, autoconf, automake, libtool, libgtk2.0-dev, libdbus-glib-1-dev, libnotify-dev, libebook1.2-dev, check, liblog4c-dev, libgnomeui-dev, gnome-doc-utils, rarian-compat
Standards-Version: 3.7.3
Package: sflphone-client-gnome
Priority: optional
Architecture: any
Depends: sflphone-common (=${source:Version}), libdbus-glib-1-2, libgtk2.0-0, libc6, libglib2.0-0, libdbus-glib-1-2, libnotify1, librsvg2-common, liblog4c3, libebook1.2-9, libgnomeui-0
Replaces: sflphone
Conflicts: sflphone
Homepage: http://www.sflphone.org
Description: GNOME client for SFLphone
Provide a GNOME client for SFLphone.
SFLphone is meant to be a robust enterprise-class desktop phone.
SFLphone is released under the GNU General Public License.
SFLphone is being developed by the global community, and maintained by
Savoir-faire Linux, a Montreal, Quebec, Canada-based Linux consulting company.
This diff is collapsed.
This diff is collapsed.
Source: sflphone-common
Maintainer: SavoirFaireLinux Inc <julien.bonjean@savoirfairelinux.com>
Section: gnome
Priority: optional
Build-Depends: debhelper, libgcc1 , autoconf, automake, libpulse-dev, libsamplerate0-dev, libcommoncpp2-dev, libccrtp-dev, libgsm1-dev, libspeex-dev, libtool, libdbus-1-dev, libasound2-dev, libspeexdsp-dev, uuid-dev, libexpat1-dev, libzrtpcpp-dev, libssl-dev
Standards-Version: 3.7.3
Package: sflphone-common
Priority: optional
Architecture: any
Depends: libsamplerate0, libexpat1 , libc6, libcommoncpp2-1.6-0, libgsm1, libspeex1, libdbus-1-3, libasound2, libpulse0, libccrtp1-1.6-1, libspeexdsp1, libzrtpcpp-1.3-0, libssl0.9.8
Replaces: sflphone
Conflicts: sflphone
Homepage: http://www.sflphone.org
Description: SIP and IAX2 compatible softphone - Core
SFLphone is meant to be a robust enterprise-class desktop phone.
SFLphone is released under the GNU General Public License.
SFLphone is being developed by the global community, and maintained by
Savoir-faire Linux, a Montreal, Quebec, Canada-based Linux consulting company.
...@@ -73,7 +73,6 @@ install-arch: ...@@ -73,7 +73,6 @@ install-arch:
# Add here commands to install the arch part of the package into # Add here commands to install the arch part of the package into
# debian/tmp. # debian/tmp.
$(MAKE) DESTDIR=$(CURDIR)/debian/$(package) install $(MAKE) DESTDIR=$(CURDIR)/debian/$(package) install
cd libs/pjproject; $(MAKE) prefix=$(CURDIR)/debian/$(package)/usr install
rm -rf $(CURDIR)/debian/$(package)/usr/include rm -rf $(CURDIR)/debian/$(package)/usr/include
dh_install -s dh_install -s
# Must not depend on anything. This is to be called by # Must not depend on anything. This is to be called by
......
#!/bin/bash
#####################################################
# File Name: sfl-git-dch.sh
#
# Purpose :
#
# Author: Julien Bonjean (julien@bonjean.info)
#
# Creation Date: 2009-10-21
# Last Modified: 2009-10-21 14:58:22 -0400
#####################################################
. $1
echo "********************************************************************************"
echo "Software: ${SOFTWARE}"
echo "Version: ${VERSION}"
echo "Distribution: ${DISTRIBUTION}"
echo "Generating changelog (from commit ${COMMIT_HASH_BEGIN} to ${COMMIT_HASH_END}) in file ${CHANGELOG_FILE}"
if [ ${IS_RELEASE} ] ; then
echo "Release mode"
else
echo "Snapshot mode"
fi
# use git log to retrieve changelog content
CHANGELOG_CONTENT=`git log --no-merges --pretty=format:"%s" ${COMMIT_HASH_BEGIN}..${COMMIT_HASH_END} | grep -v "\[\#1262\]"`
if [ "$?" -eq "1" ]; then
echo " !! No new commit since last release"
CHANGELOG_CONTENT="No new commit"
fi
if [ "$?" -ne "0" ]; then
echo " !! Error when retrieving changelog content"
exit -1
fi
rm -f ${CHANGELOG_FILE}.dch >/dev/null 2>&1
IS_FIRST=1
echo "${CHANGELOG_CONTENT}" | while read line
do
if [ ${IS_FIRST} ]; then
yes | dch --changelog ${CHANGELOG_FILE} -b --allow-lower-version --no-auto-nmu --distribution ${DISTRIBUTION} --newversion ${VERSION} "$line" >/dev/null 2>&1
if [ "$?" -ne "0" ]; then
echo
echo " !! Error with new version"
exit -1
fi
IS_FIRST=
else
dch --changelog ${CHANGELOG_FILE} --no-auto-nmu "$line"
if [ "$?" -ne "0" ]; then
echo
echo " !! Error when adding changelog entry"
exit -1
fi
fi
echo -n .
done
# add snapshot or release flag if needed
echo
if [ ${IS_RELEASE} ]; then
sed -i "3i\ ** ${VERSION} **\n" ${CHANGELOG_FILE}
if [ "$?" -ne "0" ]; then
echo " !! Error when adding snapshot flag"
exit -1
fi
else
sed -i "3i\ ** SNAPSHOT ${VERSION} **\n" ${CHANGELOG_FILE}
if [ "$?" -ne "0" ]; then
echo " !! Error when adding snapshot flag"
exit -1
fi
fi
echo
echo "All done !"
echo "********************************************************************************"
exit 0
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment