From e20fa9d7f4270454132b8357ddaed7b591168809 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Mart=C3=AD?= Date: Mon, 27 Jan 2014 16:56:55 +0100 Subject: [PATCH] Half-way done switching prints for logs --- fdroidserver/rewritemeta.py | 5 +- fdroidserver/scanner.py | 18 ++++--- fdroidserver/update.py | 103 ++++++++++++++++-------------------- 3 files changed, 59 insertions(+), 67 deletions(-) diff --git a/fdroidserver/rewritemeta.py b/fdroidserver/rewritemeta.py index e463cf14..6ed54fa2 100644 --- a/fdroidserver/rewritemeta.py +++ b/fdroidserver/rewritemeta.py @@ -19,6 +19,7 @@ import os from optparse import OptionParser +import logging import common, metadata config = None @@ -41,10 +42,10 @@ def main(): apps = common.read_app_args(args, allapps, False) for app in apps: - print "Writing " + app['id'] + logging.info("Writing " + app['id']) metadata.write_metadata(os.path.join('metadata', app['id'])+'.txt', app) - print "Finished." + logging.info("Finished.") if __name__ == "__main__": main() diff --git a/fdroidserver/scanner.py b/fdroidserver/scanner.py index 64cebfb2..8c326c29 100644 --- a/fdroidserver/scanner.py +++ b/fdroidserver/scanner.py @@ -20,6 +20,8 @@ import os import traceback from optparse import OptionParser +import logging + import common, metadata from common import BuildException from common import VCSException @@ -49,7 +51,7 @@ def main(): build_dir = 'build' if not os.path.isdir(build_dir): - print "Creating build directory" + logging.info("Creating build directory") os.makedirs(build_dir) srclib_dir = os.path.join(build_dir, 'srclib') extlib_dir = os.path.join(build_dir, 'extlib') @@ -57,15 +59,15 @@ def main(): for app in apps: if app['Disabled']: - print "Skipping %s: disabled" % app['id'] + logging.info("Skipping %s: disabled" % app['id']) continue if not app['builds']: - print "Skipping %s: no builds specified" % app['id'] + logging.info("Skipping %s: no builds specified" % app['id']) continue elif options.nosvn and app['Repo Type'] == 'svn': continue - print "Processing " + app['id'] + logging.info("Processing " + app['id']) try: @@ -77,10 +79,10 @@ def main(): for thisbuild in app['builds']: if 'disable' in thisbuild: - print ("..skipping version " + thisbuild['version'] + " - " + - thisbuild.get('disable', thisbuild['commit'][1:])) + logging.info("...skipping version %s - %s" % ( + thisbuild['version'], thisbuild.get('disable', thisbuild['commit'][1:]))) else: - print "..scanning version " + thisbuild['version'] + logging.info("...scanning version " + thisbuild['version']) # Prepare the source code... root_dir, _ = common.prepare_source(vcs, app, thisbuild, @@ -102,7 +104,7 @@ def main(): msg = "Could not scan app %s due to unknown error: %s" % (app['id'], traceback.format_exc()) problems.append(msg) - print "Finished:" + logging.info("Finished:") for problem in problems: print problem print str(len(problems)) + ' problems.' diff --git a/fdroidserver/update.py b/fdroidserver/update.py index f370a68d..ff9a17e1 100644 --- a/fdroidserver/update.py +++ b/fdroidserver/update.py @@ -29,11 +29,12 @@ import pickle from xml.dom.minidom import Document from optparse import OptionParser import time -import common, metadata -from metadata import MetaDataException from PIL import Image +import logging +import common, metadata from common import FDroidPopen +from metadata import MetaDataException def get_densities(): return ['640', '480', '320', '240', '160', '120'] @@ -60,7 +61,7 @@ def update_wiki(apps, apks): :param apps: fully populated list of all applications :param apks: all apks, except... """ - print "Updating wiki" + logging.info("Updating wiki") wikicat = 'Apps' wikiredircat = 'App Redirects' import mwclient @@ -233,24 +234,22 @@ def update_wiki(apps, apks): if page.name in genp: pagetxt = page.edit() if pagetxt != genp[page.name]: - print "Updating modified page " + page.name + logging.info("Updating modified page " + page.name) page.save(genp[page.name], summary='Auto-updated') else: - if options.verbose: - print "Page " + page.name + " is unchanged" + logging.info("Page " + page.name + " is unchanged") else: - print "Deleting page " + page.name + logging.info("Deleting page " + page.name) page.delete('No longer published') for pagename, text in genp.items(): - if options.verbose: - print "Checking " + pagename + logging.info("Checking " + pagename) if not pagename in existingpages: - print "Creating page " + pagename + logging.info("Creating page " + pagename) try: newpage = site.Pages[pagename] newpage.save(text, summary='Auto-created') except: - print "...FAILED to create page" + logging.warn("...FAILED to create page") # Purge server cache to ensure counts are up to date site.pages['Repository Maintenance'].purge() @@ -271,7 +270,7 @@ def delete_disabled_builds(apps, apkcache, repodirs): srcpath = os.path.join(repodir, apkfilename[:-4] + "_src.tar.gz") for name in [apkpath, srcpath]: if os.path.exists(name): - print "Deleting disabled build output " + apkfilename + logging.info("Deleting disabled build output " + apkfilename) os.remove(name) if apkfilename in apkcache: del apkcache[apkfilename] @@ -288,15 +287,14 @@ def resize_icon(iconpath, density): if any(length > size for length in im.size): oldsize = im.size im.thumbnail((size, size), Image.ANTIALIAS) - print iconpath, "was too large at", oldsize, "- new size is", im.size + logging.info(iconpath, "was too large at", oldsize, "- new size is", im.size) im.save(iconpath, "PNG") else: - if options.verbose: - print iconpath, "is small enough:", im.size + logging.info(iconpath, "is small enough:", im.size) except Exception,e: - print "WARNING: Failed resizing {0} - {1}".format(iconpath, e) + logging.info("WARNING: Failed resizing {0} - {1}".format(iconpath, e)) def resize_all_icons(repodirs): """Resize all icons that exceed the max size @@ -347,18 +345,17 @@ def scan_apks(apps, apkcache, repodir, knownapks): apkfilename = apkfile[len(repodir) + 1:] if ' ' in apkfilename: - print "No spaces in APK filenames!" + logging.info("No spaces in APK filenames!") sys.exit(1) if apkfilename in apkcache: - if options.verbose: - print "Reading " + apkfilename + " from cache" + logging.info("Reading " + apkfilename + " from cache") thisinfo = apkcache[apkfilename] else: if not options.quiet: - print "Processing " + apkfilename + logging.info("Processing " + apkfilename) thisinfo = {} thisinfo['apkname'] = apkfilename srcfilename = apkfilename[:-4] + "_src.tar.gz" @@ -373,7 +370,7 @@ def scan_apks(apps, apkcache, repodir, knownapks): 'build-tools', config['build_tools'], 'aapt'), 'dump', 'badging', apkfile]) if p.returncode != 0: - print "ERROR: Failed to get apk information" + logging.critical("Failed to get apk information") sys.exit(1) for line in p.stdout.splitlines(): if line.startswith("package:"): @@ -382,8 +379,8 @@ def scan_apks(apps, apkcache, repodir, knownapks): thisinfo['versioncode'] = int(re.match(vercode_pat, line).group(1)) thisinfo['version'] = re.match(vername_pat, line).group(1) except Exception, e: - print "Package matching failed: " + str(e) - print "Line was: " + line + logging.info("Package matching failed: " + str(e)) + logging.info("Line was: " + line) sys.exit(1) elif line.startswith("application:"): thisinfo['name'] = re.match(label_pat, line).group(1) @@ -425,12 +422,12 @@ def scan_apks(apps, apkcache, repodir, knownapks): thisinfo['features'].append(perm) if not 'sdkversion' in thisinfo: - print " WARNING: no SDK version information found" + logging.info(" WARNING: no SDK version information found") thisinfo['sdkversion'] = 0 # Check for debuggable apks... if common.isApkDebuggable(apkfile, config): - print "WARNING: {0} is debuggable... {1}".format(apkfile, line) + logging.info("WARNING: {0} is debuggable... {1}".format(apkfile, line)) # Calculate the sha256... sha = hashlib.sha256() @@ -445,14 +442,12 @@ def scan_apks(apps, apkcache, repodir, knownapks): # Get the signature (or md5 of, to be precise)... getsig_dir = os.path.join(os.path.dirname(__file__), 'getsig') if not os.path.exists(getsig_dir + "/getsig.class"): - print "ERROR: getsig.class not found. To fix:" - print "\tcd " + getsig_dir - print "\t./make.sh" + logging.critical("getsig.class not found. To fix: cd '%s' && ./make.sh" % getsig_dir) sys.exit(1) p = FDroidPopen(['java', '-cp', os.path.join(os.path.dirname(__file__), 'getsig'), 'getsig', os.path.join(os.getcwd(), apkfile)]) if p.returncode != 0 or not p.stdout.startswith('Result:'): - print "ERROR: Failed to get apk signature" + logging.critical("Failed to get apk signature") sys.exit(1) thisinfo['sig'] = p.stdout[7:].strip() @@ -480,7 +475,7 @@ def scan_apks(apps, apkcache, repodir, knownapks): thisinfo['icons'][density] = iconfilename except: - print "WARNING: Error retrieving icon file" + logging.info("WARNING: Error retrieving icon file") del thisinfo['icons'][density] del thisinfo['icons_src'][density] empty_densities.append(density) @@ -505,7 +500,7 @@ def scan_apks(apps, apkcache, repodir, knownapks): empty_densities.remove(density) break except Exception,e: - print "WARNING: Failed reading {0} - {1}".format(iconpath, e) + logging.info("WARNING: Failed reading {0} - {1}".format(iconpath, e)) if thisinfo['icons']: thisinfo['icon'] = iconfilename @@ -520,9 +515,8 @@ def scan_apks(apps, apkcache, repodir, knownapks): continue if last_density is None: continue - if options.verbose: - print "Density %s not available, resizing down from %s" % ( - density, last_density) + logging.info("Density %s not available, resizing down from %s" % ( + density, last_density)) last_iconpath = os.path.join( get_icon_dir(repodir, last_density), iconfilename) @@ -531,7 +525,7 @@ def scan_apks(apps, apkcache, repodir, knownapks): try: im = Image.open(last_iconpath) except: - print "WARNING: Invalid image file at %s" % last_iconpath + logging.info("WARNING: Invalid image file at %s" % last_iconpath) continue size = dpi_to_px(density) @@ -548,9 +542,8 @@ def scan_apks(apps, apkcache, repodir, knownapks): continue if last_density is None: continue - if options.verbose: - print "Density %s not available, copying from lower density %s" % ( - density, last_density) + logging.info("Density %s not available, copying from lower density %s" % ( + density, last_density)) shutil.copyfile( os.path.join(get_icon_dir(repodir, last_density), iconfilename), @@ -647,7 +640,7 @@ def make_index(apps, apks, repodir, archive, categories): '-keystore', config['keystore'], '-storepass', config['keystorepass']]) if p.returncode != 0: - print "ERROR: Failed to get repo pubkey" + logging.critical("Failed to get repo pubkey") sys.exit(1) global repo_pubkey_fingerprint repo_pubkey_fingerprint = cert_fingerprint(p.stdout) @@ -742,9 +735,8 @@ def make_index(apps, apks, repodir, archive, categories): # Check for duplicates - they will make the client unhappy... for i in range(len(apklist) - 1): if apklist[i]['versioncode'] == apklist[i+1]['versioncode']: - print "ERROR - duplicate versions" - print apklist[i]['apkname'] - print apklist[i+1]['apkname'] + logging.critical("duplicate versions: '%s' - '%s'" % ( + apklist[i]['apkname'], apklist[i+1]['apkname'])) sys.exit(1) for apk in apklist: @@ -789,13 +781,13 @@ def make_index(apps, apks, repodir, archive, categories): if config['repo_keyalias'] is not None: if not options.quiet: - print "Creating signed index." - print "Key fingerprint:", repo_pubkey_fingerprint + logging.info("Creating signed index.") + logging.info("Key fingerprint:", repo_pubkey_fingerprint) #Create a jar of the index... p = FDroidPopen(['jar', 'cf', 'index.jar', 'index.xml'], cwd=repodir) if p.returncode != 0: - print "ERROR: Failed to create jar file" + logging.critical("Failed to create jar file") sys.exit(1) # Sign the index... @@ -804,7 +796,7 @@ def make_index(apps, apks, repodir, archive, categories): '-digestalg', 'SHA1', '-sigalg', 'MD5withRSA', os.path.join(repodir, 'index.jar') , config['repo_keyalias']]) if p.returncode != 0: - print "Failed to sign index" + logging.info("Failed to sign index") sys.exit(1) # Copy the repo icon into the repo directory... @@ -842,7 +834,7 @@ def archive_old_apks(apps, apks, archapks, repodir, archivedir, defaultkeepversi if len(apklist) > keepversions: for apk in apklist[keepversions:]: - print "Moving " + apk['apkname'] + " to archive" + logging.info("Moving " + apk['apkname'] + " to archive") shutil.move(os.path.join(repodir, apk['apkname']), os.path.join(archivedir, apk['apkname'])) if 'srcname' in apk: @@ -958,20 +950,17 @@ def main(): if added: app['added'] = added else: - if options.verbose: - print "WARNING: Don't know when " + app['id'] + " was added" + logging.info("WARNING: Don't know when " + app['id'] + " was added") if lastupdated: app['lastupdated'] = lastupdated else: - if options.verbose: - print "WARNING: Don't know when " + app['id'] + " was last updated" + logging.info("WARNING: Don't know when " + app['id'] + " was last updated") if bestver == 0: if app['Name'] is None: app['Name'] = app['id'] app['icon'] = None - if options.verbose and app['Disabled'] is None: - print "WARNING: Application " + app['id'] + " has no packages" + logging.info("WARNING: Application " + app['id'] + " has no packages") else: if app['Name'] is None: app['Name'] = bestapk['name'] @@ -1002,10 +991,10 @@ def main(): f.write(apk['name'] + "\n") f.write(".\n") f.close() - print "Generated skeleton metadata for " + apk['id'] + logging.info("Generated skeleton metadata for " + apk['id']) else: - print "WARNING: " + apk['apkname'] + " (" + apk['id'] + ") has no metadata" - print " " + apk['name'] + " - " + apk['version'] + logging.info("WARNING: " + apk['apkname'] + " (" + apk['id'] + ") has no metadata") + logging.info(" " + apk['name'] + " - " + apk['version']) if len(repodirs) > 1: archive_old_apks(apps, apks, archapks, repodirs[0], repodirs[1], config['archive_older']) @@ -1048,7 +1037,7 @@ def main(): if options.wiki: update_wiki(apps, apks + archapks) - print "Finished." + logging.info("Finished.") if __name__ == "__main__": main()