diff options
author | François Guerraz | 2022-09-29 08:20:19 +0100 |
---|---|---|
committer | François Guerraz | 2022-09-29 08:21:24 +0100 |
commit | 2f2ee218c3aafc00ecd746ec41535b8dc38f28a4 (patch) | |
tree | 5bb105c724ff5ca3e3a573acc3dff645e28141b4 | |
parent | 4dd8a6e890fbbb9e9138ca7b3aed46edbade3b9a (diff) | |
download | aur-2f2ee218c3aafc00ecd746ec41535b8dc38f28a4.tar.gz |
Make aur package work with Proj 8 and openjpeg-2.5
-rw-r--r-- | .SRCINFO | 7 | ||||
-rw-r--r-- | CMakelists.txt.patch | 2 | ||||
-rw-r--r-- | PKGBUILD | 18 | ||||
-rw-r--r-- | proj8.patch | 318 |
4 files changed, 335 insertions, 10 deletions
@@ -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}) @@ -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); + } + //-------------------------------------------------------------- |