Message ID | 1481819733-3002-1-git-send-email-robert.jarzmik@free.fr (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Robert Jarzmik <robert.jarzmik@free.fr> writes: > When the kernel is compiled with an "O=" argument, the object files are > not necessarily in the source tree, and more probably in another tree. > > In this situation, the current used check doesn't work, and > COMPILED_SOURCE tags is broken with O= builds. > > This patch fixes it by looking for object files both in source tree and > potential destination tree. > > It was verified that in the case of O= usage, the current directory is > the build tree, ie. the tree referenced by O=xxx, and j is the source > tree path concatenated with relative path of the object to the source > tree root, hence the simple expression to compute "k" as the built > object. > > Signed-off-by: Robert Jarzmik <robert.jarzmik@free.fr> > --- > Since v1: amended k expression, Marek's comments Hi Marek, Is this version good for you ? > --- > scripts/tags.sh | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/scripts/tags.sh b/scripts/tags.sh > index a2ff3388e5ea..35cb64d5211c 100755 > --- a/scripts/tags.sh > +++ b/scripts/tags.sh > @@ -106,7 +106,8 @@ all_compiled_sources() > case "$i" in > *.[cS]) > j=${i/\.[cS]/\.o} > - if [ -e $j ]; then > + k="${j#$tree}" > + if [ -e $j -o -e "$k" ]; then > echo $i > fi > ;; Cheers.
Robert Jarzmik <robert.jarzmik@free.fr> writes: > Robert Jarzmik <robert.jarzmik@free.fr> writes: >> Signed-off-by: Robert Jarzmik <robert.jarzmik@free.fr> >> --- >> Since v1: amended k expression, Marek's comments > Hi Marek, > > Is this version good for you ? Marek, could you take a look please ? -- Robert >> --- >> scripts/tags.sh | 3 ++- >> 1 file changed, 2 insertions(+), 1 deletion(-) >> >> diff --git a/scripts/tags.sh b/scripts/tags.sh >> index a2ff3388e5ea..35cb64d5211c 100755 >> --- a/scripts/tags.sh >> +++ b/scripts/tags.sh >> @@ -106,7 +106,8 @@ all_compiled_sources() >> case "$i" in >> *.[cS]) >> j=${i/\.[cS]/\.o} >> - if [ -e $j ]; then >> + k="${j#$tree}" >> + if [ -e $j -o -e "$k" ]; then >> echo $i >> fi >> ;; -- To unsubscribe from this list: send the line "unsubscribe linux-kbuild" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Hi Robert, 2016-12-16 1:35 GMT+09:00 Robert Jarzmik <robert.jarzmik@free.fr>: > When the kernel is compiled with an "O=" argument, the object files are > not necessarily in the source tree, and more probably in another tree. Always in objtree. > In this situation, the current used check doesn't work, and > COMPILED_SOURCE tags is broken with O= builds. > > This patch fixes it by looking for object files both in source tree and > potential destination tree. > > It was verified that in the case of O= usage, the current directory is > the build tree, ie. the tree referenced by O=xxx, and j is the source > tree path concatenated with relative path of the object to the source > tree root, hence the simple expression to compute "k" as the built > object. > > Signed-off-by: Robert Jarzmik <robert.jarzmik@free.fr> > --- > Since v1: amended k expression, Marek's comments > --- > scripts/tags.sh | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/scripts/tags.sh b/scripts/tags.sh > index a2ff3388e5ea..35cb64d5211c 100755 > --- a/scripts/tags.sh > +++ b/scripts/tags.sh > @@ -106,7 +106,8 @@ all_compiled_sources() > case "$i" in > *.[cS]) > j=${i/\.[cS]/\.o} > - if [ -e $j ]; then > + k="${j#$tree}" > + if [ -e $j -o -e "$k" ]; then Do we need to check both srctree and objtree? I think checking objtree (after $tree is ripped off) is enough.
Masahiro Yamada <yamada.masahiro@socionext.com> writes: > Hi Robert, >> diff --git a/scripts/tags.sh b/scripts/tags.sh >> index a2ff3388e5ea..35cb64d5211c 100755 >> --- a/scripts/tags.sh >> +++ b/scripts/tags.sh >> @@ -106,7 +106,8 @@ all_compiled_sources() >> case "$i" in >> *.[cS]) >> j=${i/\.[cS]/\.o} >> - if [ -e $j ]; then >> + k="${j#$tree}" >> + if [ -e $j -o -e "$k" ]; then > > > Do we need to check both srctree and objtree? > I think checking objtree (after $tree is ripped off) is enough. If I remember correctly, as this goes back a couple of monthes when I made the tests of this patch, the srctree is checked for the case when the kernel is compiled without O=, and objtree for the case with O=. Cheers.
Hi Robert, 2017-04-26 5:07 GMT+09:00 Robert Jarzmik <robert.jarzmik@free.fr>: > Masahiro Yamada <yamada.masahiro@socionext.com> writes: > >> Hi Robert, >>> diff --git a/scripts/tags.sh b/scripts/tags.sh >>> index a2ff3388e5ea..35cb64d5211c 100755 >>> --- a/scripts/tags.sh >>> +++ b/scripts/tags.sh >>> @@ -106,7 +106,8 @@ all_compiled_sources() >>> case "$i" in >>> *.[cS]) >>> j=${i/\.[cS]/\.o} >>> - if [ -e $j ]; then >>> + k="${j#$tree}" >>> + if [ -e $j -o -e "$k" ]; then >> >> >> Do we need to check both srctree and objtree? >> I think checking objtree (after $tree is ripped off) is enough. > > If I remember correctly, as this goes back a couple of monthes when I made the > tests of this patch, the srctree is checked for the case when the kernel is > compiled without O=, and objtree for the case with O=. I thought of this too, but if O= is given, objects in srctree should not be checked. For example, the kernel may be compiled for ARCH=arm with O= first, then for ARCH=x86 without O= second. If we include objects from both trees, the generated tag file will be a mixture of arm and x86.
Masahiro Yamada <yamada.masahiro@socionext.com> writes: > Hi Robert, > > 2017-04-26 5:07 GMT+09:00 Robert Jarzmik <robert.jarzmik@free.fr>: >> Masahiro Yamada <yamada.masahiro@socionext.com> writes: >> >>> Hi Robert, >>>> diff --git a/scripts/tags.sh b/scripts/tags.sh >>>> index a2ff3388e5ea..35cb64d5211c 100755 >>>> --- a/scripts/tags.sh >>>> +++ b/scripts/tags.sh >>>> @@ -106,7 +106,8 @@ all_compiled_sources() >>>> case "$i" in >>>> *.[cS]) >>>> j=${i/\.[cS]/\.o} >>>> - if [ -e $j ]; then >>>> + k="${j#$tree}" >>>> + if [ -e $j -o -e "$k" ]; then >>> >>> >>> Do we need to check both srctree and objtree? >>> I think checking objtree (after $tree is ripped off) is enough. >> >> If I remember correctly, as this goes back a couple of monthes when I made the >> tests of this patch, the srctree is checked for the case when the kernel is >> compiled without O=, and objtree for the case with O=. > > > I thought of this too, but if O= is given, objects in srctree > should not be checked. > > For example, the kernel may be compiled for ARCH=arm with O= first, > then for ARCH=x86 without O= second. > > If we include objects from both trees, the generated tag file > will be a mixture of arm and x86. That's true, but is this case worth an additional test for this case, ie. is it a case anybody uses ? Given that that this tags generation never worked for out of tree builds, I was thinking it wasn't worth a : [[ (-z $O -a -e $j) || (-n $O -a -e $k) ]]; Cheers.
diff --git a/scripts/tags.sh b/scripts/tags.sh index a2ff3388e5ea..35cb64d5211c 100755 --- a/scripts/tags.sh +++ b/scripts/tags.sh @@ -106,7 +106,8 @@ all_compiled_sources() case "$i" in *.[cS]) j=${i/\.[cS]/\.o} - if [ -e $j ]; then + k="${j#$tree}" + if [ -e $j -o -e "$k" ]; then echo $i fi ;;
When the kernel is compiled with an "O=" argument, the object files are not necessarily in the source tree, and more probably in another tree. In this situation, the current used check doesn't work, and COMPILED_SOURCE tags is broken with O= builds. This patch fixes it by looking for object files both in source tree and potential destination tree. It was verified that in the case of O= usage, the current directory is the build tree, ie. the tree referenced by O=xxx, and j is the source tree path concatenated with relative path of the object to the source tree root, hence the simple expression to compute "k" as the built object. Signed-off-by: Robert Jarzmik <robert.jarzmik@free.fr> --- Since v1: amended k expression, Marek's comments --- scripts/tags.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)