Class: Buildizer::Image::Centos
- Defined in:
- lib/buildizer/image/centos.rb
Instance Attribute Summary collapse
-
#os_version ⇒ Object
readonly
Returns the value of attribute os_version.
Attributes inherited from Base
#docker, #instructions, #target
Instance Method Summary collapse
- #add_repo(id:, name:, baseurl: nil, enabled: 1, gpgcheck: nil, gpgkey: nil, exclude: nil, includepkgs: nil, mirrorlist: nil) ⇒ Object
- #build_dep(build_dep) ⇒ Object
- #build_rpm_instructions(builder, target) ⇒ Object
- #fpm_extra_params ⇒ Object
- #fpm_output_type ⇒ Object
-
#initialize(docker, os_version, **kwargs) ⇒ Centos
constructor
A new instance of Centos.
- #native_build_instructions(builder, target) ⇒ Object
- #os_name ⇒ Object
- #os_package_cloud_name ⇒ Object
- #os_package_cloud_version ⇒ Object
- #patch_build_instructions(builder, target) ⇒ Object
- #rpmdev_setuptree_instructions(builder, target) ⇒ Object
- #target_package_spec(target) ⇒ Object
- #target_spec_name(target) ⇒ Object
Methods inherited from Base
#base_image, #instruction, #name, #patch_build_dep
Constructor Details
#initialize(docker, os_version, **kwargs) ⇒ Centos
Returns a new instance of Centos.
6 7 8 9 |
# File 'lib/buildizer/image/centos.rb', line 6 def initialize(docker, os_version, **kwargs) @os_version = os_version super(docker, **kwargs) end |
Instance Attribute Details
#os_version ⇒ Object (readonly)
Returns the value of attribute os_version.
4 5 6 |
# File 'lib/buildizer/image/centos.rb', line 4 def os_version @os_version end |
Instance Method Details
#add_repo(id:, name:, baseurl: nil, enabled: 1, gpgcheck: nil, gpgkey: nil, exclude: nil, includepkgs: nil, mirrorlist: nil) ⇒ Object
37 38 39 40 41 42 43 44 45 46 47 48 49 |
# File 'lib/buildizer/image/centos.rb', line 37 def add_repo(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}" instruction :RUN, "bash -lec \"echo -e '#{repo}' >> /etc/yum.repos.d/CentOS-Extra-Buildizer.repo\"" end |
#build_dep(build_dep) ⇒ Object
33 34 35 |
# File 'lib/buildizer/image/centos.rb', line 33 def build_dep(build_dep) instruction :RUN, "yum-builddep -y #{build_dep.to_a.join(' ')}" if build_dep.any? end |
#build_rpm_instructions(builder, target) ⇒ Object
59 60 61 62 63 64 |
# File 'lib/buildizer/image/centos.rb', line 59 def build_rpm_instructions(builder, target) ["cd ~/rpmbuild/SPECS/", "rpmbuild -bb #{target_spec_name(target)}", ["find ~/rpmbuild/RPMS -name '*.rpm' ", "-exec mv {} #{builder.docker.container_build_path} \\;"].join] end |
#fpm_extra_params ⇒ Object
27 28 29 30 31 |
# File 'lib/buildizer/image/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/image/centos.rb', line 23 def fpm_output_type 'rpm' end |
#native_build_instructions(builder, target) ⇒ Object
66 67 68 69 70 71 |
# File 'lib/buildizer/image/centos.rb', line 66 def native_build_instructions(builder, target) [*Array(rpmdev_setuptree_instructions(builder, target)), "cp #{builder.docker.container_package_archive_path} ~/rpmbuild/SOURCES/", "cp #{builder.docker.container_package_path.join(target_spec_name(target))} ~/rpmbuild/SPECS/", *Array(build_rpm_instructions(builder, target))] end |
#os_name ⇒ Object
11 12 13 |
# File 'lib/buildizer/image/centos.rb', line 11 def os_name 'centos' end |
#os_package_cloud_name ⇒ Object
15 16 17 |
# File 'lib/buildizer/image/centos.rb', line 15 def os_package_cloud_name 'el' end |
#os_package_cloud_version ⇒ Object
19 20 21 |
# File 'lib/buildizer/image/centos.rb', line 19 def os_package_cloud_version os_version.match(/\d+$/).to_s.to_i end |
#patch_build_instructions(builder, target) ⇒ Object
73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 |
# File 'lib/buildizer/image/centos.rb', line 73 def patch_build_instructions(builder, 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(builder, 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(builder, target))] end |
#rpmdev_setuptree_instructions(builder, target) ⇒ Object
55 56 57 |
# File 'lib/buildizer/image/centos.rb', line 55 def rpmdev_setuptree_instructions(builder, target) "rpmdev-setuptree" end |
#target_package_spec(target) ⇒ Object
98 99 100 |
# File 'lib/buildizer/image/centos.rb', line 98 def target_package_spec(target) [target.package_name, target.package_version].compact.join('-') end |
#target_spec_name(target) ⇒ Object
51 52 53 |
# File 'lib/buildizer/image/centos.rb', line 51 def target_spec_name(target) "#{target.base_package_name}.spec" end |