Makefile 42 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'`
30
export PERL5LIB=$(shell echo `pwd`/${SRCCOMMONDIR}/blib/lib:`pwd`/${SRCHANDLERDIR}/blib/lib:`pwd`/${SRCMANAGERDIR}/blib/lib/:`pwd`/${SRCPORTALDIR}/blib/lib/)
Xavier Guimard's avatar
Xavier Guimard committed
31 32 33
SU=su -c
COMPRESS=tar czf
UNCOMPRESS=tar xzf
Clément OUDOT's avatar
Clément OUDOT committed
34
LISTCOMPRESSED=tar tzf
Xavier Guimard's avatar
Xavier Guimard committed
35
COMPRESSSUFFIX=tar.gz
Xavier Guimard's avatar
Xavier Guimard committed
36
NGINX=/usr/sbin/nginx
37 38

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

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

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

59
MANAGERDIR=$(DOCUMENTROOT)/manager
60 61
MANAGERSITEDIR=$(MANAGERDIR)/htdocs
MANAGERSTATICDIR=$(MANAGERSITEDIR)/static
Xavier Guimard's avatar
Xavier Guimard committed
62
MANAGERRELATIVESTATICDIR=/static
63
MANAGERTEMPLATESDIR=$(MANAGERSITEDIR)/templates
64 65
DOCDIR=$(DOCUMENTROOT)
DEFDOCDIR=$(DOCUMENTROOT)/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

Xavier Guimard's avatar
Xavier Guimard committed
105 106 107 108 109 110
# uWSGI
UWSGIYAMLDIR=$(LMPREFIX)/uwsgi
LLNGAPPDIR=$(LMPREFIX)/llng-server
UWSGIUSER=$(APACHEUSER)
UWSGIGROUP=$(APACHEGROUP)

111
# Apache version
112
APACHEVERSION=2.X
113

114 115 116
# Apache log dir
APACHELOGDIR=/var/log/apache2

117
# DNS Domain for cookie and virtual hosts
118 119
DNSDOMAIN=example.com

120
# Virtual Host Listen IP and Port (*, *:80, ...)
Xavier Guimard's avatar
Xavier Guimard committed
121 122
PORT=80
VHOSTLISTEN="*:$(PORT)"
123
TESTWEBSERVER=apache
Xavier Guimard's avatar
Xavier Guimard committed
124
TESTWEBSERVERPORT=19876
125
TESTUSESSL=0
126
E2E_TESTS='portal/*.js'
127

128
# LDAP backend test
129 130 131
LLNGTESTLDAP_SLAPD_BIN=/usr/sbin/slapd
LLNGTESTLDAP_SLAPADD_BIN=/usr/sbin/slapdadd
LLNGTESTLDAP_SCHEMA_DIR=/etc/slapd/schema
132

133
# Other
134 135 136 137
SRCCOMMONDIR=lemonldap-ng-common
SRCHANDLERDIR=lemonldap-ng-handler
SRCPORTALDIR=lemonldap-ng-portal
SRCMANAGERDIR=lemonldap-ng-manager
Xavier Guimard's avatar
Xavier Guimard committed
138 139 140 141 142 143 144 145
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)
Xavier Guimard's avatar
Xavier Guimard committed
146 147
RUWSGIYAMLDIR=$(DESTDIR)/$(UWSGIYAMLDIR)
RLLNGAPPDIR=$(DESTDIR)/$(LLNGAPPDIR)
Xavier Guimard's avatar
Xavier Guimard committed
148 149 150 151
RINITDIR=$(DESTDIR)/$(INITDIR)
RETCDEFAULTDIR=$(DESTDIR)/$(ETCDEFAULTDIR)
RDATADIR=$(DESTDIR)/$(DATADIR)
RPORTALDIR=$(DESTDIR)/$(PORTALDIR)
152 153 154
RPORTALSITEDIR=$(DESTDIR)/$(PORTALSITEDIR)
RPORTALSTATICDIR=$(DESTDIR)/$(PORTALSTATICDIR)
RPORTALTEMPLATESDIR=$(DESTDIR)/$(PORTALTEMPLATESDIR)
Xavier Guimard's avatar
Xavier Guimard committed
155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174
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)
175 176

VERSION=`head -n1 changelog |sed -e 's/lemonldap-ng (//' -e 's/).*$$//'`
177
PORTALSKINS=`ls $(SRCPORTALDIR)/site/templates/`
178
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.*'
179 180
DIFFPREFIX=

181

182 183
MANAGERLIBSTOREMOVEFORDEBIAN=$(RMANAGERSTATICDIR)/bwr/jquery/ \
			$(RMANAGERSTATICDIR)/bwr/angular/ \
184
			$(RMANAGERSTATICDIR)/bwr/angular-animate/ \
185 186 187
			$(RMANAGERSTATICDIR)/bwr/angular-cookie/ \
			$(RMANAGERSTATICDIR)/bwr/bootstrap/ \
			$(RMANAGERSTATICDIR)/bwr/es5-shim/
188
PORTALLIBSTOREMOVEFORDEBIAN=$(RPORTALSTATICDIR)/bwr/bootstrap/ \
189
			$(RPORTALSTATICDIR)/bwr/font-awesome \
190 191 192
			$(RPORTALSTATICDIR)/bwr/jquery-ui \
			$(RPORTALSTATICDIR)/bwr/jquery.cookie \
			$(RPORTALSTATICDIR)/bwr/jquery
Xavier Guimard's avatar
Xavier Guimard committed
193 194 195
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
196
DOCEXTERNALLIBS=$(DOCLIBSTOREMOVEFORDEBIAN)
197
MANAGEREXTERNALLIBS=$(RMANAGERSTATICDIR)/bwr/
198
PORTALEXTERNALLIBS=$(PORTALLIBSTOREMOVEFORDEBIAN)
199

Xavier Guimard's avatar
Xavier Guimard committed
200
# GENERATED SRC FILES
201
MANAGERJSONSRC= scripts/jsongenerator.pl \
Xavier Guimard's avatar
Xavier Guimard committed
202
		$(SRCMANAGERDIR)/lib/Lemonldap/NG/Manager/Build.pm \
203
		$(SRCMANAGERDIR)/lib/Lemonldap/NG/Manager/Build/Attributes.pm \
