As we have seen [1], i686 seem to explicitly need -fPIC. Pass
CPPFLAGS in more places when building aapt, to avoid an error like:
ld: error: relocation R_386_PC32 cannot be used against symbol config_free; recompile with -fPIC
>>> defined in /tmp/config_utils-70060d.o
>>> referenced by config_utils.c
>>> /tmp/config_utils-70060d.o:(config_free)
[1] https://github.com/termux/termux-packages/issues/7215#issuecomment-906154438
In issue https://github.com/termux/termux-packages/issues/6160 I have found
that community repo "its-pointless.github.io" specifies us as maintainer
for its packages. This is NOT TRUE and potentially misleads people using
these packages.
Now TERMUX_PKG_MAINTAINER will contain a default value which is neutral
and not specify maintainer. So all packages now have to override it to
the correct value.
[skip ci]
%ci:no-build
Linter will check packages submitted for CI build. If error was found,
build will not be allowed.
To ensure that all build.sh scripts are consistent and have at least
minimal allowed quality, linter is permanently enabled for all branches
and pull requests.
Variables
TERMUX_PKG_PLATFORM_INDEPENDENT
TERMUX_DEBUG
TERMUX_PKG_HAS_DEBUG
TERMUX_PKG_ESSENTIAL
TERMUX_SUBPKG_ESSENTIAL
TERMUX_PKG_NO_STATICSPLIT
TERMUX_PKG_BUILD_IN_SRC
TERMUX_PKG_FORCE_CMAKE
TERMUX_PKG_HOSTBUILD
should not accept arbitrary values for marking them "enabled". Instead
they should accept boolean values which makes them easier to handle and
also makes their meaning clear.
build-package.sh should make decision based on variable's value but not on
whether it is set or empty.
%ci:no-build
* 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
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.
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.
Let build-package.sh setup the $PREFIX/lib/libstdc++.so symlink
before building any package, to make sure that all C++ applications
link against a fully featured C++ standard library.
Avoid explicitly declaring a dependency on the libgnustl package
since everyone may link against it at will and instead mark it as
essential.