nixpkgs/pkgs/development/libraries/libical/default.nix
2021-01-21 19:11:02 -08:00

106 lines
2.6 KiB
Nix

{ lib
, stdenv
, fetchFromGitHub
, fetchpatch
, buildPackages
, cmake
, glib
, icu
, libxml2
, ninja
, perl
, pkg-config
, libical
, python3
, tzdata
, introspectionSupport ? stdenv.buildPlatform == stdenv.hostPlatform
, gobject-introspection ? null
, vala ? null
}:
assert introspectionSupport -> gobject-introspection != null && vala != null;
stdenv.mkDerivation rec {
pname = "libical";
version = "3.0.8";
outputs = [ "out" "dev" ]; # "devdoc" ];
src = fetchFromGitHub {
owner = "libical";
repo = "libical";
rev = "v${version}";
sha256 = "0pkh74bfrgp1slv8wsv7lbmal2m7qkixwm5llpmfwaiv14njlp68";
};
nativeBuildInputs = [
cmake
ninja
perl
pkg-config
# 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 introspectionSupport [
gobject-introspection
vala
];
installCheckInputs = [
# running libical-glib tests
(python3.withPackages (pkgs: with pkgs; [
pygobject3
]))
];
buildInputs = [
glib
libxml2
icu
];
cmakeFlags = [
"-DENABLE_GTK_DOC=False"
] ++ lib.optionals introspectionSupport [
"-DGOBJECT_INTROSPECTION=True"
"-DICAL_GLIB_VAPI=True"
] ++ lib.optionals (stdenv.hostPlatform != stdenv.buildPlatform) [
"-DIMPORT_GLIB_SRC_GENERATOR=${lib.getDev buildPackages.libical}/lib/cmake/LibIcal/GlibSrcGenerator.cmake"
];
patches = [
# Will appear in 3.1.0
# https://github.com/libical/libical/issues/350
./respect-env-tzdir.patch
# Export src-generator binary for use while cross-compiling
# https://github.com/libical/libical/pull/439
(fetchpatch {
url = "https://github.com/libical/libical/commit/1197d84b63dce179b55a6293cfd6d0523607baf1.patch";
sha256 = "18i1khnwmw488s7g5a1kf05sladf8dbyhfc69mbcf6dkc4nnc3dg";
})
];
# Using install check so we do not have to manually set
# LD_LIBRARY_PATH and GI_TYPELIB_PATH variables
doInstallCheck = true;
enableParallelChecking = false;
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;
};
}