Re: Committers + EvenR

2024-07-16 Thread Greg Troxel
> It would be about time to stop calling that role "committer", btw,
> as with `git` everyone has commit rights, we should find some other
> word (same problem with most other projects).

Indeed.  Obviously we should call it "pusher".


Re: coderabbit AI as a committer ?

2024-06-05 Thread Greg Troxel
Brian M Hamlin  writes:

> if coderabbit AI makes a complete PR in the future, and a GEOS team
> member approves and merges it, what is the committer attribution? Is
> the "author" of that commit now "coderabbitai" .. are there legal
> implications for the project?

code generated by "AI" is basically a copyright violation, and thus may
not be added to the project.   I think that's pretty obvious and not
really open to debate, but of course others may differ.


Re: [geos-devel] [postgis-devel] MacOS DYLD Fix

2023-11-11 Thread Greg Troxel via geos-devel
Paul Ramsey via postgis-devel  writes:

>> On Nov 10, 2023, at 3:46 PM, Regina Obe  wrote:
>> 
>> This isn’t an issue with other projects besides PostGIS that use GEOS?
>> Perhaps related, how much trouble would it be to get PostGIS to use 
>> pkgconfig for GEOS.  I see that GEOS does ship pkgconfig files.
>
> We could probably do it on a going-forward basis, but per usual we’d
> end up with all the old code *plus* the pkgconfig code, so it wouldn’t
> really “clean up” anything. There are autoconf macros already in
> configure.ac doing pkgconfig stuff on other deps, so not too too hard
> of an add.

We need the old code because postgis allows geos that is too old for
pkgconfig?   I lean to use pkgconfig if it exists and then drop support
for not-pkgconfig when geos that doesn't do it ages out.

>>  It’s always annoying when I try to do it that I have to explicitly
>> specify the geos-config file in PostGIS when in other cases, we can
>> read the pkg-config and have in fact standardized on that for other
>> dependencies we use.
>>  
>> I’ve added PostGIS dev to this since well we seem to be talking about 
>> PostGIS now.
>
> I’m honestly at a bit of a loss as to whether installing with an rpath
> and expecting linking software to set an appropriate search path is
> the right thing, or locking in a fixed installation location is the
> right thing. Certainly the latter results in less nonsense in the
> postgis build. But it broke proj, which had some tests that expected
> to be able to manually move an installation post-install.

Software that searches for a library should (again speaking normally not
macOS-ish), should after finding the lib in prefix

  add -I$prefix/include to CPPFLAGS

  add
-L$prefix/lib -Wl,-R$prefix/lib -lfoo
  to LDFLAGS/LDADD 
  
or however R, rpath, should be.

this is basically from pkgconfig's misnamed flags:

  $ pkg-config --cflags geos; pkg-config --libs geos
  -I/usr/pkg/include
  -L/usr/pkg/lib -lgeos_c

Installed pkgconfig files often get this wrong and omit the rpath.
That's ok to do if $prefix/lib is in the system's default search path,
which it isn't in this case.

glib, in contrast, produces:

  $ pkg-config --cflags glib-2.0; pkg-config --libs glib-2.0
  -I/usr/pkg/include/glib-2.0 -I/usr/pkg/lib/glib-2.0/include -I/usr/pkg/include
  -Wl,-R/usr/pkg/lib -L/usr/pkg/lib -lglib-2.0 -lintl


For pkgsrc, this missing -R is not in practice a problem in almost all
cases because almost everything is in /usr/pkg (or /opt/pkg, but the
same place) and there is an overall -R for that.  When things are in a
subprefix (for parallel installation of multiple versions), it matters
more.

For Debian and most GNU/Linux distributions, everything is in /usr and
thus in the default path.


Running objdump -x on /usr/pkg/lib/libgeos_c.so:

  NEEDED   libgeos.so.3.12.0
  NEEDED   libstdc++.so.9
  NEEDED   libm.so.0
  NEEDED   libgcc_s.so.1
  NEEDED   libc.so.12
  SONAME   libgeos_c.so.1
  RPATH/usr/pkg/lib

and that seems right.  That RPATH really is needed formally as one
cannot assume that the program linking in geos_c has RPATH, only that it
found geos_c.

It sounds like the issue is that macOS does things differently and we
weren't ending up with the equivalent of RPATH set on macOS builds?
___
geos-devel mailing list
geos-devel@lists.osgeo.org
https://lists.osgeo.org/mailman/listinfo/geos-devel


Re: [geos-devel] MacOS DYLD Fix

2023-11-11 Thread Greg Troxel via geos-devel
Paul Ramsey via geos-devel  writes:

> I’m on both sides of the argument now. The best/better practice might
> be to leave the install behaviour as-is and try to coerce PostGIS into
> ensuring the LD_RPATH on postgis.so, and other targets is set to the
> discovered locations of the dylib files in the ./configure.

I don't follow.

If a shared library A needs another shared library B to load, then it
needs to set RPATH (however that is spelled on systems that are
Different) for the path where B is.

When a program links with A, it needs to set RPATH to fine A.

I can see why /usr/local/lib no longer being in a default search path
would cause this to be noticed, but surely /opt/pkg/lib and /foo/bar/lib
were never there, so this seems like a bug fix.


___
geos-devel mailing list
geos-devel@lists.osgeo.org
https://lists.osgeo.org/mailman/listinfo/geos-devel


Re: [geos-devel] 3.12 release warning

2023-06-20 Thread Greg Troxel
Sebastiaan Couwenberg  writes:

> Warning message:
> In fun(libname, pkgname) :
>   rgeos: versions of GEOS runtime 3.12.0beta2-CAPI-1.18.0
> and GEOS at installation 3.11.1-CAPI-1.17.1differ

Also, I found that geoe does not use the just-built library when running
tests, due to inadequate RPATH/LD_LIBRARY_PATH, so if you are testing
3.12 on a system with 3.11 installed, the tests may be running 3.11
code.
___
geos-devel mailing list
geos-devel@lists.osgeo.org
https://lists.osgeo.org/mailman/listinfo/geos-devel


Re: [geos-devel] 3.12.0beta2

2023-06-15 Thread Greg Troxel
"Regina Obe"  writes:

>> On Thu, Jun 15, 2023 at 6:30 AM Greg Troxel  wrote:
>> 
>> > Looking at the logs (at end), overall this smells like either a
>> > systematic issue where the floating point on my system is broken, or
>> > there is some slight floating point difference from x86, and geos
>> > tests are very sensitive to exact FP results.  But that's just guessing.
>> 
>> In terms of CI, it's linux/windows/macos all on Intel. In terms of 
>> development,
>> there's me on MacOS AppleSilicon, so getting a little
>> Arm64 in there. It's possible there's something special about the floating 
>> point
>> in the RPI3, but there's also a failure in unit-io-GeoJSONReader in there, 
>> which
>> ... is not doing any heavy lifting. So I duno. As with other fun platforms 
>> I'm
>> always open to patches. :)
>
> We do have 2 rasberry Pis (Arm64 and Arm32) running debian bullseye testing - 
> berrie and berrie64
> And those look to be showing successes.  But not sure about the endian.
>
> https://libgeos.org/project/development/ci_status/

Interesting.  Raspberry Pi culture is very much to run LE, and I have
never heard of Debian doing BE on RPI.  NetBSD people do occasionally,
just to be difficult, I mean to help with testing.

> I think we've had issues in past specific to big endian.

I would expect so absent testing.  Someday(tm) I will have an emulated
sparc64 to run tests on.

For now, I think the project should just keep my report in mind in case
there are similar, but I don't think it's reasonable to ask anyone to do
anything, mostly.

My only suggestion for the CI page is:

  Avoid using '32-bit' and '64-bit' as if that describes a CPU type,
  using i386/x86_64 for PCs and armv7/aarch64 (or some such) for
  RPI/ARM.

but that's just being picky about wording, not anything real.
___
geos-devel mailing list
geos-devel@lists.osgeo.org
https://lists.osgeo.org/mailman/listinfo/geos-devel


Re: [geos-devel] 3.12.0beta2

2023-06-15 Thread Greg Troxel
I have no clear memory of whether I ever tried to build geos or run
tests on RPI3 before.  I have a very very vague memory of having trouble
and never having chased it down.  So I am definitely not asking that the
release be held for this!

> https://download.osgeo.org/geos/geos-3.12.0beta2.tar.bz2

I am using

  gcc version 7.5.0 (nb4 20200810) 

On NetBSD 9 amd64, after installing it, tests all pass.

  [snip]
  Start 466: xml-validate-TestRelatePP
  466/466 Test #466: xml-validate-TestRelatePP 
..   Passed0.01 sec

  100% tests passed, 0 tests failed out of 466

  Total Test time (real) =  20.89 sec

On NetBSD 9 earmv7hf-el (RPI3 hardware, specifically), after installing
it, most but not all tests pass.   I ran it twice with the same results

  96% tests passed, 18 tests failed out of 465

  Total Test time (real) = 111.91 sec

  The following tests did not run:
  377 - xml-issue-issue-geos-837 (Disabled)

  The following tests FAILED:
   25 - unit-algorithm-construct-MaximumInscribedCircle (Subprocess 
aborted)
   32 - unit-capi-GEOSBuffer (Subprocess aborted)
   35 - unit-capi-GEOSClipByRect (Subprocess aborted)
   42 - unit-capi-GEOSCoordSeq (Subprocess aborted)
   62 - unit-capi-GEOSGeomGeoJSONRead (Subprocess aborted)
   94 - unit-capi-GEOSInterrupt (Subprocess aborted)
  104 - unit-capi-GEOSMaximumInscribedCircle (Subprocess aborted)
  140 - unit-capi-GEOSUnaryUnion (Subprocess aborted)
  143 - unit-capi-GEOSUnion (Subprocess aborted)
  168 - unit-geom-Dimension (Subprocess aborted)
  212 - unit-io-GeoJSONReader (Subprocess aborted)
  233 - unit-operation-buffer-BufferOp (Subprocess aborted)
  240 - unit-operation-distance-IndexedFacetDistance (Subprocess 
aborted)
  300 - xml-general-TestBuffer (Subprocess aborted)
  305 - xml-general-TestDensify (Subprocess aborted)
  361 - xml-issue-issue-geos-366 (Subprocess aborted)
  373 - xml-issue-issue-geos-605 (Subprocess aborted)
  399 - xml-misc-safe-TestBufferJagged (Subprocess aborted)
  Errors while running CTest
  Output from these tests are in: 
/d0/n0/pkgsrc/geography/geos/work/geos-3.12.0beta2/Testing/Temporary/LastTest.log
  Use "--rerun-failed --output-on-failure" to re-run the failed cases verbosely.
  gmake[4]: *** [Makefile:91: test] Error 8
  gmake[4]: Leaving directory 
'/d0/n0/pkgsrc/geography/geos/work/geos-3.12.0beta2'
  *** Error code 2

Looking at the logs (at end), overall this smells like either a
systematic issue where the floating point on my system is broken, or
there is some slight floating point difference from x86, and geos tests
are very sensitive to exact FP results.  But that's just guessing.

I'm building for NetBSD 9 i386 and will also try macOS x86_64.

FWIW, I ran paranoia and got:

  No failures, defects nor flaws have been discovered.
  Rounding appears to conform to the proposed IEEE standard P754.
  The arithmetic diagnosed appears to be Excellent!

I am curious if others have been running tests on CPUs other than x86,
and on those systems, if other than GNU/Linux.



Here's the output of "ctest --rerun-failed --output-on-failure":

Test project /usr/pkgsrc/geography/geos/work/geos-3.12.0beta2
  Start  25: unit-algorithm-construct-MaximumInscribedCircle
 1/18 Test  #25: unit-algorithm-construct-MaximumInscribedCircle ...Subprocess 
aborted***Exception:   0.40 sec
===
  GEOS Unit Test Suite
===

geos::algorithm::construct::MaximumInscribedCircle: ...terminate called 
after throwing an instance of 'geos::util::GEOSException'
  what():  Non-finite envelope encountered.

  Start  32: unit-capi-GEOSBuffer
 2/18 Test  #32: unit-capi-GEOSBuffer ..Subprocess 
aborted***Exception:   0.09 sec
===
  GEOS Unit Test Suite
===

capi::GEOSBuffer: .NOTICE: IllegalArgumentException: 
Invalid buffer endCap style
NOTICE: IllegalArgumentException: Invalid buffer join style
.terminate called after throwing an instance of 'geos::util::GEOSException'
  what():  Shell empty after removing invalid points

  Start  35: unit-capi-GEOSClipByRect
 3/18 Test  #35: unit-capi-GEOSClipByRect ..Subprocess 
aborted***Exception:   0.09 sec
===
  GEOS Unit Test Suite
===

capi::GEOSClipByRect: .terminate called after throwing an instance 
of 'geos::util::IllegalArgumentException'
  what():  IllegalArgumentException: Invalid number of points in LinearRing 
found 3 - must be 0 or >= 4

  Start  42: unit-capi-GEOSCoordSeq
 4/18 Test  #42: unit-capi-GEOSCoordSeq Subprocess 
aborted***Exception:   0.08 sec

Re: [geos-devel] 3.12.0beta2

2023-06-15 Thread Greg Troxel
This is of course not a request to hold the release; just a comment on
something that I don't yet understand.  I am able to run tests by
installing the just built geos and then running them.


The plot thickens on the meta test issues.  I built on RPI3 under
NetBSD; geos had not been previously installed (because that CPU, 1 GB
RAM, and no monitor or keyboard makes for a poor qgis experience!).  The
tests all failed, which if the issue was rpath order should not be.  I
then looked into the build dir:

/usr/pkgsrc/geography/geos/work/geos-3.12.0beta2/bin $ ldd test_xmltester 
test_xmltester:
-lgeos.3.12.0 => not found
-lstdc++.9 => /usr/lib/libstdc++.so.9
-lm.0 => /usr/lib/libm.so.0
-lc.12 => /usr/lib/libc.so.12

objdump says

  NEEDED   libgeos.so.3.12.0
  NEEDED   libstdc++.so.9
  NEEDED   libm.so.0
  NEEDED   libc.so.12
  RPATH/usr/pkg/lib

which is ok for an installed program, but not one that intends to use a
library from the build tree.

I see 'make test' runs ctest, but I can't follow how that is supposed to
set up LD_LIBRARY_PATH to pre-load from the built but not installed
library.  I can't find 'LD_LIBR' by grepping the source tree.  I know
autoconf/libtool links once in the tree and relinks at install time --
but I do not have the impression cmake does it that way.

I wonder if for others, tests work from a build, in the case of no geos
at all installed on the system, and what ldd/objdump says on
bin/test_xmltester after building.

Can anyone explain the theory of how the tests are run linking against
the just-built library instead of one that is (or is not) installed in
the system?
___
geos-devel mailing list
geos-devel@lists.osgeo.org
https://lists.osgeo.org/mailman/listinfo/geos-devel


Re: [geos-devel] 3.12.0beta1

2023-06-08 Thread Greg Troxel
Paul Ramsey  writes:

>> On Jun 7, 2023, at 5:26 PM, Greg Troxel  wrote:
>> 
>> If I install the 3.12.0beta1 package, then the tests pass.  So there is
>> a bug, but it is that the tests appaprently refer to installed files,
>> rather than being controlled to use only files in the build tree.  
>
> We had this out last release, it’s specific to a particular OS. Happy to look 
> over a cmake patch.
>
> https://lists.osgeo.org/pipermail/geos-devel/2022-June/010723.html

I didn't remember anything from the last release...

Are you saying that on every other OS, including some other BSD, that if
one has installed to a prefix not in the default search paths, and has
the old version installed, and runs the tests after building the new
version, that they succeed?  I did not absorb that from reading the
archives.

I am not particularly skilled at cmake, but I did find a note (that I
managed not to read this time) that the problem is misordering RPATH
args, so that the rpath passed in from a packaging system that says to
find any depending libs in $prefix/lib happens before the special test
rpath that says to get libs from something like builddir/lib.  If that's
true, this isn't OS specific (and is a regression from the autotools
build).

But I understand where you are coming from as ENOPATCH.

___
geos-devel mailing list
geos-devel@lists.osgeo.org
https://lists.osgeo.org/mailman/listinfo/geos-devel


Re: [geos-devel] 3.12.0beta1

2023-06-07 Thread Greg Troxel
If I install the 3.12.0beta1 package, then the tests pass.  So there is
a bug, but it is that the tests appaprently refer to installed files,
rather than being controlled to use only files in the build tree.  This
requires alternate rpath processing, etc., and in the autoconf world is
usually handled by libtool relinking at install time.

Therefore, I have no reason to think 3.12.0beta1 is more troubled than
any previous release -- this is likely not a regression.

My only question then about 3.12.0beta1 is if the comings-and-goings
diff of .h files is what the authors intend.

I am kicking off a process to rebuild everything that depends on geos
(that I have installed, but that extends all the way to postis and
qgis).

___
geos-devel mailing list
geos-devel@lists.osgeo.org
https://lists.osgeo.org/mailman/listinfo/geos-devel


Re: [geos-devel] 3.12.0beta1

2023-06-07 Thread Greg Troxel
Paul Ramsey  writes:

> First tagged release auto built and available at
>
> https://github.com/libgeos/geos/releases/tag/3.12.0beta1

distfile not found at standard release location but I fetched it
manually from github.

With the following changes, the package built.  The Makefile is just the
version change, and is of course fine.  The PLIST is basically about the
change in the set of installed files.  There are a surprising amount of
.h files coming and going.  I see some "new things" in NEWS, but the
withdrawals (mainly CoordinateArraySequenceFoo) are not really
explained.

Tests (netbsd 9 amd64) are a total train wreck, with nothign at all
passing, a sure sign of structural test issues.  I will try tests on the
most recent formal release.

Index: Makefile
===
RCS file: /cvsroot/pkgsrc/geography/geos/Makefile,v
retrieving revision 1.46
diff -u -p -r1.46 Makefile
--- Makefile17 Mar 2023 15:16:47 -  1.46
+++ Makefile7 Jun 2023 23:27:04 -
@@ -1,8 +1,8 @@
 # $NetBSD: Makefile,v 1.46 2023/03/17 15:16:47 gdt Exp $
 
-VERSION_BASE=  3.11.2
+VERSION_BASE=  3.12.0
 # Accomodate testing unreleased versions.
-#VERSION_RC=   rc0
+VERSION_RC=beta1
 VERSION=   ${VERSION_BASE}${VERSION_RC}
 DISTNAME=  geos-${VERSION}
 EXTRACT_SUFX=  .tar.bz2
Index: PLIST
===
RCS file: /cvsroot/pkgsrc/geography/geos/PLIST,v
retrieving revision 1.24
diff -u -p -r1.24 PLIST
--- PLIST   17 Mar 2023 15:16:47 -  1.24
+++ PLIST   7 Jun 2023 23:27:04 -
@@ -14,9 +14,11 @@ include/geos/algorithm/HCoordinate.h
 include/geos/algorithm/InteriorPointArea.h
 include/geos/algorithm/InteriorPointLine.h
 include/geos/algorithm/InteriorPointPoint.h
+include/geos/algorithm/Interpolate.h
 include/geos/algorithm/Intersection.h
 include/geos/algorithm/Length.h
 include/geos/algorithm/LineIntersector.h
+include/geos/algorithm/MinimumAreaRectangle.h
 include/geos/algorithm/MinimumBoundingCircle.h
 include/geos/algorithm/MinimumDiameter.h
 include/geos/algorithm/NotRepresentableException.h
@@ -26,7 +28,7 @@ include/geos/algorithm/PointLocation.h
 include/geos/algorithm/PointLocator.h
 include/geos/algorithm/PolygonNodeTopology.h
 include/geos/algorithm/RayCrossingCounter.h
-include/geos/algorithm/RayCrossingCounterDD.h
+include/geos/algorithm/Rectangle.h
 include/geos/algorithm/RobustDeterminant.h
 include/geos/algorithm/SimplePointInRing.h
 include/geos/algorithm/construct/LargestEmptyCircle.h
@@ -43,6 +45,19 @@ include/geos/algorithm/locate/IndexedPoi
 include/geos/algorithm/locate/PointOnGeometryLocator.h
 include/geos/algorithm/locate/SimplePointInAreaLocator.h
 include/geos/constants.h
+include/geos/coverage/Corner.h
+include/geos/coverage/CoverageBoundarySegmentFinder.h
+include/geos/coverage/CoverageEdge.h
+include/geos/coverage/CoverageGapFinder.h
+include/geos/coverage/CoveragePolygonValidator.h
+include/geos/coverage/CoverageRing.h
+include/geos/coverage/CoverageRingEdges.h
+include/geos/coverage/CoverageSimplifier.h
+include/geos/coverage/CoverageUnion.h
+include/geos/coverage/CoverageValidator.h
+include/geos/coverage/InvalidSegmentDetector.h
+include/geos/coverage/TPVWSimplifier.h
+include/geos/coverage/VertexRingCounter.h
 include/geos/edgegraph/EdgeGraph.h
 include/geos/edgegraph/EdgeGraphBuilder.h
 include/geos/edgegraph/HalfEdge.h
@@ -50,17 +65,14 @@ include/geos/edgegraph/MarkHalfEdge.h
 include/geos/export.h
 include/geos/geom.h
 include/geos/geom/Coordinate.h
-include/geos/geom/CoordinateArraySequence.h
-include/geos/geom/CoordinateArraySequenceFactory.h
 include/geos/geom/CoordinateFilter.h
 include/geos/geom/CoordinateList.h
 include/geos/geom/CoordinateSequence.h
-include/geos/geom/CoordinateSequenceFactory.h
 include/geos/geom/CoordinateSequenceFilter.h
-include/geos/geom/DefaultCoordinateSequenceFactory.h
+include/geos/geom/CoordinateSequenceIterator.h
+include/geos/geom/CoordinateSequences.h
 include/geos/geom/Dimension.h
 include/geos/geom/Envelope.h
-include/geos/geom/FixedSizeCoordinateSequence.h
 include/geos/geom/Geometry.h
 include/geos/geom/GeometryCollection.h
 include/geos/geom/GeometryComponentFilter.h
@@ -194,15 +206,20 @@ include/geos/index/sweepline/SweepLineOv
 include/geos/io/ByteOrderDataInStream.h
 include/geos/io/ByteOrderValues.h
 include/geos/io/CLocalizer.h
+include/geos/io/CheckOrdinatesFilter.h
 include/geos/io/GeoJSON.h
 include/geos/io/GeoJSONReader.h
 include/geos/io/GeoJSONWriter.h
+include/geos/io/OrdinateSet.h
 include/geos/io/ParseException.h
 include/geos/io/StringTokenizer.h
 include/geos/io/WKBConstants.h
 include/geos/io/WKBReader.h
+include/geos/io/WKBStreamReader.h
 include/geos/io/WKBWriter.h
+include/geos/io/WKTFileReader.h
 include/geos/io/WKTReader.h
+include/geos/io/WKTStreamReader.h
 include/geos/io/WKTWriter.h
 include/geos/io/Writer.h
 include/geos/linearref/ExtractLineByLocation.h
@@ -218,6 +235,7 @@ 

Re: [geos-devel] 3.10.5 and 3.11.2 released

2023-03-17 Thread Greg Troxel
In 3.11.2 vs 3.11.1 I find new files installed

ERROR: The following files are in 
/tmp/work/geography/geos/work/.destdir/usr/pkg but not in the PLIST:
ERROR: 
/tmp/work/geography/geos/work/.destdir/usr/pkg/include/geos/algorithm/PolygonNodeTopology.h
ERROR: 
/tmp/work/geography/geos/work/.destdir/usr/pkg/include/geos/triangulate/polygon/PolygonNoder.h

and do not immediately see adding new interfaces in NEWS, so I wanted to
check that this is intended/correct before I push the update to pkgsrc.



___
geos-devel mailing list
geos-devel@lists.osgeo.org
https://lists.osgeo.org/mailman/listinfo/geos-devel


Re: [geos-devel] Switching to C++14

2023-01-18 Thread Greg Troxel
proj in pkgsrc is behind, but it's coded 'c99 c++11', which means gcc
4.8 is probably ok and 4.9 is formally ok.  But, that may not be
accurate.


I think of this as "what will be lost for people that don't have X".
For geos, my impression is that this is needed for postgis, spatialite
gdal, and hence qgis.  But proj also is necessary for (on my system this
minute):

  merkaartor-0.19.0nb2
  libgeotiff-1.7.1nb3
  py310-pyproj-3.2.1
  osm2pgsql-1.3.0nb6

___
geos-devel mailing list
geos-devel@lists.osgeo.org
https://lists.osgeo.org/mailman/listinfo/geos-devel


Re: [geos-devel] Switching to C++14

2023-01-18 Thread Greg Troxel
Daniel Baston  writes:

> advantage for reasons I described in a pull request [2]. I don't see a
> reason not to make the change now, since it should have no effect on the
> number of platforms that can build GEOS. (The only versions of gcc and MSVC
> that can build GEOS also support C++14.

What is the current lowest version?  C++11 requires gcc 4.9, strictly,
but 4.8 is often enough.   Is this "4.9 worked before and will still
work", or something else.

In general, it's harder for people to upgrade compilers than other
things, partly because C++ in practice more or less requires building
everything that ends up in a binary with the same version, which means
only having one.

Personally, as long  as gcc7 is ok, it won't bother me.
___
geos-devel mailing list
geos-devel@lists.osgeo.org
https://lists.osgeo.org/mailman/listinfo/geos-devel


Re: [geos-devel] End of Life Policy (EOL)

2022-09-14 Thread Greg Troxel

Martin Davis  writes:

> Our development resource bandwidth, and also downstream pipeline size.
>
> I think we should have a policy of one minor release per year (if needed)
> And (try to) make them somewhat scheduled (which we already do informally,
> to align with PostGIS).

There's a big difference between

  Our current plans are to do X.   We plan not to do Y.

and

  We have a policy of releasing if Z.


As a maintainer of various things, I have found people who use Free
Software to act remarkably entitled as if they had a several-$K/year
support contract.  Thus I very much avoid anything that sounds like
commitment to do something.

To me, this policy is about saying that after 4 years, it's basically
out of the question to have an updated version.


signature.asc
Description: PGP signature
___
geos-devel mailing list
geos-devel@lists.osgeo.org
https://lists.osgeo.org/mailman/listinfo/geos-devel


Re: [geos-devel] 3.11.0 Release Vote

2022-06-28 Thread Greg Troxel

Also, test suite passes on NetBSD 9 amd64.

The bug (previously sent in email) where the tests use the installed
version instead of the build tree version remains.  But after I
installed it and then built and run tests, they passed.



signature.asc
Description: PGP signature
___
geos-devel mailing list
geos-devel@lists.osgeo.org
https://lists.osgeo.org/mailman/listinfo/geos-devel


Re: [geos-devel] 3.11.0 Release Vote

2022-06-28 Thread Greg Troxel

Paul Ramsey  writes:

> 3.11.0beta2 has been out for a week, and no complaints. This is the vote on 
> final release of 3.11.0

I didn't get to it because it was pkgsrc's quarterly freeze week.  It
builds on NetBSD 9 amd64, and I've included the diff to the set of
installed files, minus noise.  The set of include changes is somewhat
explainable from NEWS, but I'm not following.  I don't mean to push on
that; really I'm asking "is this what is expected?".

+include/geos.h
+include/geos/algorithm/hull/ConcaveHull.h
+include/geos/algorithm/hull/ConcaveHullOfPolygons.h
+include/geos/algorithm/hull/HullTri.h
+include/geos/algorithm/hull/HullTriangulation.h
+include/geos/geom/util/GeometryMapper.h
+include/geos/index/VertexSequencePackedRtree.h
+include/geos/noding/SegmentExtractingNoder.h
+include/geos/operation/buffer/BufferCurveSetBuilder.h
+include/geos/operation/buffer/OffsetCurve.h
-include/geos/operation/buffer/OffsetCurveSetBuilder.h
+include/geos/operation/buffer/SegmentMCIndex.h
+include/geos/operation/overlayng/CoverageUnion.h
-include/geos/operation/valid/ConnectedInteriorTester.h
+include/geos/simplify/LinkedRing.h
+include/geos/simplify/PolygonHullSimplifier.h
+include/geos/simplify/RingHull.h
+include/geos/simplify/RingHullIndex.h
-include/geos/triangulate/polygon/VertexSequencePackedRtree.h
-lib/libgeos.so.3.10.3
+lib/libgeos.so.3.11.0
 lib/libgeos_c.so
 lib/libgeos_c.so.1
-lib/libgeos_c.so.1.16.1
+lib/libgeos_c.so.1.16.0
 lib/pkgconfig/geos.pc


signature.asc
Description: PGP signature
___
geos-devel mailing list
geos-devel@lists.osgeo.org
https://lists.osgeo.org/mailman/listinfo/geos-devel


Re: [geos-devel] build failure of 3.10.3 on smartos (= illumos)

2022-06-21 Thread Greg Troxel

Paul Ramsey  writes:

> Well, it's super rare, platformwise so I don't really categorize it as
> "our problem", but it's nice to be clearer. What's the simplest way to

I said smartos but this is almost certainly most if not all solaris.

> even find out if a change fixes this? I'm tempted to make everything
> std::sqrt() on some kind of principle, but I have no idea if that will
> actually change anything. Probably just changing the 5 to 5.0 would do
> the trick.

With a candidate change, I can apply it and see what happens.   I don't
know the C++ rules well enough to pick something that is correct by
spec.

If your preferred approach is changing to 5.0 (which I presume is a
double constant since it is not 5.0f), then I can try that.


signature.asc
Description: PGP signature
___
geos-devel mailing list
geos-devel@lists.osgeo.org
https://lists.osgeo.org/mailman/listinfo/geos-devel


Re: [geos-devel] build failure of 3.10.3 on smartos (= illumos)

2022-06-21 Thread Greg Troxel

Also, I should point out that we are carrying a patch, which seems like
it can't be related, but:


$NetBSD: patch-util_geosop_cxxopts.hpp,v 1.1 2022/03/27 13:33:21 tnn Exp $

On at least modern SunOS, int8_t is typedef'd to char, so parse_value()
that operates on int8_t& conflicts with the one that operates on char&.

--- util/geosop/cxxopts.hpp.orig2022-01-15 21:14:55.0 +
+++ util/geosop/cxxopts.hpp
@@ -677,12 +677,14 @@ namespace cxxopts
   integer_parser(text, value);
 }
 
+#if !defined(__sun)
 inline
 void
 parse_value(const std::string& text, int8_t& value)
 {
   integer_parser(text, value);
 }
+#endif
 
 inline
 void


signature.asc
Description: PGP signature
___
geos-devel mailing list
geos-devel@lists.osgeo.org
https://lists.osgeo.org/mailman/listinfo/geos-devel


[geos-devel] build failure of 3.10.3 on smartos (= illumos)

2022-06-21 Thread Greg Troxel

pkgsrc is getting ready for quarterly branch, and I noticed geos fails
to build on smartos.

  
https://us-central.manta.mnx.io/pkgsrc/public/reports/upstream-trunk/20220620.2256/geos-3.10.3/build.log

The issue is sqrt(5) leading to ambiguous overload with long double,
double, float.

Appparently that is supposed to be ok, and maybe cmath is supposed to be
included, maybe using std::sqrt, maybe neither.   And maybe c++11 is
supposed to handle int as an arg to sqrt.

Opinions as to whether this is a geos issue vs a smartos toolchain issue
vs ?






signature.asc
Description: PGP signature
___
geos-devel mailing list
geos-devel@lists.osgeo.org
https://lists.osgeo.org/mailman/listinfo/geos-devel


Re: [geos-devel] Is GEOS 3.11 C-API upward compatible with GEOS 3.9.0

2021-12-06 Thread Greg Troxel

"Regina Obe"  writes:

> It looks in the directory of the dependent executable first for dependencies
> and then looks in PATH for what it couldn't find in the direct path.
> I use the same trick (except export and $ signs)  on Debbie and Berrie (both
> Debian bots) and it works there too just overriding the 
> PATH
>
> Here is what Berrie64 build script looks like for example:
> https://git.osgeo.org/gitea/postgis/postgis/src/branch/master/ci/berrie64/cofigs.sh
>   #configuration where I flip the GEOS as needed
> https://git.osgeo.org/gitea/postgis/postgis/src/branch/master/ci/berrie64/pg_init_start.sh
>  #postgresql startup script
>
> Though I think I had to set the LD_LIBRAY_PATH for building otherwise it
> would pick up the system installed GEOS and PostgreSQL  instead of my custom
> compiled one.

On UNIX/ELF, I don't think shared library resolution is affected by
PATH.  But LD_LIBRARY_PATH yes.

I'll simply accept that whatever env var setup you have on windows
causes shlib resolution to look in alternate places; that's pretty
clearly not the problem.

> All of these were compiled with CMake.  I haven't used libtool on GEOS since
> 3.6 or so..
> In GEOS 3.10.0 (and all cmake versions previous) -- the files in bin folder
> are just the way I like them:
> geos-config  geosop.exe  libgeos.dll  libgeos_c.dll

I am unfamiliar with Windows DLL naming culture.   Setting aside macOS
as mutant, ~all POSIX/ELF systems normally name shared libraries as

  libfoo.so.A.B.C
  A is major (or ABI breaks)
  B is minor (for new interfaces)
  C is micro (for bugfixes)

On my system, shp2pgsql has NEEDED libgeos_c.so.1" because that is the
ABI version it was built with.  And there is a symlink with that name

lrwxr-xr-x  1 root  wheel   14 Nov  3 17:53 /usr/pkg/lib/libgeos_c.so -> 
libgeos_c.so.1
lrwxr-xr-x  1 root  wheel   19 Nov  3 17:53 /usr/pkg/lib/libgeos_c.so.1 -> 
libgeos_c.so.1.16.0
-rwxr-xr-x  1 root  wheel   315936 Nov  3 17:53 /usr/pkg/lib/libgeos_c.so.1.16.0

This allows the older ABI to be still present (such as on base system
upgrades) and programs using the older ABI to find the version they need
and work.

It may be normal in windows not to do this, and I don't know if there if
the shlib version is internal and if it is chdcked when dynamic linking.
If it's not checked, this naming scheme is basically unsound.

> and ldd of libgeos_c.dll looks like:
> ldd /projects/geos/rel-3.10.0w64gcc81/bin/libgeos_c.dll
> ntdll.dll => /c/WINDOWS/SYSTEM32/ntdll.dll (0x7ff968c3)
> KERNEL32.DLL => /c/WINDOWS/System32/KERNEL32.DLL (0x7ff967c1)
> KERNELBASE.dll => /c/WINDOWS/System32/KERNELBASE.dll
> (0x7ff9663f)
> msvcrt.dll => /c/WINDOWS/System32/msvcrt.dll (0x7ff968a7)
> libgcc_s_seh-1.dll => /mingw64/bin/libgcc_s_seh-1.dll (0x6144)
> libgeos.dll => /projects/geos/rel-3.10.0w64gcc81/bin/libgeos.dll
> (0x64c4)
> libstdc++-6.dll => /mingw64/bin/libstdc++-6.dll (0x6fc4)
> libwinpthread-1.dll => /mingw64/bin/libwinpthread-1.dll (0x6494)
> USER32.dll => /c/WINDOWS/System32/USER32.dll (0x7ff967a6)
> win32u.dll => /c/WINDOWS/System32/win32u.dll (0x7ff96677)
> GDI32.dll => /c/WINDOWS/System32/GDI32.dll (0x7ff966dd)
> gdi32full.dll => /c/WINDOWS/System32/gdi32full.dll (0x7ff96695)
> msvcp_win.dll => /c/WINDOWS/System32/msvcp_win.dll (0x7ff96635)
> ucrtbase.dll => /c/WINDOWS/System32/ucrtbase.dll (0x7ff966af)
> IMM32.DLL => /c/WINDOWS/System32/IMM32.DLL (0x7ff96756)

So that finds the 3.10.0 you have pointed it to, and it's not clear
there is ABI version checking.

> In GEOS 3.10.1 (where things started sucking as far as file names go)
> geos-config  geosop.exe  libgeos-3.10.1.dll  libgeos_c-1.dll  
> (I do recall my libtool builds having the full name at least for the c++
> part and that libgeos_c-1.dll that is why I assumed it was to congeal the
> two systems). 

Ah, so now I get the -1.  Is this the normal way in windows to encode
the shared library version in the file?  In the C++ one, is "3.10.1" a
string which is the shared library major version?

(I am not 100% sure that there aren't ABI breaks in libgeos.3.9.0 to
libgeos-3.10.0, but as in theory nothing else loads that it doesn't matter.)

If this is the windows way to have the equivalent of libgeos_c.so.1,
then it seems like it is the right thing.  Someday, we might need to
have an ABI break in libgeos_c, even though it's been avoided so far,
and that would necessitate libgeos_c.so.2.

> $ ldd /projects/geos/rel-3.10.1w64gcc81/bin/libgeos_c-1.dll
> ntdll.dll => /c/WINDOWS/SYSTEM32/ntdll.dll (0x7ff968c3)
> KERNEL32.DLL => /c/WINDOWS/System32/KERNEL32.DLL (0x7ff967c1)
> KERNELBASE.dll => /c/WINDOWS/System32/KERNELBASE.dll
> (0x7ff9663f)
> msvcrt.dll => /c/WINDOWS/System32/msvcrt.dll (0x7ff968a7)
> libgcc_s_seh-1.dll => 

Re: [geos-devel] Is GEOS 3.11 C-API upward compatible with GEOS 3.9.0

2021-12-05 Thread Greg Troxel

"Regina Obe"  writes:

>> > So my PostGIS is compiled with GEOS 3.9.0, but it should work with
>> > GEOS 3.11.
>> 
>> You presumably have swapped out the geos implementation?  How?
>> 
> [Regina Obe] 
> I test PostGIS / PostgreSQL with a PostgreSQL launch script that sets the
> path of all the key dependencies.
> So I have a compiled (lots of other old geos) , GEOS 3.9.0, GEOS 3.10.0,
> GEOS 3.10.1, GEOS 3.11 (main) all just different in bin path by the version.
>
> So when I want to compare differences I compile PostGIS with the lowest
> version I want to compare
> And then switch the paths in my PG launch script and then start up
> PostgreSQL again.
>
> Ignore the windowishness of this script, pretend you see export and $ signs
> instead
> -- START SCRIPT --
> SET OS_BUILD=64
> SET GCC_TYPE=gcc81
> SET MINGW=C:\ming%OS_BUILD%%GCC_TYPE%\mingw%OS_BUILD%
> SET PROJECTS=C:\ming%OS_BUILD%%GCC_TYPE%\projects
> SET GDAL_VER=3.3.3
> #I change this
> SET GEOS_VER=3.10.1
> SET PGDATA=%~dp0\data
> SET PGDATABASE=postgres
> SET PGUSER=postgres
> SET PGPORT=5451
> : lots of other dependencies cut out to keep this shorter
> @SET
> PATH=%PROJECTS%\zlib\rel-zlib-%ZLIB_VER%w%OS_BUILD%%GCC_TYPE%\bin;%PROJECTS%
> \CGAL\rel-cgal-%CGAL_VER%w%OS_BUILD%%GCC_TYPE%\bin;%PROJECTS%\cgal\rel-sfcga
> l-%SFCGAL_VER%w%OS_BUILD%%GCC_TYPE%\bin;%MINGW%\bin;%~dp0bin;%PROJECTS%\gdal
> \rel-%GDAL_VER%w%OS_BUILD%%GCC_TYPE%\bin;%PROJECTS%\geos\rel-%GEOS_VER%w%OS_
> BUILD%%GCC_TYPE%\bin;%PROJECTS%\rel-libiconv-%ICONV_VER%w%OS_BUILD%%GCC_TYPE
> %\bin;%PROJECTS%\proj\rel-%PROJ_VER%w%OS_BUILD%%GCC_TYPE%\bin;%PROJECTS%\lib
> xml\rel-libxml2-%LIBXML_VER%w%OS_BUILD%%GCC_TYPE%\bin;%PROJECTS%\curl\rel-cu
> rl-%CURL_VER%w%OS_BUILD%%GCC_TYPE%\bin;%PROJECTS%\expat\rel-expat-%EXPAT_VER
> %w%OS_BUILD%%GCC_TYPE%\bin;%PROJECTS%\freexl\rel-freexl-%FREEXL_VER%w%OS_BUI
> LD%%GCC_TYPE%\bin;%PROJECTS%\v8\%V8_VER%;%PROJECTS%\ssl\rel-openssl-%OPENSSL
> _VER%w%OS_BUILD%%GCC_TYPE%\bin;%PROJECTS%\sqlite\rel-sqlite%SQLite_VER%w%OS_
> BUILD%%GCC_TYPE%\bin;%PROJECTS%\protobuf\rel-%PROTOBUF_VER%w%OS_BUILD%%GCC_T
> YPE%\bin;%PROJECTS%\pcre\rel-%PCRE_VER%w%OS_BUILD%%GCC_TYPE%\bin;%PROJECTS%\
> lz4\rel-lz4-%LZ4_VER%w%OS_BUILD%%GCC_TYPE%\bin;%~dp0\bin
>
> "%~dp0\bin\initdb" -E UTF8 -U postgres -A trust
> "%~dp0\bin\pg_ctl" -D "%~dp0/data" -l logfile_%PGPORT% start
>
> ECHO "Click enter to stop"
> pause
> "%~dp0\bin\pg_ctl" -D "%~dp0/data" stop -m fast
> -- END SCRIPT --

This is probably my lack of windows knowledge, but is the postgis build
somehow configured to find the needed shared libraries by looking in
PATH?   On POSIXy systems, the libraries are looked for in DT_RPATH (or
RUNPATH, a minor complication not that important).  E.g. objdump -x on
/usr/pkg/bin/shp2pgsql has this output:


  NEEDED   libgeos_c.so.1
  NEEDED   libproj.so.15
  NEEDED   libsqlite3.so.1
  NEEDED   libpthread.so.1
  NEEDED   libm.so.0
  NEEDED   libjson-c.so.5
  NEEDED   libintl.so.1
  NEEDED   libc.so.12
  RPATH/usr/pkg/lib:/usr/X11R7/lib

and the same on the postgis so (that's dynamically loaded into
postgresql, AIUI) is

  NEEDED   libm.so.0
  NEEDED   libc++.so.1
  NEEDED   libgeos_c.so.1
  NEEDED   libproj.so.15
  NEEDED   libjson-c.so.5
  NEEDED   libprotobuf-c.so.1
  NEEDED   libxml2.so.2
  NEEDED   libz.so.1
  NEEDED   liblzma.so.2
  NEEDED   libc.so.12
  NEEDED   libstdc++.so.9
  RPATH/usr/pkg/lib:/usr/X11R7/lib


Earlier I talked about libgeos being added in, but it seems at least in
the postgis build that is not happening.

libgeos_c has:

  NEEDED   libgeos.so.3.10.1
  NEEDED   libstdc++.so.9
  NEEDED   libm.so.0
  NEEDED   libgcc_s.so.1
  NEEDED   libc.so.12
  SONAME   libgeos_c.so.1
  RPATH/usr/pkg/lib
 
so postgis ends up with libgeos.so, but doesn't have a textual reference
so replacing geos should still work.   I am not finding anything that
has a direct reference to libgeos, but I remember that happening, and
there are notes in pkgsrc about it.  However it does not seeem to be
happening any more.
>> Well, your real problem is that you are using windows!
>> 
> [Regina Obe]  
> Is your other name Sandro.  I might not be able to tell you apart anymore :)

