Changes between Version 15 and Version 16 of snc


Ignore:
Timestamp:
Feb 3, 2009, 3:17:07 PM (16 years ago)
Author:
nerdling (Jeremy Lavergne)
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • snc

    v15 v16  
    22== MacPorts Guide ==
    33It's a good idea to start out with the [http://guide.macports.org/#development Portfile Development] section of the MacPorts Guide.  There's a line-by-line explanation in [http://guide.macports.org/#development.creating-portfile Section 4.2] that will help you write a portfile from scratch.
     4=== Diamonds in the Rough ===
     5Unfortunately, there are useful things that end up buried in the Guide. For example, if you're developing against mysql5 (where multiple packages might create the mysql5 binary), you'd want to [http://guide.macports.org/#reference.dependencies.types depend on the binary] instead of a specific port.  This is accomplished in [source:trunk/dports/www/php5/Portfile#L264 php5] through {{{depends_lib-append path:bin/mysql_config5:mysql5}}}.  '''Note:''' The trailing mysql5 indicates which port to be installed if the binary cannot be found.
    46
    5 Obviously there are always things not listed in the Guide that are useful. For example, if you're developing for mysql5 (or some other package with multiple versions), you specify the binary instead of the port for the dependency:  {{{depends_lib-append path:bin/mysql_config5:mysql5}}}.  The trailing mysql5 indicates which port to be installed if the binary cannot be found.
     7Also hidden (to the point where I cannot find it) is how to write wrapper scripts; [source:trunk/dports/x11/wine/ wine] is considered the poster-portfile. The scripts should be included in the port's {{{files}}} directory and dynamically modified through the portfile by the [http://guide.macports.org/#reference.tcl-extensions tcl extensions], {{{xinstall}}} and {{{reinplace}}}.  Another example is [source:trunk/dports/math/pspp/ pspp].
    68== Portindex ==
    79Once you've created your portfile, it's best to test it with your copy of MacPorts.  The first step is to create a [http://guide.macports.org/#development.local-repositories local portfile repository] for testing. For this, I suggest creating the directory {{{~/ports}}}.   Inside this new directory, you should run {{{portindex}}} which will create the repository index of everything following the {{{./group/port/Portfile}}} heirarchy.  '''Note:''' This command should be run everytime you make changes as it will include the new index data for MacPorts. Also watch out for any errors it reports, which stop the portfile from showing up in MacPorts.