diff options
Diffstat (limited to 'Makefile')
| -rw-r--r-- | Makefile | 181 |
1 files changed, 103 insertions, 78 deletions
@@ -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 |
