3
SUBDIRS=daemons install ipapython ipa-client
4
CLIENTDIRS=ipapython ipa-client
8
RPMBUILD ?= $(PWD)/rpmbuild
11
SUPPORTED_PLATFORM ?= redhat
13
IPA_NUM_VERSION ?= $(shell printf %d%02d%02d $(IPA_VERSION_MAJOR) $(IPA_VERSION_MINOR) $(IPA_VERSION_RELEASE))
15
# After updating the version in VERSION you should run the version-update
18
ifeq ($(IPA_VERSION_IS_GIT_SNAPSHOT),"yes")
19
GIT_VERSION=$(shell git show --pretty=format:"%h" --stat HEAD 2>/dev/null|head -1)
20
ifneq ($(GIT_VERSION),)
21
IPA_VERSION=$(IPA_VERSION_MAJOR).$(IPA_VERSION_MINOR).$(IPA_VERSION_RELEASE)GIT$(GIT_VERSION)
22
endif # in a git tree and git returned a version
26
ifdef IPA_VERSION_PRE_RELEASE
27
IPA_VERSION=$(IPA_VERSION_MAJOR).$(IPA_VERSION_MINOR).$(IPA_VERSION_RELEASE).pre$(IPA_VERSION_PRE_RELEASE)
29
ifdef IPA_VERSION_BETA_RELEASE
30
IPA_VERSION=$(IPA_VERSION_MAJOR).$(IPA_VERSION_MINOR).$(IPA_VERSION_RELEASE).beta$(IPA_VERSION_BETA_RELEASE)
32
ifdef IPA_VERSION_RC_RELEASE
33
IPA_VERSION=$(IPA_VERSION_MAJOR).$(IPA_VERSION_MINOR).$(IPA_VERSION_RELEASE).rc$(IPA_VERSION_RC_RELEASE)
35
IPA_VERSION=$(IPA_VERSION_MAJOR).$(IPA_VERSION_MINOR).$(IPA_VERSION_RELEASE)
41
TARBALL_PREFIX=freeipa-$(IPA_VERSION)
42
TARBALL=$(TARBALL_PREFIX).tar.gz
44
IPA_RPM_RELEASE=$(shell cat RELEASE)
49
ifneq ($(DEVELOPER_MODE),0)
50
LINT_OPTIONS=--no-fail
53
PYTHON ?= $(shell rpm -E %__python)
55
# Uncomment to increase Java stack size for Web UI build in case it fails
56
# because of stack overflow exception. Default should be OK for most platforms.
57
#JAVA_STACK_SIZE ?= 8m
58
#export JAVA_STACK_SIZE
60
all: bootstrap-autogen server tests
61
@for subdir in $(SUBDIRS); do \
62
(cd $$subdir && $(MAKE) $@) || exit 1; \
65
client: client-autogen
66
@for subdir in $(CLIENTDIRS); do \
67
(cd $$subdir && $(MAKE) all) || exit 1; \
70
bootstrap-autogen: version-update client-autogen
71
@echo "Building IPA $(IPA_VERSION)"
72
cd daemons; if [ ! -e Makefile ]; then ../autogen.sh --prefix=/usr --sysconfdir=/etc --localstatedir=/var --libdir=$(LIBDIR) --with-openldap; fi
73
cd install; if [ ! -e Makefile ]; then ../autogen.sh --prefix=/usr --sysconfdir=/etc --localstatedir=/var --libdir=$(LIBDIR); fi
75
client-autogen: version-update
76
cd ipa-client; if [ ! -e Makefile ]; then ../autogen.sh --prefix=/usr --sysconfdir=/etc --localstatedir=/var --libdir=$(LIBDIR); fi
77
cd install; if [ ! -e Makefile ]; then ../autogen.sh --prefix=/usr --sysconfdir=/etc --localstatedir=/var --libdir=$(LIBDIR); fi
79
tests-man-autogen: version-update
80
cd ipatests/man; if [ ! -e Makefile ]; then ../../autogen.sh --prefix=/usr --sysconfdir=/etc --localstatedir=/var --libdir=$(LIBDIR); fi
82
install: all server-install tests-install
83
@for subdir in $(SUBDIRS); do \
84
(cd $$subdir && $(MAKE) $@) || exit 1; \
87
client-install: client client-dirs
88
@for subdir in $(CLIENTDIRS); do \
89
(cd $$subdir && $(MAKE) install) || exit 1; \
91
cd install/po && $(MAKE) install || exit 1;
92
if [ "$(DESTDIR)" = "" ]; then \
93
$(PYTHON) setup-client.py install; \
95
$(PYTHON) setup-client.py install --root $(DESTDIR); \
99
@if [ "$(DESTDIR)" != "" ] ; then \
100
mkdir -p $(DESTDIR)/etc/ipa ; \
101
mkdir -p $(DESTDIR)/var/lib/ipa-client/sysrestore ; \
103
echo "DESTDIR was not set, please create /etc/ipa and /var/lib/ipa-client/sysrestore" ; \
104
echo "Without those directories ipa-client-install will fail" ; \
107
lint: bootstrap-autogen
108
./make-lint $(LINT_OPTIONS)
109
$(MAKE) -C install/po validate-src-strings
117
if [ ! -e RELEASE ]; then echo 0 > RELEASE; fi
119
version-update: release-update
120
sed -e s/__VERSION__/$(IPA_VERSION)/ -e s/__RELEASE__/$(IPA_RPM_RELEASE)/ \
121
freeipa.spec.in > freeipa.spec
122
sed -e s/__VERSION__/$(IPA_VERSION)/ version.m4.in \
125
sed -e s/__VERSION__/$(IPA_VERSION)/ ipapython/setup.py.in \
127
sed -e s/__VERSION__/$(IPA_VERSION)/ ipapython/version.py.in \
128
> ipapython/version.py
129
sed -e s/__VERSION__/$(IPA_VERSION)/ ipatests/setup.py.in \
131
perl -pi -e "s:__NUM_VERSION__:$(IPA_NUM_VERSION):" ipapython/version.py
132
perl -pi -e "s:__API_VERSION__:$(IPA_API_VERSION_MAJOR).$(IPA_API_VERSION_MINOR):" ipapython/version.py
133
touch -r ipapython/version.py.in ipapython/version.py
134
sed -e s/__VERSION__/$(IPA_VERSION)/ daemons/ipa-version.h.in \
135
> daemons/ipa-version.h
136
perl -pi -e "s:__NUM_VERSION__:$(IPA_NUM_VERSION):" daemons/ipa-version.h
137
perl -pi -e "s:__DATA_VERSION__:$(IPA_DATA_VERSION):" daemons/ipa-version.h
139
sed -e s/__VERSION__/$(IPA_VERSION)/ -e s/__RELEASE__/$(IPA_RPM_RELEASE)/ \
140
ipa-client/ipa-client.spec.in > ipa-client/ipa-client.spec
141
sed -e s/__VERSION__/$(IPA_VERSION)/ ipa-client/version.m4.in \
142
> ipa-client/version.m4
144
if [ "$(SUPPORTED_PLATFORM)" != "" ]; then \
145
sed -e s/SUPPORTED_PLATFORM/$(SUPPORTED_PLATFORM)/ ipapython/services.py.in \
146
> ipapython/services.py; \
147
touch -r ipapython/services.py.in ipapython/services.py; \
150
if [ "$(SKIP_API_VERSION_CHECK)" != "yes" ]; then \
151
./makeapi --validate; \
154
server: version-update
155
$(PYTHON) setup.py build
157
server-install: server
158
if [ "$(DESTDIR)" = "" ]; then \
159
$(PYTHON) setup.py install; \
161
$(PYTHON) setup.py install --root $(DESTDIR) --install-layout=deb; \
164
tests: version-update tests-man-autogen
165
cd ipatests; $(PYTHON) setup.py build
166
cd ipatests/man && $(MAKE) all
169
if [ "$(DESTDIR)" = "" ]; then \
170
cd ipatests; $(PYTHON) setup.py install; \
172
cd ipatests; $(PYTHON) setup.py install --root $(DESTDIR); \
174
cd ipatests/man && $(MAKE) install
178
git archive --format=tar --prefix=ipa/ $(TARGET) | (cd dist && tar xf -)
181
-mkdir -p dist/$(TARBALL_PREFIX)
182
rsync -a --exclude=dist --exclude=.git --exclude=/build --exclude=rpmbuild . dist/$(TARBALL_PREFIX)
187
tarballs: local-archive
188
-mkdir -p dist/sources
189
# tar up clean sources
190
cd dist/$(TARBALL_PREFIX)/ipa-client; ../autogen.sh --prefix=/usr --sysconfdir=/etc --localstatedir=/var --libdir=$(LIBDIR); make distclean
191
cd dist/$(TARBALL_PREFIX)/daemons; ../autogen.sh --prefix=/usr --sysconfdir=/etc --localstatedir=/var --libdir=$(LIBDIR); make distclean
192
cd dist/$(TARBALL_PREFIX)/install; ../autogen.sh --prefix=/usr --sysconfdir=/etc --localstatedir=/var --libdir=$(LIBDIR); make distclean
193
cd dist; tar cfz sources/$(TARBALL) $(TARBALL_PREFIX)
194
rm -rf dist/$(TARBALL_PREFIX)
198
mkdir -p $(RPMBUILD)/BUILD
199
mkdir -p $(RPMBUILD)/RPMS
200
mkdir -p $(RPMBUILD)/SOURCES
201
mkdir -p $(RPMBUILD)/SPECS
202
mkdir -p $(RPMBUILD)/SRPMS
208
rpms: rpmroot rpmdistdir version-update lint tarballs
209
cp dist/sources/$(TARBALL) $(RPMBUILD)/SOURCES/.
210
rpmbuild --define "_topdir $(RPMBUILD)" -ba freeipa.spec
211
cp $(RPMBUILD)/RPMS/*/$(PRJ_PREFIX)-*-$(IPA_VERSION)-*.rpm dist/rpms/
212
cp $(RPMBUILD)/SRPMS/$(PRJ_PREFIX)-$(IPA_VERSION)-*.src.rpm dist/srpms/
215
client-rpms: rpmroot rpmdistdir version-update lint tarballs
216
cp dist/sources/$(TARBALL) $(RPMBUILD)/SOURCES/.
217
rpmbuild --define "_topdir $(RPMBUILD)" --define "ONLY_CLIENT 1" -ba freeipa.spec
218
cp $(RPMBUILD)/RPMS/*/$(PRJ_PREFIX)-*-$(IPA_VERSION)-*.rpm dist/rpms/
219
cp $(RPMBUILD)/SRPMS/$(PRJ_PREFIX)-$(IPA_VERSION)-*.src.rpm dist/srpms/
222
srpms: rpmroot rpmdistdir version-update lint tarballs
223
cp dist/sources/$(TARBALL) $(RPMBUILD)/SOURCES/.
224
rpmbuild --define "_topdir $(RPMBUILD)" -bs freeipa.spec
225
cp $(RPMBUILD)/SRPMS/$(PRJ_PREFIX)-$(IPA_VERSION)-*.src.rpm dist/srpms/
232
dist: version-update archive tarballs archive-cleanup rpms repodata
234
local-dist: bootstrap-autogen clean local-archive tarballs archive-cleanup rpms
237
clean: version-update
238
@for subdir in $(SUBDIRS); do \
239
(cd $$subdir && $(MAKE) $@) || exit 1; \
243
distclean: version-update
244
touch daemons/NEWS daemons/README daemons/AUTHORS daemons/ChangeLog
245
touch install/NEWS install/README install/AUTHORS install/ChangeLog
246
@for subdir in $(SUBDIRS); do \
247
(cd $$subdir && $(MAKE) $@) || exit 1; \
249
rm -fr $(RPMBUILD) dist build
250
rm -f daemons/NEWS daemons/README daemons/AUTHORS daemons/ChangeLog
251
rm -f install/NEWS install/README install/AUTHORS install/ChangeLog
253
maintainer-clean: clean
254
rm -fr $(RPMBUILD) dist build
255
cd daemons && $(MAKE) maintainer-clean
256
cd install && $(MAKE) maintainer-clean
257
cd ipa-client && $(MAKE) maintainer-clean
258
cd ipapython && $(MAKE) maintainer-clean