diff options
| -rw-r--r-- | meta/classes/package_rpm.bbclass | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/meta/classes/package_rpm.bbclass b/meta/classes/package_rpm.bbclass index df5a2db8a1..2679e9f480 100644 --- a/meta/classes/package_rpm.bbclass +++ b/meta/classes/package_rpm.bbclass | |||
| @@ -471,6 +471,16 @@ python write_specfile () { | |||
| 471 | else: | 471 | else: |
| 472 | target.append(path + "/" + file) | 472 | target.append(path + "/" + file) |
| 473 | 473 | ||
| 474 | # Prevent the prerm/postrm scripts from being run during an upgrade | ||
| 475 | def wrap_uninstall(scriptvar): | ||
| 476 | scr = scriptvar.strip() | ||
| 477 | if scr.startswith("#!"): | ||
| 478 | pos = scr.find("\n") + 1 | ||
| 479 | else: | ||
| 480 | pos = 0 | ||
| 481 | scr = scr[:pos] + 'if [ "$1" = "0" ] ; then\n' + scr[pos:] + '\nfi' | ||
| 482 | return scr | ||
| 483 | |||
| 474 | packages = bb.data.getVar('PACKAGES', d, True) | 484 | packages = bb.data.getVar('PACKAGES', d, True) |
| 475 | if not packages or packages == '': | 485 | if not packages or packages == '': |
| 476 | bb.debug(1, "No packages; nothing to do") | 486 | bb.debug(1, "No packages; nothing to do") |
| @@ -671,8 +681,10 @@ python write_specfile () { | |||
| 671 | spec_scriptlets_bottom.append('%%post -n %s' % splitname) | 681 | spec_scriptlets_bottom.append('%%post -n %s' % splitname) |
| 672 | elif script == 'prerm': | 682 | elif script == 'prerm': |
| 673 | spec_scriptlets_bottom.append('%%preun -n %s' % splitname) | 683 | spec_scriptlets_bottom.append('%%preun -n %s' % splitname) |
| 684 | scriptvar = wrap_uninstall(scriptvar) | ||
| 674 | elif script == 'postrm': | 685 | elif script == 'postrm': |
| 675 | spec_scriptlets_bottom.append('%%postun -n %s' % splitname) | 686 | spec_scriptlets_bottom.append('%%postun -n %s' % splitname) |
| 687 | scriptvar = wrap_uninstall(scriptvar) | ||
| 676 | spec_scriptlets_bottom.append(scriptvar) | 688 | spec_scriptlets_bottom.append(scriptvar) |
| 677 | spec_scriptlets_bottom.append('') | 689 | spec_scriptlets_bottom.append('') |
| 678 | 690 | ||
| @@ -758,11 +770,13 @@ python write_specfile () { | |||
| 758 | spec_scriptlets_top.append('') | 770 | spec_scriptlets_top.append('') |
| 759 | if srcprerm: | 771 | if srcprerm: |
| 760 | spec_scriptlets_top.append('%preun') | 772 | spec_scriptlets_top.append('%preun') |
| 761 | spec_scriptlets_top.append(srcprerm) | 773 | scriptvar = wrap_uninstall(srcprerm) |
| 774 | spec_scriptlets_top.append(scriptvar) | ||
| 762 | spec_scriptlets_top.append('') | 775 | spec_scriptlets_top.append('') |
| 763 | if srcpostrm: | 776 | if srcpostrm: |
| 764 | spec_scriptlets_top.append('%postun') | 777 | spec_scriptlets_top.append('%postun') |
| 765 | spec_scriptlets_top.append(srcpostrm) | 778 | scriptvar = wrap_uninstall(srcpostrm) |
| 779 | spec_scriptlets_top.append(scriptvar) | ||
| 766 | spec_scriptlets_top.append('') | 780 | spec_scriptlets_top.append('') |
| 767 | 781 | ||
| 768 | # Write the SPEC file | 782 | # Write the SPEC file |
