From 14bdcf40fb54c8ec4fa2c9baae061bf9cd43c233 Mon Sep 17 00:00:00 2001 From: rdb Date: Wed, 12 Jan 2022 10:22:52 +0100 Subject: [PATCH 01/10] Bump version number on release/1.10.x branch to 1.10.12 --- dtool/PandaVersion.pp | 2 +- setup.cfg | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/dtool/PandaVersion.pp b/dtool/PandaVersion.pp index d5cc7fea53..4b071d3777 100644 --- a/dtool/PandaVersion.pp +++ b/dtool/PandaVersion.pp @@ -7,7 +7,7 @@ // place to put this. // Use spaces to separate the major, minor, and sequence numbers here. -#define PANDA_VERSION 1 10 11 +#define PANDA_VERSION 1 10 12 // This variable will be defined to false in the CVS repository, but // scripts that generate source tarballs and/or binary releases for diff --git a/setup.cfg b/setup.cfg index 6fd743f75a..5d70295f57 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,6 +1,6 @@ [metadata] name = Panda3D -version = 1.10.11 +version = 1.10.12 url = https://www.panda3d.org/ description = Panda3D is a framework for 3D rendering and game development for Python and C++ programs. license = Modified BSD License From b518da99a669f044858017f6525a97d9a7ed1d56 Mon Sep 17 00:00:00 2001 From: rdb Date: Wed, 12 Jan 2022 10:23:19 +0100 Subject: [PATCH 02/10] windisplay: fix origin not respected when switching to windowed mode --- panda/src/windisplay/winGraphicsWindow.cxx | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/panda/src/windisplay/winGraphicsWindow.cxx b/panda/src/windisplay/winGraphicsWindow.cxx index 4bc914e976..8b70b51938 100644 --- a/panda/src/windisplay/winGraphicsWindow.cxx +++ b/panda/src/windisplay/winGraphicsWindow.cxx @@ -283,6 +283,17 @@ process_events() { */ void WinGraphicsWindow:: set_properties_now(WindowProperties &properties) { + if (properties.has_fullscreen() && !properties.get_fullscreen() && + is_fullscreen()) { + if (do_windowed_switch()) { + _properties.set_fullscreen(false); + properties.clear_fullscreen(); + } else { + windisplay_cat.warning() + << "Switching to windowed mode failed!\n"; + } + } + GraphicsWindow::set_properties_now(properties); if (!properties.is_any_specified()) { // The base class has already handled this case. @@ -413,14 +424,6 @@ set_properties_now(WindowProperties &properties) { windisplay_cat.warning() << "Switching to fullscreen mode failed!\n"; } - } else if (!properties.get_fullscreen() && is_fullscreen()){ - if (do_windowed_switch()){ - _properties.set_fullscreen(false); - properties.clear_fullscreen(); - } else { - windisplay_cat.warning() - << "Switching to windowed mode failed!\n"; - } } } From bd37e8776f4803734d5cf16cbb65903288165147 Mon Sep 17 00:00:00 2001 From: rdb Date: Thu, 13 Jan 2022 10:56:12 +0100 Subject: [PATCH 03/10] makepanda: Fix platform tag on aarch64 manylinux Wheels ended up being tagged as i686. --- makepanda/makepanda.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/makepanda/makepanda.py b/makepanda/makepanda.py index 94215cba14..71aa749a23 100755 --- a/makepanda/makepanda.py +++ b/makepanda/makepanda.py @@ -480,6 +480,8 @@ elif target == 'linux' and (os.path.isfile("/lib/libc-2.5.so") or os.path.isfile # This is manylinux1. A bit of a sloppy check, though. if GetTargetArch() in ('x86_64', 'amd64'): PLATFORM = 'manylinux1-x86_64' + elif GetTargetArch() in ('arm64', 'aarch64'): + PLATFORM = 'manylinux1-aarch64' else: PLATFORM = 'manylinux1-i686' @@ -487,6 +489,8 @@ elif target == 'linux' and (os.path.isfile("/lib/libc-2.12.so") or os.path.isfil # Same sloppy check for manylinux2010. if GetTargetArch() in ('x86_64', 'amd64'): PLATFORM = 'manylinux2010-x86_64' + elif GetTargetArch() in ('arm64', 'aarch64'): + PLATFORM = 'manylinux2010-aarch64' else: PLATFORM = 'manylinux2010-i686' @@ -494,6 +498,8 @@ elif target == 'linux' and (os.path.isfile("/lib/libc-2.17.so") or os.path.isfil # Same sloppy check for manylinux2014. if GetTargetArch() in ('x86_64', 'amd64'): PLATFORM = 'manylinux2014-x86_64' + elif GetTargetArch() in ('arm64', 'aarch64'): + PLATFORM = 'manylinux2014-aarch64' else: PLATFORM = 'manylinux2014-i686' @@ -501,6 +507,8 @@ elif target == 'linux' and (os.path.isfile("/lib/i386-linux-gnu/libc-2.24.so") o # Same sloppy check for manylinux_2_24. if GetTargetArch() in ('x86_64', 'amd64'): PLATFORM = 'manylinux_2_24-x86_64' + elif GetTargetArch() in ('arm64', 'aarch64'): + PLATFORM = 'manylinux_2_24-aarch64' else: PLATFORM = 'manylinux_2_24-i686' From 54606c8894b56fea53d34f0d87049320f6649169 Mon Sep 17 00:00:00 2001 From: rdb Date: Fri, 14 Jan 2022 09:58:18 +0100 Subject: [PATCH 04/10] showbase: docstring fix [skip ci] --- direct/src/showbase/ShowBase.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/direct/src/showbase/ShowBase.py b/direct/src/showbase/ShowBase.py index 79d4dad10a..1f286588d2 100644 --- a/direct/src/showbase/ShowBase.py +++ b/direct/src/showbase/ShowBase.py @@ -19,7 +19,9 @@ Built-in global variables Some key variables used in all Panda3D scripts are actually attributes of the ShowBase instance. When creating an instance of this class, it will write many of these variables to the built-in scope of the Python interpreter, so that -they are accessible to any Python module, without the need fors extra imports. +they are accessible to any Python module, without the need for extra imports. +For example, the ShowBase instance itself is accessible anywhere through the +:data:`~builtins.base` variable. While these are handy for prototyping, we do not recommend using them in bigger projects, as it can make the code confusing to read to other Python developers, From be2f6a7c614550ef0132c48892d8f1b4270431eb Mon Sep 17 00:00:00 2001 From: rdb Date: Fri, 14 Jan 2022 10:24:44 +0100 Subject: [PATCH 05/10] glgsg: Fix missing GR_adjacency geom rendering flag I don't think this flag being missing currently affects any functionality, but it is meant to be set when geometry shaders (with adjacency) are supported. --- panda/src/glstuff/glGraphicsStateGuardian_src.cxx | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/panda/src/glstuff/glGraphicsStateGuardian_src.cxx b/panda/src/glstuff/glGraphicsStateGuardian_src.cxx index 54a62e10bb..4884fb9c20 100644 --- a/panda/src/glstuff/glGraphicsStateGuardian_src.cxx +++ b/panda/src/glstuff/glGraphicsStateGuardian_src.cxx @@ -827,12 +827,6 @@ reset() { Geom::GR_line_strip | Geom::GR_flat_last_vertex; -#ifndef OPENGLES - if (_supports_geometry_shaders) { - _supported_geom_rendering |= Geom::GR_adjacency; - } -#endif - _supports_point_parameters = false; #ifdef OPENGLES_1 @@ -1769,6 +1763,10 @@ reset() { _supports_geometry_shaders = false; _glFramebufferTexture = nullptr; } + + if (_supports_geometry_shaders) { + _supported_geom_rendering |= Geom::GR_adjacency; + } #endif _shader_caps._supports_glsl = _supports_glsl; From 484a9394f99c9590489fdfccfec9b3998d2e9f7d Mon Sep 17 00:00:00 2001 From: rdb Date: Fri, 14 Jan 2022 10:27:23 +0100 Subject: [PATCH 06/10] installpanda: Correct lib dir detection on ArchLinux Eliminates a downstream patch in the AUR [skip ci] --- makepanda/installpanda.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/makepanda/installpanda.py b/makepanda/installpanda.py index 529913aadf..d0111e0049 100644 --- a/makepanda/installpanda.py +++ b/makepanda/installpanda.py @@ -136,6 +136,9 @@ def GetLibDir(): if os.path.isfile('/etc/debian_version'): return GetDebLibDir() + elif os.path.isfile('/etc/arch-release'): + # ArchLinux has lib64, but it is a symlink to lib. + return "lib" else: # Okay, maybe we're on an RPM-based system? return GetRPMLibDir() From 58afbbfaa0d7905680b648ec72576538fa2d4d1f Mon Sep 17 00:00:00 2001 From: rdb Date: Fri, 14 Jan 2022 10:46:56 +0100 Subject: [PATCH 07/10] dist: Add missing platforms to default installer dictionary --- direct/src/dist/commands.py | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/direct/src/dist/commands.py b/direct/src/dist/commands.py index cb3fbc34df..e710366177 100644 --- a/direct/src/dist/commands.py +++ b/direct/src/dist/commands.py @@ -1426,6 +1426,20 @@ class bdist_apps(setuptools.Command): 'manylinux1_i686': ['gztar'], 'manylinux2010_x86_64': ['gztar'], 'manylinux2010_i686': ['gztar'], + 'manylinux2014_x86_64': ['gztar'], + 'manylinux2014_i686': ['gztar'], + 'manylinux2014_aarch64': ['gztar'], + 'manylinux2014_armv7l': ['gztar'], + 'manylinux2014_ppc64': ['gztar'], + 'manylinux2014_ppc64le': ['gztar'], + 'manylinux2014_s390x': ['gztar'], + 'manylinux_2_24_x86_64': ['gztar'], + 'manylinux_2_24_i686': ['gztar'], + 'manylinux_2_24_aarch64': ['gztar'], + 'manylinux_2_24_armv7l': ['gztar'], + 'manylinux_2_24_ppc64': ['gztar'], + 'manylinux_2_24_ppc64le': ['gztar'], + 'manylinux_2_24_s390x': ['gztar'], # Everything else defaults to ['zip'] } From c32866fa3318bcc464f19f0b43b9261e242f4321 Mon Sep 17 00:00:00 2001 From: rdb Date: Fri, 14 Jan 2022 10:48:25 +0100 Subject: [PATCH 08/10] showbase: Fix missing ClockObject import in JobManager Regression in eefcae7b05aef7628b691d8601f8d7d9d0916cb3 --- direct/src/showbase/JobManager.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/direct/src/showbase/JobManager.py b/direct/src/showbase/JobManager.py index 609d6f09c4..68bcbd0e32 100755 --- a/direct/src/showbase/JobManager.py +++ b/direct/src/showbase/JobManager.py @@ -1,4 +1,4 @@ -from panda3d.core import ConfigVariableBool, ConfigVariableDouble +from panda3d.core import ConfigVariableBool, ConfigVariableDouble, ClockObject from direct.directnotify.DirectNotifyGlobal import directNotify from direct.task.TaskManagerGlobal import taskMgr from direct.showbase.Job import Job From b803ef2ac58cfbec9808d57ed607ee2e26c794da Mon Sep 17 00:00:00 2001 From: rdb Date: Fri, 14 Jan 2022 10:50:48 +0100 Subject: [PATCH 09/10] dist: Set default Linux target to manylinux2014 According to https://github.com/mayeut/pep600_compliance/blob/master/README.rst manylinux2010 is EOL, and so are all Linux distributions that support manylinux2010 but not manylinux2014. Setting the default to manylinux2014 means that more thirdparty packages are supported and hopefully means we're not always behind and have to struggle to keep building for it. --- direct/src/dist/commands.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/direct/src/dist/commands.py b/direct/src/dist/commands.py index 9c4768a1e2..4a628d292d 100644 --- a/direct/src/dist/commands.py +++ b/direct/src/dist/commands.py @@ -263,7 +263,7 @@ class build_apps(setuptools.Command): self.exclude_modules = {} self.icons = {} self.platforms = [ - 'manylinux2010_x86_64', + 'manylinux2014_x86_64', 'macosx_10_9_x86_64', 'win_amd64', ] @@ -588,7 +588,7 @@ class build_apps(setuptools.Command): if platform.startswith('linux_'): # Also accept manylinux. arch = platform[6:] - pip_args += ['--platform', 'manylinux2010_' + arch] + pip_args += ['--platform', 'manylinux2014_' + arch] if self.use_optimized_wheels: pip_args += [ From ce7c1ec16c5a0b0ceb7c9bebb30e85e76e34592f Mon Sep 17 00:00:00 2001 From: rdb Date: Fri, 14 Jan 2022 10:55:16 +0100 Subject: [PATCH 10/10] dist: Suppress warning about android_log module building for Android This module is linked statically and provided via the built-in module loader --- direct/src/dist/FreezeTool.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/direct/src/dist/FreezeTool.py b/direct/src/dist/FreezeTool.py index a39260d60b..db22e9bf02 100644 --- a/direct/src/dist/FreezeTool.py +++ b/direct/src/dist/FreezeTool.py @@ -91,6 +91,8 @@ ignoreImports = { 'toml.encoder': ['numpy'], 'py._builtin': ['__builtin__'], + + 'site': ['android_log'], } if sys.version_info >= (3, 8):