summaryrefslogtreecommitdiffstats
path: root/Makefile
diff options
context:
space:
mode:
Diffstat (limited to 'Makefile')
-rw-r--r--Makefile261
1 files changed, 261 insertions, 0 deletions
diff --git a/Makefile b/Makefile
new file mode 100644
index 00000000..6e69387d
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,261 @@
+include VERSION
+
+SUBDIRS=ipa-server ipa-admintools ipa-python ipa-client ipa-radius-server ipa-radius-admintools
+
+PRJ_PREFIX=ipa
+
+RPMBUILD ?= $(PWD)/rpmbuild
+TARGET ?= master
+
+# After updating the version in VERSION you should run the version-update
+# target.
+
+ifeq ($(IPA_VERSION_IS_GIT_SNAPSHOT),"yes")
+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)GIT$(GIT_VERSION)
+endif # in a git tree and git returned a version
+endif # git
+
+ifndef IPA_VERSION
+ifdef IPA_VERSION_PRE_RELEASE
+IPA_VERSION=$(IPA_VERSION_MAJOR).$(IPA_VERSION_MINOR).$(IPA_VERSION_RELEASE).pre$(IPA_VERSION_PRE_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
+endif # pre
+endif # ipa_version
+
+SERV_TARBALL_PREFIX=$(PRJ_PREFIX)-server-$(IPA_VERSION)
+SERV_TARBALL=$(SERV_TARBALL_PREFIX).tgz
+
+ADMIN_TARBALL_PREFIX=$(PRJ_PREFIX)-admintools-$(IPA_VERSION)
+ADMIN_TARBALL=$(ADMIN_TARBALL_PREFIX).tgz
+
+PYTHON_TARBALL_PREFIX=$(PRJ_PREFIX)-python-$(IPA_VERSION)
+PYTHON_TARBALL=$(PYTHON_TARBALL_PREFIX).tgz
+
+CLI_TARBALL_PREFIX=$(PRJ_PREFIX)-client-$(IPA_VERSION)
+CLI_TARBALL=$(CLI_TARBALL_PREFIX).tgz
+
+RADIUS_SERVER_TARBALL_PREFIX=$(PRJ_PREFIX)-radius-server-$(IPA_VERSION)
+RADIUS_SERVER_TARBALL=$(RADIUS_SERVER_TARBALL_PREFIX).tgz
+
+RADIUS_ADMINTOOLS_TARBALL_PREFIX=$(PRJ_PREFIX)-radius-admintools-$(IPA_VERSION)
+RADIUS_ADMINTOOLS_TARBALL=$(RADIUS_ADMINTOOLS_TARBALL_PREFIX).tgz
+
+SERV_SELINUX_TARBALL_PREFIX=$(PRJ_PREFIX)-server-selinux-$(IPA_VERSION)
+SERV_SELINUX_TARBALL=$(SERV_SELINUX_TARBALL_PREFIX).tgz
+
+IPA_RPM_RELEASE=$(shell cat RELEASE)
+
+LIBDIR ?= /usr/lib
+
+all: bootstrap-autogen
+ @for subdir in $(SUBDIRS); do \
+ (cd $$subdir && $(MAKE) $@) || exit 1; \
+ done
+
+bootstrap-autogen: version-update
+ @echo "Building IPA $(IPA_VERSION)"
+ cd ipa-server; 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
+
+autogen: version-update
+ @echo "Building IPA $(IPA_VERSION)"
+ cd ipa-server; ./autogen.sh --prefix=/usr --sysconfdir=/etc --localstatedir=/var --libdir=$(LIBDIR)
+ cd ipa-client; ./autogen.sh --prefix=/usr --sysconfdir=/etc --localstatedir=/var --libdir=$(LIBDIR)
+
+install: all
+ @for subdir in $(SUBDIRS); do \
+ (cd $$subdir && $(MAKE) $@) || exit 1; \
+ done
+
+test:
+ @for subdir in $(SUBDIRS); do \
+ (cd $$subdir && $(MAKE) $@) || exit 1; \
+ done
+
+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)/ \
+ ipa-server/ipa-server.spec.in > ipa-server/ipa-server.spec
+ sed -e s/__VERSION__/$(IPA_VERSION)/ ipa-server/version.m4.in \
+ > ipa-server/version.m4
+
+ sed -e s/__VERSION__/$(IPA_VERSION)/ -e s/__RELEASE__/$(IPA_RPM_RELEASE)/ \
+ ipa-admintools/ipa-admintools.spec.in > ipa-admintools/ipa-admintools.spec
+
+ sed -e s/__VERSION__/$(IPA_VERSION)/ -e s/__RELEASE__/$(IPA_RPM_RELEASE)/ \
+ ipa-python/ipa-python.spec.in > ipa-python/ipa-python.spec
+
+ 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
+
+ sed -e s/__VERSION__/$(IPA_VERSION)/ -e s/__RELEASE__/$(IPA_RPM_RELEASE)/ \
+ ipa-radius-server/ipa-radius-server.spec.in \
+ > ipa-radius-server/ipa-radius-server.spec
+
+ sed -e s/__VERSION__/$(IPA_VERSION)/ -e s/__RELEASE__/$(IPA_RPM_RELEASE)/ \
+ ipa-radius-admintools/ipa-radius-admintools.spec.in \
+ > ipa-radius-admintools/ipa-radius-admintools.spec
+
+ sed -e s/__VERSION__/$(IPA_VERSION)/ -e s/__RELEASE__/$(IPA_RPM_RELEASE)/ \
+ ipa-server/selinux/ipa-server-selinux.spec.in \
+ > ipa-server/selinux/ipa-server-selinux.spec
+
+ sed -e s/__VERSION__/$(IPA_VERSION)/ ipa-python/setup.py.in \
+ > ipa-python/setup.py
+ sed -e s/__VERSION__/$(IPA_VERSION)/ ipa-python/version.py.in \
+ > ipa-python/version.py
+ perl -pi -e "s:__NUM_VERSION__:$(IPA_VERSION_MAJOR)$(IPA_VERSION_MINOR)$(IPA_VERSION_RELEASE):" ipa-python/version.py
+
+archive:
+ -mkdir -p dist
+ git archive --format=tar --prefix=ipa/ $(TARGET) | (cd dist && tar xf -)
+
+local-archive:
+ -mkdir -p dist/ipa
+ @for subdir in $(SUBDIRS); do \
+ cp -pr $$subdir dist/ipa/.; \
+ done
+
+archive-cleanup:
+ rm -fr dist/ipa
+
+tarballs:
+ -mkdir -p dist/sources
+
+ # ipa-server
+ mv dist/ipa/ipa-server dist/$(SERV_TARBALL_PREFIX)
+ rm -f dist/sources/$(SERV_TARBALL)
+ cd dist/$(SERV_TARBALL_PREFIX); ./autogen.sh --prefix=/usr --sysconfdir=/etc --localstatedir=/var --libdir=$(LIBDIR); make distclean
+ cd dist; tar cfz sources/$(SERV_TARBALL) $(SERV_TARBALL_PREFIX)
+ rm -fr dist/$(SERV_TARBALL_PREFIX)
+
+ # ipa-admintools
+ mv dist/ipa/ipa-admintools dist/$(ADMIN_TARBALL_PREFIX)
+ rm -f dist/sources/$(ADMIN_TARBALL)
+ cd dist; tar cfz sources/$(ADMIN_TARBALL) $(ADMIN_TARBALL_PREFIX)
+ rm -fr dist/$(ADMIN_TARBALL_PREFIX)
+
+ # ipa-python
+ mv dist/ipa/ipa-python dist/$(PYTHON_TARBALL_PREFIX)
+ rm -f dist/sources/$(PYTHON_TARBALL)
+ cd dist; tar cfz sources/$(PYTHON_TARBALL) $(PYTHON_TARBALL_PREFIX)
+ rm -fr dist/$(PYTHON_TARBALL_PREFIX)
+
+ # ipa-client
+ mv dist/ipa/ipa-client dist/$(CLI_TARBALL_PREFIX)
+ rm -f dist/sources/$(CLI_TARBALL)
+ cd dist/$(CLI_TARBALL_PREFIX); ./autogen.sh --prefix=/usr --sysconfdir=/etc --localstatedir=/var --libdir=$(LIBDIR); make distclean
+ cd dist; tar cfz sources/$(CLI_TARBALL) $(CLI_TARBALL_PREFIX)
+ rm -fr dist/$(CLI_TARBALL_PREFIX)
+
+ # ipa-radius-server
+ mv dist/ipa/ipa-radius-server dist/$(RADIUS_SERVER_TARBALL_PREFIX)
+ rm -f dist/sources/$(RADIUS_SERVER_TARBALL)
+ cd dist; tar cfz sources/$(RADIUS_SERVER_TARBALL) $(RADIUS_SERVER_TARBALL_PREFIX)
+ rm -fr dist/$(RADIUS_SERVER_TARBALL_PREFIX)
+
+ # ipa-radius-admintools
+ mv dist/ipa/ipa-radius-admintools dist/$(RADIUS_ADMINTOOLS_TARBALL_PREFIX)
+ rm -f dist/sources/$(RADIUS_ADMINTOOLS_TARBALL)
+ cd dist; tar cfz sources/$(RADIUS_ADMINTOOLS_TARBALL) $(RADIUS_ADMINTOOLS_TARBALL_PREFIX)
+ rm -fr dist/$(RADIUS_ADMINTOOLS_TARBALL_PREFIX)
+
+ # ipa-server/selinux
+ cp dist/sources/$(SERV_TARBALL) dist/sources/$(SERV_SELINUX_TARBALL)
+
+
+rpmroot:
+ mkdir -p $(RPMBUILD)/BUILD
+ mkdir -p $(RPMBUILD)/RPMS
+ mkdir -p $(RPMBUILD)/SOURCES
+ mkdir -p $(RPMBUILD)/SPECS
+ mkdir -p $(RPMBUILD)/SRPMS
+
+rpmdistdir:
+ mkdir -p dist/rpms
+ mkdir -p dist/srpms
+
+rpm-ipa-server:
+ cp dist/sources/$(SERV_TARBALL) $(RPMBUILD)/SOURCES/.
+ rpmbuild --define "_topdir $(RPMBUILD)" -ba ipa-server/ipa-server.spec
+ cp rpmbuild/RPMS/*/$(PRJ_PREFIX)-server-$(IPA_VERSION)-*.rpm dist/rpms/
+ cp rpmbuild/SRPMS/$(PRJ_PREFIX)-server-$(IPA_VERSION)-*.src.rpm dist/srpms/
+
+rpm-ipa-admin:
+ cp dist/sources/$(ADMIN_TARBALL) $(RPMBUILD)/SOURCES/.
+ rpmbuild --define "_topdir $(RPMBUILD)" -ba ipa-admintools/ipa-admintools.spec
+ cp rpmbuild/RPMS/noarch/$(PRJ_PREFIX)-admintools-$(IPA_VERSION)-*.rpm dist/rpms/
+ cp rpmbuild/SRPMS/$(PRJ_PREFIX)-admintools-$(IPA_VERSION)-*.src.rpm dist/srpms/
+
+rpm-ipa-python:
+ cp dist/sources/$(PYTHON_TARBALL) $(RPMBUILD)/SOURCES/.
+ rpmbuild --define "_topdir $(RPMBUILD)" -ba ipa-python/ipa-python.spec
+ cp rpmbuild/RPMS/noarch/$(PRJ_PREFIX)-python-$(IPA_VERSION)-*.rpm dist/rpms/
+ cp rpmbuild/SRPMS/$(PRJ_PREFIX)-python-$(IPA_VERSION)-*.src.rpm dist/srpms/
+
+rpm-ipa-client:
+ cp dist/sources/$(CLI_TARBALL) $(RPMBUILD)/SOURCES/.
+ rpmbuild --define "_topdir $(RPMBUILD)" -ba ipa-client/ipa-client.spec
+ cp rpmbuild/RPMS/*/$(PRJ_PREFIX)-client-$(IPA_VERSION)-*.rpm dist/rpms/
+ cp rpmbuild/SRPMS/$(PRJ_PREFIX)-client-$(IPA_VERSION)-*.src.rpm dist/srpms/
+
+rpm-ipa-radius-server:
+ cp dist/sources/$(RADIUS_SERVER_TARBALL) $(RPMBUILD)/SOURCES/.
+ rpmbuild --define "_topdir $(RPMBUILD)" -ba ipa-radius-server/ipa-radius-server.spec
+ cp rpmbuild/RPMS/noarch/$(PRJ_PREFIX)-radius-server-$(IPA_VERSION)-*.rpm dist/rpms/
+ cp rpmbuild/SRPMS/$(PRJ_PREFIX)-radius-server-$(IPA_VERSION)-*.src.rpm dist/srpms/
+
+rpm-ipa-radius-admintools:
+ cp dist/sources/$(RADIUS_ADMINTOOLS_TARBALL) $(RPMBUILD)/SOURCES/.
+ rpmbuild --define "_topdir $(RPMBUILD)" -ba ipa-radius-admintools/ipa-radius-admintools.spec
+ cp rpmbuild/RPMS/noarch/$(PRJ_PREFIX)-radius-admintools-$(IPA_VERSION)-*.rpm dist/rpms/
+ cp rpmbuild/SRPMS/$(PRJ_PREFIX)-radius-admintools-$(IPA_VERSION)-*.src.rpm dist/srpms/
+
+rpm-ipa-server-selinux:
+ cp dist/sources/$(SERV_SELINUX_TARBALL) $(RPMBUILD)/SOURCES/.
+ rpmbuild --define "_topdir $(RPMBUILD)" -ba ipa-server/selinux/ipa-server-selinux.spec
+ cp rpmbuild/RPMS/*/$(PRJ_PREFIX)-server-selinux-$(IPA_VERSION)-*.rpm dist/rpms/
+ cp rpmbuild/SRPMS/$(PRJ_PREFIX)-server-selinux-$(IPA_VERSION)-*.src.rpm dist/srpms/
+
+rpms: rpmroot rpmdistdir rpm-ipa-server rpm-ipa-admin rpm-ipa-python rpm-ipa-client rpm-ipa-radius-server rpm-ipa-radius-admintools rpm-ipa-server-selinux
+
+repodata:
+ -createrepo -p dist
+
+dist: version-update archive tarballs archive-cleanup rpms repodata
+
+local-dist: 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
+ @for subdir in $(SUBDIRS); do \
+ (cd $$subdir && $(MAKE) $@) || exit 1; \
+ done
+ rm -fr rpmbuild dist
+
+maintainer-clean: clean
+ rm -fr rpmbuild dist
+ cd ipa-server/selinux && $(MAKE) maintainer-clean
+ cd ipa-server && $(MAKE) maintainer-clean
+ cd ipa-client && $(MAKE) maintainer-clean
+ cd ipa-python && $(MAKE) maintainer-clean
+ cd ipa-admintools && $(MAKE) maintainer-clean
+ cd ipa-radius-admintools && $(MAKE) maintainer-clean
+ cd ipa-radius-server && $(MAKE) maintainer-clean