simp-rake-helpers 5.6.2 → 5.7.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 +4 -4
- data/CHANGELOG.md +10 -0
- data/lib/simp/packer/iso_vars_json.rb +87 -0
- data/lib/simp/rake/build/auto.rb +6 -31
- data/lib/simp/rake/helpers/assets/rpm_spec/simp6.spec +36 -8
- data/lib/simp/rake/helpers/assets/rpm_spec/simpdefault.spec +36 -8
- data/lib/simp/rake/helpers/version.rb +1 -1
- data/spec/acceptance/00_pkg_rpm_custom_scriptlets_spec.rb +19 -3
- data/spec/acceptance/10_pkg_rpm_spec.rb +52 -8
- data/spec/acceptance/20_pkg_rpm_upgrade_spec.rb +223 -0
- data/spec/acceptance/files/mock_packages/simp-adapter/usr/local/sbin/simp_rpm_helper +334 -245
- data/spec/acceptance/files/package_upgrades/pupmod-simp-testpackage-1.0/CHANGELOG +2 -0
- data/spec/acceptance/files/package_upgrades/pupmod-simp-testpackage-1.0/Rakefile +3 -0
- data/spec/acceptance/files/package_upgrades/pupmod-simp-testpackage-1.0/build/rpm_metadata/requires +2 -0
- data/spec/acceptance/files/package_upgrades/pupmod-simp-testpackage-1.0/data/os/CentOS.yaml +2 -0
- data/spec/acceptance/files/package_upgrades/pupmod-simp-testpackage-1.0/data/os/RedHat.yaml +2 -0
- data/spec/acceptance/files/package_upgrades/pupmod-simp-testpackage-1.0/hiera.yaml +14 -0
- data/spec/acceptance/files/package_upgrades/pupmod-simp-testpackage-1.0/manifests/init.pp +2 -0
- data/spec/acceptance/files/package_upgrades/pupmod-simp-testpackage-1.0/metadata.json +37 -0
- data/spec/acceptance/files/package_upgrades/pupmod-simp-testpackage-2.0/CHANGELOG +5 -0
- data/spec/acceptance/files/package_upgrades/pupmod-simp-testpackage-2.0/Rakefile +3 -0
- data/spec/acceptance/files/package_upgrades/pupmod-simp-testpackage-2.0/build/rpm_metadata/requires +2 -0
- data/spec/acceptance/files/package_upgrades/pupmod-simp-testpackage-2.0/data/os/CentOS.yaml +2 -0
- data/spec/acceptance/files/package_upgrades/pupmod-simp-testpackage-2.0/data/os/RedHat.yaml +2 -0
- data/spec/acceptance/files/package_upgrades/pupmod-simp-testpackage-2.0/hiera.yaml +14 -0
- data/spec/acceptance/files/package_upgrades/pupmod-simp-testpackage-2.0/manifests/init.pp +3 -0
- data/spec/acceptance/files/package_upgrades/pupmod-simp-testpackage-2.0/metadata.json +37 -0
- data/spec/acceptance/nodesets/default.yml +7 -8
- data/spec/acceptance/support/pkg_rpm_helpers.rb +2 -2
- data/spec/lib/simp/packer/iso_vars_json_spec.rb +65 -0
- metadata +29 -5
- data/spec/acceptance/20_pkg_rpm_safely_upgrading_obsolete_modules_spec.rb +0 -175
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8a8658433c3ae0b91d796125582eab9ce67ce0e7
|
4
|
+
data.tar.gz: 82920a327f2f34bb31a3e1ba1abbbd8f71b06fc4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 011655550ccfafa645a3dc4f0b4160c7413c5a487f1739fe66dd9481e408bc1a6c9ea029d626784cde2a4371795120200d8d900582d147ca6f8edec60a8a9739
|
7
|
+
data.tar.gz: 8ad330b2c6af2373c750123d5ff6765426b98644bca04e0b449c855296320862f34bb0614650166042232ee1e758a369a5798a5b5daba00248e0ff8a0b13e49f
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,13 @@
|
|
1
|
+
### 5.7.0 / 2018-12-05
|
2
|
+
* Move use of simp_rpm_helper from %post to %postrans, to fix
|
3
|
+
a bug in which files that should have been removed from the old
|
4
|
+
version during RPM upgrade are copied.
|
5
|
+
|
6
|
+
### 5.6.3 / 2018-10-30
|
7
|
+
* Add information about the distribution OS to the simp-packer `vars.json`.
|
8
|
+
* Add builder version information to the simp-packer `vars.json`.
|
9
|
+
* Refactor writing the vars.json to its own method.
|
10
|
+
|
1
11
|
### 5.6.2 / 2018-10-02
|
2
12
|
* Refactor 'dev' GPG signing key logic into `Simp::LocalGpgSigningKey`
|
3
13
|
* Add acceptance tests for GPG logic and `rake pkg:signrpms`
|
@@ -0,0 +1,87 @@
|
|
1
|
+
require 'simp/rake/helpers/version'
|
2
|
+
require 'digest'
|
3
|
+
require 'json'
|
4
|
+
|
5
|
+
module Simp
|
6
|
+
module Packer
|
7
|
+
# Write a `vars.json` file to accompany a SIMP ISO
|
8
|
+
class IsoVarsJson
|
9
|
+
# SemVer data version of file
|
10
|
+
#
|
11
|
+
# (Starting at 1.0.0, because earlier formats didn't include versions)
|
12
|
+
VARS_FORMAT_VERSION = '1.0.0'.freeze
|
13
|
+
|
14
|
+
# @param file [String] path to iso file
|
15
|
+
# @param target_release [String] SIMP release to build (e.g., '6.X')
|
16
|
+
# This is a key from the build's `release_mappings.yaml` in simp-core
|
17
|
+
# @param target_data [Hash] Unpacked hash of isos and metadata
|
18
|
+
# The metadata is in the format returned by
|
19
|
+
# Simp::Build::ReleaseMapper#autoscan_unpack_list
|
20
|
+
# @param opts [Hash] extra options
|
21
|
+
def initialize(iso, target_release, target_data, opts = {})
|
22
|
+
@iso = iso
|
23
|
+
@target_release = target_release
|
24
|
+
@target_data = target_data
|
25
|
+
@opts = opts
|
26
|
+
@opts[:silent] ||= false
|
27
|
+
end
|
28
|
+
|
29
|
+
# Returns a SHA256 checksum of iso file
|
30
|
+
# @param file [String] path to file
|
31
|
+
# @return [String] SHA256 sum of ISO
|
32
|
+
def sha256sum(file)
|
33
|
+
unless @opts[:silent]
|
34
|
+
puts
|
35
|
+
puts '=' * 80
|
36
|
+
puts "#### Checksumming (SHA256) #{file}..."
|
37
|
+
puts '=' * 80
|
38
|
+
puts
|
39
|
+
end
|
40
|
+
|
41
|
+
Digest::SHA256.file(file).hexdigest
|
42
|
+
end
|
43
|
+
|
44
|
+
# Returns a versioned vars.json data structure
|
45
|
+
# @return [Hash] vars data structure
|
46
|
+
def data
|
47
|
+
sum = sha256sum(@iso)
|
48
|
+
box_distro_release = "SIMP-#{@target_release}-#{@target_data['flavor']}-#{@target_data['os_version']}"
|
49
|
+
{
|
50
|
+
'simp_vars_version' => VARS_FORMAT_VERSION,
|
51
|
+
'box_simp_release' => @target_release,
|
52
|
+
'box_distro_release' => box_distro_release,
|
53
|
+
'iso_url' => @iso,
|
54
|
+
'iso_checksum' => sum,
|
55
|
+
'iso_checksum_type' => 'sha256',
|
56
|
+
'new_password' => 'suP3rP@ssw0r!suP3rP@ssw0r!suP3rP@ssw0r!',
|
57
|
+
'output_directory' => './OUTPUT',
|
58
|
+
'dist_os_flavor' => @target_data['flavor'],
|
59
|
+
'dist_os_version' => @target_data['os_version'],
|
60
|
+
'dist_os_maj_version' => @target_data['os_version'].split('.').first,
|
61
|
+
'dist_source_isos' => @target_data['isos'].map { |x| File.basename(x) }.join(':'),
|
62
|
+
'git_commit' => %x(git rev-parse --verify HEAD).strip,
|
63
|
+
'packer_src_type' => 'simp-iso',
|
64
|
+
'iso_builder' => 'rubygem-simp-rake-helpers',
|
65
|
+
'iso_builder_version' => Simp::Rake::Helpers::VERSION
|
66
|
+
}
|
67
|
+
end
|
68
|
+
|
69
|
+
# Write data to a vars.json file for simp-packer to use
|
70
|
+
#
|
71
|
+
# @param file [String] path to vars.json file to write
|
72
|
+
# (Defaults to the same path as the .iso, with a `.json` extension)
|
73
|
+
def write(vars_file = @iso.sub(%r{.iso$}, '.json'))
|
74
|
+
unless @opts[:silent]
|
75
|
+
puts
|
76
|
+
puts '=' * 80
|
77
|
+
puts '#### Writing packer vars data to:'
|
78
|
+
puts " '#{vars_file}'"
|
79
|
+
puts '=' * 80
|
80
|
+
puts
|
81
|
+
end
|
82
|
+
|
83
|
+
File.open(vars_file, 'w') { |f| f.puts data.to_json }
|
84
|
+
end
|
85
|
+
end
|
86
|
+
end
|
87
|
+
end
|
data/lib/simp/rake/build/auto.rb
CHANGED
@@ -4,6 +4,7 @@ require 'simp/rake'
|
|
4
4
|
require 'json'
|
5
5
|
require 'simp/rake/build/constants'
|
6
6
|
require 'simp/rake/helpers'
|
7
|
+
require 'simp/packer/iso_vars_json'
|
7
8
|
|
8
9
|
include Simp::Rake
|
9
10
|
|
@@ -102,7 +103,7 @@ module Simp::Rake::Build
|
|
102
103
|
- SIMP_BUILD_staging_dir => Path to stage big build assets
|
103
104
|
[Default: './SIMP_ISO_STAGING']
|
104
105
|
- SIMP_BUILD_rm_staging_dir => 'no' do not forcibly remove the staging dir before starting
|
105
|
-
- SIMP_BUILD_overlay => 'no' uses an existing DVD overlay if found
|
106
|
+
- SIMP_BUILD_overlay => 'no' uses an existing DVD overlay if found
|
106
107
|
- SIMP_BUILD_force_dirty => 'yes' tries to checks out subrepos even if dirty
|
107
108
|
- SIMP_BUILD_docs => 'yes' builds & includes documentation
|
108
109
|
- SIMP_BUILD_checkout => 'no' will skip the git repo checkouts
|
@@ -113,7 +114,6 @@ module Simp::Rake::Build
|
|
113
114
|
- SIMP_BUILD_iso_name => Renames the output ISO filename [Default: false]
|
114
115
|
- SIMP_BUILD_iso_tag => Appended to the output ISO's filename [Default: false]
|
115
116
|
- SIMP_BUILD_verbose => 'yes' enables verbose reporting. [Default: 'no']
|
116
|
-
- SIMP_BUILD_packer_vars => Write a packer vars.json to go with this ISO [Default: 'yes']
|
117
117
|
- SIMP_BUILD_signing_key => The name of the GPG key to use to sign packages. [Default: 'dev']
|
118
118
|
EOM
|
119
119
|
|
@@ -139,7 +139,6 @@ module Simp::Rake::Build
|
|
139
139
|
target_release = args[:release]
|
140
140
|
do_checksum = (args.do_checksum = ~ /^$/ ? 'false' : args.do_checksum)
|
141
141
|
key_name = args[:key_name]
|
142
|
-
do_packer_vars = ENV.fetch('SIMP_BUILD_packer_vars', 'yes') == 'yes'
|
143
142
|
verbose = ENV.fetch('SIMP_BUILD_verbose', 'no') == 'yes'
|
144
143
|
prompt = ENV.fetch('SIMP_BUILD_prompt', 'yes') != 'no'
|
145
144
|
method = ENV.fetch('SIMP_BUILD_puppetfile','tracking')
|
@@ -412,34 +411,8 @@ module Simp::Rake::Build
|
|
412
411
|
FileUtils.mkdir_p File.dirname(iso), :verbose => verbose
|
413
412
|
FileUtils.mv(@simp_output_iso, iso, :verbose => verbose)
|
414
413
|
|
415
|
-
|
416
|
-
|
417
|
-
vars_file = iso.sub(/.iso$/, '.json')
|
418
|
-
puts
|
419
|
-
puts '='*80
|
420
|
-
puts "#### Checksumming #{iso}..."
|
421
|
-
puts '='*80
|
422
|
-
puts
|
423
|
-
|
424
|
-
sum = `sha256sum "#{iso}"`.split(/ +/).first
|
425
|
-
|
426
|
-
puts
|
427
|
-
puts '='*80
|
428
|
-
puts "#### Writing packer data to:"
|
429
|
-
puts " '#{vars_file}'"
|
430
|
-
puts '='*80
|
431
|
-
puts
|
432
|
-
box_distro_release = "SIMP-#{target_release}-#{File.basename(target_data['isos'].first).sub(/\.iso$/,'').sub(/-x86_64/,'')}"
|
433
|
-
packer_vars = {
|
434
|
-
'box_simp_release' => target_release,
|
435
|
-
'box_distro_release' => box_distro_release,
|
436
|
-
'iso_url' => iso,
|
437
|
-
'iso_checksum' => sum,
|
438
|
-
'iso_checksum_type' => 'sha256',
|
439
|
-
'new_password' => 'suP3rP@ssw0r!suP3rP@ssw0r!suP3rP@ssw0r!',
|
440
|
-
'output_directory' => './OUTPUT',
|
441
|
-
}
|
442
|
-
File.open(vars_file, 'w'){|f| f.puts packer_vars.to_json }
|
414
|
+
var_json = Simp::Packer::IsoVarsJson.new(iso, target_release, target_data, {})
|
415
|
+
var_json.write
|
443
416
|
|
444
417
|
puts
|
445
418
|
puts '='*80
|
@@ -557,6 +530,8 @@ module Simp::Rake::Build
|
|
557
530
|
end
|
558
531
|
FileUtils.mkdir_p staging_dir, :verbose => verbose
|
559
532
|
end
|
533
|
+
|
534
|
+
|
560
535
|
end
|
561
536
|
end
|
562
537
|
end
|
@@ -328,10 +328,10 @@ URL: %{lua: print(module_source)}
|
|
328
328
|
BuildRoot: %{_tmppath}/%{package_name}-%{version}-%{release}-buildroot
|
329
329
|
BuildArch: noarch
|
330
330
|
|
331
|
-
Requires(pre): simp-adapter >= 0.
|
332
|
-
Requires(preun): simp-adapter >= 0.
|
333
|
-
Requires(preun): simp-adapter >= 0.
|
334
|
-
Requires(
|
331
|
+
Requires(pre): simp-adapter >= 0.1.1
|
332
|
+
Requires(preun): simp-adapter >= 0.1.1
|
333
|
+
Requires(preun): simp-adapter >= 0.1.1
|
334
|
+
Requires(posttrans): simp-adapter >= 0.1.1
|
335
335
|
|
336
336
|
%{lua: print(module_requires)}
|
337
337
|
|
@@ -485,11 +485,14 @@ mkdir -p %{buildroot}/%{prefix}
|
|
485
485
|
-- This function should be called last
|
486
486
|
--
|
487
487
|
function declare_default_scriptlets(custom_content_table, declared_scriptlets_table)
|
488
|
+
local marker_dir = '%{_localstatedir}/lib/rpm-state/simp-adapter'
|
489
|
+
local marker_file = marker_dir..'/rpm_status$1.'..module_name
|
490
|
+
|
491
|
+
|
488
492
|
local DEFAULT_SCRIPTLETS = {
|
489
|
-
['pre'] = {upgrade = 2},
|
490
|
-
['
|
491
|
-
['
|
492
|
-
['postun'] = {upgrade = 0}
|
493
|
+
['pre'] = {upgrade = 2, custom='mkdir -p '..marker_dir..'\ntouch '..marker_file..'\n'},
|
494
|
+
['preun'] = {upgrade = 0, custom=''},
|
495
|
+
['postun'] = {upgrade = 0, custom=''}
|
493
496
|
}
|
494
497
|
local rpm_dir = rpm.expand('%{prefix}/' .. module_name)
|
495
498
|
|
@@ -498,6 +501,7 @@ mkdir -p %{buildroot}/%{prefix}
|
|
498
501
|
'# (default scriptlet for SIMP 6.x)\n'..
|
499
502
|
'# when $1 = 1, this is an install\n'..
|
500
503
|
'# when $1 = '.. data.upgrade ..', this is an upgrade\n'..
|
504
|
+
data.custom ..
|
501
505
|
'if [ -x /usr/local/sbin/simp_rpm_helper ] ; then\n'..
|
502
506
|
' /usr/local/sbin/simp_rpm_helper --rpm_dir='..
|
503
507
|
rpm_dir.." --rpm_section='"..name.."' --rpm_status=$1\n"..
|
@@ -506,6 +510,30 @@ mkdir -p %{buildroot}/%{prefix}
|
|
506
510
|
|
507
511
|
define_custom_content(content, custom_content_table, declared_scriptlets_table)
|
508
512
|
end
|
513
|
+
|
514
|
+
local install_marker_file = marker_dir..'/rpm_status1.'..module_name
|
515
|
+
local upgrade_marker_file = marker_dir..'/rpm_status2.'..module_name
|
516
|
+
local posttrans_content = ('%posttrans\n'..
|
517
|
+
'# (default scriptlet for SIMP 6.x)\n'..
|
518
|
+
'# Marker file is created in %pre and only exists for installs or upgrades\n'..
|
519
|
+
"# when marker file is prepended with 'rpm_status1.', this is an install\n"..
|
520
|
+
"# when marker file is prepended with 'rpm_status2.', this is an upgrade\n"..
|
521
|
+
'if [ -e '..install_marker_file..' ] ; then\n'..
|
522
|
+
' rm '..install_marker_file..'\n'..
|
523
|
+
' if [ -x /usr/local/sbin/simp_rpm_helper ] ; then\n'..
|
524
|
+
' /usr/local/sbin/simp_rpm_helper --rpm_dir='..
|
525
|
+
rpm_dir.." --rpm_section='posttrans' --rpm_status=1\n"..
|
526
|
+
' fi\n'..
|
527
|
+
'elif [ -e '..upgrade_marker_file..' ] ; then\n'..
|
528
|
+
' rm '..upgrade_marker_file..'\n'..
|
529
|
+
' if [ -x /usr/local/sbin/simp_rpm_helper ] ; then\n'..
|
530
|
+
' /usr/local/sbin/simp_rpm_helper --rpm_dir='..
|
531
|
+
rpm_dir.." --rpm_section='posttrans' --rpm_status=2\n"..
|
532
|
+
' fi\n'..
|
533
|
+
'fi\n\n'
|
534
|
+
)
|
535
|
+
|
536
|
+
define_custom_content(posttrans_content, custom_content_table, declared_scriptlets_table)
|
509
537
|
end
|
510
538
|
|
511
539
|
|
@@ -328,10 +328,10 @@ URL: %{lua: print(module_source)}
|
|
328
328
|
BuildRoot: %{_tmppath}/%{package_name}-%{version}-%{release}-buildroot
|
329
329
|
BuildArch: noarch
|
330
330
|
|
331
|
-
Requires(pre): simp-adapter >= 0.
|
332
|
-
Requires(preun): simp-adapter >= 0.
|
333
|
-
Requires(preun): simp-adapter >= 0.
|
334
|
-
Requires(
|
331
|
+
Requires(pre): simp-adapter >= 0.1.1
|
332
|
+
Requires(preun): simp-adapter >= 0.1.1
|
333
|
+
Requires(preun): simp-adapter >= 0.1.1
|
334
|
+
Requires(posttrans): simp-adapter >= 0.1.1
|
335
335
|
|
336
336
|
%{lua: print(module_requires)}
|
337
337
|
|
@@ -485,11 +485,14 @@ mkdir -p %{buildroot}/%{prefix}
|
|
485
485
|
-- This function should be called last
|
486
486
|
--
|
487
487
|
function declare_default_scriptlets(custom_content_table, declared_scriptlets_table)
|
488
|
+
local marker_dir = '%{_localstatedir}/lib/rpm-state/simp-adapter'
|
489
|
+
local marker_file = marker_dir..'/rpm_status$1.'..module_name
|
490
|
+
|
491
|
+
|
488
492
|
local DEFAULT_SCRIPTLETS = {
|
489
|
-
['pre'] = {upgrade = 2},
|
490
|
-
['
|
491
|
-
['
|
492
|
-
['postun'] = {upgrade = 0}
|
493
|
+
['pre'] = {upgrade = 2, custom='mkdir -p '..marker_dir..'\ntouch '..marker_file..'\n'},
|
494
|
+
['preun'] = {upgrade = 0, custom=''},
|
495
|
+
['postun'] = {upgrade = 0, custom=''}
|
493
496
|
}
|
494
497
|
local rpm_dir = rpm.expand('%{prefix}/' .. module_name)
|
495
498
|
|
@@ -498,6 +501,7 @@ mkdir -p %{buildroot}/%{prefix}
|
|
498
501
|
'# (default scriptlet for SIMP 6.x)\n'..
|
499
502
|
'# when $1 = 1, this is an install\n'..
|
500
503
|
'# when $1 = '.. data.upgrade ..', this is an upgrade\n'..
|
504
|
+
data.custom ..
|
501
505
|
'if [ -x /usr/local/sbin/simp_rpm_helper ] ; then\n'..
|
502
506
|
' /usr/local/sbin/simp_rpm_helper --rpm_dir='..
|
503
507
|
rpm_dir.." --rpm_section='"..name.."' --rpm_status=$1\n"..
|
@@ -506,6 +510,30 @@ mkdir -p %{buildroot}/%{prefix}
|
|
506
510
|
|
507
511
|
define_custom_content(content, custom_content_table, declared_scriptlets_table)
|
508
512
|
end
|
513
|
+
|
514
|
+
local install_marker_file = marker_dir..'/rpm_status1.'..module_name
|
515
|
+
local upgrade_marker_file = marker_dir..'/rpm_status2.'..module_name
|
516
|
+
local posttrans_content = ('%posttrans\n'..
|
517
|
+
'# (default scriptlet for SIMP 6.x)\n'..
|
518
|
+
'# Marker file is created in %pre and only exists for installs or upgrades\n'..
|
519
|
+
"# when marker file is prepended with 'rpm_status1.', this is an install\n"..
|
520
|
+
"# when marker file is prepended with 'rpm_status2.', this is an upgrade\n"..
|
521
|
+
'if [ -e '..install_marker_file..' ] ; then\n'..
|
522
|
+
' rm '..install_marker_file..'\n'..
|
523
|
+
' if [ -x /usr/local/sbin/simp_rpm_helper ] ; then\n'..
|
524
|
+
' /usr/local/sbin/simp_rpm_helper --rpm_dir='..
|
525
|
+
rpm_dir.." --rpm_section='posttrans' --rpm_status=1\n"..
|
526
|
+
' fi\n'..
|
527
|
+
'elif [ -e '..upgrade_marker_file..' ] ; then\n'..
|
528
|
+
' rm '..upgrade_marker_file..'\n'..
|
529
|
+
' if [ -x /usr/local/sbin/simp_rpm_helper ] ; then\n'..
|
530
|
+
' /usr/local/sbin/simp_rpm_helper --rpm_dir='..
|
531
|
+
rpm_dir.." --rpm_section='posttrans' --rpm_status=2\n"..
|
532
|
+
' fi\n'..
|
533
|
+
'fi\n\n'
|
534
|
+
)
|
535
|
+
|
536
|
+
define_custom_content(posttrans_content, custom_content_table, declared_scriptlets_table)
|
509
537
|
end
|
510
538
|
|
511
539
|
|
@@ -18,7 +18,7 @@ shared_examples_for 'an RPM generator with customized scriptlets' do
|
|
18
18
|
expect(scriptlets.keys.sort).to eq [
|
19
19
|
'pretrans',
|
20
20
|
'preinstall',
|
21
|
-
'
|
21
|
+
'posttrans',
|
22
22
|
'preuninstall',
|
23
23
|
'postuninstall',
|
24
24
|
].sort
|
@@ -34,8 +34,8 @@ shared_examples_for 'an RPM generator with customized scriptlets' do
|
|
34
34
|
"echo 'I override the default %%pre section provided by the spec file.'"
|
35
35
|
)
|
36
36
|
|
37
|
-
comment '...
|
38
|
-
expected_simp_rpm_helper_scriptlets = scriptlet_label_map.select{|k,v| %w(
|
37
|
+
comment '...default preun postun scriptlets call simp_rpm_helper with correct arguments'
|
38
|
+
expected_simp_rpm_helper_scriptlets = scriptlet_label_map.select{|k,v| %w(preun postun).include? v }
|
39
39
|
expected_simp_rpm_helper_scriptlets.each do |rpm_label, simp_helper_label|
|
40
40
|
expected = <<EOM
|
41
41
|
if [ -x /usr/local/sbin/simp_rpm_helper ] ; then
|
@@ -44,6 +44,22 @@ fi
|
|
44
44
|
EOM
|
45
45
|
expect(scriptlets[rpm_label][:bare_content]).to eq(expected.strip)
|
46
46
|
end
|
47
|
+
|
48
|
+
comment '...default posttrans scriptlet calls simp_rpm_helper with correct arguments'
|
49
|
+
expected = <<EOM
|
50
|
+
if [ -e %{_localstatedir}/lib/rpm-state/simp-adapter/rpm_status1.testpackage ] ; then
|
51
|
+
rm %{_localstatedir}/lib/rpm-state/simp-adapter/rpm_status1.testpackage
|
52
|
+
if [ -x /usr/local/sbin/simp_rpm_helper ] ; then
|
53
|
+
/usr/local/sbin/simp_rpm_helper --rpm_dir=/usr/share/simp/modules/testpackage --rpm_section='posttrans' --rpm_status=1
|
54
|
+
fi
|
55
|
+
elif [ -e %{_localstatedir}/lib/rpm-state/simp-adapter/rpm_status2.testpackage ] ; then
|
56
|
+
rm %{_localstatedir}/lib/rpm-state/simp-adapter/rpm_status2.testpackage
|
57
|
+
if [ -x /usr/local/sbin/simp_rpm_helper ] ; then
|
58
|
+
/usr/local/sbin/simp_rpm_helper --rpm_dir=/usr/share/simp/modules/testpackage --rpm_section='posttrans' --rpm_status=2
|
59
|
+
fi
|
60
|
+
fi
|
61
|
+
EOM
|
62
|
+
expect(scriptlets['posttrans'][:bare_content]).to eq(expected.strip)
|
47
63
|
end
|
48
64
|
end
|
49
65
|
|
@@ -135,14 +135,58 @@ describe 'rake pkg:rpm' do
|
|
135
135
|
comment 'produces RPM with a sourced CHANGELOG'
|
136
136
|
on host, %(rpm --changelog -qp #{testpackage_rpm} | grep -q Stallman)
|
137
137
|
|
138
|
-
comment 'produces RPM with appropriate pre/
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
expect(
|
143
|
-
|
144
|
-
|
145
|
-
|
138
|
+
comment 'produces RPM with appropriate pre/preun/postun/posttrans'
|
139
|
+
scriptlets = rpm_scriptlets_for(host, testpackage_rpm)
|
140
|
+
|
141
|
+
comment '...the expected scriptlet types are present'
|
142
|
+
expect(scriptlets.keys.sort).to eq [
|
143
|
+
'preinstall',
|
144
|
+
'preuninstall',
|
145
|
+
'postuninstall',
|
146
|
+
'posttrans',
|
147
|
+
].sort
|
148
|
+
|
149
|
+
comment '...default preinstall scriptlet'
|
150
|
+
expected =<<-EOM
|
151
|
+
mkdir -p %{_localstatedir}/lib/rpm-state/simp-adapter
|
152
|
+
touch %{_localstatedir}/lib/rpm-state/simp-adapter/rpm_status$1.testpackage
|
153
|
+
if [ -x /usr/local/sbin/simp_rpm_helper ] ; then
|
154
|
+
/usr/local/sbin/simp_rpm_helper --rpm_dir=/usr/share/simp/modules/testpackage --rpm_section='pre' --rpm_status=$1
|
155
|
+
fi
|
156
|
+
EOM
|
157
|
+
expect(scriptlets['preinstall'][:bare_content]).to eq( expected.strip )
|
158
|
+
|
159
|
+
comment '...default preuninstall scriptlet'
|
160
|
+
expected =<<-EOM
|
161
|
+
if [ -x /usr/local/sbin/simp_rpm_helper ] ; then
|
162
|
+
/usr/local/sbin/simp_rpm_helper --rpm_dir=/usr/share/simp/modules/testpackage --rpm_section='preun' --rpm_status=$1
|
163
|
+
fi
|
164
|
+
EOM
|
165
|
+
expect(scriptlets['preuninstall'][:bare_content]).to eq( expected.strip )
|
166
|
+
|
167
|
+
comment '...default postuninstall scriptlet'
|
168
|
+
expected =<<-EOM
|
169
|
+
if [ -x /usr/local/sbin/simp_rpm_helper ] ; then
|
170
|
+
/usr/local/sbin/simp_rpm_helper --rpm_dir=/usr/share/simp/modules/testpackage --rpm_section='postun' --rpm_status=$1
|
171
|
+
fi
|
172
|
+
EOM
|
173
|
+
expect(scriptlets['postuninstall'][:bare_content]).to eq( expected.strip )
|
174
|
+
|
175
|
+
comment '...default posttrans scriptlet'
|
176
|
+
expected =<<-EOM
|
177
|
+
if [ -e %{_localstatedir}/lib/rpm-state/simp-adapter/rpm_status1.testpackage ] ; then
|
178
|
+
rm %{_localstatedir}/lib/rpm-state/simp-adapter/rpm_status1.testpackage
|
179
|
+
if [ -x /usr/local/sbin/simp_rpm_helper ] ; then
|
180
|
+
/usr/local/sbin/simp_rpm_helper --rpm_dir=/usr/share/simp/modules/testpackage --rpm_section='posttrans' --rpm_status=1
|
181
|
+
fi
|
182
|
+
elif [ -e %{_localstatedir}/lib/rpm-state/simp-adapter/rpm_status2.testpackage ] ; then
|
183
|
+
rm %{_localstatedir}/lib/rpm-state/simp-adapter/rpm_status2.testpackage
|
184
|
+
if [ -x /usr/local/sbin/simp_rpm_helper ] ; then
|
185
|
+
/usr/local/sbin/simp_rpm_helper --rpm_dir=/usr/share/simp/modules/testpackage --rpm_section='posttrans' --rpm_status=2
|
186
|
+
fi
|
187
|
+
fi
|
188
|
+
EOM
|
189
|
+
expect(scriptlets['posttrans'][:bare_content]).to eq( expected.strip )
|
146
190
|
end
|
147
191
|
|
148
192
|
it_should_behave_like 'an RPM generator with edge cases'
|