Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do I extend someone else's repo manifest?

In my project, I want to take an existing Yocto setup for the Automotive Grade Linux distribution and add some layers with recipes for our own components.

There exists a manifest file, publicly available, on their gerrit site. What I'd like to do is basically

<manifest>
    <include url="<url of AGL manifest>" />
    <remote name="mysite" fetch="ssh://gerrit.mysite.com" />
    <project name="mylayer1" path="mylayer1" />
    <project name="mylayer2" path="mylayer2" />
</manifest>

The aim being that a repo init command pointed to my manifest first fetches all the repositories mentioned in the "included" manifest, then proceeds to fetch all my own meta layers.

The problem is that the include element is meant for including other manifests within the same repository specified on the repo init command line.

I could simply copy their manifest into my own repository, with a different name, and create my own manifest along side it. Or I could just reproduce their file and edit it.

But maintaining it will be a pain and extremely error prone. Especially as the upstream manifest is used not only to specify the repositories, but to pin each one to specific commits as a form of version control within Yocto.

I can't believe such an obvious use-case hasn't been considered and addressed.

So, at the risk of being closed as "too broad" or for requesting recommendations, has anyone already solved this problem? If so, how?

like image 340
kdopen Avatar asked Feb 28 '17 22:02

kdopen


People also ask

Does repo sync update the manifest?

If the manifest changes, "repo sync" will update it automatically on the next sync.

What is a repo manifest?

A repo manifest describes the structure of a repo client; that is the directories that are visible and where they should be obtained from with git. The basic structure of a manifest is a bare Git repository holding a single default. xml XML file in the top level directory.

How do you use local manifest?

To add to the contents of the default manifest, create a folder called local_manifests under the . repo directory, then create an XML file (text file with . xml extension) inside that directory. You can call the XML file anything you like, as long as it ends in .

What is manifest file in yocto?

manifest : This lists the recipe names, versions, licenses, and the files of packages that are available in build/tmp/deploy/image/<machine> but not installed inside rootfs . The most common examples are the bootloader, the Linux kernel image, and DTB files.


2 Answers

I highly doubt there is a way to do this using the repo tool.

Wind River has a solution, and there has been talk of moving this into oecore:

https://github.com/Wind-River/wr-lx-setup

I'm not sure if this will do exactly what you are looking for, but it solves the problem that you are describing.

Historically, people have used repo (freescale-community-bsp), combo-layers (Ostro), or simply rolled their own solution. This setup tool is an attempt to standardize the way layers are assembled.

like image 165
Stephano Avatar answered Nov 14 '22 05:11

Stephano


You can use local_manifest.xml. Under .repo/ create a directory named local_manifests/. You can add a file local_manifest.xml

You can add you own remote, default and projects that are to be fetched from that remote.

I have used this feature with repo 1.23

like image 41
sob Avatar answered Nov 14 '22 05:11

sob