Minimum supported versions of Pacemaker's dependencies can be raised at a minor or major series bump, if we can remove workarounds/conditionals for older versions or take advantage of newer features. Edit configure.ac, INSTALL.md, and rpm/pacemaker.spec.in (if appropriate) when bumping a dependency.
Leave this task open-ended, and create a new subtask to bump dependencies to specific versions for a particular Pacemaker release.
Aim for versions that are available as stock packages in supported distributions' long-term support releases (typically 5 to 7 years old). Important distributions:
- RHEL: currently support 8 (2019) and later (and comparable Fedora, CentOS Stream, and clone releases)
- [[https://scc.suse.com/packages?name=SUSE%20Linux%20Enterprise%20Server | SLES/OpenSUSE]]: currently support SLES 15.0 (2018) and later
- [[ http://archive.debian.org/debian/dists/ | Debian ]]: currently support 10 "buster" (2019) and later (Debian itself does not offer LTS, but affiliated groups do offer 5-year LTS and 10-year Extended LTS)
- [[ https://packages.ubuntu.com/ | Ubuntu ]]: currently support 18 "bionic" (2018) and later
- FreeBSD (only supported as far as passing CI testing)
Key dependencies:
- **autoconf (currently 2.64): ** 2.70 (2020-12-08) supports --runstatedir and C_CONFIG_MACRO_DIRS(), would let us deprecate/drop --with-runstatedir and drop AC_PROG_CC_STDC, and (in combination with gettext 0.19.6 or later) would let us use AM_GNU_GETTEXT_REQUIRE_VERSION (i.e. "or later") instead of AM_GNU_GETTEXT_VERSION
- **corosync (currently 2.0.0):**
- 3.0.0 (2018-12): see `cmap_initialize_map()` in internal.h and `quorum_model_initialize()` in cluster.c
- 3.1.1 (2021-03) would let us depend on `corosync-devel%{?_isa}` instead of just `corosync-devel` in `rpm/pacemaker.spec.in`
- 3.1.3 (2021-05) would let us drop HAVE_COROSYNC_CFG_TRACKSTART and add a call to corosync_cfg_trackstop() (see comment in close_cfg())
- **gettext (currently 0.18):** 0.19.6 (2015-09, available in all target OSes, but feature also requires autoconf 2.70 or later) would let us use AM_GNU_GETTEXT_REQUIRE_VERSION (i.e. "or later") instead of AM_GNU_GETTEXT_VERSION in configure.ac
- **glib (currently 2.42.0):** check https://github.com/GNOME/glib/blob/master/NEWS and https://en.wikipedia.org/wiki/GLib#Releases for useful changes; glib 2.68.0 has ##g_string_replace()## (see cmdline.c), glib 2.76.0 has ##g_string_free_and_steal()##
- **GnuTLS (currently 3.1.7):** 3.6.0 (2017-08-21) would let us drop `gnutls_anon_set_server_dh_params()`, `gnutls_psk_set_server_dh_params()`, and `gnutls_dh_params_generate2()` calls (but investigate whether would affect remote CIB admin hosts and Pacemaker Remote nodes)
- **libdbus (currently 1.5.12)**
- **libqb (currently 1.0.1):** 2.0.0 (2020-05), 2.0.2 (2020-10), or 2.0.5 (2022-03) would allow us to drop workarounds (see configure.ac) as well as deprecate CRM_TRACE_INIT_DATA() and drop calls of it
- **libxml2 (2.9.2)**
- **pkg-config (currently 0.28):** note that Fedora >=26 and RHEL >=8 use pkgconf instead, which has different versioning
- **Python (currently 3.6)**
- **python-dateutil (currently no minimum):** 2.7.0 would let us drop the isoparse replacement in `python/pacemaker/_cts/watcher.py`
- **rpm (currently 4.14.0):** 4.17.1 (2022-07-01) would allows us to use the more intuitive `bcond` instead of `bcond_with` and `bcond_without`
Additionally, **booth** and **resource-agents** are not dependencies, but see T129, T509, T644, T842, T843, and T844 for changes dependent on their supported versions.