Pistos-emerge-gem 0.3.4 → 0.3.5
Sign up to get free protection for your applications and to get access to all the features.
- data/README +5 -0
- data/lib/emerge-gem.rb +30 -14
- metadata +1 -1
data/README
CHANGED
@@ -34,3 +34,8 @@ emerge-gem works by using the Rubygems system/library to find gem sources and
|
|
34
34
|
dependencies, and to automatically create wrapper ebuilds for them. It then
|
35
35
|
issues an emerge command. By default, it uses the local overlay. Use --help
|
36
36
|
for CLI switches you can use to specify directories.
|
37
|
+
|
38
|
+
You should also note that if you have installed a gem via Portage in the past,
|
39
|
+
and later upgraded it with Rubygems, emerge will complain about file collisions
|
40
|
+
if you have collision-protect enabled in your /etc/make.conf. To deal with this,
|
41
|
+
uninstall the gem using Rubygems first.
|
data/lib/emerge-gem.rb
CHANGED
@@ -7,6 +7,7 @@ class EmergeGem
|
|
7
7
|
def print_usage_and_exit
|
8
8
|
puts "#{$0} [options] <gem name> [gem name...] [-- <emerge options>]"
|
9
9
|
puts " -h --help show usage"
|
10
|
+
puts " --no-emerge don't actually execute any emerge commands"
|
10
11
|
puts " --portage-base-dir (default /usr/local/portage)"
|
11
12
|
puts " --portage-path relative to portage base dir (default dev-ruby)"
|
12
13
|
puts " --verbose print more details about work being done"
|
@@ -27,12 +28,15 @@ class EmergeGem
|
|
27
28
|
collecting_emerge_options = true
|
28
29
|
when '-h', '--help'
|
29
30
|
print_usage_and_exit
|
31
|
+
when '--no-emerge'
|
32
|
+
@no_emerge = true
|
30
33
|
when '--portage-base-dir'
|
31
34
|
portage_base_dir = arg
|
32
35
|
when '--portage-path'
|
33
36
|
portage_path = arg
|
34
37
|
when '-v', '--verbose'
|
35
38
|
@verbose = true
|
39
|
+
puts "(verbose mode)"
|
36
40
|
else
|
37
41
|
if collecting_emerge_options
|
38
42
|
@emerge_options << arg
|
@@ -49,8 +53,8 @@ class EmergeGem
|
|
49
53
|
@ebuild_dest ||= "#{portage_base_dir}/#{portage_path}"
|
50
54
|
|
51
55
|
@eix_installed = system( 'which eix > /dev/null' )
|
52
|
-
if @
|
53
|
-
|
56
|
+
if @eix_installed
|
57
|
+
inform "eix detected"
|
54
58
|
end
|
55
59
|
end
|
56
60
|
|
@@ -64,18 +68,20 @@ class EmergeGem
|
|
64
68
|
|
65
69
|
def check_local_gems
|
66
70
|
@gems.each do |gem|
|
67
|
-
|
68
|
-
if
|
71
|
+
inform "Checking installation of #{gem}"
|
72
|
+
next if ! EmergeGem.gem_installed?( gem ) || ! @eix_installed
|
73
|
+
inform "#{gem} gem installed"
|
69
74
|
|
70
|
-
puts "(checking if #{gem} has been installed with Portage)"
|
71
75
|
next if EmergeGem.package_installed? gem
|
72
|
-
|
76
|
+
inform "#{gem} package not installed with Portage"
|
73
77
|
|
74
78
|
puts "#{gem} seems to be installed via gem and not Portage."
|
75
79
|
puts "Uninstall the #{gem} gem before emerging? [y/n]"
|
76
80
|
answer = $stdin.gets.strip
|
77
81
|
if answer =~ /^y/i
|
78
82
|
shell "gem uninstall #{gem}"
|
83
|
+
else
|
84
|
+
puts "(not uninstalling #{gem} gem)"
|
79
85
|
end
|
80
86
|
end
|
81
87
|
end
|
@@ -90,19 +96,19 @@ class EmergeGem
|
|
90
96
|
|
91
97
|
def gather_ebuilds
|
92
98
|
@ebuilds = {}
|
93
|
-
|
94
|
-
|
99
|
+
gems = @gems.dup
|
100
|
+
while gems.any?
|
101
|
+
next_package = gems.shift
|
95
102
|
|
96
103
|
if ! @ebuilds[ next_package ]
|
97
|
-
|
104
|
+
inform "Gathering info about #{next_package} gem..."
|
98
105
|
@ebuilds[ next_package ] = Ebuild.create_from_spec_lookup( next_package )
|
99
|
-
else
|
100
|
-
puts "(already know about #{next_package})"
|
101
106
|
end
|
102
107
|
|
103
108
|
@ebuilds[ next_package ].spec.dependencies.each do |dependency|
|
104
109
|
next if @ebuilds[ dependency.name ]
|
105
|
-
|
110
|
+
inform " Looking up dependency #{dependency.name}"
|
111
|
+
gems.push dependency.name
|
106
112
|
@gems.push dependency.name
|
107
113
|
end
|
108
114
|
end
|
@@ -110,7 +116,7 @@ class EmergeGem
|
|
110
116
|
|
111
117
|
def write_ebuilds
|
112
118
|
@ebuilds.each do |name, ebuild|
|
113
|
-
|
119
|
+
inform "Writing out #{ebuild.filename}"
|
114
120
|
ebuild.write @ebuild_dest
|
115
121
|
end
|
116
122
|
end
|
@@ -123,7 +129,12 @@ class EmergeGem
|
|
123
129
|
|
124
130
|
def emerge
|
125
131
|
ebuild_names = @ebuilds.values.map { |e| e.name }.join( ' ' )
|
126
|
-
|
132
|
+
command = "emerge #{@emerge_options.join( ' ' )} #{ebuild_names}"
|
133
|
+
if @no_emerge
|
134
|
+
puts "(would execute: #{command})"
|
135
|
+
else
|
136
|
+
shell command
|
137
|
+
end
|
127
138
|
end
|
128
139
|
|
129
140
|
def shell( command )
|
@@ -131,5 +142,10 @@ class EmergeGem
|
|
131
142
|
system( command ) or
|
132
143
|
exit $?
|
133
144
|
end
|
145
|
+
|
146
|
+
def inform( message )
|
147
|
+
return if ! @verbose
|
148
|
+
puts message
|
149
|
+
end
|
134
150
|
end
|
135
151
|
|