mirror of
https://github.com/NixOS/nixpkgs.git
synced 2024-11-22 23:13:19 +00:00
python3Packages.setuptoolsBuildHook: delete broken setuptoolsShellHook
Broken since the switch to PyPA's build/installer in
6c85fff302
.
The hook was always janky and maintainers appear to not want its current
implementation in-tree. No replacement is currently planned.
However, this leaves the path open for future replacements as a broken
hook will no longer be installed by default.
This commit is contained in:
parent
ce38ee87c8
commit
26ccdea3d7
@ -489,40 +489,6 @@ are used in [`buildPythonPackage`](#buildpythonpackage-function).
|
|||||||
with the `pipInstallHook`.
|
with the `pipInstallHook`.
|
||||||
- `unittestCheckHook` will run tests with `python -m unittest discover`. See [example usage](#using-unittestcheckhook).
|
- `unittestCheckHook` will run tests with `python -m unittest discover`. See [example usage](#using-unittestcheckhook).
|
||||||
|
|
||||||
### Development mode {#development-mode}
|
|
||||||
|
|
||||||
Development or editable mode is supported. To develop Python packages
|
|
||||||
[`buildPythonPackage`](#buildpythonpackage-function) has additional logic inside `shellPhase` to run `pip
|
|
||||||
install -e . --prefix $TMPDIR/`for the package.
|
|
||||||
|
|
||||||
Warning: `shellPhase` is executed only if `setup.py` exists.
|
|
||||||
|
|
||||||
Given a `default.nix`:
|
|
||||||
|
|
||||||
```nix
|
|
||||||
with import <nixpkgs> {};
|
|
||||||
|
|
||||||
python3Packages.buildPythonPackage {
|
|
||||||
name = "myproject";
|
|
||||||
buildInputs = with python3Packages; [ pyramid ];
|
|
||||||
|
|
||||||
src = ./.;
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
Running `nix-shell` with no arguments should give you the environment in which
|
|
||||||
the package would be built with `nix-build`.
|
|
||||||
|
|
||||||
Shortcut to setup environments with C headers/libraries and Python packages:
|
|
||||||
|
|
||||||
```shell
|
|
||||||
nix-shell -p python3Packages.pyramid zlib libjpeg git
|
|
||||||
```
|
|
||||||
|
|
||||||
::: {.note}
|
|
||||||
There is a boolean value `lib.inNixShell` set to `true` if nix-shell is invoked.
|
|
||||||
:::
|
|
||||||
|
|
||||||
## User Guide {#user-guide}
|
## User Guide {#user-guide}
|
||||||
|
|
||||||
### Using Python {#using-python}
|
### Using Python {#using-python}
|
||||||
@ -859,8 +825,7 @@ Above, we were mostly just focused on use cases and what to do to get started
|
|||||||
creating working Python environments in nix.
|
creating working Python environments in nix.
|
||||||
|
|
||||||
Now that you know the basics to be up and running, it is time to take a step
|
Now that you know the basics to be up and running, it is time to take a step
|
||||||
back and take a deeper look at how Python packages are packaged on Nix. Then,
|
back and take a deeper look at how Python packages are packaged on Nix.
|
||||||
we will look at how you can use development mode with your code.
|
|
||||||
|
|
||||||
#### Python library packages in Nixpkgs {#python-library-packages-in-nixpkgs}
|
#### Python library packages in Nixpkgs {#python-library-packages-in-nixpkgs}
|
||||||
|
|
||||||
@ -1449,45 +1414,6 @@ documentation source root.
|
|||||||
The hook is also available to packages outside the python ecosystem by
|
The hook is also available to packages outside the python ecosystem by
|
||||||
referencing it using `sphinxHook` from top-level.
|
referencing it using `sphinxHook` from top-level.
|
||||||
|
|
||||||
### Develop local package {#develop-local-package}
|
|
||||||
|
|
||||||
As a Python developer you're likely aware of [development mode](http://setuptools.readthedocs.io/en/latest/setuptools.html#development-mode)
|
|
||||||
(`python setup.py develop`); instead of installing the package this command
|
|
||||||
creates a special link to the project code. That way, you can run updated code
|
|
||||||
without having to reinstall after each and every change you make. Development
|
|
||||||
mode is also available. Let's see how you can use it.
|
|
||||||
|
|
||||||
In the previous Nix expression the source was fetched from a url. We can also
|
|
||||||
refer to a local source instead using `src = ./path/to/source/tree;`
|
|
||||||
|
|
||||||
If we create a `shell.nix` file which calls [`buildPythonPackage`](#buildpythonpackage-function), and if `src`
|
|
||||||
is a local source, and if the local source has a `setup.py`, then development
|
|
||||||
mode is activated.
|
|
||||||
|
|
||||||
In the following example, we create a simple environment that has a Python 3.11
|
|
||||||
version of our package in it, as well as its dependencies and other packages we
|
|
||||||
like to have in the environment, all specified with `dependencies`.
|
|
||||||
|
|
||||||
```nix
|
|
||||||
with import <nixpkgs> {};
|
|
||||||
with python311Packages;
|
|
||||||
|
|
||||||
buildPythonPackage rec {
|
|
||||||
name = "mypackage";
|
|
||||||
src = ./path/to/package/source;
|
|
||||||
dependencies = [
|
|
||||||
pytest
|
|
||||||
numpy
|
|
||||||
];
|
|
||||||
propagatedBuildInputs = [
|
|
||||||
pkgs.libsndfile
|
|
||||||
];
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
It is important to note that due to how development mode is implemented on Nix
|
|
||||||
it is not possible to have multiple packages simultaneously in development mode.
|
|
||||||
|
|
||||||
### Organising your packages {#organising-your-packages}
|
### Organising your packages {#organising-your-packages}
|
||||||
|
|
||||||
So far we discussed how you can use Python on Nix, and how you can develop with
|
So far we discussed how you can use Python on Nix, and how you can develop with
|
||||||
|
@ -194,7 +194,7 @@ in {
|
|||||||
name = "setuptools-setup-hook";
|
name = "setuptools-setup-hook";
|
||||||
propagatedBuildInputs = [ setuptools wheel ];
|
propagatedBuildInputs = [ setuptools wheel ];
|
||||||
substitutions = {
|
substitutions = {
|
||||||
inherit pythonInterpreter pythonSitePackages setuppy;
|
inherit pythonInterpreter setuppy;
|
||||||
};
|
};
|
||||||
} ./setuptools-build-hook.sh) {};
|
} ./setuptools-build-hook.sh) {};
|
||||||
|
|
||||||
|
@ -23,36 +23,7 @@ setuptoolsBuildPhase() {
|
|||||||
echo "Finished executing setuptoolsBuildPhase"
|
echo "Finished executing setuptoolsBuildPhase"
|
||||||
}
|
}
|
||||||
|
|
||||||
setuptoolsShellHook() {
|
|
||||||
echo "Executing setuptoolsShellHook"
|
|
||||||
runHook preShellHook
|
|
||||||
|
|
||||||
if test -e setup.py; then
|
|
||||||
tmp_path=$(mktemp -d)
|
|
||||||
export PATH="$tmp_path/bin:$PATH"
|
|
||||||
export PYTHONPATH="$tmp_path/@pythonSitePackages@:$PYTHONPATH"
|
|
||||||
mkdir -p "$tmp_path/@pythonSitePackages@"
|
|
||||||
eval "@pythonInterpreter@ -m pip install -e . --prefix $tmp_path \
|
|
||||||
--no-build-isolation >&2"
|
|
||||||
|
|
||||||
# Process pth file installed in tmp path. This allows one to
|
|
||||||
# actually import the editable installation. Note site.addsitedir
|
|
||||||
# appends, not prepends, new paths. Hence, it is not possible to override
|
|
||||||
# an existing installation of the package.
|
|
||||||
# https://github.com/pypa/setuptools/issues/2612
|
|
||||||
export NIX_PYTHONPATH="$tmp_path/@pythonSitePackages@:${NIX_PYTHONPATH-}"
|
|
||||||
fi
|
|
||||||
|
|
||||||
runHook postShellHook
|
|
||||||
echo "Finished executing setuptoolsShellHook"
|
|
||||||
}
|
|
||||||
|
|
||||||
if [ -z "${dontUseSetuptoolsBuild-}" ] && [ -z "${buildPhase-}" ]; then
|
if [ -z "${dontUseSetuptoolsBuild-}" ] && [ -z "${buildPhase-}" ]; then
|
||||||
echo "Using setuptoolsBuildPhase"
|
echo "Using setuptoolsBuildPhase"
|
||||||
buildPhase=setuptoolsBuildPhase
|
buildPhase=setuptoolsBuildPhase
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ -z "${dontUseSetuptoolsShellHook-}" ] && [ -z "${shellHook-}" ]; then
|
|
||||||
echo "Using setuptoolsShellHook"
|
|
||||||
shellHook=setuptoolsShellHook
|
|
||||||
fi
|
|
||||||
|
Loading…
Reference in New Issue
Block a user