Unverified Commit 695affe8 authored by Michael Daniels's avatar Michael Daniels Committed by GitHub
Browse files

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

parents e55e5f4a a37c00f0
Loading
Loading
Loading
Loading
+0 −99
Original line number Diff line number Diff line
{
  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 −0
Original line number Diff line number Diff line
{ lmms }:

lmms.override {
  withSoundio = true;
  withPortAudio = true;
  withSndio = true;
  withWine = true;
}
+38 −0
Original line number Diff line number Diff line
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
+49 −0
Original line number Diff line number Diff line
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 −0
Original line number Diff line number Diff line
{
  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
    ];
  };
})
Loading