mgorny created this revision. mgorny added reviewers: EricWF, krytarowski. Herald added subscribers: libcxx-commits, ldionne, emaste.
Replace the mknod() call with socket() + bind() for creating unix sockets. The mknod() method is not portable and does not work on NetBSD while binding the socket should work on all systems supporting unix sockets. // NB: I think this should solve the issues w/ FreeBSD/Darwin too but I don't have those systems to test Repository: rCXX libc++ https://reviews.llvm.org/D55576 Files: test/support/filesystem_dynamic_test_helper.py Index: test/support/filesystem_dynamic_test_helper.py =================================================================== --- test/support/filesystem_dynamic_test_helper.py +++ test/support/filesystem_dynamic_test_helper.py @@ -1,5 +1,6 @@ import sys import os +import socket import stat # Ensure that this is being run on a specific platform @@ -76,8 +77,13 @@ def create_socket(source): - mode = 0o600 | stat.S_IFSOCK - os.mknod(sanitize(source), mode) + sock = socket.socket(socket.AF_UNIX) + sanitized_source = sanitize(source) + # AF_UNIX sockets may have very limited path length, so split it + # into chdir call (with technically unlimited length) followed + # by bind() relative to the directory + os.chdir(os.path.dirname(sanitized_source)) + sock.bind(os.path.basename(sanitized_source)) if __name__ == '__main__':
Index: test/support/filesystem_dynamic_test_helper.py =================================================================== --- test/support/filesystem_dynamic_test_helper.py +++ test/support/filesystem_dynamic_test_helper.py @@ -1,5 +1,6 @@ import sys import os +import socket import stat # Ensure that this is being run on a specific platform @@ -76,8 +77,13 @@ def create_socket(source): - mode = 0o600 | stat.S_IFSOCK - os.mknod(sanitize(source), mode) + sock = socket.socket(socket.AF_UNIX) + sanitized_source = sanitize(source) + # AF_UNIX sockets may have very limited path length, so split it + # into chdir call (with technically unlimited length) followed + # by bind() relative to the directory + os.chdir(os.path.dirname(sanitized_source)) + sock.bind(os.path.basename(sanitized_source)) if __name__ == '__main__':
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits