Merge pull request #41902 from orivej/sdl2

SDL2: do not propagate private dependencies
This commit is contained in:
Orivej Desh 2018-07-02 21:37:17 +00:00 committed by GitHub
commit cbd150087e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -1,14 +1,14 @@
{ stdenv, lib, fetchurl, pkgconfig, audiofile { stdenv, lib, fetchurl, pkgconfig, pruneLibtoolFiles
, openglSupport ? false, libGL , openglSupport ? false, libGL
, alsaSupport ? true, alsaLib , alsaSupport ? true, alsaLib
, x11Support ? true, libICE, libXi, libXScrnSaver, libXcursor, libXinerama, libXext, libXxf86vm, libXrandr , x11Support ? true, libX11, xproto, libICE, libXi, libXScrnSaver, libXcursor, libXinerama, libXext, libXxf86vm, libXrandr
, waylandSupport ? true, wayland, wayland-protocols, libxkbcommon , waylandSupport ? true, wayland, wayland-protocols, libxkbcommon
, dbusSupport ? false, dbus , dbusSupport ? false, dbus
, udevSupport ? false, udev , udevSupport ? false, udev
, ibusSupport ? false, ibus , ibusSupport ? false, ibus
, pulseaudioSupport ? true, libpulseaudio , pulseaudioSupport ? true, libpulseaudio
, AudioUnit, Cocoa, CoreAudio, CoreServices, ForceFeedback, OpenGL , AudioUnit, Cocoa, CoreAudio, CoreServices, ForceFeedback, OpenGL
, libiconv , audiofile, libiconv
}: }:
# NOTE: When editing this expression see if the same change applies to # NOTE: When editing this expression see if the same change applies to
@ -33,18 +33,26 @@ stdenv.mkDerivation rec {
patches = [ ./find-headers.patch ]; patches = [ ./find-headers.patch ];
nativeBuildInputs = [ pkgconfig ]; nativeBuildInputs = [ pkgconfig pruneLibtoolFiles ];
propagatedBuildInputs = [ libiconv ] propagatedBuildInputs = dlopenPropagatedBuildInputs;
++ optional dbusSupport dbus
++ optional udevSupport udev dlopenPropagatedBuildInputs = [ ]
++ optionals x11Support [ libICE libXi libXScrnSaver libXcursor libXinerama libXext libXrandr libXxf86vm ] # Propagated for #include <GLES/gl.h> in SDL_opengles.h.
++ optionals waylandSupport [ wayland wayland-protocols libxkbcommon ] ++ optional openglSupport libGL
# Propagated for #include <X11/Xlib.h> and <X11/Xatom.h> in SDL_syswm.h.
++ optionals x11Support [ libX11 xproto ];
dlopenBuildInputs = [ ]
++ optional alsaSupport alsaLib ++ optional alsaSupport alsaLib
++ optional pulseaudioSupport libpulseaudio; ++ optional dbusSupport dbus
++ optional pulseaudioSupport libpulseaudio
++ optional udevSupport udev
++ optionals waylandSupport [ wayland wayland-protocols libxkbcommon ]
++ optionals x11Support [ libICE libXi libXScrnSaver libXcursor libXinerama libXext libXrandr libXxf86vm ];
buildInputs = [ audiofile ] buildInputs = [ audiofile libiconv ]
++ optional openglSupport libGL ++ dlopenBuildInputs
++ optional ibusSupport ibus ++ optional ibusSupport ibus
++ optionals stdenv.isDarwin [ AudioUnit Cocoa CoreAudio CoreServices ForceFeedback OpenGL ]; ++ optionals stdenv.isDarwin [ AudioUnit Cocoa CoreAudio CoreServices ForceFeedback OpenGL ];
@ -76,12 +84,13 @@ stdenv.mkDerivation rec {
# SDL API that requires said libraries will fail to start. # SDL API that requires said libraries will fail to start.
# #
# You can grep SDL sources with `grep -rE 'SDL_(NAME|.*_SYM)'` to # You can grep SDL sources with `grep -rE 'SDL_(NAME|.*_SYM)'` to
# confirm that they actually use most of the `propagatedBuildInputs` # list the symbols used in this way.
# from above in this way. This is pretty weird. postFixup = let
postFixup = '' rpath = makeLibraryPath (dlopenPropagatedBuildInputs ++ dlopenBuildInputs);
in optionalString (stdenv.hostPlatform.extensions.sharedLibrary == ".so") ''
for lib in $out/lib/*.so* ; do for lib in $out/lib/*.so* ; do
if [[ -L "$lib" ]]; then if ! [[ -L "$lib" ]]; then
patchelf --set-rpath "$(patchelf --print-rpath $lib):${lib.makeLibraryPath propagatedBuildInputs}" "$lib" patchelf --set-rpath "$(patchelf --print-rpath $lib):${rpath}" "$lib"
fi fi
done done
''; '';