aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPaul Barker <paul@paulbarker.me.uk>2014-11-25 21:51:12 +0000
committerPaul Barker <paul@paulbarker.me.uk>2015-02-01 13:51:06 +0000
commit4bf19983c1cca3aab362e193bdc8d121eef9882e (patch)
tree50f29c6e09bd1489ee645b0aeb071d3fc08079a3
parent6fb550aafb5cf8b5e100b5921b02d3eaa2a7d746 (diff)
downloadopenembedded-core-contrib-4bf19983c1cca3aab362e193bdc8d121eef9882e.tar.gz
package_ipk.bbclass: Skip prerm/postrm during upgrade
In both package_deb.bbclass and package_rpm.bbclass, a conditional statement is injected into scripts to ensure that the prerm and postrm scripts aren't executed during a package upgrade. This hasn't been necessary for ipk packages so far, but opkg v0.3.0 will call prerm and postrm scripts with the argument "upgrade" like dpkg does. Therefore this conditional is now needed in package_ipk.bbclass as well. Signed-off-by: Paul Barker <paul@paulbarker.me.uk>
-rw-r--r--meta/classes/package_ipk.bbclass15
1 files changed, 14 insertions, 1 deletions
diff --git a/meta/classes/package_ipk.bbclass b/meta/classes/package_ipk.bbclass
index 44fd3eb29c..a1defd5903 100644
--- a/meta/classes/package_ipk.bbclass
+++ b/meta/classes/package_ipk.bbclass
@@ -222,7 +222,20 @@ python do_package_ipk () {
except OSError:
bb.utils.unlockfile(lf)
raise bb.build.FuncFailed("unable to open %s script file for writing." % script)
- 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)