[ovs-dev] [PATCH] treewide: Get rid of "echo -n", and add a test to prevent regression.
Flavio Leitner
fbl at sysclose.org
Mon Oct 30 12:51:46 UTC 2017
On Fri, 27 Oct 2017 09:59:33 -0700
Ben Pfaff <blp at ovn.org> wrote:
> "echo -n" is not POSIX and has spotty support in shells.
>
> CC: Timothy Redaelli <tredaelli at redhat.com>
> CC: Flavio Leitner <fbl at sysclose.org>
> Signed-off-by: Ben Pfaff <blp at ovn.org>
> ---
> Makefile.am | 11 +++++++++++
> tests/automake.mk | 2 +-
> tests/ofp-print.at | 10 +++++-----
> tests/ofproto-dpif.at | 6 +++---
> tutorial/ovs-sandbox | 2 +-
> 5 files changed, 21 insertions(+), 10 deletions(-)
>
> diff --git a/Makefile.am b/Makefile.am
> index 31d6331792af..5ceb3822c976 100644
> --- a/Makefile.am
> +++ b/Makefile.am
> @@ -303,6 +303,17 @@ check-endian:
> fi
> .PHONY: check-endian
>
> +ALL_LOCAL += check-echo-n
> +check-echo-n:
> + @if test -e $(srcdir)/.git && (git --version) >/dev/null 2>&1 && \
> + git --no-pager grep -n 'echo'' -n' $(srcdir); \
> + then \
> + echo "See above for uses for \"echo"" -n\", which is non-POSIX"; \
> + echo "and does not work with all shells. Use \"printf\" instead."; \
> + exit 1; \
> + fi
> +.PHONY: check-echo-n
> +
> ALL_LOCAL += thread-safety-check
> thread-safety-check:
> @cd $(srcdir); \
> diff --git a/tests/automake.mk b/tests/automake.mk
> index 156b40f58d7c..198ba64e5cc2 100644
> --- a/tests/automake.mk
> +++ b/tests/automake.mk
> @@ -201,7 +201,7 @@ $(valgrind_wrappers): tests/valgrind-wrapper.in
> CLEANFILES += $(valgrind_wrappers)
> EXTRA_DIST += tests/valgrind-wrapper.in
>
> -VALGRIND = valgrind --log-file=valgrind.%p --leak-check=full \
> +VALGRIND = valgrind --log-file=valgrind.%p --leak-check=no \
> --suppressions=$(abs_top_srcdir)/tests/glibc.supp \
> --suppressions=$(abs_top_srcdir)/tests/openssl.supp --num-callers=20
> HELGRIND = valgrind --log-file=helgrind.%p --tool=helgrind \
> diff --git a/tests/ofp-print.at b/tests/ofp-print.at
The above change seems unrelated, otherwise the patch looks good to me.
fbl
> index 50083a34d556..17682aa73db2 100644
> --- a/tests/ofp-print.at
> +++ b/tests/ofp-print.at
> @@ -1656,26 +1656,26 @@ AT_KEYWORDS([ofp-print OFPT_STATS_REPLY])
> 00 00 00 07 00 00 00 00 00 0f 42 40 "
> tail="00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00"
>
> - echo -n "03 13 7f 90 00 00 00 02 00 03 00 00 00 00 00 00 "
> + printf "03 13 7f 90 00 00 00 02 00 03 00 00 00 00 00 00 "
>
> x=0
> printf "%02x $pad7" $x
> printf "%s$pad32" "classifier" | od -A n -t x1 -v -N 32 | tr '\n' ' '
> - echo -n "$mid 00 00 00 01 "
> - echo -n "00 00 00 00 00 01 23 76 00 00 00 00 00 01 9e 28 "
> + printf "$mid 00 00 00 01 "
> + printf "00 00 00 00 00 01 23 76 00 00 00 00 00 01 9e 28 "
>
> x=1
> while test $x -lt 254; do
> printf "%02x $pad7" $x
> printf "%s$pad32" "table$x" | od -A n -t x1 -v -N 32 | tr '\n' ' '
> - echo -n "$mid 00 00 00 00 $tail "
> + printf "$mid 00 00 00 00 $tail "
> x=`expr $x + 1`
> done
>
> x=254
> printf "%02x $pad7" $x
> printf "%s$pad32" "table$x" | od -A n -t x1 -v -N 32 | tr '\n' ' '
> - echo -n "$mid 00 00 00 02 $tail") > in
> + printf "$mid 00 00 00 02 $tail") > in
> AT_CHECK([ovs-ofctl ofp-print - < in], [0], [expout])
> AT_CLEANUP
>
> diff --git a/tests/ofproto-dpif.at b/tests/ofproto-dpif.at
> index c75a1acbf906..583907b9aa0d 100644
> --- a/tests/ofproto-dpif.at
> +++ b/tests/ofproto-dpif.at
> @@ -7333,7 +7333,7 @@ m4_define([OFPROTO_DPIF_GET_FLOW],
> set Open_vSwitch . other_config:max-idle=10000], [], [],
> [m4_if([$1], [], [], [--dummy-numa="0,0,0,0,1,1,1,1"])])
>
> - func=`echo -n "$1_" | cut -c 4-`
> + func=`printf '%s_' "$1" | cut -c 4-`
> add_${func}of_ports br0 1 2
>
> AT_CHECK([ovs-appctl netdev-dummy/receive p1 'in_port(1),eth(src=50:54:00:00:00:05,dst=50:54:00:00:00:07),eth_type(0x0800),ipv4(src=192.168.0.1,dst=192.168.0.2,proto=1,tos=0,ttl=64,frag=no),icmp(type=8,code=0)'])
> @@ -7665,7 +7665,7 @@ m4_define([OFPROTO_DPIF_MEGAFLOW_NORMAL],
> [AT_SETUP([ofproto-dpif megaflow - normal$1])
> OVS_VSWITCHD_START([], [], [], [m4_if([$1], [], [], [--dummy-numa="0,0,0,0,1,1,1,1"])])
> AT_CHECK([ovs-appctl vlog/set dpif:dbg dpif_netdev:dbg])
> - func=`echo -n "$1_" | cut -c 4-`
> + func=`printf '%s_' "$1" | cut -c 4-`
> add_${func}of_ports br0 1 2
> AT_CHECK([ovs-ofctl add-flow br0 action=normal])
> AT_CHECK([ovs-appctl netdev-dummy/receive p1 'in_port(1),eth(src=50:54:00:00:00:09,dst=50:54:00:00:00:0a),eth_type(0x0800),ipv4(src=10.0.0.2,dst=10.0.0.1,proto=1,tos=0,ttl=64,frag=no),icmp(type=8,code=0)'])
> @@ -8068,7 +8068,7 @@ m4_define([OFPROTO_DPIF_MEGAFLOW_DISABLED],
> [AT_SETUP([ofproto-dpif megaflow - disabled$1])
> OVS_VSWITCHD_START([], [], [], [m4_if([$1], [], [], [--dummy-numa="0,0,0,0,1,1,1,1"])])
> AT_CHECK([ovs-appctl vlog/set dpif:dbg dpif_netdev:dbg])
> - func=`echo -n "$1_" | cut -c 4-`
> + func=`printf '%s_' "$1" | cut -c 4-`
> add_${func}of_ports br0 1 2
> AT_DATA([flows.txt], [dnl
> table=0 in_port=1,ip,nw_dst=10.0.0.1 actions=output(2)
> diff --git a/tutorial/ovs-sandbox b/tutorial/ovs-sandbox
> index 7ae8cdb8a782..1632ad15da5a 100755
> --- a/tutorial/ovs-sandbox
> +++ b/tutorial/ovs-sandbox
> @@ -385,7 +385,7 @@ sleep 0.1
>
> #Wait for ovsdb-server to finish launching.
> if test ! -e "$sandbox"/db.sock; then
> - echo -n "Waiting for ovsdb-server to start..."
> + printf "Waiting for ovsdb-server to start..."
> while test ! -e "$sandbox"/db.sock; do
> sleep 1;
> done
--
Flavio
More information about the dev
mailing list