diff options
Diffstat (limited to 'nixpkgs/pkgs/by-name/li/libcamera/package.nix')
-rw-r--r-- | nixpkgs/pkgs/by-name/li/libcamera/package.nix | 114 |
1 files changed, 114 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/by-name/li/libcamera/package.nix b/nixpkgs/pkgs/by-name/li/libcamera/package.nix new file mode 100644 index 000000000000..a6a0fe8fa7c3 --- /dev/null +++ b/nixpkgs/pkgs/by-name/li/libcamera/package.nix @@ -0,0 +1,114 @@ +{ stdenv +, fetchgit +, lib +, fetchpatch +, meson +, ninja +, pkg-config +, makeFontsConf +, openssl +, libdrm +, libevent +, libyaml +, lttng-ust +, gst_all_1 +, gtest +, graphviz +, doxygen +, python3 +, python3Packages +, systemd # for libudev +, withQcam ? false +, qt5 # withQcam +, libtiff # withQcam +}: + +stdenv.mkDerivation rec { + pname = "libcamera"; + version = "0.2.0"; + + src = fetchgit { + url = "https://git.libcamera.org/libcamera/libcamera.git"; + rev = "v${version}"; + hash = "sha256-x0Im9m9MoACJhQKorMI34YQ+/bd62NdAPc2nWwaJAvM="; + }; + + outputs = [ "out" "dev" "doc" ]; + + postPatch = '' + patchShebangs utils/ + ''; + + strictDeps = true; + + buildInputs = [ + # IPA and signing + openssl + + # gstreamer integration + gst_all_1.gstreamer + gst_all_1.gst-plugins-base + + # cam integration + libevent + libdrm + + # hotplugging + systemd + + # lttng tracing + lttng-ust + + # yamlparser + libyaml + + gtest + ] ++ lib.optionals withQcam [ libtiff qt5.qtbase qt5.qttools ]; + + nativeBuildInputs = [ + meson + ninja + pkg-config + python3 + python3Packages.jinja2 + python3Packages.pyyaml + python3Packages.ply + python3Packages.sphinx + graphviz + doxygen + openssl + ] ++ lib.optional withQcam qt5.wrapQtAppsHook; + + mesonFlags = [ + "-Dv4l2=true" + "-Dqcam=${if withQcam then "enabled" else "disabled"}" + "-Dlc-compliance=disabled" # tries unconditionally to download gtest when enabled + # Avoid blanket -Werror to evade build failures on less + # tested compilers. + "-Dwerror=false" + ]; + + # Fixes error on a deprecated declaration + env.NIX_CFLAGS_COMPILE = "-Wno-error=deprecated-declarations"; + + # Silence fontconfig warnings about missing config + FONTCONFIG_FILE = makeFontsConf { fontDirectories = [ ]; }; + + # libcamera signs the IPA module libraries at install time, but they are then + # modified by stripping and RPATH fixup. Therefore, we need to generate the + # signatures again ourselves. + # + # If this is not done, libcamera will still try to load them, but it will + # isolate them in separate processes, which can cause crashes for IPA modules + # that are not designed for this (notably ipa_rpi.so). + postFixup = '' + ../src/ipa/ipa-sign-install.sh src/ipa-priv-key.pem $out/lib/libcamera/ipa_*.so + ''; + + meta = with lib; { + description = "An open source camera stack and framework for Linux, Android, and ChromeOS"; + homepage = "https://libcamera.org"; + license = licenses.lgpl2Plus; + maintainers = with maintainers; [ citadelcore ]; + }; +} |