summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLee Duncan <lduncan@suse.com>2022-04-05 11:00:26 -0700
committerGitHub <noreply@github.com>2022-04-05 11:00:26 -0700
commit1451108792c1187974b87399f71822b59d62948c (patch)
treef49bd21ed810f1fdd6f9833cd7b13cde3732fc46
parent4f5c4af2047756f86400ac66491eb1b6c6f7d8bc (diff)
parent147c681385fbb694b87498a3ace64637f79f079d (diff)
downloadopen-iscsi-1451108792c1187974b87399f71822b59d62948c.tar.gz
Merge pull request #335 from gonzoleeman/latest-build-cleanups-v2
Latest build cleanups and bug fixes
-rw-r--r--Makefile6
-rw-r--r--etc/Makefile33
-rw-r--r--etc/systemd/ibft-rule-generator36
-rw-r--r--libopeniscsiusr/Makefile24
-rw-r--r--usr/Makefile1
-rw-r--r--utils/Makefile3
6 files changed, 78 insertions, 25 deletions
diff --git a/Makefile b/Makefile
index 0422cf5..d2f143b 100644
--- a/Makefile
+++ b/Makefile
@@ -14,11 +14,12 @@ etcdir = /etc
SBINDIR = $(exec_prefix)/sbin
HOMEDIR = $(etcdir)/iscsi
DBROOT = $(etcdir)/iscsi
+RULESDIR = $(etcdir)/udev/rules.d
INSTALL = /usr/bin/install
# pass these on to sub-Makefiles
-export DESTDIR prefix INSTALL SBINDIR HOMEDIR DBROOT
+export DESTDIR prefix INSTALL SBINDIR HOMEDIR DBROOT RULESDIR
# Compatibility: parse old OPTFLAGS argument
ifdef OPTFLAGS
@@ -116,9 +117,6 @@ install_etc_all:
install_doc:
$(MAKE) $(MFLAGS) -C doc $@
-$(DESTDIR)$(HOMEDIR):
- [ -d $@ ] || $(INSTALL) -d -m 755 $@
-
install_libopeniscsiusr:
$(MAKE) $(MFLAGS) -C libopeniscsiusr install
diff --git a/etc/Makefile b/etc/Makefile
index 84e0fa7..d065319 100644
--- a/etc/Makefile
+++ b/etc/Makefile
@@ -13,9 +13,9 @@ SBINDIR ?= /sbin
ISCSI_INAME ?= $(TOPDIR)/utils/iscsi-iname
-systemddir ?= $(DESTDIR)$(prefix)/lib/systemd
+systemddir ?= $(prefix)/lib/systemd
etcdir = /etc
-initddir ?= $(DESTDIR)$(etcdir)/init.d
+initddir ?= $(etcdir)/init.d
HOMEDIR ?= $(etcdir)/iscsi
@@ -29,9 +29,12 @@ SYSTEMD_TEMPLATE_FILES = iscsi-init.service.template \
iscsi.service.template \
iscsiuio.service.template
SYSTEMD_TEMPLATES = $(addprefix systemd/,$(SYSTEMD_TEMPLATE_FILES))
+SYSTEMD_RULES_FILES = ibft-rule-generator
+SYSTEMD_RULES_SOURCES = $(addprefix systemd/,$(SYSTEMD_RULES_FILES))
SYSTEMD_GENERATED_SERVICE_FILES = $(SYSTEMD_TEMPLATES:.template=)
-SYSTEMD_DEST_FILES = $(addprefix $(systemddir)/system/,$(SYSTEMD_SOURCE_FILES)) \
- $(addprefix $(systemddir)/system/,$(notdir $(SYSTEMD_GENERATED_SERVICE_FILES)))
+SYSTEMD_DEST_SVC_FILES = $(addprefix $(DESTDIR)$(systemddir)/system/,$(SYSTEMD_SOURCE_FILES)) \
+ $(addprefix $(DESTDIR)$(systemddir)/system/,$(notdir $(SYSTEMD_GENERATED_SERVICE_FILES)))
+SYSTEMD_DEST_GEN_FILES = $(addprefix $(DESTDIR)$(systemddir)/system-generators/,$(notdir $(SYSTEMD_RULES_SOURCES)))
IFACE_FILES = iface.example
IFACE_DEST_FILES = $(addprefix $(DESTDIR)$(DBROOT)/ifaces/,$(IFACE_FILES))
ETC_FILES = iscsid.conf
@@ -56,24 +59,31 @@ install_etc: $(DESTDIR)$(HOMEDIR) $(ETC_DEST_FILES)
$(ETC_DEST_FILES): $(DESTDIR)$(HOMEDIR)/%: %
$(INSTALL) -m 644 $? $@
-install_initd_distro = $(INSTALL) -m 755 $(1) $(initddir)/open-iscsi/
+install_initd_distro = $(INSTALL) -m 755 $(1) $(DESTDIR)$(initddir)/open-iscsi/
-install_initd: $(initddir)/open-iscsi
+install_initd: $(DESTDIR)$(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
-install_initd_redhat: $(initddir)/open-iscsi
+install_initd_redhat: $(DESTDIR)$(initddir)/open-iscsi
$(call install_initd_distro,initd/initd.redhat)
-install_initd_debian: $(initddir)/open-iscsi
+install_initd_debian: $(DESTDIR)$(initddir)/open-iscsi
$(call install_initd_distro,initd/initd.debian)
-install_systemd: $(systemddir)/system $(SYSTEMD_DEST_FILES)
+install_systemd: install_systemd_service_files install_systemd_generator_files
-$(SYSTEMD_DEST_FILES): $(systemddir)/system/%: systemd/%
+install_systemd_service_files: $(DESTDIR)$(systemddir)/system $(SYSTEMD_DEST_SVC_FILES)
+
+install_systemd_generator_files: $(DESTDIR)$(systemddir)/system-generators $(SYSTEMD_DEST_GEN_FILES)
+
+$(SYSTEMD_DEST_SVC_FILES): $(DESTDIR)$(systemddir)/system/%: systemd/%
+ $(INSTALL) $? $@
+
+$(SYSTEMD_DEST_GEN_FILES): $(DESTDIR)$(systemddir)/system-generators/%: systemd/%
$(INSTALL) $? $@
install_iname: $(DESTDIR)$(HOMEDIR) $(ISCSI_INAME)
@@ -90,7 +100,8 @@ $(ISCSI_INAME):
$(MAKE) $(MFLAGS) -c $(TOPDIR)/utils $(notdir $@)
# make needed directories
-$(systemddir)/system $(DESTDIR)$(HOMEDIR) $(DESTDIR)$(DBROOT)/ifaces $(initddir)/open-iscsi:
+$(DESTDIR)$(systemddir)/system $(DESTDIR)$(systemddir)/system-generators $(DESTDIR)$(HOMEDIR) \
+ $(DESTDIR)$(DBROOT)/ifaces $(DESTDIR)$(initddir)/open-iscsi:
[ -d $@ ] || $(INSTALL) -d -m 775 $@
clean:
diff --git a/etc/systemd/ibft-rule-generator b/etc/systemd/ibft-rule-generator
new file mode 100644
index 0000000..038a4c2
--- /dev/null
+++ b/etc/systemd/ibft-rule-generator
@@ -0,0 +1,36 @@
+#!/bin/bash
+#
+# Systemd rule generator for ibft interfaces
+#
+# Copyright (c) 2022 Hannes Reinecke, SUSE Labs
+# This script is licensed under the GPL.
+#
+# When booted with 'ip=ibft' dracut will rename the
+# interface to 'ibft*'. After systemd has started
+# it'll try to rename the interface yet again with
+# a persistent name.
+# But as the ibft interface is already renamed _and_
+# in use, the second renaming will fail and udev
+# will complain.
+# So add a dummy rule which signals udev the correct name
+#
+# Interface renaming happes at 80-net-setup-link.rules,
+# so we need to hook in before that.
+#
+IBFT_RULE_DIR=/run/udev/rules.d
+IBFT_RULES=$(IBFT_RULE_DIR)/79-ibft.rules
+
+# ensure we have a rules directory and no rules file
+if [ -d ${IBFT_RULE_DIR} ] ; then
+ rm -f ${IBFT_RULES} 2> /dev/null
+else
+ mkdir -p ${IBFT_RULE_DIR}
+fi
+
+# create an iBFT udev rule for each iBFT NIC found
+for d in /sys/firmware/ibft/ethernet* ; do
+ [ -d "$d" ] || break
+ num="${d##*/ethernet}"
+ read mac < $d/mac
+ printf 'SUBSYSTEM=="net", KERNEL=="ibft*", ACTION=="add", DRIVERS=="?*", ATTR{address}=="%s", ATTR{type}=="1", NAME="ibft%s"\n' "$mac" "$num" >> $IBFT_RULES
+done
diff --git a/libopeniscsiusr/Makefile b/libopeniscsiusr/Makefile
index f6b5b5b..f96bf02 100644
--- a/libopeniscsiusr/Makefile
+++ b/libopeniscsiusr/Makefile
@@ -12,7 +12,7 @@ DESTDIR ?=
prefix ?= /usr
INSTALL ?= install
exec_prefix =
-etcdir = $(DESTDIR)/etc
+etcdir = /etc
SBINDIR ?= $(exec_prefix)/sbin
DBROOT ?= $(etcdir)/iscsi
@@ -26,6 +26,7 @@ endif
INCLUDE_DIR ?= $(prefix)/include
PKGCONF_DIR ?= $(LIB_DIR)/pkgconfig
+MAN_DIR = $(prefix)/share/man
PKG_CONFIG = /usr/bin/pkg-config
SED = /usr/bin/sed
@@ -62,7 +63,6 @@ LIBADD =
all: $(LIBS) $(LIBS_MAJOR) $(TESTS) doc
$(LIBS): $(OBJS)
- @echo CFLAGS= $(CFLAGS)
$(CC) $(CFLAGS) -shared -Wl,-soname=$@ -o $@ $(OBJS) $(LDFLAGS) $(LIBADD)
ln -sf $@ $(DEVLIB)
@@ -81,13 +81,21 @@ check: $(LIBS) $(TESTS)
sudo env LD_LIBRARY_PATH=$(LIBISCSI_USR_DIR) TESTS="$(TESTS)" \
tests/runtest.sh || exit 1;
-install: $(LIBS) $(LIBS_MAJOR)
- $(INSTALL) -d $(DESTDIR)/$(LIB_DIR)/
- $(INSTALL) -d $(DESTDIR)/$(INCLUDE_DIR)/
+install: install_libs install_docs install_pkg_files
+
+install_libs: $(LIBS) $(LIBS_MAJOR)
+ $(INSTALL) -d $(DESTDIR)$(LIB_DIR)/
+ $(INSTALL) -d $(DESTDIR)$(INCLUDE_DIR)/
$(INSTALL) $(LIBS) $(DESTDIR)$(LIB_DIR)/
- ln -sf $(LIBS) $(DESTDIR)/$(LIB_DIR)/$(DEVLIB)
- ln -sf $(LIBS) $(DESTDIR)/$(LIB_DIR)/$(LIBS_MAJOR)
- $(INSTALL) $(HEADERS) $(DESTDIR)$(INCLUDE_DIR)/
+ ln -sf $(LIBS) $(DESTDIR)$(LIB_DIR)/$(DEVLIB)
+ ln -sf $(LIBS) $(DESTDIR)$(LIB_DIR)/$(LIBS_MAJOR)
+ $(INSTALL) -m 644 $(HEADERS) $(DESTDIR)$(INCLUDE_DIR)/
+
+install_docs: doc
+ $(INSTALL) -d $(DESTDIR)$(MAN_DIR)/man3
+ $(INSTALL) -m 644 docs/man/*.gz $(DESTDIR)$(MAN_DIR)/man3/
+
+install_pkg_files:
$(INSTALL) -m 644 -D $(PKGFILE).in $(DESTDIR)$(PKGCONF_DIR)/$(PKGFILE)
perl -i -pe 's|__VERSION__|$(LIBNVME_VERSION)|g' \
$(DESTDIR)$(PKGCONF_DIR)/$(PKGFILE)
diff --git a/usr/Makefile b/usr/Makefile
index 41afa63..8f91ee1 100644
--- a/usr/Makefile
+++ b/usr/Makefile
@@ -48,6 +48,7 @@ WARNFLAGS ?= -Wall -Wextra -Werror -Wstrict-prototypes -fno-common
CFLAGS += $(WARNFLAGS) -I../include -I. -D_GNU_SOURCE \
-I$(TOPDIR)/libopeniscsiusr
CFLAGS += $(shell $(PKG_CONFIG) --cflags libkmod)
+CFLAGS += $(shell $(PKG_CONFIG) --cflags libsystemd)
ISCSI_LIB = -L$(TOPDIR)/libopeniscsiusr -lopeniscsiusr
LDFLAGS += $(shell $(PKG_CONFIG) --libs libkmod)
ifeq ($(NO_SYSTEMD),)
diff --git a/utils/Makefile b/utils/Makefile
index 01f7e0b..e32b4e6 100644
--- a/utils/Makefile
+++ b/utils/Makefile
@@ -16,8 +16,7 @@ SBINDIR ?= /sbin
etcdir = /etc
HOMEDIR ?= $(etcdir)/iscsi
-ETCDIR = /etc
-RULESDIR = $(ETCDIR)/udev/rules.d
+RULESDIR ?= $(etcdir)/udev/rules.d
CFLAGS ?= -O2 -fno-inline -g
CFLAGS += -Wall -Wextra -Wstrict-prototypes