diff --git a/grib_api-1.27.0-jasper3-use-wrapper-entry-point.patch b/grib_api-1.27.0-jasper3-use-wrapper-entry-point.patch new file mode 100644 index 0000000..23a5f63 --- /dev/null +++ b/grib_api-1.27.0-jasper3-use-wrapper-entry-point.patch @@ -0,0 +1,74 @@ +diff -urp -x '*.log' -x '*~' -x .libs -x '*.o' grib_api-1.27.0-Source.old/src/grib_jasper_encoding.c grib_api-1.27.0-Source/src/grib_jasper_encoding.c +--- grib_api-1.27.0-Source.old/src/grib_jasper_encoding.c 2022-02-15 00:16:26.351324799 +0900 ++++ grib_api-1.27.0-Source/src/grib_jasper_encoding.c 2022-02-15 00:49:05.207494711 +0900 +@@ -31,14 +31,14 @@ int grib_jasper_decode(grib_context *c,u + jas_matrix_t *matrix = NULL; + jas_image_cmpt_t *p; + int i,j,k; +- ++ jas_conf_clear(); jas_conf_set_max_mem_usage(jas_get_total_mem_size()); jas_init_library(); jas_init_thread(); + jpeg = jas_stream_memopen((char*)buf,*buflen); + if(!jpeg) { + code = GRIB_DECODING_ERROR; + goto cleanup; + } + +- image = jpc_decode(jpeg,NULL); ++ image = jas_image_decode (jpeg, -1, 0); + if(!image) { + code = GRIB_DECODING_ERROR; + goto cleanup; +@@ -73,7 +73,7 @@ cleanup: + if(matrix) jas_matrix_destroy(matrix); + if(image) jas_image_destroy(image); + if(jpeg) jas_stream_close(jpeg); +- ++ jas_cleanup_thread(); jas_cleanup_library(); + return code; + } + +@@ -90,6 +90,7 @@ int grib_jasper_encode(grib_context *c, + long no_values = helper->no_values; + long bits8; + int i; ++ int fmt; + + size_t buflen = 0; + unsigned char *encoded = NULL; +@@ -150,7 +151,7 @@ int grib_jasper_encode(grib_context *c, + } + } + +- /*jas_init();*/ ++ jas_conf_clear(); jas_conf_set_max_mem_usage(jas_get_total_mem_size()); jas_init_library(); jas_init_thread(); + + opts[0] = 0; + +@@ -174,7 +175,8 @@ int grib_jasper_encode(grib_context *c, + cmpt.stream_ = istream; + + jpcstream = jas_stream_memopen((char*)helper->jpeg_buffer,helper->buffer_size); +- jaserr = jpc_encode(&image,jpcstream,opts); ++ fmt = jas_image_strtofmt("jpc"); ++ jaserr = jas_image_encode(&image, jpcstream, fmt, opts); + + if(jaserr != 0) { + /* increase the number of guard bits */ +@@ -186,7 +188,7 @@ int grib_jasper_encode(grib_context *c, + istream = jas_stream_memopen((char *)encoded,buflen); + cmpt.stream_ = istream; + jpcstream = jas_stream_memopen((char*)helper->jpeg_buffer,helper->buffer_size); +- jaserr = jpc_encode(&image,jpcstream,opts); ++ jaserr = jas_image_encode(&image, jpcstream, fmt, opts); + } + + if ( jaserr != 0 ) { +@@ -203,7 +205,7 @@ cleanup: + grib_context_free(c,encoded); + if(istream) jas_stream_close(istream); + if(jpcstream) jas_stream_close(jpcstream); +- ++ jas_cleanup_thread(); jas_cleanup_library(); + return code; + } + diff --git a/grib_api.spec b/grib_api.spec index e0b2e38..98c68e9 100644 --- a/grib_api.spec +++ b/grib_api.spec @@ -1,6 +1,6 @@ Name: grib_api Version: 1.27.0 -Release: 14%{?dist} +Release: 15%{?dist} Summary: WMO FM-92 GRIB (v1,v2) interface accessible from C and FORTRAN programs License: ASL 2.0 @@ -16,6 +16,11 @@ Patch1: grib_api-extern.patch # add support jasper-2 # https://software.ecmwf.int/issues/browse/SUP-1849 Patch2: grib_api-jasper-2.patch +# jasper3 now hides internal encoder / decoder. Use wrapper entry point +# c.f. https://github.com/jasper-software/jasper/commit/5fe57ac5829ec31396e7eaab59a688da014660af +# Also, now with jasper3, calling jas_stream_memopen (for example) always needs jasper +# library initialization +Patch3: grib_api-1.27.0-jasper3-use-wrapper-entry-point.patch BuildRequires: gcc-gfortran BuildRequires: netcdf-devel BuildRequires: jasper-devel @@ -55,6 +60,7 @@ tar xf %SOURCE1 %patch0 -p1 -b .link %patch1 -p1 -b .extern %patch2 -p1 -b .jasper2 +%patch3 -p1 -b .jasper3 # Fix rpath issues by using Fedora's libtool rm m4/libtool.m4 @@ -98,7 +104,7 @@ chmod +x %{buildroot}%{_datadir}/%{name}/definitions/installDefinitions.sh %check # ls.sh test is failing # https://software.ecmwf.int/issues/browse/SUP-521 -make check || true +make check %ldconfig_scriptlets @@ -125,6 +131,9 @@ make check || true %{_libdir}/*.a %changelog +* Mon Feb 14 2022 Mamoru TASAKA - 1.27.0-15 +- jasper3: use wrapper entry point for jpeg2000 decoder + * Sun Feb 13 2022 Josef Ridky - 1.27.0-14 - Rebuilt for libjasper.so.6