Unverified Commit 0344603e authored by Edgar Andrés Margffoy Tuay's avatar Edgar Andrés Margffoy Tuay Committed by GitHub
Browse files

PR: Remove linux distribution detection, search first on local paths for libraries (#2457)

* Remove linux distribution detection, search first on local paths for libraries

* Use not in

* Remove unused variables
parent 812395ca
...@@ -88,74 +88,55 @@ def find_library(name, vision_include): ...@@ -88,74 +88,55 @@ def find_library(name, vision_include):
include_folder = None include_folder = None
library_header = '{0}.h'.format(name) library_header = '{0}.h'.format(name)
print('Running build on conda-build: {0}'.format(is_conda_build)) # Lookup in TORCHVISION_INCLUDE or in the package file
if is_conda_build: package_path = [os.path.join(this_dir, 'torchvision')]
# Add conda headers/libraries for folder in vision_include + package_path:
if os.name == 'nt': candidate_path = os.path.join(folder, library_header)
build_prefix = os.path.join(build_prefix, 'Library') library_found = os.path.exists(candidate_path)
include_folder = os.path.join(build_prefix, 'include') if library_found:
lib_folder = os.path.join(build_prefix, 'lib') break
library_header_path = os.path.join(
include_folder, library_header) if not library_found:
library_found = os.path.isfile(library_header_path) print('Running build on conda-build: {0}'.format(is_conda_build))
conda_installed = library_found if is_conda_build:
else: # Add conda headers/libraries
# Check if using Anaconda to produce wheels
conda = distutils.spawn.find_executable('conda')
is_conda = conda is not None
print('Running build on conda: {0}'.format(is_conda))
if is_conda:
python_executable = sys.executable
py_folder = os.path.dirname(python_executable)
if os.name == 'nt': if os.name == 'nt':
env_path = os.path.join(py_folder, 'Library') build_prefix = os.path.join(build_prefix, 'Library')
else: include_folder = os.path.join(build_prefix, 'include')
env_path = os.path.dirname(py_folder) lib_folder = os.path.join(build_prefix, 'lib')
lib_folder = os.path.join(env_path, 'lib')
include_folder = os.path.join(env_path, 'include')
library_header_path = os.path.join( library_header_path = os.path.join(
include_folder, library_header) include_folder, library_header)
library_found = os.path.isfile(library_header_path) library_found = os.path.isfile(library_header_path)
conda_installed = library_found conda_installed = library_found
if not library_found:
if sys.platform == 'linux':
library_found = os.path.exists('/usr/include/{0}'.format(
library_header))
library_found = library_found or os.path.exists(
'/usr/local/include/{0}'.format(library_header))
else: else:
# Lookup in TORCHVISION_INCLUDE or in the package file # Check if using Anaconda to produce wheels
package_path = [os.path.join(this_dir, 'torchvision')] conda = distutils.spawn.find_executable('conda')
for folder in vision_include + package_path: is_conda = conda is not None
candidate_path = os.path.join(folder, library_header) print('Running build on conda: {0}'.format(is_conda))
library_found = os.path.exists(candidate_path) if is_conda:
if library_found: python_executable = sys.executable
break py_folder = os.path.dirname(python_executable)
if os.name == 'nt':
env_path = os.path.join(py_folder, 'Library')
else:
env_path = os.path.dirname(py_folder)
lib_folder = os.path.join(env_path, 'lib')
include_folder = os.path.join(env_path, 'include')
library_header_path = os.path.join(
include_folder, library_header)
library_found = os.path.isfile(library_header_path)
conda_installed = library_found
if not library_found:
if sys.platform == 'linux':
library_found = os.path.exists('/usr/include/{0}'.format(
library_header))
library_found = library_found or os.path.exists(
'/usr/local/include/{0}'.format(library_header))
return library_found, conda_installed, include_folder, lib_folder return library_found, conda_installed, include_folder, lib_folder
def get_linux_distribution():
release_data = {}
with open("/etc/os-release") as f:
reader = csv.reader(f, delimiter="=")
for row in reader:
if row:
release_data[row[0]] = row[1]
if release_data["ID"] in ["debian", "raspbian"]:
with open("/etc/debian_version") as f:
debian_version = f.readline().strip()
major_version = debian_version.split(".")[0]
version_split = release_data["VERSION"].split(" ", maxsplit=1)
if version_split[0] == major_version:
# Just major version shown, replace it with the full version
release_data["VERSION"] = " ".join(
[debian_version] + version_split[1:])
print("{} {}".format(release_data["NAME"], release_data["VERSION"]))
return release_data
def get_extensions(): def get_extensions():
this_dir = os.path.dirname(os.path.abspath(__file__)) this_dir = os.path.dirname(os.path.abspath(__file__))
extensions_dir = os.path.join(this_dir, 'torchvision', 'csrc') extensions_dir = os.path.join(this_dir, 'torchvision', 'csrc')
...@@ -267,14 +248,6 @@ def get_extensions(): ...@@ -267,14 +248,6 @@ def get_extensions():
image_library = [] image_library = []
image_link_flags = [] image_link_flags = []
# Detect if build is running under conda/conda-build
conda = distutils.spawn.find_executable('conda')
is_conda = conda is not None
build_prefix = os.environ.get('BUILD_PREFIX', None)
is_conda_build = build_prefix is not None
running_under_conda = is_conda or is_conda_build
# Locating libPNG # Locating libPNG
libpng = distutils.spawn.find_executable('libpng-config') libpng = distutils.spawn.find_executable('libpng-config')
pngfix = distutils.spawn.find_executable('pngfix') pngfix = distutils.spawn.find_executable('pngfix')
...@@ -291,20 +264,10 @@ def get_extensions(): ...@@ -291,20 +264,10 @@ def get_extensions():
png_version = parse_version(png_version) png_version = parse_version(png_version)
if png_version >= parse_version("1.6.0"): if png_version >= parse_version("1.6.0"):
print('Building torchvision with PNG image support') print('Building torchvision with PNG image support')
linux = sys.platform == 'linux' png_lib = subprocess.run([libpng, '--libdir'],
not_debian = False stdout=subprocess.PIPE)
libpng_on_conda = False png_lib = png_lib.stdout.strip().decode('utf-8')
if linux: if 'disabled' not in png_lib:
bin_folder = os.path.dirname(sys.executable)
png_bin_folder = os.path.dirname(libpng)
libpng_on_conda = (
running_under_conda and bin_folder == png_bin_folder)
release_info = get_linux_distribution()
not_debian = release_info["NAME"] not in {'Ubuntu', 'Debian'}
if not linux or libpng_on_conda or not_debian:
png_lib = subprocess.run([libpng, '--libdir'],
stdout=subprocess.PIPE)
png_lib = png_lib.stdout.strip().decode('utf-8')
image_library += [png_lib] image_library += [png_lib]
png_include = subprocess.run([libpng, '--I_opts'], png_include = subprocess.run([libpng, '--I_opts'],
stdout=subprocess.PIPE) stdout=subprocess.PIPE)
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment