origen 0.60.18 → 0.60.20

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: a68d3ec07f5d39ca0b395d5571407c64bbccc2d541e4b492163f42dfe56e2ac0
4
- data.tar.gz: 12bf4962bbd86f588a0a02cb7885c142d354555255d913c2ca96a156a75569e0
3
+ metadata.gz: c0ff67408cee3aae35f1f237df9b56f59671e4fded6ec18801b5add83850ec40
4
+ data.tar.gz: ac44e4e681cb14cb8d5cef023dff12f0430365bfc0e4dc73fbcd4f5a63615634
5
5
  SHA512:
6
- metadata.gz: 00dec76088c4bf7a5586d1adb924a81b25707183e4e21039b8e1baee2635ad4b291de83d40b58c93d06d41fe981c252d8892684898cd9af7c354239e2e7ee6b4
7
- data.tar.gz: d5f6bc75637d545ab18a91f371655ffbfb2681fd5e69b5257c5bee27e3a37480207d3f43bc6024b879034870712b7d00da5ae017fa8f9a848f1b1dc5461efe61
6
+ metadata.gz: 8c9f687da5d64f04da00bf588c4683694a8bdc2567c2f7714a846dbad755dfb2e7afc91e4af0c8eb26e5535d74c534049998f17a16dd766b387383d0da8bfb3a
7
+ data.tar.gz: 51393f786f377c74bf4b8251fcc908720e2387f15409ac0392fcc58a9d7d65da0eb61cf7562c160e5aba60cc7b29a36e439893cef56c5eea1d24420f16899bd6
data/config/version.rb CHANGED
@@ -1,7 +1,7 @@
1
1
  module Origen
2
2
  MAJOR = 0
3
3
  MINOR = 60
4
- BUGFIX = 18
4
+ BUGFIX = 20
5
5
  DEV = nil
6
6
  VERSION = [MAJOR, MINOR, BUGFIX].join(".") + (DEV ? ".pre#{DEV}" : '')
7
7
  end
@@ -91,8 +91,8 @@ module Origen
91
91
  @proceed_with_pattern = ->(_name) { true }
92
92
  @erb_trim_mode = '%'
93
93
  @referenced_pattern_list = -> { "#{Origen.root}/list/referenced.list" }
94
- @copy_command = -> { Origen.running_on_windows? ? 'copy' : 'cp' }
95
- @diff_command = -> { Origen.running_on_windows? ? 'start winmerge' : 'tkdiff' }
94
+ @copy_command = -> { Origen.session.user[:copy_command] || (Origen.running_on_windows? ? 'copy' : 'cp') }
95
+ @diff_command = -> { Origen.session.user[:diff_command] || (Origen.running_on_windows? ? 'start winmerge' : 'tkdiff') }
96
96
  @imports = []
97
97
  @imports_dev = []
98
98
  @external_app_dirs = []
@@ -12,7 +12,12 @@ module Origen
12
12
  # If this object has been instantiated after on_create has already been called,
13
13
  # then invoke it now
14
14
  if Origen.app.on_create_called?
15
- on_create if respond_to?(:on_create)
15
+ if respond_to?(:on_create)
16
+ unless @_on_create_called
17
+ @_on_create_called = true
18
+ on_create
19
+ end
20
+ end
16
21
  end
17
22
  end
18
23
  end
@@ -104,8 +104,13 @@ module Origen
104
104
 
105
105
  def load_from_file
106
106
  s = nil
107
- File.open(file.to_s) do |f|
108
- s = Marshal.load(f)
107
+ begin
108
+ File.open(file.to_s) do |f|
109
+ s = Marshal.load(f)
110
+ end
111
+ rescue
112
+ Origen.log.error "Failed to load session file: #{file}"
113
+ Origen.log.error 'This can happen if the file has been corrupted, please delete it and try again'
109
114
  end
110
115
  s
111
116
  end
data/lib/origen/loader.rb CHANGED
@@ -124,16 +124,6 @@ module Origen
124
124
  model = model.model # Ensure we have a handle on the model and not its controller
125
125
  loaded = nil
126
126
 
127
- if options[:inherit]
128
- # pass down any bugs/features from the inherited block class
129
- unless options[:disable_bug_inheritance]
130
- model.class.instance_variable_set(:@bugs, options[:inherit].constantize.bugs.merge(model.class.bugs))
131
- end
132
- unless options[:disable_feature_inheritance]
133
- model.class.instance_variable_set(:@features, options[:inherit].constantize.features.merge(model.class.features))
134
- end
135
- end
136
-
137
127
  if local_app = options[:app] || model.app
138
128
  if options[:path]
139
129
  local_full_paths = Array(options[:path])
@@ -143,6 +133,8 @@ module Origen
143
133
  local_full_paths = [local_full_paths.join('/')]
144
134
  end
145
135
  app_paths_map = { local_app => local_full_paths }
136
+ inherit_app = nil
137
+ inherited_sub_blocks_files = []
146
138
  if options[:inherit]
147
139
  # update app_paths_map with the relevant inherited files
148
140
  inherit_full_paths = options[:inherit].split('::')
@@ -179,6 +171,9 @@ module Origen
179
171
  app.blocks_files[key][type].each do |f|
180
172
  if type == :attributes
181
173
  success = load_attributes(f, model)
174
+ elsif type == :sub_blocks && app == inherit_app
175
+ # handle inherited sub blocks later
176
+ inherited_sub_blocks_files << f
182
177
  else
183
178
  success = load_block_file(f, model)
184
179
  end
@@ -203,7 +198,36 @@ module Origen
203
198
  end
204
199
  end
205
200
  end
201
+
202
+ # Now load the inherited sub blocks, but don't override any existing sub blocks this model has already defined
203
+ inherited_sub_blocks_files.each do |f|
204
+ model.instance_variable_set(:@_inherited_sub_blocks_mode, true)
205
+ load_block_file(f, model)
206
+ model.instance_variable_set(:@_inherited_sub_blocks_mode, false)
207
+ end
206
208
  end
209
+
210
+ # pass down any bugs/features from the inherited block class
211
+ if options[:inherit]
212
+ inherited_ancestors = options[:inherit].constantize.ancestors
213
+ inherited_features = inherited_ancestors.map do |a|
214
+ a.respond_to?(:features) ? a.features : {}
215
+ end
216
+ inherited_features = inherited_features.reject(&:empty?).reverse.reduce({}, :merge)
217
+
218
+ inherited_bugs = inherited_ancestors.map do |a|
219
+ a.respond_to?(:bugs) ? a.bugs : {}
220
+ end
221
+ inherited_bugs = inherited_bugs.reject(&:empty?).reverse.reduce({}, :merge)
222
+
223
+ unless options[:disable_feature_inheritance]
224
+ model.class.instance_variable_set(:@features, inherited_features.merge(model.class.features))
225
+ end
226
+ unless options[:disable_bug_inheritance]
227
+ model.class.instance_variable_set(:@bugs, inherited_bugs.merge(model.class.bugs))
228
+ end
229
+ end
230
+
207
231
  loaded
208
232
  end
209
233
 
@@ -68,10 +68,20 @@ module Origen
68
68
  if x.try(:is_a_model_and_controller)
69
69
  m = x.model
70
70
  c = x.controller
71
- m.on_create if m.respond_to_directly?(:on_create)
71
+ if m.respond_to_directly?(:on_create)
72
+ unless m_on_create_called = m.instance_variable_get(:@_on_create_called)
73
+ m.instance_variable_set(:@_on_create_called, true)
74
+ m.on_create
75
+ end
76
+ end
72
77
  c.on_create if c.respond_to_directly?(:on_create)
73
78
  else
74
- x.on_create if x.respond_to?(:on_create)
79
+ if x.respond_to?(:on_create)
80
+ unless x_on_create_called = x.instance_variable_get(:@_on_create_called)
81
+ x.instance_variable_set(:@_on_create_called, true)
82
+ x.on_create
83
+ end
84
+ end
75
85
  end
76
86
  end
77
87
  if is_top_level
@@ -296,6 +296,10 @@ module Origen
296
296
  return sub_block(name.class)
297
297
  end
298
298
 
299
+ if sub_blocks[name] && model.instance_variable_get(:@_inherited_sub_blocks_mode)
300
+ return
301
+ end
302
+
299
303
  if i = options.delete(:instances)
300
304
  # permit creating multiple instances of a particular sub_block class
301
305
  # can pass array for base_address, which will be processed above
