Annotation of /trunk/core/grub/grub-2.06-r3.smage2
Parent Directory | Revision Log
Revision 33586 -
(hide annotations)
(download)
Thu Aug 10 11:09:41 2023 UTC (9 months, 2 weeks ago) by niro
File size: 6929 byte(s)
Thu Aug 10 11:09:41 2023 UTC (9 months, 2 weeks ago) by niro
File size: 6929 byte(s)
-reodered src_install, install efi first and grub bios last
1 | niro | 33586 | # $Id$ |
2 | |||
3 | PNAME="grub" | ||
4 | PVER="2.06" | ||
5 | PBUILD="r3" | ||
6 | |||
7 | PCAT="sys-apps" | ||
8 | |||
9 | DESCRIPTION="GNU GRUB2 boot loader." | ||
10 | HOMEPAGE="http://www.gnu.org/software/grub/" | ||
11 | |||
12 | DEPEND=">= sys-apps/mage-release-1 | ||
13 | >= sys-libs/ncurses-6.4 | ||
14 | >= sys-dev/gettext-0.22 | ||
15 | >= sys-libs/zlib-1.2 | ||
16 | >= media-libs/freetype-2.13 | ||
17 | >= virtual/xz-utils | ||
18 | >= sys-apps/os-prober-1.56 | ||
19 | >= sys-fs/device-mapper-2.02 | ||
20 | >= sys-fs/dosfstools-4.2 | ||
21 | >= sys-fs/fuse3-3" | ||
22 | |||
23 | SDEPEND=">= virtual/pkgconfig" | ||
24 | |||
25 | SRCFILE="${PNAME}-${PVER}.tar.gz" | ||
26 | SRCDIR="${BUILDDIR}/${PNAME}-${PVER}" | ||
27 | |||
28 | UNIFONT_PVER=15.0.06 | ||
29 | UNIFONT_SRCFILE="unifont-${UNIFONT_PVER}.pcf.gz" | ||
30 | |||
31 | sminclude mtools | ||
32 | |||
33 | # grub.confd revision | ||
34 | CONF_REV=1.4 | ||
35 | |||
36 | SRC_URI=( | ||
37 | gnu://${PNAME}/${SRCFILE} | ||
38 | https://unifoundry.com/pub/unifont/unifont-${UNIFONT_PVER}/font-builds/${UNIFONT_SRCFILE} | ||
39 | mirror://${PNAME}/${SRCFILE} | ||
40 | mirror://${PNAME}/${UNIFONT_SRCFILE} | ||
41 | mirror://${PNAME}/${PNAME}-2.06-confd.patch | ||
42 | mirror://${PNAME}/${PNAME}-2.02-cosmetic.patch | ||
43 | mirror://${PNAME}/${PNAME}-2.00-10_linux-pretty-names-from-etc-os-release.patch | ||
44 | mirror://${PNAME}/${PNAME}-2.06-e2fsprogs-1.47-fixes.patch | ||
45 | mirror://${PNAME}/grub.confd-${CONF_REV} | ||
46 | ) | ||
47 | |||
48 | UP2DATE="updatecmd_gnu ${PNAME} gz" | ||
49 | |||
50 | # grub doesn't like CFLAG optimation, | ||
51 | # and do you really want that at your bootloader ?? | ||
52 | unset CFLAGS | ||
53 | unset CXXFLAGS | ||
54 | |||
55 | src_prepare() | ||
56 | { | ||
57 | munpack ${SRCFILE} || die | ||
58 | cd ${SRCDIR} | ||
59 | |||
60 | # upstream fixes | ||
61 | mpatch -Np1 ${PNAME}-2.06-e2fsprogs-1.47-fixes.patch || die | ||
62 | |||
63 | # use /etc/conf.d/grub instead of /etc/default/grub | ||
64 | mpatch ${PNAME}-2.06-confd.patch || die | ||
65 | # cosmetic fixes | ||
66 | mpatch ${PNAME}-2.02-cosmetic.patch || die | ||
67 | # generate pretty names from os-release if GRUB_DISTRIBUTOR is not set | ||
68 | mpatch ${PNAME}-2.00-10_linux-pretty-names-from-etc-os-release.patch | ||
69 | |||
70 | # http://savannah.gnu.org/bugs/?40330 and https://bugs.archlinux.org/task/37847 | ||
71 | gzip -cd ${SOURCEDIR}/${PNAME}/${UNIFONT_SRCFILE} > unifont.bdf || die | ||
72 | |||
73 | # # run bootstrap (only required for versions from git) | ||
74 | # ./bootstrap --gnulib-srcdir="${SRCDIR}/gnulib/" --no-git || die | ||
75 | |||
76 | # setup build dirs | ||
77 | install -d ${SRCDIR}/build_bios || die | ||
78 | install -d ${SRCDIR}/build_efi || die | ||
79 | if [[ ${ARCH} = x86_64 ]] | ||
80 | then | ||
81 | install -d ${SRCDIR}/build_efi_ia32 || die | ||
82 | fi | ||
83 | } | ||
84 | |||
85 | src_compile() | ||
86 | { | ||
87 | local myconf | ||
88 | local myarch | ||
89 | local efiemu | ||
90 | |||
91 | # common configure options | ||
92 | # grub-mount requires fuse3 | ||
93 | # grub-mkfont requires freetype2 | ||
94 | myconf="--prefix=/usr | ||
95 | --mandir=/usr/share/man | ||
96 | --infodir=/usr/share/info | ||
97 | --datarootdir=/usr/share | ||
98 | --sysconfdir=/etc | ||
99 | --localstatedir=/var/lib | ||
100 | --libdir=/usr/$(mlibdir) | ||
101 | --disable-static | ||
102 | --enable-shared | ||
103 | --enable-nls | ||
104 | --disable-werror | ||
105 | --disable-silent-rules | ||
106 | --enable-device-mapper | ||
107 | --enable-cache-stats | ||
108 | --enable-boot-time | ||
109 | --enable-grub-mkfont | ||
110 | --enable-grub-mount | ||
111 | --with-bootdir=/boot | ||
112 | --with-grubdir=grub" | ||
113 | |||
114 | # fix freetype build issues | ||
115 | export FREETYPE="pkg-config freetype2" | ||
116 | export BUILD_FREETYPE="pkg-config freetype2" | ||
117 | |||
118 | # unset all build flags | ||
119 | unset CFLAGS | ||
120 | unset CPPFLAGS | ||
121 | unset CXXFLAGS | ||
122 | unset LDFLAGS | ||
123 | unset MAKEFLAGS | ||
124 | |||
125 | # build bios version | ||
126 | cd ${SRCDIR}/build_bios | ||
127 | myarch="i386" | ||
128 | |||
129 | if [[ ${ARCH} = x86_64 ]] | ||
130 | then | ||
131 | efiemu="--enable-efiemu" | ||
132 | else | ||
133 | efiemu="--disable-efiemu" | ||
134 | fi | ||
135 | |||
136 | ../configure --with-platform=pc --target="${myarch}" ${myconf} ${efiemu} || die | ||
137 | make || die | ||
138 | |||
139 | # build efi version | ||
140 | cd ${SRCDIR}/build_efi | ||
141 | case ${ARCH} in | ||
142 | x86_64) myarch="${ARCH}" ;; | ||
143 | i*86) myarch="i386" ;; | ||
144 | esac | ||
145 | |||
146 | efiemu="--disable-efiemu" | ||
147 | |||
148 | ../configure --with-platform=efi --target="${myarch}" ${myconf} ${efiemu} || die | ||
149 | make || die | ||
150 | |||
151 | # build ia32 efi version on x86_64 | ||
152 | if [[ ${ARCH} = x86_64 ]] | ||
153 | then | ||
154 | cd ${SRCDIR}/build_efi_ia32 | ||
155 | myarch="i386" | ||
156 | efiemu="--disable-efiemu" | ||
157 | |||
158 | ../configure --with-platform=efi --target="${myarch}" ${myconf} ${efiemu} || die | ||
159 | make || die | ||
160 | fi | ||
161 | } | ||
162 | |||
163 | src_install() | ||
164 | { | ||
165 | local myarch | ||
166 | |||
167 | # install efi version first | ||
168 | cd ${SRCDIR}/build_efi | ||
169 | case ${ARCH} in | ||
170 | x86_64) myarch="${ARCH}" ;; | ||
171 | i*86) myarch="i386" ;; | ||
172 | esac | ||
173 | mmake DESTDIR=${BINDIR} install || die | ||
174 | # remove debugging related files | ||
175 | mdelete /usr/$(mlibdir)/grub/${myarch}-efi/\*.module || die | ||
176 | #mdelete -f /usr/$(mlibdir)/grub/${myarch}-efi/\*.image || die # may or may not exist | ||
177 | mdelete /usr/$(mlibdir)/grub/${myarch}-efi/kernel.exec || die | ||
178 | mdelete /usr/$(mlibdir)/grub/${myarch}-efi/gdb_grub || die | ||
179 | mdelete /usr/$(mlibdir)/grub/${myarch}-efi/gmodule.pl || die | ||
180 | |||
181 | # install efi_ia32 version | ||
182 | if [[ ${ARCH} = x86_64 ]] | ||
183 | then | ||
184 | cd ${SRCDIR}/build_efi_ia32 | ||
185 | myarch="i386" | ||
186 | |||
187 | mmake DESTDIR=${BINDIR} install || die | ||
188 | # remove debugging related files | ||
189 | mdelete /usr/$(mlibdir)/grub/${myarch}-efi/\*.module || die | ||
190 | #mdelete -f /usr/$(mlibdir)/grub/${myarch}-efi/\*.image || die # may or may not exist | ||
191 | mdelete /usr/$(mlibdir)/grub/${myarch}-efi/kernel.exec || die | ||
192 | mdelete /usr/$(mlibdir)/grub/${myarch}-efi/gdb_grub || die | ||
193 | mdelete /usr/$(mlibdir)/grub/${myarch}-efi/gmodule.pl || die | ||
194 | fi | ||
195 | |||
196 | # install bios version last | ||
197 | cd ${SRCDIR}/build_bios | ||
198 | mmake DESTDIR=${BINDIR} install || die | ||
199 | # remove debugging related files | ||
200 | mdelete /usr/$(mlibdir)/grub/i386-pc/\*.module || die | ||
201 | mdelete /usr/$(mlibdir)/grub/i386-pc/\*.image || die | ||
202 | mdelete /usr/$(mlibdir)/grub/i386-pc/kernel.exec || die | ||
203 | mdelete /usr/$(mlibdir)/grub/i386-pc/gdb_grub || die | ||
204 | mdelete /usr/$(mlibdir)/grub/i386-pc/gmodule.pl || die | ||
205 | |||
206 | # not required by pretty name patch anymore | ||
207 | # set distribution | ||
208 | #echo 'GRUB_DISTRIBUTOR="Magellan-Linux"' >> ${BINDIR}/usr/share/grub/grub-mkconfig_lib || die | ||
209 | |||
210 | # setup a proper grub default conf | ||
211 | minstallconf grub.confd-${CONF_REV} grub || die | ||
212 | |||
213 | # enable a splash screen by default | ||
214 | sed -i '/^GRUB_CMDLINE_LINUX_DEFAULT=/s:\"\(.*\)\":\"\1 splash\":' ${BINDIR}/etc/conf.d/grub || die | ||
215 | |||
216 | # needed dir | ||
217 | minstalldir /boot/grub || die | ||
218 | |||
219 | # # install unifont | ||
220 | # minstalldir /usr/share/fonts/unifont || die | ||
221 | # gunzip -c ${SOURCEDIR}/${PNAME}/${UNIFONT_SRCFILE} > ${BINDIR}/usr/share/fonts/unifont/unifont.pcf || die | ||
222 | |||
223 | # docs | ||
224 | cd ${SRCDIR} | ||
225 | minstalldocs AUTHORS ChangeLog COPYING NEWS README THANKS TODO || die | ||
226 | } | ||
227 | |||
228 | preinstall() | ||
229 | { | ||
230 | mount /boot &> /dev/null | ||
231 | } | ||
232 | |||
233 | postinstall() | ||
234 | { | ||
235 | [ ! -d ${MROOT}/boot/grub ] && install -d ${MROOT}/boot/grub | ||
236 | |||
237 | # creates some essential links | ||
238 | [ ! -e ${MROOT}/boot/boot ] && ln -sf . ${MROOT}/boot/boot | ||
239 | |||
240 | if [[ -z ${MROOT} ]] || [[ ${MROOT} = / ]] && [[ ${MAGE_BOOTSTRAP} != true ]] | ||
241 | then | ||
242 | # create a device.map | ||
243 | if [[ ! -f /boot/grub/device.map ]] | ||
244 | then | ||
245 | if [[ -x $(type -P grub-mkdevicemap) ]] | ||
246 | then | ||
247 | grub-mkdevicemap | ||
248 | fi | ||
249 | fi | ||
250 | |||
251 | # needed by grub-mkconfig on the first run | ||
252 | if [[ ! -f /boot/grub/video.lst ]] | ||
253 | then | ||
254 | install -m0644 /$(mlibdir)/grub/*/video.lst /boot/grub/video.lst | ||
255 | fi | ||
256 | |||
257 | # update grub.cfg | ||
258 | LC_ALL=C grub-mkconfig -o /boot/grub/grub.cfg | ||
259 | |||
260 | # install bootloader to disk | ||
261 | #local bootpartition="$(df -h /boot |(read; awk '{print $1; exit}'))" | ||
262 | local bootdisk | ||
263 | bootdisk="$(grub-probe --target=drive /boot | sed 's:(\(.*\),.*):(\1):')" | ||
264 | |||
265 | # Generate core.img, but don't let it be installed in boot sector | ||
266 | grub-install --no-floppy "${bootdisk}" | ||
267 | fi | ||
268 | } |