Makefile 43.4 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
Xavier Guimard's avatar
Xavier Guimard committed
18
PARA=$(shell perl -000 -e 'print ( "$(MAKEFLAGS)" =~ /-j(\d+)/ ? "j$1:c" : "")')
19

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

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

Xavier Guimard's avatar
Xavier Guimard committed
28
# External commands
29
PERL=$$(which perl)
30
PERLVERSION=`perl -e '$$version = $$^V; $$version =~ s/v//; print $$version'`
31
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
32 33 34
SU=su -c
COMPRESS=tar czf
UNCOMPRESS=tar xzf
Clément Oudot's avatar
Clément Oudot committed
35
LISTCOMPRESSED=tar tzf
Xavier Guimard's avatar
Xavier Guimard committed
36
COMPRESSSUFFIX=tar.gz
Xavier Guimard's avatar
Xavier Guimard committed
37
NGINX=/usr/sbin/nginx
Xavier Guimard's avatar
Xavier Guimard committed
38
UGLIFYJSVERSION:=$(shell uglifyjs --version|perl -pe 's/^[^\d]*(\d).*$$/$$1/')
39 40

# Default directories install
Xavier Guimard's avatar
Xavier Guimard committed
41 42 43
# ---------------------------

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

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

61
MANAGERDIR=$(DOCUMENTROOT)/manager
62 63
MANAGERSITEDIR=$(MANAGERDIR)/htdocs
MANAGERSTATICDIR=$(MANAGERSITEDIR)/static
64
MANAGERRELATIVESTATICDIR=/static
65
MANAGERTEMPLATESDIR=$(MANAGERSITEDIR)/templates
66 67
DOCDIR=$(DOCUMENTROOT)
DEFDOCDIR=$(DOCUMENTROOT)/doc
68 69 70
TESTDIR=$(DOCUMENTROOT)/test
EXAMPLESDIR=$(LMPREFIX)/examples
TOOLSDIR=$(LMPREFIX)/tools
71 72

# Handler dir
73
HANDLERDIR=$(LMPREFIX)/handler
74 75

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

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

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

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

# LL::NG notifications storage dir
93
APACHEFILENOTIFDIR=$(DATADIR)/notifications
94

95 96
# LL::NG captcha dir
CAPTCHADIR=$(DATADIR)/captcha
97

98
# Apache user/group
99 100
APACHEUSER=
APACHEGROUP=
101 102 103

# FastCGI
FASTCGISOCKDIR=$(PREFIX)/run
104 105
FASTCGIUSER=$(APACHEUSER)
FASTCGIGROUP=$(APACHEGROUP)
106

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

113
# Apache version
114
APACHEVERSION=2.X
115

116 117 118
# Apache log dir
APACHELOGDIR=/var/log/apache2

119
# DNS Domain for cookie and virtual hosts
120 121
DNSDOMAIN=example.com

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

130
# LDAP backend test
131
LLNGTESTLDAP_SLAPD_BIN=/usr/sbin/slapd
132 133
LLNGTESTLDAP_SLAPADD_BIN=/usr/sbin/slapadd
LLNGTESTLDAP_SCHEMA_DIR=/etc/ldap/schema
134

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

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

183

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

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

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

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

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

Xavier Guimard's avatar
Xavier Guimard committed
234 235 236 237 238
# -------
# TARGETS
# -------

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

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

289
configure:	common_conf handler_conf portal_conf manager_conf
Xavier Guimard's avatar
Xavier Guimard committed
290

291 292 293
js: $(COFFEEDSTFILES)

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

295
$(SRCPORTALDIR)/site/htdocs/static/common/js/%.js: $(SRCPORTALDIR)/site/coffee/%.coffee
296 297
	@if which coffee >/dev/null; then \
		echo "Compiling $(SRCPORTALDIR)/site/coffee/$*.coffee"; \
298
		coffee -c -o $(SRCPORTALDIR)/site/htdocs/static/common/js/ $(SRCPORTALDIR)/site/coffee/$*.coffee; \
299 300
	else \
		echo "Can't find coffee"; \
301 302
	fi

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

Xavier Guimard's avatar
Xavier Guimard committed
309 310 311 312 313 314
%.min.css: %.css
	@echo "Compressing $*.css"
	@yui-compressor $*.css > $*.min.css

%.min.js: %.js
	@echo "Compressing $*.js"
Xavier Guimard's avatar
Xavier Guimard committed
315 316 317 318 319
	if test "$(UGLIFYJSVERSION)" = 2; then \
		uglifyjs $*.js --compress --mangle --comments='/Copyr/i' --source-map $*.min.js.map -o $*.min.js; \
	else \
		uglifyjs $*.js --compress --mangle --comments='/Copyr/i' --source-map -o $*.min.js; \
	fi
Xavier Guimard's avatar
Xavier Guimard committed
320

321
fastcgi-server/man/llng-fastcgi-server.8p: fastcgi-server/sbin/llng-fastcgi-server
Xavier Guimard's avatar
Xavier Guimard committed
322
	@echo Update FastCGI server man page
323
	@pod2man -s 8 -name llng-fastcgi-server fastcgi-server/sbin/llng-fastcgi-server >fastcgi-server/man/llng-fastcgi-server.8p
Xavier Guimard's avatar
Xavier Guimard committed
324 325 326

# Perl libraries configuration

