origen_updater 0.2.0 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/bin/fix_my_workspace +78 -0
- data/config/application.rb +43 -37
- data/config/version.rb +1 -1
- data/lib/origen_updater.rb +15 -3
- metadata +5 -7
- data/config/shared_commands.rb +0 -18
- data/lib/origen_updater/on_updated.rb +0 -1
- data/lib/origen_updater/update.rb +0 -62
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f207701accc963a830a6e1434b4cce3f127819bc
|
4
|
+
data.tar.gz: 58de6275daf1f7d8e470c4ddb1ea3bc9f5a6ed65
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b5aa8946acd330747e3cb9e394fecc8ae3eda974c14e174d1c9a581b667730e65e8bafdcbd4f6f6002e83b6dc86b3a73a5ea10a82f7f3d86496a50fa2144e9e5
|
7
|
+
data.tar.gz: 6a36803945b5ae7e08f649aa89ab4a3fbb3dc6cc001517cb522a59c7d5b9ffc6029b3eb9e164e88ed364d159dac081dc347f06d938780a6f86292123a3f9f980
|
@@ -0,0 +1,78 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
$VERBOSE = nil # Don't care about world writable dir warnings and the like
|
3
|
+
|
4
|
+
if $_fix_my_workspace_version_check
|
5
|
+
$_fix_my_workspace_version = '0.3.0'
|
6
|
+
else
|
7
|
+
require 'origen'
|
8
|
+
|
9
|
+
if !Origen.site_config.gem_manage_bundler
|
10
|
+
puts 'Sorry but you have opted to manage Bundler yourself via your Origen site config, and this means'
|
11
|
+
puts 'that I cannot make certain assumptions about how your workspace is configured.'
|
12
|
+
puts 'You will need to either resolve this problem yourself, or else change the value of'
|
13
|
+
puts 'gem_mange_bundler to true.'
|
14
|
+
puts 'See here for more details on how to do that: http://origen-sdk.org/origen/guides/starting/company/'
|
15
|
+
|
16
|
+
else
|
17
|
+
ENV['BUNDLE_GEMFILE'] = File.join(Origen.root, 'Gemfile')
|
18
|
+
ENV['BUNDLE_PATH'] = File.expand_path(Origen.site_config.gem_install_dir)
|
19
|
+
ENV['BUNDLE_BIN'] = File.join(Origen.root, 'lbin')
|
20
|
+
|
21
|
+
# Force copy system gems to local gems
|
22
|
+
if Origen.site_config.gem_use_from_system
|
23
|
+
local_gem_dir = "#{ENV['BUNDLE_PATH']}/ruby/#{Pathname.new(Gem.dir).basename}"
|
24
|
+
gem_dir = Pathname.new(Gem.dir)
|
25
|
+
|
26
|
+
Origen.site_config.gem_use_from_system.each do |gem, version|
|
27
|
+
begin
|
28
|
+
# This will raise an error if the system doesn't have this gem installed, that
|
29
|
+
# will be rescued below
|
30
|
+
spec = Gem::Specification.find_by_name(gem, version)
|
31
|
+
|
32
|
+
local_dir = File.join(local_gem_dir, Pathname.new(spec.gem_dir).relative_path_from(gem_dir))
|
33
|
+
FileUtils.mkdir_p local_dir
|
34
|
+
FileUtils.cp_r(spec.gem_dir, local_dir)
|
35
|
+
|
36
|
+
local_file = Pathname.new(File.join(local_gem_dir, Pathname.new(spec.cache_file).relative_path_from(gem_dir)))
|
37
|
+
FileUtils.mkdir_p local_file.dirname
|
38
|
+
FileUtils.cp(spec.cache_file, local_file)
|
39
|
+
|
40
|
+
if spec.extension_dir && File.exist?(spec.extension_dir)
|
41
|
+
local_dir = File.join(local_gem_dir, Pathname.new(spec.extension_dir).relative_path_from(gem_dir))
|
42
|
+
FileUtils.mkdir_p local_dir
|
43
|
+
FileUtils.cp_r(spec.extension_dir, local_dir)
|
44
|
+
end
|
45
|
+
|
46
|
+
local_file = Pathname.new(File.join(local_gem_dir, Pathname.new(spec.spec_file).relative_path_from(gem_dir)))
|
47
|
+
FileUtils.mkdir_p local_file.dirname
|
48
|
+
FileUtils.cp(spec.spec_file, local_file)
|
49
|
+
|
50
|
+
rescue Gem::LoadError
|
51
|
+
# This just means that one of the gems that should be copied from the system
|
52
|
+
# was not actually installed in the system, so nothing we can do about that here
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
# Delete lbin
|
58
|
+
FileUtils.rm_rf(ENV['BUNDLE_BIN']) if File.exist?(ENV['BUNDLE_BIN'])
|
59
|
+
|
60
|
+
# Run bundler with correct switches
|
61
|
+
cmd = "bundle install --gemfile #{ENV['BUNDLE_GEMFILE']} --binstubs #{ENV['BUNDLE_BIN']} --path #{ENV['BUNDLE_PATH']}"
|
62
|
+
`chmod o-w #{Origen.root}` # Stops some annoying world writable warnings during install
|
63
|
+
`chmod o-w #{Origen.root}/bin` if File.exist?("#{Origen.root}/bin")
|
64
|
+
`chmod o-w #{Origen.root}/.bin` if File.exist?("#{Origen.root}/.bin")
|
65
|
+
|
66
|
+
# Try again, this time updating the bundle
|
67
|
+
if system(cmd)
|
68
|
+
fixed = true
|
69
|
+
elsif system 'bundle update'
|
70
|
+
fixed = true
|
71
|
+
end
|
72
|
+
|
73
|
+
`chmod o-w #{ENV['BUNDLE_BIN']}` if File.exist?(ENV['BUNDLE_BIN'])
|
74
|
+
|
75
|
+
system 'origen -v' if fixed
|
76
|
+
|
77
|
+
end
|
78
|
+
end
|
data/config/application.rb
CHANGED
@@ -1,94 +1,101 @@
|
|
1
1
|
require 'origen'
|
2
2
|
class OrigenUpdaterApplication < Origen::Application
|
3
|
-
|
4
3
|
# See http://origen-sdk.org/origen/api/Origen/Application/Configuration.html
|
5
4
|
# for a full list of the configuration options available
|
6
5
|
|
7
6
|
# These attributes should never be changed, the duplication here will be resolved in future
|
8
7
|
# by condensing these attributes that do similar things
|
9
|
-
self.name =
|
10
|
-
self.namespace =
|
11
|
-
config.name =
|
12
|
-
config.initials =
|
13
|
-
config.rc_url =
|
8
|
+
self.name = 'origen_updater'
|
9
|
+
self.namespace = 'OrigenUpdater'
|
10
|
+
config.name = 'origen_updater'
|
11
|
+
config.initials = 'OrigenUpdater'
|
12
|
+
config.rc_url = 'git@github.com:Origen-SDK/origen_updater.git'
|
14
13
|
config.release_externally = true
|
15
14
|
|
16
15
|
# To enable deployment of your documentation to a web server (via the 'origen web'
|
17
16
|
# command) fill in these attributes.
|
18
|
-
#config.web_directory = "git@github.com:Origen-SDK/Origen-SDK.github.io.git/origen_updater"
|
19
|
-
#config.web_domain = "http://origen-sdk.org/origen_updater"
|
17
|
+
# config.web_directory = "git@github.com:Origen-SDK/Origen-SDK.github.io.git/origen_updater"
|
18
|
+
# config.web_domain = "http://origen-sdk.org/origen_updater"
|
20
19
|
|
21
20
|
# When false Origen will be less strict about checking for some common coding errors,
|
22
21
|
# it is recommended that you leave this to true for better feedback and easier debug.
|
23
22
|
# This will be the default setting in Origen v3.
|
24
23
|
config.strict_errors = true
|
25
24
|
|
26
|
-
config.shared = {
|
27
|
-
command_launcher: "config/shared_commands.rb"
|
28
|
-
}
|
29
|
-
|
30
25
|
# See: http://origen-sdk.org/origen/latest/guides/utilities/lint/
|
31
26
|
config.lint_test = {
|
32
27
|
# Require the lint tests to pass before allowing a release to proceed
|
33
|
-
run_on_tag:
|
28
|
+
run_on_tag: true,
|
34
29
|
# Auto correct violations where possible whenever 'origen lint' is run
|
35
|
-
auto_correct: true,
|
30
|
+
auto_correct: true,
|
36
31
|
# Limit the testing for large legacy applications
|
37
|
-
#level: :easy,
|
32
|
+
# level: :easy,
|
38
33
|
# Run on these directories/files by default
|
39
|
-
|
34
|
+
files: ['lib', 'config/application.rb', 'bin']
|
40
35
|
}
|
41
36
|
|
42
37
|
config.semantically_version = true
|
43
38
|
|
39
|
+
def before_release_tag(identifier, note, type, selector, options)
|
40
|
+
v = Origen::VersionString.new(identifier)
|
41
|
+
# Update the version in the command files
|
42
|
+
f = "#{Origen.root}/bin/fix_my_workspace"
|
43
|
+
data = File.read(f)
|
44
|
+
filtered_data = data.sub(/\$_fix_my_workspace_version = '\d+\.\d+\.\d+'/, "$_fix_my_workspace_version = '#{v}'")
|
45
|
+
File.open(f, 'w') do |f|
|
46
|
+
f.write(filtered_data)
|
47
|
+
end
|
48
|
+
Origen.app.rc.checkin f, comment: 'Wrote new version in command code'
|
49
|
+
end
|
50
|
+
|
44
51
|
# An example of how to set application specific LSF parameters
|
45
|
-
#config.lsf.project = "msg.te"
|
46
|
-
|
52
|
+
# config.lsf.project = "msg.te"
|
53
|
+
|
47
54
|
# An example of how to specify a prefix to add to all generated patterns
|
48
|
-
#config.pattern_prefix = "nvm"
|
55
|
+
# config.pattern_prefix = "nvm"
|
49
56
|
|
50
57
|
# An example of how to add header comments to all generated patterns
|
51
|
-
#config.pattern_header do
|
58
|
+
# config.pattern_header do
|
52
59
|
# cc "This is a pattern created by the example origen application"
|
53
|
-
#end
|
60
|
+
# end
|
54
61
|
|
55
62
|
# By default all generated output will end up in ./output.
|
56
63
|
# Here you can specify an alternative directory entirely, or make it dynamic such that
|
57
|
-
# the output ends up in a setup specific directory.
|
58
|
-
#config.output_directory do
|
64
|
+
# the output ends up in a setup specific directory.
|
65
|
+
# config.output_directory do
|
59
66
|
# "#{Origen.root}/output/#{$dut.class}"
|
60
|
-
#end
|
67
|
+
# end
|
61
68
|
|
62
69
|
# Similarly for the reference files, generally you want to setup the reference directory
|
63
70
|
# structure to mirror that of your output directory structure.
|
64
|
-
#config.reference_directory do
|
71
|
+
# config.reference_directory do
|
65
72
|
# "#{Origen.root}/.ref/#{$dut.class}"
|
66
|
-
#end
|
67
|
-
|
73
|
+
# end
|
74
|
+
|
68
75
|
# This will automatically deploy your documentation after every tag
|
69
|
-
#def after_release_email(tag, note, type, selector, options)
|
76
|
+
# def after_release_email(tag, note, type, selector, options)
|
70
77
|
# command = "origen web compile --remote --api"
|
71
78
|
# Dir.chdir Origen.root do
|
72
79
|
# system command
|
73
80
|
# end
|
74
|
-
#end
|
81
|
+
# end
|
75
82
|
|
76
83
|
# Ensure that all tests pass before allowing a release to continue
|
77
|
-
#def validate_release
|
84
|
+
# def validate_release
|
78
85
|
# if !system("origen specs") || !system("origen examples")
|
79
86
|
# puts "Sorry but you can't release with failing tests, please fix them and try again."
|
80
87
|
# exit 1
|
81
88
|
# else
|
82
89
|
# puts "All tests passing, proceeding with release process!"
|
83
90
|
# end
|
84
|
-
#end
|
91
|
+
# end
|
85
92
|
|
86
93
|
# To enabled source-less pattern generation create a class (for example PatternDispatcher)
|
87
94
|
# to generate the pattern. This should return false if the requested pattern has been
|
88
95
|
# dispatched, otherwise Origen will proceed with looking up a pattern source as normal.
|
89
|
-
#def before_pattern_lookup(requested_pattern)
|
96
|
+
# def before_pattern_lookup(requested_pattern)
|
90
97
|
# PatternDispatcher.new.dispatch_or_return(requested_pattern)
|
91
|
-
#end
|
98
|
+
# end
|
92
99
|
|
93
100
|
# If you use pattern iterators you may come across the case where you request a pattern
|
94
101
|
# like this:
|
@@ -96,11 +103,10 @@ class OrigenUpdaterApplication < Origen::Application
|
|
96
103
|
#
|
97
104
|
# However it cannot be found by Origen since the pattern name is actually example_pat_bx.atp
|
98
105
|
# In the case where the pattern cannot be found Origen will pass the name to this translator
|
99
|
-
# if it exists, and here you can make any substitutions to help Origen find the file you
|
106
|
+
# if it exists, and here you can make any substitutions to help Origen find the file you
|
100
107
|
# want. In this example any instances of _b\d, where \d means a number, are replaced by
|
101
108
|
# _bx.
|
102
|
-
#config.pattern_name_translator do |name|
|
109
|
+
# config.pattern_name_translator do |name|
|
103
110
|
# name.gsub(/_b\d/, "_bx")
|
104
|
-
#end
|
105
|
-
|
111
|
+
# end
|
106
112
|
end
|
data/config/version.rb
CHANGED
data/lib/origen_updater.rb
CHANGED
@@ -1,6 +1,18 @@
|
|
1
1
|
require 'origen'
|
2
2
|
require_relative '../config/application.rb'
|
3
|
-
|
4
|
-
|
5
|
-
|
3
|
+
|
4
|
+
# Ensure the app always has the latest version of the updater scripts
|
5
|
+
app_fix_my_workspace = "#{Origen.root}/bin/fix_my_workspace"
|
6
|
+
if File.exist?(app_fix_my_workspace)
|
7
|
+
$_fix_my_workspace_version_check = true
|
8
|
+
load app_fix_my_workspace
|
9
|
+
end
|
10
|
+
|
11
|
+
if $_fix_my_workspace_version != Origen.app!.version
|
12
|
+
master_fix_my_workspace = File.expand_path('../../bin/fix_my_workspace', __FILE__)
|
13
|
+
FileUtils.mkdir_p "#{Origen.root}/bin" unless File.exist?("#{Origen.root}/bin")
|
14
|
+
# When running standalone
|
15
|
+
unless master_fix_my_workspace == app_fix_my_workspace
|
16
|
+
FileUtils.cp master_fix_my_workspace, app_fix_my_workspace
|
17
|
+
end
|
6
18
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: origen_updater
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.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: 2017-05-
|
11
|
+
date: 2017-05-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: origen
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 0
|
19
|
+
version: '0'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: 0
|
26
|
+
version: '0'
|
27
27
|
description:
|
28
28
|
email:
|
29
29
|
- stephen.f.mcginty@gmail.com
|
@@ -31,14 +31,12 @@ executables: []
|
|
31
31
|
extensions: []
|
32
32
|
extra_rdoc_files: []
|
33
33
|
files:
|
34
|
+
- bin/fix_my_workspace
|
34
35
|
- config/application.rb
|
35
36
|
- config/boot.rb
|
36
37
|
- config/commands.rb
|
37
|
-
- config/shared_commands.rb
|
38
38
|
- config/version.rb
|
39
39
|
- lib/origen_updater.rb
|
40
|
-
- lib/origen_updater/on_updated.rb
|
41
|
-
- lib/origen_updater/update.rb
|
42
40
|
- lib/tasks/origen_updater.rake
|
43
41
|
- templates/web/index.md.erb
|
44
42
|
- templates/web/layouts/_basic.html.erb
|
data/config/shared_commands.rb
DELETED
@@ -1,18 +0,0 @@
|
|
1
|
-
# The requested command is passed in here as @command
|
2
|
-
case @command
|
3
|
-
|
4
|
-
when "update"
|
5
|
-
require "#{Origen.root!}/lib/origen_updater/update"
|
6
|
-
# Important to exit when a command has been fulfilled or else Origen core will try and execute it
|
7
|
-
exit 0
|
8
|
-
|
9
|
-
# Always leave an else clause to allow control to fall back through to the Origen command handler.
|
10
|
-
# You probably want to also add the command details to the help shown via 'origen -h',
|
11
|
-
# you can do this bb adding the required text to @plugin_commands before handing control back to
|
12
|
-
# Origen.
|
13
|
-
else
|
14
|
-
@plugin_commands << <<-EOT
|
15
|
-
update Update your app environment based on your Gemfile
|
16
|
-
EOT
|
17
|
-
|
18
|
-
end
|
@@ -1 +0,0 @@
|
|
1
|
-
puts 'Updated!!'
|
@@ -1,62 +0,0 @@
|
|
1
|
-
require 'fileutils'
|
2
|
-
# require 'byebug' # Un-comment to debug this file
|
3
|
-
|
4
|
-
if Origen.site_config.gem_manage_bundler && Origen.site_config.gem_use_from_system
|
5
|
-
Origen.site_config.gem_use_from_system.each do |gem, version|
|
6
|
-
begin
|
7
|
-
spec = Gem::Specification.find_by_name(gem, version)
|
8
|
-
begin
|
9
|
-
(spec.executables || []).each do |bin|
|
10
|
-
unless File.exist?("#{local_gem_dir}/bin/#{bin}")
|
11
|
-
FileUtils.cp("#{spec.bin_dir}/#{bin}", "#{local_gem_dir}/bin")
|
12
|
-
end
|
13
|
-
end
|
14
|
-
p = Pathname.new(spec.cache_file)
|
15
|
-
unless File.exist?("#{local_gem_dir}/cache/#{p.basename}")
|
16
|
-
FileUtils.cp(spec.cache_file, "#{local_gem_dir}/cache")
|
17
|
-
end
|
18
|
-
if spec.extension_dir && File.exist?(spec.extension_dir)
|
19
|
-
spec.extension_dir =~ /.*extensions(.*)/
|
20
|
-
sub_dir = Pathname.new(Regexp.last_match(1)).dirname.to_s
|
21
|
-
local_ext_dir = "#{local_gem_dir}/extensions/#{sub_dir}"
|
22
|
-
FileUtils.mkdir_p(local_ext_dir) unless File.exist?(local_ext_dir)
|
23
|
-
|
24
|
-
# If the file exists in the extensions directory, skip copying it over.
|
25
|
-
p = Pathname.new(spec.extension_dir)
|
26
|
-
unless File.exist?("#{local_ext_dir}/#{p.basename}")
|
27
|
-
FileUtils.cp_r(spec.extension_dir, local_ext_dir)
|
28
|
-
end
|
29
|
-
end
|
30
|
-
|
31
|
-
# If the file exists in the gem directory, skip copying it over.
|
32
|
-
p = Pathname.new(spec.gem_dir)
|
33
|
-
unless File.exist?("#{local_gem_dir}/gems/#{p.basename}")
|
34
|
-
FileUtils.cp_r(spec.gem_dir, "#{local_gem_dir}/gems")
|
35
|
-
end
|
36
|
-
# If the file exists in the specifications directory, skip copying it over.
|
37
|
-
p = Pathname.new(spec.spec_file)
|
38
|
-
unless File.exist?("#{local_gem_dir}/specifications/#{p.basename}")
|
39
|
-
FileUtils.cp(spec.spec_file, "#{local_gem_dir}/specifications")
|
40
|
-
end
|
41
|
-
rescue
|
42
|
-
puts "Had problems installing #{spec.name} from your system Ruby, proceeding with fingers crossed..."
|
43
|
-
end
|
44
|
-
|
45
|
-
rescue Gem::LoadError
|
46
|
-
# This just means that one of the gems that should be copied from the system
|
47
|
-
# was not actually installed in the system, so nothing we can do about that here
|
48
|
-
end
|
49
|
-
end
|
50
|
-
end
|
51
|
-
|
52
|
-
if ENV['BUNDLE_BIN']
|
53
|
-
FileUtils.rm_rf(ENV['BUNDLE_BIN'])
|
54
|
-
|
55
|
-
if ARGV.first == 'all'
|
56
|
-
system 'bundle update'
|
57
|
-
elsif ARGV.empty?
|
58
|
-
system 'bundle'
|
59
|
-
else
|
60
|
-
system "bundle update #{ARGV.join(' ')}"
|
61
|
-
end
|
62
|
-
end
|