diff --git a/pisi/__init__.py b/pisi/__init__.py index a8825a19..e0899e6c 100644 --- a/pisi/__init__.py +++ b/pisi/__init__.py @@ -8,6 +8,16 @@ # Please read the COPYING file. # -# PISI package version -__version__ = "0.1" +# PISI version +__version__ = "0.2" + +__all__ = [ 'toplevel', 'packagedb', 'installdb' ] + +class PisiError(Exception): + """Class of exceptions that lead to program termination""" + pass + +class PisiException(Exception): + """Class of exceptions that must be caught and handled within PISI""" + pass diff --git a/pisi/actionsapi/__init__.py b/pisi/actionsapi/__init__.py index 219aa50c..7698c446 100644 --- a/pisi/actionsapi/__init__.py +++ b/pisi/actionsapi/__init__.py @@ -10,3 +10,11 @@ # pisi.actionsapi version __version__ = '0.1' + +import pisi + +class ActionsApiError(pisi.PisiError): + pass + +class ActionsApiException(pisi.PisiException): + pass diff --git a/pisi/actionsapi/autotools.py b/pisi/actionsapi/autotools.py index 2a47ef3b..d30d4ed6 100644 --- a/pisi/actionsapi/autotools.py +++ b/pisi/actionsapi/autotools.py @@ -18,10 +18,11 @@ import os from pisi.ui import ui # ActionsAPI Modules -import get -from shelltools import system -from shelltools import can_access_file -from libtools import gnuconfig_update +import pisi.actionsapi +import pisi.actionsapi.get as get +from pisi.actionsapi.shelltools import system +from pisi.actionsapi.shelltools import can_access_file +from pisi.actionsapi.libtools import gnuconfig_update class ConfigureError(Exception): def __init__(self, Exception): diff --git a/pisi/actionsapi/coreutils.py b/pisi/actionsapi/coreutils.py index 30a6357e..c8f5c8b4 100644 --- a/pisi/actionsapi/coreutils.py +++ b/pisi/actionsapi/coreutils.py @@ -16,6 +16,8 @@ import sys import re from itertools import izip, imap, count, ifilter, ifilterfalse +import pisi.actionsapi as actionsapi + def cat(filename): return file(filename).xreadlines() diff --git a/pisi/actionsapi/libtools.py b/pisi/actionsapi/libtools.py index cd4a75d6..621297aa 100644 --- a/pisi/actionsapi/libtools.py +++ b/pisi/actionsapi/libtools.py @@ -19,8 +19,9 @@ import shutil from pisi.ui import ui # ActionsAPI Modules -from shelltools import chmod, makedirs -import get +import pisi.actionsapi +from pisi.actionsapi.shelltools import chmod, makedirs +import pisi.actionsapi.get def preplib(sourceDirectory): os.system('/sbin/ldconfig -n -N %s' % get.installDIR() + sourceDirectory) diff --git a/pisi/actionsapi/pisitools.py b/pisi/actionsapi/pisitools.py index b7abd843..8c1c2f34 100644 --- a/pisi/actionsapi/pisitools.py +++ b/pisi/actionsapi/pisitools.py @@ -20,9 +20,10 @@ import fileinput import re # ActionsAPI Modules -import get -from pisitools_functions import * -from shelltools import * +import pisi.actionsapi +import pisi.actionsapi.get as get +from pisi.actionsapi.pisitools_functions import * +from pisi.actionsapi.shelltools import * def dobin(sourceFile, destinationDirectory = '/usr/bin'): '''insert a executable file into /bin or /usr/bin''' diff --git a/pisi/actionsapi/pisitools_functions.py b/pisi/actionsapi/pisitools_functions.py index b47cf0ef..6509b97b 100644 --- a/pisi/actionsapi/pisitools_functions.py +++ b/pisi/actionsapi/pisitools_functions.py @@ -18,7 +18,8 @@ import os import glob # ActionsAPI Modules -from shelltools import * +import pisi.actionsapi +from pisi.actionsapi.shelltools import * class FileError(Exception): pass diff --git a/pisi/actionsapi/shelltools.py b/pisi/actionsapi/shelltools.py index 5e275f50..1282c1ed 100644 --- a/pisi/actionsapi/shelltools.py +++ b/pisi/actionsapi/shelltools.py @@ -20,7 +20,8 @@ import shutil from pisi.ui import ui # ActionsAPI Modules -import get +import pisi.actionsapi +import pisi.actionsapi.get def can_access_file(sourceFile): '''test the existence of file''' diff --git a/pisi/actionsapi/variables.py b/pisi/actionsapi/variables.py index 91196a83..0486da17 100644 --- a/pisi/actionsapi/variables.py +++ b/pisi/actionsapi/variables.py @@ -15,8 +15,8 @@ from os import getenv, environ # Pisi-Core Modules -import pisi.config -import pisi.constants +import pisi.config # That was the only correct +import pisi.constants # use before changing to abs. imports # Set individual information, that are generally needed for ActionsAPI diff --git a/pisi/archive.py b/pisi/archive.py index b6c0905a..b46b869c 100644 --- a/pisi/archive.py +++ b/pisi/archive.py @@ -9,21 +9,23 @@ # # Please read the COPYING file. # - # Archive module provides access to regular archive file types. # maintainer baris and meren -#standard lisbrary modules +# standard library modules import os import tarfile import zipfile -#pisi modules -import util +# PiSi modules +import pisi +import pisi.util as util -class ArchiveError(Exception): + +class ArchiveError(pisi.PisiError): pass + class ArchiveBase(object): """Base class for Archive classes.""" def __init__(self, filepath, atype): @@ -38,6 +40,7 @@ class ArchiveBase(object): os.makedirs(self.targetDir) + class ArchiveTar(ArchiveBase): """ArchiveTar handles tar archives depending on the compression type. Provides access to tar, tar.gz and tar.bz2 files. @@ -68,6 +71,7 @@ class ArchiveTar(ArchiveBase): os.chdir(oldwd) tar.close() + class ArchiveZip(ArchiveBase): """ArchiveZip handles zip archives. @@ -180,6 +184,7 @@ class ArchiveZip(ArchiveBase): self.close() return + class Archive: """Archive is the main factory for ArchiveClasses, regarding the Abstract Factory Pattern :).""" diff --git a/pisi/build.py b/pisi/build.py index 8fa0a86b..beeec95d 100644 --- a/pisi/build.py +++ b/pisi/build.py @@ -17,17 +17,19 @@ import os import sys -import util -from ui import ui -from constants import const -from config import config -from context import BuildContext -from sourcearchive import SourceArchive -from files import Files, FileInfo -from metadata import MetaData -from package import Package +import pisi +import pisi.util as util +from pisi.ui import ui +from pisi.constants import const +from pisi.config import config +from pisi.context import BuildContext +from pisi.sourcearchive import SourceArchive +from pisi.files import Files, FileInfo +from pisi.metadata import MetaData +from pisi.package import Package -class PisiBuildError(Exception): + +class PisiBuildError(pisi.PisiError): pass diff --git a/pisi/cli/commands.py b/pisi/cli/commands.py index e6aedf9c..3a4fccfe 100644 --- a/pisi/cli/commands.py +++ b/pisi/cli/commands.py @@ -12,9 +12,10 @@ import sys from optparse import OptionParser + import pisi from pisi.purl import PUrl -from common import * +from pisi.cli.common import * import pisi.toplevel from pisi.ui import ui @@ -27,6 +28,7 @@ def commandsString(): s += x + '\n' return s + # helper functions def cmdObject(cmd, fail=False): @@ -40,6 +42,7 @@ def cmdObject(cmd, fail=False): else: return None + class Command(object): """generic help string for any command""" @@ -99,6 +102,7 @@ class Command(object): print 'Program terminated abnormally.' sys.exit(-1) + class Help(Command): """Prints usage @@ -122,6 +126,7 @@ for that command. obj = cmdObject(arg, True) obj.help() # print "\n",self.parser.format_option_help() + class Build(Command): """Build a PISI package using a pspec.xml file @@ -143,6 +148,7 @@ fetch all necessary files and build the package for you. for arg in self.args: pisi.toplevel.build(arg, self.authInfo) + class PackageOp(Command): """Abstract package operation command""" def __init__(self): @@ -173,6 +179,7 @@ class PackageOp(Command): # pisi.comariface.finalize() #except pisi.comariface.ComarError: # ui.error('Comar error encountered\n') + class Install(PackageOp): """Install PISI packages @@ -195,6 +202,7 @@ specified a package name, it should exist in a specified repository. pisi.toplevel.install(self.args) self.finalize() + class Upgrade(PackageOp): """Upgrade PISI packages @@ -216,6 +224,7 @@ specified a package name, it should exist in a specified repository. pisi.toplevel.upgrade(self.args) self.finalize() + class Remove(PackageOp): """Remove PISI packages @@ -236,6 +245,7 @@ Remove a package from your system. Just give the package name to remove. pisi.toplevel.remove(self.args) self.finalize() + class ConfigurePending(PackageOp): """configure pending packages""" @@ -251,6 +261,7 @@ class ConfigurePending(PackageOp): pisi.toplevel.configure_pending() self.finalize() + class Info(Command): """Display information about a package @@ -277,6 +288,7 @@ TODO: Some description... metadata, files = pisi.toplevel.info(arg) print metadata.package + class Index(Command): """Index PISI files in a given directory @@ -302,6 +314,7 @@ TODO: Some description... print 'Indexing only a single directory supported' return + class ListInstalled(Command): """Print the list of all installed packages @@ -328,6 +341,7 @@ TODO: Some description... else: print package + class UpdateRepo(Command): """Update the databases of a repository @@ -348,6 +362,7 @@ TODO: Some description... for repo in self.args: pisi.toplevel.update_repo(repo) + class AddRepo(Command): """Add a repository @@ -369,6 +384,7 @@ TODO: Some description... self.help() return + class RemoveRepo(Command): """Remove a repository @@ -389,6 +405,7 @@ TODO: Some description... self.help() return + class ListRepo(Command): """List repositories @@ -500,6 +517,7 @@ for you. for arg in self.args: pisi.toplevel.build_until(arg, state, self.authInfo) + class BuildUnpack(Command): """Unpack the source archive @@ -559,6 +577,7 @@ TODO: desc. for arg in self.args: pisi.toplevel.build_until(arg, "buildaction", self.authInfo) + class BuildInstall(Command): """Install to the sandbox @@ -578,6 +597,7 @@ TODO: desc. for arg in self.args: pisi.toplevel.build_until(arg, "installaction", self.authInfo) + class BuildPackage(Command): """Setup the source @@ -597,6 +617,8 @@ TODO: desc. for arg in self.args: pisi.toplevel.build_until(arg, "buildpackages", self.authInfo) +# command dictionary + commands = {"help": Help, "build": Build, "build-until": BuildUntil, diff --git a/pisi/cli/pisicli.py b/pisi/cli/pisicli.py index 91cf7e63..20d4b373 100644 --- a/pisi/cli/pisicli.py +++ b/pisi/cli/pisicli.py @@ -16,8 +16,8 @@ from optparse import OptionParser import pisi import pisi.operations from pisi.purl import PUrl -from common import * -from commands import * +from pisi.cli.common import * +from pisi.cli.commands import * class ParserError(Exception): pass diff --git a/pisi/comariface.py b/pisi/comariface.py index 6c34811f..c57006a3 100644 --- a/pisi/comariface.py +++ b/pisi/comariface.py @@ -13,7 +13,9 @@ import socket import struct -class ComarError(Exception): +import pisi + +class ComarError(pisi.PisiError): pass class ComarIface: diff --git a/pisi/config.py b/pisi/config.py index 1e9b1d85..084b874c 100644 --- a/pisi/config.py +++ b/pisi/config.py @@ -16,8 +16,9 @@ # Authors: Baris Metin -from constants import const -from configfile import ConfigurationFile +import pisi +from pisi.constants import const +from pisi.configfile import ConfigurationFile class Config(object): """Config Singleton""" @@ -27,9 +28,6 @@ class Config(object): self.values = ConfigurationFile("/etc/pisi/pisi.conf") self.destdir = self.values.general.destinationdirectory - def __call__(self): - return self - # directory accessor functions # here is how it goes # x_dir: system wide directory for storing info type x diff --git a/pisi/constants.py b/pisi/constants.py index 58427016..c725066a 100644 --- a/pisi/constants.py +++ b/pisi/constants.py @@ -16,6 +16,8 @@ # Author: Baris Metin # Baris Metin