blob: 3fde658a3fc19aaaee7d686ed878075e22b4121c (
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
|
# Maintainer: Christian Hesse <mail@eworm.de>
pkgname=ipxe-git
pkgver=1.21.1.r642.g9d9465b14
pkgrel=1
pkgdesc='iPXE open source boot firmware - git checkout'
arch=('any')
url='http://www.ipxe.org/'
license=('GPL-2.0-or-later')
depends=('bash')
makedepends=('git' 'libisoburn' 'mtools' 'syslinux' 'xz')
provides=('ipxe')
conflicts=('ipxe')
install=ipxe.install
source=('git+https://github.com/ipxe/ipxe.git'
'ipxe-0002-banner.patch::https://github.com/eworm-de/ipxe/commit/f3d6edcec640b93c3d8cf56e64c956b8ae77d280.patch'
'ipxe-0003-efi-iso.patch::https://github.com/eworm-de/ipxe/commit/1bb5900a8aa64ae332dcd49a7ce82e43063b0244.patch'
'grub'
'chain-default.ipxe'
'chain-default-3928.ipxe')
sha256sums=('SKIP'
'e861a6f98c299a59fdbda38af69234b8fa61f8a4921ee339ab42dc6fdf6dee1a'
'380e25716b197f8cb1621be0ba15f6f8884c0956690d03fa8945180b3bf241a6'
'ead8e9b386206bc0e95838a6e074c218e038cd3fa1ca5cff2b73e34b40d5552f'
'f7ec78e26671f4df90d89440d8b2a69473c15cb6b25dda32c773023378fec42a'
'e26a54b4e99816b34baebcb7a15d99d57c9395c9689ffbae2329cc675248f9b9')
pkgver() {
cd ipxe/
if GITTAG="$(git describe --abbrev=0 --tags 2>/dev/null)"; then
printf '%s.r%s.g%s' \
"$(sed -e "s/^${pkgname%%-git}//" -e 's/^[-_/a-zA-Z]\+//' -e 's/[-_+]/./g' <<< ${GITTAG})" \
"$(git rev-list --count ${GITTAG}..)" \
"$(git rev-parse --short HEAD)"
else
printf '0.r%s.g%s' \
"$(git rev-list --count master)" \
"$(git rev-parse --short HEAD)"
fi
}
prepare() {
cd ipxe/src/
# ArchLinux branding
patch -Np2 < "${srcdir}/ipxe-0002-banner.patch"
# change menu colors
sed -i "/COLOR_[A-Z]*_BG/s/COLOR_BLUE/COLOR_BLACK/" config/colour.h
# enable neighbour command
sed -i "/NEIGHBOUR_CMD/c #define NEIGHBOUR_CMD" config/general.h
# enable ping command
sed -i "/PING_CMD/c #define PING_CMD" config/general.h
# enable HTTPS
sed -i "/DOWNLOAD_PROTO_HTTPS/c #define DOWNLOAD_PROTO_HTTPS" config/general.h
# enable reboot and poweroff
sed -i -e "/REBOOT_CMD/c #define REBOOT_CMD" \
-e "/POWEROFF_CMD/c #define POWEROFF_CMD" config/general.h
# disable WEP, WPA and WPA2
sed -i -e "/CRYPTO_80211_/s/^#define/#undef/" \
-e "/IWMGMT_CMD/c #undef IWMGMT_CMD" config/general.h
}
build() {
cd ipxe/src/
# default targets (ipxe.{lkrn,dsk,iso,usb}, undionly.kpxe)
make \
NO_WERROR=1 \
all
# this includes drivers, but is bigger
# build targets with embedded scripts first and rename
make \
NO_WERROR=1 \
EMBED=${srcdir}/chain-default.ipxe \
bin/ipxe.pxe
mv bin/ipxe.pxe bin/ipxe-default.pxe
make \
NO_WERROR=1 \
EMBED=${srcdir}/chain-default-3928.ipxe \
bin/ipxe.pxe
mv bin/ipxe.pxe bin/ipxe-default-3928.pxe
make \
NO_WERROR=1 \
bin/ipxe.pxe
# EFI
make \
NO_WERROR=1 \
bin-i386-efi/ipxe.efi \
bin-x86_64-efi/ipxe.efi
# hybrid image
./util/genfsimg \
-o bin/ipxe-hybrid.iso \
bin-x86_64-efi/ipxe.efi \
bin-i386-efi/ipxe.efi \
bin/ipxe.lkrn
}
package() {
cd ipxe/
install -D -m0755 ${srcdir}/grub ${pkgdir}/etc/grub.d/35_ipxe
install -D -m0644 COPYING ${pkgdir}/usr/share/licenses/ipxe/COPYING
install -D -m0644 COPYING.GPLv2 ${pkgdir}/usr/share/licenses/ipxe/COPYING.GPLv2
install -D -m0644 COPYING.UBDL ${pkgdir}/usr/share/licenses/ipxe/COPYING.UBDL
cd src/
# iPXE kernel bzImage
install -D -m0644 bin/ipxe.lkrn ${pkgdir}/usr/lib/ipxe/ipxe.lkrn
# default targets, legacy and EFI ISO
install -D -m0644 bin/ipxe.dsk ${pkgdir}/usr/share/ipxe/ipxe.dsk
install -D -m0644 bin/ipxe.usb ${pkgdir}/usr/share/ipxe/ipxe.usb
install -D -m0644 bin/ipxe.iso ${pkgdir}/usr/share/ipxe/ipxe.iso
install -D -m0644 bin/ipxe-hybrid.iso ${pkgdir}/usr/share/ipxe/ipxe-hybrid.iso
# iPXE UNDI-only targets
install -D -m0644 bin/undionly.kpxe ${pkgdir}/usr/lib/ipxe/undi.kpxe
# iPXE targets with full driver support
install -D -m0644 bin/ipxe.pxe ${pkgdir}/usr/lib/ipxe/ipxe.pxe
install -D -m0644 bin/ipxe-default.pxe ${pkgdir}/usr/lib/ipxe/ipxe-default.pxe
install -D -m0644 bin/ipxe-default-3928.pxe ${pkgdir}/usr/lib/ipxe/ipxe-default-3928.pxe
# iPXE EFI targets
install -D -m0644 bin-i386-efi/ipxe.efi ${pkgdir}/usr/lib/ipxe/efi-i386.efi
install -D -m0644 bin-x86_64-efi/ipxe.efi ${pkgdir}/usr/lib/ipxe/efi-x86_64.efi
}
|