Remove the C and Go example wrappers that call Nimbus as a library, by removing
the entire `wrappers/` directory. They are removed because they only wrap
Whisper protocol support, which has been removed as it is obsolete.
The only thing wrapped were Whisper functions, even though there were separate
`go_wrapper_example` and `go_wrapper_whisper_example` programs. The wrappers
don't build without Whisper in Nimbus, and without it, there isn't enough left
for them to be useful examples.
Also remove support for building the whole of Nimbus as a library, because
there is nothing left using it. These targets are gone from the Makefile:
- `wrappers`
- `wrappers-static`
- `libnimbus.so`
- `libnimbus.a`
The code isn't really gone, because it remains available in Git history. It
may be useful someday, so a comment has been left in the Makefile for future
generations:
> This note is kept so that anyone wanting to build Nimbus as a library or call
> from C or Go will know it has been done before. The previous working version
> can be found in Git history. Look for the `nimbus-eth1` commit that adds
> this comment and removes `wrappers/*`.
Also worth a note, the library support was not tested on Windows, and the
shared library support was only tested on Linux.
Signed-off-by: Jamie Lokier <jamie@shareable.org>
why:
on 32bit windows 7, there seems to be a 64k memory ceiling for the gcc
compiler which was exceeded on some test platform.
details:
compiling VM2 for low memory C compiler can be triggered with
"make ENABLE_VM2LOWMEM". this comes with a ~24% longer execution time
of the test suite against old VM and optimised VM2.
why:
vm2 enabled by ENABLE_VM2=1 behaves as vm without ENABLE_EVMC=1 until
it doesn't in some future fatch set. this leaves some wiggle room
to work on a vm copy without degrading the original implementation.
details:
+ additional make flag ENABLE_VM2=1 (or ENABLE_VM2=0 to explicitely disable)
+ when both flags ENABLE_EVMC=1 and ENABLE_VM2=1 are present, the former
flag ENABLE_EVMC=1 takes precedence, this is implemented at the NIM
compiler level for -d:evmc_enabled and -d:vm2_enabled
* switch to chronos metrics, remove insecure
See https://github.com/status-im/nimbus-eth2/pull/2468
also fixes pcre linking for real, and adds some random build flags that
help nimbus-eth2 stay afloat
* fix help
* don't omit frame pointers on windows
* bump vendor/nimbus-build-system
- add the Nim compiler header to the Nimbus header
- also support the USE_LIBBACKTRACE env var
* "go-checks" target no longer available
- Travis: switch language
- AppVeyor: disable `mingw32-make go-checks` for now
- `make update`: export GIT_LFS_SKIP_SMUDGE=1
- CI: disable the LFS script inside Makefile,
since we run it separately (and git-lfs is not installed in the Travis
macOS image if we found a valid cache).
- re-enable Nim's cache globally
- add a new "nimcache" subdir for the libraries
- make sure Go doesn't try to link libnimbus.a in the dynamically linked
wrapper example
- always delete the static archive before recreating it
- rename wrapper.nim/.h to libnimbus.nim/.h
- better hygiene in libnimbus.h (include guards and C++ support)
- remove MainnetBootnodes copy, since we do include "config.nim" after all
- moved "nimbus/api" to "wrappers"
- renamed files
- replaced the build scripts with Makefile targets
- set the rpath relative to the test binary's location so it can look
for libnimbus.so there at runtime
- libnimbus.so.0 required on Linux, apparently
- compiled all the Nimbus code with `--app:lib`, not just one file (this
required skipping a proc in "nimbus/config.nim" because it uses an API
that's unavailable in libraries)
- removed static linking from the Go wrapper. It doesn't make sense at a
global level, when using a shared Nimbus library. To selectively link
static libraries, we should probably be specifying them as *.a. I did
build a static libnimbus.a, as a test, but it insisted on dlopen-ing a
shared version of itself which looked too ugly to continue.
Additional changes:
- Makefile verbosity control
- nimble.sh can now run in parallel on the same *.nimble file
- nimble.sh no longer used in the Makefile, in favour of a nimbus.nims
symlink that eliminates race risks in parallel jobs
- nimbus.nimble takes extra params in the command line, with the caveat
that they also apply to nim
- setCommand() replaced with exec(), to avoid splitting param strings
- "vendor/Nim/dist" might not exist
- work around build_all.sh not liking a symbolic link for csources
- submodule rename: asyndispatch2 -> chronos
- allow parallel building of Nim csources
- Windows testing
- go back to detached HEADs for reproducible historical builds
- update submodules
- document workflows
- build all tools using the Makefile and place them in ./build
- add copyright header to Makefile
- premix/readme.md edited to fix some errors, improve descriptions and
document Makefile usage
- link the Premix documentation in the main README.md
- also build `hunter` in the nimble tests
- refactored the file and directory search so all debugging tools can be run
from the top-level dir like this: `./build/<tool> ...`
- write all JSON debugging data in the current directory
- add JSON files generated in the top-level dir to .gitignore
- Nimbus now exits with an exception after dumping debug data and
running `premix` on it