Kaydet (Commit) 4bf93a4a authored tarafından Ali Rıza KESKİN's avatar Ali Rıza KESKİN

Merge branch 'develop' of https://gitlab.com/sulinos/devel/inary into develop

...@@ -94,6 +94,7 @@ class SourceDB(lazydb.LazyDB): ...@@ -94,6 +94,7 @@ class SourceDB(lazydb.LazyDB):
for src in self.list_sources(repo): for src in self.list_sources(repo):
for pkg in self.list_package_from_source(src): for pkg in self.list_package_from_source(src):
pkg_src[pkg] = src pkg_src[pkg] = src
self.pkg_src_nodes = pkg_src
return pkg_src return pkg_src
def list_sources(self, repo=None): def list_sources(self, repo=None):
......
...@@ -27,8 +27,6 @@ import gettext ...@@ -27,8 +27,6 @@ import gettext
__trans = gettext.translation('inary', fallback=True) __trans = gettext.translation('inary', fallback=True)
_ = __trans.gettext _ = __trans.gettext
@util.locked
def emerge(A): def emerge(A):
""" """
Builds and installs the given packages from source Builds and installs the given packages from source
...@@ -55,24 +53,25 @@ def emerge(A): ...@@ -55,24 +53,25 @@ def emerge(A):
need_build = [] need_build = []
order_build = A order_build = A
if need_build:
ctx.ui.info(_("""The following list of packages will be built:""")+"\n"
+ util.strlist(need_build) + util.strlist(order_build))
if ctx.get_option('dry_run'): if ctx.get_option('dry_run'):
return return
if len(need_build) + len(order_build) > len(A_0): # TODO: Enable this code
if not ctx.ui.confirm( #if need_build:
_('There are extra packages due to dependencies. Would you like to continue?')): # ctx.ui.info(_("""The following list of packages will be built:\n{} {}""").format(
return False # util.strlist(need_build),
# util.strlist(order_build)))
#
#if len(need_build) + len(order_build) > len(A_0):
# if not ctx.ui.confirm(
# _('There are extra packages due to dependencies. Would you like to continue?')):
# return False
ctx.ui.notify(ui.packagestogo, order=need_build) ctx.ui.notify(ui.packagestogo, order=need_build)
# Dependency install from source repo (fully emerge) # Dependency install from source repo (fully emerge)
sourcedb = inary.db.sourcedb.SourceDB() sourcedb = inary.db.sourcedb.SourceDB()
inary.operations.emerge.emerge(need_build) inary.operations.emerge.emerge(need_build)
# Dependency install from binary repo (half emerge) # Dependency install from binary repo (half emerge)
# TODO: Add half-emerge support from parameter # TODO: Add half-emerge support from parameter
# for x in order_inst: # for x in order_inst:
...@@ -125,7 +124,8 @@ def plan_emerge(A): ...@@ -125,7 +124,8 @@ def plan_emerge(A):
B = A B = A
install_list = set() install_list = set()
need_build = set() need_build = []
skip_list = set()
while len(B) > 0: while len(B) > 0:
Bp = set() Bp = set()
for x in B: for x in B:
...@@ -136,13 +136,26 @@ def plan_emerge(A): ...@@ -136,13 +136,26 @@ def plan_emerge(A):
# add dependencies # add dependencies
def find_build_dep(A): def find_build_dep(A):
# need_build is build list
# order_build is build list from input
# A is current process list
# skip_list is finished list
for i in A: for i in A:
if i in need_build: if i in need_build or \
i in order_build or \
i in A or \
i in skip_list:
return return
else: else:
need_build.add(pkgtosrc(i)) pkg = pkgtosrc(i)
src = get_spec(pkgtosrc(i)).source need_build.insert(0,pkg)
find_build_dep(src.buildDependencies) src = get_spec(pkg).source
for dep in src.buildDependencies:
if not installdb.has_package(dep.package):
if dep.package not in install_list:
find_build_dep([dep.package])
else:
skip_list.add(dep.package)
def process_dep(dep): def process_dep(dep):
if not dep.satisfied_by_installed(): if not dep.satisfied_by_installed():
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment