Merge branch '1.14.x-backports' into 'dbus-1.14'

Backport various fixes from 1.15.x branch

See merge request dbus/dbus!341
This commit is contained in:
Simon McVittie 2022-09-13 12:12:15 +00:00
commit ff363d1bb0
20 changed files with 290 additions and 125 deletions

View file

@ -28,6 +28,10 @@ include(MacrosAutotools)
autoinit(configure.ac)
autoversion(dbus)
# replacement for AC_C_BIGENDIAN
include (TestBigEndian)
test_big_endian(WORDS_BIGENDIAN)
if(EXISTS ${CMAKE_SOURCE_DIR}/config.h.in)
autoheaderchecks(${CMAKE_SOURCE_DIR}/config.h.in ${CMAKE_SOURCE_DIR}/cmake/ConfigureChecks.cmake ${CMAKE_SOURCE_DIR}/cmake/config.h.cmake)
else()
@ -140,9 +144,13 @@ option(DBUS_DISABLE_ASSERT "Disable assertion checking" OFF)
option(DBUS_ENABLE_STATS "enable bus daemon usage statistics" OFF)
option(ENABLE_TRADITIONAL_ACTIVATION "Enable traditional activation (without using systemd)" ON)
find_package(PkgConfig)
if(DBUS_LINUX)
add_auto_option(ENABLE_SYSTEMD "build with systemd at_console support" AUTO)
include(FindPkgConfig)
if (NOT PKG_CONFIG_FOUND)
message(SEND_ERROR "pkg-config not found, this is required on Linux systems")
endif()
pkg_check_modules(SYSTEMD libsystemd>=209)
if(NOT SYSTEMD_FOUND)
pkg_check_modules(SYSTEMD libsystemd-login>=32 libsystemd-daemon>=32 libsystemd-journal>=32)
@ -373,8 +381,13 @@ endif()
if(UNIX AND NOT DBUS_DISABLE_ASSERT)
# required for backtrace
string(APPEND CMAKE_C_FLAGS_DEBUG " -Wl,--export-dynamic")
string(APPEND CMAKE_CXX_FLAGS_DEBUG " -Wl,--export-dynamic")
if (APPLE)
string(APPEND CMAKE_SHARED_LINKER_FLAGS " -Wl,-export_dynamic")
string(APPEND CMAKE_EXE_LINKER_FLAGS " -Wl,-export_dynamic")
else()
string(APPEND CMAKE_SHARED_LINKER_FLAGS " -Wl,--export-dynamic")
string(APPEND CMAKE_EXE_LINKER_FLAGS " -Wl,--export-dynamic")
endif()
set(DBUS_BUILT_R_DYNAMIC 1)
endif()
@ -566,8 +579,14 @@ if(MSVC_IDE)
endif()
#### Find socket directories
set(DBUS_SESSION_SOCKET_DIR "" CACHE STRING "Default directory for session socket")
if(UNIX)
if(NOT $ENV{TMPDIR} STREQUAL "")
if (CMAKE_CROSSCOMPILING)
if (NOT DBUS_SESSION_SOCKET_DIR)
message(FATAL_ERROR "cannot autodetect session socket directory "
"when crosscompiling, pass -DDBUS_SESSION_SOCKET_DIR=...")
endif()
elseif(NOT $ENV{TMPDIR} STREQUAL "")
set(DBUS_SESSION_SOCKET_DIR $ENV{TMPDIR})
elseif(NOT $ENV{TEMP} STREQUAL "")
set(DBUS_SESSION_SOCKET_DIR $ENV{TEMP})
@ -606,10 +625,8 @@ if(WIN32)
else(WIN32)
set(DBUS_SESSION_BUS_LISTEN_ADDRESS "unix:tmpdir=${DBUS_SESSION_SOCKET_DIR}" CACHE STRING "session bus default listening address")
set(DBUS_SESSION_BUS_CONNECT_ADDRESS "autolaunch:" CACHE STRING "session bus fallback address for clients")
set(sysconfdir "")
set(configdir ${sysconfdir}/dbus-1 )
set(DBUS_SYSTEM_CONFIG_FILE ${configdir}/system.conf)
set(DBUS_SESSION_CONFIG_FILE ${configdir}/session.conf)
set(DBUS_SYSTEM_CONFIG_FILE ${DBUS_DATADIR}/dbus-1/system.conf)
set(DBUS_SESSION_CONFIG_FILE ${DBUS_DATADIR}/dbus-1/session.conf)
set(DBUS_USER "messagebus")
set(DBUS_TEST_USER "nobody")
# For best security, assume that all non-Windows platforms can do
@ -623,11 +640,6 @@ set(DBUS_DAEMON_NAME "dbus-daemon" CACHE STRING "The name of the dbus daemon exe
#include(ConfigureChecks.cmake)
# only defined but expected as boolean
if(DEFINED HAVE_DECL_ENVIRON)
set(HAVE_DECL_ENVIRON 1)
endif()
# compiler definitions
add_definitions(-DHAVE_CONFIG_H)
add_definitions(${DBUS_BUS_CFLAGS})

View file

@ -270,86 +270,7 @@ This section is not directly relevant to infrequent contributors.
### Releasing
To make a release of D-Bus, do the following:
- check out a fresh copy from Git
- verify that the libtool versioning/library soname is
changed if it needs to be, or not changed if not
- update the file NEWS based on the git history
- verify that the version number of dbus-specification.xml is
changed if it needs to be; if changes have been made, update the
release date in that file
- update the AUTHORS file with "make update-authors" if necessary
- the version number should have major.minor.micro, even
if micro is 0, i.e. "1.0.0" and "1.2.0" not "1.0"/"1.2"; the micro
version should be even for releases, and odd for intermediate snapshots
- "make distcheck" (DO NOT just "make dist" - pass the check!)
- if make distcheck fails, fix it.
- once distcheck succeeds, "git commit -a". This is the version
of the tree that corresponds exactly to the released tarball.
- tag the tree with "git tag -s -m 'Released X.Y.Z' dbus-X.Y.Z"
where X.Y.Z is the version of the release. If you can't sign
then simply created an unsigned annotated tag:
"git tag -a -m 'Released X.Y.Z' dbus-X.Y.Z".
- bump the version number up in configure.ac (so the micro version is odd),
and commit it. Make sure you do this *after* tagging the previous
release! The idea is that git has a newer version number
than anything released. Similarly, bump the version number of
dbus-specification.xml and set the release date to "(not finalized)".
- merge the branch you've released to the chronologically-later
branch (usually "master"). You'll probably have to fix a merge
conflict in configure.ac (the version number).
- push your changes and the tag to the central repository with
git push origin master dbus-X.Y dbus-X.Y.Z
- scp your tarball to freedesktop.org server and copy it to
dbus.freedesktop.org:/srv/dbus.freedesktop.org/www/releases/dbus/dbus-X.Y.Z.tar.xz.
This should be possible if you're in group "dbus"
- Update the online documentation with `make -C doc maintainer-upload-docs`.
- update the wiki page http://www.freedesktop.org/Software/dbus by
adding the new release under the Download heading. Then, cut the
link and changelog for the previous that was there.
- post to dbus@lists.freedesktop.org announcing the release.
### Making a ".0" stable release
We create a branch for each stable release. The branch name should be
dbus-X.Y which is a branch that has releases versioned X.Y.Z;
changes on a stable branch should be limited to significant bug fixes.
Because we won't make minor changes like keeping up with the latest
deprecations on a stable branch, stable branches should turn off the
gcc warning for deprecated declarations (e.g. see commit 4ebb275ab7).
Be extra-careful not to merge master (or any branch based on master) into a
stable branch.
To branch:
git branch dbus-X.Y
and upload the branch tag to the server:
git push origin dbus-X.Y
To develop in this branch:
git checkout dbus-X.Y
See maint/release-checklist.md.
### Code reviews

View file

@ -1,4 +1,4 @@
D-Bus is licensed to you under your choice of the Academic Free
dbus is licensed to you under your choice of the Academic Free
License version 2.1, or the GNU General Public License version 2
(or, at your option any later version).

53
NEWS
View file

@ -3,10 +3,55 @@ dbus 1.14.2 (UNRELEASED)
Fixes:
• When building with Autotools, don't treat --with-x or --with-x=yes
as a request to disable X11, fixing a regression in 1.13.20.
Instead, require X11 libraries and fail if they cannot be detected.
(dbus!263, Lars Wendler)
• Fix build failure on FreeBSD (dbus!277, Alex Richardson)
• Fix build failure on macOS with launchd enabled
(dbus!287, Dawid Wróbel)
• Preserve errno on failure to open /proc/self/oom_score_adj
(dbus!285, Gentoo#834725; Mike Gilbert)
• On Linux, don't log warnings if oom_score_adj is read-only but does not
need to be changed (dbus!291, Simon McVittie)
• Slightly improve error-handling for inotify
(dbus!235, Simon McVittie)
• Don't crash if dbus-daemon is asked to watch more than 128 directories
for changes (dbus!302, Jan Tojnar)
• Autotools build system fixes:
· Don't treat --with-x or --with-x=yes as a request to disable X11,
fixing a regression in 1.13.20. Instead, require X11 libraries and
fail if they cannot be detected. (dbus!263, Lars Wendler)
· When a CMake project uses an Autotools-built libdbus in a
non-standard prefix, find dbus-arch-deps.h successfully
(dbus#314, Simon McVittie)
· Don't include generated XML catalog in source releases
(dbus!317, Jan Tojnar)
· Improve robustness of detecting gcc __sync atomic builtins
(dbus!320, Alex Richardson)
• CMake build system fixes:
· Detect endianness correctly, fixing interoperability with other D-Bus
implementations on big-endian systems (dbus#375, Ralf Habacker)
· When building for Unix, install session and system bus setup
in the intended locations
(dbus!267, dbus!297; Ralf Habacker, Alex Richardson)
· Detect setresuid() and getresuid() (dbus!319, Alex Richardson)
· Detect backtrace() on FreeBSD (dbus!281, Alex Richardson)
· Don't include headers from parent directory (dbus!282, Alex Richardson)
· Distinguish between host and target TMPDIR when cross-compiling
(dbus!279, Alex Richardson)
· Fix detection of atomic operations (dbus!306, Alex Richardson)
Tests and CI enhancements:
• On Unix, skip tests that switch uid if run in a container that is
unable to do so, instead of failing (dbus#407, Simon McVittie)
• Use the latest MSYS2 packages for CI
(Ralf Habacker, Simon McVittie)
dbus 1.14.0 (2022-02-28)
========================

View file

@ -179,6 +179,9 @@ DBUS_SESSION_BUS_LISTEN_ADDRESS:STRING=autolaunch:
// session bus fallback address for clients
DBUS_SESSION_BUS_CONNECT_ADDRESS:STRING=autolaunch:
//Default directory for session socket
DBUS_SESSION_SOCKET_DIR:STRING=/tmp
// system bus default address (only useful on Unix)
DBUS_SYSTEM_BUS_DEFAULT_ADDRESS:STRING=unix:path=/var/run/dbus/system_bus_socket

View file

@ -85,7 +85,6 @@ endif()
include_directories(
${CMAKE_BINARY_DIR}
${CMAKE_SOURCE_DIR}/..
${EXPAT_INCLUDE_DIR}
)

View file

@ -348,7 +348,7 @@ exec_for_correct_user (char *exec, char *user, DBusError *error)
/* Resetting the OOM score adjustment is best-effort, so we don't
* treat a failure to do so as fatal. */
if (!_dbus_reset_oom_score_adj (&error_str))
_dbus_warn ("%s: %s", error_str, strerror (errno));
_dbus_log (DBUS_SYSTEM_LOG_WARNING, "%s: %s", error_str, strerror (errno));
if (!switch_user (user, error))
return FALSE;

View file

@ -108,12 +108,17 @@ _set_watched_dirs_internal (DBusList **directories)
i = 0;
link = _dbus_list_get_first_link (directories);
while (link != NULL)
while (link != NULL && i < MAX_DIRS_TO_WATCH)
{
new_dirs[i++] = (char *)link->data;
link = _dbus_list_get_next_link (directories, link);
}
if (link != NULL)
{
_dbus_warn ("Too many directories to watch them all, only watching first %d.", MAX_DIRS_TO_WATCH);
}
/* Look for directories in both the old and new sets, if
* we find one, move its data into the new set.
*/
@ -234,9 +239,9 @@ _init_inotify (BusContext *context)
#else
inotify_fd = inotify_init ();
#endif
if (inotify_fd <= 0)
if (inotify_fd < 0)
{
_dbus_warn ("Cannot initialize inotify");
_dbus_warn ("Cannot initialize inotify: %s", _dbus_strerror (errno));
goto out;
}

View file

@ -51,7 +51,7 @@ static DBusWatch *watch = NULL;
static DBusLoop *loop = NULL;
static dbus_bool_t
_handle_kqueue_watch (DBusWatch *watch, unsigned int flags, void *data)
_handle_kqueue_watch (DBusWatch *_watch, unsigned int flags, void *data)
{
struct kevent ev;
struct timespec nullts = { 0, 0 };
@ -73,6 +73,7 @@ _handle_kqueue_watch (DBusWatch *watch, unsigned int flags, void *data)
else if (res < 0 && errno == EBADF)
{
kq = -1;
_dbus_assert (watch == _watch);
if (watch != NULL)
{
_dbus_loop_remove_watch (loop, watch);
@ -218,12 +219,17 @@ bus_set_watched_dirs (BusContext *context, DBusList **directories)
i = 0;
link = _dbus_list_get_first_link (directories);
while (link != NULL)
while (link != NULL && i < MAX_DIRS_TO_WATCH)
{
new_dirs[i++] = (char *)link->data;
link = _dbus_list_get_next_link (directories, link);
}
if (link != NULL)
{
_dbus_warn ("Too many directories to watch them all, only watching first %d.", MAX_DIRS_TO_WATCH);
}
/* Look for directories in both the old and new sets, if
* we find one, move its data into the new set.
*/

View file

@ -34,7 +34,6 @@ check_include_file(sys/stat.h HAVE_SYS_STAT_H)
check_include_file(sys/types.h HAVE_SYS_TYPES_H)
check_include_file(sys/uio.h HAVE_SYS_UIO_H)
check_include_file(sys/prctl.h HAVE_SYS_PRCTL_H)
check_include_file(sys/syslimits.h HAVE_SYS_SYSLIMITS_H) # dbus-sysdeps-unix.c
check_include_file(sys/time.h HAVE_SYS_TIME_H)# dbus-sysdeps-win.c
check_include_file(sys/wait.h HAVE_SYS_WAIT_H)# dbus-sysdeps-win.c
check_include_file(time.h HAVE_TIME_H) # dbus-sysdeps-win.c
@ -42,7 +41,9 @@ check_include_file(ws2tcpip.h HAVE_WS2TCPIP_H)# dbus-sysdeps-win.c
check_include_file(unistd.h HAVE_UNISTD_H) # dbus-sysdeps-util-win.c
check_include_file(sys/inotify.h DBUS_BUS_ENABLE_INOTIFY)
check_symbol_exists(backtrace "execinfo.h" HAVE_BACKTRACE) # dbus-sysdeps.c, dbus-sysdeps-win.c
find_package(Backtrace) # dbus-sysdeps.c, dbus-sysdeps-win.c
set(HAVE_BACKTRACE ${Backtrace_FOUND})
check_symbol_exists(getgrouplist "grp.h" HAVE_GETGROUPLIST) # dbus-sysdeps.c
check_symbol_exists(getpeerucred "ucred.h" HAVE_GETPEERUCRED) # dbus-sysdeps.c, dbus-sysdeps-win.c
check_symbol_exists(nanosleep "time.h" HAVE_NANOSLEEP) # dbus-sysdeps.c
@ -74,6 +75,8 @@ check_symbol_exists(vsnprintf "stdio.h" HAVE_VSNPRINTF)
check_symbol_exists(MSG_NOSIGNAL "sys/socket.h" HAVE_DECL_MSG_NOSIGNAL)
check_symbol_exists(environ "unistd.h" HAVE_DECL_ENVIRON)
check_symbol_exists(LOG_PERROR "syslog.h" HAVE_DECL_LOG_PERROR)
check_symbol_exists(setresuid "unistd.h" HAVE_SETRESUID)
check_symbol_exists(getresuid "unistd.h" HAVE_GETRESUID)
check_struct_member(cmsgcred cmcred_pid "sys/types.h;sys/socket.h" HAVE_CMSGCRED) # dbus-sysdeps.c
@ -135,7 +138,7 @@ CHECK_C_SOURCE_COMPILES("
int main() {
int a = 4;
int b = __sync_sub_and_fetch(&a, 4);
exit(b);
return b;
}
" DBUS_USE_SYNC)

View file

@ -9,6 +9,7 @@
# to a target with target_link_libraries
get_filename_component(DBus1_PKGCONFIG_DIR "${CMAKE_CURRENT_LIST_DIR}/../../pkgconfig" ABSOLUTE)
get_filename_component(DBus1_NEARBY_ARCH_INCLUDE_DIR "${CMAKE_CURRENT_LIST_DIR}/../../dbus-1.0/include" ABSOLUTE)
find_package(PkgConfig)
if(DEFINED ENV{PKG_CONFIG_DIR})
set(_dbus_pkgconfig_dir "$ENV{PKG_CONFIG_DIR}")
@ -50,6 +51,9 @@ set(DBus1_DEFINITIONS ${PC_DBUS1_CFLAGS_OTHER})
find_path(DBus1_INCLUDE_DIR dbus/dbus.h
HINTS ${PC_DBUS1_INCLUDEDIR} ${PC_DBUS1_INCLUDE_DIRS}
PATH_SUFFIXES dbus-1.0)
find_path(DBus1_ARCH_INCLUDE_DIR dbus/dbus-arch-deps.h
PATHS ${DBus1_NEARBY_ARCH_INCLUDE_DIR}
NO_DEFAULT_PATH)
find_path(DBus1_ARCH_INCLUDE_DIR dbus/dbus-arch-deps.h
HINTS ${PC_DBUS1_INCLUDE_DIRS}
PATH_SUFFIXES dbus-1.0)

View file

@ -21,6 +21,9 @@
* should be placed in this file
*/
/* AC_C_BIGENDIAN */
#cmakedefine WORDS_BIGENDIAN
/* Opt-in to modern APIs and thread-safety for Solaris. In the Autotools
* build system we do the equivalent of this by appending to CFLAGS
* in configure.ac */
@ -148,9 +151,6 @@
#cmakedefine HAVE_SYS_RESOURCE_H 1
#cmakedefine HAVE_SYS_STAT_H 1
/* Define to 1 if you have sys/syslimits.h */
#cmakedefine HAVE_SYS_SYSLIMITS_H 1
/* Define to 1 if you have sys/time.h */
#cmakedefine HAVE_SYS_TIME_H 1
@ -243,10 +243,12 @@
#cmakedefine DBUS_HAVE_LINUX_EPOLL 1
/* Use the gcc __sync extension */
#cmakedefine DBUS_USE_SYNC 1
#cmakedefine01 DBUS_USE_SYNC
#cmakedefine HAVE_VASPRINTF 1
#cmakedefine HAVE_VSNPRINTF 1
#cmakedefine HAVE_SETRESUID 1
#cmakedefine HAVE_GETRESUID 1
/* whether -export-dynamic was passed to libtool */
#cmakedefine DBUS_BUILT_R_DYNAMIC 1

View file

@ -424,7 +424,6 @@ stdint.h
sys/prctl.h
sys/random.h
sys/resource.h
sys/syslimits.h
sys/time.h
unistd.h
ws2tcpip.h
@ -613,7 +612,7 @@ AS_IF([test -n "$dbus_va_copy_func"],
AC_CACHE_CHECK([whether $CC knows __sync_sub_and_fetch()],
dbus_cv_sync_sub_and_fetch,
[AC_LINK_IFELSE([
AC_LANG_PROGRAM([[]], [[int a = 4; int b = __sync_sub_and_fetch(&a, 4); exit(b); ]])],
AC_LANG_PROGRAM([[]], [[int a = 4; int b = __sync_sub_and_fetch(&a, 4); return b; ]])],
[dbus_cv_sync_sub_and_fetch=yes],
[dbus_cv_sync_sub_and_fetch=no])
])

View file

@ -292,6 +292,10 @@ else(WIN32)
if(LIBSOCKET)
target_link_libraries(dbus-1 ${LIBSOCKET})
endif()
if (HAVE_BACKTRACE)
target_link_libraries(dbus-1 ${Backtrace_LIBRARY})
target_include_directories(dbus-1 PRIVATE ${Backtrace_INCLUDE_DIR})
endif()
endif()
target_include_directories(dbus-1 INTERFACE $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}/dbus-1.0>;$<INSTALL_INTERFACE:${CMAKE_INSTALL_LIBDIR}/dbus-1.0/include>)

View file

@ -39,6 +39,7 @@
#ifdef DBUS_ENABLE_LAUNCHD
#include <launch.h>
#include <errno.h>
#include <unistd.h>
#include "dbus-misc.h"
#include "dbus-server-socket.h"

View file

@ -43,6 +43,7 @@
#include <stdio.h>
#include <errno.h>
#include <fcntl.h>
#include <limits.h>
#include <sys/stat.h>
#ifdef HAVE_SYS_RESOURCE_H
#include <sys/resource.h>
@ -56,10 +57,6 @@
#include <sys/prctl.h>
#endif
#ifdef HAVE_SYS_SYSLIMITS_H
#include <sys/syslimits.h>
#endif
#ifdef HAVE_SYSTEMD
#include <systemd/sd-daemon.h>
#endif
@ -1627,13 +1624,14 @@ _dbus_reset_oom_score_adj (const char **error_str_p)
const char *error_str = NULL;
#ifdef O_CLOEXEC
fd = open ("/proc/self/oom_score_adj", O_RDWR | O_CLOEXEC);
fd = open ("/proc/self/oom_score_adj", O_RDONLY | O_CLOEXEC);
#endif
if (fd < 0)
{
fd = open ("/proc/self/oom_score_adj", O_RDWR);
_dbus_fd_set_close_on_exec (fd);
fd = open ("/proc/self/oom_score_adj", O_RDONLY);
if (fd >= 0)
_dbus_fd_set_close_on_exec (fd);
}
if (fd >= 0)
@ -1679,6 +1677,26 @@ _dbus_reset_oom_score_adj (const char **error_str_p)
goto out;
}
close (fd);
#ifdef O_CLOEXEC
fd = open ("/proc/self/oom_score_adj", O_WRONLY | O_CLOEXEC);
if (fd < 0)
#endif
{
fd = open ("/proc/self/oom_score_adj", O_WRONLY);
if (fd >= 0)
_dbus_fd_set_close_on_exec (fd);
}
if (fd < 0)
{
ret = FALSE;
error_str = "open(/proc/self/oom_score_adj) for writing";
saved_errno = errno;
goto out;
}
if (pwrite (fd, "0", sizeof (char), 0) < 0)
{
ret = FALSE;
@ -1699,7 +1717,7 @@ _dbus_reset_oom_score_adj (const char **error_str_p)
else
{
ret = FALSE;
error_str = "open(/proc/self/oom_score_adj)";
error_str = "open(/proc/self/oom_score_adj) for reading";
saved_errno = errno;
goto out;
}

View file

@ -30,7 +30,7 @@ xmlcatalogdir = $(dtddir)
catalog.xml: catalog.xml.in
$(SED) "s|@DBUS_DTD_DIR@|$(dtddir)|" $< >$@
dist_xmlcatalog_DATA = \
xmlcatalog_DATA = \
catalog.xml
dist_doc_DATA = system-activation.txt
@ -211,6 +211,7 @@ endif
CLEANFILES = \
$(man1_MANS) \
$(MAN_XML_FILES) \
$(xmlcatalog_DATA) \
$(XMLTO_HTML) \
$(YELP_HTML) \
$(YELP_STATIC_HTML) \

View file

@ -0,0 +1,82 @@
# dbus release checklist
To make a release of D-Bus, do the following:
- check out a fresh copy from Git
- verify that the libtool versioning/library soname is
changed if it needs to be, or not changed if not
- update the file NEWS based on the git history
- verify that the version number of dbus-specification.xml is
changed if it needs to be; if changes have been made, update the
release date in that file
- update the AUTHORS file with "make update-authors" if necessary
- the version number should have major.minor.micro, even
if micro is 0, i.e. "1.0.0" and "1.2.0" not "1.0"/"1.2"; the micro
version should be even for releases, and odd for intermediate snapshots
- "make distcheck" (DO NOT just "make dist" - pass the check!)
- if make distcheck fails, fix it.
- once distcheck succeeds, "git commit -a". This is the version
of the tree that corresponds exactly to the released tarball.
- tag the tree with "git tag -s -m 'Released X.Y.Z' dbus-X.Y.Z"
where X.Y.Z is the version of the release. If you can't sign
then simply created an unsigned annotated tag:
"git tag -a -m 'Released X.Y.Z' dbus-X.Y.Z".
- bump the version number up in configure.ac (so the micro version is odd),
and commit it. Make sure you do this *after* tagging the previous
release! The idea is that git has a newer version number
than anything released. Similarly, bump the version number of
dbus-specification.xml and set the release date to "(not finalized)".
- merge the branch you've released to the chronologically-later
branch (usually "master"). You'll probably have to fix a merge
conflict in configure.ac (the version number).
- push your changes and the tag to the central repository with
git push origin master dbus-X.Y dbus-X.Y.Z
- scp your tarball to freedesktop.org server and copy it to
dbus.freedesktop.org:/srv/dbus.freedesktop.org/www/releases/dbus/dbus-X.Y.Z.tar.xz.
This should be possible if you're in group "dbus"
- Update the online documentation with `make -C doc maintainer-upload-docs`.
- update the wiki page http://www.freedesktop.org/Software/dbus by
adding the new release under the Download heading. Then, cut the
link and changelog for the previous that was there.
- post to dbus@lists.freedesktop.org announcing the release.
## Making a ".0" stable release
We create a branch for each stable release. The branch name should be
dbus-X.Y which is a branch that has releases versioned X.Y.Z;
changes on a stable branch should be limited to significant bug fixes.
Because we won't make minor changes like keeping up with the latest
deprecations on a stable branch, stable branches should turn off the
gcc warning for deprecated declarations (e.g. see commit 4ebb275ab7).
Be extra-careful not to merge master (or any branch based on master) into a
stable branch.
To branch:
git branch dbus-X.Y
and upload the branch tag to the server:
git push origin dbus-X.Y
To develop in this branch:
git checkout dbus-X.Y

View file

@ -40,6 +40,7 @@
# include <unistd.h>
# include <sys/socket.h>
# include <sys/types.h>
# include <sys/wait.h>
# include <pwd.h>
#endif
@ -66,6 +67,61 @@ _test_assert_no_error (const DBusError *e,
}
#ifdef DBUS_UNIX
static gboolean
can_become_user_or_skip (uid_t uid)
{
gchar *message;
pid_t child_pid;
pid_t pid;
int wstatus;
/* We can't switch to the uid without affecting the whole process,
* which we don't necessarily want to do, so try it in a child process. */
child_pid = fork ();
if (child_pid < 0)
g_error ("fork: %s", g_strerror (errno));
if (child_pid == 0)
{
/* Child process: try to become uid, exit 0 on success, exit with
* status = errno on failure */
if (setuid (uid) != 0)
{
/* make sure we report failure even if errno is wrong */
if (errno == 0)
errno = ENODATA;
_exit (errno);
}
/* success */
_exit (0);
}
/* Parent process: wait for child and report result */
pid = waitpid (child_pid, &wstatus, 0);
g_assert_cmpuint (child_pid, ==, pid);
if (WIFEXITED (wstatus) && WEXITSTATUS (wstatus) == 0)
return TRUE;
if (WIFEXITED (wstatus))
message = g_strdup_printf ("unable to become uid %lu: %s",
(unsigned long) uid,
g_strerror (WEXITSTATUS (wstatus)));
else
message = g_strdup_printf ("unable to become uid %lu: unknown wait status %d",
(unsigned long) uid,
wstatus);
g_test_skip (message);
g_free (message);
return FALSE;
}
static void
child_setup (gpointer user_data)
{
@ -141,6 +197,9 @@ spawn_dbus_daemon (const gchar *binary,
return NULL;
}
if (!can_become_user_or_skip (pwd->pw_uid))
return NULL;
if (user == TEST_USER_ROOT_DROP_TO_MESSAGEBUS)
{
/* Let the dbus-daemon start as root and drop privileges
@ -163,6 +222,9 @@ spawn_dbus_daemon (const gchar *binary,
return NULL;
}
if (!can_become_user_or_skip (pwd->pw_uid))
return NULL;
break;
case TEST_USER_ME:

View file

@ -846,9 +846,7 @@ main (int argc, char **argv)
dbus_bool_t user_bus_supported = FALSE;
DBusString user_bus;
const char *error_str;
#ifdef DBUS_BUILD_X11
DBusError error = DBUS_ERROR_INIT;
#endif
exit_with_session = FALSE;
config_file = NULL;