| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186 |
- File Table v1
- *************
- The set of package files distributed on ``cmake.org`` varies by CMake version.
- One file, named ``cmake-<ver>-files-v1.json``, contains a table of the package
- files available for a given version. Clients may use this to find other files.
- Format
- ------
- The format is a JSON object:
- .. code-block:: json
- {
- "version": {
- "major": 3, "minor": 20, "patch": 0,
- "string": "3.20.0"
- },
- "files": [
- {
- "os": ["...", "..."],
- "architecture": ["...", "..."],
- "class": "...",
- "name": "..."
- }
- ],
- "hashFiles": [
- {
- "algorithm": ["...", "..."],
- "name": "cmake-<version>-<algo>.txt",
- "signature": ["cmake-<version>-<algo>.txt.asc"]
- }
- ]
- }
- The members are:
- ``version``
- A JSON object specifying the version of CMake with members:
- ``major``, ``minor``, ``patch``
- Integer values specifying the major, minor, and patch version components.
- ``suffix``
- A string specifying the version suffix, if any, e.g. ``rc1``.
- ``string``
- A string specifying the full version in the format
- ``<major>.<minor>.<patch>[-<suffix>]``.
- ``files``
- A JSON array of entries corresponding to available package files.
- Each entry is a JSON object containing members:
- ``os``
- A JSON array of strings naming the operating system for which the
- package file is built, possibly using multiple alternative spellings.
- Possible names include:
- ``source``
- Source packages.
- ``Linux``, ``linux``
- Linux packages.
- ``macOS``, ``macos``
- macOS packages.
- ``Windows``, ``windows``
- Windows packages.
- ``architecture``
- A JSON array of strings naming the architecture(s) for which the
- package file is built, possibly using multiple alternative spellings.
- Source packages have an empty list of architectures (``[]``).
- Binary packages have a non-empty list of architectures, with at least
- one name matching the output of ``uname -m`` on corresponding hosts.
- On Windows, architecture names include ``x86_64`` and ``i386``.
- On macOS, universal binary packages list all architectures,
- e.g. ``["arm64","x86_64"]``.
- ``class``
- A JSON string naming the class of package. The value is one of:
- ``archive``
- A tarball or zip archive.
- The extension, such as ``.tar.gz`` or ``.zip``, indicates the format.
- The rest of the file name matches the top-level directory in the archive.
- ``installer``
- An interactive installer.
- ``volume``
- A disk image (``.dmg`` on macOS).
- ``name``
- A JSON string specifying the name of the package file.
- ``macOSmin``
- Optional member that is present on package files for macOS.
- The value is a JSON string specifying the minimum version of macOS
- required to run the binary, e.g. ``"10.13"``.
- ``deprecated``
- Optional member that is present when the package file is deprecated
- and may be removed from the set of package files in later versions.
- The value is a string containing a deprecation message.
- Clients should check this field to warn users when they are using
- a deprecated package file.
- ``hashFiles``
- A JSON array of entries corresponding to files containing cryptographic
- hashes of the package file contents. Each entry is a JSON object
- containing members:
- ``algorithm``
- A JSON array of strings naming a cryptographic hash algorithm, possibly
- using multiple alternative spellings, e.g. ``["sha256", "SHA-256"]``.
- ``name``
- A JSON string specifying the name of the file containing hashes,
- e.g. ``"cmake-<version>-SHA-256.txt"``.
- ``signature``
- A JSON array of strings naming files containing a cryptographic
- signature of the hash file specified by ``name``, e.g.
- ``["cmake-<version>-SHA-256.txt.asc"]``.
- ``deprecated``
- Optional member that is present when the hash algorithm is deprecated
- and may be removed from the set of hash files in later versions.
- The value is a string containing a deprecation message.
- Clients that rely on a specific hash algorithm should check this
- field to determine whether an update is needed.
- ``deprecated``
- Optional member that is present when `File Table v1`_ has been
- deprecated in favor of a newer alternative. The value is a string
- containing a deprecation message. Clients should check this field
- to determine whether they need an update to use a newer alternative.
- The table and hash files are generated by `files.bash`_ from
- the `files-v1.json.in`_ template and the package files themselves.
- .. _`files.bash`: files.bash
- .. _`files-v1.json.in`: files-v1.json.in
- Queries
- -------
- Clients may download the `File Table v1`_ file ``cmake-<ver>-files-v1.json``
- and query it to get the name(s) of specific package files adjacent to it.
- Make queries as specific as possible in order to account for additional
- alternative binaries in future CMake versions.
- For example, one may use ``jq`` queries:
- * To select a Windows binary archive supporting ``x86_64`` hosts::
- .files[] | select((.os[] | . == "windows") and
- (.architecture[] | . == "x86_64") and
- (.class == "archive")) | .name
- * To select a Linux binary archive supporting ``aarch64`` hosts::
- .files[] | select((.os[] | . == "linux") and
- (.architecture[] | . == "aarch64") and
- (.class == "archive")) | .name
- * To select a macOS binary archive supporting ``arm64`` hosts::
- .files[] | select((.os[] | . == "macos") and
- (.architecture[] | . == "arm64") and
- (.class == "archive")) | .name
- * To select a macOS binary archive supporting macOS 10.12 on ``x86_64`` hosts::
- .files[] | select((.os[] | contains("macOS")) and
- (.architecture[] | . == "x86_64") and
- ([.macOSmin] | inside(["10.10", "10.11", "10.12"]))
- ) | .name
- * To select a SHA-256 hash file::
- .hashFiles[] | select(.algorithm[] | . == "SHA-256") | .name
|