*mt32emu*: Add passthru.updateScript (#521302)

This commit is contained in:
Cosima Neidahl
2026-05-28 23:49:57 +00:00
committed by GitHub
3 changed files with 168 additions and 0 deletions

View File

@@ -2,6 +2,10 @@
lib,
stdenv,
fetchFromGitHub,
gitUpdater,
nix,
writeShellApplication,
_experimental-update-script-combinators,
cmake,
}:
@@ -36,6 +40,58 @@ stdenv.mkDerivation (finalAttrs: {
--replace "$dev/$dev/" "$dev/"
'';
passthru = {
# Otherwise x.y.z in version != x_y_z in tag, and bump to same version is attempted
unfixVersionScript = writeShellApplication {
name = "unfix-libmt32emu-version";
runtimeInputs = [
nix
];
text = ''
export UPDATE_NIX_ATTR_PATH="''${UPDATE_NIX_ATTR_PATH:-libmt32emu}"
preUpdateScriptVersion="$(nix-instantiate . --eval --strict -A "$UPDATE_NIX_ATTR_PATH.version" | cut -d'"' -f2)"
unfixedVersion="''${preUpdateScriptVersion//\./_}"
pkgFile="$(nix-instantiate --eval -E "with import ./. {}; (builtins.unsafeGetAttrPos \"version\" $UPDATE_NIX_ATTR_PATH).file" | cut -d'"' -f2)"
sed -i -e "s/version = \"$preUpdateScriptVersion\"/version = \"$unfixedVersion\"/g" "$pkgFile"
'';
};
updateTagScript = gitUpdater {
rev-prefix = "libmt32emu_";
};
# gitUpdater lacks an option for modifying new tag
fixVersionScript = writeShellApplication {
name = "fix-libmt32emu-version";
runtimeInputs = [
nix
];
text = ''
export UPDATE_NIX_ATTR_PATH="''${UPDATE_NIX_ATTR_PATH:-libmt32emu}"
postUpdateScriptVersion="$(nix-instantiate . --eval --strict -A "$UPDATE_NIX_ATTR_PATH.version" | cut -d'"' -f2)"
fixedVersion="''${postUpdateScriptVersion//_/.}"
pkgFile="$(nix-instantiate --eval -E "with import ./. {}; (builtins.unsafeGetAttrPos \"version\" $UPDATE_NIX_ATTR_PATH).file" | cut -d'"' -f2)"
sed -i -e "s/version = \"$postUpdateScriptVersion\"/version = \"$fixedVersion\"/g" "$pkgFile"
'';
};
updateScript = _experimental-update-script-combinators.sequence [
(lib.getExe finalAttrs.passthru.unfixVersionScript)
(finalAttrs.passthru.updateTagScript.command)
(lib.getExe finalAttrs.passthru.fixVersionScript)
];
};
meta = {
homepage = "https://munt.sourceforge.net/";
description = "Library to emulate Roland MT-32, CM-32L, CM-64 and LAPC-I devices";

View File

@@ -2,6 +2,10 @@
lib,
stdenv,
fetchFromGitHub,
gitUpdater,
nix,
writeShellApplication,
_experimental-update-script-combinators,
alsa-lib,
cmake,
libpulseaudio,
@@ -70,6 +74,58 @@ stdenv.mkDerivation (finalAttrs: {
ln -s $out/{Applications/mt32emu-qt.app/Contents/MacOS,bin}/mt32emu-qt
'';
passthru = {
# Otherwise x.y.z in version != x_y_z in tag, and bump to same version is attempted
unfixVersionScript = writeShellApplication {
name = "unfix-mt32emu-qt-version";
runtimeInputs = [
nix
];
text = ''
export UPDATE_NIX_ATTR_PATH="''${UPDATE_NIX_ATTR_PATH:-mt32emu-qt}"
preUpdateScriptVersion="$(nix-instantiate . --eval --strict -A "$UPDATE_NIX_ATTR_PATH.version" | cut -d'"' -f2)"
unfixedVersion="''${preUpdateScriptVersion//\./_}"
pkgFile="$(nix-instantiate --eval -E "with import ./. {}; (builtins.unsafeGetAttrPos \"version\" $UPDATE_NIX_ATTR_PATH).file" | cut -d'"' -f2)"
sed -i -e "s/version = \"$preUpdateScriptVersion\"/version = \"$unfixedVersion\"/g" "$pkgFile"
'';
};
updateTagScript = gitUpdater {
rev-prefix = "mt32emu_qt_";
};
# gitUpdater lacks an option for modifying new tag
fixVersionScript = writeShellApplication {
name = "fix-mt32emu-qt-version";
runtimeInputs = [
nix
];
text = ''
export UPDATE_NIX_ATTR_PATH="''${UPDATE_NIX_ATTR_PATH:-mt32emu-qt}"
postUpdateScriptVersion="$(nix-instantiate . --eval --strict -A "$UPDATE_NIX_ATTR_PATH.version" | cut -d'"' -f2)"
fixedVersion="''${postUpdateScriptVersion//_/.}"
pkgFile="$(nix-instantiate --eval -E "with import ./. {}; (builtins.unsafeGetAttrPos \"version\" $UPDATE_NIX_ATTR_PATH).file" | cut -d'"' -f2)"
sed -i -e "s/version = \"$postUpdateScriptVersion\"/version = \"$fixedVersion\"/g" "$pkgFile"
'';
};
updateScript = _experimental-update-script-combinators.sequence [
(lib.getExe finalAttrs.passthru.unfixVersionScript)
(finalAttrs.passthru.updateTagScript.command)
(lib.getExe finalAttrs.passthru.fixVersionScript)
];
};
meta = {
homepage = "https://munt.sourceforge.net/";
description = "Synthesizer application built on Qt and libmt32emu";

View File

@@ -2,6 +2,10 @@
lib,
stdenv,
fetchFromGitHub,
gitUpdater,
nix,
writeShellApplication,
_experimental-update-script-combinators,
cmake,
glib,
libmt32emu,
@@ -50,6 +54,58 @@ stdenv.mkDerivation (finalAttrs: {
(lib.cmakeBool "munt_WITH_MT32EMU_SMF2WAV" true)
];
passthru = {
# Otherwise x.y.z in version != x_y_z in tag, and bump to same version is attempted
unfixVersionScript = writeShellApplication {
name = "unfix-mt32emu-smf2wav-version";
runtimeInputs = [
nix
];
text = ''
export UPDATE_NIX_ATTR_PATH="''${UPDATE_NIX_ATTR_PATH:-mt32emu-smf2wav}"
preUpdateScriptVersion="$(nix-instantiate . --eval --strict -A "$UPDATE_NIX_ATTR_PATH.version" | cut -d'"' -f2)"
unfixedVersion="''${preUpdateScriptVersion//\./_}"
pkgFile="$(nix-instantiate --eval -E "with import ./. {}; (builtins.unsafeGetAttrPos \"version\" $UPDATE_NIX_ATTR_PATH).file" | cut -d'"' -f2)"
sed -i -e "s/version = \"$preUpdateScriptVersion\"/version = \"$unfixedVersion\"/g" "$pkgFile"
'';
};
updateTagScript = gitUpdater {
rev-prefix = "mt32emu_smf2wav_";
};
# gitUpdater lacks an option for modifying new tag
fixVersionScript = writeShellApplication {
name = "fix-mt32emu-smf2wav-version";
runtimeInputs = [
nix
];
text = ''
export UPDATE_NIX_ATTR_PATH="''${UPDATE_NIX_ATTR_PATH:-mt32emu-smf2wav}"
postUpdateScriptVersion="$(nix-instantiate . --eval --strict -A "$UPDATE_NIX_ATTR_PATH.version" | cut -d'"' -f2)"
fixedVersion="''${postUpdateScriptVersion//_/.}"
pkgFile="$(nix-instantiate --eval -E "with import ./. {}; (builtins.unsafeGetAttrPos \"version\" $UPDATE_NIX_ATTR_PATH).file" | cut -d'"' -f2)"
sed -i -e "s/version = \"$postUpdateScriptVersion\"/version = \"$fixedVersion\"/g" "$pkgFile"
'';
};
updateScript = _experimental-update-script-combinators.sequence [
(lib.getExe finalAttrs.passthru.unfixVersionScript)
(finalAttrs.passthru.updateTagScript.command)
(lib.getExe finalAttrs.passthru.fixVersionScript)
];
};
meta = {
homepage = "https://munt.sourceforge.net/";
description = "Produces a WAVE file from a Standard MIDI file (SMF)";