many release related cleanups

Signed-off-by: Nico Schottelius <nico@bento.schottelius.org>
This commit is contained in:
Nico Schottelius 2013-07-09 17:22:56 +02:00
parent 24bb4aa481
commit fc9dd61fe0
3 changed files with 106 additions and 99 deletions

1
.gitignore vendored
View file

@ -27,3 +27,4 @@ cdist/version.py
/pkg /pkg
/src /src
build build
.lock-*

159
Makefile
View file

@ -18,6 +18,9 @@
# #
# #
# dist = local
# release = remote
A2XM=a2x -f manpage --no-xmllint -a encoding=UTF-8 A2XM=a2x -f manpage --no-xmllint -a encoding=UTF-8
A2XH=a2x -f xhtml --no-xmllint -a encoding=UTF-8 A2XH=a2x -f xhtml --no-xmllint -a encoding=UTF-8
helper=./bin/build-helper helper=./bin/build-helper
@ -36,6 +39,8 @@ WEBPAGE=$(WEBBASE).mdwn
CHANGELOG_VERSION=$(shell $(helper) changelog-version) CHANGELOG_VERSION=$(shell $(helper) changelog-version)
CHANGELOG_FILE=docs/changelog CHANGELOG_FILE=docs/changelog
VERSION_FILE=cdist/version.py
################################################################################ ################################################################################
# Manpages # Manpages
# #
@ -90,20 +95,18 @@ man: $(MANTYPEALL) $(MANREFALL) $(MANSTATICALL)
# Manpages #5: release part # Manpages #5: release part
MANWEBDIR=$(WEBBASE)/man/$(CHANGELOG_VERSION) MANWEBDIR=$(WEBBASE)/man/$(CHANGELOG_VERSION)
man-git: man man-dist: man
rm -rf "${MANWEBDIR}" rm -rf "${MANWEBDIR}"
mkdir -p "${MANWEBDIR}/man1" "${MANWEBDIR}/man7" mkdir -p "${MANWEBDIR}/man1" "${MANWEBDIR}/man7"
cp ${MAN1DSTDIR}/*.html ${MAN1DSTDIR}/*.css ${MANWEBDIR}/man1 cp ${MAN1DSTDIR}/*.html ${MAN1DSTDIR}/*.css ${MANWEBDIR}/man1
cp ${MAN7DSTDIR}/*.html ${MAN7DSTDIR}/*.css ${MANWEBDIR}/man7 cp ${MAN7DSTDIR}/*.html ${MAN7DSTDIR}/*.css ${MANWEBDIR}/man7
cd ${MANWEBDIR} && git add . && git commit -m "cdist manpages update: $(CHANGELOG_VERSION)" cd ${MANWEBDIR} && git add . && git commit -m "cdist manpages update: $(CHANGELOG_VERSION)"
man-fix-link: man-release: web-release
# Fix ikiwiki, which does not like symlinks for pseudo security # Fix ikiwiki, which does not like symlinks for pseudo security
ssh tee.schottelius.org \ ssh tee.schottelius.org \
"cd /home/services/www/nico/www.nico.schottelius.org/www/software/cdist/man && rm -f latest && ln -sf "$(CHANGELOG_VERSION)" latest" "cd /home/services/www/nico/www.nico.schottelius.org/www/software/cdist/man && rm -f latest && ln -sf "$(CHANGELOG_VERSION)" latest"
man-release: man web-release
################################################################################ ################################################################################
# Speeches # Speeches
# #
@ -119,11 +122,11 @@ $(SPEECHDIR)/%.pdf: $(SPEECHDIR)/%.tex
speeches: $(SPEECHES) speeches: $(SPEECHES)
speeches-release: speeches speeches-dist: speeches
rm -rf "${SPEECHESWEBDIR}" rm -rf "${SPEECHESWEBDIR}"
mkdir -p "${SPEECHESWEBDIR}" mkdir -p "${SPEECHESWEBDIR}"
cp ${SPEECHES} "${SPEECHESWEBDIR}" cp ${SPEECHES} "${SPEECHESWEBDIR}"
cd ${SPEECHESWEBDIR} && git add . && git commit -m "cdist speeches updated" cd ${SPEECHESWEBDIR} && git add . && git commit -m "cdist speeches updated" || true
################################################################################ ################################################################################
# Website # Website
@ -141,31 +144,105 @@ web-doc:
rsync -av "$(WEBSRCDIR)/" "${WEBBASE}/.." rsync -av "$(WEBSRCDIR)/" "${WEBBASE}/.."
cd "${WEBBASE}/.." && git add cdist* && git commit -m "cdist doc update" cdist* || true cd "${WEBBASE}/.." && git add cdist* && git commit -m "cdist doc update" cdist* || true
web-pub: web web-dist: web-blog web-doc
cd "${WEBDIR}" && make pub
web-release: web-blog web-doc web-release: web-dist man-dist speeches-dist
cd "${WEBDIR}" && make pub cd "${WEBDIR}" && make pub
################################################################################ ################################################################################
# Release && release check # Release: Mailinglist
# #
CHECKS=check-version check-date check-unittest ML_FILE=.lock-ml
DIST=dist-tag dist-branch-merge # Only send mail once - lock until new changelog things happened
$(ML_FILE): $(CHANGELOG_FILE)
$(helper) ml-release $(CHANGELOG_VERSION)
touch $@
RELEASE=web-release release-man release-pypi release-archlinux-makepkg ml-release: $(ML_FILE)
RELEASE+=release-blog release-ml
RELEASE+=release-freecode release-archlinux-aur-upload
version=`git describe`
versionchangelog=`$(helper) changelog-version`
versionfile=cdist/version.py
archlinuxtar=cdist-${versionchangelog}-1.src.tar.gz ################################################################################
# Release: Freecode
#
FREECODE_FILE=.lock-freecode
$(versionfile): $(FREECODE_FILE): $(CHANGELOG_FILE)
$(helper) version $(helper) freecode-release $(CHANGELOG_VERSION)
touch $@
freecode-release: $(FREECODE_FILE)
################################################################################
# git and git dependent stuff
#
GIT_TAG_FILE=.git/refs/tags/$(CHANGELOG_VERSION)
GIT_SRC_BRANCH=master
GIT_DST_BRANCH=$(shell echo $(CHANGELOG_VERSION) | cut -d. -f '1,2')
git-tag: $(GIT_TAG_FILE)
$(GIT_TAG_FILE):
@printf "Enter tag description for $(CHANGELOG_VERSION)> "
@read tagmessage; git tag "$(CHANGELOG_VERSION)" -m "$$tagmessage"
#git-branch-merge: git-tag
git-branch-merge:
echo $(GIT_DST_BRANCH)
current=$$(git rev-parse --abbrev-ref HEAD) \
git checkout "$(GIT_DST_BRANCH)" \
git merge "$(GIT_SRC_BRANCH)"
git checkout "$$current"
$(VERSION_FILE): .git/refs/heads/*
echo "VERSION = \"$$(git describe)\"" > $@
# Pub is Nico's "push to all git remotes" thing
# git-release is the better term
git-release pub:
for remote in "" github sf; do \
echo "Pushing to $$remote" \
git push --mirror $$remote \
done
################################################################################
# pypi
#
pypi-release: man $(VERSION_FILE) git-tag
python3 setup.py sdist upload
################################################################################
# archlinux
#
ARCHLINUXTAR=cdist-$(CHANGELOG_VERSION)-1.src.tar.gz
$(ARCHLINUXTAR): PKGBUILD pypi-release
makepkg -c --source
PKGBUILD: PKGBUILD.in
./PKGBUILD.in
archlinux-release: $(ARCHLINUXTAR)
burp -c system $^
################################################################################
# Release
#
CHECKS=check-date check-unittest
RELEASE=speeches-dist web-release
RELEASE+=ml-release freecode-release
RELEASE+=man-dist pypi-release git-release
RELEASE+=archlinux-release
release: $(RELEASE)
echo "Don't forget...: linkedin"
release-blog: blog
release-ml: release-blog
release-pub: man
$(DIST): dist-check $(DIST): dist-check
@ -175,47 +252,9 @@ $(RELEASE): $(DIST) $(CHECKS)
check-%: check-%:
$(helper) $@ $(helper) $@
# Pub is Nico's "push to all git remotes" thing
pub:
for remote in "" github sf; do \
echo "Pushing to $$remote" \
git push --mirror $$remote \
done
################################################################################
# dist code
#
dist-check: man
dist: $(DIST)
echo "Run \"make release\" to release to the public"
dist-pypi: man version
python3 setup.py sdist upload
$(archlinuxtar): PKGBUILD dist-pypi
makepkg -c --source
################################################################################
# release code
#
#release: pub $(RELEASE)
release: release-man
echo "Don't forget...: linkedin"
release-archlinux: $(archlinuxtar)
burp -c system $^
release-blog: blog
release-ml: release-blog
release-pub: man
PKGBUILD: PKGBUILD.in
./PKGBUILD.in
################################################################################ ################################################################################
# Cleanup # Cleanup
#
clean: clean:
rm -f $(MAN7DSTDIR)/cdist-reference.text rm -f $(MAN7DSTDIR)/cdist-reference.text

View file

@ -76,16 +76,6 @@ case "$option" in
"$0" test "$0" test
;; ;;
check-version)
changelog_version=$($0 changelog-version)
if git show --quiet $changelog_version >/dev/null 2>&1; then
echo "Version $changelog_version already exists, aborting."
exit 1
fi
;;
blog) blog)
version=$1; shift version=$1; shift
blogfile=$1; shift blogfile=$1; shift
@ -113,12 +103,13 @@ eof
git commit -m "cdist blog update: $version" "$blogfile" || true git commit -m "cdist blog update: $version" "$blogfile" || true
;; ;;
ml-release)
version=$1; shift
release-ml)
version=$($0 changelog-version)
to_a=cdist to_a=cdist
to_d=l.schottelius.org to_d=l.schottelius.org
to=${to_a}@${to_d} to=${to_a}@${to_d}
to=n@schottelius.org
from_a=nico-cdist from_a=nico-cdist
from_d=schottelius.org from_d=schottelius.org
@ -136,7 +127,7 @@ cdist $version has been released with the following changes:
eof eof
"$0" changelog-changes "$0" changelog-changes "$version"
cat << eof cat << eof
Cheers, Cheers,
@ -150,32 +141,8 @@ eof
;; ;;
dist-tag) freecode-release)
version=$($0 changelog-version) version=$1; shift
# add tag
printf "Enter tag description for %s> " "$version"
read tagmessage
git tag "$version" -m "$tagmessage"
;;
dist-branch-merge)
version=$($0 changelog-version)
target_branch=${version%\.*}
current_branch=$(git rev-parse --abbrev-ref HEAD)
if [ "$target_branch" = "$current_branch" ]; then
echo "Skipping merge, already on destination branch"
else
printf "Press enter to git merge $current_branch into \"$target_branch\" > "
read prompt
git checkout "$target_branch"
git merge "$current_branch"
git checkout "$current_branch"
fi
;;
release-freecode)
version=$($0 changelog-version)
api_token=$(awk '/machine freecode login/ { print $8 }' ~/.netrc) api_token=$(awk '/machine freecode login/ { print $8 }' ~/.netrc)
printf "Enter tag list for freecode release %s> " "$version" printf "Enter tag list for freecode release %s> " "$version"