mirror of
https://github.com/pytorch/pytorch.git
synced 2025-10-20 21:14:14 +08:00
[CD] Move linux-aarch64 build scripts (#139815)
All files in `.ci/aarch64_linux` folder are from 88590cd635/aarch64_linux
Companion PR to delete `aarch64_linux` folder in builder: https://github.com/pytorch/builder/pull/2030
Pull Request resolved: https://github.com/pytorch/pytorch/pull/139815
Approved by: https://github.com/wdvr, https://github.com/huydhn
This commit is contained in:
committed by
PyTorch MergeBot
parent
c19c384690
commit
96ca17fec4
19
.ci/aarch64_linux/README.md
Normal file
19
.ci/aarch64_linux/README.md
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
# Aarch64 (ARM/Graviton) Support Scripts
|
||||||
|
Scripts for building aarch64 PyTorch PIP Wheels. These scripts build the following wheels:
|
||||||
|
* torch
|
||||||
|
* torchvision
|
||||||
|
* torchaudio
|
||||||
|
* torchtext
|
||||||
|
* torchdata
|
||||||
|
## Aarch64_ci_build.sh
|
||||||
|
This script is design to support CD operations within PyPi manylinux aarch64 container, and be executed in the container. It prepares the container and then executes __aarch64_wheel_ci_build.py__ to build the wheels. The script "assumes" the PyTorch repo is located at: ```/pytorch``` and will put the wheels into ```/artifacts```.
|
||||||
|
### Usage
|
||||||
|
```DESIRED_PYTHON=<PythonVersion> aarch64_ci_build.sh```
|
||||||
|
|
||||||
|
__NOTE:__ CI build is currently __EXPERMINTAL__
|
||||||
|
|
||||||
|
## Build_aarch64_wheel.py
|
||||||
|
This app allows a person to build using AWS EC3 resources and requires AWS-CLI and Boto3 with AWS credentials to support building EC2 instances for the wheel builds. Can be used in a codebuild CD or from a local system.
|
||||||
|
|
||||||
|
### Usage
|
||||||
|
```build_aarch64_wheel.py --key-name <YourPemKey> --use-docker --python 3.8 --branch <RCtag>```
|
39
.ci/aarch64_linux/aarch64_ci_build.sh
Normal file
39
.ci/aarch64_linux/aarch64_ci_build.sh
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
set -eux -o pipefail
|
||||||
|
|
||||||
|
GPU_ARCH_VERSION=${GPU_ARCH_VERSION:-}
|
||||||
|
|
||||||
|
SCRIPTPATH="$( cd -- "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )"
|
||||||
|
source $SCRIPTPATH/aarch64_ci_setup.sh
|
||||||
|
|
||||||
|
tagged_version() {
|
||||||
|
GIT_DESCRIBE="git --git-dir /pytorch/.git describe --tags --match v[0-9]*.[0-9]*.[0-9]*"
|
||||||
|
if ${GIT_DESCRIBE} --exact >/dev/null; then
|
||||||
|
${GIT_DESCRIBE}
|
||||||
|
else
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
if tagged_version >/dev/null; then
|
||||||
|
export OVERRIDE_PACKAGE_VERSION="$(tagged_version | sed -e 's/^v//' -e 's/-.*$//')"
|
||||||
|
fi
|
||||||
|
|
||||||
|
###############################################################################
|
||||||
|
# Run aarch64 builder python
|
||||||
|
###############################################################################
|
||||||
|
cd /
|
||||||
|
# adding safe directory for git as the permissions will be
|
||||||
|
# on the mounted pytorch repo
|
||||||
|
git config --global --add safe.directory /pytorch
|
||||||
|
pip install -r /pytorch/requirements.txt
|
||||||
|
pip install auditwheel
|
||||||
|
if [ "$DESIRED_CUDA" = "cpu" ]; then
|
||||||
|
echo "BASE_CUDA_VERSION is not set. Building cpu wheel."
|
||||||
|
#USE_PRIORITIZED_TEXT_FOR_LD for enable linker script optimization https://github.com/pytorch/pytorch/pull/121975/files
|
||||||
|
USE_PRIORITIZED_TEXT_FOR_LD=1 python /builder/aarch64_linux/aarch64_wheel_ci_build.py --enable-mkldnn
|
||||||
|
else
|
||||||
|
echo "BASE_CUDA_VERSION is set to: $DESIRED_CUDA"
|
||||||
|
#USE_PRIORITIZED_TEXT_FOR_LD for enable linker script optimization https://github.com/pytorch/pytorch/pull/121975/files
|
||||||
|
USE_PRIORITIZED_TEXT_FOR_LD=1 python /builder/aarch64_linux/aarch64_wheel_ci_build.py --enable-mkldnn --enable-cuda
|
||||||
|
fi
|
37
.ci/aarch64_linux/aarch64_ci_setup.sh
Executable file
37
.ci/aarch64_linux/aarch64_ci_setup.sh
Executable file
@ -0,0 +1,37 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
set -eux -o pipefail
|
||||||
|
|
||||||
|
# This script is used to prepare the Docker container for aarch64_ci_wheel_build.py python script
|
||||||
|
# as we need to install conda and setup the python version for the build.
|
||||||
|
|
||||||
|
CONDA_PYTHON_EXE=/opt/conda/bin/python
|
||||||
|
CONDA_EXE=/opt/conda/bin/conda
|
||||||
|
CONDA_ENV_NAME=aarch64_env
|
||||||
|
PATH=/opt/conda/bin:$PATH
|
||||||
|
LD_LIBRARY_PATH=/opt/conda/envs/${CONDA_ENV_NAME}/lib/:/opt/conda/lib:$LD_LIBRARY_PATH
|
||||||
|
|
||||||
|
###############################################################################
|
||||||
|
# Install conda
|
||||||
|
# disable SSL_verify due to getting "Could not find a suitable TLS CA certificate bundle, invalid path"
|
||||||
|
# when using Python version, less than the conda latest
|
||||||
|
###############################################################################
|
||||||
|
echo 'Installing conda-forge'
|
||||||
|
curl -L -o /mambaforge.sh https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-Linux-aarch64.sh
|
||||||
|
chmod +x /mambaforge.sh
|
||||||
|
/mambaforge.sh -b -p /opt/conda
|
||||||
|
rm /mambaforge.sh
|
||||||
|
source /opt/conda/etc/profile.d/conda.sh
|
||||||
|
conda config --set ssl_verify False
|
||||||
|
conda create -y -c conda-forge -n "${CONDA_ENV_NAME}" python=${DESIRED_PYTHON}
|
||||||
|
conda activate "${CONDA_ENV_NAME}"
|
||||||
|
|
||||||
|
if [[ "$DESIRED_PYTHON" == "3.13" ]]; then
|
||||||
|
pip install -q --pre numpy==2.1.2
|
||||||
|
conda install -y -c conda-forge pyyaml==6.0.2 patchelf==0.17.2 pygit2==1.15.1 ninja==1.11.1 scons==4.7.0
|
||||||
|
else
|
||||||
|
pip install -q --pre numpy==2.0.2
|
||||||
|
conda install -y -c conda-forge pyyaml==6.0.1 patchelf==0.17.2 pygit2==1.13.2 ninja==1.11.1 scons==4.5.2
|
||||||
|
fi
|
||||||
|
|
||||||
|
python --version
|
||||||
|
conda --version
|
230
.ci/aarch64_linux/aarch64_wheel_ci_build.py
Executable file
230
.ci/aarch64_linux/aarch64_wheel_ci_build.py
Executable file
@ -0,0 +1,230 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
# encoding: UTF-8
|
||||||
|
|
||||||
|
import os
|
||||||
|
import shutil
|
||||||
|
from subprocess import check_call, check_output
|
||||||
|
from typing import List
|
||||||
|
|
||||||
|
from pygit2 import Repository
|
||||||
|
|
||||||
|
|
||||||
|
def list_dir(path: str) -> List[str]:
|
||||||
|
"""'
|
||||||
|
Helper for getting paths for Python
|
||||||
|
"""
|
||||||
|
return check_output(["ls", "-1", path]).decode().split("\n")
|
||||||
|
|
||||||
|
|
||||||
|
def build_ArmComputeLibrary() -> None:
|
||||||
|
"""
|
||||||
|
Using ArmComputeLibrary for aarch64 PyTorch
|
||||||
|
"""
|
||||||
|
print("Building Arm Compute Library")
|
||||||
|
acl_build_flags = [
|
||||||
|
"debug=0",
|
||||||
|
"neon=1",
|
||||||
|
"opencl=0",
|
||||||
|
"os=linux",
|
||||||
|
"openmp=1",
|
||||||
|
"cppthreads=0",
|
||||||
|
"arch=armv8a",
|
||||||
|
"multi_isa=1",
|
||||||
|
"fixed_format_kernels=1",
|
||||||
|
"build=native",
|
||||||
|
]
|
||||||
|
acl_install_dir = "/acl"
|
||||||
|
acl_checkout_dir = "ComputeLibrary"
|
||||||
|
os.makedirs(acl_install_dir)
|
||||||
|
check_call(
|
||||||
|
[
|
||||||
|
"git",
|
||||||
|
"clone",
|
||||||
|
"https://github.com/ARM-software/ComputeLibrary.git",
|
||||||
|
"-b",
|
||||||
|
"v24.09",
|
||||||
|
"--depth",
|
||||||
|
"1",
|
||||||
|
"--shallow-submodules",
|
||||||
|
]
|
||||||
|
)
|
||||||
|
|
||||||
|
check_call(
|
||||||
|
["scons", "Werror=1", "-j8", f"build_dir=/{acl_install_dir}/build"]
|
||||||
|
+ acl_build_flags,
|
||||||
|
cwd=acl_checkout_dir,
|
||||||
|
)
|
||||||
|
for d in ["arm_compute", "include", "utils", "support", "src"]:
|
||||||
|
shutil.copytree(f"{acl_checkout_dir}/{d}", f"{acl_install_dir}/{d}")
|
||||||
|
|
||||||
|
|
||||||
|
def update_wheel(wheel_path) -> None:
|
||||||
|
"""
|
||||||
|
Update the cuda wheel libraries
|
||||||
|
"""
|
||||||
|
folder = os.path.dirname(wheel_path)
|
||||||
|
wheelname = os.path.basename(wheel_path)
|
||||||
|
os.mkdir(f"{folder}/tmp")
|
||||||
|
os.system(f"unzip {wheel_path} -d {folder}/tmp")
|
||||||
|
libs_to_copy = [
|
||||||
|
"/usr/local/cuda/extras/CUPTI/lib64/libcupti.so.12",
|
||||||
|
"/usr/local/cuda/lib64/libcudnn.so.9",
|
||||||
|
"/usr/local/cuda/lib64/libcublas.so.12",
|
||||||
|
"/usr/local/cuda/lib64/libcublasLt.so.12",
|
||||||
|
"/usr/local/cuda/lib64/libcudart.so.12",
|
||||||
|
"/usr/local/cuda/lib64/libcufft.so.11",
|
||||||
|
"/usr/local/cuda/lib64/libcusparse.so.12",
|
||||||
|
"/usr/local/cuda/lib64/libcusparseLt.so.0",
|
||||||
|
"/usr/local/cuda/lib64/libcusolver.so.11",
|
||||||
|
"/usr/local/cuda/lib64/libcurand.so.10",
|
||||||
|
"/usr/local/cuda/lib64/libnvToolsExt.so.1",
|
||||||
|
"/usr/local/cuda/lib64/libnvJitLink.so.12",
|
||||||
|
"/usr/local/cuda/lib64/libnvrtc.so.12",
|
||||||
|
"/usr/local/cuda/lib64/libnvrtc-builtins.so.12.4",
|
||||||
|
"/usr/local/cuda/lib64/libcudnn_adv.so.9",
|
||||||
|
"/usr/local/cuda/lib64/libcudnn_cnn.so.9",
|
||||||
|
"/usr/local/cuda/lib64/libcudnn_graph.so.9",
|
||||||
|
"/usr/local/cuda/lib64/libcudnn_ops.so.9",
|
||||||
|
"/usr/local/cuda/lib64/libcudnn_engines_runtime_compiled.so.9",
|
||||||
|
"/usr/local/cuda/lib64/libcudnn_engines_precompiled.so.9",
|
||||||
|
"/usr/local/cuda/lib64/libcudnn_heuristic.so.9",
|
||||||
|
"/opt/conda/envs/aarch64_env/lib/libgomp.so.1",
|
||||||
|
"/usr/lib64/libgfortran.so.5",
|
||||||
|
"/acl/build/libarm_compute.so",
|
||||||
|
"/acl/build/libarm_compute_graph.so",
|
||||||
|
]
|
||||||
|
if enable_cuda:
|
||||||
|
libs_to_copy += [
|
||||||
|
"/usr/local/lib/libnvpl_lapack_lp64_gomp.so.0",
|
||||||
|
"/usr/local/lib/libnvpl_blas_lp64_gomp.so.0",
|
||||||
|
"/usr/local/lib/libnvpl_lapack_core.so.0",
|
||||||
|
"/usr/local/lib/libnvpl_blas_core.so.0",
|
||||||
|
]
|
||||||
|
else:
|
||||||
|
libs_to_copy += [
|
||||||
|
"/opt/OpenBLAS/lib/libopenblas.so.0",
|
||||||
|
]
|
||||||
|
# Copy libraries to unzipped_folder/a/lib
|
||||||
|
for lib_path in libs_to_copy:
|
||||||
|
lib_name = os.path.basename(lib_path)
|
||||||
|
shutil.copy2(lib_path, f"{folder}/tmp/torch/lib/{lib_name}")
|
||||||
|
os.system(
|
||||||
|
f"cd {folder}/tmp/torch/lib/; "
|
||||||
|
f"patchelf --set-rpath '$ORIGIN' --force-rpath {folder}/tmp/torch/lib/{lib_name}"
|
||||||
|
)
|
||||||
|
os.mkdir(f"{folder}/cuda_wheel")
|
||||||
|
os.system(f"cd {folder}/tmp/; zip -r {folder}/cuda_wheel/{wheelname} *")
|
||||||
|
shutil.move(
|
||||||
|
f"{folder}/cuda_wheel/{wheelname}",
|
||||||
|
f"{folder}/{wheelname}",
|
||||||
|
copy_function=shutil.copy2,
|
||||||
|
)
|
||||||
|
os.system(f"rm -rf {folder}/tmp/ {folder}/cuda_wheel/")
|
||||||
|
|
||||||
|
|
||||||
|
def complete_wheel(folder: str) -> str:
|
||||||
|
"""
|
||||||
|
Complete wheel build and put in artifact location
|
||||||
|
"""
|
||||||
|
wheel_name = list_dir(f"/{folder}/dist")[0]
|
||||||
|
|
||||||
|
if "pytorch" in folder and not enable_cuda:
|
||||||
|
print("Repairing Wheel with AuditWheel")
|
||||||
|
check_call(["auditwheel", "repair", f"dist/{wheel_name}"], cwd=folder)
|
||||||
|
repaired_wheel_name = list_dir(f"/{folder}/wheelhouse")[0]
|
||||||
|
|
||||||
|
print(f"Moving {repaired_wheel_name} wheel to /{folder}/dist")
|
||||||
|
os.rename(
|
||||||
|
f"/{folder}/wheelhouse/{repaired_wheel_name}",
|
||||||
|
f"/{folder}/dist/{repaired_wheel_name}",
|
||||||
|
)
|
||||||
|
else:
|
||||||
|
repaired_wheel_name = wheel_name
|
||||||
|
|
||||||
|
print(f"Copying {repaired_wheel_name} to artifacts")
|
||||||
|
shutil.copy2(
|
||||||
|
f"/{folder}/dist/{repaired_wheel_name}", f"/artifacts/{repaired_wheel_name}"
|
||||||
|
)
|
||||||
|
|
||||||
|
return repaired_wheel_name
|
||||||
|
|
||||||
|
|
||||||
|
def parse_arguments():
|
||||||
|
"""
|
||||||
|
Parse inline arguments
|
||||||
|
"""
|
||||||
|
from argparse import ArgumentParser
|
||||||
|
|
||||||
|
parser = ArgumentParser("AARCH64 wheels python CD")
|
||||||
|
parser.add_argument("--debug", action="store_true")
|
||||||
|
parser.add_argument("--build-only", action="store_true")
|
||||||
|
parser.add_argument("--test-only", type=str)
|
||||||
|
parser.add_argument("--enable-mkldnn", action="store_true")
|
||||||
|
parser.add_argument("--enable-cuda", action="store_true")
|
||||||
|
return parser.parse_args()
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
"""
|
||||||
|
Entry Point
|
||||||
|
"""
|
||||||
|
args = parse_arguments()
|
||||||
|
enable_mkldnn = args.enable_mkldnn
|
||||||
|
enable_cuda = args.enable_cuda
|
||||||
|
repo = Repository("/pytorch")
|
||||||
|
branch = repo.head.name
|
||||||
|
if branch == "HEAD":
|
||||||
|
branch = "master"
|
||||||
|
|
||||||
|
print("Building PyTorch wheel")
|
||||||
|
build_vars = "MAX_JOBS=5 CMAKE_SHARED_LINKER_FLAGS=-Wl,-z,max-page-size=0x10000 "
|
||||||
|
os.system("cd /pytorch; python setup.py clean")
|
||||||
|
|
||||||
|
override_package_version = os.getenv("OVERRIDE_PACKAGE_VERSION")
|
||||||
|
if override_package_version is not None:
|
||||||
|
version = override_package_version
|
||||||
|
build_vars += (
|
||||||
|
f"BUILD_TEST=0 PYTORCH_BUILD_VERSION={version} PYTORCH_BUILD_NUMBER=1 "
|
||||||
|
)
|
||||||
|
elif branch in ["nightly", "master"]:
|
||||||
|
build_date = (
|
||||||
|
check_output(["git", "log", "--pretty=format:%cs", "-1"], cwd="/pytorch")
|
||||||
|
.decode()
|
||||||
|
.replace("-", "")
|
||||||
|
)
|
||||||
|
version = (
|
||||||
|
check_output(["cat", "version.txt"], cwd="/pytorch").decode().strip()[:-2]
|
||||||
|
)
|
||||||
|
if enable_cuda:
|
||||||
|
desired_cuda = os.getenv("DESIRED_CUDA")
|
||||||
|
build_vars += f"BUILD_TEST=0 PYTORCH_BUILD_VERSION={version}.dev{build_date}+{desired_cuda} PYTORCH_BUILD_NUMBER=1 "
|
||||||
|
else:
|
||||||
|
build_vars += f"BUILD_TEST=0 PYTORCH_BUILD_VERSION={version}.dev{build_date} PYTORCH_BUILD_NUMBER=1 "
|
||||||
|
elif branch.startswith(("v1.", "v2.")):
|
||||||
|
build_vars += f"BUILD_TEST=0 PYTORCH_BUILD_VERSION={branch[1:branch.find('-')]} PYTORCH_BUILD_NUMBER=1 "
|
||||||
|
|
||||||
|
if enable_mkldnn:
|
||||||
|
build_ArmComputeLibrary()
|
||||||
|
print("build pytorch with mkldnn+acl backend")
|
||||||
|
build_vars += (
|
||||||
|
"USE_MKLDNN=ON USE_MKLDNN_ACL=ON "
|
||||||
|
"ACL_ROOT_DIR=/acl "
|
||||||
|
"LD_LIBRARY_PATH=/pytorch/build/lib:/acl/build:$LD_LIBRARY_PATH "
|
||||||
|
"ACL_INCLUDE_DIR=/acl/build "
|
||||||
|
"ACL_LIBRARY=/acl/build "
|
||||||
|
)
|
||||||
|
if enable_cuda:
|
||||||
|
build_vars += "BLAS=NVPL "
|
||||||
|
else:
|
||||||
|
build_vars += "BLAS=OpenBLAS OpenBLAS_HOME=/OpenBLAS "
|
||||||
|
else:
|
||||||
|
print("build pytorch without mkldnn backend")
|
||||||
|
|
||||||
|
os.system(f"cd /pytorch; {build_vars} python3 setup.py bdist_wheel")
|
||||||
|
if enable_cuda:
|
||||||
|
print("Updating Cuda Dependency")
|
||||||
|
filename = os.listdir("/pytorch/dist/")
|
||||||
|
wheel_path = f"/pytorch/dist/{filename[0]}"
|
||||||
|
update_wheel(wheel_path)
|
||||||
|
pytorch_wheel_name = complete_wheel("/pytorch/")
|
||||||
|
print(f"Build Complete. Created {pytorch_wheel_name}..")
|
1041
.ci/aarch64_linux/build_aarch64_wheel.py
Executable file
1041
.ci/aarch64_linux/build_aarch64_wheel.py
Executable file
File diff suppressed because it is too large
Load Diff
87
.ci/aarch64_linux/embed_library.py
Normal file
87
.ci/aarch64_linux/embed_library.py
Normal file
@ -0,0 +1,87 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
|
||||||
|
import os
|
||||||
|
import shutil
|
||||||
|
import sys
|
||||||
|
from subprocess import check_call
|
||||||
|
from tempfile import TemporaryDirectory
|
||||||
|
|
||||||
|
from auditwheel.elfutils import elf_file_filter
|
||||||
|
from auditwheel.lddtree import lddtree
|
||||||
|
from auditwheel.patcher import Patchelf
|
||||||
|
from auditwheel.repair import copylib
|
||||||
|
from auditwheel.wheeltools import InWheelCtx
|
||||||
|
|
||||||
|
|
||||||
|
def replace_tag(filename):
|
||||||
|
with open(filename) as f:
|
||||||
|
lines = f.read().split("\\n")
|
||||||
|
for i, line in enumerate(lines):
|
||||||
|
if not line.startswith("Tag: "):
|
||||||
|
continue
|
||||||
|
lines[i] = line.replace("-linux_", "-manylinux2014_")
|
||||||
|
print(f"Updated tag from {line} to {lines[i]}")
|
||||||
|
|
||||||
|
with open(filename, "w") as f:
|
||||||
|
f.write("\\n".join(lines))
|
||||||
|
|
||||||
|
|
||||||
|
class AlignedPatchelf(Patchelf):
|
||||||
|
def set_soname(self, file_name: str, new_soname: str) -> None:
|
||||||
|
check_call(
|
||||||
|
["patchelf", "--page-size", "65536", "--set-soname", new_soname, file_name]
|
||||||
|
)
|
||||||
|
|
||||||
|
def replace_needed(self, file_name: str, soname: str, new_soname: str) -> None:
|
||||||
|
check_call(
|
||||||
|
[
|
||||||
|
"patchelf",
|
||||||
|
"--page-size",
|
||||||
|
"65536",
|
||||||
|
"--replace-needed",
|
||||||
|
soname,
|
||||||
|
new_soname,
|
||||||
|
file_name,
|
||||||
|
]
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def embed_library(whl_path, lib_soname, update_tag=False):
|
||||||
|
patcher = AlignedPatchelf()
|
||||||
|
out_dir = TemporaryDirectory()
|
||||||
|
whl_name = os.path.basename(whl_path)
|
||||||
|
tmp_whl_name = os.path.join(out_dir.name, whl_name)
|
||||||
|
with InWheelCtx(whl_path) as ctx:
|
||||||
|
torchlib_path = os.path.join(ctx._tmpdir.name, "torch", "lib")
|
||||||
|
ctx.out_wheel = tmp_whl_name
|
||||||
|
new_lib_path, new_lib_soname = None, None
|
||||||
|
for filename, _ in elf_file_filter(ctx.iter_files()):
|
||||||
|
if not filename.startswith("torch/lib"):
|
||||||
|
continue
|
||||||
|
libtree = lddtree(filename)
|
||||||
|
if lib_soname not in libtree["needed"]:
|
||||||
|
continue
|
||||||
|
lib_path = libtree["libs"][lib_soname]["path"]
|
||||||
|
if lib_path is None:
|
||||||
|
print(f"Can't embed {lib_soname} as it could not be found")
|
||||||
|
break
|
||||||
|
if lib_path.startswith(torchlib_path):
|
||||||
|
continue
|
||||||
|
|
||||||
|
if new_lib_path is None:
|
||||||
|
new_lib_soname, new_lib_path = copylib(lib_path, torchlib_path, patcher)
|
||||||
|
patcher.replace_needed(filename, lib_soname, new_lib_soname)
|
||||||
|
print(f"Replacing {lib_soname} with {new_lib_soname} for {filename}")
|
||||||
|
if update_tag:
|
||||||
|
# Add manylinux2014 tag
|
||||||
|
for filename in ctx.iter_files():
|
||||||
|
if os.path.basename(filename) != "WHEEL":
|
||||||
|
continue
|
||||||
|
replace_tag(filename)
|
||||||
|
shutil.move(tmp_whl_name, whl_path)
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
embed_library(
|
||||||
|
sys.argv[1], "libgomp.so.1", len(sys.argv) > 2 and sys.argv[2] == "--update-tag"
|
||||||
|
)
|
2
.github/workflows/_binary-build-linux.yml
vendored
2
.github/workflows/_binary-build-linux.yml
vendored
@ -271,7 +271,7 @@ jobs:
|
|||||||
)
|
)
|
||||||
docker exec -t -w "${PYTORCH_ROOT}" "${container_name}" bash -c "bash .circleci/scripts/binary_populate_env.sh"
|
docker exec -t -w "${PYTORCH_ROOT}" "${container_name}" bash -c "bash .circleci/scripts/binary_populate_env.sh"
|
||||||
if [[ ${BUILD_ENVIRONMENT} == *"aarch64"* ]]; then
|
if [[ ${BUILD_ENVIRONMENT} == *"aarch64"* ]]; then
|
||||||
docker exec -t "${container_name}" bash -c "source ${BINARY_ENV_FILE} && bash /builder/aarch64_linux/aarch64_ci_build.sh"
|
docker exec -t "${container_name}" bash -c "source ${BINARY_ENV_FILE} && bash /pytorch/.ci/aarch64_linux/aarch64_ci_build.sh"
|
||||||
elif [[ ${{ inputs.PACKAGE_TYPE }} == "manywheel" || ${{ inputs.PACKAGE_TYPE }} == "libtorch" ]]; then
|
elif [[ ${{ inputs.PACKAGE_TYPE }} == "manywheel" || ${{ inputs.PACKAGE_TYPE }} == "libtorch" ]]; then
|
||||||
docker exec -t "${container_name}" bash -c "source ${BINARY_ENV_FILE} && bash /pytorch/.ci/${{ inputs.PACKAGE_TYPE }}/build.sh"
|
docker exec -t "${container_name}" bash -c "source ${BINARY_ENV_FILE} && bash /pytorch/.ci/${{ inputs.PACKAGE_TYPE }}/build.sh"
|
||||||
else
|
else
|
||||||
|
Reference in New Issue
Block a user