[Opensim-dev] Package manager

James Hughes jamesh at bluewallgroup.com
Sun Dec 28 20:38:22 UTC 2014


I added support for pulling packages from remote repositories to Robust
some time ago. It places the dll in a specified location and also pulls
a default configuration. 

-BlueWall 

On Sat, 2014-12-27 at 15:33 -0800, Diva Canto wrote:
> Warning: long mail.
> 
> On 12/23/2014 3:53 PM, Mic Bowman wrote:
> > Figuring out how to make an easily installable opensim package (and 
> > package manager) seems like a better use of the time in the long run. 
> 
> I still think that the dispatcher should go to core, but let me switch 
> to this other issue: package manager.I really need one, so I took some 
> time to look at what we already have, and see what's missing.We're much 
> closer than I thought.
> 
> It looks like the configuration code is already accounting for the 
> existence of .ini files under
> addon-modules/*/config/*.ini
> (This comes from the last line in OpenSimDefaults.ini)
> 
> Great.
> 
> ---
> 
> Unfortunately,dlls are still assumed to be all in bin itself, which is 
> clumsy when we start using 3rd party modules.There's an easy fix for 
> this. Mono addins accounts for the specification of more folders to look 
> for dlls [1]. Specifically, if we add a file .addins in bin with this:
> 
> <Addins>
>       <Directory include-subdirs="true">addon-modules</Directory>
> </Addins>
> 
> This will make mono addins look for dlls [also] in the addon-modules 
> folder and subfolders, which is great for separating core from 3rd party 
> code.(It works too, I tested it)
> 
> Unfortunately, it doesn't solve the whole thing, and the next point 
> subsumes this one.
> 
> ---
> 
> That doesn't solve the whole thing, because many times the region 
> modules depend on external libraries that also need to be loaded by the 
> .Net runtime. .Net accounts for the specification of additional 
> directories under the directory where the .exe is [2]. If we add this in 
> OpenSim.exe.config, the assemblies in the privatePath will be loaded:
> 
>    <runtime>
>      <loadFromRemoteSources enabled="true" />
>      <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
>         <probing privatePath="addon-modules/MyPackage/bin"/>
>      </assemblyBinding>
>      <gcConcurrent enabled="true" />
>      <gcServer enabled="true" />
>    </runtime>
> 
> Unfortunately, .Net doesn't seem to understand wild cards in the 
> <probing> element, so the installation procedure will need to edit this 
> <probing> element and add the new directory explicitly to the 
> privatePath, with semi-colon in between, which is not very nice. But 
> that's Windows philosophy, I guess...
> 
> In any case, I tested this, and if we set this privatePath properly, 
> both mono addins ans .Net itself will load assemblies from those paths, 
> so both the region modules and their dependent dlls will be loaded.
> 
> ---
> 
> Once the assembly path is in place, it will be straightforward to define 
> OpenSim packages that are are laid out like this:
> 
> MyPackage/
>    bin/
>      dlls
>    config/
>      one or more .ini
>    resources/
>      module-specific stuff can go here
> 
> And then the package installer will simply place this package under 
> bin/addon-modules as is.
> 
> Optionally, packages may include the source code too, so a src 
> directory. That one would need to be treated in a special way, and 
> placed under ../addon-modules/MyPackage
> 
> ---
> 
> Now, a more difficult problem is versioning, and I don't have any great 
> solution for it, other than: if a 3rd-party dll loading crashes your 
> opensim, you need to uninstall it and search for a compatible version.
> 
> A slightly better approach would be to look for the AssemblyVersion 
> information of the 3rd party module, and check that it is the same as 
> OpenSim.exe's, and abort the installation when it isn't.
> 
> ---
> 
> Any comments on any of this? I'd like to get started, because I really 
> need this.
> 
> (There's also packages for Robust, but let's start with packages for the 
> simulator, which is already half-way there.)
> 
> ----
> [1] https://github.com/mono/mono-addins/wiki/Add-in-Discovery
> 
> [2] http://msdn.microsoft.com/en-us/library/823z9h8w.aspx
> 
> _______________________________________________
> Opensim-dev mailing list
> Opensim-dev at opensimulator.org
> http://opensimulator.org/cgi-bin/mailman/listinfo/opensim-dev




More information about the Opensim-dev mailing list