summaryrefslogtreecommitdiff
path: root/var/spack/repos/builtin/packages/py-torchaudio/package.py
diff options
context:
space:
mode:
Diffstat (limited to 'var/spack/repos/builtin/packages/py-torchaudio/package.py')
-rw-r--r--var/spack/repos/builtin/packages/py-torchaudio/package.py130
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)