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

3 4 5
# Prefix for packaging
DESTDIR=

6 7 8 9 10 11 12
# Flag for optimizations
PROD=no

# Compression
JSCOMPRESS=$(PROD)
CSSCOMPRESS=$(PROD)

13
PERL=$$(which perl)
14
PERLVERSION=`perl -e '$$version = $$^V; $$version =~ s/v//; print $$version'`
Xavier Guimard's avatar
Xavier Guimard committed
15 16 17
SU=su -c
COMPRESS=tar czf
UNCOMPRESS=tar xzf
Clément OUDOT's avatar
Clément OUDOT committed
18
LISTCOMPRESSED=tar tzf
Xavier Guimard's avatar
Xavier Guimard committed
19
COMPRESSSUFFIX=tar.gz
20 21 22 23 24
# Perl options
#PERLOPTIONS="INSTALLDIRS=vendor"
PERLOPTIONS=

# Default directories install
25 26 27
PREFIX=/usr/local
LMPREFIX=$(PREFIX)/lemonldap-ng
RLMPREFIX=$(DESTDIR)/$(LMPREFIX)
28
# BIN dirs
29 30 31 32
BINDIR=$(LMPREFIX)/bin
RBINDIR=$(DESTDIR)/$(BINDIR)
DATADIR=$(LMPREFIX)/data
RDATADIR=$(DESTDIR)/$(DATADIR)
33

34
EXAMPLEROOT=`pwd`/example
35 36

# Document roots for Apache VirtualHosts
37 38 39 40 41 42 43
DOCUMENTROOT=$(LMPREFIX)/htdocs
PORTALDIR=$(DOCUMENTROOT)/portal
RPORTALDIR=$(DESTDIR)/$(PORTALDIR)
PORTALSKINSDIR=$(PORTALDIR)/skins
RPORTALSKINSDIR=$(DESTDIR)/$(PORTALSKINSDIR)
MANAGERDIR=$(DOCUMENTROOT)/manager
RMANAGERDIR=$(DESTDIR)/$(MANAGERDIR)
Xavier Guimard's avatar
Xavier Guimard committed
44
MANAGERSITEDIR=$(MANAGERDIR)
Xavier Guimard's avatar
Xavier Guimard committed
45
RMANAGERSITEDIR=$(DESTDIR)/$(MANAGERSITEDIR)
46 47
MANAGERSTATICDIR=$(MANAGERSITEDIR)/static
RMANAGERSTATICDIR=$(DESTDIR)/$(MANAGERSTATICDIR)
Xavier Guimard's avatar
Xavier Guimard committed
48
MANAGERRELATIVESTATICDIR=/static
49 50 51 52
MANAGERPSGIDIR=$(MANAGERSITEDIR)/psgi
RMANAGERPSGIDIR=$(DESTDIR)/$(MANAGERPSGIDIR)
MANAGERTEMPLATESDIR=$(MANAGERSITEDIR)/templates
RMANAGERTEMPLATESDIR=$(DESTDIR)/$(MANAGERTEMPLATESDIR)
53
DOCDIR=$(DOCUMENTROOT)
54
RDOCDIR=$(DESTDIR)/$(DOCDIR)
55 56 57
DEFDOCDIR=$(DOCUMENTROOT)/doc
RDEFDOCDIR=$(DESTDIR)/$(DEFDOCDIR)
FRDOCDIR=$(DOCUMENTROOT)/fr-doc
58 59 60 61 62 63
TESTDIR=$(DOCUMENTROOT)/test
RTESTDIR=$(DESTDIR)/$(TESTDIR)
EXAMPLESDIR=$(LMPREFIX)/examples
REXAMPLESDIR=$(DESTDIR)/$(EXAMPLESDIR)
TOOLSDIR=$(LMPREFIX)/tools
RTOOLSDIR=$(DESTDIR)/$(TOOLSDIR)
64 65

# Handler dir
66 67
HANDLERDIR=$(LMPREFIX)/handler
RHANDLERDIR=$(DESTDIR)/$(HANDLERDIR)
68 69

# Configuration dir
70 71 72 73
CONFDIR=$(LMPREFIX)/etc
RCONFDIR=$(DESTDIR)/$(CONFDIR)
CRONDIR=$(LMPREFIX)/etc/cron.d
RCRONDIR=$(DESTDIR)/$(CRONDIR)
74 75
CONFFILENAME=lemonldap-ng.ini
STORAGECONFFILE=$(CONFDIR)/$(CONFFILENAME)
76

77
# LL::NG configuration storage dir
78 79
FILECONFIGDIR=$(DATADIR)/conf
RFILECONFIGDIR=$(DESTDIR)/$(FILECONFIGDIR)
80

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

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

# LL::NG notifications storage dir
94 95
APACHEFILENOTIFDIR=$(DATADIR)/notifications
RFILENOTIFDIR=$(DESTDIR)/$(APACHEFILENOTIFDIR)
96

97 98
# LL::NG captcha dir
CAPTCHADIR=$(DATADIR)/captcha
99 100
RCAPTCHADIR=$(DESTDIR)/$(CAPTCHADIR)

101
# Apache user/group
102 103 104
APACHEUSER=
APACHEGROUP=

105
# Apache version
106
APACHEVERSION=2.X
107

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

111 112
# Virtual Host Listen IP and Port (*, *:80, ...)
VHOSTLISTEN=*:80
113
WEBSERVERPORT=19876
114

115
# Other
116 117 118 119
SRCCOMMONDIR=lemonldap-ng-common
SRCHANDLERDIR=lemonldap-ng-handler
SRCPORTALDIR=lemonldap-ng-portal
SRCMANAGERDIR=lemonldap-ng-manager
120 121 122

VERSION=`head -n1 changelog |sed -e 's/lemonldap-ng (//' -e 's/).*$$//'`
PORTALSKINS=`ls $(SRCPORTALDIR)/example/skins/`
123
DIFF=diff -aurN -x '*.bak' -x .svn -x '*.map' -x '*.min.js' -x '*.min.css' -x '*.swp' --ignore-matching-lines='.*jquery.*' --ignore-matching-lines='.*lemonldap-ng\.ini.*'
124

125
EXAMPLELANG=en # For static Manager example only
Clément OUDOT's avatar
Clément OUDOT committed
126
ERASECONFIG=1 # Set to 0 if you do not want to replace your configuration
127

128
# GENERATED SRC FILESlemonldap-ng-common/lib/Lemonldap/NG/Common/Conf/DefaultValues.pm
129
MANAGERJSONSRC= scripts/jsongenerator.pl \
Xavier Guimard's avatar
Xavier Guimard committed
130
		$(SRCMANAGERDIR)/lib/Lemonldap/NG/Manager/Build.pm \
131
		$(SRCMANAGERDIR)/lib/Lemonldap/NG/Manager/Build/Attributes.pm \
132 133
		$(SRCMANAGERDIR)/lib/Lemonldap/NG/Manager/Build/Tree.pm \
		$(SRCMANAGERDIR)/lib/Lemonldap/NG/Manager/Conf/Zero.pm
134 135
MANAGERJSONDST=$(SRCMANAGERDIR)/site/static/struct.json \
		$(SRCMANAGERDIR)/site/static/js/conftree.js \
Xavier Guimard's avatar
Xavier Guimard committed
136
		$(SRCMANAGERDIR)/lib/Lemonldap/NG/Manager/Attributes.pm \
137
		$(SRCMANAGERDIR)/lib/Lemonldap/NG/Manager/Constants.pm \
138
		$(SRCCOMMONDIR)/lib/Lemonldap/NG/Common/Conf/DefaultValues.pm \
139
		$(SRCCOMMONDIR)/lib/Lemonldap/NG/Common/Conf/Constants.pm \
140
		_example/conf/lmConf-1.js
141 142 143 144 145 146 147 148 149
PERLCOMMONSRC:=$(shell find $(SRCCOMMONDIR)/lib -name '*.pm')
PERLCOMMONDST=$(SRCCOMMONDIR)/blib/lib/Lemonldap/NG/Common.pm
PERLHANDLERSRC:=$(shell find $(SRCHANDLERDIR)/lib -name '*.pm')
PERLHANDLERDST=$(SRCHANDLERDIR)/blib/lib/Lemonldap/NG/Handler.pm
PERLPORTALSRC:=$(shell find $(SRCPORTALDIR)/lib -name '*.pm')
PERLPORTALDST=$(SRCPORTALDIR)/blib/lib/Lemonldap/NG/Portal.pm
PERLMANAGERSRC:=$(shell find $(SRCMANAGERDIR)/lib -name '*.pm')
PERLMANAGERDST=$(SRCMANAGERDIR)/blib/lib/Lemonldap/NG/Manager.pm

Xavier Guimard's avatar
Xavier Guimard committed
150 151
DIFFPREFIX=

152
all:	configure common handler manager portal
153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177
	@echo
	@echo "Building succeed. Now run :"
	@echo " - make test to verify your installation"
	@echo " - make install to install all"
	@echo
	@echo 'Other targets :'
	@echo " * Partial build :"
	@echo "   - portal, manager, handler"
	@echo " * Doxygen documentation"
	@echo "   - doxygen (to build Doxygen documentation in doc/devel/)"
	@echo
	@echo 'Other targets launched by "make install" :'
	@echo " * Perl libraries install :"
	@echo "   - install_libs          (all Perl libraries)"
	@echo "   - install_portal_libs"
	@echo "   - install_manager_libs"
	@echo "   - install_handler_libs"
	@echo " * Binaries install :"
	@echo "   - install_bin           ($(BINDIR))"
	@echo " * 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 :"
178
	@echo "   - install_doc_site      ($(DEFDOCDIR))"
179 180
	@echo "   - install_examples_site ($(EXAMPLESDIR))"
	@echo
Xavier Guimard's avatar
Xavier Guimard committed
181
	@echo "Other languages documentation (fr only for now)"
182 183
	@echo " - fr-doc                  (needs OmegaT)"
	@echo " - install_fr_doc_site"
Xavier Guimard's avatar
Xavier Guimard committed
184
	@echo
185

Xavier Guimard's avatar
Xavier Guimard committed
186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214
#
# Minification
#
minify:
	@for f in $(SRCMANAGERDIR)/site/static/css/*; do \
		if test "$${f%%.min.css}" = "$$f"; then \
			echo "Compressing $$f"; \
			yui-compressor $$f >$${f%%.css}.min.css; \
		fi; \
	done
	@for f in $(SRCMANAGERDIR)/site/static/js/*; do \
		if test "$${f%%.min.js}" = "$$f"; then \
			echo "Compressing $$f"; \
			yui-compressor $$f >$${f%%.js}.min.js; \
		fi; \
	done
	@for f in `find $(SRCPORTALDIR)/example -type f -name '*.css'`; do \
		if test "$${f%%.min.css}" = "$$f"; then \
			echo "Compressing $$f"; \
			yui-compressor $$f >$${f%%.css}.min.css; \
		fi; \
	done
	@for f in `find $(SRCPORTALDIR)/example -type f -name '*.js'`; do \
		if test "$${f%%.min.js}" = "$$f"; then \
			echo "Compressing $$f"; \
			yui-compressor $$f >$${f%%.js}.min.js; \
		fi; \
	done

215 216 217
#
# Perl libraries configuration
#
218

219
json:	$(MANAGERJSONDST)
220

221
$(MANAGERJSONDST):	$(MANAGERJSONSRC)
222
	./scripts/jsongenerator.pl
223

Xavier Guimard's avatar
Xavier Guimard committed
224
configure:	json common_conf handler_conf portal_conf manager_conf
225

226 227 228 229 230 231 232 233 234
common_conf:	${SRCCOMMONDIR}/Makefile

handler_conf:	${SRCHANDLERDIR}/Makefile

portal_conf:	${SRCPORTALDIR}/Makefile

manager_conf:	${SRCMANAGERDIR}/Makefile

${SRCCOMMONDIR}/Makefile:
Xavier Guimard's avatar
Xavier Guimard committed
235
	@cd ${SRCCOMMONDIR}; LMNGCONFFILE=$(STORAGECONFFILE) $(PERL) Makefile.PL $(PERLOPTIONS)
236

237
${SRCHANDLERDIR}/Makefile:
Xavier Guimard's avatar
Xavier Guimard committed
238
	@cd ${SRCHANDLERDIR}; $(PERL) Makefile.PL $(PERLOPTIONS)
239

240
${SRCPORTALDIR}/Makefile:
Xavier Guimard's avatar
Xavier Guimard committed
241
	@cd ${SRCPORTALDIR}; $(PERL) Makefile.PL $(PERLOPTIONS)
242

243
${SRCMANAGERDIR}/Makefile:
Xavier Guimard's avatar
Xavier Guimard committed
244
	@cd ${SRCMANAGERDIR}; $(PERL) Makefile.PL $(PERLOPTIONS)
245

246 247 248
#
# Perl libraries make
#
249 250 251 252 253 254 255 256 257
common:		$(PERLCOMMONDST)

handler:	$(PERLHANDLERDST)

portal:		$(PERLPORTALDST)

manager:	$(PERLMANAGERDST)

$(PERLCOMMONDST):	common_conf $(PERLCOMMONSRC)
258
	@$(MAKE) -C ${SRCCOMMONDIR}
259

260
$(PERLHANDLERDST):	handler_conf common $(PERLHANDLERSRC)
261
	@$(MAKE) -C ${SRCHANDLERDIR}
262

263
$(PERLPORTALDST):	portal_conf common $(PERLPORTALSRC)
264
	@$(MAKE) -C ${SRCPORTALDIR}
265

266 267
$(PERLMANAGERDST):	manager_conf handler $(PERLMANAGERSRC)
	$(MAKE) -C ${SRCMANAGERDIR}
268

Xavier Guimard's avatar
Xavier Guimard committed
269
test:		all common_test handler_test portal_test manager_test extra_test
270 271 272 273

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

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

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

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

Xavier Guimard's avatar
Xavier Guimard committed
283
extra_test:	all
284
	cd ${SRCPORTALDIR} && prove -b -I ../$(SRCCOMMONDIR)/blib/lib -I ../$(SRCHANDLERDIR)/blib/lib -I../${SRCPORTALDIR}/blib/lib/ xt
285
#	PERL_DL_NONLAZY=1 $(PERL) "-MExtUtils::Command::MM" "-e" "test_harness(0, 'lemonldap-ng-common/blib/lib', 'lemonldap-ng-handler/blib/lib', 'lemonldap-ng-manager/blib/lib', 'lemonldap-ng-portal/blib/lib')" extra-tests/*.t
Xavier Guimard's avatar
Xavier Guimard committed
286

287 288 289
e2e_test:	all prepare_test_server start_web_server launch_protractor stop_web_server

prepare_test_server:
290
	@mkdir -p e2e-tests/conf/lock e2e-tests/conf/persistents/lock
Xavier Guimard's avatar
Xavier Guimard committed
291
	@$(MAKE) install_webserver_conf \
292 293
		RCONFDIR=e2e-tests/conf \
		ERASECONFIG=1 \
294
		VHOSTLISTEN='*:$(WEBSERVERPORT)' \
295 296
		PORTALDIR=`pwd`/$(SRCPORTALDIR)/example \
		MANAGERDIR=`pwd`/$(SRCMANAGERDIR)/site \
297 298 299
		MANAGERPSGIDIR=`pwd`/e2e-tests \
		DEFDOCDIR=`pwd`/doc \
		FRDOCDIR=`pwd`/po-doc/fr
Xavier Guimard's avatar
Xavier Guimard committed
300 301
	@cp e2e-tests/lmConf-1.js e2e-tests/lemonldap-ng.ini e2e-tests/env.conf e2e-tests/conf/
	@perl -i -pe 'BEGIN{$$p=`pwd`;chomp $$p}s#__pwd__#$$p#;s/__port__/$(WEBSERVERPORT)/' e2e-tests/conf/lemonldap-ng.ini e2e-tests/conf/lmConf-1.js e2e-tests/conf/env.conf
302

Xavier Guimard's avatar
Xavier Guimard committed
303 304 305
e2e-tests/conf/apache2.pid: start_web_server

start_web_server:	all prepare_test_server
Xavier Guimard's avatar
Xavier Guimard committed
306
	# Clean old server if launched
307
	-@[ -e e2e-tests/conf/apache2.pid ] && kill `cat e2e-tests/conf/apache2.pid` && sleep 1
308
	# Start web server (designed for Debian, path may be broken else)
309 310
	@LLNG_DEFAULTCONFFILE=`pwd`/e2e-tests/conf/lemonldap-ng.ini /usr/sbin/apache2 -d `pwd`/e2e-tests -f apache2.conf -k start

Xavier Guimard's avatar
Xavier Guimard committed
311
reload_web_server:
312 313 314 315 316 317
	@if [ -e e2e-tests/conf/apache2.pid ]; then \
		LLNG_DEFAULTCONFFILE=`pwd`/e2e-tests/conf/lemonldap-ng.ini /usr/sbin/apache2 -d `pwd`/e2e-tests -f apache2.conf -k graceful; \
	else \
		$(MAKE) start_web_server; \
	fi

Xavier Guimard's avatar
Xavier Guimard committed
318
launch_protractor:	all e2e-tests/conf/apache2.pid
319
	# Start e2e tests
Xavier Guimard's avatar
Xavier Guimard committed
320
	# NB: you must have protractor installed (using npm install -g protractor)
Xavier Guimard's avatar
Xavier Guimard committed
321
	# and have run update-webdriver at least once and have a node.js > 4.0
322
	@WEBSERVERPORT=$(WEBSERVERPORT) protractor e2e-tests/protractor-conf.js
323 324 325

stop_web_server:
	# Stop web server
Xavier Guimard's avatar
Xavier Guimard committed
326
	-@ [ -e e2e-tests/conf/apache2.pid ] && kill `cat e2e-tests/conf/apache2.pid`
327
	# Clean
328
	@rm -rf e2e-tests/conf
329

330 331
restart_web_server: start_web_server

332 333 334 335
#
# INSTALL
#
install:	install_libs install_bin install_site
336

337 338 339
#
# Perl libraires install
#
340
install_libs:	common_install_libs install_handler_libs install_portal_libs install_manager_libs
341 342

common_install_libs:		common
343
	@$(MAKE) -C ${SRCCOMMONDIR} install
344

345
install_handler_libs:	handler
346
	@$(MAKE) -C ${SRCHANDLERDIR} install
347

348
install_portal_libs:		portal
349
	@$(MAKE) -C ${SRCPORTALDIR} install
350

351
install_manager_libs:	manager
352
	@$(MAKE) -C ${SRCMANAGERDIR} install
353

354
example:
Xavier Guimard's avatar
Xavier Guimard committed
355
	$(MAKE) install_site install_bin LMPREFIX=$(EXAMPLEROOT)
356

Xavier Guimard's avatar
Xavier Guimard committed
357
install_bin:	install_conf_dir
358 359
	# Binary install
	@install -v -d $(RBINDIR)
Xavier Guimard's avatar
Xavier Guimard committed
360
	@cp -f\
361
		${SRCHANDLERDIR}/example/scripts/purgeLocalCache \
362
		${SRCPORTALDIR}/example/scripts/purgeCentralCache \
363
		${SRCPORTALDIR}/example/scripts/buildPortalWSDL \
Xavier Guimard's avatar
Xavier Guimard committed
364
		${SRCCOMMONDIR}/scripts/convertConfig \
Xavier Guimard's avatar
Xavier Guimard committed
365
		${SRCCOMMONDIR}/scripts/lmMigrateConfFiles2ini \
366
		${SRCCOMMONDIR}/scripts/rotateOidcKeys \
Xavier Guimard's avatar
Xavier Guimard committed
367 368
		${SRCMANAGERDIR}/scripts/lmConfigEditor \
		${SRCMANAGERDIR}/scripts/lemonldap-ng-cli \
369
			$(RBINDIR)
370 371
	@if [ ! "$(APACHEUSER)" ]; then \
		$(PERL) -i -pe 's#__APACHEUSER__#nobody#g;' $(RBINDIR)/lmConfigEditor; \
372
		$(PERL) -i -pe 's#__APACHEUSER__#nobody#g;' $(RBINDIR)/lemonldap-ng-cli; \
373 374
	else \
		$(PERL) -i -pe 's#__APACHEUSER__#$(APACHEUSER)#g;' $(RBINDIR)/lmConfigEditor; \
375
		$(PERL) -i -pe 's#__APACHEUSER__#$(APACHEUSER)#g;' $(RBINDIR)/lemonldap-ng-cli; \
376 377 378
	fi
	@if [ ! "$(APACHEGROUP)" ]; then \
		$(PERL) -i -pe 's#__APACHEGROUP__#nobody#g;' $(RBINDIR)/lmConfigEditor; \
379
		$(PERL) -i -pe 's#__APACHEGROUP__#nobody#g;' $(RBINDIR)/lemonldap-ng-cli; \
380 381
	else \
		$(PERL) -i -pe 's#__APACHEGROUP__#$(APACHEGROUP)#g;' $(RBINDIR)/lmConfigEditor; \
382
		$(PERL) -i -pe 's#__APACHEGROUP__#$(APACHEGROUP)#g;' $(RBINDIR)/lemonldap-ng-cli; \
383
	fi
384
	@chmod +x $(RBINDIR)/*
385 386 387 388

#
# SITE INSTALL
#
389
install_site:	install_manager_site install_portal_site install_handler_site install_test_site install_examples_site install_doc_site install_webserver_conf
390
	# Site install
391
	@install -v -d $(RCONFDIR)
Clément OUDOT's avatar
Clément OUDOT committed
392 393
	# Check if erase is wanted
	@if [ "$(ERASECONFIG)" -eq "1" ]; then \
Xavier Guimard's avatar
Xavier Guimard committed
394
		cp -f _example/etc/for_etc_hosts $(RCONFDIR); \
395
	fi
Xavier Guimard's avatar
Xavier Guimard committed
396
	@$(PERL) -i -pe 's/__DNSDOMAIN__/$(DNSDOMAIN)/g' $(RCONFDIR)/for_etc_hosts
397
	# Fix a lost of rights on the main directory
Xavier Guimard's avatar
Xavier Guimard committed
398
	@chmod 755 $(RBINDIR) $(RDOCUMENTROOT) $(REXAMPLESDIR) $(RHANDLERDIR) $(RPORTALSKINSDIR) $(RMANAGERSITEDIR) $(RTOOLSDIR) $(RCONFDIR) $(RDATADIR)
399
	@echo
400
	@echo "LemonLDAP::NG v${VERSION} is installed with these parameters:"
401 402 403 404 405
	@echo "  - System configuration: ${CONFDIR}"
	@echo "  - DNS domain (for cookies and virtual hosts): ${DNSDOMAIN}"
	@echo
	@echo "To finish configuration:"
	@echo
406 407 408 409
	@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"
410
	@echo "      include ${CONFDIR}/test-apache$(APACHEVERSION).conf"
411
	@echo
412 413
	@echo "2 - Restart Apache:"
	@echo "      apache$(APACHEVERSION)ctl restart"
414
	@echo
415
	@echo "3 - Run 'make postconf' as root to update /etc/hosts if your DNS service does not known auth.$(DNSDOMAIN) and manager.$(DNSDOMAIN)"
416
	@echo
417 418 419 420 421 422
	@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"
423
	@echo
424
	@if [ ! "$(APACHEUSER)" ]; then \
425
		echo;echo "    Warning, since APACHEUSER was not set, $(APACHESESSIONFILEDIR), $(APACHEPSESSIONFILEDIR), $(CAPTCHADIR) and $(CONFDIR) have permissive permissions."; \
426 427 428
		echo "    Fix them by yourself to restrict their view to apache process only"; \
	fi
	@echo
429

430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452
install_webserver_conf:
	@install -m 755 -v -d $(RCONFDIR)
	@if [ "$(ERASECONFIG)" -eq "1" ]; then \
		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/handler-nginx.conf $(RCONFDIR); \
		cp -f _example/etc/test-nginx.conf $(RCONFDIR); \
		cp -f _example/etc/nginx-access-control $(RCONFDIR); \
		cp -f _example/etc/nginx-http-accounting $(RCONFDIR); \
		cp -f _example/etc/nginx-fcgi-accounting $(RCONFDIR); \
	fi
	@$(PERL) -i -pe 's/__DNSDOMAIN__/$(DNSDOMAIN)/g; \
			s#__PORTALDIR__#$(PORTALDIR)/#g; \
			s#__MANAGERDIR__#$(MANAGERDIR)/#g; \
			s#__MANAGERSTATICDIR__#$(MANAGERSTATICDIR)/#g; \
			s#__MANAGERPSGIDIR__#$(MANAGERPSGIDIR)/#g; \
			s#__TESTDIR__#$(TESTDIR)/#g; \
			s#__VHOSTLISTEN__#$(VHOSTLISTEN)#g; \
			s#__DEFDOCDIR__#$(DEFDOCDIR)/#g; \
			s#__FRDOCDIR__#$(FRDOCDIR)/#g;' $(RCONFDIR)/*apache*.conf $(RCONFDIR)/*nginx*.conf

453 454
install_manager_site:	install_conf_dir
	# Manager install
455 456 457
	@install -v -d ${RMANAGERDIR} $(RMANAGERSTATICDIR) $(RMANAGERPSGIDIR) \
		$(RMANAGERTEMPLATESDIR)
	@cp -pR $(SRCMANAGERDIR)/site/static/* $(RMANAGERSTATICDIR)
458 459 460 461
	@for f in $(SRCMANAGERDIR)/site/templates/*.tpl; do \
		./scripts/transform-templates jsminified $(JSCOMPRESS) cssminified $(CSSCOMPRESS) <$$f \
			> $(RMANAGERTEMPLATESDIR)/`basename $$f`; \
	done
462 463 464 465
	@cp -pR $(SRCMANAGERDIR)/eg/* $(RMANAGERPSGIDIR)
	# Clean svn files
	@rm -rf $$(find ${RMANAGERDIR} ${RMANAGERSTATICDIR} $(RMANAGERPSGIDIR) \
		$(RMANAGERTEMPLATESDIR) $(RCONFDIR) -type d -name .svn)
Xavier Guimard's avatar
Xavier Guimard committed
466
	$(PERL) -i -pe 's#__MANAGERSTATICDIR__#$(MANAGERRELATIVESTATICDIR)#g' $(RCONFDIR)/$(CONFFILENAME)
467
	$(PERL) -i -pe 's#__MANAGERTEMPLATESDIR__#$(MANAGERTEMPLATESDIR)#g' $(RCONFDIR)/$(CONFFILENAME)
468 469 470 471

install_portal_site:	install_conf_dir
	# Portal install
	@install -v -d $(RPORTALDIR) $(RPORTALSKINSDIR) \
472
		$(RPORTALDIR)/skins/ \
473
		$(RCRONDIR) $(RCONFDIR)
474
	@for skin in $$(ls $(SRCPORTALDIR)/example/skins/); do \
475 476
		[ -h $(RPORTALDIR)/skins/$$skin ] && rm -f $(RPORTALDIR)/skins/$$skin; \
		install -v -d $(RPORTALSKINSDIR)/$$skin; \
477
	done
Xavier Guimard's avatar
Xavier Guimard committed
478 479 480
	@cp -pR -f ${SRCPORTALDIR}/example/index_skin.pl ${RPORTALDIR}/index.pl
	@cp -pR -f ${SRCPORTALDIR}/example/mail.pl ${RPORTALDIR}
	@cp -pR -f ${SRCPORTALDIR}/example/metadata.pl ${RPORTALDIR}
481
	@cp -pR -f ${SRCPORTALDIR}/example/openid-configuration.pl ${RPORTALDIR}
Xavier Guimard's avatar
Xavier Guimard committed
482 483
	@cp -pR -f ${SRCPORTALDIR}/example/cdc.pl ${RPORTALDIR}
	@cp -pR -f ${SRCPORTALDIR}/example/register.pl ${RPORTALDIR}
484
	@tar -cf - -C ${SRCPORTALDIR}/example/skins/ $$(ls ${SRCPORTALDIR}/example/skins/) |tar -xf - -C $(RPORTALSKINSDIR)
485 486 487 488
	@for f in `find $(RPORTALSKINSDIR) -type f -name '*.tpl'`; do \
		./scripts/transform-templates jsminified $(JSCOMPRESS) cssminified $(CSSCOMPRESS) <$$f >$$f.tmp; \
		mv -f $$f.tmp $$f; \
	done
489
	@if [ "$(PORTALDIR)/skins/" != "$(PORTALSKINSDIR)/" ]; then \
490
		for skin in $$(ls $(SRCPORTALDIR)/example/skins/); do \
491 492
			rm -rf $(RPORTALDIR)/skins/$$skin/; \
			ln -s $(PORTALSKINSDIR)/$$skin $(RPORTALDIR)/skins/$$skin; \
493 494 495
		done; \
	fi
	# Cron files
496
	@cp -f $(SRCPORTALDIR)/example/scripts/purgeCentralCache.cron.d $(RCRONDIR)/lemonldap-ng-portal
497
	@if [ ! "$(APACHEUSER)" ]; then \
498
		$(PERL) -i -pe 's#__APACHEUSER__#nobody#g;' $(RCRONDIR)/lemonldap-ng-portal; \
499
	else \
500
		$(PERL) -i -pe 's#__APACHEUSER__#$(APACHEUSER)#g;' $(RCRONDIR)/lemonldap-ng-portal; \
501
	fi
502
	@$(PERL) -i -pe 's#__BINDIR__#$(BINDIR)#g;' $(RCRONDIR)/lemonldap-ng-portal
503
	# Clean SVN files
504
	@rm -rf $$(find ${RPORTALDIR} $(RPORTALSKINSDIR) $(RCRONDIR) $(RCONFDIR) -type d -name .svn)
505 506

install_handler_site:	install_conf_dir
507
	# Handler install
508
	@install -v -d ${RHANDLERDIR}
509
	@cp -f $(SRCHANDLERDIR)/example/scripts/purgeLocalCache.cron.d $(RCRONDIR)/lemonldap-ng-handler
510
	@if [ ! "$(APACHEUSER)" ]; then \
511
		$(PERL) -i -pe 's#__APACHEUSER__#nobody#g;' $(RCRONDIR)/lemonldap-ng-handler; \
512 513 514 515
	else \
		$(PERL) -i -pe 's#__APACHEUSER__#$(APACHEUSER)#g;' $(RCRONDIR)/lemonldap-ng-handler; \
	fi
	@$(PERL) -i -pe 's#__BINDIR__#$(BINDIR)#g;' $(RCRONDIR)/lemonldap-ng-handler
516
	@rm -rf $$(find $(RHANDLERDIR) -type d -name .svn)
517 518

install_test_site:
519
	# Test site install
520
	@install -v -d $(RTESTDIR)
Xavier Guimard's avatar
Xavier Guimard committed
521
	@cp -pR -f _example/test/* $(RTESTDIR)
522
	@rm -rf $$(find $(RTESTDIR) -type d -name .svn)
Xavier Guimard's avatar
Xavier Guimard committed
523
	@$(PERL) -i -pe 's/__DNSDOMAIN__/$(DNSDOMAIN)/g' $(RTESTDIR)/index.pl
524
	@rm -rf $$(find $(RTESTDIR) -type d -name .svn)
525 526

install_examples_site:
527
	# Examples install
528
	@install -v -d $(REXAMPLESDIR)
529
	@for i in manager portal handler; do \
Xavier Guimard's avatar
Xavier Guimard committed
530
		cp -a -f lemonldap-ng-$$i/example $(REXAMPLESDIR)/$$i; \
531
	done
532
	@rm -rf $(REXAMPLESDIR)/portal/skins \
Xavier Guimard's avatar
Xavier Guimard committed
533
		$(REXAMPLESDIR)/manager/skins \
534
	@rm -rf $$(find $(REXAMPLESDIR) -type d -name .svn)
535
	@$(PERL) -i -pe 's#__SESSIONDIR__#$(APACHESESSIONFILEDIR)/#g;' $(REXAMPLESDIR)/portal/*.pl
536
	@$(PERL) -i -pe 's#__PSESSIONDIR__#$(APACHEPSESSIONFILEDIR)/#g;' $(REXAMPLESDIR)/portal/*.pl
537

538
install_doc_site:
539
	# Offline documentation install
540 541
	@rm -rf $(RDEFDOCDIR)
	@install -v -d $(RDEFDOCDIR)
Xavier Guimard's avatar
Xavier Guimard committed
542
	@cp -a -f doc/* $(RDEFDOCDIR)
543

544
install_conf_dir:	install_sessions_dir install_notif_dir install_captcha_dir
545
	# Configuration files install
546
	@install -v -d $(RCONFDIR) $(RFILECONFIGDIR) $(RTOOLSDIR)
Clément OUDOT's avatar
Clément OUDOT committed
547
	@if [ "$(ERASECONFIG)" -eq "1" ]; then \
Xavier Guimard's avatar
Xavier Guimard committed
548
		cp -f $(SRCCOMMONDIR)/$(CONFFILENAME) $(RCONFDIR); \
Xavier Guimard's avatar
Xavier Guimard committed
549
		$(PERL) -i -pe 's#^dirName\s*=\s*.*#dirName = $(FILECONFIGDIR)#g' $(RCONFDIR)/$(CONFFILENAME); \
Clément OUDOT's avatar
Clément OUDOT committed
550
	fi
551
	@cp _example/conf/lmConf-1.js $(RFILECONFIGDIR)
Xavier Guimard's avatar
Xavier Guimard committed
552
	@$(PERL) -i -pe 's/__DNSDOMAIN__/$(DNSDOMAIN)/g;\
553
		s#__SESSIONDIR__#$(APACHESESSIONFILEDIR)#g;\
554
		s#__PSESSIONDIR__#$(APACHEPSESSIONFILEDIR)#g;\
555
		s#__NOTIFICATIONDIR__#$(APACHEFILENOTIFDIR)#g;' $(RFILECONFIGDIR)/lmConf-1.js
556 557 558 559 560 561 562 563 564
	@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
565 566
	@cp $(SRCCOMMONDIR)/tools/lmConfig.* $(SRCCOMMONDIR)/tools/apache-session-mysql.sql $(RTOOLSDIR)
	@cp $(SRCCOMMONDIR)/tools/sso.schema $(RTOOLSDIR)
567
	$(PERL) -i -pe 's/__DNSDOMAIN__/$(DNSDOMAIN)/g' $(RCONFDIR)/$(CONFFILENAME)
568
	@rm -rf $$(find $(RCONFDIR) $(RFILECONFIGDIR) $(RTOOLSDIR) -type d -name .svn)
569 570

install_sessions_dir:
571
	@install -m 777 -v -d $(RAPACHESESSIONFILEDIR) $(RAPACHESESSIONFILELOCKDIR) $(RAPACHEPSESSIONFILEDIR) $(RAPACHEPSESSIONFILELOCKDIR)
572 573
	# Fix Apache::Session directories permissions
	@if [ "$(APACHEUSER)" != "" ]; then \
574
		chown $(APACHEUSER) $(RAPACHESESSIONFILEDIR) $(RAPACHESESSIONFILELOCKDIR) $(RAPACHEPSESSIONFILEDIR) $(RAPACHEPSESSIONFILELOCKDIR) || exit 1; \
575
		if [ "$(APACHEGROUP)" != "" ]; then \
576
			chgrp $(APACHEGROUP) $(RAPACHESESSIONFILEDIR) $(RAPACHESESSIONFILELOCKDIR) $(RAPACHEPSESSIONFILEDIR) $(RAPACHEPSESSIONFILELOCKDIR) || exit 1; \
577
		fi; \
578
		chmod 770 $(RAPACHESESSIONFILEDIR) $(RAPACHESESSIONFILELOCKDIR) $(RAPACHEPSESSIONFILEDIR) $(RAPACHEPSESSIONFILELOCKDIR); \
579
	else \
580
		chmod 777 $(RAPACHESESSIONFILEDIR) $(RAPACHESESSIONFILELOCKDIR) $(RAPACHEPSESSIONFILEDIR) $(RAPACHEPSESSIONFILELOCKDIR); \
581 582
	fi

583 584 585 586 587 588 589 590 591 592 593 594 595
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

596
install_captcha_dir:
597
	@install -m 777 -v -d $(RCAPTCHADIR)
598 599
	# Fix captcha directory permissions
	@if [ "$(APACHEUSER)" != "" ]; then \
600
		chown $(APACHEUSER) $(RCAPTCHADIR) || exit 1; \
601
		if [ "$(APACHEGROUP)" != "" ]; then \
602
			chgrp $(APACHEGROUP) $(RCAPTCHADIR) || exit 1; \
603
		fi; \
604
		chmod 770 $(RCAPTCHADIR); \
605
	else \
606
		chmod 777 $(RCAPTCHADIR); \
607 608
	fi

609
postconf_hosts:
Clément OUDOT's avatar
Clément OUDOT committed
610
	@cat ${CONFDIR}/for_etc_hosts >> /etc/hosts
611 612
	@echo "/etc/hosts was updated"

613
postconf: postconf_hosts
614 615
	@echo "Post configuration done"

616 617
uninstall:	configure handler_uninstall portal_uninstall manager_uninstall

618 619 620 621
common_uninstall:	common
	@$(MAKE) -C ${SRCCOMMONDIR} uninstall
	@rm -vf common_uninstall

622
handler_uninstall:	handler
623
	@$(MAKE) -C ${SRCHANDLERDIR} uninstall
624
	@rm -vf handler_uninstall
625 626

portal_uninstall:		portal
627
	@$(MAKE) -C ${SRCPORTALDIR} uninstall
628
	@rm -vf portal_uninstall
629 630

manager_uninstall:	manager
631
	@$(MAKE) -C ${SRCMANAGERDIR} uninstall
632
	@rm -vf manager_uninstall
633

634
dist:	clean
635 636 637 638 639 640 641 642 643 644
	@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)
	@rm -rf lemonldap-ng-$(VERSION)/po-doc/fr/*
	@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)

rpm-dist:	clean
645
	@mkdir -p lemonldap-ng-$(VERSION)
646
	@cp -pRH $$(find * -maxdepth 0|grep -v -e "\(lemonldap-ng-$(VERSION)\|debian\)") lemonldap-ng-$(VERSION)
647 648
	@rm -rf $$(find lemonldap-ng-$(VERSION) -name .svn -print)
	@find $$dir -name '*.bak' -delete
649
	@rm -rf lemonldap-ng-$(VERSION)/lemonldap-ng-$(VERSION)
Xavier Guimard's avatar
Xavier Guimard committed
650
	@$(COMPRESS) lemonldap-ng-$(VERSION).$(COMPRESSSUFFIX) lemonldap-ng-$(VERSION)
651
	@rm -rf lemonldap-ng-$(VERSION)
652

653

654 655
debian-dist:	clean
	@mkdir -p lemonldap-ng-$(VERSION)
656
	@cp -pRH $$(find * -maxdepth 0|grep -v -e "\(lemonldap-ng-$(VERSION)\|rpm\)") lemonldap-ng-$(VERSION)
657 658
	@rm -rf $$(find lemonldap-ng-$(VERSION) -name .svn -print)
	@find $$dir -name '*.bak' -delete
659 660 661 662
	@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
663 664 665
	@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
666 667 668

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

670 671 672 673 674 675 676 677
manifest:   configure
	@for i in ${SRCCOMMONDIR} ${SRCHANDLERDIR} ${SRCPORTALDIR} ${SRCMANAGERDIR}; do \
		cd $$i; \
		make manifest; \
		rm -vf MANIFEST.*; \
		cd -; \
	done

678
cpan:	clean configure common_cpan handler_cpan portal_cpan manager_cpan
Clément OUDOT's avatar
Clément OUDOT committed
679
	for i in Common Portal Handler Manager; do \
Xavier Guimard's avatar
Xavier Guimard committed
680
		$(UNCOMPRESS) Lemonldap-NG-$$i-*.$(COMPRESSSUFFIX) \
Clément OUDOT's avatar
Clément OUDOT committed
681
			$$($(LISTCOMPRESSED) Lemonldap-NG-$$i-*.$(COMPRESSSUFFIX) |grep META.yml); \
Xavier Guimard's avatar
Xavier Guimard committed
682
		mv Lemonldap-NG-$$i-*/META.yml lemonldap-ng-$$($(PERL) -e "print lc('$$i')")/; \
