Add support for png2icns as an alternative to iconutil

png2icns is used when building kitty with nix because iconutil seems to be closed-source.
libicns also has an iconutil clone called icnsutil in the source tree but the last release is from 2012, which does not include this utility yet.
This commit is contained in:
Luflosi 2020-03-20 23:59:58 +01:00
parent 97cae0e355
commit 21c7002c68
No known key found for this signature in database
GPG Key ID: 4E41E29EDCC345D0

View File

@ -859,10 +859,23 @@ def macos_info_plist() -> bytes:
def create_macos_app_icon(where: str = 'Resources') -> None:
iconset_dir = os.path.abspath(os.path.join('logo', appname + '.iconset'))
subprocess.check_call([
'iconutil', '-c', 'icns', iconset_dir, '-o',
os.path.join(where, appname + '.icns')
])
icns_dir = os.path.join(where, appname + '.icns')
try:
subprocess.check_call([
'iconutil', '-c', 'icns', iconset_dir, '-o', icns_dir
])
except FileNotFoundError:
print(error('iconutil not found') + ', using png2icns (without retina support) to convert the logo', file=sys.stderr)
subprocess.check_call([
'png2icns', icns_dir
] + [os.path.join(iconset_dir, logo) for logo in [
# png2icns does not support retina icons, so only pass the non-retina icons
'icon_16x16.png',
'icon_32x32.png',
'icon_128x128.png',
'icon_256x256.png',
'icon_512x512.png',
]])
def create_minimal_macos_bundle(args: Options, where: str) -> None: