Page MenuHomeClusterLabs Projects

Bump minimum version dependencies
Open, WishlistPublic

Assigned To
None
Authored By
kgaillot
Dec 3 2021, 11:23 AM
Referenced Files
Unknown Object (File)
Mar 18 2022, 12:10 PM
Subscribers

Description

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.

Targeted platforms

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 including Fedora 28)
  • SLES/OpenSUSE: currently support SLES 15.0 (2018) and later
  • 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)
  • 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.56.0 has g_datetime_new_from_iso8601() glib 2.68.0 has g_string_replace() (see cmdline.c), glib 2.76.0 has g_string_free_and_steal()
  • GnuTLS (currently 3.4.6):
    • 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).
    • 3.8.0 (2023-02-10) would let us skip initializing gnutls_session_t variables to NULL. Before 3.8.0, it is unsafe to call gnutls_deinit() unless gnutls_session_t has been set to NULL explicitly. As of 3.8.0, gnutls_init() sets it to NULL at the beginning, so it's always safe to call gnutls_deinit() on failure. However, gnutls_session_t is an opaque type and no safe initial value is publicly documented. In the meantime, if we wanted to be especially correct, we could return an integer code from pcmk__new_tls_session(), store the new session in an output argument on success, avoid initializing session to NULL within pcmk__new_tls_session(), and avoid calling gnutls_deinit() on failure. See the following notes:
  • 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)
  • 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.

Researching distro package versions

Event Timeline

kgaillot triaged this task as Wishlist priority.Dec 3 2021, 11:23 AM
kgaillot created this task.
kgaillot updated the task description. (Show Details)
kgaillot updated the task description. (Show Details)
kgaillot updated the task description. (Show Details)
kgaillot updated the task description. (Show Details)
kgaillot updated the task description. (Show Details)
kgaillot changed the edit policy from "All Users" to "Restricted Project (Project)".Mar 24 2022, 4:55 PM
kgaillot updated the task description. (Show Details)
kgaillot updated the task description. (Show Details)
kgaillot added a project: Restricted Project.
kgaillot added a subtask: Restricted Maniphest Task.Feb 2 2023, 6:38 PM
kgaillot changed the status of subtask Restricted Maniphest Task from Open to WIP.May 1 2024, 4:58 PM
kgaillot closed subtask Restricted Maniphest Task as Merged.Jun 4 2024, 11:36 AM
kgaillot updated the task description. (Show Details)
kgaillot changed the status of subtask Restricted Maniphest Task from Merged to Released.Jan 8 2025, 6:02 PM
nrwahl2 changed the visibility from "All Users" to "Public (No Login Required)".