[jhbuild] get configuration values at runtime, not on object build time



commit e928393814ee87ba13bbfa331c3d09d23423a01d
Author: Frederic Peters <fpeters 0d be>
Date:   Sun May 3 14:27:22 2009 +0200

    get configuration values at runtime, not on object build time
    
    Updated module types to use build variables (autogenargs, makeargs,
    extra_env) straight from the config object, instead of statically
    constructing their values when constructing objects from the module
    sets XML.
---
 jhbuild/modtypes/__init__.py  |    8 +++++---
 jhbuild/modtypes/autotools.py |   40 ++++++++++++----------------------------
 jhbuild/modtypes/cmake.py     |    8 +++-----
 jhbuild/modtypes/distutils.py |    8 +++-----
 jhbuild/modtypes/linux.py     |   22 +++++++++++-----------
 jhbuild/modtypes/perl.py      |   14 ++++++--------
 jhbuild/modtypes/tarball.py   |    7 +------
 7 files changed, 41 insertions(+), 66 deletions(-)

diff --git a/jhbuild/modtypes/__init__.py b/jhbuild/modtypes/__init__.py
index 69401ac..664545d 100644
--- a/jhbuild/modtypes/__init__.py
+++ b/jhbuild/modtypes/__init__.py
@@ -127,19 +127,21 @@ class Package:
     type = 'base'
     STATE_START = 'start'
     STATE_DONE  = 'done'
-    def __init__(self, name, dependencies = [], after = [], suggests = [],
-            extra_env = None):
+    def __init__(self, name, dependencies = [], after = [], suggests = []):
         self.name = name
         self.dependencies = dependencies
         self.after = after
         self.suggests = suggests
         self.tags = []
         self.moduleset_name = None
-        self.extra_env = extra_env
 
     def __repr__(self):
         return "<%s '%s'>" % (self.__class__.__name__, self.name)
 
+    def get_extra_env(self):
+        return self.config.module_extra_env.get(self.name)
+    extra_env = property(get_extra_env)
+
     def get_srcdir(self, buildscript):
         raise NotImplementedError
     def get_builddir(self, buildscript):
diff --git a/jhbuild/modtypes/autotools.py b/jhbuild/modtypes/autotools.py
index 4cfee31..1e30101 100644
--- a/jhbuild/modtypes/autotools.py
+++ b/jhbuild/modtypes/autotools.py
@@ -54,10 +54,9 @@ class AutogenModule(Package):
                  skip_autogen=False,
                  autogen_sh='autogen.sh',
                  makefile='Makefile',
-                 extra_env = None,
                  autogen_template=None,
                  check_target=True):
-        Package.__init__(self, name, dependencies, after, suggests, extra_env)
+        Package.__init__(self, name, dependencies, after, suggests)
         self.branch = branch
         self.autogenargs = autogenargs
         self.makeargs    = makeargs
@@ -153,9 +152,12 @@ class AutogenModule(Package):
             template = ("%(srcdir)s/%(autogen-sh)s --prefix %(prefix)s"
                         " --libdir %(libdir)s %(autogenargs)s ")
 
+        autogenargs = self.autogenargs + ' ' + self.config.module_autogenargs.get(
+                self.name, self.config.autogenargs)
+
         vars = {'prefix': buildscript.config.prefix,
                 'autogen-sh': self.autogen_sh,
-                'autogenargs': self.autogenargs}
+                'autogenargs': autogenargs}
                 
         if buildscript.config.buildroot and self.supports_non_srcdir_builds:
             vars['srcdir'] = self.get_srcdir(buildscript)
@@ -188,7 +190,7 @@ class AutogenModule(Package):
         else:
             # place --prefix and --libdir arguments after '-- '
             # (GStreamer weirdness)
-            if self.autogenargs.find('-- ') != -1:
+            if autogenargs.find('-- ') != -1:
                 p = re.compile('(.*)(--prefix %s )((?:--libdir %s )?)(.*)-- ' %
                        (buildscript.config.prefix, "'\${exec_prefix}/lib64'"))
                 cmd = p.sub(r'\1\4-- \2\3', cmd)
@@ -211,7 +213,9 @@ class AutogenModule(Package):
 
     def do_clean(self, buildscript):
         buildscript.set_action(_('Cleaning'), self)
-        cmd = '%s %s clean' % (os.environ.get('MAKE', 'make'), self.makeargs)
+        makeargs = self.makeargs + ' ' + self.config.module_makeargs(
+                self.name, self.config.makeargs)
+        cmd = '%s %s clean' % (os.environ.get('MAKE', 'make'), makeargs)
         buildscript.execute(cmd, cwd = self.get_builddir(buildscript),
                 extra_env = self.extra_env)
     do_clean.next_state = STATE_BUILD
@@ -366,10 +370,6 @@ def parse_autotools(node, config, uri, repositories, default_repo):
     makeargs        = p.sub(config.prefix + libsubdir, makeargs)
     makeinstallargs = p.sub(config.prefix + libsubdir, makeinstallargs)
 
-    autogenargs += ' ' + config.module_autogenargs.get(id, config.autogenargs)
-    makeargs += ' ' + config.module_makeargs.get(id, config.makeargs)
-    extra_env = config.module_extra_env.get(id)
-
     dependencies, after, suggests = get_dependencies(node)
     branch = get_branch(node, repositories, default_repo, config)
     if config.module_checkout_mode.get(id):
@@ -384,7 +384,6 @@ def parse_autotools(node, config, uri, repositories, default_repo):
                          skip_autogen=skip_autogen,
                          autogen_sh=autogen_sh,
                          makefile=makefile,
-                         extra_env=extra_env,
                          autogen_template=autogen_template,
                          check_target=check_target)
 register_module_type('autotools', parse_autotools)
@@ -416,10 +415,6 @@ def parse_cvsmodule(node, config, uri, repositories, default_repo):
     if not id:
         id = checkoutdir or module
 
-    autogenargs += ' ' + config.module_autogenargs.get(id, config.autogenargs)
-    makeargs += ' ' + config.module_makeargs.get(id, config.makeargs)
-    extra_env = config.module_extra_env.get(id)
-
     dependencies, after, suggests = get_dependencies(node)
 
     for attrname in ['cvsroot', 'root']:
@@ -440,8 +435,7 @@ def parse_cvsmodule(node, config, uri, repositories, default_repo):
     return AutogenModule(id, branch, autogenargs, makeargs,
                          dependencies=dependencies,
                          after=after, suggests=suggests,
-                         supports_non_srcdir_builds=supports_non_srcdir_builds,
-                         extra_env=extra_env)
+                         supports_non_srcdir_builds=supports_non_srcdir_builds)
 register_module_type('cvsmodule', parse_cvsmodule)
 
 def parse_svnmodule(node, config, uri, repositories, default_repo):
@@ -466,10 +460,6 @@ def parse_svnmodule(node, config, uri, repositories, default_repo):
     if not id:
         id = checkoutdir or os.path.basename(module)
 
-    autogenargs += ' ' + config.module_autogenargs.get(id, config.autogenargs)
-    makeargs += ' ' + config.module_makeargs.get(id, config.makeargs)
-    extra_env = config.module_extra_env.get(id)
-
     dependencies, after, suggests = get_dependencies(node)
 
     if node.hasAttribute('root'):
@@ -481,8 +471,7 @@ def parse_svnmodule(node, config, uri, repositories, default_repo):
     return AutogenModule(id, branch, autogenargs, makeargs,
                          dependencies=dependencies,
                          after=after, suggests=suggests,
-                         supports_non_srcdir_builds=supports_non_srcdir_builds,
-                         extra_env=extra_env)
+                         supports_non_srcdir_builds=supports_non_srcdir_builds)
 register_module_type('svnmodule', parse_svnmodule)
 
 def parse_archmodule(node, config, uri, repositories, default_repo):
@@ -507,10 +496,6 @@ def parse_archmodule(node, config, uri, repositories, default_repo):
     if not id:
         id = checkoutdir or version
 
