Your message dated Sun, 11 Mar 2018 11:04:46 +0000
with message-id <e1euymu-000ft2...@fasolo.debian.org>
and subject line Bug#891679: fixed in libc++ 6.0-1
has caused the Debian Bug report #891679,
regarding libc++: FTBFS with glibc 2.27: Failing Tests
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.)


-- 
891679: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=891679
Debian Bug Tracking System
Contact ow...@bugs.debian.org with problems
--- Begin Message ---
Source: libc++
Version: 5.0.1-1
Severity: important
Tags: patch
User: debian-gl...@lists.debian.org
Usertags: 2.27

libc++ 5.0.1-1 fails to build with glibc 2.27 (2.27-0experimental0 from
experimental):

| ********************
| Failing Tests (5):
|     libc++ :: 
std/localization/locale.categories/category.monetary/locale.money.get/locale.money.get.members/get_long_double_fr_FR.pass.cpp
|     libc++ :: 
std/localization/locale.categories/category.monetary/locale.money.put/locale.money.put.members/put_long_double_fr_FR.pass.cpp
|     libc++ :: 
std/localization/locale.categories/category.monetary/locale.moneypunct.byname/decimal_point.pass.cpp
|     libc++ :: 
std/localization/locale.categories/category.monetary/locale.moneypunct.byname/thousands_sep.pass.cpp
|     libc++ :: 
std/localization/locale.categories/facet.numpunct/locale.numpunct.byname/thousands_sep.pass.cpp

A full build log is available there:
http://aws-logs.debian.net/2018/02/07/glibc-exp/libc++_5.0.1-1_unstable_glibc-exp.log

This failing tests are due to changes in the locales introduced in glibc
2.27, which causes the expected value to change. And more precisely the
following two changes:

