at 25.11-pre 2.4 kB view raw
1{ 2 stdenv, 3 lib, 4 fetchurl, 5 fetchFromGitHub, 6 python, 7 buildPythonPackage, 8 setuptools-scm, 9 packaging, 10 aiohttp, 11 requests, 12 13 # native dependencies 14 sdl3, 15 sdl3-ttf, 16 sdl3-image, 17}: 18 19let 20 dochash = 21 if stdenv.hostPlatform.isLinux then 22 "sha256-+1zLd308zL+m68kLMeOWWxT0wYDgCd6g9cc2hEtaeUs=" 23 else if stdenv.hostPlatform.isDarwin then 24 "sha256-2uB9+ABgv5O376LyHb0ShGjM4LHYzMRMxk/k+1LBmv0=" 25 else if stdenv.hostPlatform.isWindows then 26 "sha256-46bQSPYctycizf2GXichd5V74LjxwIAPhBmklXAJ/Jg=" 27 else 28 throw "PySDL3 does not support ${stdenv.hostPlatform.uname.system}"; 29 lib_ext = stdenv.hostPlatform.extensions.sharedLibrary; 30in 31buildPythonPackage rec { 32 pname = "pysdl3"; 33 version = "0.9.8b1"; 34 pyproject = true; 35 36 pythonImportsCheck = [ "sdl3" ]; 37 38 src = fetchFromGitHub { 39 owner = "Aermoss"; 40 repo = "PySDL3"; 41 tag = "v${version}"; 42 hash = "sha256-FVUCcqKTq6qdNkYHTYFiUxt2HIaNC5LK0BEUfz8Mue8="; 43 }; 44 45 docfile = fetchurl { 46 url = "https://github.com/Aermoss/PySDL3/releases/download/v${version}/${stdenv.hostPlatform.uname.system}-Docs.py"; 47 hash = "${dochash}"; 48 }; 49 50 postUnpack = '' 51 cp ${docfile} source/sdl3/__doc__.py 52 ''; 53 54 postInstall = '' 55 mkdir $out/${python.sitePackages}/sdl3/bin 56 ln -s ${sdl3}/lib/libSDL3${lib_ext} -t $out/${python.sitePackages}/sdl3/bin 57 ln -s ${sdl3-ttf}/lib/libSDL3_ttf${lib_ext} -t $out/${python.sitePackages}/sdl3/bin 58 ln -s ${sdl3-image}/lib/libSDL3_image${lib_ext} -t $out/${python.sitePackages}/sdl3/bin 59 ''; 60 61 build-system = [ 62 setuptools-scm 63 ]; 64 65 buildInputs = [ 66 sdl3 67 sdl3-ttf 68 sdl3-image 69 ]; 70 71 dependencies = [ 72 packaging 73 aiohttp 74 requests 75 ]; 76 77 # PySDL3 tries to update both itself and SDL binaries at runtime. This hook 78 # sets some env variables to tell it not to do that. 79 setupHook = ./setup-hook.sh; 80 81 env = { 82 SDL_VIDEODRIVER = "dummy"; 83 SDL_AUDIODRIVER = "dummy"; 84 SDL_RENDER_DRIVER = "software"; 85 PYTHONFAULTHANDLER = "1"; 86 }; 87 88 meta = { 89 description = "Pure Python wrapper for SDL3"; 90 homepage = "https://github.com/Aermoss/PySDL3"; 91 license = lib.licenses.mit; 92 maintainers = with lib.maintainers; [ jansol ]; 93 platforms = [ 94 "aarch64-linux" 95 "x86_64-linux" 96 "aarch64-windows" 97 "x86_64-windows" 98 "aarch64-darwin" 99 "x86_64-darwin" 100 ]; 101 }; 102}