summaryrefslogtreecommitdiff
path: root/src/backend/solvedeps.py
diff options
context:
space:
mode:
authorV3n3RiX <venerix@koprulu.sector>2022-10-30 14:41:24 +0000
committerV3n3RiX <venerix@koprulu.sector>2022-10-30 14:41:24 +0000
commitd5fcb065ad5442e20517ff35508c6b4b8ca59ef1 (patch)
tree4f588edb573e2bd0fc0988cb7ef583d4d178b26a /src/backend/solvedeps.py
parent93e836bbb49430929f7d827a9eb62246dd809f4c (diff)
move resolveDeps -> solvedeps
Diffstat (limited to 'src/backend/solvedeps.py')
-rw-r--r--src/backend/solvedeps.py68
1 files changed, 68 insertions, 0 deletions
diff --git a/src/backend/solvedeps.py b/src/backend/solvedeps.py
new file mode 100644
index 0000000..41e9103
--- /dev/null
+++ b/src/backend/solvedeps.py
@@ -0,0 +1,68 @@
+#!/usr/bin/python3
+
+import animation
+import subprocess
+
+@animation.wait('resolving dependencies')
+def package(pkgname):
+ areBinaries = []
+ areSources = []
+ needsConfig = int()
+ portageExec = subprocess.Popen(['emerge', '--quiet', '--pretend', '--getbinpkg', '--rebuilt-binaries', '--with-bdeps=y', '--misspell-suggestion=n', '--fuzzy-search=n'] + list(pkgname), stdout=subprocess.PIPE, stderr=subprocess.PIPE)
+ stdout, stderr = portageExec.communicate()
+
+ for portageOutput in stderr.decode('utf-8').splitlines():
+ if "The following keyword changes are necessary to proceed:" in portageOutput:
+ needsConfig = int(1)
+
+ if "The following mask changes are necessary to proceed:" in portageOutput:
+ needsConfig = int(1)
+
+ if "The following USE changes are necessary to proceed:" in portageOutput:
+ needsConfig = int(1)
+
+ if "The following REQUIRED_USE flag constraints are unsatisfied:" in portageOutput:
+ needsConfig = int(1)
+
+ for portageOutput in stdout.decode('utf-8').splitlines():
+ if "[binary" in portageOutput:
+ isBinary = portageOutput.split("]")[1].split("[")[0].strip(" ")
+ areBinaries.append(isBinary)
+
+ if "[ebuild" in portageOutput:
+ isSource = portageOutput.split("]")[1].split("[")[0].strip(" ")
+ areSources.append(isSource)
+
+ return areBinaries,areSources,needsConfig
+
+@animation.wait('resolving dependencies')
+def world():
+ areBinaries = []
+ areSources = []
+ needsConfig = int()
+ portageExec = subprocess.Popen(['emerge', '--quiet', '--update', '--deep', '--newuse', '--pretend', '--getbinpkg', '--rebuilt-binaries', '--backtrack=100', '--with-bdeps=y', '--misspell-suggestion=n', '--fuzzy-search=n', '@world'], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
+ stdout, stderr = portageExec.communicate()
+
+ for portageOutput in stderr.decode('utf-8').splitlines():
+ if "The following keyword changes are necessary to proceed:" in portageOutput:
+ needsConfig = int(1)
+
+ if "The following mask changes are necessary to proceed:" in portageOutput:
+ needsConfig = int(1)
+
+ if "The following USE changes are necessary to proceed:" in portageOutput:
+ needsConfig = int(1)
+
+ if "The following REQUIRED_USE flag constraints are unsatisfied:" in portageOutput:
+ needsConfig = int(1)
+
+ for portageOutput in stdout.decode('utf-8').splitlines():
+ if "[binary" in portageOutput:
+ isBinary = portageOutput.split("]")[1].split("[")[0].strip(" ")
+ areBinaries.append(isBinary)
+
+ if "[ebuild" in portageOutput:
+ isSource = portageOutput.split("]")[1].split("[")[0].strip(" ")
+ areSources.append(isSource)
+
+ return areBinaries,areSources,needsConfig