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:
Ștefan Talpalaru 2019-01-09 17:13:36 +01:00 committed by zah
parent 262eefac26
commit e267254b4c
1 changed files with 16 additions and 16 deletions

View File

@ -7,7 +7,7 @@ GIT_STATUS := git status
#- duplicated in "env.sh" for the env var with the same name
NIMBLE_DIR := vendor/.nimble
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
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
@ -21,13 +21,13 @@ BUILD_NIM := cd $(NIM_DIR) && \
sh build_all.sh && \
$(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
#- 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
# order to avoid duplicate dirs in ".nimble/pgks/"
#- dependencies not listed here are handled entirely by Nimble with "install -y --depsOnly"
REPOS := $(addprefix $(REPOS_DIR)/, \
GITHUB_REPOS := \
status-im/nim-chronicles \
cheatfate/nimcrypto \
status-im/nim-ranges \
@ -53,8 +53,9 @@ REPOS := $(addprefix $(REPOS_DIR)/, \
status-im/nim-eth-bloom \
status-im/nim-bncurve \
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
@ -89,7 +90,8 @@ $(NIMBLE_DIR): | $(REPOS) $(NIM_DIR)
#- 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)
$(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)
#- clones and builds the Nim compiler and Nimble
@ -103,7 +105,7 @@ test: | build deps
# usual cleaning
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
mrproper: clean
@ -111,7 +113,7 @@ mrproper: clean
# for when you have write access to a repo and you want to use SSH keys
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)
build-nim: | $(NIM_DIR)
@ -141,17 +143,15 @@ status: | $(REPOS)
ntags:
ntags -R .
beacon_node: | build deps
$(ENV_SCRIPT) nim c -o:build/beacon_node vendor/repos/status-im/nim-beacon-chain/beacon_chain/beacon_node.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
#- actually binaries, but have them as phony targets to force rebuilds
beacon_node validator_keygen: | build deps
$(ENV_SCRIPT) nim c -o:build/$@ $(REPOS_DIR)/nim-beacon-chain/beacon_chain/$@.nim
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
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
#- 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/csources' \
--exclude=nimbus/genesis_alloc.nim \
--exclude=$(REPOS_DIR)/status-im/nim-bncurve/tests/tvectors.nim \
--exclude=$(REPOS_DIR)/nim-bncurve/tests/tvectors.nim \
.
############################