[packages/flex] - cleanup; m4-quotes issue is fixed at last

qboosh qboosh at pld-linux.org
Sun Dec 18 17:37:12 CET 2016


commit 128b96085f5c626689a83766a76d6e59c724b946
Author: Jakub Bogusz <qboosh at pld-linux.org>
Date:   Sun Dec 18 17:37:55 2016 +0100

    - cleanup; m4-quotes issue is fixed at last

 flex-m4-quotes.diff | 502 ----------------------------------------------------
 flex.spec           |  15 +-
 2 files changed, 6 insertions(+), 511 deletions(-)
---
diff --git a/flex.spec b/flex.spec
index 46edd63..077b21d 100644
--- a/flex.spec
+++ b/flex.spec
@@ -1,5 +1,3 @@
-# NOTE: 2.5.35+ can't deal with "[[" "]]" strings in sources, needs workarounds like space separation
-#	(or non-trivial update of m4-quotes patch)
 # NOTE on shared libfl:
 #	It exports two functions, yywrap() and main();
 #	- because of the latter, unnecessary linking with shared -lfl would harm,
@@ -20,17 +18,17 @@ Version:	2.6.2
 Release:	1
 License:	BSD-like
 Group:		Development/Tools
+#Source0Download: https://github.com/westes/flex/releases
+# TODO: when upgrading, switch to
+#Source0:	https://github.com/westes/flex/releases/download/v%{version}/%{name}-%{version}.tar.lz
 Source0:	https://github.com/westes/flex/archive/v%{version}.tar.gz
 # Source0-md5:	acde3a89ef2b376aac94586fd5fda460
 Source1:	http://www.mif.pg.gda.pl/homepages/ankry/man-PLD/%{name}-non-english-man-pages.tar.bz2
 # Source1-md5:	fd79ee2834b290e74c626f0bbfc8942f
 Patch0:		%{name}-info.patch
 Patch1:		%{name}-pic.patch
-# patch #869230 (second version of bug #720983 fix - from flex BTS)
-# outdated as for 2.5.34+, but contains testcase
-Patch2:		%{name}-m4-quotes.diff
-Patch3:		%{name}-build.patch
-URL:		http://flex.sourceforge.net/
+Patch2:		%{name}-build.patch
+URL:		https://github.com/westes/flex
 BuildRequires:	autoconf >= 2.54
 BuildRequires:	automake >= 1:1.14.1
 BuildRequires:	bison
@@ -140,8 +138,7 @@ Przykłady dla fleksa.
 %setup -q
 %patch0 -p1
 %patch1 -p1
-#%patch2 -p1
-%patch3 -p1
+%patch2 -p1
 
 # force regeneration (just in case make didn't want to)
 %{__rm} -f src/skel.c
