Difference between revisions of "Overlay:Flora"

From Funtoo Linux
Jump to: navigation, search
(A Days work with flora)
(updated note for Userpage integration on ebuilds ppl add to Flora)
(29 intermediate revisions by 6 users not shown)
Line 3: Line 3:
 
== What is flora ==
 
== What is flora ==
  
flora is the funtoo overlay for User Contribution to funtoo.
+
flora is Funtoo's overlay for user-contributed ebuilds. Why is it called flora? Let's have a look at the definition of flora.
  
Some of you may ask "Why they call it flora?"
+
# A group of plants, especially the indigenous plants of a particular time or region.
 +
# A book or treatise describing the plants of a particular region or time.
 +
# Bacterial organisms, like those that naturally inhabit a bodily organ or appendage, e.g. intestinal flora.
  
For that have a view at the definition for flora:
+
We hope that only the first two definitions will be taken into account when submitting ebuilds to flora. We try to uphold Funtoo's high standards in ebuilds submitted to flora. It would be unrealistic to expect users not to make mistakes, however. As we are all humans (hopefully) and all humans make mistakes, just give us a call if you make a mistake so that we can take care of it as soon as possible. :)
  
# Plants considered as a group, especially the plants of a particular country, region, or time.
+
The following image gives you an overview on how the Funtoo Portage tree and especially flora is structured:
# A treatise describing the plants of a region or time.
+
# The bacteria and other microorganisms that normally inhabit a bodily organ or part: intestinal flora.
+
 
+
We hope that for ebuilds submittet only the first 2 definitions would be suitable :)
+
  
 
[[File:Funtoo-overlay-structure2.png]]
 
[[File:Funtoo-overlay-structure2.png]]
  
== How to work with ... ==
+
== How to... ==
  
=== ... flora ===
+
=== ... work with flora ===
  
 
==== Core Team ====
 
==== Core Team ====
Core Members can directly push to flora, they have the appropriate rights, just do
+
Core Members can push directly to flora as they already have the appropriate rights. Just do:
  
 
<pre>
 
<pre>
 
cd <your dir for overlays>
 
cd <your dir for overlays>
git clone git@github.com:funtoo/flora.git
+
git clone repos@git.funtoo.org:flora.git
 
</pre>
 
</pre>
  
