Commit Graph

656 Commits

Author SHA1 Message Date
Jason Rhinelander
ed456b0c7e Fix typo in libuv error message 2021-07-05 10:41:09 -03:00
Jeff Becker
114c7bab62
bump up the jam, bump it up, while your feet are jumping. 2021-07-05 09:13:05 -04:00
Jason Rhinelander
4f71276928 Link to jemalloc for better memory usage 2021-06-29 16:15:54 -03:00
Jeff Becker
1c457e2858
bump version to 0.9.4 2021-06-21 15:16:28 -04:00
Jeff Becker
5c6b0f7178
dont build shared libs when we are building static deps 2021-06-19 07:54:44 -04:00
Jeff Becker
138abaf356
version bump 2021-06-09 20:51:17 -04:00
Jeff Becker
cbb78b5280
bump version 2021-05-17 13:00:34 -04:00
Jeff
5fb457e18a
update release motto 2021-05-14 15:15:00 -04:00
Jeff Becker
52b9dbd793
version bump for 0.9.1 2021-05-12 11:32:54 -04:00
Thomas Winget
277794950c
Lokinet version bump to 0.9.0 2021-04-21 19:21:25 -04:00
Jeff Becker
545021aa3d
temp commit 2021-04-19 07:02:46 -04:00
Jeff Becker
e4841917ba
redo cmake parts
* add liblokinet.so target
* make every library we build except liblokinet.so static
* wire up parts of liblokinet
2021-04-19 06:52:24 -04:00
Jeff Becker
0c37cc7f60
lokinet-bootstrap native binary 2021-04-15 13:39:45 -04:00
Jeff Becker
9e05e245e0
rebrand and bump version 2021-04-14 12:55:52 -04:00
Jeff Becker
084e0aa023
bump version for 0.8.4 2021-03-09 07:51:37 -05:00
Jason Rhinelander
5b555ee5aa Replace libuv with uvw & related refactoring
- removes all the llarp_ev_* functions, replacing with methods/classes/functions in the llarp
  namespace.
- banish ev/ev.h to the void
- Passes various things by const lvalue ref, especially shared_ptr's that don't need to be copied
  (to avoid an atomic refcount increment/decrement).
- Add a llarp::UDPHandle abstract class for UDP handling
- Removes the UDP tick handler; code that needs tick can just do a separate handler on the event
  loop outside the UDP socket.
- Adds an "OwnedBuffer" which owns its own memory but is implicitly convertible to a llarp_buffer_t.
  This is mostly needed to take over ownership of buffers from uvw without copying them as,
  currently, uvw does its own allocation (pending some open upstream issues/PRs).
- Logic:
  - add `make_caller`/`call_forever`/`call_every` utility functions to abstract Call wrapping and
    dependent timed tasks.
  - Add inLogicThread() so that code can tell its inside the logic thread (typically for
    debugging assertions).
  - get rid of janky integer returns and dealing with cancellations on call_later: the other methods
    added here and the event loop code remove the need for them.
- Event loop:
  - redo everything with uvw instead of libuv
  - rename EventLoopWakeup::Wakeup to EventLoopWakeup::Trigger to better reflect what it does.
  - add EventLoopRepeater for repeated events, and replace the code that reschedules itself every
    time it is called with a repeater.
  - Split up `EventLoop::run()` into a non-virtual base method and abstract `run_loop()` methods;
    the base method does a couple extra setup/teardown things that don't need to be in the derived class.
  - udp_listen is replaced with ev->udp(...) which returns a new UDPHandle object rather that
    needing gross C-style-but-not-actually-C-compatible structs.
  - Remove unused register_poll_fd_(un)readable
  - Use shared_ptr for EventLoopWakeup rather than returning a raw pointer; uvw lets us not have to
    worry about having the event loop class maintain ownership of it.
  - Add factory EventLoop::create() function to create a default (uvw-based) event loop (previously
    this was one of the llarp_ev_blahblah unnamespaced functions).
  - ev_libuv: this is mostly rewritten; all of the glue code/structs, in particular, are gone as
    they are no longer needed with uvw.
- DNS:
  - Rename DnsHandler to DnsInterceptor to better describe what it does (this is the code that
    intercepts all DNS to the tun IP range for Android).
- endpoint:
  - remove unused "isolated network" code
  - remove distinct (but actually always the same) variables for router/endpoint logic objects
- llarp_buffer_t
  - make constructors type-safe against being called with points to non-size-1 values
- tun packet reading:
  - read all available packets off the device/file descriptor; previously we were reading one packet
    at a time then returning to the event loop to poll again.
  - ReadNextPacket() now returns a 0-size packet if the read would block (so that we can implement
    the previous point).
  - ReadNextPacket() now throws on I/O error
- Miscellaneous code cleanups/simplifications
2021-03-04 16:51:18 -04:00
Jason Rhinelander
8aa1b702cd Disallow evil compilation
-fpermissive allows nasty things that are (apparently) needed on
Windows, so only enable it there.

vla are evil, so don't just warn but error on it.

remove duplicate -Wno-unknown-pragmas
2021-03-04 16:51:18 -04:00
Jason Rhinelander
00df8b85da Bump required oxenmq version
Current lokinet dev relies on something from oxenmq dev branch which is
in the not-yet-released next version; without this lokinet tries using
the system 1.2.3 install, which then fails the build.
2021-03-04 16:51:18 -04:00
Jason Rhinelander
e3aff6c36c Add more junk & clangd symlinks to .gitignore
Ignore any root directory starting with build so that you can have many
build directories (build, build2, build-win32, ...) that get ignored.

Add .cache which clangd creates

Ignore compile_commands.json (and generate it by default) which helps
clangd, but needs to be symlinked to a compile_commands.json in a build
dir so isn't suitable for inclusion in the repo.
2021-03-04 16:51:18 -04:00
Jeff Becker
60bfdacc23
get rid of the rest of gtest/gmock 2021-03-04 15:41:53 -05:00
Jeff Becker
979a652446
loki-mq -> oxen-mq 2021-03-01 07:57:57 -05:00
Jeff Becker
df4ea34a56
nodedb refactor
* bump zmq static dep
* lokimq -> oxenmq
* llarp_nodedb -> llarp::NodeDB
* remove all crufty api parts of NodeDB
* make NodeDB rc selection api not suck
* make path builder api not suck
* propagate all above changes so that unit tests work and it all compiles
2021-02-02 09:35:40 -05:00
Jason Rhinelander
ab4013f00d Downgrade required libuv version to 1.18
(1.18 is the version found in bionic).
2021-01-25 12:52:48 -04:00
Jeff
0ed8942dc6
libuv cmake fixups (#1511)
* fix up cmake parts for libuv
* make libuv use external project via StaticBuild.cmake
* remove libuv submodule
2021-01-16 19:11:28 -05:00
Jeff
49b9ad7197
tun code refactor (#1495)
* partial tun code refactor

* take out the trash

* move vpn platform code into llarp/vpn/platform.cpp

* fix hive build

* fix win32

* fix memory leak on win32

* reduce cpu use

* make macos compile

* win32 patches:

* use wepoll for zmq
* use all cores on windows iocp read loop

* fix zmq patch for windows

* clean up cmake for win32

* add uninstall before reinstall option to win32 installer

* more ipv6 stuff

* make it compile

* fix up route poker

* remove an unneeded code block in macos wtf

* always use call to system

* fix route poker behavior on macos

* disable ipv6 on windows for now

* cpu perf improvement:

* colease calls to Router::PumpLL to 1 per event loop wakeup

* set up THEN add addresses

* emulate proactor event loop on win32

* remove excessively verbose error message

* fix issue #1499

* exclude uv_poll from win32 so that it can start up

* update logtag to include directory

* create minidump on windows if there was a crash

* make windows happy

* use dmp suffix on minidump files

* typo fix

* address feedback from jason
* use PROJECT_SOURCE_DIR instead of CMAKE_SOURCE_DIR
* quote $@ in apply-patches in case path has spaces in it

* address feedback from tom

* remove llarp/ev/pipe
* add comments for clairification
* make event loop queue size constant named
2021-01-11 18:13:22 -05:00
Jason Rhinelander
f9be8b6b73
Bump version & gui build (#1501) 2020-12-16 12:26:15 -05:00
Jason Rhinelander
a753e96d8d
Version bump (#1483)
* Bump version to 0.8.2

* Let cmake set PROJECT_NAME

`project(x ...)` already sets PROJECT_NAME (and CMAKE_PROKECT_NAME if
this is the top-level build) to `x`; the logic here seemed sort of
backwards.

* Get rid of uninstaller entitlement

We don't seem to need it anymore with Qt 5.15.1.

* Bump windows lokinet-gui build
2020-11-18 06:08:56 -05:00
Jason Rhinelander
8dd5bd6899 Update to lokimq 1.2.2 for segfault-at-shutdown fix 2020-11-17 19:22:19 -04:00
Jeff Becker
3e5dcb34cf turn building shared libraries off by default because no one uses this right now 2020-10-30 12:47:38 -03:00
Jason Rhinelander
e47b70a82f
CMake fixes: libuv static build, base_libs, shared lib install dir (#1431)
* Update how we build libuv

- Update submoduled libuv to latest stable (1.40.0)
- Don't look for a system libuv if we're under BUILD_STATIC_DEPS
- Add a libuv interface library rather than using globals
- Make the windows build fall back to the submodule if not explicitly
  given a LIBUV_ROOT

* Replace ${LIBS} global with `base_libs` interface

This simplifies linking and include handling a bit.

* Remove unneeded header

* Add missing csignal header

(This was previously being pulled in incredibly indirectly via some
stuff that eventually includes some other stuff that eventually included
uv.h)

* Use GNUInstallDirs to get lib dir instead of hard-coding lib

Fixes #1429
2020-10-28 18:26:43 -04:00
Jeff
4e2ba1a96c
bump version to 0.8.1 (#1425) 2020-10-28 13:26:33 -04:00
Jason Rhinelander
a888b7bbc2
Reduce macOS target to 10.12, and fix target for deps (#1414)
This is relatively painless for lokinet as it already had workarounds
during 0.8 dev work for the things macos hated in 10.13.

Dependencies, however, were not being built with the proper macos target
junk, so this fixes that.
2020-10-16 05:18:45 -04:00
Jason Rhinelander
60de84fde7
Try to build for 10.14 (#1412) 2020-10-14 07:32:24 -04:00
Jason Rhinelander
62a90f4c82 macos package fixes for 0.3.0
- bumps deployment target to 10.15 because earlier versions don't
  support C++17.
- remove double-include of installer.cmake
- use new static dep lokinet build system
- replace lokinetctl with lokinet-vpn
2020-10-07 12:51:26 -03:00
Jason Rhinelander
d41f6f1ef0
0.8.0 version bump (#1373) 2020-09-30 16:13:43 -04:00
Jeff
fe30193a97
revive android build system (#1339)
* it lives?

* clean up

* add readme and add x86_64 to abi filters

* disable route poking on android

* make it compile on android

* it compiles!!111

* typofix

* re-enable ccache for android
2020-09-22 15:04:15 -04:00
Jeff
ef794bbd11
move pkgconfig requirement (#1355) 2020-09-22 13:59:33 -04:00
Jeff
686b13b2f3 fix up cmake lokimq target 2020-09-19 09:50:54 -04:00
Jeff
dfd8df5e7f
add uninstall target (#1340)
* add uninstall target

* * redo cmake uninstall
* remove lokinet-vpn python script
* don't install lokinet-vpn twice
2020-09-09 12:06:57 -04:00
Jeff Becker
37e16291cb
working on linux with root 2020-08-24 20:19:48 -04:00
Jeff Becker
9050085165
disable thread safety anonations for freebsd + gtest 2020-07-31 14:26:40 -04:00
Stephen Shelton
73c9ddff52
Begin peer stats infrastructure 2020-07-02 10:12:11 -06:00
Jeff Becker
2737cd6f98
remove FindSodium.cmake and use the cmake incantations from loki-core for setting sodium target up 2020-07-02 11:13:31 -04:00
Jeff Becker
c6bd0afe96
move sodium cmake target about so that it is detected earlier 2020-07-02 11:13:31 -04:00
Jeff Becker
fc08f92425
move lokimq cmake code 2020-07-02 11:10:06 -04:00
Jeff Becker
e13e886df9
fix up event loop crap so that unit tests pass 2020-07-02 11:10:06 -04:00
Jeff Becker
f4971a88fd
use lokimq workers instead of llarp:🧵:ThreadPool 2020-07-02 11:07:34 -04:00
Jeff Becker
1175a583d2
initial working code 2020-07-02 11:07:32 -04:00
Stephen Shelton
13b0a4f2fc
WIP: LokidRpcClient 2020-07-02 11:07:32 -04:00
Stephen Shelton
ca9214f50f
Add loki-mq as submodule 2020-07-02 11:07:32 -04:00
Jeff Becker
9bfff61d08
initial wack at lokimq 2020-07-02 11:07:32 -04:00
Stephen Shelton
fd4b03f896
WIP: LokidRpcClient 2020-07-02 11:07:32 -04:00
Stephen Shelton
0c0deb0656
Add loki-mq as submodule 2020-07-02 11:07:32 -04:00
Jeff Becker
ad882d0d70
initial working code 2020-07-02 11:07:31 -04:00
Stephen Shelton
78256e3228
WIP: LokidRpcClient 2020-07-02 11:07:31 -04:00
Stephen Shelton
7bfd8cdbc9
Add loki-mq as submodule 2020-07-02 11:07:31 -04:00
Jeff Becker
0006751d80
initial wack at lokimq 2020-07-02 11:07:31 -04:00
Stephen Shelton
91725a8530
WIP: LokidRpcClient 2020-07-02 11:07:31 -04:00
Stephen Shelton
11951510bf
Remove libabyss and rpc::Caller/rpc::Server 2020-07-02 11:07:30 -04:00
Stephen Shelton
c67db46b12
Add loki-mq as submodule 2020-07-02 11:07:30 -04:00
Thomas Winget
9905a2bd4b static build flag for win/mac static builds in drone config 2020-06-16 20:53:36 -04:00
Thomas Winget
0ecdf60777 static build fixes in cmake stuff
I hate cmake so much.
2020-06-16 18:52:20 -04:00
Thomas Winget
32843510bb libunbound can now be built as a static dep 2020-06-15 18:44:59 -04:00
Thomas Winget
df284cb757 proper CMake finding and using of libunbound 2020-06-15 18:32:57 -04:00
Thomas Winget
926d306443 add functionality to download and build static libs
The libs with rules already set up in StaticBuild.cmake are dependencies
which will be introduced in following commits.
2020-06-15 16:32:44 -04:00
Rick V
adf253e800
picflags differ slightly on native vs wow64 builds 2020-06-12 15:19:10 -05:00
Rick V
45890133bc
LIBUV_ROOT override for win32
emit PIC code (.reloc) on win32 for aslr
2020-06-12 15:18:57 -05:00
Jason Rhinelander
d24feacae0 Modernize how we set up ccache
CMAKE_<LANG>_COMPILER_LAUNCHER was added around cmake 3.4 and, usefully,
can be enabled/disabled via cmake invocation flags (unlike the older
RULE_LAUNCH_COMPILE property).
2020-06-10 13:34:02 -03:00
Jeff Becker
e9d1a61053
don't recover from sanitizer errors 2020-05-23 16:07:20 -04:00
Jeff Becker
6af498092b
exit traffic via loki addresses 2020-05-23 16:07:19 -04:00
Jason Rhinelander
5b7d194ff1 Merge remote-tracking branch 'origin/master' into dev 2020-05-22 00:45:24 -03:00
Jason Rhinelander
11342b1d9f Remove travis-ci
We don't have much left there that works -- the one useful build (s390x)
errors out with a no available disk space error, so just give up on it.
2020-05-20 20:43:26 -03:00
Jason Rhinelander
be9ddf2ae1 Bring back ghc::filesystem for broke AF macos
macOS doesn't provide `<filesystem>` support when targetting anything
earlier than 10.15.
2020-05-20 19:18:27 -03:00
Jason Rhinelander
c5faa86926 cmake refactor
Refactors many things in cmake to improve and simplify:

- don't use variable indirection for target names; target names are
*already* a variable of sorts.  (e.g. ${UTIL_LIB} is now just
lokinet-util).  cmake/basic_definitions.cmake is now gone.

- fix LTO enabling to use the standard cmake (3.9+) LTO mechanism rather
than shoving a bunch of flag hacks through link_libraries and
add_compile_options.  This also now enables LTO when building a shared
library (because previously the -flto hacks were only turned on in the
static code for some reason).

- build liblokinet as *either* shared library or static library, but not
both.  Building both makes things more complicated because they had
different names (lokinet-shared or lokinet-static) and seems pointless:
you generally want one or the other.  Now there is just the liblokinet
target, which will be shared or static depending on the value of
BUILD_SHARED_LIBS.

- Simplify lokinet-cryptography AVX2 code: just build *one* library, and
add in the additional AVX2 files when possible, rather than building two
and needing to merge them.

- Compress STATIC_LINK and STATIC_LINK_RUNTIME into just STATIC_LINK.
It makes no sense to use one of these (_RUNTIME) on Windows and the
other on non-Windows when they appear to try to do the same thing.

- remove a bunch of annotations from `endif(FOO)` -> `endif()`.

- move all the tuntap compilation code (including OS-specific source
file selection) into vendor/CMakeLists.txt and build tuntap as an
intermediate OBJECT library rather than keeping a global variable in 5
different files.

- move release motto define to root cmake; it made no sense being
duplicated in both unix.cmake and win32.cmake

- fix add_log_tag to not stomp on any existing source compile flags with
its definition.  Also use proper compile definition property instead of
cramming it into compile flags.

- make optimization/linker flags less hacky.  There's no reason for us
to force particular optimization flags because the cmake build type
already does that (e.g. -DCMAKE_BUILD_TYPE=Release does -O3).  Not doing
that also silences a bunch of cmake warnings because it thinks "-O0 -g3"
etc.  are link libraries (which is reasonable: that's what the code was
telling cmake they are).

- sets the default build type to RelWithDebInfo which gives us `-O2 -g`
if you don't specify a build type.

- Move PIC up (so that the things loaded in unix.cmake, notably libuv,
have it set).

- Add a custom `curl` interface library that carries the correct link
target and include paths for curl (system or bundled).
2020-05-17 23:31:23 -03:00
Jason Rhinelander
ab4ee954b9 Remove DEBIAN option
This hasn't been used in a long time; the debian packaging lives in
separate branches instead.
2020-05-17 21:29:05 -03:00
Jason Rhinelander
a45bec7c4f Removed RPI definition
This was a long-obsolete fix for things that don't matter anymore.
2020-05-17 21:28:25 -03:00
Jeff Becker
64157d5d44 track libcurl and libuv with cmake, add libuv submodule 2020-05-17 14:53:28 -03:00
Jeff Becker
39b32a9ccc
move check for std::filesystem and std::optional down 2020-05-15 09:43:53 -04:00
Jeff Becker
abc1f67430
check for std::optional as macos can be broke af sometimes 2020-05-15 09:40:24 -04:00
Jeff Becker
1072d9b505
detect travis using environmental vars 2020-05-15 09:12:00 -04:00
Jeff Becker
a7d616843f
add shitty check for running in travis with workarounds because god is dead and travis-ci fucking sucks. 2020-05-15 09:01:47 -04:00
Jason Rhinelander
1697bf90fe C++17
Compiles with C++17, replaces ghc::filesystem with std::filesystem,
nonstd::optional with std::optional, and llarp::string_view with
std::string_view.
2020-05-01 17:43:27 -03:00
Jeff
0048badcf9
Merge pull request #1241 from jagerman/fix-systemd
No LINUX variable in cmake
2020-04-22 11:43:35 -04:00
Jason Rhinelander
6080a9427b No LINUX variable in cmake
Just let the pkg_check fail when libsystemd isn't install; it shouldn't
hurt anything.
2020-04-22 12:02:05 -03:00
Jason Rhinelander
d8858361f4 No LINUX variable in cmake
Just let the pkg_check fail when libsystemd isn't install; it shouldn't
hurt anything.
2020-04-22 12:00:09 -03:00
Jason Rhinelander
3048ccf3f8 Set -mmacosx-version-min the cmake way 2020-04-21 20:01:24 -03:00
Jason Rhinelander
053a5cb180 Set -mmacosx-version-min the cmake way 2020-04-21 20:00:37 -03:00
Jason Rhinelander
a75015bc64 Disable thread safety annotations on AppleClang 2020-04-21 16:42:10 -03:00
Jason Rhinelander
b2bd555965 Bump version to 0.7.1
Including mostly windows/macos packaging changes, plus a few minor
fixes.
2020-04-21 16:27:21 -03:00
Jason Rhinelander
44b6ccebbd Move release motto string into CMakeLists.txt
Right after project() which contains the version, so that version +
motto updates are basically in one place (and so that non-Makefile cmake
invocations get it).
2020-04-21 16:25:30 -03:00
Jason Rhinelander
16d2296b11 Add -DBUILD_PACKAGE=ON to make cpack code opt-in 2020-04-21 16:25:29 -03:00
Jason Rhinelander
58133db753 Consolidate cmake vars & definitions
CMake will set version variables itself if you give the version in the
project(), which is cleaner.  Also removes some (nearly) duplicate
definitions and settings added in basic_definitions.cmake for unknown
reasons.

Removes some redundant settings (name, description, version) from the
cpack settings which already default to the values from the project()
call.
2020-04-21 16:20:09 -03:00
Jeff Becker
73eef0427a move cmake unix down 2020-04-21 16:11:39 -03:00
Jeff Becker
dbaed61100 make gitlab pump out 32 bit installers, no lto for builds as that is cursed for now. 2020-04-21 16:11:39 -03:00
Jeff Becker
7406dbc964 cpack win32 2020-04-21 16:11:39 -03:00
Jason Rhinelander
f8209baf50 Move release motto string into CMakeLists.txt
Right after project() which contains the version, so that version +
motto updates are basically in one place (and so that non-Makefile cmake
invocations get it).
2020-04-19 23:18:48 -03:00
Jason Rhinelander
ebb1950941 Add -DBUILD_PACKAGE=ON to make cpack code opt-in 2020-04-19 23:18:41 -03:00
Jason Rhinelander
3dd3d48fbb Consolidate cmake vars & definitions
CMake will set version variables itself if you give the version in the
project(), which is cleaner.  Also removes some (nearly) duplicate
definitions and settings added in basic_definitions.cmake for unknown
reasons.

Removes some redundant settings (name, description, version) from the
cpack settings which already default to the values from the project()
call.
2020-04-19 23:16:23 -03:00
Jeff
5b1941222b
unscrew travis-ci (#1223)
* update travis ci clang-format to clang-format-9 because we use that now
add python3-dev package becuase something inside ci thinks it has python but really does not

* try using python3.6

* try working around hot garbage that is travis-ci

* add deadsnakes repo for python3.8

* prevent nullptr deference when running in unit tests

* move python3.8 to main dependancy matrix and add python3.8 to homebrew deps

* add deadsnake apt repo

* add deadsnakes and python3.8 back to previous matrix

* dev package for python

* toggle hive build in ci

* dont add pybind11 if not bulding hive

* revert setting pyenv shim for travis ci

* make native builds on by default except for windows ci

* only apply native build being off for windows release target becuase that broke macos
2020-04-18 16:58:41 -03:00
Jason Rhinelander
3c6aa002b8 Fix errors and warnings compiling on mac 2020-04-10 14:26:50 -03:00