summaryrefslogtreecommitdiff
path: root/sys-apps/dbus-broker
diff options
context:
space:
mode:
Diffstat (limited to 'sys-apps/dbus-broker')
-rw-r--r--sys-apps/dbus-broker/Manifest6
-rw-r--r--sys-apps/dbus-broker/dbus-broker-33-r1.ebuild (renamed from sys-apps/dbus-broker/dbus-broker-33.ebuild)5
-rw-r--r--sys-apps/dbus-broker/dbus-broker-33-r2.ebuild65
-rw-r--r--sys-apps/dbus-broker/dbus-broker-9999.ebuild9
-rw-r--r--sys-apps/dbus-broker/files/dbus-broker-33-strict-aliasing.patch207
5 files changed, 284 insertions, 8 deletions
diff --git a/sys-apps/dbus-broker/Manifest b/sys-apps/dbus-broker/Manifest
index 6b4bb0c15192..521c18ecda26 100644
--- a/sys-apps/dbus-broker/Manifest
+++ b/sys-apps/dbus-broker/Manifest
@@ -1,7 +1,9 @@
AUX dbus-broker-32-apparmor-libaudit.patch 766 BLAKE2B 4cbca2ae01f7e63048f303953a131ea2a927cc372abadd5bf2a23ef5f5618e4045ce587eb9983b3d6040a70c6f4fba10acfd775fdda62ef976b3899f141d9d36 SHA512 750f68436845765db7a7ff12b42045fb2e25f15c177e4f08ed17bd4919e60d856837a54145920c276a7dff772e32e6ce48e4f1eac803cb4cdf05fc9e49ed6c22
+AUX dbus-broker-33-strict-aliasing.patch 10322 BLAKE2B b89244315d09621876fcdc4b6d4fce34a351669ff5dcb136dd14e7b23156912a2aa32cadcb56491781cbeacc1f0e2aae3821fe5dc982639eebd5bcbc4936036a SHA512 2534520b8c54c74abc80c7834cbf89b7f36552097dff8be128747de197966d432fb33620090b60f98ad6e026d6ec8f5676a2f43ecf4a477154de582b4b683bc7
DIST dbus-broker-32.tar.xz 248196 BLAKE2B 511159673f0e3a2260e611b85b80719506e9eafe9d93d743891be664e4a79e3ade48f6ec047fa085c414087673290d6b958eec30d3b0d27048e2c1a1521d6c10 SHA512 aa23d058771f56e6378df0a17ac413813b6350b77e61128c0887f35a546f10534b1a6d598868e9f5c642244c3632a8ce5e315e6794305a56f5abbebd36bf822c
DIST dbus-broker-33.tar.xz 253172 BLAKE2B 2b1773999af5caa435acb9dca848c96863b8d738dee6c3542e492d031555c0251a07d371465cd5dc071c0198b33251bf8233f18ddaa7ae34dc9b5df938ca9298 SHA512 776684a5d19a6c25fc46dff19821014a32d967f8132385b86c5281f2d69192dce64b3ad92ae6a158d1d64753e89d918385a1a31f32811f54060504113f065baa
EBUILD dbus-broker-32.ebuild 1232 BLAKE2B 239580fb9a9e2b550051277c65ce6a5d7d936d81fe85a90310e318df57c4710fbe33083330c7cd581714055814399477caa4a4d187cac620850b3e09428a415d SHA512 38099a8a113cadfe8b3c24086dec2b58c015fd78ffe2cf4cc8121bcb9157d721593d7ae3c82a57fa2eaff7821b24c22d144a9758e5add144bbe0f8faa959c447
-EBUILD dbus-broker-33.ebuild 1245 BLAKE2B ddaf204835e5b0d6d1445c5d0a294153a4d9fa734fb2f233deca4e467b2cf5dc563b4c14da7a3f7f6f769ec62867a8dca4d1d671dfbebc9c398302b53fe59316 SHA512 f1360e8bd160320e57137684740983bcb3394b9b6bcfb39cf42f4db6ea39ffdf57688f1e8e20ead29e77789d9278af67983db982a9a5fb18e1650e8d2b41f627
-EBUILD dbus-broker-9999.ebuild 1248 BLAKE2B fcba83dd9ed174b6b76613651ff58806effc6711c41957d177cb0331a0c877ba8462665eb0d6deaf5f561a8ed5a7cc406d3515eb2773e549bcba898779267ab1 SHA512 eb161e460427ac6b8385b80c6fc9325400dc368f1d1e8ceb1407a12596d5a5469df8c2ee680461118b7d98958163b2183d491032749421fd9adb10c78a199a03
+EBUILD dbus-broker-33-r1.ebuild 1297 BLAKE2B bb3cd910bca3b692203185d5d142dad91ee441768f498608d5ba729024f21e081dfbb776ad4f26d84c04f8e5824791b6ec4e5c3a55de12e0d221838abfd4ef65 SHA512 294b7867ebfd4e74cef21eea865d9622c6125abe154f7d2656499261b3715faf4729c050ea0c287b17adddb7de7ada9279f89e6808a9f3ca8300cb78a8c8796a
+EBUILD dbus-broker-33-r2.ebuild 1227 BLAKE2B 6c82b46ba49e0011b7466503fc8e199dd3e72c56c7276cdbfc2fadc3258cc4a58af6050c8b3ce2b9190745441a1e2be9dd954e7d526e5331b81b4c624053f05f SHA512 4250788c76eaaa0bec0eeee709fd37b5908c9ee511e1b6bb1b4a43243dd48381fad72ad02f46028ab2b5420825790242aa052f419cb19716688f592806dee4f1
+EBUILD dbus-broker-9999.ebuild 1227 BLAKE2B 6c82b46ba49e0011b7466503fc8e199dd3e72c56c7276cdbfc2fadc3258cc4a58af6050c8b3ce2b9190745441a1e2be9dd954e7d526e5331b81b4c624053f05f SHA512 4250788c76eaaa0bec0eeee709fd37b5908c9ee511e1b6bb1b4a43243dd48381fad72ad02f46028ab2b5420825790242aa052f419cb19716688f592806dee4f1
MISC metadata.xml 409 BLAKE2B 47bd4b617aaf73c385f1c321592abf3cb4fe06dbc35a574a9cd8f65417a6554314e7034a47d36c04a7f90264c6087103ac3cbcd051d5177b38f22550553b07c0 SHA512 048e0790b2c9e8dbbf446d4ce2651124245976194260b1813b3e1807366ba09cdb204a9787dc77bca0f9bc4400fe94422cfdbe63d729c3333b67c98a6a20a1c3
diff --git a/sys-apps/dbus-broker/dbus-broker-33.ebuild b/sys-apps/dbus-broker/dbus-broker-33-r1.ebuild
index 645121c3f9b2..aae6b444ce7e 100644
--- a/sys-apps/dbus-broker/dbus-broker-33.ebuild
+++ b/sys-apps/dbus-broker/dbus-broker-33-r1.ebuild
@@ -50,8 +50,9 @@ src_unpack() {
fi
src_configure() {
- # Causes test failures
- filter-flags -fno-semantic-interposition
+ # Causes test failures with -fno-semantic-interposition (bug #919100)
+ append-flags -fno-strict-aliasing
+ filter-lto
local emesonargs=(
$(meson_use apparmor)
diff --git a/sys-apps/dbus-broker/dbus-broker-33-r2.ebuild b/sys-apps/dbus-broker/dbus-broker-33-r2.ebuild
new file mode 100644
index 000000000000..e1bb5c68ca07
--- /dev/null
+++ b/sys-apps/dbus-broker/dbus-broker-33-r2.ebuild
@@ -0,0 +1,65 @@
+# Copyright 2017-2023 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit meson
+
+if [[ ${PV} == 9999 ]]; then
+ inherit git-r3
+ EGIT_REPO_URI="https://github.com/bus1/dbus-broker.git"
+else
+ SRC_URI="https://github.com/bus1/${PN}/releases/download/v${PV}/${P}.tar.xz"
+ KEYWORDS="~amd64 ~arm64 ~ppc64 ~riscv"
+fi
+
+DESCRIPTION="Linux D-Bus Message Broker"
+HOMEPAGE="https://github.com/bus1/dbus-broker/wiki"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+IUSE="apparmor audit doc +launcher selinux"
+
+DEPEND="
+ apparmor? (
+ >=sys-libs/libapparmor-3.0
+ )
+ audit? (
+ >=sys-process/audit-3.0
+ >=sys-libs/libcap-ng-0.6
+ )
+ launcher? (
+ >=dev-libs/expat-2.2
+ >=sys-apps/systemd-230:0=
+ )
+ selinux? ( >=sys-libs/libselinux-3.2 )
+"
+RDEPEND="${DEPEND}
+ launcher? ( sys-apps/dbus )"
+BDEPEND="
+ doc? ( dev-python/docutils )
+ virtual/pkgconfig
+"
+
+PATCHES=(
+ "${FILESDIR}"/${PN}-33-strict-aliasing.patch
+)
+
+if [[ ${PV} == 9999 ]]; then
+src_unpack() {
+ git-r3_src_unpack
+ cd "${P}" || die
+ meson subprojects download || die
+}
+fi
+
+src_configure() {
+ local emesonargs=(
+ $(meson_use apparmor)
+ $(meson_use audit)
+ $(meson_use doc docs)
+ $(meson_use launcher)
+ $(meson_use selinux)
+ )
+ meson_src_configure
+}
diff --git a/sys-apps/dbus-broker/dbus-broker-9999.ebuild b/sys-apps/dbus-broker/dbus-broker-9999.ebuild
index 206bac4cf1bb..e1bb5c68ca07 100644
--- a/sys-apps/dbus-broker/dbus-broker-9999.ebuild
+++ b/sys-apps/dbus-broker/dbus-broker-9999.ebuild
@@ -3,7 +3,7 @@
EAPI=8
-inherit flag-o-matic meson
+inherit meson
if [[ ${PV} == 9999 ]]; then
inherit git-r3
@@ -41,6 +41,10 @@ BDEPEND="
virtual/pkgconfig
"
+PATCHES=(
+ "${FILESDIR}"/${PN}-33-strict-aliasing.patch
+)
+
if [[ ${PV} == 9999 ]]; then
src_unpack() {
git-r3_src_unpack
@@ -50,9 +54,6 @@ src_unpack() {
fi
src_configure() {
- # Causes test failures
- filter-flags -fno-semantic-interposition
-
local emesonargs=(
$(meson_use apparmor)
$(meson_use audit)
diff --git a/sys-apps/dbus-broker/files/dbus-broker-33-strict-aliasing.patch b/sys-apps/dbus-broker/files/dbus-broker-33-strict-aliasing.patch
new file mode 100644
index 000000000000..cb21fb08ae5e
--- /dev/null
+++ b/sys-apps/dbus-broker/files/dbus-broker-33-strict-aliasing.patch
@@ -0,0 +1,207 @@
+https://bugs.gentoo.org/919100
+https://github.com/c-util/c-utf8/issues/4
+https://github.com/c-util/c-utf8/commit/4b7cb9f940e45d3c68bf427cdeeaf5da47b03b41
+
+From 4b7cb9f940e45d3c68bf427cdeeaf5da47b03b41 Mon Sep 17 00:00:00 2001
+From: David Rheinsberg <david.rheinsberg@gmail.com>
+Date: Wed, 4 Jan 2023 14:14:56 +0100
+Subject: [PATCH] c-utf8: avoid violating strict-aliasing rules
+
+Use the c_load*() helpers of c-stdaux to avoid the strict aliasing rules
+of the C language.
+
+Signed-off-by: David Rheinsberg <david.rheinsberg@gmail.com>
+--- a/subprojects/libcutf8-1/src/c-utf8.c
++++ b/subprojects/libcutf8-1/src/c-utf8.c
+@@ -17,9 +17,9 @@
+ #define C_UTF8_ASCII_MASK ((size_t)UINT64_C(0x8080808080808080))
+ #define C_UTF8_ASCII_SUB ((size_t)UINT64_C(0x0101010101010101))
+
+-static inline int c_utf8_word_is_ascii(const size_t *word) {
++static inline int c_utf8_word_is_ascii(size_t word) {
+ /* True unless any byte is NULL or has the MSB set. */
+- return ((((*word - C_UTF8_ASCII_SUB) | *word) & C_UTF8_ASCII_MASK) == 0);
++ return ((((word - C_UTF8_ASCII_SUB) | word) & C_UTF8_ASCII_MASK) == 0);
+ }
+
+ /**
+@@ -37,10 +37,10 @@ static inline int c_utf8_word_is_ascii(const size_t *word) {
+ * byte, without any upper bound on its length.
+ */
+ _c_public_ void c_utf8_verify_ascii(const char **strp, size_t *lenp) {
+- unsigned char *str = (unsigned char *)*strp;
++ const char *str = *strp;
+ size_t len = lenp ? *lenp : (size_t)-1;
+
+- while (len > 0 && *str < 128) {
++ while (len > 0 && c_load_8(str, 0) < 128) {
+ if ((void*)c_align_to((unsigned long)str, sizeof(size_t)) == str) {
+ /*
+ * If the string is aligned to a word boundary, scan two
+@@ -51,8 +51,8 @@ _c_public_ void c_utf8_verify_ascii(const char **strp, size_t *lenp) {
+ * available.
+ */
+ while (len >= 2 * sizeof(size_t)) {
+- if (!c_utf8_word_is_ascii((size_t*)str) ||
+- !c_utf8_word_is_ascii(((size_t*)str) + 1))
++ if (!c_utf8_word_is_ascii(c_load(size_t, le, aligned, str, 0)) ||
++ !c_utf8_word_is_ascii(c_load(size_t, le, aligned, str, sizeof(size_t))))
+ break;
+
+ str += 2 * sizeof(size_t);
+@@ -63,8 +63,8 @@ _c_public_ void c_utf8_verify_ascii(const char **strp, size_t *lenp) {
+ /*
+ * Find the actual end of the ASCII-portion of the string.
+ */
+- while (len > 0 && *str < 128) {
+- if (_c_unlikely_(*str == 0x00))
++ while (len > 0 && c_load_8(str, 0) < 128) {
++ if (_c_unlikely_(c_load_8(str, 0) == 0x00))
+ goto out;
+ ++str;
+ --len;
+@@ -74,7 +74,7 @@ _c_public_ void c_utf8_verify_ascii(const char **strp, size_t *lenp) {
+ * The string was not aligned, scan one character at a time until
+ * it is.
+ */
+- if (_c_unlikely_(*str == 0x00))
++ if (_c_unlikely_(c_load_8(str, 0) == 0x00))
+ goto out;
+ ++str;
+ --len;
+@@ -82,7 +82,7 @@ _c_public_ void c_utf8_verify_ascii(const char **strp, size_t *lenp) {
+ }
+
+ out:
+- *strp = (char *)str;
++ *strp = str;
+ if (lenp)
+ *lenp = len;
+ }
+@@ -104,13 +104,13 @@ _c_public_ void c_utf8_verify_ascii(const char **strp, size_t *lenp) {
+ * byte, without any upper bound on its length.
+ */
+ _c_public_ void c_utf8_verify(const char **strp, size_t *lenp) {
+- unsigned char *str = (unsigned char *)*strp;
++ const char *str = *strp;
+ size_t len = lenp ? *lenp : (size_t)-1;
+
+ /* See Unicode 10.0.0, Chapter 3, Section D92 */
+
+ while (len > 0) {
+- switch (*str) {
++ switch (c_load_8(str, 0)) {
+ case 0x00:
+ goto out;
+ case 0x01 ... 0x7F:
+@@ -123,7 +123,7 @@ _c_public_ void c_utf8_verify(const char **strp, size_t *lenp) {
+ case 0xC2 ... 0xDF:
+ if (_c_unlikely_(len < 2))
+ goto out;
+- if (_c_unlikely_(!C_UTF8_CHAR_IS_TAIL(*(str + 1))))
++ if (_c_unlikely_(!C_UTF8_CHAR_IS_TAIL(c_load_8(str, 1))))
+ goto out;
+
+ str += 2;
+@@ -133,9 +133,9 @@ _c_public_ void c_utf8_verify(const char **strp, size_t *lenp) {
+ case 0xE0:
+ if (_c_unlikely_(len < 3))
+ goto out;
+- if (_c_unlikely_(*(str + 1) < 0xA0 || *(str + 1) > 0xBF))
++ if (_c_unlikely_(c_load_8(str, 1) < 0xA0 || c_load_8(str, 1) > 0xBF))
+ goto out;
+- if (_c_unlikely_(!C_UTF8_CHAR_IS_TAIL(*(str + 2))))
++ if (_c_unlikely_(!C_UTF8_CHAR_IS_TAIL(c_load_8(str, 2))))
+ goto out;
+
+ str += 3;
+@@ -145,9 +145,9 @@ _c_public_ void c_utf8_verify(const char **strp, size_t *lenp) {
+ case 0xE1 ... 0xEC:
+ if (_c_unlikely_(len < 3))
+ goto out;
+- if (_c_unlikely_(!C_UTF8_CHAR_IS_TAIL(*(str + 1))))
++ if (_c_unlikely_(!C_UTF8_CHAR_IS_TAIL(c_load_8(str, 1))))
+ goto out;
+- if (_c_unlikely_(!C_UTF8_CHAR_IS_TAIL(*(str + 2))))
++ if (_c_unlikely_(!C_UTF8_CHAR_IS_TAIL(c_load_8(str, 2))))
+ goto out;
+
+ str += 3;
+@@ -157,9 +157,9 @@ _c_public_ void c_utf8_verify(const char **strp, size_t *lenp) {
+ case 0xED:
+ if (_c_unlikely_(len < 3))
+ goto out;
+- if (_c_unlikely_(*(str + 1) < 0x80 || *(str + 1) > 0x9F))
++ if (_c_unlikely_(c_load_8(str, 1) < 0x80 || c_load_8(str, 1) > 0x9F))
+ goto out;
+- if (_c_unlikely_(!C_UTF8_CHAR_IS_TAIL(*(str + 2))))
++ if (_c_unlikely_(!C_UTF8_CHAR_IS_TAIL(c_load_8(str, 2))))
+ goto out;
+
+ str += 3;
+@@ -169,9 +169,9 @@ _c_public_ void c_utf8_verify(const char **strp, size_t *lenp) {
+ case 0xEE ... 0xEF:
+ if (_c_unlikely_(len < 3))
+ goto out;
+- if (_c_unlikely_(!C_UTF8_CHAR_IS_TAIL(*(str + 1))))
++ if (_c_unlikely_(!C_UTF8_CHAR_IS_TAIL(c_load_8(str, 1))))
+ goto out;
+- if (_c_unlikely_(!C_UTF8_CHAR_IS_TAIL(*(str + 2))))
++ if (_c_unlikely_(!C_UTF8_CHAR_IS_TAIL(c_load_8(str, 2))))
+ goto out;
+
+ str += 3;
+@@ -181,11 +181,11 @@ _c_public_ void c_utf8_verify(const char **strp, size_t *lenp) {
+ case 0xF0:
+ if (_c_unlikely_(len < 4))
+ goto out;
+- if (_c_unlikely_(*(str + 1) < 0x90 || *(str + 1) > 0xBF))
++ if (_c_unlikely_(c_load_8(str, 1) < 0x90 || c_load_8(str, 1) > 0xBF))
+ goto out;
+- if (_c_unlikely_(!C_UTF8_CHAR_IS_TAIL(*(str + 2))))
++ if (_c_unlikely_(!C_UTF8_CHAR_IS_TAIL(c_load_8(str, 2))))
+ goto out;
+- if (_c_unlikely_(!C_UTF8_CHAR_IS_TAIL(*(str + 3))))
++ if (_c_unlikely_(!C_UTF8_CHAR_IS_TAIL(c_load_8(str, 3))))
+ goto out;
+
+ str += 4;
+@@ -195,11 +195,11 @@ _c_public_ void c_utf8_verify(const char **strp, size_t *lenp) {
+ case 0xF1 ... 0xF3:
+ if (_c_unlikely_(len < 4))
+ goto out;
+- if (_c_unlikely_(!C_UTF8_CHAR_IS_TAIL(*(str + 1))))
++ if (_c_unlikely_(!C_UTF8_CHAR_IS_TAIL(c_load_8(str, 1))))
+ goto out;
+- if (_c_unlikely_(!C_UTF8_CHAR_IS_TAIL(*(str + 2))))
++ if (_c_unlikely_(!C_UTF8_CHAR_IS_TAIL(c_load_8(str, 2))))
+ goto out;
+- if (_c_unlikely_(!C_UTF8_CHAR_IS_TAIL(*(str + 3))))
++ if (_c_unlikely_(!C_UTF8_CHAR_IS_TAIL(c_load_8(str, 3))))
+ goto out;
+
+ str += 4;
+@@ -209,11 +209,11 @@ _c_public_ void c_utf8_verify(const char **strp, size_t *lenp) {
+ case 0xF4:
+ if (_c_unlikely_(len < 4))
+ goto out;
+- if (_c_unlikely_(*(str + 1) < 0x80 || *(str + 1) > 0x8F))
++ if (_c_unlikely_(c_load_8(str, 1) < 0x80 || c_load_8(str, 1) > 0x8F))
+ goto out;
+- if (_c_unlikely_(!C_UTF8_CHAR_IS_TAIL(*(str + 2))))
++ if (_c_unlikely_(!C_UTF8_CHAR_IS_TAIL(c_load_8(str, 2))))
+ goto out;
+- if (_c_unlikely_(!C_UTF8_CHAR_IS_TAIL(*(str + 3))))
++ if (_c_unlikely_(!C_UTF8_CHAR_IS_TAIL(c_load_8(str, 3))))
+ goto out;
+
+ str += 4;
+@@ -226,7 +226,7 @@ _c_public_ void c_utf8_verify(const char **strp, size_t *lenp) {
+ }
+
+ out:
+- *strp = (char *)str;
++ *strp = str;
+ if (lenp)
+ *lenp = len;
+ }