Skip to content
This repository has been archived by the owner on Apr 27, 2023. It is now read-only.

Workflow

Dan Page edited this page Mar 11, 2021 · 21 revisions

Step 1: create user repository

  • Either

    • the GitHub CLI, e.g.,

      gh repo fork ssh://[email protected]/scarv/sca3s-harness.git --clone='false'

      or

    • the GitHub UI:

Step 2: clone user repository

  • Either use

    • the GitHub CLI,

      gh repo clone sca3s-harness ./sca3s-harness

      noting that in the example above, it is possible to clone the repository at the same time as creating the fork, or

    • git itself:

      git clone ssh://[email protected]/${USER}/sca3s-harness.git ./sca3s-harness
  • Execute

    cd ./sca3s-harness
    source ./bin/conf.sh
    

    to configure the environment. For example, you should find that the REPO_HOME environment variable is set appropriately.

Step 3: develop target implementation

  • Decide on the kernel your target implementation will include; set the associated environment variable, e.g.,

    export KERNEL="block"
  • Edit

    ${REPO_HOME}/src/sca3s/harness/kernel/${KERNEL}/kernel_imp.h

    to specify parameters for the target implementation.

  • Edit

    ${REPO_HOME}/src/sca3s/harness/kernel/${KERNEL}/kernel_imp.c

    to complete the target implementation itself.

Step 4: build target implementation

  • Decide on the board your target implementation will be built for; set the associated environment variable, e.g.,

    export BOARD="native"
  • Decide on the build context; set the associated environment variable, e.g.,

    export CONTEXT="docker"
  • Either

    1. for a native build context, execute

      make      clean-harness
      make deps-fetch-harness
      make deps-build-harness
      make      build-harness

      or

    2. for a Docker-based build context, execute

      make      clean-harness
      make      build-harness

    which, if the build succeeds, should produce associated artifacts in ${REPO_HOME}/build/${BOARD}.

Step 5: commit target implementation

doing so is important, in so far as a "stale" working repository
may be rejected when used via
[`sca3s.scarv.org`](https://sca3s.scarv.org).
  • Execute

    git commit --all --message="updated target implementation"
    git push

    to commit and push any changes.

Step 6: use target implementation

Local

Remote, via web-based UI

Remote, via CI

Continuous Integration (CI)

Remote, via contest

Clone this wiki locally