Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 25 Dec 2023 16:16:20 GMT
From:      Po-Chuan Hsieh <sunpoet@FreeBSD.org>
To:        ports-committers@FreeBSD.org, dev-commits-ports-all@FreeBSD.org, dev-commits-ports-main@FreeBSD.org
Subject:   git: 0527a0833f5e - main - graphics/gdal-grass: Use GetGDALDriverManager to register driver
Message-ID:  <202312251616.3BPGGK36009834@gitrepo.freebsd.org>

next in thread | raw e-mail | index | archive | help
The branch main has been updated by sunpoet:

URL: https://cgit.FreeBSD.org/ports/commit/?id=0527a0833f5ec294bcd202fb31fc5e608bcca4ba

commit 0527a0833f5ec294bcd202fb31fc5e608bcca4ba
Author:     Po-Chuan Hsieh <sunpoet@FreeBSD.org>
AuthorDate: 2023-12-25 16:02:59 +0000
Commit:     Po-Chuan Hsieh <sunpoet@FreeBSD.org>
CommitDate: 2023-12-25 16:10:50 +0000

    graphics/gdal-grass: Use GetGDALDriverManager to register driver
    
    - Bump PORTREVISION for package change
    
    Obtained from:  https://github.com/OSGeo/gdal-grass/commit/1f6a624e38a58cac80d754ae96131b5ee641bfda
                    https://github.com/OSGeo/gdal-grass/commit/da141597b6d6cb9c230749ba07885c4f06e232cd
---
 graphics/gdal-grass/Makefile                       |   2 +-
 .../gdal-grass/files/patch-GetGDALDriverManager    | 197 +++++++++++++++++++++
 2 files changed, 198 insertions(+), 1 deletion(-)

diff --git a/graphics/gdal-grass/Makefile b/graphics/gdal-grass/Makefile
index ba652ea317a4..df91ee895fb0 100644
--- a/graphics/gdal-grass/Makefile
+++ b/graphics/gdal-grass/Makefile
@@ -1,6 +1,6 @@
 PORTNAME=	gdal-grass
 PORTVERSION=	1.0.2
-PORTREVISION=	3
+PORTREVISION=	4
 PORTEPOCH=	1
 CATEGORIES=	graphics
 
