Patchwork [meta-systemd,V2,18/25] systemd: Fix build when base_libdir is not /lib

login
register
mail settings
Submitter Khem Raj
Date Jan. 6, 2013, 9:12 a.m.
Message ID <1357463568-26241-18-git-send-email-raj.khem@gmail.com>
Download mbox | patch
Permalink /patch/42045/
State Accepted, archived
Headers show

Comments

Khem Raj - Jan. 6, 2013, 9:12 a.m.
we were carrying a wrong patch to fix rootlibdir
to adapt systemd to OE's notion of base_libdir
but thats not right and the units dont get initialised
properly when we have base_libdir which is not /lib

This patch fixes the use of base_libdir where
it should have been catering to notions of systemd/udev
for putting unit files and init scripts in /lib
and not in base_libdir

It also ignores the lib32-* packages so that systemd
build works for multilib enabled systems.

Adapt to nativesdk renaming

Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
 meta-systemd/classes/systemd.bbclass             |    7 +-
 meta-systemd/recipes-core/systemd/systemd_git.bb |   77 ++++++++++++----------
 2 files changed, 45 insertions(+), 39 deletions(-)
Martin Jansa - Jan. 9, 2013, 10:18 a.m.
On Sun, Jan 06, 2013 at 01:12:41AM -0800, Khem Raj wrote:
> we were carrying a wrong patch to fix rootlibdir
> to adapt systemd to OE's notion of base_libdir
> but thats not right and the units dont get initialised
> properly when we have base_libdir which is not /lib
> 
> This patch fixes the use of base_libdir where
> it should have been catering to notions of systemd/udev
> for putting unit files and init scripts in /lib
> and not in base_libdir
> 
> It also ignores the lib32-* packages so that systemd
> build works for multilib enabled systems.
> 
> Adapt to nativesdk renaming

Whole V3 merged today, bitbake world has some new build issues but none
of them is caused by those changes.

Thanks khem!

Please double check that your systemd changes are also merged to oe-core
at some point (I don't think "[OE-core] [PATCH 00/21][RFC v3] systemd
Integration" have them all now).

Cheers,

> Signed-off-by: Khem Raj <raj.khem@gmail.com>
> ---
>  meta-systemd/classes/systemd.bbclass             |    7 +-
>  meta-systemd/recipes-core/systemd/systemd_git.bb |   77 ++++++++++++----------
>  2 files changed, 45 insertions(+), 39 deletions(-)
> 
> diff --git a/meta-systemd/classes/systemd.bbclass b/meta-systemd/classes/systemd.bbclass
> index f26c6d1..9582492 100644
> --- a/meta-systemd/classes/systemd.bbclass
> +++ b/meta-systemd/classes/systemd.bbclass
> @@ -70,7 +70,8 @@ def systemd_after_parse(d):
>      bpn = d.getVar('BPN', 1)
>      if bpn + "-native" != d.getVar('PN', 1) and \
>              bpn + "-cross" != d.getVar('PN', 1) and \
> -            bpn + "-nativesdk" != d.getVar('PN', 1):
> +            not d.getVar('MLPREFIX', 1) and \
> +            "nativesdk-" + bpn != d.getVar('PN', 1):
>          systemd_check_vars()
>          for pkg_systemd in d.getVar('SYSTEMD_PACKAGES', 1).split():
>              systemd_create_package(pkg_systemd)
> @@ -158,8 +159,8 @@ python populate_packages_prepend () {
>      def systemd_check_services():
>          base_libdir = d.getVar('base_libdir', 1)
>          searchpaths = '/etc/systemd/system/' + ' '
> -        searchpaths += d.getVar('base_libdir', 1) + '/systemd/system/' + ' '
> -        searchpaths += d.getVar('libdir', 1) + '/systemd/system/' + ' '
> +        searchpaths += '/lib/systemd/system/' + ' '
> +        searchpaths += '/usr/lib/systemd/system/' + ' '
>          systemd_packages = d.getVar('SYSTEMD_PACKAGES', 1)
>          has_exactly_one_service = len(systemd_packages.split()) == 1
>          if has_exactly_one_service:
> diff --git a/meta-systemd/recipes-core/systemd/systemd_git.bb b/meta-systemd/recipes-core/systemd/systemd_git.bb
> index 7fa7ac6..5722d35 100644
> --- a/meta-systemd/recipes-core/systemd/systemd_git.bb
> +++ b/meta-systemd/recipes-core/systemd/systemd_git.bb
> @@ -90,6 +90,7 @@ do_configure_prepend() {
>  
>  do_install() {
>  	autotools_do_install
> +	install -d ${D}${base_sbindir}
>  	# provided by a seperate recipe
>  	rm ${D}${systemd_unitdir}/system/serial-getty* -f
>  
> @@ -98,7 +99,10 @@ do_install() {
>  
>  	# create dir for journal
>  	install -d ${D}${localstatedir}/log/journal
> -
> +	# udevd is needed in initramfs which was provided by udev in OE-Core
> +	# so we need to provide that otherwise it pulls in both systemd and
> +	# udev
> +	ln -s ${systemd_unitdir}/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
> @@ -159,24 +163,24 @@ FILES_${PN} = " ${base_bindir}/* \
>                  ${sysconfdir}/init.d/README \
>                  ${systemd_unitdir}/* \
>                  ${systemd_unitdir}/system/* \
> -                ${base_libdir}/udev/rules.d/99-systemd.rules \
> +                /lib/udev/rules.d/99-systemd.rules \
>                  ${base_libdir}/security/*.so \
>                  /cgroup \
>                  ${bindir}/systemd* \
>                  ${bindir}/localectl \
>                  ${bindir}/hostnamectl \
>                  ${bindir}/timedatectl \
> -                ${libdir}/tmpfiles.d/*.conf \
> -                ${libdir}/systemd \
> -                ${libdir}/binfmt.d \
> -                ${libdir}/modules-load.d \
> -                ${libdir}/sysctl.d \
> +                ${exec_prefix}/lib/tmpfiles.d/*.conf \
> +                ${exec_prefix}/lib/systemd \
> +                ${exec_prefix}/lib/binfmt.d \
> +                ${exec_prefix}/lib/modules-load.d \
> +                ${exec_prefix}/lib/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 \
> +                /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 \
>                 "
>  FILES_${PN}-dbg += "${systemd_unitdir}/.debug ${systemd_unitdir}/*/.debug ${base_libdir}/security/.debug/ ${PYTHON_SITEPACKAGES_DIR}/systemd/.debug/"
>  FILES_${PN}-dev += "${base_libdir}/security/*.la ${datadir}/dbus-1/interfaces/ ${sysconfdir}/rpm/macros.systemd ${PYTHON_SITEPACKAGES_DIR}/systemd/*.la"
> @@ -200,42 +204,43 @@ RRECOMMENDS_${PN} += "systemd-serialgetty \
>  
>  PACKAGES =+ "udev-dbg udev udev-consolekit udev-utils udev-systemd"
>  
> -FILES_udev-dbg += "${base_libdir}/udev/.debug"
> +FILES_udev-dbg += "/lib/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 \
> -               ${base_libdir}/udev/hwdb.d \
> +FILES_udev += "${base_sbindir}/udevd \
> +               /lib/udev/udevd \
> +               /lib/systemd/systemd-udevd \
> +               /lib/udev/accelerometer \
> +               /lib/udev/ata_id \
> +               /lib/udev/cdrom_id \
> +               /lib/udev/collect \
> +               /lib/udev/findkeyboards \
> +               /lib/udev/keyboard-force-release.sh \
> +               /lib/udev/keymap \
> +               /lib/udev/mtd_probe \
> +               /lib/udev/scsi_id \
> +               /lib/udev/v4l_id \
> +               /lib/udev/keymaps \
> +               /lib/udev/rules.d/4*.rules \
> +               /lib/udev/rules.d/5*.rules \
> +               /lib/udev/rules.d/6*.rules \
> +               /lib/udev/rules.d/70-power-switch.rules \
> +               /lib/udev/rules.d/75*.rules \
> +               /lib/udev/rules.d/78*.rules \
> +               /lib/udev/rules.d/8*.rules \
> +               /lib/udev/rules.d/95*.rules \
> +               /lib/udev/hwdb.d \
>                 ${sysconfdir}/udev \
>                "
>  
> -FILES_udev-consolekit += "${libdir}/ConsoleKit"
> +FILES_udev-consolekit += "/lib/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*"
> +FILES_udev-systemd = "${systemd_unitdir}/system/*udev* ${systemd_unitdir}/system/*.wants/*udev*"
>  RDEPENDS_udev-systemd = "udev"
>  
>  # TODO:
> -- 
> 1.7.9.5
> 
> 
> _______________________________________________
> Openembedded-devel mailing list
> Openembedded-devel@lists.openembedded.org
> http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-devel

Patch

diff --git a/meta-systemd/classes/systemd.bbclass b/meta-systemd/classes/systemd.bbclass
index f26c6d1..9582492 100644
--- a/meta-systemd/classes/systemd.bbclass
+++ b/meta-systemd/classes/systemd.bbclass
@@ -70,7 +70,8 @@  def systemd_after_parse(d):
     bpn = d.getVar('BPN', 1)
     if bpn + "-native" != d.getVar('PN', 1) and \
             bpn + "-cross" != d.getVar('PN', 1) and \
-            bpn + "-nativesdk" != d.getVar('PN', 1):
+            not d.getVar('MLPREFIX', 1) and \
+            "nativesdk-" + bpn != d.getVar('PN', 1):
         systemd_check_vars()
         for pkg_systemd in d.getVar('SYSTEMD_PACKAGES', 1).split():
             systemd_create_package(pkg_systemd)
@@ -158,8 +159,8 @@  python populate_packages_prepend () {
     def systemd_check_services():
         base_libdir = d.getVar('base_libdir', 1)
         searchpaths = '/etc/systemd/system/' + ' '
-        searchpaths += d.getVar('base_libdir', 1) + '/systemd/system/' + ' '
-        searchpaths += d.getVar('libdir', 1) + '/systemd/system/' + ' '
+        searchpaths += '/lib/systemd/system/' + ' '
+        searchpaths += '/usr/lib/systemd/system/' + ' '
         systemd_packages = d.getVar('SYSTEMD_PACKAGES', 1)
         has_exactly_one_service = len(systemd_packages.split()) == 1
         if has_exactly_one_service:
diff --git a/meta-systemd/recipes-core/systemd/systemd_git.bb b/meta-systemd/recipes-core/systemd/systemd_git.bb
index 7fa7ac6..5722d35 100644
--- a/meta-systemd/recipes-core/systemd/systemd_git.bb
+++ b/meta-systemd/recipes-core/systemd/systemd_git.bb
@@ -90,6 +90,7 @@  do_configure_prepend() {
 
 do_install() {
 	autotools_do_install
+	install -d ${D}${base_sbindir}
 	# provided by a seperate recipe
 	rm ${D}${systemd_unitdir}/system/serial-getty* -f
 
@@ -98,7 +99,10 @@  do_install() {
 
 	# create dir for journal
 	install -d ${D}${localstatedir}/log/journal
-
+	# udevd is needed in initramfs which was provided by udev in OE-Core
+	# so we need to provide that otherwise it pulls in both systemd and
+	# udev
+	ln -s ${systemd_unitdir}/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
@@ -159,24 +163,24 @@  FILES_${PN} = " ${base_bindir}/* \
                 ${sysconfdir}/init.d/README \
                 ${systemd_unitdir}/* \
                 ${systemd_unitdir}/system/* \
-                ${base_libdir}/udev/rules.d/99-systemd.rules \
+                /lib/udev/rules.d/99-systemd.rules \
                 ${base_libdir}/security/*.so \
                 /cgroup \
                 ${bindir}/systemd* \
                 ${bindir}/localectl \
                 ${bindir}/hostnamectl \
                 ${bindir}/timedatectl \
-                ${libdir}/tmpfiles.d/*.conf \
-                ${libdir}/systemd \
-                ${libdir}/binfmt.d \
-                ${libdir}/modules-load.d \
-                ${libdir}/sysctl.d \
+                ${exec_prefix}/lib/tmpfiles.d/*.conf \
+                ${exec_prefix}/lib/systemd \
+                ${exec_prefix}/lib/binfmt.d \
+                ${exec_prefix}/lib/modules-load.d \
+                ${exec_prefix}/lib/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 \
+                /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 \
                "
 FILES_${PN}-dbg += "${systemd_unitdir}/.debug ${systemd_unitdir}/*/.debug ${base_libdir}/security/.debug/ ${PYTHON_SITEPACKAGES_DIR}/systemd/.debug/"
 FILES_${PN}-dev += "${base_libdir}/security/*.la ${datadir}/dbus-1/interfaces/ ${sysconfdir}/rpm/macros.systemd ${PYTHON_SITEPACKAGES_DIR}/systemd/*.la"
@@ -200,42 +204,43 @@  RRECOMMENDS_${PN} += "systemd-serialgetty \
 
 PACKAGES =+ "udev-dbg udev udev-consolekit udev-utils udev-systemd"
 
-FILES_udev-dbg += "${base_libdir}/udev/.debug"
+FILES_udev-dbg += "/lib/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 \
-               ${base_libdir}/udev/hwdb.d \
+FILES_udev += "${base_sbindir}/udevd \
+               /lib/udev/udevd \
+               /lib/systemd/systemd-udevd \
+               /lib/udev/accelerometer \
+               /lib/udev/ata_id \
+               /lib/udev/cdrom_id \
+               /lib/udev/collect \
+               /lib/udev/findkeyboards \
+               /lib/udev/keyboard-force-release.sh \
+               /lib/udev/keymap \
+               /lib/udev/mtd_probe \
+               /lib/udev/scsi_id \
+               /lib/udev/v4l_id \
+               /lib/udev/keymaps \
+               /lib/udev/rules.d/4*.rules \
+               /lib/udev/rules.d/5*.rules \
+               /lib/udev/rules.d/6*.rules \
+               /lib/udev/rules.d/70-power-switch.rules \
+               /lib/udev/rules.d/75*.rules \
+               /lib/udev/rules.d/78*.rules \
+               /lib/udev/rules.d/8*.rules \
+               /lib/udev/rules.d/95*.rules \
+               /lib/udev/hwdb.d \
                ${sysconfdir}/udev \
               "
 
-FILES_udev-consolekit += "${libdir}/ConsoleKit"
+FILES_udev-consolekit += "/lib/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*"
+FILES_udev-systemd = "${systemd_unitdir}/system/*udev* ${systemd_unitdir}/system/*.wants/*udev*"
 RDEPENDS_udev-systemd = "udev"
 
 # TODO: