Files
freeipa/Makefile
T

284 lines
10 KiB
Makefile
Raw Normal View History

include VERSION
SUBDIRS=asn1 daemons install ipapython ipa-client
CLIENTDIRS=ipapython ipa-client asn1
2011-01-17 10:26:19 +01:00
PRJ_PREFIX=freeipa
RPMBUILD ?= $(PWD)/rpmbuild
TARGET ?= master
SUPPORTED_PLATFORM ?= fedora
2013-05-13 10:39:55 +02:00
IPA_NUM_VERSION ?= $(shell printf %d%02d%02d $(IPA_VERSION_MAJOR) $(IPA_VERSION_MINOR) $(IPA_VERSION_RELEASE))
2013-04-19 14:02:40 +02:00
# After updating the version in VERSION you should run the version-update
# target.
ifeq ($(IPA_VERSION_IS_GIT_SNAPSHOT),"yes")
DATESTR:=$(shell date -u +'%Y%m%d%H%M')
GIT_VERSION:=$(shell git show --pretty=format:"%h" --stat HEAD 2>/dev/null|head -1)
ifneq ($(GIT_VERSION),)
IPA_VERSION=$(IPA_VERSION_MAJOR).$(IPA_VERSION_MINOR).$(IPA_VERSION_RELEASE).$(DATESTR)GIT$(GIT_VERSION)
endif # in a git tree and git returned a version
endif # git
ifndef IPA_VERSION
2014-09-30 11:48:20 +02:00
ifdef IPA_VERSION_ALPHA_RELEASE
IPA_VERSION=$(IPA_VERSION_MAJOR).$(IPA_VERSION_MINOR).$(IPA_VERSION_RELEASE).alpha$(IPA_VERSION_ALPHA_RELEASE)
else
2012-11-05 03:58:45 -05:00
ifdef IPA_VERSION_BETA_RELEASE
IPA_VERSION=$(IPA_VERSION_MAJOR).$(IPA_VERSION_MINOR).$(IPA_VERSION_RELEASE).beta$(IPA_VERSION_BETA_RELEASE)
else
ifdef IPA_VERSION_RC_RELEASE
IPA_VERSION=$(IPA_VERSION_MAJOR).$(IPA_VERSION_MINOR).$(IPA_VERSION_RELEASE).rc$(IPA_VERSION_RC_RELEASE)
else
IPA_VERSION=$(IPA_VERSION_MAJOR).$(IPA_VERSION_MINOR).$(IPA_VERSION_RELEASE)
endif # rc
2012-11-05 03:58:45 -05:00
endif # beta
2014-09-30 11:48:20 +02:00
endif # alpha
endif # ipa_version
2014-03-13 14:39:03 +01:00
IPA_VENDOR_VERSION=$(IPA_VERSION)$(IPA_VENDOR_VERSION_SUFFIX)
2009-02-02 13:50:53 -05:00
TARBALL_PREFIX=freeipa-$(IPA_VERSION)
TARBALL=$(TARBALL_PREFIX).tar.gz
IPA_RPM_RELEASE=$(shell cat RELEASE)
LIBDIR ?= /usr/lib
2011-04-28 18:14:43 +02:00
DEVELOPER_MODE ?= 0
ifneq ($(DEVELOPER_MODE),0)
LINT_OPTIONS=--no-fail
endif
2013-11-27 14:53:57 +01:00
PYTHON ?= $(shell rpm -E %__python || echo /usr/bin/python2)
2012-05-04 17:18:46 +02:00
2013-12-16 16:10:05 -05:00
CFLAGS := -g -O2 -Wall -Wextra -Wformat-security -Wno-unused-parameter -Wno-sign-compare -Wno-missing-field-initializers $(CFLAGS)
2013-12-04 18:42:36 +01:00
export CFLAGS
2013-07-31 15:12:19 +02:00
# Uncomment to increase Java stack size for Web UI build in case it fails
# because of stack overflow exception. Default should be OK for most platforms.
#JAVA_STACK_SIZE ?= 8m
#export JAVA_STACK_SIZE
2013-05-21 13:40:27 +02:00
all: bootstrap-autogen server tests
@for subdir in $(SUBDIRS); do \
(cd $$subdir && $(MAKE) $@) || exit 1; \
done
2009-10-12 16:00:00 -04:00
client: client-autogen
@for subdir in $(CLIENTDIRS); do \
(cd $$subdir && $(MAKE) all) || exit 1; \
done
2014-09-17 11:49:51 +02:00
cd ipaplatform && $(PYTHON) setup.py build
2009-10-12 16:00:00 -04:00
bootstrap-autogen: version-update client-autogen
@echo "Building IPA $(IPA_VERSION)"
cd asn1; if [ ! -e Makefile ]; then ../autogen.sh --prefix=/usr --sysconfdir=/etc --localstatedir=/var --libdir=$(LIBDIR); fi
cd daemons; if [ ! -e Makefile ]; then ../autogen.sh --prefix=/usr --sysconfdir=/etc --localstatedir=/var --libdir=$(LIBDIR) --with-openldap; fi
cd install; if [ ! -e Makefile ]; then ../autogen.sh --prefix=/usr --sysconfdir=/etc --localstatedir=/var --libdir=$(LIBDIR); fi
2009-10-12 16:00:00 -04:00
client-autogen: version-update
cd asn1; if [ ! -e Makefile ]; then ../autogen.sh --prefix=/usr --sysconfdir=/etc --localstatedir=/var --libdir=$(LIBDIR); fi
cd ipa-client; if [ ! -e Makefile ]; then ../autogen.sh --prefix=/usr --sysconfdir=/etc --localstatedir=/var --libdir=$(LIBDIR); fi
2010-03-15 11:40:58 -04:00
cd install; if [ ! -e Makefile ]; then ../autogen.sh --prefix=/usr --sysconfdir=/etc --localstatedir=/var --libdir=$(LIBDIR); fi
2013-08-13 18:32:36 +02:00
tests-man-autogen: version-update
cd ipatests/man; if [ ! -e Makefile ]; then ../../autogen.sh --prefix=/usr --sysconfdir=/etc --localstatedir=/var --libdir=$(LIBDIR); fi
2013-05-21 13:40:27 +02:00
install: all server-install tests-install
@for subdir in $(SUBDIRS); do \
(cd $$subdir && $(MAKE) $@) || exit 1; \
done
2011-11-17 10:45:15 +02:00
client-install: client client-dirs
2009-10-12 16:00:00 -04:00
@for subdir in $(CLIENTDIRS); do \
(cd $$subdir && $(MAKE) install) || exit 1; \
done
2010-03-15 11:40:58 -04:00
cd install/po && $(MAKE) install || exit 1;
2009-10-12 16:00:00 -04:00
if [ "$(DESTDIR)" = "" ]; then \
2012-05-04 17:18:46 +02:00
$(PYTHON) setup-client.py install; \
2014-09-17 11:49:51 +02:00
(cd ipaplatform && $(PYTHON) setup.py install); \
2009-10-12 16:00:00 -04:00
else \
2012-05-04 17:18:46 +02:00
$(PYTHON) setup-client.py install --root $(DESTDIR); \
2014-09-17 11:49:51 +02:00
(cd ipaplatform && $(PYTHON) setup.py install --root $(DESTDIR)); \
2009-10-12 16:00:00 -04:00
fi
2011-11-17 10:45:15 +02:00
client-dirs:
@if [ "$(DESTDIR)" != "" ] ; then \
mkdir -p $(DESTDIR)/etc/ipa ; \
mkdir -p $(DESTDIR)/var/lib/ipa-client/sysrestore ; \
else \
echo "DESTDIR was not set, please create /etc/ipa and /var/lib/ipa-client/sysrestore" ; \
echo "Without those directories ipa-client-install will fail" ; \
fi
lint: bootstrap-autogen
2011-04-28 18:14:43 +02:00
./make-lint $(LINT_OPTIONS)
$(MAKE) -C install/po validate-src-strings
2011-04-11 15:39:38 +02:00
test:
./make-test
release-update:
if [ ! -e RELEASE ]; then echo 0 > RELEASE; fi
version-update: release-update
sed -e s/__VERSION__/$(IPA_VERSION)/ -e s/__RELEASE__/$(IPA_RPM_RELEASE)/ \
2011-01-17 10:26:19 +01:00
freeipa.spec.in > freeipa.spec
2009-02-02 13:50:53 -05:00
sed -e s/__VERSION__/$(IPA_VERSION)/ version.m4.in \
> version.m4
sed -e s/__VERSION__/$(IPA_VERSION)/ ipapython/setup.py.in \
> ipapython/setup.py
sed -e s/__VERSION__/$(IPA_VERSION)/ ipaplatform/setup.py.in \
> ipaplatform/setup.py
sed -e s/__VERSION__/$(IPA_VERSION)/ ipapython/version.py.in \
> ipapython/version.py
2013-05-21 13:40:27 +02:00
sed -e s/__VERSION__/$(IPA_VERSION)/ ipatests/setup.py.in \
> ipatests/setup.py
sed -e s/__NUM_VERSION__/$(IPA_NUM_VERSION)/ install/ui/src/libs/loader.js.in \
> install/ui/src/libs/loader.js
2014-06-18 15:30:37 +02:00
perl -pi -e "s:__API_VERSION__:$(IPA_API_VERSION_MAJOR).$(IPA_API_VERSION_MINOR):" install/ui/src/libs/loader.js
2013-04-19 14:02:40 +02:00
perl -pi -e "s:__NUM_VERSION__:$(IPA_NUM_VERSION):" ipapython/version.py
2014-03-13 14:39:03 +01:00
perl -pi -e "s:__VENDOR_VERSION__:$(IPA_VENDOR_VERSION):" ipapython/version.py
perl -pi -e "s:__API_VERSION__:$(IPA_API_VERSION_MAJOR).$(IPA_API_VERSION_MINOR):" ipapython/version.py
2013-08-13 02:10:01 -04:00
touch -r ipapython/version.py.in ipapython/version.py
2010-06-24 10:31:52 -04:00
sed -e s/__VERSION__/$(IPA_VERSION)/ daemons/ipa-version.h.in \
> daemons/ipa-version.h
2013-04-19 14:02:40 +02:00
perl -pi -e "s:__NUM_VERSION__:$(IPA_NUM_VERSION):" daemons/ipa-version.h
2010-06-24 10:31:52 -04:00
perl -pi -e "s:__DATA_VERSION__:$(IPA_DATA_VERSION):" daemons/ipa-version.h
sed -e s/__VERSION__/$(IPA_VERSION)/ -e s/__RELEASE__/$(IPA_RPM_RELEASE)/ \
ipa-client/ipa-client.spec.in > ipa-client/ipa-client.spec
sed -e s/__VERSION__/$(IPA_VERSION)/ ipa-client/version.m4.in \
> ipa-client/version.m4
if [ "$(SUPPORTED_PLATFORM)" != "" ]; then \
2015-04-10 15:42:58 +02:00
sed -e s/__PLATFORM__/$(SUPPORTED_PLATFORM)/ \
ipaplatform/__init__.py.in > ipaplatform/__init__.py; \
2015-07-02 12:38:43 +02:00
rm -f ipaplatform/paths.py ipaplatform/services.py ipaplatform/tasks.py ipaplatform/constants.py; \
ln -s $(SUPPORTED_PLATFORM)/paths.py ipaplatform/paths.py; \
ln -s $(SUPPORTED_PLATFORM)/services.py ipaplatform/services.py; \
ln -s $(SUPPORTED_PLATFORM)/tasks.py ipaplatform/tasks.py; \
2015-07-02 12:38:43 +02:00
ln -s $(SUPPORTED_PLATFORM)/constants.py ipaplatform/constants.py; \
fi
if [ "$(SKIP_API_VERSION_CHECK)" != "yes" ]; then \
./makeapi --validate; \
2014-06-09 19:12:46 +02:00
./makeaci --validate; \
fi
2011-06-17 10:58:01 +02:00
server: version-update
2012-05-04 17:18:46 +02:00
$(PYTHON) setup.py build
2014-09-17 11:49:51 +02:00
cd ipaplatform && $(PYTHON) setup.py build
2009-02-02 13:50:53 -05:00
server-install: server
2009-10-12 16:00:00 -04:00
if [ "$(DESTDIR)" = "" ]; then \
2012-05-04 17:18:46 +02:00
$(PYTHON) setup.py install; \
2014-09-17 11:49:51 +02:00
(cd ipaplatform && $(PYTHON) setup.py install); \
2009-02-02 13:50:53 -05:00
else \
2012-05-04 17:18:46 +02:00
$(PYTHON) setup.py install --root $(DESTDIR); \
2014-09-17 11:49:51 +02:00
(cd ipaplatform && $(PYTHON) setup.py install --root $(DESTDIR)); \
2009-02-02 13:50:53 -05:00
fi
2013-08-13 18:32:36 +02:00
tests: version-update tests-man-autogen
2013-05-21 13:40:27 +02:00
cd ipatests; $(PYTHON) setup.py build
2013-08-13 18:32:36 +02:00
cd ipatests/man && $(MAKE) all
2013-05-21 13:40:27 +02:00
tests-install: tests
if [ "$(DESTDIR)" = "" ]; then \
cd ipatests; $(PYTHON) setup.py install; \
else \
cd ipatests; $(PYTHON) setup.py install --root $(DESTDIR); \
fi
2013-08-13 18:32:36 +02:00
cd ipatests/man && $(MAKE) install
2013-05-21 13:40:27 +02:00
archive:
-mkdir -p dist
git archive --format=tar --prefix=ipa/ $(TARGET) | (cd dist && tar xf -)
local-archive:
2009-02-02 13:50:53 -05:00
-mkdir -p dist/$(TARBALL_PREFIX)
rsync -a --exclude=dist --exclude=.git --exclude=/build --exclude=rpmbuild . dist/$(TARBALL_PREFIX)
archive-cleanup:
2009-02-02 13:50:53 -05:00
rm -fr dist/freeipa
2009-02-02 13:50:53 -05:00
tarballs: local-archive
2008-02-21 15:23:29 +00:00
-mkdir -p dist/sources
2009-02-02 13:50:53 -05:00
# tar up clean sources
cd dist/$(TARBALL_PREFIX)/ipa-client; ../autogen.sh --prefix=/usr --sysconfdir=/etc --localstatedir=/var --libdir=$(LIBDIR); make distclean
cd dist/$(TARBALL_PREFIX)/daemons; ../autogen.sh --prefix=/usr --sysconfdir=/etc --localstatedir=/var --libdir=$(LIBDIR); make distclean
cd dist/$(TARBALL_PREFIX)/install; ../autogen.sh --prefix=/usr --sysconfdir=/etc --localstatedir=/var --libdir=$(LIBDIR); make distclean
2009-02-02 13:50:53 -05:00
cd dist; tar cfz sources/$(TARBALL) $(TARBALL_PREFIX)
rm -rf dist/$(TARBALL_PREFIX)
rpmroot:
rm -rf $(RPMBUILD)
mkdir -p $(RPMBUILD)/BUILD
mkdir -p $(RPMBUILD)/RPMS
mkdir -p $(RPMBUILD)/SOURCES
mkdir -p $(RPMBUILD)/SPECS
mkdir -p $(RPMBUILD)/SRPMS
2008-02-21 15:23:29 +00:00
rpmdistdir:
mkdir -p dist/rpms
mkdir -p dist/srpms
2011-04-28 18:14:43 +02:00
rpms: rpmroot rpmdistdir version-update lint tarballs
2009-02-02 13:50:53 -05:00
cp dist/sources/$(TARBALL) $(RPMBUILD)/SOURCES/.
2011-01-17 10:26:19 +01:00
rpmbuild --define "_topdir $(RPMBUILD)" -ba freeipa.spec
cp $(RPMBUILD)/RPMS/*/$(PRJ_PREFIX)-*-$(IPA_VERSION)-*.rpm dist/rpms/
cp $(RPMBUILD)/SRPMS/$(PRJ_PREFIX)-$(IPA_VERSION)-*.src.rpm dist/srpms/
rm -rf $(RPMBUILD)
2011-04-28 18:14:43 +02:00
client-rpms: rpmroot rpmdistdir version-update lint tarballs
2009-10-12 16:00:00 -04:00
cp dist/sources/$(TARBALL) $(RPMBUILD)/SOURCES/.
2011-01-17 10:26:19 +01:00
rpmbuild --define "_topdir $(RPMBUILD)" --define "ONLY_CLIENT 1" -ba freeipa.spec
cp $(RPMBUILD)/RPMS/*/$(PRJ_PREFIX)-*-$(IPA_VERSION)-*.rpm dist/rpms/
cp $(RPMBUILD)/SRPMS/$(PRJ_PREFIX)-$(IPA_VERSION)-*.src.rpm dist/srpms/
rm -rf $(RPMBUILD)
2009-10-12 16:00:00 -04:00
2011-04-28 18:14:43 +02:00
srpms: rpmroot rpmdistdir version-update lint tarballs
2009-05-07 15:37:29 -06:00
cp dist/sources/$(TARBALL) $(RPMBUILD)/SOURCES/.
2011-01-17 10:26:19 +01:00
rpmbuild --define "_topdir $(RPMBUILD)" -bs freeipa.spec
cp $(RPMBUILD)/SRPMS/$(PRJ_PREFIX)-$(IPA_VERSION)-*.src.rpm dist/srpms/
rm -rf $(RPMBUILD)
2009-05-07 15:37:29 -06:00
2008-02-21 15:23:29 +00:00
repodata:
-createrepo -p dist
dist: version-update archive tarballs archive-cleanup rpms repodata
local-dist: bootstrap-autogen clean local-archive tarballs archive-cleanup rpms
clean: version-update
@for subdir in $(SUBDIRS); do \
(cd $$subdir && $(MAKE) $@) || exit 1; \
done
rm -f *~
distclean: version-update
2009-10-12 16:00:00 -04:00
touch daemons/NEWS daemons/README daemons/AUTHORS daemons/ChangeLog
touch install/NEWS install/README install/AUTHORS install/ChangeLog
@for subdir in $(SUBDIRS); do \
(cd $$subdir && $(MAKE) $@) || exit 1; \
done
rm -fr $(RPMBUILD) dist build
2009-10-12 16:00:00 -04:00
rm -f daemons/NEWS daemons/README daemons/AUTHORS daemons/ChangeLog
rm -f install/NEWS install/README install/AUTHORS install/ChangeLog
maintainer-clean: clean
rm -fr $(RPMBUILD) dist build
2009-02-02 13:50:53 -05:00
cd daemons && $(MAKE) maintainer-clean
cd install && $(MAKE) maintainer-clean
cd ipa-client && $(MAKE) maintainer-clean
cd ipapython && $(MAKE) maintainer-clean
2009-02-02 13:50:53 -05:00
rm -f version.m4
2011-01-17 10:26:19 +01:00
rm -f freeipa.spec