Actually we've never met, but great minds think alike!

> You solved the problem :)
>
> Ldd Shows this:
> ldd /projects/postgresql/rel/pg14w64gcc81/lib/postgis-3.2.dll
> :
> ucrtbase.dll => /c/Windows/System32/ucrtbase.dll (0x7ff966af)
> libgeos_c.dll => not found
> :
>
> and I see the newer GEOS from 3.10.1 on  have the file called
> libgeos_c-1.dll
> copying libgeos_c-1.dll back to the original name of libgeos_c.dll 
> fixed the issue.

Well that 

Re: [geos-devel] Is GEOS 3.11 C-API upward compatible with GEOS 3.9.0

2021-12-05 Thread Greg Troxel

"Regina Obe"  writes:

> I was always under the assumption that the C-API should be upward compatible
> (only the C++ API is unstable).

yes

> Normally  I can do the following:
>
> Compile PostGIS with GEOS say 3.9.0
>
> Launch my PostgreSQL with GEOS 3.9.0
>
> Then launch again with newer GEOS - in this case GEOS 3.11.


That is not about API stability.  It is about having the same ABI

> So my PostGIS is compiled with GEOS 3.9.0, but it should work with GEOS
> 3.11.

You presumably have swapped out the geos implementation?  How?

> What I am finding is it is not.  I thought maybe I had the paths wrong so I
> double-checked a couple of times.
>
> This is what I get when I swap out the older GEOS 3.9.0 with newer GEOS 3.11
> (main branch)
>
> And then run any PostGIS function.
>
> ERROR:  could not load library
> "C:/ming64gcc81/projects/postgresql/rel/pg14w64gcc81/lib/postgis-3.2.dll":
> The specified module could not be found.

Well, your real problem is that you are using windows!

That error doesn't show what couldn't be found, and I'd suggest the
equivalent of objdump and ldd.

> I then tried to swap with GEOS 3.10.0  and that worked okay.
> POSTGIS="3.2.0dev 3.2.0beta3-2-g0b32bdd14" [EXTENSION] PGSQL="140"
> GEOS="3.10.0-CAPI-1.16.0" PROJ="7.2.1" GDAL="GDAL 3.3.3, released
> 2021/10/25" LIBXML="2.9.9" LIBJSON="0.12" LIBPROTOBUF="1.2.1" WAGYU="0.5.0
> (Internal)" TOPOLOGY RASTER
>
> GEOS 3.10.1 - errors
> ERROR:  could not load library
> "C:/ming64gcc81/projects/postgresql/rel/pg14w64gcc81/lib/postgis-3.2.dll":
> The specified module could not be found.
>
> Can someone confirm that?  If it's just an issue with PostGIS 3.2, I guess
> that is okay, though I would think it would mean just the newer features
> like MakeValid would not be enabled by swapping out with a newer GEOS, but
> it shouldn't break install.  Also why GEOS 3.10.0 works and GEOS 3.10.1
> doesn't is very concerning.

But seriously, that doesn't sound right.

One issue is that the c library has a (on POSIX) DT_NEEDED for the C++,
and sometimes (libtool?) when building a program that links with
libgeos_c, the libraries that libgeos_c depend on are also added at
DT_NEEDED to the program.


signature.asc
Description: PGP signature
___
geos-devel mailing list
geos-devel@lists.osgeo.org
https://lists.osgeo.org/mailman/listinfo/geos-devel


Re: [geos-devel] cmake detailed comments

2021-10-15 Thread Greg Troxel

Paul Ramsey  writes:

> Let me know what happens on your system?

The destdir has RPATH of the prefix, and the tests have RPATH of only
the build tree.  The tests all pass (which is good, because that's
really what matters as the present discussion is about the test harness,
and not about the soundness of the resulting install).

So this approach works for geos because it's a special case, but it
won't work for programs with dependencies.



signature.asc
Description: PGP signature
___
geos-devel mailing list
geos-devel@lists.osgeo.org
https://lists.osgeo.org/mailman/listinfo/geos-devel


Re: [geos-devel] cmake detailed comments

2021-10-15 Thread Greg Troxel

Paul Ramsey  writes:

> I'm running your script now, but just from looking at it, this seems
> suspicious...
>
> cmake .. \
>-DCMAKE_INSTALL_PREFIX=${PREFIX} \
>-DCMAKE_BUILD_RPATH=${LIBDIR} \
>-DCMAKE_INSTALL_RPATH=${LIBDIR}
>
> My understanding of the "build rpath" is that it exists in the built
> binaries PRE install, so for build testing, PRE install, you want it
> to point into the local library location. By over-riding it and
> setting it to LIBDIR, you're saying "no no no, please put this path
> into the rpath of of the PRE install binaries". I'd guess/hope that
> removing the CMAKE_BUILD_RPATH while leaving CMAKE_INSTALL_RPATH as
> you have it is closer to the intent, but I'll play with a build
> myself.

I am trying to figure out how to deal with cmake in the general case of
a packaging system.  While geos usually has no dependencies (except
pthreads which are usually part of base but not always), packages built
with cmake in general do have dependencies.   When packages with
dependencies build test programs, those programs will need to find those
dependency libraries.So they need to have the prefix's libdir in
RPATH.

I think there is only one real bug, which is that cmake uses as RPATH in
the build tree:

 BUILD_RPATH:/path/to/build/tree/lib

when it should be doing

 /path/to/build/tree/lib:BUILD_RPATH

so that when a library is in both places it comes from the build tree.
I do not know if this is a cmake bug or a bug in geos's CMakeFiles, but
I lean to cmake because I don't see anything like this in geos
CMakeFiles.

Consider if geos happened to use libtiff.so and that was in the same
prefix we were talking about.  That's a concrete example of what I'm
speaking about generally.




signature.asc
Description: PGP signature
___
geos-devel mailing list
geos-devel@lists.osgeo.org
https://lists.osgeo.org/mailman/listinfo/geos-devel


Re: [geos-devel] 3.10.0rc1 (static)

2021-10-15 Thread Greg Troxel

Paul Ramsey  writes:

> OK, this is coming directly out of https://trac.osgeo.org/geos/ticket/1103
>
> If I go back to using an "OBJECT" library in building ryu, then it
> gets bundled right up into libgeos.a where we want it, and your link
> line is nice and simple again. That implies a minimum cmake of 3.13,
> whcih is 3+ years old now. My macports gives me 3.21 by default. I
> dunno, we backed out of the OBJECT library to STATIC to keep the cmake
> requirement low, but that implies generating two static libs and
> sticking them both on the link line.
>
> I'm inclined to bias towards a newer cmake and still generating one static 
> library. 

I'm usually in the camp of not wanting to have aggressive dependency
requirements, so having a look and opining.

pkgsrc has 3.21.2 now (and it looks like 3.21.3 just came out).

3.13.0 was released on 2018-11-20.  That's almost 5 years ago, and I
therefore think it's entirely reasonable to require it if it makes
anything even a little bit better.



signature.asc
Description: PGP signature
___
geos-devel mailing list
geos-devel@lists.osgeo.org
https://lists.osgeo.org/mailman/listinfo/geos-devel


Re: [geos-devel] 3.10.0rc1

2021-10-15 Thread Greg Troxel

Sandro Santilli  writes:

>> So this script could perhaps
>> 
>>   print out that autoconf has been removed and that one must use cmake
>> 
>>   print out a hint that "cmake -DCMAKE_INSTALL_PREFIX=/usr/foo" is a
>>   replacement for ./configure --prefix=/usr/foo
>> 
>>   exit with status 1, so that any well-written script/package stuff will
>>   fail
>
> That script is mine.
>
> I would love to still use ./configure as the switches I use are...
> well, none (and --prefix, for running your test).
>
> Right now you DO get the WARNING printed, and I think you get a
> failure if you pass any unsupported switch, is that not enough ?

It's likely that environment vairables are treated differently, but I
don't really care personally.  I maintain my own build scripts, one for
each package, and pkgsrc will switch.  So it's just that I think it's
unhelpful for the next person, but I can see your point that there are
people for whom it is helpful.

So I change my comment to "abstain'.


signature.asc
Description: PGP signature
___
geos-devel mailing list
geos-devel@lists.osgeo.org
https://lists.osgeo.org/mailman/listinfo/geos-devel


Re: [geos-devel] 3.10.0rc1

2021-10-15 Thread Greg Troxel

(I don't see a rc1 tag in git.)

I see there's configure in git, that sort of deals.  However, I don't
think it really does the right thing for all sorts of args that are
often passed to configure, and as much as I don't enjoy cmake pain, I
think it's better for people running configure especially from packaging
or scripts to realize that they need to translate their world into
cmake.

So this script could perhaps

  print out that autoconf has been removed and that one must use cmake

  print out a hint that "cmake -DCMAKE_INSTALL_PREFIX=/usr/foo" is a
  replacement for ./configure --prefix=/usr/foo

  exit with status 1, so that any well-written script/package stuff will
  fail
 


signature.asc
Description: PGP signature
___
geos-devel mailing list
geos-devel@lists.osgeo.org
https://lists.osgeo.org/mailman/listinfo/geos-devel


Re: [geos-devel] cmake detailed comments

2021-10-15 Thread Greg Troxel

tl;dr:

I've done things the cmake way and the test are still not ok.
The problem is that the test RPATH is being *appended* to the BUILD
RPATH, instead of prepended.

long version:

My build script is:

#!/bin/sh

if [ -d $HOME/bin/ccache ]; then
echo "enabling ccache"
ccache -z
PATH=$HOME/bin/ccache:$PATH
fi

PREFIX=/usr/pkg
LIBDIR=${PREFIX}/lib

# In theory, BSD make is ok.
MAKE=make 

(rm -rf build destdir &&
 mkdir build &&
 cd build &&
 cmake .. \
   -DCMAKE_INSTALL_PREFIX=${PREFIX} \
   -DCMAKE_BUILD_RPATH=${LIBDIR} \
   -DCMAKE_INSTALL_RPATH=${LIBDIR} \
   > OUT.00.cmake 2>&1 &&
 ${MAKE} > OUT.10.make 2>&1 &&
 (${MAKE} check > OUT.20.check 2>&1 || true) && \
 make DESTDIR=../destdir install > OUT.30.install 2>&1 && \
 echo BUILD DONE
)


BUILD_RPATH is passed because a packaging system invoking cmake must in
general ensure that programs/libs in the build environment can find
their dependencies at test time.

Some tests pass, and some fail, with "std:alloc bad" and various other
stuff.  But a quick look shows that objdump -x of one of the test
programs has:

  RPATH
/usr/pkg/lib:/home/n0/gdt/SOFTWARE/GEO/GEOS/geos-master/build/lib

so I expect it to go badly.   This should have been

  RPATH
/home/n0/gdt/SOFTWARE/GEO/GEOS/geos-master/build/lib:/usr/pkg/lib

and then I think it would have been fine.


If anyone can tell me what cmake args I should be using instead for the
general case of a program with a correct cmake setup and  which might be
finding dependencies from ${PREFIX}, I'd like to hear about it.   The
list above is what I came up after reading the cmake docs pointed out by
pramsey@ and strk@.

Greg


signature.asc
Description: PGP signature
___
geos-devel mailing list
geos-devel@lists.osgeo.org
https://lists.osgeo.org/mailman/listinfo/geos-devel


Re: [geos-devel] cmake detailed comments

2021-10-14 Thread Greg Troxel

Sandro Santilli  writes:

> On Wed, Oct 13, 2021 at 03:41:30PM -0700, Paul Ramsey wrote:
>> Actually searching for "RPATH" here turns up all kinds of knobs if you want 
>> different things done to rpath
>> 
>> https://cmake.org/cmake/help/latest/manual/cmake-variables.7.html
>
> Greg might be after this:
> https://cmake.org/cmake/help/latest/variable/CMAKE_INSTALL_RPATH.html

That looks close.   What I need (in general) is to be able to specify:

  RPATH value to be added to BUILD and INSTALL, so that dependency
  libraries can be found, both at runtime and at test time.

  RPATH value to be added to INSTALL so that geos can find its own libs

and these would both be ${RPREFIX}/lib.


It seems that for cmake to get the ordering of RPATHs right, which it
currently isn't, it's likely necessary to avoid putting anything that is
rpath in a linker flag of any kind, and to only use the CMAKE_*_RPATH
variables.


So I think that means settting

 CMAKE_BUILD_RPATH=/usr/pkg/lib
 CMAKE_INSTALL_RPATH=/usr/pkg/lib

both, in the general case for calling cmake.   For geos where pthread is
from pkgsrc, this is the actual case.  For geos when there aren't any
dependencies, the BUILD could be skipped as a special case.


signature.asc
Description: PGP signature
___
geos-devel mailing list
geos-devel@lists.osgeo.org
https://lists.osgeo.org/mailman/listinfo/geos-devel


Re: [geos-devel] cmake detailed comments

2021-10-14 Thread Greg Troxel

I am guessing that this script is not doing anything to set RPATH and
that FreeBSD puts /usr/local/lib in the default linker path.   Which is
interesting because people that build things not from ports might get
ports libraries linked without asking for that prefix - but that's a
system preference decision without a right/wrong answer.



signature.asc
Description: PGP signature
___
geos-devel mailing list
geos-devel@lists.osgeo.org
https://lists.osgeo.org/mailman/listinfo/geos-devel


Re: [geos-devel] cmake detailed comments

2021-10-14 Thread Greg Troxel

Sandro Santilli  writes:

> On Wed, Oct 13, 2021 at 12:08:50PM -0400, Greg Troxel wrote:
>> 
>> Sandro Santilli  writes:
>> 
>> > What do you mean by "I like how our tests work now" ? How do they work
>> > for you ? Are them guaranteed to be using the *just_built* (rather
>> > than the *installed*) libraries ?
>> 
>> I believe I've found a bug in running tests.  When one passes in
>> -W,-R/usr/foo/lib to the build (in LDFLAGS), the not-installed tests end
>> up having two RPATH entries:
>> 
>>   /usr/foo/lib
>>   /path/to/build/tree/lib
>> 
>> and they are ordered that way, resulting in libgeos_c being found in
>> /usr/foo/lib.
>
> Before I go on testing this let me please ask: why would you
> pass -W,-R/usr/foo/lib to the build ?

Well, you did test (thanks!), and you did reproduce the problem, but:

Stepping back from just thinking about geos, in the context of a
packaging system, there is a desire to do things in a way that works in
the general case, rather than tightly adapating to particular systems.

In general:

  ${PREFIX}/lib is not necessarily in the default linker search path

  a given package may depend on other libraries which are already in
  ${PREFIX}/lib as dependency packages

  build systems often either check for libraries with a test program
  with #include  and compiled with -lfoo, and for this to work
  the -R needs to be present.

  some build systems just add -lfoo because it's documented they need
  them and don't check, and in that case -R needs to be present

and in the case of pkgsrc, passing -R in LDFLAGS as the standard
approach has survived the test of time in a system that runs on many (20
in theory, probably only 10 of which have users - HP-UX no longer
counts) systems with ~25K packages.

So there could be special logic to avoid it, but on the other hand it's
possible that on one of those systems pthreads is not part of the OS and
is a package that gets depended on, and thus it would be necessary.



I realize that the world is moving from "just use it" to "packages are
expected to use pkg-config", and that's a good thing as it's a single
uniform interface.  Packaging systems have to deal with such interfaces,
and do -- but it imposes a lot of work when there are boutique methods
to do things.  Fortunately geos is producing a pc file, and in general
things are getting more regularized.


signature.asc
Description: PGP signature
___
geos-devel mailing list
geos-devel@lists.osgeo.org
https://lists.osgeo.org/mailman/listinfo/geos-devel


Re: [geos-devel] cmake detailed comments

2021-10-13 Thread Greg Troxel

Paul Ramsey  writes:

> That is the case on all the platforms we've had reported except
> Gregs. Tests work against the libraries built in the build directory.

I am not aware of a positive report for

  not Mac (which does all of this stuff totally differently from normal Unix)

  3.9 installed in a prefix not in the default linker search path

  3.10 built for the same prefix in a way that causes RPATH entries for
  that prefix, as would be required for it to work when installed.


My list of conditions may sound odd, but it's basically all packaging
systems that aren't mac or linux, where the "base system" is in /usr and
packaging things are someplace else (/usr/pkg, /usr/ports, /usr/local,
varies).


signature.asc
Description: PGP signature
___
geos-devel mailing list
geos-devel@lists.osgeo.org
https://lists.osgeo.org/mailman/listinfo/geos-devel


Re: [geos-devel] cmake detailed comments

2021-10-13 Thread Greg Troxel

Sandro Santilli  writes:

> What do you mean by "I like how our tests work now" ? How do they work
> for you ? Are them guaranteed to be using the *just_built* (rather
> than the *installed*) libraries ?

I believe I've found a bug in running tests.  When one passes in
-W,-R/usr/foo/lib to the build (in LDFLAGS), the not-installed tests end
up having two RPATH entries:

  /usr/foo/lib
  /path/to/build/tree/lib

and they are ordered that way, resulting in libgeos_c being found in
/usr/foo/lib.

So maybe strk can test (on Linux I'm guessing):

  build and install geos 3.9.1 as --prefix=/usr/foo

  build geos 3.10 by telling cmake to use /usr/foo as prefix, and
  passing in the environment
CPPFLAGS=-I/usr/foo/include
LDFLAGS="-L/usr/foo/lib -Wl,-R/usr/foo/lib"
  as a packaging system building everything for /usr/foo would do.

  Then look at the test binaries  with objdump -x, ldd, and run them.I
  expect they will mislink against the installed geos.

If so, the bug in cmake or geos cmakefiles is that the extra RPATH for
tests is put after the other RPATH values, rather then being put first.

Or rather, that is the bug, but if you can reproduce it that's progress
in understanding its scope.



signature.asc
Description: PGP signature
___
geos-devel mailing list
geos-devel@lists.osgeo.org
https://lists.osgeo.org/mailman/listinfo/geos-devel


[geos-devel] cmake detailed comments

2021-10-11 Thread Greg Troxel

As this is my first release using cmake I'm reading INSTALL etc. and
have a few comments.

0) INSTALL says;

  mkdir build && cd build && cmake -DCMAKE_BUILD_TYPE=Release ..

  Setting `CMAKE_BUILD_TYPE` to `Release` is necessary to enable compiler
  optimizations.

but CMakeLists.txt says:

  # Default to release build so packagers don't release debug builds
  set(DEFAULT_BUILD_TYPE Release)

  [set CMAKE_BUILD_TYPE from DEFAULT]

It seems to me that it's best if building without options builds what
users ought to run.  Perhaps this is changed back and forth, but it
seems better to expect people testing who want non-optimized builds for
debug clarity to use a wrapper script to build it that way.  (I tend to
have a build script for things I build from git, since I need to set up
prefix and LDFLAGS anyway.)

CMAKE_BUILD_DEVELOPER seems to be default on.

1) Doing a build without CMAKE_BUILD_TYPE gets me (among other things)
  -- GEOS: Using default build type: Release
  -- GEOS: Developer mode ENABLED
  -- GEOS: Build astyle ON

so I'm not sure if this is a release build or not.  Also, I don't
understand why astyle is built.  It's not installed, but it seems to be
a source maintenance tool that happens to be in the repo, not part of
geos.

2) not about cmake but this seems to slow down geos a lot to make tests
repeatable even though I would guess the answers obtained with extended
floats[q aren't really wrong, just different -- unless there is some
"geos computes according to IEEE754" spec, in which case it would be
nice if the comment explained that instead of talking about making tests
pass.

  # Use -ffloat-store for 32-bit builds (needed to make some tests pass)
  target_compile_options(geos_cxx_flags INTERFACE

$<$,$>:-ffloat-store>
  )

3) ryu.  I am not able to follow this at all.

4) tests in top-level

The tests are written as if they are regular code; tests in general need
to be marked for special linking.  I don't see anything special there
either.

5) complexities of RPATH handling

I found the following, which I don't fully understand yet:

  https://dev.my-gate.net/2021/08/04/understanding-rpath-with-cmake/
  https://gitlab.kitware.com/cmake/community/-/wikis/doc/cmake/RPATH-handling
  https://cmake.cmake.narkive.com/6f4X1K39/change-rpath-at-the-packaging-stage

and not necessarily just about cmake but:

  https://docs.conan.io/en/latest/howtos/manage_shared_libraries/rpaths.html


6) non-pkgsrc build

I did a build using cmake from the command line, but aligned with how
one would build on a (normal ELF, not mac) system that puts software in
a prefix that isn't part of the default search path, and thus passing
CPPFLAGS and LDFLAGS for that prefix.  I realize geos is special in that
it only depends on libc and threads (and perhaps some doc programs), but
the installed geosop and library need to have a DT_RPATH section
pointing to $prefix/lib.

Doing that, the tests failed, differently from under pkgsrc, but the
installed libgeos_c was found and it ended up with both libgeos 3.9 and
3.10 both.   The reason is that the test program had both the passed-in
/usr/pkg/lib RPATH as well as the RPATH from the build directory, but
the build directory one was after the one intended for install, not
before.

I think if the build-tree RPATH used for test programs was put before
the LDFLAGS-derived RPATH, things would be better.

7) RPATH not used at install time if not in LDFLAGS

After building for prefix=/usr/pkg, and not passing in LDFLAGS, I did

  make DESTDIR=../destdir install

and got the expected files under destdir, parallel to build.  All of
geosop, libgeos_c, and geos.pc were missing RPATH.

So probably this is ok, as I realize opinions vary between platforms
about RPATH.

8) RPATH used at install time if passed via LDFLAGS

I did a build with the right values for my situation:

  CPPFLAGS=-I/usr/pkg/include LDFLAGS="-L/usr/pkg/lib -Wl,-R/usr/pkg/lib" \

and the (destdir) installed geosop, in objdump -x:

  NEEDED   libgeos_c.so.1
  NEEDED   libgeos.so.3.10.0
  NEEDED   libstdc++.so.9
  NEEDED   libm.so.0
  NEEDED   libgcc_s.so.1
  NEEDED   libc.so.12
  RPATH/usr/pkg/lib

which looks right.

However geos.pc is missing the -Wl,-R:
  Libs: -L${libdir} -lgeos_c

Perhaps I'm supposed to be doing something different, but I haven't been
able to understand what yet.


signature.asc
Description: PGP signature
___
geos-devel mailing list
geos-devel@lists.osgeo.org
https://lists.osgeo.org/mailman/listinfo/geos-devel


Re: [geos-devel] 3.10.0beta2

2021-10-11 Thread Greg Troxel

Paul Ramsey  writes:

> I feel like there is an answer somewhere out there that a NetBSD
> expert could find and teach us, and I'd rather not bend around the
> whole setup of things because of a fairly niche platform issue. People

Maybe, and I'm working on that.  So far, it doesn't seem like NetBSD
itself as building into a different prefix with a packaging system, on a
system that expects to use RPATH.

So far it feels to me like the cmake setup is in general unsound; nobody
has been able to point out a mechanism by which it is supposed to do
testing right. I've tried to read about this and it seems both really
complicated and there seems to be a notion that package authors are
supposed to put a lot of complicated stuff in cmakefiles to manage
handling of rpath in lots of different enviroments, instead of this
being something that cmake provides.  I know I've long not been a fan of
cmake (and people on the lists know that too), but people keep telling
me that it's better and that it does everything autoconf does, and I
feel like I often run into regressions.

> can still *use* GEOS pretty easily on NetBSD
> (build/install/forget). The only thing they cannot easily do is run
> tests, which is inconvenient to a very small population, which I
> understand includes you but I hope you'll be OK with us continuing
> down the release path nonetheless.

Formally, I'm not ok with it as I keep hearing that moving from autoconf
to cmake doesn't involve regressions, so I don't think there should be
regressions.

Practically, I have limited energy and won't take it personally.

For now, I'm trying to understand better, as I have to deal with cmake
in a number of projects.   I am going to try to actually read the
cmakefiles


signature.asc
Description: PGP signature
___
geos-devel mailing list
geos-devel@lists.osgeo.org
https://lists.osgeo.org/mailman/listinfo/geos-devel


Re: [geos-devel] 3.10.0beta2

2021-10-10 Thread Greg Troxel

I've been looking into the test failures.

My build passes LDFLAGS of -R/usr/pkg/lib, because pkgsrc builds to a
prefix that is not part of the default search path.  And, while geos
does not depend on libraries from pkgsrc, in general packages depend on
other packages and need to find their libs at runtime.

The build of the tests programs use those LDFLAGS (which seems natural
enough).  This results in a bunch of libs being DT_NEEDED:

  $ objdump -x /tmp/work/geography/geos/work/geos-3.10.0beta3/bin/test_geos_unit
  [snip]
  Dynamic Section:
NEEDED   libgeos_c.so.1
NEEDED   libgeos.so.3.10.0
NEEDED   libpthread.so.1
NEEDED   libstdc++.so.9
NEEDED   libm.so.0
NEEDED   libgcc_s.so.1
NEEDED   libc.so.12
RPATH/usr/pkg/lib
  [snip]

which is all straightforward for a program to be installed.


I still have not found any mechanism that attempts to arrange for the
not-installed library to be used for the test.

maybe the tests should be static?


signature.asc
Description: PGP signature
___
geos-devel mailing list
geos-devel@lists.osgeo.org
https://lists.osgeo.org/mailman/listinfo/geos-devel


Re: [geos-devel] 3.10.0beta2

2021-10-07 Thread Greg Troxel

Paul Ramsey  writes:

>> On Oct 6, 2021, at 4:21 PM, Greg Troxel  wrote:
>> 
>> Do you mean that if you
>> 
>>  have geos 3.9 installed in the system, in some prefix
>> 
>>  you build 3.10 with that same prefix -- as if you are building an
>>  updated package
>> 
>>  you run the tests in the 3.10 dir, before you have installed the
>>  newpackage
>> 
>> that the tests find the 3.10 not-installed libs and do not find the
>> installed version?
>
> Yes, that's 100% what I mean, and my dev environment would be
> well-nigh unusable were that not the case. My unit tests in my working
> dir link to the libraries in the same dir, so I can test my changes,
> without picking up my old system installed versions.

Great, we agree on how it ought to work.

I have been turning on verbose build options and have found the link
line for the tests.  It carries through the -R/usr/pkg/lib line from the
build environment and there doesn't appear to be any mechanism to force
the not-installed libs.

I need to look into this further, but so far I haven't found a mechanism
that arranges for the correct libs to be used.  I've asked NetBSD cmake
people if they understand the grand plan how this is supposed to work.


(On the pthread front, I think I was confused, so let's assume it's not
an issue and I'll speak up again if it is.)


signature.asc
Description: PGP signature
___
geos-devel mailing list
geos-devel@lists.osgeo.org
https://lists.osgeo.org/mailman/listinfo/geos-devel


Re: [geos-devel] 3.10.0beta2

2021-10-06 Thread Greg Troxel

Paul Ramsey  writes:

> I found the relevant CMake line, and only the unit tests should be ending
> up with a link dependency to pthreads. So don't declare the library itself
> as having a pthread dependency. (Maybe next release, when we get all jiggy
> with multi-threaded performance work, ha ha ha)
> P
>
> --- from cmakelists.txt
> find_package(Threads)
> target_link_libraries(test_geos_unit PRIVATE geos geos_c Threads::Threads)

Interesting.  I wonder if the tests should avoid threads if the library
isn't built with threads.

It seems obvious (maybe I'm wrong) that if a library is not built with
threads, then a threaded program that uses it must ensure that only one
library call is happening at any given time, either by calling it only
from one specific thread, or having a "call into geos" mutex.

I found that the geos library did get linked with -lpthread.  I will
reproduce that and see if I can figure out why, after moving to rc3.



signature.asc
Description: PGP signature
___
geos-devel mailing list
geos-devel@lists.osgeo.org
https://lists.osgeo.org/mailman/listinfo/geos-devel


Re: [geos-devel] 3.10.0beta2

2021-10-06 Thread Greg Troxel

Paul Ramsey  writes:

> On Sat, Oct 2, 2021 at 4:07 PM Greg Troxel  wrote:
>>
>> > Also, the tests are broken for me.   Running make check fails
>> > completely, and I find in the log:
>
> Everything works fine in MacOS, I don't have access to a broken platform to
> try things out on...

Thanks for looking into this.

> Sparrow:~/Code/geos-git-build pramsey% otool -L bin/test_geos_unit
> bin/test_geos_unit:
> @rpath/libgeos_c.1.dylib (compatibility version 1.0.0, current version
> 1.16.0)
> @rpath/libgeos.3.10.0.dylib (compatibility version 3.10.0, current version
> 3.10.0)
> /usr/lib/libc++.1.dylib (compatibility version 1.0.0, current version
> 800.7.0)
> /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version
> 1281.0.0)
>
> The file diffs all look reasonable to me. Some classes were added, a few
> were removed.

Do you mean that if you

  have geos 3.9 installed in the system, in some prefix

  you build 3.10 with that same prefix -- as if you are building an
  updated package

  you run the tests in the 3.10 dir, before you have installed the
  newpackage

that the tests find the 3.10 not-installed libs and do not find the
installed version?

Are you or someone else able to try this on Linux or FreeBSD?

I wonder if anyone knows if there is a mechanism that intends to allow
this to work, as I don't see how it would with specific effort.

I will test with pkgsrc on Mac (prefix /opt/pkg).


signature.asc
Description: PGP signature
___
geos-devel mailing list
geos-devel@lists.osgeo.org
https://lists.osgeo.org/mailman/listinfo/geos-devel


Re: [geos-devel] 3.10.0beta2

2021-10-02 Thread Greg Troxel

Greg Troxel  writes:

> Also, the tests are broken for me.   Running make check fails
> completely, and I find in the log:
>
> /tmp/work/geography/geos/work/geos-3.10.0beta2/bin/test_geos_unit: Shared 
> object "libgeos.so.3.10.0" not found
>
> I am running tests from the build directory before I have built a
> package  and then replaced the existing 3.9 installation.  So in
> /usr/pkg/lib, where the library is expected to be, there is
> libgeos.so.3.9.0 and no 3.10.  Looking at the test program:
>
> $ ldd /tmp/work/geography/geos/work/geos-3.10.0beta2/bin/test_geos_unit
> /tmp/work/geography/geos/work/geos-3.10.0beta2/bin/test_geos_unit:
> -lgeos_c.1 => /usr/pkg/lib/libgeos_c.so.1
> -lgeos-3.9.1 => /usr/pkg/lib/libgeos-3.9.1.so
> -lstdc++.9 => /usr/lib/libstdc++.so.9
> -lm.0 => /usr/lib/libm.so.0
> -lc.12 => /usr/lib/libc.so.12
> -lgcc_s.1 => /usr/lib/libgcc_s.so.1
> -lgeos.3.10.0 => not found
> -lpthread.1 => /usr/lib/libpthread.so.1
>
> I see it's also finding the wrong libgeos_c, so the root cause is very
> likely not arranging a temporary library path for testing built but not
> installed code.  autoconf/libtool did this correctly, with a scheme to
> link test programs (and anything else) against the built but not
> installed library, and then to relink at installation.  There are of
> course multiple approaches, but "make check" needs to use the
> programs/libs in the build tree, and ignore what's installed.

I worked around the bug in "make check" by installing the package, and
then building it again and running tests, so that when it links against
the wrong library, it finds the same bits.   I was happy to see that all
the tests passed, so there aren't any real geos bugs, just cmake/test
bugs.


signature.asc
Description: PGP signature
___
geos-devel mailing list
geos-devel@lists.osgeo.org
https://lists.osgeo.org/mailman/listinfo/geos-devel


Re: [geos-devel] 3.10.0beta2

2021-10-02 Thread Greg Troxel

Greg Troxel  writes:

> http://download.osgeo.org/geos/geos-3.10.0beta2.tar.bz2

[This note replaces my briefer and less coherent note from last night.]

I converted my package build to cmake, and it worked better than I
expected, which is great.  I did my build under pkgsrc on NetBSD 9
amd64.

The diff to the main packaging control file is not that interesting to
others, so I'll omit it; it's basically autoconf->cmake, dropping
libtool, and declaring a dependency on pthreads.

The diff of the set of installed files is significant, and I've appended
it.  Mostly I would like someone familiar with the changes to just skim
it and nod "that's all expected".  There are a lot of withdrawn .h files. 

I try to point out anything that I see that one wouldn't expect from
reading NEWS, to sort those into real bugs and NEWS omissions.  I do
think it's good to fix NEWS during this period.

  * NEWS does not mention the withdrawal of autoconf

  * NEWS does not mention that libtool is no longer used and that
libgeos.la is no longer installed.

  * include/geos.h is no longer installed.  I am guessing that is
intentional, but it is not mentioned in NEWS.

  * There are several .h files no longer installed.  I am guessing these
are intended API withdrawals, but NEWS does not say that there are
any withdrawals.  An example is
include/geos/operation/overlay/FuzzyPointLocator.h

  * The build finds and uses pthreads.  Before, the build did not link
to pthread, and my 3.9 libraries are not linked with threads.
However, I had not declared that the package used threads, and
pkgsrc's mechanisms for hiding things that aren't declared are
likely more successful for autoconf than cmake.  In the sources,
README and INSTALL do not mention threads.  I can't figure out if
this matters and how, and what the right answer is.

Also, the tests are broken for me.   Running make check fails
completely, and I find in the log:

/tmp/work/geography/geos/work/geos-3.10.0beta2/bin/test_geos_unit: Shared 
object "libgeos.so.3.10.0" not found

I am running tests from the build directory before I have built a
package  and then replaced the existing 3.9 installation.  So in
/usr/pkg/lib, where the library is expected to be, there is
libgeos.so.3.9.0 and no 3.10.  Looking at the test program:

$ ldd /tmp/work/geography/geos/work/geos-3.10.0beta2/bin/test_geos_unit
/tmp/work/geography/geos/work/geos-3.10.0beta2/bin/test_geos_unit:
-lgeos_c.1 => /usr/pkg/lib/libgeos_c.so.1
-lgeos-3.9.1 => /usr/pkg/lib/libgeos-3.9.1.so
-lstdc++.9 => /usr/lib/libstdc++.so.9
-lm.0 => /usr/lib/libm.so.0
-lc.12 => /usr/lib/libc.so.12
-lgcc_s.1 => /usr/lib/libgcc_s.so.1
-lgeos.3.10.0 => not found
-lpthread.1 => /usr/lib/libpthread.so.1

I see it's also finding the wrong libgeos_c, so the root cause is very
likely not arranging a temporary library path for testing built but not
installed code.  autoconf/libtool did this correctly, with a scheme to
link test programs (and anything else) against the built but not
installed library, and then to relink at installation.  There are of
course multiple approaches, but "make check" needs to use the
programs/libs in the build tree, and ignore what's installed.

(I haven't yet installed the package and tried to build postgis against
it.  I'd like to be able to run tests first.)

Perhaps "make check" is the wrong thing to do, but it's what everybody
expects and it lets people who have no idea about the geos test setup be
able to test and get a clean pass or need to look into it.

Greg


Index: PLIST
===
RCS file: /cvsroot/pkgsrc/geography/geos/PLIST,v
retrieving revision 1.17
diff -u -p -r1.17 PLIST
--- PLIST   3 Jan 2021 01:27:29 -   1.17
+++ PLIST   2 Oct 2021 11:32:55 -
@@ -1,10 +1,11 @@
 @comment $NetBSD: PLIST,v 1.17 2021/01/03 01:27:29 gdt Exp $
 bin/geos-config
-include/geos.h
+bin/geosop
 include/geos/algorithm/Angle.h
 include/geos/algorithm/Area.h
 include/geos/algorithm/BoundaryNodeRule.h
 include/geos/algorithm/CGAlgorithmsDD.h
+include/geos/algorithm/CGAlgorithmsDD.inl
 include/geos/algorithm/CentralEndpointIntersector.h
 include/geos/algorithm/Centroid.h
 include/geos/algorithm/ConvexHull.h
@@ -17,15 +18,18 @@ include/geos/algorithm/InteriorPointPoin
 include/geos/algorithm/Intersection.h
 include/geos/algorithm/Length.h
 include/geos/algorithm/LineIntersector.h
+include/geos/algorithm/LineIntersector.inl
 include/geos/algorithm/MinimumBoundingCircle.h
 include/geos/algorithm/MinimumDiameter.h
 include/geos/algorithm/NotRepresentableException.h
 include/geos/algorithm/Orientation.h
+include/geos/algorithm/PointInRing.h
 include/geos/algorithm/PointLocation.h
 include/geos/algorithm/PointLocator.h
 include/geos/algorithm/RayCrossingCounter.h
 include/geos/algori

Re: [geos-devel] 3.10.0beta2

2021-10-01 Thread Greg Troxel

Paul Ramsey  writes:

> Here it is incorporating Sebs feedback, I'm going to try and be pretty
> aggressive about pushing new packages so there's always something worth
> testing against.

Thanks.  From my viewpoint a new tarball every time there's a signficant
fix is good.

> http://download.osgeo.org/geos/geos-3.10.0beta2.tar.bz2

Converting my build to cmake worked much better than I expected.

Relative to NEWS I see a few things I don't follow:

  a bunch of API withdrawals, I think.

  include/geos.h is no longer installed

and more seriously, running tests fails because it apparently doesn't
use the built-but-not-installed libraries.

I'll say  this again more coherently tomorrow or Sunday.


signature.asc
Description: PGP signature
___
geos-devel mailing list
geos-devel@lists.osgeo.org
https://lists.osgeo.org/mailman/listinfo/geos-devel


Re: [geos-devel] 3.10.0beta1

2021-10-01 Thread Greg Troxel

Paul Ramsey  writes:

> That feels... off the reservation for a library and something for the final 
> build? Like, not every platform requires that link, I don't think.

My quick reaction is that -lstdc++ seems funny for things that are
compiled as C++, but if there's a link line intended to be called in a C
build that's perhaps something else.   I'll see how that turns out on
NetBSD shortly.


signature.asc
Description: PGP signature
___
geos-devel mailing list
geos-devel@lists.osgeo.org
https://lists.osgeo.org/mailman/listinfo/geos-devel


Re: [geos-devel] 3.10.0beta1

2021-10-01 Thread Greg Troxel

I don't care what the word is, but in my view a release which makes the
massive change of dropping automake can't really be called beta, so I
think we need to view this as more alpha like.

I'll try to get to converting the package to cmake and testing soon, but
it may take until Monday when it is raining.


signature.asc
Description: PGP signature
___
geos-devel mailing list
geos-devel@lists.osgeo.org
https://lists.osgeo.org/mailman/listinfo/geos-devel


Re: [geos-devel] The Road to 3.10

2021-09-29 Thread Greg Troxel

Mike Taves  writes:

> On Thu, 30 Sept 2021 at 05:16, Paul Ramsey  wrote:
>> So the next step on the road to 3.10 is an interim release. I'd like
>> to go right to beta1. If I don't hear any howls in the next 24-48
>> hours, I will cut that package so we can get our packager friends to
>> take it for a spin.
>
> I have two pull requests that are ready to review:
> - https://github.com/libgeos/geos/pull/445
> - https://github.com/libgeos/geos/pull/447

is this support already present in autoconf, and this is just cmake
catching up?

AIUI autoconf is still at least supported, and it's what pkgsrc is
using.

(In general, I find that every time a package switches to cmake it
requires a bunch of patching of cmakefiles.  Often they have "ifdef
FooOS" rather than  feature tests, but perhaps geos is free of that.)


signature.asc
Description: PGP signature
___
geos-devel mailing list
geos-devel@lists.osgeo.org
https://lists.osgeo.org/mailman/listinfo/geos-devel


Re: [geos-devel] The Road to 3.10

2021-09-29 Thread Greg Troxel

"Regina Obe"  writes:

> BTW according to Myon, they are planning to release PostgreSQL 14 this
> Thursday (tomorrow) so I think our PostGIS 3.2.0 is going to be a little
> later than PostgreSQL 14 release but hopefully we can coax packagers to
> release it.
>
> That said PostGIS release isn't really that impacted by GEOS 3.10 release.
> Few packagers are going to be jumping to carry  GEOS 3.10 as I think we
> already missed the big OS release cycles.
>
> Packagers please speak up if I have misspoken.

I think there are more packaging systems than anybody really knows about
with all sorts of release cycles.  My reactions to the larger picture
is:

  a beta1 means that it's thought to be pretty close, and definitely
  feature freeze, and that it needs more shaking out and testing than an
  rc.  The idea of adding in features that aren't already working in
  main/trunk/master/whatever post beta seems off.  If we are talking
  release within 15 or maybe even 30 days adding features seems too
  much regardless of what it's called.


  As a packager I don't care if 3.11 comes only a month or two after
  3.10.  I would like to know that 3.10.x is just bugfixes and no
  API/ABI breaks and therefore safe to update within a stable packaging
  branch.

  What really hurts in packaging is needing to synchronize things.  The
  upcoming postgis release needs to work with a bunch of pgsql versions,
  not necessarily IMHO the released-tomorrow one, and it should work
  with all geos versions releaseed a year ago or more recently.

  With 3.10, I'd want to read NEWS to see if there any impacts onn
  existing code.  With any luck, nothing is withdrawn that any even
  semi-maintained depending package uses, and all will build and work.
  


signature.asc
Description: PGP signature
___
geos-devel mailing list
geos-devel@lists.osgeo.org
https://lists.osgeo.org/mailman/listinfo/geos-devel


Re: [geos-devel] The Road to 3.10

2021-09-10 Thread Greg Troxel

Paul Ramsey  writes:

> One thing worthy of discussion is pushing forward the cmake
> dependency. If we pop forward to 3.12 we can fix this issue cleanly by
> using OBJECT instead of STATIC linking for our vendored deps.
>
> https://github.com/libgeos/geos/issues/463
>
> 3.12.0 was released in 2018. I personally at this point just use the
> latest cmake build, which is so easy to do (download package, unzip in
> /usr/local).

I am a trailing edge type.  3.12 from 2018 sounds ancient even to me and
it's hard to believe any system with 3.11 can cope with much of anything
these days.

So changing the cmake rule to 3.12 seems entirely reasonable.


signature.asc
Description: PGP signature
___
geos-devel mailing list
geos-devel@lists.osgeo.org
https://lists.osgeo.org/mailman/listinfo/geos-devel


Re: [geos-devel] Backporting geosop?

2021-02-23 Thread Greg Troxel

Martin Davis  writes:

> Autotools is still supported for versions <= 3.9.x.
>
> Not being an autotools expert, I was concerned about breaking something.
> And since this is an optional tool, it wasn't clear that it would be needed
> in packages.  However, I can see that might be desirable.  So maybe
> autotools build is needed.

From the packaging point of view, I'd say that either it shouldn't exist
or it should be packagable.  Essentially all people use things via
packaging systems, despite almost all people who develop a particular
thing not using packaging for it.

For <=3.9, I feel like if it is built with cmake it needs to be built
--- and distributed with make dist -- with autotools.  OTOH if nobody
needs it, then it can just not come to the branch, and people who want
to play with it can build from devel sources.

I would expect that it isn't hard to add it, but I haven't dug in.  It
looks like a bunch of cpp files to build and link together, and that's
pretty normal and compact in a declarative Makefile.am.



signature.asc
Description: PGP signature
___
geos-devel mailing list
geos-devel@lists.osgeo.org
https://lists.osgeo.org/mailman/listinfo/geos-devel


Re: [geos-devel] Backporting geosop?

2021-02-23 Thread Greg Troxel

Martin Davis  writes:

> I'm thinking about committing back-ported versions of geosop to 3.9, 3.8
> and 3.7.
>
> Any objections?  And any further objections if I don't bother with the
> autotools build setup?

The pkgsrc packge for geos is at at 3.9.1, which I think is current, and
is using configure.

I really don't follow your question.  Has there been a formal withdrawal
of the autotools build?  If so, then it follows that it is not supported
and presumably would be removed.  If not, it seems out of the question
to commit something that doesn't work right with it.   And, it would
seem very surprising to withdraw a build system on a stable branch.

Looking, 3.9.1's INSTALL says autotools works.   So committing something
to the 3.9 branch that breaks that seems not ok.

I feel like I must be missing something.


signature.asc
Description: PGP signature
___
geos-devel mailing list
geos-devel@lists.osgeo.org
https://lists.osgeo.org/mailman/listinfo/geos-devel


Re: [geos-devel] GEOS 3.9.0 Released

2021-01-29 Thread Greg Troxel

Daniel Baston  writes:

>>
>> Some headers I see were installed as a facility for C++ library users.
>> Nowadays we discourage those users so I don't see any big problem with
>> them being removed (like opBuffer.h and io.h)
>>
>
> I think this comment is about https://trac.osgeo.org/geos/ticket/999. That
> probably should have been in the NEWS if it was not.
>
> Because listserv chatter sometimes becomes a source of documentation for
> users, I think it's important to point out that the GEOS project ("we") has
> no policy of discouraging use by C++ library users.

That seems to be a policy change that I missed.  We had this discussion
quite a while ago and the README said the C++ interface shouldn't be
used after that discussion.  I then updated the comment in the geos
pkgsrc package to note that it was a bug for other packages to use the
C++ interface, and thus there was no need to consider the geos package
to have had an ABI change because of actual ABI changes or the usual C++
"C++ is so complicated we have no way to know if the ABI changed, so
change the shlib version, and then we know it did!" always-on ABI change.

Now the README just says that the C++ interface is unstable, to the
point where changes in it are not worthy of being mentioned in NEWS, let
along having some API compat and transition strategy.  That is just
about equivalent to a recommendation not to use it.

I should point out that I don't really have an agenda about whether the
C++ interface should be recommended for use.  But as I see it, there
are only two reasonable options:

  1) recommend that the C++ interface not be used

  2) say that use is ok, and have an API stability plan where code
  written to each release's API is expected to continue working for some
  significant period of time (perhaps 2 years) in future releases after
  an API element is deprecated (Note that to me ABI stability is not
  that big a deal.)

  Perhaps, say it's ok to use the C++ API as long as you don't release
  your code :-)

