At a minor or major series bump, we can raise the minimum versions of our dependencies.Raise the minimum versions of our dependencies at each minor or major series bump, It's good to aimaiming for versions that are available as stock packages in long-term support releases (typically 5 to 7 years old) of common distributions (RHEL, SLES, Ubuntu, FreeBSD) -- typically distribution releases that are 5 to 7 years old. Bumping a dependency generally involves editing configure.ac and INSTALL.md, and removing any workarounds/conditionals for older versions.
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.)