Skip to content

Commit

Permalink
osxbundle: add optional source path argument
Browse files Browse the repository at this point in the history
  • Loading branch information
Akemi committed Feb 20, 2024
1 parent 166f039 commit f9197e0
Showing 1 changed file with 11 additions and 9 deletions.
20 changes: 11 additions & 9 deletions TOOLS/osxbundle.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,11 +24,11 @@ def target_binary(binary_name):
return os.path.join(target_directory(binary_name),
os.path.basename(binary_name))

def copy_bundle(binary_name):
def copy_bundle(binary_name, src_path):
if os.path.isdir(bundle_path(binary_name)):
shutil.rmtree(bundle_path(binary_name))
shutil.copytree(
os.path.join('TOOLS', 'osxbundle', bundle_name(binary_name)),
os.path.join(src_path, 'TOOLS', 'osxbundle', bundle_name(binary_name)),
bundle_path(binary_name))

def copy_binary(binary_name):
Expand All @@ -41,10 +41,11 @@ def apply_plist_template(plist_file, version):
def sign_bundle(binary_name):
sh('codesign --force --deep -s - ' + bundle_path(binary_name))

def bundle_version():
def bundle_version(src_path):
version = 'UNKNOWN'
if os.path.exists('VERSION'):
x = open('VERSION')
version_path = os.path.join(src_path, 'VERSION')
if os.path.exists(version_path):
x = open(version_path)
version = x.read()
x.close()
return version
Expand All @@ -58,24 +59,25 @@ def main():

(options, args) = parser.parse_args()

if len(args) != 1:
if len(args) < 1 or len(args) > 2:
parser.error("incorrect number of arguments")
else:
binary_name = args[0]
src_path = args[1] if len(args) > 1 else "."

version = bundle_version().rstrip()
version = bundle_version(src_path).rstrip()

print("Creating Mac OS X application bundle (version: %s)..." % version)
print("> copying bundle skeleton")
copy_bundle(binary_name)
copy_bundle(binary_name, src_path)
print("> copying binary")
copy_binary(binary_name)
print("> generating Info.plist")
apply_plist_template(target_plist(binary_name), version)

if options.deps:
print("> bundling dependencies")
print(sh(" ".join(["TOOLS/dylib-unhell.py", target_binary(binary_name)])))
print(sh(" ".join([os.path.join(src_path, "TOOLS/dylib-unhell.py"), target_binary(binary_name)])))

print("> signing bundle with ad-hoc pseudo identity")
sign_bundle(binary_name)
Expand Down

0 comments on commit f9197e0

Please sign in to comment.