about summary refs log tree commit diff
path: root/pkgs/by-name/li/libopus
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/by-name/li/libopus')
-rw-r--r--pkgs/by-name/li/libopus/package.nix83
-rw-r--r--pkgs/by-name/li/libopus/test-timeout.patch9
2 files changed, 92 insertions, 0 deletions
diff --git a/pkgs/by-name/li/libopus/package.nix b/pkgs/by-name/li/libopus/package.nix
new file mode 100644
index 0000000000000..cdf00a244ba4b
--- /dev/null
+++ b/pkgs/by-name/li/libopus/package.nix
@@ -0,0 +1,83 @@
+{
+  lib,
+  stdenv,
+  fetchurl,
+  gitUpdater,
+  meson,
+  python3,
+  ninja,
+  fixedPoint ? false,
+  withCustomModes ? true,
+  withIntrinsics ? stdenv.hostPlatform.isAarch || stdenv.hostPlatform.isx86,
+  withAsm ? false,
+
+  # tests
+  ffmpeg-headless,
+  testers,
+}:
+
+stdenv.mkDerivation (finalAttrs: {
+  pname = "libopus";
+  version = "1.5.2";
+
+  src = fetchurl {
+    url = "https://downloads.xiph.org/releases/opus/opus-${finalAttrs.version}.tar.gz";
+    hash = "sha256-ZcHS94ufL7IAgsOMvkfJUa1YOTRYduRpQWEu6H+afOE=";
+  };
+
+  patches = [
+    # Some tests time out easily on slower machines
+    ./test-timeout.patch
+  ];
+
+  postPatch = ''
+    patchShebangs meson/
+  '';
+
+  outputs = [
+    "out"
+    "dev"
+  ];
+
+  nativeBuildInputs = [
+    meson
+    python3
+    ninja
+  ];
+
+  mesonFlags = [
+    (lib.mesonBool "fixed-point" fixedPoint)
+    (lib.mesonBool "custom-modes" withCustomModes)
+    (lib.mesonEnable "intrinsics" withIntrinsics)
+    (lib.mesonEnable "rtcd" (withIntrinsics || withAsm))
+    (lib.mesonEnable "asm" withAsm)
+    (lib.mesonEnable "docs" false)
+  ];
+
+  doCheck = !stdenv.isi686 && !stdenv.isAarch32; # test_unit_LPC_inv_pred_gain fails
+
+  passthru = {
+    updateScript = gitUpdater {
+      url = "https://gitlab.xiph.org/xiph/opus.git";
+      rev-prefix = "v";
+    };
+
+    tests = {
+      inherit ffmpeg-headless;
+
+      pkg-config = testers.hasPkgConfigModules {
+        package = finalAttrs.finalPackage;
+        moduleNames = [ "opus" ];
+      };
+    };
+  };
+
+  meta = {
+    description = "Open, royalty-free, highly versatile audio codec";
+    homepage = "https://opus-codec.org/";
+    changelog = "https://gitlab.xiph.org/xiph/opus/-/releases/v${finalAttrs.version}";
+    license = lib.licenses.bsd3;
+    platforms = lib.platforms.all;
+    maintainers = with lib.maintainers; [ getchoo jopejoe1 ];
+  };
+})
diff --git a/pkgs/by-name/li/libopus/test-timeout.patch b/pkgs/by-name/li/libopus/test-timeout.patch
new file mode 100644
index 0000000000000..76025e648d8f5
--- /dev/null
+++ b/pkgs/by-name/li/libopus/test-timeout.patch
@@ -0,0 +1,9 @@
+--- a/tests/meson.build
++++ b/tests/meson.build
+@@ -1,6 +1,5 @@
+ # Tests that link to libopus
+ opus_tests = [
+-  ['test_opus_api'],
+   ['test_opus_decode', [], 120],
+   ['test_opus_encode', 'opus_encode_regressions.c', 240],
+   ['test_opus_extensions', [], 120],