Skip to main content

Tool/lib to create and parse manifests

Project description

Device Management manifest CLI tool

This document explains how to install and use the manifest tool.

Note: Please see the changelog for the list of all changes between release versions.

Manifest tool overview

Device Management lets you perform Firmware Over-the-Air (FOTA) updates on managed devices.

On the device side, the firmware update process begins when the device receives an update manifest. The OEM (original equipment manufacturer) or update author cryptographically signs the manifest with a private key paired to a public key that exists on the device, enabling the device to authenticate the manifest before it accepts the firmware update.

Device Management supports:

  • Full updates - Deliver new firmware and install it on the device.
  • Delta updates - The manifest tool executes a diff algorithm that produces a small delta patch file. The client constructs a new firmware image based on the delta patch file and the firmware currently present on the device. This technique saves traffic bandwidth.
  • Combined updates - The FOTA client lets you define a device component as consisting of several subcomponents, which the device always updates together and reports to the Update service on as a single component. For a combined update, the manifest tool creates a combined package, which includes multiple firmware images. The client parses the combined package and installs the images on the device in a predefined order you set on the device.

The manifest-tool Python package includes these command line tools:

Installing the manifest tool

We recommend installing the manifest-tool Python package in a isolated Python virtual environment.

Installing the manifest tool from PyPi

Prerequisites:

pip install manifest-tool

Installing from local source tree

Prerequisites:

$ git clone https://github.com/PelionIoT/manifest-tool.git
$ pip install <path to manifest-tool's local source tree>

Note: Run $ pip install --editable <manifest-tool> to install the package in Python setuptools development mode. For more information, please see the setuptools development mode documentation.

Using the manifest tool

This section explains how to use the CLI tools included in the manifest-tool Python package:

manifest-tool

manifest-tool commands:

Note: Run manifest-tool --help for more information about all commands, or manifest-tool <command> --help for more information about a specific command, including its parameters and how to use them.

manifest-tool create

Creates a manifest. The manifest tool receives a configuration file describing the update type.

Prerequisites

  • An update private key and public key certificate.

    Keep the private key secret because it allows installing new firmware images on your devices.

    Provision the public key to the device.

    • To generate a private key, run:

      $ openssl ecparam -genkey -name prime256v1 -outform PEM -out my.priv.key.pem
      
    • To generate a public key in uncompressed point format (X9.62), use the manifest-tool public-key command.

  • Upload the new firmware image to a server that your devices can access.

  • A configuration file in JSON or YAML format.

    Configuration file format:

    vendor:  # One of "domain" or "vendor-id" fields are expected.
      domain: pelion.com  # FW owner domain. Used to generate a vendor UUID.
                          # Expected to include a dot (".").
      # OR
      vendor-id: fa6b4a53d5ad5fdfbe9de663e4d41ffe  # Valid vendor UUID.
      custom-data-path: my.custom-data.bin # Vendor's custom data file
                                           #  to be passed to the target devices.
                                           # Only relevant for manifest v3 format.
    
    device:  # One of "model-name" or "class-id" fields are expected
      model-name: Smart Slippers  # A device model name. Used to generate a class UUID.
      # OR
      class-id: 327c726ac6e54f7a82fbf1d3beda80f0  # Valid device-class UUID.
    
    priority: 1  # Update priority as will be passed to authorization callback.
                 # Implemented by application on a device side.
    
    payload:
      url: http://some-url.com/files?id=1234  # Address from which the device downloads
                                              #  the candidate payload.
                                              # Obtained by clicking "Copy HTTP URL" on
                                              # the Firmware image details screen
                                              # in Device Management Portal,
                                              #  or by copying the `datafile` attribute.
      file-path: ./my.fw.bin  # Local path to the candidate payload file
                              #  or the delta patch file.
                              # Used for digest calculation & signing.
      format: raw-binary  # One of following:
                          #  raw-binary       - full image update campaigns.
                          #  arm-patch-stream - delta patch update campaigns.
                          # For manifest v3 only:
                          #  combined           - combined update.
                          #  encrypted-raw      - full image update with encrypted image.
                          #  encrypted-combined - combined update with encrypted image.
      encrypted:  # Required for 'encrypted-raw', 'encrypted-patch' formats.
        digest: 3725565932eb5b9fbd5767a3a534cb6a1a87813e0b4a76deacb9b36695c71307
                      # The encrypted payload digest.
                      # Obtained by copying the `encrypted_datafile_checksum` attribute
                      # from the Firmware image details screen in Device Management Portal.
        size: 471304  # The encrypted payload size.
                      # Obtained by copying the `encrypted_datafile_size` attribute
                      # from the Firmware image details screen in Device Management Portal.
    
    component: MAIN  # [Optional] The name of the component to be updated
                     #  only relevant for manifest v3 format.
                     # Set to "MAIN" by default for updating
                     #  the main application image.
    
    sign-image: True  # [Optional] Boolean field accepting True/False values.
                      # Only relevant for manifest v3 format.
                      # When Set to True - 64 Bytes raw signature over the installed
                      #  image will be added to the manifest.
                      # Image signature can be used for cases when device bootloader
                      #  expects to work with signed images (e.g. secure-boot).
                      # Set to False by default.
    

