[arch-commits] Commit in lib32-sdl2/trunk (3 files)

Jan Steffens heftig at archlinux.org
Sat Jul 21 12:01:16 UTC 2018


    Date: Saturday, July 21, 2018 @ 12:01:16
  Author: heftig
Revision: 362700

2.0.8-9: Sync with extra/sdl2

Added:
  lib32-sdl2/trunk/cmake-include-paths.patch
  lib32-sdl2/trunk/dynapi.patch
Modified:
  lib32-sdl2/trunk/PKGBUILD

---------------------------+
 PKGBUILD                  |   66 ++++++++++++++++++++++++----------
 cmake-include-paths.patch |   45 +++++++++++++++++++++++
 dynapi.patch              |   84 ++++++++++++++++++++++++++++++++++++++++++++
 3 files changed, 176 insertions(+), 19 deletions(-)

Modified: PKGBUILD
===================================================================
--- PKGBUILD	2018-07-21 11:41:15 UTC (rev 362699)
+++ PKGBUILD	2018-07-21 12:01:16 UTC (rev 362700)
@@ -5,45 +5,73 @@
 
 pkgname=lib32-sdl2
 pkgver=2.0.8
-pkgrel=1
-pkgdesc='Simple DirectMedia Layer'
+pkgrel=9
+pkgdesc="A library for portable low-level access to a video framebuffer, audio output, mouse, and keyboard (Version 2. 32 -bit)"
 arch=('x86_64')
-url='https://www.libsdl.org'
+url="https://www.libsdl.org"
 license=('MIT')
-depends=('lib32-libgl' 'lib32-libx11' 'lib32-libxext' 'lib32-libxrender'
-         'sdl2')
-makedepends=('gcc-multilib' 'lib32-alsa-lib' 'lib32-mesa' 'lib32-libpulse'
-             'lib32-libxinerama' 'lib32-libxkbcommon' 'lib32-libxrandr'
-             'lib32-wayland' 'wayland-protocols')
+depends=('lib32-glibc' 'lib32-libxext' 'lib32-libxrender' 'lib32-libx11' 'lib32-libgl'
+         'lib32-libxcursor' 'sdl2')
+makedepends=('gcc-multilib' 'lib32-alsa-lib' 'lib32-mesa' 'lib32-libpulse' 'lib32-libxrandr'
+             'lib32-libxinerama' 'lib32-wayland' 'lib32-libxkbcommon' 'wayland-protocols'
+             'lib32-libxss' 'cmake')
 optdepends=('lib32-alsa-lib: ALSA audio driver'
             'lib32-libpulse: PulseAudio audio driver')
-source=("https://www.libsdl.org/release/SDL2-${pkgver}.tar.gz"{,.sig})
+source=("https://www.libsdl.org/release/SDL2-${pkgver}.tar.gz"{,.sig}
+        cmake-include-paths.patch dynapi.patch)
+sha512sums=('673c6058b8692a36b4a3594456b10ef6051efe79e4fb644421fc5c76b11fd68b895840a2c8b72413418c378733e2993d33f19767d0d7ed101eda6310bd70c869'
+            'SKIP'
+            '53eb853153b189bd9c0978ab8c7375608b6df5fc78e22168505bf9f6e695f6fbdc553eead0b17deb734002e047c6d5ae06642363fc629aa9ab7bef0c30388c84'
+            'bdb634b070af2f67fddcdd7908fe9ec0ea49d6edb013c35aaf1dbc840f941072ee16b21e5158de500aa5ec81165780a3aaf03e27d8bb30d50c2efb2a5465f824')
 validpgpkeys=('1528635D8053A57F77D1E08630A59377A7763BE6') # Sam Lantinga
-sha256sums=('edc77c57308661d576e843344d8638e025a7818bff73f8fbfab09c3c5fd092ec'
-            'SKIP')
 
