python312Packages.types-aiobotocore: 2.15.2 -> 2.15.2.post3 (#361801)
[NixPkgs.git] / pkgs / by-name / sh / shaka-packager / package.nix
blobefed3e8563c08fb3af29c70d75128c9d79583f50
2   lib,
3   stdenv,
4   fetchFromGitHub,
5   testers,
6   cmake,
7   ninja,
8   python3,
9   nix-update-script,
10   abseil-cpp,
11   curl,
12   gtest,
13   nlohmann_json,
14   libpng,
15   libxml2,
16   libwebm,
17   mbedtls,
18   mimalloc,
19   protobuf,
20   zlib,
23 stdenv.mkDerivation (finalAttrs: {
24   pname = "shaka-packager";
25   version = "3.4.0";
27   src = fetchFromGitHub {
28     owner = "shaka-project";
29     repo = "shaka-packager";
30     rev = "refs/tags/v${finalAttrs.version}";
31     hash = "sha256-4ZxBE1jpFR93OigAd7xOpUHXSZ5o9keNBJXuS2pNjpo=";
32   };
34   patches = [
35     # By default, the git commit hash and tag are used as version
36     # and shaka-packager fails to build if these are not available.
37     # This patch makes it possible to pass an external value as version.
38     # The value itself is declared further below in `cmakeFlags`.
39     ./0001-Allow-external-declaration-of-packager-version.patch
40     # Dependencies are vendored as git submodules inside shaka-packager.
41     # We want to reuse the dependencies from nixpkgs instead to avoid unnecessary
42     # build overhead and to ensure they are up to date.
43     # This patch disables the vendored dependencies (by excluding `third-party`),
44     # finds them inside the build environment and aliases them so they can be accessed
45     # without prefixing namespaces.
46     # The last step is necessary to keep the patch size to a minimum, otherwise we'd have
47     # to add the namespace identifiers everywhere a dependency is used.
48     ./0002-Unvendor-dependencies.patch
49   ];
51   nativeBuildInputs = [
52     cmake
53     ninja
54   ];
56   buildInputs = [
57     (python3.withPackages (ps: [
58       # As we remove the vendored protobuf in our patch,
59       # we must re-add it to the python package used for
60       # pssh_box.py.
61       ps.protobuf
62     ]))
63     abseil-cpp
64     curl
65     gtest
66     nlohmann_json
67     libpng
68     libxml2
69     libwebm
70     mbedtls
71     mimalloc
72     (protobuf.override {
73       # must be the same version as for shaka-packager
74       inherit abseil-cpp;
75     })
76     zlib
77   ];
79   cmakeFlags = [
80     "-DPACKAGER_VERSION=v${finalAttrs.version}-nixpkgs"
81     # Targets are selected below in ninjaFlags
82     "-DCMAKE_SKIP_INSTALL_ALL_DEPENDENCY=ON"
83   ];
85   ninjaFlags = [
86     "mpd_generator"
87     "packager"
88     "pssh_box_py"
89   ];
91   passthru = {
92     updateScript = nix-update-script { };
93     tests.version = testers.testVersion {
94       package = finalAttrs.finalPackage;
95       version = "v${finalAttrs.version}-nixpkgs-release";
96     };
97   };
99   meta = {
100     description = "Media packaging framework for VOD and Live DASH and HLS applications";
101     homepage = "https://shaka-project.github.io/shaka-packager/html/";
102     changelog = "https://github.com/shaka-project/shaka-packager/releases/tag/v${finalAttrs.version}";
103     license = lib.licenses.bsd3;
104     mainProgram = "packager";
105     maintainers = with lib.maintainers; [ niklaskorz ];
106     platforms = lib.platforms.all;
107   };