forked from ungleich-public/cdist
		
	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…
	
	Add table
		Add a link
		
	
		Reference in a new issue