blob: 08efea3d8711867f2b8acce0238d022c4a9d196a (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
|
# Copyright 1999-2022 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=7
inherit autotools linux-info flag-o-matic toolchain-funcs systemd
DESCRIPTION="A performant, transport independent, multi-platform implementation of RFC3720"
HOMEPAGE="https://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 ~riscv ~sparc ~x86"
IUSE="debug infiniband +tcp rdma systemd"
REQUIRED_USE="infiniband? ( rdma ) || ( rdma tcp )"
DEPEND="
sys-apps/kmod
sys-block/open-isns:=
sys-kernel/linux-headers
infiniband? ( sys-cluster/rdma-core )
dev-libs/openssl:0=
systemd? ( sys-apps/systemd )
"
RDEPEND="${DEPEND}
sys-fs/lsscsi
sys-apps/util-linux"
BDEPEND="virtual/pkgconfig"
PATCHES=(
"${FILESDIR}"/${PN}-2.1.7-fix_bitwise.patch
"${FILESDIR}"/${PN}-2.1.7-fix_sed.patch
"${FILESDIR}"/${PN}-2.1.7-no_werror.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() {
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() {
# Force serial install to avoid race conditions
emake -j1 \
DESTDIR="${ED}" \
sbindir="/usr/sbin" \
SED="${EPREFIX}/bin/sed" \
systemddir="$(systemd_get_utildir)" \
install install_systemd
# Upstream make is not deterministic, per bug #601514
rm -f "${ED}"/etc/initiatorname.iscsi
# QA: install udev rule into right place
mkdir -p "${ED}"/lib/udev/rules.d
mv "${ED}"/etc/udev/rules.d/50-iscsi-firmware-login.rules \
"${ED}"/lib/udev/rules.d || die "mv failed"
# QA: let docompress compress man pages
gunzip -r "${ED}"/usr/share/man/man3/ || die "gunzip failed"
gunzip -r "${ED}"/usr/share/man/man8/ || die "gunzip failed"
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
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
}
|