- 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>
Instead of in termux_setup_toolchain_XX. This helper lib does really
not have anything to do with our toolchain so it does not belong in
termux_setup_toolchain.
It is also good to only modify $TERMUX_PREFIX (for other things than
make install) before termux_step_create_timestamp_file has been run,
and termux_step_start_build fits that criteria.
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>