[Vm-dev] InternetConfigPlugin for unix - [WAS]Tips to create a plugin with specific platform dependant stuff

Guillermo Polito guillermopolito at gmail.com
Sun Apr 15 12:37:03 UTC 2012


Bump :)

I've been working last week a bit on the internet plugin to fetch some
system proxy configuration in unix.

Since

- the plugin is external
- it loads gconf libraries using dlopen, so the libraries are not needed
during compilation nor running
- if gconf library is not found, looks at the http-proxy and ftp-proxy env
vars.

It should break nothing :P

But I'm not an expert :/.

What do you think?  Is it worth of integration?

Guille

On Mon, Apr 9, 2012 at 4:38 PM, Guillermo Polito
<guillermopolito at gmail.com>wrote:

> ok,
>
> I did this:
> - configured the plugin as external
> - created
>
> CogFamilyUnixConfig>>configureInternetConfigPlugin: maker
>     super configureInternetConfigPlugin: maker.
>     maker addPlatformSources: #( 'sqUnixInternetConfiguration')
>
> and put the file attached in /platforms/unix/plugins/InternetConfigPlugin.
> I finally used dlopen to load gconf dinamically and check if it is
> available, and if it's not, I check the env vars with getenv().
>
> If someone can do a little review, it would be nice :).
>
> Guille
>
>
> On Sun, Apr 8, 2012 at 9:55 PM, Guillermo Polito <
> guillermopolito at gmail.com> wrote:
>
>> Haha! :)
>>
>> You won me :).  I was about to reply this:
>>
>> "Ok, so I talked with Esteban today :).  And thanks to him I reached the
>> conclussion that this plugin should be external."
>>
>> I'll spend some hours tomorrow to finish it.
>>
>> Now, as I think it happens with the ssl plugin... Where should we put the
>> code and what should I in order to get it easily integrated in the ci
>> buildings? :)
>>
>> Thanks!
>> Guille
>>
>>
>> On Sun, Apr 8, 2012 at 9:46 PM, Igor Stasenko <siguctua at gmail.com> wrote:
>>
>>> On 7 April 2012 17:55, Guillermo Polito <guillermopolito at gmail.com>
>>> wrote:
>>> > Was playing in my weekend on the InternetConfigPlugin for ubuntu.  And
>>> > that's the problem :), It uses gnome2 stuff to access the system
>>> > configuration (because gnome handles it's own configuration... :/).
>>> >
>>> > Now, I made it work doing something like this in vmmaker:
>>> >
>>> > CogFamilyUnixConfig>>configureInternetConfigPlugin: maker
>>> >     "extra rules for InternetConfigPlugin"
>>> >
>>> >     super configureInternetConfigPlugin: maker.
>>> >     maker addDefinitions: '`pkg-config --libs --cflags gtk+-2.0
>>> gconf-2.0`'.
>>> >     maker addExternalLibrary: '/usr/lib/libgconf-2.so.4'.
>>> >     maker addPlatformSources: #( 'sqUnixInternetConfiguration.c').
>>> >
>>> > And adding it in the list of internal plugins for Unix.
>>> >
>>> > But this should only compile and work on a system with gconf and stuff
>>> > installed :).
>>> >
>>> Then don't make this plugin internal, but external instead. Because if
>>> library is missing,
>>> VM will refuse to start. In contrast, if your plugin will be in
>>> external module, then module will refuse to load
>>> if lib is missing.
>>>
>>> > So, how does or should vmmaker and vm building process handle
>>> something like
>>> > this?
>>> >
>>>
>>> The philosophy of CMake configurations is to be concrete and without
>>> conditionals. I.E. they should
>>> not contain "if this, do this, if that do that" , instead if you have
>>> such choice, one should make another configuration.
>>>
>>> There is no way to predict how different is platform on which you
>>> building VM  from platform where it used (especially in case of unix
>>> systems and their numerous flavors). So, what is working on your OS,
>>> could not work on another. That's why i don't see a point to put
>>> conditionals in build process.
>>>
>>> In contrast, if you have a concrete configuration, which says: if you
>>> want to build me, you should have this, this and this, and if you want
>>> to use the built artifact you should have this, this and this
>>> installed, then it makes things much more predictable and
>>> straightforward.
>>>
>>>
>>> > Guille
>>> >
>>> > _______________________________________________
>>> > VM-beginners mailing list
>>> > VM-beginners at lists.squeakfoundation.org
>>> > http://lists.squeakfoundation.org/mailman/listinfo/vm-beginners
>>> >
>>>
>>> --
>>> Best regards,
>>> Igor Stasenko.
>>>
>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.squeakfoundation.org/pipermail/vm-dev/attachments/20120415/ec4a6a72/attachment.htm


More information about the Vm-dev mailing list