diff --git a/.dockerignore b/.dockerignore deleted file mode 100644 index bc4f4cc..0000000 --- a/.dockerignore +++ /dev/null @@ -1,12 +0,0 @@ -Dockerfile -cache -.github -.gitignore -Makefile -out -README.md -lib -src -test -foundry.toml -patches \ No newline at end of file diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 93ac298..3cd759c 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -21,18 +21,13 @@ jobs: with: submodules: recursive + - name: Install Foundry + uses: foundry-rs/foundry-toolchain@v1 + - name: "EOF run Forge build" id: build-eof - run: make build-eof + run: forge build - name: "EOF run Forge test" id: test-eof - run: make test-eof - - - name: "Legacy run Forge build" - id: build-legacy - run: make build-legacy - - - name: "Legacy run Forge test" - id: test-legacy - run: make test-legacy + run: forge test diff --git a/.gitmodules b/.gitmodules index 956a1b8..888d42d 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,11 +1,3 @@ [submodule "lib/forge-std"] path = lib/forge-std url = https://github.com/foundry-rs/forge-std -[submodule "patches/solidity-legacy"] - path = patches/solidity-legacy - url = https://github.com/ipsilon/solidity.git - branch = eof-functions-rebased -[submodule "patches/solidity-eof"] - path = patches/solidity-eof - url = https://github.com/fgimenez/solidity.git - branch = eof-functions-rebased diff --git a/Dockerfile b/Dockerfile index eb525c4..8d52c3b 100644 --- a/Dockerfile +++ b/Dockerfile @@ -10,14 +10,8 @@ RUN apt-get update && apt-get install -y --no-install-recommends \ && \ update-ca-certificates -COPY .git /app/.git -COPY .gitmodules /app - -WORKDIR /app - -RUN git submodule init && git submodule update --recursive - -WORKDIR /app/patches/solidity-eof +WORKDIR /app/solidity +RUN git clone https://github.com/ipsilon/solidity . && git checkout c49b88b RUN mkdir build && \ cd build && \ @@ -25,33 +19,5 @@ RUN mkdir build && \ -DCMAKE_CXX_FLAGS="-Wno-error=conversion" && \ make solc -j$(nproc) -WORKDIR /app/patches/solidity-legacy - -RUN mkdir build && \ - cd build && \ - cmake .. -DCMAKE_BUILD_TYPE=Release \ - -DCMAKE_CXX_FLAGS="-Wno-error=conversion" && \ - make solc -j$(nproc) - -FROM ubuntu:jammy-20240212 - -# Copy the compiled solc binary to a standard location -COPY --from=solc-builder /app/patches/solidity-legacy/build/solc/solc /usr/local/bin/solc-legacy -COPY --from=solc-builder /app/patches/solidity-eof/build/solc/solc /usr/local/bin/solc-eof -RUN chmod +x /usr/local/bin/solc-legacy && chmod +x /usr/local/bin/solc-eof - -RUN apt-get update && apt-get install -y --no-install-recommends \ - ca-certificates \ - curl \ - git && \ - curl -L https://foundry.paradigm.xyz | bash && \ - ~/.foundry/bin/foundryup && \ - cp ~/.foundry/bin/* /usr/local/bin -ENV PATH="${HOME}/.foundry/bin:${PATH}" - -COPY entrypoint.sh /entrypoint.sh -RUN chmod +x /entrypoint.sh - -EXPOSE 8545 - -ENTRYPOINT ["/entrypoint.sh"] +WORKDIR /app/root +ENTRYPOINT ["/app/solidity/build/solc/solc"] diff --git a/Makefile b/Makefile deleted file mode 100644 index eb7cf23..0000000 --- a/Makefile +++ /dev/null @@ -1,42 +0,0 @@ -#IMAGE:=forge-eof -IMAGE:=ghcr.io/fgimenez/forge-eof@sha256:c146ad3da90dab17630685c31b0b2582a164915c4ad68c3f3ef46a2423f3ea69 -BUILD_COMMAND:="forge build --force" -TEST_COMMAND:="forge test --gas-report --force -vvvv" - -.PHONY: build-eof -build-eof: - docker run --rm \ - -v $$(pwd):/app/foundry \ - -u $$(id -u):$$(id -g) \ - $(IMAGE) \ - --enable-eof \ - --foundry-directory /app/foundry \ - --foundry-command $(BUILD_COMMAND) - -.PHONY: test-eof -test-eof: - docker run --rm \ - -v $$(pwd):/app/foundry \ - -u $$(id -u):$$(id -g) \ - $(IMAGE) \ - --enable-eof \ - --foundry-directory /app/foundry \ - --foundry-command $(TEST_COMMAND) - -.PHONY: build-legacy -build-legacy: - docker run --rm \ - -v $$(pwd):/app/foundry \ - -u $$(id -u):$$(id -g) \ - $(IMAGE) \ - --foundry-directory /app/foundry \ - --foundry-command $(BUILD_COMMAND) - -.PHONY: test-legacy -test-legacy: - docker run --rm \ - -v $$(pwd):/app/foundry \ - -u $$(id -u):$$(id -g) \ - $(IMAGE) \ - --foundry-directory /app/foundry \ - --foundry-command $(TEST_COMMAND) diff --git a/entrypoint.sh b/entrypoint.sh deleted file mode 100644 index 422b8d2..0000000 --- a/entrypoint.sh +++ /dev/null @@ -1,39 +0,0 @@ -#!/bin/bash - -main() { - local FOUNDRY_COMMAND="" - local FOUNDRY_DIRECTORY="" - local FOUNDRY_SCRIPT="" - local SOLC_PATH="--use /usr/local/bin/solc-legacy" - - # Parse named arguments - while [[ "$#" -gt 0 ]]; do - case $1 in - --foundry-command) FOUNDRY_COMMAND="$2"; shift ;; - --foundry-directory) FOUNDRY_DIRECTORY="--root $2"; shift ;; - --foundry-script) FOUNDRY_SCRIPT="$2"; shift ;; - --enable-eof) SOLC_PATH="--use /usr/local/bin/solc-eof";; - *) echo "Unknown parameter passed: $1"; exit 1 ;; - esac - shift - done - - if [ "$FOUNDRY_COMMAND" = "script" ] && [ -z "$FOUNDRY_SCRIPT" ]; then - echo "Error: 'foundry-script' is required when 'foundry-command' is 'script'" - exit 1 - fi - - if [ "$FOUNDRY_COMMAND" = "script" ]; then - exec forge script $FOUNDRY_SCRIPT $SOLC_PATH $FOUNDRY_DIRECTORY --fork-url http://localhost:8545 --broadcast -vvvv - else - if [[ "$FOUNDRY_COMMAND" =~ ^forge ]]; then - exec $FOUNDRY_COMMAND $SOLC_PATH $FOUNDRY_DIRECTORY - elif [[ "$FOUNDRY_COMMAND" =~ ^anvil ]]; then - exec $FOUNDRY_COMMAND --host 0.0.0.0 --hardfork prague - fi - echo "Error: 'foundry-command' only supports 'forge' or 'anvil' binaries" - exit 1 - fi -} - -main "${@}" diff --git a/eof-solc b/eof-solc new file mode 100755 index 0000000..5e3cef0 --- /dev/null +++ b/eof-solc @@ -0,0 +1,3 @@ +#!/usr/bin/env bash + +docker run -i -v $(pwd):/app/root eof-solc "$@" \ No newline at end of file diff --git a/foundry.toml b/foundry.toml index dd561a7..eda5e9f 100644 --- a/foundry.toml +++ b/foundry.toml @@ -2,11 +2,8 @@ src = "src" out = "out" libs = ["lib"] -evm_version = "Cancun" -optimizer = true -via_ir = true -prague = true -cbor_metadata = false -bytecode_hash = "none" -# See more config options https://github.com/foundry-rs/foundry/blob/master/crates/config/README.md#all-options +solc = "./eof-solc" +via_ir = true +evm_version = "prague" +eof_version = 1 diff --git a/patches/solidity-eof b/patches/solidity-eof deleted file mode 160000 index 0726023..0000000 --- a/patches/solidity-eof +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 072602357ddff18ec5c5d3315498886e05d9fc46 diff --git a/patches/solidity-legacy b/patches/solidity-legacy deleted file mode 160000 index 9214227..0000000 --- a/patches/solidity-legacy +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 92142275745f532b6b8ce6196694c5873841d88c