Makefile 41.8 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
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

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
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; \
297 298
	fi

Xavier Guimard's avatar
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
nox_e2e_test:
387
	xvfb-run -a -s "-screen 0 800x600x16" $(MAKE) e2e_test
388

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

Xavier Guimard's avatar
Xavier Guimard committed
430 431 432
e2e-tests/conf/apache2.pid: start_web_server

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

527
reload_web_server:
528
	@if [ -e e2e-tests/conf/apache2.pid ]; then \
Xavier Guimard's avatar
Xavier Guimard committed
529 530
		LLNG_DEFAULTCONFFILE=`pwd`/e2e-tests/conf/lemonldap-ng.ini \
		/usr/sbin/apache2 -d `pwd`/e2e-tests -f apache2.conf -k graceful; \
531
	elif [ -e e2e-tests/conf/nginx.pid ]; then \
Xavier Guimard's avatar
Xavier Guimard committed
532 533 534 535 536
		$(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; \
537
		kill `cat e2e-tests/conf/llng-fastcgi.pid` || true; \
538
		$(MAKE) plackup; \
539 540 541 542 543
	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; \
544 545 546 547
	else \
		$(MAKE) start_web_server; \
	fi

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

stop_web_server:
	# Stop web server
556 557
	-@[ -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
558
	-@[ -e e2e-tests/conf/llng-fastcgi.pid ] && kill `cat e2e-tests/conf/llng-fastcgi.pid` && rm -f e2e-tests/conf/llng-fastcgi.pid || true
559
	-@[ -e e2e-tests/conf/slapd.pid ] && kill `cat e2e-tests/conf/slapd.pid` || true
560
	-@[ -e e2e-tests/conf/server.pid ] && kill `cat e2e-tests/conf/server.pid` || true
561
	# Clean
562
	@rm -rf e2e-tests/conf
563

564 565
restart_web_server: start_web_server

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

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

Xavier Guimard's avatar
Xavier Guimard committed
574 575
# Install targets
# ---------------
Xavier Guimard's avatar
Xavier Guimard committed
576
install:	install_libs install_bin install_fastcgi_server install_uwsgi_server install_site
577

578
# Perl libraires install
Xavier Guimard's avatar
Xavier Guimard committed
579

Xavier Guimard's avatar
Xavier Guimard committed
580
install_libs:	common_install_libs install_handler_libs install_portal_libs install_manager_libs
581 582

common_install_libs:		common
583
	@$(MAKE) -C ${SRCCOMMONDIR} install
584

585
install_handler_libs:	handler
586
	@$(MAKE) -C ${SRCHANDLERDIR} install
587

588
install_portal_libs:		portal
589
	@$(MAKE) -C ${SRCPORTALDIR} install
590

591
install_manager_libs:	manager
592
	@$(MAKE) -C ${SRCMANAGERDIR} install
593

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

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

Xavier Guimard's avatar
Xavier Guimard committed
649 650 651
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
652
	@install -m 644 -v $(SRCHANDLERDIR)/eg/llng-server.psgi $(RLLNGAPPDIR)/llng-server.psgi
653
	$(PERL) -pi -e 's#__APPDIR__#$(LLNGAPPDIR)#;s#__UID__#$(UWSGIUSER)#;s#__GID__#$(UWSGIGROUP)#;' $(RUWSGIYAMLDIR)/llng-server.yaml
Xavier Guimard's avatar
Xavier Guimard committed
654

Xavier Guimard's avatar
Xavier Guimard committed
655 656
# Site install

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

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

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

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

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

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

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

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

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

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

892 893 894 895 896 897 898 899 900 901 902 903 904
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

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

918
postconf_hosts:
919
	@cat ${CONFDIR}/for_etc_hosts >> /etc/hosts
920 921
	@echo "/etc/hosts was updated"

922
postconf: postconf_hosts
923 924
	@echo "Post configuration done"

Xavier Guimard's avatar
Xavier Guimard committed
925 926 927 928 929 930 931 932 933 934 935 936
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
937
	perl -i -ne 'next if/(?:fastcgi|uwsgi).*deb$$/;s/lemonldap-ng-(?:fastcgi-server|uwsgi-app)//;print' /tmp/lemonldap-ng_$(VERSION)*.changes
Xavier Guimard's avatar
Xavier Guimard committed
938 939 940 941
	cd /tmp/lemonldap-ng-$(VERSION) && \
	$(SU) debi

debian-install-for-nginx: debian-packages
942 943 944 945 946 947
	perl -i -ne 'next if/(?:uwsgi).*deb$$/;s/lemonldap-ng-(?:uwsgi-app)//;print' /tmp/lemonldap-ng_$(VERSION)*.changes
	cd /tmp/lemonldap-ng-$(VERSION) && \
	$(SU) debi

debian-install-for-nginx-uwsgi: debian-packages
	perl -i -ne 'next if/(?:fastcgi).*deb$$/;s/lemonldap-ng-(?:fastcgi-server)//;print' /tmp/lemonldap-ng_$(VERSION)*.changes
Xavier Guimard's avatar
Xavier Guimard committed
948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963
	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

964
clean:		common_clean handler_clean portal_clean manager_clean stop_web_server
Xavier Guimard's avatar
Xavier Guimard committed
965 966 967 968 969 970 971
	@rm -f $$(find */ -name '*bak' -delete)
	@rm -rf doc/devel
	@rm -vf *gz *zip
	@rm -rf lemonldap-ng-$(VERSION)
	@echo "Cleaned"

common_clean:
972
	-@if test -e ${SRCCOMMONDIR}/Makefile;then $(MAKE) -C ${SRCCOMMONDIR} distclean;fi
Xavier Guimard's avatar
Xavier Guimard committed
973 974 975
	@rm -vf common*

handler_clean:
976
	-@if test -e ${SRCHANDLERDIR}/Makefile;then $(MAKE) -C ${SRCHANDLERDIR} distclean;fi
Xavier Guimard's avatar
Xavier Guimard committed
977 978 979
	@rm -vf handler*

portal_clean:
980
	-@if test -e ${SRCPORTALDIR}/Makefile;then $(MAKE) -C ${SRCPORTALDIR} distclean;fi
Xavier Guimard's avatar
Xavier Guimard committed
981 982 983
	@rm -vf portal*

manager_clean:
984
	-@if test -e ${SRCMANAGERDIR}/Makefile;then $(MAKE) -C ${SRCMANAGERDIR} distclean;fi
Xavier Guimard's avatar
Xavier Guimard committed
985 986 987 988 989
	@rm -vf manager*

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

990 991
uninstall:	configure handler_uninstall portal_uninstall manager_uninstall

992 993 994 995
common_uninstall:	common
	@$(MAKE) -C ${SRCCOMMONDIR} uninstall
	@rm -vf common_uninstall

996
handler_uninstall:	handler
997
	@$(MAKE) -C ${SRCHANDLERDIR} uninstall
998
	@rm -vf handler_uninstall
999 1000

portal_uninstall:		portal
1001
	@$(MAKE) -C ${SRCPORTALDIR} uninstall
1002
	@rm -vf portal_uninstall
1003 1004

manager_uninstall:	manager
1005
	@$(MAKE) -C ${SRCMANAGERDIR} uninstall
1006
	@rm -vf manager_uninstall
1007

Xavier Guimard's avatar
Xavier Guimard committed
1008 1009 1010
# Packaging target
# ----------------

1011
dist:	clean
1012 1013 1014 1015 1016 1017 1018 1019
	@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)

1020
rpm-dist:	clean
1021
	@mkdir -p lemonldap-ng-$(VERSION)
1022
	@cp -pRH $$(find * -maxdepth 0|grep -v -e "\(lemonldap-ng-$(VERSION)\|debian\)") lemonldap-ng-$(VERSION)
1023 1024
	@rm -rf $$(find lemonldap-ng-$(VERSION) -name .svn -print)
	@find $$dir -name '*.bak' -delete
1025
	@rm -rf lemonldap-ng-$(VERSION)/lemonldap-ng-$(VERSION)
Xavier Guimard's avatar
Xavier Guimard committed
1026
	@$(COMPRESS) lemonldap-ng-$(VERSION).$(COMPRESSSUFFIX) lemonldap-ng-$(VERSION)
1027
	@rm -rf lemonldap-ng-$(VERSION)
1028

1029

1030 1031
debian-dist:	clean
	@mkdir -p lemonldap-ng-$(VERSION)
1032
	@cp -pRH $$(find * -maxdepth 0|grep -v -e "\(lemonldap-ng-$(VERSION)\|rpm\)") lemonldap-ng-$(VERSION)
1033 1034
	@rm -rf $$(find lemonldap-ng-$(VERSION) -name .svn -print)
	@find $$dir -name '*.bak' -delete
1035 1036 1037 1038
	@cp lemonldap-ng-$(VERSION)/_example/etc/handler-apache2.X.conf lemonldap-ng-$(VERSION)/_example/etc/handler-apache2.conf
	@cp lemonldap-ng-$(VERSION)/_example/etc/manager-apache2.X.conf lemonldap-ng-$(VERSION)/_example/etc/manager-apache2.conf
	@cp lemonldap-ng-$(VERSION)/_example/etc/portal-apache2.X.conf lemonldap-ng-$(VERSION)/_example/etc/portal-apache2.conf
	@cp lemonldap-ng-$(VERSION)/_example/etc/test-apache2.X.conf lemonldap-ng-$(VERSION)/_example/etc/test-apache2.conf
1039 1040 1041
	@rm -rf lemonldap-ng-$(VERSION)/lemonldap-ng-$(VERSION)
	@$(COMPRESS) lemonldap-ng_$(VERSION).orig.$(COMPRESSSUFFIX) lemonldap-ng-$(VERSION)
	@rm -rf lemonldap-ng-$(VERSION)
Xavier Guimard's avatar
Xavier Guimard committed
1042 1043 1044

zip-dist:
	$(MAKE) dist "COMPRESS=zip -r" COMPRESSSUFFIX=zip
1045

1046 1047 1048
manifest:   configure
	@for i in ${SRCCOMMONDIR} ${SRCHANDLERDIR} ${SRCPORTALDIR} ${SRCMANAGERDIR}; do \
		cd $$i; \
1049
		rm -vf MANIFEST*; \
1050 1051 1052 1053
		make manifest; \
		cd -; \
	done

1054
cpan:	clean configure common_cpan handler_cpan portal_cpan manager_cpan
Clément OUDOT's avatar
Clément OUDOT committed
1055
	for i in Common Portal Handler Manager; do \
Xavier Guimard's avatar
Xavier Guimard committed
1056
		$(UNCOMPRESS) Lemonldap-NG-$$i-*.$(COMPRESSSUFFIX) \
Xavier Guimard's avatar
Xavier Guimard committed
1057 1058
			$$($(LISTCOMPRESSED) Lemonldap-NG-$$i-*.$(COMPRESSSUFFIX) |grep META.); \
		mv Lemonldap-NG-$$i-*/META.* lemonldap-ng-$$($(PERL) -e "print lc('$$i')")/; \
1059
		rm -rf Lemonldap-NG-$$i*/; \
1060
		done
1061

Xavier Guimard's avatar
Xavier Guimard committed
1062 1063 1064 1065 1066 1067 1068 1069 1070
debian-local-packages: debian-packages

debian-packages: debian-dist
	mv lemonldap-ng_$(VERSION).orig.$(COMPRESSSUFFIX) /tmp/
	version=$(VERSION) && \
	cd /tmp/ && \
	rm -rf lemonldap-ng-$$version && \
	$(UNCOMPRESS) lemonldap-ng_$$version.orig.$(COMPRESSSUFFIX) && \
	cd lemonldap-ng-$$version && \
1071
	debuild -us -uc
Xavier Guimard's avatar
Xavier Guimard committed
1072 1073 1074 1075

# Developper corner
# -----------------

1076 1077 1078
common_cpan:	common_conf
	@$(MAKE) -C ${SRCCOMMONDIR} dist
	@mv ${SRCCOMMONDIR}/Lemonldap*.gz .
1079 1080

handler_cpan:	handler_conf
1081 1082
	@$(MAKE) -C ${SRCHANDLERDIR} dist
	@mv ${SRCHANDLERDIR}/Lemonldap*.gz .
1083 1084

portal_cpan:		portal_conf
1085 1086
	@$(MAKE) -C ${SRCPORTALDIR} dist
	@mv ${SRCPORTALDIR}/Lemonldap*.gz .
1087 1088

manager_cpan:	manager_conf
1089 1090
	@$(MAKE) -C ${SRCMANAGERDIR} dist
	@mv ${SRCMANAGERDIR}/Lemonldap*.gz .
1091

1092
documentation:
1093
	@cd doc/ && ../scripts/doc.pl
1094

Xavier Guimard's avatar
Xavier Guimard committed
1095
test-diff:
1096
	@for file in `find lemonldap-ng-*/lib -type f`; do \
Xavier Guimard's avatar
Xavier Guimard committed
1097 1098 1099
		$(DIFF) $$file `echo $$file|sed -e s/lib/blib\\\/lib/`; \
	done

1100
tidy: clean
Xavier Guimard's avatar
Xavier Guimard committed
1101
	find lemon*/ -type f \( -name '*.pm' -or -name '*.pl' -or -name '*.fcgi' -or -name '*.t' \) -print -exec perltidy -b {} \;
1102
	find lemon*/ -name '*.bak' -delete
1103
	$(MAKE) json
1104

Xavier Guimard's avatar
Xavier Guimard committed
1105
tidy-js: clean
1106
	@find e2e-tests/ \
1107 1108 1109 1110 1111 1112 1113 1114
		  -type f \
		  -name '*.js' \
		! -name 'jq*' \<