aria2.sh 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  1. #!/bin/bash
  2. cores=`grep "^processor" /proc/cpuinfo 2>/dev/null |wc -l`
  3. [ -n "$cores" ] && [ "$cores" -gt 0 ] || cores=1
  4. CA="${2:-}"
  5. BUILD_DIRECTORY="${1:-/tmp}"
  6. PREFIX="$BUILD_DIRECTORY/aria2_build"
  7. C_COMPILER="gcc"
  8. CXX_COMPILER="g++"
  9. DOWNLOADER() {
  10. [ "$#" -eq 2 ] || return
  11. rm -rf "./$2"
  12. mkdir -p "./$2"
  13. wget -qO- "$1" |tar -zxv --strip-components 1 -C "./$2"
  14. }
  15. MOD() {
  16. [ "$#" -eq 5 ] || return
  17. sed --version >/dev/null 2>&1
  18. [ $? -eq 0 ] && ext="" || ext=".bak"
  19. n=`grep -on "$2" "$1" |cut -d':' -f1`
  20. sed -i "$ext" "$(($n+$3))s/$4/$5/" "$1"
  21. }
  22. ## DEPENDENCES ##
  23. OPENSSL="https://www.openssl.org/source/openssl-1.1.1o.tar.gz"
  24. ZLIB="http://sourceforge.net/projects/libpng/files/zlib/1.2.11/zlib-1.2.11.tar.gz"
  25. EXPAT="https://github.com/libexpat/libexpat/releases/download/R_2_4_8/expat-2.4.8.tar.gz"
  26. SQLITE3="https://sqlite.org/2021/sqlite-autoconf-3360000.tar.gz"
  27. C_ARES="https://c-ares.haxx.se/download/c-ares-1.17.2.tar.gz"
  28. SSH2="https://www.libssh2.org/download/libssh2-1.9.0.tar.gz"
  29. ARIA2="https://github.com/aria2/aria2/releases/download/release-1.36.0/aria2-1.36.0.tar.gz"
  30. rm -rf "$PREFIX"
  31. mkdir -p "$PREFIX"
  32. # zlib
  33. cd "$BUILD_DIRECTORY"
  34. DOWNLOADER "$ZLIB" "zlib"
  35. cd ./zlib
  36. PKG_CONFIG_PATH=$PREFIX/lib/pkgconfig/ LD_LIBRARY_PATH=$PREFIX/lib/ CC="$C_COMPILER" CXX="$CXX_COMPILER" ./configure --prefix=$PREFIX --static
  37. make -j $cores && make install || exit 1
  38. rm -rf ../zlib
  39. # expat
  40. cd "$BUILD_DIRECTORY"
  41. DOWNLOADER "$EXPAT" "expat"
  42. cd ./expat
  43. PKG_CONFIG_PATH=$PREFIX/lib/pkgconfig/ LD_LIBRARY_PATH=$PREFIX/lib/ CC="$C_COMPILER" CXX="$CXX_COMPILER" ./configure --prefix=$PREFIX --enable-static --disable-shared
  44. make -j $cores && make install || exit 1
  45. rm -rf ../expat
  46. # c-ares
  47. cd "$BUILD_DIRECTORY"
  48. DOWNLOADER "$C_ARES" "c-ares"
  49. cd ./c-ares
  50. PKG_CONFIG_PATH=$PREFIX/lib/pkgconfig/ LD_LIBRARY_PATH=$PREFIX/lib/ CC="$C_COMPILER" CXX="$CXX_COMPILER" ./configure --prefix=$PREFIX --enable-static --disable-shared
  51. make -j $cores && make install || exit 1
  52. rm -rf ../c-ares
  53. # sqlite3
  54. cd "$BUILD_DIRECTORY"
  55. DOWNLOADER "$SQLITE3" "sqlite3"
  56. cd ./sqlite3
  57. PKG_CONFIG_PATH=$PREFIX/lib/pkgconfig/ LD_LIBRARY_PATH=$PREFIX/lib/ CC="$C_COMPILER" CXX="$CXX_COMPILER" ./configure --prefix=$PREFIX --enable-static --disable-shared
  58. make -j $cores && make install || exit 1
  59. rm -rf ../sqlite3
  60. # openssl build
  61. cd "$BUILD_DIRECTORY"
  62. DOWNLOADER "$OPENSSL" "openssl"
  63. cd ./openssl
  64. PKG_CONFIG_PATH=$PREFIX/lib/pkgconfig/ LD_LIBRARY_PATH=$PREFIX/lib/ CC="$C_COMPILER" CXX="$CXX_COMPILER" ./config --prefix=$PREFIX
  65. make -j $cores && make install || exit 1
  66. rm -rf ../openssl
  67. # libssh2
  68. cd "$BUILD_DIRECTORY"
  69. DOWNLOADER "$SSH2" "libssh2"
  70. cd ./libssh2
  71. rm -rf "$PREFIX/lib/pkgconfig/libssh2.pc"
  72. 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
  73. make -j $cores && make install || exit 1
  74. rm -rf ../libssh2
  75. # aria2
  76. cd "$BUILD_DIRECTORY"
  77. DOWNLOADER "$ARIA2" "aria2"
  78. cd ./aria2
  79. # aria2 v1.36.0 mod --> file, tag, offset, src, target
  80. MOD "src/OptionHandlerFactory.cc" "PREF_SPLIT" "0" '"5",' '"65535",'
  81. MOD "src/OptionHandlerFactory.cc" "PREF_MIN_SPLIT_SIZE" "0" '"20M",' '"8M",'
  82. MOD "src/OptionHandlerFactory.cc" "PREF_MAX_CONCURRENT_DOWNLOADS" "2" '"5",' '"16",'
  83. MOD "src/OptionHandlerFactory.cc" "PREF_MAX_CONNECTION_PER_SERVER" "2" '"1", 1, 16,' '"16", 1, 1024,'
  84. # MOD "src/OptionHandlerFactory.cc" "PREF_CONTINUE" "0" 'A2_V_FALSE' 'A2_V_TRUE'
  85. # MOD "src/OptionHandlerFactory.cc" "PREF_ALLOW_OVERWRITE" "1" 'A2_V_FALSE' 'A2_V_TRUE'
  86. # MOD "src/OptionHandlerFactory.cc" "PREF_AUTO_FILE_RENAMING" "0" 'A2_V_FALSE' 'A2_V_TRUE'
  87. MOD "src/OptionHandlerFactory.cc" "PREF_DISABLE_IPV6" "11" 'A2_V_FALSE' 'A2_V_TRUE'
  88. MOD "src/OptionHandlerFactory.cc" "PREF_SUMMARY_INTERVAL" "0" '"60",' '"0",'
  89. 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'
  90. # aria2 build
  91. [ ! -n "$CA" ] && [ -f "/etc/ssl/certs/ca-certificates.crt" ] && CA="/etc/ssl/certs/ca-certificates.crt"
  92. [ ! -n "$CA" ] && [ -f "/usr/local/share/ca-certificates/cacert.pem" ] && CA="/usr/local/share/ca-certificates/cacert.pem"
  93. PKG_CONFIG_PATH="$PREFIX/lib/pkgconfig/" \
  94. LD_LIBRARY_PATH="$PREFIX/lib/" \
  95. CC="$C_COMPILER" \
  96. CXX="$CXX_COMPILER" \
  97. ./configure \
  98. --prefix=$PREFIX \
  99. --without-libxml2 \
  100. --without-libgcrypt \
  101. --without-libnettle \
  102. --without-gnutls \
  103. --without-libgmp \
  104. --with-openssl \
  105. --with-libssh2 \
  106. --with-sqlite3 \
  107. --with-ca-bundle="$CA" \
  108. --enable-shared=no \
  109. ARIA2_STATIC=yes
  110. make -j $cores && make install || exit 1
  111. rm -rf ../aria2
  112. # aria2c
  113. rm -rf "$BUILD_DIRECTORY/aria2c"
  114. cp "$PREFIX/bin/aria2c" "$BUILD_DIRECTORY/"
  115. $BUILD_DIRECTORY/aria2c -v && strip -s $BUILD_DIRECTORY/aria2c && ldd $BUILD_DIRECTORY/aria2c