mirror of
https://github.com/NixOS/nixpkgs.git
synced 2024-11-22 15:03:28 +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`.
|
||||
- `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}
|
||||
|
||||
### 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.
|
||||
|
||||
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,
|
||||
we will look at how you can use development mode with your code.
|
||||
back and take a deeper look at how Python packages are packaged on Nix.
|
||||
|
||||
#### 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
|
||||
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}
|
||||
|
||||
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";
|
||||
propagatedBuildInputs = [ setuptools wheel ];
|
||||
substitutions = {
|
||||
inherit pythonInterpreter pythonSitePackages setuppy;
|
||||
inherit pythonInterpreter setuppy;
|
||||
};
|
||||
} ./setuptools-build-hook.sh) {};
|
||||
|
||||
|
@ -23,36 +23,7 @@ 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
|
||||
echo "Using setuptoolsBuildPhase"
|
||||
buildPhase=setuptoolsBuildPhase
|
||||
fi
|
||||
|
||||
if [ -z "${dontUseSetuptoolsShellHook-}" ] && [ -z "${shellHook-}" ]; then
|
||||
echo "Using setuptoolsShellHook"
|
||||
shellHook=setuptoolsShellHook
|
||||
fi
|
||||
|
Loading…
Reference in New Issue
Block a user