Bug#940327: Help needed to detect gtest_main (Was: Bug#940327: convert libpbseq-dev to Architecture: any)

2019-09-16 Thread Andrey Rahmatullin
On Mon, Sep 16, 2019 at 05:38:47PM +0200, Andreas Tille wrote:
> Determining dependency 'gtest_main' with pkg-config executable 
> '/usr/bin/pkg-config'
> PKG_CONFIG_PATH:
> Called `/usr/bin/pkg-config --modversion gtest_main` -> 1
There is no pkgconfig file for gtest_main in the archive.

-- 
WBR, wRAR


signature.asc
Description: PGP signature


Bug#940327: Help needed to detect gtest_main (Was: Bug#940327: convert libpbseq-dev to Architecture: any)

2019-09-16 Thread The Wanderer
On 2019-09-16 at 11:38, Andreas Tille wrote:

> Control: tags -1 pending
> 
> Hi,
> 
> I wanted to upgrade to the latest upstream version in Git[1] where
> upstream has changed the build system.  Its a bit irritating to use
> meson on top of cmake (at least I have never seen this before) and I
> think I have added all needed Build-Depends (locally - not commited
> yet):
> 
> 
> diff --git a/debian/control b/debian/control
> index b4d7424..c5a11fd 100644
> --- a/debian/control
> +++ b/debian/control
> @@ -5,6 +5,10 @@ Section: libs
>  Priority: optional
>  Build-Depends: debhelper-compat (= 12),
> dh-exec,
> +   meson,
> +   pkg-config,
> +   cmake,
> +   googletest,
> zlib1g-dev,
> libhdf5-dev,
> libboost-dev,
> 
> 
> Despite I have added googletest it seems not be found:
> 
> 
> Library rt found: YES
> Configuring LibBlasrConfig.h using configuration
> Program tools/check-formatting found: YES 
> (/build/pbseqlib-5.3.3+dfsg/tools/check-formatting)
> Pkg-config binary for MachineChoice.HOST is cached.
> Determining dependency 'gtest_main' with pkg-config executable 
> '/usr/bin/pkg-config'
> PKG_CONFIG_PATH:
> Called `/usr/bin/pkg-config --modversion gtest_main` -> 1
> 
> CMake binary for MachineChoice.HOST is not cached
> CMake binary missing from cross or native file, or env var undefined.
> Trying a default CMake fallback at cmake
> Trying CMake binary cmake for machine MachineChoice.HOST at ['/usr/bin/cmake']
> Found CMake: /usr/bin/cmake (3.13.4)
> Extracting basic cmake information
> Try CMake generator: auto
> Called `/usr/bin/cmake --trace-expand .` in 
> /build/pbseqlib-5.3.3+dfsg/obj-x86_64-linux-gnu/meson-private/cmake_gtest_main
>  -> 0
>   -- Module search paths:['/', '/opt', '/usr', '/usr/local']
>   -- CMake root: /usr/share/cmake-3.13
>   -- CMake architectures:['x86_64-linux-gnu']
>   -- CMake lib search paths: ['lib', 'lib32', 'lib64', 'libx32', 'share', 
> 'lib/x86_64-linux-gnu']
> Run-time dependency gtest_main found: NO (tried pkgconfig and cmake)
> Looking for a fallback subproject for the dependency gtest_main
> 
> unittest/meson.build:14:0: ERROR: Automatic wrap-based subproject downloading 
> is disabled
> 
> 
> 
> I also tried adding libgtest-dev in addition but this does not change
> the situation.
> 
> Any hint, what to do?

I'm not remotely an expert on any of the tools, systems, or packages
involved, but one thing I notice is that googletest doesn't seem to
install an actual .pc file, just a .pc.in:

$ dlocate gtest.*.pc
googletest:amd64: /usr/src/googletest/googletest/cmake/gtest.pc.in
googletest:amd64: /usr/src/googletest/googletest/cmake/gtest_main.pc.in

(And similar lack of suitable results from apt-file search, et cetera.)


The googletest package description says that it "does not contain a
library to link against, but rather the source code to build the google
test and mock libraries" (which fits with the fact that it isn't a lib*
package).

Typically the .pc file would be in the lib*-dev package, but in this
case, since there isn't a matching lib* package to install, I can easily
see why that might not make sense to do. (If it would, this would
probably be a wishlist item for the googletest package maintainers.)

/usr/share/doc/googletest/README.Debian states that

>> The Google C++ Testing Framework uses conditional compilation for 
>> some things. Because of the C++ "One Definition Rule", gtest and 
>> gmock must be compiled with exactly the same flags as your C++
>> code under test. Because this is hard to manage, upstream no
>> longer recommends using precompiled libraries [1].

>> [1] 
>> http://groups.google.com/group/googletestframework/browse_thread/thread/668eff1cebf5309d

and that

>> If your build system uses CMake, the ExternalProject command can
>> be used to build gtest, then FindGTest can be used to find the
>> built library.

Clearly you need to build gtest before it can be picked up; this might
give some indication of how to go about doing so.

-- 
   The Wanderer

The reasonable man adapts himself to the world; the unreasonable one
persists in trying to adapt the world to himself. Therefore all
progress depends on the unreasonable man. -- George Bernard Shaw



signature.asc
Description: OpenPGP digital signature


Bug#940327: Help needed to detect gtest_main (Was: Bug#940327: convert libpbseq-dev to Architecture: any)

