Commit Graph

559 Commits

Author SHA1 Message Date
Biswapriyo Nath 09127c8970
build-packages.sh: introduce SOURCE_DATE_EPOCH (#19593)
- Allow SOURCE_DATE_EPOCH to be set externally
- Replace BUILD_DATE with SOURCE_DATE_EPOCH for same timestamp
- Set timestamp for all files in pacman package
2024-03-28 15:47:51 +03:00
Ivan Max d93e155fa2
build-package.sh: fix removing package from list building (#19525) 2024-03-21 09:22:10 +03:00
Ivan Max 173fbf73b1
build-packages.sh: loop definition fix (#19247) 2024-02-15 09:30:06 +03:00
Ivan Max 11d63746d2
termux_step_get_dependencies.sh: avoid getting into package dependency cycles (#18914) 2024-01-07 22:58:33 +03:00
Jia Yuan Lo 923d4e6e0f enhance(scripts): termux_setup_xmake 2023-11-15 20:37:07 +08:00
Chongyun Lee 29eb15f1cd toolchain: add flang 2023-11-09 23:27:40 +08:00
Chongyun Lee ce4b0f87db
scripts(toolchain): update to ndk-r26b 2023-10-22 20:49:23 +02:00
Lucy Phipps 3c35c92fde
build-package.sh: simpler TERMUX_REPO_PKG_FORMAT default 2023-09-03 11:19:09 +01:00
Lucy Phipps a25a4f1163
build-package.sh: default TERMUX_REPO_PKG_FORMAT to debian 2023-09-03 11:03:42 +01:00
Lucy Phipps 4755014aa5
parse repo.json in build-package.sh instead of properties.sh 2023-09-03 09:23:17 +01:00
Ivan Max 42ee1aac94
Improvement build-package.sh (#17735)
- adding version check of dependencies in pacman format
- improving termux_step_setup_cgct_environment()
- adding a new `-w` flag
- fix creating static packages
2023-09-01 21:28:13 +03:00
Ivan Max a46e3e9357
build-package.sh: adding compilation based on glibc (#16901)
[skip ci]
2023-08-30 23:40:08 +03:00
Quinton Miller 5115fa9bc0
addpkg(main/crystal): Crystal 1.9.0 (#17428) 2023-07-15 12:17:34 +08:00
Ivan Max cd151f2841
scripts/setup-termux.sh: adding the ability to install packages via pacman (#16368)
build-package.sh: improved work with pacman-conf
2023-04-23 20:59:02 +03:00
Aditya Alok 33b1397f36
haskell-packaging: End support for library packages
- Now we use cabal (comparable to rust's cargo) to build binary packages.

Reason:
- Haskell's cabal packaging system is like rust's cargo. Every packages
  depends upon some specific version of other library. Hence, it is
  hard to maintain each and every version.
- Patching packages so that they use latest of dependencies breaks
  compatibility.

Benefits:
- Enables building very large packages like `pandoc`.
- Reduces disk space used.
- Lesser packages to maintain.

Signed-off-by: Aditya Alok <alok@termux.dev>
2023-02-21 10:08:12 +05:30
Tee KOBAYASHI c0f5627998 scripts: Add `termux_setup_cargo_c` 2023-02-19 15:17:45 +00:00
Tee KOBAYASHI 9c2e9d9ca5 scripts: Bump NDK to r25c 2023-02-02 16:38:20 +05:30
Leonid Pliushch d82bd52f0f
build-package.sh: -i/-I now available only for com.termux id
Before build-package.sh unconditionally downloaded deb files even when
application package name was different.
2023-01-16 22:38:39 +02:00
Maxython d97b8c353b scripts: add termux_setup_python_pip function
It replaces termux_setup_python_crossenv and can be used when
compiling python packages.  Packages should specify their python
dependencies in TERMUX_PKG_PYTHON_TARGET_DEPS,
TERMUX_PKG_PYTHON_BUILD_DEPS, and TERMUX_PKG_PYTHON_COMMON_DEPS.
2023-01-16 09:29:47 +03:00
Ivan Max 83f6e7acfd
build-package.sh: fix bug with TERMUX_FORCE_BUILD and add new flag -F (TERMUX_FORCE_BUILD_DEPENDENCIES) (#13861)
This add-on requires careful review and testing, but this will not interfere with compiling packages.

Co-authored-by: agnostic-apollo <agnosticapollo@gmail.com>

%ci:no-build
2023-01-03 18:04:40 +03:00
Lucy Phipps c0104fdca2
scripts: update comments about ".git" to "git+" 2023-01-02 00:30:11 +00:00
Jia Yuan Lo b88e09873d scripts: remove termux_setup_gnu_as_23c
Replaced by termux_setup_no_integrated_as
2022-12-10 16:15:00 +08:00
Tee KOBAYASHI bd93dd3532 termux_setup_no_integrated_as: Add new function
%ci:no-build
2022-11-08 22:50:01 +00:00
Tee KOBAYASHI eae4194b00 gobject-introspection: Build introspection data 2022-10-20 23:44:13 +09:00
Chongyun Lee 268452c314 scripts: update to ndk r25b 2022-09-15 00:37:34 +08:00
Jia Yuan Lo 035c918418
scripts: add termux_setup_gnu_as_23c for NDK r25 (#11615)
NDK r25 has removed GNU Assembler (GAS). Removal of GAS introduced a number of build issues.
The most prominent is:
/usr/bin/as: unrecognized option '-EL'

Some options to solve this:
1. Disable building custom assembly and suffer performance penalty
2. Hand rewrite the custom assembly to be LLVM compatible
3. Wait for upstream to write LLVM compatible assembly (openssl, openssl-1.1)
4. Bring back GAS from NDK r23c

In this commit, GAS is brought back as a separate toolchain instead of following NDK r23c file hierarchy.
We pass "--gcc-toolchain=GAS_TOOLCHAIN_DIR" to NDK r25 clang to detect.
Packages only have to add "termux_step_gnu_as_23c" to build.sh to enable GAS.
In the future, we expect packages should follow option 3 more than option 4 as that is a last resort.

This commit also bumps revision for packages that rely (or previously rely) on "-fno-integrated-as":
hors, libffi, libgcrypt, libpixman, openssl, openssl-1.1

Co-authored-by: Henrik Grimler <grimler@termux.dev>
Co-authored-by: Chongyun Lee <45286352+licy183@users.noreply.github.com>
2022-08-24 23:17:08 +08:00
Henrik Grimler d6ad4c50b5
scripts(toolchain): add possibility to install android NDK 25
Same ndk-patches and termux_step_setup_toolchain can be used as for
NDK 23c it seems.
2022-08-13 12:20:04 +02:00
Henrik Grimler e7f4ad8b6d
scripts: rename termux_step_setup_toolchain to indicate NDK version
And keep ndk-patches in 23c/ subdirectory.  Run
termux_step_setup_toolchain_23c only if TERMUX_NDK_VERSION equals 23c.

This is a step towards having the possibility to use different NDK
versions.  Using a different NDK version than the one termux
officially supports should *really* not be done except for
testing/debug/development reasons, or if it is strictly necessary to
be able to compile a program (for example for packages that need a
fortran compiler, which at the moment is only supported with old
gcc-using NDKs).
2022-08-13 12:19:59 +02:00
Henrik Grimler b044a49d0f
scripts: export TERMUX_PACKAGE_FORMAT and TERMUX_PACKAGE_MANAGER
Otherwise these variables is not visible to child shells.  This caused
configure step of termux-tools to always use debian/apt combination,
since it checks for variables among environmental variables and they
were not visible.
2022-08-10 09:00:33 +02:00
Chongyun Lee 78443182a0
build-scripts: fix termux_step_create_subpkg_debscripts 2022-08-07 10:00:42 +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
agnostic-apollo cd2928cbe1 fix(build-package.sh): Do not use dependencies while building from repo if it hosts packages built for a different package name than TERMUX_APP_PACKAGE 2022-07-28 15:27:20 +05:00
Leonid Pliushch 1fe284d818
build-package.sh: fix syntax error 2022-07-08 12:01:49 +03:00
Butta b8bfe98f10 upgpkg(swift): 5.6.1 to 5.6.2
Also, add a termux_setup_swift() bash function and move downloading the prebuilt
Swift toolchain for linux there.
2022-06-16 21:31:13 +05:30
agnostic-apollo 0275d9bff3 changed(scripts|main/termux-tools): Use TERMUX_APP_PACKAGE_MANAGER instead of TERMUX_MAIN_PACKAGE_FORMAT
Make changes as per new design implemented in termux/termux-app@b950efec and termux/termux-app#2740

The package build and termux-tools scripts use current package manager for custom logic. The `termux-tools/termux-setup-package-manager` script has been added that will now be used to provide backward compatibility for termux-app `< 0.119.0` (when its released) and validate the package manager. It will also ensure the variable in not unset to prevent `unbound variable` errors if `set -u` is being used by calling scripts.

Closes #10782
2022-05-23 12:14:55 +05:00
Henrik Grimler 56dbb9cf80
CI: specify distribution in repo.json as well
x11-repo uses distribution x11, and root-repo distribution root.
Store this information in the json file as well, and parse it to set
both REPOSITORY_NAME and REPOSITORY_DISTRIBUTION.

Also remove unnecessary `< repo.json` from jq command, jq accepts the
file as an argument.

This fixes upload issues to x11-repo and root-repo.
2022-04-20 16:37:36 +02:00
Henrik Grimler 4f3c709d78
build-package.sh: spaces -> tabs in indentation 2022-04-20 13:08:42 +02:00
Yaksh Bariya f0ea9b922b
monorepo: apply changes suggested by buttaface 2022-04-18 13:57:19 +05:30
Yaksh Bariya 52c383b4d1
chore: switch to monorepo 2022-04-18 13:57:13 +05:30
Aditya Alok f58de40f2e
feat(build-package.sh): create debscripts for haskell packages
Signed-off-by: Aditya Alok <dev.aditya.alok@gmail.com>
2022-03-16 15:32:12 +01:00
Aditya Alok 49c3e79513
feat(setup ghc cross compiler): make it work independently from other build steps
Signed-off-by: Aditya Alok <dev.aditya.alok@gmail.com>
2022-03-16 15:31:59 +01:00
Aditya Alok 225a560590
feat(build-package.sh): source haskell build scripts
Signed-off-by: Aditya Alok <dev.aditya.alok@gmail.com>
2022-03-16 15:31:53 +01:00
Yaksh Bariya e5b54ebb84
build-package.sh: Fix typo for comment for termux_setup_nodejs
Node.js is not 'ninja build system', but a JavaScript Runtime based on V8

:P
2022-03-12 11:35:01 +05:30
Henrik Grimler 59f1c7b183
Revert "feat(ghc): enable cross-compiling haskell packages on CI"
This will need some more work.  Currently
termux_create_haskell_debscripts is run for all packages, even
non-haskell ones, which causes errors in postinst and prerm scripts in
an ugly way.

This reverts commit dc2474b2c2.
2022-03-09 07:40:36 +01:00
Aditya Alok dc2474b2c2 feat(ghc): enable cross-compiling haskell packages on CI
- `termux_setup_ghc_cross_compiler` should not be called by build.sh, as it installs cross-compiler
in $TERMUX_PREFIX (otherwise ghc adds wrong `rpaths` to built libs and executables)

Signed-off-by: Aditya Alok <dev.aditya.alok@gmail.com>
2022-03-09 10:01:57 +09:00
Tee KOBAYASHI 9849f01987 new function: termux_setup_python_crossenv 2022-03-02 12:00:30 +09:00
Henrik Grimler f66938e355
scripts/build/setup: add termux_setup_nodejs function
To be used by packages that need nodejs during build (gitea and
frida-server for example).

Use LTS version for now (gitea had issues with latest version).
2022-03-01 09:03:54 +01:00
Maxython 465159a72e
build-package.sh: change logic for package manager selection to be more stable
termux_step_setup_variables: added logic with TERMUX_PACKAGE_FORMAT
for easier compilation.
2022-02-11 22:38:40 +01:00
Henrik Grimler 0d5118c71d
build-package.sh: skip importing Fornwall's key
We aren't subscribed to any repos signed with his key.
2022-02-04 19:47:24 +01:00
xeffyr a978da484f update termux-keyring 2022-01-31 20:15:35 +02:00