2018-11-19 02:52:11 +00:00
|
|
|
mode = ScriptMode.Verbose
|
|
|
|
|
2018-11-19 04:03:23 +00:00
|
|
|
packageName = "libp2p"
|
2019-11-06 11:01:16 +00:00
|
|
|
version = "0.0.2"
|
2018-11-19 02:52:11 +00:00
|
|
|
author = "Status Research & Development GmbH"
|
|
|
|
description = "LibP2P implementation"
|
|
|
|
license = "MIT"
|
2020-09-15 09:16:43 +00:00
|
|
|
skipDirs = @["tests", "examples", "Nim", "tools", "scripts", "docs"]
|
2018-11-19 02:52:11 +00:00
|
|
|
|
2020-04-14 05:26:12 +00:00
|
|
|
requires "nim >= 1.2.0",
|
|
|
|
"nimcrypto >= 0.4.1",
|
2022-01-05 15:27:33 +00:00
|
|
|
"dnsclient >= 0.1.2",
|
2020-03-06 19:19:43 +00:00
|
|
|
"bearssl >= 0.1.4",
|
2021-12-16 18:00:10 +00:00
|
|
|
"chronicles >= 0.10.2",
|
2021-11-24 20:01:12 +00:00
|
|
|
"chronos >= 3.0.6",
|
2020-04-14 13:27:07 +00:00
|
|
|
"metrics",
|
|
|
|
"secp256k1",
|
2021-08-03 13:48:03 +00:00
|
|
|
"stew#head",
|
2021-11-08 12:02:03 +00:00
|
|
|
"websock"
|
2018-11-19 02:52:11 +00:00
|
|
|
|
2022-07-27 11:47:50 +00:00
|
|
|
const styleCheckStyle =
|
|
|
|
if (NimMajor, NimMinor) < (1, 6):
|
|
|
|
"hint"
|
|
|
|
else:
|
|
|
|
"error"
|
|
|
|
|
2022-01-05 15:27:33 +00:00
|
|
|
const nimflags =
|
|
|
|
"--verbosity:0 --hints:off " &
|
|
|
|
"--warning[CaseTransition]:off --warning[ObservableStores]:off " &
|
|
|
|
"--warning[LockLevel]:off " &
|
|
|
|
"-d:chronosStrictException " &
|
2022-07-27 11:47:50 +00:00
|
|
|
"--styleCheck:usages --styleCheck:" & styleCheckStyle & " "
|
2022-01-05 15:27:33 +00:00
|
|
|
|
2020-07-21 20:10:21 +00:00
|
|
|
proc runTest(filename: string, verify: bool = true, sign: bool = true,
|
|
|
|
moreoptions: string = "") =
|
2022-04-06 14:00:24 +00:00
|
|
|
var excstr = "nim c --opt:speed -d:debug -d:libp2p_agents_metrics -d:libp2p_protobuf_metrics -d:libp2p_network_protocols_metrics -d:libp2p_mplex_metrics "
|
2022-07-01 18:20:42 +00:00
|
|
|
excstr.add(" -d:chronicles_sinks=textlines[stdout],json[dynamic] -d:chronicles_log_level=TRACE ")
|
|
|
|
excstr.add(" -d:chronicles_runtime_filtering=TRUE ")
|
2022-01-10 11:29:52 +00:00
|
|
|
excstr.add(" " & getEnv("NIMFLAGS") & " ")
|
2022-01-05 15:27:33 +00:00
|
|
|
excstr.add(" " & nimflags & " ")
|
2020-06-20 10:56:55 +00:00
|
|
|
excstr.add(" -d:libp2p_pubsub_sign=" & $sign)
|
|
|
|
excstr.add(" -d:libp2p_pubsub_verify=" & $verify)
|
2020-07-21 20:10:21 +00:00
|
|
|
excstr.add(" " & moreoptions & " ")
|
2022-07-01 18:20:42 +00:00
|
|
|
exec excstr & " -r " & " tests/" & filename
|
2020-04-14 13:21:16 +00:00
|
|
|
rmFile "tests/" & filename.toExe
|
2019-03-14 02:55:47 +00:00
|
|
|
|
2021-11-08 12:00:44 +00:00
|
|
|
proc buildSample(filename: string, run = false) =
|
2022-01-05 15:27:33 +00:00
|
|
|
var excstr = "nim c --opt:speed --threads:on -d:debug "
|
|
|
|
excstr.add(" " & nimflags & " ")
|
2020-06-20 10:56:55 +00:00
|
|
|
excstr.add(" examples/" & filename)
|
|
|
|
exec excstr
|
2021-11-08 12:00:44 +00:00
|
|
|
if run:
|
|
|
|
exec "./examples/" & filename.toExe
|
|
|
|
rmFile "examples/" & filename.toExe
|
|
|
|
|
|
|
|
proc buildTutorial(filename: string) =
|
|
|
|
discard gorge "cat " & filename & " | nim c -r --hints:off tools/markdown_runner.nim | " &
|
2022-01-05 15:27:33 +00:00
|
|
|
" nim " & nimflags & " c -"
|
2020-04-19 05:04:53 +00:00
|
|
|
|
2020-05-06 09:26:08 +00:00
|
|
|
task testnative, "Runs libp2p native tests":
|
2020-04-23 01:27:29 +00:00
|
|
|
runTest("testnative")
|
2020-05-06 09:26:08 +00:00
|
|
|
|
|
|
|
task testdaemon, "Runs daemon tests":
|
2020-04-23 01:27:29 +00:00
|
|
|
runTest("testdaemon")
|
2020-05-06 09:26:08 +00:00
|
|
|
|
|
|
|
task testinterop, "Runs interop tests":
|
2020-04-23 01:27:29 +00:00
|
|
|
runTest("testinterop")
|
2020-04-19 05:04:53 +00:00
|
|
|
|
2020-05-06 09:26:08 +00:00
|
|
|
task testpubsub, "Runs pubsub tests":
|
2020-09-21 09:16:29 +00:00
|
|
|
runTest("pubsub/testgossipinternal", sign = false, verify = false, moreoptions = "-d:pubsub_internal_testing")
|
2020-05-06 09:26:08 +00:00
|
|
|
runTest("pubsub/testpubsub")
|
|
|
|
runTest("pubsub/testpubsub", sign = false, verify = false)
|
2020-09-28 07:11:18 +00:00
|
|
|
runTest("pubsub/testpubsub", sign = false, verify = false, moreoptions = "-d:libp2p_pubsub_anonymize=true")
|
2020-05-06 09:26:08 +00:00
|
|
|
|
2020-09-28 07:11:18 +00:00
|
|
|
task testpubsub_slim, "Runs pubsub tests":
|
|
|
|
runTest("pubsub/testgossipinternal", sign = false, verify = false, moreoptions = "-d:pubsub_internal_testing")
|
|
|
|
runTest("pubsub/testpubsub")
|
|
|
|
|
2020-07-21 20:10:21 +00:00
|
|
|
task testfilter, "Run PKI filter test":
|
|
|
|
runTest("testpkifilter",
|
|
|
|
moreoptions = "-d:libp2p_pki_schemes=\"secp256k1\"")
|
|
|
|
runTest("testpkifilter",
|
|
|
|
moreoptions = "-d:libp2p_pki_schemes=\"secp256k1;ed25519\"")
|
|
|
|
runTest("testpkifilter",
|
|
|
|
moreoptions = "-d:libp2p_pki_schemes=\"secp256k1;ed25519;ecnist\"")
|
|
|
|
runTest("testpkifilter",
|
|
|
|
moreoptions = "-d:libp2p_pki_schemes=")
|
|
|
|
|
2020-05-06 09:26:08 +00:00
|
|
|
task test, "Runs the test suite":
|
|
|
|
exec "nimble testnative"
|
|
|
|
exec "nimble testpubsub"
|
|
|
|
exec "nimble testdaemon"
|
|
|
|
exec "nimble testinterop"
|
2020-07-21 20:10:21 +00:00
|
|
|
exec "nimble testfilter"
|
2021-11-08 12:00:44 +00:00
|
|
|
exec "nimble examples_build"
|
2020-05-06 09:26:08 +00:00
|
|
|
|
2022-01-10 11:29:52 +00:00
|
|
|
task test_slim, "Runs the (slimmed down) test suite":
|
2020-09-28 07:11:18 +00:00
|
|
|
exec "nimble testnative"
|
|
|
|
exec "nimble testpubsub_slim"
|
|
|
|
exec "nimble testfilter"
|
2021-11-19 10:52:29 +00:00
|
|
|
exec "nimble examples_build"
|
2020-09-28 07:11:18 +00:00
|
|
|
|
2020-04-19 05:04:53 +00:00
|
|
|
task examples_build, "Build the samples":
|
2020-04-23 01:27:29 +00:00
|
|
|
buildSample("directchat")
|
2021-11-08 12:00:44 +00:00
|
|
|
buildSample("helloworld", true)
|
|
|
|
buildTutorial("examples/tutorial_1_connect.md")
|
|
|
|
buildTutorial("examples/tutorial_2_customproto.md")
|
2021-12-16 18:00:10 +00:00
|
|
|
|
2022-07-01 18:19:57 +00:00
|
|
|
proc tutorialToHtml(source, output: string) =
|
|
|
|
var html = gorge("./nimbledeps/bin/markdown < " & source)
|
|
|
|
html &= """
|
|
|
|
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/water.css@2/out/water.css">
|
|
|
|
<link rel="stylesheet" href="https://unpkg.com/@highlightjs/cdn-assets@11.5.1/styles/default.min.css">
|
|
|
|
<script src="https://unpkg.com/@highlightjs/cdn-assets@11.5.1/highlight.min.js"></script>
|
|
|
|
<script src="https://unpkg.com/@highlightjs/cdn-assets@11.5.1/languages/nim.min.js"></script>
|
|
|
|
<script>hljs.highlightAll();</script>
|
|
|
|
"""
|
|
|
|
writeFile(output, html)
|
|
|
|
|
|
|
|
|
|
|
|
task markdown_to_html, "Build the tutorials HTML":
|
|
|
|
exec "nimble install -y markdown"
|
|
|
|
tutorialToHtml("examples/tutorial_1_connect.md", "tuto1.html")
|
|
|
|
tutorialToHtml("examples/tutorial_2_customproto.md", "tuto2.html")
|
|
|
|
|
2021-12-16 18:00:10 +00:00
|
|
|
# pin system
|
|
|
|
# while nimble lockfile
|
|
|
|
# isn't available
|
|
|
|
|
|
|
|
const PinFile = ".pinned"
|
|
|
|
task pin, "Create a lockfile":
|
|
|
|
# pinner.nim was originally here
|
|
|
|
# but you can't read output from
|
|
|
|
# a command in a nimscript
|
|
|
|
exec "nim c -r tools/pinner.nim"
|
|
|
|
|
|
|
|
import sequtils
|
|
|
|
import os
|
|
|
|
task install_pinned, "Reads the lockfile":
|
|
|
|
let toInstall = readFile(PinFile).splitWhitespace().mapIt((it.split(";", 1)[0], it.split(";", 1)[1]))
|
|
|
|
# [('packageName', 'packageFullUri')]
|
|
|
|
|
|
|
|
rmDir("nimbledeps")
|
|
|
|
mkDir("nimbledeps")
|
|
|
|
exec "nimble install -y " & toInstall.mapIt(it[1]).join(" ")
|
|
|
|
|
|
|
|
# Remove the automatically installed deps
|
|
|
|
# (inefficient you say?)
|
|
|
|
let allowedDirectories = toInstall.mapIt(it[0] & "-" & it[1].split('@')[1])
|
|
|
|
for dependency in listDirs("nimbledeps/pkgs"):
|
|
|
|
if dependency.extractFilename notin allowedDirectories:
|
|
|
|
rmDir(dependency)
|
|
|
|
|
|
|
|
task unpin, "Restore global package use":
|
|
|
|
rmDir("nimbledeps")
|