Makefile modifications
- dependency repos moved to "vendor/<package name>"; delete "vendor/repos" by hand after making sure it contains no unpushed work - fixed the "validator_keygen" build and merged it with that of "beacon_node"
This commit is contained in:
parent
262eefac26
commit
e267254b4c
32
Makefile
32
Makefile
|
@ -7,7 +7,7 @@ GIT_STATUS := git status
|
||||||
#- duplicated in "env.sh" for the env var with the same name
|
#- duplicated in "env.sh" for the env var with the same name
|
||||||
NIMBLE_DIR := vendor/.nimble
|
NIMBLE_DIR := vendor/.nimble
|
||||||
NIMBLE := nimble -y
|
NIMBLE := nimble -y
|
||||||
REPOS_DIR := vendor/repos
|
REPOS_DIR := vendor
|
||||||
# we want a "recursively expanded" (delayed interpolation) variable here, so we can set CMD in rule recipes
|
# we want a "recursively expanded" (delayed interpolation) variable here, so we can set CMD in rule recipes
|
||||||
RUN_CMD_IN_ALL_REPOS = for D in . vendor/Nim $(REPOS); do echo -e "\n\e[32m$${D}:\e[39m"; cd "$$D"; $(CMD); cd - >/dev/null; done
|
RUN_CMD_IN_ALL_REPOS = for D in . vendor/Nim $(REPOS); do echo -e "\n\e[32m$${D}:\e[39m"; cd "$$D"; $(CMD); cd - >/dev/null; done
|
||||||
# absolute path, since it will be run at various subdirectory depths
|
# absolute path, since it will be run at various subdirectory depths
|
||||||
|
@ -21,13 +21,13 @@ BUILD_NIM := cd $(NIM_DIR) && \
|
||||||
sh build_all.sh && \
|
sh build_all.sh && \
|
||||||
$(ENV_SCRIPT) nim c -d:release --noNimblePath -p:compiler --nilseqs:on -o:bin/nimble dist/nimble/src/nimble.nim
|
$(ENV_SCRIPT) nim c -d:release --noNimblePath -p:compiler --nilseqs:on -o:bin/nimble dist/nimble/src/nimble.nim
|
||||||
|
|
||||||
#- Git repositories for those dependencies that a Nimbus developer might want to
|
#- GitHub repositories for those dependencies that a Nimbus developer might want to
|
||||||
# modify and test locally
|
# modify and test locally
|
||||||
#- their order ensures that `nimble develop` will run in a certain package's
|
#- their order ensures that `nimble develop` will run in a certain package's
|
||||||
# repo before Nimble tries to install it as a (direct or indirect) dependency, in
|
# repo before Nimble tries to install it as a (direct or indirect) dependency, in
|
||||||
# order to avoid duplicate dirs in ".nimble/pgks/"
|
# order to avoid duplicate dirs in ".nimble/pgks/"
|
||||||
#- dependencies not listed here are handled entirely by Nimble with "install -y --depsOnly"
|
#- dependencies not listed here are handled entirely by Nimble with "install -y --depsOnly"
|
||||||
REPOS := $(addprefix $(REPOS_DIR)/, \
|
GITHUB_REPOS := \
|
||||||
status-im/nim-chronicles \
|
status-im/nim-chronicles \
|
||||||
cheatfate/nimcrypto \
|
cheatfate/nimcrypto \
|
||||||
status-im/nim-ranges \
|
status-im/nim-ranges \
|
||||||
|
@ -53,8 +53,9 @@ REPOS := $(addprefix $(REPOS_DIR)/, \
|
||||||
status-im/nim-eth-bloom \
|
status-im/nim-eth-bloom \
|
||||||
status-im/nim-bncurve \
|
status-im/nim-bncurve \
|
||||||
status-im/nim-confutils \
|
status-im/nim-confutils \
|
||||||
status-im/nim-beacon-chain \
|
status-im/nim-beacon-chain
|
||||||
)
|
# "foo/bar" -> "$(REPOS_DIR)/bar"
|
||||||
|
REPOS := $(addprefix $(REPOS_DIR)/, $(foreach github_repo,$(GITHUB_REPOS),$(word 2,$(subst /, ,$(github_repo)))))
|
||||||
|
|
||||||
.PHONY: all deps github-ssh build-nim update status ntags ctags nimbus test clean mrproper fetch-dlls beacon_node validator_keygen clean_eth2_network_simulation_files eth2_network_simulation
|
.PHONY: all deps github-ssh build-nim update status ntags ctags nimbus test clean mrproper fetch-dlls beacon_node validator_keygen clean_eth2_network_simulation_files eth2_network_simulation
|
||||||
|
|
||||||
|
@ -89,7 +90,8 @@ $(NIMBLE_DIR): | $(REPOS) $(NIM_DIR)
|
||||||
#- can run in parallel with `make -jN`
|
#- can run in parallel with `make -jN`
|
||||||
#- deletes the ".nimble" dir to force Nimble's package db regeneration (useful for newly added repositories to REPOS)
|
#- deletes the ".nimble" dir to force Nimble's package db regeneration (useful for newly added repositories to REPOS)
|
||||||
$(REPOS):
|
$(REPOS):
|
||||||
$(GIT_CLONE) https://github.com/$(subst $(REPOS_DIR)/,,$@) $@ && \
|
$(eval PROJ_NAME := $(subst $(REPOS_DIR)/,,$@))
|
||||||
|
$(GIT_CLONE) https://github.com/$(filter %/$(PROJ_NAME),$(GITHUB_REPOS)) $@ && \
|
||||||
rm -rf $(NIMBLE_DIR)
|
rm -rf $(NIMBLE_DIR)
|
||||||
|
|
||||||
#- clones and builds the Nim compiler and Nimble
|
#- clones and builds the Nim compiler and Nimble
|
||||||
|
@ -103,7 +105,7 @@ test: | build deps
|
||||||
|
|
||||||
# usual cleaning
|
# usual cleaning
|
||||||
clean:
|
clean:
|
||||||
rm -rf build/{nimbus,all_tests,*.exe} $(NIMBLE_DIR)
|
rm -rf build/{nimbus,all_tests,beacon_node,validator_keygen,*.exe} $(NIMBLE_DIR)
|
||||||
|
|
||||||
# dangerous cleaning, because you may have not-yet-pushed branches and commits in those vendor repos you're about to delete
|
# dangerous cleaning, because you may have not-yet-pushed branches and commits in those vendor repos you're about to delete
|
||||||
mrproper: clean
|
mrproper: clean
|
||||||
|
@ -111,7 +113,7 @@ mrproper: clean
|
||||||
|
|
||||||
# for when you have write access to a repo and you want to use SSH keys
|
# for when you have write access to a repo and you want to use SSH keys
|
||||||
github-ssh:
|
github-ssh:
|
||||||
sed -i 's#https://github.com/#git@github.com:#' .git/config $(NIM_DIR)/.git/config $(REPOS_DIR)/*/*/.git/config
|
sed -i 's#https://github.com/#git@github.com:#' .git/config $(NIM_DIR)/.git/config $(REPOS_DIR)/*/.git/config
|
||||||
|
|
||||||
#- re-builds the Nim compiler (not usually needed, because `make update` does it when necessary)
|
#- re-builds the Nim compiler (not usually needed, because `make update` does it when necessary)
|
||||||
build-nim: | $(NIM_DIR)
|
build-nim: | $(NIM_DIR)
|
||||||
|
@ -141,17 +143,15 @@ status: | $(REPOS)
|
||||||
ntags:
|
ntags:
|
||||||
ntags -R .
|
ntags -R .
|
||||||
|
|
||||||
beacon_node: | build deps
|
#- actually binaries, but have them as phony targets to force rebuilds
|
||||||
$(ENV_SCRIPT) nim c -o:build/beacon_node vendor/repos/status-im/nim-beacon-chain/beacon_chain/beacon_node.nim
|
beacon_node validator_keygen: | build deps
|
||||||
|
$(ENV_SCRIPT) nim c -o:build/$@ $(REPOS_DIR)/nim-beacon-chain/beacon_chain/$@.nim
|
||||||
validator_keygen: | build deps
|
|
||||||
$(ENV_SCRIPT) nim c -o:build/beacon_node vendor/repos/status-im/nim-beacon-chain/beacon_chain/validator_keygen.nim
|
|
||||||
|
|
||||||
clean_eth2_network_simulation_files:
|
clean_eth2_network_simulation_files:
|
||||||
rm -f vendor/repos/status-im/nim-beacon-chain/tests/simulation/*.json
|
rm -f $(REPOS_DIR)/nim-beacon-chain/tests/simulation/*.json
|
||||||
|
|
||||||
eth2_network_simulation: | beacon_node validator_keygen clean_eth2_network_simulation_files
|
eth2_network_simulation: | beacon_node validator_keygen clean_eth2_network_simulation_files
|
||||||
SKIP_BUILDS=1 $(ENV_SCRIPT) vendor/repos/status-im/nim-beacon-chain/tests/simulation/start.sh
|
SKIP_BUILDS=1 $(ENV_SCRIPT) $(REPOS_DIR)/nim-beacon-chain/tests/simulation/start.sh
|
||||||
|
|
||||||
#- a few files need to be excluded because they trigger an infinite loop in https://github.com/universal-ctags/ctags
|
#- a few files need to be excluded because they trigger an infinite loop in https://github.com/universal-ctags/ctags
|
||||||
#- limiting it to Nim files, because there are a lot of C files we don't care about
|
#- limiting it to Nim files, because there are a lot of C files we don't care about
|
||||||
|
@ -175,7 +175,7 @@ ctags:
|
||||||
--exclude='*/Nim/tests' \
|
--exclude='*/Nim/tests' \
|
||||||
--exclude='*/Nim/csources' \
|
--exclude='*/Nim/csources' \
|
||||||
--exclude=nimbus/genesis_alloc.nim \
|
--exclude=nimbus/genesis_alloc.nim \
|
||||||
--exclude=$(REPOS_DIR)/status-im/nim-bncurve/tests/tvectors.nim \
|
--exclude=$(REPOS_DIR)/nim-bncurve/tests/tvectors.nim \
|
||||||
.
|
.
|
||||||
|
|
||||||
############################
|
############################
|
||||||
|
|
Loading…
Reference in New Issue