Patchwork [2/7] scripts/combo-layer: make init set up initial component data

login
register
mail settings
Submitter Paul Eggleton
Date Nov. 4, 2011, 5:55 p.m.
Message ID <5f0d61491981b454613fde87e92e6b92a426a0c5.1320429268.git.paul.eggleton@linux.intel.com>
Download mbox | patch
Permalink /patch/14287/
State Accepted
Commit d4d491aa118b6cbe895167c62a46d883abc7b4ab
Headers show

Comments

Paul Eggleton - Nov. 4, 2011, 5:55 p.m.
The "init" subcommand will now copy the current state of each component
repository into the combo layer repository, set last_revision for each
component, and then use "git add" to set up the initial commit (but will
not actually make the initial commit - that is left up to the user).
Also take the opportunity to bump the version number.

Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
---
 scripts/combo-layer              |   22 ++++++++++++++++++++--
 scripts/combo-layer.conf.example |    5 +++--
 2 files changed, 23 insertions(+), 4 deletions(-)

Patch

diff --git a/scripts/combo-layer b/scripts/combo-layer
index d6d238d..db38a95 100755
--- a/scripts/combo-layer
+++ b/scripts/combo-layer
@@ -26,7 +26,7 @@  import logging
 import subprocess
 import ConfigParser
 
-__version__ = "0.1.0"
+__version__ = "0.2.0"
 
 def logger_create():
     logger = logging.getLogger("")
@@ -146,7 +146,7 @@  def runcmd(cmd,destdir=None):
 def action_init(conf, args):
     """
         Clone component repositories
-        Check git initialised and working tree is clean
+        Check git is initialised; if not, copy initial data from component repos
     """
     for name in conf.repos:
         ldir = conf.repos[name]['local_repo_dir']
@@ -155,6 +155,24 @@  def action_init(conf, args):
             subprocess.check_call("git clone %s %s" % (conf.repos[name]['src_uri'], ldir), shell=True)
     if not os.path.exists(".git"):
         runcmd("git init")
+        for name in conf.repos:
+            ldir = conf.repos[name]['local_repo_dir']
+            logger.info("copying data from %s..." % name)
+            dest_dir = conf.repos[name]['dest_dir']
+            if dest_dir and dest_dir != ".":
+                extract_dir = os.path.join(os.getcwd(), dest_dir)
+                os.makedirs(extract_dir)
+            else:
+                extract_dir = os.getcwd()
+            file_filter = conf.repos[name].get('file_filter',"")
+            runcmd("git archive master | tar -x -C %s %s" % (extract_dir, file_filter), ldir)
+            lastrev = runcmd("git rev-parse HEAD", ldir).strip()
+            conf.update(name, "last_revision", lastrev)
+        runcmd("git add .")
+        logger.info("Initial combo layer repository data has been created; please make any changes if desired and then use 'git commit' to make the initial commit.")
+    else:
+        logger.info("Repository already initialised, nothing to do.")
+
 
 def check_repo_clean(repodir):
     """
diff --git a/scripts/combo-layer.conf.example b/scripts/combo-layer.conf.example
index 09b9415..8cee04f 100644
--- a/scripts/combo-layer.conf.example
+++ b/scripts/combo-layer.conf.example
@@ -11,8 +11,9 @@  local_repo_dir = /home/kyu3/src/test/bitbake
 # use "." if it is root dir
 dest_dir = bitbake
 
-# the updated revision last time.
-# If empty, the tool will start from the first commit
+# the last update revision.
+# "init" will set this automatically, however if it is empty when "update"
+# is run, the tool will start from the first commit.
 last_revision =
 
 # optional options