origen 0.36.1 → 0.37.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 2b7cd6e1fd31d6cf1cdcc85ced3c00da93d86b47b0bcdff4b882a88bac79ac45
4
- data.tar.gz: d395df3f3faba1ed8c4a5d7d4e34e7193de1a75a62a116fcea80047727a1f99c
3
+ metadata.gz: 8f5dc0a0e894edf7f948dabf34643520bc2bf29862a484016888130663f55290
4
+ data.tar.gz: ccfe5cb101ac8cfb894e3f29a8edd4c81fb2d4f67765481af09bb8ffb22e09a3
5
5
  SHA512:
6
- metadata.gz: 928fa5eea49de2b7f75d1f023c2808f7bb9af6c4a7fd1d79c82cd0cfb83ecb2fdb93405fdd5e55fc959fffd4671e2383be47d1fa89b7c297107e98172972be1c
7
- data.tar.gz: 12dc00e6e0557da57afb690ae34cada31ae633688c071ec26b91cef7e261ad234623635077a20b38add1058507b921763d7cc8f969ee83c0d9643e12a9d20281
6
+ metadata.gz: 72c8537554c0aa1045d3a390b84a364caf87ed28c1f6c3c500a158cee29866d51f1247c197693171ed14343c4031b07f9de5c8b6426c09848ec0698db1ad4e55
7
+ data.tar.gz: ccc58c03e5fad80a93afbb8ff507252cb7202e0f7f1aadcc45adcedeeaff613259d4ecbe3f82249c8c7d25932377f417ea807ed2e442df1afe142fe98dc7e80a
data/config/version.rb CHANGED
@@ -1,7 +1,7 @@
1
1
  module Origen
2
2
  MAJOR = 0
3
- MINOR = 36
4
- BUGFIX = 1
3
+ MINOR = 37
4
+ BUGFIX = 0
5
5
  DEV = nil
6
6
 
7
7
  VERSION = [MAJOR, MINOR, BUGFIX].join(".") + (DEV ? ".pre#{DEV}" : '')
data/lib/origen.rb CHANGED
@@ -28,7 +28,6 @@ unless defined? RGen::ORIGENTRANSITION
28
28
  require 'bundler'
29
29
  require 'origen/undefined'
30
30
  require 'origen/componentable'
31
- require 'socket'
32
31
 
33
32
  module Origen
34
33
  autoload :Features, 'origen/features'
@@ -671,11 +670,6 @@ unless defined? RGen::ORIGENTRANSITION
671
670
  end
672
671
  alias_method :interactive?, :running_interactively?
673
672
 
674
- # Platform independent way of retrieving the hostname
675
- def hostname
676
- Socket.gethostbyname(Socket.gethostname).first.downcase
677
- end
678
-
679
673
  # Returns true if Origen is running with the -d or --debug switches enabled
680
674
  def debug?
681
675
  @debug || false
@@ -0,0 +1,13 @@
1
+ # Helper methods here and in the required files can be used by Origen during the bootup process.
2
+ # (e.g., in site config ERB files)
3
+ # This can be expanded as needed to provide more helpers.
4
+
5
+ module Origen
6
+ require 'socket'
7
+ require_relative './operating_systems'
8
+
9
+ # Platform independent means of retrieving the hostname
10
+ def self.hostname
11
+ Socket.gethostbyname(Socket.gethostname).first.downcase
12
+ end
13
+ end
@@ -1,15 +1,14 @@
1
1
  module Origen
2
2
  class SiteConfig
3
+ # NOTE: Gems are not allowed to be required here, only Ruby stlibs
3
4
  require 'pathname'
4
5
  require 'yaml'
5
6
  require 'etc'
6
7
  require 'erb'
7
- require 'colored'
8
- require 'httparty'
9
8
  require_relative 'site_config/config'
10
9
 
11
- # require this version of Origen
12
- require_relative '../origen'
10
+ # Require some useful methods from Origen without requiring the entire module
11
+ require_relative './boot_api'
13
12
 
14
13
  TRUE_VALUES = ['true', 'TRUE', '1', 1]
15
14
  FALSE_VALUES = ['false', 'FALSE', '0', 0]
