blob: efea10128f347f7c239fc7a6c2a8ed24ab859c0a (
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
|
# Copyright 1999-2023 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
inherit savedconfig secureboot toolchain-funcs
# for 1.21.1_p20230601
COMMIT_SHA1="4fa4052c7ebb59e4d4aa396f1563c89118623ec7"
DESCRIPTION="Open source network boot (PXE) firmware"
HOMEPAGE="https://ipxe.org/"
SRC_URI="
!binary? ( https://github.com/${PN}/${PN}/archive/${COMMIT_SHA1}.tar.gz -> ${P}.gh.tar.gz )
binary? ( https://dev.gentoo.org/~tamiko/distfiles/${P}-bin.tar.xz )"
S="${WORKDIR}/${PN}-${COMMIT_SHA1}/src"
LICENSE="GPL-2"
SLOT="0"
KEYWORDS="~alpha amd64 ~arm arm64 ~hppa ~loong ~mips ~ppc ppc64 ~riscv x86"
IUSE="+binary uefi32 uefi64 ipv6 iso lkrn +qemu undi usb vmware"
REQUIRED_USE="!amd64? ( !x86? ( binary ) )"
SOURCE_DEPEND="
app-arch/xz-utils
dev-lang/perl
iso? (
app-cdr/cdrtools
sys-boot/syslinux
)"
BDEPEND="
!binary? (
amd64? ( ${SOURCE_DEPEND} )
x86? ( ${SOURCE_DEPEND} )
)"
pkg_setup() {
if use uefi32 || use uefi64; then
secureboot_pkg_setup
fi
}
src_configure() {
use binary && return
cat > config/local/general.h <<-EOF || die
#undef BANNER_TIMEOUT
#define BANNER_TIMEOUT 0
EOF
if use ipv6; then
cat >> config/local/general.h <<-EOF || die
#define NET_PROTO_IPV6
EOF
fi
if use vmware; then
cat >> config/local/general.h <<-EOF || die
#define VMWARE_SETTINGS
#define CONSOLE_VMWARE
EOF
fi
restore_config config/local/general.h
tc-ld-disable-gold
}
ipxemake() {
# Q='' makes the build verbose since that's what everyone loves now
emake Q='' \
CC="$(tc-getCC)" \
LD="$(tc-getLD)" \
AS="$(tc-getAS)" \
AR="$(tc-getAR)" \
NM="$(tc-getNM)" \
OBJCOPY="$(tc-getOBJCOPY)" \
RANLIB="$(tc-getRANLIB)" \
OBJDUMP="$(tc-getOBJDUMP)" \
HOST_CC="$(tc-getBUILD_CC)" \
"$@"
}
src_compile() {
use binary && return
export NO_WERROR=1
if use qemu; then
ipxemake bin/808610de.rom # pxe-e1000.rom (old)
ipxemake bin/8086100e.rom # pxe-e1000.rom
ipxemake bin/80861209.rom # pxe-eepro100.rom
ipxemake bin/10500940.rom # pxe-ne2k_pci.rom
ipxemake bin/10222000.rom # pxe-pcnet.rom
ipxemake bin/10ec8139.rom # pxe-rtl8139.rom
ipxemake bin/1af41000.rom # pxe-virtio.rom
fi
if use vmware; then
ipxemake bin/8086100f.mrom # e1000
ipxemake bin/808610d3.mrom # e1000e
ipxemake bin/10222000.mrom # vlance
ipxemake bin/15ad07b0.rom # vmxnet3
fi
use uefi32 && ipxemake PLATFORM=efi BIN=bin-i386-efi bin-i386-efi/ipxe.efi
use uefi64 && ipxemake PLATFORM=efi BIN=bin-x86_64-efi bin-x86_64-efi/ipxe.efi
use iso && ipxemake bin/ipxe.iso
use undi && ipxemake bin/undionly.kpxe
use usb && ipxemake bin/ipxe.usb
use lkrn && ipxemake bin/ipxe.lkrn
}
src_install() {
insinto /usr/share/ipxe/
if use qemu || use vmware; then
doins bin/*.rom
fi
use vmware && doins bin/*.mrom
use uefi32 && newins bin-i386-efi/ipxe.efi ipxe-i386.efi
use uefi64 && newins bin-x86_64-efi/ipxe.efi ipxe-x86_64.efi
# Add a symlink for backwards compatiblity, in case both variants are
# enabled the x86_64 bit variant takes presedence.
use uefi32 && dosym ipxe-i386.efi /usr/share/ipxe/ipxe.efi
use uefi64 && dosym ipxe-x86_64.efi /usr/share/ipxe/ipxe.efi
use iso && doins bin/*.iso
use undi && doins bin/*.kpxe
use usb && doins bin/*.usb
use lkrn && doins bin/*.lkrn
if use uefi32 || use uefi64; then
secureboot_auto_sign --in-place
fi
save_config config/local/general.h
}
|