origen 0.0.1 → 0.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/bin/ctags +0 -0
- data/bin/origen +165 -1
- data/bin/rgen +2 -0
- data/config/application.rb +141 -0
- data/config/commands.rb +72 -0
- data/config/development.rb +7 -0
- data/config/environment.rb +0 -0
- data/config/rgen.policy +7 -0
- data/config/rubocop/easy.yml +620 -0
- data/config/rubocop/easy_disabled.yml +271 -0
- data/config/rubocop/easy_enabled.yml +731 -0
- data/config/rubocop/strict.yml +620 -0
- data/config/rubocop/strict_disabled.yml +247 -0
- data/config/rubocop/strict_enabled.yml +755 -0
- data/config/users.rb +20 -0
- data/config/version.rb +1 -1
- data/helpers/url.rb +68 -0
- data/lib/c99/doc_interface.rb +56 -0
- data/lib/c99/j750_interface.rb +85 -0
- data/lib/c99/nvm.rb +89 -0
- data/lib/c99/target/mock2.rb +1 -0
- data/lib/c99/target/subdir/mock3.rb +1 -0
- data/lib/option_parser/optparse.rb +12 -0
- data/lib/origen/acronyms.rb +60 -0
- data/lib/origen/application/command_dispatcher.rb +12 -0
- data/lib/origen/application/configuration.rb +206 -0
- data/lib/origen/application/configuration_manager.rb +78 -0
- data/lib/origen/application/deployer.rb +367 -0
- data/lib/origen/application/environment.rb +186 -0
- data/lib/origen/application/lsf.rb +145 -0
- data/lib/origen/application/lsf_manager.rb +657 -0
- data/lib/origen/application/plugins_manager.rb +280 -0
- data/lib/origen/application/release.rb +359 -0
- data/lib/origen/application/runner.rb +246 -0
- data/lib/origen/application/statistics.rb +191 -0
- data/lib/origen/application/target.rb +374 -0
- data/lib/origen/application/version_tracker.rb +59 -0
- data/lib/origen/application/workspace_manager.rb +151 -0
- data/lib/origen/application.rb +746 -0
- data/lib/origen/bugs/bug.rb +36 -0
- data/lib/origen/bugs.rb +45 -0
- data/lib/origen/callbacks.rb +35 -0
- data/lib/origen/chip_mode.rb +118 -0
- data/lib/origen/chip_package.rb +461 -0
- data/lib/origen/client.rb +87 -0
- data/lib/origen/code_generators/actions.rb +258 -0
- data/lib/origen/code_generators/base.rb +57 -0
- data/lib/origen/code_generators/bundler.rb +17 -0
- data/lib/origen/code_generators/gem_setup.rb +49 -0
- data/lib/origen/code_generators/rake.rb +13 -0
- data/lib/origen/code_generators/rspec.rb +12 -0
- data/lib/origen/code_generators/semver.rb +39 -0
- data/lib/origen/code_generators/timever.rb +37 -0
- data/lib/origen/code_generators.rb +111 -0
- data/lib/origen/commands/add.rb +12 -0
- data/lib/origen/commands/compile.rb +62 -0
- data/lib/origen/commands/ctags.rb +9 -0
- data/lib/origen/commands/dispatch.rb +22 -0
- data/lib/origen/commands/environment.rb +11 -0
- data/lib/origen/commands/fetch.rb +63 -0
- data/lib/origen/commands/generate.rb +130 -0
- data/lib/origen/commands/interactive.rb +73 -0
- data/lib/origen/commands/lint.rb +82 -0
- data/lib/origen/commands/lsf.rb +93 -0
- data/lib/origen/commands/merge.rb +55 -0
- data/lib/origen/commands/modifications.rb +12 -0
- data/lib/origen/commands/new.rb +113 -0
- data/lib/origen/commands/plugin.rb +105 -0
- data/lib/origen/commands/program.rb +70 -0
- data/lib/origen/commands/rc.rb +442 -0
- data/lib/origen/commands/save.rb +56 -0
- data/lib/origen/commands/target.rb +27 -0
- data/lib/origen/commands/time.rb +127 -0
- data/lib/origen/commands/version.rb +17 -0
- data/lib/origen/commands/web.rb +221 -0
- data/lib/origen/commands.rb +272 -0
- data/lib/origen/commands_global.rb +76 -0
- data/lib/origen/controller.rb +94 -0
- data/lib/origen/core_ext/array.rb +23 -0
- data/lib/origen/core_ext/bignum.rb +36 -0
- data/lib/origen/core_ext/enumerable.rb +76 -0
- data/lib/origen/core_ext/fixnum.rb +46 -0
- data/lib/origen/core_ext/hash.rb +52 -0
- data/lib/origen/core_ext/module.rb +14 -0
- data/lib/origen/core_ext/numeric.rb +126 -0
- data/lib/origen/core_ext/object.rb +13 -0
- data/lib/origen/core_ext/range.rb +7 -0
- data/lib/origen/core_ext/string.rb +124 -0
- data/lib/origen/core_ext.rb +10 -0
- data/lib/origen/database/key_value_store.rb +111 -0
- data/lib/origen/database/key_value_stores.rb +108 -0
- data/lib/origen/database.rb +6 -0
- data/lib/origen/encodings.rb +102 -0
- data/lib/origen/features/feature.rb +22 -0
- data/lib/origen/features.rb +104 -0
- data/lib/origen/file_handler.rb +429 -0
- data/lib/origen/generator/comparator.rb +56 -0
- data/lib/origen/generator/compiler.rb +277 -0
- data/lib/origen/generator/flow.rb +49 -0
- data/lib/origen/generator/job.rb +131 -0
- data/lib/origen/generator/pattern.rb +356 -0
- data/lib/origen/generator/pattern_finder.rb +155 -0
- data/lib/origen/generator/pattern_iterator.rb +55 -0
- data/lib/origen/generator/renderer.rb +113 -0
- data/lib/origen/generator/resources.rb +40 -0
- data/lib/origen/generator/stage.rb +89 -0
- data/lib/origen/generator.rb +85 -0
- data/lib/origen/global_methods.rb +205 -0
- data/lib/origen/import_manager.rb +596 -0
- data/lib/origen/location/base.rb +116 -0
- data/lib/origen/location/map.rb +83 -0
- data/lib/origen/location.rb +6 -0
- data/lib/origen/log.rb +217 -0
- data/lib/origen/logger_methods.rb +56 -0
- data/lib/origen/mode.rb +61 -0
- data/lib/origen/model.rb +267 -0
- data/lib/origen/model_initializer.rb +45 -0
- data/lib/origen/nvm/block_array.rb +72 -0
- data/lib/origen/nvm.rb +6 -0
- data/lib/origen/parameters/live.rb +22 -0
- data/lib/origen/parameters/missing.rb +28 -0
- data/lib/origen/parameters/set.rb +144 -0
- data/lib/origen/parameters.rb +107 -0
- data/lib/origen/pdm.rb +218 -0
- data/lib/origen/pins/function_proxy.rb +36 -0
- data/lib/origen/pins/ground_pin.rb +6 -0
- data/lib/origen/pins/pin.rb +860 -0
- data/lib/origen/pins/pin_bank.rb +349 -0
- data/lib/origen/pins/pin_clock.rb +124 -0
- data/lib/origen/pins/pin_collection.rb +492 -0
- data/lib/origen/pins/pin_common.rb +206 -0
- data/lib/origen/pins/port.rb +268 -0
- data/lib/origen/pins/power_pin.rb +30 -0
- data/lib/origen/pins.rb +696 -0
- data/lib/origen/registers/bit.rb +562 -0
- data/lib/origen/registers/bit_collection.rb +787 -0
- data/lib/origen/registers/container.rb +288 -0
- data/lib/origen/registers/domain.rb +16 -0
- data/lib/origen/registers/reg.rb +1406 -0
- data/lib/origen/registers/reg_collection.rb +24 -0
- data/lib/origen/registers.rb +652 -0
- data/lib/origen/regression_manager.rb +251 -0
- data/lib/origen/remote_manager.rb +340 -0
- data/lib/origen/revision_control/base.rb +257 -0
- data/lib/origen/revision_control/design_sync.rb +276 -0
- data/lib/origen/revision_control/git.rb +243 -0
- data/lib/origen/revision_control/subversion.rb +6 -0
- data/lib/origen/revision_control.rb +44 -0
- data/lib/origen/ruby_version_check.rb +131 -0
- data/lib/origen/site_config.rb +61 -0
- data/lib/origen/specs/checkers.rb +103 -0
- data/lib/origen/specs/creation_info.rb +17 -0
- data/lib/origen/specs/doc_resource.rb +91 -0
- data/lib/origen/specs/exhibit.rb +17 -0
- data/lib/origen/specs/mode_select.rb +16 -0
- data/lib/origen/specs/note.rb +17 -0
- data/lib/origen/specs/override.rb +21 -0
- data/lib/origen/specs/power_supply.rb +13 -0
- data/lib/origen/specs/spec.rb +226 -0
- data/lib/origen/specs/version_history.rb +14 -0
- data/lib/origen/specs.rb +552 -0
- data/lib/origen/sub_blocks.rb +298 -0
- data/lib/origen/tester/api.rb +277 -0
- data/lib/origen/tester/bdm/bdm.rb +25 -0
- data/lib/origen/tester/command_based_tester.rb +46 -0
- data/lib/origen/tester/doc/doc.rb +226 -0
- data/lib/origen/tester/doc/generator/flow.rb +71 -0
- data/lib/origen/tester/doc/generator/flow_line.rb +203 -0
- data/lib/origen/tester/doc/generator/test.rb +68 -0
- data/lib/origen/tester/doc/generator/test_group.rb +66 -0
- data/lib/origen/tester/doc/generator/tests.rb +47 -0
- data/lib/origen/tester/doc/generator.rb +126 -0
- data/lib/origen/tester/doc/model.rb +162 -0
- data/lib/origen/tester/generator/flow_control_api.rb +606 -0
- data/lib/origen/tester/generator/identity_map.rb +25 -0
- data/lib/origen/tester/generator/placeholder.rb +13 -0
- data/lib/origen/tester/generator/test_numberer.rb +25 -0
- data/lib/origen/tester/generator.rb +271 -0
- data/lib/origen/tester/interface.rb +154 -0
- data/lib/origen/tester/j750/files.rb +45 -0
- data/lib/origen/tester/j750/generator/flow.rb +123 -0
- data/lib/origen/tester/j750/generator/flow_line.rb +288 -0
- data/lib/origen/tester/j750/generator/patgroup.rb +111 -0
- data/lib/origen/tester/j750/generator/patgroups.rb +41 -0
- data/lib/origen/tester/j750/generator/patset.rb +111 -0
- data/lib/origen/tester/j750/generator/patsets.rb +41 -0
- data/lib/origen/tester/j750/generator/templates/flow.txt.erb +9 -0
- data/lib/origen/tester/j750/generator/templates/instances.txt.erb +16 -0
- data/lib/origen/tester/j750/generator/templates/patgroups.txt.erb +8 -0
- data/lib/origen/tester/j750/generator/templates/patsets.txt.erb +10 -0
- data/lib/origen/tester/j750/generator/test_instance.rb +846 -0
- data/lib/origen/tester/j750/generator/test_instance_group.rb +60 -0
- data/lib/origen/tester/j750/generator/test_instances.rb +182 -0
- data/lib/origen/tester/j750/generator.rb +203 -0
- data/lib/origen/tester/j750/j750.rb +845 -0
- data/lib/origen/tester/j750/j750_hpt.rb +35 -0
- data/lib/origen/tester/j750/parser/ac_spec.rb +11 -0
- data/lib/origen/tester/j750/parser/ac_specs.rb +0 -0
- data/lib/origen/tester/j750/parser/dc_spec.rb +36 -0
- data/lib/origen/tester/j750/parser/dc_specs.rb +50 -0
- data/lib/origen/tester/j750/parser/descriptions.rb +340 -0
- data/lib/origen/tester/j750/parser/flow.rb +111 -0
- data/lib/origen/tester/j750/parser/flow_line.rb +207 -0
- data/lib/origen/tester/j750/parser/flows.rb +23 -0
- data/lib/origen/tester/j750/parser/pattern_set.rb +94 -0
- data/lib/origen/tester/j750/parser/pattern_sets.rb +33 -0
- data/lib/origen/tester/j750/parser/test_instance.rb +322 -0
- data/lib/origen/tester/j750/parser/test_instances.rb +26 -0
- data/lib/origen/tester/j750/parser/timeset.rb +15 -0
- data/lib/origen/tester/j750/parser/timesets.rb +0 -0
- data/lib/origen/tester/j750/parser.rb +104 -0
- data/lib/origen/tester/jlink/jlink.rb +33 -0
- data/lib/origen/tester/parser/description_lookup.rb +64 -0
- data/lib/origen/tester/parser/searchable_array.rb +32 -0
- data/lib/origen/tester/parser/searchable_hash.rb +32 -0
- data/lib/origen/tester/parser.rb +24 -0
- data/lib/origen/tester/time.rb +338 -0
- data/lib/origen/tester/timing.rb +253 -0
- data/lib/origen/tester/ultraflex/files.rb +45 -0
- data/lib/origen/tester/ultraflex/generator/flow.rb +119 -0
- data/lib/origen/tester/ultraflex/generator/flow_line.rb +269 -0
- data/lib/origen/tester/ultraflex/generator/patgroup.rb +111 -0
- data/lib/origen/tester/ultraflex/generator/patgroups.rb +41 -0
- data/lib/origen/tester/ultraflex/generator/patset.rb +111 -0
- data/lib/origen/tester/ultraflex/generator/patsets.rb +41 -0
- data/lib/origen/tester/ultraflex/generator/templates/flow.txt.erb +9 -0
- data/lib/origen/tester/ultraflex/generator/templates/instances.txt.erb +16 -0
- data/lib/origen/tester/ultraflex/generator/templates/patgroups.txt.erb +8 -0
- data/lib/origen/tester/ultraflex/generator/templates/patsets.txt.erb +10 -0
- data/lib/origen/tester/ultraflex/generator/test_instance.rb +622 -0
- data/lib/origen/tester/ultraflex/generator/test_instance_group.rb +60 -0
- data/lib/origen/tester/ultraflex/generator/test_instances.rb +174 -0
- data/lib/origen/tester/ultraflex/generator.rb +200 -0
- data/lib/origen/tester/ultraflex/parser/ac_spec.rb +11 -0
- data/lib/origen/tester/ultraflex/parser/ac_specs.rb +0 -0
- data/lib/origen/tester/ultraflex/parser/dc_spec.rb +36 -0
- data/lib/origen/tester/ultraflex/parser/dc_specs.rb +50 -0
- data/lib/origen/tester/ultraflex/parser/descriptions.rb +342 -0
- data/lib/origen/tester/ultraflex/parser/flow.rb +111 -0
- data/lib/origen/tester/ultraflex/parser/flow_line.rb +207 -0
- data/lib/origen/tester/ultraflex/parser/flows.rb +23 -0
- data/lib/origen/tester/ultraflex/parser/pattern_set.rb +94 -0
- data/lib/origen/tester/ultraflex/parser/pattern_sets.rb +33 -0
- data/lib/origen/tester/ultraflex/parser/test_instance.rb +262 -0
- data/lib/origen/tester/ultraflex/parser/test_instances.rb +26 -0
- data/lib/origen/tester/ultraflex/parser/timeset.rb +15 -0
- data/lib/origen/tester/ultraflex/parser/timesets.rb +0 -0
- data/lib/origen/tester/ultraflex/parser.rb +104 -0
- data/lib/origen/tester/ultraflex/ultraflex.rb +759 -0
- data/lib/origen/tester/v93k/generator/flow.rb +63 -0
- data/lib/origen/tester/v93k/generator/flow_node/print.rb +10 -0
- data/lib/origen/tester/v93k/generator/flow_node.rb +17 -0
- data/lib/origen/tester/v93k/generator/pattern.rb +16 -0
- data/lib/origen/tester/v93k/generator/pattern_master.rb +54 -0
- data/lib/origen/tester/v93k/generator/templates/_test_method.txt.erb +6 -0
- data/lib/origen/tester/v93k/generator/templates/_test_suite.txt.erb +11 -0
- data/lib/origen/tester/v93k/generator/templates/template.flow.erb +121 -0
- data/lib/origen/tester/v93k/generator/templates/template.pmfl.erb +9 -0
- data/lib/origen/tester/v93k/generator/test_function.rb +103 -0
- data/lib/origen/tester/v93k/generator/test_functions.rb +79 -0
- data/lib/origen/tester/v93k/generator/test_method.rb +46 -0
- data/lib/origen/tester/v93k/generator/test_methods.rb +75 -0
- data/lib/origen/tester/v93k/generator/test_suite.rb +54 -0
- data/lib/origen/tester/v93k/generator/test_suites.rb +65 -0
- data/lib/origen/tester/v93k/generator.rb +80 -0
- data/lib/origen/tester/v93k/v93k.rb +420 -0
- data/lib/origen/tester/vector.rb +86 -0
- data/lib/origen/tester/vector_generator.rb +633 -0
- data/lib/origen/tester/vector_pipeline.rb +150 -0
- data/lib/origen/tester.rb +56 -0
- data/lib/origen/top_level.rb +134 -0
- data/lib/origen/users/ldap.rb +65 -0
- data/lib/origen/users/user.rb +149 -0
- data/lib/origen/users.rb +30 -0
- data/lib/origen/utility/block_args.rb +93 -0
- data/lib/origen/utility/csv_data.rb +110 -0
- data/lib/origen/utility/design_sync.rb +494 -0
- data/lib/origen/utility/diff.rb +158 -0
- data/lib/origen/utility/input_capture.rb +121 -0
- data/lib/origen/utility/mailer.rb +143 -0
- data/lib/origen/utility/s_record.rb +205 -0
- data/lib/origen/utility/time_and_date.rb +30 -0
- data/lib/origen/utility.rb +12 -0
- data/lib/origen/version_checker.rb +117 -0
- data/lib/origen/version_string.rb +356 -0
- data/lib/origen.rb +648 -0
- data/lib/tasks/gem.rake +27 -22
- data/origen_site_config.yml +36 -0
- data/source_setup +17 -0
- data/spec/format/rgen_formatter.rb +14 -0
- data/templates/api_doc/README.txt.erb +24 -0
- data/templates/code_generators/gemfile_app.rb +4 -0
- data/templates/code_generators/gemfile_plugin.rb +6 -0
- data/templates/code_generators/gemspec.rb +33 -0
- data/templates/code_generators/rakefile.rb +10 -0
- data/templates/code_generators/spec_helper.rb +49 -0
- data/templates/code_generators/version.rb +8 -0
- data/templates/code_generators/version_time.rb +3 -0
- data/templates/git/gitignore.erb +33 -0
- data/templates/j750/_vt_flow.txt.erb +8 -0
- data/templates/j750/_vt_instances.txt.erb +4 -0
- data/templates/j750/program_sheet.txt.erb +9 -0
- data/templates/nanoc/Rules +74 -0
- data/templates/nanoc/config.yaml +77 -0
- data/templates/nanoc/content/favicon.ico +0 -0
- data/templates/nanoc/layouts/bootstrap.html.erb +63 -0
- data/templates/nanoc/layouts/bootstrap3.html.erb +71 -0
- data/templates/nanoc/layouts/freescale.html.erb +79 -0
- data/templates/nanoc/lib/bootstrap_filter.rb +49 -0
- data/templates/nanoc/lib/codeblocks_filter.rb +41 -0
- data/templates/nanoc/lib/default.rb +2 -0
- data/templates/nanoc/lib/gzip_filter.rb +16 -0
- data/templates/nanoc/lib/haml_code_filter.rb +41 -0
- data/templates/nanoc/lib/helpers.rb +1 -0
- data/templates/nanoc/lib/search_filter.rb +62 -0
- data/templates/nanoc_dynamic/content/search.js.erb +92 -0
- data/templates/shared/web/_logo.html +10 -0
- data/templates/test/_inline_sub.txt.erb +2 -0
- data/templates/test/environment.txt.erb +1 -0
- data/templates/test/inline.txt.erb +11 -0
- data/templates/test/inspections.txt.erb +19 -0
- data/templates/test/set1/_sub1.txt.erb +12 -0
- data/templates/test/set1/_sub4.txt.erb +1 -0
- data/templates/test/set1/_sub5.txt.erb +1 -0
- data/templates/test/set1/main.txt.erb +53 -0
- data/templates/test/set1/sub_dir/_sub2.txt.erb +20 -0
- data/templates/test/set1/sub_dir/_sub3.txt.erb +12 -0
- data/templates/test/set1/sub_dir/main2.txt.erb +4 -0
- data/templates/test/set2/template_with_no_erb_1.txt +9 -0
- data/templates/test/set2/template_with_no_erb_2.txt +9 -0
- data/templates/test/set3/_layout.html.erb +4 -0
- data/templates/test/set3/content.html.erb +6 -0
- data/templates/time/filter.rb.erb +15 -0
- data/templates/time/rules.rb.erb +45 -0
- metadata +639 -5
data/lib/origen.rb
ADDED
|
@@ -0,0 +1,648 @@
|
|
|
1
|
+
require 'English'
|
|
2
|
+
require 'pathname'
|
|
3
|
+
require 'fileutils'
|
|
4
|
+
require 'origen/core_ext'
|
|
5
|
+
require 'origen/acronyms'
|
|
6
|
+
require 'origen/callbacks'
|
|
7
|
+
require 'origen/top_level'
|
|
8
|
+
require 'origen/model'
|
|
9
|
+
require 'origen/ruby_version_check'
|
|
10
|
+
require 'origen/application'
|
|
11
|
+
require 'origen/import_manager'
|
|
12
|
+
require 'origen/remote_manager'
|
|
13
|
+
require 'origen/utility'
|
|
14
|
+
require 'origen/version_checker'
|
|
15
|
+
require 'origen/logger_methods'
|
|
16
|
+
require 'option_parser/optparse'
|
|
17
|
+
require 'bundler'
|
|
18
|
+
require 'origen/site_config'
|
|
19
|
+
|
|
20
|
+
module Origen
|
|
21
|
+
autoload :Features, 'origen/features'
|
|
22
|
+
autoload :Bugs, 'origen/bugs'
|
|
23
|
+
autoload :Generator, 'origen/generator'
|
|
24
|
+
autoload :Pins, 'origen/pins'
|
|
25
|
+
autoload :Registers, 'origen/registers'
|
|
26
|
+
autoload :Tester, 'origen/tester'
|
|
27
|
+
autoload :Users, 'origen/users'
|
|
28
|
+
autoload :FileHandler, 'origen/file_handler'
|
|
29
|
+
autoload :RegressionManager, 'origen/regression_manager'
|
|
30
|
+
autoload :NVM, 'origen/nvm'
|
|
31
|
+
autoload :Location, 'origen/location'
|
|
32
|
+
autoload :VersionString, 'origen/version_string'
|
|
33
|
+
autoload :Mode, 'origen/mode'
|
|
34
|
+
autoload :ChipMode, 'origen/chip_mode'
|
|
35
|
+
autoload :ChipPackage, 'origen/chip_package'
|
|
36
|
+
autoload :Client, 'origen/client'
|
|
37
|
+
autoload :SubBlocks, 'origen/sub_blocks'
|
|
38
|
+
autoload :SubBlock, 'origen/sub_blocks'
|
|
39
|
+
autoload :ModelInitializer, 'origen/model_initializer'
|
|
40
|
+
autoload :Controller, 'origen/controller'
|
|
41
|
+
autoload :Database, 'origen/database'
|
|
42
|
+
autoload :Parameters, 'origen/parameters'
|
|
43
|
+
autoload :RevisionControl, 'origen/revision_control'
|
|
44
|
+
autoload :Specs, 'origen/specs'
|
|
45
|
+
autoload :CodeGenerators, 'origen/code_generators'
|
|
46
|
+
autoload :Encodings, 'origen/encodings'
|
|
47
|
+
autoload :Log, 'origen/log'
|
|
48
|
+
|
|
49
|
+
APP_CONFIG = File.join('config', 'application.rb')
|
|
50
|
+
|
|
51
|
+
class OrigenError < StandardError
|
|
52
|
+
def self.status_code(code)
|
|
53
|
+
define_method(:status_code) { code }
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
class GitError < OrigenError; status_code(11); end
|
|
58
|
+
class DesignSyncError < OrigenError; status_code(12); end
|
|
59
|
+
|
|
60
|
+
class << self
|
|
61
|
+
include Origen::Utility::TimeAndDate
|
|
62
|
+
|
|
63
|
+
def enable_profiling
|
|
64
|
+
@profiling = true
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
def disable_profiling
|
|
68
|
+
@profiling = false
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
def profile(message)
|
|
72
|
+
if @profiling
|
|
73
|
+
caller[0] =~ /.*\/(\w+\.rb):(\d+).*/
|
|
74
|
+
if block_given?
|
|
75
|
+
start = Time.now
|
|
76
|
+
yield
|
|
77
|
+
duration_in_ms = ((Time.now - start) * 1000).round
|
|
78
|
+
puts "#{duration_in_ms}ms".ljust(10) + "#{Regexp.last_match[1]}:#{Regexp.last_match[2]} '#{message}'"
|
|
79
|
+
else
|
|
80
|
+
puts "#{Time.now} - #{Regexp.last_match[1]}:#{Regexp.last_match[2]} #{message}"
|
|
81
|
+
end
|
|
82
|
+
else
|
|
83
|
+
yield if block_given?
|
|
84
|
+
end
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
def register_application(app)
|
|
88
|
+
_applications_lookup[:name][app.name] = app
|
|
89
|
+
_applications_lookup[:root][app.root.to_s] = app
|
|
90
|
+
@plugins = nil
|
|
91
|
+
end
|
|
92
|
+
|
|
93
|
+
# Returns an array containing the application instances of all plugins
|
|
94
|
+
def plugins
|
|
95
|
+
@plugins ||= begin
|
|
96
|
+
top = Origen.app
|
|
97
|
+
plugins = []
|
|
98
|
+
Origen._applications_lookup[:name].each do |_name, app|
|
|
99
|
+
plugins << app unless app == top
|
|
100
|
+
end
|
|
101
|
+
plugins
|
|
102
|
+
end
|
|
103
|
+
end
|
|
104
|
+
|
|
105
|
+
def app_loaded?
|
|
106
|
+
@application_loaded
|
|
107
|
+
end
|
|
108
|
+
|
|
109
|
+
# Returns the current (top-level) application instance
|
|
110
|
+
def app(plugin = nil, _options = {})
|
|
111
|
+
plugin, options = nil, plugin if plugin.is_a?(Hash)
|
|
112
|
+
if plugin
|
|
113
|
+
load_application
|
|
114
|
+
app = _applications_lookup[:name][plugin.to_sym]
|
|
115
|
+
if app
|
|
116
|
+
app
|
|
117
|
+
else
|
|
118
|
+
puts "Couldn't find application instance called #{plugin}, known names are:"
|
|
119
|
+
puts " #{_applications_lookup[:name].keys.join(', ')}"
|
|
120
|
+
puts
|
|
121
|
+
fail 'Origen.root lookup error!'
|
|
122
|
+
end
|
|
123
|
+
else
|
|
124
|
+
load_application
|
|
125
|
+
end
|
|
126
|
+
end
|
|
127
|
+
alias_method :application, :app
|
|
128
|
+
|
|
129
|
+
# Equivalent to application except that if called from code in a plugin this
|
|
130
|
+
# will return that plugin's application instance
|
|
131
|
+
def app!
|
|
132
|
+
file = caller[0]
|
|
133
|
+
path = @current_source_dir || Pathname.new(file).dirname
|
|
134
|
+
until File.exist?(File.join(path, APP_CONFIG)) || path.root?
|
|
135
|
+
path = path.parent
|
|
136
|
+
end
|
|
137
|
+
if path.root?
|
|
138
|
+
fail "Something went wrong resoving Origen.app! from: #{caller[0]}"
|
|
139
|
+
end
|
|
140
|
+
find_app_by_root(path)
|
|
141
|
+
end
|
|
142
|
+
alias_method :application!, :app!
|
|
143
|
+
|
|
144
|
+
# @api private
|
|
145
|
+
def with_source_file(file)
|
|
146
|
+
@current_source_dir = Pathname.new(file).dirname
|
|
147
|
+
yield
|
|
148
|
+
@current_source_dir = nil
|
|
149
|
+
end
|
|
150
|
+
|
|
151
|
+
# Validates that when the current app is OrigenCore then the
|
|
152
|
+
# origen executable is coming from the same workspace
|
|
153
|
+
#
|
|
154
|
+
# @api private
|
|
155
|
+
def validate_origen_dev_configuration!
|
|
156
|
+
if Origen.app.name == :origen_core
|
|
157
|
+
if Origen.root != Origen.top
|
|
158
|
+
puts 'It looks like you are trying to develop Origen core, but you are running an Origen'
|
|
159
|
+
puts 'executable from another workspace!'
|
|
160
|
+
if Origen.running_on_windows?
|
|
161
|
+
puts 'To resolve this error you must add the following directory to your Windows PATH:'
|
|
162
|
+
puts " #{Origen.root}\\bin"
|
|
163
|
+
else
|
|
164
|
+
puts 'To resolve this error run:'
|
|
165
|
+
puts " cd #{Origen.root}"
|
|
166
|
+
puts ' source source_setup'
|
|
167
|
+
end
|
|
168
|
+
exit 1
|
|
169
|
+
end
|
|
170
|
+
end
|
|
171
|
+
end
|
|
172
|
+
|
|
173
|
+
# @api private
|
|
174
|
+
def _applications_lookup
|
|
175
|
+
@_applications_lookup ||= { name: {}, root: {} }
|
|
176
|
+
end
|
|
177
|
+
|
|
178
|
+
# Returns an instance of Origen::Users::LDAP which provides
|
|
179
|
+
# methods to query and authorize users against a company's LDAP-based employee directory
|
|
180
|
+
def ldap
|
|
181
|
+
@ldap ||= Origen::Users::LDAP.new
|
|
182
|
+
end
|
|
183
|
+
|
|
184
|
+
# Return the application instance from the given path
|
|
185
|
+
# to an Origen application workspace, i.e. Origen.app conventionally
|
|
186
|
+
# returns the current application instance, this method returns the
|
|
187
|
+
# same thing that would be returned from the given remote workspace.
|
|
188
|
+
#
|
|
189
|
+
# @api private
|
|
190
|
+
def find_app_by_root(path_to_origen_root, options = {})
|
|
191
|
+
app = _applications_lookup[:root][Pathname.new(path_to_origen_root).realpath.to_s]
|
|
192
|
+
if !app || options[:reload]
|
|
193
|
+
# If the application is already defined then un-define it, this is to allow it to
|
|
194
|
+
# be reloaded.
|
|
195
|
+
# This option feels like it doesn't belong here, but is part of the legacy import
|
|
196
|
+
# require system. When that has been removed in future so can this reload system, under
|
|
197
|
+
# bundler app versions will be resolved before loading them so there will be no need
|
|
198
|
+
# for this
|
|
199
|
+
if app
|
|
200
|
+
begin
|
|
201
|
+
Object.send(:remove_const, app.class.to_s)
|
|
202
|
+
rescue
|
|
203
|
+
# Nothing to do here
|
|
204
|
+
end
|
|
205
|
+
end
|
|
206
|
+
require File.join(path_to_origen_root, APP_CONFIG)
|
|
207
|
+
app = _applications_lookup[:root][Pathname.new(path_to_origen_root).realpath.to_s]
|
|
208
|
+
end
|
|
209
|
+
return app if app
|
|
210
|
+
puts "Couldn't find application instance with root #{path_to_origen_root}, known roots are:"
|
|
211
|
+
_applications_lookup[:root].keys.each do |key|
|
|
212
|
+
puts " #{key}"
|
|
213
|
+
end
|
|
214
|
+
puts
|
|
215
|
+
fail 'Application lookup error!'
|
|
216
|
+
end
|
|
217
|
+
alias_method :application_instance, :find_app_by_root
|
|
218
|
+
alias_method :app_instance, :find_app_by_root
|
|
219
|
+
|
|
220
|
+
def command_dispatcher
|
|
221
|
+
@command_dispatcher ||= Application::CommandDispatcher.new
|
|
222
|
+
end
|
|
223
|
+
|
|
224
|
+
def configuration
|
|
225
|
+
app.config
|
|
226
|
+
end
|
|
227
|
+
alias_method :config, :configuration
|
|
228
|
+
|
|
229
|
+
def mailer
|
|
230
|
+
application.mailer
|
|
231
|
+
end
|
|
232
|
+
|
|
233
|
+
def target
|
|
234
|
+
application.target
|
|
235
|
+
end
|
|
236
|
+
|
|
237
|
+
def load_target(t, options = {})
|
|
238
|
+
target.temporary = t
|
|
239
|
+
application.load_target!(options)
|
|
240
|
+
application.runner.prepare_and_validate_workspace
|
|
241
|
+
end
|
|
242
|
+
|
|
243
|
+
def environment
|
|
244
|
+
application.environment
|
|
245
|
+
end
|
|
246
|
+
|
|
247
|
+
# Returns true if Origen is running in an application workspace
|
|
248
|
+
def in_app_workspace?
|
|
249
|
+
path = Pathname.new(Dir.pwd)
|
|
250
|
+
until path.root? || File.exist?(File.join(path, APP_CONFIG))
|
|
251
|
+
path = path.parent
|
|
252
|
+
end
|
|
253
|
+
!path.root?
|
|
254
|
+
end
|
|
255
|
+
|
|
256
|
+
def root(plugin = nil)
|
|
257
|
+
if plugin
|
|
258
|
+
app(plugin).root
|
|
259
|
+
else
|
|
260
|
+
if @root_fudge_active
|
|
261
|
+
app.root
|
|
262
|
+
else
|
|
263
|
+
@root ||= begin
|
|
264
|
+
path = Pathname.new(Dir.pwd)
|
|
265
|
+
until path.root? || File.exist?(File.join(path, APP_CONFIG))
|
|
266
|
+
path = path.parent
|
|
267
|
+
end
|
|
268
|
+
if path.root?
|
|
269
|
+
fail 'Something went wrong resolving the application root!'
|
|
270
|
+
end
|
|
271
|
+
path
|
|
272
|
+
end
|
|
273
|
+
end
|
|
274
|
+
end
|
|
275
|
+
end
|
|
276
|
+
alias_method :app_root, :root
|
|
277
|
+
|
|
278
|
+
# Like Origen.root but this will return the plugin root if called by plugin code
|
|
279
|
+
def root!
|
|
280
|
+
file = caller[0]
|
|
281
|
+
path = Pathname.new(file).dirname
|
|
282
|
+
until path.root? || File.exist?(File.join(path, APP_CONFIG))
|
|
283
|
+
path = path.parent
|
|
284
|
+
end
|
|
285
|
+
if path.root?
|
|
286
|
+
fail "Something went wrong resolving Origen.root! from: #{caller[0]}"
|
|
287
|
+
end
|
|
288
|
+
path.realpath
|
|
289
|
+
end
|
|
290
|
+
|
|
291
|
+
# Ugly hack to force Origen.root references to the plugin's top-level when loading
|
|
292
|
+
# the environment.rb of the plugin
|
|
293
|
+
#
|
|
294
|
+
# References to Origen.root in a plugin environment.rb is deprecated and this will be
|
|
295
|
+
# removed in future once all plugins load through bundler
|
|
296
|
+
#
|
|
297
|
+
# @api private
|
|
298
|
+
def with_origen_root(path)
|
|
299
|
+
orig = app.root
|
|
300
|
+
@root_fudge_active = true
|
|
301
|
+
app.root = Pathname.new(path)
|
|
302
|
+
yield
|
|
303
|
+
app.root = orig
|
|
304
|
+
@root_fudge_active = false
|
|
305
|
+
end
|
|
306
|
+
|
|
307
|
+
# Turns off bundler and all plugins if the app is loaded within this block
|
|
308
|
+
# @api private
|
|
309
|
+
def with_boot_environment
|
|
310
|
+
@with_boot_environment = true
|
|
311
|
+
yield
|
|
312
|
+
@with_boot_environment = false
|
|
313
|
+
end
|
|
314
|
+
|
|
315
|
+
def with_disable_origen_version_check(*args, &block)
|
|
316
|
+
version_checker.with_disable_origen_version_check(*args, &block)
|
|
317
|
+
end
|
|
318
|
+
alias_method :disable_origen_version_check, :with_disable_origen_version_check
|
|
319
|
+
|
|
320
|
+
# This is the application-facing API for implementing custom callbacks,
|
|
321
|
+
# the top-level application, all plugin application instances, and any
|
|
322
|
+
# application objects that include the Origen::Callbacks module will be
|
|
323
|
+
# returned
|
|
324
|
+
#
|
|
325
|
+
# Origen system callbacks should use Origen.app.listeners_for instead, that
|
|
326
|
+
# version will return only the current plugin instance instead of them all
|
|
327
|
+
# (yes we need to make the API more obvious).
|
|
328
|
+
def listeners_for(*args)
|
|
329
|
+
callback = args.shift
|
|
330
|
+
max = args.first.is_a?(Numeric) ? args.shift : nil
|
|
331
|
+
listeners = [Origen.app] + Origen.plugins +
|
|
332
|
+
Origen.app.instantiated_callback_listeners
|
|
333
|
+
listeners = listeners.select { |l| l.respond_to?(callback) }
|
|
334
|
+
if max && listeners.size > max
|
|
335
|
+
fail "You can only define a #{callback} callback #{max > 1 ? (max.to_s + 'times') : 'once'}, however you have declared it #{listeners.size} times for instances of: #{listeners.map(&:class)}"
|
|
336
|
+
end
|
|
337
|
+
listeners
|
|
338
|
+
end
|
|
339
|
+
|
|
340
|
+
def generator
|
|
341
|
+
@generator ||= Generator.new
|
|
342
|
+
end
|
|
343
|
+
|
|
344
|
+
def client
|
|
345
|
+
@client ||= Client.new
|
|
346
|
+
end
|
|
347
|
+
|
|
348
|
+
def tester
|
|
349
|
+
application && application.tester
|
|
350
|
+
end
|
|
351
|
+
|
|
352
|
+
def pin_bank
|
|
353
|
+
@pin_bank ||= Pins::PinBank.new
|
|
354
|
+
end
|
|
355
|
+
|
|
356
|
+
def file_handler
|
|
357
|
+
@file_handler ||= FileHandler.new
|
|
358
|
+
end
|
|
359
|
+
|
|
360
|
+
def regression_manager
|
|
361
|
+
@regression_manager ||= RegressionManager.new
|
|
362
|
+
end
|
|
363
|
+
|
|
364
|
+
def import_manager
|
|
365
|
+
@import_manager ||= ImportManager.new
|
|
366
|
+
end
|
|
367
|
+
alias_method :imports_manager, :import_manager
|
|
368
|
+
|
|
369
|
+
def plugins_manager
|
|
370
|
+
application.plugins_manager
|
|
371
|
+
end
|
|
372
|
+
alias_method :plugin_manager, :plugins_manager
|
|
373
|
+
alias_method :current_plugin, :plugins_manager
|
|
374
|
+
|
|
375
|
+
def remote_manager
|
|
376
|
+
@remote_manager ||= RemoteManager.new
|
|
377
|
+
end
|
|
378
|
+
alias_method :remotes_manager, :remote_manager
|
|
379
|
+
|
|
380
|
+
def pattern
|
|
381
|
+
generator.pattern
|
|
382
|
+
end
|
|
383
|
+
|
|
384
|
+
def flow
|
|
385
|
+
generator.flow
|
|
386
|
+
end
|
|
387
|
+
|
|
388
|
+
def resources
|
|
389
|
+
generator.resources
|
|
390
|
+
end
|
|
391
|
+
|
|
392
|
+
def time
|
|
393
|
+
@time ||= Origen::Tester::Time.new
|
|
394
|
+
end
|
|
395
|
+
|
|
396
|
+
def controllers
|
|
397
|
+
@controllers ||= []
|
|
398
|
+
end
|
|
399
|
+
|
|
400
|
+
def version(options = {})
|
|
401
|
+
@version = nil if options[:refresh]
|
|
402
|
+
return @version if @version && !options[:refresh]
|
|
403
|
+
if options[:refresh] || !defined?(Origen::VERSION)
|
|
404
|
+
load File.join(Pathname.new(File.dirname(__FILE__)).parent, 'config', 'version.rb')
|
|
405
|
+
end
|
|
406
|
+
@version = Origen::VersionString.new(Origen::VERSION)
|
|
407
|
+
end
|
|
408
|
+
|
|
409
|
+
# Loads the top-level application and all of its plugins, but not the target
|
|
410
|
+
#
|
|
411
|
+
# In most cases this should never need to be called directly and will be called
|
|
412
|
+
# automatically the first time the application is referenced via Origen.app
|
|
413
|
+
def load_application(check_version = true)
|
|
414
|
+
@application ||= begin
|
|
415
|
+
# This flag is set so that when a thread starts with no app it remains with no app. This
|
|
416
|
+
# was an issue when building a new app with the fetch command and when the thread did a
|
|
417
|
+
# chdir to the new app directory (to fetch it) Origen.log would try to load the partial app.
|
|
418
|
+
@running_outside_an_app = true unless in_app_workspace?
|
|
419
|
+
return nil if @running_outside_an_app
|
|
420
|
+
require File.join(root, APP_CONFIG)
|
|
421
|
+
@application = _applications_lookup[:root][root.to_s]
|
|
422
|
+
if File.exist?(File.join(root, 'Gemfile')) && !@with_boot_environment
|
|
423
|
+
# Don't understand the rules here, belt and braces approach for now to make
|
|
424
|
+
# sure that all Origen plugins are auto-required (otherwise Origen won't know
|
|
425
|
+
# about them to plug them into the application)
|
|
426
|
+
Bundler.require
|
|
427
|
+
Bundler.require(:development)
|
|
428
|
+
Bundler.require(:runtime)
|
|
429
|
+
Bundler.require(:default)
|
|
430
|
+
end
|
|
431
|
+
if @with_boot_environment
|
|
432
|
+
@application.current_plugin.disable
|
|
433
|
+
else
|
|
434
|
+
Origen.import_manager.require!
|
|
435
|
+
Origen.remote_manager.require!
|
|
436
|
+
end
|
|
437
|
+
env = File.join(root, 'config', 'environment.rb')
|
|
438
|
+
require env if File.exist?(env)
|
|
439
|
+
dev = File.join(root, 'config', 'development.rb')
|
|
440
|
+
require dev if File.exist?(dev)
|
|
441
|
+
version_checker.check! if check_version
|
|
442
|
+
validate_origen_dev_configuration!
|
|
443
|
+
([@application] + Origen.plugins).each(&:on_loaded)
|
|
444
|
+
@application_loaded = true
|
|
445
|
+
@application
|
|
446
|
+
end
|
|
447
|
+
end
|
|
448
|
+
|
|
449
|
+
def launch_time
|
|
450
|
+
@launch_time ||= time_now
|
|
451
|
+
end
|
|
452
|
+
|
|
453
|
+
# Returns an instance of Origen::VersionChecker
|
|
454
|
+
def version_checker
|
|
455
|
+
@version_checker ||= VersionChecker.new
|
|
456
|
+
end
|
|
457
|
+
|
|
458
|
+
# Returns the full path to the Origen core top-level directory
|
|
459
|
+
def top
|
|
460
|
+
@origen_top ||= Pathname.new(File.dirname(__FILE__)).parent
|
|
461
|
+
end
|
|
462
|
+
|
|
463
|
+
# Compile the given file and return the result as a string
|
|
464
|
+
def compile(file, options = {})
|
|
465
|
+
Origen::Generator::Compiler.new.compile_inline(file, options)
|
|
466
|
+
end
|
|
467
|
+
|
|
468
|
+
def interfaces
|
|
469
|
+
@interfaces ||= []
|
|
470
|
+
end
|
|
471
|
+
|
|
472
|
+
def add_interface(interface_class)
|
|
473
|
+
interfaces << interface_class
|
|
474
|
+
end
|
|
475
|
+
|
|
476
|
+
# Resets the tester interface (instantiates a new one). Any supplied options
|
|
477
|
+
# are passed to the interface initialization.
|
|
478
|
+
def reset_interface(options = {})
|
|
479
|
+
# The doc interface should in future be phased out, but for now assume that an explicitly
|
|
480
|
+
# declared interface is for the non-doc case
|
|
481
|
+
if options[:interface] && !Origen.tester.doc?
|
|
482
|
+
@interface = eval(options[:interface]).new(options)
|
|
483
|
+
else
|
|
484
|
+
int = interfaces.find { |i| i.supports?(Origen.tester) }
|
|
485
|
+
if int
|
|
486
|
+
@interface = int.new(options)
|
|
487
|
+
else
|
|
488
|
+
unless options.delete(:silence_no_interface_error)
|
|
489
|
+
fail "No interface has been defined for tester: #{Origen.tester.class}"
|
|
490
|
+
end
|
|
491
|
+
end
|
|
492
|
+
end
|
|
493
|
+
@interface._load_generator if @interface.respond_to?(:_load_generator)
|
|
494
|
+
if @interface.respond_to?(:at_flow_start)
|
|
495
|
+
@interface.at_flow_start
|
|
496
|
+
else
|
|
497
|
+
@interface.reset_globals if @interface.respond_to?(:reset_globals)
|
|
498
|
+
end
|
|
499
|
+
@interface
|
|
500
|
+
end
|
|
501
|
+
|
|
502
|
+
def interface_loaded?
|
|
503
|
+
!!@interface
|
|
504
|
+
end
|
|
505
|
+
|
|
506
|
+
# Returns the (application defined) test program interface for the given tester
|
|
507
|
+
# if one has been defined, otherwise returns nil
|
|
508
|
+
def interface(options = {})
|
|
509
|
+
@interface || reset_interface(options)
|
|
510
|
+
end
|
|
511
|
+
|
|
512
|
+
# Returns true if an interface is defined for the current tester
|
|
513
|
+
def interface_present?
|
|
514
|
+
!!interface(silence_no_interface_error: true)
|
|
515
|
+
end
|
|
516
|
+
|
|
517
|
+
# Use User.current to retrieve the current user, this is an internal API that will
|
|
518
|
+
# be cleaned up (removed) in future
|
|
519
|
+
# @api private
|
|
520
|
+
def current_user
|
|
521
|
+
if app_loaded? || in_app_workspace?
|
|
522
|
+
application.current_user
|
|
523
|
+
else
|
|
524
|
+
User.new(User.current_user_id)
|
|
525
|
+
end
|
|
526
|
+
end
|
|
527
|
+
|
|
528
|
+
def lsf
|
|
529
|
+
application.lsf_manager
|
|
530
|
+
end
|
|
531
|
+
|
|
532
|
+
def running_on_windows?
|
|
533
|
+
RUBY_PLATFORM == 'i386-mingw32'
|
|
534
|
+
end
|
|
535
|
+
|
|
536
|
+
def running_on_linux?
|
|
537
|
+
!running_on_windows?
|
|
538
|
+
end
|
|
539
|
+
|
|
540
|
+
def running_remotely?
|
|
541
|
+
@running_remotely
|
|
542
|
+
end
|
|
543
|
+
alias_method :running_remotely, :running_remotely?
|
|
544
|
+
|
|
545
|
+
def running_locally?
|
|
546
|
+
!running_remotely?
|
|
547
|
+
end
|
|
548
|
+
|
|
549
|
+
def running_remotely=(val)
|
|
550
|
+
@running_remotely = val
|
|
551
|
+
end
|
|
552
|
+
|
|
553
|
+
# Returns true if Origen is running with the -d or --debug switches enabled
|
|
554
|
+
def debug?
|
|
555
|
+
@debug || false
|
|
556
|
+
end
|
|
557
|
+
alias_method :debugger?, :debug?
|
|
558
|
+
|
|
559
|
+
def enable_debugger
|
|
560
|
+
@debug = true
|
|
561
|
+
end
|
|
562
|
+
|
|
563
|
+
def debugger_enabled?
|
|
564
|
+
@debug
|
|
565
|
+
end
|
|
566
|
+
|
|
567
|
+
def development?
|
|
568
|
+
# This should be integrated with Origen.config.mode in the future
|
|
569
|
+
@development
|
|
570
|
+
end
|
|
571
|
+
|
|
572
|
+
def set_development_mode
|
|
573
|
+
@development = true
|
|
574
|
+
end
|
|
575
|
+
|
|
576
|
+
# Returns an object tracking the Origen execution mode/configuration, an
|
|
577
|
+
# instance of Origen::Mode
|
|
578
|
+
def mode
|
|
579
|
+
application.config.mode
|
|
580
|
+
end
|
|
581
|
+
|
|
582
|
+
def mode=(val)
|
|
583
|
+
application.config.mode = val
|
|
584
|
+
end
|
|
585
|
+
|
|
586
|
+
# Returns the current top-level (DUT) object if one has been defined (by
|
|
587
|
+
# instantiating an object that includes Origen::TopLevel).
|
|
588
|
+
def top_level
|
|
589
|
+
# TODO: This is called a lot and should probably be cached and expired
|
|
590
|
+
# on before_target_load
|
|
591
|
+
application.top_level
|
|
592
|
+
end
|
|
593
|
+
|
|
594
|
+
def deprecate(*msgs)
|
|
595
|
+
_deprecate(*msgs)
|
|
596
|
+
if Origen.app
|
|
597
|
+
# If an app deprecation return the caller who called the deprecated method
|
|
598
|
+
if caller[0] =~ /#{Origen.root}/
|
|
599
|
+
c = caller[1]
|
|
600
|
+
# If an Origen deprecation then return the first caller from the current app
|
|
601
|
+
else
|
|
602
|
+
c = caller.find { |line| line =~ /#{Origen.root}/ }
|
|
603
|
+
end
|
|
604
|
+
else
|
|
605
|
+
c = caller[1]
|
|
606
|
+
end
|
|
607
|
+
c =~ /(.*):(\d+):.*/
|
|
608
|
+
begin
|
|
609
|
+
_deprecate "Called by #{Regexp.last_match[1]}:#{Regexp.last_match[2]}", options
|
|
610
|
+
rescue
|
|
611
|
+
# For this to fail it means the deprecated method was called by IRB or similar
|
|
612
|
+
# and in that case there is no point advising who called anyway
|
|
613
|
+
end
|
|
614
|
+
end
|
|
615
|
+
alias_method :deprecated, :deprecate
|
|
616
|
+
|
|
617
|
+
def log
|
|
618
|
+
@log ||= Log.new
|
|
619
|
+
end
|
|
620
|
+
|
|
621
|
+
# Returns the name of the currently executing Origen command (a String),
|
|
622
|
+
# e.g. 'generate', 'program', 'compile', etc.
|
|
623
|
+
def current_command
|
|
624
|
+
@current_command
|
|
625
|
+
end
|
|
626
|
+
|
|
627
|
+
private
|
|
628
|
+
|
|
629
|
+
def current_command=(val)
|
|
630
|
+
@current_command = val
|
|
631
|
+
end
|
|
632
|
+
|
|
633
|
+
def _deprecate(*lines)
|
|
634
|
+
options = lines.last.is_a?(Hash) ? lines.pop : {}
|
|
635
|
+
lines.flatten.each do |line|
|
|
636
|
+
line.split(/\n/).each do |line|
|
|
637
|
+
log.deprecate line
|
|
638
|
+
end
|
|
639
|
+
end
|
|
640
|
+
end
|
|
641
|
+
end
|
|
642
|
+
end
|
|
643
|
+
|
|
644
|
+
# This is already required by commands.rb, but also necessary here so
|
|
645
|
+
# that is included whenever rspec (or another 3rd party) loads Origen
|
|
646
|
+
# outside the scope of an Origen command
|
|
647
|
+
require 'origen/global_methods'
|
|
648
|
+
include Origen::GlobalMethods
|
data/lib/tasks/gem.rake
CHANGED
|
@@ -1,32 +1,37 @@
|
|
|
1
1
|
namespace 'gem' do
|
|
2
|
-
|
|
2
|
+
GEM_SPEC = "#{Origen.root}/#{Origen.app.gem_name}.gemspec"
|
|
3
|
+
GEM_NAME = "#{Origen.app.gem_name}-#{Origen.app.version}.gem"
|
|
3
4
|
|
|
4
|
-
|
|
5
|
+
if File.exist?(GEM_SPEC)
|
|
5
6
|
|
|
6
|
-
|
|
7
|
-
GEM_NAME = "origen-#{Origen::VERSION}.gem"
|
|
8
|
-
GEM_SERVER = 'http://rgen-hub.am.freescale.net:9292'
|
|
7
|
+
built_gem_path = nil
|
|
9
8
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
9
|
+
desc "Build #{GEM_NAME} into the pkg directory"
|
|
10
|
+
task :build do
|
|
11
|
+
# Ensure all files are readable
|
|
12
|
+
sh("chmod a+r -R #{Origen.root}")
|
|
13
|
+
sh("gem build -V '#{GEM_SPEC}'") do |_ok, _res|
|
|
14
|
+
outdir = File.join(Origen.root, 'pkg')
|
|
15
|
+
FileUtils.mkdir_p(outdir)
|
|
16
|
+
FileUtils.mv(GEM_NAME, outdir)
|
|
17
|
+
built_gem_path = File.join(outdir, GEM_NAME)
|
|
18
|
+
puts "#{Origen.app.name} #{Origen.app.version} built to pkg/#{GEM_NAME}".green
|
|
19
|
+
end
|
|
20
20
|
end
|
|
21
|
-
end
|
|
22
21
|
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
puts "Origen #{Origen::VERSION} has been released successfully"
|
|
22
|
+
desc "Push #{GEM_NAME} to the Origen gem server"
|
|
23
|
+
task release: [:build] do
|
|
24
|
+
if Origen.app.config.release_externally
|
|
25
|
+
cmd = "gem push #{built_gem_path}"
|
|
28
26
|
else
|
|
29
|
-
|
|
27
|
+
cmd = "gem inabox --host #{Origen.site_config.gem_server!} #{built_gem_path}"
|
|
28
|
+
end
|
|
29
|
+
sh(cmd) do |ok, _res|
|
|
30
|
+
if ok
|
|
31
|
+
puts "#{Origen.app.name} #{Origen.app.version} has been released successfully".green
|
|
32
|
+
else
|
|
33
|
+
puts "Something went wrong releasing #{Origen.app.name} to the gem server!".red
|
|
34
|
+
end
|
|
30
35
|
end
|
|
31
36
|
end
|
|
32
37
|
end
|