changeset 6360:62a9fcf680dd

Merge remote-tracking branch 'origin/ghostscript-9.0' into ghostscript-9.15 Conflicts: gub/specs/freetype.py gub/specs/ghostscript.py
author Masamichi Hosoda <trueroad@users.noreply.github.com>
date Sun, 08 Mar 2015 21:59:33 +0900
parents d02df78f9193 (diff) aad77c79308a (current diff)
children acd8326ce952
files gub/installer.py gub/misc.py gub/specs/freetype.py gub/specs/ghostscript.py
diffstat 126 files changed, 3204 insertions(+), 936 deletions(-) [+]
line wrap: on
line diff
--- a/README	Sun May 29 12:49:02 2011 +0200
+++ b/README	Sun Mar 08 21:59:33 2015 +0900
@@ -70,7 +70,7 @@
    shar archive for Linux/PowerPC
 
 freebsd-x86
-   shar archive for FreeBSD 4/x86
+   shar archive for FreeBSD 6/x86
 
 freebsd-64
    shar archive for FreeBSD 6/x86_64
@@ -492,6 +492,8 @@
 In addition to the requirements for GUB, you need
 
   • A TeX installation
+  • texinfo
+  • zip
 
 Build everything
 
--- a/bin/cygwin-packager	Sun May 29 12:49:02 2011 +0200
+++ b/bin/cygwin-packager	Sun Mar 08 21:59:33 2015 +0900
@@ -41,7 +41,7 @@
 from gub import context
 from gub import cygwin
 from gub import gup
-from gub import logging
+from gub import gub_log
 from gub import misc
 from gub import runner
 import gub.settings
@@ -77,7 +77,6 @@
         p = self.package_manager.get_all_packages ()[0]
         if not self.settings.build:
             self.settings.build = self.build_number (p)
-        self.settings.build = '2'
 
     def build_number (self, package):
         from gub import versiondb
@@ -107,7 +106,7 @@
     def re_ball (self, hdr):
         cyg_split = cygwin.gub_to_distro_dict.get (hdr['split_name'],
                                                    [hdr['split_name']])[0]
-        logging.info ('creating cygwin package: ' + cyg_split + '\n')
+        gub_log.info ('creating cygwin package: ' + cyg_split + '\n')
         main_p = hdr['name'] == hdr['split_name']
         subdir = ''
         if not main_p:
@@ -140,7 +139,7 @@
         ball = (self.expand ('%(cygwin_uploads)s/%(name)s/') + '%(cyg_ball)s'
                 % locals ())
 
-        logging.info ('creating cygwin src package: ' + cyg_ball + '\n')
+        gub_log.info ('creating cygwin src package: ' + cyg_ball + '\n')
         #self._untar (dir, '%(src_package_ball)s')
         self._untar (dir, self.expand ('%(src_package_ball)s'))
         self._mv ('%(dir)s/%(gub_dir)s', '%(dir)s/%(cyg_dir)s', locals ())
@@ -396,8 +395,8 @@
     c = Cygwin_package (settings, commands[0],
                         branches.get (commands[0], 'HEAD'))
     
-    logging.default_logger.threshold = options.verbosity
-    c.connect_command_runner (runner.CommandRunner (logging.default_logger))
+    gub_log.default_logger.threshold = options.verbosity
+    c.connect_command_runner (runner.CommandRunner (gub_log.default_logger))
     c.create ()
     
 if __name__ == '__main__':
--- a/bin/gib	Sun May 29 12:49:02 2011 +0200
+++ b/bin/gib	Sun Mar 08 21:59:33 2015 +0900
@@ -42,7 +42,7 @@
 import gub.settings
 
 from gub import locker
-from gub import logging
+from gub import gub_log
 from gub import runner
 from gub import versiondb
 
@@ -123,7 +123,7 @@
          for p in install_manager.installed_packages ()])
 
 def build_installer (installer_obj):
-    logger = logging.default_logger
+    logger = gub_log.default_logger
 
     # theoretically, we could run DeferredRunner but we would have to
     # CommandRunner-ify PackageManager too. - that does not seem worth
@@ -160,26 +160,26 @@
     for s in options.settings:
         (k, v) = tuple (s.split ('='))
         if k in settings.__dict__:
-            logging.warn ('overwriting %s = %s with %s\n'
+            gub_log.warn ('overwriting %s = %s with %s\n'
                                         % (k, settings.__dict__[k], v))
         settings.__dict__[k] = v
 
     db = versiondb.VersionDataBase (options.version_db)
     branch_dict = dict ([tuple (branch_setting.split ('='))
                          for branch_setting in options.branches])
-    log = logging.set_default_log (settings.expand ('%(logdir)s/installer.log'),
+    log = gub_log.set_default_log (settings.expand ('%(logdir)s/installer.log'),
                                    options.verbosity)
 
     installer_obj = installer.get_installer (settings, args, db, branch_dict)
     try:
         build_installer (installer_obj)
     except locker.LockedError:
-        logging.error ('another build in progress.  Skipping.')
+        gub_log.error ('another build in progress.  Skipping.')
         if options.skip_if_locked:
             sys.exit (0)
         raise
-    logging.stage ('done\n')
-    logging.default_logger.show_logfile ()
+    gub_log.stage ('done\n')
+    gub_log.default_logger.show_logfile ()
 
 if __name__ == '__main__':
     main ()
--- a/bin/gpkg	Sun May 29 12:49:02 2011 +0200
+++ b/bin/gpkg	Sun Mar 08 21:59:33 2015 +0900
@@ -43,7 +43,7 @@
 #
 from gub.syntax import printf
 from gub import gup
-from gub import logging
+from gub import gub_log
 from gub import misc
 from gub.settings import Settings
 
@@ -193,9 +193,9 @@
     options.root = settings.system_root
     options.platform = settings.platform
 
-    logging.default_logger.threshold = options.verbosity
-    logging.verbose ('root: ' + settings.system_root + '\n')
-    logging.verbose ('platform: ' + settings.platform + '\n')
+    gub_log.default_logger.threshold = options.verbosity
+    gub_log.verbose ('root: ' + settings.system_root + '\n')
+    gub_log.verbose ('platform: ' + settings.platform + '\n')
 
     # TODO: hook log into target/PLAT/log
     target_manager = gup.DependencyManager (options.root,
--- a/bin/gub	Sun May 29 12:49:02 2011 +0200
+++ b/bin/gub	Sun Mar 08 21:59:33 2015 +0900
@@ -44,7 +44,7 @@
 from gub import cross
 from gub import gup
 from gub import locker
-from gub import logging
+from gub import gub_log
 from gub import misc
 from gub import repository
 from gub.syntax import printf
@@ -166,7 +166,7 @@
 
 #FIXME: move to BuildRunner?
 def build (settings, options, files):
-    logging.stage ('calculating dependencies\n')
+    gub_log.stage ('calculating dependencies\n')
     (names, specs) = gup.get_source_packages (settings, files)
     if options.no_dependencies:
         names = list ()
@@ -182,13 +182,13 @@
         printf ('dependencies[%(platform)s]: %(dep_str)s' % locals ())
         sys.exit (0)
     dep_str.replace (misc.with_platform ('', platform), '')
-    logging.info ('dependencies[%(platform)s]: %(dep_str)s\n' % locals ())
+    gub_log.info ('dependencies[%(platform)s]: %(dep_str)s\n' % locals ())
 
     if options.fresh:
         for spec in list (specs.values()):
             status = spec.get_stamp_file ()
             if os.path.exists (status):
-                logging.info ('Removing status file: %(status)s\n' % locals ())
+                gub_log.info ('Removing status file: %(status)s\n' % locals ())
                 os.unlink (status)
 
     if options.download_only:
@@ -208,7 +208,7 @@
         manager = gup.DependencyManager (settings.system_root)
         ## Todo: have a readonly lock for tools platform
     except locker.LockedError:
-        logging.error ('another build in progress.  Skipping.')
+        gub_log.error ('another build in progress.  Skipping.')
         if options.skip_if_locked:
             sys.exit (0)
         raise
@@ -224,7 +224,7 @@
             printf (b.checksums[name])
         sys.exit (0)
         
-    configure.test_required (logging.default_logger.error)
+    configure.test_required (gub_log.default_logger.error)
 
     b.build_source_packages (names)
 
@@ -268,7 +268,7 @@
     log = os.path.join (log_dir, 'gub.log')
     if os.path.isfile (log):
         misc.rename_append_time (log)
-    logger = logging.set_default_log (log, options.verbosity)
+    logger = gub_log.set_default_log (log, options.verbosity)
     buildrunner.logger = logger
     logger.write_log ('root: %s\n' % settings.system_root, 'verbose')
     logger.write_log ('platform: %s\n' % settings.platform, 'verbose')
@@ -331,9 +331,9 @@
     if options.dry_run:
         loggedos.dry_run ()
 
-    logging.default_logger.threshold = options.verbosity
-    logging.info ('files: %(files)s\n' % locals ())
-    logging.info ('CLEANED env: ' + str (os.environ) + '\n')
+    gub_log.default_logger.threshold = options.verbosity
+    gub_log.info ('files: %(files)s\n' % locals ())
+    gub_log.info ('CLEANED env: ' + str (os.environ) + '\n')
 
     if not options.platform and len (files):
         options.platform, x = misc.split_platform (files[0])
@@ -345,7 +345,7 @@
         sys.exit (0)
 
     if not files:
-        logging.error ('error: nothing to do\n')
+        gub_log.error ('error: nothing to do\n')
         cli_parser.print_help ()
         sys.exit (2)
         
--- a/bin/gub-tester	Sun May 29 12:49:02 2011 +0200
+++ b/bin/gub-tester	Sun Mar 08 21:59:33 2015 +0900
@@ -23,7 +23,7 @@
 from gub.syntax import printf
 from gub import misc
 from gub import repository
-from gub import logging
+from gub import gub_log
 from gub.db import bsd as db_bsd
 
 def canonicalize_string (target):
@@ -217,7 +217,7 @@
     tag_db = repository.TagDb (options.result_dir)
     recheck = ''
     if release_hash in done_db:
-        logging.info ('release %(release_hash)s has already been checked\n'
+        gub_log.info ('release %(release_hash)s has already been checked\n'
                       % locals ())
         if not options.force:
             RESULT = CACHED_SUCCESS
@@ -225,20 +225,20 @@
                 RESULT = CACHED_FAIL
             return RESULT, ['cached %(RESULT)s of %(release_hash)s' % locals ()]
         recheck = ' (forced recheck of %(release_hash)s)' % locals ()
-        logging.info ('recheck forced\n' % locals ())
+        gub_log.info ('recheck forced\n' % locals ())
     
     log = 'test-%(canonicalize)s.log' %  locals ()
     log = os.path.join (options.result_dir, log)
     
     cmd = 'nice time sh -c "(%(target)s)"' % locals ()
-    logging.command (cmd + '\n')
-    logging.error ('Logging test output to %(log)s\n' % locals ())
+    gub_log.command (cmd + '\n')
+    gub_log.error ('Logging test output to %(log)s\n' % locals ())
 
     if options.dry_run:
         return (SUCCESS, ['dryrun'])
 
-    logging.set_default_log (log, options.verbosity)
-    logger = logging.default_logger
+    gub_log.set_default_log (log, options.verbosity)
+    logger = gub_log.default_logger
     stat = loggedos.system (logger, cmd, ignore_errors=True)
     base_tag = 'success-%(canonicalize)s-' % locals ()
     result = 'unknown'
@@ -261,7 +261,7 @@
         tag_db.tag (base_tag, repo)
         if repo.is_distributed ():
             tag = repo.tag (base_tag)
-            logging.action ('tagging with %(tag)s\n' % locals ())
+            gub_log.action ('tagging with %(tag)s\n' % locals ())
             if options.tag_repo:
                 repo.push (tag, options.tag_repo)
 
@@ -275,13 +275,13 @@
     attachments = [message % locals ()]
     if diff:
         attachments.append (diff)
-    logging.info ('%(target)s: %(RESULT)s\n' % locals ())
+    gub_log.info ('%(target)s: %(RESULT)s\n' % locals ())
     done_db[release_hash] = time.ctime () + ' ' + RESULT
     return (RESULT, attachments)
     
 def send_message (options, msg):
     if not options.address:
-        logging.info ('No recipients for result mail\n')
+        gub_log.info ('No recipients for result mail\n')
         # FIXME: what about env[EMAIL]?
         return False
     
@@ -311,9 +311,9 @@
     if options.dry_run:
         log = '/dev/stdout'
 
-    logging.set_default_log (log, options.verbosity)
-    logging.info (' *** %s\n' % time.ctime ())
-    logging.info (' *** Starting tests:\n %s\n' % '\n  '.join (args))
+    gub_log.set_default_log (log, options.verbosity)
+    gub_log.info (' *** %s\n' % time.ctime ())
+    gub_log.info (' *** Starting tests:\n %s\n' % '\n  '.join (args))
 
     repo = repository.get_repository_proxy (options.repository,
                                             options.url,
@@ -324,7 +324,7 @@
         repo.download ()
         repo.update_workdir ('.')
 
-    logging.info ('Repository %s\n' % str (repo))
+    gub_log.info ('Repository %s\n' % str (repo))
     
     last_patch = repo.get_revision_description ()
     release_hash = repo.get_checksum ()
@@ -405,7 +405,7 @@
     p = opt_parser ()
     (options, args) = p.parse_args ()
     if not args:
-        logging.error ('error: nothing to do\n')
+        gub_log.error ('error: nothing to do\n')
         p.print_help ()
         sys.exit (2)
 
--- a/gub/build.py	Sun May 29 12:49:02 2011 +0200
+++ b/gub/build.py	Sun Mar 08 21:59:33 2015 +0900
@@ -8,7 +8,7 @@
 from gub import context
 from gub import guppackage
 from gub import loggedos
-from gub import logging
+from gub import gub_log
 from gub import misc
 from gub import octal
 
@@ -66,7 +66,7 @@
         context.RunnableContext.__init__ (self, settings)
         self.source = source
         self.settings = settings
-        self.source.connect_logger (logging.default_logger)
+        self.source.connect_logger (gub_log.default_logger)
         if self.destdir_install_broken:
             self.install_command = 'make %(make_flags)s %(install_flags_destdir_broken)s %(install_flags)s'
 
@@ -137,7 +137,7 @@
 
 to skip this check and risk a defective build.
 ''')
-                logging.error (msg)
+                gub_log.error (msg)
                 self.system ('false')
             try:
                 (available[stage]) ()
@@ -239,7 +239,7 @@
 
     def download (self):
         if not self.source.is_downloaded ():
-            logging.default_logger.write_log (self.stage_message ('download'),
+            gub_log.default_logger.write_log (self.stage_message ('download'),
                                                                   'stage')
         self.source.download ()
 
--- a/gub/buildrunner.py	Sun May 29 12:49:02 2011 +0200
+++ b/gub/buildrunner.py	Sun Mar 08 21:59:33 2015 +0900
@@ -31,7 +31,7 @@
 from gub import misc
 from gub import gup
 from gub import loggedos
-from gub import logging
+from gub import gub_log
 from gub import runner
 import gub.settings   # otherwise naming conflict with settings local vars.
 
@@ -45,7 +45,7 @@
                                             fromfiledate,
                                             tofiledate))
 
-logger = logging.default_logger
+logger = gub_log.default_logger
 
 # FIXME s/spec/build/, but we also have two definitions of package/pkg
 # here: sub packages and name of global package under build
@@ -53,7 +53,7 @@
 #FIXME: split spec_* into SpecBuiler?
 class BuildRunner:
     def __init__ (self, manager, settings, options, specs):
-        info = logging.default_logger.harmless
+        info = gub_log.default_logger.harmless
         info.write ('MANAGER: ' + settings.platform + '\n')
         self.managers = {settings.platform : manager }
         self.settings = settings
@@ -74,7 +74,7 @@
 
     def manager (self, platform):
         if platform not in self.managers:
-            info = logging.default_logger.harmless
+            info = gub_log.default_logger.harmless
             info.write ('MANAGER for platform: ' + platform + '\n')
             settings = gub.settings.Settings (platform)
             self.managers[platform] = gup.DependencyManager (settings.system_root)
@@ -88,10 +88,10 @@
                 self.manager (package.platform ()).register_package_dict (package.dict ())
 
     def calculate_checksums (self):
-        logging.verbose ('calculating checksums\n')
+        gub_log.verbose ('calculating checksums\n')
         for spec in list (self.specs.values ()):
             name = spec.platform_name ()
-            logger = logging.NullCommandLogger ()
+            logger = gub_log.NullCommandLogger ()
 
             command_runner = runner.DeferredRunner (logger)
             spec.connect_command_runner (command_runner)
@@ -227,7 +227,7 @@
         global logger
         if self.options.log == 'build':
             # This is expecially broken with multi-platform builds...
-            logger = logging.default_logger
+            logger = gub_log.default_logger
         else:
             if self.options.log == 'platform':
                 log = os.path.join (spec.settings.logdir, 'build.log')
@@ -236,7 +236,7 @@
                                     misc.strip_platform (spec_name)) + '.log'
             if os.path.isfile (log):
                 misc.rename_append_time (log)
-            logger = logging.CommandLogger (log, logging.default_logger.threshold)
+            logger = gub_log.CommandLogger (log, gub_log.default_logger.threshold)
         if checksum_fail_reason:
             rebuild = 'must'
             if self.options.lax_checksums:
@@ -245,7 +245,7 @@
         else:
             logger.write_log ('checksum ok: %(spec_name)s\n' % locals (), 'verbose')
 
-        if logging.get_numeric_loglevel ('verbose') > logger.threshold:
+        if gub_log.get_numeric_loglevel ('verbose') > logger.threshold:
             logger.write_log ('\n'.join (checksum_fail_reason.split ('\n')[:10]), 'verbose')
         logger.write_log (checksum_fail_reason, 'output')
 
@@ -269,12 +269,12 @@
                 if os.path.isfile (checksum_file):
                     misc.rename_append_time (checksum_file)
                 open (checksum_file, 'w').write (self.checksums[spec_name])
-            loggedos.system (logging.default_logger, spec.expand ('rm -f %(stamp_file)s'))
+            loggedos.system (gub_log.default_logger, spec.expand ('rm -f %(stamp_file)s'))
         # Ugh, pkg_install should be stage
         if spec.install_after_build and not self.spec_all_installed (spec):
             logger.write_log (spec.stage_message ('pkg_install'), 'stage')
             self.spec_install (spec)
-        logging.default_logger.write_log ('\n', 'stage')
+        gub_log.default_logger.write_log ('\n', 'stage')
 
     def is_installed_spec (self, spec_name):
         spec = self.specs[spec_name]
@@ -317,7 +317,7 @@
                     .replace (misc.with_platform ('', platform), ''))
         if not fail_str:
             fail_str = '<nothing to be done>.'
-        logging.default_logger.write_log ('must rebuild[%(platform)s]: %(fail_str)s\n' % locals (), 'stage')
+        gub_log.default_logger.write_log ('must rebuild[%(platform)s]: %(fail_str)s\n' % locals (), 'stage')
         if self.options.dry_run:
             sys.exit (0)
         outdated_installed = [x for x in list (reversed (outdated))
@@ -326,13 +326,13 @@
             platform = self.settings.platform
             outdated_str = (' '.join (outdated_installed)
                             .replace (misc.with_platform ('', platform), ''))
-            logging.default_logger.write_log ('removing outdated[%(platform)s]: %(outdated_str)s\n' % locals (), 'stage')
+            gub_log.default_logger.write_log ('removing outdated[%(platform)s]: %(outdated_str)s\n' % locals (), 'stage')
             self.uninstall_specs (outdated_installed)
         global target
         for spec_name in deps:
             target = spec_name
             self.spec_build (spec_name)
-            logger = logging.default_logger
+            logger = gub_log.default_logger
         target = None
 
 target = None
--- a/gub/cross.py	Sun May 29 12:49:02 2011 +0200
+++ b/gub/cross.py	Sun Mar 08 21:59:33 2015 +0900
@@ -5,7 +5,7 @@
 from gub.syntax import printf
 from gub import build
 from gub import context
-from gub import logging
+from gub import gub_log
 from gub import misc
 from gub import repository
 from gub import target
@@ -197,7 +197,7 @@
         if os.path.exists (file_name):
             break
 
-    logging.info ('module name: ' + name + '\n')
+    gub_log.info ('module name: ' + name + '\n')
     module = misc.load_module (file_name, base)
 
     cross_module_checksums[platform] = md5.md5 (open (file_name).read ()).hexdigest ()
@@ -254,8 +254,8 @@
                  + package.settings.cross_dir)
     x86_bindir = x86_cross + '/bin'
     x86_cross_bin = x86_cross + '/i686-linux' + '/bin'
-    env['CC'] = x86_cross_bin + '/gcc'
-    env['CXX'] = x86_cross_bin + '/g++'
+    env['CC'] = x86_bindir + '/i686-linux-gcc'
+    env['CXX'] = x86_bindir + '/i686-linux-g++'
     # FIXME: should only remove any %(tools_prefix)s elements from these...
     env['C_INCLUDE_PATH'] = ''
     env['CPLUS_INCLUDE_PATH'] = ''
--- a/gub/darwin.py	Sun May 29 12:49:02 2011 +0200
+++ b/gub/darwin.py	Sun Mar 08 21:59:33 2015 +0900
@@ -14,7 +14,11 @@
     def __init__ (self, settings):
         context.RunnableContext.__init__ (self,settings)
         self.ignore_libs = None
-        self.skip = ['libgcc_s']
+        self.skip = [
+            'libgcc_s.10.',
+            'libgcc_s_',
+            'libgcc_ext.10.',
+        ]
 
     def get_libaries (self, name):
         lib_str = loggedos.read_pipe (
@@ -58,12 +62,16 @@
 
             for o in orig_libs:
                 if o in f:
-                    newpath = re.sub (o, '@executable_path/../lib/', f);
+                    newpath = re.sub (o, '@executable_path/../lib', f);
                     subs.append ((f, newpath))
                 elif self.expand ('%(targetdir)s') in f:
                     must_skip = [s for s in self.skip if s in f]
                     if not must_skip:
-                        raise Exception ('found targetdir in linkage[%(name)s]: %(f)s' % locals ())
+                        if 'libgcc_s.1.dylib' in f:
+                            newpath = '@executable_path/../lib/libgcc_s.1.dylib'
+                            subs.append ((f, newpath))
+                        else:
+                            raise Exception ('found targetdir in linkage[%(name)s]: %(f)s' % locals ())
                     printf ('FIXME: skipping[%(name)s]: %(f)s, hope this is ok' % locals ())
 
         self.rewire_mach_o_object (name, subs)
@@ -139,7 +147,8 @@
     @context.subst_method
     def rpath (foo):
         return ''
-    package.rpath = misc.MethodOverrider (package.nop, rpath)
+    if not isinstance (package, cross.AutoBuild):
+        package.rpath = misc.MethodOverrider (package.nop, rpath)
 
     @context.subst_method
     def so_extension (foo):
--- a/gub/debian.py	Sun May 29 12:49:02 2011 +0200
+++ b/gub/debian.py	Sun Mar 08 21:59:33 2015 +0900
@@ -12,13 +12,13 @@
 
 # http://ftp.de.debian.org/debian/pool/main/l/linux-kernel-headers/
 
-gcc_version = '4.1.1'
+gcc_version = '4.8.2'
 glibc_version='2.3.2.ds1-22sarge4'
 linux_version = '2.5.999-test7-bk-17'
 def get_cross_build_dependencies (settings):
     global gcc_version, glibc_version, linux_version
     #FIXME too late
-    gcc_version = '4.1.1'
+    gcc_version = '4.8.2'
     if settings.debian_branch == 'stable':
         glibc_version='2.3.2.ds1-22sarge4'
         linux_version = '2.5.999-test7-bk-17'
--- a/gub/dependency.py	Sun May 29 12:49:02 2011 +0200
+++ b/gub/dependency.py	Sun Mar 08 21:59:33 2015 +0900
@@ -3,7 +3,7 @@
 #
 from gub.syntax import printf
 from gub import cross
-from gub import logging
+from gub import gub_log
 from gub import misc
 from gub import repository
 from gub import system
@@ -13,7 +13,7 @@
 
 def get_build_from_file (platform, file_name, name):
     gub_name = file_name.replace (os.getcwd () + '/', '')
-    logging.verbose ('reading spec: %(gub_name)s\n' % locals ())
+    gub_log.verbose ('reading spec: %(gub_name)s\n' % locals ())
     # Ugh, FIXME
     # This loads gub/specs/darwin/python.py in PYTHON. namespace,
     # overwriting the PYTHON. namespace from gub/specs/python.py
@@ -29,7 +29,7 @@
                   .replace ('++', '_xx_')
                   .replace ('+', '_x_')
                   + ('-' + platform).replace ('-', '__'))
-    logging.debug ('LOOKING FOR: %(class_name)s\n' % locals ())
+    gub_log.debug ('LOOKING FOR: %(class_name)s\n' % locals ())
     cls = misc.most_significant_in_dict (module.__dict__, class_name, '__')
     if (platform == 'tools32'
         and (not cls or issubclass (cls, target.AutoBuild))):
@@ -44,7 +44,7 @@
 def get_build_class (settings, flavour, name):
     cls = get_build_from_module (settings, name)
     if not cls:
-        logging.verbose ('making spec:  %(name)s\n' % locals ())
+        gub_log.verbose ('making spec:  %(name)s\n' % locals ())
         cls = get_build_without_module (flavour, name)
     if cls:
         cls._created_name = name
@@ -105,7 +105,7 @@
         source = self.url ()
         if not isinstance (source, repository.Repository):
             source = repository.get_repository_proxy (dir, source, branch)
-        logging.default_logger.write_log ('cls:' + str (self.build_class ()) + '\n', 'output')
+        gub_log.default_logger.write_log ('cls:' + str (self.build_class ()) + '\n', 'output')
         return self.build_class () (self.settings, source)
 
     def build_class (self):
@@ -129,7 +129,7 @@
         if not self._url:
             self._url = self.build_class ().source
         if not self._url:
-            logging.warning ('no source specified in class: '
+            gub_log.warning ('no source specified in class: '
                              + self.build_class ().__name__ + '\n')
         if not self._url:
             self._url = self.settings.dependency_url (self.name ())
--- a/gub/freebsd.py	Sun May 29 12:49:02 2011 +0200
+++ b/gub/freebsd.py	Sun Mar 08 21:59:33 2015 +0900
@@ -11,21 +11,22 @@
     @context.subst_method
     def rpath (foo):
         return ''
-    package.rpath = misc.MethodOverrider (package.nop, rpath)
+    if not isinstance (package, cross.AutoBuild):
+        package.rpath = misc.MethodOverrider (package.nop, rpath)
 
 # FIXME: download from sane place; or rather download only kernel
 # headers and build full toolchain from source?
 def get_sdk ():
     '''
-#! /bin/sh
+#! /bin/bash
 
 if test $# != '3'; then
     cat <<EOF
 Usage: get-freebsd ARCH VERSION BUILD
 
 Example:
-  get-freebsd i386 4.11 1
-  get-freebsd amd64 6.2 2
+  bash get-freebsd i386 6.2 1
+  bash get-freebsd amd64 6.2 2
 EOF
     exit 2
 fi
@@ -36,11 +37,10 @@
 
 tmp=tmp-freebsd-$arch-$version-$build
 mkdir -p $tmp && cd $tmp
-wget ftp://ftp.surfnet.nl/pub/os/FreeBSD/releases/$arch/$version-RELEASE/base/base.??
-wget ftp://ftp-archive.freebsd.org/pub/FreeBSD-Archive/old-releases/$arch/$version-RELEASE/bin/bin.??
+wget ftp://ftp-archive.freebsd.org/pub/FreeBSD-Archive/old-releases/$arch/$version-RELEASE/base/base.??
 rm -rf root
 mkdir -p root
-cat base.?? bin.?? | tar --unlink -xpzf - -C root
+cat base.?? | tar --unlink -xpzf - -C root
 cd root && tar --exclude=zlib.h --exclude=zconf.h --exclude=gmp.h --exclude=curses.h --exclude=ncurses.h --exclude=c++ --exclude=g++ -czf ../../downloads/freebsd-runtime/freebsd-runtime-$version-$build.$arch.tar.gz {,usr/}lib/{lib{c,c_r,m,pthread}{.a,.so{,.*}},crt{i,n,1}.o} usr/include
 #rm -rf $tmp
 '''
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gub/gub_log.py	Sun Mar 08 21:59:33 2015 +0900
@@ -0,0 +1,225 @@
+import time
+import sys
+import os
+#
+from gub import misc
+
+'''
+TODO: if we need more granularity, it is better to look at the stack
+trace during a log call (), and have per .py file settings.
+'''
+
+default_logger = None
+default_logger_interface = None
+
+name_to_loglevel_mapping = {'quiet': 0,
+         'error': 0,
+         'stage': 0,
+         'info': 1,
+         'harmless': 2,
+         'verbose': 2,
+         'warning': 1,
+         'command': 3,
+         'action': 2,
+         'output': 4,
+         'debug': 5}
+
+def now ():
+    return time.asctime (time.localtime ())
+
+
+class AbstractCommandLogger:
+    """A logger takes care of the mechanics of storing and/or showing
+    messages when approppriate.
+    """
+    def __init__ (self):
+        class Writer:
+            def __init__ (this, level):
+                this.level = level
+            def write (this, message):
+                self.write_log (message, this.level)
+        self.error = Writer ('error')
+        self.stage = Writer ('stage')
+        self.info = Writer ('info')
+        self.harmless = Writer ('harmless')
+        self.verbose = Writer ('verbose')
+        self.warning = Writer ('warning')
+        self.command = Writer ('command')
+        self.output = Writer ('output')
+        self.debug = Writer ('debug')
+    def verbose_flag (self):
+        return ''
+    def read_tail (self, size=0, lines=0):
+        return ['tail']
+    def write_log (self, message, message_level):
+        pass
+    def log_env (self, env):
+        pass
+    def write_multilevel_message (self, message_types):
+        pass
+    
+class NullCommandLogger (AbstractCommandLogger):
+    pass
+
+class CommandLogger (AbstractCommandLogger):
+    def __init__ (self, log_file_name, threshold):
+        AbstractCommandLogger.__init__ (self)
+        # only print message under THRESHOLD.
+        self.threshold = threshold
+        self.log_file = None
+        self.log_file_name = log_file_name
+        self.relative_log_name = log_file_name
+
+        if log_file_name:
+            self.relative_log_name = log_file_name.replace (os.getcwd () + '/', '')
+            if default_logger_interface:
+                log_name = self.relative_log_name
+                default_logger_interface.info ('Log file: %(log_name)s\n' % locals ())
+            
+            directory = os.path.split (log_file_name)[0]
+            if not os.path.isdir (directory):
+                os.makedirs (directory)
+            self.log_file = open (self.log_file_name, 'a')
+        self.start_marker = ' * Starting build: %s\n' %  now ()
+        self.write_log_file ('\n\n' + self.start_marker)
+
+    # ugh: the following should not be in the base class.
+    def read_tail (self, size=0, lines=0):
+        if not size or not lines:
+            lines = 5 + 10 * self.threshold
+            size = 200 * lines
+        if self.log_file:
+            return misc.read_tail (self.log_file_name, size, lines,
+                                   self.start_marker)
+        else:
+            return ['(no log)']
+
+    def dump_tail (self, output):
+        indent = '    '
+        tail = ('%(indent)s' % locals ()
+                + ('\n%(indent)s' % locals ()).join (self.read_tail ())
+                .rstrip ())
+        log_name = self.relative_log_name
+        output.write ('Tail of %(log_name)s >>>>>>>>\n%(tail)s\n<<<<<<<< Tail of %(log_name)s\n' % locals ())
+
+    def write_multilevel_message (self, message_types):
+        """Given a set of messages display the one fitting with our
+        log level."""
+        leveled = [(name_to_loglevel_mapping[type], message)
+                   for (message, type) in message_types]
+        leveled.sort ()
+        leveled.reverse ()
+        self.write_log_file (leveled[0][1])
+
+        leveled = [msg for (l, msg) in leveled
+                   if l <= self.threshold]
+        if leveled:
+            sys.stderr.write (leveled[0])
+            
+    def write_log_file (self, message):
+        if self.log_file:
+            self.log_file.write (message)
+            self.log_file.flush ()
+
+    def write_log (self, message, message_type):
+        assert type (message_type) == str
+        if not message:
+            return 0
+        message_level = name_to_loglevel_mapping[message_type]
+        if message_level <= self.threshold:
+            sys.stderr.write (message)
+
+        self.write_log_file (message)
+
+    def verbose_flag (self):
+        if self.threshold >= name_to_loglevel_mapping['output']:
+            return ' -v'
+        return ''
+
+    def log_env (self, env):
+        if self.threshold >= name_to_loglevel_mapping['debug']:
+            keys = list (env.keys ())
+            keys.sort ()
+            for k in keys:
+                self.write_log ('%s=%s\n' % (k, env[k]), 'debug')
+            self.write_log ('export %s\n' % ' '.join (keys), 'debug')
+
+    def show_logfile (self):
+        if self.log_file_name:
+            sys.stdout.write ('Logfile: %s\n' % self.log_file_name)
+
+
+class LoggerInterface:
+    """LoggerInterface provides syntacic sugar for different types of messages."""
+    
+    def __init__ (self, logger):
+        self.logger = logger
+        
+    # fixme: repetitive code.
+    def action (self, str):
+        self.logger.write_log (str, 'action')
+
+    def stage (self, str):
+        self.logger.write_log (str, 'stage')
+
+    def error (self, str):
+        self.logger.write_log (str, 'error')
+
+    def info (self, str):
+        self.logger.write_log (str, 'info')
+
+    def command (self, str):
+        self.logger.write_log (str, 'command')
+
+    def debug (self, str):
+        self.logger.write_log (str, 'debug')
+
+    def warning (self, str):
+        self.logger.write_log (str, 'warning')
+
+    def harmless (self, str):
+        self.logger.write_log (str, 'harmless')
+
+    def verbose (self, str):
+        self.logger.write_log (str, 'verbose')
+
+    def output (self, str):
+        self.logger.write_log (str, 'output')
+
+    def verbose_flag (self):
+        return self.logger.verbose_flag ()
+    # end fixme
+
+def get_numeric_loglevel (name):
+    return name_to_loglevel_mapping[name]
+
+default_logger = None
+default_logger_interface = None
+action = None
+command = None
+debug = None
+error = None
+harmless = None
+info = None
+stage = None
+verbose = None
+warning = None
+
+def set_default_log (name, level):
+    global default_logger, default_logger_interface
+    global action, command, debug, error, harmless, info, stage, verbose, warning
+    default_logger = CommandLogger (name, level)
+    default_logger_interface = LoggerInterface (default_logger)
+    action = default_logger_interface.action
+    command = default_logger_interface.command
+    debug = default_logger_interface.debug
+    error = default_logger_interface.error
+    harmless = default_logger_interface.harmless
+    info = default_logger_interface.info
+    stage = default_logger_interface.stage
+    verbose = default_logger_interface.verbose
+    warning = default_logger_interface.warning
+    return default_logger
+
+# ugh, makeme optional?
+set_default_log ('', 0)
--- a/gub/gup.py	Sun May 29 12:49:02 2011 +0200
+++ b/gub/gup.py	Sun Mar 08 21:59:33 2015 +0900
@@ -19,7 +19,7 @@
 from gub.db import db
 from gub import dependency
 from gub import locker
-from gub import logging
+from gub import gub_log
 from gub import loggedos
 from gub import misc
 import gub.settings
@@ -51,7 +51,7 @@
         self.lock_file = self.root + '.lock'
         self.lock = locker.Locker (self.lock_file)
         if clean:
-            loggedos.system (logging.default_logger,
+            loggedos.system (gub_log.default_logger,
                              'rm -fr %s' % self.config)
         self.make_dirs ()
         files_db = self.config + '/files.db'
@@ -71,10 +71,10 @@
 
     def make_dirs (self):
         if not os.path.isdir (self.config):
-            loggedos.system (logging.default_logger,
+            loggedos.system (gub_log.default_logger,
                              'mkdir -p %s' % self.config)
         if not os.path.isdir (self.root):
-            loggedos.system (logging.default_logger,
+            loggedos.system (gub_log.default_logger,
                              'mkdir -p %s' % self.root)
 
     def package_installed_files (self, name):
@@ -96,11 +96,11 @@
         return name in self.installed_files ()
 
     def install_tarball (self, ball, name, prefix_dir):
-        logging.action ('untarring: %(ball)s\n' % locals ())
+        gub_log.action ('untarring: %(ball)s\n' % locals ())
 
         _z = misc.compression_flag (ball)
         _v = '' # self.os_interface.verbose_flag ()
-        lst = loggedos.read_pipe (logging.default_logger,
+        lst = loggedos.read_pipe (gub_log.default_logger,
                                   'tar -t%(_z)s -f "%(ball)s"'
                                   % locals ()).split ('\n')
         conflicts = False
@@ -111,14 +111,14 @@
             if (':' + f + ':' in installed_files_string
                 and not os.path.isdir (os.path.join (self.root, f))):
                 package = self._file_package_db[f]
-                logging.error ('already have file %(f)s: %(package)s\n'
+                gub_log.error ('already have file %(f)s: %(package)s\n'
                                % locals ())
                 conflicts = True
-        logging.command ('GUP: for f in lst:' + misc.timing () + '\n')
+        gub_log.command ('GUP: for f in lst:' + misc.timing () + '\n')
         if conflicts and not self.is_distro:
             raise Exception ('Duplicate files found.')
         root = self.root
-        loggedos.system (logging.default_logger,
+        loggedos.system (gub_log.default_logger,
                          # cd %(root)s to avoid open(2) of cwd, see
                          # http://lists.gnu.org/archive/html/lilypond-devel/2009-03/msg00304.html
                          'cd %(root)s && tar -C %(root)s -p -x%(_z)s%(_v)s -f %(ball)s'
@@ -136,7 +136,7 @@
                 self._file_package_db[f] = name
 
         if os.path.exists ('%(root)s/usr/etc/postinstall/%(name)s' % locals ()):
-            loggedos.system (logging.default_logger,
+            loggedos.system (gub_log.default_logger,
                              'PATH=%(root)s/usr/bin:$PATH %(root)s/usr/etc/postinstall/%(name)s && mv %(root)s/usr/etc/postinstall/%(name)s %(root)s/usr/etc/postinstall/%(name)s.done || :' % locals ())
 
     def libtool_la_fixup (self, root, file):
@@ -145,7 +145,7 @@
         if file.startswith ('./'):
             file = file[2:]
         dir = os.path.dirname (file)
-        loggedos.file_sub (logging.default_logger,
+        loggedos.file_sub (gub_log.default_logger,
                            [('^libdir=.*',
                              """libdir='%(root)s/%(dir)s'""" % locals ()
                              ),],
@@ -163,14 +163,14 @@
         dir = os.path.dirname (file)
         if '%' in prefix_dir or not prefix_dir:
             barf
-        loggedos.file_sub (logging.default_logger,
+        loggedos.file_sub (gub_log.default_logger,
                            [('(-I|-L) */usr',
                              '''\\1%(root)s%(prefix_dir)s''' % locals ()
                              ),],
                            '%(root)s/%(file)s' % locals ())
 
     def uninstall_package (self, name):
-        logging.action ('uninstalling package: %s\n' % name)
+        gub_log.action ('uninstalling package: %s\n' % name)
 
         lst = self.package_installed_files (name)
 
@@ -196,7 +196,7 @@
             try:
                 os.rmdir (d)
             except OSError:
-                logging.verbose ('warning: %(d)s not empty\n' % locals ())
+                gub_log.verbose ('warning: %(d)s not empty\n' % locals ())
         for f in lst:
             ## fixme (?)  -- when is f == ''
             if not f or f.endswith ('/'):
@@ -224,16 +224,16 @@
             nm = d['split_name']
         if 0 and (nm in self._packages):
             if self._packages[nm]['spec_checksum'] != d['spec_checksum']:
-                logging.info ('******** checksum of %s changed!\n\n' % nm)
+                gub_log.info ('******** checksum of %s changed!\n\n' % nm)
 
             if self._packages[nm]['cross_checksum'] != d['cross_checksum']:
-                logging.info ('******** checksum of cross changed for %s\n' % nm)
+                gub_log.info ('******** checksum of cross changed for %s\n' % nm)
             return
         self._packages[nm] = d
         
     def register_package_header (self, package_hdr, branch_dict):
         if self.verbose:
-            logging.info ('reading package header: %s\n'
+            gub_log.info ('reading package header: %s\n'
                           % package_hdr.__repr__ ())
 
         str = open (package_hdr).read ()
@@ -247,13 +247,13 @@
             if ':' in branch:
                 (remote_branch, branch) = tuple (branch.split (':'))
             if branch != vc_branch:
-                logging.error ('package of branch: %(vc_branch)s, expecting: %(branch)s\n' % locals ())
-                logging.error ('ignoring header: %(header_name)s\n' % locals ())
+                gub_log.error ('package of branch: %(vc_branch)s, expecting: %(branch)s\n' % locals ())
+                gub_log.error ('ignoring header: %(header_name)s\n' % locals ())
                 return
         elif d['vc_branch']:
-            logging.error ('no branch for package: %(name)s\n' % locals ())
-            logging.error ('ignoring header: %(header_name)s\n' % locals ())
-            logging.error ('available branch: %(vc_branch)s\n' % locals ())
+            gub_log.error ('no branch for package: %(name)s\n' % locals ())
+            gub_log.error ('ignoring header: %(header_name)s\n' % locals ())
+            gub_log.error ('available branch: %(vc_branch)s\n' % locals ())
             return
         
         name = d['split_name']
@@ -261,7 +261,7 @@
           ## FIXME ?
           if name in self._package_dict_db:
               if str != self._package_dict_db[name]:
-                  logging.info ("package header changed for %s\n" % name)
+                  gub_log.info ("package header changed for %s\n" % name)
 
               return
 
@@ -326,10 +326,10 @@
     def install_package (self, name):
         if self.is_installed (name):
             return
-        logging.action ('installing package: %s\n' % name)
+        gub_log.action ('installing package: %s\n' % name)
         if self.is_installed (name):
             message = 'already have package: ' + name + '\n'
-            logging.error (message)
+            gub_log.error (message)
             raise Exception (message)
         d = self._packages[name]
         ball = '%(split_ball)s' % d
@@ -359,7 +359,7 @@
             return [misc.strip_platform (x)
                     for x in self.dict_dependencies (self._packages[name])]
         except KeyError:
-            logging.error ('no such package: %(name)s\n' % locals ())
+            gub_log.error ('no such package: %(name)s\n' % locals ())
             return list ()
 
     def dict_dependencies (self, dict):
@@ -427,15 +427,17 @@
     # FIXME: rename packages, fragile
     if [True for x in [
             'freebsd-runtime',
-            'mingw-runtime',
             'lilypond-doc',
             'cygwin::',
             ] if x in name]:
         return name
+    if re.search('mingw-w64-runtime$', name):
+        return name
     name = re.sub ('(gcc(-.*)?)-c[+][+]-runtime', r'\1', name)
     name = re.sub ('-devel$', '', name)
     name = re.sub ('-runtime$', '', name)
     name = re.sub ('-doc$', '', name)
+    name = re.sub ('(mingw-w64-runtime(-.*)?)-winpthread-dll', r'\1', name)
     return name
 
 def get_source_packages (settings, const_todo):
--- a/gub/installer.py	Sun May 29 12:49:02 2011 +0200
+++ b/gub/installer.py	Sun Mar 08 21:59:33 2015 +0900
@@ -326,7 +326,7 @@
 rm -f %(bundle_zip)s 
 rm -rf %(darwin_bundle_dir)s
 # FIXME: ask TarBall where source lives
-tar -C %(installerdir)s -zxf %(downloads)s/osx-lilypad/osx-lilypad-universal-%(osx_lilypad_version)s.tar.gz
+LIBRESTRICT_IGNORE=%(tools_prefix)s/bin/tar tar -C %(installerdir)s -zxf %(downloads)s/osx-lilypad/osx-lilypad-universal-%(osx_lilypad_version)s.tar.gz
 mkdir -p %(darwin_bundle_dir)s/Contents/Resources
 touch %(darwin_bundle_dir)s/Contents/Info.plist # FIXME - this may need content
 touch %(darwin_bundle_dir)s/Contents/Resources/Credits.html # FIXME - this may need content
--- a/gub/loggedos.py	Sun May 29 12:49:02 2011 +0200
+++ b/gub/loggedos.py	Sun Mar 08 21:59:33 2015 +0900
@@ -3,13 +3,13 @@
 import subprocess
 import sys
 #
-from gub import logging
+from gub import gub_log
 from gub import misc
 
 ########
 # logged aliases to misc.py
 def logged_function (logger, function, *args, **kwargs):
-    if not isinstance (logger, logging.AbstractCommandLogger):
+    if not isinstance (logger, gub_log.AbstractCommandLogger):
         raise Exception ('NOT a logger:' + str (logger))
     logger.write_multilevel_message (
         [('Running %s\n' % function.__name__, 'action'),
@@ -97,14 +97,14 @@
 
 def test ():
     import unittest
-    from gub import logging
+    from gub import gub_log
 
     # This is not a unittest, it only serves as a smoke test
 
     class Test_loggedos (unittest.TestCase):
         def setUp (self):
             # Urg: global??
-            self.logger = logging.set_default_log ('downloads/test/test.log', 5)
+            self.logger = gub_log.set_default_log ('downloads/test/test.log', 5)
             self.loggedos = Module('loggedos')
         def testDumpFile (self):
             self.loggedos.dump_file (self.logger, 'boe', 'downloads/test/a')
--- a/gub/logging.py	Sun May 29 12:49:02 2011 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,225 +0,0 @@
-import time
-import sys
-import os
-#
-from gub import misc
-
-'''
-TODO: if we need more granularity, it is better to look at the stack
-trace during a log call (), and have per .py file settings.
-'''
-
-default_logger = None
-default_logger_interface = None
-
-name_to_loglevel_mapping = {'quiet': 0,
-         'error': 0,
-         'stage': 0,
-         'info': 1,
-         'harmless': 2,
-         'verbose': 2,
-         'warning': 1,
-         'command': 3,
-         'action': 2,
-         'output': 4,
-         'debug': 5}
-
-def now ():
-    return time.asctime (time.localtime ())
-
-
-class AbstractCommandLogger:
-    """A logger takes care of the mechanics of storing and/or showing
-    messages when approppriate.
-    """
-    def __init__ (self):
-        class Writer:
-            def __init__ (this, level):
-                this.level = level
-            def write (this, message):
-                self.write_log (message, this.level)
-        self.error = Writer ('error')
-        self.stage = Writer ('stage')
-        self.info = Writer ('info')
-        self.harmless = Writer ('harmless')
-        self.verbose = Writer ('verbose')
-        self.warning = Writer ('warning')
-        self.command = Writer ('command')
-        self.output = Writer ('output')
-        self.debug = Writer ('debug')
-    def verbose_flag (self):
-        return ''
-    def read_tail (self, size=0, lines=0):
-        return ['tail']
-    def write_log (self, message, message_level):
-        pass
-    def log_env (self, env):
-        pass
-    def write_multilevel_message (self, message_types):
-        pass
-    
-class NullCommandLogger (AbstractCommandLogger):
-    pass
-
-class CommandLogger (AbstractCommandLogger):
-    def __init__ (self, log_file_name, threshold):
-        AbstractCommandLogger.__init__ (self)
-        # only print message under THRESHOLD.
-        self.threshold = threshold
-        self.log_file = None
-        self.log_file_name = log_file_name
-        self.relative_log_name = log_file_name
-
-        if log_file_name:
-            self.relative_log_name = log_file_name.replace (os.getcwd () + '/', '')
-            if default_logger_interface:
-                log_name = self.relative_log_name
-                default_logger_interface.info ('Log file: %(log_name)s\n' % locals ())
-            
-            directory = os.path.split (log_file_name)[0]
-            if not os.path.isdir (directory):
-                os.makedirs (directory)
-            self.log_file = open (self.log_file_name, 'a')
-        self.start_marker = ' * Starting build: %s\n' %  now ()
-        self.write_log_file ('\n\n' + self.start_marker)
-
-    # ugh: the following should not be in the base class.
-    def read_tail (self, size=0, lines=0):
-        if not size or not lines:
-            lines = 5 + 10 * self.threshold
-            size = 200 * lines
-        if self.log_file:
-            return misc.read_tail (self.log_file_name, size, lines,
-                                   self.start_marker)
-        else:
-            return ['(no log)']
-
-    def dump_tail (self, output):
-        indent = '    '
-        tail = ('%(indent)s' % locals ()
-                + ('\n%(indent)s' % locals ()).join (self.read_tail ())
-                .rstrip ())
-        log_name = self.relative_log_name
-        output.write ('Tail of %(log_name)s >>>>>>>>\n%(tail)s\n<<<<<<<< Tail of %(log_name)s\n' % locals ())
-
-    def write_multilevel_message (self, message_types):
-        """Given a set of messages display the one fitting with our
-        log level."""
-        leveled = [(name_to_loglevel_mapping[type], message)
-                   for (message, type) in message_types]
-        leveled.sort ()
-        leveled.reverse ()
-        self.write_log_file (leveled[0][1])
-
-        leveled = [msg for (l, msg) in leveled
-                   if l <= self.threshold]
-        if leveled:
-            sys.stderr.write (leveled[0])
-            
-    def write_log_file (self, message):
-        if self.log_file:
-            self.log_file.write (message)
-            self.log_file.flush ()
-
-    def write_log (self, message, message_type):
-        assert type (message_type) == str
-        if not message:
-            return 0
-        message_level = name_to_loglevel_mapping[message_type]
-        if message_level <= self.threshold:
-            sys.stderr.write (message)
-
-        self.write_log_file (message)
-
-    def verbose_flag (self):
-        if self.threshold >= name_to_loglevel_mapping['output']:
-            return ' -v'
-        return ''
-
-    def log_env (self, env):
-        if self.threshold >= name_to_loglevel_mapping['debug']:
-            keys = list (env.keys ())
-            keys.sort ()
-            for k in keys:
-                self.write_log ('%s=%s\n' % (k, env[k]), 'debug')
-            self.write_log ('export %s\n' % ' '.join (keys), 'debug')
-
-    def show_logfile (self):
-        if self.log_file_name:
-            sys.stdout.write ('Logfile: %s\n' % self.log_file_name)
-
-
-class LoggerInterface:
-    """LoggerInterface provides syntacic sugar for different types of messages."""
-    
-    def __init__ (self, logger):
-        self.logger = logger
-        
-    # fixme: repetitive code.
-    def action (self, str):
-        self.logger.write_log (str, 'action')
-
-    def stage (self, str):
-        self.logger.write_log (str, 'stage')
-
-    def error (self, str):
-        self.logger.write_log (str, 'error')
-
-    def info (self, str):
-        self.logger.write_log (str, 'info')
-
-    def command (self, str):
-        self.logger.write_log (str, 'command')
-
-    def debug (self, str):
-        self.logger.write_log (str, 'debug')
-
-    def warning (self, str):
-        self.logger.write_log (str, 'warning')
-
-    def harmless (self, str):
-        self.logger.write_log (str, 'harmless')
-
-    def verbose (self, str):
-        self.logger.write_log (str, 'verbose')
-
-    def output (self, str):
-        self.logger.write_log (str, 'output')
-
-    def verbose_flag (self):
-        return self.logger.verbose_flag ()
-    # end fixme
-
-def get_numeric_loglevel (name):
-    return name_to_loglevel_mapping[name]
-
-default_logger = None
-default_logger_interface = None
-action = None
-command = None
-debug = None
-error = None
-harmless = None
-info = None
-stage = None
-verbose = None
-warning = None
-
-def set_default_log (name, level):
-    global default_logger, default_logger_interface
-    global action, command, debug, error, harmless, info, stage, verbose, warning
-    default_logger = CommandLogger (name, level)
-    default_logger_interface = LoggerInterface (default_logger)
-    action = default_logger_interface.action
-    command = default_logger_interface.command
-    debug = default_logger_interface.debug
-    error = default_logger_interface.error
-    harmless = default_logger_interface.harmless
-    info = default_logger_interface.info
-    stage = default_logger_interface.stage
-    verbose = default_logger_interface.verbose
-    warning = default_logger_interface.warning
-    return default_logger
-
-# ugh, makeme optional?
-set_default_log ('', 0)
--- a/gub/misc.py	Sun May 29 12:49:02 2011 +0200
+++ b/gub/misc.py	Sun Mar 08 21:59:33 2015 +0900
@@ -211,12 +211,18 @@
         return ' -z'
     elif ball.endswith ('bz2'):
         return ' -j'
+    elif (ball.endswith ('xz')
+        or ball.endswith ('lzma')
+        or ball.endswith ('txz')
+        or ball.endswith ('tlz')):
+        return ' -J'
     return ''
 
 def unzip_command (ball):
     return {
         '-z' : 'gzip -dc',
         '-j' : 'bzip2 -dc',
+        '-J' : 'xz -dc',
         '': 'cat'
         }[compression_flag (ball).strip ()]
         
--- a/gub/repository.py	Sun May 29 12:49:02 2011 +0200
+++ b/gub/repository.py	Sun Mar 08 21:59:33 2015 +0900
@@ -42,7 +42,7 @@
 from gub import misc
 from gub import locker
 from gub import tztime
-from gub import logging
+from gub import gub_log
 from gub import loggedos
 
 class UnknownVcSystem (Exception):
@@ -158,7 +158,7 @@
     def __init__ (self, dir, source):
         self.settings = None
         self.source = source
-        self.logger = logging.default_logger
+        self.logger = gub_log.default_logger
         self.system = self.logged_indirection (loggedos.system)
         self._read_file = self.logged_indirection (loggedos.read_file)
         self.download_url = self.logged_indirection (loggedos.download_url)
@@ -237,6 +237,8 @@
         return os.path.splitext (os.path.basename (self.source))[0]
     def download (self):
         pass
+    def post_download_hook (self):
+        pass
     def checksum (self):
         '''A checksum that characterizes the entire repository.
 
@@ -355,6 +357,7 @@
         else:
             dir = self.dir
             self.system ('darcs get %(source)s %(dir)s' % locals ())
+        self.post_download_hook ()
         
     def is_tracking (self):
         return True
@@ -414,7 +417,11 @@
          return url and (url.endswith (rety.vc_system)
                          or url.endswith (rety.vc_system + '.gz')
                          or url.endswith ('.tgz')
-                         or url.endswith (rety.vc_system + '.bz2'))
+                         or url.endswith (rety.vc_system + '.bz2')
+                         or url.endswith (rety.vc_system + '.xz')
+                         or url.endswith ('.txz')
+                         or url.endswith (rety.vc_system + '.lzma')
+                         or url.endswith ('.tlz'))
 
     def migrate (self, dir, dir_slash_vcs):
         pass
@@ -449,6 +456,7 @@
         if self.is_downloaded ():
             return
         self.download_url (self.source, self.dir)
+        self.post_download_hook ()
 
     def checksum (self):
         return misc.ball_basename (self._file_name ())
@@ -536,6 +544,31 @@
 
 RepositoryProxy.register (ZipFile)
 
+class SevenZFile (TarBall):
+    vc_system = '.7z'
+
+    @staticmethod
+    def create (rety, dir, source, branch='', module='', revision='', parameters=list ()):
+        return SevenZFile (dir, source)
+
+    @staticmethod
+    def check_suffix (rety, url):
+         return url and url.endswith (rety.vc_system)
+
+    # TODO: s/url/source
+    def __init__ (self, dir, url, version=None, strip_components=0):
+        TarBall.__init__ (self, dir, url, version, strip_components)
+
+    def _unpack (self, destdir, tarball):
+        strip_components = self.strip_components
+        # fixme
+        #if self.oslog:  #urg, will be fixed when .source is mandatory
+        #    _v = self.oslog.verbose_flag ()
+        _v = ''   #     self.oslog.verbose_flag ()
+        self.system ('7za x %(_v)s %(tarball)s -o%(destdir)s' % locals ())
+
+RepositoryProxy.register (SevenZFile)
+
 class Git (Repository):
     vc_system = '.git'
 
@@ -573,7 +606,8 @@
         # We cannot do a shallow download if we're not tracking
         # we have to get at least enough history to include the
         # fixed committish ... :-)
-        self.shallow = self.is_tracking ()
+        #no shallow# self.shallow = self.is_tracking ()
+        self.shallow = False
         assert self.url_host
         assert self.url_dir
     def version (self):
@@ -643,6 +677,7 @@
         if self.branch and not (self.revision and self.is_downloaded ()):
             self.git ('fetch %(source)s %(branch)s:refs/heads/%(url_host)s/%(url_dir)s/%(branch)s' % self.__dict__)
         self.checksums = {}
+        self.post_download_hook ()
     def get_ref (self):
         if not self.revision:
             return self.branch_dir ().replace ('//', '/')
@@ -848,6 +883,7 @@
 
         open (dir + '/.vc-checksum', 'w').write (cs)
         open (dir + '/.vc-timestamp', 'w').write ('%d' % stamp)
+        self.post_download_hook ()
         
     def cvs_dirs (self, branch_dir):
         retval =  []
@@ -916,6 +952,7 @@
             self._checkout ()
         elif self._current_revision () != self.revision:
             self._update (self.revision)
+        self.post_download_hook ()
         self.info ('downloaded version: ' + self.version ())
 
     def _copy_working_dir (self, dir, copy):
--- a/gub/settings.py	Sun May 29 12:49:02 2011 +0200
+++ b/gub/settings.py	Sun Mar 08 21:59:33 2015 +0900
@@ -9,7 +9,7 @@
 from gub import misc
 from gub import sources
 from gub import loggedos
-from gub import logging
+from gub import gub_log
 
 platforms = {
     'debian': 'i686-linux',
@@ -17,13 +17,13 @@
     'debian-mipsel': 'mipsel-linux',
     'debian-x86': 'i686-linux',
     'cygwin': 'i686-cygwin',
-    'darwin-ppc': 'powerpc-apple-darwin7',
+    'darwin-ppc': 'powerpc-apple-darwin8',
     'darwin-x86': 'i686-apple-darwin8',
 
     'freebsd4-x86': 'i686-freebsd4',
     'freebsd6-x86': 'i686-freebsd6',
 
-    'freebsd-x86': 'i686-freebsd4',
+    'freebsd-x86': 'i686-freebsd6',
     'freebsd-64': 'x86_64-freebsd6',
 
     'linux-arm': 'arm-linux',
@@ -167,7 +167,7 @@
         self.uploads = self.workdir_prefix + '/uploads'
         self.platform_uploads = self.uploads + '/' + self.platform
 
-        info = logging.default_logger.harmless
+        info = gub_log.default_logger.harmless
         info.write ('\n')
         info.write ('SYSTEM_ROOT=%(system_root)s\n' % self.__dict__)
         info.write ('SYSTEM_PREFIX=%(system_prefix)s\n' % self.__dict__)
@@ -234,7 +234,7 @@
                 self.build_hardware_bits = '64'
         except:
             try:
-                cpu = misc.read_pipe ('sysctl -b hw.machine', logger=logging.default_logger.harmless)
+                cpu = misc.read_pipe ('sysctl -b hw.machine', logger=gub_log.default_logger.harmless)
                 if cpu in ('amd64', 'ia64'):
                     self.build_hardware_bits = '64'
             except:
@@ -282,7 +282,7 @@
             ):
             dir = self.__dict__[a]
             if not os.path.isdir (dir):
-                loggedos.makedirs (logging.default_logger, dir)
+                loggedos.makedirs (gub_log.default_logger, dir)
 
     def dependency_url (self, string):
         # FIXME: read from settings.rc, take platform into account
--- a/gub/specs/cross/binutils.py	Sun May 29 12:49:02 2011 +0200
+++ b/gub/specs/cross/binutils.py	Sun Mar 08 21:59:33 2015 +0900
@@ -4,10 +4,11 @@
 from gub.specs import binutils
 
 class Binutils (cross.AutoBuild):
-    source = 'http://ftp.gnu.org/pub/gnu/binutils/binutils-2.19.1.tar.gz'
+    source = 'http://ftp.gnu.org/pub/gnu/binutils/binutils-2.25.tar.bz2'
     patches = []
     dependencies = [
         'tools::zlib',
+        'tools::texinfo',
             ]
     # Block usage of libz.so during configure, which may not be
     # available in the library path.
@@ -36,15 +37,16 @@
         binutils.install_missing_plain_binaries (self)
         binutils.install_librestrict_stat_helpers (self)
         binutils.remove_fedora9_untwanted_but_mysteriously_built_libiberies (self)
+        remove_fedora17_untwanted_but_mysteriously_built_libiberies (self)
 
-class Binutils__linux__ppc (Binutils):
-    patches = Binutils.patches + [
-        'binutils-2.18-werror-ppc.patch'
-        ]
+def remove_fedora17_untwanted_but_mysteriously_built_libiberies (self):
+    self.system ('rm -f %(install_prefix)s%(cross_dir)s/lib/libiberty.a')
+    self.system ('rm -f %(install_prefix)s%(cross_dir)s/lib64/libiberty.a')
 
 class Binutils__mingw (Binutils):
     dependencies = Binutils.dependencies + [
             'tools::libtool',
+            'system::iconv',
             ]
     def configure (self):
         Binutils.configure (self)
--- a/gub/specs/cross/gcc-core.py	Sun May 29 12:49:02 2011 +0200
+++ b/gub/specs/cross/gcc-core.py	Sun Mar 08 21:59:33 2015 +0900
@@ -3,7 +3,6 @@
 from gub import misc
         
 class Gcc_core (gcc.Gcc__from__source):
-    source = 'http://ftp.gnu.org/pub/gnu/gcc/gcc-4.1.1/gcc-4.1.1.tar.bz2'
     dependencies = [x for x in gcc.Gcc__from__source.dependencies
                     if x != 'glibc-core']
     subpackage_names = ['']
@@ -24,12 +23,19 @@
 --enable-threads=no
 --without-headers
 --disable-shared
+--disable-decimal-float
 '''))
-    make_flags = gcc.Gcc.make_flags + ' all-gcc'
+    make_flags = gcc.Gcc.make_flags + ' all-gcc all-target-libgcc'
     install_flags = (gcc.Gcc.install_flags
-                     .replace (' install', ' install-gcc'))
+                     .replace (' install',
+                               ' install-gcc install-target-libgcc'))
     # Gcc moves libs into system lib places, which will
     # make gcc-core conflict with gcc.
-    install = cross.AutoBuild.install
+    def install (self):
+        cross.AutoBuild.install (self)
+        self.system('''
+mkdir -p %(install_prefix)s%(cross_dir)s/lib/gcc/%(target_architecture)s/%(full_version)s/include/
+ln -s ../include-fixed/limits.h %(install_prefix)s%(cross_dir)s/lib/gcc/%(target_architecture)s/%(full_version)s/include/limits.h
+''')
     def languages (self):
         return  ['c']
--- a/gub/specs/cross/gcc.py	Sun May 29 12:49:02 2011 +0200
+++ b/gub/specs/cross/gcc.py	Sun Mar 08 21:59:33 2015 +0900
@@ -8,8 +8,19 @@
 from gub.specs import gcc
 
 class Gcc (cross.AutoBuild):
-    source = 'http://ftp.gnu.org/pub/gnu/gcc/gcc-4.1.2/gcc-4.1.2.tar.bz2'
-    dependencies = ['cross/binutils']
+    source = 'http://ftp.gnu.org/pub/gnu/gcc/gcc-4.9.2/gcc-4.9.2.tar.bz2'
+    dependencies = [
+        'cross/binutils',
+        'system::gcc',
+        'system::g++',
+        'tools::gmp',
+        'tools::mpfr',
+        'tools::mpc',
+        'tools::gawk',
+    ]
+    patches = ['gcc-4.8.2-libstdc++-debug-path.patch']
+    configure_command = (''' LDFLAGS='-L%(tools_prefix)s/lib %(rpath)s' '''
+                         + cross.AutoBuild.configure_command)
     configure_flags = (cross.AutoBuild.configure_flags
                 + '%(enable_languages)s'
                 + ' --enable-static'
@@ -33,7 +44,10 @@
     def get_subpackage_definitions (self):
         d = cross.AutoBuild.get_subpackage_definitions (self)
         prefix_dir = self.settings.prefix_dir
-        d['c++-runtime'] = [prefix_dir + '/lib/libstdc++.so*']
+        d['c++-runtime'] = [
+            prefix_dir + '/lib/libstdc++.so*',
+            prefix_dir + '/lib/libgcc_s.so*',
+        ]
         return d
     def languages (self):
         return ['c', 'c++']
@@ -58,12 +72,20 @@
 class Gcc__from__source (Gcc):
     dependencies = (Gcc.dependencies
                     + ['cross/gcc-core', 'glibc-core'])
+    def __init__ (self, settings, source):
+        Gcc.__init__ (self, settings, source)
+        if 'i686-linux' in self.settings.build_architecture:
+            if 'i686-linux' in self.settings.target_architecture:
+                self.configure_flags += ' --build=i686-unknown-linux-gnu '
     #FIXME: merge all configure_command settings with Gcc
     configure_flags = (Gcc.configure_flags
                 + misc.join_lines ('''
 --with-local-prefix=%(system_prefix)s
 --disable-multilib
 --disable-nls
+--disable-libitm
+--disable-libsanitizer
+--disable-libcilkrts
 --enable-threads=posix
 --enable-__cxa_atexit
 --enable-symvers=gnu
@@ -73,39 +95,43 @@
 '''))
     def get_conflict_dict (self):
         return {'': ['cross/gcc-core'], 'doc': ['cross/gcc-core'], 'runtime': ['cross/gcc-core']}
+    def install (self):
+        Gcc.install (self)
+        self.system('''
+mkdir -p %(install_prefix)s%(cross_dir)s/lib/gcc/%(target_architecture)s/%(full_version)s/include/
+ln -s ../include-fixed/limits.h %(install_prefix)s%(cross_dir)s/lib/gcc/%(target_architecture)s/%(full_version)s/include/limits.h
+''')
 
 Gcc__linux = Gcc__from__source
 
+class Gcc__linux__ppc (Gcc__linux):
+    configure_flags = (Gcc__linux.configure_flags
+                + misc.join_lines ('''
+--disable-libatomic
+--disable-libgomp
+'''))
+
 class Gcc__mingw (Gcc):
-    source = 'http://ftp.gnu.org/pub/gnu/gcc/gcc-4.1.1/gcc-4.1.1.tar.bz2'
     dependencies = (Gcc.dependencies
-                + ['mingw-runtime', 'w32api']
+                + ['mingw-w64-runtime']
                 + ['tools::libtool'])
-    def patch (self):
-        Gcc.patch (self)
-        for f in ['%(srcdir)s/gcc/config/i386/mingw32.h',
-                  '%(srcdir)s/gcc/config/i386/t-mingw32']:
-            self.file_sub ([('/mingw/include','%(prefix_dir)s/include'),
-                            ('/mingw/lib','%(prefix_dir)s/lib'),
-                            ], f)
-    def STATIC_GXX_WIP_REMOVE_THIS_PREFIX_configure (self):
-        # leave this for now.
-        # lots of undefined refs.
-        # possibly try static libstc++ with gcc > 4.1.1
-        '''.libs/bitmap_allocator.o: In function `__gthread_mutex_init_function':
-/home/janneke/vc/gub/target/mingw/build/cross/gcc-4.1.1/i686-mingw32/libstdc++-v3/include/i686-mingw32/bits/gthr-default.h:463: undefined reference to `___gthr_win32_mutex_init_function'
-.libs/bitmap_allocator.o: In function `_ZN9__gnu_cxx9free_list6_M_getEj':
-/home/janneke/vc/gub/target/mingw/src/cross/gcc-4.1.1/libstdc++-v3/src/bitmap_allocator.cc:53: undefined reference to `__Unwind_SjLj_Register'
-
+    configure_flags = (Gcc.configure_flags
+                + misc.join_lines ('''
+--enable-threads=posix
+'''))
+    def get_subpackage_definitions (self):
+        d = cross.AutoBuild.get_subpackage_definitions (self)
+        prefix_dir = self.settings.prefix_dir
+        d['c++-runtime'] = [
+            prefix_dir + '/bin/libstdc++-*.dll',
+            prefix_dir + '/bin/libgcc_s_*.dll',
+        ]
+        return d
+    def install (self):
+        Gcc.install (self)
+        self.system('''
+mkdir -p %(install_prefix)s/bin/
+cp %(install_prefix)s/lib/libgcc_s_*.dll %(install_prefix)s/bin/
+cp %(install_prefix)s%(cross_dir)s/%(target_architecture)s/lib/libstdc++-*.dll %(install_prefix)s/bin/
 '''
-        Gcc.configure (self)
-        # Configure all subpackages, makes
-        # w32.libtool_fix_allow_undefined to find all libtool files
-        self.system ('cd %(builddir)s && make %(compile_flags)s configure-host configure-target')
-        # Must ONLY do target stuff, otherwise cross executables cannot find their libraries
-        # self.map_locate (lambda logger,file: build.libtool_update (logger, self.expand ('%(tools_prefix)s/bin/libtool'), file), '%(builddir)s/', 'libtool')
-        #self.map_locate (lambda logger, file: build.libtool_update (logger, self.expand ('%(tools_prefix)s/bin/libtool'), file), '%(builddir)s/i686-mingw32', 'libtool')
-        vars = ['CC', 'CXX', 'LTCC', 'LD', 'sys_lib_search_path_spec', 'sys_lib_dlsearch_path_spec', 'predep_objects', 'postdep_objects', 'predeps', 'postdeps', 'old_striplib', 'striplib']
-        self.map_locate (lambda logger, file: build.libtool_update_preserve_vars (logger, self.expand ('%(tools_prefix)s/bin/libtool'), vars, file), '%(builddir)s/i686-mingw32', 'libtool')
-        self.map_locate (lambda logger, file: build.libtool_force_infer_tag (logger, 'CXX', file), '%(builddir)s/i686-mingw32', 'libtool')
-
+        )
--- a/gub/specs/curl.py	Sun May 29 12:49:02 2011 +0200
+++ b/gub/specs/curl.py	Sun Mar 08 21:59:33 2015 +0900
@@ -3,7 +3,7 @@
 from gub import tools
 
 class Curl (target.AutoBuild):
-    source = 'http://curl.haxx.se/download/curl-7.19.0.tar.gz'
+    source = 'http://curl.haxx.se/download/curl-7.22.0.tar.gz'
     dependencies = ['tools::libtool']
     configure_flags = (tools.AutoBuild.configure_flags
                        + ' --without-openssl')
--- a/gub/specs/cygwin/cross/gcc.py	Sun May 29 12:49:02 2011 +0200
+++ b/gub/specs/cygwin/cross/gcc.py	Sun Mar 08 21:59:33 2015 +0900
@@ -6,15 +6,12 @@
 # http://gcc.gnu.org/PR24196
 #class this_works_but_has_string_exception_across_dll_bug_Gcc__cygwin (cross_gcc.Gcc__mingw):
 class Gcc__cygwin (cross_gcc.Gcc__mingw):
-#    source = 'http://ftp.gnu.org/pub/gnu/gcc/gcc-4.1.2/gcc-4.1.2.tar.bz2'
-    source = 'http://ftp.gnu.org/pub/gnu/gcc/gcc-4.3.4/gcc-4.3.4.tar.bz2'
-    patches = cross_gcc.Gcc__mingw.patches + [
-        'gcc-4.3.4-strsignal-cygwin.patch',
-        ]
+    patches = []
     dependencies = (cross_gcc.Gcc__mingw.dependencies
                     + ['cygwin',
                        'libiconv',
                        'libmpfr-devel',
+#                       'tools::mpfr', # ugh: use apt-get install libmpfr-dev
                        'w32api-in-usr-lib'])
     configure_flags = (cross_gcc.Gcc__mingw.configure_flags
                        + misc.join_lines ('''
@@ -28,8 +25,7 @@
 
 #class okGcc__cygwin (cross_gcc.Gcc):
 class above_is_okay_now_cygwin_has_switched_Gcc__cygwin (cross_gcc.Gcc):
-    source = 'http://ftp.gnu.org/pub/gnu/gcc/gcc-3.4.4/gcc-3.4.4.tar.bz2'
-    patches = ['gcc-3.4.4-cygwin-3.patch']
+    patches = []
     dependencies = (cross_gcc.Gcc.dependencies
                     + ['cygwin', 'w32api-in-usr-lib'])
     # We must use --with-newlib, otherwise configure fails:
--- a/gub/specs/cygwin/gmp.py	Sun May 29 12:49:02 2011 +0200
+++ b/gub/specs/cygwin/gmp.py	Sun Mar 08 21:59:33 2015 +0900
@@ -4,7 +4,7 @@
 from gub.specs import gmp
 
 class Gmp (gmp.Gmp):
-    source = 'http://ftp.gnu.org/pub/gnu/gmp/gmp-4.1.4.tar.gz'
-    patches = ['gmp-4.1.4-1.patch']
+    source = 'http://ftp.gnu.org/pub/gnu/gmp/gmp-4.2.1.tar.gz'
+    patches = []
     dependencies = gup.gub_to_distro_deps (gmp.Gmp.dependencies,
                                            cygwin.gub_to_distro_dict)
--- a/gub/specs/cygwin/lilypond.py	Sun May 29 12:49:02 2011 +0200
+++ b/gub/specs/cygwin/lilypond.py	Sun Mar 08 21:59:33 2015 +0900
@@ -9,7 +9,7 @@
 LilyPond lets you create music notation.  It produces beautiful
 sheet music from a high-level description file.'''
     subpackage_names = ['doc', '']
-    source = 'http://lilypond.org/download/source/v2.13/lilypond-2.13.39.tar.gz'
+    source = 'http://lilypond.org/download/source/v2.14/lilypond-2.14.1.tar.gz'
 #    source = 'git://git.sv.gnu.org/lilypond.git'
     dependencies = gup.gub_to_distro_deps (lilypond.LilyPond.dependencies,
                                            cygwin.gub_to_distro_dict) + [
@@ -48,6 +48,8 @@
         self.system ('''
 mkdir -p %(install_prefix)s/share/doc/lilypond
 cd %(install_prefix)s && LIBRESTRICT_ALLOW=/ tar -C %(install_prefix)s -jxf %(docball)s
+cd %(install_prefix)s/share/doc/lilypond/html && mv offline-root/Documentation .
+cd %(install_prefix)s/share/doc/lilypond/html && rm -rf offline-root
 cd %(install_prefix)s && rm -rf license
 ''',
                   locals ())
--- a/gub/specs/darwin/cross/gcc.py	Sun May 29 12:49:02 2011 +0200
+++ b/gub/specs/darwin/cross/gcc.py	Sun Mar 08 21:59:33 2015 +0900
@@ -5,18 +5,14 @@
 from gub import cross
 
 class Gcc__darwin (cross_gcc.Gcc):
-    source = 'ftp://ftp.fu-berlin.de/unix/languages/gcc/releases/gcc-4.1.1/gcc-4.1.1.tar.bz2'
     dependencies = ['odcctools']
-#    dependencies = ([x for x in cross_gcc.Gcc.dependencies
-#                     if 'cross/binutils' not in x]
-#                    + ['odcctools'])
-    def patch (self):
-        self.file_sub ([('/usr/bin/libtool', '%(cross_prefix)s/bin/%(target_architecture)s-libtool')],
-                       '%(srcdir)s/gcc/config/darwin.h')
-
-        self.file_sub ([('--strip-underscores', '--strip-underscore')],
-                       '%(srcdir)s/libstdc++-v3/scripts/make_exports.pl')
-        cross.AutoBuild.patch (self)
+    patches = cross_gcc.Gcc.patches + [
+        'gcc-4.8.2-darwin-fixinc.patch',
+        'gcc-4.8.2-darwin-libgcc.patch',
+    ]
+    configure_flags = (cross_gcc.Gcc.configure_flags
+                       + ' --disable-libcilkrts'
+    )
     def languages (self):
         # objective-c is used for quartz's Carbon/Carbon.h in pango, gtk+
         return cross_gcc.Gcc.languages (self) + ['objc', 'obj-c++']
@@ -27,7 +23,11 @@
 /home/janneke/vc/gub/target/darwin-x86/root/usr/cross/bin/i686-apple-darwin8-ld: warning can't open dynamic library: /home/janneke/vc/gub/target/darwin-x86/root/home/janneke/vc/gub/target/darwin-x86/root/usr/cross/i686-apple-darwin8/lib/libgcc_s.1.dylib referenced from: /home/janneke/vc/gub/target/darwin-x86/root/usr/lib/libstdc++.dylib (checking for undefined symbols may be affected) (No such file or directory, errno = 2)
 '''
         # let's try adding libstdc++.dylib?, nah, let's not
-        skip_libs = ['libgcc_s'] #, 'libstdc++']
+        skip_libs = [
+            'libgcc_s.10.',
+            'libgcc_s_',
+            'libgcc_ext.10.'
+        ] #, 'libstdc++']
 
         def rewire_one (logger, file):
             found_skips = [s for s in skip_libs if file.find (s) >= 0]
@@ -45,23 +45,24 @@
         self.map_locate (rewire_one,
                          self.expand ('%(install_prefix)s/lib/'),
                          '*.dylib')
+    def get_subpackage_definitions (self):
+        d = cross.AutoBuild.get_subpackage_definitions (self)
+        prefix_dir = self.settings.prefix_dir
+        d['c++-runtime'] = [
+            prefix_dir + '/lib/libstdc++.6.dylib',
+            prefix_dir + '/lib/libgcc_s.1.dylib',
+        ]
+        return d
     def install (self):
         cross_gcc.Gcc.install (self)
         # conflicts with darwin-SDK
         self.system ('mv %(install_prefix)s/lib/libsupc++.a %(install_prefix)s/lib/libsupc++.a-')
         self.rewire_gcc_libs ()
-    
-class Gcc__darwin__x86 (Gcc__darwin):
-    source = 'ftp://ftp.fu-berlin.de/unix/languages/gcc/releases/gcc-4.3.2/gcc-4.3.2.tar.bz2'
-    patches = ['gcc-4.3.2-no-fixed-includes.patch']
-    dependencies = Gcc__darwin.dependencies + ['tools::mpfr']
 
-class Version_bump_builds_but_needs_a_test_Gcc__darwin__ppc (Gcc__darwin__x86):
-    pass
-
-class Not_used__Gcc__darwin (Gcc__darwin):
-    def configure (self):
-        cross_gcc.Gcc.configure (self)
-    def install (self):
-        cross_gcc.Gcc.install (self)
-        self.rewire_gcc_libs ()
+class Gcc__darwin__ppc (Gcc__darwin):
+    patches = Gcc__darwin.patches + [
+        'gcc-4.9.2-darwin-powerpc.patch', # This patch will not be needed from gcc 4.9.3.
+    ]
+    configure_flags = (Gcc__darwin.configure_flags
+                       + ' --disable-libitm'
+    )
--- a/gub/specs/darwin/darwin-sdk.py	Sun May 29 12:49:02 2011 +0200
+++ b/gub/specs/darwin/darwin-sdk.py	Sun Mar 08 21:59:33 2015 +0900
@@ -1,7 +1,7 @@
 from gub import build
 
 class Darwin_sdk (build.SdkBuild):
-    source = 'http://lilypond.org/download/gub-sources/darwin7-sdk-0.4.tar.gz'
+    source = 'http://lilypond.org/download/gub-sources/darwin8-sdk/darwin8-sdk-0.4.tar.gz'
     def patch (self):
         self.system ('''
 rm %(srcdir)s/usr/lib/libgcc*
@@ -26,6 +26,3 @@
         pat = self.expand ('%(srcdir)s/usr/lib/*.la')
         for a in glob.glob (pat):
             self.file_sub ([(r' (/usr/lib/.*\.la)', r'%(system_root)s\1')], a)
-
-class Darwin_sdk__darwin__x86 (Darwin_sdk):
-    source = 'http://lilypond.org/download/gub-sources/darwin8-sdk-0.4.tar.gz'
--- a/gub/specs/darwin/odcctools.py	Sun May 29 12:49:02 2011 +0200
+++ b/gub/specs/darwin/odcctools.py	Sun Mar 08 21:59:33 2015 +0900
@@ -9,10 +9,10 @@
               '&branch=odcctools'
               '&revision=278')
     # let's use cached tarball
-    source = 'http://lilypond.org/download/gub-sources/odcctools-iphone-dev-278.tar.gz'
+    source = 'http://lilypond.org/gub/download/odcctools-iphone-dev/odcctools-iphone-dev-278.tar.gz'
     patches = ['odcctools-r211-word.patch',
                'odcctools-config-Wno-long-double.patch']
-    dependencies = ['darwin-sdk', 'tools::flex']
+    dependencies = ['darwin-sdk', 'tools::flex', 'tools::automake']
     def __init__ (self, settings, source):
         cross.AutoBuild.__init__ (self, settings, source)
         if 'x86_64-linux' in self.settings.build_architecture:
@@ -20,9 +20,7 @@
             cross.change_target_package_x86 (self, self.add_linux_x86_env ())
         if 'x86_64-linux' in self.settings.build_architecture:
             self.dependencies += ['linux-x86::glibc']
-        if (self.settings.build_bits == '32'
-            and self.settings.build_hardware_bits == '64'):
-            self.configure_variables = (cross.AutoBuild.configure_variables
+        self.configure_variables = (cross.AutoBuild.configure_variables
                                         + ' CFLAGS=-D_FORTIFY_SOURCE=0')
     def autoupdate (self):
         # PROMOTEME: run aclocal if ^AM_ macros inside configure.*
--- a/gub/specs/debian/cross/gcc.py	Sun May 29 12:49:02 2011 +0200
+++ b/gub/specs/debian/cross/gcc.py	Sun Mar 08 21:59:33 2015 +0900
@@ -2,10 +2,6 @@
 from gub import debian
 
 class Gcc__debian (cross_gcc.Gcc):
-    source = 'http://ftp.gnu.org/pub/gnu/gcc/gcc-' + debian.gcc_version + '/gcc-' + debian.gcc_version + '.tar.bz2'
     dependencies = ['cross/binutils', 'libc6', 'libc6-dev', 'linux-kernel-headers']
     ## TODO: should detect whether libc supports TLS 
     configure_flags = cross_gcc.Gcc.configure_flags + ' --disable-tls '
-
-class Gcc__debian__arm (Gcc__debian):
-    source = 'http://ftp.gnu.org/pub/gnu/gcc/gcc-3.4.6/gcc-3.4.6.tar.bz2'
--- a/gub/specs/expat.py	Sun May 29 12:49:02 2011 +0200
+++ b/gub/specs/expat.py	Sun Mar 08 21:59:33 2015 +0900
@@ -4,30 +4,12 @@
 from gub import tools
 
 class Expat (target.AutoBuild):
-    source = 'http://surfnet.dl.sourceforge.net/sourceforge/expat/expat-2.0.1.tar.gz'
-    patches = ['expat-2.0.1-mingw.patch']
+    source = 'http://sourceforge.net/projects/expat/files/expat/2.1.0/expat-2.1.0.tar.gz'
     dependencies = ['libtool', 'tools::expat']
-    make_flags = misc.join_lines ('''
-CFLAGS='-O2 -DHAVE_EXPAT_CONFIG_H'
-EXEEXT=
-RUN_FC_CACHE_TEST=false
-''')
-    if 'stat' in misc.librestrict (): # 40 lines of sh code from 1993 implementing `mkdir -p', statting components of DESTDIR: /home, ...
-        make_flags = make_flags + ''' 'mkinstalldirs=mkdir -p' '''
-    def patch (self):
-        target.AutoBuild.patch (self)
-        #FIXME: should have configure.ac/in vs configure timestamp test
-        self.system ('rm %(srcdir)s/configure')
-        self.system ('touch %(srcdir)s/tests/xmltest.sh.in')
-
-class Expat__mingw (Expat):
-    # mingw's expat libtool build breaks with DASH
-    configure_variables = (Expat.configure_variables
-                .replace ('SHELL=', 'XSHELL='))
 
 class Expat__linux__arm__vfp (Expat):
     patches = []
-    source = 'http://surfnet.dl.sourceforge.net/sourceforge/expat/expat-2.0.0.tar.gz'
+    source = 'http://sourceforge.net/projects/expat/files/expat/2.0.0/expat-2.0.0.tar.gz'
     def patch (self):
         self.system ('touch %(srcdir)s/tests/xmltest.sh.in')
         target.AutoBuild.patch (self)
--- a/gub/specs/flex.py	Sun May 29 12:49:02 2011 +0200
+++ b/gub/specs/flex.py	Sun Mar 08 21:59:33 2015 +0900
@@ -4,7 +4,7 @@
 from gub import tools
 
 class Flex (target.AutoBuild):
-    source = 'http://surfnet.dl.sourceforge.net/sourceforge/flex/flex-2.5.35.tar.gz'
+    source = 'http://sourceforge.net/projects/flex/files/flex/flex-2.5.35/flex-2.5.35.tar.gz'
 #    if 'stat' in misc.librestrict (): # too broken to fix
 #        # configure [gettext, flex] blindly look for /USR/include/libi*
 #        configure_variables = (target.configure_variables
--- a/gub/specs/fontconfig.py	Sun May 29 12:49:02 2011 +0200
+++ b/gub/specs/fontconfig.py	Sun Mar 08 21:59:33 2015 +0900
@@ -2,7 +2,7 @@
 #
 from gub import build
 from gub import context
-from gub import logging
+from gub import gub_log
 from gub import misc
 from gub import octal
 from gub import target
@@ -52,7 +52,7 @@
         # of freetype.
         base_config_cmd = self.settings.expand ('%(tools_prefix)s/bin/freetype-config')
         cmd =  base_config_cmd + ' --cflags'
-        logging.command ('pipe %s\n' % cmd)
+        gub_log.command ('pipe %s\n' % cmd)
         # ugh, this is utterly broken.  we're reading from the
         # filesystem init time, when freetype-config does not exist
         # yet.
@@ -62,7 +62,7 @@
     def freetype_libs (self):
         base_config_cmd = self.settings.expand ('%(tools_prefix)s/bin/freetype-config')
         cmd =  base_config_cmd + ' --libs'
-        logging.command ('pipe %s\n' % cmd)
+        gub_log.command ('pipe %s\n' % cmd)
         # return misc.read_pipe (cmd).strip ()
         return '-lfreetype -lz'
     def configure (self):
--- a/gub/specs/fontforge.py	Sun May 29 12:49:02 2011 +0200
+++ b/gub/specs/fontforge.py	Sun Mar 08 21:59:33 2015 +0900
@@ -5,7 +5,8 @@
     # 20100501 breaks flags
     #source = 'http://surfnet.dl.sourceforge.net/sourceforge/fontforge/fontforge-source/fontforge_full-20100501.tar.bz2'
     #source = ':pserver:anonymous@fontforge.cvs.sourceforge.net:/cvsroot/fontforge&module=fontforge&tag=HEAD'
-    source = 'git://git.debian.org/pkg-fonts/fontforge.git&revision=4ab4fe9a81a8e15c1c7d479dc710c54335083042'
+#    source = 'git://git.debian.org/pkg-fonts/fontforge.git&revision=4ab4fe9a81a8e15c1c7d479dc710c54335083042'
+    source = 'http://kent.dl.sourceforge.net/project/fontforge/fontforge-source/fontforge_full-20110222.tar.bz2'
     parallel_build_broken = True
     srcdir_build_broken = True
     dependencies = ['freetype', 'libpng', 'libjpeg', 'libxml2']
--- a/gub/specs/freebsd-runtime.py	Sun May 29 12:49:02 2011 +0200
+++ b/gub/specs/freebsd-runtime.py	Sun Mar 08 21:59:33 2015 +0900
@@ -1,7 +1,7 @@
 from gub import build
 
 class Freebsd_runtime (build.BinaryBuild, build.SdkBuild):
-    source = 'http://lilypond.org/download/gub-sources/freebsd-runtime-4.11-1.%(package_arch)s.tar.gz&strip=0'
+    source = 'http://lilypond.org/download/gub-sources/freebsd-runtime/freebsd-runtime-6.2-1.%(package_arch)s.tar.gz&strip=0'
     def untar (self):
         build.BinaryBuild.untar (self)
         self.system ('''
@@ -11,17 +11,5 @@
 rm -f %(srcdir)s%(prefix_dir)s/include/FlexLexer.h
 ''')
 
-class Freebsd_runtime__freebsd__x86 (Freebsd_runtime):
-    patches = ['freebsd4-runtime.patch']
-    def untar (self):
-        Freebsd_runtime.untar (self)
-        self.patch ()
-        # FIXME: check if empty? (on freebsds4 it is...)
-        # cpp -P ~/vc/gub/target/freebsd-x86/root/usr/include/wctype.h
-        self.system ('''
-#breaks boost#rm %(srcdir)s%(prefix_dir)s/include/wctype.h
-cp %(sourcefiledir)s/stdint-32.h %(srcdir)s%(prefix_dir)s/include/stdint.h
-''')
-
 class Freebsd_runtime__freebsd__64 (Freebsd_runtime):
-    source = 'http://lilypond.org/download/gub-sources/freebsd-runtime-6.2-2.%(package_arch)s.tar.gz&strip=0'
+    source = 'http://lilypond.org/download/gub-sources/freebsd-runtime/freebsd-runtime-6.2-2.%(package_arch)s.tar.gz&strip=0'
--- a/gub/specs/freebsd/cross/gcc.py	Sun May 29 12:49:02 2011 +0200
+++ b/gub/specs/freebsd/cross/gcc.py	Sun Mar 08 21:59:33 2015 +0900
@@ -2,9 +2,9 @@
 from gub import misc
 
 class Gcc__freebsd (cross_gcc.Gcc):
-    source = 'http://ftp.gnu.org/pub/gnu/gcc/gcc-4.3.2/gcc-4.3.2.tar.bz2'
-    dependencies = cross_gcc.Gcc.dependencies + ['tools::mpfr']
     configure_flags = (cross_gcc.Gcc.configure_flags
                 + misc.join_lines ('''
 --program-prefix=%(toolchain_prefix)s
+--disable-libcilkrts
+--disable-__cxa_atexit
 '''))
--- a/gub/specs/gcc.py	Sun May 29 12:49:02 2011 +0200
+++ b/gub/specs/gcc.py	Sun Mar 08 21:59:33 2015 +0900
@@ -11,7 +11,6 @@
         return 'GNU C compiler; 4.x is strongly recommended'
 
 class Gcc__tools (tools.AutoBuild):
-    source = 'http://ftp.gnu.org/pub/gnu/gcc/gcc-4.1.2/gcc-4.1.2.tar.bz2'
     dependencies = [
             'binutils',
             ]
--- a/gub/specs/gettext.py	Sun May 29 12:49:02 2011 +0200
+++ b/gub/specs/gettext.py	Sun Mar 08 21:59:33 2015 +0900
@@ -53,9 +53,6 @@
                 ],
                        '%(builddir)s/gettext-tools/Makefile')
 
-class Gettext__freebsd__x86 (Gettext):
-    dependencies = (Gettext.dependencies + ['libgnugetopt'])
-
 class Gettext__mingw (Gettext):
     patches = ['gettext-0.15-mingw.patch']
     config_cache_overrides = (Gettext.config_cache_overrides
--- a/gub/specs/ghostscript.py	Sun May 29 12:49:02 2011 +0200
+++ b/gub/specs/ghostscript.py	Sun Mar 08 21:59:33 2015 +0900
@@ -23,7 +23,7 @@
     exe = ''
     revision = 'b35333cf3579e85725bd7d8d39eacc9640515eb8'
     #source = 'git://git.infradead.org/ghostscript.git?branch=refs/remotes/git-svn&revision=' + revision
-    source = 'http://mirror2.cs.wisc.edu/pub/mirrors/ghost/GPL/gs902/ghostscript-9.02.tar.gz'
+    source = 'http://sourceforge.net/projects/ghostscript/files/GPL%%20Ghostscript/9.02/ghostscript-9.02.tar.gz'
     patches = [
         'ghostscript-9.00-make.patch',
         'ghostscript-9.00-cygwin.patch',
@@ -57,7 +57,8 @@
                 + ' mandir=%(prefix_dir)s/share/man/ '
                 + ' docdir=%(prefix_dir)s/share/doc/ghostscript/doc '
                 + ' exdir=%(prefix_dir)s/share/doc/ghostscript/examples ')
-    make_flags = target.AutoBuild.make_flags + ' TARGET=%(target_os)s'
+    # Ghostscript's check for sys/time.h is buggy: it only looks in /usr/include.
+    make_flags = target.AutoBuild.make_flags + ' TARGET=%(target_os)s CFLAGS+="-DHAVE_SYS_TIME_H=1"'
     obj = 'obj'
     @staticmethod
     def static_version (self=False):
@@ -295,6 +296,13 @@
                             ('^(EXTRALIBS *=.*)(-shared )', r'\1 -dynamic'),
                             ('^(CC_SHARED *=.*)( -shared)', r'\1 -dynamic')],
                            '%(builddir)s/Makefile')
+    def install (self):
+        Ghostscript.install (self)
+        if shared:
+            self.system ('''
+%(cross_prefix)s/bin/%(target_architecture)s-install_name_tool -id /usr/lib/libgs.8.70.dylib %(install_prefix)s/lib/libgs.8.70.dylib
+%(cross_prefix)s/bin/%(target_architecture)s-install_name_tool -change ./bin/../sobin/libgs.8.70.dylib /usr/lib/libgs.8.70.dylib %(install_prefix)s/bin/gs
+''')
 
 class Ghostscript__tools (tools.AutoBuild, Ghostscript_static):
     parallel_build_broken = True
--- a/gub/specs/git.py	Sun May 29 12:49:02 2011 +0200
+++ b/gub/specs/git.py	Sun Mar 08 21:59:33 2015 +0900
@@ -2,7 +2,8 @@
 from gub import tools
 
 class Git (target.AutoBuild):
-    source = 'http://kernel.org/pub/software/scm/git/git-1.6.4.4.tar.gz'
+    ## source = 'http://kernel.org/pub/software/scm/git/git-1.6.4.4.tar.gz'
+    source = 'http://git-core.googlecode.com/files/git-1.7.7.tar.gz'
     srcdir_build_broken = True
     subpackage_names = ['']
     dependencies = ['zlib-devel']
--- a/gub/specs/glib.py	Sun May 29 12:49:02 2011 +0200
+++ b/gub/specs/glib.py	Sun Mar 08 21:59:33 2015 +0900
@@ -41,6 +41,9 @@
                        '%(builddir)s/libtool')
 
 class Glib__darwin__x86 (Glib__darwin):
+    # LIBS bugfix from:
+    #   https://bugzilla.gnome.org/show_bug.cgi?id=586150
+    configure_variables = Glib.configure_variables + ' LIBS=-lresolv'
     def compile (self):
         self.file_sub ([('(SUBDIRS = .*) tests', r'\1'),
                         (r'GTESTER = \$.*', ''),
--- a/gub/specs/glibc-core.py	Sun May 29 12:49:02 2011 +0200
+++ b/gub/specs/glibc-core.py	Sun Mar 08 21:59:33 2015 +0900
@@ -5,8 +5,11 @@
 # Hmm? TARGET_CFLAGS=-O --> target.py
 
 class Glibc_core (glibc.Glibc):
-    source = 'http://lilypond.org/download/gub-sources/glibc-2.3-20070416.tar.bz2'
-    patches = glibc.Glibc.patches + ['glibc-2.3-core-install.patch']
+    source = 'http://lilypond.org/download/gub-sources/glibc/glibc-2.3-20070416.tar.bz2'
+    patches = glibc.Glibc.patches + [
+        'glibc-2.3-core-install.patch',
+        'glibc-2.3-core-libgcc.patch',
+    ]
     dependencies = ['cross/gcc-core', 'linux-headers', 'tools::bison']
     configure_flags = (glibc.Glibc.configure_flags
                        + misc.join_lines ('''
@@ -32,9 +35,15 @@
 cp %(srcdir)s/include/features.h %(install_prefix)s/include
 mkdir -p %(install_prefix)s/include/bits
 cp %(builddir)s/bits/stdio_lim.h %(install_prefix)s/include/bits
+touch %(install_prefix)s/include/bits/syscall.h
 ''')
 
 class Glibc_core__linux__ppc (Glibc_core):
+    patches = Glibc_core.patches + [
+        'glibc-2.3-linux-ppc-sysdeps-generic-strtol_l.patch',
+        'glibc-2.3-powerpc-unwind-find-fde.patch',
+        'glibc-2.3-powerpc-linuxthreads-librt_multiple_threads.patch',
+        ]
         # ugh, but the gnulib=-lgcc hack does something else on ppc...
         # it (huh?) drops *-lgcc* (instead of -lgcc_eh) from libc.so
         # linkage, which then fails.
--- a/gub/specs/glibc.py	Sun May 29 12:49:02 2011 +0200
+++ b/gub/specs/glibc.py	Sun Mar 08 21:59:33 2015 +0900
@@ -40,7 +40,7 @@
 # automagically depend on it, which is nice.
 # See cross.py:set_cross_dependencies ()
 class Glibc (target.AutoBuild, cross.AutoBuild):
-    source = 'http://lilypond.org/download/gub-sources/glibc-2.3-20070416.tar.bz2'
+    source = 'http://lilypond.org/download/gub-sources/glibc/glibc-2.3-20070416.tar.bz2'
     patches = [
         'glibc-2.3-powerpc-initfini.patch',
         'glibc-2.3-powerpc-socket-weakalias.patch',
@@ -49,6 +49,14 @@
         'glibc-2.3-slibdir.patch',
         'glibc-2.3-assert-dl_next_tls_modid.patch',
         'glibc-2.3-binutils-2.19-i386.patch',
+        'glibc-2.3-binutils-version-check.patch',
+        'glibc-2.3-sysdeps-general-initfini.patch',
+        'glibc-2.3-sysdeps-i386-Makefile.patch',
+        'glibc-2.3-i386-crti-crtn.patch',
+        'glibc-2.3-misc-sys-cdefs-inline.patch',
+        'glibc-2.3-elf-Makefile.patch',
+        'glibc-2.3-linuxthreads-crti-crtn.patch',
+        'glibc-2.3-powerpc-sysdeps-Makefile.patch',
         ]
     dependencies = ['cross/gcc', 'glibc-core', 'tools::bison', 'tools::gzip', 'tools::perl', 'linux-headers']
     configure_flags = (target.AutoBuild.configure_flags + misc.join_lines ('''
@@ -81,6 +89,9 @@
         return {'': ['glibc-core'], 'devel': ['glibc-core'], 'doc': ['glibc-core'], 'runtime': ['glibc-core']}
     def patch (self):
         target.AutoBuild.patch (self)
+        self.system('''
+rm %(srcdir)s/sysdeps/i386/i686/memcmp.S
+''')
     def get_add_ons (self):
         return ('linuxthreads', 'nptl')
     @context.subst_method
@@ -105,6 +116,11 @@
     def LD_PRELOAD (self):
         return ''
 
+class Glibc__linux__ppc (Glibc):
+    patches = Glibc.patches + [
+        'glibc-2.3-linux-ppc-sysdeps-generic-strtol_l.patch',
+        ]
+
 class Glibc__linux__mipsel (Glibc):
     patches = Glibc.patches + [
         'glibc-2.3-mips-syscall.patch',
--- a/gub/specs/gmp.py	Sun May 29 12:49:02 2011 +0200
+++ b/gub/specs/gmp.py	Sun Mar 08 21:59:33 2015 +0900
@@ -6,14 +6,14 @@
 from gub import tools
 
 class Gmp (target.AutoBuild):
-    source = 'http://ftp.gnu.org/pub/gnu/gmp/gmp-4.2.1.tar.gz'
+    source = 'http://ftp.gnu.org/pub/gnu/gmp/gmp-6.0.0a.tar.xz'
     def __init__ (self, settings, source):
         target.AutoBuild.__init__ (self, settings, source)
         if not self.settings.platform.startswith ('darwin'):
             self.target_architecture = re.sub ('i[0-9]86-', 'i386-', settings.target_architecture)
         if 'stat' in misc.librestrict ():
             build.add_dict (self, {'LIBRESTRICT_IGNORE': '%(tools_prefix)s/bin/bash'})
-    dependencies = ['libtool', 'tools::autoconf', 'tools::automake', 'tools::bison', 'tools::flex', 'tools::libtool']
+    dependencies = ['libtool', 'tools::autoconf', 'tools::automake', 'tools::bison', 'tools::flex', 'tools::libtool', 'tools::xzutils']
     configure_flags = (target.AutoBuild.configure_flags
                        + ' --disable-cxx ')
     def configure (self):
@@ -40,11 +40,8 @@
         self.file_sub ([('using std::FILE;','')],
                        '%(install_prefix)s/include/gmp.h')
 
-class Gmp__darwin__x86 (Gmp__darwin):
-    source = 'http://ftp.gnu.org/pub/gnu/gmp/gmp-4.2.4.tar.gz'
-
 class Gmp__mingw (Gmp):
-    patches = ['gmp-4.1.4-1.patch']
+    patches = []
     def __init__ (self, settings, source):
         Gmp.__init__ (self, settings, source)
         # Configure (compile) without -mwindows for console
@@ -55,12 +52,8 @@
 mv %(install_prefix)s/lib/*dll %(install_prefix)s/bin || true
 ''')
 
-class Gmp__freebsd (Gmp):
-    source = 'http://ftp.gnu.org/pub/gnu/gmp/gmp-4.2.4.tar.gz'
-
 class Gmp__tools (tools.AutoBuild, Gmp):
-    dependencies = ['bison', 'flex', 'libtool']
-    patches = ['gmp-4.2.1-no-stack-protector.patch']
+    dependencies = ['bison', 'flex', 'libtool', 'xzutils']
     configure_variables = (tools.AutoBuild.configure_variables
                            # avoid __isoc99_fscanf@@GLIBC_2.7 etc
                            + ' CPPFLAGS=-D_GNU_SOURCE')
--- a/gub/specs/guile.py	Sun May 29 12:49:02 2011 +0200
+++ b/gub/specs/guile.py	Sun Mar 08 21:59:33 2015 +0900
@@ -187,12 +187,10 @@
         self.map_locate (dylib_link,
                          self.expand ('%(install_prefix)s/lib/'),
                          'libguile-srfi*.dylib')
- 
-class Guile__darwin__x86 (Guile__darwin):
     def configure (self):
         self.file_sub ([('guile-readline', '')],
                        '%(srcdir)s/Makefile.in')
-        Guile__darwin.configure (self)
+        Guile.configure (self)
 
 class Guile__linux__x86 (Guile):
     patches = Guile.patches + ['guile-1.8.6-pthreads-cross.patch']
--- a/gub/specs/hello.py	Sun May 29 12:49:02 2011 +0200
+++ b/gub/specs/hello.py	Sun Mar 08 21:59:33 2015 +0900
@@ -1,4 +1,4 @@
 from gub import target
 
 class Hello (target.AutoBuild):
-    source = 'http://lilypond.org/download/gub-sources/hello-1.0.tar.gz'
+    source = 'http://lilypond.org/download/gub-sources/hello/hello-1.0.tar.gz'
--- a/gub/specs/libjpeg.py	Sun May 29 12:49:02 2011 +0200
+++ b/gub/specs/libjpeg.py	Sun Mar 08 21:59:33 2015 +0900
@@ -7,7 +7,7 @@
 from gub import tools
 
 class Libjpeg (target.AutoBuild):
-    source = 'ftp://ftp.uu.net/graphics/jpeg/jpegsrc.v6b.tar.gz'
+    source = 'http://www.ijg.org/files/jpegsrc.v6b.tar.gz'
     config_cache_flag_broken = True
     def __init__ (self, settings, source):
         target.AutoBuild.__init__ (self, settings, source)
--- a/gub/specs/libpng.py	Sun May 29 12:49:02 2011 +0200
+++ b/gub/specs/libpng.py	Sun Mar 08 21:59:33 2015 +0900
@@ -2,7 +2,7 @@
 from gub import tools 
 
 class Libpng (target.AutoBuild):
-    source = 'http://surfnet.dl.sourceforge.net/sourceforge/libpng/libpng-1.2.8-config.tar.gz'
+    source = 'http://sourceforge.net/projects/libpng/files/libpng12/older-releases/1.2.8/libpng-1.2.8-config.tar.gz'
     patches = ['libpng-pngconf.h-setjmp.patch']
     dependencies = ['zlib-devel', 'tools::autoconf', 'tools::automake', 'tools::libtool']
     def name (self):
--- a/gub/specs/lilypad.py	Sun May 29 12:49:02 2011 +0200
+++ b/gub/specs/lilypad.py	Sun Mar 08 21:59:33 2015 +0900
@@ -2,10 +2,9 @@
 from gub import target
 
 class LilyPad (target.AutoBuild):
-    source = 'http://lilypond.org/download/gub-sources/lilypad-0.0.8-1-src.tar.bz2'
+    source = 'http://lilypond.org/download/gub-sources/lilypad/lilypad-0.1.1.0-src.tar.bz2'
+    dependencies = [ 'tools::automake' ]
     destdir_install_broken = True
-    # FIXME: -DUNICODE is broken, notably for opening files.
-    make_flags = ' CPPFLAGS=-UUNICODE'
     license_files = ['']
 
 Lilypad = LilyPad
--- a/gub/specs/lilypond-doc.py	Sun May 29 12:49:02 2011 +0200
+++ b/gub/specs/lilypond-doc.py	Sun Mar 08 21:59:33 2015 +0900
@@ -12,6 +12,8 @@
                 'tools::imagemagick',
                 'tools::rsync', # ugh, we depend on *rsync* !?
                 #'tools::texlive',
+                'system::makeinfo',
+                'system::zip',
                 ])
     make_flags = misc.join_lines ('''
 CROSS=no
@@ -20,7 +22,7 @@
 TARGET_PYTHON=/usr/bin/python
 CPU_COUNT=%(cpu_count)s
 ''')
-    compile_flags = lilypond.LilyPond_base.compile_flags + ' top-doc all doc'
+    compile_flags = lilypond.LilyPond_base.compile_flags + ' top-doc doc'
     install_flags = (' install-doc install-help2man'
                      ' prefix='
                      ' infodir=/share/info'
--- a/gub/specs/lilypond.py	Sun May 29 12:49:02 2011 +0200
+++ b/gub/specs/lilypond.py	Sun Mar 08 21:59:33 2015 +0900
@@ -9,7 +9,7 @@
 from gub import versiondb
 from gub.specs import ghostscript
 
-VERSION='v2.13'
+VERSION='v2.14'
 def url (version=VERSION):
     url = 'http://lilypond.org/download/source/%(version)s/' % locals ()
     raw_version_file = 'lilypond-%(version)s.index' % locals ()
@@ -21,31 +21,36 @@
 sheet music from a high-level description file.'''
 
     source = 'git://git.sv.gnu.org/lilypond.git'
+#    source = url () # for release builds
     branch = 'master'
     subpackage_names = ['']
-    dependencies = ['cross/gcc-c++-runtime',
-                    'flex',
-                    'fontconfig-devel',
-                    'freetype-devel',
-                    'gettext-devel',
-                    'ghostscript',
-                    'guile-devel',
-                    'pango-devel',
-                    'python-devel',
-                    'urw-fonts',
-                    'tools::autoconf',
-                    'tools::flex',
-                    'tools::bison',
-                    'tools::texinfo',
-                    'tools::fontforge',
-                    'tools::pkg-config',
-                    'tools::gettext', # AM_GNU_GETTEXT
-                    'tools::t1utils',
-                    'tools::texi2html',
-                    #'tools::texlive',
-                    'system::mf', 
-                    'system::mpost', 
-                    ]
+    dependencies = [
+        'cross/gcc-c++-runtime',
+
+        'flex',
+        'fontconfig-devel',
+        'freetype-devel',
+        'gettext-devel',
+        'ghostscript',
+        'guile-devel',
+        'pango-devel',
+        'python-devel',
+        'urw-fonts',
+
+        'tools::autoconf',
+        'tools::bison',
+        'tools::flex',
+        'tools::fontforge',
+        'tools::gettext', # AM_GNU_GETTEXT
+        'tools::pkg-config',
+        'tools::t1utils',
+        'tools::texi2html',
+        'tools::texinfo',
+        #'tools::texlive',
+
+        'system::mf', 
+        'system::mpost', 
+        ]
     if 'stat' in misc.librestrict ():
         dependencies = [x for x in dependencies
                         if x not in ['system::mf', 'system::mpost']
@@ -70,6 +75,10 @@
             'VERSION', 'MAJOR_VERSION',
             '%(MAJOR_VERSION)s.%(MINOR_VERSION)s.%(PATCH_LEVEL)s')
 
+    @staticmethod
+    def bind_version (self):
+        self.version = misc.bind_method (LilyPond.version_from_VERSION, self)
+
     def __init__ (self, settings, source):
         target.AutoBuild.__init__ (self, settings, source)
         # FIXME: should add to C_INCLUDE_PATH
@@ -80,7 +89,10 @@
                                  + ' -I%(builddir)s' % locals ()
                                  + ' -I%(srcdir)s/lily/out' % locals ())
         if isinstance (source, repository.Git):
-            source.version = misc.bind_method (LilyPond.version_from_VERSION, source)
+            if source.is_downloaded ():
+                source.version = misc.bind_method (LilyPond.version_from_VERSION, source)
+            else:
+                source.post_download_hook = misc.bind_method (LilyPond.bind_version, source)
         if 'stat' in misc.librestrict () and not 'tools::texlive' in self.dependencies:
             build.append_dict (self, {'PATH': os.environ['PATH']}) # need mf, mpost from system
     def get_conflict_dict (self):
@@ -159,6 +171,7 @@
     dependencies = LilyPond.dependencies + [
             'tools::imagemagick',
             'tools::icoutils',
+            'mingw-w64-runtime-winpthread-dll',
             ]
     python_lib = '%(system_prefix)s/bin/libpython*.dll'
     make_flags = (LilyPond.make_flags
@@ -240,7 +253,7 @@
 class LilyPond__darwin__ppc (LilyPond__darwin):
     def configure (self):
         LilyPond__darwin.configure (self)
-        self.dump ('CXXFLAGS += -DGUILE_ELLIPSIS=...',
+        self.dump ('CXXFLAGS += -fpermissive -DGUILE_ELLIPSIS=...',
                    '%(builddir)s/local.make')
 
 class LilyPond_base (target.AutoBuild):
--- a/gub/specs/linux-arm-softfloat/cross/gcc-core.py	Sun May 29 12:49:02 2011 +0200
+++ b/gub/specs/linux-arm-softfloat/cross/gcc-core.py	Sun Mar 08 21:59:33 2015 +0900
@@ -2,12 +2,9 @@
 gcc = misc.load_spec ('cross/gcc-core')
 
 class Gcc_core (gcc.Gcc_core):
-    source = 'http://ftp.gnu.org/pub/gnu/gcc/gcc-3.4.6/gcc-3.4.6.tar.bz2'
     def patch (self):
         gcc.Gcc_core.patch (self)
         self.system ('''
-cd %(srcdir)s && patch -p1 < %(patchdir)s/gcc-3.4.0-arm-lib1asm.patch
-cd %(srcdir)s && patch -p1 < %(patchdir)s/gcc-3.4.0-arm-nolibfloat.patch
 ''')
     configure_flags = (gcc.Gcc_core.configure_flags
                 + misc.join_lines ('''
--- a/gub/specs/linux-arm-softfloat/cross/gcc.py	Sun May 29 12:49:02 2011 +0200
+++ b/gub/specs/linux-arm-softfloat/cross/gcc.py	Sun Mar 08 21:59:33 2015 +0900
@@ -3,12 +3,9 @@
 from gub import misc
 
 class Gcc (cross_gcc.Gcc_from_source):
-    source = 'http://ftp.gnu.org/pub/gnu/gcc/gcc-3.4.6/gcc-3.4.6.tar.bz2'
     def patch (self):
         cross_gcc.Gcc_from_source.patch (self)
         self.system ('''
-cd %(srcdir)s && patch -p1 < %(patchdir)s/gcc-3.4.0-arm-lib1asm.patch
-cd %(srcdir)s && patch -p1 < %(patchdir)s/gcc-3.4.0-arm-nolibfloat.patch
 ''')
     configure_flags = (cross_gcc.Gcc_from_source.configure_flags
                 + misc.join_lines ('''
--- a/gub/specs/linux-headers.py	Sun May 29 12:49:02 2011 +0200
+++ b/gub/specs/linux-headers.py	Sun Mar 08 21:59:33 2015 +0900
@@ -2,7 +2,7 @@
 from gub import context
 
 class Linux_headers (build.BinaryBuild, build.SdkBuild):
-    source = 'http://www.nl.kernel.org/pub/linux/kernel/v2.4/linux-2.4.34.tar.bz2&name=linux-headers'
+    source = 'http://www.mirrorservice.org/sites/ftp.kernel.org/pub/linux/kernel/v2.4/linux-2.4.34.tar.bz2&name=linux-headers'
     # HMm, is this more handy than patch ():pass in BinaryBuild?
     # possibly we should simply override install (), but that is
     # always a problem because install ()
--- a/gub/specs/mingw-runtime.py	Sun May 29 12:49:02 2011 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,12 +0,0 @@
-from gub import build
-
-class Mingw_runtime (build.BinaryBuild, build.SdkBuild):
-    source = 'http://surfnet.dl.sourceforge.net/sourceforge/mingw/mingw-runtime-3.14.tar.gz&strip=0'
-    def install (self):
-        self.system ('''
-mkdir -p %(install_prefix)s/share
-cd %(srcdir)s && tar -C %(srcdir)s/ -cf - . | tar -C %(install_prefix)s -xf -
-mkdir -p %(install_prefix)s/include/sys
-#cp -p %(sourcefiledir)s/mingw-headers/wait.h %(install_prefix)s/include/sys
-mv %(install_prefix)s/doc %(install_root)s/share
-''', locals ())
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gub/specs/mingw-w64-runtime.py	Sun Mar 08 21:59:33 2015 +0900
@@ -0,0 +1,36 @@
+from gub import build
+
+class Mingw_w64_runtime (build.BinaryBuild, build.SdkBuild):
+    source = 'http://sourceforge.net/projects/mingw-w64/files/Toolchains%%20targetting%%20Win32/Personal%%20Builds/mingw-builds/4.9.2/threads-posix/sjlj/i686-4.9.2-release-posix-sjlj-rt_v3-rev1.7z'
+    dependencies = [ 'tools::p7zip' ]
+    subpackage_names = ['winpthread-dll', '']
+    def get_subpackage_definitions (self):
+        d = build.BinaryBuild.get_subpackage_definitions (self)
+        prefix_dir = self.settings.prefix_dir
+        d['winpthread-dll'] = [
+            prefix_dir + '/bin/libwinpthread-*.dll',
+        ]
+        return d
+    def install (self):
+        self.system ('''
+mkdir -p %(install_prefix)s/include
+mkdir -p %(install_prefix)s/lib
+mkdir -p %(install_prefix)s/bin
+cd %(srcdir)s/mingw32/i686-w64-mingw32/include/ && tar -C %(srcdir)s/mingw32/i686-w64-mingw32/include/ -cf - . | tar -C %(install_prefix)s/include/ -xf -
+cd %(srcdir)s/mingw32/i686-w64-mingw32/lib/ && tar -C %(srcdir)s/mingw32/i686-w64-mingw32/lib/ -cf - . | tar -C %(install_prefix)s/lib/ -xf -
+cp %(srcdir)s/mingw32/bin/libwinpthread-*.dll %(install_prefix)s/bin/
+rm -f %(install_prefix)s/lib/libgcc_s.a # for cross/gcc conflict
+rm -f %(install_prefix)s/lib/libquadmath-0.dll # for cross/gcc conflict
+rm -f %(install_prefix)s/lib/libssp-0.dll # for cross/gcc conflict
+rm -f %(install_prefix)s/lib/libgcc_s_sjlj-1.dll # for cross/gcc conflict
+rm -f %(install_prefix)s/include/zlib.h # for zlib conflict
+rm -f %(install_prefix)s/include/zconf.h # for zlib conflict
+rm -f %(install_prefix)s/lib/libz.a # for zlib conflict
+rm -f %(install_prefix)s/include/localcharset.h # for libiconv conflict
+rm -f %(install_prefix)s/include/libcharset.h # for libiconv conflict
+rm -f %(install_prefix)s/include/error.h # for regex failure
+rm -f %(install_prefix)s/include/iconv.h # for fontconfig failure
+rm -f %(install_prefix)s/lib/libiconv.a # for ghostscript failure
+rm -fr %(srcdir)s/mingw32/
+ln -s usr/ %(install_root)s/mingw
+''', locals ())
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gub/specs/mingwrt-dev.py	Sun Mar 08 21:59:33 2015 +0900
@@ -0,0 +1,18 @@
+from gub import build
+
+class Mingwrt_dev (build.BinaryBuild, build.SdkBuild):
+    source = 'http://downloads.sourceforge.net/project/mingw/MinGW/Base/mingw-rt/mingwrt-3.20/mingwrt-3.20-2-mingw32-dev.tar.lzma&strip=0'
+    dependencies = [ 'tools::xzutils' ]
+    def install (self):
+        self.system ('''
+mkdir -p %(install_prefix)s/include
+mkdir -p %(install_prefix)s/lib
+mkdir -p %(install_prefix)s/share/doc
+cd %(srcdir)s/include/ && tar -C %(srcdir)s/include/ -cf - . | tar -C %(install_prefix)s/include/ -xf -
+cd %(srcdir)s/lib/ && tar -C %(srcdir)s/lib/ -cf - . | tar -C %(install_prefix)s/lib/ -xf -
+cd %(srcdir)s/share/ && tar -C %(srcdir)s/share/ -cf - . | tar -C %(install_prefix)s/share/ -xf -
+cd %(srcdir)s/doc/ && tar -C %(srcdir)s/doc/ -cf - . | tar -C %(install_prefix)s/share/doc/ -xf -
+mkdir -p %(install_prefix)s/include/sys
+#cp -p %(sourcefiledir)s/mingw-headers/wait.h %(install_prefix)s/include/sys
+rm -fr %(srcdir)s/include/ %(srcdir)s/lib/ %(srcdir)s/share/ %(srcdir)s/doc/
+''', locals ())
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gub/specs/mingwrt-dll.py	Sun Mar 08 21:59:33 2015 +0900
@@ -0,0 +1,12 @@
+from gub import build
+
+class Mingwrt_dll (build.BinaryBuild, build.SdkBuild):
+    source = 'http://downloads.sourceforge.net/project/mingw/MinGW/Base/mingw-rt/mingwrt-3.20/mingwrt-3.20-2-mingw32-dll.tar.lzma&strip=0'
+    dependencies = [ 'tools::xzutils' ]
+    def install (self):
+        self.system ('''
+rm -fr %(srcdir)s/doc/
+mkdir -p %(install_prefix)s/bin/
+cd %(srcdir)s/bin/ && tar -C %(srcdir)s/bin/ -cf - . | tar -C %(install_prefix)s/bin/ -xf -
+rm -fr %(srcdir)s/bin/
+''', locals ())
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gub/specs/mpc.py	Sun Mar 08 21:59:33 2015 +0900
@@ -0,0 +1,5 @@
+from gub import tools
+
+class Mpc__tools (tools.AutoBuild):
+    source = 'http://ftp.gnu.org/gnu/mpc/mpc-1.0.2.tar.gz'
+    dependencies = ['gmp', 'mpfr']
--- a/gub/specs/mpfr.py	Sun May 29 12:49:02 2011 +0200
+++ b/gub/specs/mpfr.py	Sun Mar 08 21:59:33 2015 +0900
@@ -1,5 +1,5 @@
 from gub import tools
 
 class Mpfr__tools (tools.AutoBuild):
-    source = 'http://www.mpfr.org/mpfr-2.3.2/mpfr-2.3.2.tar.gz'
+    source = 'http://www.mpfr.org/mpfr-3.1.2/mpfr-3.1.2.tar.gz'
     dependencies = ['libtool', 'gmp']
--- a/gub/specs/netpbm.py	Sun May 29 12:49:02 2011 +0200
+++ b/gub/specs/netpbm.py	Sun Mar 08 21:59:33 2015 +0900
@@ -3,7 +3,7 @@
 
 class Netpbm__tools (tools.AutoBuild):
     # source='svn:https://svn.sourceforge.net/svnroot/netpbm/stable&revision=172'
-    source='http://lilypond.org/download/gub-sources/netpbm-patched-10.35.tar.bz2'
+    source='http://lilypond.org/download/gub-sources/netpbm-patched/netpbm-patched-10.35.tar.bz2'
     patches = ['netpbm-10.35-glibc-2.10.1-name-conflict.patch']
     parallel_build_broken = True
     dependencies = ['flex', 'libjpeg', 'libpng', 'libtiff', 'zlib'] #libxml2? libx11-dev
--- a/gub/specs/nsis.py	Sun May 29 12:49:02 2011 +0200
+++ b/gub/specs/nsis.py	Sun Mar 08 21:59:33 2015 +0900
@@ -5,9 +5,16 @@
 from gub import tools
 
 class Nsis (tools.SConsBuild):
-    source = 'http://surfnet.dl.sourceforge.net/sourceforge/nsis/nsis-2.46-src.tar.bz2'
+    source = 'http://sourceforge.net/projects/nsis/files/NSIS%%202/2.46/nsis-2.46-src.tar.bz2'
     #source = ':pserver:anonymous@nsis.cvs.sourceforge.net:/cvsroot/nsis&module=NSIS&tag=HEAD'
     dependencies = ['mingw::cross/gcc']
+    patches = [
+        'nsis-2.46-crossmingw.patch',
+        'nsis-2.46-util.patch',
+        'nsis-2.46-linker_script-default.patch',
+        'nsis-2.46-linker_script-ndata.patch',
+	'nsis-2.46-InstallOptions.patch',
+    ]
     scons_flags = misc.join_lines ('''
 DEBUG=yes
 NSIS_CONFIG_LOG=yes
@@ -37,6 +44,7 @@
                      + '/bin')
         return {'PATH': mingw_bin + ':' + tools_bin + ':' + os.environ['PATH'] }
     def patch (self):
+        tools.SConsBuild.patch (self)
         self.system ('mkdir -p %(allbuilddir)s', ignore_errors=True)
         self.system ('ln -s %(srcdir)s %(builddir)s')
         if 'x86_64-linux' in self.settings.build_architecture:
@@ -47,6 +55,12 @@
 defenv['C_INCLUDE_PATH'] = ''
 defenv['CPLUS_INCLUDE_PATH'] = ''
 defenv['CFLAGS'] = ''
+# SCons will add double quotes when LINKFLAGS contains whitespace,
+# so start and end with double quotes as so to disarm them
+#defenv['LINKFLAGS'] = '"%(rpath)s -Wl,-rpath -Wl,%(alltargetdir)s/%(build_platform)s%(root_dir)s%(prefix_dir)s/lib"'
+# Nsis is built 32 bit -- this won't work for non-GNU/Linux build hosts
+defenv['LINKFLAGS'] = '"%(rpath)s -Wl,-rpath -Wl,%(alltargetdir)s/linux-x86%(root_dir)s%(prefix_dir)s/lib"'
+
 Export('defenv')
 ''')],
                        '%(srcdir)s/SConstruct')
--- a/gub/specs/osx-lilypad.py	Sun May 29 12:49:02 2011 +0200
+++ b/gub/specs/osx-lilypad.py	Sun Mar 08 21:59:33 2015 +0900
@@ -4,7 +4,9 @@
     pass
 
 class Osx_lilypad__darwin__ppc (build.NullBuild):
-    source = 'http://lilypond.org/download/gub-sources/osx-lilypad-universal-0.4.tar.gz'
+    # yes, we really need the old version here
+    # later versions were built on OSX 10.7, which doesn't have pcc support
+    source = 'http://lilypond.org/download/gub-sources/osx-lilypad-universal/osx-lilypad-universal-0.4.tar.gz'
 
 class Osx_lilypad__darwin__x86 (build.NullBuild):
-    source = 'http://lilypond.org/download/gub-sources/osx-lilypad-universal-0.4.tar.gz'
+    source = 'http://lilypond.org/download/gub-sources/osx-lilypad-universal/osx-lilypad-universal-0.6.3.tar.gz'
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gub/specs/p7zip.py	Sun Mar 08 21:59:33 2015 +0900
@@ -0,0 +1,11 @@
+from gub import tools
+
+class P7zip__tools (tools.MakeBuild):
+    source = 'http://sourceforge.net/projects/p7zip/files/p7zip/9.20.1/p7zip_9.20.1_src_all.tar.bz2'
+    dependencies = [ 'bzip2', 'system::g++' ]
+    install_flags = ' DEST_HOME=%(install_prefix)s install'
+    def patch (self):
+        tools.MakeBuild.patch (self)
+        self.system('''
+sed -i -e 's/chmod 555/chmod 755/' -e 's/chmod 444/chmod 644/' %(srcdir)s/install.sh
+''')
--- a/gub/specs/pango.py	Sun May 29 12:49:02 2011 +0200
+++ b/gub/specs/pango.py	Sun Mar 08 21:59:33 2015 +0900
@@ -91,10 +91,6 @@
 ''', '%(install_prefix)s/etc/relocate/pango.reloc', env=locals (), mode='a')
 
 class Pango__mingw (Pango):
-        # FIXME: need -lpthread now?
-        # /home/janneke/vc/gub/target/mingw/root/usr/cross/bin/i686-mingw32-ld: cannot find -lpthread
-    dependencies = (Pango.dependencies
-                + ['pthreads-w32-devel'])
     def create_config_files (self, prefix='/usr'):
         Pango.create_config_files (self, prefix)
         etc = self.expand ('%(install_root)s/%(prefix)s/etc/pango', locals ())
--- a/gub/specs/patch.py	Sun May 29 12:49:02 2011 +0200
+++ b/gub/specs/patch.py	Sun Mar 08 21:59:33 2015 +0900
@@ -6,7 +6,7 @@
 # ugh, openoffice the ooo-build flavour needs the latest patch with
 # additional [SUSE] patches to not barf on all CRLF problems.
 # Taken from the Ibex: apt-get --download source patch
-    source = 'http://lilypond.org/download/gub-sources/patch-2.5.9-5.tar.gz'
+    source = 'http://lilypond.org/download/gub-sources/patch/patch-2.5.9-5.tar.gz'
     configure_variables = ''
     destdir_install_broken = True
     def configure (self):
--- a/gub/specs/perl.py	Sun May 29 12:49:02 2011 +0200
+++ b/gub/specs/perl.py	Sun Mar 08 21:59:33 2015 +0900
@@ -6,7 +6,7 @@
 # And this is supposed to be one of the most compiled packages?
 # So why doesn't anyone fix configuring/compiling it?  Shees.
 class Perl__tools (tools.AutoBuild):
-    source = 'http://www.cpan.org/src/perl-5.10.0.tar.gz'
+    source = 'http://www.cpan.org/src/5.0/perl-5.10.0.tar.gz'
     srcdir_build_broken = True
     def patch (self):
         tools.AutoBuild.patch (self)
--- a/gub/specs/python.py	Sun May 29 12:49:02 2011 +0200
+++ b/gub/specs/python.py	Sun Mar 08 21:59:33 2015 +0900
@@ -48,7 +48,6 @@
         if 'stat' in misc.librestrict ():
             self.install_command = ('LIBRESTRICT_ALLOW=/usr/lib/python2.4/lib-dynload:${LIBRESTRICT_ALLOW-/foo} '
                 + target.AutoBuild.install_command)
-
     def patch (self):
         target.AutoBuild.patch (self)
         self.file_sub ([('@CC@', '@CC@ -I$(shell pwd)')],
@@ -120,7 +119,7 @@
     def __init__ (self, settings, source):
         Python.__init__ (self, settings, source)
         self.target_gcc_flags = '-DMS_WINDOWS -DPy_WIN_WIDE_FILENAMES -I%(system_prefix)s/include' % self.settings.__dict__
-    dependencies = Python.dependencies + ['pthreads-w32-devel']
+    dependencies = Python.dependencies + ['mingw-w64-runtime-winpthread-dll']
     # FIXME: first is cross compile + mingw patch, backported to
     # 2.4.2 and combined in one patch; move to cross-Python?
     def patch (self):
@@ -180,6 +179,10 @@
 #        'python-2.4.2-fno-stack-protector.patch',
         'python-2.4.5-readline.patch', # Stop python from reading ~/.inputrc
         'python-2.4.5-db4.7.patch',
+        'python-2.4.5-regen.patch',
+        'python-2.4.5-gcc-R.patch',
+        'python-2.4.5-Setup-crypt.patch',
+        'python-2.4.5-Setup-dbm.patch',
         ]
     dependencies = [
         'autoconf',
@@ -187,6 +190,7 @@
         'libtool',
         ]
     force_autoupdate = True
-    make_flags = Python.make_flags
+    parallel_build_broken = True
+    make_flags = Python.make_flags + ' LIBC="-lcrypt -ldb"'
     def patch (self):
         Python.patch (self)
--- a/gub/specs/regex.py	Sun May 29 12:49:02 2011 +0200
+++ b/gub/specs/regex.py	Sun Mar 08 21:59:33 2015 +0900
@@ -1,5 +1,5 @@
 from gub import target
 
 class Regex (target.AutoBuild):
-    source = 'http://lilypond.org/download/gub-sources/regex-2.3.90-1.tar.bz2'
+    source = 'http://lilypond.org/download/gub-sources/regex/regex-2.3.90-1.tar.bz2'
     dependencies = ['tools::libtool']
--- a/gub/specs/rsync.py	Sun May 29 12:49:02 2011 +0200
+++ b/gub/specs/rsync.py	Sun Mar 08 21:59:33 2015 +0900
@@ -1,7 +1,7 @@
 from gub import tools
 
 class Rsync__tools (tools.AutoBuild):
-    source = 'ftp://ftp.samba.org/pub/rsync/src/rsync-3.0.4.tar.gz'
+    source = 'http://rsync.samba.org/ftp/rsync/src/rsync-3.0.4.tar.gz'
     patches = ['rsync-popt-add-prefix.patch']
     # adding libpopt build depependency not really necessary, as rsync
     # bundles it.
--- a/gub/specs/tar.py	Sun May 29 12:49:02 2011 +0200
+++ b/gub/specs/tar.py	Sun Mar 08 21:59:33 2015 +0900
@@ -3,7 +3,7 @@
 from gub import tools
 
 class Tar__tools (tools.AutoBuild):
-    source = 'http://ftp.gnu.org/pub/gnu/tar/tar-1.20.tar.gz'
+    source = 'http://ftp.gnu.org/pub/gnu/tar/tar-1.28.tar.gz'
     def __init__ (self, settings, source):
         tools.AutoBuild.__init__ (self, settings, source)
         if isinstance (self.source, repository.TarBall):
--- a/gub/specs/texinfo.py	Sun May 29 12:49:02 2011 +0200
+++ b/gub/specs/texinfo.py	Sun Mar 08 21:59:33 2015 +0900
@@ -2,7 +2,14 @@
 
 class Texinfo__tools (tools.AutoBuild):
     source = 'http://ftp.gnu.org/pub/gnu/texinfo/texinfo-4.13a.tar.gz'
+    patches = ['texinfo-4.13a-fix-bashism.patch']
     def patch (self):
         tools.AutoBuild.patch (self)
         # Drop ncurses dependency
         self.file_sub ([(' info ',' ')], '%(srcdir)s/Makefile.in')
+        # Avoid man rebuild
+        self.system('''
+touch %(srcdir)s/doc/texi2dvi.1
+touch %(srcdir)s/doc/texi2pdf.1
+touch %(srcdir)s/doc/pdftexi2dvi.1
+''')
--- a/gub/specs/texlive.py	Sun May 29 12:49:02 2011 +0200
+++ b/gub/specs/texlive.py	Sun Mar 08 21:59:33 2015 +0900
@@ -2,7 +2,7 @@
 #
 from gub.syntax import printf
 from gub import context
-from gub import logging
+from gub import gub_log
 from gub import loggedos
 from gub import misc
 from gub import octal
@@ -209,7 +209,7 @@
             if texmf_dist:                self.texmf_dist_repo.update_workdir (self.expand ('%(srcdir)s/texmf-dist'))
             # ugh.
             if self.source.have_client ():
-                loggedos.download_url (logging.default_logger,
+                loggedos.download_url (gub_log.default_logger,
                                        license_url,
                                        self.expand ('%(srcdir)s'))
         self.func (defer)
@@ -300,12 +300,12 @@
     call_env.update (env)
     for i in cmd.split ('\n'):
         if i:
-            loggedos.system (logging.default_logger, i % env, call_env, ignore_errors)
+            loggedos.system (gub_log.default_logger, i % env, call_env, ignore_errors)
 
 def main ():
     version = '15644'
     revision = '.1'
-    logging.default_logger.threshold = '1'
+    gub_log.default_logger.threshold = '1'
     for texmf in ['texlive-texmf', 'texlive-texmf-dist']:
         system ('''
 mkdir -p downloads/%(texmf)s-tiny
--- a/gub/specs/urw-fonts.py	Sun May 29 12:49:02 2011 +0200
+++ b/gub/specs/urw-fonts.py	Sun Mar 08 21:59:33 2015 +0900
@@ -1,7 +1,7 @@
 from gub import build
 
 class Urw_fonts (build.BinaryBuild):
-    source = 'ftp://ftp.gnome.ru/fonts/urw/release/urw-fonts-1.0.7pre41.tar.bz2&strip=0'
+    source = 'http://lilypond.org/gub/download/urw-fonts/urw-fonts-1.0.7pre41.tar.bz2&strip=0'
     def compile (self):
         self.system ('cd %(srcdir)s && rm README* COPYING ChangeLog TODO')
     def install (self):
--- a/gub/specs/w32api.py	Sun May 29 12:49:02 2011 +0200
+++ b/gub/specs/w32api.py	Sun Mar 08 21:59:33 2015 +0900
@@ -1,10 +1,13 @@
 from gub import build
 
 class W32api (build.BinaryBuild, build.SdkBuild):
-    #source = 'http://surfnet.dl.sourceforge.net/sourceforge/mingw/mingw-3.12.tar.gz&strip=0'
-    source = 'http://surfnet.dl.sourceforge.net/sourceforge/mingw/w32api-3.12-mingw32-dev.tar.gz&strip=0'
-    def untar (self):
-        build.BinaryBuild.untar (self)
+    source = 'http://sourceforge.net/projects/mingw/files/MinGW/Base/w32api/w32api-3.17/w32api-3.17-2-mingw32-dev.tar.lzma&strip=0'
+    dependencies = [ 'tools::xzutils' ]
+    def install (self):
         self.system ('''
-cd  %(srcdir)s/ && mkdir usr && mv include lib usr/
-''')
+mkdir -p %(install_prefix)s/include
+mkdir -p %(install_prefix)s/lib
+cd %(srcdir)s/include/ && tar -C %(srcdir)s/include/ -cf - . | tar -C %(install_prefix)s/include/ -xf -
+cd %(srcdir)s/lib/ && tar -C %(srcdir)s/lib/ -cf - . | tar -C %(install_prefix)s/lib/ -xf -
+rm -fr %(srcdir)s/include/ %(srcdir)s/lib/
+''', locals ())
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gub/specs/xzutils.py	Sun Mar 08 21:59:33 2015 +0900
@@ -0,0 +1,6 @@
+#
+from gub import tools
+
+class Xzutils__tools (tools.AutoBuild):
+    source = 'http://tukaani.org/xz/xz-5.0.7.tar.bz2'
+    dependencies = ['tools::bzip2']
--- a/gub/specs/zlib.py	Sun May 29 12:49:02 2011 +0200
+++ b/gub/specs/zlib.py	Sun Mar 08 21:59:33 2015 +0900
@@ -5,7 +5,7 @@
 from gub import tools
 
 class Zlib (target.AutoBuild):
-    source = 'http://surfnet.dl.sourceforge.net/sourceforge/libpng/zlib-1.2.3.tar.gz'
+    source = 'http://sourceforge.net/projects/libpng/files/zlib/1.2.3/zlib-1.2.3.tar.gz'
     patches = ['zlib-1.2.3.patch']
     srcdir_build_broken = True
     dependencies = ['tools::autoconf']
--- a/librestrict/xstatconv.c	Sun May 29 12:49:02 2011 +0200
+++ b/librestrict/xstatconv.c	Sun Mar 08 21:59:33 2015 +0900
@@ -48,20 +48,16 @@
       {
 	struct stat *buf = ubuf;
 
+	/* zero clear */
+	memset(buf, 0, sizeof(*buf));
 	/* Convert to current kernel version of `struct stat'.  */
 	buf->st_dev = kbuf->st_dev;
-#ifdef _HAVE_STAT___PAD1
-	buf->__pad1 = 0;
-#endif
 	buf->st_ino = kbuf->st_ino;
 	buf->st_mode = kbuf->st_mode;
 	buf->st_nlink = kbuf->st_nlink;
 	buf->st_uid = kbuf->st_uid;
 	buf->st_gid = kbuf->st_gid;
 	buf->st_rdev = kbuf->st_rdev;
-#ifdef _HAVE_STAT___PAD2
-	buf->__pad2 = 0;
-#endif
 	buf->st_size = kbuf->st_size;
 	buf->st_blksize = kbuf->st_blksize;
 	buf->st_blocks = kbuf->st_blocks;
@@ -77,21 +73,6 @@
 	buf->st_mtime = kbuf->st_mtime;
 	buf->st_ctime = kbuf->st_ctime;
 #endif
-#ifdef _HAVE_STAT___UNUSED1
-	buf->__unused1 = 0;
-#endif
-#ifdef _HAVE_STAT___UNUSED2
-	buf->__unused2 = 0;
-#endif
-#ifdef _HAVE_STAT___UNUSED3
-	buf->__unused3 = 0;
-#endif
-#ifdef _HAVE_STAT___UNUSED4
-	buf->__unused4 = 0;
-#endif
-#ifdef _HAVE_STAT___UNUSED5
-	buf->__unused5 = 0;
-#endif
       }
       break;
 
@@ -116,11 +97,10 @@
       {
 	struct stat64 *buf = ubuf;
 
+	/* zero clear */
+	memset(buf, 0, sizeof(*buf));
 	/* Convert to current kernel version of `struct stat64'.  */
 	buf->st_dev = kbuf->st_dev;
-#ifdef _HAVE_STAT64___PAD1
-	buf->__pad1 = 0;
-#endif
 	buf->st_ino = kbuf->st_ino;
 #ifdef _HAVE_STAT64___ST_INO
 	buf->__st_ino = kbuf->st_ino;
@@ -130,9 +110,6 @@
 	buf->st_uid = kbuf->st_uid;
 	buf->st_gid = kbuf->st_gid;
 	buf->st_rdev = kbuf->st_rdev;
-#ifdef _HAVE_STAT64___PAD2
-	buf->__pad2 = 0;
-#endif
 	buf->st_size = kbuf->st_size;
 	buf->st_blksize = kbuf->st_blksize;
 	buf->st_blocks = kbuf->st_blocks;
@@ -148,21 +125,6 @@
 	buf->st_mtime = kbuf->st_mtime;
 	buf->st_ctime = kbuf->st_ctime;
 #endif
-#ifdef _HAVE_STAT64___UNUSED1
-	buf->__unused1 = 0;
-#endif
-#ifdef _HAVE_STAT64___UNUSED2
-	buf->__unused2 = 0;
-#endif
-#ifdef _HAVE_STAT64___UNUSED3
-	buf->__unused3 = 0;
-#endif
-#ifdef _HAVE_STAT64___UNUSED4
-	buf->__unused4 = 0;
-#endif
-#ifdef _HAVE_STAT64___UNUSED5
-	buf->__unused5 = 0;
-#endif
       }
       break;
 
@@ -185,12 +147,11 @@
     {
     case _STAT_VER_LINUX:
       {
+	/* zero clear */
+	memset(buf, 0, sizeof(*buf));
 	/* Convert current kernel version of `struct stat64' to
            `struct stat'.  */
 	buf->st_dev = kbuf->st_dev;
-#ifdef _HAVE_STAT___PAD1
-	buf->__pad1 = 0;
-#endif
 #ifdef _HAVE_STAT64___ST_INO
 # if __ASSUME_ST_INO_64_BIT == 0
 	if (kbuf->st_ino == 0)
@@ -220,9 +181,6 @@
 	buf->st_uid = kbuf->st_uid;
 	buf->st_gid = kbuf->st_gid;
 	buf->st_rdev = kbuf->st_rdev;
-#ifdef _HAVE_STAT___PAD2
-	buf->__pad2 = 0;
-#endif
 	buf->st_size = kbuf->st_size;
 	/* Check for overflow.  */
 	if (sizeof (buf->st_size) != sizeof (kbuf->st_size)
@@ -253,21 +211,6 @@
 	buf->st_ctime = kbuf->st_ctime;
 #endif
 
-#ifdef _HAVE_STAT___UNUSED1
-	buf->__unused1 = 0;
-#endif
-#ifdef _HAVE_STAT___UNUSED2
-	buf->__unused2 = 0;
-#endif
-#ifdef _HAVE_STAT___UNUSED3
-	buf->__unused3 = 0;
-#endif
-#ifdef _HAVE_STAT___UNUSED4
-	buf->__unused4 = 0;
-#endif
-#ifdef _HAVE_STAT___UNUSED5
-	buf->__unused5 = 0;
-#endif
       }
       break;
 
--- a/lilypond.make	Sun May 29 12:49:02 2011 +0200
+++ b/lilypond.make	Sun Mar 08 21:59:33 2015 +0900
@@ -9,6 +9,7 @@
 .PHONY: lilypond-upload
 
 default: all
+	$(info **** Default rule)
 
 LILYPOND_BRANCH=master
 BUILDSCRIPTS=scripts/build
@@ -36,7 +37,7 @@
 841ee1b... PYTHON-CONFIG: also strip -m* and =.  Thanks Werner!\
 f9e5179... Append /../lib to default rpath.\
 fc158e0... Add --enable-rpath feature, defaulting to $ORIGIN/../lib. Default off.\
-23e401a... Clean-out some junk flags from python-config.  Fixes stray g++ warnings.\
+23e401a... Clean-out some junk flags from python-config.  Fixes stray g++ warning ****s.\
 )
 endif
 
@@ -70,8 +71,7 @@
 NATIVE_TARGET_DIR=$(CWD)/target/$(BUILD_PLATFORM)
 TOOLS_BIN_DIR=$(CWD)/target/tools/root/usr/bin/
 
-#FIXME: yet another copy of gub/settings.py
-SET_LOCAL_PATH=PATH=$(CWD)/target/local/root/usr/bin:$(PATH)
+SET_TOOLS_PATH=PATH=$(CWD)/target/tools/root/usr/bin:$(PATH)
 
 LILYPOND_VERSIONS = versiondb/lilypond.versions
 
@@ -80,6 +80,7 @@
 ################
 
 unlocked-update-versions:
+	$(info **** **** unlocked-update-versions rule)
 	python gub/versiondb.py --version-db=$(LILYPOND_VERSIONS) --download --platforms="$(PLATFORMS)"
 
 ifneq ($(findstring cygwin,$(PLATFORMS)),)
@@ -92,6 +93,7 @@
 endif
 
 download-cygwin:
+	$(info **** download-cygwin rule)
 	$(MAKE) downloads/genini
 	rm -f target/*/status/lilypond*
 	rm -f log/lilypond-$(LILYPOND_VERSION)*.*.test.pdf
@@ -101,13 +103,16 @@
 
 ## same command as  lilypond.versions:
 update-versions:
+	$(info **** update-versions rule)
 	$(PYTHON) gub/with-lock.py --skip $(LILYPOND_VERSIONS).lock $(MAKE) unlocked-update-versions
 
 ## same command as  update-versions:
 $(LILYPOND_VERSIONS):
+	$(info **** LILYPOND_VERSIONS rule)
 	$(PYTHON) gub/with-lock.py --skip $(LILYPOND_VERSIONS).lock $(MAKE) unlocked-update-versions
 
 regtests/ignore:
+	$(info **** regtests/ignore rule)
 	@echo 
 	@echo 
 	@echo "******************************************************"
@@ -123,27 +128,35 @@
 	exit 1
 
 nongit-dirs:
+	$(info **** nongit-dirs rule)
 	mkdir -p versiondb regtests uploads
 
 lilypond-prep: nongit-dirs $(LILYPOND_VERSIONS) regtests/ignore
+	$(info **** lilypond-prep rule)
 
 all: lilypond-prep packages rest
+	$(info **** all rule)
 
 ifeq ($(findstring mingw, $(PLATFORMS)),mingw)
 rest: nsis
 endif
 
 rest: lilypond-installers test doc doc-export print-success
+	$(info **** rest rule)
 
 test: dist-check test-output test-export
+	$(info **** test rule)
 
 doc:
+	$(info **** doc rule)
 	$(call INVOKE_GUB,$(BUILD_PLATFORM) --offline) $(DOC_PACKAGE)
 
 test-output:
+	$(info **** test-output rule)
 	$(call INVOKE_GUB,$(BUILD_PLATFORM) --offline) $(TEST_PACKAGE)
 
 print-success:
+	$(info **** print-success rule)
 	python test-lily/upload.py --branch=$(LILYPOND_BRANCH) --url $(LILYPOND_REPO_URL)
 	@echo ""
 	@echo "To upload, run:"
@@ -155,26 +168,33 @@
 webball = uploads/lilypond-$(DIST_VERSION)-$(DOC_BUILDNUMBER).webdoc.tar.bz2
 
 $(docball):
+	$(info **** docball rule)
 #keep this target and just move/repackage lilypond-doc.gup,
 #easier to handle versions.db?
 	$(MAKE) doc
 
 upload-setup-ini:
+	$(info **** upload-setup-ini rule)
 	cd uploads/cygwin && ../../downloads/genini $$(find release -mindepth 1 -maxdepth 2 -type d) > setup.ini
 
 downloads/genini:
+	$(info **** downloads/genini rule)
 	wget --output-document $@ 'http://cygwin.com/cgi-bin/cvsweb.cgi/~checkout~/genini/genini?rev=1.2&content-type=text/plain&cvsroot=cygwin-apps&only_with_tag=HEAD'
 	chmod +x $@
 
 lily-clean:
+	$(info **** lily-clean rule)
 	rm -rf target/$(BUILD_PLATFORM)/*/lilypond-$(LILYPOND_FLATTENED_BRANCH)*
 
 lily-doc-clean:	doc-clean
+	$(info **** lily-doc-clean rule)
 
 clean:
+	$(info **** clean rule)
 	rm -rf $(foreach p, $(PLATFORMS), target/*$(p)* )
 
 realclean:
+	$(info **** realclean rule)
 	rm -rf $(foreach p, $(PLATFORMS), uploads/$(p)/* uploads/$(p)-cross/* target/*$(p)* )
 
 ################################################################
@@ -183,9 +203,11 @@
 tools := $(shell PATH=$(PATH) $(GUB) --show-dependencies $(foreach p, $(PLATFORMS), $(p)::lilypond $(p)::lilypond-doc $(p)::lilypond-installer) 2>&1 | grep ^dependencies | tr ' ' '\n' | grep 'tools::')
 
 ptools:
+	$(info **** ptools rule)
 	$(GUB) --show-dependencies $(foreach p, $(PLATFORMS), $(p)::lilypond $(p)::lilypond-doc $(p)::lilypond-installer) 2>&1 | grep ^dependencies | tr ' ' '\n' | grep 'tools::'
 
 nsis:
+	$(info **** nsis rule)
 	bin/gub tools::nsis
 
 ################################################################
@@ -202,14 +224,18 @@
 # repository.read_file(), I guess.
 LILYPOND_REPO_DIR=downloads/lilypond
 LILYPOND_REPO_BRANCH_DIR=$(LILYPOND_REPO_DIR)/$(dir $(LILYPOND_DIRRED_BRANCH))
-NATIVE_BUILD_COMMITTISH=$(shell cat $(LILYPOND_REPO_BRANCH_DIR)/refs/heads/$(LILYPOND_DIRRED_BRANCH))
+NATIVE_BUILD_COMMITTISH=$(shell cat $(LILYPOND_REPO_DIR)/git/refs/heads/$(LILYPOND_DIRRED_BRANCH))
 
 print:
-	@echo LDB $(LILYPOND_DIRRED_BRANCH)
-	@echo LFB  $(LILYPOND_FLATTENED_BRANCH)
-	@echo $(BUILD_PACKAGE)
-	@echo $(DOC_PACKAGE)
-	@echo $(TEST_PACKAGE)
+	$(info **** print rule)
+	@echo LILYPOND_DIRRED_BRANCH $(LILYPOND_DIRRED_BRANCH)
+	@echo LILYPOND_FLATTENED_BRANCH  $(LILYPOND_FLATTENED_BRANCH)
+	@echo BUILD_PACKAGE $(BUILD_PACKAGE)
+	@echo DOC_PACKAGE $(DOC_PACKAGE)
+	@echo TEST_PACKAGE $(TEST_PACKAGE)
+	@echo NATIVE_BUILD_COMMITTISH $(NATIVE_BUILD_COMMITTISH)
+	@echo LILYPOND_REPO_BRANCH_DIR $(LILYPOND_REPO_BRANCH_DIR)
+	@echo LILYPOND_REPO_DIR $(LILYPOND_REPO_DIR)
 
 DIST_VERSION=$(shell cat $(NATIVE_LILY_BUILD)/out/VERSION)
 DOC_BUILDNUMBER=$(shell $(PYTHON) gub/versiondb.py --platforms=$(PLATFORMS) --build-for=$(DIST_VERSION))
@@ -217,12 +243,15 @@
 SIGNATURE_FUNCTION=uploads/signatures/$(1).$(NATIVE_BUILD_COMMITTISH)
 
 doc-clean:
+	$(info **** doc-clean rule)
 	$(PYTHON) gub/with-lock.py --skip $(DOC_LOCK) $(MAKE) unlocked-doc-clean
 
 test-clean:
+	$(info **** test-clean rule)
 	$(PYTHON) gub/with-lock.py --skip $(TEST_LOCK) $(MAKE) unlocked-test-clean
 
 unlocked-doc-clean:
+	$(info **** unlocked-doc-clean rule)
 	make -C $(NATIVE_TARGET_DIR)/build/lilypond-$(LILYPOND_FLATTENED_BRANCH) \
 		DOCUMENTATION=yes doc-clean
 	rm -rf $(NATIVE_TARGET_DIR)/build/lilypond-$(LILYPOND_FLATTENED_BRANCH)/out/lybook-db
@@ -230,17 +259,21 @@
 	rm -f $(call SIGNATURE_FUNCTION,cached-doc-export)
 
 unlocked-test-clean:
+	$(info **** unlocked-test-clean rule)
 	make -C $(NATIVE_TARGET_DIR)/build/lilypond-$(LILYPOND_FLATTENED_BRANCH) \
 		DOCUMENTATION=yes test-clean
 	rm -f $(call SIGNATURE_FUNCTION,cached-test-output)
 
 cached-dist-check cached-doc-export cached-test-export:
+	$(info **** cached-dist-check cached-doc-export cached-test-export rule)
 	-mkdir -p uploads/signatures
 	if test ! -f  $(call SIGNATURE_FUNCTION,$@) ; then \
+		$(SET_TOOLS_PATH) \
 		$(MAKE) $(subst cached,unlocked,$@) \
 		&& touch $(call SIGNATURE_FUNCTION,$@) ; fi
 
 unlocked-doc-export:
+	$(info **** unlocked-doc-export rule)
 	PYTHONPATH=$(NATIVE_LILY_BUILD)/python/out \
 	$(PYTHON) test-lily/rsync-lily-doc.py --recreate \
 		--version-file=$(NATIVE_LILY_BUILD)/out/VERSION \
@@ -251,21 +284,28 @@
 		--output-distance=$(NATIVE_LILY_SRC)/$(BUILDSCRIPTS)/output-distance.py $(NATIVE_LILY_BUILD)/out-www/offline-root
 
 unlocked-test-export:
+	$(info **** unlocked-test-export rule)
 	mkdir -p uploads/webtest
 	PYTHONPATH=$(NATIVE_LILY_BUILD)/python/out \
-	PATH=$(TOOLS_BIN_DIR):$(PATH) $(PYTHON) test-lily/rsync-test.py \
+	$(SET_TOOLS_PATH) \
+		$(PYTHON) test-lily/rsync-test.py \
 		--version-file=$(NATIVE_LILY_BUILD)/out/VERSION \
 		--output-distance=$(NATIVE_LILY_SRC)/$(BUILDSCRIPTS)/output-distance.py \
 		--test-dir=uploads/webtest
 
 doc-export:
-	$(PYTHON) gub/with-lock.py --skip $(DOC_LOCK) $(MAKE) cached-doc-export
+	$(info **** doc-export rule)
+	$(SET_TOOLS_PATH) \
+		$(PYTHON) gub/with-lock.py --skip $(DOC_LOCK) $(MAKE) cached-doc-export
 
 test-export:
-	$(PYTHON) gub/with-lock.py --skip $(DOC_LOCK) $(MAKE) cached-test-export
+	$(info **** test-export rule)
+	$(SET_TOOLS_PATH) \
+		$(PYTHON) gub/with-lock.py --skip $(DOC_LOCK) $(MAKE) cached-test-export
 
 unlocked-dist-check:
-	$(SET_LOCAL_PATH)\
+	$(info **** unlocked-dist-check rule)
+	$(SET_TOOLS_PATH) \
 		$(PYTHON) test-lily/dist-check.py\
 		--branch=$(LILYPOND_BRANCH) \
 		--url=$(LILYPOND_REPO_URL) \
@@ -273,15 +313,19 @@
 	cp $(NATIVE_LILY_BUILD)/out/lilypond-$(DIST_VERSION).tar.gz uploads
 
 dist-check:
-	$(PYTHON) gub/with-lock.py --skip $(NATIVE_LILY_BUILD).lock \
+	$(info **** dist-check rule)
+	$(SET_TOOLS_PATH) \
+		$(PYTHON) gub/with-lock.py --skip $(NATIVE_LILY_BUILD).lock \
 		$(MAKE) cached-dist-check
 
 print-branches:
+	$(info **** print-branches rule)
 	@echo "--branch=guile=$(GUILE_FLATTENED_BRANCH)"
 	@echo "--branch=lilypond=$(LILYPOND_FLATTENED_BRANCH)"
 	@echo "--branch=denemo=$(DENEMO_FLATTENED_BRANCH)"
 
 lilypond-upload:
+	$(info **** lilypond-upload rule)
 	$(PYTHON) test-lily/upload.py --branch=$(LILYPOND_BRANCH) --url $(LILYPOND_REPO_URL) --execute
 	mv uploads/lilypond-*.test-output.tar.bz2 regtests/
 
--- a/nsis/lilypond-prepost.nsh	Sun May 29 12:49:02 2011 +0200
+++ b/nsis/lilypond-prepost.nsh	Sun Mar 08 21:59:33 2015 +0900
@@ -14,9 +14,6 @@
 	CreateShortCut "$SMPROGRAMS\LilyPond\Music in Mutopia.lnk" \
 		"http://www.mutopiaproject.org" "" \
 		"$INSTDIR\usr\bin\lilypond-windows.exe" 1
-	CreateShortCut "$SMPROGRAMS\LilyPond\Examples.lnk" \
-		"$INSTDIR\usr\share\doc\lilypond\input" "" \
-		"$INSTDIR\usr\bin\lilypond-windows.exe" 1
 	CreateShortCut "$SMPROGRAMS\LilyPond\Uninstall.lnk" \
 		"$INSTDIR\uninstall.exe" "" "$INSTDIR\uninstall.exe" 0
 
@@ -41,9 +38,6 @@
 
 
 Function registry_lilypond
-	ReadRegStr $R0 HKLM "${ENVIRON}" "PATH"
-	WriteRegExpandStr HKLM "${ENVIRON}" "PATH" "$R0;$INSTDIR\usr\bin"
-
 	WriteRegStr HKCR ".ly" "" "LilyPond"
 	WriteRegStr HKCR ".ly" "LilyPond" "LilyPond"
 	WriteRegStr HKCR ".ly" "Content Type" "text/lilypond-source"
@@ -86,7 +80,7 @@
 	ReadRegStr $R0 HKCR "textedit\shell\open\command" ""
 	;;StrCmp $R0 "" 0 exit
 	WriteRegStr HKCR "textedit\shell" "" "open"
-	WriteRegExpandStr HKCR "textedit\shell\open\command" "" '"$INSTDIR\usr\bin\guile.exe" -e main -s "$INSTDIR\usr\bin\lilypond-invoke-editor.scm" "%1"'
+	WriteRegExpandStr HKCR "textedit\shell\open\command" "" '"$INSTDIR\usr\bin\guile.exe" -s "$INSTDIR\usr\bin\lilypond-invoke-editor" "%1"'
 ;;exit:
 FunctionEnd
 
@@ -146,7 +140,7 @@
 	ReadRegStr $R0 HKCR "GUILE\shell\open\command" ""
 	;;StrCmp $R0 "" 0 exit
 	WriteRegStr HKCR "GUILE\shell" "" "open"
-	WriteRegExpandStr HKCR "GUILE\shell\open\command" "" '"$INSTDIR\usr\bin\guile.exe" -e main -s "%1"'
+	WriteRegExpandStr HKCR "GUILE\shell\open\command" "" '"$INSTDIR\usr\bin\guile.exe" -s "%1"'
 exit:
 FunctionEnd
 
@@ -165,15 +159,17 @@
 	ReadRegStr $R0 HKCR "Python\shell\open\command" ""
 	;;StrCmp $R0 "" 0 py_auto_file
 	WriteRegStr HKCR "Python\shell" "" "open"
-	# %1 is the PYTHON command, so must be quoted bo the space
-	WriteRegExpandStr HKCR "Python\shell\open\command" "" '"$INSTDIR\usr\bin\python.exe" "%1" %2 %3 %4 %5 %6 %7 %8 %9'
+	# %1 is the PYTHON command, other arguments may contain
+	# filenames, so we quote them all to account for spaces
+	WriteRegExpandStr HKCR "Python\shell\open\command" "" '"$INSTDIR\usr\bin\python.exe" "%1" "%2" "%3" "%4" "%5" "%6" "%7" "%8" "%9"'
 
 ;;py_auto_file:
 	ReadRegStr $R0 HKCR "py_auto_file\shell\open\command" ""
 	;;StrCmp $R0 "" 0 py_end
 	WriteRegStr HKCR "py_auto_file\shell" "" "open"
-	# %1 is the PYTHON command, so must be quoted bo the space
-	WriteRegExpandStr HKCR "py_auto_file\shell\open\command" "" '"$INSTDIR\usr\bin\python.exe" "%1" %2 %3 %4 %5 %6 %7 %8 %9'
+	# %1 is the PYTHON command, other arguments may contain
+	# filenames, so we quote them all to account for spaces
+	WriteRegExpandStr HKCR "py_auto_file\shell\open\command" "" '"$INSTDIR\usr\bin\python.exe" "%1" "%2" "%3" "%4" "%5" "%6" "%7" "%8" "%9"'
 ;;py_end:	
 FunctionEnd
 
--- a/nsis/lilypond.nsi	Sun May 29 12:49:02 2011 +0200
+++ b/nsis/lilypond.nsi	Sun Mar 08 21:59:33 2015 +0900
@@ -94,7 +94,6 @@
 	CreateDirectory "$INSTDIR\usr\bin"
 
 	Call registry_installer
-;;	Call registry_path
 
 	;; Use tested lilypad for now
 	StrCpy $EDITOR "$INSTDIR\usr\bin\lilypad.exe"
@@ -113,11 +112,6 @@
 	Call postinstall_lilypad
 SectionEnd
 
-Function registry_path
-	ReadRegStr $R0 HKLM "${ENVIRON}" "PATH"
-	WriteRegExpandStr HKLM "${ENVIRON}" "PATH" "$R0;$INSTDIR\usr\bin"
-FunctionEnd
-
 ;; Optional section (can be disabled by the user)
 Section "Bundled Python"
     ;; Only make bundled python interpreter the default
@@ -239,21 +233,6 @@
 	DeleteRegKey HKCU "Applications\lilypond-windows.exe"
 	DeleteRegKey HKCU ".ly"
 
-	ReadRegStr $R0 HKLM "${ENVIRON}" "PATH"
-	${UnStrLoc} $0 $R0 "$INSTDIR\usr\bin;" >
-
-path_loop:
-	StrCmp $0 "" path_done
-	StrLen $1 "$INSTDIR\usr\bin;"
-	IntOp $2 $0 + $1
-	StrCpy $3 $R0 $0 0
-	StrCpy $4 $R0 10000 $2
-	WriteRegExpandStr HKLM "${ENVIRON}" "PATH" "$3$4"
-	ReadRegStr $R0 HKLM "${ENVIRON}" "PATH"
-	${UnStrLoc} $0 $R0 "$INSTDIR\usr\bin;" >
-	StrCmp $0 "" path_done path_loop
-
-path_done:
 	;; Remove files and uninstaller
 	;; Try only to delete ${PRETTY_NAME} (and not user) stuff
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/binutils-2.24-freebsd4.patch	Sun Mar 08 21:59:33 2015 +0900
@@ -0,0 +1,30 @@
+From: H.J. Lu <hjl.tools@gmail.com>
+Date: Mon, 29 Sep 2014 15:35:49 +0000 (-0700)
+Subject: Fix build for OLD_FREEBSD_ABI_LABEL
+X-Git-Url: http://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;a=commitdiff_plain;h=cf7363b42b2fdc9fd108bed8d53b35adf4d52ad5
+
+Fix build for OLD_FREEBSD_ABI_LABEL
+
+	PR ld/17440
+	* elf32-i386.c (elf_i386_fbsd_post_process_headers): Fix build
+	for OLD_FREEBSD_ABI_LABEL.
+---
+
+diff --git a/bfd/elf32-i386.c b/bfd/elf32-i386.c
+index a00d47c..afa21b5 100644
+--- a/bfd/elf32-i386.c
++++ b/bfd/elf32-i386.c
+@@ -5120,8 +5120,11 @@ elf_i386_fbsd_post_process_headers (bfd *abfd, struct bfd_link_info *info)
+   _bfd_elf_post_process_headers (abfd, info);
+ 
+ #ifdef OLD_FREEBSD_ABI_LABEL
+-  /* The ABI label supported by FreeBSD <= 4.0 is quite nonstandard.  */
+-  memcpy (&i_ehdrp->e_ident[EI_ABIVERSION], "FreeBSD", 8);
++  {
++    /* The ABI label supported by FreeBSD <= 4.0 is quite nonstandard.  */
++    Elf_Internal_Ehdr *i_ehdrp = elf_elfheader (abfd);
++    memcpy (&i_ehdrp->e_ident[EI_ABIVERSION], "FreeBSD", 8);
++  }
+ #endif
+ }
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/freebsd4-runtime-gcc-4.8.2.patch	Sun Mar 08 21:59:33 2015 +0900
@@ -0,0 +1,10 @@
+--- a/usr/include/sys/mman.h
++++ b/usr/include/sys/mman.h
+@@ -133,6 +133,7 @@
+ #ifndef _KERNEL
+ 
+ #include <sys/cdefs.h>
++#include <sys/types.h>
+ 
+ __BEGIN_DECLS
+ #ifdef _P1003_1B_VISIBLE
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/gcc-4.8.2-darwin-fixinc.patch	Sun Mar 08 21:59:33 2015 +0900
@@ -0,0 +1,11 @@
+--- gcc-4.8.2/gcc/Makefile.in.org	2015-01-12 19:53:31.179327200 +0900
++++ gcc-4.8.2/gcc/Makefile.in	2015-01-12 19:53:52.471327200 +0900
+@@ -4214,7 +4214,7 @@
+ 	      export TARGET_MACHINE srcdir SHELL MACRO_LIST && \
+ 	      cd $(build_objdir)/fixincludes && \
+ 	      $(SHELL) ./fixinc.sh "$${gcc_dir}/$${fix_dir}" \
+-	        $(SYSTEM_HEADER_DIR) $(OTHER_FIXINCLUDES_DIRS) ); \
++	        $(SYSTEM_HEADER_DIR) $(OTHER_FIXINCLUDES_DIRS) || true ); \
+ 	    rm -f $${fix_dir}/syslimits.h; \
+ 	    if [ -f $${fix_dir}/limits.h ]; then \
+ 	      mv $${fix_dir}/limits.h $${fix_dir}/syslimits.h; \
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/gcc-4.8.2-darwin-libgcc.patch	Sun Mar 08 21:59:33 2015 +0900
@@ -0,0 +1,18 @@
+--- gcc-4.8.2/libgcc/config/t-slibgcc-darwin.org	2015-01-12 23:49:10.689670300 +0900
++++ gcc-4.8.2/libgcc/config/t-slibgcc-darwin	2015-01-12 23:49:40.989670300 +0900
+@@ -29,11 +29,11 @@
+ 
+ # we're only going to build the stubs if the target slib is /usr/lib
+ # there is no other case in which they're useful in a live system.
+-ifeq (/usr/lib,$(shlib_slibdir))
++#ifeq (/usr/lib,$(shlib_slibdir))
+ LGCC_STUBS = libgcc_s.10.4.dylib libgcc_s.10.5.dylib
+-else
+-LGCC_STUBS =
+-endif
++#else
++#LGCC_STUBS =
++#endif
+ 
+ LGCC_FILES = libgcc_s.$(SHLIB_SOVERSION)$(SHLIB_EXT)
+ LGCC_FILES += $(LGCC_STUBS)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/gcc-4.8.2-libstdc++-debug-path.patch	Sun Mar 08 21:59:33 2015 +0900
@@ -0,0 +1,27 @@
+Fix libstdc++-v3 debug version path replacement
+
+gub uses path like target/(arch)/src/cross/gcc-4.8.2/.
+A wrong replacement happened like target/(arch)/src/debug/cross/gcc-4.8.2/.
+
+--- a/libstdc++-v3/src/Makefile.am	2014-10-23 16:15:59.385935000 +0900
++++ b/libstdc++-v3/src/Makefile.am	2014-10-23 16:17:24.925935000 +0900
+@@ -311,7 +311,7 @@
+ 	  mv Makefile Makefile.tmp; \
+ 	  sed -e 's,all-local: all-once,all-local:,' \
+ 	      -e 's,install-data-local: install-data-once,install-data-local:,' \
+-	      -e '/vpath/!s,src/c,src/debug/c,' \
++	      -e '/vpath/!s,src/c++,src/debug/c++,' \
+ 	  < Makefile.tmp > Makefile ; \
+ 	  rm -f Makefile.tmp ; \
+ 	  $(MAKE) CXXFLAGS='$(DEBUG_FLAGS)' \
+--- a/libstdc++-v3/src/Makefile.in	2014-10-23 17:58:17.801935000 +0900
++++ b/libstdc++-v3/src/Makefile.in	2014-10-23 18:00:57.253935000 +0900
+@@ -939,7 +939,7 @@
+ 	  mv Makefile Makefile.tmp; \
+ 	  sed -e 's,all-local: all-once,all-local:,' \
+ 	      -e 's,install-data-local: install-data-once,install-data-local:,' \
+-	      -e '/vpath/!s,src/c,src/debug/c,' \
++	      -e '/vpath/!s,src/c++,src/debug/c++,' \
+ 	  < Makefile.tmp > Makefile ; \
+ 	  rm -f Makefile.tmp ; \
+ 	  $(MAKE) CXXFLAGS='$(DEBUG_FLAGS)' \
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/gcc-4.9.2-darwin-powerpc.patch	Sun Mar 08 21:59:33 2015 +0900
@@ -0,0 +1,22 @@
+Bug 63703 - [4.9.2/5 Regression] Bootstrap broken on powerpc-apple-darwin, cc1: internal compiler error: in init_reg_sets
+
+https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63703
+https://gcc.gnu.org/viewcvs?rev=218064&root=gcc&view=rev
+
+This patch will not be needed from gcc 4.9.3.
+
+--- a/gcc/config/rs6000/darwin.h	2014/11/25 21:27:17	218063
++++ b/gcc/config/rs6000/darwin.h	2014/11/25 21:41:44	218064
+@@ -206,7 +206,11 @@
+     "vrsave", "vscr",							\
+     "spe_acc", "spefscr",                                               \
+     "sfp",								\
+-    "tfhar", "tfiar", "texasr"						\
++    "tfhar", "tfiar", "texasr",						\
++    "rh0",  "rh1",  "rh2",  "rh3",  "rh4",  "rh5",  "rh6",  "rh7",	\
++    "rh8",  "rh9",  "rh10", "rh11", "rh12", "rh13", "rh14", "rh15",	\
++    "rh16", "rh17", "rh18", "rh19", "rh20", "rh21", "rh22", "rh23",	\
++    "rh24", "rh25", "rh26", "rh27", "rh28", "rh29", "rh30", "rh31"	\
+ }
+ 
+ /* This outputs NAME to FILE.  */
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/ghostscript-8.70-mingw-w64-snprintf.patch	Sun Mar 08 21:59:33 2015 +0900
@@ -0,0 +1,25 @@
+--- a/base/gp_mswin.c	2014-11-29 16:00:46.394874900 +0900
++++ b/base/gp_mswin.c	2014-11-29 16:01:09.262874900 +0900
+@@ -716,22 +716,3 @@
+ #endif
+ }
+ 
+-/* -------------------------  _snprintf -----------------------------*/
+-
+-/* Microsoft Visual C++ 2005  doesn't properly define snprintf,
+-   which is defined in the C standard ISO/IEC 9899:1999 (E) */
+-
+-int snprintf(char *buffer, size_t count, const char *format, ...)
+-{
+-    if (count > 0) {
+-	va_list args;
+-	int n; 
+-
+-	va_start(args, format);
+-	n = _vsnprintf(buffer, count, format, args);
+-	buffer[count - 1] = 0;
+-	va_end(args);
+-	return n;
+-    } else
+-	return 0;
+-}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/glibc-2.3-binutils-version-check.patch	Sun Mar 08 21:59:33 2015 +0900
@@ -0,0 +1,44 @@
+Handle future binutils versions correctly.
+http://sourceware.org/git/?p=glibc.git;a=commit;h=f450806e22be467a8d613f9a811508ccb87a5d1a
+
+Support binutils 2.100 and 3.0.
+http://sourceware.org/git/?p=glibc.git;a=commit;h=0549ce8ec1f66a41c59815e50dd48ffd74fabb52
+
+Support binutils 2.20.
+http://sourceware.org/git/?p=glibc.git;a=commit;h=4c14c8c348ee3e9a5fea3608cabcabdb275b6141
+
+--- a/configure	2014-10-23 21:02:32.093935000 +0900
++++ b/configure	2014-10-23 21:04:27.385935000 +0900
+@@ -3917,7 +3917,7 @@
+   ac_prog_version=`$AS --version 2>&1 | sed -n 's/^.*GNU assembler.* \([0-9]*\.[0-9.]*\).*$/\1/p'`
+   case $ac_prog_version in
+     '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
+-    2.1[3-9]*)
++    2.1[3-9]*|2.1[0-9][0-9]*|2.[2-9][0-9]*|[3-9].*|[1-9][0-9]*)
+        ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;;
+     *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;;
+ 
+@@ -3978,7 +3978,7 @@
+   ac_prog_version=`$LD --version 2>&1 | sed -n 's/^.*GNU ld.* \([0-9][0-9]*\.[0-9.]*\).*$/\1/p'`
+   case $ac_prog_version in
+     '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
+-    2.1[3-9]*)
++    2.1[3-9]*|2.1[0-9][0-9]*|2.[2-9][0-9]*|[3-9].*|[1-9][0-9]*)
+        ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;;
+     *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;;
+ 
+--- a/configure.in	2014-10-23 21:05:36.165935000 +0900
++++ b/configure.in	2014-10-23 21:07:27.729935000 +0900
+@@ -734,10 +734,10 @@
+ # Accept binutils 2.13 or newer.
+ AC_CHECK_PROG_VER(AS, $AS, --version,
+ 		  [GNU assembler.* \([0-9]*\.[0-9.]*\)],
+-		  [2.1[3-9]*], AS=: critic_missing="$critic_missing as")
++		  [2.1[3-9]*|2.1[0-9][0-9]*|2.[2-9][0-9]*|[3-9].*|[1-9][0-9]*], AS=: critic_missing="$critic_missing as")
+ AC_CHECK_PROG_VER(LD, $LD, --version,
+ 		  [GNU ld.* \([0-9][0-9]*\.[0-9.]*\)],
+-		  [2.1[3-9]*], LD=: critic_missing="$critic_missing ld")
++		  [2.1[3-9]*|2.1[0-9][0-9]*|2.[2-9][0-9]*|[3-9].*|[1-9][0-9]*], LD=: critic_missing="$critic_missing ld")
+ 
+ # We need the physical current working directory.  We cannot use the
+ # "pwd -P" shell builtin since that's not portable.  Instead we try to
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/glibc-2.3-core-libgcc.patch	Sun Mar 08 21:59:33 2015 +0900
@@ -0,0 +1,31 @@
+--- a/Makerules	2004-12-16 03:52:39.000000000 +0900
++++ b/Makerules	2014-11-10 22:13:31.532959500 +0900
+@@ -604,7 +604,7 @@
+ 			 $(elfobjdir)/sofini.os \
+ 			 $(elfobjdir)/interp.os $(elfobjdir)/ld.so \
+ 			 $(common-objpfx)shlib.lds
+-	$(build-shlib)
++	$(build-shlib) -Wl,--allow-multiple-definition -Wl,-lgcc
+ ifeq ($(versioning),yes)
+ $(common-objpfx)libc.so: $(common-objpfx)libc.map
+ endif
+--- a/elf/Makefile	2005-07-18 10:19:48.000000000 +0900
++++ b/elf/Makefile	2014-11-02 20:25:51.969531800 +0900
+@@ -243,7 +243,7 @@
+ 
+ $(objpfx)librtld.map: $(objpfx)dl-allobjs.os $(common-objpfx)libc_pic.a
+ 	@-rm -f $@T
+-	$(reloc-link) -o $@.o '-Wl,-(' $^ -lgcc '-Wl,-)' -Wl,-Map,$@T
++	$(reloc-link) -o $@.o '-Wl,-(' $^ '-Wl,-)' -Wl,-Map,$@T
+ 	rm -f $@.o
+ 	mv -f $@T $@
+ 
+@@ -272,7 +272,7 @@
+ 	$(MAKE) -f $< -f rtld-Rules
+ 
+ $(objpfx)librtld.os: $(objpfx)dl-allobjs.os $(objpfx)rtld-libc.a
+-	$(LINK.o) -nostdlib -nostartfiles -r -o $@ '-Wl,-(' $^ -lgcc '-Wl,-)' \
++	$(LINK.o) -nostdlib -nostartfiles -r -o $@ '-Wl,-(' $^ '-Wl,-)' \
+ 		  -Wl,-Map,$@.map
+ 
+ generated += librtld.map librtld.mk rtld-libc.a librtld.os.map
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/glibc-2.3-elf-Makefile.patch	Sun Mar 08 21:59:33 2015 +0900
@@ -0,0 +1,57 @@
+
+http://sourceware.org/git/?p=glibc.git;a=commitdiff;h=f4a29fba078c48f9d4c78d06d2ed4bbdf95b3763
+
+http://sourceware.org/git/?p=glibc.git;a=commitdiff;h=800938a1268309932c20dc523bb226bcab4bfe18
+
+http://sourceware.org/git/?p=glibc.git;a=commitdiff;h=4e34ac6a1e256f40ab0d8eeed37aa1ea83440e76
+
+http://sourceware.org/git/?p=glibc.git;a=commitdiff;h=cb84d1e403cf2295307b398ab54cedc6bf9f8973
+
+http://sourceware.org/git/?p=glibc.git;a=commitdiff;h=2f978feb67c29ce3eb866aa719ed75ebdaabf4d1
+
+--- a/elf/Makefile	2005-07-18 10:19:48.000000000 +0900
++++ b/elf/Makefile	2014-11-08 22:33:53.923818700 +0900
+@@ -280,18 +280,16 @@
+ z-now-yes = -Wl,-z,now
+ 
+ $(objpfx)ld.so: $(objpfx)librtld.os $(ld-map)
+-	@rm -f $@.lds
+-	$(LINK.o) -nostdlib -nostartfiles -shared $(z-now-$(bind-now))	\
+-		  $(LDFLAGS-rtld) -Wl,-z,defs -Wl,--verbose 2>&1 |	\
+-		  LC_ALL=C \
+-		  sed -e '/^=========/,/^=========/!d;/^=========/d'	\
+-		      -e 's/\. = 0 + SIZEOF_HEADERS;/& _begin = . - SIZEOF_HEADERS;/' \
+-		  > $@.lds
+-	$(LINK.o) -nostdlib -nostartfiles -shared -o $@			\
++# Link into a temporary file so that we don't touch $@ at all
++# if the sanity check below fails.
++	$(LINK.o) -nostdlib -nostartfiles -shared -o $@.new		\
+ 		  $(LDFLAGS-rtld) -Wl,-z,defs $(z-now-$(bind-now))	\
+ 		  $(filter-out $(map-file),$^) $(load-map-file)		\
+-		  -Wl,-soname=$(rtld-installed-name) -T $@.lds
+-	rm -f $@.lds
++		  -Wl,-soname=$(rtld-installed-name)			\
++		  -Wl,-defsym=_begin=0
++	$(READELF) -s $@.new \
++	  | $(AWK) '($$7 ~ /^UND(|EF)$$/ && $$1 != "0:" && $$4 != "REGISTER") { print; p=1 } END { exit p != 0 }'
++	mv -f $@.new $@
+ 
+ # interp.c exists just to get this string into the libraries.
+ CFLAGS-interp.c = -D'RUNTIME_LINKER="$(slibdir)/$(rtld-installed-name)"' \
+--- a/elf/rtld.c	2005-04-06 11:49:51.000000000 +0900
++++ b/elf/rtld.c	2014-11-08 22:44:21.595910400 +0900
+@@ -343,10 +343,11 @@
+ #endif
+ 
+   /* This #define produces dynamic linking inline functions for
+-     bootstrap relocation instead of general-purpose relocation.  */
++     bootstrap relocation instead of general-purpose relocation.
++     Since ld.so must not have any undefined symbols the result
++     is trivial: always the map of ld.so itself.  */
+ #define RTLD_BOOTSTRAP
+-#define RESOLVE_MAP(sym, version, flags) \
+-  ((*(sym))->st_shndx == SHN_UNDEF ? 0 : &bootstrap_map)
++#define RESOLVE_MAP(sym, version, flags) (&bootstrap_map)
+ #define RESOLVE(sym, version, flags) \
+   ((*(sym))->st_shndx == SHN_UNDEF ? 0 : bootstrap_map.l_addr)
+ #include "dynamic-link.h"
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/glibc-2.3-i386-crti-crtn.patch	Sun Mar 08 21:59:33 2015 +0900
@@ -0,0 +1,351 @@
+Support crti.S and crtn.S provided directly by architectures.
+
+http://sourceware.org/git/?p=glibc.git;a=commitdiff;h=3add8e1353d62d77fdd9b4ca363cdfe7006b0efb
+
+http://sourceware.org/git/?p=glibc.git;a=commitdiff;h=d8e0ca509a83e832123f6ab508fce620159fb2dc
+
+--- a/csu/Makefile	2005-02-16 18:34:09.000000000 +0900
++++ b/csu/Makefile	2014-10-25 23:29:25.064874700 +0900
+@@ -99,6 +99,13 @@
+ 
+ install-lib += $(crtstuff:=.o)
+ extra-objs += $(crtstuff:=.o)
++
++# Conditionals on the existence of a sysdeps version of crti.S are
++# temporary until all targets either have such a file or have been
++# removed, after which the old approach of postprocessing compiler
++# output will be removed.
++ifeq (,$(wildcard $(full_config_sysdirs:%=%/crti.S)))
++
+ generated += $(crtstuff:=.S) initfini.s defs.h
+ omit-deps += $(crtstuff)
+ 
+@@ -137,6 +144,8 @@
+ 
+ endif
+ 
++endif
++
+ ifeq (yes,$(elf))
+ extra-objs += abi-note.o init.o
+ asm-CPPFLAGS += -I$(objpfx).
+--- a/nptl/Makefile	2005-07-18 12:20:10.000000000 +0900
++++ b/nptl/Makefile	2014-10-25 23:38:07.674430000 +0900
+@@ -319,15 +319,23 @@
+ generated-dirs := $(firstword $(subst /, , $(multidir)))
+ crti-objs += $(multidir)/crti.o
+ crtn-objs += $(multidir)/crtn.o
++# Conditionals on the existence of a sysdeps version of crti.S are
++# temporary until all targets either have such a file or have been
++# removed, after which the old approach of postprocessing compiler
++# output will be removed.
++ifeq (,$(wildcard $(full_config_sysdirs:%=%/crti.S)))
+ omit-deps += $(multidir)/crti $(multidir)/crtn
++endif
+ $(objpfx)$(multidir):
+ 	mkdir $@
+ endif
+ extra-objs += $(crti-objs) $(crtn-objs)
++ifeq (,$(wildcard $(full_config_sysdirs:%=%/crti.S)))
+ omit-deps += crti crtn
+ 
+ CFLAGS-pt-initfini.s = -g0 -fPIC -fno-inline-functions $(fno-unit-at-a-time)
+ endif
++endif
+ 
+ CFLAGS-flockfile.c = -D_IO_MTSAFE_IO
+ CFLAGS-ftrylockfile.c = -D_IO_MTSAFE_IO
+@@ -514,15 +522,24 @@
+ endif
+ 
+ ifeq ($(build-shared),yes)
++ifeq (,$(wildcard $(full_config_sysdirs:%=%/crti.S)))
+ vpath pt-initfini.c $(full_config_sysdirs)
+ 
+ $(objpfx)pt-initfini.s: pt-initfini.c
+ 	$(compile.c) -S $(CFLAGS-pt-initfini.s) -finhibit-size-directive \
+ 		$(patsubst -f%,-fno-%,$(exceptions)) -o $@
++endif
+ 
+ $(objpfx)tst-cleanup0.out: /dev/null $(objpfx)tst-cleanup0
+ 	$(make-test-out) 2>&1 | cmp - tst-cleanup0.expect >& $@
+ 
++ifneq (,$(wildcard $(full_config_sysdirs:%=%/crti.S)))
++
++$(objpfx)crti.o: $(objpfx)pt-crti.o
++	ln -f $< $@
++
++else
++
+ # We only have one kind of startup code files.  Static binaries and
+ # shared libraries are build using the PIC version.
+ $(objpfx)crti.S: $(objpfx)pt-initfini.s
+@@ -544,6 +561,8 @@
+ $(objpfx)crtn.o: $(objpfx)crtn.S $(objpfx)defs.h
+ 	$(compile.S) -g0 $(ASFLAGS-.os) -o $@
+ 
++endif
++
+ ifneq ($(multidir),.)
+ $(objpfx)$(multidir)/crti.o: $(objpfx)crti.o $(objpfx)$(multidir)/
+ 	ln -f $< $@
+--- /dev/null	2014-10-25 23:44:22.000000000 +0900
++++ glibc-2.3-20070416/nptl/pt-crti.S	2014-10-25 23:43:18.445954300 +0900
+@@ -0,0 +1,44 @@
++/* Special .init and .fini section support for libpthread.
++   Copyright (C) 2012 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   In addition to the permissions in the GNU Lesser General Public
++   License, the Free Software Foundation gives you unlimited
++   permission to link the compiled version of this file with other
++   programs, and to distribute those programs without any restriction
++   coming from the use of this file. (The GNU Lesser General Public
++   License restrictions do apply in other respects; for example, they
++   cover modification of the file, and distribution when not linked
++   into another program.)
++
++   Note that people who make modified versions of this file are not
++   obligated to grant this special exception for their modified
++   versions; it is their choice whether to do so. The GNU Lesser
++   General Public License gives permission to release a modified
++   version without this exception; this exception also makes it
++   possible to release a modified version which carries forward this
++   exception.
++
++   The GNU C Library is distributed in the hope that it will be useful,
++   but WITHOUT ANY WARRANTY; without even the implied warranty of
++   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, write to the Free
++   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++   02111-1307 USA.  */
++
++/* Arrange for __pthread_initialize_minimal_internal to be called at
++   libpthread startup, instead of conditionally calling
++   __gmon_start__.  */
++
++#define PREINIT_FUNCTION __pthread_initialize_minimal_internal
++#define PREINIT_FUNCTION_WEAK 0
++
++#include <crti.S>
+--- a/sysdeps/i386/Makefile	2014-10-25 23:48:17.508557000 +0900
++++ b/sysdeps/i386/Makefile	2014-10-25 23:48:48.242942200 +0900
+@@ -5,12 +5,6 @@
+ # The i386 `long double' is a distinct type we support.
+ long-double-fcts = yes
+ 
+-ifeq ($(subdir),csu)
+-# On i686 we must avoid generating the trampoline functions generated
+-# to get the GOT pointer.
+-CFLAGS-initfini.s += -march=i386 -mtune=i386
+-endif
+-
+ ifeq ($(subdir),gmon)
+ sysdep_routines += i386-mcount
+ endif
+--- /dev/null	2014-10-25 23:52:40.000000000 +0900
++++ glibc-2.3-20070416/sysdeps/i386/crti.S	2014-10-25 23:51:39.255562800 +0900
+@@ -0,0 +1,85 @@
++/* Special .init and .fini section support for x86.
++   Copyright (C) 1995-2012 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   In addition to the permissions in the GNU Lesser General Public
++   License, the Free Software Foundation gives you unlimited
++   permission to link the compiled version of this file with other
++   programs, and to distribute those programs without any restriction
++   coming from the use of this file. (The GNU Lesser General Public
++   License restrictions do apply in other respects; for example, they
++   cover modification of the file, and distribution when not linked
++   into another program.)
++
++   Note that people who make modified versions of this file are not
++   obligated to grant this special exception for their modified
++   versions; it is their choice whether to do so. The GNU Lesser
++   General Public License gives permission to release a modified
++   version without this exception; this exception also makes it
++   possible to release a modified version which carries forward this
++   exception.
++
++   The GNU C Library is distributed in the hope that it will be useful,
++   but WITHOUT ANY WARRANTY; without even the implied warranty of
++   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, write to the Free
++   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++   02111-1307 USA.  */
++
++/* crti.S puts a function prologue at the beginning of the .init and
++   .fini sections and defines global symbols for those addresses, so
++   they can be called as functions.  The symbols _init and _fini are
++   magic and cause the linker to emit DT_INIT and DT_FINI.  */
++
++#include <libc-symbols.h>
++#include <sysdep.h>
++
++#ifndef PREINIT_FUNCTION
++# define PREINIT_FUNCTION __gmon_start__
++#endif
++
++#ifndef PREINIT_FUNCTION_WEAK
++# define PREINIT_FUNCTION_WEAK 1
++#endif
++
++#if PREINIT_FUNCTION_WEAK
++	weak_extern (PREINIT_FUNCTION)
++#else
++	.hidden PREINIT_FUNCTION
++#endif
++
++	.section .init,"ax",@progbits
++	.p2align 2
++	.globl _init
++	.type _init, @function
++_init:
++	pushl %ebx
++	/* Maintain 16-byte stack alignment for called functions.  */
++	subl $8, %esp
++	LOAD_PIC_REG (bx)
++#if PREINIT_FUNCTION_WEAK
++	movl PREINIT_FUNCTION@GOT(%ebx), %eax
++	testl %eax, %eax
++	je .Lno_weak_fn
++	call PREINIT_FUNCTION@PLT
++.Lno_weak_fn:
++#else
++	call PREINIT_FUNCTION
++#endif
++
++	.section .fini,"ax",@progbits
++	.p2align 2
++	.globl _fini
++	.type _fini, @function
++_fini:
++	pushl %ebx
++	subl $8, %esp
++	LOAD_PIC_REG (bx)
+--- /dev/null	2014-10-25 23:53:42.000000000 +0900
++++ glibc-2.3-20070416/sysdeps/i386/crtn.S	2014-10-25 23:53:12.068095000 +0900
+@@ -0,0 +1,48 @@
++/* Special .init and .fini section support for x86.
++   Copyright (C) 1995-2012 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   In addition to the permissions in the GNU Lesser General Public
++   License, the Free Software Foundation gives you unlimited
++   permission to link the compiled version of this file with other
++   programs, and to distribute those programs without any restriction
++   coming from the use of this file. (The GNU Lesser General Public
++   License restrictions do apply in other respects; for example, they
++   cover modification of the file, and distribution when not linked
++   into another program.)
++
++   Note that people who make modified versions of this file are not
++   obligated to grant this special exception for their modified
++   versions; it is their choice whether to do so. The GNU Lesser
++   General Public License gives permission to release a modified
++   version without this exception; this exception also makes it
++   possible to release a modified version which carries forward this
++   exception.
++
++   The GNU C Library is distributed in the hope that it will be useful,
++   but WITHOUT ANY WARRANTY; without even the implied warranty of
++   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, write to the Free
++   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++   02111-1307 USA.  */
++
++/* crtn.S puts function epilogues in the .init and .fini sections
++   corresponding to the prologues in crti.S. */
++
++	.section .init,"ax",@progbits
++	addl $8, %esp
++	popl %ebx
++	ret
++
++	.section .fini,"ax",@progbits
++	addl $8, %esp
++	popl %ebx
++	ret
+--- a/sysdeps/i386/sysdep.h	2003-03-10 18:10:46.000000000 +0900
++++ b/sysdeps/i386/sysdep.h	2014-10-29 21:50:27.195372500 +0900
+@@ -19,6 +19,31 @@
+ 
+ #include <sysdeps/generic/sysdep.h>
+ 
++#include <features.h> /* For __GNUC_PREREQ.  */
++
++/* It is desirable that the names of PIC thunks match those used by
++   GCC so that multiple copies are eliminated by the linker.  Because
++   GCC 4.6 and earlier use __i686 in the names, it is necessary to
++   override that predefined macro.  */
++#if defined __i686 && defined __ASSEMBLER__
++#undef __i686
++#define __i686 __i686
++#endif
++
++#ifdef	__ASSEMBLER__
++# if __GNUC_PREREQ (4, 7)
++#  define GET_PC_THUNK(reg) __x86.get_pc_thunk.reg
++# else
++#  define GET_PC_THUNK(reg) __i686.get_pc_thunk.reg
++# endif
++#else
++# if __GNUC_PREREQ (4, 7)
++#  define GET_PC_THUNK_STR(reg) "__x86.get_pc_thunk." #reg
++# else
++#  define GET_PC_THUNK_STR(reg) "__i686.get_pc_thunk." #reg
++# endif
++#endif
++
+ #ifdef	__ASSEMBLER__
+ 
+ /* Syntactic details of assembler.  */
+@@ -117,6 +142,24 @@
+ #define	PSEUDO_END(name)						      \
+   END (name)
+ 
++# define SETUP_PIC_REG(reg) \
++  .ifndef GET_PC_THUNK(reg);						      \
++  .section .gnu.linkonce.t.GET_PC_THUNK(reg),"ax",@progbits;		      \
++  .globl GET_PC_THUNK(reg);						      \
++  .hidden GET_PC_THUNK(reg);						      \
++  .p2align 4;								      \
++  .type GET_PC_THUNK(reg),@function;					      \
++GET_PC_THUNK(reg):							      \
++  movl (%esp), %e##reg;							      \
++  ret;									      \
++  .size GET_PC_THUNK(reg), . - GET_PC_THUNK(reg);			      \
++  .previous;								      \
++  .endif;								      \
++  call GET_PC_THUNK(reg)
++
++# define LOAD_PIC_REG(reg) \
++  SETUP_PIC_REG(reg); addl $_GLOBAL_OFFSET_TABLE_, %e##reg
++
+ #undef JUMPTARGET
+ #ifdef PIC
+ #define JUMPTARGET(name)	name##@PLT
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/glibc-2.3-linux-ppc-sysdeps-generic-strtol_l.patch	Sun Mar 08 21:59:33 2015 +0900
@@ -0,0 +1,52 @@
+http://sourceware.org/git/?p=glibc.git;a=commitdiff;h=2d1e6277e92bd907578cd01d017b1d6aa34485be
+
+--- a/sysdeps/generic/strtol_l.c	2004-06-16 04:54:57.000000000 +0900
++++ b/sysdeps/generic/strtol_l.c	2015-01-28 20:05:02.461060800 +0900
+@@ -168,10 +168,15 @@
+ /* Define tables of maximum values and remainders in order to detect
+    overflow.  Do this at compile-time in order to avoid the runtime
+    overhead of the division.  */
++extern const unsigned long __strtol_ul_max_tab[] attribute_hidden;
++extern const unsigned char __strtol_ul_rem_tab[] attribute_hidden;
++#if defined(QUAD) && __WORDSIZE == 32
++extern const unsigned long long __strtol_ull_max_tab[] attribute_hidden;
++extern const unsigned char __strtol_ull_rem_tab[] attribute_hidden;
++#endif
+ 
+ #define DEF(TYPE, NAME)							   \
+-  const TYPE NAME[] attribute_hidden					   \
+-	__attribute__((section(".gnu.linkonce.r." #NAME))) =		   \
++  const TYPE NAME[] attribute_hidden =					   \
+   {									   \
+     F(2), F(3), F(4), F(5), F(6), F(7), F(8), F(9), F(10), 		   \
+     F(11), F(12), F(13), F(14), F(15), F(16), F(17), F(18), F(19), F(20),  \
+@@ -179,20 +184,22 @@
+     F(31), F(32), F(33), F(34), F(35), F(36)				   \
+   }
+ 
+-#define F(X)	ULONG_MAX / X
++#if !UNSIGNED && !defined (USE_WIDE_CHAR) && !defined (QUAD)
++# define F(X)	ULONG_MAX / X
+   DEF (unsigned long, __strtol_ul_max_tab);
+-#undef F
+-#if defined(QUAD) && __WORDSIZE == 32
++# undef F
++# define F(X)	ULONG_MAX % X
++  DEF (unsigned char, __strtol_ul_rem_tab);
++# undef F
++#endif
++#if !UNSIGNED && !defined (USE_WIDE_CHAR) && defined (QUAD) \
++    && __WORDSIZE == 32
+ # define F(X)	ULONG_LONG_MAX / X
+   DEF (unsigned long long, __strtol_ull_max_tab);
+ # undef F
+ # define F(X)	ULONG_LONG_MAX % X
+   DEF (unsigned char, __strtol_ull_rem_tab);
+ # undef F
+-#else
+-# define F(X)	ULONG_MAX % X
+-  DEF (unsigned char, __strtol_ul_rem_tab);
+-# undef F
+ #endif
+ #undef DEF
+ 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/glibc-2.3-linuxthreads-crti-crtn.patch	Sun Mar 08 21:59:33 2015 +0900
@@ -0,0 +1,105 @@
+This linuxthreads patch was created based on the following nptl patch.
+
+http://sourceware.org/git/?p=glibc.git;a=commitdiff;h=3add8e1353d62d77fdd9b4ca363cdfe7006b0efb
+
+--- a/linuxthreads/Makefile	2005-02-16 20:26:38.000000000 +0900
++++ b/linuxthreads/Makefile	2014-11-12 18:47:29.238567100 +0900
+@@ -97,13 +97,21 @@
+ generated-dirs := $(firstword $(subst /, , $(multidir)))
+ crti-objs += $(multidir)/crti.o
+ crtn-objs += $(multidir)/crtn.o
++# Conditionals on the existence of a sysdeps version of crti.S are
++# temporary until all targets either have such a file or have been
++# removed, after which the old approach of postprocessing compiler
++# output will be removed.
++ifeq (,$(wildcard $(sysdirs:%=%/crti.S)))
+ omit-deps += $(multidir)/crti $(multidir)/crtn
+ endif
++endif
+ extra-objs += $(crti-objs) $(crtn-objs)
++ifeq (,$(wildcard $(sysdirs:%=%/crti.S)))
+ omit-deps += crti crtn
+ 
+ CFLAGS-pt-initfini.s = -g0 -fPIC -fno-inline-functions $(fno-unit-at-a-time)
+ endif
++endif
+ 
+ librt-tests = ex10 ex11 tst-clock1
+ tests = ex1 ex2 ex3 ex4 ex5 ex6 ex7 ex8 ex9 $(librt-tests) ex12 ex13 joinrace \
+@@ -268,11 +276,20 @@
+ endif
+ 
+ ifeq ($(build-shared),yes)
++ifeq (,$(wildcard $(sysdirs:%=%/crti.S)))
+ vpath pt-initfini.c $(full_config_sysdirs)
+ 
+ $(objpfx)pt-initfini.s: pt-initfini.c
+ 	$(compile.c) -S $(CFLAGS-pt-initfini.s) -finhibit-size-directive \
+ 		$(patsubst -f%,-fno-%,$(exceptions)) -o $@
++endif
++
++ifneq (,$(wildcard $(sysdirs:%=%/crti.S)))
++
++$(objpfx)crti.o: $(objpfx)pt-crti.o
++	ln -f $< $@
++
++else
+ 
+ # We only have one kind of startup code files.  Static binaries and
+ # shared libraries are build using the PIC version.
+@@ -295,6 +312,8 @@
+ $(objpfx)crtn.o: $(objpfx)crtn.S $(objpfx)defs.h
+ 	$(compile.S) -g0 $(ASFLAGS-.os) -o $@
+ 
++endif
++
+ ifneq ($(multidir),.)
+ $(objpfx)$(multidir):
+ 	@mkdir -p $(objpfx)$(multidir)
+--- /dev/null	2014-10-25 23:44:22.000000000 +0900
++++ b/linuxthreads/pt-crti.S	2014-10-25 23:43:18.445954300 +0900
+@@ -0,0 +1,44 @@
++/* Special .init and .fini section support for libpthread.
++   Copyright (C) 2012 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   In addition to the permissions in the GNU Lesser General Public
++   License, the Free Software Foundation gives you unlimited
++   permission to link the compiled version of this file with other
++   programs, and to distribute those programs without any restriction
++   coming from the use of this file. (The GNU Lesser General Public
++   License restrictions do apply in other respects; for example, they
++   cover modification of the file, and distribution when not linked
++   into another program.)
++
++   Note that people who make modified versions of this file are not
++   obligated to grant this special exception for their modified
++   versions; it is their choice whether to do so. The GNU Lesser
++   General Public License gives permission to release a modified
++   version without this exception; this exception also makes it
++   possible to release a modified version which carries forward this
++   exception.
++
++   The GNU C Library is distributed in the hope that it will be useful,
++   but WITHOUT ANY WARRANTY; without even the implied warranty of
++   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, write to the Free
++   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++   02111-1307 USA.  */
++
++/* Arrange for __pthread_initialize_minimal_internal to be called at
++   libpthread startup, instead of conditionally calling
++   __gmon_start__.  */
++
++#define PREINIT_FUNCTION __pthread_initialize_minimal
++#define PREINIT_FUNCTION_WEAK 0
++
++#include <crti.S>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/glibc-2.3-misc-sys-cdefs-inline.patch	Sun Mar 08 21:59:33 2015 +0900
@@ -0,0 +1,816 @@
+
+http://sourceware.org/ml/glibc-bugs/2006-12/msg00001.html
+http://sourceware.org/git/?p=glibc.git;a=commitdiff;h=de1c3ebb59c9e9f7caaf5a71920fe613e3e7cfaa
+http://sourceware.org/git/?p=glibc.git;a=commitdiff;h=b037a293a48718af30d706c2e18c929d0e69a621
+
+--- a/sysdeps/i386/fpu/bits/mathinline.h	2004-09-08 07:23:42.000000000 +0900
++++ b/sysdeps/i386/fpu/bits/mathinline.h	2014-10-31 21:51:30.528409400 +0900
+@@ -23,10 +23,10 @@
+ # error "Never use <bits/mathinline.h> directly; include <math.h> instead."
+ #endif
+ 
+-#ifdef __cplusplus
++#ifndef __extern_inline
+ # define __MATH_INLINE __inline
+ #else
+-# define __MATH_INLINE extern __inline
++# define __MATH_INLINE __extern_inline
+ #endif
+ 
+ 
+--- a/misc/sys/cdefs.h	2004-10-18 13:17:13.000000000 +0900
++++ b/misc/sys/cdefs.h	2014-10-31 22:02:58.733429500 +0900
+@@ -255,6 +255,32 @@
+ # define __nonnull(params)
+ #endif
+ 
++/* GCC 4.3 and above with -std=c99 or -std=gnu99 implements ISO C99
++   inline semantics, unless -fgnu89-inline is used.  Using __GNUC_STDC_INLINE__
++   or __GNUC_GNU_INLINE is not a good enough check for gcc because gcc versions
++   older than 4.3 may define these macros and still not guarantee GNU inlining
++   semantics.
++
++   clang++ identifies itself as gcc-4.2, but has support for GNU inlining
++   semantics, that can be checked fot by using the __GNUC_STDC_INLINE_ and
++   __GNUC_GNU_INLINE__ macro definitions.  */
++#if (!defined __cplusplus || __GNUC_PREREQ (4,3) \
++     || (defined __clang__ && (defined __GNUC_STDC_INLINE__ \
++			       || defined __GNUC_GNU_INLINE__)))
++# if defined __GNUC_STDC_INLINE__ || defined __cplusplus
++#  define __extern_inline extern __inline __attribute__ ((__gnu_inline__))
++#  define __extern_always_inline \
++  extern __always_inline __attribute__ ((__gnu_inline__))
++# else
++#  define __extern_inline extern __inline
++#  define __extern_always_inline extern __always_inline
++# endif
++#endif
++
++#ifdef __extern_always_inline
++# define __fortify_function __extern_always_inline __attribute_artificial__
++#endif
++
+ /* It is possible to compile containing GCC extensions even if GCC is
+    run in pedantic mode if the uses are carefully marked using the
+    `__extension__' keyword.  But this is not generally available before
+--- a/stdlib/stdlib.h	2005-07-18 10:15:30.000000000 +0900
++++ b/stdlib/stdlib.h	2014-10-31 23:40:25.492451800 +0900
+@@ -321,18 +321,18 @@
+ /* Define inline functions which call the internal entry points.  */
+ 
+ __BEGIN_NAMESPACE_STD
+-extern __inline double
++__extern_inline double
+ __NTH (strtod (__const char *__restrict __nptr, char **__restrict __endptr))
+ {
+   return __strtod_internal (__nptr, __endptr, 0);
+ }
+-extern __inline long int
++__extern_inline long int
+ __NTH (strtol (__const char *__restrict __nptr, char **__restrict __endptr,
+ 	       int __base))
+ {
+   return __strtol_internal (__nptr, __endptr, __base, 0);
+ }
+-extern __inline unsigned long int
++__extern_inline unsigned long int
+ __NTH (strtoul (__const char *__restrict __nptr, char **__restrict __endptr,
+ 		int __base))
+ {
+@@ -342,12 +342,12 @@
+ 
+ # ifdef __USE_ISOC99
+ __BEGIN_NAMESPACE_C99
+-extern __inline float
++__extern_inline float
+ __NTH (strtof (__const char *__restrict __nptr, char **__restrict __endptr))
+ {
+   return __strtof_internal (__nptr, __endptr, 0);
+ }
+-extern __inline long double
++__extern_inline long double
+ __NTH (strtold (__const char *__restrict __nptr, char **__restrict __endptr))
+ {
+   return __strtold_internal (__nptr, __endptr, 0);
+@@ -356,13 +356,13 @@
+ # endif
+ 
+ # ifdef __USE_BSD
+-__extension__ extern __inline long long int
++__extension__ __extern_inline long long int
+ __NTH (strtoq (__const char *__restrict __nptr, char **__restrict __endptr,
+ 	       int __base))
+ {
+   return __strtoll_internal (__nptr, __endptr, __base, 0);
+ }
+-__extension__ extern __inline unsigned long long int
++__extension__ __extern_inline unsigned long long int
+ __NTH (strtouq (__const char *__restrict __nptr, char **__restrict __endptr,
+ 		int __base))
+ {
+@@ -372,13 +372,13 @@
+ 
+ # if defined __USE_MISC || defined __USE_ISOC99
+ __BEGIN_NAMESPACE_C99
+-__extension__ extern __inline long long int
++__extension__ __extern_inline long long int
+ __NTH (strtoll (__const char *__restrict __nptr, char **__restrict __endptr,
+ 		int __base))
+ {
+   return __strtoll_internal (__nptr, __endptr, __base, 0);
+ }
+-__extension__ extern __inline unsigned long long int
++__extension__ __extern_inline unsigned long long int
+ __NTH (strtoull (__const char * __restrict __nptr, char **__restrict __endptr,
+ 		 int __base))
+ {
+@@ -388,17 +388,17 @@
+ # endif
+ 
+ __BEGIN_NAMESPACE_STD
+-extern __inline double
++__extern_inline double
+ __NTH (atof (__const char *__nptr))
+ {
+   return strtod (__nptr, (char **) NULL);
+ }
+-extern __inline int
++__extern_inline int
+ __NTH (atoi (__const char *__nptr))
+ {
+   return (int) strtol (__nptr, (char **) NULL, 10);
+ }
+-extern __inline long int
++__extern_inline long int
+ __NTH (atol (__const char *__nptr))
+ {
+   return strtol (__nptr, (char **) NULL, 10);
+@@ -407,7 +407,7 @@
+ 
+ # if defined __USE_MISC || defined __USE_ISOC99
+ __BEGIN_NAMESPACE_C99
+-__extension__ extern __inline long long int
++__extension__ __extern_inline long long int
+ __NTH (atoll (__const char *__nptr))
+ {
+   return strtoll (__nptr, (char **) NULL, 10);
+--- a/include/stdlib.h	2005-07-18 10:15:31.000000000 +0900
++++ b/include/stdlib.h	2014-10-31 23:51:07.830765300 +0900
+@@ -141,43 +141,43 @@
+ libc_hidden_proto (____strtoul_l_internal)
+ libc_hidden_proto (____strtoull_l_internal)
+ 
+-extern __inline double
++__extern_inline double
+ __strtod_l (__const char *__restrict __nptr, char **__restrict __endptr,
+ 	    __locale_t __loc)
+ {
+   return ____strtod_l_internal (__nptr, __endptr, 0, __loc);
+ }
+-extern __inline long int
++__extern_inline long int
+ __strtol_l (__const char *__restrict __nptr, char **__restrict __endptr,
+ 	    int __base, __locale_t __loc)
+ {
+   return ____strtol_l_internal (__nptr, __endptr, __base, 0, __loc);
+ }
+-extern __inline unsigned long int
++__extern_inline unsigned long int
+ __strtoul_l (__const char *__restrict __nptr, char **__restrict __endptr,
+ 	     int __base, __locale_t __loc)
+ {
+   return ____strtoul_l_internal (__nptr, __endptr, __base, 0, __loc);
+ }
+-extern __inline float
++__extern_inline float
+ __strtof_l (__const char *__restrict __nptr, char **__restrict __endptr,
+ 	    __locale_t __loc)
+ {
+   return ____strtof_l_internal (__nptr, __endptr, 0, __loc);
+ }
+-extern __inline long double
++__extern_inline long double
+ __strtold_l (__const char *__restrict __nptr, char **__restrict __endptr,
+ 	     __locale_t __loc)
+ {
+   return ____strtold_l_internal (__nptr, __endptr, 0, __loc);
+ }
+-__extension__ extern __inline long long int
++__extension__ __extern_inline long long int
+ __strtoll_l (__const char *__restrict __nptr, char **__restrict __endptr,
+ 	     int __base, __locale_t __loc)
+ {
+   return ____strtoll_l_internal (__nptr, __endptr, __base, 0, __loc);
+ }
+-__extension__ extern __inline unsigned long long int
++__extension__ __extern_inline unsigned long long int
+ __strtoull_l (__const char * __restrict __nptr, char **__restrict __endptr,
+ 	      int __base, __locale_t __loc)
+ {
+--- a/sysdeps/generic/inttypes.h	2004-09-08 07:23:42.000000000 +0900
++++ b/sysdeps/generic/inttypes.h	2014-11-20 20:09:25.486639100 +0900
+@@ -330,7 +330,7 @@
+ 				   int __base, int __group) __THROW;
+ #   define __strtol_internal_defined	1
+ #  endif
+-extern __inline intmax_t
++__extern_inline intmax_t
+ __NTH (strtoimax (__const char *__restrict nptr, char **__restrict endptr,
+ 		  int base))
+ {
+@@ -345,7 +345,7 @@
+ 					     int __base, int __group) __THROW;
+ #   define __strtoul_internal_defined	1
+ #  endif
+-extern __inline uintmax_t
++__extern_inline uintmax_t
+ __NTH (strtoumax (__const char *__restrict nptr, char **__restrict endptr,
+ 		  int base))
+ {
+@@ -359,7 +359,7 @@
+ 				   int __base, int __group) __THROW;
+ #   define __wcstol_internal_defined	1
+ #  endif
+-extern __inline intmax_t
++__extern_inline intmax_t
+ __NTH (wcstoimax (__const __gwchar_t *__restrict nptr,
+ 		  __gwchar_t **__restrict endptr, int base))
+ {
+@@ -376,7 +376,7 @@
+ 					     int __base, int __group) __THROW;
+ #   define __wcstoul_internal_defined	1
+ #  endif
+-extern __inline uintmax_t
++__extern_inline uintmax_t
+ __NTH (wcstoumax (__const __gwchar_t *__restrict nptr,
+ 		  __gwchar_t **__restrict endptr, int base))
+ {
+@@ -393,7 +393,7 @@
+ 					 int __base, int __group) __THROW;
+ #   define __strtoll_internal_defined	1
+ #  endif
+-extern __inline intmax_t
++__extern_inline intmax_t
+ __NTH (strtoimax (__const char *__restrict nptr, char **__restrict endptr,
+ 		  int base))
+ {
+@@ -411,7 +411,7 @@
+ 						   int __group) __THROW;
+ #   define __strtoull_internal_defined	1
+ #  endif
+-extern __inline uintmax_t
++__extern_inline uintmax_t
+ __NTH (strtoumax (__const char *__restrict nptr, char **__restrict endptr,
+ 		  int base))
+ {
+@@ -427,7 +427,7 @@
+ 					 int __base, int __group) __THROW;
+ #   define __wcstoll_internal_defined	1
+ #  endif
+-extern __inline intmax_t
++__extern_inline intmax_t
+ __NTH (wcstoimax (__const __gwchar_t *__restrict nptr,
+ 		  __gwchar_t **__restrict endptr, int base))
+ {
+@@ -446,7 +446,7 @@
+ 						   int __group) __THROW;
+ #   define __wcstoull_internal_defined	1
+ #  endif
+-extern __inline uintmax_t
++__extern_inline uintmax_t
+ __NTH (wcstoumax (__const __gwchar_t *__restrict nptr,
+ 		  __gwchar_t **__restrict endptr, int base))
+ {
+--- a/libio/bits/stdio.h	2004-09-08 07:23:44.000000000 +0900
++++ b/libio/bits/stdio.h	2014-11-01 00:23:54.329331000 +0900
+@@ -24,7 +24,7 @@
+ #ifdef __cplusplus
+ # define __STDIO_INLINE inline
+ #else
+-# define __STDIO_INLINE extern __inline
++# define __STDIO_INLINE __extern_inline
+ #endif
+ 
+ 
+--- a/string/argz.h	2004-09-08 07:23:43.000000000 +0900
++++ b/string/argz.h	2014-11-01 22:35:46.405658900 +0900
+@@ -160,7 +160,7 @@
+ 			__const char *__restrict __entry) __THROW;
+ 
+ #ifdef __USE_EXTERN_INLINES
+-extern inline char *
++__extern_inline char *
+ __NTH (__argz_next (__const char *__argz, size_t __argz_len,
+ 		    __const char *__entry))
+ {
+@@ -174,7 +174,7 @@
+   else
+     return __argz_len > 0 ? (char *) __argz : 0;
+ }
+-extern inline char *
++__extern_inline char *
+ __NTH (argz_next (__const char *__argz, size_t __argz_len,
+ 		  __const char *__entry))
+ {
+--- a/wcsmbs/wchar.h	2004-09-08 07:18:58.000000000 +0900
++++ b/wcsmbs/wchar.h	2014-11-02 10:13:04.769030700 +0900
+@@ -320,7 +320,7 @@
+ 
+ #ifdef __USE_EXTERN_INLINES
+ /* Define inline function as optimization.  */
+-extern __inline size_t
++__extern_inline size_t
+ __NTH (mbrlen (__const char *__restrict __s, size_t __n,
+ 	       mbstate_t *__restrict __ps))
+ { return (__ps != NULL
+@@ -526,38 +526,38 @@
+ /* Define inline functions which call the internal entry points.  */
+ __BEGIN_NAMESPACE_C99
+ 
+-extern __inline double
++__extern_inline double
+ __NTH (wcstod (__const wchar_t *__restrict __nptr,
+ 	       wchar_t **__restrict __endptr))
+ { return __wcstod_internal (__nptr, __endptr, 0); }
+-extern __inline long int
++__extern_inline long int
+ __NTH (wcstol (__const wchar_t *__restrict __nptr,
+ 	       wchar_t **__restrict __endptr, int __base))
+ { return __wcstol_internal (__nptr, __endptr, __base, 0); }
+-extern __inline unsigned long int
++__extern_inline unsigned long int
+ __NTH (wcstoul (__const wchar_t *__restrict __nptr,
+ 		wchar_t **__restrict __endptr, int __base))
+ { return __wcstoul_internal (__nptr, __endptr, __base, 0); }
+ __END_NAMESPACE_C99
+ 
+ # ifdef __USE_GNU
+-extern __inline float
++__extern_inline float
+ __NTH (wcstof (__const wchar_t *__restrict __nptr,
+ 	       wchar_t **__restrict __endptr))
+ { return __wcstof_internal (__nptr, __endptr, 0); }
+-extern __inline long double
++__extern_inline long double
+ __NTH (wcstold (__const wchar_t *__restrict __nptr,
+ 		wchar_t **__restrict __endptr))
+ { return __wcstold_internal (__nptr, __endptr, 0); }
+ 
+ 
+ __extension__
+-extern __inline long long int
++__extern_inline long long int
+ __NTH (wcstoq (__const wchar_t *__restrict __nptr,
+ 	       wchar_t **__restrict __endptr, int __base))
+ { return __wcstoll_internal (__nptr, __endptr, __base, 0); }
+ __extension__
+-extern __inline unsigned long long int
++__extern_inline unsigned long long int
+ __NTH (wcstouq (__const wchar_t *__restrict __nptr,
+ 		wchar_t **__restrict __endptr, int __base))
+ { return __wcstoull_internal (__nptr, __endptr, __base, 0); }
+--- a/include/sys/stat.h	2002-08-13 09:23:12.000000000 +0900
++++ b/include/sys/stat.h	2014-11-02 10:42:42.262380300 +0900
+@@ -19,12 +19,12 @@
+ hidden_proto (__xstat)
+ hidden_proto (__xstat64)
+ #endif
+-extern __inline__ int __stat (__const char *__path, struct stat *__statbuf)
++__extern_inline int __stat (__const char *__path, struct stat *__statbuf)
+ {
+   return __xstat (_STAT_VER, __path, __statbuf);
+ }
+ libc_hidden_proto (__xmknod)
+-extern __inline__ int __mknod (__const char *__path, __mode_t __mode,
++__extern_inline int __mknod (__const char *__path, __mode_t __mode,
+ 			       __dev_t __dev)
+ {
+   return __xmknod (_MKNOD_VER, __path, __mode, &__dev);
+--- a/io/sys/stat.h	2004-09-17 17:22:21.000000000 +0900
++++ b/io/sys/stat.h	2014-11-02 10:44:23.137417700 +0900
+@@ -360,28 +360,28 @@
+ #if defined __GNUC__ && __GNUC__ >= 2
+ /* Inlined versions of the real stat and mknod functions.  */
+ 
+-extern __inline__ int
++__extern_inline int
+ __NTH (stat (__const char *__path, struct stat *__statbuf))
+ {
+   return __xstat (_STAT_VER, __path, __statbuf);
+ }
+ 
+ # if defined __USE_BSD || defined __USE_XOPEN_EXTENDED
+-extern __inline__ int
++__extern_inline int
+ __NTH (lstat (__const char *__path, struct stat *__statbuf))
+ {
+   return __lxstat (_STAT_VER, __path, __statbuf);
+ }
+ # endif
+ 
+-extern __inline__ int
++__extern_inline int
+ __NTH (fstat (int __fd, struct stat *__statbuf))
+ {
+   return __fxstat (_STAT_VER, __fd, __statbuf);
+ }
+ 
+ # if defined __USE_MISC || defined __USE_BSD
+-extern __inline__ int
++__extern_inline int
+ __NTH (mknod (__const char *__path, __mode_t __mode, __dev_t __dev))
+ {
+   return __xmknod (_MKNOD_VER, __path, __mode, &__dev);
+@@ -391,21 +391,21 @@
+ # if defined __USE_LARGEFILE64 \
+   && (! defined __USE_FILE_OFFSET64 \
+       || (defined __REDIRECT_NTH && defined __OPTIMIZE__))
+-extern __inline__ int
++__extern_inline int
+ __NTH (stat64 (__const char *__path, struct stat64 *__statbuf))
+ {
+   return __xstat64 (_STAT_VER, __path, __statbuf);
+ }
+ 
+ #  if defined __USE_BSD || defined __USE_XOPEN_EXTENDED
+-extern __inline__ int
++__extern_inline int
+ __NTH (lstat64 (__const char *__path, struct stat64 *__statbuf))
+ {
+   return __lxstat64 (_STAT_VER, __path, __statbuf);
+ }
+ #  endif
+ 
+-extern __inline__ int
++__extern_inline int
+ __NTH (fstat64 (int __fd, struct stat64 *__statbuf))
+ {
+   return __fxstat64 (_STAT_VER, __fd, __statbuf);
+--- a/sysdeps/unix/sysv/linux/sys/sysmacros.h	2004-09-08 07:18:59.000000000 +0900
++++ b/sysdeps/unix/sysv/linux/sys/sysmacros.h	2014-11-02 11:24:13.174161500 +0900
+@@ -27,30 +27,30 @@
+    they need.  */
+ #ifdef __GLIBC_HAVE_LONG_LONG
+ __extension__
+-extern __inline unsigned int gnu_dev_major (unsigned long long int __dev)
++__extern_inline unsigned int gnu_dev_major (unsigned long long int __dev)
+      __THROW;
+ __extension__
+-extern __inline unsigned int gnu_dev_minor (unsigned long long int __dev)
++__extern_inline unsigned int gnu_dev_minor (unsigned long long int __dev)
+      __THROW;
+ __extension__
+-extern __inline unsigned long long int gnu_dev_makedev (unsigned int __major,
++__extern_inline unsigned long long int gnu_dev_makedev (unsigned int __major,
+ 							unsigned int __minor)
+      __THROW;
+ 
+ # if defined __GNUC__ && __GNUC__ >= 2
+-__extension__ extern __inline unsigned int
++__extension__ __extern_inline unsigned int
+ __NTH (gnu_dev_major (unsigned long long int __dev))
+ {
+   return ((__dev >> 8) & 0xfff) | ((unsigned int) (__dev >> 32) & ~0xfff);
+ }
+ 
+-__extension__ extern __inline unsigned int
++__extension__ __extern_inline unsigned int
+ __NTH (gnu_dev_minor (unsigned long long int __dev))
+ {
+   return (__dev & 0xff) | ((unsigned int) (__dev >> 12) & ~0xff);
+ }
+ 
+-__extension__ extern __inline unsigned long long int
++__extension__ __extern_inline unsigned long long int
+ __NTH (gnu_dev_makedev (unsigned int __major, unsigned int __minor))
+ {
+   return ((__minor & 0xff) | ((__major & 0xfff) << 8)
+--- a/sysdeps/unix/sysv/linux/bits/socket.h	2004-11-20 16:04:23.000000000 +0900
++++ b/sysdeps/unix/sysv/linux/bits/socket.h	2014-11-02 11:39:09.524973000 +0900
+@@ -258,7 +258,7 @@
+ 				      struct cmsghdr *__cmsg) __THROW;
+ #ifdef __USE_EXTERN_INLINES
+ # ifndef _EXTERN_INLINE
+-#  define _EXTERN_INLINE extern __inline
++#  define _EXTERN_INLINE __extern_inline
+ # endif
+ _EXTERN_INLINE struct cmsghdr *
+ __NTH (__cmsg_nxthdr (struct msghdr *__mhdr, struct cmsghdr *__cmsg))
+--- a/linuxthreads/sysdeps/unix/sysv/linux/allocalim.h	2002-10-09 18:14:24.000000000 +0900
++++ b/linuxthreads/sysdeps/unix/sysv/linux/allocalim.h	2014-11-02 12:03:43.486035000 +0900
+@@ -19,7 +19,7 @@
+ 
+ #include <limits.h>
+ 
+-extern inline int __libc_use_alloca (size_t size)
++__extern_inline int __libc_use_alloca (size_t size)
+ {
+   return (__builtin_expect (size <= PTHREAD_STACK_MIN / 4, 1)
+ 	  || __libc_alloca_cutoff (size));
+--- a/string/bits/string2.h	2004-05-28 15:39:13.000000000 +0900
++++ b/string/bits/string2.h	2014-11-02 12:14:07.078595200 +0900
+@@ -43,7 +43,7 @@
+ # ifdef __cplusplus
+ #  define __STRING_INLINE inline
+ # else
+-#  define __STRING_INLINE extern __inline
++#  define __STRING_INLINE __extern_inline
+ # endif
+ #endif
+ 
+--- a/linuxthreads/sysdeps/i386/i686/pt-machine.h	2004-10-19 14:12:59.000000000 +0900
++++ b/linuxthreads/sysdeps/i386/i686/pt-machine.h	2014-11-02 19:42:51.754608200 +0900
+@@ -22,14 +22,14 @@
+ #ifndef _PT_MACHINE_H
+ #define _PT_MACHINE_H	1
+ 
++#include<misc/sys/cdefs.h>
++
+ #ifndef PT_EI
+-# define PT_EI extern inline __attribute__ ((always_inline))
++# define PT_EI __extern_inline
+ #endif
+ #include "kernel-features.h"
+ 
+ #ifndef __ASSEMBLER__
+-extern long int testandset (int *spinlock);
+-extern int __compare_and_swap (long int *p, long int oldval, long int newval);
+ 
+ /* Get some notion of the current stack.  Need not be exactly the top
+    of the stack, just something somewhere in the current frame.  */
+--- a/sysdeps/unix/sysv/linux/bits/sigset.h	2001-07-06 13:56:14.000000000 +0900
++++ b/sysdeps/unix/sysv/linux/bits/sigset.h	2014-11-02 19:54:45.956657100 +0900
+@@ -43,7 +43,7 @@
+ # define _SIGSET_H_fns 1
+ 
+ # ifndef _EXTERN_INLINE
+-#  define _EXTERN_INLINE extern __inline
++#  define _EXTERN_INLINE __extern_inline
+ # endif
+ 
+ /* Return a mask that includes the bit for SIG only.  */
+--- a/linuxthreads/internals.h	2004-12-13 06:05:54.000000000 +0900
++++ b/linuxthreads/internals.h	2014-11-02 20:01:00.133395400 +0900
+@@ -527,7 +527,7 @@
+ # define __manager_thread __pthread_manager_threadp
+ #endif
+ 
+-extern inline __attribute__((always_inline)) pthread_descr
++__extern_inline pthread_descr
+ check_thread_self (void)
+ {
+   pthread_descr self = thread_self ();
+--- a/include/ctype.h	2004-03-16 19:09:04.000000000 +0900
++++ b/include/ctype.h	2014-11-08 23:04:23.515284300 +0900
+@@ -15,7 +15,7 @@
+ #  include <bits/libc-tsd.h>
+ 
+ #  ifndef CTYPE_EXTERN_INLINE	/* Used by ctype/ctype-info.c, which see.  */
+-#   define CTYPE_EXTERN_INLINE extern inline
++#   define CTYPE_EXTERN_INLINE __extern_inline
+ #  endif
+ 
+ __libc_tsd_define (extern, CTYPE_B)
+--- a/ctype/ctype.h	2004-09-08 07:23:45.000000000 +0900
++++ b/ctype/ctype.h	2014-11-08 23:08:15.796613900 +0900
+@@ -187,13 +187,13 @@
+ # endif
+ 
+ # ifdef __USE_EXTERN_INLINES
+-extern __inline int
++__extern_inline int
+ __NTH (tolower (int __c))
+ {
+   return __c >= -128 && __c < 256 ? (*__ctype_tolower_loc ())[__c] : __c;
+ }
+ 
+-extern __inline int
++__extern_inline int
+ __NTH (toupper (int __c))
+ {
+   return __c >= -128 && __c < 256 ? (*__ctype_toupper_loc ())[__c] : __c;
+--- a/math/math_private.h	2005-10-17 13:52:32.000000000 +0900
++++ b/math/math_private.h	2014-11-08 23:21:07.614208900 +0900
+@@ -193,7 +193,7 @@
+ extern double __copysign (double x, double __y);
+ 
+ #if __GNUC_PREREQ (4, 0)
+-extern inline double __copysign (double x, double y)
++__extern_inline double __copysign (double x, double y)
+ { return __builtin_copysign (x, y); }
+ #endif
+ 
+@@ -240,7 +240,7 @@
+ extern float __copysignf (float x, float __y);
+ 
+ #if __GNUC_PREREQ (4, 0)
+-extern inline float __copysignf (float x, float y)
++__extern_inline float __copysignf (float x, float y)
+ { return __builtin_copysignf (x, y); }
+ #endif
+ 
+@@ -308,7 +308,7 @@
+ extern long double __significandl (long double x);
+ 
+ #if __GNUC_PREREQ (4, 0)
+-extern inline long double __copysignl (long double x, long double y)
++__extern_inline long double __copysignl (long double x, long double y)
+ { return __builtin_copysignl (x, y); }
+ #endif
+ 
+--- a/stdlib/gmp.h	2002-08-27 07:39:44.000000000 +0900
++++ b/stdlib/gmp.h	2014-11-08 23:33:47.667574800 +0900
+@@ -21,6 +21,8 @@
+ 
+ #ifndef __GMP_H__
+ 
++#include <features.h>
++
+ #ifndef __GNU_MP__
+ #define __GNU_MP__ 2
+ #define __need_size_t
+@@ -41,7 +43,7 @@
+ 
+ #ifndef _EXTERN_INLINE
+ #ifdef __GNUC__
+-#define _EXTERN_INLINE extern __inline__
++#define _EXTERN_INLINE __extern_inline
+ #else
+ #define _EXTERN_INLINE static
+ #endif
+--- a/argp/argp-fmtstream.h	2003-10-03 07:52:50.000000000 +0900
++++ b/argp/argp-fmtstream.h	2014-11-08 23:38:03.835319800 +0900
+@@ -207,7 +207,7 @@
+ #endif
+ 
+ #ifndef ARGP_FS_EI
+-#define ARGP_FS_EI extern inline
++#define ARGP_FS_EI __extern_inline
+ #endif
+ 
+ ARGP_FS_EI size_t
+--- a/argp/argp.h.org	2004-09-08 07:23:45.000000000 +0900
++++ b/argp/argp.h	2014-11-08 23:42:17.095136400 +0900
+@@ -557,7 +557,7 @@
+ # endif
+ 
+ # ifndef ARGP_EI
+-#  define ARGP_EI extern __inline__
++#  define ARGP_EI __extern_inline
+ # endif
+ 
+ ARGP_EI void
+--- a/nis/nss-nis.h	2004-04-02 18:15:04.000000000 +0900
++++ b/nis/nss-nis.h	2014-11-12 22:48:04.776850700 +0900
+@@ -42,7 +42,7 @@
+ extern int _nis_default_nss_flags attribute_hidden;
+ extern int _nis_check_default_nss (void) attribute_hidden;
+ 
+-extern inline __attribute__((always_inline)) int
++__extern_inline __attribute__((always_inline)) int
+ _nis_default_nss (void)
+ {
+   return _nis_default_nss_flags ?: _nis_check_default_nss ();
+--- a/nptl/sysdeps/pthread/bits/libc-lock.h	2005-07-18 12:21:59.000000000 +0900
++++ b/nptl/sysdeps/pthread/bits/libc-lock.h	2014-11-15 17:01:53.719263900 +0900
+@@ -408,7 +408,7 @@
+ 
+ 
+ /* Normal cleanup handling, based on C cleanup attribute.  */
+-extern __inline void
++__extern_inline void
+ __libc_cleanup_routine (struct __pthread_cleanup_frame *f)
+ {
+   if (f->__do_it)
+--- a/nptl/sysdeps/pthread/allocalim.h	2005-02-26 10:38:45.000000000 +0900
++++ b/nptl/sysdeps/pthread/allocalim.h	2014-11-15 17:22:43.159354700 +0900
+@@ -21,7 +21,7 @@
+ #include <limits.h>
+ 
+ 
+-extern inline int
++__extern_inline int
+ __libc_use_alloca (size_t size)
+ {
+   return (__builtin_expect (size <= PTHREAD_STACK_MIN / 4, 1)
+--- a/nptl/sysdeps/pthread/pthread.h	2005-07-18 12:21:59.000000000 +0900
++++ b/nptl/sysdeps/pthread/pthread.h	2014-11-15 17:24:38.472224700 +0900
+@@ -532,7 +532,7 @@
+    function the compiler is free to decide inlining the change when
+    needed or fall back on the copy which must exist somewhere
+    else.  */
+-extern __inline void
++__extern_inline void
+ __pthread_cleanup_routine (struct __pthread_cleanup_frame *__frame)
+ {
+   if (__frame->__do_it)
+--- a/locale/programs/charmap-kw.h	2001-07-06 14:28:41.000000000 +0900
++++ b/locale/programs/charmap-kw.h	2014-11-15 18:09:57.525279600 +0900
+@@ -95,6 +95,9 @@
+ 
+ #ifdef __GNUC__
+ __inline
++#if defined __GNUC_STDC_INLINE__ || defined __GNUC_GNU_INLINE__
++__attribute__ ((__gnu_inline__))
++#endif
+ #endif
+ const struct keyword_t *
+ charmap_hash (register const char *str, register unsigned int len)
+--- a/locale/programs/locfile-kw.h	2001-07-06 14:28:41.000000000 +0900
++++ b/locale/programs/locfile-kw.h	2014-11-15 18:15:59.306819600 +0900
+@@ -95,6 +95,9 @@
+ 
+ #ifdef __GNUC__
+ __inline
++#if defined __GNUC_STDC_INLINE__ || defined __GNUC_GNU_INLINE__
++__attribute__ ((__gnu_inline__))
++#endif
+ #endif
+ const struct keyword_t *
+ locfile_hash (register const char *str, register unsigned int len)
+--- a/nptl/sysdeps/unix/sysv/linux/aio_misc.h	2004-05-26 13:26:48.000000000 +0900
++++ b/nptl/sysdeps/unix/sysv/linux/aio_misc.h	2014-11-15 18:21:12.427297700 +0900
+@@ -26,7 +26,7 @@
+ # define aio_start_notify_thread __aio_start_notify_thread
+ # define aio_create_helper_thread __aio_create_helper_thread
+ 
+-extern inline void
++__extern_inline void
+ __aio_start_notify_thread (void)
+ {
+   sigset_t ss;
+@@ -35,7 +35,7 @@
+   INTERNAL_SYSCALL (rt_sigprocmask, err, 4, SIG_SETMASK, &ss, NULL, _NSIG / 8);
+ }
+ 
+-extern inline int
++__extern_inline int
+ __aio_create_helper_thread (pthread_t *threadp, void *(*tf) (void *), void *arg)
+ {
+   pthread_attr_t attr;
+--- a/sysdeps/x86_64/fpu/bits/mathinline.h	2004-09-08 07:18:59.000000000 +0900
++++ b/sysdeps/x86_64/fpu/bits/mathinline.h	2014-11-20 20:00:20.907790200 +0900
+@@ -22,10 +22,10 @@
+ # error "Never use <bits/mathinline.h> directly; include <math.h> instead."
+ #endif
+ 
+-#ifdef __cplusplus
++#ifndef __extern_inline
+ # define __MATH_INLINE __inline
+ #else
+-# define __MATH_INLINE extern __inline
++# define __MATH_INLINE __extern_inline
+ #endif
+ 
+ 
+--- a/linuxthreads/sysdeps/x86_64/pt-machine.h	2004-04-11 15:13:09.000000000 +0900
++++ b/linuxthreads/sysdeps/x86_64/pt-machine.h	2014-11-20 20:19:23.150928900 +0900
+@@ -27,12 +27,12 @@
+ # include <asm/prctl.h>
+ 
+ 
++#include<misc/sys/cdefs.h>
++
+ # ifndef PT_EI
+-#  define PT_EI extern inline __attribute__ ((always_inline))
++#  define PT_EI __extern_inline
+ # endif
+ 
+-extern long int testandset (int *spinlock);
+-extern int __compare_and_swap (long int *p, long int oldval, long int newval);
+ 
+ /* Get some notion of the current stack.  Need not be exactly the top
+    of the stack, just something somewhere in the current frame.  */
+--- a/sysdeps/powerpc/fpu/bits/mathinline.h	2004-09-30 15:16:28.000000000 +0900
++++ b/sysdeps/powerpc/fpu/bits/mathinline.h	2015-01-20 22:27:55.277405000 +0900
+@@ -22,10 +22,10 @@
+ # error "Never use <bits/mathinline.h> directly; include <math.h> instead."
+ #endif
+ 
+-#ifdef __cplusplus
++#ifndef __extern_inline
+ # define __MATH_INLINE __inline
+ #else
+-# define __MATH_INLINE extern __inline
++# define __MATH_INLINE __extern_inline
+ #endif  /* __cplusplus */
+ 
+ #if defined __GNUC__ && !defined _SOFT_FLOAT
+--- a/linuxthreads/sysdeps/powerpc/powerpc32/pt-machine.h	2003-08-01 04:15:43.000000000 +0900
++++ b/linuxthreads/sysdeps/powerpc/powerpc32/pt-machine.h	2015-01-20 22:37:34.182419800 +0900
+@@ -25,12 +25,12 @@
+ #ifndef _PT_MACHINE_H
+ #define _PT_MACHINE_H   1
+ 
++#include<misc/sys/cdefs.h>
++
+ #ifndef PT_EI
+-# define PT_EI extern inline __attribute__ ((always_inline))
++# define PT_EI __extern_inline
+ #endif
+ 
+-extern long int testandset (int *spinlock);
+-extern int __compare_and_swap (long int *p, long int oldval, long int newval);
+ 
+ /* For multiprocessor systems, we want to ensure all memory accesses
+    are completed before we reset a lock.  On other systems, we still
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/glibc-2.3-powerpc-linuxthreads-librt_multiple_threads.patch	Sun Mar 08 21:59:33 2015 +0900
@@ -0,0 +1,15 @@
+--- a/linuxthreads/Makefile	2014-11-12 18:47:29.238567100 +0900
++++ b/linuxthreads/Makefile	2015-02-01 22:28:42.566756900 +0900
+@@ -186,6 +186,8 @@
+ $(objpfx)libpthread.so: +preinit += $(addprefix $(objpfx),$(crti-objs))
+ $(objpfx)libpthread.so: +postinit += $(addprefix $(objpfx),$(crtn-objs))
+ 
++$(objpfx)libpthread_pic.a: $(objpfx)dummy_symbol.os
++
+ znodelete-yes = -DHAVE_Z_NODELETE
+ CFLAGS-mutex.c += -D__NO_WEAK_PTHREAD_ALIASES
+ CFLAGS-specific.c += -D__NO_WEAK_PTHREAD_ALIASES
+--- /dev/null	2015-02-01 22:32:29.000000000 +0900
++++ b/linuxthreads/dummy_symbol.c	2015-02-01 22:30:53.158812200 +0900
+@@ -0,0 +1 @@
++int __librt_multiple_threads;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/glibc-2.3-powerpc-sysdeps-Makefile.patch	Sun Mar 08 21:59:33 2015 +0900
@@ -0,0 +1,14 @@
+PowerPC: Remove unnecessary -mnew-mnemonics.
+
+http://sourceware.org/git/?p=glibc.git;a=commit;h=b3563932f85d60bb0d38b0a5f3b8f4abc133f890
+
+--- a/sysdeps/powerpc/Makefile	2004-02-14 12:24:52.000000000 +0900
++++ b/sysdeps/powerpc/Makefile	2015-01-20 21:18:22.894478200 +0900
+@@ -1,7 +1,3 @@
+-# We always want to use the new mnemonic syntax even if we are on a RS6000
+-# machine.
+-+cflags += -mnew-mnemonics
+-
+ ifeq ($(subdir),gmon)
+ sysdep_routines += ppc-mcount
+ endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/glibc-2.3-powerpc-unwind-find-fde.patch	Sun Mar 08 21:59:33 2015 +0900
@@ -0,0 +1,20 @@
+--- a/sysdeps/unix/sysv/linux/configure.in	2004-07-06 13:11:40.000000000 +0900
++++ b/sysdeps/unix/sysv/linux/configure.in	2015-01-31 16:09:20.614292300 +0900
+@@ -80,7 +80,6 @@
+     libc_cv_gcc_unwind_find_fde=yes
+     ;;
+   powerpc/powerpc32)
+-    libc_cv_gcc_unwind_find_fde=yes
+     arch_minimum_kernel=2.0.10
+     ;;
+   powerpc/powerpc64)
+--- a/sysdeps/unix/sysv/linux/configure	2004-07-06 13:13:42.000000000 +0900
++++ b/sysdeps/unix/sysv/linux/configure	2015-01-31 16:08:47.004884100 +0900
+@@ -120,7 +120,6 @@
+     libc_cv_gcc_unwind_find_fde=yes
+     ;;
+   powerpc/powerpc32)
+-    libc_cv_gcc_unwind_find_fde=yes
+     arch_minimum_kernel=2.0.10
+     ;;
+   powerpc/powerpc64)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/glibc-2.3-sysdeps-general-initfini.patch	Sun Mar 08 21:59:33 2015 +0900
@@ -0,0 +1,24 @@
+X-Git-Url: http://sourceware.org/git/?p=glibc.git;a=blobdiff_plain;f=sysdeps%2Fgeneric%2Finitfini.c;h=d5ef778367f567bd4814ac956794ddc17095f141;hp=2b8412a42815c15dc2b27999ccb11f7008a3b556;hb=c4243ff43f097b4ac4cd1b81c59a5bbb33558194;hpb=b26e274db237c8e8f076ac80e2aa3afc51028f1e
+
+diff --git a/sysdeps/generic/initfini.c b/sysdeps/generic/initfini.c
+index 2b8412a..d5ef778 100644
+--- a/sysdeps/generic/initfini.c
++++ b/sysdeps/generic/initfini.c
+@@ -81,7 +81,7 @@ call_gmon_start(void)
+ }
+ 
+ SECTION (".init");
+-extern void _init (void);
++extern void __attribute__ ((section (".init"))) _init (void);
+ void
+ _init (void)
+ {
+@@ -107,7 +107,7 @@ asm ("\n/*@_init_EPILOG_ENDS*/");
+ asm ("\n/*@_fini_PROLOG_BEGINS*/");
+ 
+ SECTION (".fini");
+-extern void _fini (void);
++extern void __attribute__ ((section (".fini"))) _fini (void);
+ void
+ _fini (void)
+ {
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/glibc-2.3-sysdeps-i386-Makefile.patch	Sun Mar 08 21:59:33 2015 +0900
@@ -0,0 +1,15 @@
+Fix linux-x86::glibc-core (glibc-2.3) build by gcc-4.8.2
+
+suppress warning
+
+--- glibc-core-2.3/sysdeps/i386/Makefile.org	2014-10-25 20:09:47.046611800 +0900
++++ glibc-core-2.3/sysdeps/i386/Makefile	2014-10-25 20:10:27.670611800 +0900
+@@ -8,7 +8,7 @@
+ ifeq ($(subdir),csu)
+ # On i686 we must avoid generating the trampoline functions generated
+ # to get the GOT pointer.
+-CFLAGS-initfini.s += -march=i386 -mcpu=i386
++CFLAGS-initfini.s += -march=i386 -mtune=i386
+ endif
+ 
+ ifeq ($(subdir),gmon)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/nsis-2.46-InstallOptions.patch	Sun Mar 08 21:59:33 2015 +0900
@@ -0,0 +1,14 @@
+--- a/Contrib/InstallOptions/InstallerOptions.cpp	2014-12-28 01:11:11.671260400 +0900
++++ b/Contrib/InstallOptions/InstallerOptions.cpp	2014-12-28 01:13:29.411260400 +0900
+@@ -16,6 +16,11 @@
+ 
+ #include <nsis/pluginapi.h> // nsis plugin
+ 
++// for mingw-w64 headers
++#ifndef min
++#define min(a, b) (((a) < (b)) ? (a) : (b))
++#endif
++
+ // Use for functions only called from one place to possibly reduce some code
+ // size.  Allows the source code to remain readable by leaving the function
+ // intact.
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/nsis-2.46-crossmingw.patch	Sun Mar 08 21:59:33 2015 +0900
@@ -0,0 +1,40 @@
+--- a/SCons/Tools/crossmingw.py	2009-01-11 18:48:07.000000000 +0900
++++ b/SCons/Tools/crossmingw.py	2014-12-29 09:26:50.204202000 +0900
+@@ -149,7 +149,7 @@
+     env['SHLINKFLAGS'] = SCons.Util.CLVar('$LINKFLAGS -shared')
+     env['SHLINKCOM']   = shlib_action
+     env.Append(SHLIBEMITTER = [shlib_emitter])
+-    env['LINK'] = mingw_prefix + 'g++'
++    env['LINK'] = mingw_prefix + 'g++ -static'
+     env['AS'] = mingw_prefix + 'as'
+     env['AR'] = mingw_prefix + 'ar'
+     env['RANLIB'] = mingw_prefix + 'ranlib'
+--- a/SCons/Config/gnu	2009-02-05 09:52:28.000000000 +0900
++++ b/SCons/Config/gnu	2014-11-16 21:13:24.803686400 +0900
+@@ -19,12 +19,12 @@
+ 		x = '_WinMain@16'
+ 	elif x == 'DllMain':
+ 		x = '_DllMain@12'
+-	return '-Wl,-e%s' % x
++	return ''
+ 
+ defenv['ENTRY_FLAG'] = entry
+ defenv['MAP_FLAG'] = '-Wl,-Map,${TARGET.base}.map'
+ defenv['EXCEPTION_FLAG'] = ''
+-defenv['NODEFLIBS_FLAG'] = '-nostdlib -Wl,--exclude-libs,msvcrt.a'
++defenv['NODEFLIBS_FLAG'] = ''
+ defenv['C_FLAG'] = '-xc'
+ defenv['CPP_FLAG'] = '-xc++'
+ defenv['ALIGN_FLAG'] = '-Wl,--file-alignment,512'
+@@ -77,9 +77,9 @@
+ if not defenv['DEBUG'] and defenv['STRIP'] and defenv['STRIP_W32']:
+ 	stub_env.Append(LINKFLAGS = ['-s'])               # strip
+ stub_env.Append(LINKFLAGS = ['-mwindows'])          # build windows executables
+-stub_env.Append(LINKFLAGS = ['$NODEFLIBS_FLAG'])    # no standard libraries
++#stub_env.Append(LINKFLAGS = ['$NODEFLIBS_FLAG'])    # no standard libraries
+ stub_env.Append(LINKFLAGS = ['$ALIGN_FLAG'])        # 512 bytes align
+-stub_env.Append(LINKFLAGS = ['-Wl,-e,_WinMain@16']) # entry point
++#stub_env.Append(LINKFLAGS = ['-Wl,-e,_WinMain@16']) # entry point
+ stub_env.Append(LINKFLAGS = ['$MAP_FLAG'])          # generate map file
+ 
+ ### makensis environment
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/nsis-2.46-linker_script-default.patch	Sun Mar 08 21:59:33 2015 +0900
@@ -0,0 +1,286 @@
+The deafult linker script is acquirable by the following command.
+
+i686-mingw32-ld --verbose
+
+--- a/SCons/Config/linker_script	2005-08-06 00:27:58.000000000 +0900
++++ b/SCons/Config/linker_script	2014-11-16 15:15:01.302783500 +0900
+@@ -1,57 +1,63 @@
++/* Default linker script, for normal executables */
+ OUTPUT_FORMAT(pei-i386)
++SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib");
+ SECTIONS
+ {
+-  .text  __image_base__ + __section_alignment__  :
++  /* Make the virtual address and file offset synced if the alignment is
++     lower than the target page size. */
++  . = SIZEOF_HEADERS;
++  . = ALIGN(__section_alignment__);
++  .text  __image_base__ + ( __section_alignment__ < 0x1000 ? . : __section_alignment__ ) :
+   {
+      *(.init)
+     *(.text)
+     *(SORT(.text$*))
++     *(.text.*)
++     *(.gnu.linkonce.t.*)
+     *(.glue_7t)
+     *(.glue_7)
+-   	___CTOR_LIST__ = .; __CTOR_LIST__ = . ;
+-			LONG (-1);
+-			*(EXCLUDE_FILE (*crtend.o) .ctors);
+-			*(.ctor);
+-			*(SORT(.ctors.*));
+-			*crtend.o (.ctors);
+-			LONG (0);
+-    	___DTOR_LIST__ = .; __DTOR_LIST__ = . ;
+-			LONG (-1);
+-			*(EXCLUDE_FILE (*crtend.o) .dtors);
+-			*(.dtor);
+-			*(SORT(.dtors.*));
+-			*crtend.o (.dtors);
+-			LONG (0);
++     ___CTOR_LIST__ = .; __CTOR_LIST__ = . ;
++			LONG (-1);*(.ctors); *(.ctor); *(SORT(.ctors.*));  LONG (0);
++     ___DTOR_LIST__ = .; __DTOR_LIST__ = . ;
++			LONG (-1); *(.dtors); *(.dtor); *(SORT(.dtors.*));  LONG (0);
+      *(.fini)
+     /* ??? Why is .gcc_exc here?  */
+      *(.gcc_exc)
+     PROVIDE (etext = .);
+-    *(.gcc_except_table)
++    PROVIDE (_etext = .);
++     *(.gcc_except_table)
+   }
+   /* The Cygwin32 library uses a section to avoid copying certain data
+      on fork.  This used to be named ".data".  The linker used
+      to include this between __data_start__ and __data_end__, but that
+      breaks building the cygwin32 dll.  Instead, we name the section
+-     ".data_cygwin_nocopy" and explictly include it after __data_end__. */
++     ".data_cygwin_nocopy" and explicitly include it after __data_end__. */
+   .data BLOCK(__section_alignment__) :
+   {
+     __data_start__ = . ;
+     *(.data)
+     *(.data2)
+     *(SORT(.data$*))
++    *(.jcr)
+     __data_end__ = . ;
+     *(.data_cygwin_nocopy)
+   }
+   .rdata BLOCK(__section_alignment__) :
+   {
+     *(.rdata)
+-    *(SORT(.rdata$*))
+-    *(.eh_frame)
+-    ___RUNTIME_PSEUDO_RELOC_LIST__ = .;
+-    __RUNTIME_PSEUDO_RELOC_LIST__ = .;
++             *(SORT(.rdata$*))
++    __rt_psrelocs_start = .;
+     *(.rdata_runtime_pseudo_reloc)
+-    ___RUNTIME_PSEUDO_RELOC_LIST_END__ = .;
+-    __RUNTIME_PSEUDO_RELOC_LIST_END__ = .;
++    __rt_psrelocs_end = .;
++  }
++  __rt_psrelocs_size = __rt_psrelocs_end - __rt_psrelocs_start;
++  ___RUNTIME_PSEUDO_RELOC_LIST_END__ = .;
++  __RUNTIME_PSEUDO_RELOC_LIST_END__ = .;
++  ___RUNTIME_PSEUDO_RELOC_LIST__ = . - __rt_psrelocs_size;
++  __RUNTIME_PSEUDO_RELOC_LIST__ = . - __rt_psrelocs_size;
++  .eh_frame BLOCK(__section_alignment__) :
++  {
++    *(.eh_frame*)
+   }
+   .pdata BLOCK(__section_alignment__) :
+   {
+@@ -74,6 +80,8 @@
+     *(.debug$T)
+     *(.debug$F)
+     *(.drectve)
++     *(.note.GNU-stack)
++     *(.gnu.lto_*)
+   }
+   .idata BLOCK(__section_alignment__) :
+   {
+@@ -84,7 +92,9 @@
+     /* These zeroes mark the end of the import list.  */
+     LONG (0); LONG (0); LONG (0); LONG (0); LONG (0);
+     SORT(*)(.idata$4)
++    __IAT_start__ = .;
+     SORT(*)(.idata$5)
++    __IAT_end__ = .;
+     SORT(*)(.idata$6)
+     SORT(*)(.idata$7)
+   }
+@@ -106,12 +116,18 @@
+     *(SORT(.CRT$XT*))  /* Termination */
+     ___crt_xt_end__ = . ;
+   }
++  /* Windows TLS expects .tls$AAA to be at the start and .tls$ZZZ to be
++     at the end of section.  This is important because _tls_start MUST
++     be at the beginning of the section to enable SECREL32 relocations with TLS
++     data.  */
+   .tls BLOCK(__section_alignment__) :
+   {
+     ___tls_start__ = . ;
++    *(.tls$AAA)
+     *(.tls)
+     *(.tls$)
+     *(SORT(.tls$*))
++    *(.tls$ZZZ)
+     ___tls_end__ = . ;
+   }
+   .endjunk BLOCK(__section_alignment__) :
+@@ -121,10 +137,6 @@
+     PROVIDE ( _end = .);
+      __end__ = .;
+   }
+-  .ndata BLOCK(__section_alignment__) :
+-  {
+-    *(.ndata)
+-  }
+   .rsrc BLOCK(__section_alignment__) :
+   {
+     *(.rsrc)
+@@ -151,60 +163,141 @@
+   {
+     *(.debug_aranges)
+   }
++  .zdebug_aranges BLOCK(__section_alignment__) (NOLOAD) :
++  {
++    *(.zdebug_aranges)
++  }
+   .debug_pubnames BLOCK(__section_alignment__) (NOLOAD) :
+   {
+     *(.debug_pubnames)
+   }
++  .zdebug_pubnames BLOCK(__section_alignment__) (NOLOAD) :
++  {
++    *(.zdebug_pubnames)
++  }
++  .debug_pubtypes BLOCK(__section_alignment__) (NOLOAD) :
++  {
++    *(.debug_pubtypes)
++  }
++  .zdebug_pubtypes BLOCK(__section_alignment__) (NOLOAD) :
++  {
++    *(.zdebug_pubtypes)
++  }
+   /* DWARF 2.  */
+   .debug_info BLOCK(__section_alignment__) (NOLOAD) :
+   {
+-    *(.debug_info) *(.gnu.linkonce.wi.*)
++    *(.debug_info .gnu.linkonce.wi.*)
++  }
++  .zdebug_info BLOCK(__section_alignment__) (NOLOAD) :
++  {
++    *(.zdebug_info .zdebug.gnu.linkonce.wi.*)
+   }
+   .debug_abbrev BLOCK(__section_alignment__) (NOLOAD) :
+   {
+     *(.debug_abbrev)
+   }
++  .zdebug_abbrev BLOCK(__section_alignment__) (NOLOAD) :
++  {
++    *(.zdebug_abbrev)
++  }
+   .debug_line BLOCK(__section_alignment__) (NOLOAD) :
+   {
+     *(.debug_line)
+   }
++  .zdebug_line BLOCK(__section_alignment__) (NOLOAD) :
++  {
++    *(.zdebug_line)
++  }
+   .debug_frame BLOCK(__section_alignment__) (NOLOAD) :
+   {
+-    *(.debug_frame)
++    *(.debug_frame*)
++  }
++  .zdebug_frame BLOCK(__section_alignment__) (NOLOAD) :
++  {
++    *(.zdebug_frame*)
+   }
+   .debug_str BLOCK(__section_alignment__) (NOLOAD) :
+   {
+     *(.debug_str)
+   }
++  .zdebug_str BLOCK(__section_alignment__) (NOLOAD) :
++  {
++    *(.zdebug_str)
++  }
+   .debug_loc BLOCK(__section_alignment__) (NOLOAD) :
+   {
+     *(.debug_loc)
+   }
++  .zdebug_loc BLOCK(__section_alignment__) (NOLOAD) :
++  {
++    *(.zdebug_loc)
++  }
+   .debug_macinfo BLOCK(__section_alignment__) (NOLOAD) :
+   {
+     *(.debug_macinfo)
+   }
++  .zdebug_macinfo BLOCK(__section_alignment__) (NOLOAD) :
++  {
++    *(.zdebug_macinfo)
++  }
+   /* SGI/MIPS DWARF 2 extensions.  */
+   .debug_weaknames BLOCK(__section_alignment__) (NOLOAD) :
+   {
+     *(.debug_weaknames)
+   }
++  .zdebug_weaknames BLOCK(__section_alignment__) (NOLOAD) :
++  {
++    *(.zdebug_weaknames)
++  }
+   .debug_funcnames BLOCK(__section_alignment__) (NOLOAD) :
+   {
+     *(.debug_funcnames)
+   }
++  .zdebug_funcnames BLOCK(__section_alignment__) (NOLOAD) :
++  {
++    *(.zdebug_funcnames)
++  }
+   .debug_typenames BLOCK(__section_alignment__) (NOLOAD) :
+   {
+     *(.debug_typenames)
+   }
++  .zdebug_typenames BLOCK(__section_alignment__) (NOLOAD) :
++  {
++    *(.zdebug_typenames)
++  }
+   .debug_varnames BLOCK(__section_alignment__) (NOLOAD) :
+   {
+     *(.debug_varnames)
+   }
++  .zdebug_varnames BLOCK(__section_alignment__) (NOLOAD) :
++  {
++    *(.zdebug_varnames)
++  }
++  .debug_macro BLOCK(__section_alignment__) (NOLOAD) :
++  {
++    *(.debug_macro)
++  }
++  .zdebug_macro BLOCK(__section_alignment__) (NOLOAD) :
++  {
++    *(.zdebug_macro)
++  }
+   /* DWARF 3.  */
+   .debug_ranges BLOCK(__section_alignment__) (NOLOAD) :
+   {
+     *(.debug_ranges)
+   }
++  .zdebug_ranges BLOCK(__section_alignment__) (NOLOAD) :
++  {
++    *(.zdebug_ranges)
++  }
++  /* DWARF 4.  */
++  .debug_types BLOCK(__section_alignment__) (NOLOAD) :
++  {
++    *(.debug_types .gnu.linkonce.wt.*)
++  }
++  .zdebug_types BLOCK(__section_alignment__) (NOLOAD) :
++  {
++    *(.zdebug_types .gnu.linkonce.wt.*)
++  }
+ }
+ 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/nsis-2.46-linker_script-ndata.patch	Sun Mar 08 21:59:33 2015 +0900
@@ -0,0 +1,15 @@
+.ndata section is added to the default linker script.
+
+--- a/SCons/Config/linker_script	2014-11-16 15:15:01.302783500 +0900
++++ b/SCons/Config/linker_script	2014-11-16 20:57:45.209797100 +0900
+@@ -137,6 +137,10 @@
+     PROVIDE ( _end = .);
+      __end__ = .;
+   }
++  .ndata BLOCK(__section_alignment__) :
++  {
++    *(.ndata)
++  }
+   .rsrc BLOCK(__section_alignment__) :
+   {
+     *(.rsrc)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/nsis-2.46-util.patch	Sun Mar 08 21:59:33 2015 +0900
@@ -0,0 +1,10 @@
+--- a/Source/util.h	2009-03-28 18:47:26.000000000 +0900
++++ b/Source/util.h	2014-11-16 01:08:19.464124600 +0900
+@@ -27,6 +27,7 @@
+ #  include <stdio.h>
+ #endif
+ 
++#include<unistd.h>
+ 
+ // these are the standard pause-before-quit shit.
+ extern int g_dopause;
--- a/patches/python-2.4.5-1.patch	Sun May 29 12:49:02 2011 +0200
+++ b/patches/python-2.4.5-1.patch	Sun Mar 08 21:59:33 2015 +0900
@@ -1083,7 +1083,7 @@
  		-d $(LIBDEST)/site-packages -f \
  		-x badsyntax $(DESTDIR)$(LIBDEST)/site-packages
  
-@@ -769,9 +802,9 @@ libinstall:	$(BUILDPYTHON) $(srcdir)/Lib
+@@ -769,9 +802,10 @@ libinstall:	$(BUILDPYTHON) $(srcdir)/Lib
  $(srcdir)/Lib/$(PLATDIR):
  	mkdir $(srcdir)/Lib/$(PLATDIR)
  	cp $(srcdir)/Lib/plat-generic/regen $(srcdir)/Lib/$(PLATDIR)/regen
@@ -1091,6 +1091,7 @@
 -	export PYTHONPATH; PYTHONPATH="`pwd`/Lib"; \
 -	export DYLD_FRAMEWORK_PATH; DYLD_FRAMEWORK_PATH="`pwd`"; \
 +@CROSS_COMMENT@	export PATH; PATH="`pwd`:$$PATH"; \
++@CROSS_COMMENT@	export LD_LIBRARY_PATH; LD_LIBRARY_PATH="`pwd`:$$LD_LIBRARY_PATH"; \
 +@CROSS_COMMENT@	export PYTHONPATH; PYTHONPATH="`pwd`/Lib"; \
 +@CROSS_COMMENT@	export DYLD_FRAMEWORK_PATH; DYLD_FRAMEWORK_PATH="`pwd`"; \
  	export EXE; EXE="$(BUILDEXE)"; \
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/python-2.4.5-Setup-crypt.patch	Sun Mar 08 21:59:33 2015 +0900
@@ -0,0 +1,11 @@
+--- python-2.4.5/Modules/Setup.dist~	2005-12-27 18:37:16.000000000 +0100
++++ python-2.4.5/Modules/Setup.dist	2012-08-26 15:53:56.245136116 +0200
+@@ -212,7 +212,7 @@ GLHACK=-Dclear=__GLclear
+ #
+ # First, look at Setup.config; configure may have set this for you.
+ 
+-#crypt cryptmodule.c # -lcrypt	# crypt(3); needs -lcrypt on some systems
++crypt cryptmodule.c # -lcrypt	# crypt(3); needs -lcrypt on some systems
+ 
+ 
+ # Some more UNIX dependent modules -- off by default, since these
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/python-2.4.5-Setup-dbm.patch	Sun Mar 08 21:59:33 2015 +0900
@@ -0,0 +1,11 @@
+--- python-2.4.5/Modules/Setup.dist~	2012-08-26 17:54:57.188647513 +0200
++++ python-2.4.5/Modules/Setup.dist	2012-08-26 18:10:03.592290524 +0200
+@@ -377,7 +377,7 @@
+ #
+ # First, look at Setup.config; configure may have set this for you.
+ 
+-#dbm dbmmodule.c 	# dbm(3) may require -lndbm or similar
++dbm dbmmodule.c -DHAVE_BERKDB_H -DDB_DBM_HSEARCH -ldb	# dbm(3) may require -lndbm or similar
+ 
+ # Anthony Baxter's gdbm module.  GNU dbm(3) will require -lgdbm:
+ #
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/python-2.4.5-gcc-R.patch	Sun Mar 08 21:59:33 2015 +0900
@@ -0,0 +1,11 @@
+--- python-2.4.5/Lib/distutils/unixccompiler.py~	2012-08-26 12:32:13.869439859 +0200
++++ python-2.4.5/Lib/distutils/unixccompiler.py	2012-08-26 12:33:12.678823232 +0200
+@@ -250,6 +250,8 @@
+         # the configuration data stored in the Python installation, so
+         # we use this hack.
+         compiler = os.path.basename(sysconfig.get_config_var("CC"))
++        if not compiler:
++            compiler = os.environ['CC']
+         if sys.platform[:6] == "darwin":
+             # MacOSX's linker doesn't understand the -R flag at all
+             return "-L" + dir
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/python-2.4.5-regen.patch	Sun Mar 08 21:59:33 2015 +0900
@@ -0,0 +1,10 @@
+--- python-2.4.5/Makefile.pre.in.orig	2012-08-25 18:08:27.097922293 +0200
++++ python-2.4.5/Makefile.pre.in	2012-08-25 18:09:08.366878464 +0200
+@@ -770,6 +770,7 @@ $(srcdir)/Lib/$(PLATDIR):
+	mkdir $(srcdir)/Lib/$(PLATDIR)
+	cp $(srcdir)/Lib/plat-generic/regen $(srcdir)/Lib/$(PLATDIR)/regen
+	export PATH; PATH="`pwd`:$$PATH"; \
++	export LD_LIBRARY_PATH; LD_LIBRARY_PATH="`pwd`:$$LD_LIBRARY_PATH"; \
+	export PYTHONPATH; PYTHONPATH="`pwd`/Lib"; \
+	export DYLD_FRAMEWORK_PATH; DYLD_FRAMEWORK_PATH="`pwd`"; \
+	export EXE; EXE="$(BUILDEXE)"; \
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/texinfo-4.13a-fix-bashism.patch	Sun Mar 08 21:59:33 2015 +0900
@@ -0,0 +1,19 @@
+http://svn.savannah.gnu.org/viewvc?view=rev&root=texinfo&revision=3868
+
+--- a/util/texi2dvi	2008-09-19 03:46:01.000000000 +0900
++++ b/util/texi2dvi	2015-02-22 00:27:36.042918200 +0900
+@@ -129,11 +129,13 @@
+   }
+   test_local
+   test $foo = bar
+-) || local () {
++) || eval '
++local () {
+   case $1 in
+     *=*) eval "$1";;
+   esac
+ }
++'
+ 
+ 
+ # cd_orig
--- a/sourcefiles/lilypond-sharhead.sh	Sun May 29 12:49:02 2011 +0200
+++ b/sourcefiles/lilypond-sharhead.sh	Sun Mar 08 21:59:33 2015 +0900
@@ -77,7 +77,7 @@
 Press C to install the program anyway (not recommended),
 E to only extract the program files, or any other key to exit.
 EOF
-    read -sn1 input
+    read -sn1 input 2> /dev/null || read input
     case "$input" in
 	C)
 	  echo "Ignoring architecture incompatibility."
--- a/sourcefiles/lilypond.changelog	Sun May 29 12:49:02 2011 +0200
+++ b/sourcefiles/lilypond.changelog	Sun Mar 08 21:59:33 2015 +0900
@@ -1,3 +1,9 @@
+lilypond (2.14.1-1) unstable; urgency=low
+
+  * New major upstream release, see http://lilypond.org/news .
+
+ -- Jan Nieuwenhuizen janneke@gnu.org>  Fri,  1 Jul 14:10:28 2011 +0200
+
 lilypond (2.13.39-2) unstable; urgency=low
 
   * New upstream release: first 2.14 beta.
--- a/test-lily/cron-builder.py	Sun May 29 12:49:02 2011 +0200
+++ b/test-lily/cron-builder.py	Sun Mar 08 21:59:33 2015 +0900
@@ -17,7 +17,7 @@
 import sys
 #
 from gub.syntax import printf
-from gub import logging
+from gub import gub_log
 from gub import loggedos
 
 """
@@ -129,12 +129,12 @@
     
     os.system ('mkdir -p log')
     if options.dry_run:
-        options.verbosity = logging.get_numeric_loglevel ('command')
+        options.verbosity = gub_log.get_numeric_loglevel ('command')
         
-    logging.set_default_log ('log/cron-builder.log', options.verbosity)
-    logger = logging.default_logger
+    gub_log.set_default_log ('log/cron-builder.log', options.verbosity)
+    logger = gub_log.default_logger
     
-    logging.info (' *** Starting cron-builder:\n  %s ' % '\n  '.join (args)) 
+    gub_log.info (' *** Starting cron-builder:\n  %s ' % '\n  '.join (args)) 
 
     if options.clean:
         # FIXME: what if user changes ~/.gubrc?  should use gubb.Settings!
--- a/test-lily/rsync-lily-doc.py	Sun May 29 12:49:02 2011 +0200
+++ b/test-lily/rsync-lily-doc.py	Sun Mar 08 21:59:33 2015 +0900
@@ -118,10 +118,8 @@
               'Documentation/changes/index.html',
               'Documentation/notation/index.html',
               'Documentation/internals/index.html',
-              'examples.html',
               'Documentation/music-glossary/index.html',
               'Documentation/learning/index.html',
-#	      'input/test/collated-files.html',
               'input/regression/collated-files.html']:
         do_urchin (f)
 
--- a/test-lily/upload.py	Sun May 29 12:49:02 2011 +0200
+++ b/test-lily/upload.py	Sun Mar 08 21:59:33 2015 +0900
@@ -1,7 +1,7 @@
 #! /usr/bin/env python
 
 maintainer = "graham"
-maintainer_git_username = "gpercival"
+maintainer_git_username = "philholmes"
 
 ## interaction with lp.org down/upload area.
 
@@ -265,6 +265,7 @@
     if options.execute:
         cmds = [c for c in cmds if 'test-binary' not in c]
         for cmd in cmds:
+            print (cmd)
             system (cmd)
     else:
         printf ('\n\n')
--- a/web/applications.html	Sun May 29 12:49:02 2011 +0200
+++ b/web/applications.html	Sun Mar 08 21:59:33 2015 +0900
@@ -34,211 +34,211 @@
 
       <h2>GUB Build specifications</h2>
 
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/a52dec.py">gub/specs/a52dec.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/alien.py">gub/specs/alien.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/atk.py">gub/specs/atk.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/autoconf.py">gub/specs/autoconf.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/automake.py">gub/specs/automake.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/base-files.py">gub/specs/base-files.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/base-passwd.py">gub/specs/base-passwd.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/bash.py">gub/specs/bash.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/binutils.py">gub/specs/binutils.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/bison.py">gub/specs/bison.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/boost-jam.py">gub/specs/boost-jam.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/boost.py">gub/specs/boost.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/busybox.py">gub/specs/busybox.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/bzip2.py">gub/specs/bzip2.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/cairomm.py">gub/specs/cairomm.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/cairo.py">gub/specs/cairo.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/cmake.py">gub/specs/cmake.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/coreutils.py">gub/specs/coreutils.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/cppunit.py">gub/specs/cppunit.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/curl.py">gub/specs/curl.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/cygcheck.py">gub/specs/cygcheck.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/dash.py">gub/specs/dash.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/db.py">gub/specs/db.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/dbus.py">gub/specs/dbus.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/denemo.py">gub/specs/denemo.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/dhcp.py">gub/specs/dhcp.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/diff.py">gub/specs/diff.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/distcc.py">gub/specs/distcc.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/docbook-utils.py">gub/specs/docbook-utils.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/dropbear.py">gub/specs/dropbear.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/e2fsprogs.py">gub/specs/e2fsprogs.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/epdfview.py">gub/specs/epdfview.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/expat.py">gub/specs/expat.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/faac.py">gub/specs/faac.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/faad2.py">gub/specs/faad2.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/fakechroot.py">gub/specs/fakechroot.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/fakeroot-ng.py">gub/specs/fakeroot-ng.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/fakeroot.py">gub/specs/fakeroot.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/ffmpeg.py">gub/specs/ffmpeg.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/file.py">gub/specs/file.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/findutils.py">gub/specs/findutils.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/fixesproto.py">gub/specs/fixesproto.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/flex-old.py">gub/specs/flex-old.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/flex.py">gub/specs/flex.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/fondu.py">gub/specs/fondu.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/fontconfig.py">gub/specs/fontconfig.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/fontforge.py">gub/specs/fontforge.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/freebsd-runtime.py">gub/specs/freebsd-runtime.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/freetype2.py">gub/specs/freetype2.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/freetype-config.py">gub/specs/freetype-config.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/freetype.py">gub/specs/freetype.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/gawk.py">gub/specs/gawk.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/gcc.py">gub/specs/gcc.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/gdbm.py">gub/specs/gdbm.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/gettext.py">gub/specs/gettext.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/ghostscript.py">gub/specs/ghostscript.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/git.py">gub/specs/git.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/glibc-core.py">gub/specs/glibc-core.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/glibc.py">gub/specs/glibc.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/glibmm.py">gub/specs/glibmm.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/glib.py">gub/specs/glib.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/gmp.py">gub/specs/gmp.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/g++.py">gub/specs/g++.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/grep.py">gub/specs/grep.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/gsl.py">gub/specs/gsl.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/gtk_doc.py">gub/specs/gtk_doc.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/gtkmm.py">gub/specs/gtkmm.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/gtk+.py">gub/specs/gtk+.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/gub-utils.py">gub/specs/gub-utils.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/guile-config.py">gub/specs/guile-config.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/guile.py">gub/specs/guile.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/gzip.py">gub/specs/gzip.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/hello.py">gub/specs/hello.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/hunspell.py">gub/specs/hunspell.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/icoutils.py">gub/specs/icoutils.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/imagemagick.py">gub/specs/imagemagick.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/__init__.py">gub/specs/__init__.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/inkscape-installer.py">gub/specs/inkscape-installer.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/inkscape.py">gub/specs/inkscape.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/inputproto.py">gub/specs/inputproto.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/intltool.py">gub/specs/intltool.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/jack.py">gub/specs/jack.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/jade.py">gub/specs/jade.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/kbproto.py">gub/specs/kbproto.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/lash.py">gub/specs/lash.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/lcms.py">gub/specs/lcms.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/libapr.py">gub/specs/libapr.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/libapr-util.py">gub/specs/libapr-util.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/libaubio.py">gub/specs/libaubio.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/libdbi-drivers-sqlite3.py">gub/specs/libdbi-drivers-sqlite3.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/libdbi.py">gub/specs/libdbi.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/libexif.py">gub/specs/libexif.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/libfftw.py">gub/specs/libfftw.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/libgc.py">gub/specs/libgc.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/libgcrypt.py">gub/specs/libgcrypt.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/libgd.py">gub/specs/libgd.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/libgnugetopt.py">gub/specs/libgnugetopt.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/libgphoto2.py">gub/specs/libgphoto2.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/libgtksourceview.py">gub/specs/libgtksourceview.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/libiconv.py">gub/specs/libiconv.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/libicu.py">gub/specs/libicu.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/libjpeg.py">gub/specs/libjpeg.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/liblpsolve.py">gub/specs/liblpsolve.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/libpcre.py">gub/specs/libpcre.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/libpng.py">gub/specs/libpng.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/libpthread-stubs.py">gub/specs/libpthread-stubs.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/librestrict.py">gub/specs/librestrict.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/librsvg.py">gub/specs/librsvg.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/libsamplerate.py">gub/specs/libsamplerate.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/libsig++.py">gub/specs/libsig++.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/libsndfile.py">gub/specs/libsndfile.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/libt1.py">gub/specs/libt1.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/libtiff.py">gub/specs/libtiff.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/libtool.py">gub/specs/libtool.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/libunicows.py">gub/specs/libunicows.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/libusb.py">gub/specs/libusb.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/libwsock32.py">gub/specs/libwsock32.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/libx11.py">gub/specs/libx11.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/libxau.py">gub/specs/libxau.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/libxcb.py">gub/specs/libxcb.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/libxdmcp.py">gub/specs/libxdmcp.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/libxext.py">gub/specs/libxext.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/libxfixes.py">gub/specs/libxfixes.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/libxinerama.py">gub/specs/libxinerama.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/libxml2.py">gub/specs/libxml2.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/libxml++.py">gub/specs/libxml++.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/libxrender.py">gub/specs/libxrender.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/libxslt.py">gub/specs/libxslt.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/lilypad.py">gub/specs/lilypad.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/lilypondcairo.py">gub/specs/lilypondcairo.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/lilypond-doc.py">gub/specs/lilypond-doc.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/lilypond-installer.py">gub/specs/lilypond-installer.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/lilypond.py">gub/specs/lilypond.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/lilypond-test.py">gub/specs/lilypond-test.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/linux-headers.py">gub/specs/linux-headers.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/m4.py">gub/specs/m4.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/makedev.py">gub/specs/makedev.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/make.py">gub/specs/make.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/mingw-pwd.py">gub/specs/mingw-pwd.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/mingw-runtime.py">gub/specs/mingw-runtime.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/mpfr.py">gub/specs/mpfr.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/msys.py">gub/specs/msys.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/ncurses.py">gub/specs/ncurses.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/netpbm.py">gub/specs/netpbm.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/noweb.py">gub/specs/noweb.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/nsis.py">gub/specs/nsis.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/openoffice.py">gub/specs/openoffice.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/osx-lilypad.py">gub/specs/osx-lilypad.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/pangocairo.py">gub/specs/pangocairo.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/pangomm.py">gub/specs/pangomm.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/pango.py">gub/specs/pango.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/patch.py">gub/specs/patch.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/perl-extutils-makemaker.py">gub/specs/perl-extutils-makemaker.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/perl.py">gub/specs/perl.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/perl-xml-parser.py">gub/specs/perl-xml-parser.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/pixman.py">gub/specs/pixman.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/pjproject.py">gub/specs/pjproject.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/pkg-config.py">gub/specs/pkg-config.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/poppler.py">gub/specs/poppler.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/popt.py">gub/specs/popt.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/portaudio.py">gub/specs/portaudio.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/psmisc.py">gub/specs/psmisc.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/pthreads-w32.py">gub/specs/pthreads-w32.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/python25.py">gub/specs/python25.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/python-config.py">gub/specs/python-config.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/python.py">gub/specs/python.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/pytt.py">gub/specs/pytt.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/qtopia-core.py">gub/specs/qtopia-core.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/raptor.py">gub/specs/raptor.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/rasqal.py">gub/specs/rasqal.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/rebase.py">gub/specs/rebase.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/redland.py">gub/specs/redland.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/regex.py">gub/specs/regex.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/renderproto.py">gub/specs/renderproto.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/root-image.py">gub/specs/root-image.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/rsync.py">gub/specs/rsync.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/saxon-java.py">gub/specs/saxon-java.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/scons.py">gub/specs/scons.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/sed.py">gub/specs/sed.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/sqlite.py">gub/specs/sqlite.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/subversion.py">gub/specs/subversion.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/sysvinit.py">gub/specs/sysvinit.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/t1utils.py">gub/specs/t1utils.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/tar.py">gub/specs/tar.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/tcltk.py">gub/specs/tcltk.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/test-23.py">gub/specs/test-23.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/texi2html.py">gub/specs/texi2html.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/texinfo.py">gub/specs/texinfo.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/texlive.py">gub/specs/texlive.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/tinylogin.py">gub/specs/tinylogin.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/tslib.py">gub/specs/tslib.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/unixodbc.py">gub/specs/unixodbc.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/urw-fonts.py">gub/specs/urw-fonts.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/util-linux.py">gub/specs/util-linux.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/w32api-in-usr-lib.py">gub/specs/w32api-in-usr-lib.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/w32api.py">gub/specs/w32api.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/wget.py">gub/specs/wget.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/xcb-proto.py">gub/specs/xcb-proto.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/xerces-c.py">gub/specs/xerces-c.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/xextproto.py">gub/specs/xextproto.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/xineramaproto.py">gub/specs/xineramaproto.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/xproto.py">gub/specs/xproto.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/xtrans.py">gub/specs/xtrans.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/xulrunner.py">gub/specs/xulrunner.py</a></br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs/zlib.py">gub/specs/zlib.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/a52dec.py">gub/specs/a52dec.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/alien.py">gub/specs/alien.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/atk.py">gub/specs/atk.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/autoconf.py">gub/specs/autoconf.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/automake.py">gub/specs/automake.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/base-files.py">gub/specs/base-files.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/base-passwd.py">gub/specs/base-passwd.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/bash.py">gub/specs/bash.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/binutils.py">gub/specs/binutils.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/bison.py">gub/specs/bison.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/boost-jam.py">gub/specs/boost-jam.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/boost.py">gub/specs/boost.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/busybox.py">gub/specs/busybox.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/bzip2.py">gub/specs/bzip2.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/cairomm.py">gub/specs/cairomm.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/cairo.py">gub/specs/cairo.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/cmake.py">gub/specs/cmake.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/coreutils.py">gub/specs/coreutils.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/cppunit.py">gub/specs/cppunit.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/curl.py">gub/specs/curl.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/cygcheck.py">gub/specs/cygcheck.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/dash.py">gub/specs/dash.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/db.py">gub/specs/db.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/dbus.py">gub/specs/dbus.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/denemo.py">gub/specs/denemo.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/dhcp.py">gub/specs/dhcp.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/diff.py">gub/specs/diff.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/distcc.py">gub/specs/distcc.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/docbook-utils.py">gub/specs/docbook-utils.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/dropbear.py">gub/specs/dropbear.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/e2fsprogs.py">gub/specs/e2fsprogs.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/epdfview.py">gub/specs/epdfview.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/expat.py">gub/specs/expat.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/faac.py">gub/specs/faac.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/faad2.py">gub/specs/faad2.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/fakechroot.py">gub/specs/fakechroot.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/fakeroot-ng.py">gub/specs/fakeroot-ng.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/fakeroot.py">gub/specs/fakeroot.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/ffmpeg.py">gub/specs/ffmpeg.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/file.py">gub/specs/file.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/findutils.py">gub/specs/findutils.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/fixesproto.py">gub/specs/fixesproto.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/flex-old.py">gub/specs/flex-old.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/flex.py">gub/specs/flex.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/fondu.py">gub/specs/fondu.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/fontconfig.py">gub/specs/fontconfig.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/fontforge.py">gub/specs/fontforge.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/freebsd-runtime.py">gub/specs/freebsd-runtime.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/freetype2.py">gub/specs/freetype2.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/freetype-config.py">gub/specs/freetype-config.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/freetype.py">gub/specs/freetype.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/gawk.py">gub/specs/gawk.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/gcc.py">gub/specs/gcc.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/gdbm.py">gub/specs/gdbm.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/gettext.py">gub/specs/gettext.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/ghostscript.py">gub/specs/ghostscript.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/git.py">gub/specs/git.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/glibc-core.py">gub/specs/glibc-core.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/glibc.py">gub/specs/glibc.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/glibmm.py">gub/specs/glibmm.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/glib.py">gub/specs/glib.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/gmp.py">gub/specs/gmp.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/g++.py">gub/specs/g++.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/grep.py">gub/specs/grep.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/gsl.py">gub/specs/gsl.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/gtk_doc.py">gub/specs/gtk_doc.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/gtkmm.py">gub/specs/gtkmm.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/gtk+.py">gub/specs/gtk+.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/gub-utils.py">gub/specs/gub-utils.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/guile-config.py">gub/specs/guile-config.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/guile.py">gub/specs/guile.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/gzip.py">gub/specs/gzip.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/hello.py">gub/specs/hello.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/hunspell.py">gub/specs/hunspell.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/icoutils.py">gub/specs/icoutils.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/imagemagick.py">gub/specs/imagemagick.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/__init__.py">gub/specs/__init__.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/inkscape-installer.py">gub/specs/inkscape-installer.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/inkscape.py">gub/specs/inkscape.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/inputproto.py">gub/specs/inputproto.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/intltool.py">gub/specs/intltool.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/jack.py">gub/specs/jack.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/jade.py">gub/specs/jade.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/kbproto.py">gub/specs/kbproto.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/lash.py">gub/specs/lash.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/lcms.py">gub/specs/lcms.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/libapr.py">gub/specs/libapr.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/libapr-util.py">gub/specs/libapr-util.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/libaubio.py">gub/specs/libaubio.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/libdbi-drivers-sqlite3.py">gub/specs/libdbi-drivers-sqlite3.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/libdbi.py">gub/specs/libdbi.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/libexif.py">gub/specs/libexif.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/libfftw.py">gub/specs/libfftw.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/libgc.py">gub/specs/libgc.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/libgcrypt.py">gub/specs/libgcrypt.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/libgd.py">gub/specs/libgd.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/libgnugetopt.py">gub/specs/libgnugetopt.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/libgphoto2.py">gub/specs/libgphoto2.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/libgtksourceview.py">gub/specs/libgtksourceview.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/libiconv.py">gub/specs/libiconv.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/libicu.py">gub/specs/libicu.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/libjpeg.py">gub/specs/libjpeg.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/liblpsolve.py">gub/specs/liblpsolve.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/libpcre.py">gub/specs/libpcre.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/libpng.py">gub/specs/libpng.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/libpthread-stubs.py">gub/specs/libpthread-stubs.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/librestrict.py">gub/specs/librestrict.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/librsvg.py">gub/specs/librsvg.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/libsamplerate.py">gub/specs/libsamplerate.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/libsig++.py">gub/specs/libsig++.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/libsndfile.py">gub/specs/libsndfile.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/libt1.py">gub/specs/libt1.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/libtiff.py">gub/specs/libtiff.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/libtool.py">gub/specs/libtool.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/libunicows.py">gub/specs/libunicows.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/libusb.py">gub/specs/libusb.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/libwsock32.py">gub/specs/libwsock32.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/libx11.py">gub/specs/libx11.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/libxau.py">gub/specs/libxau.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/libxcb.py">gub/specs/libxcb.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/libxdmcp.py">gub/specs/libxdmcp.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/libxext.py">gub/specs/libxext.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/libxfixes.py">gub/specs/libxfixes.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/libxinerama.py">gub/specs/libxinerama.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/libxml2.py">gub/specs/libxml2.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/libxml++.py">gub/specs/libxml++.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/libxrender.py">gub/specs/libxrender.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/libxslt.py">gub/specs/libxslt.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/lilypad.py">gub/specs/lilypad.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/lilypondcairo.py">gub/specs/lilypondcairo.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/lilypond-doc.py">gub/specs/lilypond-doc.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/lilypond-installer.py">gub/specs/lilypond-installer.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/lilypond.py">gub/specs/lilypond.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/lilypond-test.py">gub/specs/lilypond-test.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/linux-headers.py">gub/specs/linux-headers.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/m4.py">gub/specs/m4.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/makedev.py">gub/specs/makedev.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/make.py">gub/specs/make.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/mingw-pwd.py">gub/specs/mingw-pwd.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/mingw-runtime.py">gub/specs/mingw-runtime.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/mpfr.py">gub/specs/mpfr.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/msys.py">gub/specs/msys.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/ncurses.py">gub/specs/ncurses.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/netpbm.py">gub/specs/netpbm.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/noweb.py">gub/specs/noweb.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/nsis.py">gub/specs/nsis.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/openoffice.py">gub/specs/openoffice.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/osx-lilypad.py">gub/specs/osx-lilypad.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/pangocairo.py">gub/specs/pangocairo.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/pangomm.py">gub/specs/pangomm.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/pango.py">gub/specs/pango.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/patch.py">gub/specs/patch.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/perl-extutils-makemaker.py">gub/specs/perl-extutils-makemaker.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/perl.py">gub/specs/perl.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/perl-xml-parser.py">gub/specs/perl-xml-parser.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/pixman.py">gub/specs/pixman.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/pjproject.py">gub/specs/pjproject.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/pkg-config.py">gub/specs/pkg-config.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/poppler.py">gub/specs/poppler.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/popt.py">gub/specs/popt.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/portaudio.py">gub/specs/portaudio.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/psmisc.py">gub/specs/psmisc.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/pthreads-w32.py">gub/specs/pthreads-w32.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/python25.py">gub/specs/python25.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/python-config.py">gub/specs/python-config.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/python.py">gub/specs/python.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/pytt.py">gub/specs/pytt.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/qtopia-core.py">gub/specs/qtopia-core.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/raptor.py">gub/specs/raptor.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/rasqal.py">gub/specs/rasqal.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/rebase.py">gub/specs/rebase.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/redland.py">gub/specs/redland.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/regex.py">gub/specs/regex.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/renderproto.py">gub/specs/renderproto.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/root-image.py">gub/specs/root-image.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/rsync.py">gub/specs/rsync.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/saxon-java.py">gub/specs/saxon-java.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/scons.py">gub/specs/scons.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/sed.py">gub/specs/sed.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/sqlite.py">gub/specs/sqlite.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/subversion.py">gub/specs/subversion.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/sysvinit.py">gub/specs/sysvinit.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/t1utils.py">gub/specs/t1utils.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/tar.py">gub/specs/tar.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/tcltk.py">gub/specs/tcltk.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/test-23.py">gub/specs/test-23.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/texi2html.py">gub/specs/texi2html.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/texinfo.py">gub/specs/texinfo.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/texlive.py">gub/specs/texlive.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/tinylogin.py">gub/specs/tinylogin.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/tslib.py">gub/specs/tslib.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/unixodbc.py">gub/specs/unixodbc.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/urw-fonts.py">gub/specs/urw-fonts.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/util-linux.py">gub/specs/util-linux.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/w32api-in-usr-lib.py">gub/specs/w32api-in-usr-lib.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/w32api.py">gub/specs/w32api.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/wget.py">gub/specs/wget.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/xcb-proto.py">gub/specs/xcb-proto.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/xerces-c.py">gub/specs/xerces-c.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/xextproto.py">gub/specs/xextproto.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/xineramaproto.py">gub/specs/xineramaproto.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/xproto.py">gub/specs/xproto.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/xtrans.py">gub/specs/xtrans.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/xulrunner.py">gub/specs/xulrunner.py</a></br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs/zlib.py">gub/specs/zlib.py</a></br>
     </div>
     <div id="footer">
       <p align="center" style="font-size:60%">
--- a/web/basics.html	Sun May 29 12:49:02 2011 +0200
+++ b/web/basics.html	Sun Mar 08 21:59:33 2015 +0900
@@ -159,7 +159,7 @@
 
     <p></p>
 
-    The downside to this LIBRESTRICT feature is that quit a few
+    The downside to this LIBRESTRICT feature is that quite a few
     packages are not prepared for cross building.  LIBRESTRICT will
     catch these errors and they have to be fixed in the package's spec
     file.
--- a/web/denemo.html	Sun May 29 12:49:02 2011 +0200
+++ b/web/denemo.html	Sun Mar 08 21:59:33 2015 +0900
@@ -12,9 +12,9 @@
 
 Get GUB
 <pre>
-    git clone git://github.com/janneke/gub.git
+    git clone git://github.com/gperciva/gub.git
 or
-    wget http://github.com/janneke/gub/tarball/master
+    wget http://github.com/gperciva/gub/tarball/master
 </pre>
 
 <h3>Build everything</h3>
--- a/web/history.html	Sun May 29 12:49:02 2011 +0200
+++ b/web/history.html	Sun Mar 08 21:59:33 2015 +0900
@@ -12,7 +12,7 @@
 	<p class="homeurl">GUB
 	  <span class="subtitle">the Grand Unified Builder</span>
 	</p>
-	
+
 	<ul>
 	  <li><a class="" href=".">Home</a></li>
 	  <li><a class="" href="basics">Basics</a></li>
@@ -29,13 +29,13 @@
       <h2>HISTORY</h2>
 
       The story starts June 1999 with a
-      <a href="http://www.sankey.ws/contact.html">crazy guy</a> with an itch
-      to <a href="http://www.sankey.ws/gnunt.html">run LilyPond on
-	Windows</a>.
-
-      To get <a href="http://www.sankey.ws/rpm.html">a feel</a> for the
-      times, this
-      was <a href="http://lilypond.org/download/source/v1.1/">LilyPond-1.1.47</a>,
+      <a href="http://web.ncf.ca/bf250/index.html">crazy guy</a>
+      with an itch to
+      <a href="http://web.archive.org/web/20020121033345/http://www.sankey.ws/gnunt.html">run LilyPond on Windows</a>.
+      To get
+      <a href="http://web.ncf.ca/bf250/rpm.html">a feel</a>
+      for the times, this was
+      <a href="http://lilypond.org/download/source/v1.1/">LilyPond-1.1.47</a>,
       requiring Egcs 1.1, Python 1.5, Guile 1.3, discussing on
       help-gnu-music@gnu.org.
 
--- a/web/index.html	Sun May 29 12:49:02 2011 +0200
+++ b/web/index.html	Sun Mar 08 21:59:33 2015 +0900
@@ -126,18 +126,18 @@
 The Git repository is at 
 
 <pre>
-  http://github.com/janneke/gub
+  http://github.com/gperciva/gub
 </pre>
 
 You can get it by doing 
 
 <pre>
-  git clone git://github.com/janneke/gub.git
+  git clone git://github.com/gperciva/gub.git
 </pre>
 
 or download the latest tarball doing
 <pre>
-  wget http://github.com/janneke/gub/tarball/master
+  wget http://github.com/gperciva/gub/tarball/master
 </pre>
 
 GUB home page
--- a/web/lilypond.html	Sun May 29 12:49:02 2011 +0200
+++ b/web/lilypond.html	Sun Mar 08 21:59:33 2015 +0900
@@ -12,15 +12,17 @@
 
 Get GUB
 <pre>
-    git clone git://github.com/janneke/gub.git
+    git clone git://github.com/gperciva/gub.git
 or
-    wget http://github.com/janneke/gub/tarball/master
+    wget http://github.com/gperciva/gub/tarball/master
 </pre>
 
 In addition to the requirements for GUB, you need
 
 <ul>
     <li>A TeX installation</li>
+    <li>texinfo</li>
+    <li>zip</li>
 </ul>
 
 <h3>Build everything</h3>
--- a/web/links.html	Sun May 29 12:49:02 2011 +0200
+++ b/web/links.html	Sun Mar 08 21:59:33 2015 +0900
@@ -30,8 +30,8 @@
       <a href="http://codesourcery.com/">codesourcery.com</a><br>
       <a href="http://cvs.savannah.gnu.org/viewvc/lilypond/installers/">pre-GUB LilyPond installers</a><br>
       <a href="http://emdebian.org">emdebian.org</a><br>
-      <a href="http://github.com/janneke/gub/tree/master/gub/specs">GUB build specifications</a><br>
-      <a href="http://github.com/janneke/gub/tree/master/patches">GUB patches</a><br>
+      <a href="http://github.com/gperciva/gub/tree/master/gub/specs">GUB build specifications</a><br>
+      <a href="http://github.com/gperciva/gub/tree/master/patches">GUB patches</a><br>
       <a href="http://lilypond.org/blog/janneke/gub3-ooo-mingw-cross-build">lilypond.org/blog/janneke/gub3-ooo-mingw-cross-build</a><br>
       <a href="http://openembedded.org">openembedded.org</a><br>
       <a href="http://scratchbox.org">scratchbox.org</a><br>
--- a/web/oo.o.html	Sun May 29 12:49:02 2011 +0200
+++ b/web/oo.o.html	Sun Mar 08 21:59:33 2015 +0900
@@ -12,9 +12,9 @@
 
 Get GUB
 <pre>
-    git clone git://github.com/janneke/gub.git
+    git clone git://github.com/gperciva/gub.git
 or
-    wget http://github.com/janneke/gub/tarball/master
+    wget http://github.com/gperciva/gub/tarball/master
 </pre>
 
 In addition to the requirements for GUB, you need
@@ -47,7 +47,7 @@
 <p>
 Jesús is working together with Fridrich Strba to clean up and update
 some of
-the <a href="http://github.com/janneke/gub/tree/master/patches">cross
+the <a href="http://github.com/gperciva/gub/tree/master/patches">cross
 build and mingw32 patches</a>, while implementing and porting the
 missing bits of the mingw32 cross build
 to <a href="http://en.opensuse.org/Build_Service">openSUSE's osc build
@@ -97,7 +97,7 @@
 
 <h3>See also</h3>
 
-<a href="http://github.com/janneke/gub/tree/master/patches">http://github.com/janneke/gub/tree/master/patches</a><br>
+<a href="http://github.com/gperciva/gub/tree/master/patches">http://github.com/gperciva/gub/tree/master/patches</a><br>
 <a href="http://lilypond.org/blog/janneke/gub3-ooo-mingw-cross-build">http://lilypond.org/blog/janneke/gub3-ooo-mingw-cross-build</a><br>
 
 </div>