From 749c7b0098feb893c2a11012eb889fda0043666d Mon Sep 17 00:00:00 2001 From: Carl Hetherington Date: Sun, 20 Oct 2019 23:38:57 +0200 Subject: Remove hard-coded environment location in OS X build. --- cscript | 4 ++-- platform/osx/make_dmg.sh | 10 +++++----- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/cscript b/cscript index 9bd4ebc39..22c719ea0 100644 --- a/cscript +++ b/cscript @@ -640,10 +640,10 @@ def package(target, version, options): elif target.distro == 'centos' or target.distro == 'fedora' or target.distro == 'mageia': return package_rpm(target, cpu, version, options) elif target.platform == 'osx' and target.bits is None: - target.command('bash platform/osx/make_dmg.sh %s universal' % target.directory) + target.command('bash platform/osx/make_dmg.sh %s %s universal' % (target.environment_prefix, target.directory)) return [os.path.abspath(x) for x in glob.glob('build/platform/osx/DCP-o-matic*.dmg')] elif target.platform == 'osx' and target.bits == 64: - target.command('bash platform/osx/make_dmg.sh %s thin' % target.directory) + target.command('bash platform/osx/make_dmg.sh %s %s thin' % (target.environment_prefix, target.directory)) return [os.path.abspath(x) for x in glob.glob('build/platform/osx/DCP-o-matic*.dmg')] elif target.platform == 'docker': shutil.copyfile(target.deb, 'build/platform/docker') diff --git a/platform/osx/make_dmg.sh b/platform/osx/make_dmg.sh index 9b1dd0e0e..f944e6eab 100644 --- a/platform/osx/make_dmg.sh +++ b/platform/osx/make_dmg.sh @@ -1,9 +1,9 @@ #!/bin/bash # -# Syntax: make_dmg.sh +# Syntax: make_dmg.sh # where is universal or thin # -# e.g. make_dmg.sh /Users/carl/cdist +# e.g. make_dmg.sh /Users/carl/osx-environment /Users/carl/cdist universal # Don't set -e here as egrep (used a few times) returns 1 if no matches # were found. @@ -12,9 +12,9 @@ version=`git describe --tags --abbrev=0 | sed -e "s/v//"` # DMG size in megabytes DMG_SIZE=256 -ENV=/Users/carl/Environments/dcpomatic -ROOT=$1 -TYPE=$2 +ENV=$1 +ROOT=$2 +TYPE=$3 if [ "$TYPE" != "universal" -a "$TYPE" != "thin" ]; then echo "Syntax: $0 " -- cgit v1.2.3 From f0a2a52ddd1118236d4ce5640339c24bae88aa12 Mon Sep 17 00:00:00 2001 From: Carl Hetherington Date: Mon, 21 Oct 2019 00:59:59 +0200 Subject: Rename dcpomatic_sleep -> dcpomatic_sleep_seconds. --- src/lib/checker.cc | 2 +- src/lib/cross.cc | 2 +- src/lib/cross.h | 2 +- src/lib/util.cc | 2 +- src/tools/dcpomatic.cc | 2 +- src/tools/dcpomatic_cli.cc | 4 ++-- src/tools/dcpomatic_create.cc | 2 +- src/tools/dcpomatic_ecinema.cc | 2 +- src/wx/content_view.cc | 2 +- src/wx/wx_util.cc | 2 +- test/client_server_test.cc | 6 +++--- test/interrupt_encoder_test.cc | 2 +- test/job_test.cc | 4 ++-- test/player_test.cc | 4 ++-- test/test.cc | 2 +- test/threed_test.cc | 2 +- 16 files changed, 21 insertions(+), 21 deletions(-) diff --git a/src/lib/checker.cc b/src/lib/checker.cc index 13d9aacee..2d15dd3f1 100644 --- a/src/lib/checker.cc +++ b/src/lib/checker.cc @@ -81,7 +81,7 @@ Checker::thread () } lm.unlock (); - dcpomatic_sleep (_period); + dcpomatic_sleep_seconds (_period); } } diff --git a/src/lib/cross.cc b/src/lib/cross.cc index a7fb298cb..1b83bad7c 100644 --- a/src/lib/cross.cc +++ b/src/lib/cross.cc @@ -65,7 +65,7 @@ using boost::shared_ptr; /** @param s Number of seconds to sleep for */ void -dcpomatic_sleep (int s) +dcpomatic_sleep_seconds (int s) { #ifdef DCPOMATIC_POSIX sleep (s); diff --git a/src/lib/cross.h b/src/lib/cross.h index 2e8b8e429..4067631bc 100644 --- a/src/lib/cross.h +++ b/src/lib/cross.h @@ -37,7 +37,7 @@ class Log; struct AVIOContext; -void dcpomatic_sleep (int); +void dcpomatic_sleep_seconds (int); extern std::string cpu_info (); extern void run_ffprobe (boost::filesystem::path, boost::filesystem::path); extern std::list > mount_info (); diff --git a/src/lib/util.cc b/src/lib/util.cc index cd2d5a368..fd7a95684 100644 --- a/src/lib/util.cc +++ b/src/lib/util.cc @@ -967,7 +967,7 @@ show_jobs_on_console (bool progress) bool error = false; while (true) { - dcpomatic_sleep (5); + dcpomatic_sleep_seconds (5); list > jobs = JobManager::instance()->get(); diff --git a/src/tools/dcpomatic.cc b/src/tools/dcpomatic.cc index d207953ce..e4d2f5c82 100644 --- a/src/tools/dcpomatic.cc +++ b/src/tools/dcpomatic.cc @@ -811,7 +811,7 @@ private: start (wx_to_std (wxStandardPaths::Get().GetExecutablePath())); } - dcpomatic_sleep (1); + dcpomatic_sleep_seconds (1); } return true; diff --git a/src/tools/dcpomatic_cli.cc b/src/tools/dcpomatic_cli.cc index ca6c79cb8..6a243e126 100644 --- a/src/tools/dcpomatic_cli.cc +++ b/src/tools/dcpomatic_cli.cc @@ -176,7 +176,7 @@ list_servers () } } - dcpomatic_sleep (1); + dcpomatic_sleep_seconds (1); for (int i = 0; i < N; ++i) { cout << "\033[1A\033[2K"; @@ -360,7 +360,7 @@ main (int argc, char* argv[]) if (keep_going) { while (true) { - dcpomatic_sleep (3600); + dcpomatic_sleep_seconds (3600); } } diff --git a/src/tools/dcpomatic_create.cc b/src/tools/dcpomatic_create.cc index f1df658c3..87626283c 100644 --- a/src/tools/dcpomatic_create.cc +++ b/src/tools/dcpomatic_create.cc @@ -124,7 +124,7 @@ main (int argc, char* argv[]) } while (jm->work_to_do ()) { - dcpomatic_sleep (1); + dcpomatic_sleep_seconds (1); } while (signal_manager->ui_idle() > 0) {} diff --git a/src/tools/dcpomatic_ecinema.cc b/src/tools/dcpomatic_ecinema.cc index 96b633fdf..152194c48 100644 --- a/src/tools/dcpomatic_ecinema.cc +++ b/src/tools/dcpomatic_ecinema.cc @@ -290,7 +290,7 @@ convert_dcp ( JobManager* jm = JobManager::instance (); while (jm->work_to_do ()) { while (signal_manager->ui_idle ()) {} - dcpomatic_sleep (1); + dcpomatic_sleep_seconds (1); } DCPOMATIC_ASSERT (!jm->errors()); diff --git a/src/wx/content_view.cc b/src/wx/content_view.cc index d4ef39cb9..1cdfbc00f 100644 --- a/src/wx/content_view.cc +++ b/src/wx/content_view.cc @@ -109,7 +109,7 @@ ContentView::update () } return; } - dcpomatic_sleep (1); + dcpomatic_sleep_seconds (1); } /* Add content from successful jobs and report errors */ diff --git a/src/wx/wx_util.cc b/src/wx/wx_util.cc index 045712bcb..28f79431a 100644 --- a/src/wx/wx_util.cc +++ b/src/wx/wx_util.cc @@ -517,7 +517,7 @@ display_progress (wxString title, wxString task) bool ok = true; while (jm->work_to_do()) { - dcpomatic_sleep (1); + dcpomatic_sleep_seconds (1); if (!progress.Pulse()) { /* user pressed cancel */ BOOST_FOREACH (shared_ptr i, jm->get()) { diff --git a/test/client_server_test.cc b/test/client_server_test.cc index 29f901d34..df854f9f3 100644 --- a/test/client_server_test.cc +++ b/test/client_server_test.cc @@ -122,7 +122,7 @@ BOOST_AUTO_TEST_CASE (client_server_test_rgb) thread* server_thread = new thread (boost::bind (&EncodeServer::run, server)); /* Let the server get itself ready */ - dcpomatic_sleep (1); + dcpomatic_sleep_seconds (1); /* "localhost" rather than "127.0.0.1" here fails on docker; go figure */ EncodeServerDescription description ("127.0.0.1", 1, SERVER_LINK_VERSION); @@ -207,7 +207,7 @@ BOOST_AUTO_TEST_CASE (client_server_test_yuv) thread* server_thread = new thread (boost::bind (&EncodeServer::run, server)); /* Let the server get itself ready */ - dcpomatic_sleep (1); + dcpomatic_sleep_seconds (1); /* "localhost" rather than "127.0.0.1" here fails on docker; go figure */ EncodeServerDescription description ("127.0.0.1", 2, SERVER_LINK_VERSION); @@ -305,7 +305,7 @@ BOOST_AUTO_TEST_CASE (client_server_test_j2k) thread* server_thread = new thread (boost::bind (&EncodeServer::run, server)); /* Let the server get itself ready */ - dcpomatic_sleep (1); + dcpomatic_sleep_seconds (1); /* "localhost" rather than "127.0.0.1" here fails on docker; go figure */ EncodeServerDescription description ("127.0.0.1", 2, SERVER_LINK_VERSION); diff --git a/test/interrupt_encoder_test.cc b/test/interrupt_encoder_test.cc index c6145d861..ed988a65b 100644 --- a/test/interrupt_encoder_test.cc +++ b/test/interrupt_encoder_test.cc @@ -51,7 +51,7 @@ BOOST_AUTO_TEST_CASE (interrupt_encoder_test) film->make_dcp (); - dcpomatic_sleep (10); + dcpomatic_sleep_seconds (10); JobManager::drop (); } diff --git a/test/job_test.cc b/test/job_test.cc index fa4890470..d93b4a082 100644 --- a/test/job_test.cc +++ b/test/job_test.cc @@ -74,9 +74,9 @@ BOOST_AUTO_TEST_CASE (job_manager_test) shared_ptr a (new TestJob (film)); JobManager::instance()->add (a); - dcpomatic_sleep (1); + dcpomatic_sleep_seconds (1); BOOST_CHECK_EQUAL (a->running (), true); a->set_finished_ok (); - dcpomatic_sleep (2); + dcpomatic_sleep_seconds (2); BOOST_CHECK_EQUAL (a->finished_ok(), true); } diff --git a/test/player_test.cc b/test/player_test.cc index af40002de..a7e944cd4 100644 --- a/test/player_test.cc +++ b/test/player_test.cc @@ -333,14 +333,14 @@ BOOST_AUTO_TEST_CASE (player_trim_crash) shared_ptr butler (new Butler(player, AudioMapping(), 6, bind(&PlayerVideo::force, _1, AV_PIX_FMT_RGB24), false, true)); /* Wait for the butler to fill */ - dcpomatic_sleep (5); + dcpomatic_sleep_seconds (5); boon->set_trim_start (ContentTime::from_seconds(5)); butler->seek (DCPTime(), true); /* Wait for the butler to refill */ - dcpomatic_sleep (5); + dcpomatic_sleep_seconds (5); butler->rethrow (); } diff --git a/test/test.cc b/test/test.cc index c87f4e70b..318ac4799 100644 --- a/test/test.cc +++ b/test/test.cc @@ -385,7 +385,7 @@ wait_for_jobs () JobManager* jm = JobManager::instance (); while (jm->work_to_do ()) { while (signal_manager->ui_idle ()) {} - dcpomatic_sleep (1); + dcpomatic_sleep_seconds (1); } if (jm->errors ()) { diff --git a/test/threed_test.cc b/test/threed_test.cc index 2ff09c127..c87356171 100644 --- a/test/threed_test.cc +++ b/test/threed_test.cc @@ -188,7 +188,7 @@ BOOST_AUTO_TEST_CASE (threed_test7) JobManager* jm = JobManager::instance (); while (jm->work_to_do ()) { while (signal_manager->ui_idle()) {} - dcpomatic_sleep (1); + dcpomatic_sleep_seconds (1); } while (signal_manager->ui_idle ()) {} -- cgit v1.2.3 From 74d4cd23df7460cf1d0e91fd7a37fa3333741887 Mon Sep 17 00:00:00 2001 From: Carl Hetherington Date: Sat, 19 Oct 2019 20:33:17 +0200 Subject: Add notarization steps to make_dmg.sh --- cscript | 4 ++-- platform/osx/make_dmg.sh | 44 +++++++++++++++++++++++++++++++++----------- 2 files changed, 35 insertions(+), 13 deletions(-) diff --git a/cscript b/cscript index 22c719ea0..cf1f65a84 100644 --- a/cscript +++ b/cscript @@ -640,10 +640,10 @@ def package(target, version, options): elif target.distro == 'centos' or target.distro == 'fedora' or target.distro == 'mageia': return package_rpm(target, cpu, version, options) elif target.platform == 'osx' and target.bits is None: - target.command('bash platform/osx/make_dmg.sh %s %s universal' % (target.environment_prefix, target.directory)) + target.command('bash platform/osx/make_dmg.sh %s %s universal %s %s' % (target.environment_prefix, target.directory, target.apple_id, target.apple_password)) return [os.path.abspath(x) for x in glob.glob('build/platform/osx/DCP-o-matic*.dmg')] elif target.platform == 'osx' and target.bits == 64: - target.command('bash platform/osx/make_dmg.sh %s %s thin' % (target.environment_prefix, target.directory)) + target.command('bash platform/osx/make_dmg.sh %s %s thin %s %s' % (target.environment_prefix, target.directory, target.apple_id, target.apple_password)) return [os.path.abspath(x) for x in glob.glob('build/platform/osx/DCP-o-matic*.dmg')] elif target.platform == 'docker': shutil.copyfile(target.deb, 'build/platform/docker') diff --git a/platform/osx/make_dmg.sh b/platform/osx/make_dmg.sh index f944e6eab..93cbd077f 100644 --- a/platform/osx/make_dmg.sh +++ b/platform/osx/make_dmg.sh @@ -1,9 +1,9 @@ #!/bin/bash # -# Syntax: make_dmg.sh +# Syntax: make_dmg.sh # where is universal or thin # -# e.g. make_dmg.sh /Users/carl/osx-environment /Users/carl/cdist universal +# e.g. make_dmg.sh /Users/carl/osx-environment /Users/carl/cdist universal foo@bar.net opensesame # Don't set -e here as egrep (used a few times) returns 1 if no matches # were found. @@ -15,6 +15,8 @@ DMG_SIZE=256 ENV=$1 ROOT=$2 TYPE=$3 +APPLE_ID=$4 +APPLE_PASSWORD=$5 if [ "$TYPE" != "universal" -a "$TYPE" != "thin" ]; then echo "Syntax: $0 " @@ -247,9 +249,11 @@ function relink { # @param #1 .app directory # @param #2 full name e.g. DCP-o-matic Batch Converter +# @param #3 bundle id e.g. com.dcpomatic.batch function make_dmg { local appdir="$1" local full_name="$2" + local bundle_id="$3" tmp_dmg=dcpomatic_tmp.dmg dmg="$full_name $version.dmg" vol_name=DCP-o-matic-$version @@ -310,6 +314,7 @@ EOF chmod -Rf go-w /Volumes/"$vol_name"/"$appdir" sync + set -e hdiutil eject $device hdiutil convert -format UDZO $tmp_dmg -imagekey zlib-level=9 -o "$dmg" sips -i "$appdir/Contents/Resources/dcpomatic2.icns" @@ -318,10 +323,27 @@ EOF SetFile -a C "$dmg" xattr -c "$dmg" codesign --verify --verbose --sign "Developer ID Application: Carl Hetherington (R82DXSR997)" "$dmg" - if [ "$?" != "0" ]; then - echo "Failed to sign .dmg" - exit 1 - fi + + id=$(xcrun altool --notarize-app -t osx -f "$dmg" --primary-bundle-id $bundle_id -u $APPLE_ID -p $APPLE_PASSWORD --output-format xml | grep -C1 RequestUUID | tail -n 1 | sed -e "s///g" | sed -e "s/<\/string>//g") + N=0 + while [ 1 ]; do + echo "Checking up on $id" + status=$(xcrun altool --notarization-info $id -u $APPLE_ID -p $APPLE_PASSWORD --output-format xml | grep -C1 "Status" | tail -n 1 | sed -e "s/ .//g") + echo "Got $status" + if [ "$status" == "success" ]; then + break + fi + sleep 30 + N=$((N+1)) + if [ "$N" == "10" ]; then + echo "Timed out waiting for notarization" + exit 1 + fi + done + + xcrun stapler staple "$dmg" + set +e + rm $tmp_dmg rm -rf $vol_name } @@ -358,7 +380,7 @@ copy $ROOT bin/ffprobe "$approot/MacOS" cp $prefix/src/dcpomatic/build/platform/osx/dcpomatic2.Info.plist "$approot/Info.plist" rl=("$approot/MacOS/dcpomatic2" "$approot/MacOS/dcpomatic2_cli" "$approot/MacOS/dcpomatic2_create" "$approot/MacOS/ffprobe" "$approot/Frameworks/"*.dylib) relink "${rl[@]}" -make_dmg "$appdir" "DCP-o-matic" +make_dmg "$appdir" "DCP-o-matic" com.dcpomatic # DCP-o-matic KDM Creator setup "DCP-o-matic 2 KDM Creator.app" @@ -367,7 +389,7 @@ copy $ROOT src/dcpomatic/build/src/tools/dcpomatic2_kdm_cli "$approot/MacOS" cp $prefix/src/dcpomatic/build/platform/osx/dcpomatic2_kdm.Info.plist "$approot/Info.plist" rl=("$approot/MacOS/dcpomatic2_kdm" "$approot/MacOS/dcpomatic2_kdm_cli" "$approot/Frameworks/"*.dylib) relink "${rl[@]}" -make_dmg "$appdir" "DCP-o-matic KDM Creator" +make_dmg "$appdir" "DCP-o-matic KDM Creator" com.dcpomatic.kdm # DCP-o-matic Encode Server setup "DCP-o-matic 2 Encode Server.app" @@ -376,7 +398,7 @@ copy $ROOT src/dcpomatic/build/src/tools/dcpomatic2_server_cli "$approot/MacOS" cp $prefix/src/dcpomatic/build/platform/osx/dcpomatic2_server.Info.plist "$approot/Info.plist" rl=("$approot/MacOS/dcpomatic2_server" "$approot/MacOS/dcpomatic2_server_cli" "$approot/Frameworks/"*.dylib) relink "${rl[@]}" -make_dmg "$appdir" "DCP-o-matic Encode Server" +make_dmg "$appdir" "DCP-o-matic Encode Server" com.dcpomatic.server # DCP-o-matic Batch Converter setup "DCP-o-matic 2 Batch converter.app" @@ -384,7 +406,7 @@ copy $ROOT src/dcpomatic/build/src/tools/dcpomatic2_batch "$approot/MacOS" cp $prefix/src/dcpomatic/build/platform/osx/dcpomatic2_batch.Info.plist "$approot/Info.plist" rl=("$approot/MacOS/dcpomatic2_batch" "$approot/Frameworks/"*.dylib) relink "${rl[@]}" -make_dmg "$appdir" "DCP-o-matic Batch Converter" +make_dmg "$appdir" "DCP-o-matic Batch Converter" com.dcpomatic.batch # DCP-o-matic Player setup "DCP-o-matic 2 Player.app" @@ -392,4 +414,4 @@ copy $ROOT src/dcpomatic/build/src/tools/dcpomatic2_player "$approot/MacOS" cp $prefix/src/dcpomatic/build/platform/osx/dcpomatic2_player.Info.plist "$approot/Info.plist" rl=("$approot/MacOS/dcpomatic2_player" "$approot/Frameworks/"*.dylib) relink "${rl[@]}" -make_dmg "$appdir" "DCP-o-matic Player" +make_dmg "$appdir" "DCP-o-matic Player" com.dcpomatic.player -- cgit v1.2.3