With the new minimum meson_version, it is possible to retrieve the
project version from a file by passing a files() output directly to the
version argument. It is no longer necessary to call run_command with
various arguments to configure its behavior, nor depend on a system
/usr/bin/cat (which admittedly does exist on non-Windows systems).
And meson will also treat the VERSION file as a build input, and
reconfigure the build if it changes -- meaning that the built binaries
are updated to have the correct version number (configure_file,
PACKAGE_VERSION, etc).
Signed-off-by: Eli Schwartz <[email protected]>
meson.source_root() is deprecated since 0.56, and should be replaced
with either project_source_root or global_source_root depending on
whether it is supposed to refer to a different subproject if the current
project is a subproject. The default for source_root itself was the
latter, which is broken in subproject builds, and is also incorrect for
us since our usage is to construct the path to a file that is part of
the zoitechat source tree.
Make this work semantically correctly by specifically accessing the root
of the current (sub)project, and fix a deprecation warning in the
process.
Signed-off-by: Eli Schwartz <[email protected]>
Meson emits a warning stating that the default will change from false to
true, in some future version, and that one should always pass
`check: BOOL` explicitly. Normally this is because commands that
unexpectedly fail would result in wrong behavior if the build treats it
as though it succeeded.
In this case, we were specifically relying on it being `check: false`,
as the returncode is immediately checked in order to provide a better
error message. Make this explicit in the meson.build file.
Signed-off-by: Eli Schwartz <[email protected]>
The minimum version is too high to allow these checks to ever be false.
We can delete else branches as dead code and remove "if true"
constants.
Fixes:
```
meson.build:170: WARNING: Conditional on version '>= 0.55.0' always evaluates to true
meson.build:232: WARNING: Conditional on version '>= 0.55.0' always evaluates to true
```
Signed-off-by: Eli Schwartz <[email protected]>
network.c defines _POSIX_C_SOURCE before pulling in the socket headers.
On FreeBSD that hides the non-standard PF_* aliases from <sys/socket.h>,
so PF_UNSPEC is undeclared and the build fails:
src/common/network.c:169:20: error: use of undeclared identifier 'PF_UNSPEC'
getaddrinfo() is specified in terms of the AF_* constants anyway, and the
rest of the file already uses AF_INET, so use AF_UNSPEC here too.
gen-public-suffix.py downloads public_suffix_list.dat at build time and
only falls back to a few hardcoded Linux paths when that fails. Package
builds usually run without network access, and on FreeBSD the list is
installed under /usr/local/share/public_suffix_list, so the build dies
with "unable to load public suffix list".
Add a public-suffix-list option that takes the path of a local copy.
When it is set the generator reads just that file and never goes
online, which also keeps the generated table reproducible.
This trivial diff gets rid of noisy warnings such as
```
./src/common/ignore.c:274:13: warning: a function declaration without a prototype is deprecated in all versions of C [-Wstrict-prototypes]
274 | ignore_load ()
| ^
| void
```
when building with modern clang. This is cosmetic since these functions
are actually prototyped in a header, so if the header is in scope it's
not possible to call them with an arbitrary number of arguments.
Using HMAC ()'s facility of returning the digest in a static array is
not thread safe (this can't be fixed) and it is not portable to the
OpenSSL forks: BoringSSL removed support for this a decade ago (so
aws-lc doesn't support it either) and LibreSSL followed a few years
back.
There is no downside to having a 32-byte array on the stack and it would
make zoitechat safe to use from other forks without the need of patching
it.
Add an error check for the HMAC () call and handle the error in the
caller.