build-linux.sh 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. #!/bin/bash
  2. ##############################################################################
  3. # Linux plugin build script
  4. ##############################################################################
  5. #
  6. # This script contains all steps necessary to:
  7. #
  8. # * Build libobs and obs-frontend-api with all required dependencies
  9. # * Build your plugin
  10. # * Create debian package
  11. #
  12. # Parameters:
  13. # -h, --help : Print usage help
  14. # -q, --quiet : Suppress most build process output
  15. # -v, --verbose : Enable more verbose build process output
  16. # -p, --package : Create installer for plugin
  17. # -b, --build-dir : Specify alternative build directory
  18. # (default: build)
  19. #
  20. # Environment Variables (optional):
  21. # OBS_VERSION : OBS Version
  22. #
  23. ##############################################################################
  24. # Halt on errors
  25. set -eE
  26. ## SET UP ENVIRONMENT ##
  27. _RUN_OBS_BUILD_SCRIPT=TRUE
  28. CHECKOUT_DIR="$(git rev-parse --show-toplevel)"
  29. if [ -f "${CHECKOUT_DIR}/CI/include/build_environment.sh" ]; then
  30. source "${CHECKOUT_DIR}/CI/include/build_environment.sh"
  31. fi
  32. PRODUCT_NAME="${PRODUCT_NAME:-obs-plugin}"
  33. DEPS_BUILD_DIR="${CHECKOUT_DIR}/../obs-build-dependencies"
  34. OBS_BUILD_DIR="${CHECKOUT_DIR}/../obs-studio"
  35. source "${CHECKOUT_DIR}/CI/include/build_support.sh"
  36. source "${CHECKOUT_DIR}/CI/include/build_support_linux.sh"
  37. ## DEPENDENCY INSTALLATION ##
  38. source "${CHECKOUT_DIR}/CI/linux/01_install_dependencies.sh"
  39. ## OBS LIBRARY BUILD ##
  40. source "${CHECKOUT_DIR}/CI/linux/02_build_obs_libs.sh"
  41. ## PLUGIN BUILD ##
  42. source "${CHECKOUT_DIR}/CI/linux/03_build_plugin.sh"
  43. ## PLUGIN PACKAGE AND NOTARIZE ##
  44. source "${CHECKOUT_DIR}/CI/linux/04_package_plugin.sh"
  45. ## MAIN SCRIPT FUNCTIONS ##
  46. print_usage() {
  47. echo -e "build_linux.sh - Build script for ${PRODUCT_NAME}\n"
  48. echo -e "Usage: ${0}\n" \
  49. "-h, --help : Print this help\n" \
  50. "-q, --quiet : Suppress most build process output\n" \
  51. "-v, --verbose : Enable more verbose build process output\n" \
  52. "-d, --skip-dependency-checks : Skip dependency checks\n" \
  53. "-p, --package : Create installer for plugin\n" \
  54. "-b, --build-dir : Specify alternative build directory (default: build)\n"
  55. }
  56. obs-build-main() {
  57. while true; do
  58. case "${1}" in
  59. -h | --help ) print_usage; exit 0 ;;
  60. -d | --skip-dependency-checks ) SKIP_DEP_CHECKS=TRUE; shift ;;
  61. -q | --quiet ) export QUIET=TRUE; shift ;;
  62. -v | --verbose ) export VERBOSE=TRUE; shift ;;
  63. -p | --package ) PACKAGE=TRUE; shift ;;
  64. -b | --build-dir ) BUILD_DIR="${2}"; shift 2 ;;
  65. -- ) shift; break ;;
  66. * ) break ;;
  67. esac
  68. done
  69. ensure_dir "${CHECKOUT_DIR}"
  70. step "Fetching version tags..."
  71. git fetch origin --tags
  72. GIT_BRANCH=$(git rev-parse --abbrev-ref HEAD)
  73. GIT_HASH=$(git rev-parse --short HEAD)
  74. GIT_TAG=$(git describe --tags --abbrev=0 2&>/dev/null || true)
  75. FILE_NAME="${PRODUCT_NAME}-${GIT_TAG:-${PRODUCT_VERSION}}-${GIT_HASH}-linux"
  76. if [ -z "${SKIP_DEP_CHECKS}" ]; then
  77. install_dependencies
  78. fi
  79. build_obs_libs
  80. build_obs_plugin
  81. if [ -n "${PACKAGE}" ]; then
  82. package_obs_plugin
  83. fi
  84. cleanup
  85. }
  86. obs-build-main $*