Class: Buildizer::Os::Centos
Instance Attribute Summary collapse
-
#version ⇒ Object
readonly
Returns the value of attribute version.
Attributes inherited from Base
Instance Method Summary collapse
- #add_repo(image, id:, name:, baseurl: nil, enabled: 1, gpgcheck: nil, gpgkey: nil, exclude: nil, includepkgs: nil, mirrorlist: nil) ⇒ Object
- #build_dep(image, build_dep) ⇒ Object
- #build_rpm_instructions(target) ⇒ Object
- #fpm_extra_params ⇒ Object
- #fpm_output_type ⇒ Object
-
#initialize(docker, version, **kwargs) ⇒ Centos
constructor
A new instance of Centos.
- #install_test_package_instructions(target) ⇒ Object
- #name ⇒ Object
- #native_build_instructions(target) ⇒ Object
- #package_cloud_os_name ⇒ Object
- #package_cloud_os_version ⇒ Object
- #patch_build_instructions(target) ⇒ Object
- #prepare_test_container_instructions(target) ⇒ Object
- #rpmdev_setuptree_instructions(target) ⇒ Object
- #target_package_spec(target) ⇒ Object
- #target_spec_name(target) ⇒ Object
Methods inherited from Base
#base_image_name, #base_vendor_image_name, #patch_build_dep
Constructor Details
#initialize(docker, version, **kwargs) ⇒ Centos
Returns a new instance of Centos.
6 7 8 9 |
# File 'lib/buildizer/os/centos.rb', line 6 def initialize(docker, version, **kwargs) @version = version super(docker, **kwargs) end |
Instance Attribute Details
#version ⇒ Object (readonly)
Returns the value of attribute version.
4 5 6 |
# File 'lib/buildizer/os/centos.rb', line 4 def version @version end |
Instance Method Details
#add_repo(image, id:, name:, baseurl: nil, enabled: 1, gpgcheck: nil, gpgkey: nil, exclude: nil, includepkgs: nil, mirrorlist: nil) ⇒ Object
45 46 47 48 49 50 51 52 53 54 55 56 57 |
# 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) ⇒ Object
41 42 43 |
# 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) ⇒ Object
67 68 69 70 71 72 |
# 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 ⇒ Object
27 28 29 30 31 |
# 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 ⇒ Object
23 24 25 |
# File 'lib/buildizer/os/centos.rb', line 23 def fpm_output_type 'rpm' end |
#install_test_package_instructions(target) ⇒ Object
33 34 35 |
# 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 ⇒ Object
11 12 13 |
# File 'lib/buildizer/os/centos.rb', line 11 def name 'centos' end |
#native_build_instructions(target) ⇒ Object
74 75 76 77 78 79 |
# 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 ⇒ Object
15 16 17 |
# File 'lib/buildizer/os/centos.rb', line 15 def package_cloud_os_name 'el' end |
#package_cloud_os_version ⇒ Object
19 20 21 |
# 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) ⇒ Object
81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 |
# 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) ⇒ Object
37 38 39 |
# File 'lib/buildizer/os/centos.rb', line 37 def prepare_test_container_instructions(target) "yum install -y git" end |
#rpmdev_setuptree_instructions(target) ⇒ Object
63 64 65 |
# File 'lib/buildizer/os/centos.rb', line 63 def rpmdev_setuptree_instructions(target) "rpmdev-setuptree" end |
#target_package_spec(target) ⇒ Object
106 107 108 |
# 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) ⇒ Object
59 60 61 |
# File 'lib/buildizer/os/centos.rb', line 59 def target_spec_name(target) "#{target.base_package_name}.spec" end |