diff options
author | Muhammad Shakeel <muhammad_shakeel@mentor.com> | 2013-09-27 18:14:15 +0000 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2013-09-30 22:11:58 +0100 |
commit | d2736102f3b32306e3d0edb9584548ad9a967881 (patch) | |
tree | 2ed82ca70157d112b7cbdec7e4de4d6fe0486a4f /meta | |
parent | 7509c0f647f65c42ff256d2bfb9e1ffb2f3d816e (diff) | |
download | poky-d2736102f3b32306e3d0edb9584548ad9a967881.tar.gz |
opkg: Use systemd service for first boot configuration
Currently opkg uses a script to configure packages during first time boot.
This script is present in rcS.d and when 'sysvinit' is disabled this
script doesn't execute. For systemd only distros this newly added service
will run the opkg configure during first boot only.
(From OE-Core rev: fdcfcea5b8eae1769a217f8efea9c02f037f63fa)
Signed-off-by: Muhammad Shakeel <muhammad_shakeel@mentor.com>
Signed-off-by: Saul Wold <sgw@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta')
-rw-r--r-- | meta/recipes-devtools/opkg/opkg.inc | 21 | ||||
-rw-r--r-- | meta/recipes-devtools/opkg/opkg/opkg-configure.service | 17 | ||||
-rw-r--r-- | meta/recipes-devtools/opkg/opkg_svn.bb | 1 |
3 files changed, 37 insertions, 2 deletions
diff --git a/meta/recipes-devtools/opkg/opkg.inc b/meta/recipes-devtools/opkg/opkg.inc index afe6cb0ce6..3d568867d4 100644 --- a/meta/recipes-devtools/opkg/opkg.inc +++ b/meta/recipes-devtools/opkg/opkg.inc | |||
@@ -16,7 +16,13 @@ do_configure_prepend() { | |||
16 | sed -i -e s:-Werror::g ${S}/libopkg/Makefile.am | 16 | sed -i -e s:-Werror::g ${S}/libopkg/Makefile.am |
17 | } | 17 | } |
18 | 18 | ||
19 | inherit autotools pkgconfig | 19 | inherit autotools pkgconfig systemd |
20 | |||
21 | python () { | ||
22 | if 'sysvinit' not in d.getVar("DISTRO_FEATURES", True).split(): | ||
23 | pn = d.getVar('PN', True) | ||
24 | d.setVar('SYSTEMD_SERVICE_%s' % (pn), 'opkg-configure.service') | ||
25 | } | ||
20 | 26 | ||
21 | target_localstatedir := "${localstatedir}" | 27 | target_localstatedir := "${localstatedir}" |
22 | OPKGLIBDIR = "${target_localstatedir}/lib" | 28 | OPKGLIBDIR = "${target_localstatedir}/lib" |
@@ -49,6 +55,16 @@ FILES_libopkg = "${libdir}/*.so.* ${OPKGLIBDIR}/opkg/" | |||
49 | do_install_append() { | 55 | do_install_append() { |
50 | # We need to create the lock directory | 56 | # We need to create the lock directory |
51 | install -d ${D}${OPKGLIBDIR}/opkg | 57 | install -d ${D}${OPKGLIBDIR}/opkg |
58 | |||
59 | if ${@base_contains('DISTRO_FEATURES','sysvinit','false','true',d)};then | ||
60 | install -d ${D}${systemd_unitdir}/system | ||
61 | install -m 0644 ${WORKDIR}/opkg-configure.service ${D}${systemd_unitdir}/system/ | ||
62 | sed -i -e 's,@BASE_BINDIR@,${base_bindir},g' \ | ||
63 | -e 's,@SYSCONFDIR@,${sysconfdir},g' \ | ||
64 | -e 's,@BINDIR@,${bindir},g' \ | ||
65 | -e 's,@SYSTEMD_UNITDIR@,${systemd_unitdir},g' \ | ||
66 | ${D}${systemd_unitdir}/system/opkg-configure.service | ||
67 | fi | ||
52 | } | 68 | } |
53 | 69 | ||
54 | do_install_append_class-native() { | 70 | do_install_append_class-native() { |
@@ -59,7 +75,8 @@ do_install_append_class-native() { | |||
59 | 75 | ||
60 | pkg_postinst_${PN} () { | 76 | pkg_postinst_${PN} () { |
61 | #!/bin/sh | 77 | #!/bin/sh |
62 | if [ "x$D" != "x" ] && [ -f $D${OPKGLIBDIR}/opkg/status ]; then | 78 | if ${@base_contains('DISTRO_FEATURES','sysvinit','true','false',d)} && \ |
79 | [ "x$D" != "x" ] && [ -f $D${OPKGLIBDIR}/opkg/status ]; then | ||
63 | install -d $D${sysconfdir}/rcS.d | 80 | install -d $D${sysconfdir}/rcS.d |
64 | 81 | ||
65 | # this happens at S98 where our good 'ole packages script used to run | 82 | # this happens at S98 where our good 'ole packages script used to run |
diff --git a/meta/recipes-devtools/opkg/opkg/opkg-configure.service b/meta/recipes-devtools/opkg/opkg/opkg-configure.service new file mode 100644 index 0000000000..a1c3a31796 --- /dev/null +++ b/meta/recipes-devtools/opkg/opkg/opkg-configure.service | |||
@@ -0,0 +1,17 @@ | |||
1 | [Unit] | ||
2 | Description=Opkg first boot configure | ||
3 | DefaultDependencies=no | ||
4 | After=systemd-remount-fs.service systemd-tmpfiles-setup.service tmp.mount | ||
5 | Before=sysinit.target | ||
6 | |||
7 | [Service] | ||
8 | Type=oneshot | ||
9 | EnvironmentFile=-@SYSCONFDIR@/default/postinst | ||
10 | ExecStart=@BASE_BINDIR@/sh -c " if [ $POSTINST_LOGGING = '1' ]; then @BINDIR@/opkg-cl configure > $LOGFILE 2>&1; else @BINDIR@/opkg-cl configure; fi" | ||
11 | ExecStartPost=@BASE_BINDIR@/systemctl disable opkg-configure.service | ||
12 | StandardOutput=syslog | ||
13 | RemainAfterExit=No | ||
14 | |||
15 | [Install] | ||
16 | WantedBy=basic.target | ||
17 | WantedBy=sysinit.target | ||
diff --git a/meta/recipes-devtools/opkg/opkg_svn.bb b/meta/recipes-devtools/opkg/opkg_svn.bb index bc10491030..cd0485fe38 100644 --- a/meta/recipes-devtools/opkg/opkg_svn.bb +++ b/meta/recipes-devtools/opkg/opkg_svn.bb | |||
@@ -3,6 +3,7 @@ require opkg.inc | |||
3 | SRC_URI = "svn://opkg.googlecode.com/svn;module=trunk;protocol=http \ | 3 | SRC_URI = "svn://opkg.googlecode.com/svn;module=trunk;protocol=http \ |
4 | file://no-install-recommends.patch \ | 4 | file://no-install-recommends.patch \ |
5 | file://add-exclude.patch \ | 5 | file://add-exclude.patch \ |
6 | file://opkg-configure.service \ | ||
6 | " | 7 | " |
7 | 8 | ||
8 | S = "${WORKDIR}/trunk" | 9 | S = "${WORKDIR}/trunk" |