Page MenuHomeSoftware Heritage

D7894.diff
No OneTemporary

D7894.diff

diff --git a/CONTRIBUTORS b/CONTRIBUTORS
--- a/CONTRIBUTORS
+++ b/CONTRIBUTORS
@@ -6,3 +6,4 @@
Hezekiah Maina
Boris Baldassari
Léo Andrès
+Franck Bret
diff --git a/setup.py b/setup.py
--- a/setup.py
+++ b/setup.py
@@ -55,6 +55,7 @@
[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
--- /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
--- /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<version>.*)-(?P<arch>any|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<last_modified>\d+-\w+-\d+ \d\d:\d\d)\s+(?P<size>\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 <foutrelis@archlinux.org>',
+ '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<k>\w+)\%\n(?P<v>.*)\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
--- /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
--- /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
--- /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 <anthraxx@archlinux.org>
+
+%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 <foutrelis@archlinux.org>
+
+%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 <arojas@archlinux.org>
+
+%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 <felixonmars@archlinux.org>
+
+%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 <foutrelis@archlinux.org>
+
+%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 <felixonmars@archlinux.org>
+
+%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 <builder+seattle@archlinuxarm.org>""" > 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 <builder+xu4@archlinuxarm.org>""" > 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 <builder+n1@archlinuxarm.org>""" > 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 <builder+xu2@archlinuxarm.org>""" > 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 <builder+seattle@archlinuxarm.org>""" > 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 <builder+xu1@archlinuxarm.org>
+""" > 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 """<html>
+<head><title>Index of /packages/g/gzip/</title></head>
+<body>
+<h1>Index of /packages/g/gzip/</h1><hr><pre><a href="../">../</a>
+<a href="gzip-1.10-1-x86_64.pkg.tar.xz">gzip-1.10-1-x86_64.pkg.tar.xz</a> 30-Dec-2018 18:38 78K
+<a href="gzip-1.10-1-x86_64.pkg.tar.xz.sig">gzip-1.10-1-x86_64.pkg.tar.xz.sig</a> 30-Dec-2018 18:38 558
+<a href="gzip-1.10-2-x86_64.pkg.tar.xz">gzip-1.10-2-x86_64.pkg.tar.xz</a> 06-Oct-2019 16:02 78K
+<a href="gzip-1.10-2-x86_64.pkg.tar.xz.sig">gzip-1.10-2-x86_64.pkg.tar.xz.sig</a> 06-Oct-2019 16:02 558
+<a href="gzip-1.10-3-x86_64.pkg.tar.xz">gzip-1.10-3-x86_64.pkg.tar.xz</a> 13-Nov-2019 15:55 78K
+<a href="gzip-1.10-3-x86_64.pkg.tar.xz.sig">gzip-1.10-3-x86_64.pkg.tar.xz.sig</a> 13-Nov-2019 15:55 566
+<a href="gzip-1.11-1-x86_64.pkg.tar.zst">gzip-1.11-1-x86_64.pkg.tar.zst</a> 04-Sep-2021 02:02 82K
+<a href="gzip-1.11-1-x86_64.pkg.tar.zst.sig">gzip-1.11-1-x86_64.pkg.tar.zst.sig</a> 04-Sep-2021 02:02 558
+<a href="gzip-1.12-1-x86_64.pkg.tar.zst">gzip-1.12-1-x86_64.pkg.tar.zst</a> 07-Apr-2022 17:35 80K
+<a href="gzip-1.12-1-x86_64.pkg.tar.zst.sig">gzip-1.12-1-x86_64.pkg.tar.zst.sig</a> 07-Apr-2022 17:35 566
+</pre><hr></body>
+</html>""" > https_archive.archlinux.org/packages_g_gzip
+
+echo -e """<html>
+<head><title>Index of /packages/d/dialog/</title></head>
+<body>
+<h1>Index of /packages/d/dialog/</h1><hr><pre><a href="../">../</a>
+<a href="dialog-1%3A1.3_20190211-1-x86_64.pkg.tar.xz">dialog-1:1.3_20190211-1-x86_64.pkg.tar.xz</a> 13-Feb-2019 08:36 180K
+<a href="dialog-1%3A1.3_20190211-1-x86_64.pkg.tar.xz.sig">dialog-1:1.3_20190211-1-x86_64.pkg.tar.xz.sig</a> 13-Feb-2019 08:36 310
+<a href="dialog-1%3A1.3_20190724-1-x86_64.pkg.tar.xz">dialog-1:1.3_20190724-1-x86_64.pkg.tar.xz</a> 26-Jul-2019 21:39 180K
+<a href="dialog-1%3A1.3_20190724-1-x86_64.pkg.tar.xz.sig">dialog-1:1.3_20190724-1-x86_64.pkg.tar.xz.sig</a> 26-Jul-2019 21:43 310
+<a href="dialog-1%3A1.3_20190728-1-x86_64.pkg.tar.xz">dialog-1:1.3_20190728-1-x86_64.pkg.tar.xz</a> 29-Jul-2019 12:10 180K
+<a href="dialog-1%3A1.3_20190728-1-x86_64.pkg.tar.xz.sig">dialog-1:1.3_20190728-1-x86_64.pkg.tar.xz.sig</a> 29-Jul-2019 12:10 310
+<a href="dialog-1%3A1.3_20190806-1-x86_64.pkg.tar.xz">dialog-1:1.3_20190806-1-x86_64.pkg.tar.xz</a> 07-Aug-2019 04:19 182K
+<a href="dialog-1%3A1.3_20190806-1-x86_64.pkg.tar.xz.sig">dialog-1:1.3_20190806-1-x86_64.pkg.tar.xz.sig</a> 07-Aug-2019 04:19 310
+<a href="dialog-1%3A1.3_20190808-1-x86_64.pkg.tar.xz">dialog-1:1.3_20190808-1-x86_64.pkg.tar.xz</a> 09-Aug-2019 22:49 182K
+<a href="dialog-1%3A1.3_20190808-1-x86_64.pkg.tar.xz.sig">dialog-1:1.3_20190808-1-x86_64.pkg.tar.xz.sig</a> 09-Aug-2019 22:50 310
+<a href="dialog-1%3A1.3_20191110-1-x86_64.pkg.tar.xz">dialog-1:1.3_20191110-1-x86_64.pkg.tar.xz</a> 11-Nov-2019 11:15 183K
+<a href="dialog-1%3A1.3_20191110-1-x86_64.pkg.tar.xz.sig">dialog-1:1.3_20191110-1-x86_64.pkg.tar.xz.sig</a> 11-Nov-2019 11:17 310
+<a href="dialog-1%3A1.3_20191110-2-x86_64.pkg.tar.xz">dialog-1:1.3_20191110-2-x86_64.pkg.tar.xz</a> 13-Nov-2019 17:40 183K
+<a href="dialog-1%3A1.3_20191110-2-x86_64.pkg.tar.xz.sig">dialog-1:1.3_20191110-2-x86_64.pkg.tar.xz.sig</a> 13-Nov-2019 17:41 310
+<a href="dialog-1%3A1.3_20191209-1-x86_64.pkg.tar.xz">dialog-1:1.3_20191209-1-x86_64.pkg.tar.xz</a> 10-Dec-2019 09:56 183K
+<a href="dialog-1%3A1.3_20191209-1-x86_64.pkg.tar.xz.sig">dialog-1:1.3_20191209-1-x86_64.pkg.tar.xz.sig</a> 10-Dec-2019 09:57 310
+<a href="dialog-1%3A1.3_20191210-1-x86_64.pkg.tar.xz">dialog-1:1.3_20191210-1-x86_64.pkg.tar.xz</a> 12-Dec-2019 15:55 184K
+<a href="dialog-1%3A1.3_20191210-1-x86_64.pkg.tar.xz.sig">dialog-1:1.3_20191210-1-x86_64.pkg.tar.xz.sig</a> 12-Dec-2019 15:56 310
+<a href="dialog-1%3A1.3_20200228-1-x86_64.pkg.tar.zst">dialog-1:1.3_20200228-1-x86_64.pkg.tar.zst</a> 06-Mar-2020 02:21 196K
+<a href="dialog-1%3A1.3_20200228-1-x86_64.pkg.tar.zst.sig">dialog-1:1.3_20200228-1-x86_64.pkg.tar.zst.sig</a> 06-Mar-2020 02:22 310
+<a href="dialog-1%3A1.3_20200327-1-x86_64.pkg.tar.zst">dialog-1:1.3_20200327-1-x86_64.pkg.tar.zst</a> 29-Mar-2020 17:08 196K
+<a href="dialog-1%3A1.3_20200327-1-x86_64.pkg.tar.zst.sig">dialog-1:1.3_20200327-1-x86_64.pkg.tar.zst.sig</a> 29-Mar-2020 17:09 310
+<a href="dialog-1%3A1.3_20201126-1-x86_64.pkg.tar.zst">dialog-1:1.3_20201126-1-x86_64.pkg.tar.zst</a> 27-Nov-2020 12:19 199K
+<a href="dialog-1%3A1.3_20201126-1-x86_64.pkg.tar.zst.sig">dialog-1:1.3_20201126-1-x86_64.pkg.tar.zst.sig</a> 27-Nov-2020 12:20 310
+<a href="dialog-1%3A1.3_20210117-1-x86_64.pkg.tar.zst">dialog-1:1.3_20210117-1-x86_64.pkg.tar.zst</a> 18-Jan-2021 18:05 200K
+<a href="dialog-1%3A1.3_20210117-1-x86_64.pkg.tar.zst.sig">dialog-1:1.3_20210117-1-x86_64.pkg.tar.zst.sig</a> 18-Jan-2021 18:05 310
+<a href="dialog-1%3A1.3_20210306-1-x86_64.pkg.tar.zst">dialog-1:1.3_20210306-1-x86_64.pkg.tar.zst</a> 07-Mar-2021 11:40 201K
+<a href="dialog-1%3A1.3_20210306-1-x86_64.pkg.tar.zst.sig">dialog-1:1.3_20210306-1-x86_64.pkg.tar.zst.sig</a> 07-Mar-2021 11:41 310
+<a href="dialog-1%3A1.3_20210319-1-x86_64.pkg.tar.zst">dialog-1:1.3_20210319-1-x86_64.pkg.tar.zst</a> 20-Mar-2021 00:12 201K
+<a href="dialog-1%3A1.3_20210319-1-x86_64.pkg.tar.zst.sig">dialog-1:1.3_20210319-1-x86_64.pkg.tar.zst.sig</a> 20-Mar-2021 00:13 310
+<a href="dialog-1%3A1.3_20210324-1-x86_64.pkg.tar.zst">dialog-1:1.3_20210324-1-x86_64.pkg.tar.zst</a> 26-Mar-2021 17:53 201K
+<a href="dialog-1%3A1.3_20210324-1-x86_64.pkg.tar.zst.sig">dialog-1:1.3_20210324-1-x86_64.pkg.tar.zst.sig</a> 26-Mar-2021 17:53 310
+<a href="dialog-1%3A1.3_20210509-1-x86_64.pkg.tar.zst">dialog-1:1.3_20210509-1-x86_64.pkg.tar.zst</a> 16-May-2021 02:04 198K
+<a href="dialog-1%3A1.3_20210509-1-x86_64.pkg.tar.zst.sig">dialog-1:1.3_20210509-1-x86_64.pkg.tar.zst.sig</a> 16-May-2021 02:04 310
+<a href="dialog-1%3A1.3_20210530-1-x86_64.pkg.tar.zst">dialog-1:1.3_20210530-1-x86_64.pkg.tar.zst</a> 31-May-2021 14:59 198K
+<a href="dialog-1%3A1.3_20210530-1-x86_64.pkg.tar.zst.sig">dialog-1:1.3_20210530-1-x86_64.pkg.tar.zst.sig</a> 31-May-2021 15:00 310
+<a href="dialog-1%3A1.3_20210621-1-x86_64.pkg.tar.zst">dialog-1:1.3_20210621-1-x86_64.pkg.tar.zst</a> 23-Jun-2021 02:59 199K
+<a href="dialog-1%3A1.3_20210621-1-x86_64.pkg.tar.zst.sig">dialog-1:1.3_20210621-1-x86_64.pkg.tar.zst.sig</a> 23-Jun-2021 03:00 310
+<a href="dialog-1%3A1.3_20211107-1-x86_64.pkg.tar.zst">dialog-1:1.3_20211107-1-x86_64.pkg.tar.zst</a> 09-Nov-2021 14:06 197K
+<a href="dialog-1%3A1.3_20211107-1-x86_64.pkg.tar.zst.sig">dialog-1:1.3_20211107-1-x86_64.pkg.tar.zst.sig</a> 09-Nov-2021 14:13 310
+<a href="dialog-1%3A1.3_20211214-1-x86_64.pkg.tar.zst">dialog-1:1.3_20211214-1-x86_64.pkg.tar.zst</a> 14-Dec-2021 09:26 197K
+<a href="dialog-1%3A1.3_20211214-1-x86_64.pkg.tar.zst.sig">dialog-1:1.3_20211214-1-x86_64.pkg.tar.zst.sig</a> 14-Dec-2021 09:27 310
+<a href="dialog-1%3A1.3_20220117-1-x86_64.pkg.tar.zst">dialog-1:1.3_20220117-1-x86_64.pkg.tar.zst</a> 19-Jan-2022 09:56 199K
+<a href="dialog-1%3A1.3_20220117-1-x86_64.pkg.tar.zst.sig">dialog-1:1.3_20220117-1-x86_64.pkg.tar.zst.sig</a> 19-Jan-2022 09:56 310
+<a href="dialog-1%3A1.3_20220414-1-x86_64.pkg.tar.zst">dialog-1:1.3_20220414-1-x86_64.pkg.tar.zst</a> 16-Apr-2022 03:59 198K
+<a href="dialog-1%3A1.3_20220414-1-x86_64.pkg.tar.zst.sig">dialog-1:1.3_20220414-1-x86_64.pkg.tar.zst.sig</a> 16-Apr-2022 03:59 310
+</pre><hr></body>
+</html>""" > https_archive.archlinux.org/packages_d_dialog
+
+echo -e """
+<html>
+<head><title>Index of /packages/m/mercurial/</title></head>
+<body>
+<h1>Index of /packages/m/mercurial/</h1><hr><pre><a href="../">../</a>
+<a href="mercurial-4.8.2-1-x86_64.pkg.tar.xz">mercurial-4.8.2-1-x86_64.pkg.tar.xz</a> 15-Jan-2019 20:31 4M
+<a href="mercurial-4.8.2-1-x86_64.pkg.tar.xz.sig">mercurial-4.8.2-1-x86_64.pkg.tar.xz.sig</a> 15-Jan-2019 20:31 310
+<a href="mercurial-4.9-1-x86_64.pkg.tar.xz">mercurial-4.9-1-x86_64.pkg.tar.xz</a> 12-Feb-2019 06:15 4M
+<a href="mercurial-4.9-1-x86_64.pkg.tar.xz.sig">mercurial-4.9-1-x86_64.pkg.tar.xz.sig</a> 12-Feb-2019 06:15 310
+<a href="mercurial-4.9.1-1-x86_64.pkg.tar.xz">mercurial-4.9.1-1-x86_64.pkg.tar.xz</a> 30-Mar-2019 17:40 4M
+<a href="mercurial-4.9.1-1-x86_64.pkg.tar.xz.sig">mercurial-4.9.1-1-x86_64.pkg.tar.xz.sig</a> 30-Mar-2019 17:40 310
+<a href="mercurial-5.0-1-x86_64.pkg.tar.xz">mercurial-5.0-1-x86_64.pkg.tar.xz</a> 10-May-2019 08:44 4M
+<a href="mercurial-5.0-1-x86_64.pkg.tar.xz.sig">mercurial-5.0-1-x86_64.pkg.tar.xz.sig</a> 10-May-2019 08:44 310
+<a href="mercurial-5.0.1-1-x86_64.pkg.tar.xz">mercurial-5.0.1-1-x86_64.pkg.tar.xz</a> 10-Jun-2019 18:05 4M
+<a href="mercurial-5.0.1-1-x86_64.pkg.tar.xz.sig">mercurial-5.0.1-1-x86_64.pkg.tar.xz.sig</a> 10-Jun-2019 18:05 310
+<a href="mercurial-5.0.2-1-x86_64.pkg.tar.xz">mercurial-5.0.2-1-x86_64.pkg.tar.xz</a> 10-Jul-2019 04:58 4M
+<a href="mercurial-5.0.2-1-x86_64.pkg.tar.xz.sig">mercurial-5.0.2-1-x86_64.pkg.tar.xz.sig</a> 10-Jul-2019 04:58 310
+<a href="mercurial-5.1-1-x86_64.pkg.tar.xz">mercurial-5.1-1-x86_64.pkg.tar.xz</a> 17-Aug-2019 19:58 4M
+<a href="mercurial-5.1-1-x86_64.pkg.tar.xz.sig">mercurial-5.1-1-x86_64.pkg.tar.xz.sig</a> 17-Aug-2019 19:58 310
+<a href="mercurial-5.1.2-1-x86_64.pkg.tar.xz">mercurial-5.1.2-1-x86_64.pkg.tar.xz</a> 08-Oct-2019 08:38 4M
+<a href="mercurial-5.1.2-1-x86_64.pkg.tar.xz.sig">mercurial-5.1.2-1-x86_64.pkg.tar.xz.sig</a> 08-Oct-2019 08:38 310
+<a href="mercurial-5.2-1-x86_64.pkg.tar.xz">mercurial-5.2-1-x86_64.pkg.tar.xz</a> 28-Nov-2019 06:41 4M
+<a href="mercurial-5.2-1-x86_64.pkg.tar.xz.sig">mercurial-5.2-1-x86_64.pkg.tar.xz.sig</a> 28-Nov-2019 06:41 310
+<a href="mercurial-5.2.1-1-x86_64.pkg.tar.zst">mercurial-5.2.1-1-x86_64.pkg.tar.zst</a> 06-Jan-2020 12:35 4M
+<a href="mercurial-5.2.1-1-x86_64.pkg.tar.zst.sig">mercurial-5.2.1-1-x86_64.pkg.tar.zst.sig</a> 06-Jan-2020 12:35 310
+<a href="mercurial-5.2.2-1-x86_64.pkg.tar.zst">mercurial-5.2.2-1-x86_64.pkg.tar.zst</a> 15-Jan-2020 14:07 5M
+<a href="mercurial-5.2.2-1-x86_64.pkg.tar.zst.sig">mercurial-5.2.2-1-x86_64.pkg.tar.zst.sig</a> 15-Jan-2020 14:07 310
+<a href="mercurial-5.2.2-2-x86_64.pkg.tar.zst">mercurial-5.2.2-2-x86_64.pkg.tar.zst</a> 30-Jan-2020 20:05 4M
+<a href="mercurial-5.2.2-2-x86_64.pkg.tar.zst.sig">mercurial-5.2.2-2-x86_64.pkg.tar.zst.sig</a> 30-Jan-2020 20:05 310
+<a href="mercurial-5.3-1-x86_64.pkg.tar.zst">mercurial-5.3-1-x86_64.pkg.tar.zst</a> 13-Feb-2020 21:40 5M
+<a href="mercurial-5.3-1-x86_64.pkg.tar.zst.sig">mercurial-5.3-1-x86_64.pkg.tar.zst.sig</a> 13-Feb-2020 21:40 566
+<a href="mercurial-5.3.1-1-x86_64.pkg.tar.zst">mercurial-5.3.1-1-x86_64.pkg.tar.zst</a> 07-Mar-2020 23:58 4M
+<a href="mercurial-5.3.1-1-x86_64.pkg.tar.zst.sig">mercurial-5.3.1-1-x86_64.pkg.tar.zst.sig</a> 07-Mar-2020 23:58 310
+<a href="mercurial-5.3.2-1-x86_64.pkg.tar.zst">mercurial-5.3.2-1-x86_64.pkg.tar.zst</a> 05-Apr-2020 17:48 4M
+<a href="mercurial-5.3.2-1-x86_64.pkg.tar.zst.sig">mercurial-5.3.2-1-x86_64.pkg.tar.zst.sig</a> 05-Apr-2020 17:48 310
+<a href="mercurial-5.4-1-x86_64.pkg.tar.zst">mercurial-5.4-1-x86_64.pkg.tar.zst</a> 10-May-2020 17:19 5M
+<a href="mercurial-5.4-1-x86_64.pkg.tar.zst.sig">mercurial-5.4-1-x86_64.pkg.tar.zst.sig</a> 10-May-2020 17:19 310
+<a href="mercurial-5.4-2-x86_64.pkg.tar.zst">mercurial-5.4-2-x86_64.pkg.tar.zst</a> 04-Jun-2020 13:38 5M
+<a href="mercurial-5.4-2-x86_64.pkg.tar.zst.sig">mercurial-5.4-2-x86_64.pkg.tar.zst.sig</a> 04-Jun-2020 13:38 310
+<a href="mercurial-5.4.1-1-x86_64.pkg.tar.zst">mercurial-5.4.1-1-x86_64.pkg.tar.zst</a> 06-Jun-2020 12:28 5M
+<a href="mercurial-5.4.1-1-x86_64.pkg.tar.zst.sig">mercurial-5.4.1-1-x86_64.pkg.tar.zst.sig</a> 06-Jun-2020 12:28 310
+<a href="mercurial-5.4.2-1-x86_64.pkg.tar.zst">mercurial-5.4.2-1-x86_64.pkg.tar.zst</a> 02-Jul-2020 21:35 5M
+<a href="mercurial-5.4.2-1-x86_64.pkg.tar.zst.sig">mercurial-5.4.2-1-x86_64.pkg.tar.zst.sig</a> 02-Jul-2020 21:35 566
+<a href="mercurial-5.5-1-x86_64.pkg.tar.zst">mercurial-5.5-1-x86_64.pkg.tar.zst</a> 05-Aug-2020 10:39 5M
+<a href="mercurial-5.5-1-x86_64.pkg.tar.zst.sig">mercurial-5.5-1-x86_64.pkg.tar.zst.sig</a> 05-Aug-2020 10:39 310
+<a href="mercurial-5.5.1-1-x86_64.pkg.tar.zst">mercurial-5.5.1-1-x86_64.pkg.tar.zst</a> 03-Sep-2020 19:05 5M
+<a href="mercurial-5.5.1-1-x86_64.pkg.tar.zst.sig">mercurial-5.5.1-1-x86_64.pkg.tar.zst.sig</a> 03-Sep-2020 19:05 310
+<a href="mercurial-5.5.2-1-x86_64.pkg.tar.zst">mercurial-5.5.2-1-x86_64.pkg.tar.zst</a> 07-Oct-2020 20:05 5M
+<a href="mercurial-5.5.2-1-x86_64.pkg.tar.zst.sig">mercurial-5.5.2-1-x86_64.pkg.tar.zst.sig</a> 07-Oct-2020 20:05 310
+<a href="mercurial-5.6-1-x86_64.pkg.tar.zst">mercurial-5.6-1-x86_64.pkg.tar.zst</a> 03-Nov-2020 17:26 5M
+<a href="mercurial-5.6-1-x86_64.pkg.tar.zst.sig">mercurial-5.6-1-x86_64.pkg.tar.zst.sig</a> 03-Nov-2020 17:26 310
+<a href="mercurial-5.6-2-x86_64.pkg.tar.zst">mercurial-5.6-2-x86_64.pkg.tar.zst</a> 09-Nov-2020 16:54 5M
+<a href="mercurial-5.6-2-x86_64.pkg.tar.zst.sig">mercurial-5.6-2-x86_64.pkg.tar.zst.sig</a> 09-Nov-2020 16:54 310
+<a href="mercurial-5.6-3-x86_64.pkg.tar.zst">mercurial-5.6-3-x86_64.pkg.tar.zst</a> 11-Nov-2020 15:20 5M
+<a href="mercurial-5.6-3-x86_64.pkg.tar.zst.sig">mercurial-5.6-3-x86_64.pkg.tar.zst.sig</a> 11-Nov-2020 15:20 310
+<a href="mercurial-5.6.1-1-x86_64.pkg.tar.zst">mercurial-5.6.1-1-x86_64.pkg.tar.zst</a> 05-Dec-2020 12:29 5M
+<a href="mercurial-5.6.1-1-x86_64.pkg.tar.zst.sig">mercurial-5.6.1-1-x86_64.pkg.tar.zst.sig</a> 05-Dec-2020 12:29 310
+<a href="mercurial-5.7-1-x86_64.pkg.tar.zst">mercurial-5.7-1-x86_64.pkg.tar.zst</a> 04-Feb-2021 08:41 5M
+<a href="mercurial-5.7-1-x86_64.pkg.tar.zst.sig">mercurial-5.7-1-x86_64.pkg.tar.zst.sig</a> 04-Feb-2021 08:41 310
+<a href="mercurial-5.7.1-1-x86_64.pkg.tar.zst">mercurial-5.7.1-1-x86_64.pkg.tar.zst</a> 11-Mar-2021 07:51 5M
+<a href="mercurial-5.7.1-1-x86_64.pkg.tar.zst.sig">mercurial-5.7.1-1-x86_64.pkg.tar.zst.sig</a> 11-Mar-2021 07:51 310
+<a href="mercurial-5.8-1-x86_64.pkg.tar.zst">mercurial-5.8-1-x86_64.pkg.tar.zst</a> 04-May-2021 17:55 5M
+<a href="mercurial-5.8-1-x86_64.pkg.tar.zst.sig">mercurial-5.8-1-x86_64.pkg.tar.zst.sig</a> 04-May-2021 17:55 310
+<a href="mercurial-5.8-2-x86_64.pkg.tar.zst">mercurial-5.8-2-x86_64.pkg.tar.zst</a> 08-May-2021 22:08 5M
+<a href="mercurial-5.8-2-x86_64.pkg.tar.zst.sig">mercurial-5.8-2-x86_64.pkg.tar.zst.sig</a> 08-May-2021 22:08 310
+<a href="mercurial-5.8.1-1-x86_64.pkg.tar.zst">mercurial-5.8.1-1-x86_64.pkg.tar.zst</a> 13-Jul-2021 07:04 5M
+<a href="mercurial-5.8.1-1-x86_64.pkg.tar.zst.sig">mercurial-5.8.1-1-x86_64.pkg.tar.zst.sig</a> 13-Jul-2021 07:04 310
+<a href="mercurial-5.9.1-1-x86_64.pkg.tar.zst">mercurial-5.9.1-1-x86_64.pkg.tar.zst</a> 01-Sep-2021 12:48 5M
+<a href="mercurial-5.9.1-1-x86_64.pkg.tar.zst.sig">mercurial-5.9.1-1-x86_64.pkg.tar.zst.sig</a> 01-Sep-2021 12:48 310
+<a href="mercurial-5.9.1-2-x86_64.pkg.tar.zst">mercurial-5.9.1-2-x86_64.pkg.tar.zst</a> 24-Sep-2021 17:39 5M
+<a href="mercurial-5.9.1-2-x86_64.pkg.tar.zst.sig">mercurial-5.9.1-2-x86_64.pkg.tar.zst.sig</a> 24-Sep-2021 17:39 310
+<a href="mercurial-5.9.2-1-x86_64.pkg.tar.zst">mercurial-5.9.2-1-x86_64.pkg.tar.zst</a> 07-Oct-2021 21:52 5M
+<a href="mercurial-5.9.2-1-x86_64.pkg.tar.zst.sig">mercurial-5.9.2-1-x86_64.pkg.tar.zst.sig</a> 07-Oct-2021 21:52 310
+<a href="mercurial-5.9.3-1-x86_64.pkg.tar.zst">mercurial-5.9.3-1-x86_64.pkg.tar.zst</a> 27-Oct-2021 07:20 5M
+<a href="mercurial-5.9.3-1-x86_64.pkg.tar.zst.sig">mercurial-5.9.3-1-x86_64.pkg.tar.zst.sig</a> 27-Oct-2021 07:20 310
+<a href="mercurial-6.0-1-x86_64.pkg.tar.zst">mercurial-6.0-1-x86_64.pkg.tar.zst</a> 25-Nov-2021 17:10 5M
+<a href="mercurial-6.0-1-x86_64.pkg.tar.zst.sig">mercurial-6.0-1-x86_64.pkg.tar.zst.sig</a> 25-Nov-2021 17:10 310
+<a href="mercurial-6.0-2-x86_64.pkg.tar.zst">mercurial-6.0-2-x86_64.pkg.tar.zst</a> 30-Nov-2021 20:53 5M
+<a href="mercurial-6.0-2-x86_64.pkg.tar.zst.sig">mercurial-6.0-2-x86_64.pkg.tar.zst.sig</a> 30-Nov-2021 20:53 310
+<a href="mercurial-6.0-3-x86_64.pkg.tar.zst">mercurial-6.0-3-x86_64.pkg.tar.zst</a> 02-Dec-2021 12:06 5M
+<a href="mercurial-6.0-3-x86_64.pkg.tar.zst.sig">mercurial-6.0-3-x86_64.pkg.tar.zst.sig</a> 02-Dec-2021 12:06 310
+<a href="mercurial-6.0.1-1-x86_64.pkg.tar.zst">mercurial-6.0.1-1-x86_64.pkg.tar.zst</a> 08-Jan-2022 10:07 5M
+<a href="mercurial-6.0.1-1-x86_64.pkg.tar.zst.sig">mercurial-6.0.1-1-x86_64.pkg.tar.zst.sig</a> 08-Jan-2022 10:07 310
+<a href="mercurial-6.0.2-1-x86_64.pkg.tar.zst">mercurial-6.0.2-1-x86_64.pkg.tar.zst</a> 03-Feb-2022 13:28 5M
+<a href="mercurial-6.0.2-1-x86_64.pkg.tar.zst.sig">mercurial-6.0.2-1-x86_64.pkg.tar.zst.sig</a> 03-Feb-2022 13:28 310
+<a href="mercurial-6.0.3-1-x86_64.pkg.tar.zst">mercurial-6.0.3-1-x86_64.pkg.tar.zst</a> 23-Feb-2022 20:50 5M
+<a href="mercurial-6.0.3-1-x86_64.pkg.tar.zst.sig">mercurial-6.0.3-1-x86_64.pkg.tar.zst.sig</a> 23-Feb-2022 20:50 310
+<a href="mercurial-6.1-1-x86_64.pkg.tar.zst">mercurial-6.1-1-x86_64.pkg.tar.zst</a> 03-Mar-2022 18:06 5M
+<a href="mercurial-6.1-1-x86_64.pkg.tar.zst.sig">mercurial-6.1-1-x86_64.pkg.tar.zst.sig</a> 03-Mar-2022 18:06 310
+<a href="mercurial-6.1-2-x86_64.pkg.tar.zst">mercurial-6.1-2-x86_64.pkg.tar.zst</a> 04-Mar-2022 08:37 5M
+<a href="mercurial-6.1-2-x86_64.pkg.tar.zst.sig">mercurial-6.1-2-x86_64.pkg.tar.zst.sig</a> 04-Mar-2022 08:37 310
+<a href="mercurial-6.1.1-1-x86_64.pkg.tar.zst">mercurial-6.1.1-1-x86_64.pkg.tar.zst</a> 07-Apr-2022 18:26 5M
+<a href="mercurial-6.1.1-1-x86_64.pkg.tar.zst.sig">mercurial-6.1.1-1-x86_64.pkg.tar.zst.sig</a> 07-Apr-2022 18:26 310
+<a href="mercurial-6.1.2-1-x86_64.pkg.tar.zst">mercurial-6.1.2-1-x86_64.pkg.tar.zst</a> 07-May-2022 11:03 5M
+<a href="mercurial-6.1.2-1-x86_64.pkg.tar.zst.sig">mercurial-6.1.2-1-x86_64.pkg.tar.zst.sig</a> 07-May-2022 11:03 310
+</pre><hr></body>
+</html>""" > https_archive.archlinux.org/packages_m_mercurial
+
+echo -e """<html>
+<head><title>Index of /packages/l/libasyncns/</title></head>
+<body>
+<h1>Index of /packages/l/libasyncns/</h1><hr><pre><a href="../">../</a>
+<a href="libasyncns-0.8%2B3%2Bg68cd5af-2-x86_64.pkg.tar.xz">libasyncns-0.8+3+g68cd5af-2-x86_64.pkg.tar.xz</a> 09-Nov-2018 23:39 16K
+<a href="libasyncns-0.8%2B3%2Bg68cd5af-2-x86_64.pkg.tar.xz.sig">libasyncns-0.8+3+g68cd5af-2-x86_64.pkg.tar.xz.sig</a> 09-Nov-2018 23:39 310
+<a href="libasyncns-0.8%2B3%2Bg68cd5af-3-x86_64.pkg.tar.zst">libasyncns-0.8+3+g68cd5af-3-x86_64.pkg.tar.zst</a> 19-May-2020 08:28 17K
+<a href="libasyncns-0.8%2B3%2Bg68cd5af-3-x86_64.pkg.tar.zst.sig">libasyncns-0.8+3+g68cd5af-3-x86_64.pkg.tar.zst.sig</a> 19-May-2020 08:28 566
+<a href="libasyncns-1%3A0.8%2Br3%2Bg68cd5af-1-x86_64.pkg.tar.zst">libasyncns-1:0.8+r3+g68cd5af-1-x86_64.pkg.tar.zst</a> 18-May-2022 17:23 17K
+<a href="libasyncns-1%3A0.8%2Br3%2Bg68cd5af-1-x86_64.pkg.tar.zst.sig">libasyncns-1:0.8+r3+g68cd5af-1-x86_64.pkg.tar.z..&gt;</a> 18-May-2022 17:23 141
+</pre><hr></body>
+</html>""" > https_archive.archlinux.org/packages_l_libasyncns
+
+echo -e """<html>
+<head><title>Index of /packages/p/python-hglib/</title></head>
+<body>
+<h1>Index of /packages/p/python-hglib/</h1><hr><pre><a href="../">../</a>
+<a href="python-hglib-2.6.1-3-any.pkg.tar.xz">python-hglib-2.6.1-3-any.pkg.tar.xz</a> 06-Nov-2019 14:08 40K
+<a href="python-hglib-2.6.1-3-any.pkg.tar.xz.sig">python-hglib-2.6.1-3-any.pkg.tar.xz.sig</a> 06-Nov-2019 14:08 566
+<a href="python-hglib-2.6.2-1-any.pkg.tar.zst">python-hglib-2.6.2-1-any.pkg.tar.zst</a> 19-Nov-2020 22:29 43K
+<a href="python-hglib-2.6.2-1-any.pkg.tar.zst.sig">python-hglib-2.6.2-1-any.pkg.tar.zst.sig</a> 19-Nov-2020 22:29 566
+<a href="python-hglib-2.6.2-2-any.pkg.tar.zst">python-hglib-2.6.2-2-any.pkg.tar.zst</a> 19-Nov-2020 22:31 43K
+<a href="python-hglib-2.6.2-2-any.pkg.tar.zst.sig">python-hglib-2.6.2-2-any.pkg.tar.zst.sig</a> 19-Nov-2020 22:31 566
+<a href="python-hglib-2.6.2-3-any.pkg.tar.zst">python-hglib-2.6.2-3-any.pkg.tar.zst</a> 19-Nov-2020 22:35 43K
+<a href="python-hglib-2.6.2-3-any.pkg.tar.zst.sig">python-hglib-2.6.2-3-any.pkg.tar.zst.sig</a> 19-Nov-2020 22:35 566
+<a href="python-hglib-2.6.2-4-any.pkg.tar.zst">python-hglib-2.6.2-4-any.pkg.tar.zst</a> 03-Dec-2021 00:44 43K
+<a href="python-hglib-2.6.2-4-any.pkg.tar.zst.sig">python-hglib-2.6.2-4-any.pkg.tar.zst.sig</a> 03-Dec-2021 00:44 310
+</pre><hr></body>
+</html>""" > https_archive.archlinux.org/packages_p_python-hglib
+
+echo -e """<html>
+<head><title>Index of /packages/g/gnome-code-assistance/</title></head>
+<body>
+<h1>Index of /packages/g/gnome-code-assistance/</h1><hr><pre><a href="../">../</a>
+<a href="gnome-code-assistance-1%3A3.16.1%2B15%2Bg0fd8b5f-1-x86_64.pkg.tar.xz">gnome-code-assistance-1:3.16.1+15+g0fd8b5f-1-x8..&gt;</a> 10-Nov-2019 20:55 2M
+<a href="gnome-code-assistance-1%3A3.16.1%2B15%2Bg0fd8b5f-1-x86_64.pkg.tar.xz.sig">gnome-code-assistance-1:3.16.1+15+g0fd8b5f-1-x8..&gt;</a> 10-Nov-2019 20:56 310
+<a href="gnome-code-assistance-1%3A3.16.1%2B15%2Bg0fd8b5f-2-x86_64.pkg.tar.zst">gnome-code-assistance-1:3.16.1+15+g0fd8b5f-2-x8..&gt;</a> 28-Mar-2020 15:58 2M
+<a href="gnome-code-assistance-1%3A3.16.1%2B15%2Bg0fd8b5f-2-x86_64.pkg.tar.zst.sig">gnome-code-assistance-1:3.16.1+15+g0fd8b5f-2-x8..&gt;</a> 28-Mar-2020 15:58 310
+<a href="gnome-code-assistance-1%3A3.16.1%2B15%2Bg0fd8b5f-3-x86_64.pkg.tar.zst">gnome-code-assistance-1:3.16.1+15+g0fd8b5f-3-x8..&gt;</a> 05-Jul-2020 15:28 2M
+<a href="gnome-code-assistance-1%3A3.16.1%2B15%2Bg0fd8b5f-3-x86_64.pkg.tar.zst.sig">gnome-code-assistance-1:3.16.1+15+g0fd8b5f-3-x8..&gt;</a> 05-Jul-2020 15:28 590
+<a href="gnome-code-assistance-1%3A3.16.1%2B15%2Bg0fd8b5f-4-x86_64.pkg.tar.zst">gnome-code-assistance-1:3.16.1+15+g0fd8b5f-4-x8..&gt;</a> 12-Nov-2020 17:28 2M
+<a href="gnome-code-assistance-1%3A3.16.1%2B15%2Bg0fd8b5f-4-x86_64.pkg.tar.zst.sig">gnome-code-assistance-1:3.16.1+15+g0fd8b5f-4-x8..&gt;</a> 12-Nov-2020 17:29 310
+<a href="gnome-code-assistance-2%3A3.16.1%2B14%2Bgaad6437-1-x86_64.pkg.tar.zst">gnome-code-assistance-2:3.16.1+14+gaad6437-1-x8..&gt;</a> 24-Feb-2021 16:30 2M
+<a href="gnome-code-assistance-2%3A3.16.1%2B14%2Bgaad6437-1-x86_64.pkg.tar.zst.sig">gnome-code-assistance-2:3.16.1+14+gaad6437-1-x8..&gt;</a> 24-Feb-2021 16:30 141
+<a href="gnome-code-assistance-2%3A3.16.1%2B14%2Bgaad6437-2-x86_64.pkg.tar.zst">gnome-code-assistance-2:3.16.1+14+gaad6437-2-x8..&gt;</a> 02-Dec-2021 23:36 2M
+<a href="gnome-code-assistance-2%3A3.16.1%2B14%2Bgaad6437-2-x86_64.pkg.tar.zst.sig">gnome-code-assistance-2:3.16.1+14+gaad6437-2-x8..&gt;</a> 02-Dec-2021 23:36 566
+<a href="gnome-code-assistance-3.16.1%2B14%2Bgaad6437-1-x86_64.pkg.tar.xz">gnome-code-assistance-3.16.1+14+gaad6437-1-x86_..&gt;</a> 15-Mar-2019 19:23 2M
+<a href="gnome-code-assistance-3.16.1%2B14%2Bgaad6437-1-x86_64.pkg.tar.xz.sig">gnome-code-assistance-3.16.1+14+gaad6437-1-x86_..&gt;</a> 15-Mar-2019 19:23 310
+<a href="gnome-code-assistance-3.16.1%2B14%2Bgaad6437-2-x86_64.pkg.tar.xz">gnome-code-assistance-3.16.1+14+gaad6437-2-x86_..&gt;</a> 24-Aug-2019 20:05 2M
+<a href="gnome-code-assistance-3.16.1%2B14%2Bgaad6437-2-x86_64.pkg.tar.xz.sig">gnome-code-assistance-3.16.1+14+gaad6437-2-x86_..&gt;</a> 24-Aug-2019 20:05 310
+<a href="gnome-code-assistance-3.16.1%2B15%2Bgb9ffc4d-1-x86_64.pkg.tar.xz">gnome-code-assistance-3.16.1+15+gb9ffc4d-1-x86_..&gt;</a> 25-Aug-2019 20:55 2M
+<a href="gnome-code-assistance-3.16.1%2B15%2Bgb9ffc4d-1-x86_64.pkg.tar.xz.sig">gnome-code-assistance-3.16.1+15+gb9ffc4d-1-x86_..&gt;</a> 25-Aug-2019 20:55 310
+<a href="gnome-code-assistance-3%3A3.16.1%2Br14%2Bgaad6437-1-x86_64.pkg.tar.zst">gnome-code-assistance-3:3.16.1+r14+gaad6437-1-x..&gt;</a> 18-May-2022 17:23 2M
+<a href="gnome-code-assistance-3%3A3.16.1%2Br14%2Bgaad6437-1-x86_64.pkg.tar.zst.sig">gnome-code-assistance-3:3.16.1+r14+gaad6437-1-x..&gt;</a> 18-May-2022 17:23 141
+</pre><hr></body>
+</html>""" > 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
--- /dev/null
+++ b/swh/lister/arch/tests/data/https_archive.archlinux.org/packages_d_dialog
@@ -0,0 +1,52 @@
+<html>
+<head><title>Index of /packages/d/dialog/</title></head>
+<body>
+<h1>Index of /packages/d/dialog/</h1><hr><pre><a href=../>../</a>
+<a href=dialog-1%3A1.3_20190211-1-x86_64.pkg.tar.xz>dialog-1:1.3_20190211-1-x86_64.pkg.tar.xz</a> 13-Feb-2019 08:36 180K
+<a href=dialog-1%3A1.3_20190211-1-x86_64.pkg.tar.xz.sig>dialog-1:1.3_20190211-1-x86_64.pkg.tar.xz.sig</a> 13-Feb-2019 08:36 310
+<a href=dialog-1%3A1.3_20190724-1-x86_64.pkg.tar.xz>dialog-1:1.3_20190724-1-x86_64.pkg.tar.xz</a> 26-Jul-2019 21:39 180K
+<a href=dialog-1%3A1.3_20190724-1-x86_64.pkg.tar.xz.sig>dialog-1:1.3_20190724-1-x86_64.pkg.tar.xz.sig</a> 26-Jul-2019 21:43 310
+<a href=dialog-1%3A1.3_20190728-1-x86_64.pkg.tar.xz>dialog-1:1.3_20190728-1-x86_64.pkg.tar.xz</a> 29-Jul-2019 12:10 180K
+<a href=dialog-1%3A1.3_20190728-1-x86_64.pkg.tar.xz.sig>dialog-1:1.3_20190728-1-x86_64.pkg.tar.xz.sig</a> 29-Jul-2019 12:10 310
+<a href=dialog-1%3A1.3_20190806-1-x86_64.pkg.tar.xz>dialog-1:1.3_20190806-1-x86_64.pkg.tar.xz</a> 07-Aug-2019 04:19 182K
+<a href=dialog-1%3A1.3_20190806-1-x86_64.pkg.tar.xz.sig>dialog-1:1.3_20190806-1-x86_64.pkg.tar.xz.sig</a> 07-Aug-2019 04:19 310
+<a href=dialog-1%3A1.3_20190808-1-x86_64.pkg.tar.xz>dialog-1:1.3_20190808-1-x86_64.pkg.tar.xz</a> 09-Aug-2019 22:49 182K
+<a href=dialog-1%3A1.3_20190808-1-x86_64.pkg.tar.xz.sig>dialog-1:1.3_20190808-1-x86_64.pkg.tar.xz.sig</a> 09-Aug-2019 22:50 310
+<a href=dialog-1%3A1.3_20191110-1-x86_64.pkg.tar.xz>dialog-1:1.3_20191110-1-x86_64.pkg.tar.xz</a> 11-Nov-2019 11:15 183K
+<a href=dialog-1%3A1.3_20191110-1-x86_64.pkg.tar.xz.sig>dialog-1:1.3_20191110-1-x86_64.pkg.tar.xz.sig</a> 11-Nov-2019 11:17 310
+<a href=dialog-1%3A1.3_20191110-2-x86_64.pkg.tar.xz>dialog-1:1.3_20191110-2-x86_64.pkg.tar.xz</a> 13-Nov-2019 17:40 183K
+<a href=dialog-1%3A1.3_20191110-2-x86_64.pkg.tar.xz.sig>dialog-1:1.3_20191110-2-x86_64.pkg.tar.xz.sig</a> 13-Nov-2019 17:41 310
+<a href=dialog-1%3A1.3_20191209-1-x86_64.pkg.tar.xz>dialog-1:1.3_20191209-1-x86_64.pkg.tar.xz</a> 10-Dec-2019 09:56 183K
+<a href=dialog-1%3A1.3_20191209-1-x86_64.pkg.tar.xz.sig>dialog-1:1.3_20191209-1-x86_64.pkg.tar.xz.sig</a> 10-Dec-2019 09:57 310
+<a href=dialog-1%3A1.3_20191210-1-x86_64.pkg.tar.xz>dialog-1:1.3_20191210-1-x86_64.pkg.tar.xz</a> 12-Dec-2019 15:55 184K
+<a href=dialog-1%3A1.3_20191210-1-x86_64.pkg.tar.xz.sig>dialog-1:1.3_20191210-1-x86_64.pkg.tar.xz.sig</a> 12-Dec-2019 15:56 310
+<a href=dialog-1%3A1.3_20200228-1-x86_64.pkg.tar.zst>dialog-1:1.3_20200228-1-x86_64.pkg.tar.zst</a> 06-Mar-2020 02:21 196K
+<a href=dialog-1%3A1.3_20200228-1-x86_64.pkg.tar.zst.sig>dialog-1:1.3_20200228-1-x86_64.pkg.tar.zst.sig</a> 06-Mar-2020 02:22 310
+<a href=dialog-1%3A1.3_20200327-1-x86_64.pkg.tar.zst>dialog-1:1.3_20200327-1-x86_64.pkg.tar.zst</a> 29-Mar-2020 17:08 196K
+<a href=dialog-1%3A1.3_20200327-1-x86_64.pkg.tar.zst.sig>dialog-1:1.3_20200327-1-x86_64.pkg.tar.zst.sig</a> 29-Mar-2020 17:09 310
+<a href=dialog-1%3A1.3_20201126-1-x86_64.pkg.tar.zst>dialog-1:1.3_20201126-1-x86_64.pkg.tar.zst</a> 27-Nov-2020 12:19 199K
+<a href=dialog-1%3A1.3_20201126-1-x86_64.pkg.tar.zst.sig>dialog-1:1.3_20201126-1-x86_64.pkg.tar.zst.sig</a> 27-Nov-2020 12:20 310
+<a href=dialog-1%3A1.3_20210117-1-x86_64.pkg.tar.zst>dialog-1:1.3_20210117-1-x86_64.pkg.tar.zst</a> 18-Jan-2021 18:05 200K
+<a href=dialog-1%3A1.3_20210117-1-x86_64.pkg.tar.zst.sig>dialog-1:1.3_20210117-1-x86_64.pkg.tar.zst.sig</a> 18-Jan-2021 18:05 310
+<a href=dialog-1%3A1.3_20210306-1-x86_64.pkg.tar.zst>dialog-1:1.3_20210306-1-x86_64.pkg.tar.zst</a> 07-Mar-2021 11:40 201K
+<a href=dialog-1%3A1.3_20210306-1-x86_64.pkg.tar.zst.sig>dialog-1:1.3_20210306-1-x86_64.pkg.tar.zst.sig</a> 07-Mar-2021 11:41 310
+<a href=dialog-1%3A1.3_20210319-1-x86_64.pkg.tar.zst>dialog-1:1.3_20210319-1-x86_64.pkg.tar.zst</a> 20-Mar-2021 00:12 201K
+<a href=dialog-1%3A1.3_20210319-1-x86_64.pkg.tar.zst.sig>dialog-1:1.3_20210319-1-x86_64.pkg.tar.zst.sig</a> 20-Mar-2021 00:13 310
+<a href=dialog-1%3A1.3_20210324-1-x86_64.pkg.tar.zst>dialog-1:1.3_20210324-1-x86_64.pkg.tar.zst</a> 26-Mar-2021 17:53 201K
+<a href=dialog-1%3A1.3_20210324-1-x86_64.pkg.tar.zst.sig>dialog-1:1.3_20210324-1-x86_64.pkg.tar.zst.sig</a> 26-Mar-2021 17:53 310
+<a href=dialog-1%3A1.3_20210509-1-x86_64.pkg.tar.zst>dialog-1:1.3_20210509-1-x86_64.pkg.tar.zst</a> 16-May-2021 02:04 198K
+<a href=dialog-1%3A1.3_20210509-1-x86_64.pkg.tar.zst.sig>dialog-1:1.3_20210509-1-x86_64.pkg.tar.zst.sig</a> 16-May-2021 02:04 310
+<a href=dialog-1%3A1.3_20210530-1-x86_64.pkg.tar.zst>dialog-1:1.3_20210530-1-x86_64.pkg.tar.zst</a> 31-May-2021 14:59 198K
+<a href=dialog-1%3A1.3_20210530-1-x86_64.pkg.tar.zst.sig>dialog-1:1.3_20210530-1-x86_64.pkg.tar.zst.sig</a> 31-May-2021 15:00 310
+<a href=dialog-1%3A1.3_20210621-1-x86_64.pkg.tar.zst>dialog-1:1.3_20210621-1-x86_64.pkg.tar.zst</a> 23-Jun-2021 02:59 199K
+<a href=dialog-1%3A1.3_20210621-1-x86_64.pkg.tar.zst.sig>dialog-1:1.3_20210621-1-x86_64.pkg.tar.zst.sig</a> 23-Jun-2021 03:00 310
+<a href=dialog-1%3A1.3_20211107-1-x86_64.pkg.tar.zst>dialog-1:1.3_20211107-1-x86_64.pkg.tar.zst</a> 09-Nov-2021 14:06 197K
+<a href=dialog-1%3A1.3_20211107-1-x86_64.pkg.tar.zst.sig>dialog-1:1.3_20211107-1-x86_64.pkg.tar.zst.sig</a> 09-Nov-2021 14:13 310
+<a href=dialog-1%3A1.3_20211214-1-x86_64.pkg.tar.zst>dialog-1:1.3_20211214-1-x86_64.pkg.tar.zst</a> 14-Dec-2021 09:26 197K
+<a href=dialog-1%3A1.3_20211214-1-x86_64.pkg.tar.zst.sig>dialog-1:1.3_20211214-1-x86_64.pkg.tar.zst.sig</a> 14-Dec-2021 09:27 310
+<a href=dialog-1%3A1.3_20220117-1-x86_64.pkg.tar.zst>dialog-1:1.3_20220117-1-x86_64.pkg.tar.zst</a> 19-Jan-2022 09:56 199K
+<a href=dialog-1%3A1.3_20220117-1-x86_64.pkg.tar.zst.sig>dialog-1:1.3_20220117-1-x86_64.pkg.tar.zst.sig</a> 19-Jan-2022 09:56 310
+<a href=dialog-1%3A1.3_20220414-1-x86_64.pkg.tar.zst>dialog-1:1.3_20220414-1-x86_64.pkg.tar.zst</a> 16-Apr-2022 03:59 198K
+<a href=dialog-1%3A1.3_20220414-1-x86_64.pkg.tar.zst.sig>dialog-1:1.3_20220414-1-x86_64.pkg.tar.zst.sig</a> 16-Apr-2022 03:59 310
+</pre><hr></body>
+</html>
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
--- /dev/null
+++ b/swh/lister/arch/tests/data/https_archive.archlinux.org/packages_g_gnome-code-assistance
@@ -0,0 +1,26 @@
+<html>
+<head><title>Index of /packages/g/gnome-code-assistance/</title></head>
+<body>
+<h1>Index of /packages/g/gnome-code-assistance/</h1><hr><pre><a href=../>../</a>
+<a href=gnome-code-assistance-1%3A3.16.1%2B15%2Bg0fd8b5f-1-x86_64.pkg.tar.xz>gnome-code-assistance-1:3.16.1+15+g0fd8b5f-1-x8..&gt;</a> 10-Nov-2019 20:55 2M
+<a href=gnome-code-assistance-1%3A3.16.1%2B15%2Bg0fd8b5f-1-x86_64.pkg.tar.xz.sig>gnome-code-assistance-1:3.16.1+15+g0fd8b5f-1-x8..&gt;</a> 10-Nov-2019 20:56 310
+<a href=gnome-code-assistance-1%3A3.16.1%2B15%2Bg0fd8b5f-2-x86_64.pkg.tar.zst>gnome-code-assistance-1:3.16.1+15+g0fd8b5f-2-x8..&gt;</a> 28-Mar-2020 15:58 2M
+<a href=gnome-code-assistance-1%3A3.16.1%2B15%2Bg0fd8b5f-2-x86_64.pkg.tar.zst.sig>gnome-code-assistance-1:3.16.1+15+g0fd8b5f-2-x8..&gt;</a> 28-Mar-2020 15:58 310
+<a href=gnome-code-assistance-1%3A3.16.1%2B15%2Bg0fd8b5f-3-x86_64.pkg.tar.zst>gnome-code-assistance-1:3.16.1+15+g0fd8b5f-3-x8..&gt;</a> 05-Jul-2020 15:28 2M
+<a href=gnome-code-assistance-1%3A3.16.1%2B15%2Bg0fd8b5f-3-x86_64.pkg.tar.zst.sig>gnome-code-assistance-1:3.16.1+15+g0fd8b5f-3-x8..&gt;</a> 05-Jul-2020 15:28 590
+<a href=gnome-code-assistance-1%3A3.16.1%2B15%2Bg0fd8b5f-4-x86_64.pkg.tar.zst>gnome-code-assistance-1:3.16.1+15+g0fd8b5f-4-x8..&gt;</a> 12-Nov-2020 17:28 2M
+<a href=gnome-code-assistance-1%3A3.16.1%2B15%2Bg0fd8b5f-4-x86_64.pkg.tar.zst.sig>gnome-code-assistance-1:3.16.1+15+g0fd8b5f-4-x8..&gt;</a> 12-Nov-2020 17:29 310
+<a href=gnome-code-assistance-2%3A3.16.1%2B14%2Bgaad6437-1-x86_64.pkg.tar.zst>gnome-code-assistance-2:3.16.1+14+gaad6437-1-x8..&gt;</a> 24-Feb-2021 16:30 2M
+<a href=gnome-code-assistance-2%3A3.16.1%2B14%2Bgaad6437-1-x86_64.pkg.tar.zst.sig>gnome-code-assistance-2:3.16.1+14+gaad6437-1-x8..&gt;</a> 24-Feb-2021 16:30 141
+<a href=gnome-code-assistance-2%3A3.16.1%2B14%2Bgaad6437-2-x86_64.pkg.tar.zst>gnome-code-assistance-2:3.16.1+14+gaad6437-2-x8..&gt;</a> 02-Dec-2021 23:36 2M
+<a href=gnome-code-assistance-2%3A3.16.1%2B14%2Bgaad6437-2-x86_64.pkg.tar.zst.sig>gnome-code-assistance-2:3.16.1+14+gaad6437-2-x8..&gt;</a> 02-Dec-2021 23:36 566
+<a href=gnome-code-assistance-3.16.1%2B14%2Bgaad6437-1-x86_64.pkg.tar.xz>gnome-code-assistance-3.16.1+14+gaad6437-1-x86_..&gt;</a> 15-Mar-2019 19:23 2M
+<a href=gnome-code-assistance-3.16.1%2B14%2Bgaad6437-1-x86_64.pkg.tar.xz.sig>gnome-code-assistance-3.16.1+14+gaad6437-1-x86_..&gt;</a> 15-Mar-2019 19:23 310
+<a href=gnome-code-assistance-3.16.1%2B14%2Bgaad6437-2-x86_64.pkg.tar.xz>gnome-code-assistance-3.16.1+14+gaad6437-2-x86_..&gt;</a> 24-Aug-2019 20:05 2M
+<a href=gnome-code-assistance-3.16.1%2B14%2Bgaad6437-2-x86_64.pkg.tar.xz.sig>gnome-code-assistance-3.16.1+14+gaad6437-2-x86_..&gt;</a> 24-Aug-2019 20:05 310
+<a href=gnome-code-assistance-3.16.1%2B15%2Bgb9ffc4d-1-x86_64.pkg.tar.xz>gnome-code-assistance-3.16.1+15+gb9ffc4d-1-x86_..&gt;</a> 25-Aug-2019 20:55 2M
+<a href=gnome-code-assistance-3.16.1%2B15%2Bgb9ffc4d-1-x86_64.pkg.tar.xz.sig>gnome-code-assistance-3.16.1+15+gb9ffc4d-1-x86_..&gt;</a> 25-Aug-2019 20:55 310
+<a href=gnome-code-assistance-3%3A3.16.1%2Br14%2Bgaad6437-1-x86_64.pkg.tar.zst>gnome-code-assistance-3:3.16.1+r14+gaad6437-1-x..&gt;</a> 18-May-2022 17:23 2M
+<a href=gnome-code-assistance-3%3A3.16.1%2Br14%2Bgaad6437-1-x86_64.pkg.tar.zst.sig>gnome-code-assistance-3:3.16.1+r14+gaad6437-1-x..&gt;</a> 18-May-2022 17:23 141
+</pre><hr></body>
+</html>
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
--- /dev/null
+++ b/swh/lister/arch/tests/data/https_archive.archlinux.org/packages_g_gzip
@@ -0,0 +1,16 @@
+<html>
+<head><title>Index of /packages/g/gzip/</title></head>
+<body>
+<h1>Index of /packages/g/gzip/</h1><hr><pre><a href=../>../</a>
+<a href=gzip-1.10-1-x86_64.pkg.tar.xz>gzip-1.10-1-x86_64.pkg.tar.xz</a> 30-Dec-2018 18:38 78K
+<a href=gzip-1.10-1-x86_64.pkg.tar.xz.sig>gzip-1.10-1-x86_64.pkg.tar.xz.sig</a> 30-Dec-2018 18:38 558
+<a href=gzip-1.10-2-x86_64.pkg.tar.xz>gzip-1.10-2-x86_64.pkg.tar.xz</a> 06-Oct-2019 16:02 78K
+<a href=gzip-1.10-2-x86_64.pkg.tar.xz.sig>gzip-1.10-2-x86_64.pkg.tar.xz.sig</a> 06-Oct-2019 16:02 558
+<a href=gzip-1.10-3-x86_64.pkg.tar.xz>gzip-1.10-3-x86_64.pkg.tar.xz</a> 13-Nov-2019 15:55 78K
+<a href=gzip-1.10-3-x86_64.pkg.tar.xz.sig>gzip-1.10-3-x86_64.pkg.tar.xz.sig</a> 13-Nov-2019 15:55 566
+<a href=gzip-1.11-1-x86_64.pkg.tar.zst>gzip-1.11-1-x86_64.pkg.tar.zst</a> 04-Sep-2021 02:02 82K
+<a href=gzip-1.11-1-x86_64.pkg.tar.zst.sig>gzip-1.11-1-x86_64.pkg.tar.zst.sig</a> 04-Sep-2021 02:02 558
+<a href=gzip-1.12-1-x86_64.pkg.tar.zst>gzip-1.12-1-x86_64.pkg.tar.zst</a> 07-Apr-2022 17:35 80K
+<a href=gzip-1.12-1-x86_64.pkg.tar.zst.sig>gzip-1.12-1-x86_64.pkg.tar.zst.sig</a> 07-Apr-2022 17:35 566
+</pre><hr></body>
+</html>
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
--- /dev/null
+++ b/swh/lister/arch/tests/data/https_archive.archlinux.org/packages_l_libasyncns
@@ -0,0 +1,12 @@
+<html>
+<head><title>Index of /packages/l/libasyncns/</title></head>
+<body>
+<h1>Index of /packages/l/libasyncns/</h1><hr><pre><a href=../>../</a>
+<a href=libasyncns-0.8%2B3%2Bg68cd5af-2-x86_64.pkg.tar.xz>libasyncns-0.8+3+g68cd5af-2-x86_64.pkg.tar.xz</a> 09-Nov-2018 23:39 16K
+<a href=libasyncns-0.8%2B3%2Bg68cd5af-2-x86_64.pkg.tar.xz.sig>libasyncns-0.8+3+g68cd5af-2-x86_64.pkg.tar.xz.sig</a> 09-Nov-2018 23:39 310
+<a href=libasyncns-0.8%2B3%2Bg68cd5af-3-x86_64.pkg.tar.zst>libasyncns-0.8+3+g68cd5af-3-x86_64.pkg.tar.zst</a> 19-May-2020 08:28 17K
+<a href=libasyncns-0.8%2B3%2Bg68cd5af-3-x86_64.pkg.tar.zst.sig>libasyncns-0.8+3+g68cd5af-3-x86_64.pkg.tar.zst.sig</a> 19-May-2020 08:28 566
+<a href=libasyncns-1%3A0.8%2Br3%2Bg68cd5af-1-x86_64.pkg.tar.zst>libasyncns-1:0.8+r3+g68cd5af-1-x86_64.pkg.tar.zst</a> 18-May-2022 17:23 17K
+<a href=libasyncns-1%3A0.8%2Br3%2Bg68cd5af-1-x86_64.pkg.tar.zst.sig>libasyncns-1:0.8+r3+g68cd5af-1-x86_64.pkg.tar.z..&gt;</a> 18-May-2022 17:23 141
+</pre><hr></body>
+</html>
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
--- /dev/null
+++ b/swh/lister/arch/tests/data/https_archive.archlinux.org/packages_m_mercurial
@@ -0,0 +1,97 @@
+
+<html>
+<head><title>Index of /packages/m/mercurial/</title></head>
+<body>
+<h1>Index of /packages/m/mercurial/</h1><hr><pre><a href=../>../</a>
+<a href=mercurial-4.8.2-1-x86_64.pkg.tar.xz>mercurial-4.8.2-1-x86_64.pkg.tar.xz</a> 15-Jan-2019 20:31 4M
+<a href=mercurial-4.8.2-1-x86_64.pkg.tar.xz.sig>mercurial-4.8.2-1-x86_64.pkg.tar.xz.sig</a> 15-Jan-2019 20:31 310
+<a href=mercurial-4.9-1-x86_64.pkg.tar.xz>mercurial-4.9-1-x86_64.pkg.tar.xz</a> 12-Feb-2019 06:15 4M
+<a href=mercurial-4.9-1-x86_64.pkg.tar.xz.sig>mercurial-4.9-1-x86_64.pkg.tar.xz.sig</a> 12-Feb-2019 06:15 310
+<a href=mercurial-4.9.1-1-x86_64.pkg.tar.xz>mercurial-4.9.1-1-x86_64.pkg.tar.xz</a> 30-Mar-2019 17:40 4M
+<a href=mercurial-4.9.1-1-x86_64.pkg.tar.xz.sig>mercurial-4.9.1-1-x86_64.pkg.tar.xz.sig</a> 30-Mar-2019 17:40 310
+<a href=mercurial-5.0-1-x86_64.pkg.tar.xz>mercurial-5.0-1-x86_64.pkg.tar.xz</a> 10-May-2019 08:44 4M
+<a href=mercurial-5.0-1-x86_64.pkg.tar.xz.sig>mercurial-5.0-1-x86_64.pkg.tar.xz.sig</a> 10-May-2019 08:44 310
+<a href=mercurial-5.0.1-1-x86_64.pkg.tar.xz>mercurial-5.0.1-1-x86_64.pkg.tar.xz</a> 10-Jun-2019 18:05 4M
+<a href=mercurial-5.0.1-1-x86_64.pkg.tar.xz.sig>mercurial-5.0.1-1-x86_64.pkg.tar.xz.sig</a> 10-Jun-2019 18:05 310
+<a href=mercurial-5.0.2-1-x86_64.pkg.tar.xz>mercurial-5.0.2-1-x86_64.pkg.tar.xz</a> 10-Jul-2019 04:58 4M
+<a href=mercurial-5.0.2-1-x86_64.pkg.tar.xz.sig>mercurial-5.0.2-1-x86_64.pkg.tar.xz.sig</a> 10-Jul-2019 04:58 310
+<a href=mercurial-5.1-1-x86_64.pkg.tar.xz>mercurial-5.1-1-x86_64.pkg.tar.xz</a> 17-Aug-2019 19:58 4M
+<a href=mercurial-5.1-1-x86_64.pkg.tar.xz.sig>mercurial-5.1-1-x86_64.pkg.tar.xz.sig</a> 17-Aug-2019 19:58 310
+<a href=mercurial-5.1.2-1-x86_64.pkg.tar.xz>mercurial-5.1.2-1-x86_64.pkg.tar.xz</a> 08-Oct-2019 08:38 4M
+<a href=mercurial-5.1.2-1-x86_64.pkg.tar.xz.sig>mercurial-5.1.2-1-x86_64.pkg.tar.xz.sig</a> 08-Oct-2019 08:38 310
+<a href=mercurial-5.2-1-x86_64.pkg.tar.xz>mercurial-5.2-1-x86_64.pkg.tar.xz</a> 28-Nov-2019 06:41 4M
+<a href=mercurial-5.2-1-x86_64.pkg.tar.xz.sig>mercurial-5.2-1-x86_64.pkg.tar.xz.sig</a> 28-Nov-2019 06:41 310
+<a href=mercurial-5.2.1-1-x86_64.pkg.tar.zst>mercurial-5.2.1-1-x86_64.pkg.tar.zst</a> 06-Jan-2020 12:35 4M
+<a href=mercurial-5.2.1-1-x86_64.pkg.tar.zst.sig>mercurial-5.2.1-1-x86_64.pkg.tar.zst.sig</a> 06-Jan-2020 12:35 310
+<a href=mercurial-5.2.2-1-x86_64.pkg.tar.zst>mercurial-5.2.2-1-x86_64.pkg.tar.zst</a> 15-Jan-2020 14:07 5M
+<a href=mercurial-5.2.2-1-x86_64.pkg.tar.zst.sig>mercurial-5.2.2-1-x86_64.pkg.tar.zst.sig</a> 15-Jan-2020 14:07 310
+<a href=mercurial-5.2.2-2-x86_64.pkg.tar.zst>mercurial-5.2.2-2-x86_64.pkg.tar.zst</a> 30-Jan-2020 20:05 4M
+<a href=mercurial-5.2.2-2-x86_64.pkg.tar.zst.sig>mercurial-5.2.2-2-x86_64.pkg.tar.zst.sig</a> 30-Jan-2020 20:05 310
+<a href=mercurial-5.3-1-x86_64.pkg.tar.zst>mercurial-5.3-1-x86_64.pkg.tar.zst</a> 13-Feb-2020 21:40 5M
+<a href=mercurial-5.3-1-x86_64.pkg.tar.zst.sig>mercurial-5.3-1-x86_64.pkg.tar.zst.sig</a> 13-Feb-2020 21:40 566
+<a href=mercurial-5.3.1-1-x86_64.pkg.tar.zst>mercurial-5.3.1-1-x86_64.pkg.tar.zst</a> 07-Mar-2020 23:58 4M
+<a href=mercurial-5.3.1-1-x86_64.pkg.tar.zst.sig>mercurial-5.3.1-1-x86_64.pkg.tar.zst.sig</a> 07-Mar-2020 23:58 310
+<a href=mercurial-5.3.2-1-x86_64.pkg.tar.zst>mercurial-5.3.2-1-x86_64.pkg.tar.zst</a> 05-Apr-2020 17:48 4M
+<a href=mercurial-5.3.2-1-x86_64.pkg.tar.zst.sig>mercurial-5.3.2-1-x86_64.pkg.tar.zst.sig</a> 05-Apr-2020 17:48 310
+<a href=mercurial-5.4-1-x86_64.pkg.tar.zst>mercurial-5.4-1-x86_64.pkg.tar.zst</a> 10-May-2020 17:19 5M
+<a href=mercurial-5.4-1-x86_64.pkg.tar.zst.sig>mercurial-5.4-1-x86_64.pkg.tar.zst.sig</a> 10-May-2020 17:19 310
+<a href=mercurial-5.4-2-x86_64.pkg.tar.zst>mercurial-5.4-2-x86_64.pkg.tar.zst</a> 04-Jun-2020 13:38 5M
+<a href=mercurial-5.4-2-x86_64.pkg.tar.zst.sig>mercurial-5.4-2-x86_64.pkg.tar.zst.sig</a> 04-Jun-2020 13:38 310
+<a href=mercurial-5.4.1-1-x86_64.pkg.tar.zst>mercurial-5.4.1-1-x86_64.pkg.tar.zst</a> 06-Jun-2020 12:28 5M
+<a href=mercurial-5.4.1-1-x86_64.pkg.tar.zst.sig>mercurial-5.4.1-1-x86_64.pkg.tar.zst.sig</a> 06-Jun-2020 12:28 310
+<a href=mercurial-5.4.2-1-x86_64.pkg.tar.zst>mercurial-5.4.2-1-x86_64.pkg.tar.zst</a> 02-Jul-2020 21:35 5M
+<a href=mercurial-5.4.2-1-x86_64.pkg.tar.zst.sig>mercurial-5.4.2-1-x86_64.pkg.tar.zst.sig</a> 02-Jul-2020 21:35 566
+<a href=mercurial-5.5-1-x86_64.pkg.tar.zst>mercurial-5.5-1-x86_64.pkg.tar.zst</a> 05-Aug-2020 10:39 5M
+<a href=mercurial-5.5-1-x86_64.pkg.tar.zst.sig>mercurial-5.5-1-x86_64.pkg.tar.zst.sig</a> 05-Aug-2020 10:39 310
+<a href=mercurial-5.5.1-1-x86_64.pkg.tar.zst>mercurial-5.5.1-1-x86_64.pkg.tar.zst</a> 03-Sep-2020 19:05 5M
+<a href=mercurial-5.5.1-1-x86_64.pkg.tar.zst.sig>mercurial-5.5.1-1-x86_64.pkg.tar.zst.sig</a> 03-Sep-2020 19:05 310
+<a href=mercurial-5.5.2-1-x86_64.pkg.tar.zst>mercurial-5.5.2-1-x86_64.pkg.tar.zst</a> 07-Oct-2020 20:05 5M
+<a href=mercurial-5.5.2-1-x86_64.pkg.tar.zst.sig>mercurial-5.5.2-1-x86_64.pkg.tar.zst.sig</a> 07-Oct-2020 20:05 310
+<a href=mercurial-5.6-1-x86_64.pkg.tar.zst>mercurial-5.6-1-x86_64.pkg.tar.zst</a> 03-Nov-2020 17:26 5M
+<a href=mercurial-5.6-1-x86_64.pkg.tar.zst.sig>mercurial-5.6-1-x86_64.pkg.tar.zst.sig</a> 03-Nov-2020 17:26 310
+<a href=mercurial-5.6-2-x86_64.pkg.tar.zst>mercurial-5.6-2-x86_64.pkg.tar.zst</a> 09-Nov-2020 16:54 5M
+<a href=mercurial-5.6-2-x86_64.pkg.tar.zst.sig>mercurial-5.6-2-x86_64.pkg.tar.zst.sig</a> 09-Nov-2020 16:54 310
+<a href=mercurial-5.6-3-x86_64.pkg.tar.zst>mercurial-5.6-3-x86_64.pkg.tar.zst</a> 11-Nov-2020 15:20 5M
+<a href=mercurial-5.6-3-x86_64.pkg.tar.zst.sig>mercurial-5.6-3-x86_64.pkg.tar.zst.sig</a> 11-Nov-2020 15:20 310
+<a href=mercurial-5.6.1-1-x86_64.pkg.tar.zst>mercurial-5.6.1-1-x86_64.pkg.tar.zst</a> 05-Dec-2020 12:29 5M
+<a href=mercurial-5.6.1-1-x86_64.pkg.tar.zst.sig>mercurial-5.6.1-1-x86_64.pkg.tar.zst.sig</a> 05-Dec-2020 12:29 310
+<a href=mercurial-5.7-1-x86_64.pkg.tar.zst>mercurial-5.7-1-x86_64.pkg.tar.zst</a> 04-Feb-2021 08:41 5M
+<a href=mercurial-5.7-1-x86_64.pkg.tar.zst.sig>mercurial-5.7-1-x86_64.pkg.tar.zst.sig</a> 04-Feb-2021 08:41 310
+<a href=mercurial-5.7.1-1-x86_64.pkg.tar.zst>mercurial-5.7.1-1-x86_64.pkg.tar.zst</a> 11-Mar-2021 07:51 5M
+<a href=mercurial-5.7.1-1-x86_64.pkg.tar.zst.sig>mercurial-5.7.1-1-x86_64.pkg.tar.zst.sig</a> 11-Mar-2021 07:51 310
+<a href=mercurial-5.8-1-x86_64.pkg.tar.zst>mercurial-5.8-1-x86_64.pkg.tar.zst</a> 04-May-2021 17:55 5M
+<a href=mercurial-5.8-1-x86_64.pkg.tar.zst.sig>mercurial-5.8-1-x86_64.pkg.tar.zst.sig</a> 04-May-2021 17:55 310
+<a href=mercurial-5.8-2-x86_64.pkg.tar.zst>mercurial-5.8-2-x86_64.pkg.tar.zst</a> 08-May-2021 22:08 5M
+<a href=mercurial-5.8-2-x86_64.pkg.tar.zst.sig>mercurial-5.8-2-x86_64.pkg.tar.zst.sig</a> 08-May-2021 22:08 310
+<a href=mercurial-5.8.1-1-x86_64.pkg.tar.zst>mercurial-5.8.1-1-x86_64.pkg.tar.zst</a> 13-Jul-2021 07:04 5M
+<a href=mercurial-5.8.1-1-x86_64.pkg.tar.zst.sig>mercurial-5.8.1-1-x86_64.pkg.tar.zst.sig</a> 13-Jul-2021 07:04 310
+<a href=mercurial-5.9.1-1-x86_64.pkg.tar.zst>mercurial-5.9.1-1-x86_64.pkg.tar.zst</a> 01-Sep-2021 12:48 5M
+<a href=mercurial-5.9.1-1-x86_64.pkg.tar.zst.sig>mercurial-5.9.1-1-x86_64.pkg.tar.zst.sig</a> 01-Sep-2021 12:48 310
+<a href=mercurial-5.9.1-2-x86_64.pkg.tar.zst>mercurial-5.9.1-2-x86_64.pkg.tar.zst</a> 24-Sep-2021 17:39 5M
+<a href=mercurial-5.9.1-2-x86_64.pkg.tar.zst.sig>mercurial-5.9.1-2-x86_64.pkg.tar.zst.sig</a> 24-Sep-2021 17:39 310
+<a href=mercurial-5.9.2-1-x86_64.pkg.tar.zst>mercurial-5.9.2-1-x86_64.pkg.tar.zst</a> 07-Oct-2021 21:52 5M
+<a href=mercurial-5.9.2-1-x86_64.pkg.tar.zst.sig>mercurial-5.9.2-1-x86_64.pkg.tar.zst.sig</a> 07-Oct-2021 21:52 310
+<a href=mercurial-5.9.3-1-x86_64.pkg.tar.zst>mercurial-5.9.3-1-x86_64.pkg.tar.zst</a> 27-Oct-2021 07:20 5M
+<a href=mercurial-5.9.3-1-x86_64.pkg.tar.zst.sig>mercurial-5.9.3-1-x86_64.pkg.tar.zst.sig</a> 27-Oct-2021 07:20 310
+<a href=mercurial-6.0-1-x86_64.pkg.tar.zst>mercurial-6.0-1-x86_64.pkg.tar.zst</a> 25-Nov-2021 17:10 5M
+<a href=mercurial-6.0-1-x86_64.pkg.tar.zst.sig>mercurial-6.0-1-x86_64.pkg.tar.zst.sig</a> 25-Nov-2021 17:10 310
+<a href=mercurial-6.0-2-x86_64.pkg.tar.zst>mercurial-6.0-2-x86_64.pkg.tar.zst</a> 30-Nov-2021 20:53 5M
+<a href=mercurial-6.0-2-x86_64.pkg.tar.zst.sig>mercurial-6.0-2-x86_64.pkg.tar.zst.sig</a> 30-Nov-2021 20:53 310
+<a href=mercurial-6.0-3-x86_64.pkg.tar.zst>mercurial-6.0-3-x86_64.pkg.tar.zst</a> 02-Dec-2021 12:06 5M
+<a href=mercurial-6.0-3-x86_64.pkg.tar.zst.sig>mercurial-6.0-3-x86_64.pkg.tar.zst.sig</a> 02-Dec-2021 12:06 310
+<a href=mercurial-6.0.1-1-x86_64.pkg.tar.zst>mercurial-6.0.1-1-x86_64.pkg.tar.zst</a> 08-Jan-2022 10:07 5M
+<a href=mercurial-6.0.1-1-x86_64.pkg.tar.zst.sig>mercurial-6.0.1-1-x86_64.pkg.tar.zst.sig</a> 08-Jan-2022 10:07 310
+<a href=mercurial-6.0.2-1-x86_64.pkg.tar.zst>mercurial-6.0.2-1-x86_64.pkg.tar.zst</a> 03-Feb-2022 13:28 5M
+<a href=mercurial-6.0.2-1-x86_64.pkg.tar.zst.sig>mercurial-6.0.2-1-x86_64.pkg.tar.zst.sig</a> 03-Feb-2022 13:28 310
+<a href=mercurial-6.0.3-1-x86_64.pkg.tar.zst>mercurial-6.0.3-1-x86_64.pkg.tar.zst</a> 23-Feb-2022 20:50 5M
+<a href=mercurial-6.0.3-1-x86_64.pkg.tar.zst.sig>mercurial-6.0.3-1-x86_64.pkg.tar.zst.sig</a> 23-Feb-2022 20:50 310
+<a href=mercurial-6.1-1-x86_64.pkg.tar.zst>mercurial-6.1-1-x86_64.pkg.tar.zst</a> 03-Mar-2022 18:06 5M
+<a href=mercurial-6.1-1-x86_64.pkg.tar.zst.sig>mercurial-6.1-1-x86_64.pkg.tar.zst.sig</a> 03-Mar-2022 18:06 310
+<a href=mercurial-6.1-2-x86_64.pkg.tar.zst>mercurial-6.1-2-x86_64.pkg.tar.zst</a> 04-Mar-2022 08:37 5M
+<a href=mercurial-6.1-2-x86_64.pkg.tar.zst.sig>mercurial-6.1-2-x86_64.pkg.tar.zst.sig</a> 04-Mar-2022 08:37 310
+<a href=mercurial-6.1.1-1-x86_64.pkg.tar.zst>mercurial-6.1.1-1-x86_64.pkg.tar.zst</a> 07-Apr-2022 18:26 5M
+<a href=mercurial-6.1.1-1-x86_64.pkg.tar.zst.sig>mercurial-6.1.1-1-x86_64.pkg.tar.zst.sig</a> 07-Apr-2022 18:26 310
+<a href=mercurial-6.1.2-1-x86_64.pkg.tar.zst>mercurial-6.1.2-1-x86_64.pkg.tar.zst</a> 07-May-2022 11:03 5M
+<a href=mercurial-6.1.2-1-x86_64.pkg.tar.zst.sig>mercurial-6.1.2-1-x86_64.pkg.tar.zst.sig</a> 07-May-2022 11:03 310
+</pre><hr></body>
+</html>
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
--- /dev/null
+++ b/swh/lister/arch/tests/data/https_archive.archlinux.org/packages_p_python-hglib
@@ -0,0 +1,16 @@
+<html>
+<head><title>Index of /packages/p/python-hglib/</title></head>
+<body>
+<h1>Index of /packages/p/python-hglib/</h1><hr><pre><a href=../>../</a>
+<a href=python-hglib-2.6.1-3-any.pkg.tar.xz>python-hglib-2.6.1-3-any.pkg.tar.xz</a> 06-Nov-2019 14:08 40K
+<a href=python-hglib-2.6.1-3-any.pkg.tar.xz.sig>python-hglib-2.6.1-3-any.pkg.tar.xz.sig</a> 06-Nov-2019 14:08 566
+<a href=python-hglib-2.6.2-1-any.pkg.tar.zst>python-hglib-2.6.2-1-any.pkg.tar.zst</a> 19-Nov-2020 22:29 43K
+<a href=python-hglib-2.6.2-1-any.pkg.tar.zst.sig>python-hglib-2.6.2-1-any.pkg.tar.zst.sig</a> 19-Nov-2020 22:29 566
+<a href=python-hglib-2.6.2-2-any.pkg.tar.zst>python-hglib-2.6.2-2-any.pkg.tar.zst</a> 19-Nov-2020 22:31 43K
+<a href=python-hglib-2.6.2-2-any.pkg.tar.zst.sig>python-hglib-2.6.2-2-any.pkg.tar.zst.sig</a> 19-Nov-2020 22:31 566
+<a href=python-hglib-2.6.2-3-any.pkg.tar.zst>python-hglib-2.6.2-3-any.pkg.tar.zst</a> 19-Nov-2020 22:35 43K
+<a href=python-hglib-2.6.2-3-any.pkg.tar.zst.sig>python-hglib-2.6.2-3-any.pkg.tar.zst.sig</a> 19-Nov-2020 22:35 566
+<a href=python-hglib-2.6.2-4-any.pkg.tar.zst>python-hglib-2.6.2-4-any.pkg.tar.zst</a> 03-Dec-2021 00:44 43K
+<a href=python-hglib-2.6.2-4-any.pkg.tar.zst.sig>python-hglib-2.6.2-4-any.pkg.tar.zst.sig</a> 03-Dec-2021 00:44 310
+</pre><hr></body>
+</html>
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..0000000000000000000000000000000000000000
GIT binary patch
literal 0
Hc$@<O00001
literal 0
Hc$@<O00001
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..0000000000000000000000000000000000000000
GIT binary patch
literal 0
Hc$@<O00001
literal 0
Hc$@<O00001
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..0000000000000000000000000000000000000000
GIT binary patch
literal 0
Hc$@<O00001
literal 0
Hc$@<O00001
diff --git a/swh/lister/arch/tests/data/https_uk.mirror.archlinuxarm.org/aarch64_community_community.files.tar.gz b/swh/lister/arch/tests/data/https_uk.mirror.archlinuxarm.org/aarch64_community_community.files.tar.gz
new file mode 100644
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000
GIT binary patch
literal 0
Hc$@<O00001
literal 0
Hc$@<O00001
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..0000000000000000000000000000000000000000
GIT binary patch
literal 0
Hc$@<O00001
literal 0
Hc$@<O00001
diff --git a/swh/lister/arch/tests/data/https_uk.mirror.archlinuxarm.org/aarch64_extra_extra.files.tar.gz b/swh/lister/arch/tests/data/https_uk.mirror.archlinuxarm.org/aarch64_extra_extra.files.tar.gz
new file mode 100644
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000
GIT binary patch
literal 0
Hc$@<O00001
literal 0
Hc$@<O00001
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..0000000000000000000000000000000000000000
GIT binary patch
literal 0
Hc$@<O00001
literal 0
Hc$@<O00001
diff --git a/swh/lister/arch/tests/data/https_uk.mirror.archlinuxarm.org/armv7h_core_core.files.tar.gz b/swh/lister/arch/tests/data/https_uk.mirror.archlinuxarm.org/armv7h_core_core.files.tar.gz
new file mode 100644
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000
GIT binary patch
literal 0
Hc$@<O00001
literal 0
Hc$@<O00001
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..0000000000000000000000000000000000000000
GIT binary patch
literal 0
Hc$@<O00001
literal 0
Hc$@<O00001
diff --git a/swh/lister/arch/tests/test_lister.py b/swh/lister/arch/tests/test_lister.py
new file mode 100644
--- /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
--- /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()

File Metadata

Mime Type
text/plain
Expires
Wed, Dec 18, 2:16 AM (2 d, 4 h ago)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
3222940

Event Timeline