-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathMakefile
230 lines (183 loc) · 6.96 KB
/
Makefile
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
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
#
# vi:set filetype=make noet ai tw=0:
#
SHELL = /bin/sh
rpmbuild = ~/rpmbuild
#
# These settings are what I would expect for most modern Linux distros,
# and are what work for me unmodified on Ubuntu. -BEF-
#
package = hpc-goodies
initdir = /etc/init.d
prefix = /usr
bindir = ${prefix}/bin
sbindir = ${prefix}/sbin
libdir = ${prefix}/lib
pkglibdir = ${libdir}/${package}
datadir = ${prefix}/share
mandir = ${datadir}/man
docdir = ${datadir}/doc/${package}
d = $(DESTDIR)
VERSION = $(shell cat VERSION)
RELEASE = $(shell cat RELEASE)
TOPDIR := $(CURDIR)
# bin-cpu
# bin-gpfs
# bin-ib
# bin-misc
# bin-uefi
# bin-xcat
# bin-libs
BINCOMPILED = c1eutil/c1eutil set_dma_latency/set_dma_latency
BINSCRIPTS = $(shell find $(TOPDIR)/bin/*)
SBINFILES = $(BINSCRIPTS) $(BINCOMPILED) etc/init.d/set-cpu-state
PKGLIBFILES = $(shell find $(TOPDIR)/usr/lib/*)
INIT_SCRIPTS = $(shell find $(TOPDIR)/etc/init.d/*)
HALF_BAKED_FILES = $(shell find $(TOPDIR)/half-baked/*)
DOC_FILES = CREDITS LICENSE README TODO
RPM_PKG_FILES = hpc-goodies.spec
DEB_PKG_FILES = $(shell find debian/*)
COMMON_PKG_FILES = Makefile README.bin-files-by-package VERSION RELEASE
ALL_FILES = $(BINSCRIPTS) $(PKGLIBFILES) $(INIT_SCRIPTS) $(DOC_FILES) $(HALF_BAKED_FILES) $(COMMON_PKG_FILES) $(RPM_PKG_FILES) $(DEB_PKG_FILES)
.PHONY: all
all: $(SBINFILES) $(INIT_SCRIPTS)
.PHONY: set_dma_latency
set_dma_latency: set_dma_latency/set_dma_latency
set_dma_latency/set_dma_latency:
.PHONY: set_dma_latency_clean
set_dma_latency_clean:
-rm -f set_dma_latency/set_dma_latency
.PHONY: c1eutil
c1eutil: c1eutil/c1eutil
c1eutil/c1eutil:
.PHONY: c1eutil_clean
c1eutil_clean:
-rm -f c1eutil/c1eutil
.PHONY: install
install: all
#
# sbinaries
#
test -d ${d}/${sbindir} || install -d -m 755 ${d}/${sbindir}
@ $(foreach file, $(SBINFILES), \
echo install -m 755 ${file} ${d}/${sbindir}/;\
install -m 755 ${file} ${d}/${sbindir}/; )
#
# init scripts
#
test -d ${d}/${initdir} || install -d -m 755 ${d}/${initdir}
@ $(foreach file, $(INIT_SCRIPTS), \
echo install -m 755 ${file} ${d}/${initdir}/;\
install -m 755 ${file} ${d}/${initdir}/; )
#
# Libs
#
test -d ${d}/${pkglibdir} || install -d -m 755 ${d}/${pkglibdir}
@ $(foreach file, $(PKGLIBFILES), \
echo install -m 644 ${file} ${d}/${pkglibdir}/;\
install -m 644 ${file} ${d}/${pkglibdir}/; )
#
# Docs
#
test -d ${d}/${docdir} || install -d -m 755 ${d}/${docdir}
@ $(foreach file, $(DOCFILES), \
echo install -m 644 ${file} ${d}/${docdir}/;\
install -m 644 ${file} ${d}/${docdir}/; )
#
# half baked
#
test -d ${d}/${docdir}/half-baked || install -d -m 755 ${d}/${docdir}/half-baked
@ $(foreach file, $(HALF_BAKED_FILES), \
echo install -m 644 ${file} ${d}/${docdir}/half-baked/;\
install -m 644 ${file} ${d}/${docdir}/half-baked/; )
.PHONY: release
release:
@echo "Please try 'make rpms' or 'make upload'"
.PHONY: upload_rpms
upload_rpms: rpms
@echo
@echo "I'm about to upload the following files to bintray:"
@echo "-----------------------------------------------------------------------"
@/bin/ls -1 $(TOPDIR)/tmp/${package}[-_]*$(VERSION)-$(RELEASE)*.*
@echo
@echo "Hit <Enter> to continue..."
@read i
bintray-upload-rpms.sh el7 $(TOPDIR)/tmp/${package}*[-_]$(VERSION)-$(RELEASE)*.rpm
@echo
@echo "Now visit https://bintray.com/beta/#/systemimager/rpms?tab=packages to publish"
@echo
.PHONY: rpm
rpm: rpms
.PHONY: rpms
rpms: tarball
@echo Bake them cookies, grandma!
#rpmbuild -ta --sign $(TOPDIR)/tmp/${package}-$(VERSION)-$(RELEASE).tar.xz
rpmbuild -ta $(TOPDIR)/tmp/${package}-$(VERSION)-$(RELEASE).tar.xz
/bin/cp -i ${rpmbuild}/RPMS/*/${package}-*$(VERSION)-$(RELEASE)*.rpm $(TOPDIR)/tmp/
/bin/cp -i ${rpmbuild}/SRPMS/${package}-*$(VERSION)-$(RELEASE)*.rpm $(TOPDIR)/tmp/
/bin/ls -1 $(TOPDIR)/tmp/${package}[-_]*$(VERSION)*.*
@echo
@echo "Try 'make upload_rpms' to upload for distribution."
@echo
.PHONY: deb
deb: debs
.PHONY: debs
debs: tarball
ln $(TOPDIR)/tmp/${package}-$(VERSION)-$(RELEASE).tar.xz $(TOPDIR)/tmp/${package}_$(VERSION)-$(RELEASE).orig.tar.xz
cd $(TOPDIR)/tmp/${package}-$(VERSION) && debuild -us -uc
/bin/ls -1 $(TOPDIR)/tmp/${package}[-_]*$(VERSION)*.*
@echo
@echo "Try 'make upload_debs' to upload for distribution."
@echo
.PHONY: tarball
tarball: $(TOPDIR)/tmp/${package}-$(VERSION)-$(RELEASE).tar.xz.sign
$(TOPDIR)/tmp/${package}-$(VERSION)-$(RELEASE).tar.xz.sign: $(TOPDIR)/tmp/${package}-$(VERSION)-$(RELEASE).tar.xz
cd $(TOPDIR)/tmp && gpg --detach-sign -a --output ${package}-$(VERSION)-$(RELEASE).tar.xz.sign ${package}-$(VERSION)-$(RELEASE).tar.xz
cd $(TOPDIR)/tmp && gpg --verify ${package}-$(VERSION)-$(RELEASE).tar.xz.sign
$(TOPDIR)/tmp/${package}-$(VERSION)-$(RELEASE).tar.xz: $(ALL_FILES)
make distclean
@ echo ; echo "git stat . | egrep '^\s+modified:\s+'"
@git stat . | egrep '^\s+modified:\s+' \
&& (echo "WARN: There are uncommitted changes to this repo."; echo " Do you want cancel this build and commit them?"; read i ) \
|| true
@(echo ; echo "WARN: Did you update the version in VERSION (currently set to $(VERSION))?"; read i )
@git tag | grep -qw v$(VERSION) \
|| (echo "WARN: Do you want to cancel to tag this repo as v$(VERSION)?"; read i )
mkdir -p $(TOPDIR)/tmp/
git clone . $(TOPDIR)/tmp/${package}-$(VERSION)/
#
# Use the latest Makefile and specfile always
@echo "WARN: Including the following files from this directory in the tarball, whether"
@echo " they are committed to the repo or not."
@echo
@ $(foreach file, $(COMMON_PKG_FILES) $(RPM_PKG_FILES) $(DEB_PKG_FILES) , \
echo " /bin/cp -a ${file} $(TOPDIR)/tmp/${package}-$(VERSION)/${file}";\
/bin/cp -a ${file} $(TOPDIR)/tmp/${package}-$(VERSION)/${file}; )
@echo
git log > $(TOPDIR)/tmp/${package}-$(VERSION)/CHANGE.LOG
rm -fr $(TOPDIR)/tmp/${package}-$(VERSION)/.git
rm -fr $(TOPDIR)/tmp/${package}-$(VERSION)/.gitignore
perl -pi -e "s/^Version:.*/Version: $(VERSION)/" $(TOPDIR)/tmp/${package}-$(VERSION)/${package}.spec
perl -pi -e "s/^Release:\s+\d+/Release: $(RELEASE)/" $(TOPDIR)/tmp/${package}-$(VERSION)/${package}.spec
find $(TOPDIR)/tmp/${package}-$(VERSION) -type f -exec chmod ug+r {} \;
find $(TOPDIR)/tmp/${package}-$(VERSION) -type d -exec chmod ug+rx {} \;
cd $(TOPDIR)/tmp/ && tar -ch ${package}-$(VERSION) | xz > ${package}-$(VERSION)-$(RELEASE).tar.xz
ls -l $(TOPDIR)/tmp/
.PHONY: clean
clean: c1eutil_clean
-rm -fr $(TOPDIR)/tmp/ $(TOPDIR)/${package}-$(VERSION)
-rm -fr $(TOPDIR)/usr/share/man/
-rm -f $(TOPDIR)/${package}-$(VERSION)-$(RELEASE).tar.* $(TOPDIR)/${package}-*.rpm
-rm -f set_dma_latency/set_dma_latency
.PHONY: distclean
distclean: clean
-rm -f $(TOPDIR)/configure-stamp
-rm -f $(TOPDIR)/build-stamp
-rm -f $(TOPDIR)/debian/files
-rm -fr $(TOPDIR)/debian/${package}/
.PHONY: help
help:
@echo All Available Targets Include:
@echo ---------------------------------------------------------------------
@cat Makefile | egrep '^[a-zA-Z0-9_]+:' | sed 's/:.*//' | sort -u
@echo