Skip to content

FreeBSD compilation fixes #773

FreeBSD compilation fixes

FreeBSD compilation fixes #773

Workflow file for this run

name: Build Audacity
on:
push:
paths-ignore: ["**/**.md", "**/**.dox2", "**/**.dox", "**/**.dox.in", "**/LICENSE.txt", "/.github/ISSUE_TEMPLATE/**", "INSTALL", "CHANGELOG.txt", ".editorconfig", ".gitignore", ".gitattributes"]
pull_request:
paths-ignore: ["**/**.md", "**/**.dox2", "**/**.dox", "**/**.dox.in", "**/LICENSE.txt", "/.github/ISSUE_TEMPLATE/**", "INSTALL", "CHANGELOG.txt", ".editorconfig", ".gitignore", ".gitattributes"]
workflow_dispatch:
inputs:
build_level:
description: "Build level to be used. Valid values are: alpha, beta, release"
required: false
default: 'alpha'
type: string
build_type:
description: 'Build type. Valid values are: Debug, Release, RelWithDebInfo, MinSizeRel'
required: false
default: RelWithDebInfo
type: string
configuration_types:
description: 'Build type. Valid values are: Debug, Release, RelWithDebInfo, MinSizeRel or any combination separated with a semicolon'
required: false
default: RelWithDebInfo
type: string
configure_cmake_options:
description: 'Additional CMake options for configuration'
required: false
default: ''
type: string
workflow_call:
inputs:
build_level:
description: "Build level to be used. Valid values are: alpha, beta, release"
required: false
default: 'alpha'
type: string
build_type:
description: 'Build type. Valid values are: Debug, Release, RelWithDebInfo, MinSizeRel'
required: false
default: RelWithDebInfo
type: string
configuration_types:
description: 'Build type. Valid values are: Debug, Release, RelWithDebInfo, MinSizeRel or any combination separated with a semicolon'
required: false
default: RelWithDebInfo
type: string
configure_cmake_options:
description: 'Additional CMake options for configuration'
required: false
default: ''
type: string
secrets:
APPLE_CERTIFICATE:
required: false
APPLE_CERTIFICATE_PASSWORD:
required: false
APPLE_CODESIGN_IDENTITY:
required: false
APPLE_NOTARIZATION_USER_NAME:
required: false
APPLE_NOTARIZATION_PASSWORD:
required: false
APPLE_NOTARIZATION_TEAM_ID:
required: false
CRASH_REPORT_URL:
required: false
SENTRY_AUTH_TOKEN:
required: false
SENTRY_DSN_KEY:
required: false
SENTRY_HOST:
required: false
SENTRY_ORG_SLUG:
required: false
SENTRY_PROJECT:
required: false
SENTRY_PROJECT_SLUG:
required: false
WINDOWS_CERTIFICATE:
required: false
WINDOWS_CERTIFICATE_PASSWORD:
required: false
env:
SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }}
SENTRY_DSN_KEY: ${{ secrets.SENTRY_DSN_KEY }}
SENTRY_HOST: ${{ secrets.SENTRY_HOST }}
SENTRY_ORG_SLUG: ${{ secrets.SENTRY_ORG_SLUG }}
SENTRY_PROJECT: ${{ secrets.SENTRY_PROJECT }}
SENTRY_PROJECT_SLUG: ${{ secrets.SENTRY_PROJECT_SLUG }}
ARTIFACTORY_SYMBOLS_URL: ${{ secrets.ARTIFACTORY_SYMBOLS_URL }}
ARTIFACTORY_SYMBOLS_KEY: ${{ secrets.ARTIFACTORY_SYMBOLS_KEY }}
CONAN_BINARIES_REMOTE: ${{ secrets.CONAN_BINARIES_REMOTE }}
CONAN_LOGIN_USERNAME: ${{ secrets.CONAN_LOGIN_USERNAME }}
CONAN_PASSWORD: ${{ secrets.CONAN_PASSWORD }}
BUILD_TYPE: ${{ (inputs && inputs.build_type) || (github.event.inputs && github.event.inputs.build_type) || 'RelWithDebInfo' }}
CONFIGURATION_TYPES: ${{ (inputs && inputs.configuration_types) || (github.event.inputs && github.event.inputs.configuration_types) || 'RelWithDebInfo' }}
CONFIGURE_CMAKE_OPTIONS: |
-Daudacity_has_url_schemes_support=On
-Daudacity_has_audiocom_upload=On
${{ (inputs && inputs.configure_cmake_options) || (github.event.inputs && github.event.inputs.configure_cmake_options) || '' }}
BUILD_LEVEL: ${{ (inputs && inputs.build_level) || (github.event.inputs && github.event.inputs.build_level) || ((startsWith(github.ref, 'refs/heads/release-') && 'beta') || 'alpha') }}
CRASH_REPORT_URL: ${{ secrets.CRASH_REPORT_URL }}
jobs:
build_linux:
name: ${{ matrix.config.name }}
runs-on: ${{ matrix.config.os }}
strategy:
fail-fast: false
matrix:
config:
- name: Ubuntu 20.04 AppImage (x86_64)
os: ubuntu-20.04
force_gcc11: false
postfix: '-20.04'
- name: Ubuntu 20.04 AppImage (x86_64, gcc 11)
os: ubuntu-20.04
force_gcc11: true
postfix: '-20.04-gcc11'
- name: Ubuntu 22.04 AppImage (x86_64)
os: ubuntu-22.04
force_gcc11: false
postfix: '-22.04'
steps:
- name: Checkout Audacity
uses: actions/checkout@v2
- name: Setup Dependencies
uses: audacity/audacity-actions/dependencies@v2
with:
force_gcc11: ${{ matrix.config.force_gcc11 }}
- name: Configure
uses: audacity/audacity-actions/configure@v2
with:
generator: Unix Makefiles
build_type: ${{ env.BUILD_TYPE }}
configuration_types: ${{ env.CONFIGURATION_TYPES }}
build_level: ${{ env.BUILD_LEVEL }}
cmake_options: ${{ env.CONFIGURE_CMAKE_OPTIONS }}
- name: Build
uses: audacity/audacity-actions/build@v2
- name: Test
uses: GabrielBB/xvfb-action@v1
with:
run: ctest -C ${{ env.BUILD_TYPE }} --verbose
working-directory: ./.build.x64/
- name: Package
uses: audacity/audacity-actions/package@v2
with:
postfix: ${{ matrix.config.postfix }}
build_windows:
name: ${{ matrix.config.name }}
runs-on: ${{ matrix.config.os }}
strategy:
fail-fast: false
matrix:
config:
- name: Windows MSVC 2019 (x86)
os: windows-2019
arch: x32
generator: Visual Studio 16 2019
postfix: '-msvc2019'
windows_sdk: '10.0.18362.0'
- name: Windows MSVC 2019 (x86_64)
os: windows-2019
arch: x64
generator: Visual Studio 16 2019
postfix: '-msvc2019'
windows_sdk: '10.0.18362.0'
- name: Windows MSVC 2022 (x86)
os: windows-2022
arch: x32
generator: Visual Studio 17 2022
postfix: '-msvc2022'
windows_sdk: '10.0.22000.0'
- name: Windows MSVC 2022 (x86_64)
os: windows-2022
arch: x64
generator: Visual Studio 17 2022
postfix: '-msvc2022'
windows_sdk: '10.0.22000.0'
steps:
- name: Checkout Audacity
uses: actions/checkout@v2
- name: Setup Dependencies
uses: audacity/audacity-actions/dependencies@v2
with:
force_gcc11: ${{ matrix.config.force_gcc11 }}
- name: Configure
uses: audacity/audacity-actions/configure@v2
with:
generator: ${{ matrix.config.generator }}
arch: ${{ matrix.config.arch }}
build_type: ${{ env.BUILD_TYPE }}
configuration_types: ${{ env.CONFIGURATION_TYPES }}
build_level: ${{ env.BUILD_LEVEL }}
cmake_options: |
${{ env.CONFIGURE_CMAKE_OPTIONS }}
-DCMAKE_SYSTEM_VERSION=${{ matrix.config.windows_sdk }}
windows_certificate: ${{ secrets.WINDOWS_CERTIFICATE }}
windows_certificate_password: ${{ secrets.WINDOWS_CERTIFICATE_PASSWORD }}
- name: Build
uses: audacity/audacity-actions/build@v2
- name: Test
shell: pwsh
run: |
pushd .build.${{ matrix.config.arch }}
ctest -C ${{ env.BUILD_TYPE }} --verbose
popd
- name: Package
uses: audacity/audacity-actions/package@v2
with:
postfix: ${{ matrix.config.postfix }}
build_macos_intel:
name: Build macOS (x86_64)
runs-on: macos-13
steps:
- name: Checkout Audacity
uses: actions/checkout@v2
- name: Setup Dependencies
uses: audacity/audacity-actions/dependencies@v2
with:
force_gcc11: ${{ matrix.config.force_gcc11 }}
- name: Configure x86_64
uses: audacity/audacity-actions/configure@v2
with:
generator: Xcode
build_type: ${{ env.BUILD_TYPE }}
configuration_types: ${{ env.CONFIGURATION_TYPES }}
build_level: ${{ env.BUILD_LEVEL }}
cmake_options: ${{ env.CONFIGURE_CMAKE_OPTIONS }}
arch: x64
- name: Build x86_64
uses: audacity/audacity-actions/build@v2
- name: Test
shell: bash
run: |
pushd .build.x64
ctest -C ${{ env.BUILD_TYPE }} --verbose
popd
- name: 'Tar files'
shell: bash
run: tar cf macos_intel.tar .build.x64
- uses: actions/upload-artifact@v2
with:
name: macos-intel-${{ github.run_id }}-${{ github.run_attempt }}
path: macos_intel.tar
build_macos_arm64:
name: Build macOS (arm64)
runs-on: macos-13
steps:
- name: Checkout Audacity
uses: actions/checkout@v2
- name: Setup Dependencies
uses: audacity/audacity-actions/dependencies@v2
with:
force_gcc11: ${{ matrix.config.force_gcc11 }}
- name: Configure x86_64
uses: audacity/audacity-actions/configure@v2
with:
generator: Xcode
build_type: ${{ env.BUILD_TYPE }}
configuration_types: ${{ env.CONFIGURATION_TYPES }}
build_level: ${{ env.BUILD_LEVEL }}
cmake_options: ${{ env.CONFIGURE_CMAKE_OPTIONS }}
arch: x64
- name: Build x86_64
uses: audacity/audacity-actions/build@v2
with:
target: image-compiler
- name: Configure arm64
uses: audacity/audacity-actions/configure@v2
with:
generator: Xcode
build_type: ${{ env.BUILD_TYPE }}
configuration_types: ${{ env.CONFIGURATION_TYPES }}
build_level: ${{ env.BUILD_LEVEL }}
cmake_options: ${{ env.CONFIGURE_CMAKE_OPTIONS }}
arch: arm64
image_compiler: "${{ github.workspace }}/.build.x64/RelWithDebInfo/Audacity.app/Contents/image-compiler/image-compiler"
- name: Build arm64
uses: audacity/audacity-actions/build@v2
- name: 'Tar files'
shell: bash
run: tar cf macos_arm64.tar .build.arm64
- uses: actions/upload-artifact@v2
with:
name: macos-arm64-${{ github.run_id }}-${{ github.run_attempt }}
path: macos_arm64.tar
package_macos:
name: Package macOS (x86_64, arm64, universal)
runs-on: macos-13
needs: [build_macos_intel, build_macos_arm64]
steps:
- name: Checkout Audacity
uses: actions/checkout@v2
- uses: actions/download-artifact@v2
with:
name: macos-intel-${{ github.run_id }}-${{ github.run_attempt }}
- uses: actions/download-artifact@v2
with:
name: macos-arm64-${{ github.run_id }}-${{ github.run_attempt }}
- name: Untar files
shell: bash
run: |
tar xf macos_intel.tar
tar xf macos_arm64.tar
- uses: geekyeggo/delete-artifact@v1
with:
name: |
macos-intel-${{ github.run_id }}-${{ github.run_attempt }}
macos-arm64-${{ github.run_id }}-${{ github.run_attempt }}
- name: Install Apple codesigning certificates
uses: apple-actions/import-codesign-certs@v2
env:
P12_FILE_BASE64: ${{ secrets.APPLE_CERTIFICATE }}
P12_PASSWORD: ${{ secrets.APPLE_CERTIFICATE_PASSWORD }}
if: ${{ env.P12_FILE_BASE64 != '' && env.P12_PASSWORD != '' }}
with:
p12-file-base64: ${{ secrets.APPLE_CERTIFICATE }}
p12-password: ${{ secrets.APPLE_CERTIFICATE_PASSWORD }}
- name: Package
uses: audacity/audacity-actions/package@v2
env:
AUDACITY_BUILD_DIR: "${{ github.workspace }}/.build.x64"
AUDACITY_BUILD_TYPE: ${{ env.BUILD_TYPE }}
AUDACITY_BUILD_LEVEL: ${{ env.BUILD_LEVEL }}
with:
apple_codesign_identity: ${{ secrets.APPLE_CODESIGN_IDENTITY }}
apple_notarization_user_name: ${{ secrets.APPLE_NOTARIZATION_USER_NAME }}
apple_notarization_password: ${{ secrets.APPLE_NOTARIZATION_PASSWORD }}
apple_notarization_team_id: ${{ secrets.APPLE_NOTARIZATION_TEAM_ID }}
archs: |
x64
arm64
sources:
name: Source Tarball
runs-on: ubuntu-20.04
steps:
- name: Checkout Audacity
uses: actions/checkout@v2
- name: Setup Dependencies
uses: audacity/audacity-actions/dependencies@v2
with:
force_gcc11: ${{ matrix.config.force_gcc11 }}
- name: Configure
uses: audacity/audacity-actions/configure@v2
with:
generator: Unix Makefiles
build_type: ${{ env.BUILD_TYPE }}
configuration_types: ${{ env.CONFIGURATION_TYPES }}
build_level: ${{ env.BUILD_LEVEL }}
cmake_options: ${{ env.CONFIGURE_CMAKE_OPTIONS }}
- name: Package
shell: bash
run: |
function gh_export()
{
[[ "${GITHUB_ENV-}" ]] || local -r GITHUB_ENV="/dev/null"
export -- "$@" && printf "%s\n" "$@" >> "${GITHUB_ENV}"
}
cmake --build .build.x64 --target package_source
artifact_name=$(basename "$(ls .build.x64/package/*.tar.gz | head -n 1)" ".tar.gz")
gh_export SOURCES_ARTIFACT_NAME="${artifact_name}"
- name: Upload sources
uses: actions/upload-artifact@v2
with:
name: ${{ env.SOURCES_ARTIFACT_NAME }}
path: |
.build.x64/package/*
!.build.x64/package/_CPack_Packages
if-no-files-found: error