[ci,abi] refactor suppressions

* add a script to run abi-diff locally
* refactor suppression file, explicitly state type of change expected
* use local script for ci tests as well
* disable client and shadow server builds
This commit is contained in:
akallabeth 2025-03-19 20:30:21 +01:00
parent df800c2a0b
commit 78a53f936b
No known key found for this signature in database
GPG Key ID: A49454A3FC909FD5
4 changed files with 48 additions and 9 deletions

View File

@ -42,10 +42,7 @@ jobs:
- name: "Prepare configuration"
run: |
mkdir -p abi-checker
cp ci/cmake-preloads/config-abi.txt abi-checker/
cp scripts/abi-suppr.txt abi-checker/
curl https://gist.githubusercontent.com/akallabeth/aa35caed0d39241fa17c3dc8a0539ea3/raw/ef12f8c720ac6be51aa1878710e2502b1b39cf4c/check-abi -o abi-checker/check-abi
chmod +x abi-checker/check-abi
cp scripts/abi-diff.sh abi-checker/
echo "GITHUB_BASE_REF=$GITHUB_BASE_REF"
echo "GITHUB_HEAD_REF=$GITHUB_HEAD_REF"
echo "API_BASE_REF=${{ inputs.API_BASE_REF || '3.6.0' }}"
@ -57,4 +54,4 @@ jobs:
BASE_REF: ${{ github.event_name == 'pull_request' && github.event.pull_request.base.sha || github.event_name == 'pull_request' && github.event.pull_request.base.sha || github.event_name == 'workflow_dispatch' && inputs.API_BASE_REF || '3.6.0' }}
run: |
echo "BASE_REF=$BASE_REF"
./abi-checker/check-abi -s abi-checker/abi-suppr.txt --parameters="-Cabi-checker/config-abi.txt" $BASE_REF $(git rev-parse HEAD)
./abi-checker/abi-diff.sh $BASE_REF

View File

@ -17,6 +17,10 @@ set(WITH_SWSCALE ON CACHE BOOL "preload")
set(WITH_DSP_FFMPEG ON CACHE BOOL "preload")
set(WITH_FREERDP_DEPRECATED_COMMANDLINE ON CACHE BOOL "preload")
set(WITH_PULSE ON CACHE BOOL "preload")
set(WITH_CLIENT_SDL OFF CACHE BOOL "preload")
set(WITH_CLIENT_X11 OFF CACHE BOOL "preload")
set(WITH_CLIENT_WAYLAND OFF CACHE BOOL "preload")
set(WITH_SERVER_SHADOW OFF CACHE BOOL "preload")
set(WITH_OPAQUE_SETTINGS ON CACHE BOOL "preload")
set(WITH_VERBOSE_WINPR_ASSERT OFF CACHE BOOL "preload")
set(CHANNEL_RDPECAM ON CACHE BOOL "qa default")

22
scripts/abi-diff.sh Executable file
View File

@ -0,0 +1,22 @@
#!/bin/bash -xe
#
SCRIPT_NAME="${BASH_SOURCE[0]}"
SCRIPT_PATH=$(dirname "${BASH_SOURCE[0]}")
SCRIPT_PATH=$(realpath "$SCRIPT_PATH")
if [ $# -ne 1 ];
then
echo "$0 <reference commit or tag>"
exit 1
fi
BASE_REF=$1
cd "$SCRIPT_PATH/.."
mkdir -p abi-checker
cp ci/cmake-preloads/config-abi.txt abi-checker/
cp scripts/abi-suppr.txt abi-checker/
curl https://gist.githubusercontent.com/akallabeth/aa35caed0d39241fa17c3dc8a0539ea3/raw/ef12f8c720ac6be51aa1878710e2502b1b39cf4c/check-abi -o abi-checker/check-abi
chmod +x abi-checker/check-abi
./abi-checker/check-abi -s abi-checker/abi-suppr.txt --parameters="-Cabi-checker/config-abi.txt" $BASE_REF $(git rev-parse HEAD)

View File

@ -38,21 +38,32 @@ change_kind = function-subtype-change
name = freerdp_passphrase_read
return_type_name = const char*
[suppress_function]
[suppress_type]
change_kind = enum
name = FreeRDP_Settings_Keys_Int32
name = FreeRDP_Settings_Keys_UInt32
changed_enumerators = FreeRDP_MonitorLocalShiftX, FreeRDP_MonitorLocalShiftY
# gdi_graphics_pipeline_init_ex subtype change (__uint32 to uint32_t)
[suppress_function]
[suppress_type]
change_kind = typedef
name = UINT
[suppress_type]
change_kind = typedef
name = UINT16
[suppress_type]
change_kind = typedef
name = UINT32
[suppress_type]
change_kind = typedef
name = UINT64
# msusb_msconfig_dump did use MSUSB_CONFIG_DESCRIPTOR* instead of const MSUSB_CONFIG_DESCRIPTOR*
[suppress_function]
change_kind = function-subtype-change
name = msusb_msconfig_dump
parameter = '0 const MSUSB_CONFIG_DESCRIPTOR*
[suppress_function]
change_kind = function-subtype-change
@ -73,3 +84,8 @@ parameter = '1 const GDI_RGN*
change_kind = function-subtype-change
name = gdi_PtInRect
parameter = '0 const GDI_RECT*'
[suppress_function]
change_kind = function-subtype-change
name = GetDynamicTimeZoneInformationEffectiveYears
parameter = '0 const DYNAMIC_TIME_ZONE_INFORMATION*'