summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTomás Touceda <chiiph@torproject.org>2012-01-04 13:14:08 -0300
committerTomás Touceda <chiiph@torproject.org>2012-01-04 13:14:08 -0300
commit62c2dd6e24f6ac0523fe7e1c16e1475b1988d61f (patch)
tree3e3e0c000c9efb390b659fb0ecc8d77eeabdf960
parentc01e9c0bcef743442c8e44641b8cb0f51585eb6e (diff)
Add a thp_dest parameter to install package in custom locations
-rw-r--r--lib/thandy/formats.py6
-rw-r--r--lib/thandy/packagesys/PackageSystem.py2
-rw-r--r--lib/thandy/packagesys/ThpPackages.py10
3 files changed, 13 insertions, 5 deletions
diff --git a/lib/thandy/formats.py b/lib/thandy/formats.py
index 0a73ff4..6253678 100644
--- a/lib/thandy/formats.py
+++ b/lib/thandy/formats.py
@@ -746,7 +746,7 @@ def makePackageObj(config_fname, package_fname):
'exe_registry_ent',
'db_key', 'db_val',
'command_install', 'command_remove',
- 'thp_name', 'thp_version',
+ 'thp_name', 'thp_version', 'thp_dest'
], preload)
f = open(package_fname, 'rb')
@@ -790,6 +790,10 @@ def makePackageObj(config_fname, package_fname):
if not r.get('thp_version'):
raise thandy.FormatException("missing thp_version value")
extra['thp_version'] = r['thp_version']
+ if not r.get('thp_dest'):
+ extra['thp_dest'] = ""
+ else:
+ extra['thp_dest'] = r['thp_dest']
if r.get('command_install'):
extra['install_type'] = 'command'
diff --git a/lib/thandy/packagesys/PackageSystem.py b/lib/thandy/packagesys/PackageSystem.py
index b2e66a1..36af2f2 100644
--- a/lib/thandy/packagesys/PackageSystem.py
+++ b/lib/thandy/packagesys/PackageSystem.py
@@ -110,7 +110,7 @@ def getInstaller(relPath, extra, defaultFormat, package):
elif installType == 'thp':
import thandy.packagesys.ThpPackages
installer = thandy.packagesys.ThpPackages.ThpInstaller(
- relPath)
+ relPath, extra['thp_dest'])
else:
return None
diff --git a/lib/thandy/packagesys/ThpPackages.py b/lib/thandy/packagesys/ThpPackages.py
index d90af0c..85a681b 100644
--- a/lib/thandy/packagesys/ThpPackages.py
+++ b/lib/thandy/packagesys/ThpPackages.py
@@ -213,9 +213,10 @@ class ThpTransaction(PS.Transaction):
class ThpInstaller(PS.Installer):
""" Represents an installer for an individual Thp package. """
- def __init__(self, relPath, db = None, repoRoot = None):
+ def __init__(self, relPath, db = None, repoRoot = None, dest = ""):
PS.Installer.__init__(self, relPath)
self._db = db
+ self._dest = dest
self.setCacheRoot(repoRoot)
if db is None:
self._db = ThpDB()
@@ -243,9 +244,12 @@ class ThpInstaller(PS.Installer):
self._db.insert(pkg_metadata)
self._db.statusInProgress(pkg_metadata)
- dir = os.path.join(self._thp_root, self._pkg.get("package_name"))
+ if len(self._dest) == 0:
+ dir = os.path.join(self._thp_root, self._pkg.get("package_name"))
+ else:
+ dir = os.path.join(self._thp_root, self._dest)
try:
- os.mkdir(dir)
+ os.makedirs(dir)
except:
logging.info("%s: Already exists, using it." % dir)