Newer
Older
# Prefix for packaging
DESTDIR=
# Perl options
#PERLOPTIONS="INSTALLDIRS=vendor"
PERLOPTIONS=
# Default directories install
PREFIX=/usr/local/
LMPREFIX=$(PREFIX)lemonldap-ng/
RLMPREFIX=$(DESTDIR)$(LMPREFIX)
# BIN dirs
BINDIR=$(LMPREFIX)bin/
RBINDIR=$(DESTDIR)$(BINDIR)
DATADIR=$(LMPREFIX)data/
RDATADIR=$(DESTDIR)$(DATADIR)
EXAMPLEROOT=`pwd`/example/
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
# Document roots for Apache VirtualHosts
DOCUMENTROOT=$(LMPREFIX)htdocs/
PORTALDIR=$(DOCUMENTROOT)portal/
RPORTALDIR=$(DESTDIR)$(PORTALDIR)
PORTALSKINSDIR=$(PORTALDIR)skins/
RPORTALSKINSDIR=$(DESTDIR)$(PORTALSKINSDIR)
LASPPORTALDIR=$(DOCUMENTROOT)liberty-alliance-sp-portal/
RLASPPORTALDIR=$(DESTDIR)$(LASPPORTALDIR)
MANAGERDIR=$(DOCUMENTROOT)manager/
RMANAGERDIR=$(DESTDIR)$(MANAGERDIR)
MANAGERDATADIR=$(MANAGERDIR)imgs/
RMANAGERDATADIR=$(DESTDIR)$(MANAGERDATADIR)
SESSIONSEXPLORERDIR=$(MANAGERDIR)
RSESSIONSEXPLORERDIR=$(DESTDIR)$(SESSIONSEXPLORERDIR)
SESSIONSEXPLORERDATADIR=$(SESSIONSEXPLORERDIR)images/
RSESSIONSEXPLORERDATADIR=$(DESTDIR)$(SESSIONSEXPLORERDATADIR)
DOCDIR=$(DOCUMENTROOT)doc/
RDOCDIR=$(DESTDIR)$(DOCDIR)
TESTDIR=$(DOCUMENTROOT)test/
RTESTDIR=$(DESTDIR)$(TESTDIR)
EXAMPLESDIR=$(LMPREFIX)examples/
REXAMPLESDIR=$(DESTDIR)$(EXAMPLESDIR)
TOOLSDIR=$(LMPREFIX)tools/
RTOOLSDIR=$(DESTDIR)$(TOOLSDIR)
DOCDIR=$(DOCUMENTROOT)doc/
RDOCDIR=$(DESTDIR)$(DOCDIR)
# Handler dir
HANDLERDIR=$(LMPREFIX)handler/
RHANDLERDIR=$(DESTDIR)$(HANDLERDIR)
# Configuration dir
CONFDIR=$(LMPREFIX)etc/
RCONFDIR=$(DESTDIR)$(CONFDIR)
CRONDIR=$(LMPREFIX)etc/cron.d/
RCRONDIR=$(DESTDIR)$(CRONDIR)
STORAGECONFFILE=$(CONFDIR)storage.conf
# Lemonldap-ng configuration storage dir
FILECONFIGDIR=$(DATADIR)conf/
RFILECONFIGDIR=$(DESTDIR)$(FILECONFIGDIR)
# Apache::Session::File storage dir
APACHESESSIONFILEDIR=$(DATADIR)sessions/
RAPACHESESSIONFILEDIR=$(DESTDIR)$(APACHESESSIONFILEDIR)
APACHESESSIONFILELOCKDIR=$(APACHESESSIONFILEDIR)lock/
RAPACHESESSIONFILELOCKDIR=$(DESTDIR)$(APACHESESSIONFILELOCKDIR)
APACHEUSER=
APACHEGROUP=
# DNS Domain for cookie and virtual hosts
DNSDOMAIN=example.com
LDAPHOST=localhost
LDAPPORT=389
LDAPSUFFIX=dc=example,dc=net
VERSION=`head -n1 changelog |sed -e 's/lemonldap-ng (//' -e 's/).*$$//'`
SRCCOMMONDIR=lemonldap-ng-common/
SRCHANDLERDIR=lemonldap-ng-handler/
SRCPORTALDIR=lemonldap-ng-portal/
SRCMANAGERDIR=lemonldap-ng-manager/
EXAMPLELANG=en # For static Manager example only
#
# Perl libraries configuration
#
configure: common_conf handler_conf portal_conf manager_conf
common_conf:
@cd ${SRCCOMMONDIR}; LMNGCONFFILE=$(STORAGECONFFILE) perl Makefile.PL $(PERLOPTIONS)
@touch common_conf
handler_conf:
@cd ${SRCHANDLERDIR}; perl Makefile.PL $(PERLOPTIONS)
@touch handler_conf
portal_conf:
@cd ${SRCPORTALDIR}; perl Makefile.PL $(PERLOPTIONS)
@touch portal_conf
manager_conf:
@cd ${SRCMANAGERDIR}; perl Makefile.PL $(PERLOPTIONS)
@touch manager_conf
#
# Perl libraries make
#
all: common handler manager portal
common: common_conf
@$(MAKE) -C ${SRCCOMMONDIR}
@touch common
@$(MAKE) -C ${SRCHANDLERDIR}
@touch handler
@$(MAKE) -C ${SRCPORTALDIR}
@touch portal
@$(MAKE) -C ${SRCMANAGERDIR}
@touch manager
test: common handler portal manager common_test handler_test portal_test manager_test
common_test: common
@$(MAKE) -C ${SRCCOMMONDIR} test
handler_test: handler common_test
@$(MAKE) -C ${SRCHANDLERDIR} test INST_ARCHLIB=../${SRCCOMMONDIR}/blib/lib/
portal_test: portal handler_test common_test
@$(MAKE) -C ${SRCPORTALDIR} test INST_ARCHLIB=../${SRCCOMMONDIR}/blib/lib/
manager_test: manager handler_test common_test
@$(MAKE) -C ${SRCMANAGERDIR} test INST_ARCHLIB=../${SRCCOMMONDIR}/blib/lib/
#
# INSTALL
#
install: install_libs install_bin install_site
#
# Perl libraires install
#
install_libs: common_install_libs handler_install_libs portal_install_libs manager_install_libs
common_install_libs: common
@$(MAKE) -C ${SRCCOMMONDIR} install
handler_install_libs: handler
@$(MAKE) -C ${SRCHANDLERDIR} install
portal_install_libs: portal
@$(MAKE) -C ${SRCPORTALDIR} install
manager_install_libs: manager
@$(MAKE) -C ${SRCMANAGERDIR} install
example:
$(MAKE) install_site LMPREFIX=$(EXAMPLEROOT)
install_bin: install_libs install_conf_dir
# Binary install
@install -v -d $(RBINDIR)
cp --preserve=mode --remove-destination ${SRCPORTALDIR}/example/scripts/purgeCentralCache $(RBINDIR)
cp --preserve=mode --remove-destination ${SRCMANAGERDIR}/example/scripts/lmConfigEditor $(RBINDIR)
#
# SITE INSTALL
#
install_site: install_manager_site install_portal_site install_handler_site install_test_site install_examples_site
@install -v -d $(RCONFDIR)
# Apache configuration files
@cp --remove-destination _example/etc/apache* $(RCONFDIR)
@perl -i -pe 's#__HANDLER__#${HANDLERDIR}MyHandler.pm#; \
s/__DNSDOMAIN__/$(DNSDOMAIN)/g; \
s#__PORTALDIR__#$(PORTALDIR)#g; \
s#__MANAGERDIR__#$(MANAGERDIR)#g; \
s#__TESTDIR__#$(TESTDIR)#g; \
s#__DOCDIR__#$(DOCDIR)#g;' $(RCONFDIR)/apache*
# File for /etc/hosts inclusion
@cp --remove-destination _example/etc/for_etc_hosts $(RCONFDIR)
@perl -i -pe 's/__DNSDOMAIN__/$(DNSDOMAIN)/g' $(RCONFDIR)for_etc_hosts
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
#
@echo
@echo "LemonLDAP::NG example v${VERSION} is installed with these parameters:"
@echo " - System configuration: ${CONFDIR}"
@echo " - DNS domain (for cookies and virtual hosts): ${DNSDOMAIN}"
@echo " - LDAP parameters:"
@echo " - Host: ${LDAPHOST}"
@echo " - Port: ${LDAPPORT}"
@echo " - Suffix: ${LDAPSUFFIX}"
@echo
@echo "To finish configuration:"
@echo
@echo "1 - Add this in your Apache configuration file:"
@echo " with Apache-1.3.x"
@echo " include ${CONFDIR}apache.conf"
@echo " or with Apache-2.x:"
@echo " include ${CONFDIR}apache2.conf"
@echo
@echo "2 - Restart Apache (or Apache2)"
@echo
@echo "3 - Run 'make postconf' as root to update /etc/hosts" if your DNS service does not known auth.$(DNSDOMAIN) and manager.$(DNSDOMAIN)
@echo
@echo "4 - Use the manager at http://manager.${DNSDOMAIN}/ (after Apache restart) to modify LemonLDAP::NG configuration."
@echo " Edit ${DESTPORTALDIR}apps/apps-list.xml to modify the menu."
@echo
@echo "5 - Try to connect to http://test1.${DNSDOMAIN}/ or http://test2.${DNSDOMAIN}/"
@if [ "$(APACHEUSER)" == "" ]; then \
echo;echo " Warning, since APACHEUSER was not set, $(APACHESESSIONFILEDIR) and $(CONFDIR) have permissive permissions."; \
echo " Fix them by yourself to restrict their view to apache process only"; \
fi
@echo
install_manager_site: install_conf_dir
# Manager install
@install -v -d ${RMANAGERDIR} ${RMANAGERDATADIR} \
${RSESSIONSEXPLORERDIR} $(RSESSIONSEXPLORERDATADIR) \
$(RCONFDIR)
@find ${RMANAGERDIR} -type l -name imgs -delete
@find ${RMANAGERDIR} -type l -name images -delete
@cp -pR --remove-destination ${SRCMANAGERDIR}example/* ${RMANAGERDIR}
@rm -rf $$(find ${RMANAGERDIR} -type d -name .svn) ${RMANAGERDIR}scripts ${RMANAGERDIR}mrtg ${RMANAGERDIR}soapserver.pl
@if [ "${RMANAGERDIR}imgs/" != "${RMANAGERDATADIR}" ]; then \
mv -f ${RMANAGERDIR}imgs/* ${RMANAGERDATADIR}; \
rm -rf ${RMANAGERDIR}imgs; \
ln -s $$(echo ${MANAGERDATADIR} | sed -e 's/\/$$//') ${RMANAGERDIR}imgs; \
fi
# apply.conf install
@mv ${RMANAGERDIR}apply.conf $(RCONFDIR)
@perl -i -pe 's/__DNSDOMAIN__/$(DNSDOMAIN)/g' $(RCONFDIR)apply.conf
@perl -i -pe 's#__APPLYCONFFILE__#$(CONFDIR)apply.conf#' ${RMANAGERDIR}index.pl
# Sessions explorer install
@if [ "${MANAGERDIR}" != "$(SESSIONSEXPLORERDIR)" ]; then mv -f ${RMANAGERDIR}sessions.pl $(RSESSIONSEXPLORERDIR); fi
@if [ "${MANAGERDIR}images/" != "${SESSIONSEXPLORERDATADIR}" ]; then \
mv -f ${RMANAGERDIR}images/* ${RSESSIONSEXPLORERDATADIR}; \
rm -rf ${RMANAGERDIR}images; \
ln -s $$(echo ${SESSIONSEXPLORERDATADIR} | sed -e 's/\/$$//') ${RMANAGERDIR}images; \
fi
@rm -rf $$(find ${RMANAGERDIR} ${RMANAGERDATADIR} \
${RSESSIONSEXPLORERDIR} $(RSESSIONSEXPLORERDATADIR) \
$(RCONFDIR) -type d -name .svn)
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
install_portal_site: install_conf_dir
# Portal install
@install -v -d $(RPORTALDIR) $(RPORTALSKINSDIR) \
$(RPORTALDIR)skins/ $(RLASPPORTALDIR) \
$(RCRONDIR) $(RCONFDIR)
@for skin in $$(ls lemonldap-ng-portal/example/skins/); do \
[ -h $(RPORTALDIR)skins/$$skin ] && rm -f $(RPORTALDIR)skins/$$skin; \
install -v -d $(RPORTALSKINSDIR)$$skin; \
done
@cp -pR --remove-destination ${SRCPORTALDIR}example/index_skin.pl ${RPORTALDIR}index.pl
@cp -pR --remove-destination ${SRCPORTALDIR}example/error.pl ${RPORTALDIR}
@perl -i -pe 's#__SKINDIR__#$(PORTALDIR)skins#; \
s#__APPSXMLFILE__#$(CONFDIR)apps-list.xml#;' ${RPORTALDIR}index.pl ${RPORTALDIR}error.pl
@cp -pR --remove-destination ${SRCPORTALDIR}example/skins/* $(RPORTALSKINSDIR)
@if [ "$(PORTALDIR)skins/" != "$(PORTALSKINSDIR)" ]; then \
for skin in $$(ls lemonldap-ng-portal/example/skins/); do \
rm -rf $(RPORTALDIR)skins/$$skin/; \
ln -s $(PORTALSKINSDIR)$$skin $(RPORTALDIR)skins/$$skin; \
done; \
fi
@cp --remove-destination _example/etc/apps-list* $(RCONFDIR)
@perl -i -pe 's/__DNSDOMAIN__/$(DNSDOMAIN)/g' $(RCONFDIR)apps-list.xml
# L-A portal install
@cp -pR --remove-destination ${SRCPORTALDIR}example/AuthLA/* $(RLASPPORTALDIR)
@perl -i -pe 's#__DIR__#$(LASPPORTALDIR)#g' $(RLASPPORTALDIR)index.pl
# Cron files
@cp --remove-destination lemonldap-ng-portal/example/scripts/purgeCentralCache.cron.d $(RCRONDIR)
# Clean SVN files
@rm -rf $$(find ${RPORTALDIR} $(RPORTALSKINSDIR) $(RLASPPORTALDIR) $(RCRONDIR) $(RCONFDIR) -type d -name .svn)
install_handler_site: install_conf_dir
@install -v -d ${RHANDLERDIR}
@cp --remove-destination ${SRCHANDLERDIR}/example/MyHandler.pm ${RHANDLERDIR}
@rm -rf $$(find $(RHANDLERDIR) -type d -name .svn)
install_test_site:
@install -v -d $(RTESTDIR)
@cp -pR --remove-destination _example/test/* $(RTESTDIR)
@rm -rf $$(find $(RTESTDIR) -type d -name .svn)
@perl -i -pe 's/__DNSDOMAIN__/$(DNSDOMAIN)/g' $(RTESTDIR)index.pl
@rm -rf $$(find $(RTESTDIR) -type d -name .svn)
install_examples_site:
@install -v -d $(REXAMPLESDIR)
@for i in manager portal handler; do \
cp -dpR --remove-destination lemonldap-ng-$$i/example $(REXAMPLESDIR)/$$i; \
done
@rm -rf $(REXAMPLESDIR)portal/skins \
$(REXAMPLESDIR)manager/imgs \
$(REXAMPLESDIR)manager/images \
@rm -rf $$(find $(REXAMPLESDIR) -type d -name .svn)
@perl -i -pe 's#__DIR__#$(LASPPORTALDIR)#g' $(REXAMPLESDIR)portal/AuthLA/index.pl
@perl -i -pe 's/__DNSDOMAIN__/$(DNSDOMAIN)/g' $(REXAMPLESDIR)manager/apply.conf
@perl -i -pe 's#__APPLYCONFFILE__#$(CONFDIR)apply.conf#' $(REXAMPLESDIR)manager/*.pl
@perl -i -pe 's#__SKINDIR__#$(PORTALDIR)skins#; \
s#__APPSXMLFILE__#$(CONFDIR)apps-list.xml#; \
s#__SESSIONDIR__#$(APACHESESSIONFILEDIR)#g;' $(REXAMPLESDIR)portal/*.pl
install_conf_dir: install_sessions_dir
@install -v -d $(RCONFDIR) $(RFILECONFIGDIR) $(RTOOLSDIR)
@cp --remove-destination $(SRCCOMMONDIR)storage.conf $(RCONFDIR)
@cp _example/conf/lmConf-1 $(RFILECONFIGDIR)
@perl -000 -i -pe "s#^(globalStorageOptions\\n\\s+)'[^\\n]*?'\$$#\$${1}\'\\\$$data1 = {&39;Directory&39; => &39;$(APACHESESSIONFILEDIR)&39;,&39;LockDirectory&39; => &39;$(APACHESESSIONFILELOCKDIR)&39;};'#m" $(RFILECONFIGDIR)lmConf-1
@perl -i -pe 's/__DNSDOMAIN__/$(DNSDOMAIN)/g;\
s/__LDAPPORT__/$(LDAPPORT)/g;\
s/__LDAPHOST__/$(LDAPHOST)/g;\
s/__LDAPSUFFIX__/$(LDAPSUFFIX)/g;\
s#__SESSIONDIR__#$(APACHESESSIONFILEDIR)#g;' $(RFILECONFIGDIR)lmConf-1
@if [ "$(APACHEUSER)" != "" ]; then \
chown $(APACHEUSER) $(RFILECONFIGDIR) || exit 1; \
if [ "$(APACHEGROUP)" != "" ]; then \
chgrp $(APACHEGROUP) $(RFILECONFIGDIR) || exit 1; \
fi; \
chmod 770 $(RFILECONFIGDIR); \
else \
chmod 777 $(RFILECONFIGDIR); \
fi
@cp lemonldap-ng-common/tools/lmConfig.mysql lemonldap-ng-common/tools/apache-session-mysql.sql $(RTOOLSDIR)
@rm -rf $$(find $(RCONFDIR) $(RFILECONFIGDIR) $(RTOOLSDIR) -type d -name .svn)
install_sessions_dir:
@install -m 777 -v -d $(RAPACHESESSIONFILEDIR) $(RAPACHESESSIONFILELOCKDIR)
# Fix Apache::Session directories permissions
@if [ "$(APACHEUSER)" != "" ]; then \
chown $(APACHEUSER) $(RAPACHESESSIONFILEDIR) $(RAPACHESESSIONFILELOCKDIR) || exit 1; \
if [ "$(APACHEGROUP)" != "" ]; then \
chgrp $(APACHEGROUP) $(RAPACHESESSIONFILEDIR) $(RAPACHESESSIONFILELOCKDIR) || exit 1; \
fi; \
chmod 770 $(RAPACHESESSIONFILEDIR) $(RAPACHESESSIONFILELOCKDIR); \
else \
chmod 777 $(RAPACHESESSIONFILEDIR) $(RAPACHESESSIONFILELOCKDIR); \
fi
TODO:
postconf_hosts:
@cat ${SYSTEMCONFDIR}for_etc_hosts >> /etc/hosts
@echo "/etc/hosts was updated"
@echo "Post configuration done"
uninstall: configure handler_uninstall portal_uninstall manager_uninstall
common_uninstall: common
@$(MAKE) -C ${SRCCOMMONDIR} uninstall
@rm -vf common_uninstall
@$(MAKE) -C ${SRCHANDLERDIR} uninstall
@rm -vf handler_uninstall
@$(MAKE) -C ${SRCPORTALDIR} uninstall
@rm -vf portal_uninstall
@$(MAKE) -C ${SRCMANAGERDIR} uninstall
@rm -vf manager_uninstall
@- $(MAKE) clean
@mkdir -p lemonldap-ng-$(VERSION)
@- cp -pR lemonldap-ng-common/ lemonldap-ng-manager/ lemonldap-ng-portal/ lemonldap-ng-handler/ * lemonldap-ng-$(VERSION)
@- dir=lemonldap-ng-$(VERSION); find $$dir -name .svn -exec rm -rf {} \; 2>/dev/null
@rm -rf lemonldap-ng-$(VERSION)/lemonldap-ng-$(VERSION)
@tar czf lemonldap-ng-$(VERSION).tar.gz lemonldap-ng-$(VERSION)
@rm -rf lemonldap-ng-$(VERSION)
@mv lemonldap-ng-$(VERSION).tar.gz lemonldap-ng_$(VERSION).orig.tar.gz
cpan: clean configure common_cpan handler_cpan portal_cpan manager_cpan
common_cpan: common_conf
@$(MAKE) -C ${SRCCOMMONDIR} dist
@mv ${SRCCOMMONDIR}/Lemonldap*.gz .
@$(MAKE) -C ${SRCHANDLERDIR} dist
@mv ${SRCHANDLERDIR}/Lemonldap*.gz .
@$(MAKE) -C ${SRCPORTALDIR} dist
@mv ${SRCPORTALDIR}/Lemonldap*.gz .
@$(MAKE) -C ${SRCMANAGERDIR} dist
@mv ${SRCMANAGERDIR}/Lemonldap*.gz .
@mkdir -p ${SCRIPTSDIR}static/
@cd ${SCRIPTSDIR}static/;cp -a ../manager/{imgs,theme} .;cd -
@../scripts/make_static_example.pl ${DESTMANAGERDIR}index.pl ${SCRIPTSDIR}static/index.html $(EXAMPLELANG)
@cd doc/ && ../scripts/doc.pl
distclean: clean
clean: common_clean handler_clean portal_clean manager_clean
@rm -rf $(EXAMPLEROOT)
@rm -vf *gz
common_clean:
- $(MAKE) -C ${SRCCOMMONDIR} distclean
@rm -vf common*
handler_clean:
- $(MAKE) -C ${SRCHANDLERDIR} distclean
@rm -vf handler*
portal_clean:
- $(MAKE) -C ${SRCPORTALDIR} distclean
@rm -vf portal*
manager_clean:
- $(MAKE) -C ${SRCMANAGERDIR} distclean
@rm -vf manager*