From ae0882bbd686cb213420bd7b84601e0c97771cf7 Mon Sep 17 00:00:00 2001
From: Xinglu Chen <public@yoctocell.xyz>
Date: Sat, 15 May 2021 11:17:12 +0200
Subject: gnu: mercurial: Patch to make it read HGEXTENSIONPATH.
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

This will make Mercurial be able to find third-party extensions installed with
Guix, without having to set PYTHONPATH.

* gnu/packages/patches/mercurial-hg-extension-path.patch: New file.
* gnu/local.mk (dist_patch_DATA): Register the patch.
* gnu/packages/version-control.scm (mercurial)[origin](patches): Apply the
patch.
[native-search-paths]: Add HGEXTENSIONPATH.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
---
 .../patches/mercurial-hg-extension-path.patch      | 29 ++++++++++++++++++++++
 1 file changed, 29 insertions(+)
 create mode 100644 gnu/packages/patches/mercurial-hg-extension-path.patch

(limited to 'gnu/packages/patches/mercurial-hg-extension-path.patch')

diff --git a/gnu/packages/patches/mercurial-hg-extension-path.patch b/gnu/packages/patches/mercurial-hg-extension-path.patch
new file mode 100644
index 0000000000..d1073dd01c
--- /dev/null
+++ b/gnu/packages/patches/mercurial-hg-extension-path.patch
@@ -0,0 +1,29 @@
+This is needed to make Mercurial read the HGEXTENSIONPATH to detect
+third-party extensions.  It is called HGEXTENSIONPATH and not
+HG_EXTENSION_PATH to keep it consistent with other environment variables for
+Mercurial, e.g. HGENCODINGAMBIGUOUS, HGEDITOR ...  Hopefully I or someone else
+will get this into Mercurial proper.
+
+diff --git a/mercurial/extensions.py b/mercurial/extensions.py
+--- a/mercurial/extensions.py
++++ b/mercurial/extensions.py
+@@ -13,6 +13,7 @@
+ import imp
+ import inspect
+ import os
++import sys
+ 
+ from .i18n import (
+     _,
+@@ -108,6 +109,11 @@
+ 
+ def _importh(name):
+     """import and return the <name> module"""
++    # Read HGEXTENSIONSPATH environment variable when import extensions.
++    extension_path = os.getenv("HGEXTENSIONSPATH")
++    if extension_path is not None:
++        for path in extension_path:
++            sys.path.append(path)
+     mod = __import__(pycompat.sysstr(name))
+     components = name.split(b'.')
+     for comp in components[1:]:
-- 
cgit v1.2.3