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

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: 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: