On 2023/07/08 09:48, Antoine Jacoutot wrote:
> On Wed, Jul 05, 2023 at 01:22:46AM -0600, Landry Breuil wrote:
> > CVSROOT:    /cvs
> > Module name:        ports
> > Changes by: lan...@cvs.openbsd.org  2023/07/05 01:22:46
> > 
> > Modified files:
> >     geo/geos       : Makefile distinfo 
> >     geo/geos/pkg   : PLIST 
> > 
> > Log message:
> > geo/geos: update to 3.12.0, now requires C++14
> > see https://github.com/libgeos/geos/blob/3.12.0/NEWS.md#changes-in-3120
> 
> I don't know if this has been reported before but it broke cad/pcb2gcode.
> 
> geos_helpers.cpp:7:10: fatal error: 'geos/geom/CoordinateSequenceFactory.h' 
> file not found
> #include <geos/geom/CoordinateSequenceFactory.h>
> 
> -- 
> Antoine
> 

yep - tracey, is this update ok with you?

Index: Makefile
===================================================================
RCS file: /cvs/ports/cad/pcb2gcode/Makefile,v
retrieving revision 1.6
diff -u -p -r1.6 Makefile
--- Makefile    6 Nov 2022 09:23:24 -0000       1.6
+++ Makefile    7 Jul 2023 13:08:05 -0000
@@ -1,10 +1,9 @@
 COMMENT =              tool for isolation, routing, and drilling of PCBs
-V =                    2.4.0
+V =                    2.5.0
 
 GH_ACCOUNT =           pcb2gcode
 GH_PROJECT =           pcb2gcode
 GH_TAGNAME =           v${V}
-REVISION =             2
 
 CATEGORIES =           cad
 
Index: distinfo
===================================================================
RCS file: /cvs/ports/cad/pcb2gcode/distinfo,v
retrieving revision 1.2
diff -u -p -r1.2 distinfo
--- distinfo    11 May 2021 19:09:34 -0000      1.2
+++ distinfo    7 Jul 2023 13:08:05 -0000
@@ -1,2 +1,2 @@
-SHA256 (pcb2gcode-2.4.0.tar.gz) = XU8G9wQf4UoQh4C9uVOqUg9+VWdzp7n7hDXpuS/vYU0=
-SIZE (pcb2gcode-2.4.0.tar.gz) = 7456824
+SHA256 (pcb2gcode-2.5.0.tar.gz) = lvGxtP1Y6G8VK2kSAqFVk4FZSdySUPq5qwLyNG9cLFI=
+SIZE (pcb2gcode-2.5.0.tar.gz) = 7654793
Index: patches/patch-bg_operators_cpp
===================================================================
RCS file: patches/patch-bg_operators_cpp
diff -N patches/patch-bg_operators_cpp
--- patches/patch-bg_operators_cpp      11 Mar 2022 18:24:31 -0000      1.4
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,42 +0,0 @@
-backport https://github.com/pcb2gcode/pcb2gcode/pull/594 to fix build with 
geos 3.10
-
-Index: bg_operators.cpp
---- bg_operators.cpp.orig
-+++ bg_operators.cpp
-@@ -2,8 +2,8 @@
- #include "geometry_int.hpp"
- #include "bg_helpers.hpp"
- #ifdef GEOS_VERSION
--#include <geos/operation/union/CascadedUnion.h>
- #include <geos/util/TopologyException.h>
-+#include <geos/geom/GeometryFactory.h>
- #include "geos_helpers.hpp"
- #endif // GEOS_VERSION
- 
-@@ -245,7 +245,6 @@ multi_polygon_type_fp sum(const std::vector<multi_poly
-     return mpolys[0];
-   }
- #ifdef GEOS_VERSION
--  std::vector<geos::geom::Geometry*> geos_mpolys;
-   std::vector<std::unique_ptr<geos::geom::Geometry>> geos_mpolys_tmp;
-   for (const auto& mpoly : mpolys) {
-     if (bg::area(mpoly) == 0) {
-@@ -254,14 +253,15 @@ multi_polygon_type_fp sum(const std::vector<multi_poly
-     auto mpoly_temp = mpoly;
-     round(mpoly_temp);
-     geos_mpolys_tmp.push_back(to_geos(mpoly_temp));
--    geos_mpolys.push_back(geos_mpolys_tmp.back().get());
-   }
--  if (geos_mpolys.size() == 0) {
-+  auto geos_factory = geos::geom::GeometryFactory::create();
-+  auto geos_collection = 
geos_factory->buildGeometry(std::move(geos_mpolys_tmp));
-+  if (geos_collection->isEmpty()) {
-     return {};
-   }
-   try {
-     std::unique_ptr<geos::geom::Geometry> geos_out(
--        geos::operation::geounion::CascadedUnion::Union(&geos_mpolys));
-+        geos_collection->Union());
-     return from_geos<multi_polygon_type_fp>(geos_out);
-   } catch (const geos::util::TopologyException& e) {
-     std::cerr << "\nError: Internal error with libgeos.  Upgrading geos may 
help." << std::endl;
Index: patches/patch-geos_helpers_cpp
===================================================================
RCS file: /cvs/ports/cad/pcb2gcode/patches/patch-geos_helpers_cpp,v
retrieving revision 1.1
diff -u -p -r1.1 patch-geos_helpers_cpp
--- patches/patch-geos_helpers_cpp      26 Jul 2022 12:05:05 -0000      1.1
+++ patches/patch-geos_helpers_cpp      7 Jul 2023 13:08:05 -0000
@@ -1,21 +1,53 @@
-fix build with geos 3.11.
+From a7c2ec216cb50fa4f01d61c358cb93e7a17b01d1 Mon Sep 17 00:00:00 2001
+From: eyal0 <109809+ey...@users.noreply.github.com>
+Date: Wed, 7 Dec 2022 22:09:53 -0700
+Subject: [PATCH] fix: Don't use the CoordinateSequenceFactory.
 
-https://github.com/pcb2gcode/pcb2gcode/commit/f7b93da36eb607f92b4d35ea576658ae008ca6a5
+It's not used anymore in geos since geos commit
+https://github.com/libgeos/geos/commit/d463bcb6df8fc1f01f276b27719ee8ccfb2d788a
 .
 
 Index: geos_helpers.cpp
 --- geos_helpers.cpp.orig
 +++ geos_helpers.cpp
-@@ -3,13 +3,10 @@
- #include "geos_helpers.hpp"
+@@ -4,11 +4,20 @@
  #include "geometry.hpp"
  #include <geos/io/WKTReader.h>
--#include <geos/io/WKTReader.inl>
  #include <geos/io/WKTWriter.h>
- #include <geos/geom/CoordinateSequenceFactory.h>
+-#include <geos/geom/CoordinateSequenceFactory.h>
  #include <geos/geom/Coordinate.h>
--#include <geos/geom/Coordinate.inl>
  #include <geos/geom/GeometryFactory.h>
--#include <geos/geom/GeometryFactory.inl>
  #include <boost/pointer_cast.hpp>
++#include <geos/version.h>
++#include <geos/util.h>
++#if ((GEOS_VERSION_MAJOR > 3) ||                           \
++     (GEOS_VERSION_MAJOR == 3 && GEOS_VERSION_MINOR > 11))
++  #define CoordinateArraySequence CoordinateSequence
++  #include <geos/geom/CoordinateSequence.h>
++#else
++  #include <geos/geom/CoordinateArraySequence.h>
++#endif
  
++
  linestring_type_fp from_geos(const geos::geom::LineString* ls) {
+   linestring_type_fp ret;
+   ret.reserve(ls->getNumPoints());
+@@ -86,8 +95,7 @@ multi_polygon_type_fp from_geos(const std::unique_ptr<
+ std::unique_ptr<geos::geom::LineString> to_geos(
+     const linestring_type_fp& ls) {
+   auto geom_factory = geos::geom::GeometryFactory::create();
+-  auto coord_factory = geom_factory->getCoordinateSequenceFactory();
+-  auto coords = coord_factory->create(ls.size(), 2 /* dimensions */);
++  auto coords = 
geos::detail::make_unique<geos::geom::CoordinateArraySequence>(ls.size(), 2 /* 
dimensions */);
+   for (size_t i = 0; i < ls.size(); i++) {
+     coords->setAt(geos::geom::Coordinate(ls[i].x(), ls[i].y()), i);
+   }
+@@ -96,8 +104,7 @@ std::unique_ptr<geos::geom::LineString> to_geos(
+ 
+ std::unique_ptr<geos::geom::LinearRing> to_geos(const ring_type_fp& ring) {
+   auto geom_factory = geos::geom::GeometryFactory::create();
+-  auto coord_factory = geom_factory->getCoordinateSequenceFactory();
+-  auto coords = coord_factory->create(ring.size(), 2 /* dimensions */);
++  auto coords = 
geos::detail::make_unique<geos::geom::CoordinateArraySequence>(ring.size(), 2 
/* dimensions */);
+   for (size_t i = 0; i < ring.size(); i++) {
+     // reverse rings for geos.
+     coords->setAt(geos::geom::Coordinate(ring[i].x(), ring[i].y()), i);

Reply via email to