From: Matthias Maennich <maennich@google.com>
To: Masahiro Yamada <masahiroy@kernel.org>
Cc: linux-kbuild@vger.kernel.org,
Benjamin Herrenschmidt <benh@kernel.crashing.org>,
"David S. Miller" <davem@davemloft.net>,
Jakub Kicinski <kuba@kernel.org>,
Mat Martineau <mathew.j.martineau@linux.intel.com>,
Matthieu Baerts <matthieu.baerts@tessares.net>,
Michael Ellerman <mpe@ellerman.id.au>,
Paul Mackerras <paulus@samba.org>, Shuah Khan <shuah@kernel.org>,
linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org,
linuxppc-dev@lists.ozlabs.org, mptcp@lists.01.org,
netdev@vger.kernel.org
Subject: Re: [PATCH] kbuild: replace LANG=C with LC_ALL=C
Date: Mon, 26 Apr 2021 11:17:08 +0100 [thread overview]
Message-ID: <YIaTJE5iZ75eGSSO@google.com> (raw)
In-Reply-To: <20210424114841.394239-1-masahiroy@kernel.org>
On Sat, Apr 24, 2021 at 08:48:41PM +0900, Masahiro Yamada wrote:
>LANG gives a weak default to each LC_* in case it is not explicitly
>defined. LC_ALL, if set, overrides all other LC_* variables.
>
> LANG < LC_CTYPE, LC_COLLATE, LC_MONETARY, LC_NUMERIC, ... < LC_ALL
>
>This is why documentation such as [1] suggests to set LC_ALL in build
>scripts to get the deterministic result.
>
>LANG=C is not strong enough to override LC_* that may be set by end
>users.
>
>[1]: https://reproducible-builds.org/docs/locales/
>
>Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
Reviewed-by: Matthias Maennich <maennich@google.com>
Cheers,
Matthias
>---
>
> arch/powerpc/boot/wrapper | 2 +-
> scripts/nsdeps | 2 +-
> scripts/recordmcount.pl | 2 +-
> scripts/setlocalversion | 2 +-
> scripts/tags.sh | 2 +-
> tools/testing/selftests/net/mptcp/mptcp_connect.sh | 2 +-
> usr/gen_initramfs.sh | 2 +-
> 7 files changed, 7 insertions(+), 7 deletions(-)
>
>diff --git a/arch/powerpc/boot/wrapper b/arch/powerpc/boot/wrapper
>index 41fa0a8715e3..cdb796b76e2e 100755
>--- a/arch/powerpc/boot/wrapper
>+++ b/arch/powerpc/boot/wrapper
>@@ -191,7 +191,7 @@ if [ -z "$kernel" ]; then
> kernel=vmlinux
> fi
>
>-LANG=C elfformat="`${CROSS}objdump -p "$kernel" | grep 'file format' | awk '{print $4}'`"
>+LC_ALL=C elfformat="`${CROSS}objdump -p "$kernel" | grep 'file format' | awk '{print $4}'`"
> case "$elfformat" in
> elf64-powerpcle) format=elf64lppc ;;
> elf64-powerpc) format=elf32ppc ;;
>diff --git a/scripts/nsdeps b/scripts/nsdeps
>index e8ce2a4d704a..04c4b96e95ec 100644
>--- a/scripts/nsdeps
>+++ b/scripts/nsdeps
>@@ -44,7 +44,7 @@ generate_deps() {
> for source_file in $mod_source_files; do
> sed '/MODULE_IMPORT_NS/Q' $source_file > ${source_file}.tmp
> offset=$(wc -l ${source_file}.tmp | awk '{print $1;}')
>- cat $source_file | grep MODULE_IMPORT_NS | LANG=C sort -u >> ${source_file}.tmp
>+ cat $source_file | grep MODULE_IMPORT_NS | LC_ALL=C sort -u >> ${source_file}.tmp
> tail -n +$((offset +1)) ${source_file} | grep -v MODULE_IMPORT_NS >> ${source_file}.tmp
> if ! diff -q ${source_file} ${source_file}.tmp; then
> mv ${source_file}.tmp ${source_file}
>diff --git a/scripts/recordmcount.pl b/scripts/recordmcount.pl
>index 867860ea57da..0a7fc9507d6f 100755
>--- a/scripts/recordmcount.pl
>+++ b/scripts/recordmcount.pl
>@@ -497,7 +497,7 @@ sub update_funcs
> #
> # Step 2: find the sections and mcount call sites
> #
>-open(IN, "LANG=C $objdump -hdr $inputfile|") || die "error running $objdump";
>+open(IN, "LC_ALL=C $objdump -hdr $inputfile|") || die "error running $objdump";
>
> my $text;
>
>diff --git a/scripts/setlocalversion b/scripts/setlocalversion
>index bb709eda96cd..db941f6d9591 100755
>--- a/scripts/setlocalversion
>+++ b/scripts/setlocalversion
>@@ -126,7 +126,7 @@ scm_version()
> fi
>
> # Check for svn and a svn repo.
>- if rev=$(LANG= LC_ALL= LC_MESSAGES=C svn info 2>/dev/null | grep '^Last Changed Rev'); then
>+ if rev=$(LC_ALL=C svn info 2>/dev/null | grep '^Last Changed Rev'); then
> rev=$(echo $rev | awk '{print $NF}')
> printf -- '-svn%s' "$rev"
>
>diff --git a/scripts/tags.sh b/scripts/tags.sh
>index fd96734deff1..db8ba411860a 100755
>--- a/scripts/tags.sh
>+++ b/scripts/tags.sh
>@@ -326,5 +326,5 @@ esac
>
> # Remove structure forward declarations.
> if [ -n "$remove_structs" ]; then
>- LANG=C sed -i -e '/^\([a-zA-Z_][a-zA-Z0-9_]*\)\t.*\t\/\^struct \1;.*\$\/;"\tx$/d' $1
>+ LC_ALL=C sed -i -e '/^\([a-zA-Z_][a-zA-Z0-9_]*\)\t.*\t\/\^struct \1;.*\$\/;"\tx$/d' $1
> fi
>diff --git a/tools/testing/selftests/net/mptcp/mptcp_connect.sh b/tools/testing/selftests/net/mptcp/mptcp_connect.sh
>index 10a030b53b23..1d2a6e7b877c 100755
>--- a/tools/testing/selftests/net/mptcp/mptcp_connect.sh
>+++ b/tools/testing/selftests/net/mptcp/mptcp_connect.sh
>@@ -273,7 +273,7 @@ check_mptcp_disabled()
> ip netns exec ${disabled_ns} sysctl -q net.mptcp.enabled=0
>
> local err=0
>- LANG=C ip netns exec ${disabled_ns} ./mptcp_connect -t $timeout -p 10000 -s MPTCP 127.0.0.1 < "$cin" 2>&1 | \
>+ LC_ALL=C ip netns exec ${disabled_ns} ./mptcp_connect -t $timeout -p 10000 -s MPTCP 127.0.0.1 < "$cin" 2>&1 | \
> grep -q "^socket: Protocol not available$" && err=1
> ip netns delete ${disabled_ns}
>
>diff --git a/usr/gen_initramfs.sh b/usr/gen_initramfs.sh
>index 8ae831657e5d..63476bb70b41 100755
>--- a/usr/gen_initramfs.sh
>+++ b/usr/gen_initramfs.sh
>@@ -147,7 +147,7 @@ dir_filelist() {
> header "$1"
>
> srcdir=$(echo "$1" | sed -e 's://*:/:g')
>- dirlist=$(find "${srcdir}" -printf "%p %m %U %G\n" | LANG=C sort)
>+ dirlist=$(find "${srcdir}" -printf "%p %m %U %G\n" | LC_ALL=C sort)
>
> # If $dirlist is only one line, then the directory is empty
> if [ "$(echo "${dirlist}" | wc -l)" -gt 1 ]; then
>--
>2.27.0
>
WARNING: multiple messages have this Message-ID (diff)
From: Matthias Maennich <maennich@google.com>
To: Masahiro Yamada <masahiroy@kernel.org>
Cc: linuxppc-dev@lists.ozlabs.org, linux-kbuild@vger.kernel.org,
Mat Martineau <mathew.j.martineau@linux.intel.com>,
linux-kernel@vger.kernel.org, mptcp@lists.01.org,
Paul Mackerras <paulus@samba.org>,
linux-kselftest@vger.kernel.org, Jakub Kicinski <kuba@kernel.org>,
Matthieu Baerts <matthieu.baerts@tessares.net>,
netdev@vger.kernel.org, Shuah Khan <shuah@kernel.org>,
"David S. Miller" <davem@davemloft.net>
Subject: Re: [PATCH] kbuild: replace LANG=C with LC_ALL=C
Date: Mon, 26 Apr 2021 11:17:08 +0100 [thread overview]
Message-ID: <YIaTJE5iZ75eGSSO@google.com> (raw)
In-Reply-To: <20210424114841.394239-1-masahiroy@kernel.org>
On Sat, Apr 24, 2021 at 08:48:41PM +0900, Masahiro Yamada wrote:
>LANG gives a weak default to each LC_* in case it is not explicitly
>defined. LC_ALL, if set, overrides all other LC_* variables.
>
> LANG < LC_CTYPE, LC_COLLATE, LC_MONETARY, LC_NUMERIC, ... < LC_ALL
>
>This is why documentation such as [1] suggests to set LC_ALL in build
>scripts to get the deterministic result.
>
>LANG=C is not strong enough to override LC_* that may be set by end
>users.
>
>[1]: https://reproducible-builds.org/docs/locales/
>
>Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
Reviewed-by: Matthias Maennich <maennich@google.com>
Cheers,
Matthias
>---
>
> arch/powerpc/boot/wrapper | 2 +-
> scripts/nsdeps | 2 +-
> scripts/recordmcount.pl | 2 +-
> scripts/setlocalversion | 2 +-
> scripts/tags.sh | 2 +-
> tools/testing/selftests/net/mptcp/mptcp_connect.sh | 2 +-
> usr/gen_initramfs.sh | 2 +-
> 7 files changed, 7 insertions(+), 7 deletions(-)
>
>diff --git a/arch/powerpc/boot/wrapper b/arch/powerpc/boot/wrapper
>index 41fa0a8715e3..cdb796b76e2e 100755
>--- a/arch/powerpc/boot/wrapper
>+++ b/arch/powerpc/boot/wrapper
>@@ -191,7 +191,7 @@ if [ -z "$kernel" ]; then
> kernel=vmlinux
> fi
>
>-LANG=C elfformat="`${CROSS}objdump -p "$kernel" | grep 'file format' | awk '{print $4}'`"
>+LC_ALL=C elfformat="`${CROSS}objdump -p "$kernel" | grep 'file format' | awk '{print $4}'`"
> case "$elfformat" in
> elf64-powerpcle) format=elf64lppc ;;
> elf64-powerpc) format=elf32ppc ;;
>diff --git a/scripts/nsdeps b/scripts/nsdeps
>index e8ce2a4d704a..04c4b96e95ec 100644
>--- a/scripts/nsdeps
>+++ b/scripts/nsdeps
>@@ -44,7 +44,7 @@ generate_deps() {
> for source_file in $mod_source_files; do
> sed '/MODULE_IMPORT_NS/Q' $source_file > ${source_file}.tmp
> offset=$(wc -l ${source_file}.tmp | awk '{print $1;}')
>- cat $source_file | grep MODULE_IMPORT_NS | LANG=C sort -u >> ${source_file}.tmp
>+ cat $source_file | grep MODULE_IMPORT_NS | LC_ALL=C sort -u >> ${source_file}.tmp
> tail -n +$((offset +1)) ${source_file} | grep -v MODULE_IMPORT_NS >> ${source_file}.tmp
> if ! diff -q ${source_file} ${source_file}.tmp; then
> mv ${source_file}.tmp ${source_file}
>diff --git a/scripts/recordmcount.pl b/scripts/recordmcount.pl
>index 867860ea57da..0a7fc9507d6f 100755
>--- a/scripts/recordmcount.pl
>+++ b/scripts/recordmcount.pl
>@@ -497,7 +497,7 @@ sub update_funcs
> #
> # Step 2: find the sections and mcount call sites
> #
>-open(IN, "LANG=C $objdump -hdr $inputfile|") || die "error running $objdump";
>+open(IN, "LC_ALL=C $objdump -hdr $inputfile|") || die "error running $objdump";
>
> my $text;
>
>diff --git a/scripts/setlocalversion b/scripts/setlocalversion
>index bb709eda96cd..db941f6d9591 100755
>--- a/scripts/setlocalversion
>+++ b/scripts/setlocalversion
>@@ -126,7 +126,7 @@ scm_version()
> fi
>
> # Check for svn and a svn repo.
>- if rev=$(LANG= LC_ALL= LC_MESSAGES=C svn info 2>/dev/null | grep '^Last Changed Rev'); then
>+ if rev=$(LC_ALL=C svn info 2>/dev/null | grep '^Last Changed Rev'); then
> rev=$(echo $rev | awk '{print $NF}')
> printf -- '-svn%s' "$rev"
>
>diff --git a/scripts/tags.sh b/scripts/tags.sh
>index fd96734deff1..db8ba411860a 100755
>--- a/scripts/tags.sh
>+++ b/scripts/tags.sh
>@@ -326,5 +326,5 @@ esac
>
> # Remove structure forward declarations.
> if [ -n "$remove_structs" ]; then
>- LANG=C sed -i -e '/^\([a-zA-Z_][a-zA-Z0-9_]*\)\t.*\t\/\^struct \1;.*\$\/;"\tx$/d' $1
>+ LC_ALL=C sed -i -e '/^\([a-zA-Z_][a-zA-Z0-9_]*\)\t.*\t\/\^struct \1;.*\$\/;"\tx$/d' $1
> fi
>diff --git a/tools/testing/selftests/net/mptcp/mptcp_connect.sh b/tools/testing/selftests/net/mptcp/mptcp_connect.sh
>index 10a030b53b23..1d2a6e7b877c 100755
>--- a/tools/testing/selftests/net/mptcp/mptcp_connect.sh
>+++ b/tools/testing/selftests/net/mptcp/mptcp_connect.sh
>@@ -273,7 +273,7 @@ check_mptcp_disabled()
> ip netns exec ${disabled_ns} sysctl -q net.mptcp.enabled=0
>
> local err=0
>- LANG=C ip netns exec ${disabled_ns} ./mptcp_connect -t $timeout -p 10000 -s MPTCP 127.0.0.1 < "$cin" 2>&1 | \
>+ LC_ALL=C ip netns exec ${disabled_ns} ./mptcp_connect -t $timeout -p 10000 -s MPTCP 127.0.0.1 < "$cin" 2>&1 | \
> grep -q "^socket: Protocol not available$" && err=1
> ip netns delete ${disabled_ns}
>
>diff --git a/usr/gen_initramfs.sh b/usr/gen_initramfs.sh
>index 8ae831657e5d..63476bb70b41 100755
>--- a/usr/gen_initramfs.sh
>+++ b/usr/gen_initramfs.sh
>@@ -147,7 +147,7 @@ dir_filelist() {
> header "$1"
>
> srcdir=$(echo "$1" | sed -e 's://*:/:g')
>- dirlist=$(find "${srcdir}" -printf "%p %m %U %G\n" | LANG=C sort)
>+ dirlist=$(find "${srcdir}" -printf "%p %m %U %G\n" | LC_ALL=C sort)
>
> # If $dirlist is only one line, then the directory is empty
> if [ "$(echo "${dirlist}" | wc -l)" -gt 1 ]; then
>--
>2.27.0
>
next prev parent reply other threads:[~2021-04-26 10:17 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-04-24 11:48 [PATCH] kbuild: replace LANG=C with LC_ALL=C Masahiro Yamada
2021-04-24 11:48 ` Masahiro Yamada
2021-04-25 11:13 ` Michael Ellerman
2021-04-25 11:13 ` Michael Ellerman
2021-04-26 10:17 ` Matthias Maennich [this message]
2021-04-26 10:17 ` Matthias Maennich
2021-04-26 19:30 ` Matthieu Baerts
2021-04-26 19:30 ` Matthieu Baerts
2021-05-05 17:49 ` Masahiro Yamada
2021-05-05 17:49 ` Masahiro Yamada
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=YIaTJE5iZ75eGSSO@google.com \
--to=maennich@google.com \
--cc=benh@kernel.crashing.org \
--cc=davem@davemloft.net \
--cc=kuba@kernel.org \
--cc=linux-kbuild@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-kselftest@vger.kernel.org \
--cc=linuxppc-dev@lists.ozlabs.org \
--cc=masahiroy@kernel.org \
--cc=mathew.j.martineau@linux.intel.com \
--cc=matthieu.baerts@tessares.net \
--cc=mpe@ellerman.id.au \
--cc=mptcp@lists.01.org \
--cc=netdev@vger.kernel.org \
--cc=paulus@samba.org \
--cc=shuah@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.