aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Engberg <diizzy@FreeBSD.org>2023-08-05 18:46:22 +0000
committerDaniel Engberg <diizzy@FreeBSD.org>2023-08-05 19:14:21 +0000
commit69e0cbe8eaa6fb6fcb075774c4d8ef7b2a205bba (patch)
tree8cbac6e25f1e36df58c62ad32f952e084c87b417
parentc92e9cc7e11424063963839e76bdd775d87e1ee3 (diff)
downloadports-69e0cbe8eaa6fb6fcb075774c4d8ef7b2a205bba.tar.gz
ports-69e0cbe8eaa6fb6fcb075774c4d8ef7b2a205bba.zip
multimedia/vapoursynth: Update to R63
* Plugins are no longer maintained within the main project repo * Revert upstream commit 1239124c2d70f32c468326e48bfa7e9362550c36 as it breaks compatibility with Clang/LLVM with libc++ [1] 1: https://github.com/vapoursynth/vapoursynth/pull/953 Changelog: https://github.com/vapoursynth/vapoursynth/releases/tag/R63
-rw-r--r--multimedia/vapoursynth/Makefile117
-rw-r--r--multimedia/vapoursynth/distinfo6
-rw-r--r--multimedia/vapoursynth/files/patch-Makefile.am9
-rw-r--r--multimedia/vapoursynth/files/patch-configure.ac13
-rw-r--r--multimedia/vapoursynth/files/patch-src_core_expr_expr.cpp122
-rw-r--r--multimedia/vapoursynth/pkg-plist38
6 files changed, 187 insertions, 118 deletions
diff --git a/multimedia/vapoursynth/Makefile b/multimedia/vapoursynth/Makefile
index 01e7a0183990..1487516079e9 100644
--- a/multimedia/vapoursynth/Makefile
+++ b/multimedia/vapoursynth/Makefile
@@ -1,6 +1,5 @@
PORTNAME= vapoursynth
-DISTVERSION= R54
-PORTREVISION= 4
+DISTVERSION= R63
CATEGORIES= multimedia
MAINTAINER= ports@FreeBSD.org
@@ -8,101 +7,45 @@ COMMENT= Video processing framework with simplicity in mind
WWW= https://www.vapoursynth.com/
LICENSE= LGPL21+
+LICENSE_FILE= ${WRKSRC}/COPYING.LESSER
+BUILD_DEPENDS= ${BUILD_DEPENDS_${ARCH}}
+BUILD_DEPENDS_amd64= nasm:devel/nasm
+LIB_DEPENDS= libzimg.so:graphics/sekrit-twc-zimg
+
+USES= autoreconf compiler:c++17-lang gmake libtool localbase pathfix python pkgconfig
+USE_PYTHON= cython
USE_GITHUB= yes
+USE_LDCONFIG= yes
-USES= autoreconf gmake libtool localbase pathfix pkgconfig
-GNU_CONFIGURE= yes
+BINARY_ALIAS= cython=cython-${PYTHON_VER}
INSTALL_TARGET= install-strip
-USE_LDCONFIG= yes
-DATADIR= ${PREFIX}/lib/vapoursynth
-OPTIONS_DEFINE= DEBUG DOCS FRAME_GUARD
-OPTIONS_DEFAULT=${OPTIONS_GROUP_COMPS} ${OPTIONS_GROUP_PLUGINS}
-OPTIONS_SUB= yes
+GNU_CONFIGURE= yes
-OPTIONS_DEFINE_amd64= SIMD
-OPTIONS_DEFINE_i386= SIMD
-OPTIONS_DEFAULT_amd64= SIMD
+DATADIR= ${PREFIX}/lib/vapoursynth
-OPTIONS_GROUP= COMPS PLUGINS
-COMPS_DESC= Components
-OPTIONS_GROUP_COMPS= CORE PYTHON VSPIPE VSSCRIPT
-PLUGINS_DESC= Plugins
-OPTIONS_GROUP_PLUGINS= ASS EEDI3 IMAGEMAGICK MISCFILTERS MORPHO TESSERACT \
- REMOVEGRAIN VINVERSE VIVTC
+CONFIGURE_ARGS= --disable-static
-# General options
+OPTIONS_DEFINE= DEBUG DOCS FRAME_GUARD
+OPTIONS_SUB= yes
DEBUG_CONFIGURE_ENABLE= debug
-DOCS_BUILD_DEPENDS= sphinx-build:textproc/py-sphinx
-DOCS_USES= makeinfo
-DOCS_INFO= VapourSynth
+DOCS_BUILD_DEPENDS= sphinx-build:textproc/py-sphinx \
+ ${PYTHON_PKGNAMEPREFIX}sphinx_rtd_theme>0:textproc/py-sphinx_rtd_theme@${PY_FLAVOR}
DOCS_PORTDOCS= *
FRAME_GUARD_DESC= Check integrity after each filter
FRAME_GUARD_CONFIGURE_ENABLE= guard-pattern
-# VSSCRIPT or REMOVEGRAIN
-SIMD_BUILD_DEPENDS= nasm:devel/nasm
-SIMD_CONFIGURE_ENABLE= x86-asm
-
-# COMPS group
-
-CORE_DESC= Core library
-CORE_BUILD_DEPENDS= sekrit-twc-zimg>=2.9.3:graphics/sekrit-twc-zimg
-CORE_LIB_DEPENDS= libzimg.so:graphics/sekrit-twc-zimg
-CORE_USES= compiler:c++11-lib
-CORE_CONFIGURE_ENABLE= core
-
-PYTHON_USES= python
-PYTHON_USE= python=cython
-PYTHON_VARS= BINARY_ALIAS=cython=cython-${PYTHON_VER}
-PYTHON_CONFIGURE_ENABLE= python-module
-PYTHON_IMPLIES= CORE
-
-VSPIPE_DESC= Command line interface
-VSPIPE_USES= compiler:c++11-lib
-VSPIPE_CONFIGURE_ENABLE= vspipe
-VSPIPE_IMPLIES= VSSCRIPT
-
-VSSCRIPT_DESC= Scripting library
-VSSCRIPT_USES= compiler:c++11-lib python
-VSSCRIPT_CONFIGURE_ENABLE= vsscript
-
-# PLUGINS group
-
-ASS_DESC= Subtitles rendering via libass
-ASS_LIB_DEPENDS= libavcodec.so:multimedia/ffmpeg \
- libass.so:multimedia/libass
-ASS_USES= iconv
-ASS_CONFIGURE_ENABLE= subtext
-
-EEDI3_DESC= Very slow edge directed interpolation
-EEDI3_CONFIGURE_ENABLE= eedi3
-
-IMAGEMAGICK_USES= compiler:c++11-lib magick:7
-IMAGEMAGICK_CONFIGURE_ENABLE= imwri
-
-TESSERACT_DESC= Optical Character Recognition via Tesseract
-TESSERACT_LIB_DEPENDS= libtesseract.so:graphics/tesseract
-TESSERACT_CONFIGURE_ENABLE= ocr
-
-MISCFILTERS_DESC= Miscellaneous filters
-MISCFILTERS_CONFIGURE_ENABLE= miscfilters
-
-MORPHO_DESC= Morphological filter
-MORPHO_CONFIGURE_ENABLE= morpho
-
-REMOVEGRAIN_DESC= 3x3 median and convolution denoising
-REMOVEGRAIN_CONFIGURE_ENABLE= removegrain
-
-VINVERSE_DESC= Remove residual combing
-VINVERSE_CONFIGURE_ENABLE= vinverse
+.include <bsd.port.pre.mk>
-VIVTC_DESC= Field matching, inverse telecine and decimation
-VIVTC_CONFIGURE_ENABLE= vivtc
+.if ${ARCH} == amd64 && defined(MACHINE_CPU) && ${MACHINE_CPU:Mavx2}
+CONFIGURE_ARGS+= --enable-x86-asm
+.else
+CONFIGURE_ARGS+= --disable-x86-asm
+.endif
post-patch:
@${REINPLACE_CMD} -e 's/x86_64/&|amd64/' \
@@ -111,20 +54,10 @@ post-patch:
${WRKSRC}/configure.ac
post-build-DOCS-on:
- @${DO_MAKE_BUILD} html texinfo -C${WRKSRC}/doc
- @${DO_MAKE_BUILD} info -C${WRKSRC}/doc/_build/texinfo
- @if [ -n "${PORT_OPTIONS:MVSPIPE}" ]; then \
- ${DO_MAKE_BUILD} man -C${WRKSRC}/doc; \
- fi
+ @${LOCALBASE}/bin/sphinx-build-${PYTHON_VER} -d ${WRKDIR} ${WRKSRC}/doc ${WRKSRC}/doc/_build/html
post-install-DOCS-on:
- ${INSTALL_DATA} ${WRKSRC}/doc/_build/texinfo/VapourSynth.info \
- ${STAGEDIR}${PREFIX}/${INFO_PATH}
(cd ${WRKSRC}/doc/_build/html && ${COPYTREE_SHARE} \
"${PORTDOCS}" ${STAGEDIR}${DOCSDIR})
- @if [ -n "${PORT_OPTIONS:MVSPIPE}" ]; then \
- ${INSTALL_MAN} -v ${WRKSRC}/doc/_build/man/vspipe.1 \
- ${STAGEDIR}${PREFIX}/share/man/man1; \
- fi
-.include <bsd.port.mk>
+.include <bsd.port.post.mk>
diff --git a/multimedia/vapoursynth/distinfo b/multimedia/vapoursynth/distinfo
index 1991a6620798..4bdd08f95429 100644
--- a/multimedia/vapoursynth/distinfo
+++ b/multimedia/vapoursynth/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1626721847
-SHA256 (vapoursynth-vapoursynth-R54_GH0.tar.gz) = ad0c446adcb3877c253dc8c1372a053ad35022bcf42600889b927d2797c5330b
-SIZE (vapoursynth-vapoursynth-R54_GH0.tar.gz) = 631275
+TIMESTAMP = 1690671648
+SHA256 (vapoursynth-vapoursynth-R63_GH0.tar.gz) = ed909b3c58e79bcbb056d07c5d301222ba8001222b4b40d5c1123be35fea9ae2
+SIZE (vapoursynth-vapoursynth-R63_GH0.tar.gz) = 1869415
diff --git a/multimedia/vapoursynth/files/patch-Makefile.am b/multimedia/vapoursynth/files/patch-Makefile.am
new file mode 100644
index 000000000000..aa7a5ce75ba1
--- /dev/null
+++ b/multimedia/vapoursynth/files/patch-Makefile.am
@@ -0,0 +1,9 @@
+--- Makefile.am.orig 2023-07-30 11:59:40 UTC
++++ Makefile.am
+@@ -1,5 +1,5 @@
+ warningflags = -Wall -Wextra -Wno-unused-parameter -Wno-unused-function -Wno-ignored-attributes
+-commoncflags = -O3 -fvisibility=hidden $(warningflags) -I$(srcdir)/include $(DEBUGCFLAGS) $(MFLAGS) $(UNICODECFLAGS) $(STACKREALIGN)
++commoncflags = -fvisibility=hidden $(warningflags) -I$(srcdir)/include $(DEBUGCFLAGS) $(MFLAGS) $(UNICODECFLAGS) $(STACKREALIGN)
+ AM_CXXFLAGS = -std=c++17 $(commoncflags)
+ AM_CFLAGS = -std=c99 $(commoncflags)
+ ACLOCAL_AMFLAGS = -I m4
diff --git a/multimedia/vapoursynth/files/patch-configure.ac b/multimedia/vapoursynth/files/patch-configure.ac
new file mode 100644
index 000000000000..195bf51545e5
--- /dev/null
+++ b/multimedia/vapoursynth/files/patch-configure.ac
@@ -0,0 +1,13 @@
+--- configure.ac.orig 2023-07-30 14:56:15 UTC
++++ configure.ac
+@@ -109,8 +109,8 @@ AS_IF(
+ ]
+ )
+
+- AC_SUBST([MFLAGS], ["-mfpmath=sse -msse2"])
+- AC_SUBST([AVX2FLAGS], ["-mavx2 -mfma -mtune=haswell"])
++ AC_SUBST([MFLAGS], [""])
++ AC_SUBST([AVX2FLAGS], [""])
+ ]
+ )
+
diff --git a/multimedia/vapoursynth/files/patch-src_core_expr_expr.cpp b/multimedia/vapoursynth/files/patch-src_core_expr_expr.cpp
new file mode 100644
index 000000000000..d59277f96e8c
--- /dev/null
+++ b/multimedia/vapoursynth/files/patch-src_core_expr_expr.cpp
@@ -0,0 +1,122 @@
+--- src/core/expr/expr.cpp.orig 2023-06-06 12:15:18 UTC
++++ src/core/expr/expr.cpp
+@@ -20,15 +20,15 @@
+
+ #include <algorithm>
+ #include <cassert>
+-#include <charconv>
+ #include <cmath>
++#include <iostream>
++#include <locale>
+ #include <map>
+ #include <memory>
+ #include <set>
+ #include <sstream>
+ #include <stdexcept>
+ #include <string>
+-#include <string_view>
+ #include <unordered_map>
+ #include <unordered_set>
+ #include <vector>
+@@ -136,9 +136,9 @@ bool equalSubTree(const ExpressionTreeNode *lhs, const
+ return true;
+ }
+
+-std::vector<std::string_view> tokenize(const std::string &expr)
++std::vector<std::string> tokenize(const std::string &expr)
+ {
+- std::vector<std::string_view> tokens;
++ std::vector<std::string> tokens;
+ auto it = expr.begin();
+ auto prev = expr.begin();
+
+@@ -147,20 +147,20 @@ std::vector<std::string_view> tokenize(const std::stri
+
+ if (std::isspace(c)) {
+ if (it != prev)
+- tokens.push_back({ expr.c_str() + (prev - expr.begin()), static_cast<size_t>(it - prev) });
++ tokens.push_back(expr.substr(prev - expr.begin(), it - prev));
+ prev = it + 1;
+ }
+ ++it;
+ }
+ if (prev != expr.end())
+- tokens.push_back({ expr.c_str() + (prev - expr.begin()), static_cast<size_t>(expr.end() - prev) });
++ tokens.push_back(expr.substr(prev - expr.begin(), expr.end() - prev));
+
+ return tokens;
+ }
+
+-ExprOp decodeToken(std::string_view token)
++ExprOp decodeToken(const std::string &token)
+ {
+- static const std::unordered_map<std::string_view, ExprOp> simple{
++ static const std::unordered_map<std::string, ExprOp> simple{
+ { "+", { ExprOpType::ADD } },
+ { "-", { ExprOpType::SUB } },
+ { "*", { ExprOpType::MUL } },
+@@ -195,26 +195,34 @@ ExprOp decodeToken(std::string_view token)
+ return{ ExprOpType::MEM_LOAD_U8, token[0] >= 'x' ? token[0] - 'x' : token[0] - 'a' + 3 };
+ } else if (token.substr(0, 3) == "dup" || token.substr(0, 4) == "swap") {
+ size_t prefix = token[0] == 'd' ? 3 : 4;
++ size_t count = 0;
+ int idx = -1;
+
+- auto result = std::from_chars(token.data() + prefix, token.data() + token.size(), idx);
+- if (idx < 0 || result.ptr != token.data() + token.size())
+- throw std::runtime_error("illegal token: " + std::string{ token });
++ try {
++ idx = std::stoi(token.substr(prefix), &count);
++ } catch (...) {
++ // ...
++ }
++
++ if (idx < 0 || prefix + count != token.size())
++ throw std::runtime_error("illegal token: " + token);
+ return{ token[0] == 'd' ? ExprOpType::DUP : ExprOpType::SWAP, idx };
+ } else {
+ float f;
+- auto result = std::from_chars(token.data(), token.data() + token.size(), f);
+- if (result.ec == std::errc::invalid_argument)
+- throw std::runtime_error("failed to convert '" + std::string{ token } + "' to float");
+- if (result.ptr != token.data() + token.size())
+- throw std::runtime_error("failed to convert '" + std::string{ token } + "' to float, not the whole token could be converted");
++ std::string s;
++ std::istringstream numStream(token);
++ numStream.imbue(std::locale::classic());
++ if (!(numStream >> f))
++ throw std::runtime_error("failed to convert '" + token + "' to float");
++ if (numStream >> s)
++ throw std::runtime_error("failed to convert '" + token + "' to float, not the whole token could be converted");
+ return{ ExprOpType::CONSTANT, f };
+ }
+ }
+
+ ExpressionTree parseExpr(const std::string &expr, const VSVideoInfo * const srcFormats[], int numInputs)
+ {
+- static constexpr unsigned char numOperands[] = {
++ constexpr unsigned char numOperands[] = {
+ 0, // MEM_LOAD_U8
+ 0, // MEM_LOAD_U16
+ 0, // MEM_LOAD_F16
+@@ -256,16 +264,16 @@ ExpressionTree parseExpr(const std::string &expr, cons
+ ExpressionTree tree;
+ std::vector<ExpressionTreeNode *> stack;
+
+- for (std::string_view tok : tokens) {
++ for (const std::string &tok : tokens) {
+ ExprOp op = decodeToken(tok);
+
+ // Check validity.
+ if (op.type == ExprOpType::MEM_LOAD_U8 && op.imm.i >= numInputs)
+- throw std::runtime_error("reference to undefined clip: " + std::string{ tok });
++ throw std::runtime_error("reference to undefined clip: " + tok);
+ if ((op.type == ExprOpType::DUP || op.type == ExprOpType::SWAP) && op.imm.u >= stack.size())
+- throw std::runtime_error("insufficient values on stack: " + std::string{ tok });
++ throw std::runtime_error("insufficient values on stack: " + tok);
+ if (stack.size() < numOperands[static_cast<size_t>(op.type)])
+- throw std::runtime_error("insufficient values on stack: " + std::string{ tok });
++ throw std::runtime_error("insufficient values on stack: " + tok);
+
+ // Rename load operations with the correct data type.
+ if (op.type == ExprOpType::MEM_LOAD_U8) {
diff --git a/multimedia/vapoursynth/pkg-plist b/multimedia/vapoursynth/pkg-plist
index 3d751fc645bf..5bf0d94eaca0 100644
--- a/multimedia/vapoursynth/pkg-plist
+++ b/multimedia/vapoursynth/pkg-plist
@@ -1,23 +1,15 @@
-%%VSPIPE%%bin/vspipe
-%%CORE%%include/vapoursynth/VSHelper.h
-%%CORE%%include/vapoursynth/VSScript.h
-%%CORE%%include/vapoursynth/VapourSynth.h
-%%VSSCRIPT%%lib/libvapoursynth-script.a
-%%VSSCRIPT%%lib/libvapoursynth-script.so
-%%VSSCRIPT%%lib/libvapoursynth-script.so.0
-%%VSSCRIPT%%lib/libvapoursynth-script.so.0.0.0
-%%CORE%%lib/libvapoursynth.a
-%%CORE%%lib/libvapoursynth.so
-%%PYTHON%%%%PYTHON_SITELIBDIR%%/vapoursynth.so
-%%VSSCRIPT%%libdata/pkgconfig/vapoursynth-script.pc
-%%CORE%%libdata/pkgconfig/vapoursynth.pc
-%%EEDI3%%%%DATADIR%%/libeedi3.so
-%%IMAGEMAGICK%%%%DATADIR%%/libimwri.so
-%%MISCFILTERS%%%%DATADIR%%/libmiscfilters.so
-%%MORPHO%%%%DATADIR%%/libmorpho.so
-%%TESSERACT%%%%DATADIR%%/libocr.so
-%%REMOVEGRAIN%%%%DATADIR%%/libremovegrain.so
-%%ASS%%%%DATADIR%%/libsubtext.so
-%%VINVERSE%%%%DATADIR%%/libvinverse.so
-%%VIVTC%%%%DATADIR%%/libvivtc.so
-%%DOCS%%%%VSPIPE%%share/man/man1/vspipe.1.gz
+bin/vspipe
+include/vapoursynth/VSConstants4.h
+include/vapoursynth/VSHelper.h
+include/vapoursynth/VSHelper4.h
+include/vapoursynth/VSScript.h
+include/vapoursynth/VSScript4.h
+include/vapoursynth/VapourSynth.h
+include/vapoursynth/VapourSynth4.h
+lib/libvapoursynth-script.so
+lib/libvapoursynth-script.so.0
+lib/libvapoursynth-script.so.0.0.0
+lib/libvapoursynth.so
+%%PYTHON_SITELIBDIR%%/vapoursynth.so
+libdata/pkgconfig/vapoursynth-script.pc
+libdata/pkgconfig/vapoursynth.pc