From da709db7c9d4a119b78be0b12a193f44f1dd6da8 Mon Sep 17 00:00:00 2001 From: Marcin Serwin Date: Sat, 19 Jul 2025 17:49:12 +0200 Subject: [PATCH 1/4] miniaudio: 0.11.22 -> 0.11.23 Signed-off-by: Marcin Serwin --- pkgs/by-name/mi/miniaudio/package.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/by-name/mi/miniaudio/package.nix b/pkgs/by-name/mi/miniaudio/package.nix index adece2e438ce..deaae50371e1 100644 --- a/pkgs/by-name/mi/miniaudio/package.nix +++ b/pkgs/by-name/mi/miniaudio/package.nix @@ -6,13 +6,13 @@ }: stdenv.mkDerivation (finalAttrs: { pname = "miniaudio"; - version = "0.11.22"; + version = "0.11.23"; src = fetchFromGitHub { owner = "mackron"; repo = "miniaudio"; - rev = finalAttrs.version; - hash = "sha256-o/7sfBcrhyXEakccOAogQqm8dO4Szj1QSpaIHg6OSt4="; + tag = finalAttrs.version; + hash = "sha256-ZrfKw5a3AtIER2btCKWhuvygasNaHNf9EURf1Kv96Vc="; }; postInstall = '' From 84143c424b06b7caedcadc0bf20d02f15f60c5aa Mon Sep 17 00:00:00 2001 From: Marcin Serwin Date: Sat, 19 Jul 2025 17:49:12 +0200 Subject: [PATCH 2/4] python3Packages.miniaudio: use vendorded miniaudio Signed-off-by: Marcin Serwin --- .../python-modules/miniaudio/default.nix | 21 +------------------ pkgs/top-level/python-packages.nix | 4 +--- 2 files changed, 2 insertions(+), 23 deletions(-) diff --git a/pkgs/development/python-modules/miniaudio/default.nix b/pkgs/development/python-modules/miniaudio/default.nix index c8bf9d91a1a7..6d857d248e76 100644 --- a/pkgs/development/python-modules/miniaudio/default.nix +++ b/pkgs/development/python-modules/miniaudio/default.nix @@ -3,22 +3,10 @@ buildPythonPackage, fetchFromGitHub, setuptools, - miniaudio, cffi, pytestCheckHook, }: -let - # TODO: recheck after 1.59 - miniaudio' = miniaudio.overrideAttrs (oldAttrs: rec { - version = "0.11.16"; # cffi breakage with 0.11.17 - src = fetchFromGitHub { - inherit (oldAttrs.src) owner repo; - rev = "refs/tags/${version}"; - hash = "sha256-POe/dYPJ25RKNGIhaLoqxm9JJ08MrTyHVN4NmaGOdwM="; - }; - }); -in buildPythonPackage rec { pname = "miniaudio"; version = "1.61"; @@ -31,14 +19,7 @@ buildPythonPackage rec { hash = "sha256-H3o2IWGuMqLrJTzQ7w636Ito6f57WBtMXpXXzrZ7UD8="; }; - postPatch = '' - rm -r miniaudio - ln -s ${miniaudio'} miniaudio - substituteInPlace build_ffi_module.py \ - --replace-fail "miniaudio/stb_vorbis.c" "miniaudio/extras/stb_vorbis.c"; - substituteInPlace miniaudio.c \ - --replace-fail "miniaudio/stb_vorbis.c" "miniaudio/extras/stb_vorbis.c"; - ''; + # TODO: Properly unvendor miniaudio c library build-system = [ setuptools ]; diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 9e7bfc8df7f1..9ca3f3ce7f75 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -9329,9 +9329,7 @@ self: super: with self; { minexr = callPackage ../development/python-modules/minexr { }; - miniaudio = callPackage ../development/python-modules/miniaudio { - inherit (pkgs) miniaudio; - }; + miniaudio = callPackage ../development/python-modules/miniaudio { }; minichain = callPackage ../development/python-modules/minichain { }; From 48ac9598d5ebc64c10b4488a561ef298da51dfcb Mon Sep 17 00:00:00 2001 From: Marcin Serwin Date: Sat, 19 Jul 2025 17:49:12 +0200 Subject: [PATCH 3/4] miniaudio: switch to cmake Signed-off-by: Marcin Serwin --- pkgs/by-name/mi/miniaudio/package.nix | 62 +++++++++++++++++++-------- 1 file changed, 45 insertions(+), 17 deletions(-) diff --git a/pkgs/by-name/mi/miniaudio/package.nix b/pkgs/by-name/mi/miniaudio/package.nix index deaae50371e1..852418e7aeca 100644 --- a/pkgs/by-name/mi/miniaudio/package.nix +++ b/pkgs/by-name/mi/miniaudio/package.nix @@ -3,6 +3,21 @@ stdenv, fetchFromGitHub, testers, + + cmake, + ninja, + + alsa-lib, + libjack2, + libpulseaudio, + libvorbis, + opusfile, + sndio, + + alsaSupport ? true, + pulseSupport ? true, + jackSupport ? true, + sndioSupport ? true, }: stdenv.mkDerivation (finalAttrs: { pname = "miniaudio"; @@ -15,26 +30,39 @@ stdenv.mkDerivation (finalAttrs: { hash = "sha256-ZrfKw5a3AtIER2btCKWhuvygasNaHNf9EURf1Kv96Vc="; }; - postInstall = '' - mkdir -p $out/include - mkdir -p $out/lib/pkgconfig + outputs = [ + "out" + "dev" + ]; - cp $src/miniaudio.h $out/include - ln -s $out/include/miniaudio.h $out + nativeBuildInputs = [ + cmake + ninja + ]; - cp -r $src/extras $out/ + buildInputs = [ + libvorbis + opusfile + ] + ++ lib.optional pulseSupport libpulseaudio + ++ lib.optional jackSupport libjack2 + ++ lib.optional alsaSupport alsa-lib + ++ lib.optional sndioSupport sndio; - cat <$out/lib/pkgconfig/miniaudio.pc - prefix=$out - includedir=$out/include + cmakeFlags = [ + (lib.cmakeBool "BUILD_SHARED_LIBS" (!stdenv.hostPlatform.isStatic)) + (lib.cmakeBool "MINIAUDIO_NO_RUNTIME_LINKING" true) + (lib.cmakeBool "MINIAUDIO_BUILD_TESTS" true) + (lib.cmakeBool "MINIAUDIO_BUILD_EXAMPLES" true) - Name: miniaudio - Description: An audio playback and capture library in a single source file. - Version: $version - Cflags: -I$out/include - Libs: -lm -lpthread -latomic - EOF - ''; + (lib.cmakeBool "MINIAUDIO_ENABLE_ONLY_SPECIFIC_BACKENDS" true) + (lib.cmakeBool "MINIAUDIO_ENABLE_PULSEAUDIO" pulseSupport) + (lib.cmakeBool "MINIAUDIO_ENABLE_JACK" jackSupport) + (lib.cmakeBool "MINIAUDIO_ENABLE_SNDIO" alsaSupport) + (lib.cmakeBool "MINIAUDIO_ENABLE_ALSA" sndioSupport) + ]; + + doCheck = true; passthru.tests.pkg-config = testers.testMetaPkgConfig finalAttrs.finalPackage; @@ -48,6 +76,6 @@ stdenv.mkDerivation (finalAttrs: { ]; maintainers = [ maintainers.jansol ]; pkgConfigModules = [ "miniaudio" ]; - platforms = platforms.all; + platforms = platforms.linux; }; }) From d06691a01ea0ae4cb9099ab8a72d0826ac9de3f5 Mon Sep 17 00:00:00 2001 From: Marcin Serwin Date: Sat, 19 Jul 2025 17:49:12 +0200 Subject: [PATCH 4/4] sfml: unvendor miniaudio Signed-off-by: Marcin Serwin --- pkgs/by-name/sf/sfml/package.nix | 30 ++++++---------- pkgs/by-name/sf/sfml/unvendor-miniaudio.patch | 35 +++++++++++++++++++ 2 files changed, 45 insertions(+), 20 deletions(-) create mode 100644 pkgs/by-name/sf/sfml/unvendor-miniaudio.patch diff --git a/pkgs/by-name/sf/sfml/package.nix b/pkgs/by-name/sf/sfml/package.nix index 235f31e50475..f91240cb85b1 100644 --- a/pkgs/by-name/sf/sfml/package.nix +++ b/pkgs/by-name/sf/sfml/package.nix @@ -6,6 +6,7 @@ # nativeBuildInputs cmake, + pkg-config, # buildInputs flac, @@ -13,6 +14,7 @@ glew, libjpeg, libvorbis, + miniaudio, udev, libXi, libX11, @@ -20,12 +22,6 @@ libXrandr, libXrender, xcbutilimage, - - # miniaudio - alsa-lib, - libjack2, - libpulseaudio, - sndio, }: stdenv.mkDerivation (finalAttrs: { @@ -45,15 +41,22 @@ stdenv.mkDerivation (finalAttrs: { url = "https://github.com/SFML/SFML/commit/a87763becbc4672b38f1021418ed94caa0f6540a.patch?full_index=1"; hash = "sha256-tJmXTdhwtWq6XfUPBzw47yTrc6EzwmSiVj9n6jQwHig="; }) + + # Not upstreamble in the near future, see https://github.com/SFML/SFML/pull/3555 + ./unvendor-miniaudio.patch ]; - nativeBuildInputs = [ cmake ]; + nativeBuildInputs = [ + cmake + pkg-config + ]; buildInputs = [ flac freetype glew libjpeg libvorbis + miniaudio ] ++ lib.optional stdenv.hostPlatform.isLinux udev ++ lib.optionals (!stdenv.hostPlatform.isDarwin) [ @@ -65,25 +68,12 @@ stdenv.mkDerivation (finalAttrs: { xcbutilimage ]; - # We rely on RUNPATH - dontPatchELF = true; - cmakeFlags = [ (lib.cmakeBool "BUILD_SHARED_LIBS" (!stdenv.hostPlatform.isStatic)) (lib.cmakeBool "SFML_INSTALL_PKGCONFIG_FILES" true) (lib.cmakeFeature "SFML_MISC_INSTALL_PREFIX" "share/SFML") (lib.cmakeBool "SFML_BUILD_FRAMEWORKS" false) (lib.cmakeBool "SFML_USE_SYSTEM_DEPS" true) - - # FIXME: Unvendor miniaudio and move these deps there - (lib.cmakeFeature "CMAKE_INSTALL_RPATH" ( - lib.makeLibraryPath [ - alsa-lib - libjack2 - libpulseaudio - sndio - ] - )) ]; meta = { diff --git a/pkgs/by-name/sf/sfml/unvendor-miniaudio.patch b/pkgs/by-name/sf/sfml/unvendor-miniaudio.patch new file mode 100644 index 000000000000..6053118e05fe --- /dev/null +++ b/pkgs/by-name/sf/sfml/unvendor-miniaudio.patch @@ -0,0 +1,35 @@ +diff --git a/src/SFML/Audio/CMakeLists.txt b/src/SFML/Audio/CMakeLists.txt +index 7567205c..ecbb4ea1 100644 +--- a/src/SFML/Audio/CMakeLists.txt ++++ b/src/SFML/Audio/CMakeLists.txt +@@ -10,7 +10,6 @@ set(SRC + ${INCROOT}/Export.hpp + ${SRCROOT}/Listener.cpp + ${INCROOT}/Listener.hpp +- ${SRCROOT}/Miniaudio.cpp + ${SRCROOT}/MiniaudioUtils.hpp + ${SRCROOT}/MiniaudioUtils.cpp + ${SRCROOT}/Music.cpp +@@ -169,8 +168,10 @@ sfml_add_library(Audio + # avoids warnings in vorbisfile.h + target_compile_definitions(sfml-audio PRIVATE OV_EXCLUDE_STATIC_CALLBACKS FLAC__NO_DLL) + +-# disable miniaudio features we do not use +-target_compile_definitions(sfml-audio PRIVATE MA_NO_MP3 MA_NO_FLAC MA_NO_ENCODING MA_NO_RESOURCE_MANAGER MA_NO_GENERATION) ++find_package(PkgConfig REQUIRED) ++pkg_check_modules(miniaudio REQUIRED IMPORTED_TARGET miniaudio) ++target_link_libraries(sfml-audio PRIVATE PkgConfig::miniaudio) ++target_include_directories(sfml-audio SYSTEM PRIVATE "${miniaudio_INCLUDE_DIRS}/miniaudio") + + # use standard fixed-width integer types + target_compile_definitions(sfml-audio PRIVATE MA_USE_STDINT) +@@ -186,9 +187,6 @@ if(SFML_OS_IOS) + target_link_libraries(sfml-audio PRIVATE "-framework Foundation" "-framework CoreFoundation" "-framework CoreAudio" "-framework AudioToolbox" "-framework AVFoundation") + endif() + +-# miniaudio sources +-target_include_directories(sfml-audio SYSTEM PRIVATE "${PROJECT_SOURCE_DIR}/extlibs/headers/miniaudio") +- + # minimp3 sources + target_include_directories(sfml-audio SYSTEM PRIVATE "${PROJECT_SOURCE_DIR}/extlibs/headers/minimp3") +