From 73e9199ebfbf7262c8d7d3f0e5d96cf143e9eb41 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C8=98tefan=20Talpalaru?= Date: Sat, 18 Apr 2020 14:56:40 +0200 Subject: [PATCH] new initial submodule update strategy (#494) * new initial submodule update strategy * Azure: increase timeout * Makefile: change comment [skip ci] --- .appveyor.yml | 1 - .gitignore | 4 --- Makefile | 50 ++++++++++++++++++++++---------------- README.md | 15 +++++------- azure-pipelines.yml | 4 +-- vendor/nim-libbacktrace | 2 +- vendor/nimbus-build-system | 2 +- 7 files changed, 39 insertions(+), 39 deletions(-) diff --git a/.appveyor.yml b/.appveyor.yml index b6905a1f9..bf0cbff08 100644 --- a/.appveyor.yml +++ b/.appveyor.yml @@ -26,7 +26,6 @@ init: - ps: IF ("$env:APPVEYOR_REPO_BRANCH" -ne "master") { $env:APPVEYOR_CACHE_SKIP_SAVE = "true" } install: - - git submodule update --init --recursive # use the newest versions documented here: https://www.appveyor.com/docs/windows-images-software/#mingw-msys-cygwin - IF "%PLATFORM%" == "x86" SET PATH=C:\mingw-w64\i686-6.3.0-posix-dwarf-rt_v5-rev1\mingw32\bin;%PATH% - IF "%PLATFORM%" == "x64" SET PATH=C:\mingw-w64\x86_64-8.1.0-posix-seh-rt_v6-rev0\mingw64\bin;%PATH% diff --git a/.gitignore b/.gitignore index 263f358b7..c145892c1 100644 --- a/.gitignore +++ b/.gitignore @@ -6,10 +6,6 @@ # Nimble packages /vendor/.nimble -# Go packages -/vendor/go -!/vendor/go/src/github.com/libp2p/go-libp2p-daemon - # ntags/ctags output /tags diff --git a/Makefile b/Makefile index 24f8b36e6..bf4e79c0d 100644 --- a/Makefile +++ b/Makefile @@ -1,16 +1,16 @@ -# Copyright (c) 2018-2019 Status Research & Development GmbH. Licensed under +# Copyright (c) 2018-2020 Status Research & Development GmbH. Licensed under # either of: # - Apache License, version 2.0 # - MIT license # at your option. This file may not be copied, modified, or distributed except # according to those terms. -SHELL := bash # the shell used internally by "make" +SHELL := bash # the shell used internally by Make # used inside the included makefiles BUILD_SYSTEM_DIR := vendor/nimbus-build-system -# we don't want an error here, so we can handle things later, in the build-system-checks target +# we don't want an error here, so we can handle things later, in the ".DEFAULT" target -include $(BUILD_SYSTEM_DIR)/makefiles/variables.mk # debugging tools + testing tools @@ -30,17 +30,9 @@ TOOLS_DIRS := \ # comma-separated values for the "clean" target TOOLS_CSV := $(subst $(SPACE),$(COMMA),$(TOOLS)) -# "--define:release" implies "--stacktrace:off" and it cannot be added to config.nims -ifeq ($(USE_LIBBACKTRACE), 0) -NIM_PARAMS := $(NIM_PARAMS) -d:debug -d:disable_libbacktrace -else -NIM_PARAMS := $(NIM_PARAMS) -d:release -endif - .PHONY: \ all \ $(TOOLS) \ - build-system-checks \ deps \ update \ nimbus \ @@ -53,20 +45,33 @@ endif wrappers-static \ libbacktrace +ifeq ($(NIM_PARAMS),) +# "variables.mk" was not included, so we update the submodules. +GIT_SUBMODULE_UPDATE := git submodule update --init --recursive +.DEFAULT: + +@ echo -e "Git submodules not found. Running '$(GIT_SUBMODULE_UPDATE)'.\n"; \ + $(GIT_SUBMODULE_UPDATE); \ + echo +# Now that the included *.mk files appeared, and are newer than this file, Make will restart itself: +# https://www.gnu.org/software/make/manual/make.html#Remaking-Makefiles +# +# After restarting, it will execute its original goal, so we don't have to start a child Make here +# with "$(MAKE) $(MAKECMDGOALS)". Isn't hidden control flow great? + +else # "variables.mk" was included. Business as usual until the end of this file. + # default target, because it's the first one that doesn't start with '.' -all: build-system-checks $(TOOLS) nimbus +all: | $(TOOLS) nimbus # must be included after the default target -include $(BUILD_SYSTEM_DIR)/makefiles/targets.mk -GIT_SUBMODULE_UPDATE := git submodule update --init --recursive -build-system-checks: - @[[ -e "$(BUILD_SYSTEM_DIR)/makefiles" ]] || { \ - echo -e "'$(BUILD_SYSTEM_DIR)/makefiles' not found. Running '$(GIT_SUBMODULE_UPDATE)'.\n"; \ - $(GIT_SUBMODULE_UPDATE); \ - echo -e "\nYou can now run '$(MAKE)' again."; \ - exit 1; \ - } +# "-d:release" implies "--stacktrace:off" and it cannot be added to config.nims +ifeq ($(USE_LIBBACKTRACE), 0) +NIM_PARAMS := $(NIM_PARAMS) -d:debug -d:disable_libbacktrace +else +NIM_PARAMS := $(NIM_PARAMS) -d:release +endif deps: | deps-common nimbus.nims ifneq ($(USE_LIBBACKTRACE), 0) @@ -95,7 +100,7 @@ nimbus.nims: # nim-libbacktrace libbacktrace: - + $(MAKE) -C vendor/nim-libbacktrace BUILD_CXX_LIB=0 $(HANDLE_OUTPUT) + + $(MAKE) -C vendor/nim-libbacktrace --no-print-directory BUILD_CXX_LIB=0 # builds and runs the test suite test: | build deps @@ -167,3 +172,6 @@ wakunode: | build deps wakusim: | build deps wakunode echo -e $(BUILD_MSG) "build/$@" && \ $(ENV_SCRIPT) nim wakusim $(NIM_PARAMS) nimbus.nims + +endif # "variables.mk" was not included + diff --git a/README.md b/README.md index 81194c9ed..0817b0cc4 100644 --- a/README.md +++ b/README.md @@ -61,14 +61,9 @@ nix-shell default.nix #### POSIX-compatible OS ```bash -make # The first `make` invocation will update all Git submodules and prompt you to run `make` again. - # It's only required once per Git clone. You'll run `make update` after each `git pull`, in the future, - # to keep those submodules up to date. - -# Run tests -make test - -make nimbus # build the Nimbus binary +# The first `make` invocation will update all Git submodules. +# You'll run `make update` after each `git pull`, in the future, to keep those submodules up to date. +make nimbus # See available command line options build/nimbus -- help @@ -79,6 +74,9 @@ build/nimbus # Update to latest version git pull make update + +# Run tests +make test ``` To run a command that might use binaries from the Status Nim fork: @@ -112,7 +110,6 @@ Install [Git for Windows](https://gitforwindows.org/) and use a "Git Bash" shell If you don't want to compile RocksDB and SQLite separately, you can fetch pre-compiled DLLs with: ```bash -mingw32-make # this first invocation will update the Git submodules mingw32-make fetch-dlls # this will place the right DLLs for your architecture in the "build/" directory ``` diff --git a/azure-pipelines.yml b/azure-pipelines.yml index a48da3763..a55e5b0dd 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -1,6 +1,8 @@ jobs: - job: Windows + timeoutInMinutes: 80 + pool: vmImage: windows-latest @@ -52,10 +54,8 @@ jobs: mv "$MINGW_DIR" /c/custom/ cd .. export PATH="/c/custom/${MINGW_DIR}/bin:$PATH" - echo "Fetching submodules" git config --global core.longpaths true git config --global core.autocrlf false - git submodule --quiet update --init --recursive mingw32-make -j2 ARCH_OVERRIDE=${PLATFORM} CI_CACHE=NimBinaries update mingw32-make -j2 ARCH_OVERRIDE=${PLATFORM} fetch-dlls mingw32-make -j2 ARCH_OVERRIDE=${PLATFORM} diff --git a/vendor/nim-libbacktrace b/vendor/nim-libbacktrace index da216986c..fc63983c7 160000 --- a/vendor/nim-libbacktrace +++ b/vendor/nim-libbacktrace @@ -1 +1 @@ -Subproject commit da216986c635599dccffa2e71eabad03653e5aef +Subproject commit fc63983c73ba541413f12ee70a2b6f025b03efea diff --git a/vendor/nimbus-build-system b/vendor/nimbus-build-system index d8cde2ad8..1e4051bc2 160000 --- a/vendor/nimbus-build-system +++ b/vendor/nimbus-build-system @@ -1 +1 @@ -Subproject commit d8cde2ad855295fe3539f9beaa2ca95cb991863b +Subproject commit 1e4051bc237ddf3f25ddccb45c1c9daef740092a