Update Dockerfile to pass tests

Also moves the source outside of the root directory, and changes
ENTRYPOINT to CMD to make it easier to enter the container and inspect
the test results.

Use -j8 to speed up builds, that should be fairly safe on most modern
machines.
1 file changed
tree: 04efa3e48705b411d0d0cfcef5edc102f26a3b02
  1. .github/
  2. golang/
  3. src/
  4. testcase/
  5. .clang-format
  6. .dockerignore
  7. .gitignore
  8. AUTHORS
  9. clang-format-check
  10. CODEOWNERS
  11. CONTRIBUTING.md
  12. CONTRIBUTORS
  13. Dockerfile
  14. go.mod
  15. go.sum
  16. INTERNALS.md
  17. LICENSE
  18. Makefile
  19. Makefile.ckati
  20. Makefile.kati
  21. README.md
  22. run_test.go
README.md

kati

Build and Test

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.

Development

Building:

$ make ckati

The above command produces a ckati binary in the project root.

Testing (best ran in a Ubuntu 20.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

How to use for Android

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.