| commit f11f2f6e145d6fc6b52f6b0733599f8b96595733
| Author: Mike FABIAN <mfab...@redhat.com>
| Date:   Tue Aug 29 13:39:18 2017 +0200
| 
|     Use “,” as mon_decimal_point for ru_RU and os_RU locales (follow CLDR)
| 
|             [BZ #13805]
|             * locales/ru_RU (LC_MONETARY): Use “,” for mon_decimal_point
|             (to agree with CLDR).
|             * locales/ru_RU (LC_NUMERIC): Write mon_decimal_point in ASCII
|             for readability.
|             * locales/os_RU (LC_MONETARY): Copy from ru_RU,
|             makes it agree with CLDR.

and

| commit 70a6707fa15e63591d991761be025e26e8d02bb6
| Author: Stanislav Brabec <sbra...@suse.cz>
| Date:   Wed Nov 2 16:52:58 2016 +0100
| 
|     Locales: Use Unicode wise thousands separator
|     
|     Many languages use small gap as thousands separator.
|     
|     Thousands separator should not be a plain space, but a narrow space.
|     And additionally, it is not allowed to wrap line in the middle of the
|     number.
|     
|     Locale data were created in a deep age of 8-bit encodings, so most of
|     them use space (incorrect: it allows wrapping the line in the middle
|     of the number), or NBSP (better, but typographically incorrect: space
|     between groups is too wide).
|     
|     Now UNICODE is widely supported, so we should leave legacy characters
|     in favor of correct UNICODE character.
|     
|     UNICODE has a dedicated character for this purpose:
|     
|     NNBSP
|     U+202F NARROW NO-BREAK SPACE: a narrow form of a no-break space,
|     typically the width of a thin space or a mid space
|     
|     The NNBSP exists since Unicode 3.0.
|     
|     Use of NNBSP will prevent line wrapping in the midle of number and
|     improve readability of numbers.

I have attached a patch to do the corresponding changes on the libc++
side. Note however they are not conditional, meaning that they won't
work with glibc 2.26 or older. I guess the correct way to do that
depends on upstream.
--- 
libc++-5.0.1.orig/libcxx/test/std/localization/locale.categories/category.monetary/locale.money.get/locale.money.get.members/get_long_double_fr_FR.pass.cpp
+++ 
libc++-5.0.1/libcxx/test/std/localization/locale.categories/category.monetary/locale.money.get/locale.money.get.members/get_long_double_fr_FR.pass.cpp
@@ -84,7 +84,7 @@ int main()
             assert(ex == -1);
         }
         {   // positive
-            std::string v = "1 234 567,89 ";
+            std::string v = "1\177234\177567,89 ";
             typedef input_iterator<const char*> I;
             long double ex;
             std::ios_base::iostate err = std::ios_base::goodbit;
@@ -95,7 +95,7 @@ int main()
             assert(ex == 123456789);
         }
         {   // negative
-            std::string v = "-1 234 567,89";
+            std::string v = "-1\177234\177567,89";
             typedef input_iterator<const char*> I;
             long double ex;
             std::ios_base::iostate err = std::ios_base::goodbit;
@@ -164,7 +164,7 @@ int main()
             assert(ex == -1);
         }
         {   // positive, showbase
-            std::string v = "1 234 567,89 \u20ac";
+            std::string v = "1\177234\177567,89 \u20ac";
             typedef input_iterator<const char*> I;
             long double ex;
             std::ios_base::iostate err = std::ios_base::goodbit;
@@ -175,7 +175,7 @@ int main()
             assert(ex == 123456789);
         }
         {   // positive, showbase
-            std::string v = "1 234 567,89 \u20ac";
+            std::string v = "1\177234\177567,89 \u20ac";
             showbase(ios);
             typedef input_iterator<const char*> I;
             long double ex;
@@ -188,7 +188,7 @@ int main()
             noshowbase(ios);
         }
         {   // negative, showbase
-            std::string v = "-1 234 567,89 \u20ac";
+            std::string v = "-1\177234\177567,89 \u20ac";
             showbase(ios);
             typedef input_iterator<const char*> I;
             long double ex;
@@ -201,7 +201,7 @@ int main()
             noshowbase(ios);
         }
         {   // negative, showbase
-            std::string v = "1 234 567,89 EUR -";
+            std::string v = "1\177234\177567,89 EUR -";
             showbase(ios);
             typedef input_iterator<const char*> I;
             long double ex;
@@ -213,7 +213,7 @@ int main()
             noshowbase(ios);
         }
         {   // negative, showbase
-            std::string v = "1 234 567,89 EUR -";
+            std::string v = "1\177234\177567,89 EUR -";
             typedef input_iterator<const char*> I;
             long double ex;
             std::ios_base::iostate err = std::ios_base::goodbit;
@@ -251,7 +251,7 @@ int main()
             assert(ex == -1);
         }
         {   // positive
-            std::string v = "1 234 567,89 ";
+            std::string v = "1\177234\177567,89 ";
             typedef input_iterator<const char*> I;
             long double ex;
             std::ios_base::iostate err = std::ios_base::goodbit;
@@ -262,7 +262,7 @@ int main()
             assert(ex == 123456789);
         }
         {   // negative
-            std::string v = "-1 234 567,89";
+            std::string v = "-1\177234\177567,89";
             typedef input_iterator<const char*> I;
             long double ex;
             std::ios_base::iostate err = std::ios_base::goodbit;
@@ -331,7 +331,7 @@ int main()
             assert(ex == -1);
         }
         {   // positive, showbase
-            std::string v = "1 234 567,89 EUR";
+            std::string v = "1\177234\177567,89 EUR";
             typedef input_iterator<const char*> I;
             long double ex;
             std::ios_base::iostate err = std::ios_base::goodbit;
@@ -342,7 +342,7 @@ int main()
             assert(ex == 123456789);
         }
         {   // positive, showbase
-            std::string v = "1 234 567,89 EUR";
+            std::string v = "1\177234\177567,89 EUR";
             showbase(ios);
             typedef input_iterator<const char*> I;
             long double ex;
@@ -355,7 +355,7 @@ int main()
             noshowbase(ios);
         }
         {   // negative, showbase
-            std::string v = "-1 234 567,89 EUR";
+            std::string v = "-1\177234\177567,89 EUR";
             showbase(ios);
             typedef input_iterator<const char*> I;
             long double ex;
@@ -368,7 +368,7 @@ int main()
             noshowbase(ios);
         }
         {   // negative, showbase
-            std::string v = "1 234 567,89 Eu-";
+            std::string v = "1\177234\177567,89 Eu-";
             showbase(ios);
             typedef input_iterator<const char*> I;
             long double ex;
@@ -380,7 +380,7 @@ int main()
             noshowbase(ios);
         }
         {   // negative, showbase
-            std::string v = "1 234 567,89 Eu-";
+            std::string v = "1\177234\177567,89 Eu-";
             typedef input_iterator<const char*> I;
             long double ex;
             std::ios_base::iostate err = std::ios_base::goodbit;
@@ -417,7 +417,7 @@ int main()
             assert(ex == -1);
         }
         {   // positive
-            std::wstring v = L"1 234 567,89 ";
+            std::wstring v = L"1\u202f234\u202f567,89 ";
             typedef input_iterator<const wchar_t*> I;
             long double ex;
             std::ios_base::iostate err = std::ios_base::goodbit;
@@ -428,7 +428,7 @@ int main()
             assert(ex == 123456789);
         }
         {   // negative
-            std::wstring v = L"-1 234 567,89";
+            std::wstring v = L"-1\u202f234\u202f567,89";
             typedef input_iterator<const wchar_t*> I;
             long double ex;
             std::ios_base::iostate err = std::ios_base::goodbit;
@@ -497,7 +497,7 @@ int main()
             assert(ex == -1);
         }
         {   // positive, showbase
-            std::wstring v = L"1 234 567,89 \u20ac";
+            std::wstring v = L"1\u202f234\u202f567,89 \u20ac";
             typedef input_iterator<const wchar_t*> I;
             long double ex;
             std::ios_base::iostate err = std::ios_base::goodbit;
@@ -508,7 +508,7 @@ int main()
             assert(ex == 123456789);
         }
         {   // positive, showbase
-            std::wstring v = L"1 234 567,89 \u20ac";
+            std::wstring v = L"1\u202f234\u202f567,89 \u20ac";
             showbase(ios);
             typedef input_iterator<const wchar_t*> I;
             long double ex;
@@ -521,7 +521,7 @@ int main()
             noshowbase(ios);
         }
         {   // negative, showbase
-            std::wstring v = L"-1 234 567,89 \u20ac";
+            std::wstring v = L"-1\u202f234\u202f567,89 \u20ac";
             showbase(ios);
             typedef input_iterator<const wchar_t*> I;
             long double ex;
@@ -534,7 +534,7 @@ int main()
             noshowbase(ios);
         }
         {   // negative, showbase
-            std::wstring v = L"1 234 567,89 EUR -";
+            std::wstring v = L"1\u202f234\u202f567,89 EUR -";
             showbase(ios);
             typedef input_iterator<const wchar_t*> I;
             long double ex;
@@ -546,7 +546,7 @@ int main()
             noshowbase(ios);
         }
         {   // negative, showbase
-            std::wstring v = L"1 234 567,89 EUR -";
+            std::wstring v = L"1\u202f234\u202f567,89 EUR -";
             typedef input_iterator<const wchar_t*> I;
             long double ex;
             std::ios_base::iostate err = std::ios_base::goodbit;
@@ -583,7 +583,7 @@ int main()
             assert(ex == -1);
         }
         {   // positive
-            std::wstring v = L"1 234 567,89 ";
+            std::wstring v = L"1\u202f234\u202f567,89 ";
             typedef input_iterator<const wchar_t*> I;
             long double ex;
             std::ios_base::iostate err = std::ios_base::goodbit;
@@ -594,7 +594,7 @@ int main()
             assert(ex == 123456789);
         }
         {   // negative
-            std::wstring v = L"-1 234 567,89";
+            std::wstring v = L"-1\u202f234\u202f567,89";
             typedef input_iterator<const wchar_t*> I;
             long double ex;
             std::ios_base::iostate err = std::ios_base::goodbit;
@@ -663,7 +663,7 @@ int main()
             assert(ex == -1);
         }
         {   // positive, showbase
-            std::wstring v = L"1 234 567,89 EUR";
+            std::wstring v = L"1\u202f234\u202f567,89 EUR";
             typedef input_iterator<const wchar_t*> I;
             long double ex;
             std::ios_base::iostate err = std::ios_base::goodbit;
@@ -674,7 +674,7 @@ int main()
             assert(ex == 123456789);
         }
         {   // positive, showbase
-            std::wstring v = L"1 234 567,89 EUR";
+            std::wstring v = L"1\u202f234\u202f567,89 EUR";
             showbase(ios);
             typedef input_iterator<const wchar_t*> I;
             long double ex;
@@ -687,7 +687,7 @@ int main()
             noshowbase(ios);
         }
         {   // negative, showbase
-            std::wstring v = L"-1 234 567,89 EUR";
+            std::wstring v = L"-1\u202f234\u202f567,89 EUR";
             showbase(ios);
             typedef input_iterator<const wchar_t*> I;
             long double ex;
@@ -700,7 +700,7 @@ int main()
             noshowbase(ios);
         }
         {   // negative, showbase
-            std::wstring v = L"1 234 567,89 Eu-";
+            std::wstring v = L"1\u202f234\u202f567,89 Eu-";
             showbase(ios);
             typedef input_iterator<const wchar_t*> I;
             long double ex;
@@ -712,7 +712,7 @@ int main()
             noshowbase(ios);
         }
         {   // negative, showbase
-            std::wstring v = L"1 234 567,89 Eu-";
+            std::wstring v = L"1\u202f234\u202f567,89 Eu-";
             typedef input_iterator<const wchar_t*> I;
             long double ex;
             std::ios_base::iostate err = std::ios_base::goodbit;
--- 
libc++-5.0.1.orig/libcxx/test/std/localization/locale.categories/category.monetary/locale.money.put/locale.money.put.members/put_long_double_fr_FR.pass.cpp
+++ 
libc++-5.0.1/libcxx/test/std/localization/locale.categories/category.monetary/locale.money.put/locale.money.put.members/put_long_double_fr_FR.pass.cpp
@@ -83,7 +83,7 @@ int main()
         output_iterator<char*> iter = f.put(output_iterator<char*>(str),
                                             false, ios, '*', v);
         std::string ex(str, iter.base());
-        assert(ex == "1 234 567,89");
+        assert(ex == "1\177234\177567,89");
     }
     {   // negative
         long double v = -123456789;
@@ -91,7 +91,7 @@ int main()
         output_iterator<char*> iter = f.put(output_iterator<char*>(str),
                                             false, ios, '*', v);
         std::string ex(str, iter.base());
-        assert(ex == "-1 234 567,89");
+        assert(ex == "-1\177234\177567,89");
     }
     {   // zero, showbase
         long double v = 0;
@@ -118,7 +118,7 @@ int main()
         output_iterator<char*> iter = f.put(output_iterator<char*>(str),
                                             false, ios, '*', v);
         std::string ex(str, iter.base());
-        assert(ex == "1 234 567,89 \u20ac");
+        assert(ex == "1\177234\177567,89 \u20ac");
     }
     {   // negative, showbase
         long double v = -123456789;
@@ -127,7 +127,7 @@ int main()
         output_iterator<char*> iter = f.put(output_iterator<char*>(str),
                                             false, ios, '*', v);
         std::string ex(str, iter.base());
-        assert(ex == "-1 234 567,89 \u20ac");
+        assert(ex == "-1\177234\177567,89 \u20ac");
     }
     {   // negative, showbase, left
         long double v = -123456789;
@@ -138,7 +138,7 @@ int main()
         output_iterator<char*> iter = f.put(output_iterator<char*>(str),
                                             false, ios, ' ', v);
         std::string ex(str, iter.base());
-        assert(ex == "-1 234 567,89 \u20ac   ");
+        assert(ex == "-1\177234\177567,89 \u20ac   ");
         assert(ios.width() == 0);
     }
     {   // negative, showbase, internal
@@ -150,7 +150,7 @@ int main()
         output_iterator<char*> iter = f.put(output_iterator<char*>(str),
                                             false, ios, ' ', v);
         std::string ex(str, iter.base());
-        assert(ex == "-1 234 567,89    \u20ac");
+        assert(ex == "-1\177234\177567,89    \u20ac");
         assert(ios.width() == 0);
     }
     {   // negative, showbase, right
@@ -162,7 +162,7 @@ int main()
         output_iterator<char*> iter = f.put(output_iterator<char*>(str),
                                             false, ios, ' ', v);
         std::string ex(str, iter.base());
-        assert(ex == "   -1 234 567,89 \u20ac");
+        assert(ex == "   -1\177234\177567,89 \u20ac");
         assert(ios.width() == 0);
     }
 
@@ -191,7 +191,7 @@ int main()
         output_iterator<char*> iter = f.put(output_iterator<char*>(str),
                                             true, ios, '*', v);
         std::string ex(str, iter.base());
-        assert(ex == "1 234 567,89");
+        assert(ex == "1\177234\177567,89");
     }
     {   // negative
         long double v = -123456789;
@@ -199,7 +199,7 @@ int main()
         output_iterator<char*> iter = f.put(output_iterator<char*>(str),
                                             true, ios, '*', v);
         std::string ex(str, iter.base());
-        assert(ex == "-1 234 567,89");
+        assert(ex == "-1\177234\177567,89");
     }
     {   // zero, showbase
         long double v = 0;
@@ -226,7 +226,7 @@ int main()
         output_iterator<char*> iter = f.put(output_iterator<char*>(str),
                                             true, ios, '*', v);
         std::string ex(str, iter.base());
-        assert(ex == "1 234 567,89 EUR");
+        assert(ex == "1\177234\177567,89 EUR");
     }
     {   // negative, showbase
         long double v = -123456789;
@@ -235,7 +235,7 @@ int main()
         output_iterator<char*> iter = f.put(output_iterator<char*>(str),
                                             true, ios, '*', v);
         std::string ex(str, iter.base());
-        assert(ex == "-1 234 567,89 EUR");
+        assert(ex == "-1\177234\177567,89 EUR");
     }
     {   // negative, showbase, left
         long double v = -123456789;
@@ -246,7 +246,7 @@ int main()
         output_iterator<char*> iter = f.put(output_iterator<char*>(str),
                                             true, ios, ' ', v);
         std::string ex(str, iter.base());
-        assert(ex == "-1 234 567,89 EUR   ");
+        assert(ex == "-1\177234\177567,89 EUR   ");
         assert(ios.width() == 0);
     }
     {   // negative, showbase, internal
@@ -258,7 +258,7 @@ int main()
         output_iterator<char*> iter = f.put(output_iterator<char*>(str),
                                             true, ios, ' ', v);
         std::string ex(str, iter.base());
-        assert(ex == "-1 234 567,89    EUR");
+        assert(ex == "-1\177234\177567,89    EUR");
         assert(ios.width() == 0);
     }
     {   // negative, showbase, right
@@ -270,7 +270,7 @@ int main()
         output_iterator<char*> iter = f.put(output_iterator<char*>(str),
                                             true, ios, ' ', v);
         std::string ex(str, iter.base());
-        assert(ex == "   -1 234 567,89 EUR");
+        assert(ex == "   -1\177234\177567,89 EUR");
         assert(ios.width() == 0);
     }
 }
