diff --git a/justfile b/justfile index eacb1cc..85349aa 100644 --- a/justfile +++ b/justfile @@ -1,3 +1,6 @@ +update-submodules: + git submodule update --recursive --init + build-consensus: just -f ./cartesi-rollups/contracts/justfile build clean-consensus-bindings: @@ -32,5 +35,13 @@ build: build-smart-contracts build-prt bind build-rust-workspace clean-emulator: make -C machine/emulator clean depclean distclean + +build-docker-image TAG="dave:dev": + docker build -f test/Dockerfile -t {{TAG}} . + +run-dockered +CMD: build-docker-image + docker run -it dave:dev {{CMD}} + + hello: echo $(echo "Hello") diff --git a/prt/tests/rollups/Dockerfile b/prt/tests/rollups/Dockerfile deleted file mode 100644 index b8a4bde..0000000 --- a/prt/tests/rollups/Dockerfile +++ /dev/null @@ -1,66 +0,0 @@ -FROM rust:1.81.0-bookworm AS chef - -ENV CARGO_REGISTRIES_CARTESI_INDEX=https://github.com/cartesi/crates-index -RUN rustup component add rustfmt -RUN cargo install cargo-chef -RUN apt-get update && \ - apt-get install -y clang libslirp0 - -FROM chef AS planner -COPY ./machine/rust-bindings /app/machine/rust-bindings -COPY ./common-rs /app/common-rs -COPY ./prt/client-rs /app/prt/client-rs -COPY ./prt/contract-bindings /app/prt/contract-bindings -COPY ./cartesi-rollups/contract-bindings /app/cartesi-rollups/contract-bindings -COPY ./cartesi-rollups/node /app/cartesi-rollups/node - -WORKDIR /app/cartesi-rollups/node -RUN cargo chef prepare --recipe-path recipe.json - -FROM chef AS builder -COPY ./machine /app/machine -COPY ./common-rs /app/common-rs -COPY ./prt/client-rs /app/prt/client-rs -COPY ./prt/contract-bindings /app/prt/contract-bindings -COPY ./cartesi-rollups/contract-bindings /app/cartesi-rollups/contract-bindings -COPY ./.git /app/.git -COPY --from=planner /app/cartesi-rollups/node/recipe.json /app/cartesi-rollups/node/recipe.json - -# Build dependencies - this is the caching Docker layer! -WORKDIR /app/cartesi-rollups/node -RUN cargo chef cook --release --recipe-path recipe.json - -# Build application -COPY --from=ethereum/solc:0.8.27 /usr/bin/solc /usr/bin/solc -RUN chmod u+x /usr/bin/solc - -COPY ./cartesi-rollups /app/cartesi-rollups - -WORKDIR /app/cartesi-rollups/node -RUN cargo build --release --bin dave-rollups - -FROM cartesi/machine-emulator:0.18.1 - -USER root -RUN apt-get update && \ - apt-get install -y procps curl xxd clang sqlite3 -ENV FOUNDRY_NIGHTLY nightly-805d7cee81e78e9163b8ce3d86a0c3beb39772d4 -RUN curl -sSL https://github.com/foundry-rs/foundry/releases/download/${FOUNDRY_NIGHTLY}/foundry_nightly_linux_$(dpkg --print-architecture).tar.gz | \ - tar -zx -C /usr/local/bin - -# prepare echo machine -WORKDIR /root/program/ -COPY ./prt/tests/rollups/program/echo/echo-program.tar.gz /root/program/ -RUN tar -zx -f /root/program/echo-program.tar.gz - -COPY ./machine/step /root/machine/step -COPY ./prt /root/prt -COPY ./cartesi-rollups /root/cartesi-rollups -COPY --from=builder /app/cartesi-rollups/node/target/release/dave-rollups /root/prt/tests/rollups/dave-rollups - -WORKDIR /root/cartesi-rollups/contracts -RUN forge --version -RUN forge build - -WORKDIR /root/prt/tests/rollups -ENTRYPOINT ["./prt_rollups.lua"] diff --git a/prt/tests/rollups/Makefile b/prt/tests/rollups/Makefile deleted file mode 100644 index 7cc76b6..0000000 --- a/prt/tests/rollups/Makefile +++ /dev/null @@ -1,25 +0,0 @@ -ECHO_MACHINE_PATH := "/root/program/echo-program" - -help: - @echo ' build-echo - build echo machine image' - @echo ' create-image - create `prt-rollups:test` docker image' - @echo ' test-echo - run PRT rollups echo test' - @echo ' read-honest-log - read logs from PRT Rollups node, run in separate terminal after `test-echo`' - -build-echo: - $(MAKE) -C program/echo build-echo - -create-image: build-echo - @docker build -t cartesi/prt-rollups:test -f Dockerfile ../../../ - -test-echo: create-image - @docker run --rm --name prt-rollups-test-echo \ - --env MACHINE_PATH=$(ECHO_MACHINE_PATH) \ - cartesi/prt-rollups:test - -read-honest-log: - @docker exec prt-rollups-test-echo tail -f dave.log - - - -.PHONY: help build-echo create-image test-echo diff --git a/prt/tests/rollups/dave/node.lua b/prt/tests/rollups/dave/node.lua index 6b859c9..fbf70ec 100644 --- a/prt/tests/rollups/dave/node.lua +++ b/prt/tests/rollups/dave/node.lua @@ -5,8 +5,9 @@ local function start_dave_node(machine_path, db_path, sleep_duration, verbosity, [[sh -c "echo $$ ; exec env MACHINE_PATH='%s' STATE_DIR='%s' \ SLEEP_DURATION=%d RUST_BACKTRACE='%s' \ RUST_LOG='none',cartesi_prt_core='%s',rollups_compute_runner='%s',rollups_epoch_manager='%s' \ - ../../target/debug/dave-rollups > dave.log 2>&1"]], - machine_path, db_path, sleep_duration, trace_level, verbosity, verbosity, verbosity) + ../../../target/debug/dave-rollups > dave.log 2>&1"]], + machine_path, db_path, sleep_duration, trace_level, verbosity, verbosity, verbosity + ) local reader = io.popen(cmd) assert(reader, "`popen` returned nil reader") diff --git a/prt/tests/rollups/justfile b/prt/tests/rollups/justfile index c4fe986..7d4152f 100644 --- a/prt/tests/rollups/justfile +++ b/prt/tests/rollups/justfile @@ -1,8 +1,11 @@ -# run PRT rollups echo test -test-echo: +# run PRT rollups test +test MACH_PATH: rm -rf _state MACHINE_PATH="../../../test/programs/echo" lua prt_rollups.lua +# run PRT rollups echo test +test-echo: (test "../../../test/programs/echo") + # read logs from PRT Rollups node, run in separate terminal after `test-echo` read-node-logs: tail -f dave.log diff --git a/test/Dockerfile b/test/Dockerfile index 5b27a9d..7c0ca60 100644 --- a/test/Dockerfile +++ b/test/Dockerfile @@ -32,7 +32,7 @@ RUN \ liblua5.4-dev \ lua5.4 \ libclang-dev \ - xxd jq; \ + xxd jq sqlite3; \ rm -rf /var/cache/apt; # Install cartesi machine @@ -108,4 +108,7 @@ RUN \ --mount=type=cache,target=prt/contracts/out,sharing=locked \ --mount=type=cache,target=prt/contracts/cache,sharing=locked \ RUSTFLAGS="-lslirp" \ - just build-rust-workspace --features external_cartesi + just build-rust-workspace --features external_cartesi; \ + cp target/debug/dave-rollups . + +RUN mkdir -p target/debug && mv dave-rollups target/debug/