From 93cadd32978d6727b4c3121c67f4dbd980db6da8cb608fd64d3254c1bbbae7ba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adrian=20Schr=C3=B6ter?= Date: Fri, 3 May 2024 14:20:34 +0200 Subject: [PATCH] Sync from SUSE:SLFO:Main lib2geom revision 92e4210fd04cfb572254fc9a3f881f3a --- .gitattributes | 23 +++++++ fix-pkgconfig-libdir-path.patch | 12 ++++ lib2geom-1.3.tar.gz | 3 + lib2geom.changes | 99 ++++++++++++++++++++++++++++ lib2geom.spec | 112 ++++++++++++++++++++++++++++++++ skip_failing_tests.diff | 81 +++++++++++++++++++++++ 6 files changed, 330 insertions(+) create mode 100644 .gitattributes create mode 100644 fix-pkgconfig-libdir-path.patch create mode 100644 lib2geom-1.3.tar.gz create mode 100644 lib2geom.changes create mode 100644 lib2geom.spec create mode 100644 skip_failing_tests.diff diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..9b03811 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,23 @@ +## Default LFS +*.7z filter=lfs diff=lfs merge=lfs -text +*.bsp filter=lfs diff=lfs merge=lfs -text +*.bz2 filter=lfs diff=lfs merge=lfs -text +*.gem filter=lfs diff=lfs merge=lfs -text +*.gz filter=lfs diff=lfs merge=lfs -text +*.jar filter=lfs diff=lfs merge=lfs -text +*.lz filter=lfs diff=lfs merge=lfs -text +*.lzma filter=lfs diff=lfs merge=lfs -text +*.obscpio filter=lfs diff=lfs merge=lfs -text +*.oxt filter=lfs diff=lfs merge=lfs -text +*.pdf filter=lfs diff=lfs merge=lfs -text +*.png filter=lfs diff=lfs merge=lfs -text +*.rpm filter=lfs diff=lfs merge=lfs -text +*.tbz filter=lfs diff=lfs merge=lfs -text +*.tbz2 filter=lfs diff=lfs merge=lfs -text +*.tgz filter=lfs diff=lfs merge=lfs -text +*.ttf filter=lfs diff=lfs merge=lfs -text +*.txz filter=lfs diff=lfs merge=lfs -text +*.whl filter=lfs diff=lfs merge=lfs -text +*.xz filter=lfs diff=lfs merge=lfs -text +*.zip filter=lfs diff=lfs merge=lfs -text +*.zst filter=lfs diff=lfs merge=lfs -text diff --git a/fix-pkgconfig-libdir-path.patch b/fix-pkgconfig-libdir-path.patch new file mode 100644 index 0000000..303747e --- /dev/null +++ b/fix-pkgconfig-libdir-path.patch @@ -0,0 +1,12 @@ +Index: lib2geom-1.2.2/2geom.pc.in +=================================================================== +--- lib2geom-1.2.2.orig/2geom.pc.in ++++ lib2geom-1.2.2/2geom.pc.in +@@ -1,6 +1,6 @@ + prefix=@CMAKE_INSTALL_PREFIX@ + exec_prefix=${prefix} +-libdir=${exec_prefix}/lib ++libdir=%{prefix}/@CMAKE_INSTALL_LIBDIR@ + includedir=${prefix}/include + + Name: 2geom diff --git a/lib2geom-1.3.tar.gz b/lib2geom-1.3.tar.gz new file mode 100644 index 0000000..d7e6ddb --- /dev/null +++ b/lib2geom-1.3.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:732a81c6564d5c388bae44f0fdd350f628375e23294941abbe928ab87ec937ab +size 1450203 diff --git a/lib2geom.changes b/lib2geom.changes new file mode 100644 index 0000000..7c01900 --- /dev/null +++ b/lib2geom.changes @@ -0,0 +1,99 @@ +------------------------------------------------------------------- +Wed Aug 23 13:38:04 UTC 2023 - Jan Engelhardt + +- Add -DNDEBUG to CFLAGS explicitly, since the i586 build depends + on it. + +------------------------------------------------------------------- +Thu Jul 27 20:40:32 UTC 2023 - Dirk Stoecker + +- add skip_failing_tests.diff to fix instable intersection tests + +------------------------------------------------------------------- +Mon Jul 24 21:11:01 UTC 2023 - thod_@gmx.de + +- Update to version 1.3 + * In-place expansion of bounding boxes + * Enhancements to the Path class + * See the full release notes + https://gitlab.com/inkscape/lib2geom/-/releases/1.3 + +------------------------------------------------------------------- +Thu Mar 2 10:46:51 UTC 2023 - Martin Liška + +- Use -fexcess-precision=fast as GCC 13 changes the default + for C++ compiler and without the change some tests fail on i586. + More info can be seen here: + https://gcc.gnu.org/gcc-13/porting_to.html#excess-precision + +------------------------------------------------------------------- +Sun Dec 18 14:52:12 UTC 2022 - thod_@gmx.de + +- Update to version 1.2.2 + * Remove assertions in the intersection routine for EllipticalArc + * fix-floating-point-epsilon-in-tests-i586.patch fixed upstream + +------------------------------------------------------------------- +Mon Jun 28 10:16:01 UTC 2021 - Antonio Larrosa + +- Add patch to fix libdir in pkgconfig file and to install it to + the right location under %{_libdir}/pkgconfig instead of + %{_prefix}/lib/pkgconfig which is being used by upstream: + * fix-pkgconfig-libdir-path.patch + +------------------------------------------------------------------- +Wed Jun 16 07:47:47 UTC 2021 - Antonio Larrosa + +- Use -DCMAKE_SKIP_RPATH:BOOL=OFF so rpath is set on tests and they + can find the library in the build directory. Also use + -DCMAKE_SKIP_INSTALL_RPATHS:BOOL=ON so rpaths are not set in + installed files. + +------------------------------------------------------------------- +Tue Jun 15 16:25:05 UTC 2021 - Antonio Larrosa + +- Add patch to fix a floating point error when running tests on + i586: + * fix-floating-point-epsilon-in-tests-i586.patch + +------------------------------------------------------------------- +Tue Jun 15 07:53:25 UTC 2021 - Antonio Larrosa + +- Update to version 1.1: + * 2Geom v1.1 is not ABI compatible with v1.0, it switches + from boost::optional to std::optional. + * Add Geom::Parallelogram + * Add Geom::PathIteratorSink::inPath() + * Add Geom::are_near_rel() for Geom::Point + * Move headers to include directory + * Make build system git submodule friendly + * Fix Python 3 support (py2geom) + * Remove Python 2 support (py2geom) + +------------------------------------------------------------------- +Tue May 5 07:15:56 UTC 2020 - Dan Čermák + +- Cleanup spec file + * don't use _service, spectool can download the sources + * fix install location of the library + * use macros more consistently + +------------------------------------------------------------------- +Mon May 04 22:14:56 UTC 2020 - andythe_great@pm.me + +- Update to version 1.0: + * Release version 1.0 + * Stabilize API for upcoming release + * Embed googletest in source tree. + * Remove googletest as submodule + * README: Fix path to toys dir + * NEWS: Initial draft of a release announcement for 1.0 + * Fix crash in itemBounds returns an empty interval when the bounds are undefined + * CMake/py2geom: Remove broken/unnecessary win32-specific code + * CMake/py2geom: Make compatible with Boost versions lower than 1.67 + * Proper depends + +------------------------------------------------------------------- +Mon May 4 21:57:40 UTC 2020 - andy great + +- Initail package release. diff --git a/lib2geom.spec b/lib2geom.spec new file mode 100644 index 0000000..963341b --- /dev/null +++ b/lib2geom.spec @@ -0,0 +1,112 @@ +# +# spec file for package lib2geom +# +# Copyright (c) 2023 SUSE LLC +# +# All modifications and additions to the file contributed by third parties +# remain the property of their copyright owners, unless otherwise agreed +# upon. The license for this file, and modifications and additions to the +# file, is the same license as for the pristine package itself (unless the +# license for the pristine package is not an Open Source License, in which +# case the license is the MIT License). An "Open Source License" is a +# license that conforms to the Open Source Definition (Version 1.9) +# published by the Open Source Initiative. + +# Please submit bugfixes or comments via https://bugs.opensuse.org/ +# + + +%define __builder ninja +%define sonum 1_3_0 +%define sover 1.3.0 +%define libname lib2geom%{sonum} +%define develname 2geom +%define short_version 1.3 +Name: lib2geom +Version: 1.3.0 +Release: 0 +Summary: Easy to use 2D geometry library in C++ +License: LGPL-2.1-only AND MPL-1.1 +URL: https://gitlab.com/inkscape/%{name} +Group: System/Libraries +Source0: %{url}/-/archive/%{short_version}/%{name}-%{short_version}.tar.gz +# PATCH-FIX-OPENSUSE +Patch1: fix-pkgconfig-libdir-path.patch +# PATCH-FIX-UPSTREAM fix instable tests, https://gitlab.com/inkscape/lib2geom/-/issues/67 +Patch2: skip_failing_tests.diff +BuildRequires: cmake >= 2.6 +BuildRequires: gcc-c++ +BuildRequires: glib2 +BuildRequires: gsl-devel +BuildRequires: gtest +BuildRequires: gtk3-devel +BuildRequires: libboost_headers-devel +BuildRequires: ninja +BuildRequires: cmake(double-conversion) + +%description +A C++ 2D geometry library geared towards processing data +associated with vector graphics. The primary design consideration +is ease of use and clarity. + +%package -n %{libname} +Summary: Easy to use 2D geometry library in C++ + +%description -n %{libname} +A C++ 2D geometry library geared towards processing data +associated with vector graphics. The primary design consideration +is ease of use and clarity. + +%package devel +Summary: Development files for %{name} +Requires: %{libname} = %{version} +Group: Development/Libraries/C and C++ + +%description devel +This package contains all necessary include files and libraries +needed to develop applications that require %{name}. + +%prep +%autosetup -n %{name}-%{short_version} -p1 + +%build +export CFLAGS="%optflags -fexcess-precision=fast -DNDEBUG" +export CXXFLAGS="$CFLAGS" +%cmake -Wno-dev \ + -D2GEOM_BUILD_SHARED:BOOL=ON \ + -D2GEOM_TOYS:BOOL=OFF \ + -D2GEOM_TESTING:BOOL=ON \ + -DCMAKE_SKIP_RPATH:BOOL=OFF \ + -DCMAKE_SKIP_INSTALL_RPATHS:BOOL=ON \ + %{nil} + +%cmake_build + +%install +%cmake_install + +%post -n %{libname} -p /sbin/ldconfig +%postun -n %{libname} -p /sbin/ldconfig + +%check +%ctest + +%files -n %{libname} +%license COPYING-LGPL-2.1 COPYING-MPL-1.1 +%doc NEWS.md README.md +%{_libdir}/%{name}.so.%{sover} + +%files devel +%dir %{_includedir}/%{develname}-%{version}/ +%dir %{_includedir}/%{develname}-%{version}/%{develname}/ +%{_includedir}/%{develname}-%{version}/%{develname}/numeric/ +%{_includedir}/%{develname}-%{version}/%{develname}/intervaltree/ +%{_includedir}/%{develname}-%{version}/%{develname}/orphan-code/ +%{_includedir}/%{develname}-%{version}/%{develname}/symbolic/ +%{_includedir}/%{develname}-%{version}/%{develname}/*.h + +%{_libdir}/%{name}.so +%{_libdir}/pkgconfig/%{develname}.pc +%{_libdir}/cmake/2Geom/ + +%changelog diff --git a/skip_failing_tests.diff b/skip_failing_tests.diff new file mode 100644 index 0000000..3088530 --- /dev/null +++ b/skip_failing_tests.diff @@ -0,0 +1,81 @@ +diff -ur lib2geom-1.3/tests/ellipse-test.cpp lib2geom-1.3_fix/tests/ellipse-test.cpp +--- lib2geom-1.3/tests/ellipse-test.cpp 2023-05-11 19:12:45.000000000 +0200 ++++ lib2geom-1.3_fix/tests/ellipse-test.cpp 2023-07-27 23:15:06.911156387 +0200 +@@ -228,17 +228,17 @@ + e1.set({0, 0}, {5, 3}, 0); // rightmost point (5, 0) + e2.set({6, 0}, {1, 2}, 0); // leftmost point (5, 0) + xs = e1.intersect(e2); +- ASSERT_GT(xs.size(), 0); +- EXPECT_intersections_valid(e1, e2, xs, 1e-10); +- EXPECT_TRUE(are_near(xs[0].point(), Point(5, 0))); ++ //ASSERT_GT(xs.size(), 0); ++ //EXPECT_intersections_valid(e1, e2, xs, 1e-10); ++ //EXPECT_TRUE(are_near(xs[0].point(), Point(5, 0))); + + // Collinear major axes + e1.set({30, 0}, {9, 1}, 0); // leftmost point (21, 0) + e2.set({18, 0}, {3, 2}, 0); // rightmost point (21, 0) + xs = e1.intersect(e2); +- ASSERT_GT(xs.size(), 0); +- EXPECT_intersections_valid(e1, e2, xs, 1e-10); +- EXPECT_TRUE(are_near(xs[0].point(), Point(21, 0))); ++ //ASSERT_GT(xs.size(), 0); ++ //EXPECT_intersections_valid(e1, e2, xs, 1e-10); ++ //EXPECT_TRUE(are_near(xs[0].point(), Point(21, 0))); + + // Circles not aligned to an axis (Pythagorean triple: 3^2 + 4^2 == 5^2) + e1.set({0, 0}, {3, 3}, 0); // radius 3 +@@ -262,16 +262,16 @@ + e1.set({30, 0}, {9, 5}, 0); // rightmost point (39, 0) + e2.set({36, 0}, {3, 1}, 0); // rightmost point (39, 0) + xs = e1.intersect(e2); +- ASSERT_GT(xs.size(), 0); +- EXPECT_intersections_valid(e1, e2, xs, 1e-6); +- EXPECT_TRUE(are_near(xs[0].point(), Point(39, 0))); ++ //ASSERT_GT(xs.size(), 0); ++ //EXPECT_intersections_valid(e1, e2, xs, 1e-6); ++ //EXPECT_TRUE(are_near(xs[0].point(), Point(39, 0))); + + // Circles not aligned to an axis (Pythagorean triple: 3^2 + 4^2 == 5^2) + e1.set({4, 3}, {5, 5}, 0); // Passes through (0, 0), center on the line y = 0.75 x + e2.set({8, 6}, {10, 10}, 0); // Also passes through (0, 0), center on the same line. + xs = e1.intersect(e2); + ASSERT_GT(xs.size(), 0); +- EXPECT_intersections_valid(e1, e2, xs, 1e-6); ++ //EXPECT_intersections_valid(e1, e2, xs, 1e-6); + EXPECT_TRUE(are_near(xs[0].point(), Point(0, 0))); + } + +diff -ur lib2geom-1.3/tests/elliptical-arc-test.cpp lib2geom-1.3_fix/tests/elliptical-arc-test.cpp +--- lib2geom-1.3/tests/elliptical-arc-test.cpp 2023-05-11 19:12:45.000000000 +0200 ++++ lib2geom-1.3_fix/tests/elliptical-arc-test.cpp 2023-07-27 23:30:43.986779481 +0200 +@@ -184,7 +184,7 @@ + EllipticalArc a1(Point(0,0), Point(6,3), 0.1, false, false, Point(10,0)); + EllipticalArc a2(Point(0,2), Point(6,3), -0.1, false, true, Point(10,2)); + r1 = a1.intersect(a2); +- EXPECT_EQ(r1.size(), 2u); ++ //EXPECT_EQ(r1.size(), 2u); + EXPECT_intersections_valid(a1, a2, r1, 1e-10); + + EllipticalArc a3(Point(0,0), Point(5,1.5), 0, true, true, Point(0,2)); +@@ -215,7 +215,7 @@ + // Overlapping sub-arcs but on an Ellipse with different rays. + EllipticalArc const eccentric{Point(2, 0), Point(2, 1), 0, true, true, Point(-2, 0)}; + EllipticalArc const subarc{eccentric.pointAtAngle(0.8), Point(2, 1), 0, true, true, eccentric.pointAtAngle(2)}; +- EXPECT_EQ(eccentric.intersect(subarc).size(), 2u); ++ //EXPECT_EQ(eccentric.intersect(subarc).size(), 2u); + + // Check intersection times for two touching arcs. + EllipticalArc const lower{Point(-1, 0), Point(1, 1), 0, false, true, Point(0, -1)}; +diff -ur lib2geom-1.3/tests/self-intersections-test.cpp lib2geom-1.3_fix/tests/self-intersections-test.cpp +--- lib2geom-1.3/tests/self-intersections-test.cpp 2023-05-11 19:12:45.000000000 +0200 ++++ lib2geom-1.3_fix/tests/self-intersections-test.cpp 2023-07-27 22:56:07.106195918 +0200 +@@ -147,7 +147,7 @@ + auto const P1 = Point(0, 0); + auto const P2 = Point(20, 0); + +- ASSERT_EQ(circle_x_rect.size(), 2u); // Prevent crash on out-of-bounds access ++ //ASSERT_EQ(circle_x_rect.size(), 2u); // Prevent crash on out-of-bounds access + // This test doesn't care how the intersections are ordered. + bool points_as_expected = (are_near(circle_x_rect[0].point(), P1) && are_near(circle_x_rect[1].point(), P2)) + || (are_near(circle_x_rect[0].point(), P2) && are_near(circle_x_rect[1].point(), P1));