diff options
| -rw-r--r-- | meta/classes/package_rpm.bbclass | 128 | ||||
| -rw-r--r-- | meta/classes/rootfs_rpm.bbclass | 17 |
2 files changed, 64 insertions, 81 deletions
diff --git a/meta/classes/package_rpm.bbclass b/meta/classes/package_rpm.bbclass index 950f665db5..0f16613ba7 100644 --- a/meta/classes/package_rpm.bbclass +++ b/meta/classes/package_rpm.bbclass | |||
| @@ -25,31 +25,41 @@ package_update_index_rpm () { | |||
| 25 | return | 25 | return |
| 26 | fi | 26 | fi |
| 27 | 27 | ||
| 28 | base_package_archs="${PACKAGE_ARCHS}" | 28 | # Update target packages |
| 29 | ml_package_archs="${MULTILIB_PACKAGE_ARCHS}" | 29 | base_archs="${PACKAGE_ARCHS}" |
| 30 | ml_archs="${MULTILIB_PACKAGE_ARCHS}" | ||
| 31 | package_update_index_rpm_common "${RPMCONF_TARGET_BASE}" base_archs ml_archs | ||
| 32 | |||
| 33 | # Update SDK packages | ||
| 34 | base_archs="" | ||
| 35 | for arch in ${PACKAGE_ARCHS}; do | ||
| 36 | sdkarch=`echo $arch | sed -e 's/${HOST_ARCH}/${SDK_ARCH}/'` | ||
| 37 | extension="-nativesdk" | ||
| 38 | if [ "$sdkarch" = "all" -o "$sdkarch" = "any" -o "$sdkarch" = "noarch" ]; then | ||
| 39 | extension="" | ||
| 40 | fi | ||
| 41 | base_archs="$base_archs $sdkarch$extension" | ||
| 42 | done | ||
| 43 | package_update_index_rpm_common "${RPMCONF_HOST_BASE}" base_archs | ||
| 44 | } | ||
| 45 | |||
| 46 | package_update_index_rpm_common () { | ||
| 47 | rpmconf_base="$1" | ||
| 48 | shift | ||
| 30 | 49 | ||
| 31 | for archvar in base_package_archs ml_package_archs; do | 50 | for archvar in "$@"; do |
| 32 | eval archs=\${${archvar}} | 51 | eval archs=\${${archvar}} |
| 33 | packagedirs="" | 52 | packagedirs="" |
| 34 | packagedirs_sdk="" | ||
| 35 | for arch in $archs; do | 53 | for arch in $archs; do |
| 36 | sdkarch=`echo $arch | sed -e 's/${HOST_ARCH}/${SDK_ARCH}/'` | ||
| 37 | extension="-nativesdk" | ||
| 38 | if [ "$sdkarch" = "all" -o "$sdkarch" = "any" -o "$sdkarch" = "noarch" ]; then | ||
| 39 | extension="" | ||
| 40 | fi | ||
| 41 | packagedirs="${DEPLOY_DIR_RPM}/$arch $packagedirs" | 54 | packagedirs="${DEPLOY_DIR_RPM}/$arch $packagedirs" |
| 42 | packagedirs_sdk="${DEPLOY_DIR_RPM}/$sdkarch$extension $packagedirs_sdk" | ||
| 43 | |||
| 44 | rm -rf ${DEPLOY_DIR_RPM}/$arch/solvedb | 55 | rm -rf ${DEPLOY_DIR_RPM}/$arch/solvedb |
| 45 | rm -rf ${DEPLOY_DIR_RPM}/$sdkarch$extension/solvedb | ||
| 46 | done | 56 | done |
| 47 | 57 | ||
| 48 | cat /dev/null > ${RPMCONF_TARGET_BASE}-${archvar}.conf | 58 | cat /dev/null > ${rpmconf_base}-${archvar}.conf |
| 49 | for pkgdir in $packagedirs; do | 59 | for pkgdir in $packagedirs; do |
| 50 | if [ -e $pkgdir/ ]; then | 60 | if [ -e $pkgdir/ ]; then |
| 51 | echo "Generating solve db for $pkgdir..." | 61 | echo "Generating solve db for $pkgdir..." |
| 52 | echo $pkgdir/solvedb >> ${RPMCONF_TARGET_BASE}-${archvar}.conf | 62 | echo $pkgdir/solvedb >> ${rpmconf_base}-${archvar}.conf |
| 53 | if [ -d $pkgdir/solvedb ]; then | 63 | if [ -d $pkgdir/solvedb ]; then |
| 54 | # We've already processed this and it's a duplicate | 64 | # We've already processed this and it's a duplicate |
| 55 | continue | 65 | continue |
| @@ -65,27 +75,6 @@ package_update_index_rpm () { | |||
| 65 | $pkgdir/solvedb/manifest | 75 | $pkgdir/solvedb/manifest |
| 66 | fi | 76 | fi |
| 67 | done | 77 | done |
| 68 | |||
| 69 | cat /dev/null > ${RPMCONF_HOST_BASE}-${archvar}.conf | ||
| 70 | for pkgdir in $packagedirs_sdk; do | ||
| 71 | if [ -e $pkgdir/ ]; then | ||
| 72 | echo "Generating solve db for $pkgdir..." | ||
| 73 | echo $pkgdir/solvedb >> ${RPMCONF_HOST_BASE}-${archvar}.conf | ||
| 74 | if [ -d $pkgdir/solvedb ]; then | ||
| 75 | # We've already processed this and it's a duplicate | ||
| 76 | continue | ||
| 77 | fi | ||
| 78 | mkdir -p $pkgdir/solvedb | ||
| 79 | echo "# Dynamically generated solve manifest" >> $pkgdir/solvedb/manifest | ||
| 80 | find $pkgdir -maxdepth 1 -type f >> $pkgdir/solvedb/manifest | ||
| 81 | ${RPM} -i --replacepkgs --replacefiles --oldpackage \ | ||
| 82 | -D "_dbpath $pkgdir/solvedb" --justdb \ | ||
| 83 | --noaid --nodeps --noorder --noscripts --notriggers --noparentdirs --nolinktos --stats \ | ||
| 84 | --ignoresize --nosignature --nodigest \ | ||
| 85 | -D "__dbi_txn create nofsync" \ | ||
| 86 | $pkgdir/solvedb/manifest | ||
| 87 | fi | ||
| 88 | done | ||
| 89 | done | 78 | done |
| 90 | } | 79 | } |
| 91 | 80 | ||
| @@ -94,45 +83,38 @@ package_update_index_rpm () { | |||
| 94 | # generated depsolver db's... | 83 | # generated depsolver db's... |
| 95 | # | 84 | # |
| 96 | package_generate_rpm_conf () { | 85 | package_generate_rpm_conf () { |
| 97 | printf "_solve_dbpath " > ${RPMCONF_TARGET_BASE}.macro | 86 | # Update target packages |
| 98 | o_colon_t=false | 87 | package_generate_rpm_conf_common "${RPMCONF_TARGET_BASE}" base_archs ml_archs |
| 99 | o_colon_h=false | ||
| 100 | 88 | ||
| 101 | for archvar in base_package_archs ml_package_archs; do | 89 | # Update SDK packages |
| 102 | printf "_solve_dbpath " > ${RPMCONF_TARGET_BASE}-${archvar}.macro | 90 | package_generate_rpm_conf_common "${RPMCONF_HOST_BASE}" base_archs |
| 103 | colon=false | 91 | } |
| 104 | for each in `cat ${RPMCONF_TARGET_BASE}-${archvar}.conf` ; do | 92 | |
| 105 | if [ "$o_colon_t" == true ]; then | 93 | package_generate_rpm_conf_common() { |
| 106 | printf ":" >> ${RPMCONF_TARGET_BASE}.macro | 94 | rpmconf_base="$1" |
| 107 | fi | 95 | shift |
| 108 | if [ "$colon" == true ]; then | 96 | |
| 109 | printf ":" >> ${RPMCONF_TARGET_BASE}-${archvar}.macro | 97 | printf "_solve_dbpath " > ${rpmconf_base}.macro |
| 110 | fi | 98 | o_colon=false |
| 111 | printf "%s" $each >> ${RPMCONF_TARGET_BASE}.macro | ||
| 112 | o_colon_t=true | ||
| 113 | printf "%s" $each >> ${RPMCONF_TARGET_BASE}-${archvar}.macro | ||
| 114 | colon=true | ||
| 115 | done | ||
| 116 | printf "\n" >> ${RPMCONF_TARGET_BASE}-${archvar}.macro | ||
| 117 | 99 | ||
| 118 | printf "_solve_dbpath " > ${RPMCONF_HOST_BASE}-${archvar}.macro | 100 | for archvar in "$@"; do |
| 101 | printf "_solve_dbpath " > ${rpmconf_base}-${archvar}.macro | ||
| 119 | colon=false | 102 | colon=false |
| 120 | for each in `cat ${RPMCONF_HOST_BASE}-${archvar}.conf` ; do | 103 | for each in `cat ${rpmconf_base}-${archvar}.conf` ; do |
| 121 | if [ "$o_colon_h" == true ]; then | 104 | if [ "$o_colon" == true ]; then |
| 122 | printf ":" >> ${RPMCONF_HOST_BASE}.macro | 105 | printf ":" >> ${rpmconf_base}.macro |
| 123 | fi | 106 | fi |
| 124 | if [ "$colon" == true ]; then | 107 | if [ "$colon" == true ]; then |
| 125 | printf ":" >> ${RPMCONF_HOST_BASE}-${archvar}.macro | 108 | printf ":" >> ${rpmconf_base}-${archvar}.macro |
| 126 | fi | 109 | fi |
| 127 | printf "%s" $each >> ${RPMCONF_HOST_BASE}.macro | 110 | printf "%s" $each >> ${rpmconf_base}.macro |
| 128 | o_colon_h=true | 111 | o_colon=true |
| 129 | printf "%s" $each >> ${RPMCONF_HOST_BASE}-${archvar}.macro | 112 | printf "%s" $each >> ${rpmconf_base}-${archvar}.macro |
| 130 | colon=true | 113 | colon=true |
| 131 | done | 114 | done |
| 132 | printf "\n" >> ${RPMCONF_HOST_BASE}-${archvar}.macro | 115 | printf "\n" >> ${rpmconf_base}-${archvar}.macro |
| 133 | done | 116 | done |
| 134 | printf "\n" >> ${RPMCONF_TARGET_BASE}.macro | 117 | printf "\n" >> ${rpmconf_base}.macro |
| 135 | printf "\n" >> ${RPMCONF_HOST_BASE}.macro | ||
| 136 | } | 118 | } |
| 137 | 119 | ||
| 138 | rpm_log_check() { | 120 | rpm_log_check() { |
| @@ -211,7 +193,7 @@ package_install_internal_rpm () { | |||
| 211 | mkdir -p ${target_rootfs}/etc/rpm/sysinfo | 193 | mkdir -p ${target_rootfs}/etc/rpm/sysinfo |
| 212 | echo "/" >${target_rootfs}/etc/rpm/sysinfo/Dirnames | 194 | echo "/" >${target_rootfs}/etc/rpm/sysinfo/Dirnames |
| 213 | if [ ! -z "$providename" ]; then | 195 | if [ ! -z "$providename" ]; then |
| 214 | >>${target_rootfs}/etc/rpm/sysinfo/Providename | 196 | cat /dev/null > ${target_rootfs}/etc/rpm/sysinfo/Providename |
| 215 | for provide in $providename ; do | 197 | for provide in $providename ; do |
| 216 | echo $provide >> ${target_rootfs}/etc/rpm/sysinfo/Providename | 198 | echo $provide >> ${target_rootfs}/etc/rpm/sysinfo/Providename |
| 217 | done | 199 | done |
| @@ -227,10 +209,10 @@ package_install_internal_rpm () { | |||
| 227 | for pkg in ${package_linguas}; do | 209 | for pkg in ${package_linguas}; do |
| 228 | echo "Processing $pkg..." | 210 | echo "Processing $pkg..." |
| 229 | 211 | ||
| 230 | archvar=base_package_archs | 212 | archvar=base_archs |
| 231 | ml_pkg=$(echo ${pkg} | sed "s,^${MLPREFIX}\(.*\),\1,") | 213 | ml_pkg=$(echo ${pkg} | sed "s,^${MLPREFIX}\(.*\),\1,") |
| 232 | if [ "${ml_pkg}" != "${pkg}" ]; then | 214 | if [ "${ml_pkg}" != "${pkg}" ]; then |
| 233 | archvar=ml_package_archs | 215 | archvar=ml_archs |
| 234 | fi | 216 | fi |
| 235 | 217 | ||
| 236 | pkg_name=$(resolve_package_rpm ${confbase}-${archvar}.conf ${ml_pkg}) | 218 | pkg_name=$(resolve_package_rpm ${confbase}-${archvar}.conf ${ml_pkg}) |
| @@ -238,7 +220,7 @@ package_install_internal_rpm () { | |||
| 238 | echo "Unable to find package $pkg ($ml_pkg)!" | 220 | echo "Unable to find package $pkg ($ml_pkg)!" |
| 239 | exit 1 | 221 | exit 1 |
| 240 | fi | 222 | fi |
| 241 | echo $pkg_name >> ${IMAGE_ROOTFS}/install/install.manifest | 223 | echo $pkg_name >> ${target_rootfs}/install/install.manifest |
| 242 | done | 224 | done |
| 243 | fi | 225 | fi |
| 244 | fi | 226 | fi |
| @@ -247,10 +229,10 @@ package_install_internal_rpm () { | |||
| 247 | for pkg in ${package_to_install} ; do | 229 | for pkg in ${package_to_install} ; do |
| 248 | echo "Processing $pkg..." | 230 | echo "Processing $pkg..." |
| 249 | 231 | ||
| 250 | archvar=base_package_archs | 232 | archvar=base_archs |
| 251 | ml_pkg=$(echo ${pkg} | sed "s,^${MLPREFIX}\(.*\),\1,") | 233 | ml_pkg=$(echo ${pkg} | sed "s,^${MLPREFIX}\(.*\),\1,") |
| 252 | if [ "${ml_pkg}" != "${pkg}" ]; then | 234 | if [ "${ml_pkg}" != "${pkg}" ]; then |
| 253 | archvar=ml_package_archs | 235 | archvar=ml_archs |
| 254 | fi | 236 | fi |
| 255 | 237 | ||
| 256 | pkg_name=$(resolve_package_rpm ${confbase}-${archvar}.conf ${ml_pkg}) | 238 | pkg_name=$(resolve_package_rpm ${confbase}-${archvar}.conf ${ml_pkg}) |
| @@ -258,7 +240,7 @@ package_install_internal_rpm () { | |||
| 258 | echo "Unable to find package $pkg ($ml_pkg)!" | 240 | echo "Unable to find package $pkg ($ml_pkg)!" |
| 259 | exit 1 | 241 | exit 1 |
| 260 | fi | 242 | fi |
| 261 | echo $pkg_name >> ${IMAGE_ROOTFS}/install/install.manifest | 243 | echo $pkg_name >> ${target_rootfs}/install/install.manifest |
| 262 | done | 244 | done |
| 263 | fi | 245 | fi |
| 264 | 246 | ||
| @@ -303,7 +285,7 @@ package_install_internal_rpm () { | |||
| 303 | # Dump the full set of recommends... | 285 | # Dump the full set of recommends... |
| 304 | ${RPM} --predefine "_rpmds_sysinfo_path ${target_rootfs}/etc/rpm/sysinfo" \ | 286 | ${RPM} --predefine "_rpmds_sysinfo_path ${target_rootfs}/etc/rpm/sysinfo" \ |
| 305 | --predefine "_rpmrc_platform_path ${target_rootfs}/etc/rpm/platform" \ | 287 | --predefine "_rpmrc_platform_path ${target_rootfs}/etc/rpm/platform" \ |
| 306 | -D "_dbpath ${IMAGE_ROOTFS}/install" -D "`cat ${confbase}.macro`" \ | 288 | -D "_dbpath ${target_rootfs}/install" -D "`cat ${confbase}.macro`" \ |
| 307 | -D "__dbi_txn create nofsync private" \ | 289 | -D "__dbi_txn create nofsync private" \ |
| 308 | -qa --qf "[%{RECOMMENDS}\n]" | sort -u > ${target_rootfs}/install/recommend | 290 | -qa --qf "[%{RECOMMENDS}\n]" | sort -u > ${target_rootfs}/install/recommend |
| 309 | # Did we add more to the list? | 291 | # Did we add more to the list? |
diff --git a/meta/classes/rootfs_rpm.bbclass b/meta/classes/rootfs_rpm.bbclass index dfe4612aa2..4f627a52eb 100644 --- a/meta/classes/rootfs_rpm.bbclass +++ b/meta/classes/rootfs_rpm.bbclass | |||
| @@ -52,12 +52,16 @@ fakeroot rootfs_rpm_do_rootfs () { | |||
| 52 | 52 | ||
| 53 | #createrepo "${DEPLOY_DIR_RPM}" | 53 | #createrepo "${DEPLOY_DIR_RPM}" |
| 54 | 54 | ||
| 55 | # install packages | ||
| 56 | # This needs to work in the same way as populate_sdk_rpm.bbclass! | ||
| 57 | export INSTALL_ROOTFS_RPM="${IMAGE_ROOTFS}" | ||
| 58 | |||
| 55 | # Setup base system configuration | 59 | # Setup base system configuration |
| 56 | mkdir -p ${IMAGE_ROOTFS}/etc/rpm/ | 60 | mkdir -p ${INSTALL_ROOTFS_RPM}/etc/rpm/ |
| 57 | 61 | ||
| 58 | mkdir -p ${IMAGE_ROOTFS}${rpmlibdir} | 62 | mkdir -p ${INSTALL_ROOTFS_RPM}${rpmlibdir} |
| 59 | mkdir -p ${IMAGE_ROOTFS}${rpmlibdir}/log | 63 | mkdir -p ${INSTALL_ROOTFS_RPM}${rpmlibdir}/log |
| 60 | cat > ${IMAGE_ROOTFS}${rpmlibdir}/DB_CONFIG << EOF | 64 | cat > ${INSTALL_ROOTFS_RPM}${rpmlibdir}/DB_CONFIG << EOF |
| 61 | # ================ Environment | 65 | # ================ Environment |
| 62 | set_data_dir . | 66 | set_data_dir . |
| 63 | set_create_dir . | 67 | set_create_dir . |
| @@ -81,15 +85,13 @@ mutex_set_max 163840 | |||
| 81 | # ================ Replication | 85 | # ================ Replication |
| 82 | EOF | 86 | EOF |
| 83 | 87 | ||
| 84 | #install pacakges | ||
| 85 | export INSTALL_ROOTFS_RPM="${IMAGE_ROOTFS}" | ||
| 86 | export INSTALL_PLATFORM_RPM="${TARGET_ARCH}" | 88 | export INSTALL_PLATFORM_RPM="${TARGET_ARCH}" |
| 87 | export INSTALL_CONFBASE_RPM="${RPMCONF_TARGET_BASE}" | 89 | export INSTALL_CONFBASE_RPM="${RPMCONF_TARGET_BASE}" |
| 88 | export INSTALL_PACKAGES_NORMAL_RPM="${PACKAGE_INSTALL}" | 90 | export INSTALL_PACKAGES_NORMAL_RPM="${PACKAGE_INSTALL}" |
| 89 | export INSTALL_PACKAGES_ATTEMPTONLY_RPM="${PACKAGE_INSTALL_ATTEMPTONLY}" | 91 | export INSTALL_PACKAGES_ATTEMPTONLY_RPM="${PACKAGE_INSTALL_ATTEMPTONLY}" |
| 90 | export INSTALL_PACKAGES_LINGUAS_RPM="${LINGUAS_INSTALL}" | 92 | export INSTALL_PACKAGES_LINGUAS_RPM="${LINGUAS_INSTALL}" |
| 91 | export INSTALL_PROVIDENAME_RPM="" | 93 | export INSTALL_PROVIDENAME_RPM="" |
| 92 | export INSTALL_TASK_RPM="populate_sdk" | 94 | export INSTALL_TASK_RPM="rootfs_rpm_do_rootfs" |
| 93 | 95 | ||
| 94 | # List must be prefered to least preferred order | 96 | # List must be prefered to least preferred order |
| 95 | INSTALL_PLATFORM_EXTRA_RPM="" | 97 | INSTALL_PLATFORM_EXTRA_RPM="" |
| @@ -221,5 +223,4 @@ python () { | |||
| 221 | ml_package_archs += localdata.getVar("PACKAGE_ARCHS", True) or "" | 223 | ml_package_archs += localdata.getVar("PACKAGE_ARCHS", True) or "" |
| 222 | #bb.note("ML_PACKAGE_ARCHS %s %s %s" % (eext[1], localdata.getVar("PACKAGE_ARCHS", True) or "(none)", overrides)) | 224 | #bb.note("ML_PACKAGE_ARCHS %s %s %s" % (eext[1], localdata.getVar("PACKAGE_ARCHS", True) or "(none)", overrides)) |
| 223 | bb.data.setVar('MULTILIB_PACKAGE_ARCHS', ml_package_archs, d) | 225 | bb.data.setVar('MULTILIB_PACKAGE_ARCHS', ml_package_archs, d) |
| 224 | |||
| 225 | } | 226 | } |
