Simon McVittie [Wed, 27 Jul 2011 14:59:53 +0000 (15:59 +0100)]
cmake: always enable GNU and recent-POSIX extensions, like autoconf does
If the C library is (e)glibc, this allows use of POSIX, BSD, SVID, GNU,
etc., extensions to ISO C, regardless of using -ansi or not.
Not doing this broke the cmake build on Linux since commit 18b08180,
which added AC_USE_SYSTEM_EXTENSIONS to configure.ac (and removed
_GNU_SOURCE from files that use it) without also updating the cmake
build system. SO_PEERCRED is defined unconditionally, but struct ucred
is considered to be a GNU extension, so can't be used under _GNU_SOURCE.
Bug: https://bugs.freedesktop.org/show_bug.cgi?id=29228 Reviewed-by: Will Thompson <will.thompson@collabora.co.uk>
activation: add /lib/dbus-1/system-services to the search path for services
In order to allow D-Bus usage during early boot (where /usr is not
accessible) also search for bus activation files in
/lib/dbus-1/system-services/. This is only a first step in the right
direction, before we really can boot without /usr we'd need to move all
current activation files (or possibly replace
/usr/dbus-1/system-services to a symlink to
/lib/dbus-1/system-services).
Simon McVittie [Tue, 14 Jun 2011 09:10:24 +0000 (10:10 +0100)]
man pages: replace all unescaped hyphen/minus characters with \-
In a man page, "-" officially means a typographical (Unicode) hyphen,
which frequently breaks the ability to copy and paste code examples from
a man page. "\-" means the ASCII hyphen/minus character. See
<http://lintian.debian.org/tags/hyphen-used-as-minus-sign.html> for
more details.
Rather than trying to distinguish between hyphens, em-dashes and
hyphen/minus, I just replaced all ambiguous hyphens with \- by applying
this vim command repeatedly until it didn't find anything:
%s/\(^\|[^\\]\)-/\1\\-/g
Bug: https://bugs.freedesktop.org/show_bug.cgi?id=38284 Reviewed-by: Lennart Poettering <lennart@poettering.net>
Simon McVittie [Wed, 15 Jun 2011 11:43:15 +0000 (12:43 +0100)]
Use EXEEXT when running tests from another directory, and skip bus-test-launch-helper on non-Unix
This is necessary when cross-compiling from Linux to mingw32 and running
the resulting tests under Wine. (This partially works! Some tests fail,
though.)
Reviewed-by: Will Thompson <will.thompson@collabora.co.uk>
Simon McVittie [Mon, 6 Jun 2011 15:12:05 +0000 (16:12 +0100)]
Build docs after running tests, and remove redundant DIST_SUBDIRS
If DIST_SUBDIRS isn't set, it defaults to SUBDIRS, so it's just noise.
Running tests before building documentation is an easy way to speed up the
hack/make check/fix cycle, by not wasting time rebuilding the
documentation (which is often slow) until all the tests compile and pass.
https://bugs.freedesktop.org/show_bug.cgi?id=34405 Reviewed-by: Will Thompson <will.thompson@collabora.co.uk>
Simon McVittie [Wed, 22 Jun 2011 10:59:32 +0000 (11:59 +0100)]
_dbus_connect_tcp_socket_with_nonce: don't create an extra fd (which is then leaked)
This block should have been deleted in 2007, when IPv6 support was added:
previously, the fd allocated at the beginning of the function was used
for connect(), but for IPv6 support, the socket() call has to be inside
the loop over getaddrinfo() results so its address family can be changed.
DBusConnection: use DBUS_ERROR_OBJECT_PATH_IN_USE instead of DBUS_ERROR_ADDRESS_IN_USE
While registering an object path the possible error is
DBUS_ERROR_OBJECT_PATH_IN_USE, not DBUS_ERROR_ADDRESS_IN_USE (the error
is set by _dbus_object_tree_register()).
Signed-off-by: Jiřà Klimeš <jklimes@redhat.com> Reviewed-by: Simon McVittie <simon.mcvittie@collabora.co.uk>
Bug: https://bugs.freedesktop.org/show_bug.cgi?id=38874
Simon McVittie [Fri, 10 Jun 2011 16:38:14 +0000 (17:38 +0100)]
Add and use DBUS_TIMEOUT_INFINITE and DBUS_TIMEOUT_USE_DEFAULT
The documentation claimed that INT_MAX (whatever that means) meant the
default, but the value that has actually always been checked for is
0x7fffffff (aka INT32_MAX on the competent platforms we sadly don't
restrict our portability to), so we should use that. (In practice D-Bus
probably never worked on platforms where int wasn't 32 bits, though.)
Reviewed-by: Will Thompson <will.thompson@collabora.co.uk>
Bug: https://bugs.freedesktop.org/show_bug.cgi?id=34570
Simon McVittie [Tue, 22 Feb 2011 13:43:18 +0000 (13:43 +0000)]
Test nonce-tcp transport
Regression test for https://bugs.freedesktop.org/show_bug.cgi?id=34569
Reviewed-by: David Zeuthen <davidz@redhat.com> Reviewed-by: Will Thompson <will.thompson@collabora.co.uk>
Bug: https://bugs.freedesktop.org/show_bug.cgi?id=34570
Simon McVittie [Tue, 22 Feb 2011 11:43:11 +0000 (11:43 +0000)]
Add support for building "modular" tests, which require GLib and dbus-glib
For the moment, the CMake build system only knows about the existing
"embedded tests"; make it define both symbols, though.
We use GLib because it has GTester (and life's too short to write yet another
JUnit clone), and dbus-glib for the main-loop integration only (see
fd.o #31515 for thoughts on incorporating just those two functions in a
separate library in the dbus tarball).
I'm not using DBusLoop for the main loop because I specifically don't
want to use non-public API or ABI of libdbus in the modular tests. If we make
sure they work against a shared libdbus, we can use them to test the
installed system, with "make installcheck".
Reviewed-by: Will Thompson <will.thompson@collabora.co.uk>
Bug: https://bugs.freedesktop.org/show_bug.cgi?id=34570
Simon McVittie [Fri, 10 Jun 2011 17:08:11 +0000 (18:08 +0100)]
Consistently use atomic operations for all access to DBusConnection refcount
Trying to mix atomic operations with locked non-atomic operations is
broken: the atomic ops aren't necessarily atomic with respect to the
locked non-atomic ops, and the non-atomic ops aren't protected by the
lock because the atomic ops can change the refcount behind their back.
In theory we could use the connection lock if atomic ops aren't supported
(making a per-connection lock cheaper than the global lock used to
implement atomic ops) *and* our mutexes are recursive (making it safe
against deadlocks)... but life's too short.
Bug: https://bugs.freedesktop.org/show_bug.cgi?id=38005 Tested-by: Will Manley <freedesktop williammanley net> Reviewed-by: Will Thompson <will.thompson@collabora.co.uk>
Simon McVittie [Tue, 7 Jun 2011 13:01:39 +0000 (14:01 +0100)]
bus: use ln -fs to enable dbus in systemd, not $(LN_S)
Using $(LN_S) is inappropriate because it could in theory mean either
ln -s, ln or cp -p depending on autoconf checks.
Not using -f breaks reinstallation directly from source (DESTDIR unset),
because the symlinks will already exist.
Because systemd isn't currently portable to non-Linux, let alone
non-SUS-compliant systems, it seems safe to assume that ln -fs behaves
as specified by SUS if systemd was found.
Bug: https://bugs.freedesktop.org/show_bug.cgi?id=37870 Reviewed-by: Colin Walters <walters@verbum.org>
Simon McVittie [Mon, 6 Jun 2011 08:59:37 +0000 (09:59 +0100)]
Remove support for -Wl,--gc-sections altogether
Packagers should only enable this flag if they have confirmed that it
actually works on their toolchain (it's the sort of rarely used feature
that frequently regresses on obscure architectures/OSs without anyone
noticing), and also confirmed that it is actually a significant size win
for their configuration.
Bug: https://bugs.freedesktop.org/show_bug.cgi?id=33466 Reviewed-by: Colin Walters <walters@verbum.org>
Simon McVittie [Tue, 15 Mar 2011 15:42:56 +0000 (15:42 +0000)]
process_config_first_time_only: initialize syslog as intended.
On Linux, we previously called openlog() (with different options!) while
initializing SELinux; leave SELinux messages as LOG_USER|LOG_INFO in case
anyone was relying on that, but let the rest of our log messages come
out as LOG_DAEMON.
Also enable LOG_PERROR (copy syslog messages to stderr) unconditionally;
we can make this an autoconf check if anyone's pet Unix doesn't have
LOG_PERROR.
Bug: https://bugs.freedesktop.org/show_bug.cgi?id=35358 Reviewed-by: Colin Walters <walters@verbum.org>
Simon McVittie [Fri, 25 Feb 2011 12:49:54 +0000 (12:49 +0000)]
Check for X even if X11 autolaunching is disabled
DBUS_ENABLE_X11_AUTOLAUNCH obviously requires DBUS_BUILD_X11. However,
the converse is not true.
If DBUS_BUILD_X11 is defined, dbus-launch will be able to connect to
the X server to determine when the session ends; most distributors will
want this, but it can be disabled with the standard Autoconf option
--without-x.
If DBUS_ENABLE_X11_AUTOLAUNCH is *also* defined, dbus-launch and libdbus
will be willing to perform autolaunch. Again, most distributors will want
this, but it can be disabled with --disable-x11-autolaunch.
Bug: https://bugs.freedesktop.org/show_bug.cgi?id=19997 Reviewed-by: Colin Walters <walters@verbum.org>
Simon McVittie [Mon, 9 May 2011 17:49:54 +0000 (18:49 +0100)]
When checking for __sync_sub_and_fetch, don't underquote, to shut up recent autoconf
Without the correct number of levels of quoting, autoconf mistakenly
believes we didn't use AC_LANG_SOURCE where required. (In fact,
AC_LANG_PROGRAM calls AC_LANG_SOURCE.)
Bug: https://bugs.freedesktop.org/show_bug.cgi?id=19681 Reviewed-by: Colin Walters <walters@verbum.org>