diff options
Diffstat (limited to 'var/spack/repos/builtin/packages/py-torchaudio/package.py')
-rw-r--r-- | var/spack/repos/builtin/packages/py-torchaudio/package.py | 130 |
1 files changed, 95 insertions, 35 deletions
diff --git a/var/spack/repos/builtin/packages/py-torchaudio/package.py b/var/spack/repos/builtin/packages/py-torchaudio/package.py index 9d0d39798b..59a7e2825b 100644 --- a/var/spack/repos/builtin/packages/py-torchaudio/package.py +++ b/var/spack/repos/builtin/packages/py-torchaudio/package.py @@ -15,8 +15,18 @@ class PyTorchaudio(PythonPackage): submodules = True license("BSD-2-Clause") + maintainers("adamjstewart") version("main", branch="main") + version("2.5.1", tag="v2.5.1", commit="1661daf10599ca8889f092ec37814fabbe202bb0") + version("2.5.0", tag="v2.5.0", commit="56bc006d56a0d4960de6a1e0b6340cba4eda05cd") + version("2.4.1", tag="v2.4.1", commit="e8cbe17769796ce963fbc71b8990f1474774e6d2") + version("2.4.0", tag="v2.4.0", commit="69d40773dc4ed86643820c21a8a880e4d074a46e") + version("2.3.1", tag="v2.3.1", commit="3edcf69e78a3c9a3077a11159861422440ec7d4a") + version("2.3.0", tag="v2.3.0", commit="952ea7457bcc3ed0669e7741ff23015c426d6322") + version("2.2.2", tag="v2.2.2", commit="cefdb369247668e1dba74de503d4d996124b6b11") + version("2.2.1", tag="v2.2.1", commit="06ea59c97d56868e487490702d01b3cf59103b9c") + version("2.2.0", tag="v2.2.0", commit="08901ade5d17d3e3cf6fc039cbd601cbd2853686") version("2.1.2", tag="v2.1.2", commit="c4c1957d24b423200fd83591d46066135979a5a8") version("2.1.1", tag="v2.1.1", commit="db624844f5c95bb7618fe5a5f532bf9b68efeb45") version("2.1.0", tag="v2.1.0", commit="6ea1133706801ec6e81bb29142da2e21a8583a0a") @@ -42,60 +52,110 @@ class PyTorchaudio(PythonPackage): version("0.5.0", tag="v0.5.0", commit="09494ea545738538f9db2dceeffe10d421060ee5") version("0.4.0", tag="v0.4.0", commit="8afed303af3de41f3586007079c0534543c8f663") - # https://pytorch.org/audio/main/installation.html#dependencies - depends_on("python@3.8:3.11", when="@2:", type=("build", "link", "run")) - depends_on("python@:3.10", when="@0.12:0", type=("build", "link", "run")) - depends_on("python@:3.9", when="@0.7.2:0.11", type=("build", "link", "run")) - depends_on("python@:3.8", when="@:0.7.0", type=("build", "link", "run")) + depends_on("c", type="build") + depends_on("cxx", type="build") + + with default_args(type=("build", "link", "run")): + # Based on PyPI wheel availability + depends_on("python@3.9:3.12", when="@2.5:") + depends_on("python@3.8:3.12", when="@2.2:2.4") + depends_on("python@3.8:3.11", when="@2.0:2.1") + depends_on("python@:3.10", when="@0.12:0") + depends_on("python@:3.9", when="@0.7.2:0.11") + depends_on("python@:3.8", when="@:0.7.0") + + depends_on("py-torch@main", when="@main") + depends_on("py-torch@2.5.1", when="@2.5.1") + depends_on("py-torch@2.5.0", when="@2.5.0") + depends_on("py-torch@2.4.1", when="@2.4.1") + depends_on("py-torch@2.4.0", when="@2.4.0") + depends_on("py-torch@2.3.1", when="@2.3.1") + depends_on("py-torch@2.3.0", when="@2.3.0") + depends_on("py-torch@2.2.2", when="@2.2.2") + depends_on("py-torch@2.2.1", when="@2.2.1") + depends_on("py-torch@2.2.0", when="@2.2.0") + depends_on("py-torch@2.1.2", when="@2.1.2") + depends_on("py-torch@2.1.1", when="@2.1.1") + depends_on("py-torch@2.1.0", when="@2.1.0") + depends_on("py-torch@2.0.1", when="@2.0.2") + depends_on("py-torch@2.0.0", when="@2.0.1") + depends_on("py-torch@1.13.1", when="@0.13.1") + depends_on("py-torch@1.13.0", when="@0.13.0") + depends_on("py-torch@1.12.1", when="@0.12.1") + depends_on("py-torch@1.12.0", when="@0.12.0") + depends_on("py-torch@1.11.0", when="@0.11.0") + depends_on("py-torch@1.10.2", when="@0.10.2") + depends_on("py-torch@1.10.1", when="@0.10.1") + depends_on("py-torch@1.10.0", when="@0.10.0") + depends_on("py-torch@1.9.1", when="@0.9.1") + depends_on("py-torch@1.9.0", when="@0.9.0") + depends_on("py-torch@1.8.2", when="@0.8.2") + depends_on("py-torch@1.8.1", when="@0.8.1") + depends_on("py-torch@1.8.0", when="@0.8.0") + depends_on("py-torch@1.7.1", when="@0.7.2") + depends_on("py-torch@1.7.0", when="@0.7.0") + depends_on("py-torch@1.6.0", when="@0.6.0") + depends_on("py-torch@1.5.1", when="@0.5.1") + depends_on("py-torch@1.5.0", when="@0.5.0") + depends_on("py-torch@1.4.1", when="@0.4.0") # CMakelists.txt depends_on("cmake@3.18:", when="@0.10:", type="build") depends_on("cmake@3.5:", when="@0.8:", type="build") depends_on("ninja", when="@0.8:", type="build") + # prior to 2.1 ffmpeg was vendored + depends_on("ffmpeg@:6", when="@2.1:") + # setup.py depends_on("py-setuptools", type="build") depends_on("py-pybind11", when="@0.12:", type=("build", "link")) depends_on("pkgconfig", type="build") depends_on("sox") - depends_on("py-torch@main", when="@main", type=("build", "link", "run")) - depends_on("py-torch@2.1.2", when="@2.1.2", type=("build", "link", "run")) - depends_on("py-torch@2.1.1", when="@2.1.1", type=("build", "link", "run")) - depends_on("py-torch@2.1.0", when="@2.1.0", type=("build", "link", "run")) - depends_on("py-torch@2.0.1", when="@2.0.2", type=("build", "link", "run")) - depends_on("py-torch@2.0.0", when="@2.0.1", type=("build", "link", "run")) - depends_on("py-torch@1.13.1", when="@0.13.1", type=("build", "link", "run")) - depends_on("py-torch@1.13.0", when="@0.13.0", type=("build", "link", "run")) - depends_on("py-torch@1.12.1", when="@0.12.1", type=("build", "link", "run")) - depends_on("py-torch@1.12.0", when="@0.12.0", type=("build", "link", "run")) - depends_on("py-torch@1.11.0", when="@0.11.0", type=("build", "link", "run")) - depends_on("py-torch@1.10.2", when="@0.10.2", type=("build", "link", "run")) - depends_on("py-torch@1.10.1", when="@0.10.1", type=("build", "link", "run")) - depends_on("py-torch@1.10.0", when="@0.10.0", type=("build", "link", "run")) - depends_on("py-torch@1.9.1", when="@0.9.1", type=("build", "link", "run")) - depends_on("py-torch@1.9.0", when="@0.9.0", type=("build", "link", "run")) - depends_on("py-torch@1.8.2", when="@0.8.2", type=("build", "link", "run")) - depends_on("py-torch@1.8.1", when="@0.8.1", type=("build", "link", "run")) - depends_on("py-torch@1.8.0", when="@0.8.0", type=("build", "link", "run")) - depends_on("py-torch@1.7.1", when="@0.7.2", type=("build", "link", "run")) - depends_on("py-torch@1.7.0", when="@0.7.0", type=("build", "link", "run")) - depends_on("py-torch@1.6.0", when="@0.6.0", type=("build", "link", "run")) - depends_on("py-torch@1.5.1", when="@0.5.1", type=("build", "link", "run")) - depends_on("py-torch@1.5.0", when="@0.5.0", type=("build", "link", "run")) - depends_on("py-torch@1.4.1", when="@0.4.0", type=("build", "link", "run")) + # https://github.com/pytorch/audio/pull/3811 + patch( + "https://github.com/pytorch/audio/pull/3811.patch?full_index=1", + sha256="34dce3403abb03f62827e8a1efcdb2bf7742477a01f155ebb9c7fefe9588b132", + when="@2.2:", + ) + conflicts("^cuda@12.5:", when="@:2.1") + + def patch(self): + # Add missing rpaths, which requires patching due to hardcoded cmake_args + if self.spec.satisfies("@0.8:"): + rpaths = [f"{python_platlib}/torchaudio/lib", f"{python_platlib}/torio/lib"] + cmake_args = [ + f"-DCMAKE_INSTALL_RPATH={';'.join(rpaths)}", + "-DCMAKE_INSTALL_RPATH_USE_LINK_PATH=ON", + ] + cmake_str = ", ".join(f"'{arg}'" for arg in cmake_args) + filter_file( + "cmake_args = [", + f"cmake_args = [{cmake_str},", + "tools/setup_helpers/extension.py", + string=True, + ) + + def flag_handler(self, name, flags): + # https://github.com/pytorch/vision/issues/8653 + if name == "ldflags": + if self.spec.satisfies("%apple-clang@15:"): + flags.append("-Wl,-ld_classic") + return (flags, None, None) def setup_build_environment(self, env): # tools/setup_helpers/extension.py env.set("BUILD_SOX", 0) + if self.spec.satisfies("@2.1:"): + env.set("FFMPEG_ROOT", self.spec["ffmpeg"].prefix) + else: + # a specific ffmpeg is built but not installed, so just disable + env.set("USE_FFMPEG", "0") + if "+cuda" in self.spec["py-torch"]: env.set("USE_CUDA", 1) - torch_cuda_arch_list = ";".join( - "{0:.1f}".format(float(i) / 10.0) - for i in self.spec["py-torch"].variants["cuda_arch"].value - ) - env.set("TORCH_CUDA_ARCH_LIST", torch_cuda_arch_list) else: env.set("USE_CUDA", 0) |