commit | 43f4e4605c54be891e4eddf57a6a2a916fb9b10f | [log] [tgz] |
---|---|---|
author | Cole Faust <[email protected]> | Sat Dec 03 14:51:49 2022 -0800 |
committer | Matthias Maennich <[email protected]> | Thu Dec 08 10:33:18 2022 +0000 |
tree | cecb5e794fdb7be0135c549127d570d1b4ac56c7 | |
parent | e6590f1aa84734419d787dbdb38dcc070bea7060 [diff] |
Replace StringPiece with std::string_view StringPiece was almost an identical copy of std::string_view, probably added before kati was compiled with C++17. Replace it with std::string_view now that we're on C++17. Some of the differences between StringPiece and std::string_view are: - myStringPiece.AppendToString(myString) becomes myString.append(myStringView) - myStringPiece.as_string() becomes std::string(myStringView) - string_view doesn't have .clear(), replaced with initializing a new string_view - myStringPiece.get(0) becomes myStringView.at(0), with added bounds checking because string_view will throw if it's out of bounds while StringPiece will return 0 instead. - StringPiece's substr() will prevent both the starting and ending indexes of the substring from going past the end of the StringPiece, but string_view will only do that for the ending index, and throw on out of bounds starting indicies. - StringPiece could be initialized from a null char*, but string_view will crash when given null. The tests caught some of the runtime issues, but more were caught by testing a locally compiled ckati in the android source tree.
kati is an experimental GNU make clone. The main goal of this tool is to speed-up incremental build of Android.
Currently, kati does not offer a faster build by itself. It instead converts your Makefile to a ninja file.
Building:
$ make ckati
The above command produces a ckati
binary in the project root.
Testing (best ran in a Ubuntu 22.04 environment):
$ make test $ go test --ckati $ go test --ckati --ninja $ go test --ckati --ninja --all
The above commands run all cKati and Ninja tests in the testcases/
directory.
Alternatively, you can also run the tests in a Docker container in a prepared test enviroment:
$ docker build -t kati-test . && docker run kati-test
If you are working on a machine that does not provide make
in the same version as kati is currently compatible with, you might want to download a prebuilt version instead. For example to use the prebuilt version of Ubuntu 20.04 LTS:
$ mkdir tmp/ && cd tmp/ $ wget http://mirrors.kernel.org/ubuntu/pool/main/m/make-dfsg/make_4.2.1-1.2_amd64.deb $ ar xv make_4.2.1-1.2_amd64.deb $ tar xf data.tar.xz $ cd .. $ PATH=$(pwd)/tmp/usr/bin/:$PATH make test
For Android-N+, ckati and ninja is used automatically. There is a prebuilt checked in under prebuilts/build-tools that is used.
All Android's build commands (m, mmm, mmma, etc.) should just work.