changeset 7:521a45e10746

fully dictify
author janneke <janneke@gnu.org>
date Thu, 24 Nov 2005 21:10:55 +0100
parents 052d2a4885bd
children a5b9fb51981d
files driver.py specs/framework.py specs/gub.py
diffstat 3 files changed, 90 insertions(+), 59 deletions(-) [+]
line wrap: on
line diff
--- a/driver.py	Thu Nov 24 16:43:05 2005 +0100
+++ b/driver.py	Thu Nov 24 21:10:55 2005 +0100
@@ -40,7 +40,7 @@
 	package.download ()
 
 	for stage in ['unpack', 'patch', 'configure', 'compile', 'install']:
-        	if not package.done (stage):
+        	if not package.is_done (stage):
                 	if stage == 'unpack':
                         	package.unpack()
 			elif stage == 'configure':
@@ -53,8 +53,9 @@
                         	package.install ()
 			package.set_done (stage)
 
-def process_packages (ps):
-	map (process_package, ps)
+def process_packages (packages):
+	for i in packages:
+		process_package (i)
 		
 def main ():
 	mac = sys.argv[1] == 'mac'
--- a/specs/framework.py	Thu Nov 24 16:43:05 2005 +0100
+++ b/specs/framework.py	Thu Nov 24 21:10:55 2005 +0100
@@ -5,8 +5,8 @@
 class  Libtool (gub.Target_package):
 	def __init__ (self, settings):
 		gub.Package.__init__ (self, settings)
+		self.url = 'ftp://dl.xs4all.nl/pub/mirror/gnu/libtool/libtool-1.5.10.tar.gz'
 		self.url = 'ftp://dl.xs4all.nl/pub/mirror/gnu/libtool/libtool-1.5.20.tar.gz'
-		#self.url = 'ftp://dl.xs4all.nl/pub/mirror/gnu/libtool/libtool-1.5.10.tar.gz'
 
  	def installdir (self):
  		return self.settings.systemdir
@@ -22,9 +22,8 @@
 		return str
 	
 	def configure_command (self):
