CppWinRT CIPD package

CppWinRT is a tool that generates standard C++17 header-file libraries for Windows Runtime (WinRT) APIs. These instructions describe how to update the CIPD package that bundles these tools for Flutter builds.

A more detailed introduction to C++/WinRT can be found in the Microsoft documentation.

The source code is available under an MIT license, from https://github.com/microsoft/cppwinrt.

Requirements

Updating this package requires the following dependencies:

  1. Depot tools.

Uploading a new CIPD package version

To update the CIPD package, follow these steps:

  1. From the CppWinRT package page on nuget, click the Download package link.
  2. Copy the downloaded .nupkg file into this directory.
  3. Unzip the archive to a new subdirectory named tmp:
    unzip microsoft.windows.cppwinrt.<version_number>.nupkg -d tmp
    
  4. Create the CIPD package:
    cipd create --pkg-def cppwinrt-win-amd64.cipd.yaml
    
    The tool should output that the package was successfully uploaded and verified, including the package path and an identifier SHA.
  5. Set a new build: tag:
    cipd set-tag flutter/cppwinrt/win-amd64 --version=<new_version_sha> --tag=build:<upstream_version>
    
  6. Verify the package was successfully created and tagged:
    cipd describe flutter/cppwinrt/win-amd64 -version <new_version_sha>
    
  7. Delete the archive and temp directory:
    rm -rf cppwinrt *.nupkg
    

Updating the Flutter DEPS file

Finally, we'll update the DEPS file to point to the latest version.

  1. Open the DEPS file in an editor.
  2. Locate the block covering cppwinrt.
  3. Update the version value to the version you just tagged.

The block should look like this:

  'src/third_party/cppwinrt': {
     'packages': [
       {
        'package': 'flutter/cppwinrt/win-amd64',
        'version': 'build:<upstream_version>'
       }
     ],
     'condition': 'download_windows_deps',
     'dep_type': 'cipd',
   },

Finally, re-run gclient sync to verify the package downloads correctly.

References