summaryrefslogtreecommitdiff
path: root/src/backend/solvedeps.py
diff options
context:
space:
mode:
authorV3n3RiX <venerix@redcorelinux.org>2020-06-06 16:22:04 +0100
committerV3n3RiX <venerix@redcorelinux.org>2020-06-06 16:22:04 +0100
commitac0efd1bd6c703147bd8d3caedf489fab87d6131 (patch)
treee6af981b6e90be35447dbb88dd276a4d8ff2d47e /src/backend/solvedeps.py
parent49e6ab19aa461151132dfb4f1cf962d4ef403c66 (diff)
big rewrite : split the backend in smaller pieces, rework the cli frontend to work with the new backend ... gui frontend wip
Diffstat (limited to 'src/backend/solvedeps.py')
-rw-r--r--src/backend/solvedeps.py69
1 files changed, 69 insertions, 0 deletions
diff --git a/src/backend/solvedeps.py b/src/backend/solvedeps.py
new file mode 100644
index 0000000..256d588
--- /dev/null
+++ b/src/backend/solvedeps.py
@@ -0,0 +1,69 @@
+#!/usr/bin/python3
+
+import animation
+import subprocess
+import io
+
+@animation.wait('resolving dependencies')
+def package(pkgList):
+ areBinaries = []
+ areSources = []
+ needsConfig = int()
+ portageExec = subprocess.Popen(['emerge', '--quiet', '--pretend', '--getbinpkg', '--rebuilt-binaries', '--misspell-suggestion=n', '--fuzzy-search=n'] + pkgList, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
+
+ for portageOutput in io.TextIOWrapper(portageExec.stderr, encoding="utf-8"):
+ if "The following keyword changes are necessary to proceed:" in portageOutput.rstrip():
+ needsConfig = int(1)
+
+ if "The following mask changes are necessary to proceed:" in portageOutput.rstrip():
+ needsConfig = int(1)
+
+ if "The following USE changes are necessary to proceed:" in portageOutput.rstrip():
+ needsConfig = int(1)
+
+ if "The following REQUIRED_USE flag constraints are unsatisfied:" in portageOutput.rstrip():
+ needsConfig = int(1)
+
+ for portageOutput in io.TextIOWrapper(portageExec.stdout, encoding="utf-8"):
+ if "[binary" in portageOutput.rstrip():
+ isBinary = str(portageOutput.rstrip().split("]")[1].split("[")[0].strip("\ "))
+ areBinaries.append(isBinary)
+
+ if "[ebuild" in portageOutput.rstrip():
+ isSource = str(portageOutput.rstrip().split("]")[1].split("[")[0].strip("\ "))
+ areSources.append(isSource)
+
+ portageExec.wait()
+ 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)
+
+ for portageOutput in io.TextIOWrapper(portageExec.stderr, encoding="utf-8"):
+ if "The following keyword changes are necessary to proceed:" in portageOutput.rstrip():
+ needsConfig = int(1)
+
+ if "The following mask changes are necessary to proceed:" in portageOutput.rstrip():
+ needsConfig = int(1)
+
+ if "The following USE changes are necessary to proceed:" in portageOutput.rstrip():
+ needsConfig = int(1)
+
+ if "The following REQUIRED_USE flag constraints are unsatisfied:" in portageOutput.rstrip():
+ needsConfig = int(1)
+
+ for portageOutput in io.TextIOWrapper(portageExec.stdout, encoding="utf-8"):
+ if "[binary" in portageOutput.rstrip():
+ isBinary = str(portageOutput.rstrip().split("]")[1].split("[")[0].strip("\ "))
+ areBinaries.append(isBinary)
+
+ if "[ebuild" in portageOutput.rstrip():
+ isSource = str(portageOutput.rstrip().split("]")[1].split("[")[0].strip("\ "))
+ areSources.append(isSource)
+
+ portageExec.wait()
+ return areBinaries,areSources,needsConfig