RPM Community Forums

Mailing List Message of <rpm-cvs>

[CVS] RPM: rpm/ CHANGES rpm/rpmio/ Makefile.am librpmio.vers rpmrepo.c...

From: Jeff Johnson <jbj@rpm5.org>
Date: Tue 31 Aug 2010 - 18:34:01 CEST
Message-Id: <20100831163401.DA8E1CC3A9@rpm5.org>
  RPM Package Manager, CVS Repository
  /cvs/
  ____________________________________________________________________________

  Server: rpm5.org                         Name:   Jeff Johnson
  Root:   /v/rpm/cvs                       Email:  jbj@rpm5.org
  Module: rpm                              Date:   31-Aug-2010 18:34:01
  Branch: HEAD                             Handle: 2010083116340001

  Modified files:
    rpm                     CHANGES
    rpm/rpmio               Makefile.am librpmio.vers rpmrepo.c rpmrepo.h
    rpm/tools               rpmrepo.c

  Log:
    - rpmrepo: move CLI tables and global __rpmrepo structure.

  Summary:
    Revision    Changes     Path
    1.3435      +1  -0      rpm/CHANGES
    1.285       +4  -0      rpm/rpmio/Makefile.am
    2.192       +3  -0      rpm/rpmio/librpmio.vers
    2.3         +366 -0     rpm/rpmio/rpmrepo.c
    2.3         +12 -4      rpm/rpmio/rpmrepo.h
    2.27        +15 -571    rpm/tools/rpmrepo.c
  ____________________________________________________________________________

  patch -p0 <<'@@ .'
  Index: rpm/CHANGES
  ============================================================================
  $ cvs diff -u -r1.3434 -r1.3435 CHANGES
  --- rpm/CHANGES	31 Aug 2010 16:30:50 -0000	1.3434
  +++ rpm/CHANGES	31 Aug 2010 16:34:00 -0000	1.3435
  @@ -1,4 +1,5 @@
   5.3.3 -> 5.4a1:
  +    - jbj: rpmrepo: move CLI tables and global __rpmrepo structure.
       - afb: tests: target POSIX make instead of GNU make.
       - jbj: rpmrepo: move the data structures into the rpmrepo object.
       - jbj: rpmrepo: stub-in a rpmrepo wrapper to bury the CLI tool in a library.
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmio/Makefile.am
  ============================================================================
  $ cvs diff -u -r1.284 -r1.285 Makefile.am
  --- rpm/rpmio/Makefile.am	30 Aug 2010 17:17:42 -0000	1.284
  +++ rpm/rpmio/Makefile.am	31 Aug 2010 16:34:01 -0000	1.285
  @@ -91,6 +91,10 @@
   
   usrlibdir = $(libdir)
   usrlib_LTLIBRARIES = librpmio.la
  +# XXX rpmrepo.c needs to include templates from scripts/*
  +librpmio_la_CPPFLAGS = \
  +	$(AM_CPPFLAGS) -I$(top_srcdir)/scripts -I$(top_builddir)/scripts \
  +	$(CPPFLAGS)
   librpmio_la_SOURCES = \
   	ar.c argv.c bzdio.c cpio.c crc.c digest.c fnmatch.c fts.c \
   	getdate.c gzdio.c glob.c iosm.c lsyck.c \
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmio/librpmio.vers
  ============================================================================
  $ cvs diff -u -r2.191 -r2.192 librpmio.vers
  --- rpm/rpmio/librpmio.vers	30 Aug 2010 17:17:42 -0000	2.191
  +++ rpm/rpmio/librpmio.vers	31 Aug 2010 16:34:01 -0000	2.192
  @@ -541,7 +541,10 @@
       rpmpythonNew;
       rpmpythonRun;
       rpmpythonRunFile;
  +    __rpmrepo;
  +    _rpmrepo;
       _rpmrepo_debug;
  +    _rpmrepoOptions;
       rpmrepoNew;
       _rpmrubyI;
       _rpmrubyPool;
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmio/rpmrepo.c
  ============================================================================
  $ cvs diff -u -r2.2 -r2.3 rpmrepo.c
  --- rpm/rpmio/rpmrepo.c	30 Aug 2010 17:48:18 -0000	2.2
  +++ rpm/rpmio/rpmrepo.c	31 Aug 2010 16:34:01 -0000	2.3
  @@ -56,6 +56,372 @@
   /*@unchecked@*/
   int _rpmrepo_debug = 0;
   
  +
  +/*==============================================================*/
  +
  +/*@unchecked@*/ /*@observer@*/
  +static const char primary_xml_init[] =
  +"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
  +"<metadata xmlns=\"http://linux.duke.edu/metadata/common\" xmlns:rpm=\"http://linux.duke.edu/metadata/rpm\" packages=\"0\">\n";
  +/*@unchecked@*/ /*@observer@*/
  +static const char primary_xml_fini[] = "</metadata>\n";
  +
  +/*@unchecked@*/ /*@observer@*/
  +static const char filelists_xml_init[] =
  +"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
  +"<filelists xmlns=\"http://linux.duke.edu/metadata/filelists\" packages=\"0\">\n";
  +/*@unchecked@*/ /*@observer@*/
  +static const char filelists_xml_fini[] = "</filelists>\n";
  +
  +/*@unchecked@*/ /*@observer@*/
  +static const char other_xml_init[] =
  +"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
  +"<otherdata xmlns=\"http://linux.duke.edu/metadata/other\" packages=\"0\">\n";
  +/*@unchecked@*/ /*@observer@*/
  +static const char other_xml_fini[] = "</otherdata>\n";
  +
  +/*@unchecked@*/ /*@observer@*/
  +static const char repomd_xml_init[] = "\
  +<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\
  +<repomd xmlns=\"http://linux.duke.edu/metadata/repo\">\n";
  +/*@unchecked@*/ /*@observer@*/
  +static const char repomd_xml_fini[] = "</repomd>\n";
  +
  +/* XXX todo: wire up popt aliases and bury the --queryformat glop externally. */
  +/*@unchecked@*/ /*@observer@*/
  +static const char primary_xml_qfmt[] =
  +#include "yum_primary_xml"
  +;
  +
  +/*@unchecked@*/ /*@observer@*/
  +static const char filelists_xml_qfmt[] =
  +#include "yum_filelists_xml"
  +;
  +
  +/*@unchecked@*/ /*@observer@*/
  +static const char other_xml_qfmt[] =
  +#include "yum_other_xml"
  +;
  +
  +/*@unchecked@*/ /*@observer@*/
  +static const char primary_yaml_qfmt[] =
  +#include "wnh_primary_yaml"
  +;
  +
  +/*@unchecked@*/ /*@observer@*/
  +static const char filelists_yaml_qfmt[] =
  +#include "wnh_filelists_yaml"
  +;
  +
  +/*@unchecked@*/ /*@observer@*/
  +static const char other_yaml_qfmt[] =
  +#include "wnh_other_yaml"
  +;
  +
  +/*@unchecked@*/ /*@observer@*/
  +static const char Packages_qfmt[] =
  +#include "deb_Packages"
  +;
  +
  +/*@unchecked@*/ /*@observer@*/
  +static const char Sources_qfmt[] =
  +#include "deb_Sources"
  +;
  +
  +/*@-nullassign@*/
  +/*@unchecked@*/ /*@observer@*/
  +static const char *primary_sql_init[] = {
  +"PRAGMA synchronous = \"OFF\";",
  +"pragma locking_mode = \"EXCLUSIVE\";",
  +"CREATE TABLE conflicts (  pkgKey INTEGER,  name TEXT,  flags TEXT,  epoch TEXT,  version TEXT,  release TEXT );",
  +"CREATE TABLE db_info (dbversion INTEGER,  checksum TEXT);",
  +"CREATE TABLE files (  pkgKey INTEGER,  name TEXT,  type TEXT );",
  +"CREATE TABLE obsoletes (  pkgKey INTEGER,  name TEXT,  flags TEXT,  epoch TEXT,  version TEXT,  release TEXT );",
  +"CREATE TABLE packages (  pkgKey INTEGER PRIMARY KEY,  pkgId TEXT,  name TEXT,  arch TEXT,  version TEXT,  epoch TEXT,  release TEXT,  summary TEXT,  description TEXT,  url TEXT,  time_file INTEGER,  time_build INTEGER,  rpm_license TEXT,  rpm_vendor TEXT,  rpm_group TEXT,  rpm_buildhost TEXT,  rpm_sourcerpm TEXT,  rpm_header_start INTEGER,  rpm_header_end INTEGER,  rpm_packager TEXT,  size_package INTEGER,  size_installed INTEGER,  size_archive INTEGER,  location_href TEXT,  location_base TEXT,  checksum_type TEXT);",
  +"CREATE TABLE provides (  pkgKey INTEGER,  name TEXT,  flags TEXT,  epoch TEXT,  version TEXT,  release TEXT );",
  +"CREATE TABLE requires (  pkgKey INTEGER,  name TEXT,  flags TEXT,  epoch TEXT,  version TEXT,  release TEXT  );",
  +"CREATE INDEX filenames ON files (name);",
  +"CREATE INDEX packageId ON packages (pkgId);",
  +"CREATE INDEX packagename ON packages (name);",
  +"CREATE INDEX pkgconflicts on conflicts (pkgKey);",
  +"CREATE INDEX pkgobsoletes on obsoletes (pkgKey);",
  +"CREATE INDEX pkgprovides on provides (pkgKey);",
  +"CREATE INDEX pkgrequires on requires (pkgKey);",
  +"CREATE INDEX providesname ON provides (name);",
  +"CREATE INDEX requiresname ON requires (name);",
  +"CREATE TRIGGER removals AFTER DELETE ON packages\
  +\n    BEGIN\n\
  +\n    DELETE FROM files WHERE pkgKey = old.pkgKey;\
  +\n    DELETE FROM requires WHERE pkgKey = old.pkgKey;\
  +\n    DELETE FROM provides WHERE pkgKey = old.pkgKey;\
  +\n    DELETE FROM conflicts WHERE pkgKey = old.pkgKey;\
  +\n    DELETE FROM obsoletes WHERE pkgKey = old.pkgKey;\
  +\n    END;",
  +"INSERT into db_info values (9, 'direct_create');",
  +    NULL
  +};
  +/*XXX todo: DBVERSION needs to be set */
  +
  +/*@unchecked@*/ /*@observer@*/
  +static const char *filelists_sql_init[] = {
  +"PRAGMA synchronous = \"OFF\";",
  +"pragma locking_mode = \"EXCLUSIVE\";",
  +"CREATE TABLE db_info (dbversion INTEGER, checksum TEXT);",
  +"CREATE TABLE filelist (  pkgKey INTEGER,  name TEXT,  type TEXT );",
  +"CREATE TABLE packages (  pkgKey INTEGER PRIMARY KEY,  pkgId TEXT);",
  +"CREATE INDEX filelistnames ON filelist (name);",
  +"CREATE INDEX keyfile ON filelist (pkgKey);",
  +"CREATE INDEX pkgId ON packages (pkgId);",
  +"CREATE TRIGGER remove_filelist AFTER DELETE ON packages\
  +\n    BEGIN\
  +\n    DELETE FROM filelist WHERE pkgKey = old.pkgKey;\
  +\n    END;",
  +"INSERT into db_info values (9, 'direct_create');",
  +    NULL
  +};
  +/*XXX todo: DBVERSION needs to be set */
  +
  +/*@unchecked@*/ /*@observer@*/
  +static const char *other_sql_init[] = {
  +"PRAGMA synchronous = \"OFF\";",
  +"pragma locking_mode = \"EXCLUSIVE\";",
  +"CREATE TABLE changelog (  pkgKey INTEGER,  author TEXT,  date INTEGER,  changelog TEXT);",
  +"CREATE TABLE db_info (dbversion INTEGER, checksum TEXT);",
  +"CREATE TABLE packages (  pkgKey INTEGER PRIMARY KEY,  pkgId TEXT);",
  +"CREATE INDEX keychange ON changelog (pkgKey);",
  +"CREATE INDEX pkgId ON packages (pkgId);",
  +"CREATE TRIGGER remove_changelogs AFTER DELETE ON packages\
  +\n    BEGIN\
  +\n    DELETE FROM changelog WHERE pkgKey = old.pkgKey;\
  +\n    END;",
  +"INSERT into db_info values (9, 'direct_create');",
  +    NULL
  +};
  +/*XXX todo: DBVERSION needs to be set */
  +/*@=nullassign@*/
  +
  +/* packages   1 pkgKey INTEGER PRIMARY KEY */
  +/* packages   2 pkgId TEXT */
  +/* packages   3 name TEXT */
  +/* packages   4 arch TEXT */
  +/* packages   5 version TEXT */
  +/* packages   6 epoch TEXT */
  +/* packages   7 release TEXT */
  +/* packages   8 summary TEXT */
  +/* packages   9 description TEXT */
  +/* packages  10 url TEXT */
  +/* packages  11 time_file INTEGER */
  +/* packages  12 time_build INTEGER */
  +/* packages  13 rpm_license TEXT */
  +/* packages  14 rpm_vendor TEXT */
  +/* packages  15 rpm_group TEXT */
  +/* packages  16 rpm_buildhost TEXT */
  +/* packages  17 rpm_sourcerpm TEXT */
  +/* packages  18 rpm_header_start INTEGER */
  +/* packages  19 rpm_header_end INTEGER */
  +/* packages  20 rpm_packager TEXT */
  +/* packages  21 size_package INTEGER */
  +/* packages  22 size_installed INTEGER */
  +/* packages  23 size_archive INTEGER */
  +/* packages  24 location_href TEXT */
  +/* packages  25 location_base TEXT */
  +/* packages  26 checksum_type TEXT */
  +/* obsoletes  1 pkgKey INTEGER */
  +/* obsoletes  2 name TEXT */
  +/* obsoletes  3 flags TEXT */
  +/* obsoletes  4 epoch TEXT */
  +/* obsoletes  5 version TEXT */
  +/* obsoletes  6 release TEXT */
  +/* provides   1 pkgKey INTEGER */
  +/* provides   2 name TEXT */
  +/* provides   3 flags TEXT */
  +/* provides   4 epoch TEXT */
  +/* provides   5 version TEXT */
  +/* provides   6 release TEXT */
  +/* conflicts  1 pkgKey INTEGER */
  +/* conflicts  2 name TEXT */
  +/* conflicts  3 flags TEXT */
  +/* conflicts  4 epoch TEXT */
  +/* conflicts  5 version TEXT */
  +/* conflicts  6 release TEXT */
  +/* requires   1 pkgKey INTEGER */
  +/* requires   2 name TEXT */
  +/* requires   3 flags TEXT */
  +/* requires   4 epoch TEXT */
  +/* requires   5 version TEXT */
  +/* requires   6 release TEXT */
  +/* files      1 pkgKey INTEGER */
  +/* files      2 name TEXT */
  +/* files      3 type TEXT */
  +
  +/*@unchecked@*/ /*@observer@*/
  +static const char primary_sql_qfmt[] =
  +#include "yum_primary_sqlite"
  +;
  +
  +/* packages  1 pkgKey INTEGER PRIMARY KEY */
  +/* packages  2 pkgId TEXT */
  +/* filelist  1 pkgKey INTEGER */
  +/* filelist  2 name TEXT */
  +/* filelist  3 type TEXT */
  +
  +/*@unchecked@*/ /*@observer@*/
  +static const char filelists_sql_qfmt[] =
  +#include "yum_filelists_sqlite"
  +;
  +
  +/* packages  1 pkgKey INTEGER PRIMARY KEY */
  +/* packages  2 pkgId TEXT */
  +/* changelog 1 pkgKey INTEGER */
  +/* changelog 2 author TEXT */
  +/* changelog 3 date INTEGER */
  +/* changelog 4 changelog TEXT */
  +
  +/*@unchecked@*/ /*@observer@*/
  +static const char other_sql_qfmt[] =
  +#include "yum_other_sqlite"
  +;
  +
  +/* XXX static when ready. */
  +/*@-fullinitblock@*/
  +/*@unchecked@*/
  +struct rpmrepo_s __rpmrepo = {
  +    .flags	= REPO_FLAGS_PRETTY,
  +
  +    .tempdir	= ".repodata",
  +    .finaldir	= "repodata",
  +    .olddir	= ".olddata",
  +    .markup	= ".xml",
  +    .pkgalgo	= PGPHASHALGO_SHA1,
  +    .algo	= PGPHASHALGO_SHA1,
  +    .primary	= {
  +	.type	= "primary",
  +	.xml_init= primary_xml_init,
  +	.xml_qfmt= primary_xml_qfmt,
  +	.xml_fini= primary_xml_fini,
  +	.sql_init= primary_sql_init,
  +	.sql_qfmt= primary_sql_qfmt,
  +#ifdef	NOTYET	/* XXX char **?!? */
  +	.sql_fini= NULL,
  +#endif
  +	.yaml_init= NULL,
  +	.yaml_qfmt= primary_yaml_qfmt,
  +	.yaml_fini= NULL,
  +	.Packages_init= NULL,
  +	.Packages_qfmt= NULL,
  +	.Packages_fini= NULL,
  +	.Sources_init= NULL,
  +	.Sources_qfmt= NULL,
  +	.Sources_fini= NULL
  +    },
  +    .filelists	= {
  +	.type	= "filelists",
  +	.xml_init= filelists_xml_init,
  +	.xml_qfmt= filelists_xml_qfmt,
  +	.xml_fini= filelists_xml_fini,
  +	.sql_init= filelists_sql_init,
  +	.sql_qfmt= filelists_sql_qfmt,
  +#ifdef	NOTYET	/* XXX char **?!? */
  +	.sql_fini= NULL,
  +#endif
  +	.yaml_init= NULL,
  +	.yaml_qfmt= filelists_yaml_qfmt,
  +	.yaml_fini= NULL,
  +	.Packages_init= NULL,
  +	.Packages_qfmt= NULL,
  +	.Packages_fini= NULL,
  +	.Sources_init= NULL,
  +	.Sources_qfmt= NULL,
  +	.Sources_fini= NULL
  +    },
  +    .other	= {
  +	.type	= "other",
  +	.xml_init= other_xml_init,
  +	.xml_qfmt= other_xml_qfmt,
  +	.xml_fini= other_xml_fini,
  +	.sql_init= other_sql_init,
  +	.sql_qfmt= other_sql_qfmt,
  +#ifdef	NOTYET	/* XXX char **?!? */
  +	.sql_fini= NULL,
  +#endif
  +	.yaml_init= NULL,
  +	.yaml_qfmt= other_yaml_qfmt,
  +	.yaml_fini= NULL,
  +	.Packages_init= NULL,
  +	.Packages_qfmt= NULL,
  +	.Packages_fini= NULL,
  +	.Sources_init= NULL,
  +	.Sources_qfmt= NULL,
  +	.Sources_fini= NULL
  +    },
  +    .repomd	= {
  +	.type	= "repomd",
  +	.xml_init= repomd_xml_init,
  +	.xml_qfmt= NULL,
  +	.xml_fini= repomd_xml_fini,
  +	.sql_init= NULL,
  +	.sql_qfmt= NULL,
  +#ifdef	NOTYET	/* XXX char **?!? */
  +	.sql_fini= NULL,
  +#endif
  +	.yaml_init= NULL,
  +	.yaml_qfmt= NULL,
  +	.yaml_fini= NULL,
  +	.Packages_init= NULL,
  +	.Packages_qfmt= Packages_qfmt,
  +	.Packages_fini= NULL,
  +	.Sources_init= NULL,
  +	.Sources_qfmt= Sources_qfmt,
  +	.Sources_fini= NULL
  +    }
  +};
  +/*@=fullinitblock@*/
  +
  +/*@unchecked@*/
  +rpmrepo _rpmrepo = &__rpmrepo;
  +
  +/*@unchecked@*/ /*@observer@*/
  +struct poptOption _rpmrepoOptions[] = {
  +
  + { "quiet", 'q', POPT_ARG_VAL,			&__rpmrepo.quiet, 0,
  +	N_("output nothing except for serious errors"), NULL },
  + { "verbose", 'v', 0,				NULL, (int)'v',
  +	N_("output more debugging info."), NULL },
  + { "dryrun", '\0', POPT_BIT_SET,	&__rpmrepo.flags, REPO_FLAGS_DRYRUN,
  +	N_("sanity check arguments, don't create metadata"), NULL },
  + { "excludes", 'x', POPT_ARG_ARGV,		&__rpmrepo.exclude_patterns, 0,
  +	N_("glob PATTERN(s) to exclude"), N_("PATTERN") },
  + { "includes", 'i', POPT_ARG_ARGV,		&__rpmrepo.include_patterns, 0,
  +	N_("glob PATTERN(s) to include"), N_("PATTERN") },
  + { "basedir", '\0', POPT_ARG_STRING|POPT_ARGFLAG_DOC_HIDDEN,	&__rpmrepo.basedir, 0,
  +	N_("top level directory"), N_("DIR") },
  + { "baseurl", 'u', POPT_ARG_STRING|POPT_ARGFLAG_DOC_HIDDEN,	&__rpmrepo.baseurl, 0,
  +	N_("baseurl to append on all files"), N_("BASEURL") },
  +#ifdef	NOTYET
  + { "groupfile", 'g', POPT_ARG_STRING|POPT_ARGFLAG_DOC_HIDDEN,	&__rpmrepo.groupfile, 0,
  +	N_("path to groupfile to include in metadata"), N_("FILE") },
  +#endif
  + { "pretty", 'p', POPT_BIT_SET|POPT_ARGFLAG_DOC_HIDDEN,		&__rpmrepo.flags, REPO_FLAGS_PRETTY,
  +	N_("make sure all xml generated is formatted"), NULL },
  + { "checkts", 'C', POPT_BIT_SET|POPT_ARGFLAG_DOC_HIDDEN,	&__rpmrepo.flags, REPO_FLAGS_CHECKTS,
  +	N_("check timestamps on files vs the metadata to see if we need to update"), NULL },
  + { "database", 'd', POPT_BIT_SET,		&__rpmrepo.flags, REPO_FLAGS_DATABASE,
  +	N_("create sqlite3 database files"), NULL },
  + { "split", '\0', POPT_BIT_SET|POPT_ARGFLAG_DOC_HIDDEN,		&__rpmrepo.flags, REPO_FLAGS_SPLIT,
  +	N_("generate split media"), NULL },
  + { "pkglist", 'l', POPT_ARG_ARGV|POPT_ARGFLAG_DOC_HIDDEN,	&__rpmrepo.manifests, 0,
  +	N_("use only the files listed in this file from the directory specified"), N_("FILE") },
  + { "outputdir", 'o', POPT_ARG_STRING,		&__rpmrepo.outputdir, 0,
  +	N_("<dir> = optional directory to output to"), N_("DIR") },
  + { "skip-symlinks", 'S', POPT_BIT_SET,		&__rpmrepo.flags, REPO_FLAGS_NOFOLLOW,
  +	N_("ignore symlinks of packages"), NULL },
  + { "unique-md-filenames", '\0', POPT_BIT_SET|POPT_ARGFLAG_DOC_HIDDEN, &__rpmrepo.flags, REPO_FLAGS_UNIQUEMDFN,
  +	N_("include the file's checksum in the filename, helps with proxies"), NULL },
  +
  +  POPT_TABLEEND
  +
  +};
  +
   static void rpmrepoFini(void * _repo)
   	/*@globals fileSystem @*/
   	/*@modifies *_repo, fileSystem @*/
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmio/rpmrepo.h
  ============================================================================
  $ cvs diff -u -r2.2 -r2.3 rpmrepo.h
  --- rpm/rpmio/rpmrepo.h	30 Aug 2010 17:48:18 -0000	2.2
  +++ rpm/rpmio/rpmrepo.h	31 Aug 2010 16:34:01 -0000	2.3
  @@ -5,18 +5,21 @@
    * \file rpmio/rpmrepo.h
    */
   
  +#include <rpmiotypes.h>
  +#include <rpmio.h>
   #include <argv.h>
   #include <mire.h>
  +#include <popt.h>
   
   /** \ingroup rpmio
    */
  -/*@unchecked@*/
  -extern int _rpmrepo_debug;
  +typedef /*@abstract@*/ /*@refcounted@*/ struct rpmrepo_s * rpmrepo;
  +typedef /*@abstract@*/ /*@refcounted@*/ struct rpmrfile_s * rpmrfile;
   
   /** \ingroup rpmio
    */
  -typedef /*@refcounted@*/ struct rpmrepo_s * rpmrepo;
  -typedef /*@refcounted@*/ struct rpmrfile_s * rpmrfile;
  +/*@unchecked@*/
  +extern int _rpmrepo_debug;
   
   #if defined(_RPMREPO_INTERNAL)
   /**
  @@ -215,6 +218,11 @@
   	/*@globals fileSystem, internalState @*/
   	/*@modifies fileSystem, internalState @*/;
   
  +#if defined(_RPMREPO_INTERNAL)
  +/*@unchecked@*/
  +extern struct poptOption _rpmrepoOptions[];
  +#endif
  +
   #ifdef __cplusplus
   }
   #endif
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/tools/rpmrepo.c
  ============================================================================
  $ cvs diff -u -r2.26 -r2.27 rpmrepo.c
  --- rpm/tools/rpmrepo.c	30 Aug 2010 17:48:18 -0000	2.26
  +++ rpm/tools/rpmrepo.c	31 Aug 2010 16:34:01 -0000	2.27
  @@ -61,472 +61,7 @@
   /*@access FD_t @*/
   /*@access miRE @*/
   
  -/*==============================================================*/
  -
  -
  -#ifdef	DYING
  -typedef struct rpmrepo_s * rpmrepo;
  -typedef struct rpmrfile_s * rpmrfile;
  -
  -/**
  - * Repository metadata file.
  - */
  -struct rpmrfile_s {
  -/*@observer@*/
  -    const char * type;
  -/*@observer@*/
  -    const char * xml_init;
  -/*@observer@*/ /*@relnull@*/
  -    const char * xml_qfmt;
  -/*@observer@*/
  -    const char * xml_fini;
  -/*@observer@*/
  -    const char ** sql_init;
  -/*@observer@*/
  -    const char * sql_qfmt;
  -#ifdef	NOTYET	/* XXX char **?!? */
  -/*@observer@*/
  -    const char ** sql_fini;
  -#endif
  -/*@observer@*/
  -    const char * yaml_init;
  -/*@observer@*/
  -    const char * yaml_qfmt;
  -/*@observer@*/
  -    const char * yaml_fini;
  -/*@observer@*/
  -    const char * Packages_init;
  -/*@observer@*/
  -    const char * Packages_qfmt;
  -/*@observer@*/
  -    const char * Packages_fini;
  -/*@observer@*/
  -    const char * Sources_init;
  -/*@observer@*/
  -    const char * Sources_qfmt;
  -/*@observer@*/
  -    const char * Sources_fini;
  -/*@relnull@*/
  -    FD_t fd;
  -#if defined(WITH_SQLITE)
  -    sqlite3 * sqldb;
  -#endif
  -/*@null@*/
  -    const char * digest;
  -/*@null@*/
  -    const char * Zdigest;
  -    time_t ctime;
  -};
  -
  -/**
  - * Repository.
  - */
  -#define	_KFB(n)	(1U << (n))
  -#define	_RFB(n)	(_KFB(n) | 0x40000000)
  -
  -/**
  - * Bit field enum for copy CLI options.
  - */
  -typedef enum rpmrepoFlags_e {
  -    REPO_FLAGS_NONE		= 0,
  -    REPO_FLAGS_DRYRUN		= _RFB( 0), /*!<    --dryrun ... */
  -    REPO_FLAGS_PRETTY		= _RFB( 1), /*!< -p,--pretty ... */
  -    REPO_FLAGS_DATABASE		= _RFB( 2), /*!< -d,--database ... */
  -    REPO_FLAGS_CHECKTS		= _RFB( 3), /*!< -C,--checkts ... */
  -    REPO_FLAGS_SPLIT		= _RFB( 4), /*!<    --split ... */
  -    REPO_FLAGS_NOFOLLOW		= _RFB( 5), /*!< -S,--skip-symlinks ... */
  -    REPO_FLAGS_UNIQUEMDFN	= _RFB( 6), /*!<    --unique-md-filenames ... */
  -
  -	/* 7-31 unused */
  -} rpmrepoFlags;
  -
  -#define REPO_ISSET(_FLAG) ((repo->flags & ((REPO_FLAGS_##_FLAG) & ~0x40000000)) != REPO_FLAGS_NONE)
  -
  -struct rpmrepo_s {
  -    rpmrepoFlags flags;
  -
  -    int quiet;
  -    int verbose;
  -/*@null@*/
  -    ARGV_t exclude_patterns;
  -/*@relnull@*/
  -    miRE excludeMire;
  -    int nexcludes;
  -/*@null@*/
  -    ARGV_t include_patterns;
  -/*@relnull@*/
  -    miRE includeMire;
  -    int nincludes;
  -/*@null@*/
  -    const char * basedir;
  -/*@null@*/
  -    const char * baseurl;
  -#ifdef	NOTYET
  -/*@null@*/
  -    const char * groupfile;
  -#endif
  -/*@relnull@*/
  -    const char * outputdir;
  -
  -/*@null@*/
  -    ARGV_t manifests;
  -
  -/*@observer@*/ /*@relnull@*/
  -    const char * tempdir;
  -/*@observer@*/ /*@relnull@*/
  -    const char * finaldir;
  -/*@observer@*/ /*@relnull@*/
  -    const char * olddir;
  -
  -    time_t mdtimestamp;
  -
  -/*@null@*/
  -    rpmts ts;
  -/*@null@*/
  -    ARGV_t pkglist;
  -    unsigned current;
  -    unsigned pkgcount;
  -
  -/*@null@*/
  -    ARGV_t directories;
  -    int ftsoptions;
  -    uint32_t pkgalgo;
  -    uint32_t algo;
  -    int compression;
  -/*@observer@*/
  -    const char * markup;
  -/*@observer@*/ /*@null@*/
  -    const char * suffix;
  -/*@observer@*/
  -    const char * wmode;
  -
  -    struct rpmrfile_s primary;
  -    struct rpmrfile_s filelists;
  -    struct rpmrfile_s other;
  -    struct rpmrfile_s repomd;
  -
  -};
  -#endif	/* DYING */
  -
  -/*@unchecked@*/ /*@observer@*/
  -static const char primary_xml_init[] =
  -"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
  -"<metadata xmlns=\"http://linux.duke.edu/metadata/common\" xmlns:rpm=\"http://linux.duke.edu/metadata/rpm\" packages=\"0\">\n";
  -/*@unchecked@*/ /*@observer@*/
  -static const char primary_xml_fini[] = "</metadata>\n";
  -
  -/*@unchecked@*/ /*@observer@*/
  -static const char filelists_xml_init[] =
  -"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
  -"<filelists xmlns=\"http://linux.duke.edu/metadata/filelists\" packages=\"0\">\n";
  -/*@unchecked@*/ /*@observer@*/
  -static const char filelists_xml_fini[] = "</filelists>\n";
  -
  -/*@unchecked@*/ /*@observer@*/
  -static const char other_xml_init[] =
  -"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
  -"<otherdata xmlns=\"http://linux.duke.edu/metadata/other\" packages=\"0\">\n";
  -/*@unchecked@*/ /*@observer@*/
  -static const char other_xml_fini[] = "</otherdata>\n";
  -
  -/*@unchecked@*/ /*@observer@*/
  -static const char repomd_xml_init[] = "\
  -<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\
  -<repomd xmlns=\"http://linux.duke.edu/metadata/repo\">\n";
  -/*@unchecked@*/ /*@observer@*/
  -static const char repomd_xml_fini[] = "</repomd>\n";
  -
  -/* XXX todo: wire up popt aliases and bury the --queryformat glop externally. */
  -/*@unchecked@*/ /*@observer@*/
  -static const char primary_xml_qfmt[] =
  -#include "yum_primary_xml"
  -;
  -
  -/*@unchecked@*/ /*@observer@*/
  -static const char filelists_xml_qfmt[] =
  -#include "yum_filelists_xml"
  -;
  -
  -/*@unchecked@*/ /*@observer@*/
  -static const char other_xml_qfmt[] =
  -#include "yum_other_xml"
  -;
  -
  -/*@unchecked@*/ /*@observer@*/
  -static const char primary_yaml_qfmt[] =
  -#include "wnh_primary_yaml"
  -;
  -
  -/*@unchecked@*/ /*@observer@*/
  -static const char filelists_yaml_qfmt[] =
  -#include "wnh_filelists_yaml"
  -;
  -
  -/*@unchecked@*/ /*@observer@*/
  -static const char other_yaml_qfmt[] =
  -#include "wnh_other_yaml"
  -;
  -
  -/*@unchecked@*/ /*@observer@*/
  -static const char Packages_qfmt[] =
  -#include "deb_Packages"
  -;
  -
  -/*@unchecked@*/ /*@observer@*/
  -static const char Sources_qfmt[] =
  -#include "deb_Sources"
  -;
  -
  -/*@-nullassign@*/
  -/*@unchecked@*/ /*@observer@*/
  -static const char *primary_sql_init[] = {
  -"PRAGMA synchronous = \"OFF\";",
  -"pragma locking_mode = \"EXCLUSIVE\";",
  -"CREATE TABLE conflicts (  pkgKey INTEGER,  name TEXT,  flags TEXT,  epoch TEXT,  version TEXT,  release TEXT );",
  -"CREATE TABLE db_info (dbversion INTEGER,  checksum TEXT);",
  -"CREATE TABLE files (  pkgKey INTEGER,  name TEXT,  type TEXT );",
  -"CREATE TABLE obsoletes (  pkgKey INTEGER,  name TEXT,  flags TEXT,  epoch TEXT,  version TEXT,  release TEXT );",
  -"CREATE TABLE packages (  pkgKey INTEGER PRIMARY KEY,  pkgId TEXT,  name TEXT,  arch TEXT,  version TEXT,  epoch TEXT,  release TEXT,  summary TEXT,  description TEXT,  url TEXT,  time_file INTEGER,  time_build INTEGER,  rpm_license TEXT,  rpm_vendor TEXT,  rpm_group TEXT,  rpm_buildhost TEXT,  rpm_sourcerpm TEXT,  rpm_header_start INTEGER,  rpm_header_end INTEGER,  rpm_packager TEXT,  size_package INTEGER,  size_installed INTEGER,  size_archive INTEGER,  location_href TEXT,  location_base TEXT,  checksum_type TEXT);",
  -"CREATE TABLE provides (  pkgKey INTEGER,  name TEXT,  flags TEXT,  epoch TEXT,  version TEXT,  release TEXT );",
  -"CREATE TABLE requires (  pkgKey INTEGER,  name TEXT,  flags TEXT,  epoch TEXT,  version TEXT,  release TEXT  );",
  -"CREATE INDEX filenames ON files (name);",
  -"CREATE INDEX packageId ON packages (pkgId);",
  -"CREATE INDEX packagename ON packages (name);",
  -"CREATE INDEX pkgconflicts on conflicts (pkgKey);",
  -"CREATE INDEX pkgobsoletes on obsoletes (pkgKey);",
  -"CREATE INDEX pkgprovides on provides (pkgKey);",
  -"CREATE INDEX pkgrequires on requires (pkgKey);",
  -"CREATE INDEX providesname ON provides (name);",
  -"CREATE INDEX requiresname ON requires (name);",
  -"CREATE TRIGGER removals AFTER DELETE ON packages\
  -\n    BEGIN\n\
  -\n    DELETE FROM files WHERE pkgKey = old.pkgKey;\
  -\n    DELETE FROM requires WHERE pkgKey = old.pkgKey;\
  -\n    DELETE FROM provides WHERE pkgKey = old.pkgKey;\
  -\n    DELETE FROM conflicts WHERE pkgKey = old.pkgKey;\
  -\n    DELETE FROM obsoletes WHERE pkgKey = old.pkgKey;\
  -\n    END;",
  -"INSERT into db_info values (9, 'direct_create');",
  -    NULL
  -};
  -/*XXX todo: DBVERSION needs to be set */
  -
  -/*@unchecked@*/ /*@observer@*/
  -static const char *filelists_sql_init[] = {
  -"PRAGMA synchronous = \"OFF\";",
  -"pragma locking_mode = \"EXCLUSIVE\";",
  -"CREATE TABLE db_info (dbversion INTEGER, checksum TEXT);",
  -"CREATE TABLE filelist (  pkgKey INTEGER,  name TEXT,  type TEXT );",
  -"CREATE TABLE packages (  pkgKey INTEGER PRIMARY KEY,  pkgId TEXT);",
  -"CREATE INDEX filelistnames ON filelist (name);",
  -"CREATE INDEX keyfile ON filelist (pkgKey);",
  -"CREATE INDEX pkgId ON packages (pkgId);",
  -"CREATE TRIGGER remove_filelist AFTER DELETE ON packages\
  -\n    BEGIN\
  -\n    DELETE FROM filelist WHERE pkgKey = old.pkgKey;\
  -\n    END;",
  -"INSERT into db_info values (9, 'direct_create');",
  -    NULL
  -};
  -/*XXX todo: DBVERSION needs to be set */
  -
  -/*@unchecked@*/ /*@observer@*/
  -static const char *other_sql_init[] = {
  -"PRAGMA synchronous = \"OFF\";",
  -"pragma locking_mode = \"EXCLUSIVE\";",
  -"CREATE TABLE changelog (  pkgKey INTEGER,  author TEXT,  date INTEGER,  changelog TEXT);",
  -"CREATE TABLE db_info (dbversion INTEGER, checksum TEXT);",
  -"CREATE TABLE packages (  pkgKey INTEGER PRIMARY KEY,  pkgId TEXT);",
  -"CREATE INDEX keychange ON changelog (pkgKey);",
  -"CREATE INDEX pkgId ON packages (pkgId);",
  -"CREATE TRIGGER remove_changelogs AFTER DELETE ON packages\
  -\n    BEGIN\
  -\n    DELETE FROM changelog WHERE pkgKey = old.pkgKey;\
  -\n    END;",
  -"INSERT into db_info values (9, 'direct_create');",
  -    NULL
  -};
  -/*XXX todo: DBVERSION needs to be set */
  -/*@=nullassign@*/
  -
  -/* packages   1 pkgKey INTEGER PRIMARY KEY */
  -/* packages   2 pkgId TEXT */
  -/* packages   3 name TEXT */
  -/* packages   4 arch TEXT */
  -/* packages   5 version TEXT */
  -/* packages   6 epoch TEXT */
  -/* packages   7 release TEXT */
  -/* packages   8 summary TEXT */
  -/* packages   9 description TEXT */
  -/* packages  10 url TEXT */
  -/* packages  11 time_file INTEGER */
  -/* packages  12 time_build INTEGER */
  -/* packages  13 rpm_license TEXT */
  -/* packages  14 rpm_vendor TEXT */
  -/* packages  15 rpm_group TEXT */
  -/* packages  16 rpm_buildhost TEXT */
  -/* packages  17 rpm_sourcerpm TEXT */
  -/* packages  18 rpm_header_start INTEGER */
  -/* packages  19 rpm_header_end INTEGER */
  -/* packages  20 rpm_packager TEXT */
  -/* packages  21 size_package INTEGER */
  -/* packages  22 size_installed INTEGER */
  -/* packages  23 size_archive INTEGER */
  -/* packages  24 location_href TEXT */
  -/* packages  25 location_base TEXT */
  -/* packages  26 checksum_type TEXT */
  -/* obsoletes  1 pkgKey INTEGER */
  -/* obsoletes  2 name TEXT */
  -/* obsoletes  3 flags TEXT */
  -/* obsoletes  4 epoch TEXT */
  -/* obsoletes  5 version TEXT */
  -/* obsoletes  6 release TEXT */
  -/* provides   1 pkgKey INTEGER */
  -/* provides   2 name TEXT */
  -/* provides   3 flags TEXT */
  -/* provides   4 epoch TEXT */
  -/* provides   5 version TEXT */
  -/* provides   6 release TEXT */
  -/* conflicts  1 pkgKey INTEGER */
  -/* conflicts  2 name TEXT */
  -/* conflicts  3 flags TEXT */
  -/* conflicts  4 epoch TEXT */
  -/* conflicts  5 version TEXT */
  -/* conflicts  6 release TEXT */
  -/* requires   1 pkgKey INTEGER */
  -/* requires   2 name TEXT */
  -/* requires   3 flags TEXT */
  -/* requires   4 epoch TEXT */
  -/* requires   5 version TEXT */
  -/* requires   6 release TEXT */
  -/* files      1 pkgKey INTEGER */
  -/* files      2 name TEXT */
  -/* files      3 type TEXT */
  -
  -/*@unchecked@*/ /*@observer@*/
  -static const char primary_sql_qfmt[] =
  -#include "yum_primary_sqlite"
  -;
  -
  -/* packages  1 pkgKey INTEGER PRIMARY KEY */
  -/* packages  2 pkgId TEXT */
  -/* filelist  1 pkgKey INTEGER */
  -/* filelist  2 name TEXT */
  -/* filelist  3 type TEXT */
  -
  -/*@unchecked@*/ /*@observer@*/
  -static const char filelists_sql_qfmt[] =
  -#include "yum_filelists_sqlite"
  -;
  -
  -/* packages  1 pkgKey INTEGER PRIMARY KEY */
  -/* packages  2 pkgId TEXT */
  -/* changelog 1 pkgKey INTEGER */
  -/* changelog 2 author TEXT */
  -/* changelog 3 date INTEGER */
  -/* changelog 4 changelog TEXT */
  -
  -/*@unchecked@*/ /*@observer@*/
  -static const char other_sql_qfmt[] =
  -#include "yum_other_sqlite"
  -;
  -
  -/*@-fullinitblock@*/
  -/*@unchecked@*/
  -static struct rpmrepo_s __rpmrepo = {
  -    .flags	= REPO_FLAGS_PRETTY,
  -
  -    .tempdir	= ".repodata",
  -    .finaldir	= "repodata",
  -    .olddir	= ".olddata",
  -    .markup	= ".xml",
  -    .pkgalgo	= PGPHASHALGO_SHA1,
  -    .algo	= PGPHASHALGO_SHA1,
  -    .primary	= {
  -	.type	= "primary",
  -	.xml_init= primary_xml_init,
  -	.xml_qfmt= primary_xml_qfmt,
  -	.xml_fini= primary_xml_fini,
  -	.sql_init= primary_sql_init,
  -	.sql_qfmt= primary_sql_qfmt,
  -#ifdef	NOTYET	/* XXX char **?!? */
  -	.sql_fini= NULL,
  -#endif
  -	.yaml_init= NULL,
  -	.yaml_qfmt= primary_yaml_qfmt,
  -	.yaml_fini= NULL,
  -	.Packages_init= NULL,
  -	.Packages_qfmt= NULL,
  -	.Packages_fini= NULL,
  -	.Sources_init= NULL,
  -	.Sources_qfmt= NULL,
  -	.Sources_fini= NULL
  -    },
  -    .filelists	= {
  -	.type	= "filelists",
  -	.xml_init= filelists_xml_init,
  -	.xml_qfmt= filelists_xml_qfmt,
  -	.xml_fini= filelists_xml_fini,
  -	.sql_init= filelists_sql_init,
  -	.sql_qfmt= filelists_sql_qfmt,
  -#ifdef	NOTYET	/* XXX char **?!? */
  -	.sql_fini= NULL,
  -#endif
  -	.yaml_init= NULL,
  -	.yaml_qfmt= filelists_yaml_qfmt,
  -	.yaml_fini= NULL,
  -	.Packages_init= NULL,
  -	.Packages_qfmt= NULL,
  -	.Packages_fini= NULL,
  -	.Sources_init= NULL,
  -	.Sources_qfmt= NULL,
  -	.Sources_fini= NULL
  -    },
  -    .other	= {
  -	.type	= "other",
  -	.xml_init= other_xml_init,
  -	.xml_qfmt= other_xml_qfmt,
  -	.xml_fini= other_xml_fini,
  -	.sql_init= other_sql_init,
  -	.sql_qfmt= other_sql_qfmt,
  -#ifdef	NOTYET	/* XXX char **?!? */
  -	.sql_fini= NULL,
  -#endif
  -	.yaml_init= NULL,
  -	.yaml_qfmt= other_yaml_qfmt,
  -	.yaml_fini= NULL,
  -	.Packages_init= NULL,
  -	.Packages_qfmt= NULL,
  -	.Packages_fini= NULL,
  -	.Sources_init= NULL,
  -	.Sources_qfmt= NULL,
  -	.Sources_fini= NULL
  -    },
  -    .repomd	= {
  -	.type	= "repomd",
  -	.xml_init= repomd_xml_init,
  -	.xml_qfmt= NULL,
  -	.xml_fini= repomd_xml_fini,
  -	.sql_init= NULL,
  -	.sql_qfmt= NULL,
  -#ifdef	NOTYET	/* XXX char **?!? */
  -	.sql_fini= NULL,
  -#endif
  -	.yaml_init= NULL,
  -	.yaml_qfmt= NULL,
  -	.yaml_fini= NULL,
  -	.Packages_init= NULL,
  -	.Packages_qfmt= Packages_qfmt,
  -	.Packages_fini= NULL,
  -	.Sources_init= NULL,
  -	.Sources_qfmt= Sources_qfmt,
  -	.Sources_fini= NULL
  -    }
  -};
  -/*@=fullinitblock@*/
  -
  -/*@unchecked@*/
  -static rpmrepo _rpmrepo = &__rpmrepo;
  +extern rpmrepo _rpmrepo;
   
   /*==============================================================*/
   /**
  @@ -1245,13 +780,9 @@
   
   	repo->current++;
   	if (h == NULL) {
  -#ifdef	DYING	/* XXX repoReadHeader() displays error. Continuing is foolish */
  -	    repo_error(0, _("\nError %s: %s\n"), pkg, strerror(errno));
  -	    continue;
  -#else
  +	/* XXX repoReadHeader() displays error. Continuing is foolish */
   	    rc = 1;
   	    break;
  -#endif
   	}
   	(void) headerSetInstance(h, (uint32_t)repo->current);
   
  @@ -1267,7 +798,7 @@
   	 || repoWriteMDFile(repo, &repo->other, h))
   	    rc = 1;
   
  -	(void)headerFree(h);
  +	(void) headerFree(h);
   	h = NULL;
   	if (rc) break;
   
  @@ -1763,27 +1294,6 @@
   	output_temp_dir = _free(output_temp_dir);
       }
   
  -#ifdef	DYING
  -  { /*@observer@*/
  -    static const char * types[] =
  -	{ "primary", "filelists", "other", "repomd", "group", NULL };
  -    const char ** typep;
  -
  -    for (typep = types; *typep != NULL; typep++) {
  -	const char * ofn = rpmGetPath(output_old_dir, "/", *typep,
  -		(repo->markup != NULL ? repo->markup : ""),
  -		(repo->suffix != NULL && strcmp(*typep, "repomd")
  -			? repo->suffix : ""), NULL);
  -	if (rpmioExists(ofn, st)) {
  -	    if (Unlink(ofn))
  -		repo_error(1, _("Could not remove old metadata file: %s: %s"),
  -			ofn, strerror(errno));
  -	}
  -	ofn = _free(ofn);
  -    }
  -  }
  -#endif
  -
       /* Merge old tree into new, unlink/rename as needed. */
     { 
       char *const _av[] = { output_old_dir, NULL };
  @@ -1850,33 +1360,6 @@
   
   /*==============================================================*/
   
  -/**
  - */
  -static void repoArgCallback(poptContext con,
  -                /*@unused@*/ enum poptCallbackReason reason,
  -                const struct poptOption * opt, /*@unused@*/ const char * arg,
  -                /*@unused@*/ void * data)
  -        /*@globals _rpmrepo, fileSystem, internalState @*/
  -        /*@modifies _rpmrepo, fileSystem, internalState @*/
  -{
  -    rpmrepo repo = _rpmrepo;
  -
  -    /* XXX avoid accidental collisions with POPT_BIT_SET for flags */
  -    if (opt->arg == NULL)
  -    switch (opt->val) {
  -
  -    case 'v':			/* --verbose */
  -	repo->verbose++;
  -	break;
  -    case '?':
  -    default:
  -	fprintf(stderr, _("%s: Unknown option -%c\n"), __progname, opt->val);
  -	poptPrintUsage(con, stderr, 0);
  -	exit(EXIT_FAILURE);
  -	/*@notreached@*/ break;
  -    }
  -}
  -
   /*@unchecked@*/
   static int compression = -1;
   
  @@ -1892,62 +1375,18 @@
   	N_("use lzma compression"), NULL },
    { "xz", '\0', POPT_ARG_VAL,			&compression, 4,
   	N_("use xz compression"), NULL },
  -    POPT_TABLEEND
  +  POPT_TABLEEND
   };
   
   /*@unchecked@*/ /*@observer@*/
  -static struct poptOption optionsTable[] = {
  -/*@-type@*/ /* FIX: cast? */
  - { NULL, '\0', POPT_ARG_CALLBACK | POPT_CBFLAG_INC_DATA | POPT_CBFLAG_CONTINUE,
  -        repoArgCallback, 0, NULL, NULL },
  -/*@=type@*/
  -
  - { "repodebug", '\0', POPT_ARG_VAL|POPT_ARGFLAG_DOC_HIDDEN, &_rpmrepo_debug, -1,
  -	N_("debug repo handling"), NULL },
  -
  - { "quiet", 'q', POPT_ARG_VAL,			&__rpmrepo.quiet, 0,
  -	N_("output nothing except for serious errors"), NULL },
  - { "verbose", 'v', 0,				NULL, (int)'v',
  -	N_("output more debugging info."), NULL },
  - { "dryrun", '\0', POPT_BIT_SET,	&__rpmrepo.flags, REPO_FLAGS_DRYRUN,
  -	N_("sanity check arguments, don't create metadata"), NULL },
  - { "excludes", 'x', POPT_ARG_ARGV,		&__rpmrepo.exclude_patterns, 0,
  -	N_("glob PATTERN(s) to exclude"), N_("PATTERN") },
  - { "includes", 'i', POPT_ARG_ARGV,		&__rpmrepo.include_patterns, 0,
  -	N_("glob PATTERN(s) to include"), N_("PATTERN") },
  - { "basedir", '\0', POPT_ARG_STRING|POPT_ARGFLAG_DOC_HIDDEN,	&__rpmrepo.basedir, 0,
  -	N_("top level directory"), N_("DIR") },
  - { "baseurl", 'u', POPT_ARG_STRING|POPT_ARGFLAG_DOC_HIDDEN,	&__rpmrepo.baseurl, 0,
  -	N_("baseurl to append on all files"), N_("BASEURL") },
  -#ifdef	NOTYET
  - { "groupfile", 'g', POPT_ARG_STRING|POPT_ARGFLAG_DOC_HIDDEN,	&__rpmrepo.groupfile, 0,
  -	N_("path to groupfile to include in metadata"), N_("FILE") },
  -#endif
  - { "pretty", 'p', POPT_BIT_SET|POPT_ARGFLAG_DOC_HIDDEN,		&__rpmrepo.flags, REPO_FLAGS_PRETTY,
  -	N_("make sure all xml generated is formatted"), NULL },
  - { "checkts", 'C', POPT_BIT_SET|POPT_ARGFLAG_DOC_HIDDEN,	&__rpmrepo.flags, REPO_FLAGS_CHECKTS,
  -	N_("check timestamps on files vs the metadata to see if we need to update"), NULL },
  - { "database", 'd', POPT_BIT_SET,		&__rpmrepo.flags, REPO_FLAGS_DATABASE,
  -	N_("create sqlite3 database files"), NULL },
  - { "split", '\0', POPT_BIT_SET|POPT_ARGFLAG_DOC_HIDDEN,		&__rpmrepo.flags, REPO_FLAGS_SPLIT,
  -	N_("generate split media"), NULL },
  - { "pkglist", 'l', POPT_ARG_ARGV|POPT_ARGFLAG_DOC_HIDDEN,	&__rpmrepo.manifests, 0,
  -	N_("use only the files listed in this file from the directory specified"), N_("FILE") },
  - { "outputdir", 'o', POPT_ARG_STRING,		&__rpmrepo.outputdir, 0,
  -	N_("<dir> = optional directory to output to"), N_("DIR") },
  - { "skip-symlinks", 'S', POPT_BIT_SET,		&__rpmrepo.flags, REPO_FLAGS_NOFOLLOW,
  -	N_("ignore symlinks of packages"), NULL },
  - { "unique-md-filenames", '\0', POPT_BIT_SET|POPT_ARGFLAG_DOC_HIDDEN, &__rpmrepo.flags, REPO_FLAGS_UNIQUEMDFN,
  -	N_("include the file's checksum in the filename, helps with proxies"), NULL },
  +static struct poptOption rpmrepoOptionsTable[] = {
  +
  + { NULL, '\0', POPT_ARG_INCLUDE_TABLE, _rpmrepoOptions, 0,
  +	N_("Repository options:"), NULL },
   
    { NULL, '\0', POPT_ARG_INCLUDE_TABLE, rpmioFtsPoptTable, 0,
   	N_("Fts(3) traversal options:"), NULL },
   
  -#ifdef	NOTYET
  - { "version", '\0', 0, NULL, POPT_SHOWVERSION,
  -	N_("print the version"), NULL },
  -#endif
  -
    { NULL, '\0', POPT_ARG_INCLUDE_TABLE, repoCompressionPoptTable, 0,
   	N_("Available compressions:"), NULL },
   
  @@ -1961,7 +1400,6 @@
     POPT_AUTOALIAS
     POPT_AUTOHELP
     POPT_TABLEEND
  -
   };
   
   int
  @@ -1985,7 +1423,13 @@
   #endif
   
       /* Process options. */
  -    optCon = rpmioInit(argc, argv, optionsTable);
  +    optCon = rpmioInit(argc, argv, rpmrepoOptionsTable);
  +
  +    /* XXX Impedanace match against poptIO common code. */
  +    if (rpmIsVerbose())
  +	repo->verbose++;
  +    if (rpmIsDebug())
  +	repo->verbose++;
   
       repo->ftsoptions = (rpmioFtsOpts ? rpmioFtsOpts : FTS_PHYSICAL);
       switch (repo->ftsoptions & (FTS_LOGICAL|FTS_PHYSICAL)) {
  @@ .
Received on Tue Aug 31 18:34:02 2010
Driven by Jeff Johnson and the RPM project team.
Hosted by OpenPKG and Ralf S. Engelschall.
Powered by FreeBSD and OpenPKG.