- We install GCC 13.1 from a ppa in all of the docker containers, and use it
- We compile now with -static-libstdc++ to preserve compatibility with
stock systems.
However, on GCC 13.1 we got some compile warnings & errors so we:
- Updated libzmq to 4.3.5 (and cppzmq to 4.10.0)
- Updated jemalloc to 5.3.0
We also removed support for the linux_ub16 build (since there are no
sufficiently new C++20 capable compilers available for this Ubuntu
version).
Since we are now building our own custom OpenSSL 1.1.1o, we can now
upgrade the Qt5 we are using in the _ub16 docker to 5.15.6. This should
make maintenance of the sources easier since everything targets the same
Qt5 5.15.x lib now.
We ensure that Qt 5.15.6's QtNetworking statically links to libssl.a and
libcrypto.a. This fixes a bunch of issues when running the released
static binary on newer systems. Closes#126.
This changs affects only the "linux" and "newlinux" docker build targets,
and not the older "oldlin" target, which still relies on system openssl.
We added support for building using an Ubuntu Jammy docker container. In
the future we may switch to this one as the primary, but for now it will
just be there as a testing option.
Also, this change may be useful in case we want to switch to using Qt6
(which supports OpenSSL 3, which is what Jammy ships with).
This is for the docker build mechanism (for releases). A new "platform"
was added, "win_qt6". This will use a different docker file to build the
binary using Qt6 6.2.0-beta3, rather than Qt 5.15.2.
Unfortunately, the produced binary no longer works on Windows 7. It was
tested on Windows 10 and appears to work ok there though. It may be the
case that Qt6 simply stopped supporting Win7. C'est la vie.
- jonathonf/gcc-7.3 was superfluous (and doesn't even exist anymore).
Removed.
- Reverted back to Qt 5.12.10 since 5.14.2 is no longer available for
download from qt.
- New class: ZmqSubNotifier which only does something if libzmq was
enabled at compile-time
- Fulcrum.pro now tries to auto-detect libzmq using pkg-config (on
unix). One can override this auto-detection with `LIBS=-L/path/to/zmqlibdir -lzmq`
- App now compiles-in the commit hash used to build it (Unix only).
Auto-detected on unix only. On Windows the commit hash must be
specified as a DEFINE.
- Added -v/--version CLI arg to print extended information about which
libs the app was built against, including Fulcrum's own commit hash.
- Updated static docker builds to link-in a statically built libzmq
- App now prints what libs it contains / is using at startup to the log.
We updated the Dockerfile to use Qt 5.15.2 for the Windows and Linux
static build. The old ubuntu16 build however must remain on Qt 5.14.2
for now. 5.15.2 won't work there because it requires openssl 1.1.1
which is lacking in Ubuntu 16. We could build openssl ourselves, but
that can be done at a later time. For now the older linux build will
just use an older Qt, it's fine.
Upgraded the included headers and static libs to this latest version of
rocksdb. It is hoped that performance and memory consumption will
improve as a result of this update.
Also we bumped the app version to 1.3.3.
This makes the docker-based static library builder (`contrib/build/build.sh`)
clone and compile jemalloc. It then links the jemalloc library statically the
generated static executable.
Tested and works on both Linux and Windows.
Also in this commit: Added a "Jemalloc" key to the stats outputted by the
"/stats" HTTP endpoint, which includes some of the output of `malloc_print_stats()`
from Jemalloc. Note that for this to contain any data, the jemalloc library must be
linked at compile-time.
ubuntu:latest is now focal which has some interactive stuff in the
tzdata package installer. Needed to add "ENV
DEBIAN_FRONTEND=noninteractive" to get it to work.
This allows us to entirely build releases using Docker. The linux_ub16
target is for older systems with an older libc (Ubuntu16 LTS or
thereabouts), which can't run the newer static build (built on top of
Ubuntu 18 LTS but it requires a newer libc than Ubuntu16 has).
Also in this commit we simplified the Linux Dockerfile to not install
dependencies we don't need, and updated the README to reflect the new
platform targets for build.sh.
The platform targets for build.sh now are: linux, windows, and
linux_ub16 (also short versions work: lin, win, oldlin).
After much trial and tribulation, it works now! I had to
troubleshoot why the Wine-built FulcrumAdmin.exe refusd to
run on real Windows, and it turns out that the thing was bundling
some fake Wine .DLL files which real windows ships with anyway
and which real Windows didn't like. This has been addressed.
It works! Sweet jesus! Now releases for me will be made simpler.
- Moved the contrib/build/win/build.sh script up 1 level and made it
generic.
- It takes 2 args now: <platform> <commit>
- To build the static windows .exe: contrib/build/build.sh windows master
- To build a static Linux binary: contrib/build/build.sh linux master
Tested and works!