origen 0.55.2 → 0.57.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 +5 -5
 - data/config/version.rb +2 -2
 - data/lib/origen.rb +3 -0
 - data/lib/origen/application/lsf_manager.rb +12 -13
 - data/lib/origen/application/workspace_manager.rb +1 -1
 - data/lib/origen/commands.rb +16 -6
 - data/lib/origen/generator/job.rb +9 -3
 - data/lib/origen/generator/pattern.rb +18 -3
 - data/lib/origen/generator/pattern_sequence.rb +49 -5
 - data/lib/origen/generator/pattern_sequencer.rb +19 -0
 - data/lib/origen/generator/pattern_thread.rb +3 -1
 - data/lib/origen/log.rb +5 -2
 - data/lib/origen/regression_manager.rb +15 -8
 - data/lib/origen/revision_control/git.rb +1 -0
 - data/lib/origen/sub_blocks.rb +31 -16
 - data/lib/origen/utility/mailer.rb +5 -1
 - data/origen_app_generators/origen_app_generators.gemspec +3 -3
 - metadata +3 -4
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
     | 
    
         
            -
             
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 2 
     | 
    
         
            +
            SHA256:
         
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: 21b7b219ea6b020ff55496a1c3103e1abb49080162ae22c7e923cf09573b2909
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: 2e0fdba7223ee3fa33f272f88ff9ccdea39ba54d630eb8e28c99d5bfc73c6563
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: bb7fcc388d925a782a33120045527f627e5c7c31fcbfe351f0ef32c8368824c2d94c473f818e68a5e1948cd321dd8cd130d288d348ce141875678b03d11ee693
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: 187445f738cc7873c920f29e4c55eb480d67d8ab1be5fbc143e592d6cc855ecb8a27f2c835efbb53ce304faa123e432fedd8ba51b3205df1fe414f3f1482ad8c
         
     | 
    
        data/config/version.rb
    CHANGED
    
    
    
        data/lib/origen.rb
    CHANGED
    
    
| 
         @@ -252,8 +252,9 @@ module Origen 
     | 
|
| 
       252 
252 
     | 
    
         
             
                  end
         
     | 
| 
       253 
253 
     | 
    
         | 
| 
       254 
254 
     | 
    
         
             
                  # Build the log file from the completed jobs
         
     | 