683
		rm -rf Lemonldap-NG-$$i*/; \
Xavier Guimard's avatar
Xavier Guimard committed
684
		done
685 686 687 688

common_cpan:	common_conf
	@$(MAKE) -C ${SRCCOMMONDIR} dist
	@mv ${SRCCOMMONDIR}/Lemonldap*.gz .
689 690

handler_cpan:	handler_conf
691 692
	@$(MAKE) -C ${SRCHANDLERDIR} dist
	@mv ${SRCHANDLERDIR}/Lemonldap*.gz .
693 694

portal_cpan:		portal_conf
695 696
	@$(MAKE) -C ${SRCPORTALDIR} dist
	@mv ${SRCPORTALDIR}/Lemonldap*.gz .
697 698

manager_cpan:	manager_conf
699 700
	@$(MAKE) -C ${SRCMANAGERDIR} dist
	@mv ${SRCMANAGERDIR}/Lemonldap*.gz .
701

702
documentation:
703
	@cd doc/ && ../scripts/doc.pl
704

705
doxygen:	clean
Xavier Guimard's avatar
Xavier Guimard committed
706
	$(PERL) -i -pe 's/^(PROJECT_NUMBER\s*=\s*)\d.*$$/$${1}'$(VERSION)'/' Doxyfile
707 708 709 710 711 712
	COLLABORATIVE_GRAPH=1 doxygen Doxyfile
	mkdir doc/devel/tmp
	mv doc/devel/html/inherit* doc/devel/tmp/
	COLLABORATIVE_GRAPH=0 doxygen Doxyfile
	mv -f doc/devel/tmp/* doc/devel/html/
	rm -rf doc/devel/tmp
Xavier Guimard's avatar
Xavier Guimard committed
713
	$(PERL) -i -pe 's/Graphical Class Hierarchy/Class Collaboration Graph/' doc/devel/html/inherits.html doc/devel/html/tree.html
714 715
	# Some files are not generated
	for i in doc/devel/html/*dot; do dot -T png -o $${i/.dot/.png} $$i; rm -f $$i; done
716

717 718
distclean:	clean

Xavier Guimard's avatar
Xavier Guimard committed
719
clean:		common_clean handler_clean portal_clean manager_clean omegat-clean omegat-fr-clean stop_web_server
Xavier Guimard's avatar
Xavier Guimard committed
720
	@rm -f $$(find */ -name '*bak' -delete)
