Сравнение edk2-202502-r1 с edk2-202511-r1

/usr/portage/sys-firmware/edk2/edk2-202511-r1.ebuild 2026-04-04 11:46:08.840960074 +0300
4 4
EAPI=8
5 5

  
6 6
PYTHON_REQ_USE="sqlite"
7
PYTHON_COMPAT=( python3_{12..13} )
7
PYTHON_COMPAT=( python3_{12..14} )
8 8

  
9 9
inherit edo prefix python-any-r1 readme.gentoo-r1 secureboot toolchain-funcs
10 10

  
11 11
DESCRIPTION="TianoCore EDK II UEFI firmware for virtual machines"
12 12
HOMEPAGE="https://github.com/tianocore/edk2"
13 13

  
14
DBXDATE="05092023" # MMDDYYYY
15
BUNDLED_BROTLI_SUBMODULE_SHA="f4153a09f87cbb9c826d8fc12c74642bb2d879ea"
14
BUNDLED_BROTLI_SUBMODULE_SHA="e230f474b87134e8c6c85b630084c612057f253e"
16 15
BUNDLED_LIBFDT_SUBMODULE_SHA="cfff805481bdea27f900c32698171286542b8d3c"
17 16
BUNDLED_LIBSPDM_SUBMODULE_SHA="98ef964e1e9a0c39c7efb67143d3a13a819432e0"
18 17
BUNDLED_MBEDTLS_SUBMODULE_SHA="8c89224991adff88d53cd380f42a2baa36f91454"
19 18
BUNDLED_MIPI_SYS_T_SUBMODULE_SHA="370b5944c046bab043dd8b133727b2135af7747a"
20
BUNDLED_OPENSSL_SUBMODULE_P="openssl-3.4.1"
19
BUNDLED_OPENSSL_SUBMODULE_P="openssl-3.5.1"
20

  
21
SBO_VER="1.6.3" # https://github.com/microsoft/secureboot_objects/releases
22
DBX_URI="https://github.com/microsoft/secureboot_objects/raw/refs/tags/v${SBO_VER}/PostSignedObjects/DBX/@ARCH@/DBXUpdate.bin -> @ARCH@_DBXUpdate_v${SBO_VER}.bin"
21 23

  
22 24
SRC_URI="
23 25
	https://github.com/tianocore/${PN}/archive/${PN}-stable${PV}.tar.gz
......
32 34
		-> mipi-sys-t-${BUNDLED_MIPI_SYS_T_SUBMODULE_SHA}.tar.gz
33 35
	https://github.com/openssl/openssl/releases/download/${BUNDLED_OPENSSL_SUBMODULE_P}/${BUNDLED_OPENSSL_SUBMODULE_P}.tar.gz
34 36

  
35
	amd64? (
36
		https://uefi.org/sites/default/files/resources/x64_DBXUpdate_${DBXDATE}.bin
37
		https://uefi.org/sites/default/files/resources/x64_DBXUpdate.bin -> x64_DBXUpdate_${DBXDATE}.bin
38
	)
