Class: Buildizer::Image::Ubuntu

Inherits:
Base
  • Object
show all
Defined in:
lib/buildizer/image/ubuntu.rb

Direct Known Subclasses

Ubuntu1204, Ubuntu1404, Ubuntu1604

Instance Attribute Summary collapse

Attributes inherited from Base

#docker, #instructions, #target

Instance Method Summary collapse

Methods inherited from Base

#base_image, #instruction, #name, #os_package_cloud_name, #patch_build_dep

Constructor Details

#initialize(docker, os_version, **kwargs) ⇒ Ubuntu

Returns a new instance of Ubuntu.



6
7
8
9
# File 'lib/buildizer/image/ubuntu.rb', line 6

def initialize(docker, os_version, **kwargs)
  @os_version = os_version
  super(docker, **kwargs)
end

Instance Attribute Details

#os_versionObject (readonly)

Returns the value of attribute os_version.



4
5
6
# File 'lib/buildizer/image/ubuntu.rb', line 4

def os_version
  @os_version
end

Instance Method Details

#build_deb_instructions(builder, target) ⇒ Object



38
39
40
41
# File 'lib/buildizer/image/ubuntu.rb', line 38

def build_deb_instructions(builder, target)
  ["DEB_BUILD_OPTIONS=nocheck dpkg-buildpackage -b -us -uc -j#{builder.build_jobs}",
   "cp ../*.deb #{builder.docker.container_build_path}"]
end

#build_dep(build_dep) ⇒ Object



23
24
25
# File 'lib/buildizer/image/ubuntu.rb', line 23

def build_dep(build_dep)
  instruction :RUN, "apt-get build-dep -y #{build_dep.to_a.join(' ')}" if build_dep.any?
end

#fpm_extra_paramsObject



31
32
33
34
35
36
# File 'lib/buildizer/image/ubuntu.rb', line 31

def fpm_extra_params
  Array(super).tap do |res|
    res << '--deb-use-file-permissions'
    res << '--deb-no-default-config-files'
  end
end

#fpm_output_typeObject



27
28
29
# File 'lib/buildizer/image/ubuntu.rb', line 27

def fpm_output_type
  'deb'
end

#native_build_instructions(builder, target) ⇒ Object



43
44
45
46
47
48
49
50
# File 'lib/buildizer/image/ubuntu.rb', line 43

def native_build_instructions(builder, target)
  source_archive_name = "#{target.package_name}_#{target.package_upstream_version}.orig.tar.gz"

  [["ln -fs #{target.container_package_archive_path} ",
    "#{target.container_package_path.dirname.join(source_archive_name)}"].join,
   "cd #{target.container_package_path}",
   *Array(build_deb_instructions(builder, target))]
end

#os_codenameObject



15
16
17
# File 'lib/buildizer/image/ubuntu.rb', line 15

def os_codename
  raise
end

#os_nameObject



11
12
13
# File 'lib/buildizer/image/ubuntu.rb', line 11

def os_name
  'ubuntu'
end

#os_package_cloud_versionObject



19
20
21
# File 'lib/buildizer/image/ubuntu.rb', line 19

def os_package_cloud_version
  os_codename
end

#patch_build_instructions(builder, target) ⇒ Object



52
53
54
55
56
57
58
59
60
61
62
63
# File 'lib/buildizer/image/ubuntu.rb', line 52

def patch_build_instructions(builder, target)
  ["apt-get source #{target_package_spec(target)}",
   'cd $(ls *.orig.tar* | ruby -ne "puts \$_.split(\\".orig.tar\\").first.gsub(\\"_\\", \\"-\\")")',
   ["DEBFULLNAME=\"#{target.maintainer}\" DEBEMAIL=\"#{target.maintainer_email}\" ",
    "debchange --newversion ",
    "$(dpkg-parsechangelog | grep \"Version:\" | cut -d\" \" -f2-)buildizer#{target.patch_version} ",
    "--distribution #{os_codename} \"Patch by buildizer\""].join,
   *target.patch.map {|patch| "cp ../#{patch} debian/patches/"},
   *target.patch.map {|patch| "sed -i \"/#{Regexp.escape(patch)}/d\" debian/patches/series"},
   *target.patch.map {|patch| "echo #{patch} >> debian/patches/series"},
   *Array(build_deb_instructions(builder, target))]
end

#target_package_spec(target) ⇒ Object



65
66
67
# File 'lib/buildizer/image/ubuntu.rb', line 65

def target_package_spec(target)
  [target.package_name, target.package_version].compact.join('=')
end