Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Initial API and examples closing M1 and M2 (rebased from another PRs) #32

Merged
merged 1 commit into from
Apr 18, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions .envrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
# https://github.com/nix-community/nix-direnv A fast, persistent use_nix/use_flake implementation for direnv:
if ! has nix_direnv_version || ! nix_direnv_version 2.3.0; then
source_url "https://raw.githubusercontent.com/nix-community/nix-direnv/2.3.0/direnvrc" "sha256-Dmd+j63L84wuzgyjITIfSxSD57Tx7v51DMxVZOsiUD8="
fi
# https://github.com/input-output-hk/devx Slightly opinionated shared GitHub Action for Cardano-Haskell projects
use flake "github:input-output-hk/devx?rev=2f4fa7f42aa1184ce1ed03f468f60648c466fa84#ghc96-iog"
2 changes: 2 additions & 0 deletions .ghci
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
:set -Wunused-binds -Wunused-imports -Worphans
:set -isrc -itest
1 change: 1 addition & 0 deletions .ghcid
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
--command="cabal repl test-suite:cem-sdk-test" -W -T ":main --failure-report=/tmp/hspec-report.txt -r"
73 changes: 73 additions & 0 deletions .github/workflows/haskell-ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
# This GitHub workflow config has been generated by a script via
#
# haskell-ci 'github' 'cabal.project'
#
# And edited by Grisha A LOT
#
# To regenerate the script (for example after adjusting tested-with) run
#
# haskell-ci regenerate
#
# For more information, see https://github.com/haskell-CI/haskell-ci
#
# version: 0.19.20240402
#
# REGENDATA ("0.19.20240402",["github","cabal.project"])
#
name: Haskell-CI
on:
- push
jobs:
linux:
name: Haskell-CI - Linux - ${{ matrix.compiler }}
runs-on: ubuntu-20.04
timeout-minutes:
60
container:
image: buildpack-deps:bionic
continue-on-error: ${{ matrix.allow-failure }}
strategy:
matrix:
include:
- compiler: ghc-9.6.3
compilerKind: ghc
compilerVersion: 9.6.3
setup-method: ghcup
allow-failure: false
fail-fast: false
steps:
- name: apt
run: |
apt-get update
apt-get install -y --no-install-recommends gnupg ca-certificates dirmngr curl git software-properties-common libtinfo5
mkdir -p "$HOME/.ghcup/bin"
curl -sL https://downloads.haskell.org/ghcup/0.1.20.0/x86_64-linux-ghcup-0.1.20.0 > "$HOME/.ghcup/bin/ghcup"
chmod a+x "$HOME/.ghcup/bin/ghcup"
"$HOME/.ghcup/bin/ghcup" config add-release-channel https://raw.githubusercontent.com/haskell/ghcup-metadata/master/ghcup-prereleases-0.0.8.yaml;
"$HOME/.ghcup/bin/ghcup" install ghc "$HCVER" || (cat "$HOME"/.ghcup/logs/*.* && false)
"$HOME/.ghcup/bin/ghcup" install cabal 3.10.2.0 || (cat "$HOME"/.ghcup/logs/*.* && false)
env:
HCKIND: ${{ matrix.compilerKind }}
HCNAME: ${{ matrix.compiler }}
HCVER: ${{ matrix.compilerVersion }}
- name: checkout
uses: actions/checkout@v3
- name: build w/o tests
run: |
$CABAL v2-build $ARG_COMPILER --disable-tests --disable-benchmarks all
- name: build
run: |
$CABAL v2-build $ARG_COMPILER $ARG_TESTS $ARG_BENCH all --write-ghc-environment-files=always
- name: cabal check
run: |
cd ${PKGDIR_cem_script} || false
${CABAL} -vnormal check
- name: haddock
run: |
$CABAL v2-haddock --disable-documentation --haddock-all $ARG_COMPILER --with-haddock $HADDOCK $ARG_TESTS $ARG_BENCH all
- name: save cache
uses: actions/cache/save@v3
if: always()
with:
key: ${{ runner.os }}-${{ matrix.compiler }}-${{ github.sha }}
path: ~/.cabal/store
5 changes: 5 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -22,3 +22,8 @@ cabal.project.local~
.HTF/
.ghc.environment.*
.vscode
haddocks
.direnv/
# Functions changed by runing local testnet
devnet/db
devnet/genesis-*.json
1 change: 1 addition & 0 deletions .hlint.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -9,3 +9,4 @@
- ignore: {name: Use unless}
- ignore: {name: Use fmap}
- ignore: {name: Use traverse_}
- ignore: {name: "Use asks"}
7 changes: 7 additions & 0 deletions .vscode/settings.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"cSpell.words": [
"Fracada",
"POCRE",
"Serialised"
]
}
34 changes: 34 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,40 @@ Define and reuse Cardano DApp logic via annotated CEM-machines, resulting in fre
* Automatically testing invariants
* Human-readable specs

## Building

Building is performed with cabal.
Building requires `libblst` and `libsodium` installed.

Arch Linux has `libblst` in AUR, nix are exemplified by IOHK,
and manual installation is described here:
https://github.com/input-output-hk/cardano-node-wiki/blob/main/docs/getting-started/install.md#installing-blst

## Running tests

Tests depend on localdevnet, which is runned in Docker.
To start it do:

```bash
./prepare-devnet.sh
docker-compose -f docker-compose.devnet.yaml up
sudo chown -R $USER:$USER ./devnet/
```

After that run: `cabal test`.

For development and fast response once could consider `ghcid`.

## Devnet stalling bug

Sometimes devnet stalls, due to some bug, in that case one should restart it,
and wipe directory `./devnet/db`. To look for stalling one could check:
`CARDANO_NODE_SOCKET_PATH=./devnet/node.socket cardano-cli query tip --testnet-magic 42`. For properly working devnet slots should change
and sync be marked as 100%.

On this bug:
https://forum.cardano.org/t/restarting-custom-private-networks-cardano-node-forge35/116921

## Project status

Project is in early development stage and is funded by
Expand Down
26 changes: 24 additions & 2 deletions cabal.project
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,31 @@ repository cardano-haskell-packages
d4a35cd3121aa00d18544bb0ac01c3e1691d618f462c46129271bccf39f7e8ee

index-state:
, hackage.haskell.org 2023-11-03T12:09:05Z
, cardano-haskell-packages 2023-11-03T12:09:05Z
, hackage.haskell.org 2024-03-31T15:25:20Z
, cardano-haskell-packages 2024-03-30T16:14:24Z

tests: true

allow-newer:
cardano-ledger-shelley-ma:base,
ouroboros-consensus-cardano:base,

-- This is needed since prettyprinting stuff was moved to
-- cardano-ledger-test library which is no longer a subject
-- to be published on CHaP.
-- See discussion in https://github.com/IntersectMBO/cardano-ledger/pull/3973
source-repository-package
type: git
location: https://github.com/IntersectMBO/cardano-ledger
tag: 6e2d37cc0f47bd02e89b4ce9f78b59c35c958e96
--sha256: 6+Os/mQDzBOU+TkTD+n/T1MFcI+Mn0/tcBMJhLRfqyA=
subdir:
libs/cardano-ledger-test

source-repository-package
type: git
location: https://github.com/mlabs-haskell/clb
tag: b0717b7a4e84796dbbd3db25f95230fdbf8b4651
--sha256: 6+Os/mQDzBOU+TkTD+n/T1MFcI+Mn0/tcBMJhLRfqyA=

packages: .
Loading
Loading