pkgsrc-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[pkgsrc/trunk]: pkgsrc mk/subst.mk: substitute embedded newlines, escape dots...



details:   https://anonhg.NetBSD.org/pkgsrc/rev/2506431a85e1
branches:  trunk
changeset: 331376:2506431a85e1
user:      rillig <rillig%pkgsrc.org@localhost>
date:      Sun Mar 17 12:01:14 2019 +0000

description:
mk/subst.mk: substitute embedded newlines, escape dots in variable names

diffstat:

 mk/subst.mk                  |   4 ++--
 regress/subst/Makefile       |   9 +++++----
 regress/subst/files/expected |  10 ++++++----
 3 files changed, 13 insertions(+), 10 deletions(-)

diffs (79 lines):

diff -r f3564a195378 -r 2506431a85e1 mk/subst.mk
--- a/mk/subst.mk       Sun Mar 17 11:28:13 2019 +0000
+++ b/mk/subst.mk       Sun Mar 17 12:01:14 2019 +0000
@@ -1,4 +1,4 @@
-# $NetBSD: subst.mk,v 1.58 2018/11/30 18:38:19 rillig Exp $
+# $NetBSD: subst.mk,v 1.59 2019/03/17 12:01:14 rillig Exp $
 #
 # This Makefile fragment implements a general text replacement facility.
 # Package makefiles define a ``class'', for each of which a particular
@@ -84,7 +84,7 @@
 SUBST_VARS.${_class_}?=                # none
 SUBST_MESSAGE.${_class_}?=     Substituting "${_class_}" in ${SUBST_FILES.${_class_}}
 .  for v in ${SUBST_VARS.${_class_}}
-SUBST_FILTER_CMD.${_class_}+=  -e s,@${v}@,${${v}:S|\\|\\\\|gW:S|,|\\,|gW:S|&|\\\&|gW:Q},g
+SUBST_FILTER_CMD.${_class_}+=  -e s,@${v:C|[^A-Za-z0-9_]|\\\\&|gW:Q}@,${${v}:S|\\|\\\\|gW:S|,|\\,|gW:S|&|\\\&|gW:S|${.newline}|\\${.newline}|gW:Q},g
 .  endfor
 .  if !empty(SUBST_SHOW_DIFF.${_class_}:Uno:M[Yy][Ee][Ss])
 _SUBST_KEEP.${_class_}?=       ${DIFF} -u "$$file" "$$tmpfile" || true
diff -r f3564a195378 -r 2506431a85e1 regress/subst/Makefile
--- a/regress/subst/Makefile    Sun Mar 17 11:28:13 2019 +0000
+++ b/regress/subst/Makefile    Sun Mar 17 12:01:14 2019 +0000
@@ -1,4 +1,4 @@
-# $NetBSD: Makefile,v 1.5 2019/03/17 11:28:13 rillig Exp $
+# $NetBSD: Makefile,v 1.6 2019/03/17 12:01:14 rillig Exp $
 #
 
 DISTNAME=      subst-19.03
@@ -18,7 +18,8 @@
 SUBST_VARS.vars=       PLAIN DQUOT SQUOT DELIM PRINTABLE
 SUBST_VARS.vars+=      UNDEFINED
 SUBST_VARS.vars+=      BETWEEN_SPACE BETWEEN_TAB BETWEEN_NL
-SUBST_VARS.vars+=      BACKSLASHES VAR...... VAR.abcde
+SUBST_VARS.vars+=      BACKSLASHES
+SUBST_VARS.vars+=      VAR...... VAR.abcde VAR.<>
 
 PLAIN=         hello_world
 DQUOT=         "hello   world"
@@ -31,14 +32,14 @@
 # Ensure that leading and trailing whitespace is preserved.
 BETWEEN_SPACE= ${:U }between spaces${:U }
 BETWEEN_TAB=   ${:U    }between tabs${:U       }
-# TODO: currently fails; needs to be fixed in subst.mk
-#BETWEEN_NL=   ${.newline}between newlines${.newline}
+BETWEEN_NL=    ${.newline}between newlines${.newline}
 
 BACKSLASHES=   \" \, \\, \" \' \0\000 \x40 \089 \a \$$
 
 # Ensure that special regex characters may appear in variable names.
 VAR......=     dots
 VAR.abcde=     letters
+VAR.<>=                angle brackets
 
 do-extract:
        ${RUN} ${SED} -e /^\#/d -e /^$$/d ${FILESDIR}/expected \
diff -r f3564a195378 -r 2506431a85e1 regress/subst/files/expected
--- a/regress/subst/files/expected      Sun Mar 17 11:28:13 2019 +0000
+++ b/regress/subst/files/expected      Sun Mar 17 12:01:14 2019 +0000
@@ -1,4 +1,4 @@
-# $NetBSD: expected,v 1.1 2019/03/17 11:28:13 rillig Exp $
+# $NetBSD: expected,v 1.2 2019/03/17 12:01:14 rillig Exp $
 #
 # The expected output from the SUBST_VARS test.
 # Each substituted value is enclosed in <angle brackets> to clearly
@@ -14,10 +14,12 @@
 
 BETWEEN_SPACE: < between spaces >
 BETWEEN_TAB: < between tabs    >
-BETWEEN_NL: <>
+BETWEEN_NL: <
+between newlines
+>
 
 BACKSLASHES: <\" \, \\, \" \' \0\000 \x40 \089 \a \$>
 
 VAR......: <dots>
-# FIXME: must be <letters> instead of <dots>
-VAR.abcde: <dots>
+VAR.abcde: <letters>
+VAR.<>: <angle brackets>



Home | Main Index | Thread Index | Old Index