aria2.sh 3.9 KB

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