changeset 60:7ca803616783

Download mingw-runtime from sf. Move mingw stuff to mingw.py
author janneke <janneke@gnu.org>
date Sun, 27 Nov 2005 19:53:36 +0100
parents 0c43f7ba55b8
children 8fd7bac6f44b
files GNUmakefile driver.py specs/framework.py specs/gub.py specs/mingw.py
diffstat 5 files changed, 151 insertions(+), 71 deletions(-) [+]
line wrap: on
line diff
--- a/GNUmakefile	Sun Nov 27 10:51:53 2005 +0100
+++ b/GNUmakefile	Sun Nov 27 19:53:36 2005 +0100
@@ -1,6 +1,3 @@
-
-MINGW_RUNTIME_DIR = /usr
-export MINGW_RUNTIME_DIR
 
 default: all
 
--- a/driver.py	Sun Nov 27 10:51:53 2005 +0100
+++ b/driver.py	Sun Nov 27 19:53:36 2005 +0100
@@ -24,7 +24,6 @@
 
 		self.target_architecture = arch
 		self.targetdir = self.topdir + '/target/%s' % self.target_architecture
-		self.runtimedir = None
 		self.builddir = self.targetdir + '/build'
 		self.garbagedir = self.targetdir + '/garbage'
 		self.statusdir = self.targetdir + '/status'
@@ -89,7 +88,7 @@
 def main ():
 	(options, files) = getopt.getopt (sys.argv[1:], 'V', ['verbose'])
 	verbose = 0 
-	for (o,a) in options:
+	for (o, a) in options:
 		if o == '--verbose' or o == '-V':
 			verbose = 1
 
@@ -108,11 +107,9 @@
 	elif platform == 'mingw':
 		settings = Settings ('i586-mingw32msvc')
 		settings.target_gcc_flags = '-mwindows -mms-bitfields'
-		settings.runtimedir = '/usr/i586-mingw32msvc'
 	elif platform == 'mingw-fedora':
 		settings = Settings ('i386-mingw32')
 		settings.target_gcc_flags = '-mwindows -mms-bitfields'
-		settings.runtimedir = '/usr/local/i386-mingw32'
 		platform = 'mingw'
 
 	gub.start_log ()
@@ -127,10 +124,12 @@
 	if platform == 'mac':
 		import darwintools
 		process_packages (darwintools.get_packages (settings))
+	if platform.startswith ('mingw'):
+		import mingw
+		process_packages (mingw.get_packages (settings))
 
 	process_packages (framework.get_packages (settings, platform))
 
 
-
 if __name__ == '__main__':
     	main ()
--- a/specs/framework.py	Sun Nov 27 10:51:53 2005 +0100
+++ b/specs/framework.py	Sun Nov 27 19:53:36 2005 +0100
@@ -1,33 +1,28 @@
 import cvs
 import download
-import glob
 import gub
 import os
 import re
 
-class Mingw (gub.Target_package):
-	def untar (self):
-		self.system ('mkdir -p %(srcdir)s/')
-		self.dump ('%(srcdir)s/configure', '''
-cat > Makefile <<EOF
-default:
-	@echo done
-all: default
-install:
-	mkdir -p %(installdir)s
-	tar -C %(MINGW_RUNTIME_DIR)s/%(target_architecture)s -cf- . | tar -C %(installdir)s -xvf-
-	mkdir -p %(installdir)s/bin
-	-cp /cygwin/usr/bin/cygcheck.exe %(installdir)s/bin
-EOF
+class Libtool (gub.Target_package):
+	pass
+
+class Gs (gub.Target_package):
+	pass
+
+class Python (gub.Target_package):
+	def xxpatch (self):
+		if self.settings.platform.startswith ('mingw'):
+			self.system ('''
+cd %(srcdir)s && patch -p1 < $HOME/installers/windows/patch/python-2.4.2-1.patch
 ''')
-		self.system ('chmod +x %(srcdir)s/configure')
 
-class Libtool (gub.Target_package):
+class LilyPad (gub.Target_package):
 	pass
 
 class Gmp (gub.Target_package):
 	def xxconfigure (self):
-		self.system ('''cd %(srcdir)s && libtoolize --force''')
+		self.system ('''cd %(srcdir)s && libtoolize --force --copy''')
 		self.system ('''cd %(srcdir)s && ./missing --run aclocal''')
 		self.system ('''cd %(srcdir)s && ./missing --run autoconf''')
 		self.system ('''cd %(srcdir)s && ./missing --run automake''')
@@ -37,12 +32,11 @@
 		self.file_sub ("-Wl,-e,'\$dll_entry'", '',
 			       '%(srcdir)s/configure')
 
-		self.system ('''chmod +x %(srcdir)s/configure''')
-
+		os.chmod ('%(srcdir)s/configure' % self.package_dict (), 0755)
 		gub.Target_package.configure (self)
 		
 	def xpatch (self):
-		if self.settings.platform == 'mingw':
+		if self.settings.platform.startswith ('mingw'):
 	                ## FIXME, seems we don't need this?
 			self.system ('''
 cd %(srcdir)s && patch -p1 < $HOME/installers/windows/patch/gmp-4.1.4-1.patch
@@ -56,31 +50,25 @@
 mv %(installdir)s/lib/lib*.dll %(installdir)s/bin/
 cp %(builddir)s/.libs/libgmp.dll.a %(installdir)s/lib/
 ''')
-		base = 'gmp'
-		self.file_sub ('library_names=.*',
-			       "library_names='lib%(base)s.dll.a'",
-			       '%(installdir)s/lib/lib%(base)s.la',
-			       locals ())
-
-class Regex (gub.Target_package):
-	pass
 
 class Guile (gub.Target_package):
 	def xpatch (self):
-		if self.settings.platform == 'mingw':
+		if self.settings.platform.startswith ('mingw'):
 	                ## FIXME
 			self.system ('''
 cd %(srcdir)s && patch -p1 < $HOME/installers/windows/patch/guile-1.7.2-3.patch
 ''')
 
 	def configure_command (self):
-		self.settings.target_gcc_flags = '-mms-bitfields'
-		self.settings.target_gxx_flags = '-mms-bitfields'
-		cmd = gub.join_lines ('''\
+		cmd = ''
+		if self.settings.platform.startswith ('mingw'):
+			self.settings.target_gcc_flags = '-mms-bitfields'
+			self.settings.target_gxx_flags = '-mms-bitfields'
+			cmd = gub.join_lines ('''\
 PATH_SEPARATOR=";"
 AS=%(target_architecture)s-as
-''') \
-		      + gub.Target_package.configure_command (self) \
+''')
+		cmd += gub.Target_package.configure_command (self) \
 		      + gub.join_lines (''' 
 --without-threads
 --with-gnu-ld
@@ -92,24 +80,41 @@
 ''')
 		return cmd
 
-	def configure (self):
-		gub.Target_package.config_cache (self)
-		self.dump ('%(builddir)s/config.cache', '''
+	def config_cache_overrides (self, str):
+		if self.settings.platform.startswith ('mingw'):
+			str += '''
 guile_cv_func_usleep_declared=${guile_cv_func_usleep_declared=yes}
 guile_cv_exeext=${guile_cv_exeext=}
 libltdl_cv_sys_search_path=${libltdl_cv_sys_search_path="%(systemdir)s/usr/lib"}
-''', mode='a')
+'''
+		return str
+
+	def configure (self):
 		gub.Package.configure (self)
-
-		self.file_sub ('^\(allow_undefined_flag=.*\)unsupported',
+		if self.settings.platform.startswith ('mingw'):
+			self.file_sub ('^\(allow_undefined_flag=.*\)unsupported',
 			       '\\1',
 			       '%(builddir)s/libtool')
-		self.file_sub ('^\(allow_undefined_flag=.*\)unsupported',
+			self.file_sub ('^\(allow_undefined_flag=.*\)unsupported',
 			       '\\1',
 			       '%(builddir)s/guile-readline/libtool')
-		self.system ('''cp $HOME/installers/windows/bin/%(target_architecture)s-libtool %(builddir)s/libtool''')
-		self.system ('''cp $HOME/installers/windows/bin/%(target_architecture)s-libtool %(builddir)s/guile-readline/libtool''')
+			self.system ('''cp $HOME/installers/windows/bin/%(target_architecture)s-libtool %(builddir)s/libtool''')
+			self.system ('''cp $HOME/installers/windows/bin/%(target_architecture)s-libtool %(builddir)s/guile-readline/libtool''')
 
+	def install (self):
+		gub.Target_package.install (self)
+		version = self.read_pipe ('''\
+GUILE_LOAD_PATH=%(installdir)s/share/guile/* %(installdir)s/bin/guile-config --version 2>&1\
+''').split ()[-1]
+		self.dump ('%(installdir)s/bin/%(target_architecture)s-guile-config', '''\
+#!/bin/sh
+[ "$1" == "--version" ] && echo "%(target_architecture)s-guile-config - Guile version $GUILE"
+[ "$1" == "compile" ] && echo "-I%(systemdir)s/usr/include"
+[ "$1" == "link" ] && echo "-L%(systemdir)s/usr/lib -lguile -lgmp"
+exit 0
+''')
+		os.chmod ('%(installdir)s/bin/%(target_architecture)s-guile-config', 0755)
+	
 
 class LilyPond (gub.Target_package):
 	def configure (self):
@@ -117,11 +122,13 @@
 		gub.Target_package.configure (self)
 
 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)
-		# this for mingw-3.7 only, but mingw-3.8 does not link
-		# guile.exe
-		str += '''
+	def config_cache_overrides (self, str):
+		if self.settings.platform == 'mingw':
+			str = re.sub ('ac_cv_func_select=yes','ac_cv_func_select=no', str)
+		if 0:
+			# this for mingw-3.7 only, but mingw-3.8 does not link
+			# guile.exe
+			str += '''
 # gettext does not include winsock2.h -- do not feel like patching right now
 # but in mingw only if winsock2.h
 ac_cv_func_select=${ac_cv_func_select=no}
@@ -130,7 +137,7 @@
 jm_cv_func_mbrtowc=${jm_cv_func_mbrtowc=no}
 '''
 		return str
-	
+
 	def configure_command (self):
 		cmd = gub.Target_package.configure_command (self) \
 		       + ' --disable-csharp'
@@ -139,17 +146,31 @@
 			cmd = re.sub ('--config-cache ', '', cmd) 
 		return cmd
 	
+	def configure (self):
+		self.system ('''cd %(srcdir)s && libtoolize --force --copy''')
+		gub.Target_package.configure (self)
+
 class Libiconv (gub.Target_package):
 	pass
 
 class Glib (gub.Target_package):
-	def configure_cache_overrides (self, str):
+	def config_cache_overrides (self, str):
 		return str + '''
 glib_cv_stack_grows=${glib_cv_stack_grows=no}
 '''
 
 class Pango (gub.Target_package):
-	pass
+	def configure_command (self):
+		return gub.Target_package.configure_command (self) \
+		       + gub.join_lines ('''
+--without-x
+--without-cairo
+''')
+
+	def configure (self):
+		gub.Target_package.configure (self)
+		if self.settings.platform.startswith ('mingw'):
+			self.system ('''cp $HOME/installers/windows/bin/%(target_architecture)s-libtool %(builddir)s/libtool''')
 
 class Freetype (gub.Target_package):
 	def configure (self):
@@ -185,7 +206,7 @@
 --exec-prefix=%(systemdir)s/usr
 "''')
 
-		if self.settings.platform == 'mingw':
+		if self.settings.platform.startswith ('mingw'):
 			 cmd += gub.join_lines ('''
 --with-default-fonts=@WINDIR@\\fonts\\
 --with-add-fonts=@INSTDIR@\\usr\\share\\gs\\fonts
@@ -203,7 +224,7 @@
 --exec-prefix=%(installdir)s \ 
 '''})
 		gub.Package.configure (self)
-		if self.settings.platform == 'mingw':
+		if self.settings.platform.startswith ('mingw'):
 			self.dump ('%(builddir)s/config.h', '''
 #define sleep(x) _sleep (x)
 ''', mode='a')
@@ -250,6 +271,7 @@
 #Freetype (settings).with (version='2.1.9', mirror=download.freetype),
 #Expat (settings).with (version='1.95.8', mirror=download.sf),
 #Fontconfig (settings).with (version='2.3.92', mirror=download.fontconfig),
+#Gettext (settings).with (version='0.14.5'),
 
 def get_packages (settings, platform):
 	packages = {
@@ -261,24 +283,22 @@
 		Fontconfig (settings).with (version='2.3.2', mirror=download.fontconfig),
 	),
 	'mingw': (
-		# FIXME: mingw 3.7/3.8 is a system issue, how to enforce?
-		Mingw (settings).with (version='3.7', download=gub.Package.skip),
-#		Mingw (settings).with (version='3.8', download=gub.Package.skip),
 		Libtool (settings).with (version='1.5.20'),
 		Zlib (settings).with (version='1.2.2-1', mirror=download.lp, format='bz2'),
-# FIXME: gettext-0.14.5 does not link with mingw-3.7
-#		Gettext (settings).with (version='0.14.5'),
 		Gettext (settings).with (version='0.14.1-1', mirror=download.lp, format='bz2'),
 		Libiconv (settings).with (version='1.9.2'),
 		Freetype (settings).with (version='2.1.7-1', mirror=download.lp, format='bz2'),
 		Expat (settings).with (version='1.95.8-1', mirror=download.lp, format='bz2'),
 		Fontconfig (settings).with (version='2.3.2-1', mirror=download.lp, format='bz2'),
 		Gmp (settings).with (version='4.1.4'),
-		Regex (settings).with (version='2.3.90-1', mirror=download.lp, format='bz2'),
 		Guile (settings).with (version='1.7.2-3', mirror=download.lp, format='bz2'),
 		Glib (settings).with (version='2.8.4', mirror=download.gtk),
 		Pango (settings).with (version='1.10.1', mirror=download.gtk),
+		Python (settings).with (version='2.4.2-1', mirror=download.lp, format='bz2'),
+#		Python (settings).with (version='2.4.2', mirror=download.python),
+		Gs (settings).with (version='8.15-1', mirror=download.lp, format='bz2'),
 		LilyPond (settings).with (mirror=cvs.gnu, download=gub.Package.cvs),
+		LilyPad (settings).with (version='0.0.7-1', mirror=download.lp, format='bz2'),
 	),
 	}
 
--- a/specs/gub.py	Sun Nov 27 10:51:53 2005 +0100
+++ b/specs/gub.py	Sun Nov 27 19:53:36 2005 +0100
@@ -1,6 +1,7 @@
 import cross
 import cvs
 import download as dl
+import glob
 import os
 import re
 import subprocess
@@ -236,6 +237,27 @@
 	
 	def install (self):
 		self.system ('cd %(builddir)s && %(install_command)s')
+		if self.settings.platform.startswith ('mingw'):
+			self.libtool_la_fixups ()
+
+	def libtool_la_fixups (self):
+		dll_name = 'lib'
+		for i in glob.glob ('%(installdir)s/lib/*.la' \
+				    % self.package_dict ()):
+			base = os.path.basename (i)[3:-3]
+			self.file_sub (''' *-L *[^"' ][^"' ]*''', '', i)
+			self.file_sub ('''( |=|')(/[^ ]*usr/lib/lib)([^ ']*)\.(a|la|so)[^ ']*''', '\\1-l\\3', i)
+			# '"
+			self.file_sub ('library_names=.*',
+				       "library_names='lib%(base)s.dll.a'",
+				       i, locals ())
+			# we don't have sover
+#			self.file_sub ('^dlname=.*',
+#				       """dlname='../bin/%(dll_prefix)%(base)s-%(sover)s.dll'""",
+#				       i, locals ())
+			self.file_sub ('^old_library=.*',
+				       """old_library='lib%(base)s.a'""",
+				       i, locals ())
 
 	def compile_command (self):
 		return 'make'
@@ -306,7 +328,7 @@
 --libdir=/usr/lib 
 ''')
 
-	def configure_cache_overrides (self, str):
+	def config_cache_overrides (self, str):
 		return str
 
 	def installdir (self):
@@ -338,7 +360,7 @@
 		cache = open (cache_fn, 'w')
 		str = (cross.cross_config_cache['all']
 		       + cross.cross_config_cache[self.settings.platform])
-		str = self.configure_cache_overrides (str)
+		str = self.config_cache_overrides (str)
 		cache.write (str)
 		cache.close ()
 		os.chmod (cache_fn, 0755)
@@ -371,7 +393,6 @@
 #			'LDFLAGS': '-L%(systemdir)s/usr/lib',
 # FIXME: for zlib, try adding bin
 			'LDFLAGS': '-L%(systemdir)s/usr/lib -L%(systemdir)s/usr/bin',
-			'MINGW_RUNTIME_DIR': self.settings.runtimedir,
 			'NM': '%(target_architecture)s-nm',
 			'PKG_CONFIG_PATH': '%(systemdir)s/usr/lib/pkgconfig',
 			'PKG_CONFIG': '''/usr/bin/pkg-config \
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/specs/mingw.py	Sun Nov 27 19:53:36 2005 +0100
@@ -0,0 +1,43 @@
+import download
+import gub
+import os
+import re
+
+# FIXME: compile using mingw-runtime-src ?
+class Mingw_runtime (gub.Target_package):
+	def set_download (self, mirror=download.gnu, format='gz', download=gub.Target_package.wget):
+		gub.Target_package.set_download (self, mirror, format, download)
+		self.url = re.sub ('mingw-runtime/', 'mingw/', self.url)
+		gub.Target_package.wget (self)
+		
+	def untar (self):
+		self.system ("rm -rf  %(srcdir)s %(builddir)s")
+		self.system ('mkdir -p %(srcdir)s/root')
+		file = self.settings.downloaddir + '/' + self.file_name ()
+		flags = '-zxf'
+		cmd = 'tar %(flags)s %(file)s -C %(srcdir)s/root'
+		self.system (cmd, locals ())
+
+		self.dump ('%(srcdir)s/configure', '''
+cat > Makefile <<EOF
+default:
+	@echo done
+all: default
+install:
+	mkdir -p %(installdir)s
+	tar -C %(srcdir)s/root -cf- . | tar -C %(installdir)s -xvf-
+	mkdir -p %(installdir)s/bin
+	-cp /cygwin/usr/bin/cygcheck.exe %(installdir)s/bin
+EOF
+''')
+		os.chmod ('%(srcdir)s/configure' % self.package_dict (), 0755)
+
+
+class Regex (gub.Target_package):
+	pass
+
+def get_packages (settings):
+	return (
+		Mingw_runtime (settings).with (version='3.9', mirror=download.sf),
+		Regex (settings).with (version='2.3.90-1', mirror=download.lp, format='bz2'),
+		)