project-lakitu: Install open-iscsi and open-isns packages from gentoo.
open-iscsi package depends on open-isns. Get both the packages from
gentoo.
BUG=b/179425963
TEST=presubmit
RELEASE_NOTE=None
Change-Id: Ib843f054278c1c69e54cda7b8bba1e51b041bb25
Reviewed-on: https://cos-review.googlesource.com/c/cos/overlays/board-overlays/+/20490
Tested-by: Cusky Presubmit Bot <presubmit@cos-infra-prod.iam.gserviceaccount.com>
Reviewed-by: Roy Yang <royyang@google.com>
diff --git a/project-lakitu/sys-block/open-iscsi/Manifest b/project-lakitu/sys-block/open-iscsi/Manifest
new file mode 100644
index 0000000..6889493
--- /dev/null
+++ b/project-lakitu/sys-block/open-iscsi/Manifest
@@ -0,0 +1 @@
+DIST open-iscsi-2.1.3.tar.gz 619746 BLAKE2B 884e24ae6e16578f3cbd8ccea2557e820d4bf4d20c7f88890100ca93f48df88dc7284cc4eca19d93187516fd21a2c5b71eb53f0d8fe395d2ce42fd202dc355d6 SHA512 0de417dc45b765458c5a1f09029b5df9b5c18d45d7a8fb6b38d539b7013f512a3c8731d5046f554611eccc77b93fea0df30fe4932d79cea44776ac944c398a52
diff --git a/project-lakitu/sys-block/open-iscsi/files/initiatorname.iscsi b/project-lakitu/sys-block/open-iscsi/files/initiatorname.iscsi
new file mode 100644
index 0000000..2217990
--- /dev/null
+++ b/project-lakitu/sys-block/open-iscsi/files/initiatorname.iscsi
@@ -0,0 +1,30 @@
+# Copyright 1999-2005 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License, v2 or later
+#
+# This file must contain a InitiatorName entry!
+# white space is significent here!
+#InitiatorName=iqn.2005-09.tld.domain.hostname:openiscsi-initiator
+#InitiatorAlias=foobar
+
+# Sample documentation follows:
+
+# The InitiatorName should take the following format
+# iqn.${YEAR}-${MONTH}-${DOMAIN_REVERSED}.${HOSTNAME}:${UNIQUE_STRING}
+# Where YEAR and MONTH are the dates that your domain was registered.
+# You can use WHOIS to find when your domain was registered.
+# If you don't have a real domain in the outside world, invent one, but use
+# .local for your top-level.
+
+# Example case #1:
+# This assumes you own foobar.co.uk.
+# Domain name: foobar.co.uk.
+# Registration date: March 2001
+# Hostname: linux
+# InitiatorName=iqn.2001-03.uk.co.foobar.linux:openiscsi-29b48ad602d5f83dd9cd9aa3ef741216
+
+# Example case #2:
+# This assumes you don't have a domain of your own.
+# Domain name: foobar.local
+# Registration date: March 2001
+# Hostname: linux
+# InitiatorName=iqn.2001-03.local.foobar.linux:openiscsi-29b48ad602d5f83dd9cd9aa3ef741216
diff --git a/project-lakitu/sys-block/open-iscsi/files/iscsid-conf.d b/project-lakitu/sys-block/open-iscsi/files/iscsid-conf.d
new file mode 100644
index 0000000..bfa0705
--- /dev/null
+++ b/project-lakitu/sys-block/open-iscsi/files/iscsid-conf.d
@@ -0,0 +1,17 @@
+# /etc/conf.d/iscsid
+
+# config file to use
+CONFIG_FILE=/etc/iscsi/iscsid.conf
+
+# you need to specify an initiatorname in the file
+INITIATORNAME_FILE=/etc/iscsi/initiatorname.iscsi
+
+# options to pass to iscsid
+OPTS="-i ${INITIATORNAME_FILE}"
+
+# Start automatic targets when iscsid is started
+AUTOSTARTTARGETS="yes"
+
+# if set to "strict", iscsid will stop, if connecting the
+# autostart targets failed
+# AUTOSTART="strict"
diff --git a/project-lakitu/sys-block/open-iscsi/files/iscsid-init.d b/project-lakitu/sys-block/open-iscsi/files/iscsid-init.d
new file mode 100644
index 0000000..617af9a
--- /dev/null
+++ b/project-lakitu/sys-block/open-iscsi/files/iscsid-init.d
@@ -0,0 +1,106 @@
+#!/sbin/openrc-run
+# Copyright 1999-2015 Gentoo Foundation, Inc.
+# Distributed under the terms of the GNU General Public License, v2 or later
+
+command="/usr/sbin/iscsid"
+command_args="${OPTS}"
+start_stop_daemon_args="-w 100" # iscsid might fail e.g. when the iSCSI kernel modules aren't available
+pidfile=${PIDFILE:-/var/run/${SVCNAME}.pid}
+
+extra_started_commands="starttargets stoptargets"
+extra_commands="restarttargets"
+
+ISCSIADM=/usr/sbin/iscsiadm
+
+depend() {
+ after modules multipath
+ use net
+}
+
+checkconfig() {
+ if [ ! -e /etc/conf.d/${SVCNAME} ]; then
+ eerror "Config file /etc/conf.d/${SVCNAME} does not exist!"
+ return 1
+ fi
+ if [ ! -e "${CONFIG_FILE}" ]; then
+ eerror "Config file ${CONFIG_FILE} does not exist!"
+ return 1
+ fi
+
+ if [ -e ${INITIATORNAME_FILE} ]; then
+ . ${INITIATORNAME_FILE}
+ fi
+ if [ ! -e ${INITIATORNAME_FILE} -o -z "${InitiatorName}" ]; then
+ ewarn "${INITIATORNAME_FILE} should contain a string with your initiatior name."
+ local IQN=$(/usr/sbin/iscsi-iname)
+ ebegin "Creating InitiatorName ${IQN} in ${INITIATORNAME_FILE}"
+ echo "InitiatorName=${IQN}" >> "${INITIATORNAME_FILE}"
+ eend $?
+ fi
+}
+
+starttargets() {
+ ebegin "Setting up iSCSI targets"
+ $ISCSIADM -m node --loginall=automatic
+ local ret=$?
+ eend $ret
+ return $ret
+}
+
+stoptargets() {
+ ebegin "Disconnecting iSCSI targets"
+ sync
+ $ISCSIADM -m node --logoutall=all
+ local ret=$?
+
+ if [ $ret -eq 21 ]; then
+ # See man iscsiadm(8)
+ einfo "No active sessions to disconnect"
+ eend 0
+ return 0
+ fi
+
+ eend $ret
+ return $ret
+}
+
+restarttargets() {
+ stoptargets
+ starttargets
+}
+
+status() {
+ ebegin "Showing current active iSCSI sessions"
+ $ISCSIADM -m session
+}
+
+
+start_pre() {
+ local ret=1
+
+ ebegin "Checking Open-iSCSI configuration"
+ checkconfig
+ ret=$?
+ if [ $ret -ne 0 ]; then
+ eend 1
+ return 1
+ fi
+ eend 0
+}
+
+start_post() {
+ # Start automatic targets when iscsid is started
+ if [ "${AUTOSTARTTARGETS}" = "yes" ]; then
+ starttargets
+ local ret=$?
+ if [ "${AUTOSTART}" = "strict" -a $ret -ne 0 ]; then
+ stop
+ return $ret
+ fi
+ fi
+ return 0
+}
+
+stop_pre() {
+ stoptargets
+}
diff --git a/project-lakitu/sys-block/open-iscsi/files/open-iscsi-2.1.1-Makefiles.patch b/project-lakitu/sys-block/open-iscsi/files/open-iscsi-2.1.1-Makefiles.patch
new file mode 100644
index 0000000..02e651e
--- /dev/null
+++ b/project-lakitu/sys-block/open-iscsi/files/open-iscsi-2.1.1-Makefiles.patch
@@ -0,0 +1,78 @@
+--- a/libopeniscsiusr/Makefile
++++ b/libopeniscsiusr/Makefile
+@@ -44,7 +44,7 @@ EXTRA_MAN_FILES = libopeniscsiusr.h.3
+ OBJS = context.o misc.o session.o sysfs.o iface.o idbm.o node.o default.o
+
+ CFLAGS ?= -O2 -g
+-CFLAGS += -Wall -Werror -Wextra -fvisibility=hidden -fPIC
++CFLAGS += -Wall -Wextra -fvisibility=hidden -fPIC
+ CFLAGS += $(shell $(PKG_CONFIG) --cflags libkmod)
+
+ LDFLAGS += $(shell $(PKG_CONFIG) --libs libkmod)
+--- a/usr/Makefile
++++ b/usr/Makefile
+@@ -35,7 +35,7 @@ endif
+ PKG_CONFIG = /usr/bin/pkg-config
+
+ CFLAGS ?= -O2 -g
+-WARNFLAGS ?= -Wall -Wextra -Werror -Wstrict-prototypes -fno-common
++WARNFLAGS ?= -Wall -Wextra -Wstrict-prototypes -fno-common
+ CFLAGS += $(WARNFLAGS) -I../include -I. -D_GNU_SOURCE \
+ -I$(TOPDIR)/libopeniscsiusr
+ CFLAGS += $(shell $(PKG_CONFIG) --cflags libkmod)
+@@ -76,9 +76,9 @@ iscsistart: $(ISCSI_LIB_SRCS) $(INITIATOR_SRCS) $(FW_BOOT_SRCS) \
+ iscsistart.o statics.o
+ $(CC) $(CFLAGS) $^ -o $@ -lcrypto -lrt $(LDFLAGS) $(ISCSI_LIB)
+ clean:
+- rm -f *.o $(PROGRAMS) .depend $(LIBSYS)
++ $(RM) *.o $(PROGRAMS) .depend $(LIBSYS)
+
+ depend:
+- gcc $(CFLAGS) -M `ls *.c` > .depend
++ $(CC) $(CFLAGS) -M `ls *.c` > .depend
+
+ -include .depend
+--- a/utils/Makefile
++++ b/utils/Makefile
+@@ -10,9 +10,9 @@ iscsi-iname: md5.o iscsi-iname.o
+ $(CC) $(CFLAGS) $(LDFLAGS) $^ $(DBM_LIB) -o $@
+
+ clean:
+- rm -f *.o $(PROGRAMS) .depend
++ $(RM) *.o $(PROGRAMS) .depend
+
+ depend:
+- gcc $(CFLAGS) -M `ls *.c` > .depend
++ $(CC) $(CFLAGS) -M `ls *.c` > .depend
+
+ -include .depend
+--- a/utils/fwparam_ibft/Makefile
++++ b/utils/fwparam_ibft/Makefile
+@@ -41,11 +41,11 @@ LDFLAGS += -L$(TOPDIR)/libopeniscsiusr -liscsiusr
+ all: $(OBJS)
+
+ clean:
+- rm -f *.o $(CLEANFILES) .depend
++ $(RM) *.o $(CLEANFILES) .depend
+
+ $(OBJS): prom_parse.tab.h prom_parse.h fwparam_ibft.h
+
+ depend:
+- gcc $(CFLAGS) -M `ls *.c` > .depend
++ $(CC) $(CFLAGS) -M `ls *.c` > .depend
+
+ -include .depend
+--- a/utils/sysdeps/Makefile
++++ b/utils/sysdeps/Makefile
+@@ -8,9 +8,9 @@ SYSDEPS_OBJS=sysdeps.o
+ all: $(SYSDEPS_OBJS)
+
+ clean:
+- rm -f *.o .depend
++ $(RM) *.o .depend
+
+ depend:
+- gcc $(CFLAGS) -M `ls *.c` > .depend
++ $(CC) $(CFLAGS) -M `ls *.c` > .depend
+
+ -include .depend
diff --git a/project-lakitu/sys-block/open-iscsi/open-iscsi-2.1.3.ebuild b/project-lakitu/sys-block/open-iscsi/open-iscsi-2.1.3.ebuild
new file mode 100644
index 0000000..0dea508
--- /dev/null
+++ b/project-lakitu/sys-block/open-iscsi/open-iscsi-2.1.3.ebuild
@@ -0,0 +1,139 @@
+# Copyright 1999-2021 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+inherit autotools linux-info flag-o-matic toolchain-funcs udev systemd
+
+DESCRIPTION="A performant, transport independent, multi-platform implementation of RFC3720"
+HOMEPAGE="http://www.open-iscsi.com/"
+SRC_URI="https://github.com/${PN}/${PN}/archive/${PV}.tar.gz -> ${P}.tar.gz"
+
+LICENSE="GPL-2"
+SLOT="0/0.2"
+KEYWORDS="~alpha amd64 arm arm64 ~ia64 ~mips ppc ppc64 sparc x86"
+IUSE="debug infiniband +tcp rdma systemd"
+
+DEPEND="
+ sys-apps/kmod
+ sys-block/open-isns:=
+ sys-kernel/linux-headers
+ infiniband? ( sys-fabric/ofed )
+ dev-libs/openssl:0=
+ sys-apps/systemd
+"
+RDEPEND="${DEPEND}
+ sys-fs/lsscsi
+ sys-apps/util-linux"
+BDEPEND="virtual/pkgconfig"
+
+REQUIRED_USE="infiniband? ( rdma ) || ( rdma tcp )"
+
+PATCHES=(
+ "${FILESDIR}/${PN}-2.1.1-Makefiles.patch"
+)
+
+pkg_setup() {
+ linux-info_pkg_setup
+
+ if kernel_is -lt 2 6 16; then
+ die "Sorry, your kernel must be 2.6.16-rc5 or newer!"
+ fi
+
+ # Needs to be done, as iscsid currently only starts, when having the iSCSI
+ # support loaded as module. Kernel builtin options don't work. See this for
+ # more information:
+ # https://groups.google.com/group/open-iscsi/browse_thread/thread/cc10498655b40507/fd6a4ba0c8e91966
+ # If there's a new release, check whether this is still valid!
+ TCP_MODULES="SCSI_ISCSI_ATTRS ISCSI_TCP"
+ RDMA_MODULES="INFINIBAND_ISER"
+ INFINIBAND_MODULES="INFINIBAND_IPOIB INIBAND_USER_MAD INFINIBAND_USER_ACCESS"
+ CONFIG_CHECK_MODULES="tcp? ( ${TCP_MODULES} ) rdma? ( ${RDMA_MODULES} ) infiniband? ( ${INFINIBAND_MODULES} )"
+ if linux_config_exists; then
+ if use tcp; then
+ for module in ${TCP_MODULES}; do
+ linux_chkconfig_module ${module} || ewarn "${module} needs to be built as module (builtin doesn't work)"
+ done
+ fi
+ if use infiniband; then
+ for module in ${INFINIBAND_MODULES}; do
+ linux_chkconfig_module ${module} || ewarn "${module} needs to be built as module (builtin doesn't work)"
+ done
+ fi
+ if use rdma; then
+ for module in ${RDMA_MODULES}; do
+ linux_chkconfig_module ${module} || ewarn "${module} needs to be built as module (builtin doesn't work)"$
+ done
+ fi
+ fi
+}
+
+src_prepare() {
+ sed -e 's:^\(iscsid.startup\)\s*=.*:\1 = /usr/sbin/iscsid:' \
+ -i etc/iscsid.conf || die
+ sed -e 's@\(/sbin/\)@/usr\1@' \
+ -i etc/systemd/iscsi* || die
+ default
+
+ pushd iscsiuio >/dev/null || die
+ eautoreconf
+ popd >/dev/null || die
+}
+
+src_configure() {
+ use debug && append-cppflags -DDEBUG_TCP -DDEBUG_SCSI
+ append-lfs-flags
+}
+
+src_compile() {
+ # Stuffing CPPFLAGS into CFLAGS isn't entirely correct, but the build
+ # is messed up already here, so it's not making it that much worse.
+ KSRC="${KV_DIR}" CFLAGS="" \
+ emake \
+ OPTFLAGS="${CFLAGS} ${CPPFLAGS} $(usex systemd '' -DNO_SYSTEMD)" \
+ AR="$(tc-getAR)" CC="$(tc-getCC)" \
+ $(usex systemd '' NO_SYSTEMD=1) \
+ user
+}
+
+src_install() {
+ emake DESTDIR="${ED}" sbindir="/usr/sbin" install
+ # Upstream make is not deterministic, per bug #601514
+ rm -f "${ED}"/etc/initiatorname.iscsi
+
+ dodoc README THANKS
+
+ docinto test/
+ dodoc $(find test -maxdepth 1 -type f ! -name ".*")
+
+ insinto /etc/iscsi
+ newins "${FILESDIR}"/initiatorname.iscsi initiatorname.iscsi.example
+
+ newconfd "${FILESDIR}"/iscsid-conf.d iscsid
+ newinitd "${FILESDIR}"/iscsid-init.d iscsid
+
+ local unit
+ local units=(
+ iscsi.service
+ iscsid.{service,socket}
+ iscsiuio.{service,socket}
+ )
+ for unit in ${units[@]} ; do
+ systemd_dounit etc/systemd/${unit}
+ done
+
+ keepdir /var/db/iscsi
+ fperms 700 /var/db/iscsi
+ fperms 600 /etc/iscsi/iscsid.conf
+}
+
+pkg_postinst() {
+ in='/etc/iscsi/initiatorname.iscsi'
+ if [[ ! -f "${EROOT}${in}" ]] && [[ -f "${EROOT}${in}.example" ]] ; then
+ {
+ cat "${EROOT}${in}.example"
+ echo "# InitiatorName generated by ${CATEGORY}/${PF} at $(date -uR)"
+ echo "InitiatorName=$(${ROOT}/usr/sbin/iscsi-iname)"
+ } >> "${EROOT}${in}.tmp" && mv -f "${EROOT}${in}.tmp" "${EROOT}${in}"
+ fi
+}
diff --git a/project-lakitu/sys-block/open-isns/Manifest b/project-lakitu/sys-block/open-isns/Manifest
new file mode 100644
index 0000000..0f443cd
--- /dev/null
+++ b/project-lakitu/sys-block/open-isns/Manifest
@@ -0,0 +1 @@
+DIST open-isns-0.101.tar.gz 301912 BLAKE2B 98c9c36640ee4d3796538a00e7ab2e4cfb057abc66a56d27ce2eb133d591ea87bcb0e4ffb31b6d72d8e8c806edffb65600c0ae7cd63c61058f36037e3db79214 SHA512 e5a392127b0d85f36e9e4aa963c0c502af8c5aea0aba6d12abb4425649969dcc20ba6e87a99083626d981438439b17b71a86320f816042d82ed5dbe7e7a63e77
diff --git a/project-lakitu/sys-block/open-isns/files/open-isns-0.100-respect-AR.patch b/project-lakitu/sys-block/open-isns/files/open-isns-0.100-respect-AR.patch
new file mode 100644
index 0000000..8c5ffac
--- /dev/null
+++ b/project-lakitu/sys-block/open-isns/files/open-isns-0.100-respect-AR.patch
@@ -0,0 +1,29 @@
+--- a/Makefile.in
++++ b/Makefile.in
+@@ -33,6 +33,7 @@ else
+ SOLIB_VERSION_OPTS =
+ endif
+
++AR = @AR@
+ CC = @CC@
+ CPPFLAGS= @CPPFLAGS@
+ CFLAGS = @CFLAGS@ -I. -Iinclude -I$(srcdir) -I$(srcdir)/include
+@@ -161,7 +162,7 @@ solib-message.o: message.c
+
+ ifeq ($(BUILD_STATIC),1)
+ $(LIB): $(LIBOBJS)
+- ar cr $@ $(LIBOBJS)
++ $(AR) cr $@ $(LIBOBJS)
+ else
+ $(LIB):
+ endif
+--- a/configure.ac
++++ b/configure.ac
+@@ -4,6 +4,7 @@ AC_CONFIG_AUX_DIR([aclocal])
+
+ AC_CONFIG_HEADER(config.h)
+
++AM_PROG_AR
+ AC_PROG_CC
+ AC_CANONICAL_HOST
+ AC_C_BIGENDIAN
diff --git a/project-lakitu/sys-block/open-isns/open-isns-0.101.ebuild b/project-lakitu/sys-block/open-isns/open-isns-0.101.ebuild
new file mode 100644
index 0000000..3959779
--- /dev/null
+++ b/project-lakitu/sys-block/open-isns/open-isns-0.101.ebuild
@@ -0,0 +1,53 @@
+# Copyright 1999-2021 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+inherit autotools flag-o-matic
+
+DESCRIPTION="iSNS server and client for Linux"
+HOMEPAGE="https://github.com/open-iscsi/open-isns"
+SRC_URI="https://github.com/open-iscsi/${PN}/archive/v${PV}.tar.gz -> ${P}.tar.gz"
+
+LICENSE="LGPL-2.1"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~ia64 ~mips ~ppc ~ppc64 ~sparc ~x86"
+IUSE="debug ssl static"
+
+DEPEND="
+ ssl? (
+ dev-libs/openssl:0=
+ )
+"
+RDEPEND="${DEPEND}"
+
+PATCHES=(
+ "${FILESDIR}/${PN}-0.100-respect-AR.patch"
+)
+
+src_prepare() {
+ default
+ eautoreconf
+ touch aclocal/ar-lib || die #775389
+}
+
+src_configure() {
+ use debug && append-cppflags -DDEBUG_TCP -DDEBUG_SCSI
+ append-lfs-flags
+ local myeconfargs=(
+ --without-slp
+ $(use_with ssl security)
+ $(use_enable !static shared)
+ )
+ econf "${myeconfargs[@]}"
+}
+
+src_install() {
+ default
+ emake DESTDIR="${D}" install_hdrs
+ emake DESTDIR="${D}" install_lib
+ keepdir /var/lib/${PN/open-}
+ if ! use static ; then
+ find "${ED}" -type f -name "*.a" -delete || die
+ fi
+}