fix: add stub implementation for CGO audio on non-ARM platforms

Provides no-op AudioSource implementations for platforms that don't
support ARM CGO audio (x86_64, darwin, etc.). This allows golangci-lint
to run successfully on any platform without requiring ARM cross-compilation
toolchain.

The stub implementations return errors when called, ensuring that if
they're accidentally used at runtime on non-ARM platforms, it will fail
gracefully with a clear error message rather than undefined symbols.

Build constraints ensure the real CGO implementation is used on linux/arm
and linux/arm64, while stubs are used everywhere else.
This commit is contained in:
Alex P 2025-10-24 00:04:05 +03:00
parent 54cbd98781
commit 68b1bc54ce
1 changed files with 50 additions and 0 deletions

View File

@ -0,0 +1,50 @@
//go:build !linux || (!arm && !arm64)
package audio
import "fmt"
// StubSource is a no-op implementation for platforms without CGO audio support
type StubSource struct {
direction string
alsaDevice string
}
// NewCgoOutputSource creates a stub audio source for output (unsupported platforms)
func NewCgoOutputSource(alsaDevice string) AudioSource {
return &StubSource{
direction: "output",
alsaDevice: alsaDevice,
}
}
// NewCgoInputSource creates a stub audio source for input (unsupported platforms)
func NewCgoInputSource(alsaDevice string) AudioSource {
return &StubSource{
direction: "input",
alsaDevice: alsaDevice,
}
}
// Connect returns an error indicating CGO audio is not supported
func (s *StubSource) Connect() error {
return fmt.Errorf("CGO audio not supported on this platform")
}
// Disconnect is a no-op
func (s *StubSource) Disconnect() {}
// IsConnected returns false
func (s *StubSource) IsConnected() bool {
return false
}
// ReadMessage returns an error
func (s *StubSource) ReadMessage() (uint8, []byte, error) {
return 0, nil, fmt.Errorf("CGO audio not supported on this platform")
}
// WriteMessage returns an error
func (s *StubSource) WriteMessage(msgType uint8, payload []byte) error {
return fmt.Errorf("CGO audio not supported on this platform")
}