From 291963af49a12a05c40d9ed6fd000cba8b15595b Mon Sep 17 00:00:00 2001
From: Ben Gamari <ben@smart-cactus.org>
Date: Wed, 9 Aug 2023 01:35:58 -0400
Subject: [PATCH] users_guide: Restore compatibility with pre-packaging Python

The `packaging` package is not available in Ubuntu 18.04 or Debian 9.
Fall back to distutils in this case to avoid incurring an extra
dependency.
---
 docs/users_guide/flags.py | 11 ++++++++---
 1 file changed, 8 insertions(+), 3 deletions(-)

diff --git a/docs/users_guide/flags.py b/docs/users_guide/flags.py
index 474d1b65d4bd..50cde1f4a3d6 100644
--- a/docs/users_guide/flags.py
+++ b/docs/users_guide/flags.py
@@ -50,7 +50,12 @@ import sphinx
 from sphinx import addnodes
 from sphinx.domains.std import GenericObject
 from sphinx.errors import SphinxError
-from packaging.version import parse
+try:
+    from packaging.version import parse as parse_version
+except ImportError as e:
+    # N.B. `packaging` is not available in Ubuntu 18.04 or Debian 9
+    from distutils.version import LooseVersion as parse_version
+
 from utils import build_table_from_list
 
 import os.path
@@ -628,8 +633,8 @@ def purge_flags(app, env, docname):
 
 def setup(app):
     # The override argument to add_directive_to_domain is only supported by >= 1.8
-    sphinx_version = parse(sphinx.__version__)
-    override_arg = {'override': True} if sphinx_version >= parse('1.8') else {}
+    sphinx_version = parse_version(sphinx.__version__)
+    override_arg = {'override': True} if sphinx_version >= parse_version('1.8') else {}
 
     # Add ghc-flag directive, and override the class with our own
     app.add_object_type('ghc-flag', 'ghc-flag')
-- 
GitLab