@@ -8,18 +8,24 @@ Gem::Specification.new do |s|
8
8
  s.required_rubygems_version = Gem::Requirement.new(">= 1.8.11".freeze) if s.respond_to? :required_rubygems_version=
9
9
  s.require_paths = ["lib".freeze]
10
10
  s.authors = ["Stephen McGinty".freeze]
11
- s.date = "2024-10-29"
11
+ s.date = "2025-05-28"
12
12
  s.email = ["stephen.f.mcginty@gmail.com".freeze]
13
13
  s.files = ["bin/boot.rb".freeze, "config/application.rb".freeze, "config/boot.rb".freeze, "config/commands.rb".freeze, "config/shared_commands.rb".freeze, "config/version.rb".freeze, "lib/origen_app_generators.rb".freeze, "lib/origen_app_generators/application.rb".freeze, "lib/origen_app_generators/base.rb".freeze, "lib/origen_app_generators/empty_application.rb".freeze, "lib/origen_app_generators/empty_plugin.rb".freeze, "lib/origen_app_generators/new.rb".freeze, "lib/origen_app_generators/new_app_tests.rb".freeze, "lib/origen_app_generators/origen_infrastructure/app_generator_plugin.rb".freeze, "lib/origen_app_generators/plugin.rb".freeze, "lib/origen_app_generators/test_engineering/common.rb".freeze, "lib/origen_app_generators/test_engineering/stand_alone_application.rb".freeze, "lib/origen_app_generators/test_engineering/test_block.rb".freeze, "templates/app_generators".freeze, "templates/app_generators/application".freeze, "templates/app_generators/application/.gitignore".freeze, "templates/app_generators/application/.irbrc".freeze, "templates/app_generators/application/.rspec".freeze, "templates/app_generators/application/.travis.yml".freeze, "templates/app_generators/application/Gemfile".freeze, "templates/app_generators/application/Rakefile".freeze, "templates/app_generators/application/app".freeze, "templates/app_generators/application/app/blocks".freeze, "templates/app_generators/application/app/blocks/top_level.rb".freeze, "templates/app_generators/application/app/lib".freeze, "templates/app_generators/application/app/lib/module.rb".freeze, "templates/app_generators/application/app/templates".freeze, "templates/app_generators/application/app/templates/web".freeze, "templates/app_generators/application/app/templates/web/index.md.erb".freeze, "templates/app_generators/application/app/templates/web/layouts".freeze, "templates/app_generators/application/app/templates/web/layouts/_basic.html.erb".freeze, "templates/app_generators/application/app/templates/web/partials".freeze, "templates/app_generators/application/app/templates/web/partials/_navbar.html.erb".freeze, "templates/app_generators/application/app/templates/web/release_notes.md.erb".freeze, "templates/app_generators/application/config".freeze, "templates/app_generators/application/config/application.rb".freeze, "templates/app_generators/application/config/boot.rb".freeze, "templates/app_generators/application/config/commands.rb".freeze, "templates/app_generators/application/config/maillist_dev.txt".freeze, "templates/app_generators/application/config/maillist_prod.txt".freeze, "templates/app_generators/application/config/version.rb".freeze, "templates/app_generators/application/doc".freeze, "templates/app_generators/application/doc/history".freeze, "templates/app_generators/application/dot_keep".freeze, "templates/app_generators/application/origen_core_session".freeze, "templates/app_generators/application/spec".freeze, "templates/app_generators/application/spec/spec_helper.rb".freeze, "templates/app_generators/application/target".freeze, "templates/app_generators/application/target/debug.rb".freeze, "templates/app_generators/application/target/default.rb".freeze, "templates/app_generators/application/target/production.rb".freeze, "templates/app_generators/new".freeze, "templates/app_generators/new/generator.rb".freeze, "templates/app_generators/new/info.md.erb".freeze, "templates/app_generators/origen_infrastructure".freeze, "templates/app_generators/origen_infrastructure/app_generator_plugin".freeze, "templates/app_generators/origen_infrastructure/app_generator_plugin/app".freeze, "templates/app_generators/origen_infrastructure/app_generator_plugin/app/lib".freeze, "templates/app_generators/origen_infrastructure/app_generator_plugin/app/lib/application.rb".freeze, "templates/app_generators/origen_infrastructure/app_generator_plugin/app/lib/base.rb".freeze, "templates/app_generators/origen_infrastructure/app_generator_plugin/app/lib/module.rb".freeze, "templates/app_generators/origen_infrastructure/app_generator_plugin/app/lib/plugin.rb".freeze, "templates/app_generators/origen_infrastructure/app_generator_plugin/config".freeze, "templates/app_generators/origen_infrastructure/app_generator_plugin/config/load_generators.rb".freeze, "templates/app_generators/plugin".freeze, "templates/app_generators/plugin/Gemfile".freeze, "templates/app_generators/plugin/Rakefile".freeze, "templates/app_generators/plugin/app".freeze, "templates/app_generators/plugin/app/templates".freeze, "templates/app_generators/plugin/app/templates/web".freeze, "templates/app_generators/plugin/app/templates/web/index.md.erb".freeze, "templates/app_generators/plugin/app/templates/web/partials".freeze, "templates/app_generators/plugin/app/templates/web/partials/_navbar_external.html.erb".freeze, "templates/app_generators/plugin/app/templates/web/partials/_navbar_internal.html.erb".freeze, "templates/app_generators/plugin/config".freeze, "templates/app_generators/plugin/config/boot.rb".freeze, "templates/app_generators/plugin/gemspec.rb".freeze, "templates/app_generators/test_engineering".freeze, "templates/app_generators/test_engineering/environment".freeze, "templates/app_generators/test_engineering/environment/j750.rb".freeze, "templates/app_generators/test_engineering/environment/uflex.rb".freeze, "templates/app_generators/test_engineering/environment/v93k.rb".freeze, "templates/app_generators/test_engineering/stand_alone_application".freeze, "templates/app_generators/test_engineering/stand_alone_application/.keep".freeze, "templates/app_generators/test_engineering/test_block".freeze, "templates/app_generators/test_engineering/test_block/.keep".freeze]
