diff options
author | Colin Watson <cjwatson@debian.org> | 2010-03-26 00:17:32 +0000 |
---|---|---|
committer | Colin Watson <cjwatson@debian.org> | 2010-03-26 00:17:32 +0000 |
commit | 4c64fd44d547f7bb1889f7bfbde958e09f1e89d6 (patch) | |
tree | 4015eacc96e8c762a3a6e0ea5f0aacde82ac69c3 | |
parent | 15bf47572c6b9b4fb095cb18ff0a01a1cb29db98 (diff) |
Convert to source format 3.0 (quilt) and DEP-3 patch tagging.
-rw-r--r-- | .gitignore | 1 | ||||
-rw-r--r-- | debian/changelog | 6 | ||||
-rw-r--r-- | debian/patches/build-outside-glibc.patch | 105 | ||||
-rw-r--r-- | debian/patches/db_dump185.patch | 1353 | ||||
-rw-r--r-- | debian/patches/libc-symbols.patch | 101 | ||||
-rw-r--r-- | debian/patches/pmt-compat.patch | 21 | ||||
-rw-r--r-- | debian/patches/series | 5 | ||||
-rw-r--r-- | debian/patches/weak-alias.patch | 22 | ||||
-rw-r--r-- | debian/source/format | 1 |
9 files changed, 1615 insertions, 0 deletions
@@ -15,5 +15,6 @@ .*.swp .DS_store # The contents of the svn:ignoreproperty on the branch root. +.pc *.os libdb1.so.* diff --git a/debian/changelog b/debian/changelog index 5509184..efd2f5f 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,9 @@ +db1-compat (2.1.3-13) UNRELEASED; urgency=low + + * Convert to source format 3.0 (quilt) and DEP-3 patch tagging. + + -- Colin Watson <cjwatson@debian.org> Fri, 26 Mar 2010 00:15:07 +0000 + db1-compat (2.1.3-12) unstable; urgency=low * Link with -z combreloc, not -z -combreloc (closes: #557075). diff --git a/debian/patches/build-outside-glibc.patch b/debian/patches/build-outside-glibc.patch new file mode 100644 index 0000000..7df7f12 --- /dev/null +++ b/debian/patches/build-outside-glibc.patch @@ -0,0 +1,105 @@ +Description: Modify build system to work outside glibc +Author: Colin Watson <cjwatson@debian.org> +Forwarded: no +Last-Update: 2010-03-26 + +Index: b/Makefile +=================================================================== +--- a/Makefile ++++ b/Makefile +@@ -20,54 +20,24 @@ + rec_close rec_delete rec_get rec_open rec_put rec_search \ + rec_seq rec_utils + +-db1-headers := db.h mpool.h ndbm.h +-distribute := compat.h \ +- btree/btree.h btree/extern.h \ +- hash/extern.h hash/hash.h hash/page.h \ +- recno/extern.h recno/recno.h \ +- $(db1-headers) +- +-include ../Makeconfig +- +-install-others := $(db1-headers:%=$(inst_includedir)/db1/%) +- +-ifeq (yes,$(build-shared)) +-install-others += $(inst_slibdir)/libdb.so$(libdb1.so-version) +-endif +- +-$(inst_slibdir)/libdb.so$(libdb1.so-version): $(inst_slibdir)/libdb1-$(version).so $(+force) +- rm -f $@ +- $(LN_S) $(<F) $@ +- +-$(db1-headers:%=$(inst_includedir)/db1/%): $(inst_includedir)/db1/%: % $(+force) +- $(do-install) +- +-include ../Rules +- +-CPPFLAGS += -D__DBINTERFACE_PRIVATE -DUSE_LIBDB1 +- +-# This file defines some static functions for alternative hash algorithms +-# that are not actually used. +-CFLAGS-hash_func.c := -Wno-unused +- +-# The db code outsmarts the compiler frequently. +-override CFLAGS += -Wno-uninitialized +- +-# Force the soname to be libdb.so for compatibility. +-LDFLAGS-db1.so = -Wl,-soname=lib$(libprefix)db.so$($(@F)-version) +- +-# Depend on libc.so so a DT_NEEDED is generated in the shared objects. +-# This ensures they will load libc.so for needed symbols if loaded by +-# a statically-linked program that hasn't already loaded it. +-$(objpfx)libdb1.so: $(objpfx)libdb1_pic.a $(+preinit) $(+postinit) $(+interp) \ +- $(common-objpfx)libc.so +- +-#subdir_install: $(inst_libdir)/libndbm.a +-#$(inst_libdir)/libndbm.a: $(inst_libdir)/libdb1.a $(+force) +-# $(make-link) +-# +-#ifeq ($(build-shared),yes) +-#subdir_install: $(inst_libdir)/libndbm.so +-#$(inst_libdir)/libndbm.so: $(inst_libdir)/libdb1.so $(+force) +-# $(make-link) +-#endif ++CFLAGS ?= -O2 ++CPPFLAGS += -I. -D_REENTRANT -D__DBINTERFACE_PRIVATE -DUSE_LIBDB1 ++CPPFLAGS += -D_GNU_SOURCE ++libdb.so-version=.2 ++ ++all: libdb1.so$(libdb.so-version) ++ ++%.o: %.c ++ $(CC) $(CPPFLAGS) $(CFLAGS) -c -g -o $@ $< ++%.os: %.c ++ $(CC) $(CPPFLAGS) $(CFLAGS) -c -fPIC -o $@ $< ++ ++libdb1.so$(libdb.so-version): $(patsubst %,%.os,$(libdb1-routines)) ++ $(CC) -Wl,-O1 -Wl,--version-script=Versions -Wl,-z,combreloc \ ++ -Wl,-soname=libdb.so$(libdb.so-version) \ ++ -shared -o $@ $^ /usr/lib/libc.so ++ ++clean: ++ rm -f $(patsubst %,%.o,$(libdb1-routines)) ++ rm -f $(patsubst %,%.os,$(libdb1-routines)) ++ rm -f libdb1.so$(libdb.so-version) *~ +Index: b/Versions +=================================================================== +--- a/Versions ++++ b/Versions +@@ -1,10 +1,11 @@ +-libdb1 { +- GLIBC_2.0 { ++GLIBC_2.0 { ++ global: + # the real DB entry point. + dbopen; __dbopen; + + # The compatibility functions. + dbm_clearerr; dbm_close; dbm_delete; dbm_dirfno; dbm_error; + dbm_fetch; dbm_firstkey; dbm_nextkey; dbm_open; dbm_store; +- } +-} ++ local: ++ *; ++}; diff --git a/debian/patches/db_dump185.patch b/debian/patches/db_dump185.patch new file mode 100644 index 0000000..a2249ba --- /dev/null +++ b/debian/patches/db_dump185.patch @@ -0,0 +1,1353 @@ +Description: Add db_dump185 utility + This provides dump compatibility with legacy database files. +Author: Julian Gilbey <jdg@debian.org> +Bug-Debian: http://bugs.debian.org/353637 +Forwarded: no +Last-Update: 2010-03-26 + +Index: b/Makefile +=================================================================== +--- a/Makefile ++++ b/Makefile +@@ -25,7 +25,7 @@ + CPPFLAGS += -D_GNU_SOURCE + libdb.so-version=.2 + +-all: libdb1.so$(libdb.so-version) ++all: libdb1.so$(libdb.so-version) db_dump185/db_dump185 + + %.o: %.c + $(CC) $(CPPFLAGS) $(CFLAGS) -c -g -o $@ $< +@@ -37,7 +37,11 @@ + -Wl,-soname=libdb.so$(libdb.so-version) \ + -shared -o $@ $^ /usr/lib/libc.so + ++db_dump185/db_dump185: db_dump185/db_dump185.c libdb1.so$(libdb.so-version) ++ $(CC) -I. -o $@ $< libdb1.so$(libdb.so-version) ++ + clean: + rm -f $(patsubst %,%.o,$(libdb1-routines)) + rm -f $(patsubst %,%.os,$(libdb1-routines)) + rm -f libdb1.so$(libdb.so-version) *~ ++ rm -f db_dump185/db_dump185 +Index: b/db_dump185/db_dump185.1 +=================================================================== +--- /dev/null ++++ b/db_dump185/db_dump185.1 +@@ -0,0 +1,956 @@ ++.ds TYPE C ++.\" ++.\" See the file LICENSE for redistribution information. ++.\" ++.\" Copyright (c) 1996, 1997, 1998 ++.\" Sleepycat Software. All rights reserved. ++.\" ++.\" @(#)db_dump.so 10.10 (Sleepycat) 4/10/98 ++.\" ++.\" ++.\" See the file LICENSE for redistribution information. ++.\" ++.\" Copyright (c) 1997, 1998 ++.\" Sleepycat Software. All rights reserved. ++.\" ++.\" @(#)macros.so 10.45 (Sleepycat) 5/4/98 ++.\" ++.\" This manpage was originally for db_dump from a later version of ++.\" the DB, so many of these initial macros are now defunct. (jdg, 2/06) ++.\" ++.\" We don't want hyphenation for any HTML documents. ++.if !d HTML .ds HTML ++.ie '\*[HTML]'YES'\{\ ++.de Hy ++.. ++.de Nh ++.. ++.nh ++\} ++.el\{\ ++.de Hy ++.hy ++.. ++.de Nh ++.nh ++.. ++\} ++.\" The alternative text macro ++.\" This macro takes two arguments: ++.\" + the text produced if this is a "C" manpage ++.\" + the text produced if this is a "CXX" or "JAVA" manpage ++.\" ++.de Al ++.ie '\*[TYPE]'C'\{\\$1 ++\} ++.el\{\\$2 ++\} ++.. ++.\" Scoped name macro. ++.\" Produces a_b, a::b, a.b depending on language ++.\" This macro takes two arguments: ++.\" + the class or prefix (without underscore) ++.\" + the name within the class or following the prefix ++.de Sc ++.ie '\*[TYPE]'C'\{\\$1_\\$2 ++\} ++.el\{\ ++.ie '\*[TYPE]'CXX'\{\\$1::\\$2 ++\} ++.el\{\\$1.\\$2 ++\} ++\} ++.. ++.\" Scoped name for Java. ++.\" Produces Db.b, for Java, otherwise just b. This macro is used for ++.\" constants that must be scoped in Java, but are global otherwise. ++.\" This macro takes two arguments: ++.\" + the class ++.\" + the name within the class or following the prefix ++.de Sj ++.ie '\*[TYPE]'JAVA'\{\ ++.TP 5 ++Db.\\$1\} ++.el\{\ ++.TP 5 ++\\$1\} ++.. ++.\" The general information text macro. ++.de Gn ++.ie '\*[TYPE]'C'\{The DB library is a family of groups of functions that provides a modular ++programming interface to transactions and record-oriented file access. ++The library includes support for transactions, locking, logging and file ++page caching, as well as various indexed access methods. ++Many of the functional groups (e.g., the file page caching functions) ++are useful independent of the other DB functions, ++although some functional groups are explicitly based on other functional ++groups (e.g., transactions and logging). ++\} ++.el\{The DB library is a family of classes that provides a modular ++programming interface to transactions and record-oriented file access. ++The library includes support for transactions, locking, logging and file ++page caching, as well as various indexed access methods. ++Many of the classes (e.g., the file page caching class) ++are useful independent of the other DB classes, ++although some classes are explicitly based on other classes ++(e.g., transactions and logging). ++\} ++.. ++.\" The library error macro, the local error macro. ++.\" These macros take one argument: ++.\" + the function name. ++.de Ee ++The ++.I \\$1 ++.ie '\*[TYPE]'C'\{function may fail and return ++.I errno ++\} ++.el\{method may fail and throw a ++.IR DbException (3) ++.if '\*[TYPE]'CXX'\{ ++or return ++.I errno ++\} ++\} ++for any of the errors specified for the following DB and library functions: ++.. ++.de Ec ++In addition, the ++.I \\$1 ++.ie '\*[TYPE]'C'\{function may fail and return ++.I errno ++\} ++.el\{method may fail and throw a ++.IR DbException (3) ++.ie '\*[TYPE]'CXX'\{or return ++.I errno ++\} ++.el\{encapsulating an ++.I errno ++\} ++\} ++for the following conditions: ++.. ++.de Ea ++[EAGAIN] ++A lock was unavailable. ++.. ++.de Eb ++[EBUSY] ++The shared memory region was in use and the force flag was not set. ++.. ++.de Em ++[EAGAIN] ++The shared memory region was locked and (repeatedly) unavailable. ++.. ++.de Ei ++[EINVAL] ++An invalid flag value or parameter was specified. ++.. ++.de Es ++[EACCES] ++An attempt was made to modify a read-only database. ++.. ++.de Et ++The DB_THREAD flag was specified and spinlocks are not implemented for ++this architecture. ++.. ++.de Ep ++[EPERM] ++Database corruption was detected. ++All subsequent database calls (other than ++.ie '\*[TYPE]'C'\{\ ++.IR DB->close ) ++\} ++.el\{\ ++.IR Db::close ) ++\} ++will return EPERM. ++.. ++.de Ek ++.if '\*[TYPE]'CXX'\{\ ++Methods marked as returning ++.I errno ++will, by default, throw an exception that encapsulates the error information. ++The default error behavior can be changed, see ++.IR DbException (3). ++\} ++.. ++.\" The SEE ALSO text macro ++.de Sa ++.nh ++.na ++.IR db_archive (1), ++.IR db_checkpoint (1), ++.IR db_deadlock (1), ++.IR db_dump (1), ++.IR db_load (1), ++.IR db_recover (1), ++.IR db_stat (1). ++(Note that on Debian systems, some of these manpages and programs have ++been renamed to things like ++.B db4.3_stat ++to distinguish between the multiple DB versions.) ++.ad ++.Hy ++.. ++.\" The function header macro. ++.\" This macro takes one argument: ++.\" + the function name. ++.de Fn ++.in 2 ++.I \\$1 ++.in ++.. ++.\" The XXX_open function text macro, for merged create/open calls. ++.\" This macro takes two arguments: ++.\" + the interface, e.g., "transaction region" ++.\" + the prefix, e.g., "txn" (or the class name for C++, e.g., "DbTxn") ++.de Co ++.ie '\*[TYPE]'C'\{\ ++.Fn \\$2_open ++The ++.I \\$2_open ++function copies a pointer, to the \\$1 identified by the ++.B directory ++.IR dir , ++into the memory location referenced by ++.IR regionp . ++.PP ++If the ++.I dbenv ++argument to ++.I \\$2_open ++was initialized using ++.IR db_appinit , ++.I dir ++is interpreted as described by ++.IR db_appinit (3). ++\} ++.el\{\ ++.Fn \\$2::open ++The ++.I \\$2::open ++.ie '\*[TYPE]'CXX'\{\ ++method copies a pointer, to the \\$1 identified by the ++.B directory ++.IR dir , ++into the memory location referenced by ++.IR regionp . ++\} ++.el\{\ ++method returns a \\$1 identified by the ++.B directory ++.IR dir . ++\} ++.PP ++If the ++.I dbenv ++argument to ++.I \\$2::open ++was initialized using ++.IR DbEnv::appinit , ++.I dir ++is interpreted as described by ++.IR DbEnv (3). ++\} ++.PP ++Otherwise, ++if ++.I dir ++is not NULL, ++it is interpreted relative to the current working directory of the process. ++If ++.I dir ++is NULL, ++the following environment variables are checked in order: ++``TMPDIR'', ``TEMP'', and ``TMP''. ++If one of them is set, ++\\$1 files are created relative to the directory it specifies. ++If none of them are set, the first possible one of the following ++directories is used: ++.IR /var/tmp , ++.IR /usr/tmp , ++.IR /temp , ++.IR /tmp , ++.I C:/temp ++and ++.IR C:/tmp . ++.PP ++All files associated with the \\$1 are created in this directory. ++This directory must already exist when ++.ie '\*[TYPE]'C'\{ ++\\$1_open ++\} ++.el\{\ ++\\$2::open ++\} ++is called. ++If the \\$1 already exists, ++the process must have permission to read and write the existing files. ++If the \\$1 does not already exist, ++it is optionally created and initialized. ++.. ++.\" The common close language macro, for discarding created regions ++.\" This macro takes one argument: ++.\" + the function prefix, e.g., txn (the class name for C++, e.g., DbTxn) ++.de Cc ++In addition, if the ++.I dir ++argument to ++.ie '\*[TYPE]'C'\{\ ++.ds Va db_appinit ++.ds Vo \\$1_open ++.ds Vu \\$1_unlink ++\} ++.el\{\ ++.ds Va DbEnv::appinit ++.ds Vo \\$1::open ++.ds Vu \\$1::unlink ++\} ++.I \\*(Vo ++was NULL ++and ++.I dbenv ++was not initialized using ++.IR \\*(Va , ++.if '\\$1'memp'\{\ ++or the DB_MPOOL_PRIVATE flag was set, ++\} ++all files created for this shared region will be removed, ++as if ++.I \\*(Vu ++were called. ++.rm Va ++.rm Vo ++.rm Vu ++.. ++.\" The DB_ENV information macro. ++.\" This macro takes two arguments: ++.\" + the function called to open, e.g., "txn_open" ++.\" + the function called to close, e.g., "txn_close" ++.de En ++.ie '\*[TYPE]'C'\{\ ++based on the ++.I dbenv ++argument to ++.IR \\$1 , ++which is a pointer to a structure of type DB_ENV (typedef'd in <db.h>). ++Applications will normally use the same DB_ENV structure (initialized ++by ++.IR db_appinit (3)), ++as an argument to all of the subsystems in the DB package. ++.PP ++References to the DB_ENV structure are maintained by DB, ++so it may not be discarded until the last close function, ++corresponding to an open function for which it was an argument, ++has returned. ++In order to ensure compatibility with future releases of DB, all fields of ++the DB_ENV structure that are not explicitly set should be initialized to 0 ++before the first time the structure is used. ++Do this by declaring the structure external or static, or by calling the C ++library routine ++.IR bzero (3) ++or ++.IR memset (3). ++.PP ++The fields of the DB_ENV structure used by ++.I \\$1 ++are described below. ++.if '\*[TYPE]'CXX'\{\ ++As references to the DB_ENV structure may be maintained by ++.IR \\$1 , ++it is necessary that the DB_ENV structure and memory it references be valid ++until the ++.I \\$2 ++function is called. ++\} ++.ie '\\$1'db_appinit'\{The ++.I dbenv ++argument may not be NULL. ++If any of the fields of the ++.I dbenv ++are set to 0, ++defaults appropriate for the system are used where possible. ++\} ++.el\{If ++.I dbenv ++is NULL ++or any of its fields are set to 0, ++defaults appropriate for the system are used where possible. ++\} ++.PP ++The following fields in the DB_ENV structure may be initialized before calling ++.IR \\$1 : ++\} ++.el\{\ ++based on which set methods have been used. ++It is expected that applications will use a single DbEnv object as the ++argument to all of the subsystems in the DB package. ++The fields of the DbEnv object used by ++.I \\$1 ++are described below. ++As references to the DbEnv object may be maintained by ++.IR \\$1 , ++it is necessary that the DbEnv object and memory it references be valid ++until the object is destroyed. ++.ie '\\$1'appinit'\{\ ++The ++.I dbenv ++argument may not be NULL. ++If any of the fields of the ++.I dbenv ++are set to 0, ++defaults appropriate for the system are used where possible. ++\} ++.el\{\ ++Any of the DbEnv fields that are not explicitly set will default to ++appropriate values. ++\} ++.PP ++The following fields in the DbEnv object may be initialized, using the ++appropriate set method, before calling ++.IR \\$1 : ++\} ++.. ++.\" The DB_ENV common fields macros. ++.de Se ++.if '\*[TYPE]'JAVA'\{\ ++.TP 5 ++DbErrcall db_errcall; ++.ns ++.TP 5 ++String db_errpfx; ++.ns ++.TP 5 ++int db_verbose; ++The error fields of the DbEnv behave as described for ++.IR DbEnv (3). ++\} ++.ie '\*[TYPE]'CXX'\{\ ++.TP 5 ++void *(*db_errcall)(char *db_errpfx, char *buffer); ++.ns ++.TP 5 ++FILE *db_errfile; ++.ns ++.TP 5 ++const char *db_errpfx; ++.ns ++.TP 5 ++class ostream *db_error_stream; ++.ns ++.TP 5 ++int db_verbose; ++The error fields of the DbEnv behave as described for ++.IR DbEnv (3). ++\} ++.el\{\ ++void *(*db_errcall)(char *db_errpfx, char *buffer); ++.ns ++.TP 5 ++FILE *db_errfile; ++.ns ++.TP 5 ++const char *db_errpfx; ++.ns ++.TP 5 ++int db_verbose; ++The error fields of the DB_ENV behave as described for ++.IR db_appinit (3). ++.sp ++\} ++.. ++.\" The open flags. ++.de Fm ++The ++.I flags ++and ++.I mode ++arguments specify how files will be opened and/or created when they ++don't already exist. ++The flags value is specified by ++.BR or 'ing ++together one or more of the following values: ++.Sj DB_CREATE ++Create any underlying files, as necessary. ++If the files do not already exist and the DB_CREATE flag is not specified, ++the call will fail. ++.. ++.\" DB_THREAD open flag macro. ++.\" This macro takes two arguments: ++.\" + the open function name ++.\" + the object it returns. ++.de Ft ++.TP 5 ++.Sj DB_THREAD ++Cause the \\$2 handle returned by the ++.I \\$1 ++.Al function method ++to be useable by multiple threads within a single address space, ++i.e., to be ``free-threaded''. ++.if '\*[TYPE]'JAVA'\{\ ++Threading is assumed in the Java API, ++so no special flags are required, ++and DB functions will always behave as if the DB_THREAD flag was specified. ++\} ++.. ++.\" The mode macro. ++.\" This macro takes one argument: ++.\" + the subsystem name. ++.de Mo ++All files created by the \\$1 are created with mode ++.I mode ++(as described in ++.IR chmod (2)) ++and modified by the process' umask value at the time of creation (see ++.IR umask (2)). ++The group ownership of created files is based on the system and directory ++defaults, and is not further specified by DB. ++.. ++.\" The application exits macro. ++.\" This macro takes one argument: ++.\" + the application name. ++.de Ex ++The ++.I \\$1 ++utility exits 0 on success, and >0 if an error occurs. ++.. ++.\" The application -h section. ++.\" This macro takes one argument: ++.\" + the application name ++.de Dh ++DB_HOME ++If the ++.B \-h ++option is not specified and the environment variable ++.I DB_HOME ++is set, it is used as the path of the database home, as described in ++.IR db_appinit (3). ++.. ++.\" The function DB_HOME ENVIRONMENT VARIABLES section. ++.\" This macro takes one argument: ++.\" + the open function name ++.de Eh ++DB_HOME ++If the ++.I dbenv ++argument to ++.I \\$1 ++was initialized using ++.IR db_appinit , ++the environment variable DB_HOME may be used as the path of the database ++home for the interpretation of the ++.I dir ++argument to ++.IR \\$1 , ++as described in ++.IR db_appinit (3). ++.if \\n(.$>1 \{Specifically, ++.I \\$1 ++is affected by the configuration string value of \\$2.\} ++.. ++.\" The function TMPDIR ENVIRONMENT VARIABLES section. ++.\" This macro takes two arguments: ++.\" + the interface, e.g., "transaction region" ++.\" + the prefix, e.g., "txn" (or the class name for C++, e.g., "DbTxn") ++.de Ev ++TMPDIR ++If the ++.I dbenv ++argument to ++.ie '\*[TYPE]'C'\{\ ++.ds Vo \\$2_open ++\} ++.el\{\ ++.ds Vo \\$2::open ++\} ++.I \\*(Vo ++was NULL or not initialized using ++.IR db_appinit , ++the environment variable TMPDIR may be used as the directory in which to ++create the \\$1, ++as described in the ++.I \\*(Vo ++section above. ++.rm Vo ++.. ++.\" The unused flags macro. ++.de Fl ++The ++.I flags ++parameter is currently unused, and must be set to 0. ++.. ++.\" The no-space TP macro. ++.de Nt ++.br ++.ns ++.TP 5 ++.. ++.\" The return values of the functions macros. ++.\" Rc is the standard two-value return with a suffix for more values. ++.\" Ro is the standard two-value return but there were previous values. ++.\" Rt is the standard two-value return, returning errno, 0, or < 0. ++.\" These macros take one argument: ++.\" + the routine name ++.de Rc ++The ++.I \\$1 ++.ie '\*[TYPE]'C'\{function returns the value of ++.I errno ++on failure, ++0 on success, ++\} ++.el\{method throws a ++.IR DbException (3) ++.ie '\*[TYPE]'CXX'\{or returns the value of ++.I errno ++on failure, ++0 on success, ++\} ++.el\{that encapsulates an ++.I errno ++on failure, ++\} ++\} ++.. ++.de Ro ++Otherwise, the ++.I \\$1 ++.ie '\*[TYPE]'C'\{function returns the value of ++.I errno ++on failure and 0 on success. ++\} ++.el\{method throws a ++.IR DbException (3) ++.ie '\*[TYPE]'CXX'\{or returns the value of ++.I errno ++on failure and 0 on success. ++\} ++.el\{that encapsulates an ++.I errno ++on failure, ++\} ++\} ++.. ++.de Rt ++The ++.I \\$1 ++.ie '\*[TYPE]'C'\{function returns the value of ++.I errno ++on failure and 0 on success. ++\} ++.el\{method throws a ++.IR DbException (3) ++.ie '\*[TYPE]'CXX'\{or returns the value of ++.I errno ++on failure and 0 on success. ++\} ++.el\{that encapsulates an ++.I errno ++on failure. ++\} ++\} ++.. ++.\" The TXN id macro. ++.de Tx ++.IP ++If the file is being accessed under transaction protection, ++the ++.I txnid ++parameter is a transaction ID returned from ++.IR txn_begin , ++otherwise, NULL. ++.. ++.\" The XXX_unlink function text macro. ++.\" This macro takes two arguments: ++.\" + the interface, e.g., "transaction region" ++.\" + the prefix (for C++, this is the class name) ++.de Un ++.ie '\*[TYPE]'C'\{\ ++.ds Va db_appinit ++.ds Vc \\$2_close ++.ds Vo \\$2_open ++.ds Vu \\$2_unlink ++\} ++.el\{\ ++.ds Va DbEnv::appinit ++.ds Vc \\$2::close ++.ds Vo \\$2::open ++.ds Vu \\$2::unlink ++\} ++.Fn \\*(Vu ++The ++.I \\*(Vu ++.Al function method ++destroys the \\$1 identified by the directory ++.IR dir , ++removing all files used to implement the \\$1. ++.ie '\\$2'log' \{(The log files themselves and the directory ++.I dir ++are not removed.)\} ++.el \{(The directory ++.I dir ++is not removed.)\} ++If there are processes that have called ++.I \\*(Vo ++without calling ++.I \\*(Vc ++(i.e., there are processes currently using the \\$1), ++.I \\*(Vu ++will fail without further action, ++unless the force flag is set, ++in which case ++.I \\*(Vu ++will attempt to remove the \\$1 files regardless of any processes ++still using the \\$1. ++.PP ++The result of attempting to forcibly destroy the region when a process ++has the region open is unspecified. ++Processes using a shared memory region maintain an open file descriptor ++for it. ++On UNIX systems, the region removal should succeed ++and processes that have already joined the region should continue to ++run in the region without change, ++however processes attempting to join the \\$1 will either fail or ++attempt to create a new region. ++On other systems, e.g., WNT, where the ++.IR unlink (2) ++system call will fail if any process has an open file descriptor ++for the file, ++the region removal will fail. ++.PP ++In the case of catastrophic or system failure, ++database recovery must be performed (see ++.IR db_recover (1) ++or the DB_RECOVER and DB_RECOVER_FATAL flags to ++.IR \\*(Va (3)). ++Alternatively, if recovery is not required because no database state is ++maintained across failures, ++it is possible to clean up a \\$1 by removing all of the ++files in the directory specified to the ++.I \\*(Vo ++.Al function, method, ++as \\$1 files are never created in any directory other than the one ++specified to ++.IR \\*(Vo . ++Note, however, ++that this has the potential to remove files created by the other DB ++subsystems in this database environment. ++.PP ++.Rt \\*(Vu ++.rm Va ++.rm Vo ++.rm Vu ++.rm Vc ++.. ++.\" Signal paragraph for standard utilities. ++.\" This macro takes one argument: ++.\" + the utility name. ++.de Si ++The ++.I \\$1 ++utility attaches to DB shared memory regions. ++In order to avoid region corruption, ++it should always be given the chance to detach and exit gracefully. ++To cause ++.I \\$1 ++to clean up after itself and exit, ++send it an interrupt signal (SIGINT). ++.. ++.\" Logging paragraph for standard utilities. ++.\" This macro takes one argument: ++.\" + the utility name. ++.de Pi ++.B \-L ++Log the execution of the \\$1 utility to the specified file in the ++following format, where ``###'' is the process ID, and the date is ++the time the utility starting running. ++.sp ++\\$1: ### Wed Jun 15 01:23:45 EDT 1995 ++.sp ++This file will be removed if the \\$1 utility exits gracefully. ++.. ++.\" Malloc paragraph. ++.\" This macro takes one argument: ++.\" + the allocated object ++.de Ma ++.if !'\*[TYPE]'JAVA'\{\ ++\\$1 are created in allocated memory. ++If ++.I db_malloc ++is non-NULL, ++it is called to allocate the memory, ++otherwise, ++the library function ++.IR malloc (3) ++is used. ++The function ++.I db_malloc ++must match the calling conventions of the ++.IR malloc (3) ++library routine. ++Regardless, ++the caller is responsible for deallocating the returned memory. ++To deallocate the returned memory, ++free each returned memory pointer; ++pointers inside the memory do not need to be individually freed. ++\} ++.. ++.\" Underlying function paragraph. ++.\" This macro takes two arguments: ++.\" + the function name ++.\" + the utility name ++.de Uf ++The ++.I \\$1 ++.Al function method ++is the underlying function used by the ++.IR \\$2 (1) ++utility. ++See the source code for the ++.I \\$2 ++utility for an example of using ++.I \\$1 ++in a UNIX environment. ++.. ++.\" Underlying function paragraph, for C++. ++.\" This macro takes three arguments: ++.\" + the C++ method name ++.\" + the function name for C ++.\" + the utility name ++.de Ux ++The ++.I \\$1 ++method is based on the C ++.I \\$2 ++function, which ++is the underlying function used by the ++.IR \\$3 (1) ++utility. ++See the source code for the ++.I \\$3 ++utility for an example of using ++.I \\$2 ++in a UNIX environment. ++.. ++.TH DB_DUMP185 1 "April 10, 1998" ++.UC 7 ++.SH NAME ++db_dump185 \- dump DB 1.85 legacy database files ++.SH SYNOPSIS ++\fBdb_dump185\fP [\fB-p\fP] [\fB-f output\fP] db_file ++.SH DESCRIPTION ++The ++.I db_dump185 ++utility reads the version 1.85 database file ++.I db_file ++and writes it to the standard output using a portable flat-text format ++understood by the ++.IR db_load (1) ++utility. ++The argument ++.I db_file ++must be a file produced using the version 1.85 ++.I DB ++library functions. ++.PP ++The options are as follows: ++.TP 5 ++.B \-f ++Write to the specified ++.I file ++instead of to the standard output. ++.TP 5 ++.B \-p ++If characters in either the key or data items are printing characters ++(as defined by ++.IR isprint (3)), ++use printing characters in ++.I file ++to represent them. ++This option permits users to use standard text editors to modify ++the contents of databases. ++.IP ++Note, different systems may have different notions as to what characters ++are ``printing'', and databases dumped in this manner may be less portable ++to external systems. ++.PP ++Dumping and reloading hash databases that use user-defined hash functions ++will result in new databases that use the default hash function. ++While using the default hash function may not be optimal for the new database, ++it will continue to work correctly. ++.PP ++Dumping and reloading btree databases that use user-defined prefix or ++comparison functions will result in new databases that use the default ++prefix and comparison functions. ++.ft B ++In this case, it is quite likely that the database will be damaged ++beyond repair permitting neither record storage or retrieval. ++.ft R ++.PP ++The only available workaround for either case is to modify the sources ++for the ++.IR db_load (1) ++utility to load the database using the correct hash, prefix and comparison ++functions. ++.PP ++.Ex db_dump ++.SH "OUTPUT FORMATS ++There are two output formats used by ++.IR db_dump . ++.PP ++In both output formats, the first few lines of the output contain ++header information describing the underlying access method, filesystem page ++size and other bookkeeping information. ++This information is output in ``name=value'' pairs, where ``name'' may ++be any of the keywords listed in the ++.IR db_load (1) ++manual page, and ``value'' will be its value. ++While this header information can be edited before the database is ++reloaded, ++there is rarely any reason to do so, as all of this information can be ++overridden by command-line arguments to ++.IR db_load . ++.PP ++Following the header information are the key/data pairs from the database. ++If the database being dumped is of type ++.B btree ++or ++.BR hash , ++the output will be paired lines of text, ++where the first line of the pair is the key item, ++and the second line of the pair is its corresponding data item. ++If the database being dumped is of type ++.BR recno , ++the output will be lines of text, ++where each line is a new data item for the database. ++.PP ++If the ++.B \-p ++option was specified, each output line will consist of single characters ++representing any characters from the database that were ``printing'', ++and backslash (``\e'') escaped characters for any that were not. ++Backslash characters appearing in the output mean one of two things: ++if the backslash character precedes another backslash character, ++it means that a literal backslash character occurred in the key or data ++item. ++If the backslash character precedes any other character, ++the next two characters should be interpreted as hexadecimal specification ++of a single character, e.g., ``\e0a'' is a newline character in the ASCII ++character set. ++.PP ++If the ++.B \-p ++option was not specified, each output line will consist of paired hexadecimal ++values, e.g., the line ``726f6f74'' is the string ``root'' in the ASCII ++character set. ++.PP ++In both output formats, ++a single newline character ends both the key and data items. ++.SH "SEE ALSO" ++.IR isprint (3) ++.PP ++.Gn ++.PP ++.Sa +Index: b/db_dump185/db_dump185.c +=================================================================== +--- /dev/null ++++ b/db_dump185/db_dump185.c +@@ -0,0 +1,355 @@ ++/*- ++ * See the file LICENSE for redistribution information. ++ * ++ * Copyright (c) 1996-2004 ++ * Sleepycat Software. All rights reserved. ++ * ++ * $Id: db_dump185.c,v 11.19 2004/01/28 03:36:00 bostic Exp $ ++ */ ++ ++#ifndef lint ++static char copyright[] = ++ "Copyright (c) 1996-2004\nSleepycat Software Inc. All rights reserved.\n"; ++#endif ++ ++#include <sys/types.h> ++ ++#include <ctype.h> ++#include <errno.h> ++#include <fcntl.h> ++#include <stdio.h> ++#include <stdlib.h> ++#include <string.h> ++ ++#include <db.h> ++ ++/* Hash Table Information */ ++typedef struct hashhdr185 { /* Disk resident portion */ ++ int magic; /* Magic NO for hash tables */ ++ int version; /* Version ID */ ++ u_int32_t lorder; /* Byte Order */ ++ int bsize; /* Bucket/Page Size */ ++ int bshift; /* Bucket shift */ ++ int dsize; /* Directory Size */ ++ int ssize; /* Segment Size */ ++ int sshift; /* Segment shift */ ++ int ovfl_point; /* Where overflow pages are being ++ * allocated */ ++ int last_freed; /* Last overflow page freed */ ++ int max_bucket; /* ID of Maximum bucket in use */ ++ int high_mask; /* Mask to modulo into entire table */ ++ int low_mask; /* Mask to modulo into lower half of ++ * table */ ++ int ffactor; /* Fill factor */ ++ int nkeys; /* Number of keys in hash table */ ++} HASHHDR185; ++typedef struct htab185 { /* Memory resident data structure */ ++ HASHHDR185 hdr; /* Header */ ++} HTAB185; ++ ++/* Hash Table Information */ ++typedef struct hashhdr186 { /* Disk resident portion */ ++ int32_t magic; /* Magic NO for hash tables */ ++ int32_t version; /* Version ID */ ++ int32_t lorder; /* Byte Order */ ++ int32_t bsize; /* Bucket/Page Size */ ++ int32_t bshift; /* Bucket shift */ ++ int32_t ovfl_point; /* Where overflow pages are being allocated */ ++ int32_t last_freed; /* Last overflow page freed */ ++ int32_t max_bucket; /* ID of Maximum bucket in use */ ++ int32_t high_mask; /* Mask to modulo into entire table */ ++ int32_t low_mask; /* Mask to modulo into lower half of table */ ++ int32_t ffactor; /* Fill factor */ ++ int32_t nkeys; /* Number of keys in hash table */ ++ int32_t hdrpages; /* Size of table header */ ++ int32_t h_charkey; /* value of hash(CHARKEY) */ ++#define NCACHED 32 /* number of bit maps and spare points */ ++ int32_t spares[NCACHED];/* spare pages for overflow */ ++ /* address of overflow page bitmaps */ ++ u_int16_t bitmaps[NCACHED]; ++} HASHHDR186; ++typedef struct htab186 { /* Memory resident data structure */ ++ void *unused[2]; ++ HASHHDR186 hdr; /* Header */ ++} HTAB186; ++ ++typedef struct _epgno { ++ u_int32_t pgno; /* the page number */ ++ u_int16_t index; /* the index on the page */ ++} EPGNO; ++ ++typedef struct _epg { ++ void *page; /* the (pinned) page */ ++ u_int16_t index; /* the index on the page */ ++} EPG; ++ ++typedef struct _cursor { ++ EPGNO pg; /* B: Saved tree reference. */ ++ DBT key; /* B: Saved key, or key.data == NULL. */ ++ u_int32_t rcursor; /* R: recno cursor (1-based) */ ++ ++#define CURS_ACQUIRE 0x01 /* B: Cursor needs to be reacquired. */ ++#define CURS_AFTER 0x02 /* B: Unreturned cursor after key. */ ++#define CURS_BEFORE 0x04 /* B: Unreturned cursor before key. */ ++#define CURS_INIT 0x08 /* RB: Cursor initialized. */ ++ u_int8_t flags; ++} CURSOR; ++ ++/* The in-memory btree/recno data structure. */ ++typedef struct _btree { ++ void *bt_mp; /* memory pool cookie */ ++ ++ void *bt_dbp; /* pointer to enclosing DB */ ++ ++ EPG bt_cur; /* current (pinned) page */ ++ void *bt_pinned; /* page pinned across calls */ ++ ++ CURSOR bt_cursor; /* cursor */ ++ ++ EPGNO bt_stack[50]; /* stack of parent pages */ ++ EPGNO *bt_sp; /* current stack pointer */ ++ ++ DBT bt_rkey; /* returned key */ ++ DBT bt_rdata; /* returned data */ ++ ++ int bt_fd; /* tree file descriptor */ ++ ++ u_int32_t bt_free; /* next free page */ ++ u_int32_t bt_psize; /* page size */ ++ u_int16_t bt_ovflsize; /* cut-off for key/data overflow */ ++ int bt_lorder; /* byte order */ ++ /* sorted order */ ++ enum { NOT, BACK, FORWARD } bt_order; ++ EPGNO bt_last; /* last insert */ ++ ++ /* B: key comparison function */ ++ int (*bt_cmp) __P((DBT *, DBT *)); ++ /* B: prefix comparison function */ ++ size_t (*bt_pfx) __P((DBT *, DBT *)); ++ /* R: recno input function */ ++ int (*bt_irec) __P((struct _btree *, u_int32_t)); ++ ++ FILE *bt_rfp; /* R: record FILE pointer */ ++ int bt_rfd; /* R: record file descriptor */ ++ ++ void *bt_cmap; /* R: current point in mapped space */ ++ void *bt_smap; /* R: start of mapped space */ ++ void *bt_emap; /* R: end of mapped space */ ++ size_t bt_msize; /* R: size of mapped region. */ ++ ++ u_int32_t bt_nrecs; /* R: number of records */ ++ size_t bt_reclen; /* R: fixed record length */ ++ u_char bt_bval; /* R: delimiting byte/pad character */ ++ ++/* ++ * NB: ++ * B_NODUPS and R_RECNO are stored on disk, and may not be changed. ++ */ ++#define B_INMEM 0x00001 /* in-memory tree */ ++#define B_METADIRTY 0x00002 /* need to write metadata */ ++#define B_MODIFIED 0x00004 /* tree modified */ ++#define B_NEEDSWAP 0x00008 /* if byte order requires swapping */ ++#define B_RDONLY 0x00010 /* read-only tree */ ++ ++#define B_NODUPS 0x00020 /* no duplicate keys permitted */ ++#define R_RECNO 0x00080 /* record oriented tree */ ++ ++#define R_CLOSEFP 0x00040 /* opened a file pointer */ ++#define R_EOF 0x00100 /* end of input file reached. */ ++#define R_FIXLEN 0x00200 /* fixed length records */ ++#define R_MEMMAPPED 0x00400 /* memory mapped file. */ ++#define R_INMEM 0x00800 /* in-memory file */ ++#define R_MODIFIED 0x01000 /* modified file */ ++#define R_RDONLY 0x02000 /* read-only file */ ++ ++#define B_DB_LOCK 0x04000 /* DB_LOCK specified. */ ++#define B_DB_SHMEM 0x08000 /* DB_SHMEM specified. */ ++#define B_DB_TXN 0x10000 /* DB_TXN specified. */ ++ u_int32_t flags; ++} BTREE; ++ ++void db_btree __P((DB *, int)); ++void db_hash __P((DB *, int)); ++void dbt_dump __P((DBT *)); ++void dbt_print __P((DBT *)); ++int main __P((int, char *[])); ++int usage __P((void)); ++ ++int ++main(argc, argv) ++ int argc; ++ char *argv[]; ++{ ++ extern char *optarg; ++ extern int optind; ++ DB *dbp; ++ DBT key, data; ++ int ch, pflag, rval; ++ ++ pflag = 0; ++ while ((ch = getopt(argc, argv, "f:p")) != EOF) ++ switch (ch) { ++ case 'f': ++ if (freopen(optarg, "w", stdout) == NULL) { ++ fprintf(stderr, "db_dump185: %s: %s\n", ++ optarg, strerror(errno)); ++ return (EXIT_FAILURE); ++ } ++ break; ++ case 'p': ++ pflag = 1; ++ break; ++ case '?': ++ default: ++ return (usage()); ++ } ++ argc -= optind; ++ argv += optind; ++ ++ if (argc != 1) ++ return (usage()); ++ ++ if ((dbp = dbopen(argv[0], O_RDONLY, 0, DB_BTREE, NULL)) == NULL) { ++ if ((dbp = ++ dbopen(argv[0], O_RDONLY, 0, DB_HASH, NULL)) == NULL) { ++ fprintf(stderr, ++ "db_dump185: %s: %s\n", argv[0], strerror(errno)); ++ return (EXIT_FAILURE); ++ } ++ db_hash(dbp, pflag); ++ } else ++ db_btree(dbp, pflag); ++ ++ /* ++ * !!! ++ * DB 1.85 DBTs are a subset of DB 2.0 DBTs, so we just use the ++ * new dump/print routines. ++ */ ++ if (pflag) ++ while (!(rval = dbp->seq(dbp, &key, &data, R_NEXT))) { ++ dbt_print(&key); ++ dbt_print(&data); ++ } ++ else ++ while (!(rval = dbp->seq(dbp, &key, &data, R_NEXT))) { ++ dbt_dump(&key); ++ dbt_dump(&data); ++ } ++ ++ if (rval == -1) { ++ fprintf(stderr, "db_dump185: seq: %s\n", strerror(errno)); ++ return (EXIT_FAILURE); ++ } ++ return (EXIT_SUCCESS); ++} ++ ++/* ++ * db_hash -- ++ * Dump out hash header information. ++ */ ++void ++db_hash(dbp, pflag) ++ DB *dbp; ++ int pflag; ++{ ++ HTAB185 *hash185p; ++ HTAB186 *hash186p; ++ ++ printf("format=%s\n", pflag ? "print" : "bytevalue"); ++ printf("type=hash\n"); ++ ++ /* DB 1.85 was version 2, DB 1.86 was version 3. */ ++ hash185p = dbp->internal; ++ if (hash185p->hdr.version > 2) { ++ hash186p = dbp->internal; ++ printf("h_ffactor=%lu\n", (u_long)hash186p->hdr.ffactor); ++ if (hash186p->hdr.lorder != 0) ++ printf("db_lorder=%lu\n", (u_long)hash186p->hdr.lorder); ++ printf("db_pagesize=%lu\n", (u_long)hash186p->hdr.bsize); ++ } else { ++ printf("h_ffactor=%lu\n", (u_long)hash185p->hdr.ffactor); ++ if (hash185p->hdr.lorder != 0) ++ printf("db_lorder=%lu\n", (u_long)hash185p->hdr.lorder); ++ printf("db_pagesize=%lu\n", (u_long)hash185p->hdr.bsize); ++ } ++ printf("HEADER=END\n"); ++} ++ ++/* ++ * db_btree -- ++ * Dump out btree header information. ++ */ ++void ++db_btree(dbp, pflag) ++ DB *dbp; ++ int pflag; ++{ ++ BTREE *btp; ++ ++ btp = dbp->internal; ++ ++ printf("format=%s\n", pflag ? "print" : "bytevalue"); ++ printf("type=btree\n"); ++#ifdef NOT_AVAILABLE_IN_185 ++ printf("bt_minkey=%lu\n", (u_long)XXX); ++ printf("bt_maxkey=%lu\n", (u_long)XXX); ++#endif ++ if (btp->bt_lorder != 0) ++ printf("db_lorder=%lu\n", (u_long)btp->bt_lorder); ++ printf("db_pagesize=%lu\n", (u_long)btp->bt_psize); ++ if (!(btp->flags & B_NODUPS)) ++ printf("duplicates=1\n"); ++ printf("HEADER=END\n"); ++} ++ ++static char hex[] = "0123456789abcdef"; ++ ++/* ++ * dbt_dump -- ++ * Write out a key or data item using byte values. ++ */ ++void ++dbt_dump(dbtp) ++ DBT *dbtp; ++{ ++ size_t len; ++ u_int8_t *p; ++ ++ for (len = dbtp->size, p = dbtp->data; len--; ++p) ++ (void)printf("%c%c", ++ hex[(*p & 0xf0) >> 4], hex[*p & 0x0f]); ++ printf("\n"); ++} ++ ++/* ++ * dbt_print -- ++ * Write out a key or data item using printable characters. ++ */ ++void ++dbt_print(dbtp) ++ DBT *dbtp; ++{ ++ size_t len; ++ u_int8_t *p; ++ ++ for (len = dbtp->size, p = dbtp->data; len--; ++p) ++ if (isprint((int)*p)) { ++ if (*p == '\\') ++ (void)printf("\\"); ++ (void)printf("%c", *p); ++ } else ++ (void)printf("\\%c%c", ++ hex[(*p & 0xf0) >> 4], hex[*p & 0x0f]); ++ printf("\n"); ++} ++ ++/* ++ * usage -- ++ * Display the usage message. ++ */ ++int ++usage() ++{ ++ (void)fprintf(stderr, "usage: db_dump185 [-p] [-f file] db_file\n"); ++ return (EXIT_FAILURE); ++} diff --git a/debian/patches/libc-symbols.patch b/debian/patches/libc-symbols.patch new file mode 100644 index 0000000..46c4317 --- /dev/null +++ b/debian/patches/libc-symbols.patch @@ -0,0 +1,101 @@ +Description: Define symbols that were formerly libc-only + We aren't in libc any more, so we don't have to worry about polluting + libnss_db's namespace. +Author: Colin Watson <cjwatson@debian.org> +Bug-Debian: http://bugs.debian.org/163264 +Forwarded: no +Last-Update: 2010-03-26 + +Index: b/btree/btree.h +=================================================================== +--- a/btree/btree.h ++++ b/btree/btree.h +@@ -43,7 +43,7 @@ + + #include <mpool.h> + +-#ifdef _LIBC ++/* #ifdef _LIBC */ + /* In the GNU C library we must not pollute the namespace because libdb is + needed by libnss_db. */ + #define mpool_open __mpool_open +@@ -53,7 +53,7 @@ + #define mpool_put __mpool_put + #define mpool_sync __mpool_sync + #define mpool_close __mpool_close +-#endif ++/* #endif */ + + #define DEFMINKEYPAGE (2) /* Minimum keys per page */ + #define MINCACHE (5) /* Minimum cached pages */ +Index: b/db/db.c +=================================================================== +--- a/db/db.c ++++ b/db/db.c +@@ -44,11 +44,11 @@ + + #include <db.h> + +-#ifdef _LIBC ++/* #ifdef _LIBC */ + /* In the GNU C library we must not pollute the namespace, because libdb + is needed by libnss_db. */ + #define dbopen __dbopen +-#endif ++/* #endif */ + + DB * + dbopen(fname, flags, mode, type, openinfo) +@@ -78,10 +78,10 @@ + errno = EINVAL; + return (NULL); + } +-#ifdef _LIBC ++/* #ifdef _LIBC */ + #undef dbopen + weak_alias (__dbopen, dbopen) +-#endif ++/* #endif */ + + static int + __dberr __P((void)) +Index: b/mpool/mpool.c +=================================================================== +--- a/mpool/mpool.c ++++ b/mpool/mpool.c +@@ -50,7 +50,7 @@ + #define __MPOOLINTERFACE_PRIVATE + #include <mpool.h> + +-#ifdef _LIBC ++/* #ifdef _LIBC */ + /* In the GNU C library we must not pollute the namespace because libdb is + needed by libnss_db. */ + #define mpool_open __mpool_open +@@ -60,7 +60,7 @@ + #define mpool_put __mpool_put + #define mpool_sync __mpool_sync + #define mpool_close __mpool_close +-#endif ++/* #endif */ + + static BKT *mpool_bkt __P((MPOOL *)); + static BKT *mpool_look __P((MPOOL *, pgno_t)); +@@ -313,7 +313,7 @@ + return (fsync(mp->fd) ? RET_ERROR : RET_SUCCESS); + } + +-#ifdef _LIBC ++/* #ifdef _LIBC */ + #undef mpool_open + #undef mpool_filter + #undef mpool_new +@@ -328,7 +328,7 @@ + weak_alias (__mpool_put, mpool_put) + weak_alias (__mpool_close, mpool_close) + weak_alias (__mpool_sync, mpool_sync) +-#endif ++/* #endif */ + + /* + * mpool_bkt diff --git a/debian/patches/pmt-compat.patch b/debian/patches/pmt-compat.patch new file mode 100644 index 0000000..9ef044f --- /dev/null +++ b/debian/patches/pmt-compat.patch @@ -0,0 +1,21 @@ +Description: Translate __PMT() to __P() on non-glibc architectures +Author: Colin Watson <cjwatson@debian.org> +Forwarded: no +Last-Update: 2010-03-26 + +Index: b/db.h +=================================================================== +--- a/db.h ++++ b/db.h +@@ -39,6 +39,11 @@ + #include <sys/types.h> + #include <sys/cdefs.h> + ++/* Some systems don't define the __PMT extension of __P; translation is safe */ ++#ifndef __PMT ++#define __PMT(p) __P(p) ++#endif ++ + #include <limits.h> + + #ifdef __DBINTERFACE_PRIVATE diff --git a/debian/patches/series b/debian/patches/series new file mode 100644 index 0000000..8bd7870 --- /dev/null +++ b/debian/patches/series @@ -0,0 +1,5 @@ +build-outside-glibc.patch +weak-alias.patch +pmt-compat.patch +libc-symbols.patch +db_dump185.patch diff --git a/debian/patches/weak-alias.patch b/debian/patches/weak-alias.patch new file mode 100644 index 0000000..59eb6cf --- /dev/null +++ b/debian/patches/weak-alias.patch @@ -0,0 +1,22 @@ +Description: Weak alias definitions + Import part of libc-symbols.h from glibc. +Author: Colin Watson <cjwatson@debian.org> +Forwarded: no +Last-Update: 2010-03-26 + +Index: b/compat.h +=================================================================== +--- a/compat.h ++++ b/compat.h +@@ -45,5 +45,11 @@ + #define MIN(_a,_b) ((_a)<(_b)?(_a):(_b)) + #endif + ++/* Define ALIASNAME as a weak alias for NAME. ++ If weak aliases are not available, this defines a strong alias. */ ++#define weak_alias(name, aliasname) _weak_alias (name, aliasname) ++#define _weak_alias(name, aliasname) \ ++ extern __typeof (name) aliasname __attribute__ ((weak, alias (#name))); ++ + + #endif /* compat.h */ diff --git a/debian/source/format b/debian/source/format new file mode 100644 index 0000000..163aaf8 --- /dev/null +++ b/debian/source/format @@ -0,0 +1 @@ +3.0 (quilt) |