From 8fa244de7810bfb2d4c143cfd84d6a709ffdb602 Mon Sep 17 00:00:00 2001 From: Thomas Letan Date: Tue, 2 May 2023 13:02:54 +0200 Subject: [PATCH] Build: Improve Makefile rules related to kernels Co-authored-by: Valentin Chaboche --- .gitlab/ci/jobs/build/kernels.yml | 7 ++-- Makefile | 24 ++++++++++++-- kernels.mk | 54 ++++++++++++++++++++++++------- src/kernel_evm/Makefile | 24 ++++++++++---- src/kernel_sdk/Makefile | 41 +++++++++++++++-------- src/kernel_sequencer/Makefile | 13 ++++++-- 6 files changed, 124 insertions(+), 39 deletions(-) diff --git a/.gitlab/ci/jobs/build/kernels.yml b/.gitlab/ci/jobs/build/kernels.yml index 15adaddd3012..a3bea9cb5661 100644 --- a/.gitlab/ci/jobs/build/kernels.yml +++ b/.gitlab/ci/jobs/build/kernels.yml @@ -5,9 +5,12 @@ build_kernels: image: "${PROD_AWS_ECR}/rust-toolchain:v1.0.3" needs: [trigger] script: - - make -f kernels.mk build-deps - - CC=clang make -f kernels.mk build-kernels + - make -f kernels.mk build-dev-deps + - make -f kernels.mk check + - make -f kernels.mk build + - make -f kernels.mk test variables: + CC: clang CARGO_HOME: $CI_PROJECT_DIR/cargo NATIVE_TARGET: x86_64-unknown-linux-musl cache: diff --git a/Makefile b/Makefile index e1b700fed418..43c424f49d6a 100644 --- a/Makefile +++ b/Makefile @@ -483,12 +483,32 @@ coverage-clean: @-rm -Rf ${COVERAGE_OUTPUT}/*.coverage ${COVERAGE_REPORT} .PHONY: clean -clean: coverage-clean clean-old-names +clean: coverage-clean clean-old-names clean-kernels @-dune clean @-rm -f ${OCTEZ_BIN} ${UNRELEASED_OCTEZ_BIN} @-${MAKE} -C docs clean @-rm -f docs/api/tezos-{baker,endorser,accuser}-alpha.html docs/api/tezos-{admin-,}client.html docs/api/tezos-signer.html +.PHONY: build-kernels-deps +build-kernels-deps: + make -f kernels.mk build-deps + +.PHONY: build-kernels-dev-deps +build-kernels-dev-deps: + make -f kernels.mk build-dev-deps + .PHONY: build-kernels build-kernels: - make -f kernels.mk build-kernels + make -f kernels.mk build + +.PHONY: check-kernels +check-kernels: + make -f kernels.mk check + +.PHONY: test-kernels +test-kernels: + make -f kernels.mk test + +.PHONY: clean-kernels +clean-kernels: + make -f kernels.mk clean diff --git a/kernels.mk b/kernels.mk index afd9c304b581..9267c1f1d77b 100644 --- a/kernels.mk +++ b/kernels.mk @@ -1,5 +1,13 @@ -KERNELS = kernel_sdk evm_kernel.wasm kernel_sequencer +KERNELS = evm_kernel.wasm +SDK_DIR=src/kernel_sdk +EVM_DIR=src/kernel_evm +SEQUENCER_DIR=src/kernel_sequencer +.PHONY: all +all: build-dev-deps check test build + + +.PHONY: kernel_sdk kernel_sdk: @make -C src/kernel_sdk build @cp src/kernel_sdk/target/$(NATIVE_TARGET)/release/smart-rollup-installer . @@ -9,26 +17,48 @@ evm_kernel.wasm:: @cp src/kernel_evm/target/wasm32-unknown-unknown/release/evm_kernel.wasm $@ @wasm-strip $@ +.PHONY: kernel_sequencer kernel_sequencer: @make -C src/kernel_sequencer +.PHONY: build +build: ${KERNELS} kernel_sdk kernel_sequencer + +.PHONY: build-dev-deps +build-dev-deps: build-deps + @make -C ${SDK_DIR} build-dev-deps + @make -C ${EVM_DIR} build-dev-deps + @make -C ${SEQUENCER_DIR} build-dev-deps + +.PHONY: build-deps build-deps: - @make -C src/kernel_sdk build-deps - @make -C src/kernel_evm build-deps - @make -C src/kernel_sequencer build-deps + @make -C ${SDK_DIR} build-deps + @make -C ${EVM_DIR} build-deps + @make -C ${SEQUENCER_DIR} build-deps -test-kernels: - @make -C src/kernel_sdk test - @make -C src/kernel_evm_mockup tests - @make -C src/kernel_sequencer tests +.PHONY: test +test: + @make -C ${SDK_DIR} test + @make -C ${EVM_DIR} test + @make -C ${SEQUENCER_DIR} test -.PHONY: build-kernels -build-kernels: ${KERNELS} +.PHONY: check +check: + @make -C ${SDK_DIR} check + @make -C ${EVM_DIR} check + @make -C ${SEQUENCER_DIR} check .PHONY: publish-sdk-deps publish-sdk-deps: build-deps - @make -C src/kernel_sdk publish-deps + @make -C ${SDK_DIR} publish-deps .PHONY: publish-sdk publish-sdk: - @make -C src/kernel_sdk publish + @make -C ${SDK_DIR} publish + +.PHONY: clean +clean: + @rm -f ${KERNELS} + @make -C ${SDK_DIR} clean + @make -C ${EVM_DIR} clean + @make -C ${SEQUENCER_DIR} clean diff --git a/src/kernel_evm/Makefile b/src/kernel_evm/Makefile index 6d8e8586448e..b3e4541fc4c6 100644 --- a/src/kernel_evm/Makefile +++ b/src/kernel_evm/Makefile @@ -3,20 +3,30 @@ # # SPDX-License-Identifier: MIT -CC=$(which clang) - .PHONY: all -all: build test +all: build test check +.PHONY: build build: - @cargo fmt --check - @cargo clippy --all-targets -- --deny warnings @cargo build --target wasm32-unknown-unknown --release +.PHONY: build-deps build-deps: @rustup target add wasm32-unknown-unknown + +.PHONY: build-dev-deps +build-dev-deps: build-deps @rustup component add rustfmt clippy - @cargo install cargo-make +.PHONY: test test: - @cargo make test + @cargo test + +.PHONY: check +check: + @cargo fmt --check + @cargo clippy --all-targets -- --deny warnings + +.PHONY: clean +clean: + @cargo clean diff --git a/src/kernel_sdk/Makefile b/src/kernel_sdk/Makefile index 2c2d3b33e93c..b51d0274cd16 100644 --- a/src/kernel_sdk/Makefile +++ b/src/kernel_sdk/Makefile @@ -12,6 +12,7 @@ CC=clang +.PHONY: all all: build test doc NATIVE_TARGET ?= @@ -21,7 +22,8 @@ endif SDK_VERSION := "0.1.0" -check: installer-template +.PHONY: check +check: installer-template publish-check @cargo fmt --check @cargo clippy --all-targets --all-features -- --deny warnings @cargo check --no-default-features @@ -31,7 +33,8 @@ check: installer-template # their own dependencies correctly - when building as # a workspace, features enabled by one crate are enabled # on all. -publish-check: check installer-template +.PHONY: publish-check +publish-check: installer-template @cargo check -p tezos-smart-rollup-core @cargo check -p tezos-smart-rollup-host @cargo check -p tezos-smart-rollup-debug @@ -43,10 +46,11 @@ publish-check: check installer-template @cargo check -p tezos-smart-rollup-installer @cargo check -p tezos-smart-rollup -build: check installer-template publish-check +.PHONY: build +build: installer-template @cargo build -p tezos-smart-rollup-installer \ - --release \ - $(NATIVE_OPT) + --release \ + $(NATIVE_OPT) .PHONY: sdk-readme sdk-readme: @@ -55,37 +59,46 @@ sdk-readme: .PHONY: installer-template installer-template: sdk-readme @cargo build -p installer-kernel \ - --target wasm32-unknown-unknown \ - --release \ - --no-default-features \ - --features entrypoint + --target wasm32-unknown-unknown \ + --release \ + --no-default-features \ + --features entrypoint @cp target/wasm32-unknown-unknown/release/installer_kernel.wasm \ - installer-client/installer.wasm + installer-client/installer.wasm @wasm-strip installer-client/installer.wasm +.PHONY: test test: @cargo test --all-features +.PHONY: doc doc: sdk-readme @cargo doc --no-deps --all-features +.PHONY: build-deps build-deps: @rustup target add wasm32-unknown-unknown $(NATIVE_TARGET) + +.PHONY: build-dev-deps +build-dev-deps: build-deps @rustup component add rustfmt clippy +.PHONY: clean clean: @cargo clean @rm -rf installer-client/installer.wasm @rm -rf sdk/README.md +.PHONY: publish-deps publish-deps: build-deps @cargo install cargo-publish-workspace-v2 --version "0.2.1" # --allow-dirty required to include the built installer.wasm # and README copied to sdk/, which are not checked in +.PHONY: publish publish: installer-template sdk-readme @cargo publish-workspace -p 'tezos-smart-rollup-' \ - --exclude installer-kernel \ - --target-version $(SDK_VERSION) \ - --aligned-versions-only \ - -- --allow-dirty + --exclude installer-kernel \ + --target-version $(SDK_VERSION) \ + --aligned-versions-only \ + -- --allow-dirty diff --git a/src/kernel_sequencer/Makefile b/src/kernel_sequencer/Makefile index 43298fa22368..f62cf93fb37a 100644 --- a/src/kernel_sequencer/Makefile +++ b/src/kernel_sequencer/Makefile @@ -3,15 +3,24 @@ # SPDX-License-Identifier: MIT .PHONY: all -all: build test +all: build check test +.PHONY: build build: + @cargo build --release + +.PHONY: check +check: @cargo fmt --check @cargo clippy --all-targets -- --deny warnings - @cargo build --release +.PHONY: build-deps build-deps: + +.PHONY: build-dev-deps +build-dev-deps: @rustup component add rustfmt clippy +.PHONY: test test: @cargo test -- GitLab