Commit Graph

151 Commits

Author SHA1 Message Date
Yueh-Shun Li
3678c2ea8d buildPython*: format expression after restructuring 2025-02-02 14:26:22 +08:00
Yueh-Shun Li
6d2625c64b buildPython*: remove redundant parenthesis
This commit is intentionally unformatted
for smoother merging and rebasing experience.
2025-02-02 14:26:22 +08:00
Yueh-Shun Li
2b6cde5354 buildPython*: move argument-dependent let-in variables down below finalAttrs
This commit is intentionally unformatted
for smoother merging and rebasing experience.
2025-02-02 14:26:22 +08:00
Yueh-Shun Li
04c39df325 buildPython*: abstract out transformDrv 2025-02-02 14:26:22 +08:00
Yueh-Shun Li
cbd527c8ad buildPython*: use finalAttrs.finalPackage for passthru attribute values 2025-01-24 21:04:31 +08:00
Yueh-Shun Li
617bc74413 buildPython*: move the format'-related assertion down to its value 2025-01-24 21:04:31 +08:00
Yueh-Shun Li
d6a757bb01 buildPython*: prioritize user-specified passthru attrs 2025-01-24 21:04:31 +08:00
Yueh-Shun Li
1e8f39148a unittestCheckHook: handle unittestFlagsArray __structuredAttrs-agnostically
Take unittestFlags as the new and conforming interface.

Keep unittestFlagsArray as is.
2025-01-09 18:36:39 +08:00
Yueh-Shun Li
26f09762a8 pytestCheckHook: support __structuredAttrs
Add flag pytestFlags as the new, conforming interface
replacing pytestFlagsArray.

Stop Bash-expanding disabledTests and disabledTestPaths.

Handle disabledTestPaths with `pytest --ignore-glob <path>`
to keep globbing support.
Check if each path glob matches at least one path
using the `glob` module from the Python standard library.

Also make buildPythonPackage and buildPythonApplication
stop escaping the elements of disabledTests and disabledTestPaths.
2025-01-09 18:36:37 +08:00
Peder Bergebakken Sundt
8fd082ed7f mk-python-derivation: passthru disabled
Enables outside testing of whether a package is supported for the current interpreter
2025-01-09 00:37:17 +01:00
Silvan Mosberger
4f0dadbf38 treewide: format all inactive Nix files
After final improvements to the official formatter implementation,
this commit now performs the first treewide reformat of Nix files using it.
This is part of the implementation of RFC 166.

Only "inactive" files are reformatted, meaning only files that
aren't being touched by any PR with activity in the past 2 months.
This is to avoid conflicts for PRs that might soon be merged.
Later we can do a full treewide reformat to get the rest,
which should not cause as many conflicts.

A CI check has already been running for some time to ensure that new and
already-formatted files are formatted, so the files being reformatted here
should also stay formatted.

This commit was automatically created and can be verified using

    nix-build a08b3a4d19.tar.gz \
      --argstr baseRev b32a094368
    result/bin/apply-formatting $NIXPKGS_PATH
