libical-3.0.20-r2gentoo
download
# Copyright 1999-2026 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
PYTHON_COMPAT=( python3_{11..14} )
VALA_USE_DEPEND="vapigen"
inherit cmake dot-a python-any-r1 toolchain-funcs vala
DESCRIPTION="Implementation of basic iCAL protocols"
HOMEPAGE="https://github.com/libical/libical"
SRC_URI="https://github.com/${PN}/${PN}/releases/download/v${PV}/${P}.tar.gz"
LICENSE="|| ( MPL-2.0 LGPL-2.1 )"
SLOT="0/3"
KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~mips ppc ppc64 ~riscv ~sparc x86"
IUSE="doc examples +glib +introspection static-libs test vala"
REQUIRED_USE="introspection? ( glib ) vala? ( introspection )"
RESTRICT="!test? ( test )"
DEPEND="
dev-libs/icu:=
glib? (
dev-libs/glib:2
dev-libs/libxml2:2=
)
"
RDEPEND="${DEPEND}
sys-libs/timezone-data
"
BDEPEND="
dev-lang/perl
virtual/pkgconfig
doc? (
app-text/doxygen[dot]
glib? ( dev-util/gtk-doc )
)
introspection? ( >=dev-libs/gobject-introspection-1.82.0-r2 )
test? (
${PYTHON_DEPS}
glib? ( $(python_gen_any_dep 'dev-python/pygobject:3[${PYTHON_USEDEP}]') )
)
vala? ( $(vala_depend) )
"
# to build native ical-glib-src-generator w/ cross-compile
BDEPEND+="
glib? (
dev-libs/glib:2
dev-libs/libxml2:2
)
"
DOCS=(
AUTHORS README.md ReleaseNotes.txt TEST THANKS TODO
doc/{AddingOrModifyingComponents.txt,UsingLibical.md}
)
PATCHES=(
"${FILESDIR}/${PN}-3.0.11-pkgconfig-libdir.patch"
"${FILESDIR}/${P}-cmake-minreqver-3.20.patch" # bug 964491
)
python_check_deps() {
python_has_version "dev-python/pygobject:3[${PYTHON_USEDEP}]"
}
pkg_setup() {
use test && python-any-r1_pkg_setup
}
src_prepare() {
cmake_src_prepare
use vala && vala_setup
}
src_configure() {
if tc-is-cross-compiler && use glib; then
einfo "Building the native ical-glib-src-generator..."
BUILD_NATIVE="${WORKDIR}/${P}_build_native"
GENERATOR_BIN_DIR="${BUILD_NATIVE}/src/libical-glib/libexec/libical"
local mycmakeargs=(
-DCMAKE_DISABLE_FIND_PACKAGE_BerkeleyDB=ON
-DICAL_BUILD_DOCS=OFF
-DLIBICAL_BUILD_EXAMPLES=OFF
-DGOBJECT_INTROSPECTION=OFF
-DLIBICAL_BUILD_TESTING=OFF
-DICAL_GLIB_VAPI=OFF
-DICAL_GLIB=ON
)
BUILD_DIR="${BUILD_NATIVE}" tc-env_build cmake_src_configure
# configure for CHOST requires a cmake...
local native_gen=$(
find "${BUILD_NATIVE}" -type f -name IcalGlibSrcGenerator.cmake -print
)
# ... and a valid path. This empty file is fine for now.
mkdir -p "${GENERATOR_BIN_DIR}" || die
touch "${GENERATOR_BIN_DIR}"/ical-glib-src-generator || die
fi
use static-libs && lto-guarantee-fat
# fix gtk-doc, see https://bugs.gentoo.org/777090
# to check w/ 4.0 and migration to gi-docgen
export LD="$(tc-getCC)"
local mycmakeargs=(
-DCMAKE_DISABLE_FIND_PACKAGE_BerkeleyDB=ON
-DICAL_BUILD_DOCS=$(usex doc)
-DLIBICAL_BUILD_EXAMPLES=$(use examples)
-DICAL_GLIB=$(usex glib)
-DGOBJECT_INTROSPECTION=$(usex introspection)
-DSHARED_ONLY=$(usex !static-libs)
-DLIBICAL_BUILD_TESTING=$(usex test)
-DICAL_GLIB_VAPI=$(usex vala)
)
if tc-is-cross-compiler && use glib; then
mycmakeargs+=(
-DIMPORT_ICAL_GLIB_SRC_GENERATOR="${native_gen}"
)
fi
if use vala; then
mycmakeargs+=(
-DVALAC="${VALAC}"
-DVAPIGEN="${VAPIGEN}"
)
fi
cmake_src_configure
}
src_compile() {
# build the native ical-glib-src-generator and place it where it's expected
if tc-is-cross-compiler && use glib; then
BUILD_DIR="${BUILD_NATIVE}" tc-env_build cmake_build ical-glib-src-generator
ln -sfT "${BUILD_NATIVE}"/bin/ical-glib-src-generator "${GENERATOR_BIN_DIR}"/ical-glib-src-generator || die
fi
cmake_src_compile
if use doc; then
cmake_src_compile docs
HTML_DOCS=( "${BUILD_DIR}"/apidocs/html/. )
fi
}
src_test() {
local myctestargs=(
-E "(icalrecurtest|icalrecurtest-r)" # bug 660282
)
cmake_src_test
}
src_install() {
cmake_src_install
if use examples; then
rm examples/CMakeLists.txt || die
dodoc -r examples
fi
use static-libs && strip-lto-bytecode
}