[pacman-dev] Script to validate ABS/PKGBUILDs
After reading Xavier's email[1] that mentioned the possibility of an external script to check for circular dependencies, I set out to do just that. Along the way, I found a number of other issues in the ABS tree and decided to report those out as well. The script is written in python because dicts make it all so much easier. It takes a little over a minute to run on my 1.5ghz machine.
From the script itself:
# This script currently checks for a number of issues in your ABS # tree: # 1. Directories with missing PKGBUILDS # 2. Duplicate PKGBUILDs # 3. Referenced dependencies (and make-dependencies) that cannot # be found. This correctly takes into account any 'provides'. # 4. Circular dependencies # # Todo: # 1. Account for versioned deps, e.g., foo=1.2.3 # 2. Accommodate testing repo? Hopefully people find it useful. I'm open to suggestions and improvements. ------------- $ ./check_pkgbuilds.py WARNING: Please make sure you have a clean $ABSROOT when running this script; custom PKGBUILDs, etc. can cause false positives. Ignoring the following paths: /var/abs/local /var/abs/testing /var/abs/.sup Duplicate PKGBUILD found for junit --> /var/abs/community/devel/junit/PKGBUILD --> /var/abs/extra/devel/junit/PKGBUILD PKGBUILD not found in dir /var/abs/community/gnome/tomboy PKGBUILD not found in dir /var/abs/community/kernels/kernel26archck PKGBUILD not found in dir /var/abs/community/kernels/kernel26suspend2 Duplicate PKGBUILD found for bcprov --> /var/abs/community/lib/bcprov/PKGBUILD --> /var/abs/extra/lib/bcprov/PKGBUILD PKGBUILD not found in dir /var/abs/community/lib/cegui PKGBUILD not found in dir /var/abs/community/lib/libixp PKGBUILD not found in dir /var/abs/community/lib/libsmbios Duplicate PKGBUILD found for perl-mime-types --> /var/abs/community/lib/perl-mime-types/PKGBUILD --> /var/abs/extra/lib/perl-mime-types/PKGBUILD Duplicate PKGBUILD found for perl-module-pluggable --> /var/abs/community/lib/perl-module-pluggable/PKGBUILD --> /var/abs/extra/lib/perl-module-pluggable/PKGBUILD PKGBUILD not found in dir /var/abs/community/modules/ati-drivers PKGBUILD not found in dir /var/abs/community/modules/ati-drivers-arch PKGBUILD not found in dir /var/abs/community/multimedia/flite PKGBUILD not found in dir /var/abs/community/multimedia/gcfilms PKGBUILD not found in dir /var/abs/community/multimedia/polypaudio Duplicate PKGBUILD found for pptpclient --> /var/abs/community/network/pptpclient/PKGBUILD --> /var/abs/core/support/pptpclient/PKGBUILD Duplicate PKGBUILD found for webalizer --> /var/abs/community/network/webalizer/PKGBUILD --> /var/abs/extra/network/webalizer/PKGBUILD PKGBUILD not found in dir /var/abs/community/x11/ttf-dejavu PKGBUILD not found in dir /var/abs/community/x11/wmii PKGBUILD not found in dir /var/abs/community/x11/xarchiver Duplicate PKGBUILD found for aufs-utils --> /var/abs/community/system/aufs-utils/PKGBUILD --> /var/abs/extra/system/aufs-utils/PKGBUILD PKGBUILD not found in dir /var/abs/community/system/mkinitramfs PKGBUILD not found in dir /var/abs/community/system/qemu PKGBUILD not found in dir /var/abs/community/system/reiser4progs PKGBUILD not found in dir /var/abs/community/system/userui Cannot find dependency in package: shfs-ck>kernel26ck Cannot find dependency in package: rafkill>dumb Cannot find dependency in package: shfs-beyond>kernel26beyond Cannot find dependency in package: em8300-beyond>kernel26beyond Cannot find dependency in package: icomplete>vim-devel Cannot find dependency in package: syslog-ng>eventlog Cannot find dependency in package: em8300-ck>kernel26ck Cannot find dependency in package: em8300-suspend2>kernel26suspend2 Cannot find dependency in package: ltmodem>ltmodem-utils Cannot find dependency in package: shfs-suspend2>kernel26suspend2 Cannot find dependency in package: klibc-beyond>kernel26beyond Circular dependency found for gcc-libs --> gcc-libs>gcc>gcc-libs Circular dependency found for libxcb --> libxcb>libxslt>python>tk>libx11>libxcb Circular dependency found for gutenprint --> gutenprint>gimp>gutenprint Circular dependency found for libxslt --> libxslt>python>tk>libx11>libxcb>libxslt Circular dependency found for shadow --> shadow>pam>db>coreutils>shadow Circular dependency found for flightgear-data --> flightgear-data>flightgear>flightgear-data Circular dependency found for flightgear --> flightgear>flightgear-data>flightgear Circular dependency found for eclipse-ecj --> eclipse-ecj>gcc-gcj>eclipse-ecj Circular dependency found for libx11 --> libx11>libxcb>libxslt>python>tk>libx11 Circular dependency found for gcc-gcj --> gcc-gcj>eclipse-ecj>gcc-gcj Circular dependency found for texinfo --> texinfo>ncurses>glibc>gcc>binutils>texinfo Circular dependency found for pam --> pam>db>coreutils>pam Circular dependency found for tk --> tk>libx11>libxcb>libxslt>python>tk Circular dependency found for tzdata --> tzdata>glibc>tzdata Circular dependency found for bash --> bash>readline>glibc>bash Circular dependency found for binutils --> binutils>glibc>gcc>binutils Circular dependency found for ncurses --> ncurses>glibc>bash>readline>ncurses Circular dependency found for gimp --> gimp>gutenprint>gimp Circular dependency found for coreutils --> coreutils>pam>db>coreutils Circular dependency found for glibc --> glibc>tzdata>glibc Circular dependency found for gcc --> gcc>gcc-libs>gcc Circular dependency found for db --> db>coreutils>pam>db Circular dependency found for python --> python>tk>libx11>libxcb>libxslt>python Circular dependency found for libxml2 --> libxml2>python>tk>libx11>libxcb>libxslt>libxml2 Circular dependency found for readline --> readline>glibc>bash>readline Scott [1] http://archlinux.org/pipermail/pacman-dev/2007-November/009800.html
For the record, I've fixed the 'PKGBUILD not found in dir' errors. It was caused by old patches/files that haven't been untagged in cvs. I've also removed a few duplicate from the community repo with the exeption of junit (the package in extra needs to be at an older version) and the perl modules which could possibly be removed from extra in the current repo cleanup. On Sun, 4 Nov 2007, Scott Horowitz wrote:
After reading Xavier's email[1] that mentioned the possibility of an external script to check for circular dependencies, I set out to do just that. Along the way, I found a number of other issues in the ABS tree and decided to report those out as well.
The script is written in python because dicts make it all so much easier. It takes a little over a minute to run on my 1.5ghz machine.
From the script itself:
# This script currently checks for a number of issues in your ABS # tree: # 1. Directories with missing PKGBUILDS # 2. Duplicate PKGBUILDs # 3. Referenced dependencies (and make-dependencies) that cannot # be found. This correctly takes into account any 'provides'. # 4. Circular dependencies # # Todo: # 1. Account for versioned deps, e.g., foo=1.2.3 # 2. Accommodate testing repo?
Hopefully people find it useful. I'm open to suggestions and improvements.
-------------
-- This message has been scanned for viruses and dangerous content by MailScanner, and is believed to be clean.
participants (2)
-
Eric Belanger
-
Scott Horowitz