327
json:	$(MANAGERJSONDST) fastcgi-server/man/llng-fastcgi-server.8p debian/*cron*
328
	@if which yui-compressor >/dev/null; then $(MAKE) minify; fi
Xavier Guimard's avatar
Xavier Guimard committed
329

330 331 332 333 334 335 336 337 338 339
debian/liblemonldap-ng-handler-perl.cron.d: lemonldap-ng-handler/eg/scripts/purgeLocalCache.cron.d
	@perl -pe 's/__APACHEUSER__/www-data/g;s@__BINDIR__@/usr/share/lemonldap-ng/bin@g' \
		lemonldap-ng-handler/eg/scripts/purgeLocalCache.cron.d \
		> debian/liblemonldap-ng-handler-perl.cron.d

debian/liblemonldap-ng-portal-perl.cron.d: lemonldap-ng-portal/site/cron/purgeCentralCache.cron.d
	@perl -pe 's/__APACHEUSER__/www-data/g;s@__BINDIR__@/usr/share/lemonldap-ng/bin@g' \
		lemonldap-ng-portal/site/cron/purgeCentralCache.cron.d \
		> debian/liblemonldap-ng-portal-perl.cron.d

Xavier Guimard's avatar
Xavier Guimard committed
340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365
$(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
# ------------

366
common:		common_conf
367
	@$(MAKE) -C ${SRCCOMMONDIR}
368

Xavier Guimard's avatar
Xavier Guimard committed
369
handler:	handler_conf common
370
	@$(MAKE) -C ${SRCHANDLERDIR}
371

372
portal:		portal_conf handler
373
	@$(MAKE) -C ${SRCPORTALDIR}
374

Xavier Guimard's avatar
Xavier Guimard committed
375
manager:	manager_conf handler
376
	$(MAKE) -C ${SRCMANAGERDIR}
377

Xavier Guimard's avatar
Xavier Guimard committed
378 379
# Test targets
# ------------
380
test:		all common_test handler_test portal_test manager_test
381 382

common_test:	common
Xavier Guimard's avatar
Xavier Guimard committed
383
	@HARNESS_OPTIONS=$(PARA) $(MAKE) -C ${SRCCOMMONDIR} test
384

Xavier Guimard's avatar
Xavier Guimard committed
385
handler_test:	handler
386
	@$(MAKE) -C ${SRCHANDLERDIR} test
387

Xavier Guimard's avatar
Xavier Guimard committed
388
portal_test:	portal
Xavier Guimard's avatar
Xavier Guimard committed
389
	@HARNESS_OPTIONS=$(PARA) $(MAKE) -C ${SRCPORTALDIR} test
390

Xavier Guimard's avatar
Xavier Guimard committed
391
manager_test:	manager
392
	@$(MAKE) -C ${SRCMANAGERDIR} test
393

Xavier Guimard's avatar
Xavier Guimard committed
394
autopkgtest: all autopkg_common autopkg_handler autopkg_portal autopkg_manager autopkg_runner
Xavier Guimard's avatar
Xavier Guimard committed
395 396 397

autopkg_%:
	./debian/tests/runner build-deps lemonldap-ng-$*
398

Xavier Guimard's avatar
Xavier Guimard committed
399 400 401
autopkg_runner:
	./debian/tests/runner runtime-deps

402
# End-to-end tests
Xavier Guimard's avatar
Xavier Guimard committed
403 404
# ----------------

405 406
e2e_test:	all prepare_test_server start_web_server launch_protractor stop_web_server

407
nox_e2e_test:
408
	xvfb-run -a -s "-screen 0 800x600x16" $(MAKE) e2e_test
409

410
prepare_test_server:
411 412
	-@mkdir -p e2e-tests/conf/sessions/lock e2e-tests/conf/persistents/lock
	-@mkdir e2e-tests/conf/manager e2e-tests/conf/portal
413 414
	$(MAKE) install_webserver_conf install_test_site install_fastcgi_server \
		CONFDIR=`pwd`/e2e-tests/conf \
415 416
		RCONFDIR=e2e-tests/conf \
		ERASECONFIG=1 \
Xavier Guimard's avatar
Xavier Guimard committed
417 418
		VHOSTLISTEN='*:$(TESTWEBSERVERPORT)' \
		PORT=$(TESTWEBSERVERPORT) \
Xavier Guimard's avatar
Xavier Guimard committed
419
		FASTCGISOCKDIR=`pwd`/e2e-tests/conf \
Xavier Guimard's avatar
Xavier Guimard committed
420 421 422 423
		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
424
		TESTDIR=`pwd`/e2e-tests/conf/site \
425
		DEFDOCDIR=`pwd`/doc \
426 427 428
		SBINDIR=`pwd`/e2e-tests/conf/sbin \
		INITDIR=`pwd`/e2e-tests/conf/init \
		ETCDEFAULTDIR=`pwd`/e2e-tests/conf/def
429 430
	#@cp -f e2e-tests/index.* e2e-tests/conf/
	@cp -f $(SRCMANAGERDIR)/site/htdocs/manager* e2e-tests/conf/manager
431
	@cp -f $(SRCMANAGERDIR)/site/htdocs/api* e2e-tests/conf/manager
432
	@cp -f $(SRCPORTALDIR)/site/htdocs/index* e2e-tests/conf/portal
433
	@cp e2e-tests/persistent/5efe8af397fc3577e05b483aca964f1b e2e-tests/conf/persistents
434
	@cp e2e-tests/saml-sp.xml e2e-tests/conf/site/saml-sp.xml
435
	@cp e2e-tests/rules.json e2e-tests/conf/site/test.json
436 437 438
	@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
439
	@cp e2e-tests/lmConf-1.json e2e-tests/lemonldap-ng*.ini e2e-tests/env.conf e2e-tests/test-nginx.conf e2e-tests/conf/
440
	@cp e2e-tests/form.html e2e-tests/conf/site
Xavier Guimard's avatar
Xavier Guimard committed
441
	@perl -i -pe 'BEGIN{$$p=`pwd`;chomp $$p}s#__pwd__#$$p#;s#__port__#$(TESTWEBSERVERPORT)#;s#__FASTCGISOCKDIR__#$(FASTCGISOCKDIR)#;' \
Xavier Guimard's avatar
Xavier Guimard committed
442
		e2e-tests/conf/lemonldap-ng*.ini \
443
		e2e-tests/conf/lmConf-1.json \
444 445
		e2e-tests/conf/env.conf \
		e2e-tests/conf/test-nginx.conf
446
	@perl -i -pe 's/#CustomLog.*$$/CustomLog conf\/apache2.log llng/' e2e-tests/conf/portal-apache2.X.conf e2e-tests/conf/manager-apache2.X.conf
447 448 449 450
	@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
451

Xavier Guimard's avatar
Xavier Guimard committed
452 453 454
e2e-tests/conf/apache2.pid: start_web_server

start_web_server:	all prepare_test_server
Xavier Guimard's avatar
Xavier Guimard committed
455
	# Clean old server if launched
Xavier Guimard's avatar
Xavier Guimard committed
456
	@if test "$(TESTBACKEND)" = "DBI"; then \
Xavier Guimard's avatar
Xavier Guimard committed
457 458
		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; \
Xavier Guimard's avatar
Xavier Guimard committed
459 460
		perl lemonldap-ng-common/scripts/convertConfig \
			--current=e2e-tests/conf/lemonldap-ng.ini \
Xavier Guimard's avatar
Xavier Guimard committed
461 462
			--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
463
		LLNG_DEFAULTCONFFILE=e2e-tests/conf/lemonldap-ng.ini \
464
			perl lemonldap-ng-common/scripts/lemonldap-ng-cli --yes 1 \
Xavier Guimard's avatar
Xavier Guimard committed
465 466
				set globalStorage Apache::Session::SQLite3; \
		LLNG_DEFAULTCONFFILE=e2e-tests/conf/lemonldap-ng.ini \
467
			perl lemonldap-ng-common/scripts/lemonldap-ng-cli --yes 1 \
Xavier Guimard's avatar
Xavier Guimard committed
468
				addKey globalStorageOptions DataSource 'dbi:SQLite:dbname='`pwd`'/e2e-tests/conf/sessions.db'; \
Xavier Guimard's avatar
Xavier Guimard committed
469
	fi
Xavier Guimard's avatar
Xavier Guimard committed
470
	@# 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
471
	@if test "$(TESTBACKEND)" = "LDAP"; then \
Xavier Guimard's avatar
Xavier Guimard committed
472 473 474 475 476 477 478
		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; \
479
		${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
480 481
		${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; \
482
		perl ./lemonldap-ng-common/scripts/convertConfig \
483 484 485
			--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; \
486
		LLNG_DEFAULTCONFFILE=e2e-tests/conf/lemonldap-ng.ini \
487
			perl lemonldap-ng-common/scripts/lemonldap-ng-cli --yes 1 \
488 489
				set globalStorage Apache::Session::LDAP; \
		LLNG_DEFAULTCONFFILE=e2e-tests/conf/lemonldap-ng.ini \
490
			perl lemonldap-ng-common/scripts/lemonldap-ng-cli --yes 1 \
491 492
				addKey globalStorageOptions ldapServer 'ldap://localhost:20389'; \
		LLNG_DEFAULTCONFFILE=e2e-tests/conf/lemonldap-ng.ini \
493
			perl lemonldap-ng-common/scripts/lemonldap-ng-cli --yes 1 \
494 495
				addKey globalStorageOptions ldapConfBase 'ou=configurations,dc=example,dc=com'; \
		LLNG_DEFAULTCONFFILE=e2e-tests/conf/lemonldap-ng.ini \
496
			perl lemonldap-ng-common/scripts/lemonldap-ng-cli --yes 1 \
497 498
				addKey globalStorageOptions ldapBindDN 'cn=admin,dc=example,dc=com'; \
		LLNG_DEFAULTCONFFILE=e2e-tests/conf/lemonldap-ng.ini \
499
			perl lemonldap-ng-common/scripts/lemonldap-ng-cli --yes 1 \
500
				addKey globalStorageOptions ldapBindPassword admin; \
Xavier Guimard's avatar
Xavier Guimard committed
501
	fi
502 503
	-@[ -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
504
	-@[ -e e2e-tests/conf/llng-fastcgi.pid ] && kill `cat e2e-tests/conf/llng-fastcgi.pid` && rm -f e2e-tests/conf/llng-fastcgi.pid || true
505
	# Start web server (designed for Debian, path may be broken else)
Xavier Guimard's avatar
Xavier Guimard committed
506
	@if test "$(TESTWEBSERVER)" = "apache"; then \
507 508 509 510 511 512
		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; \
513
	elif test "$(TESTWEBSERVER)" = "nginx"; then \
Xavier Guimard's avatar
Xavier Guimard committed
514 515 516 517 518
		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; \
519 520
		echo "Launching nginx"; \
		$(NGINX) -p `pwd`/e2e-tests \
521
			-g 'error_log '`pwd`'/e2e-tests/conf/nginx.log;' \
522 523
			-c `pwd`/e2e-tests/nginx.conf \
			2>&1 | grep -v 'Permission denied' || true; \
524
		echo "Launching plackup"; \
525
		$(MAKE) plackup; \
526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544
	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; \
545 546 547 548
	else \
		echo "!!!!! Unknown test server: $(TESTWEBSERVER) !!!!!" >&2; \
		exit 1; \
	fi
549

550
reload_web_server:
551
	@if [ -e e2e-tests/conf/apache2.pid ]; then \
Xavier Guimard's avatar
Xavier Guimard committed
552 553
		LLNG_DEFAULTCONFFILE=`pwd`/e2e-tests/conf/lemonldap-ng.ini \
		/usr/sbin/apache2 -d `pwd`/e2e-tests -f apache2.conf -k graceful; \
554
	elif [ -e e2e-tests/conf/nginx.pid ]; then \
Xavier Guimard's avatar
Xavier Guimard committed
555 556 557 558 559
		$(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; \
560
		kill `cat e2e-tests/conf/llng-fastcgi.pid` || true; \
561
		$(MAKE) plackup; \
562 563 564 565 566
	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; \
567 568 569 570
	else \
		$(MAKE) start_web_server; \
	fi

571
launch_protractor:
572
	# Start e2e tests
Xavier Guimard's avatar
Xavier Guimard committed
573
	# NB: you must have protractor installed (using npm install -g protractor)
Xavier Guimard's avatar
Xavier Guimard committed
574
	# and have run update-webdriver at least once and have a node.js > 4.0
575
	# Install test keys
Xavier Guimard's avatar
Xavier Guimard committed
576
	cp -f e2e-tests/persistent/5efe8af397fc3577e05b483aca964f1b.e2e-test e2e-tests/conf/persistents/5efe8af397fc3577e05b483aca964f1b
577
	@E2E_TESTS=$(E2E_TESTS) TESTWEBSERVERPORT=$(TESTWEBSERVERPORT) protractor e2e-tests/protractor-conf.js
578 579 580

stop_web_server:
	# Stop web server
581 582
	-@[ -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
583
	-@[ -e e2e-tests/conf/llng-fastcgi.pid ] && kill `cat e2e-tests/conf/llng-fastcgi.pid` && rm -f e2e-tests/conf/llng-fastcgi.pid || true
584
	-@[ -e e2e-tests/conf/slapd.pid ] && kill `cat e2e-tests/conf/slapd.pid` || true
585
	-@[ -e e2e-tests/conf/server.pid ] && kill `cat e2e-tests/conf/server.pid` || true
586
	# Clean
587
	@rm -rf e2e-tests/conf
588

589 590
restart_web_server: start_web_server

591
plackup:
Xavier Guimard's avatar
Xavier Guimard committed
592
	@LLNG_DEFAULTCONFFILE=`pwd`/e2e-tests/conf/lemonldap-ng.ini \
593 594
	perl -I . e2e-tests/conf/sbin/llng-fastcgi-server \
		-F >e2e-tests/conf/fastcgi.log 2>&1 &
595

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

Xavier Guimard's avatar
Xavier Guimard committed
599 600
# Install targets
# ---------------
Xavier Guimard's avatar
Xavier Guimard committed
601
install:	install_libs install_bin install_fastcgi_server install_uwsgi_server install_site
602

603
# Perl libraires install
Xavier Guimard's avatar
Xavier Guimard committed
604

Xavier Guimard's avatar
Xavier Guimard committed
605
install_libs:	common_install_libs install_handler_libs install_portal_libs install_manager_libs
606 607

common_install_libs:		common
608
	@$(MAKE) -C ${SRCCOMMONDIR} install
609

610
install_handler_libs:	handler
611
	@$(MAKE) -C ${SRCHANDLERDIR} install
612

613
install_portal_libs:		portal
614
	@$(MAKE) -C ${SRCPORTALDIR} install
615

616
install_manager_libs:	manager
617
	@$(MAKE) -C ${SRCMANAGERDIR} install
618

Xavier Guimard's avatar
Xavier Guimard committed
619
install_bin:	install_conf_dir
620 621
	# Binary install
	@install -v -d $(RBINDIR)
622
	@cp -f\
Xavier Guimard's avatar
Xavier Guimard committed
623
		${SRCHANDLERDIR}/eg/scripts/purgeLocalCache \
624
		${SRCPORTALDIR}/site/cron/purgeCentralCache \
625
		${SRCPORTALDIR}/scripts/llngDeleteSession \
626
		${SRCCOMMONDIR}/scripts/convertConfig \
627
		${SRCCOMMONDIR}/scripts/convertSessions \
Xavier Guimard's avatar
Xavier Guimard committed
628
		${SRCCOMMONDIR}/scripts/lmMigrateConfFiles2ini \
629
		${SRCCOMMONDIR}/scripts/rotateOidcKeys \
Xavier Guimard's avatar
Xavier Guimard committed
630
		${SRCMANAGERDIR}/scripts/lmConfigEditor \
631
		${SRCCOMMONDIR}/scripts/lemonldap-ng-cli \
632
		${SRCCOMMONDIR}/scripts/importMetadata \
633
			$(RBINDIR)
634
	@if [ ! "$(APACHEUSER)" ]; then \
635
		$(PERL) -i -pe 's#__APACHEUSER__#nobody#g;' $(RBINDIR)/lmConfigEditor $(RBINDIR)/lemonldap-ng-cli; \
636
	else \
637
		$(PERL) -i -pe 's#__APACHEUSER__#$(APACHEUSER)#g;' $(RBINDIR)/lmConfigEditor $(RBINDIR)/lemonldap-ng-cli; \
638 639
	fi
	@if [ ! "$(APACHEGROUP)" ]; then \
640
		$(PERL) -i -pe 's#__APACHEGROUP__#nobody#g;' $(RBINDIR)/lmConfigEditor $(RBINDIR)/lemonldap-ng-cli; \
641
	else \
642
		$(PERL) -i -pe 's#__APACHEGROUP__#$(APACHEGROUP)#g;' $(RBINDIR)/lmConfigEditor $(RBINDIR)/lemonldap-ng-cli; \
643
	fi
644
	@chmod +x $(RBINDIR)/*
645

646
install_fastcgi_server:
647
	@install -v -d $(RSBINDIR) $(RINITDIR) $(RETCDEFAULTDIR) $(RFASTCGISOCKDIR)
648
	@cp -f fastcgi-server/sbin/llng-fastcgi-server $(RSBINDIR)
649
	@chmod +x $(RSBINDIR)/llng-fastcgi-server
650 651
	@cp -f fastcgi-server/rc/llng-fastcgi-server $(RINITDIR)
	@cp -f fastcgi-server/default/llng-fastcgi-server $(RETCDEFAULTDIR)
652
	@$(PERL) -pi -e 's#__SBINDIR__#$(SBINDIR)#;s#__DEFAULTDIR__#$(ETCDEFAULTDIR)#;s#__FASTCGISOCKDIR__#$(FASTCGISOCKDIR)#g;' \
653 654
		$(RETCDEFAULTDIR)/llng-fastcgi-server \
		$(RSBINDIR)/llng-fastcgi-server \
655
		$(RINITDIR)/llng-fastcgi-server
656 657 658 659 660 661
	@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 \
662
		$(PERL) -pi -e 's#__GROUP__#nobody#' $(RETCDEFAULTDIR)/llng-fastcgi-server; \
663
	else \
664
		$(PERL) -pi -e 's#__GROUP__#$(FASTCGIGROUP)#' $(RETCDEFAULTDIR)/llng-fastcgi-server; \
665
	fi
666
	@if [ "$(FASTCGIUSER)" != "" ]; then \
667 668 669 670 671 672 673 674
		chown $(FASTCGIUSER) $(RFASTCGISOCKDIR) || exit 1; \
		if [ "$(FASTCGIGROUP)" != "" ]; then \
			chgrp $(FASTCGIGROUP) $(RFASTCGISOCKDIR) || exit 1; \
		fi; \
		chmod 770 $(RFASTCGISOCKDIR); \
	else \
		chmod 777 $(RFASTCGISOCKDIR); \
	fi
675

Xavier Guimard's avatar
Xavier Guimard committed
676 677 678
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
679
	@install -m 644 -v $(SRCHANDLERDIR)/eg/llng-server.psgi $(RLLNGAPPDIR)/llng-server.psgi
680
	$(PERL) -pi -e 's#__APPDIR__#$(LLNGAPPDIR)#;s#__UID__#$(UWSGIUSER)#;s#__GID__#$(UWSGIGROUP)#;' $(RUWSGIYAMLDIR)/llng-server.yaml
Xavier Guimard's avatar
Xavier Guimard committed
681

Xavier Guimard's avatar
Xavier Guimard committed
682 683
# Site install

684
install_site:	install_manager_site install_portal_site install_handler_site install_test_site install_examples_site install_doc_site install_webserver_conf
685
	# Site install
686
	@install -v -d $(RCONFDIR)
687 688
	# Check if erase is wanted
	@if [ "$(ERASECONFIG)" -eq "1" ]; then \
689
		cp -f _example/etc/for_etc_hosts $(RCONFDIR); \
690
	fi
Xavier Guimard's avatar
Xavier Guimard committed
691
	@$(PERL) -i -pe 's/__DNSDOMAIN__/$(DNSDOMAIN)/g' $(RCONFDIR)/for_etc_hosts
692
	# Fix a lost of rights on the main directory
693
	@chmod 755 $(RBINDIR) $(RDOCUMENTROOT) $(REXAMPLESDIR) $(RHANDLERDIR) $(RPORTALSTATICDIR) $(RMANAGERSITEDIR) $(RTOOLSDIR) $(RCONFDIR) $(RDATADIR)
694
	@echo
695
	@echo "LemonLDAP::NG v${VERSION} is installed with these parameters:"
696 697 698 699 700
	@echo "  - System configuration: ${CONFDIR}"
	@echo "  - DNS domain (for cookies and virtual hosts): ${DNSDOMAIN}"
	@echo
	@echo "To finish configuration:"
	@echo
701 702 703 704
	@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"
705
	@echo "      include ${CONFDIR}/test-apache$(APACHEVERSION).conf"
706
	@echo
707 708
	@echo "2 - Restart Apache:"
	@echo "      apache$(APACHEVERSION)ctl restart"
709
	@echo
710
	@echo "3 - Run 'make postconf' as root to update /etc/hosts if your DNS service does not known auth.$(DNSDOMAIN) and manager.$(DNSDOMAIN)"
711
	@echo
712 713 714 715 716 717
	@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"
718
	@echo
719
	@if [ ! "$(APACHEUSER)" ]; then \
720
		echo;echo "    Warning, since APACHEUSER was not set, $(APACHESESSIONFILEDIR), $(APACHEPSESSIONFILEDIR), $(CAPTCHADIR) and $(CONFDIR) have permissive permissions."; \
721 722 723
		echo "    Fix them by yourself to restrict their view to apache process only"; \
	fi
	@echo
724

725 726 727
install_webserver_conf:
	@install -m 755 -v -d $(RCONFDIR)
	@if [ "$(ERASECONFIG)" -eq "1" ]; then \
728 729 730 731 732
		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); \
733 734 735
	fi
	@$(PERL) -i -pe 's/__DNSDOMAIN__/$(DNSDOMAIN)/g; \
			s#__PORTALDIR__#$(PORTALDIR)/#g; \
Xavier Guimard's avatar
Xavier Guimard committed
736
			s#__PORTALSITEDIR__#$(PORTALSITEDIR)/#g; \
737
			s#__PORTALSTATICDIR__#$(PORTALSTATICDIR)/#g; \
738
			s#__MANAGERDIR__#$(MANAGERDIR)/#g; \
Xavier Guimard's avatar
Xavier Guimard committed
739
			s#__MANAGERSITEDIR__#$(MANAGERSITEDIR)/#g; \
740 741
			s#__MANAGERSTATICDIR__#$(MANAGERSTATICDIR)/#g; \
			s#__TESTDIR__#$(TESTDIR)/#g; \
742
			s#__APACHELOGDIR__#$(APACHELOGDIR)#g; \
Xavier Guimard's avatar
Xavier Guimard committed
743
			s#__PORT__#$(PORT)#g; \
744
			s#__CONFDIR__#$(CONFDIR)#g; \
Xavier Guimard's avatar
Xavier Guimard committed
745
			s#__FASTCGISOCKDIR__#$(FASTCGISOCKDIR)#g; \
746
			s#__VHOSTLISTEN__#$(VHOSTLISTEN)#g; \
Xavier Guimard's avatar
Xavier Guimard committed
747
			s#__DEFDOCDIR__#$(DEFDOCDIR)/#g;' $(RCONFDIR)/*apache*.conf $(RCONFDIR)/*nginx*.conf
748

749 750
install_manager_site:	install_conf_dir
	# Manager install
751
	@install -v -d $(RMANAGERDIR) $(RMANAGERSTATICDIR) \
752
		$(RMANAGERTEMPLATESDIR)
753
	@cp -pR -f $(SRCMANAGERDIR)/site/htdocs/manager.* $(RMANAGERSITEDIR)
754
	@cp -pR $(SRCMANAGERDIR)/site/htdocs/static/* $(RMANAGERSTATICDIR)
755
	@for f in $(SRCMANAGERDIR)/site/templates/*.tpl; do \
756 757 758 759 760
		./scripts/transform-templates \
			usedebianlibs $(USEDEBIANLIBS) \
			useexternallibs $(USEEXTERNALLIBS) \
			jsminified $(JSCOMPRESS) \
			cssminified $(CSSCOMPRESS) <$$f \
761 762
			> $(RMANAGERTEMPLATESDIR)/`basename $$f`; \
	done
763
	@if test "$(USEEXTERNALLIBS)" = "yes"; then \
764
		rm -rvf $(MANAGEREXTERNALLIBS); \
765
	elif test "$(USEDEBIANLIBS)" = "yes"; then \
766 767
		rm -rvf $(MANAGERLIBSTOREMOVEFORDEBIAN); \
	fi
768
	# Clean svn files
769
	@rm -rf $$(find ${RMANAGERSTATICDIR} \
770
		$(RMANAGERTEMPLATESDIR) $(RCONFDIR) -type d -name .svn)
771 772
	@$(PERL) -i -pe 's#__MANAGERSTATICDIR__#$(MANAGERRELATIVESTATICDIR)#g' $(RCONFDIR)/$(CONFFILENAME)
	@$(PERL) -i -pe 's#__MANAGERTEMPLATESDIR__#$(MANAGERTEMPLATESDIR)#g' $(RCONFDIR)/$(CONFFILENAME)
773 774 775

install_portal_site:	install_conf_dir
	# Portal install
776
	@install -v -d $(RPORTALDIR) $(RPORTALSTATICDIR) \
777
		$(RPORTALTEMPLATESDIR) \
778
		$(RCRONDIR) $(RCONFDIR)
779
	@cp -pR -f $(SRCPORTALDIR)/site/htdocs/index.* $(RPORTALSITEDIR)
780
	@cp -pR -f $(SRCPORTALDIR)/site/htdocs/static/* $(RPORTALSTATICDIR)
781
	@cd $(SRCPORTALDIR)/site/templates; for f in `find * -type f -name '*.tpl'`; do \
782 783
		echo "$$f => $(RPORTALTEMPLATESDIR)/$$f"; \
		mkdir -p $(RPORTALTEMPLATESDIR)/`dirname $$f`; \
Xavier Guimard's avatar
Xavier Guimard committed
784
		../../../scripts/transform-templates \
785 786 787 788
			usedebianlibs $(USEDEBIANLIBS) \
			useexternallibs $(USEEXTERNALLIBS) \
			jsminified $(JSCOMPRESS) \
			cssminified $(CSSCOMPRESS) <$$f \
789 790
			>$(RPORTALTEMPLATESDIR)/$$f; \
	done; cd -
791 792
	@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
793
		install -m 644 -v $$f $(RPORTALTEMPLATESDIR)/$$f; \
794 795
	done; cd -
	@cd $(SRCPORTALDIR)/site/templates; for l in `find * -type l`; do \
Xavier Guimard's avatar
Xavier Guimard committed
796
		echo link to do $$l `readlink $$l`; \
797 798 799 800
		target=`readlink $$l`; \
		cd $(RPORTALTEMPLATESDIR); \
		ln -s $$target $$l; \
		cd -; \
801
	done
Xavier Guimard's avatar
Xavier Guimard committed
802
	@if test "$(USEEXTERNALLIBS)" = "yes"; then \
803
		rm -rvf $(PORTALEXTERNALLIBS); \
804
	elif test "$(USEDEBIANLIBS)" = "yes"; then \
805 806
		rm -rvf $(PORTALLIBSTOREMOVEFORDEBIAN); \
	fi
807
	# Cron files
808
	@cp -f $(SRCPORTALDIR)/site/cron/purgeCentralCache.cron.d $(RCRONDIR)/lemonldap-ng-portal
809
	@if [ ! "$(APACHEUSER)" ]; then \
810
		$(PERL) -i -pe 's#__APACHEUSER__#nobody#g;' $(RCRONDIR)/lemonldap-ng-portal; \
811
	else \
812
		$(PERL) -i -pe 's#__APACHEUSER__#$(APACHEUSER)#g;' $(RCRONDIR)/lemonldap-ng-portal; \
813
	fi
814
	@$(PERL) -i -pe 's#__BINDIR__#$(BINDIR)#g;' $(RCRONDIR)/lemonldap-ng-portal
815
	# Clean SVN files
816
	@rm -rf $$(find ${RPORTALDIR} $(RPORTALSKINSDIR) $(RCRONDIR) $(RCONFDIR) -type d -name .svn)
Xavier Guimard's avatar
Xavier Guimard committed
817 818
	@$(PERL) -i -pe 's#__PORTALSTATICDIR__#$(PORTALRELATIVESTATICDIR)#g' $(RCONFDIR)/$(CONFFILENAME)
	@$(PERL) -i -pe 's#__PORTALTEMPLATESDIR__#$(PORTALTEMPLATESDIR)#g' $(RCONFDIR)/$(CONFFILENAME)
819 820

install_handler_site:	install_conf_dir
821
	# Handler install
822
	@install -v -d ${RHANDLERDIR}
Xavier Guimard's avatar
Xavier Guimard committed
823
	@cp -f $(SRCHANDLERDIR)/eg/scripts/purgeLocalCache.cron.d $(RCRONDIR)/lemonldap-ng-handler
824
	@if [ ! "$(APACHEUSER)" ]; then \
825
		$(PERL) -i -pe 's#__APACHEUSER__#nobody#g;' $(RCRONDIR)/lemonldap-ng-handler; \
826 827 828 829
	else \
		$(PERL) -i -pe 's#__APACHEUSER__#$(APACHEUSER)#g;' $(RCRONDIR)/lemonldap-ng-handler; \
	fi
	@$(PERL) -i -pe 's#__BINDIR__#$(BINDIR)#g;' $(RCRONDIR)/lemonldap-ng-handler
830
	@rm -rf $$(find $(RHANDLERDIR) -type d -name .svn)
831 832

install_test_site:
833
	# Test site install
834
	@install -v -d $(RTESTDIR)
835
	@cp -pR -f _example/test/* $(RTESTDIR)
836
	@rm -rf $$(find $(RTESTDIR) -type d -name .svn)
Xavier Guimard's avatar
Xavier Guimard committed
837
	@$(PERL) -i -pe 's/__DNSDOMAIN__/$(DNSDOMAIN)/g' $(RTESTDIR)/index.pl
838
	@rm -rf $$(find $(RTESTDIR) -type d -name .svn)
839 840

install_examples_site:
841
	# Examples install
842
	@install -v -d $(REXAMPLESDIR)
Xavier Guimard's avatar
Xavier Guimard committed
843
	@for i in portal manager handler; do \
844
		cp -a -f lemonldap-ng-$$i/eg $(REXAMPLESDIR)/$$i; \
845
	done
846
	@cp -a -f fastcgi-server/psgi/llngapp.psgi $(REXAMPLESDIR)/$$i
847
	@rm -rf $(REXAMPLESDIR)/portal/skins \
Xavier Guimard's avatar
Xavier Guimard committed
848
		$(REXAMPLESDIR)/manager/skins \
849
	@rm -rf $$(find $(REXAMPLESDIR) -type d -name .svn)
850

851
install_doc_site:
852
	# Offline documentation install
853
	@rm -rf $(RDEFDOCDIR)
854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872
	# 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
873
	# Remove js
874
	@cd $(RDEFDOCDIR) && if test "$(USEEXTERNALLIBS)" = "yes"; then \
Xavier Guimard's avatar
Xavier Guimard committed
875 876 877
		rm -rvf $(DOCEXTERNALLIBS); \
	elif test "$(USEDEBIANLIBS)" = "yes"; then \
		rm -rvf $(DOCLIBSTOREMOVEFORDEBIAN); \
878
	fi && cd -
879

880
install_conf_dir:	install_sessions_dir install_notif_dir install_captcha_dir
881
	# Configuration files install
882
	@install -v -d $(RCONFDIR) $(RFILECONFIGDIR) $(RTOOLSDIR)
883
	@if [ "$(ERASECONFIG)" -eq "1" ]; then \
884
		cp -f $(SRCCOMMONDIR)/$(CONFFILENAME) $(RCONFDIR); \
Xavier Guimard's avatar
Xavier Guimard committed
885
		$(PERL) -i -pe 's#^dirName\s*=\s*.*#dirName = $(FILECONFIGDIR)#g' $(RCONFDIR)/$(CONFFILENAME); \
886
	fi
887
	@cp _example/conf/lmConf-1.json $(RFILECONFIGDIR)
Xavier Guimard's avatar
Xavier Guimard committed
888
	@$(PERL) -i -pe 's/__DNSDOMAIN__/$(DNSDOMAIN)/g;\
889
		s#__SESSIONDIR__#$(APACHESESSIONFILEDIR)#g;\
890
		s#__PSESSIONDIR__#$(APACHEPSESSIONFILEDIR)#g;\
891
		s#__NOTIFICATIONDIR__#$(APACHEFILENOTIFDIR)#g;' $(RFILECONFIGDIR)/lmConf-1.json
892 893 894 895 896 897 898 899 900
	@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
901 902
	@cp $(SRCCOMMONDIR)/tools/lmConfig.* $(SRCCOMMONDIR)/tools/apache-session-mysql.sql $(RTOOLSDIR)
	@cp $(SRCCOMMONDIR)/tools/sso.schema $(RTOOLSDIR)
903
	$(PERL) -i -pe 's/__DNSDOMAIN__/$(DNSDOMAIN)/g' $(RCONFDIR)/$(CONFFILENAME)
904
	@rm -rf $$(find $(RCONFDIR) $(RFILECONFIGDIR) $(RTOOLSDIR) -type d -name .svn)
905 906

install_sessions_dir:
907
	@install -m 777 -v -d $(RAPACHESESSIONFILEDIR) $(RAPACHESESSIONFILELOCKDIR) $(RAPACHEPSESSIONFILEDIR) $(RAPACHEPSESSIONFILELOCKDIR)
908 909
	# Fix Apache::Session directories permissions
	@if [ "$(APACHEUSER)" != "" ]; then \
910
		chown $(APACHEUSER) $(RAPACHESESSIONFILEDIR) $(RAPACHESESSIONFILELOCKDIR) $(RAPACHEPSESSIONFILEDIR) $(RAPACHEPSESSIONFILELOCKDIR) || exit 1; \
911
		if [ "$(APACHEGROUP)" != "" ]; then \
912
			chgrp $(APACHEGROUP) $(RAPACHESESSIONFILEDIR) $(RAPACHESESSIONFILELOCKDIR) $(RAPACHEPSESSIONFILEDIR) $(RAPACHEPSESSIONFILELOCKDIR) || exit 1; \
913
		fi; \
914
		chmod 770 $(RAPACHESESSIONFILEDIR) $(RAPACHESESSIONFILELOCKDIR) $(RAPACHEPSESSIONFILEDIR) $(RAPACHEPSESSIONFILELOCKDIR); \
915
	else \
916
		chmod 777 $(RAPACHESESSIONFILEDIR) $(RAPACHESESSIONFILELOCKDIR) $(RAPACHEPSESSIONFILEDIR) $(RAPACHEPSESSIONFILELOCKDIR); \
917 918
	fi

919 920 921 922 923 924 925 926 927 928 929 930 931
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

932
install_captcha_dir:
933
	@install -m 777 -v -d $(RCAPTCHADIR)
934 935
	# Fix captcha directory permissions
	@if [ "$(APACHEUSER)" != "" ]; then \
936
		chown $(APACHEUSER) $(RCAPTCHADIR) || exit 1; \
937
		if [ "$(APACHEGROUP)" != "" ]; then \
938
			chgrp $(APACHEGROUP) $(RCAPTCHADIR) || exit 1; \
939
		fi; \
940
		chmod 770 $(RCAPTCHADIR); \
941
	else \
942
		chmod 777 $(RCAPTCHADIR); \
943 944
	fi

945
postconf_hosts:
946
	@cat ${CONFDIR}/for_etc_hosts >> /etc/hosts
947 948
	@echo "/etc/hosts was updated"

949
postconf: postconf_hosts
950 951
	@echo "Post configuration done"

Xavier Guimard's avatar
Xavier Guimard committed
952 953 954 955 956 957 958 959 960 961 962 963
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
964
	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
965 966 967 968
	cd /tmp/lemonldap-ng-$(VERSION) && \
	$(SU) debi

debian-install-for-nginx: debian-packages
969 970 971 972 973 974
	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
975 976 977 978 979 980 981 982 983 984 985 986 987 988 989 990
	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

991
clean:		common_clean handler_clean portal_clean manager_clean stop_web_server
Xavier Guimard's avatar
Xavier Guimard committed
992 993 994 995 996 997 998
	@rm -f $$(find */ -name '*bak' -delete)
	@rm -rf doc/devel
	@rm -vf *gz *zip
	@rm -rf lemonldap-ng-$(VERSION)
	@echo "Cleaned"

