[kepler-users] Advice on proper handling of platform specific binary libraries

Daniel Crawl crawl at sdsc.edu
Fri Jun 25 13:44:20 PDT 2010


Hi Tom,

I like approach #1 since it provides better encapsulation
than the other approaches.

The build system can be updated to do this. However, I only
have access to a small number of platforms, so if I send
you my updates, are you willing to test them?

Thanks,

   --dan

On 6/25/10 8:48 AM, Thomas M. Parris wrote:
> [I sent the following to Kepler-Dev last week.  But it probabably got lost
> in the flurry of work surrounging the 2.0 release (congrats!).  So, I'm
> resending this slightly edited version to Kepler-Users. -- Tom]
>
> Greetings Keplerites:
>
> I could use some advice/pointers an the proper way to handle distribution of
> platform specific binary libraries through the Keple build system for a
> local workgrop module.
>
> Background:
> 1. We have succesfully integrated our own local module (isciences) and
> associated svn repository into the Kepler build process.  It works very
> well.  Developers can post new/updated actors and everyone else gets them
> (along with any other Kepler updates) when they "ant run"
>
> 2. Some of our actors make use of JNI to connect to legacy code (e.g.,
> GDAL).  This worked really well when we were all on Windows 32 bit
> platforms.  We just stuck the DLLs in the lib directory, added them to the
> svn repository, and then we were off and running.
>
> 3. Now we have a mix of Windows 32 and 64 bit platforms and (to my
> knowledge) different JNI DLLs need to be built for each platform.  We can do
> this.  But it's not clear to me how best to handle the file layout.
>
> Query:
> 1. How to we set this up so the build process is both seamless for users on
> both platforms and transparent to the code for our actors?
>
> 2. Possible Approach #1: We can create subdirectories in the lib directory
> for each platform (e.g., Win32, Win64, MacOS, ...).  But then we need some
> mechanism to tell the build process to link with one subdriectory versus
> another based on the user's platform.  Is there an easy way to do this with
> the current build system?
>
> 3. Possible Approach #2: We create multiple versions of our module for each
> platform (e.g., isciencesW32, isciencesW64, ...) and have the user specify
> the one they want to use based on their platform in .  This seems like an
> admin nightmare because it requires keeping the code base in multiple
> repostories in sync when the only difference is the contents of the lib
> directory.
>
> 4. Possible Approach #3: We create multiple versions of a local library
> module in addition to a core module for our actors.  In this case, we might
> create modules for GDAL that contain just the lib directories built for that
> plaform (e.g., GDAL_Win32, GDAL_Win64, ...) in addition to our module for
> actors coded in Java.  In this case, the modules.txt file would look
> something like:
>
> 	isciences svn+ssh://localhost/localpath
> 	GDAL_Win32 svn+ssh://localhost/localpath
> 	*kepler
>
> This would solve at least a portion of the administrative hassles with #3
> above (though I think we would still need isciences32 and isciences64
> "wrapper" modules that only contain the proper modules-txt data).
>
> I'm probably missing something obvious, and would welcome any suggestions,
> pointers, examples of how others have addressed this issue.
>
> Many thanks,
> Tom
> ----------------------------------------------------
> Thomas M. Parris
> Vice President
> ISciences, LLC
> ----------------------------------------------------
>
> _______________________________________________
> Kepler-users mailing list
> Kepler-users at kepler-project.org
> http://mercury.nceas.ucsb.edu/kepler/mailman/listinfo/kepler-users
>
>    




More information about the Kepler-users mailing list