origen 0.36.1 → 0.37.0

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