push sheeet
Some checks failed
Periodic Merges (6h) / master → staging-nixos (push) Failing after 12m50s
Periodic Merges (6h) / master → staging-next (push) Failing after 12m54s
Periodic Merges (24h) / merge-base(master,staging) → haskell-updates (push) Failing after 11m54s
Periodic Merges (6h) / staging-next → staging (push) Failing after 12m13s
Periodic Merges (24h) / staging-next-25.05 → staging-25.05 (push) Failing after 13m24s
Periodic Merges (24h) / release-25.05 → staging-next-25.05 (push) Failing after 14m28s

This commit is contained in:
Dark Steveneq
2025-10-09 14:15:47 +02:00
commit 646b892680
49168 changed files with 5897842 additions and 0 deletions

View File

@@ -0,0 +1,183 @@
{
aacgain,
chromaprint,
ffmpeg,
flac,
imagemagick,
keyfinder-cli,
mp3gain,
mp3val,
python3Packages,
version,
lib,
...
}:
{
absubmit = {
deprecated = true;
testPaths = [ ];
};
advancedrewrite = {
testPaths = [ ];
};
acousticbrainz = {
deprecated = true;
propagatedBuildInputs = [ python3Packages.requests ];
};
albumtypes = { };
aura = {
propagatedBuildInputs = with python3Packages; [
flask
flask-cors
pillow
];
};
autobpm = {
propagatedBuildInputs = with python3Packages; [
librosa
# An optional dependency of librosa, needed for beets' autobpm
resampy
];
};
badfiles = {
testPaths = [ ];
wrapperBins = [
mp3val
flac
];
};
bareasc = { };
beatport.propagatedBuildInputs = [ python3Packages.requests-oauthlib ];
bench.testPaths = [ ];
bpd.testPaths = [ ];
bpm.testPaths = [ ];
bpsync.testPaths = [ ];
bucket = { };
chroma = {
propagatedBuildInputs = [ python3Packages.pyacoustid ];
testPaths = [ ];
wrapperBins = [
chromaprint
];
};
convert.wrapperBins = [ ffmpeg ];
deezer = {
propagatedBuildInputs = [ python3Packages.requests ];
testPaths = [ ];
};
discogs.propagatedBuildInputs = with python3Packages; [
discogs-client
requests
];
duplicates.testPaths = [ ];
edit = { };
embedart = {
propagatedBuildInputs = with python3Packages; [ pillow ];
wrapperBins = [ imagemagick ];
};
embyupdate.propagatedBuildInputs = [ python3Packages.requests ];
export = { };
fetchart = {
propagatedBuildInputs = with python3Packages; [
beautifulsoup4
langdetect
pillow
requests
];
wrapperBins = [ imagemagick ];
};
filefilter = { };
fish.testPaths = [ ];
freedesktop.testPaths = [ ];
fromfilename.testPaths = [ ];
ftintitle = { };
fuzzy.testPaths = [ ];
gmusic.testPaths = [ ];
hook = { };
ihate = { };
importadded = { };
importfeeds = { };
info = { };
inline.testPaths = [ ];
ipfs = { };
keyfinder.wrapperBins = [ keyfinder-cli ];
kodiupdate = {
propagatedBuildInputs = [ python3Packages.requests ];
testPaths = [ ];
};
lastgenre.propagatedBuildInputs = [ python3Packages.pylast ];
lastimport = {
propagatedBuildInputs = [ python3Packages.pylast ];
testPaths = [ ];
};
limit = { };
listenbrainz = {
testPaths = [ ];
};
loadext = {
propagatedBuildInputs = [ python3Packages.requests ];
testPaths = [ ];
};
lyrics.propagatedBuildInputs = with python3Packages; [
beautifulsoup4
langdetect
requests
];
mbcollection.testPaths = [ ];
mbsubmit = { };
mbsync = { };
metasync.testPaths = [ ];
missing.testPaths = [ ];
mpdstats.propagatedBuildInputs = [ python3Packages.mpd2 ];
mpdupdate = {
propagatedBuildInputs = [ python3Packages.mpd2 ];
testPaths = [ ];
};
musicbrainz = { };
parentwork = { };
permissions = { };
play = { };
playlist.propagatedBuildInputs = [ python3Packages.requests ];
plexupdate = { };
random = { };
replace = { };
replaygain.wrapperBins = [
aacgain
ffmpeg
mp3gain
];
rewrite.testPaths = [ ];
scrub.testPaths = [ ];
smartplaylist = { };
sonosupdate = {
propagatedBuildInputs = [ python3Packages.soco ];
testPaths = [ ];
};
spotify = { };
subsonicplaylist = {
propagatedBuildInputs = [ python3Packages.requests ];
testPaths = [ ];
};
subsonicupdate.propagatedBuildInputs = [ python3Packages.requests ];
substitute = {
testPaths = [ ];
};
the = { };
thumbnails = {
propagatedBuildInputs = with python3Packages; [
pillow
pyxdg
];
wrapperBins = [ imagemagick ];
};
types.testPaths = [ "test/plugins/test_types_plugin.py" ];
unimported.testPaths = [ ];
web.propagatedBuildInputs = with python3Packages; [
flask
flask-cors
];
zero = { };
_typing = {
testPaths = [ ];
};
}

View File

@@ -0,0 +1,253 @@
{
lib,
stdenv,
src,
version,
fetchpatch,
bashInteractive,
diffPlugins,
gobject-introspection,
gst_all_1,
python3Packages,
sphinxHook,
writableTmpDirAsHomeHook,
runtimeShell,
writeScript,
# plugin deps, used indirectly by the @inputs when we `import ./builtin-plugins.nix`
aacgain,
chromaprint,
essentia-extractor,
ffmpeg,
flac,
imagemagick,
keyfinder-cli,
mp3gain,
mp3val,
extraPatches ? [ ],
pluginOverrides ? { },
disableAllPlugins ? false,
disabledTests ? [ ],
extraNativeBuildInputs ? [ ],
# tests
runCommand,
beets,
}@inputs:
let
inherit (lib) attrNames attrValues concatMap;
mkPlugin =
{
name,
enable ? !disableAllPlugins,
builtin ? false,
propagatedBuildInputs ? [ ],
testPaths ? [
"test/plugins/test_${name}.py"
],
wrapperBins ? [ ],
}:
{
inherit
name
enable
builtin
propagatedBuildInputs
testPaths
wrapperBins
;
};
basePlugins = lib.mapAttrs (_: a: { builtin = true; } // a) (import ./builtin-plugins.nix inputs);
pluginOverrides' = lib.mapAttrs (
plugName:
lib.throwIf (basePlugins.${plugName}.deprecated or false)
"beets evaluation error: Plugin ${plugName} was enabled in pluginOverrides, but it has been removed. Remove the override to fix evaluation."
) pluginOverrides;
allPlugins = lib.mapAttrs (n: a: mkPlugin { name = n; } // a) (
lib.recursiveUpdate basePlugins pluginOverrides'
);
builtinPlugins = lib.filterAttrs (_: p: p.builtin) allPlugins;
enabledPlugins = lib.filterAttrs (_: p: p.enable) allPlugins;
disabledPlugins = lib.filterAttrs (_: p: !p.enable) allPlugins;
disabledTestPaths = lib.flatten (attrValues (lib.mapAttrs (_: v: v.testPaths) disabledPlugins));
pluginWrapperBins = concatMap (p: p.wrapperBins) (attrValues enabledPlugins);
in
python3Packages.buildPythonApplication {
pname = "beets";
inherit src version;
pyproject = true;
patches = [
]
++ extraPatches;
build-system = [
python3Packages.poetry-core
];
dependencies =
with python3Packages;
[
confuse
gst-python
jellyfish
mediafile
munkres
musicbrainzngs
platformdirs
pyyaml
unidecode
typing-extensions
lap
]
++ (concatMap (p: p.propagatedBuildInputs) (attrValues enabledPlugins));
nativeBuildInputs = [
gobject-introspection
sphinxHook
python3Packages.pydata-sphinx-theme
]
++ extraNativeBuildInputs;
buildInputs = [
]
++ (with gst_all_1; [
gst-plugins-base
gst-plugins-good
gst-plugins-ugly
]);
outputs = [
"out"
"doc"
"man"
];
sphinxBuilders = [
"html"
"man"
];
postInstall = ''
mkdir -p $out/share/zsh/site-functions
cp extra/_beet $out/share/zsh/site-functions/
'';
makeWrapperArgs = [
"--set GI_TYPELIB_PATH \"$GI_TYPELIB_PATH\""
"--set GST_PLUGIN_SYSTEM_PATH_1_0 \"$GST_PLUGIN_SYSTEM_PATH_1_0\""
"--prefix PATH : ${lib.makeBinPath pluginWrapperBins}"
];
nativeCheckInputs =
with python3Packages;
[
pytestCheckHook
pytest-cov-stub
mock
rarfile
responses
requests-mock
pillow
]
++ [
writableTmpDirAsHomeHook
]
++ pluginWrapperBins;
__darwinAllowLocalNetworking = true;
disabledTestPaths =
disabledTestPaths
++ [
# touches network
"test/plugins/test_aura.py"
]
++ lib.optionals stdenv.hostPlatform.isDarwin [
# Flaky: several tests fail randomly with:
# if not self._poll(timeout):
# raise Empty
# _queue.Empty
"test/plugins/test_bpd.py"
]
++ lib.optionals stdenv.hostPlatform.isLinux [
# fail on Hydra with `RuntimeError: image cannot be obtained without artresizer backend`
"test/plugins/test_art.py::AlbumArtOperationConfigurationTest::test_enforce_ratio"
"test/plugins/test_art.py::AlbumArtOperationConfigurationTest::test_enforce_ratio_with_percent_margin"
"test/plugins/test_art.py::AlbumArtOperationConfigurationTest::test_enforce_ratio_with_px_margin"
"test/plugins/test_art.py::AlbumArtOperationConfigurationTest::test_minwidth"
"test/plugins/test_art.py::AlbumArtPerformOperationTest::test_deinterlaced"
"test/plugins/test_art.py::AlbumArtPerformOperationTest::test_deinterlaced_and_resized"
"test/plugins/test_art.py::AlbumArtPerformOperationTest::test_file_not_resized"
"test/plugins/test_art.py::AlbumArtPerformOperationTest::test_file_resized"
"test/plugins/test_art.py::AlbumArtPerformOperationTest::test_file_resized_and_scaled"
"test/plugins/test_art.py::AlbumArtPerformOperationTest::test_file_resized_but_not_scaled"
"test/plugins/test_art.py::AlbumArtPerformOperationTest::test_resize"
];
disabledTests = disabledTests ++ [
# https://github.com/beetbox/beets/issues/5880
"test_reject_different_art"
# touches network
"test_merge_duplicate_album"
];
# Perform extra "sanity checks", before running pytest tests.
preCheck = ''
# Check for undefined plugins
find beetsplug -mindepth 1 \
\! -path 'beetsplug/__init__.py' -a \
\( -name '*.py' -o -path 'beetsplug/*/__init__.py' \) -print \
| sed -n -re 's|^beetsplug/([^/.]+).*|\1|p' \
| sort -u > plugins_available
${diffPlugins (attrNames builtinPlugins) "plugins_available"}
export BEETS_TEST_SHELL="${lib.getExe bashInteractive} --norc"
env EDITOR="${writeScript "beetconfig.sh" ''
#!${runtimeShell}
cat > "$1" <<CFG
plugins: ${lib.concatStringsSep " " (attrNames enabledPlugins)}
CFG
''}" "$out/bin/beet" config -e
env EDITOR=true "$out/bin/beet" config -e
'';
passthru.plugins = allPlugins;
passthru.tests.gstreamer =
runCommand "beets-gstreamer-test"
{
meta.timeout = 60;
}
''
set -euo pipefail
export HOME=$(mktemp -d)
mkdir $out
cat << EOF > $out/config.yaml
replaygain:
backend: gstreamer
EOF
${beets}/bin/beet -c $out/config.yaml > /dev/null
'';
meta = {
description = "Music tagger and library organizer";
homepage = "https://beets.io";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [
aszlig
doronbehar
lovesegfault
montchr
pjones
];
platforms = lib.platforms.linux ++ lib.platforms.darwin;
mainProgram = "beet";
};
}

View File

@@ -0,0 +1,55 @@
{
lib,
callPackage,
config,
fetchFromGitHub,
python3Packages,
}:
/*
** To customize the enabled beets plugins, use the pluginOverrides input to the
** derivation.
** Examples:
**
** Disabling a builtin plugin:
** beets.override { pluginOverrides = { beatport.enable = false; }; }
**
** Enabling an external plugin:
** beets.override { pluginOverrides = {
** alternatives = { enable = true; propagatedBuildInputs = [ beetsPackages.alternatives ]; };
** }; }
*/
let
extraPatches = [
# Bash completion fix for Nix
./patches/bash-completion-always-print.patch
];
in
lib.makeExtensible (
self:
{
beets = self.beets-stable;
beets-stable = callPackage ./common.nix rec {
inherit python3Packages extraPatches;
version = "2.4.0";
src = fetchFromGitHub {
owner = "beetbox";
repo = "beets";
tag = "v${version}";
hash = "sha256-BM4NW8iukw9+zLD2cfAETmFYNAiNPUn9cLrkVlCE+jM=";
};
};
beets-minimal = self.beets.override { disableAllPlugins = true; };
alternatives = callPackage ./plugins/alternatives.nix { beets = self.beets-minimal; };
audible = callPackage ./plugins/audible.nix { beets = self.beets-minimal; };
copyartifacts = callPackage ./plugins/copyartifacts.nix { beets = self.beets-minimal; };
filetote = callPackage ./plugins/filetote.nix { beets = self.beets-minimal; };
}
// lib.optionalAttrs config.allowAliases {
beets-unstable = lib.warn "beets-unstable was aliased to beets, since upstream releases are frequent nowadays" self.beets;
extrafiles = throw "extrafiles is unmaintained since 2020 and broken since beets 2.0.0";
}
)

View File

@@ -0,0 +1,45 @@
diff --git i/beets/ui/commands.py w/beets/ui/commands.py
index ad4f7821..5077191d 100755
--- i/beets/ui/commands.py
+++ w/beets/ui/commands.py
@@ -2381,22 +2381,6 @@ default_commands.append(config_cmd)
def print_completion(*args):
for line in completion_script(default_commands + plugins.commands()):
print_(line, end="")
- if not any(os.path.isfile(syspath(p)) for p in BASH_COMPLETION_PATHS):
- log.warning(
- "Warning: Unable to find the bash-completion package. "
- "Command line completion might not work."
- )
-
-
-BASH_COMPLETION_PATHS = [
- b"/etc/bash_completion",
- b"/usr/share/bash-completion/bash_completion",
- b"/usr/local/share/bash-completion/bash_completion",
- # SmartOS
- b"/opt/local/share/bash-completion/bash_completion",
- # Homebrew (before bash-completion2)
- b"/usr/local/etc/bash_completion",
-]
def completion_script(commands):
diff --git i/test/test_ui.py w/test/test_ui.py
index cae86148..faf266a8 100644
--- i/test/test_ui.py
+++ w/test/test_ui.py
@@ -1434,12 +1434,7 @@ class CompletionTest(_common.TestCase, TestHelper):
)
# Load bash_completion library.
- for path in commands.BASH_COMPLETION_PATHS:
- if os.path.exists(syspath(path)):
- bash_completion = path
- break
- else:
- self.skipTest("bash-completion script not found")
+ self.skipTest("bash-completion script not found")
try:
with open(util.syspath(bash_completion), "rb") as f:
tester.stdin.writelines(f)

View File

@@ -0,0 +1,53 @@
{
lib,
fetchFromGitHub,
beets,
python3Packages,
writableTmpDirAsHomeHook,
}:
python3Packages.buildPythonApplication rec {
pname = "beets-alternatives";
version = "0.13.4";
pyproject = true;
src = fetchFromGitHub {
repo = "beets-alternatives";
owner = "geigerzaehler";
tag = "v${version}";
hash = "sha256-jGHRoBBXqJq0r/Gbp7gkuaEFPVMGE6cqQRi84AHTXxQ=";
};
nativeBuildInputs = [
beets
];
dependencies = [
python3Packages.poetry-core
];
nativeCheckInputs =
with python3Packages;
[
pytestCheckHook
pytest-cov-stub
mock
pillow
tomli
typeguard
]
++ [
writableTmpDirAsHomeHook
];
meta = {
description = "Beets plugin to manage external files";
homepage = "https://github.com/geigerzaehler/beets-alternatives";
changelog = "https://github.com/geigerzaehler/beets-alternatives/blob/v${version}/CHANGELOG.md";
maintainers = with lib.maintainers; [
aszlig
lovesegfault
];
license = lib.licenses.mit;
};
}

View File

@@ -0,0 +1,47 @@
{
beets,
fetchFromGitHub,
lib,
nix-update-script,
python3Packages,
}:
python3Packages.buildPythonApplication rec {
pname = "beets-audible";
version = "1.0.2";
pyproject = true;
src = fetchFromGitHub {
owner = "Neurrone";
repo = "beets-audible";
rev = "v${version}";
hash = "sha256-6rf8U63SW+gwfT7ZdN/ymYKHRs0HSMDTP2ZBfULLsJs=";
};
nativeBuildInputs = [
beets
];
pythonRelaxDeps = true;
build-system = with python3Packages; [
hatchling
];
dependencies = with python3Packages; [
markdownify
natsort
tldextract
];
passthru = {
updateScript = nix-update-script { };
};
meta = {
description = "Beets-audible: Organize Your Audiobook Collection With Beets";
homepage = "https://github.com/Neurrone/beets-audible";
platforms = with lib.platforms; linux ++ darwin ++ windows;
license = with lib.licenses; [ mit ];
maintainers = with lib.maintainers; [ jwillikers ];
};
}

View File

@@ -0,0 +1,62 @@
{
lib,
beets,
fetchFromGitHub,
python3Packages,
writableTmpDirAsHomeHook,
}:
python3Packages.buildPythonApplication rec {
pname = "beets-copyartifacts";
version = "0.1.5";
pyproject = true;
src = fetchFromGitHub {
repo = "beets-copyartifacts";
owner = "adammillerio";
tag = "v${version}";
hash = "sha256-UTZh7T6Z288PjxFgyFxHnPt0xpAH3cnr8/jIrlJhtyU=";
};
postPatch = ''
sed -i -e '/namespace_packages/d' setup.py
printf 'from pkgutil import extend_path\n__path__ = extend_path(__path__, __name__)\n' >beetsplug/__init__.py
# beets v2.1.0 compat
# <https://github.com/beetbox/beets/commit/0e87389994a9969fa0930ffaa607609d02e286a8>
sed -i -e 's/util\.py3_path/os.fsdecode/g' tests/_common.py
'';
nativeBuildInputs = [
beets
];
build-system = with python3Packages; [
setuptools
];
dependencies = with python3Packages; [
six
];
nativeCheckInputs = [
python3Packages.pytestCheckHook
writableTmpDirAsHomeHook
];
pytestFlags = [
# This is the same as:
# -r fEs
"-rfEs"
];
meta = {
description = "Beets plugin to move non-music files during the import process";
homepage = "https://github.com/adammillerio/beets-copyartifacts";
changelog = "https://github.com/adammillerio/beets-copyartifacts/releases/tag/${src.tag}";
license = lib.licenses.mit;
inherit (beets.meta) platforms;
# Isn't compatible with beets >= 2.3
broken = true;
};
}

