提交 d6dd1d07 编写于 作者: J James Troup

new check files-not-symlinks.

上级 63d91e6f
#!/usr/bin/env python
# Sanity check the database
# Various different sanity checks
# Copyright (C) 2000, 2001, 2002, 2003 James Troup <james@nocrew.org>
# $Id: tea,v 1.23 2003-09-07 13:52:17 troup Exp $
# $Id: tea,v 1.24 2003-09-24 00:13:46 troup Exp $
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
......@@ -60,6 +60,7 @@ The following MODEs are available:
timestamps - check for future timestamps in .deb's
tar-gz-in-dsc - ensure each .dsc lists a .tar.gz file
validate-indices - ensure files mentioned in Packages & Sources exist
files-not-symlinks - check files in the database aren't symlinks
"""
sys.exit(exit_code)
......@@ -346,6 +347,49 @@ def check_indices_files_exist():
################################################################################
def check_files_not_symlinks():
print "Building list of database files... ",;
before = time.time();
q = projectB.query("SELECT l.path, f.filename, f.id FROM files f, location l WHERE f.location = l.id")
print "done. (%d seconds)" % (int(time.time()-before));
q_files = q.getresult();
# locations = {};
# q = projectB.query("SELECT l.path, c.name, l.id FROM location l, component c WHERE l.component = c.id");
# for i in q.getresult():
# path = os.path.normpath(i[0] + i[1]);
# locations[path] = (i[0], i[2]);
# q = projectB.query("BEGIN WORK");
for i in q_files:
filename = os.path.normpath(i[0] + i[1]);
file_id = i[2];
if os.access(filename, os.R_OK) == 0:
utils.warn("%s: doesn't exist." % (filename));
else:
if os.path.islink(filename):
utils.warn("%s: is a symlink." % (filename));
# You probably don't want to use the rest of this...
# print "%s: is a symlink." % (filename);
# dest = os.readlink(filename);
# if not os.path.isabs(dest):
# dest = os.path.normpath(os.path.join(os.path.dirname(filename), dest));
# print "--> %s" % (dest);
# # Determine suitable location ID
# # [in what must be the suckiest way possible?]
# location_id = None;
# for path in locations.keys():
# if dest.find(path) == 0:
# (location, location_id) = locations[path];
# break;
# if not location_id:
# utils.fubar("Can't find location for %s (%s)." % (dest, filename));
# new_filename = dest.replace(location, "");
# q = projectB.query("UPDATE files SET filename = '%s', location = %s WHERE id = %s" % (new_filename, location_id, file_id));
# q = projectB.query("COMMIT WORK");
################################################################################
def main ():
global Cnf, projectB, db_files, waste, excluded;
......@@ -388,6 +432,8 @@ def main ():
check_missing_tar_gz_in_dsc();
elif mode == "validate-indices":
check_indices_files_exist();
elif mode == "files-not-symlinks":
check_files_not_symlinks();
else:
utils.warn("unknown mode '%s'" % (mode));
usage(1);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册