In all seriousness, packaging systems are put into a bind when a program
B depends on interface A, A turns out to be unstable and B doesn't get
instantly updated.  Any plan for what's usable and API stability has to
take that into account, for packages that actually are used by other
packages.  This is basically a summary of the view that prevailed in the
last discussion, as I remember it, which is fuzzily.




signature.asc
Description: PGP signature
___
geos-devel mailing list
geos-devel@lists.osgeo.org
https://lists.osgeo.org/mailman/listinfo/geos-devel


Re: [geos-devel] RFC7: Discontinue use of autotools

2021-01-10 Thread Greg Troxel

Sebastiaan Couwenberg  writes:

> On 1/10/21 2:44 AM, Daniel Baston wrote:
>>>
>>> Make the CMake build adhere to CMAKE_INSTALL_LIBDIR so that multiarch
>>> keeps working,
>> 
>> 
>> I created a pull request for this at
>> https://github.com/libgeos/geos/pull/380
>> 
>> Have CMAKE_BUILD_TYPE=None define NDEBUG so that assert() is removed
>>> from the code, thereby not storing the buildpath in the binaries helping
>>> reproducible builds.
>>>
>> 
>> If you don't specify CMAKE_BUILD_TYPE it defaults to Release, and NDEBUG
>> will be defined.
>
> But then -g is not used and there will be no debug symbols.
> RelWithDebInfo is more what we need.
>
>> Do you mean that we should define a new build type called
>> "None" ?
>
> It is used to have the buildflags set in the environment determine
> optimization etc.
>
> CMake apparently uses the absolute path for __FILE__ whereas Autotools
> uses the path relative to the Makefile. Hence we get
> file-references-package-build-path issues after switching a package to
> use the cmake buildsystem.

So it seems that 'drop autotools' is not ready for prime time, until
packaging systems can switch and report no residual issues/regressions.

FWIW, pkgsrc is also using autotools to build.   I can try to switch it
to cmake and see how that goes.   I'll be doing that on the most recent
release, of course, for starters.


signature.asc
Description: PGP signature
___
geos-devel mailing list
geos-devel@lists.osgeo.org
https://lists.osgeo.org/mailman/listinfo/geos-devel


Re: [geos-devel] RFC7: Discontinue use of autotools

2021-01-08 Thread Greg Troxel

Paul Ramsey  writes:

>> On Jan 8, 2021, at 9:25 AM, Daniel Baston  wrote:
>> 
>> I think the question we need to resolve is whether, after 11 years
>> of working with and 5 years of officially supporting two build
>> systems, we need to continue to spend developer effort maintaining
>> both systems in order to accommodate those preferences.
>
> I agree. I can think of only one further technical task, which is
> ensuring that the outputs of the cmake 'make dist' target are run
> through to 'make check' in CI. Being able to bundle a release via
> 'make dist' is a very handy thing and makes 'tag to release
> automatically' a potential CI target which would also be nice.

One thing autotools does that many cmake setups don't (but could) is
'make distcheck' which does

  make dist

  unpacks it

  does an objdir build

  runs make check in that

  does so in a way that the just-built libs are used and installed libs
  are ignored

If that already works in cmake, fine, and if not I think that needs
fixing before getting rid of autotools.

The other thing is cross builds, and I have no idea what the state of
that is in the geos cmake build.  Often I have found that build systems
proposed as a replacement for autotools don't do that.
   


signature.asc
Description: PGP signature
___
geos-devel mailing list
geos-devel@lists.osgeo.org
https://lists.osgeo.org/mailman/listinfo/geos-devel


Re: [geos-devel] GEOS 3.9.0 Released

2020-12-14 Thread Greg Troxel

I should add that 3.9.0 when built on NetBSD 9 amd64 with gcc 7.4.0
builds fine and passes make check.


signature.asc
Description: PGP signature
___
geos-devel mailing list
geos-devel@lists.osgeo.org
https://lists.osgeo.org/mailman/listinfo/geos-devel


Re: [geos-devel] GEOS 3.9.0 Released

2020-12-14 Thread Greg Troxel

(I am late in trying this, for no good reason.)

I am doing a trial update of pkgsrc/geography/geos to 3.9.0 from 3.8.1.
I am seeing a lot of header file withdrawals, and it is not clear to me
that they are explained by "new overlay engine" (but also not clear that
they are not explained by this).  Hence I am posting my diff of
installed files and would appreciate someone taking a quick scan and
pronouncing "those changes are expected" vs "we have a problem".

Given the new engine, I am guessing I should not update pkgsrc today
since we are going into freeze within days for 12/31 quarterly stable
release.  Instead, I'd hold off until just after freeze.  Please also
let me know if you think that's confused.

Thanks,
Greg


diff -u -p -r1.16 PLIST
--- PLIST   11 Mar 2020 12:52:06 -  1.16
+++ PLIST   14 Dec 2020 19:35:01 -
@@ -26,6 +26,8 @@ include/geos/algorithm/PointLocator.h
 include/geos/algorithm/RayCrossingCounter.h
 include/geos/algorithm/RayCrossingCounterDD.h
 include/geos/algorithm/RobustDeterminant.h
+include/geos/algorithm/construct/LargestEmptyCircle.h
+include/geos/algorithm/construct/MaximumInscribedCircle.h
 include/geos/algorithm/distance/DiscreteFrechetDistance.h
 include/geos/algorithm/distance/DiscreteHausdorffDistance.h
 include/geos/algorithm/distance/DistanceToPoint.h
@@ -33,24 +35,13 @@ include/geos/algorithm/distance/PointPai
 include/geos/algorithm/locate/IndexedPointInAreaLocator.h
 include/geos/algorithm/locate/PointOnGeometryLocator.h
 include/geos/algorithm/locate/SimplePointInAreaLocator.h
-include/geos/algorithm/ttmath/ttmath.h
-include/geos/algorithm/ttmath/ttmathbig.h
-include/geos/algorithm/ttmath/ttmathdec.h
-include/geos/algorithm/ttmath/ttmathint.h
-include/geos/algorithm/ttmath/ttmathmisc.h
-include/geos/algorithm/ttmath/ttmathobjects.h
-include/geos/algorithm/ttmath/ttmathparser.h
-include/geos/algorithm/ttmath/ttmaththreads.h
-include/geos/algorithm/ttmath/ttmathtypes.h
-include/geos/algorithm/ttmath/ttmathuint.h
-include/geos/algorithm/ttmath/ttmathuint_noasm.h
-include/geos/algorithm/ttmath/ttmathuint_x86.h
-include/geos/algorithm/ttmath/ttmathuint_x86_64.h
-include/geos/algorithm/ttmath/ttmathuint_x86_64_msvc.asm
 include/geos/constants.h
+include/geos/edgegraph/EdgeGraph.h
+include/geos/edgegraph/EdgeGraphBuilder.h
+include/geos/edgegraph/HalfEdge.h
+include/geos/edgegraph/MarkHalfEdge.h
 include/geos/export.h
 include/geos/geom.h
-include/geos/geom/BinaryOp.h
 include/geos/geom/Coordinate.h
 include/geos/geom/Coordinate.inl
 include/geos/geom/CoordinateArraySequence.h
@@ -73,6 +64,7 @@ include/geos/geom/GeometryComponentFilte
 include/geos/geom/GeometryFactory.h
 include/geos/geom/GeometryFactory.inl
 include/geos/geom/GeometryFilter.h
+include/geos/geom/HeuristicOverlay.h
 include/geos/geom/IntersectionMatrix.h
 include/geos/geom/LineSegment.h
 include/geos/geom/LineSegment.inl
@@ -86,20 +78,26 @@ include/geos/geom/MultiPolygon.h
 include/geos/geom/MultiPolygon.inl
 include/geos/geom/Point.h
 include/geos/geom/Polygon.h
+include/geos/geom/Position.h
 include/geos/geom/PrecisionModel.h
 include/geos/geom/PrecisionModel.inl
+include/geos/geom/Quadrant.h
+include/geos/geom/Quadrant.inl
 include/geos/geom/Triangle.h
 include/geos/geom/prep/AbstractPreparedPolygonContains.h
 include/geos/geom/prep/BasicPreparedGeometry.h
 include/geos/geom/prep/PreparedGeometry.h
 include/geos/geom/prep/PreparedGeometryFactory.h
 include/geos/geom/prep/PreparedLineString.h
+include/geos/geom/prep/PreparedLineStringDistance.h
 include/geos/geom/prep/PreparedLineStringIntersects.h
+include/geos/geom/prep/PreparedLineStringNearestPoints.h
 include/geos/geom/prep/PreparedPoint.h
 include/geos/geom/prep/PreparedPolygon.h
 include/geos/geom/prep/PreparedPolygonContains.h
 include/geos/geom/prep/PreparedPolygonContainsProperly.h
 include/geos/geom/prep/PreparedPolygonCovers.h
+include/geos/geom/prep/PreparedPolygonDistance.h
 include/geos/geom/prep/PreparedPolygonIntersects.h
 include/geos/geom/prep/PreparedPolygonPredicate.h
 include/geos/geom/util/ComponentCoordinateExtracter.h
@@ -115,8 +113,6 @@ include/geos/geom/util/PointExtracter.h
 include/geos/geom/util/PolygonExtracter.h
 include/geos/geom/util/ShortCircuitedGeometryVisitor.h
 include/geos/geom/util/SineStarFactory.h
-include/geos/geomUtil.h
-include/geos/geomgraph.h
 include/geos/geomgraph/Depth.h
 include/geos/geomgraph/Depth.inl
 include/geos/geomgraph/DirectedEdge.h
@@ -139,9 +135,6 @@ include/geos/geomgraph/Node.h
 include/geos/geomgraph/NodeFactory.h
 include/geos/geomgraph/NodeMap.h
 include/geos/geomgraph/PlanarGraph.h
-include/geos/geomgraph/Position.h
-include/geos/geomgraph/Quadrant.h
-include/geos/geomgraph/Quadrant.inl
 include/geos/geomgraph/TopologyLocation.h
 include/geos/geomgraph/TopologyLocation.inl
 include/geos/geomgraph/index/EdgeSetIntersector.h
@@ -156,8 +149,6 @@ include/geos/geomgraph/index/SimpleSweep
 include/geos/geomgraph/index/SweepLineEvent.h
 

Re: [geos-devel] Motion: stop brain damage and move finally to github as primary repository

2020-10-02 Thread Greg Troxel

Sandro Santilli  writes:

> On Thu, Oct 01, 2020 at 11:03:29PM +0200, Even Rouault wrote:
>> Hi,
>> 
>> Github is a proprietary trap, but not being on it as the 
>> primary repository is just a waste of time and a lost battle.
>
> The battle is only lost if you don't fight it.
>
> --strk;

Obviously I'm not on PSC, but I agreed with strk.  I have always found
the willingness of open source projects to use github distressing.


signature.asc
Description: PGP signature
___
geos-devel mailing list
geos-devel@lists.osgeo.org
https://lists.osgeo.org/mailman/listinfo/geos-devel

Re: [geos-devel] --ldflags oddness in geos-config

2020-03-11 Thread Greg Troxel
Greg Troxel  writes:

> Plus, it seems all the --libs stanzas have -L${exec_prefix}/lib in them,
> even though those are lddfags, not libs.

Theory:
geos considers "libs" to be
  -L$prefix/lib -lgeos_c
and "ldflags"  to be extra stuff

So in addition to my patch, probably the -L in ldflags should be
dropped.
___
geos-devel mailing list
geos-devel@lists.osgeo.org
https://lists.osgeo.org/mailman/listinfo/geos-devel

[geos-devel] --ldflags oddness in geos-config

2020-03-11 Thread Greg Troxel
pkgsrc is carrying this patch.  When expanded  in our build, this turns
into

--ldflags)
  echo -L${exec_prefix}/lib -Wl,-R/usr/pkg/lib
  ;;

It seems clear that the rpath type instructions need to be continued on;
without it the build of the program that depends on geos will be wrong.
(I'm not clear on why the -L argument doesn't get duplicated.)

Plus, it seems all the --libs stanzas have -L${exec_prefix}/lib in them,
even though those are lddfags, not libs.

Does this work for anyone, intalling into a prefix not in the default
link path, and using geos-config to build something against geos to a
third prefix so that there isn't a rpath command for the geos libdir?

Thoughts?


--- tools/geos-config.in.orig   2019-10-03 17:32:04.0 +
+++ tools/geos-config.in
@@ -58,7 +58,7 @@ case $1 in
   echo -L@libdir@ -lgeos -lm
   ;;
 --ldflags)
-  echo -L@libdir@
+  echo -L@libdir@ @LDFLAGS@
   ;;
 --includes)
   echo @prefix@/include
