build_osx_release.sh 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. #!/bin/bash
  2. # Generate an OSX universal binary (32+64b intel) DMG with Installer & DMG
  3. #
  4. # This script is supposed to be run from the aria2 source directory.
  5. # It has to be run on an OSX 10.6 host with Developer Tools installed.
  6. #
  7. # Additionally, Macports must be installed with the following packages:
  8. #
  9. # autoconf autoconf213 autogen +universal automake coreutils +universal
  10. # expat +universal gettext +universal gmake +universal gnutls +universal
  11. # icu +universal libgcrypt +universal libxml2 +universal m4 +universal
  12. # openssl +universal pkgconfig +universal
  13. #
  14. # Author: renaud gaudin
  15. # path definitions.
  16. A2_VERSION=`cat config.h |grep "define VERSION" | cut -f 2 -d '"' -`
  17. CURRENT_DIR=`pwd`
  18. PACKAGE_ROOT=${CURRENT_DIR}/aria_build
  19. BUILD_TARGET=${PACKAGE_ROOT}/usr
  20. PACKAGE_RESOURCES=${CURRENT_DIR}/osx_resources
  21. TARGET_NAME=aria2-${A2_VERSION}
  22. PKG_NAME=${TARGET_NAME}.pkg
  23. DMG_NAME=${TARGET_NAME}.dmg
  24. UNINST_NAME="Uninstall aria2.applescript"
  25. DMG_SKEL=aria2_dmg
  26. # build aria2 mostly static
  27. mkdir -p $BUILD_TARGET
  28. export LIBS="-lcrypto -lz -lpthread -ldl"
  29. export LDFLAGS="-static-libstdc++"
  30. CC="gcc -arch i386 -arch x86_64" CXX="g++ -arch i386 -arch x86_64" CPP="gcc -E" CXXCPP="g++ -E" ./configure --without-libxml2 --without-gnutls --with-libexpat --with-openssl --prefix=$BUILD_TARGET
  31. make
  32. # install into our target
  33. make install
  34. # create pkg installer
  35. mkdir -p ${PACKAGE_RESOURCES}
  36. cp -av README.html ${PACKAGE_RESOURCES}/Welcome.html
  37. cp -av COPYING ${PACKAGE_RESOURCES}/License.txt
  38. cp -av NEWS ${PACKAGE_RESOURCES}/ReadMe.txt
  39. rm -rf ${PKG_NAME}
  40. /Developer/Applications/Utilities/PackageMaker.app/Contents/MacOS/PackageMaker --root ${PACKAGE_ROOT} --id aria2 --version ${A2_VERSION} --title "aria2" --domain system --resources ${PACKAGE_RESOURCES} --out ${PKG_NAME}
  41. # create uninstaller tool
  42. DEL_STR=`find ${PACKAGE_ROOT}/ -type f | sed -e "s,$PACKAGE_ROOT,sudo rm -f ," | tr '\n' ' ; '`
  43. echo "(do shell script \"mkdir -p /var/db/sudo/$USER; touch /var/db/sudo/$USER\" with administrator privileges) & (do shell script \"${DEL_STR}\")" > "$UNINST_NAME"
  44. # create dmg with installer and uninstall inside
  45. rm -rf ${DMG_SKEL}
  46. mkdir -p ${DMG_SKEL}
  47. cp -av ${PKG_NAME} ${DMG_SKEL}/
  48. cp -av "${UNINST_NAME}" ${DMG_SKEL}/
  49. rm -f ${DMG_NAME}
  50. hdiutil create -megabytes 20 -fs HFS+ -volname aria2 -nospotlight -srcfolder ${DMG_SKEL} ${DMG_NAME}