Core Developer Reference
This page is a reference for Funtoo core developers.
A Futoo core developer is a memeber of the Core Team who help in the maintenance/evolution of Funtoo Linux.
Funtoo portage tree
A frequently asked question is: "What your portage tree is made of?". The answer lies in a Python script named merge.py present in the directory funtoo/scripts of the Funtoo overlay. Basically, this script:
- Takes a snapshot of the Gentoo portage tree (imported every 12 hours)
- Merges with the Funtoo overlay: the Funtoo historical development overlay (still maintained, the Funtoo overlay contains for example the scripts used to regenerate the Funtoo portage tree)
- Merges with the Multimedia overlay (only one package here -> media-video/mplayer-uau)
- Merges with the overlays maintained by several Funtoo developpers:
- Tarsius overlay (tarsius)
- Foo overlay (slashbeast)
- Bar overlay (404 error)
When a new core developer or contributor want to share his ebuild repository, he must:
- Ask for having a read-write access on the Funtoo overlay (With great privileges come great responsibilities, do not change something you are sure about, you will be very likely to break things so please ask before act).
- Clone the Funtoo overlay (use email@example.com:funtoo/funtoo-overlay.git, not git://github.com/funtoo/funtoo-overlay.git that later is a public read-only reference)
- Edit funtoo/scripts/merge.py:
bar_overlay = Tree("bar-overlay","/root/git/bar-funtoo-overlay", pull=True) multimedia_overlay = Tree("multimedia-overlay", "/root/git/multimedia-overlay",pull=True) your_overlay = Tree("name-of-your-overlay", "/root/git/name-of-your-overlay",pull=True) steps = [ SyncTree(gentoo_src,exclude=["/metadata/cache/**","sys-kernel/openvz-sources"]), ApplyPatchSeries("%s/funtoo/patches" % funtoo_overlay.root ), SyncDir(funtoo_overlay.root,"profiles","profiles", exclude=["repo_name","categories"]), (.... some lines removed ....) InsertEbuilds(bar_overlay, select="all", skip=None, replace=False), InsertEbuilds(multimedia_overlay, select=["media-video/mplayer-uau"], skip=None, replace=False), InsertEbuilds(your_overlay, select="all", skip=None, replace=False), GenCache() ]
Once the modifications are in place, just push merge.py back to github (and please, again, do that with a core team member on IRC)
# git push origin
Basically you define an ebuild tree object which points to your repository and tell the script:"Select all the content of my package tree, skip no packages and do not replace duplicates if any".