Mercurial > gub
changeset 67:cd38b9d94e57
Add linux/autopackage platform.
author | janneke <janneke@gnu.org> |
---|---|
date | Wed, 30 Nov 2005 22:11:32 +0100 |
parents | 3e0157ebcab8 |
children | b44ef1829e79 |
files | GNUmakefile driver.py specs/cross.py specs/framework.py specs/gub.py specs/mingw.py |
diffstat | 6 files changed, 92 insertions(+), 62 deletions(-) [+] |
line wrap: on
line diff
--- a/GNUmakefile Wed Nov 30 20:34:05 2005 +0100 +++ b/GNUmakefile Wed Nov 30 22:11:32 2005 +0100 @@ -2,7 +2,10 @@ default: all all: - python driver.py mac mingw + python driver.py linux mac mingw + +linux: + python driver.py linux mac: python driver.py mac
--- a/driver.py Wed Nov 30 20:34:05 2005 +0100 +++ b/driver.py Wed Nov 30 22:11:32 2005 +0100 @@ -1,10 +1,11 @@ #!/usr/bin/python import __main__ +import getopt import os import re +import string import sys -import getopt sys.path.insert (0, 'specs/') @@ -17,12 +18,13 @@ self.target_gcc_flags = '' self.topdir = os.getcwd () self.downloaddir = os.getcwd () + '/downloads' - self.build_spec = 'i686-linux' + self.build_architecture = gub.read_pipe ('gcc -dumpmachine')[:-1] self.srcdir = os.path.join (self.topdir, 'src') self.specdir = self.topdir + '/specs' self.gtk_version = '2.8' self.target_architecture = arch + self.tool_prefix = arch + '-' self.targetdir = self.topdir + '/target/%s' % self.target_architecture self.builddir = self.targetdir + '/build' self.garbagedir = self.targetdir + '/garbage' @@ -97,10 +99,11 @@ platform = files[0] except IndexError: platform = '' - - if platform not in ['mac', 'mingw', 'mingw-fedora']: - print 'unknown platform', platform - print 'Use mac, mingw, mingw-fedora' + + platforms = ('linux', 'mac', 'mingw', 'mingw-fedora') + if platform not in platforms: + print 'unsupported platform:', platform + print 'use:', string.join (platforms) sys.exit (1) if platform == 'mac': @@ -113,8 +116,18 @@ settings.target_gcc_flags = '-mwindows -mms-bitfields' platform = 'mingw' elif platform == 'linux': - settings = Settings ('ap') + settings = Settings ('linux') platform = 'linux' + settings.target_architecture = settings.build_architecture + # Use apgcc to avoid using too new GLIBC symbols + # possibly -Wl,--as-needed has same effect. + settings.gcc = 'apgcc' + settings.gxx = 'apg++' + settings.ld = 'apgcc' + settings.tool_prefix = '' + os.environ['CC'] = settings.gcc + os.environ['CXX'] = settings.gxx + os.environ['LD'] = settings.ld gub.start_log () settings.verbose = verbose
--- a/specs/cross.py Wed Nov 30 20:34:05 2005 +0100 +++ b/specs/cross.py Wed Nov 30 22:11:32 2005 +0100 @@ -2,8 +2,7 @@ cross_config_cache ={ - 'all': - """ac_cv_c_bigendian=${ac_cv_c_bigendian=no} + 'all': ''' ac_cv_c_long_size_t=${ac_cv_c_long_size_t=no} ac_cv_c_long_time_t=${ac_cv_c_long_time_t=yes} ac_cv_sizeof___int64=${ac_cv_sizeof___int64=0} @@ -51,24 +50,29 @@ lt_cv_dlopen=${lt_cv_dlopen="dlopen"} lt_cv_dlopen_libs=${lt_cv_dlopen_libs="none required"} libltdl_cv_sys_search_path=${libltdl_cv_sys_search_path="'"/lib /usr/lib $cygwin_prefix/lib"'"} -lt_cv_sys_max_cmd_len=${lt_cv_sys_max_cmd_len=8192} ac_cv_lib_dld_shl_load=${ac_cv_lib_dld_shl_load=no} ac_cv_lib_dl_dlopen=${ac_cv_lib_dl_dlopen=no} ac_cv_c_stack_direction=${ac_cv_c_stack_direction=-1} -""" -, +''', + 'linux' : ''' +lt_cv_sys_max_cmd_len=${lt_cv_sys_max_cmd_len=32768} +''', 'mac' : ''' +ac_cv_c_bigendian=${ac_cv_c_bigendian=yes} +lt_cv_sys_max_cmd_len=${lt_cv_sys_max_cmd_len=8192} glib_cv_uscore=${glib_cv_uscore=no} ac_cv_func_posix_getpwuid_r=${ac_cv_func_posix_getpwuid_r=yes} -''' - , - 'cygwin': """ac_cv_func_mkfifo=${ac_cv_func_mkfifo=yes} +''', + 'cygwin': ''' +lt_cv_sys_max_cmd_len=${lt_cv_sys_max_cmd_len=8192} +ac_cv_func_mkfifo=${ac_cv_func_mkfifo=yes} ac_cv_have_dev_ptmx=${ac_cv_have_dev_ptmx=} ac_cv_have_dev_ptc=${ac_cv_have_dev_ptc=} -""" - , - 'mingw': """ac_cv_func_mkfifo=${ac_cv_func_mkfifo=no} +''', + 'mingw': ''' +lt_cv_sys_max_cmd_len=${lt_cv_sys_max_cmd_len=8192} +ac_cv_func_mkfifo=${ac_cv_func_mkfifo=no} ac_cv_have_dev_ptmx=${ac_cv_have_dev_ptmx=no} ac_cv_have_dev_ptc=${ac_cv_have_dev_ptc=no} -""" +''' }
--- a/specs/framework.py Wed Nov 30 20:34:05 2005 +0100 +++ b/specs/framework.py Wed Nov 30 22:11:32 2005 +0100 @@ -387,11 +387,14 @@ class Zlib (gub.Target_package): def configure (self): + zlib_is_broken = 'SHAREDTARGET=libz.so.1.2.2' + if self.settings.platform.startswith ('mingw'): + zlib_is_broken = 'target=mingw' self.system (''' sed -i~ 's/mgwz/libz/' %(srcdir)s/configure shtool mkshadow %(srcdir)s %(builddir)s -cd %(builddir)s && target=mingw AR="%(AR)s r" %(srcdir)s/configure --shared -''') +cd %(builddir)s && %(zlib_is_broken)s AR="%(AR)s r" %(srcdir)s/configure --shared +''', locals ()) # latest vanilla packages #Zlib (settings).with (version='1.2.3', mirror=download.zlib, format='bz2'), @@ -426,4 +429,7 @@ ), } + if platform == 'linux': + return packages['mingw'] + return packages[platform]
--- a/specs/gub.py Wed Nov 30 20:34:05 2005 +0100 +++ b/specs/gub.py Wed Nov 30 22:11:32 2005 +0100 @@ -89,11 +89,12 @@ def package_dict (self, env={}): dict = { - 'build_spec': self.settings.build_spec, + 'build_architecture': self.settings.build_architecture, 'garbagedir': self.settings.garbagedir, 'gtk_version': self.settings.gtk_version, 'systemdir': self.settings.systemdir, 'target_architecture': self.settings.target_architecture, + 'tool_prefix': self.settings.tool_prefix, 'target_gcc_flags': self.settings.target_gcc_flags, 'name': self.name (), 'version': self.version, @@ -310,17 +311,17 @@ class Target_package (Package): def configure_command (self): - return join_lines ('''%(srcdir)s/configure ---config-cache ---enable-shared ---disable-static ---build=%(build_spec)s ---host=%(target_architecture)s ---target=%(target_architecture)s ---prefix=/usr ---sysconfdir=/etc ---includedir=/usr/include ---libdir=/usr/lib + return join_lines ('''%(srcdir)s/configure +--config-cache +--enable-shared +--disable-static +--build=%(build_architecture)s +--host=%(target_architecture)s +--target=%(target_architecture)s +--prefix=/usr +--sysconfdir=/etc +--includedir=/usr/include +--libdir=/usr/lib ''') def config_cache_overrides (self, str): @@ -335,19 +336,21 @@ # return self.settings.systemdir + '/usr' def install_command (self): - return '''make install \ -prefix=%(installdir)s \ -exec_prefix=%(installdir)s \ -bindir=%(installdir)s/bin \ -infodir=%(installdir)s/share/info \ -mandir=%(installdir)s/share/man \ -libdir=%(installdir)s/lib \ -sysconfdir=%(installdir)s/etc \ -includedir=%(installdir)s/include \ -tooldir=%(installdir)s \ -gcc_tooldir=%(installdir)s \ -libexecdir=%(installdir)s/lib \ -''' + return join_lines ('''make install +bindir=%(installdir)s/bin +aclocaldir=%(installdir)s/share/aclocal +datadir=%(installdir)s/share +exec_prefix=%(installdir)s +gcc_tooldir=%(installdir)s +includedir=%(installdir)s/include +infodir=%(installdir)s/share/info +libdir=%(installdir)s/lib +libexecdir=%(installdir)s/lib +mandir=%(installdir)s/share/man +prefpix=%(installdir)s +sysconfdir=%(installdir)s/etc +tooldir=%(installdir)s +''') def config_cache (self): self.system ('mkdir -p %(builddir)s') @@ -378,26 +381,32 @@ def target_dict (self, env={}): dict = { - 'AR': '%(target_architecture)s-ar', - 'CC':'%(target_architecture)s-gcc %(target_gcc_flags)s', + 'AR': '%(tool_prefix)sar', + 'CC': '%(tool_prefix)sgcc %(target_gcc_flags)s', 'CPPFLAGS': '-I%(systemdir)s/usr/include', - 'CXX':'%(target_architecture)s-g++ %(target_gcc_flags)s', - 'DLLTOOL' : '%(target_architecture)s-dlltool', - 'DLLWRAP' : '%(target_architecture)s-dllwrap', - 'LD': '%(target_architecture)s-ld', + 'CXX':'%(tool_prefix)sg++ %(target_gcc_flags)s', + 'DLLTOOL' : '%(tool_prefix)sdlltool', + 'DLLWRAP' : '%(tool_prefix)sdllwrap', + 'LD': '%(tool_prefix)sld', # 'LDFLAGS': '-L%(systemdir)s/usr/lib', # FIXME: for zlib, try adding bin 'LDFLAGS': '-L%(systemdir)s/usr/lib -L%(systemdir)s/usr/bin', - 'NM': '%(target_architecture)s-nm', + 'NM': '%(tool_prefix)snm', 'PKG_CONFIG_PATH': '%(systemdir)s/usr/lib/pkgconfig', 'PKG_CONFIG': '''/usr/bin/pkg-config \ --define-variable prefix=%(systemdir)s/usr \ --define-variable includedir=%(systemdir)s/usr/include \ --define-variable libdir=%(systemdir)s/usr/lib \ ''', - 'RANLIB': '%(target_architecture)s-ranlib', + 'RANLIB': '%(tool_prefix)sranlib', 'SED': 'sed', # libtool (expat mingw) fixup } + if self.settings.__dict__.has_key ('gcc'): + dict['CC'] = self.settings.gcc + if self.settings.__dict__.has_key ('gxx'): + dict['CXX'] = self.settings.gxx + if self.settings.__dict__.has_key ('ld'): + dict['LD'] = self.settings.ld dict.update (env) return dict
--- a/specs/mingw.py Wed Nov 30 20:34:05 2005 +0100 +++ b/specs/mingw.py Wed Nov 30 22:11:32 2005 +0100 @@ -3,17 +3,12 @@ import os import re - -class Binary_package ( -# FIXME: compile using mingw-runtime-src ? - - class Mingw_runtime (gub.Binary_package): def set_download (self, mirror=download.gnu, format='gz', download=gub.Target_package.wget): - gub.Target_package.set_download (self, mirror, format, download) + gub.Package.set_download (self, mirror, format, download) self.url = re.sub ('mingw-runtime/', 'mingw/', self.url) self.url = re.sub ('w32api/', 'mingw/', self.url) - gub.Target_package.wget (self) + gub.Package.wget (self) def install (self): gub.Binary_package.install (self)