From: Jeremie Courreges-Anglas Subject: Re: Fix algol68g on non-x86 To: Brian Callahan Cc: ports@openbsd.org Date: Tue, 4 Jun 2024 14:26:07 +0200 On Tue, Jun 04, 2024 at 11:25:49AM +0000, Brian Callahan wrote: > On 6/4/2024 7:16 AM, Jeremie Courreges-Anglas wrote: > > > > The diff at the end lets me build an algol68g package on riscv64 - and > > virtually any non-x86 architecture. make package/test passes on > > riscv64. > > > > However, configure.ac only recognizes OpenBSD/amd64 as tested, and > > thus builds a minimal version on other archs. It doesn't make much > > sense to me (all our platforms have IEEE754 FP now) and I'd rather > > build the same package everywhere. But that would require either > > patching configure or using autoreconf. Addressing this could be > > delayed until it goes upstream. Thoughts? > > > > |Index: patches/patch-configure_ac > > |=================================================================== > > |RCS file: patches/patch-configure_ac > > |diff -N patches/patch-configure_ac > > |--- /dev/null 1 Jan 1970 00:00:00 -0000 > > |+++ patches/patch-configure_ac 4 Jun 2024 07:28:27 -0000 > > |@@ -0,0 +1,15 @@ > > |+All our architectures have IEEE754 floating point, build the same set of > > |+features on all of them. > > |+ > > |+Index: configure.ac > > |+--- configure.ac.orig > > |++++ configure.ac > > |+@@ -99,7 +99,7 @@ case "$host" in > > |+ # OpenBSD. > > |+ # > > |+ > > |+-*86-*-openbsd* | *86_64-*-openbsd*) > > |++*-openbsd*) > > |+ AC_DEFINE(BUILD_BSD, 1, [Define this if OpenBSD was detected]) > > |+ AC_DEFINE(HAVE_IEEE_754, 1, [Define this if IEEE_754 compliant]) > > |+ bsd_include_dirs=yes > > > > Now fo the minimal fix. The src/a68g/parser-scanner.c patch fixes the > > cause of the build failure spotted on riscv64 and arm64[0]: when > > building a minimal package, ncurses isn't used and thus FALSE from > > ncurses.h isn't available. Just use A68_FALSE as was probably > > intended. > > > > Bumping REVISION is cheap but probably not required. ok for the > > the diff below, or also for the full proposal? > > > > Brian, do you wish to take care of upstreaming these fixes? Else I > > can handle it as time permits. > > > > Yes ok for the full proposal. And yes, I will upstream. Upstream is > quite responsive. ok, cool. For reference here's the full proposal I'm going to commit. I'm patching only configure, since using autoreconf would require some m4 macros from gsl, which is disabled. Technically the .c patch shouldn't be needed now that all archs build the same set of features, but it's still The Right Thing for upstream and I haven't tested dropping it. Index: Makefile =================================================================== RCS file: /cvs/ports/lang/algol68g/Makefile,v diff -u -p -r1.16 Makefile --- Makefile 21 May 2024 14:48:06 -0000 1.16 +++ Makefile 4 Jun 2024 12:21:42 -0000 @@ -1,5 +1,6 @@ COMMENT = Algol 68 Genie compiler-interpreter DISTNAME = algol68g-3.5.2 +REVISION = 0 CATEGORIES = lang HOMEPAGE = https://jmvdveer.home.xs4all.nl/algol.html Index: patches/patch-configure =================================================================== RCS file: patches/patch-configure diff -N patches/patch-configure --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ patches/patch-configure 4 Jun 2024 12:21:42 -0000 @@ -0,0 +1,15 @@ +All our architectures have IEEE754 floating point, build the same set of +features on all of them. + +Index: configure +--- configure.orig ++++ configure +@@ -2960,7 +2960,7 @@ printf "%s\n" "netbsd" >&6; } + # OpenBSD. + # + +-*86-*-openbsd* | *86_64-*-openbsd*) ++*-openbsd*) + + printf "%s\n" "#define BUILD_BSD 1" >>confdefs.h + Index: patches/patch-src_a68g_parser-scanner_c =================================================================== RCS file: patches/patch-src_a68g_parser-scanner_c diff -N patches/patch-src_a68g_parser-scanner_c --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ patches/patch-src_a68g_parser-scanner_c 4 Jun 2024 12:21:42 -0000 @@ -0,0 +1,14 @@ +Don't depend on curses defining FALSE. + +Index: src/a68g/parser-scanner.c +--- src/a68g/parser-scanner.c.orig ++++ src/a68g/parser-scanner.c +@@ -856,7 +856,7 @@ char *pragment (int type, LINE_T ** ref_l, char **ref_ + ADD_ONE_CHAR (c); + c = next_char (ref_l, ref_c, A68_FALSE); + } +- scan_next = FALSE; ++ scan_next = A68_FALSE; + } else if (IS_PRINT (c) || IS_SPACE (c)) { + ADD_ONE_CHAR (c); + } -- jca