xezat 0.1.2 → 0.2.2
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/.circleci/config.yml +43 -8
- data/.rubocop.yml +6 -3
- data/.ruby-version +1 -0
- data/lib/xezat/command/announce.rb +22 -0
- data/lib/xezat/command/bump/changelog.rb +8 -2
- data/lib/xezat/command/bump/compiler.rb +1 -1
- data/lib/xezat/command/bump/cygport_dep.rb +9 -2
- data/lib/xezat/command/bump/development_package.rb +4 -2
- data/lib/xezat/command/bump/file.rb +2 -2
- data/lib/xezat/command/bump/language.rb +1 -1
- data/lib/xezat/command/bump/runtime_package.rb +10 -4
- data/lib/xezat/command/bump/src_uri.rb +5 -5
- data/lib/xezat/command/bump.rb +3 -3
- data/lib/xezat/command/doctor.rb +0 -2
- data/lib/xezat/command/init.rb +1 -1
- data/lib/xezat/command/port.rb +1 -0
- data/lib/xezat/command/validate.rb +90 -6
- data/lib/xezat/config.rb +3 -3
- data/lib/xezat/cygchangelog.rb +8 -5
- data/lib/xezat/cygversion.rb +6 -1
- data/lib/xezat/detector/asciidoc.rb +20 -0
- data/lib/xezat/detector/autoconf.rb +1 -1
- data/lib/xezat/detector/boost.m4.rb +1 -1
- data/lib/xezat/detector/cmake.rb +1 -1
- data/lib/xezat/detector/libtool.rb +2 -2
- data/lib/xezat/detector/make.rb +1 -1
- data/lib/xezat/detector/nasm.rb +16 -0
- data/lib/xezat/detector/ninja.rb +1 -1
- data/lib/xezat/detector/python27.rb +5 -5
- data/lib/xezat/detector/python36.rb +10 -1
- data/lib/xezat/detector/python37.rb +10 -1
- data/lib/xezat/detector/{python36-docutils.rb → python38-docutils.rb} +7 -2
- data/lib/xezat/detector/python38.rb +22 -0
- data/lib/xezat/detector/python39.rb +26 -0
- data/lib/xezat/detector/waf.rb +1 -1
- data/lib/xezat/detectors.rb +12 -6
- data/lib/xezat/generator/pkgconfig.rb +6 -6
- data/lib/xezat/main.rb +10 -2
- data/lib/xezat/packages.rb +1 -1
- data/lib/xezat/variables.rb +7 -6
- data/lib/xezat/version.rb +1 -1
- data/lib/xezat.rb +4 -4
- data/share/xezat/categories.yaml +51 -0
- data/share/xezat/compilers.json +7 -0
- data/share/xezat/repository/github.json +3 -3
- data/share/xezat/repository/gnu.json +4 -0
- data/share/xezat/repository/savannah.json +1 -1
- data/share/xezat/repository/sourceforge.json +1 -1
- data/share/xezat/template/announce.erb +7 -0
- data/share/xezat/template/cmake.erb +8 -7
- data/xezat.gemspec +10 -9
- metadata +42 -47
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 6183648a65f69a1fc1c1a85779066ba529614681aeb56fa78979ba9d9536c625
|
|
4
|
+
data.tar.gz: 20589012624b3e1690014d2b03ad2dda3fe01c464f5c3fb03223572a856a8dc4
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: e94a00970240eb104ba88a2126a4fbd04d97820977a383a0498e584b3373b69e8dd98260c30cb59853e36f792949c5fa527a910345b19582ea1332541f2b2a48
|
|
7
|
+
data.tar.gz: b01a34f4cc54b8967e765045048d8759612de6653602c0833ff6b252b8302563ea286fcfde36eefb4d1ab58f623a3c32f299aedb5b741aef681363840f719e63
|
data/.circleci/config.yml
CHANGED
|
@@ -1,13 +1,10 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
#
|
|
5
|
-
version: 2
|
|
1
|
+
version: 2.1
|
|
2
|
+
orbs:
|
|
3
|
+
ruby: circleci/ruby@1.4.0
|
|
6
4
|
jobs:
|
|
7
|
-
|
|
5
|
+
test:
|
|
8
6
|
docker:
|
|
9
|
-
|
|
10
|
-
- image: circleci/ruby
|
|
7
|
+
- image: cimg/ruby:2.6
|
|
11
8
|
|
|
12
9
|
working_directory: ~/repo
|
|
13
10
|
|
|
@@ -73,3 +70,41 @@ jobs:
|
|
|
73
70
|
# Collect reports
|
|
74
71
|
- store_test_results:
|
|
75
72
|
path: /tmp/test-results
|
|
73
|
+
- store_artifacts:
|
|
74
|
+
path: ~/repo/coverage
|
|
75
|
+
destination: coverage
|
|
76
|
+
|
|
77
|
+
deploy:
|
|
78
|
+
docker:
|
|
79
|
+
- image: cimg/ruby:2.6
|
|
80
|
+
steps:
|
|
81
|
+
- checkout
|
|
82
|
+
- run:
|
|
83
|
+
name: Install native libraries
|
|
84
|
+
command: |
|
|
85
|
+
sudo apt-get install cmake libicu-dev
|
|
86
|
+
|
|
87
|
+
- run:
|
|
88
|
+
name: Install dependencies
|
|
89
|
+
command: |
|
|
90
|
+
bundle install --jobs=4 --retry=3 --path vendor/bundle
|
|
91
|
+
|
|
92
|
+
- run:
|
|
93
|
+
name: Publish gem to Rubygems
|
|
94
|
+
command: bundle exec rake release
|
|
95
|
+
|
|
96
|
+
workflows:
|
|
97
|
+
test:
|
|
98
|
+
jobs:
|
|
99
|
+
- test:
|
|
100
|
+
filters:
|
|
101
|
+
tags:
|
|
102
|
+
only: /.*/
|
|
103
|
+
- deploy:
|
|
104
|
+
requires:
|
|
105
|
+
- test
|
|
106
|
+
filters:
|
|
107
|
+
tags:
|
|
108
|
+
only: /^v.*/
|
|
109
|
+
branches:
|
|
110
|
+
ignore: /.*/
|
data/.rubocop.yml
CHANGED
|
@@ -1,11 +1,16 @@
|
|
|
1
1
|
require: rubocop-performance
|
|
2
2
|
|
|
3
3
|
AllCops:
|
|
4
|
-
|
|
4
|
+
NewCops: enable
|
|
5
|
+
SuggestExtensions: false
|
|
6
|
+
TargetRubyVersion: 2.6
|
|
5
7
|
Exclude:
|
|
6
8
|
- 'spec/cygport/**/*'
|
|
7
9
|
- 'vendor/**/*'
|
|
8
10
|
|
|
11
|
+
Layout/LineLength:
|
|
12
|
+
Max: 160
|
|
13
|
+
|
|
9
14
|
Metrics/AbcSize:
|
|
10
15
|
Max: 40
|
|
11
16
|
Metrics/BlockLength:
|
|
@@ -14,8 +19,6 @@ Metrics/BlockLength:
|
|
|
14
19
|
- 'spec/**/*'
|
|
15
20
|
Metrics/CyclomaticComplexity:
|
|
16
21
|
Max: 10
|
|
17
|
-
Metrics/LineLength:
|
|
18
|
-
Max: 160
|
|
19
22
|
Metrics/MethodLength:
|
|
20
23
|
Max: 35
|
|
21
24
|
Metrics/ParameterLists:
|
data/.ruby-version
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
2.6.4
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'xezat/variables'
|
|
4
|
+
|
|
5
|
+
module Xezat
|
|
6
|
+
module Command
|
|
7
|
+
class Announce
|
|
8
|
+
include Xezat
|
|
9
|
+
|
|
10
|
+
def initialize(options, cygport)
|
|
11
|
+
@options = options
|
|
12
|
+
@cygport = cygport
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def execute
|
|
16
|
+
variables = variables(@cygport)
|
|
17
|
+
erb = File.expand_path(File.join(TEMPLATE_DIR, 'announce.erb'))
|
|
18
|
+
print ERB.new(File.readlines(erb).join(nil), trim_mode: '%-').result(binding).chop # remove redundant new line
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
@@ -9,7 +9,7 @@ module Xezat
|
|
|
9
9
|
module Command
|
|
10
10
|
class Bump
|
|
11
11
|
def get_changelog(variables, options, readme_file)
|
|
12
|
-
Xezat.logger.debug('
|
|
12
|
+
Xezat.logger.debug(' Try to append latest log to changelog...')
|
|
13
13
|
current_version = variables[:PVR].intern
|
|
14
14
|
if FileTest.exist?(readme_file)
|
|
15
15
|
raise FilePermissionError, "Cannot read #{readme_file}" unless FileTest.readable?(readme_file)
|
|
@@ -17,10 +17,16 @@ module Xezat
|
|
|
17
17
|
|
|
18
18
|
changelog = Cygchangelog.new(File.read(readme_file))
|
|
19
19
|
message = options['message'] || 'Version bump.'
|
|
20
|
-
changelog
|
|
20
|
+
if changelog.length > 1 || !changelog.key?(current_version)
|
|
21
|
+
changelog[current_version] = message # overwrite unless initial package
|
|
22
|
+
Xezat.logger.debug(" '#{message}' appended")
|
|
23
|
+
else
|
|
24
|
+
Xezat.logger.warn(' Initial release protected')
|
|
25
|
+
end
|
|
21
26
|
else
|
|
22
27
|
changelog = Cygchangelog.new
|
|
23
28
|
changelog[current_version] = 'Initial release by fd0 <https://github.com/fd00/>'
|
|
29
|
+
Xezat.logger.debug(' Initial release by you')
|
|
24
30
|
end
|
|
25
31
|
changelog
|
|
26
32
|
end
|
|
@@ -6,7 +6,7 @@ module Xezat
|
|
|
6
6
|
module Command
|
|
7
7
|
class Bump
|
|
8
8
|
def get_compilers(languages, _variables)
|
|
9
|
-
Xezat.logger.debug('Collect compilers')
|
|
9
|
+
Xezat.logger.debug(' Collect compilers')
|
|
10
10
|
compiler_file = File.expand_path(File.join(DATA_DIR, 'compilers.json'))
|
|
11
11
|
compiler_candidates = JSON.parse(File.read(compiler_file))
|
|
12
12
|
compilers = []
|
|
@@ -1,14 +1,21 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
+
require 'find'
|
|
3
4
|
require 'open3'
|
|
4
5
|
require 'xezat'
|
|
5
6
|
|
|
6
7
|
module Xezat
|
|
7
8
|
module Command
|
|
8
9
|
class Bump
|
|
9
|
-
def invoke_cygport_dep(cygport)
|
|
10
|
+
def invoke_cygport_dep(variables, cygport)
|
|
11
|
+
candidate_files = Find.find(variables[:D]).select do |file|
|
|
12
|
+
file.end_with?('.exe', '.dll', '.so')
|
|
13
|
+
end
|
|
14
|
+
additional_path = candidate_files.map do |file|
|
|
15
|
+
File.dirname(file)
|
|
16
|
+
end.sort.uniq.join(':')
|
|
10
17
|
command = ['bash', File.expand_path(File.join(DATA_DIR, 'invoke_cygport_dep.sh')), cygport]
|
|
11
|
-
result, error, status = Open3.capture3(command.join(' '))
|
|
18
|
+
result, error, status = Open3.capture3({ 'PATH' => "#{ENV['PATH']}:#{additional_path}" }, command.join(' '))
|
|
12
19
|
raise CygportProcessError, error unless status.success?
|
|
13
20
|
|
|
14
21
|
result
|
|
@@ -9,10 +9,12 @@ module Xezat
|
|
|
9
9
|
module Command
|
|
10
10
|
class Bump
|
|
11
11
|
def get_development_packages(variables, packages)
|
|
12
|
-
Xezat.logger.debug('Collect development packages')
|
|
12
|
+
Xezat.logger.debug(' Collect development packages')
|
|
13
13
|
compilers = get_compilers(get_languages(variables[:S]), variables)
|
|
14
14
|
tools = get_tools(variables)
|
|
15
|
-
|
|
15
|
+
build_requires = variables[:BUILD_REQUIRES].nil? ? [] : variables[:BUILD_REQUIRES].split.map(&:to_sym)
|
|
16
|
+
development_packages = (compilers + tools + build_requires + [:cygport]).uniq.sort
|
|
17
|
+
development_packages.delete(:'libssl-devel') if development_packages.include?(:'libssl1.0-devel')
|
|
16
18
|
development_packages.map! do |package|
|
|
17
19
|
packages[package] || ''
|
|
18
20
|
end
|
|
@@ -9,10 +9,10 @@ module Xezat
|
|
|
9
9
|
module Command
|
|
10
10
|
class Bump
|
|
11
11
|
def get_files(variables)
|
|
12
|
-
Xezat.logger.debug('Collect files')
|
|
12
|
+
Xezat.logger.debug(' Collect files')
|
|
13
13
|
pkg2files = {}
|
|
14
14
|
variables[:pkg_name].each do |pkg_name|
|
|
15
|
-
Xezat.logger.debug("
|
|
15
|
+
Xezat.logger.debug(" Collect #{pkg_name}")
|
|
16
16
|
lst_file = File.expand_path(File.join(variables[:T], ".#{pkg_name}.lst"))
|
|
17
17
|
raise IllegalStateError, "No such file: #{lst_file}" unless FileTest.readable?(lst_file)
|
|
18
18
|
|
|
@@ -7,7 +7,7 @@ module Xezat
|
|
|
7
7
|
module Command
|
|
8
8
|
class Bump
|
|
9
9
|
def get_languages(top_src_dir)
|
|
10
|
-
Xezat.logger.debug('Collect languages')
|
|
10
|
+
Xezat.logger.debug(' Collect languages')
|
|
11
11
|
languages_file = File.expand_path(File.join(DATA_DIR, 'languages.json'))
|
|
12
12
|
languages_candidates = JSON.parse(File.read(languages_file))
|
|
13
13
|
languages = []
|
|
@@ -7,10 +7,16 @@ require 'xezat/variables'
|
|
|
7
7
|
module Xezat
|
|
8
8
|
module Command
|
|
9
9
|
class Bump
|
|
10
|
-
def get_runtime_packages(cygport)
|
|
11
|
-
Xezat.logger.debug('Collect runtime packages from cygport dep')
|
|
12
|
-
result = invoke_cygport_dep(cygport)
|
|
13
|
-
result.gsub(/^.*\*\*\*.*$/, '').split($INPUT_RECORD_SEPARATOR).map(&:lstrip)
|
|
10
|
+
def get_runtime_packages(variables, pkgs, cygport)
|
|
11
|
+
Xezat.logger.debug(' Collect runtime packages from cygport dep')
|
|
12
|
+
result = invoke_cygport_dep(variables, cygport)
|
|
13
|
+
runtime_packages = result.gsub(/^.*\*\*\*.*$/, '').split($INPUT_RECORD_SEPARATOR).map(&:lstrip)
|
|
14
|
+
build_requires = variables[:BUILD_REQUIRES].nil? ? [] : variables[:BUILD_REQUIRES].split.map(&:to_sym)
|
|
15
|
+
runtime_packages.delete(pkgs[:'libssl-devel']) if build_requires.include?(:'libssl1.0-devel')
|
|
16
|
+
variables[:REQUIRES]&.split&.each do |req|
|
|
17
|
+
runtime_packages << pkgs[req.to_sym]
|
|
18
|
+
end
|
|
19
|
+
runtime_packages.sort
|
|
14
20
|
end
|
|
15
21
|
end
|
|
16
22
|
end
|
|
@@ -6,15 +6,15 @@ require 'xezat/cygclasses'
|
|
|
6
6
|
module Xezat
|
|
7
7
|
module Command
|
|
8
8
|
class Bump
|
|
9
|
-
def get_src_uri(
|
|
10
|
-
Xezat.logger.debug('Collect SRC_URI')
|
|
9
|
+
def get_src_uri(variables, cygclasses = CygclassManager.new)
|
|
10
|
+
Xezat.logger.debug(' Collect SRC_URI')
|
|
11
11
|
cygclasses.vcs.each do |vcs|
|
|
12
|
-
next unless
|
|
12
|
+
next unless variables.key?("_#{vcs}_CYGCLASS_".intern)
|
|
13
13
|
|
|
14
14
|
src_uri_key = "#{vcs.to_s.upcase}_URI".intern
|
|
15
|
-
return
|
|
15
|
+
return variables[src_uri_key].split if variables.key?(src_uri_key)
|
|
16
16
|
end
|
|
17
|
-
|
|
17
|
+
variables[:SRC_URI].split
|
|
18
18
|
end
|
|
19
19
|
end
|
|
20
20
|
end
|
data/lib/xezat/command/bump.rb
CHANGED
|
@@ -32,13 +32,13 @@ module Xezat
|
|
|
32
32
|
|
|
33
33
|
info = {
|
|
34
34
|
src_uri: get_src_uri(vars),
|
|
35
|
-
runtimes: get_runtime_packages(@cygport),
|
|
35
|
+
runtimes: get_runtime_packages(vars, pkgs, @cygport),
|
|
36
36
|
developments: get_development_packages(vars, pkgs),
|
|
37
37
|
files: get_files(vars),
|
|
38
38
|
changelog: get_changelog(vars, @options, readme_file)
|
|
39
39
|
}
|
|
40
40
|
|
|
41
|
-
Xezat.logger.debug('Write ChangeLog atomically')
|
|
41
|
+
Xezat.logger.debug(' Write ChangeLog atomically')
|
|
42
42
|
File.atomic_write(readme_file) do |f|
|
|
43
43
|
f.write(get_embedded_contents(vars, info))
|
|
44
44
|
end
|
|
@@ -48,7 +48,7 @@ module Xezat
|
|
|
48
48
|
|
|
49
49
|
def get_embedded_contents(variables, info)
|
|
50
50
|
erb = File.expand_path(File.join(TEMPLATE_DIR, 'README.erb'))
|
|
51
|
-
ERB.new(File.readlines(erb).join(nil),
|
|
51
|
+
ERB.new(File.readlines(erb).join(nil), trim_mode: '%-').result(binding).chop # remove redundant new line
|
|
52
52
|
end
|
|
53
53
|
end
|
|
54
54
|
end
|
data/lib/xezat/command/doctor.rb
CHANGED
data/lib/xezat/command/init.rb
CHANGED
|
@@ -74,7 +74,7 @@ module Xezat
|
|
|
74
74
|
|
|
75
75
|
def get_cygport(template_variables, category, summary, description, cygclasses, cygport)
|
|
76
76
|
erb = File.expand_path(File.join(TEMPLATE_DIR, 'cygport.erb'))
|
|
77
|
-
ERB.new(File.readlines(erb).join(nil),
|
|
77
|
+
ERB.new(File.readlines(erb).join(nil), trim_mode: '%-').result(binding)
|
|
78
78
|
end
|
|
79
79
|
end
|
|
80
80
|
end
|
data/lib/xezat/command/port.rb
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
+
require 'net/http'
|
|
3
4
|
require 'pkg-config'
|
|
5
|
+
require 'uri'
|
|
6
|
+
require 'xezat/packages'
|
|
4
7
|
require 'xezat/variables'
|
|
5
8
|
|
|
6
9
|
module Xezat
|
|
@@ -16,22 +19,103 @@ module Xezat
|
|
|
16
19
|
def execute
|
|
17
20
|
Xezat.logger.debug('Start validating')
|
|
18
21
|
vars = variables(@cygport)
|
|
22
|
+
pkgs = packages
|
|
23
|
+
|
|
24
|
+
Xezat.logger.debug(' Validate .cygport')
|
|
25
|
+
validate_cygport(@cygport)
|
|
26
|
+
|
|
27
|
+
Xezat.logger.debug(' Validate category')
|
|
28
|
+
validate_category(vars[:CATEGORY])
|
|
29
|
+
|
|
30
|
+
Xezat.logger.debug(' Validate homepage')
|
|
31
|
+
validate_homepage(vars[:HOMEPAGE])
|
|
32
|
+
|
|
33
|
+
Xezat.logger.debug(' Validate BUILD_REQUIRES')
|
|
34
|
+
validate_build_requires(vars[:BUILD_REQUIRES], pkgs)
|
|
35
|
+
|
|
36
|
+
Xezat.logger.debug(' Validate *.pc')
|
|
19
37
|
validate_pkgconfig(vars)
|
|
38
|
+
|
|
20
39
|
Xezat.logger.debug('End validating')
|
|
21
40
|
end
|
|
22
41
|
|
|
42
|
+
def validate_cygport(cygport)
|
|
43
|
+
original_string = File.read(cygport)
|
|
44
|
+
stripped_string = original_string.gsub(/^\xEF\xBB\xBF/, '')
|
|
45
|
+
Xezat.logger.error(' .cygport contains BOM') unless original_string == stripped_string
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
def validate_category(category)
|
|
49
|
+
categories_file = File.expand_path(File.join(DATA_DIR, 'categories.yaml'))
|
|
50
|
+
Xezat.logger.error(" Category is invalid : #{category}") unless YAML.safe_load(File.open(categories_file), [Symbol]).include?(category.downcase)
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
def validate_homepage(homepage)
|
|
54
|
+
response = Net::HTTP.get_response(URI.parse(homepage))
|
|
55
|
+
code = response.code
|
|
56
|
+
if code == '200'
|
|
57
|
+
Xezat.logger.debug(" code = #{response.code}")
|
|
58
|
+
else
|
|
59
|
+
Xezat.logger.error(" code = #{response.code}")
|
|
60
|
+
end
|
|
61
|
+
rescue OpenSSL::SSL::SSLError => e
|
|
62
|
+
raise e unless @options[:ignore]
|
|
63
|
+
|
|
64
|
+
Xezat.logger.error(' Ignore SSLError')
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
def validate_build_requires(build_requires, pkgs)
|
|
68
|
+
return if build_requires.nil?
|
|
69
|
+
|
|
70
|
+
build_requires.split.each do |build_require|
|
|
71
|
+
build_require_pkg = pkgs[build_require.to_sym]
|
|
72
|
+
if build_require_pkg.nil?
|
|
73
|
+
Xezat.logger.error(" #{build_require} not found")
|
|
74
|
+
else
|
|
75
|
+
Xezat.logger.debug(" #{build_require_pkg}")
|
|
76
|
+
end
|
|
77
|
+
end
|
|
78
|
+
end
|
|
79
|
+
|
|
23
80
|
def validate_pkgconfig(variables)
|
|
24
81
|
pkgconfig_path = File.join(variables[:D], 'usr', 'lib', 'pkgconfig')
|
|
25
82
|
PKGConfig.add_path(pkgconfig_path)
|
|
26
83
|
Dir.glob('*.pc', 0, base: pkgconfig_path).each do |pc|
|
|
27
84
|
basename = File.basename(pc, '.pc')
|
|
28
|
-
Xezat.logger.debug("
|
|
85
|
+
Xezat.logger.debug(" #{basename}.pc found")
|
|
29
86
|
modversion = PKGConfig.modversion(basename)
|
|
30
|
-
Xezat.logger.debug("
|
|
31
|
-
pv = variables[:PV][0]
|
|
32
|
-
Xezat.logger.error("
|
|
33
|
-
Xezat.logger.debug("
|
|
34
|
-
|
|
87
|
+
Xezat.logger.debug(" modversion = #{modversion}")
|
|
88
|
+
pv = variables[:PV][0].gsub(/\+.+$/, '')
|
|
89
|
+
Xezat.logger.error(" modversion differs from $PN = #{pv}") unless modversion == pv
|
|
90
|
+
Xezat.logger.debug(" cflags = #{PKGConfig.cflags(basename)}")
|
|
91
|
+
libs = PKGConfig.libs(basename)
|
|
92
|
+
Xezat.logger.debug(" libs = #{libs}")
|
|
93
|
+
validate_libs(variables, libs)
|
|
94
|
+
end
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
def validate_libs(variables, libs)
|
|
98
|
+
lib_dirs = [File.join(variables[:D], '/usr/lib'), '/usr/lib', '/usr/lib/w32api', '/usr/lib/gcc/x86_64-pc-cygwin/11']
|
|
99
|
+
libs.split do |option|
|
|
100
|
+
if option.start_with?('-l')
|
|
101
|
+
lib_name = option[2, 255] # Assume file length limit
|
|
102
|
+
found = false
|
|
103
|
+
lib_dirs.each do |dir|
|
|
104
|
+
archive_path = File.join(dir, "lib#{lib_name}.dll.a")
|
|
105
|
+
if File.exist?(archive_path)
|
|
106
|
+
Xezat.logger.debug(" #{lib_name} -> #{archive_path.gsub(variables[:D], '$D')}")
|
|
107
|
+
found = true
|
|
108
|
+
break
|
|
109
|
+
end
|
|
110
|
+
static_path = File.join(dir, "lib#{lib_name}.a")
|
|
111
|
+
next unless File.exist?(static_path)
|
|
112
|
+
|
|
113
|
+
Xezat.logger.debug(" #{lib_name} -> #{static_path}")
|
|
114
|
+
found = true
|
|
115
|
+
break
|
|
116
|
+
end
|
|
117
|
+
Xezat.logger.error(" #{lib_name} not found") unless found
|
|
118
|
+
end
|
|
35
119
|
end
|
|
36
120
|
end
|
|
37
121
|
end
|
data/lib/xezat/config.rb
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
require '
|
|
3
|
+
require 'yaml'
|
|
4
4
|
|
|
5
5
|
module Xezat
|
|
6
6
|
def config(filepath = nil)
|
|
7
|
-
config =
|
|
7
|
+
config = {}
|
|
8
8
|
config['cygwin'] = {
|
|
9
9
|
'cygclassdir' => '/usr/share/cygport/cygclass'
|
|
10
10
|
}
|
|
11
11
|
config['xezat'] = {
|
|
12
12
|
}
|
|
13
|
-
config.merge!(
|
|
13
|
+
config.merge!(YAML.load_file(filepath)) if filepath
|
|
14
14
|
config
|
|
15
15
|
end
|
|
16
16
|
end
|
data/lib/xezat/cygchangelog.rb
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
+
require 'English'
|
|
3
4
|
require 'xezat/cygversion'
|
|
4
5
|
|
|
5
6
|
module Xezat
|
|
@@ -24,7 +25,7 @@ module Xezat
|
|
|
24
25
|
next
|
|
25
26
|
end
|
|
26
27
|
matched_content = /^(.+)$/.match(line)
|
|
27
|
-
next
|
|
28
|
+
next if matched_content.nil?
|
|
28
29
|
raise ReadmeSyntaxError, 'Version missing' if version.nil?
|
|
29
30
|
|
|
30
31
|
if @changelogs.key?(version)
|
|
@@ -48,13 +49,15 @@ module Xezat
|
|
|
48
49
|
@changelogs.key?(key)
|
|
49
50
|
end
|
|
50
51
|
|
|
51
|
-
def each
|
|
52
|
+
def each(&block)
|
|
52
53
|
logs = @changelogs.sort do |a, b|
|
|
53
54
|
-(Cygversion.new(a[0].to_s) <=> Cygversion.new(b[0].to_s))
|
|
54
55
|
end
|
|
55
|
-
logs.each
|
|
56
|
-
|
|
57
|
-
|
|
56
|
+
logs.each(&block)
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
def length
|
|
60
|
+
@changelogs.length
|
|
58
61
|
end
|
|
59
62
|
end
|
|
60
63
|
end
|
data/lib/xezat/cygversion.rb
CHANGED
|
@@ -15,6 +15,8 @@ module Xezat
|
|
|
15
15
|
|
|
16
16
|
def to_v
|
|
17
17
|
[Gem::Version.new(@version), @revision, @release]
|
|
18
|
+
rescue ArgumentError
|
|
19
|
+
to_a
|
|
18
20
|
end
|
|
19
21
|
|
|
20
22
|
def to_a
|
|
@@ -22,7 +24,10 @@ module Xezat
|
|
|
22
24
|
end
|
|
23
25
|
|
|
24
26
|
def <=>(other)
|
|
25
|
-
to_v <=> other.to_v
|
|
27
|
+
result = (to_v <=> other.to_v)
|
|
28
|
+
return result unless result.nil?
|
|
29
|
+
|
|
30
|
+
(to_a <=> other.to_a)
|
|
26
31
|
end
|
|
27
32
|
end
|
|
28
33
|
end
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'find'
|
|
4
|
+
|
|
5
|
+
module Xezat
|
|
6
|
+
module Detector
|
|
7
|
+
class Asciidoc
|
|
8
|
+
def detect(variables)
|
|
9
|
+
Find.find(variables[:S]) do |file|
|
|
10
|
+
next unless file.end_with?("#{File::SEPARATOR}configure.ac", "#{File::SEPARATOR}configure.in")
|
|
11
|
+
|
|
12
|
+
File.foreach(file) do |line|
|
|
13
|
+
return true if line.include?('asciidoc')
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
false
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
@@ -7,7 +7,7 @@ module Xezat
|
|
|
7
7
|
class Autoconf
|
|
8
8
|
def detect(variables)
|
|
9
9
|
Find.find(variables[:S]) do |file|
|
|
10
|
-
return true if file.end_with?(File::SEPARATOR
|
|
10
|
+
return true if file.end_with?("#{File::SEPARATOR}configure.ac", "#{File::SEPARATOR}configure.in")
|
|
11
11
|
end
|
|
12
12
|
false
|
|
13
13
|
end
|
|
@@ -7,7 +7,7 @@ module Xezat
|
|
|
7
7
|
class BoostM4
|
|
8
8
|
def detect(variables)
|
|
9
9
|
Find.find(variables[:S]) do |file|
|
|
10
|
-
next unless file.end_with?(File::SEPARATOR
|
|
10
|
+
next unless file.end_with?("#{File::SEPARATOR}configure.ac", "#{File::SEPARATOR}configure.in")
|
|
11
11
|
|
|
12
12
|
File.foreach(file) do |line|
|
|
13
13
|
return true if line.lstrip.start_with?('BOOST_REQUIRE')
|
data/lib/xezat/detector/cmake.rb
CHANGED
|
@@ -7,10 +7,10 @@ module Xezat
|
|
|
7
7
|
class Libtool
|
|
8
8
|
def detect(variables)
|
|
9
9
|
Find.find(variables[:S]) do |file|
|
|
10
|
-
return true if file.end_with?(File::SEPARATOR
|
|
10
|
+
return true if file.end_with?("#{File::SEPARATOR}ltmain.sh")
|
|
11
11
|
end
|
|
12
12
|
Find.find(variables[:S]) do |file|
|
|
13
|
-
next unless file.end_with?(File::SEPARATOR
|
|
13
|
+
next unless file.end_with?("#{File::SEPARATOR}Makefile", "#{File::SEPARATOR}makefile")
|
|
14
14
|
next if File.directory?(file)
|
|
15
15
|
|
|
16
16
|
File.foreach(file) do |line|
|
data/lib/xezat/detector/make.rb
CHANGED
|
@@ -7,7 +7,7 @@ module Xezat
|
|
|
7
7
|
class Make
|
|
8
8
|
def detect(variables)
|
|
9
9
|
Find.find(variables[:B]) do |file|
|
|
10
|
-
return true if file.end_with?(File::SEPARATOR
|
|
10
|
+
return true if file.end_with?("#{File::SEPARATOR}Makefile", "#{File::SEPARATOR}makefile")
|
|
11
11
|
end
|
|
12
12
|
File.foreach(File.join(variables[:top], variables[:cygportfile])) do |line|
|
|
13
13
|
return true if line.index('cygmake')
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Xezat
|
|
4
|
+
module Detector
|
|
5
|
+
class Nasm
|
|
6
|
+
def detect(variables)
|
|
7
|
+
if variables.key?(:_meson_CYGCLASS_)
|
|
8
|
+
File.foreach(File.join(variables[:S], 'meson.build')) do |line|
|
|
9
|
+
return true if line.include?("find_program('nasm')")
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
false
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
data/lib/xezat/detector/ninja.rb
CHANGED
|
@@ -11,11 +11,11 @@ module Xezat
|
|
|
11
11
|
Find.find(variables[:D]) do |file|
|
|
12
12
|
next unless file.end_with?('.py')
|
|
13
13
|
|
|
14
|
-
File.
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
14
|
+
first_line = File.readlines(file).first
|
|
15
|
+
return true if %r{^#!\s*/usr/bin/env\s*python2\s*$}.match?(first_line)
|
|
16
|
+
return true if %r{^#!\s*/usr/bin/env\s*python2.7\s*$}.match?(first_line)
|
|
17
|
+
return true if %r{^#!\s*/usr/bin/python2\s*$}.match?(first_line)
|
|
18
|
+
return true if %r{^#!\s*/usr/bin/python2.7\s*$}.match?(first_line)
|
|
19
19
|
end
|
|
20
20
|
false
|
|
21
21
|
end
|