Example

  • For this configuration file, called my.config.yaml:

    vendor:
      domain: pelion.com
    device:
      model-name: Smart Flip-flops
    priority: 1
    payload:
      url: http://some-url.com/files?id=1234
      file-path: ./my.fw.bin
      format: raw-binary
    component: MAIN
    
  • Run:

    manifest-tool create \
        --config my.config.yaml \
        --key my.priv.key.pem \
        --fw-version 1.2.3 \
        --output my.manifest.bin
    

Note: The value of --fw-version refers to the firmware version of the component to be updated. The value can be between 0.0.1 and 999.999.999 and must be greater than the firmware version currently installed on the device.

manifest-tool create-v1

Older versions of Device Management update client use manifest schema V1 and assume the public key is packaged in a x.509 certificate.

Prerequisites

  • An update private key and public key certificate.

    Keep the private key secret because it allows installing new firmware images on your devices.

    Provision the public key to the device.

    • To generate a private key, run:

      $ openssl ecparam -genkey -name prime256v1 -outform PEM -out my.priv.key.pem
      
    • To generate a public key x.509 certificate, run:

      $ openssl req -new -sha256 \
            -key my.priv.key.pem \
            -inform PEM \
            -out my.csr.csr
      $ openssl req -x509 -sha256 \
            -days 7300 \
            -key my.priv.key.pem \
            -in my.csr.csr \
            -outform der \
            -out my.x509.certificate.der
      

      Note: Device Management update client treats the x.509 certificate as a container ONLY and does not enforce its validity - expiration, chain of trust, and so on - although it may be validated by other Device Management components. For production, we recommend creating a certificate with a lifespan greater than the product's expected lifespan (for example, 20 years).

  • Upload the new firmware binary to a server that your devices can access, and obtain the URL for the uploaded firmware binary.

  • A configuration file in JSON or YAML format (same as manifest-tool create).

Example

  • Run:

    manifest-tool create-v1 \
        --config my.config.yaml \
        --key my.priv.key.pem \
        --update-certificate my.x509.certificate.der \
        --output my.manifest.bin
    

manifest-tool parse

Parses and validates existing manifest files.

Prerequisites

  • A manifest file (in our example my.manifest.bin).
  • Optionally, an update private key or public key or certificate to validate the manifest signature.

Example

$ manifest-tool parse \
  my.manifest.bin \
  --private-key my.priv.key.pem
----- Manifest dump start -----
Manifest:
vendor-id=fa6b4a53d5ad5fdfbe9de663e4d41ffe
class-id=3da0f138173350eba6f665498eace1b1
update-priority=15
payload-version=1572372313
payload-digest=b5f07d6c646a7c014cc8c03d2c9caf066bd29006f1356eaeaf13b7d889d3502b
payload-size=512
payload-uri=https://my.server.com/some.file?new=1
payload-format=raw-binary
----- Manifest dump end -----
2019-10-29 20:05:13,478 INFO Signature verified!

manifest-tool schema

Prints the input validation JSON schema bundled with the current tool. The manifest tool contains an input validation schema, which you can use as a self-documenting tool to better understand and validate the manifest tool input configuration.

Example

$ manifest-tool schema

manifest-tool public-key

Create a public key file in uncompressed point format. Provisioning this file to the device enables the device to verify the manifest signature.

Example

manifest-tool public-key my.priv.key.pem --out my.pub.key.bin

manifest-delta-tool

Use this tool to generate delta patch files for delta updates.

Run manifest-delta-tool --help for more information about usage and arguments.

Prerequisites

  • The firmware currently installed on the device and the updated firmware image. Required for calculating the delta patch.

Example

$ manifest-delta-tool -c current_fw.bin -n new_fw.bin -o delta-patch.bin

Note 1: Additional configuration file with same name but with .yaml extension will be generated. Both files are required by the manifest-tool. Only the output file specified by --output argument should be uploaded to Pelion storage.

Note 2: Compression block size has a direct impact on the amount of memory required by the device receiving the update. The device requires twice the amount of RAM in runtime to decompress and apply the patch.

Note 3: Compression block must be aligned with network (COAP/HTTP) buffer size used for download. Misalignment in sizes may result in device failure to process the delta patch file.

manifest-package-tool

Use this tool to generate combined package files for combined updates.

manifest-package-tool commands:

