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