expressir 1.2.10-x64-mingw32 → 1.3.0.pre.1-x64-mingw32

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 3e217b02dfe5e74d4c38acba8599dc6f9084f082e0dfa51b87fcbe825c6ad228
4
- data.tar.gz: 0e1452521be4021bcc3be5fe7f46498dd3477733c5ba378ca260e3fde1187ada
3
+ metadata.gz: 047672b67876bbfd0e329cec39e8bd4d6abe0c81afea7dbf3b88161ace5f6389
4
+ data.tar.gz: 2c8b2871eff511c8f53972f4a78d2100fdd2cca9f71a69e2e684f69f7e1fbb3d
5
5
  SHA512:
6
- metadata.gz: 9b55330392c9a08127b4acdb0b25f30b16018a837d3dc16ed52f573b593e90e5258e6659da61c4a0178935b35706f51ff1e71b748b7d26d6af7bcafce74cdd10
7
- data.tar.gz: b297a6f502fbb02b8816351b11ff32cf1a6109229c30fd236b6fc8a01aa85e7577b5426c89a1e4e5dff5aa69cd1ffe62e6b5fd822c3fcf6847cbe30d8514691e
6
+ metadata.gz: 06c946580f7412078f1a64481c5882214e428bba12b70617f37841433a4ab80a9357c29589d72b46ae7605b6115fad3c4785333bde49c6915afa378fe5275fd0
7
+ data.tar.gz: 8f7d6f4d4447b95821a37a1cd0c6d40758a726900a9fc1d46457a7e34d8b37bcd9e7ad5397a54ebb6c211580bdb5848d3fd666c5bb6ab4385455763191990755
@@ -3,7 +3,14 @@ name: rake
3
3
  on:
4
4
  push:
5
5
  branches: [ master, main ]
6
+ paths-ignore:
7
+ - 'docs/**'
8
+ - '**.adoc'
9
+ - '**.md'
10
+ - .github/workflows/alpine.yml
11
+ - .github/workflows/release.yml
6
12
  pull_request:
13
+ workflow_dispatch:
7
14
 
8
15
  concurrency:
9
16
  group: '${{ github.workflow }}-${{ github.job }}-${{ github.head_ref || github.ref_name }}'
@@ -69,7 +76,7 @@ jobs:
69
76
  id: cache
70
77
  with:
71
78
  path: lib/expressir/express/express_parser.*
72
- key: v4-${{ runner.os }}-${{ matrix.ruby }}-${{ hashFiles('ext/express-parser/extconf.rb', 'ext/express-parser/antlrgen/**', 'ext/express-parser/express_parser.cpp', '.git/modules/ext/express-parser/antlr4-upstream/HEAD') }}
79
+ key: v4-${{ matrix.os }}-${{ matrix.ruby }}-${{ hashFiles('ext/express-parser/extconf.rb', 'ext/express-parser/antlrgen/**', 'ext/express-parser/express_parser.cpp', '.git/modules/ext/express-parser/antlr4-upstream/HEAD') }}
73
80
 
74
81
  - name: Build native extension
75
82
  if: steps.cache.outputs.cache-hit != 'true'
@@ -114,7 +121,7 @@ jobs:
114
121
  strategy:
115
122
  fail-fast: false
116
123
  matrix:
117
- host: [ linux, windows, darwin ]
124
+ platform: [ linux-gnu, windows, darwin ]
118
125
  steps:
119
126
  - name: Checkout
120
127
  uses: actions/checkout@v4
@@ -141,12 +148,12 @@ jobs:
141
148
  sudo swapon --all --verbose
142
149
 
143
150
  - name: Build gem with native extension
144
- run: bundle exec rake gem:${{ matrix.host }}
151
+ run: bundle exec rake gem:${{ matrix.platform }}
145
152
 
146
153
  - name: Package gem with native extension
147
154
  uses: actions/upload-artifact@v3
148
155
  with:
149
- name: pkg-${{ matrix.host }}
156
+ name: pkg-${{ matrix.platform }}
150
157
  path: pkg/*.gem
151
158
 
152
159
  verify-ruby:
@@ -227,8 +234,8 @@ jobs:
227
234
  ruby bin/rspec
228
235
  cat .rspec_status || echo ".rspec_status was not found"
229
236
 
230
- verify-linux:
231
- name: verify Linux binary gem on ruby-${{ matrix.ruby }}
237
+ verify-linux-gnu:
238
+ name: verify Linux (gnu) binary gem on ruby-${{ matrix.ruby }}
232
239
  needs: pack
233
240
  runs-on: ubuntu-latest
234
241
  strategy:
@@ -252,11 +259,11 @@ jobs:
252
259
  - name: Download packaged gem
253
260
  uses: actions/download-artifact@v3
254
261
  with:
255
- name: pkg-linux
262
+ name: pkg-linux-gnu
256
263
  path: pkg
257
264
 
258
265
  - name: Install binary gem
259
- run: gem install -l pkg/expressir-*-$(ruby -e "puts RUBY_PLATFORM").gem
266
+ run: gem install -l pkg/expressir-*-$(ruby -e "puts RUBY_PLATFORM")-gnu.gem
260
267
 
261
268
  - name: Verify
262
269
  run: |
@@ -30,8 +30,8 @@ jobs:
30
30
 
31
31
  - if: ${{ github.event_name == 'workflow_dispatch' }} # unfortunatelly cannot keep this condition on job level
32
32
  run: |
33
- git config user.name github-actions
34
- git config user.email github-actions@github.com
33
+ git config --global user.name github-actions
34
+ git config --global user.email github-actions@github.com
35
35
  gem install gem-release
36
36
  gem bump --version ${{ github.event.inputs.next_version }} --tag --push
37
37
 
@@ -41,12 +41,11 @@ jobs:
41
41
  strategy:
42
42
  fail-fast: false
43
43
  matrix:
44
- host: [ linux, windows, darwin ]
44
+ platform: [ linux-gnu, windows, darwin ]
45
45
  steps:
46
46
  - uses: actions/checkout@v4
47
47
  with:
48
48
  submodules: recursive
49
- ref: main # https://github.com/actions/checkout/issues/439#issuecomment-830862188
50
49
 
51
50
  - uses: ruby/setup-ruby@master
52
51
  with:
@@ -59,7 +58,7 @@ jobs:
59
58
  # build gem WITHOUT pre-built native extension
60
59
  - run: gem build expressir.gemspec
61
60
 
62
- - if: matrix.host == 'linux'
61
+ - if: matrix.platform == 'linux-gnu'
63
62
  uses: actions/upload-artifact@v3
64
63
  with:
65
64
  name: pkg-ruby
@@ -74,11 +73,11 @@ jobs:
74
73
  sudo swapon --all --verbose
75
74
 
76
75
  # build gem WITH pre-built native extension
77
- - run: bundle exec rake gem:${{ matrix.host }}
76
+ - run: bundle exec rake gem:${{ matrix.platform }}
78
77
 
79
78
  - uses: actions/upload-artifact@v3
80
79
  with:
81
- name: pkg-${{ matrix.host }}
80
+ name: pkg-${{ matrix.platform }}
82
81
  path: pkg/*.gem
83
82
 
84
83
  publish:
@@ -92,7 +91,7 @@ jobs:
92
91
 
93
92
  - uses: actions/download-artifact@v3
94
93
  with:
95
- name: pkg-linux
94
+ name: pkg-linux-gnu
96
95
  path: pkg
97
96
 
98
97
  - uses: actions/download-artifact@v3
data/Rakefile CHANGED
@@ -6,7 +6,7 @@ require "yard"
6
6
 
7
7
  RSpec::Core::RakeTask.new(:spec)
8
8
 
9
- task default: :spec
9
+ task default: %i[compile spec]
10
10
 
11
11
  GEMSPEC = Gem::Specification.load("expressir.gemspec")
12
12
 
data/expressir.gemspec CHANGED
@@ -6,7 +6,7 @@ Gem::Specification.new do |spec|
6
6
  spec.name = "expressir"
7
7
  spec.version = Expressir::VERSION
8
8
  spec.authors = ["Ribose Inc."]
9
- spec.email = ["open.source@ribose.com'"]
9
+ spec.email = ["open.source@ribose.com"]
10
10
 
11
11
  spec.summary = "ISO EXPRESS parser and tools in Ruby."
12
12
  spec.description = "Expressir (“EXPRESS in Ruby”) is a Ruby parser for EXPRESS and a set of Ruby tools for accessing ISO EXPRESS data models."
@@ -30,7 +30,7 @@ Gem::Specification.new do |spec|
30
30
 
31
31
  spec.extensions = File.join(*%w(ext express-parser extconf.rb))
32
32
 
33
- spec.add_runtime_dependency "rice", "~> 4.0.3"
33
+ spec.add_runtime_dependency "rice", "~> 4.1"
34
34
  spec.add_runtime_dependency "thor", "~> 1.0"
35
35
  spec.add_development_dependency "antlr4-native", "~> 2.1.0"
36
36
  spec.add_development_dependency "asciidoctor", "~> 2.0.13"
@@ -0,0 +1,30 @@
1
+ # frozen_string_literal: true
2
+
3
+ begin
4
+ # native precompiled gems package shared libraries in <gem_dir>/lib/nokogiri/<ruby_version>
5
+ ::RUBY_VERSION =~ /(\d+\.\d+)/
6
+ require_relative "#{Regexp.last_match(1)}/express_parser"
7
+ rescue LoadError => e
8
+ # if /musl/.match?(RUBY_PLATFORM)
9
+ # warn(<<~EOM)
10
+ #
11
+ # ERROR: It looks like you're trying to use Expressir as a precompiled native gem on a musl system.
12
+ #
13
+ # #{e.message}
14
+ #
15
+ # If that's the case, then please install Expressir via the `ruby` platform gem:
16
+ # gem install expressir --platform=ruby
17
+ # or:
18
+ # bundle config set force_ruby_platform true
19
+ #
20
+ #
21
+ # EOM
22
+ # raise e
23
+ # end
24
+
25
+ # use "require" instead of "require_relative" because non-native gems will place C extension files
26
+ # in Gem::BasicSpecification#extension_dir after compilation (during normal installation), which
27
+ # is in $LOAD_PATH but not necessarily relative to this file
28
+ require "expressir/express/express_parser"
29
+ end
30
+
@@ -1,9 +1,4 @@
1
- begin
2
- RUBY_VERSION =~ /(\d+\.\d+)/
3
- require_relative "#{$1}/express_parser"
4
- rescue LoadError
5
- require_relative "express_parser"
6
- end
1
+ require_relative 'extension'
7
2
  require 'expressir/express/visitor'
8
3
  require 'expressir/express/resolve_references_model_visitor'
9
4
 
@@ -1,9 +1,4 @@
1
- begin
2
- RUBY_VERSION =~ /(\d+\.\d+)/
3
- require_relative "#{$1}/express_parser"
4
- rescue LoadError
5
- require_relative "express_parser"
6
- end
1
+ require_relative 'extension'
7
2
  require "expressir/model"
8
3
  require "set"
9
4
 
@@ -31,8 +26,6 @@ require "set"
31
26
  # - prevents segfault in ANTLR4 C++ runtime, not sure why they are caused
32
27
  # - e.g. see visit_schema_decl
33
28
 
34
- require 'objspace'
35
-
36
29
  module Expressir
37
30
  module Express
38
31
  class Visitor < ::ExpressParser::Visitor
@@ -1,3 +1,3 @@
1
1
  module Expressir
2
- VERSION = "1.2.10".freeze
2
+ VERSION = "1.3.0.pre.1".freeze
3
3
  end
@@ -48,7 +48,7 @@ def create_pp_class_definition(parser_source_lines)
48
48
 
49
49
  class ParserProxyExt : public Object {
50
50
  public:
51
- ParserProxyExt(Object self, string file) {
51
+ ParserProxyExt(string file) {
52
52
  ifstream stream;
53
53
  stream.open(file);
54
54
  input = new ANTLRInputStream(stream);
@@ -115,7 +115,7 @@ def create_class_api(parser_source_lines)
115
115
  .define_method("token_index", &TokenProxy::getTokenIndex);
116
116
 
117
117
  rb_cParserExt = define_class_under<ParserProxyExt>(rb_mExpressParser, "ParserExt")
118
- .define_constructor(Constructor<ParserProxyExt, Object, string>())
118
+ .define_constructor(Constructor<ParserProxyExt, string>())
119
119
  .define_method("syntax", &ParserProxyExt::syntax, Return().keepAlive())
120
120
  .define_method("tokens", &ParserProxyExt::getTokens)
121
121
  .define_method("visit", &ParserProxyExt::visit, Return().keepAlive());
@@ -2,7 +2,7 @@ require "rbconfig"
2
2
  require "shellwords"
3
3
 
4
4
  WINDOWS_PLATFORM_REGEX = /mingw|mswin/.freeze
5
- LINUX_PLATFORM_REGEX = /linux/.freeze
5
+ LINUX_GNU_PLATFORM_REGEX = /linux-gnu/.freeze
6
6
  DARWIN_PLATFORM_REGEX = /darwin/.freeze
7
7
  GLIBC_MIN_VERSION = "2.17".freeze
8
8
 
@@ -15,8 +15,8 @@ CrossRuby = Struct.new(:version, :host) do
15
15
  !!(platform =~ WINDOWS_PLATFORM_REGEX)
16
16
  end
17
17
 
18
- def linux?
19
- !!(platform =~ LINUX_PLATFORM_REGEX)
18
+ def linux_gnu?
19
+ !!(platform =~ LINUX_GNU_PLATFORM_REGEX)
20
20
  end
21
21
 
22
22
  def darwin?
@@ -59,10 +59,10 @@ CrossRuby = Struct.new(:version, :host) do
59
59
  else
60
60
  "x64-mingw32"
61
61
  end
62
- when /\Ax86_64.*linux/
63
- "x86_64-linux"
64
- when /\A(arm64|aarch64).*linux/
65
- "aarch64-linux"
62
+ when "x86_64-linux-gnu"
63
+ "x86_64-linux-gnu"
64
+ when "aarch64-linux-gnu"
65
+ "aarch64-linux-gnu"
66
66
  when /\Ax86_64-darwin/
67
67
  "x86_64-darwin"
68
68
  when /\Aarm64-darwin/
@@ -72,12 +72,24 @@ CrossRuby = Struct.new(:version, :host) do
72
72
  end
73
73
  end
74
74
 
75
+ def tag
76
+ @tag ||=
77
+ case platform
78
+ when "x86_64-linux-gnu"
79
+ "x86_64-linux"
80
+ when "aarch64-linux-gnu"
81
+ "aarch64-linux"
82
+ else
83
+ platform
84
+ end
85
+ end
86
+
75
87
  def tool(name)
76
88
  (@binutils_prefix ||=
77
89
  case platform
78
90
  when /x64-mingw(32|-ucrt)/
79
91
  "x86_64-w64-mingw32-"
80
- when /(x86_64|aarch64)-linux/
92
+ when /(x86_64|aarch64)-linux-gnu/
81
93
  # We do believe that we are on Linux and can use native tools
82
94
  ""
83
95
  when /x86_64.*darwin/
@@ -93,9 +105,9 @@ CrossRuby = Struct.new(:version, :host) do
93
105
  case platform
94
106
  when /64-mingw(32|-ucrt)/
95
107
  "pei-x86-64"
96
- when "x86_64-linux"
108
+ when "x86_64-linux-gnu"
97
109
  "elf64-x86-64"
98
- when "aarch64-linux"
110
+ when "aarch64-linux-gnu"
99
111
  "elf64-little"
100
112
  when "x86_64-darwin"
101
113
  "Mach-O 64-bit x86-64"
@@ -142,7 +154,7 @@ CrossRuby = Struct.new(:version, :host) do
142
154
  case platform
143
155
  when WINDOWS_PLATFORM_REGEX
144
156
  verify_entry_windows(dump, dll)
145
- when LINUX_PLATFORM_REGEX
157
+ when LINUX_GNU_PLATFORM_REGEX
146
158
  verify_entry_linux(dll)
147
159
  when DARWIN_PLATFORM_REGEX
148
160
  verify_entry_darwin(dll)
@@ -188,7 +200,7 @@ CrossRuby = Struct.new(:version, :host) do
188
200
  end
189
201
 
190
202
  def allowed_dlls_linux
191
- suffix = (platform == "x86_64-linux" ? "x86-64" : "aarch64")
203
+ suffix = (platform == "x86_64-linux-gnu" ? "x86-64" : "aarch64")
192
204
  [
193
205
  "ld-linux-#{suffix}.so",
194
206
  "libc.so",
@@ -210,7 +222,7 @@ CrossRuby = Struct.new(:version, :host) do
210
222
  case platform
211
223
  when WINDOWS_PLATFORM_REGEX
212
224
  allowed_dlls_windows
213
- when LINUX_PLATFORM_REGEX
225
+ when LINUX_GNU_PLATFORM_REGEX
214
226
  allowed_dlls_linux
215
227
  when DARWIN_PLATFORM_REGEX
216
228
  allowed_dlls_darwin
@@ -236,7 +248,7 @@ CrossRuby = Struct.new(:version, :host) do
236
248
  case platform
237
249
  when DARWIN_PLATFORM_REGEX
238
250
  actual_dlls_darwin(dll)
239
- when LINUX_PLATFORM_REGEX
251
+ when LINUX_GNU_PLATFORM_REGEX
240
252
  actual_dlls_linux(dump)
241
253
  when WINDOWS_PLATFORM_REGEX
242
254
  actual_dlls_windows(dump)
@@ -291,7 +303,7 @@ def verify_dll(dll, cross_ruby)
291
303
  cross_ruby.verify_imports(dump, dll)
292
304
  # Not sure if it is required, probably not
293
305
  # I am keeping related code as a reference for future advances
294
- # cross_ruby.verify_glibc_version(dump, dll) if cross_ruby.linux?
306
+ # cross_ruby.verify_glibc_version(dump, dll) if cross_ruby.linux_gnu?
295
307
 
296
308
  puts "#{dll}: passed shared library sanity checks"
297
309
  end
@@ -315,7 +327,7 @@ UBUNTU_PREREQ = "sudo apt-get update -y && sudo apt-get install -y automake auto
315
327
 
316
328
  def pre_req(plat)
317
329
  case plat
318
- when /\linux/
330
+ when /linux/
319
331
  "if [[ $(awk -F= '/^NAME/{print $2}' /etc/os-release) == '\"Ubuntu\"' ]]; then #{UBUNTU_PREREQ}; else #{REDHAT_PREREQ}; fi"
320
332
  else
321
333
  UBUNTU_PREREQ.to_s
@@ -323,14 +335,16 @@ def pre_req(plat)
323
335
  end
324
336
 
325
337
  namespace "gem" do
326
- CROSS_RUBIES.find_all { |cr| cr.windows? || cr.linux? || cr.darwin? }.map(&:platform).uniq.each do |plat|
338
+ CROSS_RUBIES.find_all { |cr| cr.windows? || cr.linux_gnu? || cr.darwin? }.map { |cr| { platform: cr.platform, tag: cr.tag } }
339
+ .uniq { |hash| hash[:platform] }.each do |hash|
340
+ plat = hash[:platform]
341
+ tag = hash[:tag]
327
342
  desc "build native gem for #{plat} platform"
328
343
  task plat do
329
- RakeCompilerDock.sh <<~RCD, platform: plat
344
+ RakeCompilerDock.sh <<~RCD, platform: tag
330
345
  #{pre_req(plat)} &&
331
346
  gem install bundler --no-document &&
332
- bundle &&
333
- bundle exec rake gem:#{plat}:builder MAKE="nice make -j`nproc`"
347
+ bundle && bundle exec rake gem:#{plat}:builder MAKE="nice make -j`nproc`"
334
348
  RCD
335
349
  end
336
350
 
@@ -346,7 +360,7 @@ namespace "gem" do
346
360
  multitask "windows" => CROSS_RUBIES.find_all(&:windows?).map(&:platform).uniq
347
361
 
348
362
  desc "build native gems for linux"
349
- multitask "linux" => CROSS_RUBIES.find_all(&:linux?).map(&:platform).uniq
363
+ multitask "linux-gnu" => CROSS_RUBIES.find_all(&:linux_gnu?).map(&:platform).uniq
350
364
 
351
365
  desc "build native gems for darwin"
352
366
  multitask "darwin" => CROSS_RUBIES.find_all(&:darwin?).map(&:platform).uniq
@@ -361,6 +375,7 @@ Rake::ExtensionTask.new("express_parser", GEMSPEC) do |ext|
361
375
  ext.cross_compile = true
362
376
  ext.cross_platform = CROSS_RUBIES.map(&:platform).uniq
363
377
  ext.cross_config_options << "--enable-cross-build"
378
+
364
379
  ext.cross_compiling do |spec|
365
380
  spec.files.reject! { |path| File.fnmatch?("ext/*", path) }
366
381
  spec.dependencies.reject! { |dep| dep.name == "rice" }
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: expressir
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.10
4
+ version: 1.3.0.pre.1
5
5
  platform: x64-mingw32
6
6
  authors:
7
7
  - Ribose Inc.
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-12-11 00:00:00.000000000 Z
11
+ date: 2023-12-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: thor
@@ -209,7 +209,7 @@ dependencies:
209
209
  description: Expressir (“EXPRESS in Ruby”) is a Ruby parser for EXPRESS and a set
210
210
  of Ruby tools for accessing ISO EXPRESS data models.
211
211
  email:
212
- - open.source@ribose.com'
212
+ - open.source@ribose.com
213
213
  executables:
214
214
  - expressir
215
215
  extensions: []
@@ -243,6 +243,7 @@ files:
243
243
  - lib/expressir/express/2.7/express_parser.so
244
244
  - lib/expressir/express/3.0/express_parser.so
245
245
  - lib/expressir/express/cache.rb
246
+ - lib/expressir/express/extension.rb
246
247
  - lib/expressir/express/formatter.rb
247
248
  - lib/expressir/express/hyperlink_formatter.rb
248
249
  - lib/expressir/express/model_visitor.rb
@@ -377,9 +378,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
377
378
  version: 3.1.dev
378
379
  required_rubygems_version: !ruby/object:Gem::Requirement
379
380
  requirements:
380
- - - ">="
381
+ - - ">"
381
382
  - !ruby/object:Gem::Version
382
- version: '0'
383
+ version: 1.3.1
383
384
  requirements: []
384
385
  rubygems_version: 3.3.26
385
386
  signing_key: