From fcad0de93d1b54b6fb768008883b2511be9d2772 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20Pierret=20=28fepitre=29?=
 <frederic.pierret@qubes-os.org>
Date: Fri, 9 Oct 2020 17:02:13 +0200
Subject: [PATCH] rpmdb2solve.c: add homedir functionality

Based on previous original work of author in https://lists.debian.org/debian-devel/2019/09/msg00218.html
---
 tools/rpmdb2solv.c | 11 +++++++++--
 1 file changed, 9 insertions(+), 2 deletions(-)

--- a/tools/rpmdb2solv.c
+++ b/tools/rpmdb2solv.c
@@ -46,8 +46,9 @@
 usage(int status)
 {
   fprintf(stderr, "\nUsage:\n"
-	  "rpmdb2solv [-P] [-C] [-n] [-b <basefile>] [-p <productsdir>] [-r <root>]\n"
+	  "rpmdb2solv [-P] [-C] [-n] [H] [-b <basefile>] [-p <productsdir>] [-r <root>]\n"
 	  " -n : No packages, do not read rpmdb, useful to only parse products\n"
+	  " -H : use rpmdb in user's home directory\n"
 	  " -p <productsdir> : Scan <productsdir> for .prod files, representing installed products\n"
 	  " -r <root> : Prefix rpmdb path and <productsdir> with <root>\n"
 	  " -o <solv> : Write .solv to file instead of stdout\n"
@@ -68,6 +69,7 @@
   int c, percent = 0;
   int nopacks = 0;
   int add_changelog = 0;
+  int homedir = 0;
   const char *root = 0;
   const char *dbpath = 0;
   const char *refname = 0;
@@ -89,7 +91,7 @@
    * parse arguments
    */
   
-  while ((c = getopt(argc, argv, "ACD:PhnkxXr:p:o:")) >= 0)
+  while ((c = getopt(argc, argv, "ACD:PhnHkxXr:p:o:")) >= 0)
     switch (c)
       {
       case 'h':
@@ -136,6 +138,9 @@
       case 'C':
 	add_changelog = 1;
 	break;
+      case 'H':
+        homedir = 1;
+        break;
       default:
 	usage(1);
       }
@@ -195,6 +200,8 @@
 	flags |= RPMDB_REPORT_PROGRESS;
       if (add_changelog)
 	flags |= RPM_ADD_WITH_CHANGELOG;
+      if (homedir)
+        flags |= RPMDB_USE_HOMEDIR;
       if (repo_add_rpmdb_reffp(repo, reffp, flags))
 	{
 	  fprintf(stderr, "rpmdb2solv: %s\n", pool_errstr(pool));
