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