As per [1], quote:
It’s very important that you recognize the limited scope in which
automatic variable values are available: they only have values within
the recipe. In particular, you cannot use them anywhere within the
target list of a rule; they have no value there and will expand to the
empty string. Also, they cannot be accessed directly within the
prerequisite list of a rule. A common mistake is attempting to use $@
within the prerequisites list; this will not work.
Based on the patch by S-P Chan <shihping.chan@gmail.com>
[1] https://www.gnu.org/software/make/manual/html_node/Automatic-Variables.htmlcloses#1754
Thanks: S-P Chan <shihping.chan@gmail.com>
Change-Id: Ia5f9d7a75f04d9533afaace8ed49cc222e4307a8
Ref: https://github.com/sipwise/rtpengine/issues/1754
Try open an IPv4 socket if IPv6 fails with EAFNOSUPPORT in order to
support kernels without IPv6 support.
closes#1784
Change-Id: I2cf4065450a8b19b738c572e7d9ad6f8548ecc04
As we don't directly append to an existing GString any more anyway,
simplify the function signature by just returning a new GString if the
format string is known.
Change-Id: I9f8e6fbd93ea063eecb519cd57366effd4022f75
Some source strings are `const char *` and we don't have an alternative
`str` type pointing to a const buffer. Strictly speaking some buffers
aren't even char buffers, yet we use the `str` type to manage them. This
eliminates the need to explicitly cast every usage.
Change-Id: Ifd3cdd3d400fc483e6c488a95e9381938e63cc7f
gcc <12 propagates the const-ness of the given value to the newly
declared variable with __auto_type, leading to silly "can't assign to
const variable" errors. Work around this with an ugly macro.
Change-Id: Ic952c094c24bd802379fc10ad19d559613b2c1d0
Simple wrappers around glib's GHashTable functions that add type
information, instead of just using void* for everything.
Change-Id: I3e7c0f095f1f58b943ba80d1e14e763707ee1698
We rely on dpkg-buildflags to set -O2, but that may not be available on
the target system. Explicitly set -O3, and also enable LTO.
Change-Id: I593ec7ead08cb0a47922ba4db684b0292647f2bc
Fix all instances of argument-less function signatures.
Fix all instances of auto-cleanup variables declared after they need to
be in scope.
Change-Id: I3a005df03ede971e08d4f62d7c7711a1913fda5e
Whilst working on the Reproducible Builds effort [0], we noticed that
rtpengine could not be built reproducibly.
This is because the manpages generated by pandoc contained the current
build date.
An (upstreamable) patch is attached that uses the value from the
SOURCE_DATE_EPOCH environment variable if available.
[0] https://reproducible-builds.org/
Change-Id: I2eb22dc5f57af69d217fb06c1c126e7e40dbd451
*) Remove packaging for -gpu packages
*) Remove build profile restrictions, except for the build dependency
itself
*) Remove script to generate dh fragments for -gpu packages
*) Convert --cudecs switch to a path argument pointing to the .so
*) Don't link against libcudecs during build
*) Only include the single types.h header needed for usage as a plugin
*) Resolve all symbols during startup after loading the .so
Change-Id: Ide99eec2156d5d3be8c40594391cb1603add4b16
Consider errors from dlopen() or dlsym() as hard errors. Don't just log
an error message and continue startup. If we were instructed to load a
plugin, make sure that we could actually load it.
Change-Id: I1fcfa149a0eae277ef528fd3cef249ea7882e781
Evaluating the __VA_ARGS__ twice for printing a critical error can have
side effects. Avoid these by using an intermediate buffer.
Change-Id: I8ddace6ad06f47d6827f3f3ba3c5b882cbfb0140
Older glibc uses a strange (and seemingly broken) approach to verifying
the cmsg structures by inspecting the *next* cmsg header and using its
length to see if there is enough space in the buffer. Since we're
constructing the cmsg list, at this point there is no next cmsg yet,
therefore causing spurious failures of CMSG_NXTHDR.
Work around this by initialising the entire buffer first.
See 9c443ac455closes#1720
Change-Id: I00ce9bc5686ab0c1612aff51f1b3e75d8cbd8a69
Some gcc targets report ifunc as a supported attribute, while at the
same time actually trying to build the object fails with "ifunc not
supported on this target". Be more prejudicial with ifunc usage.
Change-Id: I5820338476938bf581d6d9e38fe0e6fd48f0b874
UDP packets sent in response to a UDP request should have the same
source address as the request's destination address.
This can be achieved with sockets bound to a specific address, but in
the case of ANY-bound sockets, we can use the PKTINFO mechanism to do
this.
Extend control_ng_process() to accept an extra socket address
corresponding to the local address to use. Extend the signature of the
callback function (to do the actual sending) accordingly.
Extend socket_sendiov() to be able to set the PKTINFO cmsg when sending
a packet.
Add socket_sendto_from() as a convenience wrapper.
Extend control_udp_incoming() to pass the address from
udp_buf->local_addr back to socket_sendiov().
Change-Id: Idd019fdcfd796098e7807427e6686d4b05de35d1
Looks like glib at some point started resetting an existing string array
that a config option is pointing to if that config option isn't present
at all. Work around this by explicitly resetting the pointed-to variable
to NULL, and then fixing up the contents on the second pass: either use
the setting from the config file or the one from the command line, and
free the other one.
Change-Id: Ida89d71e54fc30b4cce3277107e2185737f54a51