204
		$(SRCMANAGERDIR)/lib/Lemonldap/NG/Manager/Build/Tree.pm \
205
		$(SRCMANAGERDIR)/lib/Lemonldap/NG/Manager/Build/CTrees.pm \
206
		$(SRCMANAGERDIR)/lib/Lemonldap/NG/Manager/Conf/Zero.pm
207 208
MANAGERJSONDST=$(SRCMANAGERDIR)/site/htdocs/static/struct.json \
		$(SRCMANAGERDIR)/site/htdocs/static/js/conftree.js \
Xavier Guimard's avatar
Xavier Guimard committed
209
		$(SRCMANAGERDIR)/lib/Lemonldap/NG/Manager/Attributes.pm \
210
		$(SRCCOMMONDIR)/lib/Lemonldap/NG/Common/Conf/ReConstants.pm \
211
		$(SRCCOMMONDIR)/lib/Lemonldap/NG/Common/Conf/DefaultValues.pm \
212
		$(SRCCOMMONDIR)/lib/Lemonldap/NG/Common/Conf/Constants.pm \
213
		_example/conf/lmConf-1.json
214 215

# Javascript and CSS to minify
216 217
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
218
CSSSRCFILES:=$(shell find $(SRCMANAGERDIR)/site/htdocs/static  $(SRCPORTALDIR)/site/htdocs/static -type f -name '*.css' ! -name '*.min.css')
219

220
# Coffee files
221 222 223
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)
224
MANAGERCOFFEEDSTFILES:=$(subst coffee/,htdocs/static/js/,$(MANAGERCOFFEESRCFILES:.coffee=.js))
225 226
PORTALCOFFEEDSTFILES:=$(subst coffee/,htdocs/static/common/js/,$(PORTALCOFFEESRCFILES:.coffee=.js))
COFFEEDSTFILES:=$(MANAGERCOFFEEDSTFILES) $(PORTALCOFFEEDSTFILES)
227

228 229 230
# Minified files
JSDSTFILES=$(JSSRCFILES:.js=.min.js)
CSSDSTFILES=$(CSSSRCFILES:.css=.min.css)
Xavier Guimard's avatar
Xavier Guimard committed
231

Xavier Guimard's avatar
Xavier Guimard committed
232 233 234 235 236
# -------
# TARGETS
# -------

# Targets section contains the following subsections:
237
#  - 'all' that must be defined at first
Xavier Guimard's avatar
Xavier Guimard committed
238 239 240 241 242 243 244 245 246 247
#  - configure targets
#  - make targets
#  - test targets
#  - end-to-end tests
#  - install targets
#  - cleaning targets
#  - Perl libraries uninstall targets
#  - packaging targets
#  - developper corner

248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270
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))"
Xavier Guimard's avatar
Xavier Guimard committed
271
	@echo " * FastCGI (or uWSGI) server install (required for Nginx)"
272
	@echo "   - install_fastcgi_server ($(SBINDIR))"
Xavier Guimard's avatar
Xavier Guimard committed
273
	@echo "   - install_uwsgi_server   ($(UWSGIYAMLDIR))"
274 275 276 277 278 279 280 281 282 283
	@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

Xavier Guimard's avatar
Xavier Guimard committed
284 285 286
# Configure targets
# -----------------

287
configure:	common_conf handler_conf portal_conf manager_conf
Xavier Guimard's avatar
Xavier Guimard committed
288

Xavier Guimard's avatar
Xavier Guimard committed
289 290 291
js: $(COFFEEDSTFILES)

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

293
$(SRCPORTALDIR)/site/htdocs/static/common/js/%.js: $(SRCPORTALDIR)/site/coffee/%.coffee
Xavier Guimard's avatar
Xavier Guimard committed
294 295
	@if which coffee >/dev/null; then \
		echo "Compiling $(SRCPORTALDIR)/site/coffee/$*.coffee"; \
296
		coffee -c -o $(SRCPORTALDIR)/site/htdocs/static/common/js/ $(SRCPORTALDIR)/site/coffee/$*.coffee; \
Xavier Guimard's avatar
Xavier Guimard committed
297 298
	fi

Xavier Guimard's avatar
Typo  
Xavier Guimard committed
299
$(SRCMANAGERDIR)/site/htdocs/static/js/%.js: $(SRCMANAGERDIR)/site/coffee/%.coffee
300 301
	@if which coffee >/dev/null; then \
		echo "Compiling $(SRCMANAGERDIR)/site/coffee/$*.coffee"; \
302
		coffee -c -o $(SRCMANAGERDIR)/site/htdocs/static/js/ $(SRCMANAGERDIR)/site/coffee/$*.coffee; \
303 304
	fi

Xavier Guimard's avatar
Xavier Guimard committed
305 306 307 308 309 310
%.min.css: %.css
	@echo "Compressing $*.css"
	@yui-compressor $*.css > $*.min.css

%.min.js: %.js
	@echo "Compressing $*.js"
311
	@uglifyjs --comments='/Copyr/i' $*.js > $*.min.js
Xavier Guimard's avatar
Xavier Guimard committed
312 313

fastcgi-server/man/llng-fastcgi-server.1p: fastcgi-server/sbin/llng-fastcgi-server
Xavier Guimard's avatar
Xavier Guimard committed
314
	@echo Update FastCGI server man page
Xavier Guimard's avatar
Xavier Guimard committed
315 316 317 318 319
	@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
320
	@if which yui-compressor >/dev/null; then $(MAKE) minify; fi
Xavier Guimard's avatar
Xavier Guimard committed
321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347

