From 0fa919ef2d5f2b54c6de5907e3b1f56531c76ab0 Mon Sep 17 00:00:00 2001 From: Giulio De Pasquale Date: Tue, 28 Mar 2023 17:16:53 -0700 Subject: [PATCH] flake: Added workbench files_handling derivation --- flake.nix | 16 +++++++++++++-- workbench/files_handling/default.nix | 29 ++++++++++++++++++++++++++++ 2 files changed, 43 insertions(+), 2 deletions(-) create mode 100644 workbench/files_handling/default.nix diff --git a/flake.nix b/flake.nix index a5535c2..af4fd5b 100644 --- a/flake.nix +++ b/flake.nix @@ -1,10 +1,11 @@ { inputs = { nixpkgs.url = "github:nixos/nixpkgs/nixpkgs-unstable"; + cclyzerpp.url = "github:peperunas/cclyzerpp/flake"; flake-utils.url = "github:numtide/flake-utils"; }; - outputs = { self, nixpkgs, flake-utils }: + outputs = { self, nixpkgs, flake-utils, cclyzerpp }: flake-utils.lib.eachDefaultSystem (system: let pkgs = import nixpkgs { @@ -15,9 +16,20 @@ shellWithPkgs = packages: pkgs.mkShell { inherit packages; }; + + cclyzer = cclyzerpp.defaultPackage.${system}; + + shell = with pkgs; shellWithPkgs [ codeql klee souffle cclyzer ]; in { - devShells.default = shellWithPkgs [ pkgs.codeql ]; + packages = rec { + workbench = { + files_handling = pkgs.callPackage ./workbench/files_handling/default.nix { cclyzerpp = cclyzer; }; + }; + + default = workbench.files_handling; + }; + devShell = shell; }); } diff --git a/workbench/files_handling/default.nix b/workbench/files_handling/default.nix new file mode 100644 index 0000000..e61fc22 --- /dev/null +++ b/workbench/files_handling/default.nix @@ -0,0 +1,29 @@ +{ stdenv, clang, cclyzerpp }: + +stdenv.mkDerivation { + pname = "example"; + version = "1.0.0"; + + src = ./main.c; + + dontUnpack = true; + + nativeBuildInputs = [ clang cclyzerpp ]; + + buildPhase = '' + name=`basename ''${src//\.c/}` + + clang -c -emit-llvm $src + + clang $src -o $name + ''; + + installPhase = '' + mkdir -p $out/{bin,facts,bitcode} + + ${cclyzerpp}/bin/factgen-exe $name.bc --out-dir $out/facts + + mv $name $out/bin + mv $name.bc $out/bitcode + ''; +}