Each thirdparty library has a Python script for updating it. They generally:
upstream_utils.py
contains utilities common to these update scripts.
Patches are generated in the thirdparty repo with git format-patch --no-signature
so they can be applied as individual commits and easily rebased onto newer versions. Each library has its own patch directory (e.g., lib_patches
).
The example below will update a hypothetical library called lib
to the tag 2.0
.
Start in the upstream_utils
folder. Restore the original repo.
./update_lib.py
Navigate to the repo.
cd /tmp/lib
Fetch the desired version using one of the following methods.
# Fetch a full branch or tag git fetch origin 2.0 # Fetch just a tag (useful for expensive-to-clone repos) git fetch --depth 1 origin tag 2.0
Rebase any patches onto the new version.
git rebase 2.0
Generate patch files for the new version.
git format-patch 2.0..HEAD
Move the patch files to upstream_utils
.
mv *.patch allwpilib/upstream_utils/lib_patches
Navigate back to upstream_utils
cd allwpilib/upstream_utils
Modify the version number in the call to setup_upstream_repo()
in update_lib.py
, then rerun update_lib.py
to reimport the thirdparty files.
./update_lib.py