id="svg2"
version="1.1"
inkscape:version="0.92.3 (2405546, 2018-03-11)"
- sodipodi:docname="dcpomatic2_dist.svg"
+ sodipodi:docname="dcpomatic2_disk.svg"
viewBox="0 0 1000 1000">
<sodipodi:namedview
id="base"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
- inkscape:zoom="0.34926264"
- inkscape:cx="218.18331"
- inkscape:cy="476.21434"
+ inkscape:zoom="0.061741495"
+ inkscape:cx="-2231.4864"
+ inkscape:cy="438.2963"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="false"
inkscape:window-y="27"
inkscape:window-maximized="1"
inkscape:document-rotation="0"
- inkscape:snap-global="false" />
+ inkscape:snap-global="true"
+ inkscape:snap-bbox="true" />
<defs
id="defs4">
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient979">
+ <stop
+ style="stop-color:#255a54;stop-opacity:1;"
+ offset="0"
+ id="stop975" />
+ <stop
+ style="stop-color:#133430;stop-opacity:1"
+ offset="1"
+ id="stop977" />
+ </linearGradient>
+ <linearGradient
+ x1="403.63"
+ y1="448.35001"
+ gradientTransform="matrix(0.70711,-0.70711,0.70711,0.70711,-203.97741,756.21351)"
+ x2="382.89999"
+ gradientUnits="userSpaceOnUse"
+ y2="448.35001"
+ id="linearGradient855">
+ <stop
+ offset="0"
+ stop-opacity=".39216"
+ stop-color="#7f7f7f"
+ id="stop893"
+ style="stop-color:#7f7f7f;stop-opacity:1" />
+ <stop
+ offset="1"
+ stop-opacity=".39216"
+ stop-color="#6f6f6f"
+ id="stop895"
+ style="stop-color:#6f6f6f;stop-opacity:0" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient855-3"
+ y2="448.35001"
+ gradientUnits="userSpaceOnUse"
+ x2="382.89999"
+ gradientTransform="matrix(0.70711,-0.70711,0.70711,0.70711,-203.97741,756.21351)"
+ y1="448.35001"
+ x1="403.63">
+ <stop
+ style="stop-color:#7f7f7f;stop-opacity:1"
+ id="stop851"
+ stop-color="#7f7f7f"
+ stop-opacity=".39216"
+ offset="0" />
+ <stop
+ style="stop-color:#6f6f6f;stop-opacity:0"
+ id="stop853"
+ stop-color="#6f6f6f"
+ stop-opacity=".39216"
+ offset="1" />
+ </linearGradient>
<inkscape:perspective
sodipodi:type="inkscape:persp3d"
inkscape:vp_x="573.17725 : 70.615423 : 0"
offset="0"
stop-opacity=".39216"
stop-color="#7f7f7f"
- id="stop3636" />
+ id="stop3636"
+ style="stop-color:#7f7f7f;stop-opacity:1" />
<stop
offset="1"
stop-opacity=".39216"
stop-color="#6f6f6f"
- id="stop3638" />
+ id="stop3638"
+ style="stop-color:#6f6f6f;stop-opacity:0.01941748" />
</linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient979"
+ id="linearGradient981"
+ x1="258.13272"
+ y1="581.64954"
+ x2="280.90915"
+ y2="487.69684"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.2956992,0,0,1.1173853,-70.442976,-75.323286)" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient979"
+ id="linearGradient981-5"
+ x1="258.13272"
+ y1="581.64954"
+ x2="280.90915"
+ y2="487.69684"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.2956992,0,0,1.1173853,346.73201,-93.640862)" />
</defs>
<metadata
id="metadata7">
inkscape:groupmode="layer"
id="layer1"
transform="translate(0,-52.362188)">
+ <rect
+ style="opacity:1;vector-effect:none;fill:#000000;fill-opacity:1;stroke:#ececec;stroke-width:15.00000095;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-end:none;paint-order:stroke fill markers"
+ id="rect945"
+ width="1167.6385"
+ height="1151.5332"
+ x="1217.4148"
+ y="1347.8682"
+ rx="33.75"
+ ry="33.75" />
<image
sodipodi:absref="/home/carl/src/dcpomatic/graphics/src/dcpomatic.png"
xlink:href="dcpomatic.png"
- y="80.386467"
- x="10.670144"
- width="960.00006"
- height="960.00006"
- preserveAspectRatio="none"
+ style="stroke:#000000;stroke-opacity:1;stroke-width:2.5000001;stroke-miterlimit:4;stroke-dasharray:none;opacity:1"
id="image4358"
- style="stroke:#000000;stroke-opacity:1;stroke-width:2.5000001;stroke-miterlimit:4;stroke-dasharray:none;opacity:1" />
- <g
- id="g4865"
- transform="matrix(1,0,0,0.7632365,969.89577,587.12592)"
- style="stroke:#0b0000;stroke-width:8.01250839;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;opacity:0.691">
- <path
- sodipodi:nodetypes="ccccc"
- d="m -213.36669,-76.521967 -237.25434,29.22973 v 131.7236 l 237.25434,-29.22973 z"
- style="opacity:1;fill:#f2f2f2;fill-opacity:1;fill-rule:evenodd;stroke:#0b0000;stroke-width:8.01250839;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-end:none;paint-order:stroke fill markers"
- id="path4664"
- inkscape:connector-curvature="0" />
- <path
- sodipodi:nodetypes="ccccc"
- d="m -512.46942,-153.6491 -237.25434,29.22973 300.80072,73.481127 235.55635,-25.583724 z"
- style="opacity:1;fill:#767676;fill-opacity:1;fill-rule:evenodd;stroke:#0b0000;stroke-width:8.01250839;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-end:none;paint-order:stroke fill markers"
- id="path4666"
- inkscape:connector-curvature="0" />
- <path
- sodipodi:nodetypes="ccccc"
- d="M -749.72376,-124.41937 V 7.3042426 l 299.10273,77.1271204 v -131.7236 z"
- style="opacity:1;fill:#bcbcbc;fill-opacity:1;fill-rule:evenodd;stroke:#0b0000;stroke-width:8.01250839;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-end:none;paint-order:stroke fill markers"
- id="path4668"
- inkscape:connector-curvature="0" />
- </g>
+ preserveAspectRatio="none"
+ height="960.00006"
+ width="960.00006"
+ x="10.670144"
+ y="80.386467" />
+ <rect
+ style="opacity:1;vector-effect:none;fill:url(#linearGradient981);fill-opacity:1;stroke:none;stroke-width:15.00000095;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-end:none;paint-order:stroke fill markers"
+ id="rect958"
+ width="95.643623"
+ height="189.7067"
+ x="238.2251"
+ y="451.96884"
+ rx="43.729847"
+ ry="36.004051" />
+ <rect
+ style="opacity:1;vector-effect:none;fill:url(#linearGradient981-5);fill-opacity:1;stroke:none;stroke-width:15.00000095;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-end:none;paint-order:stroke fill markers"
+ id="rect958-6"
+ width="95.643623"
+ height="189.70668"
+ x="655.40009"
+ y="433.65125"
+ rx="43.729847"
+ ry="36.004051" />
<path
- style="fill:#00ff00;stroke:#00ff00;stroke-width:15.00000095;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 536.48268,574.56478 38.71392,-3.11173"
- id="path4867"
+ style="fill:#808080;stroke:#ffffff;stroke-width:15.00000095;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="m 635.01872,349.90824 85.16099,283.02659 H 263.60389 l 87.18344,-281.69086 c 3.82184,-13.96906 23.00671,-28.47528 36.85535,-28.47528 l 213.6276,-0.35249 c 17.09674,0.72772 28.6937,11.26128 33.74844,27.49204 z"
+ id="path947"
inkscape:connector-curvature="0"
- sodipodi:nodetypes="cc"
- inkscape:transform-center-x="-29.634214"
- inkscape:transform-center-y="30.068191" />
+ sodipodi:nodetypes="ccccccc" />
+ <rect
+ style="opacity:1;vector-effect:none;fill:#999999;fill-opacity:1;stroke:#ececec;stroke-width:30.00000191;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-end:none;paint-order:stroke fill markers"
+ id="rect943"
+ width="456.57584"
+ height="105.73843"
+ x="263.60385"
+ y="632.93481"
+ ry="17.726633"
+ rx="17.773174" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:22.50000191px;line-height:1.20000005;font-family:'Bitstream Vera Sans Mono';-inkscape-font-specification:'Bitstream Vera Sans Mono';font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:0px;word-spacing:0px;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;opacity:1;vector-effect:none;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.9375;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;"
+ x="-1064.7976"
+ y="826.49603"
+ id="text1027"><tspan
+ sodipodi:role="line"
+ id="tspan1025"
+ x="-1064.7976"
+ y="846.88104"
+ style="stroke-width:0.9375;-inkscape-font-specification:'Bitstream Vera Sans Mono';font-family:'Bitstream Vera Sans Mono';font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal;" /></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:128.48579407px;line-height:1.20000005;font-family:'Latin Modern Roman';-inkscape-font-specification:'Latin Modern Roman, Bold';font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:0px;word-spacing:0px;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;opacity:1;vector-effect:none;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.93749988;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ x="394.93756"
+ y="729.72614"
+ id="text1035"><tspan
+ sodipodi:role="line"
+ id="tspan1033"
+ x="394.93756"
+ y="729.72614"
+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:'Latin Modern Roman';-inkscape-font-specification:'Latin Modern Roman, Bold';stroke-width:0.93749988">DCP</tspan></text>
+ <path
+ style="opacity:1;vector-effect:none;fill:#999999;fill-opacity:1;stroke:#ececec;stroke-width:30.00000191;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-end:none;paint-order:stroke fill markers"
+ d="m 292.58069,687.62725 h 37.57918"
+ id="path1037"
+ inkscape:connector-curvature="0" />
</g>
</svg>
}
# @param #1 .app directory
-# @param #2 full name e.g. DCP-o-matic Batch Converter
-# @param #3 bundle id e.g. com.dcpomatic.batch
+# @param #2 .pkg or ""
+# @param #3 full name e.g. DCP-o-matic Batch Converter
+# @param #4 bundle id e.g. com.dcpomatic.batch
function make_dmg {
local appdir="$1"
- local full_name="$2"
- local bundle_id="$3"
+ local pkg="$2"
+ local full_name="$3"
+ local bundle_id="$4"
tmp_dmg=dcpomatic_tmp.dmg
dmg="$full_name $version.dmg"
vol_name=DCP-o-matic-$version
mkdir -p $vol_name
cp -a "$appdir" $vol_name
+ if [ "$pkg" != ""]; then
+ cp -a "$pkg" $vol_name
+ fi
ln -s /Applications "$vol_name/Applications"
cat<<EOF > "$vol_name/READ ME.txt"
Welcome to DCP-o-matic! The first time you run the program there may be
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" com.dcpomatic
+make_dmg "$appdir" "" "DCP-o-matic" com.dcpomatic
# DCP-o-matic KDM Creator
setup "DCP-o-matic 2 KDM Creator.app"
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" com.dcpomatic.kdm
+make_dmg "$appdir" "" "DCP-o-matic KDM Creator" com.dcpomatic.kdm
# DCP-o-matic Encode Server
setup "DCP-o-matic 2 Encode Server.app"
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" com.dcpomatic.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"
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" com.dcpomatic.batch
+make_dmg "$appdir" "" "DCP-o-matic Batch Converter" com.dcpomatic.batch
# DCP-o-matic Player
setup "DCP-o-matic 2 Player.app"
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" com.dcpomatic.player
+make_dmg "$appdir" "" "DCP-o-matic Player" com.dcpomatic.player
# DCP-o-matic Playlist Editor
setup "DCP-o-matic 2 Playlist Editor.app"
cp $prefix/src/dcpomatic/build/platform/osx/dcpomatic2_playlist.Info.plist "$approot/Info.plist"
rl=("$approot/MacOS/dcpomatic2_playlist" "$approot/Frameworks/"*.dylib)
relink "${rl[@]}"
-make_dmg "$appdir" "DCP-o-matic Playlist Editor" com.dcpomatic.playlist
+make_dmg "$appdir" "" "DCP-o-matic Playlist Editor" com.dcpomatic.playlist
# DCP-o-matic Disk Writer
setup "DCP-o-matic 2 Disk Writer.app"
copy $ROOT src/dcpomatic/build/src/tools/dcpomatic2_disk "$approot/MacOS"
-copy $ROOT src/dcpomatic/build/src/tools/dcpomatic2_disk_writer "$approot/MacOS"
# XXX: this shouldn't really be necessary
copy $ROOT src/openssl/apps/openssl "$approot/MacOS"
cp $prefix/src/dcpomatic/build/platform/osx/dcpomatic2_disk.Info.plist "$approot/Info.plist"
relink "${rl[@]}"
rl=("$approot/MacOS/dcpomatic2_disk_writer" "$approot/Frameworks/"*.dylib)
relink "${rl[@]}"
-make_dmg "$appdir" "DCP-o-matic Disk Writer" com.dcpomatic.disk
+
+# DCP-o-matic Disk Writer daemon .pkg
+pkgbase=tmp-disk-writer
+rm -rf $pkgbase
+mkdir $pkgbase
+pkgroot=$pkgbase/root
+mkdir -p $pkgroot/Library/LaunchDaemons
+cat > $pkgroot/Library/LaunchDaemons/com.dcpomatic.disk.writer.plist <<EOF
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>Label</key>
+ <string>com.dcpomatic.disk.writer</string>
+ <key>ProgramArguments</key>
+ <array>
+ <string>/Library/Application Support/com.dcpomatic/dcpomatic2_disk_writer</string>
+ </array>
+ <key>EnvironmentVariables</key>
+ <dict>
+ <key>DYLD_LIBRARY_PATH</key>
+ <string><![CDATA[/Library/Application Support/com.dcpomatic]]></string>
+ </dict>
+ <key>KeepAlive</key>
+ <true/>
+ <key>RunAtLoad</key>
+ <true/>
+ <key>Debug</key>
+ <true/>
+ <key>StandardOutPath</key>
+ <string>/Users/carl/damon.out.log</string>
+ <key>StandardErrorPath</key>
+ <string>/Users/carl/damon.err.log</string>
+</dict>
+</plist>
+EOF
+
+mkdir -p "$pkgroot/Library/Application Support/com.dcpomatic"
+target="$pkgroot/Library/Application Support/com.dcpomatic"
+copy $ROOT src/dcpomatic/build/src/tools/dcpomatic2_disk_writer "$target"
+copy_lib_root libcxml "$target"
+copy_lib_env libboost_system "$dest"
+copy_lib_env libboost_filesystem "$dest"
+copy_lib_env libboost_thread "$dest"
+copy_lib_env libboost_date_time "$dest"
+copy_lib_env libboost_locale "$dest"
+copy_lib_env libboost_regex "$dest"
+copy_lib_env libicui18n "$dest"
+copy_lib_env libicudata "$dest"
+copy_lib_env libicuio "$dest"
+copy_lib_env libicule "$dest"
+copy_lib_env libiculx "$dest"
+copy_lib_env libicutest "$dest"
+copy_lib_env libicutu "$dest"
+copy_lib_env libicuuc "$dest"
+
+mkdir $pkgbase/scripts
+cat > $pkgbase/scripts/postinstall <<EOF
+#!/bin/sh
+/bin/launchctl load "/Library/LaunchDaemons/com.dcpomatic.disk.writer.plist"
+exit 0
+EOF
+chmod gou+x scripts/postinstall
+
+pkgbuild --root $pkgroot --identifier com.dcpomatic.disk.writer --scripts $pkgbase/scripts "DCP-o-matic Disk Writer.pkg"
+
+make_dmg "$appdir" "DCP-o-matic Disk Writer.pkg" "DCP-o-matic Disk Writer" com.dcpomatic.disk