new initial submodule update strategy (#494)
* new initial submodule update strategy * Azure: increase timeout * Makefile: change comment [skip ci]
This commit is contained in:
parent
45a9933d83
commit
73e9199ebf
|
@ -26,7 +26,6 @@ init:
|
||||||
- ps: IF ("$env:APPVEYOR_REPO_BRANCH" -ne "master") { $env:APPVEYOR_CACHE_SKIP_SAVE = "true" }
|
- ps: IF ("$env:APPVEYOR_REPO_BRANCH" -ne "master") { $env:APPVEYOR_CACHE_SKIP_SAVE = "true" }
|
||||||
|
|
||||||
install:
|
install:
|
||||||
- git submodule update --init --recursive
|
|
||||||
# use the newest versions documented here: https://www.appveyor.com/docs/windows-images-software/#mingw-msys-cygwin
|
# 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%" == "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%
|
- IF "%PLATFORM%" == "x64" SET PATH=C:\mingw-w64\x86_64-8.1.0-posix-seh-rt_v6-rev0\mingw64\bin;%PATH%
|
||||||
|
|
|
@ -6,10 +6,6 @@
|
||||||
# Nimble packages
|
# Nimble packages
|
||||||
/vendor/.nimble
|
/vendor/.nimble
|
||||||
|
|
||||||
# Go packages
|
|
||||||
/vendor/go
|
|
||||||
!/vendor/go/src/github.com/libp2p/go-libp2p-daemon
|
|
||||||
|
|
||||||
# ntags/ctags output
|
# ntags/ctags output
|
||||||
/tags
|
/tags
|
||||||
|
|
||||||
|
|
50
Makefile
50
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:
|
# either of:
|
||||||
# - Apache License, version 2.0
|
# - Apache License, version 2.0
|
||||||
# - MIT license
|
# - MIT license
|
||||||
# at your option. This file may not be copied, modified, or distributed except
|
# at your option. This file may not be copied, modified, or distributed except
|
||||||
# according to those terms.
|
# 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
|
# used inside the included makefiles
|
||||||
BUILD_SYSTEM_DIR := vendor/nimbus-build-system
|
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
|
-include $(BUILD_SYSTEM_DIR)/makefiles/variables.mk
|
||||||
|
|
||||||
# debugging tools + testing tools
|
# debugging tools + testing tools
|
||||||
|
@ -30,17 +30,9 @@ TOOLS_DIRS := \
|
||||||
# comma-separated values for the "clean" target
|
# comma-separated values for the "clean" target
|
||||||
TOOLS_CSV := $(subst $(SPACE),$(COMMA),$(TOOLS))
|
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: \
|
.PHONY: \
|
||||||
all \
|
all \
|
||||||
$(TOOLS) \
|
$(TOOLS) \
|
||||||
build-system-checks \
|
|
||||||
deps \
|
deps \
|
||||||
update \
|
update \
|
||||||
nimbus \
|
nimbus \
|
||||||
|
@ -53,20 +45,33 @@ endif
|
||||||
wrappers-static \
|
wrappers-static \
|
||||||
libbacktrace
|
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 '.'
|
# 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
|
# must be included after the default target
|
||||||
-include $(BUILD_SYSTEM_DIR)/makefiles/targets.mk
|
-include $(BUILD_SYSTEM_DIR)/makefiles/targets.mk
|
||||||
|
|
||||||
GIT_SUBMODULE_UPDATE := git submodule update --init --recursive
|
# "-d:release" implies "--stacktrace:off" and it cannot be added to config.nims
|
||||||
build-system-checks:
|
ifeq ($(USE_LIBBACKTRACE), 0)
|
||||||
@[[ -e "$(BUILD_SYSTEM_DIR)/makefiles" ]] || { \
|
NIM_PARAMS := $(NIM_PARAMS) -d:debug -d:disable_libbacktrace
|
||||||
echo -e "'$(BUILD_SYSTEM_DIR)/makefiles' not found. Running '$(GIT_SUBMODULE_UPDATE)'.\n"; \
|
else
|
||||||
$(GIT_SUBMODULE_UPDATE); \
|
NIM_PARAMS := $(NIM_PARAMS) -d:release
|
||||||
echo -e "\nYou can now run '$(MAKE)' again."; \
|
endif
|
||||||
exit 1; \
|
|
||||||
}
|
|
||||||
|
|
||||||
deps: | deps-common nimbus.nims
|
deps: | deps-common nimbus.nims
|
||||||
ifneq ($(USE_LIBBACKTRACE), 0)
|
ifneq ($(USE_LIBBACKTRACE), 0)
|
||||||
|
@ -95,7 +100,7 @@ nimbus.nims:
|
||||||
|
|
||||||
# nim-libbacktrace
|
# nim-libbacktrace
|
||||||
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
|
# builds and runs the test suite
|
||||||
test: | build deps
|
test: | build deps
|
||||||
|
@ -167,3 +172,6 @@ wakunode: | build deps
|
||||||
wakusim: | build deps wakunode
|
wakusim: | build deps wakunode
|
||||||
echo -e $(BUILD_MSG) "build/$@" && \
|
echo -e $(BUILD_MSG) "build/$@" && \
|
||||||
$(ENV_SCRIPT) nim wakusim $(NIM_PARAMS) nimbus.nims
|
$(ENV_SCRIPT) nim wakusim $(NIM_PARAMS) nimbus.nims
|
||||||
|
|
||||||
|
endif # "variables.mk" was not included
|
||||||
|
|
||||||
|
|
15
README.md
15
README.md
|
@ -61,14 +61,9 @@ nix-shell default.nix
|
||||||
#### POSIX-compatible OS
|
#### POSIX-compatible OS
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
make # The first `make` invocation will update all Git submodules and prompt you to run `make` again.
|
# The first `make` invocation will update all Git submodules.
|
||||||
# It's only required once per Git clone. You'll run `make update` after each `git pull`, in the future,
|
# You'll run `make update` after each `git pull`, in the future, to keep those submodules up to date.
|
||||||
# to keep those submodules up to date.
|
make nimbus
|
||||||
|
|
||||||
# Run tests
|
|
||||||
make test
|
|
||||||
|
|
||||||
make nimbus # build the Nimbus binary
|
|
||||||
|
|
||||||
# See available command line options
|
# See available command line options
|
||||||
build/nimbus -- help
|
build/nimbus -- help
|
||||||
|
@ -79,6 +74,9 @@ build/nimbus
|
||||||
# Update to latest version
|
# Update to latest version
|
||||||
git pull
|
git pull
|
||||||
make update
|
make update
|
||||||
|
|
||||||
|
# Run tests
|
||||||
|
make test
|
||||||
```
|
```
|
||||||
|
|
||||||
To run a command that might use binaries from the Status Nim fork:
|
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:
|
If you don't want to compile RocksDB and SQLite separately, you can fetch pre-compiled DLLs with:
|
||||||
```bash
|
```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
|
mingw32-make fetch-dlls # this will place the right DLLs for your architecture in the "build/" directory
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
jobs:
|
jobs:
|
||||||
- job: Windows
|
- job: Windows
|
||||||
|
|
||||||
|
timeoutInMinutes: 80
|
||||||
|
|
||||||
pool:
|
pool:
|
||||||
vmImage: windows-latest
|
vmImage: windows-latest
|
||||||
|
|
||||||
|
@ -52,10 +54,8 @@ jobs:
|
||||||
mv "$MINGW_DIR" /c/custom/
|
mv "$MINGW_DIR" /c/custom/
|
||||||
cd ..
|
cd ..
|
||||||
export PATH="/c/custom/${MINGW_DIR}/bin:$PATH"
|
export PATH="/c/custom/${MINGW_DIR}/bin:$PATH"
|
||||||
echo "Fetching submodules"
|
|
||||||
git config --global core.longpaths true
|
git config --global core.longpaths true
|
||||||
git config --global core.autocrlf false
|
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} CI_CACHE=NimBinaries update
|
||||||
mingw32-make -j2 ARCH_OVERRIDE=${PLATFORM} fetch-dlls
|
mingw32-make -j2 ARCH_OVERRIDE=${PLATFORM} fetch-dlls
|
||||||
mingw32-make -j2 ARCH_OVERRIDE=${PLATFORM}
|
mingw32-make -j2 ARCH_OVERRIDE=${PLATFORM}
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
Subproject commit da216986c635599dccffa2e71eabad03653e5aef
|
Subproject commit fc63983c73ba541413f12ee70a2b6f025b03efea
|
|
@ -1 +1 @@
|
||||||
Subproject commit d8cde2ad855295fe3539f9beaa2ca95cb991863b
|
Subproject commit 1e4051bc237ddf3f25ddccb45c1c9daef740092a
|
Loading…
Reference in New Issue