devtools: don't use bash extension in checkpatches
Checks
Commit Message
'read -d' is a bash extension and doesn't work in POSIX shells.
For example 'checkpatches.sh' doesn't work properly on ubuntu,
where 'dash' is a default shell:
./devtools/checkpatches.sh: 52: read: Illegal option -d
Let's use single quotes instead of variable.
Fixes: 7413e7f2aeb3 ("devtools: alert on new calls to exit from libs")
CC: stable@dpdk.org
Signed-off-by: Ilya Maximets <i.maximets@samsung.com>
---
devtools/checkpatches.sh | 34 ++++++++++++++++------------------
1 file changed, 16 insertions(+), 18 deletions(-)
Comments
Hi Ilya
Let's use single quotes instead of variable.
Using the script directly with single quotes loses the ability to reuse it
with an additional set of folders , expressions and RET_ON_FAIL.
If we wish to keep the awk code in this file and not in a separate file,
maybe receiving the awk script parameters from the function
check_forbidden_additions( ) can also preserve the ability to reuse in
future cases.
thanks
/Arnon
16/08/2018 07:25, Arnon Warshavsky:
> Hi Ilya
>
> Let's use single quotes instead of variable.
>
>
> Using the script directly with single quotes loses the ability to reuse it
> with an additional set of folders , expressions and RET_ON_FAIL.
I don't know awk. Please could you explain what we are loosing and why?
> If we wish to keep the awk code in this file and not in a separate file,
> maybe receiving the awk script parameters from the function
> check_forbidden_additions( ) can also preserve the ability to reuse in
> future cases.
Yes I feel we could add some parameters to this function.
And yes, we could move the awk script in a separate file.
Actually, it would be better to keep checkpatches.sh as a wrapper script
calling various tools.
Thanks
Hi Thomas.
Beside your questions,
There is another patch that targeted to fix this issue:
http://patches.dpdk.org/patch/44020/
And one similar to mine that I missed while sending:
http://patches.dpdk.org/patch/43692/
So, I'm not sure which one should be accepted and if I need to
update my version. What do you think? Stephen? Andrzej?
Best regards, Ilya Maximets.
On 14.09.2018 17:50, Thomas Monjalon wrote:
> 16/08/2018 07:25, Arnon Warshavsky:
>> Hi Ilya
>>
>> Let's use single quotes instead of variable.
>>
>>
>> Using the script directly with single quotes loses the ability to reuse it
>> with an additional set of folders , expressions and RET_ON_FAIL.
>
> I don't know awk. Please could you explain what we are loosing and why?
>
>> If we wish to keep the awk code in this file and not in a separate file,
>> maybe receiving the awk script parameters from the function
>> check_forbidden_additions( ) can also preserve the ability to reuse in
>> future cases.
>
> Yes I feel we could add some parameters to this function.
> And yes, we could move the awk script in a separate file.
> Actually, it would be better to keep checkpatches.sh as a wrapper script
> calling various tools.
>
> Thanks
>
>
>
>
> HI
> >
> > Let's use single quotes instead of variable.
> >
> >
> > Using the script directly with single quotes loses the ability to reuse
> it
> > with an additional set of folders , expressions and RET_ON_FAIL.
>
> I don't know awk. Please could you explain what we are loosing and why?
>
The awk script was written with intention to be called with future optional
various folders and banned expressions.
The optional reuse takes place inside the function check_forbidden_additions(
)
with different instances passed to the awk script that is loaded using the
apparently unfriendly -d.
(currently only rte_panic)
If we move the parameters to the outer function, i.e
check_forbidden_additions(
params ...)
then there is no problem calling the awk script with single quotes
>
> > If we wish to keep the awk code in this file and not in a separate file,
> > maybe receiving the awk script parameters from the function
> > check_forbidden_additions( ) can also preserve the ability to reuse in
> > future cases.
>
> Yes I feel we could add some parameters to this function.
> And yes, we could move the awk script in a separate file.
> Actually, it would be better to keep checkpatches.sh as a wrapper script
> calling various tools.
>
I was under the wrong impression the opposite was desired, so yes,
moving the entire awk code to a separate file would indeed be the cleanest.
thanks
/Arnon
15/09/2018 21:07, Arnon Warshavsky:
> > > If we wish to keep the awk code in this file and not in a separate file,
> > > maybe receiving the awk script parameters from the function
> > > check_forbidden_additions( ) can also preserve the ability to reuse in
> > > future cases.
> >
> > Yes I feel we could add some parameters to this function.
> > And yes, we could move the awk script in a separate file.
> > Actually, it would be better to keep checkpatches.sh as a wrapper script
> > calling various tools.
> >
> I was under the wrong impression the opposite was desired, so yes,
> moving the entire awk code to a separate file would indeed be the cleanest.
OK, who can do this change please?
14/09/2018 17:10, Ilya Maximets:
> Hi Thomas.
>
> Beside your questions,
> There is another patch that targeted to fix this issue:
> http://patches.dpdk.org/patch/44020/
> And one similar to mine that I missed while sending:
> http://patches.dpdk.org/patch/43692/
>
> So, I'm not sure which one should be accepted and if I need to
> update my version. What do you think? Stephen? Andrzej?
Generally speaking, I think it's better to avoid bash extensions
and comply with POSIX. That's why I support the proposal of moving
the awk script in its own file, removing the need for "read -d".
> > I was under the wrong impression the opposite was desired, so yes,
> > moving the entire awk code to a separate file would indeed be the
> cleanest.
>
> OK, who can do this change please?
>
>
> I will do the move to a different file later on this week
thanks
/Arnon
@@ -44,12 +44,18 @@ print_usage () {
}
check_forbidden_additions() {
- # This awk script receives a list of expressions to monitor
- # and a list of folders to search these expressions in
- # - No search is done inside comments
- # - Both additions and removals of the expressions are checked
- # A positive balance of additions fails the check
- read -d '' awk_script << 'EOF'
+ # This awk script receives a list of expressions to monitor
+ # and a list of folders to search these expressions in
+ # - No search is done inside comments
+ # - Both additions and removals of the expressions are checked
+ # A positive balance of additions fails the check
+ # ---------------------------------
+ # refrain from new additions of rte_panic() and rte_exit()
+ # multiple folders and expressions are separated by spaces
+ awk -v FOLDERS="lib drivers" \
+ -v EXPRESSIONS="rte_panic\\\( rte_exit\\\(" \
+ -v RET_ON_FAIL=1 \
+ '
BEGIN {
split(FOLDERS,deny_folders," ");
split(EXPRESSIONS,deny_expr," ");
@@ -70,7 +76,7 @@ check_forbidden_additions() {
# non comment code
if (in_comment == 0) {
for (i in deny_expr) {
- forbidden_added = "^\+.*" deny_expr[i];
+ forbidden_added = "^+.*" deny_expr[i];
forbidden_removed="^-.*" deny_expr[i];
current = expressions[deny_expr[i]]
if ($0 ~ forbidden_added) {
@@ -90,13 +96,13 @@ check_forbidden_additions() {
}
# switch to next file , check if the balance of add/remove
# of previous filehad new additions
- ($0 ~ "^\+\+\+ b/") {
+ ($0 ~ "^+++ b/") {
in_file = 0;
if (count > 0) {
exit;
}
for (i in deny_folders) {
- re = "^\+\+\+ b/" deny_folders[i];
+ re = "^+++ b/" deny_folders[i];
if ($0 ~ deny_folders[i]) {
in_file = 1
last_file = $0
@@ -114,15 +120,7 @@ check_forbidden_additions() {
}
exit RET_ON_FAIL
}
- }
-EOF
- # ---------------------------------
- # refrain from new additions of rte_panic() and rte_exit()
- # multiple folders and expressions are separated by spaces
- awk -v FOLDERS="lib drivers" \
- -v EXPRESSIONS="rte_panic\\\( rte_exit\\\(" \
- -v RET_ON_FAIL=1 \
- "$awk_script" -
+ }' -
}
number=0