From 7624e582f6d6aa2c466e79fc624192979d319a86 Mon Sep 17 00:00:00 2001 From: Markus Kowalewski Date: Wed, 30 Apr 2025 13:10:34 +0200 Subject: [PATCH 1/3] codec2: add testers.testMetaPkgConfig --- pkgs/by-name/co/codec2/package.nix | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/pkgs/by-name/co/codec2/package.nix b/pkgs/by-name/co/codec2/package.nix index 23e4896dbeca..a05130bfbf01 100644 --- a/pkgs/by-name/co/codec2/package.nix +++ b/pkgs/by-name/co/codec2/package.nix @@ -1,5 +1,6 @@ { lib, + testers, stdenv, buildPackages, fetchFromGitHub, @@ -8,14 +9,14 @@ lpcnetfreedv, }: -stdenv.mkDerivation rec { +stdenv.mkDerivation (finalAttrs: { pname = "codec2"; version = "1.2.0"; src = fetchFromGitHub { owner = "drowe67"; repo = "codec2"; - rev = "${version}"; + rev = finalAttrs.version; hash = "sha256-69Mp4o3MgV98Fqfai4txv5jQw2WpoPuoWcwHsNAFPQM="; }; @@ -56,6 +57,8 @@ stdenv.mkDerivation rec { "-DLPCNET=ON" ]; + passthru.tests.pkg-config = testers.testMetaPkgConfig finalAttrs.finalPackage; + meta = with lib; { description = "Speech codec designed for communications quality speech at low data rates"; homepage = "https://www.rowetel.com/codec2.html"; @@ -64,5 +67,6 @@ stdenv.mkDerivation rec { maintainers = with maintainers; [ markuskowa ]; # generate_codebook only built for host platform broken = !stdenv.buildPlatform.canExecute stdenv.hostPlatform; + pkgConfigModules = [ "codec2" ]; }; -} +}) From f391fc2b91294812ab30d7e60cd849f788792604 Mon Sep 17 00:00:00 2001 From: Markus Kowalewski Date: Wed, 30 Apr 2025 13:31:20 +0200 Subject: [PATCH 2/3] codec2: fix paths in pkg-config file --- pkgs/by-name/co/codec2/fix-pkg-config.patch | 13 +++++++++++++ pkgs/by-name/co/codec2/package.nix | 5 +++++ 2 files changed, 18 insertions(+) create mode 100644 pkgs/by-name/co/codec2/fix-pkg-config.patch diff --git a/pkgs/by-name/co/codec2/fix-pkg-config.patch b/pkgs/by-name/co/codec2/fix-pkg-config.patch new file mode 100644 index 000000000000..58b9d13e8e3c --- /dev/null +++ b/pkgs/by-name/co/codec2/fix-pkg-config.patch @@ -0,0 +1,13 @@ +diff --git a/codec2.pc.in b/codec2.pc.in +index ecca704..94fca12 100644 +--- a/codec2.pc.in ++++ b/codec2.pc.in +@@ -1,6 +1,5 @@ +-prefix=@CMAKE_INSTALL_PREFIX@ +-libdir=@CMAKE_INSTALL_PREFIX@/@CMAKE_INSTALL_LIBDIR@ +-includedir=@CMAKE_INSTALL_PREFIX@/@CMAKE_INSTALL_INCLUDEDIR@/codec2 ++libdir=@CMAKE_INSTALL_LIBDIR@ ++includedir=@CMAKE_INSTALL_INCLUDEDIR@/codec2 + + Name: codec2 + Description: A speech codec for 2400 bit/s and below diff --git a/pkgs/by-name/co/codec2/package.nix b/pkgs/by-name/co/codec2/package.nix index a05130bfbf01..af167085d793 100644 --- a/pkgs/by-name/co/codec2/package.nix +++ b/pkgs/by-name/co/codec2/package.nix @@ -20,6 +20,11 @@ stdenv.mkDerivation (finalAttrs: { hash = "sha256-69Mp4o3MgV98Fqfai4txv5jQw2WpoPuoWcwHsNAFPQM="; }; + patches = [ + # Fix nix-store path dupliucations + ./fix-pkg-config.patch + ]; + nativeBuildInputs = [ cmake buildPackages.stdenv.cc # needs to build a C program to run at build time From 32f80f808c30a229a220b2baf4d58242ba7901ac Mon Sep 17 00:00:00 2001 From: Markus Kowalewski Date: Wed, 30 Apr 2025 14:09:28 +0200 Subject: [PATCH 3/3] codec2: use split outputs -> out, lib, dev --- pkgs/by-name/co/codec2/package.nix | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/pkgs/by-name/co/codec2/package.nix b/pkgs/by-name/co/codec2/package.nix index af167085d793..5eef7e5c577b 100644 --- a/pkgs/by-name/co/codec2/package.nix +++ b/pkgs/by-name/co/codec2/package.nix @@ -25,6 +25,12 @@ stdenv.mkDerivation (finalAttrs: { ./fix-pkg-config.patch ]; + outputs = [ + "out" + "lib" + "dev" + ]; + nativeBuildInputs = [ cmake buildPackages.stdenv.cc # needs to build a C program to run at build time @@ -46,10 +52,18 @@ stdenv.mkDerivation (finalAttrs: { install -Dm0755 src/{c2enc,c2sim,freedv_rx,freedv_tx,cohpsk_*,fdmdv_*,fsk_*,ldpc_*,ofdm_*} -t $out/bin/ ''; - # Swap keyword order to satisfy SWIG parser - postFixup = '' - sed -r -i 's/(\<_Complex)(\s+)(float|double)/\3\2\1/' $out/include/$pname/freedv_api.h - ''; + postFixup = + # Swap keyword order to satisfy SWIG parser + '' + sed -r -i 's/(\<_Complex)(\s+)(float|double)/\3\2\1/' $dev/include/$pname/freedv_api.h + '' + + + # generated cmake module is not compatible with multiple outputs + '' + substituteInPlace $dev/lib/cmake/codec2/codec2-config.cmake --replace-fail \ + '"''${_IMPORT_PREFIX}/include/codec2' \ + "\"$dev/include/codec2" + ''; cmakeFlags = [