diff --git a/ci/github-script/merge.js b/ci/github-script/merge.js index f0867ab3eae2..964201bc3d9e 100644 --- a/ci/github-script/merge.js +++ b/ci/github-script/merge.js @@ -194,6 +194,7 @@ async function handleMerge({ }`, { node_id: pull_request.node_id, sha: pull_request.head.sha }, ) + log('merge', 'Queued for merge') return [ `:heavy_check_mark: [Queued](${resp.enqueuePullRequest.mergeQueueEntry.mergeQueue.url}) for merge (#306934)`, ] @@ -215,6 +216,7 @@ async function handleMerge({ }`, { node_id: pull_request.node_id, sha: pull_request.head.sha }, ) + log('merge', 'Auto-merge enabled') return [ `:heavy_check_mark: Enabled Auto Merge (#306934)`, '', diff --git a/pkgs/applications/editors/android-studio/common.nix b/pkgs/applications/editors/android-studio/common.nix index 3724d382ee0c..7a3484140eba 100644 --- a/pkgs/applications/editors/android-studio/common.nix +++ b/pkgs/applications/editors/android-studio/common.nix @@ -2,6 +2,7 @@ channel, pname, version, + url, sha256Hash, }: @@ -88,7 +89,7 @@ let inherit version; src = fetchurl { - url = "https://dl.google.com/dl/android/studio/ide-zips/${version}/${filename}"; + url = url; sha256 = sha256Hash; }; diff --git a/pkgs/applications/editors/android-studio/default.nix b/pkgs/applications/editors/android-studio/default.nix index 82bf8c761bb5..35af9bf0cc73 100644 --- a/pkgs/applications/editors/android-studio/default.nix +++ b/pkgs/applications/editors/android-studio/default.nix @@ -16,16 +16,19 @@ let inherit tiling_wm; }; stableVersion = { - version = "2025.2.3.9"; # "Android Studio Otter 3 Feature Drop | 2025.2.3" - sha256Hash = "sha256-mG6myss22nI/LIVQzM19jNPouLe7JEbTqL85u6+Rq8E="; + version = "2025.3.2.6"; # "Android Studio Panda 2 | 2025.3.2" + sha256Hash = "sha256-MpQtjNdogZLPPNB78oL7EgA1ub2bVubxPFVA5tOYB+k="; + url = "https://edgedl.me.gvt1.com/android/studio/ide-zips/2025.3.2.6/android-studio-panda2-linux.tar.gz"; }; betaVersion = { - version = "2025.2.3.8"; # "Android Studio Otter 3 Feature Drop | 2025.2.3 RC 3" - sha256Hash = "sha256-KHvWVIxNzwdgl9kdqXD5Cpvz58r8pWs2VRyPV3VrJH0="; + version = "2025.3.2.5"; # "Android Studio Panda 2 | 2025.3.2 RC 1" + sha256Hash = "sha256-qpmc7MO48GV2nnxEdRstg3ne0Gvlrgk9UX5Dr60gAMM="; + url = "https://edgedl.me.gvt1.com/android/studio/ide-zips/2025.3.2.5/android-studio-panda2-rc1-linux.tar.gz"; }; latestVersion = { - version = "2025.3.1.5"; # "Android Studio Panda 1 | 2025.3.1 Canary 5" - sha256Hash = "sha256-CmM619Itz/0qVSUz6ztZTR93FmEVoUzMJawHwc+Nf8o="; + version = "2025.3.3.2"; # "Android Studio Panda 3 | 2025.3.3 Canary 2" + sha256Hash = "sha256-z8GpBqyEnbyyBc0XPo5q52WS5d7b4292QgUj0FPW+C0="; + url = "https://edgedl.me.gvt1.com/android/studio/ide-zips/2025.3.3.2/android-studio-panda3-canary2-linux.tar.gz"; }; in { diff --git a/pkgs/by-name/co/comrak/package.nix b/pkgs/by-name/co/comrak/package.nix index 4b8af5f53997..3d54692518a1 100644 --- a/pkgs/by-name/co/comrak/package.nix +++ b/pkgs/by-name/co/comrak/package.nix @@ -6,16 +6,16 @@ rustPlatform.buildRustPackage (finalAttrs: { pname = "comrak"; - version = "0.50.0"; + version = "0.51.0"; src = fetchFromGitHub { owner = "kivikakk"; repo = "comrak"; rev = "v${finalAttrs.version}"; - sha256 = "sha256-OWfNg66ZLorN+PW26v2n695f8vfqT76jO6Bl+M/FNdc="; + sha256 = "sha256-Klux0l0onlkpRIeQPHKZZhLhYB5On2R8CivpByGSgEA="; }; - cargoHash = "sha256-d4krWEvupTniVka4f7OPvWbJx6YoT0tfzxr7SU46jME="; + cargoHash = "sha256-AB4XcGERw9PmYpwMVV1mTjpEJmL4pV7iyZUhn5GWflc="; meta = { description = "CommonMark-compatible GitHub Flavored Markdown parser and formatter"; diff --git a/pkgs/by-name/el/elephant/package.nix b/pkgs/by-name/el/elephant/package.nix index e6368776df91..aad099a93348 100644 --- a/pkgs/by-name/el/elephant/package.nix +++ b/pkgs/by-name/el/elephant/package.nix @@ -74,13 +74,13 @@ let in buildGoModule (finalAttrs: { pname = "elephant"; - version = "2.20.0"; + version = "2.20.2"; src = fetchFromGitHub { owner = "abenz1267"; repo = "elephant"; rev = "v${finalAttrs.version}"; - hash = "sha256-r2ucLztXQFRu70VrGtNcL3PONyazxDPwq/hSn7opD+I="; + hash = "sha256-RvCzINnVISBT3d0F1DoIcQFbQsbRJISW9qZeKTzmNaA="; }; vendorHash = "sha256-tO+5x2FIY1UBvWl9x3ZSpHwTWUlw1VNDTi9+2uY7xdU="; diff --git a/pkgs/by-name/fa/faugus-launcher/package.nix b/pkgs/by-name/fa/faugus-launcher/package.nix index 86e08e921b96..5e812d5d8e76 100644 --- a/pkgs/by-name/fa/faugus-launcher/package.nix +++ b/pkgs/by-name/fa/faugus-launcher/package.nix @@ -18,14 +18,14 @@ python3Packages.buildPythonApplication (finalAttrs: { pname = "faugus-launcher"; - version = "1.15.10"; + version = "1.16.2"; pyproject = false; src = fetchFromGitHub { owner = "Faugus"; repo = "faugus-launcher"; tag = finalAttrs.version; - hash = "sha256-lt9pdGtWCZoiH6/dNtfEtt84qT0xcqumP19IxcyMoEw="; + hash = "sha256-ikTVvCsCRk+HZYoUUGf+e78mciv0aga8oxxn7k3tOHg="; }; nativeBuildInputs = [ diff --git a/pkgs/by-name/fd/fd/package.nix b/pkgs/by-name/fd/fd/package.nix index 301657cbafe3..d43533542786 100644 --- a/pkgs/by-name/fd/fd/package.nix +++ b/pkgs/by-name/fd/fd/package.nix @@ -11,16 +11,16 @@ rustPlatform.buildRustPackage (finalAttrs: { pname = "fd"; - version = "10.4.1"; + version = "10.4.2"; src = fetchFromGitHub { owner = "sharkdp"; repo = "fd"; rev = "v${finalAttrs.version}"; - hash = "sha256-wmlnQyRWo7qxtRQFZywsr0eX7kVmcjyqyV5NG9VtUP0="; + hash = "sha256-D1FCry69KqXgLxU4rVmgKjkM3JqeBRQDfbp3sJtVAbU="; }; - cargoHash = "sha256-MhSc96zkkCb+TKYr0ixDSYq44qgxjkvnwEzSdIwZNBo="; + cargoHash = "sha256-nsFtnt8z1qohOtHpLk3cstrVXi/yOMMPCTt/SEEB1F0="; nativeBuildInputs = [ installShellFiles ]; diff --git a/pkgs/by-name/ip/ipget/package.nix b/pkgs/by-name/ip/ipget/package.nix index 42feba5f77d2..4043549abd34 100644 --- a/pkgs/by-name/ip/ipget/package.nix +++ b/pkgs/by-name/ip/ipget/package.nix @@ -8,16 +8,16 @@ buildGoModule (finalAttrs: { pname = "ipget"; - version = "0.12.2"; + version = "0.13.0"; src = fetchFromGitHub { owner = "ipfs"; repo = "ipget"; rev = "v${finalAttrs.version}"; - hash = "sha256-j8CRJTqZZtZMeGEq8l4YBBXAwhX+EfO2aFMXS8/6Ek4="; + hash = "sha256-mOZdoOl+eVMNOy5gfxeqmzOUAnc39WNJYr1l5IVId8U="; }; - vendorHash = "sha256-vOuQVISXOpRsZLuJ89Lk3wQHtnt0l5PhnLiDcjGKbhs="; + vendorHash = "sha256-oB6XWs649Aj6MYIhWBWXNgJkycsx/kGw9iEVy3nG9iw="; postPatch = '' # main module (github.com/ipfs/ipget) does not contain package github.com/ipfs/ipget/sharness/dependencies diff --git a/pkgs/by-name/js/jsonschema-cli/package.nix b/pkgs/by-name/js/jsonschema-cli/package.nix index 5f4dcea86851..65817362a240 100644 --- a/pkgs/by-name/js/jsonschema-cli/package.nix +++ b/pkgs/by-name/js/jsonschema-cli/package.nix @@ -9,15 +9,15 @@ rustPlatform.buildRustPackage (finalAttrs: { pname = "jsonschema-cli"; - version = "0.44.0"; + version = "0.45.0"; src = fetchCrate { pname = "jsonschema-cli"; inherit (finalAttrs) version; - hash = "sha256-rytVrWBvUMaUZvHV4emXSnTUl4eC4uR8HS/1J4j9GwA="; + hash = "sha256-9pz07T7i7pxNNOV/YGbneIA45VG9uBzhI+ygwknW07Q="; }; - cargoHash = "sha256-P8o0tAcFQPu5ta8qc8basn1+XjHvyjn1aGCW16kuYug="; + cargoHash = "sha256-EiLXX0wZi9v8vsMxCeg8/XMfWH9FckuNjqPpLEUK5lc="; preCheck = '' export SSL_CERT_FILE=${cacert}/etc/ssl/certs/ca-bundle.crt diff --git a/pkgs/by-name/ke/keepassxc/package.nix b/pkgs/by-name/ke/keepassxc/package.nix index 54aca4151e4a..8d82df3b9edb 100644 --- a/pkgs/by-name/ke/keepassxc/package.nix +++ b/pkgs/by-name/ke/keepassxc/package.nix @@ -37,13 +37,13 @@ stdenv.mkDerivation (finalAttrs: { pname = "keepassxc"; - version = "2.7.11"; + version = "2.7.12"; src = fetchFromGitHub { owner = "keepassxreboot"; repo = "keepassxc"; tag = finalAttrs.version; - hash = "sha256-Hec3RBC/f0GV6ZBniy+BjMAkABlg111mShrQv0aYm6g="; + hash = "sha256-eg8jRaSJdRBpEOHQ8E3jXcdwRzsnyq6r4RLyltdpIB8="; }; env = diff --git a/pkgs/by-name/mi/mistral-vibe/package.nix b/pkgs/by-name/mi/mistral-vibe/package.nix index 82d106e5cb0e..8a3b179de1f1 100644 --- a/pkgs/by-name/mi/mistral-vibe/package.nix +++ b/pkgs/by-name/mi/mistral-vibe/package.nix @@ -12,14 +12,14 @@ python3Packages.buildPythonApplication (finalAttrs: { pname = "mistral-vibe"; - version = "2.4.0"; + version = "2.4.1"; pyproject = true; src = fetchFromGitHub { owner = "mistralai"; repo = "mistral-vibe"; tag = "v${finalAttrs.version}"; - hash = "sha256-e5F4NZUQCgEYonQqC62+kWkHRWCJmMv+F2WOu9BRIFk="; + hash = "sha256-iAW+ndHgODTrDOuF5DByiVvk+sHDRj7QTm1gOTSqc2I="; }; build-system = with python3Packages; [ diff --git a/pkgs/by-name/re/rendercv/fix_theme_directory_permissions.patch b/pkgs/by-name/re/rendercv/fix_theme_directory_permissions.patch new file mode 100644 index 000000000000..95f2666decce --- /dev/null +++ b/pkgs/by-name/re/rendercv/fix_theme_directory_permissions.patch @@ -0,0 +1,42 @@ +diff --git a/src/rendercv/cli/create_theme_command/create_theme_command.py b/src/rendercv/cli/create_theme_command/create_theme_command_fixed.py +index 3812d5b..42a69db 100644 +--- a/src/rendercv/cli/create_theme_command/create_theme_command.py ++++ b/src/rendercv/cli/create_theme_command/create_theme_command_fixed.py +@@ -1,3 +1,4 @@ ++import os + import pathlib + import textwrap + from typing import Annotated +@@ -35,11 +36,21 @@ def cli_command_create_theme( + + copy_templates("typst", new_theme_folder) + ++ # Explicit directory permissions ++ pathlib.Path.chmod(new_theme_folder, 0o755) ++ # Explicit files and sub-directories permissions recursively ++ for root, directories, files in os.walk(new_theme_folder): ++ for directory in directories: ++ pathlib.Path.chmod(pathlib.Path(root) / directory, 0o755) ++ for file in files: ++ pathlib.Path.chmod(pathlib.Path(root) / file, 0o644) ++ + # Create the __init__.py file for the new theme: + create_init_file_for_theme(theme_name, new_theme_folder / "__init__.py") + + # Build the panel +- message = textwrap.dedent(f""" ++ message = textwrap.dedent( ++ f""" + [green]✓[/green] Created your custom theme: [purple]./{theme_name}[/purple] + + What you can do with this theme: +@@ -52,7 +63,8 @@ def cli_command_create_theme( + To use your theme, set in your YAML input file: + [cyan] design: + [cyan] theme: {theme_name} +- """).strip("\n") ++ """ ++ ).strip("\n") + + print( + rich.panel.Panel( diff --git a/pkgs/by-name/re/rendercv/package.nix b/pkgs/by-name/re/rendercv/package.nix index 2d3594d2a855..3a2b0ab3fd44 100644 --- a/pkgs/by-name/re/rendercv/package.nix +++ b/pkgs/by-name/re/rendercv/package.nix @@ -6,14 +6,14 @@ python3Packages.buildPythonApplication (finalAttrs: { pname = "rendercv"; - version = "2.6"; + version = "2.7"; pyproject = true; src = fetchFromGitHub { owner = "rendercv"; repo = "rendercv"; tag = "v${finalAttrs.version}"; - hash = "sha256-lGeZt/ctNmZu6kSTpH4JTmgOwR9gS6RVkWu0gr4FK4k="; + hash = "sha256-2ClS/RwfAhjo+bh1fTiir1YCVelDJPOjp+Z3GHVzF4E="; }; build-system = with python3Packages; [ uv-build ]; @@ -26,20 +26,29 @@ python3Packages.buildPythonApplication (finalAttrs: { pycountry pydantic-extra-types ruamel-yaml - packaging + markdown # full typer - markdown watchdog typst rendercv-fonts + packaging ]; pythonRelaxDeps = [ "phonenumbers" - "pydantic-extra-types" + "markdown" ]; + patches = [ + ./fix_theme_directory_permissions.patch + ]; + + postPatch = '' + substituteInPlace pyproject.toml \ + --replace-fail "uv_build>=0.10.3,<0.11.0" "uv_build" + ''; + pythonImportsCheck = [ "rendercv" ]; nativeCheckInputs = with python3Packages; [ @@ -51,6 +60,7 @@ python3Packages.buildPythonApplication (finalAttrs: { # It fails due to missing internet resources "tests/renderer/test_pdf_png.py" "tests/cli/render_command/test_render_command.py" + "tests/test_pyodide.py" ]; doCheck = true; @@ -58,7 +68,7 @@ python3Packages.buildPythonApplication (finalAttrs: { meta = { description = "Typst-based CV/resume generator"; homepage = "https://rendercv.com"; - changelog = "https://docs.rendercv.com/changelog/#26-december-23-2025"; + changelog = "https://docs.rendercv.com/changelog/#27-march-6-2026"; license = lib.licenses.mit; maintainers = with lib.maintainers; [ theobori ]; mainProgram = "rendercv"; diff --git a/pkgs/development/python-modules/rst2pdf/default.nix b/pkgs/development/python-modules/rst2pdf/default.nix index 46f424537385..a78ff5378701 100644 --- a/pkgs/development/python-modules/rst2pdf/default.nix +++ b/pkgs/development/python-modules/rst2pdf/default.nix @@ -22,12 +22,12 @@ buildPythonPackage rec { pname = "rst2pdf"; - version = "0.104"; + version = "0.105"; pyproject = true; src = fetchPypi { inherit pname version; - hash = "sha256-1o6MchhB6T0eJRuNi8nnZqQnWM+7+ZRpYlEoxLsElbM="; + hash = "sha256-hX6HQQFOxQFfegCq+13Mu1Y3jvTB2lWoKNRLz1/zrNs="; }; pythonRelaxDeps = [ "packaging" ]; diff --git a/pkgs/development/python-modules/torchmetrics/default.nix b/pkgs/development/python-modules/torchmetrics/default.nix index e376fe6fbed8..b6e5587d6039 100644 --- a/pkgs/development/python-modules/torchmetrics/default.nix +++ b/pkgs/development/python-modules/torchmetrics/default.nix @@ -12,26 +12,28 @@ torch, # tests + ipython, pytestCheckHook, pytest-doctestplus, pytest-xdist, pytorch-lightning, scikit-image, + transformers, # passthru torchmetrics, }: -buildPythonPackage rec { +buildPythonPackage (finalAttrs: { pname = "torchmetrics"; - version = "1.8.2"; + version = "1.9.0"; pyproject = true; src = fetchFromGitHub { owner = "Lightning-AI"; repo = "torchmetrics"; - tag = "v${version}"; - hash = "sha256-OsU2JpKcbe1AuSIAyZLjDpFdsSk2q3kMGBcNXtIJm3Q="; + tag = "v${finalAttrs.version}"; + hash = "sha256-jlIZQWu0lE37Gv0Rzmgm+kG3dEeT1p3pKdXzkUgq3Rw="; }; dependencies = [ @@ -44,17 +46,19 @@ buildPythonPackage rec { buildInputs = [ torch ]; nativeCheckInputs = [ + ipython pytestCheckHook pytest-doctestplus pytest-xdist pytorch-lightning scikit-image + transformers ]; # A cyclic dependency in: integrations/test_lightning.py doCheck = false; passthru.tests.check = torchmetrics.overridePythonAttrs (_: { - pname = "${pname}-check"; + pname = "${finalAttrs.pname}-check"; doCheck = true; # We don't have to install because the only purpose # of this passthru test is to, well, test. @@ -62,6 +66,11 @@ buildPythonPackage rec { dontInstall = true; }); + pytestFlags = [ + # The (path: py.path.local) argument is deprecated, please use (file_path: pathlib.Path) + "-Wignore::pytest.PytestRemovedIn9Warning" + ]; + disabledTestPaths = [ # These require too many "leftpad-level" dependencies # Also too cross-dependent @@ -71,8 +80,9 @@ buildPythonPackage rec { "examples/audio/pesq.py" # Require internet access - "examples/text/bertscore.py" + "examples/audio/text_to_speech.py" "examples/image/clip_score.py" + "examples/text/bertscore.py" "examples/text/perplexity.py" "examples/text/rouge.py" @@ -85,8 +95,8 @@ buildPythonPackage rec { meta = { description = "Machine learning metrics for distributed, scalable PyTorch applications (used in pytorch-lightning)"; homepage = "https://lightning.ai/docs/torchmetrics/"; - changelog = "https://github.com/Lightning-AI/torchmetrics/releases/tag/v${version}"; + changelog = "https://github.com/Lightning-AI/torchmetrics/releases/tag/${finalAttrs.src.tag}"; license = lib.licenses.asl20; maintainers = with lib.maintainers; [ SomeoneSerge ]; }; -} +}) diff --git a/pkgs/stdenv/generic/check-meta.nix b/pkgs/stdenv/generic/check-meta.nix index 27f8c854ec7e..cb5b6b7b50c7 100644 --- a/pkgs/stdenv/generic/check-meta.nix +++ b/pkgs/stdenv/generic/check-meta.nix @@ -662,7 +662,13 @@ let "Refusing to evaluate package '${getNameWithVersion attrs}' in ${pos_str meta} because it ${error.msg}" + lib.optionalString (!inHydra && error.remediation != "") "\n${error.remediation}"; in - if config ? handleEvalIssue then config.handleEvalIssue error.reason msg else throw msg; + if config ? handleEvalIssue then + if error.reason == "problem" then + error.handleProblem config.handleEvalIssue + else + config.handleEvalIssue error.reason msg + else + throw msg; giveWarning = acc: warning: diff --git a/pkgs/stdenv/generic/problems.nix b/pkgs/stdenv/generic/problems.nix index 08d4b6e30ec0..04fd0b09dba2 100644 --- a/pkgs/stdenv/generic/problems.nix +++ b/pkgs/stdenv/generic/problems.nix @@ -485,6 +485,11 @@ rec { null else { + reason = "problem"; + # Only there for PR CI evaluation + handleProblem = + handleEvalIssue: + lib.foldl' (result: problem: handleEvalIssue problem.kind (fullMessage problem)) true errorProblems; msg = '' has problems: ${concatMapStringsSep "\n" (x: "- ${fullMessage x}") errorProblems} diff --git a/pkgs/test/problems/cases/handleEvalIssue/default.nix b/pkgs/test/problems/cases/handleEvalIssue/default.nix new file mode 100644 index 000000000000..3d79a9e11b9a --- /dev/null +++ b/pkgs/test/problems/cases/handleEvalIssue/default.nix @@ -0,0 +1,30 @@ +{ + nixpkgs ? ../../../../.., +}: +let + pkgs = import nixpkgs { + system = "x86_64-linux"; + overlays = [ ]; + config = { + checkMeta = true; + handleEvalIssue = reason: errormsg: builtins.trace "reason: ${reason}, errormsg: ${errormsg}" true; + problems.matchers = [ + { + kind = "deprecated"; + handler = "error"; + } + { + kind = "removal"; + handler = "error"; + } + ]; + }; + }; +in +pkgs.stdenvNoCC.mkDerivation { + pname = "a"; + version = "0"; + meta.description = "Some package"; + meta.problems.removal.message = "To be removed."; + meta.problems.deprecated.message = "To be deprecated."; +} diff --git a/pkgs/test/problems/cases/handleEvalIssue/expected-stderr b/pkgs/test/problems/cases/handleEvalIssue/expected-stderr new file mode 100644 index 000000000000..ddefa6b05314 --- /dev/null +++ b/pkgs/test/problems/cases/handleEvalIssue/expected-stderr @@ -0,0 +1,3 @@ +trace: reason: deprecated, errormsg: deprecated: To be deprecated. +trace: reason: removal, errormsg: removal: To be removed. +warning: you did not specify '--add-root'; the result might be removed by the garbage collector