summaryrefslogtreecommitdiff
path: root/Makefile
diff options
context:
space:
mode:
Diffstat (limited to 'Makefile')
-rw-r--r--Makefile181
1 files changed, 103 insertions, 78 deletions
diff --git a/Makefile b/Makefile
index 91c328b..8e0c53d 100644
--- a/Makefile
+++ b/Makefile
@@ -14,94 +14,119 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>.
NAME = targetcli
-LIB = /usr/share
-DOC = ${LIB}/doc/
-SETUP = ./setup.py
-GENDOC = ./bin/gendoc
-RPMVERSION = $$(grep Version: redhat/targetcli.spec | awk '{print $$2}')
GIT_BRANCH = $$(git branch | grep \* | tr -d \*)
+VERSION = $$(basename $$(git describe --tags | tr - .))
-all: usage
-usage:
+all:
@echo "Usage:"
+ @echo
@echo " make deb - Builds debian packages."
@echo " make rpm - Builds redhat packages."
- @echo " make clean - Cleanup the local repository"
- @echo " make cleanall - Cleanup the local repository and packages"
- @echo "Developer targets:"
- @echo " make doc - Generate the documentation"
- @echo " make sdist - Build the source tarball"
- @echo " make bdist - Build the installable tarball"
- @echo " make install - Install targetcli"
- @echo " make installdocs - Install the documentation"
-
-install:
- ${SETUP} install
-
-doc:
- ${GENDOC}
-
-installdocs: doc
- @test -e ${DOC} || \
- echo "Could not find ${DOC}; check the makefile variables."
- @test -e ${DOC}
- cp -r doc/* ${DOC}/${NAME}/
+ @echo " make release - Generates the release tarball."
+ @echo
+ @echo " make clean - Cleanup the local repository build files."
+ @echo " make cleanall - Also remove dist/*"
clean:
- ${CLEAN}
- rm -fv targetcli/*.pyc targetcli/*.html
- rm -frv doc
- rm -frv targetcli.egg-info MANIFEST build
- rm -frv pdf html
- rm -frv debian/tmp
- rm -fv build-stamp
- rm -fv dpkg-buildpackage.log dpkg-buildpackage.version
- rm -frv *.rpm warntargetcli.txt buildtargetcli
- rm -fv debian/*.debhelper.log debian/*.debhelper debian/*.substvars debian/files
- rm -fvr debian/targetcli-python2.5/
- rm -fvr debian/targetcli-python2.6/ debian/targetcli/ debian/targetcli-doc/
- rm -fv redhat/*.spec *.spec redhat/sed* sed*
- rm -frv targetcli-*
- ./bin/gen_changelog_cleanup
+ @rm -fv ${NAME}/*.pyc ${NAME}/*.html
+ @rm -frv doc
+ @rm -frv ${NAME}.egg-info MANIFEST build
+ @rm -frv debian/tmp
+ @rm -fv build-stamp
+ @rm -fv dpkg-buildpackage.log dpkg-buildpackage.version
+ @rm -frv *.rpm
+ @rm -fv debian/files debian/*.log debian/*.substvars
+ @rm -frv debian/${NAME}-doc/ debian/python2.5-${NAME}/
+ @rm -frv debian/python2.6-${NAME}/ debian/python-${NAME}/
+ @rm -frv results
+ @rm -fv redhat/*.spec *.spec redhat/sed* sed*
+ @rm -frv ${NAME}-*
+ @rm -frv *.rpm warn${NAME}.txt build${NAME}
+ @rm -fv debian/*.debhelper.log debian/*.debhelper debian/*.substvars debian/files
+ @rm -fvr debian/${NAME}-frozen/ debian/${NAME}-python2.5/
+ @rm -fvr debian/${NAME}-python2.6/ debian/${NAME}/ debian/${NAME}-doc/
+ @rm -frv log/
@echo "Finished cleanup."
cleanall: clean
- rm -frv dist
-
-deb: doc
- ./bin/gen_changelog
- dpkg-buildpackage -rfakeroot | tee dpkg-buildpackage.log
- ./bin/gen_changelog_cleanup
- grep "source version" dpkg-buildpackage.log | awk '{print $$4}' > dpkg-buildpackage.version
- @test -e dist || mkdir dist
- mv ../${NAME}_$$(cat dpkg-buildpackage.version).dsc dist
- mv ../${NAME}_$$(cat dpkg-buildpackage.version)_*.changes dist
- mv ../${NAME}_$$(cat dpkg-buildpackage.version).tar.gz dist
- mv ../*${NAME}*$$(cat dpkg-buildpackage.version)*.deb dist
- ./bin/gen_changelog_cleanup
-
-rpm: doc
- ./bin/gen_changelog
- @echo Building RPM version ${RPMVERSION}
- mkdir -p ~/rpmbuild/SOURCES/
- mkdir -p build
- git archive ${GIT_BRANCH} --prefix targetcli/ > build/targetcli.tar
- cd build; tar mxf targetcli.tar; rm targetcli.tar
- cp targetcli/__init__.py build/targetcli/targetcli
- cp -r doc build/targetcli/
- mv build/targetcli targetcli-${RPMVERSION}
- tar zcf ~/rpmbuild/SOURCES/targetcli-${RPMVERSION}.tar.gz targetcli-${RPMVERSION}
- rm -fr targetcli-${RPMVERSION}
- rpmbuild -ba redhat/*.spec
- @test -e dist || mkdir dist
- mv ~/rpmbuild/SRPMS/targetcli-${RPMVERSION}*.src.rpm dist/
- mv ~/rpmbuild/RPMS/*/targetcli-${RPMVERSION}*.rpm dist/
- mv ~/rpmbuild/RPMS/noarch/targetcli-doc-${RPMVERSION}*.rpm dist/
- ./bin/gen_changelog_cleanup
+ @rm -frv dist
-sdist: clean doc
- ${SETUP} sdist
+release: build/release-stamp
+build/release-stamp:
+ @mkdir -p build
+ @echo "Exporting the repository files..."
+ @git archive ${GIT_BRANCH} --prefix ${NAME}-${VERSION}/ \
+ | (cd build; tar xf -)
+ @echo "Cleaning up the target tree..."
+ @rm -f build/${NAME}-${VERSION}/Makefile
+ @rm -f build/${NAME}-${VERSION}/.gitignore
+ @rm -rf build/${NAME}-${VERSION}/bin
+ @echo "Fixing version string..."
+ @sed -i "s/__version__ = .*/__version__ = '${VERSION}'/g" \
+ build/${NAME}-${VERSION}/${NAME}/__init__.py
+ @echo "Generating rpm specfile from template..."
+ @cd build/${NAME}-${VERSION}; \
+ for spectmpl in redhat/*.spec.tmpl; do \
+ sed -i "s/Version:\( *\).*/Version:\1${VERSION}/g" $${spectmpl}; \
+ mv $${spectmpl} $$(basename $${spectmpl} .tmpl); \
+ done; \
+ rmdir redhat
+ @echo "Generating rpm changelog..."
+ @for commit in $$(git log --date=iso | grep -e ^commit -e ^Date: \
+ | tr -d '\n' | sed 's/commit /\n/g' | sed 's/Date: //g' \
+ | awk '{print $$2, $$3, $$1}' | sort -r | awk '{print $$3}'); do \
+ version=$$(basename $$(git describe $${commit} --tags | tr - .)); \
+ author=$$(git show $${commit} --format="format:%an <%ae>" -s); \
+ date=$$(git show $${commit} --format="format:%ad" -s \
+ | awk '{print $$1,$$2,$$3,$$5}'); \
+ echo '* '"$${date} $${author} $${version}-1"; \
+ git show $${commit} --format="format:%s%n" -s; \
+ git show $${commit} --format="format:%b" -s \
+ | sed 's/^* /- /g' | sed 's/^/ /g'; \
+ done >> $$(ls build/${NAME}-${VERSION}/*.spec)
+ @echo "Generating debian changelog..."
+ @for commit in $$(git log | grep ^commit | awk '{print $$2}'); do \
+ version=$$(basename $$(git describe $${commit} --tags | tr - .)); \
+ author=$$(git show $${commit} --format="format:%an <%ae>" -s); \
+ date=$$(git show $${commit} --format="format:%aD" -s); \
+ day=$$(git show $${commit} --format='format:%ai' -s \
+ | awk -F '-' '{print $$2}'); \
+ date=$$(echo $${date} \
+ | awk '{print $$1, "'"$${day}"'", $$3, $$4, $$5, $$6}'); \
+ echo "${NAME} ($${version}) unstable; urgency=low"; \
+ echo ; \
+ git show $${commit} --format="format: * %s%n" -s; \
+ git show $${commit} --format="format:%b%n" -s \
+ | sed 's/^* /- /g' | sed 's/^/ /g'; \
+ echo " -- $${author} $${date}"; \
+ echo ; \
+ done > build/${NAME}-${VERSION}/debian/changelog
+ @mkdir -p dist
+ @cd build; tar zcf ../dist/${NAME}-${VERSION}.tar.gz ${NAME}-${VERSION}
+ @echo "Generated release tarball:"
+ @echo " $$(ls dist/${NAME}-${VERSION}.tar.gz)"
+ @touch build/release-stamp
-bdist: clean doc
- ${SETUP} bdist
+deb: release build/deb-stamp
+build/deb-stamp:
+ @echo "Building debian packages..."
+ @cd build/${NAME}-${VERSION}; \
+ dpkg-buildpackage -rfakeroot -us -uc
+ @mv build/*_${VERSION}_*.deb dist/
+ @echo "Generated debian packages:"
+ @for pkg in $$(ls dist/*_${VERSION}_*.deb); do echo " $${pkg}"; done
+ @touch build/deb-stamp
+rpm: release build/rpm-stamp
+build/rpm-stamp:
+ @echo "Building rpm packages..."
+ @mkdir -p build/rpm
+ @build=$$(pwd)/build/rpm; dist=$$(pwd)/dist/; rpmbuild \
+ --define "_topdir $${build}" --define "_sourcedir $${dist}" \
+ --define "_rpmdir $${build}" --define "_buildir $${build}" \
+ --define "_srcrpmdir $${build}" -ba build/${NAME}-${VERSION}/*.spec
+ @mv build/rpm/*-${VERSION}*.src.rpm dist/
+ @mv build/rpm/*/*-${VERSION}*.rpm dist/
+ @echo "Generated rpm packages:"
+ @for pkg in $$(ls dist/*-${VERSION}*.rpm); do echo " $${pkg}"; done
+ @touch build/rpm-stamp