f31522130f
Build system (5 gaps hardened): - COOKBOOK_OFFLINE defaults to true (fork-mode) - normalize_patch handles diff -ruN format - New 'repo validate-patches' command (25/25 relibc patches) - 14 patched Qt/Wayland/display recipes added to protected list - relibc archive regenerated with current patch chain Boot fixes (fixable): - Full ISO EFI partition: 16 MiB → 1 MiB (matches mini, BIOS hardcoded 2 MiB offset) - D-Bus system bus: absolute /usr/bin/dbus-daemon path (was skipped) - redbear-sessiond: absolute /usr/bin/redbear-sessiond path (was skipped) - daemon framework: silenced spurious INIT_NOTIFY warnings for oneshot_async services (P0-daemon-silence-init-notify.patch) - udev-shim: demoted INIT_NOTIFY warning to INFO (expected for oneshot_async) - relibc: comprehensive named semaphores (sem_open/close/unlink) replacing upstream todo!() stubs - greeterd: Wayland socket timeout 15s → 30s (compositor DRM wait) - greeter-ui: built and linked (header guard unification, sem_compat stubs removed) - mc: un-ignored in both configs, fixed glib/libiconv/pcre2 transitive deps - greeter config: removed stale keymapd dependency from display/greeter services - prefix toolchain: relibc headers synced, _RELIBC_STDLIB_H guard unified Unfixable (diagnosed, upstream): - i2c-hidd: abort on no-I2C-hardware (QEMU) — process::exit → relibc abort - kded6/greeter-ui: page fault 0x8 — Qt library null deref - Thread panics fd != -1 — Rust std library on Redox - DHCP timeout / eth0 MAC — QEMU user-mode networking - hwrngd/thermald — no hardware RNG/thermal in VM - live preload allocation — BIOS memory fragmentation, continues on demand
132 lines
4.2 KiB
Plaintext
132 lines
4.2 KiB
Plaintext
DBus Installation
|
|
=================
|
|
|
|
Quick start
|
|
===========
|
|
|
|
This branch of dbus can be built by using Meson or CMake.
|
|
The Meson build system is the recommended build system since version 1.16.0,
|
|
except when building on Windows, for which CMake is recommended (this
|
|
recommendation might change to Meson in future).
|
|
|
|
Meson only supports out-of-tree builds, and must be passed a directory to put
|
|
built and generated sources into. We'll call that directory "build" here. It's
|
|
recommended to create a separate build directory for each configuration you
|
|
might want to use.
|
|
|
|
Basic configuration is done with:
|
|
|
|
``` sh
|
|
meson build/
|
|
```
|
|
|
|
This will create the build directory. If any dependencies are missing, you can
|
|
install them, or try to remove the dependency with a Meson configuration option
|
|
(see below).
|
|
|
|
Older versions of dbus required Autotools or CMake, with Autotools
|
|
recommended for Unix systems and CMake recommended for Windows systems.
|
|
|
|
Configuration flags
|
|
===================
|
|
|
|
When using Meson, to review the options which Meson chose, run:
|
|
|
|
``` sh
|
|
meson configure build/
|
|
```
|
|
|
|
With additional arguments meson configure can be used to change options for a
|
|
previously configured build directory. All options passed to this command are in
|
|
the form `-D "option"="value"`. For example:
|
|
|
|
``` sh
|
|
meson configure build/ -Dprefix=/tmp/install
|
|
```
|
|
|
|
See `meson_options.txt` for details of dbus-specific options, and
|
|
<https://mesonbuild.com/Builtin-options.html> for details of generic
|
|
Meson options.
|
|
|
|
When using CMake, inspect README.cmake to see the possible
|
|
configuration options and environment variables.
|
|
|
|
Building
|
|
========
|
|
|
|
To build with meson, here is a quick guide:
|
|
|
|
``` sh
|
|
cd dbus
|
|
meson setup build/ && cd build/
|
|
meson compile
|
|
meson test
|
|
```
|
|
|
|
Full build instructions can be found on mesonbuild website:
|
|
https://mesonbuild.com/Running-Meson.html
|
|
|
|
Building with CMake
|
|
-------------------
|
|
|
|
The CMake equivalent is:
|
|
|
|
``` sh
|
|
cd <dbus-src-root>
|
|
cmake -G <makefile-generator-name> [-D<option>] -B dbus-build-dir
|
|
cmake --build <dbus-build-dir>
|
|
cmake --build <dbus-build-dir> -t check
|
|
```
|
|
|
|
The installation of the build with CMake is performed with:
|
|
|
|
``` sh
|
|
cmake --build <dbus-build-dir> -t install [DESTDIR=<install-dir>]
|
|
```
|
|
|
|
When using makefile generator `-t install/fast` can also be used,
|
|
which prevents rebuilding.
|
|
|
|
CMake will automatically determine whether to build some features
|
|
based on what tools and/or libraries are installed on the host system.
|
|
The default build behaviour can be overridden using the
|
|
-DENABLE_<XXX> arguments to cmake.
|
|
A typical scenario in which it is desirable to override automatic
|
|
detection, is during packaging of binary builds, where a predictable
|
|
dependancy chain is required. For more details on cmake installation,
|
|
consult http://www.cmake.org/cmake/help/help.html.
|
|
|
|
Building as a subproject
|
|
========================
|
|
|
|
libdbus can be built as a Meson subproject, allowing larger projects that
|
|
require it to default to a system copy if available but fall back to a
|
|
vendored or downloaded copy if necessary. When doing this, it is usually
|
|
best to disable the shared library, dbus-daemon, tools and tests, leaving
|
|
only a static library: please see test/use-as-subproject/meson.build for
|
|
sample code and suggested build options.
|
|
|
|
External software dependencies
|
|
==============================
|
|
|
|
Usually required:
|
|
|
|
- expat (not required if dbus-daemon is not built)
|
|
|
|
Optional:
|
|
|
|
- libapparmor (for AppArmor LSM integration on Linux)
|
|
- libaudit (for AppArmor/SELinux audit logging on Linux)
|
|
- libcap-ng (for capabilities management on Linux)
|
|
- libselinux (for SELinux LSM integration on Linux)
|
|
- libsystemd (for logging, socket activation and session tracking on Linux)
|
|
- libX11 (for X11 autolaunching on Unix platforms)
|
|
- doxygen (for API documentation)
|
|
- xsltproc (for Spec & other XML documentation)
|
|
- Docbook XSL stylesheets (for Spec & other XML documentation)
|
|
- ducktype (for additional documentation)
|
|
- qhelpgenerator (for additional documentation)
|
|
- yelp-build (for additional documentation)
|
|
- GLib (for improved test coverage)
|
|
- Python 3 (for improved test coverage)
|