changeset 11:f87f9d511a99

more package list refactoring
author janneke <janneke@gnu.org>
date Fri, 25 Nov 2005 09:29:55 +0100
parents 6d156e22d424
children 30aa2d214b5c
files GNUmakefile specs/cvs.py specs/download.py specs/framework.py specs/gub.py
diffstat 5 files changed, 105 insertions(+), 44 deletions(-) [+]
line wrap: on
line diff
--- a/GNUmakefile	Fri Nov 25 01:50:32 2005 +0100
+++ b/GNUmakefile	Fri Nov 25 09:29:55 2005 +0100
@@ -2,13 +2,13 @@
 default: all
 
 all:
-	python driver.py mac doos
+	python driver.py mac mingw
 
 mac:
 	python driver.py mac
 
-doos:
-	python driver.py doos
+mingw:
+	python driver.py mingw
 
 realclean:
 	rm -rf target/*/build target/*/status
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/specs/cvs.py	Fri Nov 25 09:29:55 2005 +0100
@@ -0,0 +1,3 @@
+
+def gnu ():
+	return ':ext:anoncvs@subversions.gnu.org:/cvsroot/%(name)s'
--- a/specs/download.py	Fri Nov 25 01:50:32 2005 +0100
+++ b/specs/download.py	Fri Nov 25 09:29:55 2005 +0100
@@ -1,21 +1,14 @@
-import string
-import re
-
+def gtk ():
+	return 'ftp://ftp.gtk.org/pub/gtk/v%(gtk_version)s/%(name)s-%(version)s.tar.%(format)s'
 
-def set_download (package, version, format, url_template):
-	d = package.package_dict ()
-	d.update (locals())
-	package.url = url_template % d
-	
-
-def set_gtk_download (package, version, format):
-	set_download (package, version, format, 'ftp://ftp.gtk.org/pub/gtk/v%(gtk_version)s/%(name)s-%(version)s.tar.%(format)s')
-	
-
-def set_gnu_download (package, version, format):
+def gnu ():
 	# base = 'ftp://dl.xs4all.nl/pub/mirror/gnu'
 	base = 'ftp://sunsite.dk/pub/gnu'
-	
-	set_download (package, version, format, base + '/%(name)s/%(name)s-%(version)s.tar.%(format)s')
+	return base + '/%(name)s/%(name)s-%(version)s.tar.%(format)s'
 
+def freetype ():
+	return 'ftp://sunsite.cnlab-switch.ch/mirror/freetype/freetype2/%(name)s-%(version)s.tar.%(format)s'
 
+def fontconfig ():
+	return 'http://www.fontconfig.org/release/%(name)s-%(version)s.tar.%(format)s'
+
--- a/specs/framework.py	Fri Nov 25 01:50:32 2005 +0100
+++ b/specs/framework.py	Fri Nov 25 09:29:55 2005 +0100
@@ -1,10 +1,14 @@
-import re
+import cvs
+import download
 import gub
-import download
+import re
 
 class Libtool (gub.Target_package):
 	pass
 
+class LilyPond (gub.Target_package):
+	pass
+
 class Gettext (gub.Target_package):
 	def configure_cache_overrides (self, str):
 		str = re.sub ('ac_cv_func_select=yes','ac_cv_func_select=no', str)
