/cpen400p-baseproject

Some basic scaffolding to do 400p stuff

Primary LanguageDockerfile

Cpen 400p container setup

This is a docker setup for cpen 400p. This should theoretically be equivalent to the provided virtualbox image.

Pull image

docker pull ghcr.io/vchernin/cpen400p-baseproject:latest

Using Container

Note for practical usage you would probably want to mount your own working directory into the container (say your local llvm git repo). There are no git repos in this container, just prebuilt binaries and libraries.

docker run -it --rm cpen400p-baseproject

Build

Not recommended unless you have many threads due to needing to compile LLVM and a few other things

docker build -t ghcr.io/vchernin/cpen400p-baseproject .

Push

First get a PAT for your github account that has write access to this repo.

export CR_PAT=YOUR_TOKEN
echo $CR_PAT | docker login ghcr.io -u USERNAME --password-stdin
docker push ghcr.io/vchernin/cpen400p-baseproject:latest

Full documentation about github container registry usage

Other notes

Changes from original instructions

These were done as needed when issues were found.

  • python2-minimal from apt doesn't exist in ubuntu 18.04 so remove it
  • ninja-build from apt was listed twice
  • llvm build instructions had needless cding
  • cmake install instructions used shell glob * instead of . which doesn't include hidden files
  • cmake installation instructions used cp -R instead of cp -a which preserves links which is usually wanted
  • changed a bunch of usage of cmake and make to cmake and ninja
  • removed any thread count hardcoding, haven't seen any race conditions building this (I may have seen llvm fail once but it's rare and not worth losing the performance)
  • added zlib1g-dev to apt deps which is needed for klee