@@ -301,7 +301,7 @@ int main()
         output_iterator<wchar_t*> iter = f.put(output_iterator<wchar_t*>(str),
                                             false, ios, '*', v);
         std::wstring ex(str, iter.base());
-        assert(ex == L"1 234 567,89");
+        assert(ex == L"1\u202f234\u202f567,89");
     }
     {   // negative
         long double v = -123456789;
@@ -309,7 +309,7 @@ int main()
         output_iterator<wchar_t*> iter = f.put(output_iterator<wchar_t*>(str),
                                             false, ios, '*', v);
         std::wstring ex(str, iter.base());
-        assert(ex == L"-1 234 567,89");
+        assert(ex == L"-1\u202f234\u202f567,89");
     }
     {   // zero, showbase
         long double v = 0;
@@ -336,7 +336,7 @@ int main()
         output_iterator<wchar_t*> iter = f.put(output_iterator<wchar_t*>(str),
                                             false, ios, '*', v);
         std::wstring ex(str, iter.base());
-        assert(ex == L"1 234 567,89 \u20ac");
+        assert(ex == L"1\u202f234\u202f567,89 \u20ac");
     }
     {   // negative, showbase
         long double v = -123456789;
@@ -345,7 +345,7 @@ int main()
         output_iterator<wchar_t*> iter = f.put(output_iterator<wchar_t*>(str),
                                             false, ios, '*', v);
         std::wstring ex(str, iter.base());
-        assert(ex == L"-1 234 567,89 \u20ac");
+        assert(ex == L"-1\u202f234\u202f567,89 \u20ac");
     }
     {   // negative, showbase, left
         long double v = -123456789;
@@ -356,7 +356,7 @@ int main()
         output_iterator<wchar_t*> iter = f.put(output_iterator<wchar_t*>(str),
                                             false, ios, ' ', v);
         std::wstring ex(str, iter.base());
-        assert(ex == L"-1 234 567,89 \u20ac     ");
+        assert(ex == L"-1\u202f234\u202f567,89 \u20ac     ");
         assert(ios.width() == 0);
     }
     {   // negative, showbase, internal
@@ -368,7 +368,7 @@ int main()
         output_iterator<wchar_t*> iter = f.put(output_iterator<wchar_t*>(str),
                                             false, ios, ' ', v);
         std::wstring ex(str, iter.base());
-        assert(ex == L"-1 234 567,89      \u20ac");
+        assert(ex == L"-1\u202f234\u202f567,89      \u20ac");
         assert(ios.width() == 0);
     }
     {   // negative, showbase, right
@@ -380,7 +380,7 @@ int main()
         output_iterator<wchar_t*> iter = f.put(output_iterator<wchar_t*>(str),
                                             false, ios, ' ', v);
         std::wstring ex(str, iter.base());
-        assert(ex == L"     -1 234 567,89 \u20ac");
+        assert(ex == L"     -1\u202f234\u202f567,89 \u20ac");
         assert(ios.width() == 0);
     }
 
@@ -409,7 +409,7 @@ int main()
         output_iterator<wchar_t*> iter = f.put(output_iterator<wchar_t*>(str),
                                             true, ios, '*', v);
         std::wstring ex(str, iter.base());
-        assert(ex == L"1 234 567,89");
+        assert(ex == L"1\u202f234\u202f567,89");
     }
     {   // negative
         long double v = -123456789;
@@ -417,7 +417,7 @@ int main()
         output_iterator<wchar_t*> iter = f.put(output_iterator<wchar_t*>(str),
                                             true, ios, '*', v);
         std::wstring ex(str, iter.base());
-        assert(ex == L"-1 234 567,89");
+        assert(ex == L"-1\u202f234\u202f567,89");
     }
     {   // zero, showbase
         long double v = 0;
@@ -444,7 +444,7 @@ int main()
         output_iterator<wchar_t*> iter = f.put(output_iterator<wchar_t*>(str),
                                             true, ios, '*', v);
         std::wstring ex(str, iter.base());
-        assert(ex == L"1 234 567,89 EUR");
+        assert(ex == L"1\u202f234\u202f567,89 EUR");
     }
     {   // negative, showbase
         long double v = -123456789;
@@ -453,7 +453,7 @@ int main()
         output_iterator<wchar_t*> iter = f.put(output_iterator<wchar_t*>(str),
                                             true, ios, '*', v);
         std::wstring ex(str, iter.base());
-        assert(ex == L"-1 234 567,89 EUR");
+        assert(ex == L"-1\u202f234\u202f567,89 EUR");
     }
     {   // negative, showbase, left
         long double v = -123456789;
@@ -464,7 +464,7 @@ int main()
         output_iterator<wchar_t*> iter = f.put(output_iterator<wchar_t*>(str),
                                             true, ios, ' ', v);
         std::wstring ex(str, iter.base());
-        assert(ex == L"-1 234 567,89 EUR   ");
+        assert(ex == L"-1\u202f234\u202f567,89 EUR   ");
         assert(ios.width() == 0);
     }
     {   // negative, showbase, internal
@@ -476,7 +476,7 @@ int main()
         output_iterator<wchar_t*> iter = f.put(output_iterator<wchar_t*>(str),
                                             true, ios, ' ', v);
         std::wstring ex(str, iter.base());
-        assert(ex == L"-1 234 567,89    EUR");
+        assert(ex == L"-1\u202f234\u202f567,89    EUR");
         assert(ios.width() == 0);
     }
     {   // negative, showbase, right
@@ -488,7 +488,7 @@ int main()
         output_iterator<wchar_t*> iter = f.put(output_iterator<wchar_t*>(str),
                                             true, ios, ' ', v);
         std::wstring ex(str, iter.base());
-        assert(ex == L"   -1 234 567,89 EUR");
+        assert(ex == L"   -1\u202f234\u202f567,89 EUR");
         assert(ios.width() == 0);
     }
 }