@@ -23,26 +27,58 @@
 glib_cv_stack_grows=${glib_cv_stack_grows=no}
 '''
 
-def get_packages (settings, platform):
-	mingw = ( platform == 'mingw')
-	mac = (platform == 'mac')
+class Freetype (gub.Target_package):
+	def __init__ (self, settings):
+		gub.Package.__init__ (self, settings)
+		self.with (mirror=download.freetype)
 
-	packages = []
-	if mingw:
-		libtool = Libtool (settings)
-		download.set_gnu_download (libtool, '1.5.20', 'gz')
-		packages.append (libtool)
+	def configure (self):
+		self.system ('''
+		rm -f %(srcdir)s/builds/unix/{unix-def.mk,unix-cc.mk,ftconfig.h,freetype-config,freetype2.pc,config.status,config.log}
+''')
+		gub.Package.configure (self)
+
+	def install (self):
+		self.system ('''
+cd %(srcdir)s && CC=cc ./configure --disable-static --enable-shared
+''')
+		gub.Package.install (self)
 		
-	gettext = Gettext (settings)
-	if platform == 'mingw':
-		download.set_gnu_download (gettext, '0.14.5', 'gz')
-	elif platform == 'mac':
-		download.set_gnu_download (gettext, '0.10.40', 'gz')
-	packages.append (gettext)
+
+class Fontconfig (gub.Target_package):
+
+	def configure_command (self):
+		return gub.Target_package.configure_command (self) + '''
+--with-default-fonts=@WINDIR@\fonts\
+--with-add-fonts=@INSTDIR@\usr\share\gs\fonts
+'''
+
+	def configure (self):
+		os.environ['ft_config'] = '''/usr/bin/freetype-config \
+--prefix=%(systemdir)s \
+--exec-prefix=%(systemdir)s \
+'''
 
-	if platform == 'mingw':
-		libiconv = Libiconv (settings)
-		download.set_gnu_download (libiconv, '2.8.4', 'gz')
-		packages.append (libiconv)
+		self.system ('''
+		rm -f %(srcdir)s/builds/unix/{unix-def.mk,unix-cc.mk,ftconfig.h,freetype-config,freetype2.pc,config.status,config.log}
+''')
+		gub.Package.configure (self)
 
-	return packages
+def get_packages (settings, platform):
+	packages = {
+	'mac': (
+		Gettext (settings).with (version='0.10.40'),
+		Glib (settings).with (version='2.8.4', mirror=download.gtk),
+		Freetype (settings).with (version='2.1.9', mirror=download.freetype),
+	),
+	'mingw': (
+		Libtool (settings).with (version='1.5.20'),
+		Gettext (settings).with (version='0.14.5'),
+		Libiconv (settings).with (version='1.9.2'),
+		Glib (settings).with (version='2.8.4', mirror=download.gtk),
+		Freetype (settings).with (version='2.1.9'),
+		LilyPond (settings).with (mirror=cvs.gnu, download=gub.Package.cvs),
+	),
+	}
+
+	return packages[platform]
--- a/specs/gub.py	Fri Nov 25 01:50:32 2005 +0100
+++ b/specs/gub.py	Fri Nov 25 09:29:55 2005 +0100
@@ -1,8 +1,10 @@
+import cross
+import cvs
+import download as dl
 import os
-import sys
 import re
 import subprocess
-import cross
+import sys
 
 def system_one (cmd, ignore_error, env):
 	sys.stderr.write ('invoking %s\n' % cmd)
@@ -32,15 +34,18 @@
 	def __init__ (self, settings):
 		self.settings = settings
 		self.url = ''
+		self.download = self.wget
 		
 	def package_dict (self, env = {}):
 		dict = {
 			'build_spec': self.settings.build_spec,
 			'garbagedir': self.settings.garbagedir,
+			'gtk_version': self.settings.gtk_version,
 			'systemdir': self.settings.systemdir,
 			'target_architecture': self.settings.target_architecture,
 			'target_gcc_flags': self.settings.target_gcc_flags,
-			'name': self.name (),  
+			'name': self.name (),
+			'version': self.version,
 			'url': self.url,
 			'builddir': self.builddir (),
 			'compile_command': self.compile_command (),
@@ -65,14 +70,28 @@
 	def system (self, cmd, env = {}):
 		dict = self.package_dict (env)
 		system (cmd % dict, ignore_error = False, env = dict)
-		
+
 	def download (self):
+		pass
+		      
+	def wget (self):
 		dir = self.settings.downloaddir
 		if not os.path.exists (dir + '/' + self.file_name ()):
 			self.system ('''
 cd %(dir)s && wget %(url)s
 ''', locals ())
 
+	def cvs (self):
+		dir = self.settings.downloaddir
+		if not os.path.exists (dir + '/' + self.file_name ()):
+			self.system ('''
+cvs -d %(url)s co %(name)s
+''', locals ())
+		else:
+			self.system ('''
+cd %(dir)s && cvs update -dCAP -r %(version)s
+''', locals ())
+ 
 	def unpack_destination (self):
 		return self.settings.srcdir
 	
@@ -176,6 +195,16 @@
 		cmd = 'tar %(flags)s %(file)s -C %(unpack_destination)s'
 		self.system (cmd, locals ())
 
+	def set_download (self, mirror=dl.gnu, format='gz', download=wget):
+		d = self.package_dict ()
+		d.update (locals ())
+		self.url = mirror () % d
+		self.download = lambda : download (self)
+
+	def with (self, version='HEAD', mirror=dl.gnu, format='gz', download=wget):
+		self.version = version
+		self.set_download (mirror, format, download)
+		return self
 
 class Cross_package (Package):
 	def configure_command (self):