diff --git a/src/pisi-build b/src/pisi-build index a9942559..50d276ff 100755 --- a/src/pisi-build +++ b/src/pisi-build @@ -6,20 +6,26 @@ from os.path import basename import pisi.config import pisi.util +import pisi.ui from pisi.build import PisiBuild, PisiBuildError +def usage(progname = "pisi-build"): + print """ +Usage: +%s [options] package-name.pspec +""" %(progname) def doProgress(filename, percent, rate, symbol): out = '\r%-30.30s %3d%% %12.2f %s' % \ (pd['filename'], pd['percent'], pd['rate'], pd['symbol']) - pisi.util.information(out) + pisi.ui.info(out) def main(): import sys import getopt # wrapper for usage(progname) function - help = lambda: pisi.util.usage(sys.argv[0]) + help = lambda: usage(sys.argv[0]) # getopt magic try: @@ -47,11 +53,11 @@ def main(): # doing the real job. pb = PisiBuild(pspec) - pisi.util.information("Building PISI source package: %s\n" % pb.spec.sourceName) + pisi.ui.info("Building PISI source package: %s\n" % pb.spec.sourceName) - pisi.util.information("Fetching source from: %s (be patient)\n" % pb.spec.archiveUri) + pisi.ui.info("Fetching source from: %s (be patient)\n" % pb.spec.archiveUri) pb.fetchArchive(doProgress) - pisi.util.information("Source archive is stored: %s/%s\n" %(pisi.config.archives_dir, pb.archiveName)) + pisi.ui.info("Source archive is stored: %s/%s\n" %(pisi.config.archives_dir, pb.archiveName)) # pb.unpackArchive() # pb.applyPatches() # pb.buildSource() diff --git a/src/pisi-install b/src/pisi-install index a18d8d75..9871d9e6 100755 --- a/src/pisi-install +++ b/src/pisi-install @@ -4,12 +4,18 @@ import pisi.install import pisi.util +def usage(progname = "pisi-install"): + print """ +Usage: +%s [options] +""" %(progname) + def main(): import sys import getopt # wrapper for usage(progname) function - help = lambda: pisi.util.usage(sys.argv[0]) + help = lambda: usage(sys.argv[0]) # getopt magic try: diff --git a/src/pisi/archive.py b/src/pisi/archive.py new file mode 100644 index 00000000..4120d255 --- /dev/null +++ b/src/pisi/archive.py @@ -0,0 +1,3 @@ +# utilities to extract and build archives of zip, tar, targz, tarbz2 +# maintainer: baris and murat + diff --git a/src/pisi/build.py b/src/pisi/build.py index b0a122c4..b4adc0f6 100644 --- a/src/pisi/build.py +++ b/src/pisi/build.py @@ -1,4 +1,6 @@ # -*- coding: utf-8 -*- +# package bulding stuff +# maintainer: baris and meren # python standard library import os @@ -10,7 +12,7 @@ from fetcher import Fetcher # import pisipackage import util import config - +import ui class PisiBuildError(Exception): pass @@ -36,7 +38,7 @@ class PisiBuild: destpath = fetch.filedest + "/" + fetch.filename if os.access(destpath, os.R_OK): if util.md5_file(destpath)==self.spec.archiveMD5: - util.information(fetch.filename + " cached\n") + ui.info(fetch.filename + " cached\n") return if percentHook: @@ -57,5 +59,5 @@ class PisiBuild: def buildPackages(self): for package in self.spec.packages: - util.information("** Building package %s\n" % package.name); + ui.info("** Building package %s\n" % package.name); diff --git a/src/pisi/dependency.py b/src/pisi/dependency.py index 61e0b859..9f1379f8 100644 --- a/src/pisi/dependency.py +++ b/src/pisi/dependency.py @@ -1 +1,3 @@ # dependency analyzer +# maintainer: eray and caglar + diff --git a/src/pisi/fetcher.py b/src/pisi/fetcher.py index cae68542..97e70b41 100644 --- a/src/pisi/fetcher.py +++ b/src/pisi/fetcher.py @@ -1,5 +1,6 @@ # -*- coding: utf-8 -*- # download magic +# maintainer: baris and meren # python standard library modules import urlparse diff --git a/src/pisi/install.py b/src/pisi/install.py index 1003413e..c4f4f04e 100644 --- a/src/pisi/install.py +++ b/src/pisi/install.py @@ -4,9 +4,10 @@ from specfile import SpecFile from package import Package import util -#import repodb -#import packagedb -#import dependency +import ui +import installdb +import packagedb +import dependency #import conflicts @@ -15,15 +16,16 @@ def install_package_file(package_fn): package = Package(package_fn, "r") # extract control files util.clean_directory(install_dir) + ui.info.("extracting files\n") package.extract_files(install_dir) # verify package # check if we have all required files - specfile = SpecFile() - specfile.read(install_dir + "/pspec.xml") + spec = PackageSpecFile() + spec.read(install_dir + '/pspec.xml') # check pspec semantics - specfile.verify() + spec.verify() # check file system requirements # check conflicts # check dependencies @@ -31,6 +33,7 @@ def install_package_file(package_fn): # unzip package in place # update databases + installdb.install(spec.install_dir + '/files.xml') # installdb diff --git a/src/pisi/installdb.py b/src/pisi/installdb.py index bbc09cb1..76a098af 100644 --- a/src/pisi/installdb.py +++ b/src/pisi/installdb.py @@ -1,25 +1,43 @@ # -*- coding: utf-8 -*- # installation database +# maintainer: eray and caglar +from config import * import shelve +import util + d = shelve.open( db_dir + '/install.dbm') +files_dir = archive_dir + "/files" + class InstallDBError(Exception): pass +def files_name(name, version, release): + return files + '/' + name + '-' + version + '-' + release +def is_recorded(name, version, release): + key = (name, version, release) + return d.has_key( key ) -def isRecorded(name, version, release): - return d.has_key( (name, version, release) ) +def is_installed(name, version, release): + key = (name, version, release) + return is_recorded(key) and d[key]=='i' -def isInstalled(name, version, release): - return d.has_key( (name, version, release) ) - -def install( name, version, release, state): - if isInstalled(name,version,release): +def install( name, version, release, files_xml): + key = (name, version, release) + if isInstalled(key): raise InstallDBError("already installed") - d[ (name,version,release) ] = state - + d[key] = 'i' + util.copy_file(files_xml, files_name( name, version, release) ) + def remove( name, version, release): - if + key = (name, version, release) + d[key] = 'r' + +def purge( name, version, release): + d.delete(key) + util.remove_file( files_name( name, version, release) ) + + diff --git a/src/pisi/package.py b/src/pisi/package.py index f38e90c0..c7255d76 100644 --- a/src/pisi/package.py +++ b/src/pisi/package.py @@ -1,5 +1,6 @@ # package abstraction # provides methods to add/remove files, extract control files +# maintainer: baris and meren class Package: """Package: PISI package class""" diff --git a/src/pisi/packagedb.py b/src/pisi/packagedb.py index 4e7790f1..bb4f5d56 100644 --- a/src/pisi/packagedb.py +++ b/src/pisi/packagedb.py @@ -1,8 +1,8 @@ # -*- coding: utf-8 -*- # package database # interface for update/query to local package repository +# maintainer: eray and caglar import shelve -files_dir = archive_dir + "/files" diff --git a/src/pisi/util.py b/src/pisi/util.py index 5fd31aaa..91d06f39 100644 --- a/src/pisi/util.py +++ b/src/pisi/util.py @@ -1,14 +1,11 @@ # -*- coding: utf-8 -*- # misc. utility functions, including process and file utils +# maintainer: eray and caglar and baris and meren! import os import sys import md5 -def information(message): - sys.stdout.write(message) - sys.stdout.flush() - # check if directory exists, and create if it doesn't # works recursively # FIXME: could hav a better name @@ -49,9 +46,3 @@ def strlist(l): class ArgError(Exception): pass - -def usage(progname = "pisi-build"): - print """ -Usage: -%s [options] package-name.pspec -""" %(progname)