Module: Purple::PackageActions
- Defined in:
- lib/purple/pkg_actions.rb
Instance Attribute Summary collapse
-
#cabinet ⇒ Object
Returns the value of attribute cabinet.
Class Method Summary collapse
Instance Method Summary collapse
- #default_build ⇒ Object
- #default_config ⇒ Object
- #default_prepare ⇒ Object
- #default_setup ⇒ Object
- #default_stage ⇒ Object
- #srcdir ⇒ Object
- #stage_root ⇒ Object
Instance Attribute Details
#cabinet ⇒ Object
Returns the value of attribute cabinet.
5 6 7 |
# File 'lib/purple/pkg_actions.rb', line 5 def cabinet @cabinet end |
Class Method Details
.package_method(name) ⇒ Object
7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
# File 'lib/purple/pkg_actions.rb', line 7 def self.package_method name prg = <<-EOS def #{name} if defined? @method_#{name}_package and @method_#{name}_package return @method_#{name}_package.call(self) else m = self.method "default_#{name}" return(m.call) if m end end def #{name}= prc case prc when Proc @method_#{name}_package = prc when String @method_#{name}_package = proc { |pkg| prc = eval("%(\#{prc})") if prc =~ /\\\#\\\{/ puts "DEBUG: prc==\#{prc}" if $DEBUG pkg.cabinet.sys #{name.to_s.inspect}, prc } when Array self.#{name} = prc.join '; ' end end EOS puts "DEBUG PackageActions##package_method: prg=\n#{prg}" if $DEBUG module_eval prg end |
Instance Method Details
#default_build ⇒ Object
89 90 91 |
# File 'lib/purple/pkg_actions.rb', line 89 def default_build throw :stop unless cabinet.sys 'build', "make -C '#{srcdir}'" end |
#default_config ⇒ Object
85 86 87 |
# File 'lib/purple/pkg_actions.rb', line 85 def default_config throw :stop unless cabinet.sys 'config', "cd #{srcdir}; ./configure --prefix=/usr" end |
#default_prepare ⇒ Object
64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 |
# File 'lib/purple/pkg_actions.rb', line 64 def default_prepare puts "DEBUG PackageActions#default_prepare" if $DEBUG files.each do |f| unpack = case f when /(gz|bz2)$/ compress_arg = case $1 when 'gz'; '-z' when 'bz2'; '-j' else '' end proc { |filename| "tar xv #{compress_arg} -C '#{cabinet.srcdir}' -f #{cabinet.filesdir}/#{filename}" } when /zip$/ proc { |filename| "cd '#{cabinet.srcdir}'; unzip -o '#{cabinet.filesdir}/#{filename}'" } else throw :stop end throw :stop unless cabinet.sys 'prepare', unpack.call(f) end end |
#default_setup ⇒ Object
61 62 |
# File 'lib/purple/pkg_actions.rb', line 61 def default_setup end |
#default_stage ⇒ Object
93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 |
# File 'lib/purple/pkg_actions.rb', line 93 def default_stage system "rm -fr '#{stage_root}/*'" require 'purple/makefile' puts "DEBUG PackageActions#default_stage: srcdir=#{srcdir}" if $DEBUG mkm = MakefileMaven.new srcdir if mkm.uses_prefix? if mkm.uses_destdir? make_args = "DESTDIR='#{stage_root}'" else make_args = "prefix='#{stage_root}/usr'" end else if mkm.uses_destdir? make_args = "DESTDIR='#{stage_root}'" else raise 'Unable to find a way to stage! Package neither defines prefix or DESTDIR' end end throw :stop if not cabinet.sys 'stage', "make -C '#{srcdir}' #{make_args} install" end |
#srcdir ⇒ Object
36 37 38 39 40 41 42 43 44 45 46 47 48 |
# File 'lib/purple/pkg_actions.rb', line 36 def srcdir return @srcdir if defined? @srcdir dirs = Dir.new(cabinet.srcdir).reject { |s| s =~ /^\.{1,2}$/ } if 1 == dirs.size s = dirs[0] else s = Dir.new(cabinet.srcdir).find { |s| s =~ Regexp.new('^' + Regexp.escape(name)) } end @srcdir = File.join(cabinet.srcdir, s) throw :stop, "Unable to determine source directory for package #{name}" if not @srcdir puts "Choosing #{@srcdir} as source code folder" @srcdir end |
#stage_root ⇒ Object
50 51 52 |
# File 'lib/purple/pkg_actions.rb', line 50 def stage_root File.join cabinet.stage_root, long_name end |