Module: Purple::PackageActions

Defined in:
lib/purple/pkg_actions.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#cabinetObject

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
# 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
            @method_#{name}_package = prc
        end
    EOS
    #puts prg
    module_eval prg
end

Instance Method Details

#default_buildObject



67
68
69
# File 'lib/purple/pkg_actions.rb', line 67

def default_build
   throw :stop unless cabinet.sys 'build', "make -C '#{srcdir}'"
end

#default_configObject



63
64
65
# File 'lib/purple/pkg_actions.rb', line 63

def default_config
   throw :stop unless cabinet.sys 'config', "cd #{srcdir}; ./configure --prefix=/usr"
end

#default_prepareObject



48
49
50
51
52
53
54
55
56
57
58
59
60
61
# File 'lib/purple/pkg_actions.rb', line 48

def default_prepare
    puts "DEBUG PackageActions#default_prepare"
    files.each do |f|
        unpack = case f
            when /gz$/; '-z'
            when /bz2$/; '-j'
            else ''
        end
        if not cabinet.sys 'prepare', "tar xv #{unpack} -C '#{cabinet.srcdir}' -f #{cabinet.filesdir}/#{f}"
            throw :stop
        end
    end

end

#default_stageObject



71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
# File 'lib/purple/pkg_actions.rb', line 71

def default_stage
    system "rm -fr '#{stage_root}/*'"

    require 'purple/makefile'

    puts "DEBUG PackageActions#default_stage: srcdir=#{srcdir}"
    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

#srcdirObject



25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/purple/pkg_actions.rb', line 25

def srcdir
    return @srcdir if defined? @srcdir
    dirs = Dir.new(cabinet.srcdir).reject { |s| s =~ /^\.{1,2}$/ }
    if 1 == dirs.size
        @srcdir = "#{cabinet.srcdir}/#{dirs[0]}"
    else
        @srcdir = Dir.new(cabinet.srcdir).find { |s| s =~ Regexp.new('^' + Regexp.escape(name)) }
    end
    throw :stop, "Unable to determine source directory for package #{name}" if not @srcdir
    puts "Choosing #{@srcdir} as source code folder"
    @srcdir
end

#stage_rootObject



38
39
40
# File 'lib/purple/pkg_actions.rb', line 38

def stage_root
    File.join cabinet.stage_root, long_name
end