Commit graph

28 commits

Author SHA1 Message Date
Calin Culianu
5b43044059 Linux static build: Force use of gcc-13 in docker images
- 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).
2024-05-23 00:04:24 +03:00
Calin Culianu
18359e695e Updated rocksdb to 9.1.1 + updated librocksdb binaries
This is because rocksdb 6.x didn't work ok with C++20
2024-05-23 00:04:23 +03:00
Calin Culianu
3bafbd0ec0
docker: Added linux_ub20 target for building arm64
This hopefully fixes issue #209.
2023-11-06 22:08:45 +02:00
Calin Culianu
82d2ea8acc
Upgrade dockerfiles for 18.04 and 16.04 to use gcc-8/g++-8
Hopefully should mean better C++ support, fewer bugs, etc. We were on a
somewhat ancient 7.x series for these static builds.
2022-09-17 20:59:17 -05:00
Calin Culianu
8b2e0de297
Upgrade to Qt 5.15.6 for the linux_ub16 build (docker static)
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.
2022-09-17 20:32:41 -05:00
Calin Culianu
335161753e
Build a static OpenSSL 1.1.1o locally, and get Qt to use it for _ub16
Should make the static openssl thing work now for the _ub16 linux docker
static build.
2022-09-17 19:33:45 -05:00
Calin Culianu
2443d6f2b2
Added a mirror for downloading Qt5.12.12
This is in case the primary site goes down (which is currently the case
as I am dev testing things).
2022-09-17 17:07:52 -05:00
Calin Culianu
3f573ee468
Force use of static openssl library on the _ub16 static binary
This should make it so that no surprises can possibly occur from the
venerable openssl library on the user's system vs what Qt expects.
2022-09-17 16:52:29 -05:00
Calin Culianu
2ea966d2e0
Force static linking of openssl lib for linux static builds
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.
2022-09-17 13:46:54 -05:00
Calin Culianu
12fcb235d6
Docker build: Add new build platform "linux_ub22" (Ubuntu Jammy)
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).
2022-09-15 01:28:16 -05:00
Calin Culianu
33d33bea39
Docker builds: Updated Qt5 to latest
For Linux: Updated to Qt 5.15.6 + the zlib patch
For Ubuntu 16 Linux: Updated to Qt 5.12.12
2022-09-14 23:09:40 -05:00
Calin Culianu
d6f11aaa53
docker: Added support for building Windows static binary with Qt6
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.
2021-09-06 13:04:41 +03:00
Calin Culianu
7aa8855db3
Fixup for linux_ub16 buils
- 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.
2021-04-08 11:41:41 -07:00
Calin Culianu
e00c03171c
Added zmq support to the app, plus building zmq static in docker
- 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.
2021-02-07 01:07:28 +02:00
Calin Culianu
0be3610958
Docker static build: Use Qt 5.15.2
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.
2020-12-19 00:52:21 +02:00
Calin Culianu
87fb48076d
Upgrade to rocksdb 6.14.6 + bump version to 1.3.3
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.
2020-12-10 08:59:25 +02:00
Calin Culianu
5edeaa9b8b
Add jemalloc static library to the static library builder for Windows & Linux (#56)
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.
2020-08-28 15:19:08 +03:00
Calin Culianu
cf93178b5d
Linux Docker build: use ubuntu:bionic
This guarantees max compatibility.  "latest" (focal) is too new and
maybe it will not run on some systems.
2020-06-29 21:21:41 +03:00
Calin Culianu
50212624e9
Fixed Linu Dockerfile for building
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.
2020-06-29 21:04:51 +03:00
Calin Culianu
9da9521ada
Updated Linux Ubuntu 16 Dockerfile for Qt 5.14.2 2020-04-07 15:36:07 +03:00
Calin Culianu
422a670d92
Updated Docker static build for Linux to use Qt 5.14.2
Also updated README.md to indicate I use Qt 5.14.2 myself.
2020-04-07 12:38:25 +03:00
Calin Culianu
2414032846
Static build: added build target for older Linux (linux_ub16)
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).
2020-03-28 19:58:54 +02:00
Calin Culianu
237ad38ae1
Static build: Nits in Dockerfiles
Reformatted them to be consistent and more readable. Also got rid of
extraneous/tautological "exit 0" commands.
2020-03-28 10:46:42 +02:00
Calin Culianu
e68a183bf1
Static build: Added building of FulcrumAdmin.exe for Windows
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.
2020-03-28 10:25:01 +02:00
Calin Culianu
846f1b804a Revert "More print formatting nits for builder"
This reverts commit 5cbcdc11d5.
2020-03-27 15:41:57 +02:00
Calin Culianu
5cbcdc11d5
More print formatting nits for builder 2020-03-27 15:40:53 +02:00
Calin Culianu
22cda932b5
More common.sh and Dockerfile msg formatting nits 2020-03-27 15:36:54 +02:00
Calin Culianu
bad0af12da
Added Linux static builder (using Docker)
- 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!
2020-03-27 14:28:58 +02:00