diff --git a/tools/build-system/launch-build-machine.sh b/tools/build-system/launch-build-machine.sh
index 33ba1a9fb56e60f9573d4adda72c171b29cb8b4c..8a5f0ff2143576b251488be599fd027a9a612de6 100755
--- a/tools/build-system/launch-build-machine.sh
+++ b/tools/build-system/launch-build-machine.sh
@@ -7,7 +7,7 @@
 # Author: Julien Bonjean (julien@bonjean.info) 
 #
 # Creation Date: 2009-04-20
-# Last Modified: 2009-06-23 10:31:34 -0400
+# Last Modified: 2009-07-03 17:02:33 -0400
 #####################################################
 
 #
@@ -30,6 +30,12 @@ SCP_BASE="scp ${SSH_OPTIONS} -r -P 50001"
 # home directory
 ROOT_DIR="/home/projects/sflphone"
 
+# local hidden repository (only for changelog commit)
+LOCAL_REPOSITORY=${ROOT_DIR}/.sflphone-repository
+
+# gpg passphrase file
+GPG_FILE="${ROOT_DIR}/.gpg-sflphone"
+
 # vbox config directory
 export VBOX_USER_HOME="${ROOT_DIR}/vbox"
 
@@ -62,8 +68,9 @@ USER="sflphone"
 
 RELEASE_MODE=
 
-SNAPSHOT_TAG=`date +%s`
+SNAPSHOT_TAG=`date +%Y%m%d`
 
+DO_CLEAN=1
 DO_PREPARE=1
 DO_PUSH=1
 DO_MAIN_LOOP=1
@@ -95,6 +102,7 @@ do
 	--help)
 		echo
 		echo "Options :"
+		echo " --skip-clean"
 		echo " --skip-prepare"
 		echo " --skip-push"
 		echo " --skip-main-loop"
@@ -106,6 +114,8 @@ do
 		echo " --list-machines"
 		echo
 		exit 0;;
+	--skip-clean)
+		unset DO_CLEAN;;
 	--skip-prepare)
 		unset DO_PREPARE;;
 	--skip-push)
@@ -155,7 +165,9 @@ if [ "${WHO}" != "${USER}" ]; then
 fi
 
 # logging
-rm -rf ${PACKAGING_RESULT_DIR} 2>/dev/null
+if [ ${DO_CLEAN} ]; then
+	rm -rf ${PACKAGING_RESULT_DIR} 2>/dev/null
+fi
 mkdir ${PACKAGING_RESULT_DIR} 2>/dev/null
 if [ ${DO_LOGGING} ]; then
 
@@ -231,26 +243,28 @@ if [ ${DO_PREPARE} ]; then
 	fi
 	echo "Version is : ${VERSION}"
 
-	# if push is activated
-	if [ ${DO_PUSH} ];then
-
-		# first changelog generation for commit
-		echo "Update debian changelogs (1/2)"
-
-		${SCRIPTS_DIR}/sfl-git-dch.sh ${VERSION} ${RELEASE_MODE}
+	# generate the changelog, according to the distribution and the git commit messages
+	echo "Update debian changelogs"
+	cd ${REPOSITORY_DIR}
+	${SCRIPTS_DIR}/sfl-git-dch.sh ${VERSION} ${RELEASE_MODE}
+	
+	if [ "$?" -ne "0" ]; then
+		echo "!! Cannot update debian changelogs"
+		exit -1
+	fi
 
-		if [ "$?" -ne "0" ]; then
-			echo "!! Cannot update debian changelogs"
-			exit -1
-		fi
+	# if push is activated
+	if [[ ${DO_PUSH} && ${RELEASE_MODE} ]];then
 
 		echo " Doing commit"
 		
-        	cd ${REPOSITORY_DIR}
+        	cd ${LOCAL_REPOSITORY}
 		git commit -m "[#1262] Updated debian changelogs (${VERSION})" .
 
 		echo " Pushing commit"
 		git push origin master
+
+		cd -
 	fi
 
 	# change current branch if needed
@@ -260,17 +274,7 @@ if [ ${DO_PREPARE} ]; then
         else
                 echo "Using master branch"
         fi
-
-	# generate the changelog, according to the distribution and the git commit messages
-	echo "Update debian changelogs (2/2)"
-	cd ${REPOSITORY_DIR}
-	${SCRIPTS_DIR}/sfl-git-dch.sh ${VERSION} ${RELEASE_MODE}
 	
-	if [ "$?" -ne "0" ]; then
-		echo "!! Cannot update debian changelogs"
-		exit -1
-	fi
-
 	echo "Write version numbers for following processes"
 	echo "${VERSION}" > ${REPOSITORY_DIR}/sflphone-common/VERSION
 	echo "${VERSION}" > ${REPOSITORY_DIR}/sflphone-client-gnome/VERSION
@@ -375,27 +379,9 @@ fi
 
 if [ ${DO_SIGNATURES} ]; then
 	
-	echo
-	echo "Sign packages"
-	echo
-
-	echo  "Check GPG agent"
-	pgrep -u "sflphone" gpg-agent > /dev/null
-	if [ "$?" -ne "0" ]; then
-	        echo "!! GPG agent is not running"
-		exit -1
-	fi
-	GPG_AGENT_INFO=`cat $HOME/.gpg-agent-info 2> /dev/null`
-	export ${GPG_AGENT_INFO}
-
-	if [ "${GPG_AGENT_INFO}" == "" ]; then
-        	echo "!! Cannot get GPG agent info"
-	        exit -1
-	fi	
-
 	echo "Sign packages"
-	find ${PACKAGING_RESULT_DIR}/deb/dists -name "*.deb" -exec dpkg-sig -k 'Savoir-Faire Linux Inc.' --sign builder --sign-changes full {} \; >/dev/null 2>&1
-	find ${PACKAGING_RESULT_DIR}/deb/dists -name "*.changes" -printf "debsign -k'Savoir-Faire Linux Inc.' %p\n" | sh >/dev/null 2>&1
+	find ${PACKAGING_RESULT_DIR}/deb/dists -name "*.deb" -exec dpkg-sig -g '-q --passphrase `cat '${GPG_FILE}'`' -k 'Savoir-Faire Linux Inc.' --sign builder --sign-changes full {}  \;
+	find ${PACKAGING_RESULT_DIR}/deb/dists -name "*.changes" -exec gpg --local-user 'Savoir-Faire Linux Inc.' --passphrase `cat ${GPG_FILE}` --clearsign --list-options no-show-policy-urls --armor --textmode --output {}.asc {} \;
 fi
 
 #########################
diff --git a/tools/build-system/remote/update-repository.sh b/tools/build-system/remote/update-repository.sh
index f03e3b232e6e52166a6d4d38b83930f716324864..a488a297455839de1a60b981a1293ace0d20b882 100755
--- a/tools/build-system/remote/update-repository.sh
+++ b/tools/build-system/remote/update-repository.sh
@@ -6,6 +6,10 @@
 # @date: 2008 Jan 16  
 
 ROOT_DIR="/var/repos/sflphone/debian"
+
+# gpg passphrase file
+GPG_FILE="${ROOT_DIR}/.gpg-sflphone"
+
 USER="sflphone-package-manager"
 
 export LANG=en_CA.UTF-8
@@ -18,19 +22,9 @@ if [ "${WHO}" != "${USER}" ]; then
 	exit -1;
 fi
 
-echo  "Check GPG agent"
-pgrep -u "sflphone-package-manager" gpg-agent > /dev/null
-if [ "$?" -ne "0" ]; then
-	echo "!! GPG agent is not running"
-        exit -1
-fi
-GPG_AGENT_INFO=`cat $HOME/.gpg-agent-info 2> /dev/null`
-export ${GPG_AGENT_INFO}
-
-if [ "${GPG_AGENT_INFO}" == "" ]; then
-	echo "!! Cannot get GPG agent info"
-	exit -1
-fi
+echo "Remove cache files"
+rm -f packages-i386.db
+rm -f packages-amd64.db
 
 apt-ftparchive generate conf/apt-ftparchive.conf
 
@@ -52,23 +46,23 @@ echo "Sign the Release files"
 rm -f dists/intrepid/Release.gpg
 rm -f dists/intrepid-testing/Release.gpg
 rm -f dists/intrepid-daily/Release.gpg
-gpg --no-tty -u C842D122 --output dists/intrepid/Release.gpg -ba dists/intrepid/Release
-gpg --no-tty -u C842D122 --output dists/intrepid-testing/Release.gpg -ba dists/intrepid-testing/Release
-gpg --no-tty -u C842D122 --output dists/intrepid-daily/Release.gpg -ba dists/intrepid-daily/Release
+gpg --passphrase `cat ${GPG_FILE}` --no-tty -u C842D122 --output dists/intrepid/Release.gpg -ba dists/intrepid/Release
+gpg --passphrase `cat ${GPG_FILE}` --no-tty -u C842D122 --output dists/intrepid-testing/Release.gpg -ba dists/intrepid-testing/Release
+gpg --passphrase `cat ${GPG_FILE}` --no-tty -u C842D122 --output dists/intrepid-daily/Release.gpg -ba dists/intrepid-daily/Release
 
 rm -f dists/hardy/Release.gpg
 rm -f dists/hardy-testing/Release.gpg
 rm -f dists/hardy-daily/Release.gpg
-gpg --no-tty -u C842D122 --output dists/hardy/Release.gpg -ba dists/hardy/Release
-gpg --no-tty -u C842D122 --output dists/hardy-testing/Release.gpg -ba dists/hardy-testing/Release
-gpg --no-tty -u C842D122 --output dists/hardy-daily/Release.gpg -ba dists/hardy-daily/Release
+gpg --passphrase `cat ${GPG_FILE}` --no-tty -u C842D122 --output dists/hardy/Release.gpg -ba dists/hardy/Release
+gpg --passphrase `cat ${GPG_FILE}` --no-tty -u C842D122 --output dists/hardy-testing/Release.gpg -ba dists/hardy-testing/Release
+gpg --passphrase `cat ${GPG_FILE}` --no-tty -u C842D122 --output dists/hardy-daily/Release.gpg -ba dists/hardy-daily/Release
 
 rm -f dists/jaunty/Release.gpg
 rm -f dists/jaunty-testing/Release.gpg
 rm -f dists/jaunty-daily/Release.gpg
-gpg --no-tty -u C842D122 --output dists/jaunty/Release.gpg -ba dists/jaunty/Release
-gpg --no-tty -u C842D122 --output dists/jaunty-testing/Release.gpg -ba dists/jaunty-testing/Release
-gpg --no-tty -u C842D122 --output dists/jaunty-daily/Release.gpg -ba dists/jaunty-daily/Release
+gpg --passphrase `cat ${GPG_FILE}` --no-tty -u C842D122 --output dists/jaunty/Release.gpg -ba dists/jaunty/Release
+gpg --passphrase `cat ${GPG_FILE}` --no-tty -u C842D122 --output dists/jaunty-testing/Release.gpg -ba dists/jaunty-testing/Release
+gpg --passphrase `cat ${GPG_FILE}` --no-tty -u C842D122 --output dists/jaunty-daily/Release.gpg -ba dists/jaunty-daily/Release
 
 echo "All done"
 exit 0