From f9442744af6dc59f110973490e765e0d66dd603d Mon Sep 17 00:00:00 2001
From: Colin 't Hart <colin@bandicoot.favoptic.com>
Date: Mon, 4 May 2020 18:59:37 +0000
Subject: [PATCH 1/2] Fixed search of mxDateTime headers

- Find mxDateTime.h automatically on path directories.
- Prefer mxDateTime.h found in venv over one found in /usr/include.
---
 setup.py | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

diff --git a/setup.py b/setup.py
index 6768cb54..fb745d03 100644
--- a/setup.py
+++ b/setup.py
@@ -525,19 +525,21 @@ parser = configparser.ConfigParser()
 parser.read('setup.cfg')
 
 # check for mx package
-have_mxdatetime = False
 mxincludedir = ''
 if parser.has_option('build_ext', 'mx_include_dir'):
     mxincludedir = parser.get('build_ext', 'mx_include_dir')
 if not mxincludedir:
-    mxincludedir = os.path.join(get_python_inc(plat_specific=1), "mx")
+    # look for mxDateTime.h; prefer one located in venv
+    candidate_dirs = [os.path.join(d, 'mx', 'DateTime', 'mxDateTime') for d in sys.path] \
+                   + [os.path.join(get_python_inc(plat_specific=1), "mx")]
+    candidate_dirs = [d for d in candidate_dirs if os.path.exists(os.path.join(d, 'mxDateTime.h'))] or ['']
+    mxincludedir = candidate_dirs[0]
 if mxincludedir.strip() and os.path.exists(mxincludedir):
     # Build the support for mx: we will check at runtime if it can be imported
     include_dirs.append(mxincludedir)
     define_macros.append(('HAVE_MXDATETIME', '1'))
     sources.append('adapter_mxdatetime.c')
     depends.extend(['adapter_mxdatetime.h', 'typecast_mxdatetime.c'])
-    have_mxdatetime = True
     version_flags.append('mx')
 
 # generate a nice version string to avoid confusion when users report bugs

From a75afe4d83f7d1921db8ef58c6e4e679159f2c23 Mon Sep 17 00:00:00 2001
From: Daniele Varrazzo <daniele.varrazzo@gmail.com>
Date: Wed, 6 May 2020 14:46:58 +1200
Subject: [PATCH 2/2] Mention fixing mx search in news file

Close #996.
---
 NEWS | 1 +
 1 file changed, 1 insertion(+)

diff --git a/NEWS b/NEWS
index 08146516..485b8db3 100644
--- a/NEWS
+++ b/NEWS
@@ -6,6 +6,7 @@ What's new in psycopg 2.8.6
 
 - Fixed memory leak changing connection encoding to the current one
   (:ticket:`#1101`).
+- Fixed search of mxDateTime headers in virtualenvs (:ticket:`#996`).
 
 
 What's new in psycopg 2.8.5