diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index edb2d39..fb3b42c 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -48,7 +48,7 @@ jobs: - id: enumerate_packages name: Get all packages run: | - echo "FLAKE_OUTPUTS=$(python3 ./.github/workflows/get_all_packages.py)" >> $GITHUB_ENV + echo "FLAKE_OUTPUTS=$(python3 ./.github/workflows/get_all_packages.py | tr '\n' ' ')" >> $GITHUB_ENV - name: Build All run: | set +e diff --git a/.github/workflows/get_all_packages.py b/.github/workflows/get_all_packages.py index 54c4bf4..f89fbda 100644 --- a/.github/workflows/get_all_packages.py +++ b/.github/workflows/get_all_packages.py @@ -2,20 +2,33 @@ import json import subprocess -flake_meta_process = subprocess.Popen( - ["nix", "flake", "show", "--json"], - stdout=subprocess.PIPE, - stderr=subprocess.PIPE, - encoding="utf8", -) -flake_meta_process.wait() -if flake_meta_process.returncode: - print(f"Failed to get flake metadata:", file=sys.stderr) - print(flake_meta_process.stderr.read(), file=sys.stderr) - exit(-1) -flake_meta = json.load(flake_meta_process.stdout) +def run(purpose, *args): + process = subprocess.Popen( + [*args], + stdout=subprocess.PIPE, + stderr=subprocess.PIPE, + encoding="utf8", + ) + process.wait() + if process.returncode: + print(f"Failed to {purpose}:", file=sys.stderr) + print(process.stderr.read(), file=sys.stderr) + exit(-1) + return process.stdout + +flake_meta = json.load(run("get flake metadata", "nix", "flake", "show", "--json")) packages = flake_meta["packages"] for platform, packages in packages.items(): for package, package_info in packages.items(): - if len(package_info): - print(f".#packages.{platform}.{package}", end=" ") + if len(package_info) == 0: + continue + tgt = f".#packages.{platform}.{package}" + outputs = [] + drv = json.load(run(f"get derivation info for {package}", "nix", "derivation", "show", tgt)) + keys = list(drv.keys()) + if len(keys) != 1: + print(f"'nix derivation show' unexpectedly returned {len(keys)} paths, expected exactly 1: {tgt}", file=sys.stderr) + exit(-1) + output_list = drv[keys[0]]["outputs"] + for output in output_list: + print(f"{tgt}.{output}") diff --git a/flake.nix b/flake.nix index 79b0d5d..479fd66 100644 --- a/flake.nix +++ b/flake.nix @@ -60,7 +60,7 @@ ) ( self.composePythonOverlay (pkgs': pkgs: pypkgs': pypkgs: let - callPythonPackage = lib.callPackageWith (pkgs' // pkgs'.python3.pkgs); + callPythonPackage = lib.callPackageWith (pkgs' // pypkgs'); in { kfactory = pypkgs.kfactory.overrideAttrs (attrs': attrs: { version = "1.9.3"; diff --git a/nix/yosys.nix b/nix/yosys.nix index b194d81..b2ac51d 100644 --- a/nix/yosys.nix +++ b/nix/yosys.nix @@ -57,6 +57,7 @@ bash, version ? "0.54", sha256 ? "sha256-meKlZh6ZiiPHwQCvS7Y667lvE9XWgIaual8c6SDpeDw=", + darwin, # To fix codesigning issue for pyosys # For environments yosys, buildEnv, @@ -89,7 +90,7 @@ in let pkg-config bison flex - ]; + ] ++ lib.optionals clangStdenv.isDarwin [darwin.autoSignDarwinBinariesHook]; propagatedBuildInputs = [ tcl