From 635d86e872b68d826953ba19d2e5b4c235d390b9 Mon Sep 17 00:00:00 2001 From: Rafael Ieda Date: Wed, 29 Oct 2025 12:10:42 -0300 Subject: [PATCH 01/38] gensgs: drop --- .../emulators/gens-gs/default.nix | 46 ------------------- pkgs/top-level/aliases.nix | 1 + pkgs/top-level/all-packages.nix | 2 - 3 files changed, 1 insertion(+), 48 deletions(-) delete mode 100644 pkgs/applications/emulators/gens-gs/default.nix diff --git a/pkgs/applications/emulators/gens-gs/default.nix b/pkgs/applications/emulators/gens-gs/default.nix deleted file mode 100644 index c2b4751b5adb..000000000000 --- a/pkgs/applications/emulators/gens-gs/default.nix +++ /dev/null @@ -1,46 +0,0 @@ -{ - lib, - stdenv, - fetchurl, - pkg-config, - gtk2, - SDL, - nasm, - zlib, - libpng, - libGLU, - libGL, -}: - -stdenv.mkDerivation rec { - pname = "gens-gs"; - version = "7"; - - src = fetchurl { - url = "http://retrocdn.net/images/6/6d/Gens-gs-r${version}.tar.gz"; - sha256 = "1ha5s6d3y7s9aq9f4zmn9p88109c3mrj36z2w68jhiw5xrxws833"; - }; - - nativeBuildInputs = [ pkg-config ]; - buildInputs = [ - gtk2 - SDL - nasm - zlib - libpng - libGLU - libGL - ]; - - # Work around build failures on recent GTK. - # See http://ubuntuforums.org/showthread.php?p=10535837 - env.NIX_CFLAGS_COMPILE = "-UGTK_DISABLE_DEPRECATED -UGSEAL_ENABLE"; - - meta = with lib; { - homepage = "https://segaretro.org/Gens/GS"; - description = "Genesis/Mega Drive emulator"; - platforms = [ "i686-linux" ]; - license = licenses.gpl2Plus; - maintainers = [ ]; - }; -} diff --git a/pkgs/top-level/aliases.nix b/pkgs/top-level/aliases.nix index fc47f1566450..b01b5778cd1f 100644 --- a/pkgs/top-level/aliases.nix +++ b/pkgs/top-level/aliases.nix @@ -601,6 +601,7 @@ mapAliases { gdc11 = throw "gdc11 has been removed from Nixpkgs, as it is unmaintained and obsolete"; # Added 2025-08-08 gdc = throw "gdc has been removed from Nixpkgs, as recent versions require complex bootstrapping"; # Added 2025-08-08 gdmd = throw "gdmd has been removed from Nixpkgs, as it depends on GDC which was removed"; # Added 2025-08-08 + gensgs = throw "gensgs has been removed as it was unmaintained, abandoned upstream since 2009 and relied on gtk2"; # Added 2025-10-29 geos_3_9 = throw "geos_3_9 has been removed from nixpkgs. Please use a more recent 'geos' instead."; # Added 2025-09-21 gfortran9 = throw "gfortran9 has been removed from Nixpkgs, as it is unmaintained and obsolete"; # Added 2025-08-08 gfortran10 = throw "gfortran10 has been removed from Nixpkgs, as it is unmaintained and obsolete"; # Added 2025-08-08 diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index f38323f85cb8..4830380ac5be 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -1326,8 +1326,6 @@ with pkgs; gcdemu = callPackage ../applications/emulators/cdemu/gui.nix { }; - gensgs = pkgsi686Linux.callPackage ../applications/emulators/gens-gs { }; - goldberg-emu = callPackage ../applications/emulators/goldberg-emu { protobuf = protobuf_21; }; From d45cc53ab353baa2e70827c81e459b8ec2bb1627 Mon Sep 17 00:00:00 2001 From: "Peter H. Hoeg" Date: Thu, 30 Oct 2025 22:01:02 +0100 Subject: [PATCH 02/38] haruna: 1.4.0 -> 1.6.0 --- pkgs/by-name/ha/haruna/package.nix | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/pkgs/by-name/ha/haruna/package.nix b/pkgs/by-name/ha/haruna/package.nix index 467a6427dbeb..9da98a615246 100644 --- a/pkgs/by-name/ha/haruna/package.nix +++ b/pkgs/by-name/ha/haruna/package.nix @@ -4,21 +4,23 @@ fetchFromGitLab, cmake, ffmpeg-headless, + kdsingleapplication, + libass, kdePackages, pkg-config, qt6, yt-dlp, }: -stdenv.mkDerivation rec { +stdenv.mkDerivation (finalAttrs: { pname = "haruna"; - version = "1.4.0"; + version = "1.6.0"; src = fetchFromGitLab { owner = "multimedia"; repo = "haruna"; - rev = "v${version}"; - hash = "sha256-7983qZ7c3i8Ilyvu36t02zeIcVO96PXGNLH3wq6JsvI="; + rev = "v${finalAttrs.finalPackage.version}"; + hash = "sha256-pAFO6zclJNmHD91ady0vlnBg6ebSWMzJq7TZN/uBGnM="; domain = "invent.kde.org"; }; @@ -34,6 +36,8 @@ stdenv.mkDerivation rec { yt-dlp ffmpeg-headless + kdsingleapplication + libass kdePackages.kconfig kdePackages.kcoreaddons kdePackages.kdeclarative @@ -55,6 +59,8 @@ stdenv.mkDerivation rec { qt6.wrapQtAppsHook ]; + env.LANG = "C.UTF-8"; + meta = { homepage = "https://invent.kde.org/multimedia/haruna"; description = "Open source video player built with Qt/QML and libmpv"; @@ -73,4 +79,4 @@ stdenv.mkDerivation rec { ]; mainProgram = "haruna"; }; -} +}) From 8cf2fa69124bb7a6a03db11b8703c68173f78de4 Mon Sep 17 00:00:00 2001 From: "R. Ryantm" Date: Sun, 2 Nov 2025 00:24:16 +0000 Subject: [PATCH 03/38] lrcsnc: 0.1.0 -> 0.1.1 --- pkgs/by-name/lr/lrcsnc/package.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/by-name/lr/lrcsnc/package.nix b/pkgs/by-name/lr/lrcsnc/package.nix index d2759ad8b7cb..198bb78c6a09 100644 --- a/pkgs/by-name/lr/lrcsnc/package.nix +++ b/pkgs/by-name/lr/lrcsnc/package.nix @@ -7,13 +7,13 @@ buildGoModule (finalAttrs: { pname = "lrcsnc"; - version = "0.1.0"; + version = "0.1.1"; src = fetchFromGitHub { owner = "Endg4meZer0"; repo = "lrcsnc"; tag = "v${finalAttrs.version}"; - hash = "sha256-gKb0cTpCPlyvJFthV1csn8HaVcUvXq+KC+nTT5sGhww="; + hash = "sha256-fXsXRv6h7HfEUhszxSIxv2mnkrm7DLm4Zpw7/beNn2I="; }; vendorHash = "sha256-ww+SXy29woGlb120sj1oGb4MIQJzpBCKGpUKYsYxTMk="; From e61e676f4bfa945bc21f79e5c9251b36aed1e570 Mon Sep 17 00:00:00 2001 From: qzylinra Date: Fri, 24 Oct 2025 11:47:11 +0800 Subject: [PATCH 04/38] flutter338: init at 3.38.0-0.2.pre --- .../flutter/artifacts/fetch-artifacts.nix | 10 +- .../flutter/artifacts/overrides/darwin.nix | 2 +- .../flutter/artifacts/prepare-artifacts.nix | 6 +- .../development/compilers/flutter/default.nix | 12 +- .../compilers/flutter/engine/dart.nix | 5 +- .../compilers/flutter/engine/default.nix | 42 +- .../compilers/flutter/engine/package.nix | 276 +++-- .../compilers/flutter/engine/pkg-config.py | 247 ---- .../compilers/flutter/engine/source.nix | 124 +- .../compilers/flutter/engine/tools.nix | 50 +- .../compilers/flutter/flutter-tools.nix | 12 +- .../development/compilers/flutter/flutter.nix | 47 +- .../compilers/flutter/sdk-symlink.nix | 6 +- .../flutter/update/get-artifact-hashes.nix.in | 40 +- .../flutter/update/get-dart-hashes.nix.in | 23 +- .../flutter/update/get-engine-hashes.nix.in | 41 +- .../flutter/update/get-flutter.nix.in | 2 +- .../flutter/update/get-pubspec-lock.nix.in | 8 +- .../compilers/flutter/versions/3_38/data.json | 1090 +++++++++++++++++ ...deregister-pub-dependencies-artifact.patch | 21 + .../3_38/patches/disable-auto-update.patch | 29 + .../fix-ios-build-xcode-backend-sh.patch | 68 + .../fix-macos-build-macos-assemble-sh.patch | 59 + .../gradle-flutter-tools-wrapper.patch | 220 ++++ .../development/compilers/flutter/wrapper.nix | 10 +- pkgs/top-level/all-packages.nix | 1 + 26 files changed, 1861 insertions(+), 590 deletions(-) delete mode 100644 pkgs/development/compilers/flutter/engine/pkg-config.py create mode 100644 pkgs/development/compilers/flutter/versions/3_38/data.json create mode 100644 pkgs/development/compilers/flutter/versions/3_38/patches/deregister-pub-dependencies-artifact.patch create mode 100644 pkgs/development/compilers/flutter/versions/3_38/patches/disable-auto-update.patch create mode 100644 pkgs/development/compilers/flutter/versions/3_38/patches/fix-ios-build-xcode-backend-sh.patch create mode 100644 pkgs/development/compilers/flutter/versions/3_38/patches/fix-macos-build-macos-assemble-sh.patch create mode 100644 pkgs/development/compilers/flutter/versions/3_38/patches/gradle-flutter-tools-wrapper.patch diff --git a/pkgs/development/compilers/flutter/artifacts/fetch-artifacts.nix b/pkgs/development/compilers/flutter/artifacts/fetch-artifacts.nix index 2b15b448538c..e7a9cfc9be13 100644 --- a/pkgs/development/compilers/flutter/artifacts/fetch-artifacts.nix +++ b/pkgs/development/compilers/flutter/artifacts/fetch-artifacts.nix @@ -71,7 +71,7 @@ runCommand "flutter-artifacts-${flutterPlatform}-${systemPlatform}" '' export FLUTTER_ROOT="$NIX_BUILD_TOP" lndir -silent '${flutter'}' "$FLUTTER_ROOT" - rm -rf "$FLUTTER_ROOT/bin/cache" + rm --recursive --force "$FLUTTER_ROOT/bin/cache" mkdir "$FLUTTER_ROOT/bin/cache" '' + lib.optionalString (lib.versionAtLeast flutter'.version "3.26") '' @@ -89,18 +89,18 @@ runCommand "flutter-artifacts-${flutterPlatform}-${systemPlatform}" flutter ? engine && flutter.engine.meta.available ) "--local-engine ${flutter.engine.outName}" } \ - -v '--${flutterPlatform}' ${ + --verbose '--${flutterPlatform}' ${ builtins.concatStringsSep " " (map (p: "'--no-${p}'") (lib.remove flutterPlatform flutterPlatforms)) } - rm -rf "$FLUTTER_ROOT/bin/cache/lockfile" + rm --recursive --force "$FLUTTER_ROOT/bin/cache/lockfile" '' + lib.optionalString (lib.versionAtLeast flutter'.version "3.26") '' - rm -rf "$FLUTTER_ROOT/bin/cache/dart-sdk" + rm --recursive --force "$FLUTTER_ROOT/bin/cache/dart-sdk" '' + '' find "$FLUTTER_ROOT" -type l -lname '${flutter'}/*' -delete - cp -r bin/cache "$out" + cp --recursive bin/cache "$out" '' ) diff --git a/pkgs/development/compilers/flutter/artifacts/overrides/darwin.nix b/pkgs/development/compilers/flutter/artifacts/overrides/darwin.nix index 0a79a707bbaa..dbdd81ba596a 100644 --- a/pkgs/development/compilers/flutter/artifacts/overrides/darwin.nix +++ b/pkgs/development/compilers/flutter/artifacts/overrides/darwin.nix @@ -4,9 +4,9 @@ ... }: { + # Use arm64 instead of arm64e. postPatch = '' if [ "$pname" == "flutter-tools" ]; then - # Use arm64 instead of arm64e. substituteInPlace lib/src/ios/xcodeproj.dart \ --replace-fail arm64e arm64 fi diff --git a/pkgs/development/compilers/flutter/artifacts/prepare-artifacts.nix b/pkgs/development/compilers/flutter/artifacts/prepare-artifacts.nix index a98fa1ff0487..64eb4072d24e 100644 --- a/pkgs/development/compilers/flutter/artifacts/prepare-artifacts.nix +++ b/pkgs/development/compilers/flutter/artifacts/prepare-artifacts.nix @@ -15,9 +15,9 @@ installPhase = '' runHook preInstall - mkdir -p "$out/bin" - cp -r . "$out/bin/cache" - rm -f "$out/bin/cache/flutter.version.json" + mkdir --parents "$out/bin" + cp --recursive . "$out/bin/cache" + rm --force "$out/bin/cache/flutter.version.json" runHook postInstall ''; diff --git a/pkgs/development/compilers/flutter/default.nix b/pkgs/development/compilers/flutter/default.nix index 32e7581df049..1b3cd7eecfce 100644 --- a/pkgs/development/compilers/flutter/default.nix +++ b/pkgs/development/compilers/flutter/default.nix @@ -54,19 +54,19 @@ let sources = { "${dartVersion}-x86_64-linux" = fetchzip { url = "https://storage.googleapis.com/dart-archive/channels/${channel}/release/${dartVersion}/sdk/dartsdk-linux-x64-release.zip"; - sha256 = dartHash.x86_64-linux; + hash = dartHash.x86_64-linux; }; "${dartVersion}-aarch64-linux" = fetchzip { url = "https://storage.googleapis.com/dart-archive/channels/${channel}/release/${dartVersion}/sdk/dartsdk-linux-arm64-release.zip"; - sha256 = dartHash.aarch64-linux; + hash = dartHash.aarch64-linux; }; "${dartVersion}-x86_64-darwin" = fetchzip { url = "https://storage.googleapis.com/dart-archive/channels/${channel}/release/${dartVersion}/sdk/dartsdk-macos-x64-release.zip"; - sha256 = dartHash.x86_64-darwin; + hash = dartHash.x86_64-darwin; }; "${dartVersion}-aarch64-darwin" = fetchzip { url = "https://storage.googleapis.com/dart-archive/channels/${channel}/release/${dartVersion}/sdk/dartsdk-macos-arm64-release.zip"; - sha256 = dartHash.aarch64-darwin; + hash = dartHash.aarch64-darwin; }; }; }; @@ -75,7 +75,7 @@ let source = fetchFromGitHub { owner = "flutter"; repo = "flutter"; - rev = version; + tag = version; hash = flutterHash; }; in @@ -83,7 +83,7 @@ let if lib.versionAtLeast version "3.32" then # # Could not determine engine revision (runCommand source.name { } '' - cp -r ${source} $out + cp --recursive ${source} $out chmod +w $out/bin mkdir $out/bin/cache cp $out/bin/internal/engine.version $out/bin/cache/engine.stamp diff --git a/pkgs/development/compilers/flutter/engine/dart.nix b/pkgs/development/compilers/flutter/engine/dart.nix index 5d7d126cae02..4846392aa8ba 100644 --- a/pkgs/development/compilers/flutter/engine/dart.nix +++ b/pkgs/development/compilers/flutter/engine/dart.nix @@ -3,13 +3,10 @@ runCommand "flutter-engine-${engine.version}-dart" { version = engine.dartSdkVersion; - inherit engine; - inherit (engine) outName; - meta = engine.meta // { description = "Dart SDK compiled from the Flutter Engine"; }; } '' - ln -s ${engine}/out/$outName/dart-sdk $out + ln --symbolic ${engine}/out/${engine.outName}/dart-sdk $out '' diff --git a/pkgs/development/compilers/flutter/engine/default.nix b/pkgs/development/compilers/flutter/engine/default.nix index 6e90cc916ec7..0821bce822a5 100644 --- a/pkgs/development/compilers/flutter/engine/default.nix +++ b/pkgs/development/compilers/flutter/engine/default.nix @@ -9,12 +9,9 @@ url, patches, runtimeModes, - isOptimized ? null, lib, stdenv, - dart, - mainRuntimeMode ? null, - altRuntimeMode ? null, + ... }@args: let mainRuntimeMode = args.mainRuntimeMode or builtins.elemAt runtimeModes 0; @@ -41,25 +38,16 @@ in stdenv.mkDerivation ( { pname = "flutter-engine"; - inherit url runtimeModes; - inherit (runtimeModesBuilds.${mainRuntimeMode}) - meta - src - version - dartSdkVersion - isOptimized - runtimeMode - outName - dart - swiftshader - ; - inherit altRuntimeMode; + inherit url runtimeModes altRuntimeMode; + inherit (runtimeModesBuilds.${mainRuntimeMode}) version src meta; dontUnpack = true; dontBuild = true; installPhase = '' - mkdir -p $out/out + runHook preInstall + + mkdir --parents $out/out '' + lib.concatMapStrings ( runtimeMode: @@ -68,9 +56,23 @@ stdenv.mkDerivation ( runtimeModeOut = runtimeModeBuild.outName; in '' - ln -sf ${runtimeModeBuild}/out/${runtimeModeOut} $out/out/${runtimeModeOut} + ln --symbolic --force ${runtimeModeBuild}/out/${runtimeModeOut} $out/out/${runtimeModeOut} '' - ) runtimeModes; + ) runtimeModes + + '' + runHook postInstall + ''; + + passthru = { + inherit (runtimeModesBuilds.${mainRuntimeMode}) + dartSdkVersion + isOptimized + runtimeMode + outName + dart + swiftshader + ; + }; } // runtimeModesBuilds ) diff --git a/pkgs/development/compilers/flutter/engine/package.nix b/pkgs/development/compilers/flutter/engine/package.nix index 53438ed9794e..a1e5e73f0338 100644 --- a/pkgs/development/compilers/flutter/engine/package.nix +++ b/pkgs/development/compilers/flutter/engine/package.nix @@ -1,11 +1,12 @@ { lib, callPackage, - writeText, + fetchurl, + bash, + bintools, symlinkJoin, darwin, clang, - llvm, tools ? callPackage ./tools.nix { inherit (stdenv) hostPlatform @@ -13,10 +14,8 @@ ; }, stdenv, - stdenvNoCC, dart, fetchgit, - runCommand, llvmPackages, patchelf, openbox, @@ -49,18 +48,12 @@ isOptimized ? runtimeMode != "debug", }: let - expandSingleDep = - dep: lib.optionals (lib.isDerivation dep) ([ dep ] ++ map (output: dep.${output}) dep.outputs); - - expandDeps = deps: lib.flatten (map expandSingleDep deps); - constants = callPackage ./constants.nix { platform = stdenv.targetPlatform; }; python3 = python312; src = callPackage ./source.nix { inherit - tools flutterVersion version hashes @@ -93,22 +86,11 @@ let outName = "host_${runtimeMode}${lib.optionalString (!isOptimized) "_unopt"}"; - dartPath = "${ - if (lib.versionAtLeast flutterVersion "3.23") then "flutter/third_party" else "third_party" - }/dart"; + dartPath = "flutter/third_party/dart"; in stdenv.mkDerivation (finalAttrs: { pname = "flutter-engine-${runtimeMode}${lib.optionalString (!isOptimized) "-unopt"}"; - inherit - version - runtimeMode - patches - isOptimized - dartSdkVersion - src - outName - swiftshader - ; + inherit version src patches; setOutputFlags = false; doStrip = isOptimized; @@ -117,36 +99,39 @@ stdenv.mkDerivation (finalAttrs: { name = "flutter-engine-toolchain-${version}"; paths = - expandDeps ( - lib.optionals (stdenv.hostPlatform.isLinux) [ - gtk3 - wayland - libepoxy - libglvnd - freetype - at-spi2-atk - glib - gdk-pixbuf - harfbuzz - pango - cairo - xorg.libxcb - xorg.libX11 - xorg.libXcursor - xorg.libXrandr - xorg.libXrender - xorg.libXinerama - xorg.libXi - xorg.libXext - xorg.libXfixes - xorg.libXxf86vm - xorg.xorgproto - zlib - ] - ++ lib.optionals (stdenv.hostPlatform.isDarwin) [ - clang - llvm - ] + lib.flatten ( + map (dep: lib.optionals (lib.isDerivation dep) ([ dep ] ++ map (output: dep.${output}) dep.outputs)) + ( + lib.optionals (stdenv.hostPlatform.isLinux) [ + gtk3 + wayland + libepoxy + libglvnd + freetype + at-spi2-atk + glib + gdk-pixbuf + harfbuzz + pango + cairo + xorg.libxcb + xorg.libX11 + xorg.libXcursor + xorg.libXrandr + xorg.libXrender + xorg.libXinerama + xorg.libXi + xorg.libXext + xorg.libXfixes + xorg.libXxf86vm + xorg.xorgproto + zlib + ] + ++ lib.optionals (stdenv.hostPlatform.isDarwin) [ + clang + llvm + ] + ) ) ++ [ stdenv.cc.libc_dev @@ -156,19 +141,16 @@ stdenv.mkDerivation (finalAttrs: { # Needed due to Flutter expecting everything to be relative to $out # and not true absolute path (ie relative to "/"). postBuild = '' - mkdir -p $(dirname $(dirname "$out/$out")) - ln -s $(dirname "$out") $out/$(dirname "$out") + mkdir --parents $(dirname $(dirname "$out/$out")) + ln --symbolic $(dirname "$out") $out/$(dirname "$out") ''; }; NIX_CFLAGS_COMPILE = [ "-I${finalAttrs.toolchain}/include" + "-Wno-error" ] - ++ lib.optional (!isOptimized) "-U_FORTIFY_SOURCE" - ++ lib.optionals (lib.versionAtLeast flutterVersion "3.35") [ - "-Wno-macro-redefined" - "-Wno-error=macro-redefined" - ]; + ++ lib.optional (!isOptimized) "-U_FORTIFY_SOURCE"; nativeCheckInputs = lib.optionals stdenv.hostPlatform.isLinux [ xorg.xorgserver @@ -195,77 +177,93 @@ stdenv.mkDerivation (finalAttrs: { ] ++ lib.optionals (stdenv.cc.libc ? bin) [ stdenv.cc.libc.bin ]; - buildInputs = [ gtk3 ]; + buildInputs = [ + gtk3 + libepoxy + ]; patchtools = [ "flutter/third_party/gn/gn" ]; dontPatch = true; - patchgit = [ + env.patchgit = toString [ dartPath "flutter" "." - ] - ++ lib.optional (lib.versionAtLeast flutterVersion "3.21") "flutter/third_party/skia"; + "flutter/third_party/skia" + ]; - postUnpack = '' - pushd ${src.name} + sourceRoot = if lib.versionAtLeast flutterVersion "3.38" then "${src.name}/engine" else src.name; - cp ${./pkg-config.py} src/build/config/linux/pkg-config.py + postUnpack = + lib.optionalString (lib.versionAtLeast flutterVersion "3.38") '' + chmod --recursive +w ${src.name} + echo '#!${lib.getExe bash}' > ${src.name}/bin/internal/content_aware_hash.sh + echo 'echo 1111111111111111111111111111111111111111' >> ${src.name}/bin/internal/content_aware_hash.sh + '' + + '' + pushd ${finalAttrs.sourceRoot} - cp -pr --reflink=auto $swiftshader src/flutter/third_party/swiftshader - chmod -R u+w -- src/flutter/third_party/swiftshader + cp ${ + fetchurl { + url = "https://raw.githubusercontent.com/chromium/chromium/631a813125b886a52274653144019fd1681a0e97/build/config/linux/pkg-config.py"; + hash = "sha256-9coRpgCewlkFXSGrMVkudaZUll0IFc9jDRBP+2PloOI="; + } + } src/build/config/linux/pkg-config.py - ln -s ${llvmPackages.llvm.monorepoSrc} src/flutter/third_party/swiftshader/third_party/llvm-project + cp --preserve=mode,ownership,timestamps --recursive --reflink=auto ${swiftshader} src/flutter/third_party/swiftshader + chmod --recursive u+w -- src/flutter/third_party/swiftshader - mkdir -p src/flutter/buildtools/${constants.alt-platform} - ln -s ${llvm} src/flutter/buildtools/${constants.alt-platform}/clang + ln --symbolic ${llvmPackages.llvm.monorepoSrc} src/flutter/third_party/swiftshader/third_party/llvm-project - mkdir -p src/buildtools/${constants.alt-platform} - ln -s ${llvm} src/buildtools/${constants.alt-platform}/clang + mkdir --parents src/flutter/buildtools/${constants.alt-platform} + ln --symbolic ${llvm} src/flutter/buildtools/${constants.alt-platform}/clang - mkdir -p src/${dartPath}/tools/sdks - ln -s ${dart} src/${dartPath}/tools/sdks/dart-sdk + mkdir --parents src/buildtools/${constants.alt-platform} + ln --symbolic ${llvm} src/buildtools/${constants.alt-platform}/clang - ${lib.optionalString (stdenv.hostPlatform.isLinux) '' - for patchtool in ''${patchtools[@]}; do - patchelf src/$patchtool --set-interpreter $(cat $NIX_CC/nix-support/dynamic-linker) + mkdir --parents src/${dartPath}/tools/sdks + ln --symbolic ${dart} src/${dartPath}/tools/sdks/dart-sdk + + ${lib.optionalString (stdenv.hostPlatform.isLinux) '' + for patchtool in ''${patchtools[@]}; do + patchelf src/$patchtool --set-interpreter ${bintools.dynamicLinker} + done + ''} + + for dir in ''${patchgit[@]}; do + pushd src/$dir + rm --recursive --force .git + git init + git add . + git config user.name "nobody" + git config user.email "nobody@local.host" + git commit --all --message="$dir" --quiet + popd + done + + dart src/${dartPath}/tools/generate_package_config.dart + echo "${dartSdkVersion}" >src/${dartPath}/sdk/version + + rm --recursive --force src/third_party/angle/.git + python3 src/flutter/tools/pub_get_offline.py + + pushd src/flutter + + for p in ''${patches[@]}; do + patch -p1 -i $p done - ''} - for dir in ''${patchgit[@]}; do - pushd src/$dir - rm -rf .git - git init - git add . - git config user.name "nobody" - git config user.email "nobody@local.host" - git commit -a -m "$dir" --quiet popd - done - - dart src/${dartPath}/tools/generate_package_config.dart - echo "${dartSdkVersion}" >src/${dartPath}/sdk/version - - rm -rf src/third_party/angle/.git - python3 src/flutter/tools/pub_get_offline.py - - pushd src/flutter - - for p in ''${patches[@]}; do - patch -p1 -i $p - done - - popd - '' - # error: 'close_range' is missing exception specification 'noexcept(true)' - + lib.optionalString (lib.versionAtLeast flutterVersion "3.35") '' - substituteInPlace src/flutter/third_party/dart/runtime/bin/process_linux.cc \ - --replace-fail "(unsigned int first, unsigned int last, int flags)" "(unsigned int first, unsigned int last, int flags) noexcept(true)" - '' - + '' - popd - ''; + '' + # error: 'close_range' is missing exception specification 'noexcept(true)' + + lib.optionalString (lib.versionAtLeast flutterVersion "3.35") '' + substituteInPlace src/flutter/third_party/dart/runtime/bin/process_linux.cc \ + --replace-fail "(unsigned int first, unsigned int last, int flags)" "(unsigned int first, unsigned int last, int flags) noexcept(true)" + '' + + '' + popd + ''; configureFlags = [ "--no-prebuilt-dart-sdk" @@ -281,7 +279,6 @@ stdenv.mkDerivation (finalAttrs: { ++ lib.optional finalAttrs.finalPackage.doCheck "--enable-unittests" ++ lib.optional (!finalAttrs.finalPackage.doCheck) "--no-enable-unittests"; - # NOTE: Once https://github.com/flutter/flutter/issues/127606 is fixed, use "--no-prebuilt-dart-sdk" configurePhase = '' runHook preConfigure @@ -292,12 +289,13 @@ stdenv.mkDerivation (finalAttrs: { '' + '' python3 ./src/flutter/tools/gn $configureFlags \ - --runtime-mode $runtimeMode \ + --runtime-mode ${runtimeMode} \ --out-dir $out \ - --target-sysroot $toolchain \ - --target-dir $outName \ + --target-sysroot ${finalAttrs.toolchain} \ + --target-dir ${outName} \ --target-triple ${stdenv.targetPlatform.config} \ - --enable-fontconfig + --enable-fontconfig \ + --no-prebuilt-dart-sdk runHook postConfigure ''; @@ -306,14 +304,14 @@ stdenv.mkDerivation (finalAttrs: { runHook preBuild export TERM=dumb - - ${lib.optionalString (lib.versionAtLeast flutterVersion "3.29") '' - # ValueError: ZIP does not support timestamps before 1980 - substituteInPlace src/flutter/build/zip.py \ - --replace-fail "zipfile.ZipFile(args.output, 'w', zipfile.ZIP_DEFLATED)" "zipfile.ZipFile(args.output, 'w', zipfile.ZIP_DEFLATED, strict_timestamps=False)" - ''} - - ninja -C $out/out/$outName -j$NIX_BUILD_CORES + '' + # ValueError: ZIP does not support timestamps before 1980 + + lib.optionalString (lib.versionAtLeast flutterVersion "3.29") '' + substituteInPlace src/flutter/build/zip.py \ + --replace-fail "zipfile.ZipFile(args.output, 'w', zipfile.ZIP_DEFLATED)" "zipfile.ZipFile(args.output, 'w', zipfile.ZIP_DEFLATED, strict_timestamps=False)" + '' + + '' + ninja -C $out/out/${outName} -j$NIX_BUILD_CORES runHook postBuild ''; @@ -321,28 +319,39 @@ stdenv.mkDerivation (finalAttrs: { # Tests are broken doCheck = false; checkPhase = '' - ln -s $out/out src/out + runHook preCheck + + ln --symbolic $out/out src/out touch src/out/run_tests.log - sh src/flutter/testing/run_tests.sh $outName + sh src/flutter/testing/run_tests.sh ${outName} rm src/out/run_tests.log + + runHook postCheck ''; installPhase = '' runHook preInstall - rm -rf $out/out/$outName/{obj,exe.unstripped,lib.unstripped,zip_archives} - rm $out/out/$outName/{args.gn,build.ninja,build.ninja.d,compile_commands.json,toolchain.ninja} - find $out/out/$outName -name '*_unittests' -delete - find $out/out/$outName -name '*_benchmarks' -delete + rm -rf $out/out/${outName}/{obj,exe.unstripped,lib.unstripped,zip_archives} + rm $out/out/${outName}/{args.gn,build.ninja,build.ninja.d,compile_commands.json,toolchain.ninja} + find $out/out/${outName} -name '*_unittests' -delete + find $out/out/${outName} -name '*_benchmarks' -delete '' + lib.optionalString (finalAttrs.finalPackage.doCheck) '' - rm $out/out/$outName/{display_list_rendertests,flutter_tester} + rm $out/out/${outName}/{display_list_rendertests,flutter_tester} '' + '' runHook postInstall ''; passthru = { + inherit + dartSdkVersion + isOptimized + runtimeMode + outName + swiftshader + ; dart = callPackage ./dart.nix { engine = finalAttrs.finalPackage; }; }; @@ -359,6 +368,5 @@ stdenv.mkDerivation (finalAttrs: { "x86_64-darwin" "aarch64-darwin" ]; - } - // lib.optionalAttrs (lib.versionOlder flutterVersion "3.22") { hydraPlatforms = [ ]; }; + }; }) diff --git a/pkgs/development/compilers/flutter/engine/pkg-config.py b/pkgs/development/compilers/flutter/engine/pkg-config.py deleted file mode 100644 index 1df08211e570..000000000000 --- a/pkgs/development/compilers/flutter/engine/pkg-config.py +++ /dev/null @@ -1,247 +0,0 @@ -#!/usr/bin/env python3 -# -# Copyright (c) 2013 The Chromium Authors. All rights reserved. -# Use of this source code is governed by a BSD-style license that can be -# found in the LICENSE file. - - - -import json -import os -import subprocess -import sys -import re -from optparse import OptionParser - -# This script runs pkg-config, optionally filtering out some results, and -# returns the result. -# -# The result will be [ , , , , ] -# where each member is itself a list of strings. -# -# You can filter out matches using "-v " where all results from -# pkgconfig matching the given regular expression will be ignored. You can -# specify more than one regular expression my specifying "-v" more than once. -# -# You can specify a sysroot using "-s " where sysroot is the absolute -# system path to the sysroot used for compiling. This script will attempt to -# generate correct paths for the sysroot. -# -# When using a sysroot, you must also specify the architecture via -# "-a " where arch is either "x86" or "x64". -# -# CrOS systemroots place pkgconfig files at /usr/share/pkgconfig -# and one of /usr/lib/pkgconfig or /usr/lib64/pkgconfig -# depending on whether the systemroot is for a 32 or 64 bit architecture. They -# specify the 'lib' or 'lib64' of the pkgconfig path by defining the -# 'system_libdir' variable in the args.gn file. pkg_config.gni communicates this -# variable to this script with the "--system_libdir " flag. If no -# flag is provided, then pkgconfig files are assumed to come from -# /usr/lib/pkgconfig. -# -# Additionally, you can specify the option --atleast-version. This will skip -# the normal outputting of a dictionary and instead print true or false, -# depending on the return value of pkg-config for the given package. - - -def SetConfigPath(options): - """Set the PKG_CONFIG_LIBDIR environment variable. - - This takes into account any sysroot and architecture specification from the - options on the given command line. - """ - - sysroot = options.sysroot - assert sysroot - - # Compute the library path name based on the architecture. - arch = options.arch - if sysroot and not arch: - print("You must specify an architecture via -a if using a sysroot.") - sys.exit(1) - - libdir = sysroot + '/' + options.system_libdir + '/pkgconfig' - libdir += ':' + sysroot + '/share/pkgconfig' - os.environ['PKG_CONFIG_LIBDIR'] = libdir - return libdir - - -def GetPkgConfigPrefixToStrip(options, args): - """Returns the prefix from pkg-config where packages are installed. - - This returned prefix is the one that should be stripped from the beginning of - directory names to take into account sysroots. - """ - # Some sysroots, like the Chromium OS ones, may generate paths that are not - # relative to the sysroot. For example, - # /path/to/chroot/build/x86-generic/usr/lib/pkgconfig/pkg.pc may have all - # paths relative to /path/to/chroot (i.e. prefix=/build/x86-generic/usr) - # instead of relative to /path/to/chroot/build/x86-generic (i.e prefix=/usr). - # To support this correctly, it's necessary to extract the prefix to strip - # from pkg-config's |prefix| variable. - prefix = subprocess.check_output([options.pkg_config, - "--variable=prefix"] + args, env=os.environ).decode('utf-8') - return prefix - - -def MatchesAnyRegexp(flag, list_of_regexps): - """Returns true if the first argument matches any regular expression in the - given list.""" - for regexp in list_of_regexps: - if regexp.search(flag) != None: - return True - return False - - -def RewritePath(path, strip_prefix, sysroot): - """Rewrites a path by stripping the prefix and prepending the sysroot.""" - if os.path.isabs(path) and not path.startswith(sysroot): - if path.startswith(strip_prefix): - path = path[len(strip_prefix):] - path = path.lstrip('/') - return os.path.join(sysroot, path) - else: - return path - - -def main(): - # If this is run on non-Linux platforms, just return nothing and indicate - # success. This allows us to "kind of emulate" a Linux build from other - # platforms. - if "linux" not in sys.platform: - print("[[],[],[],[],[]]") - return 0 - - parser = OptionParser() - parser.add_option('-d', '--debug', action='store_true') - parser.add_option('-p', action='store', dest='pkg_config', type='string', - default='pkg-config') - parser.add_option('-v', action='append', dest='strip_out', type='string') - parser.add_option('-s', action='store', dest='sysroot', type='string') - parser.add_option('-a', action='store', dest='arch', type='string') - parser.add_option('--system_libdir', action='store', dest='system_libdir', - type='string', default='lib') - parser.add_option('--atleast-version', action='store', - dest='atleast_version', type='string') - parser.add_option('--libdir', action='store_true', dest='libdir') - parser.add_option('--dridriverdir', action='store_true', dest='dridriverdir') - parser.add_option('--version-as-components', action='store_true', - dest='version_as_components') - (options, args) = parser.parse_args() - - # Make a list of regular expressions to strip out. - strip_out = [] - if options.strip_out != None: - for regexp in options.strip_out: - strip_out.append(re.compile(regexp)) - - if options.sysroot: - libdir = SetConfigPath(options) - if options.debug: - sys.stderr.write('PKG_CONFIG_LIBDIR=%s\n' % libdir) - prefix = GetPkgConfigPrefixToStrip(options, args) - else: - prefix = '' - - if options.atleast_version: - # When asking for the return value, just run pkg-config and print the return - # value, no need to do other work. - if not subprocess.call([options.pkg_config, - "--atleast-version=" + options.atleast_version] + - args): - print("true") - else: - print("false") - return 0 - - if options.version_as_components: - cmd = [options.pkg_config, "--modversion"] + args - try: - version_string = subprocess.check_output(cmd).decode('utf-8') - except: - sys.stderr.write('Error from pkg-config.\n') - return 1 - print(json.dumps(list(map(int, version_string.strip().split("."))))) - return 0 - - - if options.libdir: - cmd = [options.pkg_config, "--variable=libdir"] + args - if options.debug: - sys.stderr.write('Running: %s\n' % cmd) - try: - libdir = subprocess.check_output(cmd).decode('utf-8') - except: - print("Error from pkg-config.") - return 1 - sys.stdout.write(libdir.strip()) - return 0 - - if options.dridriverdir: - cmd = [options.pkg_config, "--variable=dridriverdir"] + args - if options.debug: - sys.stderr.write('Running: %s\n' % cmd) - try: - dridriverdir = subprocess.check_output(cmd).decode('utf-8') - except: - print("Error from pkg-config.") - return 1 - sys.stdout.write(dridriverdir.strip()) - return - - cmd = [options.pkg_config, "--cflags", "--libs"] + args - if options.debug: - sys.stderr.write('Running: %s\n' % ' '.join(cmd)) - - try: - flag_string = subprocess.check_output(cmd).decode('utf-8') - except: - sys.stderr.write('Could not run pkg-config.\n') - return 1 - - # For now just split on spaces to get the args out. This will break if - # pkgconfig returns quoted things with spaces in them, but that doesn't seem - # to happen in practice. - all_flags = flag_string.strip().split(' ') - - - sysroot = options.sysroot - if not sysroot: - sysroot = '' - - includes = [] - cflags = [] - libs = [] - lib_dirs = [] - - for flag in all_flags[:]: - if len(flag) == 0 or MatchesAnyRegexp(flag, strip_out): - continue; - - if flag[:2] == '-l': - libs.append(RewritePath(flag[2:], prefix, sysroot)) - elif flag[:2] == '-L': - lib_dirs.append(RewritePath(flag[2:], prefix, sysroot)) - elif flag[:2] == '-I': - includes.append(RewritePath(flag[2:], prefix, sysroot)) - elif flag[:3] == '-Wl': - # Don't allow libraries to control ld flags. These should be specified - # only in build files. - pass - elif flag == '-pthread': - # Many libs specify "-pthread" which we don't need since we always include - # this anyway. Removing it here prevents a bunch of duplicate inclusions - # on the command line. - pass - else: - cflags.append(flag) - - # Output a GN array, the first one is the cflags, the second are the libs. The - # JSON formatter prints GN compatible lists when everything is a list of - # strings. - print(json.dumps([includes, cflags, libs, lib_dirs])) - return 0 - - -if __name__ == '__main__': - sys.exit(main()) diff --git a/pkgs/development/compilers/flutter/engine/source.nix b/pkgs/development/compilers/flutter/engine/source.nix index 989953ce9d1f..acaa5b8be747 100644 --- a/pkgs/development/compilers/flutter/engine/source.nix +++ b/pkgs/development/compilers/flutter/engine/source.nix @@ -1,12 +1,10 @@ { lib, callPackage, - fetchgit, - tools ? null, - curl, + curlMinimal, pkg-config, - git, - python3, + gitMinimal, + python312, runCommand, writeText, cacert, @@ -17,6 +15,7 @@ hostPlatform, targetPlatform, buildPlatform, + ... }@pkgs: let target-constants = callPackage ./constants.nix { platform = targetPlatform; }; @@ -24,20 +23,46 @@ let tools = pkgs.tools or (callPackage ./tools.nix { inherit hostPlatform buildPlatform; }); boolOption = value: if value then "True" else "False"; + + gclient = writeText "flutter-engine-${version}.gclient" '' + solutions = [{ + "managed": False, + "name": "${lib.optionalString (lib.versionAtLeast flutterVersion "3.29") "engine/"}src/flutter", + "url": "${url}", + "custom_vars": { + "download_fuchsia_deps": False, + "download_android_deps": False, + "download_linux_deps": ${boolOption targetPlatform.isLinux}, + "setup_githooks": False, + "download_esbuild": False, + "download_dart_sdk": False, + "host_cpu": "${build-constants.alt-arch}", + "host_os": "${build-constants.alt-os}", + }, + }] + + target_os_only = True + target_os = [ + "${target-constants.alt-os}" + ] + + target_cpu_only = True + target_cpu = [ + "${target-constants.alt-arch}" + ] + ''; in runCommand "flutter-engine-source-${version}-${buildPlatform.system}-${targetPlatform.system}" { pname = "flutter-engine-source"; inherit version; - inherit (tools) depot_tools; - nativeBuildInputs = [ - curl + curlMinimal pkg-config - git + gitMinimal tools.cipd - (python3.withPackages ( + (python312.withPackages ( ps: with ps; [ httplib2 six @@ -45,40 +70,14 @@ runCommand "flutter-engine-source-${version}-${buildPlatform.system}-${targetPla )) ]; - gclient = writeText "flutter-engine-${version}.gclient" '' - solutions = [{ - "managed": False, - "name": "${lib.optionalString (lib.versionAtLeast flutterVersion "3.29") "engine/"}src/flutter", - "url": "${url}", - "custom_vars": { - "download_fuchsia_deps": False, - "download_android_deps": False, - "download_linux_deps": ${boolOption targetPlatform.isLinux}, - "setup_githooks": False, - "download_esbuild": False, - "download_dart_sdk": False, - "host_cpu": "${build-constants.alt-arch}", - "host_os": "${build-constants.alt-os}", - }, - }] - - target_os_only = True - target_os = [ - "${target-constants.alt-os}" - ] - - target_cpu_only = True - target_cpu = [ - "${target-constants.alt-arch}" - ] - ''; - - NIX_SSL_CERT_FILE = "${cacert}/etc/ssl/certs/ca-bundle.crt"; - GIT_SSL_CAINFO = "${cacert}/etc/ssl/certs/ca-bundle.crt"; - SSL_CERT_FILE = "${cacert}/etc/ssl/certs/ca-bundle.crt"; - DEPOT_TOOLS_UPDATE = "0"; - DEPOT_TOOLS_COLLECT_METRICS = "0"; - PYTHONDONTWRITEBYTECODE = "1"; + env = { + NIX_SSL_CERT_FILE = "${cacert}/etc/ssl/certs/ca-bundle.crt"; + GIT_SSL_CAINFO = "${cacert}/etc/ssl/certs/ca-bundle.crt"; + SSL_CERT_FILE = "${cacert}/etc/ssl/certs/ca-bundle.crt"; + DEPOT_TOOLS_UPDATE = "0"; + DEPOT_TOOLS_COLLECT_METRICS = "0"; + PYTHONDONTWRITEBYTECODE = "1"; + }; outputHashAlgo = "sha256"; outputHashMode = "recursive"; @@ -96,34 +95,41 @@ runCommand "flutter-engine-source-${version}-${buildPlatform.system}-${targetPla + ( if lib.versionAtLeast flutterVersion "3.29" then '' - mkdir -p source - cp $gclient source/.gclient + mkdir --parents source + cp ${gclient} source/.gclient cd source '' else '' - mkdir -p $out - cp $gclient $out/.gclient + mkdir --parents $out + cp ${gclient} $out/.gclient cd $out '' ) + '' - - export PATH=$PATH:$depot_tools - python3 $depot_tools/gclient.py sync --no-history --shallow --nohooks -j $NIX_BUILD_CORES + export PATH=$PATH:${tools.depot_tools} + python3 ${tools.depot_tools}/gclient.py sync --no-history --shallow --nohooks -j $NIX_BUILD_CORES '' + lib.optionalString (lib.versionAtLeast flutterVersion "3.29") '' - cp -r engine/src/flutter/third_party/* engine/src/flutter/engine/src/flutter/third_party/ - mv engine/src/flutter/engine $out + cp --recursive engine/src/flutter/third_party/* engine/src/flutter/engine/src/flutter/third_party/ + ${ + if (lib.versionAtLeast flutterVersion "3.38") then + "mv engine/src/flutter $out" + else + "mv engine/src/flutter/engine $out" + } '' + '' - find $out -name '.git' -exec rm -rf {} \; || true + ${if (lib.versionAtLeast flutterVersion "3.38") then "pushd $out/engine" else "pushd $out"} + find $out -name '.git' -exec rm --recursive --force {} \; || true - rm -rf $out/src/{buildtools,fuchsia} - rm -rf $out/src/flutter/{buildtools,prebuilts,third_party/swiftshader,third_party/gn/.versions} - rm -rf $out/src/flutter/{third_party/dart/tools/sdks/dart-sdk,third_party/ninja/ninja,third_party/java} - rm -rf $out/src/third_party/{dart/tools/sdks/dart-sdk,libcxx/test} + rm --recursive --force src/{buildtools,fuchsia} + rm --recursive --force src/flutter/{buildtools,prebuilts,third_party/swiftshader,third_party/gn/.versions} + rm --recursive --force src/flutter/{third_party/dart/tools/sdks/dart-sdk,third_party/ninja/ninja,third_party/java} + rm --recursive --force src/third_party/{dart/tools/sdks/dart-sdk,libcxx/test} - rm -rf $out/.cipd $out/.gclient $out/.gclient_entries $out/.gclient_previous_custom_vars $out/.gclient_previous_sync_commits + rm --recursive --force .cipd .gclient .gclient_entries .gclient_previous_custom_vars .gclient_previous_sync_commits + + popd '' ) diff --git a/pkgs/development/compilers/flutter/engine/tools.nix b/pkgs/development/compilers/flutter/engine/tools.nix index 4baf34b201f7..d0f0c1148754 100644 --- a/pkgs/development/compilers/flutter/engine/tools.nix +++ b/pkgs/development/compilers/flutter/engine/tools.nix @@ -9,25 +9,28 @@ runCommand, darwin, writeShellScriptBin, - depot_toolsCommit ? "7d95eb2eb054447592585c73a8ff7adad97ecba1", - depot_toolsHash ? "sha256-F7KDuVg11qLKkohIjuXpNdxpnSsT6Z3hE9+wFIG2sSk=", - cipdCommit ? "89ada246fcbf10f330011e4991d017332af2365b", + depot_toolsCommit ? "580b4ff3f5cd0dcaa2eacda28cefe0f45320e8f7", + depot_toolsHash ? "sha256-k+XQSYJQYc9vAUjwrRxaAlX/sK74W45m5byS31hSpwc=", + cipdCommit ? "7120a6a515089a3ff5d1f61ff4ee17750dc038af", cipdHashes ? { - "linux-386" = "7f264198598af2ef9d8878349d33c1940f1f3739e46d986962c352ec4cce2690"; - "linux-amd64" = "2ada6b46ad1cd1350522c5c05899d273f5c894c7665e30104e7f57084a5aeeb9"; - "linux-arm64" = "96eca7e49f6732c50122b94b793c3a5e62ed77bce1686787a8334906791b4168"; - "linux-armv6l" = "06394601130652c5e1b055a7e4605c21fc7c6643af0b3b3cac8d2691491afa81"; - "linux-mips64" = "f3eda6542b381b7aa8f582698498b0e197972c894590ec35f18faa467c868f5c"; - "linux-mips64le" = "74229ada8e2afd9c8e7c58991126869b2880547780d4a197a27c1dfa96851622"; - "linux-mipsle" = "2f3c18ec0ad48cd44a9ff39bb60e9afded83ca43fb9c7a5ea9949f6fdd4e1394"; - "linux-ppc64" = "79425c0795fb8ba12b39a8856bf7ccb853e85def4317aa6413222f307d4c2dbd"; - "linux-ppc64le" = "f9b3d85dde70f1b78cd7a41d2477834c15ac713a59317490a4cdac9f8f092325"; - "linux-riscv64" = "bd695164563a66e8d3799e8835f90a398fbae9a4eec24e876c92d5f213943482"; - "linux-s390x" = "6f501af80541e733fda23b4208a21ea05919c95d236036a2121e6b6334a2792c"; - "macos-amd64" = "41d05580c0014912d6c32619c720646fd136e4557c9c7d7571ecc8c0462733a1"; - "macos-arm64" = "dc672bd16d9faf277dd562f1dc00644b10c03c5d838d3cc3d3ea29925d76d931"; - "windows-386" = "fa6ed0022a38ffc51ff8a927e3947fe7e59a64b2019dcddca9d3afacf7630444"; - "windows-amd64" = "b5423e4b4429837f7fe4d571ce99c068aa0ccb37ddbebc1978a423fd2b0086df"; + "linux-386" = "sha256-CshLfw49uglvWNwWE4K7ucBUF+IZlXDaIQsTXtFEJ8U="; + "linux-amd64" = "sha256-rxpI+HqfZiOYvzyyQ9P93s70feDmrLgbm4Xh3o88LwQ="; + "linux-arm64" = "sha256-XTTKbw1Q2lin+pf7VADalpBy3AWMTEd7yItsE/pePxw="; + "linux-armv6l" = "sha256-e5qe2KcguRLPuAq6wOG7A3YghHHon+oHY3fRLhU+e9E="; + "linux-loong64" = "sha256-LPTK4Ly173jac+cSGrsWw0ajrWEYepeJDGtP/7Xh528="; + "linux-mips" = "sha256-nR5khvHbAijs0MEr8+UgbuHTRNQAsMOyGTU/DI3K5Os="; + "linux-mips64" = "sha256-4a/zD1CrC/sxtBHqSRpom0SYVoN38bz3FAM40OSdVI0="; + "linux-mips64le" = "sha256-JnfKuBGLHYNLnRieS0KV8sYaTjh2rbp1yijvNOrU0FE="; + "linux-mipsle" = "sha256-nWqoay8c4faRk2+G5TvwbsbnndjTU4oglOTfhSC+TLQ="; + "linux-ppc64" = "sha256-pjeI/bx0i+QchQLhNB88ACPI34SrFvvFA01F5Nb16Ys="; + "linux-ppc64le" = "sha256-ZDMDwrP1zYlOI1hdbd3iZwKr59v/8CWj2sZ1RdosAiE="; + "linux-riscv64" = "sha256-O2EvOnjwbNssB7FtbK44yFcXfkrh9HOsPs/HF+uD2m8="; + "linux-s390x" = "sha256-BKeNDtuc9IkmV4GpuZcdsGc2F039KQeLdozxh7u+FDw="; + "mac-amd64" = "sha256-ZKBm8PbKjg4t0jIBPRKAv85L8eZOwJ1wBvh3cRSqHOI="; + "mac-arm64" = "sha256-AvjJp7JF05CetYDnwNJneAsotm1vBHWqB/vCdcIohoU="; + "windows-386" = "sha256-AVLbWh+WtJKynFDS6IfhuvYudw4Ow9s6w2JyDWG/2CI="; + "windows-amd64" = "sha256-puAQhiPGuwzkElWiBdTRGWOaUR2AIP7Qv9S3pwEY74E="; + "windows-arm64" = "sha256-4wxOMG+zvkM7gjhAiQvvNqNS0AamKKJdaBM/+rRxgXk="; }, }: let @@ -50,12 +53,12 @@ in src = fetchurl { name = "cipd-${cipdCommit}-unwrapped"; url = "https://chrome-infra-packages.appspot.com/client?platform=${stdenv-constants.platform}&version=git_revision:${cipdCommit}"; - sha256 = cipdHashes.${stdenv-constants.platform}; + hash = cipdHashes.${stdenv-constants.platform}; }; } '' - mkdir -p $out/bin - install -m755 $src $out/bin/cipd + mkdir --parents $out/bin + install --mode=0755 $src $out/bin/cipd ''; in writeShellScriptBin "cipd" '' @@ -89,7 +92,10 @@ in vpython = pythonPkg: - runCommand "vpython3" { } "mkdir -p $out/bin && ln -s ${pythonPkg}/bin/python $out/bin/vpython3"; + runCommand "vpython3" { } '' + mkdir --parents $out/bin + ln --symbolic ${pythonPkg}/bin/python $out/bin/vpython3 + ''; xcode-select = writeShellScriptBin "xcode-select" '' echo ${darwin.xcode}/Contents/Developer diff --git a/pkgs/development/compilers/flutter/flutter-tools.nix b/pkgs/development/compilers/flutter/flutter-tools.nix index 00db44021a8c..e99b347c69af 100644 --- a/pkgs/development/compilers/flutter/flutter-tools.nix +++ b/pkgs/development/compilers/flutter/flutter-tools.nix @@ -37,11 +37,13 @@ buildDartApplication.override { inherit dart; } { src = flutterSrc; sourceRoot = "${flutterSrc.name}/packages/flutter_tools"; - postUnpack = ''chmod -R u+w "$NIX_BUILD_TOP/source"''; inherit patches; # The given patches are made for the entire SDK source tree. - prePatch = ''pushd "$NIX_BUILD_TOP/source"''; + prePatch = '' + chmod --recursive u+w "../.." + pushd "../.." + ''; postPatch = '' popd '' @@ -66,9 +68,9 @@ buildDartApplication.override { inherit dart; } { ]; preConfigure = '' export HOME=. - export FLUTTER_ROOT="$NIX_BUILD_TOP/source" - mkdir -p "$FLUTTER_ROOT/bin/cache" - ln -s '${dart}' "$FLUTTER_ROOT/bin/cache/dart-sdk" + export FLUTTER_ROOT="$(realpath ../../)" + mkdir --parents "$FLUTTER_ROOT/bin/cache" + ln --symbolic '${dart}' "$FLUTTER_ROOT/bin/cache/dart-sdk" ''; dartCompileFlags = [ "--define=NIX_FLUTTER_HOST_PLATFORM=${systemPlatform}" ]; diff --git a/pkgs/development/compilers/flutter/flutter.nix b/pkgs/development/compilers/flutter/flutter.nix index 328be87053e8..3a5dc51d4fb8 100644 --- a/pkgs/development/compilers/flutter/flutter.nix +++ b/pkgs/development/compilers/flutter/flutter.nix @@ -29,6 +29,7 @@ gitMinimal, which, jq, + writableTmpDirAsHomeHook, flutterTools ? null, }@args: @@ -90,34 +91,38 @@ let ''; buildPhase = '' - # The flutter_tools package tries to run many Git commands. In most - # cases, unexpected output is handled gracefully, but commands are never - # expected to fail completely. A blank repository needs to be created. - rm -rf .git # Remove any existing Git directory - git init -b nixpkgs + runHook preBuild + '' + # The flutter_tools package tries to run many Git commands. In most + # cases, unexpected output is handled gracefully, but commands are never + # expected to fail completely. A blank repository needs to be created. + + '' + rm --recursive --force .git # Remove any existing Git directory + git init --initial-branch=nixpkgs GIT_AUTHOR_NAME=Nixpkgs GIT_COMMITTER_NAME=Nixpkgs \ GIT_AUTHOR_EMAIL= GIT_COMMITTER_EMAIL= \ GIT_AUTHOR_DATE='1/1/1970 00:00:00 +0000' GIT_COMMITTER_DATE='1/1/1970 00:00:00 +0000' \ - git commit --allow-empty -m "Initial commit" + git commit --allow-empty --message="Initial commit" (. '${../../../build-support/fetchgit/deterministic-git}'; make_deterministic_repo .) - - mkdir -p bin/cache + '' + + '' + mkdir --parents bin/cache # Add a flutter_tools artifact stamp, and build a snapshot. # This is the Flutter CLI application. echo "$(git rev-parse HEAD)" > bin/cache/flutter_tools.stamp - ln -s '${flutterTools}/share/flutter_tools.snapshot' bin/cache/flutter_tools.snapshot + ln --symbolic '${flutterTools}/share/flutter_tools.snapshot' bin/cache/flutter_tools.snapshot # Some of flutter_tools's dependencies contain static assets. The # application attempts to read its own package_config.json to find these # assets at runtime. - mkdir -p packages/flutter_tools/.dart_tool - ln -s '${flutterTools.pubcache}/package_config.json' packages/flutter_tools/.dart_tool/package_config.json + mkdir --parents packages/flutter_tools/.dart_tool + ln --symbolic '${flutterTools.pubcache}/package_config.json' packages/flutter_tools/.dart_tool/package_config.json echo -n "${version}" > version cat < bin/cache/flutter.version.json { - "devToolsVersion": "$(cat "${dart}/bin/resources/devtools/version.json" | jq -r .version)", + "devToolsVersion": "$(cat "${dart}/bin/resources/devtools/version.json" | jq --raw-output .version)", "flutterVersion": "${version}", "frameworkVersion": "${version}", "channel": "${channel}", @@ -131,22 +136,24 @@ let # Suppress a small error now that `.gradle`'s location changed. # Location changed because of the patch "gradle-flutter-tools-wrapper.patch". - mkdir -p "$out/packages/flutter_tools/gradle/.gradle" + mkdir --parents "$out/packages/flutter_tools/gradle/.gradle" + + runHook postBuild ''; installPhase = '' runHook preInstall - mkdir -p $out - cp -r . $out - rm -rf $out/bin/cache/dart-sdk - ln -sf ${dart} $out/bin/cache/dart-sdk + mkdir --parents $out + cp --recursive . $out + rm --recursive --force $out/bin/cache/dart-sdk + ln --symbolic --force ${dart} $out/bin/cache/dart-sdk # The regular launchers are designed to download/build/update SDK # components, and are not very useful in Nix. # Replace them with simple links and wrappers. rm "$out/bin"/{dart,flutter} - ln -s "$out/bin/cache/dart-sdk/bin/dart" "$out/bin/dart" + ln --symbolic "$out/bin/cache/dart-sdk/bin/dart" "$out/bin/dart" makeShellWrapper "$out/bin/dart" "$out/bin/flutter" \ --set-default FLUTTER_ROOT "$out" \ --set FLUTTER_ALREADY_LOCKED true \ @@ -158,15 +165,15 @@ let doInstallCheck = true; nativeInstallCheckInputs = [ which + writableTmpDirAsHomeHook ] ++ lib.optionals stdenv.hostPlatform.isDarwin [ darwin.DarwinTools ]; installCheckPhase = '' runHook preInstallCheck - export HOME="$(mktemp -d)" $out/bin/flutter config --android-studio-dir $HOME $out/bin/flutter config --android-sdk $HOME - $out/bin/flutter --version | fgrep -q '${builtins.substring 0 10 engineVersion}' + $out/bin/flutter --version | fgrep --quiet '${builtins.substring 0 10 engineVersion}' runHook postInstallCheck ''; diff --git a/pkgs/development/compilers/flutter/sdk-symlink.nix b/pkgs/development/compilers/flutter/sdk-symlink.nix index c171b7dbd1da..d71bd5d09428 100644 --- a/pkgs/development/compilers/flutter/sdk-symlink.nix +++ b/pkgs/development/compilers/flutter/sdk-symlink.nix @@ -20,7 +20,7 @@ let # symlinkJoin seems to be missing the .git directory for some reason. if [ -d '${flutter.sdk}/.git' ]; then - ln -s '${flutter.sdk}/.git' "$out" + ln --symbolic '${flutter.sdk}/.git' "$out" fi # For iOS/macOS builds, *.xcframework/'s from the pre-built @@ -40,8 +40,8 @@ let # Remove the symlinkJoin .xcframework dir and replace it with a symlink # to the unwrapped .xcframework dir. frameworkDir="$(dirname "$file")" - rm -r "$frameworkDir" - ln -s "$origFrameworkDir" "$frameworkDir" + rm --recursive "$frameworkDir" + ln --symbolic "$origFrameworkDir" "$frameworkDir" done shopt -u globstar ''; diff --git a/pkgs/development/compilers/flutter/update/get-artifact-hashes.nix.in b/pkgs/development/compilers/flutter/update/get-artifact-hashes.nix.in index 73f3b3e1f13e..33693b2bae1b 100644 --- a/pkgs/development/compilers/flutter/update/get-artifact-hashes.nix.in +++ b/pkgs/development/compilers/flutter/update/get-artifact-hashes.nix.in @@ -1,8 +1,8 @@ -{ callPackage -, flutterPackages -, lib -, symlinkJoin -, +{ + callPackage, + flutterPackages, + lib, + symlinkJoin, }: let nixpkgsRoot = "@nixpkgs_root@"; @@ -25,25 +25,21 @@ let "aarch64-darwin" ]; - derivations = - lib.foldl' - ( - acc: flutterPlatform: - acc - ++ (map - (systemPlatform: - callPackage "${nixpkgsRoot}/pkgs/development/compilers/flutter/artifacts/fetch-artifacts.nix" { - flutter = flutterPackages."v${flutterCompactVersion}"; - inherit flutterPlatform; - inherit systemPlatform; - hash = lib.fakeSha256; - }) - systemPlatforms) - ) [ ] - flutterPlatforms; + derivations = lib.foldl' ( + acc: flutterPlatform: + acc + ++ (map ( + systemPlatform: + callPackage "${nixpkgsRoot}/pkgs/development/compilers/flutter/artifacts/fetch-artifacts.nix" { + flutter = flutterPackages."v${flutterCompactVersion}"; + inherit flutterPlatform; + inherit systemPlatform; + hash = lib.fakeSha256; + } + ) systemPlatforms) + ) [ ] flutterPlatforms; in symlinkJoin { name = "evaluate-derivations"; paths = derivations; } - diff --git a/pkgs/development/compilers/flutter/update/get-dart-hashes.nix.in b/pkgs/development/compilers/flutter/update/get-dart-hashes.nix.in index 941a9769a9cb..44291afd59bc 100644 --- a/pkgs/development/compilers/flutter/update/get-dart-hashes.nix.in +++ b/pkgs/development/compilers/flutter/update/get-dart-hashes.nix.in @@ -4,24 +4,29 @@ let channel = "@channel@"; in { - x86_64-linux = { fetchzip }: + x86_64-linux = + { fetchzip }: fetchzip { url = "https://storage.googleapis.com/dart-archive/channels/${channel}/release/${dartVersion}/sdk/dartsdk-linux-x64-release.zip"; - sha256 = "0000000000000000000000000000000000000000000000000000"; + hash = "sha256-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA="; }; - aarch64-linux = { fetchzip }: + aarch64-linux = + { fetchzip }: fetchzip { url = "https://storage.googleapis.com/dart-archive/channels/${channel}/release/${dartVersion}/sdk/dartsdk-linux-arm64-release.zip"; - sha256 = "0000000000000000000000000000000000000000000000000000"; + hash = "sha256-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA="; }; - x86_64-darwin = { fetchzip }: + x86_64-darwin = + { fetchzip }: fetchzip { url = "https://storage.googleapis.com/dart-archive/channels/${channel}/release/${dartVersion}/sdk/dartsdk-macos-x64-release.zip"; - sha256 = "0000000000000000000000000000000000000000000000000000"; + hash = "sha256-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA="; }; - aarch64-darwin = { fetchzip }: + aarch64-darwin = + { fetchzip }: fetchzip { url = "https://storage.googleapis.com/dart-archive/channels/${channel}/release/${dartVersion}/sdk/dartsdk-macos-arm64-release.zip"; - sha256 = "0000000000000000000000000000000000000000000000000000"; + hash = "sha256-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA="; }; -}.${platform} +} +.${platform} diff --git a/pkgs/development/compilers/flutter/update/get-engine-hashes.nix.in b/pkgs/development/compilers/flutter/update/get-engine-hashes.nix.in index 25b200811a00..2e33ae5cd2d1 100644 --- a/pkgs/development/compilers/flutter/update/get-engine-hashes.nix.in +++ b/pkgs/development/compilers/flutter/update/get-engine-hashes.nix.in @@ -1,4 +1,8 @@ -{ callPackage, symlinkJoin, stdenv, lib }: +{ + callPackage, + symlinkJoin, + lib, +}: let nixpkgsRoot = "@nixpkgs_root@"; version = "@flutter_version@"; @@ -9,25 +13,22 @@ let "aarch64-linux" ]; - derivations = - lib.foldl' - ( - acc: buildPlatform: - acc - ++ (map - (targetPlatform: - callPackage "${nixpkgsRoot}/pkgs/development/compilers/flutter/engine/source.nix" { - targetPlatform = lib.systems.elaborate targetPlatform; - hostPlatform = lib.systems.elaborate buildPlatform; - buildPlatform = lib.systems.elaborate buildPlatform; - flutterVersion = version; - version = engineVersion; - url = "https://github.com/flutter/flutter.git@${engineVersion}"; - hashes."${buildPlatform}"."${targetPlatform}" = lib.fakeSha256; - }) - systemPlatforms) - ) [ ] - systemPlatforms; + derivations = lib.foldl' ( + acc: buildPlatform: + acc + ++ (map ( + targetPlatform: + callPackage "${nixpkgsRoot}/pkgs/development/compilers/flutter/engine/source.nix" { + targetPlatform = lib.systems.elaborate targetPlatform; + hostPlatform = lib.systems.elaborate buildPlatform; + buildPlatform = lib.systems.elaborate buildPlatform; + flutterVersion = version; + version = engineVersion; + url = "https://github.com/flutter/flutter.git@${engineVersion}"; + hashes."${buildPlatform}"."${targetPlatform}" = lib.fakeSha256; + } + ) systemPlatforms) + ) [ ] systemPlatforms; in symlinkJoin { name = "evaluate-derivations"; diff --git a/pkgs/development/compilers/flutter/update/get-flutter.nix.in b/pkgs/development/compilers/flutter/update/get-flutter.nix.in index 81680797229b..02d802e026f0 100644 --- a/pkgs/development/compilers/flutter/update/get-flutter.nix.in +++ b/pkgs/development/compilers/flutter/update/get-flutter.nix.in @@ -2,6 +2,6 @@ fetchFromGitHub { owner = "flutter"; repo = "flutter"; - rev = "@flutter_version@"; + tag = "@flutter_version@"; hash = "@hash@"; } diff --git a/pkgs/development/compilers/flutter/update/get-pubspec-lock.nix.in b/pkgs/development/compilers/flutter/update/get-pubspec-lock.nix.in index ff72046bcecb..0060b81c98c6 100644 --- a/pkgs/development/compilers/flutter/update/get-pubspec-lock.nix.in +++ b/pkgs/development/compilers/flutter/update/get-pubspec-lock.nix.in @@ -1,7 +1,7 @@ -{ flutterPackages -, stdenv -, cacert -, +{ + flutterPackages, + stdenv, + cacert, }: let flutterCompactVersion = "@flutter_compact_version@"; diff --git a/pkgs/development/compilers/flutter/versions/3_38/data.json b/pkgs/development/compilers/flutter/versions/3_38/data.json new file mode 100644 index 000000000000..6726942c0678 --- /dev/null +++ b/pkgs/development/compilers/flutter/versions/3_38/data.json @@ -0,0 +1,1090 @@ +{ + "version": "3.38.0-0.2.pre", + "engineVersion": "d7ec7e8064d93a8d8bdd418103ec48cfafbc4841", + "engineSwiftShaderHash": "sha256-ATVcuxqPHqHOWYyO7DoX9LdgUiO3INUi7m9Mc6ccc1M=", + "engineSwiftShaderRev": "d040a5bab638bf7c226235c95787ba6288bb6416", + "channel": "beta", + "engineHashes": { + "aarch64-linux": { + "aarch64-linux": "sha256-rcZdEXo2L388X02qSR/EnvRb/rTSsJjw4E4y0wFzUmk=", + "x86_64-linux": "sha256-rcZdEXo2L388X02qSR/EnvRb/rTSsJjw4E4y0wFzUmk=" + }, + "x86_64-linux": { + "aarch64-linux": "sha256-lfhAF16MxDVeHjqfFE5FsRCTuxdiM9j254gd3/7Ylrc=", + "x86_64-linux": "sha256-lfhAF16MxDVeHjqfFE5FsRCTuxdiM9j254gd3/7Ylrc=" + } + }, + "dartVersion": "3.10.0-290.1.beta", + "dartHash": { + "x86_64-linux": "sha256-ygZTZBUC/ynV8jCIUTYpXU5GoSdo+o+FcNt4RkAvD3I=", + "aarch64-linux": "sha256-l3f1mo2zeB9C9fwAoTrRQEXhe8PCEhbmwT4w14H/ZJ4=", + "x86_64-darwin": "sha256-cLwwRwNvXGkJh0T5rr5jgzbRJXPed2uQzKPhiU0/kXs=", + "aarch64-darwin": "sha256-Iy+cmlBSCTQAMdT3e7Zt1f5p4CGtq/xewMl+gxzcjtM=" + }, + "flutterHash": "sha256-axcR0M1jQjll+D0fQobgHcX98ysGzYN+s3OgdUddmLc=", + "artifactHashes": { + "android": { + "aarch64-darwin": "sha256-IvM7Yxq0bJpkRZTfVvkYltn4kgltNE/7sP7no8Qwv7M=", + "aarch64-linux": "sha256-oTn2X/8UysTArqFc6i5kzdV3s3noJXcd5kigMued34Q=", + "x86_64-darwin": "sha256-IvM7Yxq0bJpkRZTfVvkYltn4kgltNE/7sP7no8Qwv7M=", + "x86_64-linux": "sha256-oTn2X/8UysTArqFc6i5kzdV3s3noJXcd5kigMued34Q=" + }, + "fuchsia": { + "aarch64-darwin": "sha256-C+45buxCUl5kRfl9nFDwDj65HkM4r/Z8tz9F1aqlsHY=", + "aarch64-linux": "sha256-C+45buxCUl5kRfl9nFDwDj65HkM4r/Z8tz9F1aqlsHY=", + "x86_64-darwin": "sha256-C+45buxCUl5kRfl9nFDwDj65HkM4r/Z8tz9F1aqlsHY=", + "x86_64-linux": "sha256-C+45buxCUl5kRfl9nFDwDj65HkM4r/Z8tz9F1aqlsHY=" + }, + "ios": { + "aarch64-darwin": "sha256-fwQ3PSD5fNqqCEMSZ+e9DuGuZ/vZ82Tc+vjBX20aqaQ=", + "aarch64-linux": "sha256-fwQ3PSD5fNqqCEMSZ+e9DuGuZ/vZ82Tc+vjBX20aqaQ=", + "x86_64-darwin": "sha256-fwQ3PSD5fNqqCEMSZ+e9DuGuZ/vZ82Tc+vjBX20aqaQ=", + "x86_64-linux": "sha256-fwQ3PSD5fNqqCEMSZ+e9DuGuZ/vZ82Tc+vjBX20aqaQ=" + }, + "linux": { + "aarch64-darwin": "sha256-9SNHFyTBUicTibXWN7kvFNsI1bZspz7BznwaNd8irwU=", + "aarch64-linux": "sha256-9SNHFyTBUicTibXWN7kvFNsI1bZspz7BznwaNd8irwU=", + "x86_64-darwin": "sha256-cU0tc23FCjz0TsfalcFLFSS3MqeBtIN/H8EMIxcaLos=", + "x86_64-linux": "sha256-cU0tc23FCjz0TsfalcFLFSS3MqeBtIN/H8EMIxcaLos=" + }, + "macos": { + "aarch64-darwin": "sha256-g1ETjdKMk8kR8mM45dkt2sV9tjq+jLZ18tHk1PbCJLA=", + "aarch64-linux": "sha256-g1ETjdKMk8kR8mM45dkt2sV9tjq+jLZ18tHk1PbCJLA=", + "x86_64-darwin": "sha256-g1ETjdKMk8kR8mM45dkt2sV9tjq+jLZ18tHk1PbCJLA=", + "x86_64-linux": "sha256-g1ETjdKMk8kR8mM45dkt2sV9tjq+jLZ18tHk1PbCJLA=" + }, + "universal": { + "aarch64-darwin": "sha256-V3ImxYK12PYaB7zX5FnvCJoiIG6DhzQkflJT/hYi4iw=", + "aarch64-linux": "sha256-iNHp9UGYI6Q8kWbfw6UhgEu80nBBYLboJMou1uzUPtI=", + "x86_64-darwin": "sha256-YMeoAm3HmYnrAcSaAtjoJHRSUDHhMtxdDS5iiGw5YaU=", + "x86_64-linux": "sha256-4otDADLa0HoFsyasQSaoNu018mwSjXDQOiUQUEgxE1g=" + }, + "web": { + "aarch64-darwin": "sha256-jcJNYQGyvYd7fITCUk4PNvuFJsfEbKzkFqcubifILA4=", + "aarch64-linux": "sha256-jcJNYQGyvYd7fITCUk4PNvuFJsfEbKzkFqcubifILA4=", + "x86_64-darwin": "sha256-jcJNYQGyvYd7fITCUk4PNvuFJsfEbKzkFqcubifILA4=", + "x86_64-linux": "sha256-jcJNYQGyvYd7fITCUk4PNvuFJsfEbKzkFqcubifILA4=" + }, + "windows": { + "x86_64-darwin": "sha256-tetSC5y9Zb5tNPR2mm9ukP0cZRmYVdAzVipF7mMAn1U=", + "x86_64-linux": "sha256-tetSC5y9Zb5tNPR2mm9ukP0cZRmYVdAzVipF7mMAn1U=" + } + }, + "pubspecLock": { + "packages": { + "_fe_analyzer_shared": { + "dependency": "direct main", + "description": { + "name": "_fe_analyzer_shared", + "sha256": "dd3d2ad434b9510001d089e8de7556d50c834481b9abc2891a0184a8493a19dc", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "89.0.0" + }, + "analyzer": { + "dependency": "direct main", + "description": { + "name": "analyzer", + "sha256": "c22b6e7726d1f9e5db58c7251606076a71ca0dbcf76116675edfadbec0c9e875", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "8.2.0" + }, + "archive": { + "dependency": "direct main", + "description": { + "name": "archive", + "sha256": "cb6a278ef2dbb298455e1a713bda08524a175630ec643a242c399c932a0a1f7d", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "3.6.1" + }, + "args": { + "dependency": "direct main", + "description": { + "name": "args", + "sha256": "d0481093c50b1da8910eb0bb301626d4d8eb7284aa739614d2b394ee09e3ea04", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "2.7.0" + }, + "async": { + "dependency": "direct main", + "description": { + "name": "async", + "sha256": "758e6d74e971c3e5aceb4110bfd6698efc7f501675bcfe0c775459a8140750eb", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "2.13.0" + }, + "boolean_selector": { + "dependency": "direct main", + "description": { + "name": "boolean_selector", + "sha256": "8aab1771e1243a5063b8b0ff68042d67334e3feab9e95b9490f9a6ebf73b42ea", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "2.1.2" + }, + "browser_launcher": { + "dependency": "direct main", + "description": { + "name": "browser_launcher", + "sha256": "ca2557663d3033845f2ef2b60f94fc249528324fd1affddccb7c63ac0ccd6c67", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.1.3" + }, + "built_collection": { + "dependency": "direct main", + "description": { + "name": "built_collection", + "sha256": "376e3dd27b51ea877c28d525560790aee2e6fbb5f20e2f85d5081027d94e2100", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "5.1.1" + }, + "built_value": { + "dependency": "direct main", + "description": { + "name": "built_value", + "sha256": "a30f0a0e38671e89a492c44d005b5545b830a961575bbd8336d42869ff71066d", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "8.12.0" + }, + "checked_yaml": { + "dependency": "direct dev", + "description": { + "name": "checked_yaml", + "sha256": "959525d3162f249993882720d52b7e0c833978df229be20702b33d48d91de70f", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "2.0.4" + }, + "cli_config": { + "dependency": "direct main", + "description": { + "name": "cli_config", + "sha256": "ac20a183a07002b700f0c25e61b7ee46b23c309d76ab7b7640a028f18e4d99ec", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "0.2.0" + }, + "clock": { + "dependency": "direct main", + "description": { + "name": "clock", + "sha256": "fddb70d9b5277016c77a80201021d40a2247104d9f4aa7bab7157b7e3f05b84b", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.1.2" + }, + "code_assets": { + "dependency": "direct main", + "description": { + "name": "code_assets", + "sha256": "5865a34983367f6884e8311f67d9ae459945b99bad20c0e66484a1aae7feaae0", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "0.19.7" + }, + "code_builder": { + "dependency": "direct main", + "description": { + "name": "code_builder", + "sha256": "11654819532ba94c34de52ff5feb52bd81cba1de00ef2ed622fd50295f9d4243", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "4.11.0" + }, + "collection": { + "dependency": "direct main", + "description": { + "name": "collection", + "sha256": "2f5709ae4d3d59dd8f7cd309b4e023046b57d8a6c82130785d2b0e5868084e76", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.19.1" + }, + "completion": { + "dependency": "direct main", + "description": { + "name": "completion", + "sha256": "82fa09800c0b71a2e8396bf3ca6b36b43cd35fe7ba2aeab53b6349ac671d0f5b", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.0.2" + }, + "convert": { + "dependency": "direct main", + "description": { + "name": "convert", + "sha256": "b30acd5944035672bc15c6b7a8b47d773e41e2f17de064350988c5d02adb1c68", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "3.1.2" + }, + "coverage": { + "dependency": "direct main", + "description": { + "name": "coverage", + "sha256": "5da775aa218eaf2151c721b16c01c7676fbfdd99cebba2bf64e8b807a28ff94d", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.15.0" + }, + "crypto": { + "dependency": "direct main", + "description": { + "name": "crypto", + "sha256": "1e445881f28f22d6140f181e07737b22f1e099a5e1ff94b0af2f9e4a463f4855", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "3.0.6" + }, + "csslib": { + "dependency": "direct main", + "description": { + "name": "csslib", + "sha256": "09bad715f418841f976c77db72d5398dc1253c21fb9c0c7f0b0b985860b2d58e", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.0.2" + }, + "dap": { + "dependency": "direct main", + "description": { + "name": "dap", + "sha256": "42b0b083a09c59a118741769e218fc3738980ab591114f09d1026241d2b9c290", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.4.0" + }, + "dart_service_protocol_shared": { + "dependency": "transitive", + "description": { + "name": "dart_service_protocol_shared", + "sha256": "1737875c176d7e3d87bb3a359182828b542fe20a0b34198b8d31a81af5c7a76d", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "0.0.3" + }, + "dart_style": { + "dependency": "direct main", + "description": { + "name": "dart_style", + "sha256": "c87dfe3d56f183ffe9106a18aebc6db431fc7c98c31a54b952a77f3d54a85697", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "3.1.2" + }, + "data_assets": { + "dependency": "direct main", + "description": { + "name": "data_assets", + "sha256": "ecd2682157e882f17d5653110b835f4885f36379eaef7f21b500af2485a0d6dd", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "0.19.3" + }, + "dds": { + "dependency": "direct main", + "description": { + "name": "dds", + "sha256": "b80c44468f5549867f65c43b0c6ecf0872261e86beb75087ed6c1d7f82e9db22", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "5.0.3" + }, + "dds_service_extensions": { + "dependency": "direct main", + "description": { + "name": "dds_service_extensions", + "sha256": "afe0fce921953ac0c5bb276bccd7e36fa5035d7769567d122523fdd09beb4d03", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "2.1.0" + }, + "devtools_shared": { + "dependency": "direct main", + "description": { + "name": "devtools_shared", + "sha256": "275e48a8a145fa09c7ae433a96fd433c01cc079d39b40acf5ba883236ae2c887", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "12.0.0" + }, + "dtd": { + "dependency": "direct main", + "description": { + "name": "dtd", + "sha256": "09ddb228b3d1478a093556357692a4c203ff4f9d5f8cda05dfdca0ff3fb7c5d3", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "4.0.0" + }, + "dwds": { + "dependency": "direct main", + "description": { + "name": "dwds", + "sha256": "40b2ca48063d593a0a31144beba282b6688e64e3b0e9f5dbe17250fef078f352", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "25.1.0+2" + }, + "extension_discovery": { + "dependency": "direct main", + "description": { + "name": "extension_discovery", + "sha256": "de1fce715ab013cdfb00befc3bdf0914bea5e409c3a567b7f8f144bc061611a7", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "2.1.0" + }, + "fake_async": { + "dependency": "direct main", + "description": { + "name": "fake_async", + "sha256": "5368f224a74523e8d2e7399ea1638b37aecfca824a3cc4dfdf77bf1fa905ac44", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.3.3" + }, + "ffi": { + "dependency": "direct main", + "description": { + "name": "ffi", + "sha256": "289279317b4b16eb2bb7e271abccd4bf84ec9bdcbe999e278a94b804f5630418", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "2.1.4" + }, + "file": { + "dependency": "direct main", + "description": { + "name": "file", + "sha256": "a3b4f84adafef897088c160faf7dfffb7696046cb13ae90b508c2cbc95d3b8d4", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "7.0.1" + }, + "file_testing": { + "dependency": "direct dev", + "description": { + "name": "file_testing", + "sha256": "eb0c85fd118ddc0d41c295c09f64e0924c256b071087cdc9828d5372c80d554d", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "3.0.2" + }, + "fixnum": { + "dependency": "direct main", + "description": { + "name": "fixnum", + "sha256": "b6dc7065e46c974bc7c5f143080a6764ec7a4be6da1285ececdc37be96de53be", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.1.1" + }, + "flutter_template_images": { + "dependency": "direct main", + "description": { + "name": "flutter_template_images", + "sha256": "0120589a786dbae4e86af1f61748baccd8530abd56a60e7a13479647a75222fe", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "5.0.0" + }, + "frontend_server_client": { + "dependency": "direct main", + "description": { + "name": "frontend_server_client", + "sha256": "f64a0333a82f30b0cca061bc3d143813a486dc086b574bfb233b7c1372427694", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "4.0.0" + }, + "glob": { + "dependency": "direct main", + "description": { + "name": "glob", + "sha256": "c3f1ee72c96f8f78935e18aa8cecced9ab132419e8625dc187e1c2408efc20de", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "2.1.3" + }, + "graphs": { + "dependency": "direct main", + "description": { + "name": "graphs", + "sha256": "741bbf84165310a68ff28fe9e727332eef1407342fca52759cb21ad8177bb8d0", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "2.3.2" + }, + "hooks": { + "dependency": "direct main", + "description": { + "name": "hooks", + "sha256": "22abd27b650a571e53576abe732e4d9053aacaaa6dee23e9ff106c63e3e5b96c", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "0.20.1" + }, + "hooks_runner": { + "dependency": "direct main", + "description": { + "name": "hooks_runner", + "sha256": "da70762516f169bedf97978fe142853c4599ff26f48b77167ba0e8158629ec14", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "0.23.0" + }, + "html": { + "dependency": "direct main", + "description": { + "name": "html", + "sha256": "6d1264f2dffa1b1101c25a91dff0dc2daee4c18e87cd8538729773c073dbf602", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "0.15.6" + }, + "http": { + "dependency": "direct main", + "description": { + "name": "http", + "sha256": "bb2ce4590bc2667c96f318d68cac1b5a7987ec819351d32b1c987239a815e007", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.5.0" + }, + "http_multi_server": { + "dependency": "direct main", + "description": { + "name": "http_multi_server", + "sha256": "aa6199f908078bb1c5efb8d8638d4ae191aac11b311132c3ef48ce352fb52ef8", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "3.2.2" + }, + "http_parser": { + "dependency": "direct main", + "description": { + "name": "http_parser", + "sha256": "178d74305e7866013777bab2c3d8726205dc5a4dd935297175b19a23a2e66571", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "4.1.2" + }, + "intl": { + "dependency": "direct main", + "description": { + "name": "intl", + "sha256": "3df61194eb431efc39c4ceba583b95633a403f46c9fd341e550ce0bfa50e9aa5", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "0.20.2" + }, + "io": { + "dependency": "direct main", + "description": { + "name": "io", + "sha256": "dfd5a80599cf0165756e3181807ed3e77daf6dd4137caaad72d0b7931597650b", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.0.5" + }, + "js": { + "dependency": "direct dev", + "description": { + "name": "js", + "sha256": "53385261521cc4a0c4658fd0ad07a7d14591cf8fc33abbceae306ddb974888dc", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "0.7.2" + }, + "json_annotation": { + "dependency": "direct dev", + "description": { + "name": "json_annotation", + "sha256": "1ce844379ca14835a50d2f019a3099f419082cfdd231cd86a142af94dd5c6bb1", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "4.9.0" + }, + "json_rpc_2": { + "dependency": "direct main", + "description": { + "name": "json_rpc_2", + "sha256": "246b321532f0e8e2ba474b4d757eaa558ae4fdd0688fdbc1e1ca9705f9b8ca0e", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "3.0.3" + }, + "logging": { + "dependency": "direct main", + "description": { + "name": "logging", + "sha256": "c8245ada5f1717ed44271ed1c26b8ce85ca3228fd2ffdb75468ab01979309d61", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.3.0" + }, + "matcher": { + "dependency": "direct main", + "description": { + "name": "matcher", + "sha256": "dc58c723c3c24bf8d3e2d3ad3f2f9d7bd9cf43ec6feaa64181775e60190153f2", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "0.12.17" + }, + "meta": { + "dependency": "direct main", + "description": { + "name": "meta", + "sha256": "23f08335362185a5ea2ad3a4e597f1375e78bce8a040df5c600c8d3552ef2394", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.17.0" + }, + "mime": { + "dependency": "direct main", + "description": { + "name": "mime", + "sha256": "41a20518f0cb1256669420fdba0cd90d21561e560ac240f26ef8322e45bb7ed6", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "2.0.0" + }, + "multicast_dns": { + "dependency": "direct main", + "description": { + "name": "multicast_dns", + "sha256": "de72ada5c3db6fdd6ad4ae99452fe05fb403c4bb37c67ceb255ddd37d2b5b1eb", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "0.3.3" + }, + "mustache_template": { + "dependency": "direct main", + "description": { + "name": "mustache_template", + "sha256": "d9aa84d114368b7f1727b7014b85bb0b234daeafe1518824c82d32703b3964f6", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "2.0.1" + }, + "native_stack_traces": { + "dependency": "direct main", + "description": { + "name": "native_stack_traces", + "sha256": "d34cf916db87b14d39465b3e3b4b4a8ee1f304bde6ed7605571e34802e3d6a11", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "0.6.1" + }, + "node_preamble": { + "dependency": "direct dev", + "description": { + "name": "node_preamble", + "sha256": "6e7eac89047ab8a8d26cf16127b5ed26de65209847630400f9aefd7cd5c730db", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "2.0.2" + }, + "package_config": { + "dependency": "direct main", + "description": { + "name": "package_config", + "sha256": "f096c55ebb7deb7e384101542bfba8c52696c1b56fca2eb62827989ef2353bbc", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "2.2.0" + }, + "path": { + "dependency": "direct main", + "description": { + "name": "path", + "sha256": "75cca69d1490965be98c73ceaea117e8a04dd21217b37b292c9ddbec0d955bc5", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.9.1" + }, + "petitparser": { + "dependency": "direct main", + "description": { + "name": "petitparser", + "sha256": "07c8f0b1913bcde1ff0d26e57ace2f3012ccbf2b204e070290dad3bb22797646", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "6.1.0" + }, + "platform": { + "dependency": "direct main", + "description": { + "name": "platform", + "sha256": "5d6b1b0036a5f331ebc77c850ebc8506cbc1e9416c27e59b439f917a902a4984", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "3.1.6" + }, + "pool": { + "dependency": "direct main", + "description": { + "name": "pool", + "sha256": "978783255c543aa3586a1b3c21f6e9d720eb315376a915872c61ef8b5c20177d", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.5.2" + }, + "process": { + "dependency": "direct main", + "description": { + "name": "process", + "sha256": "c6248e4526673988586e8c00bb22a49210c258dc91df5227d5da9748ecf79744", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "5.0.5" + }, + "pub_semver": { + "dependency": "direct main", + "description": { + "name": "pub_semver", + "sha256": "5bfcf68ca79ef689f8990d1160781b4bad40a3bd5e5218ad4076ddb7f4081585", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "2.2.0" + }, + "pubspec_parse": { + "dependency": "direct main", + "description": { + "name": "pubspec_parse", + "sha256": "0560ba233314abbed0a48a2956f7f022cce7c3e1e73df540277da7544cad4082", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.5.0" + }, + "shelf": { + "dependency": "direct main", + "description": { + "name": "shelf", + "sha256": "e7dd780a7ffb623c57850b33f43309312fc863fb6aa3d276a754bb299839ef12", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.4.2" + }, + "shelf_packages_handler": { + "dependency": "direct main", + "description": { + "name": "shelf_packages_handler", + "sha256": "89f967eca29607c933ba9571d838be31d67f53f6e4ee15147d5dc2934fee1b1e", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "3.0.2" + }, + "shelf_proxy": { + "dependency": "direct main", + "description": { + "name": "shelf_proxy", + "sha256": "a71d2307f4393211930c590c3d2c00630f6c5a7a77edc1ef6436dfd85a6a7ee3", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.0.4" + }, + "shelf_static": { + "dependency": "direct main", + "description": { + "name": "shelf_static", + "sha256": "c87c3875f91262785dade62d135760c2c69cb217ac759485334c5857ad89f6e3", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.1.3" + }, + "shelf_web_socket": { + "dependency": "direct main", + "description": { + "name": "shelf_web_socket", + "sha256": "cc36c297b52866d203dbf9332263c94becc2fe0ceaa9681d07b6ef9807023b67", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "2.0.1" + }, + "source_map_stack_trace": { + "dependency": "direct main", + "description": { + "name": "source_map_stack_trace", + "sha256": "c0713a43e323c3302c2abe2a1cc89aa057a387101ebd280371d6a6c9fa68516b", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "2.1.2" + }, + "source_maps": { + "dependency": "direct main", + "description": { + "name": "source_maps", + "sha256": "190222579a448b03896e0ca6eca5998fa810fda630c1d65e2f78b3f638f54812", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "0.10.13" + }, + "source_span": { + "dependency": "direct main", + "description": { + "name": "source_span", + "sha256": "254ee5351d6cb365c859e20ee823c3bb479bf4a293c22d17a9f1bf144ce86f7c", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.10.1" + }, + "sprintf": { + "dependency": "direct main", + "description": { + "name": "sprintf", + "sha256": "1fc9ffe69d4df602376b52949af107d8f5703b77cda567c4d7d86a0693120f23", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "7.0.0" + }, + "sse": { + "dependency": "direct main", + "description": { + "name": "sse", + "sha256": "fcc97470240bb37377f298e2bd816f09fd7216c07928641c0560719f50603643", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "4.1.8" + }, + "stack_trace": { + "dependency": "direct main", + "description": { + "name": "stack_trace", + "sha256": "8b27215b45d22309b5cddda1aa2b19bdfec9df0e765f2de506401c071d38d1b1", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.12.1" + }, + "standard_message_codec": { + "dependency": "direct main", + "description": { + "name": "standard_message_codec", + "sha256": "fc7dd712d191b7e33196a0ecf354c4573492bb95995e7166cb6f73b047f9cae0", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "0.0.1+4" + }, + "stream_channel": { + "dependency": "direct main", + "description": { + "name": "stream_channel", + "sha256": "969e04c80b8bcdf826f8f16579c7b14d780458bd97f56d107d3950fdbeef059d", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "2.1.4" + }, + "string_scanner": { + "dependency": "direct main", + "description": { + "name": "string_scanner", + "sha256": "921cd31725b72fe181906c6a94d987c78e3b98c2e205b397ea399d4054872b43", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.4.1" + }, + "sync_http": { + "dependency": "direct main", + "description": { + "name": "sync_http", + "sha256": "7f0cd72eca000d2e026bcd6f990b81d0ca06022ef4e32fb257b30d3d1014a961", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "0.3.1" + }, + "term_glyph": { + "dependency": "direct main", + "description": { + "name": "term_glyph", + "sha256": "7f554798625ea768a7518313e58f83891c7f5024f88e46e7182a4558850a4b8e", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.2.2" + }, + "test": { + "dependency": "direct dev", + "description": { + "name": "test", + "sha256": "75906bf273541b676716d1ca7627a17e4c4070a3a16272b7a3dc7da3b9f3f6b7", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.26.3" + }, + "test_api": { + "dependency": "direct main", + "description": { + "name": "test_api", + "sha256": "ab2726c1a94d3176a45960b6234466ec367179b87dd74f1611adb1f3b5fb9d55", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "0.7.7" + }, + "test_core": { + "dependency": "direct main", + "description": { + "name": "test_core", + "sha256": "0cc24b5ff94b38d2ae73e1eb43cc302b77964fbf67abad1e296025b78deb53d0", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "0.6.12" + }, + "typed_data": { + "dependency": "direct main", + "description": { + "name": "typed_data", + "sha256": "f9049c039ebfeb4cf7a7104a675823cd72dba8297f264b6637062516699fa006", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.4.0" + }, + "unified_analytics": { + "dependency": "direct main", + "description": { + "name": "unified_analytics", + "sha256": "8d1429a4b27320a9c4fc854287d18c8fde1549bf622165c5837202a9f370b53d", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "8.0.5" + }, + "usage": { + "dependency": "direct main", + "description": { + "name": "usage", + "sha256": "0bdbde65a6e710343d02a56552eeaefd20b735e04bfb6b3ee025b6b22e8d0e15", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "4.1.1" + }, + "uuid": { + "dependency": "direct main", + "description": { + "name": "uuid", + "sha256": "a5be9ef6618a7ac1e964353ef476418026db906c4facdedaa299b7a2e71690ff", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "4.5.1" + }, + "vm_service": { + "dependency": "direct main", + "description": { + "name": "vm_service", + "sha256": "45caa6c5917fa127b5dbcfbd1fa60b14e583afdc08bfc96dda38886ca252eb60", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "15.0.2" + }, + "vm_service_interface": { + "dependency": "direct main", + "description": { + "name": "vm_service_interface", + "sha256": "503c92c26cf9f77d688bf8fca27fa9ec40450adbf02ec1ec5f12828ded508ac0", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "2.0.1" + }, + "vm_snapshot_analysis": { + "dependency": "direct main", + "description": { + "name": "vm_snapshot_analysis", + "sha256": "5a79b9fbb6be2555090f55b03b23907e75d44c3fd7bdd88da09848aa5a1914c8", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "0.7.6" + }, + "watcher": { + "dependency": "direct main", + "description": { + "name": "watcher", + "sha256": "592ab6e2892f67760543fb712ff0177f4ec76c031f02f5b4ff8d3fc5eb9fb61a", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.1.4" + }, + "web": { + "dependency": "direct main", + "description": { + "name": "web", + "sha256": "868d88a33d8a87b18ffc05f9f030ba328ffefba92d6c127917a2ba740f9cfe4a", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.1.1" + }, + "web_socket": { + "dependency": "direct main", + "description": { + "name": "web_socket", + "sha256": "34d64019aa8e36bf9842ac014bb5d2f5586ca73df5e4d9bf5c936975cae6982c", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.0.1" + }, + "web_socket_channel": { + "dependency": "direct main", + "description": { + "name": "web_socket_channel", + "sha256": "d645757fb0f4773d602444000a8131ff5d48c9e47adfe9772652dd1a4f2d45c8", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "3.0.3" + }, + "webdriver": { + "dependency": "direct main", + "description": { + "name": "webdriver", + "sha256": "2f3a14ca026957870cfd9c635b83507e0e51d8091568e90129fbf805aba7cade", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "3.1.0" + }, + "webkit_inspection_protocol": { + "dependency": "direct main", + "description": { + "name": "webkit_inspection_protocol", + "sha256": "87d3f2333bb240704cd3f1c6b5b7acd8a10e7f0bc28c28dcf14e782014f4a572", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.2.1" + }, + "xml": { + "dependency": "direct main", + "description": { + "name": "xml", + "sha256": "b015a8ad1c488f66851d762d3090a21c600e479dc75e68328c52774040cf9226", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "6.5.0" + }, + "yaml": { + "dependency": "direct main", + "description": { + "name": "yaml", + "sha256": "b9da305ac7c39faa3f030eccd175340f968459dae4af175130b3fc47e40d76ce", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "3.1.3" + }, + "yaml_edit": { + "dependency": "direct main", + "description": { + "name": "yaml_edit", + "sha256": "fb38626579fb345ad00e674e2af3a5c9b0cc4b9bfb8fd7f7ff322c7c9e62aef5", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "2.2.2" + } + }, + "sdks": { + "dart": ">=3.9.0 <4.0.0" + } + } +} diff --git a/pkgs/development/compilers/flutter/versions/3_38/patches/deregister-pub-dependencies-artifact.patch b/pkgs/development/compilers/flutter/versions/3_38/patches/deregister-pub-dependencies-artifact.patch new file mode 100644 index 000000000000..c99d771299fe --- /dev/null +++ b/pkgs/development/compilers/flutter/versions/3_38/patches/deregister-pub-dependencies-artifact.patch @@ -0,0 +1,21 @@ +diff --git a/packages/flutter_tools/lib/src/flutter_cache.dart b/packages/flutter_tools/lib/src/flutter_cache.dart +index df67547..eacc7c4 100644 +--- a/packages/flutter_tools/lib/src/flutter_cache.dart ++++ b/packages/flutter_tools/lib/src/flutter_cache.dart +@@ -51,16 +51,6 @@ class FlutterCache extends Cache { + registerArtifact(IosUsbArtifacts(artifactName, this, platform: platform)); + } + registerArtifact(FontSubsetArtifacts(this, platform: platform)); +- registerArtifact( +- PubDependencies( +- logger: logger, +- // flutter root and pub must be lazily initialized to avoid accessing +- // before the version is determined. +- flutterRoot: () => Cache.flutterRoot!, +- pub: () => pub, +- projectFactory: projectFactory, +- ), +- ); + } + } + diff --git a/pkgs/development/compilers/flutter/versions/3_38/patches/disable-auto-update.patch b/pkgs/development/compilers/flutter/versions/3_38/patches/disable-auto-update.patch new file mode 100644 index 000000000000..58be974b10db --- /dev/null +++ b/pkgs/development/compilers/flutter/versions/3_38/patches/disable-auto-update.patch @@ -0,0 +1,29 @@ +diff --git a/packages/flutter_tools/lib/src/runner/flutter_command.dart b/packages/flutter_tools/lib/src/runner/flutter_command.dart +index e4e474ab6e..5548599802 100644 +--- a/packages/flutter_tools/lib/src/runner/flutter_command.dart ++++ b/packages/flutter_tools/lib/src/runner/flutter_command.dart +@@ -1693,7 +1693,7 @@ Run 'flutter -h' (or 'flutter -h') for available flutter commands and + + // Populate the cache. We call this before pub get below so that the + // sky_engine package is available in the flutter cache for pub to find. +- if (shouldUpdateCache) { ++ if (false) { + // First always update universal artifacts, as some of these (e.g. + // ios-deploy on macOS) are required to determine `requiredArtifacts`. + final bool offline; +diff --git a/packages/flutter_tools/lib/src/runner/flutter_command_runner.dart b/packages/flutter_tools/lib/src/runner/flutter_command_runner.dart +index a1104da..1749d65 100644 +--- a/packages/flutter_tools/lib/src/runner/flutter_command_runner.dart ++++ b/packages/flutter_tools/lib/src/runner/flutter_command_runner.dart +@@ -437,11 +437,6 @@ + // Required to support `flutter --version` before artifacts are cached. + await globals.cache.updateAll({DevelopmentArtifact.informative}); + +- globals.flutterVersion.ensureVersionFile(); +- if (await _shouldCheckForUpdates(topLevelResults)) { +- await globals.flutterVersion.checkFlutterVersionFreshness(); +- } +- + // See if the user specified a specific device. + final specifiedDeviceId = topLevelResults[FlutterGlobalOptions.kDeviceIdOption] as String?; + if (specifiedDeviceId != null) { diff --git a/pkgs/development/compilers/flutter/versions/3_38/patches/fix-ios-build-xcode-backend-sh.patch b/pkgs/development/compilers/flutter/versions/3_38/patches/fix-ios-build-xcode-backend-sh.patch new file mode 100644 index 000000000000..9e43b62cbb4d --- /dev/null +++ b/pkgs/development/compilers/flutter/versions/3_38/patches/fix-ios-build-xcode-backend-sh.patch @@ -0,0 +1,68 @@ +From 6df275df3b8694daf16302b407520e3b1dee6724 Mon Sep 17 00:00:00 2001 +From: Philip Hayes +Date: Thu, 12 Sep 2024 13:23:00 -0700 +Subject: [PATCH] fix: cleanup xcode_backend.sh to fix iOS build w/ + `NixOS/nixpkgs` flutter + +This patch cleans up `xcode_backend.sh`. It now effectively just runs +`exec $FLUTTER_ROOT/bin/dart ./xcode_backend.dart`. + +The previous `xcode_backend.sh` tries to discover `$FLUTTER_ROOT` from +argv[0], even though its presence is already guaranteed (the wrapped +`xcode_backend.dart` also relies on this env). + +When using nixpkgs flutter, the flutter SDK directory is composed of several +layers, joined together using symlinks (called a `symlinkJoin`). Without this +patch, the auto-discover traverses the symlinks into the wrong layer, and so it +uses an "unwrapped" `dart` command instead of a "wrapped" dart that sets some +important envs/flags (like `$FLUTTER_ROOT`). + +Using the "unwrapped" dart then manifests in this error when compiling, since +it doesn't see the ios build-support artifacts: + +``` +$ flutter run -d iphone +Running Xcode build... +Xcode build done. 6.4s +Failed to build iOS app +Error (Xcode): Target debug_unpack_ios failed: Error: Flutter failed to create a directory at "//XXXX-flutter-3.24.1-unwrapped/bin/cache/artifacts". +``` +--- + packages/flutter_tools/bin/xcode_backend.sh | 25 ++++----------------- + 1 file changed, 4 insertions(+), 21 deletions(-) + +diff --git a/packages/flutter_tools/bin/xcode_backend.sh b/packages/flutter_tools/bin/xcode_backend.sh +index 2889d7c8e4..48b9d06c6e 100755 +--- a/packages/flutter_tools/bin/xcode_backend.sh ++++ b/packages/flutter_tools/bin/xcode_backend.sh +@@ -13,24 +13,7 @@ + # exit on error, or usage of unset var + set -euo pipefail + +-# Needed because if it is set, cd may print the path it changed to. +-unset CDPATH +- +-function follow_links() ( +- cd -P "$(dirname -- "$1")" +- file="$PWD/$(basename -- "$1")" +- while [[ -h "$file" ]]; do +- cd -P "$(dirname -- "$file")" +- file="$(readlink -- "$file")" +- cd -P "$(dirname -- "$file")" +- file="$PWD/$(basename -- "$file")" +- done +- echo "$file" +-) +- +-PROG_NAME="$(follow_links "${BASH_SOURCE[0]}")" +-BIN_DIR="$(cd "${PROG_NAME%/*}" ; pwd -P)" +-FLUTTER_ROOT="$BIN_DIR/../../.." +-DART="$FLUTTER_ROOT/bin/dart" +- +-"$DART" "$BIN_DIR/xcode_backend.dart" "$@" "ios" ++# Run `dart ./xcode_backend.dart` with the dart from $FLUTTER_ROOT. ++dart="${FLUTTER_ROOT}/bin/dart" ++xcode_backend_dart="${BASH_SOURCE[0]%.sh}.dart" ++exec "${dart}" "${xcode_backend_dart}" "$@" "ios" +-- +2.46.0 diff --git a/pkgs/development/compilers/flutter/versions/3_38/patches/fix-macos-build-macos-assemble-sh.patch b/pkgs/development/compilers/flutter/versions/3_38/patches/fix-macos-build-macos-assemble-sh.patch new file mode 100644 index 000000000000..312ec3a5c1ba --- /dev/null +++ b/pkgs/development/compilers/flutter/versions/3_38/patches/fix-macos-build-macos-assemble-sh.patch @@ -0,0 +1,59 @@ +Fix for macOS build issue in Flutter >= 3.35 + +Since version 3.35, the behavior of macos_assemble.sh and xcode_backend.sh +is almost identical. This caused the same error for macOS that previously +occurred for iOS. + +Derived from the iOS patch: ./fix-ios-build-xcode-backend-sh.patch + +Example error: +``` +$ flutter run -d macos +Launching lib/main.dart on macOS in debug mode... +Target debug_unpack_macos failed: Error: Flutter failed to create a directory at "//XXXX-flutter-3.35.1-unwrapped/bin/cache/artifacts". +Please ensure that the SDK and/or project is installed in a location that has read/write permissions for the current user. +Failed to copy Flutter framework. +** BUILD FAILED ** +``` + +--- + +diff --git a/packages/flutter_tools/bin/macos_assemble.sh b/packages/flutter_tools/bin/macos_assemble.sh +index 28acf8842..d0f2923df 100644 +--- a/packages/flutter_tools/bin/macos_assemble.sh ++++ b/packages/flutter_tools/bin/macos_assemble.sh +@@ -13,29 +13,13 @@ + # exit on error, or usage of unset var + set -euo pipefail + +-# Needed because if it is set, cd may print the path it changed to. +-unset CDPATH +- +-function follow_links() ( +- cd -P "$(dirname -- "$1")" +- file="$PWD/$(basename -- "$1")" +- while [[ -h "$file" ]]; do +- cd -P "$(dirname -- "$file")" +- file="$(readlink -- "$file")" +- cd -P "$(dirname -- "$file")" +- file="$PWD/$(basename -- "$file")" +- done +- echo "$file" +-) +- +-PROG_NAME="$(follow_links "${BASH_SOURCE[0]}")" +-BIN_DIR="$(cd "${PROG_NAME%/*}" ; pwd -P)" +-FLUTTER_ROOT="$BIN_DIR/../../.." +-DART="$FLUTTER_ROOT/bin/dart" ++# Run `dart ./xcode_backend.dart` with the dart from $FLUTTER_ROOT. ++dart="${FLUTTER_ROOT}/bin/dart" ++xcode_backend_dart="$(dirname "${BASH_SOURCE[0]}")/xcode_backend.dart" + + # Main entry point. + if [[ $# == 0 ]]; then +- "$DART" "$BIN_DIR/xcode_backend.dart" "build" "macos" ++ exec "${dart}" "${xcode_backend_dart}" "build" "macos" + else +- "$DART" "$BIN_DIR/xcode_backend.dart" "$@" "macos" ++ exec "${dart}" "${xcode_backend_dart}" "$@" "macos" + fi diff --git a/pkgs/development/compilers/flutter/versions/3_38/patches/gradle-flutter-tools-wrapper.patch b/pkgs/development/compilers/flutter/versions/3_38/patches/gradle-flutter-tools-wrapper.patch new file mode 100644 index 000000000000..4c5b258be373 --- /dev/null +++ b/pkgs/development/compilers/flutter/versions/3_38/patches/gradle-flutter-tools-wrapper.patch @@ -0,0 +1,220 @@ +This patch introduces an intermediate Gradle build step to alter the behavior +of flutter_tools' Gradle project, specifically moving the creation of `build` +and `.gradle` directories from within the Nix Store to somewhere in `$HOME/.cache/flutter/nix-flutter-tools-gradle/$engineShortRev`. + +Without this patch, flutter_tools' Gradle project tries to generate `build` and `.gradle` +directories within the Nix Store. Resulting in read-only errors when trying to build a +Flutter Android app at runtime. + +This patch takes advantage of the fact settings.gradle takes priority over settings.gradle.kts to build the intermediate Gradle project +when a Flutter app runs `includeBuild("${settings.ext.flutterSdkPath}/packages/flutter_tools/gradle")` + +`rootProject.buildFileName = "/dev/null"` so that the intermediate project doesn't use `build.gradle.kts` that's in the same directory. + +The intermediate project makes a `settings.gradle` file in `$HOME/.cache/flutter/nix-flutter-tools-gradle//` and `includeBuild`s it. +This Gradle project will build the actual `packages/flutter_tools/gradle` project by setting +`rootProject.projectDir = new File("$settingsDir")` and `apply from: new File("$settingsDir/settings.gradle.kts")`. + +To move `build` to `$HOME/.cache/flutter/nix-flutter-tools-gradle//`, we need to set `buildDirectory`. +To move `.gradle` as well, the `--project-cache-dir` argument must be passed to the Gradle wrapper. +Changing the `GradleUtils.getExecutable` function signature is a delibarate choice, to ensure that no new unpatched usages slip in. +--- /dev/null ++++ b/packages/flutter_tools/gradle/settings.gradle +@@ -0,0 +1,19 @@ ++rootProject.buildFileName = "/dev/null" ++ ++def engineShortRev = (new File("$settingsDir/../../../bin/internal/engine.version")).text.take(10) ++def dir = new File("$System.env.HOME/.cache/flutter/nix-flutter-tools-gradle/$engineShortRev") ++dir.mkdirs() ++def file = new File(dir, "settings.gradle") ++ ++file.text = """ ++rootProject.projectDir = new File("$settingsDir") ++apply from: new File("$settingsDir/settings.gradle.kts") ++ ++gradle.allprojects { project -> ++ project.beforeEvaluate { ++ project.layout.buildDirectory = new File("$dir/build") ++ } ++} ++""" ++ ++includeBuild(dir) +--- a/packages/flutter_tools/gradle/build.gradle.kts ++++ b/packages/flutter_tools/gradle/build.gradle.kts +@@ -4,6 +4,11 @@ + + import org.jetbrains.kotlin.gradle.dsl.JvmTarget + ++// While flutter_tools runs Gradle with a --project-cache-dir, this startParameter ++// is not passed correctly to the Kotlin Gradle plugin for some reason, and so ++// must be set here as well. ++gradle.startParameter.projectCacheDir = layout.buildDirectory.dir("cache").get().asFile ++ + plugins { + `java-gradle-plugin` + groovy +--- a/packages/flutter_tools/lib/src/android/gradle.dart ++++ b/packages/flutter_tools/lib/src/android/gradle.dart +@@ -474,9 +474,9 @@ class AndroidGradleBuilder implements AndroidBuilder { + // from the local.properties file. + updateLocalProperties(project: project, buildInfo: androidBuildInfo.buildInfo); + +- final options = []; +- +- final String gradleExecutablePath = _gradleUtils.getExecutable(project); ++ final [String gradleExecutablePath, ...List options] = _gradleUtils.getExecutable( ++ project, ++ ); + + // All automatically created files should exist. + if (configOnly) { +@@ -797,7 +797,7 @@ class AndroidGradleBuilder implements AndroidBuilder { + 'aar_init_script.gradle', + ); + final command = [ +- _gradleUtils.getExecutable(project), ++ ..._gradleUtils.getExecutable(project), + '-I=$initScript', + '-Pflutter-root=$flutterRoot', + '-Poutput-dir=${outputDirectory.path}', +@@ -912,6 +912,10 @@ class AndroidGradleBuilder implements AndroidBuilder { + final results = []; + + try { ++ final [String gradleExecutablePath, ...List options] = _gradleUtils.getExecutable( ++ project, ++ ); ++ + exitCode = await _runGradleTask( + _kBuildVariantTaskName, + preRunTask: () { +@@ -927,10 +931,10 @@ class AndroidGradleBuilder implements AndroidBuilder { + ), + ); + }, +- options: const ['-q'], ++ options: [...options, '-q'], + project: project, + localGradleErrors: gradleErrors, +- gradleExecutablePath: _gradleUtils.getExecutable(project), ++ gradleExecutablePath: gradleExecutablePath, + outputParser: (String line) { + if (_kBuildVariantRegex.firstMatch(line) case final RegExpMatch match) { + results.add(match.namedGroup(_kBuildVariantRegexGroupName)!); +@@ -964,6 +968,10 @@ class AndroidGradleBuilder implements AndroidBuilder { + late Stopwatch sw; + var exitCode = 1; + try { ++ final [String gradleExecutablePath, ...List options] = _gradleUtils.getExecutable( ++ project, ++ ); ++ + exitCode = await _runGradleTask( + taskName, + preRunTask: () { +@@ -979,10 +987,10 @@ class AndroidGradleBuilder implements AndroidBuilder { + ), + ); + }, +- options: ['-q', '-PoutputPath=$outputPath'], ++ options: [...options, '-q', '-PoutputPath=$outputPath'], + project: project, + localGradleErrors: gradleErrors, +- gradleExecutablePath: _gradleUtils.getExecutable(project), ++ gradleExecutablePath: gradleExecutablePath, + ); + } on Error catch (error) { + _logger.printError(error.toString()); +--- a/packages/flutter_tools/lib/src/android/gradle_errors.dart ++++ b/packages/flutter_tools/lib/src/android/gradle_errors.dart +@@ -228,7 +228,12 @@ final flavorUndefinedHandler = GradleHandledError( + }, + handler: ({required String line, required FlutterProject project, required bool usesAndroidX}) async { + final RunResult tasksRunResult = await globals.processUtils.run( +- [globals.gradleUtils!.getExecutable(project), 'app:tasks', '--all', '--console=auto'], ++ [ ++ ...globals.gradleUtils!.getExecutable(project), ++ 'app:tasks', ++ '--all', ++ '--console=auto', ++ ], + throwOnError: true, + workingDirectory: project.android.hostAppGradleRoot.path, + environment: globals.java?.environment, +--- a/packages/flutter_tools/lib/src/android/gradle_utils.dart ++++ b/packages/flutter_tools/lib/src/android/gradle_utils.dart +@@ -3,6 +3,7 @@ + // found in the LICENSE file. + + import 'package:meta/meta.dart'; ++import 'package:path/path.dart'; + import 'package:process/process.dart'; + import 'package:unified_analytics/unified_analytics.dart'; + +@@ -197,9 +198,29 @@ class GradleUtils { + final Logger _logger; + final OperatingSystemUtils _operatingSystemUtils; + ++ List get _requiredArguments { ++ final String cacheDir = join( ++ switch (globals.platform.environment['XDG_CACHE_HOME']) { ++ final String cacheHome => cacheHome, ++ _ => join( ++ globals.fsUtils.homeDirPath ?? throwToolExit('No cache directory has been specified.'), ++ '.cache', ++ ), ++ }, ++ 'flutter', ++ 'nix-flutter-tools-gradle', ++ globals.flutterVersion.engineRevision.substring(0, 10), ++ ); ++ ++ return [ ++ '--project-cache-dir=${join(cacheDir, 'cache')}', ++ '-Pkotlin.project.persistent.dir=${join(cacheDir, 'kotlin')}', ++ ]; ++ } ++ + /// Gets the Gradle executable path and prepares the Gradle project. + /// This is the `gradlew` or `gradlew.bat` script in the `android/` directory. +- String getExecutable(FlutterProject project) { ++ List getExecutable(FlutterProject project) { + final Directory androidDir = project.android.hostAppGradleRoot; + injectGradleWrapperIfNeeded(androidDir); + +@@ -210,7 +231,7 @@ class GradleUtils { + // If the Gradle executable doesn't have execute permission, + // then attempt to set it. + _operatingSystemUtils.makeExecutable(gradle); +- return gradle.absolute.path; ++ return [gradle.absolute.path, ..._requiredArguments]; + } + throwToolExit( + 'Unable to locate gradlew script. Please check that ${gradle.path} ' +--- a/packages/flutter_tools/test/general.shard/android/android_gradle_builder_test.dart ++++ b/packages/flutter_tools/test/general.shard/android/android_gradle_builder_test.dart +@@ -2606,8 +2606,8 @@ Gradle Crashed + + class FakeGradleUtils extends Fake implements GradleUtils { + @override +- String getExecutable(FlutterProject project) { +- return 'gradlew'; ++ List getExecutable(FlutterProject project) { ++ return const ['gradlew']; + } + } + +--- a/packages/flutter_tools/test/general.shard/android/gradle_errors_test.dart ++++ b/packages/flutter_tools/test/general.shard/android/gradle_errors_test.dart +@@ -1633,8 +1633,8 @@ Platform fakePlatform(String name) { + + class FakeGradleUtils extends Fake implements GradleUtils { + @override +- String getExecutable(FlutterProject project) { +- return 'gradlew'; ++ List getExecutable(FlutterProject project) { ++ return const ['gradlew']; + } + } + diff --git a/pkgs/development/compilers/flutter/wrapper.nix b/pkgs/development/compilers/flutter/wrapper.nix index 703e280dc14b..5a79e9f7b118 100644 --- a/pkgs/development/compilers/flutter/wrapper.nix +++ b/pkgs/development/compilers/flutter/wrapper.nix @@ -24,7 +24,7 @@ makeWrapper, writeShellScript, wrapGAppsHook3, - git, + gitMinimal, which, pkg-config, atk, @@ -64,8 +64,8 @@ let name = "flutter-cache-dir"; paths = builtins.attrValues flutterPlatformArtifacts; postBuild = '' - mkdir -p "$out/bin/cache" - ln -s '${flutter}/bin/cache/dart-sdk' "$out/bin/cache" + mkdir --parents "$out/bin/cache" + ln --symbolic '${flutter}/bin/cache/dart-sdk' "$out/bin/cache" ''; passthru.flutterPlatform = flutterPlatformArtifacts; }; @@ -79,7 +79,7 @@ let # Tools that the Flutter tool depends on. tools = [ - git + gitMinimal which ]; @@ -184,7 +184,7 @@ in addToSearchPath FLUTTER_PKG_CONFIG_PATH "$path" done - mkdir -p $out/bin + mkdir --parents $out/bin makeWrapper '${immutableFlutter}' $out/bin/flutter \ --set-default ANDROID_EMULATOR_USE_SYSTEM_LIBS 1 \ '' diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 0130772f5741..bd5137096958 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -4485,6 +4485,7 @@ with pkgs; ); flutterPackages = flutterPackages-bin; flutter = flutterPackages.stable; + flutter338 = flutterPackages.v3_38; flutter335 = flutterPackages.v3_35; flutter332 = flutterPackages.v3_32; flutter329 = flutterPackages.v3_29; From c207686ff862d79caa8ad62926ab60837bc6df04 Mon Sep 17 00:00:00 2001 From: wrvsrx Date: Mon, 3 Nov 2025 13:15:34 +0800 Subject: [PATCH 05/38] wemeet: 3.19.2.400 -> 3.26.10.400 --- pkgs/by-name/we/wemeet/package.nix | 26 +++++++++++++++++++++----- 1 file changed, 21 insertions(+), 5 deletions(-) diff --git a/pkgs/by-name/we/wemeet/package.nix b/pkgs/by-name/we/wemeet/package.nix index 6fbf70d6335d..e7122a299b35 100644 --- a/pkgs/by-name/we/wemeet/package.nix +++ b/pkgs/by-name/we/wemeet/package.nix @@ -133,16 +133,16 @@ let in stdenv.mkDerivation { pname = "wemeet"; - version = "3.19.2.400"; + version = "3.26.10.400"; src = selectSystem { x86_64-linux = fetchurl { - url = "https://updatecdn.meeting.qq.com/cos/fb7464ffb18b94a06868265bed984007/TencentMeeting_0300000000_3.19.2.400_x86_64_default.publish.officialwebsite.deb"; - hash = "sha256-PSGc4urZnoBxtk1cwwz/oeXMwnI02Mv1pN2e9eEf5kE="; + url = "https://updatecdn.meeting.qq.com/cos/9cfd93b10ee81b2fc3ad26357f27ed13/TencentMeeting_0300000000_3.26.10.400_x86_64_default.publish.officialwebsite.deb"; + hash = "sha256-7gN40mkAD/0/k0E+bBNfiMcY+YtIaLWycFoI+hhrjgc="; }; aarch64-linux = fetchurl { - url = "https://updatecdn.meeting.qq.com/cos/867a8a2e99a215dcd4f60fe049dbe6cf/TencentMeeting_0300000000_3.19.2.400_arm64_default.publish.officialwebsite.deb"; - hash = "sha256-avN+PHKKC58lMC5wd0yVLD0Ct7sbb4BtXjovish0ULU="; + url = "https://updatecdn.meeting.qq.com/cos/e5f447f30343e27c49438db8d035ae23/TencentMeeting_0300000000_3.26.10.400_arm64_default.publish.officialwebsite.deb"; + hash = "sha256-ShxcDwwBThwe2YKNy/5+HmYcnnodPhrMaOwkw3gTq0E="; }; }; @@ -206,6 +206,21 @@ stdenv.mkDerivation { runHook postInstall ''; + postInstall = selectSystem { + x86_64-linux = '' + # According to @mnixry: + # The thing is, it's a coroutine library that involves a series of low-level operations like stack and register restoration and saving, so there's quite a bit of code that looks like hand-written assembly. + # Then they apparently changed the usage of co_jump_to_link, but the registers used in the assembly weren't updated accordingly. + # And then under certain versions of libc/libcpp implementations, that original register happens to have a value, so the tests also pass. + + # cmp rdi, 0 -> cmp r12, 0, at co_jump_to_link to address coroutine context resume issue + echo -ne '\x49\x83\xfc\x00' | dd of=$out/app/wemeet/lib/libwemeet_base.so bs=1 seek=$((0x94c833)) conv=notrunc + ''; + aarch64-linux = '' + # I don't know if aarch64-linux version needs similar patch, I don't have aarch64 device. + ''; + }; + # set LP_NUM_THREADS limit the number of cores used by rendering # set XDG_SESSION_TYPE; unset WAYLAND_DISPLAY getting border shadows to work # set QT_STYLE_OVERRIDE solve the color of the font is not visible when using the included Qt @@ -227,6 +242,7 @@ stdenv.mkDerivation { ]; xwaylandWrapperArgs = baseWrapperArgs ++ [ "--set XDG_SESSION_TYPE x11" + "--set QT_QPA_PLATFORM xcb" "--unset WAYLAND_DISPLAY" "--prefix LD_PRELOAD : ${libwemeetwrap}/lib/libwemeetwrap.so:${wemeet-wayland-screenshare}/lib/wemeet/libhook.so" ]; From 4ab091862ab9f03a867d7ad34c7dfbbcae31db27 Mon Sep 17 00:00:00 2001 From: Yueh-Shun Li Date: Wed, 29 Oct 2025 21:26:04 +0800 Subject: [PATCH 06/38] fetchurl: take derivationArgs --- pkgs/build-support/fetchurl/default.nix | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/pkgs/build-support/fetchurl/default.nix b/pkgs/build-support/fetchurl/default.nix index 88e7bfaa7809..b9a640563e36 100644 --- a/pkgs/build-support/fetchurl/default.nix +++ b/pkgs/build-support/fetchurl/default.nix @@ -60,6 +60,9 @@ lib.extendMkDerivation { # Passed via passthru "url" + # Additional stdenv.mkDerivation arguments from derived fetchers. + "derivationArgs" + # Hash attributes will be map to the corresponding outputHash* "hash" "sha1" @@ -139,6 +142,11 @@ lib.extendMkDerivation { # Additional packages needed as part of a fetch nativeBuildInputs ? [ ], + + # Additional stdenvNoCC.mkDerivation arguments. + # It is typically for derived fetchers to pass down additional arguments, + # and the specified arguments have lower precedence than other mkDerivation arguments. + derivationArgs ? { }, }@args: let @@ -228,7 +236,8 @@ lib.extendMkDerivation { "${lib.head mirrorList}${lib.elemAt mirrorSplit 1}"; in - { + derivationArgs + // { name = if pname != null && version != null then "${finalAttrs.pname}-${finalAttrs.version}" From b29af41b6e685738ac710000f51d4b56954413bf Mon Sep 17 00:00:00 2001 From: Yueh-Shun Li Date: Wed, 29 Oct 2025 21:35:31 +0800 Subject: [PATCH 07/38] fetchzip: make overridable extension and stripRoot with derivationArgs --- pkgs/build-support/fetchzip/default.nix | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/pkgs/build-support/fetchzip/default.nix b/pkgs/build-support/fetchzip/default.nix index 830f68085f76..d25f1f0e3943 100644 --- a/pkgs/build-support/fetchzip/default.nix +++ b/pkgs/build-support/fetchzip/default.nix @@ -20,7 +20,7 @@ lib.extendMkDerivation { excludeDrvArgNames = [ "extraPostFetch" - # TODO(@ShamrockLee): Move these arguments to derivationArgs when available. + # Pass via derivationArgs "extension" "stripRoot" ]; @@ -48,8 +48,8 @@ lib.extendMkDerivation { let tmpFilename = - if extension != null then - "download.${extension}" + if finalAttrs.extension != null then + "download.${finalAttrs.extension}" else baseNameOf (if url != "" then url else builtins.head urls); in @@ -81,7 +81,7 @@ lib.extendMkDerivation { chmod -R +w "$unpackDir" '' + ( - if stripRoot then + if finalAttrs.stripRoot then '' if [ $(ls -A "$unpackDir" | wc -l) != 1 ]; then echo "error: zip file must contain a single file or directory." @@ -109,5 +109,12 @@ lib.extendMkDerivation { ''; # ^ Remove non-owner write permissions # Fixes https://github.com/NixOS/nixpkgs/issues/38649 + + derivationArgs = { + inherit + extension + stripRoot + ; + }; }; } From 0fc9eec2e5d2cf8e69be5516752ffa657ab36336 Mon Sep 17 00:00:00 2001 From: Yueh-Shun Li Date: Wed, 29 Oct 2025 21:36:33 +0800 Subject: [PATCH 08/38] fetchzip: take derivationArgs --- pkgs/build-support/fetchzip/default.nix | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/pkgs/build-support/fetchzip/default.nix b/pkgs/build-support/fetchzip/default.nix index d25f1f0e3943..4376fef41085 100644 --- a/pkgs/build-support/fetchzip/default.nix +++ b/pkgs/build-support/fetchzip/default.nix @@ -42,6 +42,11 @@ lib.extendMkDerivation { # an appropriate unpacking tool. extension ? null, + # Additional stdenvNoCC.mkDerivation arguments. + # It is typically for derived fetchers to pass down additional arguments, + # and the specified arguments have lower precedence than other mkDerivation arguments. + derivationArgs ? { }, + # the rest are given to fetchurl as is ... }@args: @@ -110,7 +115,7 @@ lib.extendMkDerivation { # ^ Remove non-owner write permissions # Fixes https://github.com/NixOS/nixpkgs/issues/38649 - derivationArgs = { + derivationArgs = derivationArgs // { inherit extension stripRoot From 38f61c3f10b92e92933a5e048a93618493527c35 Mon Sep 17 00:00:00 2001 From: Yueh-Shun Li Date: Wed, 29 Oct 2025 21:39:21 +0800 Subject: [PATCH 09/38] fetchgit: take derivationArgs --- pkgs/build-support/fetchgit/default.nix | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/pkgs/build-support/fetchgit/default.nix b/pkgs/build-support/fetchgit/default.nix index 4ffb998ee205..e3566f5627ee 100644 --- a/pkgs/build-support/fetchgit/default.nix +++ b/pkgs/build-support/fetchgit/default.nix @@ -30,6 +30,9 @@ lib.makeOverridable ( # Passed via `passthru` "tag" + # Additional stdenv.mkDerivation arguments from derived fetchers. + "derivationArgs" + # Hashes, handled by `lib.fetchers.withNormalizedHash` # whose outputs contain outputHash* attributes. "hash" @@ -84,6 +87,10 @@ lib.makeOverridable ( rootDir ? "", # GIT_CONFIG_GLOBAL (as a file) gitConfigFile ? config.gitConfigFile, + # Additional stdenvNoCC.mkDerivation arguments. + # It is typically for derived fetchers to pass down additional arguments, + # and the specified arguments have lower precedence than other mkDerivation arguments. + derivationArgs ? { }, }: /* @@ -135,7 +142,8 @@ lib.makeOverridable ( throw "Please provide directories/patterns for sparse checkout as a list of strings. Passing a (multi-line) string is not supported any more." else - { + derivationArgs + // { inherit name; builder = ./builder.sh; From 076076e946319c40a9f787dc0a148c6025d73906 Mon Sep 17 00:00:00 2001 From: Yueh-Shun Li Date: Wed, 29 Oct 2025 21:52:38 +0800 Subject: [PATCH 10/38] fetchgit: abstract and simplify revWithTag --- pkgs/build-support/fetchgit/default.nix | 34 ++++++++++++------------- 1 file changed, 16 insertions(+), 18 deletions(-) diff --git a/pkgs/build-support/fetchgit/default.nix b/pkgs/build-support/fetchgit/default.nix index e3566f5627ee..80d56ff501ca 100644 --- a/pkgs/build-support/fetchgit/default.nix +++ b/pkgs/build-support/fetchgit/default.nix @@ -20,6 +20,21 @@ let appendShort = lib.optionalString ((builtins.match "[a-f0-9]*" rev) != null) "-${shortRev}"; in "${lib.sources.urlToName url}${if append == "" then appendShort else append}"; + + getRevWithTag = + { + rev ? null, + tag ? null, + }: + if tag != null && rev != null then + throw "fetchgit requires one of either `rev` or `tag` to be provided (not both)." + else if tag != null then + "refs/tags/${tag}" + else if rev != null then + rev + else + # FIXME fetching HEAD if no rev or tag is provided is problematic at best + "HEAD"; in lib.makeOverridable ( @@ -120,23 +135,6 @@ lib.makeOverridable ( assert fetchTags -> leaveDotGit; assert rootDir != "" -> !leaveDotGit; - let - revWithTag = - let - warningMsg = "fetchgit requires one of either `rev` or `tag` to be provided (not both)."; - otherIsNull = other: lib.assertMsg (other == null) warningMsg; - in - if tag != null then - assert (otherIsNull rev); - "refs/tags/${tag}" - else if rev != null then - assert (otherIsNull tag); - rev - else - # FIXME fetching HEAD if no rev or tag is provided is problematic at best - "HEAD"; - in - if builtins.isString sparseCheckout then # Changed to throw on 2023-06-04 throw @@ -178,7 +176,7 @@ lib.makeOverridable ( rootDir gitConfigFile ; - rev = revWithTag; + rev = getRevWithTag { inherit tag rev; }; postHook = if netrcPhase == null then From dbf76b7c1befc9702c8ba81ef3f5448ba4642b1e Mon Sep 17 00:00:00 2001 From: Yueh-Shun Li Date: Wed, 29 Oct 2025 21:55:50 +0800 Subject: [PATCH 11/38] fetchgit: pass tag directly and make overridable --- pkgs/build-support/fetchgit/default.nix | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/pkgs/build-support/fetchgit/default.nix b/pkgs/build-support/fetchgit/default.nix index 80d56ff501ca..9b6085f1c7fd 100644 --- a/pkgs/build-support/fetchgit/default.nix +++ b/pkgs/build-support/fetchgit/default.nix @@ -42,9 +42,6 @@ lib.makeOverridable ( constructDrv = stdenvNoCC.mkDerivation; excludeDrvArgNames = [ - # Passed via `passthru` - "tag" - # Additional stdenv.mkDerivation arguments from derived fetchers. "derivationArgs" @@ -65,7 +62,7 @@ lib.makeOverridable ( rev ? null, name ? urlToName { inherit url; - rev = lib.revOrTag rev tag; + rev = lib.revOrTag rev finalAttrs.tag; # when rootDir is specified, avoid invalidating the result when rev changes append = if rootDir != "" then "-${lib.strings.sanitizeDerivationName rootDir}" else ""; }, @@ -176,7 +173,11 @@ lib.makeOverridable ( rootDir gitConfigFile ; - rev = getRevWithTag { inherit tag rev; }; + inherit tag; + rev = getRevWithTag { + inherit (finalAttrs) tag; + inherit rev; + }; postHook = if netrcPhase == null then @@ -216,7 +217,6 @@ lib.makeOverridable ( passthru = { gitRepoUrl = url; - inherit tag; } // passthru; } From 21677a6bd861ff4b15389dc909bae58201de86ec Mon Sep 17 00:00:00 2001 From: Yueh-Shun Li Date: Wed, 29 Oct 2025 21:59:05 +0800 Subject: [PATCH 12/38] fetchgit: pass rev as revCustom and make overridable --- pkgs/build-support/fetchgit/default.nix | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/pkgs/build-support/fetchgit/default.nix b/pkgs/build-support/fetchgit/default.nix index 9b6085f1c7fd..445b11347c63 100644 --- a/pkgs/build-support/fetchgit/default.nix +++ b/pkgs/build-support/fetchgit/default.nix @@ -62,7 +62,7 @@ lib.makeOverridable ( rev ? null, name ? urlToName { inherit url; - rev = lib.revOrTag rev finalAttrs.tag; + rev = lib.revOrTag finalAttrs.revCustom finalAttrs.tag; # when rootDir is specified, avoid invalidating the result when rev changes append = if rootDir != "" then "-${lib.strings.sanitizeDerivationName rootDir}" else ""; }, @@ -174,9 +174,10 @@ lib.makeOverridable ( gitConfigFile ; inherit tag; + revCustom = rev; rev = getRevWithTag { inherit (finalAttrs) tag; - inherit rev; + rev = finalAttrs.revCustom; }; postHook = From 29465554113e2b7bb110c27ab436bf551acb239a Mon Sep 17 00:00:00 2001 From: Yueh-Shun Li Date: Wed, 29 Oct 2025 22:01:21 +0800 Subject: [PATCH 13/38] fetchgit: expose getRevWithTag as fetchgit.getRevWithTag --- pkgs/build-support/fetchgit/default.nix | 3 +++ 1 file changed, 3 insertions(+) diff --git a/pkgs/build-support/fetchgit/default.nix b/pkgs/build-support/fetchgit/default.nix index 445b11347c63..5a8ea3cf0488 100644 --- a/pkgs/build-support/fetchgit/default.nix +++ b/pkgs/build-support/fetchgit/default.nix @@ -227,3 +227,6 @@ lib.makeOverridable ( inheritFunctionArgs = false; } ) +// { + inherit getRevWithTag; +} From e0ba367c2bfc078426b746ec0c3d8275b7b40f68 Mon Sep 17 00:00:00 2001 From: Yueh-Shun Li Date: Wed, 29 Oct 2025 22:01:57 +0800 Subject: [PATCH 14/38] fetchFromGitHub: pass meta via fetcherArgs --- pkgs/build-support/fetchgithub/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/build-support/fetchgithub/default.nix b/pkgs/build-support/fetchgithub/default.nix index c25c86e6f772..e25ee6bc53ed 100644 --- a/pkgs/build-support/fetchgithub/default.nix +++ b/pkgs/build-support/fetchgithub/default.nix @@ -158,12 +158,12 @@ lib.makeOverridable ( // privateAttrs // { inherit name; + meta = newMeta; }; in fetcher fetcherArgs // { - meta = newMeta; inherit owner repo tag; rev = revWithTag; } From dd9af80094766dbbf27364b0cb81d53f21d383f0 Mon Sep 17 00:00:00 2001 From: Yueh-Shun Li Date: Wed, 29 Oct 2025 22:09:11 +0800 Subject: [PATCH 15/38] fetchFromGitHub: pass owner and repo via derivationArgs --- pkgs/build-support/fetchgithub/default.nix | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/pkgs/build-support/fetchgithub/default.nix b/pkgs/build-support/fetchgithub/default.nix index e25ee6bc53ed..481de15afa91 100644 --- a/pkgs/build-support/fetchgithub/default.nix +++ b/pkgs/build-support/fetchgithub/default.nix @@ -113,6 +113,7 @@ lib.makeOverridable ( revWithTag = if tag != null then "refs/tags/${tag}" else rev; fetcherArgs = + finalAttrs: passthruAttrs // ( if useFetchGit then @@ -127,6 +128,12 @@ lib.makeOverridable ( ; url = gitRepoUrl; inherit passthru; + derivationArgs = { + inherit + owner + repo + ; + }; } // lib.optionalAttrs (leaveDotGit != null) { inherit leaveDotGit; } else @@ -139,7 +146,7 @@ lib.makeOverridable ( url = if private then let - endpoint = "/repos/${owner}/${repo}/tarball/${revWithTag}"; + endpoint = "/repos/${finalAttrs.owner}/${finalAttrs.repo}/tarball/${revWithTag}"; in if githubBase == "github.com" then "https://api.github.com${endpoint}" @@ -148,7 +155,12 @@ lib.makeOverridable ( else "${baseUrl}/archive/${revWithTag}.tar.gz"; extension = "tar.gz"; - + derivationArgs = { + inherit + owner + repo + ; + }; passthru = { inherit gitRepoUrl; } From 3754cf57cf224d5d6d4ac753cba052fe23451e34 Mon Sep 17 00:00:00 2001 From: Yueh-Shun Li Date: Wed, 29 Oct 2025 22:11:54 +0800 Subject: [PATCH 16/38] fetchFromGitHub: pass tag to mkDerivation uniformly --- pkgs/build-support/fetchgithub/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/build-support/fetchgithub/default.nix b/pkgs/build-support/fetchgithub/default.nix index 481de15afa91..ea40c6adbd55 100644 --- a/pkgs/build-support/fetchgithub/default.nix +++ b/pkgs/build-support/fetchgithub/default.nix @@ -159,6 +159,7 @@ lib.makeOverridable ( inherit owner repo + tag ; }; passthru = { @@ -176,7 +177,6 @@ lib.makeOverridable ( fetcher fetcherArgs // { - inherit owner repo tag; rev = revWithTag; } ) From aede4d203cdb2a3d2d0cecb1d56320538e123a70 Mon Sep 17 00:00:00 2001 From: Yueh-Shun Li Date: Wed, 29 Oct 2025 22:16:10 +0800 Subject: [PATCH 17/38] fetchFromGitHub: pass rev uniformly --- pkgs/build-support/fetchgithub/default.nix | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/pkgs/build-support/fetchgithub/default.nix b/pkgs/build-support/fetchgithub/default.nix index ea40c6adbd55..4c3ea354fa68 100644 --- a/pkgs/build-support/fetchgithub/default.nix +++ b/pkgs/build-support/fetchgithub/default.nix @@ -110,8 +110,6 @@ lib.makeOverridable ( gitRepoUrl = "${baseUrl}.git"; - revWithTag = if tag != null then "refs/tags/${tag}" else rev; - fetcherArgs = finalAttrs: passthruAttrs @@ -137,6 +135,9 @@ lib.makeOverridable ( } // lib.optionalAttrs (leaveDotGit != null) { inherit leaveDotGit; } else + let + revWithTag = finalAttrs.rev; + in { # Use the API endpoint for private repos, as the archive URI doesn't # support access with GitHub's fine-grained access tokens. @@ -161,6 +162,11 @@ lib.makeOverridable ( repo tag ; + rev = fetchgit.getRevWithTag { + inherit (finalAttrs) tag; + rev = finalAttrs.revCustom; + }; + revCustom = rev; }; passthru = { inherit gitRepoUrl; @@ -176,7 +182,4 @@ lib.makeOverridable ( in fetcher fetcherArgs - // { - rev = revWithTag; - } ) From 4e996b39209dbb39495e7d6b3b272101bba7ba95 Mon Sep 17 00:00:00 2001 From: Yueh-Shun Li Date: Wed, 29 Oct 2025 22:34:11 +0800 Subject: [PATCH 18/38] fetchFromGitHub: make name respect overridden arguments --- pkgs/build-support/fetchgithub/default.nix | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/pkgs/build-support/fetchgithub/default.nix b/pkgs/build-support/fetchgithub/default.nix index 4c3ea354fa68..ac8698caeb29 100644 --- a/pkgs/build-support/fetchgithub/default.nix +++ b/pkgs/build-support/fetchgithub/default.nix @@ -11,7 +11,8 @@ lib.makeOverridable ( repo, tag ? null, rev ? null, - name ? repoRevToNameMaybe repo (lib.revOrTag rev tag) "github", + # TODO(@ShamrockLee): Add back after reconstruction with lib.extendMkDerivation + # name ? repoRevToNameMaybe finalAttrs.repo (lib.revOrTag finalAttrs.revCustom finalAttrs.tag) "github", fetchSubmodules ? false, leaveDotGit ? null, deepClone ? false, @@ -176,7 +177,10 @@ lib.makeOverridable ( ) // privateAttrs // { - inherit name; + # TODO(@ShamrockLee): Change back to `inherit name;` after reconstruction with lib.extendMkDerivation + name = + args.name + or (repoRevToNameMaybe finalAttrs.repo (lib.revOrTag finalAttrs.revCustom finalAttrs.tag) "github"); meta = newMeta; }; in From 8bb3bbbf44c5af916de98e01829ca1e207df3679 Mon Sep 17 00:00:00 2001 From: Yueh-Shun Li Date: Thu, 30 Oct 2025 04:44:07 +0800 Subject: [PATCH 19/38] fetchFromGitHub: pass githubBase to mkDerivation via derivationArgs Reduce future test rebuilds when making githubBase overridable. --- pkgs/build-support/fetchgithub/default.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pkgs/build-support/fetchgithub/default.nix b/pkgs/build-support/fetchgithub/default.nix index ac8698caeb29..ae5ff338264a 100644 --- a/pkgs/build-support/fetchgithub/default.nix +++ b/pkgs/build-support/fetchgithub/default.nix @@ -129,6 +129,7 @@ lib.makeOverridable ( inherit passthru; derivationArgs = { inherit + githubBase owner repo ; @@ -159,6 +160,7 @@ lib.makeOverridable ( extension = "tar.gz"; derivationArgs = { inherit + githubBase owner repo tag From adcdd30fe25a69c572f2d89876a728cce3b3ba18 Mon Sep 17 00:00:00 2001 From: Connor Baker Date: Mon, 3 Nov 2025 15:17:51 -0800 Subject: [PATCH 20/38] phytool: init at 2-unstable-2024-07-14 Signed-off-by: Connor Baker --- pkgs/by-name/ph/phytool/package.nix | 35 +++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 pkgs/by-name/ph/phytool/package.nix diff --git a/pkgs/by-name/ph/phytool/package.nix b/pkgs/by-name/ph/phytool/package.nix new file mode 100644 index 000000000000..9a19b0fa398c --- /dev/null +++ b/pkgs/by-name/ph/phytool/package.nix @@ -0,0 +1,35 @@ +{ + fetchFromGitHub, + lib, + stdenv, +}: +stdenv.mkDerivation { + __structuredAttrs = true; + strictDeps = true; + + pname = "phytool"; + version = "2-unstable-2024-07-14"; + + src = fetchFromGitHub { + owner = "wkz"; + repo = "phytool"; + rev = "bcf23b0261aa9f352ee4b944e30e3482158640a4"; + hash = "sha256-8e2DVjG/2CtJ/+FLzMa1VKajJZfFqjD54XQAMY+0q3U="; + }; + + makeFlags = [ + "PREFIX=$(out)" + ]; + + preInstall = '' + mkdir -p "$out/bin" + ''; + + meta = { + description = "Linux MDIO register access"; + homepage = "https://github.com/wkz/phytool"; + changelog = "https://github.com/wkz/phytool/releases"; + license = lib.licenses.gpl2; + maintainers = [ lib.maintainers.connorbaker ]; + }; +} From 8e4e580dbf28fe19af84334dab1f15ffa913ac79 Mon Sep 17 00:00:00 2001 From: "R. Ryantm" Date: Mon, 3 Nov 2025 23:58:58 +0000 Subject: [PATCH 21/38] ramalama: 0.13.0 -> 0.14.0 --- pkgs/by-name/ra/ramalama/package.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/by-name/ra/ramalama/package.nix b/pkgs/by-name/ra/ramalama/package.nix index 07f493703910..8cf3a2ef07c9 100644 --- a/pkgs/by-name/ra/ramalama/package.nix +++ b/pkgs/by-name/ra/ramalama/package.nix @@ -14,14 +14,14 @@ python3Packages.buildPythonApplication rec { pname = "ramalama"; - version = "0.13.0"; + version = "0.14.0"; pyproject = true; src = fetchFromGitHub { owner = "containers"; repo = "ramalama"; tag = "v${version}"; - hash = "sha256-S4TZN+vExZ/5KJOgkhwlX0p+xPDI6tjmS2WDWgXzDOI="; + hash = "sha256-4RoZX8CzMGNGsh8TawPYYMi2ZZXDIGfD/p94SS+326Y="; }; build-system = with python3Packages; [ From 756aaeed238c31c6e0a1f6632faf2abe35494afb Mon Sep 17 00:00:00 2001 From: "R. Ryantm" Date: Tue, 4 Nov 2025 07:29:36 +0000 Subject: [PATCH 22/38] cockpit: 349 -> 350 --- pkgs/by-name/co/cockpit/package.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/by-name/co/cockpit/package.nix b/pkgs/by-name/co/cockpit/package.nix index add9765fa17e..4744288b360e 100644 --- a/pkgs/by-name/co/cockpit/package.nix +++ b/pkgs/by-name/co/cockpit/package.nix @@ -44,13 +44,13 @@ stdenv.mkDerivation (finalAttrs: { pname = "cockpit"; - version = "349"; + version = "350"; src = fetchFromGitHub { owner = "cockpit-project"; repo = "cockpit"; tag = finalAttrs.version; - hash = "sha256-MfZPT0gY3G4Tkp2TQN7HZVgy1oiJU9zrIzaLU8r9FjU="; + hash = "sha256-DOMX3msM5Ko7TDMRS+GcAf+gmyogjSExNEM9sjK0cCY="; fetchSubmodules = true; }; From 403b09dc7e68b449d9c33dd79f353d232ade3054 Mon Sep 17 00:00:00 2001 From: LinuxWhatA <68576488+LinuxWhatA@users.noreply.github.com> Date: Tue, 4 Nov 2025 21:10:07 +0800 Subject: [PATCH 23/38] linuxPackages.nvidiaPackages.legacy_(390,470}: patch for linux 6.17 --- pkgs/os-specific/linux/nvidia-x11/default.nix | 62 ++++++++++++------- .../linux/nvidia-x11/follow_pfn.patch | 61 ------------------ 2 files changed, 40 insertions(+), 83 deletions(-) delete mode 100644 pkgs/os-specific/linux/nvidia-x11/follow_pfn.patch diff --git a/pkgs/os-specific/linux/nvidia-x11/default.nix b/pkgs/os-specific/linux/nvidia-x11/default.nix index 7c58fb9fee8a..c34102f0b486 100644 --- a/pkgs/os-specific/linux/nvidia-x11/default.nix +++ b/pkgs/os-specific/linux/nvidia-x11/default.nix @@ -50,8 +50,8 @@ let # Source corresponding to https://aur.archlinux.org/packages/nvidia-390xx-dkms aurPatches = fetchgit { url = "https://aur.archlinux.org/nvidia-390xx-utils.git"; - rev = "94dffc01e23a93c354a765ea7ac64484a3ef96c1"; - hash = "sha256-c94qXNZyMrSf7Dik7jvz2ECaGELqN7WEYNpnbUkzeeU="; + rev = "cf1a1c571c425b4b66d12e468fc4ce45a397c583"; + hash = "sha256-SERB5ihOroagJn7apAiqjUckbrfP2FZPCuTLWcBccoM="; }; # https://github.com/NVIDIA/open-gpu-kernel-modules/issues/840 @@ -166,26 +166,39 @@ rec { }; # Last one supporting Kepler architecture - legacy_470 = generic { - version = "470.256.02"; - sha256_64bit = "sha256-1kUYYt62lbsER/O3zWJo9z6BFowQ4sEFl/8/oBNJsd4="; - sha256_aarch64 = "sha256-e+QvE+S3Fv3JRqC9ZyxTSiCu8gJdZXSz10gF/EN6DY0="; - settingsSha256 = "sha256-kftQ4JB0iSlE8r/Ze/+UMnwLzn0nfQtqYXBj+t6Aguk="; - persistencedSha256 = "sha256-iYoSib9VEdwjOPBP1+Hx5wCIMhW8q8cCHu9PULWfnyQ="; + legacy_470 = + let + # Source corresponding to https://aur.archlinux.org/packages/nvidia-470xx-dkms + aurPatches = fetchgit { + url = "https://aur.archlinux.org/nvidia-470xx-utils.git"; + rev = "7c1c2c124147d960a6c7114eb26a4eadae9b9f3d"; + hash = "sha256-sNW+I4dkPSudfORLEp1RNGHyQKWBYnBEeGrfJU7SYTs="; + }; + in + generic { + version = "470.256.02"; + sha256_64bit = "sha256-1kUYYt62lbsER/O3zWJo9z6BFowQ4sEFl/8/oBNJsd4="; + sha256_aarch64 = "sha256-e+QvE+S3Fv3JRqC9ZyxTSiCu8gJdZXSz10gF/EN6DY0="; + settingsSha256 = "sha256-kftQ4JB0iSlE8r/Ze/+UMnwLzn0nfQtqYXBj+t6Aguk="; + persistencedSha256 = "sha256-iYoSib9VEdwjOPBP1+Hx5wCIMhW8q8cCHu9PULWfnyQ="; - patches = [ - "${aurPatches}/gcc-14.patch" - # fixes 6.10 follow_pfn - ./follow_pfn.patch - # https://gist.github.com/joanbm/a6d3f7f873a60dec0aa4a734c0f1d64e - (fetchpatch { - url = "https://gist.github.com/joanbm/a6d3f7f873a60dec0aa4a734c0f1d64e/raw/6bae5606c033b6c6c08233523091992370e357b7/nvidia-470xx-fix-linux-6.12.patch"; - hash = "sha256-6nbzcRTRCxW8GDAhB8Zwx9rVcCzwPtVYlqoUhL9gxlY="; - stripLen = 1; - extraPrefix = "kernel/"; - }) - ]; - }; + patches = map (patch: "${aurPatches}/${patch}") [ + "0001-Fix-conftest-to-ignore-implicit-function-declaration.patch" + "0002-Fix-conftest-to-use-a-short-wchar_t.patch" + "0003-Fix-conftest-to-use-nv_drm_gem_vmap-which-has-the-se.patch" + "nvidia-470xx-fix-gcc-15.patch" + "kernel-6.10.patch" + "kernel-6.12.patch" + "nvidia-470xx-fix-linux-6.13.patch" + "nvidia-470xx-fix-linux-6.14.patch" + "nvidia-470xx-fix-linux-6.15.patch" + "nvidia-470xx-fix-linux-6.17.patch" + ]; + patchFlags = [ + "-p1" + "--directory=kernel" + ]; + }; # Last one supporting x86 legacy_390 = generic { @@ -206,8 +219,13 @@ rec { "gcc-14.patch" "kernel-6.10.patch" "kernel-6.12.patch" + "kernel-6.13.patch" + "kernel-6.14.patch" + "gcc-15.patch" + "kernel-6.15.patch" + "kernel-6.17.patch" ]; - broken = kernel.kernelAtLeast "6.13"; + broken = kernel.kernelAtLeast "6.18"; # fixes the bug described in https://bbs.archlinux.org/viewtopic.php?pid=2083439#p2083439 # see https://bbs.archlinux.org/viewtopic.php?pid=2083651#p2083651 diff --git a/pkgs/os-specific/linux/nvidia-x11/follow_pfn.patch b/pkgs/os-specific/linux/nvidia-x11/follow_pfn.patch deleted file mode 100644 index 19026229bd1d..000000000000 --- a/pkgs/os-specific/linux/nvidia-x11/follow_pfn.patch +++ /dev/null @@ -1,61 +0,0 @@ -diff -ruNb a/kernel/conftest.sh b/kernel/conftest.sh ---- a/kernel/conftest.sh 2024-07-19 04:36:26.183701185 -0500 -+++ b/kernel/conftest.sh 2024-07-19 04:36:26.230366381 -0500 -@@ -4464,20 +4464,22 @@ - compile_check_conftest "$CODE" "NV_DRM_GEM_OBJECT_VMAP_HAS_MAP_ARG" "" "types" - ;; - -- unsafe_follow_pfn) -+ follow_pfn) - # -- # Determine if unsafe_follow_pfn() is present. -+ # Determine if follow_pfn() is present. - # -- # unsafe_follow_pfn() was added by commit 69bacee7f9ad -- # ("mm: Add unsafe_follow_pfn") in v5.13-rc1. -+ # follow_pfn() was added by commit 3b6748e2dd69 -+ # ("mm: introduce follow_pfn()") in v2.6.31-rc1, and removed -+ # by commit 233eb0bf3b94 ("mm: remove follow_pfn") -+ # from linux-next 233eb0bf3b94. - # - CODE=" - #include -- void conftest_unsafe_follow_pfn(void) { -- unsafe_follow_pfn(); -+ void conftest_follow_pfn(void) { -+ follow_pfn(); - }" - -- compile_check_conftest "$CODE" "NV_UNSAFE_FOLLOW_PFN_PRESENT" "" "functions" -+ compile_check_conftest "$CODE" "NV_FOLLOW_PFN_PRESENT" "" "functions" - ;; - - drm_plane_atomic_check_has_atomic_state_arg) -diff -ruNb a/kernel/nvidia/nvidia.Kbuild b/kernel/nvidia/nvidia.Kbuild ---- a/kernel/nvidia/nvidia.Kbuild 2022-10-12 04:29:57.000000000 -0500 -+++ b/kernel/nvidia/nvidia.Kbuild 2024-07-19 05:17:39.148448922 -0500 -@@ -164,7 +164,7 @@ NV_CONFTEST_FUNCTION_COMPILE_TESTS += cc - NV_CONFTEST_FUNCTION_COMPILE_TESTS += iterate_fd - NV_CONFTEST_FUNCTION_COMPILE_TESTS += seq_read_iter - NV_CONFTEST_FUNCTION_COMPILE_TESTS += sg_page_iter_page --NV_CONFTEST_FUNCTION_COMPILE_TESTS += unsafe_follow_pfn -+NV_CONFTEST_FUNCTION_COMPILE_TESTS += follow_pfn - NV_CONFTEST_FUNCTION_COMPILE_TESTS += drm_gem_object_get - NV_CONFTEST_FUNCTION_COMPILE_TESTS += drm_gem_object_put_unlocked - NV_CONFTEST_FUNCTION_COMPILE_TESTS += set_close_on_exec -diff -ruNb a/kernel/nvidia/os-mlock.c b/kernel/nvidia/os-mlock.c ---- a/kernel/nvidia/os-mlock.c 2022-10-12 04:30:26.000000000 -0500 -+++ b/kernel/nvidia/os-mlock.c 2024-07-19 04:36:26.230366381 -0500 -@@ -18,10 +18,10 @@ - unsigned long address, - unsigned long *pfn) - { --#if defined(NV_UNSAFE_FOLLOW_PFN_PRESENT) -- return unsafe_follow_pfn(vma, address, pfn); --#else -+#if defined(NV_FOLLOW_PFN_PRESENT) - return follow_pfn(vma, address, pfn); -+#else -+ return -1; - #endif - } \ No newline at end of file From 77da231087a87bb47aa93256d55190018ad6ff53 Mon Sep 17 00:00:00 2001 From: "R. Ryantm" Date: Tue, 4 Nov 2025 19:59:12 +0000 Subject: [PATCH 24/38] rainfrog: 0.3.8 -> 0.3.9 --- pkgs/by-name/ra/rainfrog/package.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/by-name/ra/rainfrog/package.nix b/pkgs/by-name/ra/rainfrog/package.nix index 1f2f2b32f230..ef4b1402fd24 100644 --- a/pkgs/by-name/ra/rainfrog/package.nix +++ b/pkgs/by-name/ra/rainfrog/package.nix @@ -7,7 +7,7 @@ rainfrog, }: let - version = "0.3.8"; + version = "0.3.9"; in rustPlatform.buildRustPackage { inherit version; @@ -17,10 +17,10 @@ rustPlatform.buildRustPackage { owner = "achristmascarl"; repo = "rainfrog"; tag = "v${version}"; - hash = "sha256-VdfzNBPl32aUBQFHNFdjbZoTKhraOMlTw+tSlGSZ+yk="; + hash = "sha256-gfg73cvt0CJb80WOUlYZFWCuumFs4/nMZepmOPvYloY="; }; - cargoHash = "sha256-4Hom/93JU0YL4F/XL3zwWqWjfW5sW6HBeI/IpVbRoVs="; + cargoHash = "sha256-P1HJTYNROuoU1E4hmmpROMuudgYlRlWsRuUmJAEdY94="; passthru = { tests.version = testers.testVersion { From f38f11b9388ccef700c996f9c531c1930f541aba Mon Sep 17 00:00:00 2001 From: Sergei Trofimovich Date: Tue, 4 Nov 2025 21:18:32 +0000 Subject: [PATCH 25/38] direwolf-unstable: drop `cmake-4` (fix build) Without the change the build fails as https://hydra.nixos.org/build/310538394: applying patch /nix/store/m9bm8k97zc0yn514psfnf53x8v1ws49q-c499496bbc237d0efdcacec5786607f5e17c1c7e.patch patching file CMakeLists.txt Reversed (or previously applied) patch detected! Assume -R? [n] Apply anyway? [n] Skipping patch. 1 out of 1 hunk ignored -- saving rejects to file CMakeLists.txt.rej --- pkgs/by-name/di/direwolf-unstable/package.nix | 3 +++ 1 file changed, 3 insertions(+) diff --git a/pkgs/by-name/di/direwolf-unstable/package.nix b/pkgs/by-name/di/direwolf-unstable/package.nix index 7a9352f7ffb4..88a621623bcf 100644 --- a/pkgs/by-name/di/direwolf-unstable/package.nix +++ b/pkgs/by-name/di/direwolf-unstable/package.nix @@ -21,6 +21,9 @@ hash = "sha256-VFBkOWHGZP7GjekHL3GY3BGkVXQbtyD1YPmu0xaQ1ME="; }; + # drop upstreamed cmake-4 patch + patches = [ ]; + postPatch = builtins.replaceStrings [ From d73879457c73b6f51193f1d96903c6a34cf161a8 Mon Sep 17 00:00:00 2001 From: "R. Ryantm" Date: Tue, 4 Nov 2025 21:44:55 +0000 Subject: [PATCH 26/38] gemini-cli-bin: 0.10.0 -> 0.11.3 --- pkgs/by-name/ge/gemini-cli-bin/package.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/by-name/ge/gemini-cli-bin/package.nix b/pkgs/by-name/ge/gemini-cli-bin/package.nix index 5ed70043cd35..7258c5a2cc05 100644 --- a/pkgs/by-name/ge/gemini-cli-bin/package.nix +++ b/pkgs/by-name/ge/gemini-cli-bin/package.nix @@ -8,11 +8,11 @@ }: stdenvNoCC.mkDerivation (finalAttrs: { pname = "gemini-cli-bin"; - version = "0.10.0"; + version = "0.11.3"; src = fetchurl { url = "https://github.com/google-gemini/gemini-cli/releases/download/v${finalAttrs.version}/gemini.js"; - hash = "sha256-jwyx5HWjPi2S5GQFxV+VeuwrmjmLi+F1nzw4YMfNSiA="; + hash = "sha256-JReB8+4+Pnbo8XsLGmcZ0xKjuFHeRC3e5uuhGOM/06I="; }; dontUnpack = true; From 29ee881651bcb348c11281d66bdba2a3709cdd69 Mon Sep 17 00:00:00 2001 From: "R. Ryantm" Date: Tue, 4 Nov 2025 22:00:23 +0000 Subject: [PATCH 27/38] eiquadprog: 1.3.0 -> 1.3.1 --- pkgs/by-name/ei/eiquadprog/package.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/by-name/ei/eiquadprog/package.nix b/pkgs/by-name/ei/eiquadprog/package.nix index 068c0cf73c70..3528b88e5cae 100644 --- a/pkgs/by-name/ei/eiquadprog/package.nix +++ b/pkgs/by-name/ei/eiquadprog/package.nix @@ -12,13 +12,13 @@ stdenv.mkDerivation (finalAttrs: { pname = "eiquadprog"; - version = "1.3.0"; + version = "1.3.1"; src = fetchFromGitHub { owner = "stack-of-tasks"; repo = "eiquadprog"; rev = "v${finalAttrs.version}"; - hash = "sha256-8CwyTREHzTtgXTnzAIcRAlKm3fBEUEeMxNwzzEMADqk="; + hash = "sha256-FV6A3cMaY7+eDip9YjuX0cYz0X6tdpDRV57eXOb9bKQ="; }; outputs = [ From 2854b7e0d9cee45d470e964f679629585ce5cc87 Mon Sep 17 00:00:00 2001 From: "R. Ryantm" Date: Tue, 4 Nov 2025 22:14:59 +0000 Subject: [PATCH 28/38] python3Packages.snakemake-storage-plugin-fs: 1.1.2 -> 1.1.3 --- .../python-modules/snakemake-storage-plugin-fs/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/python-modules/snakemake-storage-plugin-fs/default.nix b/pkgs/development/python-modules/snakemake-storage-plugin-fs/default.nix index 2bc8ba095c2b..97c0bf3576ab 100644 --- a/pkgs/development/python-modules/snakemake-storage-plugin-fs/default.nix +++ b/pkgs/development/python-modules/snakemake-storage-plugin-fs/default.nix @@ -10,14 +10,14 @@ buildPythonPackage rec { pname = "snakemake-storage-plugin-fs"; - version = "1.1.2"; + version = "1.1.3"; pyproject = true; src = fetchFromGitHub { owner = "snakemake"; repo = "snakemake-storage-plugin-fs"; tag = "v${version}"; - hash = "sha256-bTkT1D2GJGS+zWvK/BUGLGE8ArZQikHHcdQjREJhldg="; + hash = "sha256-UdK0yhl7ljLh57CXAvH/OYiVyw+BjhPwGjSBXX8sbZk="; }; build-system = [ poetry-core ]; From fefa07a30dd04535cbf30edb2d2fb7c65f2563b6 Mon Sep 17 00:00:00 2001 From: "R. Ryantm" Date: Tue, 4 Nov 2025 22:21:52 +0000 Subject: [PATCH 29/38] avalanche-cli: 1.9.2 -> 1.9.3 --- pkgs/by-name/av/avalanche-cli/package.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/by-name/av/avalanche-cli/package.nix b/pkgs/by-name/av/avalanche-cli/package.nix index ab6433678b3f..02bb6c87346b 100644 --- a/pkgs/by-name/av/avalanche-cli/package.nix +++ b/pkgs/by-name/av/avalanche-cli/package.nix @@ -14,17 +14,17 @@ }: buildGoModule (finalAttrs: { pname = "avalanche-cli"; - version = "1.9.2"; + version = "1.9.3"; src = fetchFromGitHub { owner = "ava-labs"; repo = "avalanche-cli"; tag = "v${finalAttrs.version}"; - hash = "sha256-/HwZUsggBeuSZLYQDWUU4rfktnvwVolE5mKiZW4IXXs="; + hash = "sha256-1sQdQTWlUNWM8F/9/DZjn/WS3F0RTG4hglmoN2jjOyc="; }; proxyVendor = true; - vendorHash = "sha256-JQEWEqseg5q0b8rPlO/19V1BLbWBdXldoWgUiqI9Qh4="; + vendorHash = "sha256-bId5FDdpgI8DTtY44cgATf41qLu8udLR00XioZOAh/Y="; # Fix error: 'Caught SIGILL in blst_cgo_init' # https://github.com/bnb-chain/bsc/issues/1521 From 013ca8b934b4bbd380f9c7e73af18b8e5fc82328 Mon Sep 17 00:00:00 2001 From: "R. Ryantm" Date: Tue, 4 Nov 2025 22:46:35 +0000 Subject: [PATCH 30/38] terraform-providers.heroku_heroku: 5.3.1 -> 5.3.2 --- .../networking/cluster/terraform-providers/providers.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/applications/networking/cluster/terraform-providers/providers.json b/pkgs/applications/networking/cluster/terraform-providers/providers.json index d4479da25c77..0245e490822a 100644 --- a/pkgs/applications/networking/cluster/terraform-providers/providers.json +++ b/pkgs/applications/networking/cluster/terraform-providers/providers.json @@ -687,11 +687,11 @@ "vendorHash": "sha256-47xWjlzpQ/EYzjbuuMKQiu5cfYAXdYkXRl+AOEP+sA4=" }, "heroku_heroku": { - "hash": "sha256-VGx2J7huF05HU/59Hyo2rxwV3SR+kVJWtrfWoRmln2o=", + "hash": "sha256-hR4DvSneqG/5P4tYljcuFxQ34AnDIjIt+JMn1BhloeU=", "homepage": "https://registry.terraform.io/providers/heroku/heroku", "owner": "heroku", "repo": "terraform-provider-heroku", - "rev": "v5.3.1", + "rev": "v5.3.2", "spdx": "MPL-2.0", "vendorHash": null }, From 4a807ebfd7f4ece79b5dac8ca02bde7e94490608 Mon Sep 17 00:00:00 2001 From: Gaetan Lepage Date: Sun, 2 Nov 2025 11:38:24 +0000 Subject: [PATCH 31/38] cudaPackages.nccl: remove reference to nvcc in binary --- pkgs/development/cuda-modules/packages/nccl.nix | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/pkgs/development/cuda-modules/packages/nccl.nix b/pkgs/development/cuda-modules/packages/nccl.nix index ea3d1f3d2cb0..ea5fa5e589a7 100644 --- a/pkgs/development/cuda-modules/packages/nccl.nix +++ b/pkgs/development/cuda-modules/packages/nccl.nix @@ -10,6 +10,7 @@ flags, lib, python3, + removeReferencesTo, which, # passthru.updateScript gitUpdater, @@ -72,6 +73,7 @@ backendStdenv.mkDerivation (finalAttrs: { nativeBuildInputs = [ cuda_nvcc python3 + removeReferencesTo which ]; @@ -117,8 +119,22 @@ backendStdenv.mkDerivation (finalAttrs: { postFixup = '' _overrideFirst outputStatic "static" "lib" "out" moveToOutput lib/libnccl_static.a "''${!outputStatic:?}" + '' + # Since CUDA 12.8, the cuda_nvcc path leaks in: + # - libnccl.so's .nv_fatbin section + # - libnccl_static.a + # &devrt -L /nix/store/00000000000000000000000000000000-...nvcc-.../bin/... + # This string makes cuda_nvcc a runtime dependency of nccl. + # See https://github.com/NixOS/nixpkgs/pull/457803 + + '' + remove-references-to -t "${lib.getBin cuda_nvcc}" \ + ''${!outputLib}/lib/libnccl.so.* \ + ''${!outputStatic}/lib/*.a ''; + # C.f. remove-references-to above. Ensure *all* references to cuda_nvcc are removed + disallowedRequisites = [ (lib.getBin cuda_nvcc) ]; + passthru = { platformAssertions = [ { From 1eb39d0ea75b8e0646bc62bbe345aa6af146f3da Mon Sep 17 00:00:00 2001 From: Gaetan Lepage Date: Sun, 2 Nov 2025 16:38:01 +0000 Subject: [PATCH 32/38] onnxruntime: remove reference to nvcc in libonnxruntime_providers_cuda.so --- pkgs/by-name/on/onnxruntime/package.nix | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/pkgs/by-name/on/onnxruntime/package.nix b/pkgs/by-name/on/onnxruntime/package.nix index bd91c2d2584f..7325b481285f 100644 --- a/pkgs/by-name/on/onnxruntime/package.nix +++ b/pkgs/by-name/on/onnxruntime/package.nix @@ -17,6 +17,7 @@ perl, pkg-config, python3Packages, + removeReferencesTo, re2, zlib, protobuf, @@ -44,6 +45,7 @@ let stdenv = throw "Use effectiveStdenv instead"; effectiveStdenv = if cudaSupport then cudaPackages.backendStdenv else inputs.stdenv; + inherit (cudaPackages) cuda_nvcc; cudaArchitecturesString = cudaPackages.flags.cmakeCudaArchitecturesString; @@ -121,6 +123,7 @@ effectiveStdenv.mkDerivation rec { ++ lib.optionals cudaSupport [ cudaPackages.cuda_nvcc cudaPackages.cudnn-frontend + removeReferencesTo ] ++ lib.optionals isCudaJetson [ cudaPackages.autoAddCudaCompatRunpath @@ -318,6 +321,12 @@ effectiveStdenv.mkDerivation rec { ../include/onnxruntime/core/session/onnxruntime_*.h ''; + # See comments in `cudaPackages.nccl` + postFixup = lib.optionalString cudaSupport '' + remove-references-to -t "${lib.getBin cuda_nvcc}" ''${!outputLib}/lib/libonnxruntime_providers_cuda.so + ''; + disallowedRequisites = [ (lib.getBin cuda_nvcc) ]; + passthru = { inherit cudaSupport cudaPackages ncclSupport; # for the python module inherit protobuf; From 66260cc8c48f38529c559ce9529d9398bc8d4837 Mon Sep 17 00:00:00 2001 From: Matt Sturgeon Date: Wed, 5 Nov 2025 00:11:26 +0000 Subject: [PATCH 33/38] ci/treefmt: disable biome for now Disable biome due to a hash mismatch with validation for the `settings.formatter.biome.options` option. See https://github.com/numtide/treefmt-nix/pull/430 --- ci/default.nix | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/ci/default.nix b/ci/default.nix index 972c679a1492..3aa463095cde 100644 --- a/ci/default.nix +++ b/ci/default.nix @@ -48,7 +48,8 @@ let programs.actionlint.enable = true; programs.biome = { - enable = true; + # FIXME: Disabled temporarily due to https://github.com/numtide/treefmt-nix/pull/430 + enable = false; settings.formatter = { useEditorconfig = true; }; @@ -58,10 +59,10 @@ let }; settings.json.formatter.enabled = false; }; - settings.formatter.biome.excludes = [ - "*.min.js" - "pkgs/*" - ]; + # settings.formatter.biome.excludes = [ + # "*.min.js" + # "pkgs/*" + # ]; programs.keep-sorted.enable = true; From 1c6f95acd748893cef7abb11cdd96df4ece9cef8 Mon Sep 17 00:00:00 2001 From: "R. Ryantm" Date: Wed, 5 Nov 2025 01:09:40 +0000 Subject: [PATCH 34/38] fscrypt-experimental: 0.3.5 -> 0.3.6 --- pkgs/by-name/fs/fscrypt-experimental/package.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/by-name/fs/fscrypt-experimental/package.nix b/pkgs/by-name/fs/fscrypt-experimental/package.nix index 1aa974b60e8f..7d3515ca146c 100644 --- a/pkgs/by-name/fs/fscrypt-experimental/package.nix +++ b/pkgs/by-name/fs/fscrypt-experimental/package.nix @@ -11,13 +11,13 @@ buildGoModule rec { pname = "fscrypt"; - version = "0.3.5"; + version = "0.3.6"; src = fetchFromGitHub { owner = "google"; repo = "fscrypt"; rev = "v${version}"; - hash = "sha256-US1jw0XK1BcP037XPhttzBloDU62m4BVSIbsGs9LaJU="; + hash = "sha256-iz/lkLDHJkyAHqSlzr8vbcbZv9N/c1evNufeAFNdcag="; }; postPatch = '' @@ -26,7 +26,7 @@ buildGoModule rec { --replace "/usr/local" "$out" ''; - vendorHash = "sha256-FuVWV3Rimhd+Pm9wrKGLWQWtbP1hWvoWa22pQT+m2go="; + vendorHash = "sha256-0bCpmwWWTLWsa3P5ERwOCJ1we1sofqqPXy5JlZsqJpk="; doCheck = false; From 71bda90ee9425ad74c7e3bf2a8784b6d8524317d Mon Sep 17 00:00:00 2001 From: Martin Weinelt Date: Tue, 28 Oct 2025 23:48:08 +0100 Subject: [PATCH 35/38] maintainers: retire pbogdan No active contributions since 2020. --- maintainers/maintainer-list.nix | 6 ------ pkgs/applications/audio/quodlibet/default.nix | 4 +--- pkgs/by-name/gn/gnome-feeds/package.nix | 1 - 3 files changed, 1 insertion(+), 10 deletions(-) diff --git a/maintainers/maintainer-list.nix b/maintainers/maintainer-list.nix index e1872cc3e4b3..cfc9a9407c29 100644 --- a/maintainers/maintainer-list.nix +++ b/maintainers/maintainer-list.nix @@ -20018,12 +20018,6 @@ githubId = 6498458; name = "pebble kite"; }; - pbogdan = { - email = "ppbogdan@gmail.com"; - github = "pbogdan"; - githubId = 157610; - name = "Piotr Bogdan"; - }; pborzenkov = { email = "pavel@borzenkov.net"; github = "pborzenkov"; diff --git a/pkgs/applications/audio/quodlibet/default.nix b/pkgs/applications/audio/quodlibet/default.nix index 01159d75be44..d1740db71df6 100644 --- a/pkgs/applications/audio/quodlibet/default.nix +++ b/pkgs/applications/audio/quodlibet/default.nix @@ -193,8 +193,6 @@ python3.pkgs.buildPythonApplication rec { ''; homepage = "https://quodlibet.readthedocs.io/en/latest"; license = lib.licenses.gpl2Plus; - maintainers = with lib.maintainers; [ - pbogdan - ]; + maintainers = [ ]; }; } diff --git a/pkgs/by-name/gn/gnome-feeds/package.nix b/pkgs/by-name/gn/gnome-feeds/package.nix index e502a17bdbed..7e4765a50dea 100644 --- a/pkgs/by-name/gn/gnome-feeds/package.nix +++ b/pkgs/by-name/gn/gnome-feeds/package.nix @@ -87,7 +87,6 @@ python3.pkgs.buildPythonApplication rec { homepage = "https://gitlab.gnome.org/World/gfeeds"; license = lib.licenses.gpl3Plus; maintainers = with lib.maintainers; [ - pbogdan aleksana ]; platforms = lib.platforms.linux; From 45c4fe3da0107ebd6d8c3a492f1ce471670b0fd0 Mon Sep 17 00:00:00 2001 From: "R. Ryantm" Date: Wed, 5 Nov 2025 01:32:59 +0000 Subject: [PATCH 36/38] firefly-iii: 6.4.2 -> 6.4.4 --- pkgs/by-name/fi/firefly-iii/package.nix | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/pkgs/by-name/fi/firefly-iii/package.nix b/pkgs/by-name/fi/firefly-iii/package.nix index cc0d673ec4a6..878ba077a170 100644 --- a/pkgs/by-name/fi/firefly-iii/package.nix +++ b/pkgs/by-name/fi/firefly-iii/package.nix @@ -13,13 +13,13 @@ stdenvNoCC.mkDerivation (finalAttrs: { pname = "firefly-iii"; - version = "6.4.2"; + version = "6.4.4"; src = fetchFromGitHub { owner = "firefly-iii"; repo = "firefly-iii"; tag = "v${finalAttrs.version}"; - hash = "sha256-nGXFFGVw0TCXSBwMExk6wn0Es0HwCnY4P+nbJki+R6A="; + hash = "sha256-RRjTl3lZv/hoM6Jy3lB9/IFRq+w9ZKikOMqRRyV7MBw="; }; buildInputs = [ php84 ]; @@ -38,13 +38,13 @@ stdenvNoCC.mkDerivation (finalAttrs: { composerNoScripts = true; composerStrictValidation = true; strictDeps = true; - vendorHash = "sha256-siLLtF/B2eNsRaazq5zOXnFeFPlEeoSAIXYKEsrHv28="; + vendorHash = "sha256-lR900I79H5y+nDEXTvCUbHP4VpPsmNCIixUK1NtEiOQ="; }; npmDeps = fetchNpmDeps { inherit (finalAttrs) src; name = "${finalAttrs.pname}-npm-deps"; - hash = "sha256-WV1MsCbYxEHUEw0yYqD8b9jracyLVbpndWuHY0ZbaEM="; + hash = "sha256-d3x8Yw8ruIneaKCLsb1M9lwW2mtNmSkzVe8/4ia5GW0="; }; preInstall = '' From 988d4becb04f7ac3659b92c75891ed880a58c974 Mon Sep 17 00:00:00 2001 From: Alexandre Esteves Date: Tue, 4 Nov 2025 23:51:47 +0000 Subject: [PATCH 37/38] androidenv.composeAndroidPackages: fix eval when minor versions are specified --- .../mobile/androidenv/compose-android-packages.nix | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/pkgs/development/mobile/androidenv/compose-android-packages.nix b/pkgs/development/mobile/androidenv/compose-android-packages.nix index 413759a5f88e..33332ea8386d 100644 --- a/pkgs/development/mobile/androidenv/compose-android-packages.nix +++ b/pkgs/development/mobile/androidenv/compose-android-packages.nix @@ -14,6 +14,8 @@ let # Coerces a string to an int. coerceInt = val: if lib.isInt val then val else lib.toIntBase10 val; + coerceIntVersion = v: coerceInt (lib.versions.major v); + # Parses a single version, substituting "latest" with the latest version. parseVersion = repo: key: version: @@ -97,8 +99,8 @@ in platformVersions ? if minPlatformVersion != null && maxPlatformVersion != null then let - minPlatformVersionInt = coerceInt (parseVersion repo "platforms" minPlatformVersion); - maxPlatformVersionInt = coerceInt (parseVersion repo "platforms" maxPlatformVersion); + minPlatformVersionInt = coerceIntVersion (parseVersion repo "platforms" minPlatformVersion); + maxPlatformVersionInt = coerceIntVersion (parseVersion repo "platforms" maxPlatformVersion); in lib.range (lib.min minPlatformVersionInt maxPlatformVersionInt) ( lib.max minPlatformVersionInt maxPlatformVersionInt @@ -109,10 +111,8 @@ in if minPlatformVersion == null then 1 else - coerceInt (parseVersion repo "platforms" minPlatformVersion); - latestPlatformVersionInt = lib.max minPlatformVersionInt ( - coerceInt (lib.versions.major repo.latest.platforms) - ); + coerceIntVersion (parseVersion repo "platforms" minPlatformVersion); + latestPlatformVersionInt = lib.max minPlatformVersionInt (coerceIntVersion repo.latest.platforms); firstPlatformVersionInt = lib.max minPlatformVersionInt ( latestPlatformVersionInt - (lib.max 1 numLatestPlatformVersions) + 1 ); From fd752c0e957521eb59e77710d3bf659a1769d609 Mon Sep 17 00:00:00 2001 From: Aaron Andersen Date: Tue, 4 Nov 2025 20:42:48 -0500 Subject: [PATCH 38/38] kodi: 21.2 -> 21.3 --- pkgs/applications/video/kodi/unwrapped.nix | 20 ++------------------ 1 file changed, 2 insertions(+), 18 deletions(-) diff --git a/pkgs/applications/video/kodi/unwrapped.nix b/pkgs/applications/video/kodi/unwrapped.nix index 22719bf31bb4..6d1275a055f3 100644 --- a/pkgs/applications/video/kodi/unwrapped.nix +++ b/pkgs/applications/video/kodi/unwrapped.nix @@ -3,7 +3,6 @@ lib, fetchFromGitHub, fetchzip, - fetchpatch, autoconf, automake, libtool, @@ -245,31 +244,16 @@ stdenv.mkDerivation ( in { pname = "kodi"; - version = "21.2"; + version = "21.3"; kodiReleaseName = "Omega"; src = fetchFromGitHub { owner = "xbmc"; repo = "xbmc"; rev = "${finalAttrs.version}-${finalAttrs.kodiReleaseName}"; - hash = "sha256-RdTJcq6FPerQx05dU3r8iyaorT4L7162hg5RdywsA88="; + hash = "sha256-36wBAqGEDCRZ4t1ygTg03Pyk7Gg9quUTUGD3SBp6nCk="; }; - patches = [ - # Backport to fix build with Pipewire 1.4 - # FIXME: remove in the next update - (fetchpatch { - url = "https://github.com/xbmc/xbmc/commit/269053ebbfd3cc4a3156a511f54ab7f08a09a730.patch"; - hash = "sha256-JzzrMJvAufrxTxtWnzknUS9JLJEed+qdtVnIYYe9LCw="; - }) - # Backport to fix build with cURL 8.16 - # FIXME: remove in the next update - (fetchpatch { - url = "https://github.com/xbmc/xbmc/commit/957b4faa0b765bc91e64c6d33f07e853decae0d0.patch"; - hash = "sha256-zsqcZSjsApcgs/oEdFFlcwldGCVZxCsDG02ogs+q2uw="; - }) - ]; - # make derivations declared in the let binding available here, so # they can be overridden inherit