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 and INSTALL.md 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 7 >=7.2, 8, 9, and later
- Fedora
- SLES/OpenSUSE
- [[ http://archive.debian.org/debian/dists/ | Debian ]]: currently support 8 "jessie" (2015), 9 "stretch" (2017), 10 "buster" (2019), 11 "bullseye" (2021), and later
- [[ https://packages.ubuntu.com/ | Ubuntu ]]: currently support 15 "vivid"/"wily" (2015), 16 "xenial"/"yaketty" (2016-2020), and later
- FreeBSD (only supported as far as passing CI testing)
Key dependencies:
- **Python (currently 3.4):** stretch and xenial have 3.5, RHEL 7 and 8 have 3.6; 3.5 (2015-09-13) would let us use subprocess.run(), os.scandir(), async programming syntax
- **autoconf (currently 2.64): ** xenial, RHEL 7/8 have 2.69; 2.70 (2020-12-08) supports --runstatedir and C_CONFIG_MACRO_DIRS(), and would let us deprecate/drop --with-runstatedir and drop AC_PROG_CC_STDC
- **automake (currently 1.13):** 1.14 would let us update gnulib
- **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; xenial has 2.48
- **libqb (currently 0.17):** jessie is broken (libqb 0.11 and no pacemaker, but we support building from source with newer libqb), trusty has 0.16, xenial and RHEL 7.2 have 0.17; bumping to 2.0.0 (2020-05), 2.0.2 (2020-10), 2.0.3 (2022-03) or later can help us drop workarounds (see configure.ac) as well as deprecate and drop calls to CRM_TRACE_INIT_DATA()
- **pkg-config (currently 0.27): **RHEL 7 has 0.27, jessie 0.28, xenial 0.29; note that Fedora >=26 and RHEL >=8 use pkgconf instead, which has different versioning; 0.28 (2013-01) has PKG_CHECK_VAR (we could drop our replacement)
- **libxml2 (currently no minimum):** 2.9.2 (2014-10, not available until RHEL 8 and stretch) would let us drop the cast in crm_element_value()
- **gettext (currently 0.18):** RHEL 7.2 has 0.18.2.1, RHEL 8.0 has 0.19.8.1, jessie has 0.19.3, vivid has 0.19.2; 0.19.6 (2015-09) would let us use AM_GNU_GETTEXT_REQUIRE_VERSION (i.e. "or later") instead of AM_GNU_GETTEXT_VERSION in configure.ac
- **corosync (currently 2.0.0):** 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())