diff options
Diffstat (limited to 'classes/base.oeclass')
-rw-r--r-- | classes/base.oeclass | 734 |
1 files changed, 0 insertions, 734 deletions
diff --git a/classes/base.oeclass b/classes/base.oeclass deleted file mode 100644 index 66136074c7..0000000000 --- a/classes/base.oeclass +++ /dev/null @@ -1,734 +0,0 @@ -PATCHES_DIR="${S}" - -def base_dep_prepend(d): - import oe; - # - # Ideally this will check a flag so we will operate properly in - # the case where host == build == target, for now we don't work in - # that case though. - # - deps = "" - if not oe.data.getVar('INHIBIT_DEFAULT_DEPS', d): - deps += "patcher-native" - if (oe.data.getVar('HOST_SYS', d, 1) != - oe.data.getVar('BUILD_SYS', d, 1)): - deps += " virtual/${TARGET_PREFIX}gcc virtual/libc " - return deps - -def base_read_file(filename): - import oe - try: - f = file( filename, "r" ) - except IOError, reason: - raise oe.build.FuncFailed("can't read from file '%s' (%s)", (filename,reason)) - else: - return f.read().strip() - return None - -DEPENDS_prepend="${@base_dep_prepend(d)} " - -def base_set_filespath(path, d): - import os, oe - filespath = [] - for p in path: - overrides = oe.data.getVar("OVERRIDES", d, 1) or "" - overrides = overrides + ":" - for o in overrides.split(":"): - filespath.append(os.path.join(p, o)) - oe.data.setVar("FILESPATH", ":".join(filespath), d) - -FILESPATH = "${@base_set_filespath([ "${FILE_DIRNAME}/${PF}", "${FILE_DIRNAME}/${P}", "${FILE_DIRNAME}/${PN}", "${FILE_DIRNAME}/files", "${FILE_DIRNAME}" ], d)}" - -def oe_filter(f, str, d): - from re import match - return " ".join(filter(lambda x: match(f, x, 0), str.split())) - -def oe_filter_out(f, str, d): - from re import match - return " ".join(filter(lambda x: not match(f, x, 0), str.split())) - -die() { - oefatal "$*" -} - -oenote() { - echo "NOTE:" "$*" -} - -oewarn() { - echo "WARNING:" "$*" -} - -oefatal() { - echo "FATAL:" "$*" - exit 1 -} - -oedebug() { - test $# -ge 2 || { - echo "Usage: oedebug level \"message\"" - exit 1 - } - - test ${OEDEBUG:-0} -ge $1 && { - shift - echo "DEBUG:" $* - } -} - -oe_runmake() { - if [ x"$MAKE" = x ]; then MAKE=make; fi - oenote ${MAKE} ${EXTRA_OEMAKE} "$@" - ${MAKE} ${EXTRA_OEMAKE} "$@" || die "oemake failed" -} - -oe_soinstall() { - # Purpose: Install shared library file and - # create the necessary links - # Example: - # - # oe_ - # - #oenote installing shared library $1 to $2 - # - libname=`basename $1` - install -m 755 $1 $2/$libname - sonamelink=`${HOST_PREFIX}readelf -d $1 |grep 'Library soname:' |sed -e 's/.*\[\(.*\)\].*/\1/'` - solink=`echo $libname | sed -e 's/\.so\..*/.so/'` - ln -sf $libname $2/$sonamelink - ln -sf $libname $2/$solink -} - -oe_libinstall() { - # Purpose: Install a library, in all its forms - # Example - # - # oe_libinstall libltdl ${STAGING_LIBDIR}/ - # oe_libinstall -C src/libblah libblah ${D}/${libdir}/ - dir="" - libtool="" - silent="" - require_static="" - require_shared="" - while [ "$#" -gt 0 ]; do - case "$1" in - -C) - shift - dir="$1" - ;; - -s) - silent=1 - ;; - -a) - require_static=1 - ;; - -so) - require_shared=1 - ;; - -*) - oefatal "oe_libinstall: unknown option: $1" - ;; - *) - break; - ;; - esac - shift - done - - libname="$1" - shift - destpath="$1" - if [ -z "$destpath" ]; then - oefatal "oe_libinstall: no destination path specified" - fi - - __runcmd () { - if [ -z "$silent" ]; then - echo >&2 "oe_libinstall: $*" - fi - $* - } - - if [ -z "$dir" ]; then - dir=`pwd` - fi - if [ -d "$dir/.libs" ]; then - dir=$dir/.libs - fi - olddir=`pwd` - __runcmd cd $dir - - lafile=$libname.la - if [ -f "$lafile" ]; then - # libtool archive - eval `cat $lafile|grep "^library_names="` - libtool=1 - else - library_names="$libname.so* $libname.dll.a" - fi - - __runcmd install -d $destpath/ - dota=$libname.a - if [ -f "$dota" -o -n "$require_static" ]; then - __runcmd install -m 0644 $dota $destpath/ - fi - dotlai=$libname.lai - if [ -f "$dotlai" -o -n "$libtool" ]; then - __runcmd install -m 0644 $dotlai $destpath/$libname.la - fi - - for name in $library_names; do - files=`eval echo $name` - for f in $files; do - if [ ! -e "$f" ]; then - if [ -n "$libtool" ]; then - oefatal "oe_libinstall: $dir/$f not found." - fi - elif [ -L "$f" ]; then - __runcmd cp -P "$f" $destpath/ - elif [ ! -L "$f" ]; then - libfile="$f" - __runcmd install -m 0755 $libfile $destpath/ - fi - done - done - - if [ -z "$libfile" ]; then - if [ -n "$require_shared" ]; then - oefatal "oe_libinstall: unable to locate shared library" - fi - elif [ -z "$libtool" ]; then - # special case hack for non-libtool .so.#.#.# links - baselibfile=`basename "$libfile"` - if (echo $baselibfile | grep -qE '^lib.*\.so\.[0-9.]*$'); then - sonamelink=`${HOST_PREFIX}readelf -d $libfile |grep 'Library soname:' |sed -e 's/.*\[\(.*\)\].*/\1/'` - solink=`echo $baselibfile | sed -e 's/\.so\..*/.so/'` - if [ -n "$sonamelink" -a x"$baselibfile" != x"$sonamelink" ]; then - __runcmd ln -sf $baselibfile $destpath/$sonamelink - fi - __runcmd ln -sf $baselibfile $destpath/$solink - fi - fi - - __runcmd cd "$olddir" -} - -oe_machinstall() { - # Purpose: Install machine dependent files, if available - # If not available, check if there is a default - # If no default, just touch the destination - # Example: - # $1 $2 $3 $4 - # oe_machinstall -m 0644 fstab ${D}/etc/fstab - # - # TODO: Check argument number? - # - filename=`basename $3` - dirname=`dirname $3` - - for o in `echo ${OVERRIDES} | tr ':' ' '`; do - if [ -e $dirname/$o/$filename ]; then - oenote $dirname/$o/$filename present, installing to $4 - install $1 $2 $dirname/$o/$filename $4 - return - fi - done -# oenote overrides specific file NOT present, trying default=$3... - if [ -e $3 ]; then - oenote $3 present, installing to $4 - install $1 $2 $3 $4 - else - oenote $3 NOT present, touching empty $4 - touch $4 - fi -} - -addtask showdata -do_showdata[nostamp] = "1" -python do_showdata() { - import sys - # emit variables and shell functions - oe.data.emit_env(sys.__stdout__, d, True) - # emit the metadata which isnt valid shell - for e in d.keys(): - if oe.data.getVarFlag(e, 'python', d): - sys.__stdout__.write("\npython %s () {\n%s}\n" % (e, oe.data.getVar(e, d, 1))) -} - -addtask listtasks -do_listtasks[nostamp] = "1" -python do_listtasks() { - import sys - # emit variables and shell functions - #oe.data.emit_env(sys.__stdout__, d) - # emit the metadata which isnt valid shell - for e in d.keys(): - if oe.data.getVarFlag(e, 'task', d): - sys.__stdout__.write("%s\n" % e) -} - -addtask clean -do_clean[dirs] = "${TOPDIR}" -do_clean[nostamp] = "1" -python base_do_clean() { - """clear the build and temp directories""" - dir = oe.data.expand("${WORKDIR}", d) - if dir == '//': raise oe.build.FuncFailed("wrong DATADIR") - oe.note("removing " + dir) - os.system('rm -rf ' + dir) - - dir = "%s.*" % oe.data.expand(oe.data.getVar('STAMP', d), d) - oe.note("removing " + dir) - os.system('rm -f '+ dir) -} - -addtask mrproper -do_mrproper[dirs] = "${TOPDIR}" -do_mrproper[nostamp] = "1" -python base_do_mrproper() { - """clear downloaded sources, build and temp directories""" - dir = oe.data.expand("${DL_DIR}", d) - if dir == '/': oe.build.FuncFailed("wrong DATADIR") - oe.debug(2, "removing " + dir) - os.system('rm -rf ' + dir) - oe.build.exec_task('do_clean', d) -} - -addtask fetch -do_fetch[dirs] = "${DL_DIR}" -do_fetch[nostamp] = "1" -python base_do_fetch() { - import sys, copy - - localdata = copy.deepcopy(d) - oe.data.update_data(localdata) - - src_uri = oe.data.getVar('SRC_URI', localdata, 1) - if not src_uri: - return 1 - - try: - oe.fetch.init(src_uri.split()) - except oe.fetch.NoMethodError: - (type, value, traceback) = sys.exc_info() - raise oe.build.FuncFailed("No method: %s" % value) - - try: - oe.fetch.go(localdata) - except oe.fetch.MissingParameterError: - (type, value, traceback) = sys.exc_info() - raise oe.build.FuncFailed("Missing parameters: %s" % value) - except oe.fetch.FetchError: - (type, value, traceback) = sys.exc_info() - raise oe.build.FuncFailed("Fetch failed: %s" % value) -} - -def oe_unpack_file(file, data, url = None): - import oe, os - if not url: - url = "file://%s" % file - dots = file.split(".") - if dots[-1] in ['gz', 'bz2', 'Z']: - efile = os.path.join(oe.data.getVar('WORKDIR', data, 1),os.path.basename('.'.join(dots[0:-1]))) - else: - efile = file - cmd = None - if file.endswith('.tar'): - cmd = 'tar x --no-same-owner -f %s' % file - elif file.endswith('.tgz') or file.endswith('.tar.gz'): - cmd = 'tar xz --no-same-owner -f %s' % file - elif file.endswith('.tbz') or file.endswith('.tar.bz2'): - cmd = 'bzip2 -dc %s | tar x --no-same-owner -f -' % file - elif file.endswith('.gz') or file.endswith('.Z') or file.endswith('.z'): - cmd = 'gzip -dc %s > %s' % (file, efile) - elif file.endswith('.bz2'): - cmd = 'bzip2 -dc %s > %s' % (file, efile) - elif file.endswith('.zip'): - cmd = 'unzip -q %s' % file - elif os.path.isdir(file): - filesdir = os.path.realpath(oe.data.getVar("FILESDIR", data, 1)) - destdir = "." - if file[0:len(filesdir)] == filesdir: - destdir = file[len(filesdir):file.rfind('/')] - destdir = destdir.strip('/') - if len(destdir) < 1: - destdir = "." - elif not os.access("%s/%s" % (os.getcwd(), destdir), os.F_OK): - os.makedirs("%s/%s" % (os.getcwd(), destdir)) - cmd = 'cp -a %s %s/%s/' % (file, os.getcwd(), destdir) - else: - (type, host, path, user, pswd, parm) = oe.decodeurl(url) - if not 'patch' in parm: - destdir = oe.decodeurl(url)[1] or "." - oe.mkdirhier("%s/%s" % (os.getcwd(), destdir)) - cmd = 'cp %s %s/%s/' % (file, os.getcwd(), destdir) - if not cmd: - return True - cmd = "PATH=\"%s\" %s" % (oe.data.getVar('PATH', data, 1), cmd) - oe.note("Unpacking %s to %s/" % (file, os.getcwd())) - ret = os.system(cmd) - return ret == 0 - -addtask unpack after do_fetch -do_unpack[dirs] = "${WORKDIR}" -python base_do_unpack() { - import re, copy, os - - localdata = copy.deepcopy(d) - oe.data.update_data(localdata) - - src_uri = oe.data.getVar('SRC_URI', localdata) - if not src_uri: - return - src_uri = oe.data.expand(src_uri, localdata) - for url in src_uri.split(): - try: - local = oe.data.expand(oe.fetch.localpath(url, localdata), localdata) - except oe.MalformedUrl, e: - raise FuncFailed('Unable to generate local path for malformed uri: %s' % e) - # dont need any parameters for extraction, strip them off - local = re.sub(';.*$', '', local) - local = os.path.realpath(local) - ret = oe_unpack_file(local, localdata, url) - if not ret: - raise oe.build.FuncFailed() -} - -addtask patch after do_unpack -do_patch[dirs] = "${WORKDIR}" -python base_do_patch() { - import re - - src_uri = oe.data.getVar('SRC_URI', d) - if not src_uri: - return - src_uri = oe.data.expand(src_uri, d) - for url in src_uri.split(): -# oe.note('url is %s' % url) - (type, host, path, user, pswd, parm) = oe.decodeurl(url) - if not "patch" in parm: - continue - from oe.fetch import init, localpath - init([url]) - url = oe.encodeurl((type, host, path, user, pswd, [])) - local = '/' + localpath(url, d) - # patch! - dots = local.split(".") - if dots[-1] in ['gz', 'bz2', 'Z']: - efile = os.path.join(oe.data.getVar('WORKDIR', d),os.path.basename('.'.join(dots[0:-1]))) - else: - efile = local - efile = oe.data.expand(efile, d) - patches_dir = oe.data.expand(oe.data.getVar('PATCHES_DIR', d), d) - oe.mkdirhier(patches_dir + "/.patches") - os.chdir(patches_dir) - cmd = "PATH=\"%s\" patcher" % oe.data.getVar("PATH", d, 1) - if "pnum" in parm: - cmd += " -p %s" % parm["pnum"] - # Getting rid of // at the front helps the Cygwin-Users of OE - if efile.startswith('//'): - efile = efile[1:] - cmd += " -R -n \"%s\" -i %s" % (os.path.basename(efile), efile) - ret = os.system(cmd) - if ret != 0: - raise oe.build.FuncFailed("'patcher' execution failed") -} - - -addhandler base_eventhandler -python base_eventhandler() { - from oe import note, error, data - from oe.event import Handled, NotHandled, getName - import os - - name = getName(e) - if name in ["PkgSucceeded"]: - note("package %s: build completed" % e.pkg) - if name in ["PkgStarted"]: - note("package %s: build %s" % (e.pkg, name[3:].lower())) - elif name in ["PkgFailed"]: - error("package %s: build %s" % (e.pkg, name[3:].lower())) - elif name in ["TaskStarted"]: - note("package %s: task %s %s" % (data.expand(data.getVar("PF", e.data), e.data), e.task, name[4:].lower())) - elif name in ["TaskSucceeded"]: - note("package %s: task %s completed" % (data.expand(data.getVar("PF", e.data), e.data), e.task)) - elif name in ["TaskFailed"]: - error("package %s: task %s %s" % (data.expand(data.getVar("PF", e.data), e.data), e.task, name[4:].lower())) - elif name in ["UnsatisfiedDep"]: - note("package %s: dependency %s %s" % (e.pkg, e.dep, name[:-3].lower())) - elif name in ["BuildStarted", "BuildCompleted"]: - note("build %s %s" % (e.name, name[5:].lower())) - return NotHandled -} - -addtask configure after do_unpack do_patch -do_configure[dirs] = "${S} ${B}" - -base_do_configure() { - : -} - -addtask compile after do_configure -do_compile[dirs] = "${S} ${B}" -base_do_compile() { - if [ -e Makefile -o -e makefile ]; then - oe_runmake || die "make failed" - else - oenote "nothing to compile" - fi -} - - -addtask stage after do_compile -base_do_stage () { - : -} - -do_populate_staging[dirs] = "${STAGING_DIR}/${TARGET_SYS}/bin ${STAGING_DIR}/${TARGET_SYS}/lib \ - ${STAGING_DIR}/${TARGET_SYS}/include \ - ${STAGING_DIR}/${BUILD_SYS}/bin ${STAGING_DIR}/${BUILD_SYS}/lib \ - ${STAGING_DIR}/${BUILD_SYS}/include \ - ${STAGING_DATADIR} \ - ${S} ${B}" - -addtask populate_staging after do_compile - -#python do_populate_staging () { -# if not oe.data.getVar('manifest', d): -# oe.build.exec_func('do_emit_manifest', d) -# if oe.data.getVar('do_stage', d): -# oe.build.exec_func('do_stage', d) -# else: -# oe.build.exec_func('manifest_do_populate_staging', d) -#} - -python do_populate_staging () { - if oe.data.getVar('manifest_do_populate_staging', d): - oe.build.exec_func('manifest_do_populate_staging', d) - else: - oe.build.exec_func('do_stage', d) -} - -#addtask install -addtask install after do_compile -do_install[dirs] = "${S} ${B}" - -base_do_install() { - : -} - -#addtask populate_pkgs after do_compile -#python do_populate_pkgs () { -# if not oe.data.getVar('manifest', d): -# oe.build.exec_func('do_emit_manifest', d) -# oe.build.exec_func('manifest_do_populate_pkgs', d) -# oe.build.exec_func('package_do_shlibs', d) -#} - -base_do_package() { - : -} - -addtask build after do_populate_staging -do_build = "" -do_build[nostamp] = "1" -do_build[func] = "1" - -# Functions that update metadata based on files outputted -# during the build process. - -SHLIBS = "" -RDEPENDS_prepend = " ${SHLIBS}" - -python read_manifest () { - import sys - mfn = oe.data.getVar("MANIFEST", d, 1) - if os.access(mfn, os.R_OK): - # we have a manifest, so emit do_stage and do_populate_pkgs, - # and stuff some additional bits of data into the metadata store - mfile = file(mfn, "r") - manifest = oe.manifest.parse(mfile, d) - if not manifest: - return - - oe.data.setVar('manifest', manifest, d) -} - -python parse_manifest () { - manifest = oe.data.getVar("manifest", d) - if not manifest: - return - for func in ("do_populate_staging", "do_populate_pkgs"): - value = oe.manifest.emit(func, manifest, d) - if value: - oe.data.setVar("manifest_" + func, value, d) - oe.data.delVarFlag("manifest_" + func, "python", d) - oe.data.delVarFlag("manifest_" + func, "fakeroot", d) - oe.data.setVarFlag("manifest_" + func, "func", 1, d) - packages = [] - for l in manifest: - if "pkg" in l and l["pkg"] is not None: - packages.append(l["pkg"]) - oe.data.setVar("PACKAGES", " ".join(packages), d) -} - -def explode_deps(s): - r = [] - l = s.split() - flag = False - for i in l: - if i[0] == '(': - flag = True - j = [] - if flag: - j.append(i) - if i.endswith(')'): - flag = False - r[-1] += ' ' + ' '.join(j) - else: - r.append(i) - return r - -python read_shlibdeps () { - packages = (oe.data.getVar('PACKAGES', d, 1) or "").split() - for pkg in packages: - rdepends = explode_deps(oe.data.getVar('RDEPENDS_' + pkg, d, 0) or oe.data.getVar('RDEPENDS', d, 0) or "") - shlibsfile = oe.data.expand("${WORKDIR}/install/" + pkg + ".shlibdeps", d) - if os.access(shlibsfile, os.R_OK): - fd = file(shlibsfile) - lines = fd.readlines() - fd.close() - for l in lines: - rdepends.append(l.rstrip()) - pcfile = oe.data.expand("${WORKDIR}/install/" + pkg + ".pcdeps", d) - if os.access(pcfile, os.R_OK): - fd = file(pcfile) - lines = fd.readlines() - fd.close() - for l in lines: - rdepends.append(l.rstrip()) - oe.data.setVar('RDEPENDS_' + pkg, " " + " ".join(rdepends), d) -} - -python read_subpackage_metadata () { - import re - - def decode(str): - import codecs - c = codecs.getdecoder("string_escape") - return c(str)[0] - - data_file = oe.data.expand("${WORKDIR}/install/${PN}.package", d) - if os.access(data_file, os.R_OK): - f = file(data_file, 'r') - lines = f.readlines() - f.close() - r = re.compile("([^:]+):\s*(.*)") - for l in lines: - m = r.match(l) - if m: - oe.data.setVar(m.group(1), decode(m.group(2)), d) -} - -python __anonymous () { - import exceptions - need_host = oe.data.getVar('COMPATIBLE_HOST', d, 1) - if need_host: - import re - this_host = oe.data.getVar('HOST_SYS', d, 1) - if not re.match(need_host, this_host): - raise oe.parse.SkipPackage("incompatible with host %s" % this_host) - - pn = oe.data.getVar('PN', d, 1) - cvsdate = oe.data.getVar('CVSDATE_%s' % pn, d, 1) - if cvsdate != None: - oe.data.setVar('CVSDATE', cvsdate, d) - - try: - oe.build.exec_func('read_manifest', d) - oe.build.exec_func('parse_manifest', d) - oe.build.exec_func('read_shlibdeps', d) - oe.build.exec_func('read_subpackage_metadata', d) - except exceptions.KeyboardInterrupt: - raise - except Exception, e: - oe.error("anonymous function: %s" % e) - pass -} - -python () { - import oe, os - mach_arch = oe.data.getVar('MACHINE_ARCH', d, 1) - old_arch = oe.data.getVar('PACKAGE_ARCH', d, 1) - if (old_arch == mach_arch): - # Nothing to do - return - paths = [] - for p in [ "${FILE_DIRNAME}/${PF}", "${FILE_DIRNAME}/${P}", "${FILE_DIRNAME}/${PN}", "${FILE_DIRNAME}/files", "${FILE_DIRNAME}" ]: - paths.append(oe.data.expand(os.path.join(p, mach_arch), d)) - for s in oe.data.getVar('SRC_URI', d, 1).split(): - local = oe.data.expand(oe.fetch.localpath(s, d), d) - for mp in paths: - if local.startswith(mp): -# oe.note("overriding PACKAGE_ARCH from %s to %s" % (old_arch, mach_arch)) - oe.data.setVar('PACKAGE_ARCH', mach_arch, d) - return -} - - -addtask emit_manifest -python do_emit_manifest () { -# FIXME: emit a manifest here -# 1) adjust PATH to hit the wrapper scripts - wrappers = oe.which(oe.data.getVar("OEPATH", d, 1), 'build/install', 0) - path = (oe.data.getVar('PATH', d, 1) or '').split(':') - path.insert(0, os.path.dirname(wrappers)) - oe.data.setVar('PATH', ':'.join(path), d) -# 2) exec_func("do_install", d) - oe.build.exec_func('do_install', d) -# 3) read in data collected by the wrappers - oe.build.exec_func('read_manifest', d) -# 4) mangle the manifest we just generated, get paths back into -# our variable form -# 5) write it back out -# 6) re-parse it to ensure the generated functions are proper - oe.build.exec_func('parse_manifest', d) -} - -EXPORT_FUNCTIONS do_clean do_mrproper do_fetch do_unpack do_configure do_compile do_install do_package do_patch do_populate_pkgs do_stage - -MIRRORS[func] = "0" -MIRRORS () { -${DEBIAN_MIRROR}/main http://snapshot.debian.net/archive/pool -${DEBIAN_MIRROR} ftp://ftp.de.debian.org/debian/pool -${DEBIAN_MIRROR} ftp://ftp.au.debian.org/debian/pool -${DEBIAN_MIRROR} ftp://ftp.cl.debian.org/debian/pool -${DEBIAN_MIRROR} ftp://ftp.hr.debian.org/debian/pool -${DEBIAN_MIRROR} ftp://ftp.fi.debian.org/debian/pool -${DEBIAN_MIRROR} ftp://ftp.hk.debian.org/debian/pool -${DEBIAN_MIRROR} ftp://ftp.hu.debian.org/debian/pool -${DEBIAN_MIRROR} ftp://ftp.ie.debian.org/debian/pool -${DEBIAN_MIRROR} ftp://ftp.it.debian.org/debian/pool -${DEBIAN_MIRROR} ftp://ftp.jp.debian.org/debian/pool -${DEBIAN_MIRROR} ftp://ftp.no.debian.org/debian/pool -${DEBIAN_MIRROR} ftp://ftp.pl.debian.org/debian/pool -${DEBIAN_MIRROR} ftp://ftp.ro.debian.org/debian/pool -${DEBIAN_MIRROR} ftp://ftp.si.debian.org/debian/pool -${DEBIAN_MIRROR} ftp://ftp.es.debian.org/debian/pool -${DEBIAN_MIRROR} ftp://ftp.se.debian.org/debian/pool -${DEBIAN_MIRROR} ftp://ftp.tr.debian.org/debian/pool -${GNU_MIRROR} ftp://mirrors.kernel.org/gnu -${GNU_MIRROR} ftp://ftp.matrix.com.br/pub/gnu -${GNU_MIRROR} ftp://ftp.cs.ubc.ca/mirror2/gnu -${GNU_MIRROR} ftp://sunsite.ust.hk/pub/gnu -${GNU_MIRROR} ftp://ftp.ayamura.org/pub/gnu -ftp://ftp.kernel.org/pub http://www.kernel.org/pub -ftp://ftp.kernel.org/pub ftp://ftp.us.kernel.org/pub -ftp://ftp.kernel.org/pub ftp://ftp.uk.kernel.org/pub -ftp://ftp.kernel.org/pub ftp://ftp.hk.kernel.org/pub -ftp://ftp.kernel.org/pub ftp://ftp.au.kernel.org/pub -ftp://ftp.kernel.org/pub ftp://ftp.jp.kernel.org/pub -ftp://.*/.*/ http://treke.net/oe/source/ -http://.*/.*/ http://treke.net/oe/source/ -} - |