162 lines
3.9 KiB
Bash
162 lines
3.9 KiB
Bash
# Copyright 1999-2024 Gentoo Foundation
|
|
# Distributed under the terms of the GNU General Public License v2
|
|
|
|
EAPI=8
|
|
|
|
DISTUTILS_OPTIONAL=1
|
|
DISTUTILS_SINGLE_IMPL=1
|
|
DISTUTILS_USE_PEP517=standalone
|
|
PYTHON_COMPAT=( python3_12 )
|
|
|
|
inherit cmake distutils-r1
|
|
|
|
DESCRIPTION="A NFSv3,v4,v4.1 fileserver that runs in user mode on most UNIX/Linux systems"
|
|
HOMEPAGE="https://github.com/nfs-ganesha/nfs-ganesha"
|
|
if [[ ${PV} == *beta* ]] ; then
|
|
MY_PV="$(ver_cut 1)-dev.$(ver_cut 4)"
|
|
SRC_URI="https://github.com/nfs-ganesha/${PN}/archive/V${MY_PV}.tar.gz -> ${P}.tar.gz"
|
|
S="${WORKDIR}/${PN}-${MY_PV}/src"
|
|
else
|
|
SRC_URI="https://github.com/nfs-ganesha/${PN}/archive/V${PV}.tar.gz -> ${P}.tar.gz"
|
|
S="${WORKDIR}/${P}/src"
|
|
fi
|
|
|
|
LICENSE="LGPL-3"
|
|
SLOT="0"
|
|
KEYWORDS="~amd64"
|
|
IUSE="btrfs caps dbus debug gssapi gui +nfsv3 tools vsock"
|
|
FS_SUPPORT=" ceph glusterfs gpfs mem null proxy-v3 proxy-v4 rgw vfs xfs"
|
|
IUSE+=" ${FS_SUPPORT// / ganesha_fs_}"
|
|
|
|
REQUIRED_USE="${PYTHON_REQUIRED_USE}
|
|
gui? ( tools )
|
|
btrfs? ( ganesha_fs_vfs )
|
|
"
|
|
|
|
# add monitoring support at some point
|
|
|
|
RDEPEND="
|
|
${PYTHON_DEPS}
|
|
dev-libs/jemalloc:=
|
|
dev-libs/userspace-rcu:=
|
|
>=net-libs/ntirpc-5.8[gssapi]
|
|
sys-apps/acl
|
|
sys-apps/util-linux
|
|
caps? ( sys-libs/libcap )
|
|
btrfs? ( sys-fs/btrfs-progs )
|
|
gssapi? ( virtual/krb5 )
|
|
dbus? ( sys-apps/dbus )
|
|
ganesha_fs_ceph? ( sys-cluster/ceph )
|
|
ganesha_fs_glusterfs? ( sys-cluster/glusterfs )
|
|
ganesha_fs_rgw? ( sys-cluster/ceph[radosgw] )
|
|
ganesha_fs_xfs? ( sys-fs/xfsprogs )
|
|
gui? (
|
|
$(python_gen_cond_dep '
|
|
dev-python/PyQt5[gui,dbus,${PYTHON_USEDEP}]
|
|
')
|
|
)
|
|
tools? (
|
|
$(python_gen_cond_dep '
|
|
dev-python/dbus-python[${PYTHON_USEDEP}]
|
|
dev-python/pygobject[${PYTHON_USEDEP}]
|
|
dev-python/pyparsing[${PYTHON_USEDEP}]
|
|
')
|
|
)
|
|
"
|
|
|
|
BDEPEND="
|
|
${DISTUTILS_DEPS}
|
|
${PYTHON_DEPS}
|
|
sys-devel/bison
|
|
sys-devel/flex
|
|
virtual/pkgconfig
|
|
$(python_gen_cond_dep '
|
|
dev-python/sphinx[${PYTHON_USEDEP}]
|
|
')
|
|
"
|
|
|
|
src_prepare() {
|
|
sed \
|
|
-e "/config_samples/s:doc\/ganesha:doc\/${PF}:g" \
|
|
-e '/run\/ganesha/d' \
|
|
-i CMakeLists.txt || die
|
|
cmake_src_prepare
|
|
}
|
|
|
|
src_configure() {
|
|
if use debug ; then
|
|
CMAKE_BUILD_TYPE=Debug
|
|
else
|
|
CMAKE_BUILD_TYPE=Release
|
|
fi
|
|
|
|
local mycmakeargs=(
|
|
-DALLOCATOR=jemalloc
|
|
-DUSE_SYSTEM_NTIRPC=ON
|
|
-DTIRPC_EPOLL=ON
|
|
-USE_ACL_MAPPING=ON
|
|
-DUSE_BTRFSUTIL=$(usex btrfs)
|
|
-DUSE_GSS=$(usex gssapi)
|
|
-DUSE_DBUS=$(usex dbus)
|
|
-DENABLE_VFS_DEBUG_ACL=$(usex debug)
|
|
-DENABLE_RFC_ACL=$(usex debug)
|
|
-DUSE_EFENCE=$(usex debug)
|
|
-DDEBUG_SAL=$(usex debug)
|
|
-DENABLE_LOCKTRACE=$(usex debug)
|
|
-DUSE_NFS3=$(usex nfsv3)
|
|
-DUSE_NFSACL3=$(usex nfsv3)
|
|
-DUSE_NLM=$(usex nfsv3)
|
|
-DUSE_VSOCK=$(usex vsock)
|
|
-DUSE_LEGACY_PYTHON_INSTALL=OFF
|
|
-DUSE_ADMIN_TOOLS=$(usex tools)
|
|
-DUSE_GUI_ADMIN_TOOLS=$(usex gui)
|
|
-DUSE_MAN_PAGE=ON
|
|
|
|
-DUSE_FSAL_CEPH=$(usex ganesha_fs_ceph)
|
|
-DCEPHFS_POSIX_ACL=$(usex ganesha_fs_ceph)
|
|
-DUSE_FSAL_RGW=$(usex ganesha_fs_rgw)
|
|
-DUSE_RADOS_RECOV=$(usex ganesha_fs_rgw)
|
|
-DRADOS_URLS=$(usex ganesha_fs_rgw)
|
|
|
|
-DUSE_FSAL_GLUSTER=$(usex ganesha_fs_glusterfs)
|
|
-DUSE_FSAL_GPFS=$(usex ganesha_fs_gpfs)
|
|
-DUSE_FSAL_MEM=$(usex ganesha_fs_mem)
|
|
-DUSE_FSAL_NULL=$(usex ganesha_fs_null)
|
|
-DUSE_FSAL_PROXY_V3=$(usex ganesha_fs_proxy-v3)
|
|
-DUSE_FSAL_PROXY_V4=$(usex ganesha_fs_proxy-v4)
|
|
-DUSE_FSAL_VFS=$(usex ganesha_fs_vfs)
|
|
-DUSE_FSAL_XFS=$(usex ganesha_fs_xfs)
|
|
|
|
-DUSE_NFSIDMAP=OFF
|
|
-DUSE_FSAL_KVSFS=OFF
|
|
-DUSE_FSAL_LIZARDFS=OFF
|
|
-DUSE_FSAL_LUSTRE=OFF
|
|
-DUSE_FSAL_SAUNAFS=OFF
|
|
)
|
|
if use gui || use tools; then
|
|
mycmakeargs+=(
|
|
-DPython3_INCLUDE_DIR="$(python_get_includedir)"
|
|
-DPython3_LIBRARY="$(python_get_library_path)"
|
|
-DPython3_EXECUTABLE="${PYTHON}"
|
|
)
|
|
fi
|
|
|
|
cmake_src_configure
|
|
}
|
|
|
|
src_install() {
|
|
cmake_src_install
|
|
if use tools || use gui; then
|
|
python_fix_shebang "${ED}"
|
|
python_optimize
|
|
fi
|
|
|
|
newinitd "${FILESDIR}"/${PN}.init ${PN}
|
|
newconfd "${FILESDIR}"/${PN}.confd ${PN}
|
|
|
|
if use dbus; then
|
|
insinto /etc/dbus-1/system.d
|
|
doins scripts/ganeshactl/org.ganesha.nfsd.conf
|
|
fi
|
|
}
|