- os.makedirs('build/%s.AppDir/usr/bin' % nice_filename)
- target.command('cp %s/bin/%s build/%s.AppDir/usr/bin' % (target.directory, internal_name, nice_filename))
- target.command('cp %s/src/openssl/apps/openssl build/%s.AppDir/usr/bin/dcpomatic2_openssl' % (target.directory, nice_filename))
- target.command('mkdir -p build/%s.AppDir/usr/share/libdcp' % nice_filename)
- target.command('cp -r %s/share/dcpomatic2 build/%s.AppDir/usr/share/' % (target.directory, nice_filename))
- target.command('cp -r %s/share/libdcp/xsd build/%s.AppDir/usr/share/libdcp/' % (target.directory, nice_filename))
- target.command('cp -r %s/share/libdcp/tags build/%s.AppDir/usr/share/libdcp/' % (target.directory, nice_filename))
- with open('build/%s.AppDir/AppRun' % nice_filename, 'w') as f:
+ appdir = f'build/{nice_filename}.AppDir'
+ os.makedirs(f'{appdir}/usr/bin')
+ target.command(f'cp {target.directory}/bin/{internal_name} {appdir}/usr/bin')
+ target.command(f'cp {target.directory}/src/openssl/apps/openssl {appdir}/usr/bin/dcpomatic2_openssl')
+ target.command(f'cp {target.directory}/bin/dcpverify {appdir}/usr/bin/dcpomatic2_verify')
+ target.command(f'mkdir -p {appdir}/usr/share/libdcp')
+ target.command(f'cp -r {target.directory}/share/dcpomatic2 {appdir}/usr/share/')
+ target.command(f'cp -r {target.directory}/share/libdcp/xsd {appdir}/usr/share/libdcp/')
+ target.command(f'cp -r {target.directory}/share/libdcp/tags {appdir}/usr/share/libdcp/')
+ target.command(f'cp {target.directory}/share/libdcp/ratings {appdir}/usr/share/libdcp/')
+ lib = 'usr/lib/x86_64-linux-gnu'
+ target.command(f'mkdir -p build/{nice_filename}.AppDir/{lib}/gdk-pixbuf-2.0/2.10.0')
+ target.command(f'cp -a /{lib}/gdk-pixbuf-2.0 build/{nice_filename}.AppDir/usr/lib/x86_64-linux-gnu/')
+ target.command('apt update')
+ for package in ['libc6', 'libglib2.0-0', 'gnome-settings-daemon-schemas', 'librsvg2-common', 'libgdk-pixbuf2.0-0', 'libpango-1.0-0', 'libpangoft2-1.0-0', 'libpangocairo-1.0-0']:
+ target.command(f'apt download {package}')
+ target.command(f'dpkg-deb -x {package}*.deb {appdir}')
+ target.command(f'glib-compile-schemas {appdir}/usr/share/glib-2.0/schemas')
+ target.command(f'sed -i -e "s|/usr/lib/x86_64-linux-gnu/gdk-pixbuf-.*/.*/loaders/||g" {appdir}/usr/lib/x86_64-linux-gnu/gdk-pixbuf-*/*/loaders.cache')
+ # Stop anything loading from outside the AppImage
+ target.command(f'sed -i -e "s|/usr|/xxx|g" {appdir}/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2')
+
+ if internal_name == 'dcpomatic2_disk':
+ target.command(f'mkdir -p {appdir}/usr/share/polkit-1/actions')
+ target.command(f'cp {target.directory}/share/polkit-1/actions/com.dcpomatic.write-drive.policy {appdir}/usr/share/polkit-1/actions')
+
+ with open(f'{appdir}/AppRun', 'w') as f: