You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
rdpwrap/docs/SUBMODULE-UPDATE.md

102 lines
2.9 KiB

# Submodule Update Guide
This repository includes one git submodule (with nested sub-submodules):
| Submodule | Upstream | Current tag |
|---|---|---|
| `src-csharp/RDPOffsetFinder` | [llccd/RDPWrapOffsetFinder](https://github.com/llccd/RDPWrapOffsetFinder) | `v0.9` |
| `src-csharp/RDPOffsetFinder/zydis` | [zyantific/zydis](https://github.com/zyantific/zydis) | (pinned by upstream) |
| `src-csharp/RDPOffsetFinder/zydis/dependencies/zycore` | [zyantific/zycore-c](https://github.com/zyantific/zycore-c) | (pinned by upstream) |
The nested `zydis` and `zycore` submodule commits are controlled by llccd's repository — update only the outer submodule and the inner ones follow automatically.
---
## Cloning with submodules
```bash
# Full clone (recommended for builds)
git clone --recurse-submodules https://github.com/sjackson0109/rdpwrap
# If you already cloned without --recurse-submodules:
git submodule update --init --recursive
```
---
## Checking current submodule version
```powershell
git submodule status --recursive
# Expected output (one line per submodule):
# 68da37acab6593c329776644944f55695a131731 src-csharp/RDPOffsetFinder (v0.9)
# 5a68f639e4f01604cc7bfc8d313f583a8137e3d3 src-csharp/RDPOffsetFinder/zydis (...)
# fb69402566a15a719e5df7a64a3db95105590b7e src-csharp/RDPOffsetFinder/zydis/dependencies/zycore (...)
```
---
## Updating to a new upstream release
> **Do this only when a new tagged release of [llccd/RDPWrapOffsetFinder](https://github.com/llccd/RDPWrapOffsetFinder) is published** and you have verified that the new version produces correct INI sections for a known Windows build.
```powershell
# 1. Fetch all tags from upstream
cd src-csharp/RDPOffsetFinder
git fetch --tags origin
# 2. List available tags to find the new release
git tag --list --sort=-version:refname | Select-Object -First 10
# 3. Check out the desired tag
git checkout <new-tag> # e.g. v1.0
# 4. Update nested submodules to match the new tag's references
git submodule update --init --recursive
# 5. Return to repo root and record the new pointer
cd ../..
git add src-csharp/RDPOffsetFinder
git commit -m "chore: update RDPOffsetFinder submodule to <new-tag>"
git push
```
---
## Verifying the updated submodule builds
```powershell
# From repo root — builds x64 and x86 offset finder binaries
cd src-csharp/RDPOffsetFinder
cmake -B build-x64 -A x64 .
cmake --build build-x64 --config Release
cmake -B build-x86 -A Win32 .
cmake --build build-x86 --config Release
```
Or trigger the `build-offsetfinder.yml` workflow on your push branch to let CI validate it.
---
## Rollback
If the update causes build failures, revert the submodule pointer:
```powershell
git revert HEAD # creates a revert commit
git push
```
Or manually:
```powershell
cd src-csharp/RDPOffsetFinder
git checkout v0.9 # previous known-good tag
cd ../..
git add src-csharp/RDPOffsetFinder
git commit -m "chore: rollback RDPOffsetFinder submodule to v0.9"
git push
```