class Omnibus::Packager::Solaris
Constants
- SCRIPT_MAP
@return [Hash]
Public Instance Methods
create_solaris_file()
click to toggle source
Generate the Solaris
file using pkg*
.
@return [void]
# File lib/omnibus/packagers/solaris.rb, line 141 def create_solaris_file shellout! "pkgmk -o -r #{install_dirname} -d #{staging_dir} -f #{staging_dir_path("Prototype")}" shellout! "pkgchk -vd #{staging_dir} #{project.package_name}" shellout! "pkgtrans #{staging_dir} #{package_path} #{project.package_name}" end
install_basename()
click to toggle source
# File lib/omnibus/packagers/solaris.rb, line 53 def install_basename File.basename(project.install_dir) end
install_dirname()
click to toggle source
# File lib/omnibus/packagers/solaris.rb, line 49 def install_dirname File.dirname(project.install_dir) end
package_name()
click to toggle source
@see Base#package_name
# File lib/omnibus/packagers/solaris.rb, line 41 def package_name "#{project.package_name}-#{pkgmk_version}.#{safe_architecture}.solaris" end
pkgmk_version()
click to toggle source
# File lib/omnibus/packagers/solaris.rb, line 45 def pkgmk_version "#{project.build_version}-#{project.build_iteration}" end
safe_architecture()
click to toggle source
The architecture for this Solaris
package.
@return [String]
# File lib/omnibus/packagers/solaris.rb, line 152 def safe_architecture # The #i386? and #intel? helpers come from chef-sugar if intel? "i386" elsif sparc? "sparc" else Ohai["kernel"]["machine"] end end
write_pkginfo_file()
click to toggle source
Generate a pkginfo file for solaris build
# File lib/omnibus/packagers/solaris.rb, line 112 def write_pkginfo_file hostname = Socket.gethostname # http://docs.oracle.com/cd/E19683-01/816-0219/6m6njqbat/index.html pkginfo_content = <<-EOF.gsub(/^ {8}/, "") CLASSES=none TZ=PST PATH=/sbin:/usr/sbin:/usr/bin:/usr/sadm/install/bin BASEDIR=#{install_dirname} PKG=#{project.package_name} NAME=#{project.package_name} ARCH=#{safe_architecture} VERSION=#{pkgmk_version} CATEGORY=application DESC=#{project.description} VENDOR=#{project.maintainer} EMAIL=#{project.maintainer} PSTAMP=#{hostname}#{Time.now.utc.iso8601} EOF File.open staging_dir_path("pkginfo"), "w+" do |f| f.write pkginfo_content end end
write_prototype_file()
click to toggle source
Generate a Prototype file for solaris build
# File lib/omnibus/packagers/solaris.rb, line 78 def write_prototype_file shellout! "cd #{install_dirname} && find #{install_basename} -print > #{staging_dir_path("files")}" File.open staging_dir_path("files.clean"), "w+" do |fout| File.open staging_dir_path("files") do |fin| fin.each_line do |line| if line.chomp =~ /\s/ log.warn(log_key) { "Skipping packaging '#{line}' file due to whitespace in filename" } else fout.write(line) end end end end # generate list of control files File.open staging_dir_path("Prototype"), "w+" do |f| f.write <<-EOF.gsub(/^ {10}/, "") i pkginfo i postinstall i postremove EOF end # generate the prototype's file list shellout! "cd #{install_dirname} && pkgproto < #{staging_dir_path("files.clean")} > #{staging_dir_path("Prototype.files")}" # fix up the user and group in the file list to root shellout! "awk '{ $5 = \"root\"; $6 = \"root\"; print }' < #{staging_dir_path("Prototype.files")} >> #{staging_dir_path("Prototype")}" end
write_scripts()
click to toggle source
Copy all scripts in {Project#package_scripts_path} to the control directory of this repo.
@return [void]
# File lib/omnibus/packagers/solaris.rb, line 63 def write_scripts SCRIPT_MAP.each do |source, destination| source_path = File.join(project.package_scripts_path, source.to_s) next unless File.file?(source_path) destination_path = staging_dir_path(destination) log.debug(log_key) { "Adding script `#{source}' to `#{destination_path}'" } copy_file(source_path, destination_path) end end