Your message dated Sat, 26 Mar 2022 12:02:22 +0000
with message-id 
<540de30a27d37c3ff416b94b1adf7ff2a2cab257.ca...@adam-barratt.org.uk>
and subject line Closing requests for updates in 10.12
has caused the Debian Bug report #992613,
regarding buster-pu: package icu/63.1-6+deb10u2
to be marked as done.

This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.

(NB: If you are a system administrator and have no idea what this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact ow...@bugs.debian.org
immediately.)


-- 
992613: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=992613
Debian Bug Tracking System
Contact ow...@bugs.debian.org with problems
--- Begin Message ---
Package: release.debian.org
User: release.debian....@packages.debian.org
Tags: buster
Severity: normal

Hi RMs,

ICU had a non-standard tool for revealing its headers and libs paths,
compiler switches needed for development. This tool, icu-config, was
removed after being deprecated over pkg-config for years. Then another
ICU tool, pkgdata remained to use that [1]. It seems some projects
still didn't switch to pkg-config but use the mentioned ICU one.
There's an upstream fix for this, included in newer ICU releases -
meaning it's proven in Bullseye and Sid as well.
The only packaging change following this, pkg-data became a dependency
for icu-devtools due to its usage in pkgdata.

[ Reason ]
ICU tool pkgdata still would like to get headers and library data via
its removed icu-config. Upstream fixed it for newer ICU releases to
use pkg-config instead.

[ Impact ]
Code that compiles with ICU and uses pkgdata to reveal its headers and
libraries will work again.

[ Tests ]
Local tests and problem reporter confirmed the fix. It's also part of
Bullseye and Sid versions of ICU, working correctly.

[ Risks ]
None.

[ Checklist ]
  [x] all changes are documented in the d/changelog
  [x] I reviewed all changes and I approve them
  [x] attach debdiff against the package in buster
  [x] the issue is verified as fixed in unstable

Thanks for considering,
Laszlo/GCS
[1] https://bugs.debian.org/992591
diff -Nru icu-63.1/debian/changelog icu-63.1/debian/changelog
--- icu-63.1/debian/changelog	2020-03-13 19:49:33.000000000 +0100
+++ icu-63.1/debian/changelog	2021-08-21 07:28:38.000000000 +0200
@@ -1,3 +1,13 @@
+icu (63.1-6+deb10u2) buster; urgency=medium
+
+  * Add pkg-config dependency to icu-devtools.
+
+  [ Scott Talbert <s...@techie.net> ]
+  * Backport upstream fix for pkgdata to work without icu-config
+    (closes: #992591).
+
+ -- Laszlo Boszormenyi (GCS) <g...@debian.org>  Sat, 21 Aug 2021 07:28:38 +0200
+
 icu (63.1-6+deb10u1) buster-security; urgency=high
 
   * Backport upstream security fix for CVE-2020-10531: SEGV_MAPERR in
diff -Nru icu-63.1/debian/control icu-63.1/debian/control
--- icu-63.1/debian/control	2019-01-23 17:51:20.000000000 +0100
+++ icu-63.1/debian/control	2021-08-21 07:28:38.000000000 +0200
@@ -51,7 +51,7 @@
 Architecture: any
 Multi-Arch: foreign
 Pre-Depends: ${misc:Pre-Depends}
-Depends: ${misc:Depends}, ${shlibs:Depends}
+Depends: ${misc:Depends}, ${shlibs:Depends}, pkg-config
 Replaces: libicu-dev (<< ${binary:Version}), icu-tools (<< 63.1-1~)
 Breaks: libicu-dev (<< ${binary:Version}), icu-tools (<< 63.1-1~)
 Description: Development utilities for International Components for Unicode
diff -Nru icu-63.1/debian/patches/ICU-20924-Use-pkg-config-to-generate-the-path-to-pkg.patch icu-63.1/debian/patches/ICU-20924-Use-pkg-config-to-generate-the-path-to-pkg.patch
--- icu-63.1/debian/patches/ICU-20924-Use-pkg-config-to-generate-the-path-to-pkg.patch	1970-01-01 01:00:00.000000000 +0100
+++ icu-63.1/debian/patches/ICU-20924-Use-pkg-config-to-generate-the-path-to-pkg.patch	2021-08-20 23:53:11.000000000 +0200
@@ -0,0 +1,139 @@
+From 5aae52d3ef316b3fd3c43b3f974a8032d279e6fc Mon Sep 17 00:00:00 2001
+From: Hugh McMaster <hugh.mcmas...@outlook.com>
+Date: Mon, 23 Dec 2019 22:11:05 +1100
+Subject: [PATCH] ICU-20924 Use pkg-config to generate the path to pkgdata.inc
+
+---
+ icu4c/source/tools/pkgdata/pkgdata.cpp | 84 +++++++++++++-------------
+ 1 file changed, 43 insertions(+), 41 deletions(-)
+
+diff --git a/icu4c/source/tools/pkgdata/pkgdata.cpp b/icu4c/source/tools/pkgdata/pkgdata.cpp
+index 7235a7f669..6406fcc7a5 100644
+--- a/source/tools/pkgdata/pkgdata.cpp
++++ b/source/tools/pkgdata/pkgdata.cpp
+@@ -95,7 +95,7 @@ static int32_t pkg_archiveLibrary(const char *targetDir, const char *version, UB
+ static void createFileNames(UPKGOptions *o, const char mode, const char *version_major, const char *version, const char *libName, const UBool reverseExt, UBool noVersion);
+ static int32_t initializePkgDataFlags(UPKGOptions *o);
+ 
+-static int32_t pkg_getOptionsFromICUConfig(UBool verbose, UOption *option);
++static int32_t pkg_getPkgDataPath(UBool verbose, UOption *option);
+ static int runCommand(const char* command, UBool specialHandling=FALSE);
+ 
+ #define IN_COMMON_MODE(mode) (mode == 'a' || mode == 'c')
+@@ -309,7 +309,7 @@ main(int argc, char* argv[]) {
+ 
+ #if !defined(WINDOWS_WITH_MSVC) || defined(USING_CYGWIN)
+         if(!options[BLDOPT].doesOccur && uprv_strcmp(options[MODE].value, "common") != 0) {
+-          if (pkg_getOptionsFromICUConfig(options[VERBOSE].doesOccur, &options[BLDOPT]) != 0) {
++          if (pkg_getPkgDataPath(options[VERBOSE].doesOccur, &options[BLDOPT]) != 0) {
+                 fprintf(stderr, " required parameter is missing: -O is required for static and shared builds.\n");
+                 fprintf(stderr, "Run '%s --help' for help.\n", progname);
+                 return 1;
+@@ -2158,41 +2158,46 @@ static void loadLists(UPKGOptions *o, UErrorCode *status)
+     } /* for each file list file */
+ }
+ 
+-/* Try calling icu-config directly to get the option file. */
+- static int32_t pkg_getOptionsFromICUConfig(UBool verbose, UOption *option) {
++/* Helper for pkg_getPkgDataPath() */
+ #if U_HAVE_POPEN
+-    LocalPipeFilePointer p;
+-    size_t n;
+-    static char buf[512] = "";
++static UBool getPkgDataPath(const char *cmd, UBool verbose, char *buf, size_t items) {
+     icu::CharString cmdBuf;
+     UErrorCode status = U_ZERO_ERROR;
+-    const char cmd[] = "icu-config --incpkgdatafile";
+-    char dirBuf[1024] = "";
+-    /* #1 try the same path where pkgdata was called from. */
+-    findDirname(progname, dirBuf, UPRV_LENGTHOF(dirBuf), &status);
+-    if(U_SUCCESS(status)) {
+-      cmdBuf.append(dirBuf, status);
+-      if (cmdBuf[0] != 0) {
+-        cmdBuf.append( U_FILE_SEP_STRING, status );
+-      }
+-      cmdBuf.append( cmd, status );
+-      
+-      if(verbose) {
+-        fprintf(stdout, "# Calling icu-config: %s\n", cmdBuf.data());
+-      }
+-      p.adoptInstead(popen(cmdBuf.data(), "r"));
+-    }
+-
+-    if(p.isNull() || (n = fread(buf, 1, UPRV_LENGTHOF(buf)-1, p.getAlias())) <= 0) {
+-        if(verbose) {
+-            fprintf(stdout, "# Calling icu-config: %s\n", cmd);
+-        }
++    LocalPipeFilePointer p;
++    size_t n;
+ 
+-        p.adoptInstead(popen(cmd, "r"));
+-        if(p.isNull() || (n = fread(buf, 1, UPRV_LENGTHOF(buf)-1, p.getAlias())) <= 0) {
+-            fprintf(stderr, "%s: icu-config: No icu-config found. (fix PATH or use -O option)\n", progname);
++    cmdBuf.append(cmd, status);
++    if (verbose) {
++        fprintf(stdout, "# Calling: %s\n", cmdBuf.data());
++    }
++    p.adoptInstead( popen(cmdBuf.data(), "r") );
++
++    if (p.isNull() || (n = fread(buf, 1, items-1, p.getAlias())) <= 0) {
++        fprintf(stderr, "%s: Error calling '%s'\n", progname, cmd);
++        *buf = 0;
++        return FALSE;
++    }
++
++    return TRUE;
++}
++#endif
++
++/* Get path to pkgdata.inc. Try pkg-config first, falling back to icu-config. */
++static int32_t pkg_getPkgDataPath(UBool verbose, UOption *option) {
++#if U_HAVE_POPEN
++    static char buf[512] = "";
++    UBool pkgconfigIsValid = TRUE;
++    const char *pkgconfigCmd = "pkg-config --variable=pkglibdir icu-uc";
++    const char *icuconfigCmd = "icu-config --incpkgdatafile";
++    const char *pkgdata = "pkgdata.inc";
++
++    if (!getPkgDataPath(pkgconfigCmd, verbose, buf, UPRV_LENGTHOF(buf))) {
++        if (!getPkgDataPath(icuconfigCmd, verbose, buf, UPRV_LENGTHOF(buf))) {
++            fprintf(stderr, "%s: icu-config not found. Fix PATH or specify -O option\n", progname);
+             return -1;
+         }
++
++        pkgconfigIsValid = FALSE;
+     }
+ 
+     for (int32_t length = strlen(buf) - 1; length >= 0; length--) {
+@@ -2203,21 +2208,18 @@ static void loadLists(UPKGOptions *o, UErrorCode *status)
+         }
+     }
+ 
+-    if(buf[strlen(buf)-1]=='\n')
+-    {
+-        buf[strlen(buf)-1]=0;
+-    }
+-
+-    if(buf[0] == 0)
+-    {
+-        fprintf(stderr, "%s: icu-config: invalid response from icu-config (fix PATH or use -O option)\n", progname);
++    if (!*buf) {
++        fprintf(stderr, "%s: Unable to locate pkgdata.inc. Unable to parse the results of '%s'. Check paths or use the -O option to specify the path to pkgdata.inc.\n", progname, pkgconfigIsValid ? pkgconfigCmd : icuconfigCmd);
+         return -1;
+     }
+ 
+-    if(verbose) {
+-      fprintf(stdout, "# icu-config said: %s\n", buf);
++    if (pkgconfigIsValid) {
++        uprv_strcat(buf, U_FILE_SEP_STRING);
++        uprv_strcat(buf, pkgdata);
+     }
+ 
++    buf[strlen(buf)] = 0;
++
+     option->value = buf;
+     option->doesOccur = TRUE;
+ 
+-- 
+2.25.1
+
diff -Nru icu-63.1/debian/patches/series icu-63.1/debian/patches/series
--- icu-63.1/debian/patches/series	2020-03-13 19:49:31.000000000 +0100
+++ icu-63.1/debian/patches/series	2021-08-20 23:53:11.000000000 +0200
@@ -6,3 +6,4 @@
 ICU-20246_Fixing_another_integer_overflow_in_number_parsing.patch
 ICU-20208_uspoof.cpp_function_checkImpl_should_be_static.patch
 CVE-2020-10531.patch
+ICU-20924-Use-pkg-config-to-generate-the-path-to-pkg.patch

--- End Message ---
--- Begin Message ---
Package: release.debian.org
Version: 10.12

Hi,

The updates referenced in these requests were included in oldstable as
part of today's 10.12 point release.

Regards,

Adam

--- End Message ---

Reply via email to