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
+}