* install_pkg_files'i da seyettir
* dependency'de gereken seyleri seyettirt
This commit is contained in:
+8
-5
@@ -15,11 +15,7 @@ def satisfiesDep(pkg_name, depinfo):
|
||||
(version, release) = (pkg.version, pkg.release)
|
||||
return depinfo.satisfies(pkg_name, version, release)
|
||||
|
||||
def runtimeDeps(pkg):
|
||||
return packagedb.get_package(pkg).runtimeDeps
|
||||
|
||||
def satisfiesRuntimeDeps(pkg):
|
||||
deps = runtimeDeps(pkg)
|
||||
def satisfiesDeps(pkg, deps):
|
||||
for dep in deps:
|
||||
if not satisfiesDep(pkg, dep):
|
||||
ui.error('Package %s does not satisfy dependency %s\n' %
|
||||
@@ -27,6 +23,13 @@ def satisfiesRuntimeDeps(pkg):
|
||||
return False
|
||||
return True
|
||||
|
||||
def runtimeDeps(pkg):
|
||||
return packagedb.get_package(pkg).runtimeDeps
|
||||
|
||||
def satisfiesRuntimeDeps(pkg):
|
||||
deps = runtimeDeps(pkg)
|
||||
return satisfiesDeps(pkg, deps)
|
||||
|
||||
def installable(pkg):
|
||||
"""calculate if pkg is installable currently
|
||||
which means it has to satisfy both install and runtime dependencies"""
|
||||
|
||||
+3
-2
@@ -43,11 +43,12 @@ def install_single(pkg):
|
||||
# package filename. Otherwise we'll try installing a package from
|
||||
# the package repository.
|
||||
if url.isRemoteFile() or os.path.exists(url.uri):
|
||||
install_single_package(pkg)
|
||||
install_single_file(pkg)
|
||||
else:
|
||||
install_single_name(pkg)
|
||||
|
||||
def install_single_uri(pkg_location):
|
||||
def install_single_file(pkg_location):
|
||||
"""install a package file"""
|
||||
from install import Installer
|
||||
Installer(pkg_location).install()
|
||||
|
||||
|
||||
+18
-6
@@ -27,34 +27,44 @@ def install_pkg_files(packages):
|
||||
"""install a number of pisi package files"""
|
||||
from package import Package
|
||||
|
||||
for x in packages:
|
||||
if not x.endswith(const.package_prefix):
|
||||
ui.error('Mixing file names and package names not supported\n')
|
||||
return False
|
||||
|
||||
# read the package information into memory first
|
||||
# regardless of which distribution they come from
|
||||
d_t = {}
|
||||
for x in packages:
|
||||
package = Package(x)
|
||||
package.read()
|
||||
d_t[package.name] = package.metadata
|
||||
d_t[package.metadata.package.name] = package.metadata
|
||||
|
||||
# for this case, we have to determine the dependencies
|
||||
# that aren't already satisfied and try to install them
|
||||
# from the repository.
|
||||
# from the repository
|
||||
dep_unsatis = []
|
||||
for name in d_t.keys():
|
||||
pkg = d_t[name]
|
||||
deps = pkg.runtimeDeps
|
||||
if not dependency.satisfiesDep(pkg, deps):
|
||||
md = d_t[name]
|
||||
deps = md.package.runtimeDeps
|
||||
if not dependency.satisfiesDeps(md.package.name, deps):
|
||||
dep_unsatis.append(deps)
|
||||
|
||||
# now determine if these unsatisfied dependencies could
|
||||
# be satisfied by installing packages from the repo
|
||||
|
||||
# if so, then invoke install_pkg_names
|
||||
install_pkg_names([x.package for x in dep_unsatis])
|
||||
if install_pkg_names([x.package for x in dep_unsatis]):
|
||||
for x in packages:
|
||||
operations.install_single_file(x)
|
||||
|
||||
def install_pkg_names(A):
|
||||
"""This is the real thing. It installs packages from
|
||||
the repository, trying to perform a minimum number of
|
||||
installs"""
|
||||
|
||||
if len(A)==0:
|
||||
return True
|
||||
|
||||
# try to construct a pisi graph of packages to
|
||||
# install / reinstall
|
||||
@@ -87,6 +97,8 @@ def install_pkg_names(A):
|
||||
print l
|
||||
for x in l:
|
||||
operations.install_single_name(x)
|
||||
|
||||
return True # everything went OK :)
|
||||
|
||||
def remove(packages):
|
||||
#TODO: this for loop is just a placeholder
|
||||
|
||||
Reference in New Issue
Block a user