build.sh 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. #!/bin/bash
  2. ############################################################################
  3. #
  4. # Title: Build Salt Script for macOS
  5. # Authors: CR Oldham, Shane Lee
  6. # Date: December 2015
  7. #
  8. # Description: This script downloads and installs all dependencies and build
  9. # tools required to create a .pkg file for installation on macOS.
  10. # Salt and all dependencies will be installed to /opt/salt. A
  11. # .pkg file will then be created based on the contents of
  12. # /opt/salt
  13. #
  14. # Requirements:
  15. # - Xcode Command Line Tools (xcode-select --install)
  16. #
  17. # Usage:
  18. # This script can be passed 3 parameters
  19. # $1 : <version> : the version of salt to build
  20. # (a git tag, not a branch)
  21. # (defaults to git-repo state)
  22. # $2 : <test mode> : if this script should be run in test mode, this
  23. # disables the longer optimized compile time of python.
  24. # Please DO NOT set to "true" when building a
  25. # release version.
  26. # (defaults to false)
  27. # $3 : <package dir> : the staging area for the package
  28. # defaults to /tmp/salt_pkg
  29. #
  30. # Example:
  31. # The following will build Salt v3001 with an optimized python and
  32. # stage all files in /tmp/custom_pkg:
  33. #
  34. # ./build.sh v3001 false /tmp/custom_pkg
  35. #
  36. ############################################################################
  37. ############################################################################
  38. # Make sure the script is launched with sudo
  39. ############################################################################
  40. if [[ $(id -u) -ne 0 ]]
  41. then
  42. exec sudo /bin/bash -c "$(printf '%q ' "$BASH_SOURCE" "$@")"
  43. fi
  44. ############################################################################
  45. # Check passed parameters, set defaults
  46. ############################################################################
  47. echo -n -e "\033]0;Build: Variables\007"
  48. if [ "$1" == "" ]; then
  49. VERSION=`git describe`
  50. else
  51. VERSION=$1
  52. fi
  53. if [ "$2" == "" ]; then
  54. TEST_MODE="false"
  55. else
  56. TEST_MODE=$2
  57. fi
  58. if [ "$3" == "" ]; then
  59. PKGDIR=/tmp/salt_pkg
  60. else
  61. PKGDIR=$3
  62. fi
  63. ############################################################################
  64. # Additional Parameters Required for the script to function properly
  65. ############################################################################
  66. SRCDIR=`git rev-parse --show-toplevel`
  67. PKGRESOURCES=$SRCDIR/pkg/osx
  68. PYTHON=/opt/salt/bin/python3
  69. CPUARCH=`uname -m`
  70. ############################################################################
  71. # Make sure this is the Salt Repository
  72. ############################################################################
  73. if [[ ! -e "$SRCDIR/.git" ]] && [[ ! -e "$SRCDIR/scripts/salt" ]]; then
  74. echo "This directory doesn't appear to be a git repository."
  75. echo "The macOS build process needs some files from a Git checkout of Salt."
  76. echo "Run this script from the root of the Git checkout."
  77. exit -1
  78. fi
  79. ############################################################################
  80. # Create the Build Environment
  81. ############################################################################
  82. echo -n -e "\033]0;Build: Build Environment\007"
  83. $PKGRESOURCES/build_env.sh $TEST_MODE
  84. if [[ "$?" != "0" ]]; then
  85. echo "Failed to build the environment."
  86. exit -1
  87. fi
  88. ############################################################################
  89. # Install Salt
  90. ############################################################################
  91. echo -n -e "\033]0;Build: Install Salt\007"
  92. rm -rf $SRCDIR/build
  93. rm -rf $SRCDIR/dist
  94. $PYTHON $SRCDIR/setup.py build -e "$PYTHON -E -s"
  95. $PYTHON $SRCDIR/setup.py install
  96. ############################################################################
  97. # Build Package
  98. ############################################################################
  99. echo -n -e "\033]0;Build: Package Salt\007"
  100. $PKGRESOURCES/build_pkg.sh $VERSION $PKGDIR
  101. ############################################################################
  102. # Sign Package
  103. ############################################################################
  104. $PKGRESOURCES/build_sig.sh salt-$VERSION-py3-$CPUARCH.pkg salt-$VERSION-py3-$CPUARCH-signed.pkg