summaryrefslogtreecommitdiff
path: root/var/spack/repos/builtin/packages/ffmpeg/package.py
diff options
context:
space:
mode:
Diffstat (limited to 'var/spack/repos/builtin/packages/ffmpeg/package.py')
-rw-r--r--var/spack/repos/builtin/packages/ffmpeg/package.py249
1 files changed, 125 insertions, 124 deletions
diff --git a/var/spack/repos/builtin/packages/ffmpeg/package.py b/var/spack/repos/builtin/packages/ffmpeg/package.py
index 4720837fa2..0602b012d4 100644
--- a/var/spack/repos/builtin/packages/ffmpeg/package.py
+++ b/var/spack/repos/builtin/packages/ffmpeg/package.py
@@ -11,109 +11,112 @@ class Ffmpeg(AutotoolsPackage):
convert and stream audio and video."""
homepage = "https://ffmpeg.org"
- url = "https://ffmpeg.org/releases/ffmpeg-4.1.1.tar.bz2"
+ url = "https://ffmpeg.org/releases/ffmpeg-4.1.1.tar.bz2"
- maintainers = ['xjrc']
+ maintainers = ["xjrc"]
- version('4.4.1', sha256='8fc9f20ac5ed95115a9e285647add0eedd5cc1a98a039ada14c132452f98ac42')
- version('4.3.2', sha256='ab3a6d6a70358ba0a5f67f37f91f6656b7302b02e98e5b8c846c16763c99913a')
- version('4.2.2', sha256='b620d187c26f76ca19e74210a0336c3b8380b97730df5cdf45f3e69e89000e5c')
- version('4.1.1', sha256='0cb40e3b8acaccd0ecb38aa863f66f0c6e02406246556c2992f67bf650fab058')
- version('4.1', sha256='b684fb43244a5c4caae652af9022ed5d85ce15210835bce054a33fb26033a1a5')
- version('3.2.4', sha256='c0fa3593a2e9e96ace3c1757900094437ad96d1d6ca19f057c378b5f394496a4')
- version('2.8.15', sha256='35647f6c1f6d4a1719bc20b76bf4c26e4ccd665f46b5676c0e91c5a04622ee21')
- version('1.0.10', sha256='1dbde434c3b5c573d3b2ffc1babe3814f781c10c4bc66193a4132a44c9715176')
+ version("4.4.1", sha256="8fc9f20ac5ed95115a9e285647add0eedd5cc1a98a039ada14c132452f98ac42")
+ version("4.3.2", sha256="ab3a6d6a70358ba0a5f67f37f91f6656b7302b02e98e5b8c846c16763c99913a")
+ version("4.2.2", sha256="b620d187c26f76ca19e74210a0336c3b8380b97730df5cdf45f3e69e89000e5c")
+ version("4.1.1", sha256="0cb40e3b8acaccd0ecb38aa863f66f0c6e02406246556c2992f67bf650fab058")
+ version("4.1", sha256="b684fb43244a5c4caae652af9022ed5d85ce15210835bce054a33fb26033a1a5")
+ version("3.2.4", sha256="c0fa3593a2e9e96ace3c1757900094437ad96d1d6ca19f057c378b5f394496a4")
+ version("2.8.15", sha256="35647f6c1f6d4a1719bc20b76bf4c26e4ccd665f46b5676c0e91c5a04622ee21")
+ version("1.0.10", sha256="1dbde434c3b5c573d3b2ffc1babe3814f781c10c4bc66193a4132a44c9715176")
# Licensing
- variant('gpl', default=True,
- description='allow use of GPL code, the resulting libs '
- 'and binaries will be under GPL')
- variant('version3', default=True,
- description='upgrade (L)GPL to version 3')
- variant('nonfree', default=False,
- description='allow use of nonfree code, the resulting libs '
- 'and binaries will be unredistributable')
+ variant(
+ "gpl",
+ default=True,
+ description="allow use of GPL code, the resulting libs " "and binaries will be under GPL",
+ )
+ variant("version3", default=True, description="upgrade (L)GPL to version 3")
+ variant(
+ "nonfree",
+ default=False,
+ description="allow use of nonfree code, the resulting libs "
+ "and binaries will be unredistributable",
+ )
# NOTE: The libopencv option creates a circular dependency.
# NOTE: There are more possible variants that would require additional
# spack packages.
# meta variants: These will toggle several settings
- variant('X', default=False, description='X11 support')
- variant('drawtext', default=False, description='drawtext filter')
+ variant("X", default=False, description="X11 support")
+ variant("drawtext", default=False, description="drawtext filter")
# options
- variant('bzlib', default=True, description='bzip2 support')
- variant('libaom', default=False, description='AV1 video encoding/decoding')
- variant('libmp3lame', default=False, description='MP3 encoding')
- variant('libopenjpeg', default=False, description='JPEG 2000 de/encoding')
- variant('libopus', default=False, description='Opus de/encoding')
- variant('libsnappy', default=False,
- description='Snappy compression, needed for hap encoding')
- variant('libspeex', default=False, description='Speex de/encoding')
- variant('libssh', default=False, description='SFTP protocol')
- variant('libvorbis', default=False, description='Vorbis en/decoding')
- variant('libvpx', default=False, description='VP9 en/decoding')
- variant('libwebp', default=False, description='WebP encoding via libwebp')
+ variant("bzlib", default=True, description="bzip2 support")
+ variant("libaom", default=False, description="AV1 video encoding/decoding")
+ variant("libmp3lame", default=False, description="MP3 encoding")
+ variant("libopenjpeg", default=False, description="JPEG 2000 de/encoding")
+ variant("libopus", default=False, description="Opus de/encoding")
+ variant("libsnappy", default=False, description="Snappy compression, needed for hap encoding")
+ variant("libspeex", default=False, description="Speex de/encoding")
+ variant("libssh", default=False, description="SFTP protocol")
+ variant("libvorbis", default=False, description="Vorbis en/decoding")
+ variant("libvpx", default=False, description="VP9 en/decoding")
+ variant("libwebp", default=False, description="WebP encoding via libwebp")
# TODO: There is an issue with the spack headers property in the libxml2
# package recipe. Comment out the libxml2 variant until that is resolved.
# variant('libxml2', default=False,
# description='XML parsing, needed for dash demuxing support')
- variant('libzmq', default=False, description='message passing via libzmq')
- variant('lzma', default=False, description='lzma support')
- variant('avresample', default=False, description='AV reasmpling component')
- variant('openssl', default=False, description='needed for https support')
- variant('sdl2', default=False, description='sdl2 support')
- variant('shared', default=True, description='build shared libraries')
- variant('libx264', default=False, description='H.264 encoding')
-
- depends_on('alsa-lib', when='platform=linux')
- depends_on('libiconv')
- depends_on('yasm@1.2.0:')
- depends_on('zlib')
-
- depends_on('aom', when='+libaom')
- depends_on('bzip2', when='+bzlib')
- depends_on('fontconfig', when='+drawtext')
- depends_on('freetype', when='+drawtext')
- depends_on('fribidi', when='+drawtext')
- depends_on('lame', when='+libmp3lame')
- depends_on('libssh', when='+libssh')
- depends_on('libvorbis', when='+libvorbis')
- depends_on('libvpx', when='+libvpx')
- depends_on('libwebp', when='+libwebp')
+ variant("libzmq", default=False, description="message passing via libzmq")
+ variant("lzma", default=False, description="lzma support")
+ variant("avresample", default=False, description="AV reasmpling component")
+ variant("openssl", default=False, description="needed for https support")
+ variant("sdl2", default=False, description="sdl2 support")
+ variant("shared", default=True, description="build shared libraries")
+ variant("libx264", default=False, description="H.264 encoding")
+
+ depends_on("alsa-lib", when="platform=linux")
+ depends_on("libiconv")
+ depends_on("yasm@1.2.0:")
+ depends_on("zlib")
+
+ depends_on("aom", when="+libaom")
+ depends_on("bzip2", when="+bzlib")
+ depends_on("fontconfig", when="+drawtext")
+ depends_on("freetype", when="+drawtext")
+ depends_on("fribidi", when="+drawtext")
+ depends_on("lame", when="+libmp3lame")
+ depends_on("libssh", when="+libssh")
+ depends_on("libvorbis", when="+libvorbis")
+ depends_on("libvpx", when="+libvpx")
+ depends_on("libwebp", when="+libwebp")
# TODO: enable libxml2 when libxml2 header issue is resolved
# depends_on('libxml2', when='+libxml2')
- depends_on('libxv', when='+X')
- depends_on('libzmq', when='+libzmq')
- depends_on('openjpeg', when='+libopenjpeg')
- depends_on('openssl', when='+openssl')
- depends_on('opus', when='+libopus')
- depends_on('sdl2', when='+sdl2')
- depends_on('snappy', when='+libsnappy')
- depends_on('speex', when='+libspeex')
- depends_on('xz', when='+lzma')
- depends_on('x264', when='+libx264')
+ depends_on("libxv", when="+X")
+ depends_on("libzmq", when="+libzmq")
+ depends_on("openjpeg", when="+libopenjpeg")
+ depends_on("openssl", when="+openssl")
+ depends_on("opus", when="+libopus")
+ depends_on("sdl2", when="+sdl2")
+ depends_on("snappy", when="+libsnappy")
+ depends_on("speex", when="+libspeex")
+ depends_on("xz", when="+lzma")
+ depends_on("x264", when="+libx264")
# TODO: enable when libxml2 header issue is resolved
# conflicts('+libxml2', when='@:3')
# See: https://www.ffmpeg.org/index.html#news (search AV1)
- conflicts('+libaom', when='@:3')
+ conflicts("+libaom", when="@:3")
# All of the following constraints were sourced from the official 'ffmpeg'
# change log, which can be found here:
# https://raw.githubusercontent.com/FFmpeg/FFmpeg/release/4.0/Changelog
- conflicts('+sdl2', when='@:3.1')
- conflicts('+libsnappy', when='@:2.7')
- conflicts('+X', when='@:2.4')
- conflicts('+lzma', when='@2.3:')
- conflicts('+libwebp', when='@2.1:')
- conflicts('+libssh', when='@2.1:')
- conflicts('+libzmq', when='@:1')
- conflicts('%nvhpc')
+ conflicts("+sdl2", when="@:3.1")
+ conflicts("+libsnappy", when="@:2.7")
+ conflicts("+X", when="@:2.4")
+ conflicts("+lzma", when="@2.3:")
+ conflicts("+libwebp", when="@2.1:")
+ conflicts("+libssh", when="@2.1:")
+ conflicts("+libzmq", when="@:1")
+ conflicts("%nvhpc")
@property
def libs(self):
- return find_libraries('*', self.prefix, recursive=True)
+ return find_libraries("*", self.prefix, recursive=True)
@property
def headers(self):
@@ -122,77 +125,75 @@ class Ffmpeg(AutotoolsPackage):
return headers
def enable_or_disable_meta(self, variant, options):
- switch = 'enable' if '+{0}'.format(variant) in self.spec else 'disable'
- return ['--{0}-{1}'.format(switch, option) for option in options]
+ switch = "enable" if "+{0}".format(variant) in self.spec else "disable"
+ return ["--{0}-{1}".format(switch, option) for option in options]
def configure_args(self):
spec = self.spec
- config_args = [
- '--enable-pic',
- '--cc={0}'.format(spack_cc),
- '--cxx={0}'.format(spack_cxx)
- ]
+ config_args = ["--enable-pic", "--cc={0}".format(spack_cc), "--cxx={0}".format(spack_cxx)]
# '+X' meta variant #
xlib_opts = []
- if spec.satisfies('@2.5:'):
- xlib_opts.extend([
- 'libxcb',
- 'libxcb-shape',
- 'libxcb-shm',
- 'libxcb-xfixes',
- 'xlib',
- ])
+ if spec.satisfies("@2.5:"):
+ xlib_opts.extend(
+ [
+ "libxcb",
+ "libxcb-shape",
+ "libxcb-shm",
+ "libxcb-xfixes",
+ "xlib",
+ ]
+ )
- config_args += self.enable_or_disable_meta('X', xlib_opts)
+ config_args += self.enable_or_disable_meta("X", xlib_opts)
# '+drawtext' meta variant #
drawtext_opts = [
- '{0}fontconfig'.format('lib' if spec.satisfies('@3:') else ''),
- 'libfreetype',
+ "{0}fontconfig".format("lib" if spec.satisfies("@3:") else ""),
+ "libfreetype",
]
- if spec.satisfies('@2.3:'):
- drawtext_opts.append('libfribidi')
+ if spec.satisfies("@2.3:"):
+ drawtext_opts.append("libfribidi")
- config_args += self.enable_or_disable_meta('drawtext', drawtext_opts)
+ config_args += self.enable_or_disable_meta("drawtext", drawtext_opts)
# other variants #
variant_opts = [
- 'bzlib',
- 'gpl',
- 'libmp3lame',
- 'libopenjpeg',
- 'libopus',
- 'libspeex',
- 'libvorbis',
- 'libvpx',
- 'libx264',
- 'avresample',
- 'nonfree',
- 'openssl',
- 'shared',
- 'version3',
+ "bzlib",
+ "gpl",
+ "libmp3lame",
+ "libopenjpeg",
+ "libopus",
+ "libspeex",
+ "libvorbis",
+ "libvpx",
+ "libx264",
+ "avresample",
+ "nonfree",
+ "openssl",
+ "shared",
+ "version3",
]
- if spec.satisfies('@2.0:'):
- variant_opts.append('libzmq')
- if spec.satisfies('@2.1:'):
- variant_opts.append('libssh')
- if spec.satisfies('@2.2:'):
- variant_opts.append('libwebp')
- if spec.satisfies('@2.4:'):
- variant_opts.append('lzma')
- if spec.satisfies('@2.8:'):
- variant_opts.append('libsnappy')
- if spec.satisfies('@3.2:'):
- variant_opts.append('sdl2')
- if spec.satisfies('@4:'):
- variant_opts.append('libaom')
+ if spec.satisfies("@2.0:"):
+ variant_opts.append("libzmq")
+ if spec.satisfies("@2.1:"):
+ variant_opts.append("libssh")
+ if spec.satisfies("@2.2:"):
+ variant_opts.append("libwebp")
+ if spec.satisfies("@2.4:"):
+ variant_opts.append("lzma")
+ if spec.satisfies("@2.8:"):
+ variant_opts.append("libsnappy")
+ if spec.satisfies("@3.2:"):
+ variant_opts.append("sdl2")
+ if spec.satisfies("@4:"):
+ variant_opts.append("libaom")
# TODO: enable when libxml2 header issue is resolved
# variant_opts.append('libxml2')