___
geos-devel mailing list
geos-devel@lists.osgeo.org
https://lists.osgeo.org/mailman/listinfo/geos-devel

Re: [geos-devel] [GEOS] #1015: Update geos-config tool for consistency

2020-02-19 Thread Greg Troxel
Sandro Santilli  writes:

> Few-years-ago dependency could be fine, given GEOS requires C++10 now,
> or we could just use quotes and allow for spaces in path names (while
> still forbidding quotes and dollars etc. ?)

(I realize this is moot with the simple space escaping you just added.  Yay!)


If you mean GNU Coreutils printf as "few-years-ago dependency", I don't
follow.  That is typical on GNU/Linux, but on BSD there is a different
/usr/bin/printf which lacks %q but I believe conforms to POSIX.

(As an aside, I think it's often not a good thing for programs that are
required by POSIX to add extensions; that leads to people writing
nonportable code.  The poster child of this is bash and test ==.)

___
geos-devel mailing list
geos-devel@lists.osgeo.org
https://lists.osgeo.org/mailman/listinfo/geos-devel

Re: [geos-devel] [GEOS] #1015: Update geos-config tool for consistency

2020-02-19 Thread Greg Troxel
Sandro Santilli  writes:

> Escaping can also be done in POSIX shell, not a big deal.
> Let's just understand what we really need. For instance,
> how do we want the output of `geos-config --libs` look like,
> when there's a space in the path ?
>
>   0. -L/usr/local silly/lib -lgeos-3.9.0
>   1. -L/usr/local\ silly/lib -lgeos-3.9.0
>   2. -L"/usr/local silly/lib" -lgeos-3.9.0
>   3. -L'/usr/local silly/lib' -lgeos-3.9.0
>
> We got 0 before the change...
>
> With c263a0f7 I went with option 1, and restored proper output in
> presence of an exec_prefix.

I think 1 is reasonable.   I am inclined to say: let's call it a day and
wait for an actual bug report from an actual user (not a contrived test
case) to address any further nonstandard characters in prefixes.   This
really feels like a non-problem to me, at least once spaces are handled.
___
geos-devel mailing list
geos-devel@lists.osgeo.org
https://lists.osgeo.org/mailman/listinfo/geos-devel

Re: [geos-devel] [GEOS] #1015: Update geos-config tool for consistency

2020-02-18 Thread Greg Troxel
Mike Taves  writes:

> On Wed, 19 Feb 2020 at 03:11, Greg Troxel  wrote:
>> In searching for the POSIX printf spec, I found this post about escaping
>> spaces in a portable manner.
>>
>>   
>> https://stackoverflow.com/questions/12162010/posix-sh-equivalent-for-bash-s-printf-q
>>
>> The specs at opengroup.org seem hard to deal with today - not sure if
>> they changed - but I found this POSIX printf description:
>>
>>   https://www.unix.com/man-page/POSIX/1posix/printf/
>
> Thanks for the resources!

Thank you for listening (seriously).  We are, amusingly enough, moving
to a point where there is an assumption of all linux, much like the old
days when it was assumed all was windows.

>> > Currently, other Bash scripts are present in tools/ci/ but these are
>> > not installed with GEOS.
>>
>> ci tools are quite a different story than a requirement for regular
>> installs, although I see using bash there (vs /bin/sh) as a bug also.
>
> I'll consider going over these to see if they can be POSIX /bin/sh

Thanks - I don't think that's nearly as big a deal, but in my experience
dealing with packaging I have found that many uses of bash were not
actually necessary or very easy to avoid.  One common issue is using ==
in test, when POSIX specifies (and Bourne shells always were) just =.

>> None of the BSDs have bash by default.  When it is present, via ports,
>> pkgsrc, etc., it's not in /bin.  On NetBSD, it's in /usr/pkg/bin/bash.
>> People use it for their login shell.  I do too - I'm not a bash hater,
>> but object to it for programming use.  It's enormous, and is one
>> particular implementation among many.  I view it as personal choice to
>> use it for interactive use, and not appropriate for scripting.
>>
>> The fact that /bin/bash does not exist on *BSD, and probably other
>> places, prompted my question about looking for it and substituting the
>> path.  Expecting bash to be in /bin/bash is just not a valid assumption.
>>
>> So, given that there seems to be a way to do this without introducing a
>> dependenchy on bash, I'd like to see this backed out.
>
> Aha, so there are some that will be alienated, which I agree is a bad
> situation, so I'll submit a PR to restore back to #!/bin/sh

Great, thanks.

> I'll remove printf %q altogether and simply insert an escaped path to
> the script. I'll probably only do this with CMake, since that's the
> only install solution that supports spaces.

I didn't realize autoconf flat-out objected to spaces, but it is not
surprising since in the old-school command line tradition spaces is
files are somewhere between bizarre and unthinkable.

Sounds good to just escape spaces for cmake.
___
geos-devel mailing list
geos-devel@lists.osgeo.org
https://lists.osgeo.org/mailman/listinfo/geos-devel

Re: [geos-devel] [GEOS] #1015: Update geos-config tool for consistency

2020-02-18 Thread Greg Troxel
"Regina Obe"  writes:

> Speaking of reverting the last change that started this whole
> discussion -- does anyone have thoughts on alternative to printf for
> sh?  I would like to keep the intent if possible without causing
> backward compatibility issues.
>
> I assume these are the sections that would need reverting.
>
> https://git.osgeo.org/gitea/geos/geos/pulls/99.diff  - in the 
> tools/geos-config.cmake #!/bin/sh
>
> index 24a5725..abef1e3 100644
> --- a/tools/geos-config.cmake
> +++ b/tools/geos-config.cmake
> @@ -1,12 +1,12 @@
> -#!/bin/sh
> +#!/bin/bash -e
>  
> -prefix=@CMAKE_INSTALL_PREFIX@
> -exec_prefix=@CMAKE_INSTALL_PREFIX@/bin
> -libdir=@CMAKE_INSTALL_PREFIX@/lib
> +# escape path
> +prefix=$(printf %q "@CMAKE_INSTALL_PREFIX@")
> +libdir=${prefix}/lib
>
> and tools/geos-config.in
>
> --- a/tools/geos-config.in
> +++ b/tools/geos-config.in
> @@ -1,11 +1,12 @@
> -#!/bin/sh
> -prefix=@prefix@
> -exec_prefix=@exec_prefix@
> -libdir=@libdir@
> +#!/bin/bash -e
> +
> +# escape paths
> +prefix=$(printf %q "@prefix@")
> +libdir=$(printf %q "@libdir@")

So assigning

prefix=@prefix@

works perfectly fine.  The problem is when that is printed later.

If it's just space we are worried about, one could basically printf into
sed to change space to "\ ", and I think that's what the stack overflow
suggestion is doing.

The basic problem is that the build ecosystems assume that one can use
space to tokenize arguments.  That is indeed the ancient Unix tradition,
and fighting that leads to lots of pain with quoting.

There's another problem here, which is that inserting \ for quoting is
presuming that the output of geos-config is going to be interpreted by a
shell, rather than taken as is and used to build a command line.  I
suppose there is that implication because there are multiiple arguments
separated by a space.  One could argue that the interface is space
separated arguments, not shell language.  So overall I see allowing
spaces in prefix as heading off into not-well-defined behavior.


___
geos-devel mailing list
geos-devel@lists.osgeo.org
https://lists.osgeo.org/mailman/listinfo/geos-devel

Re: [geos-devel] [GEOS] #1015: Update geos-config tool for consistency

2020-02-18 Thread Greg Troxel
This seems to explain how to accomodate spaces in pathnames and escaping
them, sticking to POSIX

  
https://stackoverflow.com/questions/12162010/posix-sh-equivalent-for-bash-s-printf-q

cmake is very much set up to use pkg-config; it has become the normal
way by which build systems query how to link to dependency packages.  I
don't think it has anything to do with Visual Studio in a cmake build.
I don't know anything about cmake on windows, but it doesn't make sense
that this would be trouble since it is so pervasive.  But I could be off.

  That said even if we did go down the path of pkgsrc I think we need to
  support geos-config for a couple of minor versions to give libraries
  that depend on GEOS time to change.  For example PostGIS expects a
  geos-config file.  So we'd have to change all supported versions to
  allow .pc for geos.

(pkg-config not pkgsrc, assuming word-o).  Yes, would need some compat
and switchover.  Many programs have moved from foo-config to a .pc over
the years.  On my system I have only 65 foo-config programs, compared to
to 557 pkgconfig files (both in /usr/pkg, so that is an apples to apples
comparison).

I am pretty sure there is an idiom which looks like

  try to find geos via pc
  if not, try geos-config

at least in autoconf that was a fairly normal thing to do for a while.

I will observe that a strategy of:

   add pkgconfig more or less now

   decline to worry about spaces in prefix in geos-config (tell people
   that want to put spaces in pathnames that to use pkgconfig ;-)

seems reasonable to me.   But I have no objection to accomodating spaces
if it doesn't add a bash or other dependency.
___
geos-devel mailing list
geos-devel@lists.osgeo.org
https://lists.osgeo.org/mailman/listinfo/geos-devel

Re: [geos-devel] [GEOS] #1015: Update geos-config tool for consistency

2020-02-18 Thread Greg Troxel
Paul Ramsey  writes:

> Pkg config is wonderous but still far from universal 

Interesting.  As a packager, I see a vast number of things using it, and
thus a system where it isn't available as a build dependency would seem
very difficult to deal with in general.  I would not have suggested it
if I thought anyplace would have trouble with that (except that I don't
pay attention to Windows at all).

On my desktop there are 557 .pc files installed from pkgsrc, 9 from the
base system, and 127 from pkgsrc.  Geo-examples include proj, gdal and
spatialite.


___
geos-devel mailing list
geos-devel@lists.osgeo.org
https://lists.osgeo.org/mailman/listinfo/geos-devel

Re: [geos-devel] [GEOS] #1015: Update geos-config tool for consistency

2020-02-18 Thread Greg Troxel
Paul Ramsey  writes:

> Yeah, and with Apple changing the default shell in OSX, this only gets worse 
> not better over time… 
> Could follow the pgsql project and just rewrite the thing (the config 
> program) in C and be done with it…

Or, perhaps generate a pkgconfig file and just get rid of geos-config?
There is some one-time pain, but it seems that hand-written foo-config
is no longer the preferred approach.
___
geos-devel mailing list
geos-devel@lists.osgeo.org
https://lists.osgeo.org/mailman/listinfo/geos-devel

[geos-devel] dependency management and PSC

2020-02-18 Thread Greg Troxel
I was surprised to see a hard dependency on bash land without any prior
discussion on the list.  I would like to see PSC adopt a notion that any
increases in deependencies, especially depending on anything that is not
specified by POSIX, require on-list discussion and a PSC vote.

___
geos-devel mailing list
geos-devel@lists.osgeo.org
https://lists.osgeo.org/mailman/listinfo/geos-devel

Re: [geos-devel] [GEOS] #1015: Update geos-config tool for consistency

2020-02-18 Thread Greg Troxel
Mike Taves  writes:

> On Tue, 18 Feb 2020 at 13:20, Greg Troxel  wrote:
>> "GEOS"  writes:
>> >  **Specify bash, and use printf to escape paths (if needed)**
>> >
>> >  This allows installation with CMake to other directories, such as `/opt/my
>> >  prefix`, since `geos-config --prefix` would return `/opt/my\ prefix`. Also
>> >  `printf` is a bash-only feature.
>>
>> It really seems like a regresssion to require bash, rather than POSIX
>> shell, and it's definitely a regression if the build doesn't find bash
>> and substitute in the path.
>>
>> Is this really necessary?
>
> As noted above, the printf function is built-in with Bash, and can
> properly escape a path. While I see there is also /usr/bin/printf I'm
> not sure how common or standard this tool is (my tests with /bin/sh
> didn't go well, so I opted to switch to Bash for reliability).

First, to me requiring bash is worse than telling people not to do
ridiculous things like putting spaces in pathnames :-)  But I realize
other people think spaces in pathnames is an ok thing.

The right question about tools is not what's typically on Linux but what
POSIX requires.

In searching for the POSIX printf spec, I found this post about escaping
spaces in a portable manner.

  
https://stackoverflow.com/questions/12162010/posix-sh-equivalent-for-bash-s-printf-q

The specs at opengroup.org seem hard to deal with today - not sure if
they changed - but I found this POSIX printf description:

  https://www.unix.com/man-page/POSIX/1posix/printf/

> Currently, other Bash scripts are present in tools/ci/ but these are
> not installed with GEOS.

ci tools are quite a different story than a requirement for regular
installs, although I see using bash there (vs /bin/sh) as a bug also.

> Besides Native Windows, what OSes (that GEOS is used on) does not have
> Bash available? As far as I know, it's available on most Linux
> distributions, all recent Solaris and macOS, and even some Windows. I
> can't think of any other shell that is more common.

The shell that is more common is the one required by POSIX: /bin/sh,
having the behavior specified by POSIX.   Bash either conforms to POSIX
or is close enough, so code written for POSIX will work fine with bash.  

None of the BSDs have bash by default.  When it is present, via ports,
pkgsrc, etc., it's not in /bin.  On NetBSD, it's in /usr/pkg/bin/bash.
People use it for their login shell.  I do too - I'm not a bash hater,
but object to it for programming use.  It's enormous, and is one
particular implementation among many.  I view it as personal choice to
use it for interactive use, and not appropriate for scripting.

The fact that /bin/bash does not exist on *BSD, and probably other
places, prompted my question about looking for it and substituting the
path.  Expecting bash to be in /bin/bash is just not a valid assumption.


So, given that there seems to be a way to do this without introducing a
dependenchy on bash, I'd like to see this backed out.
___
geos-devel mailing list
geos-devel@lists.osgeo.org
https://lists.osgeo.org/mailman/listinfo/geos-devel

Re: [geos-devel] [GEOS] #1015: Update geos-config tool for consistency

2020-02-17 Thread Greg Troxel
"GEOS"  writes:

> #1015: Update geos-config tool for consistency
> ---+--
>  Reporter:  robe   |  Owner:  geos-devel@…
>  Type:  defect | Status:  new
>  Priority:  minor  |  Milestone:  3.9.0
> Component:  Build/Install (cmake)  |Version:  master
>  Severity:  Unassigned |   Keywords:
> ---+--
>  Details repeated from https://git.osgeo.org/gitea/geos/geos/pulls/99
>
>
>  
>  **Specify bash, and use printf to escape paths (if needed)**
>
>  This allows installation with CMake to other directories, such as `/opt/my
>  prefix`, since `geos-config --prefix` would return `/opt/my\ prefix`. Also
>  `printf` is a bash-only feature.

It really seems like a regresssion to require bash, rather than POSIX
shell, and it's definitely a regression if the build doesn't find bash
and substitute in the path.

Is this really necessary?
___
geos-devel mailing list
geos-devel@lists.osgeo.org
https://lists.osgeo.org/mailman/listinfo/geos-devel

Re: [geos-devel] GEOS 3.8.0 RC3

2019-10-09 Thread Greg Troxel
rc3 seems to be in good order from the pkgsrc viewpoint.

* a digression about 3.7.3

I updated pkgsrc belatedly from 3.7.1 to 3.7.3 and tests passed on
netbsd-8/amd64.

There is a C++ ABI break from 3.7.1 to 3.7.3, which was unexpected.  Due
to libtool adding in dependency libs from the .la file, gdal links to
geos-3.7.3.so, even though it ought to just link to geos_c.  This is
arguably a libtool bug (and perhaps only on pkgsrc, but I think bigger),
so this ABI break is notabable, even if there are really zero direct
users, and even if the 3.7.3 library has the same ABI as the 3.7.1
library.  While I expect ABI breaks across major versions, I don't
expect them on micro releases and this surprised me.

* report on 3.8.0rc3

With 3.8.0rc3, on netbsd-8/amd64, it built and passed geos's own test suite.

a few very minor things, probably not worth the risk of changing other
than perhaps adjusting NEWS:

  There are header files removed from the set of installed files.  I
  don't see these presumed API withdrawals in NEWS.  (I am not saying
  this is wrong, just that I don't understand.)

  NEWS doesn't mention if there is an ABI break of the C++ API.  In
  pkgsrc, there are no known users of this now.  But, libtool adds
  dependency_libs to the link lines of depending packages, so even
  things that don't use the C++ API end up linked against the lib
  (arguably a bug, unknown extent of where this happens), and have to be
  recompiled, so an API break is noteworthy.

  I have a stray patch to geos-config.in, to add in @LDFLAGS@ to the
  --ldflags command.  I am really unclear if anyone ever sent it
  upstream from pkgsrc.  Also, there are --libs arguments that also
  include -Llibdir, which seems wrong.  Best to talk about this post
  release I think -- not new or urgent.

  I have a stray patch to capi/geos_ts_c.cpp, which uses const char *
  instead of str in NOTICE_MESSAGE and ERROR_MESSAGE.  I am unclear on
  the origin of this patch, but it claims that non-POD types in variadic
  functions are UB.   Also seems best to defer to post release -- also
  not new or urgent.

Removed header files:
  include/geos/algorithm/CGAlgorithms.h
  include/geos/algorithm/CentroidArea.h
  include/geos/algorithm/CentroidLine.h
  include/geos/algorithm/CentroidPoint.h
  include/geos/algorithm/MCPointInRing.h
  include/geos/algorithm/PointInRing.h
  include/geos/algorithm/SIRtreePointInRing.h
  include/geos/algorithm/SimplePointInRing.h
  include/geos/geom/Lineal.h
  include/geos/geom/Polygonal.h
  include/geos/geom/Puntal.h
  include/geos/noding/SingleInteriorIntersectionFinder.h
  include/geos/platform.h
  include/geos/timeval.h


$NetBSD: patch-ae,v 1.6 2018/09/11 16:13:29 gdt Exp $

TODO: explain what's in LDFLAGS.
TODO: explain why --libs has -L in the first place (vs --ldflags).
TODO: report upstream.

--- tools/geos-config.in.orig   2018-08-19 10:49:14.0 +
+++ tools/geos-config.in
@@ -58,7 +58,7 @@ case $1 in
   echo -L${libdir} -lgeos -lm
   ;;
 --ldflags)
-  echo -L${libdir}
+  echo -L${libdir} @LDFLAGS@
   ;;
 --includes)
   echo ${prefix}/include

$NetBSD: patch-capi_geos__ts__c.cpp,v 1.2 2018/09/11 16:13:29 gdt Exp $

\todo Document this patch.   It appears to be that passing non-POD types
to variadic functions is UB.

\todo File a bug upstream, if appropriate.

--- capi/geos_ts_c.cpp.orig 2015-09-08 16:31:02.0 +
+++ capi/geos_ts_c.cpp
@@ -214,7 +214,7 @@ typedef struct GEOSContextHandle_HS
 }
 
 void
