Skip to content

Commit

Permalink
Merge pull request #230 from ebu/v1.0-tasks
Browse files Browse the repository at this point in the history
Build and test cross-platform Installer
Support for ADM "Importance" parameter
Fix bug in render dialog when using language packs (Closes #215)
Include Experimental Linux build (Closes  #222)
Silence unused monitoring output channels (prevents pass-through of object audio) (Closes #224)
Fix alignment of monitoring meters (Closes #206)
Fix blank audioProgrammeLanguage on export (Closes #213)
Export uses 2076-2 structures (omitting AudioTrackFormat and AudioStreamFormat)
Build fixes; Build failing on Xcode 14 (Closes #220), Build fails on MacOS 12 due to vcpkg unable to find python (Closes #221)
Include additional project templates
Fix unintended downmix issue (Closes #228)
Fix plugin crash on other DAWs (Closes #232)
Support plugin renaming (Closes #240)
Fix parameters not updating in response to other parameter changes after JUCE upgrade
Fix blank Scene when importing ADM with no high-level metadata (Closes #242)
Various optimisations (reducing lock lengths, only running metering calcs when needed)
Bus-width compatibility fixes.
Fix for some render dialog controls re-enabling.
Fix for updated text in render dialog in recent versions of REAPER.
  • Loading branch information
firthm01 authored Mar 23, 2023
2 parents d5a4826 + f4079ab commit c13b714
Show file tree
Hide file tree
Showing 239 changed files with 109,674 additions and 101,913 deletions.
80 changes: 54 additions & 26 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ jobs:
CCACHE_MAXSIZE: '500M'
CCACHE_BASEDIR: '${{ github.workspace }}'
VCPKG_ROOT: ${{ github.workspace }}/submodules/vcpkg
VCPKG_CACHE_LOCATION: '${{ github.workspace }}/vcpkg_cache'
VCPKG_DEFAULT_BINARY_CACHE: '${{ github.workspace }}/vcpkg_cache'
strategy:
matrix:
config:
Expand Down Expand Up @@ -49,9 +49,15 @@ jobs:
cmake_preset: "macos-arm64-packaging-release"
vcpkg_triplet: arm64-osx-11_0
test: false
- name: "Ubuntu 20.04"
os: ubuntu-20.04
package: true
cmake_preset: "linux-packaging-release"
vcpkg_triplet: x64-linux
test: true
steps:
- name: 'Checkout repo recursively.'
uses: actions/checkout@v2
uses: actions/checkout@v3
with:
submodules: recursive
fetch-depth: 0
Expand All @@ -60,17 +66,22 @@ jobs:
uses: seanmiddleditch/gha-setup-ninja@v3

- name: 'Create vcpkg cache dir.'
run: cmake -E make_directory ${{ env.VCPKG_CACHE_LOCATION }}
run: cmake -E make_directory ${{ env.VCPKG_DEFAULT_BINARY_CACHE }}

- name: 'Prepare timestamp.'
id: cache_timestamp
shell: cmake -P {0}
run: |
string(TIMESTAMP current_date "%Y-%m-%d-%H;%M;%S" UTC)
file(APPEND "$ENV{GITHUB_OUTPUT}" "timestamp=${current_date}\n")
# See https://github.com/lukka/CppBuildTasks-Validation/blob/master/.github/workflows/hosted-pure-workflow.yml
# We use cache key from above, possibly redundant due to vcpkg's own hashing, but it doesn't hurt while we're
# still using a binary cache per repo/triplet rather than a global package repo.
- name: 'Restore vcpkg and its artifacts.'
uses: actions/cache@v2
uses: actions/cache@v3
with:
path: ${{ env.VCPKG_CACHE_LOCATION }}
key: |
${{ hashFiles( 'vcpkg.json' ) }}-${{ hashFiles( '.git/modules/submodules/vcpkg/HEAD' )}}--${{ matrix.config.vcpkg_triplet }}-invalidate
path: ${{ env.VCPKG_DEFAULT_BINARY_CACHE }}
key: ${{ matrix.config.name }}-vcpkg-${{ steps.cache_timestamp.outputs.timestamp }}
restore-keys: |
${{ matrix.config.name }}-vcpkg-
- name: 'Windows: Install ccache.'
if: matrix.config.os == 'windows-latest'
Expand All @@ -90,19 +101,22 @@ jobs:
if: matrix.config.os == 'macos-latest'
run: |
brew install ccache
- name: 'macOS: Install pkg-config.'
if: matrix.config.os == 'macos-latest'
run: |
brew install pkg-config
- name: 'Prepare ccache timestamp.'
id: ccache_cache_timestamp
shell: cmake -P {0}
- name: 'linux: Install dependencies.'
if: startsWith(matrix.config.os, 'ubuntu')
run: |
string(TIMESTAMP current_date "%Y-%m-%d-%H;%M;%S" UTC)
message("::set-output name=timestamp::${current_date}")
sudo apt-get install -y ccache libx11-dev libxcursor-dev libxext-dev libxinerama-dev libxrandr-dev libglu1-mesa-dev libfreetype6-dev
- name: 'Cache ccache files.'
uses: actions/cache@v2
uses: actions/cache@v3
with:
path: ${{ env.CCACHE_DIR }}
key: ${{ matrix.config.name }}-ccache-${{ steps.ccache_cache_timestamp.outputs.timestamp }}
key: ${{ matrix.config.name }}-ccache-${{ steps.cache_timestamp.outputs.timestamp }}
restore-keys: |
${{ matrix.config.name }}-ccache-
Expand All @@ -122,8 +136,8 @@ jobs:
file(TO_CMAKE_PATH "$ENV{RUNNER_WORKSPACE}" RUNNER_WORKSPACE)
set(INSTALL_DIR "${NAME_NO_SPACES}")
file(TO_NATIVE_PATH "${RUNNER_WORKSPACE}/${INSTALL_DIR}" PREFIX)
message("::set-output name=install_prefix::${PREFIX}")
message("::set-output name=install_dir::${INSTALL_DIR}")
file(APPEND "$ENV{GITHUB_OUTPUT}" "install_prefix=${PREFIX}\n")
file(APPEND "$ENV{GITHUB_OUTPUT}" "install_dir=${INSTALL_DIR}\n")
- name: 'Windows: set up developer environment'
uses: ilammy/msvc-dev-cmd@v1
Expand All @@ -135,9 +149,6 @@ jobs:
- name: 'Configure with CMake, vcpkg and ccmake.'
run: cmake --preset ${{ matrix.config.cmake_preset }} -DCMAKE_INSTALL_PREFIX="${{ steps.cmake_install_prefix.outputs.install_prefix }}" -DEPS_CI=ON
env:
# See https://vcpkg.io/en/docs/users/binarycaching.html for syntax of this variable. We want to clear out
# the default locations and both restore from and save to our custom .vcpkg directory.
VCPKG_BINARY_SOURCES: 'clear;files,${{ env.VCPKG_CACHE_LOCATION }},readwrite'
CMAKE_C_COMPILER_LAUNCHER: 'ccache'
CMAKE_CXX_COMPILER_LAUNCHER: 'ccache'

Expand All @@ -148,6 +159,9 @@ jobs:
- name: 'Clean up vcpkg temporary files.'
run: cmake -E rm -rf "${{ env.VCPKG_ROOT }}/buildtrees" "${{ env.VCPKG_ROOT }}/packages" "${{ env.VCPKG_ROOT }}/downloads"

- name: 'Prune the vcpkg cache'
run: cmake -P "${{ github.workspace }}/.github/workflows/expire_vcpkg_cache.cmake"

- name: 'Build using CMake and Ninja via CMake preset.'
run: cmake --build --preset ${{ matrix.config.cmake_preset }}

Expand All @@ -164,12 +178,12 @@ jobs:
cmake -E make_directory "${{ steps.cmake_install_prefix.outputs.install_prefix }}"
cmake --build --preset ${{ matrix.config.cmake_preset }} --target install
- name: 'macOS: Tar output dir.'
if: ${{ matrix.config.package && matrix.config.os == 'macos-latest' }}
- name: 'unix: Tar output dir.'
if: ${{ matrix.config.package && !startsWith(matrix.config.os, 'windows') }}
run: tar -cvf ${{ steps.cmake_install_prefix.outputs.install_dir }}.tar -C ${{ steps.cmake_install_prefix.outputs.install_prefix }} .

- name: 'macOS: Upload Tar as build artifact.'
if: ${{ matrix.config.package && matrix.config.os == 'macos-latest' }}
- name: 'unix: Upload Tar as build artifact.'
if: ${{ matrix.config.package && !startsWith(matrix.config.os, 'windows') }}
uses: actions/upload-artifact@v2
with:
name: ${{ steps.cmake_install_prefix.outputs.install_dir }}
Expand Down Expand Up @@ -233,8 +247,17 @@ jobs:
LIBS=`find $intel_dir -name '*.dylib'`
# note: "! -name '*.*'" excludes files with an extension (auxiliary files)
PLUGINS=`find $intel_dir -path '*vst3/Contents/MacOS/*' ! -name '*.*'`
APPS=`find $intel_dir -path '*app/Contents/MacOS/*' ! -name '*.*'`
# don't forget project upgrade command line util
EXES=`find $intel_dir -name 'project_upgrade'`
IFS=$'\n'
for exe in $EXES; do
echo "Making UB Exectuable from: $exe"
make_ub "$exe"
done
for lib in $LIBS; do
echo "Making UB Library from: $lib"
make_ub "$lib"
Expand All @@ -245,6 +268,11 @@ jobs:
make_ub "$plugin"
done
for app in $APPS; do
echo "Making UB App from: $app"
make_ub "$app"
done
- name: 'dir listing'
run: ls -R

Expand Down
44 changes: 44 additions & 0 deletions .github/workflows/expire_vcpkg_cache.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
# prune the VCPKG cache size based on the modification time of the files

set(cache "$ENV{VCPKG_DEFAULT_BINARY_CACHE}")
set(max_cache_size 500000000)

# find files in the cache
file(GLOB_RECURSE files LIST_DIRECTORIES false "${cache}/*")

# total size of all files seen in bytes
set(total_size 0)

# list of files with their unix timestamps separated by a space for sorting
set(timestamps "")

foreach(file IN LISTS files)
file(TIMESTAMP "${file}" timestamp "%s" UTC)
file(SIZE "${file}" size)

list(APPEND timestamps "${timestamp} ${file}")
math(EXPR total_size "${total_size} + ${size}")
endforeach()

message("vcpkg cache size before pruning: ${total_size}")

list(SORT timestamps COMPARE NATURAL ORDER ASCENDING)

# drop files until the total is less than the maximum size
foreach(timestamp_file IN LISTS timestamps)
string(REPLACE " " ";" timestamp_file_list ${timestamp_file})
list(GET timestamp_file_list 0 timestamp)
list(GET timestamp_file_list 1 file)

if (total_size LESS max_cache_size)
break()
endif()

file(SIZE "${file}" size)
math(EXPR total_size "${total_size} - ${size}")
file(REMOVE ${file})

message("deleted ${file}")
endforeach()

message("vcpkg cache size after pruning: ${total_size}")
2 changes: 1 addition & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -15,4 +15,4 @@ docs/venv
reaper-adm-extension/test/reaper_adm/data/UserPlugins/
shared/version/eps_version.cpp
submodules/visr
submodules/VST3
submodules/VST3
24 changes: 24 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,27 @@
Version 1.0.0

* Setup Application included
* Support for ADM "Importance" parameter
* Fix bug in render dialog when using language packs [#215](https://github.com/ebu/ear-production-suite/issues/215)
* Experimental Linux build [#222](https://github.com/ebu/ear-production-suite/pull/222)
* Silence unused monitoring output channels (prevents pass-through of object audio) [#224](https://github.com/ebu/ear-production-suite/issues/224)
* Fix alignment of monitoring meters [#206](https://github.com/ebu/ear-production-suite/issues/206)
* Fix blank audioProgrammeLanguage on export [#213](https://github.com/ebu/ear-production-suite/issues/213)
* Export uses 2076-2 structures (omitting AudioTrackFormat and AudioStreamFormat)
* MacOS build fixes [#220](https://github.com/ebu/ear-production-suite/issues/220) [#221](https://github.com/ebu/ear-production-suite/issues/221)
* Include additional project templates
* Fix bus config when Input plug-ins on wide track [#228](https://github.com/ebu/ear-production-suite/issues/228)
* Fix Size param not updating [#229](https://github.com/ebu/ear-production-suite/issues/229)
* Fix plugin crash on other DAWs [#232](https://github.com/ebu/ear-production-suite/issues/232)
* Support plugin renaming in REAPER [#240](https://github.com/ebu/ear-production-suite/issues/240)
* Fix blank Scene when importing ADM with no high-level metadata [#242](https://github.com/ebu/ear-production-suite/issues/242)
* Fix parameters not updating in response to other parameter changes after JUCE update
* Fix render dialog controls inadvertently re-enabling
* Support render dialog changes in newer REAPER versions
* Wider REAPER version support (back to 6.11)
* Various performance improvements
* Use more appropriate bus layouts

Version 0.8.0

* Support custom object names rather than using track names [#214](https://github.com/ebu/ear-production-suite/pull/214)
Expand Down
12 changes: 8 additions & 4 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,9 @@ cmake_minimum_required(VERSION 3.14)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)
set(CMAKE_POSITION_INDEPENDENT_CODE ON)

set(EPS_VERSION_BASE 0.8.0) # This is used as fallback if getting from git fails. Must be only numeric.
set(EPS_VERSION_BASE 1.0.0) # This is used as fallback if getting from git fails. Must be only numeric.
# NOTE: also update hard-coded version number in
# - vcpkg.json

Expand All @@ -26,11 +27,14 @@ message(STATUS "----------------------------------------------------------------

include(FeatureSummary)

include(eps_set_install_paths)
if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
eps_set_install_paths()
option(EPS_USE_BAREBONES_PROFILE "Use the bare-bones version of the EBU Production Profile" OFF)
if(EPS_USE_BAREBONES_PROFILE)
add_compile_definitions(BAREBONESPROFILE)
endif()

include(eps_set_install_paths)
eps_set_install_paths()

set_property(GLOBAL PROPERTY USE_FOLDERS ON)

include(CTest)
Expand Down
Loading

0 comments on commit c13b714

Please sign in to comment.