ood_packaging 0.8.0 → 0.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d301aee2821f7e83dbf3caf625871a3d8d938e5280ce8cdf092257dbd764d5f7
4
- data.tar.gz: fe564b821d0cc7c8a5a094f4b110aee8c5e0a4ebf5d073cb8bd93cdc88ded585
3
+ metadata.gz: 8d66aca5d9123c4952b9a2842fdc3c63aed8e566bf7f5e9569ce197bccbd3eaf
4
+ data.tar.gz: bb3382c9d597c60585aa35eb6305005e447e02c558b5a30ccc78bee625291c4a
5
5
  SHA512:
6
- metadata.gz: 3b91c002309b28ccf7266b44502689fc888d225ae8682e5c8a3374f2ff77bff6ffd28cf64dacd526253cc69fecef1fc7a59d3c24c73cdcbbacd3eb5374018097
7
- data.tar.gz: 0d2c3272f19de52cd1f30f4b956193c497e8ef2186b0a0bf36cac0d670f9368fc80f988bf4d389774e46198c80b78529bd00fc4a4ffa344c6efcaaf8d74185dc
6
+ metadata.gz: 897f586443e3a39a868d2565dc12320bcd416f45d3fe8f26580024179c7b11ef357a8078e681e738ecfcd19b505cbecdea3dee1bb4c8d593b749bc6e03f578d1
7
+ data.tar.gz: 3531b9092f90394d950baeeeaa4cf4980eaf6163575953846f75688876c0a00109e4095bf2cc737e4236f3590fd1de2204cd59593e8ac82976512abbb527fb67
data/bin/ood_packaging CHANGED
@@ -22,6 +22,10 @@ OptionParser.new do |opts|
22
22
  options[:dist] = v
23
23
  end
24
24
 
25
+ opts.on('-a', '--arch=ARCH', String, 'Architecture to build') do |v|
26
+ options[:arch] = v
27
+ end
28
+
25
29
  opts.on('-V', '--version=VERSION', String, 'Version of package to build') do |v|
26
30
  options[:version] = v
27
31
  end
@@ -15,7 +15,7 @@ class OodPackaging::Build
15
15
  attr_accessor :build_box
16
16
 
17
17
  def initialize
18
- @build_box = OodPackaging::BuildBox.new(dist: ENV['DIST'])
18
+ @build_box = OodPackaging::BuildBox.new(dist: ENV['DIST'], arch: ENV['ARCH'])
19
19
  end
20
20
 
21
21
  def config
@@ -116,11 +116,11 @@ class OodPackaging::Build
116
116
  end
117
117
 
118
118
  def output_dir
119
- File.join('/output', build_box.dist)
119
+ File.join('/output', "#{build_box.dist}-#{build_box.arch}")
120
120
  end
121
121
 
122
122
  def work_dir
123
- File.join('/work', build_box.dist)
123
+ build_box.work_dir
124
124
  end
125
125
 
126
126
  def packaging_config
@@ -1,4 +1,5 @@
1
- FROM <%= base_image %>
1
+ FROM --platform=<%= platform %> <%= base_image %>
2
+ ENV ARCH=<%= arch %>
2
3
  MAINTAINER Trey Dockendorf <tdockendorf@osc.edu>
3
4
  ENV LANG=en_US.UTF-8
4
5
  ENV LC_CTYPE=en_US.UTF-8
@@ -45,7 +45,7 @@ run chmod 440 /etc/sudoers.d/ood
45
45
  <% if rpm? -%>
46
46
  header "Setup RPM env"
47
47
  sudo -u <%= ctr_user %> -H cat > <%= ctr_rpmmacros %> <<EOF
48
- %_topdir /work/<%= dist %>
48
+ %_topdir <%= work_dir %>
49
49
  <%- # Workaround to weird issue with debuginfo stripping -%>
50
50
  <% if dist == 'el7' -%>
51
51
  %_builddir %{_topdir}/rpmbuild/BUILD
@@ -23,6 +23,11 @@ class OodPackaging::BuildBox
23
23
  'ubuntu-22.04' => 'jammy'
24
24
  }.freeze
25
25
 
26
+ ARCH_PLATFORMS = {
27
+ 'x86_64' => 'linux/amd64',
28
+ 'aarch64' => 'linux/arm64'
29
+ }.freeze
30
+
26
31
  def initialize(config = {})
27
32
  @config = config
28
33
  raise ArgumentError, 'Must provide dist' if dist.nil?
@@ -31,6 +36,9 @@ class OodPackaging::BuildBox
31
36
  unless valid_dist?(dist)
32
37
  raise ArgumentError, "Invalid dist selected: #{dist}. Valid choices are #{valid_dists.join(' ')}"
33
38
  end
