[oe-commits] Andreas Oberritter : package_deb: skip pre/postrm scripts on upgrade, write only one shebang

git at git.openembedded.org git at git.openembedded.org
Fri Oct 24 16:37:02 UTC 2014


Module: openembedded-core.git
Branch: master-next
Commit: 7b9161dd0c475cca6ea7eb507f7c3c51869eb493
URL:    http://git.openembedded.org/?p=openembedded-core.git&a=commit;h=7b9161dd0c475cca6ea7eb507f7c3c51869eb493

Author: Andreas Oberritter <obi at opendreambox.org>
Date:   Fri Oct 10 18:36:42 2014 -0500

package_deb: skip pre/postrm scripts on upgrade, write only one shebang

Trying to upgrade busybox removing symlinks but update-alternatives
need these links (sed, cut, tail, etc) in order to work.

Adding test to avoid this scripts on upgrade fix the problem, same
solution are found in package_rpm class.

[YOCTO #6768]

Signed-off-by: Andreas Oberritter <obi at opendreambox.org>
Signed-off-by: Aníbal Limón <anibal.limon at linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie at linuxfoundation.org>

---

 meta/classes/package_deb.bbclass | 17 +++++++++++++++--
 1 file changed, 15 insertions(+), 2 deletions(-)

diff --git a/meta/classes/package_deb.bbclass b/meta/classes/package_deb.bbclass
index 7bc29df..5b5f7e2 100644
--- a/meta/classes/package_deb.bbclass
+++ b/meta/classes/package_deb.bbclass
@@ -239,13 +239,26 @@ python do_package_deb () {
             scriptvar = localdata.getVar('pkg_%s' % script, True)
             if not scriptvar:
                 continue
+            scriptvar = scriptvar.strip()
             try:
                 scriptfile = open(os.path.join(controldir, script), 'w')
             except OSError:
                 bb.utils.unlockfile(lf)
                 raise bb.build.FuncFailed("unable to open %s script file for writing." % script)
-            scriptfile.write("#!/bin/sh\n")
-            scriptfile.write(scriptvar)
+
+            if scriptvar.startswith("#!"):
+                pos = scriptvar.find("\n") + 1
+                scriptfile.write(scriptvar[:pos])
+            else:
+                pos = 0
+                scriptfile.write("#!/bin/sh\n")
+
+            # Prevent the prerm/postrm scripts from being run during an upgrade
+            if script in ('prerm', 'postrm'):
+                scriptfile.write('[ "$1" != "upgrade" ] || exit 0\n')
+
+            scriptfile.write(scriptvar[pos:])
+            scriptfile.write('\n')
             scriptfile.close()
             os.chmod(os.path.join(controldir, script), 0755)
 



More information about the Openembedded-commits mailing list