[Debian-med-packaging] How to make meson accept that `pkg-config --cflags ` has empty result in case only /usr/include is needed

Sergio Durigan Junior sergiodj at debian.org
Thu Sep 13 01:06:44 BST 2018


On Monday, September 10 2018, Andreas Tille wrote:

> Hi Andrey,
>
> On Mon, Sep 10, 2018 at 07:40:45PM +0500, Andrey Rahmatullin wrote:
>> > is correct behaviour and return code is 0.  
>> You are not running this in a minimal chroot.
>> 
>> # pkg-config --cflags pbbam
>> Package zlib was not found in the pkg-config search path.
>> Perhaps you should add the directory containing `zlib.pc'
>> to the PKG_CONFIG_PATH environment variable
>> Package 'zlib', required by 'htslib', not found
>> 
>> I've submitted #908501 against libhts-dev.
>
> Good catch.  Meanwhile I've added zlib1g-dev directly to Build-Depends
> of this package and it turned out that also libhdf5-dev is needed
> (including an according patch for meson.build.  Unfortunately there are
> remaining issues related to hdf5 lib:
>
> ...
> c++ -Iblasr at sha -I. -I.. -I../ -I/usr/include/hdf5/serial -fdiagnostics-color=always -pipe -D_FILE_OFFSET_BITS=64 -std=c++11 -g -O2 -fdebug-prefix-map=/build/libblasr-5.3.1=. -fstack-protecto
> In file included from ../hdf/HDFAtom.cpp:1:
> ../hdf/HDFAtom.hpp: In member function ‘int HDFAtom<T>::Initialize(H5::H5File&, const string&, const string&)’:
> ../hdf/HDFAtom.hpp:64:44: error: no matching function for call to ‘HDFGroup::Initialize(H5::H5File&, const string&)’
>          group.Initialize(hdfFile, groupName);
>                                             ^
> In file included from ../hdf/HDFData.hpp:10,
>                  from ../hdf/HDFAtom.hpp:12,
>                  from ../hdf/HDFAtom.cpp:1:
> ../hdf/HDFGroup.hpp:28:9: note: candidate: ‘int HDFGroup::Initialize(H5::Group&, std::__cxx11::string)’
>      int Initialize(H5::Group& fg, std::string groupName);
>          ^~~~~~~~~~
> ../hdf/HDFGroup.hpp:28:9: note:   no known conversion for argument 1 from ‘H5::H5File’ to ‘H5::Group&’
> ../hdf/HDFGroup.hpp:30:9: note: candidate: ‘int HDFGroup::Initialize(HDFGroup&, std::__cxx11::string)’
>      int Initialize(HDFGroup& parentGroup, std::string groupName);
>          ^~~~~~~~~~
> ../hdf/HDFGroup.hpp:30:9: note:   no known conversion for argument 1 from ‘H5::H5File’ to ‘HDFGroup&’
> ...
>
> Any idea how to fix this?

This can't work.  From the source code:

  class HDFGroup : public HDFAttributable
  {
  public:
      ...

      int Initialize(H5::Group& fg, std::string groupName);

      int Initialize(HDFGroup& parentGroup, std::string groupName);

      ...
  };

But:

  template <typename T>
  class HDFAtom : public HDFData
  {
  public:

      ...
      int Initialize(H5::H5File &hdfFile, const std::string &groupName,
                     const std::string &attributeName)
      {
          HDFGroup group;
          group.Initialize(hdfFile, groupName);
          attribute = group.group.openAttribute(attributeName.c_str());
          isInitialized = true;
          return 1;
      }
      ...


The HDFAtom::Initialize above is calling "group.Initialize" passing an
"H5::H5File&" as the first parameter, but there's no
"H5Group::Initialize (H5::H5File&...)" method declared.  This is a bug.

The code is too cryptic for me understand what the correct solution is
in this case.  There are a few possibilities (creating a HDFFile first,
iterating over the available groups, etc.), but I'm not sure.

I'd report this upstream.

Thanks,

-- 
Sergio
GPG key ID: 237A 54B1 0287 28BF 00EF  31F4 D0EB 7628 65FC 5E36
Please send encrypted e-mail if possible
http://sergiodj.net/
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 832 bytes
Desc: not available
URL: <http://alioth-lists.debian.net/pipermail/debian-med-packaging/attachments/20180912/4e750843/attachment.sig>


More information about the Debian-med-packaging mailing list