[SCM] Samba Shared Repository - branch v4-3-test updated

Stefan Metzmacher metze at samba.org
Wed Nov 4 16:15:02 UTC 2015


The branch, v4-3-test has been updated
       via  c900ae8 script/release.sh: make it possible to create stable .x releases (x >= 1)
       via  11310de script/release.sh: make it possible to create stable .0 releases
      from  b6530ac ctdb: open the RO tracking db with perms 0600 instead of 0000

https://git.samba.org/?p=samba.git;a=shortlog;h=v4-3-test


- Log -----------------------------------------------------------------
commit c900ae8f5ad8632e0974c825f7261308f77aac3a
Author: Stefan Metzmacher <metze at samba.org>
Date:   Wed Oct 21 10:02:33 2015 +0200

    script/release.sh: make it possible to create stable .x releases (x >= 1)
    
    This version was used to create samba-4.3.1.
    
    Signed-off-by: Stefan Metzmacher <metze at samba.org>
    Reviewed-by: Karolin Seeger <kseeger at samba.org>
    
    Autobuild-User(master): Stefan Metzmacher <metze at samba.org>
    Autobuild-Date(master): Wed Oct 21 14:27:53 CEST 2015 on sn-devel-104
    
    (cherry picked from commit f99d0b917419756b11f0ebfecbe84b3ebab7fa0a)
    
    Autobuild-User(v4-3-test): Stefan Metzmacher <metze at samba.org>
    Autobuild-Date(v4-3-test): Wed Nov  4 17:14:41 CET 2015 on sn-devel-104

commit 11310de39f459300733ba0d6861184e7bc8af837
Author: Stefan Metzmacher <metze at samba.org>
Date:   Tue Sep 8 15:47:26 2015 +0200

    script/release.sh: make it possible to create stable .0 releases
    
    This version was used to create samba-4.3.0.
    
    Signed-off-by: Stefan Metzmacher <metze at samba.org>
    Reviewed-by: Karolin Seeger <kseeger at samba.org>
    (cherry picked from commit 19a0a7f33ca71a39859706d726eaf70882362c93)

-----------------------------------------------------------------------

Summary of changes:
 script/release.sh | 741 +++++++++++++++++++++++++++++++++++++++++++++++++-----
 1 file changed, 677 insertions(+), 64 deletions(-)


Changeset truncated at 500 lines:

diff --git a/script/release.sh b/script/release.sh
index 9f7379e..e5d93a7 100755
--- a/script/release.sh
+++ b/script/release.sh
@@ -15,6 +15,7 @@ umask 0022
 CONF_REPO_URL="ssh://git.samba.org/data/git/samba.git"
 CONF_UPLOAD_URL="samba-bugs at download-master.samba.org:/home/data/ftp/pub"
 CONF_DOWNLOAD_URL="https://download.samba.org/pub"
