Source: thunderbird
Version: 1:60.0~b10-1
Severity: important
Tags: patch

Hi,

While working on a Tails-enabled backport of Thunderbird for stretch,
I've encountered a number of issues with minimal versions of some build
dependencies.

Here's a summary of my findings (a bit verbose so that I can reference
this bug report in Tails tickets):

 - nss and nspr have their minimal version documented correctly. Both
   packages can be trivially backported to stretch, but only nss gets
   updated dependencies in the resulting package (meaning one would
   only need the backported version of nspr for building, but need
   the backported nss both at build time and at run time):
     libnss3 (>= 2:3.30)
     libnspr4 (>= 2:4.10.9)

 - libsqlite-dev needs a trivial backport as well, only needed at build
   time (not at runtime):
     libsqlite3-0 (>= 3.14.0)
   → The version in Build-Depends is insufficient though.

 - libicu-dev is needed (and needs a backport too) for icu-i18n.pc; at
   this point I noticed the debian/mozconfig.default file and started
   toying with embedded code copies instead of backporting more
   packages.
   → The package isn't documented in Build-Depends at all.

 - Even if the configure script doesn't check for a minimal version of
   libhunspell-dev, the one declared in Build-Depends (1.2) isn't
   sufficient. Building within stretch (so against 1.4) leads to build
   errors:
    | error: 'class Hunspell' has no member named 'get_dict_encoding'
    | error: no matching function for call to 
'Hunspell::spell(std::__cxx11::string&)'
    | error: no matching function for call to 
'Hunspell::suggest(std::__cxx11::string&)'

   hunspell can be trivially backported as well, and a build results in
   an unversioned dependency against a new binary package:
     libhunspell-1.6-0
   
   Checking upstream's git history, those first appeared in 1.5.1.
   → I think it'd be good to mention this upstream, so that they
     adjust their configure script.
   → And it'd be nice to bump the minimal version in Build-Depends.

I've addressed all packaging points (i.e. everything except suggested
upstream change) through 3 commits in my debian/experimental, available
on salsa:
  https://salsa.debian.org/kibi/thunderbird/commits/debian/experimental

(They are also attached to this bug report.)


On the Tails side, I've decided to switch to embedded code copies for
the following libraries: nss, nspr, icu, hunspell, sqlite. While
backporting them seems easy, I'd like to avoid possible side effects in
other reverse dependencies, hoping to have a self-contained thunderbird
update. Relevant commit in my Tails topic branch:
  
https://salsa.debian.org/kibi/thunderbird/commit/8b81093efea0b9a81dcea96b74e3459e5db3a396

I guess you might follow a similar path as well for stretch/updates,
which was done in the past already:
  
https://salsa.debian.org/kibi/thunderbird/commit/6755547f7d8e2df047bd779683e8204a8ddba94e

but feel free to double check, and maybe correct me on this.


Final note: trying to build such a package within stretch currently
depends on having stretch-proposed-updates enabled, to get cargo and
friends.


Cheers,
-- 
Cyril Brulebois -- Debian Consultant @ DEBAMAX -- https://debamax.com/
>From 9234830b940c98f34aedbd18eb7e44397c8ddb94 Mon Sep 17 00:00:00 2001
From: Cyril Brulebois <cy...@debamax.com>
Date: Sun, 5 Aug 2018 04:04:51 +0200
Subject: [PATCH 1/3] Bump libsqlite3-dev version.

Let's align with what configure scripts check.
---
 debian/control | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/debian/control b/debian/control
index ce6bc6fb0b..641f6928de 100644
--- a/debian/control
+++ b/debian/control
@@ -39,7 +39,7 @@ Build-Depends:
  libpulse-dev,
  libreadline-dev,
  libstartup-notification0-dev,
- libsqlite3-dev (>= 3.20.1),
+ libsqlite3-dev (>= 3.22.0~),
  libvpx-dev (>= 1.5.0),
  libx11-dev,
  libx11-xcb-dev,
-- 
2.11.0

>From e5a12c7dc5cfde65cb557a3a785b51cab5968f58 Mon Sep 17 00:00:00 2001
From: Cyril Brulebois <cy...@debamax.com>
Date: Sun, 5 Aug 2018 04:05:18 +0200
Subject: [PATCH 2/3] Add libicu-dev to Build-Depends (required for
 icu-i18n.pc).

---
 debian/control | 1 +
 1 file changed, 1 insertion(+)

diff --git a/debian/control b/debian/control
index 641f6928de..27f4b22809 100644
--- a/debian/control
+++ b/debian/control
@@ -29,6 +29,7 @@ Build-Depends:
  libgtk2.0-dev,
  libgtk-3-dev (>= 3.4),
  libhunspell-dev (>= 1.2),
+ libicu-dev (>= 59.1~),
  libjsoncpp-dev,
  libidl-dev (>= 0.8.0),
  libiw-dev [linux-any],
-- 
2.11.0

>From 37cabf67afeac2bfbe2b0a360cf7c094fce59249 Mon Sep 17 00:00:00 2001
From: Cyril Brulebois <cy...@debamax.com>
Date: Sun, 5 Aug 2018 04:08:04 +0200
Subject: [PATCH 3/3] Bump libhunspell-dev version.

Building thunderbird in stretch, against hunspell 1.4, leads to these
errors because of missing functions in its API:
| error: 'class Hunspell' has no member named 'get_dict_encoding'
| error: no matching function for call to 
'Hunspell::spell(std::__cxx11::string&)'
| error: no matching function for call to 
'Hunspell::suggest(std::__cxx11::string&)'

These functions were added in 1.5.1, so the upstream configure scripts
should probably check for it as a minimal version.
---
 debian/control | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/debian/control b/debian/control
index 27f4b22809..8b403aa21f 100644
--- a/debian/control
+++ b/debian/control
@@ -28,7 +28,7 @@ Build-Depends:
  libglib2.0-dev,
  libgtk2.0-dev,
  libgtk-3-dev (>= 3.4),
- libhunspell-dev (>= 1.2),
+ libhunspell-dev (>= 1.5.1~),
  libicu-dev (>= 59.1~),
  libjsoncpp-dev,
  libidl-dev (>= 0.8.0),
-- 
2.11.0

Reply via email to