-    autogenargs += ' ' + config.module_autogenargs.get(id, config.autogenargs)
-    makeargs += ' ' + config.module_makeargs.get(id, makeargs)
-    extra_env = config.module_extra_env.get(id)
-
     dependencies, after, suggests = get_dependencies(node)
 
     if node.hasAttribute('root'):
@@ -522,6 +507,5 @@ def parse_archmodule(node, config, uri, repositories, default_repo):
     return AutogenModule(id, branch, autogenargs, makeargs,
                          dependencies=dependencies,
                          after=after, suggests=suggests,
-                         supports_non_srcdir_builds=supports_non_srcdir_builds,
-                         extra_env=extra_env)
+                         supports_non_srcdir_builds=supports_non_srcdir_builds)
 register_module_type('archmodule', parse_archmodule)
diff --git a/jhbuild/modtypes/cmake.py b/jhbuild/modtypes/cmake.py
index bcd7d69..d542462 100644
--- a/jhbuild/modtypes/cmake.py
+++ b/jhbuild/modtypes/cmake.py
@@ -38,9 +38,8 @@ class CMakeModule(Package):
     STATE_DIST = 'dist'
     STATE_INSTALL = 'install'
 
-    def __init__(self, name, branch, dependencies=[], after=[], suggests=[],
-                extra_env=None):
-        Package.__init__(self, name, dependencies, after, suggests, extra_env)
+    def __init__(self, name, branch, dependencies=[], after=[], suggests=[]):
+        Package.__init__(self, name, dependencies, after, suggests)
         self.branch = branch
 
     def get_srcdir(self, buildscript):
@@ -133,14 +132,13 @@ class CMakeModule(Package):
 def parse_cmake(node, config, uri, repositories, default_repo):
     id = node.getAttribute('id')
     dependencies, after, suggests = get_dependencies(node)
-    extra_env = config.module_extra_env.get(id)
     branch = get_branch(node, repositories, default_repo, config)
 
     if config.module_checkout_mode.get(id):
         branch.checkout_mode = config.module_checkout_mode[id]
 
     return CMakeModule(id, branch, dependencies = dependencies, after = after,
-            suggests = suggests, extra_env = extra_env)
+            suggests = suggests)
 
 register_module_type('cmake', parse_cmake)
 
diff --git a/jhbuild/modtypes/distutils.py b/jhbuild/modtypes/distutils.py
index 909bb5f..a853ff6 100644
--- a/jhbuild/modtypes/distutils.py
+++ b/jhbuild/modtypes/distutils.py
@@ -39,8 +39,8 @@ class DistutilsModule(Package):
 
     def __init__(self, name, branch,
                  dependencies = [], after = [], suggests = [],
-                 supports_non_srcdir_builds = True, extra_env = None):
-        Package.__init__(self, name, dependencies, after, suggests, extra_env)
+                 supports_non_srcdir_builds = True):
+        Package.__init__(self, name, dependencies, after, suggests)
         self.branch = branch
         self.supports_non_srcdir_builds = supports_non_srcdir_builds
 
@@ -123,7 +123,6 @@ def parse_distutils(node, config, uri, repositories, default_repo):
         supports_non_srcdir_builds = \
             (node.getAttribute('supports-non-srcdir-builds') != 'no')
     dependencies, after, suggests = get_dependencies(node)
-    extra_env = config.module_extra_env.get(id)
     branch = get_branch(node, repositories, default_repo, config)
     if config.module_checkout_mode.get(id):
         branch.checkout_mode = config.module_checkout_mode[id]
@@ -131,7 +130,6 @@ def parse_distutils(node, config, uri, repositories, default_repo):
     return DistutilsModule(id, branch,
             dependencies = dependencies, after = after,
             suggests = suggests,
-            supports_non_srcdir_builds = supports_non_srcdir_builds,
-            extra_env = extra_env)
+            supports_non_srcdir_builds = supports_non_srcdir_builds)
 register_module_type('distutils', parse_distutils)
 
diff --git a/jhbuild/modtypes/linux.py b/jhbuild/modtypes/linux.py
index d6e111d..1f21891 100644
--- a/jhbuild/modtypes/linux.py
+++ b/jhbuild/modtypes/linux.py
@@ -62,8 +62,8 @@ class LinuxModule(Package):
     STATE_HEADERS_INSTALL = 'headers_install'
 
     def __init__(self, name, branch, kconfigs, makeargs,
-            dependencies, after, suggests, extra_env = None):
-        Package.__init__(self, name, dependencies, after, suggests, extra_env)
+            dependencies, after, suggests):
+        Package.__init__(self, name, dependencies, after, suggests)
         self.branch = branch
         self.kconfigs = kconfigs
         self.makeargs = makeargs
@@ -108,12 +108,15 @@ class LinuxModule(Package):
     def skip_mrproper(self, buildscript, last_state):
         return buildscript.config.nobuild
 
+    def get_makeargs(self):
+        return self.makeargs + ' ' + self.config.module_makeargs.get(self.name, self.config.makeargs)
+
     def do_mrproper(self, buildscript):
         buildscript.set_action(_('make mrproper'), self)
         for kconfig in self.kconfigs:
             cmd = '%s %s mrproper EXTRAVERSION=%s O=%s' % (
                     os.environ.get('MAKE', 'make'),
-                    self.makeargs,
+                    self.get_makeargs(),
                     kconfig.version,
                     'build-' + kconfig.version)
             buildscript.execute(cmd, cwd = self.branch.srcdir,
@@ -170,7 +173,7 @@ class LinuxModule(Package):
         for kconfig in self.kconfigs:
             cmd = '%s %s clean EXTRAVERSION=%s O=%s' % (
                     os.environ.get('MAKE', 'make'),
-                    self.makeargs,
+                    self.get_makeargs(),
                     kconfig.version,
                     'build-' + kconfig.version)
             buildscript.execute(cmd, cwd = self.branch.srcdir,
@@ -186,7 +189,7 @@ class LinuxModule(Package):
         buildscript.set_action(_('Building'), self)
         for kconfig in self.kconfigs:
             cmd = '%s %s EXTRAVERSION=%s O=%s' % (os.environ.get('MAKE', 'make'),
-                                                  self.makeargs,
+                                                  self.get_makeargs(),
                                                   kconfig.version,
                                                   'build-' + kconfig.version)
             buildscript.execute(cmd, cwd = self.branch.srcdir,
@@ -224,7 +227,7 @@ class LinuxModule(Package):
         for kconfig in self.kconfigs:
             cmd = '%s %s modules_install EXTRAVERSION=%s O=%s INSTALL_MOD_PATH=%s' % (
                     os.environ.get('MAKE', 'make'),
-                    self.makeargs,
+                    self.get_makeargs(,
                     kconfig.version,
                     'build-' + kconfig.version,
                     buildscript.config.prefix)
@@ -242,7 +245,7 @@ class LinuxModule(Package):
         for kconfig in self.kconfigs:
             cmd = '%s %s headers_install EXTRAVERSION=%s O=%s INSTALL_HDR_PATH=%s' % (
                     os.environ.get('MAKE', 'make'),
-                    self.makeargs,
+                    self.get_makeargs(),
                     kconfig.version,
                     'build-' + kconfig.version,
                     buildscript.config.prefix)
@@ -306,17 +309,14 @@ def parse_linux(node, config, uri, repositories, default_repo):
     # Make some substitutions; do special handling of '${prefix}' and '${libdir}'
     p = re.compile('(\${prefix})')
     makeargs = p.sub(config.prefix, makeargs)
-    makeargs += ' ' + config.module_makeargs.get(id, config.makeargs)
 
     dependencies, after, suggests = get_dependencies(node)
-    extra_env = config.module_extra_env.get(id)
     branch = get_branch(node, repositories, default_repo, config)
     if config.module_checkout_mode.get(id):
         branch.checkout_mode = config.module_checkout_mode[id]
     kconfigs = get_kconfigs(node, repositories, default_repo)
 
     return LinuxModule(id, branch, kconfigs,
-                       makeargs, dependencies, after, suggests,
-                       extra_env = extra_env)
+                       makeargs, dependencies, after, suggests)
 
 register_module_type('linux', parse_linux)
diff --git a/jhbuild/modtypes/perl.py b/jhbuild/modtypes/perl.py
index ab181b8..8e7ee3d 100644
--- a/jhbuild/modtypes/perl.py
+++ b/jhbuild/modtypes/perl.py
@@ -39,8 +39,8 @@ class PerlModule(Package):
     STATE_INSTALL = 'install'
 
     def __init__(self, name, branch, makeargs='',
-                 dependencies=[], after=[], suggests=[], extra_env = None):
-        Package.__init__(self, name, dependencies, after, suggests, extra_env)
+                 dependencies=[], after=[], suggests=[]):
+        Package.__init__(self, name, dependencies, after, suggests)
         self.branch = branch
         self.makeargs = makeargs
 
@@ -81,7 +81,9 @@ class PerlModule(Package):
         builddir = self.get_builddir(buildscript)
         perl = os.environ.get('PERL', 'perl')
         make = os.environ.get('MAKE', 'make')
-        cmd = '%s Makefile.PL INSTALLDIRS=vendor PREFIX=%s %s' % (perl, buildscript.config.prefix, self.makeargs)
+        makeargs = self.makeargs + ' ' + self.config.module_makeargs.get(
+                self.name, self.config.makeargs)
+        cmd = '%s Makefile.PL INSTALLDIRS=vendor PREFIX=%s %s' % (perl, buildscript.config.prefix, makeargs)
         buildscript.execute(cmd, cwd=builddir, extra_env = self.extra_env)
         buildscript.execute([make, 'LD_RUN_PATH='], cwd=builddir,
                 extra_env = self.extra_env)
@@ -113,21 +115,17 @@ def parse_perl(node, config, uri, repositories, default_repo):
     if node.hasAttribute('makeargs'):
         makeargs = node.getAttribute('makeargs')
 
-    # override revision tag if requested.
-    makeargs += ' ' + config.module_makeargs.get(id, config.makeargs)
-
     # Make some substitutions; do special handling of '${prefix}'
     p = re.compile('(\${prefix})')
     makeargs = p.sub(config.prefix, makeargs)
     
     dependencies, after, suggests = get_dependencies(node)
-    extra_env = config.module_extra_env.get(id)
     branch = get_branch(node, repositories, default_repo, config)
     if config.module_checkout_mode.get(id):
         branch.checkout_mode = config.module_checkout_mode[id]
 
     return PerlModule(id, branch, makeargs,
             dependencies=dependencies, after=after,
-            suggests=suggests, extra_env = extra_env)
+            suggests=suggests)
 register_module_type('perl', parse_perl)
 
diff --git a/jhbuild/modtypes/tarball.py b/jhbuild/modtypes/tarball.py
index bd0e96b..ca97b07 100644
--- a/jhbuild/modtypes/tarball.py
+++ b/jhbuild/modtypes/tarball.py
@@ -75,15 +75,10 @@ def parse_tarball(node, config, uri, repositories, default_repo):
                     patchstrip = 0
                 patches.append((patchfile, patchstrip))
 
-    autogenargs += ' ' + config.module_autogenargs.get(name,
-                                                       config.autogenargs)
-    makeargs += ' ' + config.module_makeargs.get(name, config.makeargs)
-
     # for tarballs, don't ever pass --enable-maintainer-mode
     autogenargs = autogenargs.replace('--enable-maintainer-mode', '')
 
     dependencies, after, suggests = get_dependencies(node)
-    extra_env = config.module_extra_env.get(id)
 
     from autotools import AutogenModule
     from jhbuild.versioncontrol.tarball import TarballBranch, TarballRepository
@@ -101,6 +96,6 @@ def parse_tarball(node, config, uri, repositories, default_repo):
             dependencies, after, suggests,
             supports_non_srcdir_builds = supports_non_srcdir_builds,
             skip_autogen = False, autogen_sh = 'configure',
-            makefile = makefile, extra_env = extra_env)
+            makefile = makefile)
 
 register_module_type('tarball', parse_tarball)



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]