[PATCH] gnu: sdl: Replace with sdl12-compat.

  • Done
  • quality assurance status badge
Details
2 participants
  • iyzsong
  • Maxim Cournoyer
Owner
unassigned
Submitted by
iyzsong
Severity
normal

Debbugs page

I
I
iyzsong wrote on 8 Mar 06:40 -0800
(address . guix-patches@gnu.org)(name . 宋文武)(address . iyzsong@member.fsf.org)
0979322c4288b59afb9c87759a58489143ce1438.1709908788.git.iyzsong@member.fsf.org
From: 宋文武 <iyzsong@member.fsf.org>

* gnu/packages/sdl.scm (sdl12-compat): New package.
(sdl): Remove package, defined as sdl12-compat.
(sdl2): Don't inherit from sdl.
(propagated-inputs-with-sdl2): Add case for sdl12-compat.
(sdl-union): Hardcode version to "1.2.15" to avoid rebuilds.

Change-Id: I843d349b3d69164cc640c7db204464a51819a0df
---
gnu/packages/sdl.scm | 165 ++++++++++++++++++++++++-------------------
1 file changed, 94 insertions(+), 71 deletions(-)

Toggle diff (221 lines)
diff --git a/gnu/packages/sdl.scm b/gnu/packages/sdl.scm
index 3a4aafcaa7..8646e505c4 100644
--- a/gnu/packages/sdl.scm
+++ b/gnu/packages/sdl.scm
@@ -43,6 +43,7 @@ (define-module (gnu packages sdl)
#:use-module (guix download)
#:use-module (guix git-download)
#:use-module (guix utils)
+ #:use-module (guix build-system cmake)
#:use-module (guix build-system copy)
#:use-module (guix build-system gnu)
#:use-module (guix build-system trivial)
@@ -67,35 +68,48 @@ (define-module (gnu packages sdl)
#:use-module (gnu packages xorg)
#:export (sdl-union))
-(define-public sdl
+(define-public sdl2
(package
- (name "sdl")
- (version "1.2.15")
+ (name "sdl2")
+ (version "2.28.5")
(source (origin
- (method url-fetch)
- (uri
- (string-append "https://libsdl.org/release/SDL-"
- version ".tar.gz"))
- (sha256
- (base32
- "005d993xcac8236fpvd1iawkz4wqjybkpn8dbwaliqz5jfkidlyn"))
- (patches (search-patches "sdl-libx11-1.6.patch"))))
+ (method url-fetch)
+ (uri
+ (string-append "https://libsdl.org/release/SDL2-"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "1r36cspzv6h8abiqbbkrgm17g975p9wiziir2xabj3721dyv6b1k"))))
(build-system gnu-build-system)
+ ;; TODO: Remove 'append' and 'cons*', was used to avoid rebuilds.
(arguments
- '(;; Explicitly link against shared libraries instead of dlopening them.
- ;; For X11, ALSA, and PulseAudio.
- ;; OpenGL library is still dlopened at runtime.
- #:configure-flags '("--disable-alsa-shared"
- "--disable-pulseaudio-shared"
- "--disable-x11-shared"
- ;; Explicitly link with mesa.
- ;; This add mesa to libsdl's RUNPATH, to make dlopen
- ;; finding the libGL from mesa at runtime.
- "LDFLAGS=-lGL")
-
- #:make-flags '("V=1") ;build verbosely
-
- #:tests? #f)) ; no check target
+ (list
+ #:tests? #f ;no check target
+ ;; Explicitly link against shared libraries instead of dlopening them.
+ ;; For X11, ALSA, and PulseAudio.
+ ;; OpenGL library is still dlopened at runtime.
+ #:configure-flags
+ #~(append
+ '("--disable-wayland-shared"
+ "--enable-video-kmsdrm"
+ "--disable-kmsdrm-shared")
+ '("--disable-alsa-shared"
+ "--disable-pulseaudio-shared"
+ "--disable-x11-shared"
+ ;; Explicitly link with mesa.
+ ;; This add mesa to libsdl's RUNPATH, to make dlopen
+ ;; finding the libGL from mesa at runtime.
+ "LDFLAGS=-lGL"))
+ #:make-flags
+ #~(cons*
+ ;; SDL dlopens libudev and libvulkan, so make sure they are in
+ ;; rpath. This overrides the LDFLAG set in sdl’s configure-flags,
+ ;; which isn’t necessary as sdl2 includes Mesa by default.
+ (string-append "LDFLAGS=-Wl,-rpath,"
+ #$(this-package-input "eudev") "/lib"
+ ",-rpath,"
+ #$(this-package-input "vulkan-loader") "/lib")
+ '("V=1")))) ;build verbosely
(propagated-inputs
;; SDL headers include X11 headers.
(list libx11
@@ -105,60 +119,67 @@ (define-public sdl
;; change in pkg-config.
mesa))
(native-inputs (list pkg-config))
- (inputs (list libxrandr glu alsa-lib pulseaudio))
+ (inputs
+ ;; SDL2 needs to be built with ibus support otherwise some systems
+ ;; experience a bug where input events are doubled.
+ ;;
+ ;; For more information, see: https://dev.solus-project.com/T1721
+ (list
+ libxrandr
+ glu
+ alsa-lib
+ pulseaudio
+ dbus
+ eudev ;for discovering input devices
+ glib
+ ibus-minimal
+ libxkbcommon
+ libxcursor ;enables X11 cursor support
+ vulkan-loader
+ wayland
+ wayland-protocols))
(outputs '("out" "debug"))
(synopsis "Cross platform game development library")
- (description "Simple DirectMedia Layer is a cross-platform development
-library designed to provide low level access to audio, keyboard, mouse,
-joystick, and graphics hardware.")
+ (description
+ "Simple DirectMedia Layer is a cross-platform development library designed to
+provide low level access to audio, keyboard, mouse, joystick, and graphics
+hardware.")
(home-page "https://libsdl.org/")
- (license license:lgpl2.1)))
+ (license license:bsd-3)))
-(define-public sdl2
+(define-public sdl12-compat
(package
- (inherit sdl)
- (name "sdl2")
- (version "2.28.5")
+ (name "sdl12-compat")
+ (version "1.2.68")
(source (origin
- (method url-fetch)
- (uri
- (string-append "https://libsdl.org/release/SDL2-"
- version ".tar.gz"))
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/libsdl-org/sdl12-compat")
+ (commit (string-append "release-" version))))
+ (file-name (git-file-name name version))
(sha256
(base32
- "1r36cspzv6h8abiqbbkrgm17g975p9wiziir2xabj3721dyv6b1k"))))
+ "0qsjlzi1wqszi6k4pc3k9xdvzid5cx6ql8wbjw6qdapzpvf6arvz"))))
+ (build-system cmake-build-system)
(arguments
- (substitute-keyword-arguments (package-arguments sdl)
- ((#:configure-flags flags)
- #~(append '("--disable-wayland-shared" "--enable-video-kmsdrm"
- "--disable-kmsdrm-shared")
- #$flags))
- ((#:make-flags flags ''())
- #~(cons*
- ;; SDL dlopens libudev and libvulkan, so make sure they are in
- ;; rpath. This overrides the LDFLAG set in sdl’s configure-flags,
- ;; which isn’t necessary as sdl2 includes Mesa by default.
- (string-append "LDFLAGS=-Wl,-rpath,"
- #$(this-package-input "eudev") "/lib"
- ",-rpath,"
- #$(this-package-input "vulkan-loader") "/lib")
- #$flags))))
- (inputs
- ;; SDL2 needs to be built with ibus support otherwise some systems
- ;; experience a bug where input events are doubled.
- ;;
- ;; For more information, see: https://dev.solus-project.com/T1721
- (modify-inputs (package-inputs sdl)
- (append dbus
- eudev ;for discovering input devices
- glib
- ibus-minimal
- libxkbcommon
- libxcursor ;enables X11 cursor support
- vulkan-loader
- wayland
- wayland-protocols)))
- (license license:bsd-3)))
+ (list #:tests? #f ;no check target
+ #:configure-flags
+ ;; This add SDL2 to sdl12-compat's RUNPATH, to make dlopen finding the
+ ;; libSDL2 at runtime.
+ #~'("-DCMAKE_SHARED_LINKER_FLAGS=-lSDL2")))
+ (inputs (list sdl2))
+ (propagated-inputs (list glu)) ;required by SDL_opengl.h
+ (synopsis "Cross platform game development library")
+ (description "Simple DirectMedia Layer is a cross-platform development library
+designed to provide low level access to audio, keyboard, mouse, joystick, and
+graphics hardware. This package is a compatibility layer; it provides a binary and
+source compatible API for programs written against SDL 1.2, but it uses SDL 2.0
+behind the scenes.")
+ (home-page "https://libsdl.org/")
+ ;; dr_mp3 code are under public domain.
+ (license (list license:zlib license:public-domain))))
+
+(define-public sdl sdl12-compat)
(define-public sdl2-2.0
(package
@@ -423,7 +444,7 @@ (define* (sdl-union #:optional (packages (list sdl sdl-gfx sdl-net sdl-ttf
If PACKAGES are not specified, all SDL packages are used."
(package
(name "sdl-union")
- (version (package-version sdl))
+ (version "1.2.15") ;TODO: use correct SDL version
(source #f)
(build-system trivial-build-system)
(arguments
@@ -452,6 +473,8 @@ (define (propagated-inputs-with-sdl2 package)
(map (match-lambda
(("sdl" _)
`("sdl2" ,sdl2))
+ (("sdl12-compat" _)
+ `("sdl2" ,sdl2))
(other other))
(package-propagated-inputs package)))

base-commit: de3f86443837b7bd6e3bad11dbaeed2550d4207c
--
2.41.0
I
I
iyzsong wrote on 8 Mar 07:06 -0800
[PATCH v2] gnu: sdl: Replace with sdl12-compat.
(address . 69638@debbugs.gnu.org)(name . 宋文武)(address . iyzsong@member.fsf.org)
7eeca0be6e33b66a1f15e4e43d5b66f6a531616a.1709910349.git.iyzsong@member.fsf.org
From: 宋文武 <iyzsong@member.fsf.org>

* gnu/packages/sdl.scm (sdl12-compat): New package.
(sdl): Remove package, defined as sdl12-compat.
(sdl2): Don't inherit from sdl.
(propagated-inputs-with-sdl2): Add case for sdl12-compat.
(sdl-union): Hardcode version to "1.2.15" to avoid rebuilds.
* gnu/packages/patches/sdl-libx11-1.6.patch: Remove file.
* gnu/local.mk (dist_patch_DATA): Unregister it.

Change-Id: I843d349b3d69164cc640c7db204464a51819a0df
---
gnu/local.mk | 1 -
gnu/packages/patches/sdl-libx11-1.6.patch | 13 --
gnu/packages/sdl.scm | 173 +++++++++++++---------
3 files changed, 102 insertions(+), 85 deletions(-)
delete mode 100644 gnu/packages/patches/sdl-libx11-1.6.patch

Toggle diff (260 lines)
diff --git a/gnu/local.mk b/gnu/local.mk
index 16241ee441..0f76d0c771 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -2027,7 +2027,6 @@ dist_patch_DATA = \
%D%/packages/patches/scons-test-environment.patch \
%D%/packages/patches/screen-hurd-path-max.patch \
%D%/packages/patches/scsh-nonstring-search-path.patch \
- %D%/packages/patches/sdl-libx11-1.6.patch \
%D%/packages/patches/seed-webkit.patch \
%D%/packages/patches/sendgmail-accept-ignored-gsuite-flag.patch \
%D%/packages/patches/sendgmail-remove-domain-restriction.patch \
diff --git a/gnu/packages/patches/sdl-libx11-1.6.patch b/gnu/packages/patches/sdl-libx11-1.6.patch
deleted file mode 100644
index 73ba9ac071..0000000000
--- a/gnu/packages/patches/sdl-libx11-1.6.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-Update _XData32 declaration in SDL_x11sym.h to match that of libx11 1.6.
-
---- SDL-1.2.15/src/video/x11/SDL_x11sym.h.~1~ 2012-01-19 01:30:06.000000000 -0500
-+++ SDL-1.2.15/src/video/x11/SDL_x11sym.h 2014-12-26 00:22:36.445067694 -0500
-@@ -165,7 +165,7 @@
- */
- #ifdef LONG64
- SDL_X11_MODULE(IO_32BIT)
--SDL_X11_SYM(int,_XData32,(Display *dpy,register long *data,unsigned len),(dpy,data,len),return)
-+SDL_X11_SYM(int,_XData32,(Display *dpy,register _Xconst long *data,unsigned len),(dpy,data,len),return)
- SDL_X11_SYM(void,_XRead32,(Display *dpy,register long *data,long len),(dpy,data,len),)
- #endif
-
diff --git a/gnu/packages/sdl.scm b/gnu/packages/sdl.scm
index 3a4aafcaa7..3d81baf368 100644
--- a/gnu/packages/sdl.scm
+++ b/gnu/packages/sdl.scm
@@ -43,6 +43,7 @@ (define-module (gnu packages sdl)
#:use-module (guix download)
#:use-module (guix git-download)
#:use-module (guix utils)
+ #:use-module (guix build-system cmake)
#:use-module (guix build-system copy)
#:use-module (guix build-system gnu)
#:use-module (guix build-system trivial)
@@ -67,35 +68,48 @@ (define-module (gnu packages sdl)
#:use-module (gnu packages xorg)
#:export (sdl-union))
-(define-public sdl
+(define-public sdl2
(package
- (name "sdl")
- (version "1.2.15")
+ (name "sdl2")
+ (version "2.28.5")
(source (origin
- (method url-fetch)
- (uri
- (string-append "https://libsdl.org/release/SDL-"
- version ".tar.gz"))
- (sha256
- (base32
- "005d993xcac8236fpvd1iawkz4wqjybkpn8dbwaliqz5jfkidlyn"))
- (patches (search-patches "sdl-libx11-1.6.patch"))))
+ (method url-fetch)
+ (uri
+ (string-append "https://libsdl.org/release/SDL2-"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "1r36cspzv6h8abiqbbkrgm17g975p9wiziir2xabj3721dyv6b1k"))))
(build-system gnu-build-system)
+ ;; TODO: Remove 'append' and 'cons*', was used to avoid rebuilds.
(arguments
- '(;; Explicitly link against shared libraries instead of dlopening them.
- ;; For X11, ALSA, and PulseAudio.
- ;; OpenGL library is still dlopened at runtime.
- #:configure-flags '("--disable-alsa-shared"
- "--disable-pulseaudio-shared"
- "--disable-x11-shared"
- ;; Explicitly link with mesa.
- ;; This add mesa to libsdl's RUNPATH, to make dlopen
- ;; finding the libGL from mesa at runtime.
- "LDFLAGS=-lGL")
-
- #:make-flags '("V=1") ;build verbosely
-
- #:tests? #f)) ; no check target
+ (list
+ #:tests? #f ;no check target
+ ;; Explicitly link against shared libraries instead of dlopening them.
+ ;; For X11, ALSA, and PulseAudio.
+ ;; OpenGL library is still dlopened at runtime.
+ #:configure-flags
+ #~(append
+ '("--disable-wayland-shared"
+ "--enable-video-kmsdrm"
+ "--disable-kmsdrm-shared")
+ '("--disable-alsa-shared"
+ "--disable-pulseaudio-shared"
+ "--disable-x11-shared"
+ ;; Explicitly link with mesa.
+ ;; This add mesa to libsdl's RUNPATH, to make dlopen
+ ;; finding the libGL from mesa at runtime.
+ "LDFLAGS=-lGL"))
+ #:make-flags
+ #~(cons*
+ ;; SDL dlopens libudev and libvulkan, so make sure they are in
+ ;; rpath. This overrides the LDFLAG set in sdl’s configure-flags,
+ ;; which isn’t necessary as sdl2 includes Mesa by default.
+ (string-append "LDFLAGS=-Wl,-rpath,"
+ #$(this-package-input "eudev") "/lib"
+ ",-rpath,"
+ #$(this-package-input "vulkan-loader") "/lib")
+ '("V=1")))) ;build verbosely
(propagated-inputs
;; SDL headers include X11 headers.
(list libx11
@@ -105,60 +119,75 @@ (define-public sdl
;; change in pkg-config.
mesa))
(native-inputs (list pkg-config))
- (inputs (list libxrandr glu alsa-lib pulseaudio))
+ (inputs
+ ;; SDL2 needs to be built with ibus support otherwise some systems
+ ;; experience a bug where input events are doubled.
+ ;;
+ ;; For more information, see: https://dev.solus-project.com/T1721
+ (list
+ libxrandr
+ glu
+ alsa-lib
+ pulseaudio
+ dbus
+ eudev ;for discovering input devices
+ glib
+ ibus-minimal
+ libxkbcommon
+ libxcursor ;enables X11 cursor support
+ vulkan-loader
+ wayland
+ wayland-protocols))
(outputs '("out" "debug"))
(synopsis "Cross platform game development library")
- (description "Simple DirectMedia Layer is a cross-platform development
-library designed to provide low level access to audio, keyboard, mouse,
-joystick, and graphics hardware.")
+ (description
+ "Simple DirectMedia Layer is a cross-platform development library designed to
+provide low level access to audio, keyboard, mouse, joystick, and graphics
+hardware.")
(home-page "https://libsdl.org/")
- (license license:lgpl2.1)))
+ (license license:bsd-3)))
-(define-public sdl2
+(define-public sdl12-compat
(package
- (inherit sdl)
- (name "sdl2")
- (version "2.28.5")
+ (name "sdl12-compat")
+ (version "1.2.68")
(source (origin
- (method url-fetch)
- (uri
- (string-append "https://libsdl.org/release/SDL2-"
- version ".tar.gz"))
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/libsdl-org/sdl12-compat")
+ (commit (string-append "release-" version))))
+ (file-name (git-file-name name version))
(sha256
(base32
- "1r36cspzv6h8abiqbbkrgm17g975p9wiziir2xabj3721dyv6b1k"))))
+ "0qsjlzi1wqszi6k4pc3k9xdvzid5cx6ql8wbjw6qdapzpvf6arvz"))))
+ (build-system cmake-build-system)
(arguments
- (substitute-keyword-arguments (package-arguments sdl)
- ((#:configure-flags flags)
- #~(append '("--disable-wayland-shared" "--enable-video-kmsdrm"
- "--disable-kmsdrm-shared")
- #$flags))
- ((#:make-flags flags ''())
- #~(cons*
- ;; SDL dlopens libudev and libvulkan, so make sure they are in
- ;; rpath. This overrides the LDFLAG set in sdl’s configure-flags,
- ;; which isn’t necessary as sdl2 includes Mesa by default.
- (string-append "LDFLAGS=-Wl,-rpath,"
- #$(this-package-input "eudev") "/lib"
- ",-rpath,"
- #$(this-package-input "vulkan-loader") "/lib")
- #$flags))))
- (inputs
- ;; SDL2 needs to be built with ibus support otherwise some systems
- ;; experience a bug where input events are doubled.
- ;;
- ;; For more information, see: https://dev.solus-project.com/T1721
- (modify-inputs (package-inputs sdl)
- (append dbus
- eudev ;for discovering input devices
- glib
- ibus-minimal
- libxkbcommon
- libxcursor ;enables X11 cursor support
- vulkan-loader
- wayland
- wayland-protocols)))
- (license license:bsd-3)))
+ (list #:tests? #f ;no check target
+ #:configure-flags
+ ;; This add SDL2 to sdl12-compat's RUNPATH, to make dlopen finding the
+ ;; libSDL2 at runtime.
+ #~'("-DCMAKE_SHARED_LINKER_FLAGS=-lSDL2")
+ #:phases
+ #~(modify-phases %standard-phases
+ (add-after 'install 'install-sdl.pc
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let ((pcdir (string-append (assoc-ref outputs "out")
+ "/lib/pkgconfig")))
+ (symlink (string-append pcdir "/sdl12_compat.pc")
+ (string-append pcdir "/sdl.pc"))))))))
+ (inputs (list sdl2))
+ (propagated-inputs (list glu)) ;required by SDL_opengl.h
+ (synopsis "Cross platform game development library")
+ (description "Simple DirectMedia Layer is a cross-platform development library
+designed to provide low level access to audio, keyboard, mouse, joystick, and
+graphics hardware. This package is a compatibility layer; it provides a binary and
+source compatible API for programs written against SDL 1.2, but it uses SDL 2.0
+behind the scenes.")
+ (home-page "https://libsdl.org/")
+ ;; dr_mp3 code are under public domain.
+ (license (list license:zlib license:public-domain))))
+
+(define-public sdl sdl12-compat)
(define-public sdl2-2.0
(package
@@ -423,7 +452,7 @@ (define* (sdl-union #:optional (packages (list sdl sdl-gfx sdl-net sdl-ttf
If PACKAGES are not specified, all SDL packages are used."
(package
(name "sdl-union")
- (version (package-version sdl))
+ (version "1.2.15") ;TODO: use correct SDL version
(source #f)
(build-system trivial-build-system)
(arguments
@@ -452,6 +481,8 @@ (define (propagated-inputs-with-sdl2 package)
(map (match-lambda
(("sdl" _)
`("sdl2" ,sdl2))
+ (("sdl12-compat" _)
+ `("sdl2" ,sdl2))
(other other))
(package-propagated-inputs package)))

base-commit: de3f86443837b7bd6e3bad11dbaeed2550d4207c
--
2.41.0
I
I
iyzsong wrote on 10 Mar 01:33 -0800
[PATCH v3] gnu: sdl: Replace with sdl12-compat.
(address . 69638@debbugs.gnu.org)(name . 宋文武)(address . iyzsong@member.fsf.org)
4347cc9aa13d3d76e413ebedd6d20f2965868667.1710062633.git.iyzsong@member.fsf.org
From: 宋文武 <iyzsong@member.fsf.org>

* gnu/packages/sdl.scm (sdl12-compat): New package.
(sdl): Remove package, defined as sdl12-compat.
(sdl2): Don't inherit from sdl.
(propagated-inputs-with-sdl2): Add case for sdl12-compat.
(sdl-union): Hardcode version to "1.2.15" to avoid rebuilds.
* gnu/packages/patches/sdl-libx11-1.6.patch: Remove file.
* gnu/local.mk (dist_patch_DATA): Unregister it.

Change-Id: I843d349b3d69164cc640c7db204464a51819a0df
---
Changes since v2:
sdl12-compat: Add a 'patch-sdl-config' phase to fix build for frozen-bubble.


---
gnu/local.mk | 1 -
gnu/packages/patches/sdl-libx11-1.6.patch | 13 --
gnu/packages/sdl.scm | 180 +++++++++++++---------
3 files changed, 109 insertions(+), 85 deletions(-)
delete mode 100644 gnu/packages/patches/sdl-libx11-1.6.patch

Toggle diff (267 lines)
diff --git a/gnu/local.mk b/gnu/local.mk
index 174c4c30e2..93bed266ac 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -2030,7 +2030,6 @@ dist_patch_DATA = \
%D%/packages/patches/scons-test-environment.patch \
%D%/packages/patches/screen-hurd-path-max.patch \
%D%/packages/patches/scsh-nonstring-search-path.patch \
- %D%/packages/patches/sdl-libx11-1.6.patch \
%D%/packages/patches/seed-webkit.patch \
%D%/packages/patches/sendgmail-accept-ignored-gsuite-flag.patch \
%D%/packages/patches/sendgmail-remove-domain-restriction.patch \
diff --git a/gnu/packages/patches/sdl-libx11-1.6.patch b/gnu/packages/patches/sdl-libx11-1.6.patch
deleted file mode 100644
index 73ba9ac071..0000000000
--- a/gnu/packages/patches/sdl-libx11-1.6.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-Update _XData32 declaration in SDL_x11sym.h to match that of libx11 1.6.
-
---- SDL-1.2.15/src/video/x11/SDL_x11sym.h.~1~ 2012-01-19 01:30:06.000000000 -0500
-+++ SDL-1.2.15/src/video/x11/SDL_x11sym.h 2014-12-26 00:22:36.445067694 -0500
-@@ -165,7 +165,7 @@
- */
- #ifdef LONG64
- SDL_X11_MODULE(IO_32BIT)
--SDL_X11_SYM(int,_XData32,(Display *dpy,register long *data,unsigned len),(dpy,data,len),return)
-+SDL_X11_SYM(int,_XData32,(Display *dpy,register _Xconst long *data,unsigned len),(dpy,data,len),return)
- SDL_X11_SYM(void,_XRead32,(Display *dpy,register long *data,long len),(dpy,data,len),)
- #endif
-
diff --git a/gnu/packages/sdl.scm b/gnu/packages/sdl.scm
index 3a4aafcaa7..17cae5708f 100644
--- a/gnu/packages/sdl.scm
+++ b/gnu/packages/sdl.scm
@@ -43,6 +43,7 @@ (define-module (gnu packages sdl)
#:use-module (guix download)
#:use-module (guix git-download)
#:use-module (guix utils)
+ #:use-module (guix build-system cmake)
#:use-module (guix build-system copy)
#:use-module (guix build-system gnu)
#:use-module (guix build-system trivial)
@@ -67,35 +68,48 @@ (define-module (gnu packages sdl)
#:use-module (gnu packages xorg)
#:export (sdl-union))
-(define-public sdl
+(define-public sdl2
(package
- (name "sdl")
- (version "1.2.15")
+ (name "sdl2")
+ (version "2.28.5")
(source (origin
- (method url-fetch)
- (uri
- (string-append "https://libsdl.org/release/SDL-"
- version ".tar.gz"))
- (sha256
- (base32
- "005d993xcac8236fpvd1iawkz4wqjybkpn8dbwaliqz5jfkidlyn"))
- (patches (search-patches "sdl-libx11-1.6.patch"))))
+ (method url-fetch)
+ (uri
+ (string-append "https://libsdl.org/release/SDL2-"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "1r36cspzv6h8abiqbbkrgm17g975p9wiziir2xabj3721dyv6b1k"))))
(build-system gnu-build-system)
+ ;; TODO: Remove 'append' and 'cons*', was used to avoid rebuilds.
(arguments
- '(;; Explicitly link against shared libraries instead of dlopening them.
- ;; For X11, ALSA, and PulseAudio.
- ;; OpenGL library is still dlopened at runtime.
- #:configure-flags '("--disable-alsa-shared"
- "--disable-pulseaudio-shared"
- "--disable-x11-shared"
- ;; Explicitly link with mesa.
- ;; This add mesa to libsdl's RUNPATH, to make dlopen
- ;; finding the libGL from mesa at runtime.
- "LDFLAGS=-lGL")
-
- #:make-flags '("V=1") ;build verbosely
-
- #:tests? #f)) ; no check target
+ (list
+ #:tests? #f ;no check target
+ ;; Explicitly link against shared libraries instead of dlopening them.
+ ;; For X11, ALSA, and PulseAudio.
+ ;; OpenGL library is still dlopened at runtime.
+ #:configure-flags
+ #~(append
+ '("--disable-wayland-shared"
+ "--enable-video-kmsdrm"
+ "--disable-kmsdrm-shared")
+ '("--disable-alsa-shared"
+ "--disable-pulseaudio-shared"
+ "--disable-x11-shared"
+ ;; Explicitly link with mesa.
+ ;; This add mesa to libsdl's RUNPATH, to make dlopen
+ ;; finding the libGL from mesa at runtime.
+ "LDFLAGS=-lGL"))
+ #:make-flags
+ #~(cons*
+ ;; SDL dlopens libudev and libvulkan, so make sure they are in
+ ;; rpath. This overrides the LDFLAG set in sdl’s configure-flags,
+ ;; which isn’t necessary as sdl2 includes Mesa by default.
+ (string-append "LDFLAGS=-Wl,-rpath,"
+ #$(this-package-input "eudev") "/lib"
+ ",-rpath,"
+ #$(this-package-input "vulkan-loader") "/lib")
+ '("V=1")))) ;build verbosely
(propagated-inputs
;; SDL headers include X11 headers.
(list libx11
@@ -105,60 +119,82 @@ (define-public sdl
;; change in pkg-config.
mesa))
(native-inputs (list pkg-config))
- (inputs (list libxrandr glu alsa-lib pulseaudio))
+ (inputs
+ ;; SDL2 needs to be built with ibus support otherwise some systems
+ ;; experience a bug where input events are doubled.
+ ;;
+ ;; For more information, see: https://dev.solus-project.com/T1721
+ (list
+ libxrandr
+ glu
+ alsa-lib
+ pulseaudio
+ dbus
+ eudev ;for discovering input devices
+ glib
+ ibus-minimal
+ libxkbcommon
+ libxcursor ;enables X11 cursor support
+ vulkan-loader
+ wayland
+ wayland-protocols))
(outputs '("out" "debug"))
(synopsis "Cross platform game development library")
- (description "Simple DirectMedia Layer is a cross-platform development
-library designed to provide low level access to audio, keyboard, mouse,
-joystick, and graphics hardware.")
+ (description
+ "Simple DirectMedia Layer is a cross-platform development library designed to
+provide low level access to audio, keyboard, mouse, joystick, and graphics
+hardware.")
(home-page "https://libsdl.org/")
- (license license:lgpl2.1)))
+ (license license:bsd-3)))
-(define-public sdl2
+(define-public sdl12-compat
(package
- (inherit sdl)
- (name "sdl2")
- (version "2.28.5")
+ (name "sdl12-compat")
+ (version "1.2.68")
(source (origin
- (method url-fetch)
- (uri
- (string-append "https://libsdl.org/release/SDL2-"
- version ".tar.gz"))
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/libsdl-org/sdl12-compat")
+ (commit (string-append "release-" version))))
+ (file-name (git-file-name name version))
(sha256
(base32
- "1r36cspzv6h8abiqbbkrgm17g975p9wiziir2xabj3721dyv6b1k"))))
+ "0qsjlzi1wqszi6k4pc3k9xdvzid5cx6ql8wbjw6qdapzpvf6arvz"))))
+ (build-system cmake-build-system)
(arguments
- (substitute-keyword-arguments (package-arguments sdl)
- ((#:configure-flags flags)
- #~(append '("--disable-wayland-shared" "--enable-video-kmsdrm"
- "--disable-kmsdrm-shared")
- #$flags))
- ((#:make-flags flags ''())
- #~(cons*
- ;; SDL dlopens libudev and libvulkan, so make sure they are in
- ;; rpath. This overrides the LDFLAG set in sdl’s configure-flags,
- ;; which isn’t necessary as sdl2 includes Mesa by default.
- (string-append "LDFLAGS=-Wl,-rpath,"
- #$(this-package-input "eudev") "/lib"
- ",-rpath,"
- #$(this-package-input "vulkan-loader") "/lib")
- #$flags))))
- (inputs
- ;; SDL2 needs to be built with ibus support otherwise some systems
- ;; experience a bug where input events are doubled.
- ;;
- ;; For more information, see: https://dev.solus-project.com/T1721
- (modify-inputs (package-inputs sdl)
- (append dbus
- eudev ;for discovering input devices
- glib
- ibus-minimal
- libxkbcommon
- libxcursor ;enables X11 cursor support
- vulkan-loader
- wayland
- wayland-protocols)))
- (license license:bsd-3)))
+ (list #:tests? #f ;no check target
+ #:configure-flags
+ ;; This add SDL2 to sdl12-compat's RUNPATH, to make dlopen finding the
+ ;; libSDL2 at runtime.
+ #~'("-DCMAKE_SHARED_LINKER_FLAGS=-lSDL2")
+ #:phases
+ #~(modify-phases %standard-phases
+ (add-after 'unpack 'patch-sdl-config
+ (lambda _
+ ;; Keep the old behaviour to honour "--prefix" option for
+ ;; "--cflags" and "--libs", required by 'perl-alien-sdl'.
+ (substitute* "sdl-config.in"
+ (("echo -I[$][{]includedir[}]") "echo -I${prefix}/include")
+ (("echo -L[$][{]libdir[}]") "echo -L${prefix}/lib"))))
+ (add-after 'install 'install-sdl.pc
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let ((pcdir (string-append (assoc-ref outputs "out")
+ "/lib/pkgconfig")))
+ (symlink (string-append pcdir "/sdl12_compat.pc")
+ (string-append pcdir "/sdl.pc"))))))))
+ (inputs (list sdl2))
+ (propagated-inputs (list glu)) ;required by SDL_opengl.h
+ (synopsis "Cross platform game development library")
+ (description "Simple DirectMedia Layer is a cross-platform development library
+designed to provide low level access to audio, keyboard, mouse, joystick, and
+graphics hardware. This package is a compatibility layer; it provides a binary and
+source compatible API for programs written against SDL 1.2, but it uses SDL 2.0
+behind the scenes.")
+ (home-page "https://libsdl.org/")
+ ;; dr_mp3 code are under public domain.
+ (license (list license:zlib license:public-domain))))
+
+(define-public sdl sdl12-compat)
(define-public sdl2-2.0
(package
@@ -423,7 +459,7 @@ (define* (sdl-union #:optional (packages (list sdl sdl-gfx sdl-net sdl-ttf
If PACKAGES are not specified, all SDL packages are used."
(package
(name "sdl-union")
- (version (package-version sdl))
+ (version "1.2.15") ;TODO: use correct SDL version
(source #f)
(build-system trivial-build-system)
(arguments
@@ -452,6 +488,8 @@ (define (propagated-inputs-with-sdl2 package)
(map (match-lambda
(("sdl" _)
`("sdl2" ,sdl2))
+ (("sdl12-compat" _)
+ `("sdl2" ,sdl2))
(other other))
(package-propagated-inputs package)))

base-commit: 7758e63f7a89f53fbb7c7a265ae472af0a8dfab0
--
2.41.0
M
M
Maxim Cournoyer wrote on 12 Apr 12:00 -0700
(address . iyzsong@envs.net)
877ch2pfsj.fsf@gmail.com
Hi,

iyzsong@envs.net writes:

Toggle quote (8 lines)
> From: �懭 <iyzsong@member.fsf.org>
>
> * gnu/packages/sdl.scm (sdl12-compat): New package.
> (sdl): Remove package, defined as sdl12-compat.
> (sdl2): Don't inherit from sdl.
> (propagated-inputs-with-sdl2): Add case for sdl12-compat.
> (sdl-union): Hardcode version to "1.2.15" to avoid rebuilds.

It was triggering a mass rebuild anyway, so I've opted to use the actual
'sdl' version and merged this to core-updates.

Thank you, closing.

--
Thanks,
Maxim
Closed
?
Your comment

This issue is archived.

To comment on this conversation send an email to 69638@patchwise.org

To respond to this issue using the mumi CLI, first switch to it
mumi current 69638
Then, you may apply the latest patchset in this issue (with sign off)
mumi am -- -s
Or, compose a reply to this issue
mumi compose
Or, send patches to this issue
mumi send-email *.patch