Commit Graph

418 Commits

Author SHA1 Message Date
Ross Bayer
4274233420 [build-script] Argument Builder DSL Conversion: Episode 1 (#13117)
* Imported the new argparse overlay module and added the setup code for the DSL.

* Converted the CMake generator flags to use the new builder DSL.

* Converted the assertions argument group to use the new builder DSL.

* Converted the LLVM-specific settings argument group to use the new builder DSL.

* Converted the Android build settings argument group to use the new builder DSL.

* Removed unused action aliases from the builder DSL setup section to appease the flake8 gods.

* Fixed small typo in help message for --eclipse option.
2017-11-30 17:46:57 -08:00
Ross Bayer
e05c2ccab0 Updated the action class hierarchy to have more default metavars. (#13167) 2017-11-30 12:44:41 -08:00
Ross Bayer
de7a517f0d Reformat driver arguments (#12954)
* Moved top-level arguments into a single clump, rather than interlacing them with other argument groups.

* Re-formatted string literals to use single quotes rather than double in order to remain consistent in style throughout the build_swift module.

* Moved all argument help messages to the last kwarg position to remain consistent and more readable.

* Re-ordered arguments when adding a new option to always have the option strings first and then the action (if applicable).

* Re-arranged kwarg order when creating new parser options to remain consistent.

* Fixed the --enable-tsan-runtime option, which was modified recently.
2017-11-28 12:56:50 -08:00
Ross Bayer
85abdcd62d Argparse "Overlay" Module (#12873)
* Implemented a wrapper module around the standard argparse package, exposing the same interface with some extras on top, including a new builder type with expressive DSL for constructing complex argument parsers.

* Fixed imports in build_swift/argparse/__init__.py to make flake8 happy.

* More re-formmating to meet the exacting standards of the python_lint script.

* Added doc-strings to all the modules in the build_swift argparse overlay.

* Implemented a new BoolType for the argparse module which handles boolean-like values and replaces the hard-coded boolean values in the _ToggleAction class.

* Fixed the mess of imports in the tests sub-package to favor relative imports, so now the unit-tests will actually run as expected. The README has also been updated with a better command for executing the unit-test suite.

* Updated the add_positional method on the ArgumentParser builder class to only take a single action or default to the store action.

* Cleaned up the set_defaults method.

* Added validation test to run the build_swift unit-tests.

* Updated validation-test for the build_swift unit-test suite to use %utils.

* Fixed hard-coded default values in the expected_options module used for generating argument parser tests.

* Updated the comment in the Python validation test to run the build_swift unit-tests.
2017-11-27 21:49:44 -08:00
Ross Bayer
a6796e06a6 Changed the --enable-tsan-runtime option to use the enable action like the surrounding tsan options. (#13088) 2017-11-27 15:42:44 -08:00
Ross Bayer
615355c556 [build-script] Move non-trivial argument default logic (#12408)
* Moved argument-defaults logic that should be determined outside the actual parser back into the build-script. This logic will be relocated again at a later date to a more suitable module with testing.

* Moved test-paths argument default logic into build-script until it can find a better home in the future.

* Removed old default value for stdlib_deployment_targets from the expected options.
2017-10-13 12:25:38 -07:00
Ross Bayer
d52e3b3e26 Revamped argument parsing unit-tests (#12157)
* Updated the argument-parsing test suite to use a more declarative set of Option classes and included a new test for exhaustiveness which should assure that we are always testing every possible option available in the parser.

* Added a new test to check that all the expected options have default values.

* Converted default values to use the defaults module where appropriate to make the test suite more portable since the original hard-coded values were gathered from my development machine.
2017-10-12 14:17:38 -07:00
Ross Bayer
d1620f509e Updated argument parsing code to use a new OnOffAction with Enable and Disable variants, properly handling optional boolean arguments and inverting the state for disabled options. Previously when an option such as '--skip-build-benchmarks' was passed with a boolean the destination would take on the value without inverting the state, which was causing some build configuration errors. (#12005) 2017-09-29 12:06:51 -07:00
Ross Bayer
3cd8c996cd Added a new unit-test case for the flag --build-external-benchmarks. (#12130) 2017-09-26 16:21:15 -07:00
Ross Bayer
a14524e4e6 Revert erroneous renaming of test_*_host destinations to test_*_device. (#12127) 2017-09-26 16:20:55 -07:00
Michael Gottesman
c2d8cc7ff0 [benchmark] Add support for building out of tree via build-script against the just built swift.
I recently broke the out of tree build by mistake [its fixed now ; )]. This
inspired me to make it easy to test this behavior by adding support to
build-script/cmake/etc for running an external benchmark build via
AddExternalProjects.

Now I can just call build-script with --build-external-benchmarks and thats it!
It should just work! It already helped me to avoid breaking the external build
twice!

I hope that eventually we get this on a bot to make sure it keeps working [or
even added to the smoke tests ; )].

*NOTE* This is disabled by default so it will not affect normal builds.

*NOTE* This just builds the external benchmarks. There is an rpath issue that
prevents you from running them (the benchmarks have the rpath set as if they are
next to the stdlib, but they are not. This can be fixed in a few different ways,
but I do not have time to finish implementing it = (. But this commit is a good
first step and at least detects build errors.
2017-09-25 12:31:39 -07:00
Pavel Yaskevich
c3ad876c61 [build-script] Add --test-paths option to run subset of tests (#12023)
Sometimes it's useful to be able to run tests located in specific
directories and/or files, let's enable this in `utils/build-script`
using `--test-paths` option which accepts a list of viable test locations.

Resolves: rdar://problem/32004487
2017-09-21 17:35:42 -07:00
Ross Bayer
ef7c951949 Affirmative names for argument parsing namespace destinations. (#11952)
* Added new OptionalTrueAction and OptionalFalseAction classes to the arguments module.

* Fixed missing return statement in help-test generator.

* Renamed all the `skip_build_*` names to the more simple and affirmative `build_*`.

* Renamed all the `skip_test_*` names to the more simple and affirmative `test_*`.

* Added documentation to the OptionalTrueAction and OptionalFalseAction classes.
2017-09-15 16:21:38 -07:00
Ross Bayer
695ded24d4 Move legacy argparser (#11872)
* Implemented a (mostly) comprehensive test suite for the argument parser (ab)using metaclasses to dynamically generate unit-tests for each valid argument and preset.

* Fixed failing defaults test for build_ninja.

* Added new HelpOption and IgnoreOption classes for generating tests.

* Converted default value test into individual generated tests which should give better output in case the default tests fail.
2017-09-15 01:05:06 -07:00
Ross Bayer
9847f6a589 New defaults module for build_swift argument parser (#11911)
* Added a new defaults module for configurable constant values used by the argument parser to configure the default build behavior.

* Re-ordered imports in order to satisfy python linter.
2017-09-14 12:01:10 -07:00
Ross Bayer
6d1604496c Removed the offending duplicate ninja_build code that was masking the real logic for decided when to use the system ninja or to build it from source. (#11919) 2017-09-14 10:45:11 -07:00
Ross Bayer
d4d35acbd0 Move build-script apply default arguments into separate module (#11882)
* Moved the default argument application logic to the new driver_arguments module in preparation for the larger argument parsing refactor.

* Re-ordered imports in order to satisfy python linter.
2017-09-13 17:09:49 -07:00
Ross Bayer
a66a27db9f Moved the argument parsing logic from the default main function in build-script into a separate module. (#11880) 2017-09-12 16:38:11 -07:00