On Mon, Jul 16, 2012 at 11:24:12AM +0200, Koen Kooi wrote: > This is a combined udev+systemd recipe: it will build both udev and systemd > in one go, but keep the old (sub)package layout: > > udev > udev-utils > udev-systemd > systemd > systemd-vconsole-setup > systemd-analyze > systemd-initramfs > > And all libraries are seperated out: > > libgudev-1.0-0 > libsystemd-daemon0 > libsystemd-id128-0 > libsystemd-journal0 > libsystemd-login0 > libudev1 > > The SRCREV is 94 patches ahead of the v186 tag to drag in compile fixes for > 'old' gcc versions like 4.5.x. > > Runtime tested with build from scratch and opkg upgrade with angstrom
With this upgrade (opkg upgraded) I see few services failing to start. I'll try to reproduce it on other devices (this is on qemux86-64) and maybe it was caused by some other changes (like meta-systemd move). SHR root@qemux86-64 ~ $ systemctl status systemd-modules-load.service systemd-modules-load.service - Load Kernel Modules Loaded: loaded (/lib/systemd/system/systemd-modules-load.service; static) Active: failed (Result: exit-code) since Mon, 16 Jul 2012 12:03:35 +0000; 2s ago Docs: man:systemd-modules-load.service(8) man:modules-load.d(5) Process: 524 ExecStart=/lib/systemd/systemd-modules-load (code=exited, status=1/FAILURE) CGroup: name=systemd:/system/systemd-modules-load.service Jul 16 12:03:35 qemux86-64 systemd-modules-load[524]: Failed to find module '... SHR root@qemux86-64 ~ $ systemctl status busybox-syslog.service busybox-syslog.service - System Logging Service Loaded: loaded (/lib/systemd/system/busybox-syslog.service; enabled) Active: failed (Result: exit-code) since Mon, 16 Jul 2012 12:03:55 +0000; 1s ago Process: 532 ExecStartPre=/bin/systemctl stop systemd-kmsg-syslogd.service (code=exited, status=1/FAILURE) CGroup: name=systemd:/system/busybox-syslog.service Jul 16 12:03:56 qemux86-64 systemctl[532]: Failed to issue method call: Unit.... Cheers, > Signed-off-by: Koen Kooi <k...@dominion.thruhere.net> > --- > > This is an RFC, it builds & works, but it can use cleanup. > > A regression from the previous udev recipe are the 2 missing OE rule files: > touchscreen.rules and modprobe.rules. These should certainly get added. > A potential cleanup would be to give each lib its own -dev, -dbg and > -staticdev to avoid dragging in systemd with installing libudev1-dbg, which > is what people are currently griping about. > > .../systemd/systemd/format-replace-m-uclibc.patch | 389 > -------------------- > .../recipes-core/systemd/systemd}/gtk-doc.make | 0 > .../systemd/systemd/paper-over-mkostemp.patch | 19 - > meta-systemd/recipes-core/systemd/systemd_git.bb | 89 ++++- > 4 files changed, 75 insertions(+), 422 deletions(-) > delete mode 100644 > meta-systemd/recipes-core/systemd/systemd/format-replace-m-uclibc.patch > copy {meta-oe/recipes-core/udev/udev => > meta-systemd/recipes-core/systemd/systemd}/gtk-doc.make (100%) > delete mode 100644 > meta-systemd/recipes-core/systemd/systemd/paper-over-mkostemp.patch > > diff --git > a/meta-systemd/recipes-core/systemd/systemd/format-replace-m-uclibc.patch > b/meta-systemd/recipes-core/systemd/systemd/format-replace-m-uclibc.patch > deleted file mode 100644 > index dd86121..0000000 > --- a/meta-systemd/recipes-core/systemd/systemd/format-replace-m-uclibc.patch > +++ /dev/null > @@ -1,389 +0,0 @@ > -Patch from Henning. %m is a glibc only thing. For uclibc we need to do it > -differently. So we use static strings instead of mallocing them and free'ing > - > -I dont know if upstream systemd have plans to make systemd work on non > -glibc system libraries if not then this patch would not make sense for > -upstream > - > -Signed-off-by: Khem Raj <raj.k...@gmail.com> > - > -Index: git/src/mount-setup.c > -=================================================================== > ---- git.orig/src/mount-setup.c 2012-01-26 21:15:12.573084007 -0800 > -+++ git/src/mount-setup.c 2012-01-26 21:15:16.005084174 -0800 > -@@ -182,10 +182,10 @@ > - (void) fgets(buf, sizeof(buf), f); > - > - for (;;) { > -- char *controller; > -+ char controller[30]; > - int enabled = 0; > - > -- if (fscanf(f, "%ms %*i %*i %i", &controller, &enabled) != > 2) { > -+ if (fscanf(f, "%s %*i %*i %i", controller, &enabled) != 2) { > - > - if (feof(f)) > - break; > -@@ -196,14 +196,12 @@ > - } > - > - if (!enabled) { > -- free(controller); > - continue; > - } > - > - r = set_put(controllers, controller); > - if (r < 0) { > - log_error("Failed to add controller to set."); > -- free(controller); > - goto finish; > - } > - } > -@@ -273,7 +271,6 @@ > - p.fatal = false; > - > - r = mount_one(&p, true); > -- free(controller); > - free(where); > - > - if (r < 0) { > -Index: git/src/socket-util.c > -=================================================================== > ---- git.orig/src/socket-util.c 2012-01-26 21:15:12.593084008 -0800 > -+++ git/src/socket-util.c 2012-01-26 21:15:16.005084174 -0800 > -@@ -192,7 +192,7 @@ > - int socket_address_parse_netlink(SocketAddress *a, const char *s) { > - int family; > - unsigned group = 0; > -- char* sfamily = NULL; > -+ char sfamily[50]; > - assert(a); > - assert(s); > - > -@@ -200,17 +200,14 @@ > - a->type = SOCK_RAW; > - > - errno = 0; > -- if (sscanf(s, "%ms %u", &sfamily, &group) < 1) > -+ if (sscanf(s, "%49s %u", &sfamily, &group) < 1) > - return errno ? -errno : -EINVAL; > - > - if ((family = netlink_family_from_string(sfamily)) < 0) > - if (safe_atoi(sfamily, &family) < 0) { > -- free(sfamily); > - return -EINVAL; > - } > - > -- free(sfamily); > -- > - a->sockaddr.nl.nl_family = AF_NETLINK; > - a->sockaddr.nl.nl_groups = group; > - > -Index: git/src/swap.c > -=================================================================== > ---- git.orig/src/swap.c 2012-01-26 21:15:12.593084008 -0800 > -+++ git/src/swap.c 2012-01-26 21:15:16.005084174 -0800 > -@@ -1049,11 +1049,12 @@ > - (void) fscanf(m->proc_swaps, "%*s %*s %*s %*s %*s\n"); > - > - for (i = 1;; i++) { > -- char *dev = NULL, *d; > -+ char *d; > -+ char dev[20]; > - int prio = 0, k; > - > - if ((k = fscanf(m->proc_swaps, > -- "%ms " /* device/file */ > -+ "%19s " /* device/file */ > - "%*s " /* type of swap */ > - "%*s " /* swap size */ > - "%*s " /* used */ > -@@ -1064,12 +1065,10 @@ > - break; > - > - log_warning("Failed to parse /proc/swaps:%u.", i); > -- free(dev); > - continue; > - } > - > - d = cunescape(dev); > -- free(dev); > - > - if (!d) > - return -ENOMEM; > -Index: git/src/tmpfiles.c > -=================================================================== > ---- git.orig/src/tmpfiles.c 2012-01-26 21:15:12.617084010 -0800 > -+++ git/src/tmpfiles.c 2012-01-26 23:17:01.185437712 -0800 > -@@ -73,8 +73,8 @@ > - typedef struct Item { > - ItemType type; > - > -- char *path; > -- char *argument; > -+ char path[50]; > -+ char argument[50]; > - uid_t uid; > - gid_t gid; > - mode_t mode; > -@@ -822,7 +822,6 @@ > - case CREATE_CHAR_DEVICE: > - case CREATE_BLOCK_DEVICE: > - case IGNORE_PATH: > -- case RELABEL_PATH: > - case RECURSIVE_RELABEL_PATH: > - case WRITE_FILE: > - break; > -@@ -858,8 +857,6 @@ > - static void item_free(Item *i) { > - assert(i); > - > -- free(i->path); > -- free(i->argument); > - free(i); > - } > - > -@@ -906,7 +903,7 @@ > - > - static int parse_line(const char *fname, unsigned line, const char *buffer) > { > - Item *i, *existing; > -- char *mode = NULL, *user = NULL, *group = NULL, *age = NULL; > -+ char mode[50], user[50], group[50], age[50]; > - char type; > - Hashmap *h; > - int r, n = -1; > -@@ -923,18 +920,18 @@ > - > - if (sscanf(buffer, > - "%c " > -- "%ms " > -- "%ms " > -- "%ms " > -- "%ms " > -- "%ms " > -+ "%s " > -+ "%s " > -+ "%s " > -+ "%s " > -+ "%s " > - "%n", > - &type, > - &i->path, > -- &mode, > -- &user, > -- &group, > -- &age, > -+ mode, > -+ user, > -+ group, > -+ age, > - &n) < 2) { > - log_error("[%s:%u] Syntax error.", fname, line); > - r = -EIO; > -@@ -944,7 +941,7 @@ > - if (n >= 0) { > - n += strspn(buffer+n, WHITESPACE); > - if (buffer[n] != 0 && (buffer[n] != '-' || buffer[n+1] != > 0)) { > -- i->argument = unquote(buffer+n, "\""); > -+ strcpy(i->argument, unquote(buffer+n, "\"")); > - if (!i->argument) { > - log_error("Out of memory"); > - return -ENOMEM; > -@@ -1096,11 +1093,6 @@ > - r = 0; > - > - finish: > -- free(user); > -- free(group); > -- free(mode); > -- free(age); > -- > - if (i) > - item_free(i); > - > -Index: git/src/mount.c > -=================================================================== > ---- git.orig/src/mount.c 2012-01-26 21:15:12.573084007 -0800 > -+++ git/src/mount.c 2012-01-26 21:15:16.005084174 -0800 > -@@ -24,6 +24,7 @@ > - #include <mntent.h> > - #include <sys/epoll.h> > - #include <signal.h> > -+#include <string.h> > - > - #include "unit.h" > - #include "mount.h" > -@@ -1561,7 +1562,13 @@ > - static int mount_load_proc_self_mountinfo(Manager *m, bool set_flags) { > - int r = 0; > - unsigned i; > -- char *device, *path, *options, *options2, *fstype, *d, *p, *o; > -+ char *d, *p, *o; > -+ char device[50]; > -+ char path[50]; > -+ char options[50]; > -+ char options2[50]; > -+ char fstype[50]; > -+ > - > - assert(m); > - > -@@ -1570,26 +1577,26 @@ > - for (i = 1;; i++) { > - int k; > - > -- device = path = options = options2 = fstype = d = p = o = > NULL; > -+ d = p = o = NULL; > - > - if ((k = fscanf(m->proc_self_mountinfo, > - "%*s " /* (1) mount id */ > - "%*s " /* (2) parent id */ > - "%*s " /* (3) major:minor */ > - "%*s " /* (4) root */ > -- "%ms " /* (5) mount point */ > -- "%ms" /* (6) mount options */ > -+ "%49s " /* (5) mount point */ > -+ "%49s" /* (6) mount options */ > - "%*[^-]" /* (7) optional fields */ > - "- " /* (8) separator */ > -- "%ms " /* (9) file system type */ > -- "%ms" /* (10) mount source */ > -- "%ms" /* (11) mount options 2 */ > -+ "%49s " /* (9) file system type */ > -+ "%49s" /* (10) mount source */ > -+ "%49s" /* (11) mount options 2 */ > - "%*[^\n]", /* some rubbish at the end */ > -- &path, > -- &options, > -- &fstype, > -- &device, > -- &options2)) != 5) { > -+ path, > -+ options, > -+ fstype, > -+ device, > -+ options2)) != 5) { > - > - if (k == EOF) > - break; > -@@ -1613,22 +1620,12 @@ > - r = k; > - > - clean_up: > -- free(device); > -- free(path); > -- free(options); > -- free(options2); > -- free(fstype); > - free(d); > - free(p); > - free(o); > - } > - > - finish: > -- free(device); > -- free(path); > -- free(options); > -- free(options2); > -- free(fstype); > - free(d); > - free(p); > - free(o); > -Index: git/src/umount.c > -=================================================================== > ---- git.orig/src/umount.c 2012-01-26 21:15:12.617084010 -0800 > -+++ git/src/umount.c 2012-01-26 21:15:16.005084174 -0800 > -@@ -60,7 +60,9 @@ > - > - static int mount_points_list_get(MountPoint **head) { > - FILE *proc_self_mountinfo; > -- char *path, *p; > -+ char *p; > -+ char path[50]; > -+ > - unsigned int i; > - int r; > - > -@@ -72,17 +74,17 @@ > - for (i = 1;; i++) { > - int k; > - MountPoint *m; > -- char *root; > -+ char root[50]; > - bool skip_ro; > - > -- path = p = NULL; > -+ p = NULL; > - > - if ((k = fscanf(proc_self_mountinfo, > - "%*s " /* (1) mount id */ > - "%*s " /* (2) parent id */ > - "%*s " /* (3) major:minor */ > -- "%ms " /* (4) root */ > -- "%ms " /* (5) mount point */ > -+ "%49s " /* (4) root */ > -+ "%49s " /* (5) mount point */ > - "%*s" /* (6) mount options */ > - "%*[^-]" /* (7) optional fields */ > - "- " /* (8) separator */ > -@@ -90,24 +92,21 @@ > - "%*s" /* (10) mount source */ > - "%*s" /* (11) mount options 2 */ > - "%*[^\n]", /* some rubbish at the end */ > -- &root, > -- &path)) != 2) { > -+ root, > -+ path)) != 2) { > - if (k == EOF) > - break; > - > - log_warning("Failed to parse > /proc/self/mountinfo:%u.", i); > - > -- free(path); > - continue; > - } > - > - /* If we encounter a bind mount, don't try to remount > - * the source dir too early */ > - skip_ro = !streq(root, "/"); > -- free(root); > - > - p = cunescape(path); > -- free(path); > - > - if (!p) { > - r = -ENOMEM; > -@@ -152,28 +151,28 @@ > - > - for (i = 2;; i++) { > - MountPoint *swap; > -- char *dev = NULL, *d; > -+ char *d; > -+ char dev[50]; > -+ > - int k; > - > - if ((k = fscanf(proc_swaps, > -- "%ms " /* device/file */ > -+ "%50s " /* device/file */ > - "%*s " /* type of swap */ > - "%*s " /* swap size */ > - "%*s " /* used */ > - "%*s\n", /* priority */ > -- &dev)) != 1) { > -+ dev)) != 1) { > - > - if (k == EOF) > - break; > - > - log_warning("Failed to parse /proc/swaps:%u.", i); > - > -- free(dev); > - continue; > - } > - > - if (endswith(dev, "(deleted)")) { > -- free(dev); > - continue; > - } > - > diff --git a/meta-oe/recipes-core/udev/udev/gtk-doc.make > b/meta-systemd/recipes-core/systemd/systemd/gtk-doc.make > similarity index 100% > copy from meta-oe/recipes-core/udev/udev/gtk-doc.make > copy to meta-systemd/recipes-core/systemd/systemd/gtk-doc.make > diff --git > a/meta-systemd/recipes-core/systemd/systemd/paper-over-mkostemp.patch > b/meta-systemd/recipes-core/systemd/systemd/paper-over-mkostemp.patch > deleted file mode 100644 > index ca10440..0000000 > --- a/meta-systemd/recipes-core/systemd/systemd/paper-over-mkostemp.patch > +++ /dev/null > @@ -1,19 +0,0 @@ > -uclibc does not have mkostemp() so we redefine it to use mkstemp() > - > -Signed-off-by: Khem Raj <raj.k...@gmail.com> > - > -Index: git/src/macro.h > -=================================================================== > ---- git.orig/src/macro.h 2011-06-30 10:33:53.000000000 -0700 > -+++ git/src/macro.h 2011-06-30 15:07:28.285270006 -0700 > -@@ -27,6 +27,10 @@ > - #include <sys/uio.h> > - #include <inttypes.h> > - > -+#ifdef __UCLIBC__ > -+/* uclibc does not implement mkostemp GNU extention */ > -+#define mkostemp(x,y) mkstemp(x) > -+#endif > - #define _printf_attr_(a,b) __attribute__ ((format (printf, a, b))) > - #define _sentinel_ __attribute__ ((sentinel)) > - #define _noreturn_ __attribute__((noreturn)) > diff --git a/meta-systemd/recipes-core/systemd/systemd_git.bb > b/meta-systemd/recipes-core/systemd/systemd_git.bb > index f4ca72a..e275576 100644 > --- a/meta-systemd/recipes-core/systemd/systemd_git.bb > +++ b/meta-systemd/recipes-core/systemd/systemd_git.bb > @@ -1,9 +1,14 @@ > DESCRIPTION = "Systemd a init replacement" > HOMEPAGE = "http://www.freedesktop.org/wiki/Software/systemd" > -LICENSE = "GPLv2+" > -LIC_FILES_CHKSUM = "file://LICENSE;md5=751419260aa954499f7abaabaa882bbe" > > -DEPENDS = "xz kmod docbook-sgml-dtd-4.1-native intltool-native gperf-native > acl readline udev dbus libcap libcgroup tcp-wrappers" > +LICENSE = "GPLv2 & LGPLv2.1 & MIT" > +LIC_FILES_CHKSUM = "file://LICENSE.GPL2;md5=751419260aa954499f7abaabaa882bbe > \ > + > file://LICENSE.LGPL2.1;md5=fb919cc88dbe06ec0b0bd50e001ccf1f \ > + file://LICENSE.MIT;md5=544799d0b492f119fa04641d1b8868ed" > + > +PROVIDES = "udev" > + > +DEPENDS = "xz kmod docbook-sgml-dtd-4.1-native intltool-native gperf-native > acl readline dbus libcap libcgroup tcp-wrappers" > DEPENDS += "${@base_contains('DISTRO_FEATURES', 'pam', 'libpam', '', d)}" > > SERIAL_CONSOLE ?= "115200 /dev/ttyS0" > @@ -14,19 +19,14 @@ inherit gitpkgv > PKGV = "v${GITPKGVTAG}" > > PV = "git" > -PR = "r27" > +PR = "r1" > > inherit useradd pkgconfig autotools vala perlnative > > -SRCREV = "3eff4208ffecedd778fec260f0d4b18e94dab443" > +SRCREV = "17ec33d69e1222ea11bfffe7c5a08fe435e8b4f2" > > SRC_URI = "git://anongit.freedesktop.org/systemd/systemd;protocol=git \ > - ${UCLIBCPATCHES} \ > - " > -UCLIBCPATCHES = "" > -UCLIBCPATCHES_libc-uclibc = "file://paper-over-mkostemp.patch \ > - file://format-replace-m-uclibc.patch \ > - " > + file://gtk-doc.make" > > LDFLAGS_libc-uclibc_append = " -lrt" > > @@ -39,17 +39,27 @@ SYSTEMDDISTRO_angstrom = "angstrom" > EXTRA_OECONF = " --with-distro=${SYSTEMDDISTRO} \ > --with-rootprefix=${base_prefix} \ > --with-rootlibdir=${base_libdir} \ > + --sbindir=${base_sbindir} \ > + --libexecdir=${base_libdir} \ > ${@base_contains('DISTRO_FEATURES', 'pam', '--enable-pam', > '--disable-pam', d)} \ > - --disable-gtk \ > --enable-xz \ > --disable-manpages \ > --disable-coredump \ > + --disable-introspection \ > + --with-pci-ids-path=/usr/share/misc \ > + ac_cv_file__usr_share_pci_ids=no \ > + ac_cv_file__usr_share_hwdata_pci_ids=no \ > + ac_cv_file__usr_share_misc_pci_ids=yes \ > + --disable-gtk-doc-html \ > + --disable-tcpwrap \ > " > > # There's no docbook-xsl-native, so for the xsltproc check to false > do_configure_prepend() { > sed -i /xsltproc/d configure.ac > > + cp ${WORKDIR}/gtk-doc.make ${S}/docs/ > + > # we only have /home/root, not /root > sed -i -e 's:=/root:=/home/root:g' units/*.service* > } > @@ -100,10 +110,18 @@ FILES_${PN} = " ${base_bindir}/* \ > ${datadir}/dbus-1/system-services \ > ${datadir}/polkit-1 \ > ${datadir}/${PN} \ > - ${sysconfdir} \ > + ${sysconfdir}/bash_completion.d/ \ > + ${sysconfdir}/binfmt.d/ \ > + ${sysconfdir}/dbus-1/ \ > + ${sysconfdir}/machine-id \ > + ${sysconfdir}/modules-load.d/ \ > + ${sysconfdir}/sysctl.d/ \ > + ${sysconfdir}/systemd/ \ > + ${sysconfdir}/tmpfiles.d/ \ > + ${sysconfdir}/xdg/ \ > ${systemd_unitdir}/* \ > ${systemd_unitdir}/system/* \ > - ${base_libdir}/udev/rules.d \ > + ${base_libdir}/udev/rules.d/99-systemd.rules \ > ${base_libdir}/security/*.so \ > /cgroup \ > ${bindir}/systemd* \ > @@ -114,6 +132,10 @@ FILES_${PN} = " ${base_bindir}/* \ > ${libdir}/sysctl.d \ > ${localstatedir} \ > ${libexecdir} \ > + ${base_libdir}/udev/rules.d/70-uaccess.rules \ > + ${base_libdir}/udev/rules.d/71-seat.rules \ > + ${base_libdir}/udev/rules.d/73-seat-late.rules \ > + ${base_libdir}/udev/rules.d/99-systemd.rules \ > " > > FILES_${PN}-dbg += "${systemd_unitdir}/.debug ${systemd_unitdir}/*/.debug > ${base_libdir}/security/.debug/" > @@ -136,6 +158,45 @@ RRECOMMENDS_${PN} += "systemd-serialgetty \ > kernel-module-autofs4 kernel-module-unix > kernel-module-ipv6 \ > " > > +PACKAGES =+ "udev-dbg udev udev-consolekit udev-utils udev-systemd" > + > +FILES_udev-dbg += "${base_libdir}/udev/.debug" > + > +RDEPENDS_udev += "udev-utils" > +RPROVIDES_udev = "hotplug" > + > +FILES_udev += "${base_libdir}/udev/udevd \ > + ${base_libdir}/systemd/systemd-udevd \ > + ${base_libdir}/udev/accelerometer \ > + ${base_libdir}/udev/ata_id \ > + ${base_libdir}/udev/cdrom_id \ > + ${base_libdir}/udev/collect \ > + ${base_libdir}/udev/findkeyboards \ > + ${base_libdir}/udev/keyboard-force-release.sh \ > + ${base_libdir}/udev/keymap \ > + ${base_libdir}/udev/mtd_probe \ > + ${base_libdir}/udev/scsi_id \ > + ${base_libdir}/udev/v4l_id \ > + ${base_libdir}/udev/keymaps \ > + ${base_libdir}/udev/rules.d/4*.rules \ > + ${base_libdir}/udev/rules.d/5*.rules \ > + ${base_libdir}/udev/rules.d/6*.rules \ > + ${base_libdir}/udev/rules.d/70-power-switch.rules \ > + ${base_libdir}/udev/rules.d/75*.rules \ > + ${base_libdir}/udev/rules.d/78*.rules \ > + ${base_libdir}/udev/rules.d/8*.rules \ > + ${base_libdir}/udev/rules.d/95*.rules \ > + ${sysconfdir}/udev \ > + " > + > +FILES_udev-consolekit += "${libdir}/ConsoleKit" > +RDEPENDS_udev-consolekit += "${@base_contains('DISTRO_FEATURES', 'x11', > 'consolekit', '', d)}" > + > +FILES_udev-utils = "${bindir}/udevadm" > + > +FILES_udev-systemd = "${base_libdir}/systemd/system/*udev* > ${base_libdir}/systemd/system/*.wants/*udev*" > +RDEPENDS_udev-systemd = "udev" > + > # TODO: > # u-a for runlevel and telinit > > -- > 1.7.10 > > > _______________________________________________ > Openembedded-devel mailing list > Openembedded-devel@lists.openembedded.org > http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-devel -- Martin 'JaMa' Jansa jabber: martin.ja...@gmail.com
signature.asc
Description: Digital signature
_______________________________________________ Openembedded-devel mailing list Openembedded-devel@lists.openembedded.org http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-devel