summaryrefslogtreecommitdiffstats
path: root/meta/classes
diff options
context:
space:
mode:
Diffstat (limited to 'meta/classes')
-rw-r--r--meta/classes/package_rpm.bbclass33
-rw-r--r--meta/classes/rootfs_rpm.bbclass25
2 files changed, 38 insertions, 20 deletions
diff --git a/meta/classes/package_rpm.bbclass b/meta/classes/package_rpm.bbclass
index 2c5545c11d..2ace0537ac 100644
--- a/meta/classes/package_rpm.bbclass
+++ b/meta/classes/package_rpm.bbclass
@@ -382,13 +382,39 @@ package_install_internal_rpm () {
382 cat ${target_rootfs}/install/install_solution.manifest > ${target_rootfs}/install/total_solution.manifest 382 cat ${target_rootfs}/install/install_solution.manifest > ${target_rootfs}/install/total_solution.manifest
383 cat ${target_rootfs}/install/install_multilib_solution.manifest >> ${target_rootfs}/install/total_solution.manifest 383 cat ${target_rootfs}/install/install_multilib_solution.manifest >> ${target_rootfs}/install/total_solution.manifest
384 384
385 # Construct install scriptlet wrapper
386 cat << EOF > ${WORKDIR}/scriptlet_wrapper
387#!/bin/bash
388
389export PATH="${PATH}"
390export D="${target_rootfs}"
391export OFFLINE_ROOT="\$D"
392export IPKG_OFFLINE_ROOT="\$D"
393export OPKG_OFFLINE_ROOT="\$D"
394
395\$2 \$1/\$3 \$4
396if [ \$? -ne 0 ]; then
397 mkdir -p \$1/etc/rpm-postinsts
398 num=100
399 while [ -e \$1/etc/rpm-postinsts/\${num} ]; do num=\$((num + 1)); done
400 echo "#!\$2" > \$1/etc/rpm-postinsts/\${num}
401 echo "# Arg: \$4" >> \$1/etc/rpm-postinsts/\${num}
402 cat \$1/\$3 >> \$1/etc/rpm-postinsts/\${num}
403 chmod +x \$1/etc/rpm-postinsts/\${num}
404fi
405EOF
406
407 chmod 0755 ${WORKDIR}/scriptlet_wrapper
408
385 # Attempt install 409 # Attempt install
386 ${RPM} --root ${target_rootfs} \ 410 ${RPM} --root ${target_rootfs} \
387 --predefine "_rpmds_sysinfo_path ${target_rootfs}/etc/rpm/sysinfo" \ 411 --predefine "_rpmds_sysinfo_path ${target_rootfs}/etc/rpm/sysinfo" \
388 --predefine "_rpmrc_platform_path ${target_rootfs}/etc/rpm/platform" \ 412 --predefine "_rpmrc_platform_path ${target_rootfs}/etc/rpm/platform" \
413 -D "_var ${localstatedir}" \
389 -D "_dbpath ${rpmlibdir}" \ 414 -D "_dbpath ${rpmlibdir}" \
390 --noscripts --notriggers --noparentdirs --nolinktos --replacepkgs \ 415 --noparentdirs --nolinktos --replacepkgs \
391 -D "__dbi_txn create nofsync private" \ 416 -D "__dbi_txn create nofsync private" \
417 -D "_cross_scriptlet_wrapper ${WORKDIR}/scriptlet_wrapper" \
392 -Uhv ${target_rootfs}/install/total_solution.manifest 418 -Uhv ${target_rootfs}/install/total_solution.manifest
393} 419}
394 420
@@ -685,6 +711,7 @@ python write_specfile () {
685 elif script == 'postrm': 711 elif script == 'postrm':
686 spec_scriptlets_bottom.append('%%postun -n %s' % splitname) 712 spec_scriptlets_bottom.append('%%postun -n %s' % splitname)
687 scriptvar = wrap_uninstall(scriptvar) 713 scriptvar = wrap_uninstall(scriptvar)
714 spec_scriptlets_bottom.append('# %s - %s' % (splitname, script))
688 spec_scriptlets_bottom.append(scriptvar) 715 spec_scriptlets_bottom.append(scriptvar)
689 spec_scriptlets_bottom.append('') 716 spec_scriptlets_bottom.append('')
690 717
@@ -762,19 +789,23 @@ python write_specfile () {
762 789
763 if srcpreinst: 790 if srcpreinst:
764 spec_scriptlets_top.append('%pre') 791 spec_scriptlets_top.append('%pre')
792 spec_scriptlets_top.append('# %s - preinst' % srcname)
765 spec_scriptlets_top.append(srcpreinst) 793 spec_scriptlets_top.append(srcpreinst)
766 spec_scriptlets_top.append('') 794 spec_scriptlets_top.append('')
767 if srcpostinst: 795 if srcpostinst:
768 spec_scriptlets_top.append('%post') 796 spec_scriptlets_top.append('%post')
797 spec_scriptlets_top.append('# %s - postinst' % srcname)
769 spec_scriptlets_top.append(srcpostinst) 798 spec_scriptlets_top.append(srcpostinst)
770 spec_scriptlets_top.append('') 799 spec_scriptlets_top.append('')
771 if srcprerm: 800 if srcprerm:
772 spec_scriptlets_top.append('%preun') 801 spec_scriptlets_top.append('%preun')
802 spec_scriptlets_top.append('# %s - prerm' % srcname)
773 scriptvar = wrap_uninstall(srcprerm) 803 scriptvar = wrap_uninstall(srcprerm)
774 spec_scriptlets_top.append(scriptvar) 804 spec_scriptlets_top.append(scriptvar)
775 spec_scriptlets_top.append('') 805 spec_scriptlets_top.append('')
776 if srcpostrm: 806 if srcpostrm:
777 spec_scriptlets_top.append('%postun') 807 spec_scriptlets_top.append('%postun')
808 spec_scriptlets_top.append('# %s - postrm' % srcname)
778 scriptvar = wrap_uninstall(srcpostrm) 809 scriptvar = wrap_uninstall(srcpostrm)
779 spec_scriptlets_top.append(scriptvar) 810 spec_scriptlets_top.append(scriptvar)
780 spec_scriptlets_top.append('') 811 spec_scriptlets_top.append('')
diff --git a/meta/classes/rootfs_rpm.bbclass b/meta/classes/rootfs_rpm.bbclass
index 95e9455e5c..b3875a437c 100644
--- a/meta/classes/rootfs_rpm.bbclass
+++ b/meta/classes/rootfs_rpm.bbclass
@@ -20,8 +20,6 @@ do_rootfs[depends] += "opkg-native:do_populate_sysroot"
20 20
21do_rootfs[recrdeptask] += "do_package_write_rpm" 21do_rootfs[recrdeptask] += "do_package_write_rpm"
22 22
23AWKPOSTINSTSCRIPT = "${COREBASE}/scripts/rootfs_rpm-extract-postinst.awk"
24
25RPM_PREPROCESS_COMMANDS = "package_update_index_rpm; package_generate_rpm_conf; " 23RPM_PREPROCESS_COMMANDS = "package_update_index_rpm; package_generate_rpm_conf; "
26RPM_POSTPROCESS_COMMANDS = "" 24RPM_POSTPROCESS_COMMANDS = ""
27 25
@@ -108,19 +106,9 @@ EOF
108 106
109 ${ROOTFS_POSTINSTALL_COMMAND} 107 ${ROOTFS_POSTINSTALL_COMMAND}
110 108
111 mkdir -p ${IMAGE_ROOTFS}/etc/rpm-postinsts/ 109 # Report delayed package scriptlets
112 ${RPM} --root ${IMAGE_ROOTFS} -D '_dbpath ${rpmlibdir}' -qa \ 110 for i in ${IMAGE_ROOTFS}/etc/rpm-postinsts/*; do
113 -D "__dbi_txn create nofsync private" \ 111 echo "Delayed package scriptlet: `head -n 3 $i | tail -n 1`"
114 --qf 'Name: %{NAME}\n%|POSTIN?{postinstall scriptlet%|POSTINPROG?{ (using %{POSTINPROG})}|:\n%{POSTIN}\n}:{%|POSTINPROG?{postinstall program: %{POSTINPROG}\n}|}|' \
115 > ${IMAGE_ROOTFS}/etc/rpm-postinsts/combined
116 awk -f ${AWKPOSTINSTSCRIPT} < ${IMAGE_ROOTFS}/etc/rpm-postinsts/combined
117 rm ${IMAGE_ROOTFS}/etc/rpm-postinsts/combined
118
119 for i in ${IMAGE_ROOTFS}/etc/rpm-postinsts/*.sh; do
120 if [ -f $i ] && sh $i; then
121 # rm $i
122 mv $i $i.done
123 fi
124 done 112 done
125 113
126 install -d ${IMAGE_ROOTFS}/${sysconfdir}/rcS.d 114 install -d ${IMAGE_ROOTFS}/${sysconfdir}/rcS.d
@@ -128,11 +116,10 @@ EOF
128 i=\$i 116 i=\$i
129 cat > ${IMAGE_ROOTFS}${sysconfdir}/rcS.d/S${POSTINSTALL_INITPOSITION}configure << EOF 117 cat > ${IMAGE_ROOTFS}${sysconfdir}/rcS.d/S${POSTINSTALL_INITPOSITION}configure << EOF
130#!/bin/sh 118#!/bin/sh
131for i in /etc/rpm-postinsts/*.sh; do 119for i in /etc/rpm-postinsts/*; do
132 echo "Running postinst $i..." 120 echo "Running postinst $i..."
133 if [ -f $i ] && sh $i; then 121 if [ -f $i ] && $i; then
134 # rm $i 122 rm $i
135 mv $i $i.done
136 else 123 else
137 echo "ERROR: postinst $i failed." 124 echo "ERROR: postinst $i failed."
138 fi 125 fi