Add xsd_path() and use it to fix access to .xsd files on Linux (#1830).
authorCarl Hetherington <cth@carlh.net>
Mon, 14 Sep 2020 11:04:16 +0000 (13:04 +0200)
committerCarl Hetherington <cth@carlh.net>
Mon, 14 Sep 2020 11:04:16 +0000 (13:04 +0200)
src/lib/cross.h
src/lib/cross_linux.cc
src/lib/cross_osx.cc
src/lib/cross_windows.cc
src/lib/verify_dcp_job.cc
wscript

index 64cb2e6..0ba43cc 100644 (file)
@@ -54,6 +54,7 @@ extern boost::filesystem::path disk_writer_path ();
 extern void maybe_open_console ();
 #endif
 extern boost::filesystem::path shared_path ();
+extern boost::filesystem::path xsd_path ();
 extern FILE * fopen_boost (boost::filesystem::path, std::string);
 extern int dcpomatic_fseek (FILE *, int64_t, int);
 extern void start_batch_converter ();
index e17f188..95bd975 100644 (file)
@@ -103,11 +103,23 @@ shared_path ()
 {
        char const * p = getenv ("DCPOMATIC_LINUX_SHARE_PREFIX");
        if (p) {
-               return p;
+               return boost::filesystem::path(p) / "dcpomatic2";
+       }
+       return boost::filesystem::canonical(LINUX_SHARE_PREFIX) / "dcpomatic2";
+}
+
+
+boost::filesystem::path
+xsd_path ()
+{
+       char const * p = getenv ("DCPOMATIC_LINUX_SHARE_PREFIX");
+       if (p) {
+               return boost::filesystem::path(p) / "libdcp" / "xsd";
        }
-       return boost::filesystem::canonical (LINUX_SHARE_PREFIX);
+       return boost::filesystem::canonical(LINUX_SHARE_PREFIX) / "libdcp" / "xsd";
 }
 
+
 void
 run_ffprobe (boost::filesystem::path content, boost::filesystem::path out)
 {
index e91d3df..412259e 100644 (file)
@@ -123,6 +123,13 @@ shared_path ()
 }
 
 
+boost::filesystem::path
+xsd_path ()
+{
+       return shared_path() / "xsd";
+}
+
+
 void
 run_ffprobe (boost::filesystem::path content, boost::filesystem::path out)
 {
index 337750d..272467b 100644 (file)
@@ -199,6 +199,13 @@ shared_path ()
 }
 
 
+boost::filesystem::path
+xsd_path ()
+{
+       return directory_containing_executable().parent_path() / "xsd";
+}
+
+
 boost::filesystem::path
 openssl_path ()
 {
index 3d28fe7..f6dc100 100644 (file)
@@ -68,7 +68,7 @@ VerifyDCPJob::update_stage (string s, optional<boost::filesystem::path> path)
 void
 VerifyDCPJob::run ()
 {
-       _notes = dcp::verify (_directories, bind (&VerifyDCPJob::update_stage, this, _1, _2), bind (&VerifyDCPJob::set_progress, this, _1, false), shared_path() / "xsd");
+       _notes = dcp::verify (_directories, bind (&VerifyDCPJob::update_stage, this, _1, _2), bind (&VerifyDCPJob::set_progress, this, _1, false), xsd_path());
 
        bool failed = false;
        BOOST_FOREACH (dcp::VerificationNote i, _notes) {
diff --git a/wscript b/wscript
index f9aa784..00665bb 100644 (file)
--- a/wscript
+++ b/wscript
@@ -198,7 +198,7 @@ def configure(conf):
     if conf.env.TARGET_LINUX:
         conf.env.append_value('CXXFLAGS', '-mfpmath=sse')
         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', '-DLINUX_SHARE_PREFIX="%s/share"' % conf.env['INSTALL_PREFIX'])
         conf.env.append_value('CXXFLAGS', '-DDCPOMATIC_LINUX')
         conf.env.append_value('CXXFLAGS', ['-Wlogical-op', '-Wcast-align'])
         conf.check(lib='dl', uselib_store='DL', msg='Checking for library dl')