nixpkgs/pkgs/development/libraries/libical/default.nix
Guillaume Girol 33afbf39f6 treewide: switch to nativeCheckInputs
checkInputs used to be added to nativeBuildInputs. Now we have
nativeCheckInputs to do that instead. Doing this treewide change allows
to keep hashes identical to before the introduction of
nativeCheckInputs.
2023-01-21 12:00:00 +00:00

107 lines
2.5 KiB
Nix

{ lib
, stdenv
, fetchFromGitHub
, buildPackages
, cmake
, glib
, icu
, libxml2
, ninja
, perl
, pkg-config
, libical
, python3
, tzdata
, fixDarwinDylibNames
, gobject-introspection
, vala
}:
stdenv.mkDerivation rec {
pname = "libical";
version = "3.0.16";
outputs = [ "out" "dev" ]; # "devdoc" ];
src = fetchFromGitHub {
owner = "libical";
repo = "libical";
rev = "v${version}";
sha256 = "sha256-3D/0leI3LLKDFOXkKSrmMamLoaXdi/2Z4iPUXqgwtg8=";
};
strictDeps = true;
nativeBuildInputs = [
cmake
ninja
perl
pkg-config
gobject-introspection
vala
# Docs building fails:
# https://github.com/NixOS/nixpkgs/pull/67204
# previously with https://github.com/NixOS/nixpkgs/pull/61657#issuecomment-495579489
# gtk-doc docbook_xsl docbook_xml_dtd_43 # for docs
] ++ lib.optionals (stdenv.hostPlatform != stdenv.buildPlatform) [
# provides ical-glib-src-generator that runs during build
libical
] ++ lib.optionals stdenv.isDarwin [
fixDarwinDylibNames
];
nativeInstallCheckInputs = [
# running libical-glib tests
(python3.pythonForBuild.withPackages (pkgs: with pkgs; [
pygobject3
]))
];
buildInputs = [
glib
libxml2
icu
gobject-introspection
];
cmakeFlags = [
"-DENABLE_GTK_DOC=False"
"-DGOBJECT_INTROSPECTION=True"
"-DICAL_GLIB_VAPI=True"
] ++ lib.optionals (stdenv.hostPlatform != stdenv.buildPlatform) [
"-DIMPORT_ICAL_GLIB_SRC_GENERATOR=${lib.getDev buildPackages.libical}/lib/cmake/LibIcal/IcalGlibSrcGenerator.cmake"
];
patches = [
# Will appear in 3.1.0
# https://github.com/libical/libical/issues/350
./respect-env-tzdir.patch
];
# Using install check so we do not have to manually set
# LD_LIBRARY_PATH and GI_TYPELIB_PATH variables
# Musl does not support TZDIR.
doInstallCheck = !stdenv.hostPlatform.isMusl;
enableParallelChecking = false;
preInstallCheck = if stdenv.isDarwin then ''
for testexe in $(find ./src/test -maxdepth 1 -type f -executable); do
for lib in $(cd lib && ls *.3.dylib); do
install_name_tool -change $lib $out/lib/$lib $testexe
done
done
'' else null;
installCheckPhase = ''
runHook preInstallCheck
export TZDIR=${tzdata}/share/zoneinfo
ctest --output-on-failure
runHook postInstallCheck
'';
meta = with lib; {
homepage = "https://github.com/libical/libical";
description = "An Open Source implementation of the iCalendar protocols";
license = licenses.mpl20;
platforms = platforms.unix;
};
}