On Fri, Sep 27, 2019 at 10:27 PM Matthias Maennich <[email protected]> wrote: > > On Fri, Sep 27, 2019 at 06:36:03PM +0900, Masahiro Yamada wrote: > >scripts/nsdeps automatically generates a patch to add MODULE_IMPORT_NS > >tags, and what is nicer, it sorts the lines alphabetically with the > >"sort" command. However, the output from the "sort" command depends > >on locale. > > > >Especially when namespaces contain underscores, the result is > >different depending on the locale. > > > >For example, I got this: > > > >$ { echo usbcommon; echo usb_common; } | LANG=en_US.UTF-8 sort > >usbcommon > >usb_common > >$ { echo usbcommon; echo usb_common; } | LANG=C sort > >usb_common > >usbcommon > > > >So, this means people might potentially send different patches. > > > >This kind of issue was reported in the past, for example, > >commit f55f2328bb28 ("kbuild: make sorting initramfs contents > >independent of locale"). > > > >Adding "LANG=C" is a conventional way of fixing when a deterministic > >result is desirable. > > > >Signed-off-by: Masahiro Yamada <[email protected]> > >--- > > > > scripts/nsdeps | 2 +- > > 1 file changed, 1 insertion(+), 1 deletion(-) > > > >diff --git a/scripts/nsdeps b/scripts/nsdeps > >index 964b7fb8c546..3754dac13b31 100644 > >--- a/scripts/nsdeps > >+++ b/scripts/nsdeps > >@@ -41,7 +41,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 | sort -u >> > >${source_file}.tmp > >+ cat $source_file | grep MODULE_IMPORT_NS | LANG=C > >sort -u >> ${source_file}.tmp > > I would prefer to have this set throughout the whole runtime of the > script. Otherwise we likely see a followup patch. So, either as an > export at the beginning of this file or as part of the command that > calls this script.
I prefer to keep it close to the locale-dependent code. If I move it to somewhere else, I need to add a comment like # make "sort" command deterministic export LANG=C Otherwise, people would have no idea why it is needed. > With this > > Reviewed-by: Matthias Maennich <[email protected]> > > Cheers, > Matthias > > > 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} > >-- > >2.17.1 > > -- Best Regards Masahiro Yamada