@@ -87,7 +86,7 @@ module Origen
87
86
 
88
87
  # Dynamically remove the highest instance of :var
89
88
  def remove_highest(var)
90
- @configs.each do |c|
89
+ configs.each do |c|
91
90
  if c.has_var?(var)
92
91
  return c.remove_var(var)
93
92
  end
@@ -104,7 +103,7 @@ module Origen
104
103
  # from lowest priority to highest.
105
104
  # If [] is returned, it implies that there was no instancs of :var to be removed.
106
105
  ret = []
107
- @configs.each do |c|
106
+ configs.each do |c|
108
107
  if c.has_var?(var)
109
108
  ret << c.remove_var(var)
110
109
  end
@@ -162,7 +161,7 @@ module Origen
162
161
 
163
162
  def get_all(val)
164
163
  ret = []
165
- @configs.each do |c|
164
+ configs.each do |c|
166
165
  if c.has_var?(val)
167
166
  ret << c[val]
168
167
  end
@@ -171,7 +170,7 @@ module Origen
171
170
  end
172
171
 
173
172
  def clear
174
- @configs.clear
173
+ configs.clear
175
174
  end
176
175
 
177
176
  def rebuild!
@@ -179,7 +178,7 @@ module Origen
179
178
  end
180
179
 
181
180
  def refresh
182
- @configs.each(&:refresh)
181
+ configs.each(&:refresh)
183
182
  end
184
183
 
185
184
  def pretty_print_configs
@@ -258,7 +257,7 @@ module Origen
258
257
  else
259
258
  puts "(No enviornment variable #{to_env(var)} defined)"
260
259
  end
261
- @configs.each do |c|
260
+ configs.each do |c|
262
261
  if c.has_var?(var)
263
262
  puts "#{c.path} (#{c.type}): #{c[var]}"
264
263
  end
@@ -273,12 +272,12 @@ module Origen
273
272
  # Inspects the config(s) at the incex given.
274
273
  def inspect_configs(*config_indexes)
275
274
  config_indexes.each do |i|
276
- if i.to_i > @configs.size
277
- puts "Origen::SiteConfig: index #{i} is out of range of the available configs! Total configs: #{@configs.size}.".red
275
+ if i.to_i > configs.size
276
+ puts red("Origen::SiteConfig: index #{i} is out of range of the available configs! Total configs: #{configs.size}.")
278
277
  elsif i.to_i < 0
279
- puts "Origen::SiteConfig: index #{i} is less than 0. This index is ignored.".red
278
+ puts red("Origen::SiteConfig: index #{i} is less than 0. This index is ignored.")
280
279
  else
281
- c = @configs[i.to_i]
280
+ c = configs[i.to_i]
282
281
  puts "Inspecting config \##{i}"
283
282
  puts "Type: #{c.type}"
284
283
  puts "Path: #{c.path}"
@@ -350,6 +349,10 @@ module Origen
350
349
 
351
350
  private
352
351
 
352
+ def red(message)
353
+ "\e[0;31;49m#{message}\e[0m"
354
+ end
355
+
353
356
  def configs
354
357
  @configs ||= configs!
355
358
  end
@@ -375,7 +378,7 @@ module Origen
375
378
  end
376
379
 
377
380
  # Forces a reparse of the site configs.
378
- # This will set the @configs along the current path first,
381
+ # This will set the configs along the current path first,
379
382
  # then, using those values, will add a site config at the home directory.
380
383
  def configs!
381
384
  # This global is set when Origen is first required, it generally means that what is considered
@@ -64,9 +64,9 @@ module Origen
64
64
  def fetch
65
65
  def inform_user_of_cached_file
66
66
  if cached?
67
- puts 'Origen: Site Config: Found previously cached site config. Using the older site config.'.yellow
67
+ puts yellow('Origen: Site Config: Found previously cached site config. Using the older site config.')
68
68
  else
69
- puts 'Origen: Site Config: No cached file found. An empty site config will be used in its place.'.yellow
69
+ puts yellow('Origen: Site Config: No cached file found. An empty site config will be used in its place.')
70
70
  end
71
71
  puts
72
72
  end