37
	amd64? ( ${DBX_URI//@ARCH@/amd64} )
38
	arm64? ( ${DBX_URI//@ARCH@/arm64} )
39 39

  
40
	arm64? (
41
		https://uefi.org/sites/default/files/resources/arm64_DBXUpdate_${DBXDATE}.bin
42
		https://uefi.org/sites/default/files/resources/arm64_DBXUpdate.bin -> arm64_DBXUpdate_${DBXDATE}.bin
40
	!amd64? (
43 41
		https://github.com/devicetree-org/pylibfdt/archive/${BUNDLED_LIBFDT_SUBMODULE_SHA}.tar.gz
44 42
			-> pylibfdt-${BUNDLED_LIBFDT_SUBMODULE_SHA}.tar.gz
45 43
	)
......
48 46
S="${WORKDIR}/${PN}-${PN}-stable${PV}"
49 47
LICENSE="BSD-2-with-patent MIT"
50 48
SLOT="0"
51
KEYWORDS="-* amd64 ~loong ~riscv"
49
KEYWORDS="-* ~amd64 ~arm64 ~loong ~riscv"
52 50

  
53 51
BDEPEND="
54 52
	${PYTHON_DEPS}
......
63 61
"
64 62

  
65 63
PATCHES=(
66
	"${FILESDIR}/${PN}-202411-werror.patch"
67
	"${FILESDIR}/${PN}-202408-binutils-2.41-textrels.patch"
68
	"${FILESDIR}/edk2-202502-nasm-3.patch"
64
	"${FILESDIR}/${PN}-202511-werror.patch"
65
	"${FILESDIR}/${PN}-202502-nasm-3.patch"
66
	"${FILESDIR}/${PN}-202505-UninstallMemAttrProtocol.patch"
69 67
)
70 68

  
71 69
DISABLE_AUTOFORMATTING="true"
......
89 87
	arm64)
90 88
		TARGET_ARCH="AARCH64"
91 89
		QEMU_ARCH="aarch64"
92
		ARCH_DIRS="${DIR}/ArmVirtQemu-AARCH64"
90
		ARCH_DIRS="${DIR}/ArmVirtQemu-AArch64"
93 91
		UNIT0="QEMU_EFI.qcow2"
94 92
		UNIT1="QEMU_VARS.qcow2"
95 93
		FMT="qcow2"
......
161 159
	link_mod "${WORKDIR}/${BUNDLED_OPENSSL_SUBMODULE_P}" \
162 160
		CryptoPkg/Library/OpensslLib/openssl
163 161

  
164
	use arm64 &&
162
	[[ -e ${DISTDIR}/pylibfdt-${BUNDLED_LIBFDT_SUBMODULE_SHA}.tar.gz ]] &&
165 163
		link_mod "${WORKDIR}/pylibfdt-${BUNDLED_LIBFDT_SUBMODULE_SHA}" \
166 164
			MdePkg/Library/BaseFdtLib/libfdt
167 165

  
......
171 169
	hprefixify "${FILESDIR}"/descriptors/*.json
172 170
}
173 171

  
174
mybuild() {
172
my_build() {
175 173
	edo build \
176 174
		-t "${TOOLCHAIN}" \
177 175
		-b "${BUILD_TARGET}" \
176
		-a "${TARGET_ARCH}" \
178 177
		-D NETWORK_HTTP_BOOT_ENABLE \
179 178
		-D NETWORK_IP6_ENABLE \
180 179
		-D NETWORK_TLS_ENABLE \
......
185 184
		"${@}"
186 185
}
187 186

  
187
sb_build() {
188
	# DO NOT enable the shell with Secure Boot as it can be used as a bypass!
189
	my_build \
190
		-D BUILD_SHELL=FALSE \
191
		-D SECURE_BOOT_ENABLE \
192
		--pcd PcdDxeNxMemoryProtectionPolicy=0xC000000000007FD5 \
193
		--pcd PcdImageProtectionPolicy=0x03 \
194
		--pcd PcdNullPointerDetectionPropertyMask=0x03 \
195
		--pcd PcdSetNxForStack=TRUE \
196
		--pcd PcdUninstallMemAttrProtocol=FALSE \
197
		"${@}"
198
}
199

  
188 200
# Add the MS and Red Hat Secure Boot certificates and update the revocation list
189
# for the given architecture in the given raw variables image.
190
mk_fw_vars() {
191
	edo virt-fw-vars \
192
		--set-dbx "${DISTDIR}/$1_DBXUpdate_${DBXDATE}.bin" \
193
		--secure-boot --enroll-redhat --inplace "$2"
201
# in the given raw variable images.
202
mk_fw_vars_raw() {
203
	local input args=() dbx="${DISTDIR}/${ARCH}_DBXUpdate_v${SBO_VER}.bin"
204
	[[ -e ${dbx} ]] && args+=( --set-dbx "${dbx}" )
205

  
206
	for input; do
207
		edo virt-fw-vars --secure-boot --enroll-redhat "${args[@]}" \
208
			--inplace "${input}"
209
	done
210
}
211

  
212
# Write the MS and Red Hat Secure Boot certificates and the revocation list to a
213
# JSON file for QEMU.
214
mk_fw_vars_json() {
215
	local args=() dbx="${DISTDIR}/${ARCH}_DBXUpdate_v${SBO_VER}.bin"
216
	[[ -e ${dbx} ]] && args+=( --set-dbx "${dbx}" )
217

  
218
	edo virt-fw-vars --secure-boot --enroll-redhat "${args[@]}" \
219
		--output-json "${S}/${ARCH}.qemuvars.json"
194 220
}
195 221

  
196 222
# Convert the given images from raw to QCOW2 and resize them to the amount given
......
206 232
	done
207 233
}
208 234

  
209
nx_strict_args() {
210
	"${@}" \
211
		--pcd PcdDxeNxMemoryProtectionPolicy=0xC000000000007FD5 \
212
		--pcd PcdImageProtectionPolicy=0x03 \
213
		--pcd PcdNullPointerDetectionPropertyMask=0x03 \
214
		--pcd PcdSetNxForStack=TRUE
215
}
216

  
217 235
src_compile() {
218 236
	TOOLCHAIN="GCC5"
219 237
	BUILD_TARGET="RELEASE"
......
233 251

  
234 252
	. ./edksetup.sh
235 253

  
236
	# DO NOT enable the shell with Secure Boot as it can be used as a bypass!
237

  
238 254
	case "${ARCH}" in
239 255
	amd64)
240
		BUILD_ARGS+=(
241
			# shim.efi has broken MemAttr code
242
			--pcd PcdUninstallMemAttrProtocol=TRUE
243
		)
244

  
245 256
		local SIZE
246 257
		for SIZE in _2M _4M; do
247
			nx_strict_args mybuild -a X64 -p OvmfPkg/OvmfPkgX64.dsc \
258
			sb_build -p OvmfPkg/OvmfPkgX64.dsc \
248 259
				-D FD_SIZE${SIZE}B \
249
				-D BUILD_SHELL=FALSE \
250
				-D SECURE_BOOT_ENABLE \
251 260
				-D SMM_REQUIRE
252 261

  
253
			mv -T Build/OvmfX64 Build/OvmfX64${SIZE}.secboot || die
262
			mv -T Build/OvmfX64{,${SIZE}.secboot} || die
254 263

  
255
			mybuild -a X64 -p OvmfPkg/OvmfPkgX64.dsc \
264
			# shim.efi has broken MemAttr code
265
			my_build -p OvmfPkg/OvmfPkgX64.dsc \
256 266
				-D FD_SIZE${SIZE}B \
257
				--pcd PcdDxeNxMemoryProtectionPolicy=0
267
				--pcd PcdDxeNxMemoryProtectionPolicy=0 \
268
				--pcd PcdUninstallMemAttrProtocol=TRUE
258 269

  
259
			mv -T Build/OvmfX64 Build/OvmfX64${SIZE} || die
270
			mv -T Build/OvmfX64{,${SIZE}} || die
260 271

  
261
			mk_fw_vars x64 Build/OvmfX64${SIZE}.secboot/"${BUILD_DIR}"/FV/OVMF_VARS.fd
272
			mk_fw_vars_raw Build/OvmfX64${SIZE}.secboot/"${BUILD_DIR}"/FV/OVMF_VARS.fd
262 273
		done
263 274

  
275
		sb_build -p OvmfPkg/OvmfPkgX64.dsc \
276
			-D FD_SIZE_4MB \
277
			-D QEMU_PV_VARS
278

  
279
		mv -T Build/OvmfX64{,.qemuvars} || die
280

  
264 281
		# Fedora only converts newer images to QCOW2. 2MB images are raw.
265 282
		raw_to_qcow2 0 Build/OvmfX64_4M*/"${BUILD_DIR}"/FV/OVMF_{CODE,VARS}.fd
283
		mk_fw_vars_json
266 284
		;;
267 285
	arm64)
268
		BUILD_ARGS+=(
269
			# shim.efi has broken MemAttr code
270
			--pcd PcdUninstallMemAttrProtocol=TRUE
271
		)
286
		sb_build -p ArmVirtPkg/ArmVirtQemu.dsc
287
		mv -T Build/ArmVirtQemu-AArch64{,.secboot_INSECURE} || die
272 288

  
273
		nx_strict_args mybuild -a AARCH64 -p ArmVirtPkg/ArmVirtQemu.dsc \
274
			-D BUILD_SHELL=FALSE \
275
			-D SECURE_BOOT_ENABLE
289
		sb_build -p ArmVirtPkg/ArmVirtQemu.dsc \
290
			-D QEMU_PV_VARS
276 291

  
277
		mv -T Build/ArmVirtQemu-AARCH64 Build/ArmVirtQemu-AARCH64.secboot_INSECURE || die
292
		mv -T Build/ArmVirtQemu-AArch64{,.qemuvars} || die
278 293

  
279
		mybuild -a AARCH64 -p ArmVirtPkg/ArmVirtQemu.dsc \
280
			--pcd PcdDxeNxMemoryProtectionPolicy=0xC000000000007FD1
294
		# shim.efi has broken MemAttr code
295
		my_build -p ArmVirtPkg/ArmVirtQemu.dsc \
296
			--pcd PcdDxeNxMemoryProtectionPolicy=0xC000000000007FD1 \
297
			--pcd PcdUninstallMemAttrProtocol=TRUE
281 298

  
282
		mk_fw_vars arm64 Build/ArmVirtQemu-AARCH64.secboot_INSECURE/"${BUILD_DIR}"/FV/QEMU_VARS.fd
283
		raw_to_qcow2 64m Build/ArmVirtQemu-AARCH64*/"${BUILD_DIR}"/FV/QEMU_{EFI,VARS}.fd
299
		mk_fw_vars_raw Build/ArmVirtQemu-AArch64.secboot_INSECURE/"${BUILD_DIR}"/FV/QEMU_VARS.fd
300
		raw_to_qcow2 64m Build/ArmVirtQemu-AArch64{,.secboot_INSECURE}/"${BUILD_DIR}"/FV/QEMU_{EFI,VARS}.fd
301
		mk_fw_vars_json
284 302
		;;
285 303
	loong)
286
		mybuild -a LOONGARCH64 -p OvmfPkg/LoongArchVirt/LoongArchVirtQemu.dsc
304
		my_build -p OvmfPkg/LoongArchVirt/LoongArchVirtQemu.dsc
287 305
		raw_to_qcow2 0 Build/LoongArchVirtQemu/"${BUILD_DIR}"/FV/QEMU_{EFI,VARS}.fd
288 306
		;;
289 307
	riscv)
290
		mybuild -a RISCV64 -p OvmfPkg/RiscVVirt/RiscVVirtQemu.dsc
308
		my_build -p OvmfPkg/RiscVVirt/RiscVVirtQemu.dsc
291 309
		raw_to_qcow2 32m Build/RiscVVirtQemu/"${BUILD_DIR}"/FV/RISCV_VIRT_{CODE,VARS}.fd
292 310
		;;
293 311
	esac
312

  
313
	# The standalone shell is safe so always build it.
314
	my_build -p ShellPkg/ShellPkg.dsc
294 315
}
295 316

  
296 317
src_install() {
......
299 320
	case "${ARCH}" in
300 321
	amd64)
301 322
		insinto ${DIR}/OvmfX64
302
		doins Build/OvmfX64_2M/"${BUILD_DIR}"/X64/Shell.efi
303 323

  
304 324
		for SIZE in _2M _4M; do
305 325
			for TYPE in "" .secboot; do
......
309 329
			done
310 330
		done
311 331

  
332
		newins Build/OvmfX64.qemuvars/"${BUILD_DIR}"/FV/OVMF_CODE.fd OVMF_CODE.qemuvars.fd
333
		newins amd64.qemuvars.json OVMF_VARS.qemuvars.json
334

  
312 335
		# Compatibility with older package versions.
313 336
		dosym ${PN}/OvmfX64 /usr/share/edk2-ovmf
314 337
		;;
......
316 339
		insinto ${DIR}/ArmVirtQemu-AARCH64
317 340

  
318 341
		for TYPE in "" .secboot_INSECURE; do
319
			newins Build/ArmVirtQemu-AARCH64${TYPE}/"${BUILD_DIR}"/FV/QEMU_EFI.qcow2 QEMU_EFI${TYPE}.qcow2
320
			newins Build/ArmVirtQemu-AARCH64${TYPE}/"${BUILD_DIR}"/FV/QEMU_VARS.qcow2 QEMU_VARS${TYPE}.qcow2
342
			newins Build/ArmVirtQemu-AArch64${TYPE}/"${BUILD_DIR}"/FV/QEMU_EFI.qcow2 QEMU_EFI${TYPE}.qcow2
343
			newins Build/ArmVirtQemu-AArch64${TYPE}/"${BUILD_DIR}"/FV/QEMU_VARS.qcow2 QEMU_VARS${TYPE}.qcow2
321 344
		done
345

  
346
		newins Build/ArmVirtQemu-AArch64.qemuvars/"${BUILD_DIR}"/FV/QEMU_EFI.fd QEMU_EFI.qemuvars.fd
347
		newins arm64.qemuvars.json QEMU_VARS.qemuvars.json
322 348
		;;
323 349
	loong)
324 350
		insinto ${DIR}/LoongArchVirtQemu
......
330 356
		;;
331 357
	esac
332 358

  
359
	newins Build/Shell/"${BUILD_DIR}/${TARGET_ARCH}"/Shell_EA4BB293-2D7F-4456-A681-1F22F42CD0BC.efi Shell.efi
360

  
333 361
	insinto /usr/share/qemu/firmware
334 362
	doins "${FILESDIR}"/descriptors/*"${TARGET_ARCH,,}"*.json
335 363

  
Спасибо!