Makefile 43.5 KB
Newer Older
1 2
#!/usr/bin/make

Xavier Guimard's avatar
Xavier Guimard committed
3 4 5 6 7 8 9 10
# This Makefile contains 2 main sections
#  - Variables
#  - targets

# ---------
# VARIABLES
# ---------

11 12 13
# Prefix for packaging
DESTDIR=

14
# Flag for optimizations
15 16
USEDEBIANLIBS=no
PROD=$(USEDEBIANLIBS)
17
USEEXTERNALLIBS=no
18

Xavier Guimard's avatar
Xavier Guimard committed
19 20 21 22
# Perl options
#PERLOPTIONS="INSTALLDIRS=vendor"
PERLOPTIONS=

23 24 25 26
# Compression
JSCOMPRESS=$(PROD)
CSSCOMPRESS=$(PROD)

Xavier Guimard's avatar
Xavier Guimard committed
27
# External commands
28
PERL=$$(which perl)
29
PERLVERSION=`perl -e '$$version = $$^V; $$version =~ s/v//; print $$version'`
Xavier Guimard's avatar
Xavier Guimard committed
30 31 32
SU=su -c
COMPRESS=tar czf
UNCOMPRESS=tar xzf
Clément OUDOT's avatar
Clément OUDOT committed
33
LISTCOMPRESSED=tar tzf
Xavier Guimard's avatar
Xavier Guimard committed
34
COMPRESSSUFFIX=tar.gz
Xavier Guimard's avatar
Xavier Guimard committed
35
NGINX=/usr/sbin/nginx
36 37

# Default directories install
Xavier Guimard's avatar
Xavier Guimard committed
38 39 40
# ---------------------------

# Common dirs
41 42
PREFIX=/usr/local
LMPREFIX=$(PREFIX)/lemonldap-ng
43
# BIN dirs
44
BINDIR=$(LMPREFIX)/bin
45 46 47
SBINDIR=$(LMPREFIX)/sbin
INITDIR=$(LMPREFIX)/etc/init.d
ETCDEFAULTDIR=$(LMPREFIX)/etc/default
48
DATADIR=$(LMPREFIX)/data
49 50

# Document roots for Apache VirtualHosts
51 52
DOCUMENTROOT=$(LMPREFIX)/htdocs
PORTALDIR=$(DOCUMENTROOT)/portal
53 54
PORTALSITEDIR=$(PORTALDIR)/htdocs
PORTALSTATICDIR=$(PORTALSITEDIR)/static
55
PORTALRELATIVESTATICDIR=/static
56
PORTALTEMPLATESDIR=$(PORTALDIR)/templates
57

58
MANAGERDIR=$(DOCUMENTROOT)/manager
59 60
MANAGERSITEDIR=$(MANAGERDIR)/htdocs
MANAGERSTATICDIR=$(MANAGERSITEDIR)/static
Xavier Guimard's avatar
Xavier Guimard committed
61
MANAGERRELATIVESTATICDIR=/static
62
MANAGERTEMPLATESDIR=$(MANAGERSITEDIR)/templates
63 64 65
DOCDIR=$(DOCUMENTROOT)
DEFDOCDIR=$(DOCUMENTROOT)/doc
FRDOCDIR=$(DOCUMENTROOT)/fr-doc
66 67 68
TESTDIR=$(DOCUMENTROOT)/test
EXAMPLESDIR=$(LMPREFIX)/examples
TOOLSDIR=$(LMPREFIX)/tools
69 70

# Handler dir
71
HANDLERDIR=$(LMPREFIX)/handler
72 73

# Configuration dir
74 75
CONFDIR=$(LMPREFIX)/etc
CRONDIR=$(LMPREFIX)/etc/cron.d
76 77
CONFFILENAME=lemonldap-ng.ini
STORAGECONFFILE=$(CONFDIR)/$(CONFFILENAME)
78

79
# LL::NG configuration storage dir
80
FILECONFIGDIR=$(DATADIR)/conf
81

82
# LL::NG sessions storage dir
83 84
APACHESESSIONFILEDIR=$(DATADIR)/sessions
APACHESESSIONFILELOCKDIR=$(APACHESESSIONFILEDIR)/lock
85

86 87 88 89 90
# LL::NG persistent sessions storage dir
APACHEPSESSIONFILEDIR=$(DATADIR)/psessions
APACHEPSESSIONFILELOCKDIR=$(APACHEPSESSIONFILEDIR)/lock

# LL::NG notifications storage dir
91
APACHEFILENOTIFDIR=$(DATADIR)/notifications
92

93 94
# LL::NG captcha dir
CAPTCHADIR=$(DATADIR)/captcha
95

96
# Apache user/group
97 98
APACHEUSER=
APACHEGROUP=
99 100 101

# FastCGI
FASTCGISOCKDIR=$(PREFIX)/run
102 103
FASTCGIUSER=$(APACHEUSER)
FASTCGIGROUP=$(APACHEGROUP)
104

105
# Apache version
106
APACHEVERSION=2.X
107

108
# DNS Domain for cookie and virtual hosts
109 110
DNSDOMAIN=example.com

111
# Virtual Host Listen IP and Port (*, *:80, ...)
Xavier Guimard's avatar
Xavier Guimard committed
112 113
PORT=80
VHOSTLISTEN="*:$(PORT)"
114
TESTWEBSERVER=apache
Xavier Guimard's avatar
Xavier Guimard committed
115
TESTWEBSERVERPORT=19876
116
TESTUSESSL=0
117

118
# LDAP backend test
119 120 121
LLNGTESTLDAP_SLAPD_BIN=/usr/sbin/slapd
LLNGTESTLDAP_SLAPADD_BIN=/usr/sbin/slapdadd
LLNGTESTLDAP_SCHEMA_DIR=/etc/slapd/schema
122

123
# Other
124 125 126 127
SRCCOMMONDIR=lemonldap-ng-common
SRCHANDLERDIR=lemonldap-ng-handler
SRCPORTALDIR=lemonldap-ng-portal
SRCMANAGERDIR=lemonldap-ng-manager
Xavier Guimard's avatar
Xavier Guimard committed
128 129 130 131 132 133 134 135 136 137 138 139
ERASECONFIG=1 # Set to 0 if you do not want to replace your configuration

# INTERNAL VARIABLES

# Internal variables used to install in $(DESTDIR)
RLMPREFIX=$(DESTDIR)/$(LMPREFIX)
RBINDIR=$(DESTDIR)/$(BINDIR)
RSBINDIR=$(DESTDIR)/$(SBINDIR)
RINITDIR=$(DESTDIR)/$(INITDIR)
RETCDEFAULTDIR=$(DESTDIR)/$(ETCDEFAULTDIR)
RDATADIR=$(DESTDIR)/$(DATADIR)
RPORTALDIR=$(DESTDIR)/$(PORTALDIR)
140 141 142
RPORTALSITEDIR=$(DESTDIR)/$(PORTALSITEDIR)
RPORTALSTATICDIR=$(DESTDIR)/$(PORTALSTATICDIR)
RPORTALTEMPLATESDIR=$(DESTDIR)/$(PORTALTEMPLATESDIR)
Xavier Guimard's avatar
Xavier Guimard committed
143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162
RMANAGERDIR=$(DESTDIR)/$(MANAGERDIR)
RMANAGERSITEDIR=$(DESTDIR)/$(MANAGERSITEDIR)
RMANAGERSTATICDIR=$(DESTDIR)/$(MANAGERSTATICDIR)
RMANAGERTEMPLATESDIR=$(DESTDIR)/$(MANAGERTEMPLATESDIR)
RDOCDIR=$(DESTDIR)/$(DOCDIR)
RDEFDOCDIR=$(DESTDIR)/$(DEFDOCDIR)
RTESTDIR=$(DESTDIR)/$(TESTDIR)
REXAMPLESDIR=$(DESTDIR)/$(EXAMPLESDIR)
RTOOLSDIR=$(DESTDIR)/$(TOOLSDIR)
RHANDLERDIR=$(DESTDIR)/$(HANDLERDIR)
RCONFDIR=$(DESTDIR)/$(CONFDIR)
RCRONDIR=$(DESTDIR)/$(CRONDIR)
RFILECONFIGDIR=$(DESTDIR)/$(FILECONFIGDIR)
RAPACHESESSIONFILEDIR=$(DESTDIR)/$(APACHESESSIONFILEDIR)
RAPACHESESSIONFILELOCKDIR=$(DESTDIR)/$(APACHESESSIONFILELOCKDIR)
RAPACHEPSESSIONFILEDIR=$(DESTDIR)/$(APACHEPSESSIONFILEDIR)
RAPACHEPSESSIONFILELOCKDIR=$(DESTDIR)/$(APACHEPSESSIONFILELOCKDIR)
RFILENOTIFDIR=$(DESTDIR)/$(APACHEFILENOTIFDIR)
RCAPTCHADIR=$(DESTDIR)/$(CAPTCHADIR)
RFASTCGISOCKDIR=$(DESTDIR)/$(FASTCGISOCKDIR)
163 164

VERSION=`head -n1 changelog |sed -e 's/lemonldap-ng (//' -e 's/).*$$//'`
165
PORTALSKINS=`ls $(SRCPORTALDIR)/site/templates/`
166
DIFF=diff -aurN -x '*.tpl' -x '*.bak' -x .svn -x '*.map' -x '*.min.js' -x '*.min.css' -x '*.swp' --ignore-matching-lines='.*jquery.*' --ignore-matching-lines='.*lemonldap-ng\.ini.*'
167 168
DIFFPREFIX=

169

170 171
MANAGERLIBSTOREMOVEFORDEBIAN=$(RMANAGERSTATICDIR)/bwr/jquery/ \
			$(RMANAGERSTATICDIR)/bwr/angular/ \
172
			$(RMANAGERSTATICDIR)/bwr/angular-animate/ \
173 174 175
			$(RMANAGERSTATICDIR)/bwr/angular-cookie/ \
			$(RMANAGERSTATICDIR)/bwr/bootstrap/ \
			$(RMANAGERSTATICDIR)/bwr/es5-shim/
176 177 178 179
PORTALLIBSTOREMOVEFORDEBIAN=$(RPORTALSTATICDIR)/bwr/bootstrap/ \
			$(RPORTALSTATICDIR)/bwr/jquery-ui \
			$(RPORTALSTATICDIR)/bwr/jquery.cookie \
			$(RPORTALSTATICDIR)/bwr/jquery
Xavier Guimard's avatar
Xavier Guimard committed
180 181 182
DOCLIBSTOREMOVEFORDEBIAN=pages/documentation/current/lib/tpl/bootstrap3 \
			pages/documentation/current/lib/scripts/jquery-ui*.js \
			pages/documentation/current/bootswatch/3.3.4/flatly/bootstrap.min.css
Xavier Guimard's avatar
Xavier Guimard committed
183
DOCEXTERNALLIBS=$(DOCLIBSTOREMOVEFORDEBIAN)
184
MANAGEREXTERNALLIBS=$(RMANAGERSTATICDIR)/bwr/
185
PORTALEXTERNALLIBS=$(PORTALLIBSTOREMOVEFORDEBIAN)
186

Xavier Guimard's avatar
Xavier Guimard committed
187
# GENERATED SRC FILES
188
MANAGERJSONSRC= scripts/jsongenerator.pl \
Xavier Guimard's avatar
Xavier Guimard committed
189
		$(SRCMANAGERDIR)/lib/Lemonldap/NG/Manager/Build.pm \
190
		$(SRCMANAGERDIR)/lib/Lemonldap/NG/Manager/Build/Attributes.pm \
191
		$(SRCMANAGERDIR)/lib/Lemonldap/NG/Manager/Build/Tree.pm \
192
		$(SRCMANAGERDIR)/lib/Lemonldap/NG/Manager/Build/CTrees.pm \
193
		$(SRCMANAGERDIR)/lib/Lemonldap/NG/Manager/Conf/Zero.pm
194 195
MANAGERJSONDST=$(SRCMANAGERDIR)/site/htdocs/static/struct.json \
		$(SRCMANAGERDIR)/site/htdocs/static/js/conftree.js \
Xavier Guimard's avatar
Xavier Guimard committed
196
		$(SRCMANAGERDIR)/lib/Lemonldap/NG/Manager/Attributes.pm \
197
		$(SRCCOMMONDIR)/lib/Lemonldap/NG/Common/Conf/ReConstants.pm \
198
		$(SRCCOMMONDIR)/lib/Lemonldap/NG/Common/Conf/DefaultValues.pm \
199
		$(SRCCOMMONDIR)/lib/Lemonldap/NG/Common/Conf/Constants.pm \
200
		_example/conf/lmConf-1.json
201 202

# Javascript and CSS to minify
203 204
JSSRCFILES:=$(shell find */site/htdocs/static/js $(SRCPORTALDIR)/site/htdocs/static -type f -name '*.js' ! -name '*.min.js') \
		$(SRCMANAGERDIR)/site/htdocs/static/bwr/file-saver.js/FileSaver.js
Xavier Guimard's avatar
Xavier Guimard committed
205
CSSSRCFILES:=$(shell find $(SRCMANAGERDIR)/site/htdocs/static  $(SRCPORTALDIR)/site/htdocs/static -type f -name '*.css' ! -name '*.min.css')
206

207
# Coffee files
208 209 210
MANAGERCOFFEESRCFILES:=$(shell find lemonldap-ng-manager/site/coffee -type f -name '*.coffee')
PORTALCOFFEESRCFILES:=$(shell find lemonldap-ng-portal/site/coffee -type f -name '*.coffee')
COFFEESRCFILES=$(MANAGERCOFFEESRCFILES) $(PORTALCOFFEESRCFILES)
211
MANAGERCOFFEEDSTFILES:=$(subst coffee/,htdocs/static/js/,$(MANAGERCOFFEESRCFILES:.coffee=.js))
212 213
PORTALCOFFEEDSTFILES:=$(subst coffee/,htdocs/static/common/js/,$(PORTALCOFFEESRCFILES:.coffee=.js))
COFFEEDSTFILES:=$(MANAGERCOFFEEDSTFILES) $(PORTALCOFFEEDSTFILES)
214

215 216 217
# Minified files
JSDSTFILES=$(JSSRCFILES:.js=.min.js)
CSSDSTFILES=$(CSSSRCFILES:.css=.min.css)
Xavier Guimard's avatar
Xavier Guimard committed
218

Xavier Guimard's avatar
Xavier Guimard committed
219 220 221 222 223
# -------
# TARGETS
# -------

# Targets section contains the following subsections:
224
#  - 'all' that must be defined at first
Xavier Guimard's avatar
Xavier Guimard committed
225 226 227 228 229 230 231 232 233 234
#  - configure targets
#  - make targets
#  - test targets
#  - end-to-end tests
#  - install targets
#  - cleaning targets
#  - Perl libraries uninstall targets
#  - packaging targets
#  - developper corner

235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273
all:	configure common handler manager portal
	@echo
	@echo "Building succeed. Now run :"
	@echo " - 'make test' to verify your installation"
	@echo " - 'make install PROD=yes' to install all"
	@echo
	@echo "    MAKE INSTALL OPTIONS:"
	@echo "    - PROD=yes            : use js/css minified files"
	@echo "    - USEDEBIANLIBS=yes   : use some Debian shared js/css files"
	@echo "    - USEEXTERNALLIBS=yes : use external links for some js/css files"
	@echo
	@echo 'Other targets :'
	@echo " * Partial build :"
	@echo "   - portal, manager, handler"
	@echo
	@echo 'Other targets launched by "make install" :'
	@echo " * Perl libraries install :"
	@echo "   - install_libs           (all Perl libraries)"
	@echo "   - install_portal_libs"
	@echo "   - install_manager_libs"
	@echo "   - install_handler_libs"
	@echo " * Binaries install :"
	@echo "   - install_bin            ($(BINDIR))"
	@echo " * FastCGI server install   (required for Nginx)"
	@echo "   - install_fastcgi_server ($(SBINDIR))"
	@echo " * Web sites install :"
	@echo "   - install_site           (all sites including install_doc_site)"
	@echo "   - install_portal_site    ($(PORTALDIR))"
	@echo "   - install_manager_site   ($(MANAGERDIR))"
	@echo "   - install_handler_site   ($(HANDLERDIR))"
	@echo " * Documentation install :"
	@echo "   - install_doc_site       ($(DEFDOCDIR))"
	@echo "   - install_examples_site  ($(EXAMPLESDIR))"
	@echo
	@echo "Other languages documentation (fr only for now)"
	@echo " - fr-doc                  (needs OmegaT)"
	@echo " - install_fr_doc_site"
	@echo

Xavier Guimard's avatar
Xavier Guimard committed
274 275 276
# Configure targets
# -----------------

277
configure:	common_conf handler_conf portal_conf manager_conf
Xavier Guimard's avatar
Xavier Guimard committed
278

