diff options
Diffstat (limited to '')
-rw-r--r-- | Makefile | 130 |
1 files changed, 130 insertions, 0 deletions
diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..092d53c --- /dev/null +++ b/Makefile @@ -0,0 +1,130 @@ +PKGNAME = nvmetcli +NAME = nvmet +GIT_BRANCH = $$(git branch | grep \* | tr -d \*) +VERSION = $$(basename $$(git describe --tags | tr - . | sed 's/^v//')) +DOCDIR = ./Documentation + +all: + @echo "Usage:" + @echo + @echo " make deb - Builds debian packages." + @echo " make rpm - Builds rpm packages." + @echo " make release - Generates the release tarball." + @echo " make doc - Builds manpages & html docs in ${DOCDIR}." + @echo + @echo " make clean - Cleanup the local repository build files." + @echo " make cleandoc - Cleanup auto-generated docs in ${DOCDIR}." + @echo " make cleanall - Remove dist/*, build files, auto-gen docs." + @echo " make installdoc - Install man pages (need sudo)." + @echo " make uninstalldoc - Uninstall man pages (need sudo)." + +test: + @nose2 -C --coverage ./nvmet + +doc: ${NAME} + ${MAKE} -C ${DOCDIR} + +installdoc: + ${MAKE} -C ${DOCDIR} installdoc + +uninstalldoc: + ${MAKE} -C ${DOCDIR} uninstalldoc + +cleandoc: + ${MAKE} -C ${DOCDIR} clean + +clean: + @rm -fv ${NAME}/*.pyc ${NAME}/*.html + @rm -frv doc + @rm -frv ${NAME}.egg-info MANIFEST build + @rm -fv build-stamp + @rm -frv results + @rm -frv ${PKGNAME}-* + @echo "Finished cleanup." + +cleanall: clean cleandoc + @rm -frv dist + +release: build/release-stamp +build/release-stamp: + @mkdir -p build + @echo "Exporting the repository files..." + @git archive ${GIT_BRANCH} --prefix ${PKGNAME}-${VERSION}/ \ + | (cd build; tar xfp -) + @echo "Cleaning up the target tree..." + @rm -f build/${PKGNAME}-${VERSION}/Makefile + @rm -f build/${PKGNAME}-${VERSION}/.gitignore + @echo "Fixing version string..." + @sed -i "s/__version__ = .*/__version__ = '${VERSION}'/g" \ + build/${PKGNAME}-${VERSION}/${NAME}/__init__.py + @echo "Generating debian changelog..." + @( \ + version=${VERSION}; \ + author=$$(git show HEAD --format="format:%an <%ae>" -s); \ + date=$$(git show HEAD --format="format:%aD" -s); \ + day=$$(git show HEAD --format='format:%ai' -s \ + | awk '{print $$1}' \ + | awk -F '-' '{print $$3}' | sed 's/^0/ /g'); \ + date=$$(echo $${date} \ + | awk '{print $$1, "'"$${day}"'", $$3, $$4, $$5, $$6}'); \ + hash=$$(git show HEAD --format="format:%H" -s); \ + echo "${PKGNAME} ($${version}) unstable; urgency=low"; \ + echo; \ + echo " * Generated from git commit $${hash}."; \ + echo; \ + echo " -- $${author} $${date}"; \ + echo; \ + ) > build/${PKGNAME}-${VERSION}/debian/changelog + @echo "Generating rpm specfile from template..." + @cd build/${PKGNAME}-${VERSION}; \ + for spectmpl in rpm/*.spec.tmpl; do \ + sed -i "s/Version:.*/Version: ${VERSION}/g" $${spectmpl}; \ + mv $${spectmpl} $$(basename $${spectmpl} .tmpl); \ + done; \ + rmdir rpm + @echo "Generating rpm changelog..." + @( \ + version=${VERSION}; \ + author=$$(git show HEAD --format="format:%an <%ae>" -s); \ + date=$$(git show HEAD --format="format:%ad" -s \ + | awk '{print $$1,$$2,$$3,$$5}'); \ + hash=$$(git show HEAD --format="format:%H" -s); \ + echo '* '"$${date} $${author} $${version}-1"; \ + echo " - Generated from git commit $${hash}."; \ + ) >> $$(ls build/${PKGNAME}-${VERSION}/*.spec) + @find build/${PKGNAME}-${VERSION}/ -exec \ + touch -t $$(date -d @$$(git show -s --format="format:%at") \ + +"%Y%m%d%H%M.%S") {} \; + @mkdir -p dist + @cd build; tar -c --owner=0 --group=0 --numeric-owner \ + --format=gnu -b20 --quoting-style=escape \ + -f ../dist/${PKGNAME}-${VERSION}.tar \ + $$(find ${PKGNAME}-${VERSION} -type f | sort) + @gzip -6 -n dist/${PKGNAME}-${VERSION}.tar + @echo "Generated release tarball:" + @echo " $$(ls dist/${PKGNAME}-${VERSION}.tar.gz)" + @touch build/release-stamp + +deb: release build/deb-stamp +build/deb-stamp: + @echo "Building debian packages..." + @cd build/${PKGNAME}-${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/${PKGNAME}-${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 |