Browse Source
Move GitHub Actions CI scripts into separate files
Move GitHub Actions CI scripts into separate files
Break the workflow into smaller stages (Configure, Build, Install, Package, etc.) so that you can see exactly which stage failed in the GitHub Actions run log. Create a separate Bash CI script for each job stage (configure.sh, build.sh, install.sh, package.sh, etc.) to reduce the size of the main YAML workflow file and enable Bash syntax highlighting. Close #917pull/2/head
committed by
Dmitry Vedenko
12 changed files with 261 additions and 205 deletions
-
260.github/workflows/cmake_build.yml
-
7CMakeLists.txt
-
9cmake-proxies/cmake-modules/AudacityFunctions.cmake
-
25cmake-proxies/cmake-modules/Package.cmake
-
8linux/audacity.sh
-
22scripts/ci/build.sh
-
32scripts/ci/configure.sh
-
49scripts/ci/dependencies.sh
-
25scripts/ci/environment.sh
-
8scripts/ci/install.sh
-
8scripts/ci/package.sh
-
13src/CMakeLists.txt
@ -0,0 +1,25 @@ |
|||
|
|||
set(CPACK_PACKAGE_VERSION_MAJOR "${AUDACITY_VERSION}") # X |
|||
set(CPACK_PACKAGE_VERSION_MINOR "${AUDACITY_RELEASE}") # Y |
|||
set(CPACK_PACKAGE_VERSION_PATCH "${AUDACITY_REVISION}") # Z |
|||
|
|||
# X.Y.Z-alpha-20210615 |
|||
set(CPACK_PACKAGE_VERSION "${AUDACITY_VERSION}.${AUDACITY_RELEASE}.${AUDACITY_REVISION}${AUDACITY_SUFFIX}") |
|||
|
|||
if(NOT AUDACITY_BUILD_LEVEL EQUAL 2) |
|||
# X.Y.Z-alpha-20210615+a1b2c3d |
|||
set(CPACK_PACKAGE_VERSION "${CPACK_PACKAGE_VERSION}+${GIT_COMMIT_SHORT}") |
|||
endif() |
|||
|
|||
# Audacity-X.Y.Z-alpha-20210615 |
|||
set(CPACK_PACKAGE_FILE_NAME "${PROJECT_NAME}-${CPACK_PACKAGE_VERSION}") |
|||
|
|||
if(NOT "$ENV{AUDACITY_ARCH_LABEL}" STREQUAL "") |
|||
# Audacity-X.Y.Z-alpha-20210615-x86_64 |
|||
set(CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_FILE_NAME}-$ENV{AUDACITY_ARCH_LABEL}") |
|||
endif() |
|||
set(CPACK_PACKAGE_DIRECTORY "${CMAKE_BINARY_DIR}/package") |
|||
|
|||
set(CPACK_GENERATOR ZIP) |
|||
|
|||
include(CPack) # do this last |
@ -0,0 +1,8 @@ |
|||
#!/bin/sh |
|||
|
|||
lib="${0%/*}/lib/audacity" |
|||
|
|||
export LD_LIBRARY_PATH="${lib}:${LD_LIBRARY_PATH}" |
|||
export AUDACITY_MODULES_PATH="${lib}/modules" |
|||
|
|||
exec "${0%/*}/bin/audacity" "$@" |
@ -0,0 +1,22 @@ |
|||
#!/usr/bin/env bash |
|||
|
|||
((${BASH_VERSION%%.*} >= 4)) || { echo >&2 "$0: Error: Please upgrade Bash."; exit 1; } |
|||
|
|||
set -euxo pipefail |
|||
|
|||
if [[ "${OSTYPE}" == msys* ]]; then # Windows |
|||
|
|||
cpus="${NUMBER_OF_PROCESSORS}" |
|||
|
|||
elif [[ "${OSTYPE}" == darwin* ]]; then # macOS |
|||
|
|||
cpus="$(sysctl -n hw.ncpu)" |
|||
|
|||
else # Linux & others |
|||
|
|||
cpus="$(nproc)" |
|||
|
|||
fi |
|||
|
|||
# Build Audacity |
|||
cmake --build build -j "${cpus}" --config "${AUDACITY_BUILD_TYPE}" |
@ -0,0 +1,32 @@ |
|||
#!/usr/bin/env bash |
|||
|
|||
((${BASH_VERSION%%.*} >= 4)) || { echo >&2 "$0: Error: Please upgrade Bash."; exit 1; } |
|||
|
|||
set -euxo pipefail |
|||
|
|||
conan --version # check it works |
|||
|
|||
cmake_args=( |
|||
-S . |
|||
-B build |
|||
-G "${AUDACITY_CMAKE_GENERATOR}" |
|||
-D audacity_use_pch=no |
|||
-D audacity_has_networking=yes |
|||
-D CMAKE_BUILD_TYPE="${AUDACITY_BUILD_TYPE}" |
|||
-D CMAKE_INSTALL_PREFIX="${AUDACITY_INSTALL_PREFIX}" |
|||
) |
|||
|
|||
if [[ "${AUDACITY_CMAKE_GENERATOR}" == "Visual Studio"* ]]; then |
|||
case "${AUDACITY_ARCH_LABEL}" in |
|||
32bit) cmake_args+=( -A Win32 ) ;; |
|||
64bit) cmake_args+=( -A x64 ) ;; |
|||
*) echo >&2 "$0: Unrecognised arch label '${AUDACITY_ARCH_LABEL}'" ; exit 1 ;; |
|||
esac |
|||
elif [[ "${AUDACITY_CMAKE_GENERATOR}" == Xcode* ]]; then |
|||
cmake_args+=( |
|||
-T buildsystem=1 |
|||
) |
|||
fi |
|||
|
|||
# Configure Audacity |
|||
cmake "${cmake_args[@]}" |
@ -0,0 +1,49 @@ |
|||
#!/usr/bin/env bash |
|||
|
|||
((${BASH_VERSION%%.*} >= 4)) || echo >&2 "$0: Warning: Using ancient Bash version ${BASH_VERSION}." |
|||
|
|||
set -euxo pipefail |
|||
|
|||
if [[ "${OSTYPE}" == msys* ]]; then # Windows |
|||
|
|||
# Python packages |
|||
pip_packages=( |
|||
conan |
|||
) |
|||
pip3 install "${pip_packages[@]}" |
|||
|
|||
elif [[ "${OSTYPE}" == darwin* ]]; then # macOS |
|||
|
|||
# Homebrew packages |
|||
brew_packages=( |
|||
bash # macOS ships with Bash v3 for licensing reasons so upgrade it now |
|||
conan |
|||
) |
|||
brew install "${brew_packages[@]}" |
|||
|
|||
else # Linux & others |
|||
|
|||
# Distribution packages |
|||
if which apt-get; then |
|||
apt_packages=( |
|||
libasound2-dev |
|||
libgtk2.0-dev |
|||
gettext |
|||
python3-pip |
|||
) |
|||
sudo apt-get update -y |
|||
sudo apt-get install -y --no-install-recommends "${apt_packages[@]}" |
|||
sudo apt-get remove -y ccache |
|||
else |
|||
echo >&2 "$0: Error: You don't have a recognized package manager installed." |
|||
exit 1 |
|||
fi |
|||
|
|||
# Python packages |
|||
pip_packages=( |
|||
conan |
|||
) |
|||
pip3 install wheel setuptools # need these first to install other packages (e.g. conan) |
|||
pip3 install "${pip_packages[@]}" |
|||
|
|||
fi |
@ -0,0 +1,25 @@ |
|||
#!/usr/bin/env bash |
|||
|
|||
if [[ "$0" == "${BASH_SOURCE}" ]]; then |
|||
echo >&2 "$0: Please source this script instead of running it." |
|||
exit 1 |
|||
fi |
|||
|
|||
((${BASH_VERSION%%.*} >= 4)) || { echo >&2 "${BASH_SOURCE}: Error: Please upgrade Bash."; return 1; } |
|||
|
|||
function gh_export() |
|||
{ |
|||
[[ "${GITHUB_ENV-}" ]] || local -r GITHUB_ENV="/dev/null" |
|||
export -- "$@" && printf "%s\n" "$@" >> "${GITHUB_ENV}" |
|||
} |
|||
|
|||
repository_root="$(cd "$(dirname "${BASH_SOURCE}")/../.."; echo "${PWD}")" |
|||
|
|||
gh_export CONAN_USER_HOME="${repository_root}/conan-home/" |
|||
gh_export CONAN_USER_HOME_SHORT="${repository_root}/conan-home/short" |
|||
|
|||
gh_export GIT_HASH="$(git show -s --format='%H')" |
|||
gh_export GIT_HASH_SHORT="$(git show -s --format='%h')" |
|||
|
|||
gh_export AUDACITY_BUILD_TYPE="Release" |
|||
gh_export AUDACITY_INSTALL_PREFIX="${repository_root}/build/install" |
@ -0,0 +1,8 @@ |
|||
#!/usr/bin/env bash |
|||
|
|||
((${BASH_VERSION%%.*} >= 4)) || { echo >&2 "$0: Error: Please upgrade Bash."; exit 1; } |
|||
|
|||
set -euxo pipefail |
|||
|
|||
# Install Audacity |
|||
cmake --install build --config "${AUDACITY_BUILD_TYPE}" --verbose |
@ -0,0 +1,8 @@ |
|||
#!/usr/bin/env bash |
|||
|
|||
((${BASH_VERSION%%.*} >= 4)) || { echo >&2 "$0: Error: Please upgrade Bash."; exit 1; } |
|||
|
|||
set -euxo pipefail |
|||
|
|||
cd build |
|||
cpack -C "${AUDACITY_BUILD_TYPE}" --verbose |
Write
Preview
Loading…
Cancel
Save
Reference in new issue