39
+ unless valid_arch?(arch)
40
+ raise ArgumentError, "Invalid arch selected: #{arch}. Valid choices are #{valid_arches.join(' ')}"
41
+ end
34
42
  # rubocop:enable Style/GuardClause
35
43
  end
36
44
 
@@ -38,6 +46,10 @@ class OodPackaging::BuildBox
38
46
  @dist ||= ENV['OOD_PACKAGING_DIST'] || @config[:dist]
39
47
  end
40
48
 
49
+ def arch
50
+ @arch ||= ENV['OOD_PACKAGING_ARCH'] || @config[:arch] || 'x86_64'
51
+ end
52
+
41
53
  def rpm?
42
54
  dist.start_with?('el') || dist.start_with?('amzn')
43
55
  end
@@ -80,6 +92,14 @@ class OodPackaging::BuildBox
80
92
  BASE_IMAGES.keys
81
93
  end
82
94
 
95
+ def valid_arch?(value)
96
+ ARCH_PLATFORMS.key?(value)
97
+ end
98
+
99
+ def valid_arches
100
+ ARCH_PLATFORMS.keys
101
+ end
102
+
83
103
  def base_image
84
104
  @base_image ||= BASE_IMAGES[dist]
85
105
  end
@@ -88,10 +108,18 @@ class OodPackaging::BuildBox
88
108
  @codename ||= CODENAMES[dist]
89
109
  end
90
110
 
111
+ def platform
112
+ @platform ||= ARCH_PLATFORMS[arch]
113
+ end
114
+
91
115
  def build_dir
92
116
  File.join(File.dirname(__FILE__), 'build_box/docker-image')
93
117
  end
94
118
 
119
+ def work_dir
120
+ File.join('/work', "#{dist}-#{arch}")
121
+ end
122
+
95
123
  def image_registry
96
124
  @config[:build_box_registry] || ENV['OOD_PACKAGING_BUILD_BOX_REGISTRY'] || nil
97
125
  end
@@ -109,7 +137,7 @@ class OodPackaging::BuildBox
109
137
  end
110
138
 
111
139
  def image_tag
112
- [image_registry, image_org, "#{image_name}-#{dist}:#{image_version}"].compact.join('/')
140
+ [image_registry, image_org, "#{image_name}-#{dist}-#{arch}:#{image_version}"].compact.join('/')
113
141
  end
114
142
 
115
143
  def build_gem
@@ -128,11 +156,29 @@ class OodPackaging::BuildBox
128
156
  template_file('build_box/docker-image/install.sh.erb')
129
157
  end
130
158
 
159
+ def build_command
160
+ if container_runtime == 'docker'
161
+ ['buildx', 'build']
162
+ else
163
+ ['build']
164
+ end
165
+ end
166
+
167
+ def build_output
168
+ if container_runtime == 'docker'
169
+ ['--output', 'type=docker']
170
+ else
171
+ []
172
+ end
173
+ end
174
+
131
175
  def build!
132
176
  scripts
133
- cmd = [container_runtime, 'build']
134
- cmd.concat ['--platform', 'linux/amd64']
177
+ cmd = [container_runtime]
178
+ cmd.concat build_command
179
+ cmd.concat ['--platform', platform]
135
180
  cmd.concat ['--tag', image_tag]
181
+ cmd.concat build_output
136
182
  cmd.concat [ENV['OOD_PACKAGING_BUILD_BOX_ARGS']] if ENV['OOD_PACKAGING_BUILD_BOX_ARGS']
137
183
  cmd.concat ['-f', dockerfile]
138
184
  cmd.concat [build_dir]
@@ -2,7 +2,7 @@
2
2
 
3
3
  # Handle options for OodPackaging
4
4
  module OodPackaging
5
- OPTIONS = [:package, :version, :dist, :work_dir, :clean_work_dir, :output_dir, :clean_output_dir, :tar,
5
+ OPTIONS = [:package, :version, :dist, :arch, :work_dir, :clean_work_dir, :output_dir, :clean_output_dir, :tar,
6
6
  :tar_only, :skip_download, :gpg_sign, :gpg_name, :gpg_pubkey, :gpg_private_key, :gpg_passphrase,
7
7
  :debug, :attach].freeze
8
8
  end
@@ -276,7 +276,7 @@ class OodPackaging::Package
276
276
 
277
277
  def container_start!
278
278
  cmd = [container_runtime, 'run', '--detach', '--rm']
279
- cmd.concat ['--platform', 'linux/amd64']
279
+ cmd.concat ['--platform', build_box.platform]
280
280
  cmd.concat ['--name', container_name]
281
281
  cmd.concat rt_specific_flags
282
282
  cmd.concat container_mounts
@@ -314,11 +314,14 @@ class OodPackaging::Package
314
314
  cmd = [container_runtime, 'kill', container_name]
315
315
  cmd.concat [cmd_suffix] unless debug?
316
316
  sh cmd.join(' '), verbose: debug?
317
+ rescue RuntimeError
318
+ puts 'Error killing container'.red
317
319
  end
318
320
 
319
321
  def container_env
320
322
  env = {
321
323
  'DIST' => build_box.dist,
324
+ 'ARCH' => build_box.arch,
322
325
  'PACKAGE' => package_name,
323
326
  'VERSION' => version,
324
327
  'TAR_NAME' => "#{tar_name}.tar.gz",
@@ -17,25 +17,25 @@ namespace :ood_packaging do
17
17
 
18
18
  namespace :buildbox do
19
19
  desc 'Build buildbox image'
20
- task :build, [:dist] do |_task, args|
20
+ task :build, [:dist, :arch] do |_task, args|
21
21
  @build_box = OodPackaging::BuildBox.new(args)
22
22
  @build_box.build!
23
23
  end
24
24
 
25
25
  desc 'Push buildbox image'
26
- task :push, [:dist] do |_task, args|
26
+ task :push, [:dist, :arch] do |_task, args|
27
27
  @build_box = OodPackaging::BuildBox.new(args)
28
28
  @build_box.push!
29
29
  end
30
30
 
31
31
  desc 'Pull buildbox image'
32
- task :pull, [:dist] do |_task, args|
32
+ task :pull, [:dist, :arch] do |_task, args|
33
33
  @build_box = OodPackaging::BuildBox.new(args)
34
34
  @build_box.pull!
35
35
  end
36
36
 
37
37
  desc 'Save buildbox image'
38
- task :save, [:dist, :path] do |_task, args|
38
+ task :save, [:dist, :arch, :path] do |_task, args|
39
39
  @build_box = OodPackaging::BuildBox.new(args)
40
40
  @build_box.save!(args[:path])
41
41
  end
@@ -47,76 +47,78 @@ namespace :ood_packaging do
47
47
  OodPackaging::Build.new.run!
48
48
  end
49
49
 
50
- OodPackaging::RakeTask.new(:internal, [:package, :dist]) do |t, args|
50
+ OodPackaging::RakeTask.new(:internal, [:package, :dist, :arch]) do |t, args|
51
51
  name = args[:package].split(':').last
52
52
  t.package = File.join(proj_root, 'packages', name)
53
53
  dist = args[:dist] || ENV['OOD_PACKAGING_DIST']
54
+ arch = args[:arch] || ENV['OOD_PACKAGING_ARCH'] || 'x86_64'
54
55
  t.dist = dist
56
+ t.arch = arch
55
57
  t.version = OodPackaging.package_version(name, dist)
56
58
  t.work_dir = File.join(proj_root, 'tmp/work')
57
59
  t.output_dir = File.join(proj_root, 'tmp/output')
58
60
  end
59
61
 
60
62
  desc 'Package ondemand-release'
61
- task :'ondemand-release', [:dist] do |t, args|
63
+ task :'ondemand-release', [:dist, :arch] do |t, args|
62
64
  ENV['OOD_PACKAGING_GPG_SIGN'] = 'false'
63
- Rake::Task['ood_packaging:package:internal'].invoke(t.name, args[:dist])
65
+ Rake::Task['ood_packaging:package:internal'].invoke(t.name, args[:dist], args[:arch])
64
66
  end
65
67
 
66
68
  desc 'Package ondemand-release-latest'
67
- task :'ondemand-release-latest', [:dist] do |t, args|
69
+ task :'ondemand-release-latest', [:dist, :arch] do |t, args|
68
70
  ENV['OOD_PACKAGING_GPG_SIGN'] = 'false'
69
- Rake::Task['ood_packaging:package:internal'].invoke(t.name, args[:dist])
71
+ Rake::Task['ood_packaging:package:internal'].invoke(t.name, args[:dist], args[:arch])
70
72
  end
71
73
 
72
74
  desc 'Package ondemand-runtime'
73
- task :'ondemand-runtime', [:dist] do |t, args|
74
- Rake::Task['ood_packaging:package:internal'].invoke(t.name, args[:dist])
75
+ task :'ondemand-runtime', [:dist, :arch] do |t, args|
76
+ Rake::Task['ood_packaging:package:internal'].invoke(t.name, args[:dist], args[:arch])
75
77
  end
76
78
 
77
79
  desc 'Package scl-utils'
78
- task :'scl-utils', [:dist] do |t, args|
79
- Rake::Task['ood_packaging:package:internal'].invoke(t.name, args[:dist])
80
+ task :'scl-utils', [:dist, :arch] do |t, args|
81
+ Rake::Task['ood_packaging:package:internal'].invoke(t.name, args[:dist], args[:arch])
80
82
  end
81
83
 
82
84
  desc 'Package passenger'
83
- task :passenger, [:dist] do |t, args|
84
- Rake::Task['ood_packaging:package:internal'].invoke(t.name, args[:dist])
85
+ task :passenger, [:dist, :arch] do |t, args|
86
+ Rake::Task['ood_packaging:package:internal'].invoke(t.name, args[:dist], args[:arch])
85
87
  end
86
88
 
87
89
  desc 'Package cjose'
88
- task :cjose, [:dist] do |t, args|
89
- Rake::Task['ood_packaging:package:internal'].invoke(t.name, args[:dist])
90
+ task :cjose, [:dist, :arch] do |t, args|
91
+ Rake::Task['ood_packaging:package:internal'].invoke(t.name, args[:dist], args[:arch])
90
92
  end
91
93
 
92
94
  desc 'Package mod_auth_openidc'
93
- task :mod_auth_openidc, [:dist] do |t, args|
94
- Rake::Task['ood_packaging:package:internal'].invoke(t.name, args[:dist])
95
+ task :mod_auth_openidc, [:dist, :arch] do |t, args|
96
+ Rake::Task['ood_packaging:package:internal'].invoke(t.name, args[:dist], args[:arch])
95
97
  end
96
98
 
97
99
  desc 'Package sqlite'
98
- task :sqlite, [:dist] do |t, args|
99
- Rake::Task['ood_packaging:package:internal'].invoke(t.name, args[:dist])
100
+ task :sqlite, [:dist, :arch] do |t, args|
101
+ Rake::Task['ood_packaging:package:internal'].invoke(t.name, args[:dist], args[:arch])
100
102
  end
101
103
 
102
104
  desc 'Package ondemand_exporter'
103
- task :ondemand_exporter, [:dist] do |t, args|
104
- Rake::Task['ood_packaging:package:internal'].invoke(t.name, args[:dist])
105
+ task :ondemand_exporter, [:dist, :arch] do |t, args|
106
+ Rake::Task['ood_packaging:package:internal'].invoke(t.name, args[:dist], args[:arch])
105
107
  end
106
108
 
107
109
  desc 'Package ondemand-compute'
108
- task :'ondemand-compute', [:dist] do |t, args|
109
- Rake::Task['ood_packaging:package:internal'].invoke(t.name, args[:dist])
110
+ task :'ondemand-compute', [:dist, :arch] do |t, args|
111
+ Rake::Task['ood_packaging:package:internal'].invoke(t.name, args[:dist], args[:arch])
110
112
  end
111
113
 
112
114
  desc 'Package python-websockify'
113
- task :'python-websockify', [:dist] do |t, args|
114
- Rake::Task['ood_packaging:package:internal'].invoke(t.name, args[:dist])
115
+ task :'python-websockify', [:dist, :arch] do |t, args|
116
+ Rake::Task['ood_packaging:package:internal'].invoke(t.name, args[:dist], args[:arch])
115
117
  end
116
118
 
117
119
  desc 'Package turbovnc'
118
- task :turbovnc, [:dist] do |t, args|
119
- Rake::Task['ood_packaging:package:internal'].invoke(t.name, args[:dist])
120
+ task :turbovnc, [:dist, :arch] do |t, args|
121
+ Rake::Task['ood_packaging:package:internal'].invoke(t.name, args[:dist], args[:arch])
120
122
  end
121
123
  end
122
124
  end
@@ -2,7 +2,7 @@
2
2
 
3
3
  # Version code for OodPackaging
4
4
  module OodPackaging
5
- VERSION = '0.8.0'
5
+ VERSION = '0.9.0'
6
6
  PACKAGE_VERSION = {
7
7
  'ondemand-release' => {
8
8
  '(ubuntu|debian)' => '3.1.0',
@@ -12,13 +12,13 @@ module OodPackaging
12
12
  '(ubuntu|debian)' => '1',
13
13
  'default' => '1-8'
14
14
  },
15
- 'ondemand-runtime' => '3.1.1',
15
+ 'ondemand-runtime' => '3.1.2',
16
16
  'scl-utils' => '2.0.3',
17
17
  'passenger' => '6.0.17',
18
18
  'cjose' => '0.6.1',
19
19
  'mod_auth_openidc' => '2.4.14.1',
20
20
  'sqlite' => '3.26.0-4',
21
- 'ondemand_exporter' => '0.9.0',
21
+ 'ondemand_exporter' => '0.10.0',
22
22
  'ondemand-compute' => {
23
23
  '(ubuntu|debian)' => '3.1.0',
24
24
  'default' => '3.1.0'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ood_packaging
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.0
4
+ version: 0.9.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Trey Dockendorf
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2023-06-02 00:00:00.000000000 Z
12
+ date: 2023-06-09 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rake