commit:     bee5b20ba22f21c8b3ae0fd0d6282717456605c3
Author:     Sam James <sam <AT> gentoo <DOT> org>
AuthorDate: Sat Feb 11 23:45:17 2023 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Sun Feb 12 02:04:14 2023 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=bee5b20b

app-misc/delay: fix clang 16 (again)

We reverted the previous fix (19c56f45a25af6da76133b2e27beb40fd5ad78df) in
6c7fb619c8661e72230fe3669d6e238288132430 as it led to a segfault at runtime, but
not for the reason I expected.

Our clang16 patch forces regeneration of the yacc files and going from
an ancient bison to a modern one makes 'delay until now + 5 minutes'
segfault. It happens even if the patch is empty, as the regeneration
is the breaking part. So, just force byacc, as it seems to work, and
this is a package with no active upstream.

Closes: https://bugs.gentoo.org/881319
See: 19c56f45a25af6da76133b2e27beb40fd5ad78df
See: 6c7fb619c8661e72230fe3669d6e238288132430
Signed-off-by: Sam James <sam <AT> gentoo.org>

 app-misc/delay/delay-1.6-r6.ebuild           | 43 ++++++++++++++++++++++++++++
 app-misc/delay/files/delay-1.6-clang16.patch | 12 ++++++++
 2 files changed, 55 insertions(+)

diff --git a/app-misc/delay/delay-1.6-r6.ebuild 
b/app-misc/delay/delay-1.6-r6.ebuild
new file mode 100644
index 000000000000..056c0f45b6a2
--- /dev/null
+++ b/app-misc/delay/delay-1.6-r6.ebuild
@@ -0,0 +1,43 @@
+# Copyright 1999-2023 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit autotools
+
+DESCRIPTION="Sleeplike program that counts down the number of seconds 
specified"
+HOMEPAGE="https://onegeek.org/~tom/software/delay/";
+SRC_URI="https://onegeek.org/~tom/software/delay/dl/${P}.tar.gz";
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~mips ~ppc ~ppc64 ~riscv ~s390 
~sparc ~x86 ~amd64-linux ~x86-linux ~ppc-macos"
+
+RDEPEND="sys-libs/ncurses:="
+DEPEND="${RDEPEND}"
+BDEPEND="
+       dev-util/byacc
+       virtual/pkgconfig
+"
+
+PATCHES=(
+       "${FILESDIR}"/${P}-headers.patch
+       "${FILESDIR}"/${P}-tinfo.patch
+       "${FILESDIR}"/${P}-clang16.patch
+)
+
+src_prepare() {
+       default
+       eautoreconf
+}
+
+src_configure() {
+       # Our clang16 patch forces regeneration of the yacc files and going from
+       # an ancient bison to a modern one makes 'delay until now + 5 minutes'
+       # segfault. It happens even if the patch is empty, as the regeneration
+       # is the breaking part. So, just force byacc, as it seems to work, and
+       # this is a package with no active upstream.
+       export YACC=byacc
+
+       econf
+}

diff --git a/app-misc/delay/files/delay-1.6-clang16.patch 
b/app-misc/delay/files/delay-1.6-clang16.patch
new file mode 100644
index 000000000000..5deec4ea5194
--- /dev/null
+++ b/app-misc/delay/files/delay-1.6-clang16.patch
@@ -0,0 +1,12 @@
+--- a/parsetimey.y
++++ b/parsetimey.y
+@@ -7,6 +7,9 @@
+ 
+ #define YYDEBUG 1
+ 
++int yyerror(char *s);
++int yylex(void);
++
+ time_t currtime;
+ struct tm exectm;
+ static int isgmt;

Reply via email to