721
	@rm -rf $(EXAMPLEROOT) example/ doc/devel
Xavier Guimard's avatar
Xavier Guimard committed
722
	@rm -vf *gz *zip
Xavier Guimard's avatar
Xavier Guimard committed
723
	@rm -rf lemonldap-ng-$(VERSION)
Xavier Guimard's avatar
Xavier Guimard committed
724
	@echo "Cleaned"
725 726

common_clean:
Xavier Guimard's avatar
Xavier Guimard committed
727
	@if test -e ${SRCCOMMONDIR}/Makefile;then $(MAKE) -C ${SRCCOMMONDIR} distclean;fi
728 729 730
	@rm -vf common*

handler_clean:
Xavier Guimard's avatar
Xavier Guimard committed
731
	@if test -e ${SRCHANDLERDIR}/Makefile;then $(MAKE) -C ${SRCHANDLERDIR} distclean;fi
732 733 734
	@rm -vf handler*

portal_clean:
Xavier Guimard's avatar
Xavier Guimard committed
735
	@if test -e ${SRCPORTALDIR}/Makefile;then $(MAKE) -C ${SRCPORTALDIR} distclean;fi
736 737 738
	@rm -vf portal*

manager_clean:
Xavier Guimard's avatar
Xavier Guimard committed
739
	@if test -e ${SRCMANAGERDIR}/Makefile;then $(MAKE) -C ${SRCMANAGERDIR} distclean;fi
740 741
	@rm -vf manager*

742
debian-local-packages: debian-dist
Xavier Guimard's avatar
Xavier Guimard committed
743
	mv lemonldap-ng_$(VERSION).orig.$(COMPRESSSUFFIX) /tmp/
744 745
	version=$(VERSION) && \
	cd /tmp/ && \
Xavier Guimard's avatar
Xavier Guimard committed
746
	rm -rf lemonldap-ng-$$version && \
Xavier Guimard's avatar
Xavier Guimard committed
747
	$(UNCOMPRESS) lemonldap-ng_$$version.orig.$(COMPRESSSUFFIX) && \
748
	cd lemonldap-ng-$$version && \
Xavier Guimard's avatar
Xavier Guimard committed
749
	debuild -us -uc -b --lintian-opts -i \
Xavier Guimard's avatar
Xavier Guimard committed
750 751 752
		--lintian-opts -v --lintian-opts -I --lintian-opts -E \
		--lintian-opts --color --lintian-opts auto --lintian-opts -L \
		--lintian-opts +=pedantic
Xavier Guimard's avatar
Xavier Guimard committed
753

754 755 756 757 758 759 760 761 762 763 764 765 766
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 && \
	debuild -us -uc -b --lintian-opts -i \
		--lintian-opts -v --lintian-opts -I --lintian-opts -E \
		--lintian-opts --color --lintian-opts auto --lintian-opts -L \
		--lintian-opts +=pedantic