View File

@@ -0,0 +1,90 @@
{
lib,
fetchFromGitHub,
python3Packages,
beets,
beetsPackages,
writableTmpDirAsHomeHook,
}:
python3Packages.buildPythonApplication rec {
pname = "beets-filetote";
version = "1.1.0";
pyproject = true;
src = fetchFromGitHub {
owner = "gtronset";
repo = "beets-filetote";
tag = "v${version}";
hash = "sha256-5o0Hif0dNavYRH1pa1ZPTnOvk9VPXCU/Lqpg2rKzU/I=";
};
postPatch = ''
substituteInPlace pyproject.toml --replace-fail "poetry-core<2.0.0" "poetry-core"
'';
nativeBuildInputs = [
beets
];
build-system = [ python3Packages.poetry-core ];
dependencies = with python3Packages; [
mediafile
reflink
toml
typeguard
];
optional-dependencies = {
lint = with python3Packages; [
black
check-manifest
flake8
flake8-bugbear
flake8-bugbear-pyi
isort
mypy
pylint
typing_extensions
];
test = with python3Packages; [
beetsPackages.audible
mediafile
pytest
reflink
toml
typeguard
];
dev = optional-dependencies.lint ++ optional-dependencies.test ++ [ python3Packages.tox ];
};
pytestFlags = [
# This is the same as:
# -r fEs
"-rfEs"
];
disabledTestPaths = [
"tests/test_cli_operation.py"
"tests/test_pruning.py"
"tests/test_version.py"
];
nativeCheckInputs = [
python3Packages.pytestCheckHook
writableTmpDirAsHomeHook
]
++ optional-dependencies.test;
meta = with lib; {
description = "Beets plugin to move non-music files during the import process";
homepage = "https://github.com/gtronset/beets-filetote";
changelog = "https://github.com/gtronset/beets-filetote/blob/${src.tag}/CHANGELOG.md";
maintainers = with maintainers; [ dansbandit ];
license = licenses.mit;
inherit (beets.meta) platforms;
# https://github.com/gtronset/beets-filetote/issues/211
broken = true;
};
}

View File

@@ -0,0 +1,166 @@
{
lib,
stdenv,
makeWrapper,
fetchFromGitHub,
which,
pkg-config,
libjpeg,
ocamlPackages,
awscli2,
bubblewrap,
curl,
ffmpeg,
yt-dlp,
runtimePackages ? [
awscli2
bubblewrap
curl
ffmpeg
yt-dlp
],
}:
let
pname = "liquidsoap";
version = "2.3.3";
in
stdenv.mkDerivation {
inherit pname version;
src = fetchFromGitHub {
owner = "savonet";
repo = "liquidsoap";
rev = "refs/tags/v${version}";
hash = "sha256-EQFWFtgWvwsV+ZhO36Sd7mpxYOnd4Vv6Z+6xsgi335k=";
};
postPatch = ''
substituteInPlace src/lang/dune \
--replace-warn "(run git rev-parse --short HEAD)" "(run echo -n nixpkgs)"
# Compatibility with camlimages 5.0.5
substituteInPlace src/core/dune \
--replace-warn camlimages.all_formats camlimages.core
'';
dontConfigure = true;
buildPhase = ''
runHook preBuild
dune build
runHook postBuild
'';
installPhase = ''
runHook preInstall
dune install --prefix "$out"
runHook postInstall
'';
fixupPhase = ''
runHook preFixup
wrapProgram $out/bin/liquidsoap \
--set LIQ_LADSPA_PATH /run/current-system/sw/lib/ladspa \
--prefix PATH : ${lib.makeBinPath runtimePackages}
runHook postFixup
'';
strictDeps = true;
nativeBuildInputs = [
makeWrapper
pkg-config
which
ocamlPackages.ocaml
ocamlPackages.dune_3
ocamlPackages.findlib
ocamlPackages.menhir
];
buildInputs = [
libjpeg
# Mandatory dependencies
ocamlPackages.dtools
ocamlPackages.duppy
ocamlPackages.mm
ocamlPackages.ocurl
ocamlPackages.re
ocamlPackages.cry
ocamlPackages.camomile
ocamlPackages.uri
ocamlPackages.fileutils
ocamlPackages.magic-mime
ocamlPackages.menhir # liquidsoap-lang
ocamlPackages.menhirLib
ocamlPackages.mem_usage
ocamlPackages.metadata
ocamlPackages.dune-build-info
ocamlPackages.re
ocamlPackages.sedlex # liquidsoap-lang
ocamlPackages.ppx_hash # liquidsoap-lang
ocamlPackages.ppx_string
ocamlPackages.xml-light # liquidsoap-lang
# Recommended dependencies
ocamlPackages.ffmpeg
# Optional dependencies
ocamlPackages.alsa
ocamlPackages.ao
ocamlPackages.bjack
ocamlPackages.camlimages
ocamlPackages.dssi
ocamlPackages.faad
ocamlPackages.fdkaac
ocamlPackages.flac
ocamlPackages.frei0r
ocamlPackages.gd
ocamlPackages.graphics
ocamlPackages.imagelib
ocamlPackages.inotify
ocamlPackages.ladspa
ocamlPackages.lame
ocamlPackages.lastfm
ocamlPackages.lilv
ocamlPackages.lo
ocamlPackages.mad
ocamlPackages.ogg
ocamlPackages.opus
ocamlPackages.portaudio
ocamlPackages.posix-time2
ocamlPackages.pulseaudio
ocamlPackages.samplerate
ocamlPackages.shine
ocamlPackages.soundtouch
ocamlPackages.speex
ocamlPackages.srt
ocamlPackages.ssl
ocamlPackages.taglib
ocamlPackages.theora
ocamlPackages.tsdl
ocamlPackages.tsdl-image
ocamlPackages.tsdl-ttf
ocamlPackages.vorbis
ocamlPackages.xmlplaylist
ocamlPackages.yaml
];
meta = {
description = "Swiss-army knife for multimedia streaming";
mainProgram = "liquidsoap";
homepage = "https://www.liquidsoap.info/";
changelog = "https://raw.githubusercontent.com/savonet/liquidsoap/main/CHANGES.md";
maintainers = with lib.maintainers; [
dandellion
];
license = lib.licenses.gpl2Plus;
platforms = ocamlPackages.ocaml.meta.platforms or [ ];
};
}

View File

@@ -0,0 +1,52 @@
{
lib,
buildPythonApplication,
fetchFromGitLab,
python-musicpd,
requests,
sphinxHook,
}:
buildPythonApplication rec {
pname = "mpd-sima";
version = "0.18.2";
src = fetchFromGitLab {
owner = "kaliko";
repo = "sima";
rev = version;
hash = "sha256-lMvM1EqS1govhv4B2hJzIg5DFQYgEr4yJJtgOQxnVlY=";
};
format = "setuptools";
postPatch = ''
sed -i '/intersphinx/d' doc/source/conf.py
'';
nativeBuildInputs = [
sphinxHook
];
sphinxBuilders = [ "man" ];
propagatedBuildInputs = [
requests
python-musicpd
];
doCheck = true;
preCheck = ''
export HOME="$(mktemp -d)"
'';
meta = with lib; {
description = "Autoqueuing mpd client";
homepage = "https://kaliko.me/mpd-sima/";
license = licenses.gpl3Plus;
platforms = platforms.linux;
maintainers = with lib.maintainers; [ apfelkuchen6 ];
mainProgram = "mpd-sima";
};
}

View File