@@ -75,36 +75,40 @@ module Origen
75
75
  puts "Pulling centralized site config from: #{path}"
76
76
 
77
77
  begin
78
+ # TODO: needs to be replaced with a net/http equivalent, can't use gems here. The reference
79
+ # to HTTParty will raise an error until that is done, but it will be handled gracefully below.
78
80
  text = HTTParty.get(path, verify: parent.find_val('centralized_site_config_verify_ssl'))
79
81
  puts "Caching centralized site config to: #{cached_file}"
80
82
 
81
83
  unless Dir.exist?(cached_file.dirname)
82
84
  FileUtils.mkdir_p(cached_file.dirname)
83
85
  end
84
- File.open(cached_file, 'w').write(text)
86
+ File.open(cached_file, 'w+') do |f|
87
+ f.write(text)
88
+ end
85
89
 
86
90
  rescue SocketError => e
87
- puts "Origen: Site Config: Unable to connect to #{path}".red
88
- puts 'Origen: Site Config: Failed to retrieve centralized site config!'.red
89
- puts "Error from exception: #{e.message}".red
91
+ puts red("Origen: Site Config: Unable to connect to #{path}")
92
+ puts red('Origen: Site Config: Failed to retrieve centralized site config!')
93
+ puts red("Error from exception: #{e.message}")
90
94
 
91
95
  inform_user_of_cached_file
92
96
  rescue OpenSSL::SSL::SSLError => e
93
- puts "Origen: Site Config: Unable to connect to #{path}".red
94
- puts 'Origen: Site Config: Failed to retrieve centralized site config!'.red
95
- puts "Error from exception: #{e.message}".red
96
- puts 'It looks like the error is related to SSL certification. If this is a trusted server, you can use ' \
97
- "the site config setting 'centralized_site_config_verify_ssl' to disable verifying the SSL certificate.".red
97
+ puts red("Origen: Site Config: Unable to connect to #{path}")
98
+ puts red('Origen: Site Config: Failed to retrieve centralized site config!')
99
+ puts red("Error from exception: #{e.message}")
100
+ puts red('It looks like the error is related to SSL certification. If this is a trusted server, you can use')
101
+ puts red("the site config setting 'centralized_site_config_verify_ssl' to disable verifying the SSL certificate.")
98
102
 
99
103
  inform_user_of_cached_file
100
104
  rescue Exception => e
101
105
  # Rescue anything else to avoid any un-caught exceptions causing Origen not to boot.
102
106
  # Print lots of red so that the users are aware that there's a problem, but don't ultimately want this
103
107
  # to render Origen un-bootable
104
- puts "Origen: Site Config: Unexpected exception ocurred trying to either retrieve or cache the site config at #{path}".red
105
- puts 'Origen: Site Config: Failed to retrieve centralized site config!'.red
106
- puts "Class of exception: #{e.class}".red
107
- puts "Error from exception: #{e.message}".red
108
+ puts red("Origen: Site Config: Unexpected exception ocurred trying to either retrieve or cache the site config at #{path}")
109
+ puts red('Origen: Site Config: Failed to retrieve centralized site config!')
110
+ puts red("Class of exception: #{e.class}")
111
+ puts red("Error from exception: #{e.message}")
108
112
 
109
113
  inform_user_of_cached_file
110
114
  end
@@ -124,22 +128,19 @@ module Origen
124
128
  if centralized?
125
129
  if !cached?
126
130
  if fetch
127
- # erb = ERB.new(File.read(cached_file), 0, '%<>')
128
131
  erb = read_erb(cached_file)
129
132
  else
130
- # There was a problem fetching the cnofig. Just use an empty string.
133
+ # There was a problem fetching the config. Just use an empty string.
131
134
  # Warning message will come from #fetch
132
135
  erb = ERB.new('')
133
136
  end
134
137
  else
135
- # erb = ERB.new(File.read(cached_file), 0, '%<>')
136
138
  erb = read_erb(cached_file)
137
139
  end
138
140
 
139
141
  @values = (YAML.load(erb.result) || {})
140
142
  else
141
143
  if File.extname(path) == '.erb'
