Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Docker refactoring #3

Draft
wants to merge 2 commits into
base: master
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 0 additions & 13 deletions Dockerfile

This file was deleted.

2 changes: 1 addition & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -189,7 +189,7 @@ env:
--build-arg GOLANG_BOOTSTRAP_VERSION=$(GOLANG_BOOTSTRAP_VERSION) \
--build-arg GOLANG_BOOTSTRAP_SHA256=$(GOLANG_BOOTSTRAP_SHA256) \
--build-arg LIBTORRENT_VERSION=$(LIBTORRENT_VERSION) \
-t $(DOCKER_IMAGE):$(PLATFORM) \
-t $(PROJECT)/$(DOCKER_IMAGE):$(PLATFORM) \
-f docker/$(PLATFORM).Dockerfile docker

envs:
Expand Down
161 changes: 102 additions & 59 deletions docker/android-arm.Dockerfile
Original file line number Diff line number Diff line change
@@ -1,59 +1,102 @@
FROM cross-compiler:android-arm

RUN mkdir -p /build
WORKDIR /build

ARG BOOST_VERSION
ARG BOOST_VERSION_FILE
ARG BOOST_SHA256
ARG OPENSSL_VERSION
ARG OPENSSL_SHA256
ARG SWIG_VERSION
ARG SWIG_SHA256
ARG GOLANG_VERSION
ARG GOLANG_SRC_URL
ARG GOLANG_SRC_SHA256
ARG GOLANG_BOOTSTRAP_VERSION
ARG GOLANG_BOOTSTRAP_URL
ARG GOLANG_BOOTSTRAP_SHA256
ARG LIBTORRENT_VERSION

COPY scripts/common.sh /build/

# Install Boost.System
COPY scripts/build-boost.sh /build/
ENV BOOST_CC clang
ENV BOOST_CXX clang++
ENV BOOST_OS android
ENV BOOST_TARGET_OS linux
ENV BOOST_OPTS cxxflags=-fPIC cflags=-fPIC
RUN ./build-boost.sh

# Install OpenSSL
COPY scripts/build-openssl.sh /build/
ENV OPENSSL_OPTS linux-armv4
RUN ./build-openssl.sh

# Install SWIG
COPY scripts/build-swig.sh /build/
RUN ./build-swig.sh

# Install Golang
COPY scripts/build-golang.sh /build/
ENV GOROOT_BOOTSTRAP /usr/go
ENV GOLANG_CC ${CROSS_TRIPLE}-clang
ENV GOLANG_CXX ${CROSS_TRIPLE}-clang++
ENV GOLANG_OS android
ENV GOLANG_ARCH arm
ENV GOLANG_ARM 7
RUN ./build-golang.sh
ENV PATH ${PATH}:/usr/local/go/bin

# Install libtorrent
COPY scripts/build-libtorrent.sh /build/
ENV LT_CC ${CROSS_TRIPLE}-clang
ENV LT_CXX ${CROSS_TRIPLE}-clang++
ENV LT_PTHREADS TRUE
ENV LT_FLAGS -fPIC -DINT64_MAX=0x7fffffffffffffffLL -DINT16_MAX=32767 -DINT16_MIN=-32768 -DTORRENT_PRODUCTION_ASSERTS
ENV LT_CXXFLAGS -Wno-macro-redefined -Wno-c++11-extensions
RUN ./build-libtorrent.sh
FROM elementumorg/cross-compiler:android-arm as golang
WORKDIR /golang

ARG GOLANG_VERSION
ARG GOLANG_SRC_URL
ARG GOLANG_SRC_SHA256
ARG GOLANG_BOOTSTRAP_VERSION
ARG GOLANG_BOOTSTRAP_URL
ARG GOLANG_BOOTSTRAP_SHA256

