mirror of
https://github.com/aria2/aria2.git
synced 2026-04-02 10:55:00 +00:00
This is slightly different from the current procedure because now android and mingw binaries are built from source code fetched from the remote repository.
148 lines
4.4 KiB
Docker
148 lines
4.4 KiB
Docker
# vim: ft=dockerfile:
|
|
# Dockerfile to build aria2 android binary
|
|
#
|
|
# $ sudo docker build -t aria2-android - < Dockerfile.android
|
|
#
|
|
# After successful build, android binary is located under
|
|
# /root/build/aria2. You can copy the binary using docker cp. For
|
|
# example, to copy aria2c binary to host file system location
|
|
# /path/to/dest, do this:
|
|
#
|
|
# $ sudo docker run --rm -it -v /path/to/dest:/out aria2-android cp /root/build/aria2/src/aria2c /out
|
|
|
|
FROM ubuntu:22.04
|
|
MAINTAINER Tatsuhiro Tsujikawa
|
|
|
|
WORKDIR /root
|
|
RUN apt-get update && \
|
|
apt-get install -y --no-install-recommends \
|
|
unzip bzip2 make binutils autoconf automake autotools-dev autopoint \
|
|
libtool pkg-config git curl ca-certificates && \
|
|
rm -rf /var/cache/apt/*
|
|
|
|
# NDK version
|
|
ENV NDK_VERSION=r25c
|
|
ENV NDK=/root/android-ndk-$NDK_VERSION
|
|
ENV TOOLCHAIN=$NDK/toolchains/llvm/prebuilt/linux-x86_64 \
|
|
HOST=aarch64-linux-android \
|
|
API=33
|
|
ENV AR=$TOOLCHAIN/bin/llvm-ar \
|
|
CC=$TOOLCHAIN/bin/$HOST$API-clang \
|
|
CXX=$TOOLCHAIN/bin/$HOST$API-clang++ \
|
|
LD=$TOOLCHAIN/bin/ld \
|
|
RANDLIB=$TOOLCHAIN/bin/llvm-ranlib \
|
|
STRIP=$TOOLCHAIN/bin/llvm-strip \
|
|
PREFIX=/root/usr/local
|
|
|
|
# Download NDK
|
|
RUN curl -L -O https://dl.google.com/android/repository/android-ndk-$NDK_VERSION-linux.zip && \
|
|
unzip -q android-ndk-$NDK_VERSION-linux.zip && \
|
|
rm android-ndk-$NDK_VERSION-linux.zip
|
|
|
|
# aria2 version
|
|
ARG ARIA2_VERSION=master
|
|
|
|
# Library versions
|
|
ENV OPENSSL_VERSION=1.1.1w
|
|
ENV OPENSSL_ARCHIVE=openssl-$OPENSSL_VERSION.tar.gz
|
|
ENV OPENSSL_URI=https://www.openssl.org/source/$OPENSSL_ARCHIVE
|
|
|
|
ENV LIBEXPAT_VERSION=2.5.0
|
|
ENV LIBEXPAT_ARCHIVE=expat-$LIBEXPAT_VERSION.tar.bz2
|
|
ENV LIBEXPAT_URI=https://github.com/libexpat/libexpat/releases/download/R_2_5_0/$LIBEXPAT_ARCHIVE
|
|
|
|
ENV ZLIB_VERSION=1.3
|
|
ENV ZLIB_ARCHIVE=zlib-$ZLIB_VERSION.tar.gz
|
|
ENV ZLIB_URI=https://zlib.net/$ZLIB_ARCHIVE
|
|
|
|
ENV CARES_VERSION=1.19.1
|
|
ENV CARES_ARCHIVE=c-ares-$CARES_VERSION.tar.gz
|
|
ENV CARES_URI=https://c-ares.haxx.se/download/$CARES_ARCHIVE
|
|
|
|
ENV LIBSSH2_VERSION=1.11.0
|
|
ENV LIBSSH2_ARCHIVE=libssh2-$LIBSSH2_VERSION.tar.bz2
|
|
ENV LIBSSH2_URI=https://libssh2.org/download/$LIBSSH2_ARCHIVE
|
|
|
|
# Build OpenSSL
|
|
WORKDIR /root/build
|
|
RUN curl -L -O $OPENSSL_URI && tar xf $OPENSSL_ARCHIVE && rm $OPENSSL_ARCHIVE
|
|
|
|
WORKDIR /root/build/openssl-$OPENSSL_VERSION
|
|
RUN export ANDROID_NDK_HOME=$NDK PATH=$TOOLCHAIN/bin:$PATH && \
|
|
./Configure no-shared --prefix=$PREFIX android-arm64 && \
|
|
make -j$(nproc) && make install_sw
|
|
|
|
# Build libexpat
|
|
WORKDIR /root/build
|
|
RUN curl -L -O $LIBEXPAT_URI && tar xf $LIBEXPAT_ARCHIVE && rm $LIBEXPAT_ARCHIVE
|
|
|
|
WORKDIR /root/build/expat-$LIBEXPAT_VERSION
|
|
RUN ./configure \
|
|
--host=$HOST \
|
|
--build=`dpkg-architecture -qDEB_BUILD_GNU_TYPE` \
|
|
--prefix=$PREFIX \
|
|
--disable-shared && \
|
|
make -j$(nproc) install
|
|
|
|
# Build zlib
|
|
WORKDIR /root/build
|
|
RUN curl -L -O $ZLIB_URI && tar xf $ZLIB_ARCHIVE && rm $ZLIB_ARCHIVE
|
|
|
|
WORKDIR /root/build/zlib-$ZLIB_VERSION
|
|
RUN ./configure \
|
|
--prefix=$PREFIX \
|
|
--libdir=$PREFIX/lib \
|
|
--includedir=$PREFIX/include \
|
|
--static && \
|
|
make -j$(nproc) install
|
|
|
|
# Build c-ares
|
|
WORKDIR /root/build
|
|
RUN curl -L -O $CARES_URI && tar xf $CARES_ARCHIVE && rm $CARES_ARCHIVE
|
|
|
|
WORKDIR /root/build/c-ares-$CARES_VERSION
|
|
RUN ./configure \
|
|
--host=$HOST \
|
|
--build=`dpkg-architecture -qDEB_BUILD_GNU_TYPE` \
|
|
--prefix=$PREFIX \
|
|
--disable-shared && \
|
|
make -j$(nproc) install
|
|
|
|
# Build libssh2
|
|
WORKDIR /root/build
|
|
RUN curl -L -O $LIBSSH2_URI && tar xf $LIBSSH2_ARCHIVE && rm $LIBSSH2_ARCHIVE
|
|
|
|
WORKDIR /root/build/libssh2-$LIBSSH2_VERSION
|
|
RUN ./configure \
|
|
--host=$HOST \
|
|
--build=`dpkg-architecture -qDEB_BUILD_GNU_TYPE` \
|
|
--prefix=$PREFIX \
|
|
--disable-shared && \
|
|
make -j$(nproc) install
|
|
|
|
# Build aria2
|
|
WORKDIR /root/build
|
|
RUN git clone -b $ARIA2_VERSION --depth 1 https://github.com/aria2/aria2
|
|
|
|
WORKDIR /root/build/aria2
|
|
RUN autoreconf -i && \
|
|
./configure \
|
|
--host=$HOST \
|
|
--build=`dpkg-architecture -qDEB_BUILD_GNU_TYPE` \
|
|
--disable-nls \
|
|
--without-gnutls \
|
|
--with-openssl \
|
|
--without-sqlite3 \
|
|
--without-libxml2 \
|
|
--with-libexpat \
|
|
--with-libcares \
|
|
--with-libz \
|
|
--with-libssh2 \
|
|
CXXFLAGS="-Os -g" \
|
|
CFLAGS="-Os -g" \
|
|
CPPFLAGS="-fPIE" \
|
|
LDFLAGS="-fPIE -pie -L$PREFIX/lib -static-libstdc++" \
|
|
PKG_CONFIG_LIBDIR="$PREFIX/lib/pkgconfig" && \
|
|
make -j$(nproc) && \
|
|
$STRIP src/aria2c
|