jhbuild r2019 - in trunk: . doc/C jhbuild/modtypes modulesets



Author: apwingo
Date: Mon Apr 14 14:48:03 2008
New Revision: 2019
URL: http://svn.gnome.org/viewvc/jhbuild?rev=2019&view=rev

Log:
2008-04-14  Andy Wingo  <wingo pobox com>

	* jhbuild/modtypes/autotools.py (AutogenModule.do_configure):
	Construct the autogen command line from an overridable template.
	See #486949.
	(AutogenModule): Add autogen_template initarg and member variable,
	to override the default template.
	(parse_autotools): Parse out an 'autogen-template' attribute.

	* doc/C/jhbuild.xml: Doc autogen-template.

	* modulesets/moduleset.dtd: Add autogen-template attr.



Modified:
   trunk/ChangeLog
   trunk/doc/C/jhbuild.xml
   trunk/jhbuild/modtypes/autotools.py
   trunk/modulesets/moduleset.dtd

Modified: trunk/doc/C/jhbuild.xml
==============================================================================
--- trunk/doc/C/jhbuild.xml	(original)
+++ trunk/doc/C/jhbuild.xml	Mon Apr 14 14:48:03 2008
@@ -1884,6 +1884,7 @@
 	      [ autogen-sh="<replaceable>autogen-sh</replaceable>" ]
 	      [ makefile="<replaceable>makefile</replaceable>" ]
 	      [ skip-autogen="<replaceable>skip-autogen</replaceable>" ]
+	      [ autogen-template="<replaceable>autogen-template</replaceable>" ]
 	      [ supports-non-srcdir-builds="<replaceable>supports-non-srcdir-builds</replaceable>" ]&gt;
 
   &lt;branch [ ... ] &gt;
@@ -1927,6 +1928,19 @@
         attribute is used to mark modules that can't be cleanly built
         using a separate source directory.</para>
 
+        <para>The <sgmltag class="attribute">autogen-template</sgmltag>
+        attribute can be used if you need finer control over the autogen
+        command line. It is a python format string, which will be
+        substituted with the following variables:
+        <varname>srcdir</varname>, <varname>autogen-sh</varname>,
+        <varname>prefix</varname>, <varname>libdir</varname>, and
+        <varname>autogenargs</varname>. For example, here is the default
+        autogen-template:</para>
+
+        <programlisting>
+%(srcdir)s/%(autogen-sh)s --prefix %(prefix)s --libdir %(libdir)s %(autogenargs)s
+</programlisting>
+
       </section>
 
       <section id="moduleset-syntax-defs-cmake">

Modified: trunk/jhbuild/modtypes/autotools.py
==============================================================================
--- trunk/jhbuild/modtypes/autotools.py	(original)
+++ trunk/jhbuild/modtypes/autotools.py	Mon Apr 14 14:48:03 2008
@@ -53,7 +53,8 @@
                  skip_autogen=False,
                  autogen_sh='autogen.sh',
                  makefile='Makefile',
-                 extra_env = None):
+                 extra_env = None,
+                 autogen_template=None):
         Package.__init__(self, name, dependencies, after, suggests, extra_env)
         self.branch = branch
         self.autogenargs = autogenargs
@@ -63,6 +64,7 @@
         self.skip_autogen = skip_autogen
         self.autogen_sh = autogen_sh
         self.makefile = makefile
+        self.autogen_template = autogen_template
 
     def get_srcdir(self, buildscript):
         return self.branch.srcdir
@@ -126,14 +128,27 @@
             os.makedirs(builddir)
         buildscript.set_action('Configuring', self)
 
+        if self.autogen_template:
+            template = self.autogen_template
+        else:
+            template = ("%(srcdir)s/%(autogen-sh)s --prefix %(prefix)s"
+                        " --libdir %(libdir)s %(autogenargs)s ")
+
+        vars = {'prefix': buildscript.config.prefix,
+                'autogen-sh': self.autogen_sh,
+                'autogenargs': self.autogenargs}
+                
         if buildscript.config.buildroot and self.supports_non_srcdir_builds:
-            cmd = self.get_srcdir(buildscript) + '/' + self.autogen_sh
+            vars['srcdir'] = self.get_srcdir(buildscript)
         else:
-            cmd = './' + self.autogen_sh
-        cmd += ' --prefix %s' % buildscript.config.prefix
+            vars['srcdir'] = '.'
+
         if buildscript.config.use_lib64:
-            cmd += " --libdir '${exec_prefix}/lib64'"
-        cmd += ' %s' % self.autogenargs
+            vars['libdir'] = "'${exec_prefix}/lib64'"
+        else:
+            vars['libdir'] = "'${exec_prefix}/lib'"
+
+        cmd = template % vars
 
         if self.autogen_sh == 'autoreconf':
             buildscript.execute(['autoreconf', '-i'], cwd = builddir,
@@ -263,6 +278,7 @@
     autogen_sh = 'autogen.sh'
     skip_autogen = False
     makefile = 'Makefile'
+    autogen_template = None
     if node.hasAttribute('autogenargs'):
         autogenargs = node.getAttribute('autogenargs')
     if node.hasAttribute('makeargs'):
@@ -278,6 +294,8 @@
         autogen_sh = node.getAttribute('autogen-sh')
     if node.hasAttribute('makefile'):
         makefile = node.getAttribute('makefile')
+    if node.hasAttribute('autogen-template'):
+        autogen_template = node.getAttribute('autogen-template')
 
     # Make some substitutions; do special handling of '${prefix}' and '${libdir}'
     p = re.compile('(\${prefix})')
@@ -311,7 +329,8 @@
                          skip_autogen=skip_autogen,
                          autogen_sh=autogen_sh,
                          makefile=makefile,
-                         extra_env=extra_env)
+                         extra_env=extra_env,
+                         autogen_template=autogen_template)
 register_module_type('autotools', parse_autotools)
 
 

Modified: trunk/modulesets/moduleset.dtd
==============================================================================
--- trunk/modulesets/moduleset.dtd	(original)
+++ trunk/modulesets/moduleset.dtd	Mon Apr 14 14:48:03 2008
@@ -34,7 +34,8 @@
 	autogen-sh	CDATA	#IMPLIED
 	makefile	CDATA	#IMPLIED
 	skip-autogen	(true|false) "false"
-	supports-non-srcdir-builds (yes|no) "yes">
+	supports-non-srcdir-builds (yes|no) "yes"
+	autogen-template CDATA  #IMPLIED>
 
 <!ELEMENT waf (branch,dependencies?,suggests?,after?)>
 <!-- Note: Here the ID type is not used as some existing IDs in modsets are not



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