Commit Graph

32 Commits

Author SHA1 Message Date
Twaik Yont cdb42b8d47 scripts(run-docker): remove symlink creating since docker image is already updated [no ci] 2023-11-14 16:28:12 +02:00
Twaik Yont d24bbf1f04 scripts({run-docker,setup-ubuntu}): let CI launch android binaries 2023-11-14 16:24:12 +02:00
Elan Ruusamäe f95dc20fed enhance(run-docker.sh): Reduce duplication
set "$@" to bash when no arguments
2023-10-07 01:26:45 +02:00
agnostic-apollo 7b9b9b6224 fix(run-docker.sh): Fix docker exec not passing kill signals (ctrl+c) to commands in some cases leaving processes still running
If `--tty` is not passed to `docker exec` because stdout is not available (`[ ! -t 1 ]`), like due to redirection to file (`&> build.log`) or if stdin is not available (`< /dev/null`), then docker does not forward kill signals to the process started and they remain running.

To fix the issue, the `DOCKER_EXEC_PID_FILE_PATH` env variable with the value `/tmp/docker-exec-pid-<timestamp>` is passed to the process called with `docke exec` and the process started stores its pid in the file path passed. Traps are set in `run-docker.sh` that runs the `docker exec` command to receive any kills signals, and if it does, it runs another `docker exec` command to read the pid of the process previously started from `DOCKER_EXEC_PID_FILE_PATH` and then kills it and all its children.

See Also:

https://github.com/docker/cli/issues/2607
https://github.com/moby/moby/issues/9098
https://github.com/moby/moby/pull/41548
https://stackoverflow.com/questions/41097652/how-to-fix-ctrlc-inside-a-docker-container

Also passing `--init` to `docker run` to "Run an init inside the container that forwards signals and reaps processes", although it does not work for above cases, but may helpful in others. The `--init` flag changes will only engage on new container creation.

https://docs.docker.com/engine/reference/run/#specify-an-init-process

https://docs.docker.com/engine/reference/commandline/run/

```
./scripts/run-docker.sh ./build-package.sh -f libjpeg-turbo  &> build.log
^C
$ ./scripts/run-docker.sh ps -efww
Running container 'termux-package-builder' from image 'termux/package-builder'...
UID          PID    PPID  C STIME TTY          TIME CMD
builder        1       0  0 05:48 pts/0    00:00:00 bash
builder     9243       0  0 06:01 pts/1    00:00:00 bash
builder    28127       0  0 06:12 ?        00:00:00 /bin/bash ./build-package.sh -f libjpeg-turbo
builder    28141   28127  0 06:12 ?        00:00:00 /bin/bash ./build-package.sh -f libjpeg-turbo
builder    28449   28141  1 06:12 ?        00:00:00 ninja -w dupbuild=warn -j 8
builder    28656   28449  0 06:12 ?        00:00:00 /bin/sh -c /home/builder/.termux-build/_cache/android-r23c-api-24-v0/bin/clang
builder    28657   28656 79 06:12 ?        00:00:01 /home/builder/.termux-build/_cache/android-r23c-api-24-v0/bin/clang
builder    28694   28449  0 06:12 ?        00:00:00 /bin/sh -c /home/builder/.termux-build/_cache/android-r23c-api-24-v0/bin/clang
builder    28695   28694 89 06:12 ?        00:00:00 /home/builder/.termux-build/_cache/android-r23c-api-24-v0/bin/clang
builder    28728   28449  0 06:12 ?        00:00:00 /bin/sh -c /home/builder/.termux-build/_cache/android-r23c-api-24-v0/bin/clang
builder    28729   28728  0 06:12 ?        00:00:00 /home/builder/.termux-build/_cache/android-r23c-api-24-v0/bin/clang
builder    28731   28449  0 06:12 ?        00:00:00 /bin/sh -c /home/builder/.termux-build/_cache/android-r23c-api-24-v0/bin/clang
builder    28734   28731  0 06:12 ?        00:00:00 /home/builder/.termux-build/_cache/android-r23c-api-24-v0/bin/clang
builder    28740   28449  0 06:12 ?        00:00:00 /bin/sh -c /home/builder/.termux-build/_cache/android-r23c-api-24-v0/bin/clang
builder    28741   28740  0 06:12 ?        00:00:00 /home/builder/.termux-build/_cache/android-r23c-api-24-v0/bin/clang
builder    28744       0  0 06:12 pts/2    00:00:00 ps -efww
builder    28748   28449  0 06:12 ?        00:00:00 /bin/sh -c /home/builder/.termux-build/_cache/android-r23c-api-24-v0/bin/clang
builder    28752   28748  0 06:12 ?        00:00:00 /home/builder/.termux-build/_cache/android-r23c-api-24-v0/bin/clang
builder    28753   28449  0 06:12 ?        00:00:00 /bin/sh -c /home/builder/.termux-build/_cache/android-r23c-api-24-v0/bin/clang
builder    28754   28753  0 06:12 ?        00:00:00 /home/builder/.termux-build/_cache/android-r23c-api-24-v0/bin/clang
builder    28755   28449  0 06:12 ?        00:00:00 ninja -w dupbuild=warn -j 8
$ ./scripts/run-docker.sh ./build-package.sh -f libjpeg-turbo  &> build.log
$ ./scripts/run-docker.sh ./build-package.sh -f libjpeg-turbo
Running container 'termux-package-builder' from image 'termux/package-builder'...
ERROR: Another build is already running within same environment.
```
2022-07-28 15:27:20 +05:00
Uchiha Kakashi c2ade8c29a
run-docker.sh: update user id
Since c4041bcf45, we have changed the default user id of builder from 1000 to 1001.
2022-07-23 10:29:54 +08:00
Leonid Pliushch dc3869ad37
enhance(scripts): use GitHub package registry for Docker image
Should provide better (maybe) download speed when using GitHub Actions.
2022-07-23 00:19:08 +03:00
Jia Yuan Lo 16d890f323 enhance(run-docker.sh): add support for Fedora 2022-07-15 22:12:05 +08:00
Chongyun Lee 9eb2d6d13e
run-docker.sh: Use a custom seccomp profile which allows the personality system call. 2022-04-25 10:09:50 +02:00
Leonid Pliushch 0a299dc780
run-docker.sh: don't rely on GITHUB_EVENT_PATH when checking for tty 2021-07-27 19:15:35 +03:00
Leonid Pliushch 719957fa2a
Revert "fix" for curl in Github Actions
It doesn't work.
2021-05-26 16:45:50 +03:00
Henrik Grimler e006976832 run-docker.sh: set GITHUB_ACTIONS to false if not set
To prevent error when building locally:
./scripts/run-docker.sh: line 34: GITHUB_ACTIONS: unbound variable
2021-05-26 14:33:35 +02:00
Leonid Pliushch 86cdb09734
another attempt to fix Github Actions curl timeouts
Will run "sudo ethtool -K eth0 tx off rx off" in container before executing
build commands.

