Subject: mono-nunit.pc shouldn't symlink to nunit.pc

From: Andrés G. Aragoneses <[email-masked]>
Date: Wed, 8 Jan 2014 21:09:57 +0100

Package: libmono-cil-dev
Version: 2.10.8.1-5

Steps to reproduce:
1. Some developer uses Mono in Debian/Ubuntu and makes a software that
requires NUnit to build.
2. She checks the contents of the file
/usr/lib/pkg-config/mono-nunit.pc in his system, and decides that this
version of nunit is good to be required (i.e. 2.6.0).
3. She goes and places a pkg-config check in his configure.ac,
checking for mono-nunit >= 2.6.0 version.
4. She commits her software to github.
5. Some user finds the software of this developer in gitorious (for
example), he checks it out in his Linux OS, and tries to compile it.
6. Given that the Mono version of his OS is a bit old, he decides to
use mono from git master (so he checks out mono, and compiles it, and
installs it).
7. He then tries to compile the Mono-based software he cloned from
gitorious before.

Expected results:
The configure script should fail and tell him to install NUnit 2.6.0 or above.

Current results:
Configure works, because mono's upstream mono-nunit.pc version has
Mono's version (3.2.7 as of this writing) in it[1], not NUnit's
version, but compilation fails (i.e. because the developer used some
NUnit API that is available in 2.6.0, but not in 2.4.8, which is the
version that mono provides[2]).

[1] https://github.com/mono/mono/blob/master/data/mono-nunit.pc.in
[2] https://github.com/mono/mono/blob/master/mcs/nunit24/CommonAssemblyInfo.cs

The culprit here is the fact that debian's mono packaging logic makes
mono-nunit.pc be a symlink to nunit.pc. If that wasn't the case, this
bug wouldn't exist. Some people in oftc#debian-cli state that the
symlink is to avoid maintaining two versions of a library, which is
fair enough. But then, one could avoid maintaining two versions of
this library by simply not installing mono-nunit.pc instead of making
it symlink to other package's pc file.

One might say that the real bug is mono's upstream: "the version in
mono-nunit.pc shouldn't be mono's version number, but 2.4.8, which is
the version that mono embeds". To that I would reply: "fair enough,
but even if you fix the bug upstream, the harm is already done for all
the mono versions prior to your bugfix, so I think it's also good to
fix this at the packaging level".

The commits that introduced this symlink are:
http://anonscm.debian.org/gitweb/?p=pkg-cli-libs/packages/nunit.git;a=commitdiff;h=87332208
http://anonscm.debian.org/gitweb/?p=pkg-mono/packages/mono.git;a=commitdiff;h=95518558