[Vm-dev] updating and compiling the BerkeleyDB plugin
Paul DeBruicker
pdebruic at gmail.com
Wed Apr 15 02:31:44 UTC 2015
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 <
>>>>>>
>>>>>>> pdebruic@
>>>>>>
>>>>>>> > 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)
>>>>> <http://forum.world.st/attachment/4817710/0/BerkeleyDbPlugin.c>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>> --
>>>> 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