Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

python311Packages.pygame-ce: init at 2.4.1 #304472

Merged
merged 1 commit into from
May 1, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
123 changes: 123 additions & 0 deletions pkgs/development/python-modules/pygame-ce/default.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,123 @@
{ stdenv
, lib
, substituteAll
, fetchFromGitHub
, buildPythonPackage
, pythonOlder
, python
, pkg-config
, setuptools
, cython

, AppKit
, fontconfig
, freetype
, libjpeg
, libpng
, libX11
, portmidi
, SDL2
, SDL2_image
, SDL2_mixer
, SDL2_ttf
}:

buildPythonPackage rec {
pname = "pygame-ce";
version = "2.4.1";
pyproject = true;

disabled = pythonOlder "3.6";

src = fetchFromGitHub {
owner = "pygame-community";
repo = "pygame-ce";
rev = "refs/tags/${version}";
hash = "sha256-4Ky+QEUsQ0odcwEETk0yGECs7CcJQthhavboOnMDvF8=";
# Unicode file cause different checksums on HFS+ vs. other filesystems
postFetch = "rm -rf $out/docs/reST";
};

patches = [
(substituteAll {
src = ./fix-dependency-finding.patch;
buildinputs_include = builtins.toJSON (builtins.concatMap (dep: [
"${lib.getDev dep}/"
"${lib.getDev dep}/include"
"${lib.getDev dep}/include/SDL2"
]) buildInputs);
buildinputs_lib = builtins.toJSON (builtins.concatMap (dep: [
"${lib.getLib dep}/"
"${lib.getLib dep}/lib"
]) buildInputs);
})
# Skip tests that should be disabled without video driver
./skip-surface-tests.patch
];

postPatch = ''
substituteInPlace buildconfig/config_{unix,darwin}.py \
--replace-fail 'from distutils' 'from setuptools._distutils'
substituteInPlace src_py/sysfont.py \
--replace-fail 'path="fc-list"' 'path="${fontconfig}/bin/fc-list"' \
--replace-fail /usr/X11/bin/fc-list ${fontconfig}/bin/fc-list
'' + lib.optionalString stdenv.isDarwin ''
# flaky
rm test/system_test.py
'';

nativeBuildInputs = [
pkg-config
cython
setuptools
];

buildInputs = [
freetype
libX11
libjpeg
libpng
portmidi
SDL2
SDL2_image
SDL2_mixer
SDL2_ttf
] ++ lib.optionals stdenv.isDarwin [
AppKit
];

preConfigure = ''
${python.pythonOnBuildForHost.interpreter} buildconfig/config.py
'';

env = {
SDL_CONFIG = "${SDL2.dev}/bin/sdl2-config";
} // lib.optionalAttrs stdenv.cc.isClang {
NIX_CFLAGS_COMPILE = "-Wno-error=incompatible-function-pointer-types";
};

preCheck = ''
export HOME=$(mktemp -d)
# No audio or video device in test environment
export SDL_VIDEODRIVER=dummy
export SDL_AUDIODRIVER=disk
'';

checkPhase = ''
runHook preCheck
${python.interpreter} -m pygame.tests -v --exclude opengl,timing --time_out 300
runHook postCheck
'';

pythonImportsCheck = [
"pygame"
];

meta = with lib; {
description = "Pygame Community Edition (CE) - library for multimedia application built on SDL";
homepage = "https://pyga.me/";
license = licenses.lgpl21Plus;
maintainers = with maintainers; [ pbsds ];
platforms = platforms.unix;
};
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
diff --git a/buildconfig/config_darwin.py b/buildconfig/config_darwin.py
index 9503ea70..d0d3ab6e 100644
--- a/buildconfig/config_darwin.py
+++ b/buildconfig/config_darwin.py
@@ -140,16 +140,8 @@ def main(auto_config=False):
])

print('Hunting dependencies...')
- incdirs = ['/usr/local/include', '/opt/homebrew/include']
- incdirs.extend(['/usr/local/include/SDL2', '/opt/homebrew/include/SDL2', '/opt/local/include/SDL2'])
-
- incdirs.extend([
- #'/usr/X11/include',
- '/opt/local/include',
- '/opt/local/include/freetype2/freetype']
- )
- #libdirs = ['/usr/local/lib', '/usr/X11/lib', '/opt/local/lib']
- libdirs = ['/usr/local/lib', '/opt/local/lib', '/opt/homebrew/lib']
+ incdirs = @buildinputs_include@
+ libdirs = @buildinputs_lib@

for d in DEPS:
if isinstance(d, (list, tuple)):
diff --git a/buildconfig/config_unix.py b/buildconfig/config_unix.py
index 3eba5b5c..53cc6233 100644
--- a/buildconfig/config_unix.py
+++ b/buildconfig/config_unix.py
@@ -240,11 +240,8 @@ def main(auto_config=False):
if not DEPS[0].found:
raise RuntimeError('Unable to run "sdl-config". Please make sure a development version of SDL is installed.')

- incdirs = []
- libdirs = []
- for extrabase in extrabases:
- incdirs += [extrabase + d for d in origincdirs]
- libdirs += [extrabase + d for d in origlibdirs]
+ incdirs = @buildinputs_include@
+ libdirs = @buildinputs_lib@

for arg in DEPS[0].cflags.split():
if arg[:2] == '-I':
26 changes: 26 additions & 0 deletions pkgs/development/python-modules/pygame-ce/skip-surface-tests.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
diff --git a/test/surface_test.py b/test/surface_test.py
index 5ce78b6e..8b8f7ed5 100644
--- a/test/surface_test.py
+++ b/test/surface_test.py
@@ -1091,6 +1091,10 @@ class GeneralSurfaceTests(unittest.TestCase):
finally:
pygame.display.quit()

+ @unittest.skipIf(
+ os.environ.get("SDL_VIDEODRIVER") == "dummy",
+ 'requires a non-"dummy" SDL_VIDEODRIVER',
+ )
def test_convert_init(self):
"""Ensure initialization exceptions are raised
for surf.convert()."""
@@ -1118,6 +1122,10 @@ class GeneralSurfaceTests(unittest.TestCase):
finally:
pygame.display.quit()

+ @unittest.skipIf(
+ os.environ.get("SDL_VIDEODRIVER") == "dummy",
+ 'requires a non-"dummy" SDL_VIDEODRIVER',
+ )
def test_convert_alpha_init(self):
"""Ensure initialization exceptions are raised
for surf.convert_alpha()."""
6 changes: 6 additions & 0 deletions pkgs/top-level/python-packages.nix
Original file line number Diff line number Diff line change
Expand Up @@ -10978,6 +10978,12 @@ self: super: with self; {
SDL2_image = pkgs.SDL2_image_2_0;
};

pygame-ce = callPackage ../development/python-modules/pygame-ce {
inherit (pkgs.darwin.apple_sdk.frameworks) AppKit;
SDL2_image = pkgs.SDL2_image_2_0;
SDL2_mixer = pkgs.SDL2_mixer_2_0;
};

pygame-sdl2 = callPackage ../development/python-modules/pygame-sdl2 { };

pygame-gui = callPackage ../development/python-modules/pygame-gui { };
Expand Down