tpkg 2.1.1 → 2.2.0

Sign up to get free protection for your applications and to get access to all the features.
data/Rakefile CHANGED
@@ -5,7 +5,7 @@ spec = Gem::Specification.new do |s|
5
5
  s.add_dependency('facter')
6
6
  s.add_dependency('net-ssh')
7
7
  s.add_dependency('ddao-kwalify')
8
- s.version = '2.1.1'
8
+ s.version = '2.2.0'
9
9
  s.authors = ['Darren Dao', 'Jason Heiss']
10
10
  s.email = 'tpkg-users@lists.sourceforge.net'
11
11
  s.homepage = 'http://tpkg.sourceforge.net'
@@ -20,7 +20,7 @@ use Storable qw(dclone);
20
20
  sub usage
21
21
  {
22
22
  die <<EOF;
23
- Usage: cpan2tpkg
23
+ Usage: cpan2tpkg [options] module
24
24
  [--version version]
25
25
  Version of module to install
26
26
  [--package-version version]
data/bin/tpkg CHANGED
@@ -4,7 +4,6 @@
4
4
  ##############################################################################
5
5
 
6
6
  # Ensure we can find tpkg.rb
7
- #$:.unshift File.dirname(__FILE__)
8
7
  $:.unshift File.join(File.dirname(__FILE__), "..", "lib")
9
8
 
10
9
  require 'optparse'
@@ -37,8 +36,11 @@ require 'tpkg'
37
36
  def rerun_with_sudo_if_necessary
38
37
  if Process.euid != 0 && @sudo
39
38
  warn "Executing with sudo"
39
+ # Depending on how sudo is configured it might remove TPKG_HOME from the
40
+ # environment. As such we set the base as a command line option to ensure
41
+ # it survives the sudo process.
40
42
  if ENV['TPKG_HOME']
41
- exec('sudo', 'env', "TPKG_HOME=#{ENV['TPKG_HOME']}", $0, *ARGV)
43
+ exec('sudo', $0, '--base', ENV['TPKG_HOME'], *ARGV)
42
44
  else
43
45
  exec('sudo', $0, *ARGV)
44
46
  end
@@ -230,8 +232,11 @@ end
230
232
  opts.on('--qconf', "Display tpkg's configuration settings") do |opt|
231
233
  @action = :query_conf
232
234
  end
235
+ opts.on('--base', '=BASE', 'Base directory for tpkg operations') do |opt|
236
+ @tpkg_options[:base] = opt
237
+ end
233
238
  opts.on('--source', '=NAME', 'Sources where packages are located', Array) do |opt|
234
- @tpkg_options["sources"] = opt
239
+ @tpkg_options[:sources] = opt
235
240
  end
236
241
  opts.on('--download', '=PACKAGES', 'Download one or more packages', Array) do |opt|
237
242
  @action = :download
@@ -275,6 +280,9 @@ opts.on('--compress', '=[TYPE]', 'Compress files when making packages') do |opt|
275
280
  @compress = opt
276
281
  end
277
282
  end
283
+ opts.on('--test-root TESTDIR', 'For use by the test suite only.') do |opt|
284
+ @tpkg_options[:file_system_root] = opt
285
+ end
278
286
  opts.on('--debug', 'Print lots of messages about what tpkg is doing') do |opt|
279
287
  @debug = opt
280
288
  Tpkg::set_debug(@debug)
@@ -307,11 +315,32 @@ end
307
315
  #
308
316
 
309
317
  def instantiate_tpkg(options = {})
310
- base = Tpkg::DEFAULT_BASE
311
- sources = options["sources"] || []
318
+ base = options[:base]
319
+ sources = options[:sources] || []
312
320
  report_server = nil
313
321
 
314
- [File.join(Tpkg::DEFAULT_CONFIGDIR, 'tpkg.conf'), File.join(ENV['HOME'], ".tpkg.conf")].each do |configfile|
322
+ # base can come from four possible places. They take precedence in this
323
+ # order:
324
+ # - command line option
325
+ # - TPKG_HOME environment variable
326
+ # - config file
327
+ # - Tpkg::DEFAULT_BASE
328
+
329
+ if ENV['TPKG_HOME']
330
+ if !base
331
+ base = ENV['TPKG_HOME']
332
+ # Warn the user, as this could potentially be confusing
333
+ # if they don't realize there's an environment variable set.
334
+ warn "Using base '#{base}' base from $TPKG_HOME"
335
+ else
336
+ warn "Ignoring TPKG_HOME" if @debug
337
+ end
338
+ end
339
+
340
+ # FIXME: Move config file parsing to tpkg.rb
341
+ # http://sourceforge.net/apps/trac/tpkg/ticket/28
342
+ fsroot = options[:file_system_root] ? options[:file_system_root] : ''
343
+ [File.join(fsroot, Tpkg::DEFAULT_CONFIGDIR, 'tpkg.conf'), File.join(fsroot, ENV['HOME'], ".tpkg.conf")].each do |configfile|
315
344
  if File.exist?(configfile)
316
345
  IO.foreach(configfile) do |line|
317
346
  line.chomp!
@@ -320,11 +349,15 @@ def instantiate_tpkg(options = {})
320
349
  line.strip! # Remove leading/trailing whitespace
321
350
  key, value = line.split(/\s*=\s*/, 2)
322
351
  if key == 'base'
323
- # Warn the user, as this could potentially be confusing
324
- # if they don't realize there's a config file lying
325
- # around
326
- base = value
327
- warn "Using base #{base} from #{configfile}"
352
+ if !base
353
+ # Warn the user, as this could potentially be confusing
354
+ # if they don't realize there's a config file lying
355
+ # around
356
+ base = value
357
+ warn "Using base #{base} from #{configfile}"
358
+ else
359
+ warn "Ignoring 'base' option in #{@configfile}" if @debug
360
+ end
328
361
  elsif key == 'source'
329
362
  sources << value
330
363
  puts "Loaded source #{value} from #{configfile}" if (@debug)
@@ -336,11 +369,8 @@ def instantiate_tpkg(options = {})
336
369
  end
337
370
  end
338
371
 
339
- if ENV['TPKG_HOME']
340
- base = ENV['TPKG_HOME']
341
- # Warn the user, as this could potentially be confusing
342
- # if they don't realize there's an environment variable set.
343
- warn "Using base '#{base}' base from $TPKG_HOME"
372
+ if !base
373
+ base = Tpkg::DEFAULT_BASE
344
374
  end
345
375
 
346
376
  if !@sudo
@@ -359,7 +389,15 @@ def instantiate_tpkg(options = {})
359
389
  end
360
390
  end
361
391
 
362
- tpkg = Tpkg.new(:base => base, :sources => sources, :report_server => report_server, :lockforce => @lockforce, :force => @force, :sudo => @sudo)
392
+ # FIXME: This is ugly. We would set the appropriate things in options and
393
+ # call Tpkg.new(options)
394
+ tpkg = Tpkg.new(:file_system_root => options[:file_system_root],
395
+ :base => base,
396
+ :sources => sources,
397
+ :report_server => report_server,
398
+ :lockforce => @lockforce,
399
+ :force => @force,
400
+ :sudo => @sudo)
363
401
  end
364
402
 
365
403
  passphrase_callback = lambda do | package |
@@ -56,7 +56,7 @@ require 'kwalify' # for validating yaml
56
56
 
57
57
  class Tpkg
58
58
 
59
- VERSION = '2.1.1'
59
+ VERSION = '2.2.0'
60
60
 
61
61
  GENERIC_ERR = 1
62
62
  POSTINSTALL_ERR = 2
@@ -165,7 +165,9 @@ class Deployer
165
165
  params = deploy_params.join(" ")
166
166
  cmd = nil
167
167
  if ENV['TPKG_HOME']
168
- cmd = "env TPKG_HOME=#{ENV['TPKG_HOME']} tpkg #{params} -n"
168
+ # Preserve TPKG_HOME when deploying to remote systems so that users can
169
+ # perform operations against different tpkg base directories.
170
+ cmd = "tpkg #{params} --base #{ENV['TPKG_HOME']} -n"
169
171
  else
170
172
  cmd = "tpkg #{params} -n"
171
173
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tpkg
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.1.1
4
+ version: 2.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Darren Dao
@@ -10,7 +10,7 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2011-01-03 00:00:00 -08:00
13
+ date: 2011-01-10 00:00:00 -08:00
14
14
  default_executable:
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency