freebsd-ports/misc/py-pytorch/Makefile
Yuri Victorovich 4719d1e11f misc/py-pytorch: Fix the problem that the cpuinfo library didn't support FreeBSD
The symptoms included error messages and exceptions.

Now the bundled cpuinfo directory is replaced with the cpuinfo patched with
the pull request patch that fixes FreeBSD compatibility.
2024-03-21 19:56:13 -07:00

82 lines
3.2 KiB
Makefile

PORTNAME= pytorch
DISTVERSIONPREFIX= v
DISTVERSION= 2.2.1
PORTREVISION= 1
CATEGORIES= misc # machine-learning
MASTER_SITES= https://github.com/pytorch/pytorch/releases/download/v${DISTVERSION}/
PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX}
DISTFILES= ${PORTNAME}-${DISTVERSIONFULL}${EXTRACT_SUFX} # the main tarball disappears when GH_xx tags are added w/out this line
DIST_SUBDIR= ${PORTNAME}
MAINTAINER= yuri@FreeBSD.org
COMMENT= PyTorch: Tensors and dynamic neural networks in Python
WWW= https://pytorch.org/
LICENSE= BSD3CLAUSE
LICENSE_FILE= ${WRKSRC}/LICENSE
BROKEN_aarch64= build fails: CMake Error at third_party/QNNPACK/CMakeLists.txt:47 (MESSAGE): Unrecognized CMAKE_SYSTEM_NAME = FreeBSD
BROKEN_i386= build fails: DispatchStub.cpp:162:29: [0m[0;1;31merror: [0m[1muse of undeclared identifier 'AVX2'[0m
BUILD_DEPENDS= cmake:devel/cmake-core \
gmake:devel/gmake \
pybind11>0:devel/pybind11 \
${PYNUMPY} \
${LOCALBASE}/include/fxdiv.h:devel/fxdiv \
${PYTHON_PKGNAMEPREFIX}typing-extensions>0:devel/py-typing-extensions@${PY_FLAVOR} \
${PYTHON_PKGNAMEPREFIX}yaml>0:devel/py-yaml@${PY_FLAVOR}
LIB_DEPENDS= libabsl_flags.so:devel/abseil \
libblis.so:math/blis \
libmpi_cxx.so:net/openmpi4 \
libonnx.so:misc/onnx \
libopenblas.so:math/openblas \
libpthreadpool.so:devel/pthreadpool \
libprotobuf.so:devel/protobuf \
libsleef.so:math/sleef
RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}filelock>0:sysutils/py-filelock@${PY_FLAVOR} \
${PYTHON_PKGNAMEPREFIX}Jinja2>=0:devel/py-Jinja2@${PY_FLAVOR} \
${PYTHON_PKGNAMEPREFIX}networkx>0:math/py-networkx@${PY_FLAVOR} \
${PYNUMPY} \
${PYTHON_PKGNAMEPREFIX}sympy>0:math/py-sympy@${PY_FLAVOR} \
${PYTHON_PKGNAMEPREFIX}typing-extensions>0:devel/py-typing-extensions@${PY_FLAVOR}
RUN_DEPENDS+= ${PYTHON_PKGNAMEPREFIX}dill>0:devel/py-dill@${PY_FLAVOR} # optional dependency
USES= compiler:c++17-lang localbase:ldflags python
USE_PYTHON= distutils autoplist
USE_GITHUB= nodefault
GH_TUPLE= pytorch:cpuinfo:3a3b76bc8845d0f4a2ea3108e256313458c5de03:cpuinfo/cpuinfo-with-freebsd-support # https://github.com/pytorch/cpuinfo/pull/230/commits
MAKE_ENV= USE_NINJA=no # ninja breaks for some reason
MAKE_ENV+= BUILD_TEST=0 # ninja breaks for some reason
MAKE_ENV+= USE_MKLDNN=0 # disable MKLDNN that doesn't exist, see https://github.com/pytorch/pytorch/issues/100957
MAKE_ENV+= USE_CUDNN=0
LDFLAGS+= -lexecinfo
BINARY_ALIAS= make=${GMAKE}
POST_PLIST= fix-plist
.include <bsd.port.options.mk>
.if ${OPSYS} == FreeBSD && ( ${OSVERSION} >= 1400091 || ( ${OSVERSION} >= 1302507 && ${OSVERSION} < 1400000 ))
USES+= llvm:max=15
.endif
post-patch:
@cd ${WRKSRC} && \
${RM} -r third_party/cpuinfo third_party/fbgemm/third_party/cpuinfo && \
${CP} -r cpuinfo-with-freebsd-support third_party/cpuinfo && \
${CP} -r cpuinfo-with-freebsd-support third_party/fbgemm/third_party/cpuinfo
post-install: # strip binaries
@${STRIP_CMD} \
${STAGEDIR}${PYTHON_SITELIBDIR}/torch/bin/torch_shm_manager \
${STAGEDIR}${PYTHON_SITELIBDIR}/torch/_C${PYTHON_EXT_SUFFIX}.so \
${STAGEDIR}${PYTHON_SITELIBDIR}/functorch/_C${PYTHON_EXT_SUFFIX}.so \
${STAGEDIR}${PYTHON_SITELIBDIR}/torch/lib/lib*.so
fix-plist: # remove the stray %%PYTHON_SITELIBDIR%%/caffe2 file
@${REINPLACE_CMD} -e "s|.*/caffe2$$||" ${TMPPLIST}
.include <bsd.port.mk>