-build() {
+prepare() {
   cd SDL2-${pkgver}
 
+  patch -Np1 -i "${srcdir}"/cmake-include-paths.patch
+  sed -i 's|lib/cmake|lib32/cmake|' CMakeLists.txt
+
+  # Don't try to link against ibus
+  sed -i '/pkg_search_module.*ibus-1.0/d' CMakeLists.txt
+
+  # Taken from Fedora; fixes "Firewatch" and "Enter the Gungeon"
+  patch -Np1 -i "${srcdir}"/dynapi.patch
+
+  rm -rf build
+  mkdir build
+}
+
+build() {
+  cd SDL2-${pkgver}/build
+
   export CC='gcc -m32'
   export CXX='g++ -m32'
   export PKG_CONFIG_PATH='/usr/lib32/pkgconfig'
 
-  ./configure \
-    --prefix='/usr' \
-    --libdir='/usr/lib32' \
-    --enable-{alsa,pulseaudio-shared,sdl-dlopen,video-wayland} \
-    --disable-{arts,esd,nas} \
-    --disable-rpath
+  cmake .. \
+      -DCMAKE_INSTALL_PREFIX=/usr \
+      -DLIB_SUFFIX=32 \
+      -DSDL_STATIC=OFF \
+      -DSDL_DLOPEN=ON \
+      -DARTS=OFF \
+      -DESD=OFF \
+      -DNAS=OFF \
+      -DALSA=ON \
+      -DPULSEAUDIO_SHARED=ON \
+      -DVIDEO_WAYLAND=ON \
+      -DRPATH=OFF \
+      -DCLOCK_GETTIME=ON
   make
 }
 
 package() {
-  cd SDL2-${pkgver}
+  cd SDL2-${pkgver}/build
 
   make DESTDIR="${pkgdir}" install
   rm -rf "${pkgdir}"/usr/{bin,include,share}
 
+  sed -i "s/libSDL2\.a/libSDL2main.a/g" "$pkgdir"/usr/lib32/cmake/SDL2/SDL2Targets-noconfig.cmake
+
   install -dm 755 "${pkgdir}"/usr/share/licenses
   ln -s sdl2 "${pkgdir}"/usr/share/licenses/lib32-sdl2
 }

Added: cmake-include-paths.patch
===================================================================
--- cmake-include-paths.patch	                        (rev 0)
+++ cmake-include-paths.patch	2018-07-21 12:01:16 UTC (rev 362700)
@@ -0,0 +1,45 @@
+# HG changeset patch
+# User Bastien Bouclet <bastien.bouclet at gmail.com>
+# Date 1523420183 -7200
+#      Wed Apr 11 06:16:23 2018 +0200
+# Branch cmake-include-path
+# Node ID 52f0351c30b25ec2bb5b0bced247ba858991bec2
+# Parent  fbfacc66c65c3b38ca065ecee1f69fcbc643c14a
+Fix the include path in the installed CMake target import file
+
+Previously the include path was {INSTALL_PREFIX}/include,
+it is now {INSTALL_PREFIX}/include/SDL2 to be consistent with
+the other build and package configuration systems.
+
+Fixes #4128.
+
+diff -r fbfacc66c65c -r 52f0351c30b2 CMakeLists.txt
+--- a/CMakeLists.txt	Mon Mar 26 12:38:29 2018 -0700
++++ b/CMakeLists.txt	Wed Apr 11 06:16:23 2018 +0200
+@@ -1695,7 +1695,7 @@
+ 
+ # Always build SDLmain
+ add_library(SDL2main STATIC ${SDLMAIN_SOURCES})
+-target_include_directories(SDL2main PUBLIC $<INSTALL_INTERFACE:include>)
++target_include_directories(SDL2main PUBLIC $<INSTALL_INTERFACE:include/SDL2>)
+ set(_INSTALL_LIBS "SDL2main")
+ if (NOT ANDROID)
+   set_target_properties(SDL2main PROPERTIES DEBUG_POSTFIX ${SDL_CMAKE_DEBUG_POSTFIX})
+@@ -1724,7 +1724,7 @@
+   endif()
+   set(_INSTALL_LIBS "SDL2" ${_INSTALL_LIBS})
+   target_link_libraries(SDL2 ${EXTRA_LIBS} ${EXTRA_LDFLAGS})
+-  target_include_directories(SDL2 PUBLIC $<INSTALL_INTERFACE:include>)
++  target_include_directories(SDL2 PUBLIC $<INSTALL_INTERFACE:include/SDL2>)
+   if (NOT ANDROID)
+     set_target_properties(SDL2 PROPERTIES DEBUG_POSTFIX ${SDL_CMAKE_DEBUG_POSTFIX})
+   endif()
+@@ -1750,7 +1750,7 @@
+   # libraries - do we need to consider this?
+   set(_INSTALL_LIBS "SDL2-static" ${_INSTALL_LIBS})
+   target_link_libraries(SDL2-static ${EXTRA_LIBS} ${EXTRA_LDFLAGS})
+-  target_include_directories(SDL2-static PUBLIC $<INSTALL_INTERFACE:include>)
++  target_include_directories(SDL2-static PUBLIC $<INSTALL_INTERFACE:include/SDL2>)
+   if (NOT ANDROID)
+     set_target_properties(SDL2-static PROPERTIES DEBUG_POSTFIX ${SDL_CMAKE_DEBUG_POSTFIX})
+   endif()

Added: dynapi.patch
===================================================================
--- dynapi.patch	                        (rev 0)
+++ dynapi.patch	2018-07-21 12:01:16 UTC (rev 362700)
@@ -0,0 +1,84 @@
+
+# HG changeset patch
+# User Ryan C. Gordon <icculus at icculus.org>
+# Date 1526575846 14400
+# Node ID 7babfecee045fac18d95e5936fede534ca54ed24
+# Parent  9e46f3dd75fd2e85e0e3ebb8a77329bc74a16e70
+dynapi: don't let system loader resolve the initializer to the wrong version.
+
+Fixes problems launching Firewatch on Linux (which statically links SDL but
+also dynamically loads a system-wide copy from a plugin shared library) with
+a newer SDL build.
+
+diff -r 9e46f3dd75fd -r 7babfecee045 src/dynapi/SDL_dynapi.c
+--- a/src/dynapi/SDL_dynapi.c	Fri May 11 09:37:00 2018 +0300
++++ b/src/dynapi/SDL_dynapi.c	Thu May 17 12:50:46 2018 -0400
+@@ -167,15 +167,10 @@
+ #error Write me.
+ #endif
+ 
+-
+-
+-/* Here's the exported entry point that fills in the jump table. */
+-/*  Use specific types when an "int" might suffice to keep this sane. */
+-typedef Sint32 (SDLCALL *SDL_DYNAPI_ENTRYFN)(Uint32 apiver, void *table, Uint32 tablesize);
+-extern DECLSPEC Sint32 SDLCALL SDL_DYNAPI_entry(Uint32, void *, Uint32);
+-
+-Sint32
+-SDL_DYNAPI_entry(Uint32 apiver, void *table, Uint32 tablesize)
++/* we make this a static function so we can call the correct one without the
++   system's dynamic linker resolving to the wrong version of this. */
++static Sint32
++initialize_jumptable(Uint32 apiver, void *table, Uint32 tablesize)
+ {
+     SDL_DYNAPI_jump_table *output_jump_table = (SDL_DYNAPI_jump_table *) table;
+ 
+@@ -202,6 +197,18 @@
+ }
+ 
+ 
++/* Here's the exported entry point that fills in the jump table. */
++/*  Use specific types when an "int" might suffice to keep this sane. */
++typedef Sint32 (SDLCALL *SDL_DYNAPI_ENTRYFN)(Uint32 apiver, void *table, Uint32 tablesize);
++extern DECLSPEC Sint32 SDLCALL SDL_DYNAPI_entry(Uint32, void *, Uint32);
++
++Sint32
++SDL_DYNAPI_entry(Uint32 apiver, void *table, Uint32 tablesize)
++{
++    return initialize_jumptable(apiver, table, tablesize);
++}
++
++
+ /* Obviously we can't use SDL_LoadObject() to load SDL.  :)  */
+ /* Also obviously, we never close the loaded library. */
+ #if defined(WIN32) || defined(_WIN32) || defined(__CYGWIN__)
+@@ -260,7 +267,7 @@
+ SDL_InitDynamicAPILocked(void)
+ {
+     const char *libname = SDL_getenv_REAL("SDL_DYNAMIC_API");
+-    SDL_DYNAPI_ENTRYFN entry = SDL_DYNAPI_entry;  /* funcs from here by default. */
++    SDL_DYNAPI_ENTRYFN entry = NULL;  /* funcs from here by default. */
+ 
+     if (libname) {
+         entry = (SDL_DYNAPI_ENTRYFN) get_sdlapi_entry(libname, "SDL_DYNAPI_entry");
+@@ -268,16 +275,15 @@
+             /* !!! FIXME: fail to startup here instead? */
+             /* !!! FIXME: definitely warn user. */
+             /* Just fill in the function pointers from this library. */
+-            entry = SDL_DYNAPI_entry;
+         }
+     }
+ 
+-    if (entry(SDL_DYNAPI_VERSION, &jump_table, sizeof (jump_table)) < 0) {
++    if (!entry || (entry(SDL_DYNAPI_VERSION, &jump_table, sizeof (jump_table)) < 0)) {
+         /* !!! FIXME: fail to startup here instead? */
+         /* !!! FIXME: definitely warn user. */
+         /* Just fill in the function pointers from this library. */
+-        if (entry != SDL_DYNAPI_entry) {
+-            if (!SDL_DYNAPI_entry(SDL_DYNAPI_VERSION, &jump_table, sizeof (jump_table))) {
++        if (!entry) {
++            if (!initialize_jumptable(SDL_DYNAPI_VERSION, &jump_table, sizeof (jump_table))) {
+                 /* !!! FIXME: now we're screwed. Should definitely abort now. */
+             }
+         }
+



More information about the arch-commits mailing list