Commit graph

373 commits

Author SHA1 Message Date
Chris Bracken cb2b89c389 Set derived dir Flutter.framework directory readonly (#8748)
Provides a strong hint to developers that editing Flutter framework
headers isn't supported.
2017-03-13 15:26:35 -07:00
Chris Bracken 1a2e6f3389 Support Xcode builds in project dirs with spaces (#8709)
Use line-based iteration in place of word-based iteration over the
framework directories, to avoid breaking on spaces.
2017-03-10 09:32:58 -08:00
Chris Bracken 7a09316cd0 Declare locals final where not reassigned (flutter_tools) (#8570) 2017-03-03 17:50:46 -08:00
Alexandre Ardhuin 2888139c6b prefer const constructor (#8292) 2017-02-20 14:07:16 -08:00
Chris Bracken 36e3260bfe Do not attempt to merge non-fat frameworks in Xcode build (#8251)
* Do not attempt to merge non-fat frameworks in Xcode build

During the Xcode build, we strip code irrelevant to the target
architecture in frameworks used by the application. In the case of
non-fat executables, no stripping occurs, so the frameworks can be used
as-is. No merge & replace step is necessary.

* fixup! Do not attempt to merge non-fat frameworks in Xcode build
2017-02-17 13:38:47 -08:00
Chris Bracken 3449545e80 Quote all paths in Xcode build backend (#8039)
Required to handle Flutter SDK (and other) paths that include spaces.

Also includes general cleanup:
* Declare explicitly that we use /bin/bash, since we rely on its
  features.
* Add -- where possible, to avoid interpreting files starting in - as
  options.
* Suppress output of pushd/popd.
* Avoid stringifying arrays.
2017-02-09 15:08:33 -08:00
Chris Bracken 0294cf863e Improve file/dir existence check for Xcode backend (#8037) 2017-02-09 13:45:39 -08:00
Chris Bracken b16a515d9c Handle non-fat frameworks in iOS app framework thinning (#7950)
Support for thinning app frameworks to the target architecture was added
in 708909fc6b. This commit adds support
and error-checking for non-fat frameworks that are not of the target
architecture. In such cases, we now fail the build, and emit an error
message and the contents of lipo -info for the affected framework.
2017-02-07 15:57:16 -08:00
Chris Bracken 1926d11188 Thin iOS app frameworks to the target architecture (#7913)
* Support thinning iOS frameworks to supported architectures

When building against frameworks that are distributed as
multi-architecture fat binaries, we want to strip the frameworks we
distribute down to only the architectures specified in $ARCHS.

This patch adds:
* The ability to specify commands to xcode_backend.sh (if none is
  specified, run BuildApp for backward compatibility).
* A 'thin' command that invokes lipo to thin down the distributed as
  described above.

* Add framework thinning step to iOS build

Invokes xcode_backend.sh thin on the build application.

* Limit architectures to arm64 in Xcode template

Flutter does not yet support armv7 iOS devices. Limit the $ARCHS build
variable to arm64 until then.
2017-02-07 12:04:36 -08:00
Todd Volkert 417c2f25fc Migrate flutter_tools to use package:platform (#7642) 2017-01-25 16:06:41 -08:00
Todd Volkert 03d163ce88 Update tools to use package:process (#7590) 2017-01-23 09:46:38 -08:00
Todd Volkert 016b5ab0cc Force all dart:io usage to go through 'base/io.dart' (#7390)
This ensures that accidental usages of dart:io's
file API don't creep in over time.
2017-01-09 08:37:00 -08:00
Todd Volkert 8bb270342e Update flutter_tools to use package:file throughout (#7385)
This removes direct file access from within flutter_tools
in favor of using `package:file` via a `FileSystem` that's
accessed via the `ApplicationContext`.

This lays the groundwork for us to be able to easily swap
out the underlying file system when running Flutter tools,
which will be used to provide a record/replay file system,
analogous to what we have for process invocations.
2017-01-06 16:51:44 -08:00
Todd Volkert df675f45ee Fix Fuchsia build (#7105) 2016-11-30 10:06:48 -08:00
John McCutchan 618030e044 More AppContext cleanups (#7073) 2016-11-29 11:22:48 -08:00
P.Y. Laligand f1938c60af Fix building Fuchsia apps. (#7071)
Started failing at 0b737ac57b.
2016-11-29 09:57:58 -08:00
P.Y. Laligand 069d31d095 Add manifest argument for building apps on Fuchsia. (#7004) 2016-11-23 15:52:35 -08:00
Dan Rubel e384c0d982 Refactor flutter command exit code - part 2 (#6817)
* convert pubGet to throw ToolExit on non-zero exit code
* convert commandValidator to throw ToolExit for non-zero exit code
* convert flutter commands to throw ToolExit for non-zero exit code
* use convenience method throwToolExit
* only show "if this problem persists" for unusual exceptions
2016-11-13 22:09:03 -05:00
P.Y. Laligand 9b7764d48f Added an option to allow default fonts to not be packed in an flx file. (#6710)
Fonts should never be bundled on Fuchsia.
2016-11-04 14:06:44 -07:00
Jason Simmons 984b62390c Fix builds of FLX bundles using AOT compilation (#6684) 2016-11-03 10:48:57 -07:00
Petr Hosek 93a2d07c63 Use prebuilt Dart snapshot when assembling bundle (#6660)
This is causing issues when integratting Flutter into GN as the
generated depfile refers to snapshot as the target instead of the
bundle. We instead use a separate GN action to generate the
snapshot use the Flutter compiler to only assemble the bundle.
2016-11-02 14:37:42 -07:00
Adam Barth c074265298 Add support for building on Fuchsia (#6415)
This patch makes it possible to build Flutter apps that use the framework on
Fuchsia.
2016-10-20 01:32:45 -07:00
P.Y. Laligand 522f607b05 Allow an output file header to be specified when building for Fuchsia. (#6181) 2016-10-03 17:36:15 -07:00
P.Y. Laligand 928d49dc27 Dedicated executable to build flx files for Fuchsia. (#6159) 2016-09-30 18:12:27 -07:00
Chris Bracken b5f763b45e Support a configurable build directory (#5601)
This change adds a top-level getBuildDirectory func and funcs for
android, aot, asset, ios build products.

Developers may now add a "build-dir" mapping to their
~/.flutter_settings (JSON format) config file. Output directory is
relative to the main flutter application directory.

This change also changes the default build directory for iOS builds to a
subdirectory of the configured build directory, 'build/ios' by default.
2016-08-25 16:38:19 -07:00
Chris Bracken 81d672688d Emit iOS build products under $SYMROOT (#5560)
Previously, `flutter build` products were emitted to build/ and only
xcode build products were emitted to $SYMROOT.
2016-08-23 14:08:59 -07:00
Todd Volkert d2ee6f7838 Rename app.so -> app.dylib (#4522) 2016-06-10 16:57:21 -07:00
Adam Barth 8f03ebe56b Teach FlutterPlugin.groovy about AOT builds (#4389)
The `flutter.buildMode` property now controls whether to build in debug,
profiling, or release.
2016-06-06 12:56:04 -07:00
Adam Barth 29af5c0317 Set a sensible default framework path (#4370)
This patch sets a default path for Flutter.framework that's sensible based on
the FLUTTER_MODE.
2016-06-03 17:01:18 -07:00
Chinmay Garde 8756a094a9 Add a FLUTTER_MODE variable to the generated Xcconfig and fix snapshot generation on all targets. (#4362)
Get rid of the DART_EXPERIMENTAL_INTERPRETER_FLAG.
2016-06-03 13:55:57 -07:00
Adam Barth 8171aa86f0 Document how to build hello_services for iOS (#4354)
This patch adds some sensible defaults to xcode_backend.sh and documents how to
build hello_services for iOS using Xcode.
2016-06-03 12:20:54 -07:00
Adam Barth 612a097d1f Add --target support to flutter build ios (#4318)
Fixes #4298
2016-06-02 08:57:13 -07:00
Adam Barth aee32698ac Add backend tools for extensible iOS apps (#4250)
Instead of embedding Flutter.framework and BuildFlutterApp in the Xcode
project, we store these in flutter.git, where we can reference them.
2016-05-27 15:30:42 -07:00
Hixie c7339de6bc Enable always_declare_return_types lint
And fix a zillion omissions this uncovered.
2016-03-09 17:57:39 -08:00
Adam Barth c477b1250b Remove build_sky_apk.dart
This script has been subsumed by `flutter apk`.
2015-11-28 19:16:23 -08:00
Adam Barth da0a12c611 Rename sky_tools to flutter_tools 2015-11-10 13:20:35 -08:00
Ian Hickson 3419068cb3 Port test logic to Dart. 2015-11-09 09:00:49 -08:00
Adam Barth 113500206a Remove the --http option 2015-11-06 20:17:24 -08:00
Devon Carew bb1da703a6 return exit codes on failures 2015-10-17 11:50:23 -07:00
Adam Barth 9148e1779f Expose main via executable.dart
Expose the main entry point for the tools via the library lets us run the tools
from the Flutter package, which simplifies the setup for end developers because
they don't need to declare a dependency on sky_tools directly.
2015-10-10 00:15:21 -07:00
Adam Barth 287817f224 Move Command subclasses into commands directory
I'm trying to get a feel for the code by writing some simple cleanup patches.
2015-10-09 23:22:20 -07:00
Ian Fischer d07ca92995 Basic sky_tools list command, Android implementation, and test. 2015-10-01 08:43:57 -07:00
Ian Fischer b8085cd033 Add sky_tools trace command, Android implementation, and basic test. 2015-09-30 14:02:29 -07:00
Ian Fischer 00bed774ce Add listen command and basic test, and don’t do unnecessary repeated work when listening or poking the android server. 2015-09-29 17:10:47 -07:00
Ian Fischer 5e11889160 Add logs command and android implementation. 2015-09-29 11:51:33 -07:00
Ian Fischer 8cac55a4e2 Add sky_tools start command and associated android support. 2015-09-29 09:54:10 -07:00
Ian Fischer fa59233746 Add stop command and supporting Android support. 2015-09-25 16:16:19 -07:00
James Robinson 9996d4255e Configure ArtifactStore for all commands and make 'package-root' universal
This makes the 'package-root' option universal for sky_tools and configures the
ArtifactStore with it statically at startup. The actual sky_engine revision
is computed on demand.
2015-09-25 15:56:20 -07:00
Ian Fischer cae053c353 Refactor all the commands to be Commands from the Args package. Also use CommandRunner for the top-level command. 2015-09-24 15:51:23 -07:00
James Robinson f735604aca Add cache command to sky_tools with subcommands for populating/clearing
This adds the following commands to sky_tools:
  sky_tools cache clear: Nukes all local artifacts in the cache
  sky_tools cache populate: Populates the cache with all known artifacts

This is useful both to fix busted caches and to make sure that the cache is
fully populated so that subsequent operations can proceed without needing
network access.
2015-09-22 20:35:31 -07:00
Ian Fischer 0cc758d24e Set up plumbing for getting relevant paths to the right places without too much global state.
`dart bin/sky_tools.dart --debug --sky-src-path=/path/to/sky/src/ install` now works.
2015-09-22 11:17:39 -07:00
James Robinson 542da8ccd5 Adds a run_mojo command that downloads sky_viewer.mojo and runs an flx in it
This initial version assumes the developer has mojo_shell and all other services
sitting on disk somewhere and that they're on linux and only want to run on
linux. This can be generalized down the line to support more use cases. This
downloads the sky_viewer.mojo corresponding to the packages/sky_engine/REVISION
in the developer's directory, so they can specify whatever revision they want.
sky_tools run_mojo downloads sky_viewer.mojo into its cache directory if it is
not present and constructs a command line to pass to mojo_shell that maps the
shebang stamped into the flx to the downloaded sky_viewer.mojo.

Since sky_viewer.mojo lives in the cloud and mojo_shell can load from the cloud
this could also map to an https URL. This should likely be an option.
2015-09-21 22:06:05 -07:00
Adam Barth cf41a63396 Add a build command to sky_tools
This command will produce an flx package. Currently, this command doesn't work
because we don't have the Flutter compiler downloaded from Google storage yet.
A future patch will make that happen.
2015-09-17 13:37:53 -07:00
Ian Fischer d8d87f1833 Add very-verbose flag and automatically log some more process-related things in verbose and very-verbose modes. 2015-09-16 10:57:15 -07:00
Ian Fischer b72d67a8fe Private setup methods for AndroidDevice. 2015-09-15 17:20:49 -07:00
Ian Fischer 5678c12433 Add verbose flag to sky_tools and basic logging capabilities. 2015-09-15 16:08:59 -07:00
Ian Fischer 81746e980c Initial sketch of install command and what devices look like. 2015-09-11 12:44:47 -07:00
Adam Barth f77983baa8 Adds experimental pub run sky_tools:sky_test command
This command uses package:test to run Dart tests with sky_shell.  For this to
work, we need https://github.com/dart-lang/test/tree/hacky-loader-hook to land.
We're also not smart enough to find sky_shell ourselves yet. Instead, we take
the path as input using an environment variable. Eventually, we'll be able to
get the sky_shell executable from package:sky_engine, but we don't yet ship
that executable.
2015-08-19 23:57:41 -07:00
Adam Barth f7fa689da4 Add support for HEAD requests 2015-08-13 11:20:19 -07:00
Adam Barth d0cec84e52 Be more agressive about not caching with sky_server 2015-08-12 09:07:21 -07:00
Devon Carew a03deafac8 update the sky_tools template and readme 2015-08-09 23:50:16 -07:00
Devon Carew fd21db9436 add a changelog 2015-08-08 04:05:32 -07:00
Devon Carew cec6288972 merge to master 2015-08-07 14:22:19 -07:00
Devon Carew 2efd13159c add a sky_tools init command to create a new project 2015-08-07 14:20:14 -07:00
Collin Jackson 471d7b4802 Refactor per abarth feedback 2015-08-07 12:52:54 -07:00
Adam Barth a9e4336a7b Update shelf_static and enable directory listing 2015-07-31 20:27:50 -07:00
Adam Barth a982f0213b Add the option to log to sky_server 2015-07-29 16:27:41 -07:00
Adam Barth b45a6442c5 Turn off gzip
This feature appears to be causing problems with OkHTTP's cache.
2015-07-27 10:03:22 -07:00
Adam Barth bb2f54bb91 Use shelf instead of http_server
This patch switches sky_server.dart to use shelf rather than http_server.
2015-07-23 19:51:03 -07:00
Adam Barth 0365fefaca Let sky_server follow links outside of the current directory 2015-07-23 00:13:51 -07:00
Adam Barth 041275e80c Add a basic HTTP server for Sky 2015-07-22 23:42:22 -07:00
Adam Barth 646ff43f9b Iterate on build_sky_apk.dart 2015-07-21 10:10:36 -07:00
Adam Barth 688fb26ae3 Add a first draft of build_sky_apk.dart 2015-07-20 17:22:22 -07:00