123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132 |
- #!/bin/bash
- cores=`grep "^processor" /proc/cpuinfo 2>/dev/null |wc -l`
- [ -n "$cores" ] && [ "$cores" -gt 0 ] || cores=1
- CA="${2:-}"
- BUILD_DIRECTORY="${1:-/tmp}"
- PREFIX="$BUILD_DIRECTORY/aria2_build"
- C_COMPILER="gcc"
- CXX_COMPILER="g++"
- DOWNLOADER() {
- [ "$#" -eq 2 ] || return
- rm -rf "./$2"
- mkdir -p "./$2"
- wget -qO- "$1" |tar -zxv --strip-components 1 -C "./$2"
- }
- MOD() {
- [ "$#" -eq 5 ] || return
- sed --version >/dev/null 2>&1
- [ $? -eq 0 ] && ext="" || ext=".bak"
- n=`grep -on "$2" "$1" |cut -d':' -f1`
- sed -i "$ext" "$(($n+$3))s/$4/$5/" "$1"
- }
- ## DEPENDENCES ##
- OPENSSL="https://www.openssl.org/source/openssl-1.1.1o.tar.gz"
- ZLIB="http://sourceforge.net/projects/libpng/files/zlib/1.2.11/zlib-1.2.11.tar.gz"
- EXPAT="https://github.com/libexpat/libexpat/releases/download/R_2_4_8/expat-2.4.8.tar.gz"
- SQLITE3="https://sqlite.org/2021/sqlite-autoconf-3360000.tar.gz"
- C_ARES="https://c-ares.haxx.se/download/c-ares-1.17.2.tar.gz"
- SSH2="https://www.libssh2.org/download/libssh2-1.9.0.tar.gz"
- ARIA2="https://github.com/aria2/aria2/releases/download/release-1.36.0/aria2-1.36.0.tar.gz"
- rm -rf "$PREFIX"
- mkdir -p "$PREFIX"
- # zlib
- cd "$BUILD_DIRECTORY"
- DOWNLOADER "$ZLIB" "zlib"
- cd ./zlib
- PKG_CONFIG_PATH=$PREFIX/lib/pkgconfig/ LD_LIBRARY_PATH=$PREFIX/lib/ CC="$C_COMPILER" CXX="$CXX_COMPILER" ./configure --prefix=$PREFIX --static
- make -j $cores && make install || exit 1
- rm -rf ../zlib
- # expat
- cd "$BUILD_DIRECTORY"
- DOWNLOADER "$EXPAT" "expat"
- cd ./expat
- PKG_CONFIG_PATH=$PREFIX/lib/pkgconfig/ LD_LIBRARY_PATH=$PREFIX/lib/ CC="$C_COMPILER" CXX="$CXX_COMPILER" ./configure --prefix=$PREFIX --enable-static --disable-shared
- make -j $cores && make install || exit 1
- rm -rf ../expat
- # c-ares
- cd "$BUILD_DIRECTORY"
- DOWNLOADER "$C_ARES" "c-ares"
- cd ./c-ares
- PKG_CONFIG_PATH=$PREFIX/lib/pkgconfig/ LD_LIBRARY_PATH=$PREFIX/lib/ CC="$C_COMPILER" CXX="$CXX_COMPILER" ./configure --prefix=$PREFIX --enable-static --disable-shared
- make -j $cores && make install || exit 1
- rm -rf ../c-ares
- # sqlite3
- cd "$BUILD_DIRECTORY"
- DOWNLOADER "$SQLITE3" "sqlite3"
- cd ./sqlite3
- PKG_CONFIG_PATH=$PREFIX/lib/pkgconfig/ LD_LIBRARY_PATH=$PREFIX/lib/ CC="$C_COMPILER" CXX="$CXX_COMPILER" ./configure --prefix=$PREFIX --enable-static --disable-shared
- make -j $cores && make install || exit 1
- rm -rf ../sqlite3
- # openssl build
- cd "$BUILD_DIRECTORY"
- DOWNLOADER "$OPENSSL" "openssl"
- cd ./openssl
- PKG_CONFIG_PATH=$PREFIX/lib/pkgconfig/ LD_LIBRARY_PATH=$PREFIX/lib/ CC="$C_COMPILER" CXX="$CXX_COMPILER" ./config --prefix=$PREFIX
- make -j $cores && make install || exit 1
- rm -rf ../openssl
- # libssh2
- cd "$BUILD_DIRECTORY"
- DOWNLOADER "$SSH2" "libssh2"
- cd ./libssh2
- rm -rf "$PREFIX/lib/pkgconfig/libssh2.pc"
- PKG_CONFIG_PATH=$PREFIX/lib/pkgconfig/ LD_LIBRARY_PATH=$PREFIX/lib/ CC="$C_COMPILER" CXX="$CXX_COMPILER" ./configure --without-libgcrypt --with-openssl --without-wincng --prefix=$PREFIX --enable-static --disable-shared
- make -j $cores && make install || exit 1
- rm -rf ../libssh2
- # aria2
- cd "$BUILD_DIRECTORY"
- DOWNLOADER "$ARIA2" "aria2"
- cd ./aria2
- # aria2 v1.36.0 mod --> file, tag, offset, src, target
- MOD "src/OptionHandlerFactory.cc" "PREF_SPLIT" "0" '"5",' '"65535",'
- MOD "src/OptionHandlerFactory.cc" "PREF_MIN_SPLIT_SIZE" "0" '"20M",' '"8M",'
- MOD "src/OptionHandlerFactory.cc" "PREF_MAX_CONCURRENT_DOWNLOADS" "2" '"5",' '"16",'
- MOD "src/OptionHandlerFactory.cc" "PREF_MAX_CONNECTION_PER_SERVER" "2" '"1", 1, 16,' '"16", 1, 1024,'
- # MOD "src/OptionHandlerFactory.cc" "PREF_CONTINUE" "0" 'A2_V_FALSE' 'A2_V_TRUE'
- # MOD "src/OptionHandlerFactory.cc" "PREF_ALLOW_OVERWRITE" "1" 'A2_V_FALSE' 'A2_V_TRUE'
- # MOD "src/OptionHandlerFactory.cc" "PREF_AUTO_FILE_RENAMING" "0" 'A2_V_FALSE' 'A2_V_TRUE'
- MOD "src/OptionHandlerFactory.cc" "PREF_DISABLE_IPV6" "11" 'A2_V_FALSE' 'A2_V_TRUE'
- MOD "src/OptionHandlerFactory.cc" "PREF_SUMMARY_INTERVAL" "0" '"60",' '"0",'
- MOD "src/OptionHandlerFactory.cc" "PREF_FILE_ALLOCATION" "0" 'V_PREALLOC,' '\n#ifdef HAVE_SOME_FALLOCATE\nV_FALLOC\n#else\nV_PREALLOC\n#endif \/\/ HAVE_SOME_FALLOCATE\n,\n'
- # aria2 build
- [ ! -n "$CA" ] && [ -f "/etc/ssl/certs/ca-certificates.crt" ] && CA="/etc/ssl/certs/ca-certificates.crt"
- [ ! -n "$CA" ] && [ -f "/usr/local/share/ca-certificates/cacert.pem" ] && CA="/usr/local/share/ca-certificates/cacert.pem"
- PKG_CONFIG_PATH="$PREFIX/lib/pkgconfig/" \
- LD_LIBRARY_PATH="$PREFIX/lib/" \
- CC="$C_COMPILER" \
- CXX="$CXX_COMPILER" \
- ./configure \
- --prefix=$PREFIX \
- --without-libxml2 \
- --without-libgcrypt \
- --without-libnettle \
- --without-gnutls \
- --without-libgmp \
- --with-openssl \
- --with-libssh2 \
- --with-sqlite3 \
- --with-ca-bundle="$CA" \
- --enable-shared=no \
- ARIA2_STATIC=yes
- make -j $cores && make install || exit 1
- rm -rf ../aria2
- # aria2c
- rm -rf "$BUILD_DIRECTORY/aria2c"
- cp "$PREFIX/bin/aria2c" "$BUILD_DIRECTORY/"
- $BUILD_DIRECTORY/aria2c -v && strip -s $BUILD_DIRECTORY/aria2c && ldd $BUILD_DIRECTORY/aria2c
|