未验证 提交 6ec84967 编写于 作者: A Adam Moody 提交者: GitHub

aio: test link against libaio using distutils (#1247)

上级 6ba96289
......@@ -50,10 +50,14 @@ class AsyncIOBuilder(OpBuilder):
return ['-laio']
def is_compatible(self):
aio_libraries = ['libaio-dev']
aio_compatible = self.libraries_installed(aio_libraries)
# Check for the existence of libaio by using distutils
# to compile and link a test program that calls io_submit,
# which is a function provided by libaio that is used in the async_io op.
# If needed, one can define -I and -L entries in CFLAGS and LDFLAGS
# respectively to specify the directories for libaio.h and libaio.so.
aio_compatible = self.has_function('io_submit', ('aio', ))
if not aio_compatible:
self.warning(
f"{self.NAME} requires the libraries: {aio_libraries} but are missing. Can be fixed by: `apt install libaio-dev`."
f"{self.NAME} requires libaio but it is missing. Can be fixed by: `apt install libaio-dev`."
)
return super().is_compatible() and aio_compatible
......@@ -7,6 +7,7 @@ import time
import importlib
from pathlib import Path
import subprocess
import distutils.ccompiler
from abc import ABC, abstractmethod
YELLOW = '\033[93m'
......@@ -160,6 +161,10 @@ class OpBuilder(ABC):
valid = valid or result.wait() == 0
return valid
def has_function(self, funcname, libraries):
compiler = distutils.ccompiler.new_compiler()
return compiler.has_function(funcname, libraries=libraries)
def strip_empty_entries(self, args):
'''
Drop any empty strings from the list of compile and link flags
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册