origen 0.59.8 → 0.60.0
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/config/commands.rb +1 -1
- data/config/version.rb +2 -2
- data/lib/origen/loader.rb +54 -41
- data/lib/origen/model_initializer.rb +1 -1
- data/lib/origen/sub_blocks.rb +56 -3
- data/origen_app_generators/origen_app_generators.gemspec +3 -3
- metadata +5 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7b89041bc7a6067a7945d3b9cae3415771f2a270c3f6496a217d8b27916c2211
|
4
|
+
data.tar.gz: a6c3ac53db78a810b77c0cb23c99fdb1d35fd05ec451c658f710c2501822bd03
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c2d17382ac902d0391e7d2f748e5166ff6264ba2c10529b72dc5074bbb33aab30e4558e495082221a29e7365e483e2cc8f7e2517d229200519a5bef9cf1b27e8
|
7
|
+
data.tar.gz: 66b8c763603a908bab112da936042f6e6e127b961acc52ba06d2d1e2b2d783d28480dda944d9dfd7fdadb24f3a98aa30a1f065fff069d37ea6d9213f4d64ff9e
|
data/config/commands.rb
CHANGED
@@ -17,7 +17,7 @@ when "tags"
|
|
17
17
|
when "specs"
|
18
18
|
Origen.app.session.origen_core[:mode] = 'debug'
|
19
19
|
require "rspec"
|
20
|
-
exit RSpec::Core::Runner.run(['spec'])
|
20
|
+
exit RSpec::Core::Runner.run($ARGV.empty? ? ['spec'] : $ARGV)
|
21
21
|
|
22
22
|
when "examples", "test"
|
23
23
|
Origen.app.session.origen_core[:mode] = 'debug'
|
data/config/version.rb
CHANGED
data/lib/origen/loader.rb
CHANGED
@@ -116,62 +116,75 @@ module Origen
|
|
116
116
|
|
117
117
|
# If a block definition exists for the given model, then this will load it and apply it to
|
118
118
|
# the model.
|
119
|
+
# if options[:inherit] is passed, it will first try to load the files for the class name contained
|
120
|
+
# in that option, even if its from a plugin app
|
119
121
|
# Returns true if a model is found and loaded, otherwise nil.
|
120
122
|
def self.load_block(model, options = {})
|
121
123
|
model = model.model # Ensure we have a handle on the model and not its controller
|
122
124
|
loaded = nil
|
123
|
-
if
|
125
|
+
if local_app = options[:app] || model.app
|
124
126
|
if options[:path]
|
125
|
-
|
127
|
+
local_full_paths = Array(options[:path])
|
126
128
|
else
|
127
|
-
|
128
|
-
|
129
|
-
|
129
|
+
local_full_paths = model.class.to_s.split('::')
|
130
|
+
local_full_paths.shift # Throw away the app namespace
|
131
|
+
local_full_paths = [local_full_paths.join('/')]
|
130
132
|
end
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
133
|
+
app_paths_map = { local_app => local_full_paths }
|
134
|
+
if options[:inherit]
|
135
|
+
inherit_full_paths = options[:inherit].split('::')
|
136
|
+
inherit_app = Origen.app(inherit_full_paths.shift.underscore.to_sym)
|
137
|
+
inherit_full_paths = [inherit_full_paths.join('/')]
|
138
|
+
# merge to get inherit ordered in the beginning
|
139
|
+
app_paths_map = { inherit_app => inherit_full_paths }.merge(app_paths_map)
|
140
|
+
end
|
141
|
+
# load the inherit files, then the current app's block files
|
142
|
+
app_paths_map.each do |app, full_paths|
|
143
|
+
full_paths.each do |full_path|
|
144
|
+
paths = full_path.to_s.split('/')
|
145
|
+
key = ''
|
146
|
+
only = Array(options[:only]) if options[:only]
|
147
|
+
except = Array(options[:except]) if options[:except]
|
148
|
+
path = paths.map(&:underscore).join('/')
|
149
|
+
# If the path refers to a nested sub-block then don't load the full hierarchy since they
|
150
|
+
# don't support inheritance or derivatives, modify the paths array so that only the sub-block
|
151
|
+
# level will be loaded and nothing else.
|
152
|
+
paths = [path] if app.blocks_files[path] && app.blocks_files[path][:_sub_block]
|
153
|
+
# These will be loaded first, followed by the rest in an undefined order.
|
154
|
+
# Attributes and parameters are first so that they may be referenced in the other files.
|
155
|
+
# Sub-blocks was added early due to a corner case issue that could be encountered if the pins or
|
156
|
+
# regs imported an Origen exported file that defined a module with the same name as a sub-block
|
157
|
+
# class, in that case the sub-block class would not be auto-loaded.
|
158
|
+
load_first = [:attributes, :parameters, :sub_blocks]
|
147
159
|
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
160
|
+
load_first.each do |type|
|
161
|
+
unless (only && !only.include?(type)) || (except && except.include?(type))
|
162
|
+
with_parameters_transaction(type) do
|
163
|
+
paths.each_with_index do |path, i|
|
164
|
+
key = i == 0 ? path.underscore : "#{key}/#{path.underscore}"
|
165
|
+
if app.blocks_files[key] && app.blocks_files[key][type]
|
166
|
+
app.blocks_files[key][type].each do |f|
|
167
|
+
if type == :attributes
|
168
|
+
success = load_attributes(f, model)
|
169
|
+
else
|
170
|
+
success = load_block_file(f, model)
|
171
|
+
end
|
172
|
+
loaded ||= success
|
159
173
|
end
|
160
|
-
loaded ||= success
|
161
174
|
end
|
162
175
|
end
|
163
176
|
end
|
164
177
|
end
|
165
178
|
end
|
166
|
-
end
|
167
179
|
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
180
|
+
# Now load the rest
|
181
|
+
paths.each_with_index do |path, i|
|
182
|
+
key = i == 0 ? path.underscore : "#{key}/#{path.underscore}"
|
183
|
+
if app.blocks_files[key]
|
184
|
+
app.blocks_files[key].each do |type, files|
|
185
|
+
unless type == :_sub_block || load_first.include?(type) || (only && !only.include?(type)) || (except && except.include?(type))
|
186
|
+
files.each { |f| success = load_block_file(f, model); loaded ||= success }
|
187
|
+
end
|
175
188
|
end
|
176
189
|
end
|
177
190
|
end
|
data/lib/origen/sub_blocks.rb
CHANGED
@@ -317,10 +317,36 @@ module Origen
|
|
317
317
|
# been instantiated yet. This is not supported yet for instantiated sub-blocks since
|
318
318
|
# there are probably a lot more corner-cases to consider, and hopefully no one will
|
319
319
|
# really need this anyway.
|
320
|
-
|
321
|
-
|
320
|
+
# Note that override is to recreate an existing sub-block, not adding additional
|
321
|
+
# attributes to an existing one
|
322
|
+
if options[:override]
|
323
|
+
sub_blocks.delete(name)
|
324
|
+
if options[:class_name]
|
325
|
+
begin
|
326
|
+
constantizable = !!options[:class_name].constantize
|
327
|
+
rescue NameError
|
328
|
+
constantizable = false
|
329
|
+
end
|
330
|
+
# this is to handle the case where a previously instantiated subblock wont allow
|
331
|
+
# the current class name to exist
|
332
|
+
# e.g. NamespaceA::B::C
|
333
|
+
# => NameSpaceX::Y::Z
|
334
|
+
# After requiring the files, constants become sane again:
|
335
|
+
# e.g. NamespaceA::B::C
|
336
|
+
# => NameSpaceA::B::C
|
337
|
+
if constantizable && (options[:class_name] != options[:class_name].constantize.to_s)
|
338
|
+
block_dir = options[:block_file] || _find_block_dir(options)
|
339
|
+
Dir.glob("#{block_dir}/*.rb").each do |file|
|
340
|
+
require file
|
341
|
+
end
|
342
|
+
end
|
343
|
+
end
|
344
|
+
else
|
345
|
+
if sub_blocks[name] && !sub_blocks[name].is_a?(Placeholder)
|
346
|
+
fail "You have already defined a sub-block named #{name} within class #{self.class}"
|
347
|
+
end
|
322
348
|
end
|
323
|
-
if respond_to?(name)
|
349
|
+
if respond_to?(name) && !(singleton_class.instance_methods.include?(name) && options[:override])
|
324
350
|
callers = Origen.split_caller_line caller[0]
|
325
351
|
Origen.log.warning "The sub_block defined at #{Pathname.new(callers[0]).relative_path_from(Pathname.pwd)}:#{callers[1]} is overriding an existing method called #{name}"
|
326
352
|
end
|
@@ -404,6 +430,33 @@ module Origen
|
|
404
430
|
|
405
431
|
private
|
406
432
|
|
433
|
+
# @api private
|
434
|
+
# find the block directory path containing the namespace of options[:class_name]
|
435
|
+
def _find_block_dir(options, current_path = nil, remaining_namespace = nil)
|
436
|
+
current_path ||= Pathname.new("#{Origen.root}/app/blocks")
|
437
|
+
remaining_namespace ||= options[:class_name].split('::')[1..-1].map(&:underscore)
|
438
|
+
current_namespace = remaining_namespace.shift
|
439
|
+
if current_namespace
|
440
|
+
if current_path.join(current_namespace).exist?
|
441
|
+
return _find_block_dir(options, current_path.join(current_namespace), remaining_namespace)
|
442
|
+
elsif current_path.join("derivatives/#{current_namespace}").exist?
|
443
|
+
return _find_block_dir(options, current_path.join("derivatives/#{current_namespace}"), remaining_namespace)
|
444
|
+
elsif current_path.join("sub_blocks/#{current_namespace}").exist?
|
445
|
+
return _find_block_dir(options, current_path.join("sub_blocks/#{current_namespace}"), remaining_namespace)
|
446
|
+
else
|
447
|
+
Origen.log.error "Could not find block dir for namespace #{options[:class_name]}!"
|
448
|
+
fail
|
449
|
+
end
|
450
|
+
else
|
451
|
+
if current_path.join('model.rb').exist?
|
452
|
+
return current_path.to_s
|
453
|
+
else
|
454
|
+
Origen.log.error "Could not find block dir for namespace #{options[:class_name]}!"
|
455
|
+
fail
|
456
|
+
end
|
457
|
+
end
|
458
|
+
end
|
459
|
+
|
407
460
|
def instantiate_sub_block(name, klass, options)
|
408
461
|
return sub_blocks[name] unless sub_blocks[name].is_a?(Placeholder)
|
409
462
|
sub_blocks[name] = klass.new(options.merge(parent: self, name: name))
|
@@ -8,16 +8,16 @@ 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 = "2021-
|
11
|
+
s.date = "2021-04-27"
|
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.
|
17
|
+
s.rubygems_version = "3.2.16".freeze
|
18
18
|
s.summary = "Origen application generators".freeze
|
19
19
|
|
20
|
-
s.installed_by_version = "3.
|
20
|
+
s.installed_by_version = "3.2.16" if s.respond_to? :installed_by_version
|
21
21
|
|
22
22
|
if s.respond_to? :specification_version then
|
23
23
|
s.specification_version = 4
|
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.
|
4
|
+
version: 0.60.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Stephen McGinty
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-
|
11
|
+
date: 2021-04-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -296,14 +296,14 @@ dependencies:
|
|
296
296
|
requirements:
|
297
297
|
- - "~>"
|
298
298
|
- !ruby/object:Gem::Version
|
299
|
-
version: '
|
299
|
+
version: '3'
|
300
300
|
type: :runtime
|
301
301
|
prerelease: false
|
302
302
|
version_requirements: !ruby/object:Gem::Requirement
|
303
303
|
requirements:
|
304
304
|
- - "~>"
|
305
305
|
- !ruby/object:Gem::Version
|
306
|
-
version: '
|
306
|
+
version: '3'
|
307
307
|
- !ruby/object:Gem::Dependency
|
308
308
|
name: colorize
|
309
309
|
requirement: !ruby/object:Gem::Requirement
|
@@ -749,7 +749,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
749
749
|
- !ruby/object:Gem::Version
|
750
750
|
version: 1.8.11
|
751
751
|
requirements: []
|
752
|
-
rubygems_version: 3.
|
752
|
+
rubygems_version: 3.2.16
|
753
753
|
signing_key:
|
754
754
|
specification_version: 4
|
755
755
|
summary: The Semiconductor Developer's Kit
|