debian-install: debian-local-packages
Xavier Guimard's avatar
Xavier Guimard committed
767
	cd /tmp/lemonldap-ng-$(VERSION) && \
Xavier Guimard's avatar
Xavier Guimard committed
768 769 770 771 772 773
	$(SU) debi

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

diff: debian-diff
Xavier Guimard's avatar
Xavier Guimard committed
774

Xavier Guimard's avatar
Xavier Guimard committed
775
debian-diff:
Xavier Guimard's avatar
Xavier Guimard committed
776
	@# Portal
777 778 779
	@$(DIFF) $(SRCPORTALDIR)/lib/Lemonldap/NG/Portal $(DIFFPREFIX)/usr/share/perl5/Lemonldap/NG/Portal ||true
	@$(DIFF) $(SRCPORTALDIR)/example/scripts/purgeCentralCache $(DIFFPREFIX)/usr/share/lemonldap-ng/bin/purgeCentralCache ||true
	@$(DIFF) $(SRCPORTALDIR)/example/scripts/buildPortalWSDL $(DIFFPREFIX)/usr/share/lemonldap-ng/bin/buildPortalWSDL ||true
Xavier Guimard's avatar
Xavier Guimard committed
780
	@for i in $(PORTALSKINS); do \
781
		$(DIFF) -x 'jquery*' $(SRCPORTALDIR)/example/skins/$$i $(DIFFPREFIX)/usr/share/lemonldap-ng/portal-skins/$$i; \
Xavier Guimard's avatar
Xavier Guimard committed
782
	done ||true
783 784 785 786 787 788
	@$(DIFF) $(SRCPORTALDIR)/example/index_skin.pl $(DIFFPREFIX)/var/lib/lemonldap-ng/portal/index.pl ||true
	@$(DIFF) $(SRCPORTALDIR)/example/mail.pl $(DIFFPREFIX)/var/lib/lemonldap-ng/portal/mail.pl ||true
	@$(DIFF) $(SRCPORTALDIR)/example/metadata.pl $(DIFFPREFIX)/var/lib/lemonldap-ng/portal/metadata.pl ||true
	@$(DIFF) $(SRCPORTALDIR)/example/openid-configuration.pl $(DIFFPREFIX)/var/lib/lemonldap-ng/portal/openid-configuration.pl ||true
	@$(DIFF) $(SRCPORTALDIR)/example/cdc.pl $(DIFFPREFIX)/var/lib/lemonldap-ng/portal/cdc.pl ||true
	@$(DIFF) $(SRCPORTALDIR)/example/register.pl $(DIFFPREFIX)/var/lib/lemonldap-ng/portal/register.pl ||true
Xavier Guimard's avatar
Xavier Guimard committed
789
	@# Handler
790 791
	@$(DIFF) $(SRCHANDLERDIR)/lib/Lemonldap/NG/Handler $(DIFFPREFIX)/usr/share/perl5/Lemonldap/NG/Handler ||true
	@$(DIFF) $(SRCHANDLERDIR)/example/scripts/purgeLocalCache $(DIFFPREFIX)/usr/share/lemonldap-ng/bin/purgeLocalCache ||true
Xavier Guimard's avatar
Xavier Guimard committed
792
	@# Common
793 794 795 796 797
	@$(DIFF) $(SRCCOMMONDIR)/lib/Lemonldap/NG/Common $(DIFFPREFIX)/usr/share/perl5/Lemonldap/NG/Common ||true
	@$(DIFF) $(SRCCOMMONDIR)/lib/Lemonldap/NG/Common.pm $(DIFFPREFIX)/usr/share/perl5/Lemonldap/NG/Common.pm ||true
	@$(DIFF) $(SRCCOMMONDIR)/scripts/lmMigrateConfFiles2ini $(DIFFPREFIX)/usr/share/lemonldap-ng/bin/lmMigrateConfFiles2ini ||true
	@$(DIFF) $(SRCCOMMONDIR)/scripts/convertConfig $(DIFFPREFIX)/usr/share/lemonldap-ng/bin/convertConfig ||true
	@$(DIFF) $(SRCCOMMONDIR)/scripts/rotateOidcKeys $(DIFFPREFIX)/usr/share/lemonldap-ng/bin/rotateOidcKeys ||true
Xavier Guimard's avatar
Xavier Guimard committed
798
	@# Manager
799 800 801 802 803 804 805
	@$(DIFF) $(SRCMANAGERDIR)/lib/Lemonldap/NG/Manager $(DIFFPREFIX)/usr/share/perl5/Lemonldap/NG/Manager ||true
	@$(DIFF) $(SRCMANAGERDIR)/lib/Lemonldap/NG/Manager.pm $(DIFFPREFIX)/usr/share/perl5/Lemonldap/NG/Manager.pm ||true
	@$(DIFF) $(SRCMANAGERDIR)/eg $(DIFFPREFIX)/var/lib/lemonldap-ng/manager/psgi ||true
	@$(DIFF) $(SRCMANAGERDIR)/site/static $(DIFFPREFIX)/var/lib/lemonldap-ng/manager/static ||true
	@$(DIFF) $(SRCMANAGERDIR)/site/templates $(DIFFPREFIX)/var/lib/lemonldap-ng/manager/templates ||true
	@$(DIFF) --ignore-matching-lines='set.*get.*\[2\]' $(SRCMANAGERDIR)/scripts/lmConfigEditor $(DIFFPREFIX)/usr/share/lemonldap-ng/bin/lmConfigEditor ||true
	@$(DIFF) --ignore-matching-lines='giveUpPrivileges' $(SRCMANAGERDIR)/scripts/lemonldap-ng-cli $(DIFFPREFIX)/usr/share/lemonldap-ng/bin/lemonldap-ng-cli ||true
