mirror of
https://github.com/robbert-vdh/yabridge.git
synced 2026-05-07 03:50:11 +02:00
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:
@@ -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
@@ -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
|
||||||
#
|
#
|
||||||
|
|||||||
Reference in New Issue
Block a user