SHA256
1
0
forked from pool/SDL2

Accepting request 974547 from games

- Restore sdl2-symvers.patch to full symbol list to facilitate
  application installation with Leap 15.x's SDL2.

OBS-URL: https://build.opensuse.org/request/show/974547
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/SDL2?expand=0&rev=40
This commit is contained in:
Dominique Leuenberger 2022-05-05 21:05:20 +00:00 committed by Git OBS Bridge
commit 2613f9016c
3 changed files with 302 additions and 8 deletions

View File

@ -1,3 +1,9 @@
-------------------------------------------------------------------
Fri Apr 29 20:53:29 UTC 2022 - Jan Engelhardt <jengelh@inai.de>
- 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 <jengelh@inai.de>

View File

@ -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

View File

@ -3,15 +3,21 @@ 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 | 278 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 279 insertions(+), 1 deletion(-)
Index: SDL2-2.0.22/Makefile.in
===================================================================
@ -26,3 +32,286 @@ Index: SDL2-2.0.22/Makefile.in
all: $(srcdir)/configure Makefile $(objects)/$(TARGET) $(objects)/$(SDLMAIN_TARGET) $(objects)/$(SDLTEST_TARGET)
Index: SDL2-2.0.22/sdl2.sym
===================================================================
--- /dev/null
+++ SDL2-2.0.22/sdl2.sym
@@ -0,0 +1,278 @@
+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;
+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;