mountpoint-s3-crt-sys/UPDATING_CRT.md
Mountpoint for Amazon S3 imports the required AWS Common Runtime (CRT) libraries through git submodules, located under the mountpoint-s3-crt-sys/crt directory.
The CRT submodules can be updated by following these steps:
Update every submodule to the latest tagged release. E.g. by running:
git submodule foreach 'git fetch -q -f --tags && git checkout --recurse-submodules `git tag -l --sort=-v:refname | head -1`'
Review the commit history, in particular for aws-c-s3, looking for changes that may affect mountpoint-s3 (bug fixes, API changes, etc.). E.g.:
git diff --submodule
For any changes, make sure they are accounted for in the mountpoint-s3-crt crate.
Update the change log for each crate.
mountpoint-s3-crt-sys, this should describe changes to the way we build the AWS CRT.
For example, if we turned on an optional feature via a build flag.
It should also mention that we updated the AWS CRT itself.mountpoint-s3-crt, it should mention any changes relevant to our bindings in the crate such as:
mountpoint-s3-client, it should mention any changes relevant for consumers of the crate such as:
Check the whole project builds successfully: cargo build.
This will build both Mountpoint filesystem as well as the client components.
Verify the compressed size of the mountpoint-s3-crt-sys crate does not exceed the crates.io limit of 10MiB.
cargo package -p mountpoint-s3-crt-sys --no-verify --allow-dirty
Optionally run the integration tests for both mountpoint-s3 and mountpoint-s3-client.
You will need a number of AWS resources created in your account to run the integration tests.
Stage and commit the changes:
git add mountpoint-s3-crt-sys/crt
git commit --signoff -m "Update CRT submodules to latest releases"
In order to check which released versions are checked out for each submodules, the following command can be used:
git submodule foreach -q 'echo $name `git describe --tags`'
As the AWS CRT project evolves, the size of the mountpoint-s3-crt-sys crate can grow or shrink.
We manage its C-based dependencies with Git submodules, which can include all sorts of files we don't control.
Inside the cargo manifest for that package,
you can find an excludes entry which lists a number of patterns for excluding files
from the compressed archive uploaded to crates.io.
We exclude files that we know won't be used, like files within .github/ paths or PDFs.
If the crate grows too large, we can add new patterns to this list.
You can view the files included in the archive using cargo package -p mountpoint-s3-crt-sys --list.