On Thursday 28 of June 2007, Ralf S. Engelschall wrote:
> On Thu, Jun 28, 2007, Arkadiusz Miskiewicz wrote:
> > On Thursday 28 of June 2007, Jeff Johnson wrote:
> > > On Jun 28, 2007, at 2:06 AM, Ralf S. Engelschall wrote:
> > > > Fair enough! It certainly is a difficult balance between avoiding the
> > > > trouble with lusers and still allowing packagers to build RPM with an
> > > > external Berkeley-DB _without_ having to patch the RPM sources.
> > >
> > > The only patch is the robust mutexes. There's likely a vector in
> > > Berkeley DB that can be overridden, and the POSIX shared mutex
> > > locking can be carried privately within rpm if external db is
> > > absolutely desired.
> >
> > Where is that patch? We at PLD don't like internal libs, we prefer to
> > patch external ones.
>
> CVSTrac is your friend here: http://rpm5.org/cvs/chngview?cn=6633
If the first chunk is everything needed then hm, it doesn't seem to be working
here on *some* my Linux systems (while works without problem on others; looks
kernel version dependant):
# rpm -qa
rpmdb: unable to initialize mutex: Operation not supported
rpmdb: PANIC: Operation not supported
rpmdb: unable to join the environment
error: db4 error(-30975) from dbenv->open: DB_RUNRECOVERY: Fatal error, run
database recovery
error: Runnning db->verify ...
rpmdb: unable to initialize mutex: Operation not supported
rpmdb: PANIC: Operation not supported
kernel is 2.6.16 amd64, userspace i686
2448 open("/var/lib/rpm/__db.002", O_RDWR|O_CREAT|O_LARGEFILE, 0644) = 3
2448 fcntl64(3, F_SETFD, FD_CLOEXEC) = 0
2448 _llseek(3, 180224, [180224], SEEK_SET) = 0
2448
write(3, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"...,
8192) = 8192
2448 mmap2(NULL, 188416, PROT_READ|PROT_WRITE, MAP_SHARED, 3, 0x2e000) =
0xf7a4f000
2448 close(3) = 0
2448 write(2, "rpmdb: ", 7) = 7
2448 write(2, "unable to initialize mutex", 26) = 26
2448 write(2, ": ", 2) = 2
2448 write(2, "Operation not supported", 23) = 23
2448 write(2, "\n", 1) = 1
2448 munmap(0xf7a4f000, 188416) = 0
2448 write(2, "rpmdb: ", 7) = 7
2448 write(2, "PANIC", 5) = 5
2448 write(2, ": ", 2) = 2
2448 write(2, "Operation not supported", 23) = 23
2448 write(2, "\n", 1) = 1
> But keep in mind that this is _NOT_ portable as it uses the
> "Non-Portable" (NP) part of the POSIX Pthread API. So, this is
> unfinished as the necessary Autoconf glue is missing or at least some
> "#if defined(__linux__)"...
Not a big problem, PLD is Linux distribution only (well, there is some FreeBSD
port).
> Ralf S. Engelschall
> rse@engelschall.com
> www.engelschall.com
--
Arkadiusz Mi¶kiewicz PLD/Linux Team
arekm / maven.pl http://ftp.pld-linux.org/
Received on Thu Jun 28 20:03:31 2007