From fd14dd8316b1317d3ee2ff28b9d013198be40d70 Mon Sep 17 00:00:00 2001 From: Lee Duncan Date: Sun, 20 Mar 2022 16:12:40 -0700 Subject: Clean up Makefile build system. A major overdue overhaul of the Make layout, including moving lots of lower-level things out of the top-level Makefile into the Makefiles for the appropriate subdirectory, renaming the template files (where @SBINDIR@ gets translated) so that their purpose is more obvious, making the build more idempotent (no need to install a file if it's not newer). Should be no functional change, as no script or C file changed. Main difference from before: now the udev rules gets made and installed by default (as part of "make"/"make install"), and the iscsiuio daemon is now installed for "make install". One should now be able to go into any subdirectory and type "make"/"make install" to build and install the targets from that directory, at least for the etc, utils, and usr subdirectories. This change is in preparation for more template translations coming. --- etc/Makefile | 81 +++++++++++++++++++++++++++++++++ etc/systemd/.gitignore | 4 ++ etc/systemd/iscsi-init.service | 19 -------- etc/systemd/iscsi-init.service.template | 19 ++++++++ etc/systemd/iscsi.service | 18 -------- etc/systemd/iscsi.service.template | 18 ++++++++ etc/systemd/iscsid.service | 19 -------- etc/systemd/iscsid.service.template | 19 ++++++++ etc/systemd/iscsiuio.service | 20 -------- etc/systemd/iscsiuio.service.template | 20 ++++++++ 10 files changed, 161 insertions(+), 76 deletions(-) create mode 100644 etc/Makefile create mode 100644 etc/systemd/.gitignore delete mode 100644 etc/systemd/iscsi-init.service create mode 100644 etc/systemd/iscsi-init.service.template delete mode 100644 etc/systemd/iscsi.service create mode 100644 etc/systemd/iscsi.service.template delete mode 100644 etc/systemd/iscsid.service create mode 100644 etc/systemd/iscsid.service.template delete mode 100644 etc/systemd/iscsiuio.service create mode 100644 etc/systemd/iscsiuio.service.template (limited to 'etc') diff --git a/etc/Makefile b/etc/Makefile new file mode 100644 index 0000000..8a7d7c0 --- /dev/null +++ b/etc/Makefile @@ -0,0 +1,81 @@ +# +# gnu Makefile for the etc subdirectory, including +# initd and systemd subdirectories +# + +prefix = /usr +DESTDIR ?= +SBINDIR ?= $(DESTDIR)/sbin + +systemddir ?= $(DESTDIR)$(prefix)/lib/systemd +etcdir = $(DESTDIR)/etc +initddir ?= $(etcdir)/init.d + +HOMEDIR ?= $(etcdir)/iscsi + +SED = /usr/bin/sed +INSTALL = install + +SYSTEMD_SOURCE_FILES = iscsid.socket iscsiuio.socket +SYSTEMD_SOURCES = $(addprefix systemd/,$(SYSTEMD_SOURCE_FILES)) +SYSTEMD_TEMPLATE_FILES = iscsi-init.service.template \ + iscsid.service.template \ + iscsi.service.template \ + iscsiuio.service.template +SYSTEMD_TEMPLATES = $(addprefix systemd/,$(SYSTEMD_TEMPLATE_FILES)) +SYSTEMD_GENERATED_SERVICE_FILES = $(SYSTEMD_TEMPLATES:.template=) +SYSTEMD_DEST_FILES = $(addprefix $(systemddir)/system/,$(notdir $(SYSTEMD_SOURCES))) \ + $(addprefix $(systemddir)/system/,$(notdir $(SYSTEMD_GENERATED_SERVICE_FILES))) +IFACE_FILES = iface.example +IFACE_DEST_FILES = $(addprefix $(HOMEDIR)/ifaces/,$(IFACE_FILES)) +ETC_FILES = iscsid.conf +ETC_DEST_FILES = $(addprefix $(HOMEDIR)/,$(ETC_FILES)) + +all: $(SYSTEMD_SOURCES) $(SYSTEMD_GENERATED_SERVICE_FILES) + +$(SYSTEMD_GENERATED_SERVICE_FILES): systemd/%.service: systemd/%.service.template + $(SED) -e 's:@SBINDIR@:$(SBINDIR):' $? > $@ + +install: install_systemd install_iface install_etc + +install_iface: $(IFACE_DEST_FILES) + +$(IFACE_DEST_FILES): $(HOMEDIR)/ifaces/%: % + $(INSTALL) -m 644 $? $@ + +install_etc: $(ETC_DEST_FILES) + +$(ETC_DEST_FILES): $(HOMEDIR)/%: % + $(INSTALL) -m 644 $? $@ + +install_initd_distro = $(INSTALL) -m 755 $(1) $(initddir)/open-iscsi/ + +install_initd: $(initddir)/open-iscsi + @if [ -f /etc/debian_version ]; then \ + $(call install_initd_distro,initd/initd.redhat) ; \ + elif [ -f /etc/redhat-release ]; then \ + $(call install_initd_distro,initd/initd.debian) ; \ + fi + +$(initddir)/open-iscsi: + [ -d $@ ] || $(INSTALL) -d $@ + +install_initd_redhat: $(initddir)/open-iscsi + $(call install_initd_distro,initd/initd.redhat) + +install_initd_debian: $(initddir)/open-iscsi + $(call install_initd_distro,initd/initd.debian) + +install_systemd: $(systemddir)/system $(SYSTEMD_DEST_FILES) + +$(systemddir)/system: + [ -d $@ ] || $(INSTALL) -d -m 775 $@ + +$(SYSTEMD_DEST_FILES): $(systemddir)/system/%: systemd/% + $(INSTALL) $? $@ + +clean: + $(RM) $(SYSTEMD_GENERATED_SERVICE_FILES) + +.PHONY: all clean install install_iface install_initd install_initd_redhat \ + install_initd_debian install_systemd diff --git a/etc/systemd/.gitignore b/etc/systemd/.gitignore new file mode 100644 index 0000000..2b3a64e --- /dev/null +++ b/etc/systemd/.gitignore @@ -0,0 +1,4 @@ +iscsi-init.service +iscsi.service +iscsid.service +iscsiuio.service diff --git a/etc/systemd/iscsi-init.service b/etc/systemd/iscsi-init.service deleted file mode 100644 index 8f9a8aa..0000000 --- a/etc/systemd/iscsi-init.service +++ /dev/null @@ -1,19 +0,0 @@ -[Unit] -Description=One time configuration for iscsi.service -ConditionPathExists=!/etc/iscsi/initiatorname.iscsi -DefaultDependencies=no -RequiresMountsFor=/etc/iscsi -# systemd-remount-fs.service is optionally pulled in by -# local-fs.target, don't start it here (no Wants=) but if -# it's running wait for it to finish -After=systemd-remount-fs.service - -[Install] -# this ensures we are in the same transaction with -# systemd-remount-fs.service -WantedBy=systemd-remount-fs.service - -[Service] -Type=oneshot -RemainAfterExit=no -ExecStart=/usr/bin/sh -c 'echo "InitiatorName=`@SBINDIR@/iscsi-iname`" > /etc/iscsi/initiatorname.iscsi' diff --git a/etc/systemd/iscsi-init.service.template b/etc/systemd/iscsi-init.service.template new file mode 100644 index 0000000..8f9a8aa --- /dev/null +++ b/etc/systemd/iscsi-init.service.template @@ -0,0 +1,19 @@ +[Unit] +Description=One time configuration for iscsi.service +ConditionPathExists=!/etc/iscsi/initiatorname.iscsi +DefaultDependencies=no +RequiresMountsFor=/etc/iscsi +# systemd-remount-fs.service is optionally pulled in by +# local-fs.target, don't start it here (no Wants=) but if +# it's running wait for it to finish +After=systemd-remount-fs.service + +[Install] +# this ensures we are in the same transaction with +# systemd-remount-fs.service +WantedBy=systemd-remount-fs.service + +[Service] +Type=oneshot +RemainAfterExit=no +ExecStart=/usr/bin/sh -c 'echo "InitiatorName=`@SBINDIR@/iscsi-iname`" > /etc/iscsi/initiatorname.iscsi' diff --git a/etc/systemd/iscsi.service b/etc/systemd/iscsi.service deleted file mode 100644 index 6becab4..0000000 --- a/etc/systemd/iscsi.service +++ /dev/null @@ -1,18 +0,0 @@ -[Unit] -Description=Login and scanning of iSCSI devices -Documentation=man:iscsiadm(8) man:iscsid(8) -Before=remote-fs.target -After=network-online.target iscsid.service -Requires=iscsid.socket iscsi-init.service -Wants=network-online.target - -[Service] -Type=oneshot -ExecStart=@SBINDIR@/iscsiadm -m node --loginall=automatic -W -ExecStop=@SBINDIR@/iscsiadm -m node --logoutall=automatic -ExecStop=@SBINDIR@/iscsiadm -m node --logoutall=manual -SuccessExitStatus=21 15 -RemainAfterExit=true - -[Install] -WantedBy=remote-fs.target diff --git a/etc/systemd/iscsi.service.template b/etc/systemd/iscsi.service.template new file mode 100644 index 0000000..6becab4 --- /dev/null +++ b/etc/systemd/iscsi.service.template @@ -0,0 +1,18 @@ +[Unit] +Description=Login and scanning of iSCSI devices +Documentation=man:iscsiadm(8) man:iscsid(8) +Before=remote-fs.target +After=network-online.target iscsid.service +Requires=iscsid.socket iscsi-init.service +Wants=network-online.target + +[Service] +Type=oneshot +ExecStart=@SBINDIR@/iscsiadm -m node --loginall=automatic -W +ExecStop=@SBINDIR@/iscsiadm -m node --logoutall=automatic +ExecStop=@SBINDIR@/iscsiadm -m node --logoutall=manual +SuccessExitStatus=21 15 +RemainAfterExit=true + +[Install] +WantedBy=remote-fs.target diff --git a/etc/systemd/iscsid.service b/etc/systemd/iscsid.service deleted file mode 100644 index e2a50d3..0000000 --- a/etc/systemd/iscsid.service +++ /dev/null @@ -1,19 +0,0 @@ -[Unit] -Description=Open-iSCSI -Documentation=man:iscsid(8) man:iscsiuio(8) man:iscsiadm(8) -DefaultDependencies=no -After=network-online.target iscsiuio.service iscsi-init.service -Before=remote-fs-pre.target -Wants=remote-fs-pre.target -Requires=iscsi-init.service - -[Service] -Type=notify -NotifyAccess=main -ExecStart=@SBINDIR@/iscsid -f -KillMode=mixed -Restart=on-failure - -[Install] -WantedBy=multi-user.target -Also=iscsid.socket diff --git a/etc/systemd/iscsid.service.template b/etc/systemd/iscsid.service.template new file mode 100644 index 0000000..e2a50d3 --- /dev/null +++ b/etc/systemd/iscsid.service.template @@ -0,0 +1,19 @@ +[Unit] +Description=Open-iSCSI +Documentation=man:iscsid(8) man:iscsiuio(8) man:iscsiadm(8) +DefaultDependencies=no +After=network-online.target iscsiuio.service iscsi-init.service +Before=remote-fs-pre.target +Wants=remote-fs-pre.target +Requires=iscsi-init.service + +[Service] +Type=notify +NotifyAccess=main +ExecStart=@SBINDIR@/iscsid -f +KillMode=mixed +Restart=on-failure + +[Install] +WantedBy=multi-user.target +Also=iscsid.socket diff --git a/etc/systemd/iscsiuio.service b/etc/systemd/iscsiuio.service deleted file mode 100644 index 2e721fe..0000000 --- a/etc/systemd/iscsiuio.service +++ /dev/null @@ -1,20 +0,0 @@ -[Unit] -Description=iSCSI UserSpace I/O driver -Documentation=man:iscsiuio(8) -DefaultDependencies=no -Conflicts=shutdown.target -Requires=iscsid.service -BindTo=iscsid.service -After=network.target -Before=remote-fs-pre.target iscsid.service -Wants=remote-fs-pre.target - -[Service] -Type=notify -NotifyAccess=main -ExecStart=@SBINDIR@/iscsiuio -f -KillMode=mixed -Restart=on-failure - -[Install] -WantedBy=multi-user.target diff --git a/etc/systemd/iscsiuio.service.template b/etc/systemd/iscsiuio.service.template new file mode 100644 index 0000000..2e721fe --- /dev/null +++ b/etc/systemd/iscsiuio.service.template @@ -0,0 +1,20 @@ +[Unit] +Description=iSCSI UserSpace I/O driver +Documentation=man:iscsiuio(8) +DefaultDependencies=no +Conflicts=shutdown.target +Requires=iscsid.service +BindTo=iscsid.service +After=network.target +Before=remote-fs-pre.target iscsid.service +Wants=remote-fs-pre.target + +[Service] +Type=notify +NotifyAccess=main +ExecStart=@SBINDIR@/iscsiuio -f +KillMode=mixed +Restart=on-failure + +[Install] +WantedBy=multi-user.target -- cgit v1.2.1