the same license as bash, while the patches and scripts to build python are licensed
under the same license as python).
-Build environment on Ubuntu 16.04
+Build environment on Ubuntu 16.10
=================================
-Packages are built using Ubuntu 16.04. Perform the following steps to configure a Ubuntu 16.04 installation:
+Packages are built using Ubuntu 16.10. Perform the following steps to configure a Ubuntu 16.10 installation:
- Run `scripts/setup-ubuntu.sh` to install required packages and setup the `/data/` folder.
- Run `scripts/setup-android-sdk.sh` to install the Android SDK and NDK at `$HOME/lib/android-{sdk,ndk}`.
+There is also a [Vagrantfile](scripts/Vagrantfile) available for setting up an Ubuntu environment using a virtual machine on other operating systems.
+
Build environment using Docker
==============================
-On other Linux distributions than Ubuntu 16.04 (or on other platforms than Linux) the best course
+On other Linux distributions than Ubuntu 16.10 (or on other platforms than Linux) the best course
of action is to setup a Docker container for building packages by executing:
- ./scripts/run-docker.sh
+ ./scripts/run-docker.sh # On Linux and macOS.
+ .\scripts\run-docker.ps1 # On Windows.
This will setup a container (from an image created by [scripts/Dockerfile](scripts/Dockerfile))
suitable for building packages.
====================
* build-all.sh: used for building all packages in the correct order (using buildorder.py).
-* clean-rebuild-all.sh: used for doing a clean rebuild of all packages.
+* clean.sh: used for doing a clean rebuild of all packages.
* scripts/check-pie.sh: Used for verifying that all binaries are using PIE, which is required for Android 5+.
-* scripts/detect-hardlinks.sh: Used for finding if any packages uses hardlinks, which does not work on Android M.
-
* scripts/check-versions.sh: used for checking for package updates.
* scripts/list-packages.sh: used for listing all packages with a one-line summary.
=========
* [Android changes for NDK developers](https://android.googlesource.com/platform/bionic/+/master/android-changes-for-ndk-developers.md)
-* [Linux From Scratch](http://www.linuxfromscratch.org/blfs/view/svn/index.html)
+* [Linux From Scratch](http://www.linuxfromscratch.org/lfs/view/stable/)
* [Beyond Linux From Scratch](http://www.linuxfromscratch.org/blfs/view/stable/)
* mempcpy(3) is a GNU extension. We have added it to <string.h> provided TERMUX_EXPOSE_MEMPCPY is defined,
so use something like CFLAGS+=" -DTERMUX_EXPOSE_MEMPCPY=1" for packages expecting that function to exist.
+* Android uses a customized version of shared memory managemnt known as ashmem. libandroid-shmem wraps SYSV shared
+ memory calls to standard ashmem operations. Use it with `LDFLAGS+=" -landroid-shmem`.
+
+* SYSV semaphores (semget(2), semop(2) and others) aren't available.
+ Use unnamed POSIX semaphores instead (named semaphores are unimplemented).
+
dlopen() and RTLD_* flags
=================================
<dlfcn.h> originally declares