-NOTICE_MESSAGE(string fmt, ...)
+NOTICE_MESSAGE(const char *fmt, ...)
 {
   if (NULL == noticeMessageOld && NULL == noticeMessageNew) {
 return;
@@ -222,7 +222,7 @@ typedef struct GEOSContextHandle_HS
 
   va_list args;
   va_start(args, fmt);
-  int result = vsnprintf(msgBuffer, sizeof(msgBuffer) - 1, fmt.c_str(), 
args);
+  int result = vsnprintf(msgBuffer, sizeof(msgBuffer) - 1, fmt, args);
   va_end(args);
 
   if (result > 0) {
@@ -235,7 +235,7 @@ typedef struct GEOSContextHandle_HS
 }
 
 void
-ERROR_MESSAGE(string fmt, ...)
+ERROR_MESSAGE(const char *fmt, ...)
 {
   if (NULL == errorMessageOld && NULL == errorMessageNew) {
 return;
@@ -243,7 +243,7 @@ typedef struct GEOSContextHandle_HS
 
   va_list args;
   va_start(args, fmt);
-  int result = vsnprintf(msgBuffer, sizeof(msgBuffer) - 1, fmt.c_str(), 
args);
+  int result = vsnprintf(msgBuffer, sizeof(msgBuffer) - 1, fmt, args);
   va_end(args);
 
   if (result > 0) {

___
geos-devel mailing list
geos-devel@lists.osgeo.org
https://lists.osgeo.org/mailman/listinfo/geos-devel

Re: [geos-devel] spatialite on iOS/Android

2019-09-20 Thread Greg Troxel
Hans-Georg Haberl  writes:

> I'm a developer working on UWP, Android and iOS apps using the Xamarin
> framework and Entity Framework Core.
> I'm working on building spatialite for Android, which depends on the geos
> library.
> As far as I can tell LGPL is problematic for the Android and Apples App
> Store so I was wondering if there is a way to license it in a way that
> allows to create Android and IOS Applications without getting a headache
> because there are no clear answers if this is allowed or not (Maybe add the
> possibility that you can change the licence to i.e. MPL as long as it's put
> on the Apple or Android Stores,...).

I would suggest that you move from "as far as I can tell" to clear
reasoning based on reading the terms and legal advice.

You say "Android App Store".  I use f-droid, which is an android app
store, and it is full of code with LPGL and GPL :-) But seriously, if
you mean "Google Play", then you should say that.  There are
applications on Google Play with GPL, and I have never heard claims that
GPL or LGPL licenses are prohibited.

As for iOS, perhaps you should ask Apple to change their terms.  This is
not a minor issue of license compatibility; it is a fundamental clash
between their terms and Free Software principles.

This question has come up before, and based on that discussion, it seems
highly unlikely that there would be a license change.

> I've been wondering if it's ok to just share a source of the app somewhere
> but it seems all in all still very sketchy and questionable if this will
> hold up in court if anyone ever complains (I'm working for a very small
> company with only 3 full time developers and we've been sued several times
> for no reason at all other than trying to hamper our company so they can
> get our customers,... very questionable strategy since we've always played
> fair)

I am not following your comments, but it sounds like you are in need of
legal advice, which you won't get here.
___
geos-devel mailing list
geos-devel@lists.osgeo.org
https://lists.osgeo.org/mailman/listinfo/geos-devel

Re: [geos-devel] RFC 9: Restore C++ API as public API

2019-05-18 Thread Greg Troxel
lnkansa  writes:

> For the second time, this discussion has become very passionate at some
> point. That being said, I believe all the package management issues being
> used as an excuse are more of an issue for Linux-based systems. Those who
> develop Linux-based applications should know better if they depend on
> system wide library distribution for their dependencies via some package
> management. For them, they should have stability in mind when doing their
> development. Why should a larger community pay for the poor choice of
> others and would have to jump through additional hoops to achieve what
> should be trivial in C++? I am not a Linux expert/developer and would not
> be in a position to judge. Such applications could consider static linking
> as alternative or risk being dropped by the PACKAGE MANAGERS and those who
> want to make their work easier. It is the responsibility of statically
> linked application to fix security updates. I do acknowledge most of the
> PSC/maintainers primary OS might be linux and might have their own
> preferences/biases.

This is not about GNU/Linux vs other packaging systems.  It is about the
notion that it is normal and proper to use dynamic linking and only have
one copy of a library, such that it can be updated for security issues
without having to update large amounts of other things.

Part of the problem, perhaps most of it, is that programs written in C++
tend not have a stable ABI.  With a notion of ABI stability, I think
most of the objections would be less strong.
___
geos-devel mailing list
geos-devel@lists.osgeo.org
https://lists.osgeo.org/mailman/listinfo/geos-devel

Re: [geos-devel] pragma once

2018-12-19 Thread Greg Troxel
Paul Ramsey  writes:

> "non standard but widely supported"
>
> https://en.wikipedia.org/wiki/Pragma_once
>
> Includes MSVC! :)

As much as I hate to depart from standards, that does look near
universal.
___
geos-devel mailing list
geos-devel@lists.osgeo.org
https://lists.osgeo.org/mailman/listinfo/geos-devel

Re: [geos-devel] pragma once

2018-12-19 Thread Greg Troxel
Paul Ramsey  writes:

> As I fart around w/ header guards every time I add a new header/class,
> I wonder if changing over to #pragma once would be OK with one and
> all? GCC has had it 3.4, and clang has always had it, so…?

Is that covered by any standards?

(Presumably there is some other compiler people use on windows, too.)
___
geos-devel mailing list
geos-devel@lists.osgeo.org
https://lists.osgeo.org/mailman/listinfo/geos-devel

Re: [geos-devel] C++14

2018-12-13 Thread Greg Troxel
"Regina Obe"  writes:

> I think a lot of packaging (for older systems I see) I see is still
> done on gcc 4.7.  Though one can argue that these older systems will
> not ship newer GEOS, so might not be so much of an issue aside from
> users who build their own GEOS stuck on old platforms.

A good point for Linux, but in the non-Linux world (BSD, MacOS, Solaris, and
the rest of the vendor unix tradition) there is usually a notion of
"base system" and "packages or other stuff".  So with have things like
mv and the compiler in base, and then packages, the idea of wanting to
build newer packages with a not bleeding edge but not ancient compiler
(which describes gcc 4.8) is not really that strange.


___
geos-devel mailing list
geos-devel@lists.osgeo.org
https://lists.osgeo.org/mailman/listinfo/geos-devel

Re: [geos-devel] C++14

2018-12-13 Thread Greg Troxel
Daniel Baston  writes:

> Paul raised an issue yesterday about how to mark something as "deprecated"
> without using the "[[deprecated]]" attribute provided in C++14.
>
> It made me wonder what others think about using C++14 for GEOS. I see C++14
> as mostly a "bugfix" to C++11, introducing things like std::make_unique
> that were oddly omitted from C+11.

Perhaps, but the real issue is deployed compiler support.

> If we are going to modernize the code to use C++11, why not go straight to
> C++14? Are there major platforms that support C++11 but not C++14?
>
> If you look at this chart, there is no release of gcc, clang, or MSVC that
> supports ALL of C++11 without also supporting ALL of C++14:
> https://en.cppreference.com/w/cpp/compiler_support
>
> In all cases, you need gcc5, clang 3.8, or MSVC 19.0. (But yes, _most_ of
> C++11 is implemented in earlier releases of these.)

I think moving to C++14 is premature.  The real issue is that there are
a lot of systems out there, with various compilers, and there's an
implicit line between "too lame to cope" and "ok".  Right now, enough
things require C++11 that a system that can't build most C++11 is
nonviable.  This really means gcc 4.8 (or maybe 4.7; NetBSD went from
4.5 to 4.8 (and then to 5), so I don't know about 4.6 and 4.7).  It's
true that 4.8 does not fully support C++11, but it supports the parts
that almost all programs use.  The version that has 4.8 (7) is going to
drop out of support probably over the next year.  I think this is pretty
typical of systems that tend to stability rather than rapid tracking,
and would expect RHEL/CentOS to be the same or even more conservative in
updates.

If the base system compiler isn't new enough, then some gymnastics are
required.  This seems to be the case across a large class of systems,
including the various LTS types of releases.

I am starting to see more programs need C++14, but so far those are
relatively few and relatively giant and tend to be leaf packages, vs
things that if they don't build a very large number of packages are
broken.

This tends not to affect people that always update rapidly and use an OS
that rapidly adopts new compilers - which tend to tbe those contributing
to programs.  But the user community is I think pretty different, and
tends to upgrade more slowly, with larger numbers of installed systems.

So I think geos and similar things should wait until one can say with a
straight face "I don't understand your situation, your concerns, or your
constraints, but a system without a C++14 compiler is beyond lame and
therefore you don't matter".   I realize that's harsh, but that's
essentially what bumping compiler requirements does to people.In a
year or two, enough other things will need it that people will have to
cope somehow.  So I guess I'm saying that geos is too foundational to be
on the list of why they have to cope now.
___
geos-devel mailing list
geos-devel@lists.osgeo.org
https://lists.osgeo.org/mailman/listinfo/geos-devel

Re: [geos-devel] double double

2018-12-07 Thread Greg Troxel
Paul Ramsey  writes:

> Mats, what ever happened to:
>
> https://github.com/libgeos/geos/pull/40
>
> I'm just coming up against some stuff in the JTS commit log that expects
> double double and I see you've done this work already some years ago, but
> it's not committed that I can see. JTS changed over some code to use DD
> exclusively about a year ago, so this is a case where porting has caught up
> to need.
>
> Were there any substantial problems w/ your PR? If not I'm "just" going to
> try and rebase it and use it as the basis for going ahead.
>
> (It seems like the state-of-the-art would eventually be to use the "long
> double" type, which has an implementation in GCC, but does not yet have one
> in clang, in hopes that by being close to the metal we'd eventually also
> start to reap performance gains as the silicon adds instructions to improve
> long double calculations. ???)

I don't follow this last paragraph.

As I understand it, long double is a type defined by C that can be more
precise than double, but doesn't have to be, and on x86 is typically 80
bits.  double double is a technique to use two doubles to get roughly
twice the precision.   I would expect that on many CPUs, long double is
the same as double.

So double double is far more precise than long double always.

https://en.wikipedia.org/wiki/Long_double
https://en.wikipedia.org/wiki/Quadruple-precision_floating-point_format#Double-double_arithmetic
___
geos-devel mailing list
geos-devel@lists.osgeo.org
https://lists.osgeo.org/mailman/listinfo/geos-devel

Re: [geos-devel] 3.7.1 Release

2018-11-29 Thread Greg Troxel
"Regina Obe"  writes:

> Which test was that.  Might have been the one that was failing on
> Clang (FreeBSD and Mac) that I shushed in 3.7.0.
>
> In which case it's just as well its removed.

I don't think it's entirely clear that the test is wrong, vs the code,
vs clang.  But maybe it's clear to others and just not to me (which is
ok).

But, I am pretty sure this is not a regression in 3.7.1, but an old
issue that is now better understood than it was.
___
geos-devel mailing list
geos-devel@lists.osgeo.org
https://lists.osgeo.org/mailman/listinfo/geos-devel

Re: [geos-devel] RFC7 - Use CMake as build system for GEOS

2018-10-19 Thread Greg Troxel

Paul Ramsey  writes:

> Or maybe I should attempt to summarize what I recall from the thread that
> seem to me to be reasonable functional requests before going cmake-only:
>
> - make dist generates a distributable tarball
> - make check
>   - make check runs all tests
>   - make check builds test binaries that can be debugged w/o an install
>
> More?

I think there are three more things that autotools does right that need
to be replicated before it's ok to drop autotools.

1) "make distcheck", which
  does make dist
  unpacks the distfile
  does an objdir build from the unpacked distfile
  runs make check (which uses the just-built libs)

which shoud be easy if make disk and make check work ok.


2) cross building, where you can specify a cross toolchain and a path to
where the cross includes are.  This is something that has worked with
very little effort with autotools.  I don't know if it works with geos
this minute, but I know in general it works if there aren't any
cross-breaking bugs (like AC_TRY_RUN, or random code with issues in
makefiles).

3) ensuring that the cmakefiles have almost no "if on this OS, do this"
logic.  autoconf introduced the idea of feature tests which has been
greate for portability and I have in general seen things within cmake
that are a step backwards.  I don't know where the geos cmake build is
(it fails on NetBSD, not sure why), so this may be a non-issue.  But
culturally this sort of ifdef SO seems acceptable in cmake where it
isn't in autoconf, and I don't know why.
___
geos-devel mailing list
geos-devel@lists.osgeo.org
https://lists.osgeo.org/mailman/listinfo/geos-devel

Re: [geos-devel] C++ version, documentation and --std flags

2018-10-08 Thread Greg Troxel

Greg Troxel  writes:

> On the question of how linking with geos_c is supposed to work,things
> look good -- the C++ library has a NEEDED elf note for libstdc++, and
> the c library calls for the c++ library.  Why geos_c calls for libstdc++
> directly I don't understand, but I don't see that it would cause
> problems -- the idea that one owuld upgrade libstdc++ and rebuild
> libgeos but not libgeos_c does not seem credible.

I was confused - the geos_c library of course is implemented in C++ and
thus needs libstdc++.  It's only users of geos_c that don't need
libstdc++.

So everything I have looked at in geos seems exactly right.
___
geos-devel mailing list
geos-devel@lists.osgeo.org
https://lists.osgeo.org/mailman/listinfo/geos-devel

Re: [geos-devel] C++ version, documentation and --std flags

2018-10-08 Thread Greg Troxel


Greg Troxel  writes:

> The problem seems to be that libgeos.la does not specify -lstdc++ as a
> dependency_lib, and the capi test is linked with cc, not c++, so that
> standard C++ library isn't linked.
>
> Changing to using c++ instead of cc on that test makes it link, but I'm
> not clear on what's right.
>
> A basic question is if we expect linking with the geos C library to be
> doable in an invocation of the C compiler (as linker) that does not
> include -lstdc++.  I would think so, but I need to look further into how
> this is supposed to work.

Investigating further, I now believe that libtool as distributed has
bugs on NetBSD, and that the pkgsrc libtool has among its changes at
least a fix.  Which is perhaps hard to resolve, but not a geos issue.

On the question of how linking with geos_c is supposed to work,things
look good -- the C++ library has a NEEDED elf note for libstdc++, and
the c library calls for the c++ library.  Why geos_c calls for libstdc++
directly I don't understand, but I don't see that it would cause
problems -- the idea that one owuld upgrade libstdc++ and rebuild
libgeos but not libgeos_c does not seem credible.

$ geos-master/obj > objdump -x src/.libs/libgeos.so |egrep NEED
  NEEDED   libstdc++.so.7
  NEEDED   libm.so.0
  NEEDED   libgcc_s.so.1
  NEEDED   libc.so.12

$ objdump -x capi/.libs/libgeos_c.so|egrep NEEDED
  NEEDED   libgeos-3.7.0.so
  NEEDED   libstdc++.so.7
  NEEDED   libm.so.0
  NEEDED   libgcc_s.so.1
  NEEDED   libc.so.12
___
geos-devel mailing list
geos-devel@lists.osgeo.org
https://lists.osgeo.org/mailman/listinfo/geos-devel

Re: [geos-devel] C++ version, documentation and --std flags

2018-10-06 Thread Greg Troxel
Here's a patch to README.md on git master.  It explains the C++11
requirement, gives clearer examples for using obj/build dirs, and limits
the direction to run ldconfig to Linux.



>From abedec6b2344e2384b5c74ed6307b88231cf7fec Mon Sep 17 00:00:00 2001
From: Greg Troxel 
Date: Sat, 6 Oct 2018 19:29:57 -0400
Subject: [PATCH] README.md: Clarify installation instructions

---
 README.md | 19 ---
 1 file changed, 12 insertions(+), 7 deletions(-)

diff --git a/README.md b/README.md
index f0032f42..a43f3314 100644
--- a/README.md
+++ b/README.md
@@ -17,22 +17,27 @@ More on: https://trac.osgeo.org/geos#BuildandInstall
 
 ### Unix
 
-Using Autotools:
+ Prerequisites
+
+geos requires a C++11 compiler
+
+ Using Autotools:
 
 ./autogen.sh  # in ${srcdir}, if obtained from SVN or GIT
-${srcdir}/configure # in build dir
+(mkdir obj && cd obj && ../configure)
 
-Using CMake:
+ Using CMake:
 
-cmake ${srcdir} # in build dir
+(mkdir build && cd build && cmake ..)
 
-Now, all versions:
+ Either Autotools or CMake
 
 make
 make check
-make install # as root
-ldconfig # as root
+make install # (as root, assuming PREFIX is not writable by the build user)
 
+On a GNU/Linux system, if installed in a system prefix:
+  ldconfig # as root
 
 ### Microsoft Windows
 
-- 
2.19.0

___
geos-devel mailing list
geos-devel@lists.osgeo.org
https://lists.osgeo.org/mailman/listinfo/geos-devel

Re: [geos-devel] C++ version, documentation and --std flags

2018-10-06 Thread Greg Troxel

Sandro Santilli  writes:

> On Thu, Oct 04, 2018 at 09:28:57AM -0400, Greg Troxel wrote:
>> I'm seeing test failures in trunk, built with autotools in an objdir
>> with gcc 4.8 on NetBSD 7 amd64.  They are obviously C++ build issues,
>> but only happen when building tests.  I am not trying to ask others to
>> debug these in this mail.
>> 
>> I looked in README.md to find out what version of C++ is needed, and
>> don't see any --std= flags inserted in the build.  Various compiler
>> versions seem to have varying default standards, and it seems best to
>> declare the version being used so that builds will hard fail obviously
>> if that isn't ok.
>> 
>> In my case, I think gcc 4.8 almost entirely supports C++11, but defaults
>> to C++03 without --std=c++11.
>
> Could it be one of those autoconf-version related issues ?

Perhaps, but I have
  autoconf (GNU Autoconf) 2.69
  automake (GNU automake) 1.15.1
which I expect is pretty up to date.

The first question is what language standard is needed, and to get this
in README.md, which should document prerequisites.   Is it correct that
it's C++11 as the language (on trunk)?

> Supposedly -std=c++11 should be added by the call to
>
> AX_CXX_COMPILE_STDCXX
>
> which is found in configure.ac and defined in
> macros/ax_cxx_compile_stdcxx.m4

I do not see that in configure.ac on trunk.  But I realize now that's
because I'm still using the svn repo, and despite the trac showing that
under 'browse source', that's no longer what's official.

So I suggest that if the svn isn't up to date, and the code from svn is
really migrated to git, that the svn repo be made no longer accessible.e
___
geos-devel mailing list
geos-devel@lists.osgeo.org
https://lists.osgeo.org/mailman/listinfo/geos-devel

Re: [geos-devel] C++ version, documentation and --std flags

2018-10-06 Thread Greg Troxel

"Regina Obe"  writes:

> What error are you getting?  When I try to build using autotools, it also 
> fails too building the tests
>
> https://trac.osgeo.org/geos/ticket/913
>
> I assume your issue is different as on mine looks like it's just
> looking for a non-existent file on my system And also mixing C and C++
> constructions (like namespace)

My error is different.

The problem seems to be that libgeos.la does not specify -lstdc++ as a
dependency_lib, and the capi test is linked with cc, not c++, so that
standard C++ library isn't linked.

Changing to using c++ instead of cc on that test makes it link, but I'm
not clear on what's right.


A basic question is if we expect linking with the geos C library to be
doable in an invocation of the C compiler (as linker) that does not
include -lstdc++.  I would think so, but I need to look further into how
this is supposed to work.

___
geos-devel mailing list
geos-devel@lists.osgeo.org
https://lists.osgeo.org/mailman/listinfo/geos-devel

[geos-devel] C++ version, documentation and --std flags

2018-10-04 Thread Greg Troxel
I'm seeing test failures in trunk, built with autotools in an objdir
with gcc 4.8 on NetBSD 7 amd64.  They are obviously C++ build issues,
but only happen when building tests.  I am not trying to ask others to
debug these in this mail.

I looked in README.md to find out what version of C++ is needed, and
don't see any --std= flags inserted in the build.  Various compiler
versions seem to have varying default standards, and it seems best to
declare the version being used so that builds will hard fail obviously
if that isn't ok.

In my case, I think gcc 4.8 almost entirely supports C++11, but defaults
to C++03 without --std=c++11.
___
geos-devel mailing list
geos-devel@lists.osgeo.org
https://lists.osgeo.org/mailman/listinfo/geos-devel

Re: [geos-devel] RFC7 - Use CMake as build system for GEOS

2018-10-04 Thread Greg Troxel
Daniel Baston  writes:

>> I'm asking if we can have a "make check" rule, generated by CMake,
>> that will run the same tests run by current "make check" rule
>> generated by autotools and with the same important condition of
>> built binaries and libraries _NOT_ moving out of the build tree.
>>
>> Also I'd like to have a "make dist" and "make distcheck" and
>> of course the other custom ones ("apidoc"/"doxygen"/"pdf",
>> "gen-ChangeLog" etc.)
>
> Can you clarify how this request relates to your proposal to drop CMake
> entirely? If this question can be answered to your satisfaction, do you still
> wish to drop CMake? (I'm hesitant to spent time investigating if you're not
> interested in the answer.)

I'm pretty sure he means:

  if there is serious talk of removing autotools, then the cmake build
  has to support make check/dist/distcheck, so that moving to cmake
  isn't a regression
  
___
geos-devel mailing list
geos-devel@lists.osgeo.org
https://lists.osgeo.org/mailman/listinfo/geos-devel

Re: [geos-devel] RFC7 - Use CMake as build system for GEOS

2018-10-04 Thread Greg Troxel
Sandro Santilli  writes:

> On Wed, Oct 03, 2018 at 02:41:34PM -0400, Daniel Baston wrote:
>> 
>> Are you asking whether the GEOS test suite can be run against
>> a non-installed copy of the library (yes), or are you referring to
>> other tests?
>
> I'm asking if we can have a "make check" rule, generated by CMake,
> that will run the same tests run by current "make check" rule
> generated by autotools and with the same important condition of
> built binaries and libraries _NOT_ moving out of the build tree.
>
> Also I'd like to have a "make dist" and "make distcheck" and
> of course the other custom ones ("apidoc"/"doxygen"/"pdf",
> "gen-ChangeLog" etc.)

