mirror of
https://github.com/aria2/aria2.git
synced 2024-11-27 08:00:23 +00:00
Merge pull request #2092 from aria2/dockerfile-android
Add Dockerfile.android
This commit is contained in:
commit
ea6d4240d0
24
.github/workflows/android.yml
vendored
Normal file
24
.github/workflows/android.yml
vendored
Normal file
@ -0,0 +1,24 @@
|
||||
name: android
|
||||
|
||||
on:
|
||||
push:
|
||||
paths:
|
||||
- Dockerfile.android
|
||||
schedule:
|
||||
- cron: '30 1 * * *'
|
||||
|
||||
permissions: read-all
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-22.04
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- name: Set up Docker Buildx
|
||||
uses: docker/setup-buildx-action@v3
|
||||
- name: Build
|
||||
uses: docker/build-push-action@v5
|
||||
with:
|
||||
file: Dockerfile.android
|
||||
context: .
|
147
Dockerfile.android
Normal file
147
Dockerfile.android
Normal file
@ -0,0 +1,147 @@
|
||||
# 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
|
||||
ENV 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 https://github.com/aria2/aria2 -b $ARIA2_VERSION --depth 1
|
||||
|
||||
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
|
Loading…
Reference in New Issue
Block a user