Hello community, here is the log from the commit of package llvm4 for openSUSE:Factory checked in at 2018-03-18 21:44:33 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/llvm4 (Old) and /work/SRC/openSUSE:Factory/.llvm4.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "llvm4" Sun Mar 18 21:44:33 2018 rev:15 rq:586679 version:4.0.1 Changes: -------- --- /work/SRC/openSUSE:Factory/llvm4/llvm4.changes 2018-01-31 19:54:36.433900203 +0100 +++ /work/SRC/openSUSE:Factory/.llvm4.new/llvm4.changes 2018-03-18 21:44:34.450298339 +0100 @@ -1,0 +2,29 @@ +Wed Mar 14 08:11:14 UTC 2018 - m...@suse.com + +- Remove liblldb4 and lldb4-devel from baselibs.conf. They are only + build for x86_64, so no point having them in baselibs.conf. + +------------------------------------------------------------------- +Tue Mar 13 13:55:20 UTC 2018 - m...@suse.com + +- libcxx.glibc2.27.diff + * Fix build with glibc >= 2.27. Various locales in glibc 2.27 + started using narrow non-break space for thousand separators. + libc++ tests must be adapted. + +------------------------------------------------------------------- +Wed Feb 7 14:21:48 UTC 2018 - m...@suse.com + +- Use %optflags, except for FORTIFY_SOURCE which is not compatible + with compiler-rt. +- Exclude static libraries differently. + * Drop llvm-split-static-library-exports-into-their-own-export-file.diff + * Drop clang-split-static-library-exports-into-their-own-export-file.diff + * Update llvm-do-not-install-static-libraries.patch to not use + EXCLUDE_FROM_ALL which is not available in cmake 3.5. + - This fixes build on SLE12. +- Do not force gcc6 on OpenSUSE - fixes build. +- Reduce the amount of concurent link jobs by increasing their + memory requirement - to reduce stalls in OBS. + +------------------------------------------------------------------- Old: ---- clang-split-static-library-exports-into-their-own-export-file.diff llvm-split-static-library-exports-into-their-own-export-file.diff New: ---- libcxx.glibc2.27.diff ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ llvm4.spec ++++++ --- /var/tmp/diff_new_pack.jzr2Vy/_old 2018-03-18 21:44:37.878174849 +0100 +++ /var/tmp/diff_new_pack.jzr2Vy/_new 2018-03-18 21:44:37.894174273 +0100 @@ -81,8 +81,6 @@ Patch10: libsanitizer.patch Patch11: clang-ignore-stack-clash-protector.patch Patch12: llvm-add_a_LLVM_USE_LINKER.patch -Patch13: llvm-split-static-library-exports-into-their-own-export-file.diff -Patch14: clang-split-static-library-exports-into-their-own-export-file.diff # PATCH-FIX-OPENSUSE lldb-cmake.patch -- Let us set LLDB_REVISION and fix ncurses include path. Patch15: lldb-cmake.patch # PATCH-FIX-OPENSUSE lldb-add-pthread-dl-libs.patch -- Add -lpthread and -ldl options to the end of LDFLAGS to fix linking problems. @@ -96,6 +94,7 @@ Patch23: llvm-lit-Re-apply-Fix-some-convoluted-logic-around-Unicod.patch Patch24: libcxx-fix-python3-syntax-error.patch Patch25: n_clang_allow_BUILD_SHARED_LIBRARY.patch +Patch26: libcxx.glibc2.27.diff BuildRequires: binutils-devel >= 2.21.90 BuildRequires: binutils-gold BuildRequires: cmake @@ -116,7 +115,7 @@ BuildRoot: %{_tmppath}/%{name}-%{version}-build # llvm does not work on ppc or s390 ExcludeArch: ppc s390 -%if 0%{?sle_version} && 0%{?sle_version} <= 130000 +%if 0%{?sle_version} && 0%{?sle_version} <= 130000 && !0%{?is_opensuse} BuildRequires: gcc6 BuildRequires: gcc6-c++ %else @@ -490,7 +489,6 @@ %patch10 %patch11 -p1 %patch12 -p1 -%patch13 -p0 %patch18 -p1 %patch19 -p1 %patch22 -p1 @@ -498,13 +496,16 @@ %patch25 -p1 pushd cfe-%{version}.src -%patch14 -p1 %patch20 -p1 %patch21 -p1 popd pushd libcxx-%{version}.src %patch24 -p1 + +%if 0%{?suse_version} > 1500 +%patch26 -p2 +%endif popd %if %{with lldb} @@ -557,9 +558,14 @@ sed -i s,LLVM_REVISION,\"%{_revsn}\",g tools/clang/lib/Basic/Version.cpp %build -# Disable c/xx/flags as the clang fails to build with hardening right now -#flags="%%{optflags} -fno-strict-aliasing" -flags="-fno-strict-aliasing" + +# Remove the -D_FORTIFY_SOURCE=2 from optflags because llvm does not build +# correctly with hardening. The problem is in sanitizers from compiler-rt. +flags="%{optflags}" +flags=${flags//-D_FORTIFY_SOURCE=?/-D_FORTIFY_SOURCE=0} + +flags+=" -fno-strict-aliasing" + %ifarch armv6hl flags+=" -mfloat-abi=hard -march=armv6zk -mtune=arm1176jzf-s -mfpu=vfp" %endif @@ -589,15 +595,21 @@ cat /proc/meminfo echo "System limits:" ulimit -a +max_mem=$(awk '/MemTotal/ { print $2 }' /proc/meminfo) if test -n "$max_link_jobs" -a "$max_link_jobs" -gt 1 ; then - mem_per_process=2000000 - max_mem=$(awk '/MemTotal/ { print $2 }' /proc/meminfo) - max_jobs="$(($max_mem / $mem_per_process))" + mem_per_link_job=3000000 + max_jobs="$(($max_mem / $mem_per_link_job))" test "$max_link_jobs" -gt "$max_jobs" && max_link_jobs="$max_jobs" && echo "Warning: Reducing number of link jobs to $max_jobs because of memory limits" test "$max_link_jobs" -le 0 && max_link_jobs=1 && echo "Warning: Not linking in parallel at all becuse of memory limits" fi +if test -n "$max_compile_jobs" -a "$max_compile_jobs" -gt 1 ; then + mem_per_compile_job=1500000 + max_jobs="$(($max_mem / $mem_per_compile_job))" + test "$max_compile_jobs" -gt "$max_jobs" && max_compile_jobs="$max_jobs" && echo "Warning: Reducing number of compile jobs to $max_jobs because of memory limits" + test "$max_compile_jobs" -le 0 && max_compile_jobs=1 && echo "Warning: Not compiling in parallel at all becuse of memory limits" +fi -%if 0%{?sle_version} && 0%{?sle_version} <= 130000 +%if 0%{?sle_version} && 0%{?sle_version} <= 130000 && !0%{?is_opensuse} export CC=gcc-6 export CXX=g++-6 %endif @@ -638,6 +650,16 @@ ninja -v %{?_smp_mflags} clang cd .. +# Remove files that won't be needed anymore. +# This reduces the total amount of disk space used during build. (bnc#1074625) +find ./stage1 -name '*.o' -delete +find ./stage1 -name '*.a' \ + -and -not -name 'libclang*.a' \ + -and -not -name 'libFuzzer.a' \ + -and -not -name 'libc++.a' \ + -and -not -name 'libc++experimental.a' \ + -delete + %define __builddir build export PATH=${PWD}/stage1/bin:$PATH export CC=${PWD}/stage1/bin/clang @@ -655,8 +677,8 @@ -DLLVM_PARALLEL_COMPILE_JOBS="$max_compile_jobs" \ -DLLVM_PARALLEL_LINK_JOBS="$max_link_jobs" \ %ifarch %{arm} s390 %{ix86} - -DCMAKE_C_FLAGS_RELWITHDEBINFO="-O2 -g1 -DNDEBUG" \ - -DCMAKE_CXX_FLAGS_RELWITHDEBINFO="-O2 -g1 -DNDEBUG" \ + -DCMAKE_C_FLAGS_RELWITHDEBINFO="$flags -g1" \ + -DCMAKE_CXX_FLAGS_RELWITHDEBINFO="$flags -g1" \ %endif -DENABLE_LINKER_BUILD_ID=ON \ -DLLVM_TABLEGEN="${LLVM_TABLEGEN}" \ @@ -774,8 +796,6 @@ # Stuff we don't want to include rm %{buildroot}%{_mandir}/man1/lit.1 -rm %{buildroot}%{_libdir}/cmake/llvm/LLVMStaticExports*.cmake - rm -rf %{buildroot}%{_includedir}/lld %if %{with libcxx} @@ -901,6 +921,12 @@ %endif %endif +# Remove files that won't be needed anymore. +# This reduces the total amount of disk space used during build. (bnc#1074625) +# This is meant to happen after build, install and check, but before +# extracting debuginfos or creating the final RPMs. +rm -rf ./stage1 ./build + %post -n libLLVM%{_sonum} -p /sbin/ldconfig %postun -n libLLVM%{_sonum} -p /sbin/ldconfig %post -n libclang%{_sonum} -p /sbin/ldconfig ++++++ baselibs.conf ++++++ --- /var/tmp/diff_new_pack.jzr2Vy/_old 2018-03-18 21:44:37.966171679 +0100 +++ /var/tmp/diff_new_pack.jzr2Vy/_new 2018-03-18 21:44:37.970171535 +0100 @@ -1,6 +1,5 @@ libLLVM4 libclang4 -liblldb4 libLTO4 llvm4-devel provides "llvm-devel-<targettype> = <version>" @@ -8,7 +7,6 @@ clang4-devel provides "clang-devel-<targettype> = <version>" conflicts "otherproviders(clang-devel-<targettype>)" -lldb4-devel llvm4-LTO-devel provides "llvm-LTO-devel-<targettype> = <version>" conflicts "otherproviders(llvm-LTO-devel-<targettype>)" ++++++ libcxx.glibc2.27.diff ++++++ --- 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','; ++++++ llvm-do-not-install-static-libraries.patch ++++++ --- /var/tmp/diff_new_pack.jzr2Vy/_old 2018-03-18 21:44:38.046168797 +0100 +++ /var/tmp/diff_new_pack.jzr2Vy/_new 2018-03-18 21:44:38.050168653 +0100 @@ -6,7 +6,7 @@ =================================================================== --- llvm-4.0.1.src.orig/cmake/modules/AddLLVM.cmake +++ llvm-4.0.1.src/cmake/modules/AddLLVM.cmake -@@ -595,10 +595,18 @@ macro(add_llvm_library name) +@@ -591,10 +591,19 @@ macro(add_llvm_library name) set_property(GLOBAL PROPERTY LLVM_HAS_EXPORTS True) endif() @@ -20,11 +20,12 @@ + ${install_type} DESTINATION ${install_dir} + COMPONENT ${name}) + else() -+ install(TARGETS ${name} -+ ${export_to_llvmexports} -+ ${install_type} DESTINATION ${install_dir} -+ COMPONENT ${name} -+ EXCLUDE_FROM_ALL) ++ if(NOT LLVM_BUILD_LLVM_DYLIB) ++ install(TARGETS ${name} ++ ${export_to_llvmexports} ++ ${install_type} DESTINATION ${install_dir} ++ COMPONENT ${name}) ++ endif() + endif() if (NOT CMAKE_CONFIGURATION_TYPES) @@ -51,13 +52,20 @@ =================================================================== --- llvm-4.0.1.src.orig/lldb-4.0.1.src/cmake/modules/AddLLDB.cmake +++ llvm-4.0.1.src/lldb-4.0.1.src/cmake/modules/AddLLDB.cmake -@@ -88,7 +88,8 @@ function(add_lldb_library name) - install(TARGETS ${name} - COMPONENT ${name} - LIBRARY DESTINATION lib${LLVM_LIBDIR_SUFFIX} +@@ -85,10 +85,12 @@ function(add_lldb_library name) + LIBRARY DESTINATION ${out_dir} + ARCHIVE DESTINATION ${out_dir}) + else() +- install(TARGETS ${name} +- COMPONENT ${name} +- LIBRARY DESTINATION lib${LLVM_LIBDIR_SUFFIX} - ARCHIVE DESTINATION lib${LLVM_LIBDIR_SUFFIX}) -+ ARCHIVE DESTINATION lib${LLVM_LIBDIR_SUFFIX} -+ EXCLUDE_FROM_ALL) ++ if(NOT LLVM_BUILD_LLVM_DYLIB) ++ install(TARGETS ${name} ++ COMPONENT ${name} ++ LIBRARY DESTINATION lib${LLVM_LIBDIR_SUFFIX} ++ ARCHIVE DESTINATION lib${LLVM_LIBDIR_SUFFIX}) ++ endif() endif() if (NOT CMAKE_CONFIGURATION_TYPES) add_custom_target(install-${name}