Agreed that these things are necessary.

This is a key part of why there is pushback from people that don't want
to drop autotools in favor of cmake (strk, bas, and me, at least).
cmake's reason for existence is basically supporting native windows
builds, but it is a step backwards on posix platforms, lacking "make
check" (testing not installed files), "make dist", and "make distcheck"
(testing not only not installed files, but an objdir build of the
just-produced distfile).  Perhaps I'm confused and all of those things
are automatically supported somehow.

And it's not clear to me that cmake supports cross builds by default.


Looking at the goes CMakeList, there are options added for gcc, and for
MS, but some of the gcc options belong for clang too (because they
aren't really gcc options).  In configure.ac, flags are added if
supported, without checking for exact compiler type (and thus working
with clang).

Another place to look for simplification is to stop testing for things
that are required by POSIX, unless it's needed to accomodate windows.
An example is stdint.h and the notion of 64-bit integer types.   It's
true that posix doesn't strictly require int64_t and uint64_t, but it
does say that if 64-bit types exist they have to be usable by those
names:
  http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/stdint.h.html

Another source of complexity in the cmake build seems to be some mac
framework build that's doing things in a special mac-y way instead of
just using mac as posix.  That is not present in the autoconf build.


I tried the cmake build on NetBSD, and it failed early with isnan
issues.  (The autotools build works fine, which is no surprise since
it's been the standard approach and is well debugged.)   So I wonder how
well the cmake build has been tested on other than windows, and it
seems premature to propose removing autotools.



___
geos-devel mailing list
geos-devel@lists.osgeo.org
https://lists.osgeo.org/mailman/listinfo/geos-devel

Re: [geos-devel] RFC7 - Use CMake as build system for GEOS

2018-10-04 Thread Greg Troxel
Sebastiaan Couwenberg  writes:

> On 10/4/18 4:39 AM, Regina Obe wrote:
>>> pkgsrc is using autoconf.   I have had far more problems with cmake over
>>> time than with autoconf.
>>>
>> 
>> But you do use CMake for some things right?
>> 
>> I presume Debian and CentOS packagers already use CMake because they ship 
>> pgRouting and pgRouting only supports CMake.
>> Does CGAL support autotools?  I've never tried since I always went for the 
>> CMake.
>
> Debian packaging tools also support CMake.

pkgsrc does too.  Basically it is well more than prevalent enough that
packaging systems esentially have to.

> For the geos package autotools is used because that's the official
> buildsystem and on Linux superior to CMake. E.g. libtool does the right
> thing with library versioning.

I have never tried geos cmake, but my broad experience over the years is
that autotools-based systems almost entirely work correctly and
cmake-based systems are more troubled.

> I would prefer if geos kept autotools as the default buildsystem for
> Linux, using CMake for Windows and other systems is fine with me.

Seconded, except I would say default on "systems conforming to POSIX"
rather than just Linux.

>> When I was packaging 3.7.0 I spent 20% of my time cursing because
>> there was this autotools configure thing, CMake make lists, and I
>> think even NMake or some such thing
>> That all needed changing just to get a stupid version number in place.

Do you mean changing one number in one line in configure.ac, and one
line in some cmake file?

>> The problem with that thinking is that it HAS HAD low rate of building 
>> system changes
>> This I'm pretty sure will change in 3.8.  Both Dan and Vicky have huge plans 
>> for improving GEOS
>> Which means we are going to have to add a ton more tests to the GEOS suite 
>> to ensure we don't break things.
>> 
>> This will become very time consuming if we have to test against autotools 
>> and CMake.

It seems that the downside of two is adding each test file in two
places, and this seems tiny compared to writing and testing a test file.

>> I'm not sure if it's true for other people, or if it's just because I'm 
>> working on a Handicapped platform
>> But for me even when autotools WAS working GEOS compiled way faster under 
>> CMake than it did under autotools.

Try compiling cmake too.  On some systems I test on it takes hours to
build cmake.

>> If that is true for others, those cycles make a big difference for 
>> development.

If you have just changed source files and rebuild, you just run make.
If you are doing a full regression test, then it does more.
___
geos-devel mailing list
geos-devel@lists.osgeo.org
https://lists.osgeo.org/mailman/listinfo/geos-devel

Re: [geos-devel] RFC7 - Use CMake as build system for GEOS

2018-10-03 Thread Greg Troxel
pkgsrc is using autoconf.   I have had far more problems with cmake over
time than with autoconf.

This is obviously an issue where people disagree.

However, two observations where there is probably common ground:

  I don't understand windows native builds (because I don't use
  windows), but I don't understand why there is nmake and cmake both.
  If cmake exists to make windows builds work, then I would think nmake
  can go.  And if nmake is how windows native builds are done, I don't
  really see the point of cmake.   I am guessing this question would be
  resolved by dropping nmake.

  Given two systems (auto* and cmake), and the fact that geos seems to
  have had low rate of build system changes, I wonder if there is really
  a problem with both.
___
geos-devel mailing list
geos-devel@lists.osgeo.org
https://lists.osgeo.org/mailman/listinfo/geos-devel

Re: [geos-devel] RFC7 - Use CMake as build system for GEOS

2018-10-03 Thread Greg Troxel
Sandro Santilli  writes:

> On Mon, Oct 01, 2018 at 12:38:50PM -0400, Daniel Baston wrote:
>> Hi All,
>> 
>> I've posted an RFC to switch to CMake as the exclusive build system for
>> GEOS. Some reasoning is in the RFC itself, but it boils down to wasted
>> developer and machine effort supporting the combination of autotools,
>> CMake, and NMake.
>> 
>> https://trac.osgeo.org/geos/wiki/RFC7
>> 
>> Thoughts from the PSC?
>
> One of the reasons why I still prefer autotools is its ability
> to build tester scripts which work before install (via libtool).
> Does cmake allow for that ?

Testing before install, while the previous version (including libraries)
is installed, is to me a requirement for a build system.  Also cross
building.  People keep telling me that cmake does everything auto* does,
but I wonder.

Perhaps we can drop camke and just have autotools, and native windows
(vs mingw/cygwin) users can fund keeping the separate windows makefiles
up to date (yes, that's mostly a joke).

___
geos-devel mailing list
geos-devel@lists.osgeo.org
https://lists.osgeo.org/mailman/listinfo/geos-devel

Re: [geos-devel] GEOS 3.7.0rc1 release

2018-09-08 Thread Greg Troxel
My arm issues are likely not a GEOS bug, and definitely not new.   Don't hold 
up on my account.___
geos-devel mailing list
geos-devel@lists.osgeo.org
https://lists.osgeo.org/mailman/listinfo/geos-devel

Re: [geos-devel] GEOS 3.7.0rc1 release

2018-09-06 Thread Greg Troxel
I have done more testing on the NetBSD/earmv7 issue.  Someone else
reproduced it, and also with newer gcc on NetbSD-current, compared to
gcc 5.5.0 on my system.   NetBSD/sparc64, also newer gcc, passed.

I rebuilt with -O0 instead of -O2, and then the xmlrunner tests pass.

I get a failure to create a geometry object in the unit suite on one of
the inputs, and will post something more coherent about that later.
(The suite is not robust about checking for null returns from
GEOSGeomFromHEX_buf, it seems.)


Just FYI to the list - obviously I still have things to figure out.
___
geos-devel mailing list
geos-devel@lists.osgeo.org
https://lists.osgeo.org/mailman/listinfo/geos-devel

Re: [geos-devel] GEOS 3.7.0rc1 release

2018-09-05 Thread Greg Troxel
Sebastiaan Couwenberg  writes:

> On 9/5/18 2:29 AM, Greg Troxel wrote:
>> Has anyone run the geos tests on arm under Linux?
>
> Yes.
>
> [urls]

Thanks, that's helpful.

I ran Kahan's paranoia on my system, which passed cleanly.  I will keep
looking into this.
___
geos-devel mailing list
geos-devel@lists.osgeo.org
https://lists.osgeo.org/mailman/listinfo/geos-devel

Re: [geos-devel] GEOS 3.7.0rc1 release

2018-09-04 Thread Greg Troxel
I tried 3.6.2, and got the following test result.

Has anyone run the geos tests on arm under Linux?

(I think this issue should definitely not hold up the release.)



==
   : tests/xmltester/test-suite.log
==

# TOTAL: 1
# PASS:  0
# SKIP:  0
# XFAIL: 0
# FAIL:  1
# XPASS: 0
# ERROR: 0

.. contents:: :depth: 2

FAIL: testrunner


terminate called after throwing an instance of 
'geos::util::IllegalArgumentException'
  what():  IllegalArgumentException: Exponent out of bounds
[1]   Abort trap (core dumped) ./XMLTester -v -...

___
geos-devel mailing list
geos-devel@lists.osgeo.org
https://lists.osgeo.org/mailman/listinfo/geos-devel

Re: [geos-devel] GEOS 3.7.0rc1 release

2018-09-04 Thread Greg Troxel
Greg Troxel  writes:

> Not related to the maybe-clang/GeometryFactory test failure, I tried to
> build on NetBSD/8 evbearmv7hf-el (RPI3, running 32 bit), and got
>
>   ==
>  : tests/xmltester/test-suite.log
>   ==
>
>   # TOTAL: 1
>   # PASS:  0
>   # SKIP:  0
>   # XFAIL: 0
>   # FAIL:  1
>   # XPASS: 0
>   # ERROR: 0
>
>   .. contents:: :depth: 2
>
>   FAIL: testrunner
>   
>
>   terminate called after throwing an instance of 
> 'geos::util::TopologyException'
> what():  TopologyException: found non-noded intersection between 
> LINESTRING (-105571 939969, -102895 939993) and LINESTRING (9485.36 770763, 
> -102895 939993) at -102894.5562421389 939992.66927296668
>   [1]   Abort trap (core dumped) ./XMLTester -v -...
>   FAIL testrunner (exit status: 134)
>
> I believe this has normal IEEE754 floating point.
>
> So I'm curious if anyone has run this on arm, and specifically armv7.

I'm still seeing this with rc2, still only on armv7.
___
geos-devel mailing list
geos-devel@lists.osgeo.org
https://lists.osgeo.org/mailman/listinfo/geos-devel

Re: [geos-devel] GEOS 3.7.0rc1 release

2018-08-27 Thread Greg Troxel

Not related to the maybe-clang/GeometryFactory test failure, I tried to
build on NetBSD/8 evbearmv7hf-el (RPI3, running 32 bit), and got

  ==
 : tests/xmltester/test-suite.log
  ==

  # TOTAL: 1
  # PASS:  0
  # SKIP:  0
  # XFAIL: 0
  # FAIL:  1
  # XPASS: 0
  # ERROR: 0

  .. contents:: :depth: 2

  FAIL: testrunner
  

  terminate called after throwing an instance of 'geos::util::TopologyException'
what():  TopologyException: found non-noded intersection between LINESTRING 
(-105571 939969, -102895 939993) and LINESTRING (9485.36 770763, -102895 
939993) at -102894.5562421389 939992.66927296668
  [1]   Abort trap (core dumped) ./XMLTester -v -...
  FAIL testrunner (exit status: 134)

I believe this has normal IEEE754 floating point.

So I'm curious if anyone has run this on arm, and specifically armv7.


signature.asc
Description: PGP signature
___
geos-devel mailing list
geos-devel@lists.osgeo.org
https://lists.osgeo.org/mailman/listinfo/geos-devel

Re: [geos-devel] GEOS 3.7.0rc1 release

2018-08-27 Thread Greg Troxel

"Regina Obe"  writes:

> https://download.osgeo.org/geos/geos-3.7.0rc1.tar.bz2

Regarding

  https://trac.osgeo.org/geos/ticket/894

I don't see this on NetBSD/7 amd64, which uses gcc 4.8.

I did a build on macos 10.11, which uses clang (but a similar Intel
processor):

  Apple LLVM version 8.0.0 (clang-800.0.42.1)
  Target: x86_64-apple-darwin15.6.0
  Thread model: posix
  InstalledDir: /Library/Developer/CommandLineTools/usr/bin

and get the same failure as the bug.

Specifically, if I run test 1 in that group, it fails:

  $ ./geos_unit geos::geom::CoordinateArraySequenceFactory 1
  ===
GEOS Test Suite Application
  ===

  geos::geom::CoordinateArraySequenceFactory: [1=F]

  ---> group: geos::geom::CoordinateArraySequenceFactory, test: test<1>
   problem: assertion failed

  tests summary: failures:1 ok:0

but tests 2,3,4,5 all pass.

The test is in tests/unit/capi/GEOSGeomFromWKBTest.cpp in the sources,
and is doing:

// POINT(1.234 5.678)   


std::string wkt("POINT (1.234 5.678)");
std::string wkb("0101005839B4C876BEF33F83C0CAA145B61640");
test_wkb(wkb, wkt);

I don't know how to get it to produce the mismatching content; the
--verbose option in --help is unrecognized, and I can't see how it would
be reading the driver source.

So I wonder if something in geos is sensitive to gcc/clang differences.
(Vastly less likely, there could be a clang bug.)



signature.asc
Description: PGP signature
___
geos-devel mailing list
geos-devel@lists.osgeo.org
https://lists.osgeo.org/mailman/listinfo/geos-devel

Re: [geos-devel] GEOS 3.7.0rc1 release

2018-08-23 Thread Greg Troxel

Jeff McKenna  writes:

> That was it, manually copying the missing file from svn or git, into
> the release package (geos-3.7.0rc1.tar.bz2) allows GEOS to compile
> with msvc 2017.

It seems better to adjust the cmake stuff not to expect such a file than
to put it in the release.


signature.asc
Description: PGP signature
___
geos-devel mailing list
geos-devel@lists.osgeo.org
https://lists.osgeo.org/mailman/listinfo/geos-devel

Re: [geos-devel] NEWS comments

2018-08-21 Thread Greg Troxel

Sebastiaan Couwenberg  writes:

> I don't think it's the job of a packaging system to specify which
> compiler features should be used for reverse dependencies. Stuff like
> pkg-config was invented for that.

The point is to document that a compiler capable of c++11 is required,
so that if the current compiler isn't new enough, one can be built and
used instead.

But I'm not trying to push one packaging system's view on the world,
just to ask that things be clear.


> ldd has misleading output, objdump is more reliable:
>
> $ ldd /usr/lib/libgdal.so.20.1.2 | grep geos
> libgeos_c.so.1 => /usr/lib/x86_64-linux-gnu/libgeos_c.so.1
> (0x7fa48c768000)
> libgeos-3.5.1.so => /usr/lib/x86_64-linux-gnu/libgeos-3.5.1.so
> (0x7fa47f809000)
>
> $ objdump -x /usr/lib/libgdal.so.20.1.2 | grep NEEDED | grep geos
>   NEEDED   libgeos_c.so.1
>
> GDAL should not be using the GEOS C++ API, see m4/geos.m4 in the GDAL
> source how it detects the library to link.

Thanks.  objdump -x shows libgeos as NEEDED, but configure found the C
API, and so far I haven't figured out where it's coming from - will keep
looking.

> In your case it seems that you need to tell pkgsrc that building geos
> with non-C++11 compilers is not possible.

Yes, it will be marked "USE_LANGUAGES+= c++11", which is normal for us.

> I do wonder why those users
> can get a compiler with C++11 support from pkgsrc though. It's just a
> dependency issue, if you want to build the new geos, you need to update
> your compiler to suitable version first.

Yes, but we have a notion of base system compiler and extra compiler
from pkgsrc, and thus the question is when the force the new one.

> Personally I also think that the file list requirements from pkgsrc are
> an unnecessary burden to packagers, causing them to request detailed
> changelog entries mentioning those file changes from upstreams. Debian
> packages automatically generate the list of files they include, and if
> you want to see the changes there are tools like debdiff.

There are pluses and minuses.  I only ask when I see API withdrawals not
mentioned.  Often it's an omission of documentation, but sometimes
things are broken.  Whether I change a file or just see a diff, it's the
same question.



signature.asc
Description: PGP signature
___
geos-devel mailing list
geos-devel@lists.osgeo.org
https://lists.osgeo.org/mailman/listinfo/geos-devel

Re: [geos-devel] GEOS 3.7.0rc1 release

2018-08-21 Thread Greg Troxel

Sebastiaan Couwenberg  writes:

>> Sorry, I am not following.  I dug into this harder than probably makes
>> sense because I wanted to make sure there wasn't a bug in NetBSD's sed,
>> in which case I would file a bug report so it is fixed.
>> 
>> I don't see -E in POSIX's sed spec:
>> 
>>   http://pubs.opengroup.org/onlinepubs/9699919799/utilities/sed.html
>
> It's documented in the sed manpage:
>
> "
>  POSIX.2 BREs should be supported, but they aren't completely because of
>  performance problems. The \n sequence in a regular expression matches
>  the newline character, and similarly for \a, \t, and other sequences.
>  The -E option switches to using extended regular expressions instead;
>  the -E option has been supported for years by GNU sed, and is now
>  included in POSIX.
> "
>
> https://manpages.debian.org/stretch/sed/sed.1.en.html#REGULAR_EXPRESSIONS

The Debian manpages are not authoritative for POSIX :-) It's not an
issue to use -E, but I can't find in POSIX itself where it says this.
But that's not an actual issue and I don't want to take up more or your
time on it.

>> But, in the posix spec for extended regular expressions:
>> 
>>   http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap09.html
>> 
>> I don't see that .*?  is legal, opposed to (.*)?
>
> That's probably because we're thinking in Perl compatible regular
> expressions, the dominant regex implementation thanks to PCRE, but POSIX
> extended regular expressions don't support that feature.

I am not following you.  The expression in geos 3.7.0rc1 is not legal
according to POSIX extended regular expression.  That's all I was trying
to ask, was to make it conform to posix ERE.

> More specifically thinks like:
>
>  3.7.0alpha
>  3.7.0beta1dev
>
> And (unlikely) cases like:
>
>  3.42.123beta1dev
>
> Once again see the discussion in the related issue:
>
>  https://trac.osgeo.org/geos/ticket/887
>
> One way or another the suffix needs to be stripped from the version
> number, because it shouldn't become part of the library filename.
>
> Initially the suffix was matched, but later changed to match the version
> to handle the dev case in particular, and any other possible suffix we
> hadn't thought of.

That's all totally fine, as long as .* is in parens as the ERE rules
seem to require.


signature.asc
Description: PGP signature
___
geos-devel mailing list
geos-devel@lists.osgeo.org
https://lists.osgeo.org/mailman/listinfo/geos-devel

Re: [geos-devel] GEOS 3.7.0rc1 release

2018-08-21 Thread Greg Troxel

Sebastiaan Couwenberg  writes:

> On 8/21/18 1:25 AM, Greg Troxel wrote:
>> 
>> is malformed.   It's the .* production that the ? applies to (present or
>> not).
>> 
>>   VERSION_RELEASE=`echo "$VERSION" | sed -E 
>> 's/^([0-9]+\.[0-9]+\.[0-9]+)(.*)?$/\1/'`
>> 
>> GNU sed may be allowing this as an extension, because "*?" doesn't make
>> sense, since * is repetition.
>
> Note the -E option for extended regular expressions which came from GNU
> sed but is now included in POSIX.
>
> The ? should make the .* expression non-greedy.

Sorry, I am not following.  I dug into this harder than probably makes
sense because I wanted to make sure there wasn't a bug in NetBSD's sed,
in which case I would file a bug report so it is fixed.

I don't see -E in POSIX's sed spec:

  http://pubs.opengroup.org/onlinepubs/9699919799/utilities/sed.html

However, NetBSD's sed (and I suspect basically all others) does document
-E for extended regular expressions.

But, in the posix spec for extended regular expressions:

  http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap09.html

I don't see that .*?  is legal, opposed to (.*)?

Specifically, in 9.4.6.4, it says

  The behavior of multiple adjacent duplication symbols ( '+', '*', '?',
  and intervals) produces undefined results.

and it looks like this ? modifier is a perl regex thing:

  
https://stackoverflow.com/questions/1103149/non-greedy-reluctant-regex-matching-in-sed

But I don't understand why this is hard in this particular, case, since
we're trying to take things like

1.2.3
3.4.5rc3

and produce

1.2.3
3.4.5

and I would think the point is to have the .* eat up everything after
the third number.


signature.asc
Description: PGP signature
___
geos-devel mailing list
geos-devel@lists.osgeo.org
https://lists.osgeo.org/mailman/listinfo/geos-devel

  1   2   >