mirror of
https://git.yoctoproject.org/poky
synced 2026-04-18 03:32:13 +02:00
package.bbclass: run pre/post installation/removal scriptlets using sh -e
This allows catching errors in the scriptlets which would otherwise go unnoticed, e.g. this sequence: ==== bogus_command proper_command ==== would work just fine without any visible warnings or errors. This was previously done only for rpm packages; this patch replaces the rpm-specific tweak with one that works for all package types. (From OE-Core rev: a0aa12e1d0ea9064b8dd816d4e82238df765506b) Signed-off-by: Alexander Kanavin <alexander.kanavin@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
committed by
Richard Purdie
parent
6d71fdbf20
commit
c64a57d2ec
@@ -1343,6 +1343,17 @@ fi
|
||||
postinst += postinst_ontarget
|
||||
d.setVar('pkg_postinst_%s' % pkg, postinst)
|
||||
|
||||
def add_set_e_to_scriptlets(pkg):
|
||||
for scriptlet_name in ('pkg_preinst', 'pkg_postinst', 'pkg_prerm', 'pkg_postrm'):
|
||||
scriptlet = d.getVar('%s_%s' % (scriptlet_name, pkg))
|
||||
if scriptlet:
|
||||
scriptlet_split = scriptlet.split('\n')
|
||||
if scriptlet_split[0].startswith("#!"):
|
||||
scriptlet = scriptlet_split[0] + "\nset -e\n" + "\n".join(scriptlet_split[1:])
|
||||
else:
|
||||
scriptlet = "set -e\n" + "\n".join(scriptlet_split[0:])
|
||||
d.setVar('%s_%s' % (scriptlet_name, pkg), scriptlet)
|
||||
|
||||
def write_if_exists(f, pkg, var):
|
||||
def encode(str):
|
||||
import codecs
|
||||
@@ -1439,6 +1450,7 @@ fi
|
||||
write_if_exists(sf, pkg, 'FILES')
|
||||
write_if_exists(sf, pkg, 'CONFFILES')
|
||||
process_postinst_on_target(pkg, d.getVar("MLPREFIX"))
|
||||
add_set_e_to_scriptlets(pkg)
|
||||
write_if_exists(sf, pkg, 'pkg_postinst')
|
||||
write_if_exists(sf, pkg, 'pkg_postrm')
|
||||
write_if_exists(sf, pkg, 'pkg_preinst')
|
||||
|
||||
@@ -470,12 +470,12 @@ python write_specfile () {
|
||||
|
||||
# Now process scriptlets
|
||||
if splitrpreinst:
|
||||
spec_scriptlets_bottom.append('%%pre -n %s -p "/bin/sh -e"' % splitname)
|
||||
spec_scriptlets_bottom.append('%%pre -n %s' % splitname)
|
||||
spec_scriptlets_bottom.append('# %s - preinst' % splitname)
|
||||
spec_scriptlets_bottom.append(splitrpreinst)
|
||||
spec_scriptlets_bottom.append('')
|
||||
if splitrpostinst:
|
||||
spec_scriptlets_bottom.append('%%post -n %s -p "/bin/sh -e"' % splitname)
|
||||
spec_scriptlets_bottom.append('%%post -n %s' % splitname)
|
||||
spec_scriptlets_bottom.append('# %s - postinst' % splitname)
|
||||
spec_scriptlets_bottom.append(splitrpostinst)
|
||||
spec_scriptlets_bottom.append('')
|
||||
@@ -564,12 +564,12 @@ python write_specfile () {
|
||||
spec_preamble_top.append('')
|
||||
|
||||
if srcrpreinst:
|
||||
spec_scriptlets_top.append('%pre -p "/bin/sh -e"')
|
||||
spec_scriptlets_top.append('%pre')
|
||||
spec_scriptlets_top.append('# %s - preinst' % srcname)
|
||||
spec_scriptlets_top.append(srcrpreinst)
|
||||
spec_scriptlets_top.append('')
|
||||
if srcrpostinst:
|
||||
spec_scriptlets_top.append('%post -p "/bin/sh -e"')
|
||||
spec_scriptlets_top.append('%post')
|
||||
spec_scriptlets_top.append('# %s - postinst' % srcname)
|
||||
spec_scriptlets_top.append(srcrpostinst)
|
||||
spec_scriptlets_top.append('')
|
||||
|
||||
Reference in New Issue
Block a user