Skip to content

Build error with Python 3.14 #14305

@0-wiz-0

Description

@0-wiz-0

MAME version

0.281

System information

NetBSD 11.99.3/gcc 14.3.0

INI configuration details

n/a

Emulated system/software

n/a

Incorrect behaviour

When building with Python 3.14 installed, the build fails for me with:

In file included from ../../../../../src/frontend/mame/ui/selmenu.h:18,
                 from ../../../../../src/frontend/mame/ui/selgame.h:15,
                 from ../../../../../src/frontend/mame/mame.cpp:15:
/scratch/emulators/mame/work/.buildlink/include/python3.14/audit.h:9:17: error: expected constructor, destructor, or type conversion before 'PySys_Audit'
    9 | PyAPI_FUNC(int) PySys_Audit(
      |                 ^~~~~~~~~~~
/scratch/emulators/mame/work/.buildlink/include/python3.14/audit.h:14:17: error: expected constructor, destructor, or type conversion before 'PySys_AuditTuple'
   14 | PyAPI_FUNC(int) PySys_AuditTuple(
      |                 ^~~~~~~~~~~~~~~~
In file included from /scratch/emulators/mame/work/.buildlink/include/python3.14/audit.h:22:
/scratch/emulators/mame/work/.buildlink/include/python3.14/cpython/audit.h:6:50: error: 'PyObject' has not been declared
    6 | typedef int(*Py_AuditHookFunction)(const char *, PyObject *, void *);
      |                                                  ^~~~~~~~
/scratch/emulators/mame/work/.buildlink/include/python3.14/cpython/audit.h:8:17: error: expected constructor, destructor, or type conversion before 'PySys_AddAuditHook'
    8 | PyAPI_FUNC(int) PySys_AddAuditHook(Py_AuditHookFunction, void*);
      |                 ^~~~~~~~~~~~~~~~~~
../../../../../src/frontend/mame/ui/selmenu.h:186:56: error: 'media_auditor' has not been declared
  186 |         static std::string make_system_audit_fail_text(media_auditor const &auditor, media_auditor::summary summary);
      |                                                        ^~~~~~~~~~~~~
../../../../../src/frontend/mame/ui/selmenu.h:186:86: error: 'media_auditor' has not been declared
  186 |         static std::string make_system_audit_fail_text(media_auditor const &auditor, media_auditor::summary summary);
      |                                                                                      ^~~~~~~~~~~~~
../../../../../src/frontend/mame/ui/selmenu.h:186:109: error: expected ',' or '...' before 'summary'
  186 |         static std::string make_system_audit_fail_text(media_auditor const &auditor, media_auditor::summary summary);
      |                                                                                                             ^~~~~~~
../../../../../src/frontend/mame/ui/selmenu.h:187:58: error: 'media_auditor' has not been declared
  187 |         static std::string make_software_audit_fail_text(media_auditor const &auditor, media_auditor::summary summary);
      |                                                          ^~~~~~~~~~~~~
../../../../../src/frontend/mame/ui/selmenu.h:187:88: error: 'media_auditor' has not been declared
  187 |         static std::string make_software_audit_fail_text(media_auditor const &auditor, media_auditor::summary summary);
      |                                                                                        ^~~~~~~~~~~~~
../../../../../src/frontend/mame/ui/selmenu.h:187:111: error: expected ',' or '...' before 'summary'
  187 |         static std::string make_software_audit_fail_text(media_auditor const &auditor, media_auditor::summary summary);
      |                                                                                                               ^~~~~~~
../../../../../src/frontend/mame/ui/selmenu.h:188:44: error: 'media_auditor' has not been declared
  188 |         static constexpr bool audit_passed(media_auditor::summary summary)
      |                                            ^~~~~~~~~~~~~
../../../../../src/frontend/mame/ui/selmenu.h:188:67: error: expected ',' or '...' before 'summary'
  188 |         static constexpr bool audit_passed(media_auditor::summary summary)
      |                                                                   ^~~~~~~
../../../../../src/frontend/mame/ui/selmenu.h:394:61: error: 'media_auditor' has not been declared
  394 |         static void make_audit_fail_text(std::ostream &str, media_auditor const &auditor, media_auditor::summary summary);
      |                                                             ^~~~~~~~~~~~~
../../../../../src/frontend/mame/ui/selmenu.h:394:91: error: 'media_auditor' has not been declared
  394 |         static void make_audit_fail_text(std::ostream &str, media_auditor const &auditor, media_auditor::summary summary);
      |                                                                                           ^~~~~~~~~~~~~
../../../../../src/frontend/mame/ui/selmenu.h:394:114: error: expected ',' or '...' before 'summary'
  394 |         static void make_audit_fail_text(std::ostream &str, media_auditor const &auditor, media_auditor::summary summary);
      |                                                                                                                  ^~~~~~~
../../../../../src/frontend/mame/ui/selmenu.h: In static member function 'static constexpr bool ui::menu_select_launch::audit_passed(int)':
../../../../../src/frontend/mame/ui/selmenu.h:190:25: error: 'media_auditor' has not been declared
  190 |                 return (media_auditor::CORRECT == summary) || (media_auditor::BEST_AVAILABLE == summary) || (media_auditor::NONE_NEEDED == summary);
      |                         ^~~~~~~~~~~~~
../../../../../src/frontend/mame/ui/selmenu.h:190:64: error: 'media_auditor' has not been declared
  190 |                 return (media_auditor::CORRECT == summary) || (media_auditor::BEST_AVAILABLE == summary) || (media_auditor::NONE_NEEDED == summary);
      |                                                                ^~~~~~~~~~~~~
../../../../../src/frontend/mame/ui/selmenu.h:190:110: error: 'media_auditor' has not been declared
  190 |                 return (media_auditor::CORRECT == summary) || (media_auditor::BEST_AVAILABLE == summary) || (media_auditor::NONE_NEEDED == summary);
      |                                                                                                              ^~~~~~~~~~~~~

it works with Python 3.13.8 in the same environment.

Expected behaviour

Build succeeds

Steps to reproduce

Install Python 3.14, try building mame.

Additional details

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions