From ab73f8c4d6f5d400e432695a478706c787266046 Mon Sep 17 00:00:00 2001 From: Chinmay Garde Date: Thu, 18 Feb 2016 14:52:21 -0800 Subject: [PATCH 1/2] Make the buildbot generate an archive for the dynamic services SDK --- BUILD.gn | 1 + sky/services/dynamic/BUILD.gn | 36 +++++++++++++------- sky/services/dynamic/dynamic_service.h | 2 +- sky/services/dynamic/dynamic_service_dylib.h | 1 - travis/build_xcode_sdk.sh | 28 +++++++++++++++ 5 files changed, 53 insertions(+), 15 deletions(-) diff --git a/BUILD.gn b/BUILD.gn index 69da33447b724..4fa947c2ed9fc 100644 --- a/BUILD.gn +++ b/BUILD.gn @@ -7,6 +7,7 @@ group("default") { testonly = true deps = [ "//sky", + "//sky/services/dynamic:sdk_lib", ] } diff --git a/sky/services/dynamic/BUILD.gn b/sky/services/dynamic/BUILD.gn index c97733f44ce4e..3ba26685c5066 100644 --- a/sky/services/dynamic/BUILD.gn +++ b/sky/services/dynamic/BUILD.gn @@ -25,19 +25,29 @@ source_set("embedder") { check_includes = false } +service_sources = [ + "dynamic_service.c", + "dynamic_service.h", + "dynamic_service_dylib.cc", + "dynamic_service_dylib.h", + "dynamic_service_macros.h", +] + +service_deps = [ + "//mojo/public/c/system", + "//mojo/public/cpp/bindings", + "//mojo/public/cpp/environment:standalone", + "//mojo/public/platform/native:system", +] + source_set("dylib") { - sources = [ - "dynamic_service.c", - "dynamic_service.h", - "dynamic_service_dylib.cc", - "dynamic_service_dylib.h", - "dynamic_service_macros.h", - ] + sources = service_sources + deps = service_deps +} - deps = [ - "//mojo/public/c/system", - "//mojo/public/cpp/bindings", - "//mojo/public/cpp/environment:standalone", - "//mojo/public/platform/native:system", - ] +static_library("sdk_lib") { + output_name = "FlutterServices" + complete_static_lib = true + sources = service_sources + deps = service_deps } diff --git a/sky/services/dynamic/dynamic_service.h b/sky/services/dynamic/dynamic_service.h index 30456957ad113..62f5a487499ba 100644 --- a/sky/services/dynamic/dynamic_service.h +++ b/sky/services/dynamic/dynamic_service.h @@ -15,7 +15,7 @@ FLUTTER_C_API_START /// ============================================================================ -/// The definitions in the file (and this file alone) form the stable Flutter +/// The definitions in this file (and this file alone) form the stable Flutter /// dynamic services ABI. /// ============================================================================ diff --git a/sky/services/dynamic/dynamic_service_dylib.h b/sky/services/dynamic/dynamic_service_dylib.h index fd8c0092df73d..c15a48b0f95a4 100644 --- a/sky/services/dynamic/dynamic_service_dylib.h +++ b/sky/services/dynamic/dynamic_service_dylib.h @@ -5,7 +5,6 @@ #ifndef SKY_SERVICES_DYNAMIC_DYNAMIC_SERVICE_DYLIB_H_ #define SKY_SERVICES_DYNAMIC_DYNAMIC_SERVICE_DYLIB_H_ -#include "sky/services/dynamic/dynamic_service_macros.h" #include "mojo/public/cpp/system/message_pipe.h" #include "mojo/public/cpp/bindings/string.h" diff --git a/travis/build_xcode_sdk.sh b/travis/build_xcode_sdk.sh index ca49dbc2510b1..d40183621968d 100644 --- a/travis/build_xcode_sdk.sh +++ b/travis/build_xcode_sdk.sh @@ -9,6 +9,8 @@ set -ex # use /tmp WORKSPACE=${TARGET_TEMP_DIR}/tmp/flutter_build_workspace DEPOT_WORKSPACE=${TARGET_TEMP_DIR}/tmp/flutter_depot_tools +SERVICES_SDK_DIR=FlutterServicesSDK +SERVICES_ARCHIVE=${SERVICES_SDK_DIR}.zip function NukeWorkspace { rm -rf ${WORKSPACE} @@ -71,6 +73,31 @@ pushd out/FlutterXcode zip -r FlutterXcode.zip Flutter +# Package up the services SDK + +mkdir -p ${SERVICES_SDK_DIR}/include/mojo/public +mkdir -p ${SERVICES_SDK_DIR}/lib + +# Create the fat services binary + +lipo -create \ + out/ios_sim_Release/obj/sky/services/dynamic/libFlutterServices.a \ + out/ios_Release/obj/sky/services/dynamic/libFlutterServices.a \ + -output ${SERVICES_SDK_DIR}/lib/libFlutterServicesIOS.a + +# Copy all relevant headers + +rsync -a --prune-empty-dirs --include '*/' --include '*.h' --exclude '*' \ + mojo/public/c ${SERVICES_SDK_DIR}/include/mojo/public +rsync -a --prune-empty-dirs --include '*/' --include '*.h' --exclude '*' \ + mojo/public/cpp ${SERVICES_SDK_DIR}/include/mojo/public +cp sky/services/dynamic/dynamic_service_dylib.h \ + ${SERVICES_SDK_DIR}/include/FlutterService.h + +# Create the service archive + +zip -r ${SERVICES_ARCHIVE} ${SERVICES_SDK_DIR}/ + # Upload generated assets if the key to the service account is available if [[ ! -z ${BUCKET_KEY_FILE} ]]; then set +e @@ -82,6 +109,7 @@ if [[ ! -z ${BUCKET_KEY_FILE} ]]; then fi gcloud auth activate-service-account --key-file ${BUCKET_KEY_FILE} gsutil cp FlutterXcode.zip gs://flutter_infra/flutter/${ENGINE_SHA}/ios/FlutterXcode.zip + gsutil cp ${SERVICES_ARCHIVE} gs://flutter_infra/flutter/${ENGINE_SHA}/ios/${SERVICES_ARCHIVE} fi popd # Out of the Xcode project From 0cc5558485f3d7f478fd69d1c3cfd11b6af4a750 Mon Sep 17 00:00:00 2001 From: Chinmay Garde Date: Thu, 18 Feb 2016 15:28:16 -0800 Subject: [PATCH 2/2] Generate the services SDK in the out/ directory on the bot --- travis/build_xcode_sdk.sh | 40 +++++++++++++++++++++------------------ 1 file changed, 22 insertions(+), 18 deletions(-) diff --git a/travis/build_xcode_sdk.sh b/travis/build_xcode_sdk.sh index d40183621968d..cd48e33e38de4 100644 --- a/travis/build_xcode_sdk.sh +++ b/travis/build_xcode_sdk.sh @@ -61,17 +61,7 @@ ninja -C out/ios_sim_Release ${GOMA_FLAGS} sky/tools/gn --ios --release ninja -C out/ios_Release ${GOMA_FLAGS} -# Create the directory for the merged project -mkdir -p out/FlutterXcode - -# Merge build artifacts -cp -R out/ios_sim_Release/Flutter out/FlutterXcode -cp -R out/ios_Release/Flutter out/FlutterXcode - -# Package it into a ZIP file for the builder to upload to cloud storage -pushd out/FlutterXcode - -zip -r FlutterXcode.zip Flutter +pushd out/ # Package up the services SDK @@ -80,24 +70,38 @@ mkdir -p ${SERVICES_SDK_DIR}/lib # Create the fat services binary -lipo -create \ - out/ios_sim_Release/obj/sky/services/dynamic/libFlutterServices.a \ - out/ios_Release/obj/sky/services/dynamic/libFlutterServices.a \ +lipo -create \ + ios_sim_Release/obj/sky/services/dynamic/libFlutterServices.a \ + ios_Release/obj/sky/services/dynamic/libFlutterServices.a \ -output ${SERVICES_SDK_DIR}/lib/libFlutterServicesIOS.a # Copy all relevant headers rsync -a --prune-empty-dirs --include '*/' --include '*.h' --exclude '*' \ - mojo/public/c ${SERVICES_SDK_DIR}/include/mojo/public + ../mojo/public/c ${SERVICES_SDK_DIR}/include/mojo/public rsync -a --prune-empty-dirs --include '*/' --include '*.h' --exclude '*' \ - mojo/public/cpp ${SERVICES_SDK_DIR}/include/mojo/public -cp sky/services/dynamic/dynamic_service_dylib.h \ + ../mojo/public/cpp ${SERVICES_SDK_DIR}/include/mojo/public +cp ../sky/services/dynamic/dynamic_service_dylib.h \ ${SERVICES_SDK_DIR}/include/FlutterService.h # Create the service archive zip -r ${SERVICES_ARCHIVE} ${SERVICES_SDK_DIR}/ +popd # Out of the out/ directory + +# Create the directory for the merged project +mkdir -p out/FlutterXcode + +# Merge build artifacts +cp -R out/ios_sim_Release/Flutter out/FlutterXcode +cp -R out/ios_Release/Flutter out/FlutterXcode + +# Package it into a ZIP file for the builder to upload to cloud storage +pushd out/FlutterXcode + +zip -r FlutterXcode.zip Flutter + # Upload generated assets if the key to the service account is available if [[ ! -z ${BUCKET_KEY_FILE} ]]; then set +e @@ -109,7 +113,7 @@ if [[ ! -z ${BUCKET_KEY_FILE} ]]; then fi gcloud auth activate-service-account --key-file ${BUCKET_KEY_FILE} gsutil cp FlutterXcode.zip gs://flutter_infra/flutter/${ENGINE_SHA}/ios/FlutterXcode.zip - gsutil cp ${SERVICES_ARCHIVE} gs://flutter_infra/flutter/${ENGINE_SHA}/ios/${SERVICES_ARCHIVE} + gsutil cp ../${SERVICES_ARCHIVE} gs://flutter_infra/flutter/${ENGINE_SHA}/ios/${SERVICES_ARCHIVE} fi popd # Out of the Xcode project