Skip to content

Instantly share code, notes, and snippets.

@fredericlepied
Last active March 21, 2016 16:39
Show Gist options
  • Save fredericlepied/e96303d5ef535d7bab75 to your computer and use it in GitHub Desktop.
Save fredericlepied/e96303d5ef535d7bab75 to your computer and use it in GitHub Desktop.
#!/bin/bash
if [ $# -lt 2 ]; then
echo "$0 <branch> <milestone> <changelog message>" 1>&2
echo "Example: $0 rdo-mitaka Rebuild for Mitaka" 1>&2
exit 1
fi
set -ex
branch="$1"
shift 1
changelog="$*"
pkg=$(basename $PWD _distro)
spec=$(ls *.spec)
cd ../$pkg
git checkout .
git fetch --all -t
tag=$(git describe --abbrev=0 --tags)
# extract the milestone name
mname=${tag##*.0}
milestone=.0${mname}
# try to filter out bad milestone names
case "$mname" in
rc*)
;;
b*)
;;
*)
milestone=
;;
esac
if [ -z "$mname" ]; then
milestone=
fi
git checkout ${tag}
# call python setup.py twice as pbr could output something on the first run
python setup.py --version
pyver=$(python setup.py --version)
if [ -n "$milestone" ]; then
version=$(echo ${pyver}|sed "s/${milestone}.*$//")
else
version=${pyver}
fi
# no milestone
if [ "${pyver}" = "${version}" ]; then
milestone=
fi
git checkout master
cd ../${pkg}_distro
git checkout .
# already done
if git branch -a|grep -q "/${branch}\$"; then
echo "branch already created"
exit 0
fi
git checkout -b ${branch} rpm-master
if [ -n "$milestone" ]; then
sed -i -e "1i%define milestone $milestone" ${spec}
fi
sed -i -e "s/\(Version:\s*\)XXX/\1$version/" -e 's/\(Release:\s*\)XXX/\10.1%{?milestone}%{?dist}/' ${spec}
if ! egrep -q 'Source0:.*%{?(milestone|upstream_version)}?\.tar.*' ${spec}; then
sed -i -e 's/\(Source0:.*\)\(\.tar.*\)/\1%{?milestone}\2/' ${spec}
fi
sed -i -e 's/\(Source0:.*\)-master\(.*\)/\1-%{version}\2/' ${spec}
if ! grep -qF '%{!?upstream_version: ' ${spec}; then
sed -i -e '1i%{!?upstream_version: %global upstream_version %{version}%{?milestone}}' ${spec}
fi
RPM_DATE=$(LC_TIME=C date -u +"%a %b %e %Y")
echo "* ${RPM_DATE} RDO <rdo-list@redhat.com> ${version}-0.1${milestone}" >> ${spec}
echo " - ${changelog} ${mname}" >> ${spec}
git diff
spectool -g ${spec}
sed -i -e "s/defaultbranch=.*/defaultbranch=$branch/" .gitreview
git commit -m "${changelog} ${mname}" -a
git review -s
git push gerrit $branch
# create-release.sh ends here
@apevec
Copy link

apevec commented Mar 17, 2016

${version}-0.1.0b3 -> ${version}-0.1${milestone}

@apevec
Copy link

apevec commented Mar 17, 2016

we have rc1 now

@apevec
Copy link

apevec commented Mar 17, 2016

@hguemar
Copy link

hguemar commented Mar 17, 2016

We don't check that upstream_version fallback macro is defined
%{!?upstream_version: %global upstream_version %{version}%{?milestone}}

@hguemar
Copy link

hguemar commented Mar 17, 2016

Typo line 28 {?dist} => %{?dist}

@apevec
Copy link

apevec commented Mar 17, 2016

$pkg.spec doesn't work for openstack-* packages
you could replace it everywhere with *.spec - in distgit there can be only one .spec file

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment