Portrookies mini-howto

The Portrookies Project

$Id: $


This document gives a brief introduction to Portrookies for FreeBSD. It includes some information on how to obtain Portrookies, how to use it and how to participate actively.


1. Introduction

Port rookies are port candidates managed in an external CVS directory. This should be a collective effort to help people gaining experience in creating and maintaining FreeBSD ports without being obliged to the high standards of the ports collection. It may also be a great place to test experimental ports until they stabilize.

The idea is that committers take the stabilized ports (and maintainers) and migrate them to the FreeBSD ports tree.

Portrookies is inspired by the recent discussion on The FreeBSD ports mailinglist. and is currently in its pre-alpha stage, almost no documentation has been written. The SourceForge project page is at: http://sourceforge.net/projects/portrookies/


2. FreeBSD users on the bleeding edge

Early adopters may want to use the Portrookies tree in order to get the freshest ports available.


2.1. Getting the Portrookies portstree

If you want to try Portrookies you have to follow the following steps:

  • 1. Patch bsd.port.mk and bsd.port.subdir.mk (proposed as a follow-up to PR 59194):

    # fetch http://portrookies.sf.net/categories.patch
    # patch -p0 -d /usr/ports < categories.patch
    
    If you keep your ports collection up-to-date with CVSup, you'll have to apply the patch after each update.

  • 2. Save the following file to /usr/ports/Makefile.local:

    # cd /usr/ports
    # fetch http://portrookies.sf.net/Makefile.local
    


  • 3. Get the Portrookies tree:

    # cd /usr/ports
    # cvs -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/portrookies login
     (just press ENTER)
    # cvs -z3 -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/portrookies co -P rookies
    


  • 4. Subscribe to portrookies-users at the sourceforge subscription page.




2.2. Staying up-to-date

Keep your Portrookies up-to-date with:

# cd /usr/ports/rookies; cvs -q update -dP



3. Ports Maintainers

Port Maintainers and committers must use cvs in authenticated mode to checkout a writable copy of the Portrookies tree. For that to be able to do you must have a sourceforge.net account.


3.1. Getting write access

Port Maintainers and committers must use cvs in authenticated mode to checkout a writable copy of the Portrookies tree. For that to be able to do you must have a sourceforge.net account. You cannot use anonymous cvs or pserver method to use the write access.

  • 1. make sure your speak fluently CVS. No help will be provided, and I don't have the time to repair major damage.

  • 2. Study the FreeBSD Porter's Handbook

  • 3. repeat 1.) and 2.)

  • 4. If you have no SourceForge account, get one.

  • 5. Send a request with your SourceForge id to the Portrookies project admin, and he will give you CVS access. Remember Austin Powers: behave!




3.2. General Notes

All rookies are required to have a PKGNAMEPREFIX that starts with `rookie-', so perl modules must have `rookie-p5-'. Otherwise FreeBSD rules apply.


3.3. Importing a new port

  • Do NOT use `cvs import', do use `cvs add'

  • Make sure your rookies/ are up to date

    # cd /usr/ports/rookies
    # cvs update -dP
    
    Resolve any conflicts which may come from others committing Makefile changes. Simplest way is to remove your local conflict file and update again (provided your changes are easy to re-apply)

  • Befor adding a port, TEST IT:

    # cd /usr/ports/rookies/%portname%; portlint -A
    # cd /usr/ports/rookies; make checksubdir
    # cd /usr/ports; make index
    
    This to work requires that your new port is added properly in /usr/ports/rookies/Makefile. Simply add one line with
    SUBDIR += %portname%
    
    to the Makefile. Try to keep it sorted.

    Double check that `make index` in /usr/ports does work and that your new port is in the INDEX or INDEX-5 file, depending on your setup.

  • Make sure that there are no old CVS directories in your new port (replace %portname% with your actual one):

    # cd /usr/ports/rookies
    # find %portname% -name CVS
    
    should not output anything. Recursively remove the CVS entries if neccessary. Only in your new port's directory, of course.

  • add the port

    # cd /usr/ports/rookies
    # cvs add `find %portname% -print`
    


  • Make sure your Makefile in rookies/ is up to date, again.

    # cvs update Makefile
    
    Resolve any conflicts which may come from others committing Makefile changes.

  • Commit your changes

    # cvs commit Makefile %portname%
    
    Enter a sensible, short comment for the commit.