Xavier Guimard's avatar
Xavier Guimard committed
806

807 808
default-diff:
	@# Portal
809 810 811 812 813 814 815 816 817 818
	@$(DIFF) $(SRCPORTALDIR)/lib/Lemonldap/NG/Portal /usr/local/share/perl/$(PERLVERSION)/Lemonldap/NG/Portal ||true
	@$(DIFF) $(SRCPORTALDIR)/example/scripts/purgeCentralCache $(LMPREFIX)/bin/purgeCentralCache ||true
	@$(DIFF) $(SRCPORTALDIR)/example/scripts/buildPortalWSDL $(LMPREFIX)/bin/buildPortalWSDL ||true
	@$(DIFF) $(SRCPORTALDIR)/example/skins $(LMPREFIX)/htdocs/portal/skins ||true
	@$(DIFF) $(SRCPORTALDIR)/example/index_skin.pl $(LMPREFIX)/htdocs/portal/index.pl ||true
	@$(DIFF) $(SRCPORTALDIR)/example/mail.pl $(LMPREFIX)/htdocs/portal/mail.pl ||true
	@$(DIFF) $(SRCPORTALDIR)/example/register.pl $(LMPREFIX)/htdocs/portal/register.pl ||true
	@$(DIFF) $(SRCPORTALDIR)/example/metadata.pl $(LMPREFIX)/htdocs/portal/metadata.pl ||true
	@$(DIFF) $(SRCPORTALDIR)/example/openid-configuration.pl $(LMPREFIX)/htdocs/portal/openid-configuration.pl ||true
	@$(DIFF) $(SRCPORTALDIR)/example/cdc.pl $(LMPREFIX)/htdocs/portal/cdc.pl ||true
819
	@# Handler
820 821
	@$(DIFF) $(SRCHANDLERDIR)/lib/Lemonldap/NG/Handler /usr/local/share/perl/$(PERLVERSION)/Lemonldap/NG/Handler ||true
	@$(DIFF) $(SRCHANDLERDIR)/example/scripts/purgeLocalCache $(LMPREFIX)/bin/purgeLocalCache ||true
822
	@# Common
823 824 825 826 827
	@$(DIFF) $(SRCCOMMONDIR)/lib/Lemonldap/NG/Common /usr/local/share/perl/$(PERLVERSION)/Lemonldap/NG/Common ||true
	@$(DIFF) $(SRCCOMMONDIR)/lib/Lemonldap/NG/Common.pm /usr/local/share/perl/$(PERLVERSION)/Lemonldap/NG/Common.pm ||true
	@$(DIFF) $(SRCCOMMONDIR)/scripts/lmMigrateConfFiles2ini $(LMPREFIX)/bin/lmMigrateConfFiles2ini ||true
	@$(DIFF) $(SRCCOMMONDIR)/scripts/convertConfig $(LMPREFIX)/bin/convertConfig ||true
	@$(DIFF) $(SRCCOMMONDIR)/scripts/rotateOidcKeys $(LMPREFIX)/bin/rotateOidcKeys ||true
828
	@# Manager
829 830 831 832 833 834 835
	@$(DIFF) $(SRCMANAGERDIR)/lib/Lemonldap/NG/Manager /usr/local/share/perl/$(PERLVERSION)/Lemonldap/NG/Manager ||true
	@$(DIFF) $(SRCMANAGERDIR)/lib/Lemonldap/NG/Manager.pm /usr/local/share/perl/$(PERLVERSION)/Lemonldap/NG/Manager.pm ||true
	@$(DIFF) $(SRCMANAGERDIR)/eg $(LMPREFIX)/htdocs/manager/psgi ||true
	@$(DIFF) $(SRCMANAGERDIR)/site/static $(LMPREFIX)/htdocs/manager/static ||true
	@$(DIFF) $(SRCMANAGERDIR)/site/templates $(LMPREFIX)/htdocs/manager/templates ||true
	@$(DIFF) --ignore-matching-lines='set.*get.*\[2\]' $(SRCMANAGERDIR)/scripts/lmConfigEditor $(LMPREFIX)/bin/lmConfigEditor ||true
	@$(DIFF) --ignore-matching-lines='giveUpPrivileges' $(SRCMANAGERDIR)/scripts/lemonldap-ng-cli $(LMPREFIX)/bin/lemonldap-ng-cli ||true
836

837
tidy: clean
Xavier Guimard's avatar
Xavier Guimard committed
838
	find lemon*/ -type f \( -name '*.pm' -or -name '*.pl' -or -name '*.t' \) -print -exec perltidy -b {} \;
839 840
	find lemon*/ -name '*.bak' -delete

Xavier Guimard's avatar
Xavier Guimard committed
841
tidy-js: clean
842
	find lemon*/ -type f -name '*.js' ! -name 'jq*' ! -name 'bootstrap*' -print -exec scripts/javascript-indent {} \;
Xavier Guimard's avatar
Xavier Guimard committed
843

844 845 846 847
# TRANSLATION TARGETS #

# 1. Internal targets

848 849
language_code:
	perl -e ' \
Xavier Guimard's avatar
Xavier Guimard committed
850 851 852
		print { \
			fr=> "FR-FR", \
		}->{$(1)}'
853 854 855 856 857 858 859

test_omegat_%_dir:
	 @if [ ! -d omegat.files/$* ]; then \
	 	echo "omegat.files/$* does not exist"; \
		exit 1; \
	fi

860 861
omegat-configuration-file:
	perl -pe 'BEGIN{$$p=`pwd`;chomp $$p;}s/__LANG__/$(OMEGATCODE)/;s/__PWD__/$$p/o;' omegat.files/_base.project >omegat.files/$(LANGCODE)/omegat.project
862

863
translation: omegat-configuration-file
Xavier Guimard's avatar
Xavier Guimard committed
864
	omegat omegat.files/$(LANGCODE) --no-team --quiet
865

866
translated-doc: omegat-configuration-file
867 868
	omegat omegat.files/$(LANGCODE) --mode=console-translate --quiet 2>/dev/null
	cd po-doc/$(LANGCODE)/pages/documentation && rm -rf current && ln -s $$(find * -maxdepth 0 -type d) current
869

870 871
# 2. Public targets

872
%-translation: test_omegat_%_dir omegat-%-clean
873
	$(eval CODE = $(call language_code,$*))
Xavier Guimard's avatar
Xavier Guimard committed
874
	$(MAKE) translation LANGCODE=$* OMEGATCODE=`$(call language_code,$*)`
875

876
%-doc: test_omegat_%_dir omegat-%-clean
877
	mkdir -p po-doc/$*
878
	$(eval CODE = $(call language_code,$*))
Xavier Guimard's avatar
Xavier Guimard committed
879
	$(MAKE) translated-doc LANGCODE=$* OMEGATCODE=`$(call language_code,$*)`
880 881
	
omegat-clean:
882 883 884
	rm -rf omegat.files/*/omegat.project omegat.files/*/omegat/project_save*.bak

omegat-%-clean:
885
	rm -rf po-doc/$*
886

887
install_%_doc_site:
888 889
	@rm -rf $(RDOCDIR)/$*-doc || true
	@install -v -d $(RDOCDIR)/$*-doc
Xavier Guimard's avatar
Xavier Guimard committed
890
	@cp -dR -f po-doc/$*/* $(RDOCDIR)/$*-doc
891