From 3d1abad924f27dd2aa5b226821cac607da3496cf Mon Sep 17 00:00:00 2001 From: Thomas Leonard Date: Sun, 30 Apr 2006 18:18:39 +0000 Subject: [PATCH] When adding .deb packages, default to sha1new algorithm to avoid problems with missing directory mtimes. git-svn-id: file:///home/talex/Backups/sf.net/Subversion/zero-install/trunk/0publish@841 9f8c893c-44ee-0310-b757-c8ca8341c71e --- archive.py | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/archive.py b/archive.py index 609b71e..3fc992e 100644 --- a/archive.py +++ b/archive.py @@ -1,14 +1,14 @@ from xml.dom import minidom -from zeroinstall.zerostore import Store, manifest +from zeroinstall.zerostore import Store, manifest, unpack from zeroinstall.injector import namespaces import os, time, re, shutil, tempfile, sha -import unpack -def manifest_for_dir(dir): - digest = sha.new() - for line in manifest.generate_manifest(dir): +def manifest_for_dir(dir, alg): + algorithm = manifest.get_algorithm(alg) + digest = algorithm.new_digest() + for line in algorithm.generate_manifest(dir): digest.update(line + '\n') - return 'sha1=' + digest.hexdigest() + return algorithm.getID(digest) def add_archive(data, url, local_file, extract): if local_file is None: @@ -16,6 +16,13 @@ def add_archive(data, url, local_file, extract): doc = minidom.parseString(data) + if local_file.endswith('.deb'): + # Debs require 0launch >= 0.20 anyway, so use the new hash to avoid + # problems with directory mtimes + alg = 'sha1new' + else: + alg = 'sha1' + all_impls = doc.documentElement.getElementsByTagNameNS(namespaces.XMLNS_IFACE, 'implementation') tmpdir = tempfile.mkdtemp('-0publish') try: @@ -25,7 +32,7 @@ def add_archive(data, url, local_file, extract): else: extracted = tmpdir - archive_id = manifest_for_dir(extracted) + archive_id = manifest_for_dir(extracted, alg) finally: shutil.rmtree(tmpdir) -- 2.11.4.GIT