162 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
			
		
		
	
	
			162 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
| # Copyright 1999-2025 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_{11..13} )
 | |
| 
 | |
| 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
 | |
| }
 |