nixpkgs/pkgs/by-name/li/libical/package.nix
Silvan Mosberger 4f0dadbf38 treewide: format all inactive Nix files
After final improvements to the official formatter implementation,
this commit now performs the first treewide reformat of Nix files using it.
This is part of the implementation of RFC 166.

Only "inactive" files are reformatted, meaning only files that
aren't being touched by any PR with activity in the past 2 months.
This is to avoid conflicts for PRs that might soon be merged.
Later we can do a full treewide reformat to get the rest,
which should not cause as many conflicts.

A CI check has already been running for some time to ensure that new and
already-formatted files are formatted, so the files being reformatted here
should also stay formatted.

This commit was automatically created and can be verified using

    nix-build a08b3a4d19.tar.gz \
      --argstr baseRev b32a094368
    result/bin/apply-formatting $NIXPKGS_PATH
2024-12-10 20:26:33 +01:00

137 lines
3.5 KiB
Nix

{
lib,
stdenv,
fetchFromGitHub,
pkgsBuildBuild,
pkgsBuildHost,
cmake,
glib,
icu,
libxml2,
ninja,
perl,
pkg-config,
libical,
python3,
tzdata,
fixDarwinDylibNames,
withIntrospection ? stdenv.hostPlatform.emulatorAvailable pkgsBuildHost,
gobject-introspection,
vala,
}:
stdenv.mkDerivation rec {
pname = "libical";
version = "3.0.18";
outputs = [
"out"
"dev"
]; # "devdoc" ];
src = fetchFromGitHub {
owner = "libical";
repo = "libical";
rev = "v${version}";
sha256 = "sha256-32FNnCybXO67Vtg1LM6miJUaK+r0mlfjxgLQg1LD8Es=";
};
strictDeps = true;
depsBuildBuild = lib.optionals (stdenv.hostPlatform != stdenv.buildPlatform) [
# provides ical-glib-src-generator that runs during build
libical
];
nativeBuildInputs =
[
cmake
icu
ninja
perl
pkg-config
]
++ lib.optionals withIntrospection [
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.isDarwin [
fixDarwinDylibNames
];
nativeInstallCheckInputs = [
# running libical-glib tests
(python3.pythonOnBuildForHost.withPackages (
pkgs: with pkgs; [
pygobject3
]
))
];
buildInputs = [
glib
libxml2
icu
];
cmakeFlags =
[
"-DENABLE_GTK_DOC=False"
"-DGOBJECT_INTROSPECTION=${if withIntrospection then "True" else "False"}"
"-DICAL_GLIB_VAPI=${if withIntrospection then "True" else "False"}"
]
++ lib.optionals (stdenv.hostPlatform != stdenv.buildPlatform) [
"-DIMPORT_ICAL_GLIB_SRC_GENERATOR=${lib.getDev pkgsBuildBuild.libical}/lib/cmake/LibIcal/IcalGlibSrcGenerator.cmake"
];
patches = [
# Will appear in 3.1.0
# https://github.com/libical/libical/issues/350
./respect-env-tzdir.patch
];
postPatch = ''
# Fix typo in test env setup
# https://github.com/libical/libical/commit/03c02ced21494413920744a400c638b0cb5d493f
substituteInPlace src/test/libical-glib/CMakeLists.txt \
--replace-fail "''${CMAKE_BINARY_DIR}/src/libical-glib;\$ENV{GI_TYPELIB_PATH}" "''${CMAKE_BINARY_DIR}/src/libical-glib:\$ENV{GI_TYPELIB_PATH}" \
--replace-fail "''${LIBRARY_OUTPUT_PATH};\$ENV{LD_LIBRARY_PATH}" "''${LIBRARY_OUTPUT_PATH}:\$ENV{LD_LIBRARY_PATH}"
'';
# 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.hostPlatform.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 = "Open Source implementation of the iCalendar protocols";
changelog = "https://github.com/libical/libical/raw/v${version}/ReleaseNotes.txt";
license = licenses.mpl20;
platforms = platforms.unix;
};
}