From 80ba62a1ee9f5523cda9d331d4b83699898ac602 Mon Sep 17 00:00:00 2001 From: Erik Reinert <4638629+erikreinert@users.noreply.github.com> Date: Fri, 24 May 2024 12:27:26 -0700 Subject: [PATCH] Setup OCaml Foundation (#1) * feat: add initial project setup with OCaml and Nix configurations - Initialize `.envrc` for flake usage - Update `.gitignore` to include `.direnv` - Add `.ocamlformat` for OCaml code formatting - Create Dune configuration for the executable in `bin/dune` - Implement main functionality in `bin/main.ml` - Set up project metadata in `dune-project` - Lock dependencies in `flake.lock` - Define Nix flake setup in `flake.nix` - Configure library `store` in `lib/dune` - Prepare stubs for `lib/hash.ml` and `lib/store.ml` - Add test configuration in `test/dune` - Create an empty test file `test/test_vorpal.ml` - Generate `vorpal.opam` for package management * feat: integrate Vorpal library and refactor artifact build process - Replace `store` library with `vorpal` in dune configuration. - Refactor `main.ml` to use `Vorpal.Build` module, simplifying artifact creation logic. - Add `build.ml` in `lib` to handle artifact building with new `artifact` type. - Update `lib/dune` to rename library from `store` to `vorpal`. - Remove unused `hash.ml` file. - Refactor `store.ml` to `create_dir` and `copy_files` functions, adjusting to new artifact structure and simplifying file copying logic. * feat: add mirage-crypto support and hash generation for artifacts - Include mirage-crypto in the build environment and as a dependency for the vorpal package. - Implement hash generation for artifact files using mirage-crypto's SHA256. - Adjust artifact build process to generate and print file hashes. - Refactor store and build modules for improved type annotations and functionality. * feat: enhance artifact build process with hash-based directory creation and improved file handling - Implement hash combination for artifact builds to create unique directory names based on content. - Refactor build_artifact function to use a new get_file_paths function for better file filtering and handling. - Update artifact directory creation to include hash in the directory name for uniqueness. - Add error handling for directory existence checks to prevent overwriting. - Modify artifact build process to print file paths after copying, improving logging and traceability. * feat: add just tool and adjust dependencies in flake.nix - Include `just` in the inherited packages from `pkgs`. - Replace `mirage-crypto` with `just` in `nativeBuildInputs` for the default dev shell. - Fix typo from `propogatedBuildInputs` to `propagatedBuildInputs` in `packages.default`. - Add a new `justfile` with default and build commands. * feat: add flake workflow and update nix dependencies - Implement flake workflow for CI checks and builds on main branch - Update nixpkgs to latest revision for improved dependency management - Add `check`, `build`, and `update` commands to justfile for enhanced development workflow * feat: update README and enhance store module - Updated README.md with new overview and diagram for Vorpal. - Added a new image file vorpal.webp to the repository. - Enhanced the store.ml module by specifying the return type for get_file_paths function. * docs: add design section to README.md --- .envrc | 1 + .github/workflows/flake.yaml | 39 +++++++++++++++++++ .gitignore | 1 + .ocamlformat | 2 + README.md | 16 +++++++- bin/dune | 4 ++ bin/main.ml | 10 +++++ dune-project | 26 +++++++++++++ flake.lock | 57 ++++++++++++++++++++++++++++ flake.nix | 35 ++++++++++++++++++ justfile | 15 ++++++++ lib/build.ml | 11 ++++++ lib/dune | 3 ++ lib/hash.ml | 18 +++++++++ lib/store.ml | 70 +++++++++++++++++++++++++++++++++++ test/dune | 2 + test/test_vorpal.ml | 0 vorpal.opam | 31 ++++++++++++++++ vorpal.webp | Bin 0 -> 52904 bytes 19 files changed, 340 insertions(+), 1 deletion(-) create mode 100644 .envrc create mode 100644 .github/workflows/flake.yaml create mode 100644 .ocamlformat create mode 100644 bin/dune create mode 100644 bin/main.ml create mode 100644 dune-project create mode 100644 flake.lock create mode 100644 flake.nix create mode 100644 justfile create mode 100644 lib/build.ml create mode 100644 lib/dune create mode 100644 lib/hash.ml create mode 100644 lib/store.ml create mode 100644 test/dune create mode 100644 test/test_vorpal.ml create mode 100644 vorpal.opam create mode 100644 vorpal.webp diff --git a/.envrc b/.envrc new file mode 100644 index 00000000..3550a30f --- /dev/null +++ b/.envrc @@ -0,0 +1 @@ +use flake diff --git a/.github/workflows/flake.yaml b/.github/workflows/flake.yaml new file mode 100644 index 00000000..df0803ce --- /dev/null +++ b/.github/workflows/flake.yaml @@ -0,0 +1,39 @@ +name: flake + +on: + pull_request: + push: + branches: + - main + +env: + CACHIX_BINARY_CACHE: altf4llc-os + +jobs: + check: + runs-on: ubuntu-latest + steps: + - uses: cachix/install-nix-action@v26 + with: + nix_path: nixpkgs=channel:nixos-unstable + - uses: cachix/cachix-action@v14 + with: + authToken: ${{ secrets.CACHIX_AUTH_TOKEN }} + name: ${{ env.CACHIX_BINARY_CACHE }} + - uses: actions/checkout@v4 + - run: nix develop -c just check + + build: + needs: + - check + runs-on: ubuntu-latest + steps: + - uses: cachix/install-nix-action@v26 + with: + nix_path: nixpkgs=channel:nixos-unstable + - uses: cachix/cachix-action@v14 + with: + authToken: ${{ secrets.CACHIX_AUTH_TOKEN }} + name: ${{ env.CACHIX_BINARY_CACHE }} + - uses: actions/checkout@v4 + - run: nix develop -c just build diff --git a/.gitignore b/.gitignore index a18e0840..d4c46894 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ +.direnv *.annot *.cmo *.cma diff --git a/.ocamlformat b/.ocamlformat new file mode 100644 index 00000000..0b457a32 --- /dev/null +++ b/.ocamlformat @@ -0,0 +1,2 @@ +profile = default +version = 0.26.2 diff --git a/README.md b/README.md index a7a5106e..b488a46c 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,16 @@ # vorpal -Next generation build tool that fits every situation. + +Maintain your entire supply chain with one magical tool. + +## Overview + +Vorpal is a unified build, development, and deployment system that manages all phases of the software lifecycle and supply chain. Vorpal can compile your code in a reproducible manner and then deliver the resulting "artifacts" for development and deployment environments. + +## Design + +Below is the existing working diagram that illustrates the platform's design: + +> [!CAUTION] +> This design is subject to change at ANY moment and is a work in progress. + +![vorpal](./vorpal.webp) diff --git a/bin/dune b/bin/dune new file mode 100644 index 00000000..6a5dc702 --- /dev/null +++ b/bin/dune @@ -0,0 +1,4 @@ +(executable + (public_name vorpal) + (name main) + (libraries vorpal)) diff --git a/bin/main.ml b/bin/main.ml new file mode 100644 index 00000000..7dec4944 --- /dev/null +++ b/bin/main.ml @@ -0,0 +1,10 @@ +open Vorpal.Build + +let example : artifact = + { + ignore = [ ".git"; ".gitignore"; ".direnv"; "_build" ]; + name = "example"; + source = "."; + } + +let () = build_artifact example |> ignore diff --git a/dune-project b/dune-project new file mode 100644 index 00000000..566e1e54 --- /dev/null +++ b/dune-project @@ -0,0 +1,26 @@ +(lang dune 3.12) + +(name vorpal) + +(generate_opam_files true) + +(source + (github ALT-F4-LLC/vorpal)) + +(authors "ALT F4 LLC") + +(maintainers "Erik Reinert") + +(license LICENSE) + +(documentation https://url/to/documentation) + +(package + (name vorpal) + (synopsis "A short synopsis") + (description "A longer description") + (depends ocaml dune) + (tags + (topics "to describe" your project))) + +; See the complete stanza docs at https://dune.readthedocs.io/en/stable/dune-files.html#dune-project diff --git a/flake.lock b/flake.lock new file mode 100644 index 00000000..1c9925a5 --- /dev/null +++ b/flake.lock @@ -0,0 +1,57 @@ +{ + "nodes": { + "flake-parts": { + "inputs": { + "nixpkgs-lib": "nixpkgs-lib" + }, + "locked": { + "lastModified": 1715865404, + "narHash": "sha256-/GJvTdTpuDjNn84j82cU6bXztE0MSkdnTWClUCRub78=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "8dc45382d5206bd292f9c2768b8058a8fd8311d9", + "type": "github" + }, + "original": { + "id": "flake-parts", + "type": "indirect" + } + }, + "nixpkgs": { + "locked": { + "lastModified": 1716330097, + "narHash": "sha256-8BO3B7e3BiyIDsaKA0tY8O88rClYRTjvAp66y+VBUeU=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "5710852ba686cc1fd0d3b8e22b3117d43ba374c2", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-lib": { + "locked": { + "lastModified": 1714640452, + "narHash": "sha256-QBx10+k6JWz6u7VsohfSw8g8hjdBZEf8CFzXH1/1Z94=", + "type": "tarball", + "url": "https://github.com/NixOS/nixpkgs/archive/50eb7ecf4cd0a5756d7275c8ba36790e5bd53e33.tar.gz" + }, + "original": { + "type": "tarball", + "url": "https://github.com/NixOS/nixpkgs/archive/50eb7ecf4cd0a5756d7275c8ba36790e5bd53e33.tar.gz" + } + }, + "root": { + "inputs": { + "flake-parts": "flake-parts", + "nixpkgs": "nixpkgs" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/flake.nix b/flake.nix new file mode 100644 index 00000000..b698faea --- /dev/null +++ b/flake.nix @@ -0,0 +1,35 @@ +{ + description = "vorpal"; + + inputs.nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; + + outputs = inputs @ {flake-parts, ...}: + flake-parts.lib.mkFlake {inherit inputs;} { + systems = ["x86_64-linux" "aarch64-linux" "aarch64-darwin" "x86_64-darwin"]; + + perSystem = { + config, + pkgs, + ... + }: let + inherit (pkgs) just ocamlPackages mkShell; + inherit (ocamlPackages) buildDunePackage mirage-crypto; + in { + devShells = { + default = mkShell { + inputsFrom = [config.packages.default]; + nativeBuildInputs = [just]; + }; + }; + + packages = { + default = buildDunePackage { + pname = "vorpal"; + propagatedBuildInputs = [mirage-crypto]; + src = ./.; + version = "0.1.0"; + }; + }; + }; + }; +} diff --git a/justfile b/justfile new file mode 100644 index 00000000..d0d93797 --- /dev/null +++ b/justfile @@ -0,0 +1,15 @@ +_default: + just --list + +check: + nix flake check + +build profile="default": + nix build \ + --json \ + --no-link \ + --print-build-logs \ + '.#{{ profile }}' + +update: + nix flake update diff --git a/lib/build.ml b/lib/build.ml new file mode 100644 index 00000000..165b42fd --- /dev/null +++ b/lib/build.ml @@ -0,0 +1,11 @@ +open Hash +open Store + +type artifact = { ignore : string list; name : string; source : string } + +let build_artifact (artifact : artifact) = + get_file_paths artifact.source artifact.ignore + |> generate_hashes |> combine_hashes + |> fun hash -> + create_dir artifact.name hash |> fun dir -> + copy_files artifact.source dir artifact.ignore |> List.iter print_endline diff --git a/lib/dune b/lib/dune new file mode 100644 index 00000000..d1c3f78c --- /dev/null +++ b/lib/dune @@ -0,0 +1,3 @@ +(library + (name vorpal) + (libraries mirage-crypto unix)) diff --git a/lib/hash.ml b/lib/hash.ml new file mode 100644 index 00000000..5e608cb0 --- /dev/null +++ b/lib/hash.ml @@ -0,0 +1,18 @@ +open Mirage_crypto.Hash +open Store + +let generate_hash (input : string) : string = + let digest = SHA256.digest (Cstruct.of_string input) in + Cstruct.to_hex_string digest + +let generate_hashes (files : string list) : string list = + List.map + (fun f -> + let data = read_file f in + let hash = generate_hash data in + hash) + files + +let combine_hashes (hashes : string list) : string = + let combined = String.concat "" hashes in + generate_hash combined diff --git a/lib/store.ml b/lib/store.ml new file mode 100644 index 00000000..64dbe580 --- /dev/null +++ b/lib/store.ml @@ -0,0 +1,70 @@ +let store = "/tmp/vorpal/store" + +let rec get_file_paths (path : string) (ignore_files : string list) : + string list = + if Sys.is_directory path then + Sys.readdir path + |> Array.fold_left + (fun acc file -> + if not (List.mem file ignore_files) then + let file_path = Unix.realpath (Filename.concat path file) in + let files = get_file_paths file_path ignore_files in + acc @ files + else acc) + [] + else if not (List.mem (Filename.basename path) ignore_files) then [ path ] + else [] + +let get_dir_path (name : string) (hash : string) : string = + Filename.concat store (name ^ "-" ^ hash) + +let dir_exists (name : string) (hash : string) = + try + let stats = Unix.stat (get_dir_path name hash) in + stats.st_kind = S_DIR + with + | Unix.Unix_error (ENOENT, _, _) -> false (* No such file or directory *) + | Unix.Unix_error (EACCES, _, _) -> false (* Permission denied *) + | _ -> false (* Any other error *) + +let create_dir (name : string) (hash : string) : string = + let dir_path = get_dir_path name hash in + Unix.mkdir dir_path 0o777; + dir_path + +let copy_file (src : string) (dst : string) : unit = + let ic = open_in src in + let oc = open_out dst in + try + while true do + output_char oc (input_char ic) + done + with End_of_file -> + close_in ic; + close_out oc + +let rec copy_files (src : string) (dst : string) (ignore_files : string list) : + string list = + if Sys.is_directory src then ( + if not (Sys.file_exists dst) then Unix.mkdir dst 0o777; + Sys.readdir src + |> Array.fold_left + (fun acc file -> + if not (List.mem file ignore_files) then + let src_file = Filename.concat src file in + let dst_file = Filename.concat dst file in + let copied_files = copy_files src_file dst_file ignore_files in + acc @ copied_files + else acc) + []) + else if not (List.mem (Filename.basename src) ignore_files) then ( + copy_file src dst; + [ dst ]) + else [] + +let read_file (file : string) : string = + let ic = open_in file in + let n = in_channel_length ic in + let s = really_input_string ic n in + close_in ic; + s diff --git a/test/dune b/test/dune new file mode 100644 index 00000000..b7d22672 --- /dev/null +++ b/test/dune @@ -0,0 +1,2 @@ +(test + (name test_vorpal)) diff --git a/test/test_vorpal.ml b/test/test_vorpal.ml new file mode 100644 index 00000000..e69de29b diff --git a/vorpal.opam b/vorpal.opam new file mode 100644 index 00000000..16537aa2 --- /dev/null +++ b/vorpal.opam @@ -0,0 +1,31 @@ +# This file is generated by dune, edit dune-project instead +opam-version: "2.0" +synopsis: "A short synopsis" +description: "A longer description" +maintainer: ["Erik Reinert"] +authors: ["ALT F4 LLC"] +license: "LICENSE" +tags: ["topics" "to describe" "your" "project"] +homepage: "https://github.com/ALT-F4-LLC/vorpal" +doc: "https://url/to/documentation" +bug-reports: "https://github.com/ALT-F4-LLC/vorpal/issues" +depends: [ + "ocaml" + "dune" {>= "3.12"} + "odoc" {with-doc} +] +build: [ + ["dune" "subst"] {dev} + [ + "dune" + "build" + "-p" + name + "-j" + jobs + "@install" + "@runtest" {with-test} + "@doc" {with-doc} + ] +] +dev-repo: "git+https://github.com/ALT-F4-LLC/vorpal.git" diff --git a/vorpal.webp b/vorpal.webp new file mode 100644 index 0000000000000000000000000000000000000000..5e6a64f611fa83d2b2190cea22945074db26b66a GIT binary patch literal 52904 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 literal 0 HcmV?d00001