All of lore.kernel.org
 help / color / mirror / Atom feed
* [meta-oe][PATCH v2] patch.py: Initialize git repo before patching
@ 2021-12-01 14:15 Pavel Zhukov
  2021-12-01 15:56 ` [OE-core] " Alexander Kanavin
  0 siblings, 1 reply; 7+ messages in thread
From: Pavel Zhukov @ 2021-12-01 14:15 UTC (permalink / raw)
  To: openembedded-core; +Cc: Pavel Zhukov, pavel

From: Pavel Zhukov <pavel.zhukov@huawei.com>

If PATCHTOOL="git" has been specified but workdir is not git repo
bitbake fails to apply the patches. Fix this by initializing the repo
before patching.
This allows binary git patches to be applied.

Signed-off-by: Pavel Zhukov <pavel.zhukov@huawei.com>
---
 meta/lib/oe/patch.py                    | 17 +++++++++++++++++
 meta/lib/oeqa/selftest/cases/bbtests.py |  6 ++++++
 2 files changed, 23 insertions(+)

diff --git a/meta/lib/oe/patch.py b/meta/lib/oe/patch.py
index 7cd8436da5..720c6f663c 100644
--- a/meta/lib/oe/patch.py
+++ b/meta/lib/oe/patch.py
@@ -52,6 +52,10 @@ def runcmd(args, dir = None):
         if dir:
             os.chdir(olddir)
 
+def getstatusoutput(cmd):
+    import subprocess
+    return subprocess.getstatusoutput(cmd.split())
+
 class PatchError(Exception):
     def __init__(self, msg):
         self.msg = msg
@@ -294,6 +298,19 @@ class GitApplyTree(PatchTree):
         PatchTree.__init__(self, dir, d)
         self.commituser = d.getVar('PATCH_GIT_USER_NAME')
         self.commitemail = d.getVar('PATCH_GIT_USER_EMAIL')
+        if not self._isInitialized():
+            self._initRepo()
+
+    def _isInitialized(self):
+        cmd = "git rev-parse --show-toplevel"
+        (status, output) = getstatusoutput(cmd)
+        ## Make sure we're in builddir to not break top-level git repos
+        return status == 0 and os.path.samedir(output, self.dir)
+
+    def _initRepo(self):
+        runcmd("git init".split(), self.dir)
+        runcmd("git add .".split(), self.dir)
+        runcmd("git commit -a --allow-empty -m Patching_started".split(), self.dir)
 
     @staticmethod
     def extractPatchHeader(patchfile):
diff --git a/meta/lib/oeqa/selftest/cases/bbtests.py b/meta/lib/oeqa/selftest/cases/bbtests.py
index d4f6a08991..8c046074f6 100644
--- a/meta/lib/oeqa/selftest/cases/bbtests.py
+++ b/meta/lib/oeqa/selftest/cases/bbtests.py
@@ -294,3 +294,9 @@ INHERIT_remove = \"report-error\"
 
         test_recipe_summary_after = get_bb_var('SUMMARY', test_recipe)
         self.assertEqual(expected_recipe_summary, test_recipe_summary_after)
+
+    def test_git_patchtool(self):
+        self.write_recipeinc('man-db', 'PATCHTOOL=\"git\"')
+        result = bitbake('man-db -c patch', ignore_status=False)
+        self.delete_recipeinc('man-db')
+        bitbake('-cclean man-db')
-- 
2.34.0



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

* Re: [OE-core] [meta-oe][PATCH v2] patch.py: Initialize git repo before patching
  2021-12-01 14:15 [meta-oe][PATCH v2] patch.py: Initialize git repo before patching Pavel Zhukov
@ 2021-12-01 15:56 ` Alexander Kanavin
  2021-12-01 16:00   ` Pavel Zhukov
  0 siblings, 1 reply; 7+ messages in thread
From: Alexander Kanavin @ 2021-12-01 15:56 UTC (permalink / raw)
  To: Pavel Zhukov; +Cc: OE-core, Pavel Zhukov

[-- Attachment #1: Type: text/plain, Size: 3109 bytes --]

Does the test fail without the change in lib/oepatch.py? Can you show how?

Alex

On Wed, 1 Dec 2021 at 15:17, Pavel Zhukov <pavel@zhukoff.net> wrote:

> From: Pavel Zhukov <pavel.zhukov@huawei.com>
>
> If PATCHTOOL="git" has been specified but workdir is not git repo
> bitbake fails to apply the patches. Fix this by initializing the repo
> before patching.
> This allows binary git patches to be applied.
>
> Signed-off-by: Pavel Zhukov <pavel.zhukov@huawei.com>
> ---
>  meta/lib/oe/patch.py                    | 17 +++++++++++++++++
>  meta/lib/oeqa/selftest/cases/bbtests.py |  6 ++++++
>  2 files changed, 23 insertions(+)
>
> diff --git a/meta/lib/oe/patch.py b/meta/lib/oe/patch.py
> index 7cd8436da5..720c6f663c 100644
> --- a/meta/lib/oe/patch.py
> +++ b/meta/lib/oe/patch.py
> @@ -52,6 +52,10 @@ def runcmd(args, dir = None):
>          if dir:
>              os.chdir(olddir)
>
> +def getstatusoutput(cmd):
> +    import subprocess
> +    return subprocess.getstatusoutput(cmd.split())
> +
>  class PatchError(Exception):
>      def __init__(self, msg):
>          self.msg = msg
> @@ -294,6 +298,19 @@ class GitApplyTree(PatchTree):
>          PatchTree.__init__(self, dir, d)
>          self.commituser = d.getVar('PATCH_GIT_USER_NAME')
>          self.commitemail = d.getVar('PATCH_GIT_USER_EMAIL')
> +        if not self._isInitialized():
> +            self._initRepo()
> +
> +    def _isInitialized(self):
> +        cmd = "git rev-parse --show-toplevel"
> +        (status, output) = getstatusoutput(cmd)
> +        ## Make sure we're in builddir to not break top-level git repos
> +        return status == 0 and os.path.samedir(output, self.dir)
> +
> +    def _initRepo(self):
> +        runcmd("git init".split(), self.dir)
> +        runcmd("git add .".split(), self.dir)
> +        runcmd("git commit -a --allow-empty -m Patching_started".split(),
> self.dir)
>
>      @staticmethod
>      def extractPatchHeader(patchfile):
> diff --git a/meta/lib/oeqa/selftest/cases/bbtests.py
> b/meta/lib/oeqa/selftest/cases/bbtests.py
> index d4f6a08991..8c046074f6 100644
> --- a/meta/lib/oeqa/selftest/cases/bbtests.py
> +++ b/meta/lib/oeqa/selftest/cases/bbtests.py
> @@ -294,3 +294,9 @@ INHERIT_remove = \"report-error\"
>
>          test_recipe_summary_after = get_bb_var('SUMMARY', test_recipe)
>          self.assertEqual(expected_recipe_summary,
> test_recipe_summary_after)
> +
> +    def test_git_patchtool(self):
> +        self.write_recipeinc('man-db', 'PATCHTOOL=\"git\"')
> +        result = bitbake('man-db -c patch', ignore_status=False)
> +        self.delete_recipeinc('man-db')
> +        bitbake('-cclean man-db')
> --
> 2.34.0
>
>
> -=-=-=-=-=-=-=-=-=-=-=-
> Links: You receive all messages sent to this group.
> View/Reply Online (#159031):
> https://lists.openembedded.org/g/openembedded-core/message/159031
> Mute This Topic: https://lists.openembedded.org/mt/87428914/1686489
> Group Owner: openembedded-core+owner@lists.openembedded.org
> Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [
> alex.kanavin@gmail.com]
> -=-=-=-=-=-=-=-=-=-=-=-
>
>

[-- Attachment #2: Type: text/html, Size: 4511 bytes --]

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

* Re: [OE-core] [meta-oe][PATCH v2] patch.py: Initialize git repo before patching
  2021-12-01 15:56 ` [OE-core] " Alexander Kanavin
@ 2021-12-01 16:00   ` Pavel Zhukov
  2021-12-01 16:07     ` Alexander Kanavin
  0 siblings, 1 reply; 7+ messages in thread
From: Pavel Zhukov @ 2021-12-01 16:00 UTC (permalink / raw)
  To: Alexander Kanavin; +Cc: OE-core, Pavel Zhukov

[-- Attachment #1: Type: text/html, Size: 7955 bytes --]

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

* Re: [OE-core] [meta-oe][PATCH v2] patch.py: Initialize git repo before patching
  2021-12-01 16:00   ` Pavel Zhukov
@ 2021-12-01 16:07     ` Alexander Kanavin
  2021-12-01 16:14       ` Pavel Zhukov
  0 siblings, 1 reply; 7+ messages in thread
From: Alexander Kanavin @ 2021-12-01 16:07 UTC (permalink / raw)
  To: Pavel Zhukov; +Cc: OE-core, Pavel Zhukov

[-- Attachment #1: Type: text/plain, Size: 6319 bytes --]

Thanks :) You can add the failure into the commit message.

Alex

On Wed, 1 Dec 2021 at 17:00, Pavel Zhukov <pavel@zhukoff.net> wrote:

> without change in patch.py:
> ERROR: man-db-2.9.0-r1 do_patch: Applying patch
> 'man_db.conf-avoid-multilib-install-file-conflict.patch' on target
> directory
> '/mnt/builds/oniroproject/builds/build-oniro-linux-st/tmp/work/core2-64-oniro-linux-musl/man-db/2.9.0-r1/man-db-2.9.0'
> Command Error: 'git rev-parse --show-toplevel' exited with 0  Output:
> fatal: not a git repository (or any of the parent directories): .git
> ERROR: Logfile of failure stored in:
> /mnt/builds/oniroproject/builds/build-oniro-linux-st/tmp/work/core2-64-oniro-linux-musl/man-db/2.9.0-r1/temp/log.do_patch.21491
> NOTE: recipe man-db-2.9.0-r1: task do_patch: Failed
> ERROR: Task
> (/mnt/builds/oniroproject/sources/oe-core/meta/recipes-extended/man-db/man-db_2.9.0.bb:do_patch)
> failed with exit code '1'
> NOTE: Tasks Summary: Attempted 102 tasks of which 0 didn't need to be
> rerun and 1 failed.
>
> Summary: 1 task failed:
>
> /mnt/builds/oniroproject/sources/oe-core/meta/recipes-extended/man-db/man-db_2.9.0.bb:
> do_patch
> Summary: There was 1 ERROR message shown, returning a non-zero exit code.
> ----------------------------------------------------------------------
> 2021-12-01 15:11:56,184 - oe-selftest - INFO - Ran 1 test in 147.083s
> 2021-12-01 15:11:56,184 - oe-selftest - INFO - FAILED
> 2021-12-01 15:11:56,184 - oe-selftest - INFO -  (failures=1)
> 2021-12-01 15:11:58,721 - oe-selftest - INFO - RESULTS:
> 2021-12-01 15:11:58,722 - oe-selftest - INFO - RESULTS -
> bbtests.BitbakeTests.test_git_patchtool: FAILED (145.51s)
> 2021-12-01 15:11:58,724 - oe-selftest - INFO - SUMMARY:
> 2021-12-01 15:11:58,724 - oe-selftest - INFO - oe-selftest () - Ran 1 test
> in 147.084s
> 2021-12-01 15:11:58,724 - oe-selftest - INFO - oe-selftest - FAIL -
> Required tests failed (successes=0, skipped=0, failures=1, errors=0)
>
>
> with change in patch.py:
> 2021-12-01 15:12:20,910 - oe-selftest - INFO - Adding: "include
> selftest.inc" in
> /mnt/builds/oniroproject/builds/build-oniro-linux-st/conf/local.conf
> 2021-12-01 15:12:20,911 - oe-selftest - INFO - Adding: "include
> bblayers.inc" in bblayers.conf
> 2021-12-01 15:12:20,911 - oe-selftest - INFO - test_git_patchtool
> (bbtests.BitbakeTests)
> 2021-12-01 15:15:30,540 - oe-selftest - INFO -  ... ok
> 2021-12-01 15:15:31,717 - oe-selftest - INFO -
> ----------------------------------------------------------------------
> 2021-12-01 15:15:31,717 - oe-selftest - INFO - Ran 1 test in 192.371s
> 2021-12-01 15:15:31,717 - oe-selftest - INFO - OK
> 2021-12-01 15:15:34,523 - oe-selftest - INFO - RESULTS:
> 2021-12-01 15:15:34,524 - oe-selftest - INFO - RESULTS -
> bbtests.BitbakeTests.test_git_patchtool: PASSED (189.63s)
> 2021-12-01 15:15:34,526 - oe-selftest - INFO - SUMMARY:
> 2021-12-01 15:15:34,526 - oe-selftest - INFO - oe-selftest () - Ran 1 test
> in 192.372s
> 2021-12-01 15:15:34,526 - oe-selftest - INFO - oe-selftest - OK - All
> required tests passed (successes=1, skipped=0, failures=0, errors=0)
>
>
> --
> Pavel
>
>
>
> 01.12.2021, 16:56, "Alexander Kanavin" <alex.kanavin@gmail.com>:
>
> Does the test fail without the change in lib/oepatch.py? Can you show how?
>
> Alex
>
> On Wed, 1 Dec 2021 at 15:17, Pavel Zhukov <pavel@zhukoff.net> wrote:
>
> From: Pavel Zhukov <pavel.zhukov@huawei.com>
>
> If PATCHTOOL="git" has been specified but workdir is not git repo
> bitbake fails to apply the patches. Fix this by initializing the repo
> before patching.
> This allows binary git patches to be applied.
>
> Signed-off-by: Pavel Zhukov <pavel.zhukov@huawei.com>
> ---
>  meta/lib/oe/patch.py                    | 17 +++++++++++++++++
>  meta/lib/oeqa/selftest/cases/bbtests.py |  6 ++++++
>  2 files changed, 23 insertions(+)
>
> diff --git a/meta/lib/oe/patch.py b/meta/lib/oe/patch.py
> index 7cd8436da5..720c6f663c 100644
> --- a/meta/lib/oe/patch.py
> +++ b/meta/lib/oe/patch.py
> @@ -52,6 +52,10 @@ def runcmd(args, dir = None):
>          if dir:
>              os.chdir(olddir)
>
> +def getstatusoutput(cmd):
> +    import subprocess
> +    return subprocess.getstatusoutput(cmd.split())
> +
>  class PatchError(Exception):
>      def __init__(self, msg):
>          self.msg = msg
> @@ -294,6 +298,19 @@ class GitApplyTree(PatchTree):
>          PatchTree.__init__(self, dir, d)
>          self.commituser = d.getVar('PATCH_GIT_USER_NAME')
>          self.commitemail = d.getVar('PATCH_GIT_USER_EMAIL')
> +        if not self._isInitialized():
> +            self._initRepo()
> +
> +    def _isInitialized(self):
> +        cmd = "git rev-parse --show-toplevel"
> +        (status, output) = getstatusoutput(cmd)
> +        ## Make sure we're in builddir to not break top-level git repos
> +        return status == 0 and os.path.samedir(output, self.dir)
> +
> +    def _initRepo(self):
> +        runcmd("git init".split(), self.dir)
> +        runcmd("git add .".split(), self.dir)
> +        runcmd("git commit -a --allow-empty -m Patching_started".split(),
> self.dir)
>
>      @staticmethod
>      def extractPatchHeader(patchfile):
> diff --git a/meta/lib/oeqa/selftest/cases/bbtests.py
> b/meta/lib/oeqa/selftest/cases/bbtests.py
> index d4f6a08991..8c046074f6 100644
> --- a/meta/lib/oeqa/selftest/cases/bbtests.py
> +++ b/meta/lib/oeqa/selftest/cases/bbtests.py
> @@ -294,3 +294,9 @@ INHERIT_remove = \"report-error\"
>
>          test_recipe_summary_after = get_bb_var('SUMMARY', test_recipe)
>          self.assertEqual(expected_recipe_summary,
> test_recipe_summary_after)
> +
> +    def test_git_patchtool(self):
> +        self.write_recipeinc('man-db', 'PATCHTOOL=\"git\"')
> +        result = bitbake('man-db -c patch', ignore_status=False)
> +        self.delete_recipeinc('man-db')
> +        bitbake('-cclean man-db')
> --
> 2.34.0
>
>
> -=-=-=-=-=-=-=-=-=-=-=-
> Links: You receive all messages sent to this group.
> View/Reply Online (#159031):
> https://lists.openembedded.org/g/openembedded-core/message/159031
> Mute This Topic: https://lists.openembedded.org/mt/87428914/1686489
> Group Owner: openembedded-core+owner@lists.openembedded.org
> Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [
> alex.kanavin@gmail.com]
> -=-=-=-=-=-=-=-=-=-=-=-
>
>
>

[-- Attachment #2: Type: text/html, Size: 8497 bytes --]

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

* Re: [OE-core] [meta-oe][PATCH v2] patch.py: Initialize git repo before patching
  2021-12-01 16:07     ` Alexander Kanavin
@ 2021-12-01 16:14       ` Pavel Zhukov
  2021-12-01 16:26         ` Alexander Kanavin
  0 siblings, 1 reply; 7+ messages in thread
From: Pavel Zhukov @ 2021-12-01 16:14 UTC (permalink / raw)
  To: Alexander Kanavin; +Cc: OE-core, Pavel Zhukov

[-- Attachment #1: Type: text/html, Size: 8709 bytes --]

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

* Re: [OE-core] [meta-oe][PATCH v2] patch.py: Initialize git repo before patching
  2021-12-01 16:14       ` Pavel Zhukov
@ 2021-12-01 16:26         ` Alexander Kanavin
  2021-12-01 16:26           ` Alexander Kanavin
  0 siblings, 1 reply; 7+ messages in thread
From: Alexander Kanavin @ 2021-12-01 16:26 UTC (permalink / raw)
  To: Pavel Zhukov; +Cc: OE-core, Pavel Zhukov

[-- Attachment #1: Type: text/plain, Size: 6542 bytes --]

Not seeing that in v4 :)

Alex

On Wed, 1 Dec 2021 at 17:14, Pavel Zhukov <pavel@zhukoff.net> wrote:

> Thanks. Done in v4.
>
> --
> Pavel
>
>
>
> 01.12.2021, 17:08, "Alexander Kanavin" <alex.kanavin@gmail.com>:
>
> Thanks :) You can add the failure into the commit message.
>
> Alex
>
> On Wed, 1 Dec 2021 at 17:00, Pavel Zhukov <pavel@zhukoff.net> wrote:
>
> without change in patch.py:
> ERROR: man-db-2.9.0-r1 do_patch: Applying patch
> 'man_db.conf-avoid-multilib-install-file-conflict.patch' on target
> directory
> '/mnt/builds/oniroproject/builds/build-oniro-linux-st/tmp/work/core2-64-oniro-linux-musl/man-db/2.9.0-r1/man-db-2.9.0'
> Command Error: 'git rev-parse --show-toplevel' exited with 0  Output:
> fatal: not a git repository (or any of the parent directories): .git
> ERROR: Logfile of failure stored in:
> /mnt/builds/oniroproject/builds/build-oniro-linux-st/tmp/work/core2-64-oniro-linux-musl/man-db/2.9.0-r1/temp/log.do_patch.21491
> NOTE: recipe man-db-2.9.0-r1: task do_patch: Failed
> ERROR: Task
> (/mnt/builds/oniroproject/sources/oe-core/meta/recipes-extended/man-db/man-db_2.9.0.bb:do_patch)
> failed with exit code '1'
> NOTE: Tasks Summary: Attempted 102 tasks of which 0 didn't need to be
> rerun and 1 failed.
>
> Summary: 1 task failed:
>
> /mnt/builds/oniroproject/sources/oe-core/meta/recipes-extended/man-db/man-db_2.9.0.bb:
> do_patch
> Summary: There was 1 ERROR message shown, returning a non-zero exit code.
> ----------------------------------------------------------------------
> 2021-12-01 15:11:56,184 - oe-selftest - INFO - Ran 1 test in 147.083s
> 2021-12-01 15:11:56,184 - oe-selftest - INFO - FAILED
> 2021-12-01 15:11:56,184 - oe-selftest - INFO -  (failures=1)
> 2021-12-01 15:11:58,721 - oe-selftest - INFO - RESULTS:
> 2021-12-01 15:11:58,722 - oe-selftest - INFO - RESULTS -
> bbtests.BitbakeTests.test_git_patchtool: FAILED (145.51s)
> 2021-12-01 15:11:58,724 - oe-selftest - INFO - SUMMARY:
> 2021-12-01 15:11:58,724 - oe-selftest - INFO - oe-selftest () - Ran 1 test
> in 147.084s
> 2021-12-01 15:11:58,724 - oe-selftest - INFO - oe-selftest - FAIL -
> Required tests failed (successes=0, skipped=0, failures=1, errors=0)
>
>
> with change in patch.py:
> 2021-12-01 15:12:20,910 - oe-selftest - INFO - Adding: "include
> selftest.inc" in
> /mnt/builds/oniroproject/builds/build-oniro-linux-st/conf/local.conf
> 2021-12-01 15:12:20,911 - oe-selftest - INFO - Adding: "include
> bblayers.inc" in bblayers.conf
> 2021-12-01 15:12:20,911 - oe-selftest - INFO - test_git_patchtool
> (bbtests.BitbakeTests)
> 2021-12-01 15:15:30,540 - oe-selftest - INFO -  ... ok
> 2021-12-01 15:15:31,717 - oe-selftest - INFO -
> ----------------------------------------------------------------------
> 2021-12-01 15:15:31,717 - oe-selftest - INFO - Ran 1 test in 192.371s
> 2021-12-01 15:15:31,717 - oe-selftest - INFO - OK
> 2021-12-01 15:15:34,523 - oe-selftest - INFO - RESULTS:
> 2021-12-01 15:15:34,524 - oe-selftest - INFO - RESULTS -
> bbtests.BitbakeTests.test_git_patchtool: PASSED (189.63s)
> 2021-12-01 15:15:34,526 - oe-selftest - INFO - SUMMARY:
> 2021-12-01 15:15:34,526 - oe-selftest - INFO - oe-selftest () - Ran 1 test
> in 192.372s
> 2021-12-01 15:15:34,526 - oe-selftest - INFO - oe-selftest - OK - All
> required tests passed (successes=1, skipped=0, failures=0, errors=0)
>
>
> --
> Pavel
>
>
>
> 01.12.2021, 16:56, "Alexander Kanavin" <alex.kanavin@gmail.com>:
>
> Does the test fail without the change in lib/oepatch.py? Can you show how?
>
> Alex
>
> On Wed, 1 Dec 2021 at 15:17, Pavel Zhukov <pavel@zhukoff.net> wrote:
>
> From: Pavel Zhukov <pavel.zhukov@huawei.com>
>
> If PATCHTOOL="git" has been specified but workdir is not git repo
> bitbake fails to apply the patches. Fix this by initializing the repo
> before patching.
> This allows binary git patches to be applied.
>
> Signed-off-by: Pavel Zhukov <pavel.zhukov@huawei.com>
> ---
>  meta/lib/oe/patch.py                    | 17 +++++++++++++++++
>  meta/lib/oeqa/selftest/cases/bbtests.py |  6 ++++++
>  2 files changed, 23 insertions(+)
>
> diff --git a/meta/lib/oe/patch.py b/meta/lib/oe/patch.py
> index 7cd8436da5..720c6f663c 100644
> --- a/meta/lib/oe/patch.py
> +++ b/meta/lib/oe/patch.py
> @@ -52,6 +52,10 @@ def runcmd(args, dir = None):
>          if dir:
>              os.chdir(olddir)
>
> +def getstatusoutput(cmd):
> +    import subprocess
> +    return subprocess.getstatusoutput(cmd.split())
> +
>  class PatchError(Exception):
>      def __init__(self, msg):
>          self.msg = msg
> @@ -294,6 +298,19 @@ class GitApplyTree(PatchTree):
>          PatchTree.__init__(self, dir, d)
>          self.commituser = d.getVar('PATCH_GIT_USER_NAME')
>          self.commitemail = d.getVar('PATCH_GIT_USER_EMAIL')
> +        if not self._isInitialized():
> +            self._initRepo()
> +
> +    def _isInitialized(self):
> +        cmd = "git rev-parse --show-toplevel"
> +        (status, output) = getstatusoutput(cmd)
> +        ## Make sure we're in builddir to not break top-level git repos
> +        return status == 0 and os.path.samedir(output, self.dir)
> +
> +    def _initRepo(self):
> +        runcmd("git init".split(), self.dir)
> +        runcmd("git add .".split(), self.dir)
> +        runcmd("git commit -a --allow-empty -m Patching_started".split(),
> self.dir)
>
>      @staticmethod
>      def extractPatchHeader(patchfile):
> diff --git a/meta/lib/oeqa/selftest/cases/bbtests.py
> b/meta/lib/oeqa/selftest/cases/bbtests.py
> index d4f6a08991..8c046074f6 100644
> --- a/meta/lib/oeqa/selftest/cases/bbtests.py
> +++ b/meta/lib/oeqa/selftest/cases/bbtests.py
> @@ -294,3 +294,9 @@ INHERIT_remove = \"report-error\"
>
>          test_recipe_summary_after = get_bb_var('SUMMARY', test_recipe)
>          self.assertEqual(expected_recipe_summary,
> test_recipe_summary_after)
> +
> +    def test_git_patchtool(self):
> +        self.write_recipeinc('man-db', 'PATCHTOOL=\"git\"')
> +        result = bitbake('man-db -c patch', ignore_status=False)
> +        self.delete_recipeinc('man-db')
> +        bitbake('-cclean man-db')
> --
> 2.34.0
>
>
> -=-=-=-=-=-=-=-=-=-=-=-
> Links: You receive all messages sent to this group.
> View/Reply Online (#159031):
> https://lists.openembedded.org/g/openembedded-core/message/159031
> Mute This Topic: https://lists.openembedded.org/mt/87428914/1686489
> Group Owner: openembedded-core+owner@lists.openembedded.org
> Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [
> alex.kanavin@gmail.com]
> -=-=-=-=-=-=-=-=-=-=-=-
>
>
>

[-- Attachment #2: Type: text/html, Size: 9175 bytes --]

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

* Re: [OE-core] [meta-oe][PATCH v2] patch.py: Initialize git repo before patching
  2021-12-01 16:26         ` Alexander Kanavin
@ 2021-12-01 16:26           ` Alexander Kanavin
  0 siblings, 0 replies; 7+ messages in thread
From: Alexander Kanavin @ 2021-12-01 16:26 UTC (permalink / raw)
  To: Pavel Zhukov; +Cc: OE-core, Pavel Zhukov

[-- Attachment #1: Type: text/plain, Size: 6828 bytes --]

Nevermind, I do now :)

Alex

On Wed, 1 Dec 2021 at 17:26, Alexander Kanavin <alex.kanavin@gmail.com>
wrote:

> Not seeing that in v4 :)
>
> Alex
>
> On Wed, 1 Dec 2021 at 17:14, Pavel Zhukov <pavel@zhukoff.net> wrote:
>
>> Thanks. Done in v4.
>>
>> --
>> Pavel
>>
>>
>>
>> 01.12.2021, 17:08, "Alexander Kanavin" <alex.kanavin@gmail.com>:
>>
>> Thanks :) You can add the failure into the commit message.
>>
>> Alex
>>
>> On Wed, 1 Dec 2021 at 17:00, Pavel Zhukov <pavel@zhukoff.net> wrote:
>>
>> without change in patch.py:
>> ERROR: man-db-2.9.0-r1 do_patch: Applying patch
>> 'man_db.conf-avoid-multilib-install-file-conflict.patch' on target
>> directory
>> '/mnt/builds/oniroproject/builds/build-oniro-linux-st/tmp/work/core2-64-oniro-linux-musl/man-db/2.9.0-r1/man-db-2.9.0'
>> Command Error: 'git rev-parse --show-toplevel' exited with 0  Output:
>> fatal: not a git repository (or any of the parent directories): .git
>> ERROR: Logfile of failure stored in:
>> /mnt/builds/oniroproject/builds/build-oniro-linux-st/tmp/work/core2-64-oniro-linux-musl/man-db/2.9.0-r1/temp/log.do_patch.21491
>> NOTE: recipe man-db-2.9.0-r1: task do_patch: Failed
>> ERROR: Task
>> (/mnt/builds/oniroproject/sources/oe-core/meta/recipes-extended/man-db/man-db_2.9.0.bb:do_patch)
>> failed with exit code '1'
>> NOTE: Tasks Summary: Attempted 102 tasks of which 0 didn't need to be
>> rerun and 1 failed.
>>
>> Summary: 1 task failed:
>>
>> /mnt/builds/oniroproject/sources/oe-core/meta/recipes-extended/man-db/man-db_2.9.0.bb:
>> do_patch
>> Summary: There was 1 ERROR message shown, returning a non-zero exit code.
>> ----------------------------------------------------------------------
>> 2021-12-01 15:11:56,184 - oe-selftest - INFO - Ran 1 test in 147.083s
>> 2021-12-01 15:11:56,184 - oe-selftest - INFO - FAILED
>> 2021-12-01 15:11:56,184 - oe-selftest - INFO -  (failures=1)
>> 2021-12-01 15:11:58,721 - oe-selftest - INFO - RESULTS:
>> 2021-12-01 15:11:58,722 - oe-selftest - INFO - RESULTS -
>> bbtests.BitbakeTests.test_git_patchtool: FAILED (145.51s)
>> 2021-12-01 15:11:58,724 - oe-selftest - INFO - SUMMARY:
>> 2021-12-01 15:11:58,724 - oe-selftest - INFO - oe-selftest () - Ran 1
>> test in 147.084s
>> 2021-12-01 15:11:58,724 - oe-selftest - INFO - oe-selftest - FAIL -
>> Required tests failed (successes=0, skipped=0, failures=1, errors=0)
>>
>>
>> with change in patch.py:
>> 2021-12-01 15:12:20,910 - oe-selftest - INFO - Adding: "include
>> selftest.inc" in
>> /mnt/builds/oniroproject/builds/build-oniro-linux-st/conf/local.conf
>> 2021-12-01 15:12:20,911 - oe-selftest - INFO - Adding: "include
>> bblayers.inc" in bblayers.conf
>> 2021-12-01 15:12:20,911 - oe-selftest - INFO - test_git_patchtool
>> (bbtests.BitbakeTests)
>> 2021-12-01 15:15:30,540 - oe-selftest - INFO -  ... ok
>> 2021-12-01 15:15:31,717 - oe-selftest - INFO -
>> ----------------------------------------------------------------------
>> 2021-12-01 15:15:31,717 - oe-selftest - INFO - Ran 1 test in 192.371s
>> 2021-12-01 15:15:31,717 - oe-selftest - INFO - OK
>> 2021-12-01 15:15:34,523 - oe-selftest - INFO - RESULTS:
>> 2021-12-01 15:15:34,524 - oe-selftest - INFO - RESULTS -
>> bbtests.BitbakeTests.test_git_patchtool: PASSED (189.63s)
>> 2021-12-01 15:15:34,526 - oe-selftest - INFO - SUMMARY:
>> 2021-12-01 15:15:34,526 - oe-selftest - INFO - oe-selftest () - Ran 1
>> test in 192.372s
>> 2021-12-01 15:15:34,526 - oe-selftest - INFO - oe-selftest - OK - All
>> required tests passed (successes=1, skipped=0, failures=0, errors=0)
>>
>>
>> --
>> Pavel
>>
>>
>>
>> 01.12.2021, 16:56, "Alexander Kanavin" <alex.kanavin@gmail.com>:
>>
>> Does the test fail without the change in lib/oepatch.py? Can you show how?
>>
>> Alex
>>
>> On Wed, 1 Dec 2021 at 15:17, Pavel Zhukov <pavel@zhukoff.net> wrote:
>>
>> From: Pavel Zhukov <pavel.zhukov@huawei.com>
>>
>> If PATCHTOOL="git" has been specified but workdir is not git repo
>> bitbake fails to apply the patches. Fix this by initializing the repo
>> before patching.
>> This allows binary git patches to be applied.
>>
>> Signed-off-by: Pavel Zhukov <pavel.zhukov@huawei.com>
>> ---
>>  meta/lib/oe/patch.py                    | 17 +++++++++++++++++
>>  meta/lib/oeqa/selftest/cases/bbtests.py |  6 ++++++
>>  2 files changed, 23 insertions(+)
>>
>> diff --git a/meta/lib/oe/patch.py b/meta/lib/oe/patch.py
>> index 7cd8436da5..720c6f663c 100644
>> --- a/meta/lib/oe/patch.py
>> +++ b/meta/lib/oe/patch.py
>> @@ -52,6 +52,10 @@ def runcmd(args, dir = None):
>>          if dir:
>>              os.chdir(olddir)
>>
>> +def getstatusoutput(cmd):
>> +    import subprocess
>> +    return subprocess.getstatusoutput(cmd.split())
>> +
>>  class PatchError(Exception):
>>      def __init__(self, msg):
>>          self.msg = msg
>> @@ -294,6 +298,19 @@ class GitApplyTree(PatchTree):
>>          PatchTree.__init__(self, dir, d)
>>          self.commituser = d.getVar('PATCH_GIT_USER_NAME')
>>          self.commitemail = d.getVar('PATCH_GIT_USER_EMAIL')
>> +        if not self._isInitialized():
>> +            self._initRepo()
>> +
>> +    def _isInitialized(self):
>> +        cmd = "git rev-parse --show-toplevel"
>> +        (status, output) = getstatusoutput(cmd)
>> +        ## Make sure we're in builddir to not break top-level git repos
>> +        return status == 0 and os.path.samedir(output, self.dir)
>> +
>> +    def _initRepo(self):
>> +        runcmd("git init".split(), self.dir)
>> +        runcmd("git add .".split(), self.dir)
>> +        runcmd("git commit -a --allow-empty -m
>> Patching_started".split(), self.dir)
>>
>>      @staticmethod
>>      def extractPatchHeader(patchfile):
>> diff --git a/meta/lib/oeqa/selftest/cases/bbtests.py
>> b/meta/lib/oeqa/selftest/cases/bbtests.py
>> index d4f6a08991..8c046074f6 100644
>> --- a/meta/lib/oeqa/selftest/cases/bbtests.py
>> +++ b/meta/lib/oeqa/selftest/cases/bbtests.py
>> @@ -294,3 +294,9 @@ INHERIT_remove = \"report-error\"
>>
>>          test_recipe_summary_after = get_bb_var('SUMMARY', test_recipe)
>>          self.assertEqual(expected_recipe_summary,
>> test_recipe_summary_after)
>> +
>> +    def test_git_patchtool(self):
>> +        self.write_recipeinc('man-db', 'PATCHTOOL=\"git\"')
>> +        result = bitbake('man-db -c patch', ignore_status=False)
>> +        self.delete_recipeinc('man-db')
>> +        bitbake('-cclean man-db')
>> --
>> 2.34.0
>>
>>
>> -=-=-=-=-=-=-=-=-=-=-=-
>> Links: You receive all messages sent to this group.
>> View/Reply Online (#159031):
>> https://lists.openembedded.org/g/openembedded-core/message/159031
>> Mute This Topic: https://lists.openembedded.org/mt/87428914/1686489
>> Group Owner: openembedded-core+owner@lists.openembedded.org
>> Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [
>> alex.kanavin@gmail.com]
>> -=-=-=-=-=-=-=-=-=-=-=-
>>
>>
>>

[-- Attachment #2: Type: text/html, Size: 9622 bytes --]

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

end of thread, other threads:[~2021-12-01 16:26 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-12-01 14:15 [meta-oe][PATCH v2] patch.py: Initialize git repo before patching Pavel Zhukov
2021-12-01 15:56 ` [OE-core] " Alexander Kanavin
2021-12-01 16:00   ` Pavel Zhukov
2021-12-01 16:07     ` Alexander Kanavin
2021-12-01 16:14       ` Pavel Zhukov
2021-12-01 16:26         ` Alexander Kanavin
2021-12-01 16:26           ` Alexander Kanavin

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.