diff mbox

[v7,3/8] scripts: Submit changes while updating linux headers

Message ID 1440746120-21577-4-git-send-email-gwshan@linux.vnet.ibm.com
State New
Headers show

Commit Message

Gavin Shan Aug. 28, 2015, 7:15 a.m. UTC
This submits changes with formatted commit log while updating Linux
headers using scripts/update-linux-headers.sh.

Signed-off-by: Gavin Shan <gwshan@linux.vnet.ibm.com>
---
 scripts/update-linux-headers.sh | 24 ++++++++++++++++++++++++
 1 file changed, 24 insertions(+)

Comments

Laurent Vivier Aug. 28, 2015, 11:50 a.m. UTC | #1
On 28/08/2015 09:15, Gavin Shan wrote:
> This submits changes with formatted commit log while updating Linux
> headers using scripts/update-linux-headers.sh.
> 
> Signed-off-by: Gavin Shan <gwshan@linux.vnet.ibm.com>
> ---
>  scripts/update-linux-headers.sh | 24 ++++++++++++++++++++++++
>  1 file changed, 24 insertions(+)
> 
> diff --git a/scripts/update-linux-headers.sh b/scripts/update-linux-headers.sh
> index 18daabe..1be02b8 100755
> --- a/scripts/update-linux-headers.sh
> +++ b/scripts/update-linux-headers.sh
> @@ -63,6 +63,28 @@ cp_virtio() {
>      fi
>  }
>  
> +submit_change() {
> +    from=$1
> +    to=$2
> +    if ! [ -e $to/include/qemu-common.h ]; then
> +        echo "$to not QEMU source directory, skip submitting changes"
> +        exit 3
> +    fi
> +
> +    version=$(make -C $from -s kernelversion)
> +    commit=$(cd $from && git log --oneline -1 | cut -d " " -f 1)

it's a detail, but you can use directly: git log --format="%h" -1

> +    subject="Synchronize Linux headers from kernel $version"
> +    message="Synchronize the Linux headers from kernel version $version"
> +    message=$(echo "$message\n(commit $commit)")
> +    res=$(cd $to && git commit -qa -m "$subject" -m "$message" -s && echo $?)
> +    if [ "$res" = "0" ]; then

another detail, but you should be able to do something like:

       if git commit -C $to -qa -m "$subject" -m "$message" -s ; then

> +        echo "Changes submitted successfully"
> +    else
> +        echo "Error $res submitting changes"
> +        exit 4
> +    fi
> +}
> +
>  # This will pick up non-directories too (eg "Kconfig") but we will
>  # ignore them in the next loop.
>  ARCHLIST=$(cd "$linux/arch" && echo *)
> @@ -132,3 +154,5 @@ cat <<EOF >$output/include/standard-headers/linux/if_ether.h
>  EOF
>  
>  rm -rf "$tmpdir"
> +
> +submit_change "$linux" "$output"
>
Gavin Shan Aug. 28, 2015, 12:30 p.m. UTC | #2
On Fri, Aug 28, 2015 at 01:50:47PM +0200, Laurent Vivier wrote:
>On 28/08/2015 09:15, Gavin Shan wrote:
>> This submits changes with formatted commit log while updating Linux
>> headers using scripts/update-linux-headers.sh.
>> 
>> Signed-off-by: Gavin Shan <gwshan@linux.vnet.ibm.com>
>> ---
>>  scripts/update-linux-headers.sh | 24 ++++++++++++++++++++++++
>>  1 file changed, 24 insertions(+)
>> 
>> diff --git a/scripts/update-linux-headers.sh b/scripts/update-linux-headers.sh
>> index 18daabe..1be02b8 100755
>> --- a/scripts/update-linux-headers.sh
>> +++ b/scripts/update-linux-headers.sh
>> @@ -63,6 +63,28 @@ cp_virtio() {
>>      fi
>>  }
>>  
>> +submit_change() {
>> +    from=$1
>> +    to=$2
>> +    if ! [ -e $to/include/qemu-common.h ]; then
>> +        echo "$to not QEMU source directory, skip submitting changes"
>> +        exit 3
>> +    fi
>> +
>> +    version=$(make -C $from -s kernelversion)
>> +    commit=$(cd $from && git log --oneline -1 | cut -d " " -f 1)
>
>it's a detail, but you can use directly: git log --format="%h" -1
>

Yeah, I don't need another "cut" here with powerful "git log --format".
Will adjust in next revision. By the way, it seems one message suggested
by Peter is still missed, I'll add it:

This commit was created automatically by update-linux-headers.sh.

>> +    subject="Synchronize Linux headers from kernel $version"
>> +    message="Synchronize the Linux headers from kernel version $version"
>> +    message=$(echo "$message\n(commit $commit)")
>> +    res=$(cd $to && git commit -qa -m "$subject" -m "$message" -s && echo $?)
>> +    if [ "$res" = "0" ]; then
>
>another detail, but you should be able to do something like:
>
>       if git commit -C $to -qa -m "$subject" -m "$message" -s ; then
>

I didn't figure out the option to switch to target directory from the
manpage. would you mind telling the option?

>> +        echo "Changes submitted successfully"
>> +    else
>> +        echo "Error $res submitting changes"
>> +        exit 4
>> +    fi
>> +}
>> +
>>  # This will pick up non-directories too (eg "Kconfig") but we will
>>  # ignore them in the next loop.
>>  ARCHLIST=$(cd "$linux/arch" && echo *)
>> @@ -132,3 +154,5 @@ cat <<EOF >$output/include/standard-headers/linux/if_ether.h
>>  EOF
>>  
>>  rm -rf "$tmpdir"
>> +
>> +submit_change "$linux" "$output"
>>

Thanks,
Gavin
Gavin Shan Aug. 28, 2015, 1:06 p.m. UTC | #3
On Fri, Aug 28, 2015 at 10:30:48PM +1000, Gavin Shan wrote:
>On Fri, Aug 28, 2015 at 01:50:47PM +0200, Laurent Vivier wrote:
>>On 28/08/2015 09:15, Gavin Shan wrote:
>>> This submits changes with formatted commit log while updating Linux
>>> headers using scripts/update-linux-headers.sh.
>>> 
>>> Signed-off-by: Gavin Shan <gwshan@linux.vnet.ibm.com>
>>> ---
>>>  scripts/update-linux-headers.sh | 24 ++++++++++++++++++++++++
>>>  1 file changed, 24 insertions(+)
>>> 
>>> diff --git a/scripts/update-linux-headers.sh b/scripts/update-linux-headers.sh
>>> index 18daabe..1be02b8 100755
>>> --- a/scripts/update-linux-headers.sh
>>> +++ b/scripts/update-linux-headers.sh
>>> @@ -63,6 +63,28 @@ cp_virtio() {
>>>      fi
>>>  }
>>>  
>>> +submit_change() {
>>> +    from=$1
>>> +    to=$2
>>> +    if ! [ -e $to/include/qemu-common.h ]; then
>>> +        echo "$to not QEMU source directory, skip submitting changes"
>>> +        exit 3
>>> +    fi
>>> +
>>> +    version=$(make -C $from -s kernelversion)
>>> +    commit=$(cd $from && git log --oneline -1 | cut -d " " -f 1)
>>
>>it's a detail, but you can use directly: git log --format="%h" -1
>>
>
>Yeah, I don't need another "cut" here with powerful "git log --format".
>Will adjust in next revision. By the way, it seems one message suggested
>by Peter is still missed, I'll add it:
>
>This commit was created automatically by update-linux-headers.sh.
>
>>> +    subject="Synchronize Linux headers from kernel $version"
>>> +    message="Synchronize the Linux headers from kernel version $version"
>>> +    message=$(echo "$message\n(commit $commit)")
>>> +    res=$(cd $to && git commit -qa -m "$subject" -m "$message" -s && echo $?)
>>> +    if [ "$res" = "0" ]; then
>>
>>another detail, but you should be able to do something like:
>>
>>       if git commit -C $to -qa -m "$subject" -m "$message" -s ; then
>>
>
>I didn't figure out the option to switch to target directory from the
>manpage. would you mind telling the option?
>

Maybe you suggested to use something like below? In that case, "$res"
can be dropped.

    if cd $to && git commit -qa -m "$message" -s ; then
        echo "Changes submitted successfully"
    else
        echo "Failure submitting changes"
        exit 4
    fi

>>> +        echo "Changes submitted successfully"
>>> +    else
>>> +        echo "Error $res submitting changes"
>>> +        exit 4
>>> +    fi
>>> +}
>>> +
>>>  # This will pick up non-directories too (eg "Kconfig") but we will
>>>  # ignore them in the next loop.
>>>  ARCHLIST=$(cd "$linux/arch" && echo *)
>>> @@ -132,3 +154,5 @@ cat <<EOF >$output/include/standard-headers/linux/if_ether.h
>>>  EOF
>>>  
>>>  rm -rf "$tmpdir"
>>> +
>>> +submit_change "$linux" "$output"
>>>

Thanks,
Gavin
Laurent Vivier Aug. 31, 2015, 12:37 p.m. UTC | #4
On 28/08/2015 14:30, Gavin Shan wrote:
> On Fri, Aug 28, 2015 at 01:50:47PM +0200, Laurent Vivier wrote:
>> On 28/08/2015 09:15, Gavin Shan wrote:
>>> This submits changes with formatted commit log while updating Linux
>>> headers using scripts/update-linux-headers.sh.
>>>
>>> Signed-off-by: Gavin Shan <gwshan@linux.vnet.ibm.com>
>>> ---
>>>  scripts/update-linux-headers.sh | 24 ++++++++++++++++++++++++
>>>  1 file changed, 24 insertions(+)
>>>
>>> diff --git a/scripts/update-linux-headers.sh b/scripts/update-linux-headers.sh
>>> index 18daabe..1be02b8 100755
>>> --- a/scripts/update-linux-headers.sh
>>> +++ b/scripts/update-linux-headers.sh
>>> @@ -63,6 +63,28 @@ cp_virtio() {
>>>      fi
>>>  }
>>>  
>>> +submit_change() {
>>> +    from=$1
>>> +    to=$2
>>> +    if ! [ -e $to/include/qemu-common.h ]; then
>>> +        echo "$to not QEMU source directory, skip submitting changes"
>>> +        exit 3
>>> +    fi
>>> +
>>> +    version=$(make -C $from -s kernelversion)
>>> +    commit=$(cd $from && git log --oneline -1 | cut -d " " -f 1)
>>
>> it's a detail, but you can use directly: git log --format="%h" -1
>>
> 
> Yeah, I don't need another "cut" here with powerful "git log --format".
> Will adjust in next revision. By the way, it seems one message suggested
> by Peter is still missed, I'll add it:
> 
> This commit was created automatically by update-linux-headers.sh.
> 
>>> +    subject="Synchronize Linux headers from kernel $version"
>>> +    message="Synchronize the Linux headers from kernel version $version"
>>> +    message=$(echo "$message\n(commit $commit)")
>>> +    res=$(cd $to && git commit -qa -m "$subject" -m "$message" -s && echo $?)
>>> +    if [ "$res" = "0" ]; then
>>
>> another detail, but you should be able to do something like:
>>
>>       if git commit -C $to -qa -m "$subject" -m "$message" -s ; then
>>
> 
> I didn't figure out the option to switch to target directory from the
> manpage. would you mind telling the option?

in fact, it is "git -C $to commit ....".

> 
>>> +        echo "Changes submitted successfully"
>>> +    else
>>> +        echo "Error $res submitting changes"
>>> +        exit 4
>>> +    fi
>>> +}
>>> +
>>>  # This will pick up non-directories too (eg "Kconfig") but we will
>>>  # ignore them in the next loop.
>>>  ARCHLIST=$(cd "$linux/arch" && echo *)
>>> @@ -132,3 +154,5 @@ cat <<EOF >$output/include/standard-headers/linux/if_ether.h
>>>  EOF
>>>  
>>>  rm -rf "$tmpdir"
>>> +
>>> +submit_change "$linux" "$output"
>>>
> 
> Thanks,
> Gavin
>  
>
Gavin Shan Aug. 31, 2015, 11:11 p.m. UTC | #5
On Mon, Aug 31, 2015 at 02:37:43PM +0200, Laurent Vivier wrote:
>On 28/08/2015 14:30, Gavin Shan wrote:
>> On Fri, Aug 28, 2015 at 01:50:47PM +0200, Laurent Vivier wrote:
>>> On 28/08/2015 09:15, Gavin Shan wrote:
>>>> This submits changes with formatted commit log while updating Linux
>>>> headers using scripts/update-linux-headers.sh.
>>>>
>>>> Signed-off-by: Gavin Shan <gwshan@linux.vnet.ibm.com>
>>>> ---
>>>>  scripts/update-linux-headers.sh | 24 ++++++++++++++++++++++++
>>>>  1 file changed, 24 insertions(+)
>>>>
>>>> diff --git a/scripts/update-linux-headers.sh b/scripts/update-linux-headers.sh
>>>> index 18daabe..1be02b8 100755
>>>> --- a/scripts/update-linux-headers.sh
>>>> +++ b/scripts/update-linux-headers.sh
>>>> @@ -63,6 +63,28 @@ cp_virtio() {
>>>>      fi
>>>>  }
>>>>  
>>>> +submit_change() {
>>>> +    from=$1
>>>> +    to=$2
>>>> +    if ! [ -e $to/include/qemu-common.h ]; then
>>>> +        echo "$to not QEMU source directory, skip submitting changes"
>>>> +        exit 3
>>>> +    fi
>>>> +
>>>> +    version=$(make -C $from -s kernelversion)
>>>> +    commit=$(cd $from && git log --oneline -1 | cut -d " " -f 1)
>>>
>>> it's a detail, but you can use directly: git log --format="%h" -1
>>>
>> 
>> Yeah, I don't need another "cut" here with powerful "git log --format".
>> Will adjust in next revision. By the way, it seems one message suggested
>> by Peter is still missed, I'll add it:
>> 
>> This commit was created automatically by update-linux-headers.sh.
>> 
>>>> +    subject="Synchronize Linux headers from kernel $version"
>>>> +    message="Synchronize the Linux headers from kernel version $version"
>>>> +    message=$(echo "$message\n(commit $commit)")
>>>> +    res=$(cd $to && git commit -qa -m "$subject" -m "$message" -s && echo $?)
>>>> +    if [ "$res" = "0" ]; then
>>>
>>> another detail, but you should be able to do something like:
>>>
>>>       if git commit -C $to -qa -m "$subject" -m "$message" -s ; then
>>>
>> 
>> I didn't figure out the option to switch to target directory from the
>> manpage. would you mind telling the option?
>
>in fact, it is "git -C $to commit ....".
>

Thanks, Laurent. I'll pick your command in next revision.

>> 
>>>> +        echo "Changes submitted successfully"
>>>> +    else
>>>> +        echo "Error $res submitting changes"
>>>> +        exit 4
>>>> +    fi
>>>> +}
>>>> +
>>>>  # This will pick up non-directories too (eg "Kconfig") but we will
>>>>  # ignore them in the next loop.
>>>>  ARCHLIST=$(cd "$linux/arch" && echo *)
>>>> @@ -132,3 +154,5 @@ cat <<EOF >$output/include/standard-headers/linux/if_ether.h
>>>>  EOF
>>>>  
>>>>  rm -rf "$tmpdir"
>>>> +
>>>> +submit_change "$linux" "$output"
>>>>
>> 

Thanks,
Gavin
David Gibson Sept. 1, 2015, 12:56 a.m. UTC | #6
On Fri, Aug 28, 2015 at 05:15:15PM +1000, Gavin Shan wrote:
> This submits changes with formatted commit log while updating Linux
> headers using scripts/update-linux-headers.sh.
> 
> Signed-off-by: Gavin Shan <gwshan@linux.vnet.ibm.com>
> ---
>  scripts/update-linux-headers.sh | 24 ++++++++++++++++++++++++
>  1 file changed, 24 insertions(+)
> 
> diff --git a/scripts/update-linux-headers.sh b/scripts/update-linux-headers.sh
> index 18daabe..1be02b8 100755
> --- a/scripts/update-linux-headers.sh
> +++ b/scripts/update-linux-headers.sh
> @@ -63,6 +63,28 @@ cp_virtio() {
>      fi
>  }
>  
> +submit_change() {
> +    from=$1
> +    to=$2
> +    if ! [ -e $to/include/qemu-common.h ]; then
> +        echo "$to not QEMU source directory, skip submitting changes"
> +        exit 3
> +    fi
> +
> +    version=$(make -C $from -s kernelversion)
> +    commit=$(cd $from && git log --oneline -1 | cut -d " " -f 1)

"git rev-parse HEAD" might be a simpler way to get the current commit id.

> +    subject="Synchronize Linux headers from kernel $version"
> +    message="Synchronize the Linux headers from kernel version $version"
> +    message=$(echo "$message\n(commit $commit)")

Might be more readable to use the shell <<EOF syntax to construct the
commit message.

> +    res=$(cd $to && git commit -qa -m "$subject" -m "$message" -s && echo $?)
> +    if [ "$res" = "0" ]; then
> +        echo "Changes submitted successfully"
> +    else
> +        echo "Error $res submitting changes"
> +        exit 4
> +    fi
> +}
> +
>  # This will pick up non-directories too (eg "Kconfig") but we will
>  # ignore them in the next loop.
>  ARCHLIST=$(cd "$linux/arch" && echo *)
> @@ -132,3 +154,5 @@ cat <<EOF >$output/include/standard-headers/linux/if_ether.h
>  EOF
>  
>  rm -rf "$tmpdir"
> +
> +submit_change "$linux" "$output"

