#
-# Copyright (C) 2012-2017 Carl Hetherington <cth@carlh.net>
+# Copyright (C) 2012-2019 Carl Hetherington <cth@carlh.net>
#
# This file is part of DCP-o-matic.
#
# along with DCP-o-matic. If not, see <http://www.gnu.org/licenses/>.
#
+from __future__ import print_function
+
import subprocess
import os
import shlex
this_version = subprocess.Popen(shlex.split('git tag -l --points-at HEAD'), stdout=subprocess.PIPE).communicate()[0]
last_version = subprocess.Popen(shlex.split('git describe --tags --abbrev=0'), stdout=subprocess.PIPE).communicate()[0]
+# Python 2/3 compatibility; I don't really understand what's going on here
+if not isinstance(this_version, str):
+ this_version = this_version.decode('utf-8')
+if not isinstance(last_version, str):
+ last_version = last_version.decode('utf-8')
+
if this_version == '':
VERSION = '%sdevel' % last_version[1:].strip()
else:
# Remove auto_ptr warnings from libxml++-2.6
'-Wno-deprecated-declarations',
'-Wno-ignored-qualifiers',
+ '-Wno-parentheses',
'-D_FILE_OFFSET_BITS=64'])
if conf.options.force_cpp11:
conf.env.append_value('CXXFLAGS', '-DLINUX_LOCALE_PREFIX="%s/share/locale"' % conf.env['INSTALL_PREFIX'])
conf.env.append_value('CXXFLAGS', '-DLINUX_SHARE_PREFIX="%s/share/dcpomatic2"' % conf.env['INSTALL_PREFIX'])
conf.env.append_value('CXXFLAGS', '-DDCPOMATIC_LINUX')
- conf.env.append_value('CXXFLAGS', ['-Wlogical-op'])
+ conf.env.append_value('CXXFLAGS', ['-Wlogical-op', '-Wno-deprecated-copy'])
if not conf.env.DISABLE_GUI:
conf.check_cfg(package='gtk+-2.0', args='--cflags --libs', uselib_store='GTK', mandatory=True)
if conf.env.TARGET_OSX:
conf.env.append_value('CXXFLAGS', ['-DDCPOMATIC_OSX', '-Wno-unused-function', '-Wno-unused-parameter', '-Wno-unused-local-typedef', '-Wno-potentially-evaluated-expression'])
conf.env.append_value('LINKFLAGS', '-headerpad_max_install_names')
+ else:
+ # Avoid the endless warnings about _t uninitialized in optional<>
+ conf.env.append_value('CXXFLAGS', '-Wno-maybe-uninitialized')
#
# Dependencies.
# libcxml
if conf.options.static_cxml:
- conf.check_cfg(package='libcxml', atleast_version='0.15.5', args='--cflags', uselib_store='CXML', mandatory=True)
+ conf.check_cfg(package='libcxml', atleast_version='0.16.0', args='--cflags', uselib_store='CXML', mandatory=True)
conf.env.STLIB_CXML = ['cxml']
else:
- conf.check_cfg(package='libcxml', atleast_version='0.15.5', args='--cflags --libs', uselib_store='CXML', mandatory=True)
+ conf.check_cfg(package='libcxml', atleast_version='0.16.0', args='--cflags --libs', uselib_store='CXML', mandatory=True)
# libssh
if conf.options.static_ssh:
# libdcp
if conf.options.static_dcp:
- conf.check_cfg(package='libdcp-1.0', atleast_version='1.5.1', args='--cflags', uselib_store='DCP', mandatory=True)
+ conf.check_cfg(package='libdcp-1.0', atleast_version='1.6.14', args='--cflags', uselib_store='DCP', mandatory=True)
conf.env.DEFINES_DCP = [f.replace('\\', '') for f in conf.env.DEFINES_DCP]
conf.env.STLIB_DCP = ['dcp-1.0', 'asdcp-cth', 'kumu-cth', 'openjp2']
conf.env.LIB_DCP = ['glibmm-2.4', 'ssl', 'crypto', 'bz2', 'xslt']
else:
- conf.check_cfg(package='libdcp-1.0', atleast_version='1.5.1', args='--cflags --libs', uselib_store='DCP', mandatory=True)
+ conf.check_cfg(package='libdcp-1.0', atleast_version='1.6.14', args='--cflags --libs', uselib_store='DCP', mandatory=True)
conf.env.DEFINES_DCP = [f.replace('\\', '') for f in conf.env.DEFINES_DCP]
# libsub
if conf.options.static_sub:
- conf.check_cfg(package='libsub-1.0', atleast_version='1.3.0', args='--cflags', uselib_store='SUB', mandatory=True)
+ conf.check_cfg(package='libsub-1.0', atleast_version='1.4.15', args='--cflags', uselib_store='SUB', mandatory=True)
conf.env.DEFINES_SUB = [f.replace('\\', '') for f in conf.env.DEFINES_SUB]
conf.env.STLIB_SUB = ['sub-1.0']
else:
- conf.check_cfg(package='libsub-1.0', atleast_version='1.3.0', args='--cflags --libs', uselib_store='SUB', mandatory=True)
+ conf.check_cfg(package='libsub-1.0', atleast_version='1.4.15', args='--cflags --libs', uselib_store='SUB', mandatory=True)
conf.env.DEFINES_SUB = [f.replace('\\', '') for f in conf.env.DEFINES_SUB]
# libxml++
Logs.pprint('YELLOW', '')
def download_supporters(can_fail):
- last_date = subprocess.Popen(shlex.split('git log -1 --format=%%ai %s' % last_version), stdout=subprocess.PIPE).communicate()[0]
- r = os.system('curl -s -f https://dcpomatic.com/supporters.cc?%s > src/wx/supporters.cc' % urlencode({"until": last_date.strip()}))
+ r = os.system('curl -s -f https://dcpomatic.com/supporters.cc > src/wx/supporters.cc')
if (r >> 8) == 0:
- r = os.system('curl -s -f https://dcpomatic.com/subscribers.cc?%s > src/wx/subscribers.cc' % urlencode({"until": last_date.strip()}))
- if (r >> 8) != 0 and can_fail:
- raise Exception("Could not download supporters lists")
+ r = os.system('curl -s -f https://dcpomatic.com/subscribers.cc > src/wx/subscribers.cc')
+ if (r >> 8) != 0:
+ if can_fail:
+ raise Exception("Could not download supporters lists (%d)" % (r >> 8))
+ else:
+ f = open('src/wx/supporters.cc', 'w')
+ print('supported_by.Add(wxT("Debug build - no supporters lists available"));', file=f)
+ f.close()
+ f = open('src/wx/subscribers.cc', 'w')
+ print('subscribers.Add(wxT("Debug build - no subscribers lists available"));', file=f)
+ f.close()
def build(bld):
create_version_cc(VERSION, bld.env.CXXFLAGS)
r = git_revision()
if r is not None:
f = open('.git_revision', 'w')
- print >>f,r
- f.close()
+ print(r, file=f)
+ f.close()
ctx.excl = """
TODO core *~ src/wx/*~ src/lib/*~ builds/*~ doc/manual/*~ src/tools/*~ *.pyc .waf* build .git
def post(ctx):
if ctx.cmd == 'install' and ctx.env.TARGET_LINUX:
ctx.exec_command('/sbin/ldconfig')
- os.chmod(os.path.join(ctx.options.prefix, 'bin/dcpomatic2_uuid'), 0o4755)
+ # I can't find anything which tells me where things have been installed to,
+ # so here's some nasty hacks to guess.
+ debian = os.path.join(ctx.out_dir, '../debian/dcpomatic/usr/bin/dcpomatic2_uuid')
+ prefix = os.path.join(ctx.env['INSTALL_PREFIX'], 'bin/dcpomatic2_uuid')
+ if os.path.exists(debian):
+ os.chmod(debian, 0o4755)
+ if os.path.exists(prefix):
+ os.chmod(prefix, 0o4755)
def pot(bld):
bld.recurse('src')