Now you will be able to push to and pull from flora. For development in git I would all members advice to use git-flow, since we get a clean structure without any stuff of development left in the later overlay that way. ;) See for it the [[Git Guide]] and the [[flora#... git-flow]]
+
You will now be able to push/pull to and from flora. For development in git I would advise all members to use git-flow, since it ensures a clean working copy without any development stuff left over and pushed to the overlay. See the [[Git Guide]] and [[flora#... git-flow]] for more information on git-flow.
 +
 
 +
===== merging in Upstream User Contributions =====
 +
The workflow is splitted into some easy steps just follow the next instructions:
 +
 
 +
* Add the forks to our flora clone:<br>The general syntax to add a remote clone for flora is:<pre>git remote add <username> git://github.com/<username>/flora.git</pre>so far the following forks are known and can be added if you copy the context:<pre>git remote add timoahummel git://github.com/timoahummel/flora.git&#10;git remote add leprosys git://github.com/leprosys/flora.git&#10;git remote add init6 git://github.com/init6/flora.git&#10;git remote add tarsius git://github.com/tarsius/flora.git&#10;git remote add tobert git://github.com/tobert/flora.git&#10;git remote add stasikos git://github.com/stasikos/flora.git&#10;git remote add trq git://github.com/trq/flora.git&#10;git remote add keenblade git://github.com/keenblade/flora.git&#10;git remote add edwtjo git://github.com/edwtjo/flora.git&#10;git remote add strowi git://github.com/strowi/flora.git&#10;git remote add ipalaus git://github.com/ipalaus/flora.git&#10;git remote add N4th4 git://github.com/N4th4/flora.git&#10;git remote add jmarcet git://github.com/jmarcet/flora.git&#10;git remote add drzayer git://github.com/drzayer/flora.git&#10;git remote add cvantassle git://github.com/cvantassle/flora.git&#10;git remote add wishstudio git://github.com/wishstudio/flora.git&#10;git remote add Saint0fCloud git://github.com/Saint0fCloud/flora.git&#10;git remote add The-Judge git://github.com/The-Judge/flora.git&#10;git remote add kpacheco git://github.com/kpacheco/flora.git&#10;git remote add modethirteen git://github.com/modethirteen/flora.git&#10;git remote add sandikata git://github.com/sandikata/flora.git&#10;git remote add synchris git://github.com/synchris/flora.git&#10;git remote add vadmeste git://github.com/vadmeste/flora.git&#10;git remote add rh1 git://github.com/rh1/flora.git&#10;git remote add just1602 git://github.com/just1602/flora.git&#10;git remote add mozgwar git://github.com/mozgwar/flora.git&#10;git remote add rem7 git://github.com/rem7/flora.git&#10;git remote add akiress git://github.com/akiress/flora.git&#10;git remote add ereslibre git://github.com/ereslibre/flora.git&#10;git remote add dangergrrl git://github.com/dangergrrl/flora.git&#10;git remote add crazyfraggle git://github.com/crazyfraggle/flora.git&#10;git remote add nakaran git://github.com/nakaran/flora.git&#10;git remote add PaddyMac git://github.com/PaddyMac/flora.git&#10;git remote add deferi git://github.com/deferi/flora.git&#10;git remote add ozon git://github.com/ozon/flora.git&#10;git remote add mma git://github.com/mma/flora.git&#10;git remote add alexjp git://github.com/alexjp/flora.git&#10;git remote add funkycode git://github.com/funkycode/flora.git&#10;git remote add limansky git://github.com/limansky/flora.git&#10;git remote add fearedbliss git://github.com/fearedbliss/flora.git&#10;git remote add lebel git://github.com/lebel/flora.git&#10;git remote add SaThero git://github.com/SaThero/flora.git&#10;git remote add soulthreads git://github.com/soulthreads/flora.git</pre>
 +
 
 +
* Pull the changed/added files into your copy of flora, where username is the repo of the user that wants to add stuff to flora<pre>git fetch username</pre>
 +
 
 +
* Merge the branches into flora<pre>git merge username/master</pre>
 +
 
 +
* Push to ninja2<pre>git push</pre>
 +
 
 +
* Close the pull request on github, and no worry it will show you problems if you view the code again, as we already included the patch of the user :)
 +
 
 +
If you as a coreteam member do not have rights to edit issues on flora at github anymore please give [[User:drobbins]] or [[User:golodhrim]] a ping, so that you can close the request when you merged it... :)
  
 
==== User Contribution ====
 
==== User Contribution ====
  
For normal users that like to contribute it is a bit more complicated but we will now walk through it with you, helping you to do so.
+
For normal users that like to contribute it is a bit more complicated but we will walk you through it.
  
First you have to have a git-hub account, for that you can follow our [[Git Guide]] to get one. If you have already one keep on here, if not get one first.
+
First you need to have a GitHub account; you can follow our [[Git Guide]] to get one.
  
Since you should have a git-hub account now, go visit [https://github.com/funtoo/flora https://github.com/funtoo/flora] and use the fork button on the top to fork the repository to your own account so you can push to it later.  
+
Visit [https://github.com/funtoo/flora https://github.com/funtoo/flora] and use the fork button on the top to fork the repository to your own account so that you can push to it later.  
  
Now you should create a directory to contain the local copy of the overlay repository on your local disk. Let's say you use <tt>/root/.git</tt> for it, but you may use what ever you want to.
+
Now you should create a directory to contain the local copy of the overlay repository on your local disk. We'll use <tt>/root/.git</tt> for this example, but you can use whatever you want to.
  
 
<pre>
 
<pre>
 
cd /root/.git
 
cd /root/.git
git clone git@github.com:<your github username>/flora.git
+
git clone git@github.com:{your github username}/flora.git
 
</pre>
 
</pre>
  
Now you are nearly ready to contribute. You have flora cloned to /root/.git/flora now and we will go in it and make the necessary changes so we can work with it like we would. Read on in [[flora#... git-flow]].
+
Now you are nearly ready to contribute. Since you now have flora cloned to /root/.git/flora, you need to go in and make a few changes so that you can begin your work.
  
=== ... git-flow ===
+
=== ... work with git-flow ===
  
Since this is a very helpful tool, you should just emerge it and also the git-flow-completion package, as it will support you in your work.
+
Since this is a very helpful tool, you should emerge it and git-flow-completion, as they will support you in your work.
  
 
<pre>
 
<pre>
Line 56: Line 69:
 
</pre>
 
</pre>
  
When it is installed, move to your flora overlay and initialize the git-flow for it. In the following we suppose that you used /root/.git/flora for your overlay.
+
Once it is installed, move to your flora directory and initialize git-flow. In the following example we suppose that you used /root/.git/flora for your overlay directory.
  
 
<pre>
 
<pre>
Line 62: Line 75:
 
# git-flow init
 
# git-flow init
 
No branches exist yet. Base branches must be created now.
 
No branches exist yet. Base branches must be created now.
Branch name for prodution releases: [master] <ENTER>
+
Branch name for production releases: [master] <ENTER>
 
Branch name for "next release" development: [develop] <ENTER>
 
Branch name for "next release" development: [develop] <ENTER>
  
Ho to name your supporting branch prefixes?
+
How to name your supporting branch prefixes?
 
Feature branches? [feature/] <ENTER>
 
Feature branches? [feature/] <ENTER>
 
Release branches? [release/] <ENTER>
 
Release branches? [release/] <ENTER>
Line 74: Line 87:
 
</pre>
 
</pre>
  
Your main work will now be done in the develop branch. When you want to add a feature or do a hotfix you just do
+
Your main work will now be done in the "develop" branch. When you want to add a feature or a hotfix:
  
 
<pre>
 
<pre>
 
# git-flow feature start <name of feature>
 
# git-flow feature start <name of feature>
(Edit of feature)
 
 
</pre>
 
</pre>
  
You can at any time switch to the development branch again with  
+
You may switch at any time to the development branch again with:
  
 
<pre>
 
<pre>
Line 87: Line 99:
 
</pre>
 
</pre>
  
To see which features you have open you can use
+
To see which features you currently have open:
  
 
<pre>
 
<pre>
Line 93: Line 105:
 
</pre>
 
</pre>
  
If your feature is finished do
+
Once your feature is finished:
  
 
<pre>
 
<pre>
Line 99: Line 111:
 
</pre>
 
</pre>
  
For a hotfix to any of your ebuilds you use
+
For a hotfix to any of your ebuilds:
  
 
<pre>
 
<pre>
Line 105: Line 117:
 
</pre>
 
</pre>
  
Now you can hotfix the ebuild and do a simple
+
After applying the appropriate fixes:
  
 
<pre>
 
<pre>
Line 111: Line 123:
 
</pre>
 
</pre>
  
Now that we now how to add features, do hotfixes and support work, we still need to know how to do a release. This is done like that:
+
Now that you know how to add features, hotfixes, and support work, you still need to know how to make a release.
  
 
<pre>
 
<pre>
 
# git add <directory or file>
 
# git add <directory or file>
 
# git commit
 
# git commit
(Now your editor will appear if you followed our Git Guide)
+
Your editor will appear if you followed our Git Guide)
 
# git-flow release start <name>
 
# git-flow release start <name>
 
Switched to a new branch 'release/<name>'
 
Switched to a new branch 'release/<name>'
Line 139: Line 151:
 
Deleted branch release/<name> (was <githash>)
 
Deleted branch release/<name> (was <githash>)
  
(your editor will come up so you cann give a release note, save and close your editor then.)
+
(Your editor will come up so you can write a release note, save and close your editor afterwards.)
  
 
Summary of actions:
 
Summary of actions:
Line 149: Line 161:
  
 
#  
 
#  
(as we are now on the master branch we can do the push and go back to development branch
+
(As you are now on the master branch, you can do the push and go back to the development branch.)
 
# git push
 
# git push
 
# git checkout develop
 
# git checkout develop
 
</pre>
 
</pre>
  
Now you should have an overview of how we like to work in flora and keep a clean structure in it.
+
You should now have an overview of how we like to work in flora and keep its contents clean.
  
 
This workflow model will then look like the following graph:
 
This workflow model will then look like the following graph:
Line 160: Line 172:
 
[[File:funtoo-struct-overlay-gitflow.png]]
 
[[File:funtoo-struct-overlay-gitflow.png]]
  
== Notify us about your commit ==
+
=== ... keeping in sync with upstream ===
  
To make us aware that you commited something go again to your github.com account and give us a Pull Request, so we can have a short review of your push and include it that way into the main tree. If you started working on an ebuild please let us know that you are responsible for it by adding your data to [[ebuild Maintainer list]]
+
To keep in sync with upstream Funtoo flora just do the following steps.
  
== A Days work with flora ==
+
First you need to add a new remote to your configuration, it is really easy and you should sync with upstream from time to time again.
  
At that point you should should already have a copy of flora and you should be firm with the git-flow extension for github... :) fine so we are ready to start our dayly work flora now.
+
So change to your clone of flora and execute the following commands:
  
First we need to keep in sync with the mainstream flora repository, that could be done really easy...
+
<pre>
 +
$ cd <path/to/flora/>flora
 +
$ git remote add upstream git://github.com/funtoo/flora.git
 +
</pre>
  
first add a upstream branch to your flora clone:
+
That's all, was a one timer.
{{shell
+
From now we just need to keep in sync from time to time.
|Input = $ git remote add upstream git://github.com/funtoo/flora.git
+
 
}}
+
That is nearly as easy as the above:
 +
 
 +
<pre>
 +
$ git fetch upstream
 +
$ git merge upstream/master
 +
</pre>
 +
 
 +
Now you are in sync with our upstream version of flora again.
 +
Please do the last two steps regulary (maybe cron?).
 +
 
 +
== Flora Main Ruleset ==
 +
 
 +
As we want to keep up the high standard for ebuilds in flora like we provide in our portage trees (portage, funtoo-overlay) you should write your ebuilds clean and with the needed care.
 +
 
 +
Please respect our following rules:
 +
 
 +
* Test your ebuilds before pushing them to us.
 +
* generate the needed "Manifest" files for your ebuilds. If they are missing we will reject them and drop your request. The only exception to the previous rule is that your ebuild is a git-based ebuild, as the manifest would then be empty and so not pushed. All other ebuilds need to have one.
 +
* If you write your ebuild please make sure you add the following to your header:
 +
  <pre>
 +
    # Copyright 2012 Funtoo Technologies
 +
    # Distributed under the terms of the GNU General Public License v2
 +
  </pre>
 +
* push one ebuild-category at one request! if something is missing we won't need to reject all your requests.
 +
* Add a metadata.xml fill too all your ebuilds, so we know who is responsible for the ebuild. the Syntax is like that:
 +
  <pre>
 +
    <?xml version="1.0" encoding="UTF-8"?>                                                         
 +
    <!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
 +
    <pkgmetadata>
 +
        <herd>no-herd</herd>
 +
        <maintainer>
 +
            <email>email1@domain.tld</email>
 +
            <name>Name of Maintainer 1</name>
 +
        </maintainer>
 +
        <maintainer>
 +
            <email>email2@domain.tld</email>
 +
            <name>Name of Maintainer 2</name>
 +
        </maintainer>
 +
        <use>
 +
            <flag name='USE-Variable-1'>Description of Variable 1</flag>
 +
            <flag name='...'>...</flag>
 +
            <flag name='USE-Variable-n'>Description of Variable n</flag>
 +
        </use>
 +
        <upstream>
 +
            <changelog>URL to Online Changelogs</changelog>
 +
        </upstream>
 +
    </pkgmetadata>
 +
  </pre>
 +
* Add yourself as a Maintainer for your ebuild to our Page so we users have an option to easily find who is responsible and give him a ping in IRC for errors.
 +
 
 +
Thanks for following the rules. We appreciate your participation. Please don't forget to add yourself to the [[ebuild Maintainer list|Maintainer List]], as it would save us some work too.
 +
 
 +
== Notify us about your commit ==
 +
 
 +
To make us aware that you committed something go to your GitHub account and send us a Pull Request so we can perform a quick review of your push and include it into the main tree. If you started working on an ebuild, please let us know that you are responsible for it by adding your data to [[ebuild Maintainer list]].
 +
 
 +
== A day's work with flora ==
 +
 
 +
At this point you should already have a working copy of flora and you should be knowledgeable about git-flow. You should now be ready to start your daily work with flora.
  
then you can keep updated with flora via the following commandsequence:
+
First you need to make sure your copy of flora is synchronized with the main flora repository.
  
 
{{shell
 
{{shell
| Desc = Keeping flora updated with upstream
+
| Desc = Add an upstream branch to your working copy
 +
| Input = $ git remote add upstream git://github.com/funtoo/flora.git
 +
| Desc = Keeping flora up-to-date with upstream
 
| Input = $ git fetch upstream<br>
 
| Input = $ git fetch upstream<br>
 
remote: Counting objects: 54, done.<br>
 
remote: Counting objects: 54, done.<br>
Line 189: Line 264:
 
Updating 2c52d0d..af665e9<br>
 
Updating 2c52d0d..af665e9<br>
 
Fast-forward
 
Fast-forward
<table style="border:none; background-color:#000000; color:#00ff00">
+
<table style="border:none; background-color:#D8CCFF; color:#000000">
 
<tr><td>&nbsp; dev-java/asm/Manifest</td><td>{{!}}&nbsp;&nbsp;</td><td align=right>2</td><td> <font color=#00a300>+</font></td></tr>
 
<tr><td>&nbsp; dev-java/asm/Manifest</td><td>{{!}}&nbsp;&nbsp;</td><td align=right>2</td><td> <font color=#00a300>+</font></td></tr>
 
<tr><td>&nbsp; dev-java/asm/asm-3.3.1.ebuild</td><td>{{!}}&nbsp;&nbsp;</td><td align=right>35</td><td>  <font color=#00a300>++</font></td></tr>
 
<tr><td>&nbsp; dev-java/asm/asm-3.3.1.ebuild</td><td>{{!}}&nbsp;&nbsp;</td><td align=right>35</td><td>  <font color=#00a300>++</font></td></tr>
Line 211: Line 286:
 
<tr><td>&nbsp; .../eclipse-sdk/files/3.7/hamcrest-junit-lib.patch</td><td>{{!}}&nbsp;&nbsp;</td><td align=right>11</td><td>  <font color=#00a300>+</font></td></tr>
 
<tr><td>&nbsp; .../eclipse-sdk/files/3.7/hamcrest-junit-lib.patch</td><td>{{!}}&nbsp;&nbsp;</td><td align=right>11</td><td>  <font color=#00a300>+</font></td></tr>
 
<tr><td>&nbsp; dev-util/eclipse-sdk/files/3.7/iterators.patch</td><td>{{!}}&nbsp;&nbsp;</td><td align=right>70</td><td>  <font color=#00a300>++++</font></td></tr>
 
<tr><td>&nbsp; dev-util/eclipse-sdk/files/3.7/iterators.patch</td><td>{{!}}&nbsp;&nbsp;</td><td align=right>70</td><td>  <font color=#00a300>++++</font></td></tr>
<tr><td>&nbsp; profiles/docs/README.eclipse-sdk</td><td>{{!}}&nbsp;&nbsp;</td><td align=right>41</td><td>  <font color=#003300>++</font></td></tr>
+
<tr><td>&nbsp; profiles/docs/README.eclipse-sdk</td><td>{{!}}&nbsp;&nbsp;</td><td align=right>41</td><td>  <font color=#00a300>++</font></td></tr>
 
<tr><td>&nbsp; profiles/packages.mask/funtoo-flora-jeanfrancis</td><td>{{!}}&nbsp;&nbsp;</td><td align=right>27</td><td>  <font color=#00a300>++</font><font color=#ff0000>-</font></td></tr>
 
<tr><td>&nbsp; profiles/packages.mask/funtoo-flora-jeanfrancis</td><td>{{!}}&nbsp;&nbsp;</td><td align=right>27</td><td>  <font color=#00a300>++</font><font color=#ff0000>-</font></td></tr>
 
<tr><td>&nbsp; profiles/sets/eclipse-sdk/eclipse-sdk.unmask</td><td>{{!}}&nbsp;&nbsp;</td><td align=right>26</td><td>  <font color=#00a300>++</font></td></tr>
 
<tr><td>&nbsp; profiles/sets/eclipse-sdk/eclipse-sdk.unmask</td><td>{{!}}&nbsp;&nbsp;</td><td align=right>26</td><td>  <font color=#00a300>++</font></td></tr>
Line 246: Line 321:
 
}}
 
}}
  
That work should always be done before you start working in flora, so for your help you could also write a short shell script for it that could do the job for you, or copy our script here and place it in /root/bin/floraupdate
+
This should always be done before you start working in flora. To make it easier you can write a short shell script to automate this, or copy our script here and place it in /root/bin/floraupdate
  
 
<pre>
 
<pre>
Line 256: Line 331:
 
</pre>
 
</pre>
  
So that you would now like to start a new ebuild for a package you want to add to flora and so to funtoo make sure you are on the develop branch. You can check this with
+
When you would like to start a new ebuild for a package you want to add to flora sure you are on the development branch. You can check this with:
  
 
{{shell
 
{{shell
Line 264: Line 339:
 
}}
 
}}
  
it tells you with the asterisk your currently active working branch and if it isn't "develop" you switch there with:
+
The asterisk tells you which branch is currently your active working branch. If it isn't "develop" you switch there with:
 
{{shell
 
{{shell
 
| Input = $ git branch develop
 
| Input = $ git branch develop
 
}}
 
}}
  
now that you are in the right branch, you can start your work as your tree is up-to-date. :)
+
Now that you are in the right branch, you may begin your work as your tree should now be up-to-date. :)
  
 
=== Adding a new ebuild ===
 
=== Adding a new ebuild ===
 
for adding a new ebuild you do
 
  
 
{{shell
 
{{shell
Line 280: Line 353:
 
}}
 
}}
  
you will be now in the "feature/<name-of-ebuild>" branch, but be aware git-flow doesn't like whitespaces in the name-of-ebuild name.
+
You will be now in the "feature/<name-of-ebuild>" branch, but be aware that git-flow doesn't like whitespace in the name-of-ebuild name.
  
No you can work on the feature, let it be called ebuild in that context, if you finished with doing all the modifications of the ebuild you are going to include into flora, finish your work with a
+
Now you can work on the feature. When you are finished with doing all the additions and modifications of the ebuild you are going to push to flora, finish your work with:
  
 
{{shell
 
{{shell
Line 295: Line 368:
 
}}
 
}}
  
so now you can start adding a new ebuild with the same above procedure, you can always do
+
Now you can start adding a new ebuild with the same above procedure. To go back to your development branch without closing the feature branch you can do:
  
 
{{shell
 
{{shell
Line 301: Line 374:
 
}}
 
}}
  
to go back to your develop-branch without closing the feature-branch and that way you will not have included the feature-branch into development :)
+
This way you will not have included your feature branch with your development branch. You can have several ebuilds developed simultaneously without having to worry about your development branch being compromised. If you want to delete a branch, for instance if the ebuild has already been added by somebody else, do:
 
+
You can so have several ebuilds developed next to each other without having to worry about having your develop-branch compromised, if you want to delete a branch as the ebuild has been added by someone else already do
+
  
 
{{shell
 
{{shell
Line 309: Line 380:
 
}}
 
}}
  
where in the case above the <branch-name> would be "feature/<name-of-ebuild>". So far you are now able to work on the develop branch. and commit a new ebuild into your development branch :)
+
Where in the example above, the <branch-name> would be "feature/<name-of-ebuild>". You should now be able to work on the development branch, and commit a new ebuild to your development branch. :)
  
 
=== Doing a hotfix ===
 
=== Doing a hotfix ===
  
Now you got informed by users that there is a problem with your ebuild, and you know how to quickly solve it we do a hotfix for it, so you start now a hotfix for it with the following command:
+
Let's say that a user of one of your ebuilds has encountered an issue with it, and you already know how to fix the problem. You'll need to use the following command to make a hotfix for your ebuild:
  
 
{{shell
 
{{shell
Line 326: Line 397:
 
- Start committing your hot fixes<br>
 
- Start committing your hot fixes<br>
 
- When done, run:<br><br>
 
- When done, run:<br><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;git flow hotfix finish '<ebuild-name-you-do-the-hotfix-for>'
+
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$ git-flow hotfix finish '<ebuild-name-you-do-the-hotfix-for>'
 
}}
 
}}
  
Now you add all the stuff you need to fix the ebuild and then you are ready to publish your hotfix for it.
+
When you are done, you will need to publish your hotfix:
  
 
{{shell
 
{{shell
| Input = $ git flow hotfix finish <ebuild-name-you-do-the-hotfix-for>
+
| Input = $ git-flow hotfix finish <ebuild-name-you-do-the-hotfix-for>
 
Deleted branch hotfix/<ebuild-name-you-do-the-hotfix-for> (was 2c52d0d).<br><br>
 
Deleted branch hotfix/<ebuild-name-you-do-the-hotfix-for> (was 2c52d0d).<br><br>
 
Summary of actions:<br>
 
Summary of actions:<br>
Line 342: Line 413:
 
}}
 
}}
  
Now your Hotfix has been publish next is to push the hotfix for doing so read [[flora#Submitting your relase]]
+
Now your hotfix has been published. Your next step is to push it. Read [[flora#Submitting your release]] for more information.
  
 
=== Doing a release of your ebuild ===
 
=== Doing a release of your ebuild ===
  
Now that you are aware of how to add a new ebuild to your local fork of flora you need to make a relase out of it. it is as easy as doing the preparations itself :)
+
Now that you are aware of how to add a new ebuild to your local fork of flora you need to learn how to make a release. It's as easy as doing the preparations itself :)
  
just be ready to make the release
+
First prepare to push the release.
  
 
{{shell
 
{{shell
 
| Desc = Preparing the release
 
| Desc = Preparing the release
| Input = $ git flow release start <desc-of-release><br>
+
| Input = $ git-flow release start <desc-of-release><br>
 
Switched to a new branch 'release/<desc-of-release>'<br><br>
 
Switched to a new branch 'release/<desc-of-release>'<br><br>
 
Summary of actions:<br>
 
Summary of actions:<br>
Line 361: Line 432:
 
- Start committing last-minute fixes in preparing your release<br><br
 
- Start committing last-minute fixes in preparing your release<br><br
 
- When done, run:<br><br>
 
- When done, run:<br><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;git flow release finish '<desc-of-release>'
+
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$ git-flow release finish '<desc-of-release>'
 
}}
 
}}
  
now you are able to the final release corrections for your release so if you found out that there had still been a problem with your ebuild fix it now. if done do
+
You should now make the final corrections for your release; if you find out that there are still any problems with your ebuild, fix it now. When you are finished, do:
  
 
{{shell
 
{{shell
 
| Desc = Finish the release
 
| Desc = Finish the release
| Input = $ git flow release finish <desc-of-release><br>
+
| Input = $ git-flow release finish <desc-of-release><br>
 
Summary of actions:<br>
 
Summary of actions:<br>
 
- Latest objects have been fetched from 'origin'<br>
 
- Latest objects have been fetched from 'origin'<br>
Line 377: Line 448:
 
}}
 
}}
  
Now get ready to submit all your changes :)
+
Now get ready to submit all of your changes :)
  
 
=== Submitting your release ===
 
=== Submitting your release ===
  
this part is the easiest as you don't have to do anything for it
+
This part is the easiest as you don't have to do anything special.
  
 
{{shell
 
{{shell
Line 400: Line 471:
 
}}
 
}}
  
That was it. :) Now make us aware of your additions.
+
That was it. :)
  
 
=== Make us aware of your additions ===
 
=== Make us aware of your additions ===
Line 406: Line 477:
 
To make us aware of your additions to flora visit your flora overlay under [http://github.com/your-username/flora http://github.com/<your-username>/flora].
 
To make us aware of your additions to flora visit your flora overlay under [http://github.com/your-username/flora http://github.com/<your-username>/flora].
  
There you will find a link called Pull Request, have a look at the top on the following screenshot red Circle :)
+
There you will find a link labeled "Pull Request". Look for the red circle in the following screenshot. :)
  
 
[[Image:pull-request.png|800px ]]
 
[[Image:pull-request.png|800px ]]
  
After pressing the Pull Request button, you are presented with a preview page where you can enter a title and optional description, see exactly what commits will be included when the pull request is sent, and also see who the pull request will be sent to:
+
After clicking the Pull Request button, you will be presented with a preview page where you can enter a title and optional description, see exactly which commits will be included when your pull request is sent, and also see who will be notified about your pull request:
  
 
[[Image:pull-request2.png|800px]]
 
[[Image:pull-request2.png|800px]]
  
Markdown is supported in the description, so you can embed images or use preformatted text blocks.
+
Markup is supported in the description, so you can embed images or use preformatted text blocks. Switch to the "Commits" tab to ensure that the correct set of changes is being sent:
 
+
Switch to the Commits tab to ensure that the correct set of changes is being sent:
+
  
 
[[Image:pullrequest-check1.png|800px]]
 
[[Image:pullrequest-check1.png|800px]]
  
Review the diff of all changes by switching to the Files Changed tab:
+
Review the diff of all changes by switching to the "Files Changed" tab:
  
 
[[Image:pullrequest-check2.png|800px]]
 
[[Image:pullrequest-check2.png|800px]]
  
So now we are aware of your request and can decide how to handle it, mostly it will be included...
+
We should now be aware of your request and will decide how to handle it. It will usually be approved.
  
== Special Stuff in flora ==
+
== Special stuff in flora ==
  
 
The following content is also available in "flora/profiles/doc/README"
 
The following content is also available in "flora/profiles/doc/README"
  
We added 3 folders to flora/profiles called 'package.mask', 'sets' and 'docs'. These folders are there for a special reason and you should be aware of some rules that need to be followed to let us all live peaceful together.
+
We have added 3 folders to flora/profiles called 'package.mask', 'sets' and 'docs'. These folders are there for a special reason and you should be aware of some rules that need to be followed to allow all of us to live peacefully together.
  
 
=== What are the folders there for? ===
 
=== What are the folders there for? ===
 
   
 
   
* flora/profiles/docs<br>
+
* flora/profiles/docs<br>This folder is there for docs if you require a special setup, like using sets for unmasking special stuff.
<dd>This folder is there for docs if you need a special setup, like using sets for unmasking special stuff.</dd>
+
* flora/profiles/sets<br>This folder is there to define a special unmasking set or use flag set for packages you sent to flora. Your sets should be put into subfolders.
* flora/profiles/sets<br>
+
* flora/profiles/package.mask<br>As you might have already guessed, here you can set masks for packages you have submitted. Please don't mask packages that you haven't submitted yourself, as this can result in a great deal of trouble for the devs, and is something we would prefer to avoid.
<dd>This folder is there do define a special unmasking set or useflagset for packages you sent to flora, your sets should get there into subfolders.</dd>
+
* flora/profiles/package.mask
+
<dd>And finaly as you might already thought here you can set a special mask for packages you submitted. Please don't mask packages in here you haven't submitted, if you do so it could result in enourmous trouble for the devs and that is something we would like to avoid.</dd>
+
  
 
=== rules for flora/profiles/docs ===
 
=== rules for flora/profiles/docs ===
  
In 'flora/profiles/docs' you will insert docs for special stuff like unmasking your ebuilds if you masked them. Please try to avoid a mask of ebuilds but sometimes it is not possible to avoid it we know. Your doc should be named README.<package> so users can easyly find it.
+
In 'flora/profiles/docs' you will insert docs for special instructions like unmasking your ebuilds if you masked them. While it is preferred to try avoiding the masking of ebuilds, sometimes it is not possible to avoid it. Your doc should be named README.<package> so that users can easily find it.
  
 
=== rules for flora/profiles/sets ===
 
=== rules for flora/profiles/sets ===
  
In 'flora/profiles/sets' you will insert sets to unmask several ebuilds at a time, like if you commit 5 packages that are needed to build and
+
In 'flora/profiles/sets' you will insert sets to unmask several ebuilds at a time, for example if you commit 5 packages that are needed to build for testing purposes, and you decide to mask them first. You can define a set here to unmask them. These sets go in subfolders of 'flora/profiles/sets' so you would end up with a structure like:
39 for testing purpose you decide to mask them first, you can define a set here to unmask them. These sets go in subfolders of 'flora/profiles/sets' so you would result in a structure like  
+
 
   
 
   
 
  flora/profiles/sets/<packagename>/<packagename>.unmask
 
  flora/profiles/sets/<packagename>/<packagename>.unmask
  
The content of such an unmask file could look like that:
+
The content of such an unmask file might look like the following.
  
 
<pre>   
 
<pre>   
Line 462: Line 527:
 
</pre>
 
</pre>
  
in the docs you should then tell the user to link  
+
In the docs you should then tell the user to link  
  
<pre>'portage-path/profiles/sets/<packagename>/<packagename>.unmask'<pre>
+
<pre>'portage-path/profiles/sets/<packagename>/<packagename>.unmask'</pre>
  
into /etc/portage/package.unmask/<packagename> or add the stuff of the file to /etc/portage/package.unmask depending on their setup. :)
+
into /etc/portage/package.unmask/<packagename> or add the contents of the file to /etc/portage/package.unmask depending on their setup. :)
  
=== rules for flora/profiles/packages.mask ===
+
=== Rules for flora/profiles/package.mask ===
  
 
Here we use the strongest rules that need to be followed!
 
Here we use the strongest rules that need to be followed!
 
   
 
   
* Don't mask any core packages! You are only allowed to mask packages you are responsable for. Also if you try to commit core packages we could get angry, so please talk about these packages first with us. We don't bite but react angry if you try to kill our core :)
+
* Do not mask any core packages! You are only allowed to mask packages that you are responsable for. If you try to commit core packages we could also get angry, so please talk with us first about these packages. We don't bite, but do get angry if you try to kill our core >:)
* Try to avoid a mask of packages if possible! :)
+
* Try to avoid masking packages if possible! :)
* Mask reasons have to be significant and should be explained why. Remember you are responsable for the mask no Core Team member will remove them!
+
* Mask reasons have to be significant and should be explained in detail. Remember that you are responsible for your masks, as no Core Team member will remove them!
* Users that didn't set the mask are not allowed to remove it! Only submitter is allowed to do so! :)
+
* Users that didn't set the mask are not allowed to remove it! Only the submitter is allowed to do so! :)
  
Four simple rules that you must follow so we don't get into trouble :)
+
These are just four simple rules that you must follow so that we don't get into trouble.
 
   
 
   
For 'flora/profiles/packages.mask' we advice the following setup:
+
For 'flora/profiles/package.mask' we recommend the following setup:
 +
 
 +
<pre>flora/profiles/package.mask/funtoo-flora-<username></pre>
 +
 
 +
That way we don't have to worry about 3 people editing the same file and giving us headaches when we merge. :)
 +
 
 +
If you follow these few rules we are positive that we will get on in a good manner here and live next to each other in peace.
 +
 
 +
 
 +
== Special note for Flora contributors ==
 +
 
 +
All contributors to Flora, please edit your userpage.
  
<pre>flora/profiles/packages.mask/funtoo-flora-<username></pre>
+
* Create an account on our [http://www.funtoo.org/index.php?title=Special:UserLogin page here] if you do not have already, else login and
 +
* go to your Userpage and edit/create it with the Form (Create with Form/Edit with Form Button at the top right) :)
 +
* add all your ebuilds you added to Flora with that form in the format "sys-foo/bar"
 +
* save your userpage.
  
so we don't have to care about 3 guys editing the same file and giving us headaches when we merge :)
+
This will help us to see who was responsible for which ebuild and who we should contact if there is a build failure or problems with the ebuild. Thanks for your help. :)
  
if you follow these few rules we are sure we all make it up in a good manner here and live next to each other in peace.
+
== Other Wiki Info for Flora ==
  
 +
All the above info can also be found on githubs wiki page for flora too, just have a view [https://github.com/funtoo/flora/wiki here]
  
 
[[Category:Projects]] [[Category:Portage]] [[Category:Featured]]
 
[[Category:Projects]] [[Category:Portage]] [[Category:Featured]]

Revision as of 23:03, 2 December 2012

Contents


What is flora

flora is Funtoo's overlay for user-contributed ebuilds. Why is it called flora? Let's have a look at the definition of flora.

  1. A group of plants, especially the indigenous plants of a particular time or region.
  2. A book or treatise describing the plants of a particular region or time.
  3. Bacterial organisms, like those that naturally inhabit a bodily organ or appendage, e.g. intestinal flora.

We hope that only the first two definitions will be taken into account when submitting ebuilds to flora. We try to uphold Funtoo's high standards in ebuilds submitted to flora. It would be unrealistic to expect users not to make mistakes, however. As we are all humans (hopefully) and all humans make mistakes, just give us a call if you make a mistake so that we can take care of it as soon as possible. :)

The following image gives you an overview on how the Funtoo Portage tree and especially flora is structured:

Funtoo-overlay-structure2.png

How to...

... work with flora

Core Team

Core Members can push directly to flora as they already have the appropriate rights. Just do:

cd <your dir for overlays>
git clone repos@git.funtoo.org:flora.git

You will now be able to push/pull to and from flora. For development in git I would advise all members to use git-flow, since it ensures a clean working copy without any development stuff left over and pushed to the overlay. See the Git Guide and flora#... git-flow for more information on git-flow.

merging in Upstream User Contributions

The workflow is splitted into some easy steps just follow the next instructions:

  • Add the forks to our flora clone:
    The general syntax to add a remote clone for flora is:
    git remote add <username> git://github.com/<username>/flora.git
    so far the following forks are known and can be added if you copy the context:
    git remote add timoahummel git://github.com/timoahummel/flora.git
    git remote add leprosys git://github.com/leprosys/flora.git
    git remote add init6 git://github.com/init6/flora.git
    git remote add tarsius git://github.com/tarsius/flora.git
    git remote add tobert git://github.com/tobert/flora.git
    git remote add stasikos git://github.com/stasikos/flora.git
    git remote add trq git://github.com/trq/flora.git
    git remote add keenblade git://github.com/keenblade/flora.git
    git remote add edwtjo git://github.com/edwtjo/flora.git
    git remote add strowi git://github.com/strowi/flora.git
    git remote add ipalaus git://github.com/ipalaus/flora.git
    git remote add N4th4 git://github.com/N4th4/flora.git
    git remote add jmarcet git://github.com/jmarcet/flora.git
    git remote add drzayer git://github.com/drzayer/flora.git
    git remote add cvantassle git://github.com/cvantassle/flora.git
    git remote add wishstudio git://github.com/wishstudio/flora.git
    git remote add Saint0fCloud git://github.com/Saint0fCloud/flora.git
    git remote add The-Judge git://github.com/The-Judge/flora.git
    git remote add kpacheco git://github.com/kpacheco/flora.git
    git remote add modethirteen git://github.com/modethirteen/flora.git
    git remote add sandikata git://github.com/sandikata/flora.git
    git remote add synchris git://github.com/synchris/flora.git
    git remote add vadmeste git://github.com/vadmeste/flora.git
    git remote add rh1 git://github.com/rh1/flora.git
    git remote add just1602 git://github.com/just1602/flora.git
    git remote add mozgwar git://github.com/mozgwar/flora.git
    git remote add rem7 git://github.com/rem7/flora.git
    git remote add akiress git://github.com/akiress/flora.git
    git remote add ereslibre git://github.com/ereslibre/flora.git
    git remote add dangergrrl git://github.com/dangergrrl/flora.git
    git remote add crazyfraggle git://github.com/crazyfraggle/flora.git
    git remote add nakaran git://github.com/nakaran/flora.git
    git remote add PaddyMac git://github.com/PaddyMac/flora.git
    git remote add deferi git://github.com/deferi/flora.git
    git remote add ozon git://github.com/ozon/flora.git
    git remote add mma git://github.com/mma/flora.git
    git remote add alexjp git://github.com/alexjp/flora.git
    git remote add funkycode git://github.com/funkycode/flora.git
    git remote add limansky git://github.com/limansky/flora.git
    git remote add fearedbliss git://github.com/fearedbliss/flora.git
    git remote add lebel git://github.com/lebel/flora.git
    git remote add SaThero git://github.com/SaThero/flora.git
    git remote add soulthreads git://github.com/soulthreads/flora.git
  • Pull the changed/added files into your copy of flora, where username is the repo of the user that wants to add stuff to flora
    git fetch username
  • Merge the branches into flora
    git merge username/master
  • Push to ninja2
    git push
  • Close the pull request on github, and no worry it will show you problems if you view the code again, as we already included the patch of the user :)

If you as a coreteam member do not have rights to edit issues on flora at github anymore please give User:drobbins or User:golodhrim a ping, so that you can close the request when you merged it... :)

User Contribution

For normal users that like to contribute it is a bit more complicated but we will walk you through it.

First you need to have a GitHub account; you can follow our Git Guide to get one.

Visit https://github.com/funtoo/flora and use the fork button on the top to fork the repository to your own account so that you can push to it later.

Now you should create a directory to contain the local copy of the overlay repository on your local disk. We'll use /root/.git for this example, but you can use whatever you want to.

cd /root/.git
git clone git@github.com:{your github username}/flora.git

Now you are nearly ready to contribute. Since you now have flora cloned to /root/.git/flora, you need to go in and make a few changes so that you can begin your work.

... work with git-flow

Since this is a very helpful tool, you should emerge it and git-flow-completion, as they will support you in your work.

# emerge -avt gitflow git-flow-completion

Once it is installed, move to your flora directory and initialize git-flow. In the following example we suppose that you used /root/.git/flora for your overlay directory.

# cd /root/.git/flora
# git-flow init
No branches exist yet. Base branches must be created now.
Branch name for production releases: [master] <ENTER>
Branch name for "next release" development: [develop] <ENTER>

How to name your supporting branch prefixes?
Feature branches? [feature/] <ENTER>
Release branches? [release/] <ENTER>
Hotfix branches? [hotfix/] <ENTER>
Support branches? [support/] <ENTER>
Version tag prefix? [] <ENTER>
#

Your main work will now be done in the "develop" branch. When you want to add a feature or a hotfix:

# git-flow feature start <name of feature>

You may switch at any time to the development branch again with:

# git checkout develop

To see which features you currently have open:

# git-flow feature [list]

Once your feature is finished:

# git-flow feature finish <name>

For a hotfix to any of your ebuilds:

# git-flow hotfix start <version>

After applying the appropriate fixes:

# git-flow hotfix finish <version>

Now that you know how to add features, hotfixes, and support work, you still need to know how to make a release.

# git add <directory or file>
# git commit
Your editor will appear if you followed our Git Guide)
# git-flow release start <name>
Switched to a new branch 'release/<name>'

Summary of actions
- A new branch 'release/<name>' was created, based on 'develop'
- You are now on branch 'release/<name>'

Follow-up actions:
- Bump the version number now!
- Start committing last-minute fixes in preparing your release
- When done, run:

     git-flow release finish <name>
#
(Do what is noted above if needed)
# git-flow release finish <name>
Switched to branch 'master'
Merge made by recursive
 X files changed, X insertions(+), X deletions(-)
 create mode aaaaaa README
Deleted branch release/<name> (was <githash>)

(Your editor will come up so you can write a release note, save and close your editor afterwards.)

Summary of actions:
- Latest objects have been fetched from 'origin'
- Release branch has been merged into 'master'
- The release was tagged '<name>'
- Release branch has been back-merged into 'develop'
- Release branch 'release/<name>' has been deleted

# 
(As you are now on the master branch, you can do the push and go back to the development branch.)
# git push
# git checkout develop

You should now have an overview of how we like to work in flora and keep its contents clean.

This workflow model will then look like the following graph:

Funtoo-struct-overlay-gitflow.png

... keeping in sync with upstream

To keep in sync with upstream Funtoo flora just do the following steps.

First you need to add a new remote to your configuration, it is really easy and you should sync with upstream from time to time again.

So change to your clone of flora and execute the following commands:

$ cd <path/to/flora/>flora
$ git remote add upstream git://github.com/funtoo/flora.git

That's all, was a one timer. From now we just need to keep in sync from time to time.

That is nearly as easy as the above:

$ git fetch upstream
$ git merge upstream/master

Now you are in sync with our upstream version of flora again. Please do the last two steps regulary (maybe cron?).

Flora Main Ruleset

As we want to keep up the high standard for ebuilds in flora like we provide in our portage trees (portage, funtoo-overlay) you should write your ebuilds clean and with the needed care.

Please respect our following rules:

  • Test your ebuilds before pushing them to us.
  • generate the needed "Manifest" files for your ebuilds. If they are missing we will reject them and drop your request. The only exception to the previous rule is that your ebuild is a git-based ebuild, as the manifest would then be empty and so not pushed. All other ebuilds need to have one.
  • If you write your ebuild please make sure you add the following to your header:
    # Copyright 2012 Funtoo Technologies
    # Distributed under the terms of the GNU General Public License v2
   
  • push one ebuild-category at one request! if something is missing we won't need to reject all your requests.
  • Add a metadata.xml fill too all your ebuilds, so we know who is responsible for the ebuild. the Syntax is like that:
    <?xml version="1.0" encoding="UTF-8"?>                                                           
    <!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
    <pkgmetadata>
        <herd>no-herd</herd>
        <maintainer>
            <email>email1@domain.tld</email>
            <name>Name of Maintainer 1</name>
        </maintainer>
        <maintainer>
            <email>email2@domain.tld</email>
            <name>Name of Maintainer 2</name>
        </maintainer>
        <use>
            <flag name='USE-Variable-1'>Description of Variable 1</flag>
            <flag name='...'>...</flag>
            <flag name='USE-Variable-n'>Description of Variable n</flag>
        </use>
        <upstream>
            <changelog>URL to Online Changelogs</changelog>
        </upstream>
    </pkgmetadata>
   
  • Add yourself as a Maintainer for your ebuild to our Page so we users have an option to easily find who is responsible and give him a ping in IRC for errors.

Thanks for following the rules. We appreciate your participation. Please don't forget to add yourself to the Maintainer List, as it would save us some work too.

Notify us about your commit

To make us aware that you committed something go to your GitHub account and send us a Pull Request so we can perform a quick review of your push and include it into the main tree. If you started working on an ebuild, please let us know that you are responsible for it by adding your data to ebuild Maintainer list.

A day's work with flora

At this point you should already have a working copy of flora and you should be knowledgeable about git-flow. You should now be ready to start your daily work with flora.

First you need to make sure your copy of flora is synchronized with the main flora repository.

Description: Keeping flora up-to-date with upstream
$ git fetch upstream

remote: Counting objects: 54, done.
remote: Compressing objects: 100% (42/42), done.
remote: Total 48 (delta 2), reused 47 (delta 1)
Unpacking objects: 100% (48/48), done.
From git://github.com/funtoo/flora
  2c52d0d..af665e9 master -> upstream/master
$ git merge upstream/master
Updating 2c52d0d..af665e9
Fast-forward

  dev-java/asm/Manifest|  2 +
  dev-java/asm/asm-3.3.1.ebuild|  35 ++
  dev-java/lucene-analyzers/Manifest|  3 +
  dev-java/lucene-analyzers/files/manifest|  10 +
  .../lucene-analyzers/lucene-analyzers-2.9.4.ebuild|  28 ++
  dev-java/sat4j-core/Manifest|  3 +
  dev-java/sat4j-core/sat4j-core-2.3.0.ebuild|  59 +++
  dev-java/sat4j-pseudo/Manifest|  3 +
  dev-java/sat4j-pseudo/sat4j-pseudo-2.3.0.ebuild|  69 ++++
  dev-java/swt/Manifest|  6 +
  .../swt/files/as-needed-and-flag-fixes-3.6.patch|  243 ++++++++++++
  dev-java/swt/files/build.xml|  17 +
  dev-java/swt/files/swt-3.7-manifest|  17 +
  dev-java/swt/swt-3.7.ebuild|  205 ++++++++++
  dev-util/eclipse-sdk/Manifest|  8 +
  dev-util/eclipse-sdk/eclipse-sdk-3.7.0.ebuild|  399 ++++++++++++++++++++
  dev-util/eclipse-sdk/files/3.7/eclipse-3.7|  46 +++
  dev-util/eclipse-sdk/files/3.7/eclipserc-3.7|  20 +
  dev-util/eclipse-sdk/files/3.7/gtk_makefile.patch|  36 ++
  .../eclipse-sdk/files/3.7/hamcrest-junit-lib.patch|  11 +
  dev-util/eclipse-sdk/files/3.7/iterators.patch|  70 ++++
  profiles/docs/README.eclipse-sdk|  41 ++
  profiles/packages.mask/funtoo-flora-jeanfrancis|  27 ++-
  profiles/sets/eclipse-sdk/eclipse-sdk.unmask|  26 ++
  www-servers/jetty/Manifest|  2 +
  www-servers/jetty/jetty-6.1.24.ebuild|  45 +++

  26 files changed, 1430 insertions(+), 1 deletions(-)
  create mode 100644 dev-java/asm/Manifest
  create mode 100644 dev-java/asm/asm-3.3.1.ebuild
  create mode 100644 dev-java/lucene-analyzers/Manifest
  create mode 100644 dev-java/lucene-analyzers/files/manifest
  create mode 100644 dev-java/lucene-analyzers/lucene-analyzers-2.9.4.ebuild
  create mode 100644 dev-java/sat4j-core/Manifest
  create mode 100644 dev-java/sat4j-core/sat4j-core-2.3.0.ebuild
  create mode 100644 dev-java/sat4j-pseudo/Manifest
  create mode 100644 dev-java/sat4j-pseudo/sat4j-pseudo-2.3.0.ebuild
  create mode 100644 dev-java/swt/Manifest
  create mode 100644 dev-java/swt/files/as-needed-and-flag-fixes-3.6.patch
  create mode 100644 dev-java/swt/files/build.xml
  create mode 100644 dev-java/swt/files/swt-3.7-manifest
  create mode 100644 dev-java/swt/swt-3.7.ebuild
  create mode 100644 dev-util/eclipse-sdk/Manifest
  create mode 100644 dev-util/eclipse-sdk/eclipse-sdk-3.7.0.ebuild
  create mode 100644 dev-util/eclipse-sdk/files/3.7/eclipse-3.7
  create mode 100644 dev-util/eclipse-sdk/files/3.7/eclipserc-3.7
  create mode 100644 dev-util/eclipse-sdk/files/3.7/gtk_makefile.patch
  create mode 100644 dev-util/eclipse-sdk/files/3.7/hamcrest-junit-lib.patch
  create mode 100644 dev-util/eclipse-sdk/files/3.7/iterators.patch
  create mode 100644 profiles/docs/README.eclipse-sdk
  create mode 100644 profiles/sets/eclipse-sdk/eclipse-sdk.unmask
  create mode 100644 www-servers/jetty/Manifest
  create mode 100644 www-servers/jetty/jetty-6.1.24.ebuild
$ git merge master/develop

This should always be done before you start working in flora. To make it easier you can write a short shell script to automate this, or copy our script here and place it in /root/bin/floraupdate

#!/bin/sh
cd <path-to-your-flora-clone>
git fetch upstream
git merge upstream/master
git merge master/develop

When you would like to start a new ebuild for a package you want to add to flora sure you are on the development branch. You can check this with:

$ git branch

 * develop
  master

The asterisk tells you which branch is currently your active working branch. If it isn't "develop" you switch there with:

$ git branch develop

Now that you are in the right branch, you may begin your work as your tree should now be up-to-date. :)

Adding a new ebuild

Description: Creating a feature branch for the work you do
$ git-flow feature start <name-of-ebuild>

You will be now in the "feature/<name-of-ebuild>" branch, but be aware that git-flow doesn't like whitespace in the name-of-ebuild name.

Now you can work on the feature. When you are finished with doing all the additions and modifications of the ebuild you are going to push to flora, finish your work with:

$ git-flow feature finish <name-of-ebuild>

Switched to branch 'develop'
Already up-to-date.
Deleted branch feature/<name-of-ebuild> (was af665e9).

Summary of actions:
- The feature branch 'feature/<name-of-ebuild>' was merged into 'develop'
- Feature branch 'feature/<name-of-ebuild>' has been removed
- You are now on branch 'develop'

Now you can start adding a new ebuild with the same above procedure. To go back to your development branch without closing the feature branch you can do:

$ git checkout develop

This way you will not have included your feature branch with your development branch. You can have several ebuilds developed simultaneously without having to worry about your development branch being compromised. If you want to delete a branch, for instance if the ebuild has already been added by somebody else, do:

$ git branch -d <branch-name>

Where in the example above, the <branch-name> would be "feature/<name-of-ebuild>". You should now be able to work on the development branch, and commit a new ebuild to your development branch. :)

Doing a hotfix

Let's say that a user of one of your ebuilds has encountered an issue with it, and you already know how to fix the problem. You'll need to use the following command to make a hotfix for your ebuild:

Description: Starting a hotfix
$ git-flow hotfix start <ebuild-name-you-do-the-hotfix-for>

Switched to a new branch 'hotfix/<ebuild-name-you-do-the-hotfix-for>'

Summary of actions:
- A new branch 'hotfix/<ebuild-name-you-do-the-hotfix-for>' was created, based on 'master'
- You are now on branch 'hotfix/<ebuild-name-you-do-the-hotfix-for>'

Follow-up actions:
- Bump the version number now!
- Start committing your hot fixes
- When done, run:

      $ git-flow hotfix finish '<ebuild-name-you-do-the-hotfix-for>'

When you are done, you will need to publish your hotfix:

$ git-flow hotfix finish <ebuild-name-you-do-the-hotfix-for>

Deleted branch hotfix/<ebuild-name-you-do-the-hotfix-for> (was 2c52d0d).

Summary of actions:
- Latest objects have been fetched from 'origin'
- Hotfix branch has been merged into 'master'
- The hotfix was tagged '<ebuild-name-you-do-the-hotfix-for>'
- Hotfix branch has been back-merged into 'develop'
- Hotfix branch 'hotfix/<ebuild-name-you-do-the-hotfix-for>' has been deleted

Now your hotfix has been published. Your next step is to push it. Read flora#Submitting your release for more information.

Doing a release of your ebuild

Now that you are aware of how to add a new ebuild to your local fork of flora you need to learn how to make a release. It's as easy as doing the preparations itself :)

First prepare to push the release.

Description: Preparing the release
$ git-flow release start <desc-of-release>

Switched to a new branch 'release/<desc-of-release>'

Summary of actions:
- A new branch 'release/<desc-of-release>' was created, based on 'develop'
- You are now on branch 'release/<desc-of-release>'

Follow-up actions:
- Bump the version number now!
- Start committing last-minute fixes in preparing your release
<br - When done, run:

     $ git-flow release finish '<desc-of-release>'

You should now make the final corrections for your release; if you find out that there are still any problems with your ebuild, fix it now. When you are finished, do:

Description: Finish the release
$ git-flow release finish <desc-of-release>

Summary of actions:
- Latest objects have been fetched from 'origin'
- Release branch has been merged into 'master'
- The release was tagged '<desc-of-release>'
- Release branch has been back-merged into 'develop'
- Release branch 'release/<desc-of-release>' has been deleted

Now get ready to submit all of your changes :)

Submitting your release

This part is the easiest as you don't have to do anything special.

Description: Submitting to your Fork of flora
$ git add .

$git commit
[master 8f9414a] committextsubject line
   1 files changed, 1 insertions(+), 0 deletions(-)    create mode 100644 test-file $ git push
golodhrim@lorien [±:master] flora % git push Counting objects: 4, done. Delta compression using up to 2 threads. Compressing objects: 100% (2/2), done. Writing objects: 100% (3/3), 342 bytes, done. Total 3 (delta 1), reused 0 (delta 0) To git@github.com:golodhrim/flora.git     7361f3f..8f9414a master -> master

That was it. :)

Make us aware of your additions

To make us aware of your additions to flora visit your flora overlay under http://github.com/<your-username>/flora.

There you will find a link labeled "Pull Request". Look for the red circle in the following screenshot. :)

Pull-request.png

After clicking the Pull Request button, you will be presented with a preview page where you can enter a title and optional description, see exactly which commits will be included when your pull request is sent, and also see who will be notified about your pull request:

Pull-request2.png

Markup is supported in the description, so you can embed images or use preformatted text blocks. Switch to the "Commits" tab to ensure that the correct set of changes is being sent:

Pullrequest-check1.png

Review the diff of all changes by switching to the "Files Changed" tab:

Pullrequest-check2.png

We should now be aware of your request and will decide how to handle it. It will usually be approved.

Special stuff in flora

The following content is also available in "flora/profiles/doc/README"

We have added 3 folders to flora/profiles called 'package.mask', 'sets' and 'docs'. These folders are there for a special reason and you should be aware of some rules that need to be followed to allow all of us to live peacefully together.

What are the folders there for?

  • flora/profiles/docs
    This folder is there for docs if you require a special setup, like using sets for unmasking special stuff.
  • flora/profiles/sets
    This folder is there to define a special unmasking set or use flag set for packages you sent to flora. Your sets should be put into subfolders.
  • flora/profiles/package.mask
    As you might have already guessed, here you can set masks for packages you have submitted. Please don't mask packages that you haven't submitted yourself, as this can result in a great deal of trouble for the devs, and is something we would prefer to avoid.

rules for flora/profiles/docs

In 'flora/profiles/docs' you will insert docs for special instructions like unmasking your ebuilds if you masked them. While it is preferred to try avoiding the masking of ebuilds, sometimes it is not possible to avoid it. Your doc should be named README.<package> so that users can easily find it.

rules for flora/profiles/sets

In 'flora/profiles/sets' you will insert sets to unmask several ebuilds at a time, for example if you commit 5 packages that are needed to build for testing purposes, and you decide to mask them first. You can define a set here to unmask them. These sets go in subfolders of 'flora/profiles/sets' so you would end up with a structure like:

flora/profiles/sets/<packagename>/<packagename>.unmask

The content of such an unmask file might look like the following.

   
#############################################################
# unmask for <packagename>
#############################################################
=<category>/<packagename>-<version> 
...

In the docs you should then tell the user to link

'portage-path/profiles/sets/<packagename>/<packagename>.unmask'

into /etc/portage/package.unmask/<packagename> or add the contents of the file to /etc/portage/package.unmask depending on their setup. :)

Rules for flora/profiles/package.mask

Here we use the strongest rules that need to be followed!

  • Do not mask any core packages! You are only allowed to mask packages that you are responsable for. If you try to commit core packages we could also get angry, so please talk with us first about these packages. We don't bite, but do get angry if you try to kill our core >:)
  • Try to avoid masking packages if possible! :)
  • Mask reasons have to be significant and should be explained in detail. Remember that you are responsible for your masks, as no Core Team member will remove them!
  • Users that didn't set the mask are not allowed to remove it! Only the submitter is allowed to do so! :)

These are just four simple rules that you must follow so that we don't get into trouble.

For 'flora/profiles/package.mask' we recommend the following setup:

flora/profiles/package.mask/funtoo-flora-<username>

That way we don't have to worry about 3 people editing the same file and giving us headaches when we merge. :)

If you follow these few rules we are positive that we will get on in a good manner here and live next to each other in peace.


Special note for Flora contributors

All contributors to Flora, please edit your userpage.

  • Create an account on our page here if you do not have already, else login and
  • go to your Userpage and edit/create it with the Form (Create with Form/Edit with Form Button at the top right) :)
  • add all your ebuilds you added to Flora with that form in the format "sys-foo/bar"
  • save your userpage.

This will help us to see who was responsible for which ebuild and who we should contact if there is a build failure or problems with the ebuild. Thanks for your help. :)

Other Wiki Info for Flora

All the above info can also be found on githubs wiki page for flora too, just have a view here

Personal tools
Namespaces

Variants
Actions
Categories
Toolbox
Stuff