2020#include <string.h>
2121#include <unistd.h>
2222
23+ #ifdef ENABLE_RPMDB_LIBRPM
24+ #include <rpm/rpmmacro.h>
25+ #endif
26+
27+
2328#include "pool.h"
2429#include "repo.h"
2530#include "repo_rpmdb.h"
@@ -64,6 +69,7 @@ main(int argc, char **argv)
6469 int nopacks = 0 ;
6570 int add_changelog = 0 ;
6671 const char * root = 0 ;
72+ const char * dbpath = 0 ;
6773 const char * refname = 0 ;
6874#ifdef ENABLE_SUSEREPO
6975 char * proddir = 0 ;
@@ -83,7 +89,7 @@ main(int argc, char **argv)
8389 * parse arguments
8490 */
8591
86- while ((c = getopt (argc , argv , "ACPhnkxXr :p:o:" )) >= 0 )
92+ while ((c = getopt (argc , argv , "ACD:PhnkxXr :p:o:" )) >= 0 )
8793 switch (c )
8894 {
8995 case 'h' :
@@ -92,6 +98,9 @@ main(int argc, char **argv)
9298 case 'r' :
9399 root = optarg ;
94100 break ;
101+ case 'D' :
102+ dbpath = optarg ;
103+ break ;
95104 case 'n' :
96105 nopacks = 1 ;
97106 break ;
@@ -160,6 +169,21 @@ main(int argc, char **argv)
160169
161170 if (root && * root )
162171 pool_set_rootdir (pool , root );
172+ #ifdef ENABLE_PUBKEY
173+ if (dbpath && * dbpath && (!nopacks || pubkeys ))
174+ #else
175+ if (dbpath && * dbpath && !nopacks )
176+ #endif
177+ {
178+ #ifdef ENABLE_RPMDB_LIBRPM
179+ char * macro = solv_dupjoin ("_dbpath " , dbpath , 0 );
180+ rpmDefineMacro (NULL , macro , 0 );
181+ free (macro );
182+ #else
183+ fprintf (stderr , "cannot set dbpath without librpm\n" );
184+ exit (1 );
185+ #endif
186+ }
163187
164188 repo = repo_create (pool , "installed" );
165189 data = repo_add_repodata (repo , 0 );
0 commit comments