Commit cbc4ca95 authored by Michał Siwek's avatar Michał Siwek

Swallow the exception occured while removing pacakge files + bugfixes

parent f1eba9f7
...@@ -18,6 +18,7 @@ end ...@@ -18,6 +18,7 @@ end
def setPkg (pkgName, silent = false) def setPkg (pkgName, silent = false)
require './packages/' + pkgName require './packages/' + pkgName
@pkg = Object.const_get(pkgName.capitalize) @pkg = Object.const_get(pkgName.capitalize)
@pkg.name = pkgName
puts "Found #{pkgName}, version #{@pkg.version}" unless silent puts "Found #{pkgName}, version #{@pkg.version}" unless silent
end end
...@@ -71,6 +72,8 @@ def resolveDependencies ...@@ -71,6 +72,8 @@ def resolveDependencies
pushDeps pushDeps
return if @dependencies.empty?
puts "Following packages also need to be installed: " puts "Following packages also need to be installed: "
@dependencies.flatten!.each do |dep| @dependencies.flatten!.each do |dep|
print dep + " " print dep + " "
...@@ -98,7 +101,12 @@ def resolveDependencies ...@@ -98,7 +101,12 @@ def resolveDependencies
end end
def install def install
unless @pkg.is_fake if @device[:installed_packages].any? { |pkg| pkg[:name] == @pkg.name }
puts "Package #{@pkg.name} already installed, skipping..."
return
end
unless @pkg.is_fake?
meta = download meta = download
if meta[:source] == true if meta[:source] == true
puts "Building from source, this may take a while..." puts "Building from source, this may take a while..."
...@@ -112,38 +120,48 @@ def install ...@@ -112,38 +120,48 @@ def install
#system "mv", "./usr/*", "./xd" #system "mv", "./usr/*", "./xd"
FileUtils.mv './dlist', "./meta/#{@pkgName}.directorylist" FileUtils.mv './dlist', "./meta/#{@pkg.name}.directorylist"
FileUtils.mv './filelist', "./meta/#{@pkgName}.filelist" FileUtils.mv './filelist', "./meta/#{@pkg.name}.filelist"
end end
end end
#add to installed packages #add to installed packages
@device[:installed_packages].push(name: @pkgName, version: @pkg.version) @device[:installed_packages].push(name: @pkg.name, version: @pkg.version)
File.open('./device.json', 'w') do |file| File.open('./device.json', 'w') do |file|
output = JSON.parse @device.to_json output = JSON.parse @device.to_json
file.write JSON.pretty_generate(output) file.write JSON.pretty_generate(output)
end end
puts "#{@pkgName.capitalize} installed!" puts "#{@pkg.name.capitalize} installed!"
end end
def remove def remove
File.open("./meta/#{@pkgName}.filelist").each_line do |line| unless @device[:installed_packages].any? { |pkg| pkg[:name] == @pkg.name }
puts "Package #{@pkg.name} isn't installed."
return
end
unless @pkg.is_fake?
File.open("./meta/#{@pkg.name}.filelist").each_line do |line|
begin
File.unlink '.' + line.chomp File.unlink '.' + line.chomp
rescue => exception #swallow exception
end
end end
File.readlines("./meta/#{@pkgName}.directorylist").reverse.each do |line| File.readlines("./meta/#{@pkg.name}.directorylist").reverse.each do |line|
begin begin
Dir.rmdir '.' + line.chomp Dir.rmdir '.' + line.chomp
rescue => exception #swallow exception rescue => exception #swallow exception
end end
end end
File.unlink "./meta/#{@pkgName}.filelist" File.unlink "./meta/#{@pkg.name}.filelist"
File.unlink "./meta/#{@pkgName}.directorylist" File.unlink "./meta/#{@pkg.name}.directorylist"
end
#remove from installed packages #remove from installed packages
@device[:installed_packages].each do |elem| @device[:installed_packages].each do |elem|
@device[:installed_packages].delete elem if elem[:name] == @pkgName @device[:installed_packages].delete elem if elem[:name] == @pkg.name
end end
File.open('./device.json', 'w') do |file| File.open('./device.json', 'w') do |file|
out = JSON.parse @device.to_json out = JSON.parse @device.to_json
......
...@@ -5,6 +5,7 @@ class Package ...@@ -5,6 +5,7 @@ class Package
class << self class << self
attr_reader :dependencies, :is_fake attr_reader :dependencies, :is_fake
attr_accessor :name
end end
def self.depends_on (dependency = nil) def self.depends_on (dependency = nil)
@dependencies = [] unless @dependencies @dependencies = [] unless @dependencies
...@@ -15,6 +16,10 @@ class Package ...@@ -15,6 +16,10 @@ class Package
end end
def self.is_fake def self.is_fake
@is_fake = true
end
def self.is_fake?
@is_fake
end end
end end
...@@ -6,6 +6,6 @@ class Make < Package ...@@ -6,6 +6,6 @@ class Make < Package
i686: "https://dl.dropboxusercontent.com/s/f6pg4bkg6m3vn7q/make-3.82-chromeos-i686.tar.gz?token_hash=AAHP__I3leN8BCLdP0pLbkNopoFGGhDuKX0sN-I6Zx4JYg&dl=1" i686: "https://dl.dropboxusercontent.com/s/f6pg4bkg6m3vn7q/make-3.82-chromeos-i686.tar.gz?token_hash=AAHP__I3leN8BCLdP0pLbkNopoFGGhDuKX0sN-I6Zx4JYg&dl=1"
}) })
binary_sha1 ({ binary_sha1 ({
i686: "86321098f3f31daa49abb1bb38045dffb1f168b4" i686: "ccb01c7358e5abdf8b06305eb31b1969b8b174f7"
}) })
end end
require './packages/gcc' require './packages/buildessential'
require 'json' require 'json'
require 'pathname' require 'pathname'
...@@ -7,4 +7,4 @@ require 'pathname' ...@@ -7,4 +7,4 @@ require 'pathname'
@device[key] = @device[key].to_sym rescue @device[key] @device[key] = @device[key].to_sym rescue @device[key]
end end
Gcc.dependencies @device[:installed_packages].any? { |pkg| pkg[:name] == 'gcc' }
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