From 5d7172c6424a47e1f6c460390d530c4e0305c794 Mon Sep 17 00:00:00 2001 From: Narayan Desai Date: Fri, 7 Nov 2008 17:09:51 +0000 Subject: Stage 1 of new spec commits git-svn-id: https://svn.mcs.anl.gov/repos/bcfg/trunk/bcfg2@4966 ce84e21b-d406-0410-9b95-82705330c041 --- redhat/Makefile | 156 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 156 insertions(+) create mode 100644 redhat/Makefile (limited to 'redhat/Makefile') diff --git a/redhat/Makefile b/redhat/Makefile new file mode 100644 index 000000000..90bbe91c2 --- /dev/null +++ b/redhat/Makefile @@ -0,0 +1,156 @@ +# -- generic Makefile for building RPM-based packages out of source +# code control systems (git, cvs, svn) +# +# $Id: Makefile 46 2007-10-24 09:14:12Z robin $ + +.SUFFIXES: +.PHONY: clean mrclean distclean prepclean all default +.PHONY: rpm rpmdist buildrpm buildrpmdist +.PHONY: buildtarball buildtargz +.PHONY: builddir distdir prepbuildtarball +.PHONY: cvs-export git-export svn-export test-export +.PHONY: cvs-clean git-clean svn-clean test-clean + +SCM_TYPE := svn +SCM_PATH := ../ +#CVSROOT := $(shell cat 2>/dev/null src/CVS/Root) +SVN_PATH := $(shell svn info ${SCM_PATH} 2>/dev/null | awk '/^URL:/{print $$2}') +SVN_REV := $(shell svn info ${SVN_PATH} 2>/dev/null | awk '/^Last Changed Rev:/{print $$4}') + +PACKAGE := $(shell cat PACKAGE) +VERSION := $(shell cat VERSION) +RELEASE := $(shell cat RELEASE)r${SVN_REV} +BASE_VER := ${VERSION}-${RELEASE} +CURRENT_PACKAGE := $(PACKAGE)-$(BASE_VER) +TARBALL := $(CURRENT_PACKAGE).tar + +DIRNAME := $(shell echo $${PWD}) +DIRBASE := $(shell basename $${PWD}) + + +default: rpmdist + +# -- the "rpmdist" target will build out of the SCM, but will +# use the user's default build settings (which in many cases +# is exposed as an RPM repository) +# +rpmdist: buildrpmdist distclean + +buildrpmdist: specfile buildtargz + @rpmbuild \ + -ta ./build/$(TARBALL).gz + +# -- the "rpm" target will build out of the SCM, but will leave +# the resulting package in the relative ./build/ directory +# +rpm: buildrpm $(SCM_TYPE)-clean + +# add "debug" to a target to see the values of all these vars +debug: + echo SCM_TYPE: ${SCM_TYPE} && \ + echo SCM_PATH: ${SCM_PATH} && \ + echo SVN_PATH: ${SVN_PATH} && \ + echo SVN_REV : ${SVN_REV} && \ + echo PACKAGE : ${PACKAGE} && \ + echo VERSION : ${VERSION} && \ + echo RELEASE : ${RELEASE} && \ + echo BASE_VER: ${BASE_VER} && \ + echo CURRENT_PACKAGE: ${CURRENT_PACKAGE} && \ + echo TARBALL: ${TARBALL} && \ + echo DIRNAME: ${DIRNAME} && \ + echo DIRBASE: ${DIRBASE} + + +buildrpm: specfile buildtargz + @rpmbuild \ + --define "_rpmdir ./build/" \ + --define "_sourcedir ./build/" \ + --define "_srcrpmdir ./build/" \ + -ta ./build/$(TARBALL).gz + +buildtarball: prepbuildtarball + @tar \ + --create \ + --directory ./build/ \ + --file ./build/$(TARBALL) \ + ${CURRENT_PACKAGE} + +buildtargz: buildtarball + @gzip -c < ./build/$(TARBALL) > ./build/$(TARBALL).gz + +# This target copies files that are not in svn into the build tree +prepbuildtarball: $(SCM_TYPE)-export + @cp ${PACKAGE}.spec ./build/${CURRENT_PACKAGE}/redhat && \ + cp -R scripts ./build/${CURRENT_PACKAGE}/redhat + +specfile: $(PACKAGE).spec + +# create the spec file from the .in file and put in the build tree +$(PACKAGE).spec: PACKAGE VERSION RELEASE $(PACKAGE).spec.in + @sed -e "s|@PACKAGE@|$(PACKAGE)|" \ + -e "s|@VERSION@|$(VERSION)|" \ + -e "s|@RELEASE@|$(RELEASE)|" \ + $(PACKAGE).spec.in > $@ +test-clean: + @cd .. \ + && rm "$(CURRENT_PACKAGE)" + +test-export: builddir + @cd .. \ + && ln -snvf $(DIRBASE) $(CURRENT_PACKAGE) \ + && tar \ + --create \ + --dereference \ + --to-stdout \ + --exclude "*.git*" \ + --exclude "*.svn*" \ + --exclude "*/CVS/*" \ + --exclude "$(CURRENT_PACKAGE)/build/*" \ + $(CURRENT_PACKAGE) \ + | tar \ + --extract \ + --directory $(CURRENT_PACKAGE)/build/ \ + --file - + +git-export: builddir prepclean + @git-tar-tree HEAD $(PACKAGE)-$(VERSION) \ + | tar \ + --extract \ + --directory ./build/ \ + --file - + +git-clean: + @: + +cvs-export: builddir prepclean + @cd ./build/ \ + && echo CURRENT_PACKAGE: ${CURRENT_PACKAGE} \ + && echo CVSROOT: ${CVSROOT} \ + && CVSROOT=${CVSROOT} cvs export -r HEAD -d$(CURRENT_PACKAGE) ${PACKAGE} + +cvs-clean: + @: + +svn-export: builddir prepclean + @cd ./build/ \ + && svn export $(SVN_PATH) $(CURRENT_PACKAGE) + +svn-clean: + @rm -f bcfg2.spec 2>/dev/null || : + +builddir: + @mkdir -p ./build + +distdir: + @mkdir -p ./dist + +prepclean: + @rm -rf ./build/$(CURRENT_PACKAGE)* + +clean: + @rm -rf ./build/* ./dist/* 2>/dev/null || : + +mrclean: clean + +distclean: clean $(SCM_TYPE)-clean + @rmdir ./build/ ./dist/ 2>/dev/null || : -- cgit v1.2.3-1-g7c22