Work In Progress
The goal of this repo is to enable sched-ext binaries to build on kernels with older versions of the sched-ext source tree.
- Docker
-
Create a branch named
$SHORT_SHA-vmlinux, where$SHORT_SHAis the first 7 characters of the commit hash in the scx kernel tree you are targeting. In this branch, in.github/workflows/caching-build.yml, replace KERNEL_COMMIT_SHA7_HERE with the 7 character commit hash of the kernel commit you will be packporting to. -
Run
backport-scripts/generate-backport-vmlinux.shpassing it$SHORT_SHA(such asaf1234) and branch name, in that order. Optionally, pass a third arg, the git repo to obtain that commit and branch from, if neccessary. -
Update the symlink
scheds/include/vmlinux/vmlinux.hto point to your new vmlinux.h. -
Commit and push your branch.
-
Open a new branch (i.e.
af1234-${SCX_RELEASE}-fixes) off of your initial branch (i.e.af1234) and edit files other thanvmlinux.huntil firstcargo test(ran in this repo's root) passes and then CI passes. Edit.github/workflows/caching-build.ymlas is neccessary to reducing the schedulers built/tested (not everything can be reasonably backported). -
Push this branch as you get things working, push it as
af1234-${SCX_RELEASE}-backportonce CI passes. -
Add a CI badge on this page on the setup-repo branch for the CI job for that new branch.
- Create a new
-fixesbranch from either a-vmlinux,-fixesbranch or a-backportbranch (whichever is closest to what you want). - Continue the instructions above from (4).
Please make any updates to this document and the setup scripts on the branch setup-repo. This will be rebased atop main when merging in updates.
main will be updated periodically (roughly coinciding with releases of scx), backports will be updated/created on an as-needed basis.
*main will be overwritten with commits from upstream during syncs. setup-repo will be rebased upon main and pushed to main before rebasing other branches, so put things to persist across this process on setup-repo.`