common_clean:
999
	-@if test -e ${SRCCOMMONDIR}/Makefile;then $(MAKE) -C ${SRCCOMMONDIR} distclean;fi
Xavier Guimard's avatar
Xavier Guimard committed
1000 1001 1002
	@rm -vf common*

handler_clean:
1003
	-@if test -e ${SRCHANDLERDIR}/Makefile;then $(MAKE) -C ${SRCHANDLERDIR} distclean;fi
Xavier Guimard's avatar
Xavier Guimard committed
1004 1005 1006
	@rm -vf handler*

portal_clean:
1007
	-@if test -e ${SRCPORTALDIR}/Makefile;then $(MAKE) -C ${SRCPORTALDIR} distclean;fi
Xavier Guimard's avatar
Xavier Guimard committed
1008 1009 1010
	@rm -vf portal*

manager_clean:
1011
	-@if test -e ${SRCMANAGERDIR}/Makefile;then $(MAKE) -C ${SRCMANAGERDIR} distclean;fi
Xavier Guimard's avatar
Xavier Guimard committed
1012 1013 1014 1015 1016
	@rm -vf manager*

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

1017 1018
uninstall:	configure handler_uninstall portal_uninstall manager_uninstall

1019 1020 1021 1022
common_uninstall:	common
	@$(MAKE) -C ${SRCCOMMONDIR} uninstall
	@rm -vf common_uninstall