diff --git a/graphics/gdal-grass/files/patch-GetGDALDriverManager b/graphics/gdal-grass/files/patch-GetGDALDriverManager
new file mode 100644
index 000000000000..5674a39189a4
--- /dev/null
+++ b/graphics/gdal-grass/files/patch-GetGDALDriverManager
@@ -0,0 +1,197 @@
+Obtained from:	https://github.com/OSGeo/gdal-grass/commit/1f6a624e38a58cac80d754ae96131b5ee641bfda
+		https://github.com/OSGeo/gdal-grass/commit/da141597b6d6cb9c230749ba07885c4f06e232cd
+
+--- ogrgrass.h.orig	2022-11-06 10:42:02 UTC
++++ ogrgrass.h
+@@ -127,8 +127,8 @@ class OGRGRASSDataSource final: public OGRDataSource
+                         OGRGRASSDataSource();
+                         virtual ~OGRGRASSDataSource();
+ 
+-    int                 Open( const char *, int bUpdate, int bTestOpen,
+-                              int bSingleNewFile = FALSE );
++    bool                Open( const char *, bool bUpdate, bool bTestOpen,
++                              bool bSingleNewFile = false );
+ 
+     const char          *GetName() override { return pszName; }
+     int                 GetLayerCount() override { return nLayers; }
+@@ -147,23 +147,9 @@ class OGRGRASSDataSource final: public OGRDataSource
+     struct Map_info     map;
+     int                 nLayers;
+ 
+-    int                 bOpened;
++    bool                bOpened;
+ 
+     static bool SplitPath ( char *, char **, char **, char **, char ** );
+-};
+-
+-/************************************************************************/
+-/*                            OGRGRASSDriver                            */
+-/************************************************************************/
+-class OGRGRASSDriver final: public OGRSFDriver
+-{
+-  public:
+-                        virtual ~OGRGRASSDriver();
+-
+-    const char          *GetName() override;
+-    OGRDataSource       *Open( const char *, int ) override;
+-
+-    int                 TestCapability( const char * ) override;
+ };
+ 
+ #endif /* ndef OGRGRASS_H_INCLUDED */
+--- ogrgrassdatasource.cpp.orig	2022-11-06 10:42:02 UTC
++++ ogrgrassdatasource.cpp
+@@ -87,8 +87,8 @@ OGRGRASSDataSource::~OGRGRASSDataSource()
+ 
+ typedef int (*GrassErrorHandler)(const char *, int);
+ 
+-int OGRGRASSDataSource::Open( const char * pszNewName, int /*bUpdate*/,
+-                              int bTestOpen, int /*bSingleNewFileIn*/ )
++bool OGRGRASSDataSource::Open( const char * pszNewName, bool /*bUpdate*/,
++                               bool bTestOpen, bool /*bSingleNewFileIn*/ )
+ {
+     VSIStatBuf  stat;
+ 
+@@ -99,14 +99,14 @@ int OGRGRASSDataSource::Open( const char * pszNewName,
+ /* -------------------------------------------------------------------- */
+ /*      Do the given path contains 'vector' and 'head'?                 */
+ /* -------------------------------------------------------------------- */
+-    if ( strstr(pszName,"vector") == NULL || strstr(pszName,"head") == NULL )
++    if ( strstr(pszName,"vector") == nullptr || strstr(pszName,"head") == nullptr )
+     {
+         if( !bTestOpen )
+         {
+             CPLError( CE_Failure, CPLE_AppDefined,
+                  "%s is not GRASS vector, access failed.\n", pszName );
+         }
+-        return FALSE;
++        return false;
+     }
+ 
+ /* -------------------------------------------------------------------- */
+@@ -120,7 +120,7 @@ int OGRGRASSDataSource::Open( const char * pszNewName,
+                  "%s is not GRASS vector, access failed.\n", pszName );
+         }
+ 
+-        return FALSE;
++        return false;
+     }
+ 
+ /* -------------------------------------------------------------------- */
+@@ -135,7 +135,7 @@ int OGRGRASSDataSource::Open( const char * pszNewName,
+                       "%s is not GRASS datasource name, access failed.\n",
+                       pszName );
+         }
+-        return FALSE;
++        return false;
+     }
+ 
+     CPLDebug ( "GRASS", "Gisdbase: %s", pszGisdbase );
+@@ -149,7 +149,7 @@ int OGRGRASSDataSource::Open( const char * pszNewName,
+     // GISBASE is path to the directory where GRASS is installed,
+     // it is necessary because there are database drivers.
+     if ( !getenv( "GISBASE" ) ) {
+-        static char* gisbaseEnv = NULL;
++        static char* gisbaseEnv = nullptr;
+         const char *gisbase = GRASS_GISBASE;
+         CPLError( CE_Warning, CPLE_AppDefined, "GRASS warning: GISBASE "
+                 "environment variable was not set, using:\n%s", gisbase );
+@@ -191,7 +191,7 @@ int OGRGRASSDataSource::Open( const char * pszNewName,
+     if ( level < 2 ) {
+         CPLError( CE_Failure, CPLE_AppDefined,
+                  "Cannot open GRASS vector %s on level 2.\n", pszName );
+-        return FALSE;
++        return false;
+     }
+ 
+     CPLDebug ( "GRASS", "Num lines = %d", Vect_get_num_lines(&map) );
+@@ -212,9 +212,9 @@ int OGRGRASSDataSource::Open( const char * pszNewName,
+         papoLayers[nLayers++] = poLayer;
+     }
+ 
+-    bOpened = TRUE;
++    bOpened = true;
+ 
+-    return TRUE;
++    return true;
+ }
+ 
+ /************************************************************************/
+--- ogrgrassdriver.cpp.orig	2022-11-06 10:42:02 UTC
++++ ogrgrassdriver.cpp
+@@ -37,32 +37,18 @@ extern "C" {
+ CPL_CVSID("$Id$")
+ 
+ /************************************************************************/
+-/*                          ~OGRGRASSDriver()                           */
+-/************************************************************************/
+-OGRGRASSDriver::~OGRGRASSDriver()
+-{
+-}
+-
+-/************************************************************************/
+-/*                              GetName()                               */
+-/************************************************************************/
+-const char *OGRGRASSDriver::GetName()
+-{
+-    return "OGR_GRASS";
+-}
+-
+-/************************************************************************/
+ /*                                Open()                                */
+ /************************************************************************/
+-OGRDataSource *OGRGRASSDriver::Open( const char * pszFilename,
+-                                     int bUpdate )
++static auto GRASSDatasetOpen(GDALOpenInfo *poOpenInfo) -> GDALDataset*
+ {
+-    OGRGRASSDataSource  *poDS = new OGRGRASSDataSource();
++    auto *poDS = new OGRGRASSDataSource();
+ 
+-    if( !poDS->Open( pszFilename, bUpdate, TRUE ) )
++    bool bUpdate = poOpenInfo->eAccess == GA_Update;
++
++    if( !poDS->Open( poOpenInfo->pszFilename, bUpdate, true ))
+     {
+         delete poDS;
+-        return NULL;
++        return nullptr;
+     }
+     else
+     {
+@@ -71,14 +57,6 @@ OGRDataSource *OGRGRASSDriver::Open( const char * pszF
+ }
+ 
+ /************************************************************************/
+-/*                           TestCapability()                           */
+-/************************************************************************/
+-int OGRGRASSDriver::TestCapability( const char * /*pszCap*/ )
+-{
+-    return FALSE;
+-}
+-
+-/************************************************************************/
+ /*                          RegisterOGRGRASS()                          */
+ /************************************************************************/
+ void RegisterOGRGRASS()
+@@ -86,15 +64,17 @@ void RegisterOGRGRASS()
+     if (! GDAL_CHECK_VERSION("OGR/GRASS driver"))
+         return;
+ 
+-    if( GDALGetDriverByName( "OGR_GRASS" ) != NULL )
++    if( GDALGetDriverByName( "OGR_GRASS" ) != nullptr )
+         return;
+ 
+-    OGRGRASSDriver *poDriver = new OGRGRASSDriver();
++    auto *poDriver = new GDALDriver();
+ 
+-    poDriver->SetDescription( "GRASS" );
++    poDriver->SetDescription( "OGR_GRASS" );
+     poDriver->SetMetadataItem( GDAL_DCAP_VECTOR, "YES" );
+     poDriver->SetMetadataItem( GDAL_DMD_LONGNAME, "GRASS Vectors (5.7+)" );
+     poDriver->SetMetadataItem( GDAL_DMD_HELPTOPIC, "drivers/vector/grass.html" );
+ 
+-    OGRSFDriverRegistrar::GetRegistrar()->RegisterDriver( poDriver );
++    poDriver->pfnOpen = GRASSDatasetOpen;
++
++    GetGDALDriverManager()->RegisterDriver(poDriver);
+ }



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202312251616.3BPGGK36009834>