mirror of
https://github.com/onionshare/onionshare.git
synced 2024-10-01 01:35:40 -04:00
48 lines
1.6 KiB
Python
Executable File
48 lines
1.6 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
import os
|
|
import shutil
|
|
import click
|
|
import subprocess
|
|
|
|
|
|
from common import get_binary_arches
|
|
|
|
|
|
@click.command()
|
|
@click.argument("intel_app", type=click.Path(exists=True))
|
|
@click.argument("silicon_app", type=click.Path(exists=True))
|
|
@click.argument("output_app", type=click.Path(exists=False))
|
|
def main(intel_app, silicon_app, output_app):
|
|
# Get the list of binaries in each app
|
|
print("Looking up binaries from Intel app:", intel_app)
|
|
intel_universal, intel_silicon, intel_intel = get_binary_arches(intel_app)
|
|
print("Looking up binaries from Silicon app:", silicon_app)
|
|
silicon_universal, silicon_silicon, silicon_intel = get_binary_arches(silicon_app)
|
|
|
|
# Find which binaries should be merged
|
|
intel_intel_filenames = [i[len(intel_app) + 1 :] for i in intel_intel]
|
|
silicon_silicon_filenames = [i[len(silicon_app) + 1 :] for i in silicon_silicon]
|
|
intersection = set(intel_intel_filenames).intersection(
|
|
set(silicon_silicon_filenames)
|
|
)
|
|
|
|
# Copy the Silicon app to the output app
|
|
print("Copying the app bundle for the output app")
|
|
shutil.copytree(silicon_app, output_app, symlinks=True)
|
|
|
|
# Merge them
|
|
for filename in intersection:
|
|
print(f"Merging {filename}")
|
|
intel_binary = os.path.join(intel_app, filename)
|
|
silicon_binary = os.path.join(silicon_app, filename)
|
|
output_binary = os.path.join(output_app, filename)
|
|
subprocess.run(
|
|
["lipo", "-create", intel_binary, silicon_binary, "-output", output_binary]
|
|
)
|
|
|
|
print(f"Merge complete: {output_app}")
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|