[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]
[or-cvs] r17416: {updater} Generate new command formats, I believe. (in updater/trunk: . lib/thandy samples)
Author: nickm
Date: 2008-11-30 01:37:05 -0500 (Sun, 30 Nov 2008)
New Revision: 17416
Modified:
updater/trunk/TODO
updater/trunk/lib/thandy/formats.py
updater/trunk/samples/example-package.cfg
Log:
Generate new command formats, I believe.
Modified: updater/trunk/TODO
===================================================================
--- updater/trunk/TODO 2008-11-30 06:19:36 UTC (rev 17415)
+++ updater/trunk/TODO 2008-11-30 06:37:05 UTC (rev 17416)
@@ -2,9 +2,18 @@
o try to write up a registry-based exe version checker.,
o Decouple install from check: they are not necessarily related.
o Generate newer, better objects internally.
- - Generate new, better formats for existing 'exe' items
- - Generate command items properly.
+ o Generate new, better formats for existing 'exe' items
+ o Generate command items properly.
+- Missing packaging features:
+ - Generate multi-item packages properly.
+ - Transition better for checking on a given item
+ - Implement remove
+ - Get RPM actually more tested
+ - Get install-from-compressed-file working.
+ - Transaction support where available.
+ - OSX backend
+
. Download improvements.
o Back off on download failure.
o Handle full stalled file in download.
@@ -29,8 +38,6 @@
X Rendezvous-back with Tor when done.
- Better configurability: let users override mirrors, keys, etc.
-- Backend for "A bunch of files you can unzip someplace."
-- OSX backend (hard).
- Proper exponential back-off on download backend.
- Wrapping
@@ -40,7 +47,7 @@
- More comments, more tests
o Document EXE and RPM formats in HOWTO.
. full pydoc
- - revise spec
+ . revise spec
- Testing
- Much bigger unit tests.
Modified: updater/trunk/lib/thandy/formats.py
===================================================================
--- updater/trunk/lib/thandy/formats.py 2008-11-30 06:19:36 UTC (rev 17415)
+++ updater/trunk/lib/thandy/formats.py 2008-11-30 06:37:05 UTC (rev 17416)
@@ -658,6 +658,7 @@
longDescs = {}
def ShortDesc(lang, val): shortDescs[lang] = val
def LongDesc(lang, val): longDescs[lang] = val
+ #XXXX handle multiple files.
preload = { 'ShortDesc' : ShortDesc, 'LongDesc' : LongDesc }
r = readConfigFile(config_fname,
['name',
@@ -666,7 +667,10 @@
'location',
'relpath',
], ['rpm_version', 'exe_args',
- 'exe_registry_ent' ], preload)
+ 'exe_registry_ent',
+ 'db_key', 'db_val',
+ 'command_install', 'command_remove',
+ ], preload)
f = open(package_fname, 'rb')
digest = getFileDigest(f)
@@ -689,22 +693,36 @@
if not r.get('rpm_version'):
raise thandy.FormatException("missing rpm_version value")
extra['rpm_version'] = r['rpm_version']
+ extra['check_type'] = 'rpm'
+ extra['install_type'] = 'rpm'
elif format == 'exe':
if not r.get('exe_args'):
raise thandy.FormatException("missing exe_args value")
extra['exe_args'] = r['exe_args']
+ if not r.get('cmd_install'):
+ extra['install_type'] = 'command'
+ extra['cmd_install'] = [ "${FILE}" ] + r['exe_args']
+
+ if r.get('command_install'):
extra['install_type'] = 'command'
- extra['cmd_install'] = [ "${FILE}" ] + r['exe_args']
- if r.get('exe_registry_ent'):
- if len(r['exe_registry_ent']) != 2:
- raise thandy.FormatException("Bad length on exe_registry_ent")
- regkey, regval = r['exe_registry_ent']
- checkWinRegistryKeyname(regkey)
- if not isinstance(regval, basestring):
- raise thandy.FormatException("Bad version on exe_registry_ent")
- extra['registry_ent'] = [ regkey, regval ]
- extra['check_type'] = 'registry'
+ extra['cmd_install'] = r['command_install']
+ if r.get('command_remove'):
+ extra['cmd_remove'] = r['command_remove']
+ if r.get('exe_registry_ent'):
+ if len(r['exe_registry_ent']) != 2:
+ raise thandy.FormatException("Bad length on exe_registry_ent")
+ regkey, regval = r['exe_registry_ent']
+ checkWinRegistryKeyname(regkey)
+ if not isinstance(regval, basestring):
+ raise thandy.FormatException("Bad version on exe_registry_ent")
+ extra['registry_ent'] = [ regkey, regval ]
+ extra['check_type'] = 'registry'
+ elif r.get('db_key'):
+ extra['item_name'] = r['db_key']
+ extra['item_version'] = r['db_val']
+ extra['check_type'] = 'db'
+
PACKAGE_SCHEMA.checkMatch(result)
return result
Modified: updater/trunk/samples/example-package.cfg
===================================================================
--- updater/trunk/samples/example-package.cfg 2008-11-30 06:19:36 UTC (rev 17415)
+++ updater/trunk/samples/example-package.cfg 2008-11-30 06:37:05 UTC (rev 17416)
@@ -19,7 +19,8 @@
Its description is not quite so long as it might be, but hey.""")
-# What kind of package is this?
+# What kind of package is this? Mostly this is ignored right now.
+# Don't use 'exe': that's special.
format = "none"
# Thandy knows how to manage some file formats, but it needs to include
@@ -36,11 +37,12 @@
# # (You can use this format for anything that you install by executing it
# # that does not have its own built-in installation mechanism.)
#
-# format = "exe"
+# format = "win32"
#
-# # What arguments do you pass to this package to install it?
-# # This needs to be a list of strings.
-# exe_args = [ "--silent", "--automatic", "--omit-bugs", ]
+# # What do you call to install the package?
+# # This needs to be a list of strings. ${FILE} is expanded to the file
+# # name.
+# command_install = [ {${FILE}", "--silent", "--automatic", "--omit-bugs", ]
#
# # Optional: a registry key, value pair for a version number that this
# # package will set when it installs itself. The exe is responsible for
@@ -51,3 +53,11 @@
#
# exe_registry_ent = [ r'HKEY_LOCAL_MACHINE\Software\Blahblahblach\Version',
# '0.1.2' ]
+#
+# # Optional: a database key and value that are stored in the internal
+# # Thandy database when this item is installed, so Thandy can remember
+# # if it is installed. Do not use this if you are setting exe_registry_ent.
+# # Using the registry is a better idea.
+# db_key = "example-exe"
+# db_val = "0.1.2"
+