This patch is needed to make Python understand it can build the OSS plugin. Some OSS ioctls are not supported on Solaris, so they are ifdef'd out. As the patch is Solaris-specific, it is not suitable for upstream. --- Python-3.9.1/setup.py +++ Python-3.9.1/setup.py @@ -1601,7 +1601,7 @@ class PyBuildExt(build_ext): self.missing.extend(['resource', 'termios']) # Platform-specific libraries - if HOST_PLATFORM.startswith(('linux', 'freebsd', 'gnukfreebsd')): + if HOST_PLATFORM.startswith(('sunos5', 'linux', 'freebsd', 'gnukfreebsd')): self.add(Extension('ossaudiodev', ['ossaudiodev.c'])) elif not AIX: self.missing.append('ossaudiodev') --- Python-3.9.1/Modules/ossaudiodev.c +++ Python-3.9.1/Modules/ossaudiodev.c @@ -1210,6 +1210,7 @@ PyInit_ossaudiodev(void) _EXPORT_INT(m, SOUND_MIXER_MONITOR); #endif +#ifndef __sun /* Expose all the ioctl numbers for masochists who like to do this stuff directly. */ _EXPORT_INT(m, SNDCTL_COPR_HALT); @@ -1222,6 +1223,7 @@ PyInit_ossaudiodev(void) _EXPORT_INT(m, SNDCTL_COPR_SENDMSG); _EXPORT_INT(m, SNDCTL_COPR_WCODE); _EXPORT_INT(m, SNDCTL_COPR_WDATA); +#endif #ifdef SNDCTL_DSP_BIND_CHANNEL _EXPORT_INT(m, SNDCTL_DSP_BIND_CHANNEL); #endif @@ -1264,6 +1270,7 @@ PyInit_ossaudiodev(void) _EXPORT_INT(m, SNDCTL_DSP_STEREO); _EXPORT_INT(m, SNDCTL_DSP_SUBDIVIDE); _EXPORT_INT(m, SNDCTL_DSP_SYNC); +#ifndef __sun _EXPORT_INT(m, SNDCTL_FM_4OP_ENABLE); _EXPORT_INT(m, SNDCTL_FM_LOAD_INSTR); _EXPORT_INT(m, SNDCTL_MIDI_INFO); @@ -1305,5 +1312,6 @@ PyInit_ossaudiodev(void) _EXPORT_INT(m, SNDCTL_TMR_STOP); _EXPORT_INT(m, SNDCTL_TMR_TEMPO); _EXPORT_INT(m, SNDCTL_TMR_TIMEBASE); +#endif return m; }