[erlang-questions] Erlang BDB driver build issues

Chris Newcombe chris.newcombe@REDACTED
Mon Oct 15 17:55:55 CEST 2007


Hi Ciprian,

I am cc'ing the erlang-questions mailing list as it is possible that
my responses may help other people.


> 1) You are using a tool named "findup".
>    The problem is that this tool is not installed by default on my
> system -- Debian Etch.

This part of the makefile comes from the original EDTK makefiles,
which I didn't write.  I use RHEL3, and I found that the makefile just
worked.  I believe that the original author of the makefile used
Solaris.

I just checked, and 'findup' is actually a perl script in my company's
environment
Hopefully you can adapt this:

  #!/bin/perl5.8/perl
  use strict;
  use warnings;

  use Cwd;
  use File::Basename;

  my $target = shift || die "Usage: $0 <target-name>\n";
  my $dir = cwd;

  while ((! -e "$dir/$target") && ($dir ne dirname($dir))) {
    $dir = dirname($dir);
  }

  print $dir if -e "$dir/$target";


>    2) It seems that there are some hard-coded paths to pcre and
> coredumper libs. Also the make file assumes that the header files for
> both libraries are in a standard location. (Which in my case is not.)

Yes this is far from ideal and I apologise.
I hope that you saw that there is an installer script available that
includes patches that removes the absolute paths:

  http://www.snookles.com/erlang/edtk/edtk-1.5.1.README-compilation-help


>    *) I have tried to compile it against BDB 4.6.21 -- the latest --
> but there were some compilation errors. After I tried with 4.5.20 --
> unpatched -- I seen that the error messages are the same. Maybe the
> patches wasn't accepted in the final release...

This won't work, and is actually dangerous.

You MUST use the build of BDB that is recommended in the
README-cnewcom file.   That is v4.5.20 plus the 20 or so patches
applied by the script in:

  examples/berkeley_db/patches-to-berkeley-db/db-4.5.20/apply-patches.sh

All of those patches (apart from one minor patch) are official Oracle
patches, to fix bugs in the released version of v4.5.20.   The patches
are essential for correct operation (particularly replication, and
also distributed transactions).   The same fixes have been included in
BDB v4.6, but Oracle do not normally back-port fixes to older existing
releases.  So the existing (final) v4.5.20 tarballs do not have these
patches. (i.e. Oracle did not do another release of v4.5 that includes
these patches -- you have to use the patch script above.)

There are constants in the examples/berkeley_db/berkeley_db.xml file
that are taken from the db.h file that is generated by the bdb build.
 To upgrade the driver to a new version of BDB, those constants must
be edited.  There are instructions in the berkeley_db.h file.  As BDB
releases are only once a year, I never automated this.

FYI There is an engineer at Oracle who has experimentally upgraded the
driver to use the latest BDB v4.6 release (they are evaluating Erlang
as an internal test platform for BDB-HA).  I can ask her for patches
if you like.   However, it would be a grave mistake to upgrade the
driver to BDB v4.6 until full testing has been done, as v4.6 is still
relatively new -- there have been a couple of patch releases already.
 So the patch would be marked 'experimental' at the very least.

I hope this helps,

Chris


On 10/12/07, Ciprian Dorin Craciun <ciprian.craciun@REDACTED> wrote:
>    Hello!
>
>    My name is Ciprian Craciun and I have read your posts on the
> Erlang discussion list.
>
>    I have tried to compile the driver but I have encountered some
> problems... Most of them I hacked out and managed to proceed... But
> still all these problems could make the difference if some one would
> like to asses your library.
>
>    I am writing this because maybe you could solve these
> inconveniences for further releases.
>
>    (I am using the latest version of EDTK -- 1.5.1)
>
>    1) You are using a tool named "findup".
>    The problem is that this tool is not installed by default on my
> system -- Debian Etch. Also the only binary named like this in the
> entire distribution does something completely different.
>    You could either remove it and use something else, or provide
> it... Even quick search on Google comes up with nothing useful...
>
>    2) It seems that there are some hard-coded paths to pcre and
> coredumper libs. Also the make file assumes that the header files for
> both libraries are in a standard location. (Which in my case is not.)
>    It would be nice to have these paths as variables, just like
> BDB_INSTALLED_DIR.
>    Maybe you could create a file named config that would be read by
> the make files and the shell scripts.
>
>    *) I have tried to compile it against BDB 4.6.21 -- the latest --
> but there were some compilation errors. After I tried with 4.5.20 --
> unpatched -- I seen that the error messages are the same. Maybe the
> patches wasn't accepted in the final release...
>
>    Except of these problems the build was successful and the first
> example worked (the one without replication). Now I have to play with
> the library.
>
>    I hope that this information is of some use to you.
>
>    Ciprian.



More information about the erlang-questions mailing list