Commit Graph

41 Commits (master)

Author SHA1 Message Date
Anthony Bilinski 3c467de9f2
chore(deps): Update c-toxcore to v0.2.18
Replace msgpack-c with toxcore submodule of cmp.
2022-05-01 06:32:21 -07:00
Anthony Bilinski e4552cf905
chore(CI): Add support for building toxcore and toxext for macOS
CMAKE_OSX_DEPLOYMENT_TARGET has no effect when not building for macOS.
2022-03-21 20:02:15 -07:00
Anthony Bilinski 02f384a7d2
chore(CI): Add support for building qrencode for macOS
CMAKE_OSX_DEPLOYMENT_TARGET has no effect when not building for macOS.
2022-03-21 19:16:49 -07:00
Anthony Bilinski e6075c278d
chore(CI): Add support for building msgpack-c for macOS
CMAKE_OSX_DEPLOYMENT_TARGET has no effect when not building for macOS.
2022-03-21 19:16:49 -07:00
Anthony Bilinski f9b8a8a05f
chore(CI): Add support for building ffmpeg for macOS 2022-03-21 19:16:49 -07:00
Anthony Bilinski a94304148e
chore(CI): Add support for building libexif for macOS 2022-03-21 19:16:41 -07:00
Anthony Bilinski b4636c8174
chore(CI): Add support for building openal for macOS
CMAKE_OSX_DEPLOYMENT_TARGET has no effect when not building for macOS.

MACOSX_RPATH must be set explicitly for OpenAL to be found. It is default using newer cmake, but OpenAL is using cmake 2.6.
2022-03-21 19:16:41 -07:00
Anthony Bilinski ad862ca50e
chore(CI): Add support for building openssl for macOS 2022-03-21 19:16:41 -07:00
Anthony Bilinski c7ac0fdc3f
chore(CI): Add support for building opus for macOS 2022-03-21 19:16:41 -07:00
Anthony Bilinski 59fb97e2a3
chore(CI): Add support for building sodium for macOS 2022-03-21 19:16:41 -07:00
Anthony Bilinski d3bebab0b7
chore(CI): Add support for building sqlcipher for macOS 2022-03-21 19:16:37 -07:00
Anthony Bilinski 35d35a33f2
chore(CI): Add support for building VPX for macOS
Manually set library id name because it defaults to "libvpx.7.dylib",
for some reason, which is not found by qTox or tests.
2022-03-21 17:45:08 -07:00
Anthony Bilinski 4c969a9277
chore(CI): Move QrEncode build from autotools to cmake
Autotools version failed to configure on macOS, and QrEncode's README says  "If
the configure script does not work well, try to use CMake." Cmake works for
both macOS and Windows.
2022-03-18 00:51:49 -07:00
Anthony Bilinski 6c85492f17
chore(CI): Add macOS VPX patch to allow setting mmacosx-version-min
VPX overrides the user setting by default, preventing a newer macOS from
building for an older macOS.
2022-03-18 00:51:49 -07:00
Anthony Bilinski 05faddf526
chore(CI): Rename Windows vpx.patch to vpx-windows.patch
Avoid conflict with different VPX patch needed for macos
2022-03-18 00:51:49 -07:00
Anthony Bilinski 502ccb1e1b
chore(CI): Add macOS platform detection for build scripts 2022-03-18 00:51:49 -07:00
Anthony Bilinski 90210a9826
chore(CI): Backup NSIS ShellExecAsUser plugin
As was done in the previous ANSI version prior to
beb38fa33b

For reasons covered here:
beb38fa33b (r68688468)
2022-03-16 21:36:12 -07:00
Anthony Bilinski 42b4385c35
chore(CI): Use platform detection script in Windows dep build scripts
Allows future macOS configuration in each individual build script to not all be
duplicated. Also deduplicates current Windows arg checking and config setting.
2022-03-15 22:39:07 -07:00
Anthony Bilinski 5ac0dee3a8
chore(CI): Add script for handling platform compile args 2022-03-15 22:39:07 -07:00
Anthony Bilinski c828a16b7b
feat(CI): Run clang-tidy check in CI 2022-03-15 08:19:53 -07:00
Anthony Bilinski 9bf17acca6
chore(CI): Handle build scripts called with relative paths with spaces
foo=dirname "$0" only works if the script is called with an absolute path and
that path contains no spaces. Add quotes everywhere to contain spaces in
directory names or file names, and add realpath to get the absolute path
regardless of call path.

Not necessarily needed, but like in e405868037
it can avoid some annoying issues when e.g. that script was called with a
relative path in CI.
2022-03-13 06:20:44 -07:00
Anthony Bilinski 3c7ee98bc1
chore(CI): Set bash flags at start of scripts 2022-03-13 06:20:44 -07:00
Anthony Bilinski 69514319fd
chore(CI): Rename Windows build scripts to be used commonly by macOS 2022-03-13 06:20:25 -07:00
Anthony Bilinski 98bdf5f36f
chore(CI): Use consistent passing of ARCH to scripts
It's passed to some scripts through the environment variable and to others on
as an argument. Make all calls rely on the argument for consistency.
2022-03-08 15:59:11 -08:00
Anthony Bilinski a1c139a51c
chore(CI): Don't install openssl docs in CI
Installing docs takes 2/3rds of the total build time on an NVME SSD, even more
on slower storage, and is useless in CI.
2022-03-08 03:53:18 -08:00
Anthony Bilinski beb38fa33b
fix(Windows): Fix starting qTox from installer
Regular ShellExecAsUser plugin doesn't support Unicode. Change to their
"Unicode Update" version. See
https://nsis.sourceforge.io/ShellExecAsUser_plug-in#Download

Missed when updating installers to Unicode mode in
9f84184ba8
2022-03-08 03:48:59 -08:00
Anthony Bilinski 3744ecfe8b
chore(CI): Include "win" in Windows arch for build scripts
To help disambiguate Windows arches with other platforms that will be used.
2022-03-08 03:20:48 -08:00
Anthony Bilinski 8ff52e500a
chore(deps): Update c-toxcore to v0.2.17 2022-03-07 15:36:29 -08:00
Anthony Bilinski e100f81ba9
Merge branch 'v1.17-dev' 2022-03-07 15:02:46 -08:00
Anthony Bilinski b05c069dfe
fix(appimage): Patch snore to enable notifications in AppImage
Patch for other builds as well since the patch is harmless and it simplifies
the build script.

Fix #6411
2022-02-23 21:11:42 -08:00
Anthony Bilinski e9f74bb50a
chore(deps): Add msgpack to archlinux dockerfile
Missed in last update since it's not covered in CI.
2022-02-19 21:25:00 -08:00
Anthony Bilinski 2fca383e70
chore(deps): Update c-toxcore to v0.2.16 2022-02-19 06:32:51 -08:00
Anthony Bilinski e076d4b7a7
chore(deps): Add support for msgpack dependency 2022-02-19 06:32:46 -08:00
Anthony Bilinski 68ca7354be
fix(Windows): Add missed openal dll since CI refactor
Old windows/cross-compile/build.sh copied OPENAL_PREFIX_DIR/bin/*.dll to be
included, but the current Dockerfile.windows_builder copies libs one by one
and misses OpenAL. qTox fails to start on launch with due to missing
OpenAL32.dll on Windows because of this.

Add a special check for OpenAL, since the generic missing dll check doesn't
cover it.
2022-02-17 12:41:09 -08:00
Anthony Bilinski 79feb19d7d
fix(CI): Update Wine from 5 to 7 in docker image to fix unit tests
Root cause is unclear, but fixes failures in test_bsu and hangs in
test_smileypack.
2022-02-17 10:10:20 -08:00
Mick Sayson 88edc66f88
fix(buildscripts): Fix license text for MIT derived works 2022-02-17 10:10:20 -08:00
Mick Sayson 1288a0a7fa
chore(ci): Windows docker build fixes
* Fix unit tests not running in windows build
* Fix missing comment ports from old build script
2022-02-17 10:10:20 -08:00
Anthony Bilinski b657fa2bc6
chore(deps): update c-toxcore to v0.2.15 2022-02-17 08:58:05 -08:00
Anthony Bilinski 90484a1fdf
chore(CI): Replace CentOS 8 CI with AlmaLinux
CentOS is EOL, and AlmaLinux seems like the closest successor
2022-02-08 02:08:42 -08:00
Anthony Bilinski e405868037
chore(build): Update build_toxcore_linux.sh to handle relative call paths 2022-01-09 18:52:53 -08:00
Mick Sayson 8abe8320d2 chore(CI): Use docker for CI scripts
Motiviation:
* Reproducing issues in CI is currently difficult
* Predicting issues in CI is currently difficult if you are not on
  ubuntu 18.04
* Reproducing issues submitted from other distros is currently done by
  creating a VM of that distro and building qtox for it locally
* Documentation for how to build on different distros is out of date
* Issues on non-ubuntu distributions are not caught by CI
* Cross compiling for windows locally is not trivial
* Iterating when working with custom build scripts is slow, scripts
  don't necessarily support re-running without re-starting the docker
  container and re-building qtox again
* Updating dependencies is a pain

Changes:
* docker-compose file has been added to the root of our repo.
  After `docker compose run --rm ubuntu` (or other supported distros),
  you are ready to compile and run qtox
* Dependencies are owned by dependency install scripts in buildscripts/.
  This allows us to use the same exact dependencies in our
  OSX/windows/linux scripts
* New docker images have been added for a variety of distributions.
  These are now run in CI in a variety of configurations
  * Docker images are cached in CI so rebuild time for the majority of
    jobs is quite quick
* Build scripts have been trimmed to leverage state of docker
  containers.
  * Windows build script no longer installs anything, dependencies are
    now managed by the windows_builder docker images
  * Build scripts should now be easily re-runnable. Usage is now `docker
    compose run --rm <image>` and then run the scripts
* All artifacts are now uploaded to github after build, this means we
  can take an appimage/flatpak/exe/dmg for any given PR and try it out
  without having to build it ourselves

Notes:
* Docker image size is quite important. We have a maximum of 5GB cache
  space on github actions. The majority of the linux distro docker
  images cache at ~300-400MB, which gives us room to test ~6 distros
  after accounting for the sizes of flatpak/windows docker images
* Docker layer ordering is relatively intentional. Approximate order
  should be that large dependencies that change infrequently should be
  farther up. This lowers the amount of rebuilding we have to do when
  dependencies are updated
* download_xxx.sh scripts are the cleanest way I could find to implement
  a shared dependency map between osx scripts and docker containers.
  Although it would be nice to have a single dependency mapping file,
  splitting it into individual scripts allows us to only rebuild some
  docker layers when dependencies are updated.
* Github actions are split between docker image building and docker
  image use. This allows us to re-use the same docker images for
  multiple jobs, but only build it once
  * Unfortunately I could not find a way to de-duplicate the stitching
    between jobs, so we have a lot of copy pasta in that area
2021-12-19 14:56:05 -08:00