Merge pull request #6645 from totherme/androidndk_r8e_pin

Add option to build old androidndk r8e.
This commit is contained in:
Sander van der Burg 2015-03-04 09:18:49 +00:00
commit b072ce228a
3 changed files with 100 additions and 0 deletions

View File

@ -0,0 +1,80 @@
{ stdenv, fetchurl, zlib, ncurses, lib, makeWrapper
, coreutils, file, findutils, gawk, gnugrep, gnused, jdk, which
, platformTools
}:
assert stdenv.isLinux;
stdenv.mkDerivation rec {
name = "android-ndk-r8e";
src = if stdenv.system == "i686-linux"
then fetchurl {
url = "http://dl.google.com/android/ndk/${name}-linux-x86.tar.bz2";
sha256 = "c2c4e0c8b3037149a0f5dbb08d72f814a52af4da9fff9d80328c675457e95a98";
}
else if stdenv.system == "x86_64-linux" then fetchurl {
url = "http://dl.google.com/android/ndk/${name}-linux-x86_64.tar.bz2";
sha256 = "093gf55zbh38p2gk5bdykj1vg9p5l774wjdzw5mhk4144jm1wdq7";
}
else throw "platform ${stdenv.system} not supported!";
phases = "buildPhase";
buildInputs = [ makeWrapper ];
buildCommand = let
bin_path = "$out/bin";
pkg_path = "$out/libexec/${name}";
sed_script_1 =
"'s|^PROGDIR=`dirname $0`" +
"|PROGDIR=`dirname $(readlink -f $(which $0))`|'";
sed_script_2 =
"'s|^MYNDKDIR=`dirname $0`" +
"|MYNDKDIR=`dirname $(readlink -f $(which $0))`|'";
runtime_paths = (lib.makeSearchPath "bin" [
coreutils file findutils
gawk gnugrep gnused
jdk
which
]) + ":${platformTools}/platform-tools";
in ''
set -x
mkdir -pv $out/libexec
cd $out/libexec
tar -xjf $src
# so that it doesn't fail because of read-only permissions set
cd -
patch -p1 \
--no-backup-if-mismatch \
-d $out/libexec/${name} < ${ ./make-standalone-toolchain_r8e.patch }
cd ${pkg_path}
find $out \( \
\( -type f -a -name "*.so*" \) -o \
\( -type f -a -perm /0100 \) \
\) -exec patchelf --set-interpreter ${stdenv.cc.libc}/lib/ld-*so.? \
--set-rpath ${zlib}/lib:${ncurses}/lib {} \;
# fix ineffective PROGDIR / MYNDKDIR determination
for i in ndk-build ndk-gdb ndk-gdb-py
do
sed -i -e ${sed_script_1} $i
done
sed -i -e ${sed_script_2} ndk-which
# a bash script
patchShebangs ndk-which
# make some executables available in PATH
mkdir -pv ${bin_path}
for i in \
ndk-build ndk-depends ndk-gdb ndk-gdb-py ndk-gdb.py ndk-stack ndk-which
do
ln -sf ${pkg_path}/$i ${bin_path}/$i
done
# wrap
for i in ndk-build ndk-gdb ndk-gdb-py ndk-which
do
wrapProgram "${bin_path}/$i" --prefix PATH : "${runtime_paths}"
done
'';
}

View File

@ -147,6 +147,13 @@ rec {
inherit (pkgs) coreutils file findutils gawk gnugrep gnused jdk which;
inherit platformTools;
};
androidndk_r8e = import ./androidndk_r8e.nix {
inherit (pkgs) stdenv fetchurl zlib ncurses lib makeWrapper;
inherit (pkgs) coreutils file findutils gawk gnugrep gnused jdk which;
inherit platformTools;
};
buildApp = import ./build-app.nix {
inherit (pkgs) stdenv jdk ant gnumake gawk file which;

View File

@ -0,0 +1,13 @@
diff -ru android-ndk-r8e.old/build/tools/make-standalone-toolchain.sh android-ndk-r8e/build/tools/make-standalone-toolchain.sh
--- android-ndk-r8e.old/build/tools/make-standalone-toolchain.sh 2014-10-16 03:46:32.000000000 +0200
+++ android-ndk-r8e/build/tools/make-standalone-toolchain.sh 2014-10-24 23:46:22.544928306 +0200
@@ -194,6 +194,9 @@
# Now copy the GCC toolchain prebuilt binaries
run copy_directory "$TOOLCHAIN_PATH" "$TMPDIR"
+# Making it writable again
+chmod -R +w "$TMPDIR"
+
if [ -n "$LLVM_VERSION" ]; then
# Copy the clang/llvm toolchain prebuilt binaries
run copy_directory "$LLVM_TOOLCHAIN_PATH" "$TMPDIR"