Commit Graph

3161 Commits

Author SHA1 Message Date
rdb 807be99f10 cppparser: Parse parenthesised noexcept() and explicit() 2021-03-02 13:31:00 +01:00
rdb 8eccc9f569 cppparser: Support __VA_OPT__ in variadic preprocessor defs 2021-03-02 13:07:27 +01:00
rdb 179f316b36 interrogate: Wrap anonymous parameter names as positional-only args 2021-03-01 19:33:43 +01:00
rdb f6b1b6dbb0 interrogate: Support three-way comparison operator <=> 2021-03-01 19:33:35 +01:00
rdb 684992cf8f cppparser: C++20 features: spaceship operator, char8_t, constinit/eval 2021-03-01 19:33:31 +01:00
rdb 8cbe36b352 Merge branch 'release/1.10.x' 2021-03-01 19:33:27 +01:00
rdb bdb2ef1631 pipeline: Fix crash upon exception in custom thread
We can't call PyErr_Restore() without a valid thread state, which won't exist in a custom thread if we just called PyGILState_Release().  Not sure how this has ever worked.
2021-03-01 16:19:53 +01:00
rdb eab1308438 interrogate: Fix bug sorting overloads of AsyncFuture::set_result() 2021-03-01 10:59:02 +01:00
rdb 4b24ac86a5 dtoolbase: Fix issues building with C++20 2021-03-01 10:16:03 +01:00
rdb 5ae08eadf7 Merge branch 'release/1.10.x' 2021-02-22 19:38:49 +01:00
rdb 7ed9f573e7 interrogate: Map operator / to true divide unless it takes an int
This is a little less conservative than the previous behaviour of only mapping if it takes a float, but this behaviour is more intuitive for non-scalar operands such as for Filename's operator /.
2021-02-22 19:14:18 +01:00
rdb 9d9337dc4d dtoolutil: Fix Filename division operator in Python 3 2021-02-22 18:14:12 +01:00
rdb 601ca323f5 interrogate: Support __truediv__, __floordiv__, etc. special methods 2021-02-22 18:13:34 +01:00
rdb fb9b334d58 Merge branch 'release/1.10.x' 2021-02-17 10:57:30 +01:00
rdb 08f344b00c dtool: Fix memory leak in OEncryptStream/IDecryptStream
Fixes #1114
2021-02-16 11:33:39 +01:00
rdb 8afd0e526f Merge branch 'release/1.10.x' 2021-02-15 11:38:45 +01:00
rdb 4dfe651133 prc: Fix istream/ostream/iostream properties of StreamWrapper 2021-02-15 11:13:33 +01:00
rdb c73c94c862 Merge branch 'release/1.10.x' 2021-02-06 01:23:34 +01:00
rdb c89631488b prc: Add properties to ConfigPageManager 2021-02-05 23:51:25 +01:00
rdb 06921aba93 CMake: replace "CVS" with "Git" 2021-01-18 23:50:08 +01:00
rdb 243fd10db0 CMake: Set PANDA_BUILD_DATE_STR if SOURCE_DATE_EPOCH is set
Adds CMake support for the 54638bfc10 change.

One thing to note, compared to makepanda, is that CMake doesn't automatically rebuild the file if this env var is changed.
2021-01-18 23:49:03 +01:00
rdb 613441060b Merge branch 'release/1.10.x' 2021-01-18 23:47:36 +01:00
rdb 54638bfc10 dtoolutil: Allow overriding PandaSystem::get_build_date()
This is useful to create bit-for-bit reproducible builds.  In the buildbots, we set it to the timestamp of the latest commit.
2021-01-18 16:41:22 +01:00
rdb 0b53355347 interrogate: respect SOURCE_DATE_EPOCH setting for file identifiers
This can be used to ensure that the build is bit-for-bit reproducible.

See https://reproducible-builds.org/docs/source-date-epoch/
2021-01-18 02:34:16 +01:00
rdb f392cc9fe6 dtoolutil: Mark PandaSystem::get_build_date() as deprecated
It results in the build not being reproduceable.
2021-01-18 00:52:04 +01:00
rdb e099d9e787 Merge branch 'release/1.10.x' 2021-01-02 02:33:35 +01:00
rdb a7042091be py_panda: backport some py_compat.h definitions 2021-01-01 16:37:21 +01:00
rdb 99f9352e76 interrogate: improvements to __setstate__ handling:
* Force single arg variant, easing argument parsing
* Allow defining __setstate__ taking multiple args, leading to tuple unpack
* Allow __setstate__ to be called on already initialized object (useful with __reduce__)
2021-01-01 15:57:41 +01:00
rdb 3e1d4aa6b5 interrogate: Fix memory leak in __setstate__ 2020-12-31 18:12:52 +01:00
rdb 1793c9a938 interrogate: Fix __setstate__ not working for subclasses 2020-12-31 18:11:50 +01:00
Daniel 74a4648965 mayaprogs: Completely refactor the maya2egg server
The maya2egg_server utility is no longer a separate utility. To run the maya2egg_server (now Maya conversion server), use `maya2egg -server` or `egg2maya -server`.

Two new utilities have been added: `maya2egg_client` and `egg2maya_client`. Both of them are Maya version independent, and do not rely on any Maya libraries. However, they're only built with SDKs that already come with the Maya binaries, as the server makes its own assumptions about the current working directory (the client and the server are expected to be on the same machine.)

A new feature has been added to ProgramBase: an `exit_on_complete` flag, which allows you to parse the command line without exiting the program upon a failure or a help command.

In addition to this, a getopt bug has been fixed in ProgramBase: It is now possible to clear the state of the Panda implementation of getopt, making it possible once again to parse command line arguments twice in a row.

Closes #1025
2020-12-29 16:16:36 +01:00
rdb 7d5fee3066 Update version number on release/1.10.x branch to 1.10.9 2020-12-29 12:50:02 +01:00
rdb a3010a43a5 Merge branch 'release/1.10.x' 2020-12-24 15:31:52 +01:00
rdb 1b8c4e0029 dtoolutil: Fix compile warning in ExecutionEnvironment 2020-12-22 23:14:59 +01:00
rdb 131ae98bfd Merge branch 'release/1.10.x' 2020-12-22 16:45:24 +01:00
rdb 30bca7a119 dtoolutil: fix ExecutionEnvironment::has_environment_variable() for shadowed var
Fixes MAIN_DIR being set more than once (which seems to avoid a compiler bug in an opt4 build).
2020-12-22 16:22:45 +01:00
rdb f26f7d2226 CMake: Fix CMAKE_CONFIGURATION_TYPES not being set properly in the cache 2020-12-21 23:31:20 +01:00
rdb dfc5b47ec9 CMake: Improve reporting of enabled-but-not-found packages
Fixes #1072 (together with 3786dc2aea)
2020-12-20 18:36:41 +01:00
rdb 3786dc2aea CMake: Fix detection and use of SSE2 compiler flag on MSVC
This is one half of the fix for #1072
2020-12-20 18:35:17 +01:00
rdb ae3d8c2663 dtoolbase: More elegant fix for NeverFreeMemory memory leak
Better fix for 74983d19a4 is to just switch to an std::multimap.  This couldn't go in the 1.10.x branch due to the risk of ABI change.
2020-12-20 01:02:15 +01:00
rdb dee8df9427 Merge branch 'release/1.10.x' 2020-12-20 01:02:08 +01:00
rdb 74983d19a4 dtoolbase: Fix small memory leak in NeverFreeMemory
It's using a set purely keyed by number of remaining bytes, so if there are two pages with the exact same number of remaining bytes, one of them gets lost.

See #1077
2020-12-20 00:19:37 +01:00
rdb abe3c2bf0b CMake: Mark all system macOS frameworks as advanced variables
It should be extremely unusual to want to change these, and they are just cluttering up the CMake GUI.
2020-12-19 00:33:22 +01:00
rdb 662ace0173 CMake: Don't define HAVE_CG for arm64 systems 2020-12-19 00:26:13 +01:00
rdb a1b2d5b8dc Make use of new function call methods in Python 3.9 2020-12-12 17:28:21 +01:00
rdb ed397b3ab8 Merge branch 'release/1.10.x' 2020-12-09 17:59:37 +01:00
rdb 951c182c0e makepanda: Preparatory changes for Big Sur / arm64 builds 2020-11-30 19:46:20 +01:00
rdb 93900a203e putil: Backport part of 9d8c523dfa
Fixes #886
2020-11-17 23:36:06 +01:00
rdb a6e6826939 interrogate: support __getstate__ and __setstate__
The latter in particular will be called instead of __init__, so must construct the object.
2020-11-17 22:35:25 +01:00
rdb c788912070 Merge branch 'release/1.10.x' 2020-10-02 12:20:58 +02:00
rdb 0e70fcf1ef Bump version number on release/1.10.x branch to 1.10.8 2020-10-02 12:15:31 +02:00
rdb e060a29228 general: Clean up hacks to support Python 3.5 from codebase 2020-10-02 12:07:04 +02:00
rdb 6d228dfd2e express: Add ZipArchive class, support mounting zips to VFS 2020-10-01 23:58:27 +02:00
rdb 5655e97ec1 interrogate: fix misbehaving == and != operator if only < is defined
Fixes comparison of two empty RenderEffects objects
2020-09-16 23:21:16 +02:00
rdb 66ac3be604 Merge branch 'release/1.10.x' into master 2020-09-12 23:23:58 +02:00
rdb 2b3a1d9d73 prc: StreamReader should hold GIL for PyBytes_FromStringAndSize
This is due to python/cpython#21074, which causes a segfault in the latest Python master when creating a bytes object of size 0.

readlines() has been reimplemented to use a C++ vector in order to prevent constantly re-locking and unlocking the GIL for every line.
2020-09-12 22:53:37 +02:00
rdb 2402594808 interrogatedb: Fix faulty version comparison in Python 3.10 2020-09-12 22:50:29 +02:00
rdb dabab90415 interrogate: Fix compilation error of bindings with Python 3.9+ 2020-09-12 22:50:03 +02:00
rdb 3daf1ae1b1 general: Assorted API reference fixes 2020-09-09 18:03:49 +02:00
rdb 707ea089cb Merge remote-tracking branch 'origin/release/1.10.x' 2020-09-01 11:09:29 +02:00
rdb ab6bf5f4f7 general: Add workaround for Windows bug in various uses of isprint()
See #994; there is a regression in certain versions of the Windows CRT that gives the wrong result for isprint().  This adds workarounds to various potentially affected locations where isprint() is being used.
2020-08-21 14:51:42 +02:00
rdb b655aa86c5 Merge branch 'release/1.10.x' 2020-08-17 13:05:51 +02:00
LD 9f0fc0a594 dtoolbase: Fix bad double-prec NaN/inf detection in release build
Fixes #987
Closes #988
2020-08-17 12:16:33 +02:00
rdb 4a21329a79 Merge remote-tracking branch 'origin/release/1.10.x' 2020-06-20 19:49:55 +02:00
rdb 0b19afa1a3 parser-inc: fix invalid template args for std::map<>
This fixes an interrogate warning.
2020-06-15 15:20:38 +02:00
rdb 0d9cb5c392 CMake: force finding Assimp in MODULE mode 2020-06-14 13:09:36 +02:00
rdb d01c53c2d8 Merge branch 'release/1.10.x' 2020-06-14 13:02:25 +02:00
rdb f295b28369 cppparser: update prebuilt cppBison files 2020-06-14 12:20:40 +02:00
rdb 16f2958adb cppparser: support sizeof operator with constexpr 2020-06-14 12:12:27 +02:00
rdb 43961718fa parser-inc: add missing template args to std containers 2020-06-14 12:11:42 +02:00
rdb 97e6a314b1 cppparser: support arbitrary constant expression in bitfields 2020-06-14 11:31:58 +02:00
rdb 36c3d3e622 Merge branch 'release/1.10.x' 2020-05-05 18:15:57 +02:00
rdb 9159fc1029 operator delete should check for null pointer before deallocating
It is a pervasive belief that using "delete" with a null pointer is safe, so our custom delete operators should also handle this case correctly.

This may fix regressions introduced by #934
2020-05-05 18:13:13 +02:00
rdb 3598222977 Merge branch 'release/1.10.x' 2020-05-05 16:47:38 +02:00
rdb e4573ef0fe cleanup: Remove more unnecessary nullptr checks before delete
Follow-up to #934
2020-05-05 14:46:30 +02:00
rdb 68d094dba4 dtoolutil: fix buffer overrun on FreeBSD extracting long cmdline args
This happens when compiling with CMake, which passes very long command-lines.
2020-05-05 13:20:20 +02:00
rdb ae078046d6 CMake: Use MODULE mode in find_package() for OpenEXR
Otherwise a system OpenEXRConfig.cmake may end up getting picked up, which operates differently.
2020-05-05 11:09:00 +02:00
rdb aa0a0d6ab4 CMake: better handling of per-config options, esp. in single-config 2020-05-01 19:53:50 +02:00
rdb 2ac65cc98c CMake: remove obsolete plugin version settings 2020-04-30 21:43:49 +02:00
rdb 798066a05b dtool: remove outdated plugin-specific settings 2020-04-30 21:43:31 +02:00
rdb d799a09002 cleanup: Remove support for EOL versions of Python
Fixes #905
2020-04-26 20:07:56 +02:00
rdb f56f06b65c CMake: fix missing Coverage config in multi-config generators 2020-04-25 10:34:12 +02:00
rdb 565f97b3b9 CMake: properly default build type to Standard
This wasn't being set properly because it needs to be set before the project() call
2020-04-13 15:10:20 +02:00
rdb ffed048c3e CMake: NOTIFY_DEBUG should be turned on in Standard build 2020-04-13 13:17:51 +02:00
rdb 00b81f381a prc: give StreamWrapperBase virtual destructor (fixes compile error)
The compile error was observed with VS 2019 + clang-cl + Ninja + CMake in a Standard build on Windows 10.
2020-04-13 13:15:58 +02:00
rdb d403b16249 dtoolutil: fix compile warnings on Windows 2020-04-13 12:33:02 +02:00
rdb 9d8c523dfa putil: Assorted improvements to BitArray, SparseArray, *BitMask*:
* Support converting BitMask types to int
* BitArray constructor accepts a Python long of arbitrary size
* DoubleBitMask (and QuadBitMask, by extension) supports Python long in constructor
* Support for pickling (except DoubleBitMask)
* All of them now properly define __bool__()
* More unit tests

Fixes #886
2020-04-01 20:31:16 +02:00
rdb a203ff11fc interrogate: support __getstate__ and __setstate__
The latter in particular will be called instead of __init__, so must construct the object.
2020-04-01 18:59:44 +02:00
rdb a34867ae4f interrogate: support __int__ -> nb_int slot mapping 2020-04-01 18:59:44 +02:00
rdb 5489f66a62 Bump version number on release/1.10.x branch to 1.10.7 2020-03-30 13:52:11 +02:00
rdb fd5ec07a47 notify: make Notify::config_initialized() static
This may be slightly more efficient.
2020-03-08 10:48:50 +01:00
rdb c9520c8daf Merge branch 'release/1.10.x' 2020-03-06 10:15:25 +01:00
rdb 0b87673747 dtoolbase: fix compilation error with musl
Fixes #875
2020-03-01 15:14:15 +01:00
rdb c59b91f503 Merge branch 'release/1.10.x' 2020-02-23 14:53:16 +01:00
kamgha c2866ea4ed Fix includes for Windows on case-sensitive filesystems
Closes #866
2020-02-22 12:55:45 +01:00
rdb 4ef8e5228e interrogate: fix ability to return ReferenceCount-like classes
Classes with virtual ref(), unref() and get_ref_count() methods, like RecorderBase, could not be returned by PT() from methods because they didn't inherit from ReferenceCount.  However, classes do not need to inherit ReferenceCount to be able to be tracked by a PointerTo, and defining an abstract base class with pure virtual ref()/unref()/get_ref_count() is a way to avoid dual inheritance of ReferenceCount.
2020-02-22 12:10:55 +01:00
Leandro (Cerberus1746) Benedet Garcia 5f7809469c general: removed all WIN32, WIN32_VC and friends 2020-02-05 22:45:03 -07:00
rdb b272af8bbf Merge branch 'cmake' 2020-01-22 11:20:51 +01:00
Sam Edwards d0b6e2275d CMake: Remove IS(_NOT)_MINSIZE_BUILD 2020-01-21 18:15:28 -07:00
Sam Edwards 36e06236a9 CMake: Remove IS(_NOT)_DEBUG_BUILD 2020-01-21 17:42:17 -07:00
Sam Edwards 68f1083dbf CMake: Make HAVE_VIDEO4LINUX dependent on Linux 2020-01-21 17:07:04 -07:00
rdb 601fc8f46a dtool: remove obsolete PandaVersion.pp
This file was used by ppremake and is no longer used by makepanda.
The version number should instead be obtained from the setup.cfg file in the root.
2020-01-13 15:14:21 +01:00
rdb 1bb4a032aa Drop support for Windows XP 2020-01-13 15:06:44 +01:00
rdb 2960ae60e2 Bump version number on release/1.10.x branch to 1.10.6
[skip ci]
2020-01-13 15:05:39 +01:00
Sam Edwards 572019bd50 CMake: Remove reference to PhysX 2020-01-12 13:53:26 -07:00
Sam Edwards 151d51ef09 CMake: Autodetect THIRDPARTY_DIRECTORY when in source root 2020-01-12 12:02:22 -07:00
Sam Edwards a1d43f7b88 CMake: Fix WANT_PYTHON_VERSION not always being respected 2020-01-08 21:03:52 -07:00
Sam Edwards ce6caa8d3e CMake: `/etc/*.prc` -> `/etc/panda3d/*.prc` 2020-01-07 17:04:30 -07:00
Sam Edwards 0aa599feeb CMake: Take away the HAVE_TINYDISPLAY option
This is at least until we can support building it, so that
other components in Panda don't assume TINYDISPLAY is present.
2020-01-07 13:16:51 -07:00
Sam Edwards b00d7b23bc CMake: Use `CMAKE_FIND_PACKAGE_PREFER_CONFIG` to control `find_package` override 2019-12-31 06:48:06 -07:00
Sam Edwards 74e9c610d3 CMake: Don't assume <PackageName>_FOUND will always be caps
This is more consistent with the new find_package() behavior,
especially when CONFIG mode is involved.
2019-12-31 06:47:34 -07:00
rdb b78b7be326 Merge branch 'release/1.10.x' 2019-12-30 01:50:54 +01:00
rdb ac85b05400 py_compat: fix _PyObject_CallNoArg in Python 3.5 2019-12-25 16:32:19 +01:00
Sam Edwards cdc16291dd CMake: `SKIP_COMPOSITING` -> `SKIP_UNITY_BUILD_INCLUSION`
The latter is what CMake (3.16+) itself uses; we should start using
CMake's own unity build capabilities if available.
2019-12-24 17:20:43 -07:00
Sam Edwards 10760d5f7a CMake: Properly redetect Python if WANT_PYTHON_VERSION changes 2019-12-24 16:16:31 -07:00
pmp-p 8615e25a12 interrogate: use fully qualified module name in PyModule_Create
This is helpful when static linking and explicitly initializing the modules.

Closes #308
2019-12-11 16:49:42 +01:00
rdb 9565d99fab Merge branch 'release/1.10.x' 2019-12-08 15:18:51 +01:00
rdb 97a19c278b parser-inc: define __SIZE_TYPE__ and __PTRDIFF_TYPE__
This fixes an Interrogate parse error in termux when /usr/include gets added as -S argument
2019-12-08 10:28:50 +01:00
Sam Edwards e474350a48 CMake: Add a "Coverage" configuration, when using GCC/Clang 2019-12-05 10:35:25 -07:00
Sam Edwards 6bde9423df CMake: Don't pass GNU-like -f options to clang-cl 2019-12-05 10:34:47 -07:00
Sam Edwards 5c98b793a2 CMake: Make sure C++11 is marked as the required standard 2019-12-05 10:34:47 -07:00
Sam Edwards cfedd71093 CMake: Disable searching macOS frameworks when using THIRDPARTY_DIRECTORY 2019-12-05 10:34:47 -07:00
Leandro Benedet Garcia 71dfc51f8a general: Changed macros and definitions for the engine to compile with MinGW (#793) 2019-12-02 09:21:01 -07:00
Leandro Benedet Garcia ae33d62978 general: Update EXPCL declarations to be MinGW-friendly (#792) 2019-11-27 11:25:24 -07:00
Sam Edwards 4556059c90 CMake: Use find_program to detect host tools when cross-compiling
In the future, we should also try to do find_package(Panda3D) to use
the host tools even if Panda3D isn't in a system path.
2019-11-13 15:30:26 -07:00
Sam Edwards f377bdfb29 CMake: Copy thirdparty/**/*.dll to bin/ directory 2019-11-13 15:30:23 -07:00
Sam Edwards ae59bd031f CMake: Fix typo 2019-11-11 20:16:00 -07:00
Sam Edwards 0b342d0f9f CMake: Don't use PythonInterp/PythonLibs when FindPython available 2019-11-11 00:48:14 -07:00
Sam Edwards 1c866dff78 CMake: Don't override Python_ROOT 2019-11-11 00:48:11 -07:00
rdb 1b863ead55 cppparser: fix finding types in explicitly specialized template class 2019-11-09 20:26:33 +01:00
Sam Edwards 9b7bcf2564 Merge branch 'master' into cmake 2019-11-07 21:21:04 -07:00
rdb d2bd4181e0 interrogate: set tp_base to DTOOL_SUPER_BASE and tp_basicsize to 0
The tp_basicsize field, as well as a few others, seem to be inherited from whatever is set in tp_base.  In absence of a tp_base, Python will set it to PyBaseObject_Type, which is not at all correct for Panda types.
2019-11-06 10:49:53 +01:00
Sam Edwards 856754a3de general: Don't abuse PyErr_Restore
The intended purpose of this function is to restore an exception
that has already been raised and saved with PyErr_Fetch. It should
not be used to raise new exceptions nor should it be used to clear
the current exception.

The especially egregious example is
`PyErr_Restore(exc_type, nullptr, nullptr);`
as the null value may not be handled correctly.
2019-11-05 18:44:20 -07:00
Sam Edwards 0e0b2186c7 CMake: Add #line directives to interrogate_preamble_python_native 2019-11-04 16:43:12 -07:00
Sam Edwards cf59d3d983 CMake: Remove p3dtoolconfig from build
It's just p3prc now, so instead we install some symlinks
2019-11-04 14:02:06 -07:00
Sam Edwards 5b4ea0e277 CMake: Proper Standard compiler flags for MSVC 2019-11-04 13:41:20 -07:00
rdb a72be90f17 Merge branch 'release/1.10.x' 2019-10-29 23:13:22 +01:00
rdb 4098f55d70 dtoolutil: record stdlib (libc++ vs libstdc++) in PandaSystem
This is particularly relevant on macOS, for finding out which stdlib Panda was compiled with.
2019-10-25 10:21:30 +02:00
Sam Edwards 12c16eb9ff Merge branch 'master' into cmake 2019-10-15 23:43:25 -06:00
Sam Edwards 9ecaa0056b CMake: Break out p3interrogatedb as a first-class library 2019-10-15 23:27:03 -06:00
rdb 247f3c415a Merge branch 'release/1.10.x' 2019-10-08 19:50:48 +02:00
rdb c6990b9f9b prc: fix possible stack overflow in StreamReader
Fixes #754
2019-10-08 19:44:23 +02:00
rdb 3c9591cfbf interrogate: envelop function calls in parentheses
This reduces the risk of calling a preprocessor macro instead of a method.
2019-10-08 19:43:34 +02:00
rdb fb5440bd07 cppparser: hack fix for method defs in parentheses 2019-10-08 19:43:34 +02:00
rdb 657af0edb5 cppparser: don't expand function-style macro if not followed by ( 2019-10-07 18:38:21 +02:00
Sam Edwards 5961cc2ee0 Merge branch 'master' into cmake 2019-10-05 15:00:49 -06:00
Sam Edwards aadcb179d6 CMake: Change default build type to Standard 2019-09-21 02:45:46 -06:00
Sam Edwards 9bb59b03b9 CMake: Add several essential flags
See GH #717 for relevant discussion
2019-09-19 22:33:11 -06:00
Sam Edwards bd1605907e CMake: Rename 'Distribution' config to 'Standard'
This is the configuration shipped to Python developers
in the form of the public SDK.
2019-09-19 22:18:28 -06:00
Sam Edwards 8429f50d3a CMake: Use -fno-rtti on most build configurations 2019-09-19 04:44:46 -06:00