Prevent building against Wine 7.22...8.0-rc1

Once the workarounds have been removed these versions will seize to
function correctly, so it's better to just outright prevent it.
This commit is contained in:
Robbert van der Helm
2022-12-23 19:50:52 +01:00
parent 7346f82f8e
commit 2180d4e8d6
2 changed files with 43 additions and 32 deletions
+9
View File
@@ -17,6 +17,15 @@ Versioning](https://semver.org/spec/v2.0.0.html).
instead of patching the SDK using sed. This makes it easier to use older (but instead of patching the SDK using sed. This makes it easier to use older (but
still API-compatible) VST3 SDK versions with yabridge and it makes the still API-compatible) VST3 SDK versions with yabridge and it makes the
patching less brittle. The patches can be found in `tools/vst3-sdk-patches`. patching less brittle. The patches can be found in `tools/vst3-sdk-patches`.
- Since the workarounds from yabridge 5.0.1 and 5.0.2 have been reverted, the
Meson build will now throw an error when trying to build against Wine 7.21,
7.22, or 8.0-rc1. Yabridge binaries built against these Wine versions will not
work correctly.
- Yabridge built against Wine 8.0-rc2 will also work with older Wine versions,
including the aforementioned ones that previously required workarounds.
Yabridge built against older Wine versions will not work with Wine 8.0-rc2 or
later.
- Unity builds can safely be re-enabled again.
## [5.0.2] - 2022-11-28 ## [5.0.2] - 2022-11-28
+34 -32
View File
@@ -151,51 +151,53 @@ endif
# #
# https://bugs.winehq.org/show_bug.cgi?id=49138 # https://bugs.winehq.org/show_bug.cgi?id=49138
wine_version = run_command( wine_version = run_command(
'sh', '-c', '''wine --version | grep --only-matching -E '[0-9]+\.[0-9]+' | head -n1''', 'sh', '-c', '''wine --version | grep --only-matching -E '[0-9]+\.[0-9]+(rc[0-9]+)?' | head -n1''',
check : false check : false
) )
if wine_version.returncode() == 0 if wine_version.returncode() == 0
message('Targetting Wine @0@'.format(wine_version.stdout())) wine_version = wine_version.stdout()
if wine_version.stdout().version_compare('>=5.7') and \ message('Targetting Wine @0@'.format(wine_version))
wine_version.stdout().version_compare('<6.0')
# Wine versions below 5.7 will segfault in `CoCreateGuid` which gets called
# during static initialization. I'm not exactly sure why this is happening,
# but to prevent this from causing more headaches and confusion in the future
# we should just immediately error out when building yabridge's VST3 support
# with these older Wine versions.
if wine_version.version_compare('<5.7') and with_vst3
error('Because of a bug in Wine < 5.7\n' +
'you cannot build yabridge with VST3 support using these older Wine versions.\n' +
'Use the \'-Dvst3=false\' build option to disable VST3 support.\n\n' +
'https://github.com/robbert-vdh/yabridge/issues/63#issuecomment-757369645')
endif
# This version of yabridge will not work when built against Wine 7.21, 7.22,
# or 8.0-rc1 because of https://bugs.winehq.org/show_bug.cgi?id=53912. We'll
# outright prevent building yabridge with these versions to avoid broken
# yabridge builds. If anyone's reading this because you ran into the error
# below, either build with Wine 8.0-rc2+, or stick with yabridge 5.0.2 if
# you're stuck with Wine 7.22.
if wine_version.version_compare('>=7.21') and \
wine_version.version_compare('<8.0rc2')
error('Building this version of yabridge against Wine ' + wine_version +
'would result in nonfunctional binaries. Either build yabridge 5.0.2 ' +
'with Wine 7.22, or switch to Wine 8.0-rc2+. Yabridge built with 8.0-rc2+ ' +
'will also work with older Wine versions, but yabridge built against older ' +
'Wine versions will not work with Wine 7.21+.\n\n' +
'https://bugs.winehq.org/show_bug.cgi?id=53912')
endif
if wine_version.version_compare('>=5.7') and \
wine_version.version_compare('<6.0')
message('- Using the cdecl calling convention') message('- Using the cdecl calling convention')
compiler_options += '-DWINE_USE_CDECL' compiler_options += '-DWINE_USE_CDECL'
endif endif
if wine_version.stdout().version_compare('<6.23') and with_winedbg if wine_version.version_compare('<6.23') and with_winedbg
message('- Using legacy winedbg argument quoting') message('- Using legacy winedbg argument quoting')
compiler_options += '-DWINEDBG_LEGACY_ARGUMENT_QUOTING' compiler_options += '-DWINEDBG_LEGACY_ARGUMENT_QUOTING'
endif endif
# If the bug is not fixed in time for Wine 7.23, which is probably won't be,
# then this conditional won't be effective anymore for already released
# yabridge builds. But it may prevent some incorrectly packaged yabridge
# builds in the meantime.
if wine_version.stdout().version_compare('>=7.21') and \
wine_version.stdout().version_compare('<7.23') and \
get_option('unity') == 'on'
error('This version of Wine contains a bug that may cause yabridge to freeze ' +
'or crash on startup when the --unity=true option is enabled. ' +
'Remove this error from the meson.build file at your own risk if you ' +
'want to keep using unity builds.\n\n' +
'https://bugs.winehq.org/show_bug.cgi?id=53912')
endif
else else
warning('Unable to determine the current Wine version') warning('Unable to determine the current Wine version')
endif endif
# Wine versions below 5.7 will segfault in `CoCreateGuid` which gets called
# during static initialization. I'm not exactly sure why this is happening, but
# to prevent this from causing more headaches and confusion in the future we
# should just immediately error out when building yabridge's VST3 support with
# these older Wine versions.
if wine_version.returncode() == 0 and \
wine_version.stdout().version_compare('<5.7') and \
with_vst3
error('Because of a bug in Wine < 5.7\n' +
'you cannot build yabridge with VST3 support using these older Wine versions.\n' +
'Use the \'-Dvst3=false\' build option to disable VST3 support.\n\n' +
'https://github.com/robbert-vdh/yabridge/issues/63#issuecomment-757369645')
endif
# #
# Dependencies # Dependencies
# #