diff --git a/pkgs/by-name/fa/famistudio/package.nix b/pkgs/by-name/fa/famistudio/package.nix index 0dc7fc256436..cd115bbcc338 100644 --- a/pkgs/by-name/fa/famistudio/package.nix +++ b/pkgs/by-name/fa/famistudio/package.nix @@ -1,5 +1,5 @@ { - stdenv, + stdenvNoCC, lib, buildDotnetModule, dotnetCorePackages, @@ -13,44 +13,46 @@ openal, portaudio, rtmidi, + _experimental-update-script-combinators, + gitUpdater, }: let csprojName = - if stdenv.hostPlatform.isLinux then + if stdenvNoCC.hostPlatform.isLinux then "FamiStudio.Linux" - else if stdenv.hostPlatform.isDarwin then + else if stdenvNoCC.hostPlatform.isDarwin then "FamiStudio.Mac" else - throw "Don't know how to build FamiStudio for ${stdenv.hostPlatform.system}"; + throw "Don't know how to build FamiStudio for ${stdenvNoCC.hostPlatform.system}"; in -buildDotnetModule rec { +buildDotnetModule (finalAttrs: { pname = "famistudio"; - version = "4.2.1"; + version = "4.3.0"; src = fetchFromGitHub { owner = "BleuBleu"; repo = "FamiStudio"; - rev = "refs/tags/${version}"; - hash = "sha256-WYy/6cWQg3Ayok/eAdnvlWAvdcuhy/sdlWOVvaYcPkc="; + rev = "refs/tags/${finalAttrs.version}"; + hash = "sha256-Ldht7w1qgLTiqbRUJJvFQgl1VW6k+14w/jz58kAeMl0="; }; postPatch = let - libname = library: "${library}${stdenv.hostPlatform.extensions.sharedLibrary}"; + libname = library: "${library}${stdenvNoCC.hostPlatform.extensions.sharedLibrary}"; buildNativeWrapper = args: callPackage ./build-native-wrapper.nix ( args // { - inherit version src; - sourceRoot = "${src.name}/ThirdParty/${args.depname}"; + inherit (finalAttrs) version src; + sourceRoot = "${finalAttrs.src.name}/ThirdParty/${args.depname}"; } ); nativeWrapperToReplaceFormat = args: let - libPrefix = lib.optionalString stdenv.hostPlatform.isLinux "lib"; + libPrefix = lib.optionalString stdenvNoCC.hostPlatform.isLinux "lib"; in { package = buildNativeWrapper args; @@ -71,14 +73,14 @@ buildDotnetModule rec { ourName = "librtmidi"; } ] - ++ lib.optionals stdenv.hostPlatform.isLinux [ + ++ lib.optionals stdenvNoCC.hostPlatform.isLinux [ { package = openal; expectedName = "libopenal32"; ourName = "libopenal"; } ] - ++ lib.optionals stdenv.hostPlatform.isDarwin [ + ++ lib.optionals stdenvNoCC.hostPlatform.isDarwin [ { package = portaudio; expectedName = "libportaudio.2"; @@ -117,10 +119,10 @@ buildDotnetModule rec { rm FamiStudio/*.{dll,dylib,so*} # Replace copying of vendored prebuilt native libraries with copying of our native libraries - substituteInPlace ${projectFile} ${libraryReplaceArgs} + substituteInPlace ${finalAttrs.projectFile} ${libraryReplaceArgs} # Un-hardcode target platform if set - sed -i -e '/PlatformTarget/d' ${projectFile} + sed -i -e '/PlatformTarget/d' ${finalAttrs.projectFile} # Don't require a special name to be preserved, our OpenAL isn't 32-bit substituteInPlace FamiStudio/Source/AudioStreams/OpenALStream.cs \ @@ -130,10 +132,8 @@ buildDotnetModule rec { projectFile = "FamiStudio/${csprojName}.csproj"; nugetDeps = ./deps.json; dotnet-sdk = dotnetCorePackages.sdk_8_0; - dotnet-runtime = dotnetCorePackages.runtime_8_0; - dotnetFlags = [ "-p:TargetFramework=net8.0" ]; - runtimeDeps = lib.optionals stdenv.hostPlatform.isLinux [ + runtimeDeps = lib.optionals stdenvNoCC.hostPlatform.isLinux [ libglvnd ]; @@ -152,7 +152,10 @@ buildDotnetModule rec { --prefix PATH : ${lib.makeBinPath [ ffmpeg ]} ''; - passthru.updateScript = ./update.sh; + passthru.updateScript = _experimental-update-script-combinators.sequence [ + (gitUpdater { }).command + (finalAttrs.passthru.fetch-deps) + ]; meta = { homepage = "https://famistudio.org/"; @@ -168,4 +171,4 @@ buildDotnetModule rec { platforms = lib.platforms.unix; mainProgram = "FamiStudio"; }; -} +}) diff --git a/pkgs/by-name/fa/famistudio/update.sh b/pkgs/by-name/fa/famistudio/update.sh deleted file mode 100755 index 15657955c025..000000000000 --- a/pkgs/by-name/fa/famistudio/update.sh +++ /dev/null @@ -1,23 +0,0 @@ -#!/usr/bin/env nix-shell -#!nix-shell -i bash -p curl jq common-updater-scripts -set -eo pipefail - -cd "$(dirname "${BASH_SOURCE[0]}")" - -deps_file="$(realpath "./deps.nix")" - -new_version="$(curl ${GITHUB_TOKEN:+-u ":$GITHUB_TOKEN"} \ - -s "https://api.github.com/repos/BleuBleu/FamiStudio/releases?per_page=1" | jq -r '.[0].tag_name')" -old_version="$(sed -nE 's/\s*version = "(.*)".*/\1/p' ./default.nix)" -if [[ "$new_version" == "$old_version" ]]; then - echo "Up to date" - exit 0 -fi - -cd ../../../.. - -if [[ "$1" != "--deps-only" ]]; then - update-source-version famistudio "$new_version" -fi - -$(nix-build . -A famistudio.fetch-deps --no-out-link) "$deps_file"