| 6 Nov 2023 |
matthewcroughan - nix.how | but is there no way to relax the deps like there is with nixpkgs infra? | 20:32:59 |
K900 | If you're already in that repo, you can just update the constraint | 20:33:22 |
K900 | If you're not, you can use pythonRelaxDepsHook | 20:33:30 |
matthewcroughan - nix.how | python3.11-gradio-client> no configure script, doing nothing
python3.11-gradio-client> building
python3.11-gradio-client> Executing pipBuildPhase
python3.11-gradio-client> Creating a wheel...
python3.11-gradio-client> WARNING: The directory '/homeless-shelter/.cache/pip' or its parent directory is not owned or is not writable
python3.11-gradio-client> Processing /build/gradio_client-0.6.1
python3.11-gradio-client> Running command Preparing metadata (pyproject.toml)
python3.11-gradio-client> Traceback (most recent call last):
python3.11-gradio-client> File "/nix/store/z41lyyssxy1gza6ngn44q036k213c9gm-python3.11-pip-23.2.1/lib/python3.11/site-packages/pip/
python3.11-gradio-client> main()
python3.11-gradio-client> File "/nix/store/z41lyyssxy1gza6ngn44q036k213c9gm-python3.11-pip-23.2.1/lib/python3.11/site-packages/pip/
python3.11-gradio-client> json_out['return_val'] = hook(**hook_input['kwargs'])
python3.11-gradio-client> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
python3.11-gradio-client> File "/nix/store/z41lyyssxy1gza6ngn44q036k213c9gm-python3.11-pip-23.2.1/lib/python3.11/site-packages/pip/
python3.11-gradio-client> whl_basename = backend.build_wheel(metadata_directory, config_settings)
python3.11-gradio-client> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
python3.11-gradio-client> File "/nix/store/rralcg7v1b4x03ll78r4s84c475xaygm-python3.11-hatchling-1.18.0/lib/python3.11/site-package
python3.11-gradio-client> return os.path.basename(next(builder.build(wheel_directory, ['standard'])))
python3.11-gradio-client> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
python3.11-gradio-client> File "/nix/store/rralcg7v1b4x03ll78r4s84c475xaygm-python3.11-hatchling-1.18.0/lib/python3.11/site-package
python3.11-gradio-client> self.metadata.validate_fields()
python3.11-gradio-client> File "/nix/store/rralcg7v1b4x03ll78r4s84c475xaygm-python3.11-hatchling-1.18.0/lib/python3.11/site-packages/hatchling/metadata/core.py", line 243, in validate_fields
python3.11-gradio-client> _ = self.version
python3.11-gradio-client> ^^^^^^^^^^^^
python3.11-gradio-client> File "/nix/store/rralcg7v1b4x03ll78r4s84c475xaygm-python3.11-hatchling-1.18.0/lib/python3.11/site-packages/hatchling/metadata/core.py", line 128, in version
python3.11-gradio-client> self._version = self._get_version()
python3.11-gradio-client> ^^^^^^^^^^^^^^^^^^^
python3.11-gradio-client> File "/nix/store/rralcg7v1b4x03ll78r4s84c475xaygm-python3.11-hatchling-1.18.0/lib/python3.11/site-packages/hatchling/metadata/core.py", line 222, in _get_version
python3.11-gradio-client> core_metadata = self.core
python3.11-gradio-client> ^^^^^^^^^
python3.11-gradio-client> File "/nix/store/rralcg7v1b4x03ll78r4s84c475xaygm-python3.11-hatchling-1.18.0/lib/python3.11/site-packages/hatchling/metadata/core.py", line 166, in core
python3.11-gradio-client> metadata_hooks = self.hatch.metadata.hooks
python3.11-gradio-client> ^^^^^^^^^^^^^^^^^^^^^^^^^
python3.11-gradio-client> File "/nix/store/rralcg7v1b4x03ll78r4s84c475xaygm-python3.11-hatchling-1.18.0/lib/python3.11/site-packages/hatchling/metadata/core.py", line 1544, in hooks
python3.11-gradio-client> raise UnknownPluginError(message)
python3.11-gradio-client> hatchling.plugin.exceptions.UnknownPluginError: Unknown metadata hook: requirements_txt
| 20:37:45 |
matthewcroughan - nix.how | And now my favourite part, patching out random lines for no apparent reason because who knows how hatchling works | 20:37:58 |
matthewcroughan - nix.how | I have had to do this, so often, just removing lines that don't effect the build at all | 20:38:15 |
matthewcroughan - nix.how | ah no, nixpkgs has this https://github.com/NixOS/nixpkgs/blob/nixos-unstable/pkgs/development/python-modules/gradio/client.nix#L8C3-L8C25 | 20:39:14 |
matthewcroughan - nix.how | K900 ⚡️: okay so in this case, there is a drv in nixpkgs. But the poetry overrides don't use it. And I can't just use the one from nixpkgs due to collision/mismatch in dependency graph. | 20:40:05 |
K900 | No, that's false | 20:40:11 |
K900 | The poetry overrides do use it | 20:40:16 |
K900 | I know because I wrote that fucking code and please don't tell me what it doesn't do | 20:40:31 |
matthewcroughan - nix.how | I did a ctrl + f for gradio in github.com/nix-community/poetry2nix/blob/master/overrides/default.nix | 20:40:37 |
K900 | So? | 20:40:46 |
matthewcroughan - nix.how | So where is it if it exists, and I am not sure why you think I am telling you what your code does or doesn't do. | 20:41:03 |
K900 | It is here: https://github.com/nix-community/poetry2nix/blob/master/default.nix#L233-L285 | 20:43:19 |
K900 | Any poetry2nix overrides are applied on top of nixpkgs overrides | 20:43:27 |
matthewcroughan - nix.how | oh, so it's always being overlayed on top? | 20:44:10 |
matthewcroughan - nix.how | invisibly by the code you just linked | 20:44:37 |
K900 | Yes, and it's not "invisible" | 20:45:08 |
K900 | It is very much visible in the very code I just linked | 20:45:16 |
matthewcroughan - nix.how | I mean, can you forgive me for being confused by it? | 20:45:16 |
matthewcroughan - nix.how | there is a few thousand line overrides file, I thought it was all manual | 20:45:35 |
K900 | No, that is all on top of what nixpkgs does | 20:45:57 |
matthewcroughan - nix.how | so has it happened before that there was no nix package, but only a poetry2nix automated derivation, and then nixpkgs added a drv, and it broke poetry2nix? | 20:46:41 |
K900 | Yes | 20:47:14 |
K900 | It has also happened that nixpkgs updated fixups for a package and that caused issues | 20:47:28 |
K900 | This is kind of unavoidable unless we want to encode historical knowledge into nixpkgs | 20:47:43 |
matthewcroughan - nix.how | Why might I need to add nativeBuildInputs that nixpkgs already has? | 20:51:02 |
matthewcroughan - nix.how | gradio = super.gradio-client.overridePythonAttrs
(
old: {
nativeBuildInputs = (old.nativeBuildInputs or [ ]) ++ [ super.hatch-requirements-txt super.hatch-fancy-pypi-readme ];
}
);
gradio-client = super.gradio-client.overridePythonAttrs
(
old: {
nativeBuildInputs = (old.nativeBuildInputs or [ ]) ++ [ super.hatch-requirements-txt super.hatch-fancy-pypi-readme ];
}
);
| 20:51:06 |
matthewcroughan - nix.how | As an example, I have gradio, gradio-client, but nixpkgs already has these nativeBuildInputs, I'm having to add them back in | 20:51:23 |