Skip to content

Commit c13b714

Browse files
authored
Merge pull request #230 from ebu/v1.0-tasks
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.
2 parents d5a4826 + f4079ab commit c13b714

File tree

239 files changed

+109674
-101913
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

239 files changed

+109674
-101913
lines changed

.github/workflows/build.yml

Lines changed: 54 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ jobs:
2121
CCACHE_MAXSIZE: '500M'
2222
CCACHE_BASEDIR: '${{ github.workspace }}'
2323
VCPKG_ROOT: ${{ github.workspace }}/submodules/vcpkg
24-
VCPKG_CACHE_LOCATION: '${{ github.workspace }}/vcpkg_cache'
24+
VCPKG_DEFAULT_BINARY_CACHE: '${{ github.workspace }}/vcpkg_cache'
2525
strategy:
2626
matrix:
2727
config:
@@ -49,9 +49,15 @@ jobs:
4949
cmake_preset: "macos-arm64-packaging-release"
5050
vcpkg_triplet: arm64-osx-11_0
5151
test: false
52+
- name: "Ubuntu 20.04"
53+
os: ubuntu-20.04
54+
package: true
55+
cmake_preset: "linux-packaging-release"
56+
vcpkg_triplet: x64-linux
57+
test: true
5258
steps:
5359
- name: 'Checkout repo recursively.'
54-
uses: actions/checkout@v2
60+
uses: actions/checkout@v3
5561
with:
5662
submodules: recursive
5763
fetch-depth: 0
@@ -60,17 +66,22 @@ jobs:
6066
uses: seanmiddleditch/gha-setup-ninja@v3
6167

6268
- name: 'Create vcpkg cache dir.'
63-
run: cmake -E make_directory ${{ env.VCPKG_CACHE_LOCATION }}
69+
run: cmake -E make_directory ${{ env.VCPKG_DEFAULT_BINARY_CACHE }}
70+
71+
- name: 'Prepare timestamp.'
72+
id: cache_timestamp
73+
shell: cmake -P {0}
74+
run: |
75+
string(TIMESTAMP current_date "%Y-%m-%d-%H;%M;%S" UTC)
76+
file(APPEND "$ENV{GITHUB_OUTPUT}" "timestamp=${current_date}\n")
6477
65-
# See https://github.com/lukka/CppBuildTasks-Validation/blob/master/.github/workflows/hosted-pure-workflow.yml
66-
# We use cache key from above, possibly redundant due to vcpkg's own hashing, but it doesn't hurt while we're
67-
# still using a binary cache per repo/triplet rather than a global package repo.
6878
- name: 'Restore vcpkg and its artifacts.'
69-
uses: actions/cache@v2
79+
uses: actions/cache@v3
7080
with:
71-
path: ${{ env.VCPKG_CACHE_LOCATION }}
72-
key: |
73-
${{ hashFiles( 'vcpkg.json' ) }}-${{ hashFiles( '.git/modules/submodules/vcpkg/HEAD' )}}--${{ matrix.config.vcpkg_triplet }}-invalidate
81+
path: ${{ env.VCPKG_DEFAULT_BINARY_CACHE }}
82+
key: ${{ matrix.config.name }}-vcpkg-${{ steps.cache_timestamp.outputs.timestamp }}
83+
restore-keys: |
84+
${{ matrix.config.name }}-vcpkg-
7485
7586
- name: 'Windows: Install ccache.'
7687
if: matrix.config.os == 'windows-latest'
@@ -90,19 +101,22 @@ jobs:
90101
if: matrix.config.os == 'macos-latest'
91102
run: |
92103
brew install ccache
104+
105+
- name: 'macOS: Install pkg-config.'
106+
if: matrix.config.os == 'macos-latest'
107+
run: |
108+
brew install pkg-config
93109
94-
- name: 'Prepare ccache timestamp.'
95-
id: ccache_cache_timestamp
96-
shell: cmake -P {0}
110+
- name: 'linux: Install dependencies.'
111+
if: startsWith(matrix.config.os, 'ubuntu')
97112
run: |
98-
string(TIMESTAMP current_date "%Y-%m-%d-%H;%M;%S" UTC)
99-
message("::set-output name=timestamp::${current_date}")
113+
sudo apt-get install -y ccache libx11-dev libxcursor-dev libxext-dev libxinerama-dev libxrandr-dev libglu1-mesa-dev libfreetype6-dev
100114
101115
- name: 'Cache ccache files.'
102-
uses: actions/cache@v2
116+
uses: actions/cache@v3
103117
with:
104118
path: ${{ env.CCACHE_DIR }}
105-
key: ${{ matrix.config.name }}-ccache-${{ steps.ccache_cache_timestamp.outputs.timestamp }}
119+
key: ${{ matrix.config.name }}-ccache-${{ steps.cache_timestamp.outputs.timestamp }}
106120
restore-keys: |
107121
${{ matrix.config.name }}-ccache-
108122
@@ -122,8 +136,8 @@ jobs:
122136
file(TO_CMAKE_PATH "$ENV{RUNNER_WORKSPACE}" RUNNER_WORKSPACE)
123137
set(INSTALL_DIR "${NAME_NO_SPACES}")
124138
file(TO_NATIVE_PATH "${RUNNER_WORKSPACE}/${INSTALL_DIR}" PREFIX)
125-
message("::set-output name=install_prefix::${PREFIX}")
126-
message("::set-output name=install_dir::${INSTALL_DIR}")
139+
file(APPEND "$ENV{GITHUB_OUTPUT}" "install_prefix=${PREFIX}\n")
140+
file(APPEND "$ENV{GITHUB_OUTPUT}" "install_dir=${INSTALL_DIR}\n")
127141
128142
- name: 'Windows: set up developer environment'
129143
uses: ilammy/msvc-dev-cmd@v1
@@ -135,9 +149,6 @@ jobs:
135149
- name: 'Configure with CMake, vcpkg and ccmake.'
136150
run: cmake --preset ${{ matrix.config.cmake_preset }} -DCMAKE_INSTALL_PREFIX="${{ steps.cmake_install_prefix.outputs.install_prefix }}" -DEPS_CI=ON
137151
env:
138-
# See https://vcpkg.io/en/docs/users/binarycaching.html for syntax of this variable. We want to clear out
139-
# the default locations and both restore from and save to our custom .vcpkg directory.
140-
VCPKG_BINARY_SOURCES: 'clear;files,${{ env.VCPKG_CACHE_LOCATION }},readwrite'
141152
CMAKE_C_COMPILER_LAUNCHER: 'ccache'
142153
CMAKE_CXX_COMPILER_LAUNCHER: 'ccache'
143154

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

162+
- name: 'Prune the vcpkg cache'
163+
run: cmake -P "${{ github.workspace }}/.github/workflows/expire_vcpkg_cache.cmake"
164+
151165
- name: 'Build using CMake and Ninja via CMake preset.'
152166
run: cmake --build --preset ${{ matrix.config.cmake_preset }}
153167

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

171-
- name: 'macOS: Upload Tar as build artifact.'
172-
if: ${{ matrix.config.package && matrix.config.os == 'macos-latest' }}
185+
- name: 'unix: Upload Tar as build artifact.'
186+
if: ${{ matrix.config.package && !startsWith(matrix.config.os, 'windows') }}
173187
uses: actions/upload-artifact@v2
174188
with:
175189
name: ${{ steps.cmake_install_prefix.outputs.install_dir }}
@@ -233,8 +247,17 @@ jobs:
233247
LIBS=`find $intel_dir -name '*.dylib'`
234248
# note: "! -name '*.*'" excludes files with an extension (auxiliary files)
235249
PLUGINS=`find $intel_dir -path '*vst3/Contents/MacOS/*' ! -name '*.*'`
250+
APPS=`find $intel_dir -path '*app/Contents/MacOS/*' ! -name '*.*'`
251+
# don't forget project upgrade command line util
252+
EXES=`find $intel_dir -name 'project_upgrade'`
236253
237254
IFS=$'\n'
255+
256+
for exe in $EXES; do
257+
echo "Making UB Exectuable from: $exe"
258+
make_ub "$exe"
259+
done
260+
238261
for lib in $LIBS; do
239262
echo "Making UB Library from: $lib"
240263
make_ub "$lib"
@@ -245,6 +268,11 @@ jobs:
245268
make_ub "$plugin"
246269
done
247270
271+
for app in $APPS; do
272+
echo "Making UB App from: $app"
273+
make_ub "$app"
274+
done
275+
248276
- name: 'dir listing'
249277
run: ls -R
250278

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
# prune the VCPKG cache size based on the modification time of the files
2+
3+
set(cache "$ENV{VCPKG_DEFAULT_BINARY_CACHE}")
4+
set(max_cache_size 500000000)
5+
6+
# find files in the cache
7+
file(GLOB_RECURSE files LIST_DIRECTORIES false "${cache}/*")
8+
9+
# total size of all files seen in bytes
10+
set(total_size 0)
11+
12+
# list of files with their unix timestamps separated by a space for sorting
13+
set(timestamps "")
14+
15+
foreach(file IN LISTS files)
16+
file(TIMESTAMP "${file}" timestamp "%s" UTC)
17+
file(SIZE "${file}" size)
18+
19+
list(APPEND timestamps "${timestamp} ${file}")
20+
math(EXPR total_size "${total_size} + ${size}")
21+
endforeach()
22+
23+
message("vcpkg cache size before pruning: ${total_size}")
24+
25+
list(SORT timestamps COMPARE NATURAL ORDER ASCENDING)
26+
27+
# drop files until the total is less than the maximum size
28+
foreach(timestamp_file IN LISTS timestamps)
29+
string(REPLACE " " ";" timestamp_file_list ${timestamp_file})
30+
list(GET timestamp_file_list 0 timestamp)
31+
list(GET timestamp_file_list 1 file)
32+
33+
if (total_size LESS max_cache_size)
34+
break()
35+
endif()
36+
37+
file(SIZE "${file}" size)
38+
math(EXPR total_size "${total_size} - ${size}")
39+
file(REMOVE ${file})
40+
41+
message("deleted ${file}")
42+
endforeach()
43+
44+
message("vcpkg cache size after pruning: ${total_size}")

.gitignore

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,4 +15,4 @@ docs/venv
1515
reaper-adm-extension/test/reaper_adm/data/UserPlugins/
1616
shared/version/eps_version.cpp
1717
submodules/visr
18-
submodules/VST3
18+
submodules/VST3

CHANGELOG.md

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,27 @@
1+
Version 1.0.0
2+
3+
* Setup Application included
4+
* Support for ADM "Importance" parameter
5+
* Fix bug in render dialog when using language packs [#215](https://github.com/ebu/ear-production-suite/issues/215)
6+
* Experimental Linux build [#222](https://github.com/ebu/ear-production-suite/pull/222)
7+
* Silence unused monitoring output channels (prevents pass-through of object audio) [#224](https://github.com/ebu/ear-production-suite/issues/224)
8+
* Fix alignment of monitoring meters [#206](https://github.com/ebu/ear-production-suite/issues/206)
9+
* Fix blank audioProgrammeLanguage on export [#213](https://github.com/ebu/ear-production-suite/issues/213)
10+
* Export uses 2076-2 structures (omitting AudioTrackFormat and AudioStreamFormat)
11+
* MacOS build fixes [#220](https://github.com/ebu/ear-production-suite/issues/220) [#221](https://github.com/ebu/ear-production-suite/issues/221)
12+
* Include additional project templates
13+
* Fix bus config when Input plug-ins on wide track [#228](https://github.com/ebu/ear-production-suite/issues/228)
14+
* Fix Size param not updating [#229](https://github.com/ebu/ear-production-suite/issues/229)
15+
* Fix plugin crash on other DAWs [#232](https://github.com/ebu/ear-production-suite/issues/232)
16+
* Support plugin renaming in REAPER [#240](https://github.com/ebu/ear-production-suite/issues/240)
17+
* Fix blank Scene when importing ADM with no high-level metadata [#242](https://github.com/ebu/ear-production-suite/issues/242)
18+
* Fix parameters not updating in response to other parameter changes after JUCE update
19+
* Fix render dialog controls inadvertently re-enabling
20+
* Support render dialog changes in newer REAPER versions
21+
* Wider REAPER version support (back to 6.11)
22+
* Various performance improvements
23+
* Use more appropriate bus layouts
24+
125
Version 0.8.0
226

327
* Support custom object names rather than using track names [#214](https://github.com/ebu/ear-production-suite/pull/214)

CMakeLists.txt

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,9 @@ cmake_minimum_required(VERSION 3.14)
22
set(CMAKE_CXX_STANDARD 17)
33
set(CMAKE_CXX_STANDARD_REQUIRED ON)
44
set(CMAKE_CXX_EXTENSIONS OFF)
5+
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
56

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

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

2728
include(FeatureSummary)
2829

29-
include(eps_set_install_paths)
30-
if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
31-
eps_set_install_paths()
30+
option(EPS_USE_BAREBONES_PROFILE "Use the bare-bones version of the EBU Production Profile" OFF)
31+
if(EPS_USE_BAREBONES_PROFILE)
32+
add_compile_definitions(BAREBONESPROFILE)
3233
endif()
3334

35+
include(eps_set_install_paths)
36+
eps_set_install_paths()
37+
3438
set_property(GLOBAL PROPERTY USE_FOLDERS ON)
3539

3640
include(CTest)

0 commit comments

Comments
 (0)