From fa7aa783cb7a57b60b98d102b2bc4bc5a3681ac5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bar=C4=B1=C5=9F=20Metin?= Date: Fri, 15 Jul 2005 13:48:08 +0000 Subject: [PATCH] =?UTF-8?q?paket=20kuruluyor=20ve=20paket=20i=C3=A7erisind?= =?UTF-8?q?eki=20comar=20scriptleri=20register=20ediliyor!?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit dizinlendirmede bir sorun var. Dosyalar saklanırken ayrı ayrı dizinlere koyuluyor ve files_xml_dir'a files.xml diye dosya atılıyor. Salakça tabi :). Bunun yerine paket adı ve version numarasından bir dizin oluşturacağız lib_dir() içerisine ve dosyaları oraya yerleştireceğiz... Daha kolay olacak. Salaklığıma geldi files_xml_dir, metadata_xml_dir, comar_files_dir gibi dizinler açtım... --- pisi/comariface.py | 18 +++++++++++------- pisi/config.py | 9 +++++++++ pisi/constants.py | 6 ++++++ pisi/install.py | 32 +++++++++++++++++++++++++------- 4 files changed, 51 insertions(+), 14 deletions(-) diff --git a/pisi/comariface.py b/pisi/comariface.py index 7e269ef4..b110208a 100644 --- a/pisi/comariface.py +++ b/pisi/comariface.py @@ -3,19 +3,23 @@ import socket def sendCommand(cmd, blocking=False): - s = socket.socket(socket.AF_UNIX,socket.SOCK_STREAM) - s.connect("/tmp/comar") - s.send(cmd) - s.close() + try: + s = socket.socket(socket.AF_UNIX,socket.SOCK_STREAM) + s.connect("/tmp/comar") + s.send(cmd) + s.close() + return True + except socket.error: + return False def registerScript(om, appname, scriptPath): cmd = '+' + om + ' ' + appname + ' ' +scriptPath + '\n' - sendCommand(cmd) + return sendCommand(cmd) def removeScript(appname): cmd = "-" + appname + '\n' - sendCommand(cmd) + return sendCommand(cmd) def call(om): cmd = '$' + om + '\n' - sendCommand(cmd) + return sendCommand(cmd) diff --git a/pisi/config.py b/pisi/config.py index 1a68c318..a614c218 100644 --- a/pisi/config.py +++ b/pisi/config.py @@ -42,6 +42,15 @@ class Config(object): def install_dir(self): return self.tmp_dir() + const.install_dir_suffix + def files_xml_dir(self): + return self.destdir + const.files_xml_dir_suffix + + def metadata_xml_dir(self): + return self.destdir + const.metadata_xml_dir_suffix + + def comar_files_dir(self): + return self.destdir + const.comar_files_dir_suffix + __configinstance = configimpl() def __init__(self): diff --git a/pisi/constants.py b/pisi/constants.py index 590f391a..e4ceb1c0 100644 --- a/pisi/constants.py +++ b/pisi/constants.py @@ -33,10 +33,16 @@ class Constants: self.__c.distributionRelease = "0.1" # directories + # TODO: bu dizinler constant olmak zorunda değil. yalnızca bu + # grubu config içerisine taşıyabiliriz. configfile'dan + # düzenlenebilirler. self.__c.lib_dir_suffix = "/var/lib/pisi" self.__c.db_dir_suffix = "/var/db/pisi" self.__c.archives_dir_suffix = "/var/cache/pisi/archives" self.__c.tmp_dir_suffix = "/var/tmp/pisi" + self.__c.comar_files_dir_suffix = "/var/lib/pisi/comar" + self.__c.files_xml_dir_suffix = "/var/lib/pisi/files" + self.__c.metadata_xml_dir_suffix = "/var/lib/pisi/metadata" # directory suffixes for build self.__c.work_dir_suffix = "/work" diff --git a/pisi/install.py b/pisi/install.py index eb32cb1f..feab05fa 100644 --- a/pisi/install.py +++ b/pisi/install.py @@ -9,11 +9,13 @@ from package import Package from files import Files import util from config import config +from constants import const from ui import ui from installdb import installdb from packagedb import packagedb import dependency from metadata import MetaData +import comariface #import conflicts ##TODO: Caglar'in onerisi uzerine. @@ -54,6 +56,11 @@ def extract_pkg_files(package_fn): ui.info('Extracting files\n') package.extract_dir_flat('install', config.destdir) +def copy_from_pkg(package_fn, file, dest): + package = Package(package_fn, 'r') + + ui.info('Coping file %s to %s\n' %(file, dest)) + package.extract_file(file, dest) def remove(package_name): """Remove a goddamn package""" @@ -125,15 +132,26 @@ def install(package_fn): # unzip package in place extract_pkg_files(package_fn) - # TODO: put files.xml, metadata.xml, actions.py and COMAR scripts + # put files.xml, metadata.xml, actions.py and COMAR scripts # somewhere in the file system. We'll need these in future... + copy_from_pkg(package_fn, const.files_xml , config.files_xml_dir()) + copy_from_pkg(package_fn, const.metadata_xml , config.metadata_xml_dir()) + for pcomar in package.providesComar: + fpath = os.path.join(const.comar_dir, pcomar.script) + # comar prefix is added to the libdir while extracting comar + # script file. so we'll use lib_dir as destination. + copy_from_pkg(package_fn, fpath, config.lib_dir()) + - # TODO: register COMAR scripts - # something like the below? - # import comariface - # for comar int metadata.package.providesComar: - # scriptPath = .... + comar.script - # comariface.register(comar.om, metadata.package.name, scriptPath) + # register COMAR scripts + for pcomar in package.providesComar: + scriptPath = config.comar_files_dir() + pcomar.script + ui.info("Registering COMAR script %s\n" % pcomar.script) + ret = comariface.registerScript(pcomar.om, + package.name, + scriptPath) + if not ret: + ui.error("Unable to register COMAR script. Be sure that comard is running!\n") # update databases