many release related cleanups
Signed-off-by: Nico Schottelius <nico@bento.schottelius.org>
This commit is contained in:
parent
24bb4aa481
commit
fc9dd61fe0
3 changed files with 106 additions and 99 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -27,3 +27,4 @@ cdist/version.py
|
||||||
/pkg
|
/pkg
|
||||||
/src
|
/src
|
||||||
build
|
build
|
||||||
|
.lock-*
|
||||||
|
|
159
Makefile
159
Makefile
|
@ -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
|
||||||
|
|
|
@ -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"
|
||||||
|
|
Loading…
Reference in a new issue