From 59c9c920be242c34d5aace1a21299abed0e7a6d6 Mon Sep 17 00:00:00 2001 From: Ivan Folgueira Bande Date: Fri, 26 Sep 2025 15:45:03 +0200 Subject: [PATCH] some adaptations for n-b-s --- .gitignore | 2 ++ .gitmodules | 20 +++++++++++ Makefile | 77 +++++++++++++++++++++++++++++++++++++++++++ initialize.sh | 8 ----- nim.cfg | 16 --------- nim_chat_poc.nimble | 34 ++++++++++++------- vendor/nim-chronicles | 1 + vendor/nim-chronos | 1 + vendor/nim-libp2p | 1 + vendor/nim-metrics | 1 + 10 files changed, 125 insertions(+), 36 deletions(-) create mode 100644 Makefile delete mode 100755 initialize.sh delete mode 100644 nim.cfg create mode 160000 vendor/nim-chronicles create mode 160000 vendor/nim-chronos create mode 160000 vendor/nim-libp2p create mode 160000 vendor/nim-metrics diff --git a/.gitignore b/.gitignore index 09c3a5e..9233f0e 100644 --- a/.gitignore +++ b/.gitignore @@ -2,3 +2,5 @@ /waku_vibe_template.dSYM /nim_chat_poc *.dSYM +nimble.develop +nimble.paths diff --git a/.gitmodules b/.gitmodules index 69eba32..a5aeac2 100644 --- a/.gitmodules +++ b/.gitmodules @@ -6,3 +6,23 @@ url = https://github.com/waku-org/nwaku.git ignore = untracked branch = master +[submodule "vendor/nim-chronos"] + path = vendor/nim-chronos + url = https://github.com/status-im/nim-chronos.git + ignore = untracked + branch = master +[submodule "vendor/nim-chronicles"] + path = vendor/nim-chronicles + url = https://github.com/status-im/nim-chronicles.git + ignore = untracked + branch = master +[submodule "vendor/nim-metrics"] + path = vendor/nim-metrics + url = https://github.com/status-im/nim-metrics.git + ignore = untracked + branch = master +[submodule "vendor/nim-libp2p"] + path = vendor/nim-libp2p + url = https://github.com/status-im/nim-libp2p.git + ignore = untracked + branch = master diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..3575899 --- /dev/null +++ b/Makefile @@ -0,0 +1,77 @@ +export BUILD_SYSTEM_DIR := vendor/nimbus-build-system +export EXCLUDED_NIM_PACKAGES := vendor/nim-dnsdisc/vendor +LINK_PCRE := 0 +FORMAT_MSG := "\\x1B[95mFormatting:\\x1B[39m" +# we don't want an error here, so we can handle things later, in the ".DEFAULT" target +-include $(BUILD_SYSTEM_DIR)/makefiles/variables.mk + +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. + +########## +## Main ## +########## +.PHONY: all update clean + +# default target, because it's the first one that doesn't start with '.' +all: | waku_example + +test_file := $(word 2,$(MAKECMDGOALS)) +define test_name +$(shell echo '$(MAKECMDGOALS)' | cut -d' ' -f3-) +endef + +nim_chat_poc.nims: + ln -s nim_chat_poc.nimble $@ + +update: | update-common + rm -rf nim_chat_poc.nims && \ + $(MAKE) nim_chat_poc.nims $(HANDLE_OUTPUT) + +clean: + rm -rf build + +# must be included after the default target +-include $(BUILD_SYSTEM_DIR)/makefiles/targets.mk + +## Possible values: prod; debug +TARGET ?= prod + +## Git version +GIT_VERSION ?= $(shell git describe --abbrev=6 --always --tags) +## Compilation parameters. If defined in the CLI the assignments won't be executed +NIM_PARAMS := $(NIM_PARAMS) -d:git_version=\"$(GIT_VERSION)\" + +################## +## Dependencies ## +################## +.PHONY: build-waku-librln + +build-waku-librln: + make -C vendor/nwaku librln + +########## +## Example ## +########## +.PHONY: waku_example + +waku_example: | build-waku-librln nim_chat_poc.nims + echo -e $(BUILD_MSG) "build/$@" && \ + \ + $(ENV_SCRIPT) nim waku_example $(NIM_PARAMS) nim_chat_poc.nims + +endif + + diff --git a/initialize.sh b/initialize.sh deleted file mode 100755 index 85ac1ce..0000000 --- a/initialize.sh +++ /dev/null @@ -1,8 +0,0 @@ -#!/bin/bash -echo "Running setup task..." - -echo "Init Submodules..." -git submodule update --init --recursive - -echo "Building Waku..." -( cd vendor/waku && make -j14 librln) \ No newline at end of file diff --git a/nim.cfg b/nim.cfg deleted file mode 100644 index 1dd4ceb..0000000 --- a/nim.cfg +++ /dev/null @@ -1,16 +0,0 @@ -# Add custom paths to import modules ---path: "vendor/waku" - -# Compile with debug symbols ---debuginfo - -# Enable warnings ---warning[UnusedImport]: on - -# Enable experimental features ---experimental - ---passL: "./vendor/waku/librln_v0.7.0.a" - ---define: chronicles_runtime_filtering - diff --git a/nim_chat_poc.nimble b/nim_chat_poc.nimble index 0b83bfc..5ee9771 100644 --- a/nim_chat_poc.nimble +++ b/nim_chat_poc.nimble @@ -1,17 +1,11 @@ # Package -version = "0.1.0" -author = "jazzz" -description = "An example of the chat sdk in Nim" -license = "MIT" -srcDir = "src" -bin = @["nim_chat_poc"] - - -# Basic build task -task initialize, "Initialize the project after cloning": - exec "./initialize.sh" - +version = "0.1.0" +author = "jazzz" +description = "An example of the chat sdk in Nim" +license = "MIT" +srcDir = "src" +bin = @["nim_chat_poc"] # Dependencies @@ -28,3 +22,19 @@ requires "eth" requires "regex" requires "web3" requires "https://github.com/jazzz/nim-sds#exports" +requires "naawaku" + +proc buildBinary(name: string, srcDir = "./", params = "", lang = "c") = + if not dirExists "build": + mkDir "build" + # allow something like "nim nimbus --verbosity:0 --hints:off nimbus.nims" + var extra_params = params + for i in 2 ..< paramCount(): + extra_params &= " " & paramStr(i) + + exec "nim " & lang & " --out:build/" & name & " --mm:refc " & extra_params & " " & + srcDir & name & ".nim" + +task waku_example, "Build Waku based simple example": + let name = "waku_example" + buildBinary name, "examples/", " -d:chronicles_log_level='TRACE' " diff --git a/vendor/nim-chronicles b/vendor/nim-chronicles new file mode 160000 index 0000000..67da112 --- /dev/null +++ b/vendor/nim-chronicles @@ -0,0 +1 @@ +Subproject commit 67da11265f8defa5b2c7d2f17ab5b1637c6a1d41 diff --git a/vendor/nim-chronos b/vendor/nim-chronos new file mode 160000 index 0000000..bb0a8f0 --- /dev/null +++ b/vendor/nim-chronos @@ -0,0 +1 @@ +Subproject commit bb0a8f07bcff3fb79b20720e4bb286fccedae93a diff --git a/vendor/nim-libp2p b/vendor/nim-libp2p new file mode 160000 index 0000000..3103db2 --- /dev/null +++ b/vendor/nim-libp2p @@ -0,0 +1 @@ +Subproject commit 3103db25cce2c5553b2b8b83b8e442168b4a3f88 diff --git a/vendor/nim-metrics b/vendor/nim-metrics new file mode 160000 index 0000000..ecf64c6 --- /dev/null +++ b/vendor/nim-metrics @@ -0,0 +1 @@ +Subproject commit ecf64c6078d1276d3b7d9b3d931fbdb70004db11