# Install Golang
COPY scripts/common.sh .
COPY scripts/build-golang.sh .
ENV GOROOT_BOOTSTRAP /usr/go
ENV GOLANG_CC ${CROSS_TRIPLE}-clang
ENV GOLANG_CXX ${CROSS_TRIPLE}-clang++
ENV GOLANG_OS android
ENV GOLANG_ARCH arm
ENV GOLANG_ARM 7
RUN ./build-golang.sh

FROM elementumorg/cross-compiler:android-arm as swig
WORKDIR /libs/swig

ARG SWIG_VERSION
ARG SWIG_SHA256

# Install SWIG
COPY scripts/common.sh .
COPY scripts/build-swig.sh .
RUN ./build-swig.sh

FROM elementumorg/cross-compiler:android-arm as boost
WORKDIR /libs/boost

ARG BOOST_VERSION
ARG BOOST_VERSION_FILE
ARG BOOST_SHA256

# Install Boost.System
COPY scripts/common.sh .
COPY scripts/build-boost.sh .
ENV BOOST_CC clang
ENV BOOST_CXX clang++
ENV BOOST_OS android
ENV BOOST_TARGET_OS linux
ENV BOOST_OPTS cxxflags=-fPIC cflags=-fPIC
RUN ./build-boost.sh

FROM elementumorg/cross-compiler:android-arm as openssl
WORKDIR /libs/openssl

ARG OPENSSL_VERSION
ARG OPENSSL_SHA256

# Install OpenSSL
COPY scripts/common.sh .
COPY scripts/build-openssl.sh .
ENV OPENSSL_OPTS linux-armv4
RUN ./build-openssl.sh

FROM elementumorg/cross-compiler:android-arm as libtorrent
WORKDIR /libs/libtorrent

COPY --from=boost ${CROSS_ROOT}/include/boost ${CROSS_ROOT}/include/boost
COPY --from=boost ${CROSS_ROOT}/lib/libboost*.a ${CROSS_ROOT}/lib/
COPY --from=openssl /libs/openssl/installed ${CROSS_ROOT}

ARG LIBTORRENT_VERSION

# Install libtorrent
COPY scripts/common.sh .
COPY scripts/build-libtorrent.sh .
ENV LT_CC ${CROSS_TRIPLE}-clang
ENV LT_CXX ${CROSS_TRIPLE}-clang++
ENV LT_PTHREADS TRUE
ENV LT_FLAGS -fPIC -DINT64_MAX=0x7fffffffffffffffLL -DINT16_MAX=32767 -DINT16_MIN=-32768 -DTORRENT_PRODUCTION_ASSERTS
ENV LT_CXXFLAGS -Wno-macro-redefined -Wno-c++11-extensions
RUN ./build-libtorrent.sh


FROM elementumorg/cross-compiler:android-arm
# Install Golang
COPY --from=golang /golang/go /usr/local/go
ENV PATH ${PATH}:/usr/local/go/bin

# Install Boost.System
COPY --from=boost ${CROSS_ROOT}/include/boost ${CROSS_ROOT}/include/boost
COPY --from=boost ${CROSS_ROOT}/lib/libboost*.a ${CROSS_ROOT}/lib/

# Install OpenSSL
COPY --from=openssl /libs/openssl/installed ${CROSS_ROOT}

# Install SWIG
COPY --from=swig /libs/swig/installed /libs/swig/installed
ENV PATH ${PATH}:/libs/swig/installed/bin

# Install libtorrent
COPY --from=libtorrent ${CROSS_ROOT}/include/libtorrent ${CROSS_ROOT}/include/libtorrent
COPY --from=libtorrent ${CROSS_ROOT}/lib/libtorrent*.a ${CROSS_ROOT}/lib/
COPY --from=libtorrent ${CROSS_ROOT}/lib/pkgconfig/libtorrent*.pc ${CROSS_ROOT}/lib/pkgconfig/

16 changes: 8 additions & 8 deletions docker/scripts/build-golang.sh
Original file line number Diff line number Diff line change
Expand Up @@ -4,25 +4,25 @@ set -ex
scripts_path=$(dirname "$(readlink -f "$0")")
source "${scripts_path}/common.sh"

mkdir -p ${CROSS_ROOT}/bootstrap
mkdir -p /golang/bootstrap
if [ ! -f "golang-bootstrap.tar.gz" ]; then
wget -q "https://dl.google.com/go/go${GOLANG_BOOTSTRAP_VERSION}.tar.gz" -O golang-bootstrap.tar.gz
fi
echo "$GOLANG_BOOTSTRAP_SHA256 golang-bootstrap.tar.gz" | sha256sum -c -
tar -C ${CROSS_ROOT}/bootstrap -xzf golang-bootstrap.tar.gz
tar -C /golang/bootstrap -xzf golang-bootstrap.tar.gz
rm golang-bootstrap.tar.gz
cd ${CROSS_ROOT}/bootstrap/go/src
cd /golang/bootstrap/go/src
run ./make.bash
export GOROOT_BOOTSTRAP=${CROSS_ROOT}/bootstrap/go
export GOROOT_BOOTSTRAP=/golang/bootstrap/go

cd /build
cd /golang
if [ ! -f "golang.tar.gz" ]; then
wget -q "https://golang.org/dl/go${GOLANG_VERSION}.src.tar.gz" -O golang.tar.gz
fi
echo "$GOLANG_SRC_SHA256 golang.tar.gz" | sha256sum -c -
tar -C ${CROSS_ROOT} -xzf golang.tar.gz
tar -C /golang -xzf golang.tar.gz
rm golang.tar.gz
cd ${CROSS_ROOT}/go/src
cd /golang/go/src
run ./make.bash

CC_FOR_TARGET=${GOLANG_CC} \
Expand All @@ -32,4 +32,4 @@ CC_FOR_TARGET=${GOLANG_CC} \
GOARM=${GOLANG_ARM} \
CGO_ENABLED=1 \
./make.bash --no-clean
rm -rf ${CROSS_ROOT}/bootstrap ${CROSS_ROOT}/go/pkg/bootstrap
rm -rf /golang/bootstrap /golang/go/pkg/bootstrap
1 change: 1 addition & 0 deletions docker/scripts/build-libtorrent.sh
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ run ./configure \
--disable-deprecated-functions \
--host=${CROSS_TRIPLE} \
--prefix=${CROSS_ROOT} \
--with-openssl=${CROSS_ROOT} \
--with-boost=${CROSS_ROOT} --with-boost-libdir=${CROSS_ROOT}/lib ${LT_OPTS}
run make -j $(cat /proc/cpuinfo | grep processor | wc -l) && make install
rm -rf `pwd`
2 changes: 1 addition & 1 deletion docker/scripts/build-openssl.sh
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ echo "$OPENSSL_SHA256 openssl-${OPENSSL_VERSION}.tar.gz" | sha256sum -c -
tar -xzf openssl-${OPENSSL_VERSION}.tar.gz
rm openssl-${OPENSSL_VERSION}.tar.gz
cd openssl-${OPENSSL_VERSION}/
CROSS_COMPILE=${CROSS_TRIPLE}- run ./Configure threads no-shared ${OPENSSL_OPTS} --prefix=${CROSS_ROOT}
CROSS_COMPILE=${CROSS_TRIPLE}- run ./Configure threads no-shared ${OPENSSL_OPTS} --prefix=/libs/openssl/installed
run make -j $(cat /proc/cpuinfo | grep processor | wc -l)
run make install
rm -rf `pwd`
2 changes: 1 addition & 1 deletion docker/scripts/build-swig.sh
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ tar -xzf swig-${SWIG_VERSION}.tar.gz
rm swig-${SWIG_VERSION}.tar.gz
cd swig-${SWIG_VERSION}/
run ./autogen.sh
run ./configure
run ./configure --prefix=/libs/swig/installed
run make -j $(cat /proc/cpuinfo | grep processor | wc -l)
run make install
rm -rf `pwd`