summaryrefslogtreecommitdiffstats
path: root/redhat/Makefile
blob: 8e23f1e56cdcf7baaf374565f8cd0bd47c802dce (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
# -- 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 $

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})


.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

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
	@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
	cp ${PACKAGE}.spec ./build/${CURRENT_PACKAGE} \
	  && echo 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
	@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:
	@:

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 || :