Since our build environment doesn't have ethtool installed, this will
imply rebuilding Docker image. Until that, CI builds will fail due to
missing utility.
2021-05-26 15:15:37 +03:00
Leonid Pliushch bc20ba7e70 run-docker.sh: if $TERMUX_DOCKER_USE_SUDO is set, run `docker` with sudo
Not all system configurations have user being added into `docker` group.
2020-09-28 00:40:17 +03:00
Leonid Pliushch 380e6fd501 run-docker.sh: don't modify $HOME variable which is set outside 2020-06-10 15:40:08 +03:00
Leonid Pliushch 149220d89d fix unbound variable error in scripts/run-docker.sh 2020-01-23 22:25:54 +02:00
Leonid Pliushch b6c59df765 CI: use termux/package-builder Docker image as build environment 2020-01-23 21:54:42 +02:00
Leonid Pliushch 7c764b989b run-docker.sh: allow to set custom image via environment variable 2019-08-02 17:39:27 +03:00
Leonid Pliushch 03fcde2750 scripts/run-docker.sh: use sudo for privileged operations (when changing uid/gid) 2019-02-25 02:12:51 +02:00
Wetitpig 45eb50aa77 Remove relevant instructions 2019-02-24 21:08:38 +02:00
Wetitpig d50c847f11 Shell script compliance 2019-02-15 18:01:09 +02:00
Fredrik Fornwall 76727af5e5 Fix mac error in scripts/run-docker.sh 2018-09-11 22:32:58 +02:00
Fredrik Fornwall 7634072451 run-docker.sh: Allow multiple containers
By defining CONTAINER_NAME one can now build from multiple containers:

    CONTAINER_NAME=builder1 ./scripts/run-docker.sh
    CONTAINER_NAME=builder2 ./scripts/run-docker.sh
    ...
2018-07-23 01:34:06 +02:00
Henrik Grimler 3c634e4903 Docker: login as "builder" even if run-docker.sh is run as root.
Running with sudo otherwise produces debs that normal users don't have
permission to access.
2017-07-22 18:52:08 +02:00
Fredrik Fornwall bf74a80eac run-docker.sh: Work around mac readlink 2017-07-15 11:37:17 +02:00
olg 09c5e72a9a Fix the uid in the docker container, but only when needed and make the bind mount work for arbitrary pwd... 2017-07-15 11:20:05 +02:00
hacknox 3ac5e56343 Use $HOME replace home path 2017-07-15 11:20:05 +02:00
hacknox 36eeaeec1b Fix root user $HOME path 2017-07-15 11:20:05 +02:00
hacknox b21d9e3343 fix docker volume read/write permission 2017-07-15 11:20:05 +02:00
Fredrik Fornwall 95761413f6 run-docker.sh: Use long option names 2017-02-04 23:23:07 +01:00
Fredrik Fornwall e59984067b Use non-root user when using docker
We now use a non-root user when building packages using a docker
container. This allows detecting misconfigured packages which try
to install files outside of $TERMUX_PREFIX or otherwise mess with
the system during a build.
2017-01-22 23:13:48 +01:00
Fredrik Fornwall a005794323 Tweak build script and docker setup
- Output deb files to debs/ folder by default.
- Use $HOME/.termux-build for build folder by default (changed
  from previous $HOME/termux).
- Make scripts/run-docker.sh re-use a single container instead of
  creating new ones for each run.
- Avoid mounting the whole Termux build folder in docker. This
  fixes #294, mmap not supported host folders under OS X.
- Add a scripts/update-docker.sh utility for checking for an
  updated docker image..
- Make build-package.sh support the [-a ARCH] flag to specify arch.
- Make aarch64 the default arch (from previous arm).
- Try to improve the README a bit.
2016-06-03 18:41:30 -04:00
Fredrik Fornwall 88183689ef Build and docker updates 2016-05-27 18:24:50 -04:00