From b9a44cec782e833d4f29f6ceb64908552d5cdd7b Mon Sep 17 00:00:00 2001 From: Khem Raj Date: Thu, 8 May 2014 22:29:43 -0700 Subject: systemd: Upgrade past 212 release Remove unconditional enable-xz, its specified by PACKAGECONFIG anyway Signed-off-by: Khem Raj Signed-off-by: Saul Wold --- ...t-use-assert_return-to-check-for-disconne.patch | 513 --------------------- .../systemd/systemd-pam-fix-fallocate.patch | 28 +- meta/recipes-core/systemd/systemd_211.bb | 356 -------------- meta/recipes-core/systemd/systemd_212.bb | 354 ++++++++++++++ 4 files changed, 368 insertions(+), 883 deletions(-) delete mode 100644 meta/recipes-core/systemd/systemd/sd-bus-don-t-use-assert_return-to-check-for-disconne.patch delete mode 100644 meta/recipes-core/systemd/systemd_211.bb create mode 100644 meta/recipes-core/systemd/systemd_212.bb diff --git a/meta/recipes-core/systemd/systemd/sd-bus-don-t-use-assert_return-to-check-for-disconne.patch b/meta/recipes-core/systemd/systemd/sd-bus-don-t-use-assert_return-to-check-for-disconne.patch deleted file mode 100644 index c5bee97238..0000000000 --- a/meta/recipes-core/systemd/systemd/sd-bus-don-t-use-assert_return-to-check-for-disconne.patch +++ /dev/null @@ -1,513 +0,0 @@ -From a3d59cd1b0a2738d06893948492113f2c35be0af Mon Sep 17 00:00:00 2001 -From: Lennart Poettering -Date: Wed, 19 Mar 2014 21:41:21 +0100 -Subject: [PATCH] sd-bus: don't use assert_return() to check for disconnected - bus connections - -A terminated connection is a runtime error and not a developer mistake, -hence don't use assert_return() to check for it. - -Upstream-Status: Backport - -Signed-off-by: Jonathan Liu ---- - src/libsystemd/sd-bus/bus-control.c | 20 +++++++++--- - src/libsystemd/sd-bus/bus-convenience.c | 58 +++++++++++++++++++++++++-------- - src/libsystemd/sd-bus/bus-objects.c | 23 +++++++++---- - src/libsystemd/sd-bus/sd-bus.c | 49 ++++++++++++++++++++-------- - 4 files changed, 113 insertions(+), 37 deletions(-) - -diff --git a/src/libsystemd/sd-bus/bus-control.c b/src/libsystemd/sd-bus/bus-control.c -index bb6683e..bd392a2 100644 ---- a/src/libsystemd/sd-bus/bus-control.c -+++ b/src/libsystemd/sd-bus/bus-control.c -@@ -128,12 +128,14 @@ _public_ int sd_bus_request_name(sd_bus *bus, const char *name, uint64_t flags) - assert_return(bus, -EINVAL); - assert_return(name, -EINVAL); - assert_return(bus->bus_client, -EINVAL); -- assert_return(BUS_IS_OPEN(bus->state), -ENOTCONN); - assert_return(!bus_pid_changed(bus), -ECHILD); - assert_return(!(flags & ~(SD_BUS_NAME_ALLOW_REPLACEMENT|SD_BUS_NAME_REPLACE_EXISTING|SD_BUS_NAME_QUEUE)), -EINVAL); - assert_return(service_name_is_valid(name), -EINVAL); - assert_return(name[0] != ':', -EINVAL); - -+ if (!BUS_IS_OPEN(bus->state)) -+ return -ENOTCONN; -+ - if (bus->is_kernel) - return bus_request_name_kernel(bus, name, flags); - else -@@ -201,11 +203,13 @@ _public_ int sd_bus_release_name(sd_bus *bus, const char *name) { - assert_return(bus, -EINVAL); - assert_return(name, -EINVAL); - assert_return(bus->bus_client, -EINVAL); -- assert_return(BUS_IS_OPEN(bus->state), -ENOTCONN); - assert_return(!bus_pid_changed(bus), -ECHILD); - assert_return(service_name_is_valid(name), -EINVAL); - assert_return(name[0] != ':', -EINVAL); - -+ if (!BUS_IS_OPEN(bus->state)) -+ return -ENOTCONN; -+ - if (bus->is_kernel) - return bus_release_name_kernel(bus, name); - else -@@ -342,9 +346,11 @@ static int bus_list_names_dbus1(sd_bus *bus, char ***acquired, char ***activatab - _public_ int sd_bus_list_names(sd_bus *bus, char ***acquired, char ***activatable) { - assert_return(bus, -EINVAL); - assert_return(acquired || activatable, -EINVAL); -- assert_return(BUS_IS_OPEN(bus->state), -ENOTCONN); - assert_return(!bus_pid_changed(bus), -ECHILD); - -+ if (!BUS_IS_OPEN(bus->state)) -+ return -ENOTCONN; -+ - if (bus->is_kernel) - return bus_list_names_kernel(bus, acquired, activatable); - else -@@ -735,11 +741,13 @@ _public_ int sd_bus_get_owner( - assert_return(name, -EINVAL); - assert_return(mask <= _SD_BUS_CREDS_ALL, -ENOTSUP); - assert_return(mask == 0 || creds, -EINVAL); -- assert_return(BUS_IS_OPEN(bus->state), -ENOTCONN); - assert_return(!bus_pid_changed(bus), -ECHILD); - assert_return(service_name_is_valid(name), -EINVAL); - assert_return(bus->bus_client, -ENODATA); - -+ if (!BUS_IS_OPEN(bus->state)) -+ return -ENOTCONN; -+ - if (bus->is_kernel) - return bus_get_owner_kdbus(bus, name, mask, creds); - else -@@ -1196,10 +1204,12 @@ _public_ int sd_bus_get_owner_machine_id(sd_bus *bus, const char *name, sd_id128 - assert_return(bus, -EINVAL); - assert_return(name, -EINVAL); - assert_return(machine, -EINVAL); -- assert_return(BUS_IS_OPEN(bus->state), -ENOTCONN); - assert_return(!bus_pid_changed(bus), -ECHILD); - assert_return(service_name_is_valid(name), -EINVAL); - -+ if (!BUS_IS_OPEN(bus->state)) -+ return -ENOTCONN; -+ - if (streq_ptr(name, bus->unique_name)) - return sd_id128_get_machine(machine); - -diff --git a/src/libsystemd/sd-bus/bus-convenience.c b/src/libsystemd/sd-bus/bus-convenience.c -index 6e02ad3..c5b9cd4 100644 ---- a/src/libsystemd/sd-bus/bus-convenience.c -+++ b/src/libsystemd/sd-bus/bus-convenience.c -@@ -36,9 +36,11 @@ _public_ int sd_bus_emit_signal( - int r; - - assert_return(bus, -EINVAL); -- assert_return(BUS_IS_OPEN(bus->state), -ENOTCONN); - assert_return(!bus_pid_changed(bus), -ECHILD); - -+ if (!BUS_IS_OPEN(bus->state)) -+ return -ENOTCONN; -+ - r = sd_bus_message_new_signal(bus, &m, path, interface, member); - if (r < 0) - return r; -@@ -70,9 +72,11 @@ _public_ int sd_bus_call_method( - int r; - - assert_return(bus, -EINVAL); -- assert_return(BUS_IS_OPEN(bus->state), -ENOTCONN); - assert_return(!bus_pid_changed(bus), -ECHILD); - -+ if (!BUS_IS_OPEN(bus->state)) -+ return -ENOTCONN; -+ - r = sd_bus_message_new_method_call(bus, &m, destination, path, interface, member); - if (r < 0) - return r; -@@ -100,9 +104,12 @@ _public_ int sd_bus_reply_method_return( - assert_return(call, -EINVAL); - assert_return(call->sealed, -EPERM); - assert_return(call->header->type == SD_BUS_MESSAGE_METHOD_CALL, -EINVAL); -- assert_return(call->bus && BUS_IS_OPEN(call->bus->state), -ENOTCONN); -+ assert_return(call->bus, -EINVAL); - assert_return(!bus_pid_changed(call->bus), -ECHILD); - -+ if (!BUS_IS_OPEN(call->bus->state)) -+ return -ENOTCONN; -+ - if (call->header->flags & BUS_MESSAGE_NO_REPLY_EXPECTED) - return 0; - -@@ -134,9 +141,12 @@ _public_ int sd_bus_reply_method_error( - assert_return(call->sealed, -EPERM); - assert_return(call->header->type == SD_BUS_MESSAGE_METHOD_CALL, -EINVAL); - assert_return(sd_bus_error_is_set(e), -EINVAL); -- assert_return(call->bus && BUS_IS_OPEN(call->bus->state), -ENOTCONN); -+ assert_return(call->bus, -EINVAL); - assert_return(!bus_pid_changed(call->bus), -ECHILD); - -+ if (!BUS_IS_OPEN(call->bus->state)) -+ return -ENOTCONN; -+ - if (call->header->flags & BUS_MESSAGE_NO_REPLY_EXPECTED) - return 0; - -@@ -159,9 +169,12 @@ _public_ int sd_bus_reply_method_errorf( - assert_return(call, -EINVAL); - assert_return(call->sealed, -EPERM); - assert_return(call->header->type == SD_BUS_MESSAGE_METHOD_CALL, -EINVAL); -- assert_return(call->bus && BUS_IS_OPEN(call->bus->state), -ENOTCONN); -+ assert_return(call->bus, -EINVAL); - assert_return(!bus_pid_changed(call->bus), -ECHILD); - -+ if (!BUS_IS_OPEN(call->bus->state)) -+ return -ENOTCONN; -+ - if (call->header->flags & BUS_MESSAGE_NO_REPLY_EXPECTED) - return 0; - -@@ -182,9 +195,12 @@ _public_ int sd_bus_reply_method_errno( - assert_return(call, -EINVAL); - assert_return(call->sealed, -EPERM); - assert_return(call->header->type == SD_BUS_MESSAGE_METHOD_CALL, -EINVAL); -- assert_return(call->bus && BUS_IS_OPEN(call->bus->state), -ENOTCONN); -+ assert_return(call->bus, -EINVAL); - assert_return(!bus_pid_changed(call->bus), -ECHILD); - -+ if (!BUS_IS_OPEN(call->bus->state)) -+ return -ENOTCONN; -+ - if (call->header->flags & BUS_MESSAGE_NO_REPLY_EXPECTED) - return 0; - -@@ -208,9 +224,12 @@ _public_ int sd_bus_reply_method_errnof( - assert_return(call, -EINVAL); - assert_return(call->sealed, -EPERM); - assert_return(call->header->type == SD_BUS_MESSAGE_METHOD_CALL, -EINVAL); -- assert_return(call->bus && BUS_IS_OPEN(call->bus->state), -ENOTCONN); -+ assert_return(call->bus, -EINVAL); - assert_return(!bus_pid_changed(call->bus), -ECHILD); - -+ if (!BUS_IS_OPEN(call->bus->state)) -+ return -ENOTCONN; -+ - if (call->header->flags & BUS_MESSAGE_NO_REPLY_EXPECTED) - return 0; - -@@ -239,9 +258,11 @@ _public_ int sd_bus_get_property( - assert_return(member_name_is_valid(member), -EINVAL); - assert_return(reply, -EINVAL); - assert_return(signature_is_single(type, false), -EINVAL); -- assert_return(BUS_IS_OPEN(bus->state), -ENOTCONN); - assert_return(!bus_pid_changed(bus), -ECHILD); - -+ if (!BUS_IS_OPEN(bus->state)) -+ return -ENOTCONN; -+ - r = sd_bus_call_method(bus, destination, path, "org.freedesktop.DBus.Properties", "Get", error, &rep, "ss", strempty(interface), member); - if (r < 0) - return r; -@@ -273,9 +294,11 @@ _public_ int sd_bus_get_property_trivial( - assert_return(member_name_is_valid(member), -EINVAL); - assert_return(bus_type_is_trivial(type), -EINVAL); - assert_return(ptr, -EINVAL); -- assert_return(BUS_IS_OPEN(bus->state), -ENOTCONN); - assert_return(!bus_pid_changed(bus), -ECHILD); - -+ if (!BUS_IS_OPEN(bus->state)) -+ return -ENOTCONN; -+ - r = sd_bus_call_method(bus, destination, path, "org.freedesktop.DBus.Properties", "Get", error, &reply, "ss", strempty(interface), member); - if (r < 0) - return r; -@@ -309,9 +332,11 @@ _public_ int sd_bus_get_property_string( - assert_return(isempty(interface) || interface_name_is_valid(interface), -EINVAL); - assert_return(member_name_is_valid(member), -EINVAL); - assert_return(ret, -EINVAL); -- assert_return(BUS_IS_OPEN(bus->state), -ENOTCONN); - assert_return(!bus_pid_changed(bus), -ECHILD); - -+ if (!BUS_IS_OPEN(bus->state)) -+ return -ENOTCONN; -+ - r = sd_bus_call_method(bus, destination, path, "org.freedesktop.DBus.Properties", "Get", error, &reply, "ss", strempty(interface), member); - if (r < 0) - return r; -@@ -348,9 +373,11 @@ _public_ int sd_bus_get_property_strv( - assert_return(isempty(interface) || interface_name_is_valid(interface), -EINVAL); - assert_return(member_name_is_valid(member), -EINVAL); - assert_return(ret, -EINVAL); -- assert_return(BUS_IS_OPEN(bus->state), -ENOTCONN); - assert_return(!bus_pid_changed(bus), -ECHILD); - -+ if (!BUS_IS_OPEN(bus->state)) -+ return -ENOTCONN; -+ - r = sd_bus_call_method(bus, destination, path, "org.freedesktop.DBus.Properties", "Get", error, &reply, "ss", strempty(interface), member); - if (r < 0) - return r; -@@ -383,9 +410,11 @@ _public_ int sd_bus_set_property( - assert_return(isempty(interface) || interface_name_is_valid(interface), -EINVAL); - assert_return(member_name_is_valid(member), -EINVAL); - assert_return(signature_is_single(type, false), -EINVAL); -- assert_return(BUS_IS_OPEN(bus->state), -ENOTCONN); - assert_return(!bus_pid_changed(bus), -ECHILD); - -+ if (!BUS_IS_OPEN(bus->state)) -+ return -ENOTCONN; -+ - r = sd_bus_message_new_method_call(bus, &m, destination, path, "org.freedesktop.DBus.Properties", "Set"); - if (r < 0) - return r; -@@ -416,9 +445,12 @@ _public_ int sd_bus_query_sender_creds(sd_bus_message *call, uint64_t mask, sd_b - - assert_return(call, -EINVAL); - assert_return(call->sealed, -EPERM); -- assert_return(call->bus && BUS_IS_OPEN(call->bus->state), -ENOTCONN); -+ assert_return(call->bus, -EINVAL); - assert_return(!bus_pid_changed(call->bus), -ECHILD); - -+ if (!BUS_IS_OPEN(call->bus->state)) -+ return -ENOTCONN; -+ - c = sd_bus_message_get_creds(call); - - /* All data we need? */ -diff --git a/src/libsystemd/sd-bus/bus-objects.c b/src/libsystemd/sd-bus/bus-objects.c -index 08792fe..539cf2a 100644 ---- a/src/libsystemd/sd-bus/bus-objects.c -+++ b/src/libsystemd/sd-bus/bus-objects.c -@@ -2196,9 +2196,10 @@ _public_ int sd_bus_emit_properties_changed_strv( - assert_return(bus, -EINVAL); - assert_return(object_path_is_valid(path), -EINVAL); - assert_return(interface_name_is_valid(interface), -EINVAL); -- assert_return(BUS_IS_OPEN(bus->state), -ENOTCONN); - assert_return(!bus_pid_changed(bus), -ECHILD); - -+ if (!BUS_IS_OPEN(bus->state)) -+ return -ENOTCONN; - - /* A non-NULL but empty names list means nothing needs to be - generated. A NULL list OTOH indicates that all properties -@@ -2241,9 +2242,11 @@ _public_ int sd_bus_emit_properties_changed( - assert_return(bus, -EINVAL); - assert_return(object_path_is_valid(path), -EINVAL); - assert_return(interface_name_is_valid(interface), -EINVAL); -- assert_return(BUS_IS_OPEN(bus->state), -ENOTCONN); - assert_return(!bus_pid_changed(bus), -ECHILD); - -+ if (!BUS_IS_OPEN(bus->state)) -+ return -ENOTCONN; -+ - if (!name) - return 0; - -@@ -2361,9 +2364,11 @@ _public_ int sd_bus_emit_interfaces_added_strv(sd_bus *bus, const char *path, ch - - assert_return(bus, -EINVAL); - assert_return(object_path_is_valid(path), -EINVAL); -- assert_return(BUS_IS_OPEN(bus->state), -ENOTCONN); - assert_return(!bus_pid_changed(bus), -ECHILD); - -+ if (!BUS_IS_OPEN(bus->state)) -+ return -ENOTCONN; -+ - if (strv_isempty(interfaces)) - return 0; - -@@ -2421,9 +2426,11 @@ _public_ int sd_bus_emit_interfaces_added(sd_bus *bus, const char *path, const c - - assert_return(bus, -EINVAL); - assert_return(object_path_is_valid(path), -EINVAL); -- assert_return(BUS_IS_OPEN(bus->state), -ENOTCONN); - assert_return(!bus_pid_changed(bus), -ECHILD); - -+ if (!BUS_IS_OPEN(bus->state)) -+ return -ENOTCONN; -+ - interfaces = strv_from_stdarg_alloca(interface); - - return sd_bus_emit_interfaces_added_strv(bus, path, interfaces); -@@ -2435,9 +2442,11 @@ _public_ int sd_bus_emit_interfaces_removed_strv(sd_bus *bus, const char *path, - - assert_return(bus, -EINVAL); - assert_return(object_path_is_valid(path), -EINVAL); -- assert_return(BUS_IS_OPEN(bus->state), -ENOTCONN); - assert_return(!bus_pid_changed(bus), -ECHILD); - -+ if (!BUS_IS_OPEN(bus->state)) -+ return -ENOTCONN; -+ - if (strv_isempty(interfaces)) - return 0; - -@@ -2461,9 +2470,11 @@ _public_ int sd_bus_emit_interfaces_removed(sd_bus *bus, const char *path, const - - assert_return(bus, -EINVAL); - assert_return(object_path_is_valid(path), -EINVAL); -- assert_return(BUS_IS_OPEN(bus->state), -ENOTCONN); - assert_return(!bus_pid_changed(bus), -ECHILD); - -+ if (!BUS_IS_OPEN(bus->state)) -+ return -ENOTCONN; -+ - interfaces = strv_from_stdarg_alloca(interface); - - return sd_bus_emit_interfaces_removed_strv(bus, path, interfaces); -diff --git a/src/libsystemd/sd-bus/sd-bus.c b/src/libsystemd/sd-bus/sd-bus.c -index fa6d43a..15c7677 100644 ---- a/src/libsystemd/sd-bus/sd-bus.c -+++ b/src/libsystemd/sd-bus/sd-bus.c -@@ -1594,10 +1594,12 @@ static int bus_send_internal(sd_bus *bus, sd_bus_message *_m, uint64_t *cookie, - int r; - - assert_return(bus, -EINVAL); -- assert_return(BUS_IS_OPEN(bus->state), -ENOTCONN); - assert_return(m, -EINVAL); - assert_return(!bus_pid_changed(bus), -ECHILD); - -+ if (!BUS_IS_OPEN(bus->state)) -+ return -ENOTCONN; -+ - if (m->n_fds > 0) { - r = sd_bus_can_send(bus, SD_BUS_TYPE_UNIX_FD); - if (r < 0) -@@ -1673,10 +1675,12 @@ _public_ int sd_bus_send_to(sd_bus *bus, sd_bus_message *m, const char *destinat - int r; - - assert_return(bus, -EINVAL); -- assert_return(BUS_IS_OPEN(bus->state), -ENOTCONN); - assert_return(m, -EINVAL); - assert_return(!bus_pid_changed(bus), -ECHILD); - -+ if (!BUS_IS_OPEN(bus->state)) -+ return -ENOTCONN; -+ - if (!streq_ptr(m->destination, destination)) { - - if (!destination) -@@ -1728,13 +1732,15 @@ _public_ int sd_bus_call_async( - int r; - - assert_return(bus, -EINVAL); -- assert_return(BUS_IS_OPEN(bus->state), -ENOTCONN); - assert_return(m, -EINVAL); - assert_return(m->header->type == SD_BUS_MESSAGE_METHOD_CALL, -EINVAL); - assert_return(!(m->header->flags & BUS_MESSAGE_NO_REPLY_EXPECTED), -EINVAL); - assert_return(callback, -EINVAL); - assert_return(!bus_pid_changed(bus), -ECHILD); - -+ if (!BUS_IS_OPEN(bus->state)) -+ return -ENOTCONN; -+ - r = hashmap_ensure_allocated(&bus->reply_callbacks, uint64_hash_func, uint64_compare_func); - if (r < 0) - return r; -@@ -1841,13 +1847,15 @@ _public_ int sd_bus_call( - int r; - - assert_return(bus, -EINVAL); -- assert_return(BUS_IS_OPEN(bus->state), -ENOTCONN); - assert_return(m, -EINVAL); - assert_return(m->header->type == SD_BUS_MESSAGE_METHOD_CALL, -EINVAL); - assert_return(!(m->header->flags & BUS_MESSAGE_NO_REPLY_EXPECTED), -EINVAL); - assert_return(!bus_error_is_dirty(error), -EINVAL); - assert_return(!bus_pid_changed(bus), -ECHILD); - -+ if (!BUS_IS_OPEN(bus->state)) -+ return -ENOTCONN; -+ - r = bus_ensure_running(bus); - if (r < 0) - return r; -@@ -1973,9 +1981,11 @@ _public_ int sd_bus_get_events(sd_bus *bus) { - int flags = 0; - - assert_return(bus, -EINVAL); -- assert_return(BUS_IS_OPEN(bus->state) || bus->state == BUS_CLOSING, -ENOTCONN); - assert_return(!bus_pid_changed(bus), -ECHILD); - -+ if (!BUS_IS_OPEN(bus->state) && bus->state != BUS_CLOSING) -+ return -ENOTCONN; -+ - if (bus->state == BUS_OPENING) - flags |= POLLOUT; - else if (bus->state == BUS_AUTHENTICATING) { -@@ -2000,9 +2010,11 @@ _public_ int sd_bus_get_timeout(sd_bus *bus, uint64_t *timeout_usec) { - - assert_return(bus, -EINVAL); - assert_return(timeout_usec, -EINVAL); -- assert_return(BUS_IS_OPEN(bus->state) || bus->state == BUS_CLOSING, -ENOTCONN); - assert_return(!bus_pid_changed(bus), -ECHILD); - -+ if (!BUS_IS_OPEN(bus->state) && bus->state != BUS_CLOSING) -+ return -ENOTCONN; -+ - if (bus->track_queue) { - *timeout_usec = 0; - return 1; -@@ -2531,7 +2543,8 @@ static int bus_poll(sd_bus *bus, bool need_more, uint64_t timeout_usec) { - if (bus->state == BUS_CLOSING) - return 1; - -- assert_return(BUS_IS_OPEN(bus->state), -ENOTCONN); -+ if (!BUS_IS_OPEN(bus->state)) -+ return -ENOTCONN; - - e = sd_bus_get_events(bus); - if (e < 0) -@@ -2586,7 +2599,8 @@ _public_ int sd_bus_wait(sd_bus *bus, uint64_t timeout_usec) { - if (bus->state == BUS_CLOSING) - return 0; - -- assert_return(BUS_IS_OPEN(bus->state) , -ENOTCONN); -+ if (!BUS_IS_OPEN(bus->state)) -+ return -ENOTCONN; - - if (bus->rqueue_size > 0) - return 0; -@@ -2603,7 +2617,8 @@ _public_ int sd_bus_flush(sd_bus *bus) { - if (bus->state == BUS_CLOSING) - return 0; - -- assert_return(BUS_IS_OPEN(bus->state), -ENOTCONN); -+ if (!BUS_IS_OPEN(bus->state)) -+ return -ENOTCONN; - - r = bus_ensure_running(bus); - if (r < 0) -@@ -3113,9 +3128,13 @@ _public_ int sd_bus_get_peer_creds(sd_bus *bus, uint64_t mask, sd_bus_creds **re - assert_return(bus, -EINVAL); - assert_return(mask <= _SD_BUS_CREDS_ALL, -ENOTSUP); - assert_return(ret, -EINVAL); -- assert_return(BUS_IS_OPEN(bus->state), -ENOTCONN); - assert_return(!bus_pid_changed(bus), -ECHILD); -- assert_return(!bus->is_kernel, -ENOTSUP); -+ -+ if (!bus->is_kernel) -+ return -ENOTSUP; -+ -+ if (!BUS_IS_OPEN(bus->state)) -+ return -ENOTCONN; - - if (!bus->ucred_valid && !isempty(bus->label)) - return -ENODATA; -@@ -3154,9 +3173,13 @@ _public_ int sd_bus_try_close(sd_bus *bus) { - int r; - - assert_return(bus, -EINVAL); -- assert_return(BUS_IS_OPEN(bus->state), -ENOTCONN); - assert_return(!bus_pid_changed(bus), -ECHILD); -- assert_return(bus->is_kernel, -ENOTSUP); -+ -+ if (!bus->is_kernel) -+ return -ENOTSUP; -+ -+ if (!BUS_IS_OPEN(bus->state)) -+ return -ENOTCONN; - - if (bus->rqueue_size > 0) - return -EBUSY; --- -1.9.1 - diff --git a/meta/recipes-core/systemd/systemd/systemd-pam-fix-fallocate.patch b/meta/recipes-core/systemd/systemd/systemd-pam-fix-fallocate.patch index d25acefb59..cfca0b95a6 100644 --- a/meta/recipes-core/systemd/systemd/systemd-pam-fix-fallocate.patch +++ b/meta/recipes-core/systemd/systemd/systemd-pam-fix-fallocate.patch @@ -1,10 +1,10 @@ Upstream-Status: Denied [no desire for uclibc support] Signed-off-by: Khem Raj -Index: systemd-209/src/journal/journal-file.c +Index: git/src/journal/journal-file.c =================================================================== ---- systemd-209.orig/src/journal/journal-file.c 2014-02-12 18:42:33.000000000 -0800 -+++ systemd-209/src/journal/journal-file.c 2014-02-19 23:23:19.464631643 -0800 +--- git.orig/src/journal/journal-file.c 2014-04-22 22:53:05.000000000 -0700 ++++ git/src/journal/journal-file.c 2014-04-22 22:53:51.130236707 -0700 @@ -38,6 +38,8 @@ #include "compress.h" #include "fsprg.h" @@ -14,7 +14,7 @@ Index: systemd-209/src/journal/journal-file.c #define DEFAULT_DATA_HASH_TABLE_SIZE (2047ULL*sizeof(HashItem)) #define DEFAULT_FIELD_HASH_TABLE_SIZE (333ULL*sizeof(HashItem)) -@@ -316,7 +318,7 @@ +@@ -314,7 +316,7 @@ static int journal_file_allocate(JournalFile *f, uint64_t offset, uint64_t size) { uint64_t old_size, new_size; @@ -23,7 +23,7 @@ Index: systemd-209/src/journal/journal-file.c assert(f); -@@ -364,9 +366,24 @@ +@@ -362,9 +364,24 @@ /* Note that the glibc fallocate() fallback is very inefficient, hence we try to minimize the allocation area as we can. */ @@ -48,19 +48,19 @@ Index: systemd-209/src/journal/journal-file.c if (fstat(f->fd, &f->last_stat) < 0) return -errno; -Index: systemd-209/src/journal/journald-kmsg.c +Index: git/src/journal/journald-kmsg.c =================================================================== ---- systemd-209.orig/src/journal/journald-kmsg.c 2014-02-19 15:03:09.000000000 -0800 -+++ systemd-209/src/journal/journald-kmsg.c 2014-02-19 23:22:14.396630422 -0800 -@@ -441,6 +441,7 @@ - +--- git.orig/src/journal/journald-kmsg.c 2014-04-22 22:53:05.000000000 -0700 ++++ git/src/journal/journald-kmsg.c 2014-04-22 22:54:27.830236809 -0700 +@@ -437,6 +437,7 @@ int server_open_kernel_seqnum(Server *s) { - int fd; -+ int r = 0; + _cleanup_close_ int fd; uint64_t *p; ++ int r = 0; assert(s); -@@ -454,8 +455,19 @@ + +@@ -449,8 +450,19 @@ log_error("Failed to open /run/systemd/journal/kernel-seqnum, ignoring: %m"); return 0; } @@ -80,5 +80,5 @@ Index: systemd-209/src/journal/journald-kmsg.c +#endif /* HAVE_POSIX_FALLOCATE */ + if (r < 0) { log_error("Failed to allocate sequential number file, ignoring: %m"); - close_nointr_nofail(fd); return 0; + } diff --git a/meta/recipes-core/systemd/systemd_211.bb b/meta/recipes-core/systemd/systemd_211.bb deleted file mode 100644 index 63bccc7a72..0000000000 --- a/meta/recipes-core/systemd/systemd_211.bb +++ /dev/null @@ -1,356 +0,0 @@ -SUMMARY = "System and service manager for Linux, replacing SysVinit" -HOMEPAGE = "http://www.freedesktop.org/wiki/Software/systemd" - -LICENSE = "GPLv2 & LGPLv2.1 & MIT" -LIC_FILES_CHKSUM = "file://LICENSE.GPL2;md5=751419260aa954499f7abaabaa882bbe \ - file://LICENSE.LGPL2.1;md5=4fbd65380cdd255951079008b364516c \ - file://LICENSE.MIT;md5=544799d0b492f119fa04641d1b8868ed" - -PROVIDES = "udev" - -PE = "1" - -DEPENDS = "kmod docbook-sgml-dtd-4.1-native intltool-native gperf-native acl readline dbus libcap libcgroup glib-2.0 qemu-native util-linux" -DEPENDS += "${@bb.utils.contains('DISTRO_FEATURES', 'pam', 'libpam', '', d)}" - -SECTION = "base/shell" - -inherit gtk-doc useradd pkgconfig autotools perlnative update-rc.d update-alternatives qemu systemd ptest - -SRCREV = "3a450ec5c6adf3057bcedd6cc19c10617abc35a5" - -PV = "211+git${SRCPV}" - -SRC_URI = "git://anongit.freedesktop.org/systemd/systemd;branch=master;protocol=git \ - file://binfmt-install.patch \ - file://systemd-pam-configure-check-uclibc.patch \ - file://systemd-pam-fix-execvpe.patch \ - file://systemd-pam-fix-fallocate.patch \ - file://systemd-pam-fix-mkostemp.patch \ - file://optional_secure_getenv.patch \ - file://0001-uClibc-doesn-t-implement-pwritev-preadv.patch \ - file://uclibc-sysinfo_h.patch \ - file://uclibc-get-physmem.patch \ - file://sd-bus-don-t-use-assert_return-to-check-for-disconne.patch \ - \ - file://touchscreen.rules \ - file://00-create-volatile.conf \ - file://init \ - file://run-ptest \ - " - -S = "${WORKDIR}/git" - -SRC_URI_append_libc-uclibc = "\ - file://systemd-pam-fix-getty-unit.patch \ - " -LDFLAGS_append_libc-uclibc = " -lrt" - -GTKDOC_DOCDIR = "${S}/docs/" - -PACKAGECONFIG ??= "xz tcp-wrappers" -# Sign the journal for anti-tampering -PACKAGECONFIG[gcrypt] = "--enable-gcrypt,--disable-gcrypt,libgcrypt" -# regardless of PACKAGECONFIG, libgcrypt is always required to expand -# the AM_PATH_LIBGCRYPT autoconf macro -DEPENDS += "libgcrypt" -# Compress the journal -PACKAGECONFIG[xz] = "--enable-xz,--disable-xz,xz" -PACKAGECONFIG[tcp-wrappers] = "--enable-tcpwrap,--disable-tcpwrap,tcp-wrappers" -PACKAGECONFIG[cryptsetup] = "--enable-libcryptsetup,--disable-libcryptsetup,cryptsetup" -PACKAGECONFIG[microhttpd] = "--enable-microhttpd,--disable-microhttpd,libmicrohttpd" - -CACHED_CONFIGUREVARS = "ac_cv_path_KILL=${base_bindir}/kill" - -# Helper variables to clarify locations. This mirrors the logic in systemd's -# build system. -rootprefix ?= "${base_prefix}" -rootlibdir ?= "${base_libdir}" -rootlibexecdir = "${rootprefix}/lib" - -# The gtk+ tools should get built as a separate recipe e.g. systemd-tools -EXTRA_OECONF = " --with-rootprefix=${rootprefix} \ - --with-rootlibdir=${rootlibdir} \ - ${@bb.utils.contains('DISTRO_FEATURES', 'pam', '--enable-pam', '--disable-pam', d)} \ - --enable-xz \ - --disable-manpages \ - --disable-coredump \ - --disable-introspection \ - --disable-kdbus \ - --enable-split-usr \ - --without-python \ - --with-sysvrcnd-path=${sysconfdir} \ - --with-firmware-path=/lib/firmware \ - ac_cv_path_KILL=${base_bindir}/kill \ - " -# uclibc does not have NSS -EXTRA_OECONF_append_libc-uclibc = " --disable-myhostname " - -do_configure_prepend() { - export CPP="${HOST_PREFIX}cpp ${TOOLCHAIN_OPTIONS} ${HOST_CC_ARCH}" - export NM="${HOST_PREFIX}gcc-nm" - export AR="${HOST_PREFIX}gcc-ar" - export RANLIB="${HOST_PREFIX}gcc-ranlib" - export KMOD="${base_bindir}/kmod" - if [ -d ${S}/units.pre_sed ] ; then - cp -r ${S}/units.pre_sed ${S}/units - else - cp -r ${S}/units ${S}/units.pre_sed - fi - sed -i -e 's:=/root:=${ROOT_HOME}:g' ${S}/units/*.service* - sed -i -e 's:\$(LN_S) --relative -f:lnr:g' ${S}/Makefile.am - sed -i -e 's:\$(LN_S) --relative:lnr:g' ${S}/Makefile.am -} - -do_install() { - autotools_do_install - install -d ${D}/${base_sbindir} - # Provided by a separate recipe - rm ${D}${systemd_unitdir}/system/serial-getty* -f - - # Provide support for initramfs - [ ! -e ${D}/init ] && ln -s ${rootlibexecdir}/systemd/systemd ${D}/init - [ ! -e ${D}/${base_sbindir}/udevd ] && ln -s ${rootlibexecdir}/systemd/systemd-udevd ${D}/${base_sbindir}/udevd - - # Create machine-id - # 20:12 < mezcalero> koen: you have three options: a) run systemd-machine-id-setup at install time, b) have / read-only and an empty file there (for stateless) and c) boot with / writable - touch ${D}${sysconfdir}/machine-id - - install -m 0644 ${WORKDIR}/*.rules ${D}${sysconfdir}/udev/rules.d/ - - install -m 0644 ${WORKDIR}/00-create-volatile.conf ${D}${sysconfdir}/tmpfiles.d/ - - if ${@bb.utils.contains('DISTRO_FEATURES','sysvinit','true','false',d)}; then - install -d ${D}${sysconfdir}/init.d - install -m 0755 ${WORKDIR}/init ${D}${sysconfdir}/init.d/systemd-udevd - sed -i s%@UDEVD@%${rootlibexecdir}/systemd/systemd-udevd% ${D}${sysconfdir}/init.d/systemd-udevd - fi - - # Delete journal README, as log can be symlinked inside volatile. - rm -f ${D}/${localstatedir}/log/README -} - -do_install_ptest () { - install -d ${D}${PTEST_PATH}/test - cp -rf ${S}/test/* ${D}${PTEST_PATH}/test - install -m 0755 ${B}/test-udev ${D}${PTEST_PATH}/ - install -d ${D}${PTEST_PATH}/build-aux - cp ${S}/build-aux/test-driver ${D}${PTEST_PATH}/build-aux/ - cp -rf ${B}/rules ${D}${PTEST_PATH}/ - # This directory needs to be there for udev-test.pl to work. - install -d ${D}${libdir}/udev/rules.d - cp ${B}/Makefile ${D}${PTEST_PATH}/ - cp ${S}/test/sys.tar.xz ${D}${PTEST_PATH}/test - sed -i 's/"tree"/"ls"/' ${D}${PTEST_PATH}/test/udev-test.pl - sed -i 's#${S}#${PTEST_PATH}#g' ${D}${PTEST_PATH}/Makefile - sed -i 's#${B}#${PTEST_PATH}#g' ${D}${PTEST_PATH}/Makefile -} - -python populate_packages_prepend (){ - systemdlibdir = d.getVar("rootlibdir", True) - do_split_packages(d, systemdlibdir, '^lib(.*)\.so\.*', 'lib%s', 'Systemd %s library', extra_depends='', allow_links=True) -} -PACKAGES_DYNAMIC += "^lib(udev|gudev|systemd).*" - -PACKAGES =+ "${PN}-gui ${PN}-vconsole-setup ${PN}-initramfs ${PN}-analyze ${PN}-kernel-install \ - ${PN}-rpm-macros ${PN}-binfmt ${PN}-pam ${PN}-zsh" - -SYSTEMD_PACKAGES = "${PN}-binfmt" -SYSTEMD_SERVICE_${PN}-binfmt = "systemd-binfmt.service" - -USERADD_PACKAGES = "${PN}" -USERADD_PARAM_${PN} += "--system systemd-journal-gateway" -GROUPADD_PARAM_${PN} = "-r lock; -r systemd-journal" - -FILES_${PN}-analyze = "${bindir}/systemd-analyze" - -FILES_${PN}-initramfs = "/init" -RDEPENDS_${PN}-initramfs = "${PN}" - -# The test cases need perl and bash to run correctly. -RDEPENDS_${PN}-ptest += "perl bash" -FILES_${PN}-ptest += "${libdir}/udev/rules.d" - -FILES_${PN}-dbg += "${libdir}/systemd/ptest/.debug" - -FILES_${PN}-gui = "${bindir}/systemadm" - -FILES_${PN}-vconsole-setup = "${rootlibexecdir}/systemd/systemd-vconsole-setup \ - ${systemd_unitdir}/system/systemd-vconsole-setup.service \ - ${systemd_unitdir}/system/sysinit.target.wants/systemd-vconsole-setup.service" - -FILES_${PN}-kernel-install = "${bindir}/kernel-install \ - ${sysconfdir}/kernel/ \ - ${exec_prefix}/lib/kernel \ - " -FILES_${PN}-rpm-macros = "${exec_prefix}/lib/rpm \ - " - -FILES_${PN}-zsh = "${datadir}/zsh/site-functions" - -FILES_${PN}-binfmt = "${sysconfdir}/binfmt.d/ \ - ${exec_prefix}/lib/binfmt.d \ - ${rootlibexecdir}/systemd/systemd-binfmt \ - ${systemd_unitdir}/system/proc-sys-fs-binfmt_misc.* \ - ${systemd_unitdir}/system/systemd-binfmt.service" -RRECOMMENDS_${PN}-binfmt = "kernel-module-binfmt-misc" - -RRECOMMENDS_${PN}-vconsole-setup = "kbd kbd-consolefonts" - -CONFFILES_${PN} = "${sysconfdir}/systemd/journald.conf \ - ${sysconfdir}/systemd/logind.conf \ - ${sysconfdir}/systemd/system.conf \ - ${sysconfdir}/systemd/user.conf" - -FILES_${PN} = " ${base_bindir}/* \ - ${datadir}/bash-completion \ - ${datadir}/dbus-1/services \ - ${datadir}/dbus-1/system-services \ - ${datadir}/polkit-1 \ - ${datadir}/${BPN} \ - ${sysconfdir}/bash_completion.d/ \ - ${sysconfdir}/dbus-1/ \ - ${sysconfdir}/machine-id \ - ${sysconfdir}/modules-load.d/ \ - ${sysconfdir}/sysctl.d/ \ - ${sysconfdir}/systemd/ \ - ${sysconfdir}/tmpfiles.d/ \ - ${sysconfdir}/xdg/ \ - ${sysconfdir}/init.d/README \ - ${rootlibexecdir}/systemd/* \ - ${systemd_unitdir}/* \ - ${base_libdir}/security/*.so \ - ${libdir}/libnss_myhostname.so.2 \ - /cgroup \ - ${bindir}/systemd* \ - ${bindir}/busctl \ - ${bindir}/localectl \ - ${bindir}/hostnamectl \ - ${bindir}/timedatectl \ - ${bindir}/bootctl \ - ${bindir}/kernel-install \ - ${exec_prefix}/lib/tmpfiles.d/*.conf \ - ${exec_prefix}/lib/systemd \ - ${exec_prefix}/lib/modules-load.d \ - ${exec_prefix}/lib/sysctl.d \ - ${localstatedir} \ - /lib/udev/rules.d/70-uaccess.rules \ - /lib/udev/rules.d/71-seat.rules \ - /lib/udev/rules.d/73-seat-late.rules \ - /lib/udev/rules.d/99-systemd.rules \ - ${@bb.utils.contains('DISTRO_FEATURES', 'pam', '${sysconfdir}/pam.d', '', d)} \ - " - -FILES_${PN}-dbg += "${rootlibdir}/.debug ${systemd_unitdir}/.debug ${systemd_unitdir}/*/.debug ${base_libdir}/security/.debug/" -FILES_${PN}-dev += "${base_libdir}/security/*.la ${datadir}/dbus-1/interfaces/ ${sysconfdir}/rpm/macros.systemd" - -RDEPENDS_${PN} += "kmod dbus util-linux-mount udev (= ${EXTENDPKGV})" - -RRECOMMENDS_${PN} += "systemd-serialgetty systemd-compat-units \ - util-linux-agetty \ - util-linux-fsck e2fsprogs-e2fsck \ - kernel-module-autofs4 kernel-module-unix kernel-module-ipv6 \ -" - -PACKAGES =+ "udev-dbg udev udev-utils udev-hwdb" - -FILES_udev-dbg += "/lib/udev/.debug" - -RDEPENDS_udev += "udev-utils" -RPROVIDES_udev = "hotplug" -RRECOMMENDS_udev += "udev-hwdb" - -RDEPENDS_udev-hwdb += "udev-utils" - -FILES_udev += "${base_sbindir}/udevd \ - ${rootlibexecdir}/systemd/systemd-udevd \ - ${rootlibexecdir}/udev/accelerometer \ - ${rootlibexecdir}/udev/ata_id \ - ${rootlibexecdir}/udev/cdrom_id \ - ${rootlibexecdir}/udev/collect \ - ${rootlibexecdir}/udev/findkeyboards \ - ${rootlibexecdir}/udev/keyboard-force-release.sh \ - ${rootlibexecdir}/udev/keymap \ - ${rootlibexecdir}/udev/mtd_probe \ - ${rootlibexecdir}/udev/scsi_id \ - ${rootlibexecdir}/udev/v4l_id \ - ${rootlibexecdir}/udev/keymaps \ - ${rootlibexecdir}/udev/rules.d/4*.rules \ - ${rootlibexecdir}/udev/rules.d/5*.rules \ - ${rootlibexecdir}/udev/rules.d/6*.rules \ - ${rootlibexecdir}/udev/rules.d/70-power-switch.rules \ - ${rootlibexecdir}/udev/rules.d/75*.rules \ - ${rootlibexecdir}/udev/rules.d/78*.rules \ - ${rootlibexecdir}/udev/rules.d/8*.rules \ - ${rootlibexecdir}/udev/rules.d/95*.rules \ - ${sysconfdir}/udev \ - ${sysconfdir}/init.d/systemd-udevd \ - ${systemd_unitdir}/system/*udev* \ - ${systemd_unitdir}/system/*.wants/*udev* \ - " - -FILES_udev-utils = "${base_bindir}/udevadm ${datadir}/bash-completion/completions/udevadm" - -FILES_udev-hwdb = "${rootlibexecdir}/udev/hwdb.d" - -INITSCRIPT_PACKAGES = "udev" -INITSCRIPT_NAME_udev = "systemd-udevd" -INITSCRIPT_PARAMS_udev = "start 03 S ." - -python __anonymous() { - if not bb.utils.contains('DISTRO_FEATURES', 'sysvinit', True, False, d): - d.setVar("INHIBIT_UPDATERCD_BBCLASS", "1") -} - -# TODO: -# u-a for runlevel and telinit - -ALTERNATIVE_${PN} = "init halt reboot shutdown poweroff runlevel" - -ALTERNATIVE_TARGET[init] = "${rootlibexecdir}/systemd/systemd" -ALTERNATIVE_LINK_NAME[init] = "${base_sbindir}/init" -ALTERNATIVE_PRIORITY[init] ?= "300" - -ALTERNATIVE_TARGET[halt] = "${base_bindir}/systemctl" -ALTERNATIVE_LINK_NAME[halt] = "${base_sbindir}/halt" -ALTERNATIVE_PRIORITY[halt] ?= "300" - -ALTERNATIVE_TARGET[reboot] = "${base_bindir}/systemctl" -ALTERNATIVE_LINK_NAME[reboot] = "${base_sbindir}/reboot" -ALTERNATIVE_PRIORITY[reboot] ?= "300" - -ALTERNATIVE_TARGET[shutdown] = "${base_bindir}/systemctl" -ALTERNATIVE_LINK_NAME[shutdown] = "${base_sbindir}/shutdown" -ALTERNATIVE_PRIORITY[shutdown] ?= "300" - -ALTERNATIVE_TARGET[poweroff] = "${base_bindir}/systemctl" -ALTERNATIVE_LINK_NAME[poweroff] = "${base_sbindir}/poweroff" -ALTERNATIVE_PRIORITY[poweroff] ?= "300" - -ALTERNATIVE_TARGET[runlevel] = "${base_bindir}/systemctl" -ALTERNATIVE_LINK_NAME[runlevel] = "${base_sbindir}/runlevel" -ALTERNATIVE_PRIORITY[runlevel] ?= "300" - -pkg_postinst_udev-hwdb () { - if test -n "$D"; then - ${@qemu_run_binary(d, '$D', '${base_bindir}/udevadm')} hwdb --update \ - --root $D - else - udevadm hwdb --update - fi -} - -pkg_prerm_udev-hwdb () { - if test -n "$D"; then - exit 1 - fi - - rm -f ${sysconfdir}/udev/hwdb.bin -} - -# As this recipe builds udev, respect systemd being in DISTRO_FEATURES so -# that we don't build both udev and systemd in world builds. -python () { - if not bb.utils.contains ('DISTRO_FEATURES', 'systemd', True, False, d): - raise bb.parse.SkipPackage("'systemd' not in DISTRO_FEATURES") -} diff --git a/meta/recipes-core/systemd/systemd_212.bb b/meta/recipes-core/systemd/systemd_212.bb new file mode 100644 index 0000000000..bbc5d34a19 --- /dev/null +++ b/meta/recipes-core/systemd/systemd_212.bb @@ -0,0 +1,354 @@ +SUMMARY = "System and service manager for Linux, replacing SysVinit" +HOMEPAGE = "http://www.freedesktop.org/wiki/Software/systemd" + +LICENSE = "GPLv2 & LGPLv2.1 & MIT" +LIC_FILES_CHKSUM = "file://LICENSE.GPL2;md5=751419260aa954499f7abaabaa882bbe \ + file://LICENSE.LGPL2.1;md5=4fbd65380cdd255951079008b364516c \ + file://LICENSE.MIT;md5=544799d0b492f119fa04641d1b8868ed" + +PROVIDES = "udev" + +PE = "1" + +DEPENDS = "kmod docbook-sgml-dtd-4.1-native intltool-native gperf-native acl readline dbus libcap libcgroup glib-2.0 qemu-native util-linux" +DEPENDS += "${@bb.utils.contains('DISTRO_FEATURES', 'pam', 'libpam', '', d)}" + +SECTION = "base/shell" + +inherit gtk-doc useradd pkgconfig autotools perlnative update-rc.d update-alternatives qemu systemd ptest + +SRCREV = "9b3310b066136b0674a926da094b7fe87a13a58b" + +PV = "212+git${SRCPV}" + +SRC_URI = "git://anongit.freedesktop.org/systemd/systemd;branch=master;protocol=git \ + file://binfmt-install.patch \ + file://systemd-pam-configure-check-uclibc.patch \ + file://systemd-pam-fix-execvpe.patch \ + file://systemd-pam-fix-fallocate.patch \ + file://systemd-pam-fix-mkostemp.patch \ + file://optional_secure_getenv.patch \ + file://0001-uClibc-doesn-t-implement-pwritev-preadv.patch \ + file://uclibc-sysinfo_h.patch \ + file://uclibc-get-physmem.patch \ + \ + file://touchscreen.rules \ + file://00-create-volatile.conf \ + file://init \ + file://run-ptest \ + " + +S = "${WORKDIR}/git" + +SRC_URI_append_libc-uclibc = "\ + file://systemd-pam-fix-getty-unit.patch \ + " +LDFLAGS_append_libc-uclibc = " -lrt" + +GTKDOC_DOCDIR = "${S}/docs/" + +PACKAGECONFIG ??= "xz tcp-wrappers" +# Sign the journal for anti-tampering +PACKAGECONFIG[gcrypt] = "--enable-gcrypt,--disable-gcrypt,libgcrypt" +# regardless of PACKAGECONFIG, libgcrypt is always required to expand +# the AM_PATH_LIBGCRYPT autoconf macro +DEPENDS += "libgcrypt" +# Compress the journal +PACKAGECONFIG[xz] = "--enable-xz,--disable-xz,xz" +PACKAGECONFIG[tcp-wrappers] = "--enable-tcpwrap,--disable-tcpwrap,tcp-wrappers" +PACKAGECONFIG[cryptsetup] = "--enable-libcryptsetup,--disable-libcryptsetup,cryptsetup" +PACKAGECONFIG[microhttpd] = "--enable-microhttpd,--disable-microhttpd,libmicrohttpd" + +CACHED_CONFIGUREVARS = "ac_cv_path_KILL=${base_bindir}/kill" + +# Helper variables to clarify locations. This mirrors the logic in systemd's +# build system. +rootprefix ?= "${base_prefix}" +rootlibdir ?= "${base_libdir}" +rootlibexecdir = "${rootprefix}/lib" + +# The gtk+ tools should get built as a separate recipe e.g. systemd-tools +EXTRA_OECONF = " --with-rootprefix=${rootprefix} \ + --with-rootlibdir=${rootlibdir} \ + ${@bb.utils.contains('DISTRO_FEATURES', 'pam', '--enable-pam', '--disable-pam', d)} \ + --disable-manpages \ + --disable-coredump \ + --disable-introspection \ + --disable-kdbus \ + --enable-split-usr \ + --without-python \ + --with-sysvrcnd-path=${sysconfdir} \ + --with-firmware-path=/lib/firmware \ + ac_cv_path_KILL=${base_bindir}/kill \ + " +# uclibc does not have NSS +EXTRA_OECONF_append_libc-uclibc = " --disable-myhostname " + +do_configure_prepend() { + export CPP="${HOST_PREFIX}cpp ${TOOLCHAIN_OPTIONS} ${HOST_CC_ARCH}" + export NM="${HOST_PREFIX}gcc-nm" + export AR="${HOST_PREFIX}gcc-ar" + export RANLIB="${HOST_PREFIX}gcc-ranlib" + export KMOD="${base_bindir}/kmod" + if [ -d ${S}/units.pre_sed ] ; then + cp -r ${S}/units.pre_sed ${S}/units + else + cp -r ${S}/units ${S}/units.pre_sed + fi + sed -i -e 's:=/root:=${ROOT_HOME}:g' ${S}/units/*.service* + sed -i -e 's:\$(LN_S) --relative -f:lnr:g' ${S}/Makefile.am + sed -i -e 's:\$(LN_S) --relative:lnr:g' ${S}/Makefile.am +} + +do_install() { + autotools_do_install + install -d ${D}/${base_sbindir} + # Provided by a separate recipe + rm ${D}${systemd_unitdir}/system/serial-getty* -f + + # Provide support for initramfs + [ ! -e ${D}/init ] && ln -s ${rootlibexecdir}/systemd/systemd ${D}/init + [ ! -e ${D}/${base_sbindir}/udevd ] && ln -s ${rootlibexecdir}/systemd/systemd-udevd ${D}/${base_sbindir}/udevd + + # Create machine-id + # 20:12 < mezcalero> koen: you have three options: a) run systemd-machine-id-setup at install time, b) have / read-only and an empty file there (for stateless) and c) boot with / writable + touch ${D}${sysconfdir}/machine-id + + install -m 0644 ${WORKDIR}/*.rules ${D}${sysconfdir}/udev/rules.d/ + + install -m 0644 ${WORKDIR}/00-create-volatile.conf ${D}${sysconfdir}/tmpfiles.d/ + + if ${@bb.utils.contains('DISTRO_FEATURES','sysvinit','true','false',d)}; then + install -d ${D}${sysconfdir}/init.d + install -m 0755 ${WORKDIR}/init ${D}${sysconfdir}/init.d/systemd-udevd + sed -i s%@UDEVD@%${rootlibexecdir}/systemd/systemd-udevd% ${D}${sysconfdir}/init.d/systemd-udevd + fi + + # Delete journal README, as log can be symlinked inside volatile. + rm -f ${D}/${localstatedir}/log/README +} + +do_install_ptest () { + install -d ${D}${PTEST_PATH}/test + cp -rf ${S}/test/* ${D}${PTEST_PATH}/test + install -m 0755 ${B}/test-udev ${D}${PTEST_PATH}/ + install -d ${D}${PTEST_PATH}/build-aux + cp ${S}/build-aux/test-driver ${D}${PTEST_PATH}/build-aux/ + cp -rf ${B}/rules ${D}${PTEST_PATH}/ + # This directory needs to be there for udev-test.pl to work. + install -d ${D}${libdir}/udev/rules.d + cp ${B}/Makefile ${D}${PTEST_PATH}/ + cp ${S}/test/sys.tar.xz ${D}${PTEST_PATH}/test + sed -i 's/"tree"/"ls"/' ${D}${PTEST_PATH}/test/udev-test.pl + sed -i 's#${S}#${PTEST_PATH}#g' ${D}${PTEST_PATH}/Makefile + sed -i 's#${B}#${PTEST_PATH}#g' ${D}${PTEST_PATH}/Makefile +} + +python populate_packages_prepend (){ + systemdlibdir = d.getVar("rootlibdir", True) + do_split_packages(d, systemdlibdir, '^lib(.*)\.so\.*', 'lib%s', 'Systemd %s library', extra_depends='', allow_links=True) +} +PACKAGES_DYNAMIC += "^lib(udev|gudev|systemd).*" + +PACKAGES =+ "${PN}-gui ${PN}-vconsole-setup ${PN}-initramfs ${PN}-analyze ${PN}-kernel-install \ + ${PN}-rpm-macros ${PN}-binfmt ${PN}-pam ${PN}-zsh" + +SYSTEMD_PACKAGES = "${PN}-binfmt" +SYSTEMD_SERVICE_${PN}-binfmt = "systemd-binfmt.service" + +USERADD_PACKAGES = "${PN}" +USERADD_PARAM_${PN} += "--system systemd-journal-gateway" +GROUPADD_PARAM_${PN} = "-r lock; -r systemd-journal" + +FILES_${PN}-analyze = "${bindir}/systemd-analyze" + +FILES_${PN}-initramfs = "/init" +RDEPENDS_${PN}-initramfs = "${PN}" + +# The test cases need perl and bash to run correctly. +RDEPENDS_${PN}-ptest += "perl bash" +FILES_${PN}-ptest += "${libdir}/udev/rules.d" + +FILES_${PN}-dbg += "${libdir}/systemd/ptest/.debug" + +FILES_${PN}-gui = "${bindir}/systemadm" + +FILES_${PN}-vconsole-setup = "${rootlibexecdir}/systemd/systemd-vconsole-setup \ + ${systemd_unitdir}/system/systemd-vconsole-setup.service \ + ${systemd_unitdir}/system/sysinit.target.wants/systemd-vconsole-setup.service" + +FILES_${PN}-kernel-install = "${bindir}/kernel-install \ + ${sysconfdir}/kernel/ \ + ${exec_prefix}/lib/kernel \ + " +FILES_${PN}-rpm-macros = "${exec_prefix}/lib/rpm \ + " + +FILES_${PN}-zsh = "${datadir}/zsh/site-functions" + +FILES_${PN}-binfmt = "${sysconfdir}/binfmt.d/ \ + ${exec_prefix}/lib/binfmt.d \ + ${rootlibexecdir}/systemd/systemd-binfmt \ + ${systemd_unitdir}/system/proc-sys-fs-binfmt_misc.* \ + ${systemd_unitdir}/system/systemd-binfmt.service" +RRECOMMENDS_${PN}-binfmt = "kernel-module-binfmt-misc" + +RRECOMMENDS_${PN}-vconsole-setup = "kbd kbd-consolefonts" + +CONFFILES_${PN} = "${sysconfdir}/systemd/journald.conf \ + ${sysconfdir}/systemd/logind.conf \ + ${sysconfdir}/systemd/system.conf \ + ${sysconfdir}/systemd/user.conf" + +FILES_${PN} = " ${base_bindir}/* \ + ${datadir}/bash-completion \ + ${datadir}/dbus-1/services \ + ${datadir}/dbus-1/system-services \ + ${datadir}/polkit-1 \ + ${datadir}/${BPN} \ + ${sysconfdir}/bash_completion.d/ \ + ${sysconfdir}/dbus-1/ \ + ${sysconfdir}/machine-id \ + ${sysconfdir}/modules-load.d/ \ + ${sysconfdir}/sysctl.d/ \ + ${sysconfdir}/systemd/ \ + ${sysconfdir}/tmpfiles.d/ \ + ${sysconfdir}/xdg/ \ + ${sysconfdir}/init.d/README \ + ${rootlibexecdir}/systemd/* \ + ${systemd_unitdir}/* \ + ${base_libdir}/security/*.so \ + ${libdir}/libnss_myhostname.so.2 \ + /cgroup \ + ${bindir}/systemd* \ + ${bindir}/busctl \ + ${bindir}/localectl \ + ${bindir}/hostnamectl \ + ${bindir}/timedatectl \ + ${bindir}/bootctl \ + ${bindir}/kernel-install \ + ${exec_prefix}/lib/tmpfiles.d/*.conf \ + ${exec_prefix}/lib/systemd \ + ${exec_prefix}/lib/modules-load.d \ + ${exec_prefix}/lib/sysctl.d \ + ${localstatedir} \ + /lib/udev/rules.d/70-uaccess.rules \ + /lib/udev/rules.d/71-seat.rules \ + /lib/udev/rules.d/73-seat-late.rules \ + /lib/udev/rules.d/99-systemd.rules \ + ${@bb.utils.contains('DISTRO_FEATURES', 'pam', '${sysconfdir}/pam.d', '', d)} \ + " + +FILES_${PN}-dbg += "${rootlibdir}/.debug ${systemd_unitdir}/.debug ${systemd_unitdir}/*/.debug ${base_libdir}/security/.debug/" +FILES_${PN}-dev += "${base_libdir}/security/*.la ${datadir}/dbus-1/interfaces/ ${sysconfdir}/rpm/macros.systemd" + +RDEPENDS_${PN} += "kmod dbus util-linux-mount udev (= ${EXTENDPKGV})" + +RRECOMMENDS_${PN} += "systemd-serialgetty systemd-compat-units \ + util-linux-agetty \ + util-linux-fsck e2fsprogs-e2fsck \ + kernel-module-autofs4 kernel-module-unix kernel-module-ipv6 \ +" + +PACKAGES =+ "udev-dbg udev udev-utils udev-hwdb" + +FILES_udev-dbg += "/lib/udev/.debug" + +RDEPENDS_udev += "udev-utils" +RPROVIDES_udev = "hotplug" +RRECOMMENDS_udev += "udev-hwdb" + +RDEPENDS_udev-hwdb += "udev-utils" + +FILES_udev += "${base_sbindir}/udevd \ + ${rootlibexecdir}/systemd/systemd-udevd \ + ${rootlibexecdir}/udev/accelerometer \ + ${rootlibexecdir}/udev/ata_id \ + ${rootlibexecdir}/udev/cdrom_id \ + ${rootlibexecdir}/udev/collect \ + ${rootlibexecdir}/udev/findkeyboards \ + ${rootlibexecdir}/udev/keyboard-force-release.sh \ + ${rootlibexecdir}/udev/keymap \ + ${rootlibexecdir}/udev/mtd_probe \ + ${rootlibexecdir}/udev/scsi_id \ + ${rootlibexecdir}/udev/v4l_id \ + ${rootlibexecdir}/udev/keymaps \ + ${rootlibexecdir}/udev/rules.d/4*.rules \ + ${rootlibexecdir}/udev/rules.d/5*.rules \ + ${rootlibexecdir}/udev/rules.d/6*.rules \ + ${rootlibexecdir}/udev/rules.d/70-power-switch.rules \ + ${rootlibexecdir}/udev/rules.d/75*.rules \ + ${rootlibexecdir}/udev/rules.d/78*.rules \ + ${rootlibexecdir}/udev/rules.d/8*.rules \ + ${rootlibexecdir}/udev/rules.d/95*.rules \ + ${sysconfdir}/udev \ + ${sysconfdir}/init.d/systemd-udevd \ + ${systemd_unitdir}/system/*udev* \ + ${systemd_unitdir}/system/*.wants/*udev* \ + " + +FILES_udev-utils = "${base_bindir}/udevadm ${datadir}/bash-completion/completions/udevadm" + +FILES_udev-hwdb = "${rootlibexecdir}/udev/hwdb.d" + +INITSCRIPT_PACKAGES = "udev" +INITSCRIPT_NAME_udev = "systemd-udevd" +INITSCRIPT_PARAMS_udev = "start 03 S ." + +python __anonymous() { + if not bb.utils.contains('DISTRO_FEATURES', 'sysvinit', True, False, d): + d.setVar("INHIBIT_UPDATERCD_BBCLASS", "1") +} + +# TODO: +# u-a for runlevel and telinit + +ALTERNATIVE_${PN} = "init halt reboot shutdown poweroff runlevel" + +ALTERNATIVE_TARGET[init] = "${rootlibexecdir}/systemd/systemd" +ALTERNATIVE_LINK_NAME[init] = "${base_sbindir}/init" +ALTERNATIVE_PRIORITY[init] ?= "300" + +ALTERNATIVE_TARGET[halt] = "${base_bindir}/systemctl" +ALTERNATIVE_LINK_NAME[halt] = "${base_sbindir}/halt" +ALTERNATIVE_PRIORITY[halt] ?= "300" + +ALTERNATIVE_TARGET[reboot] = "${base_bindir}/systemctl" +ALTERNATIVE_LINK_NAME[reboot] = "${base_sbindir}/reboot" +ALTERNATIVE_PRIORITY[reboot] ?= "300" + +ALTERNATIVE_TARGET[shutdown] = "${base_bindir}/systemctl" +ALTERNATIVE_LINK_NAME[shutdown] = "${base_sbindir}/shutdown" +ALTERNATIVE_PRIORITY[shutdown] ?= "300" + +ALTERNATIVE_TARGET[poweroff] = "${base_bindir}/systemctl" +ALTERNATIVE_LINK_NAME[poweroff] = "${base_sbindir}/poweroff" +ALTERNATIVE_PRIORITY[poweroff] ?= "300" + +ALTERNATIVE_TARGET[runlevel] = "${base_bindir}/systemctl" +ALTERNATIVE_LINK_NAME[runlevel] = "${base_sbindir}/runlevel" +ALTERNATIVE_PRIORITY[runlevel] ?= "300" + +pkg_postinst_udev-hwdb () { + if test -n "$D"; then + ${@qemu_run_binary(d, '$D', '${base_bindir}/udevadm')} hwdb --update \ + --root $D + else + udevadm hwdb --update + fi +} + +pkg_prerm_udev-hwdb () { + if test -n "$D"; then + exit 1 + fi + + rm -f ${sysconfdir}/udev/hwdb.bin +} + +# As this recipe builds udev, respect systemd being in DISTRO_FEATURES so +# that we don't build both udev and systemd in world builds. +python () { + if not bb.utils.contains ('DISTRO_FEATURES', 'systemd', True, False, d): + raise bb.parse.SkipPackage("'systemd' not in DISTRO_FEATURES") +} -- cgit v1.2.3