Add RPM packaging Makefile previously missed due to .gitignore
This commit is contained in:
parent
3951d16ea0
commit
fba594d0cb
152
packaging/rpm/Makefile
Normal file
152
packaging/rpm/Makefile
Normal file
@ -0,0 +1,152 @@
|
||||
# -- generic Makefile for building RPM-based packages out of source
|
||||
# code control systems (git, cvs, svn)
|
||||
|
||||
SCM_TYPE := git
|
||||
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)
|
||||
BASE_VER := ${VERSION}-${RELEASE}
|
||||
CURRENT_PACKAGE := $(PACKAGE)-$(BASE_VER)
|
||||
TARBALL := $(CURRENT_PACKAGE).tar
|
||||
|
||||
DIRNAME := $(shell echo $${PWD})
|
||||
DIRBASE := $(shell basename $${PWD})
|
||||
|
||||
|
||||
.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
|
||||
.PHONY: update
|
||||
|
||||
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
|
||||
rpmdist: buildrpmdist
|
||||
|
||||
buildrpmdist: buildtargz
|
||||
@rpmbuild \
|
||||
--define "_package ${PACKAGE}" \
|
||||
--define "_version ${VERSION}" \
|
||||
--define "_release ${RELEASE}" \
|
||||
-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
|
||||
|
||||
buildrpm: buildtargz
|
||||
@echo ${PACKAGE} ${VERSION} ${RELEASE}
|
||||
@rpmbuild \
|
||||
--define "_rpmdir ./build/" \
|
||||
--define "_sourcedir ./build/" \
|
||||
--define "_srcrpmdir ./build/" \
|
||||
--define "_package ${PACKAGE}" \
|
||||
--define "_version ${VERSION}" \
|
||||
--define "_release ${RELEASE}" \
|
||||
-ta ./build/$(TARBALL).gz
|
||||
|
||||
buildtarball: prepbuildtarball
|
||||
@tar \
|
||||
--create \
|
||||
--directory ./build/ \
|
||||
--file ./build/$(TARBALL) \
|
||||
${CURRENT_PACKAGE}
|
||||
|
||||
buildtargz: buildtarball
|
||||
@gzip -c < ./build/$(TARBALL) > ./build/$(TARBALL).gz
|
||||
|
||||
prepbuildtarball: $(SCM_TYPE)-export
|
||||
${MAKE} update \
|
||||
&& cp ${PACKAGE}.spec ./build/${CURRENT_PACKAGE} \
|
||||
&& cp files/* ./build/
|
||||
|
||||
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
|
||||
(cd $(SCM_PATH) ; git-archive --format=tar --prefix=$(CURRENT_PACKAGE)/ HEAD) \
|
||||
| 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:
|
||||
@:
|
||||
|
||||
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 || :
|
||||
|
||||
# -- recursive Makefile calls (during build phase)
|
||||
#
|
||||
update: $(PACKAGE).spec VERSION RELEASE
|
||||
|
||||
$(PACKAGE).spec: VERSION RELEASE $(PACKAGE).spec.in
|
||||
@sed \
|
||||
-e "s|@PACKAGE@|$(PACKAGE)|" \
|
||||
-e "s|@VERSION@|$(VERSION)|" \
|
||||
-e "s|@RELEASE@|$(RELEASE)|" \
|
||||
< $(PACKAGE).spec.in > $@
|
||||
|
||||
# -- end of Makefile
|
Loading…
Reference in New Issue
Block a user