From 85dd29f1481d02170e713e9e5b1f35e0d307da98 Mon Sep 17 00:00:00 2001 From: Christian Heimes Date: Aug 24 2018 10:15:52 +0000 Subject: Generate scripts from templates Python scripts are now generated from templates. The scripts are marked as nodist (no distribution) but install targets. The templates for the scripts are extra distribution data, no installation (noinst). Fixes: https://pagure.io/freeipa/issue/7680 Signed-off-by: Christian Heimes Reviewed-By: Alexander Bokovoy --- diff --git a/Makefile.am b/Makefile.am index ba4abf7..9f57d84 100644 --- a/Makefile.am +++ b/Makefile.am @@ -1,3 +1,5 @@ +NULL = + ACLOCAL_AMFLAGS = -I m4 if ENABLE_SERVER @@ -16,20 +18,35 @@ SUBDIRS = asn1 util client contrib po pypi $(PYTHON_SUBDIRS) $(SERVER_SUBDIRS) GENERATED_PYTHON_FILES = \ $(top_builddir)/ipaplatform/override.py \ - $(top_builddir)/ipapython/version.py + $(top_builddir)/ipapython/version.py \ + $(top_builddir)/makeaci \ + $(top_builddir)/makeapi \ + $(NULL) MOSTLYCLEANFILES = ipasetup.pyc ipasetup.pyo \ pylint_plugins.pyc pylint_plugins.pyo # user-facing scripts -dist_bin_SCRIPTS = ipa +nodist_bin_SCRIPTS = ipa # files required for build but not installed -dist_noinst_SCRIPTS = makeapi \ - makeaci \ - make-doc \ - make-test \ - pylint_plugins.py +nodist_noinst_SCRIPTS = \ + makeapi \ + makeaci \ + $(NULL) + +dist_noinst_SCRIPTS = \ + make-doc \ + make-test \ + pylint_plugins.py \ + $(NULL) + +# templates +dist_noinst_DATA = \ + ipa.in \ + makeaci.in \ + makeapi.in \ + $(NULL) ipasetup.py: ipasetup.py.in $(CONFIG_STATUS) $(AM_V_GEN)sed \ @@ -63,7 +80,6 @@ clean-local: rm -rf "$(top_srcdir)/__pycache__" rm -f "$(top_builddir)"/$(PACKAGE)-*.tar.gz - # convenience targets for RPM build .PHONY: rpmroot rpmdistdir version-update _dist-version-bakein _rpms-prep \ rpms _rpms-body srpms _srpms-body @@ -368,3 +384,13 @@ python_install: .PHONY: strip-po: $(MAKE) -C po strip-po + +PYTHON_SHEBANG = \ + ipa \ + makeaci \ + makeapi \ + $(NULL) + +CLEANFILES = $(PYTHON_SHEBANG) + +include $(top_srcdir)/Makefile.pythonscripts.am diff --git a/Makefile.pythonscripts.am b/Makefile.pythonscripts.am new file mode 100644 index 0000000..0d0e38b --- /dev/null +++ b/Makefile.pythonscripts.am @@ -0,0 +1,4 @@ +# special handling of Python scripts with auto-generated shebang line +$(PYTHON_SHEBANG):%: %.in Makefile + $(AM_V_GEN)sed -e 's|@PYTHONSHEBANG[@]|#!$(PYTHON) -E|g' $< > $@ + $(AM_V_GEN)chmod +x $@ diff --git a/client/Makefile.am b/client/Makefile.am index 6d3d6c4..6d0cdbc 100644 --- a/client/Makefile.am +++ b/client/Makefile.am @@ -40,9 +40,9 @@ sbin_PROGRAMS = \ $(NULL) sbin_SCRIPTS = \ - ipa-client-install \ - ipa-client-automount \ ipa-certupdate \ + ipa-client-automount \ + ipa-client-install \ $(NULL) ipa_getkeytab_SOURCES = \ @@ -98,10 +98,17 @@ noinst_HEADERS = \ ipa-client-common.h EXTRA_DIST = \ - $(sbin_SCRIPTS) \ + ipa-certupdate.in \ + ipa-client-automount.in \ + ipa-client-install.in \ $(NULL) install-data-hook: $(INSTALL) -d -m 755 $(DESTDIR)$(IPA_SYSCONF_DIR)/nssdb $(INSTALL) -d -m 755 $(DESTDIR)$(localstatedir)/lib/ipa-client/pki $(INSTALL) -d -m 755 $(DESTDIR)$(localstatedir)/lib/ipa-client/sysrestore + + +PYTHON_SHEBANG = $(sbin_SCRIPTS) + +include $(top_srcdir)/Makefile.pythonscripts.am diff --git a/daemons/dnssec/Makefile.am b/daemons/dnssec/Makefile.am index b0db4e1..3b37c11 100644 --- a/daemons/dnssec/Makefile.am +++ b/daemons/dnssec/Makefile.am @@ -3,7 +3,7 @@ AUTOMAKE_OPTIONS = 1.7 appdir = $(libexecdir)/ipa/ -dist_app_SCRIPTS = \ +nodist_app_SCRIPTS = \ ipa-dnskeysyncd \ ipa-dnskeysync-replica \ ipa-ods-exporter @@ -11,14 +11,18 @@ dist_app_SCRIPTS = \ dist_noinst_DATA = \ ipa-dnskeysyncd.service.in \ ipa-ods-exporter.service.in \ - ipa-ods-exporter.socket.in + ipa-ods-exporter.socket.in \ + ipa-dnskeysyncd.in \ + ipa-dnskeysync-replica.in \ + ipa-ods-exporter.in + systemdsystemunit_DATA = \ ipa-dnskeysyncd.service \ ipa-ods-exporter.service \ ipa-ods-exporter.socket -CLEANFILES = $(systemdsystemunit_DATA) +CLEANFILES = $(systemdsystemunit_DATA) $(nodist_app_SCRIPTS) %: %.in Makefile sed \ @@ -32,3 +36,9 @@ CLEANFILES = $(systemdsystemunit_DATA) dnssecconfdir = $(IPA_SYSCONF_DIR)/dnssec install-data-hook: $(INSTALL) -d -m 755 $(DESTDIR)$(dnssecconfdir) + +PYTHON_SHEBANG = \ + $(nodist_app_SCRIPTS) \ + $(NULL) + +include $(top_srcdir)/Makefile.pythonscripts.am diff --git a/install/certmonger/Makefile.am b/install/certmonger/Makefile.am index 63fd577..5c4da53 100644 --- a/install/certmonger/Makefile.am +++ b/install/certmonger/Makefile.am @@ -1,11 +1,18 @@ NULL = appdir = $(libexecdir)/certmonger/ -app_SCRIPTS = \ +nodist_app_SCRIPTS = \ dogtag-ipa-ca-renew-agent-submit \ ipa-server-guard \ $(NULL) -EXTRA_DIST = \ - $(app_SCRIPTS) \ +dist_noinst_DATA = \ + dogtag-ipa-ca-renew-agent-submit.in \ + ipa-server-guard.in \ $(NULL) + +PYTHON_SHEBANG = $(nodist_app_SCRIPTS) + +CLEANFILES = $(PYTHON_SHEBANG) + +include $(top_srcdir)/Makefile.pythonscripts.am \ No newline at end of file diff --git a/install/oddjob/Makefile.am b/install/oddjob/Makefile.am index 1dbd8fa..101c114 100644 --- a/install/oddjob/Makefile.am +++ b/install/oddjob/Makefile.am @@ -4,11 +4,19 @@ oddjobdir = $(libexecdir)/ipa/oddjob oddjobconfdir = $(sysconfdir)/oddjobd.conf.d dbusconfdir = $(sysconfdir)/dbus-1/system.d +dist_noinst_DATA = \ + com.redhat.idm.trust-fetch-domains.in \ + $(NULL) + dist_oddjob_SCRIPTS = \ - com.redhat.idm.trust-fetch-domains \ org.freeipa.server.conncheck \ $(NULL) +nodist_oddjob_SCRIPTS = \ + com.redhat.idm.trust-fetch-domains \ + $(NULL) + + dist_dbusconf_DATA = \ etc/dbus-1/system.d/oddjob-ipa-trust.conf \ etc/dbus-1/system.d/org.freeipa.server.conf \ @@ -18,3 +26,8 @@ dist_oddjobconf_DATA = \ etc/oddjobd.conf.d/oddjobd-ipa-trust.conf \ etc/oddjobd.conf.d/ipa-server.conf \ $(NULL) + +PYTHON_SHEBANG = $(nodist_oddjob_SCRIPTS) +CLEANFILES = $(PYTHON_SHEBANG) + +include $(top_srcdir)/Makefile.pythonscripts.am diff --git a/install/restart_scripts/Makefile.am b/install/restart_scripts/Makefile.am index 240cebd..6002ee5 100644 --- a/install/restart_scripts/Makefile.am +++ b/install/restart_scripts/Makefile.am @@ -12,5 +12,16 @@ app_DATA = \ $(NULL) EXTRA_DIST = \ - $(app_DATA) \ - $(NULL) + restart_dirsrv.in \ + restart_httpd.in \ + renew_ca_cert.in \ + renew_kdc_cert.in \ + renew_ra_cert.in \ + stop_pkicad.in \ + renew_ra_cert_pre.in \ + $(NULL) + +PYTHON_SHEBANG = $(app_DATA) +CLEANFILES = $(PYTHON_SHEBANG) + +include $(top_srcdir)/Makefile.pythonscripts.am diff --git a/install/tools/Makefile.am b/install/tools/Makefile.am index 599519f..7167b38 100644 --- a/install/tools/Makefile.am +++ b/install/tools/Makefile.am @@ -4,7 +4,38 @@ SUBDIRS = \ man \ $(NULL) -dist_sbin_SCRIPTS = \ +dist_noinst_DATA = \ + ipa-ca-install.in \ + ipa-dns-install.in \ + ipa-kra-install.in \ + ipa-server-install.in \ + ipa-adtrust-install.in \ + ipa-replica-conncheck.in \ + ipa-replica-install.in \ + ipa-replica-prepare.in \ + ipa-replica-manage.in \ + ipa-csreplica-manage.in \ + ipa-server-certinstall.in \ + ipa-server-upgrade.in \ + ipactl.in \ + ipa-compat-manage.in \ + ipa-nis-manage.in \ + ipa-managed-entries.in \ + ipa-ldap-updater.in \ + ipa-otptoken-import.in \ + ipa-backup.in \ + ipa-restore.in \ + ipa-advise.in \ + ipa-cacert-manage.in \ + ipa-winsync-migrate.in \ + ipa-pkinit-manage.in \ + ipa-custodia.in \ + ipa-custodia-check.in \ + ipa-httpd-kdcproxy.in \ + ipa-pki-retrieve-key.in \ + $(NULL) + +nodist_sbin_SCRIPTS = \ ipa-ca-install \ ipa-dns-install \ ipa-kra-install \ @@ -32,10 +63,22 @@ dist_sbin_SCRIPTS = \ $(NULL) appdir = $(libexecdir)/ipa/ -dist_app_SCRIPTS = \ +nodist_app_SCRIPTS = \ ipa-custodia \ ipa-custodia-check \ ipa-httpd-kdcproxy \ - ipa-httpd-pwdreader \ ipa-pki-retrieve-key \ $(NULL) + +dist_app_SCRIPTS = \ + ipa-httpd-pwdreader \ + $(NULL) + +PYTHON_SHEBANG = \ + $(nodist_sbin_SCRIPTS) \ + $(nodist_app_SCRIPTS) \ + $(NULL) + +CLEANFILES = $(PYTHON_SHEBANG) + +include $(top_srcdir)/Makefile.pythonscripts.am