Remove setuid root and use setcap instead in RPM packages.
[dcpomatic.git] / wscript
diff --git a/wscript b/wscript
index b7ea7de6ca054d1ea171223ddbf81db2e42008b3..5c729bd4326c0428471a3a7f7d0038c98524bf28 100644 (file)
--- a/wscript
+++ b/wscript
@@ -35,9 +35,11 @@ except ImportError:
 from waflib import Logs, Context
 
 APPNAME = 'dcpomatic'
+libdcp_version = '1.8.5'
+libsub_version = '1.6.5'
 
 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]
+last_version = subprocess.Popen(shlex.split('git describe --tags --match v* --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):
@@ -151,7 +153,6 @@ def configure(conf):
         conf.env.append_value('CXXFLAGS', '-DDCPOMATIC_WINDOWS')
         conf.env.append_value('CXXFLAGS', '-DWIN32_LEAN_AND_MEAN')
         conf.env.append_value('CXXFLAGS', '-DBOOST_USE_WINDOWS_H')
-        conf.env.append_value('CXXFLAGS', '-DUNICODE')
         conf.env.append_value('CXXFLAGS', '-DBOOST_THREAD_PROVIDES_GENERIC_SHARED_MUTEX_ON_WIN')
         conf.env.append_value('CXXFLAGS', '-mfpmath=sse')
         conf.env.append_value('CXXFLAGS', '-Wcast-align')
@@ -303,21 +304,21 @@ def configure(conf):
 
     # libdcp
     if conf.options.static_dcp:
-        conf.check_cfg(package='libdcp-1.0', atleast_version='1.6.7', args='--cflags', uselib_store='DCP', mandatory=True)
+        conf.check_cfg(package='libdcp-1.0', atleast_version=libdcp_version, 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-carl', 'kumu-carl', 'openjp2']
         conf.env.LIB_DCP = ['glibmm-2.4', 'ssl', 'crypto', 'bz2', 'xslt', 'xerces-c']
     else:
-        conf.check_cfg(package='libdcp-1.0', atleast_version='1.6.7', args='--cflags --libs', uselib_store='DCP', mandatory=True)
+        conf.check_cfg(package='libdcp-1.0', atleast_version=libdcp_version, 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.4.7', args='--cflags', uselib_store='SUB', mandatory=True)
+        conf.check_cfg(package='libsub-1.0', atleast_version=libsub_version, 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.4.7', args='--cflags --libs', uselib_store='SUB', mandatory=True)
+        conf.check_cfg(package='libsub-1.0', atleast_version=libsub_version, args='--cflags --libs', uselib_store='SUB', mandatory=True)
         conf.env.DEFINES_SUB = [f.replace('\\', '') for f in conf.env.DEFINES_SUB]
 
     # libxml++
@@ -437,6 +438,19 @@ def configure(conf):
                    define_name='DCPOMATIC_HAVE_AVCOMPONENTDESCRIPTOR_DEPTH_MINUS1',
                    mandatory=False)
 
+    # See if we have av_register_all and avfilter_register_all
+    conf.check_cxx(fragment="""
+                            extern "C" {\n
+                            #include <libavformat/avformat.h>\n
+                            #include <libavfilter/avfilter.h>\n
+                            }\n
+                            int main () { av_register_all(); avfilter_register_all(); }\n
+                            """,
+                   msg='Checking for av_register_all and avfilter_register_all',
+                   uselib='AVFORMAT AVFILTER',
+                   define_name='DCPOMATIC_HAVE_AVREGISTER',
+                   mandatory=False)
+
     # Hack: the previous two check_cxx calls end up copying their (necessary) cxxflags
     # to these variables.  We don't want to use these for the actual build, so clean them out.
     conf.env['CXXFLAGS_AVCODEC'] = []
@@ -573,24 +587,8 @@ def configure(conf):
 
     Logs.pprint('YELLOW', '')
 
-def download_supporters(can_fail):
-    r = os.system('curl -m 2 -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 > 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)
-    download_supporters(not bld.env.DEBUG)
 
     bld.recurse('src')
     bld.recurse('graphics')
@@ -666,10 +664,6 @@ def create_version_cc(version, cxx_flags):
 def post(ctx):
     if ctx.cmd == 'install' and ctx.env.TARGET_LINUX:
         ctx.exec_command('/sbin/ldconfig')
-        # setuid root executable
-        exe = os.path.join(ctx.env['INSTALL_PREFIX'], 'bin/%s/dcpomatic2_disk_writer')
-        if os.path.exists(exe):
-            os.chmod(exe, 0o4755)
 
 def pot(bld):
     bld.recurse('src')
@@ -677,6 +671,13 @@ def pot(bld):
 def pot_merge(bld):
     bld.recurse('src')
 
+def supporters(bld):
+    r = os.system('curl -m 2 -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 > src/wx/subscribers.cc')
+    if (r >> 8) != 0:
+        raise Exception("Could not download supporters lists (%d)" % (r >> 8))
+
 def tags(bld):
     os.system('etags src/lib/*.cc src/lib/*.h src/wx/*.cc src/wx/*.h src/tools/*.cc')