$(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
# ------------

348
common:		common_conf
349
	@$(MAKE) -C ${SRCCOMMONDIR}
350

Xavier Guimard's avatar
Xavier Guimard committed
351
handler:	handler_conf common
352
	@$(MAKE) -C ${SRCHANDLERDIR}
353

354
portal:		portal_conf handler
355
	@$(MAKE) -C ${SRCPORTALDIR}
356

Xavier Guimard's avatar
Xavier Guimard committed
357
manager:	manager_conf handler
358
	$(MAKE) -C ${SRCMANAGERDIR}
359

Xavier Guimard's avatar
Xavier Guimard committed
360 361
# Test targets
# ------------
362
test:		all common_test handler_test portal_test manager_test
363 364 365 366

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

Xavier Guimard's avatar
Xavier Guimard committed
367
handler_test:	handler
368
	@$(MAKE) -C ${SRCHANDLERDIR} test
369

Xavier Guimard's avatar
Xavier Guimard committed
370
portal_test:	portal
371
	@$(MAKE) -C ${SRCPORTALDIR} test
372

Xavier Guimard's avatar
Xavier Guimard committed
373
manager_test:	manager
374
	@$(MAKE) -C ${SRCMANAGERDIR} test
375

376 377 378 379 380
autopkgtest:    all
	./debian/tests/runner build-deps
	./debian/tests/runner runtime-deps
	#/usr/share/pkg-perl-autopkgtest/runner runtime-deps-and-recommends

381
# End-to-end tests
Xavier Guimard's avatar
Xavier Guimard committed
382 383
# ----------------

384 385
e2e_test:	all prepare_test_server start_web_server launch_protractor stop_web_server

386 387 388 389 390 391
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
392

393
prepare_test_server:
394 395
	-@mkdir -p e2e-tests/conf/sessions/lock e2e-tests/conf/persistents/lock
	-@mkdir e2e-tests/conf/manager e2e-tests/conf/portal
396 397
	$(MAKE) install_webserver_conf install_test_site install_fastcgi_server \
		CONFDIR=`pwd`/e2e-tests/conf \
398 399
		RCONFDIR=e2e-tests/conf \
		ERASECONFIG=1 \
Xavier Guimard's avatar
Xavier Guimard committed
400 401
		VHOSTLISTEN='*:$(TESTWEBSERVERPORT)' \
		PORT=$(TESTWEBSERVERPORT) \
Xavier Guimard's avatar
Xavier Guimard committed
402
		FASTCGISOCKDIR=`pwd`/e2e-tests/conf \
Xavier Guimard's avatar
Xavier Guimard committed
403 404 405 406
		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
407
		TESTDIR=`pwd`/e2e-tests/conf/site \
408
		DEFDOCDIR=`pwd`/doc \
409 410 411
		SBINDIR=`pwd`/e2e-tests/conf/sbin \
		INITDIR=`pwd`/e2e-tests/conf/init \
		ETCDEFAULTDIR=`pwd`/e2e-tests/conf/def
412 413 414
	#@cp -f e2e-tests/index.* e2e-tests/conf/
	@cp -f $(SRCMANAGERDIR)/site/htdocs/manager* e2e-tests/conf/manager
	@cp -f $(SRCPORTALDIR)/site/htdocs/index* e2e-tests/conf/portal
415
	@cp e2e-tests/saml-sp.xml e2e-tests/conf/site/saml-sp.xml
416
	@cp e2e-tests/rules.json e2e-tests/conf/site/test.json
417 418 419
	@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
420
	@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
421
	@cp e2e-tests/form.html e2e-tests/conf/site
Xavier Guimard's avatar
Xavier Guimard committed
422
	@perl -i -pe 'BEGIN{$$p=`pwd`;chomp $$p}s#__pwd__#$$p#;s#__port__#$(TESTWEBSERVERPORT)#;s#__FASTCGISOCKDIR__#$(FASTCGISOCKDIR)#;' \
Xavier Guimard's avatar
Xavier Guimard committed
423
		e2e-tests/conf/lemonldap-ng*.ini \
424
		e2e-tests/conf/lmConf-1.json \
425 426
		e2e-tests/conf/env.conf \
		e2e-tests/conf/test-nginx.conf
427
	@perl -i -pe 's/#CustomLog.*$$/CustomLog conf\/apache2.log llng/' e2e-tests/conf/portal-apache2.X.conf e2e-tests/conf/manager-apache2.X.conf
428 429 430 431
	@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
432

Xavier Guimard's avatar
Xavier Guimard committed
433 434 435
e2e-tests/conf/apache2.pid: start_web_server

start_web_server:	all prepare_test_server
Xavier Guimard's avatar
Xavier Guimard committed
436
	# Clean old server if launched
Xavier Guimard's avatar
Hide  
Xavier Guimard committed
437
	@if test "$(TESTBACKEND)" = "DBI"; then \
Xavier Guimard's avatar
Xavier Guimard committed
438 439
		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; \
440
		perl --current=e2e-tests/conf/lemonldap-ng.ini \
Xavier Guimard's avatar
Xavier Guimard committed
441 442
			--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
443
		LLNG_DEFAULTCONFFILE=e2e-tests/conf/lemonldap-ng.ini \
444
			perl lemonldap-ng-common/scripts/lemonldap-ng-cli --yes 1 \
Xavier Guimard's avatar
Xavier Guimard committed
445 446
				set globalStorage Apache::Session::SQLite3; \
		LLNG_DEFAULTCONFFILE=e2e-tests/conf/lemonldap-ng.ini \
447
			perl lemonldap-ng-common/scripts/lemonldap-ng-cli --yes 1 \
Xavier Guimard's avatar
Xavier Guimard committed
448
				addKey globalStorageOptions DataSource 'dbi:SQLite:dbname='`pwd`'/e2e-tests/conf/sessions.db'; \
Xavier Guimard's avatar
Xavier Guimard committed
449
	fi
Xavier Guimard's avatar
Tidy  
Xavier Guimard committed
450
	@# 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
451
	@if test "$(TESTBACKEND)" = "LDAP"; then \
Xavier Guimard's avatar
Tidy  
Xavier Guimard committed
452 453 454 455 456 457 458
		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; \
459
		${LLNGTESTLDAP_SLAPADD_BIN} -F e2e-tests/conf/slapd.d -n 1 -l lemonldap-ng-portal/t/testslapd/users.ldif; \
Xavier Guimard's avatar
Tidy  
Xavier Guimard committed
460 461
		${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; \
462
		perl ./lemonldap-ng-common/scripts/convertConfig \
463 464 465
			--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; \
466
		LLNG_DEFAULTCONFFILE=e2e-tests/conf/lemonldap-ng.ini \
467
			perl lemonldap-ng-common/scripts/lemonldap-ng-cli --yes 1 \
468 469
				set globalStorage Apache::Session::LDAP; \
		LLNG_DEFAULTCONFFILE=e2e-tests/conf/lemonldap-ng.ini \
470
			perl lemonldap-ng-common/scripts/lemonldap-ng-cli --yes 1 \
471 472
				addKey globalStorageOptions ldapServer 'ldap://localhost:20389'; \
		LLNG_DEFAULTCONFFILE=e2e-tests/conf/lemonldap-ng.ini \
473
			perl lemonldap-ng-common/scripts/lemonldap-ng-cli --yes 1 \
474 475
				addKey globalStorageOptions ldapConfBase 'ou=configurations,dc=example,dc=com'; \
		LLNG_DEFAULTCONFFILE=e2e-tests/conf/lemonldap-ng.ini \
476
			perl lemonldap-ng-common/scripts/lemonldap-ng-cli --yes 1 \
477 478
				addKey globalStorageOptions ldapBindDN 'cn=admin,dc=example,dc=com'; \
		LLNG_DEFAULTCONFFILE=e2e-tests/conf/lemonldap-ng.ini \
479
			perl lemonldap-ng-common/scripts/lemonldap-ng-cli --yes 1 \
480
				addKey globalStorageOptions ldapBindPassword admin; \
Xavier Guimard's avatar
Tidy  
Xavier Guimard committed
481
	fi
482 483
	-@[ -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
484
	-@[ -e e2e-tests/conf/llng-fastcgi.pid ] && kill `cat e2e-tests/conf/llng-fastcgi.pid` && rm -f e2e-tests/conf/llng-fastcgi.pid || true
485
	# Start web server (designed for Debian, path may be broken else)
Xavier Guimard's avatar
Xavier Guimard committed
486
	@if test "$(TESTWEBSERVER)" = "apache"; then \
487 488 489 490 491 492
		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; \
493
	elif test "$(TESTWEBSERVER)" = "nginx"; then \
Xavier Guimard's avatar
Xavier Guimard committed
494 495 496 497 498
		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; \
499 500
		echo "Launching nginx"; \
		$(NGINX) -p `pwd`/e2e-tests \
501
			-g 'error_log '`pwd`'/e2e-tests/conf/nginx.log;' \
502 503
			-c `pwd`/e2e-tests/nginx.conf \
			2>&1 | grep -v 'Permission denied' || true; \
504
		echo "Launching plackup"; \
Xavier Guimard's avatar
Xavier Guimard committed
505
		$(MAKE) plackup; \
Xavier Guimard's avatar
Xavier Guimard committed
506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524
	elif test "$(TESTWEBSERVER)" = "starman"; then \
		if test "$(TESTUSESSL)" = "1"; then \
			ARGS="--ssl-cert-file e2e-tests/cert.pem --ssl-key-file e2e-tests/key.pem --enable-ssl"; \
		else \
			ARGS=; \
		fi; \
		echo "ARGS=$$ARGS"; \
		LLNG_DEFAULTCONFFILE=`pwd`/e2e-tests/conf/lemonldap-ng.ini \
		PERL5LIB=`pwd`/lemonldap-ng-common/blib/lib/:`pwd`/lemonldap-ng-handler/blib/lib/:`pwd`/lemonldap-ng-portal/blib/lib/:`pwd`/lemonldap-ng-manager/blib/lib/ \
		/usr/bin/start_server \
			--log-file=e2e-tests/conf/starman.log \
			--pid-file=e2e-tests/conf/server.pid \
			--status-file=e2e-tests/conf/server-status.pid \
			--daemonize \
			-- starman \
			--port=$(TESTWEBSERVERPORT) \
			--workers 3 \
			$$ARGS \
			e2e-tests/llng.psgi; \
525 526 527 528
	else \
		echo "!!!!! Unknown test server: $(TESTWEBSERVER) !!!!!" >&2; \
		exit 1; \
	fi
529

Xavier Guimard's avatar
Xavier Guimard committed
530
reload_web_server:
531
	@if [ -e e2e-tests/conf/apache2.pid ]; then \
Xavier Guimard's avatar
Xavier Guimard committed
532 533
		LLNG_DEFAULTCONFFILE=`pwd`/e2e-tests/conf/lemonldap-ng.ini \
		/usr/sbin/apache2 -d `pwd`/e2e-tests -f apache2.conf -k graceful; \
534
	elif [ -e e2e-tests/conf/nginx.pid ]; then \
Xavier Guimard's avatar
Xavier Guimard committed
535 536 537 538 539
		$(NGINX) -p `pwd`/e2e-tests \
			-g 'error_log '`pwd`'/e2e-tests/conf/nginx.log;' \
			-c `pwd`/e2e-tests/nginx.conf \
			-s reload \
			2>&1 | grep -v 'Permission denied' || true; \
540
		kill `cat e2e-tests/conf/llng-fastcgi.pid` || true; \
Xavier Guimard's avatar
Xavier Guimard committed
541
		$(MAKE) plackup; \
Xavier Guimard's avatar
Xavier Guimard committed
542 543 544 545 546
	elif [ -e e2e-tests/conf/server.pid ]; then \
		/usr/bin/start_server\
			--pid-file=e2e-tests/conf/server.pid \
			--status-file=e2e-tests/conf/server-status.pid \
			--restart; \
547 548 549 550
	else \
		$(MAKE) start_web_server; \
	fi

551
launch_protractor:
552
	# Start e2e tests
Xavier Guimard's avatar
Xavier Guimard committed
553
	# NB: you must have protractor installed (using npm install -g protractor)
Xavier Guimard's avatar
Xavier Guimard committed
554
	# and have run update-webdriver at least once and have a node.js > 4.0
555
	@E2E_TESTS=$(E2E_TESTS) TESTWEBSERVERPORT=$(TESTWEBSERVERPORT) protractor e2e-tests/protractor-conf.js
556 557 558

stop_web_server:
	# Stop web server
559 560
	-@[ -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
561
	-@[ -e e2e-tests/conf/llng-fastcgi.pid ] && kill `cat e2e-tests/conf/llng-fastcgi.pid` && rm -f e2e-tests/conf/llng-fastcgi.pid || true
562
	-@[ -e e2e-tests/conf/slapd.pid ] && kill `cat e2e-tests/conf/slapd.pid` || true
Xavier Guimard's avatar
Xavier Guimard committed
563
	-@[ -e e2e-tests/conf/server.pid ] && kill `cat e2e-tests/conf/server.pid` || true
564
	# Clean
565
	@rm -rf e2e-tests/conf
566

567 568
restart_web_server: start_web_server

Xavier Guimard's avatar
Xavier Guimard committed
569
plackup:
Xavier Guimard's avatar
Xavier Guimard committed
570
	@LLNG_DEFAULTCONFFILE=`pwd`/e2e-tests/conf/lemonldap-ng.ini \
571 572
	perl -I . e2e-tests/conf/sbin/llng-fastcgi-server \
		-F >e2e-tests/conf/fastcgi.log 2>&1 &
Xavier Guimard's avatar
Xavier Guimard committed
573

Xavier Guimard's avatar
Xavier Guimard committed
574
install_test:
575
	@E2E_TESTS=$(E2E_TESTS) TESTWEBSERVERPORT=$(PORT) protractor e2e-tests/protractor-conf.js
Xavier Guimard's avatar
Xavier Guimard committed
576

Xavier Guimard's avatar
Xavier Guimard committed
577 578
# Install targets
# ---------------
Xavier Guimard's avatar
Xavier Guimard committed
579
install:	install_libs install_bin install_fastcgi_server install_uwsgi_server install_site
580

581
# Perl libraires install
Xavier Guimard's avatar
Xavier Guimard committed
582

Xavier Guimard's avatar
Xavier Guimard committed
583
install_libs:	common_install_libs install_handler_libs install_portal_libs install_manager_libs
584 585

common_install_libs:		common
586
	@$(MAKE) -C ${SRCCOMMONDIR} install
587

588
install_handler_libs:	handler
589
	@$(MAKE) -C ${SRCHANDLERDIR} install
590

591
install_portal_libs:		portal
592
	@$(MAKE) -C ${SRCPORTALDIR} install
593

594
install_manager_libs:	manager
595
	@$(MAKE) -C ${SRCMANAGERDIR} install
596

Xavier Guimard's avatar
Xavier Guimard committed
597
install_bin:	install_conf_dir
598 599
	# Binary install
	@install -v -d $(RBINDIR)
600
	@cp -f\
Xavier Guimard's avatar
Xavier Guimard committed
601
		${SRCHANDLERDIR}/eg/scripts/purgeLocalCache \
602
		${SRCPORTALDIR}/site/cron/purgeCentralCache \
Xavier Guimard's avatar
Xavier Guimard committed
603
		${SRCCOMMONDIR}/scripts/convertConfig \
Xavier Guimard's avatar
Xavier Guimard committed
604
		${SRCCOMMONDIR}/scripts/lmMigrateConfFiles2ini \
605
		${SRCCOMMONDIR}/scripts/rotateOidcKeys \
Xavier Guimard's avatar
Xavier Guimard committed
606
		${SRCMANAGERDIR}/scripts/lmConfigEditor \
Xavier Guimard's avatar
Xavier Guimard committed
607
		${SRCCOMMONDIR}/scripts/lemonldap-ng-cli \
608
		${SRCCOMMONDIR}/scripts/importMetadata \
609
			$(RBINDIR)
610
	@if [ ! "$(APACHEUSER)" ]; then \
611
		$(PERL) -i -pe 's#__APACHEUSER__#nobody#g;' $(RBINDIR)/lmConfigEditor $(RBINDIR)/lemonldap-ng-cli; \
612
	else \
613
		$(PERL) -i -pe 's#__APACHEUSER__#$(APACHEUSER)#g;' $(RBINDIR)/lmConfigEditor $(RBINDIR)/lemonldap-ng-cli; \
614 615
	fi
	@if [ ! "$(APACHEGROUP)" ]; then \
616
		$(PERL) -i -pe 's#__APACHEGROUP__#nobody#g;' $(RBINDIR)/lmConfigEditor $(RBINDIR)/lemonldap-ng-cli; \
617
	else \
618
		$(PERL) -i -pe 's#__APACHEGROUP__#$(APACHEGROUP)#g;' $(RBINDIR)/lmConfigEditor $(RBINDIR)/lemonldap-ng-cli; \
619
	fi
620
	@chmod +x $(RBINDIR)/*
621

622
install_fastcgi_server:
623
	@install -v -d $(RSBINDIR) $(RINITDIR) $(RETCDEFAULTDIR) $(RFASTCGISOCKDIR)
624
	@cp -f fastcgi-server/sbin/llng-fastcgi-server $(RSBINDIR)
625
	@chmod +x $(RSBINDIR)/llng-fastcgi-server
626 627
	@cp -f fastcgi-server/rc/llng-fastcgi-server $(RINITDIR)
	@cp -f fastcgi-server/default/llng-fastcgi-server $(RETCDEFAULTDIR)
628
	@$(PERL) -pi -e 's#__SBINDIR__#$(SBINDIR)#;s#__DEFAULTDIR__#$(ETCDEFAULTDIR)#;s#__FASTCGISOCKDIR__#$(FASTCGISOCKDIR)#g;' \
629 630
		$(RETCDEFAULTDIR)/llng-fastcgi-server \
		$(RSBINDIR)/llng-fastcgi-server \
631
		$(RINITDIR)/llng-fastcgi-server
632 633 634 635 636 637
	@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 \
638
		$(PERL) -pi -e 's#__GROUP__#nobody#' $(RETCDEFAULTDIR)/llng-fastcgi-server; \
639
	else \
640
		$(PERL) -pi -e 's#__GROUP__#$(FASTCGIGROUP)#' $(RETCDEFAULTDIR)/llng-fastcgi-server; \
641
	fi
642
	@if [ "$(FASTCGIUSER)" != "" ]; then \
643 644 645 646 647 648 649 650
		chown $(FASTCGIUSER) $(RFASTCGISOCKDIR) || exit 1; \
		if [ "$(FASTCGIGROUP)" != "" ]; then \
			chgrp $(FASTCGIGROUP) $(RFASTCGISOCKDIR) || exit 1; \
		fi; \
		chmod 770 $(RFASTCGISOCKDIR); \
	else \
		chmod 777 $(RFASTCGISOCKDIR); \
	fi
651

Xavier Guimard's avatar
Xavier Guimard committed
652 653 654
install_uwsgi_server:
	@install -v -d $(RUWSGIYAMLDIR) $(RLLNGAPPDIR)
	@install -m 644 -v fastcgi-server/uwsgi/llng-server.yaml $(RUWSGIYAMLDIR)/llng-server.yaml
Xavier Guimard's avatar
Xavier Guimard committed
655
	@install -m 644 -v $(SRCHANDLERDIR)/eg/llng-server.psgi $(RLLNGAPPDIR)/llng-server.psgi
Xavier Guimard's avatar
Xavier Guimard committed
656
	$(PERL) -pi -e 's#__APPDIR__#$(LLNGAPPDIR)#;s#__UID__#$(UWSGIUSER)#;s#__GID__#$(UWSGIGROUP)#;' $(RUWSGIYAMLDIR)/llng-server.yaml
Xavier Guimard's avatar
Xavier Guimard committed
657

Xavier Guimard's avatar
Xavier Guimard committed
658 659
# Site install

660
install_site:	install_manager_site install_portal_site install_handler_site install_test_site install_examples_site install_doc_site install_webserver_conf
661
	# Site install
662
	@install -v -d $(RCONFDIR)
Clément OUDOT's avatar
Clément OUDOT committed
663 664
	# Check if erase is wanted
	@if [ "$(ERASECONFIG)" -eq "1" ]; then \
665
		cp -f _example/etc/for_etc_hosts $(RCONFDIR); \
666
	fi
Xavier Guimard's avatar
Xavier Guimard committed
667
	@$(PERL) -i -pe 's/__DNSDOMAIN__/$(DNSDOMAIN)/g' $(RCONFDIR)/for_etc_hosts
668
	# Fix a lost of rights on the main directory
669
	@chmod 755 $(RBINDIR) $(RDOCUMENTROOT) $(REXAMPLESDIR) $(RHANDLERDIR) $(RPORTALSTATICDIR) $(RMANAGERSITEDIR) $(RTOOLSDIR) $(RCONFDIR) $(RDATADIR)
670
	@echo
671
	@echo "LemonLDAP::NG v${VERSION} is installed with these parameters:"
672 673 674 675 676
	@echo "  - System configuration: ${CONFDIR}"
	@echo "  - DNS domain (for cookies and virtual hosts): ${DNSDOMAIN}"
	@echo
	@echo "To finish configuration:"
	@echo
677 678 679 680
	@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"
681
	@echo "      include ${CONFDIR}/test-apache$(APACHEVERSION).conf"
682
	@echo
683 684
	@echo "2 - Restart Apache:"
	@echo "      apache$(APACHEVERSION)ctl restart"
685
	@echo
686
	@echo "3 - Run 'make postconf' as root to update /etc/hosts if your DNS service does not known auth.$(DNSDOMAIN) and manager.$(DNSDOMAIN)"
687
	@echo
688 689 690 691 692 693
	@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"
694
	@echo
695
	@if [ ! "$(APACHEUSER)" ]; then \
696
		echo;echo "    Warning, since APACHEUSER was not set, $(APACHESESSIONFILEDIR), $(APACHEPSESSIONFILEDIR), $(CAPTCHADIR) and $(CONFDIR) have permissive permissions."; \
697 698 699
		echo "    Fix them by yourself to restrict their view to apache process only"; \
	fi
	@echo
700

701 702 703
install_webserver_conf:
	@install -m 755 -v -d $(RCONFDIR)
	@if [ "$(ERASECONFIG)" -eq "1" ]; then \
704 705 706 707 708
		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); \
709 710 711
	fi
	@$(PERL) -i -pe 's/__DNSDOMAIN__/$(DNSDOMAIN)/g; \
			s#__PORTALDIR__#$(PORTALDIR)/#g; \
Xavier Guimard's avatar
Xavier Guimard committed
712
			s#__PORTALSITEDIR__#$(PORTALSITEDIR)/#g; \
713
			s#__PORTALSTATICDIR__#$(PORTALSTATICDIR)/#g; \
714
			s#__MANAGERDIR__#$(MANAGERDIR)/#g; \
Xavier Guimard's avatar
Xavier Guimard committed
715
			s#__MANAGERSITEDIR__#$(MANAGERSITEDIR)/#g; \
716 717
			s#__MANAGERSTATICDIR__#$(MANAGERSTATICDIR)/#g; \
			s#__TESTDIR__#$(TESTDIR)/#g; \
718
			s#__APACHELOGDIR__#$(APACHELOGDIR)#g; \
Xavier Guimard's avatar
Xavier Guimard committed
719
			s#__PORT__#$(PORT)#g; \
720
			s#__CONFDIR__#$(CONFDIR)#g; \
Xavier Guimard's avatar
Xavier Guimard committed
721
			s#__FASTCGISOCKDIR__#$(FASTCGISOCKDIR)#g; \
722
			s#__VHOSTLISTEN__#$(VHOSTLISTEN)#g; \
Xavier Guimard's avatar
Xavier Guimard committed
723
			s#__DEFDOCDIR__#$(DEFDOCDIR)/#g;' $(RCONFDIR)/*apache*.conf $(RCONFDIR)/*nginx*.conf
724

725 726
install_manager_site:	install_conf_dir
	# Manager install
727
	@install -v -d $(RMANAGERDIR) $(RMANAGERSTATICDIR) \
728
		$(RMANAGERTEMPLATESDIR)
729
	@cp -pR -f $(SRCMANAGERDIR)/site/htdocs/manager.* $(RMANAGERSITEDIR)
730
	@cp -pR $(SRCMANAGERDIR)/site/htdocs/static/* $(RMANAGERSTATICDIR)
731
	@for f in $(SRCMANAGERDIR)/site/templates/*.tpl; do \
732 733 734 735 736
		./scripts/transform-templates \
			usedebianlibs $(USEDEBIANLIBS) \
			useexternallibs $(USEEXTERNALLIBS) \
			jsminified $(JSCOMPRESS) \
			cssminified $(CSSCOMPRESS) <$$f \
737 738
			> $(RMANAGERTEMPLATESDIR)/`basename $$f`; \
	done
739
	@if test "$(USEEXTERNALLIBS)" = "yes"; then \
740
		rm -rvf $(MANAGEREXTERNALLIBS); \
741
	elif test "$(USEDEBIANLIBS)" = "yes"; then \
742 743
		rm -rvf $(MANAGERLIBSTOREMOVEFORDEBIAN); \
	fi
744
	# Clean svn files
745
	@rm -rf $$(find ${RMANAGERSTATICDIR} \
746
		$(RMANAGERTEMPLATESDIR) $(RCONFDIR) -type d -name .svn)
747 748
	@$(PERL) -i -pe 's#__MANAGERSTATICDIR__#$(MANAGERRELATIVESTATICDIR)#g' $(RCONFDIR)/$(CONFFILENAME)
	@$(PERL) -i -pe 's#__MANAGERTEMPLATESDIR__#$(MANAGERTEMPLATESDIR)#g' $(RCONFDIR)/$(CONFFILENAME)
749 750 751

install_portal_site:	install_conf_dir
	# Portal install
752
	@install -v -d $(RPORTALDIR) $(RPORTALSTATICDIR) \
Xavier Guimard's avatar
Xavier Guimard committed
753
		$(RPORTALTEMPLATESDIR) \
754
		$(RCRONDIR) $(RCONFDIR)
755
	@cp -pR -f $(SRCPORTALDIR)/site/htdocs/index.* $(RPORTALSITEDIR)
756
	@cp -pR -f $(SRCPORTALDIR)/site/htdocs/static/* $(RPORTALSTATICDIR)
757
	@cd $(SRCPORTALDIR)/site/templates; for f in `find * -type f -name '*.tpl'`; do \
Xavier Guimard's avatar
Xavier Guimard committed
758 759
		echo "$$f => $(RPORTALTEMPLATESDIR)/$$f"; \
		mkdir -p $(RPORTALTEMPLATESDIR)/`dirname $$f`; \
Xavier Guimard's avatar
Xavier Guimard committed
760
		../../../scripts/transform-templates \
761 762 763 764
			usedebianlibs $(USEDEBIANLIBS) \
			useexternallibs $(USEEXTERNALLIBS) \
			jsminified $(JSCOMPRESS) \
			cssminified $(CSSCOMPRESS) <$$f \
Xavier Guimard's avatar
Xavier Guimard committed
765 766
			>$(RPORTALTEMPLATESDIR)/$$f; \
	done; cd -
767 768
	@cd $(SRCPORTALDIR)/site/templates; for f in `find * -type f ! -name '*.tpl'`; do \
		mkdir -p $(RPORTALTEMPLATESDIR)/`dirname $$f`; \
Xavier Guimard's avatar
Xavier Guimard committed
769
		install -m 644 -v $$f $(RPORTALTEMPLATESDIR)/$$f; \
770 771
	done; cd -
	@cd $(SRCPORTALDIR)/site/templates; for l in `find * -type l`; do \
Xavier Guimard's avatar
Xavier Guimard committed
772
		echo link to do $$l `readlink $$l`; \
Xavier Guimard's avatar
Xavier Guimard committed
773 774 775 776
		target=`readlink $$l`; \
		cd $(RPORTALTEMPLATESDIR); \
		ln -s $$target $$l; \
		cd -; \
777
	done
Xavier Guimard's avatar
Xavier Guimard committed
778
	@if test "$(USEEXTERNALLIBS)" = "yes"; then \
779
		rm -rvf $(PORTALEXTERNALLIBS); \
780
	elif test "$(USEDEBIANLIBS)" = "yes"; then \
781 782
		rm -rvf $(PORTALLIBSTOREMOVEFORDEBIAN); \
	fi
783
	# Cron files
784
	@cp -f $(SRCPORTALDIR)/site/cron/purgeCentralCache.cron.d $(RCRONDIR)/lemonldap-ng-portal
785
	@if [ ! "$(APACHEUSER)" ]; then \
786
		$(PERL) -i -pe 's#__APACHEUSER__#nobody#g;' $(RCRONDIR)/lemonldap-ng-portal; \
787
	else \
788
		$(PERL) -i -pe 's#__APACHEUSER__#$(APACHEUSER)#g;' $(RCRONDIR)/lemonldap-ng-portal; \
789
	fi
790
	@$(PERL) -i -pe 's#__BINDIR__#$(BINDIR)#g;' $(RCRONDIR)/lemonldap-ng-portal
791
	# Clean SVN files
792
	@rm -rf $$(find ${RPORTALDIR} $(RPORTALSKINSDIR) $(RCRONDIR) $(RCONFDIR) -type d -name .svn)
Xavier Guimard's avatar
Xavier Guimard committed
793 794
	@$(PERL) -i -pe 's#__PORTALSTATICDIR__#$(PORTALRELATIVESTATICDIR)#g' $(RCONFDIR)/$(CONFFILENAME)
	@$(PERL) -i -pe 's#__PORTALTEMPLATESDIR__#$(PORTALTEMPLATESDIR)#g' $(RCONFDIR)/$(CONFFILENAME)
795 796

install_handler_site:	install_conf_dir
797
	# Handler install
798
	@install -v -d ${RHANDLERDIR}
Xavier Guimard's avatar
Xavier Guimard committed
799
	@cp -f $(SRCHANDLERDIR)/eg/scripts/purgeLocalCache.cron.d $(RCRONDIR)/lemonldap-ng-handler
800
	@if [ ! "$(APACHEUSER)" ]; then \
801
		$(PERL) -i -pe 's#__APACHEUSER__#nobody#g;' $(RCRONDIR)/lemonldap-ng-handler; \
802 803 804 805
	else \
		$(PERL) -i -pe 's#__APACHEUSER__#$(APACHEUSER)#g;' $(RCRONDIR)/lemonldap-ng-handler; \
	fi
	@$(PERL) -i -pe 's#__BINDIR__#$(BINDIR)#g;' $(RCRONDIR)/lemonldap-ng-handler
806
	@rm -rf $$(find $(RHANDLERDIR) -type d -name .svn)
807 808

install_test_site:
809
	# Test site install
810
	@install -v -d $(RTESTDIR)
811
	@cp -pR -f _example/test/* $(RTESTDIR)
812
	@rm -rf $$(find $(RTESTDIR) -type d -name .svn)
Xavier Guimard's avatar
Xavier Guimard committed
813
	@$(PERL) -i -pe 's/__DNSDOMAIN__/$(DNSDOMAIN)/g' $(RTESTDIR)/index.pl
814
	@rm -rf $$(find $(RTESTDIR) -type d -name .svn)
815 816

install_examples_site:
817
	# Examples install
818
	@install -v -d $(REXAMPLESDIR)
Xavier Guimard's avatar
Xavier Guimard committed
819
	@for i in portal manager handler; do \
820
		cp -a -f lemonldap-ng-$$i/eg $(REXAMPLESDIR)/$$i; \
821
	done
822
	@cp -a -f fastcgi-server/psgi/llngapp.psgi $(REXAMPLESDIR)/$$i
823
	@rm -rf $(REXAMPLESDIR)/portal/skins \
Xavier Guimard's avatar
Xavier Guimard committed
824
		$(REXAMPLESDIR)/manager/skins \
825
	@rm -rf $$(find $(REXAMPLESDIR) -type d -name .svn)
826

827
install_doc_site:
828
	# Offline documentation install
829
	@rm -rf $(RDEFDOCDIR)
830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848
	# 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
849
	# Remove js
Xavier Guimard's avatar
Xavier Guimard committed
850
	@cd $(RDEFDOCDIR) && if test "$(USEEXTERNALLIBS)" = "yes"; then \
Xavier Guimard's avatar
Xavier Guimard committed
851 852 853
		rm -rvf $(DOCEXTERNALLIBS); \
	elif test "$(USEDEBIANLIBS)" = "yes"; then \
		rm -rvf $(DOCLIBSTOREMOVEFORDEBIAN); \
Xavier Guimard's avatar
Xavier Guimard committed
854
	fi && cd -
855

856
install_conf_dir:	install_sessions_dir install_notif_dir install_captcha_dir
857
	# Configuration files install
858
	@install -v -d $(RCONFDIR) $(RFILECONFIGDIR) $(RTOOLSDIR)
Clément OUDOT's avatar
Clément OUDOT committed
859
	@if [ "$(ERASECONFIG)" -eq "1" ]; then \
860
		cp -f $(SRCCOMMONDIR)/$(CONFFILENAME) $(RCONFDIR); \
Xavier Guimard's avatar
Xavier Guimard committed
861
		$(PERL) -i -pe 's#^dirName\s*=\s*.*#dirName = $(FILECONFIGDIR)#g' $(RCONFDIR)/$(CONFFILENAME); \
Clément OUDOT's avatar
Clément OUDOT committed
862
	fi
863
	@cp _example/conf/lmConf-1.json $(RFILECONFIGDIR)
Xavier Guimard's avatar
Xavier Guimard committed
864
	@$(PERL) -i -pe 's/__DNSDOMAIN__/$(DNSDOMAIN)/g;\
865
		s#__SESSIONDIR__#$(APACHESESSIONFILEDIR)#g;\
866
		s#__PSESSIONDIR__#$(APACHEPSESSIONFILEDIR)#g;\
867
		s#__NOTIFICATIONDIR__#$(APACHEFILENOTIFDIR)#g;' $(RFILECONFIGDIR)/lmConf-1.json
868 869 870 871 872 873 874 875 876
	@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
877 878
	@cp $(SRCCOMMONDIR)/tools/lmConfig.* $(SRCCOMMONDIR)/tools/apache-session-mysql.sql $(RTOOLSDIR)
	@cp $(SRCCOMMONDIR)/tools/sso.schema $(RTOOLSDIR)
879
	$(PERL) -i -pe 's/__DNSDOMAIN__/$(DNSDOMAIN)/g' $(RCONFDIR)/$(CONFFILENAME)
880
	@rm -rf $$(find $(RCONFDIR) $(RFILECONFIGDIR) $(RTOOLSDIR) -type d -name .svn)
881 882

install_sessions_dir:
883
	@install -m 777 -v -d $(RAPACHESESSIONFILEDIR) $(RAPACHESESSIONFILELOCKDIR) $(RAPACHEPSESSIONFILEDIR) $(RAPACHEPSESSIONFILELOCKDIR)
884 885
	# Fix Apache::Session directories permissions
	@if [ "$(APACHEUSER)" != "" ]; then \
886
		chown $(APACHEUSER) $(RAPACHESESSIONFILEDIR) $(RAPACHESESSIONFILELOCKDIR) $(RAPACHEPSESSIONFILEDIR) $(RAPACHEPSESSIONFILELOCKDIR) || exit 1; \
887
		if [ "$(APACHEGROUP)" != "" ]; then \
888
			chgrp $(APACHEGROUP) $(RAPACHESESSIONFILEDIR) $(RAPACHESESSIONFILELOCKDIR) $(RAPACHEPSESSIONFILEDIR) $(RAPACHEPSESSIONFILELOCKDIR) || exit 1; \
889
		fi; \
890
		chmod 770 $(RAPACHESESSIONFILEDIR) $(RAPACHESESSIONFILELOCKDIR) $(RAPACHEPSESSIONFILEDIR) $(RAPACHEPSESSIONFILELOCKDIR); \
891
	else \
892
		chmod 777 $(RAPACHESESSIONFILEDIR) $(RAPACHESESSIONFILELOCKDIR) $(RAPACHEPSESSIONFILEDIR) $(RAPACHEPSESSIONFILELOCKDIR); \
893 894
	fi

895 896 897 898 899 900 901 902 903 904 905 906 907
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

908
install_captcha_dir:
909
	@install -m 777 -v -d $(RCAPTCHADIR)
910 911
	# Fix captcha directory permissions
	@if [ "$(APACHEUSER)" != "" ]; then \
912
		chown $(APACHEUSER) $(RCAPTCHADIR) || exit 1; \
913
		if [ "$(APACHEGROUP)" != "" ]; then \
914
			chgrp $(APACHEGROUP) $(RCAPTCHADIR) || exit 1; \
915
		fi; \
916
		chmod 770 $(RCAPTCHADIR); \
917
	else \
918
		chmod 777 $(RCAPTCHADIR); \
919 920
	fi

921
postconf_hosts:
Clément OUDOT's avatar
Clément OUDOT committed
922
	@cat ${CONFDIR}/for_etc_hosts >> /etc/hosts
923 924
	@echo "/etc/hosts was updated"

925
postconf: postconf_hosts
926 927
	@echo "Post configuration done"