# # NE PAS EDITER CE FICHIER # # Utiliser .mk à inclure à la fin de Makefile ################# # Sanity checks # ################# ifeq (, $(DESTDIR)) $(warning $$(DESTDIR) is empty, installation will be done in /) endif ifeq (, $(filter-out XXX-XXX, $(strip $(SOURCE)))) $(error $$(SOURCE) variable has incorrect value '$(SOURCE)') endif ifeq (, $(filter-out 2.X, $(strip $(EOLE_VERSION)))) $(error $$(EOLE_VERSION) variable has incorrect value '$(EOLE_VERSION)') endif ifeq (, $(filter-out 2.X.Y, $(strip $(EOLE_RELEASE)))) $(error $$(EOLE_RELEASE) variable has incorrect value '$(EOLE_RELEASE)') endif ######################### # Variables definitions # ######################### INSTALL := install INSTALL_DATA := install -m 644 INSTALL_PROGRAM := install -m 755 INSTALL_DIRECTORY := install -m 755 -d INSTALL_RECURSIVE := cp -dr --no-preserve=ownership # Standard path bin_PROG_DIR := $(DESTDIR)/usr/bin sbin_PROG_DIR := $(DESTDIR)/usr/sbin man8_DATA_DIR := $(DESTDIR)/usr/share/man/fr.UTF-8/man8 # Base eole_DIR := $(DESTDIR)/usr/share/eole ifeq ($(strip $(EOLE_VERSION)), 2.3) diagnose_PROG_DIR := $(eole_DIR)/diagnose/module else diagnose_PROG_DIR := $(eole_DIR)/diagnose/ endif # Creole creole_DIR := $(eole_DIR)/creole dicos_DATA_DIR := $(creole_DIR)/dicos tmpl_DATA_DIR := $(creole_DIR)/distrib preservice_PROG_DIR := $(eole_DIR)/preservice pretemplate_PROG_DIR := $(eole_DIR)/pretemplate posttemplate_PROG_DIR := $(eole_DIR)/posttemplate postservice_PROG_DIR := $(eole_DIR)/postservice ifeq ($(strip $(EOLE_VERSION)), 2.3) firewall_DATA_DIR := $(eole_DIR)/firewall endif bacula_restore_DATA_DIR := $(eole_DIR)/bacula/restore bareos_restore_DATA_DIR := $(eole_DIR)/bareos/restore bacula_fichier_DATA_DIR := $(DESTDIR)/etc/bacula/baculafichiers.d bareos_fichier_DATA_DIR := $(DESTDIR)/etc/bareos/bareosfichiers.d ifeq ($(strip $(EOLE_VERSION)), 2.3) schedule_pre_PROG_DIR := $(eole_DIR)/schedule/pre schedule_post_PROG_DIR := $(eole_DIR)/schedule/post else schedule_scripts_PROG_DIR := $(eole_DIR)/schedule/scripts endif extra_REC_DIR := $(creole_DIR)/extra # Zéphir zephir_DATA_DIR := $(DESTDIR)/usr/share/zephir zephir_configs_DATA_DIR := $(zephir_DATA_DIR)/monitor/configs zephir_srv_DATA_DIR := $(zephir_configs_DATA_DIR)/services zephir_scripts_PROG_DIR := $(zephir_DATA_DIR)/scripts # SSO sso_DATA_DIR := $(DESTDIR)/usr/share/sso sso_filtres_DATA_DIR := $(sso_DATA_DIR)/app_filters sso_user-info_DATA_DIR := $(sso_DATA_DIR)/user_infos # EAD ead_DATA_DIR := $(DESTDIR)/usr/share/ead2/backend/config ead_actions_DATA_DIR := $(ead_DATA_DIR)/actions ead_perms_DATA_DIR := $(ead_DATA_DIR)/perms ead_roles_DATA_DIR := $(ead_DATA_DIR)/roles # Program libraries goes under /usr/lib// lib_$(SOURCE)_DATA_DIR := $(DESTDIR)/usr/lib/$(SOURCE) # Scripts Eole scripts_PROG_DIR := $(eole_DIR)/sbin lib_eole_DATA_DIR := $(DESTDIR)/usr/lib/eole # LDAP ldap_passwords_DATA_DIR := $(eole_DIR)/annuaire/password_files # LXC lxc_DATA_DIR := $(eole_DIR)/lxc lxc_fstab_DATA_DIR := $(lxc_DATA_DIR)/fstab lxc_hosts_DATA_DIR := $(lxc_DATA_DIR)/hosts # SQL sql_DATA_DIR := $(eole_DIR)/mysql/$(SOURCE) sql_gen_DATA_DIR := $(sql_DATA_DIR)/gen sql_updates_DATA_DIR := $(sql_DATA_DIR)/updates sql_conf_gen_DATA_DIR := $(eole_DIR)/applications/gen sql_conf_passwords_DATA_DIR := $(eole_DIR)/applications/passwords sql_conf_updates_DATA_DIR := $(eole_DIR)/applications/updates/$(SOURCE) # EoleDB sql directory db_DIR := $(eole_DIR)/db db_gen_DATA_DIR := $(eole_DIR)/db/$(SOURCE)/gen db_updates_DATA_DIR := $(eole_DIR)/db/$(SOURCE)/updates # Certifs certs_DATA_DIR := $(eole_DIR)/certs # Logrotate logrotate_DATA_DIR := $(DESTDIR)/etc/logrotate.d # Cron cron_PROG_DIR := $(DESTDIR)/etc/cron.daily # Python modules ifneq ($(DESTDIR),) PYTHON_OPTS := --root $(DESTDIR) endif # Translation TRANSLATION_SRC := translation TRANSLATION_DEST := $(DESTDIR)/usr/share/locale PO_FILES = $(wildcard $(TRANSLATION_SRC)/*/*.po) MO_FOLDERS = $(addprefix $(TRANSLATION_DEST), $(addsuffix LC_MESSAGES,$(subst $(TRANSLATION_SRC),,$(dir $(PO_FILES))))) ############################################# # Common directories and files installation # ############################################# all: $(MO_FOLDERS): $(INSTALL_DIRECTORY) $@ $(PO_FILES): $(MO_FOLDERS) msgfmt -o $(TRANSLATION_DEST)$(subst $(TRANSLATION_SRC),,$(addsuffix LC_MESSAGES,$(dir $@)))/$(notdir $(@:.po=.mo)) $@ install-lang: $(PO_FILES) install:: install-dirs install-files install-lang # $1 = command to run # $2 = source directory # $3 = destination directory define fc_install_file if [ -d $2 ]; then \ for file in `ls -1 $2/`; do \ $1 $2/$$file $3 || true; \ done; \ fi endef ## ## Directory creation ## # use % to catch local name in $* # data, program and recursive directory require a corresponding # directory in local sources %_DATA_DIR %_PROG_DIR %REC_DIR: test ! -d $(subst _,/,$*) || $(INSTALL_DIRECTORY) $($@) # Create the directory referenced by the variable without a local one. %_DIR: @: # do nothing ## ## Install files present directly under data, program and recursive directories ## # $* : name of variable # $($*): value of variable %-instdata: $(call fc_install_file, $(INSTALL_DATA), $(subst _,/,$(subst _DATA_DIR,,$*)), $($*)) %-instprog: $(call fc_install_file, $(INSTALL_PROGRAM), $(subst _,/,$(subst _PROG_DIR,,$*)), $($*)) %-instrec: $(call fc_install_file, $(INSTALL_RECURSIVE), $(subst _,/,$(subst _REC_DIR,,$*)), $($*)) # Use second expansion as variables may be created in included # Makefiles .SECONDEXPANSION: # List of all directories installdirs_LIST = $(foreach V, $(filter %_DIR, $(.VARIABLES)), \ $(if $(filter file, $(origin $(V))), \ $(V))) # List of data directories installdata_LIST = $(filter %_DATA_DIR, $(installdirs_LIST)) # List of program directories installprog_LIST = $(filter %_PROG_DIR, $(installdirs_LIST)) # List of recursive directories installrec_LIST = $(filter %_REC_DIR, $(installdirs_LIST)) # Expand directories to create as dependency # Use double-colon to permit user to define additionnal install-dirs install-dirs:: $$(installdirs_LIST) # Expand files to install as dependency # Use double-colon to permit user to define additionnal install-files install-files:: install-data-files install-prog-files install-rec-dirs install-data-files: $$(patsubst %,%-instdata,$$(installdata_LIST)) install-prog-files: $$(patsubst %,%-instprog,$$(installprog_LIST)) install-rec-dirs: $$(patsubst %,%-instrec,$$(installrec_LIST)) # Installation of python modules ifeq ($(shell test -f setup.py && echo 0), 0) install-files:: python setup.py install --no-compile --install-layout=deb $(PYTHON_OPTS) endif .PHONY: install install-dirs install-files install-data-files install-prog-files install-rec-dirs