miniaudio: 0.11.22 -> 0.11.23, switch to cmake; sfml: unvendor miniaudio (#442186)

Changed files
+95 -63
pkgs
by-name
development
python-modules
miniaudio
top-level
+48 -20
pkgs/by-name/mi/miniaudio/package.nix
···
stdenv,
fetchFromGitHub,
testers,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "miniaudio";
-
version = "0.11.22";
src = fetchFromGitHub {
owner = "mackron";
repo = "miniaudio";
-
rev = finalAttrs.version;
-
hash = "sha256-o/7sfBcrhyXEakccOAogQqm8dO4Szj1QSpaIHg6OSt4=";
};
-
postInstall = ''
-
mkdir -p $out/include
-
mkdir -p $out/lib/pkgconfig
-
cp $src/miniaudio.h $out/include
-
ln -s $out/include/miniaudio.h $out
-
cp -r $src/extras $out/
-
cat <<EOF >$out/lib/pkgconfig/miniaudio.pc
-
prefix=$out
-
includedir=$out/include
-
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
-
'';
passthru.tests.pkg-config = testers.testMetaPkgConfig finalAttrs.finalPackage;
···
];
maintainers = [ maintainers.jansol ];
pkgConfigModules = [ "miniaudio" ];
-
platforms = platforms.all;
};
})
···
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";
+
version = "0.11.23";
src = fetchFromGitHub {
owner = "mackron";
repo = "miniaudio";
+
tag = finalAttrs.version;
+
hash = "sha256-ZrfKw5a3AtIER2btCKWhuvygasNaHNf9EURf1Kv96Vc=";
};
+
outputs = [
+
"out"
+
"dev"
+
];
+
nativeBuildInputs = [
+
cmake
+
ninja
+
];
+
buildInputs = [
+
libvorbis
+
opusfile
+
]
+
++ lib.optional pulseSupport libpulseaudio
+
++ lib.optional jackSupport libjack2
+
++ lib.optional alsaSupport alsa-lib
+
++ lib.optional sndioSupport sndio;
+
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)
+
(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;
···
];
maintainers = [ maintainers.jansol ];
pkgConfigModules = [ "miniaudio" ];
+
platforms = platforms.linux;
};
})
+10 -20
pkgs/by-name/sf/sfml/package.nix
···
# nativeBuildInputs
cmake,
# buildInputs
flac,
···
glew,
libjpeg,
libvorbis,
udev,
libXi,
libX11,
···
libXrandr,
libXrender,
xcbutilimage,
-
-
# miniaudio
-
alsa-lib,
-
libjack2,
-
libpulseaudio,
-
sndio,
}:
stdenv.mkDerivation (finalAttrs: {
···
url = "https://github.com/SFML/SFML/commit/a87763becbc4672b38f1021418ed94caa0f6540a.patch?full_index=1";
hash = "sha256-tJmXTdhwtWq6XfUPBzw47yTrc6EzwmSiVj9n6jQwHig=";
})
];
-
nativeBuildInputs = [ cmake ];
buildInputs = [
flac
freetype
glew
libjpeg
libvorbis
]
++ lib.optional stdenv.hostPlatform.isLinux udev
++ lib.optionals (!stdenv.hostPlatform.isDarwin) [
···
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 = {
···
# nativeBuildInputs
cmake,
+
pkg-config,
# buildInputs
flac,
···
glew,
libjpeg,
libvorbis,
+
miniaudio,
udev,
libXi,
libX11,
···
libXrandr,
libXrender,
xcbutilimage,
}:
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
+
pkg-config
+
];
buildInputs = [
flac
freetype
glew
libjpeg
libvorbis
+
miniaudio
]
++ lib.optional stdenv.hostPlatform.isLinux udev
++ lib.optionals (!stdenv.hostPlatform.isDarwin) [
···
xcbutilimage
];
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)
];
meta = {
+35
pkgs/by-name/sf/sfml/unvendor-miniaudio.patch
···
···
+
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")
+
+1 -20
pkgs/development/python-modules/miniaudio/default.nix
···
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";
···
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";
-
'';
build-system = [ setuptools ];
···
buildPythonPackage,
fetchFromGitHub,
setuptools,
cffi,
pytestCheckHook,
}:
buildPythonPackage rec {
pname = "miniaudio";
version = "1.61";
···
hash = "sha256-H3o2IWGuMqLrJTzQ7w636Ito6f57WBtMXpXXzrZ7UD8=";
};
+
# TODO: Properly unvendor miniaudio c library
build-system = [ setuptools ];
+1 -3
pkgs/top-level/python-packages.nix
···
minexr = callPackage ../development/python-modules/minexr { };
-
miniaudio = callPackage ../development/python-modules/miniaudio {
-
inherit (pkgs) miniaudio;
-
};
minichain = callPackage ../development/python-modules/minichain { };
···
minexr = callPackage ../development/python-modules/minexr { };
+
miniaudio = callPackage ../development/python-modules/miniaudio { };
minichain = callPackage ../development/python-modules/minichain { };