Patchwork rootfs_rpm: Add Multilib prefix to installed_packages list

login
register
mail settings
Submitter Saul Wold
Date Sept. 18, 2012, 7:19 p.m.
Message ID <1347995954-1200-1-git-send-email-sgw@linux.intel.com>
Download mbox | patch
Permalink /patch/36843/
State New
Headers show

Comments

Saul Wold - Sept. 18, 2012, 7:19 p.m.
RPM does not name it's packages with the Multilib prefix,
but the rootfs_rpm class keeps track of the Multilib prefixs
in a list. Use that list to re-attach the prefix for use with
the license bbclass, buildhistory bbclass will also use this
and make it more accurate between multilib and non-multilib.
Use the embedded "Platform" information to ensure we get all
the correct matching.

Signed-off-by: Saul Wold <sgw@linux.intel.com>
---
 meta/classes/rootfs_rpm.bbclass |   23 +++++++++++++++++++----
 1 file changed, 19 insertions(+), 4 deletions(-)
Saul Wold - Sept. 19, 2012, 3:29 p.m.
On 09/18/2012 12:19 PM, Saul Wold wrote:
> RPM does not name it's packages with the Multilib prefix,
> but the rootfs_rpm class keeps track of the Multilib prefixs
> in a list. Use that list to re-attach the prefix for use with
> the license bbclass, buildhistory bbclass will also use this
> and make it more accurate between multilib and non-multilib.
> Use the embedded "Platform" information to ensure we get all
> the correct matching.
>
Drop this patch there still seems to be some issues with it.

I am beginning to really hate rpm!

Sau!


> Signed-off-by: Saul Wold <sgw@linux.intel.com>
> ---
>   meta/classes/rootfs_rpm.bbclass |   23 +++++++++++++++++++----
>   1 file changed, 19 insertions(+), 4 deletions(-)
>
> diff --git a/meta/classes/rootfs_rpm.bbclass b/meta/classes/rootfs_rpm.bbclass
> index c0207d8..a93b3ec 100644
> --- a/meta/classes/rootfs_rpm.bbclass
> +++ b/meta/classes/rootfs_rpm.bbclass
> @@ -142,12 +142,27 @@ RPM_QUERY_CMD = '${RPM} --root $INSTALL_ROOTFS_RPM -D "_dbpath ${rpmlibdir}" \
>
>   list_installed_packages() {
>   	if [ "$1" = "arch" ] ; then
> -		${RPM_QUERY_CMD} -qa --qf "[%{NAME} %{ARCH}\n]"
> -	elif [ "$1" = "file" ] ; then
> -		${RPM_QUERY_CMD} -qa --qf "[%{NAME} %{PACKAGEORIGIN}\n]"
> +		GET_LIST=$(${RPM_QUERY_CMD} -qa --qf "[%{NAME} %{ARCH} %{Platform}\n]")
> +        elif [ "$1" = "file" ] ; then
> +		GET_LIST=$(${RPM_QUERY_CMD} -qa --qf "[%{NAME} %{PACKAGEORIGIN} %{Platform}\n]")
> +        else
> +		GET_LIST=$(${RPM_QUERY_CMD} -qa --qf "[%{NAME} %{Platform}\n]")
> +	fi
> +	if [ "x${MULTILIB_PREFIX_LIST}" = "x" ] ; then
> +		echo "$GET_LIST"
>   	else
> -		${RPM_QUERY_CMD} -qa --qf "[%{NAME}\n]"
> +		for prefix in `echo ${MULTILIB_PREFIX_LIST}`; do
> +			# Use awk to find the multilib prefix and then
> +			# print the info, need to different return counts
> +			if [ "x$1" = "x" ] ; then
> +				echo "$GET_LIST" | awk -v prefix="$prefix" '$0 ~ prefix {printf("%s-%s\n", prefix, $1); } $0 !~ prefix {print $1}'
> +			else
> +				echo "$GET_LIST" | awk -v prefix="$prefix" '$0 ~ prefix {printf("%s-%s %s\n", prefix, $1, $2); } $0 !~ prefix {print $1, $2}'
> +			fi
> +		done
>   	fi
> +
> +
>   }
>
>   rootfs_list_installed_depends() {
>

Patch

diff --git a/meta/classes/rootfs_rpm.bbclass b/meta/classes/rootfs_rpm.bbclass
index c0207d8..a93b3ec 100644
--- a/meta/classes/rootfs_rpm.bbclass
+++ b/meta/classes/rootfs_rpm.bbclass
@@ -142,12 +142,27 @@  RPM_QUERY_CMD = '${RPM} --root $INSTALL_ROOTFS_RPM -D "_dbpath ${rpmlibdir}" \
 
 list_installed_packages() {
 	if [ "$1" = "arch" ] ; then
-		${RPM_QUERY_CMD} -qa --qf "[%{NAME} %{ARCH}\n]"
-	elif [ "$1" = "file" ] ; then
-		${RPM_QUERY_CMD} -qa --qf "[%{NAME} %{PACKAGEORIGIN}\n]"
+		GET_LIST=$(${RPM_QUERY_CMD} -qa --qf "[%{NAME} %{ARCH} %{Platform}\n]")
+        elif [ "$1" = "file" ] ; then
+		GET_LIST=$(${RPM_QUERY_CMD} -qa --qf "[%{NAME} %{PACKAGEORIGIN} %{Platform}\n]")
+        else
+		GET_LIST=$(${RPM_QUERY_CMD} -qa --qf "[%{NAME} %{Platform}\n]")
+	fi
+	if [ "x${MULTILIB_PREFIX_LIST}" = "x" ] ; then
+		echo "$GET_LIST"
 	else
-		${RPM_QUERY_CMD} -qa --qf "[%{NAME}\n]"
+		for prefix in `echo ${MULTILIB_PREFIX_LIST}`; do
+			# Use awk to find the multilib prefix and then
+			# print the info, need to different return counts
+			if [ "x$1" = "x" ] ; then
+				echo "$GET_LIST" | awk -v prefix="$prefix" '$0 ~ prefix {printf("%s-%s\n", prefix, $1); } $0 !~ prefix {print $1}'
+			else
+				echo "$GET_LIST" | awk -v prefix="$prefix" '$0 ~ prefix {printf("%s-%s %s\n", prefix, $1, $2); } $0 !~ prefix {print $1, $2}'
+			fi
+		done
 	fi
+
+
 }
 
 rootfs_list_installed_depends() {