Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 25 Aug 2021 10:58:00 GMT
From:      Alexey Dokuchaev <danfe@FreeBSD.org>
To:        ports-committers@FreeBSD.org, dev-commits-ports-all@FreeBSD.org, dev-commits-ports-main@FreeBSD.org
Subject:   git: abc8ea44a217 - main - lang/gforth: attempt to unbreak the port on i386, armv6, and armv7
Message-ID:  <202108251058.17PAw0nD051598@gitrepo.freebsd.org>

next in thread | raw e-mail | index | archive | help
The branch main has been updated by danfe:

URL: https://cgit.FreeBSD.org/ports/commit/?id=abc8ea44a2171da6cd0f97b44b854e1428d37535

commit abc8ea44a2171da6cd0f97b44b854e1428d37535
Author:     Alexey Dokuchaev <danfe@FreeBSD.org>
AuthorDate: 2021-08-25 10:56:26 +0000
Commit:     Alexey Dokuchaev <danfe@FreeBSD.org>
CommitDate: 2021-08-25 10:56:54 +0000

    lang/gforth: attempt to unbreak the port on i386, armv6, and armv7
    
    - Partially apply upstream commit 9f35279358 to unbreak the build on i386
    - With a recent update of devel/libffcall in 58a8a0aa37a8, the port is no
      longer ignored on armv6 and armv7.  Amend the word size check so it can
      be built on these architectures
    
    PR:     258003
---
 lang/gforth/Makefile                  |  5 ++---
 lang/gforth/files/patch-engine_main.c | 29 +++++++++++++++++++++++++++++
 2 files changed, 31 insertions(+), 3 deletions(-)

diff --git a/lang/gforth/Makefile b/lang/gforth/Makefile
index 2b2f188b06d8..360cbcf671da 100644
--- a/lang/gforth/Makefile
+++ b/lang/gforth/Makefile
@@ -10,10 +10,9 @@ MASTER_SITES=	http://www.complang.tuwien.ac.at/forth/gforth/ \
 MAINTAINER=	danfe@FreeBSD.org
 COMMENT=	Fast and portable Forth system
 
-LICENSE=	GPLv3
+LICENSE=	GPLv3+
 LICENSE_FILE=	${WRKSRC}/COPYING
 
-BROKEN_i386=	Assertion failed: (pi->restlength >=0), function check_prims, file ./main.c, line 1049.
 BROKEN_powerpc64=	fails to package: Unable to access file usr/local/share/gforth/0.7.3/kernl64l.fi:No such file or directory
 
 LIB_DEPENDS=	libavcall.so:devel/libffcall \
@@ -45,7 +44,7 @@ OPTIONS_DEFINE=	DOCS
 
 .include <bsd.port.pre.mk>
 
-.if ${ARCH} == i386 || ${ARCH} == powerpc
+.if ${ARCH} == i386 || ${ARCH} == powerpc || ${ARCH} == armv6 || ${ARCH} == armv7
 WORDSIZE=32
 .else
 WORDSIZE=64
diff --git a/lang/gforth/files/patch-engine_main.c b/lang/gforth/files/patch-engine_main.c
new file mode 100644
index 000000000000..4767de3e2451
--- /dev/null
+++ b/lang/gforth/files/patch-engine_main.c
@@ -0,0 +1,29 @@
+--- engine/main.c.orig	2013-10-11 21:31:28 UTC
++++ engine/main.c
+@@ -976,7 +976,8 @@ static void check_prims(Label symbols1[])
+   goto_len = goto_p[1]-goto_p[0];
+   debugp(stderr, "goto * %p %p len=%ld\n",
+ 	 goto_p[0],symbols2[goto_p-symbols1],(long)goto_len);
+-  if (memcmp(goto_p[0],symbols2[goto_p-symbols1],goto_len)!=0) { /* unequal */
++  if ((goto_len < 0) ||
++      memcmp(goto_p[0],symbols2[goto_p-symbols1],goto_len)!=0) { /* unequal */
+     no_dynamic=1;
+     debugp(stderr,"  not relocatable, disabling dynamic code generation\n");
+     init_ss_cost();
+@@ -1045,8 +1046,14 @@ static void check_prims(Label symbols1[])
+       nonrelocs++;
+       continue;
+     }
+-    assert(pi->length>=0);
+-    assert(pi->restlength >=0);
++    if((pi->length<0) || (pi->restlength<0)) {
++      pi->length = endlabel-symbols1[i];
++      pi->restlength = 0;
++#ifndef BURG_FORMAT
++      debugp(stderr,"\n   adjust restlen: len/restlen < 0, %d/%d",
++	     pi->length, pi->restlength);
++#endif
++    };
+     while (j<(pi->length+pi->restlength)) {
+       if (s1[j]==s3[j]) {
+ 	if (s1[j] != s2[j]) {



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202108251058.17PAw0nD051598>