1023
handler_uninstall:	handler
1024
	@$(MAKE) -C ${SRCHANDLERDIR} uninstall
1025
	@rm -vf handler_uninstall
1026 1027

portal_uninstall:		portal
1028
	@$(MAKE) -C ${SRCPORTALDIR} uninstall
1029
	@rm -vf portal_uninstall
1030 1031

manager_uninstall:	manager
1032
	@$(MAKE) -C ${SRCMANAGERDIR} uninstall
1033
	@rm -vf manager_uninstall
1034

Xavier Guimard's avatar
Xavier Guimard committed
1035 1036 1037
# Packaging target
# ----------------

1038
dist:	clean
1039 1040 1041 1042
	@mkdir -p lemonldap-ng-$(VERSION)
	@cp -pRH $$(find * -maxdepth 0|grep -v -e "\(lemonldap-ng-$(VERSION)\|debian\|rpm\)") lemonldap-ng-$(VERSION)
	@find $$dir -name '*.bak' -delete
	@rm -rf lemonldap-ng-$(VERSION)/lemonldap-ng-$(VERSION)
1043
	@rm -rf lemonldap-ng-$(VERSION)/node_modules
1044 1045 1046
	@$(COMPRESS) lemonldap-ng-$(VERSION).$(COMPRESSSUFFIX) lemonldap-ng-$(VERSION)
	@rm -rf lemonldap-ng-$(VERSION)

1047
rpm-dist:	clean
1048
	@mkdir -p lemonldap-ng-$(VERSION)
1049
	@cp -pRH $$(find * -maxdepth 0|grep -v -e "\(lemonldap-ng-$(VERSION)\|debian\)") lemonldap-ng-$(VERSION)
1050
	@find $$dir -name '*.bak' -delete
1051
	@rm -rf lemonldap-ng-$(VERSION)/lemonldap-ng-$(VERSION)
1052
	@rm -rf lemonldap-ng-$(VERSION)/node_modules
Xavier Guimard's avatar
Xavier Guimard committed
1053
	@$(COMPRESS) lemonldap-ng-$(VERSION).$(COMPRESSSUFFIX) lemonldap-ng-$(VERSION)
1054
	@rm -rf lemonldap-ng-$(VERSION)
1055

1056

1057 1058
debian-dist:	clean
	@mkdir -p lemonldap-ng-$(VERSION)
1059
	@cp -pRH $$(find * -maxdepth 0|grep -v -e "\(lemonldap-ng-$(VERSION)\|rpm\)") lemonldap-ng-$(VERSION)
1060
	@find $$dir -name '*.bak' -delete
1061 1062 1063 1064
	@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
1065
	@rm -rf lemonldap-ng-$(VERSION)/lemonldap-ng-$(VERSION)
