[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