Obviously this will fail if you run it against an exported qemu source
tree, instead of a git tree.  I'm not sure if that's a problem.
diff mbox

Patch

diff --git a/scripts/update-linux-headers.sh b/scripts/update-linux-headers.sh
index 18daabe..1be02b8 100755
--- a/scripts/update-linux-headers.sh
+++ b/scripts/update-linux-headers.sh
@@ -63,6 +63,28 @@  cp_virtio() {
     fi
 }
 
+submit_change() {
+    from=$1
+    to=$2
+    if ! [ -e $to/include/qemu-common.h ]; then
+        echo "$to not QEMU source directory, skip submitting changes"
+        exit 3
+    fi
+
+    version=$(make -C $from -s kernelversion)
+    commit=$(cd $from && git log --oneline -1 | cut -d " " -f 1)
+    subject="Synchronize Linux headers from kernel $version"
+    message="Synchronize the Linux headers from kernel version $version"
+    message=$(echo "$message\n(commit $commit)")
+    res=$(cd $to && git commit -qa -m "$subject" -m "$message" -s && echo $?)
+    if [ "$res" = "0" ]; then
+        echo "Changes submitted successfully"
+    else
+        echo "Error $res submitting changes"
+        exit 4
+    fi
+}
+
 # This will pick up non-directories too (eg "Kconfig") but we will
 # ignore them in the next loop.
 ARCHLIST=$(cd "$linux/arch" && echo *)
@@ -132,3 +154,5 @@  cat <<EOF >$output/include/standard-headers/linux/if_ether.h
 EOF
 
 rm -rf "$tmpdir"
+
+submit_change "$linux" "$output"