From 20877b202008cf9a28fab340dfcd96fd9f623cdb Mon Sep 17 00:00:00 2001 From: Faik Uygur Date: Wed, 28 Feb 2007 18:01:55 +0000 Subject: [PATCH] * cmake support for actionsapi by meren --- pisi/actionsapi/cmaketools.py | 119 ++++++++++++++++++++++++++++++++++ 1 file changed, 119 insertions(+) create mode 100644 pisi/actionsapi/cmaketools.py diff --git a/pisi/actionsapi/cmaketools.py b/pisi/actionsapi/cmaketools.py new file mode 100644 index 00000000..5d3c8bac --- /dev/null +++ b/pisi/actionsapi/cmaketools.py @@ -0,0 +1,119 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2005 - 2007, TUBITAK/UEKAE +# +# This program is free software; you can redistribute it and/or modify it under +# the terms of the GNU General Public License as published by the Free +# Software Foundation; either version 2 of the License, or (at your option) +# any later version. +# +# Please read the COPYING file. + +# Standard Python Modules +import os + +import gettext +__trans = gettext.translation('pisi', fallback=True) +_ = __trans.ugettext + +# Pisi Modules +import pisi.context as ctx +from pisi.util import join_path + +# ActionsAPI Modules +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.shelltools import unlink + +class ConfigureError(pisi.actionsapi.Error): + def __init__(self, value=''): + pisi.actionsapi.Error.__init__(self, value) + self.value = value + ctx.ui.error(value) + if can_access_file('config.log'): + ctx.ui.error(_('Please attach the config.log to your bug report:\n%s/config.log') % os.getcwd()) + +class MakeError(pisi.actionsapi.Error): + def __init__(self, value=''): + pisi.actionsapi.Error.__init__(self, value) + self.value = value + ctx.ui.error(value) + +class InstallError(pisi.actionsapi.Error): + def __init__(self, value=''): + pisi.actionsapi.Error.__init__(self, value) + self.value = value + ctx.ui.error(value) + +class RunTimeError(pisi.actionsapi.Error): + def __init__(self, value=''): + pisi.actionsapi.Error.__init__(self, value) + self.value = value + ctx.ui.error(value) + +def configure(parameters = '', sourceDir = '.', installPrefix = '%s' % get.defaultprefixDIR()): + '''configure source with given cmake parameters = "-DCMAKE_BUILD_TYPE -DCMAKE_CXX_FLAGS ... "''' + if can_access_file(join_path(sourceDir, 'CMakeLists.txt')): + args = 'cmake \ + -DCMAKE_INSTALL_PREFIX=%s/%s \ + %s %s' % (get.installDIR(), + installPrefix, + parameters, + sourceDir) + + if system(args): + raise ConfigureError(_('Configure failed.')) + else: + raise ConfigureError(_('No configure script found for cmake.')) + +def make(parameters = ''): + '''build source with given parameters''' + if can_access_file('Makefile'): + if system('make %s %s' % (get.makeJOBS(), parameters)): + raise MakeError(_('Make failed.')) + else: + raise InstallError(_('No Makefile found.')) + +def fixInfoDir(): + infoDir = "%s/usr/share/info/dir" % get.installDIR() + if can_access_file(infoDir): + unlink(infoDir) + +def install(parameters = '', argument = 'install'): + '''install source into install directory with given parameters''' + if can_access_file('makefile') or can_access_file('Makefile') or can_access_file('GNUmakefile'): + args = 'make prefix=%(prefix)s/%(defaultprefix)s \ + datadir=%(prefix)s/%(data)s \ + infodir=%(prefix)s/%(info)s \ + localstatedir=%(prefix)s/%(localstate)s \ + mandir=%(prefix)s/%(man)s \ + sysconfdir=%(prefix)s/%(conf)s \ + %(parameters)s \ + %(argument)s' % {'prefix': get.installDIR(), + 'defaultprefix': get.defaultprefixDIR(), + 'man': get.manDIR(), + 'info': get.infoDIR(), + 'localstate': get.localstateDIR(), + 'conf': get.confDIR(), + 'data': get.dataDIR(), + 'parameters': parameters, + 'argument':argument} + + if system(args): + raise InstallError(_('Install failed.')) + else: + raise InstallError(_('No Makefile found.')) + + fixInfoDir() + +def rawInstall(parameters = '', argument = 'install'): + '''install source into install directory with given parameters = PREFIX=%s % get.installDIR()''' + if can_access_file('makefile') or can_access_file('Makefile') or can_access_file('GNUmakefile'): + if system('make %s %s' % (parameters, argument)): + raise InstallError(_('Install failed.')) + else: + raise InstallError(_('No Makefile found.')) + + fixInfoDir()