2024-12-10 20:26:33 +01:00
OTABI Tomoya
0a77110029 mkPythonPackage, mkPythonApplication: handle passthru with stdenv.mkDerivation instead of lib.extendDerivation (#347130) 2024-10-14 17:46:49 +09:00
Yueh-Shun Li
21a1cf9686 mkPythonPackage, mkPythonApplication: handle passthru with mkDerivation 2024-10-08 00:21:42 +08:00
Artturin
f0e657f3b1 Merge branch 'master' into staging-next 2024-09-25 06:05:01 +03:00
Artturin
e0464e4788 treewide: replace stdenv.is with stdenv.hostPlatform.is
In preparation for the deprecation of `stdenv.isX`.

These shorthands are not conducive to cross-compilation because they
hide the platforms.

Darwin might get cross-compilation for which the continued usage of `stdenv.isDarwin` will get in the way

One example of why this is bad and especially affects compiler packages
https://www.github.com/NixOS/nixpkgs/pull/343059

There are too many files to go through manually but a treewide should
get users thinking when they see a `hostPlatform.isX` in a place where it
doesn't make sense.

```
fd --type f "\.nix" | xargs sd --fixed-strings "stdenv.is" "stdenv.hostPlatform.is"
fd --type f "\.nix" | xargs sd --fixed-strings "stdenv'.is" "stdenv'.hostPlatform.is"
fd --type f "\.nix" | xargs sd --fixed-strings "clangStdenv.is" "clangStdenv.hostPlatform.is"
fd --type f "\.nix" | xargs sd --fixed-strings "gccStdenv.is" "gccStdenv.hostPlatform.is"
fd --type f "\.nix" | xargs sd --fixed-strings "stdenvNoCC.is" "stdenvNoCC.hostPlatform.is"
fd --type f "\.nix" | xargs sd --fixed-strings "inherit (stdenv) is" "inherit (stdenv.hostPlatform) is"
fd --type f "\.nix" | xargs sd --fixed-strings "buildStdenv.is" "buildStdenv.hostPlatform.is"
fd --type f "\.nix" | xargs sd --fixed-strings "effectiveStdenv.is" "effectiveStdenv.hostPlatform.is"
fd --type f "\.nix" | xargs sd --fixed-strings "originalStdenv.is" "originalStdenv.hostPlatform.is"
```
2024-09-25 00:04:37 +03:00
OTABI Tomoya
fff13abe46 mk-python-derivation: don't expose check args when doCheck = false (#327264) 2024-09-15 17:09:15 +09:00
Martin Weinelt
0b0dd33e0a python312Packages.setuptoolsCheckHook: remove
The hook relied on the `test` command passed to `setup.py`, which has
long been deprecated and finally removed in setuptools 72.0.
2024-08-06 18:18:40 +02:00
natsukium
2e2f18813c mk-python-derivation: don't expose check args when doCheck = false
This change prevents rebuilds if we change check flags when
doCheck = false. It's useful, for example, when tests are separated in
`passthru.tests`.
2024-07-27 11:26:55 +09:00
Vladimír Čunát
c76085b3a9 Merge branch 'master' into staging-next 2024-07-03 19:07:35 +02:00
Yueh-Shun Li
455314a3f0 buildPython*: make doCheck default less confusing
Modify the set pattern to hint developers that the doInstallCheck
attribute of Python packages, specified by the doCheck argument of
buildPythonPackage and buildPythonApplication, defaults to true instead
of false.
2024-07-03 02:42:59 +08:00
Martin Weinelt
3bfb20e638 mk-python-derivation: add pythonRelaxDepsHook
Configuring `pythonRelaxDeps` or `pythonRemoveDeps` does not require
adding `pythonRelaxDepsHook` into `nativeBuildInputs` anymore.

Co-Authored-By: superherointj <5861043+superherointj@users.noreply.github.com>
2024-06-14 14:51:23 +02:00
adisbladis
de402796a7 mk-python-derivation: Break out attribute set cleaning into a separate function
With precomputed static lists.
2024-03-06 14:22:43 +13:00
adisbladis
1656fe1bf6 mk-python-derivation: Precompute static lists 2024-03-06 14:22:09 +13:00
adisbladis
d77190aeaa mk-python-derivation: Refactor internal function validatePythonMatches
We can avoid recreating the same closure for every call by moving arguments around a little.
2024-03-04 16:04:50 +13:00
adisbladis
fb757e30fa mk-python-derivation: Refactor lib usage 2024-03-04 16:04:50 +13:00
adisbladis
4d0cca4654 mk-python-derivation: Add build-system argument
Much like the previous commit that adds dependencies &
optional-dependencies this aligns PEP-517 build systems with how they
are defined in PEP-518/PEP-621.

The naming `build-system` (singular) is aligned with upstream Python standards.
2024-02-18 17:40:42 +13:00
adisbladis
b9138b7c07 mk-python-derivation: Add dependencies & optional-dependencies arguments
Since https://github.com/NixOS/nixpkgs/pull/161835 we've had the
concept of `passthru.optional-dependencies` for Python optional deps.

Having to explicitly put optional-dependencies in the passthru attrset
is a bit strange API-wise, even though it semantically makes sense.

This change unifies the handling of non-optional & optional Python
dependencies using the names established from PEP-621 (standardized pyproject.toml project metadata).
2024-02-18 17:40:42 +13:00
Sandro
d5917b14b3 mk-python-derivation: fix passthru.updateScript being merged into the derivation (#241922)
Before updateScript was being merged to pdm.updateScript.
With this commit it is being moved to the expected location pdm.passthru.updateScript
2024-02-07 08:14:34 +01:00
Martin Weinelt
8f3162f83f python3.pkgs.pythonRuntimeDepsCheckHook: init
Implements a hook, that checks whether all dependencies, as specified by
the wheel manifest, are present in the current environment.

Complains about missing packages, as well as version specifier
mismatches.
2023-12-20 20:10:22 +01:00
Adam Joseph
ba2ed469c2 Merge branch 'master' into staging-next 2023-11-08 06:15:46 +00:00
Adam Joseph
bc2d598878 treewide: change pythonForBuild to pythonOnBuildForHost 2023-11-05 17:42:12 -08:00
Frederik Rietdijk
7a0d080298 python3.pkgs.buildPython*: allow overriding of the stdenv
With this change it is possible to pass in `stdenv` directly to
`buildPython*` or override it using e.g.

```
numpy.overridePythonAttrs(_: {
  stdenv = clangStdenv;
})
```
2023-10-19 18:56:47 +02:00
Peder Bergebakken Sundt
bdda7b0a53 python3Packages.flitBuildHook: remove 2023-09-22 21:11:24 +02:00
figsoda
6893201945 python310Packages.buildPythonPackage: introduce pyproject option 2023-09-12 19:54:03 -04:00
Theodore Ni
4e7188c39a python3.pkgs.buildPythonPackage: disable conflict check for setuptools and wheel
We can do this automatically for packages we know cannot use the
conflict check hook when it would lead to infinite recursion.
2023-08-20 10:59:47 +02:00
Theodore Ni
6c85fff302 python3.pkgs.buildPythonPackage: switch to PyPA build and installer 2023-08-20 10:59:47 +02:00
Felix Buehler
f3719756b5 treewide: use optionalString instead of 'then ""' 2023-06-24 20:19:19 +02:00
Artturin
d44390ab18 mkPythonDerivation: validate propagatedBuildInputs use a matching python
mkPythonDerivation: apply checks to buildInputs as well

fixup: add a suggestion about nativeBuildInputs

Clean up the wording, add reasons for the suggestions

switch to throw

Adjust error to clarify build-time vs. run-time
2023-04-28 17:59:20 +03:00
Alyssa Ross
d608fbb9f6 buildPython*: allow overriding disabled packages
Previously:

	nix-repl> python3.pkgs.WSME
	error: WSME-0.11.0 not supported for interpreter python3.10

	nix-repl> python3.pkgs.WSME.overridePythonAttrs (_: { disabled = false; })
	error: WSME-0.11.0 not supported for interpreter python3.10

Now:

	nix-repl> python3.pkgs.WSME
	error: WSME-0.11.0 not supported for interpreter python3.10
	«derivation

	nix-repl> python3.pkgs.WSME.overridePythonAttrs (_: { disabled = false; })
	«derivation /nix/store/cxkiwdfm146zvl573s2hahlbjd1wfrrp-python3.10-WSME-0.11.0.drv»
2023-02-02 16:49:27 +01:00
Guillaume Girol
339a5491bb buildPythonPackage: support nativeCheckInputs 2023-01-21 16:42:09 +01:00
Frederik Rietdijk
69ea4c8696 pythonPackages.buildPython*: also output dist when using wheel
Typically the actual wheel will be unchanged, but it is possible we use
the relax deps hook modifying the wheel.
2022-10-04 15:34:46 +02:00
Frederik Rietdijk
86ab83260f Revert "Revert "buildPython*: store dist (wheel/sdist) in dist output""
Most packages were fixed on python-unstable.

This reverts commit 0a4898c21a.
2022-09-20 09:49:55 +02:00
Frederik Rietdijk
8895944c57 Revert "Revert "buildPython*: wrap setuptools in hook for catching conflicts""
Most packages were fixed up on python-unstable branch.

This reverts commit 3ff2d9362c.
2022-09-20 09:49:27 +02:00
Frederik Rietdijk
3ff2d9362c Revert "buildPython*: wrap setuptools in hook for catching conflicts"
Revert for now and fix on python-unstable branch.

This reverts commit 13bb0f49f7.
2022-09-19 10:01:25 +02:00
Frederik Rietdijk
0a4898c21a Revert "buildPython*: store dist (wheel/sdist) in dist output"
Revert for now and fix on python-unstable branch.

This reverts commit adbc59c9d3.
2022-09-19 10:00:42 +02:00
Frederik Rietdijk
13bb0f49f7 buildPython*: wrap setuptools in hook for catching conflicts
By default buildPython* runs a hook for detecting conflicting packages.
This hook needs pkg_resources which is part of setuptools.

Before this commit, setuptools was simply added to the build. This meant
that when setuptools was forgotten to be added to the build, the build
and installation would still succeed because of this package from the
hook. During runtime (and cross-compilation) one would notice the
missing package.
2022-09-13 18:48:08 +02:00
Frederik Rietdijk
adbc59c9d3 buildPython*: store dist (wheel/sdist) in dist output
Store the intermediate artifacts. In time, we should build, install and
test in separate derivations as that reduces circular dependencies,
avoids rebuilds when fixing tests, and makes it possible to use the
wheels for creating say virtualenv's.
2022-09-12 22:15:39 +02:00
Matthieu Coudron
de50d08d73 buildPythonPackage: document why we always propagate python
python applications should not propagate python in PATH but we do it
nevertheless to avoid rebuilds see https://github.com/NixOS/nixpkgs/issues/170887
for an explanation.
2022-06-27 21:02:27 +02:00
Malo Bourgon
44d5d31d98 Revert "pythonPackages: set mainProgram to pname by default"
It's now the case that `nix run` checks `pname` as well as `name`, so
this is no longer needed. See:
a2473823d7

This reverts commit baf91ea7d9.
2022-05-10 11:51:54 -07:00
Matthieu Coudron
baf91ea7d9 pythonPackages: set mainProgram to pname by default
Calling `nix run poetry` or another python package usually fails
because of the "pythonX" prefix in name.
Adjust mainProgram to ignore that prefix.
2021-06-12 23:23:35 +02:00