From d6081f52073bc4faeed1d688703397ef1ab09fb6 Mon Sep 17 00:00:00 2001 From: Ryan Mulhall <35538242+rem1776@users.noreply.github.com> Date: Thu, 23 Dec 2021 12:55:40 -0500 Subject: [PATCH] Update changelog, version numbers and build info (#873) Co-authored-by: rem1776 --- CHANGELOG.md | 33 ++++++++++++++++++++++++++++++++- CMAKE_INSTRUCTIONS.md | 5 +++++ CMakeLists.txt | 2 +- INSTALL.md | 6 +++++- README.md | 14 ++++++++++++++ configure.ac | 2 +- libFMS/BUILD_SYSTEM.md | 7 +++++-- libFMS/Makefile.am | 2 +- 8 files changed, 64 insertions(+), 7 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1c6c906899..58d93d3958 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,34 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0), and this project uses `yyyy.rr[.pp]`, where `yyyy` is the year a patch is released, `rr` is a sequential release number (starting from `01`), and an optional two-digit sequential patch number (starting from `01`). +## [2021.04] - 2021-12-23 +### Known Issues +- GCC 11.1.0 is unsupported due to compilation issues with `select type`. The issue appears to be resolved in later GCC releases +### Added +- PARSER: Adds a parser using the libyaml C library to support yaml format input files. + Currently implemented in data override and can be enabled with the configure option `--with-yaml` or with CMake option `-DWITH_YAML` +- FMS: Adds an interface, `fms_c2f_string`, to convert C strings and C pointers to Fortran strings +- MPP: Adds a routine `mpp_shift_nest_domains` and a field to `nest_domain_type` to allow for modifying the position of a given nest domain +- FMS2_IO: Reintroduces the option to flush_nc_files with fms2_io +### Changed +- DIAG_MANAGER: Cleans up IO code and replaces any remaining dependencies to mpp_io with fms2_io +- FMS_IO: Changes to allow for custom paths for namelists, field_table, and the INPUT directory +- EXCHANGE: Changes real sizes in xgrid and gradient modules to be explicitly r8_kind to prevent runtime issues with mixed precision +### Deprecated +- MPP: `get_unit` has been deperecated in favor of the Fortran intrinsic `newunit` and will now generate a warning if used +### Removed +- TIME_MANAGER: Removes deprecated array-based gregorian calender calculations that were replaced in 2021.02 +### Fixed +- DIAG_MANAGER: Fixes issues with 3D diurnal diagnostic output and removes a redundant write_data call +- TIME_INTERP: Fixes load_record read_data call for 3d variables with fms2_io and eliminates redundant data loading and validity checking for on-grid interpolations. +- MPP: Fixed a bug with non-blocking domain updates failing on GNU compilers from uninitialized values +- MPP: Fixed issues with the `mpp_type_free` function causing errors and memory leaks when freeing the `mpp_byte` type + +### Tag Commit Hashes +- 2021.04-alpha1 (e0b998321611f80f2d0c587a13b8c03c173d5520) +- 2021.04-alpha2 (ab1b0a4cb2beac72d889d94a628e0d02092723b2) +- 2021.04-alpha3 (90583aeb369831b01296ab4b0e7e6a1b69ed91b1) +- 2021.04-beta1 (6d179fcdc189070f74d49e0025d072fa304e96d6) ## [2021.03] - 2021-08-16 ### Known Issues @@ -27,6 +55,9 @@ sequential patch number (starting from `01`). - MPP: Fixed uninitialized variables for data domains in mpp domains broadcast routines - MPP: Minor memory leaks from deallocating domains - AXIS_UTILS: Fix PGI related error with string length sizes +### Tag Commit Hashes +- 2021.03-alpha1 (87d945d8dba6341f1f56631047ae5d3e5b4ab828) +- 2021.03-beta1 (6d6ff9595ede12ea0a342ae014442708a27041d2) ## [2021.02] - 2021-05-20 ### Added @@ -74,7 +105,7 @@ sequential patch number (starting from `01`). ### Removed ### Fixed - MPP: Fixed a bug causing mpp_get_UG_domain_tile_pe_inf to seg fault from the incorrect assignment of an optional argument -- FMS: Fixes issues with FMS unit tests failing from pointer allocations by reworking deallocate_unstruct_pass_type +- FMS: Fixes issues with FMS unit tests failing from pointer allocations by reworking deallocate_unstruct_pass_type - MPP_IO: Fixes unintentional printing of file attributes - An issue with the automake build system causing unnecessary rebuilds of source files - Fixes CMake build of the FMS library to install configuration files in the appropriate directories; and for OpenMP dependencies to the private diff --git a/CMAKE_INSTRUCTIONS.md b/CMAKE_INSTRUCTIONS.md index e5d8c50f54..aab471b5db 100644 --- a/CMAKE_INSTRUCTIONS.md +++ b/CMAKE_INSTRUCTIONS.md @@ -22,6 +22,10 @@ export CC=mpiicc export NetCDF_ROOT=`nc-config --prefix` ``` +### If building with yaml parser (-DWITH_YAML) +``` +export LIBYAML_ROOT= +``` ## 2. Build and install FMS with CMake `` is the full install directory for FMS provided by user @@ -47,6 +51,7 @@ The following build options are available: -DENABLE_QUAD_PRECISION "Enable compiler definition -DENABLE_QUAD_PRECISION" DEFAULT: ON -DGFS_PHYS "Enable compiler definition -DGFS_PHYS" DEFAULT:OFF -DLARGEFILE "Enable compiler definition -Duse_LARGEFILE" DEFAULT:OFF +-DWITH_YAML "Enable compiler definition -Duse_yaml" DEFAULT:OFF ``` ## 3. Installation structure diff --git a/CMakeLists.txt b/CMakeLists.txt index c384aca4df..524307c7dc 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -23,7 +23,7 @@ cmake_minimum_required(VERSION 3.12 FATAL_ERROR) # Define the CMake project project(FMS - VERSION 2021.03.0 + VERSION 2021.04.0 DESCRIPTION "GFDL FMS Library" HOMEPAGE_URL "https://www.gfdl.noaa.gov/fms" LANGUAGES C Fortran) diff --git a/INSTALL.md b/INSTALL.md index 8442ab649a..b7d67d3a15 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -9,6 +9,7 @@ The following external libraries are required when building libFMS * Fortran 2003 standard compiler * Fortran compiler that supports Cray Pointer * MPI C and Fortran headers and libraries (optional) +* Libyaml header and libraries (optional) * Linux or Unix style system ## Supported Compilers @@ -56,10 +57,13 @@ configure option will require the user to give all required flags. Run `./configure --help` to see other available configure options. +For more information on building with autotools and build options please see + [BUILD_SYSTEM.md](https://github.com/NOAA-GFDL/FMS/blob/main/libFMS/BUILD_SYSTEM.md) + ### CMake To build using CMake, follow the instructions in -[CMAKE_INSTRUCTIONS.mk](https://github.com/NOAA-GFDL/FMS/blob/master/CMAKE_INSTRUCTIONS.md). +[CMAKE_INSTRUCTIONS.mk](https://github.com/NOAA-GFDL/FMS/blob/main/CMAKE_INSTRUCTIONS.md). Currently the CMake configuration is the most restrictive build option as the compiler flags are immutable. diff --git a/README.md b/README.md index 411730a37a..88bd379765 100644 --- a/README.md +++ b/README.md @@ -63,6 +63,20 @@ infrastructural changes to enable such developments are within the scope of FMS. The collaborative software review process of contributed models is therefore an essential facet of FMS. +## Dependencies and installation + +The following external libraries are required when building libFMS + +* NetCDF C and Fortran (77/90) headers and libraries +* Fortran 2003 standard compiler +* Fortran compiler that supports Cray Pointer +* MPI C and Fortran headers and libraries (optional) +* Libyaml header and libraries (optional) +* Linux or Unix style system + +Please see the [Build and Installation page](http://noaa-gfdl.github.io/FMS/build.html) +for more information on building with each build system. + ## Documentation Source code documentation for the FMS code base is available at http://noaa-gfdl.github.io/FMS. diff --git a/configure.ac b/configure.ac index 2ec32cd803..42677681ae 100644 --- a/configure.ac +++ b/configure.ac @@ -25,7 +25,7 @@ AC_PREREQ([2.69]) # Initialize with name, version, and support email address. AC_INIT([GFDL FMS Library], - [2021.04.0-dev], + [2021.04.0], [gfdl.climate.model.info@noaa.gov], [FMS], [https://www.gfdl.noaa.gov/fms]) diff --git a/libFMS/BUILD_SYSTEM.md b/libFMS/BUILD_SYSTEM.md index a69200aecc..1443c0aafb 100644 --- a/libFMS/BUILD_SYSTEM.md +++ b/libFMS/BUILD_SYSTEM.md @@ -80,8 +80,11 @@ The configure script has some standard options, including: ## FMS Configure Options -Currently there are not FMS specific configure options, but probably -we will add some. +Configure build options for FMS: +* `--with-yaml` : Build with support for yaml input files(requires the libyaml library and headers) +* `--enable-mixed-mode` : Build in mixed precision mode, with default 4 byte reals and 8 byte real overloads +* `--disable-setting-flags` : Build without automatically setting flags during configuration +* `--with-mpi` : Build with MPI support, enabled by default ## Standard Make Targets diff --git a/libFMS/Makefile.am b/libFMS/Makefile.am index 7ec87e39d2..e27fa3d7c1 100644 --- a/libFMS/Makefile.am +++ b/libFMS/Makefile.am @@ -28,7 +28,7 @@ lib_LTLIBRARIES = libFMS.la # These linker flags specify libtool version info. # See http://www.gnu.org/software/libtool/manual/libtool.html#Libtool-versioning # for information regarding incrementing `-version-info`. -libFMS_la_LDFLAGS = -version-info 9:0:0 +libFMS_la_LDFLAGS = -version-info 10:0:0 # Add the convenience libraries to the FMS library. libFMS_la_LIBADD = $(top_builddir)/platform/libplatform.la