I posted this script to the pacman-dev list last time, but thought
maybe it should go here instead. It essentially looks for a number of
problems with Arch PKGBUILDs, repos, etc. Since the previous posting,
it now checks for a number of additional things including if a
PKGBUILD's dependency provisions can be met and if a PKGBUILD's
corresponding packages are in the Arch repo.
The script is attached. And here is the current output:
$ ./check_archlinux.py
WARNING: Please make sure you have a clean and up-to-date $ABSROOT when
running this script; custom PKGBUILDs, etc. can cause false positives.
Using the following paths:
['/var/abs/core', '/var/abs/extra', '/var/abs/community', '/var/abs/unstable']
=======================
= Duplicate PKGBUILDs =
=======================
/community/devel/junit/PKGBUILD vs. /extra/devel/junit/PKGBUILD
/community/lib/perl-module-pluggable/PKGBUILD vs.
/extra/lib/perl-module-pluggable/PKGBUILD
=====================
= Missing PKGBUILDs =
=====================
/core/base/slocate/PKGBUILD
/extra/x11/emerald/PKGBUILD
/extra/x11/heliodor/PKGBUILD
=======================
= Mismatched Pkgnames =
=======================
oldstand-font vs. /community/x11/oldstand-fonts/PKGBUILD
========================
= Missing Dependencies =
========================
rafkill --> 'dumb'
perl-mail-dkim --> 'perl-mail-address'
icomplete --> 'vim-devel'
perl-mail-box --> 'perl-mail-address'
gensplash --> 'klibc-beyond'
===============================
= Unmet Dependency Provisions =
===============================
perl-datetime-format-mail --> 'perl-datetime>=0.1705'
fglrx-mm --> 'kernel26mm>=2.6.23.rc1.mm1'
perl-datetime-format-strptime --> 'perl-datetime>=0.1402'
=================
= Invalid Archs =
=================
Invalid arch: libofa --> x64_86
Invalid arch: kexec-tools --> 686
Invalid arch: mod_perl --> x64_86
Invalid arch: minicom --> !x86_64
=========================
= Missing Repo Packages =
=========================
kdenlive-svn-1727-1 in community/os/i686
xfce4-verve-plugin-svn-3591-2 in community/os/x86_64
parrot-0.4.16-1 in community/os/x86_64
virtualbox-modules-1.5.2-1 in community/os/x86_64
gnump3d-3.0-1 in community/os/x86_64
perl-gnome2-wnck-0.14-1 in community/os/x86_64
xmms2-0.2DrJekyll-3 in community/os/x86_64
xfwm4-svn-26296-3 in community/os/x86_64
xfce4-mailwatch-plugin-svn-3591-2 in community/os/x86_64
xfce4-taskmanager-svn-3591-1 in community/os/x86_64
hamlib-1.2.6.2-3 in community/os/x86_64
rtorrent-0.7.7-1 in community/os/x86_64
xfce4-battery-plugin-svn-3591-2 in community/os/x86_64
xfce4-screenshooter-plugin-svn-3591-2 in community/os/x86_64
xgl-0.0.1.20071007-1 in community/os/x86_64
libxfce4util-svn-26296-2 in community/os/x86_64
virtualbox-ose-additions-1.5.2-1 in community/os/x86_64
xfce4-rss-plugin-svn-3591-2 in community/os/x86_64
thunar-svn-26296-1 in community/os/x86_64
orage-svn-26296-2 in community/os/x86_64
xfce-mcs-manager-svn-26296-1 in community/os/x86_64
gambas-1.0.19-1 in community/os/x86_64
libgalago-0.5.2-2 in community/os/x86_64
biew-5.6.4-2 in community/os/x86_64
libgmail-0.1.8-1 in community/os/x86_64
xfce4-mixer-svn-26296-2 in community/os/x86_64
kdenlive-svn-1727-1 in community/os/x86_64
xfce-utils-svn-26296-1 in community/os/x86_64
xfce-notification-daemon-svn-3591-2 in community/os/x86_64
xfce4-session-svn-26296-1 in community/os/x86_64
xfce4-panel-svn-26319-2 in community/os/x86_64
assaultcube-0.93-2 in community/os/x86_64
xfce4-icon-theme-svn-26296-1 in community/os/x86_64
miscsplashutils-0.1.8-1 in community/os/x86_64
mlt-svn-1036-1 in community/os/x86_64
synce-libsynce-0.10.0-1 in community/os/x86_64
xfce4-sensors-plugin-svn-3591-2 in community/os/x86_64
opendx-4.4.4-1 in community/os/x86_64
fdlog-1.146-1 in community/os/x86_64
xfprint-svn-26296-1 in community/os/x86_64
gmailfs-0.8.0-1 in community/os/x86_64
xfce4-mpc-plugin-svn-3591-2 in community/os/x86_64
fusion-icon-20071111-1 in community/os/x86_64
xfdesktop-svn-26302-1 in community/os/x86_64
xfdesktop-svn-26302-1 in community/os/x86_64
opera-static-9.24-1 in community/os/x86_64
cross-arm-elf-gcc-base-4.2.2-1 in community/os/x86_64
mlt++-0.2.2-5 in community/os/x86_64
xfce4-weather-plugin-svn-3591-2 in community/os/x86_64
selinux-kernel26-2.6.22-2 in community/os/x86_64
xfce-mcs-plugins-svn-26320-2 in community/os/x86_64
xfce4-trigger-launcher-svn-26296-2 in community/os/x86_64
python-fuse-20071117-1 in community/os/x86_64
python-ctypes-1.0.1-2 in community/os/x86_64
cairo-java-1.0.8-1 in community/os/x86_64
grub-gfx-0.97-7 in community/os/x86_64
selinux-usr-policycoreutils-svn-2651-3 in community/os/x86_64
arch-firefox-search-0.3-1ff2.0.0.9 in community/os/x86_64
libxfce4menu-svn-26296-1 in community/os/x86_64
pygtk-docs-20070330-3 in community/os/x86_64
xfce4-netload-plugin-svn-3591-2 in community/os/x86_64
perl-list-moreutils-0.21-1 in community/os/x86_64
virtualbox-additions-1.5.2-1 in community/os/x86_64
thunar-volman-svn-3591-1 in community/os/x86_64
xfce4-notes-plugin-svn-3591-2 in community/os/x86_64
perl-poe-component-client-http-0.82-2.1 in community/os/x86_64
xfce4-xkb-plugin-svn-3591-2 in community/os/x86_64
xfce4-xfapplet-plugin-svn-3591-2 in community/os/x86_64
cross-arm-wince-cegcc-gdb-0.50-1 in community/os/x86_64
squeeze-svn-26296-1 in community/os/x86_64
ttf-linux-libertine-2.6-1 in community/os/x86_64
alsa-plugins-1.0.15-1 in community/os/x86_64
selinux-coreutils-6.9-3 in community/os/x86_64
libgtksourceviewmm2-1.9.3-1 in community/os/x86_64
beecrypt-4.1.2-3 in community/os/x86_64
perl6-pugs-6.2.13-1 in community/os/x86_64
xfce4-systemload-plugin-svn-3591-2 in community/os/x86_64
xfce4-websearch-plugin-svn-3591-1 in community/os/x86_64
xfce4-appfinder-svn-26296-1 in community/os/x86_64
xfburn-svn-26296-1 in community/os/x86_64
xarchiver-svn-26296-1 in community/os/x86_64
libxfcegui4-svn-26296-1 in community/os/x86_64
cross-arm-wince-cegcc-gdbstub-0.50-1 in community/os/x86_64
kio-sysinfo-1.8.2-2 in community/os/x86_64
scilab-4.1.1-2 in community/os/x86_64
xfce4-mount-plugin-svn-3591-2 in community/os/x86_64
virtualbox-ose-xorg-drivers-1.5.2-1 in community/os/x86_64
xfmedia-svn-26296-1 in community/os/x86_64
mingw32-gcc-4.2.1-2 in community/os/x86_64
exo-svn-26296-1 in community/os/x86_64
thunar-archive-plugin-svn-3591-2 in community/os/x86_64
ristretto-svn-3591-1 in community/os/x86_64
terminal-svn-26309-1 in community/os/x86_64
kernel26-xen-2.6.22-11 in community/os/x86_64
glib-java-0.4.2-1 in community/os/x86_64
abyssws-2.5-2 in community/os/x86_64
xfce-devtools-svn-26312-1 in community/os/x86_64
cube-2005_08_29-8 in community/os/x86_64
gensplash-1.4.2.1-1 in community/os/x86_64
pyxfce-svn-24810-1 in community/os/x86_64
virtualbox-ose-additions-modules-1.5.2-1 in community/os/x86_64
mousepad-svn-26296-1 in community/os/x86_64
thunar-media-tags-plugin-svn-3591-1 in community/os/x86_64
xfce4-clipman-plugin-svn-3591-2 in community/os/x86_64
capi4hylafax-010300-1 in extra/os/i686
ettercap-gtk-NG_0.7.3-2 in extra/os/i686
ion-3rc_20071109-1 in extra/os/i686
capi4hylafax-010300-1 in extra/os/x86_64
erlang-R11B.5-3 in extra/os/x86_64
ngrep-1.45-3.1 in extra/os/x86_64
libdatrie-0.1.2-1 in extra/os/x86_64
evilwm-1.0.0-1.1 in extra/os/x86_64
ssldump-0.9b3-6.1 in extra/os/x86_64
memprof-0.6-2 in extra/os/x86_64
ettercap-gtk-NG_0.7.3-2 in extra/os/x86_64
zsnes-1.51-2 in extra/os/x86_64
facile-1.1-6 in extra/os/x86_64
gcin-1.3.4-1 in extra/os/x86_64
ntop-3.3-3.1 in extra/os/x86_64
ttf-junicode-0.6.12-1 in extra/os/x86_64
slmodem-utils-2.9.11-14 in extra/os/x86_64
bigloo-3.0a-1 in extra/os/x86_64
centericq-4.21.0-5 in extra/os/x86_64
python-2.5.1-3 in extra/os/x86_64
valgrind-3.2.3-2 in extra/os/x86_64
intel-537-2.60.80.0-49 in extra/os/x86_64
tcptraceroute-1.5beta7-4.1 in extra/os/x86_64
ion-3rc_20071109-1 in extra/os/x86_64
madwifi-mm-0.9.3.1.99-1 in unstable/os/x86_64
tiacx-20071003-1 in unstable/os/x86_64
fglrx-mm-8.40.4-1 in unstable/os/x86_64
reiser4progs-1.0.6-1 in unstable/os/x86_64
tiacx-mm-20070101-1 in unstable/os/x86_64
nvidia-96xx-mm-1.0.9631-1 in unstable/os/x86_64
kernel26mm-2.6.23.mm1-1 in unstable/os/x86_64
wlan-ng26-mm-0.2.8-3 in unstable/os/x86_64
lirc-mm-0.8.1-2 in unstable/os/x86_64
nvidia-mm-100.14.11-1 in unstable/os/x86_64
ipw3945-mm-1.2.1-2 in unstable/os/x86_64
=========================
= Circular Dependencies =
=========================
gcc-libs>gcc>gcc-libs
libxcb>libxslt>python>tk>libx11>libxcb
gutenprint>gimp>gutenprint
libxslt>python>tk>libx11>libxcb>libxslt
shadow>pam>db>coreutils>shadow
flightgear-data>flightgear>flightgear-data
happy>ghc>happy
flightgear>flightgear-data>flightgear
eclipse-ecj>gcc-gcj>eclipse-ecj
libx11>libxcb>libxslt>python>tk>libx11
gcc-gcj>eclipse-ecj>gcc-gcj
texinfo>ncurses>glibc>gcc>binutils>texinfo
pam>db>coreutils>pam
tk>libx11>libxcb>libxslt>python>tk
tzdata>glibc>tzdata
bash>readline>glibc>bash
binutils>glibc>gcc>binutils
ncurses>glibc>bash>readline>ncurses
gimp>gutenprint>gimp
coreutils>pam>db>coreutils
glibc>tzdata>glibc
gcc>gcc-libs>gcc
db>coreutils>pam>db
python>tk>libx11>libxcb>libxslt>python
libxml2>python>tk>libx11>libxcb>libxslt>libxml2
readline>glibc>bash>readline
=====================
= Archlinux Summary =
=====================
Dirs with missing PKGBUILDs: 3
Duplicate PKGBUILDs: 2
Missing dependencies: 5
Unmet provisioned dependencies: 3
Circular dependencies: 26
Invalid archs: 4
Missing packages in repos: 139
Mismatching PKGBUILD names: 1
Scott
#!/usr/bin/env python
#
# Written by Scott Horowitz <[EMAIL PROTECTED]>
#
# This script currently checks for a number of issues in your ABS tree:
# 1. Directories with missing PKGBUILDS
# 2. Duplicate PKGBUILDs
# 3. Missing (make-)dependencies, taking into account 'provides'
# 4. Provisioned dependencies
# 5. Circular dependencies
# 6. Valid arch's in PKGBUILDS
# 7. Missing packages in repo
# 8. PKGBUILD names that don't match their directory
#
# Todo:
# 1. Accommodate testing repo?
import os, sys, getopt
from ftplib import FTP
absroot = "/var/abs"
include_paths = ["core", "extra", "community", "unstable"]
valid_archs = ['i686', 'x86_64', 'ppc']
base_server = "ftp.archlinux.org" # Must be ftp site
pkgname_str = "pkgname="
dep_str = "depends=("
makedep_str = "makedepends=("
provides_str = "provides=("
arch_str = "arch=("
pkgver_str = "pkgver="
pkgrel_str = "pkgrel="
build_str = "build()"
source_str = "source="
url_str = "url="
math_symbols = (">=", "<=", "=", ">", "<")
def print_heading(heading):
print ""
print "=" * (len(heading) + 4)
print "= " + heading + " ="
print "=" * (len(heading) + 4)
def update_var(line, user_vars, pkgpath):
if line.count("$") > 0:
export_line = ""
for var in user_vars:
if line.count(var[0]) > 0:
export_line = export_line + var[0] + "=" + var[1] + " && "
if line.startswith("(") and line.endswith(")"):
line = line[1:-1]
export_line = export_line + "echo \"" + line + "\""
line = os.popen(export_line).read().replace("\n", "")
return line
def split_dep_prov_symbol(dep):
# Splits 'foo>=1.2.3' into ('foo', '1.2.3', '>=')
prov = ""
symbol = ""
for char in math_symbols:
pos = dep.find(char)
if pos > -1:
prov = dep[pos:].replace(char, "")
dep = dep[:pos]
symbol = char
break
return (dep, prov, symbol)
def get_deps_provides_etc(pkgpath):
# Parse PKGBUILD for name, depends, makedepends, provides, arch's, and version
o = open(pkgpath, 'r')
info = o.read()
o.close()
lines = info.split("\n")
deps = []
provides = []
archs = []
array = []
user_vars = []
continue_line = False
for line in lines:
line = line.strip()
if line.find("#") > -1:
line = line[:line.find("#")]
if not continue_line:
deps_line = False
provides_line = False
arch_line = False
if line[:len(dep_str)] == dep_str:
line = line.replace(dep_str,"")
deps_line = True
elif line[:len(makedep_str)] == makedep_str:
line = line.replace(makedep_str,"")
deps_line = True
elif line[:len(provides_str)] == provides_str:
line = line.replace(provides_str,"")
provides_line = True
elif line[:len(arch_str)] == arch_str:
line = line.replace(arch_str, "")
arch_line = True
elif line[:len(pkgname_str)] == pkgname_str:
pkgname = line.replace(pkgname_str, "")
if pkgname.startswith("\"") and pkgname.endswith("\""):
pkgname = pkgname[1:-1]
pkgname = update_var(pkgname, user_vars, pkgpath)
user_vars.append([pkgname_str, pkgname])
line = ""
elif line[:len(pkgver_str)] == pkgver_str:
pkgver = line.replace(pkgver_str, "")
if pkgver.startswith("\"") and pkgver.endswith("\""):
pkgver = pkgver[1:-1]
pkgver = update_var(pkgver, user_vars, pkgpath)
user_vars.append([pkgver_str[:-1], pkgver])
line = ""
elif line[:len(pkgrel_str)] == pkgrel_str:
pkgrel = line.replace(pkgrel_str, "")
if pkgrel.startswith("\"") and pkgrel.endswith("\""):
pkgrel = pkgrel[1:-1]
pkgrel = update_var(pkgrel, user_vars, pkgpath)
user_vars.append([pkgrel_str[:-1], pkgrel])
line = ""
elif line[:len(build_str)] == build_str:
break
elif not continue_line:
if line.count("=") == 1 and line.count(" ") == 0 and line[:1] != "#" and \
line[:len(source_str)] != source_str and line[:len(url_str)] != url_str:
split = line.split("=")
for item in range(len(split)):
split[item] = update_var(split[item], user_vars, pkgpath)
user_vars.append(split)
line = ""
if len(line) > 0:
pos = line.find(")")
if pos > -1:
# strip everything from closing paranthesis on
# since some PKGBUILDS have comments after the
# depends array
line = line[:pos]
line = line.split(' ')
for i in range(len(line)):
line[i] = line[i].replace("'","").replace('"','')
line[i] = update_var(line[i], user_vars, pkgpath)
if len(line[i]) > 0:
if deps_line:
deps.append(line[i])
array=deps
elif provides_line:
provides.append(line[i])
array=provides
elif arch_line:
archs.append(line[i])
array=archs
if array and (array[-1] == "\\" or array[-1][-1] == "\\"):
# continue reading deps/provides on next line
if array[-1] == "\\":
array.pop(-1)
else:
array[-1] = array[-1].replace("\\", "")
continue_line = True
else:
continue_line = False
version = pkgver + "-" + pkgrel
return (pkgname, deps, provides, archs, version)
def get_pkgbuilds_in_dir(rootdir):
# Recursively populates pkgbuild_deps and pkgbuild_paths
# dicts with info from each PKGBUILD found in absroot:
if rootdir != absroot:
if rootdir.count("/") == (absroot.count("/")+1) and rootdir not in include_paths:
return
else:
print_heading("Duplicate PKGBUILDs")
pkgfound = False
for f in os.listdir(rootdir):
fpath = rootdir + "/" + f
if os.path.isdir(fpath):
get_pkgbuilds_in_dir(fpath)
elif f == 'PKGBUILD':
pkgfound = True
name = rootdir.split("/")[-1]
if name in pkgbuild_deps:
print fpath.replace(absroot, ""), "vs.", pkgbuild_paths[name].replace(absroot, "")
problems[1] += 1
else:
(pkgname, deps, provides, archs, version) = get_deps_provides_etc(fpath)
pkgbuild_deps[pkgname] = deps
pkgbuild_paths[pkgname] = fpath
pkgbuild_archs[pkgname] = archs
pkgbuild_versions[pkgname] = version
# We'll store the provides "backwards" compared to
# the other dicts. This will make searching for
# provides easier by being able to look up the
# provide name itself and find what provides it
for provide in provides:
pkgbuild_provides[provide] = pkgname
if pkgname != name:
mismatches.append(pkgname + " vs. " + fpath.replace(absroot, ""))
problems[7] += 1
if not pkgfound and rootdir.replace(absroot, "").count("/") == 3:
misses.append(rootdir.replace(absroot, "") + "/PKGBUILD")
problems[0] += 1
if rootdir == absroot:
print_heading("Missing PKGBUILDs")
for miss in misses:
print miss
print_heading("Mismatched Pkgnames")
for mismatch in mismatches:
print mismatch
def verify_depends():
# Make sure all the deps we parsed are actually packages; also
# ensure we meet dep provisions.
print_heading("Missing Dependencies")
unmet_provs = []
for pkgname in pkgbuild_deps:
deps = pkgbuild_deps[pkgname]
deps_to_pop = []
for i in range(len(deps)):
dep = deps[i]
(dep,prov, char) = split_dep_prov_symbol(dep)
try:
x = pkgbuild_deps[dep]
# Check that prov is met too:
if len(prov) > 0:
compare_str = "vercmp " + pkgbuild_versions[dep] + " " + prov
error = False
if char == "<=":
if int(os.popen(compare_str).read().replace("\n", "")) > 0:
error = True
elif char == ">=":
if int(os.popen(compare_str).read().replace("\n", "")) < 0:
error = True
elif char == "=":
if int(os.popen(compare_str).read().replace("\n", "")) != 0:
error = True
elif char == ">":
if int(os.popen(compare_str).read().replace("\n", "")) <= 0:
error = True
elif char == "<":
if int(os.popen(compare_str).read().replace("\n", "")) >= 0:
error = True
if error:
unmet_provs.append(pkgname + " --> '" + dep + char + prov + "'")
problems[3] += 1
except:
# Check if a package provides this dep:
try:
x = pkgbuild_provides[dep]
except:
print pkgname + " --> '" + dep + "'"
problems[2] += 1
deps_to_pop.append(i)
# Pop deps not found from end to beginning:
while len(deps_to_pop) > 0:
deps.pop(deps_to_pop[-1])
deps_to_pop.pop(-1)
print_heading("Unmet Dependency Provisions")
for unmet_prov in unmet_provs:
print unmet_prov
def verify_archs():
print_heading("Invalid Archs")
for pkgname in pkgbuild_archs:
newarch = []
archs = pkgbuild_archs[pkgname]
for arch in archs:
if arch not in valid_archs:
print "Invalid arch:", pkgname, "-->", arch
problems[5] += 1
else:
newarch.append(arch)
if len(newarch) > 0:
pkgbuild_archs[pkgname] = newarch
def verify_packages():
print_heading("Missing Repo Packages")
# Make sure packages exist in Arch repo(s):
ftp = FTP(base_server)
ftp.login()
prev_wd = ""
# Find all repos/archs; marching through them in order will greatly speed
# up searching for ftp files:
repos = []
for pkgname in pkgbuild_paths:
pkgrepo = pkgbuild_paths[pkgname].split("/")[-4]
if not pkgrepo in repos:
repos.append(pkgrepo)
archs = []
for pkgname in pkgbuild_archs:
pkgarchs = pkgbuild_archs[pkgname]
for arch in pkgarchs:
if not arch in archs:
archs.append(arch)
for r in repos:
for a in archs:
for pkgname in pkgbuild_archs:
repo = pkgbuild_paths[pkgname].split("/")[-4]
if repo == r:
archs = pkgbuild_archs[pkgname]
pkgver_rel = pkgbuild_versions[pkgname]
for arch in archs:
if arch == a:
# Check for file:
wd = repo + "/os/" + arch
if wd != prev_wd:
ftpfiles = ftp.nlst(wd)
prev_wd = wd
fname_new = wd + "/" + pkgname + "-" + pkgver_rel + "-" + arch + ".pkg.tar.gz"
fname_old = wd + "/" + pkgname + "-" + pkgver_rel + ".pkg.tar.gz"
if fname_old not in ftpfiles and fname_new not in ftpfiles:
print pkgname + "-" + pkgver_rel + " in " + wd
problems[6] += 1
ftp.quit()
def update_paths(paths, dep, dep2):
# Update paths by appending new paths with dep2
# based on all the different ways we could get
# to dep2:
for i in range(len(paths)):
array = paths[i].split(">")
if array[-1] == dep:
paths.append(paths[i] + ">" + dep2)
def check_name_in_recursive_deps(pkgname):
# Retrieve all recursive dependencies from a package and
# determines if pkgname is found in one of its deps.
recursive_deps = []
for dep in pkgbuild_deps[pkgname]:
dep = split_dep_prov_symbol(dep)[0] # Strip any provision
recursive_deps.append(dep)
paths = []
for dep in recursive_deps:
dep = split_dep_prov_symbol(dep)[0] # Strip any provision
paths.append(dep)
dep_added = True
while dep_added:
dep_added = False
for dep in recursive_deps:
for dep2 in pkgbuild_deps[dep]:
dep2 = split_dep_prov_symbol(dep2)[0] # Strip any provision
if not dep2 in recursive_deps:
if dep2 == pkgname:
update_paths(paths, dep, dep2)
print pkgname + ">" + paths[-1]
problems[4] += 1
return
recursive_deps.append(dep2)
update_paths(paths, dep, dep2)
dep_added = True
def circular_deps_check():
print_heading("Circular Dependencies")
# Check for circular dependencies:
for pkgname in pkgbuild_deps:
check_name_in_recursive_deps(pkgname)
def print_results():
print_heading("Archlinux Summary")
print "Dirs with missing PKGBUILDs: ", problems[0]
print "Duplicate PKGBUILDs: ", problems[1]
print "Missing dependencies: ", problems[2]
print "Unmet provisioned dependencies: ", problems[3]
print "Circular dependencies: ", problems[4]
print "Invalid archs: ", problems[5]
print "Missing packages in repos: ", problems[6]
print "Mismatching PKGBUILD names: ", problems[7]
print ""
mismatches = []
misses = []
pkgbuild_deps = {}
pkgbuild_provides = {}
pkgbuild_paths = {}
pkgbuild_archs = {}
pkgbuild_versions = {}
problems = [0,0,0,0,0,0,0,0]
print """\nWARNING: Please make sure you have a clean and up-to-date $ABSROOT when
running this script; custom PKGBUILDs, etc. can cause false positives.\n"""
for i in range(len(include_paths)):
include_paths[i] = absroot + "/" + include_paths[i]
print "Using the following paths:"
print include_paths
# Let's do it:
get_pkgbuilds_in_dir(absroot)
verify_depends()
verify_archs()
verify_packages()
circular_deps_check()
print_results()
_______________________________________________
arch mailing list
[email protected]
http://archlinux.org/mailman/listinfo/arch