Accepting request 753962 from devel:libraries:c_c++
update to 6.0.0 OBS-URL: https://build.opensuse.org/request/show/753962 OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/fmt?expand=0&rev=4
This commit is contained in:
commit
390095d202
@ -1,30 +0,0 @@
|
|||||||
From: Olaf Hering <olaf@aepfle.de>
|
|
||||||
Date: Mon, 25 Mar 2019 17:10:40 +0100
|
|
||||||
Subject: install pkg-config file into libdir
|
|
||||||
|
|
||||||
Most pkgconfig files contain a Libs: variable, which is either /usr/lib
|
|
||||||
or /usr/lib64. If a 32bit and a 64bit variant of fmt libraries is
|
|
||||||
installed, the last one wins. As a result compiling for the other
|
|
||||||
bitsize will fail.
|
|
||||||
|
|
||||||
Instead of sharedir use libdir as install target.
|
|
||||||
|
|
||||||
Fixes commit 9d0c9c4bb145a286f725cd38c90331eee7addc7f
|
|
||||||
Fixes commit 287342dab10a5a96479b3e21cd11ce671ed8125c
|
|
||||||
|
|
||||||
Signed-off-by: Olaf Hering <olaf@aepfle.de>
|
|
||||||
---
|
|
||||||
CMakeLists.txt | 2 +-
|
|
||||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
||||||
|
|
||||||
--- a/CMakeLists.txt
|
|
||||||
+++ b/CMakeLists.txt
|
|
||||||
@@ -205,7 +205,7 @@ if (FMT_INSTALL)
|
|
||||||
set(FMT_INC_DIR ${CMAKE_INSTALL_INCLUDEDIR}/fmt CACHE STRING
|
|
||||||
"Installation directory for include files, relative to ${CMAKE_INSTALL_PREFIX}.")
|
|
||||||
|
|
||||||
- set(FMT_PKGCONFIG_DIR "${CMAKE_INSTALL_PREFIX}/share/pkgconfig" CACHE PATH
|
|
||||||
+ set(FMT_PKGCONFIG_DIR ${CMAKE_INSTALL_LIBDIR}/pkgconfig CACHE PATH
|
|
||||||
"Installation directory for pkgconfig (.pc) files, relative to ${CMAKE_INSTALL_PREFIX}.")
|
|
||||||
|
|
||||||
# Generate the version, config and target files into the build directory.
|
|
@ -1 +1 @@
|
|||||||
libfmt5
|
libfmt6
|
||||||
|
@ -1,3 +0,0 @@
|
|||||||
version https://git-lfs.github.com/spec/v1
|
|
||||||
oid sha256:defa24a9af4c622a7134076602070b45721a43c51598c8456ec6f2c4dbb51c89
|
|
||||||
size 662493
|
|
3
fmt-6.0.0.tar.gz
Normal file
3
fmt-6.0.0.tar.gz
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
version https://git-lfs.github.com/spec/v1
|
||||||
|
oid sha256:f1907a58d5e86e6c382e51441d92ad9e23aea63827ba47fd647eacc0d3a16c78
|
||||||
|
size 708425
|
102
fmt-bigendian_1.patch
Normal file
102
fmt-bigendian_1.patch
Normal file
@ -0,0 +1,102 @@
|
|||||||
|
From bb205d940d8929d086eadb59705349dbdaa1a274 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Victor Zverovich <victor.zverovich@gmail.com>
|
||||||
|
Date: Fri, 29 Nov 2019 05:15:59 -0800
|
||||||
|
Subject: [PATCH] Fix fallback pointer formatting on big endian
|
||||||
|
|
||||||
|
---
|
||||||
|
include/fmt/format-inl.h | 2 +-
|
||||||
|
include/fmt/format.h | 40 ++++++++++++++++++++++++++++------------
|
||||||
|
test/format-impl-test.cc | 2 +-
|
||||||
|
3 files changed, 30 insertions(+), 14 deletions(-)
|
||||||
|
|
||||||
|
Index: fmt-6.0.0/include/fmt/format-inl.h
|
||||||
|
===================================================================
|
||||||
|
--- fmt-6.0.0.orig/include/fmt/format-inl.h
|
||||||
|
+++ fmt-6.0.0/include/fmt/format-inl.h
|
||||||
|
@@ -241,7 +241,7 @@ FMT_FUNC void system_error::init(int err
|
||||||
|
namespace internal {
|
||||||
|
|
||||||
|
template <> FMT_FUNC int count_digits<4>(internal::fallback_uintptr n) {
|
||||||
|
- // Assume little endian; pointer formatting is implementation-defined anyway.
|
||||||
|
+ // fallback_uintptr is always stored in little endian.
|
||||||
|
int i = static_cast<int>(sizeof(void*)) - 1;
|
||||||
|
while (i > 0 && n.value[i] == 0) --i;
|
||||||
|
auto char_digits = std::numeric_limits<unsigned char>::digits / 4;
|
||||||
|
Index: fmt-6.0.0/include/fmt/format.h
|
||||||
|
===================================================================
|
||||||
|
--- fmt-6.0.0.orig/include/fmt/format.h
|
||||||
|
+++ fmt-6.0.0/include/fmt/format.h
|
||||||
|
@@ -196,17 +196,7 @@ FMT_END_NAMESPACE
|
||||||
|
FMT_BEGIN_NAMESPACE
|
||||||
|
namespace internal {
|
||||||
|
|
||||||
|
-// A fallback implementation of uintptr_t for systems that lack it.
|
||||||
|
-struct fallback_uintptr {
|
||||||
|
- unsigned char value[sizeof(void*)];
|
||||||
|
-};
|
||||||
|
-#ifdef UINTPTR_MAX
|
||||||
|
-using uintptr_t = ::uintptr_t;
|
||||||
|
-#else
|
||||||
|
-using uintptr_t = fallback_uintptr;
|
||||||
|
-#endif
|
||||||
|
-
|
||||||
|
-// An equivalent of `*reinterpret_cast<Dest*>(&source)` that doesn't produce
|
||||||
|
+// An equivalent of `*reinterpret_cast<Dest*>(&source)` that doesn't have
|
||||||
|
// undefined behavior (e.g. due to type aliasing).
|
||||||
|
// Example: uint64_t d = bit_cast<uint64_t>(2.718);
|
||||||
|
template <typename Dest, typename Source>
|
||||||
|
@@ -217,6 +207,32 @@ inline Dest bit_cast(const Source& sourc
|
||||||
|
return dest;
|
||||||
|
}
|
||||||
|
|
||||||
|
+inline bool is_big_endian() {
|
||||||
|
+ auto u = 1u;
|
||||||
|
+ struct bytes { char data[sizeof(u)]; };
|
||||||
|
+ return bit_cast<bytes>(u).data[0] == 0;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+// A fallback implementation of uintptr_t for systems that lack it.
|
||||||
|
+struct fallback_uintptr {
|
||||||
|
+ unsigned char value[sizeof(void*)];
|
||||||
|
+
|
||||||
|
+ fallback_uintptr() = default;
|
||||||
|
+ explicit fallback_uintptr(const void* p) {
|
||||||
|
+ *this = bit_cast<fallback_uintptr>(p);
|
||||||
|
+ if (is_big_endian()) std::memmove(value, value, sizeof(void*));
|
||||||
|
+ }
|
||||||
|
+};
|
||||||
|
+#ifdef UINTPTR_MAX
|
||||||
|
+using uintptr_t = ::uintptr_t;
|
||||||
|
+inline uintptr_t to_uintptr(const void* p) { return bit_cast<uintptr_t>(p); }
|
||||||
|
+#else
|
||||||
|
+using uintptr_t = fallback_uintptr;
|
||||||
|
+inline fallback_uintptr to_uintptr(const void* p) {
|
||||||
|
+ return fallback_uintptr(p);
|
||||||
|
+}
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
// An approximation of iterator_t for pre-C++20 systems.
|
||||||
|
template <typename T>
|
||||||
|
using iterator_t = decltype(std::begin(std::declval<T&>()));
|
||||||
|
@@ -1731,7 +1747,7 @@ class arg_formatter_base {
|
||||||
|
}
|
||||||
|
|
||||||
|
void write_pointer(const void* p) {
|
||||||
|
- writer_.write_pointer(internal::bit_cast<internal::uintptr_t>(p), specs_);
|
||||||
|
+ writer_.write_pointer(internal::to_uintptr(p), specs_);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected:
|
||||||
|
Index: fmt-6.0.0/test/format-impl-test.cc
|
||||||
|
===================================================================
|
||||||
|
--- fmt-6.0.0.orig/test/format-impl-test.cc
|
||||||
|
+++ fmt-6.0.0/test/format-impl-test.cc
|
||||||
|
@@ -259,7 +259,7 @@ TEST(UtilTest, CountDigits) {
|
||||||
|
TEST(UtilTest, WriteUIntPtr) {
|
||||||
|
fmt::memory_buffer buf;
|
||||||
|
fmt::internal::writer writer(buf);
|
||||||
|
- writer.write_pointer(fmt::internal::bit_cast<fmt::internal::fallback_uintptr>(
|
||||||
|
+ writer.write_pointer(fmt::internal::fallback_uintptr(
|
||||||
|
reinterpret_cast<void*>(0xface)),
|
||||||
|
nullptr);
|
||||||
|
EXPECT_EQ("0xface", to_string(buf));
|
25
fmt-bigendian_2.patch
Normal file
25
fmt-bigendian_2.patch
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
From aaf829bfb124fcd7953c33f38154027537efb072 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Victor Zverovich <victor.zverovich@gmail.com>
|
||||||
|
Date: Fri, 29 Nov 2019 07:07:08 -0800
|
||||||
|
Subject: [PATCH] Fix fallback pointer formatting on big endian, take 2
|
||||||
|
|
||||||
|
---
|
||||||
|
include/fmt/format.h | 5 ++++-
|
||||||
|
1 file changed, 4 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
|
Index: fmt-6.0.0/include/fmt/format.h
|
||||||
|
===================================================================
|
||||||
|
--- fmt-6.0.0.orig/include/fmt/format.h
|
||||||
|
+++ fmt-6.0.0/include/fmt/format.h
|
||||||
|
@@ -220,7 +220,10 @@ struct fallback_uintptr {
|
||||||
|
fallback_uintptr() = default;
|
||||||
|
explicit fallback_uintptr(const void* p) {
|
||||||
|
*this = bit_cast<fallback_uintptr>(p);
|
||||||
|
- if (is_big_endian()) std::memmove(value, value, sizeof(void*));
|
||||||
|
+ if (is_big_endian()) {
|
||||||
|
+ for (size_t i = 0, j = sizeof(void*) - 1; i < j; ++i, --j)
|
||||||
|
+ std::swap(value[i], value[j]);
|
||||||
|
+ }
|
||||||
|
}
|
||||||
|
};
|
||||||
|
#ifdef UINTPTR_MAX
|
35
fmt-bigendian_3.patch
Normal file
35
fmt-bigendian_3.patch
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
From fafb03fa6d764f3cedf80e222a1e5998b80ef79c Mon Sep 17 00:00:00 2001
|
||||||
|
From: Victor Zverovich <victor.zverovich@gmail.com>
|
||||||
|
Date: Sat, 30 Nov 2019 06:35:52 -0800
|
||||||
|
Subject: [PATCH] Fix handling of fallback_uintptr
|
||||||
|
|
||||||
|
---
|
||||||
|
include/fmt/format.h | 8 +++++++-
|
||||||
|
1 file changed, 7 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
|
Index: fmt-6.0.0/include/fmt/format.h
|
||||||
|
===================================================================
|
||||||
|
--- fmt-6.0.0.orig/include/fmt/format.h
|
||||||
|
+++ fmt-6.0.0/include/fmt/format.h
|
||||||
|
@@ -281,6 +281,12 @@ template <typename Container>
|
||||||
|
inline typename Container::value_type* get_data(Container& c) {
|
||||||
|
return c.data();
|
||||||
|
}
|
||||||
|
+template <typename T> constexpr int digits() {
|
||||||
|
+ return std::numeric_limits<T>::digits;
|
||||||
|
+}
|
||||||
|
+template <> constexpr int digits<fallback_uintptr>() {
|
||||||
|
+ return sizeof(void*) * std::numeric_limits<unsigned char>::digits;
|
||||||
|
+}
|
||||||
|
|
||||||
|
#ifdef _SECURE_SCL
|
||||||
|
// Make a checked iterator to avoid MSVC warnings.
|
||||||
|
@@ -900,7 +906,7 @@ Char* format_uint(Char* buffer, internal
|
||||||
|
template <unsigned BASE_BITS, typename Char, typename It, typename UInt>
|
||||||
|
inline It format_uint(It out, UInt value, int num_digits, bool upper = false) {
|
||||||
|
// Buffer should be large enough to hold all digits (digits / BASE_BITS + 1).
|
||||||
|
- char buffer[std::numeric_limits<UInt>::digits / BASE_BITS + 1];
|
||||||
|
+ char buffer[digits<UInt>() / BASE_BITS + 1];
|
||||||
|
format_uint<BASE_BITS>(buffer, value, num_digits, upper);
|
||||||
|
return internal::copy_str<Char>(buffer, buffer + num_digits, out);
|
||||||
|
}
|
38
fmt-bigendian_4.patch
Normal file
38
fmt-bigendian_4.patch
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
From ba6e330fd3a9c2d859d651c59d6206620940a265 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Victor Zverovich <victor.zverovich@gmail.com>
|
||||||
|
Date: Sat, 30 Nov 2019 08:19:58 -0800
|
||||||
|
Subject: [PATCH] digits -> num_bits
|
||||||
|
|
||||||
|
---
|
||||||
|
include/fmt/format.h | 9 +++++----
|
||||||
|
1 file changed, 5 insertions(+), 4 deletions(-)
|
||||||
|
|
||||||
|
Index: fmt-6.0.0/include/fmt/format.h
|
||||||
|
===================================================================
|
||||||
|
--- fmt-6.0.0.orig/include/fmt/format.h
|
||||||
|
+++ fmt-6.0.0/include/fmt/format.h
|
||||||
|
@@ -281,11 +281,12 @@ template <typename Container>
|
||||||
|
inline typename Container::value_type* get_data(Container& c) {
|
||||||
|
return c.data();
|
||||||
|
}
|
||||||
|
-template <typename T> constexpr int digits() {
|
||||||
|
+template <typename T> constexpr int num_bits() {
|
||||||
|
return std::numeric_limits<T>::digits;
|
||||||
|
}
|
||||||
|
-template <> constexpr int digits<fallback_uintptr>() {
|
||||||
|
- return sizeof(void*) * std::numeric_limits<unsigned char>::digits;
|
||||||
|
+template <> constexpr int num_bits<fallback_uintptr>() {
|
||||||
|
+ return static_cast<int>(sizeof(void*) *
|
||||||
|
+ std::numeric_limits<unsigned char>::digits);
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifdef _SECURE_SCL
|
||||||
|
@@ -906,7 +907,7 @@ Char* format_uint(Char* buffer, internal
|
||||||
|
template <unsigned BASE_BITS, typename Char, typename It, typename UInt>
|
||||||
|
inline It format_uint(It out, UInt value, int num_digits, bool upper = false) {
|
||||||
|
// Buffer should be large enough to hold all digits (digits / BASE_BITS + 1).
|
||||||
|
- char buffer[digits<UInt>() / BASE_BITS + 1];
|
||||||
|
+ char buffer[num_bits<UInt>() / BASE_BITS + 1];
|
||||||
|
format_uint<BASE_BITS>(buffer, value, num_digits, upper);
|
||||||
|
return internal::copy_str<Char>(buffer, buffer + num_digits, out);
|
||||||
|
}
|
17
fmt.changes
17
fmt.changes
@ -1,3 +1,20 @@
|
|||||||
|
-------------------------------------------------------------------
|
||||||
|
Sun Dec 1 08:54:54 UTC 2019 - Luigi Baldoni <aloisio@gmx.com>
|
||||||
|
|
||||||
|
- Added fmt-bigendian_1.patch, fmt-bigendian_2.patch,
|
||||||
|
fmt-bigendian_3.patch and fmt-bigendian_4.patch to fix tests
|
||||||
|
on big endian targets
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Fri Nov 29 08:46:30 UTC 2019 - Luigi Baldoni <aloisio@gmx.com>
|
||||||
|
|
||||||
|
- Update to version 6.0.0
|
||||||
|
(too many changes to list, see ChangeLog.rst)
|
||||||
|
- Dropped 0001-install-pkg-config-file-into-libdir.patch (no
|
||||||
|
longer necessary)
|
||||||
|
- Switched to MIT license
|
||||||
|
- Increased SOVERSION to 6
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Mon Mar 25 16:21:01 UTC 2019 - olaf@aepfle.de
|
Mon Mar 25 16:21:01 UTC 2019 - olaf@aepfle.de
|
||||||
|
|
||||||
|
17
fmt.spec
17
fmt.spec
@ -1,7 +1,7 @@
|
|||||||
#
|
#
|
||||||
# spec file for package fmt
|
# spec file for package fmt
|
||||||
#
|
#
|
||||||
# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
|
# Copyright (c) 2019 SUSE LLC
|
||||||
#
|
#
|
||||||
# All modifications and additions to the file contributed by third parties
|
# All modifications and additions to the file contributed by third parties
|
||||||
# remain the property of their copyright owners, unless otherwise agreed
|
# remain the property of their copyright owners, unless otherwise agreed
|
||||||
@ -16,17 +16,24 @@
|
|||||||
#
|
#
|
||||||
|
|
||||||
|
|
||||||
%define sover 5
|
%define sover 6
|
||||||
Name: fmt
|
Name: fmt
|
||||||
Version: 5.3.0
|
Version: 6.0.0
|
||||||
Release: 0
|
Release: 0
|
||||||
Summary: A formatting library for C++
|
Summary: A formatting library for C++
|
||||||
License: BSD-2-Clause
|
License: MIT
|
||||||
Group: Development/Libraries/C and C++
|
Group: Development/Libraries/C and C++
|
||||||
URL: http://fmtlib.net/
|
URL: http://fmtlib.net/
|
||||||
Source0: https://github.com/fmtlib/fmt/archive/%{version}.tar.gz#/%{name}-%{version}.tar.gz
|
Source0: https://github.com/fmtlib/fmt/archive/%{version}.tar.gz#/%{name}-%{version}.tar.gz
|
||||||
Source1: baselibs.conf
|
Source1: baselibs.conf
|
||||||
Patch0: 0001-install-pkg-config-file-into-libdir.patch
|
# PATCH-FIX-UPSTREAM fmt-bigendian_1.patch
|
||||||
|
Patch0: fmt-bigendian_1.patch
|
||||||
|
# PATCH-FIX-UPSTREAM fmt-bigendian_2.patch
|
||||||
|
Patch1: fmt-bigendian_2.patch
|
||||||
|
# PATCH-FIX-UPSTREAM fmt-bigendian_3.patch
|
||||||
|
Patch2: fmt-bigendian_3.patch
|
||||||
|
# PATCH-FIX-UPSTREAM fmt-bigendian_4.patch
|
||||||
|
Patch3: fmt-bigendian_4.patch
|
||||||
BuildRequires: cmake
|
BuildRequires: cmake
|
||||||
BuildRequires: gcc-c++
|
BuildRequires: gcc-c++
|
||||||
BuildRequires: pkgconfig
|
BuildRequires: pkgconfig
|
||||||
|
Loading…
Reference in New Issue
Block a user