Dockerfile 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. # Dockerfile to build an image with the local version of psiphon-tunnel-core.
  2. #
  3. # See README.md for usage instructions.
  4. # TODO: Switch to debian:testing
  5. FROM ubuntu:12.04
  6. ENV GOVERSION=go1.4
  7. # Install system-level dependencies.
  8. ENV DEBIAN_FRONTEND=noninteractive
  9. RUN echo "debconf shared/accepted-oracle-license-v1-1 select true" | debconf-set-selections && \
  10. echo "debconf shared/accepted-oracle-license-v1-1 seen true" | debconf-set-selections && \
  11. apt-get update && \
  12. apt-get -y install build-essential python-software-properties bzip2 unzip curl \
  13. git subversion mercurial bzr \
  14. libncurses5:i386 libstdc++6:i386 zlib1g:i386 && \
  15. add-apt-repository ppa:webupd8team/java && \
  16. apt-get update && \
  17. apt-get -y install oracle-java7-installer
  18. # Install Ant.
  19. RUN echo "INSTALLING ANT" && \
  20. curl -L https://archive.apache.org/dist/ant/binaries/apache-ant-1.9.4-bin.tar.gz | tar xz -C /usr/local
  21. ENV ANT_HOME=/usr/local/apache-ant-1.9.4
  22. # Install Android SDK.
  23. ENV ANDROID_HOME=/usr/local/android-sdk-linux
  24. RUN echo "INSTALLING ANDROID SDK" && \
  25. curl -L https://dl.google.com/android/android-sdk_r24.0.1-linux.tgz | tar xz -C /usr/local && \
  26. echo y | $ANDROID_HOME/tools/android update sdk --no-ui --all --filter build-tools-21.1.2 && \
  27. echo y | $ANDROID_HOME/tools/android update sdk --no-ui --all --filter platform-tools && \
  28. echo y | $ANDROID_HOME/tools/android update sdk --no-ui --all --filter android-21
  29. # Install Android NDK.
  30. ENV NDK_ROOT=/usr/local/android-ndk-r10d
  31. RUN echo "INSTALLING ANDROID NDK" && \
  32. wget https://dl.google.com/android/ndk/android-ndk-r10d-linux-x86_64.bin && \
  33. chmod a+x android-ndk-r10d-linux-x86_64.bin && ./android-ndk-r10d-linux-x86_64.bin && \
  34. mv android-ndk-r10d /usr/local && \
  35. $NDK_ROOT/build/tools/make-standalone-toolchain.sh --platform=android-9 --arch=arm --install-dir=$NDK_ROOT --system=linux-x86_64
  36. # Install Gradle
  37. # : android-gradle compatibility
  38. # http://tools.android.com/tech-docs/new-build-system/version-compatibility
  39. RUN echo "INSTALLING GRADLE" && \
  40. curl -L https://services.gradle.org/distributions/gradle-2.2.1-all.zip -o /tmp/gradle-2.2.1-all.zip && \
  41. unzip /tmp/gradle-2.2.1-all.zip -d /usr/local && rm /tmp/gradle-2.2.1-all.zip
  42. ENV GRADLE_HOME=/usr/local/gradle-2.2.1
  43. # Update PATH for the above.
  44. ENV PATH=$PATH:$ANDROID_HOME/tools:$ANDROID_HOME/platform-tools:$NDK_ROOT:$ANT_HOME/bin:$GRADLE_HOME/bin
  45. # Install Go.
  46. ENV GOROOT=/go \
  47. GOPATH=/
  48. ENV PATH=$PATH:$GOROOT/bin
  49. RUN echo "INSTALLING GO" && \
  50. curl -L https://github.com/golang/go/archive/$GOVERSION.zip -o /tmp/go.zip && \
  51. unzip /tmp/go.zip && \
  52. rm /tmp/go.zip && \
  53. mv /go-master $GOROOT && \
  54. echo devel > $GOROOT/VERSION && \
  55. cd $GOROOT/src && \
  56. ./all.bash && \
  57. CC_FOR_TARGET=$NDK_ROOT/bin/arm-linux-androideabi-gcc GOOS=android GOARCH=arm GOARM=7 ./make.bash
  58. WORKDIR $GOPATH/src