[LEDE-DEV] Release Preparation Questions
Jo-Philipp Wich
jo at mein.io
Sat Nov 19 09:42:30 PST 2016
Hi Hannu,
sorry that some things where confusing, the mail was written in a hurry.
> I would prefer to have clear branches like "lede-16.11" for all the
> repos. Tags will not be sufficient when updates are made to the packages
> after the release and people compile new builds.
I too think that branches are more worthwhile since there is almost
never a good reason to rebuild an old version but we can automatically
create tags (even signed ones) in the form "lede-$version.$buildno" for
each source revision that got compiled by the release build farm so we'd
have tags in the form "lede-16.11.0", "lede-16.11.1" etc.
> Based on the above quotes from your message, I am still not quite sure
> what would be $version. ("16.11", "Reboot Rabbit" or something else?
$version = the base version number, e.g. 16.11 - this is what I'd like
to be the main identifier
$nickname = the symbolic name for a release branch, e.g.
"Rolling Rabbit" - due to its arbitrary nature I do not want
it to be part of directories or branch names
$buildno = the number of the build produced by the build cluster
dedicated to building the 16.11 base version, see e.g.
the "buildnumber" property at [1]
> The only input for your script are "release number" and "code name",
> but following sentences contain also "version number", "nickname",
> "$version". And then for images also "version number" like x.y.z and
> "buildno" z of that x.y.z.
To clarify: "release number" = $version, "code name" = "nick name".
Build number is a dynamic property specific to the build cluster.
> [...] there are at least three different kind of branch builds, [...]
>
> - branch builds before release: Branch codename designation, release
> branch number is known but no release yet, source commit/revision
> needed, (no branch opkg repo yet, so either no downloads or from
> snapshot repo if still compatible)
That should be versioned like $version+git$shorthash, e.g.
"16.11+git6b40471". Assuming a branch naming of "lede-xx.yy" it would be
something like:
echo "`echo $branchname | cut -d- -f2`+git`git log --format=%h -1`"
> - branch release builds: Branch codename designation, official release
> number, source revision, opkg download from release repo
When one builds exactly a tag, it would be simply used as version, e.g.
16.11.1 - the buildbots can override it locally since they likely
produce the build before they tag the repo (to ensure successful building).
Assuming tags in the form "lede-xx.yy.buildno" it would be:
echo $tagname | cut -d- -f2
> - branch builds after a release: Branch codename designation, last
> release number known + changes after it, source revision, opkg download
> from last release repo
Assuming that for each released build we produce a tag then we would use
the tag as designation plus the current hash, e.g. "16.11.1+git6b40471"
or we can alternatively use the logic used for master and use the last
tag as version number and count the number of commits since it, e.g.
16.11.1+r5"
> So please consider that your script produces sensible config values at
> the source repo for all the cases.
I think the approaches mentioned above should cover these cases.
> Ps. I still hate how config options and include/version.mk mix
> CONFIG_VERSION_NUMBER vs. REVISION/commit, CONFIG_VERSION_NICK option
> vs. hardcoded RELEASE definition, and again CONFIG_VERSION_NUMBER vs.
> "HEAD" for VERSION_CODE. When looking at the release script, you might
> also consider if the config logic there needs some straightening.
Yes, we definitely need to untangle it, that is why I am seeking input.
~ Jo
More information about the Lede-dev
mailing list