# -*- mode: python -*-
#
-# Copyright (C) 2012-2019 Carl Hetherington <cth@carlh.net>
+# Copyright (C) 2012-2020 Carl Hetherington <cth@carlh.net>
#
# This file is part of DCP-o-matic.
#
'libx264-155',
'libcurl4'])
+def build_dist(target):
+ # We can build dcpomatic2_dist on platforms that have Boost process and can build the lwext4
+ # library. For now, just whitelist good ones here.
+ #
+ # - Lots of Linux distros don't have a new enough boost (1.64 or above)
+ # - On Centos 6 we can't build lwext4 because it needs a new CMake which Centos 6's g++ is not new enough to build.
+ # - On Centos 7 there is a build error in lwext4 related to __unused
+ return target.platform == 'windows' or target.platform == 'osx' or (target.platform == 'linux' and target.distro == 'ubuntu' and target.version in ['18.04', '18.10', '19.04'])
+
def packages(name, packages, f):
s = '%s: ' % name
for p in packages:
def make_spec(filename, version, target, options, requires=None):
"""Make a .spec file for a RPM build"""
+ tools = os.path.join(os.path.dirname(os.path.dirname(os.path.dirname(filename))), "src/tools")
+ print("TOOLS=%s", tools)
f = open(filename, 'w')
print('Summary:A program that generates Digital Cinema Packages (DCPs) from video and audio files', file=f)
print('Name:dcpomatic2', file=f)
if options['variant'] == 'swaroop-studio':
print('%{_bindir}/dcpomatic2_ecinema', file=f)
print('%{_bindir}/dcpomatic2_uuid', file=f)
+ if os.path.exists(os.path.join(tools, "dcpomatic2_dist")):
+ print('%{_bindir}/dcpomatic2_dist', file=f)
+ print('%{_bindir}/dcpomatic2_dist_writer', file=f)
print('%{_datadir}/applications/dcpomatic2.desktop', file=f)
print('%{_datadir}/applications/dcpomatic2_batch.desktop', file=f)
print('%{_datadir}/applications/dcpomatic2_server.desktop', file=f)
# Use distro-provided FFmpeg on Arch
deps = []
- deps.append(('libdcp', None))
- deps.append(('libsub', None))
+ deps.append(('libdcp', None, {'force-cpp11': True}))
+ deps.append(('libsub', None, {'force-cpp11': True}))
deps.append(('rtaudio', 'carl'))
# We get our OpenSSL libraries from the environment, but we
# also need a patched openssl binary to make certificates.
# This dependency is to get that binary, which is added into
# the appropriate place later
deps.append(('openssl', 'carl'))
+ if build_dist(target):
+ deps.append(('lwext4', 'carl2'))
return deps
# I worry that this will cause ABI problems but I don't have
# a better solution.
opt += ' --force-cpp11'
+ elif target.platform == 'osx' and target.bits == 64:
+ opt += ' --force-cpp11'
if not options['gui']:
opt += ' --disable-gui'
if target.debug and target.platform == 'windows':
opt += ' --static-dcpomatic'
+ if build_dist(target):
+ opt += ' --enable-dist'
+
return opt
def build(target, options):