diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index e435d0b64f..c06f6cb119 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -110,7 +110,7 @@ deploy_beta_testflight: except: - tags script: - - echo done #PYTHONPATH="$PYTHONPATH:/darwin-containers" python3 -u build-system/Make/Make.py remote-deploy-testflight --darwinContainersHost="http://host.docker.internal:8650" --ipa="build/artifacts/Telegram.ipa" --dsyms="build/artifacts/Telegram.DSYMs.zip" + - PYTHONPATH="$PYTHONPATH:/darwin-containers" python3 -u build-system/Make/Make.py remote-deploy-testflight --darwinContainersHost="http://host.docker.internal:8650" --ipa="build/artifacts/Telegram.ipa" --dsyms="build/artifacts/Telegram.DSYMs.zip" environment: name: testflight_llc @@ -126,7 +126,7 @@ verifysanity_beta_testflight: script: - rm -rf build/verify-input && mkdir -p build/verify-input && mv build/artifacts/Telegram.ipa build/verify-input/TelegramVerifySource.ipa - PYTHONPATH="$PYTHONPATH:/darwin-containers" python3 -u build-system/Make/Make.py remote-build --darwinContainersHost="http://host.docker.internal:8650" --cacheHost="$TELEGRAM_BAZEL_CACHE_HOST" --configurationPath="build-system/appstore-configuration.json" --codesigningInformationPath=build-system/fake-codesigning --configuration=release_arm64 - - python3 tools/ipadiff.py build/artifacts/Telegram.ipa build/verify-input/TelegramVerifySource.ipa + - PYTHONPATH="$PYTHONPATH:/darwin-containers" python3 -u build-system/Make/Make.py remote-ipa-diff --darwinContainersHost="http://host.docker.internal:8650" --ipa1="build/artifacts/Telegram.ipa" --ipa2="build/verify-input/TelegramVerifySource.ipa" - if [ $? -ne 0 ]; then; echo "Verification failed"; mkdir -p build/verifysanity_artifacts; cp build/artifacts/Telegram.ipa build/verifysanity_artifacts/; exit 1; fi environment: name: testflight_llc @@ -148,7 +148,7 @@ verify_beta_testflight: script: - rm -rf build/verify-input && mkdir -p build/verify-input && mv build/artifacts/Telegram.ipa build/verify-input/TelegramVerifySource.ipa - PYTHONPATH="$PYTHONPATH:/darwin-containers" python3 -u build-system/Make/Make.py remote-build --darwinContainersHost="http://host.docker.internal:8650" --configurationPath="build-system/appstore-configuration.json" --codesigningInformationPath=build-system/fake-codesigning --configuration=release_arm64 - - python3 tools/ipadiff.py build/artifacts/Telegram.ipa build/verify-input/TelegramVerifySource.ipa + - PYTHONPATH="$PYTHONPATH:/darwin-containers" python3 -u build-system/Make/Make.py remote-ipa-diff --darwinContainersHost="http://host.docker.internal:8650" --ipa1="build/artifacts/Telegram.ipa" --ipa2="build/verify-input/TelegramVerifySource.ipa" - if [ $? -ne 0 ]; then; echo "Verification failed"; mkdir -p build/verify_artifacts; cp build/artifacts/Telegram.ipa build/verify_artifacts/; exit 1; fi environment: name: testflight_llc diff --git a/Telegram/BUILD b/Telegram/BUILD index 2469290bd5..0e26d3e2c0 100644 --- a/Telegram/BUILD +++ b/Telegram/BUILD @@ -116,6 +116,7 @@ genrule( ) minimum_os_version = "11.0" +minimum_watchos_version="6.0" empty_languages = [ "ar", @@ -704,7 +705,7 @@ watchos_extension( ":AppNameInfoPlist", ":WatchExtensionNSExtensionInfoPlist", ], - minimum_os_version = "9.0", + minimum_os_version = minimum_watchos_version, provisioning_profile = select({ ":disableProvisioningProfilesSetting": None, "//conditions:default": "@build_configuration//provisioning:WatchExtension.mobileprovision", @@ -734,7 +735,7 @@ watchos_application( ":AppNameInfoPlist", ":WatchAppCompanionInfoPlist", ], - minimum_os_version = "9.0", + minimum_os_version = minimum_watchos_version, provisioning_profile = select({ ":disableProvisioningProfilesSetting": None, "//conditions:default": "@build_configuration//provisioning:WatchApp.mobileprovision", diff --git a/build-system/Make/Make.py b/build-system/Make/Make.py index c763fabb86..6ef7c36a07 100644 --- a/build-system/Make/Make.py +++ b/build-system/Make/Make.py @@ -190,7 +190,7 @@ class BazelCommandLine: '--ios_multi_cpus=arm64', # Always build universal Watch binaries. - '--watchos_cpus=arm64_32', + '--watchos_cpus=armv7k,arm64_32', # Generate DSYM files when building. '--apple_generate_dsym', @@ -911,6 +911,26 @@ if __name__ == '__main__': help='Path to DSYMs.zip file.' ) + remote_ipadiff_parser = subparsers.add_parser('remote-ipa-diff', help='Execute ipa-diff using a remote environment.') + remote_ipadiff_parser.add_argument( + '--darwinContainersHost', + required=True, + type=str, + help='DarwinContainers host address.' + ) + remote_ipadiff_parser.add_argument( + '--ipa1', + required=True, + type=str, + help='Path to IPA 1 file.' + ) + remote_ipadiff_parser.add_argument( + '--ipa2', + required=True, + type=str, + help='Path to IPA 2 file.' + ) + if len(sys.argv) < 2: parser.print_help() sys.exit(1) @@ -976,6 +996,12 @@ if __name__ == '__main__': username=env['APPSTORE_CONNECT_USERNAME'], password=env['APPSTORE_CONNECT_PASSWORD'] ) + elif args.commandName == 'remote-ipa-diff': + RemoteBuild.remote_ipa_diff( + darwin_containers_host=args.darwinContainersHost, + ipa1_path=args.ipa1, + ipa2_path=args.ipa2 + ) elif args.commandName == 'test': test(bazel=bazel_path, arguments=args) else: diff --git a/build-system/Make/RemoteBuild.py b/build-system/Make/RemoteBuild.py index b6633adc1b..59cdf15cfc 100644 --- a/build-system/Make/RemoteBuild.py +++ b/build-system/Make/RemoteBuild.py @@ -183,3 +183,57 @@ def remote_deploy_testflight(darwin_containers_host, ipa_path, dsyms_path, usern print('Executing remote upload...') session_ssh(session=session, command='bash -l guest-upload-telegram.sh') +def remote_ipa_diff(darwin_containers_host, ipa1_path, ipa2_path): + macos_version = '12.5' + + from darwin_containers import DarwinContainers + + configuration_path = 'versions.json' + xcode_version = '' + with open(configuration_path) as file: + configuration_dict = json.load(file) + if configuration_dict['xcode'] is None: + raise Exception('Missing xcode version in {}'.format(configuration_path)) + xcode_version = configuration_dict['xcode'] + + print('Xcode version: {}'.format(xcode_version)) + + image_name = 'macos-{macos_version}-xcode-{xcode_version}'.format(macos_version=macos_version, xcode_version=xcode_version) + + print('Image name: {}'.format(image_name)) + + darwinContainers = DarwinContainers(serverAddress=darwin_containers_host, verbose=False) + + print('Opening container session...') + with darwinContainers.workingImageSession(name=image_name) as session: + print('Uploading data to container...') + session_scp_upload(session=session, source_path='tools/ipadiff.py', destination_path='ipadiff.py') + session_scp_upload(session=session, source_path='tools/main.cpp', destination_path='main.cpp') + session_scp_upload(session=session, source_path=ipa1_path, destination_path='ipa1.ipa') + session_scp_upload(session=session, source_path=ipa2_path, destination_path='ipa2.ipa') + + guest_upload_sh = ''' + set -e + + python3 ipadiff.py ipa1.ipa ipa2.ipa + echo $? > result.txt + ''' + + guest_upload_file_path = tempfile.mktemp() + with open(guest_upload_file_path, 'w+') as file: + file.write(guest_upload_sh) + session_scp_upload(session=session, source_path=guest_upload_file_path, destination_path='guest-ipa-diff.sh') + os.unlink(guest_upload_file_path) + + print('Executing remote ipa-diff...') + session_ssh(session=session, command='bash -l guest-ipa-diff.sh') + guest_result_path = tempfile.mktemp() + session_scp_download(session=session, source_path='result.txt', destination_path=guest_result_path) + guest_result = '' + with open(guest_result_path, 'r') as file: + guest_result = file.read().rstrip() + os.unlink(guest_result_path) + + if guest_result != '0': + sys.exit(1) +