packaging_rake_tasks 1.5.1 → 1.5.4

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: 99d2716778ca9f5bae89a0ff9a024ed8287c1892907b1a9bd6b57da3e35be4b6
4
- data.tar.gz: 5c53d47b4e44df0f737f6de4650bed1780f3f4c197514e8ac6dc3bbdcb140080
3
+ metadata.gz: a92258f52b7bcddc572736022561d288af42c9ae444c9fee77e1e079a0be6bd1
4
+ data.tar.gz: 7439a1b53ae472c235875108c511f9f13d005bcf1ab25cf9509356651e5ad64a
5
5
  SHA512:
6
- metadata.gz: de603feead7958f7ac02a6263a7fe6b8aa36691d948c995398b7327d9f3ed9c753f564409e4e2aaa18df590856f5181e14cb20e07be4468a1763dd4b6a8e74c7
7
- data.tar.gz: 167c400d98bd31136c73dbaf88e62308878e155ca9d43f63a7e8fb6ecbcdec2867e8719a1f05b4cec501b9dfab7ce5af7b6c13f34aeb3bd6837e09545e95143c
6
+ metadata.gz: d99843ac07be5625e4bf5104c8e068fa2a450f0525eae3b9acaddac27b6e29e6f2a750130577642bbf352643c53016e4b0fcc11acb039769a6043f63b3507fdf
7
+ data.tar.gz: bfda90bfce230b73b517a9c8f6313d579c8d797461df971837bffd96559b12e6a10e55e2d8453d9c210c626dcab5850ef2979adb5c38a38a42cdca56e753d17b
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.5.1
1
+ 1.5.4
@@ -18,21 +18,61 @@
18
18
 
19
19
  require "shellwords"
20
20
  require "open3"
21
+ require "tempfile"
21
22
 
22
23
  namespace :build_dependencies do
23
- def buildrequires
24
- buildrequires = []
24
+ # Read the multi build targets from the "_multibuild" file.
25
+ # @return [Array<String>] list of multi build targets or empty Array if the
26
+ # "_multibuild" file does not exist
27
+ def multibuild_flavors
28
+ flavors = []
25
29
 
26
- config = Packaging::Configuration.instance
27
- Dir.glob("#{config.package_dir}/*.spec").each do |spec_file|
28
- # get the BuildRequires from the spec files, this also expands the RPM macros like %{rubygem}
29
- # use Open3 as the command produces some bogus error messages on stderr even on success,
30
- # but in case of error it provides a hint what failed
31
- stdout, stderr, status = Open3.capture3("rpmspec", "-q", "--buildrequires", spec_file)
30
+ # parse the _multibuild XML file if it is present
31
+ mbfile = File.join(Packaging::Configuration.instance.package_dir, "_multibuild")
32
+ if File.exist?(mbfile)
33
+ require "rexml/document"
34
+ doc = REXML::Document.new(File.read(mbfile))
35
+ doc.elements.each("//multibuild/flavor | //multibuild/package") do |node|
36
+ flavors << node.text.strip
37
+ end
38
+ end
39
+
40
+ puts "Found multibuild targets: #{flavors.join(", ")}" if verbose && !flavors.empty?
41
+ flavors
42
+ end
32
43
 
33
- raise "Parsing #{spec_file} failed:\n#{stderr}" unless status.success?
44
+ # Read the build dependencies from a file
45
+ def buildrequires_from_file(file)
46
+ stdout = `rpmspec -q --buildrequires #{file.shellescape}`
47
+ raise "Parsing #{file} failed" unless $?.success?
48
+ stdout.split("\n")
49
+ end
50
+
51
+ # Read the build dependencies from all spec files. For multi build packages
52
+ # evaluate all package flavors.
53
+ # @return [Array<String>] list of build dependencies
54
+ def buildrequires
55
+ buildrequires = []
56
+ # OBS additionally runs a default build with empty flavor in multi build packages,
57
+ # for simplification use it also for single build packages
58
+ flavors = multibuild_flavors + [ "" ]
59
+ Dir.glob("#{Packaging::Configuration.instance.package_dir}/*.spec").each do |spec_file|
60
+ # replace the "@BUILD_FLAVOR@" placeholder by each flavor defined
61
+ flavors.each do |flavor|
62
+ spec_content = File.read(spec_file).gsub!("@BUILD_FLAVOR@", flavor)
34
63
 
35
- buildrequires.concat(stdout.split("\n"))
64
+ if spec_content.nil?
65
+ # no replacement, use the file directly
66
+ buildrequires.concat(buildrequires_from_file(spec_file))
67
+ else
68
+ # rpmspec can only read a file, write the processed data to a temporary file
69
+ Tempfile.create(["rake_build_deps-", ".spec"]) do |tmp|
70
+ tmp.write(spec_content)
71
+ tmp.flush
72
+ buildrequires.concat(buildrequires_from_file(tmp.path))
73
+ end
74
+ end
75
+ end
36
76
  end
37
77
 
38
78
  # remove the duplicates and sort the packages for easier reading
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: packaging_rake_tasks
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.5.1
4
+ version: 1.5.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Josef Reidinger
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-09-02 00:00:00.000000000 Z
11
+ date: 2023-06-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -49,7 +49,7 @@ files:
49
49
  - lib/tasks/tarball.rake
50
50
  homepage: https://github.com/openSUSE/packaging_rake_tasks
51
51
  licenses:
52
- - LGPL v2.1
52
+ - LGPL-2.1
53
53
  metadata: {}
54
54
  post_install_message:
55
55
  rdoc_options: []
@@ -66,8 +66,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
66
66
  - !ruby/object:Gem::Version
67
67
  version: '0'
68
68
  requirements: []
69
- rubyforge_project:
70
- rubygems_version: 2.7.6.3
69
+ rubygems_version: 3.3.26
71
70
  signing_key:
72
71
  specification_version: 4
73
72
  summary: Rake tasks providing tasks to package project in git and integration with