summarylogtreecommitdiffstats
diff options
context:
space:
mode:
authorRomain Bazile2022-10-03 17:33:52 +0200
committerRomain Bazile2022-10-03 17:34:40 +0200
commitd8fada3ae88c76f896d13756f77d13bec0f16478 (patch)
tree5bb105c724ff5ca3e3a573acc3dff645e28141b4
parent4dd8a6e890fbbb9e9138ca7b3aed46edbade3b9a (diff)
parent2f2ee218c3aafc00ecd746ec41535b8dc38f28a4 (diff)
downloadaur-d8fada3ae88c76f896d13756f77d13bec0f16478.tar.gz
Merge compatibility changes with Proj8 and openjpeg-2.5
-rw-r--r--.SRCINFO7
-rw-r--r--CMakelists.txt.patch2
-rw-r--r--PKGBUILD18
-rw-r--r--proj8.patch318
4 files changed, 335 insertions, 10 deletions
diff --git a/.SRCINFO b/.SRCINFO
index 5e01bc00f88a..1c5ccdd99b52 100644
--- a/.SRCINFO
+++ b/.SRCINFO
@@ -1,7 +1,7 @@
pkgbase = xygrib
pkgdesc = Grib reader and weather visualization software. Zygrib fork.
pkgver = 1.2.6.1
- pkgrel = 3
+ pkgrel = 4
url = https://opengribs.org/
arch = x86_64
arch = aarch64
@@ -21,10 +21,11 @@ pkgbase = xygrib
source = xygrib.install
source = skewt.patch
source = CMakelists.txt.patch
+ source = proj8.patch
sha1sums = 8e3431ed6a5ef114d77ac57029129a26a381f696
sha1sums = 97eec7e40bd2d4f44986ffbf5096ac4ba37ebbfe
sha1sums = 1fa4cf6b72863c9f33a80946d9f4afe7f855df6a
- sha1sums = 9fc7839f3fa38b7855ee5a165f7148162aba39bf
+ sha1sums = 56b94f60f4131c8865cd25f22b90472ba21f206e
+ sha1sums = 1af59e1fe5e07eb7cc1a3f9a52b3989a92bfd8e7
pkgname = xygrib
-
diff --git a/CMakelists.txt.patch b/CMakelists.txt.patch
index 00812061162d..3be519b755bb 100644
--- a/CMakelists.txt.patch
+++ b/CMakelists.txt.patch
@@ -17,7 +17,7 @@ index b066a04..0e286f2 100644
/opt/local/include # DarwinPorts
/opt/csw/include # Blastwave
/opt/include
-+ PATH_SUFFIXES openjpeg-2.4 openjpeg-2.3 openjpeg-2.2 openjpeg-2.1
++ PATH_SUFFIXES openjpeg-2.5
REQUIRED
)
include_directories(${OPENJPEG_INCLUDE_DIR})
diff --git a/PKGBUILD b/PKGBUILD
index b57715a43478..3c689975a06d 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -1,10 +1,11 @@
# ---------------------------------------------------------------
# Maintainer: Romain Bazile <gromain.baz@gmail.com>
+# Co-Maintainer: François Guerraz <kubrick@fgv6.net>
# ---------------------------------------------------------------
pkgname=xygrib
pkgver=1.2.6.1
-pkgrel=3
+pkgrel=4
pkgdesc="Grib reader and weather visualization software. Zygrib fork."
arch=('x86_64' 'aarch64')
license=("GPL3")
@@ -13,21 +14,26 @@ conflicts=('xygrib-git')
depends=('libnova' 'qwt' 'proj' 'qt5-base' 'openjpeg2')
makedepends=('cmake' 'zlib' 'bzip2' 'libpng')
url="https://opengribs.org/"
-source=("https://github.com/opengribs/XyGrib/archive/v$pkgver.tar.gz" "xygrib.install" "skewt.patch" "CMakelists.txt.patch")
+source=("https://github.com/opengribs/XyGrib/archive/v$pkgver.tar.gz" "xygrib.install" "skewt.patch" "CMakelists.txt.patch" "proj8.patch")
sha1sums=('8e3431ed6a5ef114d77ac57029129a26a381f696'
'97eec7e40bd2d4f44986ffbf5096ac4ba37ebbfe'
'1fa4cf6b72863c9f33a80946d9f4afe7f855df6a'
- '9fc7839f3fa38b7855ee5a165f7148162aba39bf')
+ '56b94f60f4131c8865cd25f22b90472ba21f206e'
+ '1af59e1fe5e07eb7cc1a3f9a52b3989a92bfd8e7')
-
-build() {
+prepare() {
cd $srcdir/XyGrib-$pkgver
patch --strip=1 -i $srcdir/skewt.patch
patch --strip=1 -i $srcdir/CMakelists.txt.patch
+ patch --strip=1 -i $srcdir/proj8.patch
+}
+
+build() {
+ cd $srcdir/XyGrib-$pkgver
mkdir -p build
cd build
cmake ../
- make
+ make -j $(nproc)
}
package() {
diff --git a/proj8.patch b/proj8.patch
new file mode 100644
index 000000000000..83f3e6759e3f
--- /dev/null
+++ b/proj8.patch
@@ -0,0 +1,318 @@
+From 3b3fccf8ccee31d7427a800af7e4aef8e4c6ecf0 Mon Sep 17 00:00:00 2001
+From: Fyleo <fyleo45@gmail.com>
+Date: Tue, 7 Sep 2021 18:10:39 +0200
+Subject: [PATCH] port to PROJ 8.0 API
+
+---
+ CMakeLists.txt | 14 +++----
+ cmake/FindPROJ4.cmake | 77 ----------------------------------
+ cmake/FindPROJ8.cmake | 76 +++++++++++++++++++++++++++++++++
+ src/CMakeLists.txt | 2 +-
+ src/map/Projection.h | 7 +---
+ src/map/Projection_libproj.cpp | 30 ++++++-------
+ 6 files changed, 101 insertions(+), 105 deletions(-)
+ delete mode 100644 cmake/FindPROJ4.cmake
+ create mode 100644 cmake/FindPROJ8.cmake
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index b066a044..77633a21 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -122,22 +122,22 @@ find_path(OPENJPEG_INCLUDE_DIR
+ include_directories(${OPENJPEG_INCLUDE_DIR})
+
+ if(NOT WIN32)
+- include(cmake/FindPROJ4.cmake)
+- if(NOT PROJ4_FOUND)
+- message(FATAL_ERROR "PROJ.4 library not found!")
++ include(cmake/FindPROJ8.cmake)
++ if(NOT PROJ8_FOUND)
++ message(FATAL_ERROR "PROJ.8 library not found!")
+ endif()
+- include_directories(${PROJ4_INCLUDE_DIRS})
++ include_directories(${PROJ8_INCLUDE_DIRS})
+ endif()
+ if(WIN32)
+- find_library(PROJ4_LIBRARIES
++ find_library(PROJ8_LIBRARIES
+ NAME "libproj.a"
+ PATHS
+ $ENV{EXTERNLIBS}/lib
+ /opt/lib
+ REQUIRED
+ )
+- find_path(PROJ4_INCLUDE_DIRS
+- NAMES "proj_api.h"
++ find_path(PROJ8_INCLUDE_DIRS
++ NAMES "proj.h"
+ PATHS
+ $ENV{EXTERNLIBS}/include
+ /opt/include
+diff --git a/cmake/FindPROJ4.cmake b/cmake/FindPROJ4.cmake
+deleted file mode 100644
+index f5dc26f4..00000000
+--- a/cmake/FindPROJ4.cmake
++++ /dev/null
+@@ -1,76 +0,0 @@
+-# - Find PROJ4
+-# Find the PROJ4 includes and library
+-#
+-# PROJ4_INCLUDE_DIR - Where to find PROJ4 includes
+-# PROJ4_LIBRARIES - List of libraries when using PROJ4
+-# PROJ4_FOUND - True if PROJ4 was found
+-
+-IF(PROJ4_INCLUDE_DIR)
+- SET(PROJ4_FIND_QUIETLY TRUE)
+-ENDIF(PROJ4_INCLUDE_DIR)
+-
+-FIND_PATH(PROJ4_INCLUDE_DIR "proj_api.h"
+- PATHS
+- $ENV{EXTERNLIBS}/include
+- $ENV{EXTERNLIBS}/proj4/include
+- ~/Library/Frameworks/include
+- /Library/Frameworks/include
+- /usr/local/include
+- /usr/include
+- /sw/include # Fink
+- /opt/local/include # DarwinPorts
+- /opt/csw/include # Blastwave
+- /opt/include
+- DOC "PROJ4 - Headers"
+-)
+-
+-SET(PROJ4_NAMES Proj4 proj proj_4_9)
+-SET(PROJ4_DBG_NAMES Proj4D projD proj_4_9_D)
+-
+-FIND_LIBRARY(PROJ4_LIBRARY NAMES ${PROJ4_NAMES}
+- PATHS
+- $ENV{EXTERNLIBS}
+- $ENV{EXTERNLIBS}/proj4
+- ~/Library/Frameworks
+- /Library/Frameworks
+- /usr/local
+- /usr
+- /sw
+- /opt/local
+- /opt/csw
+- /opt
+- PATH_SUFFIXES lib lib64
+- DOC "PROJ4 - Library"
+-)
+-
+-INCLUDE(FindPackageHandleStandardArgs)
+-
+-IF(MSVC)
+- # VisualStudio needs a debug version
+- FIND_LIBRARY(PROJ4_LIBRARY_DEBUG NAMES ${PROJ4_DBG_NAMES}
+- PATHS
+- $ENV{EXTERNLIBS}/proj4/lib
+- DOC "PROJ4 - Library (Debug)"
+- )
+-
+- IF(PROJ4_LIBRARY_DEBUG AND PROJ4_LIBRARY)
+- SET(PROJ4_LIBRARIES optimized ${PROJ4_LIBRARY} debug ${PROJ4_LIBRARY_DEBUG})
+- ENDIF(PROJ4_LIBRARY_DEBUG AND PROJ4_LIBRARY)
+-
+- FIND_PACKAGE_HANDLE_STANDARD_ARGS(PROJ4 DEFAULT_MSG PROJ4_LIBRARY PROJ4_LIBRARY_DEBUG PROJ4_INCLUDE_DIR)
+-
+- MARK_AS_ADVANCED(PROJ4_LIBRARY PROJ4_LIBRARY_DEBUG PROJ4_INCLUDE_DIR)
+-
+-ELSE(MSVC)
+- # rest of the world
+- SET(PROJ4_LIBRARIES ${PROJ4_LIBRARY})
+-
+- FIND_PACKAGE_HANDLE_STANDARD_ARGS(PROJ4 DEFAULT_MSG PROJ4_LIBRARY PROJ4_INCLUDE_DIR)
+-
+- MARK_AS_ADVANCED(PROJ4_LIBRARY PROJ4_INCLUDE_DIR)
+-
+-ENDIF(MSVC)
+-
+-IF(PROJ4_FOUND)
+- SET(PROJ4_INCLUDE_DIRS ${PROJ4_INCLUDE_DIR})
+-ENDIF(PROJ4_FOUND)
+diff --git a/cmake/FindPROJ8.cmake b/cmake/FindPROJ8.cmake
+new file mode 100644
+index 00000000..33470ac2
+--- /dev/null
++++ b/cmake/FindPROJ8.cmake
+@@ -0,0 +1,76 @@
++# - Find PROJ8
++# Find the PROJ8 includes and library
++#
++# PROJ8_INCLUDE_DIR - Where to find PROJ8 includes
++# PROJ8_LIBRARIES - List of libraries when using PROJ8
++# PROJ8_FOUND - True if PROJ8 was found
++
++IF(PROJ8_INCLUDE_DIR)
++ SET(PROJ8_FIND_QUIETLY TRUE)
++ENDIF(PROJ8_INCLUDE_DIR)
++
++FIND_PATH(PROJ8_INCLUDE_DIR "proj.h"
++ PATHS
++ $ENV{EXTERNLIBS}/include
++ $ENV{EXTERNLIBS}/PROJ8/include
++ ~/Library/Frameworks/include
++ /Library/Frameworks/include
++ /usr/local/include
++ /usr/include
++ /sw/include # Fink
++ /opt/local/include # DarwinPorts
++ /opt/csw/include # Blastwave
++ /opt/include
++ DOC "PROJ8 - Headers"
++)
++
++SET(PROJ8_NAMES PROJ8 proj proj_8_0)
++SET(PROJ8_DBG_NAMES PROJ8D projD proj_8_0_1)
++
++FIND_LIBRARY(PROJ8_LIBRARY NAMES ${PROJ8_NAMES}
++ PATHS
++ $ENV{EXTERNLIBS}
++ $ENV{EXTERNLIBS}/PROJ8
++ ~/Library/Frameworks
++ /Library/Frameworks
++ /usr/local
++ /usr
++ /sw
++ /opt/local
++ /opt/csw
++ /opt
++ PATH_SUFFIXES lib lib64
++ DOC "PROJ8 - Library"
++)
++
++INCLUDE(FindPackageHandleStandardArgs)
++
++IF(MSVC)
++ # VisualStudio needs a debug version
++ FIND_LIBRARY(PROJ8_LIBRARY_DEBUG NAMES ${PROJ8_DBG_NAMES}
++ PATHS
++ $ENV{EXTERNLIBS}/PROJ8/lib
++ DOC "PROJ8 - Library (Debug)"
++ )
++
++ IF(PROJ8_LIBRARY_DEBUG AND PROJ8_LIBRARY)
++ SET(PROJ8_LIBRARIES optimized ${PROJ8_LIBRARY} debug ${PROJ8_LIBRARY_DEBUG})
++ ENDIF(PROJ8_LIBRARY_DEBUG AND PROJ8_LIBRARY)
++
++ FIND_PACKAGE_HANDLE_STANDARD_ARGS(PROJ8 DEFAULT_MSG PROJ8_LIBRARY PROJ8_LIBRARY_DEBUG PROJ8_INCLUDE_DIR)
++
++ MARK_AS_ADVANCED(PROJ8_LIBRARY PROJ8_LIBRARY_DEBUG PROJ8_INCLUDE_DIR)
++
++ELSE(MSVC)
++ # rest of the world
++ SET(PROJ8_LIBRARIES ${PROJ8_LIBRARY})
++
++ FIND_PACKAGE_HANDLE_STANDARD_ARGS(PROJ8 DEFAULT_MSG PROJ8_LIBRARY PROJ8_INCLUDE_DIR)
++
++ MARK_AS_ADVANCED(PROJ8_LIBRARY PROJ8_INCLUDE_DIR)
++
++ENDIF(MSVC)
++
++IF(PROJ8_FOUND)
++ SET(PROJ8_INCLUDE_DIRS ${PROJ8_INCLUDE_DIR})
++ENDIF(PROJ8_FOUND)
+diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
+index 2e5dbde4..9c96d49f 100644
+--- a/src/CMakeLists.txt
++++ b/src/CMakeLists.txt
+@@ -118,7 +118,7 @@ include_directories(${CMAKE_CURRENT_SOURCE_DIR}/util)
+ include_directories(${CMAKE_CURRENT_SOURCE_DIR}/map ${MAP_GENERATED_HEADERS})
+ include_directories(${CMAKE_CURRENT_SOURCE_DIR}/GUI ${GUI_GENERATED_HEADERS})
+
+-target_link_libraries(${CMAKE_PROJECT_NAME} g2clib gui util map ${LIBNOVA_LIBRARY} ${OPENJPEG_LIBRARIES} ${Qt5Core_LIBRARIES} ${Qt5Gui_LIBRARIES} ${Qt5Widgets_LIBRARIES} ${Qt5Network_LIBRARIES} ${Qt5Xml_LIBRARIES} ${Qt5PrintSupport_LIBRARIES} ${BZIP2_LIBRARIES} ${ZLIB_LIBRARIES} ${PROJ4_LIBRARIES} ${PNG_LIBRARIES})
++target_link_libraries(${CMAKE_PROJECT_NAME} g2clib gui util map ${LIBNOVA_LIBRARY} ${OPENJPEG_LIBRARIES} ${Qt5Core_LIBRARIES} ${Qt5Gui_LIBRARIES} ${Qt5Widgets_LIBRARIES} ${Qt5Network_LIBRARIES} ${Qt5Xml_LIBRARIES} ${Qt5PrintSupport_LIBRARIES} ${BZIP2_LIBRARIES} ${ZLIB_LIBRARIES} ${PROJ8_LIBRARIES} ${PNG_LIBRARIES})
+
+ # Sanitizers, part 2/2
+ if ( CMAKE_VERSION VERSION_GREATER 3.4 )
+diff --git a/src/map/Projection.h b/src/map/Projection.h
+index b4ca7f5b..d482e0dd 100644
+--- a/src/map/Projection.h
++++ b/src/map/Projection.h
+@@ -21,10 +21,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
+ #include <QObject>
+ #include <cstdio>
+
+-#ifndef ACCEPT_USE_OF_DEPRECATED_PROJ_API_H
+-#define ACCEPT_USE_OF_DEPRECATED_PROJ_API_H
+-#endif
+-#include "proj_api.h"
++#include "proj.h"
+
+ class Projection : public QObject
+ {
+@@ -141,7 +138,7 @@ class Projection_libproj : public Projection
+ int getProjection() {return currentProj;}
+
+ private :
+- projPJ libProj;
++ PJ * libProj;
+ int currentProj;
+ };
+
+diff --git a/src/map/Projection_libproj.cpp b/src/map/Projection_libproj.cpp
+index 1dcbd540..0299714e 100644
+--- a/src/map/Projection_libproj.cpp
++++ b/src/map/Projection_libproj.cpp
+@@ -93,9 +93,9 @@ void Projection_libproj::setProjection(int code)
+ params[nbpar++] = "no_defs";
+ params[nbpar++] = "over"; // allow longitude > 180°
+ // XXX ouch pj_init
+- libProj = pj_init(nbpar, (char **)params);
++ libProj = proj_create_argv(PJ_DEFAULT_CTX, nbpar, (char **)params);
+ if (!libProj)
+- printf("proj error: %s\n", pj_strerrno(pj_errno));
++ printf("proj error: %s\n", proj_errno_string(proj_errno(libProj)));
+ assert(libProj);
+ currentProj = code;
+ // libProj->over = 1; // allow longitude > 180°
+@@ -106,23 +106,23 @@ void Projection_libproj::setProjection(int code)
+ Projection_libproj::~Projection_libproj()
+ {
+ if (libProj != nullptr) {
+- pj_free(libProj);
++ proj_destroy(libProj);
+ }
+ }
+
+ //-------------------------------------------------------------------------------
+ void Projection_libproj::map2screen(double x, double y, int *i, int *j) const
+ {
+- projUV data, res;
++ PJ_COORD data, res;
+ if (y <= -90.0)
+ y = -90.0+1e-5;
+ if (y >= 90.0)
+ y = 90.0-1e-5;
+- data.v = y * DEG_TO_RAD;
+- data.u = x * DEG_TO_RAD;
+- res = pj_fwd(data, libProj);
+- *i = (int) (W/2.0 + scale * (res.u/111319.0-CX) + 0.5);
+- *j = (int) (H/2.0 - scale * (res.v/111319.0-CY) + 0.5);
++ data.uv.v = y;
++ data.uv.u = x;
++ res = proj_trans(libProj, PJ_FWD, data);
++ *i = (int) (W/2.0 + scale * (res.uv.u/111319.0-CX) + 0.5);
++ *j = (int) (H/2.0 - scale * (res.uv.v/111319.0-CY) + 0.5);
+ //printf("PROJ map2screen (%f %f) -> (%3d %3d)\n", x,y, *i,*j);
+ }
+
+@@ -130,12 +130,12 @@ void Projection_libproj::map2screen(double x, double y, int *i, int *j) const
+ //-------------------------------------------------------------------------------
+ void Projection_libproj::screen2map(int i, int j, double *x, double *y) const
+ {
+- projUV data, res;
+- data.u = ((i-W/2.0)/scale+ CX)*111319.0 ;
+- data.v = ((H/2.0-j)/scale+ CY)*111319.0 ;
+- res = pj_inv(data, libProj);
+- *x = (double)(res.u*RAD_TO_DEG);
+- *y = (double)(res.v*RAD_TO_DEG);
++ PJ_COORD data, res;
++ data.uv.u = ((i-W/2.0)/scale+ CX)*111319.0 ;
++ data.uv.v = ((H/2.0-j)/scale+ CY)*111319.0 ;
++ res = proj_trans(libProj, PJ_INV, data);
++ *x = (double)(res.uv.u);
++ *y = (double)(res.uv.v);
+ //printf("PROJ screen2map (%3d %3d) -> (%f %f)\n", i,j, *x,*y);
+ }
+ //--------------------------------------------------------------