Raise the minimum versions of Pacemaker's dependencies at each minor or major series bump, aiming for versions that are available as stock packages in long-term support releases (typically 5 to 7 years old) of supported distributions. Bumping a dependency generally involves editing configure.ac and INSTALL.md; bumps are useful only if we can remove workarounds/conditionals for older versions or take advantage of newer features.
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 14 "trusty"/"utopic" (2014), 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): trusty, 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
- glib (currently 2.42.0): see https://github.com/GNOME/glib/blob/master/NEWS and https://en.wikipedia.org/wiki/GLib#Releases ; xenial has 2.48
- libqb (currently 0.17): jessie is broken (libqb 0.11, no pacemaker), trusty has 0.16, xenial and RHEL 7.[12] have 0.17; 2.0.0 (2020-05) or 2.0.2 (2020-10) (see configure.ac, plus can deprecate CRM_TRACE_INIT_DATA() and drop calls)
- pkg-config (currently 0.27): RHEL 7 has 0.27, jessie 0.28, xenial 0.29; note that F26+/RHEL8+ use pkgconf instead, which has different versioning; 0.28 (2013-01-24) has PKG_CHECK_VAR (we could drop our replacement)
- libxml2 (currently no minimum): 2.9.2 (2014-10-16, 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
- corosync (currently 2.0.0): 3.1.3 would let us drop HAVE_COROSYNC_CFG_TRACKSTART and add a call to corosync_cfg_trackstop() (see comment in close_cfg())
(Leave this task open-ended; create a new task to bump dependencies to specific versions for a particular Pacemaker release.)