simp-rake-helpers 5.11.6 → 5.12.3
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 +49 -0
- data/CONTRIBUTING.md +1 -1
- data/Gemfile +0 -3
- data/README.md +3 -38
- data/Rakefile +2 -3
- data/lib/simp/command_utils.rb +21 -0
- data/lib/simp/local_gpg_signing_key.rb +128 -79
- data/lib/simp/rake/build/auto.rb +4 -2
- data/lib/simp/rake/build/build.rb +5 -4
- data/lib/simp/rake/build/iso.rb +57 -31
- data/lib/simp/rake/build/pkg.rb +118 -56
- data/lib/simp/rake/build/spec.rb +1 -1
- data/lib/simp/rake/build/tar.rb +1 -1
- data/lib/simp/rake/build/unpack.rb +1 -1
- data/lib/simp/rake/build/upload.rb +1 -1
- data/lib/simp/rake/build/vermap.yaml +1 -1
- data/lib/simp/rake/helpers/assets/rpm_spec/simp6.spec +3 -3
- data/lib/simp/rake/helpers/assets/rpm_spec/simpdefault.spec +3 -3
- data/lib/simp/rake/helpers/version.rb +1 -1
- data/lib/simp/rake/helpers.rb +2 -2
- data/lib/simp/rake/pkg.rb +5 -1
- data/lib/simp/rake/pupmod/helpers.rb +2 -0
- data/lib/simp/rake/rubygem.rb +5 -1
- data/lib/simp/rake.rb +3 -17
- data/lib/simp/rpm.rb +10 -127
- data/lib/simp/rpm_signer.rb +321 -0
- data/spec/acceptance/nodesets/default.yml +0 -3
- data/spec/acceptance/{00_pkg_rpm_custom_scriptlets_spec.rb → suites/default/00_pkg_rpm_custom_scriptlets_spec.rb} +21 -22
- data/spec/acceptance/{10_pkg_rpm_spec.rb → suites/default/10_pkg_rpm_spec.rb} +50 -52
- data/spec/acceptance/{30_pkg_misc_spec.rb → suites/default/30_pkg_misc_spec.rb} +1 -1
- data/spec/acceptance/{50_local_gpg_signing_key_spec.rb → suites/default/50_local_gpg_signing_key_spec.rb} +7 -3
- data/spec/acceptance/suites/default/55_build_pkg_signing_spec.rb +391 -0
- data/spec/acceptance/{development → suites/default/development}/docker_env.sh +0 -0
- data/spec/acceptance/{development → suites/default/development}/rerun_acceptance_tests.sh +0 -0
- data/spec/acceptance/{development → suites/default/development}/vagrant_rsync.sh +0 -0
- data/spec/acceptance/{files → suites/default/files}/asset/Rakefile +0 -0
- data/spec/acceptance/{files → suites/default/files}/asset/build/asset.spec +0 -0
- data/spec/acceptance/{files → suites/default/files}/asset_with_misordered_entries/Rakefile +0 -0
- data/spec/acceptance/{files → suites/default/files}/asset_with_misordered_entries/build/asset_with_misordered_entries.spec +0 -0
- data/spec/acceptance/{files → suites/default/files}/build/pkg/gpg-keydir.expired.2018-04-06/RPM-GPG-KEY-SIMP-Dev +0 -0
- data/spec/acceptance/{files → suites/default/files}/build/pkg/gpg-keydir.expired.2018-04-06/gengpgkey +0 -0
- data/spec/acceptance/{files → suites/default/files}/build/pkg/gpg-keydir.expired.2018-04-06/pubring.gpg +0 -0
- data/spec/acceptance/{files → suites/default/files}/build/pkg/gpg-keydir.expired.2018-04-06/random_seed +0 -0
- data/spec/acceptance/{files → suites/default/files}/build/pkg/gpg-keydir.expired.2018-04-06/run_gpg_agent +0 -0
- data/spec/acceptance/{files → suites/default/files}/build/pkg/gpg-keydir.expired.2018-04-06/secring.gpg +0 -0
- data/spec/acceptance/{files → suites/default/files}/build/pkg/gpg-keydir.expired.2018-04-06/trustdb.gpg +0 -0
- data/spec/acceptance/{files → suites/default/files}/build/project_skeleton/Puppetfile.tracking +0 -0
- data/spec/acceptance/{files → suites/default/files}/build/project_skeleton/README.md +0 -0
- data/spec/acceptance/{files → suites/default/files}/build/project_skeleton/Rakefile +0 -0
- data/spec/acceptance/{files → suites/default/files}/build/project_skeleton/src/assets/simp/build/simp.spec +0 -0
- data/spec/acceptance/{files → suites/default/files}/module/CHANGELOG +0 -0
- data/spec/acceptance/{files/custom_scriptlet_triggers/pupmod-new-package-2.1 → suites/default/files/module}/Rakefile +0 -0
- data/spec/acceptance/{files → suites/default/files}/module/metadata.json +0 -0
- data/spec/acceptance/{files → suites/default/files}/module_with_misordered_entries/CHANGELOG +0 -0
- data/spec/acceptance/{files/custom_scriptlet_triggers/pupmod-new-package-3.0 → suites/default/files/module_with_misordered_entries}/Rakefile +0 -0
- data/spec/acceptance/{files → suites/default/files}/module_with_misordered_entries/metadata.json +0 -0
- data/spec/acceptance/{files/custom_scriptlet_triggers/pupmod-new-package-2.1 → suites/default/files/simplib}/CHANGELOG +0 -0
- data/spec/acceptance/{files/custom_scriptlet_triggers/pupmod-old-package-1.0 → suites/default/files/simplib}/Rakefile +0 -0
- data/spec/acceptance/{files/custom_scriptlet_triggers/pupmod-old-package-1.0 → suites/default/files/simplib}/build/rpm_metadata/requires +0 -0
- data/spec/acceptance/{files → suites/default/files}/simplib/metadata.json +0 -0
- data/spec/acceptance/{files/custom_scriptlet_triggers/pupmod-new-package-3.0 → suites/default/files/testpackage}/CHANGELOG +0 -0
- data/spec/acceptance/suites/default/files/testpackage/README +8 -0
- data/spec/acceptance/{files/custom_scriptlet_triggers/pupmod-old-package-2.0 → suites/default/files/testpackage}/Rakefile +0 -0
- data/spec/acceptance/{files/package_upgrades/pupmod-simp-testpackage-1.0 → suites/default/files/testpackage}/build/rpm_metadata/requires +0 -0
- data/spec/acceptance/{files → suites/default/files}/testpackage/metadata.json +0 -0
- data/spec/acceptance/suites/default/files/testpackage/spec/classes/init_spec.rb +1 -0
- data/spec/acceptance/suites/default/files/testpackage/spec/files/mock_something.rb +3 -0
- data/spec/acceptance/suites/default/files/testpackage/utils/convert_v1_to_v2.rb +3 -0
- data/spec/acceptance/{files/custom_scriptlet_triggers/pupmod-old-package-1.0 → suites/default/files/testpackage_custom_scriptlet}/CHANGELOG +0 -0
- data/spec/acceptance/{files/custom_scriptlet_triggers/pupmod-old-package-2.2 → suites/default/files/testpackage_custom_scriptlet}/Rakefile +0 -0
- data/spec/acceptance/{files → suites/default/files}/testpackage_custom_scriptlet/build/rpm_metadata/custom/overrides +0 -0
- data/spec/acceptance/{files/custom_scriptlet_triggers/pupmod-old-package-2.0 → suites/default/files/testpackage_custom_scriptlet}/build/rpm_metadata/requires +0 -0
- data/spec/acceptance/{files → suites/default/files}/testpackage_custom_scriptlet/metadata.json +0 -0
- data/spec/acceptance/{files/custom_scriptlet_triggers/pupmod-old-package-2.0 → suites/default/files/testpackage_missing_license}/CHANGELOG +0 -0
- data/spec/acceptance/{files/module → suites/default/files/testpackage_missing_license}/Rakefile +0 -0
- data/spec/acceptance/{files/simplib → suites/default/files/testpackage_missing_license}/build/rpm_metadata/requires +0 -0
- data/spec/acceptance/{files → suites/default/files}/testpackage_missing_license/metadata.json +0 -0
- data/spec/acceptance/{files/custom_scriptlet_triggers/pupmod-old-package-2.2 → suites/default/files/testpackage_missing_metadata_file}/CHANGELOG +0 -0
- data/spec/acceptance/{files/module_with_misordered_entries → suites/default/files/testpackage_missing_metadata_file}/Rakefile +0 -0
- data/spec/acceptance/{files/testpackage_custom_scriptlet → suites/default/files/testpackage_missing_metadata_file}/build/rpm_metadata/requires +0 -0
- data/spec/acceptance/{files/simplib → suites/default/files/testpackage_missing_name}/CHANGELOG +0 -0
- data/spec/acceptance/{files/package_upgrades/pupmod-simp-testpackage-1.0 → suites/default/files/testpackage_missing_name}/Rakefile +0 -0
- data/spec/acceptance/{files/testpackage_missing_license → suites/default/files/testpackage_missing_name}/build/rpm_metadata/requires +0 -0
- data/spec/acceptance/{files → suites/default/files}/testpackage_missing_name/metadata.json +0 -0
- data/spec/acceptance/{files/testpackage → suites/default/files/testpackage_missing_source}/CHANGELOG +0 -0
- data/spec/acceptance/{files/package_upgrades/pupmod-simp-testpackage-2.0 → suites/default/files/testpackage_missing_source}/Rakefile +0 -0
- data/spec/acceptance/{files/testpackage_missing_metadata_file → suites/default/files/testpackage_missing_source}/build/rpm_metadata/requires +0 -0
- data/spec/acceptance/{files → suites/default/files}/testpackage_missing_source/metadata.json +0 -0
- data/spec/acceptance/{files/testpackage_custom_scriptlet → suites/default/files/testpackage_missing_summary}/CHANGELOG +0 -0
- data/spec/acceptance/{files/simplib → suites/default/files/testpackage_missing_summary}/Rakefile +0 -0
- data/spec/acceptance/{files/testpackage_missing_name → suites/default/files/testpackage_missing_summary}/build/rpm_metadata/requires +0 -0
- data/spec/acceptance/{files → suites/default/files}/testpackage_missing_summary/metadata.json +0 -0
- data/spec/acceptance/{files/testpackage_missing_license → suites/default/files/testpackage_missing_version}/CHANGELOG +0 -0
- data/spec/acceptance/{files/testpackage → suites/default/files/testpackage_missing_version}/Rakefile +0 -0
- data/spec/acceptance/{files/testpackage_missing_source → suites/default/files/testpackage_missing_version}/build/rpm_metadata/requires +0 -0
- data/spec/acceptance/{files → suites/default/files}/testpackage_missing_version/metadata.json +0 -0
- data/spec/acceptance/{files → suites/default/files}/testpackage_with_bad_changelog_date/CHANGELOG +0 -0
- data/spec/acceptance/{files/testpackage_custom_scriptlet → suites/default/files/testpackage_with_bad_changelog_date}/Rakefile +0 -0
- data/spec/acceptance/{files/testpackage_missing_summary → suites/default/files/testpackage_with_bad_changelog_date}/build/rpm_metadata/requires +0 -0
- data/spec/acceptance/{files → suites/default/files}/testpackage_with_bad_changelog_date/metadata.json +0 -0
- data/spec/acceptance/{files/testpackage_missing_metadata_file → suites/default/files/testpackage_with_release}/CHANGELOG +0 -0
- data/spec/acceptance/{files/testpackage_missing_license → suites/default/files/testpackage_with_release}/Rakefile +0 -0
- data/spec/acceptance/{files → suites/default/files}/testpackage_with_release/build/rpm_metadata/release +0 -0
- data/spec/acceptance/{files/testpackage_missing_version → suites/default/files/testpackage_with_release}/build/rpm_metadata/requires +0 -0
- data/spec/acceptance/{files → suites/default/files}/testpackage_with_release/metadata.json +0 -0
- data/spec/acceptance/{files/testpackage_missing_metadata_file → suites/default/files/testpackage_without_changelog}/Rakefile +0 -0
- data/spec/acceptance/{files/testpackage_with_bad_changelog_date → suites/default/files/testpackage_without_changelog}/build/rpm_metadata/requires +0 -0
- data/spec/acceptance/{files → suites/default/files}/testpackage_without_changelog/metadata.json +0 -0
- data/spec/acceptance/{support → suites/default/support}/build_project_helpers.rb +33 -9
- data/spec/acceptance/{support → suites/default/support}/build_user_helpers.rb +0 -0
- data/spec/acceptance/{support → suites/default/support}/pkg_rpm_helpers.rb +0 -0
- data/spec/lib/simp/command_utils_spec.rb +29 -0
- data/spec/lib/simp/local_gpg_signing_key_spec.rb.beaker-only +115 -18
- data/spec/lib/simp/rake/pupmod/fixtures/simpmod/README.md +2 -2
- data/spec/lib/simp/rpm_signer_spec.rb +98 -0
- data/spec/lib/simp/rpm_spec.rb +0 -6
- data/spec/spec_helper_acceptance.rb +4 -0
- metadata +92 -149
- data/.travis.yml +0 -41
- data/lib/simp/rake/helpers/assets/rpm_spec/simp4.spec +0 -388
- data/lib/simp/rake/helpers/assets/rpm_spec/simp5.spec +0 -388
- data/spec/acceptance/20_pkg_rpm_upgrade_spec.rb +0 -236
- data/spec/acceptance/55_build_pkg_signing_spec.rb +0 -140
- data/spec/acceptance/files/custom_scriptlet_triggers/pupmod-new-package-2.1/build/rpm_metadata/custom/overrides +0 -14
- data/spec/acceptance/files/custom_scriptlet_triggers/pupmod-new-package-2.1/build/rpm_metadata/requires +0 -1
- data/spec/acceptance/files/custom_scriptlet_triggers/pupmod-new-package-2.1/metadata.json +0 -33
- data/spec/acceptance/files/custom_scriptlet_triggers/pupmod-new-package-3.0/build/rpm_metadata/custom/overrides +0 -14
- data/spec/acceptance/files/custom_scriptlet_triggers/pupmod-new-package-3.0/build/rpm_metadata/requires +0 -1
- data/spec/acceptance/files/custom_scriptlet_triggers/pupmod-new-package-3.0/metadata.json +0 -33
- data/spec/acceptance/files/custom_scriptlet_triggers/pupmod-old-package-1.0/metadata.json +0 -33
- data/spec/acceptance/files/custom_scriptlet_triggers/pupmod-old-package-2.0/metadata.json +0 -33
- data/spec/acceptance/files/custom_scriptlet_triggers/pupmod-old-package-2.2/build/rpm_metadata/custom/overrides +0 -14
- data/spec/acceptance/files/custom_scriptlet_triggers/pupmod-old-package-2.2/build/rpm_metadata/requires +0 -1
- data/spec/acceptance/files/custom_scriptlet_triggers/pupmod-old-package-2.2/metadata.json +0 -33
- data/spec/acceptance/files/mock_packages/pupmod-puppetlabs-stdlib.spec +0 -32
- data/spec/acceptance/files/mock_packages/pupmod-simp-foo.spec +0 -32
- data/spec/acceptance/files/mock_packages/pupmod-simp-simplib.spec +0 -32
- data/spec/acceptance/files/mock_packages/rpmbuild.sh +0 -25
- data/spec/acceptance/files/mock_packages/simp-adapter/etc/simp/adapter_config.yaml +0 -3
- data/spec/acceptance/files/mock_packages/simp-adapter/usr/local/sbin/simp_rpm_helper +0 -495
- data/spec/acceptance/files/mock_packages/simp-adapter.spec +0 -43
- data/spec/acceptance/files/package_upgrades/pupmod-simp-testpackage-1.0/CHANGELOG +0 -2
- data/spec/acceptance/files/package_upgrades/pupmod-simp-testpackage-1.0/data/os/CentOS.yaml +0 -2
- data/spec/acceptance/files/package_upgrades/pupmod-simp-testpackage-1.0/data/os/RedHat.yaml +0 -2
- data/spec/acceptance/files/package_upgrades/pupmod-simp-testpackage-1.0/hiera.yaml +0 -14
- data/spec/acceptance/files/package_upgrades/pupmod-simp-testpackage-1.0/manifests/init.pp +0 -2
- data/spec/acceptance/files/package_upgrades/pupmod-simp-testpackage-1.0/metadata.json +0 -37
- data/spec/acceptance/files/package_upgrades/pupmod-simp-testpackage-2.0/CHANGELOG +0 -5
- data/spec/acceptance/files/package_upgrades/pupmod-simp-testpackage-2.0/build/rpm_metadata/requires +0 -2
- data/spec/acceptance/files/package_upgrades/pupmod-simp-testpackage-2.0/data/os/CentOS.yaml +0 -2
- data/spec/acceptance/files/package_upgrades/pupmod-simp-testpackage-2.0/data/os/RedHat.yaml +0 -2
- data/spec/acceptance/files/package_upgrades/pupmod-simp-testpackage-2.0/hiera.yaml +0 -14
- data/spec/acceptance/files/package_upgrades/pupmod-simp-testpackage-2.0/manifests/init.pp +0 -3
- data/spec/acceptance/files/package_upgrades/pupmod-simp-testpackage-2.0/metadata.json +0 -37
- data/spec/acceptance/files/testpackage/build/rpm_metadata/requires +0 -2
- data/spec/acceptance/files/testpackage_missing_name/CHANGELOG +0 -2
- data/spec/acceptance/files/testpackage_missing_name/Rakefile +0 -3
- data/spec/acceptance/files/testpackage_missing_source/CHANGELOG +0 -2
- data/spec/acceptance/files/testpackage_missing_source/Rakefile +0 -3
- data/spec/acceptance/files/testpackage_missing_summary/CHANGELOG +0 -2
- data/spec/acceptance/files/testpackage_missing_summary/Rakefile +0 -3
- data/spec/acceptance/files/testpackage_missing_version/CHANGELOG +0 -2
- data/spec/acceptance/files/testpackage_missing_version/Rakefile +0 -3
- data/spec/acceptance/files/testpackage_with_bad_changelog_date/Rakefile +0 -3
- data/spec/acceptance/files/testpackage_with_release/CHANGELOG +0 -2
- data/spec/acceptance/files/testpackage_with_release/Rakefile +0 -3
- data/spec/acceptance/files/testpackage_with_release/build/rpm_metadata/requires +0 -1
- data/spec/acceptance/files/testpackage_without_changelog/Rakefile +0 -3
- data/spec/acceptance/files/testpackage_without_changelog/build/rpm_metadata/requires +0 -1
- data/spec/lib/simp/ci/files/job_broken_link_nodeset/spec/acceptance/suites/default/nodesets +0 -1
- data/spec/lib/simp/ci/files/job_invalid_nodeset/spec/acceptance/suites/default/nodesets +0 -1
- data/spec/lib/simp/ci/files/job_invalid_suite/spec/acceptance/suites/default/nodesets +0 -1
- data/spec/lib/simp/ci/files/job_missing_nodeset/spec/acceptance/suites/default/nodesets +0 -1
- data/spec/lib/simp/ci/files/job_missing_suite_and_nodeset/spec/acceptance/suites/default/nodesets +0 -1
- data/spec/lib/simp/ci/files/multiple_invalid_jobs/spec/acceptance/suites/default/nodesets +0 -1
- data/spec/lib/simp/ci/files/multiple_valid_jobs/spec/acceptance/suites/default/nodesets +0 -1
- data/spec/lib/simp/ci/files/no_gitlab_config_with_tests/spec/acceptance/suites/default/nodesets +0 -1
- data/spec/lib/simp/ci/files/no_gitlab_config_without_tests/spec/acceptance/suites/default/nodesets +0 -1
- data/spec/lib/simp/ci/files/suite_skeleton_only/spec/acceptance/nodesets/default.yml +0 -1
- data/spec/lib/simp/ci/files/suite_skeleton_only/spec/acceptance/suites/default/nodesets +0 -1
- data/spec/lib/simp/ci/files/valid_job_nodeset_dir_link/spec/acceptance/suites/default/nodesets +0 -1
- data/spec/lib/simp/ci/files/valid_job_nodeset_link/spec/acceptance/suites/default/nodesets/default.yml +0 -1
- data/spec/lib/simp/files/build/testpackage.spec +0 -1
- data/spec/lib/simp/rake/pupmod/fixtures/simpmod/spec/acceptance/nodesets/default.yml +0 -1
- data/spec/lib/simp/rake/pupmod/fixtures/simpmod/spec/acceptance/suites/default/nodesets +0 -1
data/lib/simp/rpm.rb
CHANGED
|
@@ -14,7 +14,6 @@ module Simp
|
|
|
14
14
|
require 'pty'
|
|
15
15
|
require 'rake'
|
|
16
16
|
|
|
17
|
-
@@gpg_keys = Hash.new
|
|
18
17
|
attr_reader :verbose, :lua_debug, :packages
|
|
19
18
|
|
|
20
19
|
if Gem.loaded_specs['rake'].version >= Gem::Version.new('0.9')
|
|
@@ -402,20 +401,20 @@ module Simp
|
|
|
402
401
|
end
|
|
403
402
|
|
|
404
403
|
if version_results[:exit_status] != 0
|
|
405
|
-
raise
|
|
406
|
-
#{indent('Error getting RPM info:', 2)}
|
|
407
|
-
#{indent(version_results[:stderr].strip, 5)}
|
|
408
|
-
#{indent("Run '#{rpm_version_query.gsub("\n",'\\n')} #{query_source}' to recreate the issue.", 2)}
|
|
409
|
-
EOE
|
|
404
|
+
raise <<~EOE
|
|
405
|
+
#{indent('Error getting RPM info for #{query_source}:', 2)}
|
|
406
|
+
#{indent(version_results[:stderr].strip, 5)}
|
|
407
|
+
#{indent("Run '#{rpm_version_query.gsub("\n",'\\n')} #{query_source}' to recreate the issue.", 2)}
|
|
408
|
+
EOE
|
|
410
409
|
end
|
|
411
410
|
|
|
412
411
|
unless signature_results.nil?
|
|
413
412
|
if signature_results[:exit_status] != 0
|
|
414
|
-
raise
|
|
415
|
-
#{indent('Error getting RPM signature:', 2)}
|
|
416
|
-
#{indent(signature_results[:stderr].strip, 5)}
|
|
417
|
-
#{indent("Run '#{rpm_signature_query.gsub("\n",'\\n')} #{query_source}' to recreate the issue.", 2)}
|
|
418
|
-
EOE
|
|
413
|
+
raise <<~EOE
|
|
414
|
+
#{indent('Error getting RPM signature for #{query_source}:', 2)}
|
|
415
|
+
#{indent(signature_results[:stderr].strip, 5)}
|
|
416
|
+
#{indent("Run '#{rpm_signature_query.gsub("\n",'\\n')} #{query_source}' to recreate the issue.", 2)}
|
|
417
|
+
EOE
|
|
419
418
|
else
|
|
420
419
|
signature = signature_results[:stdout].strip
|
|
421
420
|
end
|
|
@@ -498,122 +497,6 @@ EOE
|
|
|
498
497
|
end
|
|
499
498
|
end
|
|
500
499
|
|
|
501
|
-
# Loads metadata for a GPG key. The GPG key is to be used to sign RPMs. The
|
|
502
|
-
# value of gpg_key should be the full path of the directory where the key
|
|
503
|
-
# resides. If the metadata cannot be found, then the user will be prompted
|
|
504
|
-
# for it.
|
|
505
|
-
def self.load_key(gpg_key)
|
|
506
|
-
keydir = gpg_key
|
|
507
|
-
File.directory?(keydir) || fail("Error: Could not find '#{keydir}'")
|
|
508
|
-
|
|
509
|
-
gpg_key = File.basename(gpg_key)
|
|
510
|
-
|
|
511
|
-
if @@gpg_keys[gpg_key]
|
|
512
|
-
return @@gpg_keys[gpg_key]
|
|
513
|
-
end
|
|
514
|
-
|
|
515
|
-
gpg_name = nil
|
|
516
|
-
gpg_password = nil
|
|
517
|
-
begin
|
|
518
|
-
File.read("#{keydir}/gengpgkey").each_line do |ln|
|
|
519
|
-
name_line = ln.split(/^\s*Name-Email:/)
|
|
520
|
-
if name_line.length > 1
|
|
521
|
-
gpg_name = name_line.last.strip
|
|
522
|
-
end
|
|
523
|
-
|
|
524
|
-
passwd_line = ln.split(/^\s*Passphrase:/)
|
|
525
|
-
if passwd_line.length > 1
|
|
526
|
-
gpg_password = passwd_line.last.strip
|
|
527
|
-
end
|
|
528
|
-
end
|
|
529
|
-
rescue Errno::ENOENT
|
|
530
|
-
end
|
|
531
|
-
|
|
532
|
-
if gpg_name.nil?
|
|
533
|
-
puts "Warning: Could not find valid e-mail address for use with GPG."
|
|
534
|
-
puts "Please enter e-mail address to use:"
|
|
535
|
-
gpg_name = $stdin.gets.strip
|
|
536
|
-
end
|
|
537
|
-
|
|
538
|
-
if gpg_password.nil?
|
|
539
|
-
if File.exist?(%(#{keydir}/password))
|
|
540
|
-
gpg_password = File.read(%(#{keydir}/password)).chomp
|
|
541
|
-
end
|
|
542
|
-
|
|
543
|
-
if gpg_password.nil?
|
|
544
|
-
puts "Warning: Could not find a password in '#{keydir}/password'!"
|
|
545
|
-
puts "Please enter your GPG key password:"
|
|
546
|
-
system 'stty -echo'
|
|
547
|
-
gpg_password = $stdin.gets.strip
|
|
548
|
-
system 'stty echo'
|
|
549
|
-
end
|
|
550
|
-
end
|
|
551
|
-
|
|
552
|
-
gpg_key_size = nil
|
|
553
|
-
gpg_key_id = nil
|
|
554
|
-
%x(gpg --homedir=#{keydir} --list-keys #{gpg_name} 2>&1).each_line do |line|
|
|
555
|
-
head,data = line.split(/\s+/)
|
|
556
|
-
if head == 'pub'
|
|
557
|
-
gpg_key_size,gpg_key_id = data.split('/')
|
|
558
|
-
break
|
|
559
|
-
end
|
|
560
|
-
end
|
|
561
|
-
|
|
562
|
-
if !gpg_key_size || !gpg_key_id
|
|
563
|
-
fail("Error getting GPG Key metadata")
|
|
564
|
-
end
|
|
565
|
-
|
|
566
|
-
@@gpg_keys[gpg_key] = {
|
|
567
|
-
:dir => keydir,
|
|
568
|
-
:name => gpg_name,
|
|
569
|
-
:key_id => gpg_key_id,
|
|
570
|
-
:key_size => gpg_key_size,
|
|
571
|
-
:password => gpg_password
|
|
572
|
-
}
|
|
573
|
-
end
|
|
574
|
-
|
|
575
|
-
# Signs the given RPM with the given gpg_key (see Simp::RPM.load_key for
|
|
576
|
-
# details on the value of this parameter).
|
|
577
|
-
def self.signrpm(rpm, gpg_key)
|
|
578
|
-
gpgkey = load_key(gpg_key)
|
|
579
|
-
|
|
580
|
-
gpg_sig = nil
|
|
581
|
-
%x(rpm -Kv #{rpm}).each_line do |line|
|
|
582
|
-
if line =~ /key\sID\s(.*):/
|
|
583
|
-
gpg_sig = $1.strip
|
|
584
|
-
end
|
|
585
|
-
end
|
|
586
|
-
|
|
587
|
-
unless gpg_sig == gpgkey[:key_id]
|
|
588
|
-
signcommand = "rpm " +
|
|
589
|
-
"--define '%_signature gpg' " +
|
|
590
|
-
"--define '%__gpg %{_bindir}/gpg' " +
|
|
591
|
-
"--define '%_gpg_name #{gpgkey[:name]}' " +
|
|
592
|
-
"--define '%_gpg_path #{gpgkey[:dir]}' " +
|
|
593
|
-
"--resign #{rpm}"
|
|
594
|
-
begin
|
|
595
|
-
PTY.spawn(signcommand) do |read, write, pid|
|
|
596
|
-
begin
|
|
597
|
-
while !read.eof? do
|
|
598
|
-
read.expect(/pass\s?phrase:.*/) do |text|
|
|
599
|
-
write.puts(gpgkey[:password])
|
|
600
|
-
write.flush
|
|
601
|
-
end
|
|
602
|
-
end
|
|
603
|
-
rescue Errno::EIO
|
|
604
|
-
# This ALWAYS happens in Ruby 1.8.
|
|
605
|
-
end
|
|
606
|
-
Process.wait(pid)
|
|
607
|
-
end
|
|
608
|
-
|
|
609
|
-
raise "Failure running #{signcommand}" unless $?.success?
|
|
610
|
-
rescue Exception => e
|
|
611
|
-
puts "Error occured while attempting to sign #{rpm}, skipping."
|
|
612
|
-
puts e
|
|
613
|
-
end
|
|
614
|
-
end
|
|
615
|
-
end
|
|
616
|
-
|
|
617
500
|
# Returns the version of RPM installed on the system
|
|
618
501
|
def self.version
|
|
619
502
|
%x{rpm --version}.strip.split.last
|
|
@@ -0,0 +1,321 @@
|
|
|
1
|
+
require 'find'
|
|
2
|
+
require 'parallel'
|
|
3
|
+
require 'simp/rpm'
|
|
4
|
+
require 'simp/command_utils'
|
|
5
|
+
|
|
6
|
+
module Simp; end
|
|
7
|
+
|
|
8
|
+
# Class to sign RPMs. Uses 'gpg' and 'rpm' executables.
|
|
9
|
+
class Simp::RpmSigner
|
|
10
|
+
require 'expect'
|
|
11
|
+
require 'pty'
|
|
12
|
+
|
|
13
|
+
extend Simp::CommandUtils
|
|
14
|
+
|
|
15
|
+
@@gpg_keys = Hash.new
|
|
16
|
+
|
|
17
|
+
# Kill the GPG agent operating with the specified key dir, if
|
|
18
|
+
# rpm version 4.13.0 or later.
|
|
19
|
+
#
|
|
20
|
+
# Beginning with version 4.13.0, rpm stands up a gpg-agent when
|
|
21
|
+
# a signing operation is requested.
|
|
22
|
+
def self.kill_gpg_agent(gpg_keydir)
|
|
23
|
+
return if Gem::Version.new(Simp::RPM.version) < Gem::Version.new('4.13.0')
|
|
24
|
+
|
|
25
|
+
%x(gpg-agent --homedir #{gpg_keydir} -q >& /dev/null)
|
|
26
|
+
if $? && ($?.exitstatus == 0)
|
|
27
|
+
# gpg-agent is running for specified keydir, so query it for its pid
|
|
28
|
+
output = %x{echo 'GETINFO pid' | gpg-connect-agent --homedir=#{gpg_keydir}}
|
|
29
|
+
if $? && ($?.exitstatus == 0)
|
|
30
|
+
pid = output.lines.first[1..-1].strip.to_i
|
|
31
|
+
begin
|
|
32
|
+
Process.kill(0, pid)
|
|
33
|
+
Process.kill(15, pid)
|
|
34
|
+
rescue Errno::ESRCH
|
|
35
|
+
# No longer running, so nothing to do!
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
# Loads metadata for a GPG key found in gpg_keydir.
|
|
42
|
+
#
|
|
43
|
+
# The GPG key is to be used to sign RPMs. If the required metadata cannot be
|
|
44
|
+
# retrieved from files found in the gpg_keydir, the user will be prompted
|
|
45
|
+
# for it.
|
|
46
|
+
#
|
|
47
|
+
# @param gpg_keydir The full path of the directory where the key resides
|
|
48
|
+
# @param verbose Whether to log debug information.
|
|
49
|
+
#
|
|
50
|
+
# @raise If the 'gpg' executable cannot be found, the GPG key directory
|
|
51
|
+
# does not exist or GPG key metadata cannot be determined via 'gpg'
|
|
52
|
+
#
|
|
53
|
+
def self.load_key(gpg_keydir, verbose = false)
|
|
54
|
+
which('gpg') || raise("ERROR: Cannot sign RPMs without 'gpg'")
|
|
55
|
+
File.directory?(gpg_keydir) || raise("ERROR: Could not find GPG keydir '#{gpg_keydir}'")
|
|
56
|
+
|
|
57
|
+
gpg_key = File.basename(gpg_keydir)
|
|
58
|
+
|
|
59
|
+
if @@gpg_keys[gpg_key]
|
|
60
|
+
return @@gpg_keys[gpg_key]
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
gpg_name = nil
|
|
64
|
+
gpg_password = nil
|
|
65
|
+
begin
|
|
66
|
+
File.read("#{gpg_keydir}/gengpgkey").each_line do |ln|
|
|
67
|
+
name_line = ln.split(/^\s*Name-Email:/)
|
|
68
|
+
if name_line.length > 1
|
|
69
|
+
gpg_name = name_line.last.strip
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
passwd_line = ln.split(/^\s*Passphrase:/)
|
|
73
|
+
if passwd_line.length > 1
|
|
74
|
+
gpg_password = passwd_line.last.strip
|
|
75
|
+
end
|
|
76
|
+
end
|
|
77
|
+
rescue Errno::ENOENT
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
if gpg_name.nil?
|
|
81
|
+
puts "Warning: Could not find valid e-mail address for use with GPG."
|
|
82
|
+
puts "Please enter e-mail address to use:"
|
|
83
|
+
gpg_name = $stdin.gets.strip
|
|
84
|
+
end
|
|
85
|
+
|
|
86
|
+
if gpg_password.nil?
|
|
87
|
+
if File.exist?(%(#{gpg_keydir}/password))
|
|
88
|
+
gpg_password = File.read(%(#{gpg_keydir}/password)).chomp
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
if gpg_password.nil?
|
|
92
|
+
puts "Warning: Could not find a password in '#{gpg_keydir}/password'!"
|
|
93
|
+
puts "Please enter your GPG key password:"
|
|
94
|
+
system 'stty -echo'
|
|
95
|
+
gpg_password = $stdin.gets.strip
|
|
96
|
+
system 'stty echo'
|
|
97
|
+
end
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
gpg_key_size = nil
|
|
101
|
+
gpg_key_id = nil
|
|
102
|
+
cmd = "gpg --with-colons --homedir=#{gpg_keydir} --list-keys '<#{gpg_name}>' 2>&1"
|
|
103
|
+
puts "Executing: #{cmd}" if verbose
|
|
104
|
+
%x(#{cmd}).each_line do |line|
|
|
105
|
+
# See https://github.com/CSNW/gnupg/blob/master/doc/DETAILS
|
|
106
|
+
# Index Content
|
|
107
|
+
# 0 record type
|
|
108
|
+
# 2 key length
|
|
109
|
+
# 4 keyID
|
|
110
|
+
fields = line.split(':')
|
|
111
|
+
if fields[0] && (fields[0] == 'pub')
|
|
112
|
+
gpg_key_size = fields[2].to_i
|
|
113
|
+
gpg_key_id = fields[4]
|
|
114
|
+
break
|
|
115
|
+
end
|
|
116
|
+
end
|
|
117
|
+
|
|
118
|
+
if !gpg_key_size || !gpg_key_id
|
|
119
|
+
raise("Error getting GPG key ID or Key size metadata for #{gpg_name}")
|
|
120
|
+
end
|
|
121
|
+
|
|
122
|
+
@@gpg_keys[gpg_key] = {
|
|
123
|
+
:dir => gpg_keydir,
|
|
124
|
+
:name => gpg_name,
|
|
125
|
+
:key_id => gpg_key_id,
|
|
126
|
+
:key_size => gpg_key_size,
|
|
127
|
+
:password => gpg_password
|
|
128
|
+
}
|
|
129
|
+
end
|
|
130
|
+
|
|
131
|
+
# Signs the given RPM with the GPG key found in gpg_keydir
|
|
132
|
+
#
|
|
133
|
+
# @param rpm Fully qualified path to an RPM to be signed.
|
|
134
|
+
# @param gpg_keydir The full path of the directory where the key resides.
|
|
135
|
+
# @param options Options Hash
|
|
136
|
+
#
|
|
137
|
+
# @options options :digest_algo Digest algorithm to use in RPM
|
|
138
|
+
# signing operation; defaults to 'sha256'
|
|
139
|
+
# @options options :timeout_seconds Timeout in seconds for an individual
|
|
140
|
+
# RPM signing operation; defaults to 60.
|
|
141
|
+
# @options options :verbose Whether to log debug information;
|
|
142
|
+
# defaults to false.
|
|
143
|
+
#
|
|
144
|
+
# @return Whether package signing operation succeeded
|
|
145
|
+
# @raise RuntimeError if 'rpmsign' executable cannot be found, the 'gpg
|
|
146
|
+
# 'executable cannot be found, the GPG key directory does not exist or
|
|
147
|
+
# the GPG key metadata cannot be determined via 'gpg'
|
|
148
|
+
def self.sign_rpm(rpm, gpg_keydir, options={})
|
|
149
|
+
# This may be a little confusing...Although we're using 'rpm --resign'
|
|
150
|
+
# in lieu of 'rpmsign --addsign', they are equivalent and the presence
|
|
151
|
+
# of 'rpmsign' is a legitimate check that the 'rpm --resign' capability
|
|
152
|
+
# is available (i.e., rpm-sign package has been installed).
|
|
153
|
+
which('rpmsign') || raise("ERROR: Cannot sign RPMs without 'rpmsign'.")
|
|
154
|
+
|
|
155
|
+
digest_algo = options.key?(:digest_algo) ? options[:digest_algo] : 'sha256'
|
|
156
|
+
timeout_seconds = options.key?(:timeout_seconds) ? options[:timeout_seconds] : 60
|
|
157
|
+
verbose = options.key?(:verbose) ? options[:verbose] : false
|
|
158
|
+
|
|
159
|
+
gpgkey = load_key(gpg_keydir, verbose)
|
|
160
|
+
|
|
161
|
+
gpg_sign_cmd_extra_args = nil
|
|
162
|
+
if Gem::Version.new(Simp::RPM.version) >= Gem::Version.new('4.13.0')
|
|
163
|
+
gpg_sign_cmd_extra_args = "--define '%_gpg_sign_cmd_extra_args --pinentry-mode loopback --verbose'"
|
|
164
|
+
end
|
|
165
|
+
|
|
166
|
+
signcommand = [
|
|
167
|
+
'rpm',
|
|
168
|
+
"--define '%_signature gpg'",
|
|
169
|
+
"--define '%__gpg %{_bindir}/gpg'",
|
|
170
|
+
"--define '%_gpg_name #{gpgkey[:name]}'",
|
|
171
|
+
"--define '%_gpg_path #{gpgkey[:dir]}'",
|
|
172
|
+
"--define '%_gpg_digest_algo #{digest_algo}'",
|
|
173
|
+
gpg_sign_cmd_extra_args,
|
|
174
|
+
"--resign #{rpm}"
|
|
175
|
+
].compact.join(' ')
|
|
176
|
+
|
|
177
|
+
success = false
|
|
178
|
+
begin
|
|
179
|
+
if verbose
|
|
180
|
+
puts "Signing #{rpm} with #{gpgkey[:name]} from #{gpgkey[:dir]}:\n #{signcommand}"
|
|
181
|
+
end
|
|
182
|
+
|
|
183
|
+
require 'timeout'
|
|
184
|
+
# With rpm-sign-4.14.2-11.el8_0 (EL 8.0), if rpm cannot start the
|
|
185
|
+
# gpg-agent daemon, it will just hang. We need to be able to detect
|
|
186
|
+
# the problem and report the failure.
|
|
187
|
+
Timeout::timeout(timeout_seconds) do
|
|
188
|
+
|
|
189
|
+
status = nil
|
|
190
|
+
PTY.spawn(signcommand) do |read, write, pid|
|
|
191
|
+
begin
|
|
192
|
+
while !read.eof? do
|
|
193
|
+
# rpm version >= 4.13.0 will stand up a gpg-agent and so the
|
|
194
|
+
# prompt for the passphrase will only actually happen if this is
|
|
195
|
+
# the first RPM to be signed with the key after the gpg-agent is
|
|
196
|
+
# started and the key's passphrase has not been cleared from the
|
|
197
|
+
# agent's cache.
|
|
198
|
+
read.expect(/pass\s?phrase:.*/) do |text|
|
|
199
|
+
write.puts(gpgkey[:password])
|
|
200
|
+
write.flush
|
|
201
|
+
end
|
|
202
|
+
end
|
|
203
|
+
rescue Errno::EIO
|
|
204
|
+
# Will get here once input is no longer needed, which can be
|
|
205
|
+
# immediately, if a gpg-agent is already running and the
|
|
206
|
+
# passphrase for the key is loaded in its cache.
|
|
207
|
+
end
|
|
208
|
+
|
|
209
|
+
Process.wait(pid)
|
|
210
|
+
status = $?
|
|
211
|
+
end
|
|
212
|
+
|
|
213
|
+
if status && !status.success?
|
|
214
|
+
raise "Failure running <#{signcommand}>"
|
|
215
|
+
end
|
|
216
|
+
end
|
|
217
|
+
|
|
218
|
+
puts "Successfully signed #{rpm}" if verbose
|
|
219
|
+
success = true
|
|
220
|
+
|
|
221
|
+
rescue Timeout::Error
|
|
222
|
+
$stderr.puts "Failed to sign #{rpm} in #{timeout_seconds} seconds."
|
|
223
|
+
rescue Exception => e
|
|
224
|
+
$stderr.puts "Error occurred while attempting to sign #{rpm}:"
|
|
225
|
+
$stderr.puts e
|
|
226
|
+
end
|
|
227
|
+
|
|
228
|
+
success
|
|
229
|
+
end
|
|
230
|
+
|
|
231
|
+
# Signs any RPMs found within the entire rpm_dir directory tree with
|
|
232
|
+
# the GPG key found in gpg_keydir
|
|
233
|
+
#
|
|
234
|
+
# @param rpm_dir A directory or directory glob pattern specifying 1 or
|
|
235
|
+
# more directories containing RPM files to sign.
|
|
236
|
+
# @param gpg_keydir The full path of the directory where the key resides
|
|
237
|
+
# @param options Options Hash
|
|
238
|
+
#
|
|
239
|
+
# @options options :digest_algo Digest algorithm to use in RPM
|
|
240
|
+
# signing operation; defaults to
|
|
241
|
+
# 'sha256'
|
|
242
|
+
# @options options :force Force RPMs that are already signed
|
|
243
|
+
# to be resigned; defaults to false.
|
|
244
|
+
# @options options :max_concurrent Maximum number of concurrent RPM
|
|
245
|
+
# signing operations; defaults to 1.
|
|
246
|
+
# @options options :progress_bar_title Title for the progress bar logged to
|
|
247
|
+
# the console during the signing process;
|
|
248
|
+
# defaults to 'sign_rpms'.
|
|
249
|
+
# @options options :timeout_seconds Timeout in seconds for an individual
|
|
250
|
+
# RPM signing operation; defauls to 60.
|
|
251
|
+
# @options options :verbose Whether to log debug information;
|
|
252
|
+
# defaults to false.
|
|
253
|
+
#
|
|
254
|
+
# @return Hash of RPM signing results or nil if no RPMs found in rpm_dir
|
|
255
|
+
# * Each Hash key is the path to a RPM
|
|
256
|
+
# * Each Hash value is the status of the signing operation: :signed,
|
|
257
|
+
# :unsigned, :skipped_already_signed
|
|
258
|
+
#
|
|
259
|
+
# @raise RuntimeError if 'rpmsign' executable cannot be found, the 'gpg'
|
|
260
|
+
# executable cannot be found, the GPG key directory does not exist,
|
|
261
|
+
# the GPG key metadata cannot be determined via 'gpg' or any RPM signing
|
|
262
|
+
# operation failed
|
|
263
|
+
#
|
|
264
|
+
def self.sign_rpms(rpm_dir, gpg_keydir, options = {})
|
|
265
|
+
opts = {
|
|
266
|
+
:digest_algo => 'sha256',
|
|
267
|
+
:force => false,
|
|
268
|
+
:max_concurrent => 1,
|
|
269
|
+
:progress_bar_title => 'sign_rpms',
|
|
270
|
+
:timeout_seconds => 60,
|
|
271
|
+
:verbose => false
|
|
272
|
+
}.merge(options)
|
|
273
|
+
|
|
274
|
+
rpm_dirs = Dir.glob(rpm_dir)
|
|
275
|
+
to_sign = []
|
|
276
|
+
|
|
277
|
+
rpm_dirs.each do |rpm_dir|
|
|
278
|
+
Find.find(rpm_dir) do |rpm|
|
|
279
|
+
next unless File.readable?(rpm)
|
|
280
|
+
to_sign << rpm if rpm =~ /\.rpm$/
|
|
281
|
+
end
|
|
282
|
+
end
|
|
283
|
+
|
|
284
|
+
return nil if to_sign.empty?
|
|
285
|
+
|
|
286
|
+
results = []
|
|
287
|
+
begin
|
|
288
|
+
results = Parallel.map(
|
|
289
|
+
to_sign,
|
|
290
|
+
:in_processes => opts[:max_concurrent],
|
|
291
|
+
:progress => opts[:progress_bar_title]
|
|
292
|
+
) do |rpm|
|
|
293
|
+
_result = nil
|
|
294
|
+
|
|
295
|
+
begin
|
|
296
|
+
if opts[:force] || !Simp::RPM.new(rpm).signature
|
|
297
|
+
_result = [ rpm, sign_rpm(rpm, gpg_keydir, opts) ]
|
|
298
|
+
_result[1] = _result[1] ? :signed : :unsigned
|
|
299
|
+
else
|
|
300
|
+
puts "Skipping signed package #{rpm}" if opts[:verbose]
|
|
301
|
+
_result = [ rpm, :skipped_already_signed ]
|
|
302
|
+
end
|
|
303
|
+
rescue Exception => e
|
|
304
|
+
# can get here if rpm is malformed and Simp::RPM.new fails
|
|
305
|
+
$stderr.puts "Failed to sign #{rpm}:\n#{e.message}"
|
|
306
|
+
_result = [ rpm, :unsigned ]
|
|
307
|
+
end
|
|
308
|
+
|
|
309
|
+
_result
|
|
310
|
+
end
|
|
311
|
+
ensure
|
|
312
|
+
kill_gpg_agent(gpg_keydir)
|
|
313
|
+
end
|
|
314
|
+
|
|
315
|
+
results.to_h
|
|
316
|
+
end
|
|
317
|
+
|
|
318
|
+
def self.clear_gpg_keys_cache
|
|
319
|
+
@@gpg_keys.clear
|
|
320
|
+
end
|
|
321
|
+
end
|
|
@@ -11,7 +11,7 @@ shared_examples_for 'an RPM generator with customized scriptlets' do
|
|
|
11
11
|
scriptlets = rpm_scriptlets_for(
|
|
12
12
|
host,
|
|
13
13
|
"#{pkg_root_dir}/testpackage_custom_scriptlet/dist/" +
|
|
14
|
-
'pupmod-simp-testpackage-0.0.1-
|
|
14
|
+
'pupmod-simp-testpackage-0.0.1-1.noarch.rpm'
|
|
15
15
|
)
|
|
16
16
|
|
|
17
17
|
comment '...the expected scriptlet types are present'
|
|
@@ -37,28 +37,28 @@ shared_examples_for 'an RPM generator with customized scriptlets' do
|
|
|
37
37
|
comment '...default preun postun scriptlets call simp_rpm_helper with correct arguments'
|
|
38
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
|
-
expected =
|
|
41
|
-
if [ -x /usr/local/sbin/simp_rpm_helper ] ; then
|
|
42
|
-
|
|
43
|
-
fi
|
|
44
|
-
EOM
|
|
40
|
+
expected = <<~EOM
|
|
41
|
+
if [ -x /usr/local/sbin/simp_rpm_helper ] ; then
|
|
42
|
+
/usr/local/sbin/simp_rpm_helper --rpm_dir=/usr/share/simp/modules/testpackage --rpm_section='#{simp_helper_label}' --rpm_status=$1
|
|
43
|
+
fi
|
|
44
|
+
EOM
|
|
45
45
|
expect(scriptlets[rpm_label][:bare_content]).to eq(expected.strip)
|
|
46
46
|
end
|
|
47
47
|
|
|
48
48
|
comment '...default posttrans scriptlet calls simp_rpm_helper with correct arguments'
|
|
49
|
-
expected =
|
|
50
|
-
if [ -e /var/lib/rpm-state/simp-adapter/rpm_status1.testpackage ] ; then
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
elif [ -e /var/lib/rpm-state/simp-adapter/rpm_status2.testpackage ] ; then
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
fi
|
|
61
|
-
EOM
|
|
49
|
+
expected = <<~EOM
|
|
50
|
+
if [ -e /var/lib/rpm-state/simp-adapter/rpm_status1.testpackage ] ; then
|
|
51
|
+
rm /var/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 /var/lib/rpm-state/simp-adapter/rpm_status2.testpackage ] ; then
|
|
56
|
+
rm /var/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
62
|
expect(scriptlets['posttrans'][:bare_content]).to eq(expected.strip)
|
|
63
63
|
end
|
|
64
64
|
end
|
|
@@ -69,7 +69,7 @@ shared_examples_for 'an RPM generator with customized triggers' do
|
|
|
69
69
|
triggers = rpm_triggers_for(
|
|
70
70
|
host,
|
|
71
71
|
"#{pkg_root_dir}/testpackage_custom_scriptlet/dist/" +
|
|
72
|
-
'pupmod-simp-testpackage-0.0.1-
|
|
72
|
+
'pupmod-simp-testpackage-0.0.1-1.noarch.rpm'
|
|
73
73
|
)
|
|
74
74
|
|
|
75
75
|
|
|
@@ -101,7 +101,7 @@ describe 'rake pkg:rpm with customized content' do
|
|
|
101
101
|
copy_host_files_into_build_user_homedir(hosts)
|
|
102
102
|
end
|
|
103
103
|
|
|
104
|
-
let(:pkg_root_dir){'/home/build_user/host_files/spec/acceptance/files'}
|
|
104
|
+
let(:pkg_root_dir){'/home/build_user/host_files/spec/acceptance/suites/default/files'}
|
|
105
105
|
let(:testpackage_dir){"#{pkg_root_dir}/testpackage"}
|
|
106
106
|
|
|
107
107
|
hosts.each do |_host|
|
|
@@ -130,6 +130,5 @@ describe 'rake pkg:rpm with customized content' do
|
|
|
130
130
|
|
|
131
131
|
end
|
|
132
132
|
end
|
|
133
|
-
|
|
134
133
|
end
|
|
135
134
|
end
|