libyui-rake 0.1.20 → 0.1.22

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: 289128538d5b119be1af09ead2c0560a71a94078588053835383e21fa5bb76c6
4
- data.tar.gz: 3557d5112aad595ded8eadf1fa699e9b6fa38ae6f51e1ed8c6de9a8dafaf593e
3
+ metadata.gz: fb1e31490efabef68a3c8511a5581e701a469f63319bd7c6d8e22583aa237be0
4
+ data.tar.gz: ba2d271755666488c29ef5ea6bb1463b3c22b83c2d66c29b8535dd69561d39fe
5
5
  SHA512:
6
- metadata.gz: da624337f6a4bdb9e30b75a29e43970f9435c0854c9b4381e8945edd83f7c041e48c5bd8bb9a8f5c512ccb31f2b4e3ff55cecd7d8dd578c46bf3707f02fa90f5
7
- data.tar.gz: 65636fad104c4853573ef0a2dac53f6c907396a5ff0eef46ba4c03afe2263b6d67f177aa8487ab2dbd3aff9b9ba80d21d63da2d891916b9e1da9058dfbc059b8
6
+ metadata.gz: bb6c9c0ed3946d9356c32b3386b0e7efad6ddd994c7e1f7f0c5ab8a99f5f72017805e6c3a6240729a53e525dd7e63e44498f360d125221c8f1b599a09413939c
7
+ data.tar.gz: 13b7448b50b61662d6e72aa8e571eeeea993945f0c216820796b4969c6df92368c06966794db5676ba71438410dd7f56a2260bc92709af789d5e237c096385f5
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.20
1
+ 0.1.22
data/lib/libyui/tasks.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  #--
2
- # Copyright (C) 2015 SUSE LLC
2
+ # Copyright (C) 2015-2021 SUSE LLC
3
3
  # This library is free software; you can redistribute it and/or modify
4
4
  # it only under the terms of version 2.1 of the GNU Lesser General Public
5
5
  # License as published by the Free Software Foundation.
@@ -41,29 +41,110 @@ module Libyui
41
41
 
42
42
  # Some helpers to be used on tasks definition
43
43
  module Helpers
44
- # Extracts the value from a CMake string
44
+ # Returns the CMake version from the version file.
45
+ # VERSION_TWEAK is optional.
45
46
  #
46
- # @param s [String] '... SET( VERSION_MAJOR "3") ...'
47
- # @param key [String] 'VERSION_MAJOR'
48
- # @return "3"
47
+ # @param filename [String, nil] %{VERSION_CMAKE} by default
48
+ # @return [String] like "1.2.3" or "1.2.3.4"
49
+ def cmake_version(filename = nil)
50
+ filename = cmake_filename(filename)
51
+
52
+ values = cmake_values(filename,
53
+ "VERSION_MAJOR", "VERSION_MINOR", "VERSION_PATCH", "VERSION_TWEAK")
54
+
55
+ values.compact.join(".")
56
+ end
57
+
58
+ # Returns the CMake so version from the version file.
59
+ #
60
+ # @param filename [String, nil] %{VERSION_CMAKE} by default
61
+ # @return [String] like "4.0.0"
62
+ def cmake_so_version(filename = nil)
63
+ filename = cmake_filename(filename)
64
+
65
+ values = cmake_values(filename, "SONAME_MAJOR", "SONAME_MINOR", "SONAME_PATCH")
66
+
67
+ values.compact.join(".")
68
+ end
69
+
70
+ # Bumps the so version in the CMake version file
71
+ #
72
+ # @param filename [string, nil] %{VERSION_CMAKE} by default
73
+ def bump_cmake_so_version(filename = nil)
74
+ filename = cmake_filename(filename)
75
+
76
+ so_version = cmake_so_version(filename).split(".").first.to_i.next
77
+
78
+ content = File.read(filename)
79
+ content.sub!(/(^SET.*SONAME_MAJOR.*)"([^"\n])*"/, "\\1\"#{so_version}\"")
80
+ content.sub!(/(^SET.*SONAME_MINOR.*)"([^"\n])*"/, "\\1\"0\"")
81
+ content.sub!(/(^SET.*SONAME_PATCH.*)"([^"\n])*"/, "\\1\"0\"")
82
+
83
+ File.write(filename, content)
84
+ end
85
+
86
+ # Extract values from a CMake version file
87
+ #
88
+ # @see cmake_value
89
+ #
90
+ # @param filename [String]
91
+ # @param keys [Array<String>]
92
+ def cmake_values(filename, *keys)
93
+ content = File.read(filename)
94
+
95
+ keys.map { |k| cmake_value(content, k) }
96
+ end
97
+
98
+ # Extracts the value of the given key from the content of a CMake version file
99
+ #
100
+ # @param s [String] e.g., '... SET( VERSION_MAJOR "3") ...'
101
+ # @param key [String] e.g., 'VERSION_MAJOR'
102
+ #
103
+ # @return [String] e.g., "3"
49
104
  def cmake_value(s, key)
50
105
  e_key = Regexp.escape(key)
51
106
  m = /SET\s*\(\s*#{e_key}\s+"([^"]*)"\s*\)/.match(s)
52
107
  m ? m[1] : nil
53
108
  end
54
109
 
55
- # Returns the CMake version from the version file.
56
- # VERSION_TWEAK is optional.
110
+ # Filename of the CMake version file
57
111
  #
58
- # @param [String] Version file (VERSION_CMAKE by default)
59
- # @return [String] like "1.2.3" or "1.2.3.4"
60
- # @see VERSION_CMAKE
61
- def cmake_version(file = nil)
62
- f = File.read(file || VERSION_CMAKE)
63
- [cmake_value(f, "VERSION_MAJOR"),
64
- cmake_value(f, "VERSION_MINOR"),
65
- cmake_value(f, "VERSION_PATCH"),
66
- cmake_value(f, "VERSION_TWEAK")].compact.join(".")
112
+ # @param filename [string, nil] %{VERSION_CMAKE} if no filename is given
113
+ # @return [String]
114
+ def cmake_filename(filename)
115
+ filename || VERSION_CMAKE
116
+ end
117
+
118
+ # Returns the so version from the given spec file
119
+ #
120
+ # @param filename [String, nil] if nil, it uses the shortest spec filename
121
+ # @return [String, nil] e.g., "12"
122
+ def spec_so_version(filename = nil)
123
+ filename = spec_filename(filename)
124
+
125
+ File.read(filename).scan(/^%define\s+so_version\s+(\d+)/).flatten.first
126
+ end
127
+
128
+ # Bumps the so version in the given spec file
129
+ #
130
+ # @param filename [String, nil] if nil, it uses the shortest spec filename
131
+ def bump_spec_so_version(filename = nil)
132
+ filename = spec_filename(filename)
133
+
134
+ so_version = spec_so_version(filename).to_i.next
135
+
136
+ content = File.read(filename)
137
+ content.gsub!(/^(%define\s+so_version\s+)\d+$/, "\\1#{so_version}")
138
+
139
+ File.write(filename, content)
140
+ end
141
+
142
+ # Filename of the spec file
143
+ #
144
+ # @param filename [String, nil] if nil, it uses the shortest spec filename
145
+ # @return [String]
146
+ def spec_filename(filename)
147
+ filename || Dir.glob("package/*.spec").sort.first
67
148
  end
68
149
  end
69
150
  end
@@ -0,0 +1,53 @@
1
+ #--
2
+ # Copyright (C) 2021 SUSE LLC
3
+ # This library is free software; you can redistribute it and/or modify
4
+ # it only under the terms of version 2.1 of the GNU Lesser General Public
5
+ # License as published by the Free Software Foundation.
6
+ #
7
+ # This library is distributed in the hope that it will be useful, but WITHOUT
8
+ # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
9
+ # FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
10
+ # details.
11
+ #
12
+ # You should have received a copy of the GNU Lesser General Public
13
+ # License along with this library; if not, write to the Free Software
14
+ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
15
+ #++
16
+
17
+ namespace :so_version do
18
+ include Libyui::Tasks::Helpers
19
+
20
+ desc "Check that the so version numbers are in sync"
21
+ task :check do
22
+ so_version = cmake_so_version.split(".").first
23
+
24
+ filenames = Dir.glob("package/*.spec").sort
25
+ filenames.reject! { |f| spec_so_version(f).nil? }
26
+
27
+ mismatches = filenames.select { |f| spec_so_version(f) != so_version }
28
+
29
+ if mismatches.any?
30
+ messages = ["so version mismatch:"]
31
+ messages << "cmake so version: #{so_version}"
32
+ messages += mismatches.map { |f| "#{f}: #{spec_so_version(f)}" }
33
+
34
+ raise messages.join("\n")
35
+ end
36
+
37
+ puts cmake_so_version if verbose
38
+ end
39
+
40
+ desc "Increase the so version in spec and cmake files"
41
+ task bump: :check do
42
+ bump_cmake_so_version
43
+
44
+ Dir.glob("package/*.spec").each { |f| bump_spec_so_version(f) }
45
+
46
+ puts cmake_so_version if verbose
47
+ end
48
+
49
+ desc "Show the so version"
50
+ task :show do
51
+ puts cmake_so_version
52
+ end
53
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: libyui-rake
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.20
4
+ version: 0.1.22
5
5
  platform: ruby
6
6
  authors:
7
7
  - YaST team
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-04-23 00:00:00.000000000 Z
11
+ date: 2021-03-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -36,14 +36,14 @@ dependencies:
36
36
  requirements:
37
37
  - - "~>"
38
38
  - !ruby/object:Gem::Version
39
- version: 1.4.8
39
+ version: '1.5'
40
40
  type: :runtime
41
41
  prerelease: false
42
42
  version_requirements: !ruby/object:Gem::Requirement
43
43
  requirements:
44
44
  - - "~>"
45
45
  - !ruby/object:Gem::Version
46
- version: 1.4.8
46
+ version: '1.5'
47
47
  description: |
48
48
  Rake tasks that support the workflow of a libyui developer. It allows packaging
49
49
  a repo, sending it to the build service, creating a submit request to the
@@ -60,6 +60,7 @@ files:
60
60
  - data/targets.yml
61
61
  - lib/libyui/rake.rb
62
62
  - lib/libyui/tasks.rb
63
+ - lib/tasks/so_version.rake
63
64
  - lib/tasks/test.rake
64
65
  - lib/tasks/version.rake
65
66
  homepage: https://github.com/openSUSE/libyui-rake
@@ -81,7 +82,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
81
82
  - !ruby/object:Gem::Version
82
83
  version: '0'
83
84
  requirements: []
84
- rubygems_version: 3.0.3
85
+ rubyforge_project:
86
+ rubygems_version: 2.7.6.2
85
87
  signing_key:
86
88
  specification_version: 4
87
89
  summary: Rake tasks providing basic workflow for libyui development