| 
       255 
     | 
    
         
            -
                  def build_log( 
     | 
| 
       256 
     | 
    
         
            -
                     
     | 
| 
      
 255 
     | 
    
         
            +
                  def build_log(options = {})
         
     | 
| 
      
 256 
     | 
    
         
            +
                    log_method = options[:log_file] ? options[:log_file] : :info
         
     | 
| 
      
 257 
     | 
    
         
            +
                    Origen.log.send(log_method, '*' * 70)
         
     | 
| 
       257 
258 
     | 
    
         
             
                    completed_jobs.each do |job|
         
     | 
| 
       258 
259 
     | 
    
         
             
                      File.open(log_file(job[:id])) do |f|
         
     | 
| 
       259 
260 
     | 
    
         
             
                        last_line_blank = false
         
     | 
| 
         @@ -291,12 +292,12 @@ module Origen 
     | 
|
| 
       291 
292 
     | 
    
         
             
                              stats.failed_files += Regexp.last_match[1].to_i
         
     | 
| 
       292 
293 
     | 
    
         
             
                            elsif line =~ /ERROR!/
         
     | 
| 
       293 
294 
     | 
    
         
             
                              stats.errors += 1
         
     | 
| 
       294 
     | 
    
         
            -
                              Origen.log.send :relog, line
         
     | 
| 
      
 295 
     | 
    
         
            +
                              Origen.log.send :relog, line, options
         
     | 
| 
       295 
296 
     | 
    
         
             
                            else
         
     | 
| 
       296 
297 
     | 
    
         
             
                              # Compress multiple blank lines
         
     | 
| 
       297 
298 
     | 
    
         
             
                              if line =~ /^\s*$/ || line =~ /.*\|\|\s*$/
         
     | 
| 
       298 
299 
     | 
    
         
             
                                unless last_line_blank
         
     | 
| 
       299 
     | 
    
         
            -
                                  Origen.log. 
     | 
| 
      
 300 
     | 
    
         
            +
                                  Origen.log.send(log_method, nil)
         
     | 
| 
       300 
301 
     | 
    
         
             
                                  last_line_blank = true
         
     | 
| 
       301 
302 
     | 
    
         
             
                                end
         
     | 
| 
       302 
303 
     | 
    
         
             
                              else
         
     | 
| 
         @@ -305,8 +306,7 @@ module Origen 
     | 
|
| 
       305 
306 
     | 
    
         
             
                                       line =~ /Insecure world writable dir/ ||
         
     | 
| 
       306 
307 
     | 
    
         
             
                                       line =~ /To save all of/
         
     | 
| 
       307 
308 
     | 
    
         
             
                                  line.strip!
         
     | 
| 
       308 
     | 
    
         
            -
                                   
     | 
| 
       309 
     | 
    
         
            -
                                  Origen.log.send :relog, line
         
     | 
| 
      
 309 
     | 
    
         
            +
                                  Origen.log.send :relog, line, options
         
     | 
| 
       310 
310 
     | 
    
         
             
                                  last_line_blank = false
         
     | 
| 
       311 
311 
     | 
    
         
             
                                end
         
     | 
| 
       312 
312 
     | 
    
         
             
                              end
         
     | 
| 
         @@ -319,7 +319,7 @@ module Origen 
     | 
|
| 
       319 
319 
     | 
    
         
             
                        end
         
     | 
| 
       320 
320 
     | 
    
         
             
                      end
         
     | 
| 
       321 
321 
     | 
    
         
             
                    end
         
     | 
| 
       322 
     | 
    
         
            -
                    Origen.log. 
     | 
| 
      
 322 
     | 
    
         
            +
                    Origen.log.send(log_method, '*' * 70)
         
     | 
| 
       323 
323 
     | 
    
         
             
                    stats.print_summary
         
     | 
| 
       324 
324 
     | 
    
         
             
                  end
         
     | 
| 
       325 
325 
     | 
    
         | 
| 
         @@ -409,7 +409,7 @@ module Origen 
     | 
|
| 
       409 
409 
     | 
    
         
             
                    end
         
     | 
| 
       410 
410 
     | 
    
         | 
| 
       411 
411 
     | 
    
         
             
                    str = "#{action} #{cmd}".strip
         
     | 
| 
       412 
     | 
    
         
            -
                    str.sub('origen ', '') if str =~ /^origen /
         
     | 
| 
      
 412 
     | 
    
         
            +
                    str.sub!('origen ', '') if str =~ /^origen /
         
     | 
| 
       413 
413 
     | 
    
         | 
| 
       414 
414 
     | 
    
         
             
                    # Append the --exec_remote switch to all Origen commands, this allows command
         
     | 
| 
       415 
415 
     | 
    
         
             
                    # processing to be altered based on whether it is running locally or
         
     | 
| 
         @@ -420,12 +420,11 @@ module Origen 
     | 
|
| 
       420 
420 
     | 
    
         
             
                  end
         
     | 
| 
       421 
421 
     | 
    
         | 
| 
       422 
422 
     | 
    
         
             
                  def command_prefix(id, dependents)
         
     | 
| 
       423 
     | 
    
         
            -
                     
     | 
| 
       424 
     | 
    
         
            -
                     
     | 
| 
       425 
     | 
    
         
            -
             
     | 
| 
       426 
     | 
    
         
            -
                      prefix = "source #{Regexp.last_match[1]}/origen_setup; "
         
     | 
| 
      
 423 
     | 
    
         
            +
                    # define prefix as a blank string if Origen.site_config.lsf_command_prefix is not defined
         
     | 
| 
      
 424 
     | 
    
         
            +
                    if Origen.site_config.lsf_command_prefix
         
     | 
| 
      
 425 
     | 
    
         
            +
                      prefix = Origen.site_config.lsf_command_prefix
         
     | 
| 
       427 
426 
     | 
    
         
             
                    else
         
     | 
| 
       428 
     | 
    
         
            -
                      prefix =  
     | 
| 
      
 427 
     | 
    
         
            +
                      prefix = ''
         
     | 
| 
       429 
428 
     | 
    
         
             
                    end
         
     | 
| 
       430 
429 
     | 
    
         
             
                    prefix += "cd #{Origen.root}; origen l --execute --id #{id} "
         
     | 
| 
       431 
430 
     | 
    
         
             
                    unless dependents.empty?
         
     | 
| 
         @@ -114,7 +114,7 @@ module Origen 
     | 
|
| 
       114 
114 
     | 
    
         
             
                      fail "Sorry but #{path} already exists!"
         
     | 
| 
       115 
115 
     | 
    
         
             
                    end
         
     | 
| 
       116 
116 
     | 
    
         
             
                    FileUtils.rm_rf(path.to_s) if File.exist?(path.to_s)
         
     | 
| 
       117 
     | 
    
         
            -
                    rc = RevisionControl.new remote: options[:rc_url], local: path.to_s
         
     | 
| 
      
 117 
     | 
    
         
            +
                    rc = RevisionControl.new options.merge(remote: options[:rc_url], local: path.to_s)
         
     | 
| 
       118 
118 
     | 
    
         
             
                    rc.build
         
     | 
| 
       119 
119 
     | 
    
         
             
                  end
         
     | 
| 
       120 
120 
     | 
    
         | 
    
        data/lib/origen/commands.rb
    CHANGED
    
    | 
         @@ -62,24 +62,34 @@ if ARGV.delete('--coverage') || 
     | 
|
| 
       62 
62 
     | 
    
         
             
              Origen.log.info 'Started code coverage'
         
     | 
| 
       63 
63 
     | 
    
         
             
              SimpleCov.configure do
         
     | 
| 
       64 
64 
     | 
    
         
             
                filters.clear # This will remove the :root_filter that comes via simplecov's defaults
         
     | 
| 
      
 65 
     | 
    
         
            +
             
     | 
| 
       65 
66 
     | 
    
         
             
                add_filter do |src|
         
     | 
| 
       66 
     | 
    
         
            -
                   
     | 
| 
      
 67 
     | 
    
         
            +
                  if File.directory?("#{Origen.root}/app/lib")
         
     | 
| 
      
 68 
     | 
    
         
            +
                    !(src.filename =~ /^#{Origen.root}\/app\/lib/)
         
     | 
| 
      
 69 
     | 
    
         
            +
                  else
         
     | 
| 
      
 70 
     | 
    
         
            +
                    !(src.filename =~ /^#{Origen.root}\/lib/)
         
     | 
| 
      
 71 
     | 
    
         
            +
                  end
         
     | 
| 
       67 
72 
     | 
    
         
             
                end
         
     | 
| 
       68 
73 
     | 
    
         | 
| 
       69 
74 
     | 
    
         
             
                # Results from commands run in succession will be merged by default
         
     | 
| 
       70 
75 
     | 
    
         
             
                use_merging(!ARGV.delete('--no_merge'))
         
     | 
| 
       71 
     | 
    
         
            -
             
     | 
| 
       72 
76 
     | 
    
         
             
                # Try and make a guess about which directory contains the bulk of the application's code
         
     | 
| 
       73 
77 
     | 
    
         
             
                # and create groups to match the main folders
         
     | 
| 
       74 
     | 
    
         
            -
                 
     | 
| 
       75 
     | 
    
         
            -
                 
     | 
| 
       76 
     | 
    
         
            -
                 
     | 
| 
      
 78 
     | 
    
         
            +
                # Highest priority is given to the new application structure
         
     | 
| 
      
 79 
     | 
    
         
            +
                # Applications on the old directory structure need to make sure that there isn't another "app" directory in Origen.root
         
     | 
| 
      
 80 
     | 
    
         
            +
                # Applications on the new directory structure need to make sure that there isn't another "lib" directory in Origen.root
         
     | 
| 
      
 81 
     | 
    
         
            +
                d1 = "#{Origen.root}/app/"
         
     | 
| 
      
 82 
     | 
    
         
            +
                d2 = "#{Origen.root}/lib/#{Origen.app.name.to_s.underscore}"
         
     | 
| 
      
 83 
     | 
    
         
            +
                d3 = "#{Origen.root}/lib/#{Origen.app.namespace.to_s.underscore}"
         
     | 
| 
      
 84 
     | 
    
         
            +
                d4 = "#{Origen.root}/lib"
         
     | 
| 
       77 
85 
     | 
    
         
             
                if File.exist?(d1) && File.directory?(d1)
         
     | 
| 
       78 
86 
     | 
    
         
             
                  dir = d1
         
     | 
| 
       79 
87 
     | 
    
         
             
                elsif File.exist?(d2) && File.directory?(d2)
         
     | 
| 
       80 
88 
     | 
    
         
             
                  dir = d2
         
     | 
| 
       81 
     | 
    
         
            -
                 
     | 
| 
      
 89 
     | 
    
         
            +
                elsif File.exist?(d3) && File.directory?(d3)
         
     | 
| 
       82 
90 
     | 
    
         
             
                  dir = d3
         
     | 
| 
      
 91 
     | 
    
         
            +
                else
         
     | 
| 
      
 92 
     | 
    
         
            +
                  dir = d4
         
     | 
| 
       83 
93 
     | 
    
         
             
                end
         
     | 
| 
       84 
94 
     | 
    
         | 
| 
       85 
95 
     | 
    
         
             
                Dir.glob("#{dir}/*").each do |d|
         
     | 
    
        data/lib/origen/generator/job.rb
    CHANGED
    
    | 
         @@ -3,7 +3,7 @@ module Origen 
     | 
|
| 
       3 
3 
     | 
    
         
             
                # A job is responsible for executing a single pattern source
         
     | 
| 
       4 
4 
     | 
    
         
             
                class Job # :nodoc: all
         
     | 
| 
       5 
5 
     | 
    
         
             
                  attr_accessor :output_file_body, :pattern
         
     | 
| 
       6 
     | 
    
         
            -
                  attr_reader :split_counter
         
     | 
| 
      
 6 
     | 
    
         
            +
                  attr_reader :split_counter, :split_names
         
     | 
| 
       7 
7 
     | 
    
         
             
                  attr_reader :options
         
     | 
| 
       8 
8 
     | 
    
         | 
| 
       9 
9 
     | 
    
         
             
                  def initialize(pattern, options)
         
     | 
| 
         @@ -23,9 +23,11 @@ module Origen 
     | 
|
| 
       23 
23 
     | 
    
         
             
                    @no_comments
         
     | 
| 
       24 
24 
     | 
    
         
             
                  end
         
     | 
| 
       25 
25 
     | 
    
         | 
| 
       26 
     | 
    
         
            -
                  def inc_split_counter
         
     | 
| 
      
 26 
     | 
    
         
            +
                  def inc_split_counter(name = '')
         
     | 
| 
       27 
27 
     | 
    
         
             
                    @split_counter ||= 0
         
     | 
| 
      
 28 
     | 
    
         
            +
                    @split_names ||= ['']
         
     | 
| 
       28 
29 
     | 
    
         
             
                    @split_counter += 1
         
     | 
| 
      
 30 
     | 
    
         
            +
                    @split_names << name
         
     | 
| 
       29 
31 
     | 
    
         
             
                  end
         
     | 
| 
       30 
32 
     | 
    
         | 
| 
       31 
33 
     | 
    
         
             
                  def requested_pattern
         
     | 
| 
         @@ -115,7 +117,11 @@ module Origen 
     | 
|
| 
       115 
117 
     | 
    
         | 
| 
       116 
118 
     | 
    
         
             
                  def split_number
         
     | 
| 
       117 
119 
     | 
    
         
             
                    if split_counter
         
     | 
| 
       118 
     | 
    
         
            -
                       
     | 
| 
      
 120 
     | 
    
         
            +
                      if split_names[split_counter] != ''
         
     | 
| 
      
 121 
     | 
    
         
            +
                        "_#{split_names[split_counter]}"
         
     | 
| 
      
 122 
     | 
    
         
            +
                      else
         
     | 
| 
      
 123 
     | 
    
         
            +
                        "_part#{split_counter}"
         
     | 
| 
      
 124 
     | 
    
         
            +
                      end
         
     | 
| 
       119 
125 
     | 
    
         
             
                    else
         
     | 
| 
       120 
126 
     | 
    
         
             
                      ''
         
     | 
| 
       121 
127 
     | 
    
         
             
                    end
         
     | 
| 
         @@ -91,9 +91,23 @@ module Origen 
     | 
|
| 
       91 
91 
     | 
    
         
             
                    # end
         
     | 
| 
       92 
92 
     | 
    
         | 
| 
       93 
93 
     | 
    
         
             
                    @pattern_sequence = true
         
     | 
| 
       94 
     | 
    
         
            -
             
     | 
| 
      
 94 
     | 
    
         
            +
             
     | 
| 
      
 95 
     | 
    
         
            +
                    # The startup callbacks need to be skipped for now until the main thread is open for business
         
     | 
| 
      
 96 
     | 
    
         
            +
                    pattern_wrapper([], [], options.merge(call_startup_callbacks: false)) do
         
     | 
| 
      
 97 
     | 
    
         
            +
                      # The startup callbacks, if required, need to be wrapped up in a closure for calling
         
     | 
| 
      
 98 
     | 
    
         
            +
                      # later by the main thread
         
     | 
| 
      
 99 
     | 
    
         
            +
                      if (options.key?(:call_startup_callbacks) && !options[:call_startup_callbacks]) || options[:skip_startup]
         
     | 
| 
      
 100 
     | 
    
         
            +
                        pre_block = nil
         
     | 
| 
      
 101 
     | 
    
         
            +
                      else
         
     | 
| 
      
 102 
     | 
    
         
            +
                        pre_block = proc do
         
     | 
| 
      
 103 
     | 
    
         
            +
                          # Call startup callbacks
         
     | 
| 
      
 104 
     | 
    
         
            +
                          Origen.app.listeners_for(:startup).each do |listener|
         
     | 
| 
      
 105 
     | 
    
         
            +
                            listener.startup(options)
         
     | 
| 
      
 106 
     | 
    
         
            +
                          end
         
     | 
| 
      
 107 
     | 
    
         
            +
                        end
         
     | 
| 
      
 108 
     | 
    
         
            +
                      end
         
     | 
| 
       95 
109 
     | 
    
         
             
                      PatternSequencer.send(:active=, true)
         
     | 
| 
       96 
     | 
    
         
            -
                      @pattern_sequence = PatternSequence.new(job.output_pattern_filename, block)
         
     | 
| 
      
 110 
     | 
    
         
            +
                      @pattern_sequence = PatternSequence.new(job.output_pattern_filename, block, pre_block)
         
     | 
| 
       97 
111 
     | 
    
         
             
                      @pattern_sequence.send(:execute)
         
     | 
| 
       98 
112 
     | 
    
         
             
                      PatternSequencer.send(:active=, false)
         
     | 
| 
       99 
113 
     | 
    
         
             
                    end
         
     | 
| 
         @@ -221,8 +235,9 @@ module Origen 
     | 
|
| 
       221 
235 
     | 
    
         
             
                  # Each additional pattern section created by calling this method
         
     | 
| 
       222 
236 
     | 
    
         
             
                  # will have '_partN' appended to the original pattern name.
         
     | 
| 
       223 
237 
     | 
    
         
             
                  def split(options = {})
         
     | 
| 
      
 238 
     | 
    
         
            +
                    split_name = options.delete(:name) || ''
         
     | 
| 
       224 
239 
     | 
    
         
             
                    pattern_close(options.merge(call_shutdown_callbacks: false))
         
     | 
| 
       225 
     | 
    
         
            -
                    job.inc_split_counter
         
     | 
| 
      
 240 
     | 
    
         
            +
                    job.inc_split_counter(split_name)
         
     | 
| 
       226 
241 
     | 
    
         
             
                    pattern_open(options.merge(call_startup_callbacks: false))
         
     | 
| 
       227 
242 
     | 
    
         
             
                  end
         
     | 
| 
       228 
243 
     | 
    
         | 
| 
         @@ -5,15 +5,17 @@ module Origen 
     | 
|
| 
       5 
5 
     | 
    
         
             
                # Manages a single pattern sequence, i.e. an instance of PatternSequence is
         
     | 
| 
       6 
6 
     | 
    
         
             
                # created for every Pattern.sequence do ... end block
         
     | 
| 
       7 
7 
     | 
    
         
             
                class PatternSequence
         
     | 
| 
       8 
     | 
    
         
            -
                  def initialize(name, block)
         
     | 
| 
      
 8 
     | 
    
         
            +
                  def initialize(name, block, pre_block = nil)
         
     | 
| 
       9 
9 
     | 
    
         
             
                    @number_of_threads = 1
         
     | 
| 
       10 
10 
     | 
    
         
             
                    @name = name
         
     | 
| 
       11 
11 
     | 
    
         
             
                    @running_thread_ids = { main: true }
         
     | 
| 
       12 
12 
     | 
    
         
             
                    # The contents of the main Pattern.sequence block will be executed as a thread and treated
         
     | 
| 
       13 
13 
     | 
    
         
             
                    # like any other parallel block
         
     | 
| 
       14 
     | 
    
         
            -
                    thread = PatternThread.new(:main, self, block, true)
         
     | 
| 
      
 14 
     | 
    
         
            +
                    thread = PatternThread.new(:main, self, block, true, pre_block)
         
     | 
| 
       15 
15 
     | 
    
         
             
                    threads << thread
         
     | 
| 
       16 
16 
     | 
    
         
             
                    active_threads << thread
         
     | 
| 
      
 17 
     | 
    
         
            +
                    PatSeq.send(:current_sequence=, self)
         
     | 
| 
      
 18 
     | 
    
         
            +
                    @sync_ups = {}
         
     | 
| 
       17 
19 
     | 
    
         
             
                  end
         
     | 
| 
       18 
20 
     | 
    
         | 
| 
       19 
21 
     | 
    
         
             
                  # Execute the given pattern
         
     | 
| 
         @@ -45,7 +47,7 @@ module Origen 
     | 
|
| 
       45 
47 
     | 
    
         
             
                  end
         
     | 
| 
       46 
48 
     | 
    
         
             
                  alias_method :in_parallel, :thread
         
     | 
| 
       47 
49 
     | 
    
         | 
| 
       48 
     | 
    
         
            -
                  def  
     | 
| 
      
 50 
     | 
    
         
            +
                  def wait_for_threads_to_complete(*ids)
         
     | 
| 
       49 
51 
     | 
    
         
             
                    completed = false
         
     | 
| 
       50 
52 
     | 
    
         
             
                    blocked = false
         
     | 
| 
       51 
53 
     | 
    
         
             
                    ids = ids.map(&:to_sym)
         
     | 
| 
         @@ -71,10 +73,48 @@ module Origen 
     | 
|
| 
       71 
73 
     | 
    
         
             
                      end
         
     | 
| 
       72 
74 
     | 
    
         
             
                    end
         
     | 
| 
       73 
75 
     | 
    
         
             
                  end
         
     | 
| 
       74 
     | 
    
         
            -
                  alias_method :wait_for_thread, : 
     | 
| 
      
 76 
     | 
    
         
            +
                  alias_method :wait_for_thread, :wait_for_threads_to_complete
         
     | 
| 
      
 77 
     | 
    
         
            +
                  alias_method :wait_for_threads, :wait_for_threads_to_complete
         
     | 
| 
      
 78 
     | 
    
         
            +
                  alias_method :wait_for_thread_to_complete, :wait_for_threads_to_complete
         
     | 
| 
       75 
79 
     | 
    
         | 
| 
       76 
80 
     | 
    
         
             
                  private
         
     | 
| 
       77 
81 
     | 
    
         | 
| 
      
 82 
     | 
    
         
            +
                  def sync_up(location, *ids)
         
     | 
| 
      
 83 
     | 
    
         
            +
                    options = ids.pop if ids.last.is_a?(Hash)
         
     | 
| 
      
 84 
     | 
    
         
            +
                    options ||= {}
         
     | 
| 
      
 85 
     | 
    
         
            +
                    ids = ids.map(&:to_sym)
         
     | 
| 
      
 86 
     | 
    
         
            +
                    if ids.empty? || ids.include?(:all)
         
     | 
| 
      
 87 
     | 
    
         
            +
                      ids = @running_thread_ids.keys
         
     | 
| 
      
 88 
     | 
    
         
            +
                      ids.delete(:main) unless options[:include_main]
         
     | 
| 
      
 89 
     | 
    
         
            +
                    end
         
     | 
| 
      
 90 
     | 
    
         
            +
                    # Just continue if this thread is not in the list
         
     | 
| 
      
 91 
     | 
    
         
            +
                    return unless ids.include?(current_thread.id)
         
     | 
| 
      
 92 
     | 
    
         
            +
                    # If we have entered the same sync up point after having previously completed it,
         
     | 
| 
      
 93 
     | 
    
         
            +
                    # then clear it and start again
         
     | 
| 
      
 94 
     | 
    
         
            +
                    if @sync_ups[location] && @sync_ups[location][:completed]
         
     | 
| 
      
 95 
     | 
    
         
            +
                      @sync_ups[location] = nil
         
     | 
| 
      
 96 
     | 
    
         
            +
                    end
         
     | 
| 
      
 97 
     | 
    
         
            +
                    # Don't need to worry about race conditions here as Origen only allows 1 thread
         
     | 
| 
      
 98 
     | 
    
         
            +
                    # to be active at a time
         
     | 
| 
      
 99 
     | 
    
         
            +
                    if @sync_ups[location]
         
     | 
| 
      
 100 
     | 
    
         
            +
                      @sync_ups[location][:arrived] << current_thread.id
         
     | 
| 
      
 101 
     | 
    
         
            +
                    else
         
     | 
| 
      
 102 
     | 
    
         
            +
                      @sync_ups[location] = { required: Set.new, arrived: Set.new, completed: false }
         
     | 
| 
      
 103 
     | 
    
         
            +
                      ids.each { |id| @sync_ups[location][:required] << id }
         
     | 
| 
      
 104 
     | 
    
         
            +
                      @sync_ups[location][:arrived] << current_thread.id
         
     | 
| 
      
 105 
     | 
    
         
            +
                    end
         
     | 
| 
      
 106 
     | 
    
         
            +
                    if @sync_ups[location][:required] == @sync_ups[location][:arrived]
         
     | 
| 
      
 107 
     | 
    
         
            +
                      @sync_ups[location][:completed] = true
         
     | 
| 
      
 108 
     | 
    
         
            +
                    end
         
     | 
| 
      
 109 
     | 
    
         
            +
                    blocked = false
         
     | 
| 
      
 110 
     | 
    
         
            +
                    until @sync_ups[location][:completed]
         
     | 
| 
      
 111 
     | 
    
         
            +
                      current_thread.waiting_for_thread(blocked)
         
     | 
| 
      
 112 
     | 
    
         
            +
                      blocked = true
         
     | 
| 
      
 113 
     | 
    
         
            +
                      Origen.log.debug "Waiting for sync_up: #{@sync_ups}"
         
     | 
| 
      
 114 
     | 
    
         
            +
                    end
         
     | 
| 
      
 115 
     | 
    
         
            +
                    current_thread.record_active if blocked
         
     | 
| 
      
 116 
     | 
    
         
            +
                  end
         
     | 
| 
      
 117 
     | 
    
         
            +
             
     | 
| 
       78 
118 
     | 
    
         
             
                  def thread_running?(id)
         
     | 
| 
       79 
119 
     | 
    
         
             
                    @running_thread_ids[id]
         
     | 
| 
       80 
120 
     | 
    
         
             
                  end
         
     | 
| 
         @@ -86,7 +126,11 @@ module Origen 
     | 
|
| 
       86 
126 
     | 
    
         
             
                  def log_execution_profile
         
     | 
| 
       87 
127 
     | 
    
         
             
                    if threads.size > 1
         
     | 
| 
       88 
128 
     | 
    
         
             
                      thread_id_size = threads.map { |t| t.id.to_s.size }.max
         
     | 
| 
       89 
     | 
    
         
            -
                       
     | 
| 
      
 129 
     | 
    
         
            +
                      begin
         
     | 
| 
      
 130 
     | 
    
         
            +
                        line_size = IO.console.winsize[1] - 35 - thread_id_size
         
     | 
| 
      
 131 
     | 
    
         
            +
                      rescue
         
     | 
| 
      
 132 
     | 
    
         
            +
                        line_size = 150
         
     | 
| 
      
 133 
     | 
    
         
            +
                      end
         
     | 
| 
       90 
134 
     | 
    
         
             
                      line_size -= 16 if tester.try(:sim?)
         
     | 
| 
       91 
135 
     | 
    
         
             
                      cycles_per_tick = (@cycle_count_stop / (line_size * 1.0)).ceil
         
     | 
| 
       92 
136 
     | 
    
         
             
                      if tester.try(:sim?)
         
     | 
| 
         @@ -81,8 +81,27 @@ module Origen 
     | 
|
| 
       81 
81 
     | 
    
         
             
                      str
         
     | 
| 
       82 
82 
     | 
    
         
             
                    end
         
     | 
| 
       83 
83 
     | 
    
         | 
| 
      
 84 
     | 
    
         
            +
                    # Wait for the given threads to complete. If no IDs given it will wait for all currently running
         
     | 
| 
      
 85 
     | 
    
         
            +
                    # threads (except for the one who called this) to complete.
         
     | 
| 
      
 86 
     | 
    
         
            +
                    def wait_for_threads_to_complete(*ids)
         
     | 
| 
      
 87 
     | 
    
         
            +
                      @current_sequence.wait_for_threads_to_complete(*ids)
         
     | 
| 
      
 88 
     | 
    
         
            +
                    end
         
     | 
| 
      
 89 
     | 
    
         
            +
                    alias_method :wait_for_thread, :wait_for_threads_to_complete
         
     | 
| 
      
 90 
     | 
    
         
            +
                    alias_method :wait_for_threads, :wait_for_threads_to_complete
         
     | 
| 
      
 91 
     | 
    
         
            +
                    alias_method :wait_for_thread_to_complete, :wait_for_threads_to_complete
         
     | 
| 
      
 92 
     | 
    
         
            +
             
     | 
| 
      
 93 
     | 
    
         
            +
                    def sync_up(*ids)
         
     | 
| 
      
 94 
     | 
    
         
            +
                      if @current_sequence
         
     | 
| 
      
 95 
     | 
    
         
            +
                        @current_sequence.send(:sync_up, caller[0], *ids)
         
     | 
| 
      
 96 
     | 
    
         
            +
                      end
         
     | 
| 
      
 97 
     | 
    
         
            +
                    end
         
     | 
| 
      
 98 
     | 
    
         
            +
             
     | 
| 
       84 
99 
     | 
    
         
             
                    private
         
     | 
| 
       85 
100 
     | 
    
         | 
| 
      
 101 
     | 
    
         
            +
                    def current_sequence=(seq)
         
     | 
| 
      
 102 
     | 
    
         
            +
                      @current_sequence = seq
         
     | 
| 
      
 103 
     | 
    
         
            +
                    end
         
     | 
| 
      
 104 
     | 
    
         
            +
             
     | 
| 
       86 
105 
     | 
    
         
             
                    def active=(val)
         
     | 
| 
       87 
106 
     | 
    
         
             
                      @active = val
         
     | 
| 
       88 
107 
     | 
    
         
             
                    end
         
     | 
| 
         @@ -14,7 +14,7 @@ module Origen 
     | 
|
| 
       14 
14 
     | 
    
         
             
                  # A record of when the thread is active to construct the execution profile
         
     | 
| 
       15 
15 
     | 
    
         
             
                  attr_reader :events
         
     | 
| 
       16 
16 
     | 
    
         | 
| 
       17 
     | 
    
         
            -
                  def initialize(id, sequence, block, primary = false)
         
     | 
| 
      
 17 
     | 
    
         
            +
                  def initialize(id, sequence, block, primary = false, pre_block = nil)
         
     | 
| 
       18 
18 
     | 
    
         
             
                    if primary
         
     | 
| 
       19 
19 
     | 
    
         
             
                      @cycle_count_start = 0
         
     | 
| 
       20 
20 
     | 
    
         
             
                    else
         
     | 
| 
         @@ -24,6 +24,7 @@ module Origen 
     | 
|
| 
       24 
24 
     | 
    
         
             
                    @id = id.to_sym
         
     | 
| 
       25 
25 
     | 
    
         
             
                    @sequence = sequence
         
     | 
| 
       26 
26 
     | 
    
         
             
                    @block = block
         
     | 
| 
      
 27 
     | 
    
         
            +
                    @pre_block = pre_block
         
     | 
| 
       27 
28 
     | 
    
         
             
                    @primary = primary
         
     | 
| 
       28 
29 
     | 
    
         
             
                    @running = Concurrent::Event.new
         
     | 
| 
       29 
30 
     | 
    
         
             
                    @waiting = Concurrent::Event.new
         
     | 
| 
         @@ -46,6 +47,7 @@ module Origen 
     | 
|
| 
       46 
47 
     | 
    
         
             
                    @thread = Thread.new do
         
     | 
| 
       47 
48 
     | 
    
         
             
                      PatSeq.send(:thread=, self)
         
     | 
| 
       48 
49 
     | 
    
         
             
                      wait
         
     | 
| 
      
 50 
     | 
    
         
            +
                      @pre_block.call if @pre_block
         
     | 
| 
       49 
51 
     | 
    
         
             
                      @block.call(sequence)
         
     | 
| 
       50 
52 
     | 
    
         
             
                      sequence.send(:thread_completed, self)
         
     | 
| 
       51 
53 
     | 
    
         
             
                      record_cycle_count_stop
         
     | 
    
        data/lib/origen/log.rb
    CHANGED
    
    | 
         @@ -274,6 +274,7 @@ module Origen 
     | 
|
| 
       274 
274 
     | 
    
         
             
                  else
         
     | 
| 
       275 
275 
     | 
    
         
             
                    msg = format_msg(method.to_s.upcase, msg)
         
     | 
| 
       276 
276 
     | 
    
         
             
                  end
         
     | 
| 
      
 277 
     | 
    
         
            +
                  console.info msg if options[:verbose]
         
     | 
| 
       277 
278 
     | 
    
         
             
                  @custom_logs[method.to_sym].info(msg)
         
     | 
| 
       278 
279 
     | 
    
         
             
                end
         
     | 
| 
       279 
280 
     | 
    
         | 
| 
         @@ -364,8 +365,10 @@ module Origen 
     | 
|
| 
       364 
365 
     | 
    
         
             
                  end
         
     | 
| 
       365 
366 
     | 
    
         
             
                end
         
     | 
| 
       366 
367 
     | 
    
         | 
| 
       367 
     | 
    
         
            -
                def relog(msg)
         
     | 
| 
       368 
     | 
    
         
            -
                  if  
     | 
| 
      
 368 
     | 
    
         
            +
                def relog(msg, options = {})
         
     | 
| 
      
 369 
     | 
    
         
            +
                  if options[:log_file]
         
     | 
| 
      
 370 
     | 
    
         
            +
                    send options[:log_file], msg.sub(/.*\|\|\s*/, ''), options
         
     | 
| 
      
 371 
     | 
    
         
            +
                  elsif msg =~ /^\[(\w+)\] .*/
         
     | 
| 
       369 
372 
     | 
    
         
             
                    method = Regexp.last_match(1).downcase
         
     | 
| 
       370 
373 
     | 
    
         
             
                    if respond_to?(method)
         
     | 
| 
       371 
374 
     | 
    
         
             
                      send method, msg.sub(/.*\|\|\s*/, '')
         
     | 
| 
         @@ -27,6 +27,7 @@ module Origen 
     | 
|
| 
       27 
27 
     | 
    
         
             
                # @param [Hash] options Options to customize the run instance
         
     | 
| 
       28 
28 
     | 
    
         
             
                # @option options [Array]   :target String Array of target names on which to run regression
         
     | 
| 
       29 
29 
     | 
    
         
             
                # @option options [Boolean] :build_reference (true) Build reference workspace automatically
         
     | 
| 
      
 30 
     | 
    
         
            +
                # @option options [Symbol]  :build_method (:init) whether to use a git init or git clone method to build the workspace
         
     | 
| 
       30 
31 
     | 
    
         
             
                # @option options [Boolean] :send_email (false) Send results email when regression complete
         
     | 
| 
       31 
32 
     | 
    
         
             
                # @option options [Boolean] :email_all_developers (false) If sending email, whether to email all developers or just user
         
     | 
| 
       32 
33 
     | 
    
         
             
                # @option options [Boolean] :report_results (false) Whether to report results inline to console
         
     | 
| 
         @@ -35,6 +36,7 @@ module Origen 
     | 
|
| 
       35 
36 
     | 
    
         
             
                def run(options = {})
         
     | 
| 
       36 
37 
     | 
    
         
             
                  options = {
         
     | 
| 
       37 
38 
     | 
    
         
             
                    build_reference:      true,
         
     | 
| 
      
 39 
     | 
    
         
            +
                    build_method:         :init,
         
     | 
| 
       38 
40 
     | 
    
         
             
                    send_email:           false,
         
     | 
| 
       39 
41 
     | 
    
         
             
                    email_all_developers: false,
         
     | 
| 
       40 
42 
     | 
    
         
             
                    report_results:       false,
         
     | 
| 
         @@ -46,7 +48,7 @@ module Origen 
     | 
|
| 
       46 
48 
     | 
    
         
             
                    Origen.lsf.clear_all
         
     | 
| 
       47 
49 
     | 
    
         
             
                    yield options
         
     | 
| 
       48 
50 
     | 
    
         
             
                    wait_for_completion(options) if options[:uses_lsf]
         
     | 
| 
       49 
     | 
    
         
            -
                    save_and_delete_output
         
     | 
| 
      
 51 
     | 
    
         
            +
                    save_and_delete_output(options)
         
     | 
| 
       50 
52 
     | 
    
         
             
                  else
         
     | 
| 
       51 
53 
     | 
    
         
             
                    if options[:build_reference]
         
     | 
| 
       52 
54 
     | 
    
         
             
                      @reference_tag = version_to_tag(options[:version] || get_version(options))
         
     | 
| 
         @@ -58,7 +60,8 @@ module Origen 
     | 
|
| 
       58 
60 
     | 
    
         
             
                        disable_origen_version_check do
         
     | 
| 
       59 
61 
     | 
    
         
             
                          Dir.chdir reference_origen_root do
         
     | 
| 
       60 
62 
     | 
    
         
             
                            Bundler.with_clean_env do
         
     | 
| 
       61 
     | 
    
         
            -
                               
     | 
| 
      
 63 
     | 
    
         
            +
                              # Origen 0.40.0 started using origen-owned binstubs
         
     | 
| 
      
 64 
     | 
    
         
            +
                              system 'rm -rf lbin' if Gem::Version.new(Origen.version) < Gem::Version.new('0.40.0')
         
     | 
| 
       62 
65 
     | 
    
         
             
                              # If regression is run using a service account, we need to setup the path/bundler manually
         
     | 
| 
       63 
66 
     | 
    
         
             
                              # The regression manager needs to be passed a --service_account option when initiated.
         
     | 
| 
       64 
67 
     | 
    
         
             
                              if options[:service_account]
         
     | 
| 
         @@ -125,7 +128,7 @@ module Origen 
     | 
|
| 
       125 
128 
     | 
    
         
             
                end
         
     | 
| 
       126 
129 
     | 
    
         | 
| 
       127 
130 
     | 
    
         
             
                def summarize_results(options = {})
         
     | 
| 
       128 
     | 
    
         
            -
                  Origen.lsf.build_log
         
     | 
| 
      
 131 
     | 
    
         
            +
                  Origen.lsf.build_log(options)
         
     | 
| 
       129 
132 
     | 
    
         
             
                  stats = Origen.app.stats
         
     | 
| 
       130 
133 
     | 
    
         
             
                  if options[:report_results]
         
     | 
| 
       131 
134 
     | 
    
         
             
                    puts "Regression results: \n"
         
     | 
| 
         @@ -144,12 +147,16 @@ module Origen 
     | 
|
| 
       144 
147 
     | 
    
         | 
| 
       145 
148 
     | 
    
         
             
                # Saves all generated output (to the reference dir) and then
         
     | 
| 
       146 
149 
     | 
    
         
             
                # deletes the output directory to save space
         
     | 
| 
       147 
     | 
    
         
            -
                def save_and_delete_output
         
     | 
| 
       148 
     | 
    
         
            -
                  Origen.lsf.build_log
         
     | 
| 
      
 150 
     | 
    
         
            +
                def save_and_delete_output(options = {})
         
     | 
| 
      
 151 
     | 
    
         
            +
                  Origen.lsf.build_log(options)
         
     | 
| 
       149 
152 
     | 
    
         
             
                  Origen.log.flush
         
     | 
| 
       150 
153 
     | 
    
         
             
                  Dir.chdir reference_origen_root do
         
     | 
| 
       151 
154 
     | 
    
         
             
                    Bundler.with_clean_env do
         
     | 
| 
       152 
     | 
    
         
            -
                       
     | 
| 
      
 155 
     | 
    
         
            +
                      if options[:log_file]
         
     | 
| 
      
 156 
     | 
    
         
            +
                        system "bundle exec origen save all -f log/#{options[:log_file]}.txt"
         
     | 
| 
      
 157 
     | 
    
         
            +
                      else
         
     | 
| 
      
 158 
     | 
    
         
            +
                        system 'bundle exec origen save all'
         
     | 
| 
      
 159 
     | 
    
         
            +
                      end
         
     | 
| 
       153 
160 
     | 
    
         
             
                    end
         
     | 
| 
       154 
161 
     | 
    
         
             
                  end
         
     | 
| 
       155 
162 
     | 
    
         
             
                  FileUtils.rm_rf "#{reference_origen_root}/output"
         
     | 
| 
         @@ -214,7 +221,7 @@ module Origen 
     | 
|
| 
       214 
221 
     | 
    
         
             
                      # Build the new reference workspace now.
         
     | 
| 
       215 
222 
     | 
    
         
             
                      unless File.exist?(@reference_workspace)
         
     | 
| 
       216 
223 
     | 
    
         
             
                        highlight { Origen.log.info 'Building reference workspace...' }
         
     | 
| 
       217 
     | 
    
         
            -
                        ws.build(@reference_workspace)
         
     | 
| 
      
 224 
     | 
    
         
            +
                        ws.build(@reference_workspace, options)
         
     | 
| 
       218 
225 
     | 
    
         
             
                      end
         
     | 
| 
       219 
226 
     | 
    
         
             
                      ws.set_reference_workspace(@reference_workspace)
         
     | 
| 
       220 
227 
     | 
    
         
             
                    else
         
     | 
| 
         @@ -229,7 +236,7 @@ module Origen 
     | 
|
| 
       229 
236 
     | 
    
         
             
                    end
         
     | 
| 
       230 
237 
     | 
    
         
             
                    unless File.exist?(@reference_workspace)
         
     | 
| 
       231 
238 
     | 
    
         
             
                      highlight { Origen.log.info 'Building reference workspace...' }
         
     | 
| 
       232 
     | 
    
         
            -
                      ws.build(@reference_workspace)
         
     | 
| 
      
 239 
     | 
    
         
            +
                      ws.build(@reference_workspace, options)
         
     | 
| 
       233 
240 
     | 
    
         
             
                    end
         
     | 
| 
       234 
241 
     | 
    
         
             
                    ws.set_reference_workspace(@reference_workspace)
         
     | 
| 
       235 
242 
     | 
    
         
             
                  end
         
     | 
    
        data/lib/origen/sub_blocks.rb
    CHANGED
    
    | 
         @@ -232,6 +232,22 @@ module Origen 
     | 
|
| 
       232 
232 
     | 
    
         
             
                end
         
     | 
| 
       233 
233 
     | 
    
         
             
                alias_method :children, :sub_blocks
         
     | 
| 
       234 
234 
     | 
    
         | 
| 
      
 235 
     | 
    
         
            +
                # Returns a hash containing all sub block groups thus far added
         
     | 
| 
      
 236 
     | 
    
         
            +
                # if no arguments given.
         
     | 
| 
      
 237 
     | 
    
         
            +
                # If given a code block, will serve as alias to sub_block_group method.
         
     | 
| 
      
 238 
     | 
    
         
            +
                # Does not handle arguments, no need at this time.
         
     | 
| 
      
 239 
     | 
    
         
            +
                def sub_block_groups(*args, &block)
         
     | 
| 
      
 240 
     | 
    
         
            +
                  if block_given?
         
     | 
| 
      
 241 
     | 
    
         
            +
                    sub_block_group(*args, &block)
         
     | 
| 
      
 242 
     | 
    
         
            +
                  else
         
     | 
| 
      
 243 
     | 
    
         
            +
                    if args.empty?
         
     | 
| 
      
 244 
     | 
    
         
            +
                      @sub_block_groups ||= {}.with_indifferent_access
         
     | 
| 
      
 245 
     | 
    
         
            +
                    else
         
     | 
| 
      
 246 
     | 
    
         
            +
                      fail 'sub_block_groups not meant to take arguments!'
         
     | 
| 
      
 247 
     | 
    
         
            +
                    end
         
     | 
| 
      
 248 
     | 
    
         
            +
                  end
         
     | 
| 
      
 249 
     | 
    
         
            +
                end
         
     | 
| 
      
 250 
     | 
    
         
            +
             
     | 
| 
       235 
251 
     | 
    
         
             
                # Delete all sub_blocks by emptying the Hash
         
     | 
| 
       236 
252 
     | 
    
         
             
                def delete_sub_blocks
         
     | 
| 
       237 
253 
     | 
    
         
             
                  @sub_blocks = {}
         
     | 
| 
         @@ -309,7 +325,7 @@ module Origen 
     | 
|
| 
       309 
325 
     | 
    
         
             
                      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}"
         
     | 
| 
       310 
326 
     | 
    
         
             
                    end
         
     | 
| 
       311 
327 
     | 
    
         
             
                    define_singleton_method name do
         
     | 
| 
       312 
     | 
    
         
            -
                       
     | 
| 
      
 328 
     | 
    
         
            +
                      sub_blocks[name]
         
     | 
| 
       313 
329 
     | 
    
         
             
                    end
         
     | 
| 
       314 
330 
     | 
    
         
             
                    if sub_blocks[name] && sub_blocks[name].is_a?(Placeholder)
         
     | 
| 
       315 
331 
     | 
    
         
             
                      sub_blocks[name].add_attributes(options)
         
     | 
| 
         @@ -362,21 +378,24 @@ module Origen 
     | 
|
| 
       362 
378 
     | 
    
         
             
                    callers = Origen.split_caller_line caller[0]
         
     | 
| 
       363 
379 
     | 
    
         
             
                    Origen.log.warning "The sub_block_group defined at #{Pathname.new(callers[0]).relative_path_from(Pathname.pwd)}:#{callers[1]} is overriding an existing method called #{id}"
         
     | 
| 
       364 
380 
     | 
    
         
             
                  end
         
     | 
| 
      
 381 
     | 
    
         
            +
                  # Define a singleton method which will be called every time the sub_block_group is referenced
         
     | 
| 
      
 382 
     | 
    
         
            +
                  # This is not called here but later when referenced
         
     | 
| 
       365 
383 
     | 
    
         
             
                  define_singleton_method "#{id}" do
         
     | 
| 
       366 
     | 
    
         
            -
                     
     | 
| 
       367 
     | 
    
         
            -
             
     | 
| 
       368 
     | 
    
         
            -
             
     | 
| 
       369 
     | 
    
         
            -
             
     | 
| 
       370 
     | 
    
         
            -
                     
     | 
| 
       371 
     | 
    
         
            -
             
     | 
| 
       372 
     | 
    
         
            -
             
     | 
| 
       373 
     | 
    
         
            -
                    end
         
     | 
| 
       374 
     | 
    
         
            -
                    b                         # return array inside new singleton method
         
     | 
| 
      
 384 
     | 
    
         
            +
                    sub_block_groups[id]
         
     | 
| 
      
 385 
     | 
    
         
            +
                  end
         
     | 
| 
      
 386 
     | 
    
         
            +
                  # Instantiate group
         
     | 
| 
      
 387 
     | 
    
         
            +
                  if options[:class_name]
         
     | 
| 
      
 388 
     | 
    
         
            +
                    b = Object.const_get(options[:class_name]).new
         
     | 
| 
      
 389 
     | 
    
         
            +
                  else
         
     | 
| 
      
 390 
     | 
    
         
            +
                    b = []             # Will use Array if no class defined
         
     | 
| 
       375 
391 
     | 
    
         
             
                  end
         
     | 
| 
      
 392 
     | 
    
         
            +
                  # Add sub_blocks to group
         
     | 
| 
      
 393 
     | 
    
         
            +
                  my_group.each do |group_id|
         
     | 
| 
      
 394 
     | 
    
         
            +
                    b << send(group_id)
         
     | 
| 
      
 395 
     | 
    
         
            +
                  end
         
     | 
| 
      
 396 
     | 
    
         
            +
                  sub_block_groups[id] = b
         
     | 
| 
       376 
397 
     | 
    
         
             
                  @current_group = nil   # close group
         
     | 
| 
       377 
398 
     | 
    
         
             
                end
         
     | 
| 
       378 
     | 
    
         
            -
                alias_method :sub_block_groups, :sub_block_group
         
     | 
| 
       379 
     | 
    
         
            -
                alias_method :sub_blocks_groups, :sub_block_group
         
     | 
| 
       380 
399 
     | 
    
         
             
                alias_method :sub_blocks_group, :sub_block_group
         
     | 
| 
       381 
400 
     | 
    
         | 
| 
       382 
401 
     | 
    
         
             
                def namespace
         
     | 
| 
         @@ -385,10 +404,6 @@ module Origen 
     | 
|
| 
       385 
404 
     | 
    
         | 
| 
       386 
405 
     | 
    
         
             
                private
         
     | 
| 
       387 
406 
     | 
    
         | 
| 
       388 
     | 
    
         
            -
                def get_sub_block(name)
         
     | 
| 
       389 
     | 
    
         
            -
                  sub_blocks[name]
         
     | 
| 
       390 
     | 
    
         
            -
                end
         
     | 
| 
       391 
     | 
    
         
            -
             
     | 
| 
       392 
407 
     | 
    
         
             
                def instantiate_sub_block(name, klass, options)
         
     | 
| 
       393 
408 
     | 
    
         
             
                  return sub_blocks[name] unless sub_blocks[name].is_a?(Placeholder)
         
     | 
| 
       394 
409 
     | 
    
         
             
                  sub_blocks[name] = klass.new(options.merge(parent: self, name: name))
         
     | 
| 
         @@ -38,7 +38,11 @@ END_OF_MESSAGE 
     | 
|
| 
       38 
38 
     | 
    
         | 
| 
       39 
39 
     | 
    
         
             
                      begin
         
     | 
| 
       40 
40 
     | 
    
         
             
                        Origen.log.debug('Origen::Utility::Mailer Setup:')
         
     | 
| 
       41 
     | 
    
         
            -
                         
     | 
| 
      
 41 
     | 
    
         
            +
                        # Must not save a user's password to the Origen log file! So build a shadow copy of the
         
     | 
| 
      
 42 
     | 
    
         
            +
                        # options hash and display that content in the log file with the auth_password removed.
         
     | 
| 
      
 43 
     | 
    
         
            +
                        options_reduced = options
         
     | 
| 
      
 44 
     | 
    
         
            +
                        options_reduced.delete(:auth_password)
         
     | 
| 
      
 45 
     | 
    
         
            +
                        options_reduced.each { |k, v| Origen.log.debug("  #{k}: #{v}") }
         
     | 
| 
       42 
46 
     | 
    
         | 
| 
       43 
47 
     | 
    
         
             
                        # Net::SMTP.start(options[:server], options[:port]) do |smtp|
         
     | 
| 
       44 
48 
     | 
    
         
             
                        #  smtp.send_message msg, options[:from], addr
         
     | 
| 
         @@ -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 = "2020- 
     | 
| 
      
 11 
     | 
    
         
            +
              s.date = "2020-05-26"
         
     | 
| 
       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 = " 
     | 
| 
      
 17 
     | 
    
         
            +
              s.rubygems_version = "3.0.3".freeze
         
     | 
| 
       18 
18 
     | 
    
         
             
              s.summary = "Origen application generators".freeze
         
     | 
| 
       19 
19 
     | 
    
         | 
| 
       20 
     | 
    
         
            -
              s.installed_by_version = " 
     | 
| 
      
 20 
     | 
    
         
            +
              s.installed_by_version = "3.0.3" 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.57.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: 2020- 
     | 
| 
      
 11 
     | 
    
         
            +
            date: 2020-05-26 00:00:00.000000000 Z
         
     | 
| 
       12 
12 
     | 
    
         
             
            dependencies:
         
     | 
| 
       13 
13 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       14 
14 
     | 
    
         
             
              name: activesupport
         
     | 
| 
         @@ -749,8 +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 
     | 
    
         
            -
             
     | 
| 
       753 
     | 
    
         
            -
            rubygems_version: 2.6.12
         
     | 
| 
      
 752 
     | 
    
         
            +
            rubygems_version: 3.0.3
         
     | 
| 
       754 
753 
     | 
    
         
             
            signing_key: 
         
     | 
| 
       755 
754 
     | 
    
         
             
            specification_version: 4
         
     | 
| 
       756 
755 
     | 
    
         
             
            summary: The Semiconductor Developer's Kit
         
     |