142
- # erb = ERB.new(File.read(path), 0, '%<>')
143
144
  erb = read_erb(path)
144
145
  @values = (YAML.load(erb.result) || {})
145
146
  else
@@ -148,9 +149,11 @@ module Origen
148
149
  end
149
150
 
150
151
  unless @values.is_a?(Hash)
151
- puts "Origen: Site Config: The config at #{path} was not parsed as a Hash, but as a #{@values.class}".red
152
- puts ' Please review the format of the this file.'.red
153
- puts ' This config will not be loaded and will be replaced with an empty config.'.red
152
+ puts red("Origen: Site Config: The config at #{path} was not parsed as a Hash, but as a #{@values.class}")
153
+ puts red(' Please review the format of the this file.')
154
+ puts red(' Alternatively, an error condition may have been received from the server.')
155
+ puts red(" This site config is available at: #{cached_file}")
156
+ puts red(' This config will not be loaded and will be replaced with an empty config.')
154
157
  puts
155
158
  @values = {}
156
159
  end
@@ -160,9 +163,8 @@ module Origen
160
163
  RESTRICTED_FROM_CENTRALIZED_VARIABLES.each do |var|
161
164
  if @values.key?(var)
162
165
  val = @values.delete(var)
163
- puts 'Origen: Site Config: ' \
164
- "config variable #{var} is not allowed in the centralized site config and will be removed. " \
165
- "Value #{val} will not be applied!".red
166
+ puts red("Origen: Site Config: config variable #{var} is not allowed in the centralized site config and will be removed.")
167
+ puts red(" Value #{val} will not be applied!")
166
168
  end
167
169
  end
168
170
  end
@@ -200,6 +202,16 @@ module Origen
200
202
  def runtime?
201
203
  type == :runtime
202
204
  end
205
+
206
+ private
207
+
208
+ def red(message)
209
+ "\e[0;31;49m#{message}\e[0m"
210
+ end
211
+
212
+ def yellow(message)
213
+ "\e[0;33;49m#{message}\e[0m"
214
+ end
203
215
  end
204
216
  end
205
217
  end
@@ -69,7 +69,7 @@ module Origen
69
69
  model.add_virtual_pin :relay1
70
70
  model.add_virtual_pin :relay2, packages: { bga: {} }
71
71
 
72
- model.sub_block :block1, file: 'origen/export1/block1.rb', dir: '/proj/imxrt1170_test/users/nxa20023/origen/dev/trash/origen/vendor/lib/models', lazy: true
72
+ model.sub_block :block1, file: 'origen/export1/block1.rb', dir: '/home/stephen/Code/github/origen/vendor/lib/models', lazy: true
73
73
 
74
74
  end
75
75
  end
@@ -4,7 +4,7 @@ module Origen
4
4
  module Export1
5
5
  module Block1
6
6
  def self.extended(model)
7
- model.sub_block :x, file: 'origen/export1/block1/x.rb', dir: '/proj/imxrt1170_test/users/nxa20023/origen/dev/trash/origen/vendor/lib/models', lazy: true, base_address: 0x40000000
7
+ model.sub_block :x, file: 'origen/export1/block1/x.rb', dir: '/home/stephen/Code/github/origen/vendor/lib/models', lazy: true, base_address: 0x40000000
8
8
 
9
9
  end
10
10
  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.36.1
4
+ version: 0.37.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: 2018-11-01 00:00:00.000000000 Z
11
+ date: 2018-11-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -418,6 +418,7 @@ files:
418
418
  - lib/origen/application/target.rb
419
419
  - lib/origen/application/version_tracker.rb
420
420
  - lib/origen/application/workspace_manager.rb
421
+ - lib/origen/boot_api.rb
421
422
  - lib/origen/bugs.rb
422
423
  - lib/origen/bugs/bug.rb
423
424
  - lib/origen/callbacks.rb
@@ -654,7 +655,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
654
655
  version: 1.8.11
655
656
  requirements: []
656
657
  rubyforge_project:
657
- rubygems_version: 2.7.7
658
+ rubygems_version: 2.7.6
658
659
  signing_key:
659
660
  specification_version: 4
660
661
  summary: The Semiconductor Developer's Kit