Parent

Class/Module Index [+]

Quicksearch

MCollective::PluginPackager::DebpackagePackager

Attributes

build_dir[RW]
current_package[RW]
current_package_data[RW]
current_package_fullname[RW]
current_package_shortname[RW]
current_package_type[RW]
libdir[RW]
plugin[RW]
postinstall[RW]
preinstall[RW]
signature[RW]
tmpdir[RW]
verbose[RW]
workingdir[RW]

Public Class Methods

new(plugin, pluginpath = nil, signature = nil, verbose = false) click to toggle source
# File plugins/mcollective/pluginpackager/debpackage_packager.rb, line 11
def initialize(plugin, pluginpath = nil, signature = nil, verbose = false)
  raise RuntimeError, "package 'debuild' is not installed" unless PluginPackager.build_tool?("debuild")
  @plugin = plugin
  @verbose = verbose
  @libdir = pluginpath || "/usr/share/mcollective/plugins/mcollective/"
  @signature = signature
  @tmpdir = ""
  @build_dir = ""
  @targetdir = ""
end

Public Instance Methods

cleanup_tmpdirs() click to toggle source
# File plugins/mcollective/pluginpackager/debpackage_packager.rb, line 142
def cleanup_tmpdirs
  FileUtils.rm_r @tmpdir if File.directory? @tmpdir
end
create_file(filename) click to toggle source
# File plugins/mcollective/pluginpackager/debpackage_packager.rb, line 121
def create_file(filename)
  begin
    file = ERB.new(File.read(File.join(File.dirname(__FILE__), "templates", "debian", "#{filename}.erb")), nil, "-")
    File.open(File.join(@build_dir, "debian", filename), "w") do |f|
      f.puts file.result(binding)
    end
  rescue Exception => e
    raise RuntimeError, "could not create #{filename} file - #{e}"
  end
end
create_install() click to toggle source
# File plugins/mcollective/pluginpackager/debpackage_packager.rb, line 96
def create_install
  begin
    File.open(File.join(@build_dir, "debian", "#{@current_package_shortname}.install"), "w") do |f|
      @current_package_data[:files].each do |filename|
        extended_filename = File.join(@libdir, File.expand_path(filename).gsub(/#{File.expand_path(plugin.path)}|\.\//, ''))
        f.puts "#{extended_filename} #{File.dirname(extended_filename)}"
      end
    end
  rescue Exception => e
    raise RuntimeError, "Could not create install file - #{e}"
  end
end
create_package() click to toggle source
# File plugins/mcollective/pluginpackager/debpackage_packager.rb, line 46
def create_package
  begin
    ["control", "Makefile", "compat", "rules", "copyright", "changelog"].each do |filename|
      create_file(filename)
    end
    create_tar
    create_install
    create_preandpost_install

    FileUtils.cd @build_dir do |f|
      PluginPackager.do_quietly?(@verbose) do
        if @signature
          if @signature.is_a? String
            PluginPackager.safe_system "debuild -i -k#{@signature}"
          else
            PluginPackager.safe_system "debuild -i"
          end
        else
          PluginPackager.safe_system "debuild -i -us -uc"
        end
      end
    end

    puts "Created package #{@current_package_fullname}"
  rescue Exception => e
    raise RuntimeError, "Could not build package - #{e}"
  end
end
create_packages() click to toggle source
# File plugins/mcollective/pluginpackager/debpackage_packager.rb, line 22
def create_packages
  @plugin.packagedata.each do |type, data|
    begin
      @tmpdir = Dir.mktmpdir("mcollective_packager")
      @current_package_type = type
      @current_package_data = data
      @current_package_shortname = "#{@plugin.mcname}-#{@plugin.metadata[:name]}-#{@current_package_type}"
      @current_package_fullname = "#{@plugin.mcname}-#{@plugin.metadata[:name]}-#{@current_package_type}" +
                                  "_#{@plugin.metadata[:version]}-#{@plugin.iteration}"

      @build_dir = File.join(@tmpdir, "#{@current_package_shortname}_#{@plugin.metadata[:version]}")
      Dir.mkdir @build_dir

      prepare_tmpdirs data
      create_package
      move_packages
    rescue Exception => e
      raise e
    ensure
      cleanup_tmpdirs
    end
  end
end
create_preandpost_install() click to toggle source
# File plugins/mcollective/pluginpackager/debpackage_packager.rb, line 83
def create_preandpost_install
  if @plugin.preinstall
    raise RuntimeError, "pre-install script '#{@plugin.preinstall}' not found"  unless File.exists?(@plugin.preinstall)
    FileUtils.cp(@plugin.preinstall, File.join(@build_dir, 'debian', "#{@current_package_shortname}.preinst"))
  end

  if @plugin.postinstall
    raise RuntimeError, "post-install script '#{@plugin.postinstall}' not found" unless File.exists?(@plugin.postinstall)
    FileUtils.cp(@plugin.postinstall, File.join(@build_dir, 'debian', "#{@current_package_shortname}.postinst"))
  end

end
create_tar() click to toggle source
# File plugins/mcollective/pluginpackager/debpackage_packager.rb, line 109
def create_tar
  begin
    PluginPackager.do_quietly?(@verbose) do
      Dir.chdir(@tmpdir) do
        PluginPackager.safe_system "tar -Pcvzf #{File.join(@tmpdir,"#{@current_package_shortname}_#{@plugin.metadata[:version]}.orig.tar.gz")} #{@current_package_shortname}_#{@plugin.metadata[:version]}"
      end
    end
  rescue Exception => e
    raise "Could not create tarball - #{e}"
  end
end
move_packages() click to toggle source
# File plugins/mcollective/pluginpackager/debpackage_packager.rb, line 75
def move_packages
  begin
    FileUtils.cp(Dir.glob(File.join(@tmpdir, "*.{deb,dsc,diff.gz,orig.tar.gz,changes}")), ".")
  rescue Exception => e
    raise RuntimeError, "Could not copy packages to working directory: '#{e}'"
  end
end
prepare_tmpdirs(data) click to toggle source
# File plugins/mcollective/pluginpackager/debpackage_packager.rb, line 132
def prepare_tmpdirs(data)
  data[:files].each do |file|
    @targetdir = File.join(@build_dir, @libdir, File.dirname(File.expand_path(file)).gsub(@plugin.target_path, ""))
    FileUtils.mkdir_p(@targetdir) unless File.directory? @targetdir
    FileUtils.cp_r(file, @targetdir)
  end

  FileUtils.mkdir_p(File.join(@build_dir, "debian"))
end

[Validate]

Generated with the Darkfish Rdoc Generator 2.