From 82c905dc58a36aeae40b1b273a12f63fb1973cf4 Mon Sep 17 00:00:00 2001 From: Andrew Geissler Date: Mon, 13 Apr 2020 13:39:40 -0500 Subject: meta-openembedded and poky: subtree updates Squash of the following due to dependencies among them and OpenBMC changes: meta-openembedded: subtree update:d0748372d2..9201611135 meta-openembedded: subtree update:9201611135..17fd382f34 poky: subtree update:9052e5b32a..2e11d97b6c poky: subtree update:2e11d97b6c..a8544811d7 The change log was too large for the jenkins plugin to handle therefore it has been removed. Here is the first and last commit of each subtree: meta-openembedded:d0748372d2 cppzmq: bump to version 4.6.0 meta-openembedded:17fd382f34 mpv: Remove X11 dependency poky:9052e5b32a package_ipk: Remove pointless comment to trigger rebuild poky:a8544811d7 pbzip2: Fix license warning Change-Id: If0fc6c37629642ee207a4ca2f7aa501a2c673cd6 Signed-off-by: Andrew Geissler --- poky/bitbake/lib/bb/COW.py | 1 - poky/bitbake/lib/bb/__init__.py | 14 +- poky/bitbake/lib/bb/build.py | 28 +- poky/bitbake/lib/bb/cache.py | 29 +- poky/bitbake/lib/bb/checksum.py | 6 +- poky/bitbake/lib/bb/codeparser.py | 26 +- poky/bitbake/lib/bb/command.py | 102 +- poky/bitbake/lib/bb/cooker.py | 44 +- poky/bitbake/lib/bb/data.py | 6 +- poky/bitbake/lib/bb/data_smart.py | 63 +- poky/bitbake/lib/bb/event.py | 7 +- poky/bitbake/lib/bb/fetch2/__init__.py | 276 ++- poky/bitbake/lib/bb/fetch2/bzr.py | 2 - poky/bitbake/lib/bb/fetch2/clearcase.py | 3 +- poky/bitbake/lib/bb/fetch2/cvs.py | 1 - poky/bitbake/lib/bb/fetch2/git.py | 6 +- poky/bitbake/lib/bb/fetch2/gitannex.py | 2 - poky/bitbake/lib/bb/fetch2/gitsm.py | 22 +- poky/bitbake/lib/bb/fetch2/hg.py | 2 - poky/bitbake/lib/bb/fetch2/npm.py | 539 +++-- poky/bitbake/lib/bb/fetch2/npmsw.py | 255 +++ poky/bitbake/lib/bb/fetch2/osc.py | 4 +- poky/bitbake/lib/bb/fetch2/perforce.py | 3 +- poky/bitbake/lib/bb/fetch2/ssh.py | 4 +- poky/bitbake/lib/bb/fetch2/svn.py | 22 +- poky/bitbake/lib/bb/fetch2/wget.py | 11 +- poky/bitbake/lib/bb/monitordisk.py | 2 +- poky/bitbake/lib/bb/msg.py | 184 +- poky/bitbake/lib/bb/parse/ast.py | 24 +- poky/bitbake/lib/bb/parse/parse_py/BBHandler.py | 2 - poky/bitbake/lib/bb/persist_data.py | 3 + poky/bitbake/lib/bb/progress.py | 1 - poky/bitbake/lib/bb/providers.py | 6 +- poky/bitbake/lib/bb/remotedata.py | 49 +- poky/bitbake/lib/bb/runqueue.py | 177 +- poky/bitbake/lib/bb/server/xmlrpcclient.py | 3 - poky/bitbake/lib/bb/server/xmlrpcserver.py | 3 - poky/bitbake/lib/bb/siggen.py | 193 +- poky/bitbake/lib/bb/taskdata.py | 2 +- poky/bitbake/lib/bb/tests/cooker.py | 1 - poky/bitbake/lib/bb/tests/cow.py | 2 +- poky/bitbake/lib/bb/tests/data.py | 141 +- .../bb/tests/fetch-testdata/apple/cups/releases | 2400 ++++++++++++++++++++ .../debian/pool/main/d/db5.3/index.html | 509 +++++ .../downloads/enchant/1.6.0/index.html | 15 + .../bb/tests/fetch-testdata/files/v2.8/index.html | 774 +++++++ .../bb/tests/fetch-testdata/files/v3.0/index.html | 209 ++ .../bb/tests/fetch-testdata/files/v3.1/index.html | 156 ++ .../bb/tests/fetch-testdata/files/v3.10/index.html | 131 ++ .../bb/tests/fetch-testdata/files/v3.11/index.html | 131 ++ .../bb/tests/fetch-testdata/files/v3.12/index.html | 118 + .../bb/tests/fetch-testdata/files/v3.13/index.html | 131 ++ .../bb/tests/fetch-testdata/files/v3.14/index.html | 170 ++ .../bb/tests/fetch-testdata/files/v3.15/index.html | 157 ++ .../bb/tests/fetch-testdata/files/v3.16/index.html | 86 + .../bb/tests/fetch-testdata/files/v3.2/index.html | 132 ++ .../bb/tests/fetch-testdata/files/v3.3/index.html | 163 ++ .../bb/tests/fetch-testdata/files/v3.4/index.html | 127 ++ .../bb/tests/fetch-testdata/files/v3.5/index.html | 111 + .../bb/tests/fetch-testdata/files/v3.6/index.html | 159 ++ .../bb/tests/fetch-testdata/files/v3.7/index.html | 92 + .../bb/tests/fetch-testdata/files/v3.8/index.html | 105 + .../bb/tests/fetch-testdata/files/v3.9/index.html | 183 ++ .../pub/linux/utils/util-linux/v2.23/index.html | 45 + .../pub/linux/utils/util-linux/v2.24/index.html | 43 + .../pub/linux/utils/util-linux/v2.25/index.html | 46 + .../pub/linux/utils/util-linux/v2.26/index.html | 42 + .../pub/linux/utils/util-linux/v2.27/index.html | 35 + .../pub/linux/utils/util-linux/v2.28/index.html | 42 + .../pub/linux/utils/util-linux/v2.29/index.html | 42 + .../pub/linux/utils/util-linux/v2.30/index.html | 42 + .../pub/linux/utils/util-linux/v2.31/index.html | 35 + .../pub/linux/utils/util-linux/v2.32/index.html | 35 + .../pub/linux/utils/util-linux/v2.33/index.html | 42 + .../pub/linux/utils/util-linux/v2.34/index.html | 28 + .../pub/linux/utils/util-linux/v2.35/index.html | 18 + .../fetch-testdata/releases/eglibc/index.html | 21 + .../fetch-testdata/releases/gnu-config/index.html | 9 + .../releases/individual/xserver/index.html | 609 +++++ .../software/pulseaudio/releases/index.html | 383 ++++ poky/bitbake/lib/bb/tests/fetch.py | 546 ++++- poky/bitbake/lib/bb/tests/runqueue.py | 3 +- poky/bitbake/lib/bb/tests/support/httpserver.py | 65 + poky/bitbake/lib/bb/tests/utils.py | 44 + poky/bitbake/lib/bb/tinfoil.py | 183 +- poky/bitbake/lib/bb/ui/buildinfohelper.py | 8 +- poky/bitbake/lib/bb/ui/knotty.py | 252 +- poky/bitbake/lib/bb/ui/ncurses.py | 5 +- poky/bitbake/lib/bb/ui/taskexp.py | 4 +- poky/bitbake/lib/bb/ui/teamcity.py | 398 ++++ poky/bitbake/lib/bb/ui/toasterui.py | 2 +- poky/bitbake/lib/bb/ui/uievent.py | 2 +- poky/bitbake/lib/bb/ui/uihelper.py | 39 +- poky/bitbake/lib/bb/utils.py | 89 +- poky/bitbake/lib/bblayers/common.py | 2 +- poky/bitbake/lib/bblayers/layerindex.py | 17 +- poky/bitbake/lib/bblayers/query.py | 20 +- poky/bitbake/lib/bs4/__init__.py | 2 +- poky/bitbake/lib/bs4/builder/_html5lib.py | 3 +- poky/bitbake/lib/bs4/dammit.py | 8 - poky/bitbake/lib/bs4/element.py | 1 - poky/bitbake/lib/bs4/testing.py | 1 - poky/bitbake/lib/bs4/tests/test_docs.py | 4 - poky/bitbake/lib/bs4/tests/test_htmlparser.py | 1 - poky/bitbake/lib/bs4/tests/test_lxml.py | 8 +- poky/bitbake/lib/bs4/tests/test_soup.py | 6 +- poky/bitbake/lib/bs4/tests/test_tree.py | 11 +- poky/bitbake/lib/hashserv/client.py | 9 +- poky/bitbake/lib/hashserv/server.py | 36 + poky/bitbake/lib/layerindexlib/cooker.py | 5 +- poky/bitbake/lib/layerindexlib/plugin.py | 3 - poky/bitbake/lib/layerindexlib/tests/cooker.py | 3 - .../lib/layerindexlib/tests/layerindexobj.py | 6 - poky/bitbake/lib/layerindexlib/tests/restapi.py | 3 - poky/bitbake/lib/ply/yacc.py | 6 +- poky/bitbake/lib/prserv/db.py | 14 +- poky/bitbake/lib/prserv/serv.py | 32 +- poky/bitbake/lib/pyinotify.py | 4 +- poky/bitbake/lib/toaster/bldcollector/urls.py | 2 +- poky/bitbake/lib/toaster/bldcollector/views.py | 10 +- poky/bitbake/lib/toaster/bldcontrol/admin.py | 1 - .../bitbake/lib/toaster/bldcontrol/bbcontroller.py | 4 +- .../toaster/bldcontrol/localhostbecontroller.py | 11 +- .../management/commands/checksettings.py | 6 +- .../bldcontrol/management/commands/runbuilds.py | 6 +- .../toaster/bldcontrol/migrations/0001_initial.py | 18 +- poky/bitbake/lib/toaster/bldcontrol/models.py | 21 +- poky/bitbake/lib/toaster/orm/fixtures/oe-core.xml | 12 +- poky/bitbake/lib/toaster/orm/fixtures/poky.xml | 18 +- .../toaster/orm/management/commands/lsupdates.py | 2 +- .../lib/toaster/orm/migrations/0001_initial.py | 100 +- .../orm/migrations/0002_customimagerecipe.py | 6 +- .../orm/migrations/0003_customimagepackage.py | 2 +- .../lib/toaster/orm/migrations/0004_provides.py | 4 +- .../migrations/0008_refactor_artifact_models.py | 4 +- .../orm/migrations/0011_delete_layersource.py | 2 +- .../0012_use_release_instead_of_up_branch.py | 2 +- .../toaster/orm/migrations/0017_distro_clone.py | 2 +- .../lib/toaster/orm/migrations/0019_django_2_2.py | 23 + poky/bitbake/lib/toaster/orm/models.py | 102 +- .../toaster/tests/browser/selenium_helpers_base.py | 1 - .../toaster/tests/browser/test_all_builds_page.py | 2 +- .../tests/browser/test_all_projects_page.py | 2 +- .../tests/browser/test_builddashboard_page.py | 2 +- .../browser/test_builddashboard_page_artifacts.py | 2 +- .../browser/test_builddashboard_page_recipes.py | 2 +- .../browser/test_builddashboard_page_tasks.py | 2 +- .../toaster/tests/browser/test_js_unit_tests.py | 2 +- .../lib/toaster/tests/browser/test_landing_page.py | 2 +- .../tests/browser/test_layerdetails_page.py | 2 +- .../browser/test_most_recent_builds_states.py | 2 +- .../tests/browser/test_new_custom_image_page.py | 2 +- .../toaster/tests/browser/test_new_project_page.py | 2 +- .../tests/browser/test_project_builds_page.py | 2 +- .../tests/browser/test_project_config_page.py | 8 +- .../lib/toaster/tests/browser/test_project_page.py | 2 +- .../lib/toaster/tests/browser/test_sample.py | 2 +- .../lib/toaster/tests/browser/test_task_page.py | 2 +- .../toaster/tests/browser/test_toastertable_ui.py | 2 +- .../tests/functional/test_functional_basic.py | 1 - poky/bitbake/lib/toaster/tests/views/test_views.py | 2 +- poky/bitbake/lib/toaster/toastergui/api.py | 5 +- poky/bitbake/lib/toaster/toastergui/tables.py | 9 +- .../templatetags/objects_to_dictionaries_filter.py | 1 - .../toastergui/templatetags/project_url_tag.py | 2 +- .../toaster/toastergui/templatetags/projecttags.py | 10 +- poky/bitbake/lib/toaster/toastergui/typeaheads.py | 2 +- poky/bitbake/lib/toaster/toastergui/urls.py | 5 +- poky/bitbake/lib/toaster/toastergui/views.py | 45 +- poky/bitbake/lib/toaster/toastergui/widgets.py | 2 +- .../toastermain/management/commands/builddelete.py | 4 +- .../toastermain/management/commands/buildimport.py | 22 +- .../toastermain/management/commands/buildslist.py | 3 +- poky/bitbake/lib/toaster/toastermain/settings.py | 17 +- poky/bitbake/lib/toaster/toastermain/urls.py | 4 +- 175 files changed, 10638 insertions(+), 1589 deletions(-) create mode 100644 poky/bitbake/lib/bb/fetch2/npmsw.py create mode 100644 poky/bitbake/lib/bb/tests/fetch-testdata/apple/cups/releases create mode 100644 poky/bitbake/lib/bb/tests/fetch-testdata/debian/pool/main/d/db5.3/index.html create mode 100644 poky/bitbake/lib/bb/tests/fetch-testdata/downloads/enchant/1.6.0/index.html create mode 100644 poky/bitbake/lib/bb/tests/fetch-testdata/files/v2.8/index.html create mode 100644 poky/bitbake/lib/bb/tests/fetch-testdata/files/v3.0/index.html create mode 100644 poky/bitbake/lib/bb/tests/fetch-testdata/files/v3.1/index.html create mode 100644 poky/bitbake/lib/bb/tests/fetch-testdata/files/v3.10/index.html create mode 100644 poky/bitbake/lib/bb/tests/fetch-testdata/files/v3.11/index.html create mode 100644 poky/bitbake/lib/bb/tests/fetch-testdata/files/v3.12/index.html create mode 100644 poky/bitbake/lib/bb/tests/fetch-testdata/files/v3.13/index.html create mode 100644 poky/bitbake/lib/bb/tests/fetch-testdata/files/v3.14/index.html create mode 100644 poky/bitbake/lib/bb/tests/fetch-testdata/files/v3.15/index.html create mode 100644 poky/bitbake/lib/bb/tests/fetch-testdata/files/v3.16/index.html create mode 100644 poky/bitbake/lib/bb/tests/fetch-testdata/files/v3.2/index.html create mode 100644 poky/bitbake/lib/bb/tests/fetch-testdata/files/v3.3/index.html create mode 100644 poky/bitbake/lib/bb/tests/fetch-testdata/files/v3.4/index.html create mode 100644 poky/bitbake/lib/bb/tests/fetch-testdata/files/v3.5/index.html create mode 100644 poky/bitbake/lib/bb/tests/fetch-testdata/files/v3.6/index.html create mode 100644 poky/bitbake/lib/bb/tests/fetch-testdata/files/v3.7/index.html create mode 100644 poky/bitbake/lib/bb/tests/fetch-testdata/files/v3.8/index.html create mode 100644 poky/bitbake/lib/bb/tests/fetch-testdata/files/v3.9/index.html create mode 100644 poky/bitbake/lib/bb/tests/fetch-testdata/pub/linux/utils/util-linux/v2.23/index.html create mode 100644 poky/bitbake/lib/bb/tests/fetch-testdata/pub/linux/utils/util-linux/v2.24/index.html create mode 100644 poky/bitbake/lib/bb/tests/fetch-testdata/pub/linux/utils/util-linux/v2.25/index.html create mode 100644 poky/bitbake/lib/bb/tests/fetch-testdata/pub/linux/utils/util-linux/v2.26/index.html create mode 100644 poky/bitbake/lib/bb/tests/fetch-testdata/pub/linux/utils/util-linux/v2.27/index.html create mode 100644 poky/bitbake/lib/bb/tests/fetch-testdata/pub/linux/utils/util-linux/v2.28/index.html create mode 100644 poky/bitbake/lib/bb/tests/fetch-testdata/pub/linux/utils/util-linux/v2.29/index.html create mode 100644 poky/bitbake/lib/bb/tests/fetch-testdata/pub/linux/utils/util-linux/v2.30/index.html create mode 100644 poky/bitbake/lib/bb/tests/fetch-testdata/pub/linux/utils/util-linux/v2.31/index.html create mode 100644 poky/bitbake/lib/bb/tests/fetch-testdata/pub/linux/utils/util-linux/v2.32/index.html create mode 100644 poky/bitbake/lib/bb/tests/fetch-testdata/pub/linux/utils/util-linux/v2.33/index.html create mode 100644 poky/bitbake/lib/bb/tests/fetch-testdata/pub/linux/utils/util-linux/v2.34/index.html create mode 100644 poky/bitbake/lib/bb/tests/fetch-testdata/pub/linux/utils/util-linux/v2.35/index.html create mode 100644 poky/bitbake/lib/bb/tests/fetch-testdata/releases/eglibc/index.html create mode 100644 poky/bitbake/lib/bb/tests/fetch-testdata/releases/gnu-config/index.html create mode 100644 poky/bitbake/lib/bb/tests/fetch-testdata/releases/individual/xserver/index.html create mode 100644 poky/bitbake/lib/bb/tests/fetch-testdata/software/pulseaudio/releases/index.html create mode 100644 poky/bitbake/lib/bb/tests/support/httpserver.py create mode 100644 poky/bitbake/lib/bb/ui/teamcity.py create mode 100644 poky/bitbake/lib/toaster/orm/migrations/0019_django_2_2.py (limited to 'poky/bitbake/lib') diff --git a/poky/bitbake/lib/bb/COW.py b/poky/bitbake/lib/bb/COW.py index d26e98195..bc20ce38e 100644 --- a/poky/bitbake/lib/bb/COW.py +++ b/poky/bitbake/lib/bb/COW.py @@ -10,7 +10,6 @@ import copy -import types ImmutableTypes = ( bool, complex, diff --git a/poky/bitbake/lib/bb/__init__.py b/poky/bitbake/lib/bb/__init__.py index c144311be..b96466e65 100644 --- a/poky/bitbake/lib/bb/__init__.py +++ b/poky/bitbake/lib/bb/__init__.py @@ -9,11 +9,11 @@ # SPDX-License-Identifier: GPL-2.0-only # -__version__ = "1.44.0" +__version__ = "1.46.0" import sys -if sys.version_info < (3, 4, 0): - raise RuntimeError("Sorry, python 3.4.0 or later is required for this version of bitbake") +if sys.version_info < (3, 5, 0): + raise RuntimeError("Sorry, python 3.5.0 or later is required for this version of bitbake") class BBHandledException(Exception): @@ -43,7 +43,13 @@ class BBLogger(Logger): Logger.__init__(self, name) def bbdebug(self, level, msg, *args, **kwargs): - return self.log(logging.DEBUG - level + 1, msg, *args, **kwargs) + loglevel = logging.DEBUG - level + 1 + if not bb.event.worker_pid: + if self.name in bb.msg.loggerDefaultDomains and loglevel > (bb.msg.loggerDefaultDomains[self.name]): + return + if loglevel > bb.msg.loggerDefaultLogLevel: + return + return self.log(loglevel, msg, *args, **kwargs) def plain(self, msg, *args, **kwargs): return self.log(logging.INFO + 1, msg, *args, **kwargs) diff --git a/poky/bitbake/lib/bb/build.py b/poky/bitbake/lib/bb/build.py index 30a2ba236..23b6ee455 100644 --- a/poky/bitbake/lib/bb/build.py +++ b/poky/bitbake/lib/bb/build.py @@ -15,7 +15,6 @@ import os import sys import logging -import shlex import glob import time import stat @@ -57,14 +56,17 @@ builtins['os'] = os class TaskBase(event.Event): """Base class for task events""" - def __init__(self, t, logfile, d): + def __init__(self, t, fn, logfile, d): self._task = t + self._fn = fn self._package = d.getVar("PF") self._mc = d.getVar("BB_CURRENT_MC") self.taskfile = d.getVar("FILE") self.taskname = self._task self.logfile = logfile self.time = time.time() + self.pn = d.getVar("PN") + self.pv = d.getVar("PV") event.Event.__init__(self) self._message = "recipe %s: task %s: %s" % (d.getVar("PF"), t, self.getDisplayName()) @@ -81,8 +83,8 @@ class TaskBase(event.Event): class TaskStarted(TaskBase): """Task execution started""" - def __init__(self, t, logfile, taskflags, d): - super(TaskStarted, self).__init__(t, logfile, d) + def __init__(self, t, fn, logfile, taskflags, d): + super(TaskStarted, self).__init__(t, fn, logfile, d) self.taskflags = taskflags class TaskSucceeded(TaskBase): @@ -91,9 +93,9 @@ class TaskSucceeded(TaskBase): class TaskFailed(TaskBase): """Task execution failed""" - def __init__(self, task, logfile, metadata, errprinted = False): + def __init__(self, task, fn, logfile, metadata, errprinted = False): self.errprinted = errprinted - super(TaskFailed, self).__init__(task, logfile, metadata) + super(TaskFailed, self).__init__(task, fn, logfile, metadata) class TaskFailedSilent(TaskBase): """Task execution failed (silently)""" @@ -103,8 +105,8 @@ class TaskFailedSilent(TaskBase): class TaskInvalid(TaskBase): - def __init__(self, task, metadata): - super(TaskInvalid, self).__init__(task, None, metadata) + def __init__(self, task, fn, metadata): + super(TaskInvalid, self).__init__(task, fn, None, metadata) self._message = "No such task '%s'" % task class TaskProgress(event.Event): @@ -572,7 +574,7 @@ def _exec_task(fn, task, d, quieterr): try: try: - event.fire(TaskStarted(task, logfn, flags, localdata), localdata) + event.fire(TaskStarted(task, fn, logfn, flags, localdata), localdata) except (bb.BBHandledException, SystemExit): return 1 @@ -583,15 +585,15 @@ def _exec_task(fn, task, d, quieterr): for func in (postfuncs or '').split(): exec_func(func, localdata) except bb.BBHandledException: - event.fire(TaskFailed(task, logfn, localdata, True), localdata) + event.fire(TaskFailed(task, fn, logfn, localdata, True), localdata) return 1 except Exception as exc: if quieterr: - event.fire(TaskFailedSilent(task, logfn, localdata), localdata) + event.fire(TaskFailedSilent(task, fn, logfn, localdata), localdata) else: errprinted = errchk.triggered logger.error(str(exc)) - event.fire(TaskFailed(task, logfn, localdata, errprinted), localdata) + event.fire(TaskFailed(task, fn, logfn, localdata, errprinted), localdata) return 1 finally: sys.stdout.flush() @@ -614,7 +616,7 @@ def _exec_task(fn, task, d, quieterr): logger.debug(2, "Zero size logfn %s, removing", logfn) bb.utils.remove(logfn) bb.utils.remove(loglink) - event.fire(TaskSucceeded(task, logfn, localdata), localdata) + event.fire(TaskSucceeded(task, fn, logfn, localdata), localdata) if not localdata.getVarFlag(task, 'nostamp', False) and not localdata.getVarFlag(task, 'selfstamp', False): make_stamp(task, localdata) diff --git a/poky/bitbake/lib/bb/cache.py b/poky/bitbake/lib/bb/cache.py index b6f7da592..d1be83617 100644 --- a/poky/bitbake/lib/bb/cache.py +++ b/poky/bitbake/lib/bb/cache.py @@ -17,11 +17,11 @@ # import os -import sys import logging import pickle from collections import defaultdict import bb.utils +import re logger = logging.getLogger("BitBake.Cache") @@ -208,10 +208,10 @@ class CoreRecipeInfo(RecipeInfoCommon): # Collect files we may need for possible world-dep # calculations - if self.not_world: - logger.debug(1, "EXCLUDE FROM WORLD: %s", fn) - else: + if not self.not_world: cachedata.possible_world.append(fn) + #else: + # logger.debug(2, "EXCLUDE FROM WORLD: %s", fn) # create a collection of all targets for sanity checking # tasks, such as upstream versions, license, and tools for @@ -370,6 +370,7 @@ class Cache(NoCache): self.data_fn = None self.cacheclean = True self.data_hash = data_hash + self.filelist_regex = re.compile(r'(?:(?<=:True)|(?<=:False))\s+') if self.cachedir in [None, '']: self.has_cache = False @@ -608,20 +609,12 @@ class Cache(NoCache): if hasattr(info_array[0], 'file_checksums'): for _, fl in info_array[0].file_checksums.items(): fl = fl.strip() - while fl: - # A .split() would be simpler but means spaces or colons in filenames would break - a = fl.find(":True") - b = fl.find(":False") - if ((a < 0) and b) or ((b > 0) and (b < a)): - f = fl[:b+6] - fl = fl[b+7:] - elif ((b < 0) and a) or ((a > 0) and (a < b)): - f = fl[:a+5] - fl = fl[a+6:] - else: - break - fl = fl.strip() - if "*" in f: + if not fl: + continue + # Have to be careful about spaces and colons in filenames + flist = self.filelist_regex.split(fl) + for f in flist: + if not f or "*" in f: continue f, exist = f.split(":") if (exist == "True" and not os.path.exists(f)) or (exist == "False" and os.path.exists(f)): diff --git a/poky/bitbake/lib/bb/checksum.py b/poky/bitbake/lib/bb/checksum.py index 5bc8a8fcb..1d50a2642 100644 --- a/poky/bitbake/lib/bb/checksum.py +++ b/poky/bitbake/lib/bb/checksum.py @@ -9,7 +9,6 @@ import glob import operator import os import stat -import pickle import bb.utils import logging from bb.cache import MultiProcessCache @@ -74,7 +73,7 @@ class FileChecksumCache(MultiProcessCache): else: dest[0][h] = source[0][h] - def get_checksums(self, filelist, pn): + def get_checksums(self, filelist, pn, localdirsexclude): """Get checksums for a list of files""" def checksum_file(f): @@ -90,7 +89,8 @@ class FileChecksumCache(MultiProcessCache): if pth == "/": bb.fatal("Refusing to checksum /") dirchecksums = [] - for root, dirs, files in os.walk(pth): + for root, dirs, files in os.walk(pth, topdown=True): + [dirs.remove(d) for d in list(dirs) if d in localdirsexclude] for name in files: fullpth = os.path.join(root, name) checksum = checksum_file(fullpth) diff --git a/poky/bitbake/lib/bb/codeparser.py b/poky/bitbake/lib/bb/codeparser.py index fd2c4734f..25a7ac69d 100644 --- a/poky/bitbake/lib/bb/codeparser.py +++ b/poky/bitbake/lib/bb/codeparser.py @@ -25,13 +25,11 @@ import ast import sys import codegen import logging -import pickle import bb.pysh as pysh -import os.path import bb.utils, bb.data import hashlib from itertools import chain -from bb.pysh import pyshyacc, pyshlex, sherrors +from bb.pysh import pyshyacc, pyshlex from bb.cache import MultiProcessCache logger = logging.getLogger('BitBake.CodeParser') @@ -58,30 +56,10 @@ def check_indent(codestr): return codestr - -# Basically pickle, in python 2.7.3 at least, does badly with data duplication -# upon pickling and unpickling. Combine this with duplicate objects and things -# are a mess. -# -# When the sets are originally created, python calls intern() on the set keys -# which significantly improves memory usage. Sadly the pickle/unpickle process -# doesn't call intern() on the keys and results in the same strings being duplicated -# in memory. This also means pickle will save the same string multiple times in -# the cache file. -# -# By having shell and python cacheline objects with setstate/getstate, we force -# the object creation through our own routine where we can call intern (via internSet). -# -# We also use hashable frozensets and ensure we use references to these so that -# duplicates can be removed, both in memory and in the resulting pickled data. -# -# By playing these games, the size of the cache file shrinks dramatically -# meaning faster load times and the reloaded cache files also consume much less -# memory. Smaller cache files, faster load times and lower memory usage is good. -# # A custom getstate/setstate using tuples is actually worth 15% cachesize by # avoiding duplication of the attribute names! + class SetCache(object): def __init__(self): self.setcache = {} diff --git a/poky/bitbake/lib/bb/command.py b/poky/bitbake/lib/bb/command.py index 378f389b3..6abf38668 100644 --- a/poky/bitbake/lib/bb/command.py +++ b/poky/bitbake/lib/bb/command.py @@ -65,7 +65,7 @@ class Command: # Can run synchronous commands straight away command_method = getattr(self.cmds_sync, command) if ro_only: - if not hasattr(command_method, 'readonly') or False == getattr(command_method, 'readonly'): + if not hasattr(command_method, 'readonly') or not getattr(command_method, 'readonly'): return None, "Not able to execute not readonly commands in readonly mode" try: self.cooker.process_inotify_updates() @@ -414,7 +414,11 @@ class CommandsSync: getAllAppends.readonly = True def findProviders(self, command, params): - return command.cooker.findProviders() + try: + mc = params[0] + except IndexError: + mc = '' + return command.cooker.findProviders(mc) findProviders.readonly = True def findBestProvider(self, command, params): @@ -446,54 +450,38 @@ class CommandsSync: return all_p, best getRuntimeProviders.readonly = True - def dataStoreConnectorFindVar(self, command, params): + def dataStoreConnectorCmd(self, command, params): dsindex = params[0] - name = params[1] - datastore = command.remotedatastores[dsindex] - value, overridedata = datastore._findVar(name) - - if value: - content = value.get('_content', None) - if isinstance(content, bb.data_smart.DataSmart): - # Value is a datastore (e.g. BB_ORIGENV) - need to handle this carefully - idx = command.remotedatastores.check_store(content, True) - return {'_content': DataStoreConnectionHandle(idx), - '_connector_origtype': 'DataStoreConnectionHandle', - '_connector_overrides': overridedata} - elif isinstance(content, set): - return {'_content': list(content), - '_connector_origtype': 'set', - '_connector_overrides': overridedata} - else: - value['_connector_overrides'] = overridedata - else: - value = {} - value['_connector_overrides'] = overridedata - return value - dataStoreConnectorFindVar.readonly = True + method = params[1] + args = params[2] + kwargs = params[3] - def dataStoreConnectorGetKeys(self, command, params): - dsindex = params[0] - datastore = command.remotedatastores[dsindex] - return list(datastore.keys()) - dataStoreConnectorGetKeys.readonly = True + d = command.remotedatastores[dsindex] + ret = getattr(d, method)(*args, **kwargs) + + if isinstance(ret, bb.data_smart.DataSmart): + idx = command.remotedatastores.store(ret) + return DataStoreConnectionHandle(idx) + + return ret - def dataStoreConnectorGetVarHistory(self, command, params): + def dataStoreConnectorVarHistCmd(self, command, params): dsindex = params[0] - name = params[1] - datastore = command.remotedatastores[dsindex] - return datastore.varhistory.variable(name) - dataStoreConnectorGetVarHistory.readonly = True + method = params[1] + args = params[2] + kwargs = params[3] - def dataStoreConnectorExpandPythonRef(self, command, params): - config_data_dict = params[0] - varname = params[1] - expr = params[2] + d = command.remotedatastores[dsindex].varhistory + return getattr(d, method)(*args, **kwargs) - config_data = command.remotedatastores.receive_datastore(config_data_dict) + def dataStoreConnectorIncHistCmd(self, command, params): + dsindex = params[0] + method = params[1] + args = params[2] + kwargs = params[3] - varparse = bb.data_smart.VariableParse(varname, config_data) - return varparse.python_sub(expr) + d = command.remotedatastores[dsindex].inchistory + return getattr(d, method)(*args, **kwargs) def dataStoreConnectorRelease(self, command, params): dsindex = params[0] @@ -501,31 +489,6 @@ class CommandsSync: raise CommandError('dataStoreConnectorRelease: invalid index %d' % dsindex) command.remotedatastores.release(dsindex) - def dataStoreConnectorSetVarFlag(self, command, params): - dsindex = params[0] - name = params[1] - flag = params[2] - value = params[3] - datastore = command.remotedatastores[dsindex] - datastore.setVarFlag(name, flag, value) - - def dataStoreConnectorDelVar(self, command, params): - dsindex = params[0] - name = params[1] - datastore = command.remotedatastores[dsindex] - if len(params) > 2: - flag = params[2] - datastore.delVarFlag(name, flag) - else: - datastore.delVar(name) - - def dataStoreConnectorRenameVar(self, command, params): - dsindex = params[0] - name = params[1] - newname = params[2] - datastore = command.remotedatastores[dsindex] - datastore.renameVar(name, newname) - def parseRecipeFile(self, command, params): """ Parse the specified recipe file (with or without bbappends) @@ -536,8 +499,7 @@ class CommandsSync: appends = params[1] appendlist = params[2] if len(params) > 3: - config_data_dict = params[3] - config_data = command.remotedatastores.receive_datastore(config_data_dict) + config_data = command.remotedatastores[params[3]] else: config_data = None diff --git a/poky/bitbake/lib/bb/cooker.py b/poky/bitbake/lib/bb/cooker.py index e6442bff9..e527e2311 100644 --- a/poky/bitbake/lib/bb/cooker.py +++ b/poky/bitbake/lib/bb/cooker.py @@ -10,7 +10,6 @@ # import sys, os, glob, os.path, re, time -import atexit import itertools import logging import multiprocessing @@ -18,14 +17,11 @@ import sre_constants import threading from io import StringIO, UnsupportedOperation from contextlib import closing -from functools import wraps from collections import defaultdict, namedtuple import bb, bb.exceptions, bb.command from bb import utils, data, parse, event, cache, providers, taskdata, runqueue, build import queue import signal -import subprocess -import errno import prserv.serv import pyinotify import json @@ -169,8 +165,8 @@ class BBCooker: bb.debug(1, "BBCooker pyinotify1 %s" % time.time()) sys.stdout.flush() - self.configwatcher.bbseen = [] - self.configwatcher.bbwatchedfiles = [] + self.configwatcher.bbseen = set() + self.configwatcher.bbwatchedfiles = set() self.confignotifier = pyinotify.Notifier(self.configwatcher, self.config_notifications) bb.debug(1, "BBCooker pyinotify2 %s" % time.time()) sys.stdout.flush() @@ -180,8 +176,8 @@ class BBCooker: self.watcher = pyinotify.WatchManager() bb.debug(1, "BBCooker pyinotify3 %s" % time.time()) sys.stdout.flush() - self.watcher.bbseen = [] - self.watcher.bbwatchedfiles = [] + self.watcher.bbseen = set() + self.watcher.bbwatchedfiles = set() self.notifier = pyinotify.Notifier(self.watcher, self.notifications) bb.debug(1, "BBCooker pyinotify complete %s" % time.time()) @@ -278,14 +274,14 @@ class BBCooker: if not watcher: watcher = self.watcher for i in deps: - watcher.bbwatchedfiles.append(i[0]) + watcher.bbwatchedfiles.add(i[0]) if dirs: f = i[0] else: f = os.path.dirname(i[0]) if f in watcher.bbseen: continue - watcher.bbseen.append(f) + watcher.bbseen.add(f) watchtarget = None while True: # We try and add watches for files that don't exist but if they did, would influence @@ -294,7 +290,7 @@ class BBCooker: try: watcher.add_watch(f, self.watchmask, quiet=False) if watchtarget: - watcher.bbwatchedfiles.append(watchtarget) + watcher.bbwatchedfiles.add(watchtarget) break except pyinotify.WatchManagerError as e: if 'ENOENT' in str(e): @@ -302,7 +298,7 @@ class BBCooker: f = os.path.dirname(f) if f in watcher.bbseen: break - watcher.bbseen.append(f) + watcher.bbseen.add(f) continue if 'ENOSPC' in str(e): providerlog.error("No space left on device or exceeds fs.inotify.max_user_watches?") @@ -1027,16 +1023,16 @@ class BBCooker: bb.event.fire(bb.event.FilesMatchingFound(filepattern, matches), self.data) def findProviders(self, mc=''): - return bb.providers.findProviders(self.data, self.recipecaches[mc], self.recipecaches[mc].pkg_pn) + return bb.providers.findProviders(self.databuilder.mcdata[mc], self.recipecaches[mc], self.recipecaches[mc].pkg_pn) def findBestProvider(self, pn, mc=''): if pn in self.recipecaches[mc].providers: filenames = self.recipecaches[mc].providers[pn] - eligible, foundUnique = bb.providers.filterProviders(filenames, pn, self.data, self.recipecaches[mc]) + eligible, foundUnique = bb.providers.filterProviders(filenames, pn, self.databuilder.mcdata[mc], self.recipecaches[mc]) filename = eligible[0] return None, None, None, filename elif pn in self.recipecaches[mc].pkg_pn: - return bb.providers.findBestProvider(pn, self.data, self.recipecaches[mc], self.recipecaches[mc].pkg_pn) + return bb.providers.findBestProvider(pn, self.databuilder.mcdata[mc], self.recipecaches[mc], self.recipecaches[mc].pkg_pn) else: return None, None, None, None @@ -1208,7 +1204,7 @@ class BBCooker: for c in collection_list: calc_layer_priority(c) regex = self.data.getVar("BBFILE_PATTERN_%s" % c) - if regex == None: + if regex is None: parselog.error("BBFILE_PATTERN_%s not defined" % c) errors = True continue @@ -1314,7 +1310,7 @@ class BBCooker: self.parseConfiguration() # If we are told to do the None task then query the default task - if (task == None): + if task is None: task = self.configuration.cmd if not task.startswith("do_"): task = "do_%s" % task @@ -1458,7 +1454,7 @@ class BBCooker: self.buildSetVars() # If we are told to do the None task then query the default task - if (task == None): + if task is None: task = self.configuration.cmd if not task.startswith("do_"): @@ -1669,6 +1665,8 @@ class BBCooker: self.command.reset() self.databuilder.reset() self.data = self.databuilder.data + self.parsecache_valid = False + self.baseconfig_valid = False class CookerExit(bb.event.Event): @@ -1691,7 +1689,7 @@ class CookerCollectFiles(object): def calc_bbfile_priority( self, filename, matched = None ): for _, _, regex, pri in self.bbfile_config_priorities: if regex.match(filename): - if matched != None: + if matched is not None: if not regex in matched: matched.add(regex) return pri @@ -1788,7 +1786,7 @@ class CookerCollectFiles(object): # When constructing an older style single regex, it's possible for BBMASK # to end up beginning with '|', which matches and masks _everything_. if mask.startswith("|"): - collectlog.warn("BBMASK contains regular expression beginning with '|', fixing: %s" % mask) + collectlog.warning("BBMASK contains regular expression beginning with '|', fixing: %s" % mask) mask = mask[1:] try: re.compile(mask) @@ -1944,7 +1942,8 @@ class Parser(multiprocessing.Process): except IndexError: break result = self.parse(*job) - + # Clear the siggen cache after parsing to control memory usage, its huge + bb.parse.siggen.postparsing_clean_cache() try: self.results.put(result, timeout=0.25) except queue.Full: @@ -1952,6 +1951,7 @@ class Parser(multiprocessing.Process): def parse(self, filename, appends): try: + origfilter = bb.event.LogHandler.filter # Record the filename we're parsing into any events generated def parse_filter(self, record): record.taskpid = bb.event.worker_pid @@ -1974,6 +1974,8 @@ class Parser(multiprocessing.Process): # a SystemExit event for example. except BaseException as exc: return True, ParsingFailure(exc, filename) + finally: + bb.event.LogHandler.filter = origfilter class CookerParser(object): def __init__(self, cooker, filelist, masked): diff --git a/poky/bitbake/lib/bb/data.py b/poky/bitbake/lib/bb/data.py index 0d75d0c1a..b0683c518 100644 --- a/poky/bitbake/lib/bb/data.py +++ b/poky/bitbake/lib/bb/data.py @@ -79,7 +79,7 @@ def expand(s, d, varname = None): return d.expand(s, varname) def expandKeys(alterdata, readdata = None): - if readdata == None: + if readdata is None: readdata = alterdata todolist = {} @@ -365,7 +365,7 @@ def build_dependencies(key, keys, shelldeps, varflagsexcl, d): #bb.note("Variable %s references %s and calls %s" % (key, str(deps), str(execs))) #d.setVarFlag(key, "vardeps", deps) -def generate_dependencies(d): +def generate_dependencies(d, whitelist): keys = set(key for key in d if not key.startswith("__")) shelldeps = set(key for key in d.getVar("__exportlist", False) if d.getVarFlag(key, "export", False) and not d.getVarFlag(key, "unexport", False)) @@ -380,7 +380,7 @@ def generate_dependencies(d): newdeps = deps[task] seen = set() while newdeps: - nextdeps = newdeps + nextdeps = newdeps - whitelist seen |= nextdeps newdeps = set() for dep in nextdeps: diff --git a/poky/bitbake/lib/bb/data_smart.py b/poky/bitbake/lib/bb/data_smart.py index dd5c61856..7f1b6dcb4 100644 --- a/poky/bitbake/lib/bb/data_smart.py +++ b/poky/bitbake/lib/bb/data_smart.py @@ -107,10 +107,6 @@ class VariableParse: else: code = match.group()[3:-1] - if "_remote_data" in self.d: - connector = self.d["_remote_data"] - return connector.expandPythonRef(self.varname, code, self.d) - if self.varname: varname = 'Var <%s>' % self.varname else: @@ -268,12 +264,7 @@ class VariableHistory(object): self.variables[newvar].append(i.copy()) def variable(self, var): - remote_connector = self.dataroot.getVar('_remote_data', False) - if remote_connector: - varhistory = remote_connector.getVarHistory(var) - else: - varhistory = [] - + varhistory = [] if var in self.variables: varhistory.extend(self.variables[var]) return varhistory @@ -338,11 +329,12 @@ class VariableHistory(object): lines.append(line) return lines - def get_variable_items_files(self, var, d): + def get_variable_items_files(self, var): """ Use variable history to map items added to a list variable and the files in which they were added. """ + d = self.dataroot history = self.variable(var) finalitems = (d.getVar(var) or '').split() filemap = {} @@ -470,10 +462,6 @@ class DataSmart(MutableMapping): if var in dest: return dest[var], self.overridedata.get(var, None) - if "_remote_data" in dest: - connector = dest["_remote_data"]["_content"] - return connector.getVar(var) - if "_data" not in dest: break dest = dest["_data"] @@ -498,12 +486,6 @@ class DataSmart(MutableMapping): if 'parsing' in loginfo: parsing=True - if '_remote_data' in self.dict: - connector = self.dict["_remote_data"]["_content"] - res = connector.setVar(var, value) - if not res: - return - if 'op' not in loginfo: loginfo['op'] = "set" @@ -607,11 +589,9 @@ class DataSmart(MutableMapping): """ Rename the variable key to newkey """ - if '_remote_data' in self.dict: - connector = self.dict["_remote_data"]["_content"] - res = connector.renameVar(key, newkey) - if not res: - return + if key == newkey: + bb.warn("Calling renameVar with equivalent keys (%s) is invalid" % key) + return val = self.getVar(key, 0, parsing=True) if val is not None: @@ -658,11 +638,6 @@ class DataSmart(MutableMapping): def delVar(self, var, **loginfo): self.expand_cache = {} - if '_remote_data' in self.dict: - connector = self.dict["_remote_data"]["_content"] - res = connector.delVar(var) - if not res: - return loginfo['detail'] = "" loginfo['op'] = 'del' @@ -690,11 +665,6 @@ class DataSmart(MutableMapping): def setVarFlag(self, var, flag, value, **loginfo): self.expand_cache = {} - if '_remote_data' in self.dict: - connector = self.dict["_remote_data"]["_content"] - res = connector.setVarFlag(var, flag, value) - if not res: - return if 'op' not in loginfo: loginfo['op'] = "set" @@ -845,11 +815,6 @@ class DataSmart(MutableMapping): def delVarFlag(self, var, flag, **loginfo): self.expand_cache = {} - if '_remote_data' in self.dict: - connector = self.dict["_remote_data"]["_content"] - res = connector.delVarFlag(var, flag) - if not res: - return local_var, _ = self._findVar(var) if not local_var: @@ -967,7 +932,7 @@ class DataSmart(MutableMapping): def localkeys(self): for key in self.dict: - if key not in ['_data', '_remote_data']: + if key not in ['_data']: yield key def __iter__(self): @@ -976,7 +941,7 @@ class DataSmart(MutableMapping): def keylist(d): klist = set() for key in d: - if key in ["_data", "_remote_data"]: + if key in ["_data"]: continue if key in deleted: continue @@ -990,13 +955,6 @@ class DataSmart(MutableMapping): if "_data" in d: klist |= keylist(d["_data"]) - if "_remote_data" in d: - connector = d["_remote_data"]["_content"] - for key in connector.getKeys(): - if key in deleted: - continue - klist.add(key) - return klist self.need_overrides() @@ -1042,7 +1000,10 @@ class DataSmart(MutableMapping): continue value = d.getVar(key, False) or "" - data.update({key:value}) + if type(value) is type(self): + data.update({key:value.get_hash()}) + else: + data.update({key:value}) varflags = d.getVarFlags(key, internalflags = True) if not varflags: diff --git a/poky/bitbake/lib/bb/event.py b/poky/bitbake/lib/bb/event.py index d44621edf..d1359f010 100644 --- a/poky/bitbake/lib/bb/event.py +++ b/poky/bitbake/lib/bb/event.py @@ -10,8 +10,7 @@ BitBake build tools. # SPDX-License-Identifier: GPL-2.0-only # -import os, sys -import warnings +import sys import pickle import logging import atexit @@ -347,7 +346,7 @@ def set_UIHmask(handlerNum, level, debug_domains, mask): def getName(e): """Returns the name of a class or class instance""" - if getattr(e, "__name__", None) == None: + if getattr(e, "__name__", None) is None: return e.__class__.__name__ else: return e.__name__ @@ -509,7 +508,7 @@ class NoProvider(Event): extra = '' if not self._reasons: if self._close_matches: - extra = ". Close matches:\n %s" % '\n '.join(self._close_matches) + extra = ". Close matches:\n %s" % '\n '.join(sorted(set(self._close_matches))) if self._dependees: msg = "Nothing %sPROVIDES '%s' (but %s %sDEPENDS on or otherwise requires it)%s" % (r, self._item, ", ".join(self._dependees), r, extra) diff --git a/poky/bitbake/lib/bb/fetch2/__init__.py b/poky/bitbake/lib/bb/fetch2/__init__.py index 07de6c269..eb112f069 100644 --- a/poky/bitbake/lib/bb/fetch2/__init__.py +++ b/poky/bitbake/lib/bb/fetch2/__init__.py @@ -33,6 +33,9 @@ _checksum_cache = bb.checksum.FileChecksumCache() logger = logging.getLogger("BitBake.Fetcher") +CHECKSUM_LIST = [ "md5", "sha256", "sha1", "sha384", "sha512" ] +SHOWN_CHECKSUM_LIST = ["sha256"] + class BBFetchException(Exception): """Class all fetch exceptions inherit from""" def __init__(self, message): @@ -131,10 +134,9 @@ class NonLocalMethod(Exception): Exception.__init__(self) class MissingChecksumEvent(bb.event.Event): - def __init__(self, url, md5sum, sha256sum): + def __init__(self, url, **checksums): self.url = url - self.checksums = {'md5sum': md5sum, - 'sha256sum': sha256sum} + self.checksums = checksums bb.event.Event.__init__(self) @@ -484,17 +486,22 @@ def fetcher_init(d): Called to initialize the fetchers once the configuration data is known. Calls before this must not hit the cache. """ + + revs = bb.persist_data.persist('BB_URI_HEADREVS', d) + try: + # fetcher_init is called multiple times, so make sure we only save the + # revs the first time it is called. + if not bb.fetch2.saved_headrevs: + bb.fetch2.saved_headrevs = dict(revs) + except: + pass + # When to drop SCM head revisions controlled by user policy srcrev_policy = d.getVar('BB_SRCREV_POLICY') or "clear" if srcrev_policy == "cache": logger.debug(1, "Keeping SRCREV cache due to cache policy of: %s", srcrev_policy) elif srcrev_policy == "clear": logger.debug(1, "Clearing SRCREV cache due to cache policy of: %s", srcrev_policy) - revs = bb.persist_data.persist('BB_URI_HEADREVS', d) - try: - bb.fetch2.saved_headrevs = revs.items() - except: - pass revs.clear() else: raise FetchError("Invalid SRCREV cache policy of: %s" % srcrev_policy) @@ -513,22 +520,12 @@ def fetcher_parse_done(): def fetcher_compare_revisions(d): """ - Compare the revisions in the persistant cache with current values and - return true/false on whether they've changed. + Compare the revisions in the persistent cache with the saved values from + when bitbake was started and return true if they have changed. """ - data = bb.persist_data.persist('BB_URI_HEADREVS', d).items() - data2 = bb.fetch2.saved_headrevs - - changed = False - for key in data: - if key not in data2 or data2[key] != data[key]: - logger.debug(1, "%s changed", key) - changed = True - return True - else: - logger.debug(2, "%s did not change", key) - return False + headrevs = dict(bb.persist_data.persist('BB_URI_HEADREVS', d)) + return headrevs != bb.fetch2.saved_headrevs def mirror_from_string(data): mirrors = (data or "").replace('\\n',' ').split() @@ -552,71 +549,84 @@ def verify_checksum(ud, d, precomputed={}): downloading. See https://bugzilla.yoctoproject.org/show_bug.cgi?id=5571. """ - _MD5_KEY = "md5" - _SHA256_KEY = "sha256" - if ud.ignore_checksums or not ud.method.supports_checksum(ud): return {} - if _MD5_KEY in precomputed: - md5data = precomputed[_MD5_KEY] - else: - md5data = bb.utils.md5_file(ud.localpath) + def compute_checksum_info(checksum_id): + checksum_name = getattr(ud, "%s_name" % checksum_id) - if _SHA256_KEY in precomputed: - sha256data = precomputed[_SHA256_KEY] - else: - sha256data = bb.utils.sha256_file(ud.localpath) + if checksum_id in precomputed: + checksum_data = precomputed[checksum_id] + else: + checksum_data = getattr(bb.utils, "%s_file" % checksum_id)(ud.localpath) - if ud.method.recommends_checksum(ud) and not ud.md5_expected and not ud.sha256_expected: - # If strict checking enabled and neither sum defined, raise error + checksum_expected = getattr(ud, "%s_expected" % checksum_id) + + return { + "id": checksum_id, + "name": checksum_name, + "data": checksum_data, + "expected": checksum_expected + } + + checksum_infos = [] + for checksum_id in CHECKSUM_LIST: + checksum_infos.append(compute_checksum_info(checksum_id)) + + checksum_dict = {ci["id"] : ci["data"] for ci in checksum_infos} + checksum_event = {"%ssum" % ci["id"] : ci["data"] for ci in checksum_infos} + + for ci in checksum_infos: + if ci["id"] in SHOWN_CHECKSUM_LIST: + checksum_lines = ["SRC_URI[%s] = \"%s\"" % (ci["name"], ci["data"])] + + # If no checksum has been provided + if ud.method.recommends_checksum(ud) and all(ci["expected"] is None for ci in checksum_infos): + messages = [] strict = d.getVar("BB_STRICT_CHECKSUM") or "0" + + # If strict checking enabled and neither sum defined, raise error if strict == "1": - logger.error('No checksum specified for %s, please add at least one to the recipe:\n' - 'SRC_URI[%s] = "%s"\nSRC_URI[%s] = "%s"' % - (ud.localpath, ud.md5_name, md5data, - ud.sha256_name, sha256data)) - raise NoChecksumError('Missing SRC_URI checksum', ud.url) + messages.append("No checksum specified for '%s', please add at " \ + "least one to the recipe:" % ud.localpath) + messages.extend(checksum_lines) + logger.error("\n".join(messages)) + raise NoChecksumError("Missing SRC_URI checksum", ud.url) - bb.event.fire(MissingChecksumEvent(ud.url, md5data, sha256data), d) + bb.event.fire(MissingChecksumEvent(ud.url, **checksum_event), d) if strict == "ignore": - return { - _MD5_KEY: md5data, - _SHA256_KEY: sha256data - } + return checksum_dict # Log missing sums so user can more easily add them - logger.warning('Missing md5 SRC_URI checksum for %s, consider adding to the recipe:\n' - 'SRC_URI[%s] = "%s"', - ud.localpath, ud.md5_name, md5data) - logger.warning('Missing sha256 SRC_URI checksum for %s, consider adding to the recipe:\n' - 'SRC_URI[%s] = "%s"', - ud.localpath, ud.sha256_name, sha256data) + messages.append("Missing checksum for '%s', consider adding at " \ + "least one to the recipe:" % ud.localpath) + messages.extend(checksum_lines) + logger.warning("\n".join(messages)) # We want to alert the user if a checksum is defined in the recipe but # it does not match. - msg = "" - mismatch = False - if ud.md5_expected and ud.md5_expected != md5data: - msg = msg + "\nFile: '%s' has %s checksum %s when %s was expected" % (ud.localpath, 'md5', md5data, ud.md5_expected) - mismatch = True; - - if ud.sha256_expected and ud.sha256_expected != sha256data: - msg = msg + "\nFile: '%s' has %s checksum %s when %s was expected" % (ud.localpath, 'sha256', sha256data, ud.sha256_expected) - mismatch = True; - - if mismatch: - msg = msg + '\nIf this change is expected (e.g. you have upgraded to a new version without updating the checksums) then you can use these lines within the recipe:\nSRC_URI[%s] = "%s"\nSRC_URI[%s] = "%s"\nOtherwise you should retry the download and/or check with upstream to determine if the file has become corrupted or otherwise unexpectedly modified.\n' % (ud.md5_name, md5data, ud.sha256_name, sha256data) - - if len(msg): - raise ChecksumError('Checksum mismatch!%s' % msg, ud.url, md5data) - - return { - _MD5_KEY: md5data, - _SHA256_KEY: sha256data - } - + messages = [] + messages.append("Checksum mismatch!") + bad_checksum = None + + for ci in checksum_infos: + if ci["expected"] and ci["expected"] != ci["data"]: + messages.append("File: '%s' has %s checksum %s when %s was " \ + "expected" % (ud.localpath, ci["id"], ci["data"], ci["expected"])) + bad_checksum = ci["data"] + + if bad_checksum: + messages.append("If this change is expected (e.g. you have upgraded " \ + "to a new version without updating the checksums) " \ + "then you can use these lines within the recipe:") + messages.extend(checksum_lines) + messages.append("Otherwise you should retry the download and/or " \ + "check with upstream to determine if the file has " \ + "become corrupted or otherwise unexpectedly modified.") + raise ChecksumError("\n".join(messages), ud.url, bad_checksum) + + return checksum_dict def verify_donestamp(ud, d, origud=None): """ @@ -1081,7 +1091,7 @@ def try_mirrors(fetch, d, origud, mirrors, check = False): for index, uri in enumerate(uris): ret = try_mirror_url(fetch, origud, uds[index], ld, check) - if ret != False: + if ret: return ret return None @@ -1197,14 +1207,14 @@ def get_checksum_file_list(d): return " ".join(filelist) -def get_file_checksums(filelist, pn): +def get_file_checksums(filelist, pn, localdirsexclude): """Get a list of the checksums for a list of local files Returns the checksums for a list of local files, caching the results as it proceeds """ - return _checksum_cache.get_checksums(filelist, pn) + return _checksum_cache.get_checksums(filelist, pn, localdirsexclude) class FetchData(object): @@ -1230,24 +1240,26 @@ class FetchData(object): self.pswd = self.parm["pswd"] self.setup = False - if "name" in self.parm: - self.md5_name = "%s.md5sum" % self.parm["name"] - self.sha256_name = "%s.sha256sum" % self.parm["name"] - else: - self.md5_name = "md5sum" - self.sha256_name = "sha256sum" - if self.md5_name in self.parm: - self.md5_expected = self.parm[self.md5_name] - elif self.type not in ["http", "https", "ftp", "ftps", "sftp", "s3"]: - self.md5_expected = None - else: - self.md5_expected = d.getVarFlag("SRC_URI", self.md5_name) - if self.sha256_name in self.parm: - self.sha256_expected = self.parm[self.sha256_name] - elif self.type not in ["http", "https", "ftp", "ftps", "sftp", "s3"]: - self.sha256_expected = None - else: - self.sha256_expected = d.getVarFlag("SRC_URI", self.sha256_name) + def configure_checksum(checksum_id): + if "name" in self.parm: + checksum_name = "%s.%ssum" % (self.parm["name"], checksum_id) + else: + checksum_name = "%ssum" % checksum_id + + setattr(self, "%s_name" % checksum_id, checksum_name) + + if checksum_name in self.parm: + checksum_expected = self.parm[checksum_name] + elif self.type not in ["http", "https", "ftp", "ftps", "sftp", "s3"]: + checksum_expected = None + else: + checksum_expected = d.getVarFlag("SRC_URI", checksum_name) + + setattr(self, "%s_expected" % checksum_id, checksum_expected) + + for checksum_id in CHECKSUM_LIST: + configure_checksum(checksum_id) + self.ignore_checksums = False self.names = self.parm.get("name",'default').split(',') @@ -1351,7 +1363,7 @@ class FetchMethod(object): """ # We cannot compute checksums for directories - if os.path.isdir(urldata.localpath) == True: + if os.path.isdir(urldata.localpath): return False if urldata.localpath.find("*") != -1: return False @@ -1365,6 +1377,18 @@ class FetchMethod(object): """ return False + def verify_donestamp(self, ud, d): + """ + Verify the donestamp file + """ + return verify_donestamp(ud, d) + + def update_donestamp(self, ud, d): + """ + Update the donestamp file + """ + update_stamp(ud, d) + def _strip_leading_slashes(self, relpath): """ Remove leading slash as os.path.join can't cope @@ -1539,6 +1563,12 @@ class FetchMethod(object): """ return True + def try_mirrors(self, fetch, urldata, d, mirrors, check=False): + """ + Try to use a mirror + """ + return bool(try_mirrors(fetch, d, urldata, mirrors, check)) + def checkstatus(self, fetch, urldata, d): """ Check the status of a URL @@ -1567,8 +1597,7 @@ class FetchMethod(object): return True, str(latest_rev) def generate_revision_key(self, ud, d, name): - key = self._revision_key(ud, d, name) - return "%s-%s" % (key, d.getVar("PN") or "") + return self._revision_key(ud, d, name) def latest_versionstring(self, ud, d): """ @@ -1578,6 +1607,16 @@ class FetchMethod(object): """ return ('', '') + def done(self, ud, d): + """ + Is the download done ? + """ + if os.path.exists(ud.localpath): + return True + if ud.localpath.find("*") != -1: + return True + return False + class Fetch(object): def __init__(self, urls, d, cache = True, localonly = False, connection_cache = None): if localonly and cache: @@ -1592,8 +1631,11 @@ class Fetch(object): fn = d.getVar('FILE') mc = d.getVar('__BBMULTICONFIG') or "" - if cache and fn and mc + fn in urldata_cache: - self.ud = urldata_cache[mc + fn + str(id(d))] + key = None + if cache and fn: + key = mc + fn + str(id(d)) + if key in urldata_cache: + self.ud = urldata_cache[key] for url in urls: if url not in self.ud: @@ -1604,8 +1646,8 @@ class Fetch(object): self.ud[url] = None pass - if fn and cache: - urldata_cache[mc + fn + str(id(d))] = self.ud + if key: + urldata_cache[key] = self.ud def localpath(self, url): if url not in self.urls: @@ -1641,7 +1683,7 @@ class Fetch(object): ud = self.ud[u] ud.setup_localpath(self.d) m = ud.method - localpath = "" + done = False if ud.lockfile: lf = bb.utils.lockfile(ud.lockfile) @@ -1649,28 +1691,28 @@ class Fetch(object): try: self.d.setVar("BB_NO_NETWORK", network) - if verify_donestamp(ud, self.d) and not m.need_update(ud, self.d): - localpath = ud.localpath + if m.verify_donestamp(ud, self.d) and not m.need_update(ud, self.d): + done = True elif m.try_premirror(ud, self.d): logger.debug(1, "Trying PREMIRRORS") mirrors = mirror_from_string(self.d.getVar('PREMIRRORS')) - localpath = try_mirrors(self, self.d, ud, mirrors, False) - if localpath: + done = m.try_mirrors(self, ud, self.d, mirrors) + if done: try: # early checksum verification so that if the checksum of the premirror # contents mismatch the fetcher can still try upstream and mirrors - update_stamp(ud, self.d) + m.update_donestamp(ud, self.d) except ChecksumError as e: logger.warning("Checksum failure encountered with premirror download of %s - will attempt other sources." % u) logger.debug(1, str(e)) - localpath = "" + done = False if premirroronly: self.d.setVar("BB_NO_NETWORK", "1") firsterr = None - verified_stamp = verify_donestamp(ud, self.d) - if not localpath and (not verified_stamp or m.need_update(ud, self.d)): + verified_stamp = m.verify_donestamp(ud, self.d) + if not done and (not verified_stamp or m.need_update(ud, self.d)): try: if not trusted_network(self.d, ud.url): raise UntrustedUrl(ud.url) @@ -1678,10 +1720,10 @@ class Fetch(object): m.download(ud, self.d) if hasattr(m, "build_mirror_data"): m.build_mirror_data(ud, self.d) - localpath = ud.localpath + done = True # early checksum verify, so that if checksum mismatched, # fetcher still have chance to fetch from mirror - update_stamp(ud, self.d) + m.update_donestamp(ud, self.d) except bb.fetch2.NetworkAccess: raise @@ -1703,14 +1745,14 @@ class Fetch(object): m.clean(ud, self.d) logger.debug(1, "Trying MIRRORS") mirrors = mirror_from_string(self.d.getVar('MIRRORS')) - localpath = try_mirrors(self, self.d, ud, mirrors) + done = m.try_mirrors(self, ud, self.d, mirrors) - if not localpath or ((not os.path.exists(localpath)) and localpath.find("*") == -1): + if not done or not m.done(ud, self.d): if firsterr: logger.error(str(firsterr)) raise FetchError("Unable to fetch URL from any source.", u) - update_stamp(ud, self.d) + m.update_donestamp(ud, self.d) except IOError as e: if e.errno in [errno.ESTALE]: @@ -1741,14 +1783,14 @@ class Fetch(object): logger.debug(1, "Testing URL %s", u) # First try checking uri, u, from PREMIRRORS mirrors = mirror_from_string(self.d.getVar('PREMIRRORS')) - ret = try_mirrors(self, self.d, ud, mirrors, True) + ret = m.try_mirrors(self, ud, self.d, mirrors, True) if not ret: # Next try checking from the original uri, u ret = m.checkstatus(self, ud, self.d) if not ret: # Finally, try checking uri, u, from MIRRORS mirrors = mirror_from_string(self.d.getVar('MIRRORS')) - ret = try_mirrors(self, self.d, ud, mirrors, True) + ret = m.try_mirrors(self, ud, self.d, mirrors, True) if not ret: raise FetchError("URL %s doesn't work" % u, u) @@ -1853,6 +1895,7 @@ from . import osc from . import repo from . import clearcase from . import npm +from . import npmsw methods.append(local.Local()) methods.append(wget.Wget()) @@ -1871,3 +1914,4 @@ methods.append(osc.Osc()) methods.append(repo.Repo()) methods.append(clearcase.ClearCase()) methods.append(npm.Npm()) +methods.append(npmsw.NpmShrinkWrap()) diff --git a/poky/bitbake/lib/bb/fetch2/bzr.py b/poky/bitbake/lib/bb/fetch2/bzr.py index c56d87530..566ace9f0 100644 --- a/poky/bitbake/lib/bb/fetch2/bzr.py +++ b/poky/bitbake/lib/bb/fetch2/bzr.py @@ -14,8 +14,6 @@ BitBake 'Fetch' implementation for bzr. # import os -import sys -import logging import bb from bb.fetch2 import FetchMethod from bb.fetch2 import FetchError diff --git a/poky/bitbake/lib/bb/fetch2/clearcase.py b/poky/bitbake/lib/bb/fetch2/clearcase.py index e2934ef9f..49d7ae1b0 100644 --- a/poky/bitbake/lib/bb/fetch2/clearcase.py +++ b/poky/bitbake/lib/bb/fetch2/clearcase.py @@ -49,7 +49,6 @@ User credentials: # import os -import sys import shutil import bb from bb.fetch2 import FetchMethod @@ -238,7 +237,7 @@ class ClearCase(FetchMethod): # Clean clearcase meta-data before tar - runfetchcmd('tar -czf "%s" .' % (ud.localpath), d, cleanup = [ud.localpath]) + runfetchcmd('tar -czf "%s" .' % (ud.localpath), d, cleanup = [ud.localpath], workdir = ud.viewdir) # Clean up so we can create a new view next time self.clean(ud, d); diff --git a/poky/bitbake/lib/bb/fetch2/cvs.py b/poky/bitbake/lib/bb/fetch2/cvs.py index 1b35ba4cf..29123a483 100644 --- a/poky/bitbake/lib/bb/fetch2/cvs.py +++ b/poky/bitbake/lib/bb/fetch2/cvs.py @@ -14,7 +14,6 @@ BitBake build tools. # import os -import logging import bb from bb.fetch2 import FetchMethod, FetchError, MissingParameterError, logger from bb.fetch2 import runfetchcmd diff --git a/poky/bitbake/lib/bb/fetch2/git.py b/poky/bitbake/lib/bb/fetch2/git.py index fa41b078f..5b3793a70 100644 --- a/poky/bitbake/lib/bb/fetch2/git.py +++ b/poky/bitbake/lib/bb/fetch2/git.py @@ -594,7 +594,9 @@ class Git(FetchMethod): """ Return a unique key for the url """ - return "git:" + ud.host + ud.path.replace('/', '.') + ud.unresolvedrev[name] + # Collapse adjacent slashes + slash_re = re.compile(r"/+") + return "git:" + ud.host + slash_re.sub(".", ud.path) + ud.unresolvedrev[name] def _lsremote(self, ud, d, search): """ @@ -671,7 +673,7 @@ class Git(FetchMethod): # search for version in the line tag = tagregex.search(tag_head) - if tag == None: + if tag is None: continue tag = tag.group('pver') diff --git a/poky/bitbake/lib/bb/fetch2/gitannex.py b/poky/bitbake/lib/bb/fetch2/gitannex.py index 1d497dcb0..80a808d88 100644 --- a/poky/bitbake/lib/bb/fetch2/gitannex.py +++ b/poky/bitbake/lib/bb/fetch2/gitannex.py @@ -8,11 +8,9 @@ BitBake 'Fetch' git annex implementation # SPDX-License-Identifier: GPL-2.0-only # -import os import bb from bb.fetch2.git import Git from bb.fetch2 import runfetchcmd -from bb.fetch2 import logger class GitANNEX(Git): def supports(self, ud, d): diff --git a/poky/bitbake/lib/bb/fetch2/gitsm.py b/poky/bitbake/lib/bb/fetch2/gitsm.py index c622771d2..e7083001d 100644 --- a/poky/bitbake/lib/bb/fetch2/gitsm.py +++ b/poky/bitbake/lib/bb/fetch2/gitsm.py @@ -20,11 +20,12 @@ NOTE: Switching a SRC_URI from "git://" to "gitsm://" requires a clean of your r import os import bb import copy +import shutil +import tempfile from bb.fetch2.git import Git from bb.fetch2 import runfetchcmd from bb.fetch2 import logger from bb.fetch2 import Fetch -from bb.fetch2 import BBFetchException class GitSM(Git): def supports(self, ud, d): @@ -131,7 +132,7 @@ class GitSM(Git): ld.setVar('SRCPV', d.getVar('SRCPV')) ld.setVar('SRCREV_FORMAT', module) - function(ud, url, module, paths[module], ld) + function(ud, url, module, paths[module], workdir, ld) return submodules != [] @@ -153,7 +154,7 @@ class GitSM(Git): return False def download(self, ud, d): - def download_submodule(ud, url, module, modpath, d): + def download_submodule(ud, url, module, modpath, workdir, d): url += ";bareclone=1;nobranch=1" # Is the following still needed? @@ -164,16 +165,25 @@ class GitSM(Git): newfetch.download() # Drop a nugget to add each of the srcrevs we've fetched (used by need_update) runfetchcmd("%s config --add bitbake.srcrev %s" % \ - (ud.basecmd, ud.revisions[ud.names[0]]), d, workdir=ud.clonedir) + (ud.basecmd, ud.revisions[ud.names[0]]), d, workdir=workdir) except Exception as e: logger.error('gitsm: submodule download failed: %s %s' % (type(e).__name__, str(e))) raise Git.download(self, ud, d) - self.process_submodules(ud, ud.clonedir, download_submodule, d) + + # If we're using a shallow mirror tarball it needs to be unpacked + # temporarily so that we can examine the .gitmodules file + if ud.shallow and os.path.exists(ud.fullshallow) and self.need_update(ud, d): + tmpdir = tempfile.mkdtemp(dir=d.getVar("DL_DIR")) + runfetchcmd("tar -xzf %s" % ud.fullshallow, d, workdir=tmpdir) + self.process_submodules(ud, tmpdir, download_submodule, d) + shutil.rmtree(tmpdir) + else: + self.process_submodules(ud, ud.clonedir, download_submodule, d) def unpack(self, ud, destdir, d): - def unpack_submodules(ud, url, module, modpath, d): + def unpack_submodules(ud, url, module, modpath, workdir, d): url += ";bareclone=1;nobranch=1" # Figure out where we clone over the bare submodules... diff --git a/poky/bitbake/lib/bb/fetch2/hg.py b/poky/bitbake/lib/bb/fetch2/hg.py index e21115deb..8f503701e 100644 --- a/poky/bitbake/lib/bb/fetch2/hg.py +++ b/poky/bitbake/lib/bb/fetch2/hg.py @@ -13,8 +13,6 @@ BitBake 'Fetch' implementation for mercurial DRCS (hg). # import os -import sys -import logging import bb import errno from bb.fetch2 import FetchMethod diff --git a/poky/bitbake/lib/bb/fetch2/npm.py b/poky/bitbake/lib/bb/fetch2/npm.py index 9700e6102..47898509f 100644 --- a/poky/bitbake/lib/bb/fetch2/npm.py +++ b/poky/bitbake/lib/bb/fetch2/npm.py @@ -1,301 +1,296 @@ +# Copyright (C) 2020 Savoir-Faire Linux # # SPDX-License-Identifier: GPL-2.0-only # """ -BitBake 'Fetch' NPM implementation +BitBake 'Fetch' npm implementation -The NPM fetcher is used to retrieve files from the npmjs repository +npm fetcher support the SRC_URI with format of: +SRC_URI = "npm://some.registry.url;OptionA=xxx;OptionB=xxx;..." -Usage in the recipe: +Supported SRC_URI options are: - SRC_URI = "npm://registry.npmjs.org/;name=${PN};version=${PV}" - Suported SRC_URI options are: +- package + The npm package name. This is a mandatory parameter. - - name - - version +- version + The npm package version. This is a mandatory parameter. - npm://registry.npmjs.org/${PN}/-/${PN}-${PV}.tgz would become npm://registry.npmjs.org;name=${PN};version=${PV} - The fetcher all triggers off the existence of ud.localpath. If that exists and has the ".done" stamp, its assumed the fetch is good/done +- downloadfilename + Specifies the filename used when storing the downloaded file. +- destsuffix + Specifies the directory to use to unpack the package (default: npm). """ -import os -import sys -import urllib.request, urllib.parse, urllib.error +import base64 import json -import subprocess -import signal +import os +import re +import shlex +import tempfile import bb -from bb.fetch2 import FetchMethod -from bb.fetch2 import FetchError -from bb.fetch2 import ChecksumError -from bb.fetch2 import runfetchcmd -from bb.fetch2 import logger -from bb.fetch2 import UnpackError -from bb.fetch2 import ParameterError - -def subprocess_setup(): - # Python installs a SIGPIPE handler by default. This is usually not what - # non-Python subprocesses expect. - # SIGPIPE errors are known issues with gzip/bash - signal.signal(signal.SIGPIPE, signal.SIG_DFL) +from bb.fetch2 import Fetch +from bb.fetch2 import FetchError +from bb.fetch2 import FetchMethod +from bb.fetch2 import MissingParameterError +from bb.fetch2 import ParameterError +from bb.fetch2 import URI +from bb.fetch2 import check_network_access +from bb.fetch2 import runfetchcmd +from bb.utils import is_semver + +def npm_package(package): + """Convert the npm package name to remove unsupported character""" + # Scoped package names (with the @) use the same naming convention + # as the 'npm pack' command. + if package.startswith("@"): + return re.sub("/", "-", package[1:]) + return package + +def npm_filename(package, version): + """Get the filename of a npm package""" + return npm_package(package) + "-" + version + ".tgz" + +def npm_localfile(package, version): + """Get the local filename of a npm package""" + return os.path.join("npm2", npm_filename(package, version)) + +def npm_integrity(integrity): + """ + Get the checksum name and expected value from the subresource integrity + https://www.w3.org/TR/SRI/ + """ + algo, value = integrity.split("-", maxsplit=1) + return "%ssum" % algo, base64.b64decode(value).hex() + +def npm_unpack(tarball, destdir, d): + """Unpack a npm tarball""" + bb.utils.mkdirhier(destdir) + cmd = "tar --extract --gzip --file=%s" % shlex.quote(tarball) + cmd += " --no-same-owner" + cmd += " --strip-components=1" + runfetchcmd(cmd, d, workdir=destdir) + +class NpmEnvironment(object): + """ + Using a npm config file seems more reliable than using cli arguments. + This class allows to create a controlled environment for npm commands. + """ + def __init__(self, d, configs=None): + self.d = d + self.configs = configs + + def run(self, cmd, args=None, configs=None, workdir=None): + """Run npm command in a controlled environment""" + with tempfile.TemporaryDirectory() as tmpdir: + d = bb.data.createCopy(self.d) + d.setVar("HOME", tmpdir) + + cfgfile = os.path.join(tmpdir, "npmrc") + + if not workdir: + workdir = tmpdir + + def _run(cmd): + cmd = "NPM_CONFIG_USERCONFIG=%s " % cfgfile + cmd + cmd = "NPM_CONFIG_GLOBALCONFIG=%s " % cfgfile + cmd + return runfetchcmd(cmd, d, workdir=workdir) + + if self.configs: + for key, value in self.configs: + _run("npm config set %s %s" % (key, shlex.quote(value))) + + if configs: + for key, value in configs: + _run("npm config set %s %s" % (key, shlex.quote(value))) + + if args: + for key, value in args: + cmd += " --%s=%s" % (key, shlex.quote(value)) + + return _run(cmd) class Npm(FetchMethod): - - """Class to fetch urls via 'npm'""" - def init(self, d): - pass + """Class to fetch a package from a npm registry""" def supports(self, ud, d): - """ - Check to see if a given url can be fetched with npm - """ - return ud.type in ['npm'] + """Check if a given url can be fetched with npm""" + return ud.type in ["npm"] + + def urldata_init(self, ud, d): + """Init npm specific variables within url data""" + ud.package = None + ud.version = None + ud.registry = None - def debug(self, msg): - logger.debug(1, "NpmFetch: %s", msg) + # Get the 'package' parameter + if "package" in ud.parm: + ud.package = ud.parm.get("package") - def clean(self, ud, d): - logger.debug(2, "Calling cleanup %s" % ud.pkgname) - bb.utils.remove(ud.localpath, False) - bb.utils.remove(ud.pkgdatadir, True) - bb.utils.remove(ud.fullmirror, False) + if not ud.package: + raise MissingParameterError("Parameter 'package' required", ud.url) + + # Get the 'version' parameter + if "version" in ud.parm: + ud.version = ud.parm.get("version") - def urldata_init(self, ud, d): - """ - init NPM specific variable within url data - """ - if 'downloadfilename' in ud.parm: - ud.basename = ud.parm['downloadfilename'] - else: - ud.basename = os.path.basename(ud.path) - - # can't call it ud.name otherwise fetcher base class will start doing sha1stuff - # TODO: find a way to get an sha1/sha256 manifest of pkg & all deps - ud.pkgname = ud.parm.get("name", None) - if not ud.pkgname: - raise ParameterError("NPM fetcher requires a name parameter", ud.url) - ud.version = ud.parm.get("version", None) if not ud.version: - raise ParameterError("NPM fetcher requires a version parameter", ud.url) - ud.bbnpmmanifest = "%s-%s.deps.json" % (ud.pkgname, ud.version) - ud.bbnpmmanifest = ud.bbnpmmanifest.replace('/', '-') - ud.registry = "http://%s" % (ud.url.replace('npm://', '', 1).split(';'))[0] - prefixdir = "npm/%s" % ud.pkgname - ud.pkgdatadir = d.expand("${DL_DIR}/%s" % prefixdir) - if not os.path.exists(ud.pkgdatadir): - bb.utils.mkdirhier(ud.pkgdatadir) - ud.localpath = d.expand("${DL_DIR}/npm/%s" % ud.bbnpmmanifest) - - self.basecmd = d.getVar("FETCHCMD_wget") or "/usr/bin/env wget -O -t 2 -T 30 -nv --passive-ftp --no-check-certificate " - ud.prefixdir = prefixdir - - ud.write_tarballs = ((d.getVar("BB_GENERATE_MIRROR_TARBALLS") or "0") != "0") - mirrortarball = 'npm_%s-%s.tar.xz' % (ud.pkgname, ud.version) - mirrortarball = mirrortarball.replace('/', '-') - ud.fullmirror = os.path.join(d.getVar("DL_DIR"), mirrortarball) - ud.mirrortarballs = [mirrortarball] + raise MissingParameterError("Parameter 'version' required", ud.url) - def need_update(self, ud, d): - if os.path.exists(ud.localpath): - return False - return True - - def _runpack(self, ud, d, pkgfullname: str, quiet=False) -> str: - """ - Runs npm pack on a full package name. - Returns the filename of the downloaded package - """ - bb.fetch2.check_network_access(d, pkgfullname, ud.registry) - dldir = d.getVar("DL_DIR") - dldir = os.path.join(dldir, ud.prefixdir) - - command = "npm pack {} --registry {}".format(pkgfullname, ud.registry) - logger.debug(2, "Fetching {} using command '{}' in {}".format(pkgfullname, command, dldir)) - filename = runfetchcmd(command, d, quiet, workdir=dldir) - return filename.rstrip() - - def _unpackdep(self, ud, pkg, data, destdir, dldir, d): - file = data[pkg]['tgz'] - logger.debug(2, "file to extract is %s" % file) - if file.endswith('.tgz') or file.endswith('.tar.gz') or file.endswith('.tar.Z'): - cmd = 'tar xz --strip 1 --no-same-owner --warning=no-unknown-keyword -f %s/%s' % (dldir, file) - else: - bb.fatal("NPM package %s downloaded not a tarball!" % file) - - # Change to subdir before executing command - if not os.path.exists(destdir): - os.makedirs(destdir) - path = d.getVar('PATH') - if path: - cmd = "PATH=\"%s\" %s" % (path, cmd) - bb.note("Unpacking %s to %s/" % (file, destdir)) - ret = subprocess.call(cmd, preexec_fn=subprocess_setup, shell=True, cwd=destdir) - - if ret != 0: - raise UnpackError("Unpack command %s failed with return value %s" % (cmd, ret), ud.url) - - if 'deps' not in data[pkg]: - return - for dep in data[pkg]['deps']: - self._unpackdep(ud, dep, data[pkg]['deps'], "%s/node_modules/%s" % (destdir, dep), dldir, d) - - - def unpack(self, ud, destdir, d): - dldir = d.getVar("DL_DIR") - with open("%s/npm/%s" % (dldir, ud.bbnpmmanifest)) as datafile: - workobj = json.load(datafile) - dldir = "%s/%s" % (os.path.dirname(ud.localpath), ud.pkgname) - - if 'subdir' in ud.parm: - unpackdir = '%s/%s' % (destdir, ud.parm.get('subdir')) + if not is_semver(ud.version) and not ud.version == "latest": + raise ParameterError("Invalid 'version' parameter", ud.url) + + # Extract the 'registry' part of the url + ud.registry = re.sub(r"^npm://", "http://", ud.url.split(";")[0]) + + # Using the 'downloadfilename' parameter as local filename + # or the npm package name. + if "downloadfilename" in ud.parm: + ud.localfile = d.expand(ud.parm["downloadfilename"]) else: - unpackdir = '%s/npmpkg' % destdir - - self._unpackdep(ud, ud.pkgname, workobj, unpackdir, dldir, d) - - def _parse_view(self, output): - ''' - Parse the output of npm view --json; the last JSON result - is assumed to be the one that we're interested in. - ''' - pdata = json.loads(output); - try: - return pdata[-1] - except: - return pdata - - def _getdependencies(self, pkg, data, version, d, ud, optional=False, fetchedlist=None): - if fetchedlist is None: - fetchedlist = [] - pkgfullname = pkg - if version != '*' and not '/' in version: - pkgfullname += "@'%s'" % version - if pkgfullname in fetchedlist: - return - - logger.debug(2, "Calling getdeps on %s" % pkg) - fetchcmd = "npm view %s --json --registry %s" % (pkgfullname, ud.registry) - output = runfetchcmd(fetchcmd, d, True) - pdata = self._parse_view(output) - if not pdata: - raise FetchError("The command '%s' returned no output" % fetchcmd) - if optional: - pkg_os = pdata.get('os', None) - if pkg_os: - if not isinstance(pkg_os, list): - pkg_os = [pkg_os] - blacklist = False - for item in pkg_os: - if item.startswith('!'): - blacklist = True - break - if (not blacklist and 'linux' not in pkg_os) or '!linux' in pkg_os: - logger.debug(2, "Skipping %s since it's incompatible with Linux" % pkg) - return - filename = self._runpack(ud, d, pkgfullname) - data[pkg] = {} - data[pkg]['tgz'] = filename - fetchedlist.append(pkgfullname) - - dependencies = pdata.get('dependencies', {}) - optionalDependencies = pdata.get('optionalDependencies', {}) - dependencies.update(optionalDependencies) - depsfound = {} - optdepsfound = {} - data[pkg]['deps'] = {} - for dep in dependencies: - if dep in optionalDependencies: - optdepsfound[dep] = dependencies[dep] + ud.localfile = npm_localfile(ud.package, ud.version) + + # Get the base 'npm' command + ud.basecmd = d.getVar("FETCHCMD_npm") or "npm" + + # This fetcher resolves a URI from a npm package name and version and + # then forwards it to a proxy fetcher. A resolve file containing the + # resolved URI is created to avoid unwanted network access (if the file + # already exists). The management of the donestamp file, the lockfile + # and the checksums are forwarded to the proxy fetcher. + ud.proxy = None + ud.needdonestamp = False + ud.resolvefile = self.localpath(ud, d) + ".resolved" + + def _resolve_proxy_url(self, ud, d): + def _npm_view(): + configs = [] + configs.append(("json", "true")) + configs.append(("registry", ud.registry)) + pkgver = shlex.quote(ud.package + "@" + ud.version) + cmd = ud.basecmd + " view %s" % pkgver + env = NpmEnvironment(d) + check_network_access(d, cmd, ud.registry) + view_string = env.run(cmd, configs=configs) + + if not view_string: + raise FetchError("Unavailable package %s" % pkgver, ud.url) + + try: + view = json.loads(view_string) + + error = view.get("error") + if error is not None: + raise FetchError(error.get("summary"), ud.url) + + if ud.version == "latest": + bb.warn("The npm package %s is using the latest " \ + "version available. This could lead to " \ + "non-reproducible builds." % pkgver) + elif ud.version != view.get("version"): + raise ParameterError("Invalid 'version' parameter", ud.url) + + return view + + except Exception as e: + raise FetchError("Invalid view from npm: %s" % str(e), ud.url) + + def _get_url(view): + tarball_url = view.get("dist", {}).get("tarball") + + if tarball_url is None: + raise FetchError("Invalid 'dist.tarball' in view", ud.url) + + uri = URI(tarball_url) + uri.params["downloadfilename"] = ud.localfile + + integrity = view.get("dist", {}).get("integrity") + shasum = view.get("dist", {}).get("shasum") + + if integrity is not None: + checksum_name, checksum_expected = npm_integrity(integrity) + uri.params[checksum_name] = checksum_expected + elif shasum is not None: + uri.params["sha1sum"] = shasum else: - depsfound[dep] = dependencies[dep] - for dep, version in optdepsfound.items(): - self._getdependencies(dep, data[pkg]['deps'], version, d, ud, optional=True, fetchedlist=fetchedlist) - for dep, version in depsfound.items(): - self._getdependencies(dep, data[pkg]['deps'], version, d, ud, fetchedlist=fetchedlist) - - def _getshrinkeddependencies(self, pkg, data, version, d, ud, lockdown, manifest, toplevel=True): - logger.debug(2, "NPM shrinkwrap file is %s" % data) - if toplevel: - name = data.get('name', None) - if name and name != pkg: - for obj in data.get('dependencies', []): - if obj == pkg: - self._getshrinkeddependencies(obj, data['dependencies'][obj], data['dependencies'][obj]['version'], d, ud, lockdown, manifest, False) - return - - pkgnameWithVersion = "{}@{}".format(pkg, version) - logger.debug(2, "Get dependencies for {}".format(pkgnameWithVersion)) - filename = self._runpack(ud, d, pkgnameWithVersion) - manifest[pkg] = {} - manifest[pkg]['tgz'] = filename - manifest[pkg]['deps'] = {} - - if pkg in lockdown: - sha1_expected = lockdown[pkg][version] - sha1_data = bb.utils.sha1_file("npm/%s/%s" % (ud.pkgname, manifest[pkg]['tgz'])) - if sha1_expected != sha1_data: - msg = "\nFile: '%s' has %s checksum %s when %s was expected" % (manifest[pkg]['tgz'], 'sha1', sha1_data, sha1_expected) - raise ChecksumError('Checksum mismatch!%s' % msg) - else: - logger.debug(2, "No lockdown data for %s@%s" % (pkg, version)) + raise FetchError("Invalid 'dist.integrity' in view", ud.url) - if 'dependencies' in data: - for obj in data['dependencies']: - logger.debug(2, "Found dep is %s" % str(obj)) - self._getshrinkeddependencies(obj, data['dependencies'][obj], data['dependencies'][obj]['version'], d, ud, lockdown, manifest[pkg]['deps'], False) + return str(uri) + + url = _get_url(_npm_view()) + + bb.utils.mkdirhier(os.path.dirname(ud.resolvefile)) + with open(ud.resolvefile, "w") as f: + f.write(url) + + def _setup_proxy(self, ud, d): + if ud.proxy is None: + if not os.path.exists(ud.resolvefile): + self._resolve_proxy_url(ud, d) + + with open(ud.resolvefile, "r") as f: + url = f.read() + + # Avoid conflicts between the environment data and: + # - the proxy url checksum + data = bb.data.createCopy(d) + data.delVarFlags("SRC_URI") + ud.proxy = Fetch([url], data) + + def _get_proxy_method(self, ud, d): + self._setup_proxy(ud, d) + proxy_url = ud.proxy.urls[0] + proxy_ud = ud.proxy.ud[proxy_url] + proxy_d = ud.proxy.d + proxy_ud.setup_localpath(proxy_d) + return proxy_ud.method, proxy_ud, proxy_d + + def verify_donestamp(self, ud, d): + """Verify the donestamp file""" + proxy_m, proxy_ud, proxy_d = self._get_proxy_method(ud, d) + return proxy_m.verify_donestamp(proxy_ud, proxy_d) + + def update_donestamp(self, ud, d): + """Update the donestamp file""" + proxy_m, proxy_ud, proxy_d = self._get_proxy_method(ud, d) + proxy_m.update_donestamp(proxy_ud, proxy_d) + + def need_update(self, ud, d): + """Force a fetch, even if localpath exists ?""" + if not os.path.exists(ud.resolvefile): + return True + if ud.version == "latest": + return True + proxy_m, proxy_ud, proxy_d = self._get_proxy_method(ud, d) + return proxy_m.need_update(proxy_ud, proxy_d) + + def try_mirrors(self, fetch, ud, d, mirrors): + """Try to use a mirror""" + proxy_m, proxy_ud, proxy_d = self._get_proxy_method(ud, d) + return proxy_m.try_mirrors(fetch, proxy_ud, proxy_d, mirrors) def download(self, ud, d): """Fetch url""" - jsondepobj = {} - shrinkobj = {} - lockdown = {} - - if not os.listdir(ud.pkgdatadir) and os.path.exists(ud.fullmirror): - dest = d.getVar("DL_DIR") - bb.utils.mkdirhier(dest) - runfetchcmd("tar -xJf %s" % (ud.fullmirror), d, workdir=dest) - return - - if ud.parm.get("noverify", None) != '1': - shwrf = d.getVar('NPM_SHRINKWRAP') - logger.debug(2, "NPM shrinkwrap file is %s" % shwrf) - if shwrf: - try: - with open(shwrf) as datafile: - shrinkobj = json.load(datafile) - except Exception as e: - raise FetchError('Error loading NPM_SHRINKWRAP file "%s" for %s: %s' % (shwrf, ud.pkgname, str(e))) - elif not ud.ignore_checksums: - logger.warning('Missing shrinkwrap file in NPM_SHRINKWRAP for %s, this will lead to unreliable builds!' % ud.pkgname) - lckdf = d.getVar('NPM_LOCKDOWN') - logger.debug(2, "NPM lockdown file is %s" % lckdf) - if lckdf: - try: - with open(lckdf) as datafile: - lockdown = json.load(datafile) - except Exception as e: - raise FetchError('Error loading NPM_LOCKDOWN file "%s" for %s: %s' % (lckdf, ud.pkgname, str(e))) - elif not ud.ignore_checksums: - logger.warning('Missing lockdown file in NPM_LOCKDOWN for %s, this will lead to unreproducible builds!' % ud.pkgname) - - if ('name' not in shrinkobj): - self._getdependencies(ud.pkgname, jsondepobj, ud.version, d, ud) - else: - self._getshrinkeddependencies(ud.pkgname, shrinkobj, ud.version, d, ud, lockdown, jsondepobj) - - with open(ud.localpath, 'w') as outfile: - json.dump(jsondepobj, outfile) - - def build_mirror_data(self, ud, d): - # Generate a mirror tarball if needed - if ud.write_tarballs and not os.path.exists(ud.fullmirror): - # it's possible that this symlink points to read-only filesystem with PREMIRROR - if os.path.islink(ud.fullmirror): - os.unlink(ud.fullmirror) - - dldir = d.getVar("DL_DIR") - logger.info("Creating tarball of npm data") - runfetchcmd("tar -cJf %s npm/%s npm/%s" % (ud.fullmirror, ud.bbnpmmanifest, ud.pkgname), d, - workdir=dldir) - runfetchcmd("touch %s.done" % (ud.fullmirror), d, workdir=dldir) + self._setup_proxy(ud, d) + ud.proxy.download() + + def unpack(self, ud, rootdir, d): + """Unpack the downloaded archive""" + destsuffix = ud.parm.get("destsuffix", "npm") + destdir = os.path.join(rootdir, destsuffix) + npm_unpack(ud.localpath, destdir, d) + + def clean(self, ud, d): + """Clean any existing full or partial download""" + if os.path.exists(ud.resolvefile): + self._setup_proxy(ud, d) + ud.proxy.clean() + bb.utils.remove(ud.resolvefile) + + def done(self, ud, d): + """Is the download done ?""" + if not os.path.exists(ud.resolvefile): + return False + proxy_m, proxy_ud, proxy_d = self._get_proxy_method(ud, d) + return proxy_m.done(proxy_ud, proxy_d) diff --git a/poky/bitbake/lib/bb/fetch2/npmsw.py b/poky/bitbake/lib/bb/fetch2/npmsw.py new file mode 100644 index 000000000..0c3511d8a --- /dev/null +++ b/poky/bitbake/lib/bb/fetch2/npmsw.py @@ -0,0 +1,255 @@ +# Copyright (C) 2020 Savoir-Faire Linux +# +# SPDX-License-Identifier: GPL-2.0-only +# +""" +BitBake 'Fetch' npm shrinkwrap implementation + +npm fetcher support the SRC_URI with format of: +SRC_URI = "npmsw://some.registry.url;OptionA=xxx;OptionB=xxx;..." + +Supported SRC_URI options are: + +- dev + Set to 1 to also install devDependencies. + +- destsuffix + Specifies the directory to use to unpack the dependencies (default: ${S}). +""" + +import json +import os +import re +import bb +from bb.fetch2 import Fetch +from bb.fetch2 import FetchMethod +from bb.fetch2 import ParameterError +from bb.fetch2 import URI +from bb.fetch2.npm import npm_integrity +from bb.fetch2.npm import npm_localfile +from bb.fetch2.npm import npm_unpack +from bb.utils import is_semver + +def foreach_dependencies(shrinkwrap, callback=None, dev=False): + """ + Run a callback for each dependencies of a shrinkwrap file. + The callback is using the format: + callback(name, params, deptree) + with: + name = the package name (string) + params = the package parameters (dictionary) + deptree = the package dependency tree (array of strings) + """ + def _walk_deps(deps, deptree): + for name in deps: + subtree = [*deptree, name] + _walk_deps(deps[name].get("dependencies", {}), subtree) + if callback is not None: + if deps[name].get("dev", False) and not dev: + continue + elif deps[name].get("bundled", False): + continue + callback(name, deps[name], subtree) + + _walk_deps(shrinkwrap.get("dependencies", {}), []) + +class NpmShrinkWrap(FetchMethod): + """Class to fetch all package from a shrinkwrap file""" + + def supports(self, ud, d): + """Check if a given url can be fetched with npmsw""" + return ud.type in ["npmsw"] + + def urldata_init(self, ud, d): + """Init npmsw specific variables within url data""" + + # Get the 'shrinkwrap' parameter + ud.shrinkwrap_file = re.sub(r"^npmsw://", "", ud.url.split(";")[0]) + + # Get the 'dev' parameter + ud.dev = bb.utils.to_boolean(ud.parm.get("dev"), False) + + # Resolve the dependencies + ud.deps = [] + + def _resolve_dependency(name, params, deptree): + url = None + localpath = None + extrapaths = [] + destsubdirs = [os.path.join("node_modules", dep) for dep in deptree] + destsuffix = os.path.join(*destsubdirs) + + integrity = params.get("integrity", None) + resolved = params.get("resolved", None) + version = params.get("version", None) + + # Handle registry sources + if is_semver(version) and resolved and integrity: + localfile = npm_localfile(name, version) + + uri = URI(resolved) + uri.params["downloadfilename"] = localfile + + checksum_name, checksum_expected = npm_integrity(integrity) + uri.params[checksum_name] = checksum_expected + + url = str(uri) + + localpath = os.path.join(d.getVar("DL_DIR"), localfile) + + # Create a resolve file to mimic the npm fetcher and allow + # re-usability of the downloaded file. + resolvefile = localpath + ".resolved" + + bb.utils.mkdirhier(os.path.dirname(resolvefile)) + with open(resolvefile, "w") as f: + f.write(url) + + extrapaths.append(resolvefile) + + # Handle http tarball sources + elif version.startswith("http") and integrity: + localfile = os.path.join("npm2", os.path.basename(version)) + + uri = URI(version) + uri.params["downloadfilename"] = localfile + + checksum_name, checksum_expected = npm_integrity(integrity) + uri.params[checksum_name] = checksum_expected + + url = str(uri) + + localpath = os.path.join(d.getVar("DL_DIR"), localfile) + + # Handle git sources + elif version.startswith("git"): + regex = re.compile(r""" + ^ + git\+ + (?P[a-z]+) + :// + (?P[^#]+) + \# + (?P[0-9a-f]+) + $ + """, re.VERBOSE) + + match = regex.match(version) + + if not match: + raise ParameterError("Invalid git url: %s" % version, ud.url) + + groups = match.groupdict() + + uri = URI("git://" + str(groups["url"])) + uri.params["protocol"] = str(groups["protocol"]) + uri.params["rev"] = str(groups["rev"]) + uri.params["destsuffix"] = destsuffix + + url = str(uri) + + # local tarball sources and local link sources are unsupported + else: + raise ParameterError("Unsupported dependency: %s" % name, ud.url) + + ud.deps.append({ + "url": url, + "localpath": localpath, + "extrapaths": extrapaths, + "destsuffix": destsuffix, + }) + + try: + with open(ud.shrinkwrap_file, "r") as f: + shrinkwrap = json.load(f) + except Exception as e: + raise ParameterError("Invalid shrinkwrap file: %s" % str(e), ud.url) + + foreach_dependencies(shrinkwrap, _resolve_dependency, ud.dev) + + # Avoid conflicts between the environment data and: + # - the proxy url revision + # - the proxy url checksum + data = bb.data.createCopy(d) + data.delVar("SRCREV") + data.delVarFlags("SRC_URI") + + # This fetcher resolves multiple URIs from a shrinkwrap file and then + # forwards it to a proxy fetcher. The management of the donestamp file, + # the lockfile and the checksums are forwarded to the proxy fetcher. + ud.proxy = Fetch([dep["url"] for dep in ud.deps], data) + ud.needdonestamp = False + + @staticmethod + def _foreach_proxy_method(ud, handle): + returns = [] + for proxy_url in ud.proxy.urls: + proxy_ud = ud.proxy.ud[proxy_url] + proxy_d = ud.proxy.d + proxy_ud.setup_localpath(proxy_d) + returns.append(handle(proxy_ud.method, proxy_ud, proxy_d)) + return returns + + def verify_donestamp(self, ud, d): + """Verify the donestamp file""" + def _handle(m, ud, d): + return m.verify_donestamp(ud, d) + return all(self._foreach_proxy_method(ud, _handle)) + + def update_donestamp(self, ud, d): + """Update the donestamp file""" + def _handle(m, ud, d): + m.update_donestamp(ud, d) + self._foreach_proxy_method(ud, _handle) + + def need_update(self, ud, d): + """Force a fetch, even if localpath exists ?""" + def _handle(m, ud, d): + return m.need_update(ud, d) + return all(self._foreach_proxy_method(ud, _handle)) + + def try_mirrors(self, fetch, ud, d, mirrors): + """Try to use a mirror""" + def _handle(m, ud, d): + return m.try_mirrors(fetch, ud, d, mirrors) + return all(self._foreach_proxy_method(ud, _handle)) + + def download(self, ud, d): + """Fetch url""" + ud.proxy.download() + + def unpack(self, ud, rootdir, d): + """Unpack the downloaded dependencies""" + destdir = d.getVar("S") + destsuffix = ud.parm.get("destsuffix") + if destsuffix: + destdir = os.path.join(rootdir, destsuffix) + + bb.utils.mkdirhier(destdir) + bb.utils.copyfile(ud.shrinkwrap_file, + os.path.join(destdir, "npm-shrinkwrap.json")) + + auto = [dep["url"] for dep in ud.deps if not dep["localpath"]] + manual = [dep for dep in ud.deps if dep["localpath"]] + + if auto: + ud.proxy.unpack(destdir, auto) + + for dep in manual: + depdestdir = os.path.join(destdir, dep["destsuffix"]) + npm_unpack(dep["localpath"], depdestdir, d) + + def clean(self, ud, d): + """Clean any existing full or partial download""" + ud.proxy.clean() + + # Clean extra files + for dep in ud.deps: + for path in dep["extrapaths"]: + bb.utils.remove(path) + + def done(self, ud, d): + """Is the download done ?""" + def _handle(m, ud, d): + return m.done(ud, d) + return all(self._foreach_proxy_method(ud, _handle)) diff --git a/poky/bitbake/lib/bb/fetch2/osc.py b/poky/bitbake/lib/bb/fetch2/osc.py index 3e567155d..8f091efd0 100644 --- a/poky/bitbake/lib/bb/fetch2/osc.py +++ b/poky/bitbake/lib/bb/fetch2/osc.py @@ -7,8 +7,6 @@ Based on the svn "Fetch" implementation. """ -import os -import sys import logging import bb from bb.fetch2 import FetchMethod @@ -43,7 +41,7 @@ class Osc(FetchMethod): else: pv = d.getVar("PV", False) rev = bb.fetch2.srcrev_internal_helper(ud, d) - if rev and rev != True: + if rev: ud.revision = rev else: ud.revision = "" diff --git a/poky/bitbake/lib/bb/fetch2/perforce.py b/poky/bitbake/lib/bb/fetch2/perforce.py index 54d001ec8..f57c2a4f5 100644 --- a/poky/bitbake/lib/bb/fetch2/perforce.py +++ b/poky/bitbake/lib/bb/fetch2/perforce.py @@ -11,7 +11,6 @@ BitBake 'Fetch' implementation for perforce # Based on functions from the base bb module, Copyright 2003 Holger Schurig import os -import logging import bb from bb.fetch2 import FetchMethod from bb.fetch2 import FetchError @@ -105,7 +104,7 @@ class Perforce(FetchMethod): if command == 'changes': p4cmd = '%s%s changes -m 1 //%s' % (ud.basecmd, p4opt, pathnrev) elif command == 'print': - if depot_filename != None: + if depot_filename is not None: p4cmd = '%s%s print -o "p4/%s" "%s"' % (ud.basecmd, p4opt, filename, depot_filename) else: raise FetchError('No depot file name provided to p4 %s' % command, ud.url) diff --git a/poky/bitbake/lib/bb/fetch2/ssh.py b/poky/bitbake/lib/bb/fetch2/ssh.py index f5be060c4..5e982ecf3 100644 --- a/poky/bitbake/lib/bb/fetch2/ssh.py +++ b/poky/bitbake/lib/bb/fetch2/ssh.py @@ -32,8 +32,6 @@ IETF secsh internet draft: import re, os from bb.fetch2 import FetchMethod -from bb.fetch2 import FetchError -from bb.fetch2 import logger from bb.fetch2 import runfetchcmd @@ -60,7 +58,7 @@ class SSH(FetchMethod): '''Class to fetch a module or modules via Secure Shell''' def supports(self, urldata, d): - return __pattern__.match(urldata.url) != None + return __pattern__.match(urldata.url) is not None def supports_checksum(self, urldata): return False diff --git a/poky/bitbake/lib/bb/fetch2/svn.py b/poky/bitbake/lib/bb/fetch2/svn.py index 96d666ba3..971a5add4 100644 --- a/poky/bitbake/lib/bb/fetch2/svn.py +++ b/poky/bitbake/lib/bb/fetch2/svn.py @@ -11,8 +11,6 @@ BitBake 'Fetch' implementation for svn. # Based on functions from the base bb module, Copyright 2003 Holger Schurig import os -import sys -import logging import bb import re from bb.fetch2 import FetchMethod @@ -49,7 +47,7 @@ class Svn(FetchMethod): svndir = d.getVar("SVNDIR") or (d.getVar("DL_DIR") + "/svn") relpath = self._strip_leading_slashes(ud.path) ud.pkgdir = os.path.join(svndir, ud.host, relpath) - ud.moddir = os.path.join(ud.pkgdir, ud.module) + ud.moddir = os.path.join(ud.pkgdir, ud.path_spec) # Protects the repository from concurrent updates, e.g. from two # recipes fetching different revisions at the same time ud.svnlock = os.path.join(ud.pkgdir, "svn.lock") @@ -124,30 +122,30 @@ class Svn(FetchMethod): try: if os.access(os.path.join(ud.moddir, '.svn'), os.R_OK): - svnupdatecmd = self._buildsvncommand(ud, d, "update") + svncmd = self._buildsvncommand(ud, d, "update") logger.info("Update " + ud.url) # We need to attempt to run svn upgrade first in case its an older working format try: runfetchcmd(ud.basecmd + " upgrade", d, workdir=ud.moddir) except FetchError: pass - logger.debug(1, "Running %s", svnupdatecmd) - bb.fetch2.check_network_access(d, svnupdatecmd, ud.url) - runfetchcmd(svnupdatecmd, d, workdir=ud.moddir) + logger.debug(1, "Running %s", svncmd) + bb.fetch2.check_network_access(d, svncmd, ud.url) + runfetchcmd(svncmd, d, workdir=ud.moddir) else: - svnfetchcmd = self._buildsvncommand(ud, d, "fetch") + svncmd = self._buildsvncommand(ud, d, "fetch") logger.info("Fetch " + ud.url) # check out sources there bb.utils.mkdirhier(ud.pkgdir) - logger.debug(1, "Running %s", svnfetchcmd) - bb.fetch2.check_network_access(d, svnfetchcmd, ud.url) - runfetchcmd(svnfetchcmd, d, workdir=ud.pkgdir) + logger.debug(1, "Running %s", svncmd) + bb.fetch2.check_network_access(d, svncmd, ud.url) + runfetchcmd(svncmd, d, workdir=ud.pkgdir) if not ("externals" in ud.parm and ud.parm["externals"] == "nowarn"): # Warn the user if this had externals (won't catch them all) output = runfetchcmd("svn propget svn:externals || true", d, workdir=ud.moddir) if output: - if "--ignore-externals" in svnfetchcmd.split(): + if "--ignore-externals" in svncmd.split(): bb.warn("%s contains svn:externals." % ud.url) bb.warn("These should be added to the recipe SRC_URI as necessary.") bb.warn("svn fetch has ignored externals:\n%s" % output) diff --git a/poky/bitbake/lib/bb/fetch2/wget.py b/poky/bitbake/lib/bb/fetch2/wget.py index 725586d2b..f7d1de26b 100644 --- a/poky/bitbake/lib/bb/fetch2/wget.py +++ b/poky/bitbake/lib/bb/fetch2/wget.py @@ -12,11 +12,10 @@ BitBake build tools. # # Based on functions from the base bb module, Copyright 2003 Holger Schurig +import shlex import re import tempfile -import subprocess import os -import logging import errno import bb import bb.progress @@ -27,7 +26,6 @@ from bb.fetch2 import FetchMethod from bb.fetch2 import FetchError from bb.fetch2 import logger from bb.fetch2 import runfetchcmd -from bb.fetch2 import FetchConnectionCache from bb.utils import export_proxies from bs4 import BeautifulSoup from bs4 import SoupStrainer @@ -94,9 +92,9 @@ class Wget(FetchMethod): fetchcmd = self.basecmd if 'downloadfilename' in ud.parm: - dldir = d.getVar("DL_DIR") - bb.utils.mkdirhier(os.path.dirname(dldir + os.sep + ud.localfile)) - fetchcmd += " -O " + dldir + os.sep + ud.localfile + localpath = os.path.join(d.getVar("DL_DIR"), ud.localfile) + bb.utils.mkdirhier(os.path.dirname(localpath)) + fetchcmd += " -O %s" % shlex.quote(localpath) if ud.user and ud.pswd: fetchcmd += " --user=%s --password=%s --auth-no-challenge" % (ud.user, ud.pswd) @@ -302,6 +300,7 @@ class Wget(FetchMethod): # Some servers (FusionForge, as used on Alioth) require that the # optional Accept header is set. r.add_header("Accept", "*/*") + r.add_header("User-Agent", "Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.12) Gecko/20101027 Ubuntu/9.10 (karmic) Firefox/3.6.12") def add_basic_auth(login_str, request): '''Adds Basic auth to http request, pass in login:password as string''' import base64 diff --git a/poky/bitbake/lib/bb/monitordisk.py b/poky/bitbake/lib/bb/monitordisk.py index 1a25b0041..e7c07264a 100644 --- a/poky/bitbake/lib/bb/monitordisk.py +++ b/poky/bitbake/lib/bb/monitordisk.py @@ -4,7 +4,7 @@ # SPDX-License-Identifier: GPL-2.0-only # -import os, logging, re, sys +import os, logging, re import bb logger = logging.getLogger("BitBake.Monitor") diff --git a/poky/bitbake/lib/bb/msg.py b/poky/bitbake/lib/bb/msg.py index 6216eb3bc..c0b344e32 100644 --- a/poky/bitbake/lib/bb/msg.py +++ b/poky/bitbake/lib/bb/msg.py @@ -13,9 +13,8 @@ Message handling infrastructure for bitbake import sys import copy import logging -import collections +import logging.config from itertools import groupby -import warnings import bb import bb.event @@ -100,6 +99,9 @@ class BBLogFormatter(logging.Formatter): def enable_color(self): self.color_enabled = True + def __repr__(self): + return "%s fmt='%s' color=%s" % (self.__class__.__name__, self._fmt, "True" if self.color_enabled else "False") + class BBLogFilter(object): def __init__(self, handler, level, debug_domains): self.stdlevel = level @@ -118,60 +120,59 @@ class BBLogFilter(object): return True return False -class BBLogFilterStdErr(BBLogFilter): +class LogFilterGEQLevel(logging.Filter): + def __init__(self, level): + self.strlevel = str(level) + self.level = stringToLevel(level) + + def __repr__(self): + return "%s level >= %s (%d)" % (self.__class__.__name__, self.strlevel, self.level) + def filter(self, record): - if not BBLogFilter.filter(self, record): - return False - if record.levelno >= logging.ERROR: - return True - return False + return (record.levelno >= self.level) + +class LogFilterLTLevel(logging.Filter): + def __init__(self, level): + self.strlevel = str(level) + self.level = stringToLevel(level) + + def __repr__(self): + return "%s level < %s (%d)" % (self.__class__.__name__, self.strlevel, self.level) -class BBLogFilterStdOut(BBLogFilter): def filter(self, record): - if not BBLogFilter.filter(self, record): - return False - if record.levelno < logging.ERROR: - return True - return False + return (record.levelno < self.level) # Message control functions # -loggerDefaultDebugLevel = 0 +loggerDefaultLogLevel = BBLogFormatter.NOTE loggerDefaultVerbose = False loggerVerboseLogs = False -loggerDefaultDomains = [] +loggerDefaultDomains = {} def init_msgconfig(verbose, debug, debug_domains=None): """ Set default verbosity and debug levels config the logger """ - bb.msg.loggerDefaultDebugLevel = debug bb.msg.loggerDefaultVerbose = verbose if verbose: bb.msg.loggerVerboseLogs = True - if debug_domains: - bb.msg.loggerDefaultDomains = debug_domains - else: - bb.msg.loggerDefaultDomains = [] - -def constructLogOptions(): - debug = loggerDefaultDebugLevel - verbose = loggerDefaultVerbose - domains = loggerDefaultDomains if debug: - level = BBLogFormatter.DEBUG - debug + 1 + bb.msg.loggerDefaultLogLevel = BBLogFormatter.DEBUG - debug + 1 elif verbose: - level = BBLogFormatter.VERBOSE + bb.msg.loggerDefaultLogLevel = BBLogFormatter.VERBOSE else: - level = BBLogFormatter.NOTE + bb.msg.loggerDefaultLogLevel = BBLogFormatter.NOTE - debug_domains = {} - for (domainarg, iterator) in groupby(domains): - dlevel = len(tuple(iterator)) - debug_domains["BitBake.%s" % domainarg] = logging.DEBUG - dlevel + 1 - return level, debug_domains + bb.msg.loggerDefaultDomains = {} + if debug_domains: + for (domainarg, iterator) in groupby(debug_domains): + dlevel = len(tuple(iterator)) + bb.msg.loggerDefaultDomains["BitBake.%s" % domainarg] = logging.DEBUG - dlevel + 1 + +def constructLogOptions(): + return loggerDefaultLogLevel, loggerDefaultDomains def addDefaultlogFilter(handler, cls = BBLogFilter, forcelevel=None): level, debug_domains = constructLogOptions() @@ -181,6 +182,19 @@ def addDefaultlogFilter(handler, cls = BBLogFilter, forcelevel=None): cls(handler, level, debug_domains) +def stringToLevel(level): + try: + return int(level) + except ValueError: + pass + + try: + return getattr(logging, level) + except AttributeError: + pass + + return getattr(BBLogFormatter, level) + # # Message handling functions # @@ -214,3 +228,105 @@ def has_console_handler(logger): if handler.stream in [sys.stderr, sys.stdout]: return True return False + +def mergeLoggingConfig(logconfig, userconfig): + logconfig = copy.deepcopy(logconfig) + userconfig = copy.deepcopy(userconfig) + + # Merge config with the default config + if userconfig.get('version') != logconfig['version']: + raise BaseException("Bad user configuration version. Expected %r, got %r" % (logconfig['version'], userconfig.get('version'))) + + # Set some defaults to make merging easier + userconfig.setdefault("loggers", {}) + + # If a handler, formatter, or filter is defined in the user + # config, it will replace an existing one in the default config + for k in ("handlers", "formatters", "filters"): + logconfig.setdefault(k, {}).update(userconfig.get(k, {})) + + seen_loggers = set() + for name, l in logconfig["loggers"].items(): + # If the merge option is set, merge the handlers and + # filters. Otherwise, if it is False, this logger won't get + # add to the set of seen loggers and will replace the + # existing one + if l.get('bitbake_merge', True): + ulogger = userconfig["loggers"].setdefault(name, {}) + ulogger.setdefault("handlers", []) + ulogger.setdefault("filters", []) + + # Merge lists + l.setdefault("handlers", []).extend(ulogger["handlers"]) + l.setdefault("filters", []).extend(ulogger["filters"]) + + # Replace other properties if present + if "level" in ulogger: + l["level"] = ulogger["level"] + + if "propagate" in ulogger: + l["propagate"] = ulogger["propagate"] + + seen_loggers.add(name) + + # Add all loggers present in the user config, but not any that + # have already been processed + for name in set(userconfig["loggers"].keys()) - seen_loggers: + logconfig["loggers"][name] = userconfig["loggers"][name] + + return logconfig + +def setLoggingConfig(defaultconfig, userconfigfile=None): + logconfig = copy.deepcopy(defaultconfig) + + if userconfigfile: + with open(userconfigfile, 'r') as f: + if userconfigfile.endswith('.yml') or userconfigfile.endswith('.yaml'): + import yaml + userconfig = yaml.load(f) + elif userconfigfile.endswith('.json') or userconfigfile.endswith('.cfg'): + import json + userconfig = json.load(f) + else: + raise BaseException("Unrecognized file format: %s" % userconfigfile) + + if userconfig.get('bitbake_merge', True): + logconfig = mergeLoggingConfig(logconfig, userconfig) + else: + # Replace the entire default config + logconfig = userconfig + + # Convert all level parameters to integers in case users want to use the + # bitbake defined level names + for h in logconfig["handlers"].values(): + if "level" in h: + h["level"] = bb.msg.stringToLevel(h["level"]) + + for l in logconfig["loggers"].values(): + if "level" in l: + l["level"] = bb.msg.stringToLevel(l["level"]) + + conf = logging.config.dictConfigClass(logconfig) + conf.configure() + + # The user may have specified logging domains they want at a higher debug + # level than the standard. + for name, l in logconfig["loggers"].items(): + if not name.startswith("BitBake."): + continue + + if not "level" in l: + continue + + curlevel = bb.msg.loggerDefaultDomains.get(name) + # Note: level parameter should already be a int because of conversion + # above + newlevel = int(l["level"]) + if curlevel is None or newlevel < curlevel: + bb.msg.loggerDefaultDomains[name] = newlevel + + # TODO: I don't think that setting the global log level should be necessary + #if newlevel < bb.msg.loggerDefaultLogLevel: + # bb.msg.loggerDefaultLogLevel = newlevel + + return conf diff --git a/poky/bitbake/lib/bb/parse/ast.py b/poky/bitbake/lib/bb/parse/ast.py index f0911e6fb..eb8cfa21b 100644 --- a/poky/bitbake/lib/bb/parse/ast.py +++ b/poky/bitbake/lib/bb/parse/ast.py @@ -9,11 +9,7 @@ # SPDX-License-Identifier: GPL-2.0-only # -import re -import string -import logging import bb -import itertools from bb import methodpool from bb.parse import logger @@ -93,7 +89,7 @@ class DataNode(AstNode): self.groupd = groupd def getFunc(self, key, data): - if 'flag' in self.groupd and self.groupd['flag'] != None: + if 'flag' in self.groupd and self.groupd['flag'] is not None: return data.getVarFlag(key, self.groupd['flag'], expand=False, noweakdefault=True) else: return data.getVar(key, False, noweakdefault=True, parsing=True) @@ -106,36 +102,36 @@ class DataNode(AstNode): 'file': self.filename, 'line': self.lineno, } - if "exp" in groupd and groupd["exp"] != None: + if "exp" in groupd and groupd["exp"] is not None: data.setVarFlag(key, "export", 1, op = 'exported', **loginfo) op = "set" - if "ques" in groupd and groupd["ques"] != None: + if "ques" in groupd and groupd["ques"] is not None: val = self.getFunc(key, data) op = "set?" - if val == None: + if val is None: val = groupd["value"] - elif "colon" in groupd and groupd["colon"] != None: + elif "colon" in groupd and groupd["colon"] is not None: e = data.createCopy() op = "immediate" val = e.expand(groupd["value"], key + "[:=]") - elif "append" in groupd and groupd["append"] != None: + elif "append" in groupd and groupd["append"] is not None: op = "append" val = "%s %s" % ((self.getFunc(key, data) or ""), groupd["value"]) - elif "prepend" in groupd and groupd["prepend"] != None: + elif "prepend" in groupd and groupd["prepend"] is not None: op = "prepend" val = "%s %s" % (groupd["value"], (self.getFunc(key, data) or "")) - elif "postdot" in groupd and groupd["postdot"] != None: + elif "postdot" in groupd and groupd["postdot"] is not None: op = "postdot" val = "%s%s" % ((self.getFunc(key, data) or ""), groupd["value"]) - elif "predot" in groupd and groupd["predot"] != None: + elif "predot" in groupd and groupd["predot"] is not None: op = "predot" val = "%s%s" % (groupd["value"], (self.getFunc(key, data) or "")) else: val = groupd["value"] flag = None - if 'flag' in groupd and groupd['flag'] != None: + if 'flag' in groupd and groupd['flag'] is not None: flag = groupd['flag'] elif groupd["lazyques"]: flag = "_defaultval" diff --git a/poky/bitbake/lib/bb/parse/parse_py/BBHandler.py b/poky/bitbake/lib/bb/parse/parse_py/BBHandler.py index 6f7cf82b2..6e216effb 100644 --- a/poky/bitbake/lib/bb/parse/parse_py/BBHandler.py +++ b/poky/bitbake/lib/bb/parse/parse_py/BBHandler.py @@ -13,9 +13,7 @@ # import re, bb, os -import logging import bb.build, bb.utils -from bb import data from . import ConfHandler from .. import resolve_file, ast, logger, ParseError diff --git a/poky/bitbake/lib/bb/persist_data.py b/poky/bitbake/lib/bb/persist_data.py index de8f87a8b..7357ab2d4 100644 --- a/poky/bitbake/lib/bb/persist_data.py +++ b/poky/bitbake/lib/bb/persist_data.py @@ -179,6 +179,9 @@ class SQLTable(collections.MutableMapping): elif not isinstance(value, str): raise TypeError('Only string values are supported') + # Ensure the entire transaction (including SELECT) executes under write lock + cursor.execute("BEGIN EXCLUSIVE") + cursor.execute("SELECT * from %s where key=?;" % self.table, [key]) row = cursor.fetchone() if row is not None: diff --git a/poky/bitbake/lib/bb/progress.py b/poky/bitbake/lib/bb/progress.py index 4022caa71..9c755b7f7 100644 --- a/poky/bitbake/lib/bb/progress.py +++ b/poky/bitbake/lib/bb/progress.py @@ -7,7 +7,6 @@ BitBake progress handling code # SPDX-License-Identifier: GPL-2.0-only # -import sys import re import time import inspect diff --git a/poky/bitbake/lib/bb/providers.py b/poky/bitbake/lib/bb/providers.py index f80963cb4..81459c36d 100644 --- a/poky/bitbake/lib/bb/providers.py +++ b/poky/bitbake/lib/bb/providers.py @@ -92,11 +92,11 @@ def preferredVersionMatch(pe, pv, pr, preferred_e, preferred_v, preferred_r): Check if the version pe,pv,pr is the preferred one. If there is preferred version defined and ends with '%', then pv has to start with that version after removing the '%' """ - if (pr == preferred_r or preferred_r == None): - if (pe == preferred_e or preferred_e == None): + if pr == preferred_r or preferred_r is None: + if pe == preferred_e or preferred_e is None: if preferred_v == pv: return True - if preferred_v != None and preferred_v.endswith('%') and pv.startswith(preferred_v[:len(preferred_v)-1]): + if preferred_v is not None and preferred_v.endswith('%') and pv.startswith(preferred_v[:len(preferred_v)-1]): return True return False diff --git a/poky/bitbake/lib/bb/remotedata.py b/poky/bitbake/lib/bb/remotedata.py index 7391e1b45..6c9864dd6 100644 --- a/poky/bitbake/lib/bb/remotedata.py +++ b/poky/bitbake/lib/bb/remotedata.py @@ -17,16 +17,16 @@ class RemoteDatastores: self.cooker = cooker self.datastores = {} self.locked = [] + self.datastores[0] = self.cooker.data self.nextindex = 1 def __len__(self): return len(self.datastores) def __getitem__(self, key): - if key is None: - return self.cooker.data - else: - return self.datastores[key] + # Cooker could have changed its datastore from under us + self.datastores[0] = self.cooker.data + return self.datastores[key] def items(self): return self.datastores.items() @@ -63,44 +63,3 @@ class RemoteDatastores: raise Exception('Tried to release locked datastore %d' % idx) del self.datastores[idx] - def receive_datastore(self, remote_data): - """Receive a datastore object sent from the client (as prepared by transmit_datastore())""" - dct = dict(remote_data) - d = bb.data_smart.DataSmart() - d.dict = dct - while True: - if '_remote_data' in dct: - dsindex = dct['_remote_data']['_content'] - del dct['_remote_data'] - if dsindex is None: - dct['_data'] = self.cooker.data.dict - else: - dct['_data'] = self.datastores[dsindex].dict - break - elif '_data' in dct: - idct = dict(dct['_data']) - dct['_data'] = idct - dct = idct - else: - break - return d - - @staticmethod - def transmit_datastore(d): - """Prepare a datastore object for sending over IPC from the client end""" - # FIXME content might be a dict, need to turn that into a list as well - def copy_dicts(dct): - if '_remote_data' in dct: - dsindex = dct['_remote_data']['_content'].dsindex - newdct = dct.copy() - newdct['_remote_data'] = {'_content': dsindex} - return list(newdct.items()) - elif '_data' in dct: - newdct = dct.copy() - newdata = copy_dicts(dct['_data']) - if newdata: - newdct['_data'] = newdata - return list(newdct.items()) - return None - main_dict = copy_dicts(d.dict) - return main_dict diff --git a/poky/bitbake/lib/bb/runqueue.py b/poky/bitbake/lib/bb/runqueue.py index 26492e708..16f076f3b 100644 --- a/poky/bitbake/lib/bb/runqueue.py +++ b/poky/bitbake/lib/bb/runqueue.py @@ -12,14 +12,12 @@ Handles preparation and execution of a queue of tasks import copy import os import sys -import signal import stat -import fcntl import errno import logging import re import bb -from bb import msg, data, event +from bb import msg, event from bb import monitordisk import subprocess import pickle @@ -29,6 +27,7 @@ import pprint bblogger = logging.getLogger("BitBake") logger = logging.getLogger("BitBake.RunQueue") +hashequiv_logger = logging.getLogger("BitBake.RunQueue.HashEquiv") __find_sha256__ = re.compile( r'(?i)(? 0 and self.sqdata.sq_revdeps[nexttask].issubset(self.scenequeue_covered) and self.check_dependencies(nexttask, self.sqdata.sq_revdeps[nexttask]): if nexttask not in self.rqdata.target_tids: @@ -2052,7 +2059,7 @@ class RunQueueExecute: self.update_holdofftasks() if not self.sq_live and not self.sqdone and not self.sq_deferred and not self.updated_taskhash_queue and not self.holdoff_tasks: - logger.info("Setscene tasks completed") + hashequiv_logger.verbose("Setscene tasks completed") err = self.summarise_scenequeue_errors() if err: @@ -2090,6 +2097,7 @@ class RunQueueExecute: logger.debug(2, "Stamp current task %s", task) self.task_skip(task, "existing") + self.runq_tasksrun.add(task) return True taskdep = self.rqdata.dataCaches[mc].task_deps[taskfn] @@ -2248,6 +2256,7 @@ class RunQueueExecute: def process_possible_migrations(self): changed = set() + toprocess = set() for tid, unihash in self.updated_taskhash_queue.copy(): if tid in self.runq_running and tid not in self.runq_complete: continue @@ -2255,42 +2264,63 @@ class RunQueueExecute: self.updated_taskhash_queue.remove((tid, unihash)) if unihash != self.rqdata.runtaskentries[tid].unihash: - logger.info("Task %s unihash changed to %s" % (tid, unihash)) + hashequiv_logger.verbose("Task %s unihash changed to %s" % (tid, unihash)) self.rqdata.runtaskentries[tid].unihash = unihash bb.parse.siggen.set_unihash(tid, unihash) + toprocess.add(tid) - # Work out all tasks which depend on this one - total = set() - next = set(self.rqdata.runtaskentries[tid].revdeps) - while next: - current = next.copy() - total = total |next - next = set() - for ntid in current: - next |= self.rqdata.runtaskentries[ntid].revdeps - next.difference_update(total) - - # Now iterate those tasks in dependency order to regenerate their taskhash/unihash - done = set() - next = set(self.rqdata.runtaskentries[tid].revdeps) - while next: - current = next.copy() - next = set() - for tid in current: - if not self.rqdata.runtaskentries[tid].depends.isdisjoint(total): - continue - procdep = [] - for dep in self.rqdata.runtaskentries[tid].depends: - procdep.append(dep) - orighash = self.rqdata.runtaskentries[tid].hash - self.rqdata.runtaskentries[tid].hash = bb.parse.siggen.get_taskhash(tid, procdep, self.rqdata.dataCaches[mc_from_tid(tid)]) - origuni = self.rqdata.runtaskentries[tid].unihash - self.rqdata.runtaskentries[tid].unihash = bb.parse.siggen.get_unihash(tid) - logger.debug(1, "Task %s hash changes: %s->%s %s->%s" % (tid, orighash, self.rqdata.runtaskentries[tid].hash, origuni, self.rqdata.runtaskentries[tid].unihash)) - next |= self.rqdata.runtaskentries[tid].revdeps - changed.add(tid) - total.remove(tid) - next.intersection_update(total) + # Work out all tasks which depend upon these + total = set() + next = set() + for p in toprocess: + next |= self.rqdata.runtaskentries[p].revdeps + while next: + current = next.copy() + total = total | next + next = set() + for ntid in current: + next |= self.rqdata.runtaskentries[ntid].revdeps + next.difference_update(total) + + # Now iterate those tasks in dependency order to regenerate their taskhash/unihash + next = set() + for p in total: + if len(self.rqdata.runtaskentries[p].depends) == 0: + next.add(p) + elif self.rqdata.runtaskentries[p].depends.isdisjoint(total): + next.add(p) + + # When an item doesn't have dependencies in total, we can process it. Drop items from total when handled + while next: + current = next.copy() + next = set() + for tid in current: + if len(self.rqdata.runtaskentries[p].depends) and not self.rqdata.runtaskentries[tid].depends.isdisjoint(total): + continue + orighash = self.rqdata.runtaskentries[tid].hash + newhash = bb.parse.siggen.get_taskhash(tid, self.rqdata.runtaskentries[tid].depends, self.rqdata.dataCaches[mc_from_tid(tid)]) + origuni = self.rqdata.runtaskentries[tid].unihash + newuni = bb.parse.siggen.get_unihash(tid) + # FIXME, need to check it can come from sstate at all for determinism? + remapped = False + if newuni == origuni: + # Nothing to do, we match, skip code below + remapped = True + elif tid in self.scenequeue_covered or tid in self.sq_live: + # Already ran this setscene task or it running. Report the new taskhash + bb.parse.siggen.report_unihash_equiv(tid, newhash, origuni, newuni, self.rqdata.dataCaches) + hashequiv_logger.verbose("Already covered setscene for %s so ignoring rehash (remap)" % (tid)) + remapped = True + + if not remapped: + #logger.debug(1, "Task %s hash changes: %s->%s %s->%s" % (tid, orighash, newhash, origuni, newuni)) + self.rqdata.runtaskentries[tid].hash = newhash + self.rqdata.runtaskentries[tid].unihash = newuni + changed.add(tid) + + next |= self.rqdata.runtaskentries[tid].revdeps + total.remove(tid) + next.intersection_update(total) if changed: for mc in self.rq.worker: @@ -2298,7 +2328,7 @@ class RunQueueExecute: for mc in self.rq.fakeworker: self.rq.fakeworker[mc].process.stdin.write(b"" + pickle.dumps(bb.parse.siggen.get_taskhashes()) + b"") - logger.debug(1, pprint.pformat("Tasks changed:\n%s" % (changed))) + hashequiv_logger.debug(1, pprint.pformat("Tasks changed:\n%s" % (changed))) for tid in changed: if tid not in self.rqdata.runq_setscene_tids: @@ -2306,24 +2336,18 @@ class RunQueueExecute: if tid not in self.pending_migrations: self.pending_migrations.add(tid) + update_tasks = [] for tid in self.pending_migrations.copy(): - if tid in self.runq_running: + if tid in self.runq_running or tid in self.sq_live: # Too late, task already running, not much we can do now self.pending_migrations.remove(tid) continue - if tid in self.scenequeue_covered or tid in self.sq_live: - # Already ran this setscene task or it running - # Potentially risky, should we report this hash as a match? - logger.info("Already covered setscene for %s so ignoring rehash" % (tid)) - self.pending_migrations.remove(tid) - continue - valid = True # Check no tasks this covers are running for dep in self.sqdata.sq_covered_tasks[tid]: if dep in self.runq_running and dep not in self.runq_complete: - logger.debug(2, "Task %s is running which blocks setscene for %s from running" % (dep, tid)) + hashequiv_logger.debug(2, "Task %s is running which blocks setscene for %s from running" % (dep, tid)) valid = False break if not valid: @@ -2335,6 +2359,12 @@ class RunQueueExecute: if tid in self.tasks_scenequeue_done: self.tasks_scenequeue_done.remove(tid) for dep in self.sqdata.sq_covered_tasks[tid]: + if dep in self.runq_complete and dep not in self.runq_tasksrun: + bb.error("Task %s marked as completed but now needing to rerun? Aborting build." % dep) + self.failed_tids.append(tid) + self.rq.state = runQueueCleanUp + return + if dep not in self.runq_complete: if dep in self.tasks_scenequeue_done and dep not in self.sqdata.unskippable: self.tasks_scenequeue_done.remove(dep) @@ -2343,7 +2373,12 @@ class RunQueueExecute: self.sq_buildable.remove(tid) if tid in self.sq_running: self.sq_running.remove(tid) - if self.sqdata.sq_revdeps[tid].issubset(self.scenequeue_covered | self.scenequeue_notcovered): + harddepfail = False + for t in self.sqdata.sq_harddeps: + if tid in self.sqdata.sq_harddeps[t] and t in self.scenequeue_notcovered: + harddepfail = True + break + if not harddepfail and self.sqdata.sq_revdeps[tid].issubset(self.scenequeue_covered | self.scenequeue_notcovered): if tid not in self.sq_buildable: self.sq_buildable.add(tid) if len(self.sqdata.sq_revdeps[tid]) == 0: @@ -2367,13 +2402,17 @@ class RunQueueExecute: if tid in self.build_stamps: del self.build_stamps[tid] - origvalid = False - if tid in self.sqdata.valid: - origvalid = True + update_tasks.append((tid, harddepfail, tid in self.sqdata.valid)) + + if update_tasks: self.sqdone = False - update_scenequeue_data([tid], self.sqdata, self.rqdata, self.rq, self.cooker, self.stampcache, self, summary=False) + update_scenequeue_data([t[0] for t in update_tasks], self.sqdata, self.rqdata, self.rq, self.cooker, self.stampcache, self, summary=False) + + for (tid, harddepfail, origvalid) in update_tasks: if tid in self.sqdata.valid and not origvalid: - logger.info("Setscene task %s became valid" % tid) + hashequiv_logger.verbose("Setscene task %s became valid" % tid) + if harddepfail: + self.sq_task_failoutright(tid) if changed: self.holdoff_need_update = True @@ -2510,6 +2549,8 @@ class RunQueueExecute: msg = 'Task %s.%s attempted to execute unexpectedly and should have been setscened' % (pn, taskname) else: msg = 'Task %s.%s attempted to execute unexpectedly' % (pn, taskname) + for t in self.scenequeue_notcovered: + msg = msg + "\nTask %s, unihash %s, taskhash %s" % (t, self.rqdata.runtaskentries[t].unihash, self.rqdata.runtaskentries[t].hash) logger.error(msg + '\nThis is usually due to missing setscene tasks. Those missing in this build were: %s' % pprint.pformat(self.scenequeue_notcovered)) return True return False @@ -2760,7 +2801,7 @@ def update_scenequeue_data(tids, sqdata, rqdata, rq, cooker, stampcache, sqrq, s sqdata.hashes[h] = tid else: sqrq.sq_deferred[tid] = sqdata.hashes[h] - bb.warn("Deferring %s after %s" % (tid, sqdata.hashes[h])) + bb.note("Deferring %s after %s" % (tid, sqdata.hashes[h])) class TaskFailure(Exception): diff --git a/poky/bitbake/lib/bb/server/xmlrpcclient.py b/poky/bitbake/lib/bb/server/xmlrpcclient.py index c054c3c89..442ea7b26 100644 --- a/poky/bitbake/lib/bb/server/xmlrpcclient.py +++ b/poky/bitbake/lib/bb/server/xmlrpcclient.py @@ -7,9 +7,6 @@ # SPDX-License-Identifier: GPL-2.0-only # -import os -import sys - import socket import http.client import xmlrpc.client diff --git a/poky/bitbake/lib/bb/server/xmlrpcserver.py b/poky/bitbake/lib/bb/server/xmlrpcserver.py index 54fa32f57..2fa71be66 100644 --- a/poky/bitbake/lib/bb/server/xmlrpcserver.py +++ b/poky/bitbake/lib/bb/server/xmlrpcserver.py @@ -7,9 +7,6 @@ # SPDX-License-Identifier: GPL-2.0-only # -import os -import sys - import hashlib import time import inspect diff --git a/poky/bitbake/lib/bb/siggen.py b/poky/bitbake/lib/bb/siggen.py index a4bb1ff7f..4c8d81c5d 100644 --- a/poky/bitbake/lib/bb/siggen.py +++ b/poky/bitbake/lib/bb/siggen.py @@ -16,6 +16,7 @@ from bb import runqueue import hashserv logger = logging.getLogger('BitBake.SigGen') +hashequiv_logger = logging.getLogger('BitBake.SigGen.HashEquiv') def init(d): siggens = [obj for obj in globals().values() @@ -40,18 +41,26 @@ class SignatureGenerator(object): def __init__(self, data): self.basehash = {} self.taskhash = {} + self.unihash = {} self.runtaskdeps = {} self.file_checksum_values = {} self.taints = {} self.unitaskhashes = {} - self.setscenetasks = {} + self.tidtopn = {} + self.setscenetasks = set() def finalise(self, fn, d, varient): return + def postparsing_clean_cache(self): + return + def get_unihash(self, tid): return self.taskhash[tid] + def prep_taskhash(self, tid, deps, dataCache): + return + def get_taskhash(self, tid, deps, dataCache): self.taskhash[tid] = hashlib.sha256(tid.encode("utf-8")).hexdigest() return self.taskhash[tid] @@ -76,19 +85,19 @@ class SignatureGenerator(object): return def get_taskdata(self): - return (self.runtaskdeps, self.taskhash, self.file_checksum_values, self.taints, self.basehash, self.unitaskhashes, self.setscenetasks) + return (self.runtaskdeps, self.taskhash, self.unihash, self.file_checksum_values, self.taints, self.basehash, self.unitaskhashes, self.tidtopn, self.setscenetasks) def set_taskdata(self, data): - self.runtaskdeps, self.taskhash, self.file_checksum_values, self.taints, self.basehash, self.unitaskhashes, self.setscenetasks = data + self.runtaskdeps, self.taskhash, self.unihash, self.file_checksum_values, self.taints, self.basehash, self.unitaskhashes, self.tidtopn, self.setscenetasks = data def reset(self, data): self.__init__(data) def get_taskhashes(self): - return self.taskhash, self.unitaskhashes + return self.taskhash, self.unihash, self.unitaskhashes, self.tidtopn def set_taskhashes(self, hashes): - self.taskhash, self.unitaskhashes = hashes + self.taskhash, self.unihash, self.unitaskhashes, self.tidtopn = hashes def save_unitaskhashes(self): return @@ -104,13 +113,14 @@ class SignatureGeneratorBasic(SignatureGenerator): def __init__(self, data): self.basehash = {} self.taskhash = {} + self.unihash = {} self.taskdeps = {} self.runtaskdeps = {} self.file_checksum_values = {} self.taints = {} self.gendeps = {} self.lookupcache = {} - self.setscenetasks = {} + self.setscenetasks = set() self.basewhitelist = set((data.getVar("BB_HASHBASE_WHITELIST") or "").split()) self.taskwhitelist = None self.init_rundepcheck(data) @@ -121,8 +131,10 @@ class SignatureGeneratorBasic(SignatureGenerator): else: self.checksum_cache = None - self.unihash_cache = bb.cache.SimpleCache("1") + self.unihash_cache = bb.cache.SimpleCache("3") self.unitaskhashes = self.unihash_cache.init_cache(data, "bb_unihashes.dat", {}) + self.localdirsexclude = (data.getVar("BB_SIGNATURE_LOCAL_DIRS_EXCLUDE") or "CVS .bzr .git .hg .osc .p4 .repo .svn").split() + self.tidtopn = {} def init_rundepcheck(self, data): self.taskwhitelist = data.getVar("BB_HASHTASK_WHITELIST") or None @@ -134,7 +146,7 @@ class SignatureGeneratorBasic(SignatureGenerator): def _build_data(self, fn, d): ignore_mismatch = ((d.getVar("BB_HASH_IGNORE_MISMATCH") or '') == '1') - tasklist, gendeps, lookupcache = bb.data.generate_dependencies(d) + tasklist, gendeps, lookupcache = bb.data.generate_dependencies(d, self.basewhitelist) taskdeps, basehash = bb.data.generate_dependency_hash(tasklist, gendeps, lookupcache, self.basewhitelist, fn) @@ -157,7 +169,7 @@ class SignatureGeneratorBasic(SignatureGenerator): return taskdeps def set_setscene_tasks(self, setscene_tasks): - self.setscenetasks = setscene_tasks + self.setscenetasks = set(setscene_tasks) def finalise(self, fn, d, variant): @@ -180,6 +192,14 @@ class SignatureGeneratorBasic(SignatureGenerator): for task in taskdeps: d.setVar("BB_BASEHASH_task-%s" % task, self.basehash[fn + ":" + task]) + def postparsing_clean_cache(self): + # + # After parsing we can remove some things from memory to reduce our memory footprint + # + self.gendeps = {} + self.lookupcache = {} + self.taskdeps = {} + def rundep_check(self, fn, recipename, task, dep, depname, dataCache): # Return True if we should keep the dependency, False to drop it # We only manipulate the dependencies for packages not in the whitelist @@ -198,15 +218,17 @@ class SignatureGeneratorBasic(SignatureGenerator): pass return taint - def get_taskhash(self, tid, deps, dataCache): + def prep_taskhash(self, tid, deps, dataCache): (mc, _, task, fn) = bb.runqueue.split_tid_mcfn(tid) - data = dataCache.basetaskhash[tid] - self.basehash[tid] = data + self.basehash[tid] = dataCache.basetaskhash[tid] self.runtaskdeps[tid] = [] self.file_checksum_values[tid] = [] recipename = dataCache.pkg_fn[fn] + + self.tidtopn[tid] = recipename + for dep in sorted(deps, key=clean_basepath): (depmc, _, deptaskname, depfn) = bb.runqueue.split_tid_mcfn(dep) if mc != depmc: @@ -216,33 +238,56 @@ class SignatureGeneratorBasic(SignatureGenerator): continue if dep not in self.taskhash: bb.fatal("%s is not in taskhash, caller isn't calling in dependency order?" % dep) - data = data + self.get_unihash(dep) self.runtaskdeps[tid].append(dep) if task in dataCache.file_checksums[fn]: if self.checksum_cache: - checksums = self.checksum_cache.get_checksums(dataCache.file_checksums[fn][task], recipename) + checksums = self.checksum_cache.get_checksums(dataCache.file_checksums[fn][task], recipename, self.localdirsexclude) else: - checksums = bb.fetch2.get_file_checksums(dataCache.file_checksums[fn][task], recipename) + checksums = bb.fetch2.get_file_checksums(dataCache.file_checksums[fn][task], recipename, self.localdirsexclude) for (f,cs) in checksums: self.file_checksum_values[tid].append((f,cs)) - if cs: - data = data + cs taskdep = dataCache.task_deps[fn] if 'nostamp' in taskdep and task in taskdep['nostamp']: # Nostamp tasks need an implicit taint so that they force any dependent tasks to run - import uuid - taint = str(uuid.uuid4()) - data = data + taint - self.taints[tid] = "nostamp:" + taint + if tid in self.taints and self.taints[tid].startswith("nostamp:"): + # Don't reset taint value upon every call + pass + else: + import uuid + taint = str(uuid.uuid4()) + self.taints[tid] = "nostamp:" + taint taint = self.read_taint(fn, task, dataCache.stamp[fn]) if taint: - data = data + taint self.taints[tid] = taint logger.warning("%s is tainted from a forced run" % tid) + return + + def get_taskhash(self, tid, deps, dataCache): + + data = self.basehash[tid] + for dep in self.runtaskdeps[tid]: + if dep in self.unihash: + if self.unihash[dep] is None: + data = data + self.taskhash[dep] + else: + data = data + self.unihash[dep] + else: + data = data + self.get_unihash(dep) + + for (f, cs) in self.file_checksum_values[tid]: + if cs: + data = data + cs + + if tid in self.taints: + if self.taints[tid].startswith("nostamp:"): + data = data + self.taints[tid][8:] + else: + data = data + self.taints[tid] + h = hashlib.sha256(data.encode("utf-8")).hexdigest() self.taskhash[tid] = h #d.setVar("BB_TASKHASH_task-%s" % task, taskhash[task]) @@ -371,50 +416,66 @@ class SignatureGeneratorBasicHash(SignatureGeneratorBasic): bb.build.write_taint(task, d, fn) class SignatureGeneratorUniHashMixIn(object): + def __init__(self, data): + self.extramethod = {} + super().__init__(data) + def get_taskdata(self): - return (self.server, self.method) + super().get_taskdata() + return (self.server, self.method, self.extramethod) + super().get_taskdata() def set_taskdata(self, data): - self.server, self.method = data[:2] - super().set_taskdata(data[2:]) + self.server, self.method, self.extramethod = data[:3] + super().set_taskdata(data[3:]) def client(self): if getattr(self, '_client', None) is None: self._client = hashserv.create_client(self.server) return self._client - def __get_task_unihash_key(self, tid): - # TODO: The key only *needs* to be the taskhash, the tid is just - # convenient - return '%s:%s' % (tid.rsplit("/", 1)[1], self.taskhash[tid]) - def get_stampfile_hash(self, tid): if tid in self.taskhash: # If a unique hash is reported, use it as the stampfile hash. This # ensures that if a task won't be re-run if the taskhash changes, # but it would result in the same output hash - unihash = self.unitaskhashes.get(self.__get_task_unihash_key(tid), None) + unihash = self._get_unihash(tid) if unihash is not None: return unihash return super().get_stampfile_hash(tid) def set_unihash(self, tid, unihash): - self.unitaskhashes[self.__get_task_unihash_key(tid)] = unihash + (mc, fn, taskname, taskfn) = bb.runqueue.split_tid_mcfn(tid) + key = mc + ":" + self.tidtopn[tid] + ":" + taskname + self.unitaskhashes[key] = (self.taskhash[tid], unihash) + self.unihash[tid] = unihash + + def _get_unihash(self, tid, checkkey=None): + if tid not in self.tidtopn: + return None + (mc, fn, taskname, taskfn) = bb.runqueue.split_tid_mcfn(tid) + key = mc + ":" + self.tidtopn[tid] + ":" + taskname + if key not in self.unitaskhashes: + return None + if not checkkey: + checkkey = self.taskhash[tid] + (key, unihash) = self.unitaskhashes[key] + if key != checkkey: + return None + return unihash def get_unihash(self, tid): taskhash = self.taskhash[tid] # If its not a setscene task we can return if self.setscenetasks and tid not in self.setscenetasks: + self.unihash[tid] = None return taskhash - key = self.__get_task_unihash_key(tid) - # TODO: This cache can grow unbounded. It probably only needs to keep # for each task - unihash = self.unitaskhashes.get(key, None) + unihash = self._get_unihash(tid) if unihash is not None: + self.unihash[tid] = unihash return unihash # In the absence of being able to discover a unique hash from the @@ -433,19 +494,23 @@ class SignatureGeneratorUniHashMixIn(object): unihash = taskhash try: - data = self.client().get_unihash(self.method, self.taskhash[tid]) + method = self.method + if tid in self.extramethod: + method = method + self.extramethod[tid] + data = self.client().get_unihash(method, self.taskhash[tid]) if data: unihash = data # A unique hash equal to the taskhash is not very interesting, # so it is reported it at debug level 2. If they differ, that # is much more interesting, so it is reported at debug level 1 - bb.debug((1, 2)[unihash == taskhash], 'Found unihash %s in place of %s for %s from %s' % (unihash, taskhash, tid, self.server)) + hashequiv_logger.debug((1, 2)[unihash == taskhash], 'Found unihash %s in place of %s for %s from %s' % (unihash, taskhash, tid, self.server)) else: - bb.debug(2, 'No reported unihash for %s:%s from %s' % (tid, taskhash, self.server)) + hashequiv_logger.debug(2, 'No reported unihash for %s:%s from %s' % (tid, taskhash, self.server)) except hashserv.client.HashConnectionError as e: bb.warn('Error contacting Hash Equivalence Server %s: %s' % (self.server, str(e))) - self.unitaskhashes[key] = unihash + self.set_unihash(tid, unihash) + self.unihash[tid] = unihash return unihash def report_unihash(self, path, task, d): @@ -457,13 +522,17 @@ class SignatureGeneratorUniHashMixIn(object): tempdir = d.getVar('T') fn = d.getVar('BB_FILENAME') tid = fn + ':do_' + task - key = tid.rsplit("/", 1)[1] + ':' + taskhash + key = tid + ':' + taskhash if self.setscenetasks and tid not in self.setscenetasks: return + # This can happen if locked sigs are in action. Detect and just abort + if taskhash != self.taskhash[tid]: + return + # Sanity checks - cache_unihash = self.unitaskhashes.get(key, None) + cache_unihash = self._get_unihash(tid, checkkey=taskhash) if cache_unihash is None: bb.fatal('%s not in unihash cache. Please report this error' % key) @@ -502,14 +571,20 @@ class SignatureGeneratorUniHashMixIn(object): extra_data['task'] = task extra_data['outhash_siginfo'] = sigfile.read().decode('utf-8') - data = self.client().report_unihash(taskhash, self.method, outhash, unihash, extra_data) + method = self.method + if tid in self.extramethod: + method = method + self.extramethod[tid] + + data = self.client().report_unihash(taskhash, method, outhash, unihash, extra_data) new_unihash = data['unihash'] if new_unihash != unihash: - bb.debug(1, 'Task %s unihash changed %s -> %s by server %s' % (taskhash, unihash, new_unihash, self.server)) + hashequiv_logger.debug(1, 'Task %s unihash changed %s -> %s by server %s' % (taskhash, unihash, new_unihash, self.server)) bb.event.fire(bb.runqueue.taskUniHashUpdate(fn + ':do_' + task, new_unihash), d) + self.set_unihash(tid, new_unihash) + d.setVar('BB_UNIHASH', new_unihash) else: - bb.debug(1, 'Reported task %s as unihash %s to %s' % (taskhash, unihash, self.server)) + hashequiv_logger.debug(1, 'Reported task %s as unihash %s to %s' % (taskhash, unihash, self.server)) except hashserv.client.HashConnectionError as e: bb.warn('Error contacting Hash Equivalence Server %s: %s' % (self.server, str(e))) finally: @@ -524,6 +599,36 @@ class SignatureGeneratorUniHashMixIn(object): except OSError: pass + def report_unihash_equiv(self, tid, taskhash, wanted_unihash, current_unihash, datacaches): + try: + extra_data = {} + method = self.method + if tid in self.extramethod: + method = method + self.extramethod[tid] + + data = self.client().report_unihash_equiv(taskhash, method, wanted_unihash, extra_data) + hashequiv_logger.verbose('Reported task %s as unihash %s to %s (%s)' % (tid, wanted_unihash, self.server, str(data))) + + if data is None: + bb.warn("Server unable to handle unihash report") + return False + + finalunihash = data['unihash'] + + if finalunihash == current_unihash: + hashequiv_logger.verbose('Task %s unihash %s unchanged by server' % (tid, finalunihash)) + elif finalunihash == wanted_unihash: + hashequiv_logger.verbose('Task %s unihash changed %s -> %s as wanted' % (tid, current_unihash, finalunihash)) + self.set_unihash(tid, finalunihash) + return True + else: + # TODO: What to do here? + hashequiv_logger.verbose('Task %s unihash reported as unwanted hash %s' % (tid, finalunihash)) + + except hashserv.client.HashConnectionError as e: + bb.warn('Error contacting Hash Equivalence Server %s: %s' % (self.server, str(e))) + + return False # # Dummy class used for bitbake-selftest diff --git a/poky/bitbake/lib/bb/taskdata.py b/poky/bitbake/lib/bb/taskdata.py index 8c25e09e8..d13a12498 100644 --- a/poky/bitbake/lib/bb/taskdata.py +++ b/poky/bitbake/lib/bb/taskdata.py @@ -362,7 +362,7 @@ class TaskData: bb.event.fire(bb.event.NoProvider(item, dependees=self.get_dependees(item), reasons=["No eligible PROVIDERs exist for '%s'" % item]), cfgData) raise bb.providers.NoProvider(item) - if len(eligible) > 1 and foundUnique == False: + if len(eligible) > 1 and not foundUnique: if item not in self.consider_msgs_cache: providers_list = [] for fn in eligible: diff --git a/poky/bitbake/lib/bb/tests/cooker.py b/poky/bitbake/lib/bb/tests/cooker.py index 090916e94..74c903f01 100644 --- a/poky/bitbake/lib/bb/tests/cooker.py +++ b/poky/bitbake/lib/bb/tests/cooker.py @@ -5,7 +5,6 @@ # import unittest -import tempfile import os import bb, bb.cooker import re diff --git a/poky/bitbake/lib/bb/tests/cow.py b/poky/bitbake/lib/bb/tests/cow.py index b4af4bbcb..bf6e79fce 100644 --- a/poky/bitbake/lib/bb/tests/cow.py +++ b/poky/bitbake/lib/bb/tests/cow.py @@ -7,7 +7,7 @@ # import unittest -import os + class COWTestCase(unittest.TestCase): """ diff --git a/poky/bitbake/lib/bb/tests/data.py b/poky/bitbake/lib/bb/tests/data.py index 3e49984c9..5f195047d 100644 --- a/poky/bitbake/lib/bb/tests/data.py +++ b/poky/bitbake/lib/bb/tests/data.py @@ -476,7 +476,7 @@ class Contains(unittest.TestCase): class TaskHash(unittest.TestCase): def test_taskhashes(self): def gettask_bashhash(taskname, d): - tasklist, gendeps, lookupcache = bb.data.generate_dependencies(d) + tasklist, gendeps, lookupcache = bb.data.generate_dependencies(d, set()) taskdeps, basehash = bb.data.generate_dependency_hash(tasklist, gendeps, lookupcache, set(), "somefile") bb.warn(str(lookupcache)) return basehash["somefile:" + taskname] @@ -544,142 +544,3 @@ class Serialize(unittest.TestCase): self.assertEqual(newd.getVarFlag('HELLO', 'other'), 'planet') -# Remote datastore tests -# These really only test the interface, since in actual usage we have a -# tinfoil connector that does everything over RPC, and this doesn't test -# that. - -class TestConnector: - d = None - def __init__(self, d): - self.d = d - def getVar(self, name): - return self.d._findVar(name) - def getKeys(self): - return set(self.d.keys()) - def getVarHistory(self, name): - return self.d.varhistory.variable(name) - def expandPythonRef(self, varname, expr, d): - localdata = self.d.createCopy() - for key in d.localkeys(): - localdata.setVar(d.getVar(key)) - varparse = bb.data_smart.VariableParse(varname, localdata) - return varparse.python_sub(expr) - def setVar(self, name, value): - self.d.setVar(name, value) - def setVarFlag(self, name, flag, value): - self.d.setVarFlag(name, flag, value) - def delVar(self, name): - self.d.delVar(name) - return False - def delVarFlag(self, name, flag): - self.d.delVarFlag(name, flag) - return False - def renameVar(self, name, newname): - self.d.renameVar(name, newname) - return False - -class Remote(unittest.TestCase): - def test_remote(self): - - d1 = bb.data.init() - d1.enableTracking() - d2 = bb.data.init() - d2.enableTracking() - connector = TestConnector(d1) - - d2.setVar('_remote_data', connector) - - d1.setVar('HELLO', 'world') - d1.setVarFlag('OTHER', 'flagname', 'flagvalue') - self.assertEqual(d2.getVar('HELLO'), 'world') - self.assertEqual(d2.expand('${HELLO}'), 'world') - self.assertEqual(d2.expand('${@d.getVar("HELLO")}'), 'world') - self.assertIn('flagname', d2.getVarFlags('OTHER')) - self.assertEqual(d2.getVarFlag('OTHER', 'flagname'), 'flagvalue') - self.assertEqual(d1.varhistory.variable('HELLO'), d2.varhistory.variable('HELLO')) - # Test setVar on client side affects server - d2.setVar('HELLO', 'other-world') - self.assertEqual(d1.getVar('HELLO'), 'other-world') - # Test setVarFlag on client side affects server - d2.setVarFlag('HELLO', 'flagname', 'flagvalue') - self.assertEqual(d1.getVarFlag('HELLO', 'flagname'), 'flagvalue') - # Test client side data is incorporated in python expansion (which is done on server) - d2.setVar('FOO', 'bar') - self.assertEqual(d2.expand('${@d.getVar("FOO")}'), 'bar') - # Test overrides work - d1.setVar('FOO_test', 'baz') - d1.appendVar('OVERRIDES', ':test') - self.assertEqual(d2.getVar('FOO'), 'baz') - - -# Remote equivalents of local test classes -# Note that these aren't perfect since we only test in one direction - -class RemoteDataExpansions(DataExpansions): - def setUp(self): - self.d1 = bb.data.init() - self.d = bb.data.init() - self.d1["foo"] = "value_of_foo" - self.d1["bar"] = "value_of_bar" - self.d1["value_of_foo"] = "value_of_'value_of_foo'" - connector = TestConnector(self.d1) - self.d.setVar('_remote_data', connector) - -class TestRemoteNestedExpansions(TestNestedExpansions): - def setUp(self): - self.d1 = bb.data.init() - self.d = bb.data.init() - self.d1["foo"] = "foo" - self.d1["bar"] = "bar" - self.d1["value_of_foobar"] = "187" - connector = TestConnector(self.d1) - self.d.setVar('_remote_data', connector) - -class TestRemoteConcat(TestConcat): - def setUp(self): - self.d1 = bb.data.init() - self.d = bb.data.init() - self.d1.setVar("FOO", "foo") - self.d1.setVar("VAL", "val") - self.d1.setVar("BAR", "bar") - connector = TestConnector(self.d1) - self.d.setVar('_remote_data', connector) - -class TestRemoteConcatOverride(TestConcatOverride): - def setUp(self): - self.d1 = bb.data.init() - self.d = bb.data.init() - self.d1.setVar("FOO", "foo") - self.d1.setVar("VAL", "val") - self.d1.setVar("BAR", "bar") - connector = TestConnector(self.d1) - self.d.setVar('_remote_data', connector) - -class TestRemoteOverrides(TestOverrides): - def setUp(self): - self.d1 = bb.data.init() - self.d = bb.data.init() - self.d1.setVar("OVERRIDES", "foo:bar:local") - self.d1.setVar("TEST", "testvalue") - connector = TestConnector(self.d1) - self.d.setVar('_remote_data', connector) - -class TestRemoteKeyExpansion(TestKeyExpansion): - def setUp(self): - self.d1 = bb.data.init() - self.d = bb.data.init() - self.d1.setVar("FOO", "foo") - self.d1.setVar("BAR", "foo") - connector = TestConnector(self.d1) - self.d.setVar('_remote_data', connector) - -class TestRemoteFlags(TestFlags): - def setUp(self): - self.d1 = bb.data.init() - self.d = bb.data.init() - self.d1.setVar("foo", "value of foo") - self.d1.setVarFlag("foo", "flag1", "value of flag1") - self.d1.setVarFlag("foo", "flag2", "value of flag2") - connector = TestConnector(self.d1) - self.d.setVar('_remote_data', connector) diff --git a/poky/bitbake/lib/bb/tests/fetch-testdata/apple/cups/releases b/poky/bitbake/lib/bb/tests/fetch-testdata/apple/cups/releases new file mode 100644 index 000000000..f8934f56f --- /dev/null +++ b/poky/bitbake/lib/bb/tests/fetch-testdata/apple/cups/releases @@ -0,0 +1,2400 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Releases · apple/cups · GitHub + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Skip to content + + + + + + + + + + + +
+ +
+ + +
+ +
+ + + +
+
+
+ + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + +
+ + + +
+ +
+
+
+ + Latest release + + + +
+ + + + +
+ +
+
+
+
+ v2.3.1 +
+ + + Latest release + + +
+ + +

+ @michaelrsweet + michaelrsweet + released this + Dec 13, 2019 +

+
+ + + +
+

CUPS 2.3.1 is a general bug fix release, including a fix for CVE-2019-2228. Changes include:

+
    +
  • Documentation updates (Issue #5661, #5674, #5682)
  • +
  • CVE-2019-2228: The ippSetValuetag function did not validate the default
    +language value.
  • +
  • Fixed a crash bug in the web interface (Issue #5621)
  • +
  • The PPD cache code now looks up page sizes using their dimensions
    +(Issue #5633)
  • +
  • PPD files containing "custom" option keywords did not work (Issue #5639)
  • +
  • Added a workaround for the scheduler's systemd support (Issue #5640)
  • +
  • On Windows, TLS certificates generated on February 29 would likely fail
    +(Issue #5643)
  • +
  • Added a DigestOptions directive for the client.conf file to control whether
    +MD5-based Digest authentication is allowed (Issue #5647)
  • +
  • Fixed a bug in the handling of printer resource files (Issue #5652)
  • +
  • The libusb-based USB backend now reports an error when the distribution
    +permissions are wrong (Issue #5658)
  • +
  • Added paint can labels to Dymo driver (Issue #5662)
  • +
  • The ippeveprinter program now supports authentication (Issue #5665)
  • +
  • The ippeveprinter program now advertises DNS-SD services on the correct
    +interfaces, and provides a way to turn them off (Issue #5666)
  • +
  • The --with-dbusdir option was ignored by the configure script (Issue #5671)
  • +
  • Sandboxed applications were not able to get the default printer (Issue #5676)
  • +
  • Log file access controls were not preserved by cupsctl (Issue #5677)
  • +
  • Default printers set with lpoptions did not work in all cases (Issue #5681,
    +Issue #5683, Issue #5684)
  • +
  • Fixed an error in the jobs web interface template (Issue #5694)
  • +
  • Fixed an off-by-one error in ippEnumString (Issue #5695)
  • +
  • Fixed some new compiler warnings (Issue #5700)
  • +
  • Fixed a few issues with the Apple Raster support (rdar://55301114)
  • +
  • The IPP backend did not detect all cases where a job should be retried using
    +a raster format (rdar://56021091)
  • +
  • Fixed spelling of "fold-accordion".
  • +
  • Fixed the default common name for TLS certificates used by ippeveprinter.
  • +
  • Fixed the option names used for IPP Everywhere finishing options.
  • +
  • Added support for the second roll of the DYMO Twin/DUO label printers.
  • +
+

Enjoy!

+
+ + +
+ +
+ + + Assets + 4 +
+
+ +
+ + +
+
+ +
+ + + +
+ +
+
+
+ + +
+ + + + +
+ +
+
+
+
+ v2.2.13 +
+ + +
+ + +

+ @michaelrsweet + michaelrsweet + released this + Dec 13, 2019 + · + + 793 commits + to master + since this release +

+
+ + + +
+

CUPS 2.2.13 is the last general bug fix release in the 2.2.x series and includes
+a fix for CVE-2019-2228. Changes include:

+
    +
  • CVE-2019-2228: The ippSetValuetag function did not validate the default
    +language value.
  • +
  • Added a workaround for the scheduler's systemd support (Issue #5640)
  • +
  • Fixed spelling of "fold-accordion".
  • +
  • Fixed the default common name for TLS certificates used by ippserver.
  • +
  • The libusb-based USB backend now reports an error when the distribution
    +permissions are wrong (Issue #5658)
  • +
  • Default printers set with lpoptions did not work in all cases (Issue #5681,
    +Issue #5683, Issue #5684)
  • +
  • Fixed an off-by-one error in ippEnumString (Issue #5695)
  • +
  • Fixed some new compiler warnings (Issue #5700)
  • +
  • Fixed a few issues with the Apple Raster support (rdar://55301114)
  • +
  • The IPP backend did not detect all cases where a job should be retried using
    +a raster format (rdar://56021091)
  • +
+

Enjoy!

+
+ + +
+ +
+ + + Assets + 4 +
+
+ +
+ + +
+
+ +
+ + + +
+ +
+
+
+ + +
+ + + + +
+ +
+
+
+
+ v2.3.0 +
+ + +
+ + +

+ @michaelrsweet + michaelrsweet + released this + Aug 23, 2019 + · + + 65 commits + to master + since this release +

+
+ + + +
+

CUPS 2.3.0 is now available for download, which adopts the new CUPS license, adds support for IPP presets and finishing templates, fixes a number of bugs and "polish" issues, and includes the new ippeveprinter utility. Changes include:

+
    +
  • CVE-2019-8696 and CVE-2019-8675: Fixed SNMP buffer overflows (rdar://51685251)
  • +
  • Added a GPL2/LGPL2 exception to the new CUPS license terms.
  • +
  • Documentation updates (Issue #5604)
  • +
  • Localization updates (Issue #5637)
  • +
  • Fixed a bug in the scheduler job cleanup code (Issue #5588)
  • +
  • Fixed builds when there is no TLS library (Issue #5590)
  • +
  • Eliminated some new GCC compiler warnings (Issue #5591)
  • +
  • Removed dead code from the scheduler (Issue #5593)
  • +
  • "make" failed with GZIP options (Issue #5595)
  • +
  • Fixed potential excess logging from the scheduler when removing job files
    +(Issue #5597)
  • +
  • Fixed a NULL pointer dereference bug in httpGetSubField2 (Issue #5598)
  • +
  • Added FIPS-140 workarounds for GNU TLS (Issue #5601, Issue #5622)
  • +
  • The scheduler no longer provides a default value for the description
    +(Issue #5603)
  • +
  • The scheduler now logs jobs held for authentication using the error level so
    +it is clear what happened (Issue #5604)
  • +
  • The lpadmin command did not always update the PPD file for changes to the
    +cupsIPPSupplies and cupsSNMPSupplies keywords (Issue #5610)
  • +
  • The scheduler now uses both the group's membership list as well as the
    +various OS-specific membership functions to determine whether a user belongs
    +to a named group (Issue #5613)
  • +
  • Added USB quirks rule for HP LaserJet 1015 (Issue #5617)
  • +
  • Fixed some PPD parser issues (Issue #5623, Issue #5624)
  • +
  • The IPP parser no longer allows invalid member attributes in collections
    +(Issue #5630)
  • +
  • The configure script now treats the "wheel" group as a potential system
    +group (Issue #5638)
  • +
  • Fixed a USB printing issue on macOS (rdar://31433931)
  • +
  • Fixed IPP buffer overflow (rdar://50035411)
  • +
  • Fixed memory disclosure issue in the scheduler (rdar://51373853)
  • +
  • Fixed DoS issues in the scheduler (rdar://51373929)
  • +
  • Fixed an issue with unsupported "sides" values in the IPP backend
    +(rdar://51775322)
  • +
  • The scheduler would restart continuously when idle and printers were not
    +shared (rdar://52561199)
  • +
  • Fixed an issue with EXPECT !name WITH-VALUE ... tests.
  • +
  • Fixed a command ordering issue in the Zebra ZPL driver.
  • +
  • Fixed a memory leak in ppdOpen.
  • +
+

Enjoy!

+
+ + +
+ +
+ + + Assets + 4 +
+
+ +
+ + +
+
+ +
+ + + +
+ +
+
+
+ + +
+ + + + +
+ +
+
+
+
+ v2.2.12 +
+ + +
+ + +

+ @michaelrsweet + michaelrsweet + released this + Aug 15, 2019 + · + + 793 commits + to master + since this release +

+
+ + + +
+

CUPS 2.2.12 is now available and includes security, compatibility, and general bug fixes. Changes include:

+
    +
  • CVE-2019-8696 and CVE-2019-8675: Fixed SNMP buffer overflows (rdar://51685251)
  • +
  • The cupsctl command now prevents setting "cups-files.conf" directives
    +(Issue #5530)
  • +
  • Updated the systemd service file for cupsd (Issue #5551)
  • +
  • The cupsCheckDestSupported function did not check octetString values
    +correctly (Issue #5557)
  • +
  • The scheduler did not encode octetString values like "job-password" correctly
    +for the print filters (Issue #5558)
  • +
  • Restored minimal support for the Emulators keyword in PPD files to allow
    +old Samsung printer drivers to continue to work (Issue #5562)
  • +
  • Timed out job submission now yields an error (Issue #5570)
  • +
  • The footer in the web interface covered some content on small displays
    +(Issue #5574)
  • +
  • The libusb-based USB backend now enforces read limits, improving print speed
    +in many cases (Issue #5583)
  • +
  • Fixed some compatibility issues with old releases of CUPS (Issue #5587)
  • +
  • Fixed a bug in the scheduler job cleanup code (Issue #5588)
  • +
  • "make" failed with GZIP options (Issue #5595)
  • +
  • Added FIPS-140 workarounds for GNU TLS (Issue #5601, Issue #5622)
  • +
  • The scheduler no longer provides a default value for the description
    +(Issue #5603)
  • +
  • The lpadmin command did not always update the PPD file for changes to the
    +cupsIPPSupplies and cupsSNMPSupplies keywords (Issue #5610)
  • +
  • The scheduler now uses both the group's membership list as well as the
    +various OS-specific membership functions to determine whether a user belongs
    +to a named group (Issue #5613)
  • +
  • Added USB quirks rule for HP LaserJet 1015 (Issue #5617)
  • +
  • Fixed some PPD parser issues (Issue #5623, Issue #5624)
  • +
  • The IPP parser no longer allows invalid member attributes in collections
    +(Issue #5630)
  • +
  • Fixed IPP buffer overflow (rdar://50035411)
  • +
  • Fixed memory disclosure issue in the scheduler (rdar://51373853)
  • +
  • Fixed DoS issues in the scheduler (rdar://51373929)
  • +
  • The scheduler would restart continuously when idle and printers were not
    +shared (rdar://52561199)
  • +
  • Fixed a command ordering issue in the Zebra ZPL driver.
  • +
  • Fixed a memory leak in ppdOpen.
  • +
+

Enjoy!

+
+ + +
+ +
+ + + Assets + 4 +
+
+ +
+ + +
+
+ +
+ + + +
+ +
+
+
+ + Pre-release + + + +
+ + + + +
+ +
+
+
+
+ v2.3rc1 +
+ + + Pre-release + + +
+ + +

+ @michaelrsweet + michaelrsweet + released this + May 21, 2019 + · + + 122 commits + to master + since this release +

+
+ + + +
+

CUPS 2.3rc1 is now available for download. This is the first release candidate for CUPS 2.3.0 which adopts the new CUPS license, adds support for IPP presets and finishing templates, and fixes a number of bugs and "polish" issues. This beta also includes the new ippeveprinter utility. Changes include:

+
    +
  • The cups-config script no longer adds extra libraries when linking against
    +shared libraries (Issue #5261)
  • +
  • The supplied example print documents have been optimized for size
    +(Issue #5529)
  • +
  • The cupsctl command now prevents setting "cups-files.conf" directives
    +(Issue #5530)
  • +
  • The "forbidden" message in the web interface is now explained (Issue #5547)
  • +
  • The footer in the web interface covered some content on small displays
    +(Issue #5574)
  • +
  • The libusb-based USB backend now enforces read limits, improving print speed
    +in many cases (Issue #5583)
  • +
  • The ippeveprinter command now looks for print commands in the "command"
    +subdirectory.
  • +
  • The ipptool command now supports $date-current and $date-start variables
    +to insert the current and starting date and time values, as well as ISO-8601
    +relative time values such as "PT30S" for 30 seconds in the future.
  • +
+

Enjoy!

+
+ + +
+ +
+ + + Assets + 4 +
+
+ +
+ + +
+
+ +
+ + + +
+ +
+
+
+ + Pre-release + + + +
+ + + + +
+ +
+
+
+
+ v2.3b8 +
+ + + Pre-release + + +
+ + +

+ @michaelrsweet + michaelrsweet + released this + May 2, 2019 + · + + 165 commits + to master + since this release +

+
+ + + +
+

CUPS 2.3b8 is now available for download. This is the eighth beta of the CUPS 2.3 series which adopts the new CUPS license, adds support for IPP presets and finishing templates, and fixes a number of bugs and "polish" issues. This beta also includes the new ippeveprinter utility. Changes include:

+
    +
  • Media size matching now uses a tolerance of 0.5mm (rdar://33822024)
  • +
  • The lpadmin command would hang with a bad PPD file (rdar://41495016)
  • +
  • Fixed a potential crash bug in cups-driverd (rdar://46625579)
  • +
  • Fixed a performance regression with large PPDs (rdar://47040759)
  • +
  • Fixed a memory reallocation bug in HTTP header value expansion
    +(rdar://problem/50000749)
  • +
  • Timed out job submission now yields an error (Issue #5570)
  • +
  • Restored minimal support for the Emulators keyword in PPD files to allow
    +old Samsung printer drivers to continue to work (Issue #5562)
  • +
  • The scheduler did not encode octetString values like "job-password" correctly
    +for the print filters (Issue #5558)
  • +
  • The cupsCheckDestSupported function did not check octetString values
    +correctly (Issue #5557)
  • +
  • Added support for UserAgentTokens directive in "client.conf" (Issue #5555)
  • +
  • Updated the systemd service file for cupsd (Issue #5551)
  • +
  • The ippValidateAttribute function did not catch all instances of invalid
    +UTF-8 strings (Issue #5509)
  • +
  • Fixed an issue with the self-signed certificates generated by GNU TLS
    +(Issue #5506)
  • +
  • Fixed a potential memory leak when reading at the end of a file (Issue #5473)
  • +
  • Fixed potential unaligned accesses in the string pool (Issue #5474)
  • +
  • Fixed a potential memory leak when loading a PPD file (Issue #5475)
  • +
  • Added a USB quirks rule for the Lexmark E120n (Issue #5478)
  • +
  • Updated the USB quirks rule for Zebra label printers (Issue #5395)
  • +
  • Fixed a compile error on Linux (Issue #5483)
  • +
  • The lpadmin command, web interface, and scheduler all queried an IPP
    +Everywhere printer differently, resulting in different PPDs for the same
    +printer (Issue #5484)
  • +
  • The web interface no longer provides access to the log files (Issue #5513)
  • +
  • Non-Kerberized printing to Windows via IPP was broken (Issue #5515)
  • +
  • Eliminated use of private headers and some deprecated macOS APIs (Issue #5516)
  • +
  • The scheduler no longer stops a printer if an error occurs when a job is
    +canceled or aborted (Issue #5517)
  • +
  • Added a USB quirks rule for the DYMO 450 Turbo (Issue #5521)
  • +
  • Added a USB quirks rule for Xerox printers (Issue #5523)
  • +
  • The scheduler's self-signed certificate did not include all of the alternate
    +names for the server when using GNU TLS (Issue #5525)
  • +
  • Fixed compiler warnings with newer versions of GCC (Issue #5532, Issue #5533)
  • +
  • Fixed some PPD caching and IPP Everywhere PPD accounting/password bugs
    +(Issue #5535)
  • +
  • Fixed PreserveJobHistory bug with time values (Issue #5538)
  • +
  • The scheduler no longer advertises the HTTP methods it supports (Issue #5540)
  • +
  • Localization updates (Issue #5461, Issues #5471, Issue #5481, Issue #5486,
    +Issue #5489, Issue #5491, Issue #5492, Issue #5493, Issue #5494, Issue #5495,
    +Issue #5497, Issue #5499, Issue #5500, Issue #5501, Issue #5504)
  • +
  • The scheduler did not always idle exit as quickly as it could.
  • +
  • Added a new ippeveprinter command based on the old ippserver sample code.
  • +
+

Enjoy!

+
+ + +
+ +
+ + + Assets + 4 +
+
+ +
+ + +
+
+ +
+ + + +
+ +
+
+
+ + +
+ + + + +
+ +
+
+
+
+ v2.2.11 +
+ + +
+ + +

+ @michaelrsweet + michaelrsweet + released this + Mar 22, 2019 + · + + 793 commits + to master + since this release +

+
+ + + +
+

CUPS 2.2.11 is a bug fix release that addresses issues in the scheduler,
+IPP Everywhere support, CUPS library, and USB printer support. Changes include:

+
    +
  • Running ppdmerge with the same input and output filenames did not work as
    +advertised (Issue #5455)
  • +
  • Fixed a potential memory leak when reading at the end of a file (Issue #5473)
  • +
  • Fixed potential unaligned accesses in the string pool (Issue #5474)
  • +
  • Fixed a potential memory leak when loading a PPD file (Issue #5475)
  • +
  • Added a USB quirks rule for the Lexmark E120n (Issue #5478)
  • +
  • Updated the USB quirks rule for Zebra label printers (Issue #5395)
  • +
  • Fixed a compile error on Linux (Issue #5483)
  • +
  • The lpadmin command, web interface, and scheduler all queried an IPP
    +Everywhere printer differently, resulting in different PPDs for the same
    +printer (Issue #5484)
  • +
  • Fixed an issue with the self-signed certificates generated by GNU TLS
    +(Issue #5506)
  • +
  • The ippValidateAttribute function did not catch all instances of invalid
    +UTF-8 strings (Issue #5509)
  • +
  • Non-Kerberized printing to Windows via IPP was broken (Issue #5515)
  • +
  • The scheduler no longer stops a printer if an error occurs when a job is
    +canceled or aborted (Issue #5517)
  • +
  • Added a USB quirks rule for the DYMO 450 Turbo (Issue #5521)
  • +
  • Added a USB quirks rule for Xerox printers (Issue #5523)
  • +
  • The scheduler's self-signed certificate did not include all of the alternate
    +names for the server when using GNU TLS (Issue #5525)
  • +
  • Fixed compiler warnings with newer versions of GCC (Issue #5532, Issue #5533)
  • +
  • Fixed some PPD caching and IPP Everywhere PPD accounting/password bugs
    +(Issue #5535)
  • +
  • Fixed PreserveJobHistory bug with time values (Issue #5538)
  • +
  • Media size matching now uses a tolerance of 0.5mm (rdar://33822024)
  • +
  • The lpadmin command would hang with a bad PPD file (rdar://41495016)
  • +
  • Fixed a potential crash bug in cups-driverd (rdar://46625579)
  • +
  • Fixed a performance regression with large PPDs (rdar://47040759)
  • +
  • The scheduler did not always idle exit as quickly as it could.
  • +
+

Enjoy!

+
+ + +
+ +
+ + + Assets + 4 +
+
+ +
+ + +
+
+ +
+ + + +
+ +
+
+
+ + Pre-release + + + +
+ + + + +
+ +
+
+
+
+ v2.3b7 +
+ + + Pre-release + + +
+ + +

+ @michaelrsweet + michaelrsweet + released this + Dec 14, 2018 + · + + 350 commits + to master + since this release +

+
+ + + +
+

CUPS 2.3b7 is now available for download. This is the sixth beta of the CUPS 2.3 series which adopts the new CUPS license, adds support for IPP presets and finishing templates, and fixes a number of bugs and "polish" issues.

+

Changes include:

+
    +
  • Fixed some build failures (Issue #5451, Issue #5463)
  • +
  • Running ppdmerge with the same input and output filenames did not work as
    +advertised (Issue #5455)
  • +
+

Enjoy!

+
+ + +
+ +
+ + + Assets + 4 +
+
+ +
+ + +
+
+ +
+ + + +
+ +
+
+
+ + Pre-release + + + +
+ + + + +
+ +
+
+
+
+ v2.3b6 +
+ + + Pre-release + + +
+ + +

+ @michaelrsweet + michaelrsweet + released this + Dec 7, 2018 + · + + 358 commits + to master + since this release +

+
+ + + +
+

CUPS 2.3b6 is now available for download. This is the sixth beta of the CUPS 2.3 series which adopts the new CUPS license, adds support for IPP presets and finishing templates, and fixes a number of bugs and “polish” issues. Changes include:

+
    +
  • Localization update (Issue #5339, Issue #5348, Issue #5362, Issue #5408, Issue #5410)
  • +
  • Documentation updates (Issue #5369, Issue #5402, Issue #5403, Issue #5404)
  • +
  • CVE-2018-4700: Linux session cookies used a predictable random number seed.
  • +
  • All user commands now support the --help option (Issue #5326)
  • +
  • The lpoptions command now works with IPP Everywhere printers that have not yet been added as local queues (Issue #5045)
  • +
  • The lpadmin command would create a non-working printer in some error cases (Issue #5305)
  • +
  • The scheduler would crash if an empty AccessLog directive was specified (Issue #5309)
  • +
  • The scheduler did not idle-exit on some Linux distributions (Issue #5319)
  • +
  • Fixed a regression in the changes to ippValidateAttribute (Issue #5322, Issue #5330)
  • +
  • Fixed a crash bug in the Epson dot matrix driver (Issue #5323)
  • +
  • Automatic debug logging of job errors did not work with systemd (Issue #5337)
  • +
  • The web interface did not list the IPP Everywhere "driver" (Issue #5338)
  • +
  • The scheduler did not report all of the supported job options and values (Issue #5340)
  • +
  • The IPP Everywhere "driver" now properly supports face-up printers (Issue #5345)
  • +
  • Fixed some typos in the label printer drivers (Issue #5350)
  • +
  • Setting the Community name to the empty string in snmp.conf now disables SNMP supply level monitoring by all the standard network backends (Issue #5354)
  • +
  • Multi-file jobs could get stuck if the backend failed (Issue #5359, Issue #5413)
  • +
  • The IPP Everywhere "driver" no longer does local filtering when printing to a shared CUPS printer (Issue #5361)
  • +
  • The lpadmin command now correctly reports IPP errors when configuring an IPP Everywhere printer (Issue #5370)
  • +
  • Fixed some memory leaks discovered by Coverity (Issue #5375)
  • +
  • The PPD compiler incorrectly terminated JCL options (Issue #5379)
  • +
  • The cupstestppd utility did not generate errors for missing/mismatched CloseUI/JCLCloseUI keywords (Issue #5381)
  • +
  • The scheduler now reports the actual location of the log file (Issue #5398)
  • +
  • Added USB quirk rules (Issue #5395, Issue #5420, Issue #5443)
  • +
  • The generated PPD files for IPP Everywhere printers did not contain the cupsManualCopies keyword (Issue #5433)
  • +
  • Kerberos credentials might be truncated (Issue #5435)
  • +
  • The handling of MaxJobTime 0 did not match the documentation (Issue #5438)
  • +
  • Fixed a bug adding a queue with the -E option (Issue #5440)
  • +
  • The cupsaddsmb program has been removed (Issue #5449)
  • +
  • The cupstestdsc program has been removed (Issue #5450)
  • +
  • The scheduler was being backgrounded on macOS, causing applications to spin (rdar://40436080)
  • +
  • The scheduler did not validate that required initial request attributes were in the operation group (rdar://41098178)
  • +
  • Authentication in the web interface did not work on macOS (rdar://41444473)
  • +
  • Fixed an issue with HTTP Digest authentication (rdar://41709086)
  • +
  • The scheduler could crash when job history was purged (rdar://42198057)
  • +
  • Fixed a crash bug when mapping PPD duplex options to IPP attributes (rdar://46183976)
  • +
  • Fixed a memory leak for some IPP (extension) syntaxes.
  • +
  • The cupscgi, cupsmime, and cupsppdc support libraries are no longer installed as shared libraries.
  • +
  • The snmp backend is now deprecated.
  • +
+

Enjoy!

+
+ + +
+ +
+ + + Assets + 4 +
+
+ +
+ + +
+
+ +
+ + + +
+ +
+
+
+ + +
+ + + + +
+ +
+
+
+
+ v2.2.10 +
+ + +
+ + +

+ @michaelrsweet + michaelrsweet + released this + Dec 7, 2018 + · + + 793 commits + to master + since this release +

+
+ + + +
+

CUPS 2.2.10 is a bug fix release that addresses issues in the scheduler, IPP Everywhere support, CUPS library, and USB printer support. Changes include:

+
    +
  • CVE-2018-4300: Linux session cookies used a predictable random number seed.
  • +
  • The lpoptions command now works with IPP Everywhere printers that have not yet been added as local queues (Issue #5045)
  • +
  • Added USB quirk rules (Issue #5395, Issue #5443)
  • +
  • The generated PPD files for IPP Everywhere printers did not contain the cupsManualCopies keyword (Issue #5433)
  • +
  • Kerberos credentials might be truncated (Issue #5435)
  • +
  • The handling of MaxJobTime 0 did not match the documentation (Issue #5438)
  • +
  • Incorporated the page accounting changes from CUPS 2.3 (Issue #5439)
  • +
  • Fixed a bug adding a queue with the -E option (Issue #5440)
  • +
  • Fixed a crash bug when mapping PPD duplex options to IPP attributes (rdar://46183976)
  • +
+

Enjoy!

+
+ + +
+ +
+ + + Assets + 4 +
+
+ +
+ + +
+
+ +
+ +
+ +
+ +
+ + +
+
+ +
+
+ + +
+ + + + + + +
+ + + You can’t perform that action at this time. +
+ + + + + + + + + + + + + + +
+ + + + diff --git a/poky/bitbake/lib/bb/tests/fetch-testdata/debian/pool/main/d/db5.3/index.html b/poky/bitbake/lib/bb/tests/fetch-testdata/debian/pool/main/d/db5.3/index.html new file mode 100644 index 000000000..a5a6f4839 --- /dev/null +++ b/poky/bitbake/lib/bb/tests/fetch-testdata/debian/pool/main/d/db5.3/index.html @@ -0,0 +1,509 @@ + + + + Index of /debian/pool/main/d/db5.3 + + +

Index of /debian/pool/main/d/db5.3

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
[ICO]NameLast modifiedSize

[PARENTDIR]Parent Directory  -
[   ]db5.3-doc_5.3.28+dfsg1-0.5_all.deb2019-02-26 10:57 15M
[   ]db5.3-doc_5.3.28+dfsg1-0.6_all.deb2019-03-12 05:28 15M
[   ]db5.3-doc_5.3.28-9+deb8u1_all.deb2017-11-18 20:15 18M
[   ]db5.3-doc_5.3.28-12+deb9u1_all.deb2017-09-28 09:42 18M
[   ]db5.3-sql-util_5.3.28+dfsg1-0.5_amd64.deb2019-02-26 10:11 21K
[   ]db5.3-sql-util_5.3.28+dfsg1-0.5_arm64.deb2019-02-26 09:56 19K
[   ]db5.3-sql-util_5.3.28+dfsg1-0.5_armel.deb2019-02-26 10:57 20K
[   ]db5.3-sql-util_5.3.28+dfsg1-0.5_armhf.deb2019-02-26 10:57 19K
[   ]db5.3-sql-util_5.3.28+dfsg1-0.5_i386.deb2019-02-26 09:46 22K
[   ]db5.3-sql-util_5.3.28+dfsg1-0.5_mips.deb2019-02-26 10:57 19K
[   ]db5.3-sql-util_5.3.28+dfsg1-0.5_mips64el.deb2019-02-26 12:42 19K
[   ]db5.3-sql-util_5.3.28+dfsg1-0.5_mipsel.deb2019-02-26 12:42 19K
[   ]db5.3-sql-util_5.3.28+dfsg1-0.5_ppc64el.deb2019-02-26 09:56 23K
[   ]db5.3-sql-util_5.3.28+dfsg1-0.5_s390x.deb2019-02-26 09:56 20K
[   ]db5.3-sql-util_5.3.28+dfsg1-0.6_amd64.deb2019-03-12 05:28 21K
[   ]db5.3-sql-util_5.3.28+dfsg1-0.6_arm64.deb2019-03-12 05:28 19K
[   ]db5.3-sql-util_5.3.28+dfsg1-0.6_armel.deb2019-03-12 06:29 20K
[   ]db5.3-sql-util_5.3.28+dfsg1-0.6_armhf.deb2019-03-12 06:14 19K
[   ]db5.3-sql-util_5.3.28+dfsg1-0.6_i386.deb2019-03-12 05:43 22K
[   ]db5.3-sql-util_5.3.28+dfsg1-0.6_mips64el.deb2019-03-12 06:29 19K
[   ]db5.3-sql-util_5.3.28+dfsg1-0.6_mipsel.deb2019-03-12 07:30 19K
[   ]db5.3-sql-util_5.3.28+dfsg1-0.6_ppc64el.deb2019-03-12 05:28 23K
[   ]db5.3-sql-util_5.3.28+dfsg1-0.6_s390x.deb2019-03-12 05:13 20K
[   ]db5.3-sql-util_5.3.28-9+deb8u1_amd64.deb2017-11-20 03:40 21K
[   ]db5.3-sql-util_5.3.28-9+deb8u1_armel.deb2017-11-20 04:26 20K
[   ]db5.3-sql-util_5.3.28-9+deb8u1_armhf.deb2017-12-02 16:26 19K
[   ]db5.3-sql-util_5.3.28-9+deb8u1_i386.deb2017-11-20 03:25 22K
[   ]db5.3-sql-util_5.3.28-12+deb9u1_amd64.deb2017-09-28 09:42 20K
[   ]db5.3-sql-util_5.3.28-12+deb9u1_arm64.deb2017-09-28 09:42 18K
[   ]db5.3-sql-util_5.3.28-12+deb9u1_armel.deb2017-09-28 10:28 20K
[   ]db5.3-sql-util_5.3.28-12+deb9u1_armhf.deb2017-09-28 10:28 19K
[   ]db5.3-sql-util_5.3.28-12+deb9u1_i386.deb2017-09-28 09:27 22K
[   ]db5.3-sql-util_5.3.28-12+deb9u1_mips.deb2017-09-29 16:10 19K
[   ]db5.3-sql-util_5.3.28-12+deb9u1_mips64el.deb2017-09-28 11:29 19K
[   ]db5.3-sql-util_5.3.28-12+deb9u1_mipsel.deb2017-09-28 11:14 19K
[   ]db5.3-sql-util_5.3.28-12+deb9u1_ppc64el.deb2017-09-28 09:27 19K
[   ]db5.3-sql-util_5.3.28-12+deb9u1_s390x.deb2017-09-28 09:42 20K
[   ]db5.3-util_5.3.28+dfsg1-0.5_amd64.deb2019-02-26 10:11 63K
[   ]db5.3-util_5.3.28+dfsg1-0.5_arm64.deb2019-02-26 09:56 63K
[   ]db5.3-util_5.3.28+dfsg1-0.5_armel.deb2019-02-26 10:57 58K
[   ]db5.3-util_5.3.28+dfsg1-0.5_armhf.deb2019-02-26 10:57 59K
[   ]db5.3-util_5.3.28+dfsg1-0.5_i386.deb2019-02-26 09:46 65K
[   ]db5.3-util_5.3.28+dfsg1-0.5_mips.deb2019-02-26 10:57 62K
[   ]db5.3-util_5.3.28+dfsg1-0.5_mips64el.deb2019-02-26 12:42 64K
[   ]db5.3-util_5.3.28+dfsg1-0.5_mipsel.deb2019-02-26 12:42 63K
[   ]db5.3-util_5.3.28+dfsg1-0.5_ppc64el.deb2019-02-26 09:56 69K
[   ]db5.3-util_5.3.28+dfsg1-0.5_s390x.deb2019-02-26 09:56 64K
[   ]db5.3-util_5.3.28+dfsg1-0.6_amd64.deb2019-03-12 05:28 63K
[   ]db5.3-util_5.3.28+dfsg1-0.6_arm64.deb2019-03-12 05:28 63K
[   ]db5.3-util_5.3.28+dfsg1-0.6_armel.deb2019-03-12 06:29 58K
[   ]db5.3-util_5.3.28+dfsg1-0.6_armhf.deb2019-03-12 06:14 59K
[   ]db5.3-util_5.3.28+dfsg1-0.6_i386.deb2019-03-12 05:43 65K
[   ]db5.3-util_5.3.28+dfsg1-0.6_mips64el.deb2019-03-12 06:29 64K
[   ]db5.3-util_5.3.28+dfsg1-0.6_mipsel.deb2019-03-12 07:30 63K
[   ]db5.3-util_5.3.28+dfsg1-0.6_ppc64el.deb2019-03-12 05:28 69K
[   ]db5.3-util_5.3.28+dfsg1-0.6_s390x.deb2019-03-12 05:13 64K
[   ]db5.3-util_5.3.28-9+deb8u1_amd64.deb2017-11-20 03:40 63K
[   ]db5.3-util_5.3.28-9+deb8u1_armel.deb2017-11-20 04:26 60K
[   ]db5.3-util_5.3.28-9+deb8u1_armhf.deb2017-12-02 16:26 61K
[   ]db5.3-util_5.3.28-9+deb8u1_i386.deb2017-11-20 03:25 65K
[   ]db5.3-util_5.3.28-12+deb9u1_amd64.deb2017-09-28 09:42 63K
[   ]db5.3-util_5.3.28-12+deb9u1_arm64.deb2017-09-28 09:42 60K
[   ]db5.3-util_5.3.28-12+deb9u1_armel.deb2017-09-28 10:28 60K
[   ]db5.3-util_5.3.28-12+deb9u1_armhf.deb2017-09-28 10:28 61K
[   ]db5.3-util_5.3.28-12+deb9u1_i386.deb2017-09-28 09:27 66K
[   ]db5.3-util_5.3.28-12+deb9u1_mips.deb2017-09-29 16:10 62K
[   ]db5.3-util_5.3.28-12+deb9u1_mips64el.deb2017-09-28 11:29 64K
[   ]db5.3-util_5.3.28-12+deb9u1_mipsel.deb2017-09-28 11:14 63K
[   ]db5.3-util_5.3.28-12+deb9u1_ppc64el.deb2017-09-28 09:27 60K
[   ]db5.3-util_5.3.28-12+deb9u1_s390x.deb2017-09-28 09:42 64K
[   ]db5.3_5.3.28+dfsg1-0.5.debian.tar.xz2019-02-26 08:51 28K
[   ]db5.3_5.3.28+dfsg1-0.5.dsc2019-02-26 08:51 2.7K
[   ]db5.3_5.3.28+dfsg1-0.6.debian.tar.xz2019-03-12 04:27 29K
[   ]db5.3_5.3.28+dfsg1-0.6.dsc2019-03-12 04:27 3.1K
[   ]db5.3_5.3.28+dfsg1.orig.tar.xz2018-08-09 01:52 19M
[   ]db5.3_5.3.28-9+deb8u1.debian.tar.xz2017-11-18 20:15 28K
[   ]db5.3_5.3.28-9+deb8u1.dsc2017-11-18 20:15 3.2K
[   ]db5.3_5.3.28-12+deb9u1.debian.tar.xz2017-09-24 16:26 28K
[   ]db5.3_5.3.28-12+deb9u1.dsc2017-09-24 16:26 3.2K
[   ]db5.3_5.3.28.orig.tar.xz2013-10-27 14:01 23M
[   ]libdb5.3++-dev_5.3.28+dfsg1-0.5_amd64.deb2019-02-26 10:11 760K
[   ]libdb5.3++-dev_5.3.28+dfsg1-0.5_arm64.deb2019-02-26 09:56 722K
[   ]libdb5.3++-dev_5.3.28+dfsg1-0.5_armel.deb2019-02-26 10:57 668K
[   ]libdb5.3++-dev_5.3.28+dfsg1-0.5_armhf.deb2019-02-26 10:57 692K
[   ]libdb5.3++-dev_5.3.28+dfsg1-0.5_i386.deb2019-02-26 09:46 842K
[   ]libdb5.3++-dev_5.3.28+dfsg1-0.5_mips.deb2019-02-26 10:57 773K
[   ]libdb5.3++-dev_5.3.28+dfsg1-0.5_mips64el.deb2019-02-26 12:42 801K
[   ]libdb5.3++-dev_5.3.28+dfsg1-0.5_mipsel.deb2019-02-26 12:42 789K
[   ]libdb5.3++-dev_5.3.28+dfsg1-0.5_ppc64el.deb2019-02-26 09:56 816K
[   ]libdb5.3++-dev_5.3.28+dfsg1-0.5_s390x.deb2019-02-26 09:56 693K
[   ]libdb5.3++-dev_5.3.28+dfsg1-0.6_amd64.deb2019-03-12 05:28 759K
[   ]libdb5.3++-dev_5.3.28+dfsg1-0.6_arm64.deb2019-03-12 05:28 722K
[   ]libdb5.3++-dev_5.3.28+dfsg1-0.6_armel.deb2019-03-12 06:29 668K
[   ]libdb5.3++-dev_5.3.28+dfsg1-0.6_armhf.deb2019-03-12 06:14 692K
[   ]libdb5.3++-dev_5.3.28+dfsg1-0.6_i386.deb2019-03-12 05:43 842K
[   ]libdb5.3++-dev_5.3.28+dfsg1-0.6_mips64el.deb2019-03-12 06:29 801K
[   ]libdb5.3++-dev_5.3.28+dfsg1-0.6_mipsel.deb2019-03-12 07:30 789K
[   ]libdb5.3++-dev_5.3.28+dfsg1-0.6_ppc64el.deb2019-03-12 05:28 816K
[   ]libdb5.3++-dev_5.3.28+dfsg1-0.6_s390x.deb2019-03-12 05:13 693K
[   ]libdb5.3++-dev_5.3.28-9+deb8u1_amd64.deb2017-11-20 03:40 740K
[   ]libdb5.3++-dev_5.3.28-9+deb8u1_armel.deb2017-11-20 04:26 643K
[   ]libdb5.3++-dev_5.3.28-9+deb8u1_armhf.deb2017-12-02 16:26 672K
[   ]libdb5.3++-dev_5.3.28-9+deb8u1_i386.deb2017-11-20 03:25 780K
[   ]libdb5.3++-dev_5.3.28-12+deb9u1_amd64.deb2017-09-28 09:42 757K
[   ]libdb5.3++-dev_5.3.28-12+deb9u1_arm64.deb2017-09-28 09:42 663K
[   ]libdb5.3++-dev_5.3.28-12+deb9u1_armel.deb2017-09-28 10:28 676K
[   ]libdb5.3++-dev_5.3.28-12+deb9u1_armhf.deb2017-09-28 10:28 690K
[   ]libdb5.3++-dev_5.3.28-12+deb9u1_i386.deb2017-09-28 09:27 836K
[   ]libdb5.3++-dev_5.3.28-12+deb9u1_mips.deb2017-09-29 16:10 768K
[   ]libdb5.3++-dev_5.3.28-12+deb9u1_mips64el.deb2017-09-28 11:29 795K
[   ]libdb5.3++-dev_5.3.28-12+deb9u1_mipsel.deb2017-09-28 11:14 786K
[   ]libdb5.3++-dev_5.3.28-12+deb9u1_ppc64el.deb2017-09-28 09:27 701K
[   ]libdb5.3++-dev_5.3.28-12+deb9u1_s390x.deb2017-09-28 09:42 714K
[   ]libdb5.3++_5.3.28+dfsg1-0.5_amd64.deb2019-02-26 10:11 690K
[   ]libdb5.3++_5.3.28+dfsg1-0.5_arm64.deb2019-02-26 09:56 628K
[   ]libdb5.3++_5.3.28+dfsg1-0.5_armel.deb2019-02-26 10:57 576K
[   ]libdb5.3++_5.3.28+dfsg1-0.5_armhf.deb2019-02-26 10:57 600K
[   ]libdb5.3++_5.3.28+dfsg1-0.5_i386.deb2019-02-26 09:46 755K
[   ]libdb5.3++_5.3.28+dfsg1-0.5_mips.deb2019-02-26 10:57 595K
[   ]libdb5.3++_5.3.28+dfsg1-0.5_mips64el.deb2019-02-26 12:42 604K
[   ]libdb5.3++_5.3.28+dfsg1-0.5_mipsel.deb2019-02-26 12:42 604K
[   ]libdb5.3++_5.3.28+dfsg1-0.5_ppc64el.deb2019-02-26 09:56 723K
[   ]libdb5.3++_5.3.28+dfsg1-0.5_s390x.deb2019-02-26 09:56 619K
[   ]libdb5.3++_5.3.28+dfsg1-0.6_amd64.deb2019-03-12 05:28 690K
[   ]libdb5.3++_5.3.28+dfsg1-0.6_arm64.deb2019-03-12 05:28 629K
[   ]libdb5.3++_5.3.28+dfsg1-0.6_armel.deb2019-03-12 06:29 574K
[   ]libdb5.3++_5.3.28+dfsg1-0.6_armhf.deb2019-03-12 06:14 600K
[   ]libdb5.3++_5.3.28+dfsg1-0.6_i386.deb2019-03-12 05:43 755K
[   ]libdb5.3++_5.3.28+dfsg1-0.6_mips64el.deb2019-03-12 06:29 604K
[   ]libdb5.3++_5.3.28+dfsg1-0.6_mipsel.deb2019-03-12 07:30 604K
[   ]libdb5.3++_5.3.28+dfsg1-0.6_ppc64el.deb2019-03-12 05:28 724K
[   ]libdb5.3++_5.3.28+dfsg1-0.6_s390x.deb2019-03-12 05:13 620K
[   ]libdb5.3++_5.3.28-9+deb8u1_amd64.deb2017-11-20 03:40 691K
[   ]libdb5.3++_5.3.28-9+deb8u1_armel.deb2017-11-20 04:26 580K
[   ]libdb5.3++_5.3.28-9+deb8u1_armhf.deb2017-12-02 16:26 606K
[   ]libdb5.3++_5.3.28-9+deb8u1_i386.deb2017-11-20 03:25 749K
[   ]libdb5.3++_5.3.28-12+deb9u1_amd64.deb2017-09-28 09:42 687K
[   ]libdb5.3++_5.3.28-12+deb9u1_arm64.deb2017-09-28 09:42 574K
[   ]libdb5.3++_5.3.28-12+deb9u1_armel.deb2017-09-28 10:28 575K
[   ]libdb5.3++_5.3.28-12+deb9u1_armhf.deb2017-09-28 10:28 600K
[   ]libdb5.3++_5.3.28-12+deb9u1_i386.deb2017-09-28 09:27 751K
[   ]libdb5.3++_5.3.28-12+deb9u1_mips.deb2017-09-29 16:10 593K
[   ]libdb5.3++_5.3.28-12+deb9u1_mips64el.deb2017-09-28 11:29 601K
[   ]libdb5.3++_5.3.28-12+deb9u1_mipsel.deb2017-09-28 11:14 602K
[   ]libdb5.3++_5.3.28-12+deb9u1_ppc64el.deb2017-09-28 09:27 618K
[   ]libdb5.3++_5.3.28-12+deb9u1_s390x.deb2017-09-28 09:42 637K
[   ]libdb5.3-dbg_5.3.28+dfsg1-0.5_amd64.deb2019-02-26 10:11 43M
[   ]libdb5.3-dbg_5.3.28+dfsg1-0.5_arm64.deb2019-02-26 09:56 42M
[   ]libdb5.3-dbg_5.3.28+dfsg1-0.5_armel.deb2019-02-26 10:57 42M
[   ]libdb5.3-dbg_5.3.28+dfsg1-0.5_armhf.deb2019-02-26 10:57 42M
[   ]libdb5.3-dbg_5.3.28+dfsg1-0.5_i386.deb2019-02-26 09:46 41M
[   ]libdb5.3-dbg_5.3.28+dfsg1-0.5_mips.deb2019-02-26 10:57 43M
[   ]libdb5.3-dbg_5.3.28+dfsg1-0.5_mips64el.deb2019-02-26 12:42 43M
[   ]libdb5.3-dbg_5.3.28+dfsg1-0.5_mipsel.deb2019-02-26 12:42 42M
[   ]libdb5.3-dbg_5.3.28+dfsg1-0.5_ppc64el.deb2019-02-26 09:56 42M
[   ]libdb5.3-dbg_5.3.28+dfsg1-0.5_s390x.deb2019-02-26 09:56 44M
[   ]libdb5.3-dbg_5.3.28+dfsg1-0.6_amd64.deb2019-03-12 05:28 43M
[   ]libdb5.3-dbg_5.3.28+dfsg1-0.6_arm64.deb2019-03-12 05:28 42M
[   ]libdb5.3-dbg_5.3.28+dfsg1-0.6_armel.deb2019-03-12 06:29 42M
[   ]libdb5.3-dbg_5.3.28+dfsg1-0.6_armhf.deb2019-03-12 06:14 42M
[   ]libdb5.3-dbg_5.3.28+dfsg1-0.6_i386.deb2019-03-12 05:43 41M
[   ]libdb5.3-dbg_5.3.28+dfsg1-0.6_mips64el.deb2019-03-12 06:29 43M
[   ]libdb5.3-dbg_5.3.28+dfsg1-0.6_mipsel.deb2019-03-12 07:30 42M
[   ]libdb5.3-dbg_5.3.28+dfsg1-0.6_ppc64el.deb2019-03-12 05:28 42M
[   ]libdb5.3-dbg_5.3.28+dfsg1-0.6_s390x.deb2019-03-12 05:13 44M
[   ]libdb5.3-dbg_5.3.28-9+deb8u1_amd64.deb2017-11-20 03:40 34M
[   ]libdb5.3-dbg_5.3.28-9+deb8u1_armel.deb2017-11-20 04:26 35M
[   ]libdb5.3-dbg_5.3.28-9+deb8u1_armhf.deb2017-12-02 16:26 35M
[   ]libdb5.3-dbg_5.3.28-9+deb8u1_i386.deb2017-11-20 03:25 32M
[   ]libdb5.3-dbg_5.3.28-12+deb9u1_amd64.deb2017-09-28 09:42 40M
[   ]libdb5.3-dbg_5.3.28-12+deb9u1_arm64.deb2017-09-28 09:42 40M
[   ]libdb5.3-dbg_5.3.28-12+deb9u1_armel.deb2017-09-28 10:28 39M
[   ]libdb5.3-dbg_5.3.28-12+deb9u1_armhf.deb2017-09-28 10:28 39M
[   ]libdb5.3-dbg_5.3.28-12+deb9u1_i386.deb2017-09-28 09:27 38M
[   ]libdb5.3-dbg_5.3.28-12+deb9u1_mips.deb2017-09-29 16:10 41M
[   ]libdb5.3-dbg_5.3.28-12+deb9u1_mips64el.deb2017-09-28 11:29 40M
[   ]libdb5.3-dbg_5.3.28-12+deb9u1_mipsel.deb2017-09-28 11:14 39M
[   ]libdb5.3-dbg_5.3.28-12+deb9u1_ppc64el.deb2017-09-28 09:27 40M
[   ]libdb5.3-dbg_5.3.28-12+deb9u1_s390x.deb2017-09-28 09:42 42M
[   ]libdb5.3-dev_5.3.28+dfsg1-0.5_amd64.deb2019-02-26 10:11 743K
[   ]libdb5.3-dev_5.3.28+dfsg1-0.5_arm64.deb2019-02-26 09:56 707K
[   ]libdb5.3-dev_5.3.28+dfsg1-0.5_armel.deb2019-02-26 10:57 654K
[   ]libdb5.3-dev_5.3.28+dfsg1-0.5_armhf.deb2019-02-26 10:57 677K
[   ]libdb5.3-dev_5.3.28+dfsg1-0.5_i386.deb2019-02-26 09:46 822K
[   ]libdb5.3-dev_5.3.28+dfsg1-0.5_mips.deb2019-02-26 10:57 753K
[   ]libdb5.3-dev_5.3.28+dfsg1-0.5_mips64el.deb2019-02-26 12:42 780K
[   ]libdb5.3-dev_5.3.28+dfsg1-0.5_mipsel.deb2019-02-26 12:42 769K
[   ]libdb5.3-dev_5.3.28+dfsg1-0.5_ppc64el.deb2019-02-26 09:56 797K
[   ]libdb5.3-dev_5.3.28+dfsg1-0.5_s390x.deb2019-02-26 09:56 679K
[   ]libdb5.3-dev_5.3.28+dfsg1-0.6_amd64.deb2019-03-12 05:28 743K
[   ]libdb5.3-dev_5.3.28+dfsg1-0.6_arm64.deb2019-03-12 05:28 707K
[   ]libdb5.3-dev_5.3.28+dfsg1-0.6_armel.deb2019-03-12 06:29 654K
[   ]libdb5.3-dev_5.3.28+dfsg1-0.6_armhf.deb2019-03-12 06:14 677K
[   ]libdb5.3-dev_5.3.28+dfsg1-0.6_i386.deb2019-03-12 05:43 822K
[   ]libdb5.3-dev_5.3.28+dfsg1-0.6_mips64el.deb2019-03-12 06:29 780K
[   ]libdb5.3-dev_5.3.28+dfsg1-0.6_mipsel.deb2019-03-12 07:30 769K
[   ]libdb5.3-dev_5.3.28+dfsg1-0.6_ppc64el.deb2019-03-12 05:28 797K
[   ]libdb5.3-dev_5.3.28+dfsg1-0.6_s390x.deb2019-03-12 05:13 679K
[   ]libdb5.3-dev_5.3.28-9+deb8u1_amd64.deb2017-11-20 03:40 725K
[   ]libdb5.3-dev_5.3.28-9+deb8u1_armel.deb2017-11-20 04:26 630K
[   ]libdb5.3-dev_5.3.28-9+deb8u1_armhf.deb2017-12-02 16:26 659K
[   ]libdb5.3-dev_5.3.28-9+deb8u1_i386.deb2017-11-20 03:25 766K
[   ]libdb5.3-dev_5.3.28-12+deb9u1_amd64.deb2017-09-28 09:42 742K
[   ]libdb5.3-dev_5.3.28-12+deb9u1_arm64.deb2017-09-28 09:42 648K
[   ]libdb5.3-dev_5.3.28-12+deb9u1_armel.deb2017-09-28 10:28 660K
[   ]libdb5.3-dev_5.3.28-12+deb9u1_armhf.deb2017-09-28 10:28 676K
[   ]libdb5.3-dev_5.3.28-12+deb9u1_i386.deb2017-09-28 09:27 817K
[   ]libdb5.3-dev_5.3.28-12+deb9u1_mips.deb2017-09-29 16:10 748K
[   ]libdb5.3-dev_5.3.28-12+deb9u1_mips64el.deb2017-09-28 11:29 774K
[   ]libdb5.3-dev_5.3.28-12+deb9u1_mipsel.deb2017-09-28 11:14 765K
[   ]libdb5.3-dev_5.3.28-12+deb9u1_ppc64el.deb2017-09-28 09:27 682K
[   ]libdb5.3-dev_5.3.28-12+deb9u1_s390x.deb2017-09-28 09:42 699K
[   ]libdb5.3-java-dev_5.3.28+dfsg1-0.5_amd64.deb2019-02-26 10:11 757K
[   ]libdb5.3-java-dev_5.3.28+dfsg1-0.5_arm64.deb2019-02-26 09:56 720K
[   ]libdb5.3-java-dev_5.3.28+dfsg1-0.5_armel.deb2019-02-26 10:57 662K
[   ]libdb5.3-java-dev_5.3.28+dfsg1-0.5_armhf.deb2019-02-26 10:57 688K
[   ]libdb5.3-java-dev_5.3.28+dfsg1-0.5_i386.deb2019-02-26 09:46 840K
[   ]libdb5.3-java-dev_5.3.28+dfsg1-0.5_mips.deb2019-02-26 10:57 768K
[   ]libdb5.3-java-dev_5.3.28+dfsg1-0.5_mips64el.deb2019-02-26 12:42 795K
[   ]libdb5.3-java-dev_5.3.28+dfsg1-0.5_mipsel.deb2019-02-26 12:42 784K
[   ]libdb5.3-java-dev_5.3.28+dfsg1-0.5_ppc64el.deb2019-02-26 09:56 814K
[   ]libdb5.3-java-dev_5.3.28+dfsg1-0.5_s390x.deb2019-02-26 09:56 688K
[   ]libdb5.3-java-dev_5.3.28+dfsg1-0.6_amd64.deb2019-03-12 05:28 756K
[   ]libdb5.3-java-dev_5.3.28+dfsg1-0.6_arm64.deb2019-03-12 05:28 721K
[   ]libdb5.3-java-dev_5.3.28+dfsg1-0.6_armel.deb2019-03-12 06:29 663K
[   ]libdb5.3-java-dev_5.3.28+dfsg1-0.6_armhf.deb2019-03-12 06:14 688K
[   ]libdb5.3-java-dev_5.3.28+dfsg1-0.6_i386.deb2019-03-12 05:43 840K
[   ]libdb5.3-java-dev_5.3.28+dfsg1-0.6_mips64el.deb2019-03-12 06:29 796K
[   ]libdb5.3-java-dev_5.3.28+dfsg1-0.6_mipsel.deb2019-03-12 07:30 785K
[   ]libdb5.3-java-dev_5.3.28+dfsg1-0.6_ppc64el.deb2019-03-12 05:28 814K
[   ]libdb5.3-java-dev_5.3.28+dfsg1-0.6_s390x.deb2019-03-12 05:13 688K
[   ]libdb5.3-java-dev_5.3.28-9+deb8u1_amd64.deb2017-11-20 03:40 737K
[   ]libdb5.3-java-dev_5.3.28-9+deb8u1_armel.deb2017-11-20 04:26 637K
[   ]libdb5.3-java-dev_5.3.28-9+deb8u1_armhf.deb2017-12-02 16:26 666K
[   ]libdb5.3-java-dev_5.3.28-9+deb8u1_i386.deb2017-11-20 03:25 781K
[   ]libdb5.3-java-dev_5.3.28-12+deb9u1_amd64.deb2017-09-28 09:42 756K
[   ]libdb5.3-java-dev_5.3.28-12+deb9u1_arm64.deb2017-09-28 09:42 657K
[   ]libdb5.3-java-dev_5.3.28-12+deb9u1_armel.deb2017-09-28 10:28 670K
[   ]libdb5.3-java-dev_5.3.28-12+deb9u1_armhf.deb2017-09-28 10:28 686K
[   ]libdb5.3-java-dev_5.3.28-12+deb9u1_i386.deb2017-09-28 09:27 836K
[   ]libdb5.3-java-dev_5.3.28-12+deb9u1_mips.deb2017-09-29 16:10 763K
[   ]libdb5.3-java-dev_5.3.28-12+deb9u1_mips64el.deb2017-09-28 11:29 789K
[   ]libdb5.3-java-dev_5.3.28-12+deb9u1_mipsel.deb2017-09-28 11:14 780K
[   ]libdb5.3-java-dev_5.3.28-12+deb9u1_ppc64el.deb2017-09-28 09:27 691K
[   ]libdb5.3-java-dev_5.3.28-12+deb9u1_s390x.deb2017-09-28 09:42 711K
[   ]libdb5.3-java-gcj_5.3.28-9+deb8u1_amd64.deb2017-11-20 03:40 602K
[   ]libdb5.3-java-gcj_5.3.28-9+deb8u1_armel.deb2017-11-20 04:26 455K
[   ]libdb5.3-java-gcj_5.3.28-9+deb8u1_armhf.deb2017-12-02 16:26 450K
[   ]libdb5.3-java-gcj_5.3.28-9+deb8u1_i386.deb2017-11-20 03:25 503K
[   ]libdb5.3-java-gcj_5.3.28-12+deb9u1_amd64.deb2017-09-28 09:42 602K
[   ]libdb5.3-java-gcj_5.3.28-12+deb9u1_arm64.deb2017-09-28 09:42 595K
[   ]libdb5.3-java-gcj_5.3.28-12+deb9u1_armel.deb2017-09-28 10:28 453K
[   ]libdb5.3-java-gcj_5.3.28-12+deb9u1_armhf.deb2017-09-28 10:28 447K
[   ]libdb5.3-java-gcj_5.3.28-12+deb9u1_i386.deb2017-09-28 09:27 518K
[   ]libdb5.3-java-gcj_5.3.28-12+deb9u1_mips.deb2017-09-29 16:10 463K
[   ]libdb5.3-java-gcj_5.3.28-12+deb9u1_mips64el.deb2017-09-28 11:29 474K
[   ]libdb5.3-java-gcj_5.3.28-12+deb9u1_mipsel.deb2017-09-28 11:14 471K
[   ]libdb5.3-java-gcj_5.3.28-12+deb9u1_ppc64el.deb2017-09-28 09:27 611K
[   ]libdb5.3-java-gcj_5.3.28-12+deb9u1_s390x.deb2017-09-28 09:42 578K
[   ]libdb5.3-java-jni_5.3.28+dfsg1-0.5_amd64.deb2019-02-26 10:11 696K
[   ]libdb5.3-java-jni_5.3.28+dfsg1-0.5_arm64.deb2019-02-26 09:56 635K
[   ]libdb5.3-java-jni_5.3.28+dfsg1-0.5_armel.deb2019-02-26 10:57 580K
[   ]libdb5.3-java-jni_5.3.28+dfsg1-0.5_armhf.deb2019-02-26 10:57 606K
[   ]libdb5.3-java-jni_5.3.28+dfsg1-0.5_i386.deb2019-02-26 09:46 763K
[   ]libdb5.3-java-jni_5.3.28+dfsg1-0.5_mips.deb2019-02-26 10:57 596K
[   ]libdb5.3-java-jni_5.3.28+dfsg1-0.5_mips64el.deb2019-02-26 12:42 603K
[   ]libdb5.3-java-jni_5.3.28+dfsg1-0.5_mipsel.deb2019-02-26 12:42 605K
[   ]libdb5.3-java-jni_5.3.28+dfsg1-0.5_ppc64el.deb2019-02-26 09:56 732K
[   ]libdb5.3-java-jni_5.3.28+dfsg1-0.5_s390x.deb2019-02-26 09:56 624K
[   ]libdb5.3-java-jni_5.3.28+dfsg1-0.6_amd64.deb2019-03-12 05:28 696K
[   ]libdb5.3-java-jni_5.3.28+dfsg1-0.6_arm64.deb2019-03-12 05:28 636K
[   ]libdb5.3-java-jni_5.3.28+dfsg1-0.6_armel.deb2019-03-12 06:29 581K
[   ]libdb5.3-java-jni_5.3.28+dfsg1-0.6_armhf.deb2019-03-12 06:14 606K
[   ]libdb5.3-java-jni_5.3.28+dfsg1-0.6_i386.deb2019-03-12 05:43 762K
[   ]libdb5.3-java-jni_5.3.28+dfsg1-0.6_mips64el.deb2019-03-12 06:29 603K
[   ]libdb5.3-java-jni_5.3.28+dfsg1-0.6_mipsel.deb2019-03-12 07:30 605K
[   ]libdb5.3-java-jni_5.3.28+dfsg1-0.6_ppc64el.deb2019-03-12 05:28 733K
[   ]libdb5.3-java-jni_5.3.28+dfsg1-0.6_s390x.deb2019-03-12 05:13 625K
[   ]libdb5.3-java-jni_5.3.28-9+deb8u1_amd64.deb2017-11-20 03:40 696K
[   ]libdb5.3-java-jni_5.3.28-9+deb8u1_armel.deb2017-11-20 04:26 583K
[   ]libdb5.3-java-jni_5.3.28-9+deb8u1_armhf.deb2017-12-02 16:26 612K
[   ]libdb5.3-java-jni_5.3.28-9+deb8u1_i386.deb2017-11-20 03:25 754K
[   ]libdb5.3-java-jni_5.3.28-12+deb9u1_amd64.deb2017-09-28 09:42 695K
[   ]libdb5.3-java-jni_5.3.28-12+deb9u1_arm64.deb2017-09-28 09:42 574K
[   ]libdb5.3-java-jni_5.3.28-12+deb9u1_armel.deb2017-09-28 10:28 580K
[   ]libdb5.3-java-jni_5.3.28-12+deb9u1_armhf.deb2017-09-28 10:28 606K
[   ]libdb5.3-java-jni_5.3.28-12+deb9u1_i386.deb2017-09-28 09:27 758K
[   ]libdb5.3-java-jni_5.3.28-12+deb9u1_mips.deb2017-09-29 16:10 593K
[   ]libdb5.3-java-jni_5.3.28-12+deb9u1_mips64el.deb2017-09-28 11:29 600K
[   ]libdb5.3-java-jni_5.3.28-12+deb9u1_mipsel.deb2017-09-28 11:14 603K
[   ]libdb5.3-java-jni_5.3.28-12+deb9u1_ppc64el.deb2017-09-28 09:27 618K
[   ]libdb5.3-java-jni_5.3.28-12+deb9u1_s390x.deb2017-09-28 09:42 641K
[   ]libdb5.3-java_5.3.28+dfsg1-0.5_all.deb2019-02-26 10:57 575K
[   ]libdb5.3-java_5.3.28+dfsg1-0.6_all.deb2019-03-12 05:28 575K
[   ]libdb5.3-java_5.3.28-9+deb8u1_all.deb2017-11-18 20:15 543K
[   ]libdb5.3-java_5.3.28-12+deb9u1_all.deb2017-09-28 09:42 548K
[   ]libdb5.3-sql-dev_5.3.28+dfsg1-0.5_amd64.deb2019-02-26 10:11 1.0M
[   ]libdb5.3-sql-dev_5.3.28+dfsg1-0.5_arm64.deb2019-02-26 09:56 968K
[   ]libdb5.3-sql-dev_5.3.28+dfsg1-0.5_armel.deb2019-02-26 10:57 901K
[   ]libdb5.3-sql-dev_5.3.28+dfsg1-0.5_armhf.deb2019-02-26 10:57 929K
[   ]libdb5.3-sql-dev_5.3.28+dfsg1-0.5_i386.deb2019-02-26 09:46 1.1M
[   ]libdb5.3-sql-dev_5.3.28+dfsg1-0.5_mips.deb2019-02-26 10:57 1.0M
[   ]libdb5.3-sql-dev_5.3.28+dfsg1-0.5_mips64el.deb2019-02-26 12:42 1.1M
[   ]libdb5.3-sql-dev_5.3.28+dfsg1-0.5_mipsel.deb2019-02-26 12:42 1.0M
[   ]libdb5.3-sql-dev_5.3.28+dfsg1-0.5_ppc64el.deb2019-02-26 09:56 1.1M
[   ]libdb5.3-sql-dev_5.3.28+dfsg1-0.5_s390x.deb2019-02-26 09:56 938K
[   ]libdb5.3-sql-dev_5.3.28+dfsg1-0.6_amd64.deb2019-03-12 05:28 1.0M
[   ]libdb5.3-sql-dev_5.3.28+dfsg1-0.6_arm64.deb2019-03-12 05:28 968K
[   ]libdb5.3-sql-dev_5.3.28+dfsg1-0.6_armel.deb2019-03-12 06:29 901K
[   ]libdb5.3-sql-dev_5.3.28+dfsg1-0.6_armhf.deb2019-03-12 06:14 929K
[   ]libdb5.3-sql-dev_5.3.28+dfsg1-0.6_i386.deb2019-03-12 05:43 1.1M
[   ]libdb5.3-sql-dev_5.3.28+dfsg1-0.6_mips64el.deb2019-03-12 06:29 1.1M
[   ]libdb5.3-sql-dev_5.3.28+dfsg1-0.6_mipsel.deb2019-03-12 07:30 1.0M
[   ]libdb5.3-sql-dev_5.3.28+dfsg1-0.6_ppc64el.deb2019-03-12 05:28 1.1M
[   ]libdb5.3-sql-dev_5.3.28+dfsg1-0.6_s390x.deb2019-03-12 05:13 938K
[   ]libdb5.3-sql-dev_5.3.28-9+deb8u1_amd64.deb2017-11-20 03:40 1.0M
[   ]libdb5.3-sql-dev_5.3.28-9+deb8u1_armel.deb2017-11-20 04:26 869K
[   ]libdb5.3-sql-dev_5.3.28-9+deb8u1_armhf.deb2017-12-02 16:26 906K
[   ]libdb5.3-sql-dev_5.3.28-9+deb8u1_i386.deb2017-11-20 03:25 1.0M
[   ]libdb5.3-sql-dev_5.3.28-12+deb9u1_amd64.deb2017-09-28 09:42 1.0M
[   ]libdb5.3-sql-dev_5.3.28-12+deb9u1_arm64.deb2017-09-28 09:42 891K
[   ]libdb5.3-sql-dev_5.3.28-12+deb9u1_armel.deb2017-09-28 10:28 910K
[   ]libdb5.3-sql-dev_5.3.28-12+deb9u1_armhf.deb2017-09-28 10:28 929K
[   ]libdb5.3-sql-dev_5.3.28-12+deb9u1_i386.deb2017-09-28 09:27 1.1M
[   ]libdb5.3-sql-dev_5.3.28-12+deb9u1_mips.deb2017-09-29 16:10 1.0M
[   ]libdb5.3-sql-dev_5.3.28-12+deb9u1_mips64el.deb2017-09-28 11:29 1.0M
[   ]libdb5.3-sql-dev_5.3.28-12+deb9u1_mipsel.deb2017-09-28 11:14 1.0M
[   ]libdb5.3-sql-dev_5.3.28-12+deb9u1_ppc64el.deb2017-09-28 09:27 939K
[   ]libdb5.3-sql-dev_5.3.28-12+deb9u1_s390x.deb2017-09-28 09:42 965K
[   ]libdb5.3-sql_5.3.28+dfsg1-0.5_amd64.deb2019-02-26 10:11 885K
[   ]libdb5.3-sql_5.3.28+dfsg1-0.5_arm64.deb2019-02-26 09:56 808K
[   ]libdb5.3-sql_5.3.28+dfsg1-0.5_armel.deb2019-02-26 10:57 737K
[   ]libdb5.3-sql_5.3.28+dfsg1-0.5_armhf.deb2019-02-26 10:57 766K
[   ]libdb5.3-sql_5.3.28+dfsg1-0.5_i386.deb2019-02-26 09:46 963K
[   ]libdb5.3-sql_5.3.28+dfsg1-0.5_mips.deb2019-02-26 10:57 777K
[   ]libdb5.3-sql_5.3.28+dfsg1-0.5_mips64el.deb2019-02-26 12:42 789K
[   ]libdb5.3-sql_5.3.28+dfsg1-0.5_mipsel.deb2019-02-26 12:42 788K
[   ]libdb5.3-sql_5.3.28+dfsg1-0.5_ppc64el.deb2019-02-26 09:56 928K
[   ]libdb5.3-sql_5.3.28+dfsg1-0.5_s390x.deb2019-02-26 09:56 794K
[   ]libdb5.3-sql_5.3.28+dfsg1-0.6_amd64.deb2019-03-12 05:28 883K
[   ]libdb5.3-sql_5.3.28+dfsg1-0.6_arm64.deb2019-03-12 05:28 808K
[   ]libdb5.3-sql_5.3.28+dfsg1-0.6_armel.deb2019-03-12 06:29 739K
[   ]libdb5.3-sql_5.3.28+dfsg1-0.6_armhf.deb2019-03-12 06:14 766K
[   ]libdb5.3-sql_5.3.28+dfsg1-0.6_i386.deb2019-03-12 05:43 963K
[   ]libdb5.3-sql_5.3.28+dfsg1-0.6_mips64el.deb2019-03-12 06:29 789K
[   ]libdb5.3-sql_5.3.28+dfsg1-0.6_mipsel.deb2019-03-12 07:30 788K
[   ]libdb5.3-sql_5.3.28+dfsg1-0.6_ppc64el.deb2019-03-12 05:28 927K
[   ]libdb5.3-sql_5.3.28+dfsg1-0.6_s390x.deb2019-03-12 05:13 794K
[   ]libdb5.3-sql_5.3.28-9+deb8u1_amd64.deb2017-11-20 03:40 882K
[   ]libdb5.3-sql_5.3.28-9+deb8u1_armel.deb2017-11-20 04:26 742K
[   ]libdb5.3-sql_5.3.28-9+deb8u1_armhf.deb2017-12-02 16:26 774K
[   ]libdb5.3-sql_5.3.28-9+deb8u1_i386.deb2017-11-20 03:25 954K
[   ]libdb5.3-sql_5.3.28-12+deb9u1_amd64.deb2017-09-28 09:42 879K
[   ]libdb5.3-sql_5.3.28-12+deb9u1_arm64.deb2017-09-28 09:42 733K
[   ]libdb5.3-sql_5.3.28-12+deb9u1_armel.deb2017-09-28 10:28 737K
[   ]libdb5.3-sql_5.3.28-12+deb9u1_armhf.deb2017-09-28 10:28 766K
[   ]libdb5.3-sql_5.3.28-12+deb9u1_i386.deb2017-09-28 09:27 958K
[   ]libdb5.3-sql_5.3.28-12+deb9u1_mips.deb2017-09-29 16:10 776K
[   ]libdb5.3-sql_5.3.28-12+deb9u1_mips64el.deb2017-09-28 11:29 786K
[   ]libdb5.3-sql_5.3.28-12+deb9u1_mipsel.deb2017-09-28 11:14 788K
[   ]libdb5.3-sql_5.3.28-12+deb9u1_ppc64el.deb2017-09-28 09:27 786K
[   ]libdb5.3-sql_5.3.28-12+deb9u1_s390x.deb2017-09-28 09:42 817K
[   ]libdb5.3-stl-dev_5.3.28+dfsg1-0.5_amd64.deb2019-02-26 10:11 842K
[   ]libdb5.3-stl-dev_5.3.28+dfsg1-0.5_arm64.deb2019-02-26 09:56 804K
[   ]libdb5.3-stl-dev_5.3.28+dfsg1-0.5_armel.deb2019-02-26 10:57 751K
[   ]libdb5.3-stl-dev_5.3.28+dfsg1-0.5_armhf.deb2019-02-26 10:57 774K
[   ]libdb5.3-stl-dev_5.3.28+dfsg1-0.5_i386.deb2019-02-26 09:46 927K
[   ]libdb5.3-stl-dev_5.3.28+dfsg1-0.5_mips.deb2019-02-26 10:57 856K
[   ]libdb5.3-stl-dev_5.3.28+dfsg1-0.5_mips64el.deb2019-02-26 12:42 885K
[   ]libdb5.3-stl-dev_5.3.28+dfsg1-0.5_mipsel.deb2019-02-26 12:42 874K
[   ]libdb5.3-stl-dev_5.3.28+dfsg1-0.5_ppc64el.deb2019-02-26 09:56 900K
[   ]libdb5.3-stl-dev_5.3.28+dfsg1-0.5_s390x.deb2019-02-26 09:56 773K
[   ]libdb5.3-stl-dev_5.3.28+dfsg1-0.6_amd64.deb2019-03-12 05:28 842K
[   ]libdb5.3-stl-dev_5.3.28+dfsg1-0.6_arm64.deb2019-03-12 05:28 804K
[   ]libdb5.3-stl-dev_5.3.28+dfsg1-0.6_armel.deb2019-03-12 06:29 751K
[   ]libdb5.3-stl-dev_5.3.28+dfsg1-0.6_armhf.deb2019-03-12 06:14 774K
[   ]libdb5.3-stl-dev_5.3.28+dfsg1-0.6_i386.deb2019-03-12 05:43 927K
[   ]libdb5.3-stl-dev_5.3.28+dfsg1-0.6_mips64el.deb2019-03-12 06:29 886K
[   ]libdb5.3-stl-dev_5.3.28+dfsg1-0.6_mipsel.deb2019-03-12 07:30 874K
[   ]libdb5.3-stl-dev_5.3.28+dfsg1-0.6_ppc64el.deb2019-03-12 05:28 900K
[   ]libdb5.3-stl-dev_5.3.28+dfsg1-0.6_s390x.deb2019-03-12 05:13 774K
[   ]libdb5.3-stl-dev_5.3.28-9+deb8u1_amd64.deb2017-11-20 03:40 826K
[   ]libdb5.3-stl-dev_5.3.28-9+deb8u1_armel.deb2017-11-20 04:26 727K
[   ]libdb5.3-stl-dev_5.3.28-9+deb8u1_armhf.deb2017-12-02 16:26 757K
[   ]libdb5.3-stl-dev_5.3.28-9+deb8u1_i386.deb2017-11-20 03:25 868K
[   ]libdb5.3-stl-dev_5.3.28-12+deb9u1_amd64.deb2017-09-28 09:42 838K
[   ]libdb5.3-stl-dev_5.3.28-12+deb9u1_arm64.deb2017-09-28 09:42 745K
[   ]libdb5.3-stl-dev_5.3.28-12+deb9u1_armel.deb2017-09-28 10:28 759K
[   ]libdb5.3-stl-dev_5.3.28-12+deb9u1_armhf.deb2017-09-28 10:28 773K
[   ]libdb5.3-stl-dev_5.3.28-12+deb9u1_i386.deb2017-09-28 09:27 920K
[   ]libdb5.3-stl-dev_5.3.28-12+deb9u1_mips.deb2017-09-29 16:10 852K
[   ]libdb5.3-stl-dev_5.3.28-12+deb9u1_mips64el.deb2017-09-28 11:29 880K
[   ]libdb5.3-stl-dev_5.3.28-12+deb9u1_mipsel.deb2017-09-28 11:14 870K
[   ]libdb5.3-stl-dev_5.3.28-12+deb9u1_ppc64el.deb2017-09-28 09:27 783K
[   ]libdb5.3-stl-dev_5.3.28-12+deb9u1_s390x.deb2017-09-28 09:42 795K
[   ]libdb5.3-stl_5.3.28+dfsg1-0.5_amd64.deb2019-02-26 10:11 711K
[   ]libdb5.3-stl_5.3.28+dfsg1-0.5_arm64.deb2019-02-26 09:56 650K
[   ]libdb5.3-stl_5.3.28+dfsg1-0.5_armel.deb2019-02-26 10:57 592K
[   ]libdb5.3-stl_5.3.28+dfsg1-0.5_armhf.deb2019-02-26 10:57 618K
[   ]libdb5.3-stl_5.3.28+dfsg1-0.5_i386.deb2019-02-26 09:46 779K
[   ]libdb5.3-stl_5.3.28+dfsg1-0.5_mips.deb2019-02-26 10:57 614K
[   ]libdb5.3-stl_5.3.28+dfsg1-0.5_mips64el.deb2019-02-26 12:42 623K
[   ]libdb5.3-stl_5.3.28+dfsg1-0.5_mipsel.deb2019-02-26 12:42 623K
[   ]libdb5.3-stl_5.3.28+dfsg1-0.5_ppc64el.deb2019-02-26 09:56 746K
[   ]libdb5.3-stl_5.3.28+dfsg1-0.5_s390x.deb2019-02-26 09:56 639K
[   ]libdb5.3-stl_5.3.28+dfsg1-0.6_amd64.deb2019-03-12 05:28 712K
[   ]libdb5.3-stl_5.3.28+dfsg1-0.6_arm64.deb2019-03-12 05:28 649K
[   ]libdb5.3-stl_5.3.28+dfsg1-0.6_armel.deb2019-03-12 06:29 592K
[   ]libdb5.3-stl_5.3.28+dfsg1-0.6_armhf.deb2019-03-12 06:14 618K
[   ]libdb5.3-stl_5.3.28+dfsg1-0.6_i386.deb2019-03-12 05:43 779K
[   ]libdb5.3-stl_5.3.28+dfsg1-0.6_mips64el.deb2019-03-12 06:29 623K
[   ]libdb5.3-stl_5.3.28+dfsg1-0.6_mipsel.deb2019-03-12 07:30 624K
[   ]libdb5.3-stl_5.3.28+dfsg1-0.6_ppc64el.deb2019-03-12 05:28 746K
[   ]libdb5.3-stl_5.3.28+dfsg1-0.6_s390x.deb2019-03-12 05:13 639K
[   ]libdb5.3-stl_5.3.28-9+deb8u1_amd64.deb2017-11-20 03:40 714K
[   ]libdb5.3-stl_5.3.28-9+deb8u1_armel.deb2017-11-20 04:26 599K
[   ]libdb5.3-stl_5.3.28-9+deb8u1_armhf.deb2017-12-02 16:26 627K
[   ]libdb5.3-stl_5.3.28-9+deb8u1_i386.deb2017-11-20 03:25 774K
[   ]libdb5.3-stl_5.3.28-12+deb9u1_amd64.deb2017-09-28 09:42 707K
[   ]libdb5.3-stl_5.3.28-12+deb9u1_arm64.deb2017-09-28 09:42 594K
[   ]libdb5.3-stl_5.3.28-12+deb9u1_armel.deb2017-09-28 10:28 591K
[   ]libdb5.3-stl_5.3.28-12+deb9u1_armhf.deb2017-09-28 10:28 617K
[   ]libdb5.3-stl_5.3.28-12+deb9u1_i386.deb2017-09-28 09:27 774K
[   ]libdb5.3-stl_5.3.28-12+deb9u1_mips.deb2017-09-29 16:10 612K
[   ]libdb5.3-stl_5.3.28-12+deb9u1_mips64el.deb2017-09-28 11:29 620K
[   ]libdb5.3-stl_5.3.28-12+deb9u1_mipsel.deb2017-09-28 11:14 622K
[   ]libdb5.3-stl_5.3.28-12+deb9u1_ppc64el.deb2017-09-28 09:27 639K
[   ]libdb5.3-stl_5.3.28-12+deb9u1_s390x.deb2017-09-28 09:42 657K
[   ]libdb5.3-tcl_5.3.28+dfsg1-0.5_amd64.deb2019-02-26 10:11 954K
[   ]libdb5.3-tcl_5.3.28+dfsg1-0.5_arm64.deb2019-02-26 09:56 894K
[   ]libdb5.3-tcl_5.3.28+dfsg1-0.5_armel.deb2019-02-26 10:57 805K
[   ]libdb5.3-tcl_5.3.28+dfsg1-0.5_armhf.deb2019-02-26 10:57 826K
[   ]libdb5.3-tcl_5.3.28+dfsg1-0.5_i386.deb2019-02-26 09:46 1.0M
[   ]libdb5.3-tcl_5.3.28+dfsg1-0.5_mips.deb2019-02-26 10:57 921K
[   ]libdb5.3-tcl_5.3.28+dfsg1-0.5_mips64el.deb2019-02-26 12:42 952K
[   ]libdb5.3-tcl_5.3.28+dfsg1-0.5_mipsel.deb2019-02-26 12:42 941K
[   ]libdb5.3-tcl_5.3.28+dfsg1-0.5_ppc64el.deb2019-02-26 09:56 1.0M
[   ]libdb5.3-tcl_5.3.28+dfsg1-0.5_s390x.deb2019-02-26 09:56 854K
[   ]libdb5.3-tcl_5.3.28+dfsg1-0.6_amd64.deb2019-03-12 05:28 954K
[   ]libdb5.3-tcl_5.3.28+dfsg1-0.6_arm64.deb2019-03-12 05:28 894K
[   ]libdb5.3-tcl_5.3.28+dfsg1-0.6_armel.deb2019-03-12 06:29 803K
[   ]libdb5.3-tcl_5.3.28+dfsg1-0.6_armhf.deb2019-03-12 06:14 825K
[   ]libdb5.3-tcl_5.3.28+dfsg1-0.6_i386.deb2019-03-12 05:43 1.0M
[   ]libdb5.3-tcl_5.3.28+dfsg1-0.6_mips64el.deb2019-03-12 06:29 952K
[   ]libdb5.3-tcl_5.3.28+dfsg1-0.6_mipsel.deb2019-03-12 07:30 942K
[   ]libdb5.3-tcl_5.3.28+dfsg1-0.6_ppc64el.deb2019-03-12 05:28 1.0M
[   ]libdb5.3-tcl_5.3.28+dfsg1-0.6_s390x.deb2019-03-12 05:13 853K
[   ]libdb5.3-tcl_5.3.28-9+deb8u1_amd64.deb2017-11-20 03:40 1.1M
[   ]libdb5.3-tcl_5.3.28-9+deb8u1_armel.deb2017-11-20 04:26 971K
[   ]libdb5.3-tcl_5.3.28-9+deb8u1_armhf.deb2017-12-02 16:26 1.0M
[   ]libdb5.3-tcl_5.3.28-9+deb8u1_i386.deb2017-11-20 03:25 1.3M
[   ]libdb5.3-tcl_5.3.28-12+deb9u1_amd64.deb2017-09-28 09:42 949K
[   ]libdb5.3-tcl_5.3.28-12+deb9u1_arm64.deb2017-09-28 09:42 809K
[   ]libdb5.3-tcl_5.3.28-12+deb9u1_armel.deb2017-09-28 10:28 808K
[   ]libdb5.3-tcl_5.3.28-12+deb9u1_armhf.deb2017-09-28 10:28 823K
[   ]libdb5.3-tcl_5.3.28-12+deb9u1_i386.deb2017-09-28 09:27 1.0M
[   ]libdb5.3-tcl_5.3.28-12+deb9u1_mips.deb2017-09-29 16:10 915K
[   ]libdb5.3-tcl_5.3.28-12+deb9u1_mips64el.deb2017-09-28 11:29 943K
[   ]libdb5.3-tcl_5.3.28-12+deb9u1_mipsel.deb2017-09-28 11:14 936K
[   ]libdb5.3-tcl_5.3.28-12+deb9u1_ppc64el.deb2017-09-28 09:27 871K
[   ]libdb5.3-tcl_5.3.28-12+deb9u1_s390x.deb2017-09-28 09:42 885K
[   ]libdb5.3_5.3.28+dfsg1-0.5_amd64.deb2019-02-26 10:11 667K
[   ]libdb5.3_5.3.28+dfsg1-0.5_arm64.deb2019-02-26 09:56 607K
[   ]libdb5.3_5.3.28+dfsg1-0.5_armel.deb2019-02-26 10:57 558K
[   ]libdb5.3_5.3.28+dfsg1-0.5_armhf.deb2019-02-26 10:57 583K
[   ]libdb5.3_5.3.28+dfsg1-0.5_i386.deb2019-02-26 09:46 730K
[   ]libdb5.3_5.3.28+dfsg1-0.5_mips.deb2019-02-26 10:57 575K
[   ]libdb5.3_5.3.28+dfsg1-0.5_mips64el.deb2019-02-26 12:42 583K
[   ]libdb5.3_5.3.28+dfsg1-0.5_mipsel.deb2019-02-26 12:42 584K
[   ]libdb5.3_5.3.28+dfsg1-0.5_ppc64el.deb2019-02-26 09:56 701K
[   ]libdb5.3_5.3.28+dfsg1-0.5_s390x.deb2019-02-26 09:56 599K
[   ]libdb5.3_5.3.28+dfsg1-0.6_amd64.deb2019-03-12 05:28 667K
[   ]libdb5.3_5.3.28+dfsg1-0.6_arm64.deb2019-03-12 05:28 607K
[   ]libdb5.3_5.3.28+dfsg1-0.6_armel.deb2019-03-12 06:29 559K
[   ]libdb5.3_5.3.28+dfsg1-0.6_armhf.deb2019-03-12 06:14 583K
[   ]libdb5.3_5.3.28+dfsg1-0.6_i386.deb2019-03-12 05:43 730K
[   ]libdb5.3_5.3.28+dfsg1-0.6_mips64el.deb2019-03-12 06:29 583K
[   ]libdb5.3_5.3.28+dfsg1-0.6_mipsel.deb2019-03-12 07:30 584K
[   ]libdb5.3_5.3.28+dfsg1-0.6_ppc64el.deb2019-03-12 05:28 701K
[   ]libdb5.3_5.3.28+dfsg1-0.6_s390x.deb2019-03-12 05:13 598K
[   ]libdb5.3_5.3.28-9+deb8u1_amd64.deb2017-11-20 03:40 664K
[   ]libdb5.3_5.3.28-9+deb8u1_armel.deb2017-11-20 04:26 561K
[   ]libdb5.3_5.3.28-9+deb8u1_armhf.deb2017-12-02 16:26 587K
[   ]libdb5.3_5.3.28-9+deb8u1_i386.deb2017-11-20 03:25 721K
[   ]libdb5.3_5.3.28-12+deb9u1_amd64.deb2017-09-28 09:42 663K
[   ]libdb5.3_5.3.28-12+deb9u1_arm64.deb2017-09-28 09:42 550K
[   ]libdb5.3_5.3.28-12+deb9u1_armel.deb2017-09-28 10:28 556K
[   ]libdb5.3_5.3.28-12+deb9u1_armhf.deb2017-09-28 10:28 581K
[   ]libdb5.3_5.3.28-12+deb9u1_i386.deb2017-09-28 09:27 725K
[   ]libdb5.3_5.3.28-12+deb9u1_mips.deb2017-09-29 16:10 572K
[   ]libdb5.3_5.3.28-12+deb9u1_mips64el.deb2017-09-28 11:29 579K
[   ]libdb5.3_5.3.28-12+deb9u1_mipsel.deb2017-09-28 11:14 581K
[   ]libdb5.3_5.3.28-12+deb9u1_ppc64el.deb2017-09-28 09:27 594K
[   ]libdb5.3_5.3.28-12+deb9u1_s390x.deb2017-09-28 09:42 615K

+
Apache Server at ftp.debian.org Port 80
+ diff --git a/poky/bitbake/lib/bb/tests/fetch-testdata/downloads/enchant/1.6.0/index.html b/poky/bitbake/lib/bb/tests/fetch-testdata/downloads/enchant/1.6.0/index.html new file mode 100644 index 000000000..b7bfb1e94 --- /dev/null +++ b/poky/bitbake/lib/bb/tests/fetch-testdata/downloads/enchant/1.6.0/index.html @@ -0,0 +1,15 @@ + + + + Index of /downloads/enchant/1.6.0 + + +

Index of /downloads/enchant/1.6.0

+ + + + + +
[ICO]NameLast modifiedSizeDescription

[DIR]Parent Directory  -  
[   ]MD5SUM01-Apr-2010 23:03 55  
[   ]enchant-1.6.0.tar.gz01-Apr-2010 23:02 593K 

+
Apache/2.2.15 (Fedora) Server at www.abisource.com Port 443
+ diff --git a/poky/bitbake/lib/bb/tests/fetch-testdata/files/v2.8/index.html b/poky/bitbake/lib/bb/tests/fetch-testdata/files/v2.8/index.html new file mode 100644 index 000000000..9ea077d5b --- /dev/null +++ b/poky/bitbake/lib/bb/tests/fetch-testdata/files/v2.8/index.html @@ -0,0 +1,774 @@ + + + + Index of /files/v2.8 + + +

Index of /files/v2.8

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
[ICO]NameLast modifiedSizeDescription

[PARENTDIR]Parent Directory  -  
[   ]-*2012-06-07 12:08 0  
[   ]CMakeChangeLog-2.8.02009-11-13 15:41 13K 
[   ]CMakeChangeLog-2.8.12010-03-17 14:37 17K 
[   ]CMakeChangeLog-2.8.22010-06-28 14:37 23K 
[   ]CMakeChangeLog-2.8.32010-11-03 17:21 41K 
[   ]CMakeChangeLog-2.8.42011-02-16 09:15 61K 
[   ]CMakeChangeLog-2.8.52011-07-08 10:49 81K 
[   ]CMakeChangeLog-2.8.62011-12-30 15:30 100K 
[   ]CMakeChangeLog-2.8.72011-12-30 15:31 115K 
[   ]CMakeChangeLog-2.8.82012-04-18 17:47 144K 
[   ]CMakeChangeLog-2.8.92012-08-09 16:29 163K 
[   ]CMakeChangeLog-2.8.102012-10-31 15:09 185K 
[   ]CMakeChangeLog-2.8.10.12012-11-07 11:52 186K 
[   ]CMakeChangeLog-2.8.10.22012-11-27 15:15 186K 
[   ]CMakeChangeLog-2.8.112013-05-16 09:39 218K 
[   ]CMakeChangeLog-2.8.122013-10-11 08:57 247K 
[   ]CMakeChangeLog-2.8.12.12013-11-08 14:33 248K 
[   ]CMakeVS10FindMake.cmake2010-05-27 09:45 1.2K 
[TXT]cmake-2.8.0-AIX-powerpc.sh2010-02-08 10:44 17M 
[   ]cmake-2.8.0-AIX-powerpc.tar.Z2010-02-08 10:44 24M 
[   ]cmake-2.8.0-AIX-powerpc.tar.gz2010-02-08 10:44 17M 
[   ]cmake-2.8.0-Darwin-universal.dmg2009-11-13 15:32 24M 
[   ]cmake-2.8.0-Darwin-universal.tar.Z2009-11-13 15:32 35M 
[   ]cmake-2.8.0-Darwin-universal.tar.gz2009-11-13 15:33 24M 
[TXT]cmake-2.8.0-HP-UX-9000_785.sh2009-11-13 15:32 14M 
[   ]cmake-2.8.0-HP-UX-9000_785.tar.Z2009-11-13 15:32 19M 
[   ]cmake-2.8.0-HP-UX-9000_785.tar.gz2009-11-13 15:32 14M 
[TXT]cmake-2.8.0-IRIX64-64.sh2009-11-13 15:32 9.0M 
[   ]cmake-2.8.0-IRIX64-64.tar.Z2009-11-13 15:32 13M 
[   ]cmake-2.8.0-IRIX64-64.tar.gz2009-11-13 15:32 9.0M 
[TXT]cmake-2.8.0-IRIX64-n32.sh2009-11-13 15:32 8.8M 
[   ]cmake-2.8.0-IRIX64-n32.tar.Z2009-11-13 15:32 13M 
[   ]cmake-2.8.0-IRIX64-n32.tar.gz2009-11-13 15:32 8.8M 
[TXT]cmake-2.8.0-Linux-i386.sh2009-11-13 15:32 15M 
[   ]cmake-2.8.0-Linux-i386.tar.Z2009-11-13 15:32 21M 
[   ]cmake-2.8.0-Linux-i386.tar.gz2009-11-13 15:32 15M 
[TXT]cmake-2.8.0-SunOS-sparc.sh2009-11-13 15:32 10M 
[   ]cmake-2.8.0-SunOS-sparc.tar.Z2009-11-13 15:32 14M 
[   ]cmake-2.8.0-SunOS-sparc.tar.gz2009-11-13 15:32 10M 
[   ]cmake-2.8.0-win32-x86.exe2009-11-13 15:32 7.4M 
[   ]cmake-2.8.0-win32-x86.zip2009-11-13 15:32 9.3M 
[   ]cmake-2.8.0.tar.Z2009-11-13 15:32 5.4M 
[   ]cmake-2.8.0.tar.gz2009-11-13 15:32 3.4M 
[   ]cmake-2.8.0.zip2009-11-13 15:32 4.6M 
[TXT]cmake-2.8.1-AIX-powerpc.sh2010-04-06 14:37 17M 
[   ]cmake-2.8.1-AIX-powerpc.tar.Z2010-04-06 14:37 24M 
[   ]cmake-2.8.1-AIX-powerpc.tar.gz2010-04-06 14:37 17M 
[   ]cmake-2.8.1-Darwin-universal.dmg2010-04-06 14:37 26M 
[   ]cmake-2.8.1-Darwin-universal.tar.Z2010-04-06 14:37 37M 
[   ]cmake-2.8.1-Darwin-universal.tar.gz2010-04-06 14:37 26M 
[TXT]cmake-2.8.1-HP-UX-9000_785.sh2010-04-06 14:37 14M 
[   ]cmake-2.8.1-HP-UX-9000_785.tar.Z2010-04-06 14:37 19M 
[   ]cmake-2.8.1-HP-UX-9000_785.tar.gz2010-04-06 14:37 14M 
[TXT]cmake-2.8.1-IRIX64-64.sh2010-04-06 14:37 9.1M 
[   ]cmake-2.8.1-IRIX64-64.tar.Z2010-04-06 14:37 13M 
[   ]cmake-2.8.1-IRIX64-64.tar.gz2010-04-06 14:37 9.1M 
[TXT]cmake-2.8.1-IRIX64-n32.sh2010-04-06 14:37 8.8M 
[   ]cmake-2.8.1-IRIX64-n32.tar.Z2010-04-06 14:37 13M 
[   ]cmake-2.8.1-IRIX64-n32.tar.gz2010-04-06 14:37 8.8M 
[TXT]cmake-2.8.1-Linux-i386.sh2010-04-06 14:37 15M 
[   ]cmake-2.8.1-Linux-i386.tar.Z2010-04-06 14:37 21M 
[   ]cmake-2.8.1-Linux-i386.tar.gz2010-04-06 14:37 15M 
[TXT]cmake-2.8.1-SunOS-sparc.sh2010-04-06 14:37 10M 
[   ]cmake-2.8.1-SunOS-sparc.tar.Z2010-04-06 14:37 14M 
[   ]cmake-2.8.1-SunOS-sparc.tar.gz2010-04-06 14:37 10M 
[   ]cmake-2.8.1-win32-x86.exe2010-04-06 14:37 7.5M 
[   ]cmake-2.8.1-win32-x86.zip2010-04-06 14:37 9.5M 
[   ]cmake-2.8.1.tar.Z2010-04-06 14:37 5.5M 
[   ]cmake-2.8.1.tar.gz2010-04-06 14:37 3.4M 
[   ]cmake-2.8.1.zip2010-04-06 14:37 4.6M 
[TXT]cmake-2.8.2-AIX-powerpc.sh2010-06-28 14:10 17M 
[   ]cmake-2.8.2-AIX-powerpc.tar.Z2010-06-28 14:09 24M 
[   ]cmake-2.8.2-AIX-powerpc.tar.gz2010-06-28 14:09 17M 
[   ]cmake-2.8.2-Darwin-universal.dmg2010-06-28 14:10 27M 
[   ]cmake-2.8.2-Darwin-universal.tar.Z2010-06-28 14:10 39M 
[   ]cmake-2.8.2-Darwin-universal.tar.gz2010-06-28 14:09 27M 
[TXT]cmake-2.8.2-HP-UX-9000_785.sh2010-06-28 14:09 15M 
[   ]cmake-2.8.2-HP-UX-9000_785.tar.Z2010-06-28 14:10 20M 
[   ]cmake-2.8.2-HP-UX-9000_785.tar.gz2010-06-28 14:10 15M 
[TXT]cmake-2.8.2-IRIX64-64.sh2010-06-28 14:10 9.6M 
[   ]cmake-2.8.2-IRIX64-64.tar.Z2010-06-28 14:09 14M 
[   ]cmake-2.8.2-IRIX64-64.tar.gz2010-06-28 14:10 9.6M 
[TXT]cmake-2.8.2-IRIX64-n32.sh2010-06-28 14:10 9.4M 
[   ]cmake-2.8.2-IRIX64-n32.tar.Z2010-06-28 14:09 14M 
[   ]cmake-2.8.2-IRIX64-n32.tar.gz2010-06-28 14:10 9.3M 
[TXT]cmake-2.8.2-Linux-i386.sh2010-06-28 14:10 15M 
[   ]cmake-2.8.2-Linux-i386.tar.Z2010-06-28 14:09 21M 
[   ]cmake-2.8.2-Linux-i386.tar.gz2010-06-28 14:10 15M 
[TXT]cmake-2.8.2-SunOS-sparc.sh2010-06-28 14:09 10M 
[   ]cmake-2.8.2-SunOS-sparc.tar.Z2010-06-28 14:10 14M 
[   ]cmake-2.8.2-SunOS-sparc.tar.gz2010-06-28 14:10 10M 
[   ]cmake-2.8.2-win32-x86.exe2010-06-28 14:09 7.7M 
[   ]cmake-2.8.2-win32-x86.zip2010-06-28 14:09 9.7M 
[   ]cmake-2.8.2.tar.Z2010-06-28 14:10 8.1M 
[   ]cmake-2.8.2.tar.gz2010-06-28 14:09 5.1M 
[   ]cmake-2.8.2.zip2010-06-28 14:10 6.8M 
[TXT]cmake-2.8.3-AIX-powerpc.sh2010-11-03 17:11 17M 
[   ]cmake-2.8.3-AIX-powerpc.tar.Z2010-11-03 17:11 24M 
[   ]cmake-2.8.3-AIX-powerpc.tar.gz2010-11-03 17:10 17M 
[   ]cmake-2.8.3-Darwin-universal.dmg2010-11-03 17:11 27M 
[   ]cmake-2.8.3-Darwin-universal.tar.Z2010-11-03 17:11 39M 
[   ]cmake-2.8.3-Darwin-universal.tar.gz2010-11-03 17:11 27M 
[TXT]cmake-2.8.3-IRIX64-64.sh2010-11-03 17:11 9.8M 
[   ]cmake-2.8.3-IRIX64-64.tar.Z2010-11-03 17:11 14M 
[   ]cmake-2.8.3-IRIX64-64.tar.gz2010-11-03 17:11 9.8M 
[TXT]cmake-2.8.3-IRIX64-n32.sh2010-11-03 17:10 9.5M 
[   ]cmake-2.8.3-IRIX64-n32.tar.Z2010-11-03 17:11 14M 
[   ]cmake-2.8.3-IRIX64-n32.tar.gz2010-11-03 17:10 9.5M 
[TXT]cmake-2.8.3-Linux-i386.sh2010-11-03 17:11 16M 
[   ]cmake-2.8.3-Linux-i386.tar.Z2010-11-03 17:11 22M 
[   ]cmake-2.8.3-Linux-i386.tar.gz2010-11-03 17:10 16M 
[TXT]cmake-2.8.3-SunOS-sparc.sh2010-11-03 17:10 11M 
[   ]cmake-2.8.3-SunOS-sparc.tar.Z2010-11-03 17:11 15M 
[   ]cmake-2.8.3-SunOS-sparc.tar.gz2010-11-03 17:11 11M 
[   ]cmake-2.8.3-win32-x86.exe2010-11-03 17:11 7.9M 
[   ]cmake-2.8.3-win32-x86.zip2010-11-03 17:11 9.9M 
[   ]cmake-2.8.3.tar.Z2010-11-03 17:11 8.1M 
[   ]cmake-2.8.3.tar.gz2010-11-03 17:11 5.2M 
[   ]cmake-2.8.3.zip2010-11-03 17:11 6.9M 
[TXT]cmake-2.8.4-AIX-powerpc.sh2011-02-15 15:54 17M 
[   ]cmake-2.8.4-AIX-powerpc.tar.Z2011-02-15 15:54 24M 
[   ]cmake-2.8.4-AIX-powerpc.tar.gz2011-02-15 15:53 17M 
[   ]cmake-2.8.4-Darwin-universal.dmg2011-02-15 15:53 28M 
[   ]cmake-2.8.4-Darwin-universal.tar.Z2011-02-15 15:54 39M 
[   ]cmake-2.8.4-Darwin-universal.tar.gz2011-02-15 15:54 27M 
[TXT]cmake-2.8.4-IRIX64-64.sh2011-02-15 15:53 9.9M 
[   ]cmake-2.8.4-IRIX64-64.tar.Z2011-02-15 15:54 15M 
[   ]cmake-2.8.4-IRIX64-64.tar.gz2011-02-15 15:54 9.9M 
[TXT]cmake-2.8.4-IRIX64-n32.sh2011-02-15 15:53 9.7M 
[   ]cmake-2.8.4-IRIX64-n32.tar.Z2011-02-15 15:55 14M 
[   ]cmake-2.8.4-IRIX64-n32.tar.gz2011-02-15 15:54 9.7M 
[TXT]cmake-2.8.4-Linux-i386.sh2011-02-15 15:54 16M 
[   ]cmake-2.8.4-Linux-i386.tar.Z2011-02-15 15:54 22M 
[   ]cmake-2.8.4-Linux-i386.tar.gz2011-02-15 15:54 16M 
[TXT]cmake-2.8.4-SunOS-sparc.sh2011-02-15 15:54 11M 
[   ]cmake-2.8.4-SunOS-sparc.tar.Z2011-02-15 15:54 15M 
[   ]cmake-2.8.4-SunOS-sparc.tar.gz2011-02-15 15:54 11M 
[   ]cmake-2.8.4-win32-x86.exe2011-02-15 15:54 7.9M 
[   ]cmake-2.8.4-win32-x86.zip2011-02-15 15:54 10M 
[   ]cmake-2.8.4.tar.Z2011-02-15 15:54 8.3M 
[   ]cmake-2.8.4.tar.gz2011-02-15 15:54 5.2M 
[   ]cmake-2.8.4.zip2011-02-15 15:54 7.0M 
[   ]cmake-2.8.5-1-src.tar.bz22011-07-08 10:34 4.1M 
[   ]cmake-2.8.5-1.tar.bz22011-07-08 10:34 6.3M 
[TXT]cmake-2.8.5-AIX-powerpc.sh2011-07-08 10:34 17M 
[   ]cmake-2.8.5-AIX-powerpc.tar.Z2011-07-08 10:34 24M 
[   ]cmake-2.8.5-AIX-powerpc.tar.gz2011-07-08 10:34 17M 
[   ]cmake-2.8.5-Darwin-universal.dmg2011-07-08 10:34 28M 
[   ]cmake-2.8.5-Darwin-universal.tar.Z2011-07-08 10:34 40M 
[   ]cmake-2.8.5-Darwin-universal.tar.gz2011-07-08 10:34 28M 
[TXT]cmake-2.8.5-IRIX64-64.sh2011-07-08 10:34 10M 
[   ]cmake-2.8.5-IRIX64-64.tar.Z2011-07-08 10:34 15M 
[   ]cmake-2.8.5-IRIX64-64.tar.gz2011-07-08 10:34 10M 
[TXT]cmake-2.8.5-IRIX64-n32.sh2011-07-08 10:34 9.8M 
[   ]cmake-2.8.5-IRIX64-n32.tar.Z2011-07-08 10:34 15M 
[   ]cmake-2.8.5-IRIX64-n32.tar.gz2011-07-08 10:34 9.8M 
[TXT]cmake-2.8.5-Linux-i386.sh2011-07-08 10:34 16M 
[   ]cmake-2.8.5-Linux-i386.tar.Z2011-07-08 10:34 22M 
[   ]cmake-2.8.5-Linux-i386.tar.gz2011-07-08 10:34 16M 
[TXT]cmake-2.8.5-SunOS-sparc.sh2011-07-08 10:34 11M 
[   ]cmake-2.8.5-SunOS-sparc.tar.Z2011-07-08 10:34 15M 
[   ]cmake-2.8.5-SunOS-sparc.tar.gz2011-07-08 10:34 11M 
[   ]cmake-2.8.5-win32-x86.exe2011-07-08 10:34 8.0M 
[   ]cmake-2.8.5-win32-x86.zip2011-07-08 10:34 10M 
[   ]cmake-2.8.5.tar.Z2011-07-08 10:34 8.3M 
[   ]cmake-2.8.5.tar.gz2011-07-08 10:34 5.3M 
[   ]cmake-2.8.5.zip2011-07-08 10:34 7.0M 
[   ]cmake-2.8.6-1-src.tar.bz22011-10-04 13:59 4.1M 
[   ]cmake-2.8.6-1.tar.bz22011-10-04 13:59 6.4M 
[TXT]cmake-2.8.6-AIX-powerpc.sh2011-10-04 13:59 17M 
[   ]cmake-2.8.6-AIX-powerpc.tar.Z2011-10-04 13:59 25M 
[   ]cmake-2.8.6-AIX-powerpc.tar.gz2011-10-04 13:59 17M 
[   ]cmake-2.8.6-Darwin-universal.dmg2011-10-04 13:59 28M 
[   ]cmake-2.8.6-Darwin-universal.tar.Z2011-10-04 13:59 40M 
[   ]cmake-2.8.6-Darwin-universal.tar.gz2011-10-04 13:59 28M 
[   ]cmake-2.8.6-Darwin64-universal.dmg2011-10-04 13:59 29M 
[   ]cmake-2.8.6-Darwin64-universal.tar.Z2011-10-04 13:59 41M 
[   ]cmake-2.8.6-Darwin64-universal.tar.gz2011-10-04 13:59 29M 
[TXT]cmake-2.8.6-IRIX64-64.sh2011-10-04 13:59 10M 
[   ]cmake-2.8.6-IRIX64-64.tar.Z2011-10-04 13:59 15M 
[   ]cmake-2.8.6-IRIX64-64.tar.gz2011-10-04 13:59 10M 
[TXT]cmake-2.8.6-IRIX64-n32.sh2011-10-04 13:59 10M 
[   ]cmake-2.8.6-IRIX64-n32.tar.Z2011-10-04 13:59 15M 
[   ]cmake-2.8.6-IRIX64-n32.tar.gz2011-10-04 13:59 10M 
[TXT]cmake-2.8.6-Linux-i386.sh2011-10-04 13:59 16M 
[   ]cmake-2.8.6-Linux-i386.tar.Z2011-10-04 13:59 23M 
[   ]cmake-2.8.6-Linux-i386.tar.gz2011-10-04 13:58 16M 
[   ]cmake-2.8.6-win32-x86.exe2011-10-04 13:58 8.2M 
[   ]cmake-2.8.6-win32-x86.zip2011-10-04 13:58 10M 
[   ]cmake-2.8.6.tar.Z2011-10-04 13:58 8.4M 
[   ]cmake-2.8.6.tar.gz2011-10-04 13:58 5.3M 
[   ]cmake-2.8.6.zip2011-10-04 13:58 7.1M 
[   ]cmake-2.8.7-1-src.tar.bz22011-12-30 14:14 4.2M 
[   ]cmake-2.8.7-1.tar.bz22011-12-30 14:14 6.5M 
[TXT]cmake-2.8.7-AIX-powerpc.sh2012-01-03 16:51 17M 
[   ]cmake-2.8.7-AIX-powerpc.tar.Z2012-01-03 16:51 25M 
[   ]cmake-2.8.7-AIX-powerpc.tar.gz2012-01-03 16:51 17M 
[   ]cmake-2.8.7-Darwin-universal.dmg2011-12-30 14:14 29M 
[   ]cmake-2.8.7-Darwin-universal.tar.Z2011-12-30 14:14 41M 
[   ]cmake-2.8.7-Darwin-universal.tar.gz2011-12-30 14:14 28M 
[   ]cmake-2.8.7-Darwin64-universal.dmg2011-12-30 14:14 30M 
[   ]cmake-2.8.7-Darwin64-universal.tar.Z2011-12-30 14:13 42M 
[   ]cmake-2.8.7-Darwin64-universal.tar.gz2011-12-30 14:13 30M 
[TXT]cmake-2.8.7-IRIX64-64.sh2011-12-30 14:13 10M 
[   ]cmake-2.8.7-IRIX64-64.tar.Z2011-12-30 14:13 15M 
[   ]cmake-2.8.7-IRIX64-64.tar.gz2011-12-30 14:13 10M 
[TXT]cmake-2.8.7-IRIX64-n32.sh2011-12-30 14:13 10M 
[   ]cmake-2.8.7-IRIX64-n32.tar.Z2011-12-30 14:13 15M 
[   ]cmake-2.8.7-IRIX64-n32.tar.gz2011-12-30 14:13 10M 
[TXT]cmake-2.8.7-Linux-i386.sh2011-12-30 14:13 16M 
[   ]cmake-2.8.7-Linux-i386.tar.Z2011-12-30 14:13 23M 
[   ]cmake-2.8.7-Linux-i386.tar.gz2011-12-30 14:13 16M 
[   ]cmake-2.8.7-win32-x86.exe2011-12-30 14:13 8.2M 
[   ]cmake-2.8.7-win32-x86.zip2011-12-30 14:13 10M 
[   ]cmake-2.8.7.tar.Z2011-12-30 14:13 8.5M 
[   ]cmake-2.8.7.tar.gz2011-12-30 14:13 5.4M 
[   ]cmake-2.8.7.zip2011-12-30 14:13 7.2M 
[TXT]cmake-2.8.8-AIX-powerpc.sh2012-04-18 15:23 19M 
[   ]cmake-2.8.8-AIX-powerpc.tar.Z2012-04-18 15:23 27M 
[   ]cmake-2.8.8-AIX-powerpc.tar.gz2012-04-18 15:23 19M 
[   ]cmake-2.8.8-Darwin-universal.dmg2012-04-18 15:23 34M 
[   ]cmake-2.8.8-Darwin-universal.tar.Z2012-04-18 15:23 49M 
[   ]cmake-2.8.8-Darwin-universal.tar.gz2012-04-18 15:23 34M 
[   ]cmake-2.8.8-Darwin64-universal.dmg2012-04-18 15:22 32M 
[   ]cmake-2.8.8-Darwin64-universal.tar.Z2012-04-18 15:22 44M 
[   ]cmake-2.8.8-Darwin64-universal.tar.gz2012-04-18 15:22 32M 
[TXT]cmake-2.8.8-IRIX64-64.sh2012-04-18 15:22 12M 
[   ]cmake-2.8.8-IRIX64-64.tar.Z2012-04-18 15:22 17M 
[   ]cmake-2.8.8-IRIX64-64.tar.gz2012-04-18 15:22 12M 
[TXT]cmake-2.8.8-IRIX64-n32.sh2012-04-18 15:22 11M 
[   ]cmake-2.8.8-IRIX64-n32.tar.Z2012-04-18 15:22 17M 
[   ]cmake-2.8.8-IRIX64-n32.tar.gz2012-04-18 15:22 11M 
[TXT]cmake-2.8.8-Linux-i386.sh2012-04-18 15:22 18M 
[   ]cmake-2.8.8-Linux-i386.tar.Z2012-04-18 15:22 26M 
[   ]cmake-2.8.8-Linux-i386.tar.gz2012-04-18 15:22 18M 
[TXT]cmake-2.8.8-SHA-256.txt2016-04-13 12:48 2.1K 
[TXT]cmake-2.8.8-SHA-256.txt.asc2016-04-13 12:48 819  
[   ]cmake-2.8.8-win32-x86.exe2012-04-18 15:22 8.7M 
[   ]cmake-2.8.8-win32-x86.zip2012-04-18 15:22 11M 
[   ]cmake-2.8.8.tar.Z2012-04-18 15:22 8.5M 
[   ]cmake-2.8.8.tar.gz2012-04-18 15:22 5.4M 
[   ]cmake-2.8.8.zip2012-04-18 15:22 7.2M 
[TXT]cmake-2.8.9-AIX-powerpc.sh2012-08-09 15:36 19M 
[   ]cmake-2.8.9-AIX-powerpc.tar.Z2012-08-09 15:36 27M 
[   ]cmake-2.8.9-AIX-powerpc.tar.gz2012-08-09 15:36 19M 
[   ]cmake-2.8.9-Darwin-universal.dmg2012-08-09 15:36 35M 
[   ]cmake-2.8.9-Darwin-universal.tar.Z2012-08-09 15:36 50M 
[   ]cmake-2.8.9-Darwin-universal.tar.gz2012-08-09 15:36 35M 
[   ]cmake-2.8.9-Darwin64-universal.dmg2012-08-09 15:36 33M 
[   ]cmake-2.8.9-Darwin64-universal.tar.Z2012-08-09 15:35 45M 
[   ]cmake-2.8.9-Darwin64-universal.tar.gz2012-08-09 15:35 32M 
[TXT]cmake-2.8.9-IRIX64-64.sh2012-08-09 15:35 12M 
[   ]cmake-2.8.9-IRIX64-64.tar.Z2012-08-09 15:35 17M 
[   ]cmake-2.8.9-IRIX64-64.tar.gz2012-08-09 15:35 12M 
[TXT]cmake-2.8.9-IRIX64-n32.sh2012-08-09 15:35 12M 
[   ]cmake-2.8.9-IRIX64-n32.tar.Z2012-08-09 15:35 17M 
[   ]cmake-2.8.9-IRIX64-n32.tar.gz2012-08-09 15:35 12M 
[TXT]cmake-2.8.9-Linux-i386.sh2012-08-09 15:35 19M 
[   ]cmake-2.8.9-Linux-i386.tar.Z2012-08-09 15:35 26M 
[   ]cmake-2.8.9-Linux-i386.tar.gz2012-08-09 15:35 19M 
[TXT]cmake-2.8.9-SHA-256.txt2016-04-13 12:48 2.1K 
[TXT]cmake-2.8.9-SHA-256.txt.asc2016-04-13 12:48 819  
[   ]cmake-2.8.9-win32-x86.exe2012-08-09 15:35 8.9M 
[   ]cmake-2.8.9-win32-x86.zip2012-08-09 15:35 11M 
[   ]cmake-2.8.9.tar.Z2012-08-09 15:35 8.5M 
[   ]cmake-2.8.9.tar.gz2012-08-09 15:35 5.4M 
[   ]cmake-2.8.9.zip2012-08-09 15:35 7.2M 
[TXT]cmake-2.8.10-AIX-powerpc.sh2012-10-31 13:05 20M 
[   ]cmake-2.8.10-AIX-powerpc.tar.Z2012-10-31 13:05 28M 
[   ]cmake-2.8.10-AIX-powerpc.tar.gz2012-10-31 13:05 20M 
[   ]cmake-2.8.10-Darwin-universal.dmg2012-10-31 13:04 41M 
[   ]cmake-2.8.10-Darwin-universal.tar.Z2012-10-31 13:04 58M 
[   ]cmake-2.8.10-Darwin-universal.tar.gz2012-10-31 13:04 41M 
[   ]cmake-2.8.10-Darwin64-universal.dmg2012-10-31 13:04 38M 
[   ]cmake-2.8.10-Darwin64-universal.tar.Z2012-10-31 13:04 53M 
[   ]cmake-2.8.10-Darwin64-universal.tar.gz2012-10-31 13:04 38M 
[TXT]cmake-2.8.10-IRIX64-64.sh2012-10-31 13:04 12M 
[   ]cmake-2.8.10-IRIX64-64.tar.Z2012-10-31 13:04 18M 
[   ]cmake-2.8.10-IRIX64-64.tar.gz2012-10-31 13:04 12M 
[TXT]cmake-2.8.10-IRIX64-n32.sh2012-10-31 13:04 12M 
[   ]cmake-2.8.10-IRIX64-n32.tar.Z2012-10-31 13:04 17M 
[   ]cmake-2.8.10-IRIX64-n32.tar.gz2012-10-31 13:04 12M 
[TXT]cmake-2.8.10-Linux-i386.sh2012-10-31 13:04 22M 
[   ]cmake-2.8.10-Linux-i386.tar.Z2012-10-31 13:04 30M 
[   ]cmake-2.8.10-Linux-i386.tar.gz2012-10-31 13:04 22M 
[TXT]cmake-2.8.10-SHA-256.txt2016-04-13 12:48 2.1K 
[TXT]cmake-2.8.10-SHA-256.txt.asc2016-04-13 12:48 819  
[TXT]cmake-2.8.10-rc1-AIX-powerpc.sh2012-10-02 13:28 20M 
[   ]cmake-2.8.10-rc1-AIX-powerpc.tar.Z2012-10-02 13:28 28M 
[   ]cmake-2.8.10-rc1-AIX-powerpc.tar.gz2012-10-02 13:28 20M 
[   ]cmake-2.8.10-rc1-Darwin-universal.dmg2012-10-02 13:28 41M 
[   ]cmake-2.8.10-rc1-Darwin-universal.tar.Z2012-10-02 13:28 58M 
[   ]cmake-2.8.10-rc1-Darwin-universal.tar.gz2012-10-02 13:28 40M 
[   ]cmake-2.8.10-rc1-Darwin64-universal.dmg2012-10-02 13:28 38M 
[   ]cmake-2.8.10-rc1-Darwin64-universal.tar.Z2012-10-02 13:28 53M 
[   ]cmake-2.8.10-rc1-Darwin64-universal.tar.gz2012-10-02 13:28 38M 
[TXT]cmake-2.8.10-rc1-IRIX64-64.sh2012-10-02 13:27 12M 
[   ]cmake-2.8.10-rc1-IRIX64-64.tar.Z2012-10-02 13:27 18M 
[   ]cmake-2.8.10-rc1-IRIX64-64.tar.gz2012-10-02 13:27 12M 
[TXT]cmake-2.8.10-rc1-IRIX64-n32.sh2012-10-02 13:27 12M 
[   ]cmake-2.8.10-rc1-IRIX64-n32.tar.Z2012-10-02 13:27 17M 
[   ]cmake-2.8.10-rc1-IRIX64-n32.tar.gz2012-10-02 13:27 12M 
[TXT]cmake-2.8.10-rc1-Linux-i386.sh2012-10-02 13:27 22M 
[   ]cmake-2.8.10-rc1-Linux-i386.tar.Z2012-10-02 13:27 30M 
[   ]cmake-2.8.10-rc1-Linux-i386.tar.gz2012-10-02 13:27 22M 
[TXT]cmake-2.8.10-rc1-SHA-256.txt2016-04-13 12:48 2.2K 
[TXT]cmake-2.8.10-rc1-SHA-256.txt.asc2016-04-13 12:48 819  
[   ]cmake-2.8.10-rc1-win32-x86.exe2012-10-02 13:27 9.6M 
[   ]cmake-2.8.10-rc1-win32-x86.zip2012-10-02 13:27 12M 
[   ]cmake-2.8.10-rc1.tar.Z2012-10-02 13:27 8.6M 
[   ]cmake-2.8.10-rc1.tar.gz2012-10-02 13:27 5.5M 
[   ]cmake-2.8.10-rc1.zip2012-10-02 13:27 7.4M 
[TXT]cmake-2.8.10-rc2-AIX-powerpc.sh2012-10-19 09:26 20M 
[   ]cmake-2.8.10-rc2-AIX-powerpc.tar.Z2012-10-19 09:26 28M 
[   ]cmake-2.8.10-rc2-AIX-powerpc.tar.gz2012-10-19 09:26 20M 
[   ]cmake-2.8.10-rc2-Darwin-universal.dmg2012-10-19 09:26 41M 
[   ]cmake-2.8.10-rc2-Darwin-universal.tar.Z2012-10-19 09:26 58M 
[   ]cmake-2.8.10-rc2-Darwin-universal.tar.gz2012-10-19 09:26 41M 
[   ]cmake-2.8.10-rc2-Darwin64-universal.dmg2012-10-19 09:25 38M 
[   ]cmake-2.8.10-rc2-Darwin64-universal.tar.Z2012-10-19 09:25 53M 
[   ]cmake-2.8.10-rc2-Darwin64-universal.tar.gz2012-10-19 09:25 38M 
[TXT]cmake-2.8.10-rc2-IRIX64-64.sh2012-10-19 09:25 12M 
[   ]cmake-2.8.10-rc2-IRIX64-64.tar.Z2012-10-19 09:25 18M 
[   ]cmake-2.8.10-rc2-IRIX64-64.tar.gz2012-10-19 09:25 12M 
[TXT]cmake-2.8.10-rc2-IRIX64-n32.sh2012-10-19 09:25 12M 
[   ]cmake-2.8.10-rc2-IRIX64-n32.tar.Z2012-10-19 09:25 17M 
[   ]cmake-2.8.10-rc2-IRIX64-n32.tar.gz2012-10-19 09:25 12M 
[TXT]cmake-2.8.10-rc2-Linux-i386.sh2012-10-19 09:25 22M 
[   ]cmake-2.8.10-rc2-Linux-i386.tar.Z2012-10-19 09:24 30M 
[   ]cmake-2.8.10-rc2-Linux-i386.tar.gz2012-10-19 09:24 22M 
[TXT]cmake-2.8.10-rc2-SHA-256.txt2016-04-13 12:48 2.2K 
[TXT]cmake-2.8.10-rc2-SHA-256.txt.asc2016-04-13 12:48 819  
[   ]cmake-2.8.10-rc2-win32-x86.exe2012-10-19 09:24 9.6M 
[   ]cmake-2.8.10-rc2-win32-x86.zip2012-10-19 09:24 12M 
[   ]cmake-2.8.10-rc2.tar.Z2012-10-19 09:24 8.6M 
[   ]cmake-2.8.10-rc2.tar.gz2012-10-19 09:24 5.5M 
[   ]cmake-2.8.10-rc2.zip2012-10-19 09:24 7.4M 
[TXT]cmake-2.8.10-rc3-AIX-powerpc.sh2012-10-24 15:11 20M 
[   ]cmake-2.8.10-rc3-AIX-powerpc.tar.Z2012-10-24 15:11 28M 
[   ]cmake-2.8.10-rc3-AIX-powerpc.tar.gz2012-10-24 15:10 20M 
[   ]cmake-2.8.10-rc3-Darwin-universal.dmg2012-10-24 15:10 41M 
[   ]cmake-2.8.10-rc3-Darwin-universal.tar.Z2012-10-24 15:10 58M 
[   ]cmake-2.8.10-rc3-Darwin-universal.tar.gz2012-10-24 15:10 41M 
[   ]cmake-2.8.10-rc3-Darwin64-universal.dmg2012-10-24 15:10 38M 
[   ]cmake-2.8.10-rc3-Darwin64-universal.tar.Z2012-10-24 15:10 53M 
[   ]cmake-2.8.10-rc3-Darwin64-universal.tar.gz2012-10-24 15:10 38M 
[TXT]cmake-2.8.10-rc3-IRIX64-64.sh2012-10-24 15:10 12M 
[   ]cmake-2.8.10-rc3-IRIX64-64.tar.Z2012-10-24 15:10 18M 
[   ]cmake-2.8.10-rc3-IRIX64-64.tar.gz2012-10-24 15:10 12M 
[TXT]cmake-2.8.10-rc3-IRIX64-n32.sh2012-10-24 15:10 12M 
[   ]cmake-2.8.10-rc3-IRIX64-n32.tar.Z2012-10-24 15:10 17M 
[   ]cmake-2.8.10-rc3-IRIX64-n32.tar.gz2012-10-24 15:10 12M 
[TXT]cmake-2.8.10-rc3-Linux-i386.sh2012-10-24 15:10 22M 
[   ]cmake-2.8.10-rc3-Linux-i386.tar.Z2012-10-24 15:10 30M 
[   ]cmake-2.8.10-rc3-Linux-i386.tar.gz2012-10-24 15:10 22M 
[TXT]cmake-2.8.10-rc3-SHA-256.txt2016-04-13 12:48 2.2K 
[TXT]cmake-2.8.10-rc3-SHA-256.txt.asc2016-04-13 12:48 819  
[   ]cmake-2.8.10-rc3-win32-x86.exe2012-10-24 15:10 9.6M 
[   ]cmake-2.8.10-rc3-win32-x86.zip2012-10-24 15:09 12M 
[   ]cmake-2.8.10-rc3.tar.Z2012-10-24 15:09 8.7M 
[   ]cmake-2.8.10-rc3.tar.gz2012-10-24 15:09 5.5M 
[   ]cmake-2.8.10-rc3.zip2012-10-24 15:09 7.4M 
[   ]cmake-2.8.10-win32-x86.exe2012-10-31 13:04 9.6M 
[   ]cmake-2.8.10-win32-x86.zip2012-10-31 13:04 12M 
[TXT]cmake-2.8.10.1-AIX-powerpc.sh2012-11-07 11:48 20M 
[   ]cmake-2.8.10.1-AIX-powerpc.tar.Z2012-11-07 11:48 28M 
[   ]cmake-2.8.10.1-AIX-powerpc.tar.gz2012-11-07 11:48 20M 
[   ]cmake-2.8.10.1-Darwin-universal.dmg2012-11-07 11:48 41M 
[   ]cmake-2.8.10.1-Darwin-universal.tar.Z2012-11-07 11:48 58M 
[   ]cmake-2.8.10.1-Darwin-universal.tar.gz2012-11-07 11:48 41M 
[   ]cmake-2.8.10.1-Darwin64-universal.dmg2012-11-07 11:48 38M 
[   ]cmake-2.8.10.1-Darwin64-universal.tar.Z2012-11-07 11:48 53M 
[   ]cmake-2.8.10.1-Darwin64-universal.tar.gz2012-11-07 11:48 38M 
[TXT]cmake-2.8.10.1-IRIX64-64.sh2012-11-07 11:48 12M 
[   ]cmake-2.8.10.1-IRIX64-64.tar.Z2012-11-07 11:48 18M 
[   ]cmake-2.8.10.1-IRIX64-64.tar.gz2012-11-07 11:48 12M 
[TXT]cmake-2.8.10.1-IRIX64-n32.sh2012-11-07 11:47 12M 
[   ]cmake-2.8.10.1-IRIX64-n32.tar.Z2012-11-07 11:47 17M 
[   ]cmake-2.8.10.1-IRIX64-n32.tar.gz2012-11-07 11:47 12M 
[TXT]cmake-2.8.10.1-Linux-i386.sh2012-11-07 11:47 22M 
[   ]cmake-2.8.10.1-Linux-i386.tar.Z2012-11-07 11:47 30M 
[   ]cmake-2.8.10.1-Linux-i386.tar.gz2012-11-07 11:47 22M 
[TXT]cmake-2.8.10.1-SHA-256.txt2016-04-13 12:48 2.2K 
[TXT]cmake-2.8.10.1-SHA-256.txt.asc2016-04-13 12:48 819  
[   ]cmake-2.8.10.1-win32-x86.exe2012-11-07 11:47 9.6M 
[   ]cmake-2.8.10.1-win32-x86.zip2012-11-07 11:47 12M 
[   ]cmake-2.8.10.1.tar.Z2012-11-07 11:47 8.6M 
[   ]cmake-2.8.10.1.tar.gz2012-11-07 11:47 5.5M 
[   ]cmake-2.8.10.1.zip2012-11-07 11:47 7.4M 
[TXT]cmake-2.8.10.2-AIX-powerpc.sh2012-11-27 15:05 20M 
[   ]cmake-2.8.10.2-AIX-powerpc.tar.Z2012-11-27 15:05 28M 
[   ]cmake-2.8.10.2-AIX-powerpc.tar.gz2012-11-27 15:04 20M 
[   ]cmake-2.8.10.2-Darwin-universal.dmg2012-11-27 15:04 41M 
[   ]cmake-2.8.10.2-Darwin-universal.tar.Z2012-11-27 15:04 58M 
[   ]cmake-2.8.10.2-Darwin-universal.tar.gz2012-11-27 15:04 41M 
[   ]cmake-2.8.10.2-Darwin64-universal.dmg2012-11-27 15:04 38M 
[   ]cmake-2.8.10.2-Darwin64-universal.tar.Z2012-11-27 15:04 53M 
[   ]cmake-2.8.10.2-Darwin64-universal.tar.gz2012-11-27 15:04 38M 
[TXT]cmake-2.8.10.2-IRIX64-64.sh2012-11-27 15:04 12M 
[   ]cmake-2.8.10.2-IRIX64-64.tar.Z2012-11-27 15:04 18M 
[   ]cmake-2.8.10.2-IRIX64-64.tar.gz2012-11-27 15:04 12M 
[TXT]cmake-2.8.10.2-IRIX64-n32.sh2012-11-27 15:04 12M 
[   ]cmake-2.8.10.2-IRIX64-n32.tar.Z2012-11-27 15:04 17M 
[   ]cmake-2.8.10.2-IRIX64-n32.tar.gz2012-11-27 15:04 12M 
[TXT]cmake-2.8.10.2-Linux-i386.sh2012-11-27 15:04 22M 
[   ]cmake-2.8.10.2-Linux-i386.tar.Z2012-11-27 15:04 30M 
[   ]cmake-2.8.10.2-Linux-i386.tar.gz2012-11-27 15:04 22M 
[TXT]cmake-2.8.10.2-SHA-256.txt2016-04-13 12:48 2.2K 
[TXT]cmake-2.8.10.2-SHA-256.txt.asc2016-04-13 12:48 819  
[   ]cmake-2.8.10.2-win32-x86.exe2012-11-27 15:04 9.6M 
[   ]cmake-2.8.10.2-win32-x86.zip2012-11-27 15:03 12M 
[   ]cmake-2.8.10.2.tar.Z2012-11-27 15:03 8.7M 
[   ]cmake-2.8.10.2.tar.gz2012-11-27 15:03 5.5M 
[   ]cmake-2.8.10.2.zip2012-11-27 15:03 7.4M 
[   ]cmake-2.8.10.tar.Z2012-10-31 13:03 8.7M 
[   ]cmake-2.8.10.tar.gz2012-10-31 13:03 5.5M 
[   ]cmake-2.8.10.zip2012-10-31 13:03 7.4M 
[TXT]cmake-2.8.11-AIX-powerpc.sh2013-06-07 14:42 21M 
[   ]cmake-2.8.11-AIX-powerpc.tar.Z2013-06-07 14:42 30M 
[   ]cmake-2.8.11-AIX-powerpc.tar.gz2013-06-07 14:42 21M 
[   ]cmake-2.8.11-Darwin-universal.dmg2013-05-15 15:54 42M 
[   ]cmake-2.8.11-Darwin-universal.tar.Z2013-05-15 15:54 59M 
[   ]cmake-2.8.11-Darwin-universal.tar.gz2013-05-15 15:54 42M 
[   ]cmake-2.8.11-Darwin64-universal.dmg2013-05-15 15:54 39M 
[   ]cmake-2.8.11-Darwin64-universal.tar.Z2013-05-15 15:54 55M 
[   ]cmake-2.8.11-Darwin64-universal.tar.gz2013-05-15 15:54 39M 
[TXT]cmake-2.8.11-IRIX64-64.sh2013-05-15 15:53 13M 
[   ]cmake-2.8.11-IRIX64-64.tar.Z2013-05-15 15:53 19M 
[   ]cmake-2.8.11-IRIX64-64.tar.gz2013-05-15 15:53 13M 
[TXT]cmake-2.8.11-IRIX64-n32.sh2013-05-15 15:53 12M 
[   ]cmake-2.8.11-IRIX64-n32.tar.Z2013-05-15 15:53 18M 
[   ]cmake-2.8.11-IRIX64-n32.tar.gz2013-05-15 15:53 12M 
[TXT]cmake-2.8.11-Linux-i386.sh2013-05-15 15:53 23M 
[   ]cmake-2.8.11-Linux-i386.tar.Z2013-05-15 15:53 31M 
[   ]cmake-2.8.11-Linux-i386.tar.gz2013-05-15 15:53 23M 
[TXT]cmake-2.8.11-SHA-256.txt2016-04-13 12:48 2.4K 
[TXT]cmake-2.8.11-SHA-256.txt.asc2016-04-13 12:48 819  
[TXT]cmake-2.8.11-rc1-AIX-powerpc.sh2013-03-14 17:16 21M 
[   ]cmake-2.8.11-rc1-AIX-powerpc.tar.Z2013-03-14 17:16 30M 
[   ]cmake-2.8.11-rc1-AIX-powerpc.tar.gz2013-03-14 17:16 21M 
[   ]cmake-2.8.11-rc1-Darwin-universal.dmg2013-03-14 17:16 42M 
[   ]cmake-2.8.11-rc1-Darwin-universal.tar.Z2013-03-14 17:16 59M 
[   ]cmake-2.8.11-rc1-Darwin-universal.tar.gz2013-03-14 17:16 41M 
[   ]cmake-2.8.11-rc1-Darwin64-universal.dmg2013-03-14 17:15 39M 
[   ]cmake-2.8.11-rc1-Darwin64-universal.tar.Z2013-03-14 17:15 55M 
[   ]cmake-2.8.11-rc1-Darwin64-universal.tar.gz2013-03-14 17:15 39M 
[TXT]cmake-2.8.11-rc1-IRIX64-64.sh2013-03-14 17:15 13M 
[   ]cmake-2.8.11-rc1-IRIX64-64.tar.Z2013-03-14 17:15 19M 
[   ]cmake-2.8.11-rc1-IRIX64-64.tar.gz2013-03-14 17:15 13M 
[TXT]cmake-2.8.11-rc1-IRIX64-n32.sh2013-03-14 17:15 12M 
[   ]cmake-2.8.11-rc1-IRIX64-n32.tar.Z2013-03-14 17:15 18M 
[   ]cmake-2.8.11-rc1-IRIX64-n32.tar.gz2013-03-14 17:15 12M 
[TXT]cmake-2.8.11-rc1-Linux-i386.sh2013-03-14 17:15 23M 
[   ]cmake-2.8.11-rc1-Linux-i386.tar.Z2013-03-14 17:15 31M 
[   ]cmake-2.8.11-rc1-Linux-i386.tar.gz2013-03-14 17:15 23M 
[TXT]cmake-2.8.11-rc1-SHA-256.txt2016-04-13 12:48 2.2K 
[TXT]cmake-2.8.11-rc1-SHA-256.txt.asc2016-04-13 12:48 819  
[   ]cmake-2.8.11-rc1-win32-x86.exe2013-03-14 17:15 9.9M 
[   ]cmake-2.8.11-rc1-win32-x86.zip2013-03-14 17:14 12M 
[   ]cmake-2.8.11-rc1.tar.Z2013-03-14 17:14 8.8M 
[   ]cmake-2.8.11-rc1.tar.gz2013-03-14 17:14 5.6M 
[   ]cmake-2.8.11-rc1.zip2013-03-14 17:14 7.6M 
[TXT]cmake-2.8.11-rc2-AIX-powerpc.sh2013-04-05 18:01 21M 
[   ]cmake-2.8.11-rc2-AIX-powerpc.tar.Z2013-04-05 18:01 30M 
[   ]cmake-2.8.11-rc2-AIX-powerpc.tar.gz2013-04-05 18:01 21M 
[   ]cmake-2.8.11-rc2-Darwin-universal.dmg2013-04-05 18:01 42M 
[   ]cmake-2.8.11-rc2-Darwin-universal.tar.Z2013-04-05 18:01 59M 
[   ]cmake-2.8.11-rc2-Darwin-universal.tar.gz2013-04-05 18:01 42M 
[   ]cmake-2.8.11-rc2-Darwin64-universal.dmg2013-04-05 18:01 39M 
[   ]cmake-2.8.11-rc2-Darwin64-universal.tar.Z2013-04-05 18:01 55M 
[   ]cmake-2.8.11-rc2-Darwin64-universal.tar.gz2013-04-05 18:01 39M 
[TXT]cmake-2.8.11-rc2-IRIX64-64.sh2013-04-05 18:01 13M 
[   ]cmake-2.8.11-rc2-IRIX64-64.tar.Z2013-04-05 18:01 19M 
[   ]cmake-2.8.11-rc2-IRIX64-64.tar.gz2013-04-05 18:01 13M 
[TXT]cmake-2.8.11-rc2-IRIX64-n32.sh2013-04-05 18:01 12M 
[   ]cmake-2.8.11-rc2-IRIX64-n32.tar.Z2013-04-05 18:01 18M 
[   ]cmake-2.8.11-rc2-IRIX64-n32.tar.gz2013-04-05 18:00 12M 
[TXT]cmake-2.8.11-rc2-Linux-i386.sh2013-04-05 18:00 23M 
[   ]cmake-2.8.11-rc2-Linux-i386.tar.Z2013-04-05 18:00 31M 
[   ]cmake-2.8.11-rc2-Linux-i386.tar.gz2013-04-05 18:00 23M 
[TXT]cmake-2.8.11-rc2-SHA-256.txt2016-04-13 12:48 2.2K 
[TXT]cmake-2.8.11-rc2-SHA-256.txt.asc2016-04-13 12:48 819  
[   ]cmake-2.8.11-rc2-win32-x86.exe2013-04-05 18:00 9.9M 
[   ]cmake-2.8.11-rc2-win32-x86.zip2013-04-05 18:00 12M 
[   ]cmake-2.8.11-rc2.tar.Z2013-04-05 18:00 8.8M 
[   ]cmake-2.8.11-rc2.tar.gz2013-04-05 18:00 5.6M 
[   ]cmake-2.8.11-rc2.zip2013-04-05 18:00 7.6M 
[TXT]cmake-2.8.11-rc3-AIX-powerpc.sh2013-04-18 17:33 21M 
[   ]cmake-2.8.11-rc3-AIX-powerpc.tar.Z2013-04-18 17:33 30M 
[   ]cmake-2.8.11-rc3-AIX-powerpc.tar.gz2013-04-18 17:33 21M 
[   ]cmake-2.8.11-rc3-Darwin-universal.dmg2013-04-18 17:33 42M 
[   ]cmake-2.8.11-rc3-Darwin-universal.tar.Z2013-04-18 17:33 59M 
[   ]cmake-2.8.11-rc3-Darwin-universal.tar.gz2013-04-18 17:33 42M 
[   ]cmake-2.8.11-rc3-Darwin64-universal.dmg2013-04-18 17:33 39M 
[   ]cmake-2.8.11-rc3-Darwin64-universal.tar.Z2013-04-18 17:33 55M 
[   ]cmake-2.8.11-rc3-Darwin64-universal.tar.gz2013-04-18 17:33 39M 
[TXT]cmake-2.8.11-rc3-IRIX64-64.sh2013-04-18 17:33 13M 
[   ]cmake-2.8.11-rc3-IRIX64-64.tar.Z2013-04-18 17:33 19M 
[   ]cmake-2.8.11-rc3-IRIX64-64.tar.gz2013-04-18 17:33 13M 
[TXT]cmake-2.8.11-rc3-IRIX64-n32.sh2013-04-18 17:33 12M 
[   ]cmake-2.8.11-rc3-IRIX64-n32.tar.Z2013-04-18 17:33 18M 
[   ]cmake-2.8.11-rc3-IRIX64-n32.tar.gz2013-04-18 17:33 12M 
[TXT]cmake-2.8.11-rc3-Linux-i386.sh2013-04-18 17:32 23M 
[   ]cmake-2.8.11-rc3-Linux-i386.tar.Z2013-04-18 17:32 31M 
[   ]cmake-2.8.11-rc3-Linux-i386.tar.gz2013-04-18 17:32 23M 
[TXT]cmake-2.8.11-rc3-SHA-256.txt2016-04-13 12:48 2.2K 
[TXT]cmake-2.8.11-rc3-SHA-256.txt.asc2016-04-13 12:48 819  
[   ]cmake-2.8.11-rc3-win32-x86.exe2013-04-18 17:32 9.9M 
[   ]cmake-2.8.11-rc3-win32-x86.zip2013-04-18 17:32 12M 
[   ]cmake-2.8.11-rc3.tar.Z2013-04-18 17:32 8.8M 
[   ]cmake-2.8.11-rc3.tar.gz2013-04-18 17:32 5.6M 
[   ]cmake-2.8.11-rc3.zip2013-04-18 17:32 7.6M 
[TXT]cmake-2.8.11-rc4-AIX-powerpc.sh2013-05-08 09:54 21M 
[   ]cmake-2.8.11-rc4-AIX-powerpc.tar.Z2013-05-08 09:54 30M 
[   ]cmake-2.8.11-rc4-AIX-powerpc.tar.gz2013-05-08 09:54 21M 
[   ]cmake-2.8.11-rc4-Darwin-universal.dmg2013-05-08 09:54 42M 
[   ]cmake-2.8.11-rc4-Darwin-universal.tar.Z2013-05-08 09:54 59M 
[   ]cmake-2.8.11-rc4-Darwin-universal.tar.gz2013-05-08 09:54 42M 
[   ]cmake-2.8.11-rc4-Darwin64-universal.dmg2013-05-08 09:54 39M 
[   ]cmake-2.8.11-rc4-Darwin64-universal.tar.Z2013-05-08 09:54 55M 
[   ]cmake-2.8.11-rc4-Darwin64-universal.tar.gz2013-05-08 09:54 39M 
[TXT]cmake-2.8.11-rc4-IRIX64-64.sh2013-05-08 09:54 13M 
[   ]cmake-2.8.11-rc4-IRIX64-64.tar.Z2013-05-08 09:54 19M 
[   ]cmake-2.8.11-rc4-IRIX64-64.tar.gz2013-05-08 09:53 13M 
[TXT]cmake-2.8.11-rc4-IRIX64-n32.sh2013-05-08 09:53 12M 
[   ]cmake-2.8.11-rc4-IRIX64-n32.tar.Z2013-05-08 09:53 18M 
[   ]cmake-2.8.11-rc4-IRIX64-n32.tar.gz2013-05-08 09:53 12M 
[TXT]cmake-2.8.11-rc4-Linux-i386.sh2013-05-08 09:53 23M 
[   ]cmake-2.8.11-rc4-Linux-i386.tar.Z2013-05-08 09:53 31M 
[   ]cmake-2.8.11-rc4-Linux-i386.tar.gz2013-05-08 09:53 23M 
[TXT]cmake-2.8.11-rc4-SHA-256.txt2016-04-13 12:48 2.2K 
[TXT]cmake-2.8.11-rc4-SHA-256.txt.asc2016-04-13 12:48 819  
[   ]cmake-2.8.11-rc4-win32-x86.exe2013-05-08 09:53 9.9M 
[   ]cmake-2.8.11-rc4-win32-x86.zip2013-05-08 09:53 12M 
[   ]cmake-2.8.11-rc4.tar.Z2013-05-08 09:53 8.9M 
[   ]cmake-2.8.11-rc4.tar.gz2013-05-08 09:53 5.6M 
[   ]cmake-2.8.11-rc4.zip2013-05-08 09:53 7.6M 
[   ]cmake-2.8.11-win32-x86.exe2013-05-15 15:53 9.9M 
[   ]cmake-2.8.11-win32-x86.zip2013-05-15 15:53 12M 
[TXT]cmake-2.8.11.1-AIX-powerpc.sh2013-06-07 14:41 21M 
[   ]cmake-2.8.11.1-AIX-powerpc.tar.Z2013-06-07 14:41 30M 
[   ]cmake-2.8.11.1-AIX-powerpc.tar.gz2013-06-07 14:41 21M 
[   ]cmake-2.8.11.1-Darwin-universal.dmg2013-06-07 14:41 42M 
[   ]cmake-2.8.11.1-Darwin-universal.tar.Z2013-06-07 14:41 59M 
[   ]cmake-2.8.11.1-Darwin-universal.tar.gz2013-06-07 14:41 42M 
[   ]cmake-2.8.11.1-Darwin64-universal.dmg2013-06-07 14:41 39M 
[   ]cmake-2.8.11.1-Darwin64-universal.tar.Z2013-06-07 14:41 55M 
[   ]cmake-2.8.11.1-Darwin64-universal.tar.gz2013-06-07 14:41 39M 
[TXT]cmake-2.8.11.1-IRIX64-64.sh2013-06-07 14:41 13M 
[   ]cmake-2.8.11.1-IRIX64-64.tar.Z2013-06-07 14:41 19M 
[   ]cmake-2.8.11.1-IRIX64-64.tar.gz2013-06-07 14:41 13M 
[TXT]cmake-2.8.11.1-IRIX64-n32.sh2013-06-07 14:41 12M 
[   ]cmake-2.8.11.1-IRIX64-n32.tar.Z2013-06-07 14:41 18M 
[   ]cmake-2.8.11.1-IRIX64-n32.tar.gz2013-06-07 14:41 12M 
[TXT]cmake-2.8.11.1-Linux-i386.sh2013-06-07 14:41 23M 
[   ]cmake-2.8.11.1-Linux-i386.tar.Z2013-06-07 14:40 31M 
[   ]cmake-2.8.11.1-Linux-i386.tar.gz2013-06-07 14:40 23M 
[TXT]cmake-2.8.11.1-SHA-256.txt2016-04-13 12:48 2.2K 
[TXT]cmake-2.8.11.1-SHA-256.txt.asc2016-04-13 12:48 819  
[   ]cmake-2.8.11.1-win32-x86.exe2013-06-07 14:40 9.9M 
[   ]cmake-2.8.11.1-win32-x86.zip2013-06-07 14:40 12M 
[   ]cmake-2.8.11.1.tar.Z2013-06-07 14:40 8.9M 
[   ]cmake-2.8.11.1.tar.gz2013-06-07 14:40 5.6M 
[   ]cmake-2.8.11.1.zip2013-06-07 14:40 7.6M 
[TXT]cmake-2.8.11.2-AIX-powerpc.sh2013-07-03 11:53 21M 
[   ]cmake-2.8.11.2-AIX-powerpc.tar.Z2013-07-03 11:53 30M 
[   ]cmake-2.8.11.2-AIX-powerpc.tar.gz2013-07-03 11:53 21M 
[   ]cmake-2.8.11.2-Darwin-universal.dmg2013-07-03 11:53 42M 
[   ]cmake-2.8.11.2-Darwin-universal.tar.Z2013-07-03 11:53 59M 
[   ]cmake-2.8.11.2-Darwin-universal.tar.gz2013-07-03 11:53 42M 
[   ]cmake-2.8.11.2-Darwin64-universal.dmg2013-07-03 11:53 39M 
[   ]cmake-2.8.11.2-Darwin64-universal.tar.Z2013-07-03 11:53 55M 
[   ]cmake-2.8.11.2-Darwin64-universal.tar.gz2013-07-03 11:53 39M 
[TXT]cmake-2.8.11.2-IRIX64-64.sh2013-07-03 11:53 13M 
[   ]cmake-2.8.11.2-IRIX64-64.tar.Z2013-07-03 11:53 19M 
[   ]cmake-2.8.11.2-IRIX64-64.tar.gz2013-07-03 11:52 13M 
[TXT]cmake-2.8.11.2-IRIX64-n32.sh2013-07-03 11:52 12M 
[   ]cmake-2.8.11.2-IRIX64-n32.tar.Z2013-07-03 11:52 18M 
[   ]cmake-2.8.11.2-IRIX64-n32.tar.gz2013-07-03 11:52 12M 
[TXT]cmake-2.8.11.2-Linux-i386.sh2013-07-03 11:52 23M 
[   ]cmake-2.8.11.2-Linux-i386.tar.Z2013-07-03 11:52 31M 
[   ]cmake-2.8.11.2-Linux-i386.tar.gz2013-07-03 11:52 23M 
[TXT]cmake-2.8.11.2-SHA-256.txt2016-04-13 12:48 2.2K 
[TXT]cmake-2.8.11.2-SHA-256.txt.asc2016-04-13 12:48 819  
[   ]cmake-2.8.11.2-win32-x86.exe2013-07-03 11:52 9.9M 
[   ]cmake-2.8.11.2-win32-x86.zip2013-07-03 11:52 12M 
[   ]cmake-2.8.11.2.tar.Z2013-07-03 11:52 8.9M 
[   ]cmake-2.8.11.2.tar.gz2013-07-03 11:52 5.6M 
[   ]cmake-2.8.11.2.zip2013-07-03 11:52 7.6M 
[   ]cmake-2.8.11.tar.Z2013-05-15 15:53 8.9M 
[   ]cmake-2.8.11.tar.gz2013-05-15 15:53 5.6M 
[   ]cmake-2.8.11.zip2013-05-15 15:53 7.6M 
[TXT]cmake-2.8.12-AIX-powerpc.sh2013-10-07 14:34 22M 
[   ]cmake-2.8.12-AIX-powerpc.tar.Z2013-10-07 14:34 32M 
[   ]cmake-2.8.12-AIX-powerpc.tar.gz2013-10-07 14:34 22M 
[   ]cmake-2.8.12-Darwin-universal.dmg2013-10-07 14:34 43M 
[   ]cmake-2.8.12-Darwin-universal.tar.Z2013-10-07 14:33 61M 
[   ]cmake-2.8.12-Darwin-universal.tar.gz2013-10-07 14:33 43M 
[   ]cmake-2.8.12-Darwin64-universal.dmg2013-10-07 14:33 41M 
[   ]cmake-2.8.12-Darwin64-universal.tar.Z2013-10-07 14:33 57M 
[   ]cmake-2.8.12-Darwin64-universal.tar.gz2013-10-07 14:33 40M 
[TXT]cmake-2.8.12-IRIX64-64.sh2013-10-07 14:33 13M 
[   ]cmake-2.8.12-IRIX64-64.tar.Z2013-10-07 14:33 20M 
[   ]cmake-2.8.12-IRIX64-64.tar.gz2013-10-07 14:33 13M 
[TXT]cmake-2.8.12-IRIX64-n32.sh2013-10-07 14:33 13M 
[   ]cmake-2.8.12-IRIX64-n32.tar.Z2013-10-07 14:33 19M 
[   ]cmake-2.8.12-IRIX64-n32.tar.gz2013-10-07 14:33 13M 
[TXT]cmake-2.8.12-Linux-i386.sh2013-10-07 14:33 24M 
[   ]cmake-2.8.12-Linux-i386.tar.Z2013-10-07 14:33 33M 
[   ]cmake-2.8.12-Linux-i386.tar.gz2013-10-07 14:33 24M 
[TXT]cmake-2.8.12-SHA-256.txt2016-04-13 12:48 2.1K 
[TXT]cmake-2.8.12-SHA-256.txt.asc2016-04-13 12:48 819  
[TXT]cmake-2.8.12-rc1-AIX-powerpc.sh2013-08-19 08:54 22M 
[   ]cmake-2.8.12-rc1-AIX-powerpc.tar.Z2013-08-19 08:54 32M 
[   ]cmake-2.8.12-rc1-AIX-powerpc.tar.gz2013-08-19 08:54 22M 
[   ]cmake-2.8.12-rc1-Darwin-universal.dmg2013-08-19 08:54 43M 
[   ]cmake-2.8.12-rc1-Darwin-universal.tar.Z2013-08-19 08:53 61M 
[   ]cmake-2.8.12-rc1-Darwin-universal.tar.gz2013-08-19 08:53 43M 
[   ]cmake-2.8.12-rc1-Darwin64-universal.dmg2013-08-19 08:53 40M 
[   ]cmake-2.8.12-rc1-Darwin64-universal.tar.Z2013-08-19 08:53 57M 
[   ]cmake-2.8.12-rc1-Darwin64-universal.tar.gz2013-08-19 08:53 40M 
[TXT]cmake-2.8.12-rc1-IRIX64-64.sh2013-08-19 08:53 13M 
[   ]cmake-2.8.12-rc1-IRIX64-64.tar.Z2013-08-19 08:53 20M 
[   ]cmake-2.8.12-rc1-IRIX64-64.tar.gz2013-08-19 08:53 13M 
[TXT]cmake-2.8.12-rc1-IRIX64-n32.sh2013-08-19 08:53 13M 
[   ]cmake-2.8.12-rc1-IRIX64-n32.tar.Z2013-08-19 08:53 19M 
[   ]cmake-2.8.12-rc1-IRIX64-n32.tar.gz2013-08-19 08:53 13M 
[TXT]cmake-2.8.12-rc1-Linux-i386.sh2013-08-19 08:52 24M 
[   ]cmake-2.8.12-rc1-Linux-i386.tar.Z2013-08-19 08:52 33M 
[   ]cmake-2.8.12-rc1-Linux-i386.tar.gz2013-08-19 08:52 24M 
[TXT]cmake-2.8.12-rc1-SHA-256.txt2016-04-13 12:48 2.2K 
[TXT]cmake-2.8.12-rc1-SHA-256.txt.asc2016-04-13 12:48 819  
[   ]cmake-2.8.12-rc1-win32-x86.exe2013-08-19 08:52 10M 
[   ]cmake-2.8.12-rc1-win32-x86.zip2013-08-19 08:52 13M 
[   ]cmake-2.8.12-rc1.tar.Z2013-08-19 08:52 9.1M 
[   ]cmake-2.8.12-rc1.tar.gz2013-08-19 08:52 5.8M 
[   ]cmake-2.8.12-rc1.zip2013-08-19 08:52 8.0M 
[TXT]cmake-2.8.12-rc2-AIX-powerpc.sh2013-08-30 15:59 22M 
[   ]cmake-2.8.12-rc2-AIX-powerpc.tar.Z2013-08-30 15:59 32M 
[   ]cmake-2.8.12-rc2-AIX-powerpc.tar.gz2013-08-30 15:59 22M 
[   ]cmake-2.8.12-rc2-Darwin-universal.dmg2013-08-30 15:59 43M 
[   ]cmake-2.8.12-rc2-Darwin-universal.tar.Z2013-08-30 15:59 61M 
[   ]cmake-2.8.12-rc2-Darwin-universal.tar.gz2013-08-30 15:59 43M 
[   ]cmake-2.8.12-rc2-Darwin64-universal.dmg2013-08-30 15:59 40M 
[   ]cmake-2.8.12-rc2-Darwin64-universal.tar.Z2013-08-30 15:59 57M 
[   ]cmake-2.8.12-rc2-Darwin64-universal.tar.gz2013-08-30 15:58 40M 
[   ]cmake-2.8.12-rc2-IRIX64-64.tar.Z2013-08-30 15:58 20M 
[   ]cmake-2.8.12-rc2-IRIX64-64.tar.gz2013-08-30 15:58 13M 
[TXT]cmake-2.8.12-rc2-IRIX64-n32.sh2013-08-30 15:58 13M 
[   ]cmake-2.8.12-rc2-IRIX64-n32.tar.Z2013-08-30 15:58 19M 
[   ]cmake-2.8.12-rc2-IRIX64-n32.tar.gz2013-08-30 15:58 13M 
[TXT]cmake-2.8.12-rc2-Linux-i386.sh2013-08-30 15:58 24M 
[   ]cmake-2.8.12-rc2-Linux-i386.tar.Z2013-08-30 15:58 33M 
[   ]cmake-2.8.12-rc2-Linux-i386.tar.gz2013-08-30 15:58 24M 
[TXT]cmake-2.8.12-rc2-SHA-256.txt2016-04-13 12:48 2.1K 
[TXT]cmake-2.8.12-rc2-SHA-256.txt.asc2016-04-13 12:48 819  
[   ]cmake-2.8.12-rc2-win32-x86.exe2013-08-30 15:58 10M 
[   ]cmake-2.8.12-rc2-win32-x86.zip2013-08-30 15:58 13M 
[   ]cmake-2.8.12-rc2.tar.Z2013-08-30 15:58 9.2M 
[   ]cmake-2.8.12-rc2.tar.gz2013-08-30 15:58 5.8M 
[   ]cmake-2.8.12-rc2.zip2013-08-30 15:58 8.0M 
[TXT]cmake-2.8.12-rc3-AIX-powerpc.sh2013-09-10 15:39 22M 
[   ]cmake-2.8.12-rc3-AIX-powerpc.tar.Z2013-09-10 15:39 32M 
[   ]cmake-2.8.12-rc3-AIX-powerpc.tar.gz2013-09-10 15:39 22M 
[   ]cmake-2.8.12-rc3-Darwin-universal.dmg2013-09-10 15:39 43M 
[   ]cmake-2.8.12-rc3-Darwin-universal.tar.Z2013-09-10 15:39 61M 
[   ]cmake-2.8.12-rc3-Darwin-universal.tar.gz2013-09-10 15:39 43M 
[   ]cmake-2.8.12-rc3-Darwin64-universal.dmg2013-09-10 15:39 41M 
[   ]cmake-2.8.12-rc3-Darwin64-universal.tar.Z2013-09-10 15:39 57M 
[   ]cmake-2.8.12-rc3-Darwin64-universal.tar.gz2013-09-10 15:39 40M 
[TXT]cmake-2.8.12-rc3-Linux-i386.sh2013-09-10 15:39 24M 
[   ]cmake-2.8.12-rc3-Linux-i386.tar.Z2013-09-10 15:39 33M 
[   ]cmake-2.8.12-rc3-Linux-i386.tar.gz2013-09-10 15:39 24M 
[TXT]cmake-2.8.12-rc3-SHA-256.txt2016-04-13 12:48 1.7K 
[TXT]cmake-2.8.12-rc3-SHA-256.txt.asc2016-04-13 12:48 819  
[   ]cmake-2.8.12-rc3-win32-x86.exe2013-09-10 15:39 10M 
[   ]cmake-2.8.12-rc3-win32-x86.zip2013-09-10 15:38 13M 
[   ]cmake-2.8.12-rc3.tar.Z2013-09-10 15:38 9.1M 
[   ]cmake-2.8.12-rc3.tar.gz2013-09-10 15:38 5.8M 
[   ]cmake-2.8.12-rc3.zip2013-09-10 15:38 8.0M 
[TXT]cmake-2.8.12-rc4-AIX-powerpc.sh2013-10-01 16:23 22M 
[   ]cmake-2.8.12-rc4-AIX-powerpc.tar.Z2013-10-01 16:23 32M 
[   ]cmake-2.8.12-rc4-AIX-powerpc.tar.gz2013-10-01 16:23 22M 
[   ]cmake-2.8.12-rc4-Darwin-universal.dmg2013-10-01 16:23 43M 
[   ]cmake-2.8.12-rc4-Darwin-universal.tar.Z2013-10-01 16:23 61M 
[   ]cmake-2.8.12-rc4-Darwin-universal.tar.gz2013-10-01 16:23 43M 
[   ]cmake-2.8.12-rc4-Darwin64-universal.dmg2013-10-01 16:23 40M 
[   ]cmake-2.8.12-rc4-Darwin64-universal.tar.Z2013-10-01 16:23 57M 
[   ]cmake-2.8.12-rc4-Darwin64-universal.tar.gz2013-10-01 16:23 40M 
[TXT]cmake-2.8.12-rc4-IRIX64-64.sh2013-10-01 16:23 13M 
[   ]cmake-2.8.12-rc4-IRIX64-64.tar.Z2013-10-01 16:23 20M 
[   ]cmake-2.8.12-rc4-IRIX64-64.tar.gz2013-10-01 16:23 13M 
[TXT]cmake-2.8.12-rc4-IRIX64-n32.sh2013-10-01 16:23 13M 
[   ]cmake-2.8.12-rc4-IRIX64-n32.tar.Z2013-10-01 16:23 19M 
[   ]cmake-2.8.12-rc4-IRIX64-n32.tar.gz2013-10-01 16:23 13M 
[TXT]cmake-2.8.12-rc4-Linux-i386.sh2013-10-01 16:23 24M 
[   ]cmake-2.8.12-rc4-Linux-i386.tar.Z2013-10-01 16:23 33M 
[   ]cmake-2.8.12-rc4-Linux-i386.tar.gz2013-10-01 16:23 24M 
[TXT]cmake-2.8.12-rc4-SHA-256.txt2016-04-13 12:48 2.2K 
[TXT]cmake-2.8.12-rc4-SHA-256.txt.asc2016-04-13 12:48 819  
[   ]cmake-2.8.12-rc4-win32-x86.exe2013-10-01 16:22 10M 
[   ]cmake-2.8.12-rc4-win32-x86.zip2013-10-01 16:22 13M 
[   ]cmake-2.8.12-rc4.tar.Z2013-10-01 16:22 9.1M 
[   ]cmake-2.8.12-rc4.tar.gz2013-10-01 16:22 5.8M 
[   ]cmake-2.8.12-rc4.zip2013-10-01 16:22 8.0M 
[   ]cmake-2.8.12-win32-x86.exe2013-10-07 14:33 10M 
[   ]cmake-2.8.12-win32-x86.zip2013-10-07 14:33 13M 
[TXT]cmake-2.8.12.1-AIX-powerpc.sh2013-11-06 10:48 22M 
[   ]cmake-2.8.12.1-AIX-powerpc.tar.Z2013-11-06 10:47 32M 
[   ]cmake-2.8.12.1-AIX-powerpc.tar.gz2013-11-06 10:47 22M 
[   ]cmake-2.8.12.1-Darwin-universal.dmg2013-11-06 10:47 43M 
[   ]cmake-2.8.12.1-Darwin-universal.tar.Z2013-11-06 10:47 61M 
[   ]cmake-2.8.12.1-Darwin-universal.tar.gz2013-11-06 10:47 43M 
[   ]cmake-2.8.12.1-Darwin64-universal.dmg2013-11-06 10:47 41M 
[   ]cmake-2.8.12.1-Darwin64-universal.tar.Z2013-11-06 10:46 57M 
[   ]cmake-2.8.12.1-Darwin64-universal.tar.gz2013-11-06 10:46 41M 
[TXT]cmake-2.8.12.1-IRIX64-64.sh2013-11-06 10:46 13M 
[   ]cmake-2.8.12.1-IRIX64-64.tar.Z2013-11-06 10:46 20M 
[   ]cmake-2.8.12.1-IRIX64-64.tar.gz2013-11-06 10:46 13M 
[TXT]cmake-2.8.12.1-IRIX64-n32.sh2013-11-06 10:46 13M 
[   ]cmake-2.8.12.1-IRIX64-n32.tar.Z2013-11-06 10:46 19M 
[   ]cmake-2.8.12.1-IRIX64-n32.tar.gz2013-11-06 10:46 13M 
[TXT]cmake-2.8.12.1-Linux-i386.sh2013-11-06 10:46 24M 
[   ]cmake-2.8.12.1-Linux-i386.tar.Z2013-11-06 10:46 33M 
[   ]cmake-2.8.12.1-Linux-i386.tar.gz2013-11-06 10:46 24M 
[TXT]cmake-2.8.12.1-SHA-256.txt2016-04-13 12:48 2.2K 
[TXT]cmake-2.8.12.1-SHA-256.txt.asc2016-04-13 12:48 819  
[   ]cmake-2.8.12.1-win32-x86.exe2013-11-06 10:46 10M 
[   ]cmake-2.8.12.1-win32-x86.zip2013-11-06 10:46 13M 
[   ]cmake-2.8.12.1.tar.Z2013-11-06 10:45 9.1M 
[   ]cmake-2.8.12.1.tar.gz2013-11-06 10:45 5.8M 
[   ]cmake-2.8.12.1.zip2013-11-06 10:45 8.0M 
[TXT]cmake-2.8.12.2-AIX-powerpc.sh2014-01-16 14:49 22M 
[   ]cmake-2.8.12.2-AIX-powerpc.tar.Z2014-01-16 14:49 32M 
[   ]cmake-2.8.12.2-AIX-powerpc.tar.gz2014-01-16 14:49 22M 
[   ]cmake-2.8.12.2-Darwin-universal.dmg2014-01-16 14:48 43M 
[   ]cmake-2.8.12.2-Darwin-universal.tar.Z2014-01-16 14:48 61M 
[   ]cmake-2.8.12.2-Darwin-universal.tar.gz2014-01-16 14:48 43M 
[   ]cmake-2.8.12.2-Darwin64-universal.dmg2014-01-16 14:48 41M 
[   ]cmake-2.8.12.2-Darwin64-universal.tar.Z2014-01-16 14:48 57M 
[   ]cmake-2.8.12.2-Darwin64-universal.tar.gz2014-01-16 14:48 41M 
[TXT]cmake-2.8.12.2-IRIX64-64.sh2014-01-16 14:48 13M 
[   ]cmake-2.8.12.2-IRIX64-64.tar.Z2014-01-16 14:48 20M 
[   ]cmake-2.8.12.2-IRIX64-64.tar.gz2014-01-16 14:48 13M 
[TXT]cmake-2.8.12.2-IRIX64-n32.sh2014-01-16 14:48 13M 
[   ]cmake-2.8.12.2-IRIX64-n32.tar.Z2014-01-16 14:48 19M 
[   ]cmake-2.8.12.2-IRIX64-n32.tar.gz2014-01-16 14:48 13M 
[TXT]cmake-2.8.12.2-Linux-i386.sh2014-01-16 14:48 24M 
[   ]cmake-2.8.12.2-Linux-i386.tar.Z2014-01-16 14:48 33M 
[   ]cmake-2.8.12.2-Linux-i386.tar.gz2014-01-16 14:48 24M 
[TXT]cmake-2.8.12.2-SHA-256.txt2016-04-13 12:48 2.2K 
[TXT]cmake-2.8.12.2-SHA-256.txt.asc2016-04-13 12:48 819  
[   ]cmake-2.8.12.2-win32-x86.exe2014-01-16 14:48 10M 
[   ]cmake-2.8.12.2-win32-x86.zip2014-01-16 14:48 13M 
[   ]cmake-2.8.12.2.tar.Z2014-01-16 14:48 9.2M 
[   ]cmake-2.8.12.2.tar.gz2014-01-16 14:48 5.8M 
[   ]cmake-2.8.12.2.zip2014-01-16 14:48 8.0M 
[   ]cmake-2.8.12.tar.Z2013-10-07 14:32 9.2M 
[   ]cmake-2.8.12.tar.gz2013-10-07 14:32 5.8M 
[   ]cmake-2.8.12.zip2013-10-07 14:32 8.0M 

+ diff --git a/poky/bitbake/lib/bb/tests/fetch-testdata/files/v3.0/index.html b/poky/bitbake/lib/bb/tests/fetch-testdata/files/v3.0/index.html new file mode 100644 index 000000000..2583dcd71 --- /dev/null +++ b/poky/bitbake/lib/bb/tests/fetch-testdata/files/v3.0/index.html @@ -0,0 +1,209 @@ + + + + Index of /files/v3.0 + + +

Index of /files/v3.0

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
[ICO]NameLast modifiedSizeDescription

[PARENTDIR]Parent Directory  -  
[   ]cmake-3.0.0-1-src.tar.bz22014-06-10 13:28 4.2M 
[   ]cmake-3.0.0-1.tar.bz22014-06-10 13:28 8.0M 
[   ]cmake-3.0.0-Darwin-universal.dmg2014-06-10 13:28 41M 
[   ]cmake-3.0.0-Darwin-universal.tar.Z2014-06-10 13:27 58M 
[   ]cmake-3.0.0-Darwin-universal.tar.gz2014-06-10 13:27 41M 
[   ]cmake-3.0.0-Darwin64-universal.dmg2014-06-10 13:27 39M 
[   ]cmake-3.0.0-Darwin64-universal.tar.Z2014-06-10 13:27 54M 
[   ]cmake-3.0.0-Darwin64-universal.tar.gz2014-06-10 13:27 39M 
[TXT]cmake-3.0.0-Linux-i386.sh2014-06-10 13:27 22M 
[   ]cmake-3.0.0-Linux-i386.tar.Z2014-06-10 13:27 31M 
[   ]cmake-3.0.0-Linux-i386.tar.gz2014-06-10 13:27 22M 
[TXT]cmake-3.0.0-SHA-256.txt2016-04-13 12:48 1.3K 
[TXT]cmake-3.0.0-SHA-256.txt.asc2016-04-13 12:48 819  
[   ]cmake-3.0.0-rc1-1-src.tar.bz22014-02-28 13:54 4.2M 
[   ]cmake-3.0.0-rc1-1.tar.bz22014-02-28 13:54 8.0M 
[TXT]cmake-3.0.0-rc1-AIX-powerpc.sh2014-02-28 13:54 21M 
[   ]cmake-3.0.0-rc1-AIX-powerpc.tar.Z2014-02-28 13:54 31M 
[   ]cmake-3.0.0-rc1-AIX-powerpc.tar.gz2014-02-28 13:54 21M 
[   ]cmake-3.0.0-rc1-Darwin-universal.dmg2014-02-28 13:54 41M 
[   ]cmake-3.0.0-rc1-Darwin-universal.tar.Z2014-02-28 13:54 58M 
[   ]cmake-3.0.0-rc1-Darwin-universal.tar.gz2014-02-28 13:54 41M 
[   ]cmake-3.0.0-rc1-Darwin64-universal.dmg2014-02-28 13:54 39M 
[   ]cmake-3.0.0-rc1-Darwin64-universal.tar.Z2014-02-28 13:54 54M 
[   ]cmake-3.0.0-rc1-Darwin64-universal.tar.gz2014-02-28 13:54 39M 
[TXT]cmake-3.0.0-rc1-IRIX64-64.sh2014-02-28 13:54 13M 
[   ]cmake-3.0.0-rc1-IRIX64-64.tar.Z2014-02-28 13:54 19M 
[   ]cmake-3.0.0-rc1-IRIX64-64.tar.gz2014-02-28 13:54 13M 
[TXT]cmake-3.0.0-rc1-IRIX64-n32.sh2014-02-28 13:54 12M 
[   ]cmake-3.0.0-rc1-IRIX64-n32.tar.Z2014-02-28 13:54 19M 
[   ]cmake-3.0.0-rc1-IRIX64-n32.tar.gz2014-02-28 13:54 12M 
[TXT]cmake-3.0.0-rc1-Linux-i386.sh2014-02-28 13:54 22M 
[   ]cmake-3.0.0-rc1-Linux-i386.tar.Z2014-02-28 13:54 31M 
[   ]cmake-3.0.0-rc1-Linux-i386.tar.gz2014-02-28 13:53 22M 
[TXT]cmake-3.0.0-rc1-SHA-256.txt2016-04-13 12:48 2.2K 
[TXT]cmake-3.0.0-rc1-SHA-256.txt.asc2016-04-13 12:48 819  
[   ]cmake-3.0.0-rc1-win32-x86.exe2014-02-28 13:53 11M 
[   ]cmake-3.0.0-rc1-win32-x86.zip2014-02-28 13:53 14M 
[   ]cmake-3.0.0-rc1.tar.Z2014-02-28 13:53 8.5M 
[   ]cmake-3.0.0-rc1.tar.gz2014-02-28 13:53 5.2M 
[   ]cmake-3.0.0-rc1.zip2014-02-28 13:53 8.0M 
[   ]cmake-3.0.0-rc2-1-src.tar.bz22014-03-19 10:29 4.2M 
[   ]cmake-3.0.0-rc2-1.tar.bz22014-03-19 10:28 8.0M 
[TXT]cmake-3.0.0-rc2-AIX-powerpc.sh2014-03-19 10:28 21M 
[   ]cmake-3.0.0-rc2-AIX-powerpc.tar.Z2014-03-19 10:28 31M 
[   ]cmake-3.0.0-rc2-AIX-powerpc.tar.gz2014-03-19 10:28 21M 
[   ]cmake-3.0.0-rc2-Darwin-universal.dmg2014-03-19 10:28 41M 
[   ]cmake-3.0.0-rc2-Darwin-universal.tar.Z2014-03-19 10:28 58M 
[   ]cmake-3.0.0-rc2-Darwin-universal.tar.gz2014-03-19 10:28 41M 
[   ]cmake-3.0.0-rc2-Darwin64-universal.dmg2014-03-19 10:28 39M 
[   ]cmake-3.0.0-rc2-Darwin64-universal.tar.Z2014-03-19 10:28 54M 
[   ]cmake-3.0.0-rc2-Darwin64-universal.tar.gz2014-03-19 10:28 39M 
[TXT]cmake-3.0.0-rc2-IRIX64-64.sh2014-03-19 10:28 13M 
[   ]cmake-3.0.0-rc2-IRIX64-64.tar.Z2014-03-19 10:28 19M 
[   ]cmake-3.0.0-rc2-IRIX64-64.tar.gz2014-03-19 10:28 13M 
[TXT]cmake-3.0.0-rc2-IRIX64-n32.sh2014-03-19 10:28 12M 
[   ]cmake-3.0.0-rc2-IRIX64-n32.tar.Z2014-03-19 10:28 19M 
[   ]cmake-3.0.0-rc2-IRIX64-n32.tar.gz2014-03-19 10:28 12M 
[TXT]cmake-3.0.0-rc2-Linux-i386.sh2014-03-19 10:28 22M 
[   ]cmake-3.0.0-rc2-Linux-i386.tar.Z2014-03-19 10:28 31M 
[   ]cmake-3.0.0-rc2-Linux-i386.tar.gz2014-03-19 10:28 22M 
[TXT]cmake-3.0.0-rc2-SHA-256.txt2016-04-13 12:48 2.2K 
[TXT]cmake-3.0.0-rc2-SHA-256.txt.asc2016-04-13 12:48 819  
[   ]cmake-3.0.0-rc2-win32-x86.exe2014-03-19 10:28 11M 
[   ]cmake-3.0.0-rc2-win32-x86.zip2014-03-19 10:27 14M 
[   ]cmake-3.0.0-rc2.tar.Z2014-03-19 10:27 8.5M 
[   ]cmake-3.0.0-rc2.tar.gz2014-03-19 10:27 5.2M 
[   ]cmake-3.0.0-rc2.zip2014-03-19 10:27 8.0M 
[   ]cmake-3.0.0-rc3-1-src.tar.bz22014-03-26 13:00 4.2M 
[   ]cmake-3.0.0-rc3-1.tar.bz22014-03-26 13:00 8.0M 
[TXT]cmake-3.0.0-rc3-AIX-powerpc.sh2014-03-26 13:00 21M 
[   ]cmake-3.0.0-rc3-AIX-powerpc.tar.Z2014-03-26 13:00 31M 
[   ]cmake-3.0.0-rc3-AIX-powerpc.tar.gz2014-03-26 13:00 21M 
[   ]cmake-3.0.0-rc3-Darwin-universal.dmg2014-03-26 13:00 41M 
[   ]cmake-3.0.0-rc3-Darwin-universal.tar.Z2014-03-26 13:00 58M 
[   ]cmake-3.0.0-rc3-Darwin-universal.tar.gz2014-03-26 13:00 41M 
[   ]cmake-3.0.0-rc3-Darwin64-universal.dmg2014-03-26 12:59 39M 
[   ]cmake-3.0.0-rc3-Darwin64-universal.tar.Z2014-03-26 12:59 54M 
[   ]cmake-3.0.0-rc3-Darwin64-universal.tar.gz2014-03-26 12:59 39M 
[TXT]cmake-3.0.0-rc3-IRIX64-64.sh2014-03-26 12:59 13M 
[   ]cmake-3.0.0-rc3-IRIX64-64.tar.Z2014-03-26 12:59 19M 
[   ]cmake-3.0.0-rc3-IRIX64-64.tar.gz2014-03-26 12:59 13M 
[TXT]cmake-3.0.0-rc3-IRIX64-n32.sh2014-03-26 12:59 12M 
[   ]cmake-3.0.0-rc3-IRIX64-n32.tar.Z2014-03-26 12:59 19M 
[   ]cmake-3.0.0-rc3-IRIX64-n32.tar.gz2014-03-26 12:59 12M 
[TXT]cmake-3.0.0-rc3-SHA-256.txt2016-04-13 12:48 1.9K 
[TXT]cmake-3.0.0-rc3-SHA-256.txt.asc2016-04-13 12:48 819  
[   ]cmake-3.0.0-rc3-win32-x86.exe2014-03-26 12:59 11M 
[   ]cmake-3.0.0-rc3-win32-x86.zip2014-03-26 12:59 14M 
[   ]cmake-3.0.0-rc3.tar.Z2014-03-26 12:59 8.4M 
[   ]cmake-3.0.0-rc3.tar.gz2014-03-26 12:59 5.2M 
[   ]cmake-3.0.0-rc3.zip2014-03-26 12:59 8.0M 
[   ]cmake-3.0.0-rc4-1-src.tar.bz22014-04-18 09:52 4.2M 
[   ]cmake-3.0.0-rc4-1.tar.bz22014-04-18 09:52 8.0M 
[TXT]cmake-3.0.0-rc4-AIX-powerpc.sh2014-04-18 09:52 22M 
[   ]cmake-3.0.0-rc4-AIX-powerpc.tar.Z2014-04-18 09:52 31M 
[   ]cmake-3.0.0-rc4-AIX-powerpc.tar.gz2014-04-18 09:52 22M 
[   ]cmake-3.0.0-rc4-Darwin-universal.dmg2014-04-18 09:52 41M 
[   ]cmake-3.0.0-rc4-Darwin-universal.tar.Z2014-04-18 09:52 58M 
[   ]cmake-3.0.0-rc4-Darwin-universal.tar.gz2014-04-18 09:51 41M 
[   ]cmake-3.0.0-rc4-Darwin64-universal.dmg2014-04-18 09:51 39M 
[   ]cmake-3.0.0-rc4-Darwin64-universal.tar.Z2014-04-18 09:51 54M 
[   ]cmake-3.0.0-rc4-Darwin64-universal.tar.gz2014-04-18 09:51 39M 
[TXT]cmake-3.0.0-rc4-IRIX64-64.sh2014-04-18 09:51 13M 
[   ]cmake-3.0.0-rc4-IRIX64-64.tar.Z2014-04-18 09:51 19M 
[   ]cmake-3.0.0-rc4-IRIX64-64.tar.gz2014-04-18 09:51 13M 
[TXT]cmake-3.0.0-rc4-IRIX64-n32.sh2014-04-18 09:51 12M 
[   ]cmake-3.0.0-rc4-IRIX64-n32.tar.Z2014-04-18 09:51 19M 
[   ]cmake-3.0.0-rc4-IRIX64-n32.tar.gz2014-04-18 09:51 12M 
[TXT]cmake-3.0.0-rc4-Linux-i386.sh2014-04-18 09:51 22M 
[   ]cmake-3.0.0-rc4-Linux-i386.tar.Z2014-04-18 09:51 31M 
[   ]cmake-3.0.0-rc4-Linux-i386.tar.gz2014-04-18 09:51 22M 
[TXT]cmake-3.0.0-rc4-SHA-256.txt2016-04-13 12:48 2.2K 
[TXT]cmake-3.0.0-rc4-SHA-256.txt.asc2016-04-13 12:48 819  
[   ]cmake-3.0.0-rc4-win32-x86.exe2014-04-18 09:51 11M 
[   ]cmake-3.0.0-rc4-win32-x86.zip2014-04-18 09:51 14M 
[   ]cmake-3.0.0-rc4.tar.Z2014-04-18 09:51 8.5M 
[   ]cmake-3.0.0-rc4.tar.gz2014-04-18 09:51 5.2M 
[   ]cmake-3.0.0-rc4.zip2014-04-18 09:51 8.0M 
[   ]cmake-3.0.0-rc5-1-src.tar.bz22014-05-13 14:25 4.2M 
[   ]cmake-3.0.0-rc5-1.tar.bz22014-05-13 14:25 8.0M 
[   ]cmake-3.0.0-rc5-Darwin-universal.dmg2014-05-13 14:25 41M 
[   ]cmake-3.0.0-rc5-Darwin-universal.tar.Z2014-05-13 14:24 58M 
[   ]cmake-3.0.0-rc5-Darwin-universal.tar.gz2014-05-13 14:24 41M 
[   ]cmake-3.0.0-rc5-Darwin64-universal.dmg2014-05-13 14:24 39M 
[   ]cmake-3.0.0-rc5-Darwin64-universal.tar.Z2014-05-13 14:24 54M 
[   ]cmake-3.0.0-rc5-Darwin64-universal.tar.gz2014-05-13 14:24 39M 
[TXT]cmake-3.0.0-rc5-Linux-i386.sh2014-05-13 14:24 22M 
[   ]cmake-3.0.0-rc5-Linux-i386.tar.Z2014-05-13 14:24 31M 
[   ]cmake-3.0.0-rc5-Linux-i386.tar.gz2014-05-13 14:24 22M 
[TXT]cmake-3.0.0-rc5-SHA-256.txt2016-04-13 12:48 1.4K 
[TXT]cmake-3.0.0-rc5-SHA-256.txt.asc2016-04-13 12:48 819  
[   ]cmake-3.0.0-rc5-win32-x86.exe2014-05-13 14:24 11M 
[   ]cmake-3.0.0-rc5-win32-x86.zip2014-05-13 14:24 14M 
[   ]cmake-3.0.0-rc5.tar.Z2014-05-13 14:24 8.5M 
[   ]cmake-3.0.0-rc5.tar.gz2014-05-13 14:24 5.2M 
[   ]cmake-3.0.0-rc5.zip2014-05-13 14:24 8.0M 
[   ]cmake-3.0.0-rc6-1-src.tar.bz22014-05-22 14:57 4.2M 
[   ]cmake-3.0.0-rc6-1.tar.bz22014-05-22 14:57 8.0M 
[   ]cmake-3.0.0-rc6-Darwin-universal.dmg2014-05-22 14:57 41M 
[   ]cmake-3.0.0-rc6-Darwin-universal.tar.Z2014-05-22 14:56 58M 
[   ]cmake-3.0.0-rc6-Darwin-universal.tar.gz2014-05-22 14:56 41M 
[   ]cmake-3.0.0-rc6-Darwin64-universal.dmg2014-05-22 14:56 39M 
[   ]cmake-3.0.0-rc6-Darwin64-universal.tar.Z2014-05-22 14:56 54M 
[   ]cmake-3.0.0-rc6-Darwin64-universal.tar.gz2014-05-22 14:56 39M 
[TXT]cmake-3.0.0-rc6-Linux-i386.sh2014-05-22 14:56 22M 
[   ]cmake-3.0.0-rc6-Linux-i386.tar.Z2014-05-22 14:56 31M 
[   ]cmake-3.0.0-rc6-Linux-i386.tar.gz2014-05-22 14:56 22M 
[TXT]cmake-3.0.0-rc6-SHA-256.txt2016-04-13 12:48 1.4K 
[TXT]cmake-3.0.0-rc6-SHA-256.txt.asc2016-04-13 12:48 819  
[   ]cmake-3.0.0-rc6-win32-x86.exe2014-05-22 14:56 11M 
[   ]cmake-3.0.0-rc6-win32-x86.zip2014-05-22 14:56 14M 
[   ]cmake-3.0.0-rc6.tar.Z2014-05-22 14:56 8.5M 
[   ]cmake-3.0.0-rc6.tar.gz2014-05-22 14:56 5.2M 
[   ]cmake-3.0.0-rc6.zip2014-05-22 14:56 8.0M 
[   ]cmake-3.0.0-win32-x86.exe2014-06-10 13:27 11M 
[   ]cmake-3.0.0-win32-x86.zip2014-06-10 13:27 14M 
[   ]cmake-3.0.0.tar.Z2014-06-10 13:27 8.5M 
[   ]cmake-3.0.0.tar.gz2014-06-10 13:27 5.2M 
[   ]cmake-3.0.0.zip2014-06-10 13:27 7.9M 
[   ]cmake-3.0.1-1-src.tar.bz22014-09-11 09:19 4.2M 
[   ]cmake-3.0.1-1.tar.bz22014-09-11 09:19 8.0M 
[   ]cmake-3.0.1-Darwin-universal.dmg2014-09-11 09:19 41M 
[   ]cmake-3.0.1-Darwin-universal.tar.Z2014-09-11 09:19 58M 
[   ]cmake-3.0.1-Darwin-universal.tar.gz2014-09-11 09:19 41M 
[   ]cmake-3.0.1-Darwin64-universal.dmg2014-09-11 09:18 39M 
[   ]cmake-3.0.1-Darwin64-universal.tar.Z2014-09-11 09:18 54M 
[   ]cmake-3.0.1-Darwin64-universal.tar.gz2014-09-11 09:18 39M 
[TXT]cmake-3.0.1-Linux-i386.sh2014-09-11 09:18 22M 
[   ]cmake-3.0.1-Linux-i386.tar.Z2014-09-11 09:18 31M 
[   ]cmake-3.0.1-Linux-i386.tar.gz2014-09-11 09:18 22M 
[TXT]cmake-3.0.1-SHA-256.txt2016-04-13 12:48 1.3K 
[TXT]cmake-3.0.1-SHA-256.txt.asc2016-04-13 12:48 819  
[   ]cmake-3.0.1-win32-x86.exe2014-09-11 09:18 11M 
[   ]cmake-3.0.1-win32-x86.zip2014-09-11 09:18 14M 
[   ]cmake-3.0.1.tar.Z2014-09-11 09:18 8.5M 
[   ]cmake-3.0.1.tar.gz2014-09-11 09:18 5.2M 
[   ]cmake-3.0.1.zip2014-09-11 09:18 7.9M 
[   ]cmake-3.0.2-1-src.tar.bz22014-09-11 12:19 4.2M 
[   ]cmake-3.0.2-1.tar.bz22014-09-11 12:19 8.0M 
[   ]cmake-3.0.2-Darwin-universal.dmg2014-09-11 12:19 41M 
[   ]cmake-3.0.2-Darwin-universal.tar.Z2014-09-11 12:19 58M 
[   ]cmake-3.0.2-Darwin-universal.tar.gz2014-09-11 12:19 41M 
[   ]cmake-3.0.2-Darwin64-universal.dmg2014-09-11 12:19 39M 
[   ]cmake-3.0.2-Darwin64-universal.tar.Z2014-09-11 12:19 54M 
[   ]cmake-3.0.2-Darwin64-universal.tar.gz2014-09-11 12:18 39M 
[TXT]cmake-3.0.2-Linux-i386.sh2014-09-11 12:18 22M 
[   ]cmake-3.0.2-Linux-i386.tar.Z2014-09-11 12:18 31M 
[   ]cmake-3.0.2-Linux-i386.tar.gz2014-09-11 12:18 22M 
[TXT]cmake-3.0.2-SHA-256.txt2016-04-13 12:48 1.3K 
[TXT]cmake-3.0.2-SHA-256.txt.asc2016-04-13 12:48 819  
[   ]cmake-3.0.2-win32-x86.exe2014-09-11 12:18 11M 
[   ]cmake-3.0.2-win32-x86.zip2014-09-11 12:18 14M 
[   ]cmake-3.0.2.tar.Z2014-09-11 12:18 8.5M 
[   ]cmake-3.0.2.tar.gz2014-09-11 12:18 5.2M 
[   ]cmake-3.0.2.zip2014-09-11 12:18 7.9M 

+ diff --git a/poky/bitbake/lib/bb/tests/fetch-testdata/files/v3.1/index.html b/poky/bitbake/lib/bb/tests/fetch-testdata/files/v3.1/index.html new file mode 100644 index 000000000..635d34c09 --- /dev/null +++ b/poky/bitbake/lib/bb/tests/fetch-testdata/files/v3.1/index.html @@ -0,0 +1,156 @@ + + + + Index of /files/v3.1 + + +

Index of /files/v3.1

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
[ICO]NameLast modifiedSizeDescription

[PARENTDIR]Parent Directory  -  
[   ]cmake-3.1.0-1-src.tar.bz22014-12-17 13:10 4.5M 
[   ]cmake-3.1.0-1.tar.bz22014-12-17 13:10 9.0M 
[   ]cmake-3.1.0-Darwin-universal.dmg2014-12-17 13:10 45M 
[   ]cmake-3.1.0-Darwin-universal.tar.Z2014-12-17 13:10 63M 
[   ]cmake-3.1.0-Darwin-universal.tar.gz2014-12-17 13:10 44M 
[   ]cmake-3.1.0-Darwin64-universal.dmg2014-12-17 13:10 28M 
[   ]cmake-3.1.0-Darwin64-universal.tar.Z2014-12-17 13:10 40M 
[   ]cmake-3.1.0-Darwin64-universal.tar.gz2014-12-17 13:10 28M 
[   ]cmake-3.1.0-Darwin64.dmg2014-12-19 11:38 29M 
[   ]cmake-3.1.0-Darwin64.tar.Z2014-12-19 11:38 41M 
[   ]cmake-3.1.0-Darwin64.tar.gz2014-12-19 11:38 29M 
[TXT]cmake-3.1.0-Linux-i386.sh2014-12-17 13:10 24M 
[   ]cmake-3.1.0-Linux-i386.tar.Z2014-12-17 13:10 33M 
[   ]cmake-3.1.0-Linux-i386.tar.gz2014-12-17 13:10 24M 
[TXT]cmake-3.1.0-Linux-x86_64.sh2014-12-17 13:10 25M 
[   ]cmake-3.1.0-Linux-x86_64.tar.Z2014-12-17 13:10 35M 
[   ]cmake-3.1.0-Linux-x86_64.tar.gz2014-12-17 13:10 25M 
[TXT]cmake-3.1.0-SHA-256.txt2016-04-13 12:48 1.9K 
[TXT]cmake-3.1.0-SHA-256.txt.asc2016-04-13 12:48 819  
[   ]cmake-3.1.0-rc1-1-src.tar.bz22014-10-28 14:09 4.5M 
[   ]cmake-3.1.0-rc1-1.tar.bz22014-10-28 14:09 9.0M 
[   ]cmake-3.1.0-rc1-Darwin-universal.dmg2014-10-28 14:09 45M 
[   ]cmake-3.1.0-rc1-Darwin-universal.tar.Z2014-10-28 14:09 63M 
[   ]cmake-3.1.0-rc1-Darwin-universal.tar.gz2014-10-28 14:09 44M 
[   ]cmake-3.1.0-rc1-Darwin64-universal.dmg2014-10-28 14:09 28M 
[   ]cmake-3.1.0-rc1-Darwin64-universal.tar.Z2014-10-28 14:09 40M 
[   ]cmake-3.1.0-rc1-Darwin64-universal.tar.gz2014-10-28 14:08 28M 
[TXT]cmake-3.1.0-rc1-Linux-i386.sh2014-10-28 14:08 24M 
[   ]cmake-3.1.0-rc1-Linux-i386.tar.Z2014-10-28 14:08 33M 
[   ]cmake-3.1.0-rc1-Linux-i386.tar.gz2014-10-28 14:08 24M 
[TXT]cmake-3.1.0-rc1-SHA-256.txt2016-04-13 12:48 1.4K 
[TXT]cmake-3.1.0-rc1-SHA-256.txt.asc2016-04-13 12:48 819  
[   ]cmake-3.1.0-rc1-win32-x86.exe2014-10-28 14:08 12M 
[   ]cmake-3.1.0-rc1-win32-x86.zip2014-10-28 14:08 15M 
[   ]cmake-3.1.0-rc1.tar.Z2014-10-28 14:08 9.2M 
[   ]cmake-3.1.0-rc1.tar.gz2014-10-28 14:08 5.7M 
[   ]cmake-3.1.0-rc1.zip2014-10-28 14:08 9.0M 
[   ]cmake-3.1.0-rc2-1-src.tar.bz22014-11-13 11:51 4.5M 
[   ]cmake-3.1.0-rc2-1.tar.bz22014-11-13 11:51 9.0M 
[   ]cmake-3.1.0-rc2-Darwin-universal.dmg2014-11-13 11:51 45M 
[   ]cmake-3.1.0-rc2-Darwin-universal.tar.Z2014-11-13 11:51 63M 
[   ]cmake-3.1.0-rc2-Darwin-universal.tar.gz2014-11-13 11:50 44M 
[   ]cmake-3.1.0-rc2-Darwin64-universal.dmg2014-11-13 11:50 28M 
[   ]cmake-3.1.0-rc2-Darwin64-universal.tar.Z2014-11-13 11:50 40M 
[   ]cmake-3.1.0-rc2-Darwin64-universal.tar.gz2014-11-13 11:50 28M 
[TXT]cmake-3.1.0-rc2-Linux-i386.sh2014-11-13 11:50 24M 
[   ]cmake-3.1.0-rc2-Linux-i386.tar.Z2014-11-13 11:50 33M 
[   ]cmake-3.1.0-rc2-Linux-i386.tar.gz2014-11-13 11:50 24M 
[TXT]cmake-3.1.0-rc2-SHA-256.txt2016-04-13 12:48 1.4K 
[TXT]cmake-3.1.0-rc2-SHA-256.txt.asc2016-04-13 12:48 819  
[   ]cmake-3.1.0-rc2-win32-x86.exe2014-11-13 11:50 12M 
[   ]cmake-3.1.0-rc2-win32-x86.zip2014-11-13 11:50 15M 
[   ]cmake-3.1.0-rc2.tar.Z2014-11-13 11:50 9.2M 
[   ]cmake-3.1.0-rc2.tar.gz2014-11-13 11:50 5.7M 
[   ]cmake-3.1.0-rc2.zip2014-11-13 11:50 9.0M 
[   ]cmake-3.1.0-rc3-1-src.tar.bz22014-12-09 16:53 4.5M 
[   ]cmake-3.1.0-rc3-1.tar.bz22014-12-09 16:53 9.0M 
[   ]cmake-3.1.0-rc3-Darwin-universal.dmg2014-12-09 16:53 45M 
[   ]cmake-3.1.0-rc3-Darwin-universal.tar.Z2014-12-09 16:52 63M 
[   ]cmake-3.1.0-rc3-Darwin-universal.tar.gz2014-12-09 16:52 44M 
[   ]cmake-3.1.0-rc3-Darwin64-universal.dmg2014-12-09 16:52 28M 
[   ]cmake-3.1.0-rc3-Darwin64-universal.tar.Z2014-12-09 16:52 40M 
[   ]cmake-3.1.0-rc3-Darwin64-universal.tar.gz2014-12-09 16:52 28M 
[TXT]cmake-3.1.0-rc3-Linux-i386.sh2014-12-09 16:52 24M 
[   ]cmake-3.1.0-rc3-Linux-i386.tar.Z2014-12-09 16:52 33M 
[   ]cmake-3.1.0-rc3-Linux-i386.tar.gz2014-12-09 16:52 24M 
[TXT]cmake-3.1.0-rc3-Linux-x86_64.sh2014-12-09 16:52 25M 
[   ]cmake-3.1.0-rc3-Linux-x86_64.tar.Z2014-12-09 16:52 35M 
[   ]cmake-3.1.0-rc3-Linux-x86_64.tar.gz2014-12-09 16:52 25M 
[TXT]cmake-3.1.0-rc3-SHA-256.txt2016-04-13 12:48 1.6K 
[TXT]cmake-3.1.0-rc3-SHA-256.txt.asc2016-04-13 12:48 819  
[   ]cmake-3.1.0-rc3-win32-x86.exe2014-12-09 16:52 12M 
[   ]cmake-3.1.0-rc3-win32-x86.zip2014-12-09 16:52 15M 
[   ]cmake-3.1.0-rc3.tar.Z2014-12-09 16:52 9.2M 
[   ]cmake-3.1.0-rc3.tar.gz2014-12-09 16:52 5.7M 
[   ]cmake-3.1.0-rc3.zip2014-12-09 16:52 9.0M 
[   ]cmake-3.1.0-win32-x86.exe2014-12-17 13:10 12M 
[   ]cmake-3.1.0-win32-x86.zip2014-12-17 13:10 15M 
[   ]cmake-3.1.0.tar.Z2014-12-17 13:10 9.2M 
[   ]cmake-3.1.0.tar.gz2014-12-17 13:10 5.7M 
[   ]cmake-3.1.0.zip2014-12-17 13:10 9.0M 
[   ]cmake-3.1.1-1-src.tar.bz22015-01-22 16:49 4.5M 
[   ]cmake-3.1.1-1.tar.bz22015-01-22 16:49 9.1M 
[   ]cmake-3.1.1-Darwin-universal.dmg2015-01-22 16:49 45M 
[   ]cmake-3.1.1-Darwin-universal.tar.Z2015-01-22 16:49 64M 
[   ]cmake-3.1.1-Darwin-universal.tar.gz2015-01-22 16:49 44M 
[   ]cmake-3.1.1-Darwin-x86_64.dmg2015-01-22 16:48 29M 
[   ]cmake-3.1.1-Darwin-x86_64.tar.Z2015-01-22 16:48 41M 
[   ]cmake-3.1.1-Darwin-x86_64.tar.gz2015-01-22 16:48 29M 
[TXT]cmake-3.1.1-Linux-i386.sh2015-01-22 16:48 24M 
[   ]cmake-3.1.1-Linux-i386.tar.Z2015-01-22 16:48 33M 
[   ]cmake-3.1.1-Linux-i386.tar.gz2015-01-22 16:48 24M 
[TXT]cmake-3.1.1-Linux-x86_64.sh2015-01-22 16:48 25M 
[   ]cmake-3.1.1-Linux-x86_64.tar.Z2015-01-22 16:48 35M 
[   ]cmake-3.1.1-Linux-x86_64.tar.gz2015-01-22 16:48 25M 
[TXT]cmake-3.1.1-SHA-256.txt2016-04-13 12:48 1.6K 
[TXT]cmake-3.1.1-SHA-256.txt.asc2016-04-13 12:48 819  
[   ]cmake-3.1.1-win32-x86.exe2015-01-22 16:48 12M 
[   ]cmake-3.1.1-win32-x86.zip2015-01-22 16:48 15M 
[   ]cmake-3.1.1.tar.Z2015-01-22 16:48 9.2M 
[   ]cmake-3.1.1.tar.gz2015-01-22 16:48 5.7M 
[   ]cmake-3.1.1.zip2015-01-22 16:48 9.0M 
[   ]cmake-3.1.2-Darwin-universal.dmg2015-02-05 10:06 45M 
[   ]cmake-3.1.2-Darwin-universal.tar.Z2015-02-05 10:06 64M 
[   ]cmake-3.1.2-Darwin-universal.tar.gz2015-02-05 10:06 44M 
[   ]cmake-3.1.2-Darwin-x86_64.dmg2015-02-05 10:06 29M 
[   ]cmake-3.1.2-Darwin-x86_64.tar.Z2015-02-05 10:06 41M 
[   ]cmake-3.1.2-Darwin-x86_64.tar.gz2015-02-05 10:06 29M 
[TXT]cmake-3.1.2-Linux-i386.sh2015-02-05 10:06 24M 
[   ]cmake-3.1.2-Linux-i386.tar.Z2015-02-05 10:06 33M 
[   ]cmake-3.1.2-Linux-i386.tar.gz2015-02-05 10:05 24M 
[TXT]cmake-3.1.2-Linux-x86_64.sh2015-02-05 10:05 25M 
[   ]cmake-3.1.2-Linux-x86_64.tar.Z2015-02-05 10:05 35M 
[   ]cmake-3.1.2-Linux-x86_64.tar.gz2015-02-05 10:05 25M 
[TXT]cmake-3.1.2-SHA-256.txt2016-04-13 12:48 1.6K 
[TXT]cmake-3.1.2-SHA-256.txt.asc2016-04-13 12:48 819  
[   ]cmake-3.1.2-win32-x86.exe2015-02-05 10:05 12M 
[   ]cmake-3.1.2-win32-x86.zip2015-02-05 10:05 15M 
[   ]cmake-3.1.2.tar.Z2015-02-05 10:05 9.2M 
[   ]cmake-3.1.2.tar.gz2015-02-05 10:05 5.7M 
[   ]cmake-3.1.2.zip2015-02-05 10:05 9.0M 
[   ]cmake-3.1.3-1-src.tar.bz22015-02-12 17:40 4.5M 
[   ]cmake-3.1.3-1.tar.bz22015-02-12 17:40 9.0M 
[   ]cmake-3.1.3-Darwin-universal.dmg2015-02-12 17:40 45M 
[   ]cmake-3.1.3-Darwin-universal.tar.Z2015-02-12 17:40 64M 
[   ]cmake-3.1.3-Darwin-universal.tar.gz2015-02-12 17:40 44M 
[   ]cmake-3.1.3-Darwin-x86_64.dmg2015-02-12 17:40 29M 
[   ]cmake-3.1.3-Darwin-x86_64.tar.Z2015-02-12 17:40 41M 
[   ]cmake-3.1.3-Darwin-x86_64.tar.gz2015-02-12 17:39 29M 
[TXT]cmake-3.1.3-Linux-i386.sh2015-02-12 17:39 24M 
[   ]cmake-3.1.3-Linux-i386.tar.Z2015-02-12 17:39 33M 
[   ]cmake-3.1.3-Linux-i386.tar.gz2015-02-12 17:39 24M 
[TXT]cmake-3.1.3-Linux-x86_64.sh2015-02-12 17:39 25M 
[   ]cmake-3.1.3-Linux-x86_64.tar.Z2015-02-12 17:39 35M 
[   ]cmake-3.1.3-Linux-x86_64.tar.gz2015-02-12 17:39 25M 
[TXT]cmake-3.1.3-SHA-256.txt2016-04-13 12:48 1.6K 
[TXT]cmake-3.1.3-SHA-256.txt.asc2016-04-13 12:48 819  
[   ]cmake-3.1.3-win32-x86.exe2015-02-12 17:39 12M 
[   ]cmake-3.1.3-win32-x86.zip2015-02-12 17:39 15M 
[   ]cmake-3.1.3.tar.Z2015-02-12 17:39 9.2M 
[   ]cmake-3.1.3.tar.gz2015-02-12 17:39 5.7M 
[   ]cmake-3.1.3.zip2015-02-12 17:39 9.0M 

+ diff --git a/poky/bitbake/lib/bb/tests/fetch-testdata/files/v3.10/index.html b/poky/bitbake/lib/bb/tests/fetch-testdata/files/v3.10/index.html new file mode 100644 index 000000000..df654a369 --- /dev/null +++ b/poky/bitbake/lib/bb/tests/fetch-testdata/files/v3.10/index.html @@ -0,0 +1,131 @@ + + + + Index of /files/v3.10 + + +

Index of /files/v3.10

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
[ICO]NameLast modifiedSizeDescription

[PARENTDIR]Parent Directory  -  
[   ]cmake-3.10.0-Darwin-x86_64.dmg2017-11-20 16:00 26M 
[   ]cmake-3.10.0-Darwin-x86_64.tar.gz2017-11-20 16:00 26M 
[TXT]cmake-3.10.0-Linux-x86_64.sh2017-11-20 16:00 33M 
[   ]cmake-3.10.0-Linux-x86_64.tar.gz2017-11-20 16:00 33M 
[TXT]cmake-3.10.0-SHA-256.txt2017-11-20 16:00 1.0K 
[TXT]cmake-3.10.0-SHA-256.txt.asc2017-11-20 16:00 833  
[   ]cmake-3.10.0-rc1-Darwin-x86_64.dmg2017-10-05 15:50 26M 
[   ]cmake-3.10.0-rc1-Darwin-x86_64.tar.gz2017-10-05 15:50 26M 
[TXT]cmake-3.10.0-rc1-Linux-x86_64.sh2017-10-05 15:50 31M 
[   ]cmake-3.10.0-rc1-Linux-x86_64.tar.gz2017-10-05 15:50 31M 
[TXT]cmake-3.10.0-rc1-SHA-256.txt2017-10-05 15:50 1.0K 
[TXT]cmake-3.10.0-rc1-SHA-256.txt.asc2017-10-05 15:50 833  
[   ]cmake-3.10.0-rc1-win32-x86.msi2017-10-05 15:50 16M 
[   ]cmake-3.10.0-rc1-win32-x86.zip2017-10-05 15:50 22M 
[   ]cmake-3.10.0-rc1-win64-x64.msi2017-10-05 15:50 18M 
[   ]cmake-3.10.0-rc1-win64-x64.zip2017-10-05 15:50 25M 
[   ]cmake-3.10.0-rc1.tar.Z2017-10-05 15:50 12M 
[   ]cmake-3.10.0-rc1.tar.gz2017-10-05 15:50 7.4M 
[   ]cmake-3.10.0-rc1.zip2017-10-05 15:50 12M 
[   ]cmake-3.10.0-rc2-Darwin-x86_64.dmg2017-10-12 12:07 26M 
[   ]cmake-3.10.0-rc2-Darwin-x86_64.tar.gz2017-10-12 12:07 26M 
[TXT]cmake-3.10.0-rc2-Linux-x86_64.sh2017-10-12 12:07 31M 
[   ]cmake-3.10.0-rc2-Linux-x86_64.tar.gz2017-10-12 12:07 31M 
[TXT]cmake-3.10.0-rc2-SHA-256.txt2017-10-12 12:07 1.0K 
[TXT]cmake-3.10.0-rc2-SHA-256.txt.asc2017-10-12 12:06 833  
[   ]cmake-3.10.0-rc2-win32-x86.msi2017-10-12 12:06 16M 
[   ]cmake-3.10.0-rc2-win32-x86.zip2017-10-12 12:06 22M 
[   ]cmake-3.10.0-rc2-win64-x64.msi2017-10-12 12:06 18M 
[   ]cmake-3.10.0-rc2-win64-x64.zip2017-10-12 12:06 25M 
[   ]cmake-3.10.0-rc2.tar.Z2017-10-12 12:06 12M 
[   ]cmake-3.10.0-rc2.tar.gz2017-10-12 12:06 7.5M 
[   ]cmake-3.10.0-rc2.zip2017-10-12 12:06 13M 
[   ]cmake-3.10.0-rc3-Darwin-x86_64.dmg2017-10-19 13:24 26M 
[   ]cmake-3.10.0-rc3-Darwin-x86_64.tar.gz2017-10-19 13:24 26M 
[TXT]cmake-3.10.0-rc3-Linux-x86_64.sh2017-10-19 13:24 31M 
[   ]cmake-3.10.0-rc3-Linux-x86_64.tar.gz2017-10-19 13:24 31M 
[TXT]cmake-3.10.0-rc3-SHA-256.txt2017-10-19 13:24 1.0K 
[TXT]cmake-3.10.0-rc3-SHA-256.txt.asc2017-10-19 13:24 833  
[   ]cmake-3.10.0-rc3-win32-x86.msi2017-10-19 13:24 16M 
[   ]cmake-3.10.0-rc3-win32-x86.zip2017-10-19 13:24 22M 
[   ]cmake-3.10.0-rc3-win64-x64.msi2017-10-19 13:24 18M 
[   ]cmake-3.10.0-rc3-win64-x64.zip2017-10-19 13:24 25M 
[   ]cmake-3.10.0-rc3.tar.Z2017-10-19 13:24 12M 
[   ]cmake-3.10.0-rc3.tar.gz2017-10-19 13:24 7.5M 
[   ]cmake-3.10.0-rc3.zip2017-10-19 13:24 13M 
[   ]cmake-3.10.0-rc4-Darwin-x86_64.dmg2017-11-01 15:37 26M 
[   ]cmake-3.10.0-rc4-Darwin-x86_64.tar.gz2017-11-01 15:37 26M 
[TXT]cmake-3.10.0-rc4-Linux-x86_64.sh2017-11-01 15:37 31M 
[   ]cmake-3.10.0-rc4-Linux-x86_64.tar.gz2017-11-01 15:37 31M 
[TXT]cmake-3.10.0-rc4-SHA-256.txt2017-11-01 15:37 1.0K 
[TXT]cmake-3.10.0-rc4-SHA-256.txt.asc2017-11-01 15:37 833  
[   ]cmake-3.10.0-rc4-win32-x86.msi2017-11-01 15:37 16M 
[   ]cmake-3.10.0-rc4-win32-x86.zip2017-11-01 15:37 22M 
[   ]cmake-3.10.0-rc4-win64-x64.msi2017-11-01 15:37 18M 
[   ]cmake-3.10.0-rc4-win64-x64.zip2017-11-01 15:37 25M 
[   ]cmake-3.10.0-rc4.tar.Z2017-11-01 15:37 12M 
[   ]cmake-3.10.0-rc4.tar.gz2017-11-01 15:37 7.5M 
[   ]cmake-3.10.0-rc4.zip2017-11-01 15:37 13M 
[   ]cmake-3.10.0-rc5-Darwin-x86_64.dmg2017-11-10 14:01 26M 
[   ]cmake-3.10.0-rc5-Darwin-x86_64.tar.gz2017-11-10 14:01 26M 
[TXT]cmake-3.10.0-rc5-Linux-x86_64.sh2017-11-10 14:01 31M 
[   ]cmake-3.10.0-rc5-Linux-x86_64.tar.gz2017-11-10 14:01 31M 
[TXT]cmake-3.10.0-rc5-SHA-256.txt2017-11-10 14:01 1.0K 
[TXT]cmake-3.10.0-rc5-SHA-256.txt.asc2017-11-10 14:01 833  
[   ]cmake-3.10.0-rc5-win32-x86.msi2017-11-10 14:01 16M 
[   ]cmake-3.10.0-rc5-win32-x86.zip2017-11-10 14:01 22M 
[   ]cmake-3.10.0-rc5-win64-x64.msi2017-11-10 14:01 18M 
[   ]cmake-3.10.0-rc5-win64-x64.zip2017-11-10 14:01 25M 
[   ]cmake-3.10.0-rc5.tar.Z2017-11-10 14:01 12M 
[   ]cmake-3.10.0-rc5.tar.gz2017-11-10 14:01 7.5M 
[   ]cmake-3.10.0-rc5.zip2017-11-10 14:00 13M 
[   ]cmake-3.10.0-win32-x86.msi2017-11-20 16:00 15M 
[   ]cmake-3.10.0-win32-x86.zip2017-11-20 16:00 21M 
[   ]cmake-3.10.0-win64-x64.msi2017-11-20 16:00 17M 
[   ]cmake-3.10.0-win64-x64.zip2017-11-20 16:00 24M 
[   ]cmake-3.10.0.tar.Z2017-11-20 16:00 12M 
[   ]cmake-3.10.0.tar.gz2017-11-20 16:00 7.5M 
[   ]cmake-3.10.0.zip2017-11-20 16:00 12M 
[   ]cmake-3.10.1-Darwin-x86_64.dmg2017-12-14 09:10 26M 
[   ]cmake-3.10.1-Darwin-x86_64.tar.gz2017-12-14 09:10 26M 
[TXT]cmake-3.10.1-Linux-x86_64.sh2017-12-14 09:10 33M 
[   ]cmake-3.10.1-Linux-x86_64.tar.gz2017-12-14 09:10 33M 
[TXT]cmake-3.10.1-SHA-256.txt2017-12-14 09:10 1.0K 
[TXT]cmake-3.10.1-SHA-256.txt.asc2017-12-14 09:10 833  
[   ]cmake-3.10.1-win32-x86.msi2017-12-14 09:10 15M 
[   ]cmake-3.10.1-win32-x86.zip2017-12-14 09:10 21M 
[   ]cmake-3.10.1-win64-x64.msi2017-12-14 09:10 18M 
[   ]cmake-3.10.1-win64-x64.zip2017-12-14 09:09 25M 
[   ]cmake-3.10.1.tar.Z2017-12-14 09:09 12M 
[   ]cmake-3.10.1.tar.gz2017-12-14 09:09 7.5M 
[   ]cmake-3.10.1.zip2017-12-14 09:09 12M 
[   ]cmake-3.10.2-Darwin-x86_64.dmg2018-01-18 12:09 26M 
[   ]cmake-3.10.2-Darwin-x86_64.tar.gz2018-01-18 12:09 26M 
[TXT]cmake-3.10.2-Linux-x86_64.sh2018-01-18 12:09 33M 
[   ]cmake-3.10.2-Linux-x86_64.tar.gz2018-01-18 12:09 33M 
[TXT]cmake-3.10.2-SHA-256.txt2018-01-18 12:09 1.0K 
[TXT]cmake-3.10.2-SHA-256.txt.asc2018-01-18 12:09 833  
[   ]cmake-3.10.2-win32-x86.msi2018-01-18 12:09 15M 
[   ]cmake-3.10.2-win32-x86.zip2018-01-18 12:09 21M 
[   ]cmake-3.10.2-win64-x64.msi2018-01-18 12:09 18M 
[   ]cmake-3.10.2-win64-x64.zip2018-01-18 12:09 25M 
[   ]cmake-3.10.2.tar.Z2018-01-18 12:09 12M 
[   ]cmake-3.10.2.tar.gz2018-01-18 12:09 7.5M 
[   ]cmake-3.10.2.zip2018-01-18 12:08 12M 
[   ]cmake-3.10.3-Darwin-x86_64.dmg2018-03-16 09:38 26M 
[   ]cmake-3.10.3-Darwin-x86_64.tar.gz2018-03-16 09:38 26M 
[TXT]cmake-3.10.3-Linux-x86_64.sh2018-03-16 09:38 33M 
[   ]cmake-3.10.3-Linux-x86_64.tar.gz2018-03-16 09:38 33M 
[TXT]cmake-3.10.3-SHA-256.txt2018-03-16 09:38 1.0K 
[TXT]cmake-3.10.3-SHA-256.txt.asc2018-03-16 09:38 833  
[   ]cmake-3.10.3-win32-x86.msi2018-03-16 09:38 15M 
[   ]cmake-3.10.3-win32-x86.zip2018-03-16 09:38 21M 
[   ]cmake-3.10.3-win64-x64.msi2018-03-16 09:38 18M 
[   ]cmake-3.10.3-win64-x64.zip2018-03-16 09:38 25M 
[   ]cmake-3.10.3.tar.Z2018-03-16 09:38 12M 
[   ]cmake-3.10.3.tar.gz2018-03-16 09:38 7.5M 
[   ]cmake-3.10.3.zip2018-03-16 09:38 12M 

+ diff --git a/poky/bitbake/lib/bb/tests/fetch-testdata/files/v3.11/index.html b/poky/bitbake/lib/bb/tests/fetch-testdata/files/v3.11/index.html new file mode 100644 index 000000000..869d7427a --- /dev/null +++ b/poky/bitbake/lib/bb/tests/fetch-testdata/files/v3.11/index.html @@ -0,0 +1,131 @@ + + + + Index of /files/v3.11 + + +

Index of /files/v3.11

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
[ICO]NameLast modifiedSizeDescription

[PARENTDIR]Parent Directory  -  
[   ]cmake-3.11.0-Darwin-x86_64.dmg2018-03-28 13:40 26M 
[   ]cmake-3.11.0-Darwin-x86_64.tar.gz2018-03-28 13:40 26M 
[TXT]cmake-3.11.0-Linux-x86_64.sh2018-03-28 13:40 33M 
[   ]cmake-3.11.0-Linux-x86_64.tar.gz2018-03-28 13:40 33M 
[TXT]cmake-3.11.0-SHA-256.txt2018-03-28 13:40 1.0K 
[TXT]cmake-3.11.0-SHA-256.txt.asc2018-03-28 13:40 833  
[   ]cmake-3.11.0-rc1-Darwin-x86_64.dmg2018-02-15 11:53 26M 
[   ]cmake-3.11.0-rc1-Darwin-x86_64.tar.gz2018-02-15 11:53 26M 
[TXT]cmake-3.11.0-rc1-Linux-x86_64.sh2018-02-15 11:53 33M 
[   ]cmake-3.11.0-rc1-Linux-x86_64.tar.gz2018-02-15 11:53 33M 
[TXT]cmake-3.11.0-rc1-SHA-256.txt2018-02-15 11:53 1.0K 
[TXT]cmake-3.11.0-rc1-SHA-256.txt.asc2018-02-15 11:53 833  
[   ]cmake-3.11.0-rc1-win32-x86.msi2018-02-15 11:53 16M 
[   ]cmake-3.11.0-rc1-win32-x86.zip2018-02-15 11:53 22M 
[   ]cmake-3.11.0-rc1-win64-x64.msi2018-02-15 11:53 19M 
[   ]cmake-3.11.0-rc1-win64-x64.zip2018-02-15 11:53 26M 
[   ]cmake-3.11.0-rc1.tar.Z2018-02-15 11:52 12M 
[   ]cmake-3.11.0-rc1.tar.gz2018-02-15 11:52 7.6M 
[   ]cmake-3.11.0-rc1.zip2018-02-15 11:52 13M 
[   ]cmake-3.11.0-rc2-Darwin-x86_64.dmg2018-02-27 11:09 26M 
[   ]cmake-3.11.0-rc2-Darwin-x86_64.tar.gz2018-02-27 11:09 26M 
[TXT]cmake-3.11.0-rc2-Linux-x86_64.sh2018-02-27 11:09 33M 
[   ]cmake-3.11.0-rc2-Linux-x86_64.tar.gz2018-02-27 11:09 33M 
[TXT]cmake-3.11.0-rc2-SHA-256.txt2018-02-27 11:09 1.0K 
[TXT]cmake-3.11.0-rc2-SHA-256.txt.asc2018-02-27 11:09 833  
[   ]cmake-3.11.0-rc2-win32-x86.msi2018-02-27 11:09 16M 
[   ]cmake-3.11.0-rc2-win32-x86.zip2018-02-27 11:09 22M 
[   ]cmake-3.11.0-rc2-win64-x64.msi2018-02-27 11:09 19M 
[   ]cmake-3.11.0-rc2-win64-x64.zip2018-02-27 11:09 26M 
[   ]cmake-3.11.0-rc2.tar.Z2018-02-27 11:09 12M 
[   ]cmake-3.11.0-rc2.tar.gz2018-02-27 11:09 7.6M 
[   ]cmake-3.11.0-rc2.zip2018-02-27 11:09 13M 
[   ]cmake-3.11.0-rc3-Darwin-x86_64.dmg2018-03-09 13:46 26M 
[   ]cmake-3.11.0-rc3-Darwin-x86_64.tar.gz2018-03-09 13:46 26M 
[TXT]cmake-3.11.0-rc3-Linux-x86_64.sh2018-03-09 13:46 33M 
[   ]cmake-3.11.0-rc3-Linux-x86_64.tar.gz2018-03-09 13:46 33M 
[TXT]cmake-3.11.0-rc3-SHA-256.txt2018-03-09 13:46 1.0K 
[TXT]cmake-3.11.0-rc3-SHA-256.txt.asc2018-03-09 13:46 833  
[   ]cmake-3.11.0-rc3-win32-x86.msi2018-03-09 13:46 16M 
[   ]cmake-3.11.0-rc3-win32-x86.zip2018-03-09 13:45 22M 
[   ]cmake-3.11.0-rc3-win64-x64.msi2018-03-09 13:45 19M 
[   ]cmake-3.11.0-rc3-win64-x64.zip2018-03-09 13:45 26M 
[   ]cmake-3.11.0-rc3.tar.Z2018-03-09 13:45 12M 
[   ]cmake-3.11.0-rc3.tar.gz2018-03-09 13:45 7.6M 
[   ]cmake-3.11.0-rc3.zip2018-03-09 13:45 13M 
[   ]cmake-3.11.0-rc4-Darwin-x86_64.dmg2018-03-19 11:07 26M 
[   ]cmake-3.11.0-rc4-Darwin-x86_64.tar.gz2018-03-19 11:07 26M 
[TXT]cmake-3.11.0-rc4-Linux-x86_64.sh2018-03-19 11:06 33M 
[   ]cmake-3.11.0-rc4-Linux-x86_64.tar.gz2018-03-19 11:06 33M 
[TXT]cmake-3.11.0-rc4-SHA-256.txt2018-03-19 11:06 1.0K 
[TXT]cmake-3.11.0-rc4-SHA-256.txt.asc2018-03-19 11:06 833  
[   ]cmake-3.11.0-rc4-win32-x86.msi2018-03-19 11:06 16M 
[   ]cmake-3.11.0-rc4-win32-x86.zip2018-03-19 11:06 22M 
[   ]cmake-3.11.0-rc4-win64-x64.msi2018-03-19 11:06 19M 
[   ]cmake-3.11.0-rc4-win64-x64.zip2018-03-19 11:06 26M 
[   ]cmake-3.11.0-rc4.tar.Z2018-03-19 11:06 12M 
[   ]cmake-3.11.0-rc4.tar.gz2018-03-19 11:06 7.6M 
[   ]cmake-3.11.0-rc4.zip2018-03-19 11:06 13M 
[   ]cmake-3.11.0-win32-x86.msi2018-03-28 13:40 16M 
[   ]cmake-3.11.0-win32-x86.zip2018-03-28 13:40 22M 
[   ]cmake-3.11.0-win64-x64.msi2018-03-28 13:40 19M 
[   ]cmake-3.11.0-win64-x64.zip2018-03-28 13:40 26M 
[   ]cmake-3.11.0.tar.Z2018-03-28 13:40 12M 
[   ]cmake-3.11.0.tar.gz2018-03-28 13:40 7.6M 
[   ]cmake-3.11.0.zip2018-03-28 13:40 13M 
[   ]cmake-3.11.1-Darwin-x86_64.dmg2018-04-17 11:33 26M 
[   ]cmake-3.11.1-Darwin-x86_64.tar.gz2018-04-17 11:32 26M 
[TXT]cmake-3.11.1-Linux-x86_64.sh2018-04-17 11:32 33M 
[   ]cmake-3.11.1-Linux-x86_64.tar.gz2018-04-17 11:32 33M 
[TXT]cmake-3.11.1-SHA-256.txt2018-04-17 11:32 1.0K 
[TXT]cmake-3.11.1-SHA-256.txt.asc2018-04-17 11:32 833  
[   ]cmake-3.11.1-win32-x86.msi2018-04-17 11:32 16M 
[   ]cmake-3.11.1-win32-x86.zip2018-04-17 11:32 22M 
[   ]cmake-3.11.1-win64-x64.msi2018-04-17 11:32 19M 
[   ]cmake-3.11.1-win64-x64.zip2018-04-17 11:32 26M 
[   ]cmake-3.11.1.tar.Z2018-04-17 11:32 12M 
[   ]cmake-3.11.1.tar.gz2018-04-17 11:32 7.6M 
[   ]cmake-3.11.1.zip2018-04-17 11:32 13M 
[   ]cmake-3.11.2-Darwin-x86_64.dmg2018-05-17 12:45 26M 
[   ]cmake-3.11.2-Darwin-x86_64.tar.gz2018-05-17 12:45 26M 
[TXT]cmake-3.11.2-Linux-x86_64.sh2018-05-17 12:45 33M 
[   ]cmake-3.11.2-Linux-x86_64.tar.gz2018-05-17 12:45 33M 
[TXT]cmake-3.11.2-SHA-256.txt2018-05-17 12:45 1.0K 
[TXT]cmake-3.11.2-SHA-256.txt.asc2018-05-17 12:45 833  
[   ]cmake-3.11.2-win32-x86.msi2018-05-17 12:45 16M 
[   ]cmake-3.11.2-win32-x86.zip2018-05-17 12:45 22M 
[   ]cmake-3.11.2-win64-x64.msi2018-05-17 12:45 18M 
[   ]cmake-3.11.2-win64-x64.zip2018-05-17 12:44 25M 
[   ]cmake-3.11.2.tar.Z2018-05-17 12:44 12M 
[   ]cmake-3.11.2.tar.gz2018-05-17 12:44 7.6M 
[   ]cmake-3.11.2.zip2018-05-17 12:44 13M 
[   ]cmake-3.11.3-Darwin-x86_64.dmg2018-05-31 15:53 26M 
[   ]cmake-3.11.3-Darwin-x86_64.tar.gz2018-05-31 15:53 26M 
[TXT]cmake-3.11.3-Linux-x86_64.sh2018-05-31 15:53 33M 
[   ]cmake-3.11.3-Linux-x86_64.tar.gz2018-05-31 15:52 33M 
[TXT]cmake-3.11.3-SHA-256.txt2018-05-31 15:52 1.0K 
[TXT]cmake-3.11.3-SHA-256.txt.asc2018-05-31 15:52 833  
[   ]cmake-3.11.3-win32-x86.msi2018-05-31 15:52 16M 
[   ]cmake-3.11.3-win32-x86.zip2018-05-31 15:52 22M 
[   ]cmake-3.11.3-win64-x64.msi2018-05-31 15:52 18M 
[   ]cmake-3.11.3-win64-x64.zip2018-05-31 15:52 25M 
[   ]cmake-3.11.3.tar.Z2018-05-31 15:52 12M 
[   ]cmake-3.11.3.tar.gz2018-05-31 15:52 7.6M 
[   ]cmake-3.11.3.zip2018-05-31 15:52 13M 
[   ]cmake-3.11.4-Darwin-x86_64.dmg2018-06-14 13:50 26M 
[   ]cmake-3.11.4-Darwin-x86_64.tar.gz2018-06-14 13:50 26M 
[TXT]cmake-3.11.4-Linux-x86_64.sh2018-06-14 13:50 33M 
[   ]cmake-3.11.4-Linux-x86_64.tar.gz2018-06-14 13:50 33M 
[TXT]cmake-3.11.4-SHA-256.txt2018-06-14 13:50 1.0K 
[TXT]cmake-3.11.4-SHA-256.txt.asc2018-06-14 13:50 833  
[   ]cmake-3.11.4-win32-x86.msi2018-06-14 13:50 16M 
[   ]cmake-3.11.4-win32-x86.zip2018-06-14 13:50 22M 
[   ]cmake-3.11.4-win64-x64.msi2018-06-14 13:50 18M 
[   ]cmake-3.11.4-win64-x64.zip2018-06-14 13:50 25M 
[   ]cmake-3.11.4.tar.Z2018-06-14 13:50 12M 
[   ]cmake-3.11.4.tar.gz2018-06-14 13:50 7.6M 
[   ]cmake-3.11.4.zip2018-06-14 13:50 13M 

+ diff --git a/poky/bitbake/lib/bb/tests/fetch-testdata/files/v3.12/index.html b/poky/bitbake/lib/bb/tests/fetch-testdata/files/v3.12/index.html new file mode 100644 index 000000000..1977e7e07 --- /dev/null +++ b/poky/bitbake/lib/bb/tests/fetch-testdata/files/v3.12/index.html @@ -0,0 +1,118 @@ + + + + Index of /files/v3.12 + + +

Index of /files/v3.12

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
[ICO]NameLast modifiedSizeDescription

[PARENTDIR]Parent Directory  -  
[   ]cmake-3.12.0-Darwin-x86_64.dmg2018-07-17 09:58 27M 
[   ]cmake-3.12.0-Darwin-x86_64.tar.gz2018-07-17 09:58 27M 
[TXT]cmake-3.12.0-Linux-x86_64.sh2018-07-17 09:58 33M 
[   ]cmake-3.12.0-Linux-x86_64.tar.gz2018-07-17 09:58 33M 
[TXT]cmake-3.12.0-SHA-256.txt2018-07-17 09:58 1.0K 
[TXT]cmake-3.12.0-SHA-256.txt.asc2018-07-17 09:58 833  
[   ]cmake-3.12.0-rc1-Darwin-x86_64.dmg2018-06-14 15:01 27M 
[   ]cmake-3.12.0-rc1-Darwin-x86_64.tar.gz2018-06-14 15:01 27M 
[TXT]cmake-3.12.0-rc1-Linux-x86_64.sh2018-06-14 15:01 29M 
[   ]cmake-3.12.0-rc1-Linux-x86_64.tar.gz2018-06-14 15:01 29M 
[TXT]cmake-3.12.0-rc1-SHA-256.txt2018-06-14 15:01 1.0K 
[TXT]cmake-3.12.0-rc1-SHA-256.txt.asc2018-06-14 15:01 833  
[   ]cmake-3.12.0-rc1-win32-x86.msi2018-06-14 15:01 16M 
[   ]cmake-3.12.0-rc1-win32-x86.zip2018-06-14 15:01 23M 
[   ]cmake-3.12.0-rc1-win64-x64.msi2018-06-14 15:01 18M 
[   ]cmake-3.12.0-rc1-win64-x64.zip2018-06-14 15:01 25M 
[   ]cmake-3.12.0-rc1.tar.Z2018-06-14 15:01 13M 
[   ]cmake-3.12.0-rc1.tar.gz2018-06-14 15:01 7.7M 
[   ]cmake-3.12.0-rc1.zip2018-06-14 15:01 13M 
[   ]cmake-3.12.0-rc2-Darwin-x86_64.dmg2018-06-29 13:57 27M 
[   ]cmake-3.12.0-rc2-Darwin-x86_64.tar.gz2018-06-29 13:57 27M 
[TXT]cmake-3.12.0-rc2-Linux-x86_64.sh2018-06-29 13:57 29M 
[   ]cmake-3.12.0-rc2-Linux-x86_64.tar.gz2018-06-29 13:57 29M 
[TXT]cmake-3.12.0-rc2-SHA-256.txt2018-06-29 13:57 1.0K 
[TXT]cmake-3.12.0-rc2-SHA-256.txt.asc2018-06-29 13:57 833  
[   ]cmake-3.12.0-rc2-win32-x86.msi2018-06-29 13:56 16M 
[   ]cmake-3.12.0-rc2-win32-x86.zip2018-06-29 13:56 23M 
[   ]cmake-3.12.0-rc2-win64-x64.msi2018-06-29 13:56 18M 
[   ]cmake-3.12.0-rc2-win64-x64.zip2018-06-29 13:56 25M 
[   ]cmake-3.12.0-rc2.tar.Z2018-06-29 13:56 13M 
[   ]cmake-3.12.0-rc2.tar.gz2018-06-29 13:56 7.7M 
[   ]cmake-3.12.0-rc2.zip2018-06-29 13:56 13M 
[   ]cmake-3.12.0-rc3-Darwin-x86_64.dmg2018-07-09 11:38 27M 
[   ]cmake-3.12.0-rc3-Darwin-x86_64.tar.gz2018-07-09 11:38 27M 
[TXT]cmake-3.12.0-rc3-Linux-x86_64.sh2018-07-09 11:38 33M 
[   ]cmake-3.12.0-rc3-Linux-x86_64.tar.gz2018-07-09 11:38 33M 
[TXT]cmake-3.12.0-rc3-SHA-256.txt2018-07-09 11:38 1.0K 
[TXT]cmake-3.12.0-rc3-SHA-256.txt.asc2018-07-09 11:38 833  
[   ]cmake-3.12.0-rc3-win32-x86.msi2018-07-09 11:38 16M 
[   ]cmake-3.12.0-rc3-win32-x86.zip2018-07-09 11:38 23M 
[   ]cmake-3.12.0-rc3-win64-x64.msi2018-07-09 11:37 18M 
[   ]cmake-3.12.0-rc3-win64-x64.zip2018-07-09 11:37 25M 
[   ]cmake-3.12.0-rc3.tar.Z2018-07-09 11:37 13M 
[   ]cmake-3.12.0-rc3.tar.gz2018-07-09 11:37 7.7M 
[   ]cmake-3.12.0-rc3.zip2018-07-09 11:37 13M 
[   ]cmake-3.12.0-win32-x86.msi2018-07-17 09:58 16M 
[   ]cmake-3.12.0-win32-x86.zip2018-07-17 09:58 23M 
[   ]cmake-3.12.0-win64-x64.msi2018-07-17 09:58 18M 
[   ]cmake-3.12.0-win64-x64.zip2018-07-17 09:58 25M 
[   ]cmake-3.12.0.tar.Z2018-07-17 09:58 13M 
[   ]cmake-3.12.0.tar.gz2018-07-17 09:58 7.7M 
[   ]cmake-3.12.0.zip2018-07-17 09:57 13M 
[   ]cmake-3.12.1-Darwin-x86_64.dmg2018-08-09 11:21 27M 
[   ]cmake-3.12.1-Darwin-x86_64.tar.gz2018-08-09 11:21 27M 
[TXT]cmake-3.12.1-Linux-x86_64.sh2018-08-09 11:21 33M 
[   ]cmake-3.12.1-Linux-x86_64.tar.gz2018-08-09 11:21 33M 
[TXT]cmake-3.12.1-SHA-256.txt2018-08-09 11:20 1.0K 
[TXT]cmake-3.12.1-SHA-256.txt.asc2018-08-09 11:20 833  
[   ]cmake-3.12.1-win32-x86.msi2018-08-09 11:20 16M 
[   ]cmake-3.12.1-win32-x86.zip2018-08-09 11:20 23M 
[   ]cmake-3.12.1-win64-x64.msi2018-08-09 11:20 18M 
[   ]cmake-3.12.1-win64-x64.zip2018-08-09 11:20 25M 
[   ]cmake-3.12.1.tar.Z2018-08-09 11:20 13M 
[   ]cmake-3.12.1.tar.gz2018-08-09 11:20 7.7M 
[   ]cmake-3.12.1.zip2018-08-09 11:20 13M 
[   ]cmake-3.12.2-Darwin-x86_64.dmg2018-09-07 12:51 28M 
[   ]cmake-3.12.2-Darwin-x86_64.tar.gz2018-09-07 12:51 28M 
[TXT]cmake-3.12.2-Linux-x86_64.sh2018-09-07 12:51 33M 
[   ]cmake-3.12.2-Linux-x86_64.tar.gz2018-09-07 12:51 33M 
[TXT]cmake-3.12.2-SHA-256.txt2018-09-07 12:51 1.0K 
[TXT]cmake-3.12.2-SHA-256.txt.asc2018-09-07 12:51 833  
[   ]cmake-3.12.2-win32-x86.msi2018-09-07 12:51 16M 
[   ]cmake-3.12.2-win32-x86.zip2018-09-07 12:51 22M 
[   ]cmake-3.12.2-win64-x64.msi2018-09-07 12:51 18M 
[   ]cmake-3.12.2-win64-x64.zip2018-09-07 12:51 25M 
[   ]cmake-3.12.2.tar.Z2018-09-07 12:51 13M 
[   ]cmake-3.12.2.tar.gz2018-09-07 12:51 8.0M 
[   ]cmake-3.12.2.zip2018-09-07 12:51 13M 
[   ]cmake-3.12.3-Darwin-x86_64.dmg2018-10-03 10:46 28M 
[   ]cmake-3.12.3-Darwin-x86_64.tar.gz2018-10-03 10:46 28M 
[TXT]cmake-3.12.3-Linux-x86_64.sh2018-10-03 10:45 33M 
[   ]cmake-3.12.3-Linux-x86_64.tar.gz2018-10-03 10:45 33M 
[TXT]cmake-3.12.3-SHA-256.txt2018-10-03 10:45 1.0K 
[TXT]cmake-3.12.3-SHA-256.txt.asc2018-10-03 10:45 833  
[   ]cmake-3.12.3-win32-x86.msi2018-10-03 10:45 16M 
[   ]cmake-3.12.3-win32-x86.zip2018-10-03 10:45 22M 
[   ]cmake-3.12.3-win64-x64.msi2018-10-03 10:45 18M 
[   ]cmake-3.12.3-win64-x64.zip2018-10-03 10:45 25M 
[   ]cmake-3.12.3.tar.Z2018-10-03 10:45 13M 
[   ]cmake-3.12.3.tar.gz2018-10-03 10:45 8.0M 
[   ]cmake-3.12.3.zip2018-10-03 10:45 13M 
[   ]cmake-3.12.4-Darwin-x86_64.dmg2018-11-02 13:51 28M 
[   ]cmake-3.12.4-Darwin-x86_64.tar.gz2018-11-02 13:51 28M 
[TXT]cmake-3.12.4-Linux-x86_64.sh2018-11-02 13:51 33M 
[   ]cmake-3.12.4-Linux-x86_64.tar.gz2018-11-02 13:51 33M 
[TXT]cmake-3.12.4-SHA-256.txt2018-11-02 13:51 1.0K 
[TXT]cmake-3.12.4-SHA-256.txt.asc2018-11-02 13:51 833  
[   ]cmake-3.12.4-win32-x86.msi2018-11-02 13:51 16M 
[   ]cmake-3.12.4-win32-x86.zip2018-11-02 13:51 22M 
[   ]cmake-3.12.4-win64-x64.msi2018-11-02 13:51 18M 
[   ]cmake-3.12.4-win64-x64.zip2018-11-02 13:51 25M 
[   ]cmake-3.12.4.tar.Z2018-11-02 13:51 13M 
[   ]cmake-3.12.4.tar.gz2018-11-02 13:51 8.0M 
[   ]cmake-3.12.4.zip2018-11-02 13:51 13M 

+ diff --git a/poky/bitbake/lib/bb/tests/fetch-testdata/files/v3.13/index.html b/poky/bitbake/lib/bb/tests/fetch-testdata/files/v3.13/index.html new file mode 100644 index 000000000..b50a791b8 --- /dev/null +++ b/poky/bitbake/lib/bb/tests/fetch-testdata/files/v3.13/index.html @@ -0,0 +1,131 @@ + + + + Index of /files/v3.13 + + +

Index of /files/v3.13

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
[ICO]NameLast modifiedSizeDescription

[PARENTDIR]Parent Directory  -  
[   ]cmake-3.13.0-Darwin-x86_64.dmg2018-11-20 14:05 31M 
[   ]cmake-3.13.0-Darwin-x86_64.tar.gz2018-11-20 14:05 31M 
[TXT]cmake-3.13.0-Linux-x86_64.sh2018-11-20 14:05 37M 
[   ]cmake-3.13.0-Linux-x86_64.tar.gz2018-11-20 14:05 37M 
[TXT]cmake-3.13.0-SHA-256.txt2018-11-20 14:05 1.0K 
[TXT]cmake-3.13.0-SHA-256.txt.asc2018-11-20 14:05 833  
[   ]cmake-3.13.0-rc1-Darwin-x86_64.dmg2018-10-09 11:32 29M 
[   ]cmake-3.13.0-rc1-Darwin-x86_64.tar.gz2018-10-09 11:32 28M 
[TXT]cmake-3.13.0-rc1-Linux-x86_64.sh2018-10-09 11:32 34M 
[   ]cmake-3.13.0-rc1-Linux-x86_64.tar.gz2018-10-09 11:32 34M 
[TXT]cmake-3.13.0-rc1-SHA-256.txt2018-10-09 11:32 1.0K 
[TXT]cmake-3.13.0-rc1-SHA-256.txt.asc2018-10-09 11:32 833  
[   ]cmake-3.13.0-rc1-win32-x86.msi2018-10-09 11:32 16M 
[   ]cmake-3.13.0-rc1-win32-x86.zip2018-10-09 11:32 23M 
[   ]cmake-3.13.0-rc1-win64-x64.msi2018-10-09 11:32 19M 
[   ]cmake-3.13.0-rc1-win64-x64.zip2018-10-09 11:32 26M 
[   ]cmake-3.13.0-rc1.tar.Z2018-10-09 11:32 13M 
[   ]cmake-3.13.0-rc1.tar.gz2018-10-09 11:32 8.2M 
[   ]cmake-3.13.0-rc1.zip2018-10-09 11:32 13M 
[   ]cmake-3.13.0-rc2-Darwin-x86_64.dmg2018-10-25 10:28 31M 
[   ]cmake-3.13.0-rc2-Darwin-x86_64.tar.gz2018-10-25 10:28 31M 
[TXT]cmake-3.13.0-rc2-Linux-x86_64.sh2018-10-25 10:27 37M 
[   ]cmake-3.13.0-rc2-Linux-x86_64.tar.gz2018-10-25 10:27 37M 
[TXT]cmake-3.13.0-rc2-SHA-256.txt2018-10-25 10:27 1.0K 
[TXT]cmake-3.13.0-rc2-SHA-256.txt.asc2018-10-25 10:27 833  
[   ]cmake-3.13.0-rc2-win32-x86.msi2018-10-25 10:27 19M 
[   ]cmake-3.13.0-rc2-win32-x86.zip2018-10-25 10:27 25M 
[   ]cmake-3.13.0-rc2-win64-x64.msi2018-10-25 10:27 21M 
[   ]cmake-3.13.0-rc2-win64-x64.zip2018-10-25 10:27 28M 
[   ]cmake-3.13.0-rc2.tar.Z2018-10-25 10:27 13M 
[   ]cmake-3.13.0-rc2.tar.gz2018-10-25 10:27 8.2M 
[   ]cmake-3.13.0-rc2.zip2018-10-25 10:27 13M 
[   ]cmake-3.13.0-rc3-Darwin-x86_64.dmg2018-11-07 12:11 31M 
[   ]cmake-3.13.0-rc3-Darwin-x86_64.tar.gz2018-11-07 12:11 31M 
[TXT]cmake-3.13.0-rc3-Linux-x86_64.sh2018-11-07 12:11 37M 
[   ]cmake-3.13.0-rc3-Linux-x86_64.tar.gz2018-11-07 12:11 37M 
[TXT]cmake-3.13.0-rc3-SHA-256.txt2018-11-07 12:11 1.0K 
[TXT]cmake-3.13.0-rc3-SHA-256.txt.asc2018-11-07 12:11 833  
[   ]cmake-3.13.0-rc3-win32-x86.msi2018-11-07 12:11 19M 
[   ]cmake-3.13.0-rc3-win32-x86.zip2018-11-07 12:11 25M 
[   ]cmake-3.13.0-rc3-win64-x64.msi2018-11-07 12:11 21M 
[   ]cmake-3.13.0-rc3-win64-x64.zip2018-11-07 12:11 28M 
[   ]cmake-3.13.0-rc3.tar.Z2018-11-07 12:11 13M 
[   ]cmake-3.13.0-rc3.tar.gz2018-11-07 12:11 8.2M 
[   ]cmake-3.13.0-rc3.zip2018-11-07 12:11 13M 
[   ]cmake-3.13.0-win32-x86.msi2018-11-20 14:05 19M 
[   ]cmake-3.13.0-win32-x86.zip2018-11-20 14:05 25M 
[   ]cmake-3.13.0-win64-x64.msi2018-11-20 14:05 21M 
[   ]cmake-3.13.0-win64-x64.zip2018-11-20 14:05 28M 
[   ]cmake-3.13.0.tar.Z2018-11-20 14:04 13M 
[   ]cmake-3.13.0.tar.gz2018-11-20 14:04 8.2M 
[   ]cmake-3.13.0.zip2018-11-20 14:04 13M 
[   ]cmake-3.13.1-Darwin-x86_64.dmg2018-11-28 08:50 31M 
[   ]cmake-3.13.1-Darwin-x86_64.tar.gz2018-11-28 08:50 31M 
[TXT]cmake-3.13.1-Linux-x86_64.sh2018-11-28 08:50 37M 
[   ]cmake-3.13.1-Linux-x86_64.tar.gz2018-11-28 08:50 37M 
[TXT]cmake-3.13.1-SHA-256.txt2018-11-28 08:50 1.0K 
[TXT]cmake-3.13.1-SHA-256.txt.asc2018-11-28 08:50 833  
[   ]cmake-3.13.1-win32-x86.msi2018-11-28 08:50 19M 
[   ]cmake-3.13.1-win32-x86.zip2018-11-28 08:50 25M 
[   ]cmake-3.13.1-win64-x64.msi2018-11-28 08:50 21M 
[   ]cmake-3.13.1-win64-x64.zip2018-11-28 08:50 28M 
[   ]cmake-3.13.1.tar.Z2018-11-28 08:50 13M 
[   ]cmake-3.13.1.tar.gz2018-11-28 08:50 8.2M 
[   ]cmake-3.13.1.zip2018-11-28 08:50 13M 
[   ]cmake-3.13.2-Darwin-x86_64.dmg2018-12-13 08:41 31M 
[   ]cmake-3.13.2-Darwin-x86_64.tar.gz2018-12-13 08:41 31M 
[TXT]cmake-3.13.2-Linux-x86_64.sh2018-12-13 08:41 37M 
[   ]cmake-3.13.2-Linux-x86_64.tar.gz2018-12-13 08:41 37M 
[TXT]cmake-3.13.2-SHA-256.txt2018-12-13 08:41 1.0K 
[TXT]cmake-3.13.2-SHA-256.txt.asc2018-12-13 08:41 833  
[   ]cmake-3.13.2-win32-x86.msi2018-12-13 08:41 19M 
[   ]cmake-3.13.2-win32-x86.zip2018-12-13 08:41 25M 
[   ]cmake-3.13.2-win64-x64.msi2018-12-13 08:41 21M 
[   ]cmake-3.13.2-win64-x64.zip2018-12-13 08:41 28M 
[   ]cmake-3.13.2.tar.Z2018-12-13 08:41 13M 
[   ]cmake-3.13.2.tar.gz2018-12-13 08:41 8.2M 
[   ]cmake-3.13.2.zip2018-12-13 08:41 13M 
[   ]cmake-3.13.3-Darwin-x86_64.dmg2019-01-14 09:26 31M 
[   ]cmake-3.13.3-Darwin-x86_64.tar.gz2019-01-14 09:26 31M 
[TXT]cmake-3.13.3-Linux-x86_64.sh2019-01-14 09:25 37M 
[   ]cmake-3.13.3-Linux-x86_64.tar.gz2019-01-14 09:25 37M 
[TXT]cmake-3.13.3-SHA-256.txt2019-01-14 09:25 1.0K 
[TXT]cmake-3.13.3-SHA-256.txt.asc2019-01-14 09:25 833  
[   ]cmake-3.13.3-win32-x86.msi2019-01-14 09:25 19M 
[   ]cmake-3.13.3-win32-x86.zip2019-01-14 09:25 25M 
[   ]cmake-3.13.3-win64-x64.msi2019-01-14 09:25 21M 
[   ]cmake-3.13.3-win64-x64.zip2019-01-14 09:25 28M 
[   ]cmake-3.13.3.tar.Z2019-01-14 09:25 13M 
[   ]cmake-3.13.3.tar.gz2019-01-14 09:25 8.2M 
[   ]cmake-3.13.3.zip2019-01-14 09:25 13M 
[   ]cmake-3.13.4-Darwin-x86_64.dmg2019-02-01 13:20 31M 
[   ]cmake-3.13.4-Darwin-x86_64.tar.gz2019-02-01 13:20 31M 
[TXT]cmake-3.13.4-Linux-x86_64.sh2019-02-01 13:20 37M 
[   ]cmake-3.13.4-Linux-x86_64.tar.gz2019-02-01 13:20 37M 
[TXT]cmake-3.13.4-SHA-256.txt2019-02-01 13:20 1.0K 
[TXT]cmake-3.13.4-SHA-256.txt.asc2019-02-01 13:20 833  
[   ]cmake-3.13.4-win32-x86.msi2019-02-01 13:20 19M 
[   ]cmake-3.13.4-win32-x86.zip2019-02-01 13:20 25M 
[   ]cmake-3.13.4-win64-x64.msi2019-02-01 13:20 21M 
[   ]cmake-3.13.4-win64-x64.zip2019-02-01 13:20 28M 
[   ]cmake-3.13.4.tar.Z2019-02-01 13:20 13M 
[   ]cmake-3.13.4.tar.gz2019-02-01 13:20 8.2M 
[   ]cmake-3.13.4.zip2019-02-01 13:20 13M 
[   ]cmake-3.13.5-Darwin-x86_64.dmg2019-05-14 12:44 31M 
[   ]cmake-3.13.5-Darwin-x86_64.tar.gz2019-05-14 12:44 31M 
[TXT]cmake-3.13.5-Linux-x86_64.sh2019-05-14 12:44 37M 
[   ]cmake-3.13.5-Linux-x86_64.tar.gz2019-05-14 12:44 37M 
[TXT]cmake-3.13.5-SHA-256.txt2019-05-14 12:43 1.0K 
[TXT]cmake-3.13.5-SHA-256.txt.asc2019-05-14 12:43 833  
[   ]cmake-3.13.5-win32-x86.msi2019-05-14 12:43 19M 
[   ]cmake-3.13.5-win32-x86.zip2019-05-14 12:43 25M 
[   ]cmake-3.13.5-win64-x64.msi2019-05-14 12:43 21M 
[   ]cmake-3.13.5-win64-x64.zip2019-05-14 12:43 28M 
[   ]cmake-3.13.5.tar.Z2019-05-14 12:43 13M 
[   ]cmake-3.13.5.tar.gz2019-05-14 12:43 8.2M 
[   ]cmake-3.13.5.zip2019-05-14 12:43 13M 

+ diff --git a/poky/bitbake/lib/bb/tests/fetch-testdata/files/v3.14/index.html b/poky/bitbake/lib/bb/tests/fetch-testdata/files/v3.14/index.html new file mode 100644 index 000000000..bec9c14d4 --- /dev/null +++ b/poky/bitbake/lib/bb/tests/fetch-testdata/files/v3.14/index.html @@ -0,0 +1,170 @@ + + + + Index of /files/v3.14 + + +

Index of /files/v3.14

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
[ICO]NameLast modifiedSizeDescription

[PARENTDIR]Parent Directory  -  
[   ]cmake-3.14.0-Darwin-x86_64.dmg2019-03-14 11:37 33M 
[   ]cmake-3.14.0-Darwin-x86_64.tar.gz2019-03-14 11:37 32M 
[TXT]cmake-3.14.0-Linux-x86_64.sh2019-03-14 11:37 35M 
[   ]cmake-3.14.0-Linux-x86_64.tar.gz2019-03-14 11:37 35M 
[TXT]cmake-3.14.0-SHA-256.txt2019-03-22 11:03 1.0K 
[TXT]cmake-3.14.0-SHA-256.txt.asc2019-03-22 11:03 833  
[   ]cmake-3.14.0-rc1-Darwin-x86_64.dmg2019-02-07 10:36 33M 
[   ]cmake-3.14.0-rc1-Darwin-x86_64.tar.gz2019-02-07 10:36 32M 
[TXT]cmake-3.14.0-rc1-Linux-x86_64.sh2019-02-07 10:36 35M 
[   ]cmake-3.14.0-rc1-Linux-x86_64.tar.gz2019-02-07 10:36 35M 
[TXT]cmake-3.14.0-rc1-SHA-256.txt2019-02-07 10:36 1.0K 
[TXT]cmake-3.14.0-rc1-SHA-256.txt.asc2019-02-07 10:36 833  
[   ]cmake-3.14.0-rc1-win32-x86.msi2019-02-07 10:36 19M 
[   ]cmake-3.14.0-rc1-win32-x86.zip2019-02-07 10:36 26M 
[   ]cmake-3.14.0-rc1-win64-x64.msi2019-02-07 10:36 22M 
[   ]cmake-3.14.0-rc1-win64-x64.zip2019-02-07 10:36 29M 
[   ]cmake-3.14.0-rc1.tar.Z2019-02-07 10:36 14M 
[   ]cmake-3.14.0-rc1.tar.gz2019-02-07 10:35 8.4M 
[   ]cmake-3.14.0-rc1.zip2019-02-07 10:35 14M 
[   ]cmake-3.14.0-rc2-Darwin-x86_64.dmg2019-02-15 10:04 33M 
[   ]cmake-3.14.0-rc2-Darwin-x86_64.tar.gz2019-02-15 10:04 32M 
[TXT]cmake-3.14.0-rc2-Linux-x86_64.sh2019-02-15 10:04 35M 
[   ]cmake-3.14.0-rc2-Linux-x86_64.tar.gz2019-02-15 10:04 35M 
[TXT]cmake-3.14.0-rc2-SHA-256.txt2019-02-15 10:04 1.0K 
[TXT]cmake-3.14.0-rc2-SHA-256.txt.asc2019-02-15 10:04 833  
[   ]cmake-3.14.0-rc2-win32-x86.msi2019-02-15 10:04 19M 
[   ]cmake-3.14.0-rc2-win32-x86.zip2019-02-15 10:04 26M 
[   ]cmake-3.14.0-rc2-win64-x64.msi2019-02-15 10:03 22M 
[   ]cmake-3.14.0-rc2-win64-x64.zip2019-02-15 10:03 29M 
[   ]cmake-3.14.0-rc2.tar.Z2019-02-15 10:03 14M 
[   ]cmake-3.14.0-rc2.tar.gz2019-02-15 10:03 8.4M 
[   ]cmake-3.14.0-rc2.zip2019-02-15 10:03 14M 
[   ]cmake-3.14.0-rc3-Darwin-x86_64.dmg2019-03-01 11:20 33M 
[   ]cmake-3.14.0-rc3-Darwin-x86_64.tar.gz2019-03-01 11:20 32M 
[TXT]cmake-3.14.0-rc3-Linux-x86_64.sh2019-03-01 11:20 35M 
[   ]cmake-3.14.0-rc3-Linux-x86_64.tar.gz2019-03-01 11:20 35M 
[TXT]cmake-3.14.0-rc3-SHA-256.txt2019-03-01 11:20 1.0K 
[TXT]cmake-3.14.0-rc3-SHA-256.txt.asc2019-03-01 11:20 833  
[   ]cmake-3.14.0-rc3-win32-x86.msi2019-03-01 11:20 19M 
[   ]cmake-3.14.0-rc3-win32-x86.zip2019-03-01 11:20 26M 
[   ]cmake-3.14.0-rc3-win64-x64.msi2019-03-01 11:20 22M 
[   ]cmake-3.14.0-rc3-win64-x64.zip2019-03-01 11:20 29M 
[   ]cmake-3.14.0-rc3.tar.Z2019-03-01 11:20 14M 
[   ]cmake-3.14.0-rc3.tar.gz2019-03-01 11:19 8.4M 
[   ]cmake-3.14.0-rc3.zip2019-03-01 11:19 14M 
[   ]cmake-3.14.0-rc4-Darwin-x86_64.dmg2019-03-08 11:09 33M 
[   ]cmake-3.14.0-rc4-Darwin-x86_64.tar.gz2019-03-08 11:09 32M 
[TXT]cmake-3.14.0-rc4-Linux-x86_64.sh2019-03-08 11:09 35M 
[   ]cmake-3.14.0-rc4-Linux-x86_64.tar.gz2019-03-08 11:09 35M 
[TXT]cmake-3.14.0-rc4-SHA-256.txt2019-03-08 11:09 1.0K 
[TXT]cmake-3.14.0-rc4-SHA-256.txt.asc2019-03-08 11:09 833  
[   ]cmake-3.14.0-rc4-win32-x86.msi2019-03-08 11:08 20M 
[   ]cmake-3.14.0-rc4-win32-x86.zip2019-03-08 11:08 26M 
[   ]cmake-3.14.0-rc4-win64-x64.msi2019-03-08 11:08 22M 
[   ]cmake-3.14.0-rc4-win64-x64.zip2019-03-08 11:08 30M 
[   ]cmake-3.14.0-rc4.tar.Z2019-03-08 11:08 14M 
[   ]cmake-3.14.0-rc4.tar.gz2019-03-08 11:08 8.4M 
[   ]cmake-3.14.0-rc4.zip2019-03-08 11:08 14M 
[   ]cmake-3.14.0-win32-x86.msi2019-03-14 11:36 20M 
[   ]cmake-3.14.0-win32-x86.zip2019-03-14 11:36 26M 
[   ]cmake-3.14.0-win64-x64.msi2019-03-22 11:03 22M 
[   ]cmake-3.14.0-win64-x64.zip2019-03-22 11:03 30M 
[   ]cmake-3.14.0.tar.Z2019-03-14 11:36 14M 
[   ]cmake-3.14.0.tar.gz2019-03-14 11:36 8.4M 
[   ]cmake-3.14.0.zip2019-03-14 11:36 14M 
[   ]cmake-3.14.1-Darwin-x86_64.dmg2019-03-29 12:20 33M 
[   ]cmake-3.14.1-Darwin-x86_64.tar.gz2019-03-29 12:20 32M 
[TXT]cmake-3.14.1-Linux-x86_64.sh2019-03-29 12:20 35M 
[   ]cmake-3.14.1-Linux-x86_64.tar.gz2019-03-29 12:19 35M 
[TXT]cmake-3.14.1-SHA-256.txt2019-03-29 12:19 1.0K 
[TXT]cmake-3.14.1-SHA-256.txt.asc2019-03-29 12:19 833  
[   ]cmake-3.14.1-win32-x86.msi2019-03-29 12:19 20M 
[   ]cmake-3.14.1-win32-x86.zip2019-03-29 12:19 26M 
[   ]cmake-3.14.1-win64-x64.msi2019-03-29 12:19 22M 
[   ]cmake-3.14.1-win64-x64.zip2019-03-29 12:19 30M 
[   ]cmake-3.14.1.tar.Z2019-03-29 12:19 14M 
[   ]cmake-3.14.1.tar.gz2019-03-29 12:19 8.4M 
[   ]cmake-3.14.1.zip2019-03-29 12:19 14M 
[   ]cmake-3.14.2-Darwin-x86_64.dmg2019-04-12 10:19 33M 
[   ]cmake-3.14.2-Darwin-x86_64.tar.gz2019-04-12 10:19 32M 
[TXT]cmake-3.14.2-Linux-x86_64.sh2019-04-12 10:19 35M 
[   ]cmake-3.14.2-Linux-x86_64.tar.gz2019-04-12 10:19 35M 
[TXT]cmake-3.14.2-SHA-256.txt2019-04-12 10:19 1.0K 
[TXT]cmake-3.14.2-SHA-256.txt.asc2019-04-12 10:19 833  
[   ]cmake-3.14.2-win32-x86.msi2019-04-12 10:19 20M 
[   ]cmake-3.14.2-win32-x86.zip2019-04-12 10:19 26M 
[   ]cmake-3.14.2-win64-x64.msi2019-04-12 10:19 22M 
[   ]cmake-3.14.2-win64-x64.zip2019-04-12 10:19 30M 
[   ]cmake-3.14.2.tar.Z2019-04-12 10:19 14M 
[   ]cmake-3.14.2.tar.gz2019-04-12 10:19 8.4M 
[   ]cmake-3.14.2.zip2019-04-12 10:19 14M 
[   ]cmake-3.14.3-Darwin-x86_64.dmg2019-04-22 10:40 33M 
[   ]cmake-3.14.3-Darwin-x86_64.tar.gz2019-04-22 10:39 32M 
[TXT]cmake-3.14.3-Linux-x86_64.sh2019-04-22 10:39 35M 
[   ]cmake-3.14.3-Linux-x86_64.tar.gz2019-04-22 10:39 35M 
[TXT]cmake-3.14.3-SHA-256.txt2019-04-22 10:39 1.0K 
[TXT]cmake-3.14.3-SHA-256.txt.asc2019-04-22 10:39 833  
[   ]cmake-3.14.3-win32-x86.msi2019-04-22 10:39 20M 
[   ]cmake-3.14.3-win32-x86.zip2019-04-22 10:39 26M 
[   ]cmake-3.14.3-win64-x64.msi2019-04-22 10:39 22M 
[   ]cmake-3.14.3-win64-x64.zip2019-04-22 10:39 30M 
[   ]cmake-3.14.3.tar.Z2019-04-22 10:39 14M 
[   ]cmake-3.14.3.tar.gz2019-04-22 10:39 8.4M 
[   ]cmake-3.14.3.zip2019-04-22 10:39 14M 
[   ]cmake-3.14.4-Darwin-x86_64.dmg2019-05-14 14:00 33M 
[   ]cmake-3.14.4-Darwin-x86_64.tar.gz2019-05-14 14:00 32M 
[TXT]cmake-3.14.4-Linux-x86_64.sh2019-05-14 14:00 35M 
[   ]cmake-3.14.4-Linux-x86_64.tar.gz2019-05-14 13:59 35M 
[TXT]cmake-3.14.4-SHA-256.txt2019-05-14 13:59 1.0K 
[TXT]cmake-3.14.4-SHA-256.txt.asc2019-05-14 13:59 833  
[   ]cmake-3.14.4-win32-x86.msi2019-05-14 13:59 20M 
[   ]cmake-3.14.4-win32-x86.zip2019-05-14 13:59 26M 
[   ]cmake-3.14.4-win64-x64.msi2019-05-14 13:59 22M 
[   ]cmake-3.14.4-win64-x64.zip2019-05-14 13:59 30M 
[   ]cmake-3.14.4.tar.Z2019-05-14 13:59 14M 
[   ]cmake-3.14.4.tar.gz2019-05-14 13:59 8.4M 
[   ]cmake-3.14.4.zip2019-05-14 13:59 14M 
[   ]cmake-3.14.5-Darwin-x86_64.dmg2019-05-31 12:39 33M 
[   ]cmake-3.14.5-Darwin-x86_64.tar.gz2019-05-31 12:39 32M 
[TXT]cmake-3.14.5-Linux-x86_64.sh2019-05-31 12:39 35M 
[   ]cmake-3.14.5-Linux-x86_64.tar.gz2019-05-31 12:39 35M 
[TXT]cmake-3.14.5-SHA-256.txt2019-05-31 12:39 1.0K 
[TXT]cmake-3.14.5-SHA-256.txt.asc2019-05-31 12:39 833  
[   ]cmake-3.14.5-win32-x86.msi2019-05-31 12:39 20M 
[   ]cmake-3.14.5-win32-x86.zip2019-05-31 12:39 26M 
[   ]cmake-3.14.5-win64-x64.msi2019-05-31 12:39 22M 
[   ]cmake-3.14.5-win64-x64.zip2019-05-31 12:39 30M 
[   ]cmake-3.14.5.tar.Z2019-05-31 12:39 14M 
[   ]cmake-3.14.5.tar.gz2019-05-31 12:39 8.4M 
[   ]cmake-3.14.5.zip2019-05-31 12:40 14M 
[   ]cmake-3.14.6-Darwin-x86_64.dmg2019-07-16 09:33 33M 
[   ]cmake-3.14.6-Darwin-x86_64.tar.gz2019-07-16 09:33 32M 
[TXT]cmake-3.14.6-Linux-x86_64.sh2019-07-16 09:33 35M 
[   ]cmake-3.14.6-Linux-x86_64.tar.gz2019-07-16 09:33 35M 
[TXT]cmake-3.14.6-SHA-256.txt2019-07-16 09:33 1.0K 
[TXT]cmake-3.14.6-SHA-256.txt.asc2019-07-16 09:33 833  
[   ]cmake-3.14.6-win32-x86.msi2019-07-16 09:34 20M 
[   ]cmake-3.14.6-win32-x86.zip2019-07-16 09:34 26M 
[   ]cmake-3.14.6-win64-x64.msi2019-07-16 09:34 22M 
[   ]cmake-3.14.6-win64-x64.zip2019-07-16 09:34 30M 
[   ]cmake-3.14.6.tar.Z2019-07-16 09:34 14M 
[   ]cmake-3.14.6.tar.gz2019-07-16 09:34 8.5M 
[   ]cmake-3.14.6.zip2019-07-16 09:34 14M 
[   ]cmake-3.14.7-Darwin-x86_64.dmg2019-10-02 10:48 33M 
[   ]cmake-3.14.7-Darwin-x86_64.tar.gz2019-10-02 10:48 32M 
[TXT]cmake-3.14.7-Linux-x86_64.sh2019-10-02 10:48 35M 
[   ]cmake-3.14.7-Linux-x86_64.tar.gz2019-10-02 10:48 35M 
[TXT]cmake-3.14.7-SHA-256.txt2019-10-02 10:48 1.0K 
[TXT]cmake-3.14.7-SHA-256.txt.asc2019-10-02 10:48 833  
[   ]cmake-3.14.7-win32-x86.msi2019-10-02 10:48 20M 
[   ]cmake-3.14.7-win32-x86.zip2019-10-02 10:48 26M 
[   ]cmake-3.14.7-win64-x64.msi2019-10-02 10:48 21M 
[   ]cmake-3.14.7-win64-x64.zip2019-10-02 10:48 29M 
[   ]cmake-3.14.7.tar.Z2019-10-02 10:48 14M 
[   ]cmake-3.14.7.tar.gz2019-10-02 10:48 8.5M 
[   ]cmake-3.14.7.zip2019-10-02 10:48 14M 

+ diff --git a/poky/bitbake/lib/bb/tests/fetch-testdata/files/v3.15/index.html b/poky/bitbake/lib/bb/tests/fetch-testdata/files/v3.15/index.html new file mode 100644 index 000000000..92726767d --- /dev/null +++ b/poky/bitbake/lib/bb/tests/fetch-testdata/files/v3.15/index.html @@ -0,0 +1,157 @@ + + + + Index of /files/v3.15 + + +

Index of /files/v3.15

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
[ICO]NameLast modifiedSizeDescription

[PARENTDIR]Parent Directory  -  
[   ]cmake-3.15.0-Darwin-x86_64.dmg2019-07-17 10:38 33M 
[   ]cmake-3.15.0-Darwin-x86_64.tar.gz2019-07-17 10:38 33M 
[TXT]cmake-3.15.0-Linux-x86_64.sh2019-07-17 10:38 37M 
[   ]cmake-3.15.0-Linux-x86_64.tar.gz2019-07-17 10:38 37M 
[TXT]cmake-3.15.0-SHA-256.txt2019-07-17 10:38 1.0K 
[TXT]cmake-3.15.0-SHA-256.txt.asc2019-07-17 10:38 833  
[   ]cmake-3.15.0-rc1-Darwin-x86_64.dmg2019-06-04 14:22 33M 
[   ]cmake-3.15.0-rc1-Darwin-x86_64.tar.gz2019-06-04 14:22 33M 
[TXT]cmake-3.15.0-rc1-Linux-x86_64.sh2019-06-04 14:22 37M 
[   ]cmake-3.15.0-rc1-Linux-x86_64.tar.gz2019-06-04 14:22 37M 
[TXT]cmake-3.15.0-rc1-SHA-256.txt2019-06-04 14:22 1.0K 
[TXT]cmake-3.15.0-rc1-SHA-256.txt.asc2019-06-04 14:22 833  
[   ]cmake-3.15.0-rc1-win32-x86.msi2019-06-04 14:23 20M 
[   ]cmake-3.15.0-rc1-win32-x86.zip2019-06-04 14:23 28M 
[   ]cmake-3.15.0-rc1-win64-x64.msi2019-06-04 14:23 23M 
[   ]cmake-3.15.0-rc1-win64-x64.zip2019-06-04 14:23 31M 
[   ]cmake-3.15.0-rc1.tar.Z2019-06-04 14:23 14M 
[   ]cmake-3.15.0-rc1.tar.gz2019-06-04 14:22 8.8M 
[   ]cmake-3.15.0-rc1.zip2019-06-04 14:23 15M 
[   ]cmake-3.15.0-rc2-Darwin-x86_64.dmg2019-06-19 10:04 33M 
[   ]cmake-3.15.0-rc2-Darwin-x86_64.tar.gz2019-06-19 10:04 33M 
[TXT]cmake-3.15.0-rc2-Linux-x86_64.sh2019-06-19 10:04 37M 
[   ]cmake-3.15.0-rc2-Linux-x86_64.tar.gz2019-06-19 10:04 37M 
[TXT]cmake-3.15.0-rc2-SHA-256.txt2019-06-19 10:04 1.0K 
[TXT]cmake-3.15.0-rc2-SHA-256.txt.asc2019-06-19 10:04 833  
[   ]cmake-3.15.0-rc2-win32-x86.msi2019-06-19 10:04 20M 
[   ]cmake-3.15.0-rc2-win32-x86.zip2019-06-19 10:04 28M 
[   ]cmake-3.15.0-rc2-win64-x64.msi2019-06-19 10:04 23M 
[   ]cmake-3.15.0-rc2-win64-x64.zip2019-06-19 10:04 31M 
[   ]cmake-3.15.0-rc2.tar.Z2019-06-19 10:04 14M 
[   ]cmake-3.15.0-rc2.tar.gz2019-06-19 10:04 8.8M 
[   ]cmake-3.15.0-rc2.zip2019-06-19 10:04 15M 
[   ]cmake-3.15.0-rc3-Darwin-x86_64.dmg2019-06-27 11:33 33M 
[   ]cmake-3.15.0-rc3-Darwin-x86_64.tar.gz2019-06-27 11:33 33M 
[TXT]cmake-3.15.0-rc3-Linux-x86_64.sh2019-06-27 11:33 37M 
[   ]cmake-3.15.0-rc3-Linux-x86_64.tar.gz2019-06-27 11:33 37M 
[TXT]cmake-3.15.0-rc3-SHA-256.txt2019-06-27 11:33 1.0K 
[TXT]cmake-3.15.0-rc3-SHA-256.txt.asc2019-06-27 11:33 833  
[   ]cmake-3.15.0-rc3-win32-x86.msi2019-06-27 11:33 20M 
[   ]cmake-3.15.0-rc3-win32-x86.zip2019-06-27 11:33 28M 
[   ]cmake-3.15.0-rc3-win64-x64.msi2019-06-27 11:33 23M 
[   ]cmake-3.15.0-rc3-win64-x64.zip2019-06-27 11:33 31M 
[   ]cmake-3.15.0-rc3.tar.Z2019-06-27 11:33 14M 
[   ]cmake-3.15.0-rc3.tar.gz2019-06-27 11:33 8.8M 
[   ]cmake-3.15.0-rc3.zip2019-06-27 11:33 15M 
[   ]cmake-3.15.0-rc4-Darwin-x86_64.dmg2019-07-10 15:06 33M 
[   ]cmake-3.15.0-rc4-Darwin-x86_64.tar.gz2019-07-10 15:07 33M 
[TXT]cmake-3.15.0-rc4-Linux-x86_64.sh2019-07-10 15:07 37M 
[   ]cmake-3.15.0-rc4-Linux-x86_64.tar.gz2019-07-10 15:07 37M 
[TXT]cmake-3.15.0-rc4-SHA-256.txt2019-07-10 15:07 1.0K 
[TXT]cmake-3.15.0-rc4-SHA-256.txt.asc2019-07-10 15:07 833  
[   ]cmake-3.15.0-rc4-win32-x86.msi2019-07-10 15:07 20M 
[   ]cmake-3.15.0-rc4-win32-x86.zip2019-07-10 15:07 28M 
[   ]cmake-3.15.0-rc4-win64-x64.msi2019-07-10 15:07 23M 
[   ]cmake-3.15.0-rc4-win64-x64.zip2019-07-10 15:07 31M 
[   ]cmake-3.15.0-rc4.tar.Z2019-07-10 15:07 14M 
[   ]cmake-3.15.0-rc4.tar.gz2019-07-10 15:07 8.8M 
[   ]cmake-3.15.0-rc4.zip2019-07-10 15:07 15M 
[   ]cmake-3.15.0-win32-x86.msi2019-07-17 10:38 20M 
[   ]cmake-3.15.0-win32-x86.zip2019-07-17 10:38 27M 
[   ]cmake-3.15.0-win64-x64.msi2019-07-17 10:38 23M 
[   ]cmake-3.15.0-win64-x64.zip2019-07-17 10:38 31M 
[   ]cmake-3.15.0.tar.Z2019-07-17 10:38 14M 
[   ]cmake-3.15.0.tar.gz2019-07-17 10:38 8.8M 
[   ]cmake-3.15.0.zip2019-07-17 10:38 15M 
[   ]cmake-3.15.1-Darwin-x86_64.dmg2019-07-26 10:14 33M 
[   ]cmake-3.15.1-Darwin-x86_64.tar.gz2019-07-26 10:14 33M 
[TXT]cmake-3.15.1-Linux-x86_64.sh2019-07-26 10:14 37M 
[   ]cmake-3.15.1-Linux-x86_64.tar.gz2019-07-26 10:14 37M 
[TXT]cmake-3.15.1-SHA-256.txt2019-07-26 10:14 1.0K 
[TXT]cmake-3.15.1-SHA-256.txt.asc2019-07-26 10:14 833  
[   ]cmake-3.15.1-win32-x86.msi2019-07-26 10:14 20M 
[   ]cmake-3.15.1-win32-x86.zip2019-07-26 10:14 27M 
[   ]cmake-3.15.1-win64-x64.msi2019-07-26 10:14 23M 
[   ]cmake-3.15.1-win64-x64.zip2019-07-26 10:14 31M 
[   ]cmake-3.15.1.tar.Z2019-07-26 10:14 14M 
[   ]cmake-3.15.1.tar.gz2019-07-26 10:14 8.8M 
[   ]cmake-3.15.1.zip2019-07-26 10:15 15M 
[   ]cmake-3.15.2-Darwin-x86_64.dmg2019-08-07 15:05 33M 
[   ]cmake-3.15.2-Darwin-x86_64.tar.gz2019-08-07 15:05 33M 
[TXT]cmake-3.15.2-Linux-x86_64.sh2019-08-07 15:05 37M 
[   ]cmake-3.15.2-Linux-x86_64.tar.gz2019-08-07 15:05 37M 
[TXT]cmake-3.15.2-SHA-256.txt2019-08-07 15:05 1.0K 
[TXT]cmake-3.15.2-SHA-256.txt.asc2019-08-07 15:05 833  
[   ]cmake-3.15.2-win32-x86.msi2019-08-07 15:05 20M 
[   ]cmake-3.15.2-win32-x86.zip2019-08-07 15:05 27M 
[   ]cmake-3.15.2-win64-x64.msi2019-08-07 15:05 23M 
[   ]cmake-3.15.2-win64-x64.zip2019-08-07 15:05 31M 
[   ]cmake-3.15.2.tar.Z2019-08-07 15:05 14M 
[   ]cmake-3.15.2.tar.gz2019-08-07 15:05 8.8M 
[   ]cmake-3.15.2.zip2019-08-07 15:05 15M 
[   ]cmake-3.15.3-Darwin-x86_64.dmg2019-09-04 11:13 33M 
[   ]cmake-3.15.3-Darwin-x86_64.tar.gz2019-09-04 11:13 33M 
[TXT]cmake-3.15.3-Linux-x86_64.sh2019-09-04 11:13 37M 
[   ]cmake-3.15.3-Linux-x86_64.tar.gz2019-09-04 11:13 37M 
[TXT]cmake-3.15.3-SHA-256.txt2019-09-04 11:13 1.0K 
[TXT]cmake-3.15.3-SHA-256.txt.asc2019-09-04 11:13 833  
[   ]cmake-3.15.3-win32-x86.msi2019-09-04 11:13 20M 
[   ]cmake-3.15.3-win32-x86.zip2019-09-04 11:13 27M 
[   ]cmake-3.15.3-win64-x64.msi2019-09-04 11:13 23M 
[   ]cmake-3.15.3-win64-x64.zip2019-09-04 11:13 31M 
[   ]cmake-3.15.3.tar.Z2019-09-04 11:13 14M 
[   ]cmake-3.15.3.tar.gz2019-09-04 11:13 8.8M 
[   ]cmake-3.15.3.zip2019-09-04 11:13 15M 
[   ]cmake-3.15.4-Darwin-x86_64.dmg2019-10-02 10:45 33M 
[   ]cmake-3.15.4-Darwin-x86_64.tar.gz2019-10-02 10:45 33M 
[TXT]cmake-3.15.4-Linux-x86_64.sh2019-10-02 10:45 37M 
[   ]cmake-3.15.4-Linux-x86_64.tar.gz2019-10-02 10:45 37M 
[TXT]cmake-3.15.4-SHA-256.txt2019-10-02 10:45 1.0K 
[TXT]cmake-3.15.4-SHA-256.txt.asc2019-10-02 10:45 833  
[   ]cmake-3.15.4-win32-x86.msi2019-10-02 10:45 20M 
[   ]cmake-3.15.4-win32-x86.zip2019-10-02 10:45 27M 
[   ]cmake-3.15.4-win64-x64.msi2019-10-02 10:45 22M 
[   ]cmake-3.15.4-win64-x64.zip2019-10-02 10:45 30M 
[   ]cmake-3.15.4.tar.Z2019-10-02 10:45 14M 
[   ]cmake-3.15.4.tar.gz2019-10-02 10:45 8.8M 
[   ]cmake-3.15.4.zip2019-10-02 10:45 15M 
[   ]cmake-3.15.5-Darwin-x86_64.dmg2019-10-30 10:49 33M 
[   ]cmake-3.15.5-Darwin-x86_64.tar.gz2019-10-30 10:49 33M 
[TXT]cmake-3.15.5-Linux-x86_64.sh2019-10-30 10:49 37M 
[   ]cmake-3.15.5-Linux-x86_64.tar.gz2019-10-30 10:49 37M 
[TXT]cmake-3.15.5-SHA-256.txt2019-10-30 10:49 1.0K 
[TXT]cmake-3.15.5-SHA-256.txt.asc2019-10-30 10:49 833  
[   ]cmake-3.15.5-win32-x86.msi2019-10-30 10:49 20M 
[   ]cmake-3.15.5-win32-x86.zip2019-10-30 10:49 27M 
[   ]cmake-3.15.5-win64-x64.msi2019-10-30 10:49 22M 
[   ]cmake-3.15.5-win64-x64.zip2019-10-30 10:49 30M 
[   ]cmake-3.15.5.tar.Z2019-10-30 10:49 14M 
[   ]cmake-3.15.5.tar.gz2019-10-30 10:49 8.8M 
[   ]cmake-3.15.5.zip2019-10-30 10:49 15M 
[   ]cmake-3.15.6-Darwin-x86_64.dmg2019-12-16 11:30 34M 
[   ]cmake-3.15.6-Darwin-x86_64.tar.gz2019-12-16 11:30 33M 
[TXT]cmake-3.15.6-Linux-x86_64.sh2019-12-16 11:30 37M 
[   ]cmake-3.15.6-Linux-x86_64.tar.gz2019-12-16 11:30 37M 
[TXT]cmake-3.15.6-SHA-256.txt2019-12-16 11:30 1.0K 
[TXT]cmake-3.15.6-SHA-256.txt.asc2019-12-16 11:30 833  
[   ]cmake-3.15.6-win32-x86.msi2019-12-16 11:30 21M 
[   ]cmake-3.15.6-win32-x86.zip2019-12-16 11:30 28M 
[   ]cmake-3.15.6-win64-x64.msi2019-12-16 11:30 22M 
[   ]cmake-3.15.6-win64-x64.zip2019-12-16 11:30 30M 
[   ]cmake-3.15.6.tar.Z2019-12-16 11:30 14M 
[   ]cmake-3.15.6.tar.gz2019-12-16 11:30 8.8M 
[   ]cmake-3.15.6.zip2019-12-16 11:30 15M 

+ diff --git a/poky/bitbake/lib/bb/tests/fetch-testdata/files/v3.16/index.html b/poky/bitbake/lib/bb/tests/fetch-testdata/files/v3.16/index.html new file mode 100644 index 000000000..74f9b4027 --- /dev/null +++ b/poky/bitbake/lib/bb/tests/fetch-testdata/files/v3.16/index.html @@ -0,0 +1,86 @@ + + + + Index of /files/v3.16 + + +

Index of /files/v3.16

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
[ICO]NameLast modifiedSizeDescription

[PARENTDIR]Parent Directory  -  
[   ]cmake-3.16.0-Darwin-x86_64.dmg2019-11-26 10:27 35M 
[   ]cmake-3.16.0-Darwin-x86_64.tar.gz2019-11-26 10:27 34M 
[TXT]cmake-3.16.0-Linux-x86_64.sh2019-11-26 10:27 38M 
[   ]cmake-3.16.0-Linux-x86_64.tar.gz2019-11-26 10:27 38M 
[TXT]cmake-3.16.0-SHA-256.txt2019-11-26 10:27 932  
[TXT]cmake-3.16.0-SHA-256.txt.asc2019-11-26 10:27 833  
[   ]cmake-3.16.0-rc1-Darwin-x86_64.dmg2019-10-10 14:18 34M 
[   ]cmake-3.16.0-rc1-Darwin-x86_64.tar.gz2019-10-10 14:18 34M 
[TXT]cmake-3.16.0-rc1-Linux-x86_64.sh2019-10-10 14:18 38M 
[   ]cmake-3.16.0-rc1-Linux-x86_64.tar.gz2019-10-10 14:18 38M 
[TXT]cmake-3.16.0-rc1-SHA-256.txt2019-10-10 14:18 972  
[TXT]cmake-3.16.0-rc1-SHA-256.txt.asc2019-10-10 14:18 833  
[   ]cmake-3.16.0-rc1-win32-x86.msi2019-10-10 14:18 21M 
[   ]cmake-3.16.0-rc1-win32-x86.zip2019-10-10 14:18 28M 
[   ]cmake-3.16.0-rc1-win64-x64.msi2019-10-10 14:18 23M 
[   ]cmake-3.16.0-rc1-win64-x64.zip2019-10-10 14:18 31M 
[   ]cmake-3.16.0-rc1.tar.gz2019-10-10 14:18 8.7M 
[   ]cmake-3.16.0-rc1.zip2019-10-10 14:18 14M 
[   ]cmake-3.16.0-rc2-Darwin-x86_64.dmg2019-10-18 10:47 34M 
[   ]cmake-3.16.0-rc2-Darwin-x86_64.tar.gz2019-10-18 10:47 34M 
[TXT]cmake-3.16.0-rc2-Linux-x86_64.sh2019-10-18 10:47 38M 
[   ]cmake-3.16.0-rc2-Linux-x86_64.tar.gz2019-10-18 10:47 38M 
[TXT]cmake-3.16.0-rc2-SHA-256.txt2019-10-18 10:47 972  
[TXT]cmake-3.16.0-rc2-SHA-256.txt.asc2019-10-18 10:47 833  
[   ]cmake-3.16.0-rc2-win32-x86.msi2019-10-18 10:47 21M 
[   ]cmake-3.16.0-rc2-win32-x86.zip2019-10-18 10:47 28M 
[   ]cmake-3.16.0-rc2-win64-x64.msi2019-10-18 10:47 23M 
[   ]cmake-3.16.0-rc2-win64-x64.zip2019-10-18 10:47 31M 
[   ]cmake-3.16.0-rc2.tar.gz2019-10-18 10:47 8.7M 
[   ]cmake-3.16.0-rc2.zip2019-10-18 10:47 14M 
[   ]cmake-3.16.0-rc3-Darwin-x86_64.dmg2019-10-31 12:09 34M 
[   ]cmake-3.16.0-rc3-Darwin-x86_64.tar.gz2019-10-31 12:09 34M 
[TXT]cmake-3.16.0-rc3-Linux-x86_64.sh2019-10-31 12:09 38M 
[   ]cmake-3.16.0-rc3-Linux-x86_64.tar.gz2019-10-31 12:10 38M 
[TXT]cmake-3.16.0-rc3-SHA-256.txt2019-10-31 12:10 972  
[TXT]cmake-3.16.0-rc3-SHA-256.txt.asc2019-10-31 12:10 833  
[   ]cmake-3.16.0-rc3-win32-x86.msi2019-10-31 12:10 21M 
[   ]cmake-3.16.0-rc3-win32-x86.zip2019-10-31 12:10 28M 
[   ]cmake-3.16.0-rc3-win64-x64.msi2019-10-31 12:10 23M 
[   ]cmake-3.16.0-rc3-win64-x64.zip2019-10-31 12:10 31M 
[   ]cmake-3.16.0-rc3.tar.gz2019-10-31 12:10 8.7M 
[   ]cmake-3.16.0-rc3.zip2019-10-31 12:10 14M 
[   ]cmake-3.16.0-rc4-Darwin-x86_64.dmg2019-11-18 17:01 35M 
[   ]cmake-3.16.0-rc4-Darwin-x86_64.tar.gz2019-11-18 17:01 34M 
[TXT]cmake-3.16.0-rc4-Linux-x86_64.sh2019-11-18 17:01 38M 
[   ]cmake-3.16.0-rc4-Linux-x86_64.tar.gz2019-11-18 17:01 38M 
[TXT]cmake-3.16.0-rc4-SHA-256.txt2019-11-18 17:01 972  
[TXT]cmake-3.16.0-rc4-SHA-256.txt.asc2019-11-18 17:01 833  
[   ]cmake-3.16.0-rc4-win32-x86.msi2019-11-18 17:01 21M 
[   ]cmake-3.16.0-rc4-win32-x86.zip2019-11-18 17:01 28M 
[   ]cmake-3.16.0-rc4-win64-x64.msi2019-11-18 17:01 23M 
[   ]cmake-3.16.0-rc4-win64-x64.zip2019-11-18 17:01 31M 
[   ]cmake-3.16.0-rc4.tar.gz2019-11-18 17:01 8.7M 
[   ]cmake-3.16.0-rc4.zip2019-11-18 17:01 14M 
[   ]cmake-3.16.0-win32-x86.msi2019-11-26 10:27 21M 
[   ]cmake-3.16.0-win32-x86.zip2019-11-26 10:27 28M 
[   ]cmake-3.16.0-win64-x64.msi2019-11-26 10:27 23M 
[   ]cmake-3.16.0-win64-x64.zip2019-11-26 10:27 31M 
[   ]cmake-3.16.0.tar.gz2019-11-26 10:27 8.7M 
[   ]cmake-3.16.0.zip2019-11-26 10:27 14M 
[   ]cmake-3.16.1-Darwin-x86_64.dmg2019-12-10 10:42 35M 
[   ]cmake-3.16.1-Darwin-x86_64.tar.gz2019-12-10 10:42 34M 
[TXT]cmake-3.16.1-Linux-x86_64.sh2019-12-10 10:42 38M 
[   ]cmake-3.16.1-Linux-x86_64.tar.gz2019-12-10 10:42 38M 
[TXT]cmake-3.16.1-SHA-256.txt2019-12-10 10:42 932  
[TXT]cmake-3.16.1-SHA-256.txt.asc2019-12-10 10:42 833  
[   ]cmake-3.16.1-win32-x86.msi2019-12-10 10:42 21M 
[   ]cmake-3.16.1-win32-x86.zip2019-12-10 10:42 28M 
[   ]cmake-3.16.1-win64-x64.msi2019-12-10 10:42 23M 
[   ]cmake-3.16.1-win64-x64.zip2019-12-10 10:42 31M 
[   ]cmake-3.16.1.tar.gz2019-12-10 10:42 8.7M 
[   ]cmake-3.16.1.zip2019-12-10 10:42 14M 

+ diff --git a/poky/bitbake/lib/bb/tests/fetch-testdata/files/v3.2/index.html b/poky/bitbake/lib/bb/tests/fetch-testdata/files/v3.2/index.html new file mode 100644 index 000000000..a8c6c7f26 --- /dev/null +++ b/poky/bitbake/lib/bb/tests/fetch-testdata/files/v3.2/index.html @@ -0,0 +1,132 @@ + + + + Index of /files/v3.2 + + +

Index of /files/v3.2

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
[ICO]NameLast modifiedSizeDescription

[PARENTDIR]Parent Directory  -  
[   ]cmake-3.2.0-1-src.tar.bz22015-03-10 09:02 4.9M 
[   ]cmake-3.2.0-1.tar.bz22015-03-10 09:02 9.4M 
[   ]cmake-3.2.0-Darwin-universal.dmg2015-03-10 09:02 47M 
[   ]cmake-3.2.0-Darwin-universal.tar.Z2015-03-10 09:02 66M 
[   ]cmake-3.2.0-Darwin-universal.tar.gz2015-03-10 09:01 46M 
[   ]cmake-3.2.0-Darwin-x86_64.dmg2015-03-10 09:01 27M 
[   ]cmake-3.2.0-Darwin-x86_64.tar.Z2015-03-10 09:01 38M 
[   ]cmake-3.2.0-Darwin-x86_64.tar.gz2015-03-10 09:01 26M 
[TXT]cmake-3.2.0-Linux-i386.sh2015-03-10 09:01 25M 
[   ]cmake-3.2.0-Linux-i386.tar.Z2015-03-10 09:01 36M 
[   ]cmake-3.2.0-Linux-i386.tar.gz2015-03-10 09:01 25M 
[TXT]cmake-3.2.0-Linux-x86_64.sh2015-03-10 09:01 26M 
[   ]cmake-3.2.0-Linux-x86_64.tar.Z2015-03-10 09:01 36M 
[   ]cmake-3.2.0-Linux-x86_64.tar.gz2015-03-10 09:01 26M 
[TXT]cmake-3.2.0-SHA-256.txt2016-04-13 12:48 1.6K 
[TXT]cmake-3.2.0-SHA-256.txt.asc2016-04-13 12:48 819  
[   ]cmake-3.2.0-rc1-Darwin-universal.dmg2015-02-13 15:03 47M 
[   ]cmake-3.2.0-rc1-Darwin-universal.tar.Z2015-02-13 15:03 66M 
[   ]cmake-3.2.0-rc1-Darwin-universal.tar.gz2015-02-13 15:03 46M 
[   ]cmake-3.2.0-rc1-Darwin-x86_64.dmg2015-02-13 15:03 30M 
[   ]cmake-3.2.0-rc1-Darwin-x86_64.tar.Z2015-02-13 15:03 42M 
[   ]cmake-3.2.0-rc1-Darwin-x86_64.tar.gz2015-02-13 15:03 29M 
[TXT]cmake-3.2.0-rc1-Linux-i386.sh2015-02-13 15:03 25M 
[   ]cmake-3.2.0-rc1-Linux-i386.tar.Z2015-02-13 15:03 36M 
[   ]cmake-3.2.0-rc1-Linux-i386.tar.gz2015-02-13 15:03 25M 
[TXT]cmake-3.2.0-rc1-Linux-x86_64.sh2015-02-13 15:03 26M 
[   ]cmake-3.2.0-rc1-Linux-x86_64.tar.Z2015-02-13 15:03 36M 
[   ]cmake-3.2.0-rc1-Linux-x86_64.tar.gz2015-02-13 15:02 26M 
[TXT]cmake-3.2.0-rc1-SHA-256.txt2016-04-13 12:48 1.6K 
[TXT]cmake-3.2.0-rc1-SHA-256.txt.asc2016-04-13 12:48 819  
[   ]cmake-3.2.0-rc1-win32-x86.exe2015-02-13 15:02 12M 
[   ]cmake-3.2.0-rc1-win32-x86.zip2015-02-13 15:02 16M 
[   ]cmake-3.2.0-rc1.tar.Z2015-02-13 15:02 9.9M 
[   ]cmake-3.2.0-rc1.tar.gz2015-02-13 15:02 6.1M 
[   ]cmake-3.2.0-rc1.zip2015-02-13 15:02 9.8M 
[   ]cmake-3.2.0-rc2-Darwin-universal.dmg2015-02-24 08:51 47M 
[   ]cmake-3.2.0-rc2-Darwin-universal.tar.Z2015-02-24 08:51 66M 
[   ]cmake-3.2.0-rc2-Darwin-universal.tar.gz2015-02-24 08:51 46M 
[   ]cmake-3.2.0-rc2-Darwin-x86_64.dmg2015-02-24 08:51 27M 
[   ]cmake-3.2.0-rc2-Darwin-x86_64.tar.Z2015-02-24 08:51 38M 
[   ]cmake-3.2.0-rc2-Darwin-x86_64.tar.gz2015-02-24 08:51 26M 
[TXT]cmake-3.2.0-rc2-Linux-i386.sh2015-02-24 08:50 25M 
[   ]cmake-3.2.0-rc2-Linux-i386.tar.Z2015-02-24 08:50 36M 
[   ]cmake-3.2.0-rc2-Linux-i386.tar.gz2015-02-24 08:50 25M 
[TXT]cmake-3.2.0-rc2-Linux-x86_64.sh2015-02-24 08:50 26M 
[   ]cmake-3.2.0-rc2-Linux-x86_64.tar.Z2015-02-24 08:50 36M 
[   ]cmake-3.2.0-rc2-Linux-x86_64.tar.gz2015-02-24 08:50 26M 
[TXT]cmake-3.2.0-rc2-SHA-256.txt2016-04-13 12:48 1.6K 
[TXT]cmake-3.2.0-rc2-SHA-256.txt.asc2016-04-13 12:48 819  
[   ]cmake-3.2.0-rc2-win32-x86.exe2015-02-24 08:50 11M 
[   ]cmake-3.2.0-rc2-win32-x86.zip2015-02-24 08:50 15M 
[   ]cmake-3.2.0-rc2.tar.Z2015-02-24 08:50 10M 
[   ]cmake-3.2.0-rc2.tar.gz2015-02-24 08:50 6.1M 
[   ]cmake-3.2.0-rc2.zip2015-02-24 08:50 9.8M 
[   ]cmake-3.2.0-win32-x86.exe2015-03-10 09:01 11M 
[   ]cmake-3.2.0-win32-x86.zip2015-03-10 09:01 15M 
[   ]cmake-3.2.0.tar.Z2015-03-10 09:01 9.9M 
[   ]cmake-3.2.0.tar.gz2015-03-10 09:01 6.1M 
[   ]cmake-3.2.0.zip2015-03-10 09:01 9.7M 
[   ]cmake-3.2.1-1-src.tar.bz22015-03-11 09:10 4.9M 
[   ]cmake-3.2.1-1.tar.bz22015-03-11 09:10 9.5M 
[   ]cmake-3.2.1-Darwin-universal.dmg2015-03-11 09:10 47M 
[   ]cmake-3.2.1-Darwin-universal.tar.Z2015-03-11 09:10 66M 
[   ]cmake-3.2.1-Darwin-universal.tar.gz2015-03-11 09:10 46M 
[   ]cmake-3.2.1-Darwin-x86_64.dmg2015-03-11 09:10 27M 
[   ]cmake-3.2.1-Darwin-x86_64.tar.Z2015-03-11 09:10 38M 
[   ]cmake-3.2.1-Darwin-x86_64.tar.gz2015-03-11 09:10 26M 
[TXT]cmake-3.2.1-Linux-i386.sh2015-03-11 09:10 25M 
[   ]cmake-3.2.1-Linux-i386.tar.Z2015-03-11 09:09 36M 
[   ]cmake-3.2.1-Linux-i386.tar.gz2015-03-11 09:09 25M 
[TXT]cmake-3.2.1-Linux-x86_64.sh2015-03-11 09:09 26M 
[   ]cmake-3.2.1-Linux-x86_64.tar.Z2015-03-11 09:09 36M 
[   ]cmake-3.2.1-Linux-x86_64.tar.gz2015-03-11 09:09 26M 
[TXT]cmake-3.2.1-SHA-256.txt2016-04-13 12:48 1.6K 
[TXT]cmake-3.2.1-SHA-256.txt.asc2016-04-13 12:48 819  
[   ]cmake-3.2.1-win32-x86.exe2015-03-11 09:09 11M 
[   ]cmake-3.2.1-win32-x86.zip2015-03-11 09:09 15M 
[   ]cmake-3.2.1.tar.Z2015-03-11 09:09 10M 
[   ]cmake-3.2.1.tar.gz2015-03-11 09:09 6.1M 
[   ]cmake-3.2.1.zip2015-03-11 09:09 9.7M 
[   ]cmake-3.2.2-Darwin-universal.dmg2015-04-14 13:45 47M 
[   ]cmake-3.2.2-Darwin-universal.tar.Z2015-04-14 13:45 66M 
[   ]cmake-3.2.2-Darwin-universal.tar.gz2015-04-14 13:45 46M 
[   ]cmake-3.2.2-Darwin-x86_64.dmg2015-04-14 13:45 27M 
[   ]cmake-3.2.2-Darwin-x86_64.tar.Z2015-04-14 13:45 38M 
[   ]cmake-3.2.2-Darwin-x86_64.tar.gz2015-04-14 13:45 26M 
[TXT]cmake-3.2.2-Linux-i386.sh2015-04-14 13:44 25M 
[   ]cmake-3.2.2-Linux-i386.tar.Z2015-04-14 13:44 36M 
[   ]cmake-3.2.2-Linux-i386.tar.gz2015-04-14 13:44 25M 
[TXT]cmake-3.2.2-Linux-x86_64.sh2015-04-14 13:44 26M 
[   ]cmake-3.2.2-Linux-x86_64.tar.Z2015-04-14 13:44 36M 
[   ]cmake-3.2.2-Linux-x86_64.tar.gz2015-04-14 13:44 26M 
[TXT]cmake-3.2.2-SHA-256.txt2016-04-13 12:48 1.6K 
[TXT]cmake-3.2.2-SHA-256.txt.asc2016-04-13 12:48 819  
[   ]cmake-3.2.2-win32-x86.exe2015-04-14 13:44 11M 
[   ]cmake-3.2.2-win32-x86.zip2015-04-14 13:44 15M 
[   ]cmake-3.2.2.tar.Z2015-04-14 13:44 9.9M 
[   ]cmake-3.2.2.tar.gz2015-04-14 13:44 6.1M 
[   ]cmake-3.2.2.zip2015-04-14 13:44 9.7M 
[   ]cmake-3.2.3-Darwin-universal.dmg2015-06-01 17:04 47M 
[   ]cmake-3.2.3-Darwin-universal.tar.Z2015-06-01 17:04 66M 
[   ]cmake-3.2.3-Darwin-universal.tar.gz2015-06-01 17:04 46M 
[   ]cmake-3.2.3-Darwin-x86_64.dmg2015-06-01 17:04 27M 
[   ]cmake-3.2.3-Darwin-x86_64.tar.Z2015-06-01 17:04 38M 
[   ]cmake-3.2.3-Darwin-x86_64.tar.gz2015-06-01 17:04 26M 
[TXT]cmake-3.2.3-Linux-i386.sh2015-06-01 17:04 25M 
[   ]cmake-3.2.3-Linux-i386.tar.Z2015-06-01 17:03 36M 
[   ]cmake-3.2.3-Linux-i386.tar.gz2015-06-01 17:03 25M 
[TXT]cmake-3.2.3-Linux-x86_64.sh2015-06-01 17:03 26M 
[   ]cmake-3.2.3-Linux-x86_64.tar.Z2015-06-01 17:03 36M 
[   ]cmake-3.2.3-Linux-x86_64.tar.gz2015-06-01 17:03 26M 
[TXT]cmake-3.2.3-SHA-256.txt2016-04-13 12:48 1.6K 
[TXT]cmake-3.2.3-SHA-256.txt.asc2016-04-13 12:48 819  
[   ]cmake-3.2.3-win32-x86.exe2015-06-01 17:03 11M 
[   ]cmake-3.2.3-win32-x86.zip2015-06-01 17:03 15M 
[   ]cmake-3.2.3.tar.Z2015-06-01 17:03 9.9M 
[   ]cmake-3.2.3.tar.gz2015-06-01 17:03 6.1M 
[   ]cmake-3.2.3.zip2015-06-01 17:03 9.7M 

+ diff --git a/poky/bitbake/lib/bb/tests/fetch-testdata/files/v3.3/index.html b/poky/bitbake/lib/bb/tests/fetch-testdata/files/v3.3/index.html new file mode 100644 index 000000000..d05373651 --- /dev/null +++ b/poky/bitbake/lib/bb/tests/fetch-testdata/files/v3.3/index.html @@ -0,0 +1,163 @@ + + + + Index of /files/v3.3 + + +

Index of /files/v3.3

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
[ICO]NameLast modifiedSizeDescription

[PARENTDIR]Parent Directory  -  
[   ]cmake-3.3.0-1-src.tar.bz22015-07-23 16:39 5.0M 
[   ]cmake-3.3.0-1.tar.bz22015-07-23 16:39 9.8M 
[   ]cmake-3.3.0-Darwin-universal.dmg2015-07-23 16:39 48M 
[   ]cmake-3.3.0-Darwin-universal.tar.Z2015-07-23 16:39 68M 
[   ]cmake-3.3.0-Darwin-universal.tar.gz2015-07-23 16:39 47M 
[   ]cmake-3.3.0-Darwin-x86_64.dmg2015-07-23 16:39 22M 
[   ]cmake-3.3.0-Darwin-x86_64.tar.Z2015-07-23 16:39 31M 
[   ]cmake-3.3.0-Darwin-x86_64.tar.gz2015-07-23 16:38 21M 
[TXT]cmake-3.3.0-Linux-i386.sh2015-07-23 16:38 26M 
[   ]cmake-3.3.0-Linux-i386.tar.Z2015-07-23 16:38 37M 
[   ]cmake-3.3.0-Linux-i386.tar.gz2015-07-23 16:38 26M 
[TXT]cmake-3.3.0-Linux-x86_64.sh2015-07-23 16:38 27M 
[   ]cmake-3.3.0-Linux-x86_64.tar.Z2015-07-23 16:38 37M 
[   ]cmake-3.3.0-Linux-x86_64.tar.gz2015-07-23 16:38 27M 
[TXT]cmake-3.3.0-SHA-256.txt2015-08-13 14:42 1.6K 
[TXT]cmake-3.3.0-SHA-256.txt.asc2015-08-13 14:42 819  
[   ]cmake-3.3.0-rc1-1-src.tar.bz22015-06-05 09:01 9.8M 
[TXT]cmake-3.3.0-rc1-1.patch2015-06-05 09:01 0  
[TXT]cmake-3.3.0-rc1-1.sh2015-06-05 09:01 1.5K 
[   ]cmake-3.3.0-rc1-1.tar.bz22015-06-05 09:01 9.8M 
[   ]cmake-3.3.0-rc1-Darwin-universal.dmg2015-06-05 09:01 48M 
[   ]cmake-3.3.0-rc1-Darwin-universal.tar.Z2015-06-05 09:01 68M 
[   ]cmake-3.3.0-rc1-Darwin-universal.tar.gz2015-06-05 09:01 47M 
[   ]cmake-3.3.0-rc1-Darwin-x86_64.dmg2015-06-05 09:01 27M 
[   ]cmake-3.3.0-rc1-Darwin-x86_64.tar.Z2015-06-05 09:01 38M 
[   ]cmake-3.3.0-rc1-Darwin-x86_64.tar.gz2015-06-05 09:01 27M 
[TXT]cmake-3.3.0-rc1-Linux-i386.sh2015-06-05 09:00 26M 
[   ]cmake-3.3.0-rc1-Linux-i386.tar.Z2015-06-05 09:00 36M 
[   ]cmake-3.3.0-rc1-Linux-i386.tar.gz2015-06-05 09:00 26M 
[TXT]cmake-3.3.0-rc1-Linux-x86_64.sh2015-06-05 09:00 26M 
[   ]cmake-3.3.0-rc1-Linux-x86_64.tar.Z2015-06-05 09:00 37M 
[   ]cmake-3.3.0-rc1-Linux-x86_64.tar.gz2015-06-05 09:00 26M 
[TXT]cmake-3.3.0-rc1-SHA-256.txt2016-04-13 12:48 1.6K 
[TXT]cmake-3.3.0-rc1-SHA-256.txt.asc2016-04-13 12:48 819  
[   ]cmake-3.3.0-rc1-win32-x86.exe2015-06-05 09:00 12M 
[   ]cmake-3.3.0-rc1-win32-x86.zip2015-06-05 09:00 16M 
[   ]cmake-3.3.0-rc1.tar.Z2015-06-05 09:00 10M 
[   ]cmake-3.3.0-rc1.tar.gz2015-06-05 09:00 6.3M 
[   ]cmake-3.3.0-rc1.zip2015-06-05 09:00 10M 
[   ]cmake-3.3.0-rc2-1-src.tar.bz22015-06-10 15:27 5.0M 
[   ]cmake-3.3.0-rc2-1.tar.bz22015-06-10 15:27 9.8M 
[   ]cmake-3.3.0-rc2-Darwin-universal.dmg2015-06-10 15:27 48M 
[   ]cmake-3.3.0-rc2-Darwin-universal.tar.Z2015-06-10 15:27 68M 
[   ]cmake-3.3.0-rc2-Darwin-universal.tar.gz2015-06-10 15:27 47M 
[   ]cmake-3.3.0-rc2-Darwin-x86_64.dmg2015-06-10 15:27 21M 
[   ]cmake-3.3.0-rc2-Darwin-x86_64.tar.Z2015-06-10 15:27 31M 
[   ]cmake-3.3.0-rc2-Darwin-x86_64.tar.gz2015-06-10 15:27 21M 
[TXT]cmake-3.3.0-rc2-Linux-i386.sh2015-06-10 15:27 26M 
[   ]cmake-3.3.0-rc2-Linux-i386.tar.Z2015-06-10 15:27 36M 
[   ]cmake-3.3.0-rc2-Linux-i386.tar.gz2015-06-10 15:27 26M 
[TXT]cmake-3.3.0-rc2-Linux-x86_64.sh2015-06-10 15:27 26M 
[   ]cmake-3.3.0-rc2-Linux-x86_64.tar.Z2015-06-10 15:27 37M 
[   ]cmake-3.3.0-rc2-Linux-x86_64.tar.gz2015-06-10 15:27 26M 
[TXT]cmake-3.3.0-rc2-SHA-256.txt2016-04-13 12:48 1.6K 
[TXT]cmake-3.3.0-rc2-SHA-256.txt.asc2016-04-13 12:48 819  
[   ]cmake-3.3.0-rc2-win32-x86.exe2015-06-10 15:27 12M 
[   ]cmake-3.3.0-rc2-win32-x86.zip2015-06-10 15:27 16M 
[   ]cmake-3.3.0-rc2.tar.Z2015-06-10 15:27 10M 
[   ]cmake-3.3.0-rc2.tar.gz2015-06-10 15:27 6.3M 
[   ]cmake-3.3.0-rc2.zip2015-06-10 15:27 10M 
[   ]cmake-3.3.0-rc3-1-src.tar.bz22015-06-26 13:34 5.0M 
[   ]cmake-3.3.0-rc3-1.tar.bz22015-06-26 13:34 9.8M 
[   ]cmake-3.3.0-rc3-Darwin-universal.dmg2015-06-26 13:34 48M 
[   ]cmake-3.3.0-rc3-Darwin-universal.tar.Z2015-06-26 13:34 68M 
[   ]cmake-3.3.0-rc3-Darwin-universal.tar.gz2015-06-26 13:34 47M 
[   ]cmake-3.3.0-rc3-Darwin-x86_64.dmg2015-06-26 13:34 22M 
[   ]cmake-3.3.0-rc3-Darwin-x86_64.tar.Z2015-06-26 13:34 31M 
[   ]cmake-3.3.0-rc3-Darwin-x86_64.tar.gz2015-06-26 13:34 21M 
[TXT]cmake-3.3.0-rc3-Linux-i386.sh2015-06-26 13:34 26M 
[   ]cmake-3.3.0-rc3-Linux-i386.tar.Z2015-06-26 13:34 37M 
[   ]cmake-3.3.0-rc3-Linux-i386.tar.gz2015-06-26 13:34 26M 
[TXT]cmake-3.3.0-rc3-Linux-x86_64.sh2015-06-26 13:34 27M 
[   ]cmake-3.3.0-rc3-Linux-x86_64.tar.Z2015-06-26 13:34 37M 
[   ]cmake-3.3.0-rc3-Linux-x86_64.tar.gz2015-06-26 13:34 27M 
[TXT]cmake-3.3.0-rc3-SHA-256.txt2016-04-13 12:48 1.6K 
[TXT]cmake-3.3.0-rc3-SHA-256.txt.asc2016-04-13 12:48 819  
[   ]cmake-3.3.0-rc3-win32-x86.exe2015-06-26 13:34 12M 
[   ]cmake-3.3.0-rc3-win32-x86.zip2015-06-26 13:34 16M 
[   ]cmake-3.3.0-rc3.tar.Z2015-06-26 13:34 10M 
[   ]cmake-3.3.0-rc3.tar.gz2015-06-26 13:34 6.3M 
[   ]cmake-3.3.0-rc3.zip2015-06-26 13:34 10M 
[   ]cmake-3.3.0-rc4-1-src.tar.bz22015-07-13 15:56 5.0M 
[   ]cmake-3.3.0-rc4-1.tar.bz22015-07-13 15:56 9.8M 
[   ]cmake-3.3.0-rc4-Darwin-universal.dmg2015-07-13 15:56 48M 
[   ]cmake-3.3.0-rc4-Darwin-universal.tar.Z2015-07-13 15:56 68M 
[   ]cmake-3.3.0-rc4-Darwin-universal.tar.gz2015-07-13 15:55 47M 
[   ]cmake-3.3.0-rc4-Darwin-x86_64.dmg2015-07-13 15:55 22M 
[   ]cmake-3.3.0-rc4-Darwin-x86_64.tar.Z2015-07-13 15:55 31M 
[   ]cmake-3.3.0-rc4-Darwin-x86_64.tar.gz2015-07-13 15:55 21M 
[TXT]cmake-3.3.0-rc4-Linux-i386.sh2015-07-13 15:55 26M 
[   ]cmake-3.3.0-rc4-Linux-i386.tar.Z2015-07-13 15:55 37M 
[   ]cmake-3.3.0-rc4-Linux-i386.tar.gz2015-07-13 15:55 26M 
[TXT]cmake-3.3.0-rc4-Linux-x86_64.sh2015-07-13 15:55 27M 
[   ]cmake-3.3.0-rc4-Linux-x86_64.tar.Z2015-07-13 15:55 37M 
[   ]cmake-3.3.0-rc4-Linux-x86_64.tar.gz2015-07-13 15:55 27M 
[TXT]cmake-3.3.0-rc4-SHA-256.txt2016-04-13 12:48 1.6K 
[TXT]cmake-3.3.0-rc4-SHA-256.txt.asc2016-04-13 12:48 819  
[   ]cmake-3.3.0-rc4-win32-x86.exe2015-07-13 15:55 12M 
[   ]cmake-3.3.0-rc4-win32-x86.zip2015-07-13 15:55 16M 
[   ]cmake-3.3.0-rc4.tar.Z2015-07-13 15:55 10M 
[   ]cmake-3.3.0-rc4.tar.gz2015-07-13 15:55 6.3M 
[   ]cmake-3.3.0-rc4.zip2015-07-13 15:55 10M 
[   ]cmake-3.3.0-win32-x86.exe2015-07-23 16:38 12M 
[   ]cmake-3.3.0-win32-x86.zip2015-07-23 16:38 16M 
[   ]cmake-3.3.0.tar.Z2015-07-23 16:38 10M 
[   ]cmake-3.3.0.tar.gz2015-07-23 16:38 6.3M 
[   ]cmake-3.3.0.zip2015-07-23 16:38 10M 
[   ]cmake-3.3.1-1-src.tar.bz22015-08-13 15:55 5.0M 
[   ]cmake-3.3.1-1.tar.bz22015-08-13 15:55 9.8M 
[   ]cmake-3.3.1-Darwin-universal.dmg2015-08-13 15:55 48M 
[   ]cmake-3.3.1-Darwin-universal.tar.Z2015-08-13 15:55 68M 
[   ]cmake-3.3.1-Darwin-universal.tar.gz2015-08-13 15:55 47M 
[   ]cmake-3.3.1-Darwin-x86_64.dmg2015-08-13 15:55 22M 
[   ]cmake-3.3.1-Darwin-x86_64.tar.Z2015-08-13 15:55 31M 
[   ]cmake-3.3.1-Darwin-x86_64.tar.gz2015-08-13 15:55 21M 
[TXT]cmake-3.3.1-Linux-i386.sh2015-08-13 15:55 26M 
[   ]cmake-3.3.1-Linux-i386.tar.Z2015-08-13 15:55 37M 
[   ]cmake-3.3.1-Linux-i386.tar.gz2015-08-13 15:55 26M 
[TXT]cmake-3.3.1-Linux-x86_64.sh2015-08-13 15:55 27M 
[   ]cmake-3.3.1-Linux-x86_64.tar.Z2015-08-13 15:55 37M 
[   ]cmake-3.3.1-Linux-x86_64.tar.gz2015-08-13 15:55 27M 
[TXT]cmake-3.3.1-SHA-256.txt2015-08-13 15:55 1.3K 
[TXT]cmake-3.3.1-SHA-256.txt.asc2015-08-13 15:55 819  
[   ]cmake-3.3.1-win32-x86.exe2015-08-13 15:55 12M 
[   ]cmake-3.3.1-win32-x86.zip2015-08-13 15:55 16M 
[   ]cmake-3.3.1.tar.Z2015-08-13 15:54 10M 
[   ]cmake-3.3.1.tar.gz2015-08-13 15:54 6.3M 
[   ]cmake-3.3.1.zip2015-08-13 15:54 10M 
[   ]cmake-3.3.2-1-src.tar.bz22015-09-17 14:36 5.0M 
[   ]cmake-3.3.2-1.tar.bz22015-09-17 14:36 9.8M 
[   ]cmake-3.3.2-Darwin-universal.dmg2015-09-17 14:36 48M 
[   ]cmake-3.3.2-Darwin-universal.tar.Z2015-09-17 14:36 68M 
[   ]cmake-3.3.2-Darwin-universal.tar.gz2015-09-17 14:36 47M 
[   ]cmake-3.3.2-Darwin-x86_64.dmg2015-09-17 14:35 22M 
[   ]cmake-3.3.2-Darwin-x86_64.tar.Z2015-09-17 14:35 31M 
[   ]cmake-3.3.2-Darwin-x86_64.tar.gz2015-09-17 14:35 21M 
[TXT]cmake-3.3.2-Linux-i386.sh2015-09-17 14:35 26M 
[   ]cmake-3.3.2-Linux-i386.tar.Z2015-09-17 14:35 37M 
[   ]cmake-3.3.2-Linux-i386.tar.gz2015-09-17 14:35 26M 
[TXT]cmake-3.3.2-Linux-x86_64.sh2015-09-17 14:35 27M 
[   ]cmake-3.3.2-Linux-x86_64.tar.Z2015-09-17 14:35 37M 
[   ]cmake-3.3.2-Linux-x86_64.tar.gz2015-09-17 14:35 27M 
[TXT]cmake-3.3.2-SHA-256.txt2015-09-17 14:35 1.6K 
[TXT]cmake-3.3.2-SHA-256.txt.asc2015-09-17 14:35 819  
[   ]cmake-3.3.2-win32-x86.exe2015-09-17 14:35 12M 
[   ]cmake-3.3.2-win32-x86.zip2015-09-17 14:35 16M 
[   ]cmake-3.3.2.tar.Z2015-09-17 14:35 10M 
[   ]cmake-3.3.2.tar.gz2015-09-17 14:35 6.3M 
[   ]cmake-3.3.2.zip2015-09-17 14:35 10M 

+ diff --git a/poky/bitbake/lib/bb/tests/fetch-testdata/files/v3.4/index.html b/poky/bitbake/lib/bb/tests/fetch-testdata/files/v3.4/index.html new file mode 100644 index 000000000..e7b56da75 --- /dev/null +++ b/poky/bitbake/lib/bb/tests/fetch-testdata/files/v3.4/index.html @@ -0,0 +1,127 @@ + + + + Index of /files/v3.4 + + +

Index of /files/v3.4

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
[ICO]NameLast modifiedSizeDescription

[PARENTDIR]Parent Directory  -  
[   ]cmake-3.4.0-Darwin-x86_64.dmg2015-11-12 13:42 22M 
[   ]cmake-3.4.0-Darwin-x86_64.tar.Z2015-11-12 13:42 31M 
[   ]cmake-3.4.0-Darwin-x86_64.tar.gz2015-11-12 13:42 22M 
[TXT]cmake-3.4.0-Linux-i386.sh2015-11-12 13:42 26M 
[   ]cmake-3.4.0-Linux-i386.tar.Z2015-11-12 13:42 37M 
[   ]cmake-3.4.0-Linux-i386.tar.gz2015-11-12 13:42 26M 
[TXT]cmake-3.4.0-Linux-x86_64.sh2015-11-12 13:42 27M 
[   ]cmake-3.4.0-Linux-x86_64.tar.Z2015-11-12 13:42 38M 
[   ]cmake-3.4.0-Linux-x86_64.tar.gz2015-11-12 13:42 27M 
[TXT]cmake-3.4.0-SHA-256.txt2015-11-12 13:42 1.3K 
[TXT]cmake-3.4.0-SHA-256.txt.asc2015-11-12 13:42 819  
[   ]cmake-3.4.0-rc1-Darwin-x86_64.dmg2015-10-06 11:02 22M 
[   ]cmake-3.4.0-rc1-Darwin-x86_64.tar.Z2015-10-06 11:02 31M 
[   ]cmake-3.4.0-rc1-Darwin-x86_64.tar.gz2015-10-06 11:02 22M 
[TXT]cmake-3.4.0-rc1-Linux-i386.sh2015-10-06 11:02 26M 
[   ]cmake-3.4.0-rc1-Linux-i386.tar.Z2015-10-06 11:02 37M 
[   ]cmake-3.4.0-rc1-Linux-i386.tar.gz2015-10-06 11:01 26M 
[TXT]cmake-3.4.0-rc1-Linux-x86_64.sh2015-10-06 11:01 27M 
[   ]cmake-3.4.0-rc1-Linux-x86_64.tar.Z2015-10-06 11:01 38M 
[   ]cmake-3.4.0-rc1-Linux-x86_64.tar.gz2015-10-06 11:01 27M 
[TXT]cmake-3.4.0-rc1-SHA-256.txt2015-10-06 11:01 1.3K 
[TXT]cmake-3.4.0-rc1-SHA-256.txt.asc2015-10-06 11:01 819  
[   ]cmake-3.4.0-rc1-win32-x86.exe2015-10-06 11:01 13M 
[   ]cmake-3.4.0-rc1-win32-x86.zip2015-10-06 11:01 16M 
[   ]cmake-3.4.0-rc1.tar.Z2015-10-06 11:01 10M 
[   ]cmake-3.4.0-rc1.tar.gz2015-10-06 11:01 6.4M 
[   ]cmake-3.4.0-rc1.zip2015-10-06 11:01 11M 
[   ]cmake-3.4.0-rc2-Darwin-x86_64.dmg2015-10-21 16:27 22M 
[   ]cmake-3.4.0-rc2-Darwin-x86_64.tar.Z2015-10-21 16:27 31M 
[   ]cmake-3.4.0-rc2-Darwin-x86_64.tar.gz2015-10-21 16:27 22M 
[TXT]cmake-3.4.0-rc2-Linux-i386.sh2015-10-21 16:27 26M 
[   ]cmake-3.4.0-rc2-Linux-i386.tar.Z2015-10-21 16:27 37M 
[   ]cmake-3.4.0-rc2-Linux-i386.tar.gz2015-10-21 16:27 26M 
[TXT]cmake-3.4.0-rc2-Linux-x86_64.sh2015-10-21 16:27 27M 
[   ]cmake-3.4.0-rc2-Linux-x86_64.tar.Z2015-10-21 16:27 38M 
[   ]cmake-3.4.0-rc2-Linux-x86_64.tar.gz2015-10-21 16:27 27M 
[TXT]cmake-3.4.0-rc2-SHA-256.txt2015-10-21 16:26 1.3K 
[TXT]cmake-3.4.0-rc2-SHA-256.txt.asc2015-10-21 16:26 819  
[   ]cmake-3.4.0-rc2-win32-x86.exe2015-10-21 16:26 13M 
[   ]cmake-3.4.0-rc2-win32-x86.zip2015-10-21 16:26 16M 
[   ]cmake-3.4.0-rc2.tar.Z2015-10-21 16:26 10M 
[   ]cmake-3.4.0-rc2.tar.gz2015-10-21 16:26 6.4M 
[   ]cmake-3.4.0-rc2.zip2015-10-21 16:26 11M 
[   ]cmake-3.4.0-rc3-Darwin-x86_64.dmg2015-11-03 11:09 22M 
[   ]cmake-3.4.0-rc3-Darwin-x86_64.tar.Z2015-11-03 11:09 31M 
[   ]cmake-3.4.0-rc3-Darwin-x86_64.tar.gz2015-11-03 11:09 22M 
[TXT]cmake-3.4.0-rc3-Linux-i386.sh2015-11-03 11:09 26M 
[   ]cmake-3.4.0-rc3-Linux-i386.tar.Z2015-11-03 11:09 37M 
[   ]cmake-3.4.0-rc3-Linux-i386.tar.gz2015-11-03 11:09 26M 
[TXT]cmake-3.4.0-rc3-Linux-x86_64.sh2015-11-03 11:09 27M 
[   ]cmake-3.4.0-rc3-Linux-x86_64.tar.Z2015-11-03 11:09 38M 
[   ]cmake-3.4.0-rc3-Linux-x86_64.tar.gz2015-11-03 11:09 27M 
[TXT]cmake-3.4.0-rc3-SHA-256.txt2015-11-03 11:09 1.3K 
[TXT]cmake-3.4.0-rc3-SHA-256.txt.asc2015-11-03 11:09 819  
[   ]cmake-3.4.0-rc3-win32-x86.exe2015-11-03 11:09 13M 
[   ]cmake-3.4.0-rc3-win32-x86.zip2015-11-03 11:09 16M 
[   ]cmake-3.4.0-rc3.tar.Z2015-11-03 11:09 10M 
[   ]cmake-3.4.0-rc3.tar.gz2015-11-03 11:08 6.4M 
[   ]cmake-3.4.0-rc3.zip2015-11-03 11:08 11M 
[   ]cmake-3.4.0-win32-x86.exe2015-11-12 13:42 13M 
[   ]cmake-3.4.0-win32-x86.zip2015-11-12 13:42 16M 
[   ]cmake-3.4.0.tar.Z2015-11-12 13:42 10M 
[   ]cmake-3.4.0.tar.gz2015-11-12 13:42 6.4M 
[   ]cmake-3.4.0.zip2015-11-12 13:42 10M 
[   ]cmake-3.4.1-Darwin-x86_64.dmg2015-12-02 14:42 22M 
[   ]cmake-3.4.1-Darwin-x86_64.tar.Z2015-12-02 14:42 31M 
[   ]cmake-3.4.1-Darwin-x86_64.tar.gz2015-12-02 14:42 22M 
[TXT]cmake-3.4.1-Linux-i386.sh2015-12-02 14:42 26M 
[   ]cmake-3.4.1-Linux-i386.tar.Z2015-12-02 14:42 37M 
[   ]cmake-3.4.1-Linux-i386.tar.gz2015-12-02 14:42 26M 
[TXT]cmake-3.4.1-Linux-x86_64.sh2015-12-02 14:42 27M 
[   ]cmake-3.4.1-Linux-x86_64.tar.Z2015-12-02 14:42 38M 
[   ]cmake-3.4.1-Linux-x86_64.tar.gz2015-12-02 14:42 27M 
[TXT]cmake-3.4.1-SHA-256.txt2015-12-02 14:42 1.3K 
[TXT]cmake-3.4.1-SHA-256.txt.asc2015-12-02 14:42 819  
[   ]cmake-3.4.1-win32-x86.exe2015-12-02 14:42 13M 
[   ]cmake-3.4.1-win32-x86.zip2015-12-02 14:42 16M 
[   ]cmake-3.4.1.tar.Z2015-12-02 14:42 10M 
[   ]cmake-3.4.1.tar.gz2015-12-02 14:42 6.4M 
[   ]cmake-3.4.1.zip2015-12-02 14:41 10M 
[   ]cmake-3.4.2-Darwin-x86_64.dmg2016-01-19 14:58 22M 
[   ]cmake-3.4.2-Darwin-x86_64.tar.Z2016-01-19 14:58 31M 
[   ]cmake-3.4.2-Darwin-x86_64.tar.gz2016-01-19 14:58 22M 
[TXT]cmake-3.4.2-Linux-i386.sh2016-01-19 14:58 26M 
[   ]cmake-3.4.2-Linux-i386.tar.Z2016-01-19 14:58 37M 
[   ]cmake-3.4.2-Linux-i386.tar.gz2016-01-19 14:58 26M 
[TXT]cmake-3.4.2-Linux-x86_64.sh2016-01-19 14:58 27M 
[   ]cmake-3.4.2-Linux-x86_64.tar.Z2016-01-19 14:58 38M 
[   ]cmake-3.4.2-Linux-x86_64.tar.gz2016-01-19 14:58 27M 
[TXT]cmake-3.4.2-SHA-256.txt2016-01-19 14:58 1.3K 
[TXT]cmake-3.4.2-SHA-256.txt.asc2016-01-19 14:58 819  
[   ]cmake-3.4.2-win32-x86.exe2016-01-19 14:58 13M 
[   ]cmake-3.4.2-win32-x86.zip2016-01-19 14:58 16M 
[   ]cmake-3.4.2.tar.Z2016-01-19 14:58 10M 
[   ]cmake-3.4.2.tar.gz2016-01-19 14:58 6.4M 
[   ]cmake-3.4.2.zip2016-01-19 14:58 10M 
[   ]cmake-3.4.3-Darwin-x86_64.dmg2016-01-25 14:29 22M 
[   ]cmake-3.4.3-Darwin-x86_64.tar.Z2016-01-25 14:29 31M 
[   ]cmake-3.4.3-Darwin-x86_64.tar.gz2016-01-25 14:29 22M 
[TXT]cmake-3.4.3-Linux-i386.sh2016-01-25 14:29 26M 
[   ]cmake-3.4.3-Linux-i386.tar.Z2016-01-25 14:29 37M 
[   ]cmake-3.4.3-Linux-i386.tar.gz2016-01-25 14:29 26M 
[TXT]cmake-3.4.3-Linux-x86_64.sh2016-01-25 14:29 27M 
[   ]cmake-3.4.3-Linux-x86_64.tar.Z2016-01-25 14:29 38M 
[   ]cmake-3.4.3-Linux-x86_64.tar.gz2016-01-25 14:29 27M 
[TXT]cmake-3.4.3-SHA-256.txt2016-01-25 14:29 1.3K 
[TXT]cmake-3.4.3-SHA-256.txt.asc2016-01-25 14:29 819  
[   ]cmake-3.4.3-win32-x86.exe2016-01-25 14:29 13M 
[   ]cmake-3.4.3-win32-x86.zip2016-01-25 14:29 16M 
[   ]cmake-3.4.3.tar.Z2016-01-25 14:29 10M 
[   ]cmake-3.4.3.tar.gz2016-01-25 14:29 6.4M 
[   ]cmake-3.4.3.zip2016-01-25 14:29 10M 
[DIR]cygwin/2016-01-25 14:34 -  

+ diff --git a/poky/bitbake/lib/bb/tests/fetch-testdata/files/v3.5/index.html b/poky/bitbake/lib/bb/tests/fetch-testdata/files/v3.5/index.html new file mode 100644 index 000000000..03d4f7c15 --- /dev/null +++ b/poky/bitbake/lib/bb/tests/fetch-testdata/files/v3.5/index.html @@ -0,0 +1,111 @@ + + + + Index of /files/v3.5 + + +

Index of /files/v3.5

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
[ICO]NameLast modifiedSizeDescription

[PARENTDIR]Parent Directory  -  
[   ]cmake-3.5.0-Darwin-x86_64.dmg2016-03-08 11:17 22M 
[   ]cmake-3.5.0-Darwin-x86_64.tar.Z2016-03-08 11:17 31M 
[   ]cmake-3.5.0-Darwin-x86_64.tar.gz2016-03-08 11:17 22M 
[TXT]cmake-3.5.0-Linux-i386.sh2016-03-08 11:17 27M 
[   ]cmake-3.5.0-Linux-i386.tar.Z2016-03-08 11:17 38M 
[   ]cmake-3.5.0-Linux-i386.tar.gz2016-03-08 11:17 27M 
[TXT]cmake-3.5.0-Linux-x86_64.sh2016-03-08 11:17 27M 
[   ]cmake-3.5.0-Linux-x86_64.tar.Z2016-03-08 11:17 38M 
[   ]cmake-3.5.0-Linux-x86_64.tar.gz2016-03-08 11:17 27M 
[TXT]cmake-3.5.0-SHA-256.txt2016-03-08 11:17 1.3K 
[TXT]cmake-3.5.0-SHA-256.txt.asc2016-03-08 11:16 819  
[   ]cmake-3.5.0-rc1-Darwin-x86_64.dmg2016-02-02 15:51 22M 
[   ]cmake-3.5.0-rc1-Darwin-x86_64.tar.Z2016-02-02 15:51 31M 
[   ]cmake-3.5.0-rc1-Darwin-x86_64.tar.gz2016-02-02 15:51 22M 
[TXT]cmake-3.5.0-rc1-Linux-i386.sh2016-02-02 15:51 27M 
[   ]cmake-3.5.0-rc1-Linux-i386.tar.Z2016-02-02 15:51 38M 
[   ]cmake-3.5.0-rc1-Linux-i386.tar.gz2016-02-02 15:51 27M 
[TXT]cmake-3.5.0-rc1-Linux-x86_64.sh2016-02-02 15:51 27M 
[   ]cmake-3.5.0-rc1-Linux-x86_64.tar.Z2016-02-02 15:51 38M 
[   ]cmake-3.5.0-rc1-Linux-x86_64.tar.gz2016-02-02 15:51 27M 
[TXT]cmake-3.5.0-rc1-SHA-256.txt2016-02-03 13:29 1.3K 
[TXT]cmake-3.5.0-rc1-SHA-256.txt.asc2016-02-03 13:29 819  
[   ]cmake-3.5.0-rc1-win32-x86.msi2016-02-03 13:29 15M 
[   ]cmake-3.5.0-rc1-win32-x86.zip2016-02-03 13:29 20M 
[   ]cmake-3.5.0-rc1.tar.Z2016-02-02 15:51 11M 
[   ]cmake-3.5.0-rc1.tar.gz2016-02-02 15:51 6.5M 
[   ]cmake-3.5.0-rc1.zip2016-02-02 15:51 11M 
[   ]cmake-3.5.0-rc2-Darwin-x86_64.dmg2016-02-10 15:03 22M 
[   ]cmake-3.5.0-rc2-Darwin-x86_64.tar.Z2016-02-10 15:03 31M 
[   ]cmake-3.5.0-rc2-Darwin-x86_64.tar.gz2016-02-10 15:03 22M 
[TXT]cmake-3.5.0-rc2-Linux-i386.sh2016-02-10 15:03 27M 
[   ]cmake-3.5.0-rc2-Linux-i386.tar.Z2016-02-10 15:03 38M 
[   ]cmake-3.5.0-rc2-Linux-i386.tar.gz2016-02-10 15:03 27M 
[TXT]cmake-3.5.0-rc2-Linux-x86_64.sh2016-02-10 15:03 27M 
[   ]cmake-3.5.0-rc2-Linux-x86_64.tar.Z2016-02-10 15:03 38M 
[   ]cmake-3.5.0-rc2-Linux-x86_64.tar.gz2016-02-10 15:03 27M 
[TXT]cmake-3.5.0-rc2-SHA-256.txt2016-02-10 15:03 1.3K 
[TXT]cmake-3.5.0-rc2-SHA-256.txt.asc2016-02-10 15:03 819  
[   ]cmake-3.5.0-rc2-win32-x86.msi2016-02-10 15:03 15M 
[   ]cmake-3.5.0-rc2-win32-x86.zip2016-02-10 15:03 20M 
[   ]cmake-3.5.0-rc2.tar.Z2016-02-10 15:02 11M 
[   ]cmake-3.5.0-rc2.tar.gz2016-02-10 15:02 6.5M 
[   ]cmake-3.5.0-rc2.zip2016-02-10 15:02 11M 
[   ]cmake-3.5.0-rc3-Darwin-x86_64.dmg2016-02-18 15:41 22M 
[   ]cmake-3.5.0-rc3-Darwin-x86_64.tar.Z2016-02-18 15:41 31M 
[   ]cmake-3.5.0-rc3-Darwin-x86_64.tar.gz2016-02-18 15:41 22M 
[TXT]cmake-3.5.0-rc3-Linux-i386.sh2016-02-18 15:41 27M 
[   ]cmake-3.5.0-rc3-Linux-i386.tar.Z2016-02-18 15:41 38M 
[   ]cmake-3.5.0-rc3-Linux-i386.tar.gz2016-02-18 15:41 27M 
[TXT]cmake-3.5.0-rc3-Linux-x86_64.sh2016-02-18 15:41 27M 
[   ]cmake-3.5.0-rc3-Linux-x86_64.tar.Z2016-02-18 15:41 38M 
[   ]cmake-3.5.0-rc3-Linux-x86_64.tar.gz2016-02-18 15:41 27M 
[TXT]cmake-3.5.0-rc3-SHA-256.txt2016-02-18 15:41 1.3K 
[TXT]cmake-3.5.0-rc3-SHA-256.txt.asc2016-02-18 15:41 819  
[   ]cmake-3.5.0-rc3-win32-x86.msi2016-02-18 15:41 15M 
[   ]cmake-3.5.0-rc3-win32-x86.zip2016-02-18 15:41 20M 
[   ]cmake-3.5.0-rc3.tar.Z2016-02-18 15:41 11M 
[   ]cmake-3.5.0-rc3.tar.gz2016-02-18 15:40 6.5M 
[   ]cmake-3.5.0-rc3.zip2016-02-18 15:40 11M 
[   ]cmake-3.5.0-win32-x86.msi2016-03-08 11:16 15M 
[   ]cmake-3.5.0-win32-x86.zip2016-03-08 11:16 20M 
[   ]cmake-3.5.0.tar.Z2016-03-08 11:16 11M 
[   ]cmake-3.5.0.tar.gz2016-03-08 11:16 6.5M 
[   ]cmake-3.5.0.zip2016-03-08 11:16 11M 
[   ]cmake-3.5.1-Darwin-x86_64.dmg2016-03-24 16:00 22M 
[   ]cmake-3.5.1-Darwin-x86_64.tar.Z2016-03-24 16:00 31M 
[   ]cmake-3.5.1-Darwin-x86_64.tar.gz2016-03-24 16:00 22M 
[TXT]cmake-3.5.1-Linux-i386.sh2016-03-24 16:00 27M 
[   ]cmake-3.5.1-Linux-i386.tar.Z2016-03-24 16:00 38M 
[   ]cmake-3.5.1-Linux-i386.tar.gz2016-03-24 16:00 27M 
[TXT]cmake-3.5.1-Linux-x86_64.sh2016-03-24 16:00 27M 
[   ]cmake-3.5.1-Linux-x86_64.tar.Z2016-03-24 16:00 38M 
[   ]cmake-3.5.1-Linux-x86_64.tar.gz2016-03-24 16:00 27M 
[TXT]cmake-3.5.1-SHA-256.txt2016-03-24 16:00 1.3K 
[TXT]cmake-3.5.1-SHA-256.txt.asc2016-03-24 16:00 819  
[   ]cmake-3.5.1-win32-x86.msi2016-03-24 16:00 15M 
[   ]cmake-3.5.1-win32-x86.zip2016-03-24 16:00 20M 
[   ]cmake-3.5.1.tar.Z2016-03-24 16:00 11M 
[   ]cmake-3.5.1.tar.gz2016-03-24 16:00 6.5M 
[   ]cmake-3.5.1.zip2016-03-24 16:00 11M 
[   ]cmake-3.5.2-Darwin-x86_64.dmg2016-04-15 13:40 22M 
[   ]cmake-3.5.2-Darwin-x86_64.tar.Z2016-04-15 13:40 31M 
[   ]cmake-3.5.2-Darwin-x86_64.tar.gz2016-04-15 13:40 22M 
[TXT]cmake-3.5.2-Linux-i386.sh2016-04-15 13:40 27M 
[   ]cmake-3.5.2-Linux-i386.tar.Z2016-04-15 13:40 38M 
[   ]cmake-3.5.2-Linux-i386.tar.gz2016-04-15 13:40 27M 
[TXT]cmake-3.5.2-Linux-x86_64.sh2016-04-15 13:40 27M 
[   ]cmake-3.5.2-Linux-x86_64.tar.Z2016-04-15 13:40 38M 
[   ]cmake-3.5.2-Linux-x86_64.tar.gz2016-04-15 13:40 27M 
[TXT]cmake-3.5.2-SHA-256.txt2016-04-15 13:40 1.3K 
[TXT]cmake-3.5.2-SHA-256.txt.asc2016-04-15 13:40 819  
[   ]cmake-3.5.2-win32-x86.msi2016-04-15 13:40 15M 
[   ]cmake-3.5.2-win32-x86.zip2016-04-15 13:40 20M 
[   ]cmake-3.5.2.tar.Z2016-04-15 13:40 11M 
[   ]cmake-3.5.2.tar.gz2016-04-15 13:40 6.5M 
[   ]cmake-3.5.2.zip2016-04-15 13:40 11M 
[DIR]cygwin/2016-04-15 13:42 -  

+ diff --git a/poky/bitbake/lib/bb/tests/fetch-testdata/files/v3.6/index.html b/poky/bitbake/lib/bb/tests/fetch-testdata/files/v3.6/index.html new file mode 100644 index 000000000..4fca3a5fc --- /dev/null +++ b/poky/bitbake/lib/bb/tests/fetch-testdata/files/v3.6/index.html @@ -0,0 +1,159 @@ + + + + Index of /files/v3.6 + + +

Index of /files/v3.6

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
[ICO]NameLast modifiedSizeDescription

[PARENTDIR]Parent Directory  -  
[   ]cmake-3.6.0-Darwin-x86_64.dmg2016-07-07 13:05 25M 
[   ]cmake-3.6.0-Darwin-x86_64.tar.Z2016-07-07 13:05 36M 
[   ]cmake-3.6.0-Darwin-x86_64.tar.gz2016-07-07 13:05 25M 
[TXT]cmake-3.6.0-Linux-i386.sh2016-07-07 13:05 27M 
[   ]cmake-3.6.0-Linux-i386.tar.Z2016-07-07 13:05 38M 
[   ]cmake-3.6.0-Linux-i386.tar.gz2016-07-07 13:05 27M 
[TXT]cmake-3.6.0-Linux-x86_64.sh2016-07-07 13:05 27M 
[   ]cmake-3.6.0-Linux-x86_64.tar.Z2016-07-07 13:05 38M 
[   ]cmake-3.6.0-Linux-x86_64.tar.gz2016-07-07 13:05 27M 
[TXT]cmake-3.6.0-SHA-256.txt2016-07-07 13:05 1.4K 
[TXT]cmake-3.6.0-SHA-256.txt.asc2016-07-07 13:05 819  
[   ]cmake-3.6.0-rc1-Darwin-x86_64.dmg2016-06-03 14:50 25M 
[   ]cmake-3.6.0-rc1-Darwin-x86_64.tar.Z2016-06-03 14:50 36M 
[   ]cmake-3.6.0-rc1-Darwin-x86_64.tar.gz2016-06-03 14:50 25M 
[TXT]cmake-3.6.0-rc1-Linux-i386.sh2016-06-03 14:50 27M 
[   ]cmake-3.6.0-rc1-Linux-i386.tar.Z2016-06-03 14:50 38M 
[   ]cmake-3.6.0-rc1-Linux-i386.tar.gz2016-06-03 14:50 27M 
[TXT]cmake-3.6.0-rc1-Linux-x86_64.sh2016-06-03 14:50 27M 
[   ]cmake-3.6.0-rc1-Linux-x86_64.tar.Z2016-06-03 14:50 38M 
[   ]cmake-3.6.0-rc1-Linux-x86_64.tar.gz2016-06-03 14:49 27M 
[TXT]cmake-3.6.0-rc1-SHA-256.txt2016-06-03 14:49 1.5K 
[TXT]cmake-3.6.0-rc1-SHA-256.txt.asc2016-06-03 14:49 819  
[   ]cmake-3.6.0-rc1-win32-x86.msi2016-06-03 14:49 15M 
[   ]cmake-3.6.0-rc1-win32-x86.zip2016-06-03 14:49 21M 
[   ]cmake-3.6.0-rc1-win64-x64.msi2016-06-03 14:49 15M 
[   ]cmake-3.6.0-rc1-win64-x64.zip2016-06-03 14:49 19M 
[   ]cmake-3.6.0-rc1.tar.Z2016-06-03 14:49 11M 
[   ]cmake-3.6.0-rc1.tar.gz2016-06-03 14:49 6.6M 
[   ]cmake-3.6.0-rc1.zip2016-06-03 14:49 11M 
[   ]cmake-3.6.0-rc2-Darwin-x86_64.dmg2016-06-13 14:29 25M 
[   ]cmake-3.6.0-rc2-Darwin-x86_64.tar.Z2016-06-13 14:29 36M 
[   ]cmake-3.6.0-rc2-Darwin-x86_64.tar.gz2016-06-13 14:29 25M 
[TXT]cmake-3.6.0-rc2-Linux-i386.sh2016-06-13 14:29 27M 
[   ]cmake-3.6.0-rc2-Linux-i386.tar.Z2016-06-13 14:29 38M 
[   ]cmake-3.6.0-rc2-Linux-i386.tar.gz2016-06-13 14:29 27M 
[TXT]cmake-3.6.0-rc2-Linux-x86_64.sh2016-06-13 14:29 27M 
[   ]cmake-3.6.0-rc2-Linux-x86_64.tar.Z2016-06-13 14:29 38M 
[   ]cmake-3.6.0-rc2-Linux-x86_64.tar.gz2016-06-13 14:29 27M 
[TXT]cmake-3.6.0-rc2-SHA-256.txt2016-06-13 14:29 1.5K 
[TXT]cmake-3.6.0-rc2-SHA-256.txt.asc2016-06-13 14:29 819  
[   ]cmake-3.6.0-rc2-win32-x86.msi2016-06-13 14:29 15M 
[   ]cmake-3.6.0-rc2-win32-x86.zip2016-06-13 14:29 21M 
[   ]cmake-3.6.0-rc2-win64-x64.msi2016-06-13 14:29 15M 
[   ]cmake-3.6.0-rc2-win64-x64.zip2016-06-13 14:29 19M 
[   ]cmake-3.6.0-rc2.tar.Z2016-06-13 14:29 11M 
[   ]cmake-3.6.0-rc2.tar.gz2016-06-13 14:28 6.6M 
[   ]cmake-3.6.0-rc2.zip2016-06-13 14:28 11M 
[   ]cmake-3.6.0-rc3-Darwin-x86_64.dmg2016-06-22 13:58 25M 
[   ]cmake-3.6.0-rc3-Darwin-x86_64.tar.Z2016-06-22 13:58 36M 
[   ]cmake-3.6.0-rc3-Darwin-x86_64.tar.gz2016-06-22 13:57 25M 
[TXT]cmake-3.6.0-rc3-Linux-i386.sh2016-06-22 13:57 27M 
[   ]cmake-3.6.0-rc3-Linux-i386.tar.Z2016-06-22 13:57 38M 
[   ]cmake-3.6.0-rc3-Linux-i386.tar.gz2016-06-22 13:57 27M 
[TXT]cmake-3.6.0-rc3-Linux-x86_64.sh2016-06-22 13:57 27M 
[   ]cmake-3.6.0-rc3-Linux-x86_64.tar.Z2016-06-22 13:57 38M 
[   ]cmake-3.6.0-rc3-Linux-x86_64.tar.gz2016-06-22 13:57 27M 
[TXT]cmake-3.6.0-rc3-SHA-256.txt2016-06-22 13:57 1.5K 
[TXT]cmake-3.6.0-rc3-SHA-256.txt.asc2016-06-22 13:57 819  
[   ]cmake-3.6.0-rc3-win32-x86.msi2016-06-22 13:57 15M 
[   ]cmake-3.6.0-rc3-win32-x86.zip2016-06-22 13:57 21M 
[   ]cmake-3.6.0-rc3-win64-x64.msi2016-06-22 13:57 15M 
[   ]cmake-3.6.0-rc3-win64-x64.zip2016-06-22 13:57 19M 
[   ]cmake-3.6.0-rc3.tar.Z2016-06-22 13:57 11M 
[   ]cmake-3.6.0-rc3.tar.gz2016-06-22 13:57 6.6M 
[   ]cmake-3.6.0-rc3.zip2016-06-22 13:57 11M 
[   ]cmake-3.6.0-rc4-Darwin-x86_64.dmg2016-06-29 14:50 25M 
[   ]cmake-3.6.0-rc4-Darwin-x86_64.tar.Z2016-06-29 14:50 36M 
[   ]cmake-3.6.0-rc4-Darwin-x86_64.tar.gz2016-06-29 14:50 25M 
[TXT]cmake-3.6.0-rc4-Linux-i386.sh2016-06-29 14:50 27M 
[   ]cmake-3.6.0-rc4-Linux-i386.tar.Z2016-06-29 14:50 38M 
[   ]cmake-3.6.0-rc4-Linux-i386.tar.gz2016-06-29 14:50 27M 
[TXT]cmake-3.6.0-rc4-Linux-x86_64.sh2016-06-29 14:50 27M 
[   ]cmake-3.6.0-rc4-Linux-x86_64.tar.Z2016-06-29 14:49 38M 
[   ]cmake-3.6.0-rc4-Linux-x86_64.tar.gz2016-06-29 14:49 27M 
[TXT]cmake-3.6.0-rc4-SHA-256.txt2016-06-29 14:49 1.5K 
[TXT]cmake-3.6.0-rc4-SHA-256.txt.asc2016-06-29 14:49 819  
[   ]cmake-3.6.0-rc4-win32-x86.msi2016-06-29 14:49 15M 
[   ]cmake-3.6.0-rc4-win32-x86.zip2016-06-29 14:49 21M 
[   ]cmake-3.6.0-rc4-win64-x64.msi2016-06-29 14:49 15M 
[   ]cmake-3.6.0-rc4-win64-x64.zip2016-06-29 14:49 19M 
[   ]cmake-3.6.0-rc4.tar.Z2016-06-29 14:49 11M 
[   ]cmake-3.6.0-rc4.tar.gz2016-06-29 14:49 6.6M 
[   ]cmake-3.6.0-rc4.zip2016-06-29 14:49 11M 
[   ]cmake-3.6.0-win32-x86.msi2016-07-07 13:04 15M 
[   ]cmake-3.6.0-win32-x86.zip2016-07-07 13:04 20M 
[   ]cmake-3.6.0-win64-x64.msi2016-07-07 13:04 15M 
[   ]cmake-3.6.0-win64-x64.zip2016-07-07 13:04 19M 
[   ]cmake-3.6.0.tar.Z2016-07-07 13:04 11M 
[   ]cmake-3.6.0.tar.gz2016-07-07 13:04 6.6M 
[   ]cmake-3.6.0.zip2016-07-07 13:04 11M 
[   ]cmake-3.6.1-Darwin-x86_64.dmg2016-07-22 10:58 25M 
[   ]cmake-3.6.1-Darwin-x86_64.tar.Z2016-07-22 10:58 36M 
[   ]cmake-3.6.1-Darwin-x86_64.tar.gz2016-07-22 10:58 25M 
[TXT]cmake-3.6.1-Linux-i386.sh2016-07-22 10:58 27M 
[   ]cmake-3.6.1-Linux-i386.tar.Z2016-07-22 10:58 38M 
[   ]cmake-3.6.1-Linux-i386.tar.gz2016-07-22 10:58 27M 
[TXT]cmake-3.6.1-Linux-x86_64.sh2016-07-22 10:58 27M 
[   ]cmake-3.6.1-Linux-x86_64.tar.Z2016-07-22 10:58 38M 
[   ]cmake-3.6.1-Linux-x86_64.tar.gz2016-07-22 10:58 27M 
[TXT]cmake-3.6.1-SHA-256.txt2016-07-22 10:58 1.4K 
[TXT]cmake-3.6.1-SHA-256.txt.asc2016-07-22 10:58 819  
[   ]cmake-3.6.1-win32-x86.msi2016-07-22 10:58 15M 
[   ]cmake-3.6.1-win32-x86.zip2016-07-22 10:58 20M 
[   ]cmake-3.6.1-win64-x64.msi2016-07-22 10:58 15M 
[   ]cmake-3.6.1-win64-x64.zip2016-07-22 10:57 19M 
[   ]cmake-3.6.1.tar.Z2016-07-22 10:57 11M 
[   ]cmake-3.6.1.tar.gz2016-07-22 10:57 6.6M 
[   ]cmake-3.6.1.zip2016-07-22 10:57 11M 
[   ]cmake-3.6.2-Darwin-x86_64.dmg2016-09-07 14:29 25M 
[   ]cmake-3.6.2-Darwin-x86_64.tar.Z2016-09-07 14:29 36M 
[   ]cmake-3.6.2-Darwin-x86_64.tar.gz2016-09-07 14:29 25M 
[TXT]cmake-3.6.2-Linux-i386.sh2016-09-07 14:29 27M 
[   ]cmake-3.6.2-Linux-i386.tar.Z2016-09-07 14:29 38M 
[   ]cmake-3.6.2-Linux-i386.tar.gz2016-09-07 14:28 27M 
[TXT]cmake-3.6.2-Linux-x86_64.sh2016-09-07 14:28 27M 
[   ]cmake-3.6.2-Linux-x86_64.tar.Z2016-09-07 14:28 38M 
[   ]cmake-3.6.2-Linux-x86_64.tar.gz2016-09-07 14:28 27M 
[TXT]cmake-3.6.2-SHA-256.txt2016-09-07 14:28 1.4K 
[TXT]cmake-3.6.2-SHA-256.txt.asc2016-09-07 14:28 819  
[   ]cmake-3.6.2-win32-x86.msi2016-09-07 14:28 15M 
[   ]cmake-3.6.2-win32-x86.zip2016-09-07 14:28 20M 
[   ]cmake-3.6.2-win64-x64.msi2016-09-07 14:28 15M 
[   ]cmake-3.6.2-win64-x64.zip2016-09-07 14:28 19M 
[   ]cmake-3.6.2.tar.Z2016-09-07 14:28 11M 
[   ]cmake-3.6.2.tar.gz2016-09-07 14:28 6.6M 
[   ]cmake-3.6.2.zip2016-09-07 14:28 11M 
[   ]cmake-3.6.3-Darwin-x86_64.dmg2016-11-03 12:13 25M 
[   ]cmake-3.6.3-Darwin-x86_64.tar.Z2016-11-03 12:13 36M 
[   ]cmake-3.6.3-Darwin-x86_64.tar.gz2016-11-03 12:13 25M 
[TXT]cmake-3.6.3-Linux-i386.sh2016-11-03 12:13 27M 
[   ]cmake-3.6.3-Linux-i386.tar.Z2016-11-03 12:13 38M 
[   ]cmake-3.6.3-Linux-i386.tar.gz2016-11-03 12:13 27M 
[TXT]cmake-3.6.3-Linux-x86_64.sh2016-11-03 12:13 27M 
[   ]cmake-3.6.3-Linux-x86_64.tar.Z2016-11-03 12:13 38M 
[   ]cmake-3.6.3-Linux-x86_64.tar.gz2016-11-03 12:13 27M 
[TXT]cmake-3.6.3-SHA-256.txt2016-11-03 12:13 1.4K 
[TXT]cmake-3.6.3-SHA-256.txt.asc2016-11-03 12:13 801  
[   ]cmake-3.6.3-win32-x86.msi2016-11-03 12:13 15M 
[   ]cmake-3.6.3-win32-x86.zip2016-11-03 12:13 20M 
[   ]cmake-3.6.3-win64-x64.msi2016-11-03 12:12 17M 
[   ]cmake-3.6.3-win64-x64.zip2016-11-03 12:12 23M 
[   ]cmake-3.6.3.tar.Z2016-11-03 12:12 11M 
[   ]cmake-3.6.3.tar.gz2016-11-03 12:12 6.6M 
[   ]cmake-3.6.3.zip2016-11-03 12:12 11M 
[DIR]cygwin/2016-09-07 14:44 -  

+ diff --git a/poky/bitbake/lib/bb/tests/fetch-testdata/files/v3.7/index.html b/poky/bitbake/lib/bb/tests/fetch-testdata/files/v3.7/index.html new file mode 100644 index 000000000..4812f93f9 --- /dev/null +++ b/poky/bitbake/lib/bb/tests/fetch-testdata/files/v3.7/index.html @@ -0,0 +1,92 @@ + + + + Index of /files/v3.7 + + +

Index of /files/v3.7

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
[ICO]NameLast modifiedSizeDescription

[PARENTDIR]Parent Directory  -  
[   ]cmake-3.7.0-Darwin-x86_64.dmg2016-11-11 14:01 26M 
[   ]cmake-3.7.0-Darwin-x86_64.tar.gz2016-11-11 14:01 25M 
[TXT]cmake-3.7.0-Linux-x86_64.sh2016-11-11 14:01 29M 
[   ]cmake-3.7.0-Linux-x86_64.tar.gz2016-11-11 14:01 29M 
[TXT]cmake-3.7.0-SHA-256.txt2016-11-11 14:01 1.0K 
[TXT]cmake-3.7.0-SHA-256.txt.asc2016-11-11 14:01 801  
[   ]cmake-3.7.0-rc1-Darwin-x86_64.dmg2016-10-04 15:23 26M 
[   ]cmake-3.7.0-rc1-Darwin-x86_64.tar.gz2016-10-04 15:23 25M 
[TXT]cmake-3.7.0-rc1-Linux-x86_64.sh2016-10-04 15:23 29M 
[   ]cmake-3.7.0-rc1-Linux-x86_64.tar.gz2016-10-04 15:23 29M 
[TXT]cmake-3.7.0-rc1-SHA-256.txt2016-10-04 15:23 1.0K 
[TXT]cmake-3.7.0-rc1-SHA-256.txt.asc2016-10-04 15:23 801  
[   ]cmake-3.7.0-rc1-win32-x86.msi2016-10-04 15:23 15M 
[   ]cmake-3.7.0-rc1-win32-x86.zip2016-10-04 15:23 21M 
[   ]cmake-3.7.0-rc1-win64-x64.msi2016-10-04 15:23 17M 
[   ]cmake-3.7.0-rc1-win64-x64.zip2016-10-04 15:23 24M 
[   ]cmake-3.7.0-rc1.tar.Z2016-10-04 15:23 11M 
[   ]cmake-3.7.0-rc1.tar.gz2016-10-04 15:23 7.0M 
[   ]cmake-3.7.0-rc1.zip2016-10-04 15:23 12M 
[   ]cmake-3.7.0-rc2-Darwin-x86_64.dmg2016-10-19 15:24 26M 
[   ]cmake-3.7.0-rc2-Darwin-x86_64.tar.gz2016-10-19 15:24 25M 
[TXT]cmake-3.7.0-rc2-Linux-x86_64.sh2016-10-19 15:24 29M 
[   ]cmake-3.7.0-rc2-Linux-x86_64.tar.gz2016-10-19 15:24 29M 
[TXT]cmake-3.7.0-rc2-SHA-256.txt2016-10-19 15:24 1.0K 
[TXT]cmake-3.7.0-rc2-SHA-256.txt.asc2016-10-19 15:24 801  
[   ]cmake-3.7.0-rc2-win32-x86.msi2016-10-19 15:23 15M 
[   ]cmake-3.7.0-rc2-win32-x86.zip2016-10-19 15:23 21M 
[   ]cmake-3.7.0-rc2-win64-x64.msi2016-10-19 15:23 17M 
[   ]cmake-3.7.0-rc2-win64-x64.zip2016-10-19 15:23 24M 
[   ]cmake-3.7.0-rc2.tar.Z2016-10-19 15:23 11M 
[   ]cmake-3.7.0-rc2.tar.gz2016-10-19 15:23 7.0M 
[   ]cmake-3.7.0-rc2.zip2016-10-19 15:23 12M 
[   ]cmake-3.7.0-rc3-Darwin-x86_64.dmg2016-11-04 15:26 26M 
[   ]cmake-3.7.0-rc3-Darwin-x86_64.tar.gz2016-11-04 15:26 25M 
[TXT]cmake-3.7.0-rc3-Linux-x86_64.sh2016-11-04 15:26 29M 
[   ]cmake-3.7.0-rc3-Linux-x86_64.tar.gz2016-11-04 15:26 29M 
[TXT]cmake-3.7.0-rc3-SHA-256.txt2016-11-04 15:26 1.0K 
[TXT]cmake-3.7.0-rc3-SHA-256.txt.asc2016-11-04 15:26 801  
[   ]cmake-3.7.0-rc3-win32-x86.msi2016-11-04 15:26 15M 
[   ]cmake-3.7.0-rc3-win32-x86.zip2016-11-04 15:26 21M 
[   ]cmake-3.7.0-rc3-win64-x64.msi2016-11-04 15:26 17M 
[   ]cmake-3.7.0-rc3-win64-x64.zip2016-11-04 15:26 24M 
[   ]cmake-3.7.0-rc3.tar.Z2016-11-04 15:26 11M 
[   ]cmake-3.7.0-rc3.tar.gz2016-11-04 15:26 7.0M 
[   ]cmake-3.7.0-rc3.zip2016-11-04 15:26 12M 
[   ]cmake-3.7.0-win32-x86.msi2016-11-11 14:01 15M 
[   ]cmake-3.7.0-win32-x86.zip2016-11-11 14:01 21M 
[   ]cmake-3.7.0-win64-x64.msi2016-11-11 14:01 17M 
[   ]cmake-3.7.0-win64-x64.zip2016-11-11 14:00 24M 
[   ]cmake-3.7.0.tar.Z2016-11-11 14:00 11M 
[   ]cmake-3.7.0.tar.gz2016-11-11 14:00 7.0M 
[   ]cmake-3.7.0.zip2016-11-11 14:00 11M 
[   ]cmake-3.7.1-Darwin-x86_64.dmg2016-11-30 14:25 26M 
[   ]cmake-3.7.1-Darwin-x86_64.tar.gz2016-11-30 14:25 25M 
[TXT]cmake-3.7.1-Linux-x86_64.sh2016-11-30 14:25 29M 
[   ]cmake-3.7.1-Linux-x86_64.tar.gz2016-11-30 14:25 29M 
[TXT]cmake-3.7.1-SHA-256.txt2016-11-30 14:25 1.0K 
[TXT]cmake-3.7.1-SHA-256.txt.asc2016-11-30 14:25 833  
[   ]cmake-3.7.1-win32-x86.msi2016-11-30 14:25 15M 
[   ]cmake-3.7.1-win32-x86.zip2016-11-30 14:25 21M 
[   ]cmake-3.7.1-win64-x64.msi2016-11-30 14:24 17M 
[   ]cmake-3.7.1-win64-x64.zip2016-11-30 14:24 24M 
[   ]cmake-3.7.1.tar.Z2016-11-30 14:24 11M 
[   ]cmake-3.7.1.tar.gz2016-11-30 14:24 7.0M 
[   ]cmake-3.7.1.zip2016-11-30 14:24 11M 
[   ]cmake-3.7.2-Darwin-x86_64.dmg2017-01-13 14:13 26M 
[   ]cmake-3.7.2-Darwin-x86_64.tar.gz2017-01-13 14:13 25M 
[TXT]cmake-3.7.2-Linux-x86_64.sh2017-01-13 14:13 29M 
[   ]cmake-3.7.2-Linux-x86_64.tar.gz2017-01-13 14:13 29M 
[TXT]cmake-3.7.2-SHA-256.txt2017-01-13 14:13 1.0K 
[TXT]cmake-3.7.2-SHA-256.txt.asc2017-01-13 14:13 833  
[   ]cmake-3.7.2-win32-x86.msi2017-01-13 14:13 15M 
[   ]cmake-3.7.2-win32-x86.zip2017-01-13 14:12 21M 
[   ]cmake-3.7.2-win64-x64.msi2017-01-13 14:12 17M 
[   ]cmake-3.7.2-win64-x64.zip2017-01-13 14:12 24M 
[   ]cmake-3.7.2.tar.Z2017-01-13 14:12 11M 
[   ]cmake-3.7.2.tar.gz2017-01-13 14:12 7.0M 
[   ]cmake-3.7.2.zip2017-01-13 14:12 11M 

+ diff --git a/poky/bitbake/lib/bb/tests/fetch-testdata/files/v3.8/index.html b/poky/bitbake/lib/bb/tests/fetch-testdata/files/v3.8/index.html new file mode 100644 index 000000000..5fc8caa1d --- /dev/null +++ b/poky/bitbake/lib/bb/tests/fetch-testdata/files/v3.8/index.html @@ -0,0 +1,105 @@ + + + + Index of /files/v3.8 + + +

Index of /files/v3.8

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
[ICO]NameLast modifiedSizeDescription

[PARENTDIR]Parent Directory  -  
[   ]cmake-3.8.0-Darwin-x86_64.dmg2017-04-10 13:39 26M 
[   ]cmake-3.8.0-Darwin-x86_64.tar.gz2017-04-10 13:39 26M 
[TXT]cmake-3.8.0-Linux-x86_64.sh2017-04-10 13:39 31M 
[   ]cmake-3.8.0-Linux-x86_64.tar.gz2017-04-10 13:39 31M 
[TXT]cmake-3.8.0-SHA-256.txt2017-04-10 13:39 1.0K 
[TXT]cmake-3.8.0-SHA-256.txt.asc2017-04-10 13:39 833  
[   ]cmake-3.8.0-rc1-Darwin-x86_64.dmg2017-02-07 12:54 26M 
[   ]cmake-3.8.0-rc1-Darwin-x86_64.tar.gz2017-02-07 12:54 26M 
[TXT]cmake-3.8.0-rc1-Linux-x86_64.sh2017-02-07 12:54 31M 
[   ]cmake-3.8.0-rc1-Linux-x86_64.tar.gz2017-02-07 12:54 31M 
[TXT]cmake-3.8.0-rc1-SHA-256.txt2017-02-07 12:54 1.0K 
[TXT]cmake-3.8.0-rc1-SHA-256.txt.asc2017-02-07 12:54 833  
[   ]cmake-3.8.0-rc1-win32-x86.msi2017-02-07 12:54 15M 
[   ]cmake-3.8.0-rc1-win32-x86.zip2017-02-07 12:54 21M 
[   ]cmake-3.8.0-rc1-win64-x64.msi2017-02-07 12:54 18M 
[   ]cmake-3.8.0-rc1-win64-x64.zip2017-02-07 12:54 24M 
[   ]cmake-3.8.0-rc1.tar.Z2017-02-07 12:54 12M 
[   ]cmake-3.8.0-rc1.tar.gz2017-02-07 12:54 7.1M 
[   ]cmake-3.8.0-rc1.zip2017-02-07 12:54 12M 
[   ]cmake-3.8.0-rc2-Darwin-x86_64.dmg2017-03-03 10:00 26M 
[   ]cmake-3.8.0-rc2-Darwin-x86_64.tar.gz2017-03-03 10:00 26M 
[TXT]cmake-3.8.0-rc2-Linux-x86_64.sh2017-03-03 10:00 31M 
[   ]cmake-3.8.0-rc2-Linux-x86_64.tar.gz2017-03-03 09:59 31M 
[TXT]cmake-3.8.0-rc2-SHA-256.txt2017-03-03 09:59 1.0K 
[TXT]cmake-3.8.0-rc2-SHA-256.txt.asc2017-03-03 09:59 833  
[   ]cmake-3.8.0-rc2-win32-x86.msi2017-03-03 09:59 16M 
[   ]cmake-3.8.0-rc2-win32-x86.zip2017-03-03 09:59 22M 
[   ]cmake-3.8.0-rc2-win64-x64.msi2017-03-03 09:59 18M 
[   ]cmake-3.8.0-rc2-win64-x64.zip2017-03-03 09:59 24M 
[   ]cmake-3.8.0-rc2.tar.Z2017-03-03 09:59 12M 
[   ]cmake-3.8.0-rc2.tar.gz2017-03-03 09:59 7.2M 
[   ]cmake-3.8.0-rc2.zip2017-03-03 09:59 12M 
[   ]cmake-3.8.0-rc3-Darwin-x86_64.dmg2017-03-24 13:52 26M 
[   ]cmake-3.8.0-rc3-Darwin-x86_64.tar.gz2017-03-24 13:52 26M 
[TXT]cmake-3.8.0-rc3-Linux-x86_64.sh2017-03-24 13:52 31M 
[   ]cmake-3.8.0-rc3-Linux-x86_64.tar.gz2017-03-24 13:52 31M 
[TXT]cmake-3.8.0-rc3-SHA-256.txt2017-03-24 13:52 1.0K 
[TXT]cmake-3.8.0-rc3-SHA-256.txt.asc2017-03-24 13:52 833  
[   ]cmake-3.8.0-rc3-win32-x86.msi2017-03-24 13:52 16M 
[   ]cmake-3.8.0-rc3-win32-x86.zip2017-03-24 13:52 22M 
[   ]cmake-3.8.0-rc3-win64-x64.msi2017-03-24 13:52 18M 
[   ]cmake-3.8.0-rc3-win64-x64.zip2017-03-24 13:52 24M 
[   ]cmake-3.8.0-rc3.tar.Z2017-03-24 13:52 12M 
[   ]cmake-3.8.0-rc3.tar.gz2017-03-24 13:52 7.2M 
[   ]cmake-3.8.0-rc3.zip2017-03-24 13:52 12M 
[   ]cmake-3.8.0-rc4-Darwin-x86_64.dmg2017-03-30 11:38 26M 
[   ]cmake-3.8.0-rc4-Darwin-x86_64.tar.gz2017-03-30 11:38 26M 
[TXT]cmake-3.8.0-rc4-Linux-x86_64.sh2017-03-30 11:38 31M 
[   ]cmake-3.8.0-rc4-Linux-x86_64.tar.gz2017-03-30 11:38 31M 
[TXT]cmake-3.8.0-rc4-SHA-256.txt2017-03-30 11:38 1.0K 
[TXT]cmake-3.8.0-rc4-SHA-256.txt.asc2017-03-30 11:38 833  
[   ]cmake-3.8.0-rc4-win32-x86.msi2017-03-30 11:38 16M 
[   ]cmake-3.8.0-rc4-win32-x86.zip2017-03-30 11:38 22M 
[   ]cmake-3.8.0-rc4-win64-x64.msi2017-03-30 11:38 18M 
[   ]cmake-3.8.0-rc4-win64-x64.zip2017-03-30 11:38 24M 
[   ]cmake-3.8.0-rc4.tar.Z2017-03-30 11:38 12M 
[   ]cmake-3.8.0-rc4.tar.gz2017-03-30 11:38 7.2M 
[   ]cmake-3.8.0-rc4.zip2017-03-30 11:38 12M 
[   ]cmake-3.8.0-win32-x86.msi2017-04-10 13:39 16M 
[   ]cmake-3.8.0-win32-x86.zip2017-04-10 13:39 22M 
[   ]cmake-3.8.0-win64-x64.msi2017-04-10 13:39 18M 
[   ]cmake-3.8.0-win64-x64.zip2017-04-10 13:38 24M 
[   ]cmake-3.8.0.tar.Z2017-04-10 13:38 12M 
[   ]cmake-3.8.0.tar.gz2017-04-10 13:38 7.2M 
[   ]cmake-3.8.0.zip2017-04-10 13:38 12M 
[   ]cmake-3.8.1-Darwin-x86_64.dmg2017-05-02 11:06 26M 
[   ]cmake-3.8.1-Darwin-x86_64.tar.gz2017-05-02 11:06 26M 
[TXT]cmake-3.8.1-Linux-x86_64.sh2017-05-02 11:06 31M 
[   ]cmake-3.8.1-Linux-x86_64.tar.gz2017-05-02 11:05 31M 
[TXT]cmake-3.8.1-SHA-256.txt2017-05-02 11:05 1.0K 
[TXT]cmake-3.8.1-SHA-256.txt.asc2017-05-02 11:05 833  
[   ]cmake-3.8.1-win32-x86.msi2017-05-02 11:05 16M 
[   ]cmake-3.8.1-win32-x86.zip2017-05-02 11:05 22M 
[   ]cmake-3.8.1-win64-x64.msi2017-05-02 11:05 18M 
[   ]cmake-3.8.1-win64-x64.zip2017-05-02 11:05 24M 
[   ]cmake-3.8.1.tar.Z2017-05-02 11:05 12M 
[   ]cmake-3.8.1.tar.gz2017-05-02 11:05 7.2M 
[   ]cmake-3.8.1.zip2017-05-02 11:05 12M 
[   ]cmake-3.8.2-Darwin-x86_64.dmg2017-05-31 12:26 26M 
[   ]cmake-3.8.2-Darwin-x86_64.tar.gz2017-05-31 12:26 25M 
[TXT]cmake-3.8.2-Linux-x86_64.sh2017-05-31 12:26 31M 
[   ]cmake-3.8.2-Linux-x86_64.tar.gz2017-05-31 12:26 31M 
[TXT]cmake-3.8.2-SHA-256.txt2017-05-31 12:26 1.0K 
[TXT]cmake-3.8.2-SHA-256.txt.asc2017-05-31 12:26 833  
[   ]cmake-3.8.2-win32-x86.msi2017-05-31 12:26 16M 
[   ]cmake-3.8.2-win32-x86.zip2017-05-31 12:26 22M 
[   ]cmake-3.8.2-win64-x64.msi2017-05-31 12:25 18M 
[   ]cmake-3.8.2-win64-x64.zip2017-05-31 12:25 24M 
[   ]cmake-3.8.2.tar.Z2017-05-31 12:25 12M 
[   ]cmake-3.8.2.tar.gz2017-05-31 12:25 7.2M 
[   ]cmake-3.8.2.zip2017-05-31 12:25 12M 

+ diff --git a/poky/bitbake/lib/bb/tests/fetch-testdata/files/v3.9/index.html b/poky/bitbake/lib/bb/tests/fetch-testdata/files/v3.9/index.html new file mode 100644 index 000000000..54182afa0 --- /dev/null +++ b/poky/bitbake/lib/bb/tests/fetch-testdata/files/v3.9/index.html @@ -0,0 +1,183 @@ + + + + Index of /files/v3.9 + + +

Index of /files/v3.9

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
[ICO]NameLast modifiedSizeDescription

[PARENTDIR]Parent Directory  -  
[   ]cmake-3.9.0-Darwin-x86_64.dmg2017-07-18 13:32 26M 
[   ]cmake-3.9.0-Darwin-x86_64.tar.gz2017-07-18 13:32 25M 
[TXT]cmake-3.9.0-Linux-x86_64.sh2017-07-18 13:32 31M 
[   ]cmake-3.9.0-Linux-x86_64.tar.gz2017-07-18 13:32 31M 
[TXT]cmake-3.9.0-SHA-256.txt2017-07-18 13:32 1.0K 
[TXT]cmake-3.9.0-SHA-256.txt.asc2017-07-18 13:32 833  
[   ]cmake-3.9.0-rc1-Darwin-x86_64.dmg2017-06-05 14:48 26M 
[   ]cmake-3.9.0-rc1-Darwin-x86_64.tar.gz2017-06-05 14:48 25M 
[TXT]cmake-3.9.0-rc1-Linux-x86_64.sh2017-06-05 14:48 31M 
[   ]cmake-3.9.0-rc1-Linux-x86_64.tar.gz2017-06-05 14:48 31M 
[TXT]cmake-3.9.0-rc1-SHA-256.txt2017-06-05 14:48 1.0K 
[TXT]cmake-3.9.0-rc1-SHA-256.txt.asc2017-06-05 14:47 833  
[   ]cmake-3.9.0-rc1-win32-x86.msi2017-06-05 14:47 16M 
[   ]cmake-3.9.0-rc1-win32-x86.zip2017-06-05 14:47 22M 
[   ]cmake-3.9.0-rc1-win64-x64.msi2017-06-05 14:47 18M 
[   ]cmake-3.9.0-rc1-win64-x64.zip2017-06-05 14:47 25M 
[   ]cmake-3.9.0-rc1.tar.Z2017-06-05 14:47 12M 
[   ]cmake-3.9.0-rc1.tar.gz2017-06-05 14:47 7.3M 
[   ]cmake-3.9.0-rc1.zip2017-06-05 14:47 12M 
[   ]cmake-3.9.0-rc2-Darwin-x86_64.dmg2017-06-07 14:46 26M 
[   ]cmake-3.9.0-rc2-Darwin-x86_64.tar.gz2017-06-07 14:46 25M 
[TXT]cmake-3.9.0-rc2-Linux-x86_64.sh2017-06-07 14:46 31M 
[   ]cmake-3.9.0-rc2-Linux-x86_64.tar.gz2017-06-07 14:46 31M 
[TXT]cmake-3.9.0-rc2-SHA-256.txt2017-06-07 14:46 1.0K 
[TXT]cmake-3.9.0-rc2-SHA-256.txt.asc2017-06-07 14:46 833  
[   ]cmake-3.9.0-rc2-win32-x86.msi2017-06-07 14:46 16M 
[   ]cmake-3.9.0-rc2-win32-x86.zip2017-06-07 14:46 22M 
[   ]cmake-3.9.0-rc2-win64-x64.msi2017-06-07 14:46 18M 
[   ]cmake-3.9.0-rc2-win64-x64.zip2017-06-07 14:46 25M 
[   ]cmake-3.9.0-rc2.tar.Z2017-06-07 14:46 12M 
[   ]cmake-3.9.0-rc2.tar.gz2017-06-07 14:46 7.3M 
[   ]cmake-3.9.0-rc2.zip2017-06-07 14:46 12M 
[   ]cmake-3.9.0-rc3-Darwin-x86_64.dmg2017-06-13 14:02 26M 
[   ]cmake-3.9.0-rc3-Darwin-x86_64.tar.gz2017-06-13 14:02 25M 
[TXT]cmake-3.9.0-rc3-Linux-x86_64.sh2017-06-13 14:02 31M 
[   ]cmake-3.9.0-rc3-Linux-x86_64.tar.gz2017-06-13 14:02 31M 
[TXT]cmake-3.9.0-rc3-SHA-256.txt2017-06-13 14:02 1.0K 
[TXT]cmake-3.9.0-rc3-SHA-256.txt.asc2017-06-13 14:02 833  
[   ]cmake-3.9.0-rc3-win32-x86.msi2017-06-13 14:02 16M 
[   ]cmake-3.9.0-rc3-win32-x86.zip2017-06-13 14:02 22M 
[   ]cmake-3.9.0-rc3-win64-x64.msi2017-06-13 14:01 18M 
[   ]cmake-3.9.0-rc3-win64-x64.zip2017-06-13 14:01 25M 
[   ]cmake-3.9.0-rc3.tar.Z2017-06-13 14:01 12M 
[   ]cmake-3.9.0-rc3.tar.gz2017-06-13 14:01 7.3M 
[   ]cmake-3.9.0-rc3.zip2017-06-13 14:01 12M 
[   ]cmake-3.9.0-rc4-Darwin-x86_64.dmg2017-06-22 13:27 26M 
[   ]cmake-3.9.0-rc4-Darwin-x86_64.tar.gz2017-06-22 13:27 25M 
[TXT]cmake-3.9.0-rc4-Linux-x86_64.sh2017-06-22 13:27 31M 
[   ]cmake-3.9.0-rc4-Linux-x86_64.tar.gz2017-06-22 13:27 31M 
[TXT]cmake-3.9.0-rc4-SHA-256.txt2017-06-22 13:27 1.0K 
[TXT]cmake-3.9.0-rc4-SHA-256.txt.asc2017-06-22 13:26 833  
[   ]cmake-3.9.0-rc4-win32-x86.msi2017-06-22 13:26 16M 
[   ]cmake-3.9.0-rc4-win32-x86.zip2017-06-22 13:26 22M 
[   ]cmake-3.9.0-rc4-win64-x64.msi2017-06-22 13:26 18M 
[   ]cmake-3.9.0-rc4-win64-x64.zip2017-06-22 13:26 25M 
[   ]cmake-3.9.0-rc4.tar.Z2017-06-22 13:26 12M 
[   ]cmake-3.9.0-rc4.tar.gz2017-06-22 13:26 7.3M 
[   ]cmake-3.9.0-rc4.zip2017-06-22 13:26 12M 
[   ]cmake-3.9.0-rc5-Darwin-x86_64.dmg2017-06-27 13:56 26M 
[   ]cmake-3.9.0-rc5-Darwin-x86_64.tar.gz2017-06-27 13:56 25M 
[TXT]cmake-3.9.0-rc5-Linux-x86_64.sh2017-06-27 13:56 31M 
[   ]cmake-3.9.0-rc5-Linux-x86_64.tar.gz2017-06-27 13:56 31M 
[TXT]cmake-3.9.0-rc5-SHA-256.txt2017-06-27 13:56 1.0K 
[TXT]cmake-3.9.0-rc5-SHA-256.txt.asc2017-06-27 13:56 833  
[   ]cmake-3.9.0-rc5-win32-x86.msi2017-06-27 13:56 16M 
[   ]cmake-3.9.0-rc5-win32-x86.zip2017-06-27 13:56 22M 
[   ]cmake-3.9.0-rc5-win64-x64.msi2017-06-27 13:56 18M 
[   ]cmake-3.9.0-rc5-win64-x64.zip2017-06-27 13:56 25M 
[   ]cmake-3.9.0-rc5.tar.Z2017-06-27 13:55 12M 
[   ]cmake-3.9.0-rc5.tar.gz2017-06-27 13:55 7.3M 
[   ]cmake-3.9.0-rc5.zip2017-06-27 13:55 12M 
[   ]cmake-3.9.0-rc6-Darwin-x86_64.dmg2017-07-12 11:46 26M 
[   ]cmake-3.9.0-rc6-Darwin-x86_64.tar.gz2017-07-12 11:46 25M 
[TXT]cmake-3.9.0-rc6-Linux-x86_64.sh2017-07-12 11:46 31M 
[   ]cmake-3.9.0-rc6-Linux-x86_64.tar.gz2017-07-12 11:46 31M 
[TXT]cmake-3.9.0-rc6-SHA-256.txt2017-07-12 11:46 1.0K 
[TXT]cmake-3.9.0-rc6-SHA-256.txt.asc2017-07-12 11:46 833  
[   ]cmake-3.9.0-rc6-win32-x86.msi2017-07-12 11:46 16M 
[   ]cmake-3.9.0-rc6-win32-x86.zip2017-07-12 11:45 22M 
[   ]cmake-3.9.0-rc6-win64-x64.msi2017-07-12 11:45 18M 
[   ]cmake-3.9.0-rc6-win64-x64.zip2017-07-12 11:45 25M 
[   ]cmake-3.9.0-rc6.tar.Z2017-07-12 11:45 12M 
[   ]cmake-3.9.0-rc6.tar.gz2017-07-12 11:45 7.3M 
[   ]cmake-3.9.0-rc6.zip2017-07-12 11:45 12M 
[   ]cmake-3.9.0-win32-x86.msi2017-07-18 13:32 16M 
[   ]cmake-3.9.0-win32-x86.zip2017-07-18 13:32 22M 
[   ]cmake-3.9.0-win64-x64.msi2017-07-18 13:32 18M 
[   ]cmake-3.9.0-win64-x64.zip2017-07-18 13:31 25M 
[   ]cmake-3.9.0.tar.Z2017-07-18 13:31 12M 
[   ]cmake-3.9.0.tar.gz2017-07-18 13:31 7.3M 
[   ]cmake-3.9.0.zip2017-07-18 13:31 12M 
[   ]cmake-3.9.1-Darwin-x86_64.dmg2017-08-10 11:49 26M 
[   ]cmake-3.9.1-Darwin-x86_64.tar.gz2017-08-10 11:49 25M 
[TXT]cmake-3.9.1-Linux-x86_64.sh2017-08-10 11:49 31M 
[   ]cmake-3.9.1-Linux-x86_64.tar.gz2017-08-10 11:49 31M 
[TXT]cmake-3.9.1-SHA-256.txt2017-08-10 11:49 1.0K 
[TXT]cmake-3.9.1-SHA-256.txt.asc2017-08-10 11:49 833  
[   ]cmake-3.9.1-win32-x86.msi2017-08-10 11:49 16M 
[   ]cmake-3.9.1-win32-x86.zip2017-08-10 11:49 22M 
[   ]cmake-3.9.1-win64-x64.msi2017-08-10 11:49 18M 
[   ]cmake-3.9.1-win64-x64.zip2017-08-10 11:49 25M 
[   ]cmake-3.9.1.tar.Z2017-08-10 11:49 12M 
[   ]cmake-3.9.1.tar.gz2017-08-10 11:49 7.3M 
[   ]cmake-3.9.1.zip2017-08-10 11:49 12M 
[   ]cmake-3.9.2-Darwin-x86_64.dmg2017-09-07 15:55 26M 
[   ]cmake-3.9.2-Darwin-x86_64.tar.gz2017-09-07 15:54 25M 
[TXT]cmake-3.9.2-Linux-x86_64.sh2017-09-07 15:54 31M 
[   ]cmake-3.9.2-Linux-x86_64.tar.gz2017-09-07 15:54 31M 
[TXT]cmake-3.9.2-SHA-256.txt2017-09-07 15:54 1.0K 
[TXT]cmake-3.9.2-SHA-256.txt.asc2017-09-07 15:54 833  
[   ]cmake-3.9.2-win32-x86.msi2017-09-07 15:54 16M 
[   ]cmake-3.9.2-win32-x86.zip2017-09-07 15:54 22M 
[   ]cmake-3.9.2-win64-x64.msi2017-09-07 15:54 18M 
[   ]cmake-3.9.2-win64-x64.zip2017-09-07 15:54 25M 
[   ]cmake-3.9.2.tar.Z2017-09-07 15:54 12M 
[   ]cmake-3.9.2.tar.gz2017-09-07 15:54 7.3M 
[   ]cmake-3.9.2.zip2017-09-07 15:54 12M 
[   ]cmake-3.9.3-Darwin-x86_64.dmg2017-09-20 11:59 26M 
[   ]cmake-3.9.3-Darwin-x86_64.tar.gz2017-09-20 11:59 25M 
[TXT]cmake-3.9.3-Linux-x86_64.sh2017-09-20 11:59 31M 
[   ]cmake-3.9.3-Linux-x86_64.tar.gz2017-09-20 11:59 31M 
[TXT]cmake-3.9.3-SHA-256.txt2017-09-20 11:59 1.0K 
[TXT]cmake-3.9.3-SHA-256.txt.asc2017-09-20 11:59 833  
[   ]cmake-3.9.3-win32-x86.msi2017-09-20 11:59 16M 
[   ]cmake-3.9.3-win32-x86.zip2017-09-20 11:59 22M 
[   ]cmake-3.9.3-win64-x64.msi2017-09-20 11:59 18M 
[   ]cmake-3.9.3-win64-x64.zip2017-09-20 11:59 25M 
[   ]cmake-3.9.3.tar.Z2017-09-20 11:59 12M 
[   ]cmake-3.9.3.tar.gz2017-09-20 11:59 7.3M 
[   ]cmake-3.9.3.zip2017-09-20 11:59 12M 
[   ]cmake-3.9.4-Darwin-x86_64.dmg2017-10-04 09:43 26M 
[   ]cmake-3.9.4-Darwin-x86_64.tar.gz2017-10-04 09:43 25M 
[TXT]cmake-3.9.4-Linux-x86_64.sh2017-10-04 09:43 31M 
[   ]cmake-3.9.4-Linux-x86_64.tar.gz2017-10-04 09:43 31M 
[TXT]cmake-3.9.4-SHA-256.txt2017-10-04 09:43 1.0K 
[TXT]cmake-3.9.4-SHA-256.txt.asc2017-10-04 09:42 833  
[   ]cmake-3.9.4-win32-x86.msi2017-10-04 09:42 16M 
[   ]cmake-3.9.4-win32-x86.zip2017-10-04 09:42 22M 
[   ]cmake-3.9.4-win64-x64.msi2017-10-04 09:42 18M 
[   ]cmake-3.9.4-win64-x64.zip2017-10-04 09:42 25M 
[   ]cmake-3.9.4.tar.Z2017-10-04 09:42 12M 
[   ]cmake-3.9.4.tar.gz2017-10-04 09:42 7.3M 
[   ]cmake-3.9.4.zip2017-10-04 09:42 12M 
[   ]cmake-3.9.5-Darwin-x86_64.dmg2017-11-03 10:26 26M 
[   ]cmake-3.9.5-Darwin-x86_64.tar.gz2017-11-03 10:26 25M 
[TXT]cmake-3.9.5-Linux-x86_64.sh2017-11-03 10:26 31M 
[   ]cmake-3.9.5-Linux-x86_64.tar.gz2017-11-03 10:26 31M 
[TXT]cmake-3.9.5-SHA-256.txt2017-11-03 10:26 1.0K 
[TXT]cmake-3.9.5-SHA-256.txt.asc2017-11-03 10:26 833  
[   ]cmake-3.9.5-win32-x86.msi2017-11-03 10:26 16M 
[   ]cmake-3.9.5-win32-x86.zip2017-11-03 10:26 22M 
[   ]cmake-3.9.5-win64-x64.msi2017-11-03 10:26 18M 
[   ]cmake-3.9.5-win64-x64.zip2017-11-03 10:26 25M 
[   ]cmake-3.9.5.tar.Z2017-11-03 10:26 12M 
[   ]cmake-3.9.5.tar.gz2017-11-03 10:26 7.3M 
[   ]cmake-3.9.5.zip2017-11-03 10:26 12M 
[   ]cmake-3.9.6-Darwin-x86_64.dmg2017-11-10 09:22 26M 
[   ]cmake-3.9.6-Darwin-x86_64.tar.gz2017-11-10 09:21 25M 
[TXT]cmake-3.9.6-Linux-x86_64.sh2017-11-10 09:21 31M 
[   ]cmake-3.9.6-Linux-x86_64.tar.gz2017-11-10 09:21 31M 
[TXT]cmake-3.9.6-SHA-256.txt2017-11-10 09:21 1.0K 
[TXT]cmake-3.9.6-SHA-256.txt.asc2017-11-10 09:21 833  
[   ]cmake-3.9.6-win32-x86.msi2017-11-10 09:21 16M 
[   ]cmake-3.9.6-win32-x86.zip2017-11-10 09:21 22M 
[   ]cmake-3.9.6-win64-x64.msi2017-11-10 09:21 18M 
[   ]cmake-3.9.6-win64-x64.zip2017-11-10 09:21 25M 
[   ]cmake-3.9.6.tar.Z2017-11-10 09:21 12M 
[   ]cmake-3.9.6.tar.gz2017-11-10 09:21 7.3M 
[   ]cmake-3.9.6.zip2017-11-10 09:21 12M 

+ diff --git a/poky/bitbake/lib/bb/tests/fetch-testdata/pub/linux/utils/util-linux/v2.23/index.html b/poky/bitbake/lib/bb/tests/fetch-testdata/pub/linux/utils/util-linux/v2.23/index.html new file mode 100644 index 000000000..b3d9244b0 --- /dev/null +++ b/poky/bitbake/lib/bb/tests/fetch-testdata/pub/linux/utils/util-linux/v2.23/index.html @@ -0,0 +1,45 @@ + +Index of /pub/linux/utils/util-linux/v2.23/ + +

Index of /pub/linux/utils/util-linux/v2.23/


../
+libblkid-docs/                                     31-Jul-2013 12:35       -
+libmount-docs/                                     31-Jul-2013 12:39       -
+sha256sums.asc                                     12-May-2017 10:53    2942
+util-linux-2.23-rc1.tar.bz2                        22-Mar-2013 12:48      5M
+util-linux-2.23-rc1.tar.gz                         22-Mar-2013 12:48      7M
+util-linux-2.23-rc1.tar.sign                       22-Mar-2013 12:48     836
+util-linux-2.23-rc1.tar.xz                         22-Mar-2013 12:48      3M
+util-linux-2.23-rc2.tar.bz2                        10-Apr-2013 22:14      5M
+util-linux-2.23-rc2.tar.gz                         10-Apr-2013 22:14      7M
+util-linux-2.23-rc2.tar.sign                       10-Apr-2013 22:14     836
+util-linux-2.23-rc2.tar.xz                         10-Apr-2013 22:14      3M
+util-linux-2.23.1.tar.bz2                          28-May-2013 09:57      5M
+util-linux-2.23.1.tar.gz                           28-May-2013 09:57      7M
+util-linux-2.23.1.tar.sign                         28-May-2013 09:57     836
+util-linux-2.23.1.tar.xz                           28-May-2013 09:57      3M
+util-linux-2.23.2.tar.bz2                          31-Jul-2013 12:40      5M
+util-linux-2.23.2.tar.gz                           31-Jul-2013 12:40      7M
+util-linux-2.23.2.tar.sign                         31-Jul-2013 12:40     836
+util-linux-2.23.2.tar.xz                           31-Jul-2013 12:40      3M
+util-linux-2.23.tar.bz2                            25-Apr-2013 10:48      5M
+util-linux-2.23.tar.gz                             25-Apr-2013 10:48      7M
+util-linux-2.23.tar.sign                           25-Apr-2013 10:48     836
+util-linux-2.23.tar.xz                             25-Apr-2013 10:48      3M
+v2.23-ChangeLog                                    25-Apr-2013 10:48     19K
+v2.23-ChangeLog.sign                               25-Apr-2013 10:48     836
+v2.23-ReleaseNotes                                 25-Apr-2013 10:48     53K
+v2.23-ReleaseNotes.sign                            25-Apr-2013 10:48     836
+v2.23-rc1-ChangeLog                                22-Mar-2013 12:48    361K
+v2.23-rc1-ChangeLog.sign                           22-Mar-2013 12:48     836
+v2.23-rc2-ChangeLog                                10-Apr-2013 22:14     80K
+v2.23-rc2-ChangeLog.sign                           10-Apr-2013 22:14     836
+v2.23.1-ChangeLog                                  28-May-2013 09:57     13K
+v2.23.1-ChangeLog.sign                             28-May-2013 09:57     836
+v2.23.1-ReleaseNotes                               28-May-2013 09:58    1448
+v2.23.1-ReleaseNotes.sign                          28-May-2013 09:58     836
+v2.23.2-ChangeLog                                  31-Jul-2013 12:40     23K
+v2.23.2-ChangeLog.sign                             31-Jul-2013 12:40     836
+v2.23.2-ReleaseNotes                               31-Jul-2013 12:40    2582
+v2.23.2-ReleaseNotes.sign                          31-Jul-2013 12:40     836
+

+ diff --git a/poky/bitbake/lib/bb/tests/fetch-testdata/pub/linux/utils/util-linux/v2.24/index.html b/poky/bitbake/lib/bb/tests/fetch-testdata/pub/linux/utils/util-linux/v2.24/index.html new file mode 100644 index 000000000..4afb4625a --- /dev/null +++ b/poky/bitbake/lib/bb/tests/fetch-testdata/pub/linux/utils/util-linux/v2.24/index.html @@ -0,0 +1,43 @@ + +Index of /pub/linux/utils/util-linux/v2.24/ + +

Index of /pub/linux/utils/util-linux/v2.24/


../
+libblkid-docs/                                     24-Apr-2014 10:15       -
+libmount-docs/                                     24-Apr-2014 10:17       -
+sha256sums.asc                                     12-May-2017 10:53    2758
+util-linux-2.24-rc1.tar.bz2                        27-Sep-2013 12:54      5M
+util-linux-2.24-rc1.tar.gz                         27-Sep-2013 12:54      7M
+util-linux-2.24-rc1.tar.sign                       27-Sep-2013 12:54     836
+util-linux-2.24-rc1.tar.xz                         27-Sep-2013 12:54      3M
+util-linux-2.24-rc2.tar.bz2                        11-Oct-2013 11:37      5M
+util-linux-2.24-rc2.tar.gz                         11-Oct-2013 11:37      7M
+util-linux-2.24-rc2.tar.sign                       11-Oct-2013 11:37     836
+util-linux-2.24-rc2.tar.xz                         11-Oct-2013 11:37      3M
+util-linux-2.24.1.tar.gz                           20-Jan-2014 13:33      7M
+util-linux-2.24.1.tar.sign                         20-Jan-2014 13:33     819
+util-linux-2.24.1.tar.xz                           20-Jan-2014 13:33      3M
+util-linux-2.24.2.tar.gz                           24-Apr-2014 10:17      7M
+util-linux-2.24.2.tar.sign                         24-Apr-2014 10:17     819
+util-linux-2.24.2.tar.xz                           24-Apr-2014 10:17      3M
+util-linux-2.24.tar.bz2                            21-Oct-2013 13:49      5M
+util-linux-2.24.tar.gz                             21-Oct-2013 13:49      7M
+util-linux-2.24.tar.sign                           21-Oct-2013 13:49     836
+util-linux-2.24.tar.xz                             21-Oct-2013 13:49      3M
+v2.24-ChangeLog                                    21-Oct-2013 13:49     22K
+v2.24-ChangeLog.sign                               21-Oct-2013 13:49     836
+v2.24-ReleaseNotes                                 21-Oct-2013 13:49     44K
+v2.24-ReleaseNotes.sign                            21-Oct-2013 13:49     836
+v2.24-rc1-ChangeLog                                27-Sep-2013 12:54    292K
+v2.24-rc1-ChangeLog.sign                           27-Sep-2013 12:54     836
+v2.24-rc2-ChangeLog                                11-Oct-2013 11:37     42K
+v2.24-rc2-ChangeLog.sign                           11-Oct-2013 11:37     836
+v2.24.1-ChangeLog                                  20-Jan-2014 13:33     38K
+v2.24.1-ChangeLog.sign                             20-Jan-2014 13:33     819
+v2.24.1-ReleaseNotes                               20-Jan-2014 13:33    4449
+v2.24.1-ReleaseNotes.sign                          20-Jan-2014 13:33     819
+v2.24.2-ChangeLog                                  24-Apr-2014 10:17     47K
+v2.24.2-ChangeLog.sign                             24-Apr-2014 10:17     819
+v2.24.2-ReleaseNotes                               24-Apr-2014 10:18    5748
+v2.24.2-ReleaseNotes.sign                          24-Apr-2014 10:18     819
+

+ diff --git a/poky/bitbake/lib/bb/tests/fetch-testdata/pub/linux/utils/util-linux/v2.25/index.html b/poky/bitbake/lib/bb/tests/fetch-testdata/pub/linux/utils/util-linux/v2.25/index.html new file mode 100644 index 000000000..9516c3b1e --- /dev/null +++ b/poky/bitbake/lib/bb/tests/fetch-testdata/pub/linux/utils/util-linux/v2.25/index.html @@ -0,0 +1,46 @@ + +Index of /pub/linux/utils/util-linux/v2.25/ + +

Index of /pub/linux/utils/util-linux/v2.25/


../
+libblkid-docs/                                     24-Oct-2014 13:05       -
+libmount-docs/                                     24-Oct-2014 13:06       -
+libsmartcols-docs/                                 24-Oct-2014 13:08       -
+sha256sums.asc                                     12-May-2017 10:53    2758
+util-linux-2.25-rc1.tar.gz                         18-Jun-2014 13:33      7M
+util-linux-2.25-rc1.tar.sign                       18-Jun-2014 13:33     819
+util-linux-2.25-rc1.tar.xz                         18-Jun-2014 13:33      3M
+util-linux-2.25-rc2.tar.gz                         02-Jul-2014 10:02      7M
+util-linux-2.25-rc2.tar.sign                       02-Jul-2014 10:02     819
+util-linux-2.25-rc2.tar.xz                         02-Jul-2014 10:02      3M
+util-linux-2.25.1-rc1.tar.gz                       27-Aug-2014 13:18      8M
+util-linux-2.25.1-rc1.tar.sign                     27-Aug-2014 13:18     819
+util-linux-2.25.1-rc1.tar.xz                       27-Aug-2014 13:18      4M
+util-linux-2.25.1.tar.gz                           03-Sep-2014 10:41      8M
+util-linux-2.25.1.tar.sign                         03-Sep-2014 10:41     819
+util-linux-2.25.1.tar.xz                           03-Sep-2014 10:41      4M
+util-linux-2.25.2.tar.gz                           24-Oct-2014 13:08      8M
+util-linux-2.25.2.tar.sign                         24-Oct-2014 13:08     819
+util-linux-2.25.2.tar.xz                           24-Oct-2014 13:08      4M
+util-linux-2.25.tar.gz                             22-Jul-2014 09:50      8M
+util-linux-2.25.tar.sign                           22-Jul-2014 09:50     819
+util-linux-2.25.tar.xz                             22-Jul-2014 09:50      4M
+v2.25-ChangeLog                                    22-Jul-2014 09:50     41K
+v2.25-ChangeLog.sign                               22-Jul-2014 09:50     819
+v2.25-ReleaseNotes                                 22-Jul-2014 09:50     61K
+v2.25-ReleaseNotes.sign                            22-Jul-2014 09:50     819
+v2.25-rc1-ChangeLog                                18-Jun-2014 13:33    489K
+v2.25-rc1-ChangeLog.sign                           18-Jun-2014 13:33     819
+v2.25-rc2-ChangeLog                                02-Jul-2014 10:02     27K
+v2.25-rc2-ChangeLog.sign                           02-Jul-2014 10:02     819
+v2.25.1-ChangeLog                                  03-Sep-2014 10:41    5816
+v2.25.1-ChangeLog.sign                             03-Sep-2014 10:41     819
+v2.25.1-ReleaseNotes                               03-Sep-2014 10:52    3220
+v2.25.1-ReleaseNotes.sign                          03-Sep-2014 10:52     819
+v2.25.1-rc1-ChangeLog                              27-Aug-2014 13:18     22K
+v2.25.1-rc1-ChangeLog.sign                         27-Aug-2014 13:18     819
+v2.25.2-ChangeLog                                  24-Oct-2014 13:08     26K
+v2.25.2-ChangeLog.sign                             24-Oct-2014 13:08     819
+v2.25.2-ReleaseNotes                               24-Oct-2014 13:08    3016
+v2.25.2-ReleaseNotes.sign                          24-Oct-2014 13:08     819
+

+ diff --git a/poky/bitbake/lib/bb/tests/fetch-testdata/pub/linux/utils/util-linux/v2.26/index.html b/poky/bitbake/lib/bb/tests/fetch-testdata/pub/linux/utils/util-linux/v2.26/index.html new file mode 100644 index 000000000..b99148957 --- /dev/null +++ b/poky/bitbake/lib/bb/tests/fetch-testdata/pub/linux/utils/util-linux/v2.26/index.html @@ -0,0 +1,42 @@ + +Index of /pub/linux/utils/util-linux/v2.26/ + +

Index of /pub/linux/utils/util-linux/v2.26/


../
+libblkid-docs/                                     30-Apr-2015 10:38       -
+libfdisk-docs/                                     30-Apr-2015 10:40       -
+libmount-docs/                                     30-Apr-2015 10:42       -
+libsmartcols-docs/                                 30-Apr-2015 10:43       -
+sha256sums.asc                                     12-May-2017 10:54    2480
+util-linux-2.26-rc1.tar.gz                         14-Jan-2015 13:14      8M
+util-linux-2.26-rc1.tar.sign                       14-Jan-2015 13:14     819
+util-linux-2.26-rc1.tar.xz                         14-Jan-2015 13:14      4M
+util-linux-2.26-rc2.tar.gz                         04-Feb-2015 11:49      8M
+util-linux-2.26-rc2.tar.sign                       04-Feb-2015 11:49     819
+util-linux-2.26-rc2.tar.xz                         04-Feb-2015 11:49      4M
+util-linux-2.26.1.tar.gz                           13-Mar-2015 14:23      8M
+util-linux-2.26.1.tar.sign                         13-Mar-2015 14:23     819
+util-linux-2.26.1.tar.xz                           13-Mar-2015 14:23      4M
+util-linux-2.26.2.tar.gz                           30-Apr-2015 10:44      8M
+util-linux-2.26.2.tar.sign                         30-Apr-2015 10:44     819
+util-linux-2.26.2.tar.xz                           30-Apr-2015 10:44      4M
+util-linux-2.26.tar.gz                             19-Feb-2015 12:47      8M
+util-linux-2.26.tar.sign                           19-Feb-2015 12:47     819
+util-linux-2.26.tar.xz                             19-Feb-2015 12:47      4M
+v2.26-ChangeLog                                    19-Feb-2015 12:47     30K
+v2.26-ChangeLog.sign                               19-Feb-2015 12:47     819
+v2.26-ReleaseNotes                                 19-Feb-2015 12:47     51K
+v2.26-ReleaseNotes.sign                            19-Feb-2015 12:47     819
+v2.26-rc1-ChangeLog                                14-Jan-2015 13:14    360K
+v2.26-rc1-ChangeLog.sign                           14-Jan-2015 13:14     819
+v2.26-rc2-ChangeLog                                04-Feb-2015 11:50     51K
+v2.26-rc2-ChangeLog.sign                           04-Feb-2015 11:50     819
+v2.26.1-ChangeLog                                  13-Mar-2015 14:23     32K
+v2.26.1-ChangeLog.sign                             13-Mar-2015 14:23     819
+v2.26.1-ReleaseNotes                               13-Mar-2015 14:23    2944
+v2.26.1-ReleaseNotes.sign                          13-Mar-2015 14:23     819
+v2.26.2-ChangeLog                                  30-Apr-2015 10:44     58K
+v2.26.2-ChangeLog.sign                             30-Apr-2015 10:44     819
+v2.26.2-ReleaseNotes                               30-Apr-2015 10:44    5834
+v2.26.2-ReleaseNotes.sign                          30-Apr-2015 10:44     819
+

+ diff --git a/poky/bitbake/lib/bb/tests/fetch-testdata/pub/linux/utils/util-linux/v2.27/index.html b/poky/bitbake/lib/bb/tests/fetch-testdata/pub/linux/utils/util-linux/v2.27/index.html new file mode 100644 index 000000000..14eb36836 --- /dev/null +++ b/poky/bitbake/lib/bb/tests/fetch-testdata/pub/linux/utils/util-linux/v2.27/index.html @@ -0,0 +1,35 @@ + +Index of /pub/linux/utils/util-linux/v2.27/ + +

Index of /pub/linux/utils/util-linux/v2.27/


../
+libblkid-docs/                                     02-Nov-2015 11:01       -
+libfdisk-docs/                                     02-Nov-2015 11:03       -
+libmount-docs/                                     02-Nov-2015 11:04       -
+libsmartcols-docs/                                 02-Nov-2015 11:06       -
+sha256sums.asc                                     12-May-2017 10:54    2127
+util-linux-2.27-rc1.tar.gz                         31-Jul-2015 11:01      8M
+util-linux-2.27-rc1.tar.sign                       31-Jul-2015 11:01     819
+util-linux-2.27-rc1.tar.xz                         31-Jul-2015 11:01      4M
+util-linux-2.27-rc2.tar.gz                         24-Aug-2015 11:04      8M
+util-linux-2.27-rc2.tar.sign                       24-Aug-2015 11:04     819
+util-linux-2.27-rc2.tar.xz                         24-Aug-2015 11:04      4M
+util-linux-2.27.1.tar.gz                           02-Nov-2015 11:06      8M
+util-linux-2.27.1.tar.sign                         02-Nov-2015 11:06     819
+util-linux-2.27.1.tar.xz                           02-Nov-2015 11:06      4M
+util-linux-2.27.tar.gz                             07-Sep-2015 08:17      8M
+util-linux-2.27.tar.sign                           07-Sep-2015 08:17     819
+util-linux-2.27.tar.xz                             07-Sep-2015 08:17      4M
+v2.27-ChangeLog                                    07-Sep-2015 08:17     21K
+v2.27-ChangeLog.sign                               07-Sep-2015 08:17     819
+v2.27-ReleaseNotes                                 07-Sep-2015 08:17     35K
+v2.27-ReleaseNotes.sign                            07-Sep-2015 08:17     819
+v2.27-rc1-ChangeLog                                31-Jul-2015 11:01    263K
+v2.27-rc1-ChangeLog.sign                           31-Jul-2015 11:01     819
+v2.27-rc2-ChangeLog                                24-Aug-2015 11:04     38K
+v2.27-rc2-ChangeLog.sign                           24-Aug-2015 11:04     819
+v2.27.1-ChangeLog                                  02-Nov-2015 11:06     18K
+v2.27.1-ChangeLog.sign                             02-Nov-2015 11:06     819
+v2.27.1-ReleaseNotes                               02-Nov-2015 11:06    2107
+v2.27.1-ReleaseNotes.sign                          02-Nov-2015 11:06     819
+

+ diff --git a/poky/bitbake/lib/bb/tests/fetch-testdata/pub/linux/utils/util-linux/v2.28/index.html b/poky/bitbake/lib/bb/tests/fetch-testdata/pub/linux/utils/util-linux/v2.28/index.html new file mode 100644 index 000000000..4bba6b470 --- /dev/null +++ b/poky/bitbake/lib/bb/tests/fetch-testdata/pub/linux/utils/util-linux/v2.28/index.html @@ -0,0 +1,42 @@ + +Index of /pub/linux/utils/util-linux/v2.28/ + +

Index of /pub/linux/utils/util-linux/v2.28/


../
+libblkid-docs/                                     07-Sep-2016 12:00       -
+libfdisk-docs/                                     07-Sep-2016 12:02       -
+libmount-docs/                                     07-Sep-2016 12:04       -
+libsmartcols-docs/                                 07-Sep-2016 12:06       -
+sha256sums.asc                                     12-May-2017 10:55    2480
+util-linux-2.28-rc1.tar.gz                         11-Mar-2016 11:45      8M
+util-linux-2.28-rc1.tar.sign                       11-Mar-2016 11:45     819
+util-linux-2.28-rc1.tar.xz                         11-Mar-2016 11:45      4M
+util-linux-2.28-rc2.tar.gz                         29-Mar-2016 09:04      8M
+util-linux-2.28-rc2.tar.sign                       29-Mar-2016 09:04     819
+util-linux-2.28-rc2.tar.xz                         29-Mar-2016 09:04      4M
+util-linux-2.28.1.tar.gz                           11-Aug-2016 10:09      9M
+util-linux-2.28.1.tar.sign                         11-Aug-2016 10:09     819
+util-linux-2.28.1.tar.xz                           11-Aug-2016 10:09      4M
+util-linux-2.28.2.tar.gz                           07-Sep-2016 12:06      9M
+util-linux-2.28.2.tar.sign                         07-Sep-2016 12:06     819
+util-linux-2.28.2.tar.xz                           07-Sep-2016 12:06      4M
+util-linux-2.28.tar.gz                             12-Apr-2016 11:26      8M
+util-linux-2.28.tar.sign                           12-Apr-2016 11:26     819
+util-linux-2.28.tar.xz                             12-Apr-2016 11:26      4M
+v2.28-ChangeLog                                    12-Apr-2016 11:26     13K
+v2.28-ChangeLog.sign                               12-Apr-2016 11:26     819
+v2.28-ReleaseNotes                                 12-Apr-2016 11:26     33K
+v2.28-ReleaseNotes.sign                            12-Apr-2016 11:26     819
+v2.28-rc1-ChangeLog                                11-Mar-2016 11:45    269K
+v2.28-rc1-ChangeLog.sign                           11-Mar-2016 11:45     819
+v2.28-rc2-ChangeLog                                29-Mar-2016 09:04     52K
+v2.28-rc2-ChangeLog.sign                           29-Mar-2016 09:04     819
+v2.28.1-ChangeLog                                  11-Aug-2016 10:09     37K
+v2.28.1-ChangeLog.sign                             11-Aug-2016 10:09     819
+v2.28.1-ReleaseNotes                               11-Aug-2016 10:09    3748
+v2.28.1-ReleaseNotes.sign                          11-Aug-2016 10:09     819
+v2.28.2-ChangeLog                                  07-Sep-2016 12:06    8900
+v2.28.2-ChangeLog.sign                             07-Sep-2016 12:06     819
+v2.28.2-ReleaseNotes                               07-Sep-2016 12:06    1161
+v2.28.2-ReleaseNotes.sign                          07-Sep-2016 12:06     819
+

+ diff --git a/poky/bitbake/lib/bb/tests/fetch-testdata/pub/linux/utils/util-linux/v2.29/index.html b/poky/bitbake/lib/bb/tests/fetch-testdata/pub/linux/utils/util-linux/v2.29/index.html new file mode 100644 index 000000000..916a255fa --- /dev/null +++ b/poky/bitbake/lib/bb/tests/fetch-testdata/pub/linux/utils/util-linux/v2.29/index.html @@ -0,0 +1,42 @@ + +Index of /pub/linux/utils/util-linux/v2.29/ + +

Index of /pub/linux/utils/util-linux/v2.29/


../
+libblkid-docs/                                     22-Feb-2017 15:20       -
+libfdisk-docs/                                     22-Feb-2017 15:22       -
+libmount-docs/                                     22-Feb-2017 15:24       -
+libsmartcols-docs/                                 22-Feb-2017 15:26       -
+sha256sums.asc                                     12-May-2017 10:55    2480
+util-linux-2.29-rc1.tar.gz                         30-Sep-2016 09:55      9M
+util-linux-2.29-rc1.tar.sign                       30-Sep-2016 09:55     819
+util-linux-2.29-rc1.tar.xz                         30-Sep-2016 09:55      4M
+util-linux-2.29-rc2.tar.gz                         19-Oct-2016 13:13      9M
+util-linux-2.29-rc2.tar.sign                       19-Oct-2016 13:13     819
+util-linux-2.29-rc2.tar.xz                         19-Oct-2016 13:13      4M
+util-linux-2.29.1.tar.gz                           20-Jan-2017 14:02      9M
+util-linux-2.29.1.tar.sign                         20-Jan-2017 14:02     819
+util-linux-2.29.1.tar.xz                           20-Jan-2017 14:02      4M
+util-linux-2.29.2.tar.gz                           22-Feb-2017 15:26      9M
+util-linux-2.29.2.tar.sign                         22-Feb-2017 15:26     819
+util-linux-2.29.2.tar.xz                           22-Feb-2017 15:26      4M
+util-linux-2.29.tar.gz                             08-Nov-2016 11:23      9M
+util-linux-2.29.tar.sign                           08-Nov-2016 11:23     819
+util-linux-2.29.tar.xz                             08-Nov-2016 11:23      4M
+v2.29-ChangeLog                                    08-Nov-2016 11:23     28K
+v2.29-ChangeLog.sign                               08-Nov-2016 11:23     819
+v2.29-ReleaseNotes                                 08-Nov-2016 11:24     26K
+v2.29-ReleaseNotes.sign                            08-Nov-2016 11:24     819
+v2.29-rc1-ChangeLog                                30-Sep-2016 09:55    219K
+v2.29-rc1-ChangeLog.sign                           30-Sep-2016 09:55     819
+v2.29-rc2-ChangeLog                                19-Oct-2016 13:13     19K
+v2.29-rc2-ChangeLog.sign                           19-Oct-2016 13:13     819
+v2.29.1-ChangeLog                                  20-Jan-2017 14:02     47K
+v2.29.1-ChangeLog.sign                             20-Jan-2017 14:02     819
+v2.29.1-ReleaseNotes                               20-Jan-2017 14:02    5067
+v2.29.1-ReleaseNotes.sign                          20-Jan-2017 14:02     819
+v2.29.2-ChangeLog                                  22-Feb-2017 15:26     14K
+v2.29.2-ChangeLog.sign                             22-Feb-2017 15:26     819
+v2.29.2-ReleaseNotes                               22-Feb-2017 15:26    2012
+v2.29.2-ReleaseNotes.sign                          22-Feb-2017 15:26     819
+

+ diff --git a/poky/bitbake/lib/bb/tests/fetch-testdata/pub/linux/utils/util-linux/v2.30/index.html b/poky/bitbake/lib/bb/tests/fetch-testdata/pub/linux/utils/util-linux/v2.30/index.html new file mode 100644 index 000000000..0441bc0d2 --- /dev/null +++ b/poky/bitbake/lib/bb/tests/fetch-testdata/pub/linux/utils/util-linux/v2.30/index.html @@ -0,0 +1,42 @@ + +Index of /pub/linux/utils/util-linux/v2.30/ + +

Index of /pub/linux/utils/util-linux/v2.30/


../
+libblkid-docs/                                     21-Sep-2017 09:49       -
+libfdisk-docs/                                     21-Sep-2017 09:50       -
+libmount-docs/                                     21-Sep-2017 09:50       -
+libsmartcols-docs/                                 21-Sep-2017 09:51       -
+sha256sums.asc                                     21-Sep-2017 09:52    2480
+util-linux-2.30-rc1.tar.gz                         12-May-2017 12:02      9M
+util-linux-2.30-rc1.tar.sign                       12-May-2017 12:02     819
+util-linux-2.30-rc1.tar.xz                         12-May-2017 12:02      4M
+util-linux-2.30-rc2.tar.gz                         23-May-2017 10:42      9M
+util-linux-2.30-rc2.tar.sign                       23-May-2017 10:42     819
+util-linux-2.30-rc2.tar.xz                         23-May-2017 10:42      4M
+util-linux-2.30.1.tar.gz                           20-Jul-2017 09:33      9M
+util-linux-2.30.1.tar.sign                         20-Jul-2017 09:33     819
+util-linux-2.30.1.tar.xz                           20-Jul-2017 09:33      4M
+util-linux-2.30.2.tar.gz                           21-Sep-2017 09:51      9M
+util-linux-2.30.2.tar.sign                         21-Sep-2017 09:51     833
+util-linux-2.30.2.tar.xz                           21-Sep-2017 09:51      4M
+util-linux-2.30.tar.gz                             02-Jun-2017 10:44      9M
+util-linux-2.30.tar.sign                           02-Jun-2017 10:44     819
+util-linux-2.30.tar.xz                             02-Jun-2017 10:44      4M
+v2.30-ChangeLog                                    02-Jun-2017 10:44     28K
+v2.30-ChangeLog.sign                               02-Jun-2017 10:44     819
+v2.30-ReleaseNotes                                 02-Jun-2017 10:44     34K
+v2.30-ReleaseNotes.sign                            02-Jun-2017 10:44     819
+v2.30-rc1-ChangeLog                                23-May-2017 10:42    318K
+v2.30-rc1-ChangeLog.sign                           23-May-2017 10:42     819
+v2.30-rc2-ChangeLog                                23-May-2017 10:42     19K
+v2.30-rc2-ChangeLog.sign                           23-May-2017 10:42     819
+v2.30.1-ChangeLog                                  20-Jul-2017 09:33     20K
+v2.30.1-ChangeLog.sign                             20-Jul-2017 09:33     819
+v2.30.1-ReleaseNotes                               20-Jul-2017 09:33    1901
+v2.30.1-ReleaseNotes.sign                          20-Jul-2017 09:33     819
+v2.30.2-ChangeLog                                  21-Sep-2017 09:51     13K
+v2.30.2-ChangeLog.sign                             21-Sep-2017 09:51     833
+v2.30.2-ReleaseNotes                               21-Sep-2017 09:51    1604
+v2.30.2-ReleaseNotes.sign                          21-Sep-2017 09:51     833
+

+ diff --git a/poky/bitbake/lib/bb/tests/fetch-testdata/pub/linux/utils/util-linux/v2.31/index.html b/poky/bitbake/lib/bb/tests/fetch-testdata/pub/linux/utils/util-linux/v2.31/index.html new file mode 100644 index 000000000..097e4e0e3 --- /dev/null +++ b/poky/bitbake/lib/bb/tests/fetch-testdata/pub/linux/utils/util-linux/v2.31/index.html @@ -0,0 +1,35 @@ + +Index of /pub/linux/utils/util-linux/v2.31/ + +

Index of /pub/linux/utils/util-linux/v2.31/


../
+libblkid-docs/                                     19-Dec-2017 15:16       -
+libfdisk-docs/                                     19-Dec-2017 15:17       -
+libmount-docs/                                     19-Dec-2017 15:17       -
+libsmartcols-docs/                                 19-Dec-2017 15:17       -
+sha256sums.asc                                     19-Dec-2017 15:20    2127
+util-linux-2.31-rc1.tar.gz                         22-Sep-2017 10:39      9M
+util-linux-2.31-rc1.tar.sign                       22-Sep-2017 10:39     833
+util-linux-2.31-rc1.tar.xz                         22-Sep-2017 10:39      4M
+util-linux-2.31-rc2.tar.gz                         03-Oct-2017 16:03      9M
+util-linux-2.31-rc2.tar.sign                       03-Oct-2017 16:03     833
+util-linux-2.31-rc2.tar.xz                         03-Oct-2017 16:03      4M
+util-linux-2.31.1.tar.gz                           19-Dec-2017 15:18      9M
+util-linux-2.31.1.tar.sign                         19-Dec-2017 15:18     833
+util-linux-2.31.1.tar.xz                           19-Dec-2017 15:18      4M
+util-linux-2.31.tar.gz                             19-Oct-2017 11:27      9M
+util-linux-2.31.tar.sign                           19-Oct-2017 11:27     833
+util-linux-2.31.tar.xz                             19-Oct-2017 11:27      4M
+v2.31-ChangeLog                                    19-Oct-2017 11:27     15K
+v2.31-ChangeLog.sign                               19-Oct-2017 11:27     833
+v2.31-ReleaseNotes                                 19-Oct-2017 11:27     31K
+v2.31-ReleaseNotes.sign                            19-Oct-2017 11:27     833
+v2.31-rc1-ChangeLog                                22-Sep-2017 10:39    290K
+v2.31-rc1-ChangeLog.sign                           22-Sep-2017 10:39     833
+v2.31-rc2-ChangeLog                                03-Oct-2017 16:03     12K
+v2.31-rc2-ChangeLog.sign                           03-Oct-2017 16:03     833
+v2.31.1-ChangeLog                                  19-Dec-2017 15:18     27K
+v2.31.1-ChangeLog.sign                             19-Dec-2017 15:18     833
+v2.31.1-ReleaseNotes                               19-Dec-2017 15:18    3175
+v2.31.1-ReleaseNotes.sign                          19-Dec-2017 15:18     833
+

+ diff --git a/poky/bitbake/lib/bb/tests/fetch-testdata/pub/linux/utils/util-linux/v2.32/index.html b/poky/bitbake/lib/bb/tests/fetch-testdata/pub/linux/utils/util-linux/v2.32/index.html new file mode 100644 index 000000000..d373e9810 --- /dev/null +++ b/poky/bitbake/lib/bb/tests/fetch-testdata/pub/linux/utils/util-linux/v2.32/index.html @@ -0,0 +1,35 @@ + +Index of /pub/linux/utils/util-linux/v2.32/ + +

Index of /pub/linux/utils/util-linux/v2.32/


../
+libblkid-docs/                                     16-Jul-2018 11:27       -
+libfdisk-docs/                                     16-Jul-2018 11:28       -
+libmount-docs/                                     16-Jul-2018 11:28       -
+libsmartcols-docs/                                 16-Jul-2018 11:28       -
+sha256sums.asc                                     16-Jul-2018 11:30    2127
+util-linux-2.32-rc1.tar.gz                         13-Feb-2018 12:25      9M
+util-linux-2.32-rc1.tar.sign                       13-Feb-2018 12:25     833
+util-linux-2.32-rc1.tar.xz                         13-Feb-2018 12:25      4M
+util-linux-2.32-rc2.tar.gz                         01-Mar-2018 13:38      9M
+util-linux-2.32-rc2.tar.sign                       01-Mar-2018 13:38     833
+util-linux-2.32-rc2.tar.xz                         01-Mar-2018 13:38      4M
+util-linux-2.32.1.tar.gz                           16-Jul-2018 11:29      9M
+util-linux-2.32.1.tar.sign                         16-Jul-2018 11:29     833
+util-linux-2.32.1.tar.xz                           16-Jul-2018 11:29      4M
+util-linux-2.32.tar.gz                             21-Mar-2018 14:49      9M
+util-linux-2.32.tar.sign                           21-Mar-2018 14:49     833
+util-linux-2.32.tar.xz                             21-Mar-2018 14:49      4M
+v2.32-ChangeLog                                    21-Mar-2018 14:49     36K
+v2.32-ChangeLog.sign                               21-Mar-2018 14:49     833
+v2.32-ReleaseNotes                                 21-Mar-2018 14:49     21K
+v2.32-ReleaseNotes.sign                            21-Mar-2018 14:49     833
+v2.32-rc1-ChangeLog                                13-Feb-2018 12:25    174K
+v2.32-rc1-ChangeLog.sign                           13-Feb-2018 12:25     833
+v2.32-rc2-ChangeLog                                01-Mar-2018 13:38     21K
+v2.32-rc2-ChangeLog.sign                           01-Mar-2018 13:38     833
+v2.32.1-ChangeLog                                  16-Jul-2018 11:29     31K
+v2.32.1-ChangeLog.sign                             16-Jul-2018 11:29     833
+v2.32.1-ReleaseNotes                               16-Jul-2018 11:29    3425
+v2.32.1-ReleaseNotes.sign                          16-Jul-2018 11:29     833
+

+ diff --git a/poky/bitbake/lib/bb/tests/fetch-testdata/pub/linux/utils/util-linux/v2.33/index.html b/poky/bitbake/lib/bb/tests/fetch-testdata/pub/linux/utils/util-linux/v2.33/index.html new file mode 100644 index 000000000..549530542 --- /dev/null +++ b/poky/bitbake/lib/bb/tests/fetch-testdata/pub/linux/utils/util-linux/v2.33/index.html @@ -0,0 +1,42 @@ + +Index of /pub/linux/utils/util-linux/v2.33/ + +

Index of /pub/linux/utils/util-linux/v2.33/


../
+libblkid-docs/                                     09-Apr-2019 13:55       -
+libfdisk-docs/                                     09-Apr-2019 13:56       -
+libmount-docs/                                     09-Apr-2019 13:56       -
+libsmartcols-docs/                                 09-Apr-2019 13:56       -
+sha256sums.asc                                     09-Apr-2019 14:01    2480
+util-linux-2.33-rc1.tar.gz                         25-Sep-2018 10:34      9M
+util-linux-2.33-rc1.tar.sign                       25-Sep-2018 10:34     833
+util-linux-2.33-rc1.tar.xz                         25-Sep-2018 10:34      4M
+util-linux-2.33-rc2.tar.gz                         19-Oct-2018 11:44      9M
+util-linux-2.33-rc2.tar.sign                       19-Oct-2018 11:44     833
+util-linux-2.33-rc2.tar.xz                         19-Oct-2018 11:44      4M
+util-linux-2.33.1.tar.gz                           09-Jan-2019 10:28      9M
+util-linux-2.33.1.tar.sign                         09-Jan-2019 10:28     833
+util-linux-2.33.1.tar.xz                           09-Jan-2019 10:28      4M
+util-linux-2.33.2.tar.gz                           09-Apr-2019 13:57     10M
+util-linux-2.33.2.tar.sign                         09-Apr-2019 13:57     833
+util-linux-2.33.2.tar.xz                           09-Apr-2019 13:57      4M
+util-linux-2.33.tar.gz                             06-Nov-2018 11:25      9M
+util-linux-2.33.tar.sign                           06-Nov-2018 11:25     833
+util-linux-2.33.tar.xz                             06-Nov-2018 11:25      4M
+v2.33-ChangeLog                                    06-Nov-2018 11:25    7977
+v2.33-ChangeLog.sign                               06-Nov-2018 11:25     833
+v2.33-ReleaseNotes                                 06-Nov-2018 11:25     27K
+v2.33-ReleaseNotes.sign                            06-Nov-2018 11:25     833
+v2.33-rc1-ChangeLog                                25-Sep-2018 10:34    210K
+v2.33-rc1-ChangeLog.sign                           25-Sep-2018 10:34     833
+v2.33-rc2-ChangeLog                                19-Oct-2018 11:44     18K
+v2.33-rc2-ChangeLog.sign                           19-Oct-2018 11:44     833
+v2.33.1-ChangeLog                                  09-Jan-2019 10:28     17K
+v2.33.1-ChangeLog.sign                             09-Jan-2019 10:28     833
+v2.33.1-ReleaseNotes                               09-Jan-2019 10:28    1899
+v2.33.1-ReleaseNotes.sign                          09-Jan-2019 10:28     833
+v2.33.2-ChangeLog                                  09-Apr-2019 13:57     21K
+v2.33.2-ChangeLog.sign                             09-Apr-2019 13:57     833
+v2.33.2-ReleaseNotes                               09-Apr-2019 13:57    2566
+v2.33.2-ReleaseNotes.sign                          09-Apr-2019 13:57     833
+

+ diff --git a/poky/bitbake/lib/bb/tests/fetch-testdata/pub/linux/utils/util-linux/v2.34/index.html b/poky/bitbake/lib/bb/tests/fetch-testdata/pub/linux/utils/util-linux/v2.34/index.html new file mode 100644 index 000000000..bd9d9c87b --- /dev/null +++ b/poky/bitbake/lib/bb/tests/fetch-testdata/pub/linux/utils/util-linux/v2.34/index.html @@ -0,0 +1,28 @@ + +Index of /pub/linux/utils/util-linux/v2.34/ + +

Index of /pub/linux/utils/util-linux/v2.34/


../
+libblkid-docs/                                     14-Jun-2019 10:45       -
+libfdisk-docs/                                     14-Jun-2019 10:45       -
+libmount-docs/                                     14-Jun-2019 10:45       -
+libsmartcols-docs/                                 14-Jun-2019 10:46       -
+sha256sums.asc                                     14-Jun-2019 10:51    1774
+util-linux-2.34-rc1.tar.gz                         30-Apr-2019 10:24     10M
+util-linux-2.34-rc1.tar.sign                       30-Apr-2019 10:24     833
+util-linux-2.34-rc1.tar.xz                         30-Apr-2019 10:24      5M
+util-linux-2.34-rc2.tar.gz                         30-May-2019 10:24     10M
+util-linux-2.34-rc2.tar.sign                       30-May-2019 10:24     833
+util-linux-2.34-rc2.tar.xz                         30-May-2019 10:24      5M
+util-linux-2.34.tar.gz                             14-Jun-2019 10:46     10M
+util-linux-2.34.tar.sign                           14-Jun-2019 10:46     833
+util-linux-2.34.tar.xz                             14-Jun-2019 10:46      5M
+v2.34-ChangeLog                                    14-Jun-2019 10:46     14K
+v2.34-ChangeLog.sign                               14-Jun-2019 10:46     833
+v2.34-ReleaseNotes                                 14-Jun-2019 10:46     27K
+v2.34-ReleaseNotes.sign                            14-Jun-2019 10:46     833
+v2.34-rc1-ChangeLog                                30-Apr-2019 10:24    167K
+v2.34-rc1-ChangeLog.sign                           30-Apr-2019 10:24     833
+v2.34-rc2-ChangeLog                                30-May-2019 10:24     57K
+v2.34-rc2-ChangeLog.sign                           30-May-2019 10:24     833
+

+ diff --git a/poky/bitbake/lib/bb/tests/fetch-testdata/pub/linux/utils/util-linux/v2.35/index.html b/poky/bitbake/lib/bb/tests/fetch-testdata/pub/linux/utils/util-linux/v2.35/index.html new file mode 100644 index 000000000..aa714d391 --- /dev/null +++ b/poky/bitbake/lib/bb/tests/fetch-testdata/pub/linux/utils/util-linux/v2.35/index.html @@ -0,0 +1,18 @@ + +Index of /pub/linux/utils/util-linux/v2.35/ + +

Index of /pub/linux/utils/util-linux/v2.35/


../
+libblkid-docs/                                     11-Dec-2019 10:04       -
+libfdisk-docs/                                     11-Dec-2019 10:05       -
+libmount-docs/                                     11-Dec-2019 10:05       -
+libsmartcols-docs/                                 11-Dec-2019 10:05       -
+sha256sums.asc                                     11-Dec-2019 10:11    1242
+util-linux-2.35-rc1.tar.gz                         11-Dec-2019 10:06     10M
+util-linux-2.35-rc1.tar.sign                       11-Dec-2019 10:06     833
+util-linux-2.35-rc1.tar.xz                         11-Dec-2019 10:06      5M
+v2.35-ReleaseNotes                                 11-Dec-2019 10:06     21K
+v2.35-ReleaseNotes.sign                            11-Dec-2019 10:06     833
+v2.35-rc1-ChangeLog                                11-Dec-2019 10:06    228K
+v2.35-rc1-ChangeLog.sign                           11-Dec-2019 10:06     833
+

+ diff --git a/poky/bitbake/lib/bb/tests/fetch-testdata/releases/eglibc/index.html b/poky/bitbake/lib/bb/tests/fetch-testdata/releases/eglibc/index.html new file mode 100644 index 000000000..b26794021 --- /dev/null +++ b/poky/bitbake/lib/bb/tests/fetch-testdata/releases/eglibc/index.html @@ -0,0 +1,21 @@ + +Index of /releases/eglibc/ + +

Index of /releases/eglibc/


../
+eglibc-2.16-svnr21224.tar.bz2                      17-Oct-2012 18:01            17310656
+eglibc-2.16-svnr21224.tar.bz2.md5                  17-Oct-2012 21:53                  64
+eglibc-2.16-svnr21224.tar.bz2.sha1                 17-Oct-2012 21:53                  72
+eglibc-2.17-svnr22064.tar.bz2                      04-Jan-2013 05:44            17565519
+eglibc-2.17-svnr22064.tar.bz2.asc                  04-Jan-2013 05:45                 302
+eglibc-2.17-svnr22064.tar.bz2.md5                  04-Jan-2013 05:44                  64
+eglibc-2.17-svnr22064.tar.bz2.sha1                 04-Jan-2013 05:44                  72
+eglibc-2.18-svnr23787.tar.bz2                      21-Aug-2013 05:36            17862773
+eglibc-2.18-svnr23787.tar.bz2.asc                  21-Aug-2013 05:36                 302
+eglibc-2.18-svnr23787.tar.bz2.md5                  21-Aug-2013 05:36                  64
+eglibc-2.18-svnr23787.tar.bz2.sha1                 21-Aug-2013 05:36                  72
+eglibc-2.19-svnr25243.tar.bz2                      08-Feb-2014 10:06            18873620
+eglibc-2.19-svnr25243.tar.bz2.asc                  08-Feb-2014 10:06                 285
+eglibc-2.19-svnr25243.tar.bz2.md5                  08-Feb-2014 10:06                  64
+eglibc-2.19-svnr25243.tar.bz2.sha1                 08-Feb-2014 10:06                  72
+

+ diff --git a/poky/bitbake/lib/bb/tests/fetch-testdata/releases/gnu-config/index.html b/poky/bitbake/lib/bb/tests/fetch-testdata/releases/gnu-config/index.html new file mode 100644 index 000000000..051aa4812 --- /dev/null +++ b/poky/bitbake/lib/bb/tests/fetch-testdata/releases/gnu-config/index.html @@ -0,0 +1,9 @@ + +Index of /releases/gnu-config/ + +

Index of /releases/gnu-config/


../
+SHA256SUM                                          03-Oct-2012 17:23                 190
+gnu-config-20120814.tar.bz2                        18-Sep-2012 09:28               43026
+gnu-config-yocto-20111111.tgz                      08-May-2012 21:11               48762
+

+ diff --git a/poky/bitbake/lib/bb/tests/fetch-testdata/releases/individual/xserver/index.html b/poky/bitbake/lib/bb/tests/fetch-testdata/releases/individual/xserver/index.html new file mode 100644 index 000000000..72e0d65e0 --- /dev/null +++ b/poky/bitbake/lib/bb/tests/fetch-testdata/releases/individual/xserver/index.html @@ -0,0 +1,609 @@ + + + + Index of /releases/individual/xserver + + +

Index of /releases/individual/xserver

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
[ICO]NameLast modifiedSizeDescription

[PARENTDIR]Parent Directory  -  
[   ]xorg-server-1.0.1.tar.bz22006-01-18 23:51 5.7M 
[   ]xorg-server-1.0.1.tar.gz2006-01-18 23:51 7.7M 
[   ]xorg-server-1.0.2.tar.bz22006-03-20 14:01 5.7M 
[   ]xorg-server-1.0.2.tar.gz2006-03-20 14:02 7.6M 
[   ]xorg-server-1.0.99.2.tar.bz22006-04-02 00:47 6.1M 
[   ]xorg-server-1.0.99.2.tar.gz2006-04-02 00:48 8.3M 
[   ]xorg-server-1.0.99.901.tar.bz22006-04-07 22:51 6.0M 
[   ]xorg-server-1.0.99.901.tar.gz2006-04-07 22:51 8.2M 
[   ]xorg-server-1.0.99.902.tar.bz22006-04-28 23:17 6.0M 
[   ]xorg-server-1.0.99.902.tar.gz2006-04-28 23:16 8.2M 
[   ]xorg-server-1.0.99.903.tar.bz22006-05-12 20:54 6.0M 
[   ]xorg-server-1.0.99.903.tar.gz2006-05-12 20:52 8.3M 
[   ]xorg-server-1.1.0.tar.bz22006-05-22 23:31 6.0M 
[   ]xorg-server-1.1.0.tar.gz2006-05-22 23:29 8.3M 
[   ]xorg-server-1.1.1.tar.bz22006-07-08 00:57 6.0M 
[   ]xorg-server-1.1.1.tar.gz2006-07-08 00:59 8.0M 
[   ]xorg-server-1.1.99.901.tar.bz22006-10-13 23:06 6.0M 
[   ]xorg-server-1.1.99.901.tar.gz2006-10-13 23:08 8.1M 
[   ]xorg-server-1.1.99.902.tar.bz22006-11-13 22:04 5.8M 
[   ]xorg-server-1.1.99.902.tar.gz2006-11-13 22:06 7.8M 
[   ]xorg-server-1.1.99.903.tar.bz22006-12-02 00:14 5.7M 
[   ]xorg-server-1.1.99.903.tar.gz2006-12-02 00:17 7.7M 
[   ]xorg-server-1.2.0.tar.bz22007-01-23 06:15 5.7M 
[   ]xorg-server-1.2.0.tar.gz2007-01-23 06:17 7.7M 
[   ]xorg-server-1.2.99.0.tar.bz22006-11-02 03:15 5.9M 
[   ]xorg-server-1.2.99.0.tar.gz2006-11-02 03:17 7.9M 
[   ]xorg-server-1.2.99.901.tar.bz22007-03-05 05:11 5.7M 
[   ]xorg-server-1.2.99.901.tar.gz2007-03-05 05:14 7.6M 
[   ]xorg-server-1.2.99.902.tar.bz22007-03-14 19:38 5.7M 
[   ]xorg-server-1.2.99.902.tar.gz2007-03-14 19:43 7.6M 
[   ]xorg-server-1.2.99.903.tar.bz22007-03-27 05:01 5.7M 
[   ]xorg-server-1.2.99.903.tar.gz2007-03-27 05:05 7.6M 
[   ]xorg-server-1.2.99.904.tar.bz22007-04-06 06:31 4.2M 
[   ]xorg-server-1.2.99.904.tar.gz2007-04-06 06:28 7.6M 
[   ]xorg-server-1.2.99.905.tar.bz22007-04-06 07:01 5.7M 
[   ]xorg-server-1.2.99.905.tar.gz2007-04-06 06:57 7.6M 
[   ]xorg-server-1.3.0.0.tar.bz22007-04-20 02:45 5.7M 
[   ]xorg-server-1.3.0.0.tar.gz2007-04-20 02:42 7.6M 
[   ]xorg-server-1.3.99.0.tar.bz22007-08-01 05:38 6.0M 
[   ]xorg-server-1.3.99.0.tar.gz2007-08-01 05:36 8.0M 
[   ]xorg-server-1.3.99.2.tar.bz22007-09-01 03:12 5.9M 
[   ]xorg-server-1.3.99.2.tar.gz2007-09-01 03:10 7.8M 
[   ]xorg-server-1.4.0.90.tar.bz22007-12-12 20:44 6.0M 
[   ]xorg-server-1.4.0.90.tar.gz2007-12-12 20:43 8.0M 
[   ]xorg-server-1.4.1.tar.bz22008-06-10 15:57 6.0M 
[   ]xorg-server-1.4.1.tar.gz2008-06-10 15:56 8.1M 
[   ]xorg-server-1.4.2.tar.bz22008-06-11 15:08 5.9M 
[   ]xorg-server-1.4.2.tar.gz2008-06-11 15:08 7.9M 
[   ]xorg-server-1.4.99.901.tar.bz22008-03-06 05:25 5.3M 
[   ]xorg-server-1.4.99.901.tar.gz2008-03-06 05:23 7.1M 
[   ]xorg-server-1.4.99.902.tar.bz22008-05-22 19:16 5.3M 
[   ]xorg-server-1.4.99.902.tar.gz2008-05-22 19:16 7.1M 
[   ]xorg-server-1.4.99.904.tar.bz22008-06-30 15:42 5.4M 
[   ]xorg-server-1.4.99.904.tar.gz2008-06-30 15:42 7.3M 
[   ]xorg-server-1.4.99.905.tar.bz22008-06-30 20:31 5.4M 
[   ]xorg-server-1.4.99.905.tar.gz2008-06-30 20:31 7.3M 
[   ]xorg-server-1.4.99.906.tar.bz22008-07-23 18:55 5.4M 
[   ]xorg-server-1.4.99.906.tar.gz2008-07-23 18:55 7.3M 
[   ]xorg-server-1.4.tar.bz22007-09-06 09:23 5.9M 
[   ]xorg-server-1.4.tar.gz2007-09-06 09:22 7.8M 
[   ]xorg-server-1.5.0.tar.bz22008-09-03 23:16 5.4M 
[   ]xorg-server-1.5.0.tar.gz2008-09-03 23:16 7.3M 
[   ]xorg-server-1.5.1.tar.bz22008-09-23 19:15 5.4M 
[   ]xorg-server-1.5.1.tar.gz2008-09-23 19:15 7.3M 
[   ]xorg-server-1.5.2.tar.bz22008-10-10 19:27 5.4M 
[   ]xorg-server-1.5.2.tar.gz2008-10-10 19:27 7.3M 
[   ]xorg-server-1.5.3.tar.bz22008-11-05 20:49 5.4M 
[   ]xorg-server-1.5.3.tar.gz2008-11-05 20:49 7.3M 
[   ]xorg-server-1.5.99.1.tar.bz22008-11-26 07:29 4.4M 
[   ]xorg-server-1.5.99.1.tar.gz2008-11-26 07:26 5.9M 
[   ]xorg-server-1.5.99.2.tar.bz22008-12-03 08:16 4.4M 
[   ]xorg-server-1.5.99.2.tar.gz2008-12-03 08:09 5.9M 
[   ]xorg-server-1.5.99.3.tar.bz22008-12-10 06:28 4.4M 
[   ]xorg-server-1.5.99.3.tar.gz2008-12-10 06:25 5.9M 
[   ]xorg-server-1.5.99.901.tar.bz22009-01-12 21:12 4.4M 
[   ]xorg-server-1.5.99.901.tar.gz2009-01-12 21:12 6.0M 
[   ]xorg-server-1.5.99.902.tar.bz22009-01-31 05:27 4.4M 
[   ]xorg-server-1.5.99.902.tar.gz2009-01-31 05:24 6.0M 
[   ]xorg-server-1.5.99.903.tar.bz22009-02-18 06:35 4.4M 
[   ]xorg-server-1.5.99.903.tar.gz2009-02-18 06:32 6.0M 
[   ]xorg-server-1.6.0.tar.bz22009-02-25 20:25 4.4M 
[   ]xorg-server-1.6.0.tar.gz2009-02-25 20:19 6.0M 
[   ]xorg-server-1.6.1.901.tar.bz22009-05-09 05:46 4.4M 
[   ]xorg-server-1.6.1.901.tar.gz2009-05-09 05:42 5.8M 
[   ]xorg-server-1.6.1.902.tar.bz22009-06-29 23:05 4.4M 
[   ]xorg-server-1.6.1.902.tar.gz2009-06-29 23:02 5.9M 
[   ]xorg-server-1.6.1.tar.bz22009-04-14 20:09 4.4M 
[   ]xorg-server-1.6.1.tar.gz2009-04-14 20:09 5.8M 
[   ]xorg-server-1.6.2.901.tar.bz22009-07-26 21:42 4.4M 
[   ]xorg-server-1.6.2.901.tar.gz2009-07-26 21:41 5.9M 
[   ]xorg-server-1.6.2.tar.bz22009-07-07 23:40 4.4M 
[   ]xorg-server-1.6.2.tar.gz2009-07-07 23:39 5.9M 
[   ]xorg-server-1.6.3.901.tar.bz22009-08-26 05:55 4.5M 
[   ]xorg-server-1.6.3.901.tar.gz2009-08-26 05:54 5.9M 
[   ]xorg-server-1.6.3.tar.bz22009-08-01 06:45 4.4M 
[   ]xorg-server-1.6.3.tar.gz2009-08-01 06:42 5.9M 
[   ]xorg-server-1.6.4.901.tar.bz22009-10-03 07:40 4.5M 
[   ]xorg-server-1.6.4.901.tar.gz2009-10-03 07:44 5.9M 
[   ]xorg-server-1.6.4.tar.bz22009-09-28 02:47 4.5M 
[   ]xorg-server-1.6.4.tar.gz2009-09-28 02:45 5.9M 
[   ]xorg-server-1.6.5.tar.bz22009-10-12 05:27 4.5M 
[   ]xorg-server-1.6.5.tar.gz2009-10-12 05:26 5.9M 
[   ]xorg-server-1.6.99.900.tar.bz22009-09-04 07:02 4.7M 
[   ]xorg-server-1.6.99.900.tar.gz2009-09-04 07:02 6.2M 
[   ]xorg-server-1.6.99.901.tar.bz22009-09-14 10:26 4.7M 
[   ]xorg-server-1.6.99.901.tar.gz2009-09-14 10:23 6.2M 
[   ]xorg-server-1.6.99.902.tar.bz22009-09-22 04:53 4.7M 
[   ]xorg-server-1.6.99.902.tar.gz2009-09-22 04:50 6.2M 
[   ]xorg-server-1.6.99.903.tar.bz22009-09-28 11:25 4.7M 
[   ]xorg-server-1.6.99.903.tar.gz2009-09-28 11:22 6.2M 
[   ]xorg-server-1.7.0.901.tar.bz22009-10-12 04:40 4.7M 
[   ]xorg-server-1.7.0.901.tar.gz2009-10-12 04:39 6.3M 
[   ]xorg-server-1.7.0.902.tar.bz22009-10-19 02:10 4.7M 
[   ]xorg-server-1.7.0.902.tar.gz2009-10-19 02:10 6.3M 
[   ]xorg-server-1.7.0.tar.bz22009-10-02 06:17 4.7M 
[   ]xorg-server-1.7.0.tar.gz2009-10-02 06:16 6.3M 
[   ]xorg-server-1.7.1.901.tar.bz22009-11-06 05:11 4.7M 
[   ]xorg-server-1.7.1.901.tar.gz2009-11-06 05:11 6.3M 
[   ]xorg-server-1.7.1.902.tar.bz22009-11-20 05:52 4.7M 
[   ]xorg-server-1.7.1.902.tar.gz2009-11-20 05:51 6.3M 
[   ]xorg-server-1.7.1.tar.bz22009-10-23 05:40 4.7M 
[   ]xorg-server-1.7.1.tar.gz2009-10-23 05:39 6.3M 
[   ]xorg-server-1.7.2.tar.bz22009-11-27 05:46 4.7M 
[   ]xorg-server-1.7.2.tar.gz2009-11-27 05:45 6.3M 
[   ]xorg-server-1.7.3.901.tar.bz22009-12-11 06:40 4.7M 
[   ]xorg-server-1.7.3.901.tar.gz2009-12-11 06:40 6.3M 
[   ]xorg-server-1.7.3.902.tar.bz22009-12-26 01:08 4.7M 
[   ]xorg-server-1.7.3.902.tar.gz2009-12-26 01:05 6.3M 
[   ]xorg-server-1.7.3.tar.bz22009-12-03 03:38 4.7M 
[   ]xorg-server-1.7.3.tar.gz2009-12-03 03:37 6.3M 
[   ]xorg-server-1.7.4.901.tar.bz22010-01-23 00:16 4.7M 
[   ]xorg-server-1.7.4.901.tar.gz2010-01-23 00:16 6.3M 
[   ]xorg-server-1.7.4.902.tar.bz22010-02-05 08:37 4.7M 
[   ]xorg-server-1.7.4.902.tar.gz2010-02-05 08:32 6.3M 
[   ]xorg-server-1.7.4.tar.bz22010-01-08 01:09 4.7M 
[   ]xorg-server-1.7.4.tar.gz2010-01-08 01:09 6.3M 
[   ]xorg-server-1.7.5.901.tar.bz22010-03-05 00:26 4.7M 
[   ]xorg-server-1.7.5.901.tar.gz2010-03-05 00:23 6.3M 
[   ]xorg-server-1.7.5.902.tar.bz22010-03-12 07:07 4.7M 
[   ]xorg-server-1.7.5.902.tar.gz2010-03-12 07:02 6.3M 
[   ]xorg-server-1.7.5.tar.bz22010-02-16 03:54 4.7M 
[   ]xorg-server-1.7.5.tar.gz2010-02-16 03:50 6.3M 
[   ]xorg-server-1.7.6.901.tar.bz22010-04-12 02:12 4.7M 
[   ]xorg-server-1.7.6.901.tar.gz2010-04-12 02:12 6.3M 
[   ]xorg-server-1.7.6.902.tar.bz22010-04-21 00:25 4.7M 
[   ]xorg-server-1.7.6.902.tar.gz2010-04-21 00:25 6.3M 
[   ]xorg-server-1.7.6.tar.bz22010-03-17 01:56 4.7M 
[   ]xorg-server-1.7.6.tar.gz2010-03-17 01:56 6.3M 
[   ]xorg-server-1.7.7.tar.bz22010-05-04 07:51 4.7M 
[   ]xorg-server-1.7.7.tar.gz2010-05-04 07:48 6.3M 
[   ]xorg-server-1.7.99.1.tar.bz22009-10-21 16:15 4.8M 
[   ]xorg-server-1.7.99.1.tar.gz2009-10-21 16:15 6.5M 
[   ]xorg-server-1.7.99.2.tar.bz22009-12-20 03:50 4.8M 
[   ]xorg-server-1.7.99.2.tar.gz2009-12-20 03:48 6.5M 
[   ]xorg-server-1.7.99.901.tar.bz22010-02-12 22:00 4.9M 
[   ]xorg-server-1.7.99.901.tar.gz2010-02-12 21:59 6.5M 
[   ]xorg-server-1.7.99.902.tar.bz22010-03-22 05:42 4.9M 
[   ]xorg-server-1.7.99.902.tar.gz2010-03-22 05:41 6.5M 
[   ]xorg-server-1.8.0.901.tar.bz22010-04-27 05:08 4.9M 
[   ]xorg-server-1.8.0.901.tar.gz2010-04-27 05:05 6.6M 
[   ]xorg-server-1.8.0.902.tar.bz22010-05-04 00:39 4.9M 
[   ]xorg-server-1.8.0.902.tar.gz2010-05-04 00:36 6.6M 
[   ]xorg-server-1.8.0.tar.bz22010-04-02 07:30 4.9M 
[   ]xorg-server-1.8.0.tar.gz2010-04-02 07:28 6.5M 
[   ]xorg-server-1.8.1.901.tar.bz22010-06-02 00:07 5.0M 
[   ]xorg-server-1.8.1.901.tar.gz2010-06-02 00:07 6.6M 
[   ]xorg-server-1.8.1.902.tar.bz22010-06-21 02:07 5.0M 
[   ]xorg-server-1.8.1.902.tar.gz2010-06-21 02:07 6.6M 
[   ]xorg-server-1.8.1.tar.bz22010-05-11 21:52 5.0M 
[   ]xorg-server-1.8.1.tar.gz2010-05-11 21:52 6.6M 
[   ]xorg-server-1.8.2.tar.bz22010-07-01 05:29 5.0M 
[   ]xorg-server-1.8.2.tar.gz2010-07-01 05:29 6.6M 
[   ]xorg-server-1.8.99.901.tar.bz22010-06-15 21:19 5.1M 
[   ]xorg-server-1.8.99.901.tar.gz2010-06-15 21:18 6.8M 
[   ]xorg-server-1.8.99.902.tar.bz22010-06-22 19:05 5.1M 
[   ]xorg-server-1.8.99.902.tar.gz2010-06-22 19:04 6.8M 
[   ]xorg-server-1.8.99.903.tar.bz22010-06-22 19:33 5.1M 
[   ]xorg-server-1.8.99.903.tar.gz2010-06-22 19:32 6.8M 
[   ]xorg-server-1.8.99.904.tar.bz22010-07-01 13:46 5.1M 
[   ]xorg-server-1.8.99.904.tar.gz2010-07-01 13:39 6.8M 
[   ]xorg-server-1.8.99.905.tar.bz22010-07-14 19:58 5.1M 
[   ]xorg-server-1.8.99.905.tar.gz2010-07-14 19:58 6.8M 
[   ]xorg-server-1.8.99.906.tar.bz22010-08-13 06:22 5.1M 
[   ]xorg-server-1.8.99.906.tar.gz2010-08-13 06:20 6.8M 
[   ]xorg-server-1.9.0.901.tar.bz22010-10-01 21:22 5.0M 
[   ]xorg-server-1.9.0.901.tar.gz2010-10-01 21:21 6.7M 
[   ]xorg-server-1.9.0.902.tar.bz22010-10-15 18:34 5.0M 
[   ]xorg-server-1.9.0.902.tar.gz2010-10-15 18:33 6.7M 
[   ]xorg-server-1.9.0.tar.bz22010-08-21 00:46 5.1M 
[   ]xorg-server-1.9.0.tar.gz2010-08-21 00:45 6.8M 
[   ]xorg-server-1.9.1.tar.bz22010-10-24 03:22 5.0M 
[   ]xorg-server-1.9.1.tar.gz2010-10-24 03:22 6.7M 
[   ]xorg-server-1.9.2.901.tar.bz22010-11-14 00:12 5.0M 
[   ]xorg-server-1.9.2.901.tar.gz2010-11-14 00:12 6.8M 
[   ]xorg-server-1.9.2.902.tar.bz22010-12-04 19:25 5.0M 
[   ]xorg-server-1.9.2.902.tar.gz2010-12-04 19:25 6.8M 
[   ]xorg-server-1.9.2.tar.bz22010-10-31 23:15 5.0M 
[   ]xorg-server-1.9.2.tar.gz2010-10-31 23:15 6.8M 
[   ]xorg-server-1.9.3.901.tar.bz22011-01-08 21:37 5.0M 
[   ]xorg-server-1.9.3.901.tar.gz2011-01-08 21:37 6.8M 
[   ]xorg-server-1.9.3.902.tar.bz22011-01-31 01:16 5.0M 
[   ]xorg-server-1.9.3.902.tar.gz2011-01-31 01:16 6.7M 
[   ]xorg-server-1.9.3.tar.bz22010-12-13 20:05 5.0M 
[   ]xorg-server-1.9.3.tar.gz2010-12-13 20:05 6.8M 
[   ]xorg-server-1.9.4.901.tar.bz22011-03-04 23:21 4.9M 
[   ]xorg-server-1.9.4.901.tar.gz2011-03-04 23:21 6.7M 
[   ]xorg-server-1.9.4.tar.bz22011-02-04 20:03 5.0M 
[   ]xorg-server-1.9.4.tar.gz2011-02-04 20:02 6.7M 
[   ]xorg-server-1.9.5.tar.bz22011-03-17 21:49 4.9M 
[   ]xorg-server-1.9.5.tar.gz2011-03-17 21:49 6.7M 
[   ]xorg-server-1.9.99.901.tar.bz22010-12-07 04:57 5.1M 
[   ]xorg-server-1.9.99.901.tar.gz2010-12-07 04:56 6.8M 
[   ]xorg-server-1.9.99.902.tar.bz22011-02-18 22:50 5.1M 
[   ]xorg-server-1.9.99.902.tar.gz2011-02-18 22:49 6.8M 
[   ]xorg-server-1.9.99.903.tar.bz22011-02-25 06:46 5.0M 
[   ]xorg-server-1.9.99.903.tar.gz2011-02-25 06:44 6.8M 
[   ]xorg-server-1.10.0.901.tar.bz22011-03-29 07:36 5.1M 
[   ]xorg-server-1.10.0.901.tar.gz2011-03-29 07:36 6.9M 
[   ]xorg-server-1.10.0.902.tar.bz22011-04-08 23:49 5.1M 
[   ]xorg-server-1.10.0.902.tar.gz2011-04-08 23:48 6.9M 
[   ]xorg-server-1.10.0.tar.bz22011-02-26 05:49 5.1M 
[   ]xorg-server-1.10.0.tar.gz2011-02-26 05:48 6.9M 
[   ]xorg-server-1.10.1.901.tar.bz22011-05-06 22:59 5.1M 
[   ]xorg-server-1.10.1.901.tar.gz2011-05-06 22:59 6.9M 
[   ]xorg-server-1.10.1.902.tar.bz22011-05-21 06:13 5.1M 
[   ]xorg-server-1.10.1.902.tar.gz2011-05-21 06:13 6.9M 
[   ]xorg-server-1.10.1.tar.bz22011-04-16 01:13 5.1M 
[   ]xorg-server-1.10.1.tar.gz2011-04-16 01:13 6.9M 
[   ]xorg-server-1.10.2.901.tar.bz22011-06-17 17:30 5.1M 
[   ]xorg-server-1.10.2.901.tar.gz2011-06-17 17:30 6.9M 
[   ]xorg-server-1.10.2.902.tar.bz22011-07-02 03:55 5.1M 
[   ]xorg-server-1.10.2.902.tar.gz2011-07-02 03:55 6.9M 
[   ]xorg-server-1.10.2.tar.bz22011-05-29 00:20 5.1M 
[   ]xorg-server-1.10.2.tar.gz2011-05-29 00:20 6.9M 
[   ]xorg-server-1.10.3.901.tar.bz22011-07-29 18:39 5.1M 
[   ]xorg-server-1.10.3.901.tar.gz2011-07-29 18:39 7.0M 
[   ]xorg-server-1.10.3.902.tar.bz22011-08-12 22:30 5.1M 
[   ]xorg-server-1.10.3.902.tar.gz2011-08-12 22:30 7.0M 
[   ]xorg-server-1.10.3.tar.bz22011-07-08 20:04 5.1M 
[   ]xorg-server-1.10.3.tar.gz2011-07-08 20:04 6.9M 
[   ]xorg-server-1.10.4.tar.bz22011-08-19 07:13 5.1M 
[   ]xorg-server-1.10.4.tar.gz2011-08-19 07:12 7.0M 
[   ]xorg-server-1.10.6.tar.bz22012-02-11 01:11 5.2M 
[   ]xorg-server-1.10.6.tar.gz2012-02-11 01:11 7.0M 
[   ]xorg-server-1.10.99.901.tar.bz22011-06-01 18:34 4.7M 
[   ]xorg-server-1.10.99.901.tar.gz2011-06-01 18:33 6.3M 
[   ]xorg-server-1.10.99.902.tar.bz22011-08-04 04:10 4.8M 
[   ]xorg-server-1.10.99.902.tar.gz2011-08-04 04:09 6.4M 
[   ]xorg-server-1.11.0.tar.bz22011-08-27 01:02 4.8M 
[   ]xorg-server-1.11.0.tar.gz2011-08-27 01:01 6.4M 
[   ]xorg-server-1.11.1.901.tar.bz22011-10-14 23:41 4.7M 
[   ]xorg-server-1.11.1.901.tar.gz2011-10-14 23:40 6.3M 
[   ]xorg-server-1.11.1.902.tar.bz22011-10-29 01:44 4.7M 
[   ]xorg-server-1.11.1.902.tar.gz2011-10-29 01:44 6.3M 
[   ]xorg-server-1.11.1.tar.bz22011-09-24 07:19 4.7M 
[   ]xorg-server-1.11.1.tar.gz2011-09-24 07:19 6.3M 
[   ]xorg-server-1.11.2.901.tar.bz22011-11-28 08:17 4.7M 
[   ]xorg-server-1.11.2.901.tar.gz2011-11-28 08:16 6.3M 
[   ]xorg-server-1.11.2.902.tar.bz22011-12-09 21:10 4.7M 
[   ]xorg-server-1.11.2.902.tar.gz2011-12-09 21:10 6.3M 
[   ]xorg-server-1.11.2.tar.bz22011-11-04 17:38 4.7M 
[   ]xorg-server-1.11.2.tar.gz2011-11-04 17:38 6.3M 
[   ]xorg-server-1.11.3.901.tar.bz22012-01-07 07:34 4.7M 
[   ]xorg-server-1.11.3.901.tar.gz2012-01-07 07:34 6.3M 
[   ]xorg-server-1.11.3.902.tar.bz22012-01-21 08:29 4.7M 
[   ]xorg-server-1.11.3.902.tar.gz2012-01-21 08:29 6.3M 
[   ]xorg-server-1.11.3.tar.bz22011-12-17 02:03 4.7M 
[   ]xorg-server-1.11.3.tar.gz2011-12-17 02:03 6.3M 
[   ]xorg-server-1.11.4.tar.bz22012-01-28 05:20 4.7M 
[   ]xorg-server-1.11.4.tar.gz2012-01-28 05:20 6.3M 
[   ]xorg-server-1.11.99.1.tar.bz22011-11-20 23:05 4.8M 
[   ]xorg-server-1.11.99.1.tar.gz2011-11-20 23:04 6.5M 
[   ]xorg-server-1.11.99.2.tar.bz22011-12-18 01:30 4.8M 
[   ]xorg-server-1.11.99.2.tar.gz2011-12-18 01:29 6.5M 
[   ]xorg-server-1.11.99.901.tar.bz22011-12-27 22:19 4.9M 
[   ]xorg-server-1.11.99.901.tar.gz2011-12-27 22:18 6.6M 
[   ]xorg-server-1.11.99.902.tar.bz22012-01-28 06:48 4.9M 
[   ]xorg-server-1.11.99.902.tar.gz2012-01-28 06:47 6.6M 
[   ]xorg-server-1.11.99.903.tar.bz22012-02-11 03:18 5.3M 
[   ]xorg-server-1.11.99.903.tar.gz2012-02-11 03:16 7.2M 
[   ]xorg-server-1.12.0.901.tar.bz22012-03-31 03:15 5.1M 
[   ]xorg-server-1.12.0.901.tar.gz2012-03-31 03:15 7.0M 
[   ]xorg-server-1.12.0.902.tar.bz22012-04-10 02:48 5.1M 
[   ]xorg-server-1.12.0.902.tar.gz2012-04-10 02:48 7.0M 
[   ]xorg-server-1.12.0.tar.bz22012-03-05 05:12 5.3M 
[   ]xorg-server-1.12.0.tar.gz2012-03-05 05:11 7.2M 
[   ]xorg-server-1.12.1.901.tar.bz22012-05-07 07:10 5.2M 
[   ]xorg-server-1.12.1.901.tar.gz2012-05-07 07:10 7.2M 
[   ]xorg-server-1.12.1.902.tar.bz22012-05-20 05:17 5.2M 
[   ]xorg-server-1.12.1.902.tar.gz2012-05-20 05:17 7.2M 
[   ]xorg-server-1.12.1.tar.bz22012-04-13 22:52 5.1M 
[   ]xorg-server-1.12.1.tar.gz2012-04-13 22:52 7.0M 
[   ]xorg-server-1.12.2.901.tar.bz22012-06-15 03:15 5.2M 
[   ]xorg-server-1.12.2.901.tar.gz2012-06-15 03:14 7.2M 
[   ]xorg-server-1.12.2.902.tar.bz22012-07-02 00:34 5.2M 
[   ]xorg-server-1.12.2.902.tar.gz2012-07-02 00:34 7.2M 
[   ]xorg-server-1.12.2.tar.bz22012-05-29 20:11 5.2M 
[   ]xorg-server-1.12.2.tar.gz2012-05-29 20:11 7.2M 
[   ]xorg-server-1.12.3.901.tar.bz22012-08-03 17:26 5.2M 
[   ]xorg-server-1.12.3.901.tar.gz2012-08-03 17:26 7.2M 
[   ]xorg-server-1.12.3.902.tar.bz22012-08-19 16:11 5.2M 
[   ]xorg-server-1.12.3.902.tar.gz2012-08-19 16:11 7.2M 
[   ]xorg-server-1.12.3.tar.bz22012-07-09 01:21 5.2M 
[   ]xorg-server-1.12.3.tar.gz2012-07-09 01:21 7.2M 
[   ]xorg-server-1.12.4.tar.bz22012-08-27 05:15 5.2M 
[   ]xorg-server-1.12.4.tar.gz2012-08-27 05:15 7.2M 
[   ]xorg-server-1.12.99.901.tar.bz22012-07-10 08:35 5.2M 
[   ]xorg-server-1.12.99.901.tar.gz2012-07-10 08:34 7.2M 
[   ]xorg-server-1.12.99.902.tar.bz22012-07-17 22:50 5.2M 
[   ]xorg-server-1.12.99.902.tar.gz2012-07-17 22:49 7.2M 
[   ]xorg-server-1.12.99.903.tar.bz22012-07-26 05:50 5.2M 
[   ]xorg-server-1.12.99.903.tar.gz2012-07-26 05:49 7.2M 
[   ]xorg-server-1.12.99.904.tar.bz22012-08-08 00:57 5.2M 
[   ]xorg-server-1.12.99.904.tar.gz2012-08-08 00:56 7.2M 
[   ]xorg-server-1.12.99.905.tar.bz22012-08-21 21:53 5.2M 
[   ]xorg-server-1.12.99.905.tar.gz2012-08-21 21:52 7.2M 
[   ]xorg-server-1.13.0.901.tar.bz22012-11-23 05:10 5.2M 
[   ]xorg-server-1.13.0.901.tar.gz2012-11-23 05:09 7.2M 
[   ]xorg-server-1.13.0.902.tar.bz22012-12-07 06:09 5.2M 
[   ]xorg-server-1.13.0.902.tar.gz2012-12-07 06:08 7.2M 
[   ]xorg-server-1.13.0.tar.bz22012-09-05 21:48 5.2M 
[   ]xorg-server-1.13.0.tar.gz2012-09-05 21:47 7.2M 
[   ]xorg-server-1.13.1.901.tar.bz22013-01-04 06:51 5.2M 
[   ]xorg-server-1.13.1.901.tar.gz2013-01-04 06:50 7.2M 
[   ]xorg-server-1.13.1.tar.bz22012-12-14 21:47 5.2M 
[   ]xorg-server-1.13.1.tar.bz2.old2012-12-14 04:43 5.2M 
[   ]xorg-server-1.13.1.tar.gz2012-12-14 21:49 7.2M 
[   ]xorg-server-1.13.1.tar.gz.old2012-12-14 04:42 7.2M 
[   ]xorg-server-1.13.2.901.tar.bz22013-02-16 07:14 5.2M 
[   ]xorg-server-1.13.2.901.tar.gz2013-02-16 07:14 7.2M 
[   ]xorg-server-1.13.2.902.tar.bz22013-03-01 07:31 5.2M 
[   ]xorg-server-1.13.2.902.tar.gz2013-03-01 07:31 7.2M 
[   ]xorg-server-1.13.2.tar.bz22013-01-25 06:01 5.2M 
[   ]xorg-server-1.13.2.tar.gz2013-01-25 06:00 7.2M 
[   ]xorg-server-1.13.3.tar.bz22013-03-08 06:19 5.2M 
[   ]xorg-server-1.13.3.tar.gz2013-03-08 06:19 7.2M 
[   ]xorg-server-1.13.4.tar.bz22013-04-17 06:00 5.3M 
[   ]xorg-server-1.13.4.tar.gz2013-04-17 05:59 7.2M 
[   ]xorg-server-1.13.99.901.tar.bz22012-12-19 20:50 5.2M 
[   ]xorg-server-1.13.99.901.tar.gz2012-12-19 20:50 7.2M 
[   ]xorg-server-1.13.99.902.tar.bz22013-02-14 05:44 5.3M 
[   ]xorg-server-1.13.99.902.tar.gz2013-02-14 05:43 7.3M 
[   ]xorg-server-1.14.0.tar.bz22013-03-06 06:35 5.3M 
[   ]xorg-server-1.14.0.tar.gz2013-03-06 06:34 7.3M 
[   ]xorg-server-1.14.1.901.tar.bz22013-05-31 06:09 5.2M 
[   ]xorg-server-1.14.1.901.tar.gz2013-05-31 06:09 7.2M 
[   ]xorg-server-1.14.1.902.tar.bz22013-06-13 22:28 5.2M 
[   ]xorg-server-1.14.1.902.tar.gz2013-06-13 22:28 7.2M 
[   ]xorg-server-1.14.1.tar.bz22013-04-17 07:37 5.3M 
[   ]xorg-server-1.14.1.tar.gz2013-04-17 07:36 7.3M 
[   ]xorg-server-1.14.2-rc1.tar.bz22013-05-31 04:38 5.2M 
[   ]xorg-server-1.14.2-rc1.tar.gz2013-05-31 04:38 7.2M 
[   ]xorg-server-1.14.2.901.tar.bz22013-07-26 05:47 5.2M 
[   ]xorg-server-1.14.2.901.tar.bz2.old2013-07-26 04:27 5.2M 
[   ]xorg-server-1.14.2.901.tar.gz2013-07-26 05:47 7.2M 
[   ]xorg-server-1.14.2.901.tar.gz.old2013-07-26 04:27 7.2M 
[   ]xorg-server-1.14.2.902.tar.bz22013-08-22 23:57 5.2M 
[   ]xorg-server-1.14.2.902.tar.gz2013-08-22 23:57 7.3M 
[   ]xorg-server-1.14.2.tar.bz22013-06-25 15:52 5.2M 
[   ]xorg-server-1.14.2.tar.gz2013-06-25 15:52 7.2M 
[   ]xorg-server-1.14.3-rc1.tar.bz22013-07-26 04:21 5.2M 
[   ]xorg-server-1.14.3-rc1.tar.gz2013-07-26 04:21 7.2M 
[   ]xorg-server-1.14.3.901.tar.bz22013-10-26 19:53 5.3M 
[   ]xorg-server-1.14.3.901.tar.gz2013-10-26 19:53 7.3M 
[   ]xorg-server-1.14.3.tar.bz22013-09-13 03:19 5.2M 
[   ]xorg-server-1.14.3.tar.gz2013-09-13 03:19 7.3M 
[   ]xorg-server-1.14.4.901.tar.bz22013-11-22 05:13 5.2M 
[   ]xorg-server-1.14.4.901.tar.gz2013-11-22 05:13 7.3M 
[   ]xorg-server-1.14.4.tar.bz22013-11-01 05:31 5.3M 
[   ]xorg-server-1.14.4.tar.gz2013-11-01 05:31 7.3M 
[   ]xorg-server-1.14.5.901.tar.bz22014-03-22 05:21 5.3M 
[   ]xorg-server-1.14.5.901.tar.gz2014-03-22 05:21 7.3M 
[   ]xorg-server-1.14.5.tar.bz22013-12-13 03:53 5.2M 
[   ]xorg-server-1.14.5.tar.gz2013-12-13 03:53 7.3M 
[   ]xorg-server-1.14.6.tar.bz22014-04-14 02:49 5.3M 
[   ]xorg-server-1.14.6.tar.gz2014-04-14 02:49 7.3M 
[   ]xorg-server-1.14.7.tar.bz22014-06-06 04:20 5.3M 
[   ]xorg-server-1.14.7.tar.gz2014-06-06 04:19 7.3M 
[   ]xorg-server-1.14.99.1.tar.bz22013-04-24 17:16 5.3M 
[   ]xorg-server-1.14.99.1.tar.gz2013-04-24 17:15 7.3M 
[   ]xorg-server-1.14.99.2.tar.bz22013-10-05 00:01 5.3M 
[   ]xorg-server-1.14.99.2.tar.gz2013-10-05 00:00 7.4M 
[   ]xorg-server-1.14.99.3.tar.bz22013-10-19 00:34 5.3M 
[   ]xorg-server-1.14.99.3.tar.gz2013-10-19 00:33 7.4M 
[   ]xorg-server-1.14.99.901.tar.bz22013-11-01 08:51 5.3M 
[   ]xorg-server-1.14.99.901.tar.gz2013-11-01 08:50 7.3M 
[   ]xorg-server-1.14.99.902.tar.bz22013-11-14 01:32 5.3M 
[   ]xorg-server-1.14.99.902.tar.gz2013-11-14 01:32 7.3M 
[   ]xorg-server-1.14.99.903.tar.bz22013-11-24 06:31 5.3M 
[   ]xorg-server-1.14.99.903.tar.gz2013-11-24 06:30 7.3M 
[   ]xorg-server-1.14.99.904.tar.bz22013-12-11 15:57 5.3M 
[   ]xorg-server-1.14.99.904.tar.gz2013-12-11 15:56 7.3M 
[   ]xorg-server-1.14.99.905.tar.bz22013-12-19 22:35 5.3M 
[   ]xorg-server-1.14.99.905.tar.gz2013-12-19 22:35 7.3M 
[   ]xorg-server-1.15.0.901.tar.bz22014-03-22 06:04 5.2M 
[   ]xorg-server-1.15.0.901.tar.gz2014-03-22 06:04 7.3M 
[   ]xorg-server-1.15.0.tar.bz22013-12-27 18:01 5.3M 
[   ]xorg-server-1.15.0.tar.gz2013-12-27 18:00 7.3M 
[   ]xorg-server-1.15.1.tar.bz22014-04-14 03:16 5.2M 
[   ]xorg-server-1.15.1.tar.gz2014-04-14 03:16 7.3M 
[   ]xorg-server-1.15.2.tar.bz22014-06-27 01:30 5.3M 
[   ]xorg-server-1.15.2.tar.bz2.sig2014-06-27 01:30 72  
[   ]xorg-server-1.15.2.tar.gz2014-06-27 01:29 7.4M 
[   ]xorg-server-1.15.2.tar.gz.sig2014-06-27 01:30 72  
[   ]xorg-server-1.15.99.901.tar.bz22014-02-24 21:52 5.4M 
[   ]xorg-server-1.15.99.901.tar.gz2014-02-24 21:52 7.6M 
[   ]xorg-server-1.15.99.902.tar.bz22014-04-08 21:32 5.5M 
[   ]xorg-server-1.15.99.902.tar.gz2014-04-08 21:31 7.7M 
[   ]xorg-server-1.15.99.903.tar.bz22014-06-05 05:41 5.5M 
[   ]xorg-server-1.15.99.903.tar.gz2014-06-05 05:40 7.7M 
[   ]xorg-server-1.15.99.904.tar.bz22014-07-07 23:35 5.6M 
[   ]xorg-server-1.15.99.904.tar.bz2.sig2014-07-07 23:35 536  
[   ]xorg-server-1.15.99.904.tar.gz2014-07-07 23:35 7.7M 
[   ]xorg-server-1.15.99.904.tar.gz.sig2014-07-07 23:35 536  
[   ]xorg-server-1.16.0.901.tar.bz22014-09-15 21:38 5.5M 
[   ]xorg-server-1.16.0.901.tar.bz2.sig2014-09-15 21:38 543  
[   ]xorg-server-1.16.0.901.tar.gz2014-09-15 21:37 7.7M 
[   ]xorg-server-1.16.0.901.tar.gz.sig2014-09-15 21:38 543  
[   ]xorg-server-1.16.0.tar.bz22014-07-17 07:09 5.6M 
[   ]xorg-server-1.16.0.tar.bz2.sig2014-07-17 07:09 536  
[   ]xorg-server-1.16.0.tar.gz2014-07-17 07:08 7.7M 
[   ]xorg-server-1.16.0.tar.gz.sig2014-07-17 07:09 536  
[   ]xorg-server-1.16.1.901.tar.bz22014-11-02 10:52 5.5M 
[   ]xorg-server-1.16.1.901.tar.bz2.sig2014-11-02 10:52 543  
[   ]xorg-server-1.16.1.901.tar.gz2014-11-02 10:51 7.7M 
[   ]xorg-server-1.16.1.901.tar.gz.sig2014-11-02 10:52 543  
[   ]xorg-server-1.16.1.tar.bz22014-09-21 09:17 5.5M 
[   ]xorg-server-1.16.1.tar.bz2.sig2014-09-21 09:17 543  
[   ]xorg-server-1.16.1.tar.gz2014-09-21 09:16 7.7M 
[   ]xorg-server-1.16.1.tar.gz.sig2014-09-21 09:17 543  
[   ]xorg-server-1.16.2.901.tar.bz22014-12-09 20:12 5.5M 
[   ]xorg-server-1.16.2.901.tar.bz2.sig2014-12-09 20:12 543  
[   ]xorg-server-1.16.2.901.tar.gz2014-12-09 20:11 7.7M 
[   ]xorg-server-1.16.2.901.tar.gz.sig2014-12-09 20:12 543  
[   ]xorg-server-1.16.2.tar.bz22014-11-10 15:53 5.5M 
[   ]xorg-server-1.16.2.tar.bz2.sig2014-11-10 15:53 543  
[   ]xorg-server-1.16.2.tar.gz2014-11-10 15:53 7.7M 
[   ]xorg-server-1.16.2.tar.gz.sig2014-11-10 15:53 543  
[   ]xorg-server-1.16.3.tar.bz22014-12-20 12:19 5.5M 
[   ]xorg-server-1.16.3.tar.bz2.sig2014-12-20 12:19 543  
[   ]xorg-server-1.16.3.tar.gz2014-12-20 12:18 7.7M 
[   ]xorg-server-1.16.3.tar.gz.sig2014-12-20 12:19 543  
[   ]xorg-server-1.16.4.tar.bz22015-02-11 00:15 5.5M 
[   ]xorg-server-1.16.4.tar.bz2.sig2015-02-11 00:15 543  
[   ]xorg-server-1.16.4.tar.gz2015-02-11 00:14 7.7M 
[   ]xorg-server-1.16.4.tar.gz.sig2015-02-11 00:15 543  
[   ]xorg-server-1.16.99.901.tar.bz22014-10-29 04:37 5.6M 
[   ]xorg-server-1.16.99.901.tar.bz2.sig2014-10-29 04:37 536  
[   ]xorg-server-1.16.99.901.tar.gz2014-10-29 04:37 7.8M 
[   ]xorg-server-1.16.99.901.tar.gz.sig2014-10-29 04:37 536  
[   ]xorg-server-1.16.99.902.tar.bz22015-01-23 19:03 5.6M 
[   ]xorg-server-1.16.99.902.tar.bz2.sig2015-01-23 19:03 536  
[   ]xorg-server-1.16.99.902.tar.gz2015-01-23 19:03 7.8M 
[   ]xorg-server-1.16.99.902.tar.gz.sig2015-01-23 19:03 536  
[   ]xorg-server-1.17.0.tar.bz22015-02-04 17:37 5.6M 
[   ]xorg-server-1.17.0.tar.bz2.sig2015-02-04 17:37 536  
[   ]xorg-server-1.17.0.tar.gz2015-02-04 17:37 7.8M 
[   ]xorg-server-1.17.0.tar.gz.sig2015-02-04 17:37 536  
[   ]xorg-server-1.17.1.tar.bz22015-02-10 22:53 5.6M 
[   ]xorg-server-1.17.1.tar.bz2.sig2015-02-10 22:53 536  
[   ]xorg-server-1.17.1.tar.gz2015-02-10 22:52 7.8M 
[   ]xorg-server-1.17.1.tar.gz.sig2015-02-10 22:53 536  
[   ]xorg-server-1.17.2.tar.bz22015-06-16 16:31 5.5M 
[   ]xorg-server-1.17.2.tar.bz2.sig2015-06-16 16:31 72  
[   ]xorg-server-1.17.2.tar.gz2015-06-16 16:30 7.7M 
[   ]xorg-server-1.17.2.tar.gz.sig2015-06-16 16:31 72  
[   ]xorg-server-1.17.3.tar.bz22015-10-26 17:09 5.5M 
[   ]xorg-server-1.17.3.tar.bz2.sig2015-10-26 17:09 72  
[   ]xorg-server-1.17.3.tar.gz2015-10-26 17:09 7.8M 
[   ]xorg-server-1.17.3.tar.gz.sig2015-10-26 17:09 72  
[   ]xorg-server-1.17.4.tar.bz22015-10-28 16:38 5.5M 
[   ]xorg-server-1.17.4.tar.bz2.sig2015-10-28 16:38 72  
[   ]xorg-server-1.17.4.tar.gz2015-10-28 16:38 7.8M 
[   ]xorg-server-1.17.4.tar.gz.sig2015-10-28 16:38 72  
[   ]xorg-server-1.17.99.901.tar.bz22015-09-02 02:34 5.6M 
[   ]xorg-server-1.17.99.901.tar.bz2.sig2015-09-02 02:34 536  
[   ]xorg-server-1.17.99.901.tar.gz2015-09-02 02:34 7.9M 
[   ]xorg-server-1.17.99.901.tar.gz.sig2015-09-02 02:34 536  
[   ]xorg-server-1.17.99.902.tar.bz22015-10-26 18:13 5.5M 
[   ]xorg-server-1.17.99.902.tar.bz2.sig2015-10-26 18:13 72  
[   ]xorg-server-1.17.99.902.tar.gz2015-10-26 18:13 7.8M 
[   ]xorg-server-1.17.99.902.tar.gz.sig2015-10-26 18:13 72  
[   ]xorg-server-1.18.0.tar.bz22015-11-09 21:11 5.5M 
[   ]xorg-server-1.18.0.tar.bz2.sig2015-11-09 21:11 72  
[   ]xorg-server-1.18.0.tar.gz2015-11-09 21:11 7.8M 
[   ]xorg-server-1.18.0.tar.gz.sig2015-11-09 21:11 72  
[   ]xorg-server-1.18.1.tar.bz22016-02-08 23:41 5.6M 
[   ]xorg-server-1.18.1.tar.bz2.sig2016-02-08 23:41 72  
[   ]xorg-server-1.18.1.tar.gz2016-02-08 23:41 7.8M 
[   ]xorg-server-1.18.1.tar.gz.sig2016-02-08 23:41 72  
[   ]xorg-server-1.18.2.tar.bz22016-03-11 21:45 5.6M 
[   ]xorg-server-1.18.2.tar.bz2.sig2016-03-11 21:45 72  
[   ]xorg-server-1.18.2.tar.gz2016-03-11 21:45 7.8M 
[   ]xorg-server-1.18.2.tar.gz.sig2016-03-11 21:45 72  
[   ]xorg-server-1.18.3.tar.bz22016-04-04 19:48 5.6M 
[   ]xorg-server-1.18.3.tar.bz2.sig2016-04-04 19:48 72  
[   ]xorg-server-1.18.3.tar.gz2016-04-04 19:48 7.9M 
[   ]xorg-server-1.18.3.tar.gz.sig2016-04-04 19:48 72  
[   ]xorg-server-1.18.4.tar.bz22016-07-19 17:42 5.7M 
[   ]xorg-server-1.18.4.tar.bz2.sig2016-07-19 17:42 72  
[   ]xorg-server-1.18.4.tar.gz2016-07-19 17:42 8.0M 
[   ]xorg-server-1.18.4.tar.gz.sig2016-07-19 17:42 72  
[   ]xorg-server-1.18.99.2.tar.bz22016-09-16 20:55 5.8M 
[   ]xorg-server-1.18.99.2.tar.bz2.sig2016-09-16 20:55 543  
[   ]xorg-server-1.18.99.2.tar.gz2016-09-16 20:54 8.0M 
[   ]xorg-server-1.18.99.2.tar.gz.sig2016-09-16 20:55 543  
[   ]xorg-server-1.18.99.901.tar.bz22016-09-19 16:10 5.8M 
[   ]xorg-server-1.18.99.901.tar.bz2.sig2016-09-19 16:10 543  
[   ]xorg-server-1.18.99.901.tar.gz2016-09-19 16:10 8.0M 
[   ]xorg-server-1.18.99.901.tar.gz.sig2016-09-19 16:10 543  
[   ]xorg-server-1.18.99.902.tar.bz22016-10-28 16:47 5.8M 
[   ]xorg-server-1.18.99.902.tar.bz2.sig2016-10-28 16:47 543  
[   ]xorg-server-1.18.99.902.tar.gz2016-10-28 16:47 8.1M 
[   ]xorg-server-1.18.99.902.tar.gz.sig2016-10-28 16:47 543  
[   ]xorg-server-1.19.0.tar.bz22016-11-15 17:08 5.8M 
[   ]xorg-server-1.19.0.tar.bz2.sig2016-11-15 17:08 543  
[   ]xorg-server-1.19.0.tar.gz2016-11-15 17:07 8.1M 
[   ]xorg-server-1.19.0.tar.gz.sig2016-11-15 17:08 543  
[   ]xorg-server-1.19.1.tar.bz22017-01-11 21:25 5.8M 
[   ]xorg-server-1.19.1.tar.bz2.sig2017-01-11 21:25 72  
[   ]xorg-server-1.19.1.tar.gz2017-01-11 21:25 8.1M 
[   ]xorg-server-1.19.1.tar.gz.sig2017-01-11 21:25 72  
[   ]xorg-server-1.19.2.tar.bz22017-03-02 23:05 5.7M 
[   ]xorg-server-1.19.2.tar.bz2.sig2017-03-02 23:05 72  
[   ]xorg-server-1.19.2.tar.gz2017-03-02 23:05 7.9M 
[   ]xorg-server-1.19.2.tar.gz.sig2017-03-02 23:05 72  
[   ]xorg-server-1.19.3.tar.bz22017-03-15 18:12 5.8M 
[   ]xorg-server-1.19.3.tar.bz2.sig2017-03-15 18:12 72  
[   ]xorg-server-1.19.3.tar.gz2017-03-15 18:12 8.1M 
[   ]xorg-server-1.19.3.tar.gz.sig2017-03-15 18:12 72  
[   ]xorg-server-1.19.4.tar.bz22017-10-04 22:00 5.7M 
[   ]xorg-server-1.19.4.tar.bz2.sig2017-10-04 22:00 438  
[   ]xorg-server-1.19.4.tar.gz2017-10-04 22:00 8.0M 
[   ]xorg-server-1.19.4.tar.gz.sig2017-10-04 22:00 438  
[   ]xorg-server-1.19.5.tar.bz22017-10-12 17:31 5.7M 
[   ]xorg-server-1.19.5.tar.bz2.sig2017-10-12 17:31 438  
[   ]xorg-server-1.19.5.tar.gz2017-10-12 17:31 8.0M 
[   ]xorg-server-1.19.5.tar.gz.sig2017-10-12 17:31 438  
[   ]xorg-server-1.19.6.tar.bz22017-12-20 20:39 5.7M 
[   ]xorg-server-1.19.6.tar.bz2.sig2017-12-20 20:39 438  
[   ]xorg-server-1.19.6.tar.gz2017-12-20 20:39 8.0M 
[   ]xorg-server-1.19.6.tar.gz.sig2017-12-20 20:39 438  
[   ]xorg-server-1.19.7.tar.bz22019-03-02 23:03 5.8M 
[   ]xorg-server-1.19.7.tar.bz2.sig2019-03-02 23:03 287  
[   ]xorg-server-1.19.7.tar.gz2019-03-02 23:02 8.1M 
[   ]xorg-server-1.19.7.tar.gz.sig2019-03-02 23:03 287  
[   ]xorg-server-1.19.99.901.tar.bz22018-02-28 18:28 5.8M 
[   ]xorg-server-1.19.99.901.tar.bz2.sig2018-02-28 18:28 95  
[   ]xorg-server-1.19.99.901.tar.gz2018-02-28 18:28 8.1M 
[   ]xorg-server-1.19.99.901.tar.gz.sig2018-02-28 18:28 95  
[   ]xorg-server-1.19.99.902.tar.bz22018-03-28 20:39 5.8M 
[   ]xorg-server-1.19.99.902.tar.bz2.sig2018-03-28 20:39 438  
[   ]xorg-server-1.19.99.902.tar.gz2018-03-28 20:39 8.1M 
[   ]xorg-server-1.19.99.902.tar.gz.sig2018-03-28 20:39 438  
[   ]xorg-server-1.19.99.903.tar.bz22018-04-02 19:56 5.8M 
[   ]xorg-server-1.19.99.903.tar.bz2.sig2018-04-02 19:56 438  
[   ]xorg-server-1.19.99.903.tar.gz2018-04-02 19:56 8.1M 
[   ]xorg-server-1.19.99.903.tar.gz.sig2018-04-02 19:56 438  
[   ]xorg-server-1.19.99.904.tar.bz22018-04-10 19:50 5.8M 
[   ]xorg-server-1.19.99.904.tar.bz2.sig2018-04-10 19:50 438  
[   ]xorg-server-1.19.99.904.tar.gz2018-04-10 19:50 8.1M 
[   ]xorg-server-1.19.99.904.tar.gz.sig2018-04-10 19:50 438  
[   ]xorg-server-1.19.99.905.tar.bz22018-04-24 21:12 5.8M 
[   ]xorg-server-1.19.99.905.tar.bz2.sig2018-04-24 21:12 438  
[   ]xorg-server-1.19.99.905.tar.gz2018-04-24 21:12 8.1M 
[   ]xorg-server-1.19.99.905.tar.gz.sig2018-04-24 21:12 438  
[   ]xorg-server-1.20.0.tar.bz22018-05-10 16:38 5.8M 
[   ]xorg-server-1.20.0.tar.bz2.sig2018-05-10 16:38 438  
[   ]xorg-server-1.20.0.tar.gz2018-05-10 16:38 8.1M 
[   ]xorg-server-1.20.0.tar.gz.sig2018-05-10 16:38 438  
[   ]xorg-server-1.20.1.tar.bz22018-08-07 16:37 5.8M 
[   ]xorg-server-1.20.1.tar.bz2.sig2018-08-07 16:37 438  
[   ]xorg-server-1.20.1.tar.gz2018-08-07 16:37 8.1M 
[   ]xorg-server-1.20.1.tar.gz.sig2018-08-07 16:37 438  
[   ]xorg-server-1.20.2.tar.bz22018-10-15 16:03 5.9M 
[   ]xorg-server-1.20.2.tar.bz2.sig2018-10-15 16:03 438  
[   ]xorg-server-1.20.2.tar.gz2018-10-15 16:03 8.2M 
[   ]xorg-server-1.20.2.tar.gz.sig2018-10-15 16:03 438  
[   ]xorg-server-1.20.3.tar.bz22018-10-25 14:17 5.9M 
[   ]xorg-server-1.20.3.tar.bz2.sig2018-10-25 14:17 438  
[   ]xorg-server-1.20.3.tar.gz2018-10-25 14:17 8.2M 
[   ]xorg-server-1.20.3.tar.gz.sig2018-10-25 14:17 438  
[   ]xorg-server-1.20.4.tar.bz22019-02-26 19:33 5.8M 
[   ]xorg-server-1.20.4.tar.bz2.sig2019-02-26 19:33 438  
[   ]xorg-server-1.20.4.tar.gz2019-02-26 19:33 8.2M 
[   ]xorg-server-1.20.4.tar.gz.sig2019-02-26 19:33 438  
[   ]xorg-server-1.20.5.tar.bz22019-05-30 18:32 5.8M 
[   ]xorg-server-1.20.5.tar.bz2.sig2019-05-30 18:32 438  
[   ]xorg-server-1.20.5.tar.gz2019-05-30 18:32 8.2M 
[   ]xorg-server-1.20.5.tar.gz.sig2019-05-30 18:32 438  
[   ]xorg-server-1.20.6.tar.bz22019-11-22 23:50 6.0M 
[   ]xorg-server-1.20.6.tar.bz2.sig2019-11-22 23:50 215  
[   ]xorg-server-1.20.6.tar.gz2019-11-22 23:50 8.3M 
[   ]xorg-server-1.20.6.tar.gz.sig2019-11-22 23:50 215  

+
Apache/2.4.38 (Debian) Server at www.x.org Port 443
+ diff --git a/poky/bitbake/lib/bb/tests/fetch-testdata/software/pulseaudio/releases/index.html b/poky/bitbake/lib/bb/tests/fetch-testdata/software/pulseaudio/releases/index.html new file mode 100644 index 000000000..bf2d23cf9 --- /dev/null +++ b/poky/bitbake/lib/bb/tests/fetch-testdata/software/pulseaudio/releases/index.html @@ -0,0 +1,383 @@ + + + + Index of /software/pulseaudio/releases + + +

Index of /software/pulseaudio/releases

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
[ICO]NameLast modifiedSizeDescription

[PARENTDIR]Parent Directory  -  
[DIR]bad/2014-01-26 17:50 -  
[   ]polypaudio-0.1.tar.gz2008-03-28 21:16 387K 
[   ]polypaudio-0.1.tar.gz.md52011-05-29 11:28 56  
[   ]polypaudio-0.1.tar.gz.sha12011-05-29 11:28 64  
[   ]polypaudio-0.2.tar.gz2008-03-28 21:16 460K 
[   ]polypaudio-0.2.tar.gz.md52011-05-29 11:28 56  
[   ]polypaudio-0.2.tar.gz.sha12011-05-29 11:28 64  
[   ]polypaudio-0.3.tar.gz2008-03-28 21:16 470K 
[   ]polypaudio-0.3.tar.gz.md52011-05-29 11:28 56  
[   ]polypaudio-0.3.tar.gz.sha12011-05-29 11:28 64  
[   ]polypaudio-0.4.tar.gz2008-03-28 21:16 486K 
[   ]polypaudio-0.4.tar.gz.md52011-05-29 11:28 56  
[   ]polypaudio-0.4.tar.gz.sha12011-05-29 11:28 64  
[   ]polypaudio-0.5.1.tar.gz2008-03-28 21:16 524K 
[   ]polypaudio-0.5.1.tar.gz.md52011-05-29 11:28 58  
[   ]polypaudio-0.5.1.tar.gz.sha12011-05-29 11:28 66  
[   ]polypaudio-0.5.tar.gz2008-03-28 21:16 518K 
[   ]polypaudio-0.5.tar.gz.md52011-05-29 11:28 56  
[   ]polypaudio-0.5.tar.gz.sha12011-05-29 11:28 64  
[   ]polypaudio-0.6.tar.gz2008-03-28 21:16 448K 
[   ]polypaudio-0.6.tar.gz.md52011-05-29 11:28 56  
[   ]polypaudio-0.6.tar.gz.sha12011-05-29 11:28 64  
[   ]polypaudio-0.7.tar.gz2008-03-28 21:16 924K 
[   ]polypaudio-0.7.tar.gz.md52011-05-29 11:28 56  
[   ]polypaudio-0.7.tar.gz.sha12011-05-29 11:28 64  
[   ]polypaudio-0.8.1.tar.gz2008-03-28 21:16 1.1M 
[   ]polypaudio-0.8.1.tar.gz.md52011-05-29 11:28 58  
[   ]polypaudio-0.8.1.tar.gz.sha12011-05-29 11:28 66  
[   ]polypaudio-0.8.tar.gz2008-03-28 21:16 1.1M 
[   ]polypaudio-0.8.tar.gz.md52011-05-29 11:28 56  
[   ]polypaudio-0.8.tar.gz.sha12011-05-29 11:28 64  
[   ]polypaudio-0.9.0.tar.gz2008-03-28 21:16 1.1M 
[   ]polypaudio-0.9.0.tar.gz.md52011-05-29 11:28 58  
[   ]polypaudio-0.9.0.tar.gz.sha12011-05-29 11:28 66  
[   ]polypaudio-0.9.1.tar.gz2008-03-28 21:16 1.1M 
[   ]polypaudio-0.9.1.tar.gz.md52011-05-29 11:28 58  
[   ]polypaudio-0.9.1.tar.gz.sha12011-05-29 11:28 66  
[   ]pulseaudio-0.9.2.tar.gz2008-03-28 21:16 1.0M 
[   ]pulseaudio-0.9.2.tar.gz.md52011-05-29 11:28 58  
[   ]pulseaudio-0.9.2.tar.gz.sha12011-05-29 11:28 66  
[   ]pulseaudio-0.9.3.tar.gz2008-03-28 21:16 1.1M 
[   ]pulseaudio-0.9.3.tar.gz.md52011-05-29 11:28 58  
[   ]pulseaudio-0.9.3.tar.gz.sha12011-05-29 11:28 66  
[   ]pulseaudio-0.9.4.tar.gz2008-03-28 21:16 1.1M 
[   ]pulseaudio-0.9.4.tar.gz.md52011-05-29 11:28 58  
[   ]pulseaudio-0.9.4.tar.gz.sha12011-05-29 11:28 66  
[   ]pulseaudio-0.9.5.tar.gz2008-03-28 21:16 1.1M 
[   ]pulseaudio-0.9.5.tar.gz.md52011-05-29 11:28 58  
[   ]pulseaudio-0.9.5.tar.gz.sha12011-05-29 11:28 66  
[   ]pulseaudio-0.9.6.tar.gz2008-03-28 21:16 1.1M 
[   ]pulseaudio-0.9.6.tar.gz.md52011-05-29 11:28 58  
[   ]pulseaudio-0.9.6.tar.gz.sha12011-05-29 11:28 66  
[   ]pulseaudio-0.9.7.tar.gz2008-03-28 21:16 1.0M 
[   ]pulseaudio-0.9.7.tar.gz.md52011-05-29 11:28 58  
[   ]pulseaudio-0.9.7.tar.gz.sha12011-05-29 11:28 66  
[   ]pulseaudio-0.9.8.tar.gz2008-03-28 21:16 1.0M 
[   ]pulseaudio-0.9.8.tar.gz.md52011-05-29 11:28 58  
[   ]pulseaudio-0.9.8.tar.gz.sha12011-05-29 11:28 66  
[   ]pulseaudio-0.9.9.tar.gz2008-03-28 21:16 1.0M 
[   ]pulseaudio-0.9.9.tar.gz.md52011-05-29 11:28 58  
[   ]pulseaudio-0.9.9.tar.gz.sha12011-05-29 11:28 66  
[   ]pulseaudio-0.9.10.tar.gz2008-03-30 16:30 1.0M 
[   ]pulseaudio-0.9.10.tar.gz.md52011-05-29 11:28 59  
[   ]pulseaudio-0.9.10.tar.gz.sha12011-05-29 11:28 67  
[   ]pulseaudio-0.9.11.tar.gz2008-07-24 12:41 1.1M 
[   ]pulseaudio-0.9.11.tar.gz.md52011-05-29 11:28 59  
[   ]pulseaudio-0.9.11.tar.gz.sha12011-05-29 11:28 67  
[   ]pulseaudio-0.9.12.tar.gz2008-09-09 00:17 1.2M 
[   ]pulseaudio-0.9.12.tar.gz.md52011-05-29 11:28 59  
[   ]pulseaudio-0.9.12.tar.gz.sha12011-05-29 11:28 67  
[   ]pulseaudio-0.9.13.tar.gz2008-10-06 01:43 1.2M 
[   ]pulseaudio-0.9.13.tar.gz.md52011-05-29 11:28 59  
[   ]pulseaudio-0.9.13.tar.gz.sha12011-05-29 11:28 67  
[   ]pulseaudio-0.9.14.tar.gz2009-01-12 23:09 1.2M 
[   ]pulseaudio-0.9.14.tar.gz.md52011-05-29 11:28 59  
[   ]pulseaudio-0.9.14.tar.gz.sha12011-05-29 11:28 67  
[   ]pulseaudio-0.9.15.tar.gz2009-04-13 23:24 1.6M 
[   ]pulseaudio-0.9.15.tar.gz.md52011-05-29 11:28 59  
[   ]pulseaudio-0.9.15.tar.gz.sha12011-05-29 11:28 67  
[   ]pulseaudio-0.9.16-test1.tar.gz2009-06-23 17:16 1.8M 
[   ]pulseaudio-0.9.16-test1.tar.gz.md52011-05-29 11:28 65  
[   ]pulseaudio-0.9.16-test1.tar.gz.sha12011-05-29 11:28 73  
[   ]pulseaudio-0.9.16.tar.gz2009-09-10 00:49 1.9M 
[   ]pulseaudio-0.9.16.tar.gz.md52011-05-29 11:28 59  
[   ]pulseaudio-0.9.16.tar.gz.sha12011-05-29 11:28 67  
[   ]pulseaudio-0.9.17.tar.gz2009-09-11 01:32 1.9M 
[   ]pulseaudio-0.9.17.tar.gz.md52011-05-29 11:28 59  
[   ]pulseaudio-0.9.17.tar.gz.sha12011-05-29 11:28 67  
[   ]pulseaudio-0.9.18.tar.gz2009-09-19 00:43 1.9M 
[   ]pulseaudio-0.9.18.tar.gz.md52011-05-29 11:28 59  
[   ]pulseaudio-0.9.18.tar.gz.sha12011-05-29 11:28 67  
[   ]pulseaudio-0.9.19.tar.gz2009-09-30 01:30 1.9M 
[   ]pulseaudio-0.9.19.tar.gz.md52011-05-29 11:28 59  
[   ]pulseaudio-0.9.19.tar.gz.sha12011-05-29 11:28 67  
[   ]pulseaudio-0.9.20.tar.gz2009-11-11 05:10 2.0M 
[   ]pulseaudio-0.9.20.tar.gz.md52011-05-29 11:28 59  
[   ]pulseaudio-0.9.20.tar.gz.sha12011-05-29 11:28 67  
[   ]pulseaudio-0.9.21.tar.gz2009-11-23 04:23 2.0M 
[   ]pulseaudio-0.9.21.tar.gz.md52011-05-29 11:28 59  
[   ]pulseaudio-0.9.21.tar.gz.sha12011-05-29 11:28 67  
[   ]pulseaudio-0.9.22.tar.gz2010-11-26 01:12 2.0M 
[   ]pulseaudio-0.9.22.tar.gz.md52011-05-29 11:28 59  
[   ]pulseaudio-0.9.22.tar.gz.sha12011-05-29 11:28 67  
[   ]pulseaudio-0.9.23.tar.gz2011-06-23 21:13 2.0M 
[   ]pulseaudio-0.9.23.tar.gz.md52011-06-23 21:13 59  
[   ]pulseaudio-0.9.23.tar.gz.sha12011-06-23 21:13 67  
[   ]pulseaudio-0.99.1.tar.gz2011-08-02 21:59 2.2M 
[   ]pulseaudio-0.99.1.tar.gz.md52011-08-02 21:59 59  
[   ]pulseaudio-0.99.1.tar.gz.sha12011-08-02 21:59 67  
[   ]pulseaudio-0.99.2.tar.gz2011-08-16 10:19 2.2M 
[   ]pulseaudio-0.99.2.tar.gz.md52011-08-16 10:19 59  
[   ]pulseaudio-0.99.2.tar.gz.sha12011-08-16 10:19 67  
[   ]pulseaudio-0.99.3.tar.gz2011-08-29 17:11 2.2M 
[   ]pulseaudio-0.99.3.tar.gz.md52011-08-29 17:11 59  
[   ]pulseaudio-0.99.3.tar.gz.sha12011-08-29 17:11 67  
[   ]pulseaudio-0.99.4.tar.gz2011-09-15 11:04 2.2M 
[   ]pulseaudio-0.99.4.tar.gz.md52011-09-15 11:04 59  
[   ]pulseaudio-0.99.4.tar.gz.sha12011-09-15 11:04 67  
[   ]pulseaudio-1.0.tar.gz2011-09-27 08:54 2.1M 
[   ]pulseaudio-1.0.tar.gz.md52011-09-27 08:54 56  
[   ]pulseaudio-1.0.tar.gz.sha12011-09-27 08:54 64  
[   ]pulseaudio-1.0.tar.xz2011-09-27 08:54 1.2M 
[   ]pulseaudio-1.0.tar.xz.md52011-09-27 08:54 56  
[   ]pulseaudio-1.0.tar.xz.sha12011-09-27 08:54 64  
[   ]pulseaudio-1.1.tar.gz2011-10-20 13:25 2.1M 
[   ]pulseaudio-1.1.tar.gz.md52011-10-20 13:25 56  
[   ]pulseaudio-1.1.tar.gz.sha12011-10-20 13:25 64  
[   ]pulseaudio-1.1.tar.xz2011-10-20 13:25 1.2M 
[   ]pulseaudio-1.1.tar.xz.md52011-10-20 13:25 56  
[   ]pulseaudio-1.1.tar.xz.sha12011-10-20 13:25 64  
[   ]pulseaudio-1.99.1.tar.gz2012-03-15 12:50 2.2M 
[   ]pulseaudio-1.99.1.tar.gz.md52012-03-15 12:50 59  
[   ]pulseaudio-1.99.1.tar.gz.sha12012-03-15 12:50 67  
[   ]pulseaudio-1.99.1.tar.xz2012-03-15 12:50 1.3M 
[   ]pulseaudio-1.99.1.tar.xz.md52012-03-15 12:50 59  
[   ]pulseaudio-1.99.1.tar.xz.sha12012-03-15 12:50 67  
[   ]pulseaudio-2.0.tar.gz2012-05-11 13:48 2.2M 
[   ]pulseaudio-2.0.tar.gz.md52012-05-11 13:48 56  
[   ]pulseaudio-2.0.tar.gz.sha12012-05-11 13:48 64  
[   ]pulseaudio-2.0.tar.xz2012-05-11 13:48 1.3M 
[   ]pulseaudio-2.0.tar.xz.md52012-05-11 13:48 56  
[   ]pulseaudio-2.0.tar.xz.sha12012-05-11 13:48 64  
[   ]pulseaudio-2.1.tar.gz2012-07-19 12:09 2.2M 
[   ]pulseaudio-2.1.tar.gz.md52012-07-19 12:09 56  
[   ]pulseaudio-2.1.tar.gz.sha12012-07-19 12:09 64  
[   ]pulseaudio-2.1.tar.xz2012-07-19 12:09 1.3M 
[   ]pulseaudio-2.1.tar.xz.md52012-07-19 12:09 56  
[   ]pulseaudio-2.1.tar.xz.sha12012-07-19 12:09 64  
[   ]pulseaudio-2.99.1.tar.gz2012-11-03 11:44 2.3M 
[   ]pulseaudio-2.99.1.tar.gz.md52012-11-03 11:45 59  
[   ]pulseaudio-2.99.1.tar.gz.sha12012-11-03 11:45 67  
[   ]pulseaudio-2.99.1.tar.xz2012-11-03 11:44 1.3M 
[   ]pulseaudio-2.99.1.tar.xz.md52012-11-03 11:46 59  
[   ]pulseaudio-2.99.1.tar.xz.sha12012-11-03 11:46 67  
[   ]pulseaudio-2.99.2.tar.gz2012-11-17 08:21 2.3M 
[   ]pulseaudio-2.99.2.tar.gz.md52012-11-17 08:22 59  
[   ]pulseaudio-2.99.2.tar.gz.sha12012-11-17 08:22 67  
[   ]pulseaudio-2.99.2.tar.xz2012-11-17 08:21 1.3M 
[   ]pulseaudio-2.99.2.tar.xz.md52012-11-17 08:22 59  
[   ]pulseaudio-2.99.2.tar.xz.sha12012-11-17 08:22 67  
[   ]pulseaudio-2.99.3.tar.gz2012-12-07 04:07 2.3M 
[   ]pulseaudio-2.99.3.tar.gz.md52012-12-07 04:07 59  
[   ]pulseaudio-2.99.3.tar.gz.sha12012-12-07 04:07 67  
[   ]pulseaudio-2.99.3.tar.xz2012-12-07 04:07 1.3M 
[   ]pulseaudio-2.99.3.tar.xz.md52012-12-07 04:07 59  
[   ]pulseaudio-2.99.3.tar.xz.sha12012-12-07 04:07 67  
[   ]pulseaudio-3.0.tar.gz2012-12-18 07:22 2.3M 
[   ]pulseaudio-3.0.tar.gz.md52012-12-18 07:22 56  
[   ]pulseaudio-3.0.tar.gz.sha12012-12-18 07:22 64  
[   ]pulseaudio-3.0.tar.xz2012-12-18 07:22 1.3M 
[   ]pulseaudio-3.0.tar.xz.md52012-12-18 07:22 56  
[   ]pulseaudio-3.0.tar.xz.sha12012-12-18 07:22 64  
[   ]pulseaudio-3.99.1.tar.gz2013-04-16 04:10 2.3M 
[   ]pulseaudio-3.99.1.tar.gz.md52013-04-16 04:10 59  
[   ]pulseaudio-3.99.1.tar.gz.sha12013-04-16 04:10 67  
[   ]pulseaudio-3.99.1.tar.xz2013-04-16 04:10 1.3M 
[   ]pulseaudio-3.99.1.tar.xz.md52013-04-16 04:10 59  
[   ]pulseaudio-3.99.1.tar.xz.sha12013-04-16 04:10 67  
[   ]pulseaudio-3.99.2.tar.gz2013-05-23 03:26 2.3M 
[   ]pulseaudio-3.99.2.tar.gz.md52013-05-23 03:26 59  
[   ]pulseaudio-3.99.2.tar.gz.sha12013-05-23 03:26 67  
[   ]pulseaudio-3.99.2.tar.xz2013-05-23 03:26 1.3M 
[   ]pulseaudio-3.99.2.tar.xz.md52013-05-23 03:26 59  
[   ]pulseaudio-3.99.2.tar.xz.sha12013-05-23 03:26 67  
[   ]pulseaudio-4.0.tar.gz2013-06-03 18:52 2.3M 
[   ]pulseaudio-4.0.tar.gz.md52013-06-03 18:52 56  
[   ]pulseaudio-4.0.tar.gz.sha12013-06-03 18:52 64  
[   ]pulseaudio-4.0.tar.xz2013-06-03 18:52 1.3M 
[   ]pulseaudio-4.0.tar.xz.md52013-06-03 18:52 56  
[   ]pulseaudio-4.0.tar.xz.sha12013-06-03 18:52 64  
[   ]pulseaudio-4.99.2.tar.gz2014-01-23 19:10 2.4M 
[   ]pulseaudio-4.99.2.tar.gz.md52014-01-23 19:10 59  
[   ]pulseaudio-4.99.2.tar.gz.sha12014-01-23 19:10 67  
[   ]pulseaudio-4.99.2.tar.xz2014-01-23 19:10 1.4M 
[   ]pulseaudio-4.99.2.tar.xz.md52014-01-23 19:10 59  
[   ]pulseaudio-4.99.2.tar.xz.sha12014-01-23 19:10 67  
[   ]pulseaudio-4.99.3.tar.gz2014-01-29 20:16 2.4M 
[   ]pulseaudio-4.99.3.tar.gz.md52014-01-29 20:16 59  
[   ]pulseaudio-4.99.3.tar.gz.sha12014-01-29 20:16 67  
[   ]pulseaudio-4.99.3.tar.xz2014-01-29 20:16 1.4M 
[   ]pulseaudio-4.99.3.tar.xz.md52014-01-29 20:16 59  
[   ]pulseaudio-4.99.3.tar.xz.sha12014-01-29 20:16 67  
[   ]pulseaudio-4.99.4.tar.gz2014-02-15 06:04 2.5M 
[   ]pulseaudio-4.99.4.tar.gz.md52014-02-15 06:04 59  
[   ]pulseaudio-4.99.4.tar.gz.sha12014-02-15 06:04 67  
[   ]pulseaudio-4.99.4.tar.xz2014-02-15 06:04 1.4M 
[   ]pulseaudio-4.99.4.tar.xz.md52014-02-15 06:04 59  
[   ]pulseaudio-4.99.4.tar.xz.sha12014-02-15 06:04 67  
[   ]pulseaudio-5.0.tar.gz2014-03-03 15:00 2.4M 
[   ]pulseaudio-5.0.tar.gz.md52014-03-03 15:00 56  
[   ]pulseaudio-5.0.tar.gz.sha12014-03-03 15:00 64  
[   ]pulseaudio-5.0.tar.xz2014-03-03 15:00 1.4M 
[   ]pulseaudio-5.0.tar.xz.md52014-03-03 15:00 56  
[   ]pulseaudio-5.0.tar.xz.sha12014-03-03 15:00 64  
[   ]pulseaudio-5.99.1.tar.gz2014-11-21 14:26 2.5M 
[   ]pulseaudio-5.99.1.tar.gz.md52014-11-21 14:26 59  
[   ]pulseaudio-5.99.1.tar.gz.sha12014-11-21 14:26 67  
[   ]pulseaudio-5.99.1.tar.xz2014-11-21 14:27 1.4M 
[   ]pulseaudio-5.99.1.tar.xz.md52014-11-21 14:27 59  
[   ]pulseaudio-5.99.1.tar.xz.sha12014-11-21 14:27 67  
[   ]pulseaudio-5.99.2.tar.gz2014-12-19 13:08 2.5M 
[   ]pulseaudio-5.99.2.tar.gz.md52014-12-19 13:08 59  
[   ]pulseaudio-5.99.2.tar.gz.sha12014-12-19 13:08 67  
[   ]pulseaudio-5.99.2.tar.xz2014-12-19 13:08 1.4M 
[   ]pulseaudio-5.99.2.tar.xz.md52014-12-19 13:08 59  
[   ]pulseaudio-5.99.2.tar.xz.sha12014-12-19 13:08 67  
[   ]pulseaudio-5.99.3.tar.gz2015-01-21 14:45 2.5M 
[   ]pulseaudio-5.99.3.tar.gz.md52015-01-21 14:45 59  
[   ]pulseaudio-5.99.3.tar.gz.sha12015-01-21 14:45 67  
[   ]pulseaudio-5.99.3.tar.xz2015-01-21 14:45 1.4M 
[   ]pulseaudio-5.99.3.tar.xz.md52015-01-21 14:45 59  
[   ]pulseaudio-5.99.3.tar.xz.sha12015-01-21 14:45 67  
[   ]pulseaudio-6.0.tar.gz2015-02-12 19:02 2.5M 
[   ]pulseaudio-6.0.tar.gz.md52015-02-12 19:02 56  
[   ]pulseaudio-6.0.tar.gz.sha12015-02-12 19:02 64  
[   ]pulseaudio-6.0.tar.xz2015-02-12 19:02 1.4M 
[   ]pulseaudio-6.0.tar.xz.md52015-02-12 19:02 56  
[   ]pulseaudio-6.0.tar.xz.sha12015-02-12 19:02 64  
[   ]pulseaudio-6.99.1.tar.gz2015-08-27 17:56 2.6M 
[   ]pulseaudio-6.99.1.tar.gz.md52015-08-27 17:56 59  
[   ]pulseaudio-6.99.1.tar.gz.sha12015-08-27 17:56 67  
[   ]pulseaudio-6.99.1.tar.xz2015-08-27 17:56 1.4M 
[   ]pulseaudio-6.99.1.tar.xz.md52015-08-27 17:56 59  
[   ]pulseaudio-6.99.1.tar.xz.sha12015-08-27 17:56 67  
[   ]pulseaudio-6.99.2.tar.gz2015-09-12 13:56 2.6M 
[   ]pulseaudio-6.99.2.tar.gz.md52015-09-12 13:56 59  
[   ]pulseaudio-6.99.2.tar.gz.sha12015-09-12 13:56 67  
[   ]pulseaudio-6.99.2.tar.xz2015-09-12 13:56 1.4M 
[   ]pulseaudio-6.99.2.tar.xz.md52015-09-12 13:56 59  
[   ]pulseaudio-6.99.2.tar.xz.sha12015-09-12 13:56 67  
[   ]pulseaudio-7.0.tar.gz2015-09-24 03:31 2.6M 
[   ]pulseaudio-7.0.tar.gz.md5sum2015-09-24 03:31 56  
[   ]pulseaudio-7.0.tar.gz.sha1sum2015-09-24 03:31 64  
[   ]pulseaudio-7.0.tar.xz2015-09-24 03:31 1.4M 
[   ]pulseaudio-7.0.tar.xz.md52015-09-24 03:31 56  
[   ]pulseaudio-7.0.tar.xz.md5sum2015-09-24 03:31 56  
[   ]pulseaudio-7.0.tar.xz.sha12015-09-24 03:31 64  
[   ]pulseaudio-7.0.tar.xz.sha1sum2015-09-24 03:31 64  
[   ]pulseaudio-7.1.tar.gz2015-10-30 12:51 2.6M 
[   ]pulseaudio-7.1.tar.gz.md52015-10-30 12:51 56  
[   ]pulseaudio-7.1.tar.gz.sha12015-10-30 12:51 64  
[   ]pulseaudio-7.1.tar.xz2015-10-30 12:51 1.4M 
[   ]pulseaudio-7.1.tar.xz.md52015-10-30 12:51 56  
[   ]pulseaudio-7.1.tar.xz.sha12015-10-30 12:51 64  
[   ]pulseaudio-7.99.1.tar.gz2015-12-28 12:38 2.6M 
[   ]pulseaudio-7.99.1.tar.gz.md52015-12-28 12:38 59  
[   ]pulseaudio-7.99.1.tar.gz.sha12015-12-28 12:38 67  
[   ]pulseaudio-7.99.1.tar.xz2015-12-28 12:39 1.4M 
[   ]pulseaudio-7.99.1.tar.xz.md52015-12-28 12:39 59  
[   ]pulseaudio-7.99.1.tar.xz.sha12015-12-28 12:39 67  
[   ]pulseaudio-7.99.2.tar.gz2016-01-12 03:28 2.6M 
[   ]pulseaudio-7.99.2.tar.gz.md52016-01-12 03:28 59  
[   ]pulseaudio-7.99.2.tar.gz.sha12016-01-12 03:28 67  
[   ]pulseaudio-7.99.2.tar.xz2016-01-12 03:28 1.4M 
[   ]pulseaudio-7.99.2.tar.xz.md52016-01-12 03:28 59  
[   ]pulseaudio-7.99.2.tar.xz.sha12016-01-12 03:28 67  
[   ]pulseaudio-8.0.tar.gz2016-01-22 07:38 2.6M 
[   ]pulseaudio-8.0.tar.gz.md52016-01-22 07:38 56  
[   ]pulseaudio-8.0.tar.gz.sha12016-01-22 07:38 64  
[   ]pulseaudio-8.0.tar.xz2016-01-22 07:38 1.4M 
[   ]pulseaudio-8.0.tar.xz.md52016-01-22 07:38 56  
[   ]pulseaudio-8.0.tar.xz.sha12016-01-22 07:38 64  
[   ]pulseaudio-8.99.1.tar.gz2016-05-12 10:58 2.6M 
[   ]pulseaudio-8.99.1.tar.gz.md52016-05-12 10:58 59  
[   ]pulseaudio-8.99.1.tar.gz.sha12016-05-12 10:58 67  
[   ]pulseaudio-8.99.1.tar.xz2016-05-12 10:58 1.5M 
[   ]pulseaudio-8.99.1.tar.xz.md52016-05-12 10:58 59  
[   ]pulseaudio-8.99.1.tar.xz.sha12016-05-12 10:58 67  
[   ]pulseaudio-8.99.2.tar.gz2016-05-29 06:08 2.6M 
[   ]pulseaudio-8.99.2.tar.gz.md52016-05-29 06:08 59  
[   ]pulseaudio-8.99.2.tar.gz.sha12016-05-29 06:08 67  
[   ]pulseaudio-8.99.2.tar.xz2016-05-29 06:08 1.5M 
[   ]pulseaudio-8.99.2.tar.xz.md52016-05-29 06:08 59  
[   ]pulseaudio-8.99.2.tar.xz.sha12016-05-29 06:08 67  
[   ]pulseaudio-9.0.tar.gz2016-06-22 07:09 2.6M 
[   ]pulseaudio-9.0.tar.gz.md52016-06-22 07:09 56  
[   ]pulseaudio-9.0.tar.gz.sha12016-06-22 07:09 64  
[   ]pulseaudio-9.0.tar.xz2016-06-22 07:09 1.5M 
[   ]pulseaudio-9.0.tar.xz.md52016-06-22 07:09 56  
[   ]pulseaudio-9.0.tar.xz.sha12016-06-22 07:09 64  
[   ]pulseaudio-9.99.1.tar.gz2017-01-03 16:14 2.7M 
[   ]pulseaudio-9.99.1.tar.gz.md52017-01-03 16:14 59  
[   ]pulseaudio-9.99.1.tar.gz.sha12017-01-03 16:14 67  
[   ]pulseaudio-9.99.1.tar.xz2017-01-03 16:14 1.5M 
[   ]pulseaudio-9.99.1.tar.xz.md52017-01-03 16:14 59  
[   ]pulseaudio-9.99.1.tar.xz.sha12017-01-03 16:14 67  
[   ]pulseaudio-10.0.tar.gz2017-01-19 00:12 2.7M 
[   ]pulseaudio-10.0.tar.gz.md52017-01-19 00:12 57  
[   ]pulseaudio-10.0.tar.gz.sha12017-01-19 00:12 65  
[   ]pulseaudio-10.0.tar.xz2017-01-19 00:12 1.5M 
[   ]pulseaudio-10.0.tar.xz.md52017-01-19 00:12 57  
[   ]pulseaudio-10.0.tar.xz.sha12017-01-19 00:12 65  
[   ]pulseaudio-10.99.1.tar.gz2017-07-24 23:52 2.8M 
[   ]pulseaudio-10.99.1.tar.gz.md52017-07-24 23:52 60  
[   ]pulseaudio-10.99.1.tar.gz.sha12017-07-24 23:52 68  
[   ]pulseaudio-10.99.1.tar.xz2017-07-24 23:52 1.6M 
[   ]pulseaudio-10.99.1.tar.xz.md52017-07-24 23:52 60  
[   ]pulseaudio-10.99.1.tar.xz.sha12017-07-24 23:52 68  
[   ]pulseaudio-11.0.tar.gz2017-09-05 09:49 2.8M 
[   ]pulseaudio-11.0.tar.gz.md52017-09-05 09:49 57  
[   ]pulseaudio-11.0.tar.gz.sha12017-09-05 09:49 65  
[   ]pulseaudio-11.0.tar.xz2017-09-05 09:49 1.6M 
[   ]pulseaudio-11.0.tar.xz.md52017-09-05 09:49 57  
[   ]pulseaudio-11.0.tar.xz.sha12017-09-05 09:49 65  
[   ]pulseaudio-11.1.tar.gz2017-09-18 15:23 2.8M 
[   ]pulseaudio-11.1.tar.gz.md52017-09-18 15:23 57  
[   ]pulseaudio-11.1.tar.gz.sha12017-09-18 15:23 65  
[   ]pulseaudio-11.1.tar.xz2017-09-18 15:23 1.6M 
[   ]pulseaudio-11.1.tar.xz.md52017-09-18 15:23 57  
[   ]pulseaudio-11.1.tar.xz.sha12017-09-18 15:23 65  
[   ]pulseaudio-11.99.1.tar.gz2018-05-13 06:57 2.8M 
[   ]pulseaudio-11.99.1.tar.gz.md52018-05-13 06:57 60  
[   ]pulseaudio-11.99.1.tar.gz.sha12018-05-13 06:57 68  
[   ]pulseaudio-11.99.1.tar.xz2018-05-13 06:57 1.6M 
[   ]pulseaudio-11.99.1.tar.xz.md52018-05-13 06:57 60  
[   ]pulseaudio-11.99.1.tar.xz.sha12018-05-13 06:57 68  
[   ]pulseaudio-12.0.tar.gz2018-06-20 20:33 2.8M 
[   ]pulseaudio-12.0.tar.gz.md52018-06-20 20:33 57  
[   ]pulseaudio-12.0.tar.gz.sha12018-06-20 20:33 65  
[   ]pulseaudio-12.0.tar.xz2018-06-20 20:33 1.6M 
[   ]pulseaudio-12.0.tar.xz.md52018-06-20 20:33 57  
[   ]pulseaudio-12.0.tar.xz.sha12018-06-20 20:33 65  
[   ]pulseaudio-12.1.tar.gz2018-07-14 16:43 2.8M 
[   ]pulseaudio-12.1.tar.gz.md52018-07-14 16:43 57  
[   ]pulseaudio-12.1.tar.gz.sha12018-07-14 16:43 65  
[   ]pulseaudio-12.1.tar.xz2018-07-14 16:43 1.6M 
[   ]pulseaudio-12.1.tar.xz.md52018-07-14 16:43 57  
[   ]pulseaudio-12.1.tar.xz.sha12018-07-14 16:43 65  
[   ]pulseaudio-12.2.tar.gz2018-07-16 16:12 2.8M 
[   ]pulseaudio-12.2.tar.gz.sha2562018-07-16 16:13 89  
[   ]pulseaudio-12.2.tar.xz2018-07-16 16:12 1.6M 
[   ]pulseaudio-12.2.tar.xz.sha2562018-07-16 16:13 89  
[   ]pulseaudio-12.99.1.tar.gz2019-07-09 03:16 3.6M 
[   ]pulseaudio-12.99.1.tar.gz.sha2562019-07-09 03:16 92  
[   ]pulseaudio-12.99.1.tar.xz2019-07-09 03:16 1.8M 
[   ]pulseaudio-12.99.1.tar.xz.sha2562019-07-09 03:16 92  
[   ]pulseaudio-12.99.2.tar.gz2019-08-06 17:47 3.6M 
[   ]pulseaudio-12.99.2.tar.gz.sha2562019-08-06 17:47 92  
[   ]pulseaudio-12.99.2.tar.xz2019-08-06 17:47 1.8M 
[   ]pulseaudio-12.99.2.tar.xz.sha2562019-08-06 17:47 92  
[   ]pulseaudio-12.99.3.tar.gz2019-09-01 07:44 3.6M 
[   ]pulseaudio-12.99.3.tar.gz.sha2562019-09-01 07:44 92  
[   ]pulseaudio-12.99.3.tar.xz2019-09-01 07:44 1.9M 
[   ]pulseaudio-12.99.3.tar.xz.sha2562019-09-01 07:44 92  
[   ]pulseaudio-13.0.tar.gz2019-09-13 13:34 3.6M 
[   ]pulseaudio-13.0.tar.gz.sha2562019-09-13 13:34 89  
[   ]pulseaudio-13.0.tar.xz2019-09-13 13:34 1.8M 
[   ]pulseaudio-13.0.tar.xz.sha2562019-09-13 13:34 89  

+
Apache/2.4.38 (Debian) Server at freedesktop.org Port 443
+ diff --git a/poky/bitbake/lib/bb/tests/fetch.py b/poky/bitbake/lib/bb/tests/fetch.py index 83fad3ff0..d0c161a7f 100644 --- a/poky/bitbake/lib/bb/tests/fetch.py +++ b/poky/bitbake/lib/bb/tests/fetch.py @@ -9,12 +9,12 @@ import unittest import hashlib import tempfile -import subprocess import collections import os from bb.fetch2 import URI from bb.fetch2 import FetchMethod import bb +from bb.tests.support.httpserver import HTTPService def skipIfNoNetwork(): if os.environ.get("BB_SKIP_NETTESTS") == "yes": @@ -1180,27 +1180,46 @@ class FetchLatestVersionTest(FetcherTest): } test_wget_uris = { + # # packages with versions inside directory name - ("util-linux", "http://kernel.org/pub/linux/utils/util-linux/v2.23/util-linux-2.24.2.tar.bz2", "", "") + # + # http://kernel.org/pub/linux/utils/util-linux/v2.23/util-linux-2.24.2.tar.bz2 + ("util-linux", "/pub/linux/utils/util-linux/v2.23/util-linux-2.24.2.tar.bz2", "", "") : "2.24.2", - ("enchant", "http://www.abisource.com/downloads/enchant/1.6.0/enchant-1.6.0.tar.gz", "", "") + # http://www.abisource.com/downloads/enchant/1.6.0/enchant-1.6.0.tar.gz + ("enchant", "/downloads/enchant/1.6.0/enchant-1.6.0.tar.gz", "", "") : "1.6.0", - ("cmake", "http://www.cmake.org/files/v2.8/cmake-2.8.12.1.tar.gz", "", "") + # http://www.cmake.org/files/v2.8/cmake-2.8.12.1.tar.gz + ("cmake", "/files/v2.8/cmake-2.8.12.1.tar.gz", "", "") : "2.8.12.1", + # # packages with versions only in current directory - ("eglic", "http://downloads.yoctoproject.org/releases/eglibc/eglibc-2.18-svnr23787.tar.bz2", "", "") + # + # http://downloads.yoctoproject.org/releases/eglibc/eglibc-2.18-svnr23787.tar.bz2 + ("eglic", "/releases/eglibc/eglibc-2.18-svnr23787.tar.bz2", "", "") : "2.19", - ("gnu-config", "http://downloads.yoctoproject.org/releases/gnu-config/gnu-config-20120814.tar.bz2", "", "") + # http://downloads.yoctoproject.org/releases/gnu-config/gnu-config-20120814.tar.bz2 + ("gnu-config", "/releases/gnu-config/gnu-config-20120814.tar.bz2", "", "") : "20120814", + # # packages with "99" in the name of possible version - ("pulseaudio", "http://freedesktop.org/software/pulseaudio/releases/pulseaudio-4.0.tar.xz", "", "") + # + # http://freedesktop.org/software/pulseaudio/releases/pulseaudio-4.0.tar.xz + ("pulseaudio", "/software/pulseaudio/releases/pulseaudio-4.0.tar.xz", "", "") : "5.0", - ("xserver-xorg", "http://xorg.freedesktop.org/releases/individual/xserver/xorg-server-1.15.1.tar.bz2", "", "") + # http://xorg.freedesktop.org/releases/individual/xserver/xorg-server-1.15.1.tar.bz2 + ("xserver-xorg", "/releases/individual/xserver/xorg-server-1.15.1.tar.bz2", "", "") : "1.15.1", + # # packages with valid UPSTREAM_CHECK_URI and UPSTREAM_CHECK_REGEX - ("cups", "http://www.cups.org/software/1.7.2/cups-1.7.2-source.tar.bz2", "https://github.com/apple/cups/releases", "(?Pcups\-)(?P((\d+[\.\-_]*)+))\-source\.tar\.gz") + # + # http://www.cups.org/software/1.7.2/cups-1.7.2-source.tar.bz2 + # https://github.com/apple/cups/releases + ("cups", "/software/1.7.2/cups-1.7.2-source.tar.bz2", "/apple/cups/releases", "(?Pcups\-)(?P((\d+[\.\-_]*)+))\-source\.tar\.gz") : "2.0.0", - ("db", "http://download.oracle.com/berkeley-db/db-5.3.21.tar.gz", "http://ftp.debian.org/debian/pool/main/d/db5.3/", "(?Pdb5\.3_)(?P\d+(\.\d+)+).+\.orig\.tar\.xz") + # http://download.oracle.com/berkeley-db/db-5.3.21.tar.gz + # http://ftp.debian.org/debian/pool/main/d/db5.3/ + ("db", "/berkeley-db/db-5.3.21.tar.gz", "/debian/pool/main/d/db5.3/", "(?Pdb5\.3_)(?P\d+(\.\d+)+).+\.orig\.tar\.xz") : "5.3.10", } @@ -1217,18 +1236,28 @@ class FetchLatestVersionTest(FetcherTest): r = bb.utils.vercmp_string(v, verstring) self.assertTrue(r == -1 or r == 0, msg="Package %s, version: %s <= %s" % (k[0], v, verstring)) - @skipIfNoNetwork() def test_wget_latest_versionstring(self): - for k, v in self.test_wget_uris.items(): - self.d.setVar("PN", k[0]) - self.d.setVar("UPSTREAM_CHECK_URI", k[2]) - self.d.setVar("UPSTREAM_CHECK_REGEX", k[3]) - ud = bb.fetch2.FetchData(k[1], self.d) - pupver = ud.method.latest_versionstring(ud, self.d) - verstring = pupver[0] - self.assertTrue(verstring, msg="Could not find upstream version for %s" % k[0]) - r = bb.utils.vercmp_string(v, verstring) - self.assertTrue(r == -1 or r == 0, msg="Package %s, version: %s <= %s" % (k[0], v, verstring)) + testdata = os.path.dirname(os.path.abspath(__file__)) + "/fetch-testdata" + server = HTTPService(testdata) + server.start() + port = server.port + try: + for k, v in self.test_wget_uris.items(): + self.d.setVar("PN", k[0]) + checkuri = "" + if k[2]: + checkuri = "http://localhost:%s/" % port + k[2] + self.d.setVar("UPSTREAM_CHECK_URI", checkuri) + self.d.setVar("UPSTREAM_CHECK_REGEX", k[3]) + url = "http://localhost:%s/" % port + k[1] + ud = bb.fetch2.FetchData(url, self.d) + pupver = ud.method.latest_versionstring(ud, self.d) + verstring = pupver[0] + self.assertTrue(verstring, msg="Could not find upstream version for %s" % k[0]) + r = bb.utils.vercmp_string(v, verstring) + self.assertTrue(r == -1 or r == 0, msg="Package %s, version: %s <= %s" % (k[0], v, verstring)) + finally: + server.stop() class FetchCheckStatusTest(FetcherTest): @@ -1662,6 +1691,47 @@ class GitShallowTest(FetcherTest): # Verify the submodule is also shallow self.assertRevCount(1, cwd=os.path.join(self.gitdir, 'gitsubmodule')) + def test_shallow_submodule_mirrors(self): + self.add_empty_file('a') + self.add_empty_file('b') + + smdir = os.path.join(self.tempdir, 'gitsubmodule') + bb.utils.mkdirhier(smdir) + self.git('init', cwd=smdir) + # Make this look like it was cloned from a remote... + self.git('config --add remote.origin.url "%s"' % smdir, cwd=smdir) + self.git('config --add remote.origin.fetch "+refs/heads/*:refs/remotes/origin/*"', cwd=smdir) + self.add_empty_file('asub', cwd=smdir) + self.add_empty_file('bsub', cwd=smdir) + + self.git('submodule init', cwd=self.srcdir) + self.git('submodule add file://%s' % smdir, cwd=self.srcdir) + self.git('submodule update', cwd=self.srcdir) + self.git('commit -m submodule -a', cwd=self.srcdir) + + uri = 'gitsm://%s;protocol=file;subdir=${S}' % self.srcdir + + # Fetch once to generate the shallow tarball + fetcher, ud = self.fetch(uri) + + # Set up the mirror + mirrordir = os.path.join(self.tempdir, 'mirror') + os.rename(self.dldir, mirrordir) + self.d.setVar('PREMIRRORS', 'gitsm://.*/.* file://%s/\n' % mirrordir) + + # Fetch from the mirror + bb.utils.remove(self.dldir, recurse=True) + bb.utils.remove(self.gitdir, recurse=True) + self.fetch_and_unpack(uri) + + # Verify the main repository is shallow + self.assertRevCount(1) + + # Verify the gitsubmodule directory is present + assert os.listdir(os.path.join(self.gitdir, 'gitsubmodule')) + + # Verify the submodule is also shallow + self.assertRevCount(1, cwd=os.path.join(self.gitdir, 'gitsubmodule')) if any(os.path.exists(os.path.join(p, 'git-annex')) for p in os.environ.get('PATH').split(':')): def test_shallow_annex(self): @@ -2008,3 +2078,437 @@ class GitLfsTest(FetcherTest): ud.method._find_git_lfs = lambda d: False shutil.rmtree(self.gitdir, ignore_errors=True) fetcher.unpack(self.d.getVar('WORKDIR')) + +class NPMTest(FetcherTest): + def skipIfNoNpm(): + import shutil + if not shutil.which('npm'): + return unittest.skip('npm not installed, tests being skipped') + return lambda f: f + + @skipIfNoNpm() + @skipIfNoNetwork() + def test_npm(self): + url = 'npm://registry.npmjs.org;package=@savoirfairelinux/node-server-example;version=1.0.0' + fetcher = bb.fetch.Fetch([url], self.d) + ud = fetcher.ud[fetcher.urls[0]] + fetcher.download() + self.assertTrue(os.path.exists(ud.localpath)) + self.assertTrue(os.path.exists(ud.localpath + '.done')) + self.assertTrue(os.path.exists(ud.resolvefile)) + fetcher.unpack(self.unpackdir) + unpackdir = os.path.join(self.unpackdir, 'npm') + self.assertTrue(os.path.exists(os.path.join(unpackdir, 'package.json'))) + + @skipIfNoNpm() + @skipIfNoNetwork() + def test_npm_bad_checksum(self): + url = 'npm://registry.npmjs.org;package=@savoirfairelinux/node-server-example;version=1.0.0' + # Fetch once to get a tarball + fetcher = bb.fetch.Fetch([url], self.d) + ud = fetcher.ud[fetcher.urls[0]] + fetcher.download() + self.assertTrue(os.path.exists(ud.localpath)) + # Modify the tarball + bad = b'bad checksum' + with open(ud.localpath, 'wb') as f: + f.write(bad) + # Verify that the tarball is fetched again + fetcher.download() + badsum = hashlib.sha512(bad).hexdigest() + self.assertTrue(os.path.exists(ud.localpath + '_bad-checksum_' + badsum)) + self.assertTrue(os.path.exists(ud.localpath)) + + @skipIfNoNpm() + @skipIfNoNetwork() + def test_npm_premirrors(self): + url = 'npm://registry.npmjs.org;package=@savoirfairelinux/node-server-example;version=1.0.0' + # Fetch once to get a tarball + fetcher = bb.fetch.Fetch([url], self.d) + ud = fetcher.ud[fetcher.urls[0]] + fetcher.download() + self.assertTrue(os.path.exists(ud.localpath)) + # Setup the mirror + mirrordir = os.path.join(self.tempdir, 'mirror') + bb.utils.mkdirhier(mirrordir) + os.replace(ud.localpath, os.path.join(mirrordir, os.path.basename(ud.localpath))) + self.d.setVar('PREMIRRORS', 'https?$://.*/.* file://%s/\n' % mirrordir) + self.d.setVar('BB_FETCH_PREMIRRORONLY', '1') + # Fetch again + self.assertFalse(os.path.exists(ud.localpath)) + fetcher.download() + self.assertTrue(os.path.exists(ud.localpath)) + + @skipIfNoNpm() + @skipIfNoNetwork() + def test_npm_mirrors(self): + # Fetch once to get a tarball + url = 'npm://registry.npmjs.org;package=@savoirfairelinux/node-server-example;version=1.0.0' + fetcher = bb.fetch.Fetch([url], self.d) + ud = fetcher.ud[fetcher.urls[0]] + fetcher.download() + self.assertTrue(os.path.exists(ud.localpath)) + # Setup the mirror + mirrordir = os.path.join(self.tempdir, 'mirror') + bb.utils.mkdirhier(mirrordir) + os.replace(ud.localpath, os.path.join(mirrordir, os.path.basename(ud.localpath))) + self.d.setVar('MIRRORS', 'https?$://.*/.* file://%s/\n' % mirrordir) + # Update the resolved url to an invalid url + with open(ud.resolvefile, 'r') as f: + url = f.read() + uri = URI(url) + uri.path = '/invalid' + with open(ud.resolvefile, 'w') as f: + f.write(str(uri)) + # Fetch again + self.assertFalse(os.path.exists(ud.localpath)) + fetcher.download() + self.assertTrue(os.path.exists(ud.localpath)) + + @skipIfNoNpm() + @skipIfNoNetwork() + def test_npm_destsuffix_downloadfilename(self): + url = 'npm://registry.npmjs.org;package=@savoirfairelinux/node-server-example;version=1.0.0;destsuffix=foo/bar;downloadfilename=foo-bar.tgz' + fetcher = bb.fetch.Fetch([url], self.d) + fetcher.download() + self.assertTrue(os.path.exists(os.path.join(self.dldir, 'foo-bar.tgz'))) + fetcher.unpack(self.unpackdir) + unpackdir = os.path.join(self.unpackdir, 'foo', 'bar') + self.assertTrue(os.path.exists(os.path.join(unpackdir, 'package.json'))) + + def test_npm_no_network_no_tarball(self): + url = 'npm://registry.npmjs.org;package=@savoirfairelinux/node-server-example;version=1.0.0' + self.d.setVar('BB_NO_NETWORK', '1') + fetcher = bb.fetch.Fetch([url], self.d) + with self.assertRaises(bb.fetch2.NetworkAccess): + fetcher.download() + + @skipIfNoNpm() + @skipIfNoNetwork() + def test_npm_no_network_with_tarball(self): + url = 'npm://registry.npmjs.org;package=@savoirfairelinux/node-server-example;version=1.0.0' + # Fetch once to get a tarball + fetcher = bb.fetch.Fetch([url], self.d) + fetcher.download() + # Disable network access + self.d.setVar('BB_NO_NETWORK', '1') + # Fetch again + fetcher.download() + fetcher.unpack(self.unpackdir) + unpackdir = os.path.join(self.unpackdir, 'npm') + self.assertTrue(os.path.exists(os.path.join(unpackdir, 'package.json'))) + + @skipIfNoNpm() + @skipIfNoNetwork() + def test_npm_registry_alternate(self): + url = 'npm://registry.freajs.org;package=@savoirfairelinux/node-server-example;version=1.0.0' + fetcher = bb.fetch.Fetch([url], self.d) + fetcher.download() + fetcher.unpack(self.unpackdir) + unpackdir = os.path.join(self.unpackdir, 'npm') + self.assertTrue(os.path.exists(os.path.join(unpackdir, 'package.json'))) + + @skipIfNoNpm() + @skipIfNoNetwork() + def test_npm_version_latest(self): + url = 'npm://registry.npmjs.org;package=@savoirfairelinux/node-server-example;version=latest' + fetcher = bb.fetch.Fetch([url], self.d) + fetcher.download() + fetcher.unpack(self.unpackdir) + unpackdir = os.path.join(self.unpackdir, 'npm') + self.assertTrue(os.path.exists(os.path.join(unpackdir, 'package.json'))) + + @skipIfNoNpm() + @skipIfNoNetwork() + def test_npm_registry_invalid(self): + url = 'npm://registry.invalid.org;package=@savoirfairelinux/node-server-example;version=1.0.0' + fetcher = bb.fetch.Fetch([url], self.d) + with self.assertRaises(bb.fetch2.FetchError): + fetcher.download() + + @skipIfNoNpm() + @skipIfNoNetwork() + def test_npm_package_invalid(self): + url = 'npm://registry.npmjs.org;package=@savoirfairelinux/invalid;version=1.0.0' + fetcher = bb.fetch.Fetch([url], self.d) + with self.assertRaises(bb.fetch2.FetchError): + fetcher.download() + + @skipIfNoNpm() + @skipIfNoNetwork() + def test_npm_version_invalid(self): + url = 'npm://registry.npmjs.org;package=@savoirfairelinux/node-server-example;version=invalid' + with self.assertRaises(bb.fetch2.ParameterError): + fetcher = bb.fetch.Fetch([url], self.d) + + @skipIfNoNpm() + @skipIfNoNetwork() + def test_npm_registry_none(self): + url = 'npm://;package=@savoirfairelinux/node-server-example;version=1.0.0' + with self.assertRaises(bb.fetch2.MalformedUrl): + fetcher = bb.fetch.Fetch([url], self.d) + + @skipIfNoNpm() + @skipIfNoNetwork() + def test_npm_package_none(self): + url = 'npm://registry.npmjs.org;version=1.0.0' + with self.assertRaises(bb.fetch2.MissingParameterError): + fetcher = bb.fetch.Fetch([url], self.d) + + @skipIfNoNpm() + @skipIfNoNetwork() + def test_npm_version_none(self): + url = 'npm://registry.npmjs.org;package=@savoirfairelinux/node-server-example' + with self.assertRaises(bb.fetch2.MissingParameterError): + fetcher = bb.fetch.Fetch([url], self.d) + + def create_shrinkwrap_file(self, data): + import json + datadir = os.path.join(self.tempdir, 'data') + swfile = os.path.join(datadir, 'npm-shrinkwrap.json') + bb.utils.mkdirhier(datadir) + with open(swfile, 'w') as f: + json.dump(data, f) + # Also configure the S directory + self.sdir = os.path.join(self.unpackdir, 'S') + self.d.setVar('S', self.sdir) + return swfile + + @skipIfNoNpm() + @skipIfNoNetwork() + def test_npmsw(self): + swfile = self.create_shrinkwrap_file({ + 'dependencies': { + 'array-flatten': { + 'version': '1.1.1', + 'resolved': 'https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz', + 'integrity': 'sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=', + 'dependencies': { + 'content-type': { + 'version': 'https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz', + 'integrity': 'sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==', + 'dependencies': { + 'cookie': { + 'version': 'git+https://github.com/jshttp/cookie.git#aec1177c7da67e3b3273df96cf476824dbc9ae09', + 'from': 'git+https://github.com/jshttp/cookie.git' + } + } + } + } + } + } + }) + fetcher = bb.fetch.Fetch(['npmsw://' + swfile], self.d) + fetcher.download() + self.assertTrue(os.path.exists(os.path.join(self.dldir, 'npm2', 'array-flatten-1.1.1.tgz'))) + self.assertTrue(os.path.exists(os.path.join(self.dldir, 'npm2', 'content-type-1.0.4.tgz'))) + self.assertTrue(os.path.exists(os.path.join(self.dldir, 'git2', 'github.com.jshttp.cookie.git'))) + fetcher.unpack(self.unpackdir) + self.assertTrue(os.path.exists(os.path.join(self.sdir, 'npm-shrinkwrap.json'))) + self.assertTrue(os.path.exists(os.path.join(self.sdir, 'node_modules', 'array-flatten', 'package.json'))) + self.assertTrue(os.path.exists(os.path.join(self.sdir, 'node_modules', 'array-flatten', 'node_modules', 'content-type', 'package.json'))) + self.assertTrue(os.path.exists(os.path.join(self.sdir, 'node_modules', 'array-flatten', 'node_modules', 'content-type', 'node_modules', 'cookie', 'package.json'))) + + @skipIfNoNpm() + @skipIfNoNetwork() + def test_npmsw_dev(self): + swfile = self.create_shrinkwrap_file({ + 'dependencies': { + 'array-flatten': { + 'version': '1.1.1', + 'resolved': 'https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz', + 'integrity': 'sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=' + }, + 'content-type': { + 'version': '1.0.4', + 'resolved': 'https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz', + 'integrity': 'sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==', + 'dev': True + } + } + }) + # Fetch with dev disabled + fetcher = bb.fetch.Fetch(['npmsw://' + swfile], self.d) + fetcher.download() + self.assertTrue(os.path.exists(os.path.join(self.dldir, 'npm2', 'array-flatten-1.1.1.tgz'))) + self.assertFalse(os.path.exists(os.path.join(self.dldir, 'npm2', 'content-type-1.0.4.tgz'))) + # Fetch with dev enabled + fetcher = bb.fetch.Fetch(['npmsw://' + swfile + ';dev=1'], self.d) + fetcher.download() + self.assertTrue(os.path.exists(os.path.join(self.dldir, 'npm2', 'array-flatten-1.1.1.tgz'))) + self.assertTrue(os.path.exists(os.path.join(self.dldir, 'npm2', 'content-type-1.0.4.tgz'))) + + @skipIfNoNpm() + @skipIfNoNetwork() + def test_npmsw_destsuffix(self): + swfile = self.create_shrinkwrap_file({ + 'dependencies': { + 'array-flatten': { + 'version': '1.1.1', + 'resolved': 'https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz', + 'integrity': 'sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=' + } + } + }) + fetcher = bb.fetch.Fetch(['npmsw://' + swfile + ';destsuffix=foo/bar'], self.d) + fetcher.download() + fetcher.unpack(self.unpackdir) + self.assertTrue(os.path.exists(os.path.join(self.unpackdir, 'foo', 'bar', 'node_modules', 'array-flatten', 'package.json'))) + + def test_npmsw_no_network_no_tarball(self): + swfile = self.create_shrinkwrap_file({ + 'dependencies': { + 'array-flatten': { + 'version': '1.1.1', + 'resolved': 'https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz', + 'integrity': 'sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=' + } + } + }) + self.d.setVar('BB_NO_NETWORK', '1') + fetcher = bb.fetch.Fetch(['npmsw://' + swfile], self.d) + with self.assertRaises(bb.fetch2.NetworkAccess): + fetcher.download() + + @skipIfNoNpm() + @skipIfNoNetwork() + def test_npmsw_no_network_with_tarball(self): + # Fetch once to get a tarball + fetcher = bb.fetch.Fetch(['npm://registry.npmjs.org;package=array-flatten;version=1.1.1'], self.d) + fetcher.download() + # Disable network access + self.d.setVar('BB_NO_NETWORK', '1') + # Fetch again + swfile = self.create_shrinkwrap_file({ + 'dependencies': { + 'array-flatten': { + 'version': '1.1.1', + 'resolved': 'https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz', + 'integrity': 'sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=' + } + } + }) + fetcher = bb.fetch.Fetch(['npmsw://' + swfile], self.d) + fetcher.download() + fetcher.unpack(self.unpackdir) + self.assertTrue(os.path.exists(os.path.join(self.sdir, 'node_modules', 'array-flatten', 'package.json'))) + + @skipIfNoNpm() + @skipIfNoNetwork() + def test_npmsw_npm_reusability(self): + # Fetch once with npmsw + swfile = self.create_shrinkwrap_file({ + 'dependencies': { + 'array-flatten': { + 'version': '1.1.1', + 'resolved': 'https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz', + 'integrity': 'sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=' + } + } + }) + fetcher = bb.fetch.Fetch(['npmsw://' + swfile], self.d) + fetcher.download() + # Disable network access + self.d.setVar('BB_NO_NETWORK', '1') + # Fetch again with npm + fetcher = bb.fetch.Fetch(['npm://registry.npmjs.org;package=array-flatten;version=1.1.1'], self.d) + fetcher.download() + fetcher.unpack(self.unpackdir) + self.assertTrue(os.path.exists(os.path.join(self.unpackdir, 'npm', 'package.json'))) + + @skipIfNoNpm() + @skipIfNoNetwork() + def test_npmsw_bad_checksum(self): + # Try to fetch with bad checksum + swfile = self.create_shrinkwrap_file({ + 'dependencies': { + 'array-flatten': { + 'version': '1.1.1', + 'resolved': 'https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz', + 'integrity': 'sha1-gfNEp2hqgLTFKT6P3AsBYMgsBqg=' + } + } + }) + fetcher = bb.fetch.Fetch(['npmsw://' + swfile], self.d) + with self.assertRaises(bb.fetch2.FetchError): + fetcher.download() + # Fetch correctly to get a tarball + swfile = self.create_shrinkwrap_file({ + 'dependencies': { + 'array-flatten': { + 'version': '1.1.1', + 'resolved': 'https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz', + 'integrity': 'sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=' + } + } + }) + fetcher = bb.fetch.Fetch(['npmsw://' + swfile], self.d) + fetcher.download() + localpath = os.path.join(self.dldir, 'npm2', 'array-flatten-1.1.1.tgz') + self.assertTrue(os.path.exists(localpath)) + # Modify the tarball + bad = b'bad checksum' + with open(localpath, 'wb') as f: + f.write(bad) + # Verify that the tarball is fetched again + fetcher.download() + badsum = hashlib.sha1(bad).hexdigest() + self.assertTrue(os.path.exists(localpath + '_bad-checksum_' + badsum)) + self.assertTrue(os.path.exists(localpath)) + + @skipIfNoNpm() + @skipIfNoNetwork() + def test_npmsw_premirrors(self): + # Fetch once to get a tarball + fetcher = bb.fetch.Fetch(['npm://registry.npmjs.org;package=array-flatten;version=1.1.1'], self.d) + ud = fetcher.ud[fetcher.urls[0]] + fetcher.download() + self.assertTrue(os.path.exists(ud.localpath)) + # Setup the mirror + mirrordir = os.path.join(self.tempdir, 'mirror') + bb.utils.mkdirhier(mirrordir) + os.replace(ud.localpath, os.path.join(mirrordir, os.path.basename(ud.localpath))) + self.d.setVar('PREMIRRORS', 'https?$://.*/.* file://%s/\n' % mirrordir) + self.d.setVar('BB_FETCH_PREMIRRORONLY', '1') + # Fetch again + self.assertFalse(os.path.exists(ud.localpath)) + swfile = self.create_shrinkwrap_file({ + 'dependencies': { + 'array-flatten': { + 'version': '1.1.1', + 'resolved': 'https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz', + 'integrity': 'sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=' + } + } + }) + fetcher = bb.fetch.Fetch(['npmsw://' + swfile], self.d) + fetcher.download() + self.assertTrue(os.path.exists(ud.localpath)) + + @skipIfNoNpm() + @skipIfNoNetwork() + def test_npmsw_mirrors(self): + # Fetch once to get a tarball + fetcher = bb.fetch.Fetch(['npm://registry.npmjs.org;package=array-flatten;version=1.1.1'], self.d) + ud = fetcher.ud[fetcher.urls[0]] + fetcher.download() + self.assertTrue(os.path.exists(ud.localpath)) + # Setup the mirror + mirrordir = os.path.join(self.tempdir, 'mirror') + bb.utils.mkdirhier(mirrordir) + os.replace(ud.localpath, os.path.join(mirrordir, os.path.basename(ud.localpath))) + self.d.setVar('MIRRORS', 'https?$://.*/.* file://%s/\n' % mirrordir) + # Fetch again with invalid url + self.assertFalse(os.path.exists(ud.localpath)) + swfile = self.create_shrinkwrap_file({ + 'dependencies': { + 'array-flatten': { + 'version': '1.1.1', + 'resolved': 'https://invalid', + 'integrity': 'sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=' + } + } + }) + fetcher = bb.fetch.Fetch(['npmsw://' + swfile], self.d) + fetcher.download() + self.assertTrue(os.path.exists(ud.localpath)) diff --git a/poky/bitbake/lib/bb/tests/runqueue.py b/poky/bitbake/lib/bb/tests/runqueue.py index 5e6439156..4ba12a077 100644 --- a/poky/bitbake/lib/bb/tests/runqueue.py +++ b/poky/bitbake/lib/bb/tests/runqueue.py @@ -7,7 +7,6 @@ # import unittest -import bb import os import tempfile import subprocess @@ -255,7 +254,7 @@ class RunQueueTests(unittest.TestCase): cmd = ["bitbake", "a1", "b1"] tasks = self.run_bitbakecmd(cmd, tempdir, sstatevalid, extraenv=extraenv, cleanup=True) expected = ['a1:populate_sysroot', 'a1:package', 'a1:package_write_rpm_setscene', 'a1:packagedata_setscene', - 'a1:package_write_ipk_setscene', 'a1:package_qa_setscene'] + 'a1:package_write_ipk_setscene', 'a1:package_qa_setscene', 'a1:build'] self.assertEqual(set(tasks), set(expected)) self.shutdown(tempdir) diff --git a/poky/bitbake/lib/bb/tests/support/httpserver.py b/poky/bitbake/lib/bb/tests/support/httpserver.py new file mode 100644 index 000000000..78f766005 --- /dev/null +++ b/poky/bitbake/lib/bb/tests/support/httpserver.py @@ -0,0 +1,65 @@ +# +# SPDX-License-Identifier: MIT +# + +import http.server +import multiprocessing +import os +import traceback +import signal +import logging +from socketserver import ThreadingMixIn + +class HTTPServer(ThreadingMixIn, http.server.HTTPServer): + + def server_start(self, root_dir, logger): + os.chdir(root_dir) + self.serve_forever() + +class HTTPRequestHandler(http.server.SimpleHTTPRequestHandler): + + def log_message(self, format_str, *args): + pass + +class HTTPService(object): + + def __init__(self, root_dir, host='', port=0, logger=None): + self.root_dir = root_dir + self.host = host + self.port = port + if not logger: + logger = logging.getLogger() + self.logger = logger + + def start(self): + print(self.root_dir) + if not os.path.exists(self.root_dir): + self.logger.info("Not starting HTTPService for directory %s which doesn't exist" % (self.root_dir)) + return + + self.server = HTTPServer((self.host, self.port), HTTPRequestHandler) + if self.port == 0: + self.port = self.server.server_port + self.process = multiprocessing.Process(target=self.server.server_start, args=[self.root_dir, self.logger]) + + # The signal handler from testimage.bbclass can cause deadlocks here + # if the HTTPServer is terminated before it can restore the standard + #signal behaviour + orig = signal.getsignal(signal.SIGTERM) + signal.signal(signal.SIGTERM, signal.SIG_DFL) + self.process.start() + signal.signal(signal.SIGTERM, orig) + + if self.logger: + self.logger.info("Started HTTPService on %s:%s" % (self.host, self.port)) + + + def stop(self): + if hasattr(self, "server"): + self.server.server_close() + if hasattr(self, "process"): + self.process.terminate() + self.process.join() + if self.logger: + self.logger.info("Stopped HTTPService on %s:%s" % (self.host, self.port)) + diff --git a/poky/bitbake/lib/bb/tests/utils.py b/poky/bitbake/lib/bb/tests/utils.py index 5c910b4b8..a7ff33db5 100644 --- a/poky/bitbake/lib/bb/tests/utils.py +++ b/poky/bitbake/lib/bb/tests/utils.py @@ -622,3 +622,47 @@ BBLAYERS += "/home/user/otherpath/layer6" ['/home/user/otherpath/layer6', '/home/user/path/layer3'], ['/home/user/path/layer1', '/home/user/path/layer4', '/home/user/path/layer7'], ['/home/user/path/layer3'], ['/home/user/path/layer7']) + + +class GetReferencedVars(unittest.TestCase): + def setUp(self): + self.d = bb.data.init() + + def check_referenced(self, expression, expected_layers): + vars = bb.utils.get_referenced_vars(expression, self.d) + + # Do the easy check first - is every variable accounted for? + expected_vars = set.union(set(), *expected_layers) + got_vars = set(vars) + self.assertSetEqual(got_vars, expected_vars) + + # Now test the order of the layers + start = 0 + for i, expected_layer in enumerate(expected_layers): + got_layer = set(vars[start:len(expected_layer)+start]) + start += len(expected_layer) + self.assertSetEqual(got_layer, expected_layer) + + def test_no_vars(self): + self.check_referenced("", []) + self.check_referenced(" ", []) + self.check_referenced(" no vars here! ", []) + + def test_single_layer(self): + self.check_referenced("${VAR}", [{"VAR"}]) + self.check_referenced("${VAR} ${VAR}", [{"VAR"}]) + + def test_two_layer(self): + self.d.setVar("VAR", "${B}") + self.check_referenced("${VAR}", [{"VAR"}, {"B"}]) + self.check_referenced("${@d.getVar('VAR')}", [{"VAR"}, {"B"}]) + + def test_more_complicated(self): + self.d["SRC_URI"] = "${QT_GIT}/${QT_MODULE}.git;name=${QT_MODULE};${QT_MODULE_BRANCH_PARAM};protocol=${QT_GIT_PROTOCOL}" + self.d["QT_GIT"] = "git://code.qt.io/${QT_GIT_PROJECT}" + self.d["QT_MODULE_BRANCH_PARAM"] = "branch=${QT_MODULE_BRANCH}" + self.d["QT_MODULE"] = "${BPN}" + self.d["BPN"] = "something to do with ${PN} and ${SPECIAL_PKGSUFFIX}" + + layers = [{"SRC_URI"}, {"QT_GIT", "QT_MODULE", "QT_MODULE_BRANCH_PARAM", "QT_GIT_PROTOCOL"}, {"QT_GIT_PROJECT", "QT_MODULE_BRANCH", "BPN"}, {"PN", "SPECIAL_PKGSUFFIX"}] + self.check_referenced("${SRC_URI}", layers) diff --git a/poky/bitbake/lib/bb/tinfoil.py b/poky/bitbake/lib/bb/tinfoil.py index 0a1b91305..8c9b6b8ca 100644 --- a/poky/bitbake/lib/bb/tinfoil.py +++ b/poky/bitbake/lib/bb/tinfoil.py @@ -13,6 +13,7 @@ import sys import atexit import re from collections import OrderedDict, defaultdict +from functools import partial import bb.cache import bb.cooker @@ -21,8 +22,8 @@ import bb.taskdata import bb.utils import bb.command import bb.remotedata -from bb.cookerdata import CookerConfiguration, ConfigParameters -from bb.main import setup_bitbake, BitBakeConfigParameters, BBMainException +from bb.cookerdata import CookerConfiguration +from bb.main import setup_bitbake, BitBakeConfigParameters import bb.fetch2 @@ -44,66 +45,69 @@ class TinfoilUIException(Exception): class TinfoilCommandFailed(Exception): """Exception raised when run_command fails""" +class TinfoilDataStoreConnectorVarHistory: + def __init__(self, tinfoil, dsindex): + self.tinfoil = tinfoil + self.dsindex = dsindex + + def remoteCommand(self, cmd, *args, **kwargs): + return self.tinfoil.run_command('dataStoreConnectorVarHistCmd', self.dsindex, cmd, args, kwargs) + + def __getattr__(self, name): + if not hasattr(bb.data_smart.VariableHistory, name): + raise AttributeError("VariableHistory has no such method %s" % name) + + newfunc = partial(self.remoteCommand, name) + setattr(self, name, newfunc) + return newfunc + +class TinfoilDataStoreConnectorIncHistory: + def __init__(self, tinfoil, dsindex): + self.tinfoil = tinfoil + self.dsindex = dsindex + + def remoteCommand(self, cmd, *args, **kwargs): + return self.tinfoil.run_command('dataStoreConnectorIncHistCmd', self.dsindex, cmd, args, kwargs) + + def __getattr__(self, name): + if not hasattr(bb.data_smart.IncludeHistory, name): + raise AttributeError("IncludeHistory has no such method %s" % name) + + newfunc = partial(self.remoteCommand, name) + setattr(self, name, newfunc) + return newfunc + class TinfoilDataStoreConnector: - """Connector object used to enable access to datastore objects via tinfoil""" + """ + Connector object used to enable access to datastore objects via tinfoil + Method calls are transmitted to the remote datastore for processing, if a datastore is + returned we return a connector object for the new store + """ def __init__(self, tinfoil, dsindex): self.tinfoil = tinfoil self.dsindex = dsindex - def getVar(self, name): - value = self.tinfoil.run_command('dataStoreConnectorFindVar', self.dsindex, name) - overrides = None - if isinstance(value, dict): - if '_connector_origtype' in value: - value['_content'] = self.tinfoil._reconvert_type(value['_content'], value['_connector_origtype']) - del value['_connector_origtype'] - if '_connector_overrides' in value: - overrides = value['_connector_overrides'] - del value['_connector_overrides'] - return value, overrides - def getKeys(self): - return set(self.tinfoil.run_command('dataStoreConnectorGetKeys', self.dsindex)) - def getVarHistory(self, name): - return self.tinfoil.run_command('dataStoreConnectorGetVarHistory', self.dsindex, name) - def expandPythonRef(self, varname, expr, d): - ds = bb.remotedata.RemoteDatastores.transmit_datastore(d) - ret = self.tinfoil.run_command('dataStoreConnectorExpandPythonRef', ds, varname, expr) + self.varhistory = TinfoilDataStoreConnectorVarHistory(tinfoil, dsindex) + self.inchistory = TinfoilDataStoreConnectorIncHistory(tinfoil, dsindex) + + def remoteCommand(self, cmd, *args, **kwargs): + ret = self.tinfoil.run_command('dataStoreConnectorCmd', self.dsindex, cmd, args, kwargs) + if isinstance(ret, bb.command.DataStoreConnectionHandle): + return TinfoilDataStoreConnector(self.tinfoil, ret.dsindex) return ret - def setVar(self, varname, value): - if self.dsindex is None: - self.tinfoil.run_command('setVariable', varname, value) - else: - # Not currently implemented - indicate that setting should - # be redirected to local side - return True - def setVarFlag(self, varname, flagname, value): - if self.dsindex is None: - self.tinfoil.run_command('dataStoreConnectorSetVarFlag', self.dsindex, varname, flagname, value) - else: - # Not currently implemented - indicate that setting should - # be redirected to local side - return True - def delVar(self, varname): - if self.dsindex is None: - self.tinfoil.run_command('dataStoreConnectorDelVar', self.dsindex, varname) - else: - # Not currently implemented - indicate that setting should - # be redirected to local side - return True - def delVarFlag(self, varname, flagname): - if self.dsindex is None: - self.tinfoil.run_command('dataStoreConnectorDelVar', self.dsindex, varname, flagname) - else: - # Not currently implemented - indicate that setting should - # be redirected to local side - return True - def renameVar(self, name, newname): - if self.dsindex is None: - self.tinfoil.run_command('dataStoreConnectorRenameVar', self.dsindex, name, newname) - else: - # Not currently implemented - indicate that setting should - # be redirected to local side - return True + + def __getattr__(self, name): + if not hasattr(bb.data._dict_type, name): + raise AttributeError("Data store has no such method %s" % name) + + newfunc = partial(self.remoteCommand, name) + setattr(self, name, newfunc) + return newfunc + + def __iter__(self): + keys = self.tinfoil.run_command('dataStoreConnectorCmd', self.dsindex, "keys", [], {}) + for k in keys: + yield k class TinfoilCookerAdapter: """ @@ -127,12 +131,13 @@ class TinfoilCookerAdapter: class TinfoilRecipeCacheAdapter: """ cooker.recipecache adapter """ - def __init__(self, tinfoil): + def __init__(self, tinfoil, mc=''): self.tinfoil = tinfoil + self.mc = mc self._cache = {} def get_pkg_pn_fn(self): - pkg_pn = defaultdict(list, self.tinfoil.run_command('getRecipes') or []) + pkg_pn = defaultdict(list, self.tinfoil.run_command('getRecipes', self.mc) or []) pkg_fn = {} for pn, fnlist in pkg_pn.items(): for fn in fnlist: @@ -151,27 +156,27 @@ class TinfoilCookerAdapter: self.get_pkg_pn_fn() return self._cache[name] elif name == 'deps': - attrvalue = defaultdict(list, self.tinfoil.run_command('getRecipeDepends') or []) + attrvalue = defaultdict(list, self.tinfoil.run_command('getRecipeDepends', self.mc) or []) elif name == 'rundeps': - attrvalue = defaultdict(lambda: defaultdict(list), self.tinfoil.run_command('getRuntimeDepends') or []) + attrvalue = defaultdict(lambda: defaultdict(list), self.tinfoil.run_command('getRuntimeDepends', self.mc) or []) elif name == 'runrecs': - attrvalue = defaultdict(lambda: defaultdict(list), self.tinfoil.run_command('getRuntimeRecommends') or []) + attrvalue = defaultdict(lambda: defaultdict(list), self.tinfoil.run_command('getRuntimeRecommends', self.mc) or []) elif name == 'pkg_pepvpr': - attrvalue = self.tinfoil.run_command('getRecipeVersions') or {} + attrvalue = self.tinfoil.run_command('getRecipeVersions', self.mc) or {} elif name == 'inherits': - attrvalue = self.tinfoil.run_command('getRecipeInherits') or {} + attrvalue = self.tinfoil.run_command('getRecipeInherits', self.mc) or {} elif name == 'bbfile_priority': - attrvalue = self.tinfoil.run_command('getBbFilePriority') or {} + attrvalue = self.tinfoil.run_command('getBbFilePriority', self.mc) or {} elif name == 'pkg_dp': - attrvalue = self.tinfoil.run_command('getDefaultPreference') or {} + attrvalue = self.tinfoil.run_command('getDefaultPreference', self.mc) or {} elif name == 'fn_provides': - attrvalue = self.tinfoil.run_command('getRecipeProvides') or {} + attrvalue = self.tinfoil.run_command('getRecipeProvides', self.mc) or {} elif name == 'packages': - attrvalue = self.tinfoil.run_command('getRecipePackages') or {} + attrvalue = self.tinfoil.run_command('getRecipePackages', self.mc) or {} elif name == 'packages_dynamic': - attrvalue = self.tinfoil.run_command('getRecipePackagesDynamic') or {} + attrvalue = self.tinfoil.run_command('getRecipePackagesDynamic', self.mc) or {} elif name == 'rproviders': - attrvalue = self.tinfoil.run_command('getRProviders') or {} + attrvalue = self.tinfoil.run_command('getRProviders', self.mc) or {} else: raise AttributeError("%s instance has no attribute '%s'" % (self.__class__.__name__, name)) @@ -182,8 +187,9 @@ class TinfoilCookerAdapter: self.tinfoil = tinfoil self.collection = self.TinfoilCookerCollectionAdapter(tinfoil) self.recipecaches = {} - # FIXME all machines self.recipecaches[''] = self.TinfoilRecipeCacheAdapter(tinfoil) + for mc in (tinfoil.config_data.getVar('BBMULTICONFIG') or '').split(): + self.recipecaches[mc] = self.TinfoilRecipeCacheAdapter(tinfoil, mc) self._cache = {} def __getattr__(self, name): # Grab these only when they are requested since they aren't always used @@ -410,9 +416,7 @@ class Tinfoil: self.run_actions(config_params) self.recipes_parsed = True - self.config_data = bb.data.init() - connector = TinfoilDataStoreConnector(self, None) - self.config_data.setVar('_remote_data', connector) + self.config_data = TinfoilDataStoreConnector(self, 0) self.cooker = TinfoilCookerAdapter(self) self.cooker_data = self.cooker.recipecaches[''] else: @@ -501,11 +505,11 @@ class Tinfoil: """ return OrderedDict(self.run_command('getSkippedRecipes')) - def get_all_providers(self): - return defaultdict(list, self.run_command('allProviders')) + def get_all_providers(self, mc=''): + return defaultdict(list, self.run_command('allProviders', mc)) - def find_providers(self): - return self.run_command('findProviders') + def find_providers(self, mc=''): + return self.run_command('findProviders', mc) def find_best_provider(self, pn): return self.run_command('findBestProvider', pn) @@ -624,9 +628,6 @@ class Tinfoil: appends: True to apply bbappends, False otherwise appendlist: optional list of bbappend files to apply, if you want to filter them - config_data: custom config datastore to use. NOTE: if you - specify config_data then you cannot use a virtual - specification for fn. """ if self.tracking: # Enable history tracking just for the parse operation @@ -635,8 +636,8 @@ class Tinfoil: if appends and appendlist == []: appends = False if config_data: - dctr = bb.remotedata.RemoteDatastores.transmit_datastore(config_data) - dscon = self.run_command('parseRecipeFile', fn, appends, appendlist, dctr) + config_data = bb.data.createCopy(config_data) + dscon = self.run_command('parseRecipeFile', fn, appends, appendlist, config_data.dsindex) else: dscon = self.run_command('parseRecipeFile', fn, appends, appendlist) if dscon: @@ -723,21 +724,9 @@ class Tinfoil: # Borrowed from knotty, instead somewhat hackily we use the helper # as the object to store "shutdown" on helper = bb.ui.uihelper.BBUIHelper() - # We set up logging optionally in the constructor so now we need to - # grab the handlers to pass to TerminalFilter - console = None - errconsole = None - for handler in self.logger.handlers: - if isinstance(handler, logging.StreamHandler): - if handler.stream == sys.stdout: - console = handler - elif handler.stream == sys.stderr: - errconsole = handler - format_str = "%(levelname)s: %(message)s" - format = bb.msg.BBLogFormatter(format_str) helper.shutdown = 0 parseprogress = None - termfilter = bb.ui.knotty.TerminalFilter(helper, helper, console, errconsole, format, quiet=self.quiet) + termfilter = bb.ui.knotty.TerminalFilter(helper, helper, self.logger.handlers, quiet=self.quiet) try: while True: try: @@ -859,9 +848,7 @@ class Tinfoil: newobj = origtype(obj) if isinstance(newobj, bb.command.DataStoreConnectionHandle): - connector = TinfoilDataStoreConnector(self, newobj.dsindex) - newobj = bb.data.init() - newobj.setVar('_remote_data', connector) + newobj = TinfoilDataStoreConnector(self, newobj.dsindex) return newobj diff --git a/poky/bitbake/lib/bb/ui/buildinfohelper.py b/poky/bitbake/lib/bb/ui/buildinfohelper.py index 5cbca97f3..82c62e332 100644 --- a/poky/bitbake/lib/bb/ui/buildinfohelper.py +++ b/poky/bitbake/lib/bb/ui/buildinfohelper.py @@ -935,7 +935,7 @@ class BuildInfoHelper(object): # only reset the build name if the one on the server is actually # a valid value for the build_name field - if build_name != None: + if build_name is not None: build_info['build_name'] = build_name changed = True @@ -1194,7 +1194,7 @@ class BuildInfoHelper(object): evdata = BuildInfoHelper._get_data_from_event(event) for t in self.internal_state['targets']: - if t.is_image == True: + if t.is_image: output_files = list(evdata.keys()) for output in output_files: if t.target in output and 'rootfs' in output and not output.endswith(".manifest"): @@ -1236,7 +1236,7 @@ class BuildInfoHelper(object): task_information['outcome'] = Task.OUTCOME_PREBUILT else: task_information['task_executed'] = True - if 'noexec' in vars(event) and event.noexec == True: + if 'noexec' in vars(event) and event.noexec: task_information['task_executed'] = False task_information['outcome'] = Task.OUTCOME_EMPTY task_information['script_type'] = Task.CODING_NA @@ -1776,7 +1776,7 @@ class BuildInfoHelper(object): image_file_extensions_unique = {} image_fstypes = self.server.runCommand( ['getVariable', 'IMAGE_FSTYPES'])[0] - if image_fstypes != None: + if image_fstypes is not None: image_types_str = image_fstypes.strip() image_file_extensions = re.sub(r' {2,}', ' ', image_types_str) image_file_extensions_unique = set(image_file_extensions.split(' ')) diff --git a/poky/bitbake/lib/bb/ui/knotty.py b/poky/bitbake/lib/bb/ui/knotty.py index 35736ade0..87e873d64 100644 --- a/poky/bitbake/lib/bb/ui/knotty.py +++ b/poky/bitbake/lib/bb/ui/knotty.py @@ -12,7 +12,6 @@ from __future__ import division import os import sys -import xmlrpc.client as xmlrpclib import logging import progressbar import signal @@ -35,15 +34,15 @@ class BBProgress(progressbar.ProgressBar): self.msg = msg self.extrapos = extrapos if not widgets: - widgets = [progressbar.Percentage(), ' ', progressbar.Bar(), ' ', - progressbar.ETA()] - self.extrapos = 4 + widgets = [': ', progressbar.Percentage(), ' ', progressbar.Bar(), + ' ', progressbar.ETA()] + self.extrapos = 5 if resize_handler: self._resize_default = resize_handler else: self._resize_default = signal.getsignal(signal.SIGWINCH) - progressbar.ProgressBar.__init__(self, maxval, [self.msg + ": "] + widgets, fd=sys.stdout) + progressbar.ProgressBar.__init__(self, maxval, [self.msg] + widgets, fd=sys.stdout) def _handle_resize(self, signum=None, frame=None): progressbar.ProgressBar._handle_resize(self, signum, frame) @@ -110,12 +109,11 @@ def pluralise(singular, plural, qty): class InteractConsoleLogFilter(logging.Filter): - def __init__(self, tf, format): + def __init__(self, tf): self.tf = tf - self.format = format def filter(self, record): - if record.levelno == self.format.NOTE and (record.msg.startswith("Running") or record.msg.startswith("recipe ")): + if record.levelno == bb.msg.BBLogFormatter.NOTE and (record.msg.startswith("Running") or record.msg.startswith("recipe ")): return False self.tf.clearFooter() return True @@ -151,7 +149,7 @@ class TerminalFilter(object): cr = (25, 80) return cr - def __init__(self, main, helper, console, errconsole, format, quiet): + def __init__(self, main, helper, handlers, quiet): self.main = main self.helper = helper self.cuu = None @@ -181,7 +179,11 @@ class TerminalFilter(object): termios.tcsetattr(fd, termios.TCSADRAIN, new) curses.setupterm() if curses.tigetnum("colors") > 2: - format.enable_color() + for h in handlers: + try: + h.formatter.enable_color() + except AttributeError: + pass self.ed = curses.tigetstr("ed") if self.ed: self.cuu = curses.tigetstr("cuu") @@ -197,10 +199,9 @@ class TerminalFilter(object): self.interactive = False bb.note("Unable to use interactive mode for this terminal, using fallback") return - if console: - console.addFilter(InteractConsoleLogFilter(self, format)) - if errconsole: - errconsole.addFilter(InteractConsoleLogFilter(self, format)) + + for h in handlers: + h.addFilter(InteractConsoleLogFilter(self)) self.main_progress = None @@ -255,19 +256,19 @@ class TerminalFilter(object): start_time = activetasks[t].get("starttime", None) if not pbar or pbar.bouncing != (progress < 0): if progress < 0: - pbar = BBProgress("0: %s (pid %s) " % (activetasks[t]["title"], t), 100, widgets=[progressbar.BouncingSlider(), ''], extrapos=2, resize_handler=self.sigwinch_handle) + pbar = BBProgress("0: %s (pid %s)" % (activetasks[t]["title"], activetasks[t]["pid"]), 100, widgets=[' ', progressbar.BouncingSlider(), ''], extrapos=3, resize_handler=self.sigwinch_handle) pbar.bouncing = True else: - pbar = BBProgress("0: %s (pid %s) " % (activetasks[t]["title"], t), 100, widgets=[progressbar.Percentage(), ' ', progressbar.Bar(), ''], extrapos=4, resize_handler=self.sigwinch_handle) + pbar = BBProgress("0: %s (pid %s)" % (activetasks[t]["title"], activetasks[t]["pid"]), 100, widgets=[' ', progressbar.Percentage(), ' ', progressbar.Bar(), ''], extrapos=5, resize_handler=self.sigwinch_handle) pbar.bouncing = False activetasks[t]["progressbar"] = pbar tasks.append((pbar, progress, rate, start_time)) else: start_time = activetasks[t].get("starttime", None) if start_time: - tasks.append("%s - %s (pid %s)" % (activetasks[t]["title"], self.elapsed(currenttime - start_time), t)) + tasks.append("%s - %s (pid %s)" % (activetasks[t]["title"], self.elapsed(currenttime - start_time), activetasks[t]["pid"])) else: - tasks.append("%s (pid %s)" % (activetasks[t]["title"], t)) + tasks.append("%s (pid %s)" % (activetasks[t]["title"], activetasks[t]["pid"])) if self.main.shutdown: content = "Waiting for %s running tasks to finish:" % len(activetasks) @@ -363,7 +364,11 @@ def _log_settings_from_server(server, observe_only): if error: logger.error("Unable to get the value of BB_CONSOLELOG variable: %s" % error) raise BaseException(error) - return includelogs, loglines, consolelogfile + logconfigfile, error = server.runCommand([cmd, "BB_LOGCONFIG"]) + if error: + logger.error("Unable to get the value of BB_LOGCONFIG variable: %s" % error) + raise BaseException(error) + return includelogs, loglines, consolelogfile, logconfigfile _evt_list = [ "bb.runqueue.runQueueExitWait", "bb.event.LogExecTTY", "logging.LogRecord", "bb.build.TaskFailed", "bb.build.TaskBase", "bb.event.ParseStarted", @@ -380,7 +385,148 @@ def main(server, eventHandler, params, tf = TerminalFilter): if not params.observe_only: params.updateToServer(server, os.environ.copy()) - includelogs, loglines, consolelogfile = _log_settings_from_server(server, params.observe_only) + includelogs, loglines, consolelogfile, logconfigfile = _log_settings_from_server(server, params.observe_only) + + loglevel, _ = bb.msg.constructLogOptions() + + if params.options.quiet == 0: + console_loglevel = loglevel + elif params.options.quiet > 2: + console_loglevel = bb.msg.BBLogFormatter.ERROR + else: + console_loglevel = bb.msg.BBLogFormatter.WARNING + + logconfig = { + "version": 1, + "handlers": { + "BitBake.console": { + "class": "logging.StreamHandler", + "formatter": "BitBake.consoleFormatter", + "level": console_loglevel, + "stream": "ext://sys.stdout", + "filters": ["BitBake.stdoutFilter"], + ".": { + "is_console": True, + }, + }, + "BitBake.errconsole": { + "class": "logging.StreamHandler", + "formatter": "BitBake.consoleFormatter", + "level": loglevel, + "stream": "ext://sys.stderr", + "filters": ["BitBake.stderrFilter"], + ".": { + "is_console": True, + }, + }, + # This handler can be used if specific loggers should print on + # the console at a lower severity than the default. It will + # display any messages sent to it that are lower than then + # BitBake.console logging level (so as to prevent duplication of + # messages). Nothing is attached to this handler by default + "BitBake.verbconsole": { + "class": "logging.StreamHandler", + "formatter": "BitBake.consoleFormatter", + "level": 1, + "stream": "ext://sys.stdout", + "filters": ["BitBake.verbconsoleFilter"], + ".": { + "is_console": True, + }, + }, + }, + "formatters": { + # This format instance will get color output enabled by the + # terminal + "BitBake.consoleFormatter" : { + "()": "bb.msg.BBLogFormatter", + "format": "%(levelname)s: %(message)s" + }, + # The file log requires a separate instance so that it doesn't get + # color enabled + "BitBake.logfileFormatter": { + "()": "bb.msg.BBLogFormatter", + "format": "%(levelname)s: %(message)s" + } + }, + "filters": { + "BitBake.stdoutFilter": { + "()": "bb.msg.LogFilterLTLevel", + "level": "ERROR" + }, + "BitBake.stderrFilter": { + "()": "bb.msg.LogFilterGEQLevel", + "level": "ERROR" + }, + "BitBake.verbconsoleFilter": { + "()": "bb.msg.LogFilterLTLevel", + "level": console_loglevel + }, + }, + "loggers": { + "BitBake": { + "level": loglevel, + "handlers": ["BitBake.console", "BitBake.errconsole"], + } + }, + "disable_existing_loggers": False + } + + # Enable the console log file if enabled + if consolelogfile and not params.options.show_environment and not params.options.show_versions: + logconfig = bb.msg.mergeLoggingConfig(logconfig, { + "version": 1, + "handlers" : { + "BitBake.consolelog": { + "class": "logging.FileHandler", + "formatter": "BitBake.logfileFormatter", + "level": loglevel, + "filename": consolelogfile, + }, + # Just like verbconsole, anything sent here will go to the + # log file, unless it would go to BitBake.consolelog + "BitBake.verbconsolelog" : { + "class": "logging.FileHandler", + "formatter": "BitBake.logfileFormatter", + "level": 1, + "filename": consolelogfile, + "filters": ["BitBake.verbconsolelogFilter"], + }, + }, + "filters": { + "BitBake.verbconsolelogFilter": { + "()": "bb.msg.LogFilterLTLevel", + "level": loglevel, + }, + }, + "loggers": { + "BitBake": { + "handlers": ["BitBake.consolelog"], + }, + + # Other interesting things that we want to keep an eye on + # in the log files in case someone has an issue, but not + # necessarily show to the user on the console + "BitBake.SigGen.HashEquiv": { + "level": "VERBOSE", + "handlers": ["BitBake.verbconsolelog"], + }, + "BitBake.RunQueue.HashEquiv": { + "level": "VERBOSE", + "handlers": ["BitBake.verbconsolelog"], + } + } + }) + + bb.utils.mkdirhier(os.path.dirname(consolelogfile)) + loglink = os.path.join(os.path.dirname(consolelogfile), 'console-latest.log') + bb.utils.remove(loglink) + try: + os.symlink(os.path.basename(consolelogfile), loglink) + except OSError: + pass + + conf = bb.msg.setLoggingConfig(logconfig, logconfigfile) if sys.stdin.isatty() and sys.stdout.isatty(): log_exec_tty = True @@ -389,23 +535,9 @@ def main(server, eventHandler, params, tf = TerminalFilter): helper = uihelper.BBUIHelper() - console = logging.StreamHandler(sys.stdout) - errconsole = logging.StreamHandler(sys.stderr) - format_str = "%(levelname)s: %(message)s" - format = bb.msg.BBLogFormatter(format_str) - if params.options.quiet == 0: - forcelevel = None - elif params.options.quiet > 2: - forcelevel = bb.msg.BBLogFormatter.ERROR - else: - forcelevel = bb.msg.BBLogFormatter.WARNING - bb.msg.addDefaultlogFilter(console, bb.msg.BBLogFilterStdOut, forcelevel) - bb.msg.addDefaultlogFilter(errconsole, bb.msg.BBLogFilterStdErr) - console.setFormatter(format) - errconsole.setFormatter(format) - if not bb.msg.has_console_handler(logger): - logger.addHandler(console) - logger.addHandler(errconsole) + # Look for the specially designated handlers which need to be passed to the + # terminal handler + console_handlers = [h for h in conf.config['handlers'].values() if getattr(h, 'is_console', False)] bb.utils.set_process_name("KnottyUI") @@ -413,24 +545,14 @@ def main(server, eventHandler, params, tf = TerminalFilter): server.terminateServer() return - consolelog = None - if consolelogfile and not params.options.show_environment and not params.options.show_versions: - bb.utils.mkdirhier(os.path.dirname(consolelogfile)) - conlogformat = bb.msg.BBLogFormatter(format_str) - consolelog = logging.FileHandler(consolelogfile) - bb.msg.addDefaultlogFilter(consolelog) - consolelog.setFormatter(conlogformat) - logger.addHandler(consolelog) - loglink = os.path.join(os.path.dirname(consolelogfile), 'console-latest.log') - bb.utils.remove(loglink) - try: - os.symlink(os.path.basename(consolelogfile), loglink) - except OSError: - pass - llevel, debug_domains = bb.msg.constructLogOptions() server.runCommand(["setEventMask", server.getEventHandle(), llevel, debug_domains, _evt_list]) + # The logging_tree module is *extremely* helpful in debugging logging + # domains. Uncomment here to dump the logging tree when bitbake starts + #import logging_tree + #logging_tree.printout() + universe = False if not params.observe_only: params.updateFromServer(server) @@ -448,7 +570,7 @@ def main(server, eventHandler, params, tf = TerminalFilter): if error: logger.error("Command '%s' failed: %s" % (cmdline, error)) return 1 - elif ret != True: + elif not ret: logger.error("Command '%s' failed: returned %s" % (cmdline, ret)) return 1 @@ -465,7 +587,7 @@ def main(server, eventHandler, params, tf = TerminalFilter): printinterval = 5000 lastprint = time.time() - termfilter = tf(main, helper, console, errconsole, format, params.options.quiet) + termfilter = tf(main, helper, console_handlers, params.options.quiet) atexit.register(termfilter.finish) while True: @@ -477,7 +599,8 @@ def main(server, eventHandler, params, tf = TerminalFilter): if event is None: if main.shutdown > 1: break - termfilter.updateFooter() + if not parseprogress: + termfilter.updateFooter() event = eventHandler.waitEvent(0.25) if event is None: continue @@ -503,26 +626,26 @@ def main(server, eventHandler, params, tf = TerminalFilter): if isinstance(event, logging.LogRecord): lastprint = time.time() printinterval = 5000 - if event.levelno >= format.ERROR: + if event.levelno >= bb.msg.BBLogFormatter.ERROR: errors = errors + 1 return_value = 1 - elif event.levelno == format.WARNING: + elif event.levelno == bb.msg.BBLogFormatter.WARNING: warnings = warnings + 1 if event.taskpid != 0: # For "normal" logging conditions, don't show note logs from tasks # but do show them if the user has changed the default log level to # include verbose/debug messages - if event.levelno <= format.NOTE and (event.levelno < llevel or (event.levelno == format.NOTE and llevel != format.VERBOSE)): + if event.levelno <= bb.msg.BBLogFormatter.NOTE and (event.levelno < llevel or (event.levelno == bb.msg.BBLogFormatter.NOTE and llevel != bb.msg.BBLogFormatter.VERBOSE)): continue # Prefix task messages with recipe/task - if event.taskpid in helper.running_tasks and event.levelno != format.PLAIN: - taskinfo = helper.running_tasks[event.taskpid] + if event.taskpid in helper.pidmap and event.levelno != bb.msg.BBLogFormatter.PLAIN: + taskinfo = helper.running_tasks[helper.pidmap[event.taskpid]] event.msg = taskinfo['title'] + ': ' + event.msg if hasattr(event, 'fn'): event.msg = event.fn + ': ' + event.msg - logger.handle(event) + logging.getLogger(event.name).handle(event) continue if isinstance(event, bb.build.TaskFailedSilent): @@ -539,6 +662,7 @@ def main(server, eventHandler, params, tf = TerminalFilter): continue if event.total == 0: continue + termfilter.clearFooter() parseprogress = new_progress("Parsing recipes", event.total).start() continue if isinstance(event, bb.event.ParseProgress): @@ -589,6 +713,7 @@ def main(server, eventHandler, params, tf = TerminalFilter): if isinstance(event, bb.command.CommandExit): if not return_value: return_value = event.exitcode + main.shutdown = 2 continue if isinstance(event, (bb.command.CommandCompleted, bb.cooker.CookerExit)): main.shutdown = 2 @@ -638,6 +763,7 @@ def main(server, eventHandler, params, tf = TerminalFilter): if isinstance(event, bb.event.ProcessStarted): if params.options.quiet > 1: continue + termfilter.clearFooter() parseprogress = new_progress(event.processname, event.total) parseprogress.start(False) continue @@ -745,8 +871,6 @@ def main(server, eventHandler, params, tf = TerminalFilter): if e.errno == errno.EPIPE: pass - if consolelog: - logger.removeHandler(consolelog) - consolelog.close() + logging.shutdown() return return_value diff --git a/poky/bitbake/lib/bb/ui/ncurses.py b/poky/bitbake/lib/bb/ui/ncurses.py index c422732b2..da4fbeabb 100644 --- a/poky/bitbake/lib/bb/ui/ncurses.py +++ b/poky/bitbake/lib/bb/ui/ncurses.py @@ -37,7 +37,7 @@ import logging -import os, sys, itertools, time, subprocess +import os, sys, itertools, time try: import curses @@ -46,7 +46,6 @@ except ImportError: import bb import xmlrpc.client -from bb import ui from bb.ui import uihelper parsespin = itertools.cycle( r'|/-\\' ) @@ -239,7 +238,7 @@ class NCursesUI: if error: print("Error running command '%s': %s" % (cmdline, error)) return - elif ret != True: + elif not ret: print("Couldn't get default commandlind! %s" % ret) return except xmlrpc.client.Fault as x: diff --git a/poky/bitbake/lib/bb/ui/taskexp.py b/poky/bitbake/lib/bb/ui/taskexp.py index 50a943cd0..8fff24423 100644 --- a/poky/bitbake/lib/bb/ui/taskexp.py +++ b/poky/bitbake/lib/bb/ui/taskexp.py @@ -11,10 +11,8 @@ import sys import gi gi.require_version('Gtk', '3.0') from gi.repository import Gtk, Gdk, GObject -from multiprocessing import Queue import threading from xmlrpc import client -import time import bb import bb.event @@ -202,7 +200,7 @@ def main(server, eventHandler, params): if error: print("Error running command '%s': %s" % (cmdline, error)) return 1 - elif ret != True: + elif not ret: print("Error running command '%s': returned %s" % (cmdline, ret)) return 1 except client.Fault as x: diff --git a/poky/bitbake/lib/bb/ui/teamcity.py b/poky/bitbake/lib/bb/ui/teamcity.py new file mode 100644 index 000000000..1854292fa --- /dev/null +++ b/poky/bitbake/lib/bb/ui/teamcity.py @@ -0,0 +1,398 @@ +# +# TeamCity UI Implementation +# +# Implements a TeamCity frontend for the BitBake utility, via service messages. +# See https://www.jetbrains.com/help/teamcity/build-script-interaction-with-teamcity.html +# +# Based on ncurses.py and knotty.py, variously by Michael Lauer and Richard Purdie +# +# Copyright (C) 2006 Michael 'Mickey' Lauer +# Copyright (C) 2006-2012 Richard Purdie +# Copyright (C) 2018-2020 Agilent Technologies, Inc. +# +# SPDX-License-Identifier: GPL-2.0-only +# +# Author: Chris Laplante + +from __future__ import division + +import datetime +import logging +import math +import os +import re +import sys +import xmlrpc.client +from collections import deque + +import bb +import bb.build +import bb.command +import bb.cooker +import bb.event +import bb.exceptions +import bb.runqueue +from bb.ui import uihelper + +logger = logging.getLogger("BitBake") + + +class TeamCityUI: + def __init__(self): + self._block_stack = [] + self._last_progress_state = None + + @classmethod + def escape_service_value(cls, value): + """ + Escape a value for inclusion in a service message. TeamCity uses the vertical pipe character for escaping. + See: https://confluence.jetbrains.com/display/TCD10/Build+Script+Interaction+with+TeamCity#BuildScriptInteractionwithTeamCity-Escapedvalues + """ + return re.sub(r"(['|\[\]])", r"|\1", value).replace("\n", "|n").replace("\r", "|r") + + @classmethod + def emit_service_message(cls, message_type, **kwargs): + print(cls.format_service_message(message_type, **kwargs), flush=True) + + @classmethod + def format_service_message(cls, message_type, **kwargs): + payload = " ".join(["{0}='{1}'".format(k, cls.escape_service_value(v)) for k, v in kwargs.items()]) + return "##teamcity[{0} {1}]".format(message_type, payload) + + @classmethod + def emit_simple_service_message(cls, message_type, message): + print(cls.format_simple_service_message(message_type, message), flush=True) + + @classmethod + def format_simple_service_message(cls, message_type, message): + return "##teamcity[{0} '{1}']".format(message_type, cls.escape_service_value(message)) + + @classmethod + def format_build_message(cls, text, status): + return cls.format_service_message("message", text=text, status=status) + + def block_start(self, name): + self._block_stack.append(name) + self.emit_service_message("blockOpened", name=name) + + def block_end(self): + if self._block_stack: + name = self._block_stack.pop() + self.emit_service_message("blockClosed", name=name) + + def progress(self, message, percent, extra=None): + now = datetime.datetime.now() + percent = "{0: >3.0f}".format(percent) + + report = False + if not self._last_progress_state \ + or (self._last_progress_state[0] == message + and self._last_progress_state[1] != percent + and (now - self._last_progress_state[2]).microseconds >= 5000) \ + or self._last_progress_state[0] != message: + report = True + self._last_progress_state = (message, percent, now) + + if report or percent in [0, 100]: + self.emit_simple_service_message("progressMessage", "{0}: {1}%{2}".format(message, percent, extra or "")) + + +class TeamcityLogFormatter(logging.Formatter): + def format(self, record): + details = "" + if hasattr(record, 'bb_exc_formatted'): + details = ''.join(record.bb_exc_formatted) + elif hasattr(record, 'bb_exc_info'): + etype, value, tb = record.bb_exc_info + formatted = bb.exceptions.format_exception(etype, value, tb, limit=5) + details = ''.join(formatted) + + if record.levelno in [bb.msg.BBLogFormatter.ERROR, bb.msg.BBLogFormatter.CRITICAL]: + # ERROR gets a separate errorDetails field + msg = TeamCityUI.format_service_message("message", text=record.getMessage(), status="ERROR", + errorDetails=details) + else: + payload = record.getMessage() + if details: + payload += "\n" + details + if record.levelno == bb.msg.BBLogFormatter.PLAIN: + msg = payload + elif record.levelno == bb.msg.BBLogFormatter.WARNING: + msg = TeamCityUI.format_service_message("message", text=payload, status="WARNING") + else: + msg = TeamCityUI.format_service_message("message", text=payload, status="NORMAL") + + return msg + + +_evt_list = ["bb.runqueue.runQueueExitWait", "bb.event.LogExecTTY", "logging.LogRecord", + "bb.build.TaskFailed", "bb.build.TaskBase", "bb.event.ParseStarted", + "bb.event.ParseProgress", "bb.event.ParseCompleted", "bb.event.CacheLoadStarted", + "bb.event.CacheLoadProgress", "bb.event.CacheLoadCompleted", "bb.command.CommandFailed", + "bb.command.CommandExit", "bb.command.CommandCompleted", "bb.cooker.CookerExit", + "bb.event.MultipleProviders", "bb.event.NoProvider", "bb.runqueue.sceneQueueTaskStarted", + "bb.runqueue.runQueueTaskStarted", "bb.runqueue.runQueueTaskFailed", "bb.runqueue.sceneQueueTaskFailed", + "bb.event.BuildBase", "bb.build.TaskStarted", "bb.build.TaskSucceeded", "bb.build.TaskFailedSilent", + "bb.build.TaskProgress", "bb.event.ProcessStarted", "bb.event.ProcessProgress", "bb.event.ProcessFinished"] + + +def _log_settings_from_server(server): + # Get values of variables which control our output + includelogs, error = server.runCommand(["getVariable", "BBINCLUDELOGS"]) + if error: + logger.error("Unable to get the value of BBINCLUDELOGS variable: %s" % error) + raise BaseException(error) + loglines, error = server.runCommand(["getVariable", "BBINCLUDELOGS_LINES"]) + if error: + logger.error("Unable to get the value of BBINCLUDELOGS_LINES variable: %s" % error) + raise BaseException(error) + return includelogs, loglines + + +def main(server, eventHandler, params): + params.updateToServer(server, os.environ.copy()) + + includelogs, loglines = _log_settings_from_server(server) + + ui = TeamCityUI() + + helper = uihelper.BBUIHelper() + + console = logging.StreamHandler(sys.stdout) + errconsole = logging.StreamHandler(sys.stderr) + format = TeamcityLogFormatter() + if params.options.quiet == 0: + forcelevel = None + elif params.options.quiet > 2: + forcelevel = bb.msg.BBLogFormatter.ERROR + else: + forcelevel = bb.msg.BBLogFormatter.WARNING + bb.msg.addDefaultlogFilter(console, bb.msg.BBLogFilterStdOut, forcelevel) + bb.msg.addDefaultlogFilter(errconsole, bb.msg.BBLogFilterStdErr) + console.setFormatter(format) + errconsole.setFormatter(format) + if not bb.msg.has_console_handler(logger): + logger.addHandler(console) + logger.addHandler(errconsole) + + if params.options.remote_server and params.options.kill_server: + server.terminateServer() + return + + if params.observe_only: + logger.error("Observe-only mode not supported in this UI") + return 1 + + llevel, debug_domains = bb.msg.constructLogOptions() + server.runCommand(["setEventMask", server.getEventHandle(), llevel, debug_domains, _evt_list]) + + try: + params.updateFromServer(server) + cmdline = params.parseActions() + if not cmdline: + logger.error("No task given") + return 1 + if 'msg' in cmdline and cmdline['msg']: + logger.error(cmdline['msg']) + return 1 + cmdline = cmdline['action'] + ret, error = server.runCommand(cmdline) + if error: + logger.error("{0}: {1}".format(cmdline, error)) + return 1 + elif not ret: + logger.error("Couldn't get default commandline: {0}".format(re)) + return 1 + except xmlrpc.client.Fault as x: + logger.error("XMLRPC Fault getting commandline: {0}".format(x)) + return 1 + + active_process_total = None + is_tasks_running = False + + while True: + try: + event = eventHandler.waitEvent(0.25) + if not event: + continue + + helper.eventHandler(event) + + if isinstance(event, bb.build.TaskBase): + logger.info(event._message) + if isinstance(event, logging.LogRecord): + # Don't report sstate failures as errors, since Yocto will just run the tasks for real + if event.msg == "No suitable staging package found" or (event.msg.startswith( + "Fetcher failure: Unable to find file") and "downloadfilename" in event.msg and "sstate" in event.msg): + event.levelno = bb.msg.BBLogFormatter.WARNING + if event.taskpid != 0: + # For "normal" logging conditions, don't show note logs from tasks + # but do show them if the user has changed the default log level to + # include verbose/debug messages + if event.levelno <= bb.msg.BBLogFormatter.NOTE and (event.levelno < llevel or ( + event.levelno == bb.msg.BBLogFormatter.NOTE and llevel != bb.msg.BBLogFormatter.VERBOSE)): + continue + + # Prefix task messages with recipe/task + if event.taskpid in helper.running_tasks and event.levelno != bb.msg.BBLogFormatter.PLAIN: + taskinfo = helper.running_tasks[event.taskpid] + event.msg = taskinfo['title'] + ': ' + event.msg + if hasattr(event, 'fn'): + event.msg = event.fn + ': ' + event.msg + logger.handle(event) + if isinstance(event, bb.build.TaskFailedSilent): + logger.warning("Logfile for failed setscene task is %s" % event.logfile) + continue + if isinstance(event, bb.build.TaskFailed): + rt = "{0}-{1}:{2}".format(event.pn, event.pv.replace("AUTOINC", "0"), event.task) + + logfile = event.logfile + if not logfile or not os.path.exists(logfile): + TeamCityUI.emit_service_message("buildProblem", description="{0}\nUnknown failure (no log file available)".format(rt)) + if not event.task.endswith("_setscene"): + server.runCommand(["stateForceShutdown"]) + continue + + details = deque(maxlen=loglines) + error_lines = [] + if includelogs and not event.errprinted: + with open(logfile, "r") as f: + while True: + line = f.readline() + if not line: + break + line = line.rstrip() + details.append(' | %s' % line) + # TODO: a less stupid check for errors + if (event.task == "do_compile") and ("error:" in line): + error_lines.append(line) + + if error_lines: + TeamCityUI.emit_service_message("compilationStarted", compiler=rt) + for line in error_lines: + TeamCityUI.emit_service_message("message", text=line, status="ERROR") + TeamCityUI.emit_service_message("compilationFinished", compiler=rt) + else: + TeamCityUI.emit_service_message("buildProblem", description=rt) + + err = "Logfile of failure stored in: %s" % logfile + if details: + ui.block_start("{0} task log".format(rt)) + # TeamCity seems to choke on service messages longer than about 63800 characters, so if error + # details is longer than, say, 60000, batch it up into several messages. + first_message = True + while details: + detail_len = 0 + batch = deque() + while details and detail_len < 60000: + # TODO: This code doesn't bother to handle lines that themselves are extremely long. + line = details.popleft() + batch.append(line) + detail_len += len(line) + + if first_message: + batch.appendleft("Log data follows:") + first_message = False + TeamCityUI.emit_service_message("message", text=err, status="ERROR", + errorDetails="\n".join(batch)) + else: + TeamCityUI.emit_service_message("message", text="[continued]", status="ERROR", + errorDetails="\n".join(batch)) + ui.block_end() + else: + TeamCityUI.emit_service_message("message", text=err, status="ERROR", errorDetails="") + + if not event.task.endswith("_setscene"): + server.runCommand(["stateForceShutdown"]) + + if isinstance(event, bb.event.ProcessStarted): + if event.processname in ["Initialising tasks", "Checking sstate mirror object availability"]: + active_process_total = event.total + ui.block_start(event.processname) + if isinstance(event, bb.event.ProcessFinished): + if event.processname in ["Initialising tasks", "Checking sstate mirror object availability"]: + ui.progress(event.processname, 100) + ui.block_end() + if isinstance(event, bb.event.ProcessProgress): + if event.processname in ["Initialising tasks", + "Checking sstate mirror object availability"] and active_process_total != 0: + ui.progress(event.processname, event.progress * 100 / active_process_total) + if isinstance(event, bb.event.CacheLoadStarted): + ui.block_start("Loading cache") + if isinstance(event, bb.event.CacheLoadProgress): + if event.total != 0: + ui.progress("Loading cache", math.floor(event.current * 100 / event.total)) + if isinstance(event, bb.event.CacheLoadCompleted): + ui.progress("Loading cache", 100) + ui.block_end() + if isinstance(event, bb.event.ParseStarted): + ui.block_start("Parsing recipes and checking upstream revisions") + if isinstance(event, bb.event.ParseProgress): + if event.total != 0: + ui.progress("Parsing recipes", math.floor(event.current * 100 / event.total)) + if isinstance(event, bb.event.ParseCompleted): + ui.progress("Parsing recipes", 100) + ui.block_end() + if isinstance(event, bb.command.CommandCompleted): + return + if isinstance(event, bb.command.CommandFailed): + logger.error(str(event)) + return 1 + if isinstance(event, bb.event.MultipleProviders): + logger.warning(str(event)) + continue + if isinstance(event, bb.event.NoProvider): + logger.error(str(event)) + continue + if isinstance(event, bb.command.CommandExit): + return + if isinstance(event, bb.cooker.CookerExit): + return + if isinstance(event, bb.runqueue.sceneQueueTaskStarted): + if not is_tasks_running: + is_tasks_running = True + ui.block_start("Running tasks") + if event.stats.total != 0: + ui.progress("Running setscene tasks", ( + event.stats.completed + event.stats.active + event.stats.failed + 1) * 100 / event.stats.total) + if isinstance(event, bb.runqueue.runQueueTaskStarted): + if not is_tasks_running: + is_tasks_running = True + ui.block_start("Running tasks") + if event.stats.total != 0: + pseudo_total = event.stats.total - event.stats.skipped + pseudo_complete = event.stats.completed + event.stats.active - event.stats.skipped + event.stats.failed + 1 + # TODO: sometimes this gives over 100% + ui.progress("Running runqueue tasks", (pseudo_complete) * 100 / pseudo_total, + " ({0}/{1})".format(pseudo_complete, pseudo_total)) + if isinstance(event, bb.runqueue.sceneQueueTaskFailed): + logger.warning(str(event)) + continue + if isinstance(event, bb.runqueue.runQueueTaskFailed): + logger.error(str(event)) + return 1 + if isinstance(event, bb.event.LogExecTTY): + pass + except EnvironmentError as ioerror: + # ignore interrupted io + if ioerror.args[0] == 4: + pass + except Exception as ex: + logger.error(str(ex)) + + # except KeyboardInterrupt: + # if shutdown == 2: + # mw.appendText("Third Keyboard Interrupt, exit.\n") + # exitflag = True + # if shutdown == 1: + # mw.appendText("Second Keyboard Interrupt, stopping...\n") + # _, error = server.runCommand(["stateForceShutdown"]) + # if error: + # print("Unable to cleanly stop: %s" % error) + # if shutdown == 0: + # mw.appendText("Keyboard Interrupt, closing down...\n") + # _, error = server.runCommand(["stateShutdown"]) + # if error: + # print("Unable to cleanly shutdown: %s" % error) + # shutdown = shutdown + 1 + # pass diff --git a/poky/bitbake/lib/bb/ui/toasterui.py b/poky/bitbake/lib/bb/ui/toasterui.py index 51892c9a0..9260f5d9d 100644 --- a/poky/bitbake/lib/bb/ui/toasterui.py +++ b/poky/bitbake/lib/bb/ui/toasterui.py @@ -176,7 +176,7 @@ def main(server, eventHandler, params): if error: logger.error("Command '%s' failed: %s" % (cmdline, error)) return 1 - elif ret != True: + elif not ret: logger.error("Command '%s' failed: returned %s" % (cmdline, ret)) return 1 diff --git a/poky/bitbake/lib/bb/ui/uievent.py b/poky/bitbake/lib/bb/ui/uievent.py index fedb05064..13d0d4a04 100644 --- a/poky/bitbake/lib/bb/ui/uievent.py +++ b/poky/bitbake/lib/bb/ui/uievent.py @@ -46,7 +46,7 @@ class BBUIEventQueue: self.EventHandle = ret error = "" - if self.EventHandle != None: + if self.EventHandle is not None: break errmsg = "Could not register UI event handler. Error: %s, host %s, "\ diff --git a/poky/bitbake/lib/bb/ui/uihelper.py b/poky/bitbake/lib/bb/ui/uihelper.py index c8dd7df08..48d808ae2 100644 --- a/poky/bitbake/lib/bb/ui/uihelper.py +++ b/poky/bitbake/lib/bb/ui/uihelper.py @@ -15,39 +15,48 @@ class BBUIHelper: # Running PIDs preserves the order tasks were executed in self.running_pids = [] self.failed_tasks = [] + self.pidmap = {} self.tasknumber_current = 0 self.tasknumber_total = 0 def eventHandler(self, event): + # PIDs are a bad idea as they can be reused before we process all UI events. + # We maintain a 'fuzzy' match for TaskProgress since there is no other way to match + def removetid(pid, tid): + self.running_pids.remove(tid) + del self.running_tasks[tid] + if self.pidmap[pid] == tid: + del self.pidmap[pid] + self.needUpdate = True + if isinstance(event, bb.build.TaskStarted): + tid = event._fn + ":" + event._task if event._mc != "default": - self.running_tasks[event.pid] = { 'title' : "mc:%s:%s %s" % (event._mc, event._package, event._task), 'starttime' : time.time() } + self.running_tasks[tid] = { 'title' : "mc:%s:%s %s" % (event._mc, event._package, event._task), 'starttime' : time.time(), 'pid' : event.pid } else: - self.running_tasks[event.pid] = { 'title' : "%s %s" % (event._package, event._task), 'starttime' : time.time() } - self.running_pids.append(event.pid) + self.running_tasks[tid] = { 'title' : "%s %s" % (event._package, event._task), 'starttime' : time.time(), 'pid' : event.pid } + self.running_pids.append(tid) + self.pidmap[event.pid] = tid self.needUpdate = True elif isinstance(event, bb.build.TaskSucceeded): - del self.running_tasks[event.pid] - self.running_pids.remove(event.pid) - self.needUpdate = True + tid = event._fn + ":" + event._task + removetid(event.pid, tid) elif isinstance(event, bb.build.TaskFailedSilent): - del self.running_tasks[event.pid] - self.running_pids.remove(event.pid) + tid = event._fn + ":" + event._task + removetid(event.pid, tid) # Don't add to the failed tasks list since this is e.g. a setscene task failure - self.needUpdate = True elif isinstance(event, bb.build.TaskFailed): - del self.running_tasks[event.pid] - self.running_pids.remove(event.pid) + tid = event._fn + ":" + event._task + removetid(event.pid, tid) self.failed_tasks.append( { 'title' : "%s %s" % (event._package, event._task)}) - self.needUpdate = True elif isinstance(event, bb.runqueue.runQueueTaskStarted): self.tasknumber_current = event.stats.completed + event.stats.active + event.stats.failed + 1 self.tasknumber_total = event.stats.total self.needUpdate = True elif isinstance(event, bb.build.TaskProgress): - if event.pid > 0: - self.running_tasks[event.pid]['progress'] = event.progress - self.running_tasks[event.pid]['rate'] = event.rate + if event.pid > 0 and event.pid in self.pidmap: + self.running_tasks[self.pidmap[event.pid]]['progress'] = event.progress + self.running_tasks[self.pidmap[event.pid]]['rate'] = event.rate self.needUpdate = True else: return False diff --git a/poky/bitbake/lib/bb/utils.py b/poky/bitbake/lib/bb/utils.py index 8d40bcdf8..5f5767c1d 100644 --- a/poky/bitbake/lib/bb/utils.py +++ b/poky/bitbake/lib/bb/utils.py @@ -24,7 +24,6 @@ import fnmatch import traceback import errno import signal -import ast import collections import copy from subprocess import getstatusoutput @@ -428,10 +427,11 @@ def fileslocked(files): for lockfile in files: locks.append(bb.utils.lockfile(lockfile)) - yield - - for lock in locks: - bb.utils.unlockfile(lock) + try: + yield + finally: + for lock in locks: + bb.utils.unlockfile(lock) @contextmanager def timeout(seconds): @@ -556,6 +556,20 @@ def sha1_file(filename): import hashlib return _hasher(hashlib.sha1(), filename) +def sha384_file(filename): + """ + Return the hex string representation of the SHA384 checksum of the filename + """ + import hashlib + return _hasher(hashlib.sha384(), filename) + +def sha512_file(filename): + """ + Return the hex string representation of the SHA512 checksum of the filename + """ + import hashlib + return _hasher(hashlib.sha512(), filename) + def preserved_envvars_exported(): """Variables which are taken from the environment and placed in and exported from the metadata""" @@ -850,7 +864,7 @@ def copyfile(src, dest, newmtime = None, sstat = None): if destexists and not stat.S_ISDIR(dstat[stat.ST_MODE]): os.unlink(dest) os.symlink(target, dest) - #os.lchown(dest,sstat[stat.ST_UID],sstat[stat.ST_GID]) + os.lchown(dest,sstat[stat.ST_UID],sstat[stat.ST_GID]) return os.lstat(dest) except Exception as e: logger.warning("copyfile: failed to create symlink %s to %s (%s)" % (dest, target, e)) @@ -1025,6 +1039,43 @@ def filter(variable, checkvalues, d): checkvalues = set(checkvalues) return ' '.join(sorted(checkvalues & val)) + +def get_referenced_vars(start_expr, d): + """ + :return: names of vars referenced in start_expr (recursively), in quasi-BFS order (variables within the same level + are ordered arbitrarily) + """ + + seen = set() + ret = [] + + # The first entry in the queue is the unexpanded start expression + queue = collections.deque([start_expr]) + # Subsequent entries will be variable names, so we need to track whether or not entry requires getVar + is_first = True + + empty_data = bb.data.init() + while queue: + entry = queue.popleft() + if is_first: + # Entry is the start expression - no expansion needed + is_first = False + expression = entry + else: + # This is a variable name - need to get the value + expression = d.getVar(entry, False) + ret.append(entry) + + # expandWithRefs is how we actually get the referenced variables in the expression. We call it using an empty + # data store because we only want the variables directly used in the expression. It returns a set, which is what + # dooms us to only ever be "quasi-BFS" rather than full BFS. + new_vars = empty_data.expandWithRefs(expression, None).references - set(seen) + + queue.extend(new_vars) + seen.update(new_vars) + return ret + + def cpu_count(): return multiprocessing.cpu_count() @@ -1560,3 +1611,29 @@ class LogCatcher(logging.Handler): self.messages.append(bb.build.logformatter.format(record)) def contains(self, message): return (message in self.messages) + +def is_semver(version): + """ + Is the version string following the semver semantic? + + https://semver.org/spec/v2.0.0.html + """ + regex = re.compile( + r""" + ^ + (0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*) + (?:-( + (?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*) + (?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))* + ))? + (?:\+( + [0-9a-zA-Z-]+ + (?:\.[0-9a-zA-Z-]+)* + ))? + $ + """, re.VERBOSE) + + if regex.match(version) is None: + return False + + return True diff --git a/poky/bitbake/lib/bblayers/common.py b/poky/bitbake/lib/bblayers/common.py index c5657d381..6c76ef350 100644 --- a/poky/bitbake/lib/bblayers/common.py +++ b/poky/bitbake/lib/bblayers/common.py @@ -17,7 +17,7 @@ class LayerPlugin(): def tinfoil_init(self, tinfoil): self.tinfoil = tinfoil self.bblayers = (self.tinfoil.config_data.getVar('BBLAYERS') or "").split() - layerconfs = self.tinfoil.config_data.varhistory.get_variable_items_files('BBFILE_COLLECTIONS', self.tinfoil.config_data) + layerconfs = self.tinfoil.config_data.varhistory.get_variable_items_files('BBFILE_COLLECTIONS') self.bbfile_collections = {layer: os.path.dirname(os.path.dirname(path)) for layer, path in layerconfs.items()} @staticmethod diff --git a/poky/bitbake/lib/bblayers/layerindex.py b/poky/bitbake/lib/bblayers/layerindex.py index 57cd9027f..95b67a662 100644 --- a/poky/bitbake/lib/bblayers/layerindex.py +++ b/poky/bitbake/lib/bblayers/layerindex.py @@ -24,7 +24,7 @@ class LayerIndexPlugin(ActionPlugin): This class inherits ActionPlugin to get do_add_layer. """ - def get_fetch_layer(self, fetchdir, url, subdir, fetch_layer): + def get_fetch_layer(self, fetchdir, url, subdir, fetch_layer, branch, shallow=False): layername = self.get_layer_name(url) if os.path.splitext(layername)[1] == '.git': layername = os.path.splitext(layername)[0] @@ -32,9 +32,15 @@ class LayerIndexPlugin(ActionPlugin): layerdir = os.path.join(repodir, subdir) if not os.path.exists(repodir): if fetch_layer: - result = subprocess.call(['git', 'clone', url, repodir]) + cmd = ['git', 'clone'] + if shallow: + cmd.extend(['--depth', '1']) + if branch: + cmd.extend(['-b' , branch]) + cmd.extend([url, repodir]) + result = subprocess.call(cmd) if result: - logger.error("Failed to download %s" % url) + logger.error("Failed to download %s (%s)" % (url, branch)) return None, None, None else: return subdir, layername, layerdir @@ -171,7 +177,9 @@ class LayerIndexPlugin(ActionPlugin): subdir, name, layerdir = self.get_fetch_layer(fetchdir, layerBranch.layer.vcs_url, layerBranch.vcs_subdir, - not args.show_only) + not args.show_only, + layerBranch.actual_branch, + args.shallow) if not name: # Error already shown return 1 @@ -204,6 +212,7 @@ class LayerIndexPlugin(ActionPlugin): parser_layerindex_fetch = self.add_command(sp, 'layerindex-fetch', self.do_layerindex_fetch, parserecipes=False) parser_layerindex_fetch.add_argument('-n', '--show-only', help='show dependencies and do nothing else', action='store_true') parser_layerindex_fetch.add_argument('-b', '--branch', help='branch name to fetch') + parser_layerindex_fetch.add_argument('-s', '--shallow', help='do only shallow clones (--depth=1)', action='store_true') parser_layerindex_fetch.add_argument('-i', '--ignore', help='assume the specified layers do not need to be fetched/added (separate multiple layers with commas, no spaces)', metavar='LAYER') parser_layerindex_fetch.add_argument('layername', nargs='+', help='layer to fetch') diff --git a/poky/bitbake/lib/bblayers/query.py b/poky/bitbake/lib/bblayers/query.py index 7db49c8e2..e2cc31053 100644 --- a/poky/bitbake/lib/bblayers/query.py +++ b/poky/bitbake/lib/bblayers/query.py @@ -46,7 +46,7 @@ layer, with the preferred version first. Note that skipped recipes that are overlayed will also be listed, with a " (skipped)" suffix. """ - items_listed = self.list_recipes('Overlayed recipes', None, True, args.same_version, args.filenames, False, True, None, False, None) + items_listed = self.list_recipes('Overlayed recipes', None, True, args.same_version, args.filenames, False, True, None, False, None, args.mc) # Check for overlayed .bbclass files classes = collections.defaultdict(list) @@ -112,9 +112,9 @@ skipped recipes will also be listed, with a " (skipped)" suffix. title = 'Matching recipes:' else: title = 'Available recipes:' - self.list_recipes(title, args.pnspec, False, False, args.filenames, args.recipes_only, args.multiple, args.layer, args.bare, inheritlist) + self.list_recipes(title, args.pnspec, False, False, args.filenames, args.recipes_only, args.multiple, args.layer, args.bare, inheritlist, args.mc) - def list_recipes(self, title, pnspec, show_overlayed_only, show_same_ver_only, show_filenames, show_recipes_only, show_multi_provider_only, selected_layer, bare, inherits): + def list_recipes(self, title, pnspec, show_overlayed_only, show_same_ver_only, show_filenames, show_recipes_only, show_multi_provider_only, selected_layer, bare, inherits, mc): if inherits: bbpath = str(self.tinfoil.config_data.getVar('BBPATH')) for classname in inherits: @@ -123,14 +123,18 @@ skipped recipes will also be listed, with a " (skipped)" suffix. logger.error('No class named %s found in BBPATH', classfile) sys.exit(1) - pkg_pn = self.tinfoil.cooker.recipecaches[''].pkg_pn - (latest_versions, preferred_versions) = self.tinfoil.find_providers() - allproviders = self.tinfoil.get_all_providers() + pkg_pn = self.tinfoil.cooker.recipecaches[mc].pkg_pn + (latest_versions, preferred_versions) = self.tinfoil.find_providers(mc) + allproviders = self.tinfoil.get_all_providers(mc) # Ensure we list skipped recipes # We are largely guessing about PN, PV and the preferred version here, # but we have no choice since skipped recipes are not fully parsed skiplist = list(self.tinfoil.cooker.skiplist.keys()) + mcspec = 'mc:%s:' % mc + if mc: + skiplist = [s[len(mcspec):] for s in skiplist if s.startswith(mcspec)] + for fn in skiplist: recipe_parts = os.path.splitext(os.path.basename(fn))[0].split('_') p = recipe_parts[0] @@ -187,7 +191,7 @@ skipped recipes will also be listed, with a " (skipped)" suffix. # We only display once per recipe, we should prefer non extended versions of the # recipe if present (so e.g. in OpenEmbedded, openssl rather than nativesdk-openssl # which would otherwise sort first). - if realfn[1] and realfn[0] in self.tinfoil.cooker.recipecaches[''].pkg_fn: + if realfn[1] and realfn[0] in self.tinfoil.cooker.recipecaches[mc].pkg_fn: continue if inherits: @@ -496,6 +500,7 @@ NOTE: .bbappend files can impact the dependencies. parser_show_overlayed = self.add_command(sp, 'show-overlayed', self.do_show_overlayed) parser_show_overlayed.add_argument('-f', '--filenames', help='instead of the default formatting, list filenames of higher priority recipes with the ones they overlay indented underneath', action='store_true') parser_show_overlayed.add_argument('-s', '--same-version', help='only list overlayed recipes where the version is the same', action='store_true') + parser_show_overlayed.add_argument('--mc', help='use specified multiconfig', default='') parser_show_recipes = self.add_command(sp, 'show-recipes', self.do_show_recipes) parser_show_recipes.add_argument('-f', '--filenames', help='instead of the default formatting, list filenames of higher priority recipes with the ones they overlay indented underneath', action='store_true') @@ -504,6 +509,7 @@ NOTE: .bbappend files can impact the dependencies. parser_show_recipes.add_argument('-i', '--inherits', help='only list recipes that inherit the named class(es) - separate multiple classes using , (without spaces)', metavar='CLASS', default='') parser_show_recipes.add_argument('-l', '--layer', help='only list recipes from the selected layer', default='') parser_show_recipes.add_argument('-b', '--bare', help='output just names without the "(skipped)" marker', action='store_true') + parser_show_recipes.add_argument('--mc', help='use specified multiconfig', default='') parser_show_recipes.add_argument('pnspec', nargs='*', help='optional recipe name specification (wildcards allowed, enclose in quotes to avoid shell expansion)') parser_show_appends = self.add_command(sp, 'show-appends', self.do_show_appends) diff --git a/poky/bitbake/lib/bs4/__init__.py b/poky/bitbake/lib/bs4/__init__.py index f6fdfd50b..e35725b86 100644 --- a/poky/bitbake/lib/bs4/__init__.py +++ b/poky/bitbake/lib/bs4/__init__.py @@ -427,7 +427,7 @@ class BeautifulSoup(Tag): if self.is_xml: # Print the XML declaration encoding_part = '' - if eventual_encoding != None: + if eventual_encoding is not None: encoding_part = ' encoding="%s"' % eventual_encoding prefix = '\n' % encoding_part else: diff --git a/poky/bitbake/lib/bs4/builder/_html5lib.py b/poky/bitbake/lib/bs4/builder/_html5lib.py index 2b7a70aa1..9e9216ef9 100644 --- a/poky/bitbake/lib/bs4/builder/_html5lib.py +++ b/poky/bitbake/lib/bs4/builder/_html5lib.py @@ -2,7 +2,6 @@ __all__ = [ 'HTML5TreeBuilder', ] -from pdb import set_trace import warnings from bs4.builder import ( PERMISSIVE, @@ -322,7 +321,7 @@ class Element(treebuildersbase.Node): return self.element.contents def getNameTuple(self): - if self.namespace == None: + if self.namespace is None: return namespaces["html"], self.name else: return self.namespace, self.name diff --git a/poky/bitbake/lib/bs4/dammit.py b/poky/bitbake/lib/bs4/dammit.py index 805aa908a..7ad9e0dd1 100644 --- a/poky/bitbake/lib/bs4/dammit.py +++ b/poky/bitbake/lib/bs4/dammit.py @@ -8,12 +8,10 @@ XML or HTML to reflect a new encoding; that's the tree builder's job. """ __license__ = "MIT" -from pdb import set_trace import codecs from html.entities import codepoint2name import re import logging -import string # Import a library to autodetect character encodings. chardet_type = None @@ -38,12 +36,6 @@ except ImportError: def chardet_dammit(s): return None -# Available from http://cjkpython.i18n.org/. -try: - import iconv_codec -except ImportError: - pass - xml_encoding_re = re.compile( r'^<\?.*encoding=[\'"](.*?)[\'"].*\?>'.encode(), re.I) html_meta_re = re.compile( diff --git a/poky/bitbake/lib/bs4/element.py b/poky/bitbake/lib/bs4/element.py index 3775a6045..68be42d13 100644 --- a/poky/bitbake/lib/bs4/element.py +++ b/poky/bitbake/lib/bs4/element.py @@ -1,6 +1,5 @@ __license__ = "MIT" -from pdb import set_trace import collections.abc import re import sys diff --git a/poky/bitbake/lib/bs4/testing.py b/poky/bitbake/lib/bs4/testing.py index 3a2f260e2..953bca8e9 100644 --- a/poky/bitbake/lib/bs4/testing.py +++ b/poky/bitbake/lib/bs4/testing.py @@ -4,7 +4,6 @@ __license__ = "MIT" import pickle import copy -import functools import unittest from unittest import TestCase from bs4 import BeautifulSoup diff --git a/poky/bitbake/lib/bs4/tests/test_docs.py b/poky/bitbake/lib/bs4/tests/test_docs.py index 5b9f67709..d1d76a33b 100644 --- a/poky/bitbake/lib/bs4/tests/test_docs.py +++ b/poky/bitbake/lib/bs4/tests/test_docs.py @@ -7,19 +7,15 @@ __all__ = [ 'additional_tests', ] -import atexit import doctest -import os #from pkg_resources import ( # resource_filename, resource_exists, resource_listdir, cleanup_resources) -import unittest DOCTEST_FLAGS = ( doctest.ELLIPSIS | doctest.NORMALIZE_WHITESPACE | doctest.REPORT_NDIFF) - # def additional_tests(): # "Run the doc tests (README.txt and docs/*, if any exist)" # doctest_files = [ diff --git a/poky/bitbake/lib/bs4/tests/test_htmlparser.py b/poky/bitbake/lib/bs4/tests/test_htmlparser.py index b45e35f99..30a25e670 100644 --- a/poky/bitbake/lib/bs4/tests/test_htmlparser.py +++ b/poky/bitbake/lib/bs4/tests/test_htmlparser.py @@ -1,7 +1,6 @@ """Tests to ensure that the html.parser tree builder generates good trees.""" -from pdb import set_trace import pickle from bs4.testing import SoupTest, HTMLTreeBuilderSmokeTest from bs4.builder import HTMLParserTreeBuilder diff --git a/poky/bitbake/lib/bs4/tests/test_lxml.py b/poky/bitbake/lib/bs4/tests/test_lxml.py index 6c2a1d73e..6b6cdd07c 100644 --- a/poky/bitbake/lib/bs4/tests/test_lxml.py +++ b/poky/bitbake/lib/bs4/tests/test_lxml.py @@ -1,6 +1,5 @@ """Tests to ensure that the lxml tree builder generates good trees.""" -import re import warnings try: @@ -14,13 +13,8 @@ except ImportError as e: if LXML_PRESENT: from bs4.builder import LXMLTreeBuilder, LXMLTreeBuilderForXML -from bs4 import ( - BeautifulSoup, - BeautifulStoneSoup, - ) -from bs4.element import Comment, Doctype, SoupStrainer +from bs4 import BeautifulStoneSoup from bs4.testing import skipIf -from bs4.tests import test_htmlparser from bs4.testing import ( HTMLTreeBuilderSmokeTest, XMLTreeBuilderSmokeTest, diff --git a/poky/bitbake/lib/bs4/tests/test_soup.py b/poky/bitbake/lib/bs4/tests/test_soup.py index f87949e3d..6ad3cb376 100644 --- a/poky/bitbake/lib/bs4/tests/test_soup.py +++ b/poky/bitbake/lib/bs4/tests/test_soup.py @@ -1,16 +1,12 @@ # -*- coding: utf-8 -*- """Tests of Beautiful Soup as a whole.""" -from pdb import set_trace import logging import unittest import sys import tempfile -from bs4 import ( - BeautifulSoup, - BeautifulStoneSoup, -) +from bs4 import BeautifulSoup from bs4.element import ( CharsetMetaAttributeValue, ContentMetaAttributeValue, diff --git a/poky/bitbake/lib/bs4/tests/test_tree.py b/poky/bitbake/lib/bs4/tests/test_tree.py index 6d3e67f31..8e5c66426 100644 --- a/poky/bitbake/lib/bs4/tests/test_tree.py +++ b/poky/bitbake/lib/bs4/tests/test_tree.py @@ -9,16 +9,12 @@ same markup, but all Beautiful Soup trees can be traversed with the methods tested here. """ -from pdb import set_trace import copy import pickle import re import warnings from bs4 import BeautifulSoup -from bs4.builder import ( - builder_registry, - HTMLParserTreeBuilder, -) +from bs4.builder import builder_registry from bs4.element import ( PY3K, CData, @@ -29,10 +25,7 @@ from bs4.element import ( SoupStrainer, Tag, ) -from bs4.testing import ( - SoupTest, - skipIf, -) +from bs4.testing import SoupTest XML_BUILDER_PRESENT = (builder_registry.lookup("xml") is not None) LXML_PRESENT = (builder_registry.lookup("lxml") is not None) diff --git a/poky/bitbake/lib/hashserv/client.py b/poky/bitbake/lib/hashserv/client.py index f65956617..46085d641 100644 --- a/poky/bitbake/lib/hashserv/client.py +++ b/poky/bitbake/lib/hashserv/client.py @@ -3,7 +3,6 @@ # SPDX-License-Identifier: GPL-2.0-only # -from contextlib import closing import json import logging import socket @@ -148,6 +147,14 @@ class Client(object): m['unihash'] = unihash return self.send_message({'report': m}) + def report_unihash_equiv(self, taskhash, method, unihash, extra={}): + self._set_mode(self.MODE_NORMAL) + m = extra.copy() + m['taskhash'] = taskhash + m['method'] = method + m['unihash'] = unihash + return self.send_message({'report-equiv': m}) + def get_stats(self): self._set_mode(self.MODE_NORMAL) return self.send_message({'get-stats': None}) diff --git a/poky/bitbake/lib/hashserv/server.py b/poky/bitbake/lib/hashserv/server.py index 0aff77688..cc7e48233 100644 --- a/poky/bitbake/lib/hashserv/server.py +++ b/poky/bitbake/lib/hashserv/server.py @@ -143,6 +143,7 @@ class ServerClient(object): handlers = { 'get': self.handle_get, 'report': self.handle_report, + 'report-equiv': self.handle_equivreport, 'get-stream': self.handle_get_stream, 'get-stats': self.handle_get_stats, 'reset-stats': self.handle_reset_stats, @@ -303,6 +304,41 @@ class ServerClient(object): self.write_message(d) + async def handle_equivreport(self, data): + with closing(self.db.cursor()) as cursor: + insert_data = { + 'method': data['method'], + 'outhash': "", + 'taskhash': data['taskhash'], + 'unihash': data['unihash'], + 'created': datetime.now() + } + + for k in ('owner', 'PN', 'PV', 'PR', 'task', 'outhash_siginfo'): + if k in data: + insert_data[k] = data[k] + + cursor.execute('''INSERT OR IGNORE INTO tasks_v2 (%s) VALUES (%s)''' % ( + ', '.join(sorted(insert_data.keys())), + ', '.join(':' + k for k in sorted(insert_data.keys()))), + insert_data) + + self.db.commit() + + # Fetch the unihash that will be reported for the taskhash. If the + # unihash matches, it means this row was inserted (or the mapping + # was already valid) + row = self.query_equivalent(data['method'], data['taskhash']) + + if row['unihash'] == data['unihash']: + logger.info('Adding taskhash equivalence for %s with unihash %s', + data['taskhash'], row['unihash']) + + d = {k: row[k] for k in ('taskhash', 'method', 'unihash')} + + self.write_message(d) + + async def handle_get_stats(self, request): d = { 'requests': self.request_stats.todict(), diff --git a/poky/bitbake/lib/layerindexlib/cooker.py b/poky/bitbake/lib/layerindexlib/cooker.py index 604a9611d..65b23d087 100644 --- a/poky/bitbake/lib/layerindexlib/cooker.py +++ b/poky/bitbake/lib/layerindexlib/cooker.py @@ -4,9 +4,8 @@ # import logging -import json -from collections import OrderedDict, defaultdict +from collections import defaultdict from urllib.parse import unquote, urlparse @@ -94,7 +93,7 @@ class CookerPlugin(layerindexlib.plugin.IndexPlugin): return index collections = d.getVar('BBFILE_COLLECTIONS') - layerconfs = d.varhistory.get_variable_items_files('BBFILE_COLLECTIONS', d) + layerconfs = d.varhistory.get_variable_items_files('BBFILE_COLLECTIONS') bbfile_collections = {layer: os.path.dirname(os.path.dirname(path)) for layer, path in layerconfs.items()} (_, bb_branch, _, _) = self._get_bitbake_info() diff --git a/poky/bitbake/lib/layerindexlib/plugin.py b/poky/bitbake/lib/layerindexlib/plugin.py index 7015a1af2..cadda36c7 100644 --- a/poky/bitbake/lib/layerindexlib/plugin.py +++ b/poky/bitbake/lib/layerindexlib/plugin.py @@ -7,10 +7,7 @@ # Plugin base class # Utility Functions for working on layerindex data -import argparse import logging -import os -import bb.msg logger = logging.getLogger('BitBake.layerindexlib.plugin') diff --git a/poky/bitbake/lib/layerindexlib/tests/cooker.py b/poky/bitbake/lib/layerindexlib/tests/cooker.py index 1fa102e60..1d0685e09 100644 --- a/poky/bitbake/lib/layerindexlib/tests/cooker.py +++ b/poky/bitbake/lib/layerindexlib/tests/cooker.py @@ -3,15 +3,12 @@ # SPDX-License-Identifier: GPL-2.0-only # -import unittest -import tempfile import os import bb import layerindexlib from layerindexlib.tests.common import LayersTest -import logging class LayerIndexCookerTest(LayersTest): diff --git a/poky/bitbake/lib/layerindexlib/tests/layerindexobj.py b/poky/bitbake/lib/layerindexlib/tests/layerindexobj.py index 0c5ec8881..de1e47468 100644 --- a/poky/bitbake/lib/layerindexlib/tests/layerindexobj.py +++ b/poky/bitbake/lib/layerindexlib/tests/layerindexobj.py @@ -3,14 +3,8 @@ # SPDX-License-Identifier: GPL-2.0-only # -import unittest -import tempfile -import os -import bb - from layerindexlib.tests.common import LayersTest -import logging class LayerIndexObjectsTest(LayersTest): def setUp(self): diff --git a/poky/bitbake/lib/layerindexlib/tests/restapi.py b/poky/bitbake/lib/layerindexlib/tests/restapi.py index 6d8dc0058..e5ccafe5c 100644 --- a/poky/bitbake/lib/layerindexlib/tests/restapi.py +++ b/poky/bitbake/lib/layerindexlib/tests/restapi.py @@ -4,14 +4,11 @@ # import unittest -import tempfile import os -import bb import layerindexlib from layerindexlib.tests.common import LayersTest -import logging def skipIfNoNetwork(): if os.environ.get("BB_SKIP_NETTESTS") == "yes": diff --git a/poky/bitbake/lib/ply/yacc.py b/poky/bitbake/lib/ply/yacc.py index d50886ed2..561784f2f 100644 --- a/poky/bitbake/lib/ply/yacc.py +++ b/poky/bitbake/lib/ply/yacc.py @@ -488,7 +488,7 @@ class LRParser: # --! DEBUG return result - if t == None: + if t is None: # --! DEBUG debug.error('Error : %s', @@ -766,7 +766,7 @@ class LRParser: n = symstack[-1] return getattr(n,"value",None) - if t == None: + if t is None: # We have some kind of parsing error here. To handle # this, we are going to push the current token onto @@ -1021,7 +1021,7 @@ class LRParser: n = symstack[-1] return getattr(n,"value",None) - if t == None: + if t is None: # We have some kind of parsing error here. To handle # this, we are going to push the current token onto diff --git a/poky/bitbake/lib/prserv/db.py b/poky/bitbake/lib/prserv/db.py index 117d8c052..cb2a2461e 100644 --- a/poky/bitbake/lib/prserv/db.py +++ b/poky/bitbake/lib/prserv/db.py @@ -71,7 +71,7 @@ class PRTable(object): data=self._execute("SELECT value FROM %s WHERE version=? AND pkgarch=? AND checksum=?;" % self.table, (version, pkgarch, checksum)) row=data.fetchone() - if row != None: + if row is not None: return row[0] else: #no value found, try to insert @@ -87,7 +87,7 @@ class PRTable(object): data=self._execute("SELECT value FROM %s WHERE version=? AND pkgarch=? AND checksum=?;" % self.table, (version, pkgarch, checksum)) row=data.fetchone() - if row != None: + if row is not None: return row[0] else: raise prserv.NotFoundError @@ -99,7 +99,7 @@ class PRTable(object): % (self.table, self.table), (version, pkgarch, checksum, version, pkgarch)) row=data.fetchone() - if row != None: + if row is not None: return row[0] else: #no value found, try to insert @@ -116,7 +116,7 @@ class PRTable(object): data=self._execute("SELECT value FROM %s WHERE version=? AND pkgarch=? AND checksum=?;" % self.table, (version, pkgarch, checksum)) row=data.fetchone() - if row != None: + if row is not None: return row[0] else: raise prserv.NotFoundError @@ -132,7 +132,7 @@ class PRTable(object): data = self._execute("SELECT value FROM %s WHERE version=? AND pkgarch=? AND checksum=?;" % self.table, (version, pkgarch, checksum)) row = data.fetchone() - if row != None: + if row is not None: val=row[0] else: #no value found, try to insert @@ -147,7 +147,7 @@ class PRTable(object): data = self._execute("SELECT value FROM %s WHERE version=? AND pkgarch=? AND checksum=?;" % self.table, (version, pkgarch, checksum)) row = data.fetchone() - if row != None: + if row is not None: val = row[0] return val @@ -170,7 +170,7 @@ class PRTable(object): data = self._execute("SELECT value FROM %s WHERE version=? AND pkgarch=? AND checksum=? AND value>=?;" % self.table, (version,pkgarch,checksum,value)) row=data.fetchone() - if row != None: + if row is not None: return row[0] else: return None diff --git a/poky/bitbake/lib/prserv/serv.py b/poky/bitbake/lib/prserv/serv.py index b854ba14b..25dcf8a0e 100644 --- a/poky/bitbake/lib/prserv/serv.py +++ b/poky/bitbake/lib/prserv/serv.py @@ -292,10 +292,9 @@ class PRServer(SimpleXMLRPCServer): logger.addHandler(streamhandler) # write pidfile - pid = str(os.getpid()) - pf = open(self.pidfile, 'w') - pf.write("%s\n" % pid) - pf.close() + pid = str(os.getpid()) + with open(self.pidfile, 'w') as pf: + pf.write("%s\n" % pid) self.work_forever() self.delpid() @@ -353,9 +352,8 @@ def start_daemon(dbfile, host, port, logfile): ip = socket.gethostbyname(host) pidfile = PIDPREFIX % (ip, port) try: - pf = open(pidfile,'r') - pid = int(pf.readline().strip()) - pf.close() + with open(pidfile) as pf: + pid = int(pf.readline().strip()) except IOError: pid = None @@ -449,29 +447,35 @@ class PRServiceConfigError(Exception): def auto_start(d): global singleton - # Shutdown any existing PR Server - auto_shutdown() - host_params = list(filter(None, (d.getVar('PRSERV_HOST') or '').split(':'))) if not host_params: + # Shutdown any existing PR Server + auto_shutdown() return None if len(host_params) != 2: + # Shutdown any existing PR Server + auto_shutdown() logger.critical('\n'.join(['PRSERV_HOST: incorrect format', 'Usage: PRSERV_HOST = ":"'])) raise PRServiceConfigError - if is_local_special(host_params[0], int(host_params[1])) and not singleton: + if is_local_special(host_params[0], int(host_params[1])): import bb.utils cachedir = (d.getVar("PERSISTENT_DIR") or d.getVar("CACHE")) if not cachedir: logger.critical("Please set the 'PERSISTENT_DIR' or 'CACHE' variable") raise PRServiceConfigError - bb.utils.mkdirhier(cachedir) dbfile = os.path.join(cachedir, "prserv.sqlite3") logfile = os.path.join(cachedir, "prserv.log") - singleton = PRServSingleton(os.path.abspath(dbfile), os.path.abspath(logfile), ("localhost",0)) - singleton.start() + if singleton: + if singleton.dbfile != dbfile: + # Shutdown any existing PR Server as doesn't match config + auto_shutdown() + if not singleton: + bb.utils.mkdirhier(cachedir) + singleton = PRServSingleton(os.path.abspath(dbfile), os.path.abspath(logfile), ("localhost",0)) + singleton.start() if singleton: host, port = singleton.getinfo() else: diff --git a/poky/bitbake/lib/pyinotify.py b/poky/bitbake/lib/pyinotify.py index 1528a22e8..6ae40a2d7 100644 --- a/poky/bitbake/lib/pyinotify.py +++ b/poky/bitbake/lib/pyinotify.py @@ -1274,7 +1274,7 @@ class Notifier: basename = os.path.basename(sys.argv[0]) or 'pyinotify' pid_file = os.path.join(dirname, basename + '.pid') - if pid_file != False and os.path.lexists(pid_file): + if pid_file and os.path.lexists(pid_file): err = 'Cannot daemonize: pid file %s already exists.' % pid_file raise NotifierError(err) @@ -1308,7 +1308,7 @@ class Notifier: fork_daemon() # Write pid - if pid_file != False: + if pid_file: flags = os.O_WRONLY|os.O_CREAT|os.O_NOFOLLOW|os.O_EXCL fd_pid = os.open(pid_file, flags, 0o0600) os.write(fd_pid, bytes(str(os.getpid()) + '\n', diff --git a/poky/bitbake/lib/toaster/bldcollector/urls.py b/poky/bitbake/lib/toaster/bldcollector/urls.py index 8eb1e34a5..efd67a81a 100644 --- a/poky/bitbake/lib/toaster/bldcollector/urls.py +++ b/poky/bitbake/lib/toaster/bldcollector/urls.py @@ -6,7 +6,7 @@ # SPDX-License-Identifier: GPL-2.0-only # -from django.conf.urls import include, url +from django.conf.urls import url import bldcollector.views diff --git a/poky/bitbake/lib/toaster/bldcollector/views.py b/poky/bitbake/lib/toaster/bldcollector/views.py index c708b415e..04cd8b3dd 100644 --- a/poky/bitbake/lib/toaster/bldcollector/views.py +++ b/poky/bitbake/lib/toaster/bldcollector/views.py @@ -6,16 +6,8 @@ # SPDX-License-Identifier: GPL-2.0-only # -from django.views.decorators.cache import cache_control -from django.core.urlresolvers import reverse -from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger +from django.urls import reverse from django.http import HttpResponseBadRequest, HttpResponse -from django.utils import timezone -from django.utils.html import escape -from datetime import timedelta -from django.utils import formats -from toastergui.templatetags.projecttags import json as jsonfilter -import json import os import tempfile import subprocess diff --git a/poky/bitbake/lib/toaster/bldcontrol/admin.py b/poky/bitbake/lib/toaster/bldcontrol/admin.py index e85c30ed1..1754bc11c 100644 --- a/poky/bitbake/lib/toaster/bldcontrol/admin.py +++ b/poky/bitbake/lib/toaster/bldcontrol/admin.py @@ -3,7 +3,6 @@ # from django.contrib import admin -from django.contrib.admin.filters import RelatedFieldListFilter from .models import BuildEnvironment class BuildEnvironmentAdmin(admin.ModelAdmin): diff --git a/poky/bitbake/lib/toaster/bldcontrol/bbcontroller.py b/poky/bitbake/lib/toaster/bldcontrol/bbcontroller.py index 301df1880..71c288df3 100644 --- a/poky/bitbake/lib/toaster/bldcontrol/bbcontroller.py +++ b/poky/bitbake/lib/toaster/bldcontrol/bbcontroller.py @@ -8,10 +8,8 @@ import os import sys -import re -from django.db import transaction from django.db.models import Q -from bldcontrol.models import BuildEnvironment, BRLayer, BRVariable, BRTarget, BRBitbake +from bldcontrol.models import BuildEnvironment, BRLayer, BRBitbake # load Bitbake components path = os.path.join(os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))) diff --git a/poky/bitbake/lib/toaster/bldcontrol/localhostbecontroller.py b/poky/bitbake/lib/toaster/bldcontrol/localhostbecontroller.py index 39ea736b5..75674ccbf 100644 --- a/poky/bitbake/lib/toaster/bldcontrol/localhostbecontroller.py +++ b/poky/bitbake/lib/toaster/bldcontrol/localhostbecontroller.py @@ -7,27 +7,24 @@ # import os -import sys import re import shutil import time -from django.db import transaction -from django.db.models import Q -from bldcontrol.models import BuildEnvironment, BuildRequest, BRLayer, BRVariable, BRTarget, BRBitbake, Build -from orm.models import CustomImageRecipe, Layer, Layer_Version, Project, ProjectLayer, ToasterSetting +from bldcontrol.models import BuildEnvironment, BuildRequest, Build +from orm.models import CustomImageRecipe, Layer, Layer_Version, Project, ToasterSetting from orm.models import signal_runbuilds import subprocess from toastermain import settings -from bldcontrol.bbcontroller import BuildEnvironmentController, ShellCmdException, BuildSetupException, BitbakeController +from bldcontrol.bbcontroller import BuildEnvironmentController, ShellCmdException, BuildSetupException import logging logger = logging.getLogger("toaster") install_dir = os.environ.get('TOASTER_DIR') -from pprint import pprint, pformat +from pprint import pformat class LocalhostBEController(BuildEnvironmentController): """ Implementation of the BuildEnvironmentController for the localhost; diff --git a/poky/bitbake/lib/toaster/bldcontrol/management/commands/checksettings.py b/poky/bitbake/lib/toaster/bldcontrol/management/commands/checksettings.py index fe2c4dc2b..20f9dce56 100644 --- a/poky/bitbake/lib/toaster/bldcontrol/management/commands/checksettings.py +++ b/poky/bitbake/lib/toaster/bldcontrol/management/commands/checksettings.py @@ -2,11 +2,9 @@ # SPDX-License-Identifier: GPL-2.0-only # -from django.core.management.base import BaseCommand, CommandError -from django.db import transaction +from django.core.management.base import BaseCommand from django.core.management import call_command -from bldcontrol.bbcontroller import getBuildEnvironmentController, ShellCmdException from bldcontrol.models import BuildRequest, BuildEnvironment, BRError from orm.models import ToasterSetting, Build, Layer @@ -80,7 +78,7 @@ class Command(BaseCommand): template_conf = os.environ.get("TEMPLATECONF", "") custom_xml_only = os.environ.get("CUSTOM_XML_ONLY") - if ToasterSetting.objects.filter(name='CUSTOM_XML_ONLY').count() > 0 or (not custom_xml_only == None): + if ToasterSetting.objects.filter(name='CUSTOM_XML_ONLY').count() > 0 or custom_xml_only is not None: # only use the custom settings pass elif "poky" in template_conf: diff --git a/poky/bitbake/lib/toaster/bldcontrol/management/commands/runbuilds.py b/poky/bitbake/lib/toaster/bldcontrol/management/commands/runbuilds.py index 50ec40986..19f659ec4 100644 --- a/poky/bitbake/lib/toaster/bldcontrol/management/commands/runbuilds.py +++ b/poky/bitbake/lib/toaster/bldcontrol/management/commands/runbuilds.py @@ -168,17 +168,17 @@ class Command(BaseCommand): try: self.cleanup() except Exception as e: - logger.warn("runbuilds: cleanup exception %s" % str(e)) + logger.warning("runbuilds: cleanup exception %s" % str(e)) try: self.archive() except Exception as e: - logger.warn("runbuilds: archive exception %s" % str(e)) + logger.warning("runbuilds: archive exception %s" % str(e)) try: self.schedule() except Exception as e: - logger.warn("runbuilds: schedule exception %s" % str(e)) + logger.warning("runbuilds: schedule exception %s" % str(e)) def handle(self, **options): pidfile_path = os.path.join(os.environ.get("BUILDDIR", "."), diff --git a/poky/bitbake/lib/toaster/bldcontrol/migrations/0001_initial.py b/poky/bitbake/lib/toaster/bldcontrol/migrations/0001_initial.py index 67db37856..7ee19f474 100644 --- a/poky/bitbake/lib/toaster/bldcontrol/migrations/0001_initial.py +++ b/poky/bitbake/lib/toaster/bldcontrol/migrations/0001_initial.py @@ -37,7 +37,7 @@ class Migration(migrations.Migration): ('giturl', models.CharField(max_length=254)), ('commit', models.CharField(max_length=254)), ('dirpath', models.CharField(max_length=254)), - ('layer_version', models.ForeignKey(to='orm.Layer_Version', null=True)), + ('layer_version', models.ForeignKey(to='orm.Layer_Version', null=True, on_delete=models.CASCADE)), ], ), migrations.CreateModel( @@ -80,34 +80,34 @@ class Migration(migrations.Migration): ('state', models.IntegerField(default=0, choices=[(0, b'created'), (1, b'queued'), (2, b'in progress'), (3, b'completed'), (4, b'failed'), (5, b'deleted'), (6, b'archive')])), ('created', models.DateTimeField(auto_now_add=True)), ('updated', models.DateTimeField(auto_now=True)), - ('build', models.OneToOneField(null=True, to='orm.Build')), - ('environment', models.ForeignKey(to='bldcontrol.BuildEnvironment', null=True)), - ('project', models.ForeignKey(to='orm.Project')), + ('build', models.OneToOneField(null=True, to='orm.Build', on_delete=models.CASCADE)), + ('environment', models.ForeignKey(to='bldcontrol.BuildEnvironment', null=True, on_delete=models.CASCADE)), + ('project', models.ForeignKey(to='orm.Project', on_delete=models.CASCADE)), ], ), migrations.AddField( model_name='brvariable', name='req', - field=models.ForeignKey(to='bldcontrol.BuildRequest'), + field=models.ForeignKey(to='bldcontrol.BuildRequest', on_delete=models.CASCADE), ), migrations.AddField( model_name='brtarget', name='req', - field=models.ForeignKey(to='bldcontrol.BuildRequest'), + field=models.ForeignKey(to='bldcontrol.BuildRequest', on_delete=models.CASCADE), ), migrations.AddField( model_name='brlayer', name='req', - field=models.ForeignKey(to='bldcontrol.BuildRequest'), + field=models.ForeignKey(to='bldcontrol.BuildRequest', on_delete=models.CASCADE), ), migrations.AddField( model_name='brerror', name='req', - field=models.ForeignKey(to='bldcontrol.BuildRequest'), + field=models.ForeignKey(to='bldcontrol.BuildRequest', on_delete=models.CASCADE), ), migrations.AddField( model_name='brbitbake', name='req', - field=models.OneToOneField(to='bldcontrol.BuildRequest'), + field=models.OneToOneField(to='bldcontrol.BuildRequest', on_delete=models.CASCADE), ), ] diff --git a/poky/bitbake/lib/toaster/bldcontrol/models.py b/poky/bitbake/lib/toaster/bldcontrol/models.py index bcffcf5e2..c2f302da2 100644 --- a/poky/bitbake/lib/toaster/bldcontrol/models.py +++ b/poky/bitbake/lib/toaster/bldcontrol/models.py @@ -4,9 +4,8 @@ from __future__ import unicode_literals from django.db import models -from django.core.validators import MaxValueValidator, MinValueValidator from django.utils.encoding import force_text -from orm.models import Project, ProjectLayer, ProjectVariable, ProjectTarget, Build, Layer_Version +from orm.models import Project, Build, Layer_Version import logging logger = logging.getLogger("toaster") @@ -86,9 +85,9 @@ class BuildRequest(models.Model): search_allowed_fields = ("brtarget__target", "build__project__name") - project = models.ForeignKey(Project) - build = models.OneToOneField(Build, null = True) # TODO: toasterui should set this when Build is created - environment = models.ForeignKey(BuildEnvironment, null = True) + project = models.ForeignKey(Project, on_delete=models.CASCADE) + build = models.OneToOneField(Build, on_delete=models.CASCADE, null = True) # TODO: toasterui should set this when Build is created + environment = models.ForeignKey(BuildEnvironment, on_delete=models.CASCADE, null = True) state = models.IntegerField(choices = REQUEST_STATE, default = REQ_CREATED) created = models.DateTimeField(auto_now_add = True) updated = models.DateTimeField(auto_now = True) @@ -132,32 +131,32 @@ class BuildRequest(models.Model): class BRLayer(models.Model): - req = models.ForeignKey(BuildRequest) + req = models.ForeignKey(BuildRequest, on_delete=models.CASCADE) name = models.CharField(max_length=100) giturl = models.CharField(max_length=254, null=True) local_source_dir = models.CharField(max_length=254, null=True) commit = models.CharField(max_length=254, null=True) dirpath = models.CharField(max_length=254, null=True) - layer_version = models.ForeignKey(Layer_Version, null=True) + layer_version = models.ForeignKey(Layer_Version, on_delete=models.CASCADE, null=True) class BRBitbake(models.Model): - req = models.OneToOneField(BuildRequest) # only one bitbake for a request + req = models.OneToOneField(BuildRequest, on_delete=models.CASCADE) # only one bitbake for a request giturl = models.CharField(max_length =254) commit = models.CharField(max_length = 254) dirpath = models.CharField(max_length = 254) class BRVariable(models.Model): - req = models.ForeignKey(BuildRequest) + req = models.ForeignKey(BuildRequest, on_delete=models.CASCADE) name = models.CharField(max_length=100) value = models.TextField(blank = True) class BRTarget(models.Model): - req = models.ForeignKey(BuildRequest) + req = models.ForeignKey(BuildRequest, on_delete=models.CASCADE) target = models.CharField(max_length=100) task = models.CharField(max_length=100, null=True) class BRError(models.Model): - req = models.ForeignKey(BuildRequest) + req = models.ForeignKey(BuildRequest, on_delete=models.CASCADE) errtype = models.CharField(max_length=100) errmsg = models.TextField() traceback = models.TextField() diff --git a/poky/bitbake/lib/toaster/orm/fixtures/oe-core.xml b/poky/bitbake/lib/toaster/orm/fixtures/oe-core.xml index a723f5a2a..fd93f4d87 100644 --- a/poky/bitbake/lib/toaster/orm/fixtures/oe-core.xml +++ b/poky/bitbake/lib/toaster/orm/fixtures/oe-core.xml @@ -8,9 +8,9 @@ - warrior + dunfell git://git.openembedded.org/bitbake - 1.42 + 1.46 HEAD @@ -30,11 +30,11 @@ - warrior - Openembedded Warrior + dunfell + Openembedded Dunfell 1 - warrior - Toaster will run your builds using the tip of the <a href=\"http://cgit.openembedded.org/openembedded-core/log/?h=warrior\">OpenEmbedded Warrior</a> branch. + dunfell + Toaster will run your builds using the tip of the <a href=\"http://cgit.openembedded.org/openembedded-core/log/?h=dunfell\">OpenEmbedded Dunfell</a> branch. local diff --git a/poky/bitbake/lib/toaster/orm/fixtures/poky.xml b/poky/bitbake/lib/toaster/orm/fixtures/poky.xml index 79923837f..902bc88a5 100644 --- a/poky/bitbake/lib/toaster/orm/fixtures/poky.xml +++ b/poky/bitbake/lib/toaster/orm/fixtures/poky.xml @@ -8,9 +8,9 @@ - warrior + dunfell git://git.yoctoproject.org/poky - warrior + dunfell bitbake @@ -35,11 +35,11 @@ - warrior - Yocto Project 2.7 "Warrior" + dunfell + Yocto Project 3.1 "Dunfell" 1 - warrior - Toaster will run your builds using the tip of the <a href="http://git.yoctoproject.org/cgit/cgit.cgi/poky/log/?h=warrior">Yocto Project Warrior branch</a>. + dunfell + Toaster will run your builds using the tip of the <a href="http://git.yoctoproject.org/cgit/cgit.cgi/poky/log/?h=dunfell">Yocto Project Dunfell branch</a>. local @@ -130,7 +130,7 @@ 1 0 1 - warrior + dunfell meta @@ -168,7 +168,7 @@ 2 0 1 - warrior + dunfell meta-poky @@ -206,7 +206,7 @@ 3 0 1 - warrior + dunfell meta-yocto-bsp diff --git a/poky/bitbake/lib/toaster/orm/management/commands/lsupdates.py b/poky/bitbake/lib/toaster/orm/management/commands/lsupdates.py index 5b5abbb29..a4dbcaa76 100644 --- a/poky/bitbake/lib/toaster/orm/management/commands/lsupdates.py +++ b/poky/bitbake/lib/toaster/orm/management/commands/lsupdates.py @@ -8,7 +8,7 @@ from django.core.management.base import BaseCommand -from orm.models import LayerSource, Layer, Release, Layer_Version +from orm.models import Layer, Release, Layer_Version from orm.models import LayerVersionDependency, Machine, Recipe from orm.models import Distro from orm.models import ToasterSetting diff --git a/poky/bitbake/lib/toaster/orm/migrations/0001_initial.py b/poky/bitbake/lib/toaster/orm/migrations/0001_initial.py index 760462f6b..a8ac23bfc 100644 --- a/poky/bitbake/lib/toaster/orm/migrations/0001_initial.py +++ b/poky/bitbake/lib/toaster/orm/migrations/0001_initial.py @@ -54,7 +54,7 @@ class Migration(migrations.Migration): ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), ('file_name', models.FilePathField()), ('file_size', models.IntegerField()), - ('build', models.ForeignKey(to='orm.Build')), + ('build', models.ForeignKey(to='orm.Build', on_delete=models.CASCADE)), ], ), migrations.CreateModel( @@ -64,7 +64,7 @@ class Migration(migrations.Migration): ('area', models.IntegerField(choices=[(0, b'variable')])), ('key', models.CharField(max_length=100)), ('text', models.TextField()), - ('build', models.ForeignKey(related_name='helptext_build', to='orm.Build')), + ('build', models.ForeignKey(related_name='helptext_build', to='orm.Build', on_delete=models.CASCADE)), ], ), migrations.CreateModel( @@ -94,8 +94,8 @@ class Migration(migrations.Migration): ('dirpath', models.CharField(default=None, max_length=255, null=True)), ('priority', models.IntegerField(default=0)), ('local_path', models.FilePathField(default=b'/', max_length=1024)), - ('build', models.ForeignKey(related_name='layer_version_build', default=None, to='orm.Build', null=True)), - ('layer', models.ForeignKey(related_name='layer_version_layer', to='orm.Layer')), + ('build', models.ForeignKey(related_name='layer_version_build', default=None, to='orm.Build', null=True, on_delete=models.CASCADE)), + ('layer', models.ForeignKey(related_name='layer_version_layer', to='orm.Layer', on_delete=models.CASCADE)), ], ), migrations.CreateModel( @@ -112,9 +112,9 @@ class Migration(migrations.Migration): fields=[ ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), ('up_id', models.IntegerField(default=None, null=True)), - ('depends_on', models.ForeignKey(related_name='dependees', to='orm.Layer_Version')), - ('layer_source', models.ForeignKey(default=None, to='orm.LayerSource', null=True)), - ('layer_version', models.ForeignKey(related_name='dependencies', to='orm.Layer_Version')), + ('depends_on', models.ForeignKey(related_name='dependees', to='orm.Layer_Version', on_delete=models.CASCADE)), + ('layer_source', models.ForeignKey(default=None, to='orm.LayerSource', null=True, on_delete=models.CASCADE)), + ('layer_version', models.ForeignKey(related_name='dependencies', to='orm.Layer_Version', on_delete=models.CASCADE)), ], ), migrations.CreateModel( @@ -125,7 +125,7 @@ class Migration(migrations.Migration): ('message', models.TextField(null=True, blank=True)), ('pathname', models.FilePathField(max_length=255, blank=True)), ('lineno', models.IntegerField(null=True)), - ('build', models.ForeignKey(to='orm.Build')), + ('build', models.ForeignKey(to='orm.Build', on_delete=models.CASCADE)), ], ), migrations.CreateModel( @@ -136,8 +136,8 @@ class Migration(migrations.Migration): ('up_date', models.DateTimeField(default=None, null=True)), ('name', models.CharField(max_length=255)), ('description', models.CharField(max_length=255)), - ('layer_source', models.ForeignKey(default=None, to='orm.LayerSource', null=True)), - ('layer_version', models.ForeignKey(to='orm.Layer_Version')), + ('layer_source', models.ForeignKey(default=None, to='orm.LayerSource', null=True, on_delete=models.CASCADE)), + ('layer_version', models.ForeignKey(to='orm.Layer_Version', on_delete=models.CASCADE)), ], ), migrations.CreateModel( @@ -154,7 +154,7 @@ class Migration(migrations.Migration): ('installed_size', models.IntegerField(default=0)), ('section', models.CharField(max_length=80, blank=True)), ('license', models.CharField(max_length=80, blank=True)), - ('build', models.ForeignKey(to='orm.Build', null=True)), + ('build', models.ForeignKey(to='orm.Build', null=True, on_delete=models.CASCADE)), ], ), migrations.CreateModel( @@ -162,8 +162,8 @@ class Migration(migrations.Migration): fields=[ ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), ('dep_type', models.IntegerField(choices=[(0, b'depends'), (1, b'depends'), (3, b'recommends'), (2, b'recommends'), (4, b'suggests'), (5, b'provides'), (6, b'replaces'), (7, b'conflicts')])), - ('depends_on', models.ForeignKey(related_name='package_dependencies_target', to='orm.Package')), - ('package', models.ForeignKey(related_name='package_dependencies_source', to='orm.Package')), + ('depends_on', models.ForeignKey(related_name='package_dependencies_target', to='orm.Package', on_delete=models.CASCADE)), + ('package', models.ForeignKey(related_name='package_dependencies_source', to='orm.Package', on_delete=models.CASCADE)), ], ), migrations.CreateModel( @@ -172,7 +172,7 @@ class Migration(migrations.Migration): ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), ('path', models.FilePathField(max_length=255, blank=True)), ('size', models.IntegerField()), - ('package', models.ForeignKey(related_name='buildfilelist_package', to='orm.Package')), + ('package', models.ForeignKey(related_name='buildfilelist_package', to='orm.Package', on_delete=models.CASCADE)), ], ), migrations.CreateModel( @@ -185,7 +185,7 @@ class Migration(migrations.Migration): ('updated', models.DateTimeField(auto_now=True)), ('user_id', models.IntegerField(null=True)), ('is_default', models.BooleanField(default=False)), - ('bitbake_version', models.ForeignKey(to='orm.BitbakeVersion', null=True)), + ('bitbake_version', models.ForeignKey(to='orm.BitbakeVersion', null=True, on_delete=models.CASCADE)), ], ), migrations.CreateModel( @@ -193,8 +193,8 @@ class Migration(migrations.Migration): fields=[ ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), ('optional', models.BooleanField(default=True)), - ('layercommit', models.ForeignKey(to='orm.Layer_Version', null=True)), - ('project', models.ForeignKey(to='orm.Project')), + ('layercommit', models.ForeignKey(to='orm.Layer_Version', null=True, on_delete=models.CASCADE)), + ('project', models.ForeignKey(to='orm.Project', on_delete=models.CASCADE)), ], ), migrations.CreateModel( @@ -203,7 +203,7 @@ class Migration(migrations.Migration): ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), ('target', models.CharField(max_length=100)), ('task', models.CharField(max_length=100, null=True)), - ('project', models.ForeignKey(to='orm.Project')), + ('project', models.ForeignKey(to='orm.Project', on_delete=models.CASCADE)), ], ), migrations.CreateModel( @@ -212,7 +212,7 @@ class Migration(migrations.Migration): ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), ('name', models.CharField(max_length=100)), ('value', models.TextField(blank=True)), - ('project', models.ForeignKey(to='orm.Project')), + ('project', models.ForeignKey(to='orm.Project', on_delete=models.CASCADE)), ], ), migrations.CreateModel( @@ -232,8 +232,8 @@ class Migration(migrations.Migration): ('file_path', models.FilePathField(max_length=255)), ('pathflags', models.CharField(max_length=200, blank=True)), ('is_image', models.BooleanField(default=False)), - ('layer_source', models.ForeignKey(default=None, to='orm.LayerSource', null=True)), - ('layer_version', models.ForeignKey(related_name='recipe_layer_version', to='orm.Layer_Version')), + ('layer_source', models.ForeignKey(default=None, to='orm.LayerSource', null=True, on_delete=models.CASCADE)), + ('layer_version', models.ForeignKey(related_name='recipe_layer_version', to='orm.Layer_Version', on_delete=models.CASCADE)), ], ), migrations.CreateModel( @@ -241,8 +241,8 @@ class Migration(migrations.Migration): fields=[ ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), ('dep_type', models.IntegerField(choices=[(0, b'depends'), (1, b'rdepends')])), - ('depends_on', models.ForeignKey(related_name='r_dependencies_depends', to='orm.Recipe')), - ('recipe', models.ForeignKey(related_name='r_dependencies_recipe', to='orm.Recipe')), + ('depends_on', models.ForeignKey(related_name='r_dependencies_depends', to='orm.Recipe', on_delete=models.CASCADE)), + ('recipe', models.ForeignKey(related_name='r_dependencies_recipe', to='orm.Recipe', on_delete=models.CASCADE)), ], ), migrations.CreateModel( @@ -253,7 +253,7 @@ class Migration(migrations.Migration): ('description', models.CharField(max_length=255)), ('branch_name', models.CharField(default=b'', max_length=50)), ('helptext', models.TextField(null=True)), - ('bitbake_version', models.ForeignKey(to='orm.BitbakeVersion')), + ('bitbake_version', models.ForeignKey(to='orm.BitbakeVersion', on_delete=models.CASCADE)), ], ), migrations.CreateModel( @@ -261,7 +261,7 @@ class Migration(migrations.Migration): fields=[ ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), ('layer_name', models.CharField(default=b'', max_length=100)), - ('release', models.ForeignKey(to='orm.Release')), + ('release', models.ForeignKey(to='orm.Release', on_delete=models.CASCADE)), ], ), migrations.CreateModel( @@ -269,8 +269,8 @@ class Migration(migrations.Migration): fields=[ ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), ('priority', models.IntegerField(default=0)), - ('layer_source', models.ForeignKey(to='orm.LayerSource')), - ('release', models.ForeignKey(to='orm.Release')), + ('layer_source', models.ForeignKey(to='orm.LayerSource', on_delete=models.CASCADE)), + ('release', models.ForeignKey(to='orm.Release', on_delete=models.CASCADE)), ], ), migrations.CreateModel( @@ -282,7 +282,7 @@ class Migration(migrations.Migration): ('is_image', models.BooleanField(default=False)), ('image_size', models.IntegerField(default=0)), ('license_manifest_path', models.CharField(max_length=500, null=True)), - ('build', models.ForeignKey(to='orm.Build')), + ('build', models.ForeignKey(to='orm.Build', on_delete=models.CASCADE)), ], ), migrations.CreateModel( @@ -295,9 +295,9 @@ class Migration(migrations.Migration): ('permission', models.CharField(max_length=16)), ('owner', models.CharField(max_length=128)), ('group', models.CharField(max_length=128)), - ('directory', models.ForeignKey(related_name='directory_set', to='orm.Target_File', null=True)), - ('sym_target', models.ForeignKey(related_name='symlink_set', to='orm.Target_File', null=True)), - ('target', models.ForeignKey(to='orm.Target')), + ('directory', models.ForeignKey(related_name='directory_set', to='orm.Target_File', null=True, on_delete=models.CASCADE)), + ('sym_target', models.ForeignKey(related_name='symlink_set', to='orm.Target_File', null=True, on_delete=models.CASCADE)), + ('target', models.ForeignKey(to='orm.Target', on_delete=models.CASCADE)), ], ), migrations.CreateModel( @@ -306,15 +306,15 @@ class Migration(migrations.Migration): ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), ('file_name', models.FilePathField(max_length=254)), ('file_size', models.IntegerField()), - ('target', models.ForeignKey(to='orm.Target')), + ('target', models.ForeignKey(to='orm.Target', on_delete=models.CASCADE)), ], ), migrations.CreateModel( name='Target_Installed_Package', fields=[ ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('package', models.ForeignKey(related_name='buildtargetlist_package', to='orm.Package')), - ('target', models.ForeignKey(to='orm.Target')), + ('package', models.ForeignKey(related_name='buildtargetlist_package', to='orm.Package', on_delete=models.CASCADE)), + ('target', models.ForeignKey(to='orm.Target', on_delete=models.CASCADE)), ], ), migrations.CreateModel( @@ -337,8 +337,8 @@ class Migration(migrations.Migration): ('sstate_result', models.IntegerField(default=0, choices=[(0, b'Not Applicable'), (1, b'File not in cache'), (2, b'Failed'), (3, b'Succeeded')])), ('message', models.CharField(max_length=240)), ('logfile', models.FilePathField(max_length=255, blank=True)), - ('build', models.ForeignKey(related_name='task_build', to='orm.Build')), - ('recipe', models.ForeignKey(related_name='tasks', to='orm.Recipe')), + ('build', models.ForeignKey(related_name='task_build', to='orm.Build', on_delete=models.CASCADE)), + ('recipe', models.ForeignKey(related_name='tasks', to='orm.Recipe', on_delete=models.CASCADE)), ], options={ 'ordering': ('order', 'recipe'), @@ -348,8 +348,8 @@ class Migration(migrations.Migration): name='Task_Dependency', fields=[ ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('depends_on', models.ForeignKey(related_name='task_dependencies_depends', to='orm.Task')), - ('task', models.ForeignKey(related_name='task_dependencies_task', to='orm.Task')), + ('depends_on', models.ForeignKey(related_name='task_dependencies_depends', to='orm.Task', on_delete=models.CASCADE)), + ('task', models.ForeignKey(related_name='task_dependencies_task', to='orm.Task', on_delete=models.CASCADE)), ], ), migrations.CreateModel( @@ -370,7 +370,7 @@ class Migration(migrations.Migration): ('changed', models.BooleanField(default=False)), ('human_readable_name', models.CharField(max_length=200)), ('description', models.TextField(blank=True)), - ('build', models.ForeignKey(related_name='variable_build', to='orm.Build')), + ('build', models.ForeignKey(related_name='variable_build', to='orm.Build', on_delete=models.CASCADE)), ], ), migrations.CreateModel( @@ -381,28 +381,28 @@ class Migration(migrations.Migration): ('file_name', models.FilePathField(max_length=255)), ('line_number', models.IntegerField(null=True)), ('operation', models.CharField(max_length=64)), - ('variable', models.ForeignKey(related_name='vhistory', to='orm.Variable')), + ('variable', models.ForeignKey(related_name='vhistory', to='orm.Variable', on_delete=models.CASCADE)), ], ), migrations.AddField( model_name='project', name='release', - field=models.ForeignKey(to='orm.Release', null=True), + field=models.ForeignKey(to='orm.Release', null=True, on_delete=models.CASCADE), ), migrations.AddField( model_name='package_dependency', name='target', - field=models.ForeignKey(to='orm.Target', null=True), + field=models.ForeignKey(to='orm.Target', null=True, on_delete=models.CASCADE), ), migrations.AddField( model_name='package', name='recipe', - field=models.ForeignKey(to='orm.Recipe', null=True), + field=models.ForeignKey(to='orm.Recipe', null=True, on_delete=models.CASCADE), ), migrations.AddField( model_name='logmessage', name='task', - field=models.ForeignKey(blank=True, to='orm.Task', null=True), + field=models.ForeignKey(blank=True, to='orm.Task', null=True, on_delete=models.CASCADE), ), migrations.AlterUniqueTogether( name='layersource', @@ -411,32 +411,32 @@ class Migration(migrations.Migration): migrations.AddField( model_name='layer_version', name='layer_source', - field=models.ForeignKey(default=None, to='orm.LayerSource', null=True), + field=models.ForeignKey(default=None, to='orm.LayerSource', null=True, on_delete=models.CASCADE), ), migrations.AddField( model_name='layer_version', name='project', - field=models.ForeignKey(default=None, to='orm.Project', null=True), + field=models.ForeignKey(default=None, to='orm.Project', null=True, on_delete=models.CASCADE), ), migrations.AddField( model_name='layer_version', name='up_branch', - field=models.ForeignKey(default=None, to='orm.Branch', null=True), + field=models.ForeignKey(default=None, to='orm.Branch', null=True, on_delete=models.CASCADE), ), migrations.AddField( model_name='layer', name='layer_source', - field=models.ForeignKey(default=None, to='orm.LayerSource', null=True), + field=models.ForeignKey(default=None, to='orm.LayerSource', null=True, on_delete=models.CASCADE), ), migrations.AddField( model_name='build', name='project', - field=models.ForeignKey(to='orm.Project'), + field=models.ForeignKey(to='orm.Project', on_delete=models.CASCADE), ), migrations.AddField( model_name='branch', name='layer_source', - field=models.ForeignKey(default=True, to='orm.LayerSource', null=True), + field=models.ForeignKey(default=True, to='orm.LayerSource', null=True, on_delete=models.CASCADE), ), migrations.CreateModel( name='ImportedLayerSource', diff --git a/poky/bitbake/lib/toaster/orm/migrations/0002_customimagerecipe.py b/poky/bitbake/lib/toaster/orm/migrations/0002_customimagerecipe.py index 9cec82e8d..09c2bffa2 100644 --- a/poky/bitbake/lib/toaster/orm/migrations/0002_customimagerecipe.py +++ b/poky/bitbake/lib/toaster/orm/migrations/0002_customimagerecipe.py @@ -14,10 +14,10 @@ class Migration(migrations.Migration): migrations.CreateModel( name='CustomImageRecipe', fields=[ - ('recipe_ptr', models.OneToOneField(parent_link=True, auto_created=True, primary_key=True, serialize=False, to='orm.Recipe')), + ('recipe_ptr', models.OneToOneField(parent_link=True, auto_created=True, primary_key=True, serialize=False, to='orm.Recipe', on_delete=models.CASCADE)), ('last_updated', models.DateTimeField(default=None, null=True)), - ('base_recipe', models.ForeignKey(related_name='based_on_recipe', to='orm.Recipe')), - ('project', models.ForeignKey(to='orm.Project')), + ('base_recipe', models.ForeignKey(related_name='based_on_recipe', to='orm.Recipe', on_delete=models.CASCADE)), + ('project', models.ForeignKey(to='orm.Project', on_delete=models.CASCADE)), ], bases=('orm.recipe',), ), diff --git a/poky/bitbake/lib/toaster/orm/migrations/0003_customimagepackage.py b/poky/bitbake/lib/toaster/orm/migrations/0003_customimagepackage.py index b027f6613..8cb81d7b5 100644 --- a/poky/bitbake/lib/toaster/orm/migrations/0003_customimagepackage.py +++ b/poky/bitbake/lib/toaster/orm/migrations/0003_customimagepackage.py @@ -14,7 +14,7 @@ class Migration(migrations.Migration): migrations.CreateModel( name='CustomImagePackage', fields=[ - ('package_ptr', models.OneToOneField(parent_link=True, auto_created=True, primary_key=True, serialize=False, to='orm.Package')), + ('package_ptr', models.OneToOneField(parent_link=True, auto_created=True, primary_key=True, serialize=False, to='orm.Package', on_delete=models.CASCADE)), ('recipe_appends', models.ManyToManyField(related_name='appends_set', to='orm.CustomImageRecipe')), ('recipe_excludes', models.ManyToManyField(related_name='excludes_set', to='orm.CustomImageRecipe')), ('recipe_includes', models.ManyToManyField(related_name='includes_set', to='orm.CustomImageRecipe')), diff --git a/poky/bitbake/lib/toaster/orm/migrations/0004_provides.py b/poky/bitbake/lib/toaster/orm/migrations/0004_provides.py index dfde2d136..844960498 100644 --- a/poky/bitbake/lib/toaster/orm/migrations/0004_provides.py +++ b/poky/bitbake/lib/toaster/orm/migrations/0004_provides.py @@ -16,12 +16,12 @@ class Migration(migrations.Migration): fields=[ ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), ('name', models.CharField(max_length=100)), - ('recipe', models.ForeignKey(to='orm.Recipe')), + ('recipe', models.ForeignKey(to='orm.Recipe', on_delete=models.CASCADE)), ], ), migrations.AddField( model_name='recipe_dependency', name='via', - field=models.ForeignKey(null=True, default=None, to='orm.Provides'), + field=models.ForeignKey(null=True, default=None, to='orm.Provides', on_delete=models.CASCADE), ), ] diff --git a/poky/bitbake/lib/toaster/orm/migrations/0008_refactor_artifact_models.py b/poky/bitbake/lib/toaster/orm/migrations/0008_refactor_artifact_models.py index 3367582a8..41a547a60 100644 --- a/poky/bitbake/lib/toaster/orm/migrations/0008_refactor_artifact_models.py +++ b/poky/bitbake/lib/toaster/orm/migrations/0008_refactor_artifact_models.py @@ -17,7 +17,7 @@ class Migration(migrations.Migration): ('id', models.AutoField(auto_created=True, primary_key=True, verbose_name='ID', serialize=False)), ('file_name', models.FilePathField()), ('file_size', models.IntegerField()), - ('target', models.ForeignKey(to='orm.Target')), + ('target', models.ForeignKey(to='orm.Target', on_delete=models.CASCADE)), ], ), migrations.CreateModel( @@ -26,7 +26,7 @@ class Migration(migrations.Migration): ('id', models.AutoField(auto_created=True, primary_key=True, verbose_name='ID', serialize=False)), ('file_name', models.FilePathField()), ('file_size', models.IntegerField()), - ('target', models.ForeignKey(to='orm.Target')), + ('target', models.ForeignKey(to='orm.Target', on_delete=models.CASCADE)), ], ), migrations.RemoveField( diff --git a/poky/bitbake/lib/toaster/orm/migrations/0011_delete_layersource.py b/poky/bitbake/lib/toaster/orm/migrations/0011_delete_layersource.py index 75506961a..3f3a2e161 100644 --- a/poky/bitbake/lib/toaster/orm/migrations/0011_delete_layersource.py +++ b/poky/bitbake/lib/toaster/orm/migrations/0011_delete_layersource.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- from __future__ import unicode_literals -from django.db import migrations, models +from django.db import migrations class Migration(migrations.Migration): diff --git a/poky/bitbake/lib/toaster/orm/migrations/0012_use_release_instead_of_up_branch.py b/poky/bitbake/lib/toaster/orm/migrations/0012_use_release_instead_of_up_branch.py index 0e6bb8331..4b96bf096 100644 --- a/poky/bitbake/lib/toaster/orm/migrations/0012_use_release_instead_of_up_branch.py +++ b/poky/bitbake/lib/toaster/orm/migrations/0012_use_release_instead_of_up_branch.py @@ -46,7 +46,7 @@ class Migration(migrations.Migration): migrations.AddField( model_name='layer_version', name='release', - field=models.ForeignKey(to='orm.Release', default=None, null=True), + field=models.ForeignKey(to='orm.Release', default=None, null=True, on_delete=models.CASCADE), ), migrations.RunPython(branch_to_release, reverse_code=migrations.RunPython.noop), diff --git a/poky/bitbake/lib/toaster/orm/migrations/0017_distro_clone.py b/poky/bitbake/lib/toaster/orm/migrations/0017_distro_clone.py index d3c590127..731c0debd 100644 --- a/poky/bitbake/lib/toaster/orm/migrations/0017_distro_clone.py +++ b/poky/bitbake/lib/toaster/orm/migrations/0017_distro_clone.py @@ -18,7 +18,7 @@ class Migration(migrations.Migration): ('up_date', models.DateTimeField(default=None, null=True)), ('name', models.CharField(max_length=255)), ('description', models.CharField(max_length=255)), - ('layer_version', models.ForeignKey(to='orm.Layer_Version')), + ('layer_version', models.ForeignKey(to='orm.Layer_Version', on_delete=models.CASCADE)), ], ), ] diff --git a/poky/bitbake/lib/toaster/orm/migrations/0019_django_2_2.py b/poky/bitbake/lib/toaster/orm/migrations/0019_django_2_2.py new file mode 100644 index 000000000..666aef18b --- /dev/null +++ b/poky/bitbake/lib/toaster/orm/migrations/0019_django_2_2.py @@ -0,0 +1,23 @@ +# Generated by Django 2.2.7 on 2019-11-19 03:38 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('orm', '0018_project_specific'), + ] + + operations = [ + migrations.RemoveField( + model_name='distro', + name='up_id', + ), + migrations.AlterField( + model_name='build', + name='recipes_parsed', + field=models.IntegerField(default=1), + ), + ] diff --git a/poky/bitbake/lib/toaster/orm/models.py b/poky/bitbake/lib/toaster/orm/models.py index bb6b5decf..7f7e922ad 100644 --- a/poky/bitbake/lib/toaster/orm/models.py +++ b/poky/bitbake/lib/toaster/orm/models.py @@ -13,7 +13,7 @@ from django.db.models import F, Q, Sum, Count from django.utils import timezone from django.utils.encoding import force_bytes -from django.core.urlresolvers import reverse +from django.urls import reverse from django.core import validators from django.conf import settings @@ -178,8 +178,8 @@ class Project(models.Model): 'release__branch_name'] name = models.CharField(max_length=100) short_description = models.CharField(max_length=50, blank=True) - bitbake_version = models.ForeignKey('BitbakeVersion', null=True) - release = models.ForeignKey("Release", null=True) + bitbake_version = models.ForeignKey('BitbakeVersion', on_delete=models.CASCADE, null=True) + release = models.ForeignKey("Release", on_delete=models.CASCADE, null=True) created = models.DateTimeField(auto_now_add=True) updated = models.DateTimeField(auto_now=True) # This is a horrible hack; since Toaster has no "User" model available when @@ -469,7 +469,7 @@ class Build(models.Model): search_allowed_fields = ['machine', 'cooker_log_path', "target__target", "target__target_image_file__file_name"] - project = models.ForeignKey(Project) # must have a project + project = models.ForeignKey(Project, on_delete=models.CASCADE) # must have a project machine = models.CharField(max_length=100) distro = models.CharField(max_length=100) distro_version = models.CharField(max_length=100) @@ -777,13 +777,13 @@ class Build(models.Model): return "%d %s %s" % (self.id, self.project, ",".join([t.target for t in self.target_set.all()])) class ProjectTarget(models.Model): - project = models.ForeignKey(Project) + project = models.ForeignKey(Project, on_delete=models.CASCADE) target = models.CharField(max_length=100) task = models.CharField(max_length=100, null=True) class Target(models.Model): search_allowed_fields = ['target', 'file_name'] - build = models.ForeignKey(Build) + build = models.ForeignKey(Build, on_delete=models.CASCADE) target = models.CharField(max_length=100) task = models.CharField(max_length=100, null=True) is_image = models.BooleanField(default = False) @@ -944,7 +944,7 @@ class Target(models.Model): # kernel artifacts for a target: bzImage and modules* class TargetKernelFile(models.Model): - target = models.ForeignKey(Target) + target = models.ForeignKey(Target, on_delete=models.CASCADE) file_name = models.FilePathField() file_size = models.IntegerField() @@ -954,7 +954,7 @@ class TargetKernelFile(models.Model): # SDK artifacts for a target: sh and manifest files class TargetSDKFile(models.Model): - target = models.ForeignKey(Target) + target = models.ForeignKey(Target, on_delete=models.CASCADE) file_name = models.FilePathField() file_size = models.IntegerField() @@ -973,7 +973,7 @@ class Target_Image_File(models.Model): 'ubifs', 'wic', 'wic.bz2', 'wic.gz', 'wic.lzma' } - target = models.ForeignKey(Target) + target = models.ForeignKey(Target, on_delete=models.CASCADE) file_name = models.FilePathField(max_length=254) file_size = models.IntegerField() @@ -1007,15 +1007,15 @@ class Target_File(models.Model): ( ITYPE_BLOCK ,'block'), ) - target = models.ForeignKey(Target) + target = models.ForeignKey(Target, on_delete=models.CASCADE) path = models.FilePathField() size = models.IntegerField() inodetype = models.IntegerField(choices = ITYPES) permission = models.CharField(max_length=16) owner = models.CharField(max_length=128) group = models.CharField(max_length=128) - directory = models.ForeignKey('Target_File', related_name="directory_set", null=True) - sym_target = models.ForeignKey('Target_File', related_name="symlink_set", null=True) + directory = models.ForeignKey('Target_File', on_delete=models.CASCADE, related_name="directory_set", null=True) + sym_target = models.ForeignKey('Target_File', on_delete=models.CASCADE, related_name="symlink_set", null=True) class Task(models.Model): @@ -1102,13 +1102,13 @@ class Task(models.Model): def get_description(self): return self._helptext - build = models.ForeignKey(Build, related_name='task_build') + build = models.ForeignKey(Build, on_delete=models.CASCADE, related_name='task_build') order = models.IntegerField(null=True) task_executed = models.BooleanField(default=False) # True means Executed, False means Not/Executed outcome = models.IntegerField(choices=TASK_OUTCOME, default=OUTCOME_NA) sstate_checksum = models.CharField(max_length=100, blank=True) path_to_sstate_obj = models.FilePathField(max_length=500, blank=True) - recipe = models.ForeignKey('Recipe', related_name='tasks') + recipe = models.ForeignKey('Recipe', on_delete=models.CASCADE, related_name='tasks') task_name = models.CharField(max_length=100) source_url = models.FilePathField(max_length=255, blank=True) work_directory = models.FilePathField(max_length=255, blank=True) @@ -1147,13 +1147,13 @@ class Task(models.Model): class Task_Dependency(models.Model): - task = models.ForeignKey(Task, related_name='task_dependencies_task') - depends_on = models.ForeignKey(Task, related_name='task_dependencies_depends') + task = models.ForeignKey(Task, on_delete=models.CASCADE, related_name='task_dependencies_task') + depends_on = models.ForeignKey(Task, on_delete=models.CASCADE, related_name='task_dependencies_depends') class Package(models.Model): search_allowed_fields = ['name', 'version', 'revision', 'recipe__name', 'recipe__version', 'recipe__license', 'recipe__layer_version__layer__name', 'recipe__layer_version__branch', 'recipe__layer_version__commit', 'recipe__layer_version__local_path', 'installed_name'] - build = models.ForeignKey('Build', null=True) - recipe = models.ForeignKey('Recipe', null=True) + build = models.ForeignKey('Build', on_delete=models.CASCADE, null=True) + recipe = models.ForeignKey('Recipe', on_delete=models.CASCADE, null=True) name = models.CharField(max_length=100) installed_name = models.CharField(max_length=100, default='') version = models.CharField(max_length=100, blank=True) @@ -1289,19 +1289,19 @@ class Package_Dependency(models.Model): TYPE_RCONFLICTS : ("conflicts", "%s conflicts with %s, which will not be installed if this package is not first removed"), } - package = models.ForeignKey(Package, related_name='package_dependencies_source') - depends_on = models.ForeignKey(Package, related_name='package_dependencies_target') # soft dependency + package = models.ForeignKey(Package, on_delete=models.CASCADE, related_name='package_dependencies_source') + depends_on = models.ForeignKey(Package, on_delete=models.CASCADE, related_name='package_dependencies_target') # soft dependency dep_type = models.IntegerField(choices=DEPENDS_TYPE) - target = models.ForeignKey(Target, null=True) + target = models.ForeignKey(Target, on_delete=models.CASCADE, null=True) objects = Package_DependencyManager() class Target_Installed_Package(models.Model): - target = models.ForeignKey(Target) - package = models.ForeignKey(Package, related_name='buildtargetlist_package') + target = models.ForeignKey(Target, on_delete=models.CASCADE) + package = models.ForeignKey(Package, on_delete=models.CASCADE, related_name='buildtargetlist_package') class Package_File(models.Model): - package = models.ForeignKey(Package, related_name='buildfilelist_package') + package = models.ForeignKey(Package, on_delete=models.CASCADE, related_name='buildfilelist_package') path = models.FilePathField(max_length=255, blank=True) size = models.IntegerField() @@ -1318,7 +1318,7 @@ class Recipe(models.Model): name = models.CharField(max_length=100, blank=True) version = models.CharField(max_length=100, blank=True) - layer_version = models.ForeignKey('Layer_Version', + layer_version = models.ForeignKey('Layer_Version', on_delete=models.CASCADE, related_name='recipe_layer_version') summary = models.TextField(blank=True) description = models.TextField(blank=True) @@ -1356,7 +1356,7 @@ class Recipe_DependencyManager(models.Manager): class Provides(models.Model): name = models.CharField(max_length=100) - recipe = models.ForeignKey(Recipe) + recipe = models.ForeignKey(Recipe, on_delete=models.CASCADE) class Recipe_Dependency(models.Model): TYPE_DEPENDS = 0 @@ -1366,9 +1366,9 @@ class Recipe_Dependency(models.Model): (TYPE_DEPENDS, "depends"), (TYPE_RDEPENDS, "rdepends"), ) - recipe = models.ForeignKey(Recipe, related_name='r_dependencies_recipe') - depends_on = models.ForeignKey(Recipe, related_name='r_dependencies_depends') - via = models.ForeignKey(Provides, null=True, default=None) + recipe = models.ForeignKey(Recipe, on_delete=models.CASCADE, related_name='r_dependencies_recipe') + depends_on = models.ForeignKey(Recipe, on_delete=models.CASCADE, related_name='r_dependencies_depends') + via = models.ForeignKey(Provides, on_delete=models.CASCADE, null=True, default=None) dep_type = models.IntegerField(choices=DEPENDS_TYPE) objects = Recipe_DependencyManager() @@ -1377,7 +1377,7 @@ class Machine(models.Model): search_allowed_fields = ["name", "description", "layer_version__layer__name"] up_date = models.DateTimeField(null = True, default = None) - layer_version = models.ForeignKey('Layer_Version') + layer_version = models.ForeignKey('Layer_Version', on_delete=models.CASCADE) name = models.CharField(max_length=255) description = models.CharField(max_length=255) @@ -1408,7 +1408,7 @@ class Release(models.Model): """ A release is a project template, used to pre-populate Project settings with a configuration set """ name = models.CharField(max_length=32, unique = True) description = models.CharField(max_length=255) - bitbake_version = models.ForeignKey(BitbakeVersion) + bitbake_version = models.ForeignKey(BitbakeVersion, on_delete=models.CASCADE) branch_name = models.CharField(max_length=50, default = "") helptext = models.TextField(null=True) @@ -1419,7 +1419,7 @@ class Release(models.Model): return self.name class ReleaseDefaultLayer(models.Model): - release = models.ForeignKey(Release) + release = models.ForeignKey(Release, on_delete=models.CASCADE) layer_name = models.CharField(max_length=100, default="") @@ -1474,10 +1474,10 @@ class Layer_Version(models.Model): "layer__description", "layer__vcs_url", "dirpath", "release__name", "commit", "branch"] - build = models.ForeignKey(Build, related_name='layer_version_build', + build = models.ForeignKey(Build, on_delete=models.CASCADE, related_name='layer_version_build', default=None, null=True) - layer = models.ForeignKey(Layer, related_name='layer_version_layer') + layer = models.ForeignKey(Layer, on_delete=models.CASCADE, related_name='layer_version_layer') layer_source = models.IntegerField(choices=LayerSource.SOURCE_TYPE, default=0) @@ -1485,7 +1485,7 @@ class Layer_Version(models.Model): up_date = models.DateTimeField(null=True, default=timezone.now) # To which metadata release does this layer version belong to - release = models.ForeignKey(Release, null=True, default=None) + release = models.ForeignKey(Release, on_delete=models.CASCADE, null=True, default=None) branch = models.CharField(max_length=80) commit = models.CharField(max_length=100) @@ -1499,7 +1499,7 @@ class Layer_Version(models.Model): local_path = models.FilePathField(max_length=1024, default="/") # Set if this layer is restricted to a particular project - project = models.ForeignKey('Project', null=True, default=None) + project = models.ForeignKey('Project', on_delete=models.CASCADE, null=True, default=None) # code lifted, with adaptations, from the layerindex-web application # https://git.yoctoproject.org/cgit/cgit.cgi/layerindex-web/ @@ -1608,14 +1608,14 @@ class Layer_Version(models.Model): class LayerVersionDependency(models.Model): - layer_version = models.ForeignKey(Layer_Version, + layer_version = models.ForeignKey(Layer_Version, on_delete=models.CASCADE, related_name="dependencies") - depends_on = models.ForeignKey(Layer_Version, + depends_on = models.ForeignKey(Layer_Version, on_delete=models.CASCADE, related_name="dependees") class ProjectLayer(models.Model): - project = models.ForeignKey(Project) - layercommit = models.ForeignKey(Layer_Version, null=True) + project = models.ForeignKey(Project, on_delete=models.CASCADE) + layercommit = models.ForeignKey(Layer_Version, on_delete=models.CASCADE, null=True) optional = models.BooleanField(default = True) def __unicode__(self): @@ -1630,8 +1630,8 @@ class CustomImageRecipe(Recipe): LAYER_NAME = "toaster-custom-images" search_allowed_fields = ['name'] - base_recipe = models.ForeignKey(Recipe, related_name='based_on_recipe') - project = models.ForeignKey(Project) + base_recipe = models.ForeignKey(Recipe, on_delete=models.CASCADE, related_name='based_on_recipe') + project = models.ForeignKey(Project, on_delete=models.CASCADE) last_updated = models.DateTimeField(null=True, default=None) def get_last_successful_built_target(self): @@ -1647,14 +1647,14 @@ class CustomImageRecipe(Recipe): """ # Check if we're aldready up-to-date or not target = self.get_last_successful_built_target() - if target == None: + if target is None: # So we've never actually built this Custom recipe but what about # the recipe it's based on? target = \ Target.objects.filter(Q(build__outcome=Build.SUCCEEDED) & Q(build__project=self.project) & Q(target=self.base_recipe.name)).last() - if target == None: + if target is None: return if target.build.completed_on == self.last_updated: @@ -1784,14 +1784,14 @@ class CustomImageRecipe(Recipe): return recipe_contents class ProjectVariable(models.Model): - project = models.ForeignKey(Project) + project = models.ForeignKey(Project, on_delete=models.CASCADE) name = models.CharField(max_length=100) value = models.TextField(blank = True) class Variable(models.Model): search_allowed_fields = ['variable_name', 'variable_value', 'vhistory__file_name', "description"] - build = models.ForeignKey(Build, related_name='variable_build') + build = models.ForeignKey(Build, on_delete=models.CASCADE, related_name='variable_build') variable_name = models.CharField(max_length=100) variable_value = models.TextField(blank=True) changed = models.BooleanField(default=False) @@ -1799,7 +1799,7 @@ class Variable(models.Model): description = models.TextField(blank=True) class VariableHistory(models.Model): - variable = models.ForeignKey(Variable, related_name='vhistory') + variable = models.ForeignKey(Variable, on_delete=models.CASCADE, related_name='vhistory') value = models.TextField(blank=True) file_name = models.FilePathField(max_length=255) line_number = models.IntegerField(null=True) @@ -1809,7 +1809,7 @@ class HelpText(models.Model): VARIABLE = 0 HELPTEXT_AREA = ((VARIABLE, 'variable'), ) - build = models.ForeignKey(Build, related_name='helptext_build') + build = models.ForeignKey(Build, on_delete=models.CASCADE, related_name='helptext_build') area = models.IntegerField(choices=HELPTEXT_AREA) key = models.CharField(max_length=100) text = models.TextField() @@ -1829,8 +1829,8 @@ class LogMessage(models.Model): (EXCEPTION, "toaster exception") ) - build = models.ForeignKey(Build) - task = models.ForeignKey(Task, blank = True, null=True) + build = models.ForeignKey(Build, on_delete=models.CASCADE) + task = models.ForeignKey(Task, on_delete=models.CASCADE, blank = True, null=True) level = models.IntegerField(choices=LOG_LEVEL, default=INFO) message = models.TextField(blank=True, null=True) pathname = models.FilePathField(max_length=255, blank=True) @@ -1859,7 +1859,7 @@ class Distro(models.Model): search_allowed_fields = ["name", "description", "layer_version__layer__name"] up_date = models.DateTimeField(null = True, default = None) - layer_version = models.ForeignKey('Layer_Version') + layer_version = models.ForeignKey('Layer_Version', on_delete=models.CASCADE) name = models.CharField(max_length=255) description = models.CharField(max_length=255) diff --git a/poky/bitbake/lib/toaster/tests/browser/selenium_helpers_base.py b/poky/bitbake/lib/toaster/tests/browser/selenium_helpers_base.py index 6c94684e8..644d45fe5 100644 --- a/poky/bitbake/lib/toaster/tests/browser/selenium_helpers_base.py +++ b/poky/bitbake/lib/toaster/tests/browser/selenium_helpers_base.py @@ -19,7 +19,6 @@ import os import time import unittest -from django.contrib.staticfiles.testing import StaticLiveServerTestCase from selenium import webdriver from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.common.desired_capabilities import DesiredCapabilities diff --git a/poky/bitbake/lib/toaster/tests/browser/test_all_builds_page.py b/poky/bitbake/lib/toaster/tests/browser/test_all_builds_page.py index fba627bd2..8423d3dab 100644 --- a/poky/bitbake/lib/toaster/tests/browser/test_all_builds_page.py +++ b/poky/bitbake/lib/toaster/tests/browser/test_all_builds_page.py @@ -9,7 +9,7 @@ import re -from django.core.urlresolvers import reverse +from django.urls import reverse from django.utils import timezone from tests.browser.selenium_helpers import SeleniumTestCase diff --git a/poky/bitbake/lib/toaster/tests/browser/test_all_projects_page.py b/poky/bitbake/lib/toaster/tests/browser/test_all_projects_page.py index afd2d3566..15b03400f 100644 --- a/poky/bitbake/lib/toaster/tests/browser/test_all_projects_page.py +++ b/poky/bitbake/lib/toaster/tests/browser/test_all_projects_page.py @@ -9,7 +9,7 @@ import re -from django.core.urlresolvers import reverse +from django.urls import reverse from django.utils import timezone from tests.browser.selenium_helpers import SeleniumTestCase diff --git a/poky/bitbake/lib/toaster/tests/browser/test_builddashboard_page.py b/poky/bitbake/lib/toaster/tests/browser/test_builddashboard_page.py index d972aff1b..efcd89b34 100644 --- a/poky/bitbake/lib/toaster/tests/browser/test_builddashboard_page.py +++ b/poky/bitbake/lib/toaster/tests/browser/test_builddashboard_page.py @@ -7,7 +7,7 @@ # SPDX-License-Identifier: GPL-2.0-only # -from django.core.urlresolvers import reverse +from django.urls import reverse from django.utils import timezone from tests.browser.selenium_helpers import SeleniumTestCase diff --git a/poky/bitbake/lib/toaster/tests/browser/test_builddashboard_page_artifacts.py b/poky/bitbake/lib/toaster/tests/browser/test_builddashboard_page_artifacts.py index e2623e8ad..c6226d60e 100644 --- a/poky/bitbake/lib/toaster/tests/browser/test_builddashboard_page_artifacts.py +++ b/poky/bitbake/lib/toaster/tests/browser/test_builddashboard_page_artifacts.py @@ -7,7 +7,7 @@ # SPDX-License-Identifier: GPL-2.0-only # -from django.core.urlresolvers import reverse +from django.urls import reverse from django.utils import timezone from tests.browser.selenium_helpers import SeleniumTestCase diff --git a/poky/bitbake/lib/toaster/tests/browser/test_builddashboard_page_recipes.py b/poky/bitbake/lib/toaster/tests/browser/test_builddashboard_page_recipes.py index c542d45f1..9d85ba990 100644 --- a/poky/bitbake/lib/toaster/tests/browser/test_builddashboard_page_recipes.py +++ b/poky/bitbake/lib/toaster/tests/browser/test_builddashboard_page_recipes.py @@ -7,7 +7,7 @@ # SPDX-License-Identifier: GPL-2.0-only # -from django.core.urlresolvers import reverse +from django.urls import reverse from django.utils import timezone from tests.browser.selenium_helpers import SeleniumTestCase from orm.models import Project, Build, Recipe, Task, Layer, Layer_Version diff --git a/poky/bitbake/lib/toaster/tests/browser/test_builddashboard_page_tasks.py b/poky/bitbake/lib/toaster/tests/browser/test_builddashboard_page_tasks.py index 22acb470a..7fdf75d0a 100644 --- a/poky/bitbake/lib/toaster/tests/browser/test_builddashboard_page_tasks.py +++ b/poky/bitbake/lib/toaster/tests/browser/test_builddashboard_page_tasks.py @@ -7,7 +7,7 @@ # SPDX-License-Identifier: GPL-2.0-only # -from django.core.urlresolvers import reverse +from django.urls import reverse from django.utils import timezone from tests.browser.selenium_helpers import SeleniumTestCase from orm.models import Project, Build, Recipe, Task, Layer, Layer_Version diff --git a/poky/bitbake/lib/toaster/tests/browser/test_js_unit_tests.py b/poky/bitbake/lib/toaster/tests/browser/test_js_unit_tests.py index e8b4295b8..e6163bb3b 100644 --- a/poky/bitbake/lib/toaster/tests/browser/test_js_unit_tests.py +++ b/poky/bitbake/lib/toaster/tests/browser/test_js_unit_tests.py @@ -11,7 +11,7 @@ Run the js unit tests """ -from django.core.urlresolvers import reverse +from django.urls import reverse from tests.browser.selenium_helpers import SeleniumTestCase import logging diff --git a/poky/bitbake/lib/toaster/tests/browser/test_landing_page.py b/poky/bitbake/lib/toaster/tests/browser/test_landing_page.py index 07901989d..8bb64b9f3 100644 --- a/poky/bitbake/lib/toaster/tests/browser/test_landing_page.py +++ b/poky/bitbake/lib/toaster/tests/browser/test_landing_page.py @@ -7,7 +7,7 @@ # Copyright (C) 2013-2016 Intel Corporation # -from django.core.urlresolvers import reverse +from django.urls import reverse from django.utils import timezone from tests.browser.selenium_helpers import SeleniumTestCase diff --git a/poky/bitbake/lib/toaster/tests/browser/test_layerdetails_page.py b/poky/bitbake/lib/toaster/tests/browser/test_layerdetails_page.py index f81e696a2..71bdd2aaf 100644 --- a/poky/bitbake/lib/toaster/tests/browser/test_layerdetails_page.py +++ b/poky/bitbake/lib/toaster/tests/browser/test_layerdetails_page.py @@ -7,7 +7,7 @@ # Copyright (C) 2013-2016 Intel Corporation # -from django.core.urlresolvers import reverse +from django.urls import reverse from tests.browser.selenium_helpers import SeleniumTestCase from orm.models import Layer, Layer_Version, Project, LayerSource, Release diff --git a/poky/bitbake/lib/toaster/tests/browser/test_most_recent_builds_states.py b/poky/bitbake/lib/toaster/tests/browser/test_most_recent_builds_states.py index 15d25dc3a..7844aaa39 100644 --- a/poky/bitbake/lib/toaster/tests/browser/test_most_recent_builds_states.py +++ b/poky/bitbake/lib/toaster/tests/browser/test_most_recent_builds_states.py @@ -7,7 +7,7 @@ # Copyright (C) 2013-2016 Intel Corporation # -from django.core.urlresolvers import reverse +from django.urls import reverse from django.utils import timezone from tests.browser.selenium_helpers import SeleniumTestCase from tests.browser.selenium_helpers_base import Wait diff --git a/poky/bitbake/lib/toaster/tests/browser/test_new_custom_image_page.py b/poky/bitbake/lib/toaster/tests/browser/test_new_custom_image_page.py index 0aa3b7a77..9906ae42a 100644 --- a/poky/bitbake/lib/toaster/tests/browser/test_new_custom_image_page.py +++ b/poky/bitbake/lib/toaster/tests/browser/test_new_custom_image_page.py @@ -7,7 +7,7 @@ # SPDX-License-Identifier: GPL-2.0-only # -from django.core.urlresolvers import reverse +from django.urls import reverse from tests.browser.selenium_helpers import SeleniumTestCase from orm.models import BitbakeVersion, Release, Project, ProjectLayer, Layer diff --git a/poky/bitbake/lib/toaster/tests/browser/test_new_project_page.py b/poky/bitbake/lib/toaster/tests/browser/test_new_project_page.py index 8e56bb043..e20a1f686 100644 --- a/poky/bitbake/lib/toaster/tests/browser/test_new_project_page.py +++ b/poky/bitbake/lib/toaster/tests/browser/test_new_project_page.py @@ -7,7 +7,7 @@ # SPDX-License-Identifier: GPL-2.0-only # -from django.core.urlresolvers import reverse +from django.urls import reverse from tests.browser.selenium_helpers import SeleniumTestCase from selenium.webdriver.support.ui import Select from selenium.common.exceptions import InvalidElementStateException diff --git a/poky/bitbake/lib/toaster/tests/browser/test_project_builds_page.py b/poky/bitbake/lib/toaster/tests/browser/test_project_builds_page.py index 47fb10b26..51717e72d 100644 --- a/poky/bitbake/lib/toaster/tests/browser/test_project_builds_page.py +++ b/poky/bitbake/lib/toaster/tests/browser/test_project_builds_page.py @@ -9,7 +9,7 @@ import re -from django.core.urlresolvers import reverse +from django.urls import reverse from django.utils import timezone from tests.browser.selenium_helpers import SeleniumTestCase diff --git a/poky/bitbake/lib/toaster/tests/browser/test_project_config_page.py b/poky/bitbake/lib/toaster/tests/browser/test_project_config_page.py index 2816eb907..944bcb263 100644 --- a/poky/bitbake/lib/toaster/tests/browser/test_project_config_page.py +++ b/poky/bitbake/lib/toaster/tests/browser/test_project_config_page.py @@ -7,10 +7,7 @@ # SPDX-License-Identifier: GPL-2.0-only # -import re - -from django.core.urlresolvers import reverse -from django.utils import timezone +from django.urls import reverse from tests.browser.selenium_helpers import SeleniumTestCase from orm.models import BitbakeVersion, Release, Project, ProjectVariable @@ -216,4 +213,5 @@ class TestProjectConfigsPage(SeleniumTestCase): hidden_element = self.driver.find_element_by_id('hintError-sstate_dir') self.assertEqual(hidden_element.is_displayed(), False, - 'sstate directory path valid but treated as invalid') \ No newline at end of file + 'sstate directory path valid but treated as invalid') + diff --git a/poky/bitbake/lib/toaster/tests/browser/test_project_page.py b/poky/bitbake/lib/toaster/tests/browser/test_project_page.py index 8b5e1b673..546293f1e 100644 --- a/poky/bitbake/lib/toaster/tests/browser/test_project_page.py +++ b/poky/bitbake/lib/toaster/tests/browser/test_project_page.py @@ -7,7 +7,7 @@ # SPDX-License-Identifier: GPL-2.0-only # -from django.core.urlresolvers import reverse +from django.urls import reverse from django.utils import timezone from tests.browser.selenium_helpers import SeleniumTestCase diff --git a/poky/bitbake/lib/toaster/tests/browser/test_sample.py b/poky/bitbake/lib/toaster/tests/browser/test_sample.py index f4ad670a3..b0067c21c 100644 --- a/poky/bitbake/lib/toaster/tests/browser/test_sample.py +++ b/poky/bitbake/lib/toaster/tests/browser/test_sample.py @@ -16,7 +16,7 @@ New test files should follow this structure, should be named "test_*.py", and should be in the same directory as this sample. """ -from django.core.urlresolvers import reverse +from django.urls import reverse from tests.browser.selenium_helpers import SeleniumTestCase class TestSample(SeleniumTestCase): diff --git a/poky/bitbake/lib/toaster/tests/browser/test_task_page.py b/poky/bitbake/lib/toaster/tests/browser/test_task_page.py index 26f3dca83..011b5854a 100644 --- a/poky/bitbake/lib/toaster/tests/browser/test_task_page.py +++ b/poky/bitbake/lib/toaster/tests/browser/test_task_page.py @@ -7,7 +7,7 @@ # SPDX-License-Identifier: GPL-2.0-only # -from django.core.urlresolvers import reverse +from django.urls import reverse from django.utils import timezone from tests.browser.selenium_helpers import SeleniumTestCase from orm.models import Project, Build, Layer, Layer_Version, Recipe, Target diff --git a/poky/bitbake/lib/toaster/tests/browser/test_toastertable_ui.py b/poky/bitbake/lib/toaster/tests/browser/test_toastertable_ui.py index ef78cbb1e..e82d5ec65 100644 --- a/poky/bitbake/lib/toaster/tests/browser/test_toastertable_ui.py +++ b/poky/bitbake/lib/toaster/tests/browser/test_toastertable_ui.py @@ -9,7 +9,7 @@ from datetime import datetime -from django.core.urlresolvers import reverse +from django.urls import reverse from django.utils import timezone from tests.browser.selenium_helpers import SeleniumTestCase from orm.models import BitbakeVersion, Release, Project, Build diff --git a/poky/bitbake/lib/toaster/tests/functional/test_functional_basic.py b/poky/bitbake/lib/toaster/tests/functional/test_functional_basic.py index 56c84fba8..5683e3873 100644 --- a/poky/bitbake/lib/toaster/tests/functional/test_functional_basic.py +++ b/poky/bitbake/lib/toaster/tests/functional/test_functional_basic.py @@ -7,7 +7,6 @@ # SPDX-License-Identifier: GPL-2.0-only # -import time import re from tests.functional.functional_helpers import SeleniumFunctionalTestCase from orm.models import Project diff --git a/poky/bitbake/lib/toaster/tests/views/test_views.py b/poky/bitbake/lib/toaster/tests/views/test_views.py index 68d9e9de1..735d596bc 100644 --- a/poky/bitbake/lib/toaster/tests/views/test_views.py +++ b/poky/bitbake/lib/toaster/tests/views/test_views.py @@ -11,7 +11,7 @@ from django.test import TestCase from django.test.client import RequestFactory -from django.core.urlresolvers import reverse +from django.urls import reverse from django.db.models import Q from orm.models import Project, Package diff --git a/poky/bitbake/lib/toaster/toastergui/api.py b/poky/bitbake/lib/toaster/toastergui/api.py index 8b49b3ee3..b4cdc335e 100644 --- a/poky/bitbake/lib/toaster/toastergui/api.py +++ b/poky/bitbake/lib/toaster/toastergui/api.py @@ -13,7 +13,6 @@ import logging import json import subprocess from collections import Counter -from shutil import copyfile from orm.models import Project, ProjectTarget, Build, Layer_Version from orm.models import LayerVersionDependency, LayerSource, ProjectLayer @@ -25,12 +24,10 @@ from bldcontrol import bbcontroller from django.http import HttpResponse, JsonResponse from django.views.generic import View -from django.core.urlresolvers import reverse +from django.urls import reverse from django.db.models import Q, F from django.db import Error from toastergui.templatetags.projecttags import filtered_filesizeformat -from django.utils import timezone -import pytz # development/debugging support verbose = 2 diff --git a/poky/bitbake/lib/toaster/toastergui/tables.py b/poky/bitbake/lib/toaster/toastergui/tables.py index b3ea2227e..528dd32b0 100644 --- a/poky/bitbake/lib/toaster/toastergui/tables.py +++ b/poky/bitbake/lib/toaster/toastergui/tables.py @@ -7,15 +7,10 @@ # from toastergui.widgets import ToasterTable -from orm.models import Recipe, ProjectLayer, Layer_Version, Machine, Project +from orm.models import Recipe, ProjectLayer, Layer_Version, Project from orm.models import CustomImageRecipe, Package, Target, Build, LogMessage, Task from orm.models import CustomImagePackage, Package_DependencyManager -from orm.models import Distro -from django.db.models import Q, Max, Sum, Count, When, Case, Value, IntegerField -from django.conf.urls import url -from django.core.urlresolvers import reverse, resolve -from django.http import HttpResponse -from django.views.generic import TemplateView +from django.db.models import Q, Sum, Count, When, Case, Value, IntegerField from toastergui.tablefilter import TableFilter from toastergui.tablefilter import TableFilterActionToggle diff --git a/poky/bitbake/lib/toaster/toastergui/templatetags/objects_to_dictionaries_filter.py b/poky/bitbake/lib/toaster/toastergui/templatetags/objects_to_dictionaries_filter.py index 048d53387..e242234bf 100644 --- a/poky/bitbake/lib/toaster/toastergui/templatetags/objects_to_dictionaries_filter.py +++ b/poky/bitbake/lib/toaster/toastergui/templatetags/objects_to_dictionaries_filter.py @@ -3,7 +3,6 @@ # from django import template -import json register = template.Library() diff --git a/poky/bitbake/lib/toaster/toastergui/templatetags/project_url_tag.py b/poky/bitbake/lib/toaster/toastergui/templatetags/project_url_tag.py index 71e092578..7b6f15b2c 100644 --- a/poky/bitbake/lib/toaster/toastergui/templatetags/project_url_tag.py +++ b/poky/bitbake/lib/toaster/toastergui/templatetags/project_url_tag.py @@ -3,7 +3,7 @@ # from django import template -from django.core.urlresolvers import reverse +from django.urls import reverse register = template.Library() diff --git a/poky/bitbake/lib/toaster/toastergui/templatetags/projecttags.py b/poky/bitbake/lib/toaster/toastergui/templatetags/projecttags.py index 1dbab3bdb..c432f59a7 100644 --- a/poky/bitbake/lib/toaster/toastergui/templatetags/projecttags.py +++ b/poky/bitbake/lib/toaster/toastergui/templatetags/projecttags.py @@ -6,7 +6,7 @@ # SPDX-License-Identifier: GPL-2.0-only # -from datetime import datetime, timedelta +from datetime import timedelta from os.path import relpath import re from django import template @@ -44,7 +44,7 @@ def json(value, default = None): # it manually here return mark_safe(JsonLib.dumps(value, indent=2, default = default, ensure_ascii=False).replace('