chore: import upstream snapshot with attribution
This commit is contained in:
@@ -0,0 +1,108 @@
|
||||
"""Library information."""
|
||||
from __future__ import absolute_import
|
||||
|
||||
import os
|
||||
import pathlib
|
||||
import sys
|
||||
|
||||
|
||||
def find_lib_path(name=None, search_path=None, optional=False):
|
||||
"""Find dynamic library files.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
name : list of str
|
||||
List of names to be found.
|
||||
|
||||
Returns
|
||||
-------
|
||||
lib_path : list(string)
|
||||
List of all found path to the libraries
|
||||
"""
|
||||
# See https://github.com/dmlc/tvm/issues/281 for some background.
|
||||
|
||||
# NB: This will either be the source directory (if DGL is run
|
||||
# inplace) or the install directory (if DGL is installed).
|
||||
# An installed DGL's curr_path will look something like:
|
||||
# $PREFIX/lib/python3.6/site-packages/dgl/_ffi
|
||||
ffi_dir = os.path.dirname(os.path.abspath(os.path.expanduser(__file__)))
|
||||
source_dir = os.path.join(ffi_dir, "..", "..", "..")
|
||||
install_lib_dir = os.path.join(ffi_dir, "..", "..", "..", "..")
|
||||
|
||||
dll_path = []
|
||||
|
||||
if os.environ.get("DGL_LIBRARY_PATH", None):
|
||||
dll_path.append(os.environ["DGL_LIBRARY_PATH"])
|
||||
|
||||
if sys.platform.startswith("linux") and os.environ.get(
|
||||
"LD_LIBRARY_PATH", None
|
||||
):
|
||||
dll_path.extend(
|
||||
[p.strip() for p in os.environ["LD_LIBRARY_PATH"].split(":")]
|
||||
)
|
||||
elif sys.platform.startswith("darwin") and os.environ.get(
|
||||
"DYLD_LIBRARY_PATH", None
|
||||
):
|
||||
dll_path.extend(
|
||||
[p.strip() for p in os.environ["DYLD_LIBRARY_PATH"].split(":")]
|
||||
)
|
||||
|
||||
# Pip lib directory
|
||||
dll_path.append(os.path.join(ffi_dir, ".."))
|
||||
# Default cmake build directory
|
||||
dll_path.append(os.path.join(source_dir, "build"))
|
||||
dll_path.append(os.path.join(source_dir, "build", "Release"))
|
||||
# Default make build directory
|
||||
dll_path.append(os.path.join(source_dir, "lib"))
|
||||
|
||||
dll_path.append(install_lib_dir)
|
||||
|
||||
if search_path is not None:
|
||||
if isinstance(search_path, (list, tuple, set)):
|
||||
dll_path = dll_path + list(search_path)
|
||||
elif isinstance(search_path, str):
|
||||
dll_path.append(search_path)
|
||||
else:
|
||||
raise ValueError(
|
||||
"type(search_path)={} is invalid".format(type(search_path))
|
||||
)
|
||||
dll_path = [
|
||||
str(x.absolute()) if isinstance(x, pathlib.Path) else os.path.abspath(x)
|
||||
for x in dll_path
|
||||
]
|
||||
|
||||
if name is None:
|
||||
if sys.platform.startswith("win32"):
|
||||
name = ["libdgl.dll", "dgl.dll"]
|
||||
elif sys.platform.startswith("darwin"):
|
||||
name = "libdgl.dylib"
|
||||
else:
|
||||
name = "libdgl.so"
|
||||
|
||||
if isinstance(name, str):
|
||||
name = [name]
|
||||
|
||||
lib_dll_path = []
|
||||
for n in name:
|
||||
lib_dll_path += [os.path.join(p, n) for p in dll_path]
|
||||
|
||||
lib_found = [p for p in lib_dll_path if os.path.isfile(p)]
|
||||
|
||||
if not lib_found:
|
||||
message = (
|
||||
"Cannot find the files.\n"
|
||||
+ "List of candidates:\n"
|
||||
+ str("\n".join(lib_dll_path))
|
||||
)
|
||||
if not optional:
|
||||
raise RuntimeError(message)
|
||||
return None
|
||||
|
||||
return lib_found
|
||||
|
||||
|
||||
# current version
|
||||
# We use the version of the incoming release for code
|
||||
# that is under development.
|
||||
# The following line is set by dgl/python/update_version.py
|
||||
__version__ = "2.5"
|
||||
Reference in New Issue
Block a user