aboutsummaryrefslogtreecommitdiffstats
path: root/cmd
Commit message (Collapse)AuthorAgeFilesLines
* Regenerate R.java files from LOCAL_STATIC_ANDROID_LIBRARIESColin Cross2018-05-032-0/+113
| | | | | | | | | | | | | | | | | | | | | | | If a static android library lib1 has static_libs: ["lib2"] then the R.class files for packages in lib2 will be merged into the jar for lib1. If an app has lib1 in its static_libs it will get the R.class files from lib2 through lib1, instead of regenerating the R.java files with numbering that matches the resource table of the app. Pass transtive static android library dependencies on the aapt2 command line so that aapt2 will always regenerate the R.java constants for those packages. Also extract the packages that have R.java files after each aapt2 invocation. This is not necessary for Soong, but is passed to make to let it force regenerating the packages using --extra-packages. Bug: 78300023 Test: m checkbuild Change-Id: I0f3444af44d2a9f370d1f156c908972f8cc3a1ee Merged-In: I0f3444af44d2a9f370d1f156c908972f8cc3a1ee (cherry picked from commit 66f78820e12138dcc9acf1b3c6bd6d26f3340f93)
* Add pom2bpColin Cross2018-05-032-0/+517
| | | | | | | | | | | | Convert pom2mk to pom2bp that writes out Android.bp files instead of Android.mk files. pom2mk stays for now until the last users of it are cleaned up. Bug: 78300023 Test: cd prebuilts/sdk/current/support && pom2bp -regen Android.mk Change-Id: I584d63c4228bad32f9e1914b06bde807078d6a55 Merged-In: I584d63c4228bad32f9e1914b06bde807078d6a55 (cherry picked from commit 70dd38f09e830d98f6b9a8e161991b211e3a760e)
* Fix format string issuesColin Cross2018-05-033-7/+7
| | | | | | | | | | Fix issues caught by go vet. Bug: 73724997 Test: m checkbuild Change-Id: Ib8d740457c15432dabe1575a6707726ddaf93084 Merged-In: Ib8d740457c15432dabe1575a6707726ddaf93084 (cherry picked from commit f46e37f5f79bd7111aed84f6cf172f20431ec010)
* Add pom2mk -excludeColin Cross2018-04-261-2/+21
| | | | | | | | | | Add an option to pom2mk to exclude modules by name. Bug: 78300023 Test: cd prebuilts/sdk/current/support && pom2mk -regen Android.mk -exclude androidx.car_car Change-Id: I083907ef364384aace524ced81820567f5075d76 Merged-In: I083907ef364384aace524ced81820567f5075d76 (manually cherry-picked from c7453caf2c0a94192d0f722f26e9552da953ef8f)
* Add pom2mk -regenColin Cross2018-04-261-5/+76
| | | | | | | | | | | | pom2mk -regen Android.mk will read the previous arguments out of Android.mk, rerun pom2mk with those arguments, and write the result to Android.mk. Bug: 78300023 Test: cd prebuilts/sdk/current/support && pom2mk -regen Android.mk Change-Id: Ie8e0f97ae5b87c8078cf8e753489326d80da1896 Merged-In: Ie8e0f97ae5b87c8078cf8e753489326d80da1896 (manually cherry-picked from 6b359adc1e2bf1726567000d97e412fea6e88b95)
* pom2mk to include extra-deps as top-level deps tooJeff Gaston2018-04-231-0/+4
| | | | | | | | | | | | | | | | Specifically, the use case is android-support-car requires some stubs that don't have a Maven pom. So those stubs can't easily be listed as a dependency in the pom. However, we do want the dependency to exist when importing to Make and detected by extract_deps.py Bug: 76692459 Test: m -j blueprint_tools \ && update_prebuilts.py -s <build_id> \ && git diff HEAD^ -- fix_dependencies.mk \ && m -j checkbuild Change-Id: If546ecf7416580a01bde7b906976ada4b1145253 Merged-In: If546ecf7416580a01bde7b906976ada4b1145253 (manually cherry-picked from commit 358f25e97d5ffaa0d90dd57002c18ecc6bf7094d)
* Merge "Have pom2mk list all duplicates modules" into pi-devTreeHugger Robot2018-04-231-0/+5
|\
| * Have pom2mk list all duplicates modulesJeff Gaston2018-04-091-0/+5
| | | | | | | | | | | | | | | | | | | | For easier debugging if there are multiple duplicates Bug: 76692459 Test: ./update_current.py -x <build-id> Change-Id: I3079cb4ed1cfd365d792a7b41c9cdb4e7a1e148f Merged-In: I3079cb4ed1cfd365d792a7b41c9cdb4e7a1e148f
* | Merge "Have pom2mk include runtime deps too" into pi-devTreeHugger Robot2018-04-231-5/+14
|\|
| * Have pom2mk include runtime deps tooJeff Gaston2018-04-091-5/+14
| | | | | | | | | | | | | | | | | | | | It still excludes test deps though Bug: 76692459 Test: ./update_current.py -x <build-id> Change-Id: I55a786e9feab31f99b95b7cebe84869757e46270 Merged-In: I55a786e9feab31f99b95b7cebe84869757e46270
* | Use Config/DeviceConfig functions to access ProductVariablesDan Willemsen2018-04-171-1/+1
|/ | | | | | | | | | | | An upcoming change will stop exporting ProductVariables from Config, so switch to using existing accessor functions, and add more when they're missing. Bug: 76168832 Test: out/soong/build.ninja is identical Change-Id: Ie0135bdbd2df3258ef3ddb53e5f8fc00aa9b97f7 Merged-In: Ie0135bdbd2df3258ef3ddb53e5f8fc00aa9b97f7 (cherry picked from commit 3fb1faeeb98143e132ca4d6f1cac42d6f060888b)
* Always include JAR dependencies (not just with --static-deps) in MakefileAlan Viverette2018-04-061-3/+4
| | | | | | | Bug: 76692459 Test: ./update_current.py -x <build-id> Change-Id: Ie0f77e52089adbe153d668fe39902545f469f2d2 Merged-In: Ie0f77e52089adbe153d668fe39902545f469f2d2
* Replace extract-srcjars.sh with zipsync toolColin Cross2018-03-202-0/+149
| | | | | | | | | | | | | | extract_srcjars.sh uses zipinfo and unzip, which fail with an error on an empty zip file. Instead of trying to hack around this (which is hard to make guarantees for since they are non-hermetic host tools), replace them with a go tool to unzip a set of zip files into a directory. Bug: 73885582 Test: m checkbuild Change-Id: I151fed347ed5196726e36866ffc27bc831799afb Merged-In: I151fed347ed5196726e36866ffc27bc831799afb (cherry picked from commit 436b76564d83586c68025985bc5d9fc7774109bf)
* add a library to report build numbers without causing rebuildsColin Cross2018-03-022-0/+68
| | | | | | | | | | | | | Allow native modules to specify use_version_lib, which will make an android::build::GetBuildNumber() function available. For host builds, the function will return the build number at the time that the module was linked. For device modules it will return the value of the ro.build.version.incremental property. Bug: 71719137 Test: build_version_test Test: m build_version_test && touch build/make/core/Makefile build/soong/cc/libbuildversion/tests/build_version_test.cpp && m build_version_test shows different build numbers for binary and library tests. Change-Id: I6f7d40b7574bb8206866c4e39bad9c710c796e32
* Rewrite symbol_inject to be testableColin Cross2018-03-0211-140/+3069
| | | | | | | | | | | | | Parse the machine-specific symbol tables into a custom symbol table object and use a single function to find the offset and size of the symbol in the custom table. Make the functions to convert a machine-specific symbol table into the custom table also take mocks, and provide functions to dump mocks from real files. Add tests that take the mocks and verify they produce the right offset and size. Test: cmd/symbol_inject/*_test.go Change-Id: I25654032b5017dd13a9a1fe29f8b8826ce5bc82b
* Fix finding next symbol when multiple symbols have the same addressColin Cross2018-02-282-54/+50
| | | | | | | | | | | | | | | Some exe files have a .data symbol at the same address as the soong_build_number symbol. If the .data symbol is after soong_build_number in the symbol list, symbol_inject would think the end address was the same as the start address, and use uint32(-1) as the size. Use sort.Search to find the first symbol whose section number is the same as the target symbol, but whose address is higher than the target symbol. Test: manual Change-Id: I51d6e53c6b906222ba68c5cf93be944843e23550
* Sort macho symbol table entriesColin Cross2018-02-231-3/+12
| | | | | | | | macho symbol table entries are not always in order, which breaks finding the next symbol to find the size of the target symbol. Test: build_version_test Change-Id: I41d1c3c3ff9929694e9ec2b034553d6b7ddef937
* Fix symbol_inject on win32 exesColin Cross2018-02-232-1/+6
| | | | | | | | Win32 exes seem to prefix each symbol with an underscore like macho. Test: build_version_test Change-Id: I9de0a0f5f25f93ad17d34b7c1b993511c77a57eb
* Use __SBOX_OUT_DIR__ in sbox output file listColin Cross2018-02-211-6/+3
| | | | | | | | | | | | | | | The path to the output directory may be arbitrarily long, use __SBOX_OUT_DIR__ in the list of output files passed to sbox to avoid expanding it multiple times in the command line. Fixes: ninja: fatal: posix_spawn: Argument list too long 09:40:14 ninja failed with: exit status 1 when building libchrome with a long OUT or OUT_DIR_COMMON_BASE. Bug: 73726635 Test: m checkbuild Change-Id: I59024b2164287c8e531711afd9273b692ce9c28a
* Fix injecting data into a .o fileColin Cross2018-02-201-1/+1
| | | | | | | Use section.Offset instead of Addr. Test: symbol_inject -i test.o -o test2.o -s symbol -v value Change-Id: I9c54a5a245e7674b8370fc27ba7d0b9995f2ed08
* Use "jar" as default type, "compile" as default scopeAlan Viverette2018-02-131-12/+22
| | | | | | | | Only include dependencies for scope "compile." Bug: 73263586 Test: ./update_current.py -s -t <build-id> Change-Id: I2ac6055cb4c1ad1f8d7924869f54f50e5e662742
* Add a tool to inject data into an elf, macho, or PE symbolColin Cross2018-02-065-0/+407
| | | | | Test: symbol_inject -i a.out -o a.out2 -s symbol -v value Change-Id: I16cd8facbae754f679bef07ab0ba23638286e1d7
* Emit static dependencies into pom2mk-generated MakefileAlan Viverette2018-01-051-5/+68
| | | | | | Bug: 70516592 Test: ./update_current.py -s -t 4495436 Change-Id: Ic7dd433de78f9666c7388ed8ec1deebee7269368
* Add -p, -e options in merge_zips for supporting par format.Nan Zhang2017-12-201-4/+97
| | | | | | | | | | Move __init__.py files population to merge_zips, and add options: -p, and -e. Since par needs entry_point.txt to search the program entry point, so add -e option to support it. Test: ./merge_zips -p -e entry_point.txt out in1.zip in2.zip Bug: 70568913 Change-Id: Ida10faf125e1b94dffc98b30240db3b90fd75b25
* Allow Soong to generate its own build documentationColin Cross2017-12-123-0/+146
| | | | | | | | | | Add a rule in soong that re-executes soong_build in order to generate build documentation. This allows Soong to customize the documentation. Bug: 70516282 Test: m soong_docs Change-Id: If143cfacd6ac20274cd7bb8d8fab0c07025a5553
* Increase per-process file limits for multiproduct_katiDan Willemsen2017-12-111-0/+27
| | | | | | | | | | | | On large branches (250+ configurations), the open file count can go over the default 1024 soft limit on Ubuntu. Many systems have increased that default, but for the ones that haven't, at least opt into the hard limit until this can be refactored to use fewer open files. Bug: 70370883 Test: prlimit -n256:4096 build/soong/build_test.bash -only-config Test: ulimit -Sn 256; build/soong/build_test.bash -only-config (darwin) Change-Id: I7a952ffc89a0149ab65b04db1523d348daa6ab3e
* Update pom2mk to allow duplicate module names if rewrittenAlan Viverette2017-12-051-13/+22
| | | | | | Fixes: 70162730 Test: ./update_current.py -s -t 4482279 Change-Id: I874d7bfb50fd2d2bc488f5458cfe57b2e0d4d4e5
* Revert "Revert "Soong support for namespaces""Jeff Gaston2017-12-041-2/+17
| | | | | | | | | | | | | | | | | This mostly reverts commit 178d5fefc0cea9d0f031c0bdee125b9d960f32c3 and mostly reapplies change I6d3e52ef62c4cabe85b9a135a54de0e1a6aab29c . Bug: 65683273 Test: build/soong/scripts/diff_build_graphs.sh \ --products=aosp_arm \ 'build/blueprint:work^ build/soong:work^' \ 'build/blueprint:work build/soong:work' # and see that the only changes were: # 1. adding some new files # 2. changing some line numbers Test: m -j nothing # which runs unit tests Change-Id: I32baae00277a547fdcdd1c2219fe6625ee0e45d7
* sbox error message now lists the files that were createdJeff Gaston2017-12-011-5/+48
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | which should make debugging faster. Bug: 66921582 Test: ./out/soong/host/linux-x86/bin/sbox --output-root outs --sandbox-path out/.temp/sbox-work -c "cd __SBOX_OUT_DIR__ && mkdir asubdir && mkdir b && touch asubdir/child a b c d e f g h i j k l m n o p" outs/a outs/b outs/z # and observe the below output: mismatch between declared and actual outputs in sbox command(cd out/.temp/sbox-work/sbox343858828 && mkdir asubdir && mkdir b && touch asubdir/child a b c d e f g h i j k l m n o p) in sandbox out/.temp/sbox-work/sbox343858828, failed to create 2 files: b: not a file z: does not exist did create 16 files: a asubdir/child c d e f g h i j ...6 more Change-Id: I75e37834c44d4279dec874701d67ce8bb01b872c
* Revert "Soong support for namespaces"Jeff Gaston2017-11-301-17/+2
| | | | | | | | | | This reverts commit 63a250a336a1b910836eeb4caebcf5b4f8d91c2a. Reason for revert: Some failures: namespace_test.go:648: dir1/Blueprints:2:4: a namespace must be the first module in the file such as New Build Breakage: aosp-master/build_test @ 4475274 Change-Id: I1b5db8eb934e51ff22241bfca44199d886b1393b
* Merge "Soong support for namespaces"Jeff Gaston2017-11-291-2/+17
|\
| * Soong support for namespacesJeff Gaston2017-11-291-2/+17
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Bug: 65683273 Test: build/soong/scripts/diff_build_graphs.sh \ --products=aosp_arm \ 'build/blueprint:work^ build/soong:work^' \ 'build/blueprint:work build/soong:work' # and see that the only changes were: # 1. adding some new files # 2. changing some line numbers Test: m -j nothing # which runs unit tests Change-Id: I6d3e52ef62c4cabe85b9a135a54de0e1a6aab29c
* | Merge "Revert "Revert "Test for dangling rules in make checkbuild"""Treehugger Robot2017-11-291-1/+5
|\ \ | |/ |/|
| * Revert "Revert "Test for dangling rules in make checkbuild""Colin Cross2017-11-251-1/+5
| | | | | | | | | | | | | | | | | | | | | | This reverts commit fb941913a351eca744e8da8251b191a05bccc3a1. Reapplies I4933187e8b72f2ef0c32d18ffea756e2c6fa417c with fixes to disable the check for mac builds, where many modules are disabled and the check is just going to cause more problems. Test: m checkbuild Change-Id: If6712c90ececd5d015fcdcdeefe0c3d4f5590711
* | Add support for --ignore_duplicates to merge_zipsColin Cross2017-11-221-9/+13
| | | | | | | | | | | | | | | | | | | | | | | | Add a --ignore_duplicates option to cause merge_zips to silently take the first entry in the case of duplicate entries in the zips to be merged. This will be used for soong Jacoco support to combine the instrumented jar with the original jar to pick up any classes that were excluded. Bug: 69629238 Test: m EMMA_INSTRUMENT=true EMMA_INSTRUMENT_FRAMEWORK=true SKIP_BOOT_JARS_CHECK=true WITH_DEXPREOPT=false Change-Id: I49ede3f07ce0ed7701b4db7058da2e4f11b8043e
* | Support exclusions and Blueprint-style ** globs in zip2zipColin Cross2017-11-223-79/+190
|/ | | | | | | | | | | Jacoco support will use zip2zip to create a jar that is a subset of another jar, and will need exclusion filters and recursive globs. Switch zip2zip from filepath.Match to pathtools.Match, and check each included file against the exclusion list. Bug: 69629238 Test: zip2zip_test.go Change-Id: Ibe961b0775987f52f1efa357e1201c3ebb81ca9c
* multiproduct_kati support for a custom list of productsJeff Gaston2017-11-151-1/+28
| | | | | | Test: multiproduct_kati --products="aosp_arm,aosp_arm64" Bug: 67478260 Change-Id: Icf7b8b0c30a2dc8e093ab109172675ff74f43adc
* Merge "Revert "Test for dangling rules in make checkbuild""Colin Cross2017-11-131-5/+1
|\
| * Revert "Test for dangling rules in make checkbuild"Colin Cross2017-11-131-5/+1
| | | | | | | | | | | | | | | | This reverts commit 7709a057706b478c9687f1facaca115cb61cb169. Reason for revert: Broke mac checkbuilds Change-Id: If71ec9198ca8943d90ce9d5e3a277faf239e38a5
* | Merge "Test for dangling rules in make checkbuild"Treehugger Robot2017-11-131-1/+5
|\|
| * Test for dangling rules in make checkbuildColin Cross2017-11-131-1/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Get a list of leaf nodes in the dependency graph from ninja, and make sure none of them are in the output directory. This ensures that there are no rules that depend on a file in the output directory that doesn't have rule to generate it. The check will catch a common set of build failures where a rule to generate a file is deleted (either by deleting a module in an Android.mk file, or by modifying the build system incorrectly). These failures are often not caught by a local incremental build because the previously built files are still present in the output directory. Bug: 36843214 Bug: 68062417 Test: manual Change-Id: I4933187e8b72f2ef0c32d18ffea756e2c6fa417c
* | Merge "Send soong output to std.log in multiproduct_kati"Treehugger Robot2017-11-121-2/+1
|\ \
| * | Send soong output to std.log in multiproduct_katiDan Willemsen2017-11-111-2/+1
| | | | | | | | | | | | | | | | | | | | | | | | Instead of throwing it away (though it would also be in soong.log along with the verbose messages). Test: build/soong/build_test.bash with ctx.Println added Change-Id: I64f8b11ab6752a6be8a5934fb41e30439238e331
* | | Merge "pom2mk: Allow setting LOCAL_SDK_VERSION"Treehugger Robot2017-11-101-0/+9
|\| | | |/ |/|
| * pom2mk: Allow setting LOCAL_SDK_VERSIONDan Willemsen2017-11-101-0/+9
| | | | | | | | | | | | | | | | | | For unbundled builds, LOCAL_SDK_VERSION needs to be set, otherwise we'll try to use frameworks-res, which isn't available. Bug: 64723465 Test: Use with prebuilts/sdk/update_current.py Change-Id: If5e1233b4bcb09b3d0e2251e8dd1a8ecfc87eb19
* | Have sbox remove its output directory before runningJeff Gaston2017-11-081-5/+23
|/ | | | | | Bug: 38205169 Test: m -j Change-Id: I73abb9921596c96fa056449bdf8250c2928bceda
* Merge "Change storage behavior of multiproduct_kati"Dan Willemsen2017-11-072-23/+48
|\
| * Change storage behavior of multiproduct_katiDan Willemsen2017-11-072-23/+48
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Instead of deleting artifacts/logs from successful build (unless -keep is set), and keeping unsuccessful artifacts, keep all logs and remove all artifacts (unless -keep is set, then we'll compress the artifacts). If -dist is passed in, we'll put an archive of the logs into the DIST_DIR. Even compressed, the rest of the artifacts are still a bit too large to dist (~5.6GB on AOSP). Test: build/soong/build_test.bash Test: build/soong/build_test.bash -keep Test: build/soong/build_test.bash -dist Change-Id: I87f55978c18c8ff2e517b8271554ba383003742f
* | Merge changes Ieaff757f,I5bdbba8dDan Willemsen2017-11-071-9/+56
|\ \ | | | | | | | | | | | | | | | * changes: pom2mk: Fix unlisted dependency types pom2mk: Add a flag to specify a specific version of artifacts
| * | pom2mk: Fix unlisted dependency typesDan Willemsen2017-11-061-10/+47
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Android Support Library 26+ does not specify dependency types, so parse all pom files first, then propagate missing dependency types if we've got the information. Bug: 64723465 Test: cd prebuilts/maven_repo/android; pom2mk -use-version 26.0.0-beta2 com/android/support Change-Id: Ieaff757ff198c9a7b4b006623340b382728c1fd4