diff options
author | Mike Gilbert <floppym@gentoo.org> | 2017-07-02 12:10:50 -0400 |
---|---|---|
committer | Mike Gilbert <floppym@gentoo.org> | 2017-07-02 12:11:01 -0400 |
commit | 247ffd39f221d14cf084a5119a5675b626837c1b (patch) | |
tree | fd602447a22ff72a8f42f71f1c8bfd3c947b1a32 /sys-fs | |
parent | Revert "dev-python/rst-linker: ia64 keyworded, bug #613660" (diff) | |
download | gentoo-247ffd39f221d14cf084a5119a5675b626837c1b.tar.gz gentoo-247ffd39f221d14cf084a5119a5675b626837c1b.tar.bz2 gentoo-247ffd39f221d14cf084a5119a5675b626837c1b.zip |
sys-fs/udev: fix build failure on alpha/ia64
Bug: https://bugs.gentoo.org/612102
Package-Manager: Portage-2.3.6_p9, Repoman-2.3.2_p77
Diffstat (limited to 'sys-fs')
-rw-r--r-- | sys-fs/udev/files/233-format-warnings.patch | 84 | ||||
-rw-r--r-- | sys-fs/udev/udev-233.ebuild | 18 |
2 files changed, 89 insertions, 13 deletions
diff --git a/sys-fs/udev/files/233-format-warnings.patch b/sys-fs/udev/files/233-format-warnings.patch new file mode 100644 index 000000000000..7bb08f0a3201 --- /dev/null +++ b/sys-fs/udev/files/233-format-warnings.patch @@ -0,0 +1,84 @@ +From 3e7d14d78c4d15ec7789299216cbf5c58e61547b Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl> +Date: Sat, 3 Jun 2017 05:41:17 -0400 +Subject: [PATCH] sd-bus: silence format warnings in kdbus code (#6072) +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +The code is mostly correct, but gcc is trying to outsmart us, and emits a +warning for a "llu vs lu" mismatch, even though they are the same size (on alpha): + +src/libsystemd/sd-bus/bus-control.c: In function ‘kernel_get_list’: +src/libsystemd/sd-bus/bus-control.c:267:42: error: format ‘%llu’ expects argument of type ‘long long unsigned int’, but argument 3 has type ‘__u64 {aka long unsigned int}’ [-Werror=format=] + if (asprintf(&n, ":1.%llu", name->id) < 0) { + ^ +src/libsystemd/sd-bus/bus-control.c: In function ‘bus_get_name_creds_kdbus’: +src/libsystemd/sd-bus/bus-control.c:714:47: error: format ‘%llu’ expects argument of type ‘long long unsigned int’, but argument 3 has type ‘__u64 {aka long unsigned int}’ [-Werror=format=] + if (asprintf(&c->unique_name, ":1.%llu", conn_info->id) < 0) { + ^ +This is hard to work around properly, because kdbus.h uses __u64 which is +defined-differently-despite-being-the-same-size then uint64_t. Thus the simple +solution of using %PRIu64 fails on amd64: + +src/libsystemd/sd-bus/bus-control.c:714:47: error: format ‘%lu’ expects argument of type ‘long unsigned int’, but argument 3 has type ‘__u64 {aka long long unsigned int}’ [-Werror=format=] + if (asprintf(&c->unique_name, ":1.%"PRIu64, conn_info->id) < 0) { + ^~~~~~ + +Let's just avoid the whole issue for now by silencing the warning. +After the next release, we should just get rid of the kdbus code. + +Fixes #5561. +--- + src/libsystemd/sd-bus/bus-control.c | 6 ++++++ + src/libsystemd/sd-bus/bus-kernel.c | 2 ++ + 2 files changed, 8 insertions(+) + +diff --git a/src/libsystemd/sd-bus/bus-control.c b/src/libsystemd/sd-bus/bus-control.c +index 9e58ffbd8..303ae0f23 100644 +--- a/src/libsystemd/sd-bus/bus-control.c ++++ b/src/libsystemd/sd-bus/bus-control.c +@@ -264,10 +264,13 @@ static int kernel_get_list(sd_bus *bus, uint64_t flags, char ***x) { + if ((flags & KDBUS_LIST_UNIQUE) && name->id != previous_id && !(name->flags & KDBUS_HELLO_ACTIVATOR)) { + char *n; + ++#pragma GCC diagnostic push ++#pragma GCC diagnostic ignored "-Wformat" + if (asprintf(&n, ":1.%llu", name->id) < 0) { + r = -ENOMEM; + goto fail; + } ++#pragma GCC diagnostic pop + + r = strv_consume(x, n); + if (r < 0) +@@ -711,10 +714,13 @@ int bus_get_name_creds_kdbus( + } + + if (mask & SD_BUS_CREDS_UNIQUE_NAME) { ++#pragma GCC diagnostic push ++#pragma GCC diagnostic ignored "-Wformat" + if (asprintf(&c->unique_name, ":1.%llu", conn_info->id) < 0) { + r = -ENOMEM; + goto fail; + } ++#pragma GCC diagnostic pop + + c->mask |= SD_BUS_CREDS_UNIQUE_NAME; + } +diff --git a/src/libsystemd/sd-bus/bus-kernel.c b/src/libsystemd/sd-bus/bus-kernel.c +index c82caeb3f..ca6aee7c0 100644 +--- a/src/libsystemd/sd-bus/bus-kernel.c ++++ b/src/libsystemd/sd-bus/bus-kernel.c +@@ -51,6 +51,8 @@ + #include "user-util.h" + #include "util.h" + ++#pragma GCC diagnostic ignored "-Wformat" ++ + #define UNIQUE_NAME_MAX (3+DECIMAL_STR_MAX(uint64_t)) + + int bus_kernel_parse_unique_name(const char *s, uint64_t *id) { +-- +2.13.2 + diff --git a/sys-fs/udev/udev-233.ebuild b/sys-fs/udev/udev-233.ebuild index 8662d86b43c0..7cdbc7e3da18 100644 --- a/sys-fs/udev/udev-233.ebuild +++ b/sys-fs/udev/udev-233.ebuild @@ -9,13 +9,7 @@ if [[ ${PV} = 9999* ]]; then EGIT_REPO_URI="git://anongit.freedesktop.org/systemd/systemd" inherit git-r3 else - patchset= SRC_URI="https://github.com/systemd/systemd/archive/v${PV}.tar.gz -> systemd-${PV}.tar.gz" - if [[ -n "${patchset}" ]]; then - SRC_URI+=" - https://dev.gentoo.org/~williamh/dist/${P}-patches-${patchset}.tar.xz - https://dev.gentoo.org/~ssuominen/${P}-patches-${patchset}.tar.xz" - fi KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86" fi @@ -61,6 +55,10 @@ PDEPEND=">=sys-apps/hwids-20140304[udev] S=${WORKDIR}/systemd-${PV} +PATCHES=( + "${FILESDIR}"/233-format-warnings.patch +) + check_default_rules() { # Make sure there are no sudden changes to upstream rules file # (more for my own needs than anything else ...) @@ -104,11 +102,6 @@ src_prepare() { fi fi - # backport some patches - if [[ -n "${patchset}" ]]; then - eapply "${WORKDIR}"/patch - fi - cat <<-EOF > "${T}"/40-gentoo.rules # Gentoo specific floppy and usb groups ACTION=="add", SUBSYSTEM=="block", KERNEL=="fd[0-9]", GROUP="floppy" @@ -121,8 +114,7 @@ src_prepare() { # stub out the am_path_libcrypt function echo 'AC_DEFUN([AM_PATH_LIBGCRYPT],[:])' > m4/gcrypt.m4 - # apply user patches - eapply_user + default eautoreconf |