4. For those who want to actively develop packages as member of Momonga Project

4.1. Applying for an account

You must have an account on the Subversion server to commit your work result on a package. At this moment we are preparing an application procedure. Please read the temporary account issuance policy before your application.

4.2. ssh

To checkout files from the Subversion, ssh will be used. It is recommended to configure your system to slogin with NOPASSWD for convenience.

      
    $ eval `ssh-agent`
    $ ssh-add ~/.ssh/id_dsa
   
In Momonga Linux it is designed that eval `ssh-agent` is executed when X window system is invoked. Also there is ~/.xinit.d/hook and if it is set excutable it will also be executed. So it should be marked as executable; do the following:
    $ touch ~/.xinit.d/hook
    $ chmod +x ~/.xinit.d/hook
   
and add the following line in the file.
    ssh-add ~/.ssh/id_dsa < /dev/null
   

4.3. Retrieving Files

If bash is used

    bash$ export SVN_EDITOR=jed
    bash$ svn co svn+ssh://svn.momonga-linux.org/home/svnroot/svnroot_pkgs
   

If tcsh is used

   tcsh% setenv SVN_EDITOR jed
   tcsh% svn co svn+ssh://svn.momonga-linux.org/home/svnroot/svnroot_pkgs
  

4.4. Building rpmvercmp

As mentioned befre, give the command below to get the latest version. If you want to maintenace HEAD, move to the trunk directory.

    $ svn co svn+ssh://svn.momonga-linux.org/home/svnroot/svnroot_pkgs
    $ cd ./svnroot_pkgs/trunk
   

Then do the following.

    $ cd tools
    $ make
   

Give command below once in a while to have the latest version (especially for OmoiKondara).

    $ svn update tools
   
It is recommended to always keep pkgs and tools together under the same revision so update as a whole at a time.

4.5. Copying configuration files

    $ cd pkgs
    $ cp ../tools/example.OmoiKondara .OmoiKondara
   
Modify .OmoiKondara as required.

4.6. Building packages

    $ cd pkgs
    $ ../tools/OmoiKondara Package name
   
With a default setting, if successfully built, packages will be placed in $HOME/PKGS.

4.7. Creating a new version package

4.7.1. Changing spec file and making patches

Do the following in pkgs/

Releasing a new version package (i.e. a package with a new release number) please follow the rules described in Specfile-Guidance (in Japanese) to prepare a spec file.

Also when adding a new patch file, it is necessary to add a line mentioning the new patch file in the spec file.

4.7.2. Confirming a successful build in local environment

Please confirm a successful build in your local environment first.

     $ ../tools/OmoiKondara -r "-bp" hoge
     $ cd hoge
     $ rpm -ba --rcfile rpmrc hoge.spec
    
Doing the above will put the built package in pkgs/hoge/RPMS/{arch}

4.7.3. Reflecting the result of your modification

Case for spec file renewal only

     $ cvs commit pkgs/Package name
    

Case for adding new patch files

     $ svn add hoge/hoge.patch
     $ ../tools/commit hoge

    

When you update multiple packages, e.g., due to a change in depending library's API, do not commit each package separately. Rather do

     $ ../tools/commit hoge fuga ...
    
as above to commit the related packages at once. In this way your update increase revision number only by 1 which can easily be rolled back. On the other hand, if you update mixing unrelated packages in a single commit, it would not only be difficult to see the reason of update but also rewinding any related packages would be difficult as well. So please be careful.

4.8. Registering a new application in the repository

Adding a new application in Momonga Linux, it requires the application to be registered in OmoiKondara Subversion repository.

4.8.1. Creating a new directory

Under pkgs, create a new directory for the application. For example,

     $ svn mkdir newapp
    
And put appropriate spec files and patch files in the directory. Here, depending on the application, do the following tasks in the directory as required.

Application to go into Zoo

$ touch TO.Zoo will specify the package be placed in Zoo. As default, OmoiKondara will not build packages placed in Zoo.

Application to go into Nonfree

$ touch TO.Nonfree will specify the package to be placed in Nonfree and not to build a binary package.

In this way, OmoiKondara will build only specific packages when "build all" command is given.

On the other hand, do the following to specific applications listed below:

Applications that require root privilege when building

$ touch SU.PLEASE

Applications that require LANG environment variable when building

$ touch LANG=ja_JP.EUC-JP

Change the part after the equal sign according to the requirement of the application.

Applications of which the build process ends up being defunct

$ touch TIMEOUT.PLEASE

Applications to be supplied as nosrc.rpm

$ touch SRPMS.ONLY

Applications that require JAVA

$ touch JAVA

4.8.2. Creating a new repository in Subversion

# Declare new file and package names in the repositoy.

     $ svn add newapp/newapp.spec newapp/newapp.patch
    
# When you donot need to add any additional files in a package you can simply do
     $ svn add newapp
    
# Commit the package in the repositoy.
     $ ../tools/commit newapp