sonic-pi: 4.5.1 -> 4.6.0 (#446171)

This commit is contained in:
Emily
2025-10-12 15:02:32 +00:00
committed by GitHub
3 changed files with 82 additions and 76 deletions

View File

@@ -1,19 +1,14 @@
{
stdenv,
lib,
stdenv,
fetchFromGitHub,
wrapQtAppsHook,
autoPatchelfHook,
makeDesktopItem,
copyDesktopItems,
cmake,
pkg-config,
catch2_3,
qtbase,
qtsvg,
qttools,
qtwayland,
qwt,
qscintilla,
kdePackages,
kissfftFloat,
crossguid,
reproc,
@@ -31,7 +26,6 @@
parallel,
withTauWidget ? false,
qtwebengine,
withImGui ? false,
gl3w,
@@ -44,29 +38,30 @@ let
ruby = ruby_3_2;
in
stdenv.mkDerivation rec {
stdenv.mkDerivation (finalAttrs: {
pname = "sonic-pi";
version = "4.5.1";
version = "4.6.0";
src = fetchFromGitHub {
owner = "sonic-pi-net";
repo = "sonic-pi";
rev = "v${version}";
hash = "sha256-JMextQY0jLShWmqRQoVAbqIzDhA1mOzI7vfsG7+jjX0=";
tag = "v${finalAttrs.version}";
hash = "sha256-sF/ksVhUzSV5P3Oe/T8hAiFMFiuOMEPmuBlUZtPSvtk=";
};
mixFodDeps = beamPackages.fetchMixDeps {
inherit version;
inherit (finalAttrs) version;
pname = "mix-deps-sonic-pi";
mixEnv = "test";
src = "${src}/app/server/beam/tau";
hash = "sha256-7wqFI3f0CRVrXK2IUguqHNANwKMmTak/Xh9nr624TXc=";
src = "${finalAttrs.src}/app/server/beam/tau";
hash = "sha256-UoETv6X/Q/RmKb0uCsu59DH7OF0H+A9e7+4uRM/B1Wk=";
};
strictDeps = true;
nativeBuildInputs = [
wrapQtAppsHook
autoPatchelfHook
kdePackages.wrapQtAppsHook
copyDesktopItems
cmake
pkg-config
@@ -77,12 +72,12 @@ stdenv.mkDerivation rec {
];
buildInputs = [
qtbase
qtsvg
qttools
qtwayland
qwt
qscintilla
kdePackages.qtbase
kdePackages.qtsvg
kdePackages.qttools
kdePackages.qtwayland
kdePackages.qwt
kdePackages.qscintilla
kissfftFloat
catch2_3
crossguid
@@ -95,7 +90,7 @@ stdenv.mkDerivation rec {
aubio
]
++ lib.optionals withTauWidget [
qtwebengine
kdePackages.qtwebengine
]
++ lib.optionals withImGui [
gl3w
@@ -118,57 +113,63 @@ stdenv.mkDerivation rec {
doCheck = true;
# Fix shebangs on files in app and bin scripts
postPatch = ''
# Fix shebangs on files in app and bin scripts
patchShebangs app bin
'';
preConfigure = ''
preConfigure =
# Set build environment
export SONIC_PI_HOME="$TMPDIR/spi"
export HEX_HOME="$TEMPDIR/hex"
export HEX_OFFLINE=1
export MIX_REBAR3='${beamPackages.rebar3}/bin/rebar3'
export REBAR_GLOBAL_CONFIG_DIR="$TEMPDIR/rebar3"
export REBAR_CACHE_DIR="$TEMPDIR/rebar3.cache"
export MIX_HOME="$TEMPDIR/mix"
export MIX_DEPS_PATH="$TEMPDIR/deps"
export MIX_ENV=prod
''
export SONIC_PI_HOME="$TMPDIR/spi"
export HEX_HOME="$TEMPDIR/hex"
export HEX_OFFLINE=1
export MIX_REBAR3='${beamPackages.rebar3}/bin/rebar3'
export REBAR_GLOBAL_CONFIG_DIR="$TEMPDIR/rebar3"
export REBAR_CACHE_DIR="$TEMPDIR/rebar3.cache"
export MIX_HOME="$TEMPDIR/mix"
export MIX_DEPS_PATH="$TEMPDIR/deps"
export MIX_ENV=prod
''
# Copy Mix dependency sources
echo 'Copying ${mixFodDeps} to Mix deps'
cp --no-preserve=mode -R '${mixFodDeps}' "$MIX_DEPS_PATH"
+ ''
echo 'Copying ${finalAttrs.mixFodDeps} to Mix deps'
cp --no-preserve=mode -R '${finalAttrs.mixFodDeps}' "$MIX_DEPS_PATH"
''
# Change to project base directory
cd app
+ ''
cd app
''
# Prebuild Ruby vendored dependencies and Qt docs
./linux-prebuild.sh -o
'';
+ ''
./linux-prebuild.sh -o
'';
# Build BEAM server
postBuild = ''
# Build BEAM server
../linux-post-tau-prod-release.sh -o
'';
checkPhase = ''
runHook preCheck
# BEAM tests
''
# BEAM tests
+ ''
pushd ../server/beam/tau
MIX_ENV=test TAU_ENV=test mix test
MIX_ENV=test TAU_ENV=test mix test
popd
# Ruby tests
''
# Ruby tests
+ ''
pushd ../server/ruby
rake test
rake test
popd
# API tests
''
# API tests, run JACK parallel to tests and quit both when one exits
+ ''
pushd api-tests
# run JACK parallel to tests and quit both when one exits
SONIC_PI_ENV=test parallel --no-notice -j2 --halt now,done=1 ::: 'jackd -rd dummy' 'ctest --verbose'
SONIC_PI_ENV=test parallel --no-notice -j2 --halt now,done=1 ::: 'jackd -rd dummy' 'ctest --verbose'
popd
runHook postCheck
@@ -176,16 +177,19 @@ stdenv.mkDerivation rec {
installPhase = ''
runHook preInstall
# Run Linux release script
''
# Run Linux release script
+ ''
../linux-release.sh
# Copy dist directory to output
''
# Copy dist directory to output
+ ''
mkdir $out
cp -r linux_dist/* $out/
# Copy icon
install -Dm644 ../gui/qt/images/icon-smaller.png $out/share/icons/hicolor/256x256/apps/sonic-pi.png
''
# Copy icon
+ ''
install -D --mode=0644 ../gui/images/icon-smaller.png $out/share/icons/hicolor/256x256/apps/sonic-pi.png
runHook postInstall
'';
@@ -193,7 +197,10 @@ stdenv.mkDerivation rec {
# $out/bin/sonic-pi is a shell script, and wrapQtAppsHook doesn't wrap them.
dontWrapQtApps = true;
preFixup = ''
# Wrap Qt GUI (distributed binary)
patchelf --shrink-rpath --allowed-rpath-prefixes "$NIX_STORE" $out/app/build/gui/sonic-pi
''
# Wrap Qt GUI (distributed binary)
+ ''
wrapQtApp $out/bin/sonic-pi \
--prefix PATH : ${
lib.makeBinPath [
@@ -204,10 +211,10 @@ stdenv.mkDerivation rec {
pipewire.jack
]
}
# If ImGui was built
''
# If ImGui was built, Wrap ImGui into bin
+ ''
if [ -e $out/app/build/gui/imgui/sonic-pi-imgui ]; then
# Wrap ImGui into bin
makeWrapper $out/app/build/gui/imgui/sonic-pi-imgui $out/bin/sonic-pi-imgui \
--inherit-argv0 \
--prefix PATH : ${
@@ -220,10 +227,11 @@ stdenv.mkDerivation rec {
]
}
fi
# Remove runtime Erlang references
''
# Remove runtime Erlang references
+ ''
for file in $(grep -FrIl '${beamPackages.erlang}/lib/erlang' $out/app/server/beam/tau); do
substituteInPlace "$file" --replace '${beamPackages.erlang}/lib/erlang' $out/app/server/beam/tau/_build/prod/rel/tau
substituteInPlace "$file" --replace-fail '${beamPackages.erlang}/lib/erlang' $out/app/server/beam/tau/_build/prod/rel/tau
done
'';
@@ -238,7 +246,7 @@ stdenv.mkDerivation rec {
exec = "sonic-pi";
icon = "sonic-pi";
desktopName = "Sonic Pi";
comment = meta.description;
comment = finalAttrs.meta.description;
categories = [
"Audio"
"AudioVideo"
@@ -249,16 +257,16 @@ stdenv.mkDerivation rec {
passthru.updateScript = ./update.sh;
meta = with lib; {
meta = {
homepage = "https://sonic-pi.net/";
description = "Free live coding synth for everyone originally designed to support computing and music lessons within schools";
license = licenses.mit;
maintainers = with maintainers; [
license = lib.licenses.mit;
maintainers = with lib.maintainers; [
Phlogistique
kamilchm
c0deaddict
sohalt
];
platforms = platforms.linux;
platforms = lib.platforms.linux;
};
}
})

View File

@@ -12445,8 +12445,6 @@ with pkgs;
spotify-qt = qt6Packages.callPackage ../applications/audio/spotify-qt { };
sonic-pi = libsForQt5.callPackage ../applications/audio/sonic-pi { };
stag = callPackage ../applications/misc/stag {
curses = ncurses;
};