14
14
  s.homepage = "http://origen-sdk.org/origen_app_generators".freeze
15
15
  s.licenses = ["MIT".freeze]
16
16
  s.required_ruby_version = Gem::Requirement.new(">= 1.9.3".freeze)
17
- s.rubygems_version = "3.4.10".freeze
17
+ s.rubygems_version = "3.1.6".freeze
18
18
  s.summary = "Origen application generators".freeze
19
19
 
20
- s.installed_by_version = "3.4.10" if s.respond_to? :installed_by_version
20
+ s.installed_by_version = "3.1.6" if s.respond_to? :installed_by_version
21
21
 
22
- s.specification_version = 4
22
+ if s.respond_to? :specification_version then
23
+ s.specification_version = 4
24
+ end
23
25
 
24
- s.add_runtime_dependency(%q<origen>.freeze, [">= 0.40.2"])
26
+ if s.respond_to? :add_runtime_dependency then
27
+ s.add_runtime_dependency(%q<origen>.freeze, [">= 0.40.2"])
28
+ else
29
+ s.add_dependency(%q<origen>.freeze, [">= 0.40.2"])
30
+ end
25
31
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: origen
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.60.18
4
+ version: 0.60.20
5
5
  platform: ruby
6
6
  authors:
7
7
  - Stephen McGinty
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2025-01-13 00:00:00.000000000 Z
11
+ date: 2025-05-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -346,7 +346,7 @@ dependencies:
346
346
  - - ">="
347
347
  - !ruby/object:Gem::Version
348
348
  version: '0'
349
- description:
349
+ description:
350
350
  email:
351
351
  - stephen.f.mcginty@gmail.com
352
352
  executables:
@@ -716,7 +716,7 @@ homepage: https://origen-sdk.org
716
716
  licenses:
717
717
  - MIT
718
718
  metadata: {}
719
- post_install_message:
719
+ post_install_message:
720
720
  rdoc_options: []
721
721
  require_paths:
722
722
  - lib
@@ -731,8 +731,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
731
731
  - !ruby/object:Gem::Version
732
732
  version: 1.8.11
733
733
  requirements: []
734
- rubygems_version: 3.4.10
735
- signing_key:
734
+ rubygems_version: 3.1.6
735
+ signing_key:
736
736
  specification_version: 4
737
737
  summary: The Semiconductor Developer's Kit
738
738
  test_files: []