diff --git a/flex-m4-quotes.diff b/flex-m4-quotes.diff
deleted file mode 100644
index 687005c..0000000
--- a/flex-m4-quotes.diff
+++ /dev/null
@@ -1,502 +0,0 @@
-diff -urN -X ./diff-exclude flex-2.5.31/flex.skl flex/flex.skl
---- flex-2.5.31/flex.skl	2003-04-01 04:51:38.000000000 +0300
-+++ flex/flex.skl	2004-01-02 12:22:33.000000000 +0200
-@@ -27,6 +27,13 @@
- %# Macros for runtime processing stage.
- m4_changecom
- m4_changequote
-+
-+%# Support for m4 quote escaping
-+m4_changequote({, })
-+m4_define( {m4_userquote_start}, {m4_changequote(<, >)[[m4_changequote([[, ]])})
-+m4_define( {m4_userquote_end}, {m4_changequote(<, >)]]m4_changequote([[, ]])})
-+
-+%# Setup quoting
- m4_changequote([[, ]])
- 
- %# 
-diff -urN -X ./diff-exclude flex-2.5.31/flexdef.h flex/flexdef.h
---- flex-2.5.31/flexdef.h	2003-04-01 04:51:38.000000000 +0300
-+++ flex/flexdef.h	2004-01-02 12:14:49.000000000 +0200
-@@ -373,6 +373,7 @@
-  * yymore_really_used - whether to treat yymore() as really used, regardless
-  *   of what we think based on references to it in the user's actions.
-  * reject_really_used - same for REJECT
-+ * keep_m4 - dont quote m4 quotes "[[", "]]" - so user can use m4
-  */
- 
- extern int printstats, syntaxerror, eofseen, ddebug, trace, nowarn,
-@@ -387,7 +388,7 @@
- extern int yymore_used, reject, real_reject, continued_action, in_rule;
- 
- extern int yymore_really_used, reject_really_used;
--
-+extern int keep_m4;
- 
- /* Variables used in the flex input routines:
-  * datapos - characters on current output line
-diff -urN -X ./diff-exclude flex-2.5.31/main.c flex/main.c
---- flex-2.5.31/main.c	2003-04-01 04:51:38.000000000 +0300
-+++ flex/main.c	2004-01-02 12:13:07.000000000 +0200
-@@ -106,6 +106,7 @@
- bool   *rule_has_nl, *ccl_has_nl;
- int     nlch = '\n';
- bool    ansi_func_defs, ansi_func_protos;
-+int	keep_m4;
- 
- bool    tablesext, tablesverify, gentables;
- char   *tablesfilename=0,*tablesname=0;
-@@ -999,6 +1000,10 @@
- 		case OPT_DONOTHING:
- 			break;
- 
-+		case OPT_KEEP_M4:
-+			keep_m4 = true;
-+			break;
-+
- 		case OPT_COMPRESSION:
- 			if (!sawcmpflag) {
- 				useecs = false;
-diff -urN -X ./diff-exclude flex-2.5.31/options.c flex/options.c
---- flex-2.5.31/options.c	2003-03-25 18:39:08.000000000 +0200
-+++ flex/options.c	2004-01-02 12:16:07.000000000 +0200
-@@ -42,6 +42,10 @@
- /* The command-line options, passed to scanopt_init() */
- optspec_t flexopts[] = {
- 
-+	{"-4", OPT_KEEP_M4, 0}
-+	,
-+	{"--keep-m4", OPT_KEEP_M4, 0}
-+	,			/* dont try to quote m4 */
- 	{"-7", OPT_7BIT, 0}
- 	,
- 	{"--7bit", OPT_7BIT, 0}
-diff -urN -X ./diff-exclude flex-2.5.31/options.h flex/options.h
---- flex-2.5.31/options.h	2003-03-25 18:39:08.000000000 +0200
-+++ flex/options.h	2004-01-02 12:15:30.000000000 +0200
-@@ -61,6 +61,7 @@
- 	OPT_HEADER_FILE,
- 	OPT_HELP,
- 	OPT_INTERACTIVE,
-+	OPT_KEEP_M4,
- 	OPT_LEX_COMPAT,
- 	OPT_POSIX_COMPAT,
- 	OPT_MAIN,
-diff -urN -X ./diff-exclude flex-2.5.31/scan.l flex/scan.l
---- flex-2.5.31/scan.l	2003-04-01 04:51:38.000000000 +0300
-+++ flex/scan.l	2004-01-02 12:00:21.000000000 +0200
-@@ -88,6 +88,29 @@
- 	if ( getenv("POSIXLY_CORRECT") ) \
- 		posix_compat = true;
- 
-+/* Macros need to be clearly separated from surrounding text
-+   and this file needs to go through (unpatched) flex untouched. */
-+static char *userquote_start = "[" "[]" "]m4_" "userquote_start()";
-+static char *userquote_end = "[" "[]" "]m4_" "userquote_end()";
-+
-+#define QUOTE4_START \
-+	do { \
-+		if (keep_m4) { \
-+			ACTION_ECHO; \
-+		} else { \
-+			add_action(userquote_start); \
-+		} \
-+	} while (0)
-+
-+#define QUOTE4_END \
-+	do { \
-+		if (keep_m4) { \
-+			ACTION_ECHO; \
-+		} else { \
-+			add_action(userquote_end); \
-+		} \
-+	} while (0)
-+
- %}
- 
- %option caseless nodefault stack noyy_top_state
-@@ -95,7 +118,7 @@
- 
- %x SECT2 SECT2PROLOG SECT3 CODEBLOCK PICKUPDEF SC CARETISBOL NUM QUOTE
- %x FIRSTCCL CCL ACTION RECOVER COMMENT ACTION_STRING PERCENT_BRACE_ACTION
--%x OPTION LINEDIR CODEBLOCK_MATCH_BRACE
-+%x OPTION LINEDIR CODEBLOCK_MATCH_BRACE PROLOGLINE
- 
- WS		[[:blank:]]+
- OPTWS		[[:blank:]]*
-@@ -194,8 +217,11 @@
- <COMMENT>{
- 	"*/"		ACTION_ECHO; yy_pop_state();
- 	"*"		ACTION_ECHO;
--	[^*\n]+		ACTION_ECHO;
--	[^*\n]*{NL}	++linenum; ACTION_ECHO;
-+	[\[\]]		ACTION_ECHO;
-+	[^*\[\]\n]+	ACTION_ECHO;
-+	[^*\[\]\n]*{NL}	++linenum; ACTION_ECHO;
-+	\[\[		QUOTE4_START;
-+	\]\]		QUOTE4_END;
- }
- 
- <LINEDIR>{
-@@ -213,7 +239,11 @@
- <CODEBLOCK>{
- 	^"%}".*{NL}	++linenum; BEGIN(INITIAL);
- 
--	{NAME}|{NOT_NAME}|.	ACTION_ECHO;
-+	\[\[		QUOTE4_START;
-+	\]\]		QUOTE4_END;
-+
-+	[^\n\]\[]+	ACTION_ECHO;
-+	[\]\[]		ACTION_ECHO;
- 
- 	{NL}		{
- 			++linenum;
-@@ -242,10 +272,25 @@
-                 buf_strnappend(&top_buf, yytext, yyleng);
-             }
- 
--    [^{}\r\n]+  {
-+    [^{}\[\]\r\n]+  {
-                 buf_strnappend(&top_buf, yytext, yyleng);
-                 }
- 
-+    [\]\[]	buf_strnappend(&top_buf, yytext, yyleng);
-+
-+    \[\[    {
-+            if (keep_m4)
-+		buf_strnappend(&top_buf, yytext, yyleng);
-+	    else
-+		buf_strappend(&top_buf, userquote_start);
-+	    }
-+    \]\]    {
-+            if (keep_m4)
-+		buf_strnappend(&top_buf, yytext, yyleng);
-+	    else
-+		buf_strappend(&top_buf, userquote_end);
-+	    }
-+
-     <<EOF>>     {
-                 linenum = brace_start_line;
-                 synerr(_("Unmatched '{'"));
-@@ -424,33 +469,48 @@
- 
- 
- <SECT2PROLOG>{
--	^"%{".*	++bracelevel; yyless( 2 );	/* eat only %{ */
--	^"%}".*	--bracelevel; yyless( 2 );	/* eat only %} */
--
--	^{WS}.*	ACTION_ECHO;	/* indented code in prolog */
-+	^"%{".*		++bracelevel; yyless( 2 );	/* eat only %{ */
-+	^"%}".*		--bracelevel; yyless( 2 );	/* eat only %} */
- 
-+	^{WS}.*		{	/* indented code in prolog */
-+			yyless(0);
-+			BEGIN(PROLOGLINE);
-+			}
- 	^{NOT_WS}.*	{	/* non-indented code */
-+			yyless( 0 );	/* put it all back */
- 			if ( bracelevel <= 0 )
- 				{ /* not in %{ ... %} */
--				yyless( 0 );	/* put it all back */
- 				yy_set_bol( 1 );
- 				mark_prolog();
- 				BEGIN(SECT2);
- 				}
- 			else
--				ACTION_ECHO;
-+				BEGIN(PROLOGLINE);
- 			}
- 
--	.*		ACTION_ECHO;
--	{NL}	++linenum; ACTION_ECHO;
-+	.*		yyless(0); BEGIN(PROLOGLINE);
- 
--	<<EOF>>		{
--			mark_prolog();
--			sectnum = 0;
--			yyterminate(); /* to stop the parser */
-+	{NL}		++linenum; ACTION_ECHO;
-+}
-+
-+<PROLOGLINE>{
-+	[^\]\[\n\r]*	ACTION_ECHO;
-+	\[\[		QUOTE4_START;
-+	\]\]		QUOTE4_END;
-+	[\]\[]		ACTION_ECHO;
-+	{NL}		{
-+				++linenum;
-+				ACTION_ECHO;
-+				BEGIN(SECT2PROLOG);
- 			}
- }
- 
-+<PROLOGLINE,SECT2PROLOG><<EOF>>	{
-+				mark_prolog();
-+				sectnum = 0;
-+				yyterminate();
-+				}
-+
- <SECT2>{
- 	^{OPTWS}{NL}	++linenum; /* allow blank lines in section 2 */
- 
-@@ -768,10 +828,15 @@
- <ACTION>{
- 	"{"		ACTION_ECHO; ++bracelevel;
- 	"}"		ACTION_ECHO; --bracelevel;
--	[^[:alpha:]_{}"'/\n]+	ACTION_ECHO;
-+	[^[:alpha:]_{}\[\]"'/\n]+	ACTION_ECHO;
- 	{NAME}		ACTION_ECHO;
- 	"'"([^'\\\n]|\\.)*"'"	ACTION_ECHO; /* character constant */
- 	\"		ACTION_ECHO; BEGIN(ACTION_STRING);
-+	
-+	\[\[		QUOTE4_START;
-+	\]\]		QUOTE4_END;
-+	[\]\[]		ACTION_ECHO;
-+	
- 	{NL}		{
- 			++linenum;
- 			ACTION_ECHO;
-@@ -788,7 +853,10 @@
- }
- 
- <ACTION_STRING>{
--	[^"\\\n]+	ACTION_ECHO;
-+	[^"\]\[\\\n]+	ACTION_ECHO;
-+	\[\[		QUOTE4_START;
-+	\]\]		QUOTE4_END;
-+	[\]\[]		ACTION_ECHO;
- 	\\.		ACTION_ECHO;
- 	{NL}		++linenum; ACTION_ECHO; BEGIN(ACTION);
- 	\"		ACTION_ECHO; BEGIN(ACTION);
-@@ -812,7 +880,21 @@
- 
- 
- <SECT3>{
--	.*(\n?)		ECHO;
-+	[^\]\[\n\r]*({NL})?	ECHO;
-+
-+	\[\[		if (keep_m4) {
-+				ECHO;
-+			} else {
-+				fputs(userquote_start, yyout);
-+			}
-+	\]\]		if (keep_m4) {
-+				ECHO;
-+			} else {
-+				fputs(userquote_end, yyout);
-+			}
-+
-+	[\]\[]		ECHO;
-+
- 	<<EOF>>		sectnum = 0; yyterminate();
- }
- 
-diff -urN -X ./diff-exclude flex-2.5.31/tests/Makefile.am flex/tests/Makefile.am
---- flex-2.5.31/tests/Makefile.am	2003-03-27 20:02:59.000000000 +0200
-+++ flex/tests/Makefile.am	2004-01-02 11:48:17.000000000 +0200
-@@ -40,6 +40,7 @@
- 	test-c++-basic \
- 	test-posixly-correct \
- 	test-posix \
-+	test-m4-quotes \
- 	test-mem-r \
- 	test-mem-nr \
- 	test-debug-nr \
-@@ -81,6 +82,7 @@
- 	test-c++-basic \
- 	test-posixly-correct \
- 	test-posix \
-+	test-m4-quotes \
- 	test-mem-r \
- 	test-mem-nr \
- 	test-debug-nr \
-diff -urN -X ./diff-exclude flex-2.5.31/tests/test-m4-quotes/Makefile.am flex/tests/test-m4-quotes/Makefile.am
---- flex-2.5.31/tests/test-m4-quotes/Makefile.am	1970-01-01 03:00:00.000000000 +0300
-+++ flex/tests/test-m4-quotes/Makefile.am	2004-01-02 11:49:06.000000000 +0200
-@@ -0,0 +1,44 @@
-+# This file is part of flex.
-+
-+# Redistribution and use in source and binary forms, with or without
-+# modification, are permitted provided that the following conditions
-+# are met:
-+
-+# 1. Redistributions of source code must retain the above copyright
-+#    notice, this list of conditions and the following disclaimer.
-+# 2. Redistributions in binary form must reproduce the above copyright
-+#    notice, this list of conditions and the following disclaimer in the
-+#    documentation and/or other materials provided with the distribution.
-+
-+# Neither the name of the University nor the names of its contributors
-+# may be used to endorse or promote products derived from this software
-+# without specific prior written permission.
-+
-+# THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
-+# IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
-+# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-+# PURPOSE.
-+
-+FLEX = $(top_builddir)/flex
-+
-+builddir = @builddir@
-+
-+EXTRA_DIST = scanner.l test.input
-+CLEANFILES = scanner.c scanner.h TEMPLATE OUTPUT $(OBJS)
-+OBJS = scanner.o
-+
-+AM_CPPFLAGS = -I$(srcdir) -I$(builddir) -I$(top_srcdir) -I$(top_builddir)
-+
-+testname = TEMPLATE
-+
-+scanner.c: $(srcdir)/scanner.l
-+	$(FLEX) $(LFLAGS) $<
-+
-+$(testname)$(EXEEXT): $(OBJS)
-+	$(CC) -o $@ $(LDFLAGS) $(OBJS) $(LOADLIBES)
-+
-+test: $(testname)$(EXEEXT)
-+	./$(testname)$(EXEEXT) < $(srcdir)/test.input
-+
-+.c.o:
-+	$(CC) -c -o $@ $(AM_CPPFLAGS) $(CPPFLAGS) $(CFLAGS) $<
-diff -urN -X ./diff-exclude flex-2.5.31/tests/test-m4-quotes/scanner.l flex/tests/test-m4-quotes/scanner.l
---- flex-2.5.31/tests/test-m4-quotes/scanner.l	1970-01-01 03:00:00.000000000 +0300
-+++ flex/tests/test-m4-quotes/scanner.l	2004-01-02 11:49:33.000000000 +0200
-@@ -0,0 +1,93 @@
-+/*
-+ * This file is part of flex.
-+ * 
-+ * Redistribution and use in source and binary forms, with or without
-+ * modification, are permitted provided that the following conditions
-+ * are met:
-+ * 
-+ * 1. Redistributions of source code must retain the above copyright
-+ *    notice, this list of conditions and the following disclaimer.
-+ * 2. Redistributions in binary form must reproduce the above copyright
-+ *    notice, this list of conditions and the following disclaimer in the
-+ *    documentation and/or other materials provided with the distribution.
-+ * 
-+ * Neither the name of the University nor the names of its contributors
-+ * may be used to endorse or promote products derived from this software
-+ * without specific prior written permission.
-+ * 
-+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
-+ * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
-+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-+ * PURPOSE.
-+ */
-+
-+/* [[ grep qtest scanner.c ]] */
-+
-+%{
-+
-+#include <stdio.h>
-+#include <stdlib.h>
-+#include "config.h"
-+
-+/* qtest: ]] */
-+
-+static int a[10];
-+static int b[10];
-+static char *p = "]]"; /* qtest */
-+
-+#define fx1(x) a[b[0]] /* qtest */
-+
-+static void xerror(char *msg);
-+
-+%}
-+
-+%option 8bit outfile="scanner.c" prefix="test"
-+%option nounput nomain noyywrap 
-+%option warn
-+
-+/* qtest: ]] [[ ]] */
-+
-+%%
-+
-+%{
-+	/* qtest [[ ]] */
-+	if (a[a[0]]) ; /* qtest */
-+	p = "[["; /* qtest */
-+%}
-+	if (a[a[0]]) ; /* qtest */
-+	p = "[["; /* qtest */
-+
-+[^a-e]* { }
-+a	if (a[a[0]]) ;  /* qtest */
-+b	{
-+		if (a[a[0]]) ;	/* qtest */
-+		p = "[[";	/* qtest */
-+	}
-+c	/* qtest: ]] [[ ]] */
-+	/* qtest: ]] [[ ]] */
-+d	if (strlen(p) != 2) xerror("qtest [[ ]]\n");
-+e	if (strcmp(p, "[[")) xerror("qtest\n");
-+
-+
-+%%
-+
-+/* qtest: ]] [[ ]] */
-+
-+int main(void);
-+
-+static void xerror(char *msg)
-+{
-+	fprintf(stderr, "error: %s\n", msg);
-+	exit(1);
-+}
-+
-+int
-+main ()
-+{
-+    yyin = stdin;
-+    yyout = stdout;
-+    yylex();
-+    if (a[a[0]]) ;  /* qtest */
-+    printf("TEST RETURNING OK.\n");
-+    return 0;
-+}
-diff -urN -X ./diff-exclude flex-2.5.31/tests/test-m4-quotes/test.input flex/tests/test-m4-quotes/test.input
---- flex-2.5.31/tests/test-m4-quotes/test.input	1970-01-01 03:00:00.000000000 +0300
-+++ flex/tests/test-m4-quotes/test.input	2004-01-02 11:49:49.000000000 +0200
-@@ -0,0 +1,7 @@
-+a
-+b
-+c
-+d
-+e
-+f
-+g
-diff -urN -X ./diff-exclude flex-2.5.31/tests/test-reject/Makefile.am flex/tests/test-reject/Makefile.am
---- flex-2.5.31/tests/test-reject/Makefile.am	2002-10-11 18:26:43.000000000 +0300
-+++ flex/tests/test-reject/Makefile.am	2003-12-28 04:56:02.000000000 +0200
-@@ -20,7 +20,7 @@
- # PURPOSE.
- 
- 
--FLEX = $(top_builddir)/flex
-+FLEX = $(top_builddir)/flex -4
- 
- EXTRA_DIST = scanner.l test.input
- CLEANFILES = scanner.c test-reject-* OUTPUT $(OBJS)
-diff -urN -X ./diff-exclude flex-2.5.31/tests/test-table-opts/Makefile.am flex/tests/test-table-opts/Makefile.am
---- flex-2.5.31/tests/test-table-opts/Makefile.am	2002-10-11 18:26:43.000000000 +0300
-+++ flex/tests/test-table-opts/Makefile.am	2003-12-28 04:54:00.000000000 +0200
-@@ -29,7 +29,7 @@
- # ------------------------------------------------
- 
- 
--FLEX = $(top_builddir)/flex
-+FLEX = $(top_builddir)/flex -4
- 
- testname  := test-table-opts
- allopts   := -Ca -Ce -Cf -CF -Cm -Cem -Cae -Caef -CaeF -Cam -Caem
---- flex-2.5.31/configure.in.orig	2004-07-19 21:19:47.640163000 +0000
-+++ flex-2.5.31/configure.in	2004-07-19 21:37:45.584485799 +0000
-@@ -101,6 +101,7 @@
- tests/test-include-by-buffer/Makefile
- tests/test-include-by-push/Makefile
- tests/test-include-by-reentrant/Makefile
-+tests/test-m4-quotes/Makefile
- tests/test-multiple-scanners-nr/Makefile
- tests/test-multiple-scanners-r/Makefile
- tests/test-noansi-nr/Makefile
================================================================

---- gitweb:

http://git.pld-linux.org/gitweb.cgi/packages/flex.git/commitdiff/128b96085f5c626689a83766a76d6e59c724b946



More information about the pld-cvs-commit mailing list