tpkg 2.1.1 → 2.2.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.
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