From 1bf11aa26d9274186b927ea431b6b54eda0e9999 Mon Sep 17 00:00:00 2001 From: Franck Bret Date: Wed, 25 May 2022 14:43:38 +0200 Subject: [PATCH] Add arch lister module (origins from archives). After a first attempt with D7812 this one use a different strategy to retrieve origins. Fetch and extract "core.files.tar.gz", "extra.files.tar.gz" and "community.files.tar.gz" from archives.archlinux.org. That step ensure that we have a list of "official" packages. Parse metadata from 'desc' file to build origins url. Scrap the origin url to get artifacts metadata that list all versions of a package. It also fetch and extract unofficial 'arm' packages from archlinuxarm.org but in this case we can not get all versions of an arm package. Related T4233 --- CONTRIBUTORS | 1 + setup.py | 1 + swh/lister/arch/__init__.py | 12 + swh/lister/arch/lister.py | 448 +++++++ swh/lister/arch/tasks.py | 19 + swh/lister/arch/tests/__init__.py | 31 + .../data/fake_archlinux_archives_init.sh | 905 ++++++++++++++ .../packages_d_dialog | 52 + .../packages_g_gnome-code-assistance | 26 + .../packages_g_gzip | 16 + .../packages_l_libasyncns | 12 + .../packages_m_mercurial | 97 ++ .../packages_p_python-hglib | 16 + ...community_os_x86_64_community.files.tar.gz | Bin 0 -> 1958 bytes ...epos_last_core_os_x86_64_core.files.tar.gz | Bin 0 -> 1750 bytes ...os_last_extra_os_x86_64_extra.files.tar.gz | Bin 0 -> 1758 bytes .../aarch64_community_community.files.tar.gz | Bin 0 -> 1190 bytes .../aarch64_core_core.files.tar.gz | Bin 0 -> 1128 bytes .../aarch64_extra_extra.files.tar.gz | Bin 0 -> 1120 bytes .../armv7h_community_community.files.tar.gz | Bin 0 -> 1184 bytes .../armv7h_core_core.files.tar.gz | Bin 0 -> 1123 bytes .../armv7h_extra_extra.files.tar.gz | Bin 0 -> 1120 bytes swh/lister/arch/tests/test_lister.py | 1088 +++++++++++++++++ swh/lister/arch/tests/test_tasks.py | 31 + 24 files changed, 2755 insertions(+) create mode 100644 swh/lister/arch/__init__.py create mode 100644 swh/lister/arch/lister.py create mode 100644 swh/lister/arch/tasks.py create mode 100644 swh/lister/arch/tests/__init__.py create mode 100755 swh/lister/arch/tests/data/fake_archlinux_archives_init.sh create mode 100644 swh/lister/arch/tests/data/https_archive.archlinux.org/packages_d_dialog create mode 100644 swh/lister/arch/tests/data/https_archive.archlinux.org/packages_g_gnome-code-assistance create mode 100644 swh/lister/arch/tests/data/https_archive.archlinux.org/packages_g_gzip create mode 100644 swh/lister/arch/tests/data/https_archive.archlinux.org/packages_l_libasyncns create mode 100644 swh/lister/arch/tests/data/https_archive.archlinux.org/packages_m_mercurial create mode 100644 swh/lister/arch/tests/data/https_archive.archlinux.org/packages_p_python-hglib create mode 100644 swh/lister/arch/tests/data/https_archive.archlinux.org/repos_last_community_os_x86_64_community.files.tar.gz create mode 100644 swh/lister/arch/tests/data/https_archive.archlinux.org/repos_last_core_os_x86_64_core.files.tar.gz create mode 100644 swh/lister/arch/tests/data/https_archive.archlinux.org/repos_last_extra_os_x86_64_extra.files.tar.gz create mode 100644 swh/lister/arch/tests/data/https_uk.mirror.archlinuxarm.org/aarch64_community_community.files.tar.gz create mode 100644 swh/lister/arch/tests/data/https_uk.mirror.archlinuxarm.org/aarch64_core_core.files.tar.gz create mode 100644 swh/lister/arch/tests/data/https_uk.mirror.archlinuxarm.org/aarch64_extra_extra.files.tar.gz create mode 100644 swh/lister/arch/tests/data/https_uk.mirror.archlinuxarm.org/armv7h_community_community.files.tar.gz create mode 100644 swh/lister/arch/tests/data/https_uk.mirror.archlinuxarm.org/armv7h_core_core.files.tar.gz create mode 100644 swh/lister/arch/tests/data/https_uk.mirror.archlinuxarm.org/armv7h_extra_extra.files.tar.gz create mode 100644 swh/lister/arch/tests/test_lister.py create mode 100644 swh/lister/arch/tests/test_tasks.py diff --git a/CONTRIBUTORS b/CONTRIBUTORS index e7f5577..a3cb4fa 100644 --- a/CONTRIBUTORS +++ b/CONTRIBUTORS @@ -6,3 +6,4 @@ Sushant Sushant Hezekiah Maina Boris Baldassari Léo Andrès +Franck Bret diff --git a/setup.py b/setup.py index 6a374fd..f77a24c 100755 --- a/setup.py +++ b/setup.py @@ -55,6 +55,7 @@ setup( [swh.cli.subcommands] lister=swh.lister.cli [swh.workers] + lister.arch=swh.lister.arch:register lister.bitbucket=swh.lister.bitbucket:register lister.cgit=swh.lister.cgit:register lister.cran=swh.lister.cran:register diff --git a/swh/lister/arch/__init__.py b/swh/lister/arch/__init__.py new file mode 100644 index 0000000..97abe5e --- /dev/null +++ b/swh/lister/arch/__init__.py @@ -0,0 +1,12 @@ +# Copyright (C) 2022 the Software Heritage developers +# License: GNU General Public License version 3, or any later version +# See top-level LICENSE file for more information + + +def register(): + from .lister import ArchLister + + return { + "lister": ArchLister, + "task_modules": ["%s.tasks" % __name__], + } diff --git a/swh/lister/arch/lister.py b/swh/lister/arch/lister.py new file mode 100644 index 0000000..0b6afb6 --- /dev/null +++ b/swh/lister/arch/lister.py @@ -0,0 +1,448 @@ +# Copyright (C) 2022 The Software Heritage developers +# See the AUTHORS file at the top-level directory of this distribution +# License: GNU General Public License version 3, or any later version +# See top-level LICENSE file for more information +import datetime +import logging +from pathlib import Path +import re +import tarfile +from typing import Any, Dict, Iterator, List, Optional +from urllib.parse import unquote, urljoin + +from bs4 import BeautifulSoup +import requests + +from swh.model.hashutil import hash_to_hex +from swh.scheduler.interface import SchedulerInterface +from swh.scheduler.model import ListedOrigin + +from ..pattern import CredentialsType, StatelessLister + +logger = logging.getLogger(__name__) + +# Aliasing the page results returned by `get_pages` method from the lister. +ArchListerPage = List[Dict[str, Any]] + + +def size_to_bytes(size: str) -> int: + """Convert human readable file size to bytes. + + Resulting value is an approximation as input value is in most case rounded. + + Args: + size: A string representing a human readable file size (eg: '500K') + + Returns: + A decimal representation of file size + + Examples:: + + >>> size_to_bytes("500") + 500 + >>> size_to_bytes("1K") + 1000 + """ + units = { + "K": 1000, + "M": 1000**2, + "G": 1000**3, + "T": 1000**4, + "P": 1000**5, + "E": 1000**6, + "Z": 1000**7, + "Y": 1000**8, + } + if size.endswith(tuple(units)): + v, u = (size[:-1], size[-1]) + return int(v) * units[u] + else: + return int(size) + + +class ArchLister(StatelessLister[ArchListerPage]): + """List Arch linux origins from 'core', 'extra', and 'community' repositories + + For 'official' Arch Linux it downloads core.tar.gz, extra.tar.gz and community.tar.gz + from https://archive.archlinux.org/repos/last/ extract to a temp directory and + then walks through each 'desc' files. + + Each 'desc' file describe the latest released version of a package and helps + to build an origin url from where scrapping artifacts metadata. + + For 'arm' Arch Linux it follow the same discovery process parsing 'desc' files. + The main difference is that we can't get existing versions of an arm package + because https://archlinuxarm.org does not have an 'archive' website or api. + """ + + LISTER_NAME = "arch" + VISIT_TYPE = "arch" + INSTANCE = "arch" + + DESTINATION_PATH = Path("/tmp/archlinux_archive") + + ARCH_PACKAGE_URL_PATTERN = "{base_url}/packages/{repo}/{arch}/{pkgname}" + ARCH_PACKAGE_VERSIONS_URL_PATTERN = "{base_url}/packages/{pkgname[0]}/{pkgname}" + ARCH_PACKAGE_DOWNLOAD_URL_PATTERN = ( + "{base_url}/packages/{pkgname[0]}/{pkgname}/{filename}" + ) + ARCH_API_URL_PATTERN = "{base_url}/packages/{repo}/{arch}/{pkgname}/json" + + ARM_PACKAGE_URL_PATTERN = "{base_url}/packages/{arch}/{pkgname}" + ARM_PACKAGE_DOWNLOAD_URL_PATTERN = "{base_url}/{arch}/{repo}/{filename}" + + def __init__( + self, + scheduler: SchedulerInterface, + credentials: Optional[CredentialsType] = None, + flavours: Dict[str, Any] = { + "official": { + "archs": ["x86_64"], + "repos": ["core", "extra", "community"], + "base_info_url": "https://archlinux.org", + "base_archive_url": "https://archive.archlinux.org", + "base_mirror_url": "", + "base_api_url": "https://archlinux.org", + }, + "arm": { + "archs": ["armv7h", "aarch64"], + "repos": ["core", "extra", "community"], + "base_info_url": "https://archlinuxarm.org", + "base_archive_url": "", + "base_mirror_url": "https://uk.mirror.archlinuxarm.org", + "base_api_url": "", + }, + }, + ): + super().__init__( + scheduler=scheduler, + credentials=credentials, + url=flavours["official"]["base_info_url"], + instance=self.INSTANCE, + ) + + self.flavours = flavours + + def scrap_package_versions( + self, name: str, repo: str, base_url: str + ) -> List[Dict[str, Any]]: + """Given a package 'name' and 'repo', make an http call to origin url and parse its content + to get package versions artifacts data. + That method is suitable only for 'official' Arch Linux, not 'arm'. + + Args: + name: Package name + repo: The repository the package belongs to (one of self.repos) + + Returns: + A list of dict of version + + Example:: + + [ + {"url": "https://archive.archlinux.org/packages/d/dialog/dialog-1:1.3_20190211-1-x86_64.pkg.tar.xz", # noqa: B950 + "arch": "x86_64", + "repo": "core", + "name": "dialog", + "version": "1:1.3_20190211-1", + "length": 180000, + "filename": "dialog-1:1.3_20190211-1-x86_64.pkg.tar.xz", + "last_modified": "2019-02-13T08:36:00"}, + ] + """ + url = self.ARCH_PACKAGE_VERSIONS_URL_PATTERN.format( + pkgname=name, base_url=base_url + ) + soup = BeautifulSoup(requests.get(url).text, "html.parser") + links = soup.find_all("a", href=True) + + # drop the first line (used to go to up directory) + if links[0].attrs["href"] == "../": + links.pop(0) + + versions = [] + + for link in links: + # filename displayed can be cropped if name is too long, get it from href instead + filename = unquote(link.attrs["href"]) + + if filename.endswith((".tar.xz", ".tar.zst")): + # Extract arch from filename + arch_rex = re.compile( + rf"^{re.escape(name)}-(?P.*)-(?Pany|i686|x86_64)" + rf"(.pkg.tar.(?:zst|xz))$" + ) + m = arch_rex.match(filename) + if m is None: + logger.error( + "Can not find a match for architecture in %(filename)s" + % dict(filename=filename) + ) + else: + arch = m.group("arch") + version = m.group("version") + + # Extract last_modified and an approximate file size + raw_text = link.next_sibling + raw_text_rex = re.compile( + r"^(?P\d+-\w+-\d+ \d\d:\d\d)\s+(?P\w+)$" + ) + s = raw_text_rex.search(raw_text.strip()) + if s is None: + logger.error( + "Can not find a match for 'last_modified' and/or " + "'size' in '%(raw_text)s'" % dict(raw_text=raw_text) + ) + else: + assert s.groups() + assert len(s.groups()) == 2 + last_modified_str, size = s.groups() + + # format as expected + last_modified = datetime.datetime.strptime( + last_modified_str, "%d-%b-%Y %H:%M" + ).isoformat() + + length = size_to_bytes(size) # we want bytes + + # link url is relative, format a canonical one + url = self.ARCH_PACKAGE_DOWNLOAD_URL_PATTERN.format( + base_url=base_url, pkgname=name, filename=filename + ) + versions.append( + dict( + name=name, + version=version, + repo=repo, + arch=arch, + filename=filename, + url=url, + last_modified=last_modified, + length=length, + ) + ) + return versions + + def get_repo_archive(self, url: str, destination_path: Path) -> Path: + """Given an url and a destination path, retrieve and extract .tar.gz archive + which contains 'desc' file for each package. + Each .tar.gz archive corresponds to an Arch Linux repo ('core', 'extra', 'community'). + + Args: + url: url of the .tar.gz archive to download + destination_path: the path on disk where to extract archive + + Returns: + a directory Path where the archive has been extracted to. + """ + res = requests.get(url) + destination_path.parent.mkdir(parents=True, exist_ok=True) + destination_path.write_bytes(res.content) + + extract_to = Path(str(destination_path).split(".tar.gz")[0]) + tar = tarfile.open(destination_path) + tar.extractall(path=extract_to) + tar.close() + + return extract_to + + def parse_desc_file( + self, + path: Path, + repo: str, + base_url: str, + dl_url_fmt: str, + ) -> Dict[str, Any]: + """Extract package information from a 'desc' file. + There are subtle differences between parsing 'official' and 'arm' des files + + Args: + path: A path to a 'desc' file on disk + repo: The repo the package belongs to + + Returns: + A dict of metadata + + Example:: + + {'api_url': 'https://archlinux.org/packages/core/x86_64/dialog/json', + 'arch': 'x86_64', + 'base': 'dialog', + 'builddate': '1650081535', + 'csize': '203028', + 'desc': 'A tool to display dialog boxes from shell scripts', + 'filename': 'dialog-1:1.3_20220414-1-x86_64.pkg.tar.zst', + 'isize': '483988', + 'license': 'LGPL2.1', + 'md5sum': '06407c0cb11c50d7bf83d600f2e8107c', + 'name': 'dialog', + 'packager': 'Evangelos Foutras ', + 'pgpsig': 'pgpsig content xxx', + 'project_url': 'https://invisible-island.net/dialog/', + 'provides': 'libdialog.so=15-64', + 'repo': 'core', + 'sha256sum': 'ef8c8971f591de7db0f455970ef5d81d5aced1ddf139f963f16f6730b1851fa7', + 'url': 'https://archive.archlinux.org/packages/.all/dialog-1:1.3_20220414-1-x86_64.pkg.tar.zst', # noqa: B950 + 'version': '1:1.3_20220414-1'} + """ + rex = re.compile(r"^\%(?P\w+)\%\n(?P.*)\n$", re.M) + with path.open("rb") as content: + parsed = rex.findall(content.read().decode()) + data = {entry[0].lower(): entry[1] for entry in parsed} + + if "url" in data.keys(): + data["project_url"] = data["url"] + + assert data["name"] + assert data["filename"] + assert data["arch"] + + data["repo"] = repo + data["url"] = urljoin( + base_url, + dl_url_fmt.format( + base_url=base_url, + pkgname=data["name"], + filename=data["filename"], + arch=data["arch"], + repo=repo, + ), + ) + + assert data["md5sum"] + assert data["sha256sum"] + data["checksums"] = { + "md5sum": hash_to_hex(data["md5sum"]), + "sha256sum": hash_to_hex(data["sha256sum"]), + } + return data + + def get_pages(self) -> Iterator[ArchListerPage]: + """Yield an iterator sorted by name in ascending order of pages. + + Each page is a list of package belonging to a flavour ('official', 'arm'), + and a repo ('core', 'extra', 'community') + """ + + for name, flavour in self.flavours.items(): + for arch in flavour["archs"]: + for repo in flavour["repos"]: + page = [] + if name == "official": + prefix = urljoin(flavour["base_archive_url"], "/repos/last/") + filename = f"{repo}.files.tar.gz" + archive_url = urljoin(prefix, f"{repo}/os/{arch}/{filename}") + destination_path = Path(self.DESTINATION_PATH, arch, filename) + base_url = flavour["base_archive_url"] + dl_url_fmt = self.ARCH_PACKAGE_DOWNLOAD_URL_PATTERN + base_info_url = flavour["base_info_url"] + info_url_fmt = self.ARCH_PACKAGE_URL_PATTERN + elif name == "arm": + filename = f"{repo}.files.tar.gz" + archive_url = urljoin( + flavour["base_mirror_url"], f"{arch}/{repo}/{filename}" + ) + destination_path = Path(self.DESTINATION_PATH, arch, filename) + base_url = flavour["base_mirror_url"] + dl_url_fmt = self.ARM_PACKAGE_DOWNLOAD_URL_PATTERN + base_info_url = flavour["base_info_url"] + info_url_fmt = self.ARM_PACKAGE_URL_PATTERN + + archive = self.get_repo_archive( + url=archive_url, destination_path=destination_path + ) + + assert archive + + packages_desc = list(archive.glob("**/desc")) + logger.debug( + "Processing %(instance)s source packages info from " + "%(flavour)s %(arch)s %(repo)s repository, " + "(%(qty)s packages)." + % dict( + instance=self.instance, + flavour=name, + arch=arch, + repo=repo, + qty=len(packages_desc), + ) + ) + + for package_desc in packages_desc: + data = self.parse_desc_file( + path=package_desc, + repo=repo, + base_url=base_url, + dl_url_fmt=dl_url_fmt, + ) + + assert data["builddate"] + last_modified = datetime.datetime.fromtimestamp( + float(data["builddate"]), tz=datetime.timezone.utc + ) + + assert data["name"] + assert data["filename"] + assert data["arch"] + url = info_url_fmt.format( + base_url=base_info_url, + pkgname=data["name"], + filename=data["filename"], + repo=repo, + arch=data["arch"], + ) + + assert data["version"] + if name == "official": + # find all versions of a package scrapping archive + versions = self.scrap_package_versions( + name=data["name"], + repo=repo, + base_url=base_url, + ) + elif name == "arm": + # There is no way to get related versions of a package, + # but 'data' represents the latest released version, + # use it in this case + assert data["builddate"] + assert data["csize"] + assert data["url"] + versions = [ + dict( + name=data["name"], + version=data["version"], + repo=repo, + arch=data["arch"], + filename=data["filename"], + url=data["url"], + last_modified=last_modified.replace( + tzinfo=None + ).isoformat(timespec="seconds"), + length=int(data["csize"]), + ) + ] + + package = { + "name": data["name"], + "version": data["version"], + "last_modified": last_modified, + "url": url, + "versions": versions, + "data": data, + } + page.append(package) + yield page + + def get_origins_from_page(self, page: ArchListerPage) -> Iterator[ListedOrigin]: + """Iterate on all arch pages and yield ListedOrigin instances.""" + assert self.lister_obj.id is not None + for origin in page: + yield ListedOrigin( + lister_id=self.lister_obj.id, + visit_type=self.VISIT_TYPE, + url=origin["url"], + last_update=origin["last_modified"], + extra_loader_arguments={ + "artifacts": origin["versions"], + }, + ) diff --git a/swh/lister/arch/tasks.py b/swh/lister/arch/tasks.py new file mode 100644 index 0000000..40a3ef0 --- /dev/null +++ b/swh/lister/arch/tasks.py @@ -0,0 +1,19 @@ +# Copyright (C) 2022 The Software Heritage developers +# See the AUTHORS file at the top-level directory of this distribution +# License: GNU General Public License version 3, or any later version +# See top-level LICENSE file for more information + +from celery import shared_task + +from swh.lister.arch.lister import ArchLister + + +@shared_task(name=__name__ + ".ArchListerTask") +def list_arch(**lister_args): + """Lister task for Arch Linux""" + return ArchLister.from_configfile(**lister_args).run().dict() + + +@shared_task(name=__name__ + ".ping") +def _ping(): + return "OK" diff --git a/swh/lister/arch/tests/__init__.py b/swh/lister/arch/tests/__init__.py new file mode 100644 index 0000000..8ba0ac1 --- /dev/null +++ b/swh/lister/arch/tests/__init__.py @@ -0,0 +1,31 @@ +# Copyright (C) 2022 the Software Heritage developers +# License: GNU General Public License version 3, or any later version +# See top-level LICENSE file for more information + +import os +from pathlib import PosixPath +import subprocess +from typing import Optional, Union + +# TODO: prepare_repository_from_archive method is duplicated from crates lister tests, +# centralize to tests utils? + + +def prepare_repository_from_archive( + archive_path: str, + filename: Optional[str] = None, + tmp_path: Union[PosixPath, str] = "/tmp", +) -> str: + """Given an existing archive_path, uncompress it. + Returns a file repo url which can be used as origin url. + + This does not deal with the case where the archive passed along does not exist. + """ + if not isinstance(tmp_path, str): + tmp_path = str(tmp_path) + # uncompress folder/repositories/dump for the loader to ingest + subprocess.check_output(["tar", "xf", archive_path, "-C", tmp_path]) + # build the origin url (or some derivative form) + _fname = filename if filename else os.path.basename(archive_path) + repo_url = f"file://{tmp_path}/{_fname}" + return repo_url diff --git a/swh/lister/arch/tests/data/fake_archlinux_archives_init.sh b/swh/lister/arch/tests/data/fake_archlinux_archives_init.sh new file mode 100755 index 0000000..d94f468 --- /dev/null +++ b/swh/lister/arch/tests/data/fake_archlinux_archives_init.sh @@ -0,0 +1,905 @@ +#!/usr/bin/env bash + +# Script to generate fake-.tar.gz files and fake http responses for +# archive.archlinux.org and mirror.archlinuxarm.org +# For tests purposes only + +set -euo pipefail + +# files and directories +mkdir https_archive.archlinux.org +mkdir https_uk.mirror.archlinuxarm.org + +mkdir -p tmp_dir/archives/ +cd tmp_dir/archives/ + +mkdir -p core.files +mkdir -p core.files/gzip-1.12-1 +mkdir -p core.files/dialog-1:1.3_20220414-1 + +mkdir -p extra.files +mkdir -p extra.files/mercurial-6.1.2-1 +mkdir -p extra.files/libasyncns-0.8+3+g68cd5af-3 + +mkdir -p community.files +mkdir -p community.files/python-hglib-2.6.2-4 +mkdir -p community.files/gnome-code-assistance-3:3.16.1+r14+gaad6437-1 + +echo -e """%FILENAME% +gzip-1.12-1-x86_64.pkg.tar.zst + +%NAME% +gzip + +%BASE% +gzip + +%VERSION% +1.12-1 + +%DESC% +GNU compression utility + +%GROUPS% +base-devel + +%CSIZE% +81552 + +%ISIZE% +150448 + +%MD5SUM% +3e72c94305917d00d9e361a687cf0a3e + +%SHA256SUM% +0ee561edfbc1c7c6a204f7cfa43437c3362311b4fd09ea0541134aaea3a8cc07 + +%PGPSIG% +iQIzBAABCgAdFiEE4kC1fixGMLp2ji8m/BtUfI2BcsgFAmJPIMEACgkQ/BtUfI2BcsjDTw//Zzu/G+1B2qKIwqy7s/3WieNflLj8PdroF2V+5/W9O70zY4P3edkzjJVCjp9j8esIwfacDfgJvqpdQE5oBJKrwtp3FHEKSRXYUwkOWeGcxO9F8scRclqPYIybfeD3zp0hL2iXE3x4NOg46znlYXqr19Nnovb0Pf0XQ3x8B8qwk997aUvmJz40iQ31EOuQ/PaxboOdiGPkAfflBYdcoDS2XprT5Po9bNoHen5qdN55eF3mipOVZMiynZoHVwgWT/lVwEuAUMxPMLW/QAHn7UEyWIii+ysUZCECf7sVUHOtdro4Y3bUl85JlyFx113dvJDy7QVX4qh89YFLHb0E3ml64wa+I5/q8Y2l7FRPr07n6yhb+MDQcA9hteDOzYzhT7gThrtJAEVJSHxxlGoC/GHgPTWwc7RD80OUcAiGJBUjxYUOKy/CBJ7H4zaRCa28CWrh7IEqDUu6hrCZQHAzmAYbF8X8BnIAAg7jkH3tlH8zwtw3eFxATWgSWfPFsl7jPdGwSUjmff1YvOCjh8r4YFuqqejZQSsUWnO9vE37DCVod7qSBPLzJOfCyPpSoouDC3p+vxhJ5Da5vkqUJk017QYDcGxMMyS1joAPBzkkesca7Ej+eHovfEA5mMLmRHR7lULPBnMjz9IW2i0MvRPt4m8wlFucUAUsrMiTn0WM+V2k2qI= + +%URL% +https://www.gnu.org/software/gzip/ + +%LICENSE% +GPL3 + +%ARCH% +x86_64 + +%BUILDDATE% +1649352820 + +%PACKAGER% +Levente Polyak + +%DEPENDS% +glibc +bash +less +""" > core.files/gzip-1.12-1/desc + +echo -e """%FILENAME% +dialog-1:1.3_20220414-1-x86_64.pkg.tar.zst + +%NAME% +dialog + +%BASE% +dialog + +%VERSION% +1:1.3_20220414-1 + +%DESC% +A tool to display dialog boxes from shell scripts + +%CSIZE% +203028 + +%ISIZE% +483988 + +%MD5SUM% +06407c0cb11c50d7bf83d600f2e8107c + +%SHA256SUM% +ef8c8971f591de7db0f455970ef5d81d5aced1ddf139f963f16f6730b1851fa7 + +%PGPSIG% +iQEzBAABCAAdFiEEhs/8qRjPOvRxR1iAUeixSKmZnDQFAmJaPyAACgkQUeixSKmZnDQvZAf/X3qO7Wg6f+tnQ4qciRcRpegsExNRfKo6S1XhA9C0BC0LJDcTRHG1C7+NVB6dSSL5SdOSVTEACjDc2APppNuPDOxFtzl9doYMHqYTSud2yEUPpE8K+3mhcyHpeOxJC6ZIsQWOjug9FTBwUCUo6s5nHjkmRpsK0zYgK9ezmOSZXlS3QSNRaGbKzn1JM8BOUv5Y29f8nTCXNn1m6RW0yAlyz4rdHDVWfaBFvYL7IC/6uwA+92LB3egyEzYx6uuRvvlBR75Rh+IATBxfwLo1bNNEmFWA/W6vooICjF2E23zk4yaKw08f+V2fjRDn9Hs/i2B4bNNNWeOf5q7j7y5EnBbmeQ== + +%URL% +https://invisible-island.net/dialog/ + +%LICENSE% +LGPL2.1 + +%ARCH% +x86_64 + +%BUILDDATE% +1650081535 + +%PACKAGER% +Evangelos Foutras + +%PROVIDES% +libdialog.so=15-64 + +%DEPENDS% +sh +ncurses +""" > core.files/dialog-1:1.3_20220414-1/desc + +echo -e """%FILENAME% +mercurial-6.1.2-1-x86_64.pkg.tar.zst + +%NAME% +mercurial + +%BASE% +mercurial + +%VERSION% +6.1.2-1 + +%DESC% +A scalable distributed SCM tool + +%CSIZE% +5034047 + +%ISIZE% +26912816 + +%MD5SUM% +037ff48bf6127e9d37ad7da7026a6dc0 + +%SHA256SUM% +be33e7bf800d1e84714cd40029d103873e65f5a72dea19d6ad935f3439512cf8 + +%PGPSIG% +iQEzBAABCAAdFiEEFRnVq6Zb9vwrc8dWek52CV2KUuQFAmJ2UgAACgkQek52CV2KUuRecggAo3nP9o1hmew82njxj8i0Nab8Ih2wXfutxDSNjOr5UFH5ei8wD60EU2iyZK0YhXI+cozoRlDI6lIjcvWiDH3s9m09xoCX/HAnPfaWkCo9h8DEQX/qxHKc8o87UPVebkLNqKGSu/xXd+n3A5gVl1pI3+7HpaXwOFuTtSFpb+hQ46kW2of+q1NaMpAsLX68uQ0rfaurvIkLZFZDK4zBnRxHXrPMlnj6KbCy/U3/H/ySQTSdfa3YiFe5KzL5dcbPlryCGC4N+xhEn/PYc7OL5I/1iEY9F4sggZQOUh4wXUkv6hc0Xp6Htp7kMKuJUoPJt8kaeUZnIWkB1CCBP5IxnET7Ag== + +%URL% +https://www.mercurial-scm.org/ + +%LICENSE% +GPL + +%ARCH% +x86_64 + +%BUILDDATE% +1651921313 + +%PACKAGER% +Antonio Rojas + +%DEPENDS% +python + +%OPTDEPENDS% +tk: for the hgk GUI + +%MAKEDEPENDS% +python-docutils +""" > extra.files/mercurial-6.1.2-1/desc + +echo -e """%FILENAME% +libasyncns-0.8+3+g68cd5af-3-x86_64.pkg.tar.zst + +%NAME% +libasyncns + +%BASE% +libasyncns + +%VERSION% +0.8+3+g68cd5af-3 + +%DESC% +A C library for executing name service queries asynchronously + +%CSIZE% +17036 + +%ISIZE% +48763 + +%MD5SUM% +0aad62f00eab3d0ec7798cb5b4a6eddd + +%SHA256SUM% +a0262e191dd3b00343e79e3521159c963e26b7a438d4cc44137c64cf0da90516 + +%PGPSIG% +iQIzBAABCAAdFiEEtZcfLFwQqaCMYAMPeGxj8zDXy5IFAl7DmIIACgkQeGxj8zDXy5IE8w/7BRDCV4cdGG/2DK0ezqicrMTmpRjiN0Zh14s39V/wHt4VmU786y0fjR/2UfvxncnDqBTmiPbe6Ilv5vQ/4aHbRObqeVFD76iMKAPmBWLOvI8rGLlZjK9zLOKTHwKb7EBk4D4HrF/zd/c1Mz5rGkF/RAgchDT2G4NTozG3SUA1cL3TWgvPn4CIEeq2XTO01GCqXMiavdSuyAEIzKjc9zNPQ/2N1qQ2zPuzjbkEEk4Tk2ewKUQbKcVYpp+iwxm5sUFqd/mpnT4scve7bsHm0VduZbz5mqz2fg57/RU8qQ6GjLZjEHQGE2B3YUWzZlxN2x4+skXN7CRNmfAVyoe7C6hsED8cyKx+J8V+hk67xeIfEm0KCOhegpL/TM/O7xR9w5y3WFmN0VS96l5do9hZkkzNn7o64hvjtEypo/sCF/46KqHwJNezukbWENIWJcHYu8EqLaZsTFD+vQ8iXk7xy2ocQQTIfFlThNwPG+oGK8holQjOhdn8C+m8mG5QFQmUqhcPch4qRsUq1uY3CFooIX4pRghkIyrFwmwhxiao2HLegKS9v5RqMCGxJ3jPXT0tB7s56fpC3D2moCJtaN+GUsU3YW/a0gHgIhzCC7HJYZ+T+MkG5LW3Lb5swMXa4Qe5GcSzc1w+cpMurQKANGNk382TO5CRmo3e+dO4CLaXmUGOjGw= + +%URL% +http://0pointer.de/lennart/projects/libasyncns + +%LICENSE% +LGPL + +%ARCH% +x86_64 + +%BUILDDATE% +1589876807 + +%PACKAGER% +Felix Yan + +%DEPENDS% +glibc + +%MAKEDEPENDS% +git +lynx +""" > extra.files/libasyncns-0.8+3+g68cd5af-3/desc + +echo -e """%FILENAME% +python-hglib-2.6.2-4-any.pkg.tar.zst + +%NAME% +python-hglib + +%BASE% +python-hglib + +%VERSION% +2.6.2-4 + +%DESC% +A library with a fast, convenient interface to Mercurial. It uses Mercurial's command server for communication with hg. + +%CSIZE% +44083 + +%ISIZE% +242821 + +%MD5SUM% +ecc6598834dc216efd938466a2425eae + +%SHA256SUM% +fd273811023e8c58090d65118d27f5c10ad10ea5d1fbdbcf88c730327cea0952 + +%PGPSIG% +iQEzBAABCAAdFiEEhs/8qRjPOvRxR1iAUeixSKmZnDQFAmGpaF0ACgkQUeixSKmZnDSHMwf/bCyNUXK2BoZfdNe0hTZJ54M9FgMZC81QPINAugjxpwOYd5zK43PB/n1t5rNpC2jy8G8J5Yuq8eJr5aFV9GB/yeDDlf3gqtOHQteYZjl+oGcfqtVF4i6/e4rXd1mvRH7fFxI18rLThL3Pei+cblh6iZ0NVVqbrd2opURuUvAPwYLN+/YNurFNdS5E1K+TDpMaunA9flatLFV6Cqn3kkyWh0aMT4hN0bv2kvS0AnD3iKh7YTeaHvx1y4o33zcVRDjepcV4ywE6wozteM+Xcelu3XUlZC6luNX05XsQ7x3fKJTFmXrz3y7vYwhq427nuyVEE/yujZLOhBIqLl2VGRUBfQ== + +%URL% +https://pypi.python.org/pypi/python-hglib + +%LICENSE% +MIT + +%ARCH% +any + +%BUILDDATE% +1638492205 + +%PACKAGER% +Evangelos Foutras + +%DEPENDS% +python +mercurial + +%CHECKDEPENDS% +python-nose +""" > community.files/python-hglib-2.6.2-4/desc + +echo -e """%FILENAME% +gnome-code-assistance-2:3.16.1+14+gaad6437-2-x86_64.pkg.tar.zst + +%NAME% +gnome-code-assistance + +%BASE% +gnome-code-assistance + +%VERSION% +2:3.16.1+14+gaad6437-2 + +%DESC% +Code assistance services for GNOME + +%GROUPS% +gnome-extra + +%CSIZE% +1854253 + +%ISIZE% +6795615 + +%MD5SUM% +eadcf1a6bb70a3e564f260b7fc58135a + +%SHA256SUM% +6fd0c80b63d205a1edf5c39c7a62d16499e802566f2451c2b85cd28c9bc30ec7 + +%PGPSIG% +iQIzBAABCAAdFiEEtZcfLFwQqaCMYAMPeGxj8zDXy5IFAmGpWGMACgkQeGxj8zDXy5L5FA/8CXB1h17mEitVHfHvtUbQy/5eZ+REzHQzmtk8SJ5oMk9ojxTuQh95M4gEQrp55g/BWxuXSbnCXu8N0SRpaKgX67kqJn3vnoHGnjobr80L7TXqSEtXj15/153VuoFg5atmbsOgIdgkCzhAJJKxIt0nGfPlegLxHIZ7Ig06dzI9dc2W+cKotnWW6QuRn1CYD28ZKvBhMhBmjcDu6Rj1muz5NvO80HABP7+AVRsqd2eGJdoX/BmBBqjEGnPtXE1wY/uCuG+XWLy2MeV5ps4f8LYubNOa0KIutyEe6IX+29aQGhawI2G4d04azoTBZpy6xtocJzyW+P+vTxcv/4jhj5E6v7izJy34LTShnHd5J/UWiXl50HWKjJbVPN4o0rWX3EptDHX0gyj+1lvS5Za12Lyy8oGeID10T7N8mcEVREM8XylKz7O7wSaKKbVOXQVAWZ/mQwk7GuWOgGH/nPtVgyNNdHSh+3urPzhuvMSoytJmRo4FbOyRju1Zb3RbbIDWA04Dh7DLH1CvxZ53JkNt0wHZFVt792hmZ4o/wFMVXoNrUnHuI9G1sT8TcYjSmiXlZ7l5cyLo6AsvsFUY2ZuBNXz+3M3CzGyGoAV0Hi2SYl5FaZHuKoFh+P5Xk5ngm42kyoAiQKfrled3ff5fWXqU0jbGDUte+QuLcsKYKZ20YhjP2nc= + +%URL% +https://wiki.gnome.org/Projects/CodeAssistance + +%LICENSE% +GPL3 + +%ARCH% +x86_64 + +%BUILDDATE% +1638488044 + +%PACKAGER% +Felix Yan + +%DEPENDS% +libgee +python-dbus +python-gobject +python-pylint +python-pyflakes +python-pycodestyle +python-lxml +python-simplejson +ruby-dbus +ruby-sass + +%OPTDEPENDS% +clang: Assistance for C and C++ +gjs: Assistance for JavaScript +go: Assistance for Go + +%MAKEDEPENDS% +intltool +gobject-introspection +llvm +clang +gjs +go +gnome-common +git +""" > community.files/gnome-code-assistance-3:3.16.1+r14+gaad6437-1/desc + +# Tar archives +tar -czf ../../https_archive.archlinux.org/repos_last_core_os_x86_64_core.files.tar.gz core.files/* +tar -czf ../../https_archive.archlinux.org/repos_last_extra_os_x86_64_extra.files.tar.gz extra.files/* +tar -czf ../../https_archive.archlinux.org/repos_last_community_os_x86_64_community.files.tar.gz community.files/* + + +# Fixtures for archlinuxarm.org + +mkdir -p arm/aarch64/core.files/gzip-1.12-1 +mkdir -p arm/armv7h/core.files/gzip-1.12-1 + +mkdir -p arm/aarch64/extra.files/mercurial-6.1.2-1 +mkdir -p arm/armv7h/extra.files/mercurial-6.1.2-1 + +mkdir -p arm/aarch64/community.files/python-hglib-2.6.2-4 +mkdir -p arm/armv7h/community.files/python-hglib-2.6.2-4 + +echo -e """%FILENAME% +gzip-1.12-1-aarch64.pkg.tar.xz + +%NAME% +gzip + +%BASE% +gzip + +%VERSION% +1.12-1 + +%DESC% +GNU compression utility + +%GROUPS% +base-devel + +%CSIZE% +79640 + +%ISIZE% +162688 + +%MD5SUM% +97d1e76302213f0499f45aa4a4d329cc + +%SHA256SUM% +9065fdaf21dfcac231b0e5977599b37596a0d964f48ec0a6bff628084d636d4c + +%PGPSIG% +iQIzBAABCAAdFiEEaLNTfzmjE7PldNBndxk/FSvb5qYFAmJPUuQACgkQdxk/FSvb5qZTvhAAxa3rIyWh/hXRePyAkPKl14YhopF4FDoyoCA9DJBz8bJ0qCe7IE/lCFgIH3CFPOVQxDttxo2q6KHt/Di2P5TYMyXrkoDdB9dwuku0DPIsYzhAp1PVFUTUe599c8rNVGTn/k62WvcK7jxD0p8niHjveVRjwmJ+uZf3a9AGoedNsQN94I/dnWu2ggFUBXF6c77ak78ED7k2xTlBv2fSK9Jkzkcjxtc4kZKjxzF4NVTnNVJkz6UgFUyESausSfE/ub247pdmk0zTHTPodPKtwuECA8ZwsRrETf5if0WjX81E9ox7AtZ7mcBNuZKdeuBaU4WW3sqH60G3t8c3ZmpxzYWJCOdsiUwYkAu6bw7yvEREdm2J6ZZx4CE59b+1hepO8/BKg+Gxe9jNrSaEqug6SaueXO68Gk3uPqVRbgcXNg6TyHEKPcEhBQS8mzpvTomUOt6A9XCiwVVbuyCfltYKxLwQRh1BeWv2Y3KCjkT4oudxWVXW3FxYjFriw+g6RA41MZ9f+jVMr2cE+QidqN/GmuR8RrFQZhJZ9iZx7S4DrPyxLToPPnTIzRuBJKlDXBgEfIB8cbSSDpZU5SfILZYYHfr9j5hYED765t3959pqBqJ9wPJ0qmydGWInM1M2o1lRyEisWtwTHaAv9LSMklSaMCRPIydqnsdjkHPLAUYlE8yTuRE= + +%URL% +https://www.gnu.org/software/gzip/ + +%LICENSE% +GPL3 + +%ARCH% +aarch64 + +%BUILDDATE% +1649365694 + +%PACKAGER% +Arch Linux ARM Build System """ > arm/aarch64/core.files/gzip-1.12-1/desc + +echo -e """%FILENAME% +gzip-1.12-1-armv7h.pkg.tar.xz + +%NAME% +gzip + +%BASE% +gzip + +%VERSION% +1.12-1 + +%DESC% +GNU compression utility + +%GROUPS% +base-devel + +%CSIZE% +78468 + +%ISIZE% +153864 + +%MD5SUM% +490c9e28db91740f1adcea64cb6ec1aa + +%SHA256SUM% +4ffc8bbede3bbdd9dd6ad6f85bb689b3f4b985655e56285691db2a1346eaf0e7 + +%PGPSIG% +iQIzBAABCAAdFiEEaLNTfzmjE7PldNBndxk/FSvb5qYFAmJPUxgACgkQdxk/FSvb5qZZkBAAwllACKZT9wnFxCcPvZGl/fkHzMs0nyWEsP+JbMaQQaKnSmh8DfklBi+V2rBCRAJiDwBhLjxSS+maW3uxbfaMgNGTl3lSlwvfIz9pUl+OxwS4WB3uMZLNvebVuqO9FQIAB+MdT8ZnWRFRlnj1WPGuDndkZDLlmOqNLWNOgkNS2FAXC0s1nKVGOM8Wd2llYlQkqCglVgOcj4PCmkSBX/BtFJ5gUeelATJiaKQSxN8xFaFbYStlzUe6HhE5Ou2wLHE+XYCEFIgvkoTgZ3eZQbQrV7z/hFW1iv+h9RBbEUcFAZGPbemC3C/PDRMJQySucNEsxCn3huI2KYx0RJunKVJ83QSGJr6xYzSZvCckC9LjHL8DnOOgn+bKJGNc+hBA5EH5/otc17Sr1H+mhx54duc5rH/kUxNg8RwsUEMCgeIw3YQnxeN8GVDbHfsshzk2S+dzOsOZwH+Y0BOknXfQYdssKLKHdktfS2G6t3izZqaflOFLXc5429KAAHldJ+NpYpsKPhCMWYEtdD9Cb21FrdePrlA20BTK02v897gw6qu01vDn7S9fKyQDOjTwO9UZB/S3w99srxwZ3MD6EQH4eLyvD7FSNPYlwiB+WNh+J3+9acHHE9iZ4OCyuutBYf9Pjvwiu9dY1PurqNl3Wd++B/MBYoAX2G6hJr8y8bOF1WBvIhQ= + +%URL% +https://www.gnu.org/software/gzip/ + +%LICENSE% +GPL3 + +%ARCH% +armv7h + +%BUILDDATE% +1649365715 + +%PACKAGER% +Arch Linux ARM Build System """ > arm/armv7h/core.files/gzip-1.12-1/desc + +echo -e """%FILENAME% +mercurial-6.1.3-1-aarch64.pkg.tar.xz + +%NAME% +mercurial + +%BASE% +mercurial + +%VERSION% +6.1.3-1 + +%DESC% +A scalable distributed SCM tool + +%CSIZE% +4931228 + +%ISIZE% +26959193 + +%MD5SUM% +0464390744f42faba80c323ee7c72406 + +%SHA256SUM% +635edb47117e7bda0b821d86e61906c802bd880d4a30a64185d9feec1bd25db6 + +%PGPSIG% +iQIzBAABCAAdFiEEaLNTfzmjE7PldNBndxk/FSvb5qYFAmKZNusACgkQdxk/FSvb5qaIkg/9FuZemlogqBd7AJA2hi9o/jtcX2nj6m12w76PeZXXgZ9//lV+BVb/fjOThz+ndfmGU34vuyfIDrbolajjWcSUtfwlhIohETbrwHfFTNp2GzA4TmKxl1Mw40ibHP+NptgB0i5z+FRUt5RJyfUBokQqSLzcUr5g1XhSmpEBCDC2tR2nZiq4miW4tJIRwM3HBvAJAtdfRGxGi5rs+Qd2hblTRGITfUA1QJxgq6WJjTbuRPb+BN0ohXHMk9GXVQXh0Df8u9WjleQiPT310W/gXNCd9THfYQr2iC1rbd12/oQsgvEelZuN9ZEtzUmFW5KyCjot4uSxj6jV0fa+nxA4Iyqmma2JzUvF9daObxPWbpD3d1Y+i68J/60ekAnN/7cI+YMBjGtCNzJkOW09Hk+gqHe6/ePwejvkvxqENXwLTMBp57Jjg/+RDJ2gvlNfGPskknLqxc6gz59J9fK/ytC9IwTIF54EDPbtAfLcukxG0HKeGZ54bHsE5397UrdqB8auSVsqkZzlauhJs9QaLnbtBBYaFYRgnmRBj3TMYbJRP+1qgxEOQHUOFLwnDGyfOInozxY0pip3GBbICoxFxss39YzeeR4PVqobLWJQq/uNsJhBmVG6dbYGoHsgWHhl2uTalu//mQhMZgcRBRgZ6FqjniSdme/feXMvacHY7n/OrPWiNPY= + +%URL% +https://www.mercurial-scm.org/ + +%LICENSE% +GPL + +%ARCH% +aarch64 + +%BUILDDATE% +1654208118 + +%PACKAGER% +Arch Linux ARM Build System """ > arm/aarch64/extra.files/mercurial-6.1.2-1/desc + +echo -e """%FILENAME% +mercurial-6.1.3-1-armv7h.pkg.tar.xz + +%NAME% +mercurial + +%BASE% +mercurial + +%VERSION% +6.1.3-1 + +%DESC% +A scalable distributed SCM tool + +%CSIZE% +4897816 + +%ISIZE% +26853841 + +%MD5SUM% +453effa55e32be3ef9de5a58f322b9c4 + +%SHA256SUM% +c1321de5890a6f53d41c1a5e339733be145221828703f13bccf3e7fc22612396 + +%PGPSIG% +iQIzBAABCAAdFiEEaLNTfzmjE7PldNBndxk/FSvb5qYFAmKZNpkACgkQdxk/FSvb5qabaw//Z/NRzDzAlQdEYE3sBB6eJSum9HQrUQDHX7c0fl+wyc0sc+thzfUVueQzFi9EkoTZb9zyuTYGt5KPdQ4cAfEj0ikwxDrS1RFzGyre30OgyQfbGMGnC1BQG4TOLWwS+mFn/tMoeriuMtgHoljsbjn+bSI2JONW6U/kf0s726/HDvmKFLyhHsF6ZGlOQC+ASBR84CY496Yc1SJTnQmGaWzDmF2zfK7OxMkVvVJw7Zi0OgF1L+WEIHHgS0T+bYk6rLX3xxgwQ37XczN9+SSFTM77bF1LfJIlLbLspaE6m8EJnpsTnX8nCvGWfbdPhDqGLdVw6hnNMLPFIXxXuY3KgfwGUX1UKxfvHpbjR0uYvW32Xs85lqsHZShtmaWYTJMDjiLht/6d8uAQLPAOjdDneyaCf0XEMHor8yAd9zcVmSgd/s+TJQYtWK9fsl+QVk8WS484iSSRPZFtVzJpqg1TYulaWha6DZCCidVkryStHnoGi+3vti/9FtUs7jn086PzDfugj9DoV7ixJ6edxIgp7r3TYgzzVTHuyhXBOaE0dp+IX3ekcMF7C37qrfS9uVIVVtMYvnQRICULYlB0LLHvrK1+m4z4ETpqNrjNevcUChns24rnJmmdkOEv/pzmAR7oYmX8rFda8wgiYfciBQzi71XcmP/SyIQud3UJUbvZjiTBRGk= + +%URL% +https://www.mercurial-scm.org/ + +%LICENSE% +GPL + +%ARCH% +armv7h + +%BUILDDATE% +1654207988 + +%PACKAGER% +Arch Linux ARM Build System """ > arm/armv7h/extra.files/mercurial-6.1.2-1/desc + +echo -e """%FILENAME% +python-hglib-2.6.2-4-any.pkg.tar.xz + +%NAME% +python-hglib + +%BASE% +python-hglib + +%VERSION% +2.6.2-4 + +%DESC% +A library with a fast, convenient interface to Mercurial. It uses Mercurial's command server for communication with hg. + +%CSIZE% +41432 + +%ISIZE% +242769 + +%MD5SUM% +0f763d5e85c4ffe728153f2836838674 + +%SHA256SUM% +7a873e20d1822403c8ecf0c790de02439368000e9b1b74881788a9faea8c81b6 + +%PGPSIG% +iQIzBAABCAAdFiEEaLNTfzmjE7PldNBndxk/FSvb5qYFAmG4xMQACgkQdxk/FSvb5qboEQ/+PMN4p7cUqEuArNug8UW0h8sG8vXJXyjQo3HxdhIswuNItuBiCaTzFRH+M5Dnoh+Jy+9wLvbzqLnPXkOTgFTBakjyZ8Bxkt1lTYUOUmqCaR3s1nqajOqIRKAAjUuh1oIiM8Hyyfsgrd244jPtRFlL3y6RPgjfd8M9euV9WCxIRVR0ztnvLURlE+yyGVjv6g4rfcwcIPEjV3XUKRd8kLyWkBwDMUgM8rbeVLZjKxdAa1N3XTAikgUi7IJDafpC83IfTzWhBQFaIJ0yQG2FE5FSbY6GlpcpAIktXwxCTBEXYVRtl+tQwDVoLqgExVBMvCza9Nsstav1WwgKnqMIc5HwfNhSPjKoLPKERYhGVpKwY0doal0rfr1gFn4ZOE/WBwCrAFscB9MWhZ/WFXQiWrXfl72YCh6fCdZN5S5xdculOebehgmXP409AE9N0VVM0iCOIG1P9YTv9OWr5VZnUpezKMVXztUHmlAXTkN1dCgPiA34OJ4ExlceNMqbb/ltie0dkRiFRnbat0wIt1KXmhcei4qw0IaFbQo/dvFvigUJ21BUTqzC6ktFICdmL8dJeRjfC7ysu1u/uU+Rq60J/vI6DK1R06oJ5wqVumMdGY4NliZDTooV3+s6M3m/hDkx9IKVn6h+bSTkqiEkgDf/AD3xrKWtO15c1xpA6YeFTkEWL/w= + +%URL% +https://pypi.python.org/pypi/python-hglib + +%LICENSE% +MIT + +%ARCH% +any + +%BUILDDATE% +1639498940 + +%PACKAGER% +Arch Linux ARM Build System """ > arm/aarch64/community.files/python-hglib-2.6.2-4/desc + +echo -e """%FILENAME% +python-hglib-2.6.2-4-any.pkg.tar.xz + +%NAME% +python-hglib + +%BASE% +python-hglib + +%VERSION% +2.6.2-4 + +%DESC% +A library with a fast, convenient interface to Mercurial. It uses Mercurial's command server for communication with hg. + +%CSIZE% +41408 + +%ISIZE% +242769 + +%MD5SUM% +198ef7d6dd40d778a0bf585cce30b1c8 + +%SHA256SUM% +4b0f51e57f22ddc0dbe308244fc1db85b9e9f721396dbcfbcab38bcb4fe16e10 + +%PGPSIG% +iQIzBAABCAAdFiEEaLNTfzmjE7PldNBndxk/FSvb5qYFAmG5GNYACgkQdxk/FSvb5qZa6g/7BcAPCxD5zwY2cBVe5XuwzsTU4cDGoPJ8zVmj9NEpKnoheF29Lfs+dibguAzfox110DhJebVVmS6HeFpQ6QUQtNaO4cser5XBGgF5PTVa4y+gKXiHCOuzmp+iEKmt6u5Gp1lDoMRJb+EvkRRMO51DXCODMvZbj32fyfiVNZsZR5nffQbQ0AWiJ+xeYZVD/7i+mj+wDLtG3+r9KoFFV6C+ZU5g3NDKoHLgLVQLStfiQSDVtIjemPp+CwWQ6AUpC7vzxiPg5X5JdWj5hw/9AgVJHMWqa2q2YgDOPQzLBGgFCRRED96IYoc1ID7ZzI4tXZIQ8L9N4NkIVMyNdZzc1G9XiwOpg360nKNqbfp3igN12Lg8wqXeYdYVdh1xoo3mVIiJ0oo7fygQpRk5RU/UHcahaxcCQgeMvivaW3Xjb3BM4iKcKJb8GcSPdndTKzJlKOAUk+lD5rGICO5tLSKzkoQzB+ULDitEBU9E2VJ1KAczd7d6xZ3IqjO9GUhHIVRvlK31hQcBUA9g0bwZciZlv8M1ZqSeoeZ8SXvk57a92tGvqbfrjMqK9j7DXsi5w6CIGunV1ceHoVIxzzCboBYZU0cLkUpL9jzU0YXPN7Y2F2Lkn0/uVa0xd9HwSqVTyR88k4aqoL618hcbVoHh9EziU/Oc+ME4YB1VYH7kj66Ob/9Y9gI= + +%URL% +https://pypi.python.org/pypi/python-hglib + +%LICENSE% +MIT + +%ARCH% +any + +%BUILDDATE% +1639520456 + +%PACKAGER% +Arch Linux ARM Build System +""" > arm/armv7h/community.files/python-hglib-2.6.2-4/desc + +# Tar arm indexes to convenient path and filename +tar -czf ../../https_uk.mirror.archlinuxarm.org/aarch64_core_core.files.tar.gz arm/aarch64/core.files/* +tar -czf ../../https_uk.mirror.archlinuxarm.org/aarch64_extra_extra.files.tar.gz arm/aarch64/extra.files/* +tar -czf ../../https_uk.mirror.archlinuxarm.org/aarch64_community_community.files.tar.gz arm/aarch64/community.files/* + +tar -czf ../../https_uk.mirror.archlinuxarm.org/armv7h_core_core.files.tar.gz arm/armv7h/core.files/* +tar -czf ../../https_uk.mirror.archlinuxarm.org/armv7h_extra_extra.files.tar.gz arm/armv7h/extra.files/* +tar -czf ../../https_uk.mirror.archlinuxarm.org/armv7h_community_community.files.tar.gz arm/armv7h/community.files/* + +# archive.archlinux.org directory listing html responses (to get packages related versions listing) + +cd ../../ + +echo """ +Index of /packages/g/gzip/ + +

Index of /packages/g/gzip/


../
+gzip-1.10-1-x86_64.pkg.tar.xz                      30-Dec-2018 18:38     78K
+gzip-1.10-1-x86_64.pkg.tar.xz.sig                  30-Dec-2018 18:38     558
+gzip-1.10-2-x86_64.pkg.tar.xz                      06-Oct-2019 16:02     78K
+gzip-1.10-2-x86_64.pkg.tar.xz.sig                  06-Oct-2019 16:02     558
+gzip-1.10-3-x86_64.pkg.tar.xz                      13-Nov-2019 15:55     78K
+gzip-1.10-3-x86_64.pkg.tar.xz.sig                  13-Nov-2019 15:55     566
+gzip-1.11-1-x86_64.pkg.tar.zst                     04-Sep-2021 02:02     82K
+gzip-1.11-1-x86_64.pkg.tar.zst.sig                 04-Sep-2021 02:02     558
+gzip-1.12-1-x86_64.pkg.tar.zst                     07-Apr-2022 17:35     80K
+gzip-1.12-1-x86_64.pkg.tar.zst.sig                 07-Apr-2022 17:35     566
+

+""" > https_archive.archlinux.org/packages_g_gzip + +echo -e """ +Index of /packages/d/dialog/ + +

Index of /packages/d/dialog/


../
+dialog-1:1.3_20190211-1-x86_64.pkg.tar.xz          13-Feb-2019 08:36    180K
+dialog-1:1.3_20190211-1-x86_64.pkg.tar.xz.sig      13-Feb-2019 08:36     310
+dialog-1:1.3_20190724-1-x86_64.pkg.tar.xz          26-Jul-2019 21:39    180K
+dialog-1:1.3_20190724-1-x86_64.pkg.tar.xz.sig      26-Jul-2019 21:43     310
+dialog-1:1.3_20190728-1-x86_64.pkg.tar.xz          29-Jul-2019 12:10    180K
+dialog-1:1.3_20190728-1-x86_64.pkg.tar.xz.sig      29-Jul-2019 12:10     310
+dialog-1:1.3_20190806-1-x86_64.pkg.tar.xz          07-Aug-2019 04:19    182K
+dialog-1:1.3_20190806-1-x86_64.pkg.tar.xz.sig      07-Aug-2019 04:19     310
+dialog-1:1.3_20190808-1-x86_64.pkg.tar.xz          09-Aug-2019 22:49    182K
+dialog-1:1.3_20190808-1-x86_64.pkg.tar.xz.sig      09-Aug-2019 22:50     310
+dialog-1:1.3_20191110-1-x86_64.pkg.tar.xz          11-Nov-2019 11:15    183K
+dialog-1:1.3_20191110-1-x86_64.pkg.tar.xz.sig      11-Nov-2019 11:17     310
+dialog-1:1.3_20191110-2-x86_64.pkg.tar.xz          13-Nov-2019 17:40    183K
+dialog-1:1.3_20191110-2-x86_64.pkg.tar.xz.sig      13-Nov-2019 17:41     310
+dialog-1:1.3_20191209-1-x86_64.pkg.tar.xz          10-Dec-2019 09:56    183K
+dialog-1:1.3_20191209-1-x86_64.pkg.tar.xz.sig      10-Dec-2019 09:57     310
+dialog-1:1.3_20191210-1-x86_64.pkg.tar.xz          12-Dec-2019 15:55    184K
+dialog-1:1.3_20191210-1-x86_64.pkg.tar.xz.sig      12-Dec-2019 15:56     310
+dialog-1:1.3_20200228-1-x86_64.pkg.tar.zst         06-Mar-2020 02:21    196K
+dialog-1:1.3_20200228-1-x86_64.pkg.tar.zst.sig     06-Mar-2020 02:22     310
+dialog-1:1.3_20200327-1-x86_64.pkg.tar.zst         29-Mar-2020 17:08    196K
+dialog-1:1.3_20200327-1-x86_64.pkg.tar.zst.sig     29-Mar-2020 17:09     310
+dialog-1:1.3_20201126-1-x86_64.pkg.tar.zst         27-Nov-2020 12:19    199K
+dialog-1:1.3_20201126-1-x86_64.pkg.tar.zst.sig     27-Nov-2020 12:20     310
+dialog-1:1.3_20210117-1-x86_64.pkg.tar.zst         18-Jan-2021 18:05    200K
+dialog-1:1.3_20210117-1-x86_64.pkg.tar.zst.sig     18-Jan-2021 18:05     310
+dialog-1:1.3_20210306-1-x86_64.pkg.tar.zst         07-Mar-2021 11:40    201K
+dialog-1:1.3_20210306-1-x86_64.pkg.tar.zst.sig     07-Mar-2021 11:41     310
+dialog-1:1.3_20210319-1-x86_64.pkg.tar.zst         20-Mar-2021 00:12    201K
+dialog-1:1.3_20210319-1-x86_64.pkg.tar.zst.sig     20-Mar-2021 00:13     310
+dialog-1:1.3_20210324-1-x86_64.pkg.tar.zst         26-Mar-2021 17:53    201K
+dialog-1:1.3_20210324-1-x86_64.pkg.tar.zst.sig     26-Mar-2021 17:53     310
+dialog-1:1.3_20210509-1-x86_64.pkg.tar.zst         16-May-2021 02:04    198K
+dialog-1:1.3_20210509-1-x86_64.pkg.tar.zst.sig     16-May-2021 02:04     310
+dialog-1:1.3_20210530-1-x86_64.pkg.tar.zst         31-May-2021 14:59    198K
+dialog-1:1.3_20210530-1-x86_64.pkg.tar.zst.sig     31-May-2021 15:00     310
+dialog-1:1.3_20210621-1-x86_64.pkg.tar.zst         23-Jun-2021 02:59    199K
+dialog-1:1.3_20210621-1-x86_64.pkg.tar.zst.sig     23-Jun-2021 03:00     310
+dialog-1:1.3_20211107-1-x86_64.pkg.tar.zst         09-Nov-2021 14:06    197K
+dialog-1:1.3_20211107-1-x86_64.pkg.tar.zst.sig     09-Nov-2021 14:13     310
+dialog-1:1.3_20211214-1-x86_64.pkg.tar.zst         14-Dec-2021 09:26    197K
+dialog-1:1.3_20211214-1-x86_64.pkg.tar.zst.sig     14-Dec-2021 09:27     310
+dialog-1:1.3_20220117-1-x86_64.pkg.tar.zst         19-Jan-2022 09:56    199K
+dialog-1:1.3_20220117-1-x86_64.pkg.tar.zst.sig     19-Jan-2022 09:56     310
+dialog-1:1.3_20220414-1-x86_64.pkg.tar.zst         16-Apr-2022 03:59    198K
+dialog-1:1.3_20220414-1-x86_64.pkg.tar.zst.sig     16-Apr-2022 03:59     310
+

+""" > https_archive.archlinux.org/packages_d_dialog + +echo -e """ + +Index of /packages/m/mercurial/ + +

Index of /packages/m/mercurial/


../
+mercurial-4.8.2-1-x86_64.pkg.tar.xz                15-Jan-2019 20:31      4M
+mercurial-4.8.2-1-x86_64.pkg.tar.xz.sig            15-Jan-2019 20:31     310
+mercurial-4.9-1-x86_64.pkg.tar.xz                  12-Feb-2019 06:15      4M
+mercurial-4.9-1-x86_64.pkg.tar.xz.sig              12-Feb-2019 06:15     310
+mercurial-4.9.1-1-x86_64.pkg.tar.xz                30-Mar-2019 17:40      4M
+mercurial-4.9.1-1-x86_64.pkg.tar.xz.sig            30-Mar-2019 17:40     310
+mercurial-5.0-1-x86_64.pkg.tar.xz                  10-May-2019 08:44      4M
+mercurial-5.0-1-x86_64.pkg.tar.xz.sig              10-May-2019 08:44     310
+mercurial-5.0.1-1-x86_64.pkg.tar.xz                10-Jun-2019 18:05      4M
+mercurial-5.0.1-1-x86_64.pkg.tar.xz.sig            10-Jun-2019 18:05     310
+mercurial-5.0.2-1-x86_64.pkg.tar.xz                10-Jul-2019 04:58      4M
+mercurial-5.0.2-1-x86_64.pkg.tar.xz.sig            10-Jul-2019 04:58     310
+mercurial-5.1-1-x86_64.pkg.tar.xz                  17-Aug-2019 19:58      4M
+mercurial-5.1-1-x86_64.pkg.tar.xz.sig              17-Aug-2019 19:58     310
+mercurial-5.1.2-1-x86_64.pkg.tar.xz                08-Oct-2019 08:38      4M
+mercurial-5.1.2-1-x86_64.pkg.tar.xz.sig            08-Oct-2019 08:38     310
+mercurial-5.2-1-x86_64.pkg.tar.xz                  28-Nov-2019 06:41      4M
+mercurial-5.2-1-x86_64.pkg.tar.xz.sig              28-Nov-2019 06:41     310
+mercurial-5.2.1-1-x86_64.pkg.tar.zst               06-Jan-2020 12:35      4M
+mercurial-5.2.1-1-x86_64.pkg.tar.zst.sig           06-Jan-2020 12:35     310
+mercurial-5.2.2-1-x86_64.pkg.tar.zst               15-Jan-2020 14:07      5M
+mercurial-5.2.2-1-x86_64.pkg.tar.zst.sig           15-Jan-2020 14:07     310
+mercurial-5.2.2-2-x86_64.pkg.tar.zst               30-Jan-2020 20:05      4M
+mercurial-5.2.2-2-x86_64.pkg.tar.zst.sig           30-Jan-2020 20:05     310
+mercurial-5.3-1-x86_64.pkg.tar.zst                 13-Feb-2020 21:40      5M
+mercurial-5.3-1-x86_64.pkg.tar.zst.sig             13-Feb-2020 21:40     566
+mercurial-5.3.1-1-x86_64.pkg.tar.zst               07-Mar-2020 23:58      4M
+mercurial-5.3.1-1-x86_64.pkg.tar.zst.sig           07-Mar-2020 23:58     310
+mercurial-5.3.2-1-x86_64.pkg.tar.zst               05-Apr-2020 17:48      4M
+mercurial-5.3.2-1-x86_64.pkg.tar.zst.sig           05-Apr-2020 17:48     310
+mercurial-5.4-1-x86_64.pkg.tar.zst                 10-May-2020 17:19      5M
+mercurial-5.4-1-x86_64.pkg.tar.zst.sig             10-May-2020 17:19     310
+mercurial-5.4-2-x86_64.pkg.tar.zst                 04-Jun-2020 13:38      5M
+mercurial-5.4-2-x86_64.pkg.tar.zst.sig             04-Jun-2020 13:38     310
+mercurial-5.4.1-1-x86_64.pkg.tar.zst               06-Jun-2020 12:28      5M
+mercurial-5.4.1-1-x86_64.pkg.tar.zst.sig           06-Jun-2020 12:28     310
+mercurial-5.4.2-1-x86_64.pkg.tar.zst               02-Jul-2020 21:35      5M
+mercurial-5.4.2-1-x86_64.pkg.tar.zst.sig           02-Jul-2020 21:35     566
+mercurial-5.5-1-x86_64.pkg.tar.zst                 05-Aug-2020 10:39      5M
+mercurial-5.5-1-x86_64.pkg.tar.zst.sig             05-Aug-2020 10:39     310
+mercurial-5.5.1-1-x86_64.pkg.tar.zst               03-Sep-2020 19:05      5M
+mercurial-5.5.1-1-x86_64.pkg.tar.zst.sig           03-Sep-2020 19:05     310
+mercurial-5.5.2-1-x86_64.pkg.tar.zst               07-Oct-2020 20:05      5M
+mercurial-5.5.2-1-x86_64.pkg.tar.zst.sig           07-Oct-2020 20:05     310
+mercurial-5.6-1-x86_64.pkg.tar.zst                 03-Nov-2020 17:26      5M
+mercurial-5.6-1-x86_64.pkg.tar.zst.sig             03-Nov-2020 17:26     310
+mercurial-5.6-2-x86_64.pkg.tar.zst                 09-Nov-2020 16:54      5M
+mercurial-5.6-2-x86_64.pkg.tar.zst.sig             09-Nov-2020 16:54     310
+mercurial-5.6-3-x86_64.pkg.tar.zst                 11-Nov-2020 15:20      5M
+mercurial-5.6-3-x86_64.pkg.tar.zst.sig             11-Nov-2020 15:20     310
+mercurial-5.6.1-1-x86_64.pkg.tar.zst               05-Dec-2020 12:29      5M
+mercurial-5.6.1-1-x86_64.pkg.tar.zst.sig           05-Dec-2020 12:29     310
+mercurial-5.7-1-x86_64.pkg.tar.zst                 04-Feb-2021 08:41      5M
+mercurial-5.7-1-x86_64.pkg.tar.zst.sig             04-Feb-2021 08:41     310
+mercurial-5.7.1-1-x86_64.pkg.tar.zst               11-Mar-2021 07:51      5M
+mercurial-5.7.1-1-x86_64.pkg.tar.zst.sig           11-Mar-2021 07:51     310
+mercurial-5.8-1-x86_64.pkg.tar.zst                 04-May-2021 17:55      5M
+mercurial-5.8-1-x86_64.pkg.tar.zst.sig             04-May-2021 17:55     310
+mercurial-5.8-2-x86_64.pkg.tar.zst                 08-May-2021 22:08      5M
+mercurial-5.8-2-x86_64.pkg.tar.zst.sig             08-May-2021 22:08     310
+mercurial-5.8.1-1-x86_64.pkg.tar.zst               13-Jul-2021 07:04      5M
+mercurial-5.8.1-1-x86_64.pkg.tar.zst.sig           13-Jul-2021 07:04     310
+mercurial-5.9.1-1-x86_64.pkg.tar.zst               01-Sep-2021 12:48      5M
+mercurial-5.9.1-1-x86_64.pkg.tar.zst.sig           01-Sep-2021 12:48     310
+mercurial-5.9.1-2-x86_64.pkg.tar.zst               24-Sep-2021 17:39      5M
+mercurial-5.9.1-2-x86_64.pkg.tar.zst.sig           24-Sep-2021 17:39     310
+mercurial-5.9.2-1-x86_64.pkg.tar.zst               07-Oct-2021 21:52      5M
+mercurial-5.9.2-1-x86_64.pkg.tar.zst.sig           07-Oct-2021 21:52     310
+mercurial-5.9.3-1-x86_64.pkg.tar.zst               27-Oct-2021 07:20      5M
+mercurial-5.9.3-1-x86_64.pkg.tar.zst.sig           27-Oct-2021 07:20     310
+mercurial-6.0-1-x86_64.pkg.tar.zst                 25-Nov-2021 17:10      5M
+mercurial-6.0-1-x86_64.pkg.tar.zst.sig             25-Nov-2021 17:10     310
+mercurial-6.0-2-x86_64.pkg.tar.zst                 30-Nov-2021 20:53      5M
+mercurial-6.0-2-x86_64.pkg.tar.zst.sig             30-Nov-2021 20:53     310
+mercurial-6.0-3-x86_64.pkg.tar.zst                 02-Dec-2021 12:06      5M
+mercurial-6.0-3-x86_64.pkg.tar.zst.sig             02-Dec-2021 12:06     310
+mercurial-6.0.1-1-x86_64.pkg.tar.zst               08-Jan-2022 10:07      5M
+mercurial-6.0.1-1-x86_64.pkg.tar.zst.sig           08-Jan-2022 10:07     310
+mercurial-6.0.2-1-x86_64.pkg.tar.zst               03-Feb-2022 13:28      5M
+mercurial-6.0.2-1-x86_64.pkg.tar.zst.sig           03-Feb-2022 13:28     310
+mercurial-6.0.3-1-x86_64.pkg.tar.zst               23-Feb-2022 20:50      5M
+mercurial-6.0.3-1-x86_64.pkg.tar.zst.sig           23-Feb-2022 20:50     310
+mercurial-6.1-1-x86_64.pkg.tar.zst                 03-Mar-2022 18:06      5M
+mercurial-6.1-1-x86_64.pkg.tar.zst.sig             03-Mar-2022 18:06     310
+mercurial-6.1-2-x86_64.pkg.tar.zst                 04-Mar-2022 08:37      5M
+mercurial-6.1-2-x86_64.pkg.tar.zst.sig             04-Mar-2022 08:37     310
+mercurial-6.1.1-1-x86_64.pkg.tar.zst               07-Apr-2022 18:26      5M
+mercurial-6.1.1-1-x86_64.pkg.tar.zst.sig           07-Apr-2022 18:26     310
+mercurial-6.1.2-1-x86_64.pkg.tar.zst               07-May-2022 11:03      5M
+mercurial-6.1.2-1-x86_64.pkg.tar.zst.sig           07-May-2022 11:03     310
+

+""" > https_archive.archlinux.org/packages_m_mercurial + +echo -e """ +Index of /packages/l/libasyncns/ + +

Index of /packages/l/libasyncns/


../
+libasyncns-0.8+3+g68cd5af-2-x86_64.pkg.tar.xz      09-Nov-2018 23:39     16K
+libasyncns-0.8+3+g68cd5af-2-x86_64.pkg.tar.xz.sig  09-Nov-2018 23:39     310
+libasyncns-0.8+3+g68cd5af-3-x86_64.pkg.tar.zst     19-May-2020 08:28     17K
+libasyncns-0.8+3+g68cd5af-3-x86_64.pkg.tar.zst.sig 19-May-2020 08:28     566
+libasyncns-1:0.8+r3+g68cd5af-1-x86_64.pkg.tar.zst  18-May-2022 17:23     17K
+libasyncns-1:0.8+r3+g68cd5af-1-x86_64.pkg.tar.z..> 18-May-2022 17:23     141
+

+""" > https_archive.archlinux.org/packages_l_libasyncns + +echo -e """ +Index of /packages/p/python-hglib/ + +

Index of /packages/p/python-hglib/


../
+python-hglib-2.6.1-3-any.pkg.tar.xz                06-Nov-2019 14:08     40K
+python-hglib-2.6.1-3-any.pkg.tar.xz.sig            06-Nov-2019 14:08     566
+python-hglib-2.6.2-1-any.pkg.tar.zst               19-Nov-2020 22:29     43K
+python-hglib-2.6.2-1-any.pkg.tar.zst.sig           19-Nov-2020 22:29     566
+python-hglib-2.6.2-2-any.pkg.tar.zst               19-Nov-2020 22:31     43K
+python-hglib-2.6.2-2-any.pkg.tar.zst.sig           19-Nov-2020 22:31     566
+python-hglib-2.6.2-3-any.pkg.tar.zst               19-Nov-2020 22:35     43K
+python-hglib-2.6.2-3-any.pkg.tar.zst.sig           19-Nov-2020 22:35     566
+python-hglib-2.6.2-4-any.pkg.tar.zst               03-Dec-2021 00:44     43K
+python-hglib-2.6.2-4-any.pkg.tar.zst.sig           03-Dec-2021 00:44     310
+

+""" > https_archive.archlinux.org/packages_p_python-hglib + +echo -e """ +Index of /packages/g/gnome-code-assistance/ + +

Index of /packages/g/gnome-code-assistance/


../
+gnome-code-assistance-1:3.16.1+15+g0fd8b5f-1-x8..> 10-Nov-2019 20:55      2M
+gnome-code-assistance-1:3.16.1+15+g0fd8b5f-1-x8..> 10-Nov-2019 20:56     310
+gnome-code-assistance-1:3.16.1+15+g0fd8b5f-2-x8..> 28-Mar-2020 15:58      2M
+gnome-code-assistance-1:3.16.1+15+g0fd8b5f-2-x8..> 28-Mar-2020 15:58     310
+gnome-code-assistance-1:3.16.1+15+g0fd8b5f-3-x8..> 05-Jul-2020 15:28      2M
+gnome-code-assistance-1:3.16.1+15+g0fd8b5f-3-x8..> 05-Jul-2020 15:28     590
+gnome-code-assistance-1:3.16.1+15+g0fd8b5f-4-x8..> 12-Nov-2020 17:28      2M
+gnome-code-assistance-1:3.16.1+15+g0fd8b5f-4-x8..> 12-Nov-2020 17:29     310
+gnome-code-assistance-2:3.16.1+14+gaad6437-1-x8..> 24-Feb-2021 16:30      2M
+gnome-code-assistance-2:3.16.1+14+gaad6437-1-x8..> 24-Feb-2021 16:30     141
+gnome-code-assistance-2:3.16.1+14+gaad6437-2-x8..> 02-Dec-2021 23:36      2M
+gnome-code-assistance-2:3.16.1+14+gaad6437-2-x8..> 02-Dec-2021 23:36     566
+gnome-code-assistance-3.16.1+14+gaad6437-1-x86_..> 15-Mar-2019 19:23      2M
+gnome-code-assistance-3.16.1+14+gaad6437-1-x86_..> 15-Mar-2019 19:23     310
+gnome-code-assistance-3.16.1+14+gaad6437-2-x86_..> 24-Aug-2019 20:05      2M
+gnome-code-assistance-3.16.1+14+gaad6437-2-x86_..> 24-Aug-2019 20:05     310
+gnome-code-assistance-3.16.1+15+gb9ffc4d-1-x86_..> 25-Aug-2019 20:55      2M
+gnome-code-assistance-3.16.1+15+gb9ffc4d-1-x86_..> 25-Aug-2019 20:55     310
+gnome-code-assistance-3:3.16.1+r14+gaad6437-1-x..> 18-May-2022 17:23      2M
+gnome-code-assistance-3:3.16.1+r14+gaad6437-1-x..> 18-May-2022 17:23     141
+

+""" > https_archive.archlinux.org/packages_g_gnome-code-assistance + +# Clean up removing tmp_dir +rm -rf tmp_dir/ diff --git a/swh/lister/arch/tests/data/https_archive.archlinux.org/packages_d_dialog b/swh/lister/arch/tests/data/https_archive.archlinux.org/packages_d_dialog new file mode 100644 index 0000000..4b2984c --- /dev/null +++ b/swh/lister/arch/tests/data/https_archive.archlinux.org/packages_d_dialog @@ -0,0 +1,52 @@ + +Index of /packages/d/dialog/ + +

Index of /packages/d/dialog/


../
+dialog-1:1.3_20190211-1-x86_64.pkg.tar.xz          13-Feb-2019 08:36    180K
+dialog-1:1.3_20190211-1-x86_64.pkg.tar.xz.sig      13-Feb-2019 08:36     310
+dialog-1:1.3_20190724-1-x86_64.pkg.tar.xz          26-Jul-2019 21:39    180K
+dialog-1:1.3_20190724-1-x86_64.pkg.tar.xz.sig      26-Jul-2019 21:43     310
+dialog-1:1.3_20190728-1-x86_64.pkg.tar.xz          29-Jul-2019 12:10    180K
+dialog-1:1.3_20190728-1-x86_64.pkg.tar.xz.sig      29-Jul-2019 12:10     310
+dialog-1:1.3_20190806-1-x86_64.pkg.tar.xz          07-Aug-2019 04:19    182K
+dialog-1:1.3_20190806-1-x86_64.pkg.tar.xz.sig      07-Aug-2019 04:19     310
+dialog-1:1.3_20190808-1-x86_64.pkg.tar.xz          09-Aug-2019 22:49    182K
+dialog-1:1.3_20190808-1-x86_64.pkg.tar.xz.sig      09-Aug-2019 22:50     310
+dialog-1:1.3_20191110-1-x86_64.pkg.tar.xz          11-Nov-2019 11:15    183K
+dialog-1:1.3_20191110-1-x86_64.pkg.tar.xz.sig      11-Nov-2019 11:17     310
+dialog-1:1.3_20191110-2-x86_64.pkg.tar.xz          13-Nov-2019 17:40    183K
+dialog-1:1.3_20191110-2-x86_64.pkg.tar.xz.sig      13-Nov-2019 17:41     310
+dialog-1:1.3_20191209-1-x86_64.pkg.tar.xz          10-Dec-2019 09:56    183K
+dialog-1:1.3_20191209-1-x86_64.pkg.tar.xz.sig      10-Dec-2019 09:57     310
+dialog-1:1.3_20191210-1-x86_64.pkg.tar.xz          12-Dec-2019 15:55    184K
+dialog-1:1.3_20191210-1-x86_64.pkg.tar.xz.sig      12-Dec-2019 15:56     310
+dialog-1:1.3_20200228-1-x86_64.pkg.tar.zst         06-Mar-2020 02:21    196K
+dialog-1:1.3_20200228-1-x86_64.pkg.tar.zst.sig     06-Mar-2020 02:22     310
+dialog-1:1.3_20200327-1-x86_64.pkg.tar.zst         29-Mar-2020 17:08    196K
+dialog-1:1.3_20200327-1-x86_64.pkg.tar.zst.sig     29-Mar-2020 17:09     310
+dialog-1:1.3_20201126-1-x86_64.pkg.tar.zst         27-Nov-2020 12:19    199K
+dialog-1:1.3_20201126-1-x86_64.pkg.tar.zst.sig     27-Nov-2020 12:20     310
+dialog-1:1.3_20210117-1-x86_64.pkg.tar.zst         18-Jan-2021 18:05    200K
+dialog-1:1.3_20210117-1-x86_64.pkg.tar.zst.sig     18-Jan-2021 18:05     310
+dialog-1:1.3_20210306-1-x86_64.pkg.tar.zst         07-Mar-2021 11:40    201K
+dialog-1:1.3_20210306-1-x86_64.pkg.tar.zst.sig     07-Mar-2021 11:41     310
+dialog-1:1.3_20210319-1-x86_64.pkg.tar.zst         20-Mar-2021 00:12    201K
+dialog-1:1.3_20210319-1-x86_64.pkg.tar.zst.sig     20-Mar-2021 00:13     310
+dialog-1:1.3_20210324-1-x86_64.pkg.tar.zst         26-Mar-2021 17:53    201K
+dialog-1:1.3_20210324-1-x86_64.pkg.tar.zst.sig     26-Mar-2021 17:53     310
+dialog-1:1.3_20210509-1-x86_64.pkg.tar.zst         16-May-2021 02:04    198K
+dialog-1:1.3_20210509-1-x86_64.pkg.tar.zst.sig     16-May-2021 02:04     310
+dialog-1:1.3_20210530-1-x86_64.pkg.tar.zst         31-May-2021 14:59    198K
+dialog-1:1.3_20210530-1-x86_64.pkg.tar.zst.sig     31-May-2021 15:00     310
+dialog-1:1.3_20210621-1-x86_64.pkg.tar.zst         23-Jun-2021 02:59    199K
+dialog-1:1.3_20210621-1-x86_64.pkg.tar.zst.sig     23-Jun-2021 03:00     310
+dialog-1:1.3_20211107-1-x86_64.pkg.tar.zst         09-Nov-2021 14:06    197K
+dialog-1:1.3_20211107-1-x86_64.pkg.tar.zst.sig     09-Nov-2021 14:13     310
+dialog-1:1.3_20211214-1-x86_64.pkg.tar.zst         14-Dec-2021 09:26    197K
+dialog-1:1.3_20211214-1-x86_64.pkg.tar.zst.sig     14-Dec-2021 09:27     310
+dialog-1:1.3_20220117-1-x86_64.pkg.tar.zst         19-Jan-2022 09:56    199K
+dialog-1:1.3_20220117-1-x86_64.pkg.tar.zst.sig     19-Jan-2022 09:56     310
+dialog-1:1.3_20220414-1-x86_64.pkg.tar.zst         16-Apr-2022 03:59    198K
+dialog-1:1.3_20220414-1-x86_64.pkg.tar.zst.sig     16-Apr-2022 03:59     310
+

+ diff --git a/swh/lister/arch/tests/data/https_archive.archlinux.org/packages_g_gnome-code-assistance b/swh/lister/arch/tests/data/https_archive.archlinux.org/packages_g_gnome-code-assistance new file mode 100644 index 0000000..4a78ff3 --- /dev/null +++ b/swh/lister/arch/tests/data/https_archive.archlinux.org/packages_g_gnome-code-assistance @@ -0,0 +1,26 @@ + +Index of /packages/g/gnome-code-assistance/ + +

Index of /packages/g/gnome-code-assistance/


../
+gnome-code-assistance-1:3.16.1+15+g0fd8b5f-1-x8..> 10-Nov-2019 20:55      2M
+gnome-code-assistance-1:3.16.1+15+g0fd8b5f-1-x8..> 10-Nov-2019 20:56     310
+gnome-code-assistance-1:3.16.1+15+g0fd8b5f-2-x8..> 28-Mar-2020 15:58      2M
+gnome-code-assistance-1:3.16.1+15+g0fd8b5f-2-x8..> 28-Mar-2020 15:58     310
+gnome-code-assistance-1:3.16.1+15+g0fd8b5f-3-x8..> 05-Jul-2020 15:28      2M
+gnome-code-assistance-1:3.16.1+15+g0fd8b5f-3-x8..> 05-Jul-2020 15:28     590
+gnome-code-assistance-1:3.16.1+15+g0fd8b5f-4-x8..> 12-Nov-2020 17:28      2M
+gnome-code-assistance-1:3.16.1+15+g0fd8b5f-4-x8..> 12-Nov-2020 17:29     310
+gnome-code-assistance-2:3.16.1+14+gaad6437-1-x8..> 24-Feb-2021 16:30      2M
+gnome-code-assistance-2:3.16.1+14+gaad6437-1-x8..> 24-Feb-2021 16:30     141
+gnome-code-assistance-2:3.16.1+14+gaad6437-2-x8..> 02-Dec-2021 23:36      2M
+gnome-code-assistance-2:3.16.1+14+gaad6437-2-x8..> 02-Dec-2021 23:36     566
+gnome-code-assistance-3.16.1+14+gaad6437-1-x86_..> 15-Mar-2019 19:23      2M
+gnome-code-assistance-3.16.1+14+gaad6437-1-x86_..> 15-Mar-2019 19:23     310
+gnome-code-assistance-3.16.1+14+gaad6437-2-x86_..> 24-Aug-2019 20:05      2M
+gnome-code-assistance-3.16.1+14+gaad6437-2-x86_..> 24-Aug-2019 20:05     310
+gnome-code-assistance-3.16.1+15+gb9ffc4d-1-x86_..> 25-Aug-2019 20:55      2M
+gnome-code-assistance-3.16.1+15+gb9ffc4d-1-x86_..> 25-Aug-2019 20:55     310
+gnome-code-assistance-3:3.16.1+r14+gaad6437-1-x..> 18-May-2022 17:23      2M
+gnome-code-assistance-3:3.16.1+r14+gaad6437-1-x..> 18-May-2022 17:23     141
+

+ diff --git a/swh/lister/arch/tests/data/https_archive.archlinux.org/packages_g_gzip b/swh/lister/arch/tests/data/https_archive.archlinux.org/packages_g_gzip new file mode 100644 index 0000000..b28010c --- /dev/null +++ b/swh/lister/arch/tests/data/https_archive.archlinux.org/packages_g_gzip @@ -0,0 +1,16 @@ + +Index of /packages/g/gzip/ + +

Index of /packages/g/gzip/


../
+gzip-1.10-1-x86_64.pkg.tar.xz                      30-Dec-2018 18:38     78K
+gzip-1.10-1-x86_64.pkg.tar.xz.sig                  30-Dec-2018 18:38     558
+gzip-1.10-2-x86_64.pkg.tar.xz                      06-Oct-2019 16:02     78K
+gzip-1.10-2-x86_64.pkg.tar.xz.sig                  06-Oct-2019 16:02     558
+gzip-1.10-3-x86_64.pkg.tar.xz                      13-Nov-2019 15:55     78K
+gzip-1.10-3-x86_64.pkg.tar.xz.sig                  13-Nov-2019 15:55     566
+gzip-1.11-1-x86_64.pkg.tar.zst                     04-Sep-2021 02:02     82K
+gzip-1.11-1-x86_64.pkg.tar.zst.sig                 04-Sep-2021 02:02     558
+gzip-1.12-1-x86_64.pkg.tar.zst                     07-Apr-2022 17:35     80K
+gzip-1.12-1-x86_64.pkg.tar.zst.sig                 07-Apr-2022 17:35     566
+

+ diff --git a/swh/lister/arch/tests/data/https_archive.archlinux.org/packages_l_libasyncns b/swh/lister/arch/tests/data/https_archive.archlinux.org/packages_l_libasyncns new file mode 100644 index 0000000..a72be63 --- /dev/null +++ b/swh/lister/arch/tests/data/https_archive.archlinux.org/packages_l_libasyncns @@ -0,0 +1,12 @@ + +Index of /packages/l/libasyncns/ + +

Index of /packages/l/libasyncns/


../
+libasyncns-0.8+3+g68cd5af-2-x86_64.pkg.tar.xz      09-Nov-2018 23:39     16K
+libasyncns-0.8+3+g68cd5af-2-x86_64.pkg.tar.xz.sig  09-Nov-2018 23:39     310
+libasyncns-0.8+3+g68cd5af-3-x86_64.pkg.tar.zst     19-May-2020 08:28     17K
+libasyncns-0.8+3+g68cd5af-3-x86_64.pkg.tar.zst.sig 19-May-2020 08:28     566
+libasyncns-1:0.8+r3+g68cd5af-1-x86_64.pkg.tar.zst  18-May-2022 17:23     17K
+libasyncns-1:0.8+r3+g68cd5af-1-x86_64.pkg.tar.z..> 18-May-2022 17:23     141
+

+ diff --git a/swh/lister/arch/tests/data/https_archive.archlinux.org/packages_m_mercurial b/swh/lister/arch/tests/data/https_archive.archlinux.org/packages_m_mercurial new file mode 100644 index 0000000..33b421d --- /dev/null +++ b/swh/lister/arch/tests/data/https_archive.archlinux.org/packages_m_mercurial @@ -0,0 +1,97 @@ + + +Index of /packages/m/mercurial/ + +

Index of /packages/m/mercurial/


../
+mercurial-4.8.2-1-x86_64.pkg.tar.xz                15-Jan-2019 20:31      4M
+mercurial-4.8.2-1-x86_64.pkg.tar.xz.sig            15-Jan-2019 20:31     310
+mercurial-4.9-1-x86_64.pkg.tar.xz                  12-Feb-2019 06:15      4M
+mercurial-4.9-1-x86_64.pkg.tar.xz.sig              12-Feb-2019 06:15     310
+mercurial-4.9.1-1-x86_64.pkg.tar.xz                30-Mar-2019 17:40      4M
+mercurial-4.9.1-1-x86_64.pkg.tar.xz.sig            30-Mar-2019 17:40     310
+mercurial-5.0-1-x86_64.pkg.tar.xz                  10-May-2019 08:44      4M
+mercurial-5.0-1-x86_64.pkg.tar.xz.sig              10-May-2019 08:44     310
+mercurial-5.0.1-1-x86_64.pkg.tar.xz                10-Jun-2019 18:05      4M
+mercurial-5.0.1-1-x86_64.pkg.tar.xz.sig            10-Jun-2019 18:05     310
+mercurial-5.0.2-1-x86_64.pkg.tar.xz                10-Jul-2019 04:58      4M
+mercurial-5.0.2-1-x86_64.pkg.tar.xz.sig            10-Jul-2019 04:58     310
+mercurial-5.1-1-x86_64.pkg.tar.xz                  17-Aug-2019 19:58      4M
+mercurial-5.1-1-x86_64.pkg.tar.xz.sig              17-Aug-2019 19:58     310
+mercurial-5.1.2-1-x86_64.pkg.tar.xz                08-Oct-2019 08:38      4M
+mercurial-5.1.2-1-x86_64.pkg.tar.xz.sig            08-Oct-2019 08:38     310
+mercurial-5.2-1-x86_64.pkg.tar.xz                  28-Nov-2019 06:41      4M
+mercurial-5.2-1-x86_64.pkg.tar.xz.sig              28-Nov-2019 06:41     310
+mercurial-5.2.1-1-x86_64.pkg.tar.zst               06-Jan-2020 12:35      4M
+mercurial-5.2.1-1-x86_64.pkg.tar.zst.sig           06-Jan-2020 12:35     310
+mercurial-5.2.2-1-x86_64.pkg.tar.zst               15-Jan-2020 14:07      5M
+mercurial-5.2.2-1-x86_64.pkg.tar.zst.sig           15-Jan-2020 14:07     310
+mercurial-5.2.2-2-x86_64.pkg.tar.zst               30-Jan-2020 20:05      4M
+mercurial-5.2.2-2-x86_64.pkg.tar.zst.sig           30-Jan-2020 20:05     310
+mercurial-5.3-1-x86_64.pkg.tar.zst                 13-Feb-2020 21:40      5M
+mercurial-5.3-1-x86_64.pkg.tar.zst.sig             13-Feb-2020 21:40     566
+mercurial-5.3.1-1-x86_64.pkg.tar.zst               07-Mar-2020 23:58      4M
+mercurial-5.3.1-1-x86_64.pkg.tar.zst.sig           07-Mar-2020 23:58     310
+mercurial-5.3.2-1-x86_64.pkg.tar.zst               05-Apr-2020 17:48      4M
+mercurial-5.3.2-1-x86_64.pkg.tar.zst.sig           05-Apr-2020 17:48     310
+mercurial-5.4-1-x86_64.pkg.tar.zst                 10-May-2020 17:19      5M
+mercurial-5.4-1-x86_64.pkg.tar.zst.sig             10-May-2020 17:19     310
+mercurial-5.4-2-x86_64.pkg.tar.zst                 04-Jun-2020 13:38      5M
+mercurial-5.4-2-x86_64.pkg.tar.zst.sig             04-Jun-2020 13:38     310
+mercurial-5.4.1-1-x86_64.pkg.tar.zst               06-Jun-2020 12:28      5M
+mercurial-5.4.1-1-x86_64.pkg.tar.zst.sig           06-Jun-2020 12:28     310
+mercurial-5.4.2-1-x86_64.pkg.tar.zst               02-Jul-2020 21:35      5M
+mercurial-5.4.2-1-x86_64.pkg.tar.zst.sig           02-Jul-2020 21:35     566
+mercurial-5.5-1-x86_64.pkg.tar.zst                 05-Aug-2020 10:39      5M
+mercurial-5.5-1-x86_64.pkg.tar.zst.sig             05-Aug-2020 10:39     310
+mercurial-5.5.1-1-x86_64.pkg.tar.zst               03-Sep-2020 19:05      5M
+mercurial-5.5.1-1-x86_64.pkg.tar.zst.sig           03-Sep-2020 19:05     310
+mercurial-5.5.2-1-x86_64.pkg.tar.zst               07-Oct-2020 20:05      5M
+mercurial-5.5.2-1-x86_64.pkg.tar.zst.sig           07-Oct-2020 20:05     310
+mercurial-5.6-1-x86_64.pkg.tar.zst                 03-Nov-2020 17:26      5M
+mercurial-5.6-1-x86_64.pkg.tar.zst.sig             03-Nov-2020 17:26     310
+mercurial-5.6-2-x86_64.pkg.tar.zst                 09-Nov-2020 16:54      5M
+mercurial-5.6-2-x86_64.pkg.tar.zst.sig             09-Nov-2020 16:54     310
+mercurial-5.6-3-x86_64.pkg.tar.zst                 11-Nov-2020 15:20      5M
+mercurial-5.6-3-x86_64.pkg.tar.zst.sig             11-Nov-2020 15:20     310
+mercurial-5.6.1-1-x86_64.pkg.tar.zst               05-Dec-2020 12:29      5M
+mercurial-5.6.1-1-x86_64.pkg.tar.zst.sig           05-Dec-2020 12:29     310
+mercurial-5.7-1-x86_64.pkg.tar.zst                 04-Feb-2021 08:41      5M
+mercurial-5.7-1-x86_64.pkg.tar.zst.sig             04-Feb-2021 08:41     310
+mercurial-5.7.1-1-x86_64.pkg.tar.zst               11-Mar-2021 07:51      5M
+mercurial-5.7.1-1-x86_64.pkg.tar.zst.sig           11-Mar-2021 07:51     310
+mercurial-5.8-1-x86_64.pkg.tar.zst                 04-May-2021 17:55      5M
+mercurial-5.8-1-x86_64.pkg.tar.zst.sig             04-May-2021 17:55     310
+mercurial-5.8-2-x86_64.pkg.tar.zst                 08-May-2021 22:08      5M
+mercurial-5.8-2-x86_64.pkg.tar.zst.sig             08-May-2021 22:08     310
+mercurial-5.8.1-1-x86_64.pkg.tar.zst               13-Jul-2021 07:04      5M
+mercurial-5.8.1-1-x86_64.pkg.tar.zst.sig           13-Jul-2021 07:04     310
+mercurial-5.9.1-1-x86_64.pkg.tar.zst               01-Sep-2021 12:48      5M
+mercurial-5.9.1-1-x86_64.pkg.tar.zst.sig           01-Sep-2021 12:48     310
+mercurial-5.9.1-2-x86_64.pkg.tar.zst               24-Sep-2021 17:39      5M
+mercurial-5.9.1-2-x86_64.pkg.tar.zst.sig           24-Sep-2021 17:39     310
+mercurial-5.9.2-1-x86_64.pkg.tar.zst               07-Oct-2021 21:52      5M
+mercurial-5.9.2-1-x86_64.pkg.tar.zst.sig           07-Oct-2021 21:52     310
+mercurial-5.9.3-1-x86_64.pkg.tar.zst               27-Oct-2021 07:20      5M
+mercurial-5.9.3-1-x86_64.pkg.tar.zst.sig           27-Oct-2021 07:20     310
+mercurial-6.0-1-x86_64.pkg.tar.zst                 25-Nov-2021 17:10      5M
+mercurial-6.0-1-x86_64.pkg.tar.zst.sig             25-Nov-2021 17:10     310
+mercurial-6.0-2-x86_64.pkg.tar.zst                 30-Nov-2021 20:53      5M
+mercurial-6.0-2-x86_64.pkg.tar.zst.sig             30-Nov-2021 20:53     310
+mercurial-6.0-3-x86_64.pkg.tar.zst                 02-Dec-2021 12:06      5M
+mercurial-6.0-3-x86_64.pkg.tar.zst.sig             02-Dec-2021 12:06     310
+mercurial-6.0.1-1-x86_64.pkg.tar.zst               08-Jan-2022 10:07      5M
+mercurial-6.0.1-1-x86_64.pkg.tar.zst.sig           08-Jan-2022 10:07     310
+mercurial-6.0.2-1-x86_64.pkg.tar.zst               03-Feb-2022 13:28      5M
+mercurial-6.0.2-1-x86_64.pkg.tar.zst.sig           03-Feb-2022 13:28     310
+mercurial-6.0.3-1-x86_64.pkg.tar.zst               23-Feb-2022 20:50      5M
+mercurial-6.0.3-1-x86_64.pkg.tar.zst.sig           23-Feb-2022 20:50     310
+mercurial-6.1-1-x86_64.pkg.tar.zst                 03-Mar-2022 18:06      5M
+mercurial-6.1-1-x86_64.pkg.tar.zst.sig             03-Mar-2022 18:06     310
+mercurial-6.1-2-x86_64.pkg.tar.zst                 04-Mar-2022 08:37      5M
+mercurial-6.1-2-x86_64.pkg.tar.zst.sig             04-Mar-2022 08:37     310
+mercurial-6.1.1-1-x86_64.pkg.tar.zst               07-Apr-2022 18:26      5M
+mercurial-6.1.1-1-x86_64.pkg.tar.zst.sig           07-Apr-2022 18:26     310
+mercurial-6.1.2-1-x86_64.pkg.tar.zst               07-May-2022 11:03      5M
+mercurial-6.1.2-1-x86_64.pkg.tar.zst.sig           07-May-2022 11:03     310
+

+ diff --git a/swh/lister/arch/tests/data/https_archive.archlinux.org/packages_p_python-hglib b/swh/lister/arch/tests/data/https_archive.archlinux.org/packages_p_python-hglib new file mode 100644 index 0000000..14ec9b3 --- /dev/null +++ b/swh/lister/arch/tests/data/https_archive.archlinux.org/packages_p_python-hglib @@ -0,0 +1,16 @@ + +Index of /packages/p/python-hglib/ + +

Index of /packages/p/python-hglib/


../
+python-hglib-2.6.1-3-any.pkg.tar.xz                06-Nov-2019 14:08     40K
+python-hglib-2.6.1-3-any.pkg.tar.xz.sig            06-Nov-2019 14:08     566
+python-hglib-2.6.2-1-any.pkg.tar.zst               19-Nov-2020 22:29     43K
+python-hglib-2.6.2-1-any.pkg.tar.zst.sig           19-Nov-2020 22:29     566
+python-hglib-2.6.2-2-any.pkg.tar.zst               19-Nov-2020 22:31     43K
+python-hglib-2.6.2-2-any.pkg.tar.zst.sig           19-Nov-2020 22:31     566
+python-hglib-2.6.2-3-any.pkg.tar.zst               19-Nov-2020 22:35     43K
+python-hglib-2.6.2-3-any.pkg.tar.zst.sig           19-Nov-2020 22:35     566
+python-hglib-2.6.2-4-any.pkg.tar.zst               03-Dec-2021 00:44     43K
+python-hglib-2.6.2-4-any.pkg.tar.zst.sig           03-Dec-2021 00:44     310
+

+ diff --git a/swh/lister/arch/tests/data/https_archive.archlinux.org/repos_last_community_os_x86_64_community.files.tar.gz b/swh/lister/arch/tests/data/https_archive.archlinux.org/repos_last_community_os_x86_64_community.files.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..b123d56a37d055b88162361f31033145cf84c17c GIT binary patch literal 1958 zcmV;X2U++ZiwFP!000001MQbtlcTy7$NSlzf|ss5I5w*QPvxe9F$Qdd7rbCzQY>OK zi_KyifBGxBr`paR9VWk^{v1=ZhXlh5{5#Pz=L75ELp? z4;c8h=Kq*#G{pkL9{d8$^zePZpVj}D%Kby}_h9M%ypJ}(Y#Y~)<4=>|E&d$Cq4?7@ zM?7G}zkmAw_wj!mt20R#H0iPPapU17|&NHWC7j)=a*-oC_2SezplmYAOxn5@q=3AxIv`DS6fbOx_g zVI!+(s1_Ol$pf_5Xk<{I4J8c)4FSve6iYaq?*g8r zLED(22ozwSyjkBPT%K@P+M@_ylhE^lOAlPmW+{(knZW?^1afA5iUFicIXrMZigyQ& zOB2xLP-_c$VW{$BCt9kvp&$%JLGZ?rBvqE{&&HSK$riP}pe>+$jrrTiY=AlzQu(-( zH9-sx%QyQBj0Kz*%^?|*Tq;G?R`Hc{wQ-gW4xrUtNjGJAOREEKOhB$326=p4*UNAK zG$xRi#Swr2AMUQTX*ii^*1S#_tD`*)OqM&GCK-Lsaz)PK+$nfs#;whhAysBf0-OZ& zw$8@^u&dN5=Yi@42k{mPlgad|RzxQIiv$L~aUDm6N z6!#;Fx2ES|sD;Bcc1Jb4ipjLT0sTDZ2}Kw#xUR5Wl_!sa^2Ezce3%Z0r&yA+MP*9l zWslclEqBe`tf4fx1;>){`Psg9^tnw;)w*gV$f{D1ZI&E;0uS$Mj< z95}h&%>!A%(X_TfqwAhxgk8EW7PqiIYewEwlXR6cV`tv1;+nJ^dgVCkXeSWNDC9;n zg%r{My~eMv5k6aS3pnSAfU#{U^)w%c-32fYAPZ84IyAWuEvJ5wK#%r) z;P1@ShKL<`w5ecsSZx}RDUu@B<~mASv6<-b|Y9y?)G9m`KReu)lI|7qv;^CG|( zMIJ-9D)Dyb3-43LOcf=)%_;I?)^2BEB`S}d=gidRn~gdfjf8c( zf-J2bJ7btcS8Q)**x&rNm}jY7l>e{`H%y|ezPA1U{VDS-Bz=VPNfJ2$gq>qkg?ZNV zoVt7|2f5RZ^5yl|pa$N(`H6ji<=cCk|H`UKUfW8pY4TDoqx6`-xXiOoQ9I3ZKTo9+ zB|bEs`C|P#Bsa0M;1l-tW1bSBh}oHkiQR4|h|6zkC-&Jk+#)(wogn|FR?gc@C`_f- zKG0N>D$kS7=UMiUp~%Z4Dn@9KNpen~$IuM96>$f2-{2D?O6h}oELm(^b}H_y&6i(pn^=zxKR zZ=(~b$}tTVZe2un(#O;at4jp?ucp70Si6MV)2_V#s#fMO_~BH#1B>#|_L^E871m1Lps4G=)Etc^SYwBeWh?|T$S^CXGxt&m4I1Y$sV zEFei9+0jjaBy5i)pbb3IcRa`SdEVt{f~GhZ+Qa}*U+};51^i6{Plvm1(b@o`6N^o=>ChPmZ?IwZoiH35t^7zdgq^5k-%>OvjF z*W+cr_rPt+(2F6SkrgQPqe#UKFY^@TmN_S=F1fu(<4J zdKcg8burdG14!hwyB-}iyUv6GVy0>~-m>B;qYsB>7ZSF%W~YjIY#~GW&Z@L?K}R}Hh9HU zO?TR^z_BT#)FLMMIMChgK!Byswc sLodrqc!#sQ?z-!)yY9N{uDkBK>#n=*y6djH?)o3q?>y1YL;xrN05-nsBme*a literal 0 HcmV?d00001 diff --git a/swh/lister/arch/tests/data/https_archive.archlinux.org/repos_last_core_os_x86_64_core.files.tar.gz b/swh/lister/arch/tests/data/https_archive.archlinux.org/repos_last_core_os_x86_64_core.files.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..7fb8d4e0590844f137e1647197ac6083520289d3 GIT binary patch literal 1750 zcmV;{1}XU;iwFP!000001MQaEvZ6>9hWE8k;f+_umgJbw(KRug6g+_-o^Co2G7&^j zKsh}9VC|l&UENb%GqF25VrKX*#3Wae%D-~`%S$sf!eNYZ!Vldz4PMEg$PxVu1tQ-1EZC`u!K2xrulF ze%z1d|4Z?HtiO+P??Zb$1?HZ*{%ie72&gamLk70`a};D>`ruFckAKMjx&DK(K3A9G zLLKzJqyKBgbH8xR=z0!D?W-C!dC}_)-Y;o~l4!plZdA+Gjpd;C+lRGtifYS)p4cza zG;Tloewbflx9-0!?jO?%<$au`mwtXiaoo?nEW8$ZyHd9GL%RzF+C1UgvHmt@cv|3} zM1Aqn-!VH!>TMY6de>+_Uv*}Hn*p~0hlfS7Vs2h& zdDayLxmqnPJWDy7+?_;029gZsQ^i|b+JuzhaJi8<-?rzh?Hl%Ht%`D_c$8>fugkls z7}dCFV!==M3+=XF+jpO;RmZ%l{A@^HPF}5Dkx@-$?x5$Ztr6V=VZ4?~M|M&!XA>^vYgZ?&LUY5^}oWCBu2JdrH83vX*ztguHOp7Sv)~H%#Vh z%4UmQY5dsFp)M2Ly%dK6HJ4}<)M~S@xcl9DJYva$taTdd;##V3IZw&sa;aX%Tanmu zk2KZgXiTXT-JF@)ot1#c!wrQaOGyMRCqhbM+W6%b8JNAn2-d8cNXH9Wefrc&m~(3MOkUBFwL$OgL_E{p z(dUXHuG<)rV*%hvmS&#`A<8pxqFRHV`f!r~#cAFjr}rXr^Zw8H`31#c{&zR?PH~vr zt5KQ-e|xU8jE&wNkU=jFk8eL@l&7Ca_Vx32ifXD$rJc=By~Mj`Ickr^$Ikz|`X4mm z^_3iv)Suz`@A=RDp8*`~{Qs}uJNkdv^WXCW|EFk*{*C`Lkmfr7|0{Us|L^qwBhP<^ zeR2F>2VedE^YSk)KUq3`FTGqdl;>fZ^zTI&heh4aPb|YR+e&tHbM)$?2a3NMd|O3X z>Z`w#EMS=T{!SxEc>+U&*0G@vfG;4LBVCS%9tJLrzV&y25X+Is$48I!pvSpwD}vid zm!TONdNj>ZG)W#A>;nP0fMrOMW?UD!w99)Q_}1U`H-8V_{GB<=Bo3>|Vt%EfkiQU8 z;b5JTygYdNyQweK&;I`Pex$5Rf;cpHVlpHp>NeBMTMcu9-iBz2<9WoJewL1@&5$Lw zf&p8%WlS3R=O&tNEm|wS1OxI(^*y)S9+|eGuztjo$_pK(Zs6^ zVa(^A<;6F1uh&P66uP;B)0_%-DqS&4BVf2DiTAr(MheR$eH?*_!EQxYyu{zivmij% zd0eIq1Hu(es>Xdqm~M4U4L_WiXA$FA+WTIr*wpTttywb_j>}X-348OGEQ`kUCA=D& z!y>GcL#l1cV7n&bO{v~RXHl7p`IcCTS^^!l-s)jEtaIlet1^c9#?g$TeHF}}J~}ba zPUCu9waWO9sZzt$X2;x4ys#h7wIfjJOUyB)JJea?#_y>Zjx93-FyZRcakx-co+z9O zq!`VD30ay#jcHs< zb}3%oW+$ktH^sSgr%XPqG_kpe`{S73@lv9TVgRGFMi;ThH)T=MXk3ZwZD4P)InHAk znf|1-o#=uwxqldPbmB8+Kfd2?C_1d{+}S3E@K9-}$eYxMH(N62&D6khZC>p(y(=<( z9X_hllvP~zalSdzb6ZSTd&Qeni$!gdQ7W2Jb3V5P+=Xg1L|Xd5s>ogz^NXcfFm~pq zlq{k~(6>|w77xoTmE%H~n`#Q(2ayAh|y~79vk^QMwuW zY#rZpOl`wN|DauB1e&FI3VhQp&D%v>|9UUDV9UUDV9UUDV9UUDV9UUDV9sdLT10i6&jsPeC0RFFgVE_OC literal 0 HcmV?d00001 diff --git a/swh/lister/arch/tests/data/https_archive.archlinux.org/repos_last_extra_os_x86_64_extra.files.tar.gz b/swh/lister/arch/tests/data/https_archive.archlinux.org/repos_last_extra_os_x86_64_extra.files.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..bf7a652cc778a803f5836541ecc3b7e99ce5762a GIT binary patch literal 1758 zcmV<41|j($iwFP!000001MQbvx1z`ufcx2B;mdh)_2F7vX3b;;xyb<$RJ^@p6-6P) zO#ub@^}+7soYS35_avQ6RuaCKl3h1-Q=1Rm)+Kxn;}lm!8vC%i=P0i}lF!0~nH)I* z1ptO08REkaK=$weJX(qeDFC0X!c41Q$O-^#VBVL2Xu2uqlw zBqORnp zku;Xa{ge`x_igSS&S8ef6)tZv!sE*omocu!pO%iwA}_90dhb_}SH_{= zwXYfs*Iyc+FIj=-9(&9cu=3{p_7Daf9g-x5J`<1_@w_M?ANVZfa1aFj(A7+$0rzP% zBx#Pult={uonM|W0+ z{xphRqnk?7RFkl5LdOVBoTap}&vb|*hk)r4IqG;U1K^-Z+dpU;!HX){oH+9e>ebG~LPbi=$~ z%`$QmTn~N+vP(yYN5B(HPq?_8ezFcHb>`|SJ!SUZwmYP)O}Ff%N_I9cFYPRpHunPa zG8a{YG(IH7X zJLe0Ijc%t}y`KxBk~Mg{Vl~(;^CTL7rqnrUO@VGw%{12Sw~w zxR+X!HBlSGf}UCUXs*N?SYGC`-o7v=XSXKnDPI9DJj;wiXNCMyLwllomB;M21SF5M zqY-to%+Fr-hsk;}Pjp~y8OsM%Gv7hh#Xv`^4pGeno#)rmH6>fO6Goud3m`AEg29tu z!O9lgWuCq`>CG?w?e8tEr%_bb=bs3IJQs0Zs4t#jDT=gy9Csjy{Sg;P{&ChM*_3p3`83jS8n@#;%*Q{6 zkB>#3!Ls@zEK!uk`L%s6%HtnCl^#d6mDSVe*zb=XbwV=Lw_se4(tF;HM*ryo{cq;| z^FPBSx|T6aKXT91GyReJA?thNANN1N0Dkbl--B=G|3|Fvjqms$#c}*s{>RZQIr!i2 z!8`x^oAiIn`d$aWO5gj)tMmP3rFW`VA(%ox#p58Z>N57PH4errc|NX-B7KuN&?^_o z@^3mvb0S3xpTz3b=omf>S-}rEisrExFgy(S0P?-MK`ub#mqzDfrgu0$6i70lu)y+E z?^104`XL4s$p}1yIS>NK(*cH*7;rEU84&j3CjyE_q40&#sb3hKw#+vd?%<2JrbI%p z#R;J04Q+Z?SCg_A+B-_0jqWwR#OQdG3MO~Nf{HTS2y}kxbuT7u=nFRQLnt}$ZsRrc*2cYz0j=}xna%u9U?x$gr!3w|jbzJ1H zag-(AD>db&)GLF(ydN>(S@wA(d6xL&@i#9dL$MT1Pz=Mo5EQ|a%nQc;jk(^fscKMS z*h^S~+)w{J@2}4PM}ha&KY*40&N-e1=AL!^cKs=aqkgYH&+tS2NtWYZFybG1<1hTr z>pxaCT`?s?8IQhI?pKia(`y<{hmSPv9;4Ct>)c^*Chfi+bQNo-tKJ#o76D|un<)B_n2SgcbF$IudyVrVHpA+Vs(KTu=JZU0ofGOYOJYX^?B&K z3VW_vkOx==%R4Nwuqd%l3)u&CQsf^eiKFQ-zr52 zjPZyFd5#WPD6l>ghLEQOlBGjRpgDmSIR5!2yElnqxewVq5O^9=L_i7@#SpYFKtCjW zUL*oIEN)sHE*q9P6g|@889^X%V1AP{_k^tj<}o5g0QEykl{t376tG?OJMP!mM~ zx@m`x%UR(!Szylcpi6OeclX%aQI#$WrZcvZ9HraO<6fa`@yW(8nJe!*H>HtEvxx*} zPsBpC5blTNp+9d6`mGCMt!f)ntD9LO1N)&`Zxe%^=S4hO_7kzy@8094=bJ;iwjs;-?@k>L%;R4jdFJBgR`;%A=UeRI&0^K z6B$D3L03PWS6v_h(xeZzl%$c9@Y-??!mBLMT4+D^@ocLCZAtXo1*Iyiy7P|QBD?xm zNlWWP+sXD!IUHT9&L;J?ox6p8isM6(*&!kyf=(JH?gn$Nzqp&9Qs=T)I^ zR*H3u7w&b{9*Lj;8BvBM8L2sQS}XW|*2<-%R{l&h_VEedtA}l}FArhHQ%5=GLOD2@ z?2hdMzsc6ngK=~@Y#2h66wxGH*B}yktu4rnc(m{0dS9~cDR-{$u`=AlqjugdnRKvI zlMLi&lSnkPUNTCT`Oq|Oo`+|30*N5C64lB*P!p|IldHoe_F=-@T0#S=w=MACuHKW# zSyJT8v2PEVOKVk=gNrT%OK6=#neVHHZ1BdJST~MX;&+XkuSkpFiY43L+~#5giz8!Z z$!TsEg-cH=&Y&-NJWo4OTe&$GPrRL--V!B^<{>W4>8@Pu>ov*xWOtRgBUJ5F+3R@w z)3E#A5lYtc1XF`q5R(Ci_UEctCb8d}w}6*-zd zpG)>|lH_QS5e1PUp1+tRucU=y4ee*x?Jzybn+}sK1DiET7GS%+s^JCu(R)U)oKz6h zbq0TVZjIS9ci1SOkMr~B-|pB5f*=TjAP9mW2!bF8f*=TjAP9mW2=cXG0rDU(od75R E0OvSHtN;K2 literal 0 HcmV?d00001 diff --git a/swh/lister/arch/tests/data/https_uk.mirror.archlinuxarm.org/aarch64_core_core.files.tar.gz b/swh/lister/arch/tests/data/https_uk.mirror.archlinuxarm.org/aarch64_core_core.files.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..c3d895952cfccf56ab1fda442400cd9c321a7b4a GIT binary patch literal 1128 zcmV-u1eg0CiwFP!000001MSsG&znXV0O0TJU*U^S)@SwssiTx6CltExik%F)uHJSs155g+YI|CZkW64=s{xij&b?v&UYZ6=hIWaef;& zb)3d^KlIOyt*x7r(b=tncRzRp>Ch;esxu7A@_@#NQ2i7VfCL;j#2bk*?agGwvpx~9 zU|20AL4`QY^C8W+F747jMe?3Eq?!vzGT>7-4w%q)Lz3`A&-I4YcE$sSXIX~l&(v@P zF76LAhBOy=xC_o<2uKd+Xdh6(r(dJ#bKO+ulTo}=p8|w}2%)dUvh1!kD|}{GnblKY z6K;N&V2b%TGxw7Mv!!k~J19oU?n}F4JuVP-E>)`i;euU`MxggF(N`%!pDuZ!(2A7z zxd?e_DLlFJ62FT9tIAj^Dv`RNL`C23cb!z%T~6M?YEffSOzMnv+VsaV$t7Rl{kBOO zT+-F*^t`}=(D#aM*~26A9#?Anxpl)5Kpr06ioJFcUU0W~aeV}PH%fopd z_*%8ocv{8$+o2(&NU?>Z0z8&=6PA-DHX%DJ6&_@0uJ~p0OuTDXdvxNguH93iwY_!I z_Cq_chbw#8beqZyWvn@qG+X#tf8KL8vVXE&XIT2B4G6kd8K>uMcA2K z_ADM&p4rjGk?S6l5dNEAv)2dsyJL5tK!QnxksFiq4EIM!e?yx@|D5X1Hl`?Lp z5ilT4Y#ctEUiX`l^yKL-_U{@t&l-a>N@eFejcDj<@855ge@zzp8rr8+=6b6!b<5!6?*bb#*QzLMuYF;zuc;x1hParFK5r(kO~Y2#k_4@fUp38B zfC2ogU5DZd&ShgVfltV^6D3gqvp$S5;PuA7gV}5z zzkYBs$t0tRG8#o1Md|N?x+uDVY6_<*5XWh}m?Ds1=o)7gCV9{zMbLPClQ{V+wZc~5 z6+>RW89Jd!@_EE)68-b>cP|(LNPwe&Ac&XgEKX4`bMo7l{Ca)cIn8|j5;jihWq+Ud zPv`%moUg9GAGF@Lt??`{^{nfc>kn{@{Gz~~ma@|qvyU@Pp^aeiiy1p_JtueE zJed1Q+ck;XcY!~*`0c!_s^_J=rCg`k2nNRhSWf}vw*a6RlED~!iflKeb=WRuC_xc8 zgVF>M5+HP3XN`I|z=MGHXh5LUlxoQ=AgN!oDVz*^m!L6>4rteRPx+pXIGS#UW04B9 zk^4GV`a_0@*4-uRi^vvlSG{jpKFao=;*OF<2qX5_pvbGJ=6sq}Sr8{og`}N#24zYW z75nRvb=*l2Seq3@#7YWmy9goY>4-4sl6Zif-R5p!U6wO0Nn(BLa;Hqq2TiWOy8ZyGpu~pmz zj^FU0GeLPxYNAL^M5ij|V~fk&eY)e$4^3&160&KRdmqGZZkv)~hX)qht3y;%CpER* z-Zb1Lr=wMTmbV!rosau-jBdhp&z#ac*e8aKW9SKq&N}Ziwj5se4M=#baeWLR)xM4H zLXcm3ow*9#cqqgZ`S#AIRY&yJkW%Rp4V`5Im&A%gdHarH^*mXZN8N^z%crx7>}S)igqu z=0*k4J=a6YXtS);>cOL;kz`aRd_&$lo>3mQB9er#G2D&~HLuSG36u&82 z2=aJ5R-ZaX>lLf2iI6EvQ+PptHU!DgrXg$c@?!R}lRTTnLD4oF)}9hDiX;HK#<1sS zZm|3tD+%V*Bc{~3mX!T4XU*-L>yv!y5btdl6!Rb5=O}2FCHBj6%KVu&{llJ%|2+HN m%@l$l2!bF8f*=TjAP9mW2!bF8f*=TjzLO830;PBWC;$Les4Id1 literal 0 HcmV?d00001 diff --git a/swh/lister/arch/tests/data/https_uk.mirror.archlinuxarm.org/armv7h_community_community.files.tar.gz b/swh/lister/arch/tests/data/https_uk.mirror.archlinuxarm.org/armv7h_community_community.files.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..e2943c39d5a47d4d5d8fc7a8df5923c88177f661 GIT binary patch literal 1184 zcmV;R1Yi3fiwFP!000001MSsWucI~;0O0$aU%^Y%hjbD)vs7(W0)!Bj1h{Y$-oO}e z7Dx!$`1K_-(@r%rRW+5Ws;a*i>zEUaInE(z4wIxgT*Yz%>%-wv;r21k@gAKg$46V% z)w{CT)^Di_@3nKkOfxolZx4N9$ zq@k#nyh$p!`}4fNy8a)Pd}IAHbcWx$#!{{Xo(G#D+ij zKd=9AX4<-|IQnq#wR*oxs>k@aE5`jx8sEFYVEAQjKRH!`FDE1256q=I9DKZ2Kc(q` zIvglepU@=DgSz3iq!KDm&h7UUtg9=kFsfP#S1oGt1R|=fDF-$1(%@u2rp%VQoYDEy z)OTmNC`rdf$%@z zPL@L^OC^xXNX|u;;bb98VV=Sy<)jp*e2y3aF?4^om9Yv;V>rN`*-aH?swzr0!@8c> z?rYv1wz|05XYRDh?z_n>xTfH=nJEVY816<ea%~;va&!Y^d#YO4z`pz)4RxVH)MTbC`quJ3DywGdi zWXZ$+Era#cC}v>w8YTQ=R9I^~SC^OWa2#RXI<&$C7)NHW)sDYNNBVW=`_2+D+FD&| z&NWWA9GgFK9J%p1_Cb~BUh2`x8(xg=XcI@;M8u=Rc68J1*5F2sY}K<_B&ee}1O?}6 zRz0^1JM!$H&9N6~QEP6|VRam-w>M8v!lNo)yE|SLU=0@8+ZL3!iL4aSV(z@1686My z3T?UaI{Uc^)%SHx7R*fz8B-JE&g9#5Ysrhog?IFKzz-+k942LQhpJZ~=Zde%8@Jx3 z+|=Q*1+7IY88BF7RrYFii@mi}!rf@EfyOY^C1~xy>UOo)O-G@v;Z~o9vd%^e#!_IH z^@sExbLMHgl#Q^Qn~{IrTO3n*a2hIdL8rGE;&^|R940;ms7A3AtgkyDCNkR^*M1|- z);U@7R@ByK3~qvI8kZ_!Aez^adG9(kt*4tfq@leFkG8z+LVB}ax#EVMvG%T_CzmLp z@0mQm1*hos;Y-qvPfoQhFj5KAsGgUy-r;bvgd<1iH&Z6s%*EYS5SHmg-pGadQ-AzJ z-yROiwmqJInDn2WBOZTfCF8m&-p7;AT8nL}y8CQ7j``Y$im%RxgT7TgTTy7*nx?$= z7a4(*0Za2hc>cu{)lv-I@7qrUOUlO89zPKzpO;p|!5-qAIRy`%8kcSB}0 zNxoW?CXuh(-@Ty(Mq)UE5d`supcF!4Z%gv~Z~bk3+Xc;X`Ia_89hHBb_pS5)QNcIs zA17_}efM}3n0nRq&+CujDEdeJX@Y*$pGK*-CGyWa;@|t9*MB8zx@2;Ov|4;s^!LwC zVtp&K_56C)({r&{eaV^wo^!thM``D3mbqGdUOo4Sk}Iqhig{Q@*UPO*+P1jX%f2hB zqI=Bem7R64-PIxt+T=Y>hNPN11y}RuL1~7dm^suwLzKiBikM?VB;A9tS`aJ}u?fb+ zA&b%klA=KzB>_c5A(cdE5X`Br%3&n+nVqH)6NX8g;9(fYY#dWTOr;DNh7`kwcuIsU zLsBG}kQ6o_uxK1&0g4k;5~N5%&!gFj?P|(uQ8?O@=Qv*AxL7VEDbUS*`n;Sa+OA@g zuj8qNWp@b4yC-v(jeVFhPRL5D*Fnr+-e+B?aAH_ z6=Y4LOPqMTH+(#E|FG`jk+p9AD$q|S~ir|edgnd?}Scsq@QpupU`4}a(2gu(jk&LU$MjF zBH#jSi#ucEJlsAqrFIf(JnuDZ>rKdR)6dh}Fu3C?n}(Xar|S` zaJx~=2+DbmlvEPFb`eUu4XQ$yd?JaskH|)a%fn=5%x-KCk|AV?HsYRBPl?GWM=?~> zw#}a<=0fq)YAt_MArIlLvi?XNFK*kdzE$J0OI=K%I=p!L_aLn-S^tPg0%Nxvr&jR> zGH>3k-P*ZeoII(EMOFwgRBqzLZYmB#`27~a28N}xk-GN?I*2vxvg!8Wh}L;OTI|8+ zVHY1+wr!@-#|@E^9F<7)#~{+OYua8l7Cdw^b7+G@Y!Ioc#1=kb36H+-crRt`^Dq`Y z8+)kTH+QqbPca1Xu)%v*?qi;MzG;{T6IwEQ;s-5vewsi3!%kl<@~*qJKfv%fj_a)M z*ViV4+iTj5L6iLUyMX6RT@xhpwJ#{Pj?Xc-6V%n>b1!-A83#=lMQ;CE)D*$u6iK7x zYkkeDfm5X2YQZ&8zSN7lpO)OtSn_>Q#Y^|mcFAS=WB7`a2AX=}mtan;UU~E2uetoZ p__sGw0000000000000000000000000008(G{R+^0m5%@@004%pE*Jm+ literal 0 HcmV?d00001 diff --git a/swh/lister/arch/tests/data/https_uk.mirror.archlinuxarm.org/armv7h_extra_extra.files.tar.gz b/swh/lister/arch/tests/data/https_uk.mirror.archlinuxarm.org/armv7h_extra_extra.files.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..633fe1c0ba8ba592b6b1706f609bf99f8dde5f24 GIT binary patch literal 1120 zcmV-m1fTmKiwFP!000001MSpV)1pQc24JuK72bG7eFELAsU#I-S5Of|@s3?&(T~N2 zUmwgQnPe(cnVO_(DwTe2ki$zidhqyliTibVV^4VeXls9#WJTQIWn70{o%zKZGb3l< zjl@S^j~K8t{W_8?P5klrn-NI?8bAV26g3*ILJEu~^gr11i*-%w*OSR8sr@R;F;ym-au3oA4|5cr}=L_4Tj&4p_WNZJdhvP#w8_fn~VK3THshnc%KcX4Nr+3*Ak zX<&O<*R<3o94zp1rZx`n@ks9$WDjA#;xXG+9Ft{(A(|}o!U&A!>dQ>Y$&2dRIMsox z#GATLf@pJ+-c=)V@64%MnZ`!Z5069V!DX7<)!l*IEg#8Ey9Vbi(RsH$1c!#Bi}yx5 z+NZYk_nxybrE_MSTAYcvPOyxPus%mp6+eA3Ar7*sU25(rM0_8*rJY82gEAzx?=hP#(8KetO(inIItfYEMcCPQM`n-y7;Z8hN4WR03QI=7@mT&mAFNH08 z@yY{NE0NFL)67f4Y;N@#OCG{LR#X?1J0zoH_HYn*T7o{=2O)9iQ6v+I)xO z_xpYJabPrIIlI&;KBNp?lvl5Tpl*!eRM?8zbo^nEyk^BtHzY}LhU+9lQ-EN3j(h#J z1aT>-@^%;zb$FT>S=Buz!q%M3yQ~-n#ItGRa`JufI*V)U(Se`*Ay~X}!{V>ae;j}7 mS&ASCf*=TjAP9mW2!bF8f*=TjAP9mW-^$Oy^?eEeC;$K{Su|e& literal 0 HcmV?d00001 diff --git a/swh/lister/arch/tests/test_lister.py b/swh/lister/arch/tests/test_lister.py new file mode 100644 index 0000000..78f5f2e --- /dev/null +++ b/swh/lister/arch/tests/test_lister.py @@ -0,0 +1,1088 @@ +# Copyright (C) 2022 The Software Heritage developers +# See the AUTHORS file at the top-level directory of this distribution +# License: GNU General Public License version 3, or any later version +# See top-level LICENSE file for more information +from swh.lister.arch.lister import ArchLister + +expected_origins = [ + { + "url": "https://archlinux.org/packages/core/x86_64/dialog", + "visit_type": "arch", + "extra_loader_arguments": { + "artifacts": [ + { + "url": "https://archive.archlinux.org/packages/d/dialog/dialog-1:1.3_20190211-1-x86_64.pkg.tar.xz", # noqa: B950 + "arch": "x86_64", + "repo": "core", + "name": "dialog", + "version": "1:1.3_20190211-1", + "length": 180000, + "filename": "dialog-1:1.3_20190211-1-x86_64.pkg.tar.xz", + "last_modified": "2019-02-13T08:36:00", + }, + { + "url": "https://archive.archlinux.org/packages/d/dialog/dialog-1:1.3_20190724-1-x86_64.pkg.tar.xz", # noqa: B950 + "arch": "x86_64", + "repo": "core", + "name": "dialog", + "version": "1:1.3_20190724-1", + "length": 180000, + "filename": "dialog-1:1.3_20190724-1-x86_64.pkg.tar.xz", + "last_modified": "2019-07-26T21:39:00", + }, + { + "url": "https://archive.archlinux.org/packages/d/dialog/dialog-1:1.3_20190728-1-x86_64.pkg.tar.xz", # noqa: B950 + "arch": "x86_64", + "repo": "core", + "name": "dialog", + "version": "1:1.3_20190728-1", + "length": 180000, + "filename": "dialog-1:1.3_20190728-1-x86_64.pkg.tar.xz", + "last_modified": "2019-07-29T12:10:00", + }, + { + "url": "https://archive.archlinux.org/packages/d/dialog/dialog-1:1.3_20190806-1-x86_64.pkg.tar.xz", # noqa: B950 + "arch": "x86_64", + "repo": "core", + "name": "dialog", + "version": "1:1.3_20190806-1", + "length": 182000, + "filename": "dialog-1:1.3_20190806-1-x86_64.pkg.tar.xz", + "last_modified": "2019-08-07T04:19:00", + }, + { + "url": "https://archive.archlinux.org/packages/d/dialog/dialog-1:1.3_20190808-1-x86_64.pkg.tar.xz", # noqa: B950 + "arch": "x86_64", + "repo": "core", + "name": "dialog", + "version": "1:1.3_20190808-1", + "length": 182000, + "filename": "dialog-1:1.3_20190808-1-x86_64.pkg.tar.xz", + "last_modified": "2019-08-09T22:49:00", + }, + { + "url": "https://archive.archlinux.org/packages/d/dialog/dialog-1:1.3_20191110-1-x86_64.pkg.tar.xz", # noqa: B950 + "arch": "x86_64", + "repo": "core", + "name": "dialog", + "version": "1:1.3_20191110-1", + "length": 183000, + "filename": "dialog-1:1.3_20191110-1-x86_64.pkg.tar.xz", + "last_modified": "2019-11-11T11:15:00", + }, + { + "url": "https://archive.archlinux.org/packages/d/dialog/dialog-1:1.3_20191110-2-x86_64.pkg.tar.xz", # noqa: B950 + "arch": "x86_64", + "repo": "core", + "name": "dialog", + "version": "1:1.3_20191110-2", + "length": 183000, + "filename": "dialog-1:1.3_20191110-2-x86_64.pkg.tar.xz", + "last_modified": "2019-11-13T17:40:00", + }, + { + "url": "https://archive.archlinux.org/packages/d/dialog/dialog-1:1.3_20191209-1-x86_64.pkg.tar.xz", # noqa: B950 + "arch": "x86_64", + "repo": "core", + "name": "dialog", + "version": "1:1.3_20191209-1", + "length": 183000, + "filename": "dialog-1:1.3_20191209-1-x86_64.pkg.tar.xz", + "last_modified": "2019-12-10T09:56:00", + }, + { + "url": "https://archive.archlinux.org/packages/d/dialog/dialog-1:1.3_20191210-1-x86_64.pkg.tar.xz", # noqa: B950 + "arch": "x86_64", + "repo": "core", + "name": "dialog", + "version": "1:1.3_20191210-1", + "length": 184000, + "filename": "dialog-1:1.3_20191210-1-x86_64.pkg.tar.xz", + "last_modified": "2019-12-12T15:55:00", + }, + { + "url": "https://archive.archlinux.org/packages/d/dialog/dialog-1:1.3_20200228-1-x86_64.pkg.tar.zst", # noqa: B950 + "arch": "x86_64", + "repo": "core", + "name": "dialog", + "version": "1:1.3_20200228-1", + "length": 196000, + "filename": "dialog-1:1.3_20200228-1-x86_64.pkg.tar.zst", + "last_modified": "2020-03-06T02:21:00", + }, + { + "url": "https://archive.archlinux.org/packages/d/dialog/dialog-1:1.3_20200327-1-x86_64.pkg.tar.zst", # noqa: B950 + "arch": "x86_64", + "repo": "core", + "name": "dialog", + "version": "1:1.3_20200327-1", + "length": 196000, + "filename": "dialog-1:1.3_20200327-1-x86_64.pkg.tar.zst", + "last_modified": "2020-03-29T17:08:00", + }, + { + "url": "https://archive.archlinux.org/packages/d/dialog/dialog-1:1.3_20201126-1-x86_64.pkg.tar.zst", # noqa: B950 + "arch": "x86_64", + "repo": "core", + "name": "dialog", + "version": "1:1.3_20201126-1", + "length": 199000, + "filename": "dialog-1:1.3_20201126-1-x86_64.pkg.tar.zst", + "last_modified": "2020-11-27T12:19:00", + }, + { + "url": "https://archive.archlinux.org/packages/d/dialog/dialog-1:1.3_20210117-1-x86_64.pkg.tar.zst", # noqa: B950 + "arch": "x86_64", + "repo": "core", + "name": "dialog", + "version": "1:1.3_20210117-1", + "length": 200000, + "filename": "dialog-1:1.3_20210117-1-x86_64.pkg.tar.zst", + "last_modified": "2021-01-18T18:05:00", + }, + { + "url": "https://archive.archlinux.org/packages/d/dialog/dialog-1:1.3_20210306-1-x86_64.pkg.tar.zst", # noqa: B950 + "arch": "x86_64", + "repo": "core", + "name": "dialog", + "version": "1:1.3_20210306-1", + "length": 201000, + "filename": "dialog-1:1.3_20210306-1-x86_64.pkg.tar.zst", + "last_modified": "2021-03-07T11:40:00", + }, + { + "url": "https://archive.archlinux.org/packages/d/dialog/dialog-1:1.3_20210319-1-x86_64.pkg.tar.zst", # noqa: B950 + "arch": "x86_64", + "repo": "core", + "name": "dialog", + "version": "1:1.3_20210319-1", + "length": 201000, + "filename": "dialog-1:1.3_20210319-1-x86_64.pkg.tar.zst", + "last_modified": "2021-03-20T00:12:00", + }, + { + "url": "https://archive.archlinux.org/packages/d/dialog/dialog-1:1.3_20210324-1-x86_64.pkg.tar.zst", # noqa: B950 + "arch": "x86_64", + "repo": "core", + "name": "dialog", + "version": "1:1.3_20210324-1", + "length": 201000, + "filename": "dialog-1:1.3_20210324-1-x86_64.pkg.tar.zst", + "last_modified": "2021-03-26T17:53:00", + }, + { + "url": "https://archive.archlinux.org/packages/d/dialog/dialog-1:1.3_20210509-1-x86_64.pkg.tar.zst", # noqa: B950 + "arch": "x86_64", + "repo": "core", + "name": "dialog", + "version": "1:1.3_20210509-1", + "length": 198000, + "filename": "dialog-1:1.3_20210509-1-x86_64.pkg.tar.zst", + "last_modified": "2021-05-16T02:04:00", + }, + { + "url": "https://archive.archlinux.org/packages/d/dialog/dialog-1:1.3_20210530-1-x86_64.pkg.tar.zst", # noqa: B950 + "arch": "x86_64", + "repo": "core", + "name": "dialog", + "version": "1:1.3_20210530-1", + "length": 198000, + "filename": "dialog-1:1.3_20210530-1-x86_64.pkg.tar.zst", + "last_modified": "2021-05-31T14:59:00", + }, + { + "url": "https://archive.archlinux.org/packages/d/dialog/dialog-1:1.3_20210621-1-x86_64.pkg.tar.zst", # noqa: B950 + "arch": "x86_64", + "repo": "core", + "name": "dialog", + "version": "1:1.3_20210621-1", + "length": 199000, + "filename": "dialog-1:1.3_20210621-1-x86_64.pkg.tar.zst", + "last_modified": "2021-06-23T02:59:00", + }, + { + "url": "https://archive.archlinux.org/packages/d/dialog/dialog-1:1.3_20211107-1-x86_64.pkg.tar.zst", # noqa: B950 + "arch": "x86_64", + "repo": "core", + "name": "dialog", + "version": "1:1.3_20211107-1", + "length": 197000, + "filename": "dialog-1:1.3_20211107-1-x86_64.pkg.tar.zst", + "last_modified": "2021-11-09T14:06:00", + }, + { + "url": "https://archive.archlinux.org/packages/d/dialog/dialog-1:1.3_20211214-1-x86_64.pkg.tar.zst", # noqa: B950 + "arch": "x86_64", + "repo": "core", + "name": "dialog", + "version": "1:1.3_20211214-1", + "length": 197000, + "filename": "dialog-1:1.3_20211214-1-x86_64.pkg.tar.zst", + "last_modified": "2021-12-14T09:26:00", + }, + { + "url": "https://archive.archlinux.org/packages/d/dialog/dialog-1:1.3_20220117-1-x86_64.pkg.tar.zst", # noqa: B950 + "arch": "x86_64", + "repo": "core", + "name": "dialog", + "version": "1:1.3_20220117-1", + "length": 199000, + "filename": "dialog-1:1.3_20220117-1-x86_64.pkg.tar.zst", + "last_modified": "2022-01-19T09:56:00", + }, + { + "url": "https://archive.archlinux.org/packages/d/dialog/dialog-1:1.3_20220414-1-x86_64.pkg.tar.zst", # noqa: B950 + "arch": "x86_64", + "repo": "core", + "name": "dialog", + "version": "1:1.3_20220414-1", + "length": 198000, + "filename": "dialog-1:1.3_20220414-1-x86_64.pkg.tar.zst", + "last_modified": "2022-04-16T03:59:00", + }, + ] + }, + }, + { + "url": "https://archlinux.org/packages/community/x86_64/gnome-code-assistance", + "visit_type": "arch", + "extra_loader_arguments": { + "artifacts": [ + { + "url": "https://archive.archlinux.org/packages/g/gnome-code-assistance/gnome-code-assistance-1:3.16.1+15+g0fd8b5f-1-x86_64.pkg.tar.xz", # noqa: B950 + "arch": "x86_64", + "repo": "community", + "name": "gnome-code-assistance", + "version": "1:3.16.1+15+g0fd8b5f-1", + "length": 2000000, + "filename": "gnome-code-assistance-1:3.16.1+15+g0fd8b5f-1-x86_64.pkg.tar.xz", # noqa: B950 + "last_modified": "2019-11-10T20:55:00", + }, + { + "url": "https://archive.archlinux.org/packages/g/gnome-code-assistance/gnome-code-assistance-1:3.16.1+15+g0fd8b5f-2-x86_64.pkg.tar.zst", # noqa: B950 + "arch": "x86_64", + "repo": "community", + "name": "gnome-code-assistance", + "version": "1:3.16.1+15+g0fd8b5f-2", + "length": 2000000, + "filename": "gnome-code-assistance-1:3.16.1+15+g0fd8b5f-2-x86_64.pkg.tar.zst", # noqa: B950 + "last_modified": "2020-03-28T15:58:00", + }, + { + "url": "https://archive.archlinux.org/packages/g/gnome-code-assistance/gnome-code-assistance-1:3.16.1+15+g0fd8b5f-3-x86_64.pkg.tar.zst", # noqa: B950 + "arch": "x86_64", + "repo": "community", + "name": "gnome-code-assistance", + "version": "1:3.16.1+15+g0fd8b5f-3", + "length": 2000000, + "filename": "gnome-code-assistance-1:3.16.1+15+g0fd8b5f-3-x86_64.pkg.tar.zst", # noqa: B950 + "last_modified": "2020-07-05T15:28:00", + }, + { + "url": "https://archive.archlinux.org/packages/g/gnome-code-assistance/gnome-code-assistance-1:3.16.1+15+g0fd8b5f-4-x86_64.pkg.tar.zst", # noqa: B950 + "arch": "x86_64", + "repo": "community", + "name": "gnome-code-assistance", + "version": "1:3.16.1+15+g0fd8b5f-4", + "length": 2000000, + "filename": "gnome-code-assistance-1:3.16.1+15+g0fd8b5f-4-x86_64.pkg.tar.zst", # noqa: B950 + "last_modified": "2020-11-12T17:28:00", + }, + { + "url": "https://archive.archlinux.org/packages/g/gnome-code-assistance/gnome-code-assistance-2:3.16.1+14+gaad6437-1-x86_64.pkg.tar.zst", # noqa: B950 + "arch": "x86_64", + "repo": "community", + "name": "gnome-code-assistance", + "version": "2:3.16.1+14+gaad6437-1", + "length": 2000000, + "filename": "gnome-code-assistance-2:3.16.1+14+gaad6437-1-x86_64.pkg.tar.zst", # noqa: B950 + "last_modified": "2021-02-24T16:30:00", + }, + { + "url": "https://archive.archlinux.org/packages/g/gnome-code-assistance/gnome-code-assistance-2:3.16.1+14+gaad6437-2-x86_64.pkg.tar.zst", # noqa: B950 + "arch": "x86_64", + "repo": "community", + "name": "gnome-code-assistance", + "version": "2:3.16.1+14+gaad6437-2", + "length": 2000000, + "filename": "gnome-code-assistance-2:3.16.1+14+gaad6437-2-x86_64.pkg.tar.zst", # noqa: B950 + "last_modified": "2021-12-02T23:36:00", + }, + { + "url": "https://archive.archlinux.org/packages/g/gnome-code-assistance/gnome-code-assistance-3.16.1+14+gaad6437-1-x86_64.pkg.tar.xz", # noqa: B950 + "arch": "x86_64", + "repo": "community", + "name": "gnome-code-assistance", + "version": "3.16.1+14+gaad6437-1", + "length": 2000000, + "filename": "gnome-code-assistance-3.16.1+14+gaad6437-1-x86_64.pkg.tar.xz", # noqa: B950 + "last_modified": "2019-03-15T19:23:00", + }, + { + "url": "https://archive.archlinux.org/packages/g/gnome-code-assistance/gnome-code-assistance-3.16.1+14+gaad6437-2-x86_64.pkg.tar.xz", # noqa: B950 + "arch": "x86_64", + "repo": "community", + "name": "gnome-code-assistance", + "version": "3.16.1+14+gaad6437-2", + "length": 2000000, + "filename": "gnome-code-assistance-3.16.1+14+gaad6437-2-x86_64.pkg.tar.xz", # noqa: B950 + "last_modified": "2019-08-24T20:05:00", + }, + { + "url": "https://archive.archlinux.org/packages/g/gnome-code-assistance/gnome-code-assistance-3.16.1+15+gb9ffc4d-1-x86_64.pkg.tar.xz", # noqa: B950 + "arch": "x86_64", + "repo": "community", + "name": "gnome-code-assistance", + "version": "3.16.1+15+gb9ffc4d-1", + "length": 2000000, + "filename": "gnome-code-assistance-3.16.1+15+gb9ffc4d-1-x86_64.pkg.tar.xz", # noqa: B950 + "last_modified": "2019-08-25T20:55:00", + }, + { + "url": "https://archive.archlinux.org/packages/g/gnome-code-assistance/gnome-code-assistance-3:3.16.1+r14+gaad6437-1-x86_64.pkg.tar.zst", # noqa: B950 + "arch": "x86_64", + "repo": "community", + "name": "gnome-code-assistance", + "version": "3:3.16.1+r14+gaad6437-1", + "length": 2000000, + "filename": "gnome-code-assistance-3:3.16.1+r14+gaad6437-1-x86_64.pkg.tar.zst", # noqa: B950 + "last_modified": "2022-05-18T17:23:00", + }, + ] + }, + }, + { + "url": "https://archlinux.org/packages/core/x86_64/gzip", + "visit_type": "arch", + "extra_loader_arguments": { + "artifacts": [ + { + "url": "https://archive.archlinux.org/packages/g/gzip/gzip-1.10-1-x86_64.pkg.tar.xz", # noqa: B950 + "arch": "x86_64", + "repo": "core", + "name": "gzip", + "version": "1.10-1", + "length": 78000, + "filename": "gzip-1.10-1-x86_64.pkg.tar.xz", + "last_modified": "2018-12-30T18:38:00", + }, + { + "url": "https://archive.archlinux.org/packages/g/gzip/gzip-1.10-2-x86_64.pkg.tar.xz", # noqa: B950 + "arch": "x86_64", + "repo": "core", + "name": "gzip", + "version": "1.10-2", + "length": 78000, + "filename": "gzip-1.10-2-x86_64.pkg.tar.xz", + "last_modified": "2019-10-06T16:02:00", + }, + { + "url": "https://archive.archlinux.org/packages/g/gzip/gzip-1.10-3-x86_64.pkg.tar.xz", # noqa: B950 + "arch": "x86_64", + "repo": "core", + "name": "gzip", + "version": "1.10-3", + "length": 78000, + "filename": "gzip-1.10-3-x86_64.pkg.tar.xz", + "last_modified": "2019-11-13T15:55:00", + }, + { + "url": "https://archive.archlinux.org/packages/g/gzip/gzip-1.11-1-x86_64.pkg.tar.zst", # noqa: B950 + "arch": "x86_64", + "repo": "core", + "name": "gzip", + "version": "1.11-1", + "length": 82000, + "filename": "gzip-1.11-1-x86_64.pkg.tar.zst", + "last_modified": "2021-09-04T02:02:00", + }, + { + "url": "https://archive.archlinux.org/packages/g/gzip/gzip-1.12-1-x86_64.pkg.tar.zst", # noqa: B950 + "arch": "x86_64", + "repo": "core", + "name": "gzip", + "version": "1.12-1", + "length": 80000, + "filename": "gzip-1.12-1-x86_64.pkg.tar.zst", + "last_modified": "2022-04-07T17:35:00", + }, + ] + }, + }, + { + "url": "https://archlinux.org/packages/extra/x86_64/libasyncns", + "visit_type": "arch", + "extra_loader_arguments": { + "artifacts": [ + { + "url": "https://archive.archlinux.org/packages/l/libasyncns/libasyncns-0.8+3+g68cd5af-2-x86_64.pkg.tar.xz", # noqa: B950 + "arch": "x86_64", + "repo": "extra", + "name": "libasyncns", + "version": "0.8+3+g68cd5af-2", + "length": 16000, + "filename": "libasyncns-0.8+3+g68cd5af-2-x86_64.pkg.tar.xz", + "last_modified": "2018-11-09T23:39:00", + }, + { + "url": "https://archive.archlinux.org/packages/l/libasyncns/libasyncns-0.8+3+g68cd5af-3-x86_64.pkg.tar.zst", # noqa: B950 + "arch": "x86_64", + "repo": "extra", + "name": "libasyncns", + "version": "0.8+3+g68cd5af-3", + "length": 17000, + "filename": "libasyncns-0.8+3+g68cd5af-3-x86_64.pkg.tar.zst", + "last_modified": "2020-05-19T08:28:00", + }, + { + "url": "https://archive.archlinux.org/packages/l/libasyncns/libasyncns-1:0.8+r3+g68cd5af-1-x86_64.pkg.tar.zst", # noqa: B950 + "arch": "x86_64", + "repo": "extra", + "name": "libasyncns", + "version": "1:0.8+r3+g68cd5af-1", + "length": 17000, + "filename": "libasyncns-1:0.8+r3+g68cd5af-1-x86_64.pkg.tar.zst", # noqa: B950 + "last_modified": "2022-05-18T17:23:00", + }, + ] + }, + }, + { + "url": "https://archlinux.org/packages/extra/x86_64/mercurial", + "visit_type": "arch", + "extra_loader_arguments": { + "artifacts": [ + { + "url": "https://archive.archlinux.org/packages/m/mercurial/mercurial-4.8.2-1-x86_64.pkg.tar.xz", # noqa: B950 + "arch": "x86_64", + "repo": "extra", + "name": "mercurial", + "version": "4.8.2-1", + "length": 4000000, + "filename": "mercurial-4.8.2-1-x86_64.pkg.tar.xz", + "last_modified": "2019-01-15T20:31:00", + }, + { + "url": "https://archive.archlinux.org/packages/m/mercurial/mercurial-4.9-1-x86_64.pkg.tar.xz", # noqa: B950 + "arch": "x86_64", + "repo": "extra", + "name": "mercurial", + "version": "4.9-1", + "length": 4000000, + "filename": "mercurial-4.9-1-x86_64.pkg.tar.xz", + "last_modified": "2019-02-12T06:15:00", + }, + { + "url": "https://archive.archlinux.org/packages/m/mercurial/mercurial-4.9.1-1-x86_64.pkg.tar.xz", # noqa: B950 + "arch": "x86_64", + "repo": "extra", + "name": "mercurial", + "version": "4.9.1-1", + "length": 4000000, + "filename": "mercurial-4.9.1-1-x86_64.pkg.tar.xz", + "last_modified": "2019-03-30T17:40:00", + }, + { + "url": "https://archive.archlinux.org/packages/m/mercurial/mercurial-5.0-1-x86_64.pkg.tar.xz", # noqa: B950 + "arch": "x86_64", + "repo": "extra", + "name": "mercurial", + "version": "5.0-1", + "length": 4000000, + "filename": "mercurial-5.0-1-x86_64.pkg.tar.xz", + "last_modified": "2019-05-10T08:44:00", + }, + { + "url": "https://archive.archlinux.org/packages/m/mercurial/mercurial-5.0.1-1-x86_64.pkg.tar.xz", # noqa: B950 + "arch": "x86_64", + "repo": "extra", + "name": "mercurial", + "version": "5.0.1-1", + "length": 4000000, + "filename": "mercurial-5.0.1-1-x86_64.pkg.tar.xz", + "last_modified": "2019-06-10T18:05:00", + }, + { + "url": "https://archive.archlinux.org/packages/m/mercurial/mercurial-5.0.2-1-x86_64.pkg.tar.xz", # noqa: B950 + "arch": "x86_64", + "repo": "extra", + "name": "mercurial", + "version": "5.0.2-1", + "length": 4000000, + "filename": "mercurial-5.0.2-1-x86_64.pkg.tar.xz", + "last_modified": "2019-07-10T04:58:00", + }, + { + "url": "https://archive.archlinux.org/packages/m/mercurial/mercurial-5.1-1-x86_64.pkg.tar.xz", # noqa: B950 + "arch": "x86_64", + "repo": "extra", + "name": "mercurial", + "version": "5.1-1", + "length": 4000000, + "filename": "mercurial-5.1-1-x86_64.pkg.tar.xz", + "last_modified": "2019-08-17T19:58:00", + }, + { + "url": "https://archive.archlinux.org/packages/m/mercurial/mercurial-5.1.2-1-x86_64.pkg.tar.xz", # noqa: B950 + "arch": "x86_64", + "repo": "extra", + "name": "mercurial", + "version": "5.1.2-1", + "length": 4000000, + "filename": "mercurial-5.1.2-1-x86_64.pkg.tar.xz", + "last_modified": "2019-10-08T08:38:00", + }, + { + "url": "https://archive.archlinux.org/packages/m/mercurial/mercurial-5.2-1-x86_64.pkg.tar.xz", # noqa: B950 + "arch": "x86_64", + "repo": "extra", + "name": "mercurial", + "version": "5.2-1", + "length": 4000000, + "filename": "mercurial-5.2-1-x86_64.pkg.tar.xz", + "last_modified": "2019-11-28T06:41:00", + }, + { + "url": "https://archive.archlinux.org/packages/m/mercurial/mercurial-5.2.1-1-x86_64.pkg.tar.zst", # noqa: B950 + "arch": "x86_64", + "repo": "extra", + "name": "mercurial", + "version": "5.2.1-1", + "length": 4000000, + "filename": "mercurial-5.2.1-1-x86_64.pkg.tar.zst", + "last_modified": "2020-01-06T12:35:00", + }, + { + "url": "https://archive.archlinux.org/packages/m/mercurial/mercurial-5.2.2-1-x86_64.pkg.tar.zst", # noqa: B950 + "arch": "x86_64", + "repo": "extra", + "name": "mercurial", + "version": "5.2.2-1", + "length": 5000000, + "filename": "mercurial-5.2.2-1-x86_64.pkg.tar.zst", + "last_modified": "2020-01-15T14:07:00", + }, + { + "url": "https://archive.archlinux.org/packages/m/mercurial/mercurial-5.2.2-2-x86_64.pkg.tar.zst", # noqa: B950 + "arch": "x86_64", + "repo": "extra", + "name": "mercurial", + "version": "5.2.2-2", + "length": 4000000, + "filename": "mercurial-5.2.2-2-x86_64.pkg.tar.zst", + "last_modified": "2020-01-30T20:05:00", + }, + { + "url": "https://archive.archlinux.org/packages/m/mercurial/mercurial-5.3-1-x86_64.pkg.tar.zst", # noqa: B950 + "arch": "x86_64", + "repo": "extra", + "name": "mercurial", + "version": "5.3-1", + "length": 5000000, + "filename": "mercurial-5.3-1-x86_64.pkg.tar.zst", + "last_modified": "2020-02-13T21:40:00", + }, + { + "url": "https://archive.archlinux.org/packages/m/mercurial/mercurial-5.3.1-1-x86_64.pkg.tar.zst", # noqa: B950 + "arch": "x86_64", + "repo": "extra", + "name": "mercurial", + "version": "5.3.1-1", + "length": 4000000, + "filename": "mercurial-5.3.1-1-x86_64.pkg.tar.zst", + "last_modified": "2020-03-07T23:58:00", + }, + { + "url": "https://archive.archlinux.org/packages/m/mercurial/mercurial-5.3.2-1-x86_64.pkg.tar.zst", # noqa: B950 + "arch": "x86_64", + "repo": "extra", + "name": "mercurial", + "version": "5.3.2-1", + "length": 4000000, + "filename": "mercurial-5.3.2-1-x86_64.pkg.tar.zst", + "last_modified": "2020-04-05T17:48:00", + }, + { + "url": "https://archive.archlinux.org/packages/m/mercurial/mercurial-5.4-1-x86_64.pkg.tar.zst", # noqa: B950 + "arch": "x86_64", + "repo": "extra", + "name": "mercurial", + "version": "5.4-1", + "length": 5000000, + "filename": "mercurial-5.4-1-x86_64.pkg.tar.zst", + "last_modified": "2020-05-10T17:19:00", + }, + { + "url": "https://archive.archlinux.org/packages/m/mercurial/mercurial-5.4-2-x86_64.pkg.tar.zst", # noqa: B950 + "arch": "x86_64", + "repo": "extra", + "name": "mercurial", + "version": "5.4-2", + "length": 5000000, + "filename": "mercurial-5.4-2-x86_64.pkg.tar.zst", + "last_modified": "2020-06-04T13:38:00", + }, + { + "url": "https://archive.archlinux.org/packages/m/mercurial/mercurial-5.4.1-1-x86_64.pkg.tar.zst", # noqa: B950 + "arch": "x86_64", + "repo": "extra", + "name": "mercurial", + "version": "5.4.1-1", + "length": 5000000, + "filename": "mercurial-5.4.1-1-x86_64.pkg.tar.zst", + "last_modified": "2020-06-06T12:28:00", + }, + { + "url": "https://archive.archlinux.org/packages/m/mercurial/mercurial-5.4.2-1-x86_64.pkg.tar.zst", # noqa: B950 + "arch": "x86_64", + "repo": "extra", + "name": "mercurial", + "version": "5.4.2-1", + "length": 5000000, + "filename": "mercurial-5.4.2-1-x86_64.pkg.tar.zst", + "last_modified": "2020-07-02T21:35:00", + }, + { + "url": "https://archive.archlinux.org/packages/m/mercurial/mercurial-5.5-1-x86_64.pkg.tar.zst", # noqa: B950 + "arch": "x86_64", + "repo": "extra", + "name": "mercurial", + "version": "5.5-1", + "length": 5000000, + "filename": "mercurial-5.5-1-x86_64.pkg.tar.zst", + "last_modified": "2020-08-05T10:39:00", + }, + { + "url": "https://archive.archlinux.org/packages/m/mercurial/mercurial-5.5.1-1-x86_64.pkg.tar.zst", # noqa: B950 + "arch": "x86_64", + "repo": "extra", + "name": "mercurial", + "version": "5.5.1-1", + "length": 5000000, + "filename": "mercurial-5.5.1-1-x86_64.pkg.tar.zst", + "last_modified": "2020-09-03T19:05:00", + }, + { + "url": "https://archive.archlinux.org/packages/m/mercurial/mercurial-5.5.2-1-x86_64.pkg.tar.zst", # noqa: B950 + "arch": "x86_64", + "repo": "extra", + "name": "mercurial", + "version": "5.5.2-1", + "length": 5000000, + "filename": "mercurial-5.5.2-1-x86_64.pkg.tar.zst", + "last_modified": "2020-10-07T20:05:00", + }, + { + "url": "https://archive.archlinux.org/packages/m/mercurial/mercurial-5.6-1-x86_64.pkg.tar.zst", # noqa: B950 + "arch": "x86_64", + "repo": "extra", + "name": "mercurial", + "version": "5.6-1", + "length": 5000000, + "filename": "mercurial-5.6-1-x86_64.pkg.tar.zst", + "last_modified": "2020-11-03T17:26:00", + }, + { + "url": "https://archive.archlinux.org/packages/m/mercurial/mercurial-5.6-2-x86_64.pkg.tar.zst", # noqa: B950 + "arch": "x86_64", + "repo": "extra", + "name": "mercurial", + "version": "5.6-2", + "length": 5000000, + "filename": "mercurial-5.6-2-x86_64.pkg.tar.zst", + "last_modified": "2020-11-09T16:54:00", + }, + { + "url": "https://archive.archlinux.org/packages/m/mercurial/mercurial-5.6-3-x86_64.pkg.tar.zst", # noqa: B950 + "arch": "x86_64", + "repo": "extra", + "name": "mercurial", + "version": "5.6-3", + "length": 5000000, + "filename": "mercurial-5.6-3-x86_64.pkg.tar.zst", + "last_modified": "2020-11-11T15:20:00", + }, + { + "url": "https://archive.archlinux.org/packages/m/mercurial/mercurial-5.6.1-1-x86_64.pkg.tar.zst", # noqa: B950 + "arch": "x86_64", + "repo": "extra", + "name": "mercurial", + "version": "5.6.1-1", + "length": 5000000, + "filename": "mercurial-5.6.1-1-x86_64.pkg.tar.zst", + "last_modified": "2020-12-05T12:29:00", + }, + { + "url": "https://archive.archlinux.org/packages/m/mercurial/mercurial-5.7-1-x86_64.pkg.tar.zst", # noqa: B950 + "arch": "x86_64", + "repo": "extra", + "name": "mercurial", + "version": "5.7-1", + "length": 5000000, + "filename": "mercurial-5.7-1-x86_64.pkg.tar.zst", + "last_modified": "2021-02-04T08:41:00", + }, + { + "url": "https://archive.archlinux.org/packages/m/mercurial/mercurial-5.7.1-1-x86_64.pkg.tar.zst", # noqa: B950 + "arch": "x86_64", + "repo": "extra", + "name": "mercurial", + "version": "5.7.1-1", + "length": 5000000, + "filename": "mercurial-5.7.1-1-x86_64.pkg.tar.zst", + "last_modified": "2021-03-11T07:51:00", + }, + { + "url": "https://archive.archlinux.org/packages/m/mercurial/mercurial-5.8-1-x86_64.pkg.tar.zst", # noqa: B950 + "arch": "x86_64", + "repo": "extra", + "name": "mercurial", + "version": "5.8-1", + "length": 5000000, + "filename": "mercurial-5.8-1-x86_64.pkg.tar.zst", + "last_modified": "2021-05-04T17:55:00", + }, + { + "url": "https://archive.archlinux.org/packages/m/mercurial/mercurial-5.8-2-x86_64.pkg.tar.zst", # noqa: B950 + "arch": "x86_64", + "repo": "extra", + "name": "mercurial", + "version": "5.8-2", + "length": 5000000, + "filename": "mercurial-5.8-2-x86_64.pkg.tar.zst", + "last_modified": "2021-05-08T22:08:00", + }, + { + "url": "https://archive.archlinux.org/packages/m/mercurial/mercurial-5.8.1-1-x86_64.pkg.tar.zst", # noqa: B950 + "arch": "x86_64", + "repo": "extra", + "name": "mercurial", + "version": "5.8.1-1", + "length": 5000000, + "filename": "mercurial-5.8.1-1-x86_64.pkg.tar.zst", + "last_modified": "2021-07-13T07:04:00", + }, + { + "url": "https://archive.archlinux.org/packages/m/mercurial/mercurial-5.9.1-1-x86_64.pkg.tar.zst", # noqa: B950 + "arch": "x86_64", + "repo": "extra", + "name": "mercurial", + "version": "5.9.1-1", + "length": 5000000, + "filename": "mercurial-5.9.1-1-x86_64.pkg.tar.zst", + "last_modified": "2021-09-01T12:48:00", + }, + { + "url": "https://archive.archlinux.org/packages/m/mercurial/mercurial-5.9.1-2-x86_64.pkg.tar.zst", # noqa: B950 + "arch": "x86_64", + "repo": "extra", + "name": "mercurial", + "version": "5.9.1-2", + "length": 5000000, + "filename": "mercurial-5.9.1-2-x86_64.pkg.tar.zst", + "last_modified": "2021-09-24T17:39:00", + }, + { + "url": "https://archive.archlinux.org/packages/m/mercurial/mercurial-5.9.2-1-x86_64.pkg.tar.zst", # noqa: B950 + "arch": "x86_64", + "repo": "extra", + "name": "mercurial", + "version": "5.9.2-1", + "length": 5000000, + "filename": "mercurial-5.9.2-1-x86_64.pkg.tar.zst", + "last_modified": "2021-10-07T21:52:00", + }, + { + "url": "https://archive.archlinux.org/packages/m/mercurial/mercurial-5.9.3-1-x86_64.pkg.tar.zst", # noqa: B950 + "arch": "x86_64", + "repo": "extra", + "name": "mercurial", + "version": "5.9.3-1", + "length": 5000000, + "filename": "mercurial-5.9.3-1-x86_64.pkg.tar.zst", + "last_modified": "2021-10-27T07:20:00", + }, + { + "url": "https://archive.archlinux.org/packages/m/mercurial/mercurial-6.0-1-x86_64.pkg.tar.zst", # noqa: B950 + "arch": "x86_64", + "repo": "extra", + "name": "mercurial", + "version": "6.0-1", + "length": 5000000, + "filename": "mercurial-6.0-1-x86_64.pkg.tar.zst", + "last_modified": "2021-11-25T17:10:00", + }, + { + "url": "https://archive.archlinux.org/packages/m/mercurial/mercurial-6.0-2-x86_64.pkg.tar.zst", # noqa: B950 + "arch": "x86_64", + "repo": "extra", + "name": "mercurial", + "version": "6.0-2", + "length": 5000000, + "filename": "mercurial-6.0-2-x86_64.pkg.tar.zst", + "last_modified": "2021-11-30T20:53:00", + }, + { + "url": "https://archive.archlinux.org/packages/m/mercurial/mercurial-6.0-3-x86_64.pkg.tar.zst", # noqa: B950 + "arch": "x86_64", + "repo": "extra", + "name": "mercurial", + "version": "6.0-3", + "length": 5000000, + "filename": "mercurial-6.0-3-x86_64.pkg.tar.zst", + "last_modified": "2021-12-02T12:06:00", + }, + { + "url": "https://archive.archlinux.org/packages/m/mercurial/mercurial-6.0.1-1-x86_64.pkg.tar.zst", # noqa: B950 + "arch": "x86_64", + "repo": "extra", + "name": "mercurial", + "version": "6.0.1-1", + "length": 5000000, + "filename": "mercurial-6.0.1-1-x86_64.pkg.tar.zst", + "last_modified": "2022-01-08T10:07:00", + }, + { + "url": "https://archive.archlinux.org/packages/m/mercurial/mercurial-6.0.2-1-x86_64.pkg.tar.zst", # noqa: B950 + "arch": "x86_64", + "repo": "extra", + "name": "mercurial", + "version": "6.0.2-1", + "length": 5000000, + "filename": "mercurial-6.0.2-1-x86_64.pkg.tar.zst", + "last_modified": "2022-02-03T13:28:00", + }, + { + "url": "https://archive.archlinux.org/packages/m/mercurial/mercurial-6.0.3-1-x86_64.pkg.tar.zst", # noqa: B950 + "arch": "x86_64", + "repo": "extra", + "name": "mercurial", + "version": "6.0.3-1", + "length": 5000000, + "filename": "mercurial-6.0.3-1-x86_64.pkg.tar.zst", + "last_modified": "2022-02-23T20:50:00", + }, + { + "url": "https://archive.archlinux.org/packages/m/mercurial/mercurial-6.1-1-x86_64.pkg.tar.zst", # noqa: B950 + "arch": "x86_64", + "repo": "extra", + "name": "mercurial", + "version": "6.1-1", + "length": 5000000, + "filename": "mercurial-6.1-1-x86_64.pkg.tar.zst", + "last_modified": "2022-03-03T18:06:00", + }, + { + "url": "https://archive.archlinux.org/packages/m/mercurial/mercurial-6.1-2-x86_64.pkg.tar.zst", # noqa: B950 + "arch": "x86_64", + "repo": "extra", + "name": "mercurial", + "version": "6.1-2", + "length": 5000000, + "filename": "mercurial-6.1-2-x86_64.pkg.tar.zst", + "last_modified": "2022-03-04T08:37:00", + }, + { + "url": "https://archive.archlinux.org/packages/m/mercurial/mercurial-6.1.1-1-x86_64.pkg.tar.zst", # noqa: B950 + "arch": "x86_64", + "repo": "extra", + "name": "mercurial", + "version": "6.1.1-1", + "length": 5000000, + "filename": "mercurial-6.1.1-1-x86_64.pkg.tar.zst", + "last_modified": "2022-04-07T18:26:00", + }, + { + "url": "https://archive.archlinux.org/packages/m/mercurial/mercurial-6.1.2-1-x86_64.pkg.tar.zst", # noqa: B950 + "arch": "x86_64", + "repo": "extra", + "name": "mercurial", + "version": "6.1.2-1", + "length": 5000000, + "filename": "mercurial-6.1.2-1-x86_64.pkg.tar.zst", + "last_modified": "2022-05-07T11:03:00", + }, + ] + }, + }, + { + "url": "https://archlinux.org/packages/community/any/python-hglib", + "visit_type": "arch", + "extra_loader_arguments": { + "artifacts": [ + { + "url": "https://archive.archlinux.org/packages/p/python-hglib/python-hglib-2.6.1-3-any.pkg.tar.xz", # noqa: B950 + "arch": "any", + "repo": "community", + "name": "python-hglib", + "version": "2.6.1-3", + "length": 40000, + "filename": "python-hglib-2.6.1-3-any.pkg.tar.xz", + "last_modified": "2019-11-06T14:08:00", + }, + { + "url": "https://archive.archlinux.org/packages/p/python-hglib/python-hglib-2.6.2-1-any.pkg.tar.zst", # noqa: B950 + "arch": "any", + "repo": "community", + "name": "python-hglib", + "version": "2.6.2-1", + "length": 43000, + "filename": "python-hglib-2.6.2-1-any.pkg.tar.zst", + "last_modified": "2020-11-19T22:29:00", + }, + { + "url": "https://archive.archlinux.org/packages/p/python-hglib/python-hglib-2.6.2-2-any.pkg.tar.zst", # noqa: B950 + "arch": "any", + "repo": "community", + "name": "python-hglib", + "version": "2.6.2-2", + "length": 43000, + "filename": "python-hglib-2.6.2-2-any.pkg.tar.zst", + "last_modified": "2020-11-19T22:31:00", + }, + { + "url": "https://archive.archlinux.org/packages/p/python-hglib/python-hglib-2.6.2-3-any.pkg.tar.zst", # noqa: B950 + "arch": "any", + "repo": "community", + "name": "python-hglib", + "version": "2.6.2-3", + "length": 43000, + "filename": "python-hglib-2.6.2-3-any.pkg.tar.zst", + "last_modified": "2020-11-19T22:35:00", + }, + { + "url": "https://archive.archlinux.org/packages/p/python-hglib/python-hglib-2.6.2-4-any.pkg.tar.zst", # noqa: B950 + "arch": "any", + "repo": "community", + "name": "python-hglib", + "version": "2.6.2-4", + "length": 43000, + "filename": "python-hglib-2.6.2-4-any.pkg.tar.zst", + "last_modified": "2021-12-03T00:44:00", + }, + ] + }, + }, + { + "url": "https://archlinuxarm.org/packages/aarch64/gzip", + "visit_type": "arch", + "extra_loader_arguments": { + "artifacts": [ + { + "url": "https://uk.mirror.archlinuxarm.org/aarch64/core/gzip-1.12-1-aarch64.pkg.tar.xz", # noqa: B950 + "arch": "aarch64", + "name": "gzip", + "repo": "core", + "length": 79640, + "version": "1.12-1", + "filename": "gzip-1.12-1-aarch64.pkg.tar.xz", + "last_modified": "2022-04-07T21:08:14", + } + ] + }, + }, + { + "url": "https://archlinuxarm.org/packages/aarch64/mercurial", + "visit_type": "arch", + "extra_loader_arguments": { + "artifacts": [ + { + "url": "https://uk.mirror.archlinuxarm.org/aarch64/extra/mercurial-6.1.3-1-aarch64.pkg.tar.xz", # noqa: B950 + "arch": "aarch64", + "name": "mercurial", + "repo": "extra", + "length": 4931228, + "version": "6.1.3-1", + "filename": "mercurial-6.1.3-1-aarch64.pkg.tar.xz", + "last_modified": "2022-06-02T22:15:18", + } + ] + }, + }, + { + "url": "https://archlinuxarm.org/packages/any/python-hglib", + "visit_type": "arch", + "extra_loader_arguments": { + "artifacts": [ + { + "url": "https://uk.mirror.archlinuxarm.org/any/community/python-hglib-2.6.2-4-any.pkg.tar.xz", # noqa: B950 + "arch": "any", + "name": "python-hglib", + "repo": "community", + "length": 41432, + "version": "2.6.2-4", + "filename": "python-hglib-2.6.2-4-any.pkg.tar.xz", + "last_modified": "2021-12-14T16:22:20", + } + ] + }, + }, + { + "url": "https://archlinuxarm.org/packages/armv7h/gzip", + "visit_type": "arch", + "extra_loader_arguments": { + "artifacts": [ + { + "url": "https://uk.mirror.archlinuxarm.org/armv7h/core/gzip-1.12-1-armv7h.pkg.tar.xz", # noqa: B950 + "arch": "armv7h", + "name": "gzip", + "repo": "core", + "length": 78468, + "version": "1.12-1", + "filename": "gzip-1.12-1-armv7h.pkg.tar.xz", + "last_modified": "2022-04-07T21:08:35", + } + ] + }, + }, + { + "url": "https://archlinuxarm.org/packages/armv7h/mercurial", + "visit_type": "arch", + "extra_loader_arguments": { + "artifacts": [ + { + "url": "https://uk.mirror.archlinuxarm.org/armv7h/extra/mercurial-6.1.3-1-armv7h.pkg.tar.xz", # noqa: B950 + "arch": "armv7h", + "name": "mercurial", + "repo": "extra", + "length": 4897816, + "version": "6.1.3-1", + "filename": "mercurial-6.1.3-1-armv7h.pkg.tar.xz", + "last_modified": "2022-06-02T22:13:08", + } + ] + }, + }, +] + + +def test_arch_lister(datadir, requests_mock_datadir, swh_scheduler): + lister = ArchLister(scheduler=swh_scheduler) + res = lister.run() + + assert res.pages == 9 + assert res.origins == 12 + + expected_origins_sorted = sorted(expected_origins, key=lambda x: x.get("url")) + scheduler_origins_sorted = sorted( + swh_scheduler.get_listed_origins(lister.lister_obj.id).results, + key=lambda x: x.url, + ) + + assert len(scheduler_origins_sorted) == len(expected_origins_sorted) + + assert [ + ( + scheduled.visit_type, + scheduled.url, + scheduled.extra_loader_arguments.get("artifacts"), + ) + for scheduled in scheduler_origins_sorted + ] == [ + ( + "arch", + expected.get("url"), + expected.get("extra_loader_arguments").get("artifacts"), + ) + for expected in expected_origins_sorted + ] diff --git a/swh/lister/arch/tests/test_tasks.py b/swh/lister/arch/tests/test_tasks.py new file mode 100644 index 0000000..a0c7232 --- /dev/null +++ b/swh/lister/arch/tests/test_tasks.py @@ -0,0 +1,31 @@ +# Copyright (C) 2022 The Software Heritage developers +# See the AUTHORS file at the top-level directory of this distribution +# License: GNU General Public License version 3, or any later version +# See top-level LICENSE file for more information + +from swh.lister.pattern import ListerStats + + +def test_arch_ping(swh_scheduler_celery_app, swh_scheduler_celery_worker): + res = swh_scheduler_celery_app.send_task("swh.lister.arch.tasks.ping") + assert res + res.wait() + assert res.successful() + assert res.result == "OK" + + +def test_arch_lister(swh_scheduler_celery_app, swh_scheduler_celery_worker, mocker): + # setup the mocked ArchLister + lister = mocker.patch("swh.lister.arch.tasks.ArchLister") + lister.from_configfile.return_value = lister + stats = ListerStats(pages=42, origins=42) + lister.run.return_value = stats + + res = swh_scheduler_celery_app.send_task("swh.lister.arch.tasks.ArchListerTask") + assert res + res.wait() + assert res.successful() + assert res.result == stats.dict() + + lister.from_configfile.assert_called_once_with() + lister.run.assert_called_once_with()