diff --git a/.gitignore b/.gitignore index e66b05a..3d7e578 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,8 @@ -/eccodes_test_data_20250202.tar.gz -/eccodes-2.40.0-Source.tar.gz -/eccodes-2.42.0-Source.tar.gz -/eccodes-2.44.0-Source.tar.gz +/eccodes-2.26.0-Source.tar.gz +/eccodes_test_data_20220526.tar.gz +/eccodes-2.30.0-Source.tar.gz +/eccodes-2.31.0-Source.tar.gz +/eccodes-2.33.0-Source.tar.gz +/eccodes_test_data_20231216.tar.gz +/eccodes-2.36.0-Source.tar.gz +/eccodes_test_data_20240217.tar.gz diff --git a/README.md b/README.md index 035f9e0..f4658ba 100644 --- a/README.md +++ b/README.md @@ -12,3 +12,18 @@ messages in the following formats: For further details see: https://confluence.ecmwf.int/display/ECC/What+is+ecCodes + +Note for end users: +epel policy is to keep software versions stable for a given epel version +unless there is a strong reason why an update is needed +(for example security issues or malfunction). + +Since eccodes depends on a large collection of table definitions +that are included in the package, after some time these tables +(holding the WMO file format definitions for GRIB and BUFR files, +which are updated every 6 months) will become outdated, and new files +using these formats can not be used. + +If this is a problem for you, please raise the issue in bugzilla. +Since this is a malfunction from user perspective this is a +reason to update the package. diff --git a/eccodes-soversion.patch b/eccodes-soversion.patch index fd4b224..5a3e406 100644 --- a/eccodes-soversion.patch +++ b/eccodes-soversion.patch @@ -1,5 +1,5 @@ ---- eccodes-2.44.0-Source.unchanged/fortran/CMakeLists.txt 2025-10-06 11:49:11.000000000 +0200 -+++ eccodes-2.44.0-Source/fortran/CMakeLists.txt 2025-11-07 11:33:03.765320420 +0100 +--- eccodes-2.35.0-Source.unchanged/fortran/CMakeLists.txt 2024-04-11 12:13:21.000000000 +0200 ++++ eccodes-2.35.0-Source/fortran/CMakeLists.txt 2024-05-04 16:18:42.732436699 +0200 @@ -46,7 +46,8 @@ if( HAVE_FORTRAN ) GENERATED grib_f90.f90 eccodes_f90.f90 PUBLIC_INCLUDES $ @@ -10,13 +10,13 @@ if( DEFINED ecbuild_VERSION AND NOT ${ecbuild_VERSION} VERSION_LESS 3.1 ) # Installed module directory is not in the PUBLIC INCLUDES! ---- eccodes-2.44.0-Source.unchanged/src/eccodes/CMakeLists.txt 2025-10-06 11:49:11.000000000 +0200 -+++ eccodes-2.44.0-Source/src/eccodes/CMakeLists.txt 2025-11-07 11:33:03.784437554 +0100 -@@ -447,6 +447,8 @@ ecbuild_add_library( TARGET eccodes +--- eccodes-2.35.0-Source.unchanged/src/CMakeLists.txt 2024-04-11 12:13:21.000000000 +0200 ++++ eccodes-2.35.0-Source/src/CMakeLists.txt 2024-05-04 16:18:42.733436675 +0200 +@@ -416,6 +416,8 @@ ecbuild_add_library( TARGET eccodes PRIVATE_LIBS ${ECCODES_EXTRA_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT} ${AEC_LIBRARIES} ${PNG_LIBRARIES} PUBLIC_LIBS ${CMATH_LIBRARIES} ${THREADS_LIBRARIES} TEMPLATES ${eccodes_extra_src_files} -+ SOVERSION ${ECCODES_SOVERSION} ++ SOVERSION ${ECCODES_SOVERSION} + INSTALL_HEADERS_LIST grib_api.h diff --git a/eccodes-thread-init-fix.patch b/eccodes-thread-init-fix.patch new file mode 100644 index 0000000..0f28ec9 --- /dev/null +++ b/eccodes-thread-init-fix.patch @@ -0,0 +1,47 @@ +--- eccodes-2.36.0-Source.unchanged/src/accessor/grib_accessor_class_bufr_elements_table.cc 2024-06-24 12:52:58.000000000 +0200 ++++ eccodes-2.36.0-Source/src/accessor/grib_accessor_class_bufr_elements_table.cc 2024-07-23 19:38:30.211681092 +0200 +@@ -1,4 +1,3 @@ +- + /* + * (C) Copyright 2005- ECMWF. + * +@@ -28,7 +27,7 @@ static void thread_init() + static int once = 0; + static omp_nest_lock_t mutex1; + +-void thread_init() ++static void thread_init() + { + GRIB_OMP_CRITICAL(lock_grib_accessor_class_bufr_elements_table_c) + { +--- eccodes-2.36.0-Source.unchanged/src/accessor/grib_accessor_class_codetable.cc 2024-06-24 12:52:58.000000000 +0200 ++++ eccodes-2.36.0-Source/src/accessor/grib_accessor_class_codetable.cc 2024-07-23 19:38:30.248680436 +0200 +@@ -20,7 +20,7 @@ grib_accessor_class* grib_accessor_class + static pthread_once_t once = PTHREAD_ONCE_INIT; + static pthread_mutex_t mutex1 = PTHREAD_MUTEX_INITIALIZER; + +-void thread_init() ++static void thread_init() + { + pthread_mutexattr_t attr; + pthread_mutexattr_init(&attr); +@@ -32,7 +32,7 @@ void thread_init() + static int once = 0; + static omp_nest_lock_t mutex1; + +-void thread_init() ++static void thread_init() + { + GRIB_OMP_CRITICAL(lock_grib_accessor_class_codetable_c) + { +--- eccodes-2.36.0-Source.unchanged/src/accessor/grib_accessor_class_smart_table.cc 2024-06-24 12:52:58.000000000 +0200 ++++ eccodes-2.36.0-Source/src/accessor/grib_accessor_class_smart_table.cc 2024-07-23 19:38:30.248680436 +0200 +@@ -30,7 +30,7 @@ static void thread_init() + static int once = 0; + static omp_nest_lock_t mutex; + +-void thread_init() ++static void thread_init() + { + GRIB_OMP_CRITICAL(lock_grib_accessor_class_smart_table_c) + { diff --git a/eccodes.rpmlintrc b/eccodes.rpmlintrc new file mode 100644 index 0000000..b6c8fb4 --- /dev/null +++ b/eccodes.rpmlintrc @@ -0,0 +1,13 @@ + +# Disable warning on duplicate files. +# This package uses a huge number (1990 cases at the time of wrinting) +# duplicates in the tables definitions, and patching this is totally +# out of scope for my limited time. +addFilter(r" W: files-duplicate ") +addFilter(r" E: files-duplicated-waste ") + +# Disable warnings on missing man pages. +# The tools that have --help output have been fixed by using help2man. +# The remaining ones have no help output whatsoever and are not easy to fix. +addFilter(r" W: no-manual-page-for-binary ") + diff --git a/eccodes.spec b/eccodes.spec index bed4797..a3120fc 100644 --- a/eccodes.spec +++ b/eccodes.spec @@ -1,10 +1,10 @@ -%if 0%{?el8} +%if 0%{?el9} %undefine __cmake_in_source_build %endif Name: eccodes -Version: 2.44.0 -Release: 2%{?dist} +Version: 2.36.0 +Release: 1%{?dist} Summary: WMO data format decoding and encoding # force the shared libraries to have these so versions @@ -14,7 +14,7 @@ Summary: WMO data format decoding and encoding # note that the test_data package provided on the ECMWF version # is unversioned, so use the download date to discriminate # between different versions. -%global datapack_date 20250202 +%global datapack_date 20240217 # latest fedora-38/rawhide grib_api version is 1.27.0-18 # but this version number is to be updated as soon as we know @@ -56,18 +56,26 @@ Source2: eccodes_create_man_pages.sh # https://jira.ecmwf.int/browse/SUP-1809 Patch1: eccodes-soversion.patch +# Add a patch to solve the multiple definition of thread_init() +# that was introduced in eccodes v2.36.0 +# This patch was provided upstream on 22-Jul-2024, see this github commit: +# https://github.com/ecmwf/eccodes/commit/809fb997282dd97058862261b1a36647f919f3b2 +Patch2: eccodes-thread-init-fix.patch + + # note that the requests to make the other issues public are filed here: # https://jira.ecmwf.int/browse/SUP-2073 # (and again, unfortunately this issue is not public) -BuildRequires: cmake3 >= 3.18 +BuildRequires: cmake3 BuildRequires: gcc-c++ BuildRequires: gcc-gfortran BuildRequires: /usr/bin/git BuildRequires: jasper-devel -BuildRequires: openjpeg2-devel >= 2.5.2 +BuildRequires: libjpeg-devel BuildRequires: libpng-devel BuildRequires: netcdf-devel +BuildRequires: openjpeg2-devel BuildRequires: libaec-devel # For tests @@ -169,74 +177,6 @@ both the official WMO tables and a number of often used local definitions by ECMWF and other meteorological centers. ##################################################### -# include a LUA scriptlet as suggested on: -# https://docs.fedoraproject.org/en-US/packaging-guidelines/Directory_Replacement/ -# to assist in replacing a directory by a symlink - -%pretrans -n eccodes-data -p - --- This should solve a problem where directories were replaced --- by symbolic links when upgrading eccodes from 2.41.0 to 2.42.0 - -problematic_dirs = { - "/usr/share/eccodes/definitions/bufr/tables/0/local/8/78/1", - "/usr/share/eccodes/definitions/bufr/tables/0/local/8/78/110", - "/usr/share/eccodes/definitions/bufr/tables/0/local/8/78/174", - "/usr/share/eccodes/definitions/bufr/tables/0/local/8/78/2", - "/usr/share/eccodes/definitions/bufr/tables/0/local/8/78/20", - "/usr/share/eccodes/definitions/bufr/tables/0/local/8/78/21", - "/usr/share/eccodes/definitions/bufr/tables/0/local/8/78/221", - "/usr/share/eccodes/definitions/bufr/tables/0/local/8/78/222", - "/usr/share/eccodes/definitions/bufr/tables/0/local/8/78/223", - "/usr/share/eccodes/definitions/bufr/tables/0/local/8/78/225", - "/usr/share/eccodes/definitions/bufr/tables/0/local/8/78/226", - "/usr/share/eccodes/definitions/bufr/tables/0/local/8/78/227", - "/usr/share/eccodes/definitions/bufr/tables/0/local/8/78/228", - "/usr/share/eccodes/definitions/bufr/tables/0/local/8/78/229", - "/usr/share/eccodes/definitions/bufr/tables/0/local/8/78/230", - "/usr/share/eccodes/definitions/bufr/tables/0/local/8/78/231", - "/usr/share/eccodes/definitions/bufr/tables/0/local/8/78/232", - "/usr/share/eccodes/definitions/bufr/tables/0/local/8/78/233", - "/usr/share/eccodes/definitions/bufr/tables/0/local/8/78/234", - "/usr/share/eccodes/definitions/bufr/tables/0/local/8/78/235", - "/usr/share/eccodes/definitions/bufr/tables/0/local/8/78/236", - "/usr/share/eccodes/definitions/bufr/tables/0/local/8/78/237", - "/usr/share/eccodes/definitions/bufr/tables/0/local/8/78/31", - "/usr/share/eccodes/definitions/bufr/tables/0/local/8/78/41", - "/usr/share/eccodes/definitions/bufr/tables/0/local/8/78/42", - "/usr/share/eccodes/definitions/bufr/tables/0/local/8/78/64", - "/usr/share/eccodes/definitions/bufr/tables/0/wmo/10", - "/usr/share/eccodes/definitions/bufr/tables/0/wmo/11", - "/usr/share/eccodes/definitions/bufr/tables/0/wmo/12", - "/usr/share/eccodes/definitions/bufr/tables/0/wmo/7", - "/usr/share/eccodes/definitions/bufr/tables/0/wmo/8", - "/usr/share/eccodes/definitions/bufr/tables/0/wmo/9"} - -for index, path in ipairs(problematic_dirs) do - print("handling path:" .. index .. ":" .. path) - st = posix.stat(path) - if st and st.type == "directory" then - status = os.rename(path, path .. ".rpmmoved") - if status then - print("renamed:" .. path .. " to " .. path .. ".rpmmoved") - end - if not status then - suffix = 0 - while not status do - suffix = suffix + 1 - status = os.rename(path .. ".rpmmoved", path .. ".rpmmoved." .. suffix) - if status then - print("renamed:" .. path .. ".rpmmoved to " .. path .. ".rpmmoved." .. suffix) - end - end - os.rename(path, path .. ".rpmmoved") - print("renamed:" .. path .. " to " .. path .. ".rpmmoved") - end - end -end - ---##################################################### - %package doc Summary: Documentation and example code BuildArch: noarch @@ -260,8 +200,6 @@ tar xf %SOURCE1 popd %build -# TODO: Please submit an issue to upstream (rhbz#2380563) -export CMAKE_POLICY_VERSION_MINIMUM=3.5 #-- The following features are disabled by default and not switched on: # @@ -381,8 +319,6 @@ sed -i 's|^libs=.*$|libs=-L${libdir} -leccodes_f90 -leccodes|g' %{buildroot}/%{_ %ldconfig_scriptlets - -##################################################### %check cd %{_vpath_builddir} @@ -403,7 +339,7 @@ ctest3 -V %{?_smp_mflags} %files %license LICENSE -%doc ChangeLog AUTHORS NEWS NOTICE +%doc README.md ChangeLog AUTHORS NEWS NOTICE %{_bindir}/* %{_libdir}/*.so.* %{_mandir}/man1/*.1* @@ -423,110 +359,14 @@ ctest3 -V %{?_smp_mflags} %{_datadir}/%{name}/definitions/ %{_datadir}/%{name}/samples/ %{_datadir}/%{name}/ifs_samples/ -%ghost %{_datadir}/%{name}/definitions/bufr/tables/0/local/8/78/1.rpmmoved -%ghost %{_datadir}/%{name}/definitions/bufr/tables/0/local/8/78/110.rpmmoved -%ghost %{_datadir}/%{name}/definitions/bufr/tables/0/local/8/78/174.rpmmoved -%ghost %{_datadir}/%{name}/definitions/bufr/tables/0/local/8/78/2.rpmmoved -%ghost %{_datadir}/%{name}/definitions/bufr/tables/0/local/8/78/20.rpmmoved -%ghost %{_datadir}/%{name}/definitions/bufr/tables/0/local/8/78/21.rpmmoved -%ghost %{_datadir}/%{name}/definitions/bufr/tables/0/local/8/78/221.rpmmoved -%ghost %{_datadir}/%{name}/definitions/bufr/tables/0/local/8/78/222.rpmmoved -%ghost %{_datadir}/%{name}/definitions/bufr/tables/0/local/8/78/223.rpmmoved -%ghost %{_datadir}/%{name}/definitions/bufr/tables/0/local/8/78/225.rpmmoved -%ghost %{_datadir}/%{name}/definitions/bufr/tables/0/local/8/78/226.rpmmoved -%ghost %{_datadir}/%{name}/definitions/bufr/tables/0/local/8/78/227.rpmmoved -%ghost %{_datadir}/%{name}/definitions/bufr/tables/0/local/8/78/228.rpmmoved -%ghost %{_datadir}/%{name}/definitions/bufr/tables/0/local/8/78/229.rpmmoved -%ghost %{_datadir}/%{name}/definitions/bufr/tables/0/local/8/78/230.rpmmoved -%ghost %{_datadir}/%{name}/definitions/bufr/tables/0/local/8/78/231.rpmmoved -%ghost %{_datadir}/%{name}/definitions/bufr/tables/0/local/8/78/232.rpmmoved -%ghost %{_datadir}/%{name}/definitions/bufr/tables/0/local/8/78/233.rpmmoved -%ghost %{_datadir}/%{name}/definitions/bufr/tables/0/local/8/78/234.rpmmoved -%ghost %{_datadir}/%{name}/definitions/bufr/tables/0/local/8/78/235.rpmmoved -%ghost %{_datadir}/%{name}/definitions/bufr/tables/0/local/8/78/236.rpmmoved -%ghost %{_datadir}/%{name}/definitions/bufr/tables/0/local/8/78/237.rpmmoved -%ghost %{_datadir}/%{name}/definitions/bufr/tables/0/local/8/78/31.rpmmoved -%ghost %{_datadir}/%{name}/definitions/bufr/tables/0/local/8/78/41.rpmmoved -%ghost %{_datadir}/%{name}/definitions/bufr/tables/0/local/8/78/42.rpmmoved -%ghost %{_datadir}/%{name}/definitions/bufr/tables/0/local/8/78/64.rpmmoved -%ghost %{_datadir}/%{name}/definitions/bufr/tables/0/wmo/10.rpmmoved -%ghost %{_datadir}/%{name}/definitions/bufr/tables/0/wmo/11.rpmmoved -%ghost %{_datadir}/%{name}/definitions/bufr/tables/0/wmo/12.rpmmoved -%ghost %{_datadir}/%{name}/definitions/bufr/tables/0/wmo/7.rpmmoved -%ghost %{_datadir}/%{name}/definitions/bufr/tables/0/wmo/8.rpmmoved -%ghost %{_datadir}/%{name}/definitions/bufr/tables/0/wmo/9.rpmmoved %files doc %doc %{_datadir}/doc/%{name}/ %changelog - -* Mon Nov 10 2025 Cristian Le - 2.44.0-2 -- Allow to build with CMake 4.0 (rhbz#2380563) - -* Fri Nov 07 2025 Jos de Kloe - 2.44.0-1 -- Update to 2.44.0 - -* Fri Aug 22 2025 Orion Poplawski - 2.42.0-6 -- Rebuild for netcdf 4.9.3 soname bump - -* Mon Aug 11 2025 Jos de Kloe - 2.42.0-5 -- Forgot to update the changelog date for the previous commit, so fixed this - with this update. -- Also fix a typo in the ghost definitions. - -* Mon Aug 11 2025 Jos de Kloe - 2.42.0-4 -- Add a LUA script in a pretrans section to assist in replacing a directory - by a symlink (this removes the need for the python script added in - the previous commit) - -* Wed Jul 30 2025 Jos de Kloe - 2.42.0-3 -- Add calling a little python script in the install stage to revert - the (upstream) replacing of directories by a symlinks - which causes upgrade problems with rpm for the data package. - -* Wed Jul 23 2025 Fedora Release Engineering - 2.42.0-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild - -* Sat Jul 19 2025 Jos de Kloe - 2.42.0-1 -- Update to 2.42.0 (2.41.0 was skipped due to an upstream build bug) - -* Sat Mar 22 2025 Jos de Kloe - 2.40.0-1 -- Update to 2.40.0 - -* Sun Feb 02 2025 Jos de Kloe - 2.39.0-1 -- Update to 2.39.0 - -* Thu Jan 16 2025 Fedora Release Engineering - 2.38.3-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild - -* Sun Oct 20 2024 Jos de Kloe - 2.38.3-1 -- Update to 2.38.3 - -* Sun Sep 29 2024 Jos de Kloe - 2.38.0-1 -- Update to 2.38.0 - -* Wed Jul 24 2024 Jos de Kloe - 2.36.0-1 +* Sun Sep 01 2024 Jos de Kloe - 2.36.0-1 - Update to 2.36.0 -* Wed Jul 17 2024 Fedora Release Engineering - 2.35.0-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild - -* Sat May 04 2024 Jos de Kloe - 2.35.0-1 -- Update to 2.35.0 - -* Mon Mar 04 2024 Jos de Kloe - 2.34.1-2 -- Require openjpeg2-devel >= 2.5.2 (needed to build for f40) - -* Tue Feb 27 2024 Jos de Kloe - 2.34.1-1 -- Update to 2.34.1 - -* Wed Jan 24 2024 Fedora Release Engineering - 2.33.0-3 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild - -* Fri Jan 19 2024 Fedora Release Engineering - 2.33.0-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild - * Sun Dec 17 2023 Orion Poplawski - 2.33.0-1 - Update to 2.33.0 diff --git a/sources b/sources index 4dc5dc6..bf89350 100644 --- a/sources +++ b/sources @@ -1,4 +1,7 @@ -SHA512 (eccodes_test_data_20250202.tar.gz) = 8b4c7159dd7ed0e1e69068ec7dcabe94064f0d2abf9eac4fca2a9c730d500999e8edf1e7eeebba6fb12ae99b223c1b0843e31414538333c52f2508cb2d410151 -SHA512 (eccodes-2.40.0-Source.tar.gz) = 39b09da398a864888f1b7da867adae63da9e512a865807c1dd0f4b76e242c46d6ec75f7db3a554c01c4fb60dd9677cd8b77bc03dac89931cbdf461c607b100c8 -SHA512 (eccodes-2.42.0-Source.tar.gz) = 205246b250762ab6e7ac3050726ac5ce67ab689c8c393b153e7c084fb71edc40d64ee04e2fb32b3ad2a1426e65581126c0c8288e9088c27a7468f6b534f29b58 -SHA512 (eccodes-2.44.0-Source.tar.gz) = 63f81db07103ab3c6c0497ca3d0bae5b8a0841ed83a2b88831ddce756489a84aa394af7673c1438e2ea7a55107970cf87b8222da31321ef70ecc55cc99a3ddf5 +SHA512 (eccodes_test_data_20220526.tar.gz) = 0457878caad6a3395daf60e27cfb72121526065b0cf4da144c7499b8d38bebae0952ddbd20ef0eb53fad77ada60160039340da01001f19fbb7fb1ccbb3d0547a +SHA512 (eccodes-2.30.0-Source.tar.gz) = 07b67cef67cefb32ad4581813ed8814f9394d27846c8bc41b78b1504d296f84547d1fb72ce4813f214fe09b9391449995dd53cf9ae7d27721e2b34353ee58b00 +SHA512 (eccodes-2.31.0-Source.tar.gz) = f3fe70ad0a765ae6e9d23b1b0c6ac96ad81a8324b15b7ebbcc958ffa1a046079d4a9953d720a8c15ac421897059a74c96ea678254f59c88538e3dd4970da131c +SHA512 (eccodes-2.33.0-Source.tar.gz) = 4afc2a9e59da54093eb318a1447904faac7371df980a57ce21e04ef98d1d7e02f10ef363a497d29f086b1f17a86ba4e46bf14898cd227eae8bbe0297c62b4183 +SHA512 (eccodes_test_data_20231216.tar.gz) = 86767a308841849c7ece006e9f6c68123dc07d8640b038e25529b91ab495d3f10ad5356e9100ef238de6756c67917be13a676f4ab0708fb381021c746e00183e +SHA512 (eccodes-2.36.0-Source.tar.gz) = c18df75593af6461dfa64d717ec5a6af9492bc5a851b87f13ca759343abfbf21ec6e3e5978654f95641e86429b9b105bceb9414f8d925275d2a1b305441905d0 +SHA512 (eccodes_test_data_20240217.tar.gz) = c495a71f18ea01aa480b0920fbfce8d370574d412c95eb04823d0d4544fed0e2dba8e98d63e2be0a3c33a127840e7262d391373fab9304a773e9764457ade5a7