diff --git a/default.nix b/default.nix index f85fc0c..945f76d 100644 --- a/default.nix +++ b/default.nix @@ -1,6 +1,9 @@ -{ pkgs ? import (fetchTarball { - url = "https://github.com/NixOS/nixpkgs/archive/refs/tags/24.05.tar.gz"; -}) {} }: +{ + pkgs ? import (fetchTarball { + # nixos-unstable rev 2024-12-03 + url = "https://github.com/NixOS/nixpkgs/archive/55d15ad12a74eb7d4646254e13638ad0c4128776.tar.gz"; + }) { }, +}: let haskellPackages = pkgs.haskell.packages.ghc948; diff --git a/rtlil-corpus b/rtlil-corpus index d60615b..d8f2b88 160000 --- a/rtlil-corpus +++ b/rtlil-corpus @@ -1 +1 @@ -Subproject commit d60615be78cd1fc7173bff956d2b1a53f8235bb0 +Subproject commit d8f2b884c523bdae74978fb52abe92d7487b1a9e diff --git a/shell.nix b/shell.nix index ddb9d28..ba4c573 100644 --- a/shell.nix +++ b/shell.nix @@ -1,12 +1,20 @@ -{ pkgs ? import (fetchTarball { - url = "https://github.com/NixOS/nixpkgs/archive/refs/tags/24.05.tar.gz"; -}) {} }: +{ + pkgs ? import (fetchTarball { + # nixos-unstable rev 2024-12-03 + url = "https://github.com/NixOS/nixpkgs/archive/55d15ad12a74eb7d4646254e13638ad0c4128776.tar.gz"; + }) { }, +}: let - haskellator = pkgs.callPackage ./default.nix {}; + haskellator = pkgs.callPackage ./default.nix { }; + corpus = pkgs.callPackage ./rtlil-corpus/default.nix { }; in -pkgs.mkShell { - buildInputs = [ - haskellator +pkgs.callPackage ( + { mkShell }: + mkShell { + CORPUS = corpus; + nativeBuildInputs = [ + haskellator ]; -} + } +) { } diff --git a/test.py b/test.py index d7f89a4..0dd7505 100644 --- a/test.py +++ b/test.py @@ -1,13 +1,30 @@ import os import subprocess +import argparse +import shutil + +parser = argparse.ArgumentParser(description="Test rtlil-parse") +parser.add_argument("--corpus", default=os.environ.get('CORPUS'), required=False, help="Path to corpus dir.") +args = parser.parse_args() # Define the directories -corpus_dir = './rtlil-corpus/corpus/' +if args.corpus: + corpus_dir = args.corpus +else: + corpus_dir = './rtlil-corpus/corpus/' + parsed_dir = './parsed_rtlil' # Create the parsed_rtlil directory if it doesn't exist os.makedirs(parsed_dir, exist_ok=True) +# Use rtlil-parse from PATH if available. +rtil_parse_binary = shutil.which("rtlil-parse") +if rtil_parse_binary is None: + program = "cabal run rtlil-parse --" +else: + program = rtil_parse_binary + # Iterate over all .rtlil files in the corpus directory for file_name in os.listdir(corpus_dir): if file_name.endswith('.il'): @@ -16,7 +33,7 @@ for file_name in os.listdir(corpus_dir): output_path = os.path.join(parsed_dir, output_file) # Construct and run the command - command = f"cabal run rtlil-parse -- {input_path} {output_path}" + command = f"{program} {input_path} {output_path}" try: subprocess.run(command, shell=True, check=True) print(f"Processed: {input_path} -> {output_path}")