1066
	@rm -rf lemonldap-ng-$(VERSION)/node_modules
1067 1068
	@$(COMPRESS) lemonldap-ng_$(VERSION).orig.$(COMPRESSSUFFIX) lemonldap-ng-$(VERSION)
	@rm -rf lemonldap-ng-$(VERSION)
Xavier Guimard's avatar
Xavier Guimard committed
1069 1070 1071

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

1073 1074 1075
manifest:   configure
	@for i in ${SRCCOMMONDIR} ${SRCHANDLERDIR} ${SRCPORTALDIR} ${SRCMANAGERDIR}; do \
		cd $$i; \
1076
		rm -vf MANIFEST MANIFEST*bak; \
1077 1078 1079
		make manifest; \
		cd -; \
	done
1080
	perl -i -ne 'print unless/proverc/' */MANIFEST
1081

1082
cpan:	clean configure common_cpan handler_cpan portal_cpan manager_cpan
Clément Oudot's avatar
Clément Oudot committed
1083
	for i in Common Portal Handler Manager; do \
Xavier Guimard's avatar
Xavier Guimard committed
1084
		$(UNCOMPRESS) Lemonldap-NG-$$i-*.$(COMPRESSSUFFIX) \
Xavier Guimard's avatar
Xavier Guimard committed
1085 1086
			$$($(LISTCOMPRESSED) Lemonldap-NG-$$i-*.$(COMPRESSSUFFIX) |grep META.); \
		mv Lemonldap-NG-$$i-*/META.* lemonldap-ng-$$($(PERL) -e "print lc('$$i')")/; \
1087
		rm -rf Lemonldap-NG-$$i*/; <