--- 
libc++-5.0.1.orig/libcxx/test/std/localization/locale.categories/category.monetary/locale.moneypunct.byname/decimal_point.pass.cpp
+++ 
libc++-5.0.1/libcxx/test/std/localization/locale.categories/category.monetary/locale.moneypunct.byname/decimal_point.pass.cpp
@@ -109,29 +109,21 @@ int main()
         Fwt f(LOCALE_fr_FR_UTF_8, 1);
         assert(f.decimal_point() == L',');
     }
-// GLIBC 2.23 uses '.' as the decimal point while other C libraries use ','
-#ifndef TEST_HAS_GLIBC
-    const char sep = ',';
-    const wchar_t wsep = L',';
-#else
-    const char sep = '.';
-    const wchar_t wsep = L'.';
-#endif
     {
         Fnf f(LOCALE_ru_RU_UTF_8, 1);
-        assert(f.decimal_point() == sep);
+        assert(f.decimal_point() == ',');
     }
     {
         Fnt f(LOCALE_ru_RU_UTF_8, 1);
-        assert(f.decimal_point() == sep);
+        assert(f.decimal_point() == ',');
     }
     {
         Fwf f(LOCALE_ru_RU_UTF_8, 1);
-        assert(f.decimal_point() == wsep);
+        assert(f.decimal_point() == L',');
     }
     {
         Fwt f(LOCALE_ru_RU_UTF_8, 1);
-        assert(f.decimal_point() == wsep);
+        assert(f.decimal_point() == L',');
     }
 
     {
--- 
libc++-5.0.1.orig/libcxx/test/std/localization/locale.categories/category.monetary/locale.moneypunct.byname/thousands_sep.pass.cpp
+++ 
libc++-5.0.1/libcxx/test/std/localization/locale.categories/category.monetary/locale.moneypunct.byname/thousands_sep.pass.cpp
@@ -95,19 +95,19 @@ int main()
 
     {
         Fnf f(LOCALE_fr_FR_UTF_8, 1);
-        assert(f.thousands_sep() == ' ');
+        assert(f.thousands_sep() == '\177');
     }
     {
         Fnt f(LOCALE_fr_FR_UTF_8, 1);
-        assert(f.thousands_sep() == ' ');
+        assert(f.thousands_sep() == '\177');
     }
     {
         Fwf f(LOCALE_fr_FR_UTF_8, 1);
-        assert(f.thousands_sep() == L' ');
+        assert(f.thousands_sep() == L'\u202F');
     }
     {
         Fwt f(LOCALE_fr_FR_UTF_8, 1);
-        assert(f.thousands_sep() == L' ');
+        assert(f.thousands_sep() == L'\u202F');
     }
 // The below tests work around GLIBC's use of U00A0 as mon_thousands_sep
 // and U002E as mon_decimal_point.
@@ -119,8 +119,8 @@ int main()
 #else
     // FIXME libc++ specifically works around \u00A0 by translating it into
     // a regular space.
-    const char sep = ' ';
-    const wchar_t wsep = L'\u00A0';
+    const char sep = '\177';
+    const wchar_t wsep = L'\u202F';
 #endif
     {
         Fnf f(LOCALE_ru_RU_UTF_8, 1);
--- 
libc++-5.0.1.orig/libcxx/test/std/localization/locale.categories/facet.numpunct/locale.numpunct.byname/thousands_sep.pass.cpp
+++ 
libc++-5.0.1/libcxx/test/std/localization/locale.categories/facet.numpunct/locale.numpunct.byname/thousands_sep.pass.cpp
@@ -54,8 +54,8 @@ int main()
     {
         std::locale l(LOCALE_fr_FR_UTF_8);
 #if defined(TEST_HAS_GLIBC)
-        const char sep = ' ';
-        const wchar_t wsep = L' ';
+        const char sep = ',';
+        const wchar_t wsep = L'\u202F';
 #else
         const char sep = ',';
         const wchar_t wsep = L',';

--- End Message ---
--- Begin Message ---
Source: libc++
Source-Version: 6.0-1

We believe that the bug you reported is fixed in the latest version of
libc++, which is due to be installed in the Debian FTP archive.

A summary of the changes between this version and the previous one is
attached.

Thank you for reporting the bug, which will now be closed.  If you
have further comments please address them to 891...@bugs.debian.org,
and the maintainer will reopen the bug report if appropriate.

Debian distribution maintenance software
pp.
Sylvestre Ledru <sylves...@debian.org> (supplier of updated libc++ package)

(This message was generated automatically at their request; if you
believe that there is a problem with it please contact the archive
administrators by mailing ftpmas...@ftp-master.debian.org)


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256

Format: 1.8
Date: Sun, 11 Mar 2018 11:47:45 +0100
Source: libc++
Binary: libc++1 libc++-dev libc++-test libc++abi1 libc++abi-dev libc++abi-test 
libc++-helpers
Architecture: source
Version: 6.0-1
Distribution: unstable
Urgency: medium
Maintainer: LLVM Packaging Team <pkg-llvm-t...@lists.alioth.debian.org>
Changed-By: Sylvestre Ledru <sylves...@debian.org>
Description:
 libc++-dev - LLVM C++ Standard library (development files)
 libc++-helpers - LLVM C++ Standard library - build helpers
 libc++-test - LLVM C++ Standard library (test cases)
 libc++1    - LLVM C++ Standard library
 libc++abi-dev - LLVM low level support for a standard C++ library (development 
fi
 libc++abi-test - libc++abi test cases
 libc++abi1 - LLVM low level support for a standard C++ library
Closes: 891679
Changes:
 libc++ (6.0-1) unstable; urgency=medium
 .
   * New upstream release
   * Packaging moved to debian salsa
   * Build using clang 6 instead of 5
   * Add a watch file
   * Build with the glibc 2.27 (Closes: #891679)
Checksums-Sha1:
 e7cb082d3f895b145a6bd9ef9e729004d3d26b33 2313 libc++_6.0-1.dsc
 b1f3f3ae866cd0c76ac3ef5d8129e3799f0b882e 2278049 libc++_6.0.orig.tar.bz2
 9bb31abe11cb2ecaaee5a690be1a4687b2e30e20 14304 libc++_6.0-1.debian.tar.xz
 00d7d11a89f2297fff5d1996af70c262066dcde2 8710 libc++_6.0-1_amd64.buildinfo
Checksums-Sha256:
 0e0b3823321783358275bd62ddc48e11a79d87907c5d947a729a0233d19d5b2d 2313 
libc++_6.0-1.dsc
 0aa94ca2ee6c3dd7937fc8cf741716f9be28c5766b13ac955f81a65d6ed066c6 2278049 
libc++_6.0.orig.tar.bz2
 7d1a2819c5f1c2603006f541c33e1dd5d0204f369dd12d724d49e2f7f2356c2c 14304 
libc++_6.0-1.debian.tar.xz
 2a7c4692d9f406d0f564611fee68f7851ff7ae0df81aac91fabecfe7b2400960 8710 
libc++_6.0-1_amd64.buildinfo
Files:
 7213333cca7ab9dd9943f5dd81bfaebf 2313 libs optional libc++_6.0-1.dsc
 f9fdb51f8f99e72a2c4827ab09cf82fa 2278049 libs optional libc++_6.0.orig.tar.bz2
 b921fb21b749413c8fa1f2e1a67d6e68 14304 libs optional libc++_6.0-1.debian.tar.xz
 f08a21b839273a6466b31b3b459ccbe0 8710 libs optional 
libc++_6.0-1_amd64.buildinfo

-----BEGIN PGP SIGNATURE-----

iQIzBAEBCAAdFiEEtg21mU05vsTRqVzPfmUo2nUvG+EFAlqlCt8ACgkQfmUo2nUv
G+Gbwg/9HMfatF9C0h8VB3oJVAOLyJt++JY45aCONKfwzA36Bp7KMnGklXRLzFCT
848HnKsXL5CJm1Ryj+JsP41IL9UnOnmKqP9UMCVOE3Wg239NueVEoiADa4YTFTNA
XLLbRWn+Ah3G1mIo9Pwo7PKZ9721OPdjXylHjLJhUKu/2OVAZh0UhYKCL8495wgY
WKPrMxy400POl7Vgbaw/CQDUFgxHetacK8OFjYMiU89oJG44iRRJoQ12b90ngieO
fDmL4F8BqPGhjrovJ9P/pA5Q0B6oU7WR6bVnV3McSkqA6wBG03wJGmFLvqeSYmDc
B3ThHiytpjtN1qdVotOePym4z/kUakAex+8UZDDhslWgWJ0a9WgS+ktT3Bu4VxLl
NnWSVv7pfIk3EDiJU8eU0FmD+Zb7OMUczvjRvUvcZK9V3NsdIeC2aRS994gUsyj2
o8uM/kjWModpUquX9HUsmohhNCvDFq8BZUiAE5RQvWmZpN1ZjWXmC/LBNEzU06wl
soOHeiX6Txwbzpd0ati8pnvBlPQnwavHPg9OuolOwD3v/mj//lCTmVtchknaue3p
yZ0Tm+FTYQNF+H0OYkhcL0djxUWn9gT8Zil2eML47l2IgDWG1ufiBglm9u/evWMw
Oq1g9FLvo9/WRgMwJk//CRJ52kN9BRlupeS6I++3o7Dd2tFXBVI=
=KzbA
-----END PGP SIGNATURE-----

--- End Message ---

Reply via email to