注意:

The Funtoo Linux project has transitioned to "Hobby Mode" and this wiki is now read-only.

Funtoo Harvester Project

From Funtoo
Jump to navigation Jump to search
   Summary
The harvester project is focused on providing a meta-repo for testing and active development of Funtoo Linux
   People
   Latest Status

harvester/2023-11 has been merged into official Funtoo, and harvester/2024-02 has been created. Please hold off on PRs to harvester. We are going to define a more structured approach to harvester development very soon so we can move forward strategic initiatives.

01 February 2024

   Important

To submit a PR for harvester, please send a PR via code.funtoo.org and target the harvester/2022-09 branch of kit-fixups. coffnix is the master of the harvest and you should be sure to stay in contact with him in the #harvester channel on Funtoo Discord if you are using harvester.

Welcome to the harvester project! The harvester project is focused on providing a meta-repo that can be used for active development by Funtoo Linux contributors. This allows evaluation of experimental and potentially disruptive changes in a completely separate tree without impacting regular Funtoo Linux installs.

How To Use

Currently, harvester only provides an experimental next-release tree.

To use harvester on an existing next-release system, add the following lines to your /etc/ego.conf:

   /etc/ego.conf
[global]
release = next
sync_base_url = git://harvester.funtoo.org/funtoo/tree/{repo}

Then, back up your existing meta-repo, and re-sync the new harvester meta-repo:

root # cd /var/git
root # mv meta-repo meta-repo.bak
root # ego sync

Your system will now have the harvester next-release meta-repo available to it, so you can test the latest experimental changes in harvester via emerge.

The Harvester Concept

Harvester exists as a branch of kit-fixups, which is listed at the top of this page. harvester.funtoo.org generates a tree using this special branch, containing experimental changes. These changes are made available via git from harvester.funtoo.org directly.

After a certain period of time, a new harvester branch will be created with a new datestamp, which will be in sync with the then-current production next-release, and new PRs can be submitted to make new experimental changes. This ensures that harvester doesn't diverge too much from the production next-release, and also creates necessary incentive to merge changes tested in harvester into the official production next-release.

How To Submit

As with all PR's, it is required that you open an issue on bugs.funtoo.org. Once this is done, and the issue has been triaged so that is no longer in the "Intake" state, it is possible to start progress on the issue and submit a PR referencing the issue, targeting the kit-fixups branch listed at the top of the page. The PR will be on an accelerated track to be merged into harvester. When the harvester tree is next regenerated, the change will appear in the tree and ego sync will make it available on any Funtoo Linux systems using harvester.

Once your changes have been sufficiently tested, it is then possible to submit a vetted PR to the production next-release tree, by submitting a PR to the kit-fixups master branch.

Using Sourced Kits

Most kits can receive new ebuilds and autogens via kit-fixups, and thus it is easy to add experimental ebuilds and autogens to most kits, but there are exceptions.

Any "sourced" kits are kits that are fully self-contained in their own repos, such as gnome-kit-sources. You can find a full list of sourced kits by looking at kit-fixups/browse/releases/next/repositories.yaml -- any kit with kind: sourced is a sourced kit. This means that kit-fixups isn't used to "tweak" the contents of the kit -- instead, the ebuilds and autogens come from the referenced branch as-is, and all updates appear in this separate "sources" repo and branch.

This creates a problem for harvester -- how do you inject experimental changes into sourced kits? The answer is to coordinate with our master of the harvest so that we can create a special harvester branch on the sourced kit for you, and update our YAML so that this harvester branch is used for our harvester tree. Basically, we will create a harvester/YYYY-MM branch in the sourced kit, and then you submit the PR against that. We don't do this automatically since many kits are not sourced and the creation of these branches is not yet automated.

   Note

We will probably automate the creation of harvester branches for sourced kits in the near future, and add details here about how to submit to harvester for sourced kits.