[argyllcms] Re: ArgyllCMS build system
- From: "Hal V. Engel" <hvengel@xxxxxxxxxxx>
- To: argyllcms@xxxxxxxxxxxxx
- Date: Sun, 30 Dec 2007 21:47:05 -0800
Gerhard Fuernkranz wrote:
> Graeme Gill wrote:
>> I'm under the impression that there aren't currently great
>> differences between Argyll and what lprof is using. I think
>> they're currently tracking my releases reasonably closely.
>> I'm happy to make any minor changes to ease the tracking.
For the most part the changes made to the ArgyllCMS code by LProf are small
and fairly trivial. All of the places were there are changes have been
documented in LProf CVS (as required by GPLv3) and these are limited to 8
files. I would be happy to get details of these mods to Graeme so that he
can either modfiy his code so that the mods are not nessesary or he can let
me know if there is a better way to handle these issues.
The biggest single mod is related to differences in the UI between LProf and
ArgyllCMS and how this impacts error handling. That is, it is sort of OK to
dump users out to a command prompt on an error in a CLI program but not a GUI
app. So I have modified numsup.c to allow LProf to trap errors to prevent
this from happening. A more generalized fix to this issue would likely
involve a significant amount of work but if Graeme is working on a non-GPL
GUI version he will need to do this at some point in any case.
Most of the other mods are small. One set is related to a Qt naming conflict
and most of the others are related to decoupling the code or preventing
compile errors in the LProf build environment. It only takes me a few hours
to mod a new version of the code when there is a ArgyllCMS release.
Graeme - I will sent you a list of mods off list in the next few days. And if
any of these can be fixed so that LProf does not have to mod the code then
that makes me a happy camper and I would be even happier if I did not have to
mod the code at all.
> IMO one of the major problems is that the various Argyll libraries seem
> to be considered "internal interfaces" only. These interfaces are not
> stable and may change with each new version of Argyll, and they are
> obviously neither guaranteed to be ABI nor API compatible with the
> previous versions. So there will always be a strict 1:1 version
> dependency between Argyll and a particular application (like lprof)
> which uses Argyll libraries, and different applications may require
> different versions of Argyll as prerequisite.
This is the main issue. I am not sure if this will always be true but I
don't expect it to change any time soon.
> I see the following ways to address this:
> 1) each application continues to include its own copy of the required
> Argyll modules and links them statically (as lprof currently does)
> 2) or the Linux distributions must provide multi-instance capable
> packages for Argyll, so that several version of Argyll can be installed
> on the system at the same time, as prerequisites for different Argyll
> applications which require a different version of Argyll as prerequisite.
I am not sure how feasable this is. One other issue is that because the
ArgyllCMS libraries are "internal interfaces" it is difficult to identify and
isolate what is in fact a logical library unit (IE. a unit that only
implements a specific set of functionality).
In addition the libraries and the ArgyllCMS applications that use them are
often very tightly coupled and it is not uncommon when inspecting the
ArgyllCMS code to find that the API for a given set of functionality is
spread between the "library" and the actual applications or spread across
what should be several discreet libraries. The error handling routines in
numlib.c is one example (there are even comments in the code saying it should
be seperated out).
> 3) or future Argyll version would need to provide library interfaces
> which are strictly backwards compatible (API, but also ABI, due to
> shared libraries) with previous versions. But IMO this is likely a big
> restriction for Graeme, as it may prevents flexible design changes (I
> understand that there were good reasons for all incompatible changes
> which happened in the past).
I think that the ArgyllCMS code needs to mature significantly before it even
becomes feasable for Graeme to consider this.
> Regards,
> Gerhard
Digikam currently uses a forked version of the base LProf library. I suspect
that they forked it back during the time when LProf was an orphan and that
they have not gotten around to seperating it back out. Currently LProf
statically links this library but it is API stable at this point and it would
be a simple matter to make it a shared library that could be used by other
applications such as Digikam. I think that the Digikam fork of this code may
be significantly different from the library curretly being used by LProf
since we have added new functionality but I suspect that the specific calls
they are using are likely unchanged and that it would require very little
work for them to use a shared version of this library.
LProf CVS currently contains a forked version of LCMS as well. I have offered
to help Marti integrate the changes in the fork back into LCMS but I don't
expect this to happen any time soon. This change is non-trivial but involves
functionality that would only be used by profiling software. At some point
I would like to figure out how to seperate this functionality from LCMS but I
suspect that LCMS would still need some mods to make this possible but if
this were possible it would allow LProf and other apps to create tags that
are unsupported by the LCMS library.
Hal
Other related posts: