diff --git a/Misc/NEWS.d/next/Core and Builtins/2021-12-11-11-36-48.bpo-46045.sfThay.rst b/Misc/NEWS.d/next/Core and Builtins/2021-12-11-11-36-48.bpo-46045.sfThay.rst new file mode 100644 index 00000000000..97fd1883eb2 --- /dev/null +++ b/Misc/NEWS.d/next/Core and Builtins/2021-12-11-11-36-48.bpo-46045.sfThay.rst @@ -0,0 +1 @@ +Do not use POSIX semaphores on NetBSD diff --git a/Misc/NEWS.d/next/Library/2022-02-06-12-59-32.bpo-46053.sHFo3S.rst b/Misc/NEWS.d/next/Library/2022-02-06-12-59-32.bpo-46053.sHFo3S.rst new file mode 100644 index 00000000000..ce375885792 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2022-02-06-12-59-32.bpo-46053.sHFo3S.rst @@ -0,0 +1 @@ +Fix OSS audio support on NetBSD. diff --git a/Modules/ossaudiodev.c b/Modules/ossaudiodev.c index 3926831e0c0..2f507de46f5 100644 --- a/Modules/ossaudiodev.c +++ b/Modules/ossaudiodev.c @@ -1226,16 +1226,36 @@ PyInit_ossaudiodev(void) /* Expose all the ioctl numbers for masochists who like to do this stuff directly. */ +#ifdef SNDCTL_COPR_HALT _EXPORT_INT(m, SNDCTL_COPR_HALT); +#endif +#ifdef SNDCTL_COPR_LOAD _EXPORT_INT(m, SNDCTL_COPR_LOAD); +#endif +#ifdef SNDCTL_COPR_RCODE _EXPORT_INT(m, SNDCTL_COPR_RCODE); +#endif +#ifdef SNDCTL_COPR_RCVMSG _EXPORT_INT(m, SNDCTL_COPR_RCVMSG); +#endif +#ifdef SNDCTL_COPR_RDATA _EXPORT_INT(m, SNDCTL_COPR_RDATA); +#endif +#ifdef SNDCTL_COPR_RESET _EXPORT_INT(m, SNDCTL_COPR_RESET); +#endif +#ifdef SNDCTL_COPR_RUN _EXPORT_INT(m, SNDCTL_COPR_RUN); +#endif +#ifdef SNDCTL_COPR_SENDMSG _EXPORT_INT(m, SNDCTL_COPR_SENDMSG); +#endif +#ifdef SNDCTL_COPR_WCODE _EXPORT_INT(m, SNDCTL_COPR_WCODE); +#endif +#ifdef SNDCTL_COPR_WDATA _EXPORT_INT(m, SNDCTL_COPR_WDATA); +#endif #ifdef SNDCTL_DSP_BIND_CHANNEL _EXPORT_INT(m, SNDCTL_DSP_BIND_CHANNEL); #endif @@ -1278,46 +1298,104 @@ PyInit_ossaudiodev(void) _EXPORT_INT(m, SNDCTL_DSP_STEREO); _EXPORT_INT(m, SNDCTL_DSP_SUBDIVIDE); _EXPORT_INT(m, SNDCTL_DSP_SYNC); +#ifdef SNDCTL_FM_4OP_ENABLE _EXPORT_INT(m, SNDCTL_FM_4OP_ENABLE); +#endif +#ifdef SNDCTL_FM_LOAD_INSTR _EXPORT_INT(m, SNDCTL_FM_LOAD_INSTR); +#endif +#ifdef SNDCTL_MIDI_INFO _EXPORT_INT(m, SNDCTL_MIDI_INFO); +#endif +#ifdef SNDCTL_MIDI_MPUCMD _EXPORT_INT(m, SNDCTL_MIDI_MPUCMD); +#endif +#ifdef SNDCTL_MIDI_MPUMODE _EXPORT_INT(m, SNDCTL_MIDI_MPUMODE); +#endif +#ifdef SNDCTL_MIDI_PRETIME _EXPORT_INT(m, SNDCTL_MIDI_PRETIME); +#endif +#ifdef SNDCTL_SEQ_CTRLRATE _EXPORT_INT(m, SNDCTL_SEQ_CTRLRATE); +#endif +#ifdef SNDCTL_SEQ_GETINCOUNT _EXPORT_INT(m, SNDCTL_SEQ_GETINCOUNT); +#endif +#ifdef SNDCTL_SEQ_GETOUTCOUNT _EXPORT_INT(m, SNDCTL_SEQ_GETOUTCOUNT); +#endif #ifdef SNDCTL_SEQ_GETTIME _EXPORT_INT(m, SNDCTL_SEQ_GETTIME); #endif +#ifdef SNDCTL_SEQ_NRMIDIS _EXPORT_INT(m, SNDCTL_SEQ_NRMIDIS); +#endif +#ifdef SNDCTL_SEQ_NRSYNTHS _EXPORT_INT(m, SNDCTL_SEQ_NRSYNTHS); +#endif +#ifdef SNDCTL_SEQ_OUTOFBAND _EXPORT_INT(m, SNDCTL_SEQ_OUTOFBAND); +#endif +#ifdef SNDCTL_SEQ_PANIC _EXPORT_INT(m, SNDCTL_SEQ_PANIC); +#endif +#ifdef SNDCTL_SEQ_PERCMODE _EXPORT_INT(m, SNDCTL_SEQ_PERCMODE); +#endif +#ifdef SNDCTL_SEQ_RESET _EXPORT_INT(m, SNDCTL_SEQ_RESET); +#endif +#ifdef SNDCTL_SEQ_RESETSAMPLES _EXPORT_INT(m, SNDCTL_SEQ_RESETSAMPLES); +#endif +#ifdef SNDCTL_SEQ_SYNC _EXPORT_INT(m, SNDCTL_SEQ_SYNC); +#endif +#ifdef SNDCTL_SEQ_TESTMIDI _EXPORT_INT(m, SNDCTL_SEQ_TESTMIDI); +#endif +#ifdef SNDCTL_SEQ_THRESHOLD _EXPORT_INT(m, SNDCTL_SEQ_THRESHOLD); +#endif #ifdef SNDCTL_SYNTH_CONTROL _EXPORT_INT(m, SNDCTL_SYNTH_CONTROL); #endif #ifdef SNDCTL_SYNTH_ID _EXPORT_INT(m, SNDCTL_SYNTH_ID); #endif +#ifdef SNDCTL_SYNTH_INFO _EXPORT_INT(m, SNDCTL_SYNTH_INFO); +#endif +#ifdef SNDCTL_SYNTH_MEMAVL _EXPORT_INT(m, SNDCTL_SYNTH_MEMAVL); +#endif #ifdef SNDCTL_SYNTH_REMOVESAMPLE _EXPORT_INT(m, SNDCTL_SYNTH_REMOVESAMPLE); #endif +#ifdef SNDCTL_TMR_CONTINUE _EXPORT_INT(m, SNDCTL_TMR_CONTINUE); +#endif +#ifdef SNDCTL_TMR_METRONOME _EXPORT_INT(m, SNDCTL_TMR_METRONOME); +#endif +#ifdef SNDCTL_TMR_SELECT _EXPORT_INT(m, SNDCTL_TMR_SELECT); +#endif +#ifdef SNDCTL_TMR_SOURCE _EXPORT_INT(m, SNDCTL_TMR_SOURCE); +#endif +#ifdef SNDCTL_TMR_START _EXPORT_INT(m, SNDCTL_TMR_START); +#endif +#ifdef SNDCTL_TMR_STOP _EXPORT_INT(m, SNDCTL_TMR_STOP); +#endif +#ifdef SNDCTL_TMR_TEMPO _EXPORT_INT(m, SNDCTL_TMR_TEMPO); +#endif +#ifdef SNDCTL_TMR_TIMEBASE _EXPORT_INT(m, SNDCTL_TMR_TIMEBASE); +#endif return m; } diff --git a/configure b/configure index 26a891ee7fa..65495194f49 100755 --- a/configure +++ b/configure @@ -12181,6 +12181,14 @@ LIBS=$save_LIBS fi +case $ac_sys_system in #( + NetBSD*) : + OSSAUDIODEV_LIBS="-lossaudio" ;; #( + *) : + OSSAUDIODEV_LIBS="" + ;; +esac + pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for LIBSQLITE3" >&5 @@ -23250,7 +23258,7 @@ fi if test "x$py_cv_module_ossaudiodev" = xyes; then : - + as_fn_append MODULE_BLOCK "MODULE_OSSAUDIODEV_LDFLAGS=$OSSAUDIODEV_LIBS$as_nl" fi if test "$py_cv_module_ossaudiodev" = yes; then diff --git a/configure.ac b/configure.ac index 5c915d1a45c..276718aeeb7 100644 --- a/configure.ac +++ b/configure.ac @@ -3553,6 +3553,12 @@ AS_VAR_IF([have_nis], [yes], [ ]) ]) +dnl On NetBSD, when using OSS audio, you need to link against libossaudio +AS_CASE([$ac_sys_system], + [NetBSD*], [OSSAUDIODEV_LIBS="-lossaudio"], + [OSSAUDIODEV_LIBS=""] +) + dnl Check for SQLite library. Use pkg-config if available. PKG_CHECK_MODULES( [LIBSQLITE3], [sqlite3 >= 3.7.15], [], [ @@ -6786,7 +6792,8 @@ PY_STDLIB_MOD([_socket], dnl platform specific extensions PY_STDLIB_MOD([grp], [], [test "$ac_cv_func_getgrgid" = yes -o "$ac_cv_func_getgrgid_r" = yes]) PY_STDLIB_MOD([ossaudiodev], - [], [test "$ac_cv_header_linux_soundcard_h" = yes -o "$ac_cv_header_sys_soundcard_h" = yes]) + [], [test "$ac_cv_header_linux_soundcard_h" = yes -o "$ac_cv_header_sys_soundcard_h" = yes], + [], [$OSSAUDIODEV_LIBS]) PY_STDLIB_MOD([pwd], [], [test "$ac_cv_func_getpwuid" = yes -o "$ac_cv_func_getpwuid_r" = yes]) PY_STDLIB_MOD([resource], [], [test "$ac_cv_header_sys_resource_h" = yes]) PY_STDLIB_MOD([_scproxy],