mirror of
https://github.com/NixOS/nixpkgs.git
synced 2025-11-09 16:18:34 +01:00
See https://github.com/NixOS/nixpkgs/issues/437208#issuecomment-3288623669 Depends on https://github.com/NixOS/org/pull/172 As documented below, the idea is to essentially group all changes rebuilding all VM tests with kernel updates and merge them together into `master` whenever the Linux kernels get updated. This documents the workflow of updates in the nixpkgs manual. While at it, I removed the README from the packages because * it's horribly outdated * I didn't even know it exists which confirms that its discoverability was very poor and added the relevant portions into the nixpkgs manual as well.
83 lines
2.1 KiB
JavaScript
Executable file
83 lines
2.1 KiB
JavaScript
Executable file
#!/usr/bin/env nix-shell
|
|
/*
|
|
#!nix-shell -i node -p nodejs
|
|
*/
|
|
|
|
const typeConfig = {
|
|
master: ['development', 'primary'],
|
|
release: ['development', 'primary'],
|
|
staging: ['development', 'secondary'],
|
|
'staging-next': ['development', 'secondary'],
|
|
'staging-nixos': ['development', 'secondary'],
|
|
'haskell-updates': ['development', 'secondary'],
|
|
nixos: ['channel'],
|
|
nixpkgs: ['channel'],
|
|
}
|
|
|
|
// "order" ranks the development branches by how likely they are the intended base branch
|
|
// when they are an otherwise equally good fit according to ci/github-script/prepare.js.
|
|
const orderConfig = {
|
|
master: 0,
|
|
release: 1,
|
|
staging: 2,
|
|
'staging-nixos': 2,
|
|
'haskell-updates': 3,
|
|
'staging-next': 4,
|
|
}
|
|
|
|
function split(branch) {
|
|
return {
|
|
...branch.match(
|
|
/(?<prefix>.+?)(-(?<version>\d{2}\.\d{2}|unstable)(?:-(?<suffix>.*))?)?$/,
|
|
).groups,
|
|
}
|
|
}
|
|
|
|
function classify(branch) {
|
|
const { prefix, version } = split(branch)
|
|
return {
|
|
branch,
|
|
order: orderConfig[prefix] ?? Infinity,
|
|
stable: (version ?? 'unstable') !== 'unstable',
|
|
type: typeConfig[prefix] ?? ['wip'],
|
|
version: version ?? 'unstable',
|
|
}
|
|
}
|
|
|
|
module.exports = { classify }
|
|
|
|
// If called directly via CLI, runs the following tests:
|
|
if (!module.parent) {
|
|
console.log('split(branch)')
|
|
function testSplit(branch) {
|
|
console.log(branch, split(branch))
|
|
}
|
|
testSplit('master')
|
|
testSplit('release-25.05')
|
|
testSplit('staging')
|
|
testSplit('staging-next')
|
|
testSplit('staging-25.05')
|
|
testSplit('staging-next-25.05')
|
|
testSplit('nixpkgs-25.05-darwin')
|
|
testSplit('nixpkgs-unstable')
|
|
testSplit('haskell-updates')
|
|
testSplit('backport-123-to-release-25.05')
|
|
|
|
console.log('')
|
|
|
|
console.log('classify(branch)')
|
|
function testClassify(branch) {
|
|
console.log(branch, classify(branch))
|
|
}
|
|
testClassify('master')
|
|
testClassify('release-25.05')
|
|
testClassify('staging')
|
|
testClassify('staging-next')
|
|
testClassify('staging-25.05')
|
|
testClassify('staging-next-25.05')
|
|
testClassify('nixpkgs-25.05-darwin')
|
|
testClassify('nixpkgs-unstable')
|
|
testClassify('haskell-updates')
|
|
testClassify('backport-123-to-release-25.05')
|
|
}
|