[argyllcms] Argyll CMS in Fedora (and Mandriva)

  • From: Nicolas Mailhot <nicolas.mailhot@xxxxxxxxxxx>
  • To: argyllcms@xxxxxxxxxxxxx
  • Date: Wed, 12 Dec 2007 20:23:33 +0100

Hi all,

I've just pushed an Argyll CMS in the Fedora Linux review queue. I had
started packaging it in October, but had given up after several
frustrating days. It took Frédéric Crozat from Mandriva Linux to google
up my work and complete it
http://twinpeaks.dyndns.org/blog/general/2007/12/11/monitor-calibration-epilogue
Otherwise I'd probably still be finding good reasons not to look at it
again.

I am very grateful to Graeme Gill for his work and wouldn't have spent
the time I did if I didn't feel it was worth it. So please do not take
the following bad.



My files are currently there
http://nim.fedorapeople.org/argyllcms/ including :
– the build patch I had to use
http://nim.fedorapeople.org/argyllcms/argyllcms-0.70-build.patch
– my master build script (rpm specfile)
http://nim.fedorapeople.org/argyllcms/argyllcms.spec
– the build logs
http://nim.fedorapeople.org/argyllcms/build.log
– and a set of files to authorise colorimeter access by unprivileged
users
http://nim.fedorapeople.org/argyllcms/argyllcms-0.70-60-color.rules
http://nim.fedorapeople.org/argyllcms/argyllcms-0.70-60-color.perms
http://nim.fedorapeople.org/argyllcms/argyllcms-0.70-10-color.fdi
http://nim.fedorapeople.org/argyllcms/argyllcms-0.70-96-huey-hid-workaround.rules



As can be seen in the files, the main problems we had to workaround
were:

– building against modern modular xorg.
No recent Linux distribution ships X the way Argyll expects it.

– removing the built-in copies of libtiff and libusb and linking against
system dynamic libraries.
This is pretty much a requirement for us – we don't want to audit dozens
of versions of the same library every time a security problem is
reported. (the use of static linking is also borderline, but tolerated
as long as it's internal to one app). Actually linking to libtiff,
libusb and xorg libs should have been done through pkg-config, but I
couldn't figure how to plug it into Jam.

– removing the shell wrappers around Jam invocations.
We want build errors to propagate for rpm to cleanly abort in case of
problems, not hide them and have users report problems later.

– Reworking the build order
The Argyll CMS build process is not a nice DAG, and fails many times as
a matter of course (cycling dependencies, missing install targets, etc).
In an environment such as ours where errors are fatal building required
reworking the "simple" for build loop. Maintaining a different build
order than original Argyll CMS is going to be hard I'm afraid, so we'd
really appreciate if Argyll CMS sources were refactored to allow a
simple error-free build loop.

– sifting through the reference files
We want to preserve timestamps of static files not modified during the
build process, Jam happily mangles them so I had to rewrite the target
that collects reference files. Much to my surprise several were
duplicated in the source tree, sometimes in differing versions.
linear.sp was not installed though I think it's referenced in the doc.

– reworking bin contents
The original process was putting several files that didn't belong in bin
(txt and gam files) and icclink conflicts with Little CMS (I know it's
unfair, that Argyll was first, but Little CMS got itself distributed
everywhere while Argyll's build process scared would-be packagers so
it's too late to claim the command name back)

– changing the system PATH
Part of Argyll's build process expect . to be in the PATH, which is
totally unknown-of in modern Linux land (and warned against in security
classes)



Additionally:

– it is not clear to me if Argyll's licensing is ok. If the spectro bits
are GPLv2 only there is a clear licensing conflict. If they were
originally released as GPLv2 or later there should not be a problem in
slapping a GPLv3 over everything. I'm almost sure Argyll CMS inclusion
will be blocked by fedora-legal till this is clarified.

– Frédéric reports the FORTIFY_SOURCE in modern gcc exposed buffer
overflows. I have not hit them yet, but it'd probably be a good idea to
go over the build logs and fix the problems reported by a recent
compiler such as the one we use in Fedora
http://nim.fedorapeople.org/argyllcms/build.log



I'd be very grateful if as much material from my work as possible was
merged (or done some other better way) so I don't have to patch heavily
the next Argyll CMS release. As a packager, I don't relish patching
upstream sources. I actually loathe it. Please don't force me to do it
again.

Regards,

-- 
Nicolas Mailhot

Other related posts: