[oe-commits] [openembedded-core] 09/62: devtool: set up git repos so that singletask.lock is ignored

git at git.openembedded.org git at git.openembedded.org
Tue Feb 6 11:07:10 UTC 2018


This is an automated email from the git hooks/post-receive script.

rpurdie pushed a commit to branch master
in repository openembedded-core.

commit 334ba846c795fc0d8c73ce05a1b0882739c86650
Author: Paul Eggleton <paul.eggleton at linux.intel.com>
AuthorDate: Thu Feb 1 08:32:07 2018 +1300

    devtool: set up git repos so that singletask.lock is ignored
    
    singletask.lock is written out while certain tasks execute for recipes
    that have externalsrc.bbclass enabled - this includes recipes in
    devtool's workspace. It appears that there's a race where
    singletask.lock will be there one minute and then when we try to get the
    file checksum of it (since we want to know if anything in the source
    tree has changed) it will be gone, and git chokes. To fix that, add
    singletask.lock to .git/info/exclude in the repository, regardless of
    whether we created the repository or not. In any case singletask.lock
    should never be tracked by git, so this is a good thing to be doing for
    that reason as well.
    
    This fixes oe-selftest failures in test_devtool_modify that we've seen
    on the Yocto Project autobuilder:
    
    bb.data_smart.ExpansionError: Failure expanding variable
    do_compile[file-checksums], expression was ${@srctree_hash_files(d)}
    which triggered exception CalledProcessError: Command
    '['git', 'add', '-A', '.']' returned non-zero exit status 128.
    
    Note that this only fixes this issue for devtool; if you are using
    externalsrc independently of devtool there's a chance this will still
    be an issue unless you add singletask.lock to your .gitignore.
    
    Signed-off-by: Paul Eggleton <paul.eggleton at linux.intel.com>
    Signed-off-by: Ross Burton <ross.burton at intel.com>
---
 scripts/lib/devtool/__init__.py | 14 ++++++++++++++
 1 file changed, 14 insertions(+)

diff --git a/scripts/lib/devtool/__init__.py b/scripts/lib/devtool/__init__.py
index 07d774d..89f098a 100644
--- a/scripts/lib/devtool/__init__.py
+++ b/scripts/lib/devtool/__init__.py
@@ -220,6 +220,20 @@ def setup_git_repo(repodir, version, devbranch, basetag='devtool-base', d=None):
         commit_cmd += ['-m', commitmsg]
         bb.process.run(commit_cmd, cwd=repodir)
 
+    # Ensure singletask.lock (as used by externalsrc.bbclass) is ignored by git
+    excludes = []
+    excludefile = os.path.join(repodir, '.git', 'info', 'exclude')
+    try:
+        with open(excludefile, 'r') as f:
+            excludes = f.readlines()
+    except FileNotFoundError:
+        pass
+    if 'singletask.lock\n' not in excludes:
+        excludes.append('singletask.lock\n')
+    with open(excludefile, 'w') as f:
+        for line in excludes:
+            f.write(line)
+
     bb.process.run('git checkout -b %s' % devbranch, cwd=repodir)
     bb.process.run('git tag -f %s' % basetag, cwd=repodir)
 

-- 
To stop receiving notification emails like this one, please contact
the administrator of this repository.


More information about the Openembedded-commits mailing list