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 () {  		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 + +	# 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 base_package_archs ml_package_archs; do +	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 -		colon=false -		for each in `cat ${RPMCONF_TARGET_BASE}-${archvar}.conf` ; do -			if [ "$o_colon_t" == true ]; then -				printf ":" >> ${RPMCONF_TARGET_BASE}.macro -			fi -			if [ "$colon" == true ]; then -				printf ":" >> ${RPMCONF_TARGET_BASE}-${archvar}.macro -			fi -			printf "%s" $each >> ${RPMCONF_TARGET_BASE}.macro -			o_colon_t=true -			printf "%s" $each >> ${RPMCONF_TARGET_BASE}-${archvar}.macro -			colon=true -		done -		printf "\n" >> ${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 -		printf "_solve_dbpath " > ${RPMCONF_HOST_BASE}-${archvar}.macro +	for archvar in "$@"; do +		printf "_solve_dbpath " > ${rpmconf_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 +		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_HOST_BASE}-${archvar}.macro +				printf ":" >> ${rpmconf_base}-${archvar}.macro  			fi -			printf "%s" $each >> ${RPMCONF_HOST_BASE}.macro -			o_colon_h=true -			printf "%s" $each >> ${RPMCONF_HOST_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_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? 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 () {  	#createrepo "${DEPLOY_DIR_RPM}" +	# install packages +	# This needs to work in the same way as populate_sdk_rpm.bbclass! +	export INSTALL_ROOTFS_RPM="${IMAGE_ROOTFS}" +  	# Setup base system configuration -	mkdir -p ${IMAGE_ROOTFS}/etc/rpm/ +	mkdir -p ${INSTALL_ROOTFS_RPM}/etc/rpm/ -	mkdir -p ${IMAGE_ROOTFS}${rpmlibdir} -	mkdir -p ${IMAGE_ROOTFS}${rpmlibdir}/log -	cat > ${IMAGE_ROOTFS}${rpmlibdir}/DB_CONFIG << EOF +	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) -  } | 
