Mercurial > gub
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>