gentoo-ebuilds/app-emulation/libguestfs/libguestfs-1.54.1-r1.ebuild
Sam James 9c4c2028d8
app-emulation/libguestfs: Stabilize 1.54.1-r1 amd64, #953646
Signed-off-by: Sam James <sam@gentoo.org>
2025-06-09 07:58:44 +01:00

225 lines
5.2 KiB
Bash

# Copyright 1999-2025 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
PYTHON_COMPAT=( python3_{10..13} )
USE_RUBY=( ruby3{2..3} )
LUA_COMPAT=( lua5-{1..4} luajit )
inherit autotools bash-completion-r1 linux-info lua-single perl-functions\
python-single-r1 ruby-single toolchain-funcs vala
MY_PV_1="$(ver_cut 1-2)"
MY_PV_2="$(ver_cut 2)"
[[ $(( ${MY_PV_2} % 2 )) -eq 0 ]] && SD="stable" || SD="development"
DESCRIPTION="Tools for accessing, inspecting, and modifying virtual machine (VM) disk images"
HOMEPAGE="https://libguestfs.org/"
SRC_URI="https://download.libguestfs.org/${MY_PV_1}-${SD}/${P}.tar.gz"
LICENSE="GPL-2 LGPL-2"
SLOT="0/${MY_PV_1}"
if [[ ${SD} == "stable" ]] ; then
KEYWORDS="amd64 ~ppc64 ~x86"
fi
IUSE="doc erlang +fuse introspection libvirt lua +ocaml +perl python readline ruby selinux static-libs test vala"
REQUIRED_USE="
lua? ( ${LUA_REQUIRED_USE} )
python? ( ${PYTHON_REQUIRED_USE} )
vala? ( introspection )
"
RESTRICT="!test? ( test )"
# Not part of the system profile, but dependenices of it with base USE flags
COMMON_DEPEND_DEFAULT="
app-arch/xz-utils
app-arch/zstd
dev-libs/libpcre2:=
dev-libs/libxml2:=
net-libs/libtirpc:=
sys-libs/libcap-ng
sys-libs/ncurses:=
sys-libs/readline:=
virtual/acl
virtual/libcrypt
"
# Won't compile without it
COMMON_DEPEND_EXPLICIT="
app-admin/augeas
app-alternatives/cpio
app-emulation/qemu[qemu_softmmu_targets_x86_64,selinux?]
app-misc/hivex[ocaml?]
dev-libs/jansson:=
|| (
dev-libs/libisoburn
app-cdr/cdrtools
)
"
# "Automagic" dependencies
COMMON_DEPEND_IMPLICIT="
dev-libs/libconfig:=
media-gfx/icoutils
media-libs/netpbm[png]
"
# Sum of the above + conditional dependencies
COMMON_DEPEND="
${COMMON_DEPEND_DEFAULT}
${COMMON_DEPEND_EXPLICIT}
${COMMON_DEPEND_IMPLICIT}
erlang? ( dev-lang/erlang )
fuse? ( sys-fs/fuse:0 )
introspection? (
dev-libs/glib
dev-libs/gobject-introspection
)
libvirt? ( app-emulation/libvirt[qemu] )
perl? (
dev-perl/libintl-perl
virtual/perl-Getopt-Long
)
python? ( ${PYTHON_DEPS} )
readline? ( sys-libs/readline )
ruby? ( ${RUBY_DEPS} )
selinux? ( sys-libs/libselinux )
vala? ( $(vala_depend) )
"
# Some OCaml is always required
# Bug #729674
DEPEND="
${COMMON_DEPEND}
dev-lang/ocaml:=[ocamlopt]
dev-ml/findlib[ocamlopt]
dev-util/gperf
"
RDEPEND="
${COMMON_DEPEND}
app-emulation/libguestfs-appliance
"
BDEPEND="
sys-devel/bison
sys-devel/flex
sys-devel/gettext
virtual/pkgconfig
doc? ( app-text/po4a )
lua? ( ${LUA_DEPS} )
perl? (
dev-perl/Module-Build
virtual/perl-ExtUtils-CBuilder
virtual/perl-Pod-Simple
)
test? (
introspection? ( dev-libs/gjs )
ocaml? ( dev-ml/ounit2[ocamlopt] )
)
"
PATCHES=(
"${FILESDIR}/${PN}-1.52.1-disable-obsolete-lvmetad-in-tests.patch"
)
src_prepare() {
cat <<EOF > "${S}/m4/guestfs-bash-completion.m4" || die
dnl Unconditionally install Bash completion files
AC_MSG_CHECKING([for bash-completions directory])
AC_SUBST([BASH_COMPLETIONS_DIR],[$(get_bashcompdir)])
AC_MSG_RESULT([\$BASH_COMPLETIONS_DIR])
AM_CONDITIONAL([HAVE_BASH_COMPLETION],[/bin/true])
EOF
default
eautoreconf
}
pkg_setup() {
CONFIG_CHECK="~KVM ~VIRTIO"
[[ -n "${CONFIG_CHECK}" ]] && check_extra_config
use lua && lua-single_pkg_setup
use python && python-single-r1_pkg_setup
}
src_configure() {
# Bug #794877
tc-export AR
# m4/guestfs-progs.m4: (f)lex and bison for virt-builder (required).
# Bug #915339
unset LEX YACC
local myconf=(
--disable-appliance
--disable-daemon
--disable-haskell
--disable-golang
--disable-rust
$(use_enable ocaml)
--disable-php
--without-java
$(use_enable lua)
$(use_enable erlang)
$(use_enable vala)
$(usex doc '' PO4A=no)
--with-extra="-gentoo"
$(use_with readline)
$(use_enable ruby)
$(use_enable fuse)
$(use_enable introspection gobject)
$(use_enable introspection)
$(use_with libvirt)
--with-default-backend=$(usex libvirt libvirt direct)
$(use_enable perl)
$(use_enable python)
$(use_enable static-libs static)
)
# Avoid automagic SELinux dependency
local -x ac_cv_header_selinux_selinux_h
if use selinux && use !libvirt; then
ewarn "USE=selinux has no effect without USE=libvirt"
ac_cv_header_selinux_selinux_h="no"
else
ac_cv_header_selinux_selinux_h=$(usex selinux)
fi
use vala && vala_setup
econf "${myconf[@]}"
}
src_install() {
emake INSTALLDIRS=vendor DESTDIR="${D}" install "LINGUAS=""${LINGUAS}"""
find "${ED}" -name '*.la' -delete || die
use perl && perl_delete_localpod
use python && python_optimize
}
src_test() {
# bash-completions may not exist
# Bug #794874
local -x SKIP_TEST_COMPLETE_IN_SCRIPT_SH=1
# Upstream doesn't ship the test data
local -x SKIP_TEST_JOURNAL_PL=1
local -x SKIP_TEST_MOUNTABLE_INSPECT_SH=1
# Sandbox interferes with tests
local -x SKIP_TEST_BIG_HEAP=1
local -x SKIP_TEST_SELINUX_XATTRS_FUSE=1
local -x SKIP_TEST_GUESTUNMOUNT_FD=1
# Doesn't work correctly when --without-daemon is specified
local -x SKIP_TEST_NOEXEC_STACK_PL=1
# Appliance requires sys-apps/file[zstd,-seccomp].
local -x SKIP_TEST_FILE_ARCHITECTURE_26=1
# Socket pathname too long for libvirt backend
local -x LIBGUESTFS_BACKEND=direct
# Increase vebosity
local -x LIBGUESTFS_DEBUG=1
local -x LIBGUESTFS_TRACE=1
default
}