diff options
author | Paul Barker <paul@paulbarker.me.uk> | 2014-11-25 21:51:12 +0000 |
---|---|---|
committer | Paul Barker <paul@paulbarker.me.uk> | 2015-02-01 13:51:06 +0000 |
commit | 4bf19983c1cca3aab362e193bdc8d121eef9882e (patch) | |
tree | 50f29c6e09bd1489ee645b0aeb071d3fc08079a3 | |
parent | 6fb550aafb5cf8b5e100b5921b02d3eaa2a7d746 (diff) | |
download | openembedded-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.bbclass | 15 |
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) |