2019-09-16 Thread Andreas Tille
Control: tags -1 pending

Hi,

I wanted to upgrade to the latest upstream version in Git[1] where
upstream has changed the build system.  Its a bit irritating to use
meson on top of cmake (at least I have never seen this before) and I
think I have added all needed Build-Depends (locally - not commited
yet):


diff --git a/debian/control b/debian/control
index b4d7424..c5a11fd 100644
--- a/debian/control
+++ b/debian/control
@@ -5,6 +5,10 @@ Section: libs
 Priority: optional
 Build-Depends: debhelper-compat (= 12),
dh-exec,
+   meson,
+   pkg-config,
+   cmake,
+   googletest,
zlib1g-dev,
libhdf5-dev,
libboost-dev,


Despite I have added googletest it seems not be found:


Library rt found: YES
Configuring LibBlasrConfig.h using configuration
Program tools/check-formatting found: YES 
(/build/pbseqlib-5.3.3+dfsg/tools/check-formatting)
Pkg-config binary for MachineChoice.HOST is cached.
Determining dependency 'gtest_main' with pkg-config executable 
'/usr/bin/pkg-config'
PKG_CONFIG_PATH:
Called `/usr/bin/pkg-config --modversion gtest_main` -> 1

CMake binary for MachineChoice.HOST is not cached
CMake binary missing from cross or native file, or env var undefined.
Trying a default CMake fallback at cmake
Trying CMake binary cmake for machine MachineChoice.HOST at ['/usr/bin/cmake']
Found CMake: /usr/bin/cmake (3.13.4)
Extracting basic cmake information
Try CMake generator: auto
Called `/usr/bin/cmake --trace-expand .` in 
/build/pbseqlib-5.3.3+dfsg/obj-x86_64-linux-gnu/meson-private/cmake_gtest_main 
-> 0
  -- Module search paths:['/', '/opt', '/usr', '/usr/local']
  -- CMake root: /usr/share/cmake-3.13
  -- CMake architectures:['x86_64-linux-gnu']
  -- CMake lib search paths: ['lib', 'lib32', 'lib64', 'libx32', 'share', 
'lib/x86_64-linux-gnu']
Run-time dependency gtest_main found: NO (tried pkgconfig and cmake)
Looking for a fallback subproject for the dependency gtest_main

unittest/meson.build:14:0: ERROR: Automatic wrap-based subproject downloading 
is disabled



I also tried adding libgtest-dev in addition but this does not change
the situation.

Any hint, what to do?

Kind regards

  Andreas.


[1] https://salsa.debian.org/med-team/pbseqlib

-- 
http://fam-tille.de



Bug#940327: convert libpbseq-dev to Architecture: any

2019-09-15 Thread Helmut Grohne
Package: libpbseq-dev
Version: 5.3.1+dfsg-2.1
Tags: patch
User: debian-cr...@lists.debian.org
Usertags: cross-satisfiability
Control: affects -1 + src:blasr src:pbdagcon

The affected package fail to satisfy their cross Build-Depends, because
their dependency on libpbseq-dev is unsatisfiable. In general,
Architecture: all packages can never satisfy cross build dependencies
unless marked Multi-Arch: foreign or annotated :native. In this case,
such a marking would be fatally wrong, because the architecture
constraint would not be passed down to its own dependencies. This is
known as the "multiarch interpreter problem". In general, transitional
packages and metapackages should match the architecture of their
dependencies. Please consider applying the attached patch.

Helmut
diff --minimal -Nru pbseqlib-5.3.1+dfsg/debian/changelog 
pbseqlib-5.3.1+dfsg/debian/changelog
--- pbseqlib-5.3.1+dfsg/debian/changelog2019-02-06 08:02:44.0 
+0100
+++ pbseqlib-5.3.1+dfsg/debian/changelog2019-09-15 20:41:33.0 
+0200
@@ -1,3 +1,10 @@
+pbseqlib (5.3.1+dfsg-2.2) UNRELEASED; urgency=medium
+
+  * Non-maintainer upload.
+  * Covnert libpbseq-dev to Architecture: any. (Closes: #-1)
+
+ -- Helmut Grohne   Sun, 15 Sep 2019 20:41:33 +0200
+
 pbseqlib (5.3.1+dfsg-2.1) unstable; urgency=medium
 
   * Non-maintainer upload.
diff --minimal -Nru pbseqlib-5.3.1+dfsg/debian/control 
pbseqlib-5.3.1+dfsg/debian/control
--- pbseqlib-5.3.1+dfsg/debian/control  2019-02-06 08:02:44.0 +0100
+++ pbseqlib-5.3.1+dfsg/debian/control  2019-09-15 20:41:09.0 +0200
@@ -31,12 +31,12 @@
  This is a metapackage that depends on the pbseqlib component shared libraries.
 
 Package: libpbseq-dev
-Architecture: all
+Architecture: any
 Section: libdevel
 Depends: ${misc:Depends},
- libpbdata-dev (>= ${source:Version}),
- libpbihdf-dev (>= ${source:Version}),
- libblasr-dev  (>= ${source:Version})
+ libpbdata-dev (= ${binary:Version}),
+ libpbihdf-dev (= ${binary:Version}),
+ libblasr-dev  (= ${binary:Version})
 Description: library for analyzing PacBio sequencing data (development files)
  Blasr_libcpp is a library used by blasr and other executables such as
  samtoh5, loadPulses for analyzing PacBio sequences. This library contains