[PATCH] building: build inotify for sys.platform='linux*'

Nikolaj Sjujskij sterkrig at myopera.com
Thu Sep 22 12:08:30 CDT 2011


# HG changeset patch
# User Nikolaj Sjujskij <sterkrig at myopera.com>
# Date 1316521287 -10800
# Node ID e9724e2f2db885330b2780e4e556499ac70e30fc
# Parent  510184e5a09eb09be23b55bc1191c6ca77af05d5
building: build inotify for sys.platform='linux*'

If Python interpreter was built under Linux 3.x kernel, it reports
sys.platform to be 'linux3' (it is fixed for Python 3, but not for 2.x).
This cancels building inotify extension, which was built only for 'linux2'
platform. Improved test checks if sys.platform begins with 'linux', and together
with test for kernel version to be greater than 2.6 it seems to cover all known
cases.

diff --git a/contrib/setup3k.py b/contrib/setup3k.py
--- a/contrib/setup3k.py
+++ b/contrib/setup3k.py
@@ -309,7 +309,7 @@
 else:
     extmodules.append(Extension('mercurial.osutil', ['mercurial/osutil.c']))
 
-if sys.platform == 'linux2' and os.uname()[2] > '2.6':
+if sys.platform.startswith('linux') and os.uname()[2] > '2.6':
     # The inotify extension is only usable with Linux 2.6 kernels.
     # You also need a reasonably recent C library.
     # In any case, if it fails to build the error will be skipped ('optional').
diff --git a/hgext/inotify/server.py b/hgext/inotify/server.py
--- a/hgext/inotify/server.py
+++ b/hgext/inotify/server.py
@@ -443,7 +443,7 @@
             if err.args[0] != errno.EPIPE:
                 raise
 
-if sys.platform == 'linux2':
+if sys.platform.startswith('linux'):
     import linuxserver as _server
 else:
     raise ImportError
diff --git a/setup.py b/setup.py
--- a/setup.py
+++ b/setup.py
@@ -366,7 +366,7 @@
     extmodules.append(Extension('mercurial.osutil', ['mercurial/osutil.c'],
                                 extra_link_args=osutil_ldflags))
 
-if sys.platform == 'linux2' and os.uname()[2] > '2.6':
+if sys.platform.startswith('linux') and os.uname()[2] > '2.6':
     # The inotify extension is only usable with Linux 2.6 kernels.
     # You also need a reasonably recent C library.
     # In any case, if it fails to build the error will be skipped ('optional').


More information about the Mercurial-devel mailing list