diff mbox series

buildman: Remove _of_#_ from results directory paths

Message ID 20200515063012.29984-1-ovidiu.panait@windriver.com
State Accepted
Commit 7664b03ffc51fa7563969c61fa28bf656af441bd
Delegated to: Simon Glass
Headers show
Series buildman: Remove _of_#_ from results directory paths | expand

Commit Message

Ovidiu Panait May 15, 2020, 6:30 a.m. UTC
Currently, the following scenario will rebuild the first commit even
though it is not really necessary - the commit sha or the position in the
patchset did not change:

$ git am <local-patch-0001>
$ tools/buildman/buildman -P -E -W -b master mx6
<do some more development work>
$ git am <local-patch-0002>
$ tools/buildman/buildman -P -E -W -b master mx6 <- will rebuild the first
						    commit as well, even
						    though nothing has
						    changed about it.

This is due to the fact that previous results directories get removed
when the number of commits change. By removing the _of_#_ part of the
directory path, the commits will be rebuilt only if the commit sha or the
position in the patchset changes. Also, update the testcase to reflect this
change.

Signed-off-by: Ovidiu Panait <ovidiu.panait@windriver.com>
---

 tools/buildman/builder.py | 10 +++++-----
 tools/buildman/test.py    |  8 ++++----
 2 files changed, 9 insertions(+), 9 deletions(-)

Comments

Simon Glass June 8, 2020, 2:43 a.m. UTC | #1
Hi Ovidiu,

On Fri, 15 May 2020 at 00:32, Ovidiu Panait <ovidiu.panait@windriver.com> wrote:
>
> Currently, the following scenario will rebuild the first commit even
> though it is not really necessary - the commit sha or the position in the
> patchset did not change:
>
> $ git am <local-patch-0001>
> $ tools/buildman/buildman -P -E -W -b master mx6
> <do some more development work>
> $ git am <local-patch-0002>
> $ tools/buildman/buildman -P -E -W -b master mx6 <- will rebuild the first
>                                                     commit as well, even
>                                                     though nothing has
>                                                     changed about it.
>
> This is due to the fact that previous results directories get removed
> when the number of commits change. By removing the _of_#_ part of the
> directory path, the commits will be rebuilt only if the commit sha or the
> position in the patchset changes. Also, update the testcase to reflect this
> change.
>
> Signed-off-by: Ovidiu Panait <ovidiu.panait@windriver.com>
> ---
>
>  tools/buildman/builder.py | 10 +++++-----
>  tools/buildman/test.py    |  8 ++++----
>  2 files changed, 9 insertions(+), 9 deletions(-)

I've been thinking about changing this, so let's do it.

Reviewed-by: Simon Glass <sjg@chromium.org>
Simon Glass June 13, 2020, 3:11 a.m. UTC | #2
Hi Ovidiu,

On Fri, 15 May 2020 at 00:32, Ovidiu Panait <ovidiu.panait@windriver.com> wrote:
>
> Currently, the following scenario will rebuild the first commit even
> though it is not really necessary - the commit sha or the position in the
> patchset did not change:
>
> $ git am <local-patch-0001>
> $ tools/buildman/buildman -P -E -W -b master mx6
> <do some more development work>
> $ git am <local-patch-0002>
> $ tools/buildman/buildman -P -E -W -b master mx6 <- will rebuild the first
>                                                     commit as well, even
>                                                     though nothing has
>                                                     changed about it.
>
> This is due to the fact that previous results directories get removed
> when the number of commits change. By removing the _of_#_ part of the
> directory path, the commits will be rebuilt only if the commit sha or the
> position in the patchset changes. Also, update the testcase to reflect this
> change.
>
> Signed-off-by: Ovidiu Panait <ovidiu.panait@windriver.com>
> ---
>
>  tools/buildman/builder.py | 10 +++++-----
>  tools/buildman/test.py    |  8 ++++----
>  2 files changed, 9 insertions(+), 9 deletions(-)

I've been thinking about changing this, so let's do it.

Reviewed-by: Simon Glass <sjg@chromium.org>

Applied to u-boot-dm, thanks!
diff mbox series

Patch

diff --git a/tools/buildman/builder.py b/tools/buildman/builder.py
index f8e71de427..f2756ea666 100644
--- a/tools/buildman/builder.py
+++ b/tools/buildman/builder.py
@@ -70,12 +70,12 @@  As an example, say we are building branch 'us-net' for boards 'sandbox' and
 like this:
 
 us-net/             base directory
-    01_of_02_g4ed4ebc_net--Add-tftp-speed-/
+    01_g4ed4ebc_net--Add-tftp-speed-/
         sandbox/
             u-boot.bin
         seaboard/
             u-boot.bin
-    02_of_02_g4ed4ebc_net--Check-tftp-comp/
+    02_g4ed4ebc_net--Check-tftp-comp/
         sandbox/
             u-boot.bin
         seaboard/
@@ -487,8 +487,8 @@  class Builder:
             commit = self.commits[commit_upto]
             subject = commit.subject.translate(trans_valid_chars)
             # See _GetOutputSpaceRemovals() which parses this name
-            commit_dir = ('%02d_of_%02d_g%s_%s' % (commit_upto + 1,
-                    self.commit_count, commit.hash, subject[:20]))
+            commit_dir = ('%02d_g%s_%s' % (commit_upto + 1,
+                    commit.hash, subject[:20]))
         elif not self.no_subdirs:
             commit_dir = 'current'
         if not commit_dir:
@@ -1599,7 +1599,7 @@  class Builder:
         for dirname in glob.glob(os.path.join(self.base_dir, '*')):
             if dirname not in dir_list:
                 leaf = dirname[len(self.base_dir) + 1:]
-                m =  re.match('[0-9]+_of_[0-9]+_g[0-9a-f]+_.*', leaf)
+                m =  re.match('[0-9]+_g[0-9a-f]+_.*', leaf)
                 if m:
                     to_remove.append(dirname)
         return to_remove
diff --git a/tools/buildman/test.py b/tools/buildman/test.py
index 40811ba9f9..82d25cfcaa 100644
--- a/tools/buildman/test.py
+++ b/tools/buildman/test.py
@@ -541,7 +541,7 @@  class TestBuild(unittest.TestCase):
         build.commits = self.commits
         build.commit_count = len(self.commits)
         subject = self.commits[1].subject.translate(builder.trans_valid_chars)
-        dirname ='/%02d_of_%02d_g%s_%s' % (2, build.commit_count, commits[1][0],
+        dirname ='/%02d_g%s_%s' % (2, build.commit_count, commits[1][0],
                                            subject[:20])
         self.CheckDirs(build, dirname)
 
@@ -609,9 +609,9 @@  class TestBuild(unittest.TestCase):
         base_dir = tempfile.mkdtemp()
 
         # Add various files that we want removed and left alone
-        to_remove = ['01_of_22_g0982734987_title', '102_of_222_g92bf_title',
-                     '01_of_22_g2938abd8_title']
-        to_leave = ['something_else', '01-something.patch', '01_of_22_another']
+        to_remove = ['01_g0982734987_title', '102_g92bf_title',
+                     '01_g2938abd8_title']
+        to_leave = ['something_else', '01-something.patch', '01_another']
         for name in to_remove + to_leave:
             _Touch(name)