* build-package.sh: allow for arrays in TERMUX_PKG_{SRCURL,SHA256}
Packages that require several source archives can then set these parameters to
arrays instead of downloading them "manually" in termux_step_post_extract.
Downloaded files are extracted into subfolders in TERMUX_PKG_SRCDIR.
Tested for backward compatibility in a couple of packages and the combinations
tar + tar, zip + tar, tar + zip, zip + zip.
* perl: download perl-cross through TERMUX_PKG_SRCURL
* perl: remove $PREFIX/{lib/libperl.so,include/perl} before build
Otherwise building perl twice doesn't give the same results, symlinks are
messed up.
Also remove old remnant from when there was a Kid.pm.patch.
* bash: fix tiny typo
* ecj: remove hardcoded SHA256 and pkg version
* elfutils: download argp-standalone through TERMUX_PKG_SRCURL
* ldc: download all src archives through TERMUX_PKG_SRCURL
* libgc: download libatomic_ops through TERMUX_PKG_SRCURL
* libllvm: download all src archives through TERMUX_PKG_SRCURL
* linux-man-pages: download src archives through TERMUX_PKG_SRCURL
* ncurses: download all src archives through TERMUX_PKG_SRCURL
* pngquant: download lib sources through TERMUX_PKG_SRCURL
Use .zip for lib since the downloaded archives are otherwise both named
$TERMUX_PKG_VERSION.tar.gz and replace each other. This causes caching to
not work.
* build-package.sh: add possibility for debug patches and TERMUX_PKG_HAS_DEBUG
Setting TERMUX_PKG_HAS_DEBUG=no disables attempt to build debug build of
package.
Useful for example if a debug build doesn't make sense, as for python-packages
and texlive.
* aapt: skip D_FORTIFY_SOURCE=2 for libandroid-cutils when doing debug build
* lftp: skip D_FORTIFY_SOURCE=2 for debug build
* libflac: don't use -g3 for debug build
Configure script removes it otherwise.
* nano: skip -D_FORTIFY_SOURCE=2 for debug build
* vifm: skip -D_FORTIFY_SOURCE=2 for debug build
* mc: skip -D_FORTIFY_SOURCE=2 for debug build
* dropbear: add __attribute__((overloadable)) to XMEMSET and XMEMCPY if debug
* gdb: add __attribute__((overloadable)) to strchr if debug
* gnuit: add __attribute__((overloadable)) to strchr and strcpy if debug
* gperf: add __attribute__((overloadable)) to strlen if debug
* inetutils: add __attribute__((overloadable)) to strrchr and strchr if debug
* readline: add __attribute__((overloadable)) to strchr if debug
* tsocks: add __attribute__((overloadable)) to poll if debug
* units: add __attribute__((overloadable)) to strchr if debug
* liblua: fix bug in loslib.c that emerged in debug build
Use strncpy instead of strcpy.
Original error message:
loslib.c:169:3: error: 'strcpy' called with string bigger than buffer
lua_tmpnam(buff, err);
^
loslib.c:122:37: note: expanded from macro 'lua_tmpnam'
strcpy(b, LUA_TMPNAMTEMPLATE); \
^
* alpine: include our getpass.h in imap's mtest.c to declare getpass
Debug build complained about the previous implicit declaration.
* nginx: use --with-debug instead of --debug
* cboard: skip -D_FORTIFY_SOURCE=2 for debug build
* gettext: add __attribute__((overloadable)) to getcwd if debug
* oathtool: skip -D_FORTIFY_SOURCE=2 for debug build
* php: add __attribute__((overloadable)) to strlcpy and strlcat if debug
* expect: add __attribute__((overloadable)) to strchr if debug
* texlive: set TERMUX_PKG_HAS_DEBUG=no
* asciinema: set TERMUX_PKG_HAS_DEBUG=no
* libllvm: set TERMUX_PKG_HAS_DEBUG=no
Debug build fails with:
home/builder/.termux-build/libllvm/src/lib/Support/Unix/Path.inc:740:19: error: no matching function for call to 'RetryAfterSignal' if ((ResultFD = sys::RetryAfterSignal(-1, open, P.begin(), OpenFlags)) < 0)
* build-package.sh: set TERMUX_PKG_REPLACES=package if debug build
Hopefully allows us to install debug packages without breaking dependecies.
Should be looked over and be made more similar to how debian does this in any case
* Update build.sh
We'll rename debug debs to ${PKG}-dbg but not the actual package name in
control. Debug versions of packages and normal packages can then replace each
other without complaints from apt.
We need to work a bit more on it to be able to setup a debug repo.
* update ndk to 17
* bump NDK version in setup-android script
* libnl: fix for ndk r17
* libpixman: use clang's __builtin_shufflevector instead of __builtin_shuffle (#1)
Required to make package build with ndk17.
* fix as for arm
* ndk17 still uses ld.bfd on aarch64
* use -fno-integrated-as for clang only
* glib: remove patch unnecessary after ndk17
* torsocks: remove unneeded patch after ndk17
* subversion: fix build as clang++ now errors out for mismatched flags
* libpulseaudio: fix build with ndk17
https://github.com/termux/termux-packages/pull/2415#issuecomment-388296684
* gst-plugins-good: disable video4linux2
ioctl is defined as __overloadable in ndk17 headers which
conflicts with v4l2object's member ioctl
* libzmq: disable Werror to build with ndk17
* ltrace: hardcode symbol not available in ndk17
* busybox: build with clang for all arches except arm
* dropbear: build with clang instead of gcc
* gnupg: build with clang instead of gcc
* openssl: use clang for all arches except arm
* picolisp: build with clang instead of gcc
* valgrind: use clang on all arches except aarch64
* Revert "gst-plugins-good: disable video4linux2"
This reverts commit 43850b81ccf60033c25cb13dfd326c1b0528773a.
Already applied on base branch.
* libllvm: use default arm triple
Previously libandroid-support contained inline stubs for libintl.h
functions (gettext(), dgettext() and friends).
We now provide inline versions of them in libintl.h directly so
libandroid-support is no longer necessary to get them.
The platform headers has the following macro:
#define MB_CUR_MAX __ctype_get_mb_cur_max()
where __ctype_get_mb_cur_max() tries to handle UTF-8 encodings.
However, even in Android 7.0 setlocale(LC_ALL, ""), which many
programs do at startup, doesn't work in that it sets the locale
as non-utf8:
https://android.googlesource.com/platform/bionic/+/nougat-release/libc/bionic/locale.cpp#139
So we just always consider us being in an utf-8 locale.
Also rebuild coreutils to fix#1136.
This will make things as std::to_string() and other C++ features
work with a modern and supported C++ library.
We package up libc++_shared.so and bump the revision of every C++
using package to make it rebuild against it.
Users who have built C++ using libraries or programs will probably
need to rebuild them if they are linked against Termux-supplied
libraries, as user code was previously linked against gnustl while
the system libraries are now using libc++, and it's not a good idea
to mix C++ standard libraries in a program.
By setting the TERMUX_PKG_API_LEVEL property to an android api
level packages can build against later API levels than the current
Termux default of 21.
32-bit android uses 32-bit off_t by default. When building with
-D_FILE_OFFSET_BITS=64 with unified headers off_t are promoted
to 64-bit, but there are bugs in the toolchain and spotty support
for it in the platform (not all functions are available until
android-24, and the platform zlib is compiled with 32-bit off_t).
Also, unless every library&program is rebuilt with 64-bit off_t,
including user-built ones, we risk a mismatch between programs and
libraries which can cause serious (but sometimes subtle) runtime
failures.
As -D_FILE_OFFSET_BITS=64 is not that important for most users
(with mariadb requiring it as an exception), we drop the support
for now by patching it away in <sys/cdefs.h>.
EXPERIMENTAL STATUS!
To try things out: Define TERMUX_UNIFIED_HEADERS=1 and build to
use the new unified headers.
This causes ndk_patches_unified/ to be used to patch the NDK header
files instead of ndk_patches/.
The docker image has been updated, use
./scripts/update-docker.sh
to update.
Note that we are still using the old deprecated non-unified headers
- updating to that is the next step.
* remove ndk_patches/sys-shm.h.patch
add a note about libandroid-shmem and posix semaphores
* libandroid-shmem: enable package
* separate function to replace autoconf guess scripts
For those using Docker build environments: run scripts/update-docker.sh
to pull the latest Docker image with r14 installed.
Otherwise, remove the $NDK directory (defaults to
$HOME/lib/android-ndk if not setup in the environment) and run
scripts/setup-android-sdk.sh to setup a r14 installation.
When having an already downloaded source archive, use the checksum
to validated it. This avoids problems if the file has been modified
by mistake after downloading in a previous build and detects if
an incorrect checksum has been specified.
- Put everything into shell functions.
- Start fixing shellcheck warnings.
- Run a hostbuild before setting up an android toolchain (fixes#657).
It was quite a hasty rewrite, so things could be broken. Let me know!