Hi,

My thought would be that a few people (at least 2 as being a sole maintainer isn't a good idea) from the community would stand up and act as the new keepers of libkml. I guess we could host it at OSGeo/libkml because I'm not optimistic we can recover libkml/libkml. A few years ago I tried to contact its past maintainer (https://github.com/rashadkm) but he seems to have disappeared from github (at least @ pings were ineffective)

Functionally I believe libkml is feature-full or close to be. So this is "just" about maintenance. Existing pull requests to review. Patches hanging around here and there (like at https://github.com/conda-forge/libkml-feedstock/tree/main/recipe/patches), that should be worth exploring upstreaming. Possibly fixes & enhancements in its CMake build system?

Howard mentioned me as a POC because I raised the topic, but I'm not super willing to act as the primary maintainer of libkml, filling already that role too many times.

So another opportunity for the community to stand up, otherwise each interested party will have the miserable experience of acting separately as a maintainer, and probably we'll finally get into the situation where the thing is not usable anymore (it started causing issues for conda-forge builds some time ago, and they were considering dropping it)

@SimonEves I was confused by your mention of autogen.sh and stuff. I presume you're still using google/libkml. You'd probably have a slightly better experience with libkml/libkml which has only a CMake build system.

@Peter You're welcome to submit a PR enhancing GDAL libkml driver doc.

Even


Le 04/10/2024 à 01:47, Simon Eves a écrit :
We include *libkml* in our GDAL build. We are still using v1.3.0 from August 12, 2015. It still works fine for our requirements with GDAL 3.7.3 (current production) and 3.9.2 (imminent deps bump).

The build script for it predates me, but it appears we also had issues with *uriparser*. We build that (v0.9.8) separately (pretty much stock) and then hack the *libkml* build to use it in preference, as follows:

unzip -u libkml-master.zip
cd libkml-master
# Don't use bundled third_party uriparser.
# It results in duplicate symbols when linking some of our tests,
# and is missing symbols used by arrow because it is an old version.
rm -Rf third_party/uriparser-*
find . -name Makefile.am -exec sed -i 's/ liburiparser\.la//' {} +
find . -name Makefile.am -exec sed -i '/uriparser/d' {} +
# Delete trailing backslashes that precede a blank line left from prior command.
find . -name Makefile.am -exec sed -iE ':a;N;$!ba;s/\\\n\s*$/\n/m' {} +
./autogen.sh
CURL_CONFIG=$PREFIX/bin/curl-config \
CXXFLAGS="-std=c++03" \
LDFLAGS="-L$PREFIX/lib -luriparser" \
./configure --with-expat-include-dir=$PREFIX/include/ --with-expat-lib-dir=$PREFIX/lib --prefix=$PREFIX --enable-static --disable-java --disable-python --disable-swig
makej
make install

Of the other deps you mentioned, we are using *expat* 2.6.2 (prompted by a Python 3.12 and *gdb* issue on Ubuntu 24.04) and *boost* 1.84. We don't seem to include *minizip* explicitly. We build with system *zlib*.

Maybe this is helpful. Maybe not. This is all on Linux (we do both RHEL and Ubuntu builds).

On Thu, Oct 3, 2024 at 4:18 PM P O'Toole via gdal-dev <gdal-dev@lists.osgeo.org> wrote:

    Hello list —

    I recently built GDAL 3.9.0 from source on a new Amazon Linux 2023
    system, which sadly lacks all of the wonderfulness of EPEL, which
    previously provided most of the necessary stuff on the RHEL-family
    operating systems we used before. Since we've historically
    provided support for exporting KML in our web applications, I
    concluded I ought to build the libkml dependency during the
    process, which is where the fun started...

    GDAL's documentation page (
    https://gdal.org/en/latest/drivers/vector/libkml.html#vector-libkml )
    says to use the latest libkml release (version 1.3.0, a 2015
    vintage) or build from master (currently commit 916a801, a 2017
    vintage). The libkml release makefiles have instructions to grab
    various (old) release packages from hardcoded web-URLs and
    silently build and install(!!) them without asking if this is okay
    or suggesting that the latest packages be made available by the
    user. Some breakage led me to have a closer look and I found that
    a failing dependency was the result of a dead hard-coded URL
    pointing to a URIparser 0.7.5 release, which has had known
    vulnerabilities since 2018 (
    
https://www.cvedetails.com/version/1531247/Uriparser-Project-Uriparser-0.7.5.html
 ).
    The URIparser maintainer very nicely added warnings to that
    release, directing people to upgrade for security reasons. More
    looking around from there showed that minizip 1.3.0 also has
    issues (
    
https://www.cvedetails.com/vulnerability-list/vendor_id-17534/product_id-43048/version_id-1233835/Minizip-Project-Minizip-1.1-4.html
 ),
    as does boost 1.50.0
    
(https://www.cvedetails.com/vulnerability-list/vendor_id-7685/product_id-13033/version_id-499391/Boost-Boost-1.50.0.html)
    alongside expat 2.1.0
    
(https://www.cvedetails.com/version/1175174/Libexpat-Project-Libexpat-2.1.0.html)
    and zlib 1.2.8
    (https://www.cvedetails.com/version/1618219/Zlib-Zlib-1.2.8.html).
    Though other dependencies won't be downloaded on libkml master
    916a801, I believe boost 1.50.0 will still automatically be
    downloaded and built if another version cannot be found locally,
    at least in some cases.

    For folks just looking to build gdal as a dependency for something
    else e.g. GEOS or PostGIS, I think it would be easy overlook the
    above issues. As such, I'd argue that the documentation on
    gdal.org <http://gdal.org> that relates to libkml should be
    adjusted to note that users building libkml should take care to
    make its dependencies available locally before it (the 1.3.0
    package especially and to a lesser degree the latest commit of
    their main branch) goes and downloads vulnerable packages and
    installs them without asking.

    Obviously, GDALers aren't directly responsible for libkml (at
    least at this time) and the cleanest fix here lies on the libkml
    end, wherein they'd post a new release and likely freshen master
    slightly, ideally testing it against newer versions of the
    required dependencies. Of course, this will likely take time, so
    in the meanwhile, it might be nice for GDAL's documentation to
    reflect the reality that building with full KML features should be
    done carefully to avoid opening applications (and/or the users of
    those applications) to attack via carefully-constructed KML-files
    which could be used to perform malicious actions, modify an
    application to attack its users, etc.

    My question for anyone distributing pre-compiled versions of GDAL
    via package repositories (e.g. EPEL) or other mechanisms is
    whether they are aware of these issues, at least if they are
    building with full KML support via libkml. I take it they likely
    ARE aware, given libkml was discussed at the last maintainer
    meeting, but it behooves me to be sure.

    -  Patrick O'Toole

    P.S. I may not be of great use in terms of coding on this issue,
    as my C++ is not very current and I don't have familiarity with
    the relevant internals, but I would be happy to contribute
    documentation as it relates to the libkml driver and how to build
    it for use with modern versions of GDAL. I may also be able to
    support some testing if there's action taken here.

    P.P.S. I am explicitly including Even because the
    maintainers-meeting summary asked that LIBKML-users make comment
    to Even... Some review of conversations relating to the filetypes
    my group currently supports reveals that a tool called OnX that's
    used by some of our biologists is compatible with KML, which makes
    it nice to have the option to export data to KML format. In
    addition, we sometimes work with partners from other organizations
    who use Google Earth to visualize geospatial features, because
    ArcGIS is expensive and QGIS is either not known or too cumbersome
    to learn or open for lighter tasks such as simply viewing data.
    For these reasons, I concluded that having libkml might be better
    than only GDAL's internal KML driver, although I have not done
    side-by-side comparisons to see which features or options work
    better on one driver versus the other for output, so I will
    refrain from making the strong statement, "We must have libkml and
    I know this for a fact." Hope that helps.
    _______________________________________________
    gdal-dev mailing list
    gdal-dev@lists.osgeo.org
    https://lists.osgeo.org/mailman/listinfo/gdal-dev

--
http://www.spatialys.com
My software is free, but my time generally not.
_______________________________________________
gdal-dev mailing list
gdal-dev@lists.osgeo.org
https://lists.osgeo.org/mailman/listinfo/gdal-dev

Reply via email to