All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2] tags: honor COMPILED_SOURCE with apart output directory
@ 2016-12-15 16:35 Robert Jarzmik
  2017-01-23  6:22 ` Robert Jarzmik
  2017-04-24 18:06 ` Masahiro Yamada
  0 siblings, 2 replies; 11+ messages in thread
From: Robert Jarzmik @ 2016-12-15 16:35 UTC (permalink / raw)
  To: Michal Marek; +Cc: linux-kernel, linux-kbuild, Robert Jarzmik

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(-)

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
 				;;
-- 
2.1.4

^ permalink raw reply related	[flat|nested] 11+ messages in thread

* Re: [PATCH v2] tags: honor COMPILED_SOURCE with apart output directory
  2016-12-15 16:35 [PATCH v2] tags: honor COMPILED_SOURCE with apart output directory Robert Jarzmik
@ 2017-01-23  6:22 ` Robert Jarzmik
  2017-02-14  7:33   ` Robert Jarzmik
  2017-04-24 18:06 ` Masahiro Yamada
  1 sibling, 1 reply; 11+ messages in thread
From: Robert Jarzmik @ 2017-01-23  6:22 UTC (permalink / raw)
  To: Michal Marek; +Cc: linux-kernel, linux-kbuild

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

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH v2] tags: honor COMPILED_SOURCE with apart output directory
  2017-01-23  6:22 ` Robert Jarzmik
@ 2017-02-14  7:33   ` Robert Jarzmik
  0 siblings, 0 replies; 11+ messages in thread
From: Robert Jarzmik @ 2017-02-14  7:33 UTC (permalink / raw)
  To: Michal Marek; +Cc: linux-kernel, linux-kbuild

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
>>  				;;

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH v2] tags: honor COMPILED_SOURCE with apart output directory
  2016-12-15 16:35 [PATCH v2] tags: honor COMPILED_SOURCE with apart output directory Robert Jarzmik
  2017-01-23  6:22 ` Robert Jarzmik
@ 2017-04-24 18:06 ` Masahiro Yamada
  2017-04-25 20:07   ` Robert Jarzmik
  1 sibling, 1 reply; 11+ messages in thread
From: Masahiro Yamada @ 2017-04-24 18:06 UTC (permalink / raw)
  To: Robert Jarzmik
  Cc: Michal Marek, Linux Kernel Mailing List, Linux Kbuild mailing list

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.


-- 
Best Regards
Masahiro Yamada

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH v2] tags: honor COMPILED_SOURCE with apart output directory
  2017-04-24 18:06 ` Masahiro Yamada
@ 2017-04-25 20:07   ` Robert Jarzmik
  2017-04-30 14:53     ` Masahiro Yamada
  0 siblings, 1 reply; 11+ messages in thread
From: Robert Jarzmik @ 2017-04-25 20:07 UTC (permalink / raw)
  To: Masahiro Yamada
  Cc: Michal Marek, Linux Kernel Mailing List, Linux Kbuild mailing list

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.

-- 
Robert

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH v2] tags: honor COMPILED_SOURCE with apart output directory
  2017-04-25 20:07   ` Robert Jarzmik
@ 2017-04-30 14:53     ` Masahiro Yamada
  2017-05-04  6:29       ` Robert Jarzmik
  0 siblings, 1 reply; 11+ messages in thread
From: Masahiro Yamada @ 2017-04-30 14:53 UTC (permalink / raw)
  To: Robert Jarzmik
  Cc: Michal Marek, Linux Kernel Mailing List, Linux Kbuild mailing list

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.



-- 
Best Regards
Masahiro Yamada

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH v2] tags: honor COMPILED_SOURCE with apart output directory
  2017-04-30 14:53     ` Masahiro Yamada
@ 2017-05-04  6:29       ` Robert Jarzmik
  2017-05-06 15:57         ` Masahiro Yamada
  0 siblings, 1 reply; 11+ messages in thread
From: Robert Jarzmik @ 2017-05-04  6:29 UTC (permalink / raw)
  To: Masahiro Yamada
  Cc: Michal Marek, Linux Kernel Mailing List, Linux Kbuild mailing list

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.

-- 
Robert

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH v2] tags: honor COMPILED_SOURCE with apart output directory
  2017-05-04  6:29       ` Robert Jarzmik
@ 2017-05-06 15:57         ` Masahiro Yamada
  2017-06-05  6:05           ` Masahiro Yamada
  0 siblings, 1 reply; 11+ messages in thread
From: Masahiro Yamada @ 2017-05-06 15:57 UTC (permalink / raw)
  To: Robert Jarzmik
  Cc: Michal Marek, Linux Kernel Mailing List, Linux Kbuild mailing list

Hi Robert,

2017-05-04 15:29 GMT+09:00 Robert Jarzmik <robert.jarzmik@free.fr>:
> 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) ]];


I am not saying we should do like that.


My suggestion is even simpler.

Can we do like this?


diff --git a/scripts/tags.sh b/scripts/tags.sh
index d661f2f..d23dcbf 100755
--- a/scripts/tags.sh
+++ b/scripts/tags.sh
@@ -106,6 +106,7 @@ all_compiled_sources()
                case "$i" in
                        *.[cS])
                                j=${i/\.[cS]/\.o}
+                               j="${j#$tree}"
                                if [ -e $j ]; then
                                        echo $i
                                fi



-- 
Best Regards
Masahiro Yamada

^ permalink raw reply related	[flat|nested] 11+ messages in thread

* Re: [PATCH v2] tags: honor COMPILED_SOURCE with apart output directory
  2017-05-06 15:57         ` Masahiro Yamada
@ 2017-06-05  6:05           ` Masahiro Yamada
  2017-06-05  6:16             ` Masahiro Yamada
  2017-06-05 12:00             ` Robert Jarzmik
  0 siblings, 2 replies; 11+ messages in thread
From: Masahiro Yamada @ 2017-06-05  6:05 UTC (permalink / raw)
  To: Robert Jarzmik
  Cc: Michal Marek, Linux Kernel Mailing List, Linux Kbuild mailing list

Hi Robert,


2017-05-07 0:57 GMT+09:00 Masahiro Yamada <yamada.masahiro@socionext.com>:
> Hi Robert,
>
> 2017-05-04 15:29 GMT+09:00 Robert Jarzmik <robert.jarzmik@free.fr>:
>> 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) ]];
>
>
> I am not saying we should do like that.
>
>
> My suggestion is even simpler.
>
> Can we do like this?
>
>
> diff --git a/scripts/tags.sh b/scripts/tags.sh
> index d661f2f..d23dcbf 100755
> --- a/scripts/tags.sh
> +++ b/scripts/tags.sh
> @@ -106,6 +106,7 @@ all_compiled_sources()
>                 case "$i" in
>                         *.[cS])
>                                 j=${i/\.[cS]/\.o}
> +                               j="${j#$tree}"
>                                 if [ -e $j ]; then
>                                         echo $i
>                                 fi
>
>


I tested the code above, and it worked fine.

Could you send v3?  Then, I will apply it soon.

Or, if you are not reluctant to do so,
may I modify your patch like above?




-- 
Best Regards
Masahiro Yamada

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH v2] tags: honor COMPILED_SOURCE with apart output directory
  2017-06-05  6:05           ` Masahiro Yamada
@ 2017-06-05  6:16             ` Masahiro Yamada
  2017-06-05 12:00             ` Robert Jarzmik
  1 sibling, 0 replies; 11+ messages in thread
From: Masahiro Yamada @ 2017-06-05  6:16 UTC (permalink / raw)
  To: Robert Jarzmik
  Cc: Michal Marek, Linux Kernel Mailing List, Linux Kbuild mailing list

2017-06-05 15:05 GMT+09:00 Masahiro Yamada <yamada.masahiro@socionext.com>:

> I tested the code above, and it worked fine.
>
> Could you send v3?  Then, I will apply it soon.
>
> Or, if you are not reluctant to do so,
> may I modify your patch like above?

I meant "if you are reluctant to do so..."



-- 
Best Regards
Masahiro Yamada

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH v2] tags: honor COMPILED_SOURCE with apart output directory
  2017-06-05  6:05           ` Masahiro Yamada
  2017-06-05  6:16             ` Masahiro Yamada
@ 2017-06-05 12:00             ` Robert Jarzmik
  1 sibling, 0 replies; 11+ messages in thread
From: Robert Jarzmik @ 2017-06-05 12:00 UTC (permalink / raw)
  To: Masahiro Yamada
  Cc: Michal Marek, Linux Kernel Mailing List, Linux Kbuild mailing list

Masahiro Yamada <yamada.masahiro@socionext.com> writes:

> Hi Robert,
Hi Masahiro,

Sorry, I was out lately.
I sent a v3, thanks for keeping up pushing for this one.

Cheers.

--
Robert

^ permalink raw reply	[flat|nested] 11+ messages in thread

end of thread, other threads:[~2017-06-05 12:01 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-12-15 16:35 [PATCH v2] tags: honor COMPILED_SOURCE with apart output directory Robert Jarzmik
2017-01-23  6:22 ` Robert Jarzmik
2017-02-14  7:33   ` Robert Jarzmik
2017-04-24 18:06 ` Masahiro Yamada
2017-04-25 20:07   ` Robert Jarzmik
2017-04-30 14:53     ` Masahiro Yamada
2017-05-04  6:29       ` Robert Jarzmik
2017-05-06 15:57         ` Masahiro Yamada
2017-06-05  6:05           ` Masahiro Yamada
2017-06-05  6:16             ` Masahiro Yamada
2017-06-05 12:00             ` Robert Jarzmik

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.