@@ -0,0 +1,200 @@
From 11711398a1ec16f4eaeac8523b77165a560b69cc Mon Sep 17 00:00:00 2001
From: OPNA2608 <christoph.neidahl@gmail.com>
Date: Sun, 13 Jun 2021 13:55:53 +0200
Subject: [PATCH] Look for system-installed Rt libs
---
CMakeLists.txt | 159 +++++++++++++++++++++++++++++++------------------
1 file changed, 102 insertions(+), 57 deletions(-)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index f3e53c3..027c1b1 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -50,15 +50,6 @@ message("!! Optional feature summary:")
message("!! RtMidi: ${USE_RTMIDI}")
message("!! RtAudio: ${USE_RTAUDIO}")
-if(USE_RTAUDIO)
- if(CMAKE_SYSTEM_NAME STREQUAL "Linux")
- pkg_check_modules(JACK "jack")
- message("!! -- Jack driver: ${JACK_FOUND}")
- pkg_check_modules(PULSEAUDIO "libpulse-simple")
- message("!! -- Pulseaudio driver: ${PULSEAUDIO_FOUND}")
- endif()
-endif()
-
if(ENABLE_PLOTS)
message("!! Qwt: ${QWT_LIBRARY}")
endif()
@@ -250,65 +241,119 @@ elseif(CMAKE_SYSTEM_NAME STREQUAL "Darwin")
endif()
if(USE_RTMIDI)
- add_library(RtMidi STATIC "src/midi/external/rtmidi/RtMidi.cpp")
- target_include_directories(RtMidi PUBLIC "src/midi/external/rtmidi")
- if(CMAKE_SYSTEM_NAME STREQUAL "Linux")
- target_compile_definitions(RtMidi PUBLIC "__LINUX_ALSA__")
- target_link_libraries(RtMidi PUBLIC "asound")
- elseif(CMAKE_SYSTEM_NAME STREQUAL "Windows")
- target_compile_definitions(RtMidi PUBLIC "__WINDOWS_MM__")
- target_link_libraries(RtMidi PUBLIC "winmm")
- elseif(CMAKE_SYSTEM_NAME STREQUAL "Darwin")
- target_compile_definitions(RtMidi PUBLIC "__MACOSX_CORE__")
- find_library(COREMIDI_LIBRARY "CoreMIDI")
- target_link_libraries(RtMidi PUBLIC "${COREMIDI_LIBRARY}")
+ if(PKG_CONFIG_FOUND)
+ pkg_check_modules(RTMIDI rtmidi)
+ if(RTMIDI_FOUND)
+ message("Using system-installed RtMidi found by pkg-config.")
+ target_link_libraries(OPL3BankEditor PUBLIC ${RTMIDI_LDFLAGS})
+ target_include_directories(OPL3BankEditor PUBLIC ${RTMIDI_INCLUDE_DIRS})
+ target_compile_options(OPL3BankEditor PUBLIC ${RTMIDI_CFLAGS})
+ endif()
endif()
+
+ if(NOT RTMIDI_FOUND)
+ find_library(RTMIDI_LIBRARY "rtmidi")
+ find_path(RTMIDI_INCLUDE_DIRS "RtMidi.h")
+ message("RtMidi library: ${RTMIDI_LIBRARY}")
+ message("RtMidi header directory: ${RTMIDI_INCLUDE_DIRS}")
+ if(NOT RTMIDI_LIBRARY-NOTFOUND AND NOT RTMIDI_INCLUDE_DIRS STREQUAL RTMIDI_INCLUDE_DIRS-NOTFOUND)
+ message("Using system-installed RtMidi.")
+ set(RTMIDI_FOUND TRUE)
+ target_link_libraries(OPL3BankEditor PUBLIC ${RTMIDI_LIBRARY})
+ target_include_directories(OPL3BankEditor PUBLIC ${RTMIDI_INCLUDE_DIRS})
+ endif()
+ endif()
+
+ if(NOT RTMIDI_FOUND)
+ message("Using bundled RtMidi.")
+ add_library(RtMidi STATIC "src/midi/external/rtmidi/RtMidi.cpp")
+ target_include_directories(RtMidi PUBLIC "src/midi/external/rtmidi")
+ if(CMAKE_SYSTEM_NAME STREQUAL "Linux")
+ target_compile_definitions(RtMidi PUBLIC "__LINUX_ALSA__")
+ target_link_libraries(RtMidi PUBLIC "asound")
+ elseif(CMAKE_SYSTEM_NAME STREQUAL "Windows")
+ target_compile_definitions(RtMidi PUBLIC "__WINDOWS_MM__")
+ target_link_libraries(RtMidi PUBLIC "winmm")
+ elseif(CMAKE_SYSTEM_NAME STREQUAL "Darwin")
+ target_compile_definitions(RtMidi PUBLIC "__MACOSX_CORE__")
+ find_library(COREMIDI_LIBRARY "CoreMIDI")
+ target_link_libraries(RtMidi PUBLIC "${COREMIDI_LIBRARY}")
+ endif()
+ target_link_libraries(OPL3BankEditor PRIVATE RtMidi)
+ endif()
+
target_sources(OPL3BankEditor PRIVATE "src/midi/midi_rtmidi.cpp")
target_compile_definitions(OPL3BankEditor PRIVATE "ENABLE_MIDI")
- target_link_libraries(OPL3BankEditor PRIVATE RtMidi)
endif()
if(USE_RTAUDIO)
- add_library(RtAudio STATIC "src/audio/external/rtaudio/RtAudio.cpp")
- target_include_directories(RtAudio PUBLIC "src/audio/external/rtaudio")
- if(CMAKE_SYSTEM_NAME STREQUAL "Linux")
- target_compile_definitions(RtAudio PUBLIC "__LINUX_ALSA__")
- target_link_libraries(RtAudio PUBLIC "asound")
- if(JACK_FOUND)
- target_compile_definitions(RtAudio PUBLIC "__UNIX_JACK__")
- target_include_directories(RtAudio PUBLIC ${JACK_INCLUDE_DIRS})
- link_directories(${JACK_LIBRARY_DIRS})
- target_link_libraries(RtAudio PUBLIC ${JACK_LIBRARIES})
+ if(PKG_CONFIG_FOUND)
+ pkg_check_modules(RTAUDIO rtaudio)
+ if(RTAUDIO_FOUND)
+ message("Using system-installed RtAudio found by pkg-config.")
+ target_link_libraries(OPL3BankEditor PUBLIC ${RTAUDIO_LDFLAGS})
+ target_include_directories(OPL3BankEditor PUBLIC ${RTAUDIO_INCLUDE_DIRS})
+ target_compile_options(OPL3BankEditor PUBLIC ${RTAUDIO_CFLAGS})
+ endif()
+ endif()
+
+ if(NOT RTAUDIO_FOUND)
+ find_library(RTAUDIO_LIBRARY "rtaudio")
+ find_path(RTAUDIO_INCLUDE_DIRS "RtAudio.h")
+ message("RtAudio library: ${RTAUDIO_LIBRARY}")
+ message("RtAudio header directory: ${RTAUDIO_INCLUDE_DIRS}")
+ if(NOT RTAUDIO_LIBRARY-NOTFOUND AND NOT RTAUDIO_INCLUDE_DIRS STREQUAL RTAUDIO_INCLUDE_DIRS-NOTFOUND)
+ message("Using system-installed RtAudio.")
+ set(RTAUDIO_FOUND TRUE)
+ target_link_libraries(OPL3BankEditor PUBLIC ${RTAUDIO_LIBRARY})
+ target_include_directories(OPL3BankEditor PUBLIC ${RTAUDIO_INCLUDE_DIRS})
endif()
- if(PULSEAUDIO_FOUND)
- target_compile_definitions(RtAudio PUBLIC "__LINUX_PULSE__")
- target_include_directories(RtAudio PUBLIC ${PULSEAUDIO_INCLUDE_DIRS})
- link_directories(${PULSEAUDIO_LIBRARY_DIRS})
- target_link_libraries(RtAudio PUBLIC ${PULSEAUDIO_LIBRARIES})
+ endif()
+
+ if(NOT RTAUDIO_FOUND)
+ message("Using bundled RtAudio.")
+ add_library(RtAudio STATIC "src/audio/external/rtaudio/RtAudio.cpp")
+ target_include_directories(RtAudio PUBLIC "src/audio/external/rtaudio")
+ if(CMAKE_SYSTEM_NAME STREQUAL "Linux")
+ target_compile_definitions(RtAudio PUBLIC "__LINUX_ALSA__")
+ target_link_libraries(RtAudio PUBLIC "asound")
+ if(JACK_FOUND)
+ target_compile_definitions(RtAudio PUBLIC "__UNIX_JACK__")
+ target_include_directories(RtAudio PUBLIC ${JACK_INCLUDE_DIRS})
+ link_directories(${JACK_LIBRARY_DIRS})
+ target_link_libraries(RtAudio PUBLIC ${JACK_LIBRARIES})
+ endif()
+ if(PULSEAUDIO_FOUND)
+ target_compile_definitions(RtAudio PUBLIC "__LINUX_PULSE__")
+ target_include_directories(RtAudio PUBLIC ${PULSEAUDIO_INCLUDE_DIRS})
+ link_directories(${PULSEAUDIO_LIBRARY_DIRS})
+ target_link_libraries(RtAudio PUBLIC ${PULSEAUDIO_LIBRARIES})
+ endif()
+ elseif(CMAKE_SYSTEM_NAME STREQUAL "Windows")
+ target_compile_definitions(RtAudio PUBLIC "__WINDOWS_DS__")
+ target_link_libraries(RtAudio PUBLIC "dsound" "ole32")
+ target_compile_definitions(RtAudio PUBLIC "__WINDOWS_WASAPI__")
+ target_link_libraries(RtAudio PUBLIC "ksguid")
+ target_compile_definitions(RtAudio PUBLIC "__WINDOWS_ASIO__")
+ target_include_directories(RtAudio PRIVATE
+ "src/audio/external/rtaudio/include")
+ target_sources(RtAudio PRIVATE
+ "src/audio/external/rtaudio/include/asio.cpp"
+ "src/audio/external/rtaudio/include/asiodrivers.cpp"
+ "src/audio/external/rtaudio/include/asiolist.cpp"
+ "src/audio/external/rtaudio/include/iasiothiscallresolver.cpp")
+ elseif(CMAKE_SYSTEM_NAME STREQUAL "Darwin")
+ target_compile_definitions(RtAudio PUBLIC "__MACOSX_CORE__")
+ find_library(COREAUDIO_LIBRARY "CoreAudio")
+ target_link_libraries(RtAudio PUBLIC "${COREAUDIO_LIBRARY}")
+ find_library(COREFOUNDATION_LIBRARY "CoreFoundation")
+ target_link_libraries(RtAudio PUBLIC "${COREFOUNDATION_LIBRARY}")
endif()
- elseif(CMAKE_SYSTEM_NAME STREQUAL "Windows")
- target_compile_definitions(RtAudio PUBLIC "__WINDOWS_DS__")
- target_link_libraries(RtAudio PUBLIC "dsound" "ole32")
- target_compile_definitions(RtAudio PUBLIC "__WINDOWS_WASAPI__")
- target_link_libraries(RtAudio PUBLIC "ksguid")
- target_compile_definitions(RtAudio PUBLIC "__WINDOWS_ASIO__")
- target_include_directories(RtAudio PRIVATE
- "src/audio/external/rtaudio/include")
- target_sources(RtAudio PRIVATE
- "src/audio/external/rtaudio/include/asio.cpp"
- "src/audio/external/rtaudio/include/asiodrivers.cpp"
- "src/audio/external/rtaudio/include/asiolist.cpp"
- "src/audio/external/rtaudio/include/iasiothiscallresolver.cpp")
- elseif(CMAKE_SYSTEM_NAME STREQUAL "Darwin")
- target_compile_definitions(RtAudio PUBLIC "__MACOSX_CORE__")
- find_library(COREAUDIO_LIBRARY "CoreAudio")
- target_link_libraries(RtAudio PUBLIC "${COREAUDIO_LIBRARY}")
- find_library(COREFOUNDATION_LIBRARY "CoreFoundation")
- target_link_libraries(RtAudio PUBLIC "${COREFOUNDATION_LIBRARY}")
+ target_link_libraries(OPL3BankEditor PRIVATE RtAudio)
endif()
+
target_sources(OPL3BankEditor PRIVATE "src/audio/ao_rtaudio.cpp")
target_compile_definitions(OPL3BankEditor PRIVATE "ENABLE_AUDIO_TESTING")
- target_link_libraries(OPL3BankEditor PRIVATE RtAudio)
endif()
add_executable(measurer_tool
--
2.29.3

View File

@@ -0,0 +1,200 @@
From 69c993dacc7dc0cb9d105c3dfa764cd7be5c343e Mon Sep 17 00:00:00 2001
From: OPNA2608 <christoph.neidahl@gmail.com>
Date: Sun, 13 Jun 2021 14:21:17 +0200
Subject: [PATCH] Look for system-installed Rt libs
---
CMakeLists.txt | 159 +++++++++++++++++++++++++++++++------------------
1 file changed, 102 insertions(+), 57 deletions(-)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index f428dc4..18ba8c3 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -41,15 +41,6 @@ message("!! Optional feature summary:")
message("!! RtMidi: ${USE_RTMIDI}")
message("!! RtAudio: ${USE_RTAUDIO}")
-if(USE_RTAUDIO)
- if(CMAKE_SYSTEM_NAME STREQUAL "Linux")
- pkg_check_modules(JACK "jack")
- message("!! -- Jack driver: ${JACK_FOUND}")
- pkg_check_modules(PULSEAUDIO "libpulse-simple")
- message("!! -- Pulseaudio driver: ${PULSEAUDIO_FOUND}")
- endif()
-endif()
-
if(ENABLE_PLOTS)
message("!! Qwt: ${QWT_LIBRARY}")
endif()
@@ -198,65 +189,119 @@ elseif(CMAKE_SYSTEM_NAME STREQUAL "Darwin")
endif()
if(USE_RTMIDI)
- add_library(RtMidi STATIC "src/midi/external/rtmidi/RtMidi.cpp")
- target_include_directories(RtMidi PUBLIC "src/midi/external/rtmidi")
- if(CMAKE_SYSTEM_NAME STREQUAL "Linux")
- target_compile_definitions(RtMidi PUBLIC "__LINUX_ALSA__")
- target_link_libraries(RtMidi PUBLIC "asound")
- elseif(CMAKE_SYSTEM_NAME STREQUAL "Windows")
- target_compile_definitions(RtMidi PUBLIC "__WINDOWS_MM__")
- target_link_libraries(RtMidi PUBLIC "winmm")
- elseif(CMAKE_SYSTEM_NAME STREQUAL "Darwin")
- target_compile_definitions(RtMidi PUBLIC "__MACOSX_CORE__")
- find_library(COREMIDI_LIBRARY "CoreMIDI")
- target_link_libraries(RtMidi PUBLIC "${COREMIDI_LIBRARY}")
+ if(PKG_CONFIG_FOUND)
+ pkg_check_modules(RTMIDI rtmidi)
+ if(RTMIDI_FOUND)
+ message("Using system-installed RtMidi found by pkg-config.")
+ target_link_libraries(OPN2BankEditor PUBLIC ${RTMIDI_LDFLAGS})
+ target_include_directories(OPN2BankEditor PUBLIC ${RTMIDI_INCLUDE_DIRS})
+ target_compile_options(OPN2BankEditor PUBLIC ${RTMIDI_CFLAGS})
+ endif()
+ endif()
+
+ if(NOT RTMIDI_FOUND)
+ find_library(RTMIDI_LIBRARY "rtmidi")
+ find_path(RTMIDI_INCLUDE_DIRS "RtMidi.h")
+ message("RtMidi library: ${RTMIDI_LIBRARY}")
+ message("RtMidi header directory: ${RTMIDI_INCLUDE_DIRS}")
+ if(NOT RTMIDI_LIBRARY-NOTFOUND AND NOT RTMIDI_INCLUDE_DIRS STREQUAL RTMIDI_INCLUDE_DIRS-NOTFOUND)
+ message("Using system-installed RtMidi.")
+ set(RTMIDI_FOUND TRUE)
+ target_link_libraries(OPN2BankEditor PUBLIC ${RTMIDI_LIBRARY})
+ target_include_directories(OPN2BankEditor PUBLIC ${RTMIDI_INCLUDE_DIRS})
+ endif()
+ endif()
+
+ if(NOT RTMIDI_FOUND)
+ message("Using bundled RtMidi.")
+ add_library(RtMidi STATIC "src/midi/external/rtmidi/RtMidi.cpp")
+ target_include_directories(RtMidi PUBLIC "src/midi/external/rtmidi")
+ if(CMAKE_SYSTEM_NAME STREQUAL "Linux")
+ target_compile_definitions(RtMidi PUBLIC "__LINUX_ALSA__")
+ target_link_libraries(RtMidi PUBLIC "asound")
+ elseif(CMAKE_SYSTEM_NAME STREQUAL "Windows")
+ target_compile_definitions(RtMidi PUBLIC "__WINDOWS_MM__")
+ target_link_libraries(RtMidi PUBLIC "winmm")
+ elseif(CMAKE_SYSTEM_NAME STREQUAL "Darwin")
+ target_compile_definitions(RtMidi PUBLIC "__MACOSX_CORE__")
+ find_library(COREMIDI_LIBRARY "CoreMIDI")
+ target_link_libraries(RtMidi PUBLIC "${COREMIDI_LIBRARY}")
+ endif()
+ target_link_libraries(OPN2BankEditor PRIVATE RtMidi)
endif()
+
target_sources(OPN2BankEditor PRIVATE "src/midi/midi_rtmidi.cpp")
target_compile_definitions(OPN2BankEditor PRIVATE "ENABLE_MIDI")
- target_link_libraries(OPN2BankEditor PRIVATE RtMidi)
endif()
if(USE_RTAUDIO)
- add_library(RtAudio STATIC "src/audio/external/rtaudio/RtAudio.cpp")
- target_include_directories(RtAudio PUBLIC "src/audio/external/rtaudio")
- if(CMAKE_SYSTEM_NAME STREQUAL "Linux")
- target_compile_definitions(RtAudio PUBLIC "__LINUX_ALSA__")
- target_link_libraries(RtAudio PUBLIC "asound")
- if(JACK_FOUND)
- target_compile_definitions(RtAudio PUBLIC "__UNIX_JACK__")
- target_include_directories(RtAudio PUBLIC ${JACK_INCLUDE_DIRS})
- link_directories(${JACK_LIBRARY_DIRS})
- target_link_libraries(RtAudio PUBLIC ${JACK_LIBRARIES})
+ if(PKG_CONFIG_FOUND)
+ pkg_check_modules(RTAUDIO rtaudio)
+ if(RTAUDIO_FOUND)
+ message("Using system-installed RtAudio found by pkg-config.")
+ target_link_libraries(OPN2BankEditor PUBLIC ${RTAUDIO_LDFLAGS})
+ target_include_directories(OPN2BankEditor PUBLIC ${RTAUDIO_INCLUDE_DIRS})
+ target_compile_options(OPN2BankEditor PUBLIC ${RTAUDIO_CFLAGS})
endif()
- if(PULSEAUDIO_FOUND)
- target_compile_definitions(RtAudio PUBLIC "__LINUX_PULSE__")
- target_include_directories(RtAudio PUBLIC ${PULSEAUDIO_INCLUDE_DIRS})
- link_directories(${PULSEAUDIO_LIBRARY_DIRS})
- target_link_libraries(RtAudio PUBLIC ${PULSEAUDIO_LIBRARIES})
+ endif()
+
+ if(NOT RTAUDIO_FOUND)
+ find_library(RTAUDIO_LIBRARY "rtaudio")
+ find_path(RTAUDIO_INCLUDE_DIRS "RtAudio.h")
+ message("RtAudio library: ${RTAUDIO_LIBRARY}")
+ message("RtAudio header directory: ${RTAUDIO_INCLUDE_DIRS}")
+ if(NOT RTAUDIO_LIBRARY-NOTFOUND AND NOT RTAUDIO_INCLUDE_DIRS STREQUAL RTAUDIO_INCLUDE_DIRS-NOTFOUND)
+ message("Using system-installed RtAudio.")
+ set(RTAUDIO_FOUND TRUE)
+ target_link_libraries(OPN2BankEditor PUBLIC ${RTAUDIO_LIBRARY})
+ target_include_directories(OPN2BankEditor PUBLIC ${RTAUDIO_INCLUDE_DIRS})
endif()
- elseif(CMAKE_SYSTEM_NAME STREQUAL "Windows")
- target_compile_definitions(RtAudio PUBLIC "__WINDOWS_DS__")
- target_link_libraries(RtAudio PUBLIC "dsound" "ole32")
- target_compile_definitions(RtAudio PUBLIC "__WINDOWS_WASAPI__")
- target_link_libraries(RtAudio PUBLIC "ksguid")
- target_compile_definitions(RtAudio PUBLIC "__WINDOWS_ASIO__")
- target_include_directories(RtAudio PRIVATE
- "src/audio/external/rtaudio/include")
- target_sources(RtAudio PRIVATE
- "src/audio/external/rtaudio/include/asio.cpp"
- "src/audio/external/rtaudio/include/asiodrivers.cpp"
- "src/audio/external/rtaudio/include/asiolist.cpp"
- "src/audio/external/rtaudio/include/iasiothiscallresolver.cpp")
- elseif(CMAKE_SYSTEM_NAME STREQUAL "Darwin")
- target_compile_definitions(RtAudio PUBLIC "__MACOSX_CORE__")
- find_library(COREAUDIO_LIBRARY "CoreAudio")
- target_link_libraries(RtAudio PUBLIC "${COREAUDIO_LIBRARY}")
- find_library(COREFOUNDATION_LIBRARY "CoreFoundation")
- target_link_libraries(RtAudio PUBLIC "${COREFOUNDATION_LIBRARY}")
endif()
+
+ if(NOT RTAUDIO_FOUND)
+ message("Using bundled RtAudio.")
+ add_library(RtAudio STATIC "src/audio/external/rtaudio/RtAudio.cpp")
+ target_include_directories(RtAudio PUBLIC "src/audio/external/rtaudio")
+ if(CMAKE_SYSTEM_NAME STREQUAL "Linux")
+ target_compile_definitions(RtAudio PUBLIC "__LINUX_ALSA__")
+ target_link_libraries(RtAudio PUBLIC "asound")
+ if(JACK_FOUND)
+ target_compile_definitions(RtAudio PUBLIC "__UNIX_JACK__")
+ target_include_directories(RtAudio PUBLIC ${JACK_INCLUDE_DIRS})
+ link_directories(${JACK_LIBRARY_DIRS})
+ target_link_libraries(RtAudio PUBLIC ${JACK_LIBRARIES})
+ endif()
+ if(PULSEAUDIO_FOUND)
+ target_compile_definitions(RtAudio PUBLIC "__LINUX_PULSE__")
+ target_include_directories(RtAudio PUBLIC ${PULSEAUDIO_INCLUDE_DIRS})
+ link_directories(${PULSEAUDIO_LIBRARY_DIRS})
+ target_link_libraries(RtAudio PUBLIC ${PULSEAUDIO_LIBRARIES})
+ endif()
+ elseif(CMAKE_SYSTEM_NAME STREQUAL "Windows")
+ target_compile_definitions(RtAudio PUBLIC "__WINDOWS_DS__")
+ target_link_libraries(RtAudio PUBLIC "dsound" "ole32")
+ target_compile_definitions(RtAudio PUBLIC "__WINDOWS_WASAPI__")
+ target_link_libraries(RtAudio PUBLIC "ksguid")
+ target_compile_definitions(RtAudio PUBLIC "__WINDOWS_ASIO__")
+ target_include_directories(RtAudio PRIVATE
+ "src/audio/external/rtaudio/include")
+ target_sources(RtAudio PRIVATE
+ "src/audio/external/rtaudio/include/asio.cpp"
+ "src/audio/external/rtaudio/include/asiodrivers.cpp"
+ "src/audio/external/rtaudio/include/asiolist.cpp"
+ "src/audio/external/rtaudio/include/iasiothiscallresolver.cpp")
+ elseif(CMAKE_SYSTEM_NAME STREQUAL "Darwin")
+ target_compile_definitions(RtAudio PUBLIC "__MACOSX_CORE__")
+ find_library(COREAUDIO_LIBRARY "CoreAudio")
+ target_link_libraries(RtAudio PUBLIC "${COREAUDIO_LIBRARY}")
+ find_library(COREFOUNDATION_LIBRARY "CoreFoundation")
+ target_link_libraries(RtAudio PUBLIC "${COREFOUNDATION_LIBRARY}")
+ endif()
+ target_link_libraries(OPN2BankEditor PRIVATE RtAudio)
+ endif()
+
target_sources(OPN2BankEditor PRIVATE "src/audio/ao_rtaudio.cpp")
target_compile_definitions(OPN2BankEditor PRIVATE "ENABLE_AUDIO_TESTING")
- target_link_libraries(OPN2BankEditor PRIVATE RtAudio)
endif()
add_executable(measurer_tool
--
2.29.3

View File

@@ -0,0 +1,75 @@
{
pname,
chip,
version,
sha256,
extraPatches ? [ ],
}:
{
mkDerivation,
stdenv,
lib,
fetchFromGitHub,
dos2unix,
cmake,
pkg-config,
qttools,
qtbase,
qwt6_1,
rtaudio,
rtmidi,
}:
let
binname = "${chip} Bank Editor";
mainProgram = "${lib.strings.toLower chip}_bank_editor";
in
mkDerivation rec {
inherit pname version;
src = fetchFromGitHub {
owner = "Wohlstand";
repo = pname;
rev = "v${version}";
inherit sha256;
};
prePatch = ''
dos2unix CMakeLists.txt
'';
patches = extraPatches;
nativeBuildInputs = [
dos2unix
cmake
pkg-config
qttools
];
buildInputs = [
qtbase
qwt6_1
rtaudio
rtmidi
];
postInstall = lib.optionalString stdenv.hostPlatform.isDarwin ''
mkdir $out/{bin,Applications}
mv "${binname}.app" $out/Applications/
install_name_tool -change {,${qwt6_1}/lib/}libqwt.6.dylib "$out/Applications/${binname}.app/Contents/MacOS/${binname}"
ln -s "$out/Applications/${binname}.app/Contents/MacOS/${binname}" $out/bin/${mainProgram}
'';
meta = with lib; {
inherit mainProgram;
description = "Small cross-platform editor of the ${chip} FM banks of different formats";
homepage = src.meta.homepage;
license = licenses.gpl3Plus;
platforms = platforms.all;
maintainers = with maintainers; [ OPNA2608 ];
};
}

View File

@@ -0,0 +1,9 @@
import ./common.nix {
pname = "opl3bankeditor";
chip = "OPL3";
version = "1.5.1";
sha256 = "08krbxlxgmc7i2r2k6d6wgi0m6k8hh3j60xf21kz4kp023w613sa";
extraPatches = [
./0001-opl3bankeditor-Look-for-system-installed-Rt-libs.patch
];
}

View File

@@ -0,0 +1,9 @@
import ./common.nix {
pname = "opn2bankeditor";
chip = "OPN2";
version = "1.3";
sha256 = "0niam6a6y57msbl0xj23g6l7gisv4a670q0k1zqfm34804532a32";
extraPatches = [
./0001-opn2bankeditor-Look-for-system-installed-Rt-libs.patch
];
}

View File

@@ -0,0 +1,28 @@
{
lib,
buildPythonApplication,
fetchPypi,
aigpy,
}:
buildPythonApplication rec {
pname = "tidal-dl";
version = "2022.10.31.1";
format = "setuptools";
src = fetchPypi {
inherit pname version;
hash = "sha256-b2AAsiI3n2/v6HC37fMI/d8UcxZxsWM+fnWvdajHrOg=";
};
propagatedBuildInputs = [ aigpy ];
meta = {
homepage = "https://github.com/yaronzz/Tidal-Media-Downloader";
description = "Application that lets you download videos and tracks from Tidal";
license = lib.licenses.asl20;
maintainers = [ lib.maintainers.misterio77 ];
platforms = lib.platforms.all;
mainProgram = "tidal-dl";
};
}

View File

@@ -0,0 +1,49 @@
{
lib,
fetchFromGitHub,
pythonPackages,
opencv4,
}:
let
opencv4_ = pythonPackages.toPythonModule (
opencv4.override {
inherit pythonPackages;
enablePython = true;
enableFfmpeg = true;
}
);
in
pythonPackages.buildPythonApplication rec {
pname = "video2midi";
version = "0.4.9";
format = "other";
src = fetchFromGitHub {
owner = "svsdval";
repo = pname;
tag = version;
sha256 = "sha256-mjqlNUCEiP5dQS0a8HAejOJyEvY6jGFJFpVcnzU2Vds=";
};
propagatedBuildInputs = with pythonPackages; [
opencv4_
midiutil
pygame
pyopengl
];
installPhase = ''
install -Dm755 v2m.py $out/bin/v2m.py
'';
meta = with lib; {
description = "Youtube synthesia video to midi conversion tool";
homepage = src.meta.homepage;
license = licenses.gpl3Only;
maintainers = [ ];
platforms = platforms.linux;
mainProgram = "v2m.py";
};
}

View File

@@ -0,0 +1,173 @@
{
lib,
multiStdenv,
fetchFromGitHub,
replaceVars,
pkgsi686Linux,
dbus,
meson,
ninja,
pkg-config,
wine,
libxcb,
nix-update-script,
}:
let
# Derived from subprojects/asio.wrap
asio = fetchFromGitHub {
owner = "chriskohlhoff";
repo = "asio";
rev = "refs/tags/asio-1-28-2";
hash = "sha256-8Sw0LuAqZFw+dxlsTstlwz5oaz3+ZnKBuvSdLW6/DKQ=";
};
# Derived from subprojects/bitsery.wrap
bitsery = fetchFromGitHub {
owner = "fraillt";
repo = "bitsery";
rev = "refs/tags/v5.2.3";
hash = "sha256-rmfcIYCrANycFuLtibQ5wOPwpMVhpTMpdGsUfpR3YsM=";
};
# Derived from subprojects/clap.wrap
clap = fetchFromGitHub {
owner = "free-audio";
repo = "clap";
rev = "refs/tags/1.1.9";
hash = "sha256-z2P0U2NkDK1/5oDV35jn/pTXCcspuM1y2RgZyYVVO3w=";
};
# Derived from subprojects/function2.wrap
function2 = fetchFromGitHub {
owner = "Naios";
repo = "function2";
rev = "refs/tags/4.2.3";
hash = "sha256-+fzntJn1fRifOgJhh5yiv+sWR9pyaeeEi2c1+lqX3X8=";
};
# Derived from subprojects/ghc_filesystem.wrap
ghc_filesystem = fetchFromGitHub {
owner = "gulrak";
repo = "filesystem";
rev = "refs/tags/v1.5.14";
hash = "sha256-XZ0IxyNIAs2tegktOGQevkLPbWHam/AOFT+M6wAWPFg=";
};
# Derived from subprojects/tomlplusplus.wrap
tomlplusplus = fetchFromGitHub {
owner = "marzer";
repo = "tomlplusplus";
rev = "refs/tags/v3.4.0";
hash = "sha256-h5tbO0Rv2tZezY58yUbyRVpsfRjY3i+5TPkkxr6La8M=";
};
# Derived from vst3.wrap
vst3 = fetchFromGitHub {
owner = "robbert-vdh";
repo = "vst3sdk";
rev = "refs/tags/v3.7.7_build_19-patched";
fetchSubmodules = true;
hash = "sha256-LsPHPoAL21XOKmF1Wl/tvLJGzjaCLjaDAcUtDvXdXSU=";
};
in
multiStdenv.mkDerivation (finalAttrs: {
pname = "yabridge";
version = "5.1.1";
# NOTE: Also update yabridgectl's cargoHash when this is updated
src = fetchFromGitHub {
owner = "robbert-vdh";
repo = "yabridge";
rev = "refs/tags/${finalAttrs.version}";
hash = "sha256-4eA3vQFklIWkhtbd3Nw39bnJT6gPcni79ZyQVqU4+GQ=";
};
# Unpack subproject sources
postUnpack = ''
(
cd "$sourceRoot/subprojects"
cp -R --no-preserve=mode,ownership ${asio} asio
cp -R --no-preserve=mode,ownership ${bitsery} bitsery
cp -R --no-preserve=mode,ownership ${clap} clap
cp -R --no-preserve=mode,ownership ${function2} function2
cp -R --no-preserve=mode,ownership ${ghc_filesystem} ghc_filesystem
cp -R --no-preserve=mode,ownership ${tomlplusplus} tomlplusplus
cp -R --no-preserve=mode,ownership ${vst3} vst3
)
'';
patches = [
./libyabridge-drop-32-bit-support.patch
# Hard code bitbridge & runtime dependencies
(replaceVars ./hardcode-dependencies.patch {
libdbus = dbus.lib;
libxcb32 = pkgsi686Linux.xorg.libxcb;
inherit wine;
})
# Patch the chainloader to search for libyabridge through NIX_PROFILES
./libyabridge-from-nix-profiles.patch
];
postPatch = ''
patchShebangs .
(
cd subprojects
cp packagefiles/asio/* asio
cp packagefiles/bitsery/* bitsery
cp packagefiles/clap/* clap
cp packagefiles/function2/* function2
cp packagefiles/ghc_filesystem/* ghc_filesystem
)
'';
nativeBuildInputs = [
meson
ninja
pkg-config
wine
];
buildInputs = [
libxcb
dbus
];
mesonFlags = [
"--cross-file"
"cross-wine.conf"
"-Dbitbridge=true"
# Requires CMake and is unnecessary
"-Dtomlplusplus:generate_cmake_config=false"
];
installPhase = ''
runHook preInstall
mkdir -p "$out/bin" "$out/lib"
cp yabridge-host{,-32}.exe{,.so} "$out/bin"
cp libyabridge{,-chainloader}-{vst2,vst3,clap}.so "$out/lib"
runHook postInstall
'';
# Hard code wine path in wrapper scripts generated by winegcc
postFixup = ''
for exe in "$out"/bin/*.exe; do
substituteInPlace "$exe" \
--replace-fail 'WINELOADER="wine"' 'WINELOADER="${wine}/bin/wine"'
done
'';
passthru.updateScript = nix-update-script { };
meta = with lib; {
description = "Modern and transparent way to use Windows VST2 and VST3 plugins on Linux";
homepage = "https://github.com/robbert-vdh/yabridge";
changelog = "https://github.com/robbert-vdh/yabridge/blob/${finalAttrs.version}/CHANGELOG.md";
license = licenses.gpl3Plus;
maintainers = with maintainers; [ kira-bruneau ];
platforms = [ "x86_64-linux" ];
};
})

View File

@@ -0,0 +1,41 @@
diff --git a/meson.build b/meson.build
index 9e69128d..8c53ac88 100644
--- a/meson.build
+++ b/meson.build
@@ -226,7 +226,7 @@ if is_64bit_system
xcb_64bit_dep = dependency('xcb')
endif
if with_bitbridge
- xcb_32bit_dep = winegcc.find_library('xcb')
+ xcb_32bit_dep = winegcc.find_library('xcb', dirs: ['@libxcb32@/lib'])
endif
# These are all headers-only libraries, and thus won't require separate 32-bit
diff --git a/src/common/notifications.cpp b/src/common/notifications.cpp
index 654b6c83..78ba2fe7 100644
--- a/src/common/notifications.cpp
+++ b/src/common/notifications.cpp
@@ -29,8 +29,8 @@
#include "process.h"
#include "utils.h"
-constexpr char libdbus_library_name[] = "libdbus-1.so.3";
-constexpr char libdbus_library_fallback_name[] = "libdbus-1.so";
+constexpr char libdbus_library_name[] = "@libdbus@/lib/libdbus-1.so.3";
+constexpr char libdbus_library_fallback_name[] = "@libdbus@/lib/libdbus-1.so";
std::atomic<void*> libdbus_handle = nullptr;
std::mutex libdbus_mutex;
diff --git a/src/plugin/utils.cpp b/src/plugin/utils.cpp
index 441345c6..f3e51cff 100644
--- a/src/plugin/utils.cpp
+++ b/src/plugin/utils.cpp
@@ -103,7 +103,7 @@ std::string PluginInfo::wine_version() const {
// The '*.exe' scripts generated by winegcc allow you to override the binary
// used to run Wine, so will will handle this in the same way for our Wine
// version detection. We'll be using `execvpe`
- std::string wine_path = "wine";
+ std::string wine_path = "@wine@/bin/wine";
// NOLINTNEXTLINE(concurrency-mt-unsafe)
if (const char* wineloader_path = getenv("WINELOADER");
wineloader_path && access(wineloader_path, X_OK) == 0) {

View File

@@ -0,0 +1,97 @@
From 0002273e4df7c9448b52ce54ef38a93cf753fbfd Mon Sep 17 00:00:00 2001
From: Robbert van der Helm <mail@robbertvanderhelm.nl>
Date: Sun, 1 Jun 2025 22:22:20 +0200
Subject: [PATCH] Drop the 32-bit libyabridge support for EnergyXT
I don't think anyone is using this, and it's triggering a bug in recent
Meson versions so just removing it for now should be fine.
---
CHANGELOG.md | 9 +++++++++
README.md | 20 --------------------
meson.build | 12 +-----------
3 files changed, 10 insertions(+), 31 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 687e73b3..262ee298 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -15,6 +15,15 @@ Versioning](https://semver.org/spec/v2.0.0.html).
consuming too much memory. This only affected the prebuilt binaries from the
releases page.
+### Removed
+
+- Out of the box support for building a 32-bit version of yabridge for use in
+ 64-bit machines has been dropped as part of solving a compatibility issue with
+ newer Meson versions
+ ([#431](https://github.com/robbert-vdh/yabridge/issues/431)). This was only
+ relevant for using 64-bit Windows plugins in the old 32-bit Linux version of
+ **EnergyXT**, and should not affect most users.
+
### yabridgectl
- Fixed a regression that caused `yabridgectl set --path-auto` to no longer
diff --git a/README.md b/README.md
index 55155705..6019b67a 100644
--- a/README.md
+++ b/README.md
@@ -886,26 +886,6 @@ Yabridge will detect whether the plugin you're trying to load is 32-bit or
64-bit, and will run either the regular version or the `*-32.exe` variant
accordingly.
-### 32-bit libraries
-
-It also possible to build 32-bit versions of yabridge's libraries, which would
-let you use both 32-bit and 64-bit Windows VST2, VST3, and CLAP plugins from a
-32-bit Linux plugin host. This is mostly untested since 32-bit only Linux
-applications don't really exist anymore, but it should work! The build system
-will still assume you're compiling from a 64-bit system, so if you're compiling
-on an actual 32-bit system you would need to comment out the 64-bit
-`yabridge-host` and `yabridge-group` binaries in `meson.build`:
-
-```shell
-meson setup build --buildtype=release --cross-file=cross-wine.conf --unity=on --unity-size=1000 -Dbitbridge=true -Dbuild.cpp_args='-m32' -Dbuild.cpp_link_args='-m32'
-ninja -C build
-```
-
-Like the above commands, you might need to tweak the unity size based on the
-amount of system memory available. See the CI build definitions for some
-examples on how to add static linking in the mix if you're going to run this
-version of yabridge on some other machine.
-
## Debugging
Wine's error messages and warning are usually very helpful whenever a plugin
diff --git a/meson.build b/meson.build
index 9e69128d..98bf607e 100644
--- a/meson.build
+++ b/meson.build
@@ -20,19 +17,12 @@ project(
# need to pass `-Dbitbridge=true`. We just make sure that we won't build
# any 64-bit binaries in that situation.
is_64bit_system = build_machine.cpu_family() not in ['x86', 'arm']
-with_32bit_libraries = (not is_64bit_system) or get_option('build.cpp_args').contains('-m32')
with_bitbridge = get_option('bitbridge')
with_clap = get_option('clap')
with_system_asio = get_option('system-asio')
with_winedbg = get_option('winedbg')
with_vst3 = get_option('vst3')
-# Cookies can't be stored correctly when the native host is 32-bit and the
-# bridged plugin is 64-bit
-if with_clap and with_32bit_libraries and is_64bit_system
- error('CLAP support will not work correctly when using 32-bit yabridge libraries together with 64-bit host binaries.')
-endif
-
#
# Compiler flags
#
@@ -225,7 +215,7 @@ winegcc = meson.get_compiler('cpp', native : false)
if is_64bit_system
xcb_64bit_dep = dependency('xcb')
endif
-if with_32bit_libraries or with_bitbridge
+if with_bitbridge
xcb_32bit_dep = winegcc.find_library('xcb')
endif

View File

@@ -0,0 +1,71 @@
diff --git a/src/chainloader/utils.cpp b/src/chainloader/utils.cpp
index fa90b8f7..bd44d0ea 100644
--- a/src/chainloader/utils.cpp
+++ b/src/chainloader/utils.cpp
@@ -29,8 +29,10 @@
namespace fs = ghc::filesystem;
void* find_plugin_library(const std::string& name) {
+ Logger logger = Logger::create_exception_logger();
+
// Just using a goto for this would probably be cleaner, but yeah...
- const auto impl = [&name]() -> void* {
+ const auto impl = [&name, &logger]() -> void* {
// If `name` exists right next to the Wine plugin host binary, then
// we'll try loading that. Otherwise we'll fall back to regular
// `dlopen()` for distro packaged versions of yabridge
@@ -52,27 +54,28 @@ void* find_plugin_library(const std::string& name) {
}
}
- if (void* handle = dlopen(name.c_str(), RTLD_LAZY | RTLD_LOCAL)) {
- return handle;
+ auto nix_profiles = getenv("NIX_PROFILES");
+ if (!nix_profiles || nix_profiles[0] == '\0') {
+ logger.log("");
+ logger.log("ERROR: 'NIX_PROFILES' environment variable is not set");
+ logger.log("");
+ return nullptr;
}
- // One last Hail Mary, in case ldconfig was not set up correctly. This
- // might be relevant for some of the `/usr/local/*` locations (although
- // you really, really shouldn't install yabridge there, please, thank
- // you). Yabridgectl searches through these same directories.
- for (const auto& lib_dir : {
- "/usr/lib",
- "/usr/lib/x86_64-linux-gnu",
- "/usr/lib64",
- "/usr/local/lib",
- "/usr/local/lib/x86_64-linux-gnu",
- "/usr/local/lib64",
- }) {
- const fs::path candidate = fs::path(lib_dir) / name;
- if (void* handle =
- dlopen(candidate.c_str(), RTLD_LAZY | RTLD_LOCAL)) {
+ // NIX_PROFILES is iterated in reverse from the most specific (the
+ // user profile) to the least specific (the system profile).
+ const std::string_view nix_profiles_view = nix_profiles;
+ auto segment_end = nix_profiles_view.size();
+ while (segment_end != std::string::npos) {
+ const auto next_segment_end = nix_profiles_view.rfind(' ', segment_end - 1);
+ const auto segment_begin = next_segment_end + 1;
+ const auto profile = nix_profiles_view.substr(segment_begin, segment_end - segment_begin);
+ const auto candidate = fs::path(profile) / "lib" / name;
+ if (auto handle = dlopen(candidate.c_str(), RTLD_LAZY | RTLD_LOCAL)) {
return handle;
}
+
+ segment_end = next_segment_end;
}
return nullptr;
@@ -82,8 +85,6 @@ void* find_plugin_library(const std::string& name) {
if (!handle) {
const fs::path this_plugin_path = get_this_file_location();
- Logger logger = Logger::create_exception_logger();
-
logger.log("");
logger.log("Could not find '" + name + "'");
logger.log("");

View File

@@ -0,0 +1,72 @@
diff --git a/tools/yabridgectl/src/config.rs b/tools/yabridgectl/src/config.rs
index d948beff..9b3f9ffb 100644
--- a/tools/yabridgectl/src/config.rs
+++ b/tools/yabridgectl/src/config.rs
@@ -22,6 +22,7 @@ use serde_derive::{Deserialize, Serialize};
use std::collections::{BTreeMap, BTreeSet, HashSet};
use std::env;
use std::fs;
+use std::iter;
use std::path::{Path, PathBuf};
use which::which;
use xdg::BaseDirectories;
@@ -225,34 +226,27 @@ impl Config {
}
}
None => {
- // Search in the system library locations and in `~/.local/share/yabridge` if no
- // path was set explicitely. We'll also search through `/usr/local/lib` just in case
- // but since we advocate against installing yabridge there we won't list this path
- // in the error message when `libyabridge-chainloader-vst2.so` can't be found.
- let system_path = Path::new("/usr/lib");
+ // Search through NIX_PROFILES & data home directory if no path was set explicitly.
+ // NIX_PROFILES is iterated in reverse from the most specific (the user profile) to
+ // the least specific (the system profile).
+ let nix_profiles = env::var("NIX_PROFILES");
let user_path = xdg_dirs.get_data_home();
- let lib_directories = [
- system_path,
- // Used on Debian based distros
- Path::new("/usr/lib/x86_64-linux-gnu"),
- // Used on Fedora
- Path::new("/usr/lib64"),
- Path::new("/usr/local/lib"),
- Path::new("/usr/local/lib/x86_64-linux-gnu"),
- Path::new("/usr/local/lib64"),
- &user_path,
- ];
+ let lib_directories = nix_profiles.iter()
+ .flat_map(|profiles| profiles.split(' ')
+ .rev()
+ .map(|profile| Path::new(profile).join("lib")))
+ .chain(iter::once(user_path.clone()));
+
let mut candidates = lib_directories
- .iter()
.map(|directory| directory.join(VST2_CHAINLOADER_NAME));
+
match candidates.find(|directory| directory.exists()) {
Some(candidate) => candidate,
_ => {
return Err(anyhow!(
- "Could not find '{}' in either '{}' or '{}'. You can override the \
+ "Could not find '{}' through 'NIX_PROFILES' or '{}'. You can override the \
default search path using 'yabridgectl set --path=<path>'.",
VST2_CHAINLOADER_NAME,
- system_path.display(),
user_path.display()
));
}
diff --git a/tools/yabridgectl/src/main.rs b/tools/yabridgectl/src/main.rs
index e66ef0da..bfe9c8bf 100644
--- a/tools/yabridgectl/src/main.rs
+++ b/tools/yabridgectl/src/main.rs
@@ -134,7 +134,7 @@ fn main() -> Result<()> {
.long_help(
"Path to the directory containing \
'libyabridge-chainloader-{clap,vst2,vst3}.so'. If this is not set, \
- then yabridgectl will look in both '/usr/lib' and \
+ then yabridgectl will look through 'NIX_PROFILES' and \
'~/.local/share/yabridge' by default.",
)
.value_parser(parse_directory_path)

View File

@@ -0,0 +1,48 @@
{
lib,
rustPlatform,
yabridge,
makeWrapper,
wine,
}:
rustPlatform.buildRustPackage {
pname = "yabridgectl";
version = yabridge.version;
src = yabridge.src;
sourceRoot = "${yabridge.src.name}/tools/yabridgectl";
cargoHash = "sha256-VcBQxKjjs9ESJrE4F1kxEp4ah3j9jiNPq/Kdz/qPvro=";
patches = [
# Patch yabridgectl to search for the chainloader through NIX_PROFILES
./chainloader-from-nix-profiles.patch
# Dependencies are hardcoded in yabridge, so the check is unnecessary and likely incorrect
./remove-dependency-verification.patch
];
patchFlags = [ "-p3" ];
nativeBuildInputs = [ makeWrapper ];
postFixup = ''
wrapProgram "$out/bin/yabridgectl" \
--prefix PATH : ${
lib.makeBinPath [
wine # winedump
]
}
'';
meta = with lib; {
description = "Small, optional utility to help set up and update yabridge for several directories at once";
homepage = "${yabridge.src.meta.homepage}/tree/${yabridge.version}/tools/yabridgectl";
changelog = yabridge.meta.changelog;
license = licenses.gpl3Plus;
maintainers = with maintainers; [ kira-bruneau ];
platforms = yabridge.meta.platforms;
mainProgram = "yabridgectl";
};
}

View File

@@ -0,0 +1,19 @@
diff --git a/tools/yabridgectl/src/actions.rs b/tools/yabridgectl/src/actions.rs
index 6a8be858..5ce5e460 100644
--- a/tools/yabridgectl/src/actions.rs
+++ b/tools/yabridgectl/src/actions.rs
@@ -847,14 +847,6 @@ pub fn do_sync(config: &mut Config, options: &SyncOptions) -> Result<()> {
// be the case if we get to this point though.
verify_path_setup()?;
- // This check is only performed once per combination of Wine and yabridge versions
- verify_wine_setup(config)?;
-
- // Yabridge uses D-Bus notifications to relay important information when something's very wrong,
- // so we'll check whether `libdbus-1.so` is available (even though it would be very odd if it
- // isn't)
- verify_external_dependencies()?;
-
Ok(())
}