On Tue, Oct 22, 2019 at 1:05 AM Jessica Yu <j...@kernel.org> wrote: > > When doing an out of tree build with O=, the nsdeps script constructs > the absolute pathname of the module source file so that it can insert > MODULE_IMPORT_NS statements in the right place. However, ${srctree} > contains an unescaped path to the source tree, which, when used in a sed > substitution, makes sed complain: > > ++ sed 's/[^ ]* *//home/jeyu/jeyu-linux\/&/g' > sed: -e expression #1, char 12: unknown option to `s' > > The sed substitution command 's' ends prematurely with the forward > slashes in the pathname, and sed errors out when it encounters the 'h', > which is an invalid sed substitution option. To avoid escaping forward > slashes in ${srctree}, we can use '|' as an alternative delimiter for > sed to avoid this error. > > Signed-off-by: Jessica Yu <j...@kernel.org> > --- > > This is an alternative to my first patch here: > > http://lore.kernel.org/r/20191021145137.31672-1-j...@kernel.org > > Matthias suggested using an alternative sed delimiter instead to avoid the > ugly/unreadable ${srctree//\//\\\/} substitution. > > scripts/nsdeps | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/scripts/nsdeps b/scripts/nsdeps > index 3754dac13b31..63da30a33422 100644 > --- a/scripts/nsdeps > +++ b/scripts/nsdeps > @@ -33,7 +33,7 @@ generate_deps() { > if [ ! -f "$ns_deps_file" ]; then return; fi > local mod_source_files=`cat $mod_file | sed -n 1p > \ > | sed -e 's/\.o/\.c/g' > \ > - | sed "s/[^ ]* > */${srctree}\/&/g"` > + | sed "s|[^ ]* > *|${srctree}\/&|g"`
You no longer need to escape the '/'. s|[^ ]* *|${srctree}/&|g is enough. BTW, connecting multiple sed commands with pipes is not efficient. sed -n 1p | sed -e 's/\.o/\.c/g' can be replaced with sed -n '1s/\.o/\.c/gp' This script can be improved a whole if somebody is interested in the refactoring. > for ns in `cat $ns_deps_file`; do > echo "Adding namespace $ns to module $mod_name (if needed)." > generate_deps_for_ns $ns $mod_source_files > -- > 2.16.4 > -- Best Regards Masahiro Yamada