remove obsolete justfiles

This commit is contained in:
2026-05-29 01:07:56 +02:00
parent c57ae5fced
commit ac6297643f
5 changed files with 92 additions and 419 deletions

View File

@ -526,7 +526,7 @@ rec {
# LD_LIBRARY_PATH = pkgs.lib.makeLibraryPath buildInputs;
JUST_WORKING_DIRECTORY = "/home/christoph/Notes/TU/MastersThesis/FailNix";
JUST_JUSTFILE = "/home/christoph/Notes/TU/MastersThesis/FailNix/scripts/nixos.just";
JUST_JUSTFILE = "/home/christoph/Notes/TU/MastersThesis/FailNix/scripts/build.just";
# Those are read by the justfile
FAIL_SHARE = "${fail-bin}/share";

View File

@ -1,3 +1,91 @@
BUILD_DIR := "build"
# Load environment variables set by "nix develop"-shell
WASI_ROOT := env("WASI_ROOT")
WAMR_ROOT := env("WAMR_ROOT")
LIBIWASM_DEBUG := env("LIBIWASM_DEBUG")
LIBIWASM_RELEASE := env("LIBIWASM_RELEASE")
LIBIWASM_MMAP_DEBUG := env("LIBIWASM_MMAP_DEBUG")
LIBIWASM_MMAP_RELEASE := env("LIBIWASM_MMAP_RELEASE")
LIBIWASM_LINUX_DEBUG := env("LIBIWASM_LINUX_DEBUG")
LIBIWASM_LINUX_RELEASE := env("LIBIWASM_LINUX_RELEASE")
CROSS_CC := env("CROSS_CC")
LINUX_CC := env("LINUX_CC")
# =================================================================================================================== #
# Helper recipes
# =================================================================================================================== #
[default]
[private]
list:
@just --list
[private]
create-build-dir module:
mkdir -p {{ BUILD_DIR }}-{{ module }}
[doc("Delete the build directory")]
clean module:
rm -rf {{ BUILD_DIR }}-{{ module }}
# =================================================================================================================== #
# Just do it
# =================================================================================================================== #
# Somehow this breaks the syntax highlighting:
# [arg("mode", pattern="c|aot|interp", help="Which WASM mode to use")]
# [arg("target", pattern="fail|linux|linux-baremetal", help="Which platform to compile for")]
[doc("Perform all steps for a fail/linux/linux-bm build with aot/interp WASM")]
[group("5: just do it")]
build module="__help" target="fail" mode="aot":
#!/usr/bin/env sh
if [ "{{ module }}" = "__help" ]; then
just --usage build
exit 0
fi
just clean {{ module }}
just create-build-dir {{ module }}
just copy-auxiliary {{ module }}
if [ "{{ mode }}" = "aot" ]; then
just build-wasm-module {{ module }}
just build-wasm-aot {{ module }} {{ target }}
just build-wasm-aot-array {{ module }}
just prepare-aot-host {{ module }}
just build-wasm-host {{ module }} {{ target }}
just build-system-startup {{ module }} {{ target }}
just build-system-syscalls {{ module }} {{ target }}
just link-system {{ module }} {{ target }}
elif [ "{{ mode }}" = "interp" ]; then
just build-wasm-module {{ module }}
just build-wasm-interp-array {{ module }}
just prepare-interp-host {{ module }}
just build-wasm-host {{ module }} {{ target }}
just build-system-startup {{ module }} {{ target }}
just build-system-syscalls {{ module }} {{ target }}
just link-system {{ module }} {{ target }}
elif [ "{{ mode }}" = "c" ]; then
just build-c-module {{ module }} {{ target }}
just build-c-host {{ module }} {{ target }}
just build-system-startup {{ module }} {{ target }}
just link-c-system {{ module }} {{ target }}
else
echo "unknown mode: {{ mode }}" >&2
exit 1
fi
just build-iso {{ module }}
# =================================================================================================================== #
# Build WASM module recipes
# =================================================================================================================== #
@ -48,7 +136,7 @@ LINUX_LDFLAGS_NOWASM := "\
-lm \
"
WAMRC := "wamrc"
WAMR_USE_XIP := env_var_or_default("WAMR_USE_XIP", "false")
WAMR_USE_XIP := env("WAMR_USE_XIP", "false")
CROSS_WAMRCFLAGS := "\
--target=i386 \
--cpu=generic \
@ -131,7 +219,7 @@ build-c-module module target="fail":
copy-auxiliary module:
cp flake.nix {{ BUILD_DIR }}-{{ module }}/flake.nix
cp scripts/runner.pl {{ BUILD_DIR }}-{{ module }}/runner.pl
cp scripts/wasm.just {{ BUILD_DIR }}-{{ module }}/wasm.just
cp scripts/build.just {{ BUILD_DIR }}-{{ module }}/wasm.just
cp targets/lib.h {{ BUILD_DIR }}-{{ module }}/lib.h
cp targets/linker.ld {{ BUILD_DIR }}-{{ module }}/linker.ld
cp targets/startup.s {{ BUILD_DIR }}-{{ module }}/startup.s
@ -143,7 +231,7 @@ copy-auxiliary module:
# =================================================================================================================== #
# FAIL*
WAMR_USE_MMAP := env_var_or_default("WAMR_USE_MMAP", "false")
WAMR_USE_MMAP := env("WAMR_USE_MMAP", "false")
ACTIVE_LIBIWASM_DEBUG := if WAMR_USE_MMAP == "true" { LIBIWASM_MMAP_DEBUG } else { LIBIWASM_DEBUG }
CROSS_CFLAGS := f"-I./targets/wasm-host {{CROSS_CFLAGS_NOWASM}}"
CROSS_LDFLAGS := f"-L{{ACTIVE_LIBIWASM_DEBUG}} -liwasm {{CROSS_LDFLAGS_NOWASM}}"

View File

@ -1,134 +0,0 @@
[doc("Trace a golden run using FAIL*")]
[group("4: fail")]
trace module:
{{ BOCHS_RUNNER }} \
-V {{ FAIL_SHARE }}/vgabios.bin \
-b {{ FAIL_SHARE }}/BIOS-bochs-latest \
-1 \
-f {{ FAIL_TRACE }} \
-e {{ BUILD_DIR }}-{{ module }}/system.elf \
-i {{ BUILD_DIR }}-{{ module }}/system.iso \
-- \
-Wf,--start-symbol=fail_start_trace \
-Wf,--save-symbol=fail_start_trace \
-Wf,--end-symbol=fail_stop_trace \
-Wf,--state-file={{ BUILD_DIR }}-{{ module }}/state \
-Wf,--trace-file={{ BUILD_DIR }}-{{ module }}/trace.pb \
-Wf,--elf-file={{ BUILD_DIR }}-{{ module }}/system.elf
@echo "Next step: \"just import {{ module }}\""
# [doc("Dump a FAIL* golden run trace")]
# [group("fail")]
# dump module:
# {{ FAIL_DUMP }} {{ BUILD_DIR }}-{{ module }}/trace.pb
[doc("Import a FAIL* golden run trace")]
[group("4: fail")]
import module:
{{ FAIL_IMPORT }} --database-option-file ./db.conf -t {{ BUILD_DIR }}-{{ module }}/trace.pb \
-i MemoryImporter \
-e {{ BUILD_DIR }}-{{ module }}/system.elf -v {{ module }} -b mem
{{ FAIL_IMPORT }} --database-option-file ./db.conf -t {{ BUILD_DIR }}-{{ module }}/trace.pb \
-i RegisterImporter \
-e {{ BUILD_DIR }}-{{ module }}/system.elf -v {{ module }} -b regs --flags
{{ FAIL_IMPORT }} --database-option-file ./db.conf -t {{ BUILD_DIR }}-{{ module }}/trace.pb \
-i RegisterImporter \
-e {{ BUILD_DIR }}-{{ module }}/system.elf -v {{ module }} -b ip --no-gp --ip
{{ FAIL_IMPORT }} --database-option-file ./db.conf -t {{ BUILD_DIR }}-{{ module }}/trace.pb \
-i ElfImporter --objdump objdump \
-e {{ BUILD_DIR }}-{{ module }}/system.elf -v {{ module }} -b ip
{{ FAIL_IMPORT }} --database-option-file ./db.conf -t {{ BUILD_DIR }}-{{ module }}/trace.pb \
-i ElfImporter --objdump objdump \
-e {{ BUILD_DIR }}-{{ module }}/system.elf -v {{ module }} -b mem
{{ FAIL_IMPORT }} --database-option-file ./db.conf -t {{ BUILD_DIR }}-{{ module }}/trace.pb \
-i ElfImporter --objdump objdump \
-e {{ BUILD_DIR }}-{{ module }}/system.elf -v {{ module }} -b regs
# {{ FAIL_IMPORT }} --database-option-file ./db.conf -t {{ BUILD_DIR }}-{{ module }}/trace.pb \
# -i ElfImporter --objdump objdump \
# -e {{ BUILD_DIR }}-{{ module }}/system.elf -v {{ module }} -b ip --sources
# {{ FAIL_IMPORT }} --database-option-file ./db.conf -t {{ BUILD_DIR }}-{{ module }}/trace.pb \
# -i ElfImporter --objdump objdump \
# -e {{ BUILD_DIR }}-{{ module }}/system.elf -v {{ module }} -b mem --sources
# {{ FAIL_IMPORT }} --database-option-file ./db.conf -t {{ BUILD_DIR }}-{{ module }}/trace.pb \
# -i ElfImporter --objdump objdump \
# -e {{ BUILD_DIR }}-{{ module }}/system.elf -v {{ module }} -b regs --sources
{{ FAIL_PRUNE }} --database-option-file ./db.conf -v {{ module }} -b %% --overwrite
@echo "Next step: \"just server {{ module }}\""
[doc("Start the FAIL* campaign server")]
[group("4: fail")]
server module:
{{ FAIL_SERVER }} \
--port {{ FAIL_SERVER_PORT }} \
--database-option-file ./db.conf \
-v {{ module }} \
-b % \
--inject-single-bit \
--inject-registers \
&
@echo "Next step: \"just client {{ module }}\""
[doc("Stop the FAIL* campaign server")]
[group("4: fail")]
stop-server:
pkill -f {{ FAIL_SERVER }}
[doc("Start a FAIL* campaign client")]
[group("4: fail")]
client module:
# -Wf,--catch-write-textsegment
# -Wf,--catch-outerspace
{{ BOCHS_RUNNER }} \
-V {{ FAIL_SHARE }}/vgabios.bin \
-b {{ FAIL_SHARE }}/BIOS-bochs-latest \
-f {{ FAIL_INJECT }} \
-e {{ BUILD_DIR }}-{{ module }}/system.elf \
-i {{ BUILD_DIR }}-{{ module }}/system.iso \
-j {{ num_cpus() }} \
-- \
-Wf,--server-port={{ FAIL_SERVER_PORT }} \
-Wf,--state-dir={{ BUILD_DIR }}-{{ module }}/state \
-Wf,--trap \
-Wf,--catch-outerspace \
-Wf,--timeout=500000 \
-Wf,--ok-marker=fail_marker_positive \
-Wf,--fail-marker=fail_marker_negative \
-Wf,--detected-marker=fail_marker_detected \
> /dev/null
@echo "Next step: \"just result {{ module }}\" or \"just resultbrowser\""
[doc("Query FAIL* marker statistics from the database")]
[group("4: fail")]
result module:
@echo "select variant, benchmark, resulttype, sum(t.time2 - t.time1 + 1) as faults \
FROM variant v \
JOIN trace t ON v.id = t.variant_id \
JOIN fspgroup g ON g.variant_id = t.variant_id AND g.instr2 = t.instr2 AND g.data_address = t.data_address \
JOIN result_GenericExperimentMessage r ON r.pilot_id = g.pilot_id \
JOIN fsppilot p ON r.pilot_id = p.id \
WHERE v.variant = \"{{ module }}\" \
GROUP BY v.id, resulttype \
ORDER BY variant, benchmark, resulttype;" | mariadb --defaults-file=./db.conf -t
[doc("Dump FAIL* markers to CSV")]
[group("4: fail")]
result-csv module:
@echo "SELECT \
CONCAT(\"0x\", HEX(p.injection_instr_absolute)) AS fault_address, \
SUM(t.time2 - t.time1 + 1) AS total_fail_markers \
FROM trace t \
JOIN variant v ON v.id = t.variant_id \
JOIN fspgroup g ON g.variant_id = t.variant_id AND g.instr2 = t.instr2 AND g.data_address = t.data_address \
JOIN result_GenericExperimentMessage r ON r.pilot_id = g.pilot_id \
JOIN fsppilot p ON p.id = r.pilot_id \
WHERE v.variant = \"{{ module }}\" AND r.resulttype = \"FAIL_MARKER\" \
GROUP BY p.injection_instr_absolute \
ORDER BY SUM(t.time2 - t.time1 + 1) DESC;" | mariadb --defaults-file=./db.conf --batch --raw | sed 's/\t/,/g'
[doc("Start the FAIL* resultbrowser")]
[group("4: fail")]
resultbrowser:
{{ RESULT_BROWSER }} -c ./db.conf --host=0.0.0.0 --port={{ RESULTBROWSER_PORT }}

View File

@ -1,35 +0,0 @@
import "fail.just"
BUILD_DIR := "build"
# FAIL* variables
FAIL_SERVER_PORT := "22941"
RESULTBROWSER_PORT := "22941"
FAIL_BIN := "fail/bin"
FAIL_SHARE := "fail/share"
BOCHS_RUNNER := f"{{FAIL_BIN}}/bochs-experiment-runner.py"
FAIL_TRACE := f"{{FAIL_BIN}}/fail-x86-tracing"
FAIL_DUMP := f"{{FAIL_BIN}}/dump-trace"
FAIL_IMPORT := f"{{FAIL_BIN}}/import-trace"
FAIL_PRUNE := f"{{FAIL_BIN}}/prune-trace"
FAIL_SERVER := f"{{FAIL_BIN}}/generic-experiment-server"
FAIL_INJECT := f"{{FAIL_BIN}}/generic-experiment-client"
RESULT_BROWSER := f"{{FAIL_BIN}}/resultbrowser.py"
# =================================================================================================================== #
# Helper recipes
# =================================================================================================================== #
[default]
[private]
list:
@./just --list --unsorted
# Create a database:
# - mysql -u smchurla -p
# - CREATE DATABASE database_name;
# - SHOW DATABASES;
procs:
ps -u smchurla

View File

@ -1,246 +0,0 @@
import "wasm.just"
import "fail.just"
BUILD_DIR := "build"
# Load environment variables set by "nix develop"-shell
FAIL_SHARE := env("FAIL_SHARE")
WASI_ROOT := env("WASI_ROOT")
WAMR_ROOT := env("WAMR_ROOT")
LIBIWASM_DEBUG := env("LIBIWASM_DEBUG")
LIBIWASM_RELEASE := env("LIBIWASM_RELEASE")
LIBIWASM_MMAP_DEBUG := env("LIBIWASM_MMAP_DEBUG")
LIBIWASM_MMAP_RELEASE := env("LIBIWASM_MMAP_RELEASE")
LIBIWASM_LINUX_DEBUG := env("LIBIWASM_LINUX_DEBUG")
LIBIWASM_LINUX_RELEASE := env("LIBIWASM_LINUX_RELEASE")
CROSS_CC := env("CROSS_CC")
LINUX_CC := env("LINUX_CC")
# FAIL* variables
FAIL_SERVER_PORT := "1111"
RESULTBROWSER_PORT := "5000"
BOCHS_RUNNER := "bochs-experiment-runner.py"
FAIL_TRACE := "fail-x86-tracing"
FAIL_DUMP := "dump-trace"
FAIL_IMPORT := "import-trace"
FAIL_PRUNE := "prune-trace"
FAIL_SERVER := "generic-experiment-server"
FAIL_INJECT := "generic-experiment-client"
RESULT_BROWSER := "resultbrowser.py"
# =================================================================================================================== #
# Helper recipes
# =================================================================================================================== #
[default]
[private]
list:
@just --list
[private]
create-build-dir module:
mkdir -p {{ BUILD_DIR }}-{{ module }}
[doc("Delete the build directory")]
clean module:
rm -rf {{ BUILD_DIR }}-{{ module }}
# =================================================================================================================== #
# MySQL recipes
# =================================================================================================================== #
[doc("Start MySQL container to receive FAIL* trace/campaign results")]
[group("3: fail db")]
start-db:
docker run -d \
--name fail-db \
-e MYSQL_ROOT_PASSWORD=fail \
-e MYSQL_USER=fail \
-e MYSQL_PASSWORD=fail \
-e MYSQL_DATABASE=fail \
-p 3306:3306 \
mysql
[doc("Connect to MySQL database using DBeaver")]
[group("3: fail db")]
connect-db:
dbeaver -con "name=fail|driver=mysql|host=localhost|port=3306|database=fail|user=fail|password=fail"
[doc("Stop MySQL container")]
[group("3: fail db")]
stop-db:
docker stop fail-db
[doc("Remove MySQL container")]
[group("3: fail db")]
remove-db:
docker container rm fail-db
# =================================================================================================================== #
# Debugging recipes
# =================================================================================================================== #
[doc("Launch gdb")]
[group("debug")]
gdb module:
gdb --tui {{ BUILD_DIR }}-{{ module }}/system.elf
# [doc("Launch radare2 at address and disassemble")]
# [group("debug")]
# r2 module addr="dbg.os_main":
# # -e asm.section=true
# # -e asm.bytes=true
# radare2 -AA \
# -c "f TARGET @ {{ addr }}; s {{ addr }}; pd-- 30" \
# -e asm.syntax=intel \
# -e asm.lines=false \
# -e asm.xrefs=true \
# -e asm.flags=true \
# -e asm.comments=true \
# -e asm.functions=true \
# -e asm.var=true \
# -e asm.cmt.right=true \
# -e asm.dwarf=true \
# -e asm.pseudo=false \
# -e asm.describe=false \
# -e bin.relocs.apply=true \
# {{ BUILD_DIR }}-{{ module }}/system.elf
[doc("Disassemble with objdump at address")]
[group("debug")]
dump dir addr="0x100000" saddr="0x100100":
objdump {{ dir }}/system.elf \
--disassemble-all \
--disassembler-options=intel \
--disassembler-color=terminal \
--source \
--demangle \
--section=.text \
--start-address={{ addr }} \
--stop-address={{ saddr }} \
--prefix={{ dir }} \
--prefix-strip=7
[doc("Launch radare2 at address (interactive)")]
[group("debug")]
r2i module addr="dbg.os_main":
# -e asm.section=true
# -e asm.bytes=true
radare2 -AA \
-c "s {{ addr }}" \
-e scr.color=3 \
-e scr.scrollbar=0 \
-e scr.responsive=true \
-e scr.interactive=true \
-e scr.utf8=true \
-e scr.utf8.curvy=true \
-e asm.syntax=intel \
-e asm.lines=false \
-e asm.xrefs=true \
-e asm.flags=true \
-e asm.comments=true \
-e asm.functions=true \
-e asm.var=true \
-e asm.cmt.right=true \
-e asm.dwarf=true \
-e asm.pseudo=false \
-e asm.describe=false \
-e bin.relocs.apply=true \
{{ BUILD_DIR }}-{{ module }}/system.elf
# =================================================================================================================== #
# Just do it
# =================================================================================================================== #
[arg("mode", pattern="c|aot|interp", help="Which WASM mode to use")]
[arg("target", pattern="fail|linux|linux-baremetal", help="Which platform to compile for")]
[doc("Perform all steps for a fail/linux/linux-bm build with aot/interp WASM")]
[group("5: just do it")]
build module="__help" target="fail" mode="aot":
#!/usr/bin/env sh
if [ "{{ module }}" = "__help" ]; then
just --usage build
exit 0
fi
just clean {{ module }}
just create-build-dir {{ module }}
just copy-auxiliary {{ module }}
if [ "{{ mode }}" = "aot" ]; then
just build-wasm-module {{ module }}
just build-wasm-aot {{ module }} {{ target }}
just build-wasm-aot-array {{ module }}
just prepare-aot-host {{ module }}
just build-wasm-host {{ module }} {{ target }}
just build-system-startup {{ module }} {{ target }}
just build-system-syscalls {{ module }} {{ target }}
just link-system {{ module }} {{ target }}
elif [ "{{ mode }}" = "interp" ]; then
just build-wasm-module {{ module }}
just build-wasm-interp-array {{ module }}
just prepare-interp-host {{ module }}
just build-wasm-host {{ module }} {{ target }}
just build-system-startup {{ module }} {{ target }}
just build-system-syscalls {{ module }} {{ target }}
just link-system {{ module }} {{ target }}
elif [ "{{ mode }}" = "c" ]; then
just build-c-module {{ module }} {{ target }}
just build-c-host {{ module }} {{ target }}
just build-system-startup {{ module }} {{ target }}
just link-c-system {{ module }} {{ target }}
else
echo "unknown mode: {{ mode }}" >&2
exit 1
fi
just build-iso {{ module }}
[doc("Run binary")]
[group("5: just do it")]
run module:
@echo "Running {{ module }}:"
@{{ BUILD_DIR }}-{{ module }}/system.elf
[arg("mode", pattern="c|aot|interp", help="Which WASM mode to use")]
[arg("target", pattern="fail|linux|linux-baremetal", help="Which platform to compile for")]
[doc("Perform all steps for a fail/linux/linux-bm build with aot/interp WASM")]
[group("5: just do it")]
build-run module="__help" target="fail" mode="aot": (build module target mode) (run module)
[doc("Send binaries to mars")]
[group("5: just do it")]
upload module:
scp -r {{ BUILD_DIR }}-{{ module }} mars:~/Documents/failnix/{{ BUILD_DIR }}-{{ module }}
[doc("Send markers to local")]
[group("5: just do it")]
download-markers:
scp mars:~/Documents/failnix/markers.csv ./markers.csv
[doc("Perform all steps for a FAIL* campaign")]
[group("5: just do it")]
inject module:
just start-db
@echo "Waiting for database..."
sleep 20
just trace {{ module }}
just import {{ module }}
just server {{ module }}
just client {{ module }}
just result {{ module }}
[doc("Copy build directory to injections/ with timestamp")]
[group("5: just do it")]
archive module suffix:
cp -rv {{ BUILD_DIR }}-{{ module }} ./injections/`date +%Y-%m-%d_%H-%M`_{{ module }}_"{{ suffix }}"