osutil: disable compilation of recvfds() on unsupported platforms stable
authorYuya Nishihara <yuya@tcha.org>
Tue, 02 Feb 2016 20:56:48 +0900
branchstable
changeset 27970 3d23700cf4a9
parent 27969 5907ed2b56fb
child 27971 f7d0c28d34b3
osutil: disable compilation of recvfds() on unsupported platforms It appears that Solaris doesn't provide CMSG_LEN(), msg_control, etc. As recvfds() is only necessary for chg, this patch just drops it if CMSG_LEN isn't defined, which is the same workaround as Python 3.x. https://hg.python.org/cpython/rev/c64216addd7f#l7.33
mercurial/osutil.c
--- a/mercurial/osutil.c	Wed Feb 03 10:57:27 2016 -0200
+++ b/mercurial/osutil.c	Tue Feb 02 20:56:48 2016 +0900
@@ -653,7 +653,11 @@
 /*
  * recvfds() simply does not release GIL during blocking io operation because
  * command server is known to be single-threaded.
+ *
+ * Old systems such as Solaris don't provide CMSG_LEN, msg_control, etc.
+ * Currently, recvfds() is not supported on these platforms.
  */
+#ifdef CMSG_LEN
 
 static ssize_t recvfdstobuf(int sockfd, int **rfds, void *cbuf, size_t cbufsize)
 {
@@ -713,6 +717,7 @@
 	return NULL;
 }
 
+#endif /* CMSG_LEN */
 #endif /* ndef _WIN32 */
 
 static PyObject *listdir(PyObject *self, PyObject *args, PyObject *kwargs)
@@ -881,9 +886,11 @@
 	{"statfiles", (PyCFunction)statfiles, METH_VARARGS | METH_KEYWORDS,
 	 "stat a series of files or symlinks\n"
 "Returns None for non-existent entries and entries of other types.\n"},
+#ifdef CMSG_LEN
 	{"recvfds", (PyCFunction)recvfds, METH_VARARGS,
 	 "receive list of file descriptors via socket\n"},
 #endif
+#endif
 #ifdef __APPLE__
 	{
 		"isgui", (PyCFunction)isgui, METH_NOARGS,