diff --git a/Dockerfile.x86_64 b/Dockerfile.x86_64 index a526332..2b0553e 100644 --- a/Dockerfile.x86_64 +++ b/Dockerfile.x86_64 @@ -1,55 +1,74 @@ -# Inspired by lucet's Dockerfile. +# using ubuntu 20 docker image +FROM ubuntu:focal -# using ubuntu 18 docker image -FROM ubuntu:bionic +ARG DEBIAN_FRONTEND=noninteractive -# install some basic packages RUN apt-get update + +# General GCC C/C++ Build toolchain +# pkg-config, libtool - used by PocketSphinx +# cmake - used by cmsis RUN apt-get install -y --no-install-recommends \ + automake \ build-essential \ - curl \ - git \ + binutils-dev \ cmake \ - ca-certificates \ - libssl-dev \ - pkg-config \ - gcc \ - g++ \ + git \ + libc++-dev \ + libtinfo5 \ + libtool \ + pkg-config + +# LLVM Tools +RUN apt-get install -y --no-install-recommends \ clang-8 \ clang-tools-8 \ llvm-8 \ llvm-8-dev \ - libc++-dev \ libc++abi-dev \ lld-8 \ - lldb-8 \ libclang-8-dev \ - libclang-common-8-dev \ - vim \ - binutils-dev \ - build-essential \ - automake \ - libtool \ - strace \ - less -RUN rm -rf /var/lib/apt/lists/* - -# set to use our installed clang version + libclang-common-8-dev RUN update-alternatives --install /usr/bin/clang clang /usr/bin/clang-8 100 RUN update-alternatives --install /usr/bin/llvm-config llvm-config /usr/bin/llvm-config-8 100 -# set LD_LIBRARY_PATH -ENV LD_LIBRARY_PATH=/usr/local/lib +# Needed to install from http endpoints via curl +RUN apt-get install -y --no-install-recommends \ + curl \ + ca-certificates \ + libssl-dev -RUN curl https://sh.rustup.rs -sSf | sh -s -- --default-toolchain stable -y +# Rust +RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- --default-toolchain stable --component rustfmt --target wasm32-wasi -y ENV PATH=/root/.cargo/bin:$PATH +RUN cargo install --debug cargo-audit cargo-watch rsign2 -RUN rustup component add rustfmt -RUN rustup target add wasm32-wasi +# WASI-SDK +RUN curl -sS -L -O https://github.com/WebAssembly/wasi-sdk/releases/download/wasi-sdk-8/wasi-sdk_8.0_amd64.deb && dpkg -i wasi-sdk_8.0_amd64.deb && rm -f wasi-sdk_8.0_amd64.deb +ENV WASI_SDK=/opt/wasi-sdk -RUN cargo install --debug cargo-audit cargo-watch rsign2 +# Test Script Stuff +RUN apt-get install -y --no-install-recommends \ + fonts-dejavu \ + fonts-cascadia-code \ + fonts-roboto \ + imagemagick \ + netpbm \ + pango1.0-tools \ + wamerican \ + wget -RUN curl -sS -L -O https://github.com/CraneStation/wasi-sdk/releases/download/wasi-sdk-7/wasi-sdk_7.0_amd64.deb && dpkg -i wasi-sdk_7.0_amd64.deb && rm -f wasi-sdk_7.0_amd64.deb +# Interactive Tools +RUN apt-get install -y --no-install-recommends \ + less \ + gdb \ + strace \ + vim + +# We need to set the locale for pango-view +ENV LANG C.UTF-8 +ENV LANGUAGE C.UTF-8 +ENV LC_ALL C.UTF-8 -ENV WASI_SDK=/opt/wasi-sdk ENV PATH=/opt/sledge/bin:$PATH +ENV LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH diff --git a/runtime/experiments/applications/ekf/by_iteration/run.sh b/runtime/experiments/applications/ekf/by_iteration/run.sh index 381de67..e129276 100755 --- a/runtime/experiments/applications/ekf/by_iteration/run.sh +++ b/runtime/experiments/applications/ekf/by_iteration/run.sh @@ -5,6 +5,7 @@ # Also disables pagination and stopping on SIGUSR1 experiment_directory=$(pwd) +echo "$experiment_directory" runtime_directory=$(cd ../../../.. && pwd) binary_directory=$(cd "$runtime_directory"/bin && pwd) log="$experiment_directory/log.csv" diff --git a/runtime/experiments/applications/ekf/one_iteration/run.sh b/runtime/experiments/applications/ekf/one_iteration/run.sh index ec4e3cc..3c9f57d 100755 --- a/runtime/experiments/applications/ekf/one_iteration/run.sh +++ b/runtime/experiments/applications/ekf/one_iteration/run.sh @@ -5,6 +5,7 @@ # Also disables pagination and stopping on SIGUSR1 experiment_directory=$(pwd) +echo "$experiment_directory" project_directory=$(cd ../../../.. && pwd) binary_directory=$(cd "$project_directory"/bin && pwd) did_pass=true diff --git a/runtime/experiments/applications/imageclassification/run.sh b/runtime/experiments/applications/imageclassification/run.sh index 96c8db1..32cb13b 100755 --- a/runtime/experiments/applications/imageclassification/run.sh +++ b/runtime/experiments/applications/imageclassification/run.sh @@ -5,6 +5,7 @@ # Also disables pagination and stopping on SIGUSR1 experiment_directory=$(pwd) +echo "$experiment_directory" project_directory=$(cd ../../.. && pwd) binary_directory=$(cd "$project_directory"/bin && pwd) diff --git a/runtime/experiments/applications/imageresize/by_resolution/run.sh b/runtime/experiments/applications/imageresize/by_resolution/run.sh index f55441f..3d44144 100755 --- a/runtime/experiments/applications/imageresize/by_resolution/run.sh +++ b/runtime/experiments/applications/imageresize/by_resolution/run.sh @@ -5,6 +5,7 @@ # Also disables pagination and stopping on SIGUSR1 experiment_directory=$(pwd) +echo "$experiment_directory" project_directory=$(cd ../../../.. && pwd) binary_directory=$(cd "$project_directory"/bin && pwd) log="$experiment_directory/log.csv" diff --git a/runtime/experiments/applications/imageresize/test/run.sh b/runtime/experiments/applications/imageresize/test/run.sh index a5466d1..1cd8d77 100755 --- a/runtime/experiments/applications/imageresize/test/run.sh +++ b/runtime/experiments/applications/imageresize/test/run.sh @@ -5,6 +5,7 @@ # Also disables pagination and stopping on SIGUSR1 experiment_directory=$(pwd) +echo "$experiment_directory" project_directory=$(cd ../../../.. && pwd) binary_directory=$(cd "$project_directory"/bin && pwd) @@ -26,7 +27,7 @@ total_count=10 for ((i = 0; i < total_count; i++)); do echo "$i" ext="$RANDOM" - curl -H 'Expect:' -H "Content-Type: image/jpg" --data-binary "@flower.jpg" --output "result_$ext.png" localhost:10000 2>/dev/null 1>/dev/null + curl -H 'Expect:' -H "Content-Type: image/jpg" --data-binary "@flower.jpg" --output "result_$ext.png" localhost:10000 2>/dev/null 1>/dev/null || exit 1 pixel_differences="$(compare -identify -metric AE "result_$ext.png" expected_result.png null: 2>&1 >/dev/null)" diff --git a/runtime/experiments/applications/licenseplate/by_plate_count/run.sh b/runtime/experiments/applications/licenseplate/by_plate_count/run.sh index a7105d4..06420c7 100755 --- a/runtime/experiments/applications/licenseplate/by_plate_count/run.sh +++ b/runtime/experiments/applications/licenseplate/by_plate_count/run.sh @@ -5,6 +5,7 @@ # Also disables pagination and stopping on SIGUSR1 experiment_directory=$(pwd) +echo "$experiment_directory" project_directory=$(cd ../../../.. && pwd) binary_directory=$(cd "$project_directory"/bin && pwd) log="$experiment_directory/log.csv" diff --git a/runtime/experiments/applications/ocr/by_dpi/run.sh b/runtime/experiments/applications/ocr/by_dpi/run.sh index 938a43b..6b5d8f5 100755 --- a/runtime/experiments/applications/ocr/by_dpi/run.sh +++ b/runtime/experiments/applications/ocr/by_dpi/run.sh @@ -5,6 +5,7 @@ # Also disables pagination and stopping on SIGUSR1 experiment_directory=$(pwd) +echo "$experiment_directory" project_directory=$(cd ../../../.. && pwd) binary_directory=$(cd "$project_directory"/bin && pwd) log="$experiment_directory/log.csv" diff --git a/runtime/experiments/applications/ocr/by_font/install.sh b/runtime/experiments/applications/ocr/by_font/install.sh index 43f930b..e2eff34 100755 --- a/runtime/experiments/applications/ocr/by_font/install.sh +++ b/runtime/experiments/applications/ocr/by_font/install.sh @@ -2,7 +2,7 @@ # Installs the deps needed for run.sh if [ "$(whoami)" == "root" ]; then - apt-get install netpbm pango1.0-tools wamerican + apt-get install netpbm pango1.0-tools wamerican fonts-roboto fonts-cascadia-code fonts-dejavu else - sudo apt-get install netpbm pango1.0-tools wamerican + sudo apt-get install netpbm pango1.0-tools wamerican fonts-roboto fonts-cascadia-code fonts-dejavu fi diff --git a/runtime/experiments/applications/ocr/by_font/run.sh b/runtime/experiments/applications/ocr/by_font/run.sh index cb526a9..a1bdf34 100755 --- a/runtime/experiments/applications/ocr/by_font/run.sh +++ b/runtime/experiments/applications/ocr/by_font/run.sh @@ -5,6 +5,7 @@ # Also disables pagination and stopping on SIGUSR1 experiment_directory=$(pwd) +echo "$experiment_directory" project_directory=$(cd ../../../.. && pwd) binary_directory=$(cd "$project_directory"/bin && pwd) log="$experiment_directory/log.csv" @@ -17,8 +18,8 @@ else fi word_count=100 -fonts=("mono" "URW Gothic" "Lobster Two") -total_count=100 +fonts=("DejaVu Sans Mono" "Roboto" "Cascadia Code") +total_count=10 for ((i = 1; i <= total_count; i++)); do echo "Test $i" @@ -27,25 +28,25 @@ for ((i = 1; i <= total_count; i++)); do for font in "${fonts[@]}"; do # For whatever reason, templating in multiple word strips was a pain, so brute forcing case "$font" in - "mono") - echo "Mono" - pango-view --font="mono" -qo mono_words.png -t "$words" - pngtopnm mono_words.png >mono_words.pnm + "DejaVu Sans Mono") + echo "DejaVu Sans Mono" + pango-view --font="DejaVu Sans Mono" -qo mono_words.png -t "$words" || exit 1 + pngtopnm mono_words.png >mono_words.pnm || exit 1 result=$(curl -H 'Expect:' -H "Content-Type: text/plain" --data-binary @mono_words.pnm localhost:10000 2>/dev/null) diff -ywBZE --suppress-common-lines <(echo "$words") <(echo "$result") ;; - "URW Gothic") - echo "URW Gothic" - pango-view --font="URW Gothic" -qo URW_Gothic_words.png -t "$words" - pngtopnm URW_Gothic_words.png >URW_Gothic_words.pnm - result=$(curl -H 'Expect:' -H "Content-Type: text/plain" --data-binary @URW_Gothic_words.pnm localhost:10002 2>/dev/null) + "Roboto") + echo "Roboto" + pango-view --font="Roboto" -qo Roboto_words.png -t "$words" || exit 1 + pngtopnm Roboto_words.png >Roboto_words.pnm || exit 1 + result=$(curl -H 'Expect:' -H "Content-Type: text/plain" --data-binary @Roboto_words.pnm localhost:10002 2>/dev/null) diff -ywBZE --suppress-common-lines <(echo "$words") <(echo "$result") ;; - "Lobster Two") - echo "Lobster Two" - pango-view --font="Lobster Two" -qo Lobster_Two_words.png -t "$words" - pngtopnm Lobster_Two_words.png >Lobster_Two_words.pnm - result=$(curl -H 'Expect:' -H "Content-Type: text/plain" --data-binary @Lobster_Two_words.pnm localhost:10001 2>/dev/null) + "Cascadia Code") + echo "Cascadia Code" + pango-view --font="Cascadia Code" -qo Cascadia_Code_words.png -t "$words" || exit 1 + pngtopnm Cascadia_Code_words.png >Cascadia_Code_words.pnm || exit 1 + result=$(curl -H 'Expect:' -H "Content-Type: text/plain" --data-binary @Cascadia_Code_words.pnm localhost:10001 2>/dev/null) diff -ywBZE --suppress-common-lines <(echo "$words") <(echo "$result") ;; esac diff --git a/runtime/experiments/applications/ocr/by_word/run.sh b/runtime/experiments/applications/ocr/by_word/run.sh index f1f098a..7ca4e2f 100755 --- a/runtime/experiments/applications/ocr/by_word/run.sh +++ b/runtime/experiments/applications/ocr/by_word/run.sh @@ -5,6 +5,7 @@ # Also disables pagination and stopping on SIGUSR1 experiment_directory=$(pwd) +echo "$experiment_directory" project_directory=$(cd ../../../.. && pwd) binary_directory=$(cd "$project_directory"/bin && pwd) log="$experiment_directory/log.csv" @@ -31,8 +32,8 @@ for ((i = 0; i < total_count; i++)); do for word_count in "${word_counts[@]}"; do echo "${word_count}"_words.pnm words="$(shuf -n"$word_count" /usr/share/dict/american-english)" - pango-view --font=mono -qo "$word_count"_words.png -t "$words" - pngtopnm "$word_count"_words.png >"$word_count"_words.pnm + pango-view --font=mono -qo "$word_count"_words.png -t "$words" || exit 1 + pngtopnm "$word_count"_words.png >"$word_count"_words.pnm || exit 1 result=$(curl -H 'Expect:' -H "Content-Type: text/plain" --data-binary @"${word_count}"_words.pnm localhost:${word_count_to_port["$word_count"_words.pnm]} 2>/dev/null) diff --git a/runtime/experiments/applications/ocr/fivebyeight/run.sh b/runtime/experiments/applications/ocr/fivebyeight/run.sh index 662178f..94e4b2c 100755 --- a/runtime/experiments/applications/ocr/fivebyeight/run.sh +++ b/runtime/experiments/applications/ocr/fivebyeight/run.sh @@ -5,6 +5,7 @@ # Also disables pagination and stopping on SIGUSR1 experiment_directory=$(pwd) +echo "$experiment_directory" project_directory=$(cd ../../../.. && pwd) binary_directory=$(cd "$project_directory"/bin && pwd) diff --git a/runtime/experiments/applications/ocr/handwriting/run.sh b/runtime/experiments/applications/ocr/handwriting/run.sh index f98d6b7..2555e17 100755 --- a/runtime/experiments/applications/ocr/handwriting/run.sh +++ b/runtime/experiments/applications/ocr/handwriting/run.sh @@ -5,6 +5,7 @@ # Also disables pagination and stopping on SIGUSR1 experiment_directory=$(pwd) +echo "$experiment_directory" project_directory=$(cd ../../../.. && pwd) binary_directory=$(cd "$project_directory"/bin && pwd) diff --git a/runtime/experiments/applications/ocr/hyde/run.sh b/runtime/experiments/applications/ocr/hyde/run.sh index c3444cd..875af1a 100755 --- a/runtime/experiments/applications/ocr/hyde/run.sh +++ b/runtime/experiments/applications/ocr/hyde/run.sh @@ -5,6 +5,7 @@ # Also disables pagination and stopping on SIGUSR1 experiment_directory=$(pwd) +echo "$experiment_directory" project_directory=$(cd ../../../.. && pwd) binary_directory=$(cd "$project_directory"/bin && pwd) did_pass=true diff --git a/runtime/tests/sod b/runtime/tests/sod index 3060d01..3bbad27 160000 --- a/runtime/tests/sod +++ b/runtime/tests/sod @@ -1 +1 @@ -Subproject commit 3060d0102555aab949308247a78252fa75568e45 +Subproject commit 3bbad277b334744595a64b193e6df6d5d31d9dfd diff --git a/test.sh b/test.sh index 2ec3e34..437636b 100755 --- a/test.sh +++ b/test.sh @@ -1,53 +1,54 @@ #!/bin/bash # Test Driver Script +if [[ $0 != "./test.sh" ]]; then + echo "Must run in same directory as ./test.sh" + exit 1 +fi + +base_dir=$(pwd) + # Awsm -cd awsm && cargo build --release && cd .. +cd "$base_dir/awsm" && cargo build --release || exit 1 # Sledge -cd runtime && make clean all && cd .. +cd "$base_dir/runtime" && make clean all || exit 1 # OCR Build # FIXME: gocr incorectly reports up to date -cd runtime/tests && make -B clean gocr && cd ../.. +cd "$base_dir/runtime/tests" && make -B clean gocr || exit 1 # OCR Tests -cd runtime/experiments/applications/ocr/hyde && ./run.sh && cd ../../../../.. -cd runtime/experiments/applications/ocr/handwriting && ./run.sh && cd ../../../../.. -cd runtime/experiments/applications/ocr/fivebyeight && ./run.sh && cd ../../../../.. - -# FIXME: Install scripts will only work after on Ubuntu 20 LTS -# cd runtime/experiments/applications/ocr/by_word && ./install.sh && cd ../../../../.. -# cd runtime/experiments/applications/ocr/by_word && ./run.sh && cd ../../../../.. - -# cd runtime/experiments/applications/ocr/by_font && ./install.sh && cd ../../../../.. -# cd runtime/experiments/applications/ocr/by_font && ./run.sh && cd ../../../../.. - -# cd runtime/experiments/applications/ocr/by_dpi && ./install.sh && cd ../../../../.. -# cd runtime/experiments/applications/ocr/by_dpi && ./run.sh && cd ../../../../.. +cd "$base_dir/runtime/experiments/applications/ocr/hyde" && ./run.sh || exit 1 +cd "$base_dir/runtime/experiments/applications/ocr/handwriting" && ./run.sh || exit 1 +cd "$base_dir/runtime/experiments/applications/ocr/fivebyeight" && ./run.sh || exit 1 +cd "$base_dir/runtime/experiments/applications/ocr/by_word" && ./install.sh || exit 1 +cd "$base_dir/runtime/experiments/applications/ocr/by_word" && ./run.sh || exit 1 +cd "$base_dir/runtime/experiments/applications/ocr/by_font" && ./install.sh || exit 1 +cd "$base_dir/runtime/experiments/applications/ocr/by_font" && ./run.sh || exit 1 +cd "$base_dir/runtime/experiments/applications/ocr/by_dpi" && ./install.sh || exit 1 +cd "$base_dir/runtime/experiments/applications/ocr/by_dpi" && ./run.sh || exit 1 # EKF Build -cd runtime/tests && make -B clean tinyekf && cd ../.. +cd "$base_dir/runtime/tests" && make -B clean tinyekf || exit 1 # EKF Tests -cd runtime/experiments/applications/ekf/by_iteration && ./run.sh && cd ../../../../.. -cd runtime/experiments/applications/ekf/one_iteration && ./run.sh && cd ../../../../.. +cd "$base_dir/runtime/experiments/applications/ekf/by_iteration" && ./run.sh || exit 1 +cd "$base_dir/runtime/experiments/applications/ekf/one_iteration" && ./run.sh || exit 1 # cifar10 Build -cd runtime/tests && make -B clean cifar10 && cd ../.. +cd "$base_dir/runtime/tests" && make -B clean cifar10 || exit 1 # cifar10 Tests -cd runtime/experiments/applications/imageclassification && ./run.sh && cd ../../../.. +cd "$base_dir/runtime/experiments/applications/imageclassification" && ./run.sh || exit 1 # sod Build -cd runtime/tests && make -B clean sod && cd ../.. +cd "$base_dir/runtime/tests" && make -B clean sod || exit 1 # sod Tests -cd runtime/experiments/applications/imageresize/test && ./install.sh && cd ../../../../.. -cd runtime/experiments/applications/imageresize/test && ./run.sh && cd ../../../../.. -cd runtime/experiments/applications/imageresize/by_resolution && ./install.sh && cd ../../../../.. -cd runtime/experiments/applications/imageresize/by_resolution && ./run.sh && cd ../../../../.. -cd runtime/experiments/applications/licenseplace/1 && ./run.sh && cd ../../../../.. -cd runtime/experiments/applications/licenseplace/2 && ./run.sh && cd ../../../../.. -cd runtime/experiments/applications/licenseplace/4 && ./run.sh && cd ../../../../.. -cd runtime/experiments/applications/licenseplace && ./run.sh && cd ../../../.. +cd "$base_dir/runtime/experiments/applications/imageresize/test" && ./install.sh || exit 1 +cd "$base_dir/runtime/experiments/applications/imageresize/test" && ./run.sh || exit 1 +cd "$base_dir/runtime/experiments/applications/imageresize/by_resolution" && ./install.sh || exit 1 +cd "$base_dir/runtime/experiments/applications/imageresize/by_resolution" && ./run.sh || exit 1 +cd "$base_dir/runtime/experiments/applications/licenseplate/by_plate_count" && ./run.sh || exit 1 +cd "$base_dir/runtime/experiments/applications/licenseplate" && ./run.sh || exit 1