[LEDE-DEV] Release Preparation Questions
Jo-Philipp Wich
jo at mein.io
Sun Nov 20 04:59:57 PST 2016
Hi,
> Right off, I see the term "buildno" being used twice in a "name": 1) "version
> number X.Y.Z ... Z the build number", and 2) "$version/targets/ar71xx/generic/
> packages/$buildno". This appears redundant, and redundancy is a bad idea in
> this context.
$version will contain just X.Y, there is no redundancy in the URL, example:
http://downloads.lede-project.org/16.11/targets/ar71xx/generic/packages/0
> "Human readability" is an issue here, where "r5" is easier to recognize than
> "git6b40471". If "information" is not essential *do not* use it in a "name".
Agreed.
> Looking through these posts, I see the following terms used. I "think" I know
> what some of them mean, but I am naive and am probably misunderstand what all
> these terms *actually* mean. Still, this is a very long list of terms to apply
> to a unique "name". If, in fact, each of these "terms of art" are both a)
> distinct, and b) essential, then the "version number", as used in the
> introductory post - "any related resources like download URLs, Git repositories
> etc. are using predictable names which can be constructed from the version
> number" - must contain the entire set of "independent variables", in order to
> convey the required information. I count twenty independent variables:
>
> 1) base repository
This is always the same - http://git.lede-project.org/source.git
> 2) external feed repos
Those are described in feeds.conf.default within the base repo.
> 3) feed source branches
Those are described in feeds.conf.default within the base repo.
> 4) release branch number
This is an input variable, major.minor version, usually year.month for
simplicity, e.g. 16.11
> 5) commit tags
These are git tags which exactly match the source state used for
building binary artifacts.
> 6) builds
Builds are the binary artifacts produced.
> 7) master
Always the master branch of #1 - this is a fixed property for the project.
> 8) release branch
This is the branch used for all builds within a major.minor version,
e.g. 16.11.0, 16.11.1 ... 16.11.N are all built from a release branch
called "lede-16.11".
> 9) release number
Always variable #4 + the number of the build being produced from a branch
> 10) branch release builds
Same as #6
> 11) package feeds
Same as #3
> 12) commit hash
Equivalent to #5
> 13) source branch
Equivalent to #8
> 14) subrelease
Any release within a base version, e.g. 16.11.0, 16.11.1, 16.11.2 -
think of them as patch levels - e.g. when images have to be rebuilt with
a newer version of some component due to security updates.
> 15) new release
Term for the release getting prepared.
> 16) security fix
A security fix is an update to a software component in order to address
some vulnerability or undefined, potentially exploitable behavior.
If an optional additional package (e.g. ffmpeg) gets a security fix, the
package is simply rebuilt and people can install it using opkg update;
opkg upgrade ffmpeg.
If a builtin package or the kernel itself gain security fixes, the
images need to get rebuilt since people cannot update those components
with opkg.
> 17) nickname
Symbolic name given to an entire release branch, e.g. all 16.11.*
releases will carry the same nickname.
This is similar to Debian where the 8.0, 8.1, 8.2, 8.3, 8.4, 8.5 and 8.6
releases are called "Jessie" even if they're different "patch levels" or
"sub versions" of the Debian 8 release.
> 18) code name
Same as #18.
> 19) version number
Same as #9.
> 20) main firmware
No idea what you mean with that.
> You know the drill: Pretend that you are explaining this to a grade-school
> child.
I can try.
> My naive first impression is that, if the LEDE build process actually
> *requires* twenty different conceptual variables to designate a specific
> "version number", then something is probably wrong with the way this process is
> being managed.
No it does not require twenty different variables but it has to deal
with (currently) five independent repositories:
- git://git.lede-project.org/source.git
- feeds.conf.default: git://git.lede-project.org/feed/packages.git
- feeds.conf.default: git://git.lede-project.org/project/luci.git
- feeds.conf.default: git://git.lede-project.org/feed/routing.git
- feeds.conf.default: git://git.lede-project.org/feed/telephony.git
This thread is - among others - about defining a proper process for
coordinated branching and tagging in all these involved repositories to
condense the various repository:branch:revision vectors into just one
version number which then uniquely identifies a revision in
git://git.lede-project.org/source.git which carries a specific version
of feeds.conf.default which uniquely references a particular commit in
each of the external package feed repositories.
Example:
$ git clone git://git.lede-project.org/source.git lede-source
$ cd lede-source/
$ git checkout tags/16.11.0
$ cat feeds.conf.default
src-git packages
https://git.lede-project.org/feed/packages.git^28b4b51ba46ce97c60f45519c5af638b5e38d17d
src-git luci
https://git.lede-project.org/project/luci.git^1c27f6b462b7b488e75a5388198e97be00ba0835
src-git routing
https://git.lede-project.org/feed/routing.git^34a2618d2e41030df6cadbb0b8ff0272df34943c
src-git telephony
https://git.lede-project.org/feed/telephony.git^1f0fb2538ba6fc306198fe2a9a4b976d63adb304
> Still, I would encourage, a) writing-down an "essential" and "official" list of
> terms to be used in creating a LEDE software "release", b) explaining those
> terms to some naive person, and c) see if that person understood you.
I will get to it.
> So far, *I* do not understand what you guys are talking about - and I've been
> doing this open source software thing for over twenty years.
Did you ever build the complete LEDE or OpenWrt from scratch?
Regards,
Jo
More information about the Lede-dev
mailing list