From 635e4a18bee83fbccac5b3e506ae5674f1f7594154b2445c1333a52e00a3643e Mon Sep 17 00:00:00 2001 From: Jan Engelhardt Date: Fri, 29 Apr 2022 20:59:08 +0000 Subject: [PATCH 1/3] - Restore sdl2-symvers.patch to full symbol list to facilitate application installation with Leap 15.x's SDL2. OBS-URL: https://build.opensuse.org/package/show/games/SDL2?expand=0&rev=123 --- SDL2.changes | 6 ++ sdl2-symvers.patch | 157 +++++++++++++++++++++++++++++++++++++++++---- 2 files changed, 152 insertions(+), 11 deletions(-) diff --git a/SDL2.changes b/SDL2.changes index cb0be1f..64ebd2c 100644 --- a/SDL2.changes +++ b/SDL2.changes @@ -1,3 +1,9 @@ +------------------------------------------------------------------- +Fri Apr 29 20:53:29 UTC 2022 - Jan Engelhardt + +- Restore sdl2-symvers.patch to full symbol list to facilitate + application installation with Leap 15.x's SDL2. + ------------------------------------------------------------------- Mon Apr 25 21:54:48 UTC 2022 - Jan Engelhardt diff --git a/sdl2-symvers.patch b/sdl2-symvers.patch index 7d76860..626b396 100644 --- a/sdl2-symvers.patch +++ b/sdl2-symvers.patch @@ -3,21 +3,27 @@ Date: 2018-01-10 23:56:12.245827883 +0100 Should-this-be-upstream: yes Is-it-upstream: not submitted yet -Functions were added over time, but neither was the SONAME changed -nor was a symvers file made. As a result, rpm is unable to -prevent a too-modern program being ran against a too-old SDL library. -It's bad user experience when symbols are resolved lazily, as the -program may crash. +The SDL project adds new functions over time, but they completely +fail to do the required ABI upkeep - which involves either bumping +the SO number or adding symvers. As a result of their lack of ABI +upkeep, the ELF system has no way to prohibit a too-modern program +being ran against a too-old SDL library, and that leads to bad user +experience, because symbols are resolved lazily and can crash the +program in the middle. + +Also note: Leap 15.x has this patch too (in shorter version), so we +need to keep all the individual symvers elements even for games/SDL2. --- - Makefile.in | 7 +++++-- - 1 file changed, 5 insertions(+), 2 deletions(-) + Makefile.in | 2 + sdl2.sym | 124 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 125 insertions(+), 1 deletion(-) -Index: SDL2-2.0.22/Makefile.in +Index: SDL2-2.0.16/Makefile.in =================================================================== ---- SDL2-2.0.22.orig/Makefile.in -+++ SDL2-2.0.22/Makefile.in -@@ -134,7 +134,7 @@ LT_AGE = @LT_AGE@ +--- SDL2-2.0.16.orig/Makefile.in ++++ SDL2-2.0.16/Makefile.in +@@ -132,7 +132,7 @@ LT_AGE = @LT_AGE@ LT_CURRENT = @LT_CURRENT@ LT_RELEASE = @LT_RELEASE@ LT_REVISION = @LT_REVISION@ @@ -26,3 +32,132 @@ Index: SDL2-2.0.22/Makefile.in all: $(srcdir)/configure Makefile $(objects)/$(TARGET) $(objects)/$(SDLMAIN_TARGET) $(objects)/$(SDLTEST_TARGET) +Index: SDL2-2.0.16/sdl2.sym +=================================================================== +--- /dev/null ++++ SDL2-2.0.16/sdl2.sym +@@ -0,0 +1,124 @@ ++SUSE_2.0.5 { ++global: ++ SDL_DequeueAudio; ++ SDL_GetHintBoolean; ++ SDL_RenderSetIntegerScale; ++ SDL_CreateRGBSurfaceWithFormat; ++ SDL_CreateRGBSurfaceWithFormatFrom; ++ SDL_GetDisplayUsableBounds; ++ SDL_GetWindowBordersSize; ++ SDL_SetWindowResizable; ++ SDL_SetWindowOpacity; ++ SDL_SetWindowModalFor; ++}; ++SUSE_2.0.6 { ++global: ++ SDL_Vulkan_LoadLibrary; ++ SDL_Vulkan_GetVkGetInstanceProcAddr; ++ SDL_Vulkan_GetInstanceExtensions; ++ SDL_Vulkan_CreateSurface; ++ SDL_Vulkan_GetDrawableSize; ++ SDL_Vulkan_UnloadLibrary; ++ SDL_ComposeCustomBlendMode; ++ SDL_HasNEON; ++ SDL_JoystickGetDeviceVendor; ++ SDL_JoystickGetDeviceProduct; ++ SDL_JoystickGetDeviceProductVersion; ++ SDL_JoystickGetDeviceType; ++ SDL_JoystickGetDeviceInstanceID; ++ SDL_JoystickGetVendor; ++ SDL_JoystickGetProduct; ++ SDL_JoystickGetProductVersion; ++ SDL_JoystickGetType; ++ SDL_JoystickGetAxisInitialState; ++ SDL_GameControllerGetVendor; ++ SDL_GameControllerGetProduct; ++ SDL_GameControllerGetProductVersion; ++ SDL_GameControllerNumMappings; ++ SDL_GameControllerMappingForIndex; ++ SDL_LoadFile; ++ SDL_LoadFile_RW; ++ SDL_DuplicateSurface; ++} SUSE_2.0.5; ++SUSE_2.0.7 { ++global: ++ SDL_NewAudioStream; ++ SDL_AudioStreamPut; ++ SDL_AudioStreamGet; ++ SDL_AudioStreamAvailable; ++ SDL_AudioStreamFlush; ++ SDL_AudioStreamClear; ++ SDL_FreeAudioStream; ++ SDL_GetMemoryFunctions; ++ SDL_SetMemoryFunctions; ++ SDL_GetNumAllocations; ++ SDL_LockJoystick; ++ SDL_UnlockJoystick; ++ SDL_SetEventFilter; ++ SDL_GetEventFilter; ++ SDL_AddEventWatch; ++ SDL_DelEventWatch; ++} SUSE_2.0.6; ++SUSE_2.0.8 { ++global: ++ SDL_fmod; ++ SDL_log10; ++ SDL_SetYUVConversionMode; ++ SDL_GetYUVConversionMode; ++} SUSE_2.0.7; ++SUSE_2.0.9 { ++global: ++ SDL_CreateThreadWithStackSize; ++ SDL_GameControllerGetPlayerIndex; ++ SDL_GameControllerMappingForDeviceIndex; ++ SDL_GameControllerRumble; ++ SDL_GetDisplayOrientation; ++ SDL_HasAVX512F; ++ SDL_HasColorKey; ++ SDL_IsTablet; ++ SDL_JoystickGetDevicePlayerIndex; ++ SDL_JoystickGetPlayerIndex; ++ SDL_JoystickRumble; ++ SDL_LinuxSetThreadPriority; ++ SDL_NumSensors; ++ SDL_SensorClose; ++ SDL_SensorFromInstanceID; ++ SDL_SensorGetData; ++ SDL_SensorGetDeviceInstanceID; ++ SDL_SensorGetDeviceName; ++ SDL_SensorGetDeviceNonPortableType; ++ SDL_SensorGetDeviceType; ++ SDL_SensorGetInstanceID; ++ SDL_SensorGetName; ++ SDL_SensorGetNonPortableType; ++ SDL_SensorGetType; ++ SDL_SensorOpen; ++ SDL_SensorUpdate; ++ SDL_exp; ++ SDL_expf; ++ SDL_wcsdup; ++} SUSE_2.0.8; ++SUSE_2.0.10 { ++global: ++ SDL_GetTouchDeviceType; ++ SDL_RWclose; ++ SDL_RWread; ++ SDL_RWseek; ++ SDL_RWsize; ++ SDL_RWtell; ++ SDL_RWwrite; ++ SDL_RenderCopyExF; ++ SDL_RenderCopyF; ++ SDL_RenderDrawLineF; ++ SDL_RenderDrawLinesF; ++ SDL_RenderDrawPointF; ++ SDL_RenderDrawPointsF; ++ SDL_RenderDrawRectF; ++ SDL_RenderDrawRectsF; ++ SDL_RenderFillRectF; ++ SDL_RenderFillRectsF; ++ SDL_RenderFlush; ++ SDL_SIMDAlloc; ++ SDL_SIMDFree; ++ SDL_SIMDGetAlignment; ++} SUSE_2.0.9; From 53e9cbe88ea35175786cc7a02803e7d009ba34890daa41f70a22f79d2789ec48 Mon Sep 17 00:00:00 2001 From: Jan Engelhardt Date: Sun, 1 May 2022 07:40:36 +0000 Subject: [PATCH 2/3] remove truncation of sdl2.sym OBS-URL: https://build.opensuse.org/package/show/games/SDL2?expand=0&rev=124 --- SDL2.spec | 1 - 1 file changed, 1 deletion(-) diff --git a/SDL2.spec b/SDL2.spec index 47e29a2..def37ec 100644 --- a/SDL2.spec +++ b/SDL2.spec @@ -108,7 +108,6 @@ library. %prep %autosetup -p1 perl -i -pe 's{\r\n}{\n}g' *.txt README.md -echo 'V_%version { global: *; };' >sdl2.sym %build %global _lto_cflags %_lto_cflags -ffat-lto-objects From 2ac8149d25b5c6887c8af80d314337bfc8a2453ad66eb1220882b3bb6cf81126 Mon Sep 17 00:00:00 2001 From: Jan Engelhardt Date: Sun, 1 May 2022 07:42:54 +0000 Subject: [PATCH 3/3] commit updated symbol list OBS-URL: https://build.opensuse.org/package/show/games/SDL2?expand=0&rev=125 --- sdl2-symvers.patch | 172 ++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 163 insertions(+), 9 deletions(-) diff --git a/sdl2-symvers.patch b/sdl2-symvers.patch index 626b396..a22704b 100644 --- a/sdl2-symvers.patch +++ b/sdl2-symvers.patch @@ -16,14 +16,14 @@ need to keep all the individual symvers elements even for games/SDL2. --- Makefile.in | 2 - sdl2.sym | 124 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - 2 files changed, 125 insertions(+), 1 deletion(-) + sdl2.sym | 278 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 279 insertions(+), 1 deletion(-) -Index: SDL2-2.0.16/Makefile.in +Index: SDL2-2.0.22/Makefile.in =================================================================== ---- SDL2-2.0.16.orig/Makefile.in -+++ SDL2-2.0.16/Makefile.in -@@ -132,7 +132,7 @@ LT_AGE = @LT_AGE@ +--- SDL2-2.0.22.orig/Makefile.in ++++ SDL2-2.0.22/Makefile.in +@@ -134,7 +134,7 @@ LT_AGE = @LT_AGE@ LT_CURRENT = @LT_CURRENT@ LT_RELEASE = @LT_RELEASE@ LT_REVISION = @LT_REVISION@ @@ -32,11 +32,11 @@ Index: SDL2-2.0.16/Makefile.in all: $(srcdir)/configure Makefile $(objects)/$(TARGET) $(objects)/$(SDLMAIN_TARGET) $(objects)/$(SDLTEST_TARGET) -Index: SDL2-2.0.16/sdl2.sym +Index: SDL2-2.0.22/sdl2.sym =================================================================== --- /dev/null -+++ SDL2-2.0.16/sdl2.sym -@@ -0,0 +1,124 @@ ++++ SDL2-2.0.22/sdl2.sym +@@ -0,0 +1,278 @@ +SUSE_2.0.5 { +global: + SDL_DequeueAudio; @@ -161,3 +161,157 @@ Index: SDL2-2.0.16/sdl2.sym + SDL_SIMDFree; + SDL_SIMDGetAlignment; +} SUSE_2.0.9; ++SUSE_2.0.12 { ++ SDL_HasARMSIMD; ++ SDL_GameControllerTypeForIndex; ++ SDL_GameControllerFromPlayerIndex; ++ SDL_GameControllerGetType; ++ SDL_GameControllerSetPlayerIndex; ++ SDL_JoystickFromPlayerIndex; ++ SDL_JoystickSetPlayerIndex; ++ SDL_Metal_CreateView; ++ SDL_Metal_DestroyView; ++ SDL_SetTextureScaleMode; ++ SDL_GetTextureScaleMode; ++ SDL_LockTextureToSurface; ++ SDL_wcsdup; ++ SDL_wcsstr; ++ SDL_wcsncmp; ++ SDL_strtokr; ++ SDL_GetAndroidSDKVersion; ++ SDL_OnApplicationWillTerminate; ++ SDL_OnApplicationDidReceiveMemoryWarning; ++ SDL_OnApplicationWillResignActive; ++ SDL_OnApplicationDidEnterBackground; ++ SDL_OnApplicationWillEnterForeground; ++ SDL_OnApplicationDidBecomeActive; ++ SDL_OnApplicationDidChangeStatusBarOrientation; ++ SDLTest_CommonUsage; ++} SUSE_2.0.10; ++SUSE_2.0.14 { ++ SDL_SIMDRealloc; ++ SDL_GetErrorMsg; ++ SDL_GameControllerGetSerial; ++ SDL_GameControllerHasAxis; ++ SDL_GameControllerHasButton; ++ SDL_GameControllerGetNumTouchpads; ++ SDL_GameControllerGetNumTouchpadFingers; ++ SDL_GameControllerGetTouchpadFinger; ++ SDL_GameControllerHasSensor; ++ SDL_GameControllerSetSensorEnabled; ++ SDL_GameControllerIsSensorEnabled; ++ SDL_GameControllerGetSensorData; ++ SDL_GameControllerRumbleTriggers; ++ SDL_GameControllerHasLED; ++ SDL_GameControllerSetLED; ++ SDL_JoystickAttachVirtual; ++ SDL_JoystickDetachVirtual; ++ SDL_JoystickDetachVirtual; ++ SDL_JoystickSetVirtualAxis; ++ SDL_JoystickSetVirtualButton; ++ SDL_JoystickSetVirtualHat; ++ SDL_JoystickGetSerial; ++ SDL_JoystickRumbleTriggers; ++ SDL_JoystickHasLED; ++ SDL_JoystickSetLED; ++ SDL_GetPreferredLocales; ++ SDL_Metal_GetLayer; ++ SDL_Metal_GetDrawableSize; ++ SDL_OpenURL; ++ SDL_LockSensors; ++ SDL_UnlockSensors; ++ SDL_crc32; ++ SDL_wcscasecmp; ++ SDL_wcsncasecmp; ++ SDL_trunc; ++ SDL_truncf; ++ SDL_HasSurfaceRLE; ++ SDL_AndroidRequestPermission; ++} SUSE_2.0.12; ++SUSE_2.0.16 { ++ SDL_GetAudioDeviceSpec; ++ SDL_GameControllerGetSensorDataRate; ++ SDL_GameControllerSendEffect; ++ SDL_JoystickSendEffect; ++ SDL_UpdateNVTexture; ++ SDL_isalpha; ++ SDL_isalnum; ++ SDL_isblank; ++ SDL_iscntrl; ++ SDL_isxdigit; ++ SDL_ispunct; ++ SDL_isprint; ++ SDL_isgraph; ++ SDL_round; ++ SDL_roundf; ++ SDL_lround; ++ SDL_lroundf; ++ SDL_SoftStretchLinear; ++ SDL_RenderGetD3D11Device; ++ SDL_AndroidShowToast; ++ SDL_TLSCleanup; ++ SDL_SetWindowAlwaysOnTop; ++ SDL_SetWindowKeyboardGrab; ++ SDL_SetWindowMouseGrab; ++ SDL_GetWindowKeyboardGrab; ++ SDL_GetWindowMouseGrab; ++ SDL_FlashWindow; ++} SUSE_2.0.14; ++SUSE_2.0.18 { ++ SDL_GameControllerHasRumble; ++ SDL_GameControllerHasRumbleTriggers; ++ SDL_GameControllerGetAppleSFSymbolsNameForButton; ++ SDL_GameControllerGetAppleSFSymbolsNameForAxis; ++ SDL_hid_init; ++ SDL_hid_exit; ++ SDL_hid_device_change_count; ++ SDL_hid_enumerate; ++ SDL_hid_free_enumeration; ++ SDL_hid_open; ++ SDL_hid_open_path; ++ SDL_hid_write; ++ SDL_hid_read_timeout; ++ SDL_hid_read; ++ SDL_hid_set_nonblocking; ++ SDL_hid_send_feature_report; ++ SDL_hid_get_feature_report; ++ SDL_hid_close; ++ SDL_hid_get_manufacturer_string; ++ SDL_hid_get_product_string; ++ SDL_hid_get_serial_number_string; ++ SDL_hid_get_indexed_string; ++ SDL_hid_ble_scan; ++ SDL_JoystickHasRumble; ++ SDL_JoystickHasRumbleTriggers; ++ SDL_RegisterApp; ++ SDL_SetTextureUserData; ++ SDL_GetTextureUserData; ++ SDL_RenderWindowToLogical; ++ SDL_RenderLogicalToWindow; ++ SDL_RenderGeometry; ++ SDL_RenderGeometryRaw; ++ SDL_RenderSetVSync; ++ SDL_RWFromFP; ++ SDL_asprintf; ++ SDL_vasprintf; ++ SDL_atan2; ++ SDL_atan2f; ++ SDL_PremultiplyAlpha; ++ SDL_LinuxSetThreadPriorityAndPolicy; ++ SDL_GetTicks64; ++ SDL_GetWindowICCProfile; ++ SDL_SetWindowMouseRect; ++ SDL_GetWindowMouseRect; ++} SUSE_2.0.16; ++SUSE_2.0.22 { ++ SDL_ClearComposition; ++ SDL_IsTextInputShown; ++ SDL_HasIntersectionF; ++ SDL_IntersectFRect; ++ SDL_UnionFRect; ++ SDL_EncloseFPoints; ++ SDL_IntersectFRectAndLine; ++ SDL_RenderGetWindow; ++ SDL_AndroidSendMessage; ++ SDL_GetTouchName; ++} SUSE_2.0.18;