[X2Go-Commits] [x2goserver] 02/17: x2goserver/Makefile: allow auto-generation of files, including installation, uninstallation and cleanup.

git-admin at x2go.org git-admin at x2go.org
Sun Jun 23 04:43:04 CEST 2019


This is an automated email from the git hooks/post-receive script.

x2go pushed a commit to branch master
in repository x2goserver.

commit b8cacb5e690882d2cba6dec4d0a1b9a1a875b224
Author: Mihai Moldovan <ionic at ionic.de>
Date:   Sat Jun 22 02:44:26 2019 +0200

    x2goserver/Makefile: allow auto-generation of files, including installation, uninstallation and cleanup.
---
 debian/changelog    |  2 ++
 x2goserver/Makefile | 85 +++++++++++++++++++++++++++++++++++++++++++++--------
 2 files changed, 74 insertions(+), 13 deletions(-)

diff --git a/debian/changelog b/debian/changelog
index 2818943..f316ef1 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -87,6 +87,8 @@ x2goserver (4.1.0.4-0x2go1.1) UNRELEASED; urgency=medium
     - x2goserver/bin/x2gostartagent: also use ${AGENTBIN} in shadow session
       code.
     - x2goserver/bin/x2goruncommand: fix syntax.
+    - x2goserver/Makefile: allow auto-generation of files, including
+      installation, uninstallation and cleanup.
   * debian/control:
     + Build-depend upon lsb-release for distro version detection.
   * debian/x2goserver.manpages:
diff --git a/x2goserver/Makefile b/x2goserver/Makefile
index b49e73a..7204c1a 100755
--- a/x2goserver/Makefile
+++ b/x2goserver/Makefile
@@ -38,6 +38,27 @@ build: build-arch build-indep
 build-arch:
 
 build-indep: build_pod2man build_man2html
+	for dir in 'bin' 'sbin' 'lib' 'share/x2gofeature.d'; do \
+		for gen_file in "$${!dir}/"*; do \
+			file="$${gen_file%.in}"; \
+			if [ "$${gen_file}" != "$${file}" ]; then \
+				$$("# Copy the file first, making sure we keep permissions."); \
+				cp -a "$${gen_file}" "$${file}"; \
+				\
+				$$("# Run actual substitutions."); \
+				PREFIX='$(PREFIX)'; \
+				ETCDIR='$(ETCDIR)'; \
+				BINDIR='$(BINDIR)'; \
+				SBINDIR='$(SBINDIR)'; \
+				LIBDIR='$(LIBDIR)'; \
+				MANDIR='$(MANDIR)'; \
+				SHAREDIR='$(SHAREDIR)'; \
+				for subst in 'PREFIX' 'ETCDIR' 'BINDIR' 'SBINDIR' 'LIBDIR' 'MANDIR' 'SHAREDIR'; do \
+					sed -e "s#@@$${subst}@@#$${!subst}#g" "$${gen_file}" > "$${file}"; \
+				done; \
+			fi; \
+		done; \
+	done
 
 build_pod2man:
 	for sectioned_script in $(POD_SCRIPTS); do \
@@ -74,21 +95,44 @@ clean: clean-arch clean-indep
 clean-arch:
 
 clean-indep: clean_man2html
+	for dir in 'bin' 'sbin' 'lib' 'share/x2gofeature.d'; do \
+		for gen_file in "$${!dir}/"*; do \
+			file="$${gen_file%.in}"; \
+			if [ "$${gen_file}" != "$${file}" ]; then \
+				$(RM_FILE) "$${file}"; \
+			fi; \
+		done; \
+	done
 
 clean_man2html:
 	rm -Rf `dirname $(MAN2HTML_DEST)`
 
-install: install_scripts install_config install_man install_version
+install: build install_scripts install_config install_man install_version
 
 install_scripts:
-	$(INSTALL_DIR) $(DESTDIR)$(BINDIR)
-	$(INSTALL_DIR) $(DESTDIR)$(SBINDIR)
-	$(INSTALL_DIR) $(DESTDIR)$(LIBDIR)
-	$(INSTALL_DIR) $(DESTDIR)$(SHAREDIR)/x2gofeature.d
-	$(INSTALL_PROGRAM) bin/*                $(DESTDIR)$(BINDIR)/
-	$(INSTALL_PROGRAM) sbin/*               $(DESTDIR)$(SBINDIR)/
-	$(INSTALL_PROGRAM) lib/*                   $(DESTDIR)$(LIBDIR)/
-	$(INSTALL_PROGRAM) share/x2gofeature.d/*.features $(DESTDIR)$(SHAREDIR)/x2gofeature.d/
+	for dir in 'bin' 'sbin' 'lib' 'share/x2gofeature.d'; do \
+		$("# Create (and save) destination directory."); \
+		dest='$(DESTDIR)'; \
+		case "$${dir}" in \
+			('bin') dest="$${dest}$(BINDIR)/";; \
+			('sbin') dest="$${dest}$(SBINDIR)/";; \
+			('lib') dest="$${dest}$(LIBDIR)/";; \
+			('share/x2gofeature.d') dest="$${dest}$(SHAREDIR)/x2gofeature.d/";; \
+			(*) printf '%s\n' 'Unknown component in install_scripts scriptlet.' >&2; exit '1';; \
+		esac; \
+		$(INSTALL_DIR) "$${dest}"; \
+		\
+		$("# Iterate over files and ..."); \
+		for gen_file in "$${!dir}/"*; do \
+			file="$${gen_file%.in}"; \
+			$("# ... filter out generation templates and anything not ending in '.features' for the feature directory."); \
+			if [ "$${gen_file}" != "$${file}" ] || ( [ "$${dir}" = 'share/x2gofeature.d' ] && [ "$${file%.features}" = "$${file}" ] ); then \
+				continue; \
+			fi; \
+			\
+			$(INSTALL_PROGRAM) "$${file}" "$${dest}/"; \
+		done; \
+	done
 
 install_config:
 	$(INSTALL_DIR) $(DESTDIR)$(ETCDIR)
@@ -120,10 +164,25 @@ install_version:
 uninstall: uninstall_scripts uninstall_config uninstall_man uninstall_version
 
 uninstall_scripts:
-	for file in $(BIN_SCRIPTS); do $(RM_FILE) $(DESTDIR)$(BINDIR)/$$file; done
-	for file in $(SBIN_SCRIPTS); do $(RM_FILE) $(DESTDIR)$(SBINDIR)/$$file; done
-	for file in $(LIB_FILES); do $(RM_FILE) $(DESTDIR)$(LIBDIR)/$$file; done
-	for file in $(FEATURE_SCRIPTS); do $(RM_FILE) $(DESTDIR)$(SHAREDIR)/x2gofeature.d/$$file; done
+	for dir in 'bin' 'sbin' 'lib' 'share/x2gofeature.d'; do \
+		$("# Create (and save) destination directory."); \
+		dest='$(DESTDIR)'; \
+		case "$${dir}" in \
+			('bin') dest="$${dest}$(BINDIR)/";; \
+			('sbin') dest="$${dest}$(SBINDIR)/";; \
+			('lib') dest="$${dest}$(LIBDIR)/";; \
+			('share/x2gofeature.d') dest="$${dest}$(SHAREDIR)/x2gofeature.d/";; \
+			(*) printf '%s\n' 'Unknown component in uninstall_scripts scriptlet.'; exit '1';; \
+		esac; \
+		$(INSTALL_DIR) "$${dest}"; \
+		\
+		$("# Iterate over files and ..."); \
+		for gen_file in "$${!dir}/"*; do \
+			$("# ... map generation templates to generated files (so that uninstallation works correctly after cleaning as well)."); \
+			file="$${gen_file%.in}"; \
+			$(RM_FILE) "$${dest}/$${file}"; \
+		done; \
+	done
 	$(RM_DIR) $(DESTDIR)$(LIBDIR) || true
 	$(RM_DIR) $(DESTDIR)$(SHAREDIR)/x2gofeature.d || true
 	$(RM_DIR) $(DESTDIR)$(SHAREDIR) || true

--
Alioth's /home/x2go-admin/maintenancescripts/git/hooks/post-receive-email on /srv/git/code.x2go.org/x2goserver.git


More information about the x2go-commits mailing list