From b015f1f123d359d95fdf82759caca5d95ae27004 Mon Sep 17 00:00:00 2001 From: Johannes Kirschbauer Date: Fri, 26 Jul 2024 15:23:25 +0200 Subject: [PATCH] PropagatedBuild inputs workaround --- docs/nix/flake-module.nix | 4 +++- pkgs/clan-app/default.nix | 9 ++++++++- pkgs/clan-cli/clan_cli/inventory/classes.py | 2 +- pkgs/clan-cli/default.nix | 3 ++- pkgs/clan-cli/flake-module.nix | 14 ++++++++++++-- pkgs/clan-vm-manager/default.nix | 9 ++++++++- pkgs/classgen/main.py | 2 +- 7 files changed, 35 insertions(+), 8 deletions(-) diff --git a/docs/nix/flake-module.nix b/docs/nix/flake-module.nix index 89052d53f..d2d82d6f4 100644 --- a/docs/nix/flake-module.nix +++ b/docs/nix/flake-module.nix @@ -54,9 +54,11 @@ module-docs = pkgs.runCommand "rendered" { - nativeBuildInputs = [ + buildInputs = [ pkgs.python3 self'.packages.clan-cli + # TODO: see postFixup clan-cli/default.nix:L188 + self'.packages.clan-cli.propagatedBuildInputs ]; } '' diff --git a/pkgs/clan-app/default.nix b/pkgs/clan-app/default.nix index a8e6bcf97..e54cc5966 100644 --- a/pkgs/clan-app/default.nix +++ b/pkgs/clan-app/default.nix @@ -94,7 +94,14 @@ python3.pkgs.buildPythonApplication rec { # that all necessary dependencies are consistently available both # at build time and runtime, buildInputs = allPythonDeps ++ runtimeDependencies; - propagatedBuildInputs = allPythonDeps ++ runtimeDependencies; + propagatedBuildInputs = + allPythonDeps + ++ runtimeDependencies + ++ [ + + # TODO: see postFixup clan-cli/default.nix:L188 + clan-cli.propagatedBuildInputs + ]; # also re-expose dependencies so we test them in CI passthru = { diff --git a/pkgs/clan-cli/clan_cli/inventory/classes.py b/pkgs/clan-cli/clan_cli/inventory/classes.py index 41d116831..60c9107b9 100644 --- a/pkgs/clan-cli/clan_cli/inventory/classes.py +++ b/pkgs/clan-cli/clan_cli/inventory/classes.py @@ -153,7 +153,7 @@ class ServiceSingleDisk: class Service: borgbackup: dict[str, ServiceBorgbackup] = field(default_factory = dict) packages: dict[str, ServicePackage] = field(default_factory = dict) - single_disk: dict[str, ServiceSingleDisk] = field(default_factory = dict, metadata = {"original_name": "single-disk"}) + single_disk: dict[str, ServiceSingleDisk] = field(default_factory = dict, metadata = {"alias": "single-disk"}) @dataclass diff --git a/pkgs/clan-cli/default.nix b/pkgs/clan-cli/default.nix index bdde4d6c3..12d8db646 100644 --- a/pkgs/clan-cli/default.nix +++ b/pkgs/clan-cli/default.nix @@ -30,7 +30,7 @@ let pythonDependencies = [ argcomplete # Enables shell completions - pydantic + pydantic # Dataclass deserialisation / validation / schemas ]; # load nixpkgs runtime dependencies from a json file @@ -183,6 +183,7 @@ python3.pkgs.buildPythonApplication { ''; # Clean up after the package to avoid leaking python packages into a devshell + # TODO: factor seperate cli / API packages postFixup = '' rm $out/nix-support/propagated-build-inputs ''; diff --git a/pkgs/clan-cli/flake-module.nix b/pkgs/clan-cli/flake-module.nix index c783a494f..deee72d8c 100644 --- a/pkgs/clan-cli/flake-module.nix +++ b/pkgs/clan-cli/flake-module.nix @@ -62,7 +62,12 @@ name = "clan-cli-docs"; src = ./.; - buildInputs = [ pkgs.python3 ]; + buildInputs = [ + + # TODO: see postFixup clan-cli/default.nix:L188 + pkgs.python3 + self'.packages.clan-cli.propagatedBuildInputs + ]; installPhase = '' ${self'.packages.classgen}/bin/classgen ${self'.packages.inventory-schema}/schema.json ./clan_cli/inventory/classes.py @@ -77,7 +82,12 @@ name = "clan-ts-api"; src = ./.; - buildInputs = [ pkgs.python3 ]; + buildInputs = [ + pkgs.python3 + + # TODO: see postFixup clan-cli/default.nix:L188 + self'.packages.clan-cli.propagatedBuildInputs + ]; installPhase = '' ${self'.packages.classgen}/bin/classgen ${self'.packages.inventory-schema}/schema.json ./clan_cli/inventory/classes.py diff --git a/pkgs/clan-vm-manager/default.nix b/pkgs/clan-vm-manager/default.nix index 172fa0666..4c15ee8ee 100644 --- a/pkgs/clan-vm-manager/default.nix +++ b/pkgs/clan-vm-manager/default.nix @@ -93,7 +93,14 @@ python3.pkgs.buildPythonApplication rec { # that all necessary dependencies are consistently available both # at build time and runtime, buildInputs = allPythonDeps ++ runtimeDependencies; - propagatedBuildInputs = allPythonDeps ++ runtimeDependencies; + propagatedBuildInputs = + allPythonDeps + ++ runtimeDependencies + ++ [ + + # TODO: see postFixup clan-cli/default.nix:L188 + clan-cli.propagatedBuildInputs + ]; # also re-expose dependencies so we test them in CI passthru = { diff --git a/pkgs/classgen/main.py b/pkgs/classgen/main.py index a4537c276..8cafe0b6c 100644 --- a/pkgs/classgen/main.py +++ b/pkgs/classgen/main.py @@ -245,7 +245,7 @@ def generate_dataclass(schema: dict[str, Any], class_name: str = root_class) -> field_meta = None if field_name != prop: - field_meta = f"""{{"original_name": "{prop}"}}""" + field_meta = f"""{{"alias": "{prop}"}}""" finalize_field = partial(get_field_def, field_name, field_meta)