Xavier Guimard's avatar
Xavier Guimard committed
279 280 281
js: $(COFFEEDSTFILES)

minify: js $(JSDSTFILES) $(CSSDSTFILES)
Xavier Guimard's avatar
Xavier Guimard committed
282

283
$(SRCPORTALDIR)/site/htdocs/static/common/js/%.js: $(SRCPORTALDIR)/site/coffee/%.coffee
Xavier Guimard's avatar
Xavier Guimard committed
284 285
	@if which coffee >/dev/null; then \
		echo "Compiling $(SRCPORTALDIR)/site/coffee/$*.coffee"; \
286
		coffee -c -o $(SRCPORTALDIR)/site/htdocs/static/common/js/ $(SRCPORTALDIR)/site/coffee/$*.coffee; \
Xavier Guimard's avatar
Xavier Guimard committed
287 288
	fi

Xavier Guimard's avatar
Typo  
Xavier Guimard committed
289
$(SRCMANAGERDIR)/site/htdocs/static/js/%.js: $(SRCMANAGERDIR)/site/coffee/%.coffee
290 291
	@if which coffee >/dev/null; then \
		echo "Compiling $(SRCMANAGERDIR)/site/coffee/$*.coffee"; \
292
		coffee -c -o $(SRCMANAGERDIR)/site/htdocs/static/js/ $(SRCMANAGERDIR)/site/coffee/$*.coffee; \
293 294
	fi

Xavier Guimard's avatar
Xavier Guimard committed
295 296 297 298 299 300 301 302 303
%.min.css: %.css
	@echo "Compressing $*.css"
	@yui-compressor $*.css > $*.min.css

%.min.js: %.js
	@echo "Compressing $*.js"
	@yui-compressor $*.js > $*.min.js

fastcgi-server/man/llng-fastcgi-server.1p: fastcgi-server/sbin/llng-fastcgi-server
Xavier Guimard's avatar
Xavier Guimard committed
304
	@echo Update FastCGI server man page
Xavier Guimard's avatar
Xavier Guimard committed
305 306 307 308 309
	@pod2man -name llng-fastcgi-server fastcgi-server/sbin/llng-fastcgi-server >fastcgi-server/man/llng-fastcgi-server.1p

# Perl libraries configuration

json:	$(MANAGERJSONDST) fastcgi-server/man/llng-fastcgi-server.1p
310
	@if which yui-compressor >/dev/null; then $(MAKE) minify; fi
Xavier Guimard's avatar
Xavier Guimard committed
311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337

$(MANAGERJSONDST):	$(MANAGERJSONSRC)
	./scripts/jsongenerator.pl

common_conf:	${SRCCOMMONDIR}/Makefile

handler_conf:	${SRCHANDLERDIR}/Makefile

portal_conf:	${SRCPORTALDIR}/Makefile

manager_conf:	${SRCMANAGERDIR}/Makefile

${SRCCOMMONDIR}/Makefile:
	@cd ${SRCCOMMONDIR}; LMNGCONFFILE=$(STORAGECONFFILE) $(PERL) Makefile.PL $(PERLOPTIONS)

${SRCHANDLERDIR}/Makefile:
	@cd ${SRCHANDLERDIR}; $(PERL) Makefile.PL $(PERLOPTIONS)

${SRCPORTALDIR}/Makefile:
	@cd ${SRCPORTALDIR}; $(PERL) Makefile.PL $(PERLOPTIONS)

${SRCMANAGERDIR}/Makefile:
	@cd ${SRCMANAGERDIR}; $(PERL) Makefile.PL $(PERLOPTIONS)

# Make targets
# ------------

338
common:		common_conf
339
	@$(MAKE) -C ${SRCCOMMONDIR}
340

Xavier Guimard's avatar
Xavier Guimard committed
341
handler:	handler_conf common
342
	@$(MAKE) -C ${SRCHANDLERDIR}
343

344
portal:		portal_conf handler
345
	@$(MAKE) -C ${SRCPORTALDIR}
346

Xavier Guimard's avatar
Xavier Guimard committed
347
manager:	manager_conf handler
348
	$(MAKE) -C ${SRCMANAGERDIR}
349

Xavier Guimard's avatar
Xavier Guimard committed
350 351
# Test targets
# ------------
352
test:		all common_test handler_test portal_test manager_test
353 354 355 356

common_test:	common
	@$(MAKE) -C ${SRCCOMMONDIR} test

Xavier Guimard's avatar
Xavier Guimard committed
357
handler_test:	handler
358
	@$(MAKE) -C ${SRCHANDLERDIR} test FULLPERL="$(PERL) -I../${SRCCOMMONDIR}/blib/lib/"
359

Xavier Guimard's avatar
Xavier Guimard committed
360
portal_test:	portal
361
	@$(MAKE) -C ${SRCPORTALDIR} test FULLPERL="$(PERL) -I../${SRCCOMMONDIR}/blib/lib/ -I../${SRCHANDLERDIR}/blib/lib/"
362

Xavier Guimard's avatar
Xavier Guimard committed
363
manager_test:	manager
364
	@$(MAKE) -C ${SRCMANAGERDIR} test FULLPERL="$(PERL) -I../${SRCCOMMONDIR}/blib/lib/ -I../${SRCHANDLERDIR}/blib/lib/"
365

366
# End-to-end tests
Xavier Guimard's avatar
Xavier Guimard committed
367 368
# ----------------

369 370
e2e_test:	all prepare_test_server start_web_server launch_protractor stop_web_server

371 372 373 374 375 376
nox_full_test:	test prepare_test_server start_web_server
	X -noreset +extension GLX +extension RANDR +extension RENDER -logfile ./e2e-tests/conf/X.log -config ./e2e-tests/xorg.conf :11 & \
		echo $$! > e2e-tests/conf/X.pid
	-DISPLAY=:11 $(MAKE) launch_protractor
	kill $$(cat e2e-tests/conf/X.pid)
	$(MAKE) stop_web_server
377

378
prepare_test_server:
379 380
	-@mkdir -p e2e-tests/conf/sessions/lock e2e-tests/conf/persistents/lock
	-@mkdir e2e-tests/conf/manager e2e-tests/conf/portal
381 382
	$(MAKE) install_webserver_conf install_test_site install_fastcgi_server \
		CONFDIR=`pwd`/e2e-tests/conf \
383 384
		RCONFDIR=e2e-tests/conf \
		ERASECONFIG=1 \
Xavier Guimard's avatar
Xavier Guimard committed
385 386
		VHOSTLISTEN='*:$(TESTWEBSERVERPORT)' \
		PORT=$(TESTWEBSERVERPORT) \
Xavier Guimard's avatar
Xavier Guimard committed
387
		FASTCGISOCKDIR=`pwd`/e2e-tests/conf \
Xavier Guimard's avatar
Xavier Guimard committed
388 389 390 391
		PORTALSITEDIR=`pwd`/e2e-tests/conf/portal \
		PORTALSTATICDIR=`pwd`/$(SRCPORTALDIR)/site/htdocs/static \
		MANAGERSITEDIR=`pwd`/e2e-tests/conf/manager \
		MANAGERSTATICDIR=`pwd`/$(SRCMANAGERDIR)/site/htdocs/static \
Xavier Guimard's avatar
Xavier Guimard committed
392
		TESTDIR=`pwd`/e2e-tests/conf/site \
393
		DEFDOCDIR=`pwd`/doc \
394 395 396 397
		FRDOCDIR=`pwd`/po-doc/fr \
		SBINDIR=`pwd`/e2e-tests/conf/sbin \
		INITDIR=`pwd`/e2e-tests/conf/init \
		ETCDEFAULTDIR=`pwd`/e2e-tests/conf/def
398
	#@cp -f e2e-tests/index.* e2e-tests/conf/
Xavier Guimard's avatar
Xavier Guimard committed
399
	@perl -i -pe 's/example\.com/example.com:19876/g' e2e-tests/conf/site/index.pl
400 401
	@cp -f $(SRCMANAGERDIR)/site/htdocs/manager* e2e-tests/conf/manager
	@cp -f $(SRCPORTALDIR)/site/htdocs/index* e2e-tests/conf/portal
402
	@cp e2e-tests/saml-sp.xml e2e-tests/conf/site/saml-sp.xml
403 404 405
	@for f in $$(find e2e-tests/conf -name '*.fcgi'); do \
		perl -i -pe 'if($$.==2){print "BEGIN{\n"; print qq(use lib q('`pwd`'/lemonldap-ng-$$_/blib/lib);\n) foreach qw(common handler portal manager); print "}\n"; }' $$f; \
	done
Xavier Guimard's avatar
Xavier Guimard committed
406
	@cp e2e-tests/lmConf-1.json e2e-tests/lemonldap-ng*.ini e2e-tests/env.conf e2e-tests/test-nginx.conf e2e-tests/conf/
Xavier Guimard's avatar
Xavier Guimard committed
407
	@cp e2e-tests/form.html e2e-tests/conf/site
Xavier Guimard's avatar
Xavier Guimard committed
408
	@perl -i -pe 'BEGIN{$$p=`pwd`;chomp $$p}s#__pwd__#$$p#;s#__port__#$(TESTWEBSERVERPORT)#;s#__FASTCGISOCKDIR__#$(FASTCGISOCKDIR)#;' \
Xavier Guimard's avatar
Xavier Guimard committed
409
		e2e-tests/conf/lemonldap-ng*.ini \
410
		e2e-tests/conf/lmConf-1.json \
411 412
		e2e-tests/conf/env.conf \
		e2e-tests/conf/test-nginx.conf
413 414 415 416
	@if test "$(TESTUSESSL)" = "1"; then \
		perl -i -pe 's#http://(test|mana|auth)#https://$$1#' e2e-tests/conf/lmConf-1.json e2e-tests/conf/handler-apache2.X.conf e2e-tests/conf/site/index.pl; \
		perl -i -pe 's#"https": 0#"https": 1#' e2e-tests/conf/lmConf-1.json; \
	fi
417

Xavier Guimard's avatar
Xavier Guimard committed
418 419 420
e2e-tests/conf/apache2.pid: start_web_server

start_web_server:	all prepare_test_server
Xavier Guimard's avatar
Xavier Guimard committed
421
	# Clean old server if launched
Xavier Guimard's avatar
Hide  
Xavier Guimard committed
422
	@if test "$(TESTBACKEND)" = "DBI"; then \
Xavier Guimard's avatar
Xavier Guimard committed
423 424 425 426 427 428
		echo 'create table lmConfig (cfgNum int, data text);'|sqlite3 e2e-tests/conf/config.db; \
		echo 'create table sessions (id text, a_session text, LastUpdated int);'|sqlite3 e2e-tests/conf/sessions.db; \
		perl -Ilemonldap-ng-common/blib/lib ./lemonldap-ng-common/scripts/convertConfig \
			--current=e2e-tests/conf/lemonldap-ng.ini \
			--new=e2e-tests/conf/lemonldap-ng-sql.ini; \
		mv e2e-tests/conf/lemonldap-ng-sql.ini e2e-tests/conf/lemonldap-ng.ini; \
Xavier Guimard's avatar
Xavier Guimard committed
429 430 431 432 433 434 435 436
		LLNG_DEFAULTCONFFILE=e2e-tests/conf/lemonldap-ng.ini \
			perl -Ilemonldap-ng-common/blib/lib -Ilemonldap-ng-manager/blib/lib -Ilemonldap-ng-handler/blib/lib \
				lemonldap-ng-common/scripts/lemonldap-ng-cli --yes 1 \
				set globalStorage Apache::Session::SQLite3; \
		LLNG_DEFAULTCONFFILE=e2e-tests/conf/lemonldap-ng.ini \
			perl -Ilemonldap-ng-common/blib/lib -Ilemonldap-ng-manager/blib/lib -Ilemonldap-ng-handler/blib/lib \
				lemonldap-ng-common/scripts/lemonldap-ng-cli --yes 1 \
				addKey globalStorageOptions DataSource 'dbi:SQLite:dbname='`pwd`'/e2e-tests/conf/sessions.db'; \
Xavier Guimard's avatar
Xavier Guimard committed
437
	fi
Xavier Guimard's avatar
Tidy  
Xavier Guimard committed
438
	@# Debian: make start_web_server TESTBACKEND=LDAP LLNGTESTLDAP_SCHEMA_DIR=/etc/ldap/schema LLNGTESTLDAP_SLAPADD_BIN=/usr/sbin/slapadd
Xavier Guimard's avatar
Xavier Guimard committed
439
	@if test "$(TESTBACKEND)" = "LDAP"; then \
Xavier Guimard's avatar
Tidy  
Xavier Guimard committed
440 441 442 443 444 445 446 447 448
		cp lemonldap-ng-portal/t/testslapd/slapd.ldif e2e-tests/conf/; \
		mkdir e2e-tests/conf/slapd.d; \
		mkdir e2e-tests/conf/data; \
		sed -i 's:__SCHEMA_DIR__:${LLNGTESTLDAP_SCHEMA_DIR}:' e2e-tests/conf/slapd.ldif; \
		sed -i 's|olcDbDirectory.*|olcDbDirectory: e2e-tests/conf/data|' e2e-tests/conf/slapd.ldif; \
		sed -i 's|olcPidFile.*|olcPidFile: e2e-tests/conf/slapd.pid|' e2e-tests/conf/slapd.ldif; \
		${LLNGTESTLDAP_SLAPADD_BIN} -F e2e-tests/conf/slapd.d -n 0 -l e2e-tests/conf/slapd.ldif; \
		${LLNGTESTLDAP_SLAPADD_BIN} -F e2e-tests/conf/slapd.d -n 1 -l lemonldap-ng-portal/t/testslapd/confs-sessions.ldif; \
		${LLNGTESTLDAP_SLAPD_BIN} -s 511 -h "ldap://127.0.0.1:20389/" -F e2e-tests/conf/slapd.d; \
449 450 451 452
		perl -Ilemonldap-ng-common/blib/lib ./lemonldap-ng-common/scripts/convertConfig \
			--current=e2e-tests/conf/lemonldap-ng.ini \
			--new=e2e-tests/conf/lemonldap-ng-ldap.ini; \
		mv e2e-tests/conf/lemonldap-ng-ldap.ini e2e-tests/conf/lemonldap-ng.ini; \
Xavier Guimard's avatar
Tidy  
Xavier Guimard committed
453
	fi
454 455
	-@[ -e e2e-tests/conf/apache2.pid ] && kill `cat e2e-tests/conf/apache2.pid` || true
	-@[ -e e2e-tests/conf/nginx.pid ]   && kill `cat e2e-tests/conf/nginx.pid` || true
456
	-@[ -e e2e-tests/conf/llng-fastcgi.pid ] && kill `cat e2e-tests/conf/llng-fastcgi.pid` && rm -f e2e-tests/conf/llng-fastcgi.pid || true
457
	# Start web server (designed for Debian, path may be broken else)
Xavier Guimard's avatar
Xavier Guimard committed
458
	@if test "$(TESTWEBSERVER)" = "apache"; then \
459 460 461 462 463 464
		if test "$(TESTUSESSL)" = "1"; then \
			APACHEARGS=-DUseSSL; \
		else \
			APACHEARGS=; \
		fi; \
		LLNG_DEFAULTCONFFILE=`pwd`/e2e-tests/conf/lemonldap-ng.ini /usr/sbin/apache2 -d `pwd`/e2e-tests -f apache2.conf $$APACHEARGS -k start; \
465
	elif test "$(TESTWEBSERVER)" = "nginx"; then \
Xavier Guimard's avatar
Xavier Guimard committed
466 467 468 469 470
		echo "Testing nginx conf"; \
		$(NGINX) -t -p `pwd`/e2e-tests \
			-g 'error_log '`pwd`'/e2e-tests/conf/nginx.log;' \
			-c `pwd`/e2e-tests/nginx.conf \
			2>&1 | grep -v 'Permission denied' || true; \
471 472
		echo "Launching nginx"; \
		$(NGINX) -p `pwd`/e2e-tests \
473
			-g 'error_log '`pwd`'/e2e-tests/conf/nginx.log;' \
474 475
			-c `pwd`/e2e-tests/nginx.conf \
			2>&1 | grep -v 'Permission denied' || true; \
476
		echo "Launching plackup"; \
Xavier Guimard's avatar
Xavier Guimard committed
477
		$(MAKE) plackup; \
478 479 480 481 482
	else \
		echo "!!!!! Unknown test server: $(TESTWEBSERVER) !!!!!" >&2; \
		exit 1; \
	fi
		
483

Xavier Guimard's avatar
Xavier Guimard committed
484
reload_web_server:
485
	@if [ -e e2e-tests/conf/apache2.pid ]; then \
Xavier Guimard's avatar
Xavier Guimard committed
486 487
		LLNG_DEFAULTCONFFILE=`pwd`/e2e-tests/conf/lemonldap-ng.ini \
		/usr/sbin/apache2 -d `pwd`/e2e-tests -f apache2.conf -k graceful; \
488 489
	elif [ -e e2e-tests/conf/nginx.pid ]; then \
		kill -HUP `cat e2e-tests/conf/nginx.pid`; \
490
		kill `cat e2e-tests/conf/llng-fastcgi.pid` || true; \
Xavier Guimard's avatar
Xavier Guimard committed
491
		$(MAKE) plackup; \
492 493 494 495
	else \
		$(MAKE) start_web_server; \
	fi

496
launch_protractor:
497
	# Start e2e tests
Xavier Guimard's avatar
Xavier Guimard committed
498
	# NB: you must have protractor installed (using npm install -g protractor)
Xavier Guimard's avatar
Xavier Guimard committed
499
	# and have run update-webdriver at least once and have a node.js > 4.0
Xavier Guimard's avatar
Xavier Guimard committed
500
	@TESTWEBSERVERPORT=$(TESTWEBSERVERPORT) protractor e2e-tests/protractor-conf.js
501 502 503

stop_web_server:
	# Stop web server
504 505
	-@[ -e e2e-tests/conf/apache2.pid ] && kill `cat e2e-tests/conf/apache2.pid` || true
	-@[ -e e2e-tests/conf/nginx.pid ]   && kill `cat e2e-tests/conf/nginx.pid` ||true
506
	-@[ -e e2e-tests/conf/llng-fastcgi.pid ] && kill `cat e2e-tests/conf/llng-fastcgi.pid` && rm -f e2e-tests/conf/llng-fastcgi.pid || true
507
	-@[ -e e2e-tests/conf/slapd.pid ] && kill `cat e2e-tests/conf/slapd.pid` || true
508
	# Clean
509
	@rm -rf e2e-tests/conf
510

511 512
restart_web_server: start_web_server

Xavier Guimard's avatar
Xavier Guimard committed
513
plackup:
Xavier Guimard's avatar
Xavier Guimard committed
514
	@LLNG_DEFAULTCONFFILE=`pwd`/e2e-tests/conf/lemonldap-ng.ini \
Xavier Guimard's avatar
Xavier Guimard committed
515
	perl -I . -I`pwd`/lemonldap-ng-common/blib/lib/ \
516 517 518 519 520
			-I`pwd`/lemonldap-ng-handler/blib/lib/ \
			-I`pwd`/lemonldap-ng-portal/blib/lib/ \
			-I`pwd`/lemonldap-ng-manager/blib/lib/ \
		e2e-tests/conf/sbin/llng-fastcgi-server \
			-F >e2e-tests/conf/fastcgi.log 2>&1 &
Xavier Guimard's avatar
Xavier Guimard committed
521

Xavier Guimard's avatar
Xavier Guimard committed
522 523 524
install_test:
	@TESTWEBSERVERPORT=$(PORT) protractor e2e-tests/protractor-conf.js

Xavier Guimard's avatar
Xavier Guimard committed
525 526
# Install targets
# ---------------
Xavier Guimard's avatar
Xavier Guimard committed
527
install:	install_libs install_bin install_fastcgi_server install_site
528

529
# Perl libraires install
Xavier Guimard's avatar
Xavier Guimard committed
530

Xavier Guimard's avatar
Xavier Guimard committed
531
install_libs:	common_install_libs install_handler_libs install_portal_libs install_manager_libs
532 533

common_install_libs:		common
534
	@$(MAKE) -C ${SRCCOMMONDIR} install
535

536
install_handler_libs:	handler
537
	@$(MAKE) -C ${SRCHANDLERDIR} install
538

539
install_portal_libs:		portal
540
	@$(MAKE) -C ${SRCPORTALDIR} install
541

542
install_manager_libs:	manager
543
	@$(MAKE) -C ${SRCMANAGERDIR} install
544

Xavier Guimard's avatar
Xavier Guimard committed
545
install_bin:	install_conf_dir
546 547
	# Binary install
	@install -v -d $(RBINDIR)
548
	@cp -f\
549
		${SRCHANDLERDIR}/example/scripts/purgeLocalCache \
550
		${SRCPORTALDIR}/site/cron/purgeCentralCache \
Xavier Guimard's avatar
Xavier Guimard committed
551
		${SRCCOMMONDIR}/scripts/convertConfig \
Xavier Guimard's avatar
Xavier Guimard committed
552
		${SRCCOMMONDIR}/scripts/lmMigrateConfFiles2ini \
553
		${SRCCOMMONDIR}/scripts/rotateOidcKeys \
Xavier Guimard's avatar
Xavier Guimard committed
554
		${SRCMANAGERDIR}/scripts/lmConfigEditor \
Xavier Guimard's avatar
Xavier Guimard committed
555
		${SRCCOMMONDIR}/scripts/lemonldap-ng-cli \
556
			$(RBINDIR)
557
	@if [ ! "$(APACHEUSER)" ]; then \
558
		$(PERL) -i -pe 's#__APACHEUSER__#nobody#g;' $(RBINDIR)/lmConfigEditor $(RBINDIR)/lemonldap-ng-cli; \
559
	else \
560
		$(PERL) -i -pe 's#__APACHEUSER__#$(APACHEUSER)#g;' $(RBINDIR)/lmConfigEditor $(RBINDIR)/lemonldap-ng-cli; \
561 562
	fi
	@if [ ! "$(APACHEGROUP)" ]; then \
563
		$(PERL) -i -pe 's#__APACHEGROUP__#nobody#g;' $(RBINDIR)/lmConfigEditor $(RBINDIR)/lemonldap-ng-cli; \
564
	else \
565
		$(PERL) -i -pe 's#__APACHEGROUP__#$(APACHEGROUP)#g;' $(RBINDIR)/lmConfigEditor $(RBINDIR)/lemonldap-ng-cli; \
566
	fi
567
	@chmod +x $(RBINDIR)/*
568

569
install_fastcgi_server:
570
	@install -v -d $(RSBINDIR) $(RINITDIR) $(RETCDEFAULTDIR) $(RFASTCGISOCKDIR)
571
	@cp -f fastcgi-server/sbin/llng-fastcgi-server $(RSBINDIR)
572
	@chmod +x $(RSBINDIR)/llng-fastcgi-server
573 574
	@cp -f fastcgi-server/rc/llng-fastcgi-server $(RINITDIR)
	@cp -f fastcgi-server/default/llng-fastcgi-server $(RETCDEFAULTDIR)
575
	@$(PERL) -pi -e 's#__SBINDIR__#$(SBINDIR)#;s#__DEFAULTDIR__#$(ETCDEFAULTDIR)#;s#__FASTCGISOCKDIR__#$(FASTCGISOCKDIR)#g;' \
576 577
		$(RETCDEFAULTDIR)/llng-fastcgi-server \
		$(RSBINDIR)/llng-fastcgi-server \
578
		$(RINITDIR)/llng-fastcgi-server
579 580 581 582 583 584
	@if [ ! "$(FASTCGIUSER)" ]; then \
		$(PERL) -pi -e 's#__USER__#nobody#' $(RETCDEFAULTDIR)/llng-fastcgi-server; \
	else \
		$(PERL) -pi -e 's#__USER__#$(FASTCGIUSER)#' $(RETCDEFAULTDIR)/llng-fastcgi-server; \
	fi
	@if [ ! "$(FASTCGIGROUP)" ]; then \
585
		$(PERL) -pi -e 's#__GROUP__#nobody#' $(RETCDEFAULTDIR)/llng-fastcgi-server; \
586
	else \
587
		$(PERL) -pi -e 's#__GROUP__#$(FASTCGIGROUP)#' $(RETCDEFAULTDIR)/llng-fastcgi-server; \
588
	fi
589
	@if [ "$(FASTCGIUSER)" != "" ]; then \
590 591 592 593 594 595 596 597
		chown $(FASTCGIUSER) $(RFASTCGISOCKDIR) || exit 1; \
		if [ "$(FASTCGIGROUP)" != "" ]; then \
			chgrp $(FASTCGIGROUP) $(RFASTCGISOCKDIR) || exit 1; \
		fi; \
		chmod 770 $(RFASTCGISOCKDIR); \
	else \
		chmod 777 $(RFASTCGISOCKDIR); \
	fi
598

Xavier Guimard's avatar
Xavier Guimard committed
599 600
# Site install

601
install_site:	install_manager_site install_portal_site install_handler_site install_test_site install_examples_site install_doc_site install_webserver_conf
602
	# Site install
603
	@install -v -d $(RCONFDIR)
Clément OUDOT's avatar
Clément OUDOT committed
604 605
	# Check if erase is wanted
	@if [ "$(ERASECONFIG)" -eq "1" ]; then \
606
		cp -f _example/etc/for_etc_hosts $(RCONFDIR); \
607
	fi
Xavier Guimard's avatar
Xavier Guimard committed
608
	@$(PERL) -i -pe 's/__DNSDOMAIN__/$(DNSDOMAIN)/g' $(RCONFDIR)/for_etc_hosts
609
	# Fix a lost of rights on the main directory
610
	@chmod 755 $(RBINDIR) $(RDOCUMENTROOT) $(REXAMPLESDIR) $(RHANDLERDIR) $(RPORTALSTATICDIR) $(RMANAGERSITEDIR) $(RTOOLSDIR) $(RCONFDIR) $(RDATADIR)
611
	@echo
612
	@echo "LemonLDAP::NG v${VERSION} is installed with these parameters:"
613 614 615 616 617
	@echo "  - System configuration: ${CONFDIR}"
	@echo "  - DNS domain (for cookies and virtual hosts): ${DNSDOMAIN}"
	@echo
	@echo "To finish configuration:"
	@echo
618 619 620 621
	@echo "1 - Add this in your Apache $(APACHEVERSION) configuration file:"
	@echo "      include ${CONFDIR}/portal-apache$(APACHEVERSION).conf"
	@echo "      include ${CONFDIR}/handler-apache$(APACHEVERSION).conf"
	@echo "      include ${CONFDIR}/manager-apache$(APACHEVERSION).conf"
622
	@echo "      include ${CONFDIR}/test-apache$(APACHEVERSION).conf"
623
	@echo
624 625
	@echo "2 - Restart Apache:"
	@echo "      apache$(APACHEVERSION)ctl restart"
626
	@echo
627
	@echo "3 - Run 'make postconf' as root to update /etc/hosts if your DNS service does not known auth.$(DNSDOMAIN) and manager.$(DNSDOMAIN)"
628
	@echo
629 630 631 632 633 634
	@echo "4 - Try to connect to http://test1.${DNSDOMAIN}/ or http://test2.${DNSDOMAIN}/ with demonstration accounts:"
	@echo "    - rtyler/rtyler"
	@echo "    - msmith/msmith"
	@echo "    - dwho/dwho"
	@echo
	@echo "5 - Connect to Manager at http://manager.${DNSDOMAIN}/ to edit configuration"
635
	@echo
636
	@if [ ! "$(APACHEUSER)" ]; then \
637
		echo;echo "    Warning, since APACHEUSER was not set, $(APACHESESSIONFILEDIR), $(APACHEPSESSIONFILEDIR), $(CAPTCHADIR) and $(CONFDIR) have permissive permissions."; \
638 639 640
		echo "    Fix them by yourself to restrict their view to apache process only"; \
	fi
	@echo
641

642 643 644
install_webserver_conf:
	@install -m 755 -v -d $(RCONFDIR)
	@if [ "$(ERASECONFIG)" -eq "1" ]; then \
645 646 647 648 649
		cp -f _example/etc/portal-apache$(APACHEVERSION).conf $(RCONFDIR); \
		cp -f _example/etc/handler-apache$(APACHEVERSION).conf $(RCONFDIR); \
		cp -f _example/etc/manager-apache$(APACHEVERSION).conf $(RCONFDIR); \
		cp -f _example/etc/test-apache$(APACHEVERSION).conf $(RCONFDIR); \
		cp -f _example/etc/*nginx*.conf $(RCONFDIR); \
650 651 652
	fi
	@$(PERL) -i -pe 's/__DNSDOMAIN__/$(DNSDOMAIN)/g; \
			s#__PORTALDIR__#$(PORTALDIR)/#g; \
Xavier Guimard's avatar
Xavier Guimard committed
653
			s#__PORTALSITEDIR__#$(PORTALSITEDIR)/#g; \
654
			s#__PORTALSTATICDIR__#$(PORTALSTATICDIR)/#g; \
655
			s#__MANAGERDIR__#$(MANAGERDIR)/#g; \
Xavier Guimard's avatar
Xavier Guimard committed
656
			s#__MANAGERSITEDIR__#$(MANAGERSITEDIR)/#g; \
657 658
			s#__MANAGERSTATICDIR__#$(MANAGERSTATICDIR)/#g; \
			s#__TESTDIR__#$(TESTDIR)/#g; \
Xavier Guimard's avatar
Xavier Guimard committed
659
			s#__PORT__#$(PORT)#g; \
660
			s#__CONFDIR__#$(CONFDIR)#g; \
Xavier Guimard's avatar
Xavier Guimard committed
661
			s#__FASTCGISOCKDIR__#$(FASTCGISOCKDIR)#g; \
662 663 664 665
			s#__VHOSTLISTEN__#$(VHOSTLISTEN)#g; \
			s#__DEFDOCDIR__#$(DEFDOCDIR)/#g; \
			s#__FRDOCDIR__#$(FRDOCDIR)/#g;' $(RCONFDIR)/*apache*.conf $(RCONFDIR)/*nginx*.conf

666 667
install_manager_site:	install_conf_dir
	# Manager install
668
	@install -v -d $(RMANAGERDIR) $(RMANAGERSTATICDIR) \
669
		$(RMANAGERTEMPLATESDIR)
670
	@cp -pR -f $(SRCMANAGERDIR)/site/htdocs/manager.* $(RMANAGERSITEDIR)
671
	@cp -pR $(SRCMANAGERDIR)/site/htdocs/static/* $(RMANAGERSTATICDIR)
672
	@for f in $(SRCMANAGERDIR)/site/templates/*.tpl; do \
673 674 675 676 677
		./scripts/transform-templates \
			usedebianlibs $(USEDEBIANLIBS) \
			useexternallibs $(USEEXTERNALLIBS) \
			jsminified $(JSCOMPRESS) \
			cssminified $(CSSCOMPRESS) <$$f \
678 679
			> $(RMANAGERTEMPLATESDIR)/`basename $$f`; \
	done
680
	@if test "$(USEEXTERNALLIBS)" = "yes"; then \
681
		rm -rvf $(MANAGEREXTERNALLIBS); \
682
	elif test "$(USEDEBIANLIBS)" = "yes"; then \
683 684
		rm -rvf $(MANAGERLIBSTOREMOVEFORDEBIAN); \
	fi
685
	# Clean svn files
686
	@rm -rf $$(find ${RMANAGERSTATICDIR} \
687
		$(RMANAGERTEMPLATESDIR) $(RCONFDIR) -type d -name .svn)
688 689
	@$(PERL) -i -pe 's#__MANAGERSTATICDIR__#$(MANAGERRELATIVESTATICDIR)#g' $(RCONFDIR)/$(CONFFILENAME)
	@$(PERL) -i -pe 's#__MANAGERTEMPLATESDIR__#$(MANAGERTEMPLATESDIR)#g' $(RCONFDIR)/$(CONFFILENAME)
690 691 692

install_portal_site:	install_conf_dir
	# Portal install
693
	@install -v -d $(RPORTALDIR) $(RPORTALSTATICDIR) \
Xavier Guimard's avatar
Xavier Guimard committed
694
		$(RPORTALTEMPLATESDIR) \
695
		$(RCRONDIR) $(RCONFDIR)
696
	@cp -pR -f $(SRCPORTALDIR)/site/htdocs/index.* $(RPORTALSITEDIR)
697
	@cp -pR -f $(SRCPORTALDIR)/site/htdocs/static/* $(RPORTALSTATICDIR)
698
	@cd $(SRCPORTALDIR)/site/templates; for f in `find * -type f -name '*.tpl'`; do \
Xavier Guimard's avatar
Xavier Guimard committed
699 700
		echo "$$f => $(RPORTALTEMPLATESDIR)/$$f"; \
		mkdir -p $(RPORTALTEMPLATESDIR)/`dirname $$f`; \
Xavier Guimard's avatar
Xavier Guimard committed
701
		../../../scripts/transform-templates \
702 703 704 705
			usedebianlibs $(USEDEBIANLIBS) \
			useexternallibs $(USEEXTERNALLIBS) \
			jsminified $(JSCOMPRESS) \
			cssminified $(CSSCOMPRESS) <$$f \
Xavier Guimard's avatar
Xavier Guimard committed
706 707
			>$(RPORTALTEMPLATESDIR)/$$f; \
	done; cd -
708 709 710 711 712
	@cd $(SRCPORTALDIR)/site/templates; for f in `find * -type f ! -name '*.tpl'`; do \
		mkdir -p $(RPORTALTEMPLATESDIR)/`dirname $$f`; \
		install -v $$f $(RPORTALTEMPLATESDIR)/$$f; \
	done; cd -
	@cd $(SRCPORTALDIR)/site/templates; for l in `find * -type l`; do \
Xavier Guimard's avatar
Xavier Guimard committed
713
		echo link to do $$l `readlink $$l`; \
Xavier Guimard's avatar
Xavier Guimard committed
714 715 716 717
		target=`readlink $$l`; \
		cd $(RPORTALTEMPLATESDIR); \
		ln -s $$target $$l; \
		cd -; \
718
	done
Xavier Guimard's avatar
Xavier Guimard committed
719
	if test "$(USEEXTERNALLIBS)" = "yes"; then \
720
		rm -rvf $(PORTALEXTERNALLIBS); \
721
	elif test "$(USEDEBIANLIBS)" = "yes"; then \
722 723
		rm -rvf $(PORTALLIBSTOREMOVEFORDEBIAN); \
	fi
724
	# Cron files
725
	@cp -f $(SRCPORTALDIR)/site/cron/purgeCentralCache.cron.d $(RCRONDIR)/lemonldap-ng-portal
726
	@if [ ! "$(APACHEUSER)" ]; then \
727
		$(PERL) -i -pe 's#__APACHEUSER__#nobody#g;' $(RCRONDIR)/lemonldap-ng-portal; \
728
	else \
729
		$(PERL) -i -pe 's#__APACHEUSER__#$(APACHEUSER)#g;' $(RCRONDIR)/lemonldap-ng-portal; \
730
	fi
731
	@$(PERL) -i -pe 's#__BINDIR__#$(BINDIR)#g;' $(RCRONDIR)/lemonldap-ng-portal
732
	# Clean SVN files
733
	@rm -rf $$(find ${RPORTALDIR} $(RPORTALSKINSDIR) $(RCRONDIR) $(RCONFDIR) -type d -name .svn)
Xavier Guimard's avatar
Xavier Guimard committed
734 735
	@$(PERL) -i -pe 's#__PORTALSTATICDIR__#$(PORTALRELATIVESTATICDIR)#g' $(RCONFDIR)/$(CONFFILENAME)
	@$(PERL) -i -pe 's#__PORTALTEMPLATESDIR__#$(PORTALTEMPLATESDIR)#g' $(RCONFDIR)/$(CONFFILENAME)
736 737

install_handler_site:	install_conf_dir
738
	# Handler install
739
	@install -v -d ${RHANDLERDIR}
740
	@cp -f $(SRCHANDLERDIR)/example/scripts/purgeLocalCache.cron.d $(RCRONDIR)/lemonldap-ng-handler
741
	@if [ ! "$(APACHEUSER)" ]; then \
742
		$(PERL) -i -pe 's#__APACHEUSER__#nobody#g;' $(RCRONDIR)/lemonldap-ng-handler; \
743 744 745 746
	else \
		$(PERL) -i -pe 's#__APACHEUSER__#$(APACHEUSER)#g;' $(RCRONDIR)/lemonldap-ng-handler; \
	fi
	@$(PERL) -i -pe 's#__BINDIR__#$(BINDIR)#g;' $(RCRONDIR)/lemonldap-ng-handler
747
	@rm -rf $$(find $(RHANDLERDIR) -type d -name .svn)
748 749

install_test_site:
750
	# Test site install
751
	@install -v -d $(RTESTDIR)
752
	@cp -pR -f _example/test/* $(RTESTDIR)
753
	@rm -rf $$(find $(RTESTDIR) -type d -name .svn)
Xavier Guimard's avatar
Xavier Guimard committed
754
	@$(PERL) -i -pe 's/__DNSDOMAIN__/$(DNSDOMAIN)/g' $(RTESTDIR)/index.pl
755
	@rm -rf $$(find $(RTESTDIR) -type d -name .svn)
756 757

install_examples_site:
758
	# Examples install
759
	@install -v -d $(REXAMPLESDIR)
760
	@for i in handler; do \
761
		cp -a -f lemonldap-ng-$$i/example $(REXAMPLESDIR)/$$i; \
762
	done
763
	@for i in portal manager; do \
764
		cp -a -f lemonldap-ng-$$i/eg $(REXAMPLESDIR)/$$i; \
765
	done
766
	@rm -rf $(REXAMPLESDIR)/portal/skins \
Xavier Guimard's avatar
Xavier Guimard committed
767
		$(REXAMPLESDIR)/manager/skins \
768
	@rm -rf $$(find $(REXAMPLESDIR) -type d -name .svn)
769

770
install_doc_site:
771
	# Offline documentation install
772
	@rm -rf $(RDEFDOCDIR)
773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791
	# Install doc directories
	@install -v -d -m 755 $(RDEFDOCDIR)
	@cd doc && find * -type d |(cd $(RDEFDOCDIR); xargs install -v -d -m 755) && cd -
	# Install HTML files
	@cd doc && for f in `find * -type f -name '*.html'`; do \
		echo "Installing $$f"; \
		../scripts/transform-templates \
			usedebianlibs $(USEDEBIANLIBS) \
			useexternallibs $(USEEXTERNALLIBS) \
			jsminified $(JSCOMPRESS) \
			cssminified $(CSSCOMPRESS) <$$f \
		> $(RDEFDOCDIR)/$$f; \
	done && cd -
	# Install other files
	@cd doc && for f in `find * -type f ! -name '*.html'`; do \
		install -v -m 644 $$f $(RDEFDOCDIR)/$$f; \
	done && cd -
	# Install symlinks
	@cd doc && tar cf - `find * -type l` | tar xvf - -C $(RDEFDOCDIR) && cd -
Xavier Guimard's avatar
Xavier Guimard committed
792
	# Remove js
Xavier Guimard's avatar
Xavier Guimard committed
793
	@cd $(RDEFDOCDIR) && if test "$(USEEXTERNALLIBS)" = "yes"; then \
Xavier Guimard's avatar
Xavier Guimard committed
794 795 796
		rm -rvf $(DOCEXTERNALLIBS); \
	elif test "$(USEDEBIANLIBS)" = "yes"; then \
		rm -rvf $(DOCLIBSTOREMOVEFORDEBIAN); \
Xavier Guimard's avatar
Xavier Guimard committed
797
	fi && cd -
798

799
install_conf_dir:	install_sessions_dir install_notif_dir install_captcha_dir
800
	# Configuration files install
801
	@install -v -d $(RCONFDIR) $(RFILECONFIGDIR) $(RTOOLSDIR)
Clément OUDOT's avatar
Clément OUDOT committed
802
	@if [ "$(ERASECONFIG)" -eq "1" ]; then \
803
		cp -f $(SRCCOMMONDIR)/$(CONFFILENAME) $(RCONFDIR); \
Xavier Guimard's avatar
Xavier Guimard committed
804
		$(PERL) -i -pe 's#^dirName\s*=\s*.*#dirName = $(FILECONFIGDIR)#g' $(RCONFDIR)/$(CONFFILENAME); \
Clément OUDOT's avatar
Clément OUDOT committed
805
	fi
806
	@cp _example/conf/lmConf-1.json $(RFILECONFIGDIR)
Xavier Guimard's avatar
Xavier Guimard committed
807
	@$(PERL) -i -pe 's/__DNSDOMAIN__/$(DNSDOMAIN)/g;\
808
		s#__SESSIONDIR__#$(APACHESESSIONFILEDIR)#g;\
809
		s#__PSESSIONDIR__#$(APACHEPSESSIONFILEDIR)#g;\
810
		s#__NOTIFICATIONDIR__#$(APACHEFILENOTIFDIR)#g;' $(RFILECONFIGDIR)/lmConf-1.json
811 812 813 814 815 816 817 818 819
	@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
820 821
	@cp $(SRCCOMMONDIR)/tools/lmConfig.* $(SRCCOMMONDIR)/tools/apache-session-mysql.sql $(RTOOLSDIR)
	@cp $(SRCCOMMONDIR)/tools/sso.schema $(RTOOLSDIR)
822
	$(PERL) -i -pe 's/__DNSDOMAIN__/$(DNSDOMAIN)/g' $(RCONFDIR)/$(CONFFILENAME)
823
	@rm -rf $$(find $(RCONFDIR) $(RFILECONFIGDIR) $(RTOOLSDIR) -type d -name .svn)
824 825

install_sessions_dir:
826
	@install -m 777 -v -d $(RAPACHESESSIONFILEDIR) $(RAPACHESESSIONFILELOCKDIR) $(RAPACHEPSESSIONFILEDIR) $(RAPACHEPSESSIONFILELOCKDIR)
827 828
	# Fix Apache::Session directories permissions
	@if [ "$(APACHEUSER)" != "" ]; then \
829
		chown $(APACHEUSER) $(RAPACHESESSIONFILEDIR) $(RAPACHESESSIONFILELOCKDIR) $(RAPACHEPSESSIONFILEDIR) $(RAPACHEPSESSIONFILELOCKDIR) || exit 1; \
830
		if [ "$(APACHEGROUP)" != "" ]; then \
831
			chgrp $(APACHEGROUP) $(RAPACHESESSIONFILEDIR) $(RAPACHESESSIONFILELOCKDIR) $(RAPACHEPSESSIONFILEDIR) $(RAPACHEPSESSIONFILELOCKDIR) || exit 1; \
832
		fi; \
833
		chmod 770 $(RAPACHESESSIONFILEDIR) $(RAPACHESESSIONFILELOCKDIR) $(RAPACHEPSESSIONFILEDIR) $(RAPACHEPSESSIONFILELOCKDIR); \
834
	else \
835
		chmod 777 $(RAPACHESESSIONFILEDIR) $(RAPACHESESSIONFILELOCKDIR) $(RAPACHEPSESSIONFILEDIR) $(RAPACHEPSESSIONFILELOCKDIR); \
836 837
	fi

838 839 840 841 842 843 844 845 846 847 848 849 850
install_notif_dir:
	@install -m 777 -v -d $(RFILENOTIFDIR)
	# Fix notifications directory permissions
	@if [ "$(APACHEUSER)" != "" ]; then \
		chown $(APACHEUSER) $(RFILENOTIFDIR) || exit 1; \
		if [ "$(APACHEGROUP)" != "" ]; then \
			chgrp $(APACHEGROUP) $(RFILENOTIFDIR) || exit 1; \
		fi; \
		chmod 770 $(RFILENOTIFDIR); \
	else \
		chmod 777 $(RFILENOTIFDIR); \
	fi

851
install_captcha_dir:
852
	@install -m 777 -v -d $(RCAPTCHADIR)
853 854
	# Fix captcha directory permissions
	@if [ "$(APACHEUSER)" != "" ]; then \
855
		chown $(APACHEUSER) $(RCAPTCHADIR) || exit 1; \
856
		if [ "$(APACHEGROUP)" != "" ]; then \
857
			chgrp $(APACHEGROUP) $(RCAPTCHADIR) || exit 1; \
858
		fi; \
859
		chmod 770 $(RCAPTCHADIR); \
860
	else \
861
		chmod 777 $(RCAPTCHADIR); \
862 863
	fi

864
postconf_hosts:
Clément OUDOT's avatar
Clément OUDOT committed
865
	@cat ${CONFDIR}/for_etc_hosts >> /etc/hosts
866 867
	@echo "/etc/hosts was updated"

868
postconf: postconf_hosts
869 870
	@echo "Post configuration done"

Xavier Guimard's avatar
Xavier Guimard committed
871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911
debian-install:
	@echo "You have now to choose between:"
	@echo " - make debian-install-for-apache"
	@echo " - make ubuntu-install-for-apache"
	@echo " - make debian-install-for-nginx"
	@echo " - make ubuntu-install-for-nginx"
	@echo
	@echo "All packages will be built in /tmp/ but only those needed by the"
	@echo "server you will choose will be installed"
	@exit 1

debian-install-for-apache: debian-packages
	perl -i -ne 'next if/fastcgi.*deb$$/;s/lemonldap-ng-fastcgi-server//;print' /tmp/lemonldap-ng_$(VERSION)*.changes
	cd /tmp/lemonldap-ng-$(VERSION) && \
	$(SU) debi

debian-install-for-nginx: debian-packages
	cd /tmp/lemonldap-ng-$(VERSION) && \
	$(SU) debi

ubuntu-install: debian-install

ubuntu-install-for-apache:
	$(MAKE) debian-install-for-apache SU=sudo

ubuntu-install-for-nginx:
	$(MAKE) debian-install-for-nginx SU=sudo

# Cleaning targets
# ----------------

distclean:	clean

clean:		common_clean handler_clean portal_clean manager_clean omegat-clean stop_web_server
	@rm -f $$(find */ -name '*bak' -delete)
	@rm -rf doc/devel
	@rm -vf *gz *zip
	@rm -rf lemonldap-ng-$(VERSION)
	@echo "Cleaned"

common_clean:
912
	-@if test -e ${SRCCOMMONDIR}/Makefile;then $(MAKE) -C ${SRCCOMMONDIR} distclean;fi
Xavier Guimard's avatar
Xavier Guimard committed
913 914 915
	@rm -vf common*

handler_clean:
916
	-@if test -e ${SRCHANDLERDIR}/Makefile;then $(MAKE) -C ${SRCHANDLERDIR} distclean;fi
Xavier Guimard's avatar
Xavier Guimard committed
917 918 919
	@rm -vf handler*

portal_clean:
920
	-@if test -e ${SRCPORTALDIR}/Makefile;then $(MAKE) -C ${SRCPORTALDIR} distclean;fi
Xavier Guimard's avatar
Xavier Guimard committed
921 922 923
	@rm -vf portal*

manager_clean:
924
	-@if test -e ${SRCMANAGERDIR}/Makefile;then $(MAKE) -C ${SRCMANAGERDIR} distclean;fi
Xavier Guimard's avatar
Xavier Guimard committed
925 926 927 928 929
	@rm -vf manager*

# Perl libraries uninstall targets
# --------------------------------

930 931
uninstall:	configure handler_uninstall portal_uninstall manager_uninstall

932 933 934 935
common_uninstall:	common
	@$(MAKE) -C ${SRCCOMMONDIR} uninstall
	@rm -vf common_uninstall

