apkbuild-gem-resolver: correct terminology used in indentifiers
This commit is contained in:
parent
d1deffc952
commit
3b8bfec13d
@ -9,7 +9,7 @@ require 'rubygems/dependency'
|
|||||||
require 'rubygems/resolver'
|
require 'rubygems/resolver'
|
||||||
require 'rubygems/spec_fetcher'
|
require 'rubygems/spec_fetcher'
|
||||||
|
|
||||||
class Aport
|
class Package
|
||||||
RUBY_SUBPACKAGES = {
|
RUBY_SUBPACKAGES = {
|
||||||
'2.0.0_p353' => {
|
'2.0.0_p353' => {
|
||||||
'ruby-minitest' => ['minitest', '4.3.2'],
|
'ruby-minitest' => ['minitest', '4.3.2'],
|
||||||
@ -47,7 +47,7 @@ class Aport
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@aports = {}
|
@@packages = {}
|
||||||
@@subpackages = []
|
@@subpackages = []
|
||||||
|
|
||||||
def self.initialize testing
|
def self.initialize testing
|
||||||
@ -62,8 +62,8 @@ class Aport
|
|||||||
repos = ['main']
|
repos = ['main']
|
||||||
repos << 'testing' if testing
|
repos << 'testing' if testing
|
||||||
for repo in repos
|
for repo in repos
|
||||||
for aport in aug.match "#{apath}/#{repo}/*"
|
for pkg in aug.match "#{apath}/#{repo}/*"
|
||||||
FileAport.new(aug, aport) unless aport.end_with? '/ruby'
|
Aport.new(aug, pkg) unless pkg.end_with? '/ruby'
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -71,25 +71,25 @@ class Aport
|
|||||||
aug.get("#{apath}/main/ruby/APKBUILD/pkgver")
|
aug.get("#{apath}/main/ruby/APKBUILD/pkgver")
|
||||||
]
|
]
|
||||||
gem, version, *deps = attrs
|
gem, version, *deps = attrs
|
||||||
aport = new name, gem, version
|
pkg = new name, gem, version
|
||||||
for dep in deps
|
for dep in deps
|
||||||
aport.add_dependency dep
|
pkg.add_dependency dep
|
||||||
end
|
end
|
||||||
@@subpackages << aport
|
@@subpackages << pkg
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@@aports.each_value do |aport|
|
@@packages.each_value do |pkg|
|
||||||
aport.depends do |dep|
|
pkg.depends do |dep|
|
||||||
dep.add_user aport
|
dep.add_user pkg
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def self.get name
|
def self.get name
|
||||||
aport = @@aports[name]
|
pkg = @@packages[name]
|
||||||
raise 'Invalid package name: ' + name unless aport
|
raise 'Invalid package name: ' + name unless pkg
|
||||||
aport
|
pkg
|
||||||
end
|
end
|
||||||
|
|
||||||
def self.ruby_subpkgs
|
def self.ruby_subpkgs
|
||||||
@ -104,7 +104,7 @@ class Aport
|
|||||||
@version = version
|
@version = version
|
||||||
@depends = []
|
@depends = []
|
||||||
@users = []
|
@users = []
|
||||||
@@aports[name] = self
|
@@packages[name] = self
|
||||||
end
|
end
|
||||||
|
|
||||||
def add_dependency name
|
def add_dependency name
|
||||||
@ -115,10 +115,10 @@ class Aport
|
|||||||
|
|
||||||
def depends
|
def depends
|
||||||
for dep in @depends
|
for dep in @depends
|
||||||
unless @@aports.has_key? dep
|
unless @@packages.has_key? dep
|
||||||
raise "Dependency for #{@name} does not exist: #{dep}"
|
raise "Dependency for #{@name} does not exist: #{dep}"
|
||||||
end
|
end
|
||||||
yield @@aports[dep]
|
yield @@packages[dep]
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -133,7 +133,7 @@ class Aport
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
class FileAport < Aport
|
class Aport < Package
|
||||||
def initialize aug, path
|
def initialize aug, path
|
||||||
name = path.split('/')[-1]
|
name = path.split('/')[-1]
|
||||||
|
|
||||||
@ -160,12 +160,12 @@ class Update
|
|||||||
end
|
end
|
||||||
|
|
||||||
def require_version name, version
|
def require_version name, version
|
||||||
gem = assign(Aport.get(name).gem, name)
|
gem = assign(Package.get(name).gem, name)
|
||||||
@deps << gem.dependency if gem.require_version version
|
@deps << gem.dependency if gem.require_version version
|
||||||
end
|
end
|
||||||
|
|
||||||
def resolve
|
def resolve
|
||||||
Aport.ruby_subpkgs do |pkg|
|
Package.ruby_subpkgs do |pkg|
|
||||||
require_version pkg.name, pkg.version unless @gems[pkg.gem]
|
require_version pkg.name, pkg.version unless @gems[pkg.gem]
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -187,9 +187,9 @@ class Update
|
|||||||
|
|
||||||
for name, gem in @gems
|
for name, gem in @gems
|
||||||
if gem.updated?
|
if gem.updated?
|
||||||
gem.aport.users do |user|
|
gem.package.users do |user|
|
||||||
ugem = @gems[user.gem]
|
ugem = @gems[user.gem]
|
||||||
if !ugem || ugem.aport.name != user.name
|
if !ugem || ugem.package.name != user.name
|
||||||
Gem::Resolver.new(
|
Gem::Resolver.new(
|
||||||
[gem.dependency, Gem::Dependency.new(user.gem, user.version)]
|
[gem.dependency, Gem::Dependency.new(user.gem, user.version)]
|
||||||
).resolve
|
).resolve
|
||||||
@ -206,30 +206,30 @@ class Update
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def assign name, aport
|
def assign name, package
|
||||||
aport = Aport.get aport
|
pkg = Package.get package
|
||||||
|
|
||||||
if @gems.has_key? name
|
if @gems.has_key? name
|
||||||
gem = @gems[name]
|
gem = @gems[name]
|
||||||
return gem if aport == gem.aport
|
return gem if pkg == gem.package
|
||||||
raise "Conflicting packages for gem #{name}: #{gem.aport.name} and #{aport.name}"
|
raise "Conflicting packages for gem #{name}: #{gem.package.name} and #{pkg.name}"
|
||||||
end
|
end
|
||||||
|
|
||||||
gem = AportGem.new self, name, aport
|
gem = PackagedGem.new self, name, pkg
|
||||||
@gems[name] = gem
|
@gems[name] = gem
|
||||||
gem
|
gem
|
||||||
end
|
end
|
||||||
|
|
||||||
private
|
private
|
||||||
|
|
||||||
class AportGem
|
class PackagedGem
|
||||||
def initialize update, name, aport
|
def initialize update, name, package
|
||||||
@update = update
|
@update = update
|
||||||
@name = name
|
@name = name
|
||||||
@aport = aport
|
@package = package
|
||||||
end
|
end
|
||||||
|
|
||||||
attr_reader :aport
|
attr_reader :package
|
||||||
|
|
||||||
def require_version version
|
def require_version version
|
||||||
if @version
|
if @version
|
||||||
@ -241,11 +241,11 @@ class Update
|
|||||||
end
|
end
|
||||||
|
|
||||||
def version
|
def version
|
||||||
@version || @aport.version
|
@version || @package.version
|
||||||
end
|
end
|
||||||
|
|
||||||
def updated?
|
def updated?
|
||||||
version != @aport.version
|
version != @package.version
|
||||||
end
|
end
|
||||||
|
|
||||||
def dependency
|
def dependency
|
||||||
@ -260,7 +260,7 @@ class Update
|
|||||||
|
|
||||||
@obsolete_deps = []
|
@obsolete_deps = []
|
||||||
|
|
||||||
@aport.depends do |dep|
|
@package.depends do |dep|
|
||||||
gem = @update.assign(dep.gem, dep.name)
|
gem = @update.assign(dep.gem, dep.name)
|
||||||
gem.check_deps
|
gem.check_deps
|
||||||
unless deps.reject! { |sdep| sdep.match? dep.gem, gem.version }
|
unless deps.reject! { |sdep| sdep.match? dep.gem, gem.version }
|
||||||
@ -269,7 +269,7 @@ class Update
|
|||||||
end
|
end
|
||||||
|
|
||||||
if deps.length > 0
|
if deps.length > 0
|
||||||
raise 'Undeclared dependencies in ' + @aport.name + deps.inject('') {
|
raise 'Undeclared dependencies in ' + @package.name + deps.inject('') {
|
||||||
|s, dep| "#{s}\n#{dep.name} #{dep.requirements_list.join ' '}"
|
|s, dep| "#{s}\n#{dep.name} #{dep.requirements_list.join ' '}"
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
@ -278,7 +278,7 @@ class Update
|
|||||||
def update
|
def update
|
||||||
updated? || @obsolete_deps.length > 0 ? (
|
updated? || @obsolete_deps.length > 0 ? (
|
||||||
{
|
{
|
||||||
:name => @aport.name,
|
:name => @package.name,
|
||||||
:version => version,
|
:version => version,
|
||||||
:obsolete_deps => @obsolete_deps.clone
|
:obsolete_deps => @obsolete_deps.clone
|
||||||
}
|
}
|
||||||
@ -294,7 +294,7 @@ OptionParser.new do |opts|
|
|||||||
testing = t
|
testing = t
|
||||||
end
|
end
|
||||||
end.parse! ARGV
|
end.parse! ARGV
|
||||||
Aport.initialize testing
|
Package.initialize testing
|
||||||
|
|
||||||
latest = {}
|
latest = {}
|
||||||
for source, gems in Gem::SpecFetcher::fetcher.available_specs(:latest)[0]
|
for source, gems in Gem::SpecFetcher::fetcher.available_specs(:latest)[0]
|
||||||
@ -307,7 +307,7 @@ update = Update.new
|
|||||||
for arg in ARGV
|
for arg in ARGV
|
||||||
match = /^(([^-]|-[^\d])+)(-(\d.*))?/.match arg
|
match = /^(([^-]|-[^\d])+)(-(\d.*))?/.match arg
|
||||||
name = match[1]
|
name = match[1]
|
||||||
update.require_version name, match[4] || latest[Aport.get(name).gem]
|
update.require_version name, match[4] || latest[Package.get(name).gem]
|
||||||
end
|
end
|
||||||
|
|
||||||
update.resolve
|
update.resolve
|
||||||
|
Reference in New Issue
Block a user