-		cmd = gub.Target_package.configure_command (self)
-		cmd += ' --disable-csharp '
-		return cmd
+		return gub.Target_package.configure_command (self) \
+		       + ' --disable-csharp'
 	
 def get_packages (settings):
 	return [
--- a/specs/gub.py	Thu Nov 24 16:43:05 2005 +0100
+++ b/specs/gub.py	Thu Nov 24 21:10:55 2005 +0100
@@ -33,19 +33,47 @@
 		self.settings = settings
 	
 	def system (self, cmd, env={}):
-		system (cmd, ignore_error=False, env=env)
+		dict = {
+			'build_spec': self.settings.build_spec,
+			'garbagedir': self.settings.garbagedir,
+			'systemdir': self.settings.systemdir,
+			'target_architecture': self.settings.target_architecture,
+			'target_gcc_flags': self.settings.target_gcc_flags,
+
+			'url': self.url,
+
+			'builddir': self.builddir (),
+			'compile_command': self.compile_command (),
+			'configure_command': self.configure_command (),
+			'install_command': self.install_command (),
+			'installdir': self.installdir (),
+			'srcdir': self.srcdir (),
+			'unpack_destination': self.unpack_destination (),
+			}
+		dict.update (env)
+
+		for (k, v) in dict.items ():
+			if type (v) == type (''):
+				v = v % dict
+				dict[k] = v
+			else:
+				del dict[k]
+
+		system (cmd % dict, ignore_error=False, env=dict)
 		
 	def download (self):
 		dir = self.settings.downloaddir
-		if not os.path.exists (dir + '/' + self.file_name ()): 
-			self.system ('cd %s ; wget %s ' % (dir, self.url))
+		if not os.path.exists (dir + '/' + self.file_name ()):
+			self.system ('''
+cd %(dir)s && wget %(url)s
+''', locals ())
 
 	def unpack_destination (self):
 		return self.settings.srcdir
 	
 	def basename (self):
 		f = self.file_name ()
-		f = re.sub ("\.tar.*", '', f)
+		f = re.sub ('\.tar.*', '', f)
 		return f
 
 	def name (self):
@@ -63,21 +91,22 @@
 		return self.settings.installdir + '/' + self.name ()
 
 	def file_name (self):
-		file = re.sub (".*/([^/]+)", '\\1', self.url)
+		file = re.sub ('.*/([^/]+)', '\\1', self.url)
 		return file
 
-
 	def done (self, stage):
-		return os.path.exists ('%s/%s-%s' % (self.settings.statusdir, self.name (), stage))
+		return '%s/%s-%s' % (self.settings.statusdir, self.name (), stage)
+	def is_done (self, stage):
+		return os.path.exists (self.done (stage))
 
 	def set_done (self, stage):
-		open ('%s/%s-%s' % (self.settings.statusdir, self.name(), stage), 'w').write ('')
+		open (self.done (stage), 'w').write ('')
 
 	def autoupdate (self):
 		if os.path.isdir (os.path.join (self.srcdir (), 'ltdl')):
 			self.system ('''
 rm -rf %(srcdir)s/libltdl
-cd %(srcdir) && libtoolize --force --copy --automake --ltdl
+cd %(srcdir)s && libtoolize --force --copy --automake --ltdl
 ''')
 		else:
 			self.system ('''
@@ -100,25 +129,27 @@
 ''')
 
 	def configure_command (self):
-		return ("%s/configure --prefix=%s "
-			% (self.srcdir (), self.installdir ()))
+		return '''%(srcdir)s/configure
+--prefix=%(installdir)s
+'''
 
 	def configure (self):
-		self.system ("mkdir -p %s;  cd %s && %s" % (self.builddir(),
-						       self.builddir(),
-						       self.configure_command ()))
+		self.system ('''
+mkdir -p %(builddir)s
+cd %(builddir)s && %(configure_command)s
+''')
 
 	def install_command (self):
 		return 'make install'
 	
 	def install (self):
-		self.system ("cd %s && %s" % (self.builddir (), self.install_command ())) 
+		self.system ('cd %(builddir)s && %(install_command)s')
 
 	def compile_command (self):
 		return 'make'
 
 	def compile (self):
-		self.system ("cd %s && %s" % (self.builddir(), self.compile_command ()))
+		self.system ('cd %(builddir)s && %(compile_command)s')
 
 	def patch (self):
 		pass
@@ -126,44 +157,54 @@
 	def unpack (self):
 		file = self.settings.downloaddir + '/' + self.file_name ()
 
-		cmd = ""
-		if re.search (".tar$", file):
-			cmd = "-xf "
-		elif re.search (".tar.bz2", file):
-			cmd = "-jxf "
+		flags = ''
+		if re.search ('.tar$', file):
+			flags = '-xf '
+		elif re.search ('.tar.bz2', file):
+			flags = '-jxf '
 		elif re.search ('.tar.gz', file):
-			cmd = '-xzf '
+			flags = '-xzf '
 
-		cmd = "tar %s %s -C %s " % (cmd, file, self.unpack_destination ())
-		self.system (cmd) 
+		cmd = 'tar %(flags)s %(file)s -C %(unpack_destination)s'
+		self.system (cmd, locals ())
 
 
 class Cross_package (Package):
 	def configure_command (self):
-		cmd = Package.configure_command (self)
-		cmd += ' --target=%s --with-sysroot=%s ' % (self.settings.target_architecture, self.settings.systemdir)
+		return Package.configure_command (self) + ''' \
+--target=%(target_architecture)s \
+--with-sysroot=%(systemdir)s \
+'''
 		return cmd
 	
 class Target_package (Package):
 	def configure_command (self):
 		# --config-cache
-		flags = ' --enable-shared --disable-static --build=%(build_spec)s --host=%(target_architecture)s --target=%(target_architecture)s --prefix=/usr --sysconfdir=/etc --includedir=%(garbagedir)s '
-		flags = flags % self.settings.__dict__
+		return '''%(srcdir)s/configure \
+--enable-shared \
+--disable-static \
+--build=%(build_spec)s \
+--host=%(target_architecture)s \
+--target=%(target_architecture)s \
+--prefix=/usr \
+--sysconfdir=/etc \
+--includedir=%(garbagedir)s \
+'''
 
-		return '%s/configure %s' % (self.srcdir(), flags)
-
-	def configure_cache_overrides (self,str):
+	def configure_cache_overrides (self, str):
 		return str
 
 	def installdir (self):
 		# the usr/ works around a fascist check in libtool
-		return self.settings.installdir + "/" + self.name () + "-root/usr"
+		##return self.settings.installdir + "/" + self.name () + "-root/usr"
+		# no packages for now
+		return self.settings.systemdir + '/usr'
 
 	def install_command (self):
-		return 'make prefix=%s install' % self.installdir ()
+		return 'make prefix=%(installdir)s install'
 		
 	def configure (self):
-		self.system ("mkdir -p %s" % self.builddir ())
+		self.system ('mkdir -p %(builddir)s')
 		cache_fn = self.builddir () +'/config.cache'
 		cache = open (cache_fn, 'w')
 		str = cross.cross_config_cache + cross.cygwin
@@ -174,28 +215,18 @@
 		os.chmod (cache_fn, 0755)
 		Package.configure (self)
 
-	def system (self, cmd):
+	def system (self, cmd, env={}):
 		dict = {
-			'CXX':'%(target_architecture)s-g++ %(target_gcc_flags)s',
+			'AR': '%(target_architecture)s-ar',
 			'CC':'%(target_architecture)s-gcc %(target_gcc_flags)s',
-			'RANLIB': '%(target_architecture)s-ranlib',
-			'DLLWRAP' : '%(target_architecture)s-dllwrap',
+			'CXX':'%(target_architecture)s-g++ %(target_gcc_flags)s',
 			'DLLTOOL' : '%(target_architecture)s-dlltool',
+			'DLLWRAP' : '%(target_architecture)s-dllwrap',
 			'LD': '%(target_architecture)s-ld',
-			'AR': '%(target_architecture)s-ar',
 			'NM': '%(target_architecture)s-nm',
-			
-			'srcdir': self.srcdir (),
-			'builddir': self.builddir (),
-			
+			'RANLIB': '%(target_architecture)s-ranlib',
 			}
-		
-		for (k, v) in dict.items ():
-			v = v % self.settings.__dict__
-			dict[k] = v
-			
+
+		dict.update (env)
+
 		return Package.system (self, cmd, env=dict)
-		
-
-		
-