diff options
author | V3n3RiX <venerix@redcorelinux.org> | 2019-09-08 15:14:19 +0100 |
---|---|---|
committer | V3n3RiX <venerix@redcorelinux.org> | 2019-09-08 15:14:19 +0100 |
commit | 05622c425f532dc3767105ff75c463483a7acf88 (patch) | |
tree | bf7bd5948c0f72e6aef120e4c488f7c970671649 | |
parent | 276c3ea5993e600766322d0ef5452fe73908a2f3 (diff) |
More bugfixesv3.1909.0
* backend :
* make sync more reliable and future proof (in case we will have more branches)
* while the bugfix commit 12c2d64d475552f7ccfb078613a8fbfcea1efaba fixed a long stading bug
* it also slowed us down considerably triggering metadata refresh when it wasn't actually
* needed. Rework the code to trigger metadata refresh only when absolutely needed
* this will speed up things considerably, specially dependency resolution
-rw-r--r-- | src/backend/libsisyphus.py | 78 |
1 files changed, 52 insertions, 26 deletions
diff --git a/src/backend/libsisyphus.py b/src/backend/libsisyphus.py index 8af5bf7..5ce9129 100644 --- a/src/backend/libsisyphus.py +++ b/src/backend/libsisyphus.py @@ -180,38 +180,59 @@ def syncLocalDatabase(): sisyphusdb.commit() sisyphusdb.close() +def checkPortageTree(): + os.chdir(gentooEbuildDir) + needsPortageTreeSync = int() + + localBranch = subprocess.check_output(['git', 'rev-parse', '--abbrev-ref', 'HEAD']) + localHash = subprocess.check_output(['git', 'rev-parse', '@']) + remoteHash = subprocess.check_output(['git', 'rev-parse', '@{u}']) + + subprocess.call(['git', 'fetch', '--depth=1', 'origin'] + localBranch.decode().strip().split() + ['--quiet']) + + if not localHash.decode().strip() == remoteHash.decode().strip(): + needsPortageTreeSync = int(1) + + return needsPortageTreeSync + +def checkOverlayTree(): + os.chdir(redcoreEbuildDir) + needsOverlayTreeSync = int() + + localBranch = subprocess.check_output(['git', 'rev-parse', '--abbrev-ref', 'HEAD']) + localHash = subprocess.check_output(['git', 'rev-parse', '@']) + remoteHash = subprocess.check_output(['git', 'rev-parse', '@{u}']) + + subprocess.call(['git', 'fetch', '--depth=1', 'origin'] + localBranch.decode().strip().split() + ['--quiet']) + + if not localHash.decode().strip() == remoteHash.decode().strip(): + needsOverlayTreeSync = int(1) + + return needsOverlayTreeSync + def syncPortageTree(): os.chdir(gentooEbuildDir) - currentBranch = subprocess.check_output(['git', 'rev-parse', '--abbrev-ref', 'HEAD']) + localBranch = subprocess.check_output(['git', 'rev-parse', '--abbrev-ref', 'HEAD']) + remoteBranch = subprocess.check_output(['git', 'rev-parse', '--symbolic-full-name', '@{u}']) - if currentBranch.decode().strip() is 'master': - subprocess.call(['git', 'fetch', '--depth=1', 'origin', 'master', '--quiet']) - subprocess.call(['git', 'reset', '--hard', 'origin/master', '--quiet']) - elif currentBranch.decode().strip() is 'next': - subprocess.call(['git', 'fetch', '--depth=1', 'origin', 'next', '--quiet']) - subprocess.call(['git', 'reset', '--hard', 'origin/next', '--quiet']) + subprocess.call(['git', 'fetch', '--depth=1', 'origin'] + localBranch.decode().strip().split() + ['--quiet']) + subprocess.call(['git', 'reset', '--hard'] + remoteBranch.decode().strip().replace('refs/remotes/','').split() + ['--quiet']) def syncOverlayTree(): os.chdir(redcoreEbuildDir) - currentBranch = subprocess.check_output(['git', 'rev-parse', '--abbrev-ref', 'HEAD']) + localBranch = subprocess.check_output(['git', 'rev-parse', '--abbrev-ref', 'HEAD']) + remoteBranch = subprocess.check_output(['git', 'rev-parse', '--symbolic-full-name', '@{u}']) - if currentBranch.decode().strip() is 'master': - subprocess.call(['git', 'fetch', '--depth=1', 'origin', 'master', '--quiet']) - subprocess.call(['git', 'reset', '--hard', 'origin/master', '--quiet']) - elif currentBranch.decode().strip() is 'next': - subprocess.call(['git', 'fetch', '--depth=1', 'origin', 'next', '--quiet']) - subprocess.call(['git', 'reset', '--hard', 'origin/next', '--quiet']) + subprocess.call(['git', 'fetch', '--depth=1', 'origin'] + localBranch.decode().strip().split() + ['--quiet']) + subprocess.call(['git', 'reset', '--hard'] + remoteBranch.decode().strip().replace('refs/remotes/','').split() + ['--quiet']) def syncPortageCfg(): os.chdir(portageConfigDir) - currentBranch = subprocess.check_output(['git', 'rev-parse', '--abbrev-ref', 'HEAD']) + localBranch = subprocess.check_output(['git', 'rev-parse', '--abbrev-ref', 'HEAD']) + remoteBranch = subprocess.check_output(['git', 'rev-parse', '--symbolic-full-name', '@{u}']) - if currentBranch.decode().strip() is 'master': - subprocess.call(['git', 'fetch', '--depth=1', 'origin', 'master', '--quiet']) - subprocess.call(['git', 'reset', '--hard', 'origin/master', '--quiet']) - elif currentBranch.decode().strip() is 'next': - subprocess.call(['git', 'fetch', '--depth=1', 'origin', 'next', '--quiet']) - subprocess.call(['git', 'reset', '--hard', 'origin/next', '--quiet']) + subprocess.call(['git', 'fetch', '--depth=1', 'origin'] + localBranch.decode().strip().split() + ['--quiet']) + subprocess.call(['git', 'reset', '--hard'] + remoteBranch.decode().strip().replace('refs/remotes/','').split() + ['--quiet']) def syncPortageMtd(): if os.path.isdir(portageMetadataDir): @@ -239,11 +260,16 @@ def cleanCacheDir(): def startUpdate(): checkRoot() cleanCacheDir() - syncPortageTree() - syncOverlayTree() - syncPortageCfg() - syncPortageMtd() - syncRemoteDatabase() + + needsPortageTreeSync = checkPortageTree() + needsOverlayTreeSync = checkOverlayTree() + + if (needsPortageTreeSync == 1) or (needsOverlayTreeSync == 1): + syncPortageTree() + syncOverlayTree() + syncPortageCfg() + syncPortageMtd() + syncRemoteDatabase() @animation.wait('syncing spm changes') def startSyncSPM(): |