[oe-commits] [openembedded-core] 20/66: devtool: prevent starting git gc in background

git at git.openembedded.org git at git.openembedded.org
Tue May 21 23:32:43 UTC 2019


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

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

commit eae5caaf050f54a065e2654a60f55fda2c3afd95
Author: Taras Kondratiuk <takondra at cisco.com>
AuthorDate: Thu Mar 21 17:56:59 2019 -0700

    devtool: prevent starting git gc in background
    
    Devtool creates a git repository for extracted sources in a temporary
    directory and then moves it to a final destination after patching is
    done. Unfortunately devtool is not aware that some of its git operations
    may have caused git garbage collector to start in background. If timing
    is just right a repository move fails because GC is removing git objects
    while they are being moved.
    
    The issue was hit on Krogoth release, but the code that moves created
    git repository is still the same.
    
    Disable gc.autodetach to make GC run synchronously and block git until
    it is done.
    
    Traceback (most recent call last):
      File "<snip>/openembedded-core/scripts/devtool", line 342, in <module>
        ret = main()
      File "<snip>/openembedded-core/scripts/devtool", line 329, in main
        ret = args.func(args, config, basepath, workspace)
      File "<snip>/openembedded-core/scripts/lib/devtool/standard.py", line 352, in extract
        initial_rev = _extract_source(srctree, args.keep_temp, args.branch, False, rd)
      File "<snip>/openembedded-core/scripts/lib/devtool/standard.py", line 644, in _extract_source
        shutil.move(srcsubdir, srctree)
      File "/usr/lib/python2.7/shutil.py", line 299, in move
        copytree(src, real_dst, symlinks=True)
      File "/usr/lib/python2.7/shutil.py", line 208, in copytree
        raise Error, errors
    Error: [('/tmp/devtool5RXkuX/workdir/grpc-1.2.5/.git/objects/5e', '<snip>/build/grpc/grpc_src/.git/objects/5e', "[Errno 2] No such file or directory: '/tmp/devtool5RXkuX/workdir/grpc-1.2.5/.git/objects/5e'"), ('/tmp/devtool5RXkuX/workdir/grpc-1.2.5/.git/objects/57', '<snip>/build/grpc/grpc_src/.git/objects/57', "[Errno 2] No such file or directory: '/tmp/devtool5RXkuX/workdir/grpc-1.2.5/.git/objects/57'"), many git objects ... ]
    
    Signed-off-by: Taras Kondratiuk <takondra at cisco.com>
    Signed-off-by: Richard Purdie <richard.purdie at linuxfoundation.org>
    Signed-off-by: Armin Kuster <akuster808 at gmail.com>
---
 scripts/lib/devtool/__init__.py | 1 +
 1 file changed, 1 insertion(+)

diff --git a/scripts/lib/devtool/__init__.py b/scripts/lib/devtool/__init__.py
index 89f098a..8fc7fff 100644
--- a/scripts/lib/devtool/__init__.py
+++ b/scripts/lib/devtool/__init__.py
@@ -205,6 +205,7 @@ def setup_git_repo(repodir, version, devbranch, basetag='devtool-base', d=None):
     import oe.patch
     if not os.path.exists(os.path.join(repodir, '.git')):
         bb.process.run('git init', cwd=repodir)
+        bb.process.run('git config --local gc.autodetach 0', cwd=repodir)
         bb.process.run('git add .', cwd=repodir)
         commit_cmd = ['git']
         oe.patch.GitApplyTree.gitCommandUserOptions(commit_cmd, d=d)

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


More information about the Openembedded-commits mailing list