936
handler_uninstall:	handler
937
	@$(MAKE) -C ${SRCHANDLERDIR} uninstall
938
	@rm -vf handler_uninstall
939 940

portal_uninstall:		portal
941
	@$(MAKE) -C ${SRCPORTALDIR} uninstall
942
	@rm -vf portal_uninstall
943 944

manager_uninstall:	manager
945
	@$(MAKE) -C ${SRCMANAGERDIR} uninstall
946
	@rm -vf manager_uninstall
947

Xavier Guimard's avatar
Xavier Guimard committed
948 949 950
# Packaging target
# ----------------

951
dist:	clean
952 953 954 955 956 957 958 959
	@mkdir -p lemonldap-ng-$(VERSION)
	@cp -pRH $$(find * -maxdepth 0|grep -v -e "\(lemonldap-ng-$(VERSION)\|debian\|rpm\)") lemonldap-ng-$(VERSION)
	@rm -rf $$(find lemonldap-ng-$(VERSION) -name .svn -print)
	@find $$dir -name '*.bak' -delete
	@rm -rf lemonldap-ng-$(VERSION)/lemonldap-ng-$(VERSION)
	@$(COMPRESS) lemonldap-ng-$(VERSION).$(COMPRESSSUFFIX) lemonldap-ng-$(VERSION)
	@rm -rf lemonldap-ng-$(VERSION)

960
rpm-dist:	clean
961
	@mkdir -p lemonldap-ng-$(VERSION)
962
	@cp -pRH $$(find * -maxdepth 0|grep -v -e "\(lemonldap-ng-$(VERSION)\|debian\)") lemonldap-ng-$(VERSION)
963 964
	@rm -rf $$(find lemonldap-ng-$(VERSION) -name .svn -print)
	@find $$dir -name '*.bak' -delete
965
	@rm -rf lemonldap-ng-$(VERSION)/lemonldap-ng-$(VERSION)
Xavier Guimard's avatar
Xavier Guimard committed
966
	@$(COMPRESS) lemonldap-ng-$(VERSION).$(COMPRESSSUFFIX) lemonldap-ng-$(VERSION)
967
	@rm -rf lemonldap-ng-$(VERSION)
968

969

970 971
debian-dist:	clean
	@mkdir -p lemonldap-ng-$(VERSION)
972
	@cp -pRH $$(find * -maxdepth 0|grep -v -e "\(lemonldap-ng-$(VERSION)\|rpm\)") lemonldap-ng-$(VERSION)
973 974
	@rm -rf $$(find lemonldap-ng-$(VERSION) -name .svn -print)
	@find $$dir -name '*.bak' -delete
975 976 977