diff --git a/Dockerfile b/Dockerfile deleted file mode 100644 index 5eb62e8..0000000 --- a/Dockerfile +++ /dev/null @@ -1,13 +0,0 @@ -FROM debian:stretch - -RUN apt-get update && apt-get -y install \ - bash \ - curl wget \ - pkg-config build-essential make automake autogen libtool \ - libpcre3-dev bison yodl \ - tar xz-utils bzip2 gzip unzip \ - file \ - rsync \ - sed \ - upx \ - golang diff --git a/Makefile b/Makefile index c2f6e6a..a780314 100644 --- a/Makefile +++ b/Makefile @@ -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: diff --git a/docker/android-arm.Dockerfile b/docker/android-arm.Dockerfile index c03742e..5a5fd2b 100644 --- a/docker/android-arm.Dockerfile +++ b/docker/android-arm.Dockerfile @@ -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/ + \ No newline at end of file diff --git a/docker/android-arm64.Dockerfile b/docker/android-arm64.Dockerfile index a3d4b25..2633097 100644 --- a/docker/android-arm64.Dockerfile +++ b/docker/android-arm64.Dockerfile @@ -1,4 +1,4 @@ -FROM cross-compiler:android-arm64 +FROM elementumorg/cross-compiler:android-arm64 RUN mkdir -p /build WORKDIR /build diff --git a/docker/android-x64.Dockerfile b/docker/android-x64.Dockerfile index 6987df3..abf9428 100644 --- a/docker/android-x64.Dockerfile +++ b/docker/android-x64.Dockerfile @@ -1,4 +1,4 @@ -FROM cross-compiler:android-x64 +FROM elementumorg/cross-compiler:android-x64 RUN mkdir -p /build WORKDIR /build diff --git a/docker/android-x86.Dockerfile b/docker/android-x86.Dockerfile index 0378fb7..b691196 100644 --- a/docker/android-x86.Dockerfile +++ b/docker/android-x86.Dockerfile @@ -1,4 +1,4 @@ -FROM cross-compiler:android-x86 +FROM elementumorg/cross-compiler:android-x86 RUN mkdir -p /build WORKDIR /build diff --git a/docker/darwin-x64.Dockerfile b/docker/darwin-x64.Dockerfile index b061f2e..3387a34 100644 --- a/docker/darwin-x64.Dockerfile +++ b/docker/darwin-x64.Dockerfile @@ -1,4 +1,4 @@ -FROM cross-compiler:darwin-x64 +FROM elementumorg/cross-compiler:darwin-x64 RUN mkdir -p /build WORKDIR /build diff --git a/docker/linux-arm64.Dockerfile b/docker/linux-arm64.Dockerfile index 33fbd4f..57abf82 100644 --- a/docker/linux-arm64.Dockerfile +++ b/docker/linux-arm64.Dockerfile @@ -1,4 +1,4 @@ -FROM cross-compiler:linux-arm64 +FROM elementumorg/cross-compiler:linux-arm64 RUN mkdir -p /build WORKDIR /build diff --git a/docker/linux-armv6.Dockerfile b/docker/linux-armv6.Dockerfile index b8d4138..ac27b9a 100644 --- a/docker/linux-armv6.Dockerfile +++ b/docker/linux-armv6.Dockerfile @@ -1,4 +1,4 @@ -FROM cross-compiler:linux-armv6 +FROM elementumorg/cross-compiler:linux-armv6 RUN mkdir -p /build WORKDIR /build diff --git a/docker/linux-armv7.Dockerfile b/docker/linux-armv7.Dockerfile index cebfd6c..fe1f7ad 100644 --- a/docker/linux-armv7.Dockerfile +++ b/docker/linux-armv7.Dockerfile @@ -1,4 +1,4 @@ -FROM cross-compiler:linux-armv7 +FROM elementumorg/cross-compiler:linux-armv7 RUN mkdir -p /build WORKDIR /build diff --git a/docker/linux-x64.Dockerfile b/docker/linux-x64.Dockerfile index 40d8dbd..45fcf01 100644 --- a/docker/linux-x64.Dockerfile +++ b/docker/linux-x64.Dockerfile @@ -1,4 +1,4 @@ -FROM cross-compiler:linux-x64 +FROM elementumorg/cross-compiler:linux-x64 RUN mkdir -p /build WORKDIR /build diff --git a/docker/linux-x86.Dockerfile b/docker/linux-x86.Dockerfile index e80fe90..fbb8f15 100644 --- a/docker/linux-x86.Dockerfile +++ b/docker/linux-x86.Dockerfile @@ -1,4 +1,4 @@ -FROM cross-compiler:linux-x86 +FROM elementumorg/cross-compiler:linux-x86 RUN mkdir -p /build WORKDIR /build diff --git a/docker/scripts/build-golang.sh b/docker/scripts/build-golang.sh index bb4df94..054bfa7 100755 --- a/docker/scripts/build-golang.sh +++ b/docker/scripts/build-golang.sh @@ -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} \ @@ -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 diff --git a/docker/scripts/build-libtorrent.sh b/docker/scripts/build-libtorrent.sh index ca378b0..74c73ca 100755 --- a/docker/scripts/build-libtorrent.sh +++ b/docker/scripts/build-libtorrent.sh @@ -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` diff --git a/docker/scripts/build-openssl.sh b/docker/scripts/build-openssl.sh index bb50bb8..36e762a 100755 --- a/docker/scripts/build-openssl.sh +++ b/docker/scripts/build-openssl.sh @@ -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` diff --git a/docker/scripts/build-swig.sh b/docker/scripts/build-swig.sh index 1203a67..e064e0f 100755 --- a/docker/scripts/build-swig.sh +++ b/docker/scripts/build-swig.sh @@ -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` diff --git a/docker/windows-x64.Dockerfile b/docker/windows-x64.Dockerfile index 23cc562..4fdffae 100644 --- a/docker/windows-x64.Dockerfile +++ b/docker/windows-x64.Dockerfile @@ -1,4 +1,4 @@ -FROM cross-compiler:windows-x64 +FROM elementumorg/cross-compiler:windows-x64 RUN mkdir -p /build WORKDIR /build diff --git a/docker/windows-x86.Dockerfile b/docker/windows-x86.Dockerfile index 5f4484e..9d18f2f 100644 --- a/docker/windows-x86.Dockerfile +++ b/docker/windows-x86.Dockerfile @@ -1,4 +1,4 @@ -FROM cross-compiler:windows-x86 +FROM elementumorg/cross-compiler:windows-x86 RUN mkdir -p /build WORKDIR /build