RPM Community Forums

Mailing List Message of <rpm-cvs>

[CVS] RPM: rpm/ CHANGES configure.ac devtool.conf rpm/rpmdb/ Makefile....

From: Ralf S. Engelschall <rse@rpm5.org>
Date: Thu 26 Jul 2007 - 09:39:26 CEST
Message-Id: <20070726073926.8CCAB3484F5@rpm5.org>
  RPM Package Manager, CVS Repository
  http://rpm5.org/cvs/
  ____________________________________________________________________________

  Server: rpm5.org                         Name:   Ralf S. Engelschall
  Root:   /v/rpm/cvs                       Email:  rse@rpm5.org
  Module: rpm                              Date:   26-Jul-2007 09:39:26
  Branch: HEAD                             Handle: 2007072608392501

  Added files:
    rpm/tools               db_tool.c
  Modified files:
    rpm                     CHANGES configure.ac devtool.conf
    rpm/rpmdb               Makefile.am
    rpm/tools               .cvsignore Makefile.am

  Log:
    With Autoconf options --with-db-tools-integrated one can now enable the
    building (and installation via symlinks) a "db_tool" which integrates
    all "db_xxx" Berkeley-DB tools into a single program to reduce
    installation bloat (libdb linked statically into all "db_xxx" tools).

  Summary:
    Revision    Changes     Path
    1.1524      +1  -0      rpm/CHANGES
    2.223       +2  -0      rpm/configure.ac
    2.79        +1  -0      rpm/devtool.conf
    1.75        +0  -12     rpm/rpmdb/Makefile.am
    1.21        +1  -0      rpm/tools/.cvsignore
    2.94        +70 -0      rpm/tools/Makefile.am
    2.1         +247 -0     rpm/tools/db_tool.c
  ____________________________________________________________________________

  patch -p0 <<'@@ .'
  Index: rpm/CHANGES
  ============================================================================
  $ cvs diff -u -r1.1523 -r1.1524 CHANGES
  --- rpm/CHANGES	26 Jul 2007 00:58:56 -0000	1.1523
  +++ rpm/CHANGES	26 Jul 2007 07:39:25 -0000	1.1524
  @@ -1,4 +1,5 @@
   4.5 -> 5.0:
  +    - rse: with --with-db-tools-integrated one can now build (and install) a db_tool which integrates all db_xxx BDB tools
       - jbj: add RPMTAG_DBINSTANCE header extension.
       - jbj: rip deep ia64 emulated triarch multilib hacks. worth millions to vendor, not me.
       - jbj: rip Depends index and dependency result caching.
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/configure.ac
  ============================================================================
  $ cvs diff -u -r2.222 -r2.223 configure.ac
  --- rpm/configure.ac	25 Jul 2007 17:09:43 -0000	2.222
  +++ rpm/configure.ac	26 Jul 2007 07:39:25 -0000	2.223
  @@ -899,7 +899,9 @@
   AC_ARG_WITH(db-largefile, AS_HELP_STRING([--with-db-largefile], [build Berkeley-DB with LARGEFILE support]))
   AC_ARG_WITH(db-mutex,     AS_HELP_STRING([--with-db-mutex=ARG], [build Berkeley-DB with MUTEX type ARG]))
   AC_ARG_WITH(db-rpc,       AS_HELP_STRING([--with-db-rpc],       [build Berkeley-DB with RPC support]))
  +AC_ARG_WITH(db-tools-integrated, AS_HELP_STRING([--with-db-tools-integrated], [install integrated Berkeley-DB tools]))
   AM_CONDITIONAL(WITH_DB_RPC, test ".$with_db_rpc" = .yes)
  +AM_CONDITIONAL(WITH_DB_TOOLS_INTEGRATED, test ".$with_db_tools_integrated" = .yes)
   
   dnl # determine default RPM DB API and configuration
   DBAPI=0
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/devtool.conf
  ============================================================================
  $ cvs diff -u -r2.78 -r2.79 devtool.conf
  --- rpm/devtool.conf	25 Jul 2007 15:05:50 -0000	2.78
  +++ rpm/devtool.conf	26 Jul 2007 07:39:25 -0000	2.79
  @@ -67,6 +67,7 @@
           --verbose \
           --prefix=/usr \
           --with-db=internal \
  +        --with-db-tools-integrated \
           --with-zlib=internal \
           --with-file=internal \
           --with-lua=internal \
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmdb/Makefile.am
  ============================================================================
  $ cvs diff -u -r1.74 -r1.75 Makefile.am
  --- rpm/rpmdb/Makefile.am	23 Jul 2007 15:03:43 -0000	1.74
  +++ rpm/rpmdb/Makefile.am	26 Jul 2007 07:39:26 -0000	1.75
  @@ -97,22 +97,10 @@
   else
   my_DB_HEADER = $(srcdir)/db_emu.h
   endif
  -my_DB_TOOLS =
  -if WITH_DB_INTERNAL
  -my_DB_TOOLS += db_archive db_checkpoint db_deadlock db_dump db_hotbackup db_load db_printlog db_recover db_stat db_upgrade db_verify 
  -if WITH_DB_RPC
  -my_DB_TOOLS += db_svc
  -endif
  -endif
   
   install-data-local:
   	$(mkinstalldirs) $(DESTDIR)$(pkgincdir)
   	$(pkgincHEADERS_INSTALL) $(my_DB_HEADER) $(DESTDIR)$(pkgincdir)/db.h
  -	for tool in . $(my_DB_TOOLS); do \
  -		test ".$$tool" = .. && continue; \
  -		$(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(pkglibPROGRAMS_INSTALL) \
  -			$(top_builddir)/$(WITH_DB_SUBDIR)/$$tool $(DESTDIR)$(pkglibdir)/$$tool; \
  -	done
   
   clean-local:
   	rm -f *.o
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/tools/.cvsignore
  ============================================================================
  $ cvs diff -u -r1.20 -r1.21 .cvsignore
  --- rpm/tools/.cvsignore	30 May 2007 02:49:41 -0000	1.20
  +++ rpm/tools/.cvsignore	26 Jul 2007 07:39:26 -0000	1.21
  @@ -6,3 +6,4 @@
   convertdb1
   debugedit
   rpmdeps
  +db_tool
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/tools/Makefile.am
  ============================================================================
  $ cvs diff -u -r2.93 -r2.94 Makefile.am
  --- rpm/tools/Makefile.am	16 Jul 2007 08:49:05 -0000	2.93
  +++ rpm/tools/Makefile.am	26 Jul 2007 07:39:26 -0000	2.94
  @@ -33,3 +33,73 @@
   rpmdeps_SOURCES =	rpmdeps.c
   rpmdeps_LDADD =		$(myLDADD)
   
  +##
  +##  provide Berkeley-DB tools
  +##
  +
  +if WITH_DB_INTERNAL
  +if WITH_DB_TOOLS_INTEGRATED
  +pkglib_PROGRAMS += db_tool
  +db_tool_SOURCES = db_tool.c
  +db_tool_CPPFLAGS = \
  +	-I$(top_builddir)/db3 \
  +	-I$(top_builddir)/db
  +if WITH_DB_RPC
  +db_tool_CPPFLAGS += \
  +    -DWITH_DB_RPC
  +endif
  +db_tool_LDFLAGS =
  +#   for all db_xxx
  +db_tool_LDADD = \
  +    $(top_builddir)/db3/util_cache.lo \
  +    $(top_builddir)/db3/util_log.lo \
  +	$(top_builddir)/db3/util_sig.lo
  +#   for db_printlog
  +db_tool_LDADD += \
  +	$(top_builddir)/db3/btree_autop.lo \
  +	$(top_builddir)/db3/crdel_autop.lo \
  +	$(top_builddir)/db3/db_autop.lo \
  +	$(top_builddir)/db3/dbreg_autop.lo \
  +	$(top_builddir)/db3/fileops_autop.lo \
  +	$(top_builddir)/db3/hash_autop.lo \
  +	$(top_builddir)/db3/qam_autop.lo \
  +	$(top_builddir)/db3/rep_autop.lo \
  +	$(top_builddir)/db3/txn_autop.lo
  +if WITH_DB_RPC
  +#   for db_svc
  +db_tool_LDADD += \
  +	$(top_builddir)/db3/db_server_proc.lo \
  +	$(top_builddir)/db3/db_server_svc.lo \
  +	$(top_builddir)/db3/gen_db_server.lo
  +endif
  +db_tool_LDADD += \
  +	$(top_builddir)/db3/libdb-4.5.la
  +endif
  +endif
  +
  +if WITH_DB_INTERNAL
  +my_DB_TOOLS = db_stat db_load db_dump db_archive db_checkpoint db_deadlock db_recover db_upgrade db_verify db_hotbackup db_printlog
  +if WITH_DB_RPC
  +my_DB_TOOLS += db_svc
  +endif
  +endif
  +
  +install-data-local:
  +if WITH_DB_INTERNAL
  +if WITH_DB_TOOLS_INTEGRATED
  +	$(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(pkglibPROGRAMS_INSTALL) \
  +		$(builddir)/db_tool $(DESTDIR)$(pkglibdir)/db_tool
  +	for tool in . $(my_DB_TOOLS); do \
  +		test ".$$tool" = .. && continue; \
  +		rm -f $(DESTDIR)$(pkglibdir)/$$tool; \
  +		ln $(DESTDIR)$(pkglibdir)/db_tool $(DESTDIR)$(pkglibdir)/$$tool; \
  +	done
  +else
  +	for tool in . $(my_DB_TOOLS); do \
  +		test ".$$tool" = .. && continue; \
  +		$(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(pkglibPROGRAMS_INSTALL) \
  +		$(top_builddir)/$(WITH_DB_SUBDIR)/$$tool $(DESTDIR)$(pkglibdir)/$$tool; \
  +	done
  +endif
  +endif
  +
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/tools/db_tool.c
  ============================================================================
  $ cvs diff -u -r0 -r2.1 db_tool.c
  --- /dev/null	2007-07-26 09:33:00 +0200
  +++ db_tool.c	2007-07-26 09:39:26 +0200
  @@ -0,0 +1,247 @@
  +/*
  +**  db_tool.c -- integrated Berkeley-DB tools to reduce bloat on installation files
  +*/
  +
  +#include <stdio.h>
  +#include <string.h>
  +
  +/* integrate db_stat */
  +#define main          db_stat_main
  +#define db_init       db_stat_db_init
  +#define copyright     db_stat_copyright
  +#define usage         db_stat_usage
  +#define version_check db_stat_version_check
  +int db_stat_main(int argc, char *argv[]);
  +#include "db_stat/db_stat.c"
  +#undef  main
  +#undef  copyright
  +#undef  db_init
  +#undef  usage
  +#undef  version_check
  +
  +/* integrate db_load */
  +#define main          db_load_main
  +#define db_init       db_load_db_init
  +#define copyright     db_load_copyright
  +#define usage         db_load_usage
  +#define version_check db_load_version_check
  +int db_load_main(int argc, char *argv[]);
  +#include "db_load/db_load.c"
  +#undef  main
  +#undef  copyright
  +#undef  db_init
  +#undef  usage
  +#undef  version_check
  +
  +/* integrate db_dump */
  +#define main          db_dump_main
  +#define db_init       db_dump_db_init
  +#define copyright     db_dump_copyright
  +#define usage         db_dump_usage
  +#define version_check db_dump_version_check
  +int db_dump_main(int argc, char *argv[]);
  +#include "db_dump/db_dump.c"
  +#undef  main
  +#undef  copyright
  +#undef  db_init
  +#undef  usage
  +#undef  version_check
  +
  +/* integrate db_archive */
  +#define main          db_archive_main
  +#define db_init       db_archive_db_init
  +#define copyright     db_archive_copyright
  +#define usage         db_archive_usage
  +#define version_check db_archive_version_check
  +int db_archive_main(int argc, char *argv[]);
  +#include "db_archive/db_archive.c"
  +#undef  main
  +#undef  copyright
  +#undef  db_init
  +#undef  usage
  +#undef  version_check
  +
  +/* integrate db_checkpoint */
  +#define main          db_checkpoint_main
  +#define db_init       db_checkpoint_db_init
  +#define copyright     db_checkpoint_copyright
  +#define usage         db_checkpoint_usage
  +#define version_check db_checkpoint_version_check
  +int db_checkpoint_main(int argc, char *argv[]);
  +#include "db_checkpoint/db_checkpoint.c"
  +#undef  main
  +#undef  copyright
  +#undef  db_init
  +#undef  usage
  +#undef  version_check
  +
  +/* integrate db_deadlock */
  +#define main          db_deadlock_main
  +#define db_init       db_deadlock_db_init
  +#define copyright     db_deadlock_copyright
  +#define usage         db_deadlock_usage
  +#define version_check db_deadlock_version_check
  +int db_deadlock_main(int argc, char *argv[]);
  +#include "db_deadlock/db_deadlock.c"
  +#undef  main
  +#undef  copyright
  +#undef  db_init
  +#undef  usage
  +#undef  version_check
  +
  +/* integrate db_recover */
  +#define main          db_recover_main
  +#define db_init       db_recover_db_init
  +#define copyright     db_recover_copyright
  +#define usage         db_recover_usage
  +#define version_check db_recover_version_check
  +int db_recover_main(int argc, char *argv[]);
  +#include "db_recover/db_recover.c"
  +#undef  main
  +#undef  copyright
  +#undef  db_init
  +#undef  usage
  +#undef  version_check
  +
  +/* integrate db_upgrade */
  +#define main          db_upgrade_main
  +#define db_init       db_upgrade_db_init
  +#define copyright     db_upgrade_copyright
  +#define usage         db_upgrade_usage
  +#define version_check db_upgrade_version_check
  +int db_upgrade_main(int argc, char *argv[]);
  +#include "db_upgrade/db_upgrade.c"
  +#undef  main
  +#undef  copyright
  +#undef  db_init
  +#undef  usage
  +#undef  version_check
  +
  +/* integrate db_verify */
  +#define main          db_verify_main
  +#define db_init       db_verify_db_init
  +#define copyright     db_verify_copyright
  +#define usage         db_verify_usage
  +#define version_check db_verify_version_check
  +int db_verify_main(int argc, char *argv[]);
  +#include "db_verify/db_verify.c"
  +#undef  main
  +#undef  copyright
  +#undef  db_init
  +#undef  usage
  +#undef  version_check
  +
  +/* integrate db_hotbackup */
  +#define main          db_hotbackup_main
  +#define db_init       db_hotbackup_db_init
  +#define copyright     db_hotbackup_copyright
  +#define usage         db_hotbackup_usage
  +#define version_check db_hotbackup_version_check
  +int db_hotbackup_main(int argc, char *argv[]);
  +#include "db_hotbackup/db_hotbackup.c"
  +#undef  main
  +#undef  copyright
  +#undef  db_init
  +#undef  usage
  +#undef  version_check
  +
  +/* integrate db_printlog */
  +#define main          db_printlog_main
  +#define db_init       db_printlog_db_init
  +#define copyright     db_printlog_copyright
  +#define usage         db_printlog_usage
  +#define version_check db_printlog_version_check
  +int db_printlog_main(int argc, char *argv[]);
  +#include "db_printlog/db_printlog.c"
  +#undef  main
  +#undef  copyright
  +#undef  db_init
  +#undef  usage
  +#undef  version_check
  +
  +/* integrate db_svc */
  +#ifdef WITH_DB_RPC
  +#define main          db_svc_main
  +#define db_init       db_svc_db_init
  +#define copyright     db_svc_copyright
  +#define usage         db_svc_usage
  +#define version_check db_svc_version_check
  +int db_svc_main(int argc, char *argv[]);
  +#include "rpc_server/c/db_server_util.c"
  +#undef  main
  +#undef  copyright
  +#undef  db_init
  +#undef  usage
  +#undef  version_check
  +#endif
  +
  +/* tool dispatch table */
  +static struct {
  +    char *name;
  +    int (*main)(int, char *[]);
  +} main_dispatch[] = {
  +#ifdef WITH_DB_RPC
  +    { "db_svc",        db_svc_main        },
  +#endif
  +    { "db_stat",       db_stat_main       },
  +    { "db_load",       db_load_main       },
  +    { "db_dump",       db_dump_main       },
  +    { "db_archive",    db_archive_main    },
  +    { "db_checkpoint", db_checkpoint_main },
  +    { "db_deadlock",   db_deadlock_main   },
  +    { "db_recover",    db_recover_main    },
  +    { "db_upgrade",    db_upgrade_main    },
  +    { "db_verify",     db_verify_main     },
  +    { "db_hotbackup",  db_hotbackup_main  },
  +    { "db_printlog",   db_printlog_main   }
  +};
  +
  +/* dispatch tools */
  +int main(int argc, char *argv[])
  +{
  +    int i;
  +    char *arg;
  +    int l;
  +    int k;
  +
  +    /* 1. try to dispatch over program name ("db_load [...]") */
  +    arg = argv[0];
  +    l = strlen(arg);
  +    for (i = 0; i < sizeof(main_dispatch)/sizeof(main_dispatch[0]); i++) {
  +        k = strlen(main_dispatch[i].name);
  +        if (   strcmp(arg, main_dispatch[i].name) == 0
  +            || (l > k && arg[l-k-1] == '/' && strcmp(arg+l-k, main_dispatch[i].name) == 0)) {
  +            argv[0] = main_dispatch[i].name;
  +            return (*(main_dispatch[i].main))(argc, argv);
  +        }
  +    }
  +
  +    /* 2. try to dispatch over sub-command name ("db_tool [db_]load [...]") */
  +    if (argc >= 2) {
  +        arg = argv[1];
  +        l = strlen(arg);
  +        for (i = 0; i < sizeof(main_dispatch)/sizeof(main_dispatch[0]); i++) {
  +            k = strlen(main_dispatch[i].name);
  +            if (   strcmp(argv[1], main_dispatch[i].name) == 0
  +                || (l == k-3 && strcmp(arg, main_dispatch[i].name+3) == 0)) {
  +                argv[0] = main_dispatch[i].name;
  +                for (i = 3; i <= argc; i++)
  +                    argv[i-2] = argv[i-1];
  +                argc--;
  +                return (*(main_dispatch[i].main))(argc, argv);
  +            }
  +        }
  +    }
  +
  +    /* 3. fail to dispatch */
  +    fprintf(stderr, "db_tool:ERROR: unable to determine command name\n");
  +    fprintf(stderr, "db_tool:USAGE: db_<command> <options>\n");
  +    fprintf(stderr, "db_tool:USAGE: db_tool db_<command> <options>\n");
  +    fprintf(stderr, "db_tool:USAGE: db_tool <command> <options>\n");
  +    fprintf(stderr, "db_tool:HINT: <command> is one of:");
  +    for (i = 0; i < sizeof(main_dispatch)/sizeof(main_dispatch[0]); i++)
  +        fprintf(stderr, " %s", main_dispatch[i].name+3);
  +    fprintf(stderr, "\n");
  +    return 1;
  +}
  +
  @@ .
Received on Thu Jul 26 09:39:26 2007
Driven by Jeff Johnson and the RPM project team.
Hosted by OpenPKG and Ralf S. Engelschall.
Powered by FreeBSD and OpenPKG.