virtuoso-opensource icon indicating copy to clipboard operation
virtuoso-opensource copied to clipboard

Support Openssl 3.2

Open chenrui333 opened this issue 1 year ago • 8 comments

Currently, the project only support openssl 3.1.x, it would be nice to also support the latest openssl (openssl 3.2.x)

https://github.com/openlink/virtuoso-opensource/blob/33f93b139ccbab42282bd36e81f301699320ae58/configure.ac#L917-L918

relates to https://github.com/Homebrew/homebrew-core/pull/162657

chenrui333 avatar Feb 14 '24 10:02 chenrui333

Also since OpenSSL 1.1 is already EOL on 11 Sep 2023, it would be also good to drop its support

https://www.openssl.org/blog/blog/2023/03/28/1.1.1-EOL/index.html

chenrui333 avatar Feb 14 '24 10:02 chenrui333

it would be nice to also support the latest openssl (openssl 3.2.x)

We will have a look at openssl 3.2.x and see what needs to be done in Virtuoso to support this new version.

Also since OpenSSL 1.1 is already EOL on 11 Sep 2023, it would be also good to drop its support

There are a number of important Linux LTS releases such as Redhat 7.x, RedHat 8.x, Ubuntu 18.04, Ubuntu 20.04 that all use OpenSSL 1.1 . The organizations behind these versions have always back-ported patches from the OpenSSL organization into their released version therefor all of these distros are still completely safe to port on.

So from a portability point of view i see no reason to drop support for OpenSSL 1.1.

pkleef avatar Feb 14 '24 12:02 pkleef

it would be nice to also support the latest openssl (openssl 3.2.x)

We will have a look at openssl 3.2.x and see what needs to be done in Virtuoso to support this new version.

Mostly just relaxing the constraint of the openssl check.

we (homebrew) did the openssl 3.2 upgrade last year, but did not find any breaking changes from system dependency perspective.

So from a portability point of view i see no reason to drop support for OpenSSL 1.1.

make sense.

chenrui333 avatar Feb 14 '24 13:02 chenrui333

I have pushed commit 9a98bf717275720bc63893e2fdceae127c2a8eb4 to develop/7 to relax the check in configure.ac

I need to setup a new CI environment with this version of OpenSSL 3.2, so for now i am keeping this issue open until i have fully tested this.

pkleef avatar Feb 15 '24 16:02 pkleef

I sort of already tried that commit in my local, it failed in the similar way as CI.

chenrui333 avatar Feb 17 '24 16:02 chenrui333

wrt macOS CI, I can probably contribute a bit.

chenrui333 avatar Feb 17 '24 16:02 chenrui333

This is the error I am seeing

 clang -DHAVE_CONFIG_H -I. -I../../../libsrc/Dk -g -O2 -fno-strict-aliasing -fno-omit-frame-pointer -Wall -Wextra -Wformat -Werror=format-security -Werror=implicit-function-declaration -DNDEBUG -DPOINTER_64 -I/private/tmp/virtuoso-20240217-73833-dm74xn/virtuoso-opensource-7.2.12/libsrc/Xml.new -DOPENSSL_NO_KRB5 -D_USRDLL -I../../../libsrc -I../../../libsrc/Dk -I../../../libsrc/Wi -I../../../libsrc/plugin -I../../../libsrc/langfunc -I../../../libsrc/odbcsdk/include -g -O2 -c ../../../libsrc/plugin/import_gate_virtuoso.c -o geos_la-import_gate_virtuoso.o >/dev/null 2>&1
./geos_export_from_virtgeo.cpp:17:10: fatal error: 'geos/geom/CoordinateSequenceFactory.h' file not found
#include <geos/geom/CoordinateSequenceFactory.h>
         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from ./geos_import_to_virtgeo.cpp:17:
In file included from ./geos_plugin.h:6:
In file included from /opt/homebrew/include/geos.h:26:
/opt/homebrew/include/geos/util.h:38:12: error: no member named 'make_unique' in namespace 'std'
using std::make_unique;
      ~~~~~^
In file included from ./geos_plugin.cpp:32:
In file included from /opt/homebrew/include/geos.h:26:
/opt/homebrew/include/geos/util.h:38:12: error: no member named 'make_unique' in namespace 'std'
using std::make_unique;
      ~~~~~^
./geos_plugin.cpp:33:10: fatal error: 'geos/geom/CoordinateArraySequence.h' file not found
#include <geos/geom/CoordinateArraySequence.h>
         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
./geos_import_to_virtgeo.cpp:55:25: error: cannot initialize a variable of type 'const Coordinate *' with an rvalue of type 'const CoordinateXY *'
      const Coordinate* c = geom.getCoordinate();
                        ^   ~~~~~~~~~~~~~~~~~~~~
./geos_import_to_virtgeo.cpp:86:93: error: no member named 'z' in 'geos::geom::CoordinateXY'
    for (int i = 0; i < len; i++) g->_.pline.Zs[i] = geom.getGeometryN(i)->getCoordinate()->z;
                                                     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~  ^
1 error generated.

chenrui333 avatar Feb 17 '24 20:02 chenrui333

I am not sure this last issue has anything to do with the version of OpenSSL.

This is a problem with the geos plugin, and it looks like you are trying to use a newer version of the libgeos library than we documented to use.

From README.GeoSPARQL.md:

The proj4 and geos plugins can only be built against very specific versions of third party libraries, which may not be available on every OS distribution, so will probably need to be built by you prior to building Virtuoso.

Package Version From
proj 4.9.3 https://proj4.org
geo 3.5.1 https://www.osgeo.org/geos/

pkleef avatar Feb 19 '24 11:02 pkleef

@pkleef what is the status with openssl 3.3.1 support? It seems fine with building against openssl 3.0.x (see https://github.com/Homebrew/homebrew-core/pull/174600)

chenrui333 avatar Jun 14 '24 23:06 chenrui333

@pkleef gentle ping :)

chenrui333 avatar Jun 19 '24 20:06 chenrui333

I will have a look early next week.

pkleef avatar Jun 19 '24 20:06 pkleef

I tested the both the latest OpenSSL 3.2.x and OpenSSL 3.3.x libraries with Virtuoso Open Source and it passes building and running the testsuite, so i pushed commit a93d79d388ccf170d61244be30d40716744c75ba to develop/7

I would like to remind everyone to use one github issue per problem, so i am closing this issue. If you have additional problems building VOS then please file new issue.

pkleef avatar Jun 24 '24 13:06 pkleef