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 <cheimes@redhat.com>
Reviewed-By: Alexander Bokovoy <abokovoy@redhat.com>
This commit is contained in:
Christian Heimes
2018-08-22 17:15:55 +02:00
parent a347c11650
commit c8da61b92a
8 changed files with 143 additions and 23 deletions

View File

@@ -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

View File

@@ -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 $@

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -4,7 +4,37 @@ 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-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 \
@@ -31,10 +61,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