Ported Makefile to sla (https://github.com/fboender/sla)
parent
314ec194de
commit
72e1885be4
@ -1,106 +0,0 @@ |
||||
.PHONY: doc test |
||||
PROG=scriptform
|
||||
|
||||
fake: |
||||
# NOOP
|
||||
|
||||
install: |
||||
cp src/scriptform.py /usr/bin/scriptform
|
||||
|
||||
uninstall: |
||||
rm /usr/bin/scriptform
|
||||
|
||||
release: release_src release_deb release_rpm |
||||
|
||||
doc: |
||||
cat doc/header.html > doc/MANUAL.html
|
||||
markdown_py doc/MANUAL.md >> doc/MANUAL.html
|
||||
cat doc/footer.html >> doc/MANUAL.html
|
||||
|
||||
cat doc/header.html > README.html
|
||||
markdown_py README.md >> README.html
|
||||
cat doc/footer.html >> README.html
|
||||
|
||||
release_src: doc |
||||
@echo "Making release for version $(REL_VERSION)"
|
||||
|
||||
@if [ -z "$(REL_VERSION)" ]; then echo "REL_VERSION required"; exit 1; fi
|
||||
|
||||
# Prepare source
|
||||
rm -rf $(PROG)-$(REL_VERSION)
|
||||
mkdir $(PROG)-$(REL_VERSION)
|
||||
cp src/*.py $(PROG)-$(REL_VERSION)/
|
||||
mv $(PROG)-$(REL_VERSION)/scriptform.py $(PROG)-$(REL_VERSION)/scriptform
|
||||
cp LICENSE $(PROG)-$(REL_VERSION)/
|
||||
cp README.md $(PROG)-$(REL_VERSION)/
|
||||
cp contrib/release_Makefile $(PROG)-$(REL_VERSION)/Makefile
|
||||
cp doc/MANUAL.html $(PROG)-$(REL_VERSION)/MANUAL.html
|
||||
|
||||
# Bump version numbers
|
||||
find $(PROG)-$(REL_VERSION)/ -type f -print0 | xargs -0 sed -i "s/%%VERSION%%/$(REL_VERSION)/g"
|
||||
|
||||
# Create archives
|
||||
zip -r $(PROG)-$(REL_VERSION).zip $(PROG)-$(REL_VERSION)
|
||||
tar -vczf $(PROG)-$(REL_VERSION).tar.gz $(PROG)-$(REL_VERSION)
|
||||
|
||||
release_deb: release_src doc |
||||
@if [ -z "$(REL_VERSION)" ]; then echo "REL_VERSION required"; exit 1; fi
|
||||
|
||||
mkdir -p rel_deb/usr/bin
|
||||
mkdir -p rel_deb/usr/lib/scriptform
|
||||
mkdir -p rel_deb/usr/share/doc/$(PROG)
|
||||
mkdir -p rel_deb/usr/share/man/man1
|
||||
|
||||
# Copy the source to the release directory structure.
|
||||
cp LICENSE rel_deb/usr/share/doc/$(PROG)
|
||||
cp README.md rel_deb/usr/share/doc/$(PROG)
|
||||
cp doc/MANUAL.md rel_deb/usr/share/doc/$(PROG)
|
||||
cp README.html rel_deb/usr/share/doc/$(PROG)
|
||||
cp doc/MANUAL.html rel_deb/usr/share/doc/$(PROG)
|
||||
cp -ar examples rel_deb/usr/share/doc/$(PROG)
|
||||
cp src/*.py rel_deb/usr/lib/scriptform/
|
||||
ln -s /usr/lib/scriptform/scriptform.py rel_deb/usr/bin/scriptform
|
||||
|
||||
cp contrib/scriptform.init.d_debian rel_deb/usr/share/doc/$(PROG)
|
||||
cp contrib/scriptform.init.d_redhat rel_deb/usr/share/doc/$(PROG)
|
||||
cp contrib/scriptform.service rel_deb/usr/share/doc/$(PROG)
|
||||
cp -ar contrib/debian/DEBIAN rel_deb/
|
||||
|
||||
# Bump version numbers
|
||||
find rel_deb/ -type f -print0 | xargs -0 sed -i "s/%%VERSION%%/$(REL_VERSION)/g"
|
||||
|
||||
# Create debian pacakge
|
||||
fakeroot dpkg-deb --build rel_deb > /dev/null
|
||||
mv rel_deb.deb $(PROG)-$(REL_VERSION).deb
|
||||
|
||||
# Cleanup
|
||||
rm -rf rel_deb
|
||||
rm -rf $(PROG)-$(REL_VERSION)
|
||||
|
||||
release_rpm: release_deb |
||||
alien -r scriptform-$(REL_VERSION).deb
|
||||
|
||||
clean: |
||||
rm -rf *.tar.gz
|
||||
rm -rf *.zip
|
||||
rm -rf *.deb
|
||||
rm -rf rel_deb
|
||||
rm -rf scriptform-*
|
||||
rm -rf doc/manual.html
|
||||
rm -rf doc/MANUAL.html
|
||||
rm -rf examples/megacorp_acc/megacorp.db
|
||||
rm -rf examples/megacorp_acc/.coverage
|
||||
rm -rf examples/megacorp_acc/htmlcov
|
||||
find ./ -name "*.log" -delete
|
||||
find ./ -name "*.pyc" -delete
|
||||
rm -rf $(PROG)-$(REL_VERSION)
|
||||
rm -f test/data.csv
|
||||
rm -f test/data.raw
|
||||
|
||||
test: |
||||
@echo "\nTESTS\n"
|
||||
cd test && python ./test.py
|
||||
@echo "\nFLAKE8\n"
|
||||
cd src && flake8 *.py || true
|
||||
@echo "\nPYLINT\n"
|
||||
cd src && pylint --reports=n -dR -d star-args -d no-member *.py || true
|
@ -0,0 +1,176 @@ |
||||
# |
||||
# This is a script containing functions that are used as build rules. You can |
||||
# use the Simple Little Automator (https://github.com/fboender/sla.git) to run |
||||
# these rules, or you can run them directly in your shell: |
||||
# |
||||
# $ bash -c ". build.sla && test" |
||||
# |
||||
|
||||
PROG="scriptform" |
||||
|
||||
test () { |
||||
# Run tests |
||||
cd test && python ./test.py |
||||
cd src && flake8 *.py || true |
||||
cd src && pylint --reports=n -dR -d star-args -d no-member *.py || true |
||||
} |
||||
|
||||
clean () { |
||||
# Clean the repo of artifacts |
||||
rm -rf $PROG.spec |
||||
rm -rf *.tar.gz |
||||
rm -rf *.zip |
||||
rm -rf *.deb |
||||
rm -rf rel_deb |
||||
rm -rf scriptform-* |
||||
rm -rf doc/manual.html |
||||
rm -rf doc/MANUAL.html |
||||
rm -rf examples/megacorp_acc/megacorp.db |
||||
rm -rf examples/megacorp_acc/.coverage |
||||
rm -rf examples/megacorp_acc/htmlcov |
||||
find ./ -name "*.log" -delete |
||||
find ./ -name "*.pyc" -delete |
||||
rm -f test/data.csv |
||||
rm -f test/data.raw |
||||
rm -rf dist/ |
||||
rm -rf build |
||||
} |
||||
|
||||
doc () { |
||||
# Generate documentation |
||||
cat doc/header.html > doc/MANUAL.html |
||||
markdown_py doc/MANUAL.md >> doc/MANUAL.html |
||||
cat doc/footer.html >> doc/MANUAL.html |
||||
|
||||
cat doc/header.html > README.html |
||||
markdown_py README.md >> README.html |
||||
cat doc/footer.html >> README.html |
||||
T_DOC_BUILT=1 |
||||
} |
||||
|
||||
_release_check() { |
||||
# Verify and prepare for release |
||||
|
||||
# Only run this rule once |
||||
if [ -z "$RELEASE_CHECK_DONE" ]; then |
||||
RELEASE_CHECK_DONE=1 |
||||
|
||||
# Prepare project for release |
||||
clean |
||||
doc |
||||
|
||||
# Check that REL_VERSION is set |
||||
if [ ! -z "$1" ]; then |
||||
REL_VERSION="$1" |
||||
shift |
||||
else |
||||
echo "REL_VERSION not set. Aborting" >&2 |
||||
exit 1 |
||||
fi |
||||
fi |
||||
} |
||||
|
||||
release_src () { |
||||
# Build source (tar.gz) release |
||||
_release_check "$*" |
||||
|
||||
# Prepare source |
||||
rm -rf "$PROG-$REL_VERSION" |
||||
mkdir "$PROG-$REL_VERSION" |
||||
cp src/*.py "$PROG-$REL_VERSION/" |
||||
mv "$PROG-$REL_VERSION/scriptform.py" "$PROG-$REL_VERSION/$PROG" |
||||
cp LICENSE "$PROG-$REL_VERSION/" |
||||
cp README.md "$PROG-$REL_VERSION/" |
||||
cp contrib/release_Makefile "$PROG-$REL_VERSION/Makefile" |
||||
cp doc/MANUAL.html "$PROG-$REL_VERSION/MANUAL.html" |
||||
|
||||
# Bump version numbers |
||||
find "$PROG-$REL_VERSION/" -type f -print0 | xargs -0 sed -i "s/%%VERSION%%/$REL_VERSION/g" |
||||
|
||||
# Create archives |
||||
zip -q -r "$PROG-$REL_VERSION.zip" "$PROG-$REL_VERSION" |
||||
tar -czf "$PROG-$REL_VERSION.tar.gz" "$PROG-$REL_VERSION" |
||||
} |
||||
|
||||
release_deb () { |
||||
# Build deb release |
||||
_release_check "$*" |
||||
|
||||
if [ -z "$RELEASE_DEB_DONE" ]; then |
||||
mkdir -p "rel_deb/usr/bin" |
||||
mkdir -p "rel_deb/usr/lib/$PROG" |
||||
mkdir -p "rel_deb/usr/share/doc/$PROG" |
||||
mkdir -p "rel_deb/usr/share/man/man1" |
||||
|
||||
# Copy the source to the release directory structure. |
||||
cp LICENSE "rel_deb/usr/share/doc/$PROG" |
||||
cp README.md "rel_deb/usr/share/doc/$PROG" |
||||
cp doc/MANUAL.md "rel_deb/usr/share/doc/$PROG" |
||||
cp README.html "rel_deb/usr/share/doc/$PROG" |
||||
cp doc/MANUAL.html "rel_deb/usr/share/doc/$PROG" |
||||
cp -ar examples "rel_deb/usr/share/doc/$PROG" |
||||
cp src/*.py "rel_deb/usr/lib/$PROG/" |
||||
ln -s "/usr/lib/$PROG/scriptform.py" "rel_deb/usr/bin/$PROG" |
||||
|
||||
cp contrib/scriptform.init.d_debian "rel_deb/usr/share/doc/$PROG" |
||||
cp contrib/scriptform.init.d_redhat "rel_deb/usr/share/doc/$PROG" |
||||
cp contrib/scriptform.service "rel_deb/usr/share/doc/$PROG" |
||||
cp -ar contrib/debian/DEBIAN "rel_deb/" |
||||
|
||||
# Bump version numbers |
||||
find rel_deb/ -type f -print0 | xargs -0 sed -i "s/%%VERSION%%/$REL_VERSION/g" |
||||
|
||||
# Create debian pacakge |
||||
fakeroot dpkg-deb --build rel_deb > /dev/null |
||||
mv rel_deb.deb "$PROG-$REL_VERSION.deb" |
||||
|
||||
# Cleanup |
||||
rm -rf rel_deb |
||||
rm -rf "$PROG-$REL_VERSION" |
||||
|
||||
RELEASE_DEB_DONE=1 |
||||
fi |
||||
} |
||||
|
||||
release_rpm () { |
||||
# Build rpm release |
||||
_release_check "$*" |
||||
release_deb |
||||
|
||||
alien -r -g -v scriptform-$REL_VERSION.deb |
||||
sed -i 's#%dir "/"##' scriptform-$REL_VERSION/scriptform-$REL_VERSION-2.spec |
||||
sed -i 's#%dir "/usr/"##' scriptform-$REL_VERSION/scriptform-$REL_VERSION-2.spec |
||||
sed -i 's#%dir "/usr/bin/"##' scriptform-$REL_VERSION/scriptform-$REL_VERSION-2.spec |
||||
sed -i 's#%dir "/usr/lib/"##' scriptform-$REL_VERSION/scriptform-$REL_VERSION-2.spec |
||||
sed -i 's#%dir "/usr/share/"##' scriptform-$REL_VERSION/scriptform-$REL_VERSION-2.spec |
||||
sed -i 's#%dir "/usr/share/doc/"##' scriptform-$REL_VERSION/scriptform-$REL_VERSION-2.spec |
||||
sed -i 's#%dir "/usr/share/man/"##' scriptform-$REL_VERSION/scriptform-$REL_VERSION-2.spec |
||||
sed -i 's#%dir "/usr/share/man/man1/"##' scriptform-$REL_VERSION/scriptform-$REL_VERSION-2.spec |
||||
pushd . |
||||
cd scriptform-$REL_VERSION/ |
||||
FULLPATH="$(pwd)" |
||||
rpmbuild --quiet --target=noarch --buildroot "$FULLPATH" -bb scriptform-$REL_VERSION-2.spec |
||||
popd |
||||
} |
||||
|
||||
release_bin () { |
||||
# Build binary release |
||||
_release_check "$*" |
||||
|
||||
rm -rf dist/scriptform/ |
||||
pyinstaller --strip --onefile src/scriptform.py |
||||
mv dist $PROG-$REL_VERSION-bin64 |
||||
tar -czf $PROG-$REL_VERSION-bin64.tar.gz $PROG-$REL_VERSION-bin64 |
||||
rm -rf $PROG-$REL_VERSION-bin64 |
||||
rm -rf $PROG.spec |
||||
rm -rf build |
||||
} |
||||
|
||||
release () { |
||||
# Build releases for all platforms |
||||
_release_check "$*" |
||||
release_src |
||||
release_deb |
||||
release_rpm |
||||
release_bin |
||||
} |
Loading…
Reference in new issue