[Kolab-devel] Proposal - Distro specific changes for Kolab 3
Aeneas Jaißle
jaissle at sewikom.de
Wed May 29 19:36:40 CEST 2013
Am Freitag, 24. Mai 2013, 11:08:48 schrieb Jeroen van Meeuwen:
> On 2013-05-22 15:36, Aeneas Jaißle wrote:
> > Hi everybody,
> >
>
> Hi Aeneas,
>
> > I'd like to enhance Kolab's distribution support and make live for
> > (us) packagers easier.
> >
> > For that, I put a layer between paths, service names, user and groups
> > (= between all that could differ on another distribution).
> >
> > (...snip...)
> >
> > Is something like this wanted upstream? Would this be the rights way
> > to do (in python)? Feedback welcome!
> >
>
> This is not a bad idea, but I hope you appreciate the following
> considerations;
>
> It is dangerously close to the list of settings that Kolab used to ship
> as part of its kolab.conf.
>
> We have found such lists to become problematic if (when) distributions
> change their ways. "settings_fedora.py" would then need to become
> "settings_for_fedora_before_version_16.py" and
> "settings_for_fedora_after_and_with_version_17.py", if you will.
>
> I would rather consider using "adaptive" code - surely we can test
> whether a system uses systemctl, service or update-rc.d, and whether a
> service name is httpd or apache2. While the current "implementation" [1]
> is rather rudimentary, I would say a couple of if/else clauses could be
> sufficient.
>
> It is a good idea to pull such if/else clauses out of the respective
> setup_*.py scripts, and perhaps make them some sort of utils.service()
> function.
>
> Furthermore, in packaging we have ./configure with options, and
> pykolab/constants.py.in. It is probably better/easier to ./configure
> --with-service-mechanism=systemctl than it is to maintain a list of
> distributions and versions.
>
> Kind regards,
>
> Jeroen van Meeuwen
>
> [1]
> https://git.kolab.org/pykolab/tree/pykolab/setup/setup_roundcube.py#n196
>
>
Hi Jeroen,
so we'd pull the if/else clauses out and put them into a function. In this function we define (in detail) what services, service mechanism etc. to look for.
What about hard-coded paths? E.g. openSUSE is using /etc/apache2/conf.d/ instead of /etc/httpd/conf.d/, /var/lib/sieve/ instead of /var/lib/imap/sieve and so on. What would be the best place to define these?
- Aeneas
More information about the devel
mailing list