Skip to content

Commit

Permalink
Decreasing required memory (#824)
Browse files Browse the repository at this point in the history
* Decreasing required memory
  • Loading branch information
schubi2 committed Nov 27, 2019
1 parent 616a483 commit 8ef14c9
Show file tree
Hide file tree
Showing 11 changed files with 137 additions and 168 deletions.
8 changes: 8 additions & 0 deletions package/yast2-installation.changes
Original file line number Diff line number Diff line change
@@ -1,3 +1,11 @@
-------------------------------------------------------------------
Thu Nov 21 14:33:50 UTC 2019 - schubi@suse.de

- Using Y2Packager::Resolvable.any? and Y2Packager::Resolvable.find
in order to decrease the required memory (bsc#1132650,
bsc#1140037).
- 4.2.25

-------------------------------------------------------------------
Thu Nov 21 14:32:50 UTC 2019 - Knut Anderssen <kanderssen@suse.com>

Expand Down
2 changes: 1 addition & 1 deletion package/yast2-installation.spec
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
#

Name: yast2-installation
Version: 4.2.24
Version: 4.2.25
Release: 0
Group: System/YaST
License: GPL-2.0-only
Expand Down
28 changes: 11 additions & 17 deletions src/lib/installation/clients/inst_addon_update_sources.rb
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,9 @@
# Assumptions:
# - the sources will be saved afterwards
# (this means that running this client alone will not work)

require "y2packager/resolvable"

module Yast
class InstAddonUpdateSourcesClient < Client
def main
Expand Down Expand Up @@ -152,41 +155,32 @@ def KnownUrls
# @return the installation sources to be added
def UpdateUrls
urls = {}
products = Pkg.ResolvableProperties("", :product, "")
products = Y2Packager::Resolvable.find(kind: :product)

Builtins.foreach(products) do |p|
Builtins.foreach(Ops.get_list(p, "update_urls", [])) do |u|
Builtins.foreach(p.update_urls) do |u|
# bnc #542792
# Repository name must be generated from product details
p_name =
[p.display_name, p.name, p.summary, _("Unknown Product")].reject(&:empty?).first
Ops.set(
urls,
u,
Builtins.sformat(
_("Updates for %1 %2"),
Ops.get_locale(
p,
"display_name",
Ops.get_locale(
p,
"name",
Ops.get_locale(p, "summary", _("Unknown Product"))
)
),
Ops.get_string(p, "version", "")
p_name,
p.version
)
)
# alias should be simple (bnc#768624)
p_alias = [p.display_name, p.name, "repo"].reject(&:empty?).first
Ops.set(
@aliases,
u,
String.Replace(
Ops.add(
"update-",
Ops.get_string(
p,
"display_name",
Ops.get_string(p, "name", "repo")
)
p_alias
),
" ",
"-"
Expand Down
23 changes: 8 additions & 15 deletions src/lib/installation/clients/inst_extrasources.rb
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@
# ------------------------------------------------------------------------------

require "y2packager/known_repositories"
require "y2packager/resolvable"

Yast.import "UI"
Yast.import "Pkg"
Expand Down Expand Up @@ -407,19 +408,9 @@ def IsUpdateRepo(repo)
"Checking whether repository %1 is an update repo...",
repo
)
ret = false

# check if there is a patch available in the repository
Builtins.foreach(Pkg.ResolvableProperties("", :patch, "")) do |patch|
if Ops.get_integer(patch, "source", -1) == repo
Builtins.y2milestone(
"Found patch %1 in the repository",
Ops.get_string(patch, "name", "")
)
ret = true
raise Break
end
end
ret = Y2Packager::Resolvable.any?(kind: :patch, source: repo)

Builtins.y2milestone("Repository %1 is update repo: %2", repo, ret)

Expand Down Expand Up @@ -462,11 +453,13 @@ def UpgradesAvailable(repos)
# only package names (without version)
names_only = true
Pkg.GetPackages(:selected, names_only).each do |pkg|
Pkg.ResolvableProperties(pkg, :package, "").each do |p|
source = p["source"]
next unless p["status"] == :selected && repos.include?(source)
Y2Packager::Resolvable.find(kind: :package,
name: pkg,
status: :selected).each do |p|
source = p.source
next unless repos.include?(source)

package = "#{p["name"]}-#{p["version"]}.#{p["arch"]}"
package = "#{p.name}-#{p.version}.#{p.arch}"
log.info("Found upgrade to install: #{package}")
packages << package
ret << source unless ret.include?(source)
Expand Down
11 changes: 7 additions & 4 deletions src/lib/installation/clients/inst_modules_extensions.rb
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
require "yast"
require "y2packager/product"
require "y2packager/resolvable"

Yast.import "GetInstArgs"
Yast.import "Pkg"
Expand Down Expand Up @@ -32,7 +33,8 @@ def extension_packages

extension_packages.select! do |list|
pkg_name = list.first
dependencies[pkg_name] = Yast::Pkg.ResolvableDependencies(pkg_name, :package, "").first["deps"]
packages = Y2Packager::Resolvable.find(kind: :package, name: pkg_name)
dependencies[pkg_name] = packages.empty? ? [] : packages.first.deps

product_provides = dependencies[pkg_name].find_all do |d|
d["provides"] && d["provides"].match(/#{Regexp.escape(PROVIDES_PRODUCT)}/)
Expand All @@ -52,9 +54,10 @@ def extension_packages
extension_provide = dependencies[pkg_name].find do |d|
d["provides"] && d["provides"].match(/#{Regexp.escape(PROVIDES_KEY)}/)
end

module_name = extension_provide["provides"][/#{Regexp.escape(PROVIDES_KEY)}\s*=\s*(\S+)/, 1]
log.info "extension for module #{module_name} in package #{pkg_name}"
if extension_provide && extension_provide["provides"] && !extension_provide["provides"].empty?
module_name = extension_provide["provides"][/#{Regexp.escape(PROVIDES_KEY)}\s*=\s*(\S+)/, 1]
log.info "extension for module #{module_name} in package #{pkg_name}"
end

pkg_name
end
Expand Down
11 changes: 7 additions & 4 deletions src/lib/installation/clients/inst_prepare_image.rb
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,9 @@
# Lukas Ocilka <locilka@suse.cz>
#
# $Id$

require "y2packager/resolvable"

module Yast
class InstPrepareImageClient < Client
def main
Expand All @@ -45,12 +48,12 @@ def main
# set repo to get images from
ImageInstallation.SetRepo(Ops.get(Packages.theSources, 0, 0))

@all_patterns = Pkg.ResolvableProperties("", :pattern, "")
@all_patterns = Y2Packager::Resolvable.find(kind: :pattern)

@patterns_to_install = Builtins.maplist(@all_patterns) do |one_patern|
if Ops.get_symbol(one_patern, "status", :unknown) == :selected ||
Ops.get_symbol(one_patern, "status", :unknown) == :installed
next Ops.get_string(one_patern, "name", "")
if one_patern.status == :selected ||
one_patern.status == :installed
next one_patern.name
else
next ""
end
Expand Down
23 changes: 11 additions & 12 deletions src/lib/installation/update_repository.rb
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
require "packages/package_downloader"
require "packages/package_extractor"
require "y2packager/self_update_addon_filter"
require "y2packager/resolvable"

Yast.import "Pkg"
Yast.import "Progress"
Expand Down Expand Up @@ -143,19 +144,18 @@ def repo_id
# which should be used in an add-on and not applied to the inst-sys are ignored.
# The packages are sorted by name (alphabetical order).
#
# @return [Array<Hash>] List of packages to install
# @return [Array<Y2Packager::Resolvable>] List of packages to install
#
# @see Yast::Pkg.ResolvableProperties
# @see Y2Packager::Resolvable
def packages
return @packages unless @packages.nil?
add_repo
candidates = Yast::Pkg.ResolvableProperties("", :package, "")
@packages = candidates.select { |p| p["source"] == repo_id }.sort_by! { |a| a["name"] }
log.info "Found #{@packages.size} packages: #{@packages}"
@packages = Y2Packager::Resolvable.find(kind: :package, source: repo_id).sort_by!(&:name)
log.info "Found #{@packages.size} packages: #{@packages.map(&:name)}"
# remove packages which are used as addons, these should not be applied to the inst-sys
addon_pkgs = Y2Packager::SelfUpdateAddonFilter.packages(repo_id)
@packages.reject! { |p| addon_pkgs.include?(p["name"]) }
log.info "Using #{@packages.size} packages: #{@packages}"
@packages.reject! { |p| addon_pkgs.include?(p.name) }
log.info "Using #{@packages.size} packages: #{@packages.map(&:name)}"
@packages
end

Expand Down Expand Up @@ -252,8 +252,7 @@ def cleanup
#
# @return [Boolean] true if the repository is empty; false otherwise.
def empty?
candidates = Yast::Pkg.ResolvableProperties("", :package, "")
candidates.none? { |p| p["source"] == repo_id }
!Y2Packager::Resolvable.any?(kind: :package, source: repo_id)
end

# Returns whether is a user defined repository
Expand Down Expand Up @@ -285,7 +284,7 @@ def inspect

# Fetch and build a squashfs filesytem for a given package
#
# @param package [Hash] Package to retrieve
# @param package [Y2Packager::Resolvable] Package to retrieve
# @param dir [Pathname] Path to store the squashed filesystems
# @return [Pathname] Path where the file is stored
#
Expand All @@ -294,10 +293,10 @@ def inspect
#
# @raise PackageNotFound
def fetch_package(package, dir)
tempfile = Tempfile.new(package["name"])
tempfile = Tempfile.new(package.name)
tempfile.close
Dir.mktmpdir do |workdir|
downloader = Packages::PackageDownloader.new(repo_id, package["name"])
downloader = Packages::PackageDownloader.new(repo_id, package.name)
downloader.download(tempfile.path.to_s)

extractor = Packages::PackageExtractor.new(tempfile.path.to_s)
Expand Down
Loading

0 comments on commit 8ef14c9

Please sign in to comment.