Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Bug#989958: libopencv-*-dev: Missing pkg-config file (.pc)

64 views
Skip to first unread message

Alejandro Colomar

unread,
Jun 16, 2021, 11:40:03 AM6/16/21
to
Package: libopencv-core-dev
Version: 4.5.1+dfsg-4
Severity: important
Tags: upstream
X-Debbugs-Cc: alx.ma...@gmail.com

Dear Maintainer,

This bug actually does apply to all of the *-dev libopencv packages.

None of them contain the needed pkg-conig files for their use, making
necessary to install 'libopencv', and making useless the separation into
smaller packages.

If you can't install that file in every binary package, you may
create a new binary package that only contains the .pc file,
let's say libopencv-pc, and make all packages depend on it.


Thanks,

Alex


-- System Information:
Debian Release: 11.0
APT prefers unstable
APT policy: (500, 'unstable'), (1, 'experimental')
Architecture: amd64 (x86_64)

Kernel: Linux 5.10.0-6-amd64 (SMP w/16 CPU threads)
Kernel taint flags: TAINT_WARN
Locale: LANG=C, LC_CTYPE=C.UTF-8 (charmap=UTF-8), LANGUAGE not set
Shell: /bin/sh linked to /usr/bin/dash
Init: systemd (via /run/systemd/system)
LSM: AppArmor: enabled

Versions of packages libopencv-core-dev depends on:
ii libopencv-core4.5 4.5.1+dfsg-4
ii libtbb-dev 2020.3-1
ii zlib1g-dev 1:1.2.11.dfsg-2

libopencv-core-dev recommends no packages.

libopencv-core-dev suggests no packages.

-- no debconf information

Alejandro Colomar (man-pages)

unread,
Jun 21, 2021, 11:40:04 AM6/21/21
to
Hi Jochen,

On 6/21/21 2:33 PM, Jochen Sprickerhof wrote:
> Control: severity -1 wishlist
>
> Hi Alejandro,
>
> * Alejandro Colomar <alx.ma...@gmail.com> [2021-06-16 17:31]:
>> None of them contain the needed pkg-conig files for their use, making
>> necessary to install 'libopencv', and making useless the separation into
>> smaller packages.
>
> You don't need to use pkg-config to build against an OpenCV module, just
> running gcc with the flags you need will work. Adjusting severity
> accordingly.
>

I had some thoughts about this after sending the email.
The problem in the first place is that opencv doesn't provide separate
pkg-config files for every module.

Maybe Debian could write separate pkg-config files, and maybe offer them
to upstream OpenCV (I offer myself to help write them if you decide it's
a good idea).

Yes, for linking against the shared libraries, that's all you need: link
against the module you want. BUT, if you want to try to link against
the static library (and now I'm talking from memory (it's been a year
since I tried to do that, and I don't remember the result, I only
remember a bunch of errors)), you'll need to know which libraries you
need, which is the magic of pkg-config.

>> If you can't install that file in every binary package, you may
>> create a new binary package that only contains the .pc file,
>> let's say libopencv-pc, and make all packages depend on it.
>
> This sounds overly complicated to me. I think we should move all
> development files into one libopencv-dev if we want to fix this.
> But that's choice of the maintainers.
Moving everything into libopencv-dev would create a very big package
when developers may not need all of opencv (I for example only depend on
a few modules to build my programs). One thing that I love of Debian
packages is that they tend to be very modular compared to other distros.
Please don't put everything in one single pkg :-).

Thanks!

Cheers,

Alex

--
Alejandro Colomar
Linux man-pages comaintainer; https://www.kernel.org/doc/man-pages/
http://www.alejandro-colomar.es/

Jochen Sprickerhof

unread,
Jun 21, 2021, 1:40:04 PM6/21/21
to
Control: severity -1 wishlist

Hi Alejandro,

* Alejandro Colomar <alx.ma...@gmail.com> [2021-06-16 17:31]:
>None of them contain the needed pkg-conig files for their use, making
>necessary to install 'libopencv', and making useless the separation into
>smaller packages.

You don't need to use pkg-config to build against an OpenCV module, just
running gcc with the flags you need will work. Adjusting severity
accordingly.

>If you can't install that file in every binary package, you may
>create a new binary package that only contains the .pc file,
>let's say libopencv-pc, and make all packages depend on it.

This sounds overly complicated to me. I think we should move all
development files into one libopencv-dev if we want to fix this.
But that's choice of the maintainers.

Cheers Jochen
signature.asc

Jochen Sprickerhof

unread,
Jun 21, 2021, 2:50:02 PM6/21/21
to
* Alejandro Colomar (man-pages) <alx.ma...@gmail.com> [2021-06-21 17:35]:
>Maybe Debian could write separate pkg-config files, and maybe offer
>them to upstream OpenCV (I offer myself to help write them if you
>decide it's a good idea).

It's easier if you talk to upstream about this directly. Adding them to
Debian only would be incompatible with other distros and be of limited
use.

>Yes, for linking against the shared libraries, that's all you need:
>link against the module you want. BUT, if you want to try to link
>against the static library (and now I'm talking from memory (it's been
>a year since I tried to do that, and I don't remember the result, I
>only remember a bunch of errors)), you'll need to know which libraries
>you need, which is the magic of pkg-config.

Static linking should work fine without pkg-config as well, except that
you would have to list all dependencies, but looking at the opencv4.pc I
guess they are incomplete anyhow ;).

Cheers Jochen
signature.asc

Alejandro Colomar (man-pages)

unread,
Jul 3, 2021, 1:20:03 PM7/3/21
to
Hi Jochen,

On 6/21/21 8:43 PM, Jochen Sprickerhof wrote:
> * Alejandro Colomar (man-pages) <alx.ma...@gmail.com> [2021-06-21
> 17:35]:
>> Maybe Debian could write separate pkg-config files, and maybe offer
>> them to upstream OpenCV (I offer myself to help write them if you
>> decide it's a good idea).
>
> It's easier if you talk to upstream about this directly. Adding them to
> Debian only would be incompatible with other distros and be of limited use.

It seems that they decided long ago to drop support for pkg-config
files. See
<https://github.com/opencv/opencv/issues/20269#event-4970006284> and
<https://github.com/opencv/opencv/issues/13154>

Their only response is "consider using cmake's `find_package()`", which
is not an option for me, and BTW not an option also in many other
important projects.

What should we do about it? Maintain our pkg-config files in Debian?

>
>> Yes, for linking against the shared libraries, that's all you need:
>> link against the module you want.  BUT, if you want to try to link
>> against the static library (and now I'm talking from memory (it's been
>> a year since I tried to do that, and I don't remember the result, I
>> only remember a bunch of errors)), you'll need to know which libraries
>> you need, which is the magic of pkg-config.
>
> Static linking should work fine without pkg-config as well, except that
> you would have to list all dependencies, but looking at the opencv4.pc I
> guess they are incomplete anyhow ;).

Yep, I meant that it's insane adding all of the -l... manually. That's
the "magic" of pkg-config :).

>
> Cheers Jochen

Jochen Sprickerhof

unread,
Jul 21, 2021, 11:40:04 AM7/21/21
to
Hi Alejandro,

* Alejandro Colomar (man-pages) <alx.ma...@gmail.com> [2021-07-03 19:13]:
>It seems that they decided long ago to drop support for pkg-config
>files. See
><https://github.com/opencv/opencv/issues/20269#event-4970006284> and
><https://github.com/opencv/opencv/issues/13154>
>
>Their only response is "consider using cmake's `find_package()`", which
>is not an option for me, and BTW not an option also in many other
>important projects.

I talked to them and the agreed to accept patches if the pkg-config
files are generated automatically. Would you be interested to provide a
patch? There is some code in PCL for this you could borrow, maybe.

>What should we do about it? Maintain our pkg-config files in Debian?

I think that would be to big of a patch.

Cheers Jochen
signature.asc

Alejandro Colomar (man-pages)

unread,
Jul 25, 2021, 3:50:03 PM7/25/21
to
Hi Jochen,

On 7/21/21 5:32 PM, Jochen Sprickerhof wrote:
> Hi Alejandro,
>
> * Alejandro Colomar (man-pages) <alx.ma...@gmail.com> [2021-07-03
> 19:13]:
>> It seems that they decided long ago to drop support for pkg-config
>> files.  See
>> <https://github.com/opencv/opencv/issues/20269#event-4970006284> and
>> <https://github.com/opencv/opencv/issues/13154>
>>
>> Their only response is "consider using cmake's `find_package()`", which
>> is not an option for me, and BTW not an option also in many other
>> important projects.
>
> I talked to them and the agreed to accept patches if the pkg-config
> files are generated automatically. Would you be interested to provide a
> patch? There is some code in PCL for this you could borrow, maybe.

Hmmm, I'd like to, but I have zero idea of cmake (I guess they want to
autogenerate it with cmake), so I'm not sure I could do that.

>
>> What should we do about it?  Maintain our pkg-config files in Debian?
>
> I think that would be to big of a patch.

Yes. What is Fedora doing? Do you know?

Jochen Sprickerhof

unread,
Jul 25, 2021, 5:40:03 PM7/25/21
to
* Alejandro Colomar (man-pages) <alx.ma...@gmail.com> [2021-07-25 21:38]:
>>I think that would be to big of a patch.
>
>Yes. What is Fedora doing? Do you know?

They provide a opencv.pc:

https://fedora.pkgs.org/rawhide/fedora-x86_64/opencv-devel-4.5.3-1.fc35.x86_64.rpm.html

The opencv4.pc is a symbolic link:

https://src.fedoraproject.org/rpms/opencv/blob/rawhide/f/opencv.spec#_350

Cheers Jochen
signature.asc

Alejandro Colomar (man-pages)

unread,
Jul 26, 2021, 6:40:04 AM7/26/21
to
Hi Nicolas,

I'm adding you to this thread, as you commented on opencv's thread about
pkg-config files.

I'd like to know if you forked opencv's .pc file and are maintaining it,
or if you just renamed it to opencv.pc, or what you decided to do at all.

I've had a lot of problems with their .pc file. The last one being that
it uses -I instead of -isystem so I have a lot of warnings from their code.

I'd like to patch opencv with a correct pc file, but they want it
autogenerated and I don't know cmake... So I'm considering all options
available.

Thanks,

Alex
0 new messages