class Buildizer::Os::Centos

Attributes

version[R]

Public Class Methods

new(docker, version, **kwargs) click to toggle source
Calls superclass method Buildizer::Os::Base::new
# File lib/buildizer/os/centos.rb, line 6
def initialize(docker, version, **kwargs)
  @version = version
  super(docker, **kwargs)
end

Public Instance Methods

add_repo(image, id:, name:, baseurl: nil, enabled: 1, gpgcheck: nil, gpgkey: nil, exclude: nil, includepkgs: nil, mirrorlist: nil) click to toggle source
# File lib/buildizer/os/centos.rb, line 45
      def add_repo(image, id:, name:, baseurl: nil, enabled: 1, gpgcheck: nil, gpgkey: nil, exclude: nil, includepkgs: nil, mirrorlist: nil)
        repo = "[#{id}]\
\\nname=#{name}\
\\nenabled=#{enabled}\
#{baseurl ? "\\nbaseurl=#{baseurl}" : nil}\
#{mirrorlist ? "\\nmirrorlist=#{mirrorlist}" : nil}\
#{gpgcheck ? "\\ngpgcheck=#{gpgcheck}" : nil}\
#{gpgkey ? "\\ngpgkey=#{gpgkey}" : nil}\
#{exclude ? "\\nexclude=#{exclude}" : nil}\
#{includepkgs ? "\\nincludepkgs=#{includepkgs}" : nil}"

        image.instruction :RUN, "bash -lec \"echo -e '#{repo}' >> /etc/yum.repos.d/CentOS-Extra-Buildizer.repo\""
      end
build_dep(image, build_dep) click to toggle source
# File lib/buildizer/os/centos.rb, line 41
def build_dep(image, build_dep)
  image.instruction :RUN, "yum-builddep -y #{build_dep.to_a.join(' ')}" if build_dep.any?
end
build_rpm_instructions(target) click to toggle source
# File lib/buildizer/os/centos.rb, line 67
def build_rpm_instructions(target)
  ["cd ~/rpmbuild/SPECS/",
   "rpmbuild -bb #{target_spec_name(target)}",
   ["find ~/rpmbuild/RPMS -name '*.rpm' ",
    "-exec mv {} #{target.builder.docker.container_build_path} \\;"].join]
end
fpm_extra_params() click to toggle source
Calls superclass method Buildizer::Os::Base#fpm_extra_params
# File lib/buildizer/os/centos.rb, line 27
def fpm_extra_params
  Array(super).tap do |res|
    res << '--rpm-use-file-permissions'
  end
end
fpm_output_type() click to toggle source
# File lib/buildizer/os/centos.rb, line 23
def fpm_output_type
  'rpm'
end
install_test_package_instructions(target) click to toggle source
# File lib/buildizer/os/centos.rb, line 33
def install_test_package_instructions(target)
  "yum localinstall -y #{target.builder.docker.container_build_path.join('*.rpm')}"
end
name() click to toggle source
# File lib/buildizer/os/centos.rb, line 11
def name
  'centos'
end
native_build_instructions(target) click to toggle source
# File lib/buildizer/os/centos.rb, line 74
def native_build_instructions(target)
  [*Array(rpmdev_setuptree_instructions(target)),
   "cp #{target.builder.docker.container_package_archive_path} ~/rpmbuild/SOURCES/",
   "cp #{target.builder.docker.container_package_path.join(target_spec_name(target))} ~/rpmbuild/SPECS/",
   *Array(build_rpm_instructions(target))]
end
package_cloud_os_name() click to toggle source
# File lib/buildizer/os/centos.rb, line 15
def package_cloud_os_name
  'el'
end
package_cloud_os_version() click to toggle source
# File lib/buildizer/os/centos.rb, line 19
def package_cloud_os_version
  version.match(/\d+$/).to_s.to_i
end
patch_build_instructions(target) click to toggle source
# File lib/buildizer/os/centos.rb, line 81
def patch_build_instructions(target)
  rpmchange_cmd = "rpmchange %{cmd} --specfile ~/rpmbuild/SPECS/#{target_spec_name(target)} %{args}"
  get_release_cmd = rpmchange_cmd % {cmd: :tag, args: "--name release"}
  set_release_cmd = rpmchange_cmd % {cmd: :tag, args: "--name release --value %{value}"}
  changelog_cmd = rpmchange_cmd % {
    cmd: :changelog,
    args: "--append --name \"%{name}\" --email \"%{email}\" --message \"%{message}\""
  }

  [*Array(rpmdev_setuptree_instructions(target)),
   "yumdownloader --source #{target_package_spec(target)}",
   "rpm -i *.rpm",
   "gem install rpmchange",
   set_release_cmd % {value: "$(#{get_release_cmd})buildizer#{target.package_version}"},
   *target.patch.map {|patch| "cp #{patch} ~/rpmbuild/SOURCES/"},
   *target.patch.map {|patch|
     rpmchange_cmd % {cmd: :append,
                      args: "--section prep --value \"patch -p1 < %{_sourcedir}/#{patch}\""}
   },
   changelog_cmd % {name: target.maintainer,
                    email: target.maintainer_email,
                    message: 'Patch by buildizer'},
   *Array(build_rpm_instructions(target))]
end
prepare_test_container_instructions(target) click to toggle source
# File lib/buildizer/os/centos.rb, line 37
def prepare_test_container_instructions(target)
  "yum install -y git"
end
rpmdev_setuptree_instructions(target) click to toggle source
# File lib/buildizer/os/centos.rb, line 63
def rpmdev_setuptree_instructions(target)
  "rpmdev-setuptree"
end
target_package_spec(target) click to toggle source
# File lib/buildizer/os/centos.rb, line 106
def target_package_spec(target)
  [target.package_name, target.package_version].compact.join('-')
end
target_spec_name(target) click to toggle source
# File lib/buildizer/os/centos.rb, line 59
def target_spec_name(target)
  "#{target.base_package_name}.spec"
end