Difference between revisions of "Development Guide"

From Funtoo
Jump to navigation Jump to search
(18 intermediate revisions by 3 users not shown)
Line 1: Line 1:
This page is intended to be a developer guide for Funtoo Linux.
=== Overview ===


== Learn About Ebuilds ==
Okay, so you want to get involved. How do you do it? Well, here's how we want you to start:
* [[Local_Overlay]] -- take the crash course of setting up a local overlay, revision bumping a package, testing, and syncing to github.
 
* [[Git_local_overlay]] -- drobbins' local overlay guide, less of a crash course, better permissions, and better suited for large overlays.
* First, make sure you have the ''current release of Funtoo Linux installed'' on at least one system.
* [[Portage Variables]] -- learn about all those variables inside an ebuild, and in <tt>make.conf</tt>.
* Find things that need fixing on [https://bugs.funtoo.org the bug tracker], and submit fixes for them ('''see video below on how.''')
* [[Forking An Ebuild]] -- explains how to take an ebuild from Gentoo and fork it, so you can make local changes.
* If you have a new ebuild, submit a pull request to [https://code.funtoo.org/bitbucket/projects/CO/repos/flora/browse flora] or the [https://code.funtoo.org/bitbucket/projects/CO/repos/ncse-overlay/browse Naval Computational Science and Engineering Overlay].
* [[Ebuild Functions]] -- <tt>src_unpack</tt>, <tt>src_compile</tt> -- these are ebuild functions. There are others. See all of them and learn how they work.
* Testing things and finding bugs is also a form of help.
* Help us document stuff on the wiki. See [[Help:Funtoo Editing Guidelines|How to 'wiki']].
* Hang out in [https://discordapp.com/invite/BNUSpUU Funtoo Discord] or [https://discordapp.com/invite/BNUSpUU Funtoo Telegram Channel] and chat with us.
* Learn more about ebuilds by perusing the documentation below. Ask questions. Try out [[Metro]].
* Announcements are posted to the [https://forums.funtoo.org/forum/5-news-and-announcements/ News and Announcements] section of Funtoo Forums.
* To track other updates, such as wiki updates, subscribe to [[Funtoo_RSS_and_Atom_Feeds|funtoo's RSS and Atom feeds]].
 
=== Getting Started ===
 
To get started with Funtoo development, it's strongly recommended that you first watch the following video, which will introduce you to code.funtoo.org and explain how to use it to fork a repository and create a pull request. Forking a repository and creating a pull request is the best way to start doing Funtoo development:


== Funtoo Internals ==
{{#evt:service=youtube|id=https://youtu.be/W4FqBLgzhVc|dimensions=480|alignment=center|autoresize=true}}


* [[Multiple ABI Support]] -- learn how the <tt>gcc</tt> wrapper and <tt>multilib.eclass</tt> work in Gentoo and Funtoo.
{{#evt:service=youtube|id=https://youtu.be/V6PfB64oMWo|dimensions=480|alignment=center|autoresize=true}}


== Portage ==
Here is a follow-up video with close to an hour of tutorial-style instruction:


* [[Portage (Funtoo)]] -- learn about Funtoo changes to Portage (needs updating).
{{#evt:service=youtube|id=https://youtu.be/xUzjfyAZcq8|dimensions=480|alignment=center|autoresize=true}}
* [[Portage Dynamic Slot]] - dynamic SLOT functionality now in Portage.


== Metro ==
=== Funtoo Distinctives ===


* [[Metro Quick Start Tutorial]] -- learn how to use Metro, our automated build tool.
To get familiar with Funtoo Linux internals, such as [[kit-fixups]], and how they work, please be sure to read the following pages:
* [[Metro]] - a full index of Metro-related documentation.


== Working With Git ==
* [[Kit-fixups]]
* [[Kit-fixups/FAQ]]
* [[Kit-fixups/foundations.py]]
* [[Kit-fixups/Package Sets and Move Maps]]
* [[Creating Your Own Meta-Repo and Kits]]


Also check out:
=== Ebuild Writing ===


* [[Git Merging Guide]]
To learn more about ebuilds and how to write them, the following pages are available:


Learning how to help squash out bugs can be a difficult thing to do, especially since sometimes JIRA looks a little overwhelming and confusing. A thank you to Daniel for making some videos (see below) on explaining this better, but there were a couple things left out. So I will take you through that. (With picture reference).
* [[Portage Variables]] -- learn about all those variables inside an ebuild, and in <tt>make.conf</tt>.
* [[Ebuild Functions]] -- <tt>src_unpack</tt>, <tt>src_compile</tt> -- these are ebuild functions. There are others. See all of them and learn how they work.
* [[Ebuild for package without sources]] -- how to make a package with no sources.


The first thing you're going to want to do is make an account, which is simple as clicking on the 'Log in' button on the top right, then clicking 'Sign up'.
For a more comprehensive reference of all the details of ebuild development, please see the [https://devmanual.gentoo.org/ Gentoo Development Manual.]
[[File:Signupjira.png|720px|center]]


After you've made your account, the best way to watch bugs is to click on the 'Agile' drop-down menu, and choose 'Classic'.
=== Advanced Topics ===
[[File:Agileclassic.png|720px|center]]


Now, we're going to want to change a couple things even with this. By default, the 'Classic' mode takes you to 'Classic Planning Board', you want to change this to 'Classic Task Board'. This makes things much easier to read.
If you are maintaining several ebuilds for Funtoo, you may find it more convenient to maintain your own ''overlay'' and have us pull new versions of ebuilds from you, rather than having to create a pull request. For information on how to do this, see [[Creating Your Own Overlay]].
I also recommend going to the '''Views''' eyeball icon to the right and selecting the '''List''' issue view, and the '''Compact (Kanban)''' task board mode. This will give you a top-level overview of all our bugs and their statuses, and JIRA will remember your view preferences the next time you log in.


[[File:Classicview.png|720px|center]]
Even more advanced users may want to use our own tree update scripts to generate their own customized meta-repo and kits. For information on how to do this, see [[Creating Your Own Meta-Repo and Kits]]. This document also covers the functionality of our tree update scripts in detail, and will give you some insight into how to work with the {{c|kit-fixups}} repository effectively.


After that, we're almost ready to rock and roll. We need to also make sure that you're not set to any version or we'll only see a few bugs. So in case it says '1.1' or '1.0' change it to 'Unscheduled'.
To learn how to build your own Funtoo stages, please look at documentation for [[Metro]].
[[File:Jiraversion.png|720px|center]]


And after all that, you can view and look at bugs that are in queue, To-do, or testing, which Daniel's videos are very great at explaining. Thanks for helping Funtoo Linux better and better.
=== Pages that need updating ===


<center>{{#widget:YouTube|id=JCg5DWjy6Ro|width=720}}
{{Warning|These pages are stale and need updating!}}


{{#widget:YouTube|id=tuFE9ZgVOpY|width=720}}
* [[Forking An Ebuild]] -- explains how to take an ebuild from Gentoo and fork it, so you can make local changes.
* [[Portage (Funtoo)]] -- learn about Funtoo changes to Portage (needs updating).
* [[Portage Dynamic Slot]] - dynamic SLOT functionality now in Portage.


[[Category:Development]]
[[Category:Development]]
[[Category:Official Documentation]]

Revision as of 10:41, May 15, 2020

Overview

Okay, so you want to get involved. How do you do it? Well, here's how we want you to start:

Getting Started

To get started with Funtoo development, it's strongly recommended that you first watch the following video, which will introduce you to code.funtoo.org and explain how to use it to fork a repository and create a pull request. Forking a repository and creating a pull request is the best way to start doing Funtoo development:

Here is a follow-up video with close to an hour of tutorial-style instruction:

Funtoo Distinctives

To get familiar with Funtoo Linux internals, such as kit-fixups, and how they work, please be sure to read the following pages:

Ebuild Writing

To learn more about ebuilds and how to write them, the following pages are available:

For a more comprehensive reference of all the details of ebuild development, please see the Gentoo Development Manual.

Advanced Topics

If you are maintaining several ebuilds for Funtoo, you may find it more convenient to maintain your own overlay and have us pull new versions of ebuilds from you, rather than having to create a pull request. For information on how to do this, see Creating Your Own Overlay.

Even more advanced users may want to use our own tree update scripts to generate their own customized meta-repo and kits. For information on how to do this, see Creating Your Own Meta-Repo and Kits. This document also covers the functionality of our tree update scripts in detail, and will give you some insight into how to work with the kit-fixups repository effectively.

To learn how to build your own Funtoo stages, please look at documentation for Metro.

Pages that need updating

   Warning

These pages are stale and need updating!