From 3970ee7d1ace219b7f0799686f2cec51d14b6d83 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=C3=A1bor=20Stefanik?= Date: Sun, 14 Apr 2024 05:51:30 +0200 Subject: [PATCH 1/5] Add byacc parser generator This is meant to replace heirloom yacc for compiling pre-musl parsers. Unlike heirloom yacc, it's in the public domain, and can be linked with meslibc without licensing concerns. --- steps/byacc-20240109/byacc-20240109.checksums | 1 + steps/byacc-20240109/files/Makefile | 83 +++++++++++++++++++ steps/byacc-20240109/pass1.kaem | 51 ++++++++++++ steps/byacc-20240109/sources | 1 + steps/manifest | 1 + 5 files changed, 137 insertions(+) create mode 100644 steps/byacc-20240109/byacc-20240109.checksums create mode 100644 steps/byacc-20240109/files/Makefile create mode 100644 steps/byacc-20240109/pass1.kaem create mode 100644 steps/byacc-20240109/sources diff --git a/steps/byacc-20240109/byacc-20240109.checksums b/steps/byacc-20240109/byacc-20240109.checksums new file mode 100644 index 0000000..97e363b --- /dev/null +++ b/steps/byacc-20240109/byacc-20240109.checksums @@ -0,0 +1 @@ +608651c4836eff7f164a0c6d238337a254fca964677bec76d87f85692ce71b59 /usr/bin/yacc diff --git a/steps/byacc-20240109/files/Makefile b/steps/byacc-20240109/files/Makefile new file mode 100644 index 0000000..edbd3cb --- /dev/null +++ b/steps/byacc-20240109/files/Makefile @@ -0,0 +1,83 @@ +DEST = . + +HDRS = defs.h + +CFLAGS ?= -O -DNDEBUG + +LDFLAGS ?= + +LIBS ?= + +LINKER ?= $(CC) + +MAKEFILE = Makefile + +OBJS = closure.o \ + error.o graph.o \ + lalr.o \ + lr0.o \ + main.o \ + mkpar.o mstring.o \ + output.o \ + reader.o \ + symtab.o \ + verbose.o \ + warshall.o yaccpar.o + +PRINT = pr -f -l88 + +PROGRAM = yacc + +SRCS = closure.c \ + error.c graph.c \ + lalr.c \ + lr0.c \ + main.c \ + mkpar.c mstring.c \ + output.c \ + reader.c \ + symtab.c \ + verbose.c \ + warshall.c yaccpar.c + +all: $(PROGRAM) + +$(PROGRAM): $(OBJS) $(LIBS) + @$(LINKER) $(LDFLAGS) -o $(PROGRAM) $(OBJS) $(LIBS) + +clean:; @rm -f $(OBJS) + +clobber:; @rm -f $(OBJS) $(PROGRAM) + +depend:; @mkmf -f $(MAKEFILE) PROGRAM=$(PROGRAM) DEST=$(DEST) + +index:; @ctags -wx $(HDRS) $(SRCS) + +install: $(PROGRAM) + @echo Installing $(PROGRAM) in $(DEST) + @install -s $(PROGRAM) $(DEST) + +listing:; @$(PRINT) Makefile $(HDRS) $(SRCS) | lpr + +lint:; @lint $(SRCS) + +program: $(PROGRAM) + +tags: $(HDRS) $(SRCS); @ctags $(HDRS) $(SRCS) + +### +closure.o: defs.h +error.o: defs.h +lalr.o: defs.h +lr0.o: defs.h +main.o: defs.h +mkpar.o: defs.h +output.o: defs.h +reader.o: defs.h +symtab.o: defs.h +verbose.o: defs.h +warshall.o: defs.h +btyaccpar.o: defs.h +yaccpar.o: defs.h +graph.o: defs.h +mstring.o: defs.h diff --git a/steps/byacc-20240109/pass1.kaem b/steps/byacc-20240109/pass1.kaem new file mode 100644 index 0000000..e70fe94 --- /dev/null +++ b/steps/byacc-20240109/pass1.kaem @@ -0,0 +1,51 @@ +#!/bin/sh + +# SPDX-FileCopyrightText: 2021 Andrius Štikonas +# SPDX-FileCopyrightText: 2021-22 fosslinux +# SPDX-FileCopyrightText: 2024 Gábor Stefanik +# +# SPDX-License-Identifier: GPL-3.0-or-later + +set -ex + +# Check tarball checksums +checksum-transcriber sources +sha256sum -c sources.SHA256SUM + +mkdir build src +cd build + +# Extract +cp ${DISTFILES}/${pkg}.tgz ../src/${pkg}.tar.gz +gunzip -f ../src/${pkg}.tar.gz +tar xf ../src/${pkg}.tar +rm -r ../src/ +cd ${pkg} + +# Prepare +cp ../../files/Makefile . + +# meslibc has no fgetpos/fsetpos - emulate using fseek/ftell +sed -i -e "s/fpos_t/long/" -e "s/fgetpos(f, &save_area.line_fpos) != 0/(save_area.line_fpos = ftell(f)) == -1/" \ + -e "s/fsetpos(input_file, &save_area.line_fpos)/fseek(input_file, save_area.line_fpos, SEEK_SET)/" reader.c + +# likewise, meslibc has no tmpfile() +sed -i -e "s/tmpfile()/fopen(label, \"w+\")/" main.c + +# Build yacc +make CC=tcc AR=tcc\ -ar CFLAGS=-DMAXPATHLEN=100\ -DEILSEQ=84\ -DMB_LEN_MAX=100 LDFLAGS=-lgetopt\ -static RANLIB=true + +# Install yacc +install yacc ${BINDIR} + +cd ../.. + +# Checksums +if match x${UPDATE_CHECKSUMS} xTrue; then + sha256sum -o ${pkg}.checksums \ + /usr/bin/yacc + + install ${pkg}.checksums ${SRCDIR} +else + sha256sum -c ${pkg}.checksums +fi diff --git a/steps/byacc-20240109/sources b/steps/byacc-20240109/sources new file mode 100644 index 0000000..0667978 --- /dev/null +++ b/steps/byacc-20240109/sources @@ -0,0 +1 @@ +https://invisible-island.net/archives/byacc/byacc-20240109.tgz f2897779017189f1a94757705ef6f6e15dc9208ef079eea7f28abec577e08446 diff --git a/steps/manifest b/steps/manifest index c540041..1dcbfbc 100644 --- a/steps/manifest +++ b/steps/manifest @@ -49,6 +49,7 @@ build: tar-1.12 build: sed-4.0.9 build: bzip2-1.0.8 build: coreutils-5.0 +build: byacc-20240109 build: heirloom-devtools-070527 build: bash-2.05b improve: setup_repo From 6567973a04a75b34104d143a4ac14c452f5fe6d5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=C3=A1bor=20Stefanik?= Date: Sun, 14 Apr 2024 20:59:57 +0200 Subject: [PATCH 2/5] Make byacc actually work when compiled against meslibc This replaces the previous sed hackery with a proper patch, and removes a few more libc functions that meslibc is missing. The binary name is changed to "byacc" so it doesn't get overwritten by heirloom yacc. The bsearch() replacement code comes from an earlier version of byacc. --- steps/byacc-20240109/byacc-20240109.checksums | 2 +- steps/byacc-20240109/pass1.kaem | 14 +- steps/byacc-20240109/patches/meslibc.patch | 170 ++++++++++++++++++ 3 files changed, 175 insertions(+), 11 deletions(-) create mode 100644 steps/byacc-20240109/patches/meslibc.patch diff --git a/steps/byacc-20240109/byacc-20240109.checksums b/steps/byacc-20240109/byacc-20240109.checksums index 97e363b..ecec1dc 100644 --- a/steps/byacc-20240109/byacc-20240109.checksums +++ b/steps/byacc-20240109/byacc-20240109.checksums @@ -1 +1 @@ -608651c4836eff7f164a0c6d238337a254fca964677bec76d87f85692ce71b59 /usr/bin/yacc +79ff462e4247dc7316a163124b32c54e6c8cb6d2ff4dfb0c1818799efcc1d8a7 /usr/bin/byacc diff --git a/steps/byacc-20240109/pass1.kaem b/steps/byacc-20240109/pass1.kaem index e70fe94..f578059 100644 --- a/steps/byacc-20240109/pass1.kaem +++ b/steps/byacc-20240109/pass1.kaem @@ -22,28 +22,22 @@ tar xf ../src/${pkg}.tar rm -r ../src/ cd ${pkg} -# Prepare +# Prepare and patch cp ../../files/Makefile . - -# meslibc has no fgetpos/fsetpos - emulate using fseek/ftell -sed -i -e "s/fpos_t/long/" -e "s/fgetpos(f, &save_area.line_fpos) != 0/(save_area.line_fpos = ftell(f)) == -1/" \ - -e "s/fsetpos(input_file, &save_area.line_fpos)/fseek(input_file, save_area.line_fpos, SEEK_SET)/" reader.c - -# likewise, meslibc has no tmpfile() -sed -i -e "s/tmpfile()/fopen(label, \"w+\")/" main.c +patch -Np0 -i ../../patches/meslibc.patch # Build yacc make CC=tcc AR=tcc\ -ar CFLAGS=-DMAXPATHLEN=100\ -DEILSEQ=84\ -DMB_LEN_MAX=100 LDFLAGS=-lgetopt\ -static RANLIB=true # Install yacc -install yacc ${BINDIR} +install yacc ${BINDIR}/byacc cd ../.. # Checksums if match x${UPDATE_CHECKSUMS} xTrue; then sha256sum -o ${pkg}.checksums \ - /usr/bin/yacc + /usr/bin/byacc install ${pkg}.checksums ${SRCDIR} else diff --git a/steps/byacc-20240109/patches/meslibc.patch b/steps/byacc-20240109/patches/meslibc.patch new file mode 100644 index 0000000..e080836 --- /dev/null +++ b/steps/byacc-20240109/patches/meslibc.patch @@ -0,0 +1,170 @@ +SPDX-FileCopyrightText: 2024 Gábor Stefanik + +SPDX-License-Identifier: GPL-3.0-or-later + +Remove usages of tmpfile(), rewind(), fgetpos(), fsetpos() and bsearch(), +which are unsupported by meslibc, and add missing declaration for strdup. + +License note: Berkeley Yacc is in the public domain, but it's linked with +meslibc, which is GPL-3.0-or-later, so we apply that license here too. + +diff -ru ../byacc-20240109.bak/main.c ./main.c +--- ../byacc-20240109.bak/main.c 2024-04-14 16:06:09.646465507 +0200 ++++ ./main.c 2024-04-14 20:41:56.227083399 +0200 +@@ -788,7 +788,7 @@ + (void)umask(save_umask); + } + #else +- result = tmpfile(); ++ result = fopen(label, "w+"); + #endif + + if (result == 0) +diff -ru ../byacc-20240109.bak/output.c ./output.c +--- ../byacc-20240109.bak/output.c 2024-04-14 16:06:09.646465507 +0200 ++++ ./output.c 2024-04-14 16:06:24.636465897 +0200 +@@ -1289,7 +1289,7 @@ + { + if (union_file != 0) + { +- rewind(union_file); ++ fseek(union_file, 0, SEEK_SET); + while ((c = getc(union_file)) != EOF) + putc_code(fp, c); + } +@@ -1314,7 +1314,7 @@ + + if (text_file == NULL) + open_error("text_file"); +- rewind(text_file); ++ fseek(text_file, 0, SEEK_SET); + in = text_file; + if ((c = getc(in)) == EOF) + return; +@@ -1684,7 +1684,7 @@ + int state; + char line_state[20]; + +- rewind(action_file); ++ fseek(action_file, 0, SEEK_SET); + if ((c = getc(action_file)) == EOF) + return; + +diff -ru ../byacc-20240109.bak/reader.c ./reader.c +--- ../byacc-20240109.bak/reader.c 2024-04-14 16:06:09.646465507 +0200 ++++ ./reader.c 2024-04-14 20:40:58.387082748 +0200 +@@ -70,7 +70,7 @@ + char *line_data; /* saved input-line */ + size_t line_used; /* position within saved input-line */ + size_t line_size; /* length of saved input-line */ +- fpos_t line_fpos; /* pointer before reading past saved input-line */ ++ long line_fpos; /* pointer before reading past saved input-line */ + } + SAVE_LINE; + +@@ -315,7 +315,7 @@ + line = save_area.line_data; + cptr = save_area.line_used + line; + linesize = save_area.line_size; +- if (fsetpos(input_file, &save_area.line_fpos) != 0) ++ if (fseek(input_file, save_area.line_fpos, SEEK_SET) != 0) + on_error(); + memset(&save_area, 0, sizeof(save_area)); + } +@@ -338,7 +338,7 @@ + save_area.line_size = linesize; + NO_SPACE(save_area.line_data); + memcpy(save_area.line_data, line, linesize); +- if (fgetpos(f, &save_area.line_fpos) != 0) ++ if ((save_area.line_fpos = ftell(f)) == -1) + on_error(); + must_save = -must_save; + } +@@ -572,6 +572,36 @@ + return strcmp(p->name, q->name); + } + ++/* ++ * Compare keyword to cached token, treating '_' and '-' the same. Some ++ * grammars rely upon this misfeature. ++ */ ++static int ++matchec(const char *name) ++{ ++ const char *p = cache; ++ const char *q = name; ++ int code = 0; /* assume mismatch */ ++ ++ while (*p != '\0' && *q != '\0') ++ { ++ char a = *p++; ++ char b = *q++; ++ if (a == '_') ++ a = '-'; ++ if (b == '_') ++ b = '-'; ++ if (a != b) ++ break; ++ if (*p == '\0' && *q == '\0') ++ { ++ code = 1; ++ break; ++ } ++ } ++ return code; ++} ++ + static int + keyword(void) + { +@@ -612,10 +642,36 @@ + } + cachec(NUL); + +- if ((key = bsearch(cache, keywords, +- sizeof(keywords) / sizeof(*key), +- sizeof(*key), compare_keys))) +- return key->token; ++ if (matchec("token") || matchec("term")) ++ return (TOKEN); ++ if (matchec("type")) ++ return (TYPE); ++ if (matchec("left")) ++ return (LEFT); ++ if (matchec("right")) ++ return (RIGHT); ++ if (matchec("nonassoc") || matchec("binary")) ++ return (NONASSOC); ++ if (matchec("start")) ++ return (START); ++ if (matchec("union")) ++ return (UNION); ++ if (matchec("ident")) ++ return (IDENT); ++ if (matchec("expect")) ++ return (EXPECT); ++ if (matchec("expect-rr")) ++ return (EXPECT_RR); ++ if (matchec("pure-parser")) ++ return (PURE_PARSER); ++ if (matchec("parse-param")) ++ return (PARSE_PARAM); ++ if (matchec("lex-param")) ++ return (LEX_PARAM); ++ if (matchec("token-table")) ++ return (TOKEN_TABLE); ++ if (matchec("yacc")) ++ return (POSIX_YACC); + } + else + { +@@ -1178,6 +1234,9 @@ + return result; + } + ++char * ++strdup (char const *s); ++ + static void + save_param(int k, char *buffer, int name, int type2) + { From 02fb689ce1a6b3aa329f75969c207150950ecf0e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=C3=A1bor=20Stefanik?= Date: Mon, 15 Apr 2024 01:22:50 +0200 Subject: [PATCH 3/5] Move heirloom lex and flex after musl, replace heirloom yacc with byacc This way, heirloom-devtools is only linked to a libc with a CDDL-compatible license, making it fully redistributable. Heirloom yacc doesn't work properly with musl libc, but luckily byacc can do its job just fine, so we only need heirloom lex now. Thanks to the more complete libc, and bash being available, heirloom's bootstrap is significantly simplified. --- steps/byacc-20240109/pass1.kaem | 4 +- steps/heirloom-devtools-070527/pass1.kaem | 60 - steps/heirloom-devtools-070527/pass1.sh | 21 + .../patches/lex_remove_wchar.patch | 454 ------- .../patches/yacc_remove_wchar.patch | 1160 ----------------- steps/manifest | 6 +- 6 files changed, 26 insertions(+), 1679 deletions(-) delete mode 100755 steps/heirloom-devtools-070527/pass1.kaem create mode 100644 steps/heirloom-devtools-070527/pass1.sh delete mode 100644 steps/heirloom-devtools-070527/patches/lex_remove_wchar.patch delete mode 100644 steps/heirloom-devtools-070527/patches/yacc_remove_wchar.patch diff --git a/steps/byacc-20240109/pass1.kaem b/steps/byacc-20240109/pass1.kaem index f578059..1cfd9bc 100644 --- a/steps/byacc-20240109/pass1.kaem +++ b/steps/byacc-20240109/pass1.kaem @@ -30,14 +30,14 @@ patch -Np0 -i ../../patches/meslibc.patch make CC=tcc AR=tcc\ -ar CFLAGS=-DMAXPATHLEN=100\ -DEILSEQ=84\ -DMB_LEN_MAX=100 LDFLAGS=-lgetopt\ -static RANLIB=true # Install yacc -install yacc ${BINDIR}/byacc +install yacc ${BINDIR}/yacc cd ../.. # Checksums if match x${UPDATE_CHECKSUMS} xTrue; then sha256sum -o ${pkg}.checksums \ - /usr/bin/byacc + /usr/bin/yacc install ${pkg}.checksums ${SRCDIR} else diff --git a/steps/heirloom-devtools-070527/pass1.kaem b/steps/heirloom-devtools-070527/pass1.kaem deleted file mode 100755 index 4224455..0000000 --- a/steps/heirloom-devtools-070527/pass1.kaem +++ /dev/null @@ -1,60 +0,0 @@ -#!/bin/sh - -# SPDX-FileCopyrightText: 2021 Andrius Štikonas -# SPDX-FileCopyrightText: 2021-22 fosslinux -# -# SPDX-License-Identifier: GPL-3.0-or-later - -set -ex - -# Check tarball checksums -checksum-transcriber sources -sha256sum -c sources.SHA256SUM - -mkdir build src -cd build - -# Extract -cp ${DISTFILES}/${pkg}.tar.bz2 ../src/ -bunzip2 -f ../src/${pkg}.tar.bz2 -tar xf ../src/${pkg}.tar ${pkg}/yacc ${pkg}/lex -rm -r ../src/ -cd ${pkg} - -# Prepare and patch -patch -Np0 -i ../../patches/yacc_remove_wchar.patch -patch -Np0 -i ../../patches/lex_remove_wchar.patch - -# Build yacc -cd yacc -make -f Makefile.mk CC=tcc AR=tcc\ -ar CFLAGS=-DMAXPATHLEN=100\ -DEILSEQ=84\ -DMB_LEN_MAX=100 LDFLAGS=-lgetopt\ -static RANLIB=true - -# Install yacc -install yacc ${BINDIR} -install -m 644 yaccpar ${LIBDIR} - -# Build lex -cd ../lex -make -f Makefile.mk CC=tcc AR=tcc\ -ar CFLAGS=-DEILSEQ=84\ -DMB_LEN_MAX=100 LDFLAGS=-lgetopt\ -static RANLIB=true - -# Install lex -mkdir ${LIBDIR}/lex -install lex ${BINDIR} -install libl.a ${LIBDIR} -install -m 644 ncform ${LIBDIR}/lex - -cd ../../.. - -# Checksums -if match x${UPDATE_CHECKSUMS} xTrue; then - sha256sum -o ${pkg}.checksums \ - /usr/bin/yacc \ - /usr/bin/lex \ - /usr/lib/mes/libl.a \ - /usr/lib/mes/yaccpar \ - /usr/lib/mes/lex/ncform - - install ${pkg}.checksums ${SRCDIR} -else - sha256sum -c ${pkg}.checksums -fi diff --git a/steps/heirloom-devtools-070527/pass1.sh b/steps/heirloom-devtools-070527/pass1.sh new file mode 100644 index 0000000..db9c780 --- /dev/null +++ b/steps/heirloom-devtools-070527/pass1.sh @@ -0,0 +1,21 @@ +#!/bin/sh + +# SPDX-FileCopyrightText: 2021 Andrius Štikonas +# SPDX-FileCopyrightText: 2021-22 fosslinux +# SPDX-FileCopyrightText: 2024 Gábor Stefanik +# +# SPDX-License-Identifier: GPL-3.0-or-later + +src_compile() { + cd lex + make -f Makefile.mk CC=tcc AR=tcc\ -ar LDFLAGS=-static RANLIB=true + cd .. +} + +src_install() { + mkdir -p "${DESTDIR}${BINDIR}" "${DESTDIR}${LIBDIR}/lex" + install lex/lex "${DESTDIR}${BINDIR}" + install lex/libl.a "${DESTDIR}${LIBDIR}" + install -m 644 lex/ncform "${DESTDIR}${LIBDIR}/lex" +} + diff --git a/steps/heirloom-devtools-070527/patches/lex_remove_wchar.patch b/steps/heirloom-devtools-070527/patches/lex_remove_wchar.patch deleted file mode 100644 index 91b231c..0000000 --- a/steps/heirloom-devtools-070527/patches/lex_remove_wchar.patch +++ /dev/null @@ -1,454 +0,0 @@ -SPDX-FileCopyrightText: 2021 Andrius Štikonas -SPDX-FileCopyrightText: 2021 fosslinux - -SPDX-License-Identifier: CDDL-1.0 - -From 508eb06d40498acf954fc51ecb9171d2ce2236f6 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Andrius=20=C5=A0tikonas?= -Date: Wed, 27 Jan 2021 00:40:19 +0000 -Subject: [PATCH] Workaround for lex to work with mes libc. - -Similarly to yacc, remove wchar. See yacc patch for further -information. - ---- - lex/Makefile.mk | 2 +- - lex/allprint.c | 6 ++-- - lex/ldefs.c | 8 ----- - lex/main.c | 1 + - lex/parser.y | 77 +++++++++++++++++++++++++++++++++++-------------- - lex/reject.c | 1 - - lex/sub1.c | 44 ++++++++++++++++++---------- - lex/sub3.c | 2 +- - 8 files changed, 89 insertions(+), 52 deletions(-) - -diff --git lex/Makefile.mk lex/Makefile.mk -index 577f7cb..a413867 100644 ---- lex/Makefile.mk -+++ lex/Makefile.mk -@@ -1,4 +1,4 @@ --XOBJ = main.o sub1.o sub2.o sub3.o header.o wcio.o parser.o getopt.o lsearch.o -+XOBJ = main.o sub1.o sub2.o sub3.o header.o parser.o getopt.o lsearch.o - - LOBJ = allprint.o libmain.o reject.o yyless.o yywrap.o \ - allprint_w.o reject_w.o yyless_w.o reject_e.o yyless_e.o -diff --git lex/allprint.c lex/allprint.c -index 6e82495..cb0c6bb 100644 ---- lex/allprint.c -+++ lex/allprint.c -@@ -42,8 +42,6 @@ - #include - #include - #endif --#include --#include - - extern FILE *yyout; - -@@ -78,10 +76,10 @@ allprint(CHR c) - fprintf(yyout, "\\_"); - break; - default: -- if (!iswprint(c)) -+ if (!iwprint(c)) - fprintf(yyout, "\\x%-2x", (int)c); - else -- putwc(c, yyout); -+ putc(c, yyout); - break; - } - } -diff --git lex/ldefs.c lex/ldefs.c -index ff99665..c5dcbaf 100644 ---- lex/ldefs.c -+++ lex/ldefs.c -@@ -43,7 +43,6 @@ - #ifdef __sun - #include - #endif --#include - - #define CHR wchar_t - #define BYTE char -@@ -296,13 +295,6 @@ int mn1(int a, intptr_t d); - int mn0(int a); - int dupl(int n); - --#undef getwc --#define getwc(f) lex_getwc(f) --extern wint_t lex_getwc(FILE *); --#undef putwc --#define putwc(c, f) lex_putwc(c, f) --extern wint_t lex_putwc(wchar_t, FILE *); -- - #undef index - #define index lex_index - -diff --git lex/main.c lex/main.c -index 8aee8ea..52c892a 100644 ---- lex/main.c -+++ lex/main.c -@@ -38,6 +38,7 @@ - * Sccsid @(#)main.c 1.9 (gritter) 11/26/05 - */ - -+#include - #include - #include "once.h" - #include "sgs.h" -diff --git lex/parser.y lex/parser.y -index b8618e3..34a7e9a 100644 ---- lex/parser.y -+++ lex/parser.y -@@ -43,7 +43,6 @@ - void yyerror(char *); - - #include --#include - #include - #ifndef __sun - #define wcsetno(c) 0 -@@ -289,6 +288,19 @@ r: CHAR - ; - - %% -+ -+/* -+Copy multibyte string into char string. -+Mes C library does not support wide strings, and fprintf truncates all strings to 1 character. -+This happens because wchar_t strings have 0 in a second byte. -+*/ -+int -+wstrcpy(char const *destination, wchar_t const *source) { -+ int i = 0; -+ do { -+ destination[i]=source[i]; -+ } while (source[i++] != 0); -+} - int - yylex(void) - { -@@ -353,7 +365,7 @@ yylex(void) - (*(p+2) == 'O')) { - if(lgatflg) - error("Too late for %%pointer"); -- while(*p && !iswspace(*p)) -+ while(*p && !isspace(*p)) - p++; - isArray = 0; - continue; -@@ -397,7 +409,7 @@ yylex(void) - (*(p+2) == 'R')) { - if(lgatflg) - error("Too late for %%array"); -- while(*p && !iswspace(*p)) -+ while(*p && !isspace(*p)) - p++; - isArray = 1; - continue; -@@ -426,7 +438,7 @@ yylex(void) - if(handleeuc) - error("\ - Character table (%t) is supported only in ASCII compatibility mode.\n"); -- ZCH = wcstol(p+2, NULL, 10); -+ ZCH = strtol(p+2, NULL, 10); - if (ZCH < NCH) ZCH = NCH; - if (ZCH > 2*NCH) error("ch table needs redeclaration"); - chset = TRUE; -@@ -438,13 +450,13 @@ Character table (%t) is supported only in ASCII compatibility mode.\n"); - continue; - } - while(digit(*p)) p++; -- if(!iswspace(*p)) error("bad translation format"); -- while(iswspace(*p)) p++; -+ if(!isspace(*p)) error("bad translation format"); -+ while(isspace(*p)) p++; - t = p; - while(*t){ - c = ctrans(&t); - if(ctable[(unsigned)c]){ -- if (iswprint(c)) -+ if (isprint(c)) - warning("Character '%lc' used twice",c); - - else -@@ -485,8 +497,12 @@ Character table (%t) is supported only in ASCII compatibility mode.\n"); - while(getl(p) && scomp(p, L_PctCbr) != 0) - if(p[0]=='/' && p[1]=='*') - cpycom(p); -- else -- fprintf(fout,"%ls\n",p); -+ else { -+ char p2[100]; -+ wstrcpy(p2, p); -+ fprintf(fout,"%ls\n",p2); -+ memset(p2, 0, sizeof p2); -+ } - if(p[0] == '%') continue; - if (*p) error("EOF before %%%%"); - else error("EOF before %%}"); -@@ -501,12 +517,12 @@ Character table (%t) is supported only in ASCII compatibility mode.\n"); - start: - lgate(); - -- while(*p && !iswspace(*p) && ((*p) != (wchar_t)',')) p++; -+ while(*p && !isspace(*p) && ((*p) != (wchar_t)',')) p++; - n = TRUE; - while(n){ -- while(*p && (iswspace(*p) || ((*p) == (wchar_t)','))) p++; -+ while(*p && (isspace(*p) || ((*p) == (wchar_t)','))) p++; - t = p; -- while(*p && !iswspace(*p) && ((*p) != (wchar_t)',')) { -+ while(*p && !isspace(*p) && ((*p) != (wchar_t)',')) { - if(!isascii(*p)) - error("None-ASCII characters in start condition."); - p++; -@@ -516,7 +532,10 @@ start: - if (*t == 0) continue; - i = sptr*2; - if(!ratfor)fprintf(fout,"# "); -- fprintf(fout,"define %ls %d\n",t,i); -+ char t2[100]; -+ wstrcpy(t2, t); -+ fprintf(fout,"define %ls %d\n",t2,i); -+ memset(t2, 0, sizeof t2); - scopy(t,sp); - sname[sptr] = sp; - /* XCU4: save exclusive flag with start name */ -@@ -537,14 +556,20 @@ start: - case ' ': case '\t': /* must be code */ - lgate(); - if( p[1]=='/' && p[2]=='*' ) cpycom(p); -- else fprintf(fout, "%ls\n",p); -+ -+ else { -+ char p2[100]; -+ wstrcpy(p2, p); -+ fprintf(fout, "%ls\n",p2); -+ memset(p2, 0, sizeof p2); -+ } - continue; - case '/': /* look for comments */ - lgate(); - if((*(p+1))=='*') cpycom(p); - /* FALLTHRU */ - default: /* definition */ -- while(*p && !iswspace(*p)) p++; -+ while(*p && !isspace(*p)) p++; - if(*p == 0) - continue; - prev = *p; -@@ -557,7 +582,7 @@ start: - } - } else { /* still sect 1, but prev != '\n' */ - p = bptr; -- while(*p && iswspace(*p)) p++; -+ while(*p && isspace(*p)) p++; - if(*p == 0) - warning("No translation given - null string assumed"); - scopy(p,token); -@@ -632,8 +657,11 @@ start: - while(!eof&& getl(buf) && scomp(L_PctCbr,buf)!=0) - if(buf[0]=='/' && buf[1]=='*') - cpycom(buf); -- else -- fprintf(fout,"%ls\n",buf); -+ else { -+ char buf2[100]; -+ wstrcpy(buf2, p); -+ fprintf(fout,"%ls\n",buf2); -+ } - continue; - } - if(peek == '%'){ -@@ -944,9 +972,16 @@ Character range specified between different codesets."); - else - fprintf(fout, - "\n# line %d \"%s\"\n", yyline-1, sargv[optind]); -- fprintf(fout,"%ls\n",buf); -- while(getl(buf) && !eof) -- fprintf(fout,"%ls\n",buf); -+ char buf2[100]; -+ wstrcpy(buf2, buf); -+ fprintf(fout,"%ls\n",buf2); -+ memset(buf2, 0, sizeof buf2); -+ while(getl(buf) && !eof) { -+ wstrcpy(buf2, buf); -+ fprintf(fout,"%ls\n",buf2); -+ memset(buf2, 0, sizeof buf2); -+ } -+ memset(buf2, 0, sizeof buf2); - } - - return(freturn(0)); -diff --git lex/reject.c lex/reject.c -index 31928e7..ef08c57 100644 ---- lex/reject.c -+++ lex/reject.c -@@ -38,7 +38,6 @@ - #include - #include - #else /* !sun */ --#include - #endif /* !sun */ - #include - #endif -diff --git lex/sub1.c lex/sub1.c -index b867948..eead84b 100644 ---- lex/sub1.c -+++ lex/sub1.c -@@ -38,7 +38,6 @@ - - #include "ldefs.c" - #include --#include - #include - #include - -@@ -394,6 +393,19 @@ cclinter(int sw) - } - } - -+int -+mbtowc(wchar_t *pwc, const char *s, size_t n) -+{ -+ if (s != 0) { -+ if (n < 1) -+ return -1; -+ if (pwc != 0) -+ *pwc = *s & 0377; -+ return *s != '\0'; -+ } else -+ return 0; -+} -+ - int - usescape(int c) - { -@@ -546,7 +558,7 @@ cpyact(void) - break; - case ';': - if (brac == 0) { -- putwc(c, fout); -+ putc(c, fout); - putc('\n', fout); - return (1); - } -@@ -558,26 +570,26 @@ cpyact(void) - case '}': - brac--; - if (brac == 0) { -- putwc(c, fout); -+ putc(c, fout); - putc('\n', fout); - return (1); - } - break; - case '/': -- putwc(c, fout); -+ putc(c, fout); - c = gch(); - if (c != '*') - goto swt; -- putwc(c, fout); -+ putc(c, fout); - savline = yyline; - while (c = gch()) { - while (c == '*') { -- putwc(c, fout); -+ putc(c, fout); - if ((c = gch()) == '/') { - putc('/', fout); - while ((c = gch()) == ' ' || - c == '\t' || c == '\n') -- putwc(c, fout); -+ putc(c, fout); - goto swt; - } - } -@@ -590,16 +602,16 @@ cpyact(void) - case '\'': /* character constant */ - case '"': /* character string */ - mth = c; -- putwc(c, fout); -+ putc(c, fout); - while (c = gch()) { - if (c == '\\') { -- putwc(c, fout); -+ putc(c, fout); - c = gch(); - } - else - if (c == mth) - goto loop; -- putwc(c, fout); -+ putc(c, fout); - if (c == '\n') { - yyline--; - error( -@@ -620,7 +632,7 @@ cpyact(void) - loop: - if (c != ' ' && c != '\t' && c != '\n') - sw = FALSE; -- putwc(c, fout); -+ putc(c, fout); - if (peek == '\n' && !brac && copy_line) { - putc('\n', fout); - return (1); -@@ -636,7 +648,7 @@ gch(void) - int c; - prev = pres; - c = pres = peek; -- peek = pushptr > pushc ? *--pushptr : getwc(fin); -+ peek = pushptr > pushc ? *--pushptr : getc(fin); - while (peek == EOF) { - if (no_input) { - if (!yyline) -@@ -650,7 +662,7 @@ gch(void) - if (fin == NULL) - error("Cannot open file -- %s", - sargv[optind]); -- peek = getwc(fin); -+ peek = getc(fin); - } else - break; - } else { -@@ -856,11 +868,11 @@ allprint(CHR c) - printf("\\_"); - break; - default: -- if (!iswprint(c)) { -+ if (!isprint(c)) { - printf("\\x%-2x", c); /* up to fashion. */ - charc += 3; - } else -- putwc(c, stdout); -+ putc(c, stdout); - break; - } - charc++; -@@ -903,7 +915,7 @@ sect1dump(void) - allprint(i); - putchar(' '); - iswprint(ctable[i]) ? -- putwc(ctable[i], stdout) : -+ putc(ctable[i], stdout) : - printf("%d", ctable[i]); - putchar('\n'); - } -diff --git lex/sub3.c lex/sub3.c -index 186bcbc..aa07f66 100644 ---- lex/sub3.c -+++ lex/sub3.c -@@ -147,7 +147,7 @@ remch(wchar_t c) - */ - if (!handleeuc) { - if (!isascii(c)) -- if (iswprint(c)) -+ if (isprint(c)) - warning( - "Non-ASCII character '%lc' in pattern; use -w or -e lex option.", c); - else warning( --- -2.26.2 - diff --git a/steps/heirloom-devtools-070527/patches/yacc_remove_wchar.patch b/steps/heirloom-devtools-070527/patches/yacc_remove_wchar.patch deleted file mode 100644 index 8ce6fd5..0000000 --- a/steps/heirloom-devtools-070527/patches/yacc_remove_wchar.patch +++ /dev/null @@ -1,1160 +0,0 @@ -SPDX-FileCopyrightText: 2021 Andrius Štikonas -SPDX-FileCopyrightText: 2021 fosslinux -SPDX-FileCopyrightText: 2023 Emily Trau - -SPDX-License-Identifier: CDDL-1.0 - -Remove all kinds of wchar support. Mes Libc does not support wchar in any form, -so we need to remove it. - -heirloom-devtools is all kinds of broken in this way. C standard dictates that -wchar_t may be defined as char, however heirloom-devtools does not respect this, -which makes this non-trivial. - -diff -U3 -r yacc/dextern yacc/dextern ---- yacc/dextern 2005-11-10 20:31:45.000000000 +0000 -+++ yacc/dextern 2021-01-25 18:21:45.286602527 +0000 -@@ -39,7 +39,6 @@ - #include - #include - #include --#include - - /* MANIFEST CONSTANT DEFINITIONS */ - #define WORD32 -@@ -166,17 +165,17 @@ - } ITEM; - - typedef struct toksymb { -- wchar_t *name; -+ char *name; - int value; - } TOKSYMB; - - typedef struct mbclit { -- wchar_t character; -+ char character; - int tvalue; /* token issued for the character */ - } MBCLIT; - - typedef struct ntsymb { -- wchar_t *name; -+ char *name; - int tvalue; - } NTSYMB; - -@@ -212,7 +211,7 @@ - extern int nprod; /* number of productions */ - extern int **prdptr; /* pointers to descriptions of productions */ - extern int *levprd; /* contains production levels to break conflicts */ --extern wchar_t *had_act; /* set if reduction has associated action code */ -+extern char *had_act; /* set if reduction has associated action code */ - - /* state information */ - -@@ -273,24 +272,15 @@ - extern void go2out(void); - extern void hideprod(void); - extern void callopt(void); --extern void warray(wchar_t *, int *, int); --extern wchar_t *symnam(int); --extern wchar_t *writem(int *); -+extern void warray(char *, int *, int); -+extern char *symnam(int); -+extern char *writem(int *); - extern void exp_mem(int); - extern void exp_act(int **); - extern int apack(int *, int); - extern int state(int); --extern void fprintf3(FILE *, const char *, const wchar_t *, const char *, ...); --extern void error3(const char *, const wchar_t *, const char *, ...); -- -- /* multibyte i/o */ -- --#undef getwc --#define getwc(f) yacc_getwc(f) --extern wint_t yacc_getwc(FILE *); --#undef putwc --#define putwc(c, f) yacc_putwc(c, f) --extern wint_t yacc_putwc(wchar_t, FILE *); -+extern void fprintf3(FILE *, const char *, const char *, const char *, ...); -+extern void error3(const char *, const char *, const char *, ...); - - /* yaccpar location */ - -diff -U3 -r yacc/y1.c yacc/y1.c ---- yacc/y1.c 2005-11-26 17:37:56.000000000 +0000 -+++ yacc/y1.c 2021-01-25 18:02:31.251542365 +0000 -@@ -41,12 +41,11 @@ - #include - #include - #include /* For error() */ --#include - - static void mktbls(void); - static void others(void); - static void summary(void); --static wchar_t *chcopy(wchar_t *, wchar_t *); -+static char *chcopy(char *, char *); - static int setunion(int *, int *); - static void prlook(LOOKSETS *); - static void cpres(void); -@@ -229,13 +228,13 @@ - if (finput == NULL) - error("cannot find parser %s", parser); - -- warray(L"yyr1", levprd, nprod); -+ warray("yyr1", levprd, nprod); - - aryfil(temp1, nprod, 0); - /* had_act[i] is either 1 or 0 */ - PLOOP(1, i) - temp1[i] = ((prdptr[i+1] - prdptr[i]-2) << 1) | had_act[i]; -- warray(L"yyr2", temp1, nprod); -+ warray("yyr2", temp1, nprod); - - aryfil(temp1, nstate, -10000000); - TLOOP(i) -@@ -244,14 +243,14 @@ - NTLOOP(i) - for (j = ntstates[i]; j != 0; j = mstates[j]) - temp1[j] = -i; -- warray(L"yychk", temp1, nstate); -+ warray("yychk", temp1, nstate); - -- warray(L"yydef", defact, nstate); -+ warray("yydef", defact, nstate); - - if ((fdebug = fopen(DEBUGNAME, "r")) == NULL) - error("cannot open yacc.debug"); -- while ((c = getwc(fdebug)) != EOF) -- putwc(c, ftable); -+ while ((c = getc(fdebug)) != EOF) -+ putc(c, ftable); - fclose(fdebug); - ZAPFILE(DEBUGNAME); - -@@ -259,19 +258,19 @@ - fprintf(ftable, "# line\t1 \"%s\"\n", parser); - tmpline = 1; - /* copy parser text */ -- while ((c = getwc(finput)) != EOF) { -+ while ((c = getc(finput)) != EOF) { - if (c == '\n') - tmpline++; - if (c == L'$') { -- if ((c = getwc(finput)) != L'A') -- putwc(L'$', ftable); -+ if ((c = getc(finput)) != L'A') -+ putc(L'$', ftable); - else { /* copy actions */ - tmpline++; - faction = fopen(ACTNAME, "r"); - if (faction == NULL) - error("cannot open action tempfile"); -- while ((c = getwc(faction)) != EOF) -- putwc(c, ftable); -+ while ((c = getc(faction)) != EOF) -+ putc(c, ftable); - fclose(faction); - if (gen_lines) - fprintf(ftable, -@@ -279,18 +278,18 @@ - tmpline, - parser); - ZAPFILE(ACTNAME); -- c = getwc(finput); -+ c = getc(finput); - } - } -- putwc(c, ftable); -+ putc(c, ftable); - } - fclose(ftable); - } - - - /* copies string q into p, returning next free char ptr */ --static wchar_t * --chcopy(wchar_t *p, wchar_t *q) -+static char * -+chcopy(char *p, char *q) - { - while (*p = *q++) - ++p; -@@ -299,16 +298,16 @@ - - #define ISIZE 400 - /* creates output string for item pointed to by pp */ --wchar_t * -+char * - writem(int *pp) - { - int i, *p; - static int isize = ISIZE; -- static wchar_t *sarr = NULL; -- wchar_t *q; -+ static char *sarr = NULL; -+ char *q; - - if (sarr == NULL) { -- sarr = malloc(sizeof (wchar_t) * isize); -+ sarr = malloc(sizeof (char) * isize); - if (sarr == NULL) - error("could not allocate output string array"); - for (i = 0; i < isize; ++i) -@@ -317,7 +316,7 @@ - for (p = pp; *p > 0; ++p) /* EMPTY */; - p = prdptr[-*p]; - q = chcopy(sarr, nontrst[*p-NTBASE].name); -- q = chcopy(q, L" : "); -+ q = chcopy(q, " : "); - - for (;;) { - *q++ = ++p == pp ? L'_' : L' '; -@@ -326,7 +325,7 @@ - break; - q = chcopy(q, symnam(i)); - while (q > &sarr[isize-30]) { -- static wchar_t *sarrbase; -+ static char *sarrbase; - - sarrbase = sarr; - isize += ISIZE; -@@ -339,17 +338,17 @@ - - /* an item calling for a reduction */ - if ((i = *pp) < 0) { -- q = chcopy(q, L" ("); -- swprintf(q, q + isize - sarr, L"%d)", -i); -+ q = chcopy(q, " ("); -+ snprintf(q, q + isize - sarr, "%d)", -i); - } - return (sarr); - } - - /* return a pointer to the name of symbol i */ --wchar_t * -+char * - symnam(int i) - { -- wchar_t *cp; -+ char *cp; - - cp = (i >= NTBASE) ? nontrst[i-NTBASE].name : tokset[i].name; - if (*cp == L' ') -diff -U3 -r yacc/y2.c yacc/y2.c ---- yacc/y2.c 2005-11-26 17:39:44.000000000 +0000 -+++ yacc/y2.c 2021-01-25 19:02:52.472120036 +0000 -@@ -35,9 +35,9 @@ - * Sccsid @(#)y2.c 1.11 (gritter) 11/26/05 - */ - -+#include - #include "dextern" - #include "sgs.h" --#include - #include - #define IDENTIFIER 257 - -@@ -66,17 +66,17 @@ - char *infile; /* input file name */ - static int numbval; /* value of an input number */ - static int toksize = NAMESIZE; --static wchar_t *tokname; /* input token name */ -+static char *tokname; /* input token name */ - char *parser = NULL; /* location of common parser */ - - static void finact(void); --static wchar_t *cstash(wchar_t *); -+static char *cstash(char *); - static void defout(void); - static void cpyunion(void); - static void cpycode(void); - static void cpyact(int); --static void lhsfill(wchar_t *); --static void rhsfill(wchar_t *); -+static void lhsfill(char *); -+static void rhsfill(char *); - static void lrprnt(void); - static void beg_debug(void); - static void end_toks(void); -@@ -85,9 +85,9 @@ - static void exp_prod(void); - static void exp_ntok(void); - static void exp_nonterm(void); --static int defin(int, wchar_t *); -+static int defin(int, char *); - static int gettok(void); --static int chfind(int, wchar_t *); -+static int chfind(int, char *); - static int skipcom(void); - static int findchtok(int); - static void put_prefix_define(char *); -@@ -101,11 +101,11 @@ - * points to initial block - more space - * is allocated as needed. - */ --static wchar_t cnamesblk0[CNAMSZ]; --static wchar_t *cnames = cnamesblk0; -+static char cnamesblk0[CNAMSZ]; -+static char *cnames = cnamesblk0; - - /* place where next name is to be put in */ --static wchar_t *cnamp = cnamesblk0; -+static char *cnamp = cnamesblk0; - - /* number of defined symbols output */ - static int ndefout = 3; -@@ -113,7 +113,7 @@ - /* storage of types */ - static int defunion = 0; /* union of types defined? */ - static int ntypes = 0; /* number of types defined */ --static wchar_t *typeset[NTYPES]; /* pointers to type tags */ -+static char *typeset[NTYPES]; /* pointers to type tags */ - - /* symbol tables for tokens and nonterminals */ - -@@ -143,8 +143,8 @@ - - /* output string */ - --static wchar_t *lhstext; --static wchar_t *rhstext; -+static char *lhstext; -+static char *rhstext; - - /* storage for grammar rules */ - -@@ -158,7 +158,7 @@ - - int **prdptr; - int *levprd; --wchar_t *had_act; -+char *had_act; - - /* flag for generating the # line's default is yes */ - int gen_lines = 1; -@@ -181,7 +181,7 @@ - int c; - int *p; - char *cp; -- wchar_t actname[8]; -+ char actname[8]; - unsigned int options = 0; - char *file_prefix = DEFAULT_PREFIX; - char *sym_prefix = ""; -@@ -192,16 +192,16 @@ - fdefine = NULL; - i = 1; - -- tokname = malloc(sizeof (wchar_t) * toksize); -+ tokname = malloc(sizeof (char) * toksize); - tokset = malloc(sizeof (TOKSYMB) * ntoksz); - toklev = malloc(sizeof (int) * ntoksz); - nontrst = malloc(sizeof (NTSYMB) * nnontersz); - mem0 = malloc(sizeof (int) * new_memsize); - prdptr = malloc(sizeof (int *) * (nprodsz+2)); - levprd = malloc(sizeof (int) * (nprodsz+2)); -- had_act = calloc(nprodsz + 2, sizeof (wchar_t)); -- lhstext = malloc(sizeof (wchar_t) * LHS_TEXT_LEN); -- rhstext = malloc(sizeof (wchar_t) * RHS_TEXT_LEN); -+ had_act = calloc(nprodsz + 2, sizeof (char)); -+ lhstext = malloc(sizeof (char) * LHS_TEXT_LEN); -+ rhstext = malloc(sizeof (char) * RHS_TEXT_LEN); - aryfil(toklev, ntoksz, 0); - aryfil(levprd, nprodsz, 0); - for (ii = 0; ii < ntoksz; ++ii) -@@ -307,10 +307,10 @@ - - lineno = 1; - cnamp = cnames; -- defin(0, L"$end"); -+ defin(0, "$end"); - extval = 0400; -- defin(0, L"error"); -- defin(1, L"$accept"); -+ defin(0, "error"); -+ defin(1, "$accept"); - mem = mem0; - lev = 0; - ty = 0; -@@ -588,7 +588,7 @@ - /* process a rule */ - - if (t == L'|') { -- rhsfill((wchar_t *)0); /* restart fill of rhs */ -+ rhsfill((char *)0); /* restart fill of rhs */ - *mem = *prdptr[nprod-1]; - if (++mem >= &tracemem[new_memsize]) - exp_mem(1); -@@ -638,8 +638,8 @@ - /* action within rule... */ - - lrprnt(); /* dump lhs, rhs */ -- swprintf(actname, sizeof actname, -- L"$$%d", nprod); -+ snprintf(actname, sizeof actname, -+ "$$%d", nprod); - /* - * make it nonterminal - */ -@@ -722,8 +722,8 @@ - if (gen_lines) - fprintf(ftable, "\n# line %d \"%s\"\n", - lineno, infile); -- while ((c = getwc(finput)) != EOF) -- putwc(c, ftable); -+ while ((c = getc(finput)) != EOF) -+ putc(c, ftable); - } - fclose(finput); - } -@@ -736,15 +736,15 @@ - fprintf(ftable, "# define YYERRCODE %d\n", tokset[2].value); - } - --static wchar_t * -+static char * - cstash(s) --register wchar_t *s; -+register char *s; - { -- wchar_t *temp; -+ char *temp; - static int used = 0; - static int used_save = 0; - static int exp_cname = CNAMSZ; -- int len = wcslen(s); -+ int len = strlen(s); - - /* - * 2/29/88 - -@@ -755,7 +755,7 @@ - exp_cname += CNAMSZ; - if (!used) - free(cnames); -- if ((cnames = malloc(sizeof (wchar_t)*exp_cname)) == NULL) -+ if ((cnames = malloc(sizeof (char)*exp_cname)) == NULL) - error("cannot expand string dump"); - cnamp = cnames; - used = 0; -@@ -770,7 +770,7 @@ - } - - static int --defin(int t, register wchar_t *s) -+defin(int t, register char *s) - { - /* define s to be a terminal if t=0 or a nonterminal if t=1 */ - -@@ -820,7 +820,7 @@ - } else if (s[2] <= L'7' && s[2] >= L'0') { /* \nnn sequence */ - int i = 3; - val = s[2] - L'0'; -- while (iswdigit(s[i]) && i <= 4) { -+ while (isdigit(s[i]) && i <= 4) { - if (s[i] >= L'0' && s[i] <= L'7') - val = val * 8 + s[i] - L'0'; - else -@@ -831,17 +831,17 @@ - error("illegal \\nnn construction"); - if (val > 255) - error( --"\\nnn exceed \\377; use \\xnnnnnnnn for wchar_t value of multibyte char"); -+"\\nnn exceed \\377; use \\xnnnnnnnn for char value of multibyte char"); - if (val == 0 && i >= 4) - error("'\\000' is illegal"); - } else if (s[2] == L'x') { /* hexadecimal \xnnn sequence */ - int i = 3; - val = 0; - warning(1, "\\x is ANSI C hex escape"); -- if (iswxdigit(s[i])) -- while (iswxdigit(s[i])) { -+ if (isxdigit(s[i])) -+ while (isxdigit(s[i])) { - int tmpval; -- if (iswdigit(s[i])) -+ if (isdigit(s[i])) - tmpval = s[i] - L'0'; - else if (s[i] >= L'a') - tmpval = s[i] - L'a' + 10; -@@ -876,7 +876,7 @@ - /* write out the defines (at the end of the declaration section) */ - - register int i, c; -- register wchar_t *cp; -+ register char *cp; - - for (i = ndefout; i <= ntokens; ++i) { - -@@ -889,8 +889,8 @@ - } - - for (; (c = *cp) != 0; ++cp) { -- if (iswlower(c) || iswupper(c) || -- iswdigit(c) || c == L'_') /* EMPTY */; -+ if (islower(c) || isupper(c) || -+ isdigit(c) || c == L'_') /* EMPTY */; - else - goto nodef; - } -@@ -919,14 +919,14 @@ - reserve = 0; - lineno += peekline; - peekline = 0; -- c = getwc(finput); -+ c = getc(finput); - /* - * while (c == ' ' || c == '\n' || c == '\t' || c == '\f') { - */ -- while (iswspace(c)) { -+ while (isspace(c)) { - if (c == L'\n') - ++lineno; -- c = getwc(finput); -+ c = getc(finput); - } - if (c == L'/') { /* skip comment */ - lineno += skipcom(); -@@ -938,11 +938,11 @@ - case EOF: - return (ENDFILE); - case L'{': -- ungetwc(c, finput); -+ ungetc(c, finput); - return (L'='); /* action ... */ - case L'<': /* get, and look up, a type name (union member name) */ - i = 0; -- while ((c = getwc(finput)) != L'>' && -+ while ((c = getc(finput)) != L'>' && - c != EOF && c != L'\n') { - tokname[i] = c; - if (++i >= toksize) -@@ -954,7 +954,7 @@ - if (i == 0) - error("missing type name in < ... > clause"); - for (i = 1; i <= ntypes; ++i) { -- if (!wcscmp(typeset[i], tokname)) { -+ if (!strcmp(typeset[i], tokname)) { - numbval = i; - return (TYPENAME); - } -@@ -968,11 +968,11 @@ - tokname[0] = L' '; - i = 1; - for (;;) { -- c = getwc(finput); -+ c = getc(finput); - if (c == L'\n' || c == EOF) - error("illegal or missing ' or \""); - if (c == L'\\') { -- c = getwc(finput); -+ c = getc(finput); - tokname[i] = L'\\'; - if (++i >= toksize) - exp_tokname(); -@@ -986,7 +986,7 @@ - case L'%': - case L'\\': - -- switch (c = getwc(finput)) { -+ switch (c = getc(finput)) { - - case L'0': return (TERM); - case L'<': return (LEFT); -@@ -1001,81 +1001,81 @@ - - default: - -- if (iswdigit(c)) { /* number */ -+ if (isdigit(c)) { /* number */ - numbval = c - L'0'; - base = (c == L'0') ? 8 : 10; -- for (c = getwc(finput); -- iswdigit(c); -- c = getwc(finput)) { -+ for (c = getc(finput); -+ isdigit(c); -+ c = getc(finput)) { - numbval = numbval*base + c - L'0'; - } -- ungetwc(c, finput); -+ ungetc(c, finput); - return (NUMBER); -- } else if (iswlower(c) || iswupper(c) || -+ } else if (islower(c) || isupper(c) || - c == L'_' || c == L'.' || - c == L'$') { - i = 0; -- while (iswlower(c) || iswupper(c) || -- iswdigit(c) || c == L'_' || -+ while (islower(c) || isupper(c) || -+ isdigit(c) || c == L'_' || - c == L'.' || c == L'$') { - tokname[i] = c; -- if (reserve && iswupper(c)) -- tokname[i] = towlower(c); -+ if (reserve && isupper(c)) -+ tokname[i] = tolower(c); - if (++i >= toksize) - exp_tokname(); -- c = getwc(finput); -+ c = getc(finput); - } - } - else - return (c); - -- ungetwc(c, finput); -+ ungetc(c, finput); - } - - tokname[i] = 0; - - if (reserve) { /* find a reserved word */ -- if (!wcscmp(tokname, L"term")) -+ if (!strcmp(tokname, "term")) - return (TERM); -- if (!wcscmp(tokname, L"token")) -+ if (!strcmp(tokname, "token")) - return (TERM); -- if (!wcscmp(tokname, L"left")) -+ if (!strcmp(tokname, "left")) - return (LEFT); -- if (!wcscmp(tokname, L"nonassoc")) -+ if (!strcmp(tokname, "nonassoc")) - return (BINARY); -- if (!wcscmp(tokname, L"binary")) -+ if (!strcmp(tokname, "binary")) - return (BINARY); -- if (!wcscmp(tokname, L"right")) -+ if (!strcmp(tokname, "right")) - return (RIGHT); -- if (!wcscmp(tokname, L"prec")) -+ if (!strcmp(tokname, "prec")) - return (PREC); -- if (!wcscmp(tokname, L"start")) -+ if (!strcmp(tokname, "start")) - return (START); -- if (!wcscmp(tokname, L"type")) -+ if (!strcmp(tokname, "type")) - return (TYPEDEF); -- if (!wcscmp(tokname, L"union")) -+ if (!strcmp(tokname, "union")) - return (UNION); - error("invalid escape, or illegal reserved word: %ls", tokname); - } - - /* look ahead to distinguish IDENTIFIER from C_IDENTIFIER */ - -- c = getwc(finput); -+ c = getc(finput); - /* - * while (c == ' ' || c == '\t' || c == '\n' || c == '\f' || c == '/') - * { - */ -- while (iswspace(c) || c == L'/') { -+ while (isspace(c) || c == L'/') { - if (c == L'\n') { - ++peekline; - } else if (c == L'/') { /* look for comments */ - peekline += skipcom(); - } -- c = getwc(finput); -+ c = getc(finput); - } - if (c == L':') - return (C_IDENTIFIER); -- ungetwc(c, finput); -+ ungetc(c, finput); - return (IDENTIFIER); - } - -@@ -1096,19 +1096,19 @@ - } - - static int --chfind(int t, register wchar_t *s) -+chfind(int t, register char *s) - { - int i; - - if (s[0] == ' ') - t = 0; - TLOOP(i) { -- if (!wcscmp(s, tokset[i].name)) { -+ if (!strcmp(s, tokset[i].name)) { - return (i); - } - } - NTLOOP(i) { -- if (!wcscmp(s, nontrst[i].name)) { -+ if (!strcmp(s, nontrst[i].name)) { - return (i + NTBASE); - } - } -@@ -1137,11 +1137,11 @@ - - level = 0; - for (;;) { -- if ((c = getwc(finput)) == EOF) -+ if ((c = getc(finput)) == EOF) - error("EOF encountered while processing %%union"); -- putwc(c, ftable); -+ putc(c, ftable); - if (fdefine) -- putwc(c, fdefine); -+ putc(c, fdefine); - - switch (c) { - -@@ -1172,29 +1172,29 @@ - /* copies code between \{ and \} */ - - int c; -- c = getwc(finput); -+ c = getc(finput); - if (c == L'\n') { -- c = getwc(finput); -+ c = getc(finput); - lineno++; - } - if (gen_lines) - fprintf(ftable, "\n# line %d \"%s\"\n", lineno, infile); - while (c != EOF) { - if (c == L'\\') { -- if ((c = getwc(finput)) == L'}') -+ if ((c = getc(finput)) == L'}') - return; - else -- putwc(L'\\', ftable); -+ putc(L'\\', ftable); - } else if (c == L'%') { -- if ((c = getwc(finput)) == L'}') -+ if ((c = getc(finput)) == L'}') - return; - else -- putwc(L'%', ftable); -+ putc(L'%', ftable); - } -- putwc(c, ftable); -+ putc(c, ftable); - if (c == L'\n') - ++lineno; -- c = getwc(finput); -+ c = getc(finput); - } - error("eof before %%}"); - } -@@ -1207,17 +1207,17 @@ - - /* skipcom is called after reading a / */ - -- if (getwc(finput) != L'*') -+ if (getc(finput) != L'*') - error("illegal comment"); -- c = getwc(finput); -+ c = getc(finput); - while (c != EOF) { - while (c == L'*') { -- if ((c = getwc(finput)) == L'/') -+ if ((c = getc(finput)) == L'/') - return (i); - } - if (c == L'\n') - ++i; -- c = getwc(finput); -+ c = getc(finput); - } - error("EOF inside comment"); - /* NOTREACHED */ -@@ -1229,7 +1229,7 @@ - { - /* copy C action to the next ; or closing } */ - int brac, c, match, i, t, j, s, tok, argument, m; -- wchar_t id_name[NAMESIZE+1]; -+ char id_name[NAMESIZE+1]; - int id_idx = 0; - - if (gen_lines) { -@@ -1239,12 +1239,12 @@ - brac = 0; - id_name[0] = 0; - loop: -- c = getwc(finput); -+ c = getc(finput); - swt: - switch (c) { - case L';': - if (brac == 0) { -- putwc(c, faction); -+ putc(c, faction); - return; - } - goto lcopy; -@@ -1255,13 +1255,13 @@ - s = 1; - tok = -1; - argument = 1; -- while ((c = getwc(finput)) == L' ' || c == L'\t') /* EMPTY */; -+ while ((c = getc(finput)) == L' ' || c == L'\t') /* EMPTY */; - if (c == L'<') { /* type description */ -- ungetwc(c, finput); -+ ungetc(c, finput); - if (gettok() != TYPENAME) - error("bad syntax on $ clause"); - tok = numbval; -- c = getwc(finput); -+ c = getc(finput); - } - if (c == L'$') { - fprintf(faction, "yyval"); -@@ -1272,10 +1272,10 @@ - } - goto loop; - } -- if (iswalpha(c)) { -+ if (isalpha(c)) { - int same = 0; - int id_sw = 0; -- ungetwc(c, finput); -+ ungetc(c, finput); - if (gettok() != IDENTIFIER) - error("bad action format"); - /* -@@ -1290,16 +1290,16 @@ - id_sw = 1; - else - id_sw = 0; -- while ((c = getwc(finput)) == L' ' || -+ while ((c = getc(finput)) == L' ' || - c == L'\t') /* EMPTY */; - if (c == L'#') { -- while ((c = getwc(finput)) == L' ' || -+ while ((c = getc(finput)) == L' ' || - c == L'\t') /* EMPTY */; -- if (iswdigit(c)) { -+ if (isdigit(c)) { - m = 0; -- while (iswdigit(c)) { -+ while (isdigit(c)) { - m = m*10+c-L'0'; -- c = getwc(finput); -+ c = getc(finput); - } - argument = m; - } else -@@ -1339,13 +1339,13 @@ - } - if (c == '-') { - s = -s; -- c = getwc(finput); -+ c = getc(finput); - } -- if (iswdigit(c)) { -+ if (isdigit(c)) { - j = 0; -- while (iswdigit(c)) { -+ while (isdigit(c)) { - j = j*10 + c - L'0'; -- c = getwc(finput); -+ c = getc(finput); - } - j = j*s - offset; - if (j > 0) { -@@ -1363,51 +1363,51 @@ - } - goto swt; - } -- putwc(L'$', faction); -+ putc(L'$', faction); - if (s < 0) -- putwc(L'-', faction); -+ putc(L'-', faction); - goto swt; - case L'}': - if (--brac) - goto lcopy; -- putwc(c, faction); -+ putc(c, faction); - return; - case L'/': /* look for comments */ -- putwc(c, faction); -- c = getwc(finput); -+ putc(c, faction); -+ c = getc(finput); - if (c != L'*') - goto swt; - /* it really is a comment */ -- putwc(c, faction); -- c = getwc(finput); -+ putc(c, faction); -+ c = getc(finput); - while (c != EOF) { - while (c == L'*') { -- putwc(c, faction); -- if ((c = getwc(finput)) == L'/') -+ putc(c, faction); -+ if ((c = getc(finput)) == L'/') - goto lcopy; - } -- putwc(c, faction); -+ putc(c, faction); - if (c == L'\n') - ++lineno; -- c = getwc(finput); -+ c = getc(finput); - } - error("EOF inside comment"); - /* FALLTHRU */ - case L'\'': /* character constant */ - case L'"': /* character string */ - match = c; -- putwc(c, faction); -- while ((c = getwc(finput)) != EOF) { -+ putc(c, faction); -+ while ((c = getc(finput)) != EOF) { - if (c == L'\\') { -- putwc(c, faction); -- c = getwc(finput); -+ putc(c, faction); -+ c = getc(finput); - if (c == L'\n') - ++lineno; - } else if (c == match) - goto lcopy; - else if (c == L'\n') - error("newline in string or char. const."); -- putwc(c, faction); -+ putc(c, faction); - } - error("EOF in string or character constant"); - /* FALLTHRU */ -@@ -1419,7 +1419,7 @@ - goto lcopy; - } - lcopy: -- putwc(c, faction); -+ putc(c, faction); - /* - * Save the possible identifier name. - * Used to print out a warning message. -@@ -1434,7 +1434,7 @@ - * If c has a possibility to be a - * part of identifier, save it. - */ -- else if (iswalnum(c) || c == L'_') { -+ else if (isalnum(c) || c == L'_') { - id_name[id_idx++] = c; - id_name[id_idx] = 0; - } else { -@@ -1446,28 +1446,28 @@ - - static void - lhsfill(s) /* new rule, dump old (if exists), restart strings */ --wchar_t *s; -+char *s; - { - static int lhs_len = LHS_TEXT_LEN; -- int s_lhs = wcslen(s); -+ int s_lhs = strlen(s); - if (s_lhs >= lhs_len) { - lhs_len = s_lhs + 2; -- lhstext = realloc(lhstext, sizeof (wchar_t)*lhs_len); -+ lhstext = realloc(lhstext, sizeof (char)*lhs_len); - if (lhstext == NULL) - error("couldn't expanded LHS length"); - } - rhsfill(NULL); -- wcscpy(lhstext, s); /* don't worry about too long of a name */ -+ strcpy(lhstext, s); /* don't worry about too long of a name */ - } - - static void --rhsfill(wchar_t *s) /* either name or 0 */ -+rhsfill(char *s) /* either name or 0 */ - { -- static wchar_t *loc; /* next free location in rhstext */ -+ static char *loc; /* next free location in rhstext */ - static int rhs_len = RHS_TEXT_LEN; - static int used = 0; -- int s_rhs = (s == NULL ? 0 : wcslen(s)); -- register wchar_t *p; -+ int s_rhs = (s == NULL ? 0 : strlen(s)); -+ register char *p; - - if (!s) /* print out and erase old text */ - { -@@ -1481,10 +1481,10 @@ - - used = loc - rhstext; - if ((s_rhs + 3) >= (rhs_len - used)) { -- static wchar_t *textbase; -+ static char *textbase; - textbase = rhstext; - rhs_len += s_rhs + RHS_TEXT_LEN; -- rhstext = realloc(rhstext, sizeof (wchar_t)*rhs_len); -+ rhstext = realloc(rhstext, sizeof (char)*rhs_len); - if (rhstext == NULL) - error("couldn't expanded RHS length"); - loc = loc - textbase + rhstext; -@@ -1508,15 +1508,15 @@ - static void - lrprnt (void) /* print out the left and right hand sides */ - { -- wchar_t *rhs; -- wchar_t *m_rhs = NULL; -+ char *rhs; -+ char *m_rhs = NULL; - - if (!*rhstext) /* empty rhs - print usual comment */ -- rhs = L" /* empty */"; -+ rhs = " /* empty */"; - else { - int idx1; /* tmp idx used to find if there are d_quotes */ - int idx2; /* tmp idx used to generate escaped string */ -- wchar_t *p; -+ char *p; - /* - * Check if there are any double quote in RHS. - */ -@@ -1525,8 +1525,8 @@ - /* - * A double quote is found. - */ -- idx2 = wcslen(rhstext)*2; -- p = m_rhs = malloc((idx2 + 1)*sizeof (wchar_t)); -+ idx2 = strlen(rhstext)*2; -+ p = m_rhs = malloc((idx2 + 1)*sizeof (char)); - if (m_rhs == NULL) - error( - "Couldn't allocate memory for RHS."); -@@ -1617,7 +1617,7 @@ - exp_tokname(void) - { - toksize += NAMESIZE; -- tokname = realloc(tokname, sizeof (wchar_t) * toksize); -+ tokname = realloc(tokname, sizeof (char) * toksize); - } - - -@@ -1633,7 +1633,7 @@ - - prdptr = realloc(prdptr, sizeof (int *) * (nprodsz+2)); - levprd = realloc(levprd, sizeof (int) * (nprodsz+2)); -- had_act = realloc(had_act, sizeof (wchar_t) * (nprodsz+2)); -+ had_act = realloc(had_act, sizeof (char) * (nprodsz+2)); - for (i = nprodsz-NPROD; i < nprodsz+2; ++i) - had_act[i] = 0; - -diff -U3 -r yacc/y3.c yacc/y3.c ---- yacc/y3.c 2005-11-26 17:37:56.000000000 +0000 -+++ yacc/y3.c 2021-01-25 19:01:48.390375872 +0000 -@@ -41,7 +41,7 @@ - static void precftn(int, int, int); - static void wract(int); - static void wrstate(int); --static void wdef(wchar_t *, int); -+static void wdef(char *, int); - #ifndef NOLIBW - static void wrmbchars(void); - #endif /* !NOLIBW */ -@@ -121,7 +121,7 @@ - } - - fprintf(ftable, "\t};\n"); -- wdef(L"YYNPROD", nprod); -+ wdef("YYNPROD", nprod); - #ifndef NOLIBW - if (nmbchars > 0) { - wrmbchars(); -@@ -485,14 +485,14 @@ - } - - static void --wdef(wchar_t *s, int n) -+wdef(char *s, int n) - { - /* output a definition of s to the value n */ - fprintf(ftable, "# define %ls %d\n", s, n); - } - - void --warray(wchar_t *s, int *v, int n) -+warray(char *s, int *v, int n) - { - register int i; - fprintf(ftable, "static YYCONST yytabelem %ls[]={\n", s); -@@ -549,11 +549,11 @@ - wrmbchars(void) - { - int i; -- wdef(L"YYNMBCHARS", nmbchars); -+ wdef("YYNMBCHARS", nmbchars); - qsort(mbchars, nmbchars, sizeof (*mbchars), - (int (*)(const void *, const void *))cmpmbchars); - fprintf(ftable, -- "static struct{\n\twchar_t character;" -+ "static struct{\n\tchar character;" - "\n\tint tvalue;\n}yymbchars[YYNMBCHARS]={\n"); - for (i = 0; i < nmbchars; ++i) { - fprintf(ftable, "\t{%#x,%d}", -diff -U3 -r yacc/y4.c yacc/y4.c ---- yacc/y4.c 2005-11-26 17:37:56.000000000 +0000 -+++ yacc/y4.c 2021-01-25 19:02:06.780876425 +0000 -@@ -36,7 +36,6 @@ - */ - - #include "dextern" --#include - #include - #define NOMORE -1000 - -@@ -44,7 +43,7 @@ - static void stin(int); - static void osummary(void); - static void aoutput(void); --static void arout(wchar_t *, int *, int); -+static void arout(char *, int *, int); - static int nxti(void); - static int gtnm(void); - -@@ -414,13 +413,13 @@ - /* write out the optimized parser */ - - fprintf(ftable, "# define YYLAST %d\n", maxa-amem + 1); -- arout(L"yyact", amem, (maxa - amem) + 1); -- arout(L"yypact", indgo, nstate); -- arout(L"yypgo", pgo, nnonter + 1); -+ arout("yyact", amem, (maxa - amem) + 1); -+ arout("yypact", indgo, nstate); -+ arout("yypgo", pgo, nnonter + 1); - } - - static void --arout(wchar_t *s, int *v, int n) -+arout(char *s, int *v, int n) - { - register int i; - -@@ -448,8 +447,8 @@ - s = 1; - val = 0; - -- while ((c = getwc(finput)) != EOF) { -- if (iswdigit(c)) -+ while ((c = getc(finput)) != EOF) { -+ if (isdigit(c)) - val = val * 10 + c - L'0'; - else if (c == L'-') - s = -1; -diff -U3 -r yacc/Makefile.mk yacc/Makefile.mk ---- yacc/Makefile.mk 2007-01-04 23:31:24.000000000 +0000 -+++ yacc/Makefile.mk 2021-01-25 01:25:15.592235579 +0000 -@@ -1,4 +1,4 @@ --YOBJ = y1.o y2.o y3.o y4.o y5.o getopt.o -+YOBJ = y1.o y2.o y3.o y4.o getopt.o - - LOBJ = libmai.o libzer.o - diff --git a/steps/manifest b/steps/manifest index 1dcbfbc..8d08ef2 100644 --- a/steps/manifest +++ b/steps/manifest @@ -50,7 +50,6 @@ build: sed-4.0.9 build: bzip2-1.0.8 build: coreutils-5.0 build: byacc-20240109 -build: heirloom-devtools-070527 build: bash-2.05b improve: setup_repo improve: update_env @@ -58,7 +57,6 @@ improve: merged_usr improve: populate_device_nodes define: CONSOLES = ( INTERACTIVE == True && CHROOT == False ) improve: open_console ( CONSOLES == True ) -build: flex-2.5.11 build: tcc-0.9.27 improve: musl_libdir build: musl-1.1.24 @@ -68,8 +66,10 @@ build: tcc-0.9.27 build: sed-4.0.9 build: bzip2-1.0.8 build: m4-1.4.7 +build: heirloom-devtools-070527 +build: flex-2.5.11 build: flex-2.6.4 -uninstall: /usr/bin/yacc +uninstall: heirloom-devtools-070527 build: bison-3.4.1 build: bison-3.4.1 build: bison-3.4.1 From e2a1df94a5988cd0e3d23a9b9fbb744909c82c03 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=C3=A1bor=20Stefanik?= Date: Mon, 15 Apr 2024 01:38:31 +0200 Subject: [PATCH 4/5] Add licensing information to byacc's makefile This makefile was included in the byacc distribution as Makefile.old It was slightly updated to fit our needs. Berkeley yacc itself is in the public domain, but SPDX/REUSE provides no good way to represent this. In keeping with that spirit, I chose CC0 as the license for my modifications, which SPDX can represent. --- LICENSES/CC0-1.0.txt | 121 +++++++++++ LICENSES/CDDL-1.0.txt | 298 ---------------------------- steps/byacc-20240109/files/Makefile | 15 ++ 3 files changed, 136 insertions(+), 298 deletions(-) create mode 100644 LICENSES/CC0-1.0.txt delete mode 100644 LICENSES/CDDL-1.0.txt diff --git a/LICENSES/CC0-1.0.txt b/LICENSES/CC0-1.0.txt new file mode 100644 index 0000000..0e259d4 --- /dev/null +++ b/LICENSES/CC0-1.0.txt @@ -0,0 +1,121 @@ +Creative Commons Legal Code + +CC0 1.0 Universal + + CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE + LEGAL SERVICES. DISTRIBUTION OF THIS DOCUMENT DOES NOT CREATE AN + ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS + INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES + REGARDING THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS + PROVIDED HEREUNDER, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM + THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED + HEREUNDER. + +Statement of Purpose + +The laws of most jurisdictions throughout the world automatically confer +exclusive Copyright and Related Rights (defined below) upon the creator +and subsequent owner(s) (each and all, an "owner") of an original work of +authorship and/or a database (each, a "Work"). + +Certain owners wish to permanently relinquish those rights to a Work for +the purpose of contributing to a commons of creative, cultural and +scientific works ("Commons") that the public can reliably and without fear +of later claims of infringement build upon, modify, incorporate in other +works, reuse and redistribute as freely as possible in any form whatsoever +and for any purposes, including without limitation commercial purposes. +These owners may contribute to the Commons to promote the ideal of a free +culture and the further production of creative, cultural and scientific +works, or to gain reputation or greater distribution for their Work in +part through the use and efforts of others. + +For these and/or other purposes and motivations, and without any +expectation of additional consideration or compensation, the person +associating CC0 with a Work (the "Affirmer"), to the extent that he or she +is an owner of Copyright and Related Rights in the Work, voluntarily +elects to apply CC0 to the Work and publicly distribute the Work under its +terms, with knowledge of his or her Copyright and Related Rights in the +Work and the meaning and intended legal effect of CC0 on those rights. + +1. Copyright and Related Rights. A Work made available under CC0 may be +protected by copyright and related or neighboring rights ("Copyright and +Related Rights"). Copyright and Related Rights include, but are not +limited to, the following: + + i. the right to reproduce, adapt, distribute, perform, display, + communicate, and translate a Work; + ii. moral rights retained by the original author(s) and/or performer(s); +iii. publicity and privacy rights pertaining to a person's image or + likeness depicted in a Work; + iv. rights protecting against unfair competition in regards to a Work, + subject to the limitations in paragraph 4(a), below; + v. rights protecting the extraction, dissemination, use and reuse of data + in a Work; + vi. database rights (such as those arising under Directive 96/9/EC of the + European Parliament and of the Council of 11 March 1996 on the legal + protection of databases, and under any national implementation + thereof, including any amended or successor version of such + directive); and +vii. other similar, equivalent or corresponding rights throughout the + world based on applicable law or treaty, and any national + implementations thereof. + +2. Waiver. To the greatest extent permitted by, but not in contravention +of, applicable law, Affirmer hereby overtly, fully, permanently, +irrevocably and unconditionally waives, abandons, and surrenders all of +Affirmer's Copyright and Related Rights and associated claims and causes +of action, whether now known or unknown (including existing as well as +future claims and causes of action), in the Work (i) in all territories +worldwide, (ii) for the maximum duration provided by applicable law or +treaty (including future time extensions), (iii) in any current or future +medium and for any number of copies, and (iv) for any purpose whatsoever, +including without limitation commercial, advertising or promotional +purposes (the "Waiver"). Affirmer makes the Waiver for the benefit of each +member of the public at large and to the detriment of Affirmer's heirs and +successors, fully intending that such Waiver shall not be subject to +revocation, rescission, cancellation, termination, or any other legal or +equitable action to disrupt the quiet enjoyment of the Work by the public +as contemplated by Affirmer's express Statement of Purpose. + +3. Public License Fallback. Should any part of the Waiver for any reason +be judged legally invalid or ineffective under applicable law, then the +Waiver shall be preserved to the maximum extent permitted taking into +account Affirmer's express Statement of Purpose. In addition, to the +extent the Waiver is so judged Affirmer hereby grants to each affected +person a royalty-free, non transferable, non sublicensable, non exclusive, +irrevocable and unconditional license to exercise Affirmer's Copyright and +Related Rights in the Work (i) in all territories worldwide, (ii) for the +maximum duration provided by applicable law or treaty (including future +time extensions), (iii) in any current or future medium and for any number +of copies, and (iv) for any purpose whatsoever, including without +limitation commercial, advertising or promotional purposes (the +"License"). The License shall be deemed effective as of the date CC0 was +applied by Affirmer to the Work. Should any part of the License for any +reason be judged legally invalid or ineffective under applicable law, such +partial invalidity or ineffectiveness shall not invalidate the remainder +of the License, and in such case Affirmer hereby affirms that he or she +will not (i) exercise any of his or her remaining Copyright and Related +Rights in the Work or (ii) assert any associated claims and causes of +action with respect to the Work, in either case contrary to Affirmer's +express Statement of Purpose. + +4. Limitations and Disclaimers. + + a. No trademark or patent rights held by Affirmer are waived, abandoned, + surrendered, licensed or otherwise affected by this document. + b. Affirmer offers the Work as-is and makes no representations or + warranties of any kind concerning the Work, express, implied, + statutory or otherwise, including without limitation warranties of + title, merchantability, fitness for a particular purpose, non + infringement, or the absence of latent or other defects, accuracy, or + the present or absence of errors, whether or not discoverable, all to + the greatest extent permissible under applicable law. + c. Affirmer disclaims responsibility for clearing rights of other persons + that may apply to the Work or any use thereof, including without + limitation any person's Copyright and Related Rights in the Work. + Further, Affirmer disclaims responsibility for obtaining any necessary + consents, permissions or other rights required for any use of the + Work. + d. Affirmer understands and acknowledges that Creative Commons is not a + party to this document and has no duty or obligation with respect to + this CC0 or use of the Work. diff --git a/LICENSES/CDDL-1.0.txt b/LICENSES/CDDL-1.0.txt deleted file mode 100644 index 8d88c97..0000000 --- a/LICENSES/CDDL-1.0.txt +++ /dev/null @@ -1,298 +0,0 @@ -COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) -Version 1.0 - -1. Definitions. - -1.1. “Contributor” means each individual or entity that creates or contributes -to the creation of Modifications. - -1.2. “Contributor Version” means the combination of the Original Software, -prior Modifications used by a Contributor (if any), and the Modifications -made by that particular Contributor. - -1.3. “Covered Software” means (a) the Original Software, or (b) Modifications, -or (c) the combination of files containing Original Software with files containing -Modifications, in each case including portions thereof. - -1.4. “Executable” means the Covered Software in any form other than Source -Code. - -1.5. “Initial Developer” means the individual or entity that first makes Original -Software available under this License. - -1.6. “Larger Work” means a work which combines Covered Software or portions -thereof with code not governed by the terms of this License. - -1.7. “License” means this document. - -1.8. “Licensable” means having the right to grant, to the maximum extent possible, -whether at the time of the initial grant or subsequently acquired, any and -all of the rights conveyed herein. - -1.9. “Modifications” means the Source Code and Executable form of any of the -following: - -A. Any file that results from an addition to, deletion from or modification -of the contents of a file containing Original Software or previous Modifications; - -B. Any new file that contains any part of the Original Software or previous -Modification; or - -C. Any new file that is contributed or otherwise made available under the -terms of this License. - -1.10. “Original Software” means the Source Code and Executable form of computer -software code that is originally released under this License. - -1.11. “Patent Claims” means any patent claim(s), now owned or hereafter acquired, -including without limitation, method, process, and apparatus claims, in any -patent Licensable by grantor. - -1.12. “Source Code” means (a) the common form of computer software code in -which modifications are made and (b) associated documentation included in -or with such code. - -1.13. “You” (or “Your”) means an individual or a legal entity exercising rights -under, and complying with all of the terms of, this License. For legal entities, -“You” includes any entity which controls, is controlled by, or is under common -control with You. For purposes of this definition, “control” means (a) the -power, direct or indirect, to cause the direction or management of such entity, -whether by contract or otherwise, or (b) ownership of more than fifty percent -(50%) of the outstanding shares or beneficial ownership of such entity. - -2. License Grants. - -2.1. The Initial Developer Grant. -Conditioned upon Your compliance with Section 3.1 below and subject to third -party intellectual property claims, the Initial Developer hereby grants You -a world-wide, royalty-free, non-exclusive license: - -(a) under intellectual property rights (other than patent or trademark) Licensable -by Initial Developer, to use, reproduce, modify, display, perform, sublicense -and distribute the Original Software (or portions thereof), with or without -Modifications, and/or as part of a Larger Work; and - -(b) under Patent Claims infringed by the making, using or selling of Original -Software, to make, have made, use, practice, sell, and offer for sale, and/or -otherwise dispose of the Original Software (or portions thereof). - -(c) The licenses granted in Sections 2.1(a) and (b) are effective on the date -Initial Developer first distributes or otherwise makes the Original Software -available to a third party under the terms of this License. - -(d) Notwithstanding Section 2.1(b) above, no patent license is granted: (1) -for code that You delete from the Original Software, or (2) for infringements -caused by: (i) the modification of the Original Software, or (ii) the combination -of the Original Software with other software or devices. - -2.2. Contributor Grant. -Conditioned upon Your compliance with Section 3.1 below and subject to third -party intellectual property claims, each Contributor hereby grants You a world-wide, -royalty-free, non-exclusive license: - -(a) under intellectual property rights (other than patent or trademark) Licensable -by Contributor to use, reproduce, modify, display, perform, sublicense and -distribute the Modifications created by such Contributor (or portions thereof), -either on an unmodified basis, with other Modifications, as Covered Software -and/or as part of a Larger Work; and - -(b) under Patent Claims infringed by the making, using, or selling of Modifications -made by that Contributor either alone and/or in combination with its Contributor -Version (or portions of such combination), to make, use, sell, offer for sale, -have made, and/or otherwise dispose of: (1) Modifications made by that Contributor -(or portions thereof); and (2) the combination of Modifications made by that -Contributor with its Contributor Version (or portions of such combination). - -(c) The licenses granted in Sections 2.2(a) and 2.2(b) are effective on the -date Contributor first distributes or otherwise makes the Modifications available -to a third party. - -(d) Notwithstanding Section 2.2(b) above, no patent license is granted: (1) -for any code that Contributor has deleted from the Contributor Version; (2) -for infringements caused by: (i) third party modifications of Contributor -Version, or (ii) the combination of Modifications made by that Contributor -with other software (except as part of the Contributor Version) or other devices; -or (3) under Patent Claims infringed by Covered Software in the absence of -Modifications made by that Contributor. - -3. Distribution Obligations. - -3.1. Availability of Source Code. -Any Covered Software that You distribute or otherwise make available in Executable -form must also be made available in Source Code form and that Source Code -form must be distributed only under the terms of this License. You must include -a copy of this License with every copy of the Source Code form of the Covered -Software You distribute or otherwise make available. You must inform recipients -of any such Covered Software in Executable form as to how they can obtain -such Covered Software in Source Code form in a reasonable manner on or through -a medium customarily used for software exchange. - -3.2. Modifications. -The Modifications that You create or to which You contribute are governed -by the terms of this License. You represent that You believe Your Modifications -are Your original creation(s) and/or You have sufficient rights to grant the -rights conveyed by this License. - -3.3. Required Notices. -You must include a notice in each of Your Modifications that identifies You -as the Contributor of the Modification. You may not remove or alter any copyright, -patent or trademark notices contained within the Covered Software, or any -notices of licensing or any descriptive text giving attribution to any Contributor -or the Initial Developer. - -3.4. Application of Additional Terms. -You may not offer or impose any terms on any Covered Software in Source Code -form that alters or restricts the applicable version of this License or the -recipients’ rights hereunder. You may choose to offer, and to charge a fee -for, warranty, support, indemnity or liability obligations to one or more -recipients of Covered Software. However, you may do so only on Your own behalf, -and not on behalf of the Initial Developer or any Contributor. You must make -it absolutely clear that any such warranty, support, indemnity or liability -obligation is offered by You alone, and You hereby agree to indemnify the -Initial Developer and every Contributor for any liability incurred by the -Initial Developer or such Contributor as a result of warranty, support, indemnity -or liability terms You offer. - -3.5. Distribution of Executable Versions. -You may distribute the Executable form of the Covered Software under the terms -of this License or under the terms of a license of Your choice, which may -contain terms different from this License, provided that You are in compliance -with the terms of this License and that the license for the Executable form -does not attempt to limit or alter the recipient’s rights in the Source Code -form from the rights set forth in this License. If You distribute the Covered -Software in Executable form under a different license, You must make it absolutely -clear that any terms which differ from this License are offered by You alone, -not by the Initial Developer or Contributor. You hereby agree to indemnify -the Initial Developer and every Contributor for any liability incurred by -the Initial Developer or such Contributor as a result of any such terms You -offer. - -3.6. Larger Works. -You may create a Larger Work by combining Covered Software with other code -not governed by the terms of this License and distribute the Larger Work as -a single product. In such a case, You must make sure the requirements of this -License are fulfilled for the Covered Software. - -4. Versions of the License. - -4.1. New Versions. -Sun Microsystems, Inc. is the initial license steward and may publish revised -and/or new versions of this License from time to time. Each version will be -given a distinguishing version number. Except as provided in Section 4.3, -no one other than the license steward has the right to modify this License. - -4.2. Effect of New Versions. -You may always continue to use, distribute or otherwise make the Covered Software -available under the terms of the version of the License under which You originally -received the Covered Software. If the Initial Developer includes a notice -in the Original Software prohibiting it from being distributed or otherwise -made available under any subsequent version of the License, You must distribute -and make the Covered Software available under the terms of the version of -the License under which You originally received the Covered Software. Otherwise, -You may also choose to use, distribute or otherwise make the Covered Software -available under the terms of any subsequent version of the License published -by the license steward. - -4.3. Modified Versions. -When You are an Initial Developer and You want to create a new license for -Your Original Software, You may create and use a modified version of this -License if You: (a) rename the license and remove any references to the name -of the license steward (except to note that the license differs from this -License); and (b) otherwise make it clear that the license contains terms -which differ from this License. - -5. DISCLAIMER OF WARRANTY. - -COVERED SOFTWARE IS PROVIDED UNDER THIS LICENSE ON AN “AS IS” BASIS, WITHOUT -WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, WITHOUT LIMITATION, -WARRANTIES THAT THE COVERED SOFTWARE IS FREE OF DEFECTS, MERCHANTABLE, FIT -FOR A PARTICULAR PURPOSE OR NON-INFRINGING. THE ENTIRE RISK AS TO THE QUALITY -AND PERFORMANCE OF THE COVERED SOFTWARE IS WITH YOU. SHOULD ANY COVERED SOFTWARE -PROVE DEFECTIVE IN ANY RESPECT, YOU (NOT THE INITIAL DEVELOPER OR ANY OTHER -CONTRIBUTOR) ASSUME THE COST OF ANY NECESSARY SERVICING, REPAIR OR CORRECTION. -THIS DISCLAIMER OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. -NO USE OF ANY COVERED SOFTWARE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER. - -6. TERMINATION. - -6.1. This License and the rights granted hereunder will terminate automatically -if You fail to comply with terms herein and fail to cure such breach within -30 days of becoming aware of the breach. Provisions which, by their nature, -must remain in effect beyond the termination of this License shall survive. - -6.2. If You assert a patent infringement claim (excluding declaratory judgment -actions) against Initial Developer or a Contributor (the Initial Developer -or Contributor against whom You assert such claim is referred to as “Participant”) -alleging that the Participant Software (meaning the Contributor Version where -the Participant is a Contributor or the Original Software where the Participant -is the Initial Developer) directly or indirectly infringes any patent, then -any and all rights granted directly or indirectly to You by such Participant, -the Initial Developer (if the Initial Developer is not the Participant) and -all Contributors under Sections 2.1 and/or 2.2 of this License shall, upon -60 days notice from Participant terminate prospectively and automatically -at the expiration of such 60 day notice period, unless if within such 60 day -period You withdraw Your claim with respect to the Participant Software against -such Participant either unilaterally or pursuant to a written agreement with -Participant. - -6.3. In the event of termination under Sections 6.1 or 6.2 above, all end -user licenses that have been validly granted by You or any distributor hereunder -prior to termination (excluding licenses granted to You by any distributor) -shall survive termination. - -7. LIMITATION OF LIABILITY. - -UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT (INCLUDING -NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE INITIAL DEVELOPER, ANY -OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF COVERED SOFTWARE, OR ANY SUPPLIER -OF ANY OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR ANY INDIRECT, SPECIAL, -INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER INCLUDING, WITHOUT LIMITATION, -DAMAGES FOR LOST PROFITS, LOSS OF GOODWILL, WORK STOPPAGE, COMPUTER FAILURE -OR MALFUNCTION, OR ANY AND ALL OTHER COMMERCIAL DAMAGES OR LOSSES, EVEN IF -SUCH PARTY SHALL HAVE BEEN INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS -LIMITATION OF LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL -INJURY RESULTING FROM SUCH PARTY’S NEGLIGENCE TO THE EXTENT APPLICABLE LAW -PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OR -LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO THIS EXCLUSION AND LIMITATION -MAY NOT APPLY TO YOU. - -8. U.S. GOVERNMENT END USERS. - -The Covered Software is a “commercial item,” as that term is defined in 48 -C.F.R. 2.101 (Oct. 1995), consisting of “commercial computer software” (as -that term is defined at 48 C.F.R. § 252.227-7014(a)(1)) and “commercial computer -software documentation” as such terms are used in 48 C.F.R. 12.212 (Sept. -1995). Consistent with 48 C.F.R. 12.212 and 48 C.F.R. 227.7202-1 through 227.7202-4 -(June 1995), all U.S. Government End Users acquire Covered Software with only -those rights set forth herein. This U.S. Government Rights clause is in lieu -of, and supersedes, any other FAR, DFAR, or other clause or provision that -addresses Government rights in computer software under this License. - -9. MISCELLANEOUS. - -This License represents the complete agreement concerning subject matter hereof. -If any provision of this License is held to be unenforceable, such provision -shall be reformed only to the extent necessary to make it enforceable. This -License shall be governed by the law of the jurisdiction specified in a notice -contained within the Original Software (except to the extent applicable law, -if any, provides otherwise), excluding such jurisdiction’s conflict-of-law -provisions. Any litigation relating to this License shall be subject to the -jurisdiction of the courts located in the jurisdiction and venue specified -in a notice contained within the Original Software, with the losing party -responsible for costs, including, without limitation, court costs and reasonable -attorneys’ fees and expenses. The application of the United Nations Convention -on Contracts for the International Sale of Goods is expressly excluded. Any -law or regulation which provides that the language of a contract shall be -construed against the drafter shall not apply to this License. You agree that -You alone are responsible for compliance with the United States export administration -regulations (and the export control laws and regulation of any other countries) -when You use, distribute or otherwise make available any Covered Software. - -10. RESPONSIBILITY FOR CLAIMS. - -As between Initial Developer and the Contributors, each party is responsible -for claims and damages arising, directly or indirectly, out of its utilization -of rights under this License and You agree to work with Initial Developer -and Contributors to distribute such responsibility on an equitable basis. -Nothing herein is intended or shall be deemed to constitute any admission -of liability. diff --git a/steps/byacc-20240109/files/Makefile b/steps/byacc-20240109/files/Makefile index edbd3cb..51f0b0f 100644 --- a/steps/byacc-20240109/files/Makefile +++ b/steps/byacc-20240109/files/Makefile @@ -1,3 +1,18 @@ +# SPDX-FileCopyrightText: 2002-2022 Thomas E. Dickey +# SPDX-FileCopyrightText: 2024 Gábor Stefanik +# +# SPDX-License-Identifier: CC0-1.0 +# +# From original byacc README: +# Berkeley Yacc is in the public domain. The data structures and algorithms +# used in Berkeley Yacc are all either taken from documents available to the +# general public or are inventions of the author. Anyone may freely distribute +# source or binary forms of Berkeley Yacc whether unchanged or modified. +# Distributers may charge whatever fees they can obtain for Berkeley Yacc. +# Programs generated by Berkeley Yacc may be distributed freely. +# +# (typo "Distributers" in original) + DEST = . HDRS = defs.h From 0c718aeece03c690687ee7e7133550118c8bbf7a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=C3=A1bor=20Stefanik?= Date: Mon, 15 Apr 2024 01:55:25 +0200 Subject: [PATCH 5/5] Update checksums for heirloom yacc -> byacc change --- steps/SHA256SUMS.pkgs | 5 +++-- steps/bash-2.05b/bash-2.05b.checksums | 2 +- steps/byacc-20240109/byacc-20240109.checksums | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/steps/SHA256SUMS.pkgs b/steps/SHA256SUMS.pkgs index 58ea476..c5384b7 100644 --- a/steps/SHA256SUMS.pkgs +++ b/steps/SHA256SUMS.pkgs @@ -45,9 +45,9 @@ bda6afcd3a390a34a57443269a4857ccc470129f7a557981778c145fd841cbd1 dist-3.5-236_0 9c6f7e156f299f1d0948537e28f00d40e727a3debae3cce158e9bce827136214 ed-1.4_0.tar.bz2 0061d240f9bb2bb534db7003ddcc4eae9981954ad72e8f41ff1d76dc449ebd37 file-5.44_0.tar.bz2 eec07e0d710ed3dd8d0ba6a1ec6ca9f1fa3a611bbb225195435679175317bf90 findutils-4.2.33_0.tar.bz2 -41902ec0383ea977a8d008dee37150e022e0714cd99f54c37f29c153464b758a flex-2.5.11_0.tar.bz2 +6c59fe114161d5fb99101e54c3d40b8c9355a6e2705cc8804178a65e976ebfb1 flex-2.5.11_0.tar.bz2 b3a8d59229289ca5a1de6a24c9c828d2847144f6662e0d5b7f41e7ff6e57abaa flex-2.5.33_0.tar.bz2 -57f72a4d1cb89dc1e59af0228fddc0ea97a3588984114f702f142c82aeeef493 flex-2.6.4_0.tar.bz2 +521bf27dd28461fbc5d80e09bd56ab0f180af70020d74094b8edafae9713fc44 flex-2.6.4_0.tar.bz2 f0f1471e4a5ff95749bd655c145311cc03eec80525f2bb0b9b3ac3ff8be29e0b gawk-3.0.4_0.tar.bz2 62e90abe883f6ccd679adf42d00c2c18a9809bbab599411c81b6c4ac4d446452 gawk-5.3.0_0.tar.bz2 6de1c1380026ef9948387e665610185b6014f47a80453177a6c81898c95cbbd3 gc-8.0.4_0.tar.bz2 @@ -64,6 +64,7 @@ dc67fc1b132fa3945349efe74c5b2197bd0b6babf4d29d2deddd04f09d9af680 gettext-0.21_0 8035da0f42b40509a1f68c91164f20fec624cf8b61017aa4e135473e547dddf4 grub-2.06_0.tar.bz2 e2a85aad6d51e52c9a30afeed058f95172fde1215f77243549274672990f6237 guile-3.0.9_0.tar.bz2 6585ae3bc8149ec0e3fba766278fa30e2d7f0e7d1b9a9a4a457e0afa15b109c9 gzip-1.13_0.tar.bz2 +5de062a49595c0d8cd7ba0efb70b95b8fa3c5a9c61e4eeeeb0bdb26d2e426ae0 heirloom-devtools-070527_0.tar.bz2 8d2015b87337abbf287f7a39ee4cf53514120b5d3e90a93fe7d533dcc43f14fa help2man-1.36.4_0.tar.bz2 ea5639dc6198c5f243362a1a7adfbea0cb779e085975712a1b410e82d7e0cf84 kbd-1.15_0.tar.bz2 50a0f881161c68fe7c9ec6836b11a905b0d54e08e99b2476e8d1f5ac3212769e kexec-linux-1.0.0_0.tar.bz2 diff --git a/steps/bash-2.05b/bash-2.05b.checksums b/steps/bash-2.05b/bash-2.05b.checksums index b2bde66..3ac85d5 100644 --- a/steps/bash-2.05b/bash-2.05b.checksums +++ b/steps/bash-2.05b/bash-2.05b.checksums @@ -1 +1 @@ -dd42ffbc30919b13693cbd58536599907d057dc58aabde2b2b1e36ec0475e694 /usr/bin/bash +787a4096636b139d5b278c1a7dea6b2d951406302eca670ccab371b63b9dbb67 /usr/bin/bash diff --git a/steps/byacc-20240109/byacc-20240109.checksums b/steps/byacc-20240109/byacc-20240109.checksums index ecec1dc..78bec8f 100644 --- a/steps/byacc-20240109/byacc-20240109.checksums +++ b/steps/byacc-20240109/byacc-20240109.checksums @@ -1 +1 @@ -79ff462e4247dc7316a163124b32c54e6c8cb6d2ff4dfb0c1818799efcc1d8a7 /usr/bin/byacc +79ff462e4247dc7316a163124b32c54e6c8cb6d2ff4dfb0c1818799efcc1d8a7 /usr/bin/yacc