+CONF_HISTORY_URL="https://www.samba.org"
 
 test -d ".git" || {
 	echo "Run this script from the top-level directory in the"
@@ -25,7 +26,7 @@ test -d ".git" || {
 usage() {
 	echo "Usage: release.sh <PRODUCT> <COMMAND>"
 	echo ""
-	echo "PRODUCT: ldb, talloc, tevent, tdb, samba-rc"
+	echo "PRODUCT: ldb, talloc, tevent, tdb, samba-rc, samba-stable"
 	echo "COMMAND: fullrelease, create, push, upload, announce"
 	echo ""
 	return 0
@@ -64,7 +65,9 @@ min_args "$0" "$#" "2"
 product="$1"
 globalcmd="$2"
 shift 2
+oldtagname=""
 tagname=""
+patchfile=""
 cmds=""
 next_cmd=""
 
@@ -124,6 +127,132 @@ verify_samba_rc() {
 	return 0
 }
 
+load_samba_stable_versions() {
+	check_args "${FUNCNAME}" "$#" "0" || return 1
+
+	test -n "${version-}" && {
+		return 0
+	}
+
+	local SAMBA_VERSION_MAJOR=$(grep '^SAMBA_VERSION_MAJOR=' VERSION | cut -d '=' -f2 | xargs)
+	local SAMBA_VERSION_MINOR=$(grep '^SAMBA_VERSION_MINOR=' VERSION | cut -d '=' -f2 | xargs)
+	local SAMBA_VERSION_RELEASE=$(grep '^SAMBA_VERSION_RELEASE=' VERSION | cut -d '=' -f2 | xargs)
+
+	version="${SAMBA_VERSION_MAJOR}.${SAMBA_VERSION_MINOR}.${SAMBA_VERSION_RELEASE}"
+	tagname="${productbase}-${version}"
+
+	test ${SAMBA_VERSION_RELEASE} -gt 0 || {
+		return 0
+	}
+
+	oldversion="${SAMBA_VERSION_MAJOR}.${SAMBA_VERSION_MINOR}.$(expr ${SAMBA_VERSION_RELEASE} - 1)"
+	oldtagname="${productbase}-${oldversion}"
+	patchfile="${productbase}-${oldversion}-${version}.diffs"
+
+	return 0
+}
+
+verify_samba_stable() {
+	check_args "${FUNCNAME}" "$#" "0" || return 1
+
+	test -f VERSION || {
+		echo "VERSION doesn't exist"
+		return 1
+	}
+
+	grep -q 'SAMBA_VERSION_IS_GIT_SNAPSHOT=no' VERSION || {
+		echo "SAMBA_VERSION_IS_GIT_SNAPSHOT is not 'no'"
+		return 1
+	}
+
+	local VARS=""
+	VARS="${VARS} SAMBA_VERSION_REVISION"
+	VARS="${VARS} SAMBA_VERSION_TP_RELEASE"
+	VARS="${VARS} SAMBA_VERSION_ALPHA_RELEASE"
+	VARS="${VARS} SAMBA_VERSION_BETA_RELEASE"
+	VARS="${VARS} SAMBA_VERSION_PRE_RELEASE"
+	VARS="${VARS} SAMBA_VERSION_RC_RELEASE"
+	VARS="${VARS} SAMBA_VERSION_RELEASE_NICKNAME"
+	VARS="${VARS} SAMBA_VERSION_VENDOR_SUFFIX"
+	VARS="${VARS} SAMBA_VERSION_VENDOR_PATCH"
+	for var in ${VARS}; do
+		grep -q "^${var}" VERSION && {
+			grep -q "^${var}=$" VERSION || {
+				echo "${var} found in stable version"
+				return 1
+			}
+		}
+	done
+
+	load_samba_stable_versions
+
+	test x"${product}" = x"samba-stable" && {
+		test -f "announce.${tagname}.quotation.txt" || {
+			echo ""
+			echo "announce.${tagname}.quotation.txt missing!"
+			echo ""
+			echo "Please create it and retry"
+			echo ""
+			echo "The content should look like this:"
+			echo "cat announce.${tagname}.quotation.txt"
+			echo '======================================================'
+			echo '                "Some text'
+			echo '                 from someone."'
+			echo ''
+			echo '                 The author'
+			echo '======================================================'
+			echo ""
+			return 1
+		}
+	}
+
+	test -n "${oldtagname}" || {
+		return 0
+	}
+
+	local verify_out="${TMPDIR}/verify-${oldtagname}.out"
+
+	echo "Verifying oldtagname: ${oldtagname}"
+
+	git tag -v "${oldtagname}" >${verify_out} 2>&1 || {
+		echo "failed to verify old tag[${oldtagname}]"
+		return 1
+	}
+
+	grep -q "${GPG_KEYID}" "${verify_out}" || {
+		echo "oldtagname[${oldtagname}] was not generated with GPG_KEYID[${GPG_KEYID}]!"
+		echo ""
+		cat "${verify_out}"
+		return 1
+	}
+
+	echo "Verifying ${oldtagname}.tar.gz and ${oldtagname}.tar.asc"
+
+	test -f "${oldtagname}.tar.gz" || {
+		echo "${oldtagname}.tar.gz does not exist"
+		return 1
+	}
+
+	test -f "${oldtagname}.tar.asc" || {
+		echo "${oldtagname}.tar.asc does not exist"
+		return 1
+	}
+
+	zcat "${oldtagname}.tar.gz" | gpg --verify "${oldtagname}.tar.asc" - 2>${verify_out} || {
+		echo "Failed to verify ${oldtagname}.tar.asc"
+		return 1
+	}
+
+	grep -q "${GPG_KEYID}" "${verify_out}" || {
+		echo "${oldtagname}.tar.asc was not generated with GPG_KEYID[${GPG_KEYID}]!"
+		echo ""
+		cat "${verify_out}"
+		return 1
+	}
+
+	return 0
+}
+
 verify_release() {
 	check_args "${FUNCNAME}" "$#" "0" || return 1
 
@@ -141,6 +270,19 @@ create_release() {
 
 	echo "Releasing product ${product}"
 
+	test -n "${tagname}" && {
+		git tag -l "${tagname}" | grep -q "${tagname}" && {
+			echo "tagname[${tagname}] already exist"
+			return 1
+		}
+
+		local _tgzname="${tagname}.tar.gz"
+		test -e "${_tgzname}" && {
+			echo "_tgzname[${_tgzname}] already exist"
+			return 1
+		}
+	}
+
 	echo "Building release tarball"
 	local tgzname=$(make dist 2>&1 | grep ^Created | cut -d' ' -f2)
 	test -f "${tgzname}" || {
@@ -155,9 +297,21 @@ create_release() {
 		return 1
 	}
 
+	local _tagname=$(basename ${tgzname} .tar.gz)
+	test -n "${tagname}" && {
+		test x"${_tagname}" = x"${tagname}" || {
+			echo "Invalid tgzname[${tgzname}]"
+			return 1
+		}
+	}
+	tagname="${_tagname}"
+
 	local tarname=$(basename ${tgzname} .gz)
 	echo "Tarball: ${tarname}"
-	gunzip -f ${tgzname} || exit 1
+	gunzip -f ${tgzname} || {
+		echo "Failed to decompress tarball ${tarname}"
+		return 1
+	}
 	test -f "${tarname}" || {
 		echo "Failed to decompress tarball ${tarname}"
 		return 1
@@ -165,14 +319,13 @@ create_release() {
 	CLEANUP_FILES="${CLEANUP_FILES} ${tarname}"
 
 	# tagname is global
-	tagname=$(basename ${tarname} .tar)
 	echo "Tagging as ${tagname}"
 	git tag -u ${GPG_KEYID} -s "${tagname}" -m "${productbase}: tag release ${tagname}" || {
 		return 1
 	}
 	CLEANUP_TAGS="${CLEANUP_TAGS} ${tagname}"
 
-	echo "signing"
+	echo "Signing ${tarname} => ${tarname}.asc"
 	rm -f "${tarname}.asc"
 	gpg -u "${GPG_USER}" --detach-sign --armor ${tarname} || {
 		return 1
@@ -182,7 +335,7 @@ create_release() {
 		return 1
 	}
 	CLEANUP_FILES="${CLEANUP_FILES} ${tarname}.asc"
-	echo "compressing"
+	echo "Compressing ${tarname} => ${tgzname}"
 	gzip -f -9 ${tarname}
 	test -f "${tgzname}" || {
 		echo "Failed to compress ${tgzname}"
@@ -192,6 +345,52 @@ create_release() {
 	return 0
 }
 
+patch_release() {
+	check_args "${FUNCNAME}" "$#" "0" || return 1
+	require_tagname "${FUNCNAME}"
+
+	test -n "${patchfile}" || {
+		return 0
+	}
+
+	local oldpwd=$(pwd)
+	echo "Generating ${patchfile}"
+	(
+		set -e
+		set -u
+		pushd "${TMPDIR}"
+		tar xfz "${oldpwd}/${oldtagname}.tar.gz"
+		tar xfz "${oldpwd}/${tagname}.tar.gz"
+		diff -Npur "${oldtagname}/" "${tagname}/" > "${patchfile}"
+		popd
+	)
+	CLEANUP_FILES="${CLEANUP_FILES} ${patchfile}"
+	mv "${TMPDIR}/${patchfile}" "${patchfile}" || {
+		echo "failed cmd[mv ${TMPDIR}/${patchfile} ${patchfile}]"
+		return 1
+	}
+
+	echo "Signing ${patchfile} => ${patchfile}.asc"
+	rm -f "${patchfile}.asc"
+	CLEANUP_FILES="${CLEANUP_FILES} ${patchfile}.asc"
+	gpg -u "${GPG_USER}" --detach-sign --armor ${patchfile} || {
+		return 1
+	}
+	test -f "${patchfile}.asc" || {
+		echo "Failed to create signature ${patchfile}.asc"
+		return 1
+	}
+	echo "Compressing ${patchfile} => ${patchfile}.gz"
+	CLEANUP_FILES="${CLEANUP_FILES} ${patchfile}.gz"
+	gzip -f -9 ${patchfile}
+	test -f "${patchfile}.gz" || {
+		echo "Failed to compress ${patchfile}.gz"
+		return 1
+	}
+
+	return 0
+}
+
 whatsnew_release() {
 	check_args "${FUNCNAME}" "$#" "0" || return 1
 	require_tagname "${FUNCNAME}"
@@ -207,11 +406,23 @@ check_nopatch() {
 	check_args "${FUNCNAME}" "$#" "0" || return 1
 	require_tagname "${FUNCNAME}"
 
-	git tag -v "${tagname}" || {
-		echo "failed to verify tag[${tagname}]"
+	local verify_out="${TMPDIR}/verify-${oldtagname}.out"
+
+	echo "Verifying tagname: ${tagname}"
+
+	git tag -v "${tagname}" >${verify_out} 2>&1 || {
+		echo "failed to verify old tag[${oldtagname}]"
+		return 1
+	}
+	grep -q "${GPG_KEYID}" "${verify_out}" || {
+		echo "tagname[${tagname}] was not generated with GPG_KEYID[${GPG_KEYID}]!"
+		echo ""
+		cat "${verify_out}"
 		return 1
 	}
 
+	echo "Verifying ${tagname}.tar.gz and ${tagname}.tar.asc"
+
 	test -f "${tagname}.tar.gz" || {
 		echo "${tagname}.tar.gz does not exist"
 		return 1
@@ -222,11 +433,98 @@ check_nopatch() {
 		return 1
 	}
 
+	zcat "${tagname}.tar.gz" | gpg --verify "${tagname}.tar.asc" - 2>${verify_out} || {
+		echo "Failed to verify ${tagname}.tar.asc"
+		return 1
+	}
+	grep -q "${GPG_KEYID}" "${verify_out}" || {
+		echo "${tagname}.tar.asc was not generated with GPG_KEYID[${GPG_KEYID}]!"
+		echo ""
+		cat "${verify_out}"
+		return 1
+	}
+
 	ls -la ${tagname}.*
 
 	return 0
 }
 
+check_samba_stable() {
+	check_args "${FUNCNAME}" "$#" "0" || return 1
+	require_tagname "${FUNCNAME}"
+
+	load_samba_stable_versions
+
+	local verify_out="${TMPDIR}/verify-${oldtagname}.out"
+
+	echo "Verifying tagname: ${tagname}"
+
+	git tag -v "${tagname}" >${verify_out} 2>&1 || {
+		echo "failed to verify old tag[${oldtagname}]"
+		return 1
+	}
+	grep -q "${GPG_KEYID}" "${verify_out}" || {
+		echo "tagname[${tagname}] was not generated with GPG_KEYID[${GPG_KEYID}]!"
+		echo ""
+		cat "${verify_out}"
+		return 1
+	}
+
+	echo "Verifying ${tagname}.tar.gz and ${tagname}.tar.asc"
+
+	test -f "${tagname}.tar.gz" || {
+		echo "${tagname}.tar.gz does not exist"
+		return 1
+	}
+
+	test -f "${tagname}.tar.asc" || {
+		echo "${tagname}.tar.asc does not exist"
+		return 1
+	}
+
+	zcat "${tagname}.tar.gz" | gpg --verify "${tagname}.tar.asc" - 2>${verify_out} || {
+		echo "Failed to verify ${tagname}.tar.asc"
+		return 1
+	}
+	grep -q "${GPG_KEYID}" "${verify_out}" || {
+		echo "${tagname}.tar.asc was not generated with GPG_KEYID[${GPG_KEYID}]!"
+		echo ""
+		cat "${verify_out}"
+		return 1
+	}
+
+	test -n "${patchfile}" || {
+		ls -lart ${tagname}.*
+		return 0
+	}
+
+	echo "Verifying ${patchfile}.gz and ${patchfile}.asc"
+
+	test -f "${patchfile}.gz" || {
+		echo "${patchfile}.gz does not exist"
+		return 1
+	}
+
+	test -f "${patchfile}.asc" || {
+		echo "${patchfile}.asc does not exist"
+		return 1
+	}
+
+	zcat "${patchfile}.gz" | gpg --verify "${patchfile}.asc" - 2>${verify_out} || {
+		echo "Failed to verify ${patchfile}.asc"
+		return 1
+	}
+	grep -q "${GPG_KEYID}" "${verify_out}" || {
+		echo "${patchfile}.asc was not generated with GPG_KEYID[${GPG_KEYID}]!"
+		echo ""
+		cat "${verify_out}"
+		return 1
+	}
+
+	ls -lart ${tagname}.* ${patchfile}.*
+	return 0
+}
+
 check_release() {
 	check_args "${FUNCNAME}" "$#" "0" || return 1
 
@@ -251,12 +549,12 @@ push_release() {
 	return 0
 }
 
-upload_release() {
+upload_nopatch() {
 	check_args "${FUNCNAME}" "$#" "0" || return 1
 	require_tagname "${FUNCNAME}"
 
 	echo "Upload ${tagname}.* to '${upload_url}'"
-	rsync -Pav ${tagname}.* "${upload_url}/" || {
+	rsync -Pav --delay-updates ${tagname}.* "${upload_url}/" || {
 		return 1
 	}
 	rsync ${upload_url}/${tagname}.*
@@ -264,7 +562,49 @@ upload_release() {
 	return 0
 }
 
-announce_samba_rc() {
+upload_samba_stable() {
+	check_args "${FUNCNAME}" "$#" "0" || return 1
+	require_tagname "${FUNCNAME}"
+
+	load_samba_stable_versions
+
+	local release_url="${upload_url}samba/stable/"
+	local patch_url="${upload_url}samba/patches/"
+
+	echo "Upload ${tagname}.tar.* to '${release_url}'"
+	ls -lart ${tagname}.tar.*
+	rsync -Pav --delay-updates ${tagname}.tar.* "${release_url}/" || {
+		return 1
+	}
+	rsync ${release_url}/${tagname}.tar.*
+
+	test -n "${patchfile}" || {
+		return 0
+	}
+
+	echo "Upload ${patchfile}.* to '${patch_url}'"
+	ls -lart ${patchfile}.*
+	rsync -Pav --delay-updates ${patchfile}.* "${patch_url}/" || {
+		return 1
+	}
+	rsync ${patch_url}/${patchfile}.*
+
+	return 0
+}
+
+upload_release() {
+	check_args "${FUNCNAME}" "$#" "0" || return 1
+
+	test -n "${upload_fn}" || {
+		echo "upload_fn variable empty"
+		return 1
+	}
+
+	echo "Running ${upload_fn}"
+	${upload_fn}
+}
+
+announcement_samba_rc() {
 	check_args "${FUNCNAME}" "$#" "0" || return 1
 	require_tagname "${FUNCNAME}"
 
@@ -274,8 +614,6 @@ announce_samba_rc() {
 	}
 
 	local t=""
-	local utcdate=$(date --utc +"%d %B %Y")
-	local utctime=$(date --utc +"%Y%m%d-%H%M%S")
 	local version=$(echo "${tagname}" | sed -e 's!^samba-!!')
 	local href="#${version}"
 	local series=$(echo "${version}" | cut -d '.' -f1-2)
@@ -299,16 +637,17 @@ announce_samba_rc() {
 		;;
 	esac
 
+	CLEANUP_FILES="${CLEANUP_FILES} announce.${tagname}.to.txt"
 	{
 		echo "samba-announce at lists.samba.org, samba at lists.samba.org, samba-technical at lists.samba.org"
 	} > announce.${tagname}.to.txt
-	CLEANUP_FILES="${CLEANUP_FILES} announce.${tagname}.to.txt"
 
+	CLEANUP_FILES="${CLEANUP_FILES} announce.${tagname}.subject.txt"
 	{
 		echo "[Announce] Samba ${version} Available for Download"
 	} > announce.${tagname}.subject.txt
-	CLEANUP_FILES="${CLEANUP_FILES} announce.${tagname}.subject.txt"


-- 
Samba Shared Repository



More information about the samba-cvs mailing list