Note: Run manifest-package-tool --help for more information about all commands, or manifest-package-tool <command> --help for more information about a specific command, including its parameters and how to use them.

manifest-package-tool create

Creates a combined package file based on a configuration file with information about firmware images for a combined update.

Prerequisites

  • A configuration file in JSON or YAML format.

    Configuration file format:

    images:  # Two or more images
    - file_name:  ./my.fw1.bin     # Local path to one of the firmware images.
      sub_comp_name:  fw1_id       # Name of the subcomponent firmware image.
      vendor_data: fw1_vend        # Vendor data for the firmware image.
    - file_name:  ./my.fw2.bin     # Local path to another firmware image.
      sub_comp_name:  fw2_id       # Name of the subcomponent firmware image.
      vendor_data: fw2_vend        # Vendor data for the firmware image.
    
  • New firmware images to be included in the combined package. In this example ./my/fw1.bin and ./my.fw2.bin.

Example

$ manifest-package-tool create --config combined_package_config.yaml --output combined_package_file

Where combined_package_config.yaml is the input configuration file.

The tool creates a tar-format combined package with the firmware images listed in the configuration file, where:

  • file_name is the local path to the image file.
  • sub_comp_name is the name the tool gives to the subcomponent firmware image file in the combined package. This must be the same as the name (sub_comp_name) defined on the device.
  • vendor_data is the vendor information of the firmware image.

In addition to firmware image files, the tool creates a descriptor __desc__ file inside the tar package, which provides information about the contents of the combined package to the FOTA update client.

Note 1: The FOTA update client reports on a combined update as an update of a single component (defined as comp_name on the device), consisting of multiple subcomponents (each defined as sub_comp_name on the device). When you create a combined package, each sub_comp_name must correspond to a sub_comp_name on the device. For more information, see Implementing combined update

Note 2: When you create a manifest for a combined update using manifest-tool, in the manifest configuration file, set the format field to combined or encrypted-combined, set the component field to the name of the component you are updating, and set the file-path field to the path of the combined package file.

Note 3: To use a combined package file with the manifest-dev-tool create or update commands, set the path of the combined package file in the -p argument and pass the --combined-image flag to indicate that the current candidate payload is a combined image.

manifest-package-tool parse

Parses and validates existing combined package files.

Prerequisites

  • A combined package file (in our example combined_package_file).

Example

$ manifest-package-tool parse --package combined_package_file
Contents of the tar package -
File name : _desc_
File name : fw1_id
File name : fw1_id
Information of update images:
OrderedDict([('id', b'fw1_id'), ('vendor-data', b'fw1_vend'), ('vendor-data-size', 8), ('image-size', 417053)])
OrderedDict([('id', b'fw2_id'), ('vendor-data', b'fw2_vend'), ('vendor-data-size', 8), ('image-size', 253482)])

manifest-dev-tool

manifest-dev-tool is a developer tool for running a simplified update campaign.

Use manifest-dev-tool for development flows only.

manifest-dev-tool commands:

Note: Run manifest-dev-tool --help for more information about all commands, or manifest-dev-tool <command> --help for more information about a specific command, including its parameters and how to use them.

manifest-dev-tool init

Initializes the developer environment.

  • Generates credentials and a configuration file in the tool's cache directory:

    • dev.key.pem - An update private key.
    • dev.cert.der - An update public key certificate.
    • dev.cfg.yaml - Developer configuration file.

    The default cache directory name is .manifest-dev-tool.

  • Generates an update resource C file with symbols that allow bypassing the provisioning step in the developer flow. Default name is update_default_resources.c.

Note 1: Use the credentials generated by manifest-dev-tool init in the development stage only.

Note 2: You can keep your access key in the .pelion-dev-presets.yaml file in your home directory and pass it using the --gw-preset option.

Example of .pelion-dev-presets.yaml:

usa:
    host: https://api.us-east-1.mbedcloud.com
    access_key: ak_SOME_VERY_SECRET_ACCESS_KEY
japan:
    host: https://api.ap-northeast-1.mbedcloud.com
    access_key: ak_SOME_OTHER_VERY_SECRET_ACCESS_KEY

To obtain an access key and API host URL, in Device Management Portal, click Access Management > Access keys > New access key. Limit access to the .pelion-dev-presets.yaml file to your user only.

Example

manifest-dev-tool init --access-key [Device Management access key]

Or

manifest-dev-tool init --gw-preset usa

manifest-dev-tool create

Creates developer manifest files without requiring an input configuration file.

Example

manifest-dev-tool create \
    --payload-url http://test.pdmc.pelion.com?fileId=1256 \
    --payload-path new_fw.bin \
    --fw-version 1.2.3 \
    --component-name MAIN \
    --output update-manifest.bin

Note: To run a delta update, specifiy the manifest-delta-tool output in the --payload-path argument and make sure the .yaml output with the same name sit next to that output file.

Note: Add the --sign-image argument to update a device with a secure bootloader, which requires an image signature.

manifest-dev-tool create-v1

Creates developer manifest files in v1 format without requiring an input configuration file.

Example

manifest-dev-tool create-v1 \
    --payload-url http://test.pdmc.pelion.com?fileId=1256 \
    --payload-path new-fw.bin \
    --output update-manifest.bin

Note: To run a delta update, specifiy the manifest-delta-tool output in the --payload-path argument and make sure the .yaml output with the same name sit next to that output file.

manifest-dev-tool update

Same as manifest-dev-tool create but also lets you interact with Device Management to run a full update campaign.

The command:

  1. Uploads the payload to Device Management and obtains the URL.
  2. Creates a manifest file with the URL from the previous step and obtains a manifest URL.
  3. Creates an update campaign with the manifest URL from the previous step.
  4. Starts the update campaign if you pass the --start-campaign or --wait-for-completion argument.
  5. If you pass the --wait-for-completion argument, the tool waits for campaign completion for the time period specified by --timeout or until the campaign reaches one of its terminating states.
  6. If you pass the --wait-for-completion argument without the --no-cleanup flag, the tool removes the uploaded test resources from Device Management before exiting.

Example

manifest-dev-tool update \
    --payload-path my_new_fw.bin \
    --fw-version 1.2.3 \
    --wait-for-completion

Note: The tool creates the device filter for the campaign based on the unique class-id and vendor-id fields the manifest-dev-tool init command generates.

manifest-dev-tool update-v1

Same as manifest-dev-tool update with a v1-format manifest.

Example

manifest-dev-tool update-v1 \
    --payload-path my_new_fw.bin \
    --wait-for-completion

Developer workflow example for mbed-os devices

  1. Clone the https://github.com/PelionIoT/mbed-cloud-client-example repository.

  2. From within the repository, execute:

    manifest-dev-tool init -a $MY_ACCESS_KEY
    

    The tool initializes the developer environment and generates a update_default_resources.c file.

  3. Build the firmware image for your device.

  4. Save the mbed-cloud-client-example_update.bin file.

  5. Flash the mbed-cloud-client-example.bin to the device.

  6. Wait for the device to register in the cloud.

  7. Make some changes to the source of the firmware application.

  8. Build the firmware update candidate for your device.

    • To test delta update, create delta patch:
      manifest-delta-tool -c <original mbed-cloud-client-example_update.bin> -n <new mbed-cloud-client-example_update.bin> -o delta.bin
      
  9. Issue an update campaign:

    manifest-dev-tool update --payload-path <new mbed-cloud-client-example_update.bin or delta.bin> --wait-for-completion
    

Upgrading from manifest tool v1.5.2 and lower

Manifest tool v2.0.0 is not compatible with previous versions.

This section explains how to migrate your existing configuration and credentials for use with manifest-tool version 2.2.0 and higher.

  • Initializing the development environment using previously-defined configuration and credentials

    Run the manifest-dev-tool init command as follow:

    manifest-dev-tool init --api-url <API URL> \
                           --access-key <Access key> \
                           --vendor-id <Vendor ID> \
                           --class-id <Class ID> \
                           --key <private key path> \
                           --update-certificate <certificate path>
    

    Where <API URL> and <Access key> are the values from the previous .mbed_cloud_config.json file, <Vendor ID> and <Class ID> are the values from the previous .manifest_tool.json file, and <private key path> and <certificate path> are the paths to your private key and update certificate, respectively.

    When the command finishes successfully, you can remove the previously-created files.

  • Adapting the create manifest configuration

    If you use manifest-tool (not manifest-dev-tool), create a new configuration file, as described in manifest-tool create, and copy the relevant information from your existing .manifest_tool.json file.

Troubleshooting

  • Getting more context on unexpected errors.

    When the tool exits with a non-zero return code, it may be helpful to get more context on the failure.

    Solution: execute the tool with the --debug flag at the top argument parser level. For example:

    manifest-dev-tool --debug update
    
  • manifest-dev-tool update ... --wait-for-completion takes longer than expected.

    manifest-dev-tool update creates a unique class-id and vendor-id generated per developer. Device Management expects a single device with these properties to connect to Device Management.

    In rare cases, during development, a device's device-id might change after you re-flash it. This may result in two devices having the same class-id and vendor-id in Device Management. In this scenario, Device Management will detect both devices and try to update them both, although one of them no longer exists

    Solution: Manually delete the unwanted device from Device Management. Alternatively, run manifest-dev-tool update ... --wait-for-completion with --device-id DEVICE_ID to override the default campaign filter and target a specific device by its ID.

  • Update fails and manifest-dev-tool update ... --wait-for-completion cleans all resources.

    You might want to leave the resources (firmware image candidate, update manifest and update campaign) on a service for further investigation/retry.

    Solution: Execute manifest-dev-tool update ... --wait-for-completion with the --no-cleanup flag.

  • Device does not support this manifest schema

    Solution: Your device does not support the created manifest schema. Switch from the create or update command to the create-v1 or update-v1 command respectively and vice versa.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

manifest-tool-2.4.1.tar.gz (94.3 kB view details)

Uploaded Source

Built Distributions

manifest_tool-2.4.1-cp39-cp39-win_amd64.whl (90.3 kB view details)

Uploaded CPython 3.9 Windows x86-64

manifest_tool-2.4.1-cp39-cp39-win32.whl (91.6 kB view details)

Uploaded CPython 3.9 Windows x86

manifest_tool-2.4.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (338.7 kB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ x86-64

manifest_tool-2.4.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl (238.8 kB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ x86-64 manylinux: glibc 2.24+ x86-64

manifest_tool-2.4.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (336.6 kB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ ARM64

manifest_tool-2.4.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.whl (232.2 kB view details)

Uploaded CPython 3.9 manylinux: glibc 2.5+ x86-64

manifest_tool-2.4.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl (350.5 kB view details)

Uploaded CPython 3.9 manylinux: glibc 2.12+ x86-64 manylinux: glibc 2.5+ x86-64

manifest_tool-2.4.1-cp38-cp38-win_amd64.whl (90.3 kB view details)

Uploaded CPython 3.8 Windows x86-64

manifest_tool-2.4.1-cp38-cp38-win32.whl (91.6 kB view details)

Uploaded CPython 3.8 Windows x86

manifest_tool-2.4.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (339.0 kB view details)

Uploaded CPython 3.8 manylinux: glibc 2.17+ x86-64

manifest_tool-2.4.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl (239.0 kB view details)

Uploaded CPython 3.8 manylinux: glibc 2.17+ x86-64 manylinux: glibc 2.24+ x86-64

manifest_tool-2.4.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (337.0 kB view details)

Uploaded CPython 3.8 manylinux: glibc 2.17+ ARM64

manifest_tool-2.4.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl (232.3 kB view details)

Uploaded CPython 3.8 manylinux: glibc 2.5+ x86-64

manifest_tool-2.4.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl (350.7 kB view details)

Uploaded CPython 3.8 manylinux: glibc 2.12+ x86-64 manylinux: glibc 2.5+ x86-64

manifest_tool-2.4.1-cp37-cp37m-win_amd64.whl (90.3 kB view details)

Uploaded CPython 3.7m Windows x86-64

manifest_tool-2.4.1-cp37-cp37m-win32.whl (91.6 kB view details)

Uploaded CPython 3.7m Windows x86

manifest_tool-2.4.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (338.9 kB view details)

Uploaded CPython 3.7m manylinux: glibc 2.17+ x86-64

manifest_tool-2.4.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl (240.2 kB view details)

Uploaded CPython 3.7m manylinux: glibc 2.17+ x86-64 manylinux: glibc 2.24+ x86-64

manifest_tool-2.4.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (336.9 kB view details)

Uploaded CPython 3.7m manylinux: glibc 2.17+ ARM64

manifest_tool-2.4.1-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl (232.1 kB view details)

Uploaded CPython 3.7m manylinux: glibc 2.5+ x86-64

manifest_tool-2.4.1-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl (351.8 kB view details)

Uploaded CPython 3.7m manylinux: glibc 2.12+ x86-64 manylinux: glibc 2.5+ x86-64

manifest_tool-2.4.1-cp36-cp36m-win_amd64.whl (92.4 kB view details)

Uploaded CPython 3.6m Windows x86-64

manifest_tool-2.4.1-cp36-cp36m-win32.whl (93.3 kB view details)

Uploaded CPython 3.6m Windows x86

manifest_tool-2.4.1-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (338.9 kB view details)

Uploaded CPython 3.6m manylinux: glibc 2.17+ x86-64

manifest_tool-2.4.1-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl (239.2 kB view details)

Uploaded CPython 3.6m manylinux: glibc 2.17+ x86-64 manylinux: glibc 2.24+ x86-64

manifest_tool-2.4.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (336.9 kB view details)

Uploaded CPython 3.6m manylinux: glibc 2.17+ ARM64

manifest_tool-2.4.1-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl (232.1 kB view details)

Uploaded CPython 3.6m manylinux: glibc 2.5+ x86-64

manifest_tool-2.4.1-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl (350.8 kB view details)

Uploaded CPython 3.6m manylinux: glibc 2.12+ x86-64 manylinux: glibc 2.5+ x86-64

File details

Details for the file manifest-tool-2.4.1.tar.gz.

File metadata

  • Download URL: manifest-tool-2.4.1.tar.gz
  • Upload date:
  • Size: 94.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.0 CPython/3.9.7

File hashes

Hashes for manifest-tool-2.4.1.tar.gz
Algorithm Hash digest
SHA256 6e423279f0a4db65b6d1e0b3dbd9ca413f04c0eb5b6b02f37c52e9f9e5b68a33
MD5 e55ce1c4e4a70a8edfe939daeb759529
BLAKE2b-256 4273a4d2634bf07c5573398c204830098dc873271fd245e0cbd33389146dadf4

See more details on using hashes here.

File details

Details for the file manifest_tool-2.4.1-cp39-cp39-win_amd64.whl.

File metadata

File hashes

Hashes for manifest_tool-2.4.1-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 e85527efde744da3e12820f98f2a55077fe202d19c37f2b6088ad0a0da3af4e6
MD5 1980a59a9e4a804daaf087e20f07ecb4
BLAKE2b-256 aca9cba92f4ba8ebae60d77f74dd86c08bc235f2ecb58d16f542c084414d134c

See more details on using hashes here.

File details

Details for the file manifest_tool-2.4.1-cp39-cp39-win32.whl.

File metadata

File hashes

Hashes for manifest_tool-2.4.1-cp39-cp39-win32.whl
Algorithm Hash digest
SHA256 3fe3e3a9338f08051a369a5a4f22eb2caff71467ac297b5b3f79d17f49dca446
MD5 f2ef20c03377b29293abd45ac17374fc
BLAKE2b-256 993932239d72a95467a5cee5fc8813f4271cf56e2d58c307f009f90645d230cf

See more details on using hashes here.

File details

Details for the file manifest_tool-2.4.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for manifest_tool-2.4.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 8866b1f6a5b21ebf04ac9ea6895f0f9a9ad5e4f102f4037f2b1cb9166df4c383
MD5 79e06444cb1b862b001194ea4a967639
BLAKE2b-256 6114c8bbfc21532899ee60423dd15c418aa4d789701996a11ab1903ae549e9ce

See more details on using hashes here.

File details

Details for the file manifest_tool-2.4.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl.

File metadata

File hashes

Hashes for manifest_tool-2.4.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl
Algorithm Hash digest
SHA256 36a3a772873cb31cdabeaea967e2fffd0a40de6c965c7676a7dba3989032c275
MD5 211068f2bf7256b057cfd7e58ffc512d
BLAKE2b-256 2d1f879c6b4eee52bc8b8b7f69bce7ec28eb755a9c1774838df16048a6884d29

See more details on using hashes here.

File details

Details for the file manifest_tool-2.4.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for manifest_tool-2.4.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 27b6c94d7005b9d7c5519ca73baa1ea3c95b2bb7cea5f1246be2a6cabf3e4f7e
MD5 aef41372168148d4763ecf1098c47656
BLAKE2b-256 0fa7339276e9507f5473f0a4dbdb1d06dc796956d898fa3d67b3b98f9ad86973

See more details on using hashes here.

File details

Details for the file manifest_tool-2.4.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.whl.

File metadata

File hashes

Hashes for manifest_tool-2.4.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 4556aa95d60c85bbd73b314aa62fc8c632eaade346c93d4048a2d03ca4c9cca3
MD5 93b633db7a212705eea1cc842c1565f2
BLAKE2b-256 7331517b2a7ac8cd2d62918439a3f4192fd8b4200096928a4e50107712bf9086

See more details on using hashes here.

File details

Details for the file manifest_tool-2.4.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl.

File metadata

File hashes

Hashes for manifest_tool-2.4.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 700d0e15522c07f05b99aa72b78e9d1a388477891214bb659af79966d0f7ce7a
MD5 4c26abc0e00f22d4a29644440fd35db2
BLAKE2b-256 0a36ce56331b72342ce7d35f924527d78d0667894c17bc8f74692d742776baaa

See more details on using hashes here.

File details

Details for the file manifest_tool-2.4.1-cp38-cp38-win_amd64.whl.

File metadata

File hashes

Hashes for manifest_tool-2.4.1-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 a923ad7ad39c38ed3e603418dc15b214195db194d5ece1b30a84c7ea0e9dd39e
MD5 006a8256d5b67ee38f5210a1662920a1
BLAKE2b-256 bc63dba997b4462de32bb65dfd1115f51bf3e416e749c30c90b51236a0981ec0

See more details on using hashes here.

File details

Details for the file manifest_tool-2.4.1-cp38-cp38-win32.whl.

File metadata

File hashes

Hashes for manifest_tool-2.4.1-cp38-cp38-win32.whl
Algorithm Hash digest
SHA256 5e1b58675f81ad8ef8ddf9f2addc2d4cfcdd90e94e7daae66064bfe3a4f26106
MD5 c5fc4a48573b256571e09ccb08506680
BLAKE2b-256 be863694a782bd86b4bcd41a36a9a489f3abba8d201fc570e84b7c9a430a439f

See more details on using hashes here.

File details

Details for the file manifest_tool-2.4.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for manifest_tool-2.4.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 4339617dbca7735f589b59325bf29d00b27f8c715a96a24bc4c2df3f682b2317
MD5 2dc9d2ecd1ea23b89f7f4e1bf435da9a
BLAKE2b-256 f60f720b73a5997e8dbeb5848aab07189d7a22ea8a4329cd16b75749bd82cf4c

See more details on using hashes here.

File details

Details for the file manifest_tool-2.4.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl.

File metadata

File hashes

Hashes for manifest_tool-2.4.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl
Algorithm Hash digest
SHA256 02f67a28bbcc6b85c365402e9cf30eac04836a3989cfad0a0091dffc58b08872
MD5 6e054c36521e269a74af6cfba394fcdd
BLAKE2b-256 c6d33584289667f5adb74b22ead4fc92f44c30b55692135d87848c0c25f9229a

See more details on using hashes here.

File details

Details for the file manifest_tool-2.4.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for manifest_tool-2.4.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 534a6ddab41b6e5cee3c9aaa385f3342082722c64a8dd8fe2e3b3a9207c01855
MD5 e1ca9734be069c400e7362a59937c3aa
BLAKE2b-256 44d4122015121b69cfb90fa7f64f68fa830506fcc24ffca7379b909551f496cb

See more details on using hashes here.

File details

Details for the file manifest_tool-2.4.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl.

File metadata

File hashes

Hashes for manifest_tool-2.4.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 9aba06339008b101f1cd3dd6550f8c40ee932a8f055890725687528c15f6cd6c
MD5 9f858616b9dbbdb00042b06d8faf6023
BLAKE2b-256 a07c5c90239ba697f43332230f6c273c2e83d6f743ec154de8fe3d7ee9c816e2

See more details on using hashes here.

File details

Details for the file manifest_tool-2.4.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl.

File metadata

File hashes

Hashes for manifest_tool-2.4.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 3735e7396b2b943e8a38f528eebd09dee89545e4169fe9c85ad4f736e6e5241e
MD5 ff9503a69096769cf550392c5bb8fb4c
BLAKE2b-256 8a1e209a662e5592495a7f2cad259d88d9ca5cc7d6e08d1e114eeb2b15800ce1

See more details on using hashes here.

File details

Details for the file manifest_tool-2.4.1-cp37-cp37m-win_amd64.whl.

File metadata

File hashes

Hashes for manifest_tool-2.4.1-cp37-cp37m-win_amd64.whl
Algorithm Hash digest
SHA256 fe14f6a920810a9fe7ad03dc774550f4a70706474b769cb0d849dbb32df14b51
MD5 b241f62bb31d420360fafba4483d95cd
BLAKE2b-256 689a2cc9805e7a192fa530885d8e82c413bb5a03274d4a01aec5c52dcce61ac4

See more details on using hashes here.

File details

Details for the file manifest_tool-2.4.1-cp37-cp37m-win32.whl.

File metadata

File hashes

Hashes for manifest_tool-2.4.1-cp37-cp37m-win32.whl
Algorithm Hash digest
SHA256 fb2f362fc32ce2712500be7df51f835d9ae024daf1db812e9a93174b1b2c9fce
MD5 df2171257f42c505a6b309095051e6f4
BLAKE2b-256 b35d5272de693e5302dfbc0219fc65abeecdc377f1f668337ec0cede3aecd655

See more details on using hashes here.

File details

Details for the file manifest_tool-2.4.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for manifest_tool-2.4.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 17b2b4f7a8bf67e6ce640d97256e37703eedb215533f15dfd894585640db0a8d
MD5 cbbfbb3dbf861e2e0f86b230106bbfdc
BLAKE2b-256 50a8c664c9258ab3e1bbf650774cda2822ab6b505d72ed4c785fa4aee4691232

See more details on using hashes here.

File details

Details for the file manifest_tool-2.4.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl.

File metadata

File hashes

Hashes for manifest_tool-2.4.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl
Algorithm Hash digest
SHA256 e6da80065968b30161d058b1e5dcec646a0d60141e8e4f3b6798febdfbadda68
MD5 1c886ac03c736e01608ed3e3f17b9875
BLAKE2b-256 30a6952ac613aeffc4a2bb627f5c343a633f3ca72c1f669bba03d9392fb9b861

See more details on using hashes here.

File details

Details for the file manifest_tool-2.4.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for manifest_tool-2.4.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 f56f6172a0e670f797f2f7588884d752f02bf437f60009f2e4bdfc4be74178cf
MD5 f6606c7684f15d821ed6c8dc8a300596
BLAKE2b-256 768a334e1f1657f34ca462bfc5254d011e0cec1d91d95c38dc36b35731f41432

See more details on using hashes here.

File details

Details for the file manifest_tool-2.4.1-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl.

File metadata

File hashes

Hashes for manifest_tool-2.4.1-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 db5f94b995ac1c2302efa57b1b21a69d82831aac1c52d3e436369d4e1fe04e97
MD5 9594cca0f57a6627de0a6c2b90a96cd7
BLAKE2b-256 9ad379c995e64b529a0f566ebb26c0e00913018d3b215f533ae575b7c37b658e

See more details on using hashes here.

File details

Details for the file manifest_tool-2.4.1-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl.

File metadata

File hashes

Hashes for manifest_tool-2.4.1-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 d8ef889bc33d2e9df53c4f5da49efd3e6f8478560726bace8f55e4b8820aa8cd
MD5 419d64335d6172d0b40b9a94a58ecb17
BLAKE2b-256 7f9bdc5f61125c93ed39f3b283bd13076c1b08e041032a09ed8e6de7bbb6fa63

See more details on using hashes here.

File details

Details for the file manifest_tool-2.4.1-cp36-cp36m-win_amd64.whl.

File metadata

File hashes

Hashes for manifest_tool-2.4.1-cp36-cp36m-win_amd64.whl
Algorithm Hash digest
SHA256 08807357d4d2bf31c5cd8f632c6973189a3803dc7f32013c13ddcab543955c5c
MD5 51af2caf34eff3d70309a71a87f7eb25
BLAKE2b-256 f45e9cfafd8130ccd2b9a9fbab91997c87745abccd8e7fe960a4a8985d8d589a

See more details on using hashes here.

File details

Details for the file manifest_tool-2.4.1-cp36-cp36m-win32.whl.

File metadata

File hashes

Hashes for manifest_tool-2.4.1-cp36-cp36m-win32.whl
Algorithm Hash digest
SHA256 109a1355d665fcfbea1ce067d74f8a181b1bfee0ef7de2a693a3cd7e258363d4
MD5 3594d76c82b618224991a01794f22f34
BLAKE2b-256 31ee7623c6973319b085c4b677baab7586c9bc28aff5045523f3763e3ba928c7

See more details on using hashes here.

File details

Details for the file manifest_tool-2.4.1-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for manifest_tool-2.4.1-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 a4d7480159829a61839be11156d941280301a3f86306afdc78a0c262fccae1a3
MD5 d9b922a9447a2161101c86a4655481fa
BLAKE2b-256 7c78d7ab7f8f987d105cf3a2aa267d7e8756cfd3325db89def401bea0acdaf05

See more details on using hashes here.

File details

Details for the file manifest_tool-2.4.1-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl.

File metadata

File hashes

Hashes for manifest_tool-2.4.1-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl
Algorithm Hash digest
SHA256 6f1e040a40d964e07c5ec259e9d097031f5bad8304947e9156447384f293b067
MD5 26f3d3ea2067985817fa3ff5bc5508bd
BLAKE2b-256 1a81e897d32af978cccf0c0eb013fc881b101d4b92ef2942a3b8481f885c4040

See more details on using hashes here.

File details

Details for the file manifest_tool-2.4.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for manifest_tool-2.4.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 fa9fc2e46dfa407cd0e3ba9a1b70ae23e33ed9d2444dc7e958f87c1718c6ec6e
MD5 fed962490e332648f8961a185e131a53
BLAKE2b-256 4f7fa2d540b462dd425edac02733944a1a9cd88e61e715cd601b1c4204199ee7

See more details on using hashes here.

File details

Details for the file manifest_tool-2.4.1-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl.

File metadata

File hashes

Hashes for manifest_tool-2.4.1-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 6cd3532ddd131d8dbcc2d64133eb3e4df31b15bf53bbc8c667e147024667bd28
MD5 f010ad3c4e94508f57ee0a272c2c33ba
BLAKE2b-256 9d071c0b5fc8127d375e92006e3dc507de220be7a4e197c70652fee7dc8415f4

See more details on using hashes here.

File details

Details for the file manifest_tool-2.4.1-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl.

File metadata

File hashes

Hashes for manifest_tool-2.4.1-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 1d80d6db5e08255a4a7def733a66fed01881df918fa5cbb454f899580f63c6f1
MD5 30c985087122f2cac0706bda2093b46e
BLAKE2b-256 03f5ba5e6b16f20198fdfd5dc71e1e8ef93aa5389ef9f8b0732d6b1418e58805

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page