lmms: 1.2.2 -> 1.2.2-unstable-2026-04-21 (#501041)

This commit is contained in:
Michael Daniels
2026-04-23 21:33:51 +00:00
committed by GitHub
6 changed files with 285 additions and 105 deletions
-99
View File
@@ -1,99 +0,0 @@
{
lib,
stdenv,
fetchFromGitHub,
fetchpatch,
cmake,
pkg-config,
wrapQtAppsHook,
alsa-lib ? null,
carla ? null,
fftwFloat,
fltk_1_3,
fluidsynth ? null,
lame ? null,
libgig ? null,
libjack2 ? null,
libpulseaudio ? null,
libsamplerate,
libsoundio ? null,
libsndfile,
libvorbis ? null,
portaudio ? null,
qtbase,
qtx11extras,
qttools,
SDL ? null,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "lmms";
version = "1.2.2";
src = fetchFromGitHub {
owner = "LMMS";
repo = "lmms";
rev = "v${finalAttrs.version}";
sha256 = "006hwv1pbh3y5whsxkjk20hsbgwkzr4dawz43afq1gil69y7xpda";
fetchSubmodules = true;
};
nativeBuildInputs = [
cmake
qttools
pkg-config
wrapQtAppsHook
];
buildInputs = [
carla
alsa-lib
fftwFloat
fltk_1_3
fluidsynth
lame
libgig
libjack2
libpulseaudio
libsamplerate
libsndfile
libsoundio
libvorbis
portaudio
qtbase
qtx11extras
SDL # TODO: switch to SDL2 in the next version
];
patches = [
(fetchpatch {
url = "https://raw.githubusercontent.com/archlinux/svntogit-community/cf64acc45e3264c6923885867e2dbf8b7586a36b/trunk/lmms-carla-export.patch";
sha256 = "sha256-wlSewo93DYBN2PvrcV58dC9kpoo9Y587eCeya5OX+j4=";
})
];
prePatch = ''
# Update CMake minimum required version and policies
substituteInPlace CMakeLists.txt --replace 'CMAKE_MINIMUM_REQUIRED(VERSION 2.8.7)' 'CMAKE_MINIMUM_REQUIRED(VERSION 3.10)'
substituteInPlace CMakeLists.txt --replace 'CMAKE_POLICY(SET CMP0026 OLD)' 'CMAKE_POLICY(SET CMP0026 NEW)'
substituteInPlace CMakeLists.txt --replace 'CMAKE_POLICY(SET CMP0050 OLD)' 'CMAKE_POLICY(SET CMP0050 NEW)'
substituteInPlace CMakeLists.txt --replace 'GET_TARGET_PROPERTY(BIN2RES bin2res LOCATION)' 'SET(BIN2RES $<TARGET_FILE:bin2res>)'
'';
cmakeFlags = [
"-DWANT_QT5=ON"
]
++ lib.optionals (lib.versionOlder finalAttrs.version "11.4") [
# Fix the build with CMake 4.
"-DCMAKE_POLICY_VERSION_MINIMUM=3.5"
];
meta = {
description = "DAW similar to FL Studio (music production software)";
mainProgram = "lmms";
homepage = "https://lmms.io";
license = lib.licenses.gpl2Plus;
platforms = lib.platforms.linux;
maintainers = [ ];
};
})
+8
View File
@@ -0,0 +1,8 @@
{ lmms }:
lmms.override {
withSoundio = true;
withPortAudio = true;
withSndio = true;
withWine = true;
}
@@ -0,0 +1,38 @@
From 9d05021c4e9370f7e1b8c7595a18ae2b98895a60 Mon Sep 17 00:00:00 2001
From: "Alexandre Cavalheiro S. Tiago da Silva" <contact@thewizard.link>
Date: Tue, 28 Jan 2025 18:36:47 -0300
Subject: [PATCH] fix!: add unique string to FindWine for replacement in nixos
---
cmake/modules/FindWine.cmake | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/cmake/modules/FindWine.cmake b/cmake/modules/FindWine.cmake
index eeef8d9c2..c04ee4a35 100644
--- a/cmake/modules/FindWine.cmake
+++ b/cmake/modules/FindWine.cmake
@@ -13,6 +13,13 @@
# WINE_64_FLAGS - 64-bit linker flags
#
+set(WINE_INCLUDE_DIR @WINE_LOCATION@/include)
+set(WINE_BUILD @WINE_LOCATION@/bin/winebuild)
+set(WINE_CXX @WINE_LOCATION@/bin/wineg++)
+set(WINE_GCC @WINE_LOCATION@/bin/winegcc)
+set(WINE_32_LIBRARY_DIRS @WINE_LOCATION@/lib/wine/i386-unix)
+set(WINE_64_LIBRARY_DIRS @WINE_LOCATION@/lib/wine/x86_64-unix)
+
MACRO(_findwine_find_flags output expression result)
STRING(REPLACE " " ";" WINEBUILD_FLAGS "${output}")
FOREACH(FLAG ${WINEBUILD_FLAGS})
@@ -32,6 +39,7 @@ ENDMACRO()
# Prefer newest wine first
list(APPEND WINE_LOCATIONS
+ @WINE_LOCATION@
/opt/wine-staging
/opt/wine-devel
/opt/wine-stable
--
2.47.1
@@ -0,0 +1,49 @@
Use modern CMake imported target for libgig to ensure proper RPATH propagation.
The old-style link_directories()/link_libraries() pattern does not propagate
library paths to the install RPATH, causing libgig.so to not be found at
runtime when it is installed in a non-standard directory (e.g. lib/libgig/).
Using IMPORTED_TARGET with pkg_check_modules creates a PkgConfig::GIG target
that carries include dirs, library paths, and link flags, and CMake correctly
propagates these to the install RPATH via target_link_libraries().
Also set CMAKE_INSTALL_RPATH_USE_LINK_PATH in the GigPlayer scope, since the
upstream code only sets it in src/CMakeLists.txt which does not apply to the
sibling plugins/ directory.
diff -ruN a/CMakeLists.txt b/CMakeLists.txt
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -550,7 +550,7 @@
# check for libgig
If(WANT_GIG)
- PKG_CHECK_MODULES(GIG gig)
+ PKG_CHECK_MODULES(GIG IMPORTED_TARGET gig)
IF(GIG_FOUND)
SET(LMMS_HAVE_GIG TRUE)
SET(STATUS_GIG "OK")
diff -ruN a/plugins/GigPlayer/CMakeLists.txt b/plugins/GigPlayer/CMakeLists.txt
--- a/plugins/GigPlayer/CMakeLists.txt
+++ b/plugins/GigPlayer/CMakeLists.txt
@@ -1,17 +1,16 @@
if(LMMS_HAVE_GIG)
INCLUDE(BuildPlugin)
- include_directories(SYSTEM ${GIG_INCLUDE_DIRS})
SET(CMAKE_AUTOUIC ON)
+ SET(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
# Required for not crashing loading files with libgig
add_compile_options("-fexceptions")
- link_directories(${GIG_LIBRARY_DIRS})
- link_libraries(${GIG_LIBRARIES})
build_plugin(gigplayer
GigPlayer.cpp GigPlayer.h PatchesDialog.cpp PatchesDialog.h PatchesDialog.ui
MOCFILES GigPlayer.h PatchesDialog.h
EMBEDDED_RESOURCES "${CMAKE_CURRENT_SOURCE_DIR}/*.png"
)
+ target_link_libraries(gigplayer PkgConfig::GIG)
target_link_libraries(gigplayer SampleRate::samplerate)
endif(LMMS_HAVE_GIG)
+190
View File
@@ -0,0 +1,190 @@
{
lib,
stdenv,
fetchFromGitHub,
replaceVars,
unstableGitUpdater,
cmake,
pkg-config,
alsa-lib,
carla,
fftwFloat,
fltk,
fluidsynth,
glibc_multi,
lame,
libgig,
libjack2,
libogg,
libpulseaudio,
libsForQt5,
libsamplerate,
libsoundio,
libsndfile,
libvorbis,
lilv,
lv2,
perl5,
perl5Packages,
portaudio,
qt5,
sndio,
SDL2,
suil,
wineWow64Packages,
withALSA ? true,
withPulseAudio ? true,
withSoundio ? false,
withPortAudio ? false,
withSndio ? false,
withJACK ? true,
withSDL ? true,
withOggVorbis ? true,
withMP3Lame ? true,
withSoundFont ? true,
withZyn ? true,
withSWH ? true,
withSID ? true,
withGIG ? true,
withLV2 ? true,
withVST ? true,
withCarla ? true,
withWine ? false,
}:
let
winePackages =
if lib.isDerivation wineWow64Packages then wineWow64Packages else wineWow64Packages.minimal;
in
stdenv.mkDerivation (finalAttrs: {
pname = "lmms";
version = "1.2.2-unstable-2026-04-21";
src = fetchFromGitHub {
owner = "LMMS";
repo = "lmms";
rev = "fc3dfda961a7923326d2b0d5747e5d8fd941af98";
hash = "sha256-q8w1CgM2QnkCIOUJlv8r+2zMKl+brbNKoAkhDJEhaN0=";
fetchSubmodules = true;
};
strictDeps = true;
__structuredAttrs = true;
nativeBuildInputs = [
cmake
libsForQt5.qt5.qttools
pkg-config
qt5.wrapQtAppsHook
];
buildInputs = [
fftwFloat
libsForQt5.qt5.qtbase
libsForQt5.qt5.qtsvg
libsForQt5.qt5.qtx11extras
libsamplerate
libsndfile
]
++ lib.optionals withALSA [
alsa-lib
]
++ lib.optionals withPulseAudio [
libpulseaudio
]
++ lib.optionals withSoundio [
libsoundio
]
++ lib.optionals withPortAudio [
portaudio
]
++ lib.optionals withSndio [
sndio
]
++ lib.optionals withJACK [
libjack2
]
++ lib.optionals withSDL [
SDL2
]
++ lib.optionals withOggVorbis [
libogg
libvorbis
]
++ lib.optionals withMP3Lame [
lame
]
++ lib.optionals withSoundFont [
fluidsynth
]
++ lib.optionals withZyn [
fltk
]
++ lib.optionals (withSWH || withSID) [
perl5
perl5Packages.ListMoreUtils
perl5Packages.XMLParser
]
++ lib.optionals withGIG [
libgig
]
++ lib.optionals withLV2 [
lilv
lv2
suil
]
++ lib.optionals withCarla [
carla
]
++ lib.optionals withWine [
glibc_multi
winePackages
];
patches = [
# Use modern CMake imported target for libgig so that its non-standard
# library path (lib/libgig/) is properly propagated to the install RPATH.
./0002-fix-gigplayer-linking.patch
]
++ lib.optionals withWine [
(replaceVars ./0001-fix-add-unique-string-to-FindWine-for-replacement-in.patch {
WINE_LOCATION = winePackages;
})
];
cmakeFlags = [
# Fix the build with CMake 4.
"-DCMAKE_POLICY_VERSION_MINIMUM=3.5"
(lib.cmakeBool "WANT_ALSA" withALSA)
(lib.cmakeBool "WANT_PULSEAUDIO" withPulseAudio)
(lib.cmakeBool "WANT_SOUNDIO" withSoundio)
(lib.cmakeBool "WANT_PORTAUDIO" withPortAudio)
(lib.cmakeBool "WANT_SNDIO" withSndio)
(lib.cmakeBool "WANT_JACK" withJACK)
(lib.cmakeBool "WANT_WEAKJACK" withJACK)
(lib.cmakeBool "WANT_SDL" withSDL)
(lib.cmakeBool "WANT_OGGVORBIS" withOggVorbis)
(lib.cmakeBool "WANT_MP3LAME" withMP3Lame)
(lib.cmakeBool "WANT_SF2" withSoundFont)
(lib.cmakeBool "WANT_GIG" withGIG)
(lib.cmakeBool "WANT_SID" withSID)
(lib.cmakeBool "WANT_SWH" withSWH)
(lib.cmakeBool "WANT_LV2" withLV2)
(lib.cmakeBool "WANT_VST" withVST)
(lib.cmakeBool "WANT_CARLA" withCarla)
];
passthru.updateScript = unstableGitUpdater { };
meta = {
description = "DAW similar to FL Studio (music production software)";
mainProgram = "lmms";
homepage = "https://lmms.io";
license = lib.licenses.gpl2Plus;
platforms = lib.platforms.linux;
maintainers = with lib.maintainers; [
wizardlink
jaredmontoya
];
};
})
-6
View File
@@ -9877,12 +9877,6 @@ with pkgs;
withFonts = true;
};
lmms = libsForQt5.callPackage ../applications/audio/lmms {
lame = null;
libsoundio = null;
portaudio = null;
};
luminanceHDR = callPackage ../applications/graphics/luminance-hdr {
openexr = openexr_2;
};