summaryrefslogtreecommitdiffstats
path: root/meta/classes/rootfs_rpm.bbclass
diff options
context:
space:
mode:
Diffstat (limited to 'meta/classes/rootfs_rpm.bbclass')
-rw-r--r--meta/classes/rootfs_rpm.bbclass34
1 files changed, 18 insertions, 16 deletions
diff --git a/meta/classes/rootfs_rpm.bbclass b/meta/classes/rootfs_rpm.bbclass
index 2bb1b08740..d0b0d5793f 100644
--- a/meta/classes/rootfs_rpm.bbclass
+++ b/meta/classes/rootfs_rpm.bbclass
@@ -7,11 +7,15 @@ ROOTFS_PKGMANAGE = "rpm zypper"
7# Add 50Meg of extra space for zypper database space 7# Add 50Meg of extra space for zypper database space
8IMAGE_ROOTFS_EXTRA_SPACE_append = "${@base_contains("PACKAGE_INSTALL", "zypper", " + 51200", "" ,d)}" 8IMAGE_ROOTFS_EXTRA_SPACE_append = "${@base_contains("PACKAGE_INSTALL", "zypper", " + 51200", "" ,d)}"
9 9
10# Smart is python based, so be sure python-native is available to us.
11EXTRANATIVEPATH += "python-native"
12
10# Postinstalls on device are handled within this class at present 13# Postinstalls on device are handled within this class at present
11ROOTFS_PKGMANAGE_BOOTSTRAP = "" 14ROOTFS_PKGMANAGE_BOOTSTRAP = ""
12 15
13do_rootfs[depends] += "rpm-native:do_populate_sysroot" 16do_rootfs[depends] += "rpm-native:do_populate_sysroot"
14do_rootfs[depends] += "rpmresolve-native:do_populate_sysroot" 17do_rootfs[depends] += "rpmresolve-native:do_populate_sysroot"
18do_rootfs[depends] += "python-smartpm-native:do_populate_sysroot"
15 19
16# Needed for update-alternatives 20# Needed for update-alternatives
17do_rootfs[depends] += "opkg-native:do_populate_sysroot" 21do_rootfs[depends] += "opkg-native:do_populate_sysroot"
@@ -21,8 +25,8 @@ do_rootfs[depends] += "createrepo-native:do_populate_sysroot"
21 25
22do_rootfs[recrdeptask] += "do_package_write_rpm" 26do_rootfs[recrdeptask] += "do_package_write_rpm"
23 27
24RPM_PREPROCESS_COMMANDS = "package_update_index_rpm; package_generate_rpm_conf; " 28RPM_PREPROCESS_COMMANDS = "package_update_index_rpm; "
25RPM_POSTPROCESS_COMMANDS = "" 29RPM_POSTPROCESS_COMMANDS = "rpm_setup_smart_target_config; "
26 30
27# 31#
28# Allow distributions to alter when [postponed] package install scripts are run 32# Allow distributions to alter when [postponed] package install scripts are run
@@ -32,7 +36,7 @@ POSTINSTALL_INITPOSITION ?= "98"
32rpmlibdir = "/var/lib/rpm" 36rpmlibdir = "/var/lib/rpm"
33opkglibdir = "${localstatedir}/lib/opkg" 37opkglibdir = "${localstatedir}/lib/opkg"
34 38
35RPMOPTS="--dbpath ${rpmlibdir} --define='_openall_before_chroot 1'" 39RPMOPTS="--dbpath ${rpmlibdir}"
36RPM="rpm ${RPMOPTS}" 40RPM="rpm ${RPMOPTS}"
37 41
38# RPM doesn't work with multiple rootfs generation at once due to collisions in the use of files 42# RPM doesn't work with multiple rootfs generation at once due to collisions in the use of files
@@ -42,13 +46,10 @@ do_rootfs[lockfiles] += "${DEPLOY_DIR_RPM}/rpm.lock"
42fakeroot rootfs_rpm_do_rootfs () { 46fakeroot rootfs_rpm_do_rootfs () {
43 ${RPM_PREPROCESS_COMMANDS} 47 ${RPM_PREPROCESS_COMMANDS}
44 48
45 #createrepo "${DEPLOY_DIR_RPM}"
46
47 # install packages 49 # install packages
48 # This needs to work in the same way as populate_sdk_rpm.bbclass! 50 # This needs to work in the same way as populate_sdk_rpm.bbclass!
49 export INSTALL_ROOTFS_RPM="${IMAGE_ROOTFS}" 51 export INSTALL_ROOTFS_RPM="${IMAGE_ROOTFS}"
50 export INSTALL_PLATFORM_RPM="${TARGET_ARCH}" 52 export INSTALL_PLATFORM_RPM="${TARGET_ARCH}"
51 export INSTALL_CONFBASE_RPM="${RPMCONF_TARGET_BASE}"
52 export INSTALL_PACKAGES_RPM="${PACKAGE_INSTALL}" 53 export INSTALL_PACKAGES_RPM="${PACKAGE_INSTALL}"
53 export INSTALL_PACKAGES_ATTEMPTONLY_RPM="${PACKAGE_INSTALL_ATTEMPTONLY}" 54 export INSTALL_PACKAGES_ATTEMPTONLY_RPM="${PACKAGE_INSTALL_ATTEMPTONLY}"
54 export INSTALL_PACKAGES_LINGUAS_RPM="${LINGUAS_INSTALL}" 55 export INSTALL_PACKAGES_LINGUAS_RPM="${LINGUAS_INSTALL}"
@@ -114,18 +115,10 @@ EOF
114 # remove lock files 115 # remove lock files
115 rm -f ${IMAGE_ROOTFS}${rpmlibdir}/__db.* 116 rm -f ${IMAGE_ROOTFS}${rpmlibdir}/__db.*
116 117
117 # Move manifests into the directory with the logs
118 mv ${IMAGE_ROOTFS}/install/*.manifest ${T}/
119
120 # Remove all remaining resolver files 118 # Remove all remaining resolver files
121 rm -rf ${IMAGE_ROOTFS}/install 119 rm -rf ${IMAGE_ROOTFS}/install
122 120
123 log_check rootfs 121 log_check rootfs
124
125 # Workaround so the parser knows we need the resolve_package function!
126 if false ; then
127 resolve_package_rpm foo ${RPMCONF_TARGET_BASE}.conf || true
128 fi
129} 122}
130 123
131remove_packaging_data_files() { 124remove_packaging_data_files() {
@@ -135,10 +128,19 @@ remove_packaging_data_files() {
135 mkdir -p $t 128 mkdir -p $t
136 mv ${IMAGE_ROOTFS}${rpmlibdir} $t 129 mv ${IMAGE_ROOTFS}${rpmlibdir} $t
137 rm -rf ${IMAGE_ROOTFS}${opkglibdir} 130 rm -rf ${IMAGE_ROOTFS}${opkglibdir}
131 rm -rf ${IMAGE_ROOTFS}/var/lib/smart
132}
133
134rpm_setup_smart_target_config() {
135 # Set up smart configuration for the target
136 rm -rf ${IMAGE_ROOTFS}/var/lib/smart
137 smart --data-dir=${IMAGE_ROOTFS}/var/lib/smart channel --add rpmsys type=rpm-sys -y
138 smart --data-dir=${IMAGE_ROOTFS}/var/lib/smart config --set rpm-nolinktos=1
139 smart --data-dir=${IMAGE_ROOTFS}/var/lib/smart config --set rpm-noparentdirs=1
140 rm -f ${IMAGE_ROOTFS}/var/lib/smart/config.old
138} 141}
139 142
140RPM_QUERY_CMD = '${RPM} --root $INSTALL_ROOTFS_RPM -D "_dbpath ${rpmlibdir}" \ 143RPM_QUERY_CMD = '${RPM} --root $INSTALL_ROOTFS_RPM -D "_dbpath ${rpmlibdir}"'
141 -D "__dbi_txn create nofsync private"'
142 144
143list_installed_packages() { 145list_installed_packages() {
144 GET_LIST=$(${RPM_QUERY_CMD} -qa --qf "[%{NAME} %{ARCH} %{PACKAGEORIGIN} %{Platform}\n]") 146 GET_LIST=$(${RPM_QUERY_CMD} -qa --qf "[%{NAME} %{ARCH} %{PACKAGEORIGIN} %{Platform}\n]")