[LEDE-DEV] Release Preparation Questions

James Feeney james at nurealm.net
Sun Nov 20 21:09:09 PST 2016


On 11/20/2016 08:26 PM, David Lang wrote:
> replying to details other than the feeds concept/
> ...
>> There were two different definitions offered.  I'm guessing that you meant the
>> "build number" after the "major.minor" version number.
> 
> not quite
> 
> the branch would be Year.Month, tags/builds within that branch would be
> Year.Month.Build

Ok, I get that.

> ...
>> Hmm - it is still not clear to me how the term "branch" will apply here,
>> because: 1) the hierarchy of "base.feeds" is referencing four *other* git
>> repositories, each of which has its *own* "head" branch name, each of which - I
>> assume - may be changed or selected independently; and 2) the "feeds" link list
>> does *not* have any version information within it, itself.
> 
> The branch is really based on the LEDE maintained git repository, ignoring the
> feeds that are not maintained by LEDE or OpenWRT.
> 
> There is an interesting question of how to refer to what state of each feed you
> use for a release. Currently OpenWRT doesn't even try to do this. The feed
> version you get is the feed version that exists at the time you last pulled from
> the feeds.

Uhm - I'm a bit taken aback by that.

> This hasn't been a big problem in practice, but it does mean that you don't
> really have a repeatable build.

I would have thought that that was a "show stopper".  It certainly does not
inspire confidence.

I say this is a "problem" and should be a high priority issue.

> See my other e-mail about submodules for a
> discussion on this.

Yes, I looked at that.  It would seem to address and solve a number of issues.
There would be no need for a separate "manifest", and, most importantly, there
would be a git "snapshot" of the *entire* project state.  If I understand, that
also means there would be a unique git tag that would label that state, and
could be associated with any kind of specific nickname, version, and build
number.  It would mean that every build was repeatable.

>> It would be possible, I suppose, that each of these linked repositories could be
>> *required* to use the *same* versioned naming scheme.
> 
> can't be done, these other repositories are not under our control. The most we
> can do is reference exactly which release we use..

I see that now.

> ...
> actually, the LEDE/OpenWRT releases are long, they are trying to get them down
> to only a year or so.
> 
> What most people end up using is the roughly the equivalent of the nightly
> builds, but even more granular in that people grab the source code and compile
> it, so they get up-to-the-minute changes, not even nightly snapshots.

I don't understand the point of having a LEDE "release" then.  But then, I
prefer using Arch, a rolling release distribution, where other people prefer
something like Debian, for stability.  So maybe LEDE would have a yearly
"release" version for some people, and other people can grab the latest buildbot
build?  Or compile it themselves.

With the git submodule idea, LEDE could have a repository that even includes the
entire cross-compiler tool chain?  Or maybe that's going too far?

>> Cyanogenmod uses the term "manifest" instead of "feed", and uses "repo", a
>> specialized "repository management tool that we built on top of Git."  You are
>> familiar?  In a sense, the top level of the build system is the "manifest" file
>> "default.xml" with its own web page, https://github.com/CyanogenMod/android.
>> Hmm - LEDE has a program "[source.git] / scripts / feeds", which serves the same
>> function as "repo", yes?  Maybe I begin to understand.  And then, the term
>> "feed" would actually mean one of several git source code repositories
>> enumerated in the LEDE "manifest".  And "feeds" means a LEDE git repository
>> management and build utility.
> 
> more or less. OpenWRT was stuck for a long time using subversion instead of git,
> so things developed differently, but you seem to be mapping the concepts more or
> less correctly.

Ok, thanks for confirming.

>> I think that, essentially, I must understand how a LEDE build version number can
>> be related to an instantaneous version of four independent git repositories.
> 
> ignore the feeds for now, they are not part of the LEDE release.

Yeah, I see now how that works - scary, but clarified.

>> Would it be useful to version the manifest, and have the versioned manifest
>> enumerate specific versions of the manifest components?  I assume that each
>> component could specify an instantaneous snapshot version of each master branch
>> of that component?  Perhaps git tags could be included inside the manifest, and
>> no one would have to memorize or recognize or refer to these, because the
>> manifest itself would have a human readable version number, as in
>> "year-month-build".
> 
> that would be inventing another layer of abstraction, I don't think we need to
> do that. But this is the submodule discussion I raised in another branch of this
> thread.

Again, git submodules would answer all of those issues.  And there would be no
need for another one-off custom build tool, like "repo" or "feeds".

> ... 
> The first thing to do is to ignore the feeds and all software involved in them..

Well, based on what I am understanding now, that would be an oversimplification,
but I get the idea.

>> The terminology would make more sense to me if "base" referred to a "base
>> package" which include the linux kernel and required utilities, unique to each
>> hardware system,
> 
> it does.

Ok, I'll assume that then.

>> even though it were a "package" that could not be installed by
>> opkg.  As I understand, the kernel and the root file system have to be installed
>> together, as a matched set, though I cannot say why.
> 
> partly for historical reasons, partly because LEDE/OpenWRT are usually installed
> on systems that have very little storage, so you don't have a 'normal'
> filesystem that you can replace different parts of, you have a compressed
> filesystem where everything you are installing has to be combined into one blob
> and installed all at once.

Ah!  Thanks for that.  On reflection, yes, of course.  That makes sense.

>>  The "version number" would
>> imply the version of this LEDE "base package".  The LEDE "source" would refer to
>> just the git repository "https://git.lede-project.org/", and the git directory
>> "source.git" would instead be named "build.git". The file "feeds.conf.default"
>> could be called "manifest.default", which would be a concept shared with
>> Cyanogenmod.

> I hate to disappoint you, but Cyanogenmod's terminology is pretty unique to it,
> it's not universal. It makes more sense to you because you ran across it first,
> but changing the terminology in LEDE would just add to the confusion of the
> exisiting LEDE/OpenWRT users and introduce incompatibilities with years of
> documentation and how-tos
> 
> The version does refer to the exact state of the LEDE maintained git repository
> (feeds are a different/complicating issue)

Git submodules ;)


> David Lang
James



More information about the Lede-dev mailing list