From ab60eb150637709d9ae0fb166ed8eebcfa9b43f0 Mon Sep 17 00:00:00 2001 From: Zac Medico Date: Sun, 25 Oct 2009 20:21:10 +0000 Subject: [PATCH] Don't set mtime on downloaded metadata.dtd when using python3, since the rfc822.parsedate() function is not available. Thanks to Arfrever for reporting. svn path=/main/trunk/; revision=14725 --- bin/repoman | 28 +++++++++++++++++++++++----- 1 file changed, 23 insertions(+), 5 deletions(-) diff --git a/bin/repoman b/bin/repoman index 703d18e47..7dee4fe80 100755 --- a/bin/repoman +++ b/bin/repoman @@ -25,7 +25,16 @@ import sys import tempfile import time import platform -import urllib + +try: + from urllib.request import urlopen as urllib_request_urlopen +except ImportError: + from urllib import urlopen as urllib_request_urlopen + +try: + from rfc822 import parsedate +except ImportError: + parsedate = None from io import StringIO from itertools import chain @@ -803,10 +812,19 @@ def fetch_metadata_dtd(): "needs to be refetched, doing that now") print() try: - url_f = urllib.urlopen(metadata_dtd_uri) - last_modified = url_f.info().getdate('last-modified') - if last_modified is not None: - last_modified = time.mktime(last_modified) + url_f = urllib_request_urlopen(metadata_dtd_uri) + msg_info = url_f.info() + last_modified = msg_info.get('last-modified') + # Date parsing isn't supported in python3 since it has no + # equivalent of the rfc822.parsedate() function. + # TODO: Convert the last-modified field to locale-independent + # format and then use time.strptime() to parse it. + if parsedate is None: + last_modified = None + elif last_modified is not None: + last_modified = parsedate(last_modified) + if last_modified is not None: + last_modified = time.mktime(last_modified) metadata_dtd_tmp = "%s.%s" % (metadata_dtd, os.getpid()) try: -- 2.26.2