1
0
mirror of https://git.yoctoproject.org/poky synced 2026-05-30 12:29:55 +00:00

rootfs_rpm: Cleanup and minor bug fixes

in packages_rpm.bbclass:

Cleanup the way package_update_index_rpm works.  Break this out into two
functions, one for common functionality and one for controlling target vs
sdk package processing.

Similar change to package_generate_rpm_conf.

Usage of IMAGE_ROOTFS should actually be "target_rootfs", this fixes a problem
with the SDK case.

in rootfs_rpm.bbclass:

Minor re-order of the values, and avoid multiple uses of IMAGE_ROOTFS in order
to make the merge with the SDK behavior easier.

(From OE-Core rev: 46559f36d8a39655060b45d3d235de44a2c4c09b)

Signed-off-by: Mark Hatle <mark.hatle@windriver.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Mark Hatle
2011-08-01 11:56:37 -05:00
committed by Richard Purdie
parent be2a2764d8
commit 0d5dfb29c3
2 changed files with 66 additions and 83 deletions
+56 -74
View File
@@ -25,31 +25,41 @@ package_update_index_rpm () {
return
fi
base_package_archs="${PACKAGE_ARCHS}"
ml_package_archs="${MULTILIB_PACKAGE_ARCHS}"
# Update target packages
base_archs="${PACKAGE_ARCHS}"
ml_archs="${MULTILIB_PACKAGE_ARCHS}"
package_update_index_rpm_common "${RPMCONF_TARGET_BASE}" base_archs ml_archs
for archvar in base_package_archs ml_package_archs; do
# Update SDK packages
base_archs=""
for arch in ${PACKAGE_ARCHS}; do
sdkarch=`echo $arch | sed -e 's/${HOST_ARCH}/${SDK_ARCH}/'`
extension="-nativesdk"
if [ "$sdkarch" = "all" -o "$sdkarch" = "any" -o "$sdkarch" = "noarch" ]; then
extension=""
fi
base_archs="$base_archs $sdkarch$extension"
done
package_update_index_rpm_common "${RPMCONF_HOST_BASE}" base_archs
}
package_update_index_rpm_common () {
rpmconf_base="$1"
shift
for archvar in "$@"; do
eval archs=\${${archvar}}
packagedirs=""
packagedirs_sdk=""
for arch in $archs; do
sdkarch=`echo $arch | sed -e 's/${HOST_ARCH}/${SDK_ARCH}/'`
extension="-nativesdk"
if [ "$sdkarch" = "all" -o "$sdkarch" = "any" -o "$sdkarch" = "noarch" ]; then
extension=""
fi
packagedirs="${DEPLOY_DIR_RPM}/$arch $packagedirs"
packagedirs_sdk="${DEPLOY_DIR_RPM}/$sdkarch$extension $packagedirs_sdk"
rm -rf ${DEPLOY_DIR_RPM}/$arch/solvedb
rm -rf ${DEPLOY_DIR_RPM}/$sdkarch$extension/solvedb
done
cat /dev/null > ${RPMCONF_TARGET_BASE}-${archvar}.conf
cat /dev/null > ${rpmconf_base}-${archvar}.conf
for pkgdir in $packagedirs; do
if [ -e $pkgdir/ ]; then
echo "Generating solve db for $pkgdir..."
echo $pkgdir/solvedb >> ${RPMCONF_TARGET_BASE}-${archvar}.conf
echo $pkgdir/solvedb >> ${rpmconf_base}-${archvar}.conf
if [ -d $pkgdir/solvedb ]; then
# We've already processed this and it's a duplicate
continue
@@ -65,27 +75,6 @@ package_update_index_rpm () {
$pkgdir/solvedb/manifest
fi
done
cat /dev/null > ${RPMCONF_HOST_BASE}-${archvar}.conf
for pkgdir in $packagedirs_sdk; do
if [ -e $pkgdir/ ]; then
echo "Generating solve db for $pkgdir..."
echo $pkgdir/solvedb >> ${RPMCONF_HOST_BASE}-${archvar}.conf
if [ -d $pkgdir/solvedb ]; then
# We've already processed this and it's a duplicate
continue
fi
mkdir -p $pkgdir/solvedb
echo "# Dynamically generated solve manifest" >> $pkgdir/solvedb/manifest
find $pkgdir -maxdepth 1 -type f >> $pkgdir/solvedb/manifest
${RPM} -i --replacepkgs --replacefiles --oldpackage \
-D "_dbpath $pkgdir/solvedb" --justdb \
--noaid --nodeps --noorder --noscripts --notriggers --noparentdirs --nolinktos --stats \
--ignoresize --nosignature --nodigest \
-D "__dbi_txn create nofsync" \
$pkgdir/solvedb/manifest
fi
done
done
}
@@ -94,45 +83,38 @@ package_update_index_rpm () {
# generated depsolver db's...
#
package_generate_rpm_conf () {
printf "_solve_dbpath " > ${RPMCONF_TARGET_BASE}.macro
o_colon_t=false
o_colon_h=false
# Update target packages
package_generate_rpm_conf_common "${RPMCONF_TARGET_BASE}" base_archs ml_archs
for archvar in base_package_archs ml_package_archs; do
printf "_solve_dbpath " > ${RPMCONF_TARGET_BASE}-${archvar}.macro
# Update SDK packages
package_generate_rpm_conf_common "${RPMCONF_HOST_BASE}" base_archs
}
package_generate_rpm_conf_common() {
rpmconf_base="$1"
shift
printf "_solve_dbpath " > ${rpmconf_base}.macro
o_colon=false
for archvar in "$@"; do
printf "_solve_dbpath " > ${rpmconf_base}-${archvar}.macro
colon=false
for each in `cat ${RPMCONF_TARGET_BASE}-${archvar}.conf` ; do
if [ "$o_colon_t" == true ]; then
printf ":" >> ${RPMCONF_TARGET_BASE}.macro
for each in `cat ${rpmconf_base}-${archvar}.conf` ; do
if [ "$o_colon" == true ]; then
printf ":" >> ${rpmconf_base}.macro
fi
if [ "$colon" == true ]; then
printf ":" >> ${RPMCONF_TARGET_BASE}-${archvar}.macro
printf ":" >> ${rpmconf_base}-${archvar}.macro
fi
printf "%s" $each >> ${RPMCONF_TARGET_BASE}.macro
o_colon_t=true
printf "%s" $each >> ${RPMCONF_TARGET_BASE}-${archvar}.macro
printf "%s" $each >> ${rpmconf_base}.macro
o_colon=true
printf "%s" $each >> ${rpmconf_base}-${archvar}.macro
colon=true
done
printf "\n" >> ${RPMCONF_TARGET_BASE}-${archvar}.macro
printf "_solve_dbpath " > ${RPMCONF_HOST_BASE}-${archvar}.macro
colon=false
for each in `cat ${RPMCONF_HOST_BASE}-${archvar}.conf` ; do
if [ "$o_colon_h" == true ]; then
printf ":" >> ${RPMCONF_HOST_BASE}.macro
fi
if [ "$colon" == true ]; then
printf ":" >> ${RPMCONF_HOST_BASE}-${archvar}.macro
fi
printf "%s" $each >> ${RPMCONF_HOST_BASE}.macro
o_colon_h=true
printf "%s" $each >> ${RPMCONF_HOST_BASE}-${archvar}.macro
colon=true
done
printf "\n" >> ${RPMCONF_HOST_BASE}-${archvar}.macro
printf "\n" >> ${rpmconf_base}-${archvar}.macro
done
printf "\n" >> ${RPMCONF_TARGET_BASE}.macro
printf "\n" >> ${RPMCONF_HOST_BASE}.macro
printf "\n" >> ${rpmconf_base}.macro
}
rpm_log_check() {
@@ -211,7 +193,7 @@ package_install_internal_rpm () {
mkdir -p ${target_rootfs}/etc/rpm/sysinfo
echo "/" >${target_rootfs}/etc/rpm/sysinfo/Dirnames
if [ ! -z "$providename" ]; then
>>${target_rootfs}/etc/rpm/sysinfo/Providename
cat /dev/null > ${target_rootfs}/etc/rpm/sysinfo/Providename
for provide in $providename ; do
echo $provide >> ${target_rootfs}/etc/rpm/sysinfo/Providename
done
@@ -227,10 +209,10 @@ package_install_internal_rpm () {
for pkg in ${package_linguas}; do
echo "Processing $pkg..."
archvar=base_package_archs
archvar=base_archs
ml_pkg=$(echo ${pkg} | sed "s,^${MLPREFIX}\(.*\),\1,")
if [ "${ml_pkg}" != "${pkg}" ]; then
archvar=ml_package_archs
archvar=ml_archs
fi
pkg_name=$(resolve_package_rpm ${confbase}-${archvar}.conf ${ml_pkg})
@@ -238,7 +220,7 @@ package_install_internal_rpm () {
echo "Unable to find package $pkg ($ml_pkg)!"
exit 1
fi
echo $pkg_name >> ${IMAGE_ROOTFS}/install/install.manifest
echo $pkg_name >> ${target_rootfs}/install/install.manifest
done
fi
fi
@@ -247,10 +229,10 @@ package_install_internal_rpm () {
for pkg in ${package_to_install} ; do
echo "Processing $pkg..."
archvar=base_package_archs
archvar=base_archs
ml_pkg=$(echo ${pkg} | sed "s,^${MLPREFIX}\(.*\),\1,")
if [ "${ml_pkg}" != "${pkg}" ]; then
archvar=ml_package_archs
archvar=ml_archs
fi
pkg_name=$(resolve_package_rpm ${confbase}-${archvar}.conf ${ml_pkg})
@@ -258,7 +240,7 @@ package_install_internal_rpm () {
echo "Unable to find package $pkg ($ml_pkg)!"
exit 1
fi
echo $pkg_name >> ${IMAGE_ROOTFS}/install/install.manifest
echo $pkg_name >> ${target_rootfs}/install/install.manifest
done
fi
@@ -303,7 +285,7 @@ package_install_internal_rpm () {
# Dump the full set of recommends...
${RPM} --predefine "_rpmds_sysinfo_path ${target_rootfs}/etc/rpm/sysinfo" \
--predefine "_rpmrc_platform_path ${target_rootfs}/etc/rpm/platform" \
-D "_dbpath ${IMAGE_ROOTFS}/install" -D "`cat ${confbase}.macro`" \
-D "_dbpath ${target_rootfs}/install" -D "`cat ${confbase}.macro`" \
-D "__dbi_txn create nofsync private" \
-qa --qf "[%{RECOMMENDS}\n]" | sort -u > ${target_rootfs}/install/recommend
# Did we add more to the list?
+10 -9
View File
@@ -52,12 +52,16 @@ fakeroot rootfs_rpm_do_rootfs () {
#createrepo "${DEPLOY_DIR_RPM}"
# Setup base system configuration
mkdir -p ${IMAGE_ROOTFS}/etc/rpm/
# install packages
# This needs to work in the same way as populate_sdk_rpm.bbclass!
export INSTALL_ROOTFS_RPM="${IMAGE_ROOTFS}"
mkdir -p ${IMAGE_ROOTFS}${rpmlibdir}
mkdir -p ${IMAGE_ROOTFS}${rpmlibdir}/log
cat > ${IMAGE_ROOTFS}${rpmlibdir}/DB_CONFIG << EOF
# Setup base system configuration
mkdir -p ${INSTALL_ROOTFS_RPM}/etc/rpm/
mkdir -p ${INSTALL_ROOTFS_RPM}${rpmlibdir}
mkdir -p ${INSTALL_ROOTFS_RPM}${rpmlibdir}/log
cat > ${INSTALL_ROOTFS_RPM}${rpmlibdir}/DB_CONFIG << EOF
# ================ Environment
set_data_dir .
set_create_dir .
@@ -81,15 +85,13 @@ mutex_set_max 163840
# ================ Replication
EOF
#install pacakges
export INSTALL_ROOTFS_RPM="${IMAGE_ROOTFS}"
export INSTALL_PLATFORM_RPM="${TARGET_ARCH}"
export INSTALL_CONFBASE_RPM="${RPMCONF_TARGET_BASE}"
export INSTALL_PACKAGES_NORMAL_RPM="${PACKAGE_INSTALL}"
export INSTALL_PACKAGES_ATTEMPTONLY_RPM="${PACKAGE_INSTALL_ATTEMPTONLY}"
export INSTALL_PACKAGES_LINGUAS_RPM="${LINGUAS_INSTALL}"
export INSTALL_PROVIDENAME_RPM=""
export INSTALL_TASK_RPM="populate_sdk"
export INSTALL_TASK_RPM="rootfs_rpm_do_rootfs"
# List must be prefered to least preferred order
INSTALL_PLATFORM_EXTRA_RPM=""
@@ -221,5 +223,4 @@ python () {
ml_package_archs += localdata.getVar("PACKAGE_ARCHS", True) or ""
#bb.note("ML_PACKAGE_ARCHS %s %s %s" % (eext[1], localdata.getVar("PACKAGE_ARCHS", True) or "(none)", overrides))
bb.data.setVar('MULTILIB_PACKAGE_ARCHS', ml_package_archs, d)
}