here is an update to devel/rgbds. This diff: - updates to 0.6.1 released on Dec 3, 2022. - adds devel/bison and shells/bash to BUILD_DEPENDS (bash appears in many of the shell scripts and bison appears in src/check_bison_ver.sh.). - pledge is reapplied to the new C and C++ files. Use err instead of errx. Notably, gfx/main.cpp now uses fputs to print to stderr then calls exit(1) instead of errx, which is for C only. - workaround in Makefile patch from [1] for vasprintf bug in openbsd headers when POSIX_C_SOURCE=200809L is defined. This was discussed by bentley@ in [1] and rsadowski@ in [2]. I propose having this as a temporary workaround until openbsd's llvm headers can be fixed with a more optimal solution[3]. [1] https://github.com/gbdev/rgbds/issues/1111 [2] https://marc.info/?l=openbsd-tech&m=161833545600505&w=2 [3] https://marc.info/?l=openbsd-bugs&m=157758838031146&w=2
Testing: https://gbdev.io/gb-asm-tutorial/part1/hello_world.html I followed this hello world tutorial and loaded the rom in emulators/sameboy. It successfully printed. Feedback and tests are welcome. OK? Index: Makefile =================================================================== RCS file: /cvs/ports/devel/rgbds/Makefile,v retrieving revision 1.10 diff -u -p -u -p -r1.10 Makefile --- Makefile 11 Mar 2022 18:53:10 -0000 1.10 +++ Makefile 18 Apr 2023 04:18:29 -0000 @@ -2,7 +2,7 @@ FIX_EXTRACT_PERMISSIONS = Yes COMMENT = Game Boy development system -V = 0.4.2 +V = 0.6.1 DISTNAME = rgbds-$V CATEGORIES = devel @@ -21,6 +21,9 @@ MASTER_SITES = https://github.com/gbdev/ COMPILER = base-clang ports-gcc COMPILER_LANGS = c + +BUILD_DEPENDS = devel/bison \ + shells/bash LIB_DEPENDS = graphics/png Index: distinfo =================================================================== RCS file: /cvs/ports/devel/rgbds/distinfo,v retrieving revision 1.8 diff -u -p -u -p -r1.8 distinfo --- distinfo 13 Dec 2020 14:24:29 -0000 1.8 +++ distinfo 18 Apr 2023 04:18:29 -0000 @@ -1,2 +1,2 @@ -SHA256 (rgbds-0.4.2.tar.gz) = C6xG8NPPq/hoPGIUW58BpgfHAyle8peKPlSPEG9Q+sE= -SIZE (rgbds-0.4.2.tar.gz) = 208023 +SHA256 (rgbds-0.6.1.tar.gz) = hyAYUJxsvC2elHoabVCf2dxWoBCCf2CMX0+kbeL6GGo= +SIZE (rgbds-0.6.1.tar.gz) = 8040703 Index: patches/patch-Makefile =================================================================== RCS file: patches/patch-Makefile diff -N patches/patch-Makefile --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ patches/patch-Makefile 18 Apr 2023 04:18:29 -0000 @@ -0,0 +1,20 @@ +workaround for vasprintf bug in openbsd headers when +POSIX_C_SOURCE=200809L is defined + +see: +https://github.com/gbdev/rgbds/issues/1111 +https://marc.info/?l=openbsd-tech&m=161833545600505&w=2 +https://marc.info/?l=openbsd-bugs&m=157758838031146&w=2 + +Index: Makefile +--- Makefile.orig ++++ Makefile +@@ -42,7 +42,7 @@ CXXFLAGS ?= -O3 -flto -DNDEBUG + REALCFLAGS := ${CFLAGS} ${WARNFLAGS} -std=gnu11 -I include \ + -D_POSIX_C_SOURCE=200809L -D_ISOC11_SOURCE + REALCXXFLAGS := ${CXXFLAGS} ${WARNFLAGS} -std=c++17 -I include \ +- -D_POSIX_C_SOURCE=200809L -fno-exceptions -fno-rtti ++ -fno-exceptions -fno-rtti + # Overridable LDFLAGS + LDFLAGS ?= + # Non-overridable LDFLAGS Index: patches/patch-src_asm_main_c =================================================================== RCS file: /cvs/ports/devel/rgbds/patches/patch-src_asm_main_c,v retrieving revision 1.6 diff -u -p -u -p -r1.6 patch-src_asm_main_c --- patches/patch-src_asm_main_c 11 Mar 2022 18:53:10 -0000 1.6 +++ patches/patch-src_asm_main_c 18 Apr 2023 04:18:29 -0000 @@ -1,22 +1,21 @@ Index: src/asm/main.c --- src/asm/main.c.orig +++ src/asm/main.c -@@ -34,6 +34,8 @@ - #include "helpers.h" - #include "version.h" +@@ -49,6 +49,8 @@ + char const *__asan_default_options(void) { return "detect_leaks=0"; } + #endif +int pledge(const char *, const char *); + // Old Bison versions (confirmed for 2.3) do not forward-declare `yyparse` in the generated header // Unfortunately, macOS still ships 2.3, which is from 2008... int yyparse(void); -@@ -307,6 +309,9 @@ int main(int argc, char *argv[]) - cldefines = malloc(cldefines_bufsize); - if (!cldefines) - fatalerror("No memory for command line defines\n"); -+ +@@ -148,6 +150,8 @@ static void print_usage(void) + + int main(int argc, char *argv[]) + { + if (pledge("stdio rpath wpath cpath", NULL) == -1) + fatalerror("pledge"); + time_t now = time(NULL); + char const *sourceDateEpoch = getenv("SOURCE_DATE_EPOCH"); - #if defined(YYDEBUG) && YYDEBUG - yydebug = 1; Index: patches/patch-src_fix_main_c =================================================================== RCS file: /cvs/ports/devel/rgbds/patches/patch-src_fix_main_c,v retrieving revision 1.3 diff -u -p -u -p -r1.3 patch-src_fix_main_c --- patches/patch-src_fix_main_c 11 Mar 2022 18:53:10 -0000 1.3 +++ patches/patch-src_fix_main_c 18 Apr 2023 04:18:29 -0000 @@ -1,22 +1,30 @@ Index: src/fix/main.c --- src/fix/main.c.orig +++ src/fix/main.c -@@ -49,6 +49,8 @@ static struct option const longopts[] = { +@@ -21,6 +21,7 @@ + + #include "extern/getopt.h" + ++#include "error.h" + #include "helpers.h" + #include "platform.h" + #include "version.h" +@@ -62,6 +63,8 @@ static struct option const longopts[] = { { NULL, no_argument, NULL, 0 } }; +int pledge(const char *, const char *); + - static void print_usage(void) + static void printUsage(void) { fputs( -@@ -107,6 +109,9 @@ int main(int argc, char *argv[]) - int ramsize = 0; /* RAM size ID */ - int version = 0; /* mask ROM version number */ - int padvalue = 0; /* to pad the rom with if it changes size */ +@@ -1221,6 +1224,9 @@ int main(int argc, char *argv[]) + { + nbErrors = 0; + int ch; + + if (pledge("stdio rpath wpath cpath", NULL) == -1) -+ errx(1, "pledge"); ++ err("pledge"); - while ((ch = musl_getopt_long_only(argc, argv, optstring, longopts, - NULL)) != -1) { + while ((ch = musl_getopt_long_only(argc, argv, optstring, longopts, NULL)) != -1) { + switch (ch) { Index: patches/patch-src_gfx_main_c =================================================================== RCS file: patches/patch-src_gfx_main_c diff -N patches/patch-src_gfx_main_c --- patches/patch-src_gfx_main_c 11 Mar 2022 18:53:10 -0000 1.5 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,22 +0,0 @@ -Index: src/gfx/main.c ---- src/gfx/main.c.orig -+++ src/gfx/main.c -@@ -52,6 +52,8 @@ static struct option const longopts[] = { - { NULL, no_argument, NULL, 0 } - }; - -+int pledge(const char *, const char *); -+ - static void print_usage(void) - { - fputs( -@@ -81,6 +83,9 @@ int main(int argc, char *argv[]) - struct Mapfile tilemap = {0}; - struct Mapfile attrmap = {0}; - char *ext; -+ -+ if (pledge("stdio rpath wpath cpath", NULL) == -1) -+ errx(1, "pledge"); - - opts.tilemapfile = ""; - opts.attrmapfile = ""; Index: patches/patch-src_gfx_main_cpp =================================================================== RCS file: patches/patch-src_gfx_main_cpp diff -N patches/patch-src_gfx_main_cpp --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ patches/patch-src_gfx_main_cpp 18 Apr 2023 04:18:29 -0000 @@ -0,0 +1,24 @@ +Index: src/gfx/main.cpp +--- src/gfx/main.cpp.orig ++++ src/gfx/main.cpp +@@ -138,6 +138,8 @@ static struct option const longopts[] = { + {NULL, no_argument, NULL, 0 } + }; + ++int pledge(const char *, const char *); ++ + static void printUsage(void) { + fputs("Usage: rgbgfx [-r stride] [-CmuVZ] [-v [-v ...]] [-a <attr_map> | -A]\n" + " [-b <base_ids>] [-c <colors>] [-d <depth>] [-L <slice>] [-N <nb_tiles>]\n" +@@ -581,6 +583,11 @@ static char *parseArgv(int argc, char **argv, bool &au + + int main(int argc, char *argv[]) { + bool autoAttrmap = false, autoTilemap = false, autoPalettes = false, autoPalmap = false; ++ ++ if (pledge("stdio rpath wpath cpath", NULL) == -1) { ++ fputs("pledge", stderr); ++ exit(1); ++ } + + struct AtFileStackEntry { + int parentInd; // Saved offset into parent argv Index: patches/patch-src_link_main_c =================================================================== RCS file: /cvs/ports/devel/rgbds/patches/patch-src_link_main_c,v retrieving revision 1.4 diff -u -p -u -p -r1.4 patch-src_link_main_c --- patches/patch-src_link_main_c 11 Mar 2022 18:53:10 -0000 1.4 +++ patches/patch-src_link_main_c 18 Apr 2023 04:18:29 -0000 @@ -1,22 +1,22 @@ Index: src/link/main.c --- src/link/main.c.orig +++ src/link/main.c -@@ -144,6 +144,8 @@ FILE *openFile(char const *fileName, char const *mode) - /* Short options */ - static char const *optstring = "dl:m:n:O:o:p:s:tVvwx"; +@@ -167,6 +167,8 @@ FILE *openFile(char const *fileName, char const *mode) + // Short options + static const char *optstring = "dl:m:Mn:O:o:p:S:s:tVvWwx"; +int pledge(const char *, const char *); + /* * Equivalent long options * Please keep in the same order as short opts -@@ -207,6 +209,9 @@ int main(int argc, char *argv[]) +@@ -359,6 +361,9 @@ int main(int argc, char *argv[]) int optionChar; - char *endptr; /* For error checking with `strtol` */ - unsigned long value; /* For storing `strtoul`'s return value */ + char *endptr; // For error checking with `strtoul` + unsigned long value; // For storing `strtoul`'s return value + + if (pledge("stdio rpath wpath cpath", NULL) == -1) -+ errx(1, "pledge"); ++ err("pledge"); - /* Parse options */ + // Parse options while ((optionChar = musl_getopt_long_only(argc, argv, optstring,