build C# android artifact

pull/15318/head
Jan Tattermusch 7 years ago
parent 27ca06731b
commit 0767878b6e
  1. 2
      src/csharp/experimental/build_native_ext_for_android.sh
  2. 68
      tools/dockerfile/grpc_artifact_android_ndk/Dockerfile
  3. 9
      tools/run_tests/artifacts/artifact_targets.py
  4. 23
      tools/run_tests/artifacts/build_artifact_csharp_android.sh

@ -23,7 +23,7 @@ mkdir -p build
cd build cd build
# set to the location where Android SDK is installed # set to the location where Android SDK is installed
ANDROID_NDK_PATH="$HOME/android-ndk-r16b" # e.g. ANDROID_NDK_PATH="$HOME/android-ndk-r16b"
cmake ../.. \ cmake ../.. \
-DCMAKE_SYSTEM_NAME=Android \ -DCMAKE_SYSTEM_NAME=Android \

@ -0,0 +1,68 @@
# Copyright 2016 gRPC authors.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# Docker file for building gRPC artifacts.
# Recent enough cmake (>=3.9) needed by Android SDK
FROM debian:sid
RUN apt-get update && apt-get install -y debian-keyring && apt-key update
# Install Git and basic packages.
RUN apt-get update && apt-key update && apt-get install -y \
autoconf \
autotools-dev \
build-essential \
bzip2 \
clang \
curl \
gcc \
gcc-multilib \
git \
golang \
libc6 \
libc6-dbg \
libc6-dev \
libgtest-dev \
libtool \
make \
perl \
strace \
python-dev \
python-setuptools \
python-yaml \
telnet \
unzip \
wget \
zip && apt-get clean
# Cmake for cross-compilation
RUN apt-get update && apt-get install -y cmake golang && apt-get clean
##################
# Android NDK
# Download and install Android NDK
RUN wget -q https://dl.google.com/android/repository/android-ndk-r16b-linux-x86_64.zip -O android_ndk.zip \
&& unzip -q android_ndk.zip \
&& rm android_ndk.zip \
&& mv ./android-ndk-r16b /opt
ENV ANDROID_NDK_PATH /opt/android-ndk-r16b
RUN apt-get update && apt-get install -y libpthread-stubs0-dev && apt-get clean
RUN mkdir /var/local/jenkins
# Define the default command.
CMD ["bash"]

@ -222,7 +222,13 @@ class CSharpExtArtifact:
return [] return []
def build_jobspec(self): def build_jobspec(self):
if self.platform == 'windows': if self.arch == 'android':
return create_docker_jobspec(
self.name,
'tools/dockerfile/grpc_artifact_android_ndk',
'tools/run_tests/artifacts/build_artifact_csharp_android.sh',
environ={})
elif self.platform == 'windows':
cmake_arch_option = 'Win32' if self.arch == 'x86' else self.arch cmake_arch_option = 'Win32' if self.arch == 'x86' else self.arch
return create_jobspec( return create_jobspec(
self.name, [ self.name, [
@ -342,6 +348,7 @@ def targets():
for Cls in (CSharpExtArtifact, ProtocArtifact) for Cls in (CSharpExtArtifact, ProtocArtifact)
for platform in ('linux', 'macos', 'windows') for arch in ('x86', 'x64') for platform in ('linux', 'macos', 'windows') for arch in ('x86', 'x64')
] + [ ] + [
CSharpExtArtifact('linux', 'android'),
PythonArtifact('linux', 'x86', 'cp27-cp27m'), PythonArtifact('linux', 'x86', 'cp27-cp27m'),
PythonArtifact('linux', 'x86', 'cp27-cp27mu'), PythonArtifact('linux', 'x86', 'cp27-cp27mu'),
PythonArtifact('linux', 'x86', 'cp34-cp34m'), PythonArtifact('linux', 'x86', 'cp34-cp34m'),

@ -0,0 +1,23 @@
#!/bin/bash
# Copyright 2016 gRPC authors.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
set -ex
cd "$(dirname "$0")/../../.."
src/csharp/experimental/build_native_ext_for_android.sh
mkdir -p "${ARTIFACTS_OUT}"
cp cmake/build/libgrpc_csharp_ext.so "${ARTIFACTS_OUT}"
Loading…
Cancel
Save