[Vm-dev] updating and compiling the BerkeleyDB plugin

David T. Lewis lewis at mail.msen.com
Wed Apr 15 03:42:19 UTC 2015


Good, I think for now it's best if you work with the 32-bit platform,
which can probably produce a working plugin. I'll carry on with my 64-bit
setup, which which will let me pick off the pointer size issues. We can
swap fixes as we go.  I think I also see some issues related to assuming
an image word size of 4 (it would be 8 for 64 bit images) but we can deal
with that later.

I just did a commit to the BerkeleyDB repository (BerkeleyDB-dtl.4) that
eliminates my remaining compile errors for the sqBerkeleyDatabase.c plugin
generated source, although I still get a number of compiler warnings that
will need to be sorted out. You probably will not notice a difference on
32-bits though.

Dave

On Tue, Apr 14, 2015 at 07:31:44PM -0700, Paul DeBruicker wrote:
> Hi Dave,
> 
> Its the 32 bit version of 14.04 but in a VM and I could set up a 64bit version if you think it would be good to be on the same one.  
> 
> Paul
> 
> 
> 
> On Apr 13, 2015, at 8:07 PM, David T. Lewis <lewis at mail.msen.com> wrote:
> 
> > Hi Paul,
> > 
> > Thanks for the clear instructions. I installed the 4.1.25 BerkeleyDB from the
> > Oracle site. That looks like the right place to start.
> > 
> > Are you working on a 32-bit Ubuntu system, or 64-bit? I'm working on a 64-bit
> > platform, and I think I'm seeing a few issues to be sorted out (nothing serious,
> > more or less what I'd expect on a plugin that has not be updated in a while):
> > 
> > 
> > [100%] Building C object BerkeleyDbPlugin/CMakeFiles/BerkeleyDbPlugin.dir/home/lewis/squeak/VM/src/plugins/BerkeleyDbPlugin/Berk
> > eleyDbPlugin.c.o
> > /home/lewis/squeak/VM/src/plugins/BerkeleyDbPlugin/BerkeleyDbPlugin.c: In function \xe2\x80\x98dbValueOf\xe2\x80\x99:
> > /home/lewis/squeak/VM/src/plugins/BerkeleyDbPlugin/BerkeleyDbPlugin.c:100:9: warning: cast to pointer from integer of different
> > size [-Wint-to-pointer-cast]
> >  return (Database *) (oop + 4);
> >         ^
> > 
> > I may not have time to really look at this for a few days, but I think if
> > we can get the plugin working on the older BerkeleyDB version, then the
> > updates should be straightforward from there.
> > 
> > Thanks also for setting up https://github.com/pdebruic/BerkeleyDBPlugin
> > 
> > Dave
> > 
> > 
> > On Mon, Apr 13, 2015 at 08:44:22AM -0700, Paul DeBruicker wrote:
> >> Hi Dave,
> >> 
> >> I've made a repository here:  https://github.com/pdebruic/BerkeleyDBPlugin and added you as a collaborator.  I have not yet made any changes in the files from the .sar.
> >> 
> >> 
> >> I did find that if I used version 4.1.25 then things compiled without the errors I posted yesterday and a VM was made. So I think we need to start with older versions of BerkeleyDB, which apt doesn't have.  I did not yet try the other 4.x versions and I'm not sure which would be best to use.  
> >> 
> >> The 4.x versions are available here: http://www.oracle.com/technetwork/database/database-technologies/berkeleydb/downloads/index-082944.html.
> >> 
> >> They include install directions and C API documentation accessible from the  docs/index.html file once you've extracted the download.  Once unzipped the install steps were:
> >> 
> >> cd build_unix
> >> ../dist/configure
> >> make
> >> sudo make install
> >> 
> >> 
> >> Thanks for taking a look
> >> 
> >> 
> >> Paul
> >> 
> >> 
> >> 
> >> On Apr 13, 2015, at 8:01 AM, David T. Lewis <lewis at mail.msen.com> wrote:
> >> 
> >>> Hi Paul,
> >>> 
> >>> I'm sure we'll want to put the source in Subversion at some point, but
> >>> github might be a good way to get started. I am dtlewis290 on github.
> >>> 
> >>> I have not actually installed berkeley DB on my ubuntu PC yet. Should I
> >>> just apt-get it from ubuntu, or is there a particular version that I
> >>> should try to use?
> >>> 
> >>> Thanks!
> >>> 
> >>> Dave
> >>> 
> >>> 
> >>>> 
> >>>> Hi David,
> >>>> 
> >>>> I followed your instructions and made some headway in getting the plugin
> >>>> compiled. The changes are on SquaeakSource.  I think I have now hit some
> >>>> errors that will necessitate making changes to the sqBerkeleyDbPlugin.c
> >>>> file in the .sar.
> >>>> 
> >>>> Where should I save/share those changes?
> >>>> 
> >>>> I'm ambivalent and will put it on github if you are too.
> >>>> 
> >>>> I'm using 32 bit ubuntu 14.04.  I think the current Big problem is that
> >>>> the
> >>>> plugin was written for BerkeleyDB version 4.???.  I've been trying to
> >>>> compile it against version 6.1, because its the current stable installed
> >>>> by
> >>>> apt-get.  Maybe the API has changed.  I'll download and try some of the
> >>>> 4.x
> >>>> libraries to see.
> >>>> 
> >>>> The current set of errors are pasted below.
> >>>> 
> >>>> I've got about an hour a week I want to spend on this so there is no rush
> >>>> on
> >>>> my end for Progress.
> >>>> 
> >>>> 
> >>>> Thanks for taking a look
> >>>> 
> >>>> 
> >>>> Paul
> >>>> 
> >>>> 
> >>>> 
> >>>> 
> >>>> 
> >>>> Scanning dependencies of target BerkeleyDbPlugin
> >>>> [ 77%] Building C object
> >>>> BerkeleyDbPlugin/CMakeFiles/BerkeleyDbPlugin.dir/home/deploy/src/trunk/src/plugins/BerkeleyDbPlugin/BerkeleyDbPlugin.c.o
> >>>> /home/deploy/src/trunk/src/plugins/BerkeleyDbPlugin/BerkeleyDbPlugin.c: In
> >>>> function ???initialiseModule???:
> >>>> /home/deploy/src/trunk/src/plugins/BerkeleyDbPlugin/BerkeleyDbPlugin.c:141:2:
> >>>> warning: passing argument 1 of ???sqDbInit??? from incompatible pointer
> >>>> type
> >>>> [enabled by default]
> >>>> return sqDbInit(sqDbMalloc);
> >>>> ^
> >>>> In file included from
> >>>> /home/deploy/src/trunk/src/plugins/BerkeleyDbPlugin/BerkeleyDbPlugin.c:37:0:
> >>>> /home/deploy/src/trunk/platforms/Cross/plugins/BerkeleyDbPlugin/BerkeleyDbPlugin.h:13:5:
> >>>> note: expected ???void * (*)(size_t)??? but argument is of type ???void *
> >>>> (*)(sqInt)???
> >>>> int sqDbInit(void *(*sq_malloc)(size_t size) );
> >>>>    ^
> >>>> [ 80%] Building C object
> >>>> BerkeleyDbPlugin/CMakeFiles/BerkeleyDbPlugin.dir/home/deploy/src/trunk/platforms/Cross/plugins/BerkeleyDbPlugin/sqBerkeleyDatabase.c.o
> >>>> /home/deploy/src/trunk/platforms/Cross/plugins/BerkeleyDbPlugin/sqBerkeleyDatabase.c:
> >>>> In function ???sqDbOpen???:
> >>>> /home/deploy/src/trunk/platforms/Cross/plugins/BerkeleyDbPlugin/sqBerkeleyDatabase.c:134:3:
> >>>> warning: passing argument 2 of ???dbp->open??? from incompatible pointer
> >>>> type
> >>>> [enabled by default]
> >>>>  DBCALL(dbp->open(dbp,fname,NULL,DB_BTREE,flags,0664); free(fname));
> >>>>  ^
> >>>> /home/deploy/src/trunk/platforms/Cross/plugins/BerkeleyDbPlugin/sqBerkeleyDatabase.c:134:3:
> >>>> note: expected ???struct DB_TXN *??? but argument is of type ???char *???
> >>>> /home/deploy/src/trunk/platforms/Cross/plugins/BerkeleyDbPlugin/sqBerkeleyDatabase.c:134:3:
> >>>> warning: passing argument 4 of ???dbp->open??? makes pointer from integer
> >>>> without a cast [enabled by default]
> >>>> /home/deploy/src/trunk/platforms/Cross/plugins/BerkeleyDbPlugin/sqBerkeleyDatabase.c:134:3:
> >>>> note: expected ???const char *??? but argument is of type ???int???
> >>>> /home/deploy/src/trunk/platforms/Cross/plugins/BerkeleyDbPlugin/sqBerkeleyDatabase.c:134:3:
> >>>> error: too few arguments to function ???dbp->open???
> >>>> make[2]: ***
> >>>> [BerkeleyDbPlugin/CMakeFiles/BerkeleyDbPlugin.dir/home/deploy/src/trunk/platforms/Cross/plugins/BerkeleyDbPlugin/sqBerkeleyDatabase.c.o]
> >>>> Error 1
> >>>> make[1]: *** [BerkeleyDbPlugin/CMakeFiles/BerkeleyDbPlugin.dir/all] Error
> >>>> 2
> >>>> make: *** [all] Error 2
> >>>> 
> >>>> 
> >>>> 
> >>>> 
> >>>> 
> >>>> David T. Lewis wrote
> >>>>> Hi Paul,
> >>>>> 
> >>>>> Thanks for doing this. I don't have time to really check it out right
> >>>>> now, but I did load your code from the new repository and I was able
> >>>>> to generate the C source with no problem (see attached).
> >>>>> 
> >>>>> I'll follow up on this in a few days, but at first glance it looks fine.
> >>>>> 
> >>>>> FYI, I'm using VMMaker trunk (load update-dtl.16.mcm), then "VMMakerTool
> >>>>> forUnix"
> >>>>> to open the VMM tool, then drag the BerkeleyDbPlugin from "Plugins not
> >>>>> built"
> >>>>> over to the "External Plugins" pane, then Generate Entire.
> >>>>> 
> >>>>> For platforms source, I used the sources from the original SAR and put
> >>>>> the header file in platforms/Cross/plugins/BerkeleyDbPlugin/ and the C
> >>>>> file in platforms/unix/plugins/BerkeleyDbPlugin/. I don't know if that's
> >>>>> right, but it works for generating the C code.
> >>>>> 
> >>>>> Dave
> >>>>> 
> >>>>> 
> >>>>> On Sun, Apr 05, 2015 at 08:50:36AM -0700, Paul DeBruicker wrote:
> >>>>>> 
> >>>>>> Hi David,
> >>>>>> 
> >>>>>> I made the project on SqueakSource.   The repo is here:
> >>>>>> 
> >>>>>> 
> >>>>>> MCHttpRepository
> >>>>>>   location: 'http://www.squeaksource.com/BerkeleyDB'
> >>>>>>   user: ''
> >>>>>>   password: ''
> >>>>>> 
> >>>>>> 
> >>>>>> When attempting to generate the plugin as an external plugin the error
> >>>>>> shown
> >>>>>> in the VMMaker window is:
> >>>>>> 
> >>>>>> warning, variable simulator doesn't exist or has already been removed
> >>>>>> failed to inline getErrorMessage: as it contains unrenamable C
> >>>>>> declarations
> >>>>>> or C code
> >>>>>> warning, signature of InterpreterProxy>>instantiateClass:indexableSize:
> >>>>>> does
> >>>>>> not match reference implementation.
> >>>>>> external plugin BerkeleyDbPlugin generated as BerkeleyDbPlugin
> >>>>>> 5 April 2015 9:00:18 am
> >>>>>> 
> >>>>>> 
> >>>>>> Are these warnings/errors serious?  Is the next step to get rid of
> >>>>>> them?
> >>>>>> 
> >>>>>> Thanks
> >>>>>> 
> >>>>>> Paul
> >>>>>> 
> >>>>>> 
> >>>>>> 
> >>>>>> 
> >>>>>> David T. Lewis wrote
> >>>>>>> I am assuming that this is "Berkeley DB Plugin" on SqueakMap, written
> >>>>>> by
> >>>>>>> Stephen Pair
> >>>>>>> and licensed SqueakL, and therefore OK to include in the VM.
> >>>>>>> 
> >>>>>>> The SAR file contains the platforms sources and some hints as to
> >>>>>> handle
> >>>>>> it
> >>>>>>> in a makefile.
> >>>>>>> 
> >>>>>>> I expect that this plugin could be brought back to life with a bit of
> >>>>>>> effort.
> >>>>>>> It also looks like something that might best be maintained outside of
> >>>>>>> VMMaker
> >>>>>>> so that the interested parties can update it as they please.
> >>>>>>> 
> >>>>>>> How about if we put the Smalltalk part of the plugin into a new
> >>>>>> project
> >>>>>> on
> >>>>>>> squeaksource.com? Paul DeBruicker, Stephen Pair, Eliot and I all have
> >>>>>>> accounts
> >>>>>>> on that server already, so it would be easy to put it there.
> >>>>>>> 
> >>>>>>> The Berkeley db library has a lot of history, and I don't know what
> >>>>>> the
> >>>>>>> current
> >>>>>>> runtimes would be on a modern unix/linux/osx platform. The
> >>>>>>> http://www.sleepycat.com
> >>>>>>> site redirects to Oracle now, which does not seem encouraging.
> >>>>>> Current
> >>>>>>> licensing
> >>>>>>> seems to be explained at http://en.wikipedia.org/wiki/Berkeley_DB.
> >>>>>>> 
> >>>>>>> Dave
> >>>>>>> 
> >>>>>>> On Sun, Mar 29, 2015 at 08:50:51AM -0700, Eliot Miranda wrote:
> >>>>>>>> 
> >>>>>>>> D'u have the smalltalk source or just the generated C code?  And I
> >>>>>> what
> >>>>>>>> VM build environment do you want to work?
> >>>>>>>> 
> >>>>>>>> Eliot (phone)
> >>>>>>>> 
> >>>>>>>> On Mar 29, 2015, at 7:46 AM, Paul DeBruicker &lt;
> >>>>>> 
> >>>>>>> pdebruic@
> >>>>>> 
> >>>>>>> &gt; wrote:
> >>>>>>>> 
> >>>>>>>>> 
> >>>>>>>>> Hi -
> >>>>>>>>> 
> >>>>>>>>> I've posted Steven Pair's  BerkeleyDB plugin .sar file to dropbox
> >>>>>> here:
> >>>>>>>>> 
> >>>>>>>>> 
> >>>>>>>>> https://dl.dropboxusercontent.com/u/4460862/BerkeleyDB.sar
> >>>>>>>>> 
> >>>>>>>>> 
> >>>>>>>>> 
> >>>>>>>>> I'd like to get it to compile (on linux...), and also to modify it
> >>>>>> to
> >>>>>>>> work with the LMDB (http://symas.com/mdb/). According to the LMDB
> >>>>>> docs
> >>>>>> it
> >>>>>>>> should be pretty straightforward to port something from BerkeleyDB.
> >>>>>>>>> 
> >>>>>>>>> From examining the .sar it looks like the plugin hasn't been
> >>>>>>>> edited/compiled since December 2002.
> >>>>>>>>> 
> >>>>>>>>> Is there a guide for bringing old plugins up to date?  IF not what
> >>>>>>>> should I expect to have to change to get it working?
> >>>>>>>>> 
> >>>>>>>>> Thanks
> >>>>>>>>> 
> >>>>>>>>> Paul
> >>>>>> 
> >>>>>> 
> >>>>>> 
> >>>>>> 
> >>>>>> 
> >>>>>> --
> >>>>>> View this message in context:
> >>>>>> http://forum.world.st/updating-and-compiling-the-BerkeleyDB-plugin-tp4815915p4817704.html
> >>>>>> Sent from the Squeak VM mailing list archive at Nabble.com.
> >>>>> 
> >>>>> 
> >>>>> BerkeleyDbPlugin.c (20K)
> >>>>> &lt;http://forum.world.st/attachment/4817710/0/BerkeleyDbPlugin.c&gt;
> >>>> 
> >>>> 
> >>>> 
> >>>> 
> >>>> 
> >>>> --
> >>>> View this message in context:
> >>>> http://forum.world.st/updating-and-compiling-the-BerkeleyDB-plugin-tp4815915p4819198.html
> >>>> Sent from the Squeak VM mailing list archive at Nabble.com.


More information about the Vm-dev mailing list