Gentoo Archives: gentoo-commits

From: Mike Gilbert <floppym@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] repo/gentoo:master commit in: sys-boot/syslinux/files/6.04_pre3/, sys-boot/syslinux/
Date: Mon, 30 May 2022 20:01:08
Message-Id: 1653940857.dd588aed9953294f244862dcc4c75960ecf54f6e.floppym@gentoo
1 commit: dd588aed9953294f244862dcc4c75960ecf54f6e
2 Author: Mike Gilbert <floppym <AT> gentoo <DOT> org>
3 AuthorDate: Mon May 30 19:53:16 2022 +0000
4 Commit: Mike Gilbert <floppym <AT> gentoo <DOT> org>
5 CommitDate: Mon May 30 20:00:57 2022 +0000
6 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=dd588aed
7
8 sys-boot/syslinux: add 6.04_pre3
9
10 Signed-off-by: Mike Gilbert <floppym <AT> gentoo.org>
11
12 sys-boot/syslinux/Manifest | 1 +
13 ...he-.note.gnu.property-section-for-the-mbr.patch | 47 ++++
14 ...inker-to-put-all-sections-into-a-single-P.patch | 311 +++++++++++++++++++++
15 .../0003-GCC-10-compatibility-patch.patch | 99 +++++++
16 ...4-Inherit-toolchain-vars-from-environment.patch | 72 +++++
17 .../0005-Include-efisetjmp.h-from-efi.h.patch | 24 ++
18 sys-boot/syslinux/metadata.xml | 25 +-
19 sys-boot/syslinux/syslinux-6.04_pre3.ebuild | 92 ++++++
20 8 files changed, 661 insertions(+), 10 deletions(-)
21
22 diff --git a/sys-boot/syslinux/Manifest b/sys-boot/syslinux/Manifest
23 index 10c5556ec517..199f8fc51470 100644
24 --- a/sys-boot/syslinux/Manifest
25 +++ b/sys-boot/syslinux/Manifest
26 @@ -1 +1,2 @@
27 DIST syslinux-6.04-pre1.tar.xz 5283272 BLAKE2B 800e5977ed13b26a1756c33d8625e850631b642e26a86e3328196ddd998596693c3a26db0ada4c0ba78a4ba692a1cc01886b6eb693d877ddafcfb325ecdeb639 SHA512 7927dd39be8e2dcf4138a6fea33def67d19d938379d694f15b48fdd2f5924c028b7a9e7bd71d0c7c6630c203e9e2a54296628e530632ad5e6f55b1ebefe8fc98
28 +DIST syslinux-6.04-pre3.tar.gz 10760898 BLAKE2B 708bb7f3ecbe1888471f3be0102270c056bf8c5be22013f36b56c90f13f5358ce1853722b14b962d8156cd1f045b9687166b98a1d7ad2853acbe6303fa40fae9 SHA512 0619a25347f3964e0c7c6ff629b2f59f01bd9e0afd822f46b67f26b8c84cbc55534cf7b22ff1bf83eec4986fd2d8f1646a3d750190a7c6c50251affc0b62594d
29
30 diff --git a/sys-boot/syslinux/files/6.04_pre3/0001-Strip-the-.note.gnu.property-section-for-the-mbr.patch b/sys-boot/syslinux/files/6.04_pre3/0001-Strip-the-.note.gnu.property-section-for-the-mbr.patch
31 new file mode 100644
32 index 000000000000..5d823436bec8
33 --- /dev/null
34 +++ b/sys-boot/syslinux/files/6.04_pre3/0001-Strip-the-.note.gnu.property-section-for-the-mbr.patch
35 @@ -0,0 +1,47 @@
36 +From 60fef313164d1048cf11423656732953776e5e2f Mon Sep 17 00:00:00 2001
37 +From: Lukas Schwaighofer <lukas@××××××××××××.name>
38 +Date: Sat, 18 Aug 2018 12:48:21 +0200
39 +Subject: [PATCH 1/5] Strip the .note.gnu.property section for the mbr
40 +
41 +This section is added since binutils Debian version 2.31.1-2 and causes mbr.bin
42 +to grow in size beyond what can fit into the master boot record.
43 +
44 +Forwarded: https://www.syslinux.org/archives/2018-August/026168.html
45 +---
46 + mbr/i386/mbr.ld | 6 +++++-
47 + mbr/x86_64/mbr.ld | 6 +++++-
48 + 2 files changed, 10 insertions(+), 2 deletions(-)
49 +
50 +diff --git a/mbr/i386/mbr.ld b/mbr/i386/mbr.ld
51 +index d14ba802..6d489904 100644
52 +--- a/mbr/i386/mbr.ld
53 ++++ b/mbr/i386/mbr.ld
54 +@@ -69,5 +69,9 @@ SECTIONS
55 + .debug_funcnames 0 : { *(.debug_funcnames) }
56 + .debug_typenames 0 : { *(.debug_typenames) }
57 + .debug_varnames 0 : { *(.debug_varnames) }
58 +- /DISCARD/ : { *(.note.GNU-stack) }
59 ++ /DISCARD/ :
60 ++ {
61 ++ *(.note.GNU-stack)
62 ++ *(.note.gnu.property)
63 ++ }
64 + }
65 +diff --git a/mbr/x86_64/mbr.ld b/mbr/x86_64/mbr.ld
66 +index ae27d49a..5b46db66 100644
67 +--- a/mbr/x86_64/mbr.ld
68 ++++ b/mbr/x86_64/mbr.ld
69 +@@ -68,5 +68,9 @@ SECTIONS
70 + .debug_funcnames 0 : { *(.debug_funcnames) }
71 + .debug_typenames 0 : { *(.debug_typenames) }
72 + .debug_varnames 0 : { *(.debug_varnames) }
73 +- /DISCARD/ : { *(.note.GNU-stack) }
74 ++ /DISCARD/ :
75 ++ {
76 ++ *(.note.GNU-stack)
77 ++ *(.note.gnu.property)
78 ++ }
79 + }
80 +--
81 +2.35.1
82 +
83
84 diff --git a/sys-boot/syslinux/files/6.04_pre3/0002-Force-the-linker-to-put-all-sections-into-a-single-P.patch b/sys-boot/syslinux/files/6.04_pre3/0002-Force-the-linker-to-put-all-sections-into-a-single-P.patch
85 new file mode 100644
86 index 000000000000..33b6a36c63ea
87 --- /dev/null
88 +++ b/sys-boot/syslinux/files/6.04_pre3/0002-Force-the-linker-to-put-all-sections-into-a-single-P.patch
89 @@ -0,0 +1,311 @@
90 +From 0c646f067a6b766a5ce0434e5e4e7b839b511331 Mon Sep 17 00:00:00 2001
91 +From: Lukas Schwaighofer <lukas@××××××××××××.name>
92 +Date: Sat, 18 Aug 2018 16:56:35 +0200
93 +Subject: [PATCH 2/5] Force the linker to put all sections into a single
94 + PT_LOAD segment
95 +
96 +This is required when using binutils >= 2.31 which writes two PT_LOAD segments
97 +by default. This is not supported by the wrapper.c script used to convert the
98 +shared object into an elf binary.
99 +
100 +Forwarded: https://www.syslinux.org/archives/2018-August/026167.html
101 +---
102 + efi/i386/syslinux.ld | 37 +++++++++++++++++++++----------------
103 + efi/x86_64/syslinux.ld | 37 +++++++++++++++++++++----------------
104 + 2 files changed, 42 insertions(+), 32 deletions(-)
105 +
106 +diff --git a/efi/i386/syslinux.ld b/efi/i386/syslinux.ld
107 +index bab3fc74..19c16479 100644
108 +--- a/efi/i386/syslinux.ld
109 ++++ b/efi/i386/syslinux.ld
110 +@@ -19,6 +19,11 @@ OUTPUT_FORMAT("elf32-i386", "elf32-i386", "elf32-i386")
111 + OUTPUT_ARCH(i386)
112 + ENTRY(_start)
113 +
114 ++PHDRS
115 ++{
116 ++ all PT_LOAD ;
117 ++}
118 ++
119 + SECTIONS
120 + {
121 + . = 0;
122 +@@ -31,7 +36,7 @@ SECTIONS
123 + *(.text)
124 + *(.text.*)
125 + __text_end = .;
126 +- }
127 ++ } :all
128 +
129 + . = ALIGN(16);
130 +
131 +@@ -40,7 +45,7 @@ SECTIONS
132 + *(.rodata)
133 + *(.rodata.*)
134 + __rodata_end = .;
135 +- }
136 ++ } :all
137 +
138 + . = ALIGN(4);
139 +
140 +@@ -49,14 +54,14 @@ SECTIONS
141 + KEEP (*(SORT(.ctors.*)))
142 + KEEP (*(.ctors))
143 + __ctors_end = .;
144 +- }
145 ++ } :all
146 +
147 + .dtors : {
148 + __dtors_start = .;
149 + KEEP (*(SORT(.dtors.*)))
150 + KEEP (*(.dtors))
151 + __dtors_end = .;
152 +- }
153 ++ } :all
154 +
155 + . = ALIGN(4096);
156 + .rel : {
157 +@@ -64,7 +69,7 @@ SECTIONS
158 + *(.rel.data)
159 + *(.rel.data.*)
160 + *(.rel.ctors)
161 +- }
162 ++ } :all
163 +
164 + . = ALIGN(4);
165 +
166 +@@ -72,14 +77,14 @@ SECTIONS
167 + __gnu_hash_start = .;
168 + *(.gnu.hash)
169 + __gnu_hash_end = .;
170 +- }
171 ++ } :all
172 +
173 +
174 + .dynsym : {
175 + __dynsym_start = .;
176 + *(.dynsym)
177 + __dynsym_end = .;
178 +- }
179 ++ } :all
180 +
181 + . = ALIGN(4);
182 +
183 +@@ -87,7 +92,7 @@ SECTIONS
184 + __dynstr_start = .;
185 + *(.dynstr)
186 + __dynstr_end = .;
187 +- }
188 ++ } :all
189 +
190 + . = ALIGN(4);
191 +
192 +@@ -104,7 +109,7 @@ SECTIONS
193 + KEEP (*(.got.plt))
194 + KEEP (*(.got))
195 + __got_end = .;
196 +- }
197 ++ } :all
198 +
199 + . = ALIGN(4);
200 +
201 +@@ -112,7 +117,7 @@ SECTIONS
202 + __dynamic_start = .;
203 + *(.dynamic)
204 + __dynamic_end = .;
205 +- }
206 ++ } :all
207 +
208 + . = ALIGN(16);
209 +
210 +@@ -122,19 +127,19 @@ SECTIONS
211 + *(.data.*)
212 + *(.lowmem)
213 + __data_end = .;
214 +- }
215 ++ } :all
216 +
217 + .reloc : {
218 + *(.reloc)
219 +- }
220 ++ } :all
221 +
222 + .symtab : {
223 + *(.symtab)
224 +- }
225 ++ } :all
226 +
227 + .strtab : {
228 + *(.strtab)
229 +- }
230 ++ } :all
231 +
232 + .bss (NOLOAD) : {
233 + /* the EFI loader doesn't seem to like a .bss section,
234 +@@ -148,7 +153,7 @@ SECTIONS
235 + __bss_end = .;
236 + *(.sbss)
237 + *(.scommon)
238 +- }
239 ++ } :all
240 + __bss_len = ABSOLUTE(__bss_end) - ABSOLUTE(__bss_start);
241 + __bss_dwords = (__bss_len + 3) >> 2;
242 +
243 +@@ -161,7 +166,7 @@ SECTIONS
244 + *(.hugebss)
245 + *(.hugebss.*)
246 + __hugebss_end = .;
247 +- }
248 ++ } :all
249 +
250 + _end = .;
251 +
252 +diff --git a/efi/x86_64/syslinux.ld b/efi/x86_64/syslinux.ld
253 +index 450641c6..a2c124fd 100644
254 +--- a/efi/x86_64/syslinux.ld
255 ++++ b/efi/x86_64/syslinux.ld
256 +@@ -19,6 +19,11 @@ OUTPUT_FORMAT("elf64-x86-64", "elf64-x86-64", "elf64-x86-64")
257 + OUTPUT_ARCH(i386:x86-64)
258 + ENTRY(_start)
259 +
260 ++PHDRS
261 ++{
262 ++ all PT_LOAD ;
263 ++}
264 ++
265 + SECTIONS
266 + {
267 + . = 0;
268 +@@ -31,7 +36,7 @@ SECTIONS
269 + *(.text)
270 + *(.text.*)
271 + __text_end = .;
272 +- }
273 ++ } :all
274 +
275 + . = ALIGN(16);
276 +
277 +@@ -40,7 +45,7 @@ SECTIONS
278 + *(.rodata)
279 + *(.rodata.*)
280 + __rodata_end = .;
281 +- }
282 ++ } :all
283 +
284 + . = ALIGN(4);
285 +
286 +@@ -49,14 +54,14 @@ SECTIONS
287 + KEEP (*(SORT(.ctors.*)))
288 + KEEP (*(.ctors))
289 + __ctors_end = .;
290 +- }
291 ++ } :all
292 +
293 + .dtors : {
294 + __dtors_start = .;
295 + KEEP (*(SORT(.dtors.*)))
296 + KEEP (*(.dtors))
297 + __dtors_end = .;
298 +- }
299 ++ } :all
300 +
301 + . = ALIGN(4096);
302 + .rel : {
303 +@@ -64,7 +69,7 @@ SECTIONS
304 + *(.rel.data)
305 + *(.rel.data.*)
306 + *(.rel.ctors)
307 +- }
308 ++ } :all
309 +
310 + . = ALIGN(4);
311 +
312 +@@ -72,14 +77,14 @@ SECTIONS
313 + __gnu_hash_start = .;
314 + *(.gnu.hash)
315 + __gnu_hash_end = .;
316 +- }
317 ++ } :all
318 +
319 +
320 + .dynsym : {
321 + __dynsym_start = .;
322 + *(.dynsym)
323 + __dynsym_end = .;
324 +- }
325 ++ } :all
326 +
327 + . = ALIGN(4);
328 +
329 +@@ -87,7 +92,7 @@ SECTIONS
330 + __dynstr_start = .;
331 + *(.dynstr)
332 + __dynstr_end = .;
333 +- }
334 ++ } :all
335 +
336 + . = ALIGN(4);
337 +
338 +@@ -104,7 +109,7 @@ SECTIONS
339 + KEEP (*(.got.plt))
340 + KEEP (*(.got))
341 + __got_end = .;
342 +- }
343 ++ } :all
344 +
345 + . = ALIGN(4);
346 +
347 +@@ -112,7 +117,7 @@ SECTIONS
348 + __dynamic_start = .;
349 + *(.dynamic)
350 + __dynamic_end = .;
351 +- }
352 ++ } :all
353 +
354 + . = ALIGN(16);
355 +
356 +@@ -122,19 +127,19 @@ SECTIONS
357 + *(.data.*)
358 + *(.lowmem)
359 + __data_end = .;
360 +- }
361 ++ } :all
362 +
363 + .reloc : {
364 + *(.reloc)
365 +- }
366 ++ } :all
367 +
368 + .symtab : {
369 + *(.symtab)
370 +- }
371 ++ } :all
372 +
373 + .strtab : {
374 + *(.strtab)
375 +- }
376 ++ } :all
377 +
378 + .bss (NOLOAD) : {
379 + /* the EFI loader doesn't seem to like a .bss section,
380 +@@ -148,7 +153,7 @@ SECTIONS
381 + __bss_end = .;
382 + *(.sbss)
383 + *(.scommon)
384 +- }
385 ++ } :all
386 + __bss_len = ABSOLUTE(__bss_end) - ABSOLUTE(__bss_start);
387 + __bss_dwords = (__bss_len + 3) >> 2;
388 +
389 +@@ -161,7 +166,7 @@ SECTIONS
390 + *(.hugebss)
391 + *(.hugebss.*)
392 + __hugebss_end = .;
393 +- }
394 ++ } :all
395 +
396 + _end = .;
397 +
398 +--
399 +2.35.1
400 +
401
402 diff --git a/sys-boot/syslinux/files/6.04_pre3/0003-GCC-10-compatibility-patch.patch b/sys-boot/syslinux/files/6.04_pre3/0003-GCC-10-compatibility-patch.patch
403 new file mode 100644
404 index 000000000000..6d60eab14bbb
405 --- /dev/null
406 +++ b/sys-boot/syslinux/files/6.04_pre3/0003-GCC-10-compatibility-patch.patch
407 @@ -0,0 +1,99 @@
408 +From b92e6e8f624c96acf2ce80192a893ee25de527a1 Mon Sep 17 00:00:00 2001
409 +From: Lukas Schwaighofer <lukas@××××××××××××.name>
410 +Date: Sun, 16 Aug 2020 15:23:21 +0200
411 +Subject: [PATCH 3/5] GCC-10 compatibility patch
412 +
413 +* Add `-fcommon` to most gcc invocations to allow duplicate definitions
414 +* __builtin_strlen is not really a "builtin" an implementation still
415 + needs to be provided (source:
416 + https://bugzilla.suse.com/show_bug.cgi?id=1166605#c5). Work around the
417 + issue by supplying an inline function. The strlen function added to
418 + dos/string.h was copied from com32/lib/strlen.c.
419 +---
420 + dos/string.h | 11 ++++++++++-
421 + mk/efi.mk | 1 +
422 + mk/elf.mk | 1 +
423 + mk/embedded.mk | 2 +-
424 + mk/lib.mk | 2 +-
425 + 5 files changed, 14 insertions(+), 3 deletions(-)
426 +
427 +diff --git a/dos/string.h b/dos/string.h
428 +index f648de2d..c4649f5f 100644
429 +--- a/dos/string.h
430 ++++ b/dos/string.h
431 +@@ -5,12 +5,21 @@
432 + #ifndef _STRING_H
433 + #define _STRING_H
434 +
435 ++#include <stddef.h>
436 ++
437 + /* Standard routines */
438 + #define memcpy(a,b,c) __builtin_memcpy(a,b,c)
439 + #define memmove(a,b,c) __builtin_memmove(a,b,c)
440 + #define memset(a,b,c) __builtin_memset(a,b,c)
441 + #define strcpy(a,b) __builtin_strcpy(a,b)
442 +-#define strlen(a) __builtin_strlen(a)
443 ++
444 ++static inline size_t strlen(const char *s)
445 ++{
446 ++ const char *ss = s;
447 ++ while (*ss)
448 ++ ss++;
449 ++ return ss - s;
450 ++}
451 +
452 + /* This only returns true or false */
453 + static inline int memcmp(const void *__m1, const void *__m2, unsigned int __n)
454 +diff --git a/mk/efi.mk b/mk/efi.mk
455 +index f097ad22..407bc077 100644
456 +--- a/mk/efi.mk
457 ++++ b/mk/efi.mk
458 +@@ -25,6 +25,7 @@ FORMAT=efi-app-$(EFI_SUBARCH)
459 +
460 + CFLAGS = -I$(EFIINC) -I$(EFIINC)/$(EFI_SUBARCH) \
461 + -DEFI_FUNCTION_WRAPPER -fPIC -fshort-wchar -ffreestanding \
462 ++ -fcommon \
463 + -Wall -I$(com32)/include -I$(com32)/include/sys \
464 + -I$(core)/include -I$(core)/ $(ARCHOPT) \
465 + -I$(com32)/lib/ -I$(com32)/libutil/include -std=gnu99 \
466 +diff --git a/mk/elf.mk b/mk/elf.mk
467 +index b46dbd06..dc265ce9 100644
468 +--- a/mk/elf.mk
469 ++++ b/mk/elf.mk
470 +@@ -55,6 +55,7 @@ GPLINCLUDE =
471 + endif
472 +
473 + CFLAGS = $(GCCOPT) $(GCCWARN) -W -Wall \
474 ++ -fcommon \
475 + -fomit-frame-pointer -D__COM32__ -D__FIRMWARE_$(FIRMWARE)__ -DDYNAMIC_MODULE \
476 + -nostdinc -iwithprefix include \
477 + -I$(com32)/libutil/include -I$(com32)/include \
478 +diff --git a/mk/embedded.mk b/mk/embedded.mk
479 +index 488dc0fc..fae13e20 100644
480 +--- a/mk/embedded.mk
481 ++++ b/mk/embedded.mk
482 +@@ -57,7 +57,7 @@ LIBGCC := $(shell $(CC) $(GCCOPT) --print-libgcc)
483 + LD += -m elf_$(ARCH)
484 +
485 + # Note: use += for CFLAGS and SFLAGS in case something is set in MCONFIG.local
486 +-CFLAGS += $(GCCOPT) -g $(GCCWARN) -Wno-sign-compare $(OPTFLAGS) $(INCLUDES)
487 ++CFLAGS += $(GCCOPT) -g $(GCCWARN) -Wno-sign-compare -fcommon $(OPTFLAGS) $(INCLUDES)
488 + SFLAGS += $(CFLAGS) -D__ASSEMBLY__
489 +
490 + .SUFFIXES: .c .o .S .s .i .elf .com .bin .asm .lst .c32 .lss
491 +diff --git a/mk/lib.mk b/mk/lib.mk
492 +index f8591e56..6dd54295 100644
493 +--- a/mk/lib.mk
494 ++++ b/mk/lib.mk
495 +@@ -49,7 +49,7 @@ OPTFLAGS = -Os -march=$(MARCH) -falign-functions=0 -falign-jumps=0 \
496 + -falign-labels=0 -ffast-math -fomit-frame-pointer
497 + WARNFLAGS = $(GCCWARN) -Wpointer-arith -Wwrite-strings -Wstrict-prototypes -Winline
498 +
499 +-CFLAGS = $(OPTFLAGS) $(REQFLAGS) $(WARNFLAGS) $(LIBFLAGS)
500 ++CFLAGS = $(OPTFLAGS) $(REQFLAGS) -fcommon $(WARNFLAGS) $(LIBFLAGS)
501 +
502 + ifeq ($(FWCLASS),EFI)
503 + CFLAGS += -mno-red-zone
504 +--
505 +2.35.1
506 +
507
508 diff --git a/sys-boot/syslinux/files/6.04_pre3/0004-Inherit-toolchain-vars-from-environment.patch b/sys-boot/syslinux/files/6.04_pre3/0004-Inherit-toolchain-vars-from-environment.patch
509 new file mode 100644
510 index 000000000000..40784f9b2698
511 --- /dev/null
512 +++ b/sys-boot/syslinux/files/6.04_pre3/0004-Inherit-toolchain-vars-from-environment.patch
513 @@ -0,0 +1,72 @@
514 +From 46d58e2b03e15a863aed8661b9ee922da4930a3e Mon Sep 17 00:00:00 2001
515 +From: Mike Gilbert <floppym@g.o>
516 +Date: Mon, 30 May 2022 11:57:07 -0400
517 +Subject: [PATCH 4/5] Inherit toolchain vars from environment
518 +
519 +---
520 + mk/syslinux.mk | 36 ++++++++++++++++++------------------
521 + 1 file changed, 18 insertions(+), 18 deletions(-)
522 +
523 +diff --git a/mk/syslinux.mk b/mk/syslinux.mk
524 +index 593ff75f..91d984e8 100644
525 +--- a/mk/syslinux.mk
526 ++++ b/mk/syslinux.mk
527 +@@ -37,7 +37,7 @@ ifdef DEBUG
528 + DEBUGOPT = -DDEBUG=$(DEBUG)
529 + endif
530 +
531 +-NASM = nasm
532 ++NASM ?= nasm
533 + NASMOPT = -Ox $(DEBUGOPT)
534 +
535 + PERL = perl
536 +@@ -46,29 +46,29 @@ UPX = upx
537 +
538 + CHMOD = chmod
539 +
540 +-CC = gcc
541 ++CC ?= gcc
542 + gcc_ok = $(shell tmpf=gcc_ok.$$$$.tmp; \
543 + if $(CC) $(GCCOPT) $(1) -c $(topdir)/dummy.c \
544 + -o $$tmpf 2>/dev/null ; \
545 + then echo '$(1)'; else echo '$(2)'; fi; \
546 + rm -f $$tmpf)
547 +
548 +-LD = ld
549 +-OBJDUMP = objdump
550 +-OBJCOPY = objcopy
551 +-STRIP = strip
552 +-AR = ar
553 +-NM = nm
554 +-RANLIB = ranlib
555 +-STRIP = strip
556 +-GZIPPROG = gzip
557 +-XZ = xz
558 +-PNGTOPNM = pngtopnm
559 +-MCOPY = mcopy
560 +-MFORMAT = mformat
561 +-MKISOFS = mkisofs
562 +-SED = sed
563 +-WGET = wget
564 ++LD ?= ld
565 ++OBJDUMP ?= objdump
566 ++OBJCOPY ?= objcopy
567 ++STRIP ?= strip
568 ++AR ?= ar
569 ++NM ?= nm
570 ++RANLIB ?= ranlib
571 ++STRIP ?= strip
572 ++GZIPPROG ?= gzip
573 ++XZ ?= xz
574 ++PNGTOPNM ?= pngtopnm
575 ++MCOPY ?= mcopy
576 ++MFORMAT ?= mformat
577 ++MKISOFS ?= mkisofs
578 ++SED ?= sed
579 ++WGET ?= wget
580 +
581 + com32 = $(topdir)/com32
582 +
583 +--
584 +2.35.1
585 +
586
587 diff --git a/sys-boot/syslinux/files/6.04_pre3/0005-Include-efisetjmp.h-from-efi.h.patch b/sys-boot/syslinux/files/6.04_pre3/0005-Include-efisetjmp.h-from-efi.h.patch
588 new file mode 100644
589 index 000000000000..0d32d7167024
590 --- /dev/null
591 +++ b/sys-boot/syslinux/files/6.04_pre3/0005-Include-efisetjmp.h-from-efi.h.patch
592 @@ -0,0 +1,24 @@
593 +From 9889f441d006d11d0fb0b726b9f81396ce6fcfbd Mon Sep 17 00:00:00 2001
594 +From: Mike Gilbert <floppym@g.o>
595 +Date: Mon, 30 May 2022 14:22:28 -0400
596 +Subject: [PATCH 5/5] Include efisetjmp.h from efi.h
597 +
598 +---
599 + efi/efi.h | 1 +
600 + 1 file changed, 1 insertion(+)
601 +
602 +diff --git a/efi/efi.h b/efi/efi.h
603 +index c266532f..250c511e 100644
604 +--- a/efi/efi.h
605 ++++ b/efi/efi.h
606 +@@ -22,6 +22,7 @@
607 +
608 + #include <efi.h>
609 + #include <efilib.h>
610 ++#include <efisetjmp.h>
611 + #include <efistdarg.h>
612 +
613 + /* Delay for 100 ms */
614 +--
615 +2.35.1
616 +
617
618 diff --git a/sys-boot/syslinux/metadata.xml b/sys-boot/syslinux/metadata.xml
619 index 423c8b85ac5e..22c238faa909 100644
620 --- a/sys-boot/syslinux/metadata.xml
621 +++ b/sys-boot/syslinux/metadata.xml
622 @@ -1,14 +1,19 @@
623 <?xml version="1.0" encoding="UTF-8"?>
624 <!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
625 <pkgmetadata>
626 -<maintainer type="person">
627 - <email>chithanh@g.o</email>
628 -</maintainer>
629 -<maintainer type="project">
630 - <email>base-system@g.o</email>
631 - <name>Gentoo Base System</name>
632 -</maintainer>
633 -<upstream>
634 - <remote-id type="cpe">cpe:/a:gentoo:syslinux</remote-id>
635 -</upstream>
636 + <maintainer type="person">
637 + <email>chithanh@g.o</email>
638 + </maintainer>
639 + <maintainer type="project">
640 + <email>base-system@g.o</email>
641 + <name>Gentoo Base System</name>
642 + </maintainer>
643 + <use>
644 + <flag name="bios">Enable BIOS support</flag>
645 + <flag name="efi32">Enable 32-bit EFI support</flag>
646 + <flag name="efi64">Enable 64-bit EFI support</flag>
647 + </use>
648 + <upstream>
649 + <remote-id type="cpe">cpe:/a:gentoo:syslinux</remote-id>
650 + </upstream>
651 </pkgmetadata>
652
653 diff --git a/sys-boot/syslinux/syslinux-6.04_pre3.ebuild b/sys-boot/syslinux/syslinux-6.04_pre3.ebuild
654 new file mode 100644
655 index 000000000000..14724565c3dd
656 --- /dev/null
657 +++ b/sys-boot/syslinux/syslinux-6.04_pre3.ebuild
658 @@ -0,0 +1,92 @@
659 +# Copyright 1999-2022 Gentoo Authors
660 +# Distributed under the terms of the GNU General Public License v2
661 +
662 +EAPI=8
663 +
664 +inherit toolchain-funcs
665 +
666 +DESCRIPTION="SYSLINUX, PXELINUX, ISOLINUX, EXTLINUX and MEMDISK bootloaders"
667 +HOMEPAGE="https://www.syslinux.org/"
668 +MY_P=${P/_/-}
669 +SRC_URI="https://git.zytor.com/syslinux/syslinux.git/snapshot/${MY_P}.tar.gz"
670 +
671 +LICENSE="GPL-2"
672 +SLOT="0"
673 +KEYWORDS="-* ~amd64 ~x86"
674 +IUSE="+bios efi32 efi64"
675 +REQUIRED_USE="|| ( bios efi32 efi64 )"
676 +
677 +BDEPEND="
678 + dev-lang/perl
679 + bios? (
680 + app-arch/upx
681 + app-text/asciidoc
682 + dev-lang/nasm
683 + )
684 +"
685 +RDEPEND="
686 + sys-apps/util-linux
687 + sys-fs/mtools
688 + dev-perl/Crypt-PasswdMD5
689 + dev-perl/Digest-SHA1
690 +"
691 +DEPEND="${RDEPEND}
692 + efi32? ( sys-boot/gnu-efi[abi_x86_32(-)] )
693 + efi64? ( sys-boot/gnu-efi[abi_x86_64(-)] )
694 + virtual/os-headers
695 +"
696 +
697 +S=${WORKDIR}/${MY_P}
698 +
699 +QA_EXECSTACK="usr/share/syslinux/*"
700 +QA_WX_LOAD="usr/share/syslinux/*"
701 +QA_PRESTRIPPED="usr/share/syslinux/.*"
702 +QA_FLAGS_IGNORED=".*"
703 +
704 +src_prepare() {
705 + local PATCHES=(
706 + "${FILESDIR}/${PV}"
707 + )
708 + default
709 +}
710 +
711 +efimake() {
712 + local ABI="${1}"
713 + local libdir="$(get_libdir)"
714 + shift
715 + local args=(
716 + EFIINC="${ESYSROOT}/usr/include/efi"
717 + LIBDIR="${ESYSROOT}/usr/${libdir}"
718 + LIBEFI="${ESYSROOT}/usr/${libdir}/libefi.a"
719 + "${@}"
720 + )
721 + emake "${args[@]}"
722 +}
723 +
724 +src_compile() {
725 + tc-export AR CC LD OBJCOPY RANLIB
726 + unset LDFLAGS
727 + if use bios; then
728 + emake bios
729 + fi
730 + if use efi32; then
731 + efimake x86 efi32
732 + fi
733 + if use efi64; then
734 + efimake amd64 efi64
735 + fi
736 +}
737 +
738 +src_install() {
739 + local args=(
740 + INSTALLROOT="${ED}"
741 + MANDIR='$(DATADIR)/man'
742 + $(usev bios)
743 + $(usev efi32)
744 + $(usev efi64)
745 + install
746 + )
747 + emake -j1 "${args[@]}"
748 + einstalldocs
749 + dostrip -x /usr/share/syslinux
750 +}