[Starlingx-discuss] [Build] CentOS-8 dnf support for modularity

Scott Little scott.little at windriver.com
Wed Nov 25 16:00:51 UTC 2020


Centos 8 feature branch can't currently build because dnf by default 
expects module data to be included in repo data.

A good link explaining modularity is here

     https://docs.fedoraproject.org/en-US/modularity/

It appears to be a way to groups of packages, and to support multiple 
versions of the package group from a common base os. e.g. They are 
likely concurrently supporting python2 and python3 through modularity.  
The build tooling described to support modularity is entirely centered 
around a fedora hosted build service.  My limited exploration of the 
subject has not yet found a way to build independently of the fedory 
build service.  CentOS specific documentation is also something wasn't 
able to find quickly.

Does StarlingX need to support modularity?  This needs to be considered 
at multiple stages.

1) CENGN Mirroring.

    CENGN probably needs to support modularity in it's mirroring process 
before any consideration of supporting modularity in the rest of the 
build process can be considered.

2) Download phase.

    Our downloads are currently driven by 'lst' files that state 
specific versions of a packages.  We don't use non-versioned packages, 
nor meta-packages, nor capabilities.  Modularity seems like just another 
way to map an abstraction to a set of packages, and doesn't allow us to 
control with specificity which versions of those packages we take.  If 
we wish to retain that level of control going forward, modularity 
doesn't help us download the packages we want

3) Build phase

    generate-centos-repo.sh generates a single repo from all the 
carefully selected rpms that we have downloaded.  At this stage, I see 
no need to support modularity whatsoever.



Fu Yong's update tries to support modularity within the Centos 8 feature 
branch ...

    https://review.opendev.org/c/starlingx/root/+/739883

    It appears to be re-introducing modularity at stage 3, ignoring 
stages 1 and 2.  It is using a modules.yaml of unknown origin. It names 
package we don't have. For packages that we do have, it would have to be 
kept in sync with our lst files. Keeping up with packages we build for 
ourselves is a whole other matter.  It does not live in stx-tools.  And 
at the end of the day, we don't need it to build the iso beyond telling 
dnf to not fail of module data is not found.


My proposed updates to master branch to support building Centos 7 based 
distro from a Centos 8 (or 7) build environment ...

    https://review.opendev.org/c/starlingx/root/+/762701

    https://review.opendev.org/c/starlingx/tools/+/762700

    My approach is to not even attempt to support modularity at this 
time.  We don't need it.  We can explore supporting it at a later time.





More information about the Starlingx-discuss mailing list