aboutsummaryrefslogtreecommitdiffstats
path: root/python/builder.go
Commit message (Collapse)AuthorAgeFilesLines
* Fix package path of android/soong/android pctxColin Cross2019-04-101-1/+1
| | | | | | | | | | | | android/soong/common was renamed to android/soong/android long ago, but the pctx package path was still "android/soong/common". This required all users of rules defined in android/soong/android to import "android/soong/android" and then pctx.Import("android/soong/common"). Bug: 130298888 Test: m checkbuild Change-Id: I20d096522760538f7cfc2bec3d4bfeba99b275d4
* Support building a par file that does not automatically runDan Willemsen2019-02-171-12/+32
| | | | | | | | | | Mainly so that we can build a `python` prebuilt that acts like the normal python install, though you could also build different ones with more packages pre-installed. Bug: 117811537 Test: move built py2-cmd into prebuilts/build-tools/path/linux-x86/python and build Change-Id: I21215f6fd3754d89f8c65e1dfeb3f2deea23239f
* Simplify python launcher, use __main__.pyDan Willemsen2019-02-151-15/+10
| | | | | | | Uses more python rather than C++, and skips less of Py_Main. Test: build/soong/python/tests/runtests.sh Change-Id: I03997d88e2e16047c96bb4e00e530229c42b3325
* Fix mac build w/echo -nDan Willemsen2018-12-041-2/+4
| | | | | | | | | | | | | Soong doesn't wrap everything in bash, but relies on the ninja default of /bin/sh. We should probably improve that in the future, but for now, just fix the build. On Mac, /bin/sh and /bin/bash are both bash, but /bin/sh implies `set -o posix`, and ignores the `-n` flag. Test: treehugger Test: build on a mac Change-Id: Icf41b1c5a1ce9eb0a56e39e68c433fc80b53620f
* python par: trim and convert the entry point at build timeDan Willemsen2018-12-031-2/+3
| | | | | | | | | Instead of doing these string operations in the C++ code at every startup of an embedded par, trim and convert the entry point file to a python module path at build time. Test: m Change-Id: I04a6459a80c84a704b8a25a144ab1e19622d6cc3
* Fix par file zip offsetsDan Willemsen2018-12-031-16/+12
| | | | | | | | | | | | | | | | The zip file format does support scripts/programs prefixed to the archive, though many of the offsets are supposed to start from the beginning of the file. Some tools (python and zipinfo) are able to read zip files with arbitrary prefixes, but others (libziparchive and zipdetails) fail. So pass the file to prefix onto the zip file into merge_zips so that we can set the offsets from the real start of the file. Test: m sepolicy_tests (runs the embedded python interpreter) Test: zipinfo out/host/linux-x86/bin/sepolicy_tests Test: zipdetails out/host/linux-x86/bin/sepolicy_tests Change-Id: If73d4c2465581f7de5aa47959284ecf2059df091
* Fix invalid memory error for python binary buildNan Zhang2018-09-261-3/+3
| | | | | | | | | | | | | | The root cause is we didn't check if the optionalpath is valid or not, the registerbuildation function directly invoke the path var and cause the invalid memory error. We just return if the launcher doesn't exist. The ctx.VisitDirectDepsWithTag() also handles allowmissingdependency so we are ok if launcher doesn't exist. Test: N/A Bug: b/116698229, b/67510844 Change-Id: I40941079a64d7797ab879fc5edaa29e835b493a0
* Fix embedded_launcher can't find filesNan Zhang2018-06-041-5/+2
| | | | | | | | | | | The problem came from Python libraries doesn't know the information that we enabled embedded_launcher (only Python binary knows about that). And we can't simply remove runfiles dir for Python libraries since host Python mode need this. Bug: b/80441699 Test: m perf_profo_flames Change-Id: I73ffc4d7504f95a708ae7cca47bc6c15a673aa31
* Add Python protobuf support.Nan Zhang2018-03-221-0/+7
| | | | | | | | Python protobuf std libs will be wrapped in final binary/test par file. Bug: b/70568913 Test: manually create real examples. Change-Id: I7376ec9175f3e03d1adbd20858a7f74e826387ad
* Remove timestamp based filelist file for tracking Python dependenciesNan Zhang2018-03-091-105/+42
| | | | | | | | | | | Each Python module will generate a zip file containing source & data files. The Python binary will collect all its dependencies and use merge_zips to merge each zip file to create a final .par file. Test: m -j checkbuild && real examples: Bug: b/70568913 Change-Id: I9ff232d461d33e1c06026e7dcb5b124bf02c3ce5
* Move ModuleContext.ModuleBuild to ModuleContext.BuildColin Cross2017-10-241-3/+3
| | | | | | | | | | | | Now that android.ModuleContext does not include blueprint.ModuleContext we can rename android.ModuleContext.ModuleBuild to android.ModuleContext.Build without colliding with blueprint.ModuleContext.Build. Leave ModuleBuild as a wrapper around Build for now to avoid having to update all the users outside build/soong simultaneously. Test: m checkbuild Change-Id: I18eb8cc04faf002049a11d9aac97e9732ff5d638
* <Hermetic> Replace Soong Python bootstrap process with embeddedNan Zhang2017-09-051-34/+76
| | | | | | | | | | | | | | | | | | | | launcher. For Python2, we bundle embedded launcher as bootstrapper within every .par file. This feature is only enabled for linux_x86_64 for now. We provide a user flag: hermetic_enabled within bp file. By default, Pyhon2 still use classic bootstrapping way to construct .par file and relys on host interpreter. Once embedded_launcher is enabled, launcher will be used to bootstrap .par file and execute user program. For Python3, the launcher will be ready soon, and for now it still relys on classic bootstrapping. Test: Real example is used to test. Bug: b/63018041 Change-Id: I28deba413d8ad3af407595e46f77d663e79a3705
* Fix the issue "\n" didn't get interpreted properly.Nan Zhang2017-05-161-1/+1
| | | | | | | | | | Added params to WriteFile rule that allow users to turn on the specific 'echo' options, such as "enable the interpretation of backslash escapes". Bug: b/38261000 Test: tested with real data files. Change-Id: I5145056b5c2522a3a72b9436055ec95d2fbd94c0
* Prettify soong ninja build descriptionsColin Cross2017-05-101-7/+8
| | | | | | | | | | | | | | | | | Descriptions currently look like: [ 0% 4/29328] cc out-soong/.intermediates/external/clang/lib/Sema/libclangSema/android_arm_armv7-a-neon_denver_static_core/obj/external/clang/lib/Sema/SemaCodeComplete.o This is not very helpful - most of the characters are used to show the output path, which contains useful information like target architecture, but also contains most of the path to the source files twice, and less useful information like the exact variant name used by soong. Make the descriptions look like: [ 0% 3/29329] //external/clang/lib/Sema:libclangSema clang++ SemaTemplateInstantiate.cpp This is //path/to/module:modulename tool relative/path/to/source/file Test: builds, looks pretty Change-Id: I3087aa7d4eb1860ef6239d77407b8b35445616d7
* Supported python build in host side.Nan Zhang2017-05-051-0/+146
The base module handles all the common functionalites, such as version compatibilty check, version variations split, source file format check, source/data file duplicate check. The library/binary module focuses on how to generate binary build actions, such as setting up stub script, zipping, filling in __init__.py in runfiles dir tree. Bug: b/31676493 Test: go test under python package Change-Id: I06608369f350f7195873d459e1c8d1bdb811e77e