summaryrefslogtreecommitdiff
path: root/sys-firmware/alsa-firmware/alsa-firmware-1.2.4-r3.ebuild
blob: 035795f567e27238dbbae422e010e77f8d45866a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
# Copyright 1999-2026 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2

EAPI=8

VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/alsa.asc
inherit linux-info udev verify-sig

DESCRIPTION="Advanced Linux Sound Architecture firmware"
HOMEPAGE="https://alsa-project.org/wiki/Main_Page"
SRC_URI="
	https://www.alsa-project.org/files/pub/firmware/${P}.tar.bz2
	verify-sig? ( https://www.alsa-project.org/files/pub/firmware/${P}.tar.bz2.sig )
"

LICENSE="
	GPL-2 freedist
	alsa_cards_korg1212? ( all-rights-reserved )
	alsa_cards_maestro3? ( all-rights-reserved )
	alsa_cards_sb16? ( all-rights-reserved )
	alsa_cards_wavefront? ( all-rights-reserved )
	alsa_cards_ymfpci? ( all-rights-reserved )
"
SLOT="0"
KEYWORDS="amd64 ppc ppc64 x86"

ECHOAUDIO_CARDS="
	alsa_cards_darla20 alsa_cards_gina20 alsa_cards_layla20
	alsa_cards_darla24 alsa_cards_gina24 alsa_cards_layla24
	alsa_cards_mona alsa_cards_mia alsa_cards_indigo
	alsa_cards_indigoio alsa_cards_echo3g
"

EMU_CARDS="
	alsa_cards_emu1212 alsa_cards_emu1616 alsa_cards_emu1820
	alsa_cards_emu10k1
"

IUSE="compress-xz compress-zstd +deduplicate
	alsa_cards_cs46xx alsa_cards_pcxhr alsa_cards_vx222
	alsa_cards_usb-usx2y alsa_cards_hdsp alsa_cards_hdspm
	alsa_cards_mixart alsa_cards_asihpi alsa_cards_sb16
	alsa_cards_korg1212 alsa_cards_maestro3 alsa_cards_ymfpci
	alsa_cards_wavefront alsa_cards_msnd-pinnacle alsa_cards_aica
	alsa_cards_ca0132 ${ECHOAUDIO_CARDS} ${EMU_CARDS}
"
REQUIRED_USE="?? ( compress-xz compress-zstd )"

RESTRICT="
	alsa_cards_korg1212? ( bindist )
	alsa_cards_maestro3? ( bindist )
	alsa_cards_sb16? ( bindist )
	alsa_cards_wavefront? ( bindist )
	alsa_cards_ymfpci? ( bindist )
"

RDEPEND="
	alsa_cards_usb-usx2y? ( sys-apps/fxload )
	alsa_cards_hdsp? ( media-sound/alsa-tools )
	alsa_cards_hdspm? ( media-sound/alsa-tools )
	deduplicate? (
		alsa_cards_ca0132? ( sys-kernel/linux-firmware[redistributable] )
		alsa_cards_korg1212? ( sys-kernel/linux-firmware[unknown-license(-)] )
		alsa_cards_maestro3? ( sys-kernel/linux-firmware[unknown-license(-)] )
		alsa_cards_sb16? ( sys-kernel/linux-firmware[unknown-license(-)] )
		alsa_cards_wavefront? ( sys-kernel/linux-firmware[unknown-license(-)] )
		alsa_cards_ymfpci? ( sys-kernel/linux-firmware[unknown-license(-)] )
	)
"
BDEPEND="verify-sig? ( sec-keys/openpgp-keys-alsa )"

DOCS="README"

PATCHES=(
	"${FILESDIR}"/${PN}-1.2.4-musl.patch
)

pkg_setup() {
	if use compress-xz || use compress-zstd ; then
		local CONFIG_CHECK

		if kernel_is -ge 5 19; then
			use compress-xz && CONFIG_CHECK="~FW_LOADER_COMPRESS_XZ"
			use compress-zstd && CONFIG_CHECK="~FW_LOADER_COMPRESS_ZSTD"
		else
			use compress-xz && CONFIG_CHECK="~FW_LOADER_COMPRESS"
			if use compress-zstd; then
				eerror "Kernels <5.19 do not support ZSTD-compressed firmware files"
			fi
		fi
	fi
	linux-info_pkg_setup
}

src_configure() {
	local myeconfargs=(
		--with-hotplug-dir=/lib/firmware
		$(use_enable alsa_cards_usb-usx2y buildfw)
	)
	econf "${myeconfargs[@]}"
}

src_install() {
	default

	if ! use alsa_cards_pcxhr; then
		rm -r "${ED}"/usr/share/alsa/firmware/pcxhrloader "${ED}"/lib/firmware/pcxhr || die
	fi

	if ! use alsa_cards_vx222; then
		rm -r "${ED}"/usr/share/alsa/firmware/vxloader || die
	fi

	if ! use alsa_cards_usb-usx2y; then
		rm -r "${ED}"/usr/share/alsa/firmware/usx2yloader || die
		if ! use alsa_cards_vx222; then
			rm -r "${ED}"/lib/firmware/vx || die
		fi
	else
		udev_dorules "${FILESDIR}"/52-usx2yaudio.rules
	fi

	if ! use alsa_cards_mixart; then
		rm -r "${ED}"/usr/share/alsa/firmware/mixartloader "${ED}"/lib/firmware/mixart || die
	fi

	if ! use alsa_cards_hdsp && ! use alsa_cards_hdspm; then
		rm -r "${ED}"/usr/share/alsa/firmware/hdsploader || die
		rm "${ED}"/lib/firmware/digiface_firmware{,_rev11}.bin || die
		rm "${ED}"/lib/firmware/multiface_firmware{,_rev11}.bin || die
		rm "${ED}"/lib/firmware/rpm_firmware.bin || die
	fi

	if ! use alsa_cards_asihpi; then
		rm -r "${ED}"/lib/firmware/asihpi || die
	fi

	if ! use alsa_cards_sb16; then
		rm -r "${ED}"/lib/firmware/sb16 || die
	elif use deduplicate; then
		rm -r "${ED}"/lib/firmware/sb16 || die
	fi

	if ! use alsa_cards_korg1212; then
		rm -r "${ED}"/lib/firmware/korg || die
	elif use deduplicate; then
		rm "${ED}"/lib/firmware/korg/k1212.dsp || die
	fi

	if ! use alsa_cards_maestro3; then
		rm -r "${ED}"/lib/firmware/ess || die
	elif use deduplicate; then
		rm "${ED}"/lib/firmware/ess/maestro3_assp_{kernel,minisrc}.fw || die
	fi

	if ! use alsa_cards_ymfpci && ! use alsa_cards_wavefront; then
		rm -r "${ED}"/lib/firmware/yamaha || die
	elif use deduplicate; then
		rm -r "${ED}"/lib/firmware/yamaha || die
	fi

	if ! use alsa_cards_msnd-pinnacle; then
		rm -r "${ED}"/lib/firmware/turtlebeach || die
	fi

	if ! use alsa_cards_aica; then
		rm "${ED}"/lib/firmware/aica_firmware.bin || die
	fi

	if ! use alsa_cards_ca0132; then
		rm "${ED}"/lib/firmware/ctspeq.bin || die
		rm "${ED}"/lib/firmware/ctefx{,-desktop,-r3di}.bin || die
	elif use deduplicate; then
		rm "${ED}"/lib/firmware/ctspeq.bin || die
		rm "${ED}"/lib/firmware/ctefx.bin || die
	fi

	if ! use alsa_cards_cs46xx; then
		rm -r "${ED}"/lib/firmware/cs46xx || die
	fi

	local ea=
	for card in ${ECHOAUDIO_CARDS}; do
		use ${card} && ea=1 && break
	done

	local emu=
	for card in ${EMU_CARDS}; do
		use ${card} && emu=1 && break
	done

	if [[ ! ${ea} ]]; then
		rm -r "${ED}"/lib/firmware/ea || die
	fi
	if [[ ! ${emu} ]]; then
		rm -r "${ED}"/lib/firmware/emu || die
	fi

	# Copied from sys-kernel/linux-firmware
	if use compress-xz; then
		find "${ED}"/lib/firmware -type f -exec \
			xz --compress --quiet --check=crc32 "{}" \; || die
	elif use compress-zstd; then
		find "${ED}"/lib/firmware -type f -exec \
			zstd --compress --quiet --rm "{}" \; || die
	fi
}

pkg_preinst() {
	if [[ ! -d "${ED}"/lib/firmware ]]; then
		ewarn "No firmware files are being installed, is ALSA_CARDS= empty?"
		ewarn "Please populate ALSA_CARDS with your sound card in make.conf"
	fi
}

pkg_postinst() {
	udev_reload
	if use alsa_cards_msnd-pinnacle; then
		einfo "Please download the actual firmware files from:"
		einfo "    ftp://ftp.voyetra.com/pub/tbs/msndcl/msndvkit.zip"
		einfo "    ftp://ftp.voyetra.com/pub/tbs/pinn/pnddk100.zip"
		einfo "and copy them to /etc/sound/. Registration required."
		einfo
		einfo "See also: https://www.kernel.org/doc/Documentation/sound/oss/MultiSound"
	fi
}