source: trunk/doc/guide/xml/details.xml @ 3093

Last change on this file since 3093 was 3093, checked in by fkr, 17 years ago

Bug: #721
Submitted by: wb@… (Will Barton)
Reviewed by:
Approved by:
Obtained from:

This patch makes a few corrections to the mirror site list documentation I submitted a few days
ago, based on suggestions made by Dr. Ernie. (1) Be a bit more specific about the nature of the
various tokens in the example in Chapter 2, and (2) Be a bit more specific about
master_sites.mirror_subdir in the example in Chapter 2.

  • Property svn:eol-style set to native
File size: 31.4 KB
Line 
1<?xml version="1.0" encoding="UTF-8" ?>
2<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
3                "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
4
5<chapter id='details'>
6    <title>Portfile details</title>
7    <para> This Chapter describes in detail how each part of a portfile is
8    works and is used. </para>
9   
10    <sect1>
11        <title>General syntax</title>
12       
13        <para>A Portfile is a TCL script, so the syntax used must be valid
14        TCL or the Portfile will not work. The basic syntax of the Portfile
15        has been designed so most tasks are performed using key value(s)
16        combinations. Many people don't realise it is TCL until they want to do
17        something more advanced and realise all that power is there.</para>
18       
19                <para>All key value pairs in a Portfile are single lines so line breaks
20                must be escaped with a back slash ('\'). </para>
21                <para>Variables syntax is ${foo} for the foo variant.</para>
22        <sect2>
23                        <title>Special characters</title>
24                        <para>As the Portfile is a TCL script certain charachters are
25                        "special". These have a special meaning in TCL and if you dont
26                        want that special meaning, they must be escaped. In general a
27                        character is escaped using the back slash ('\'). The main
28                        characters you need to be careful with are
29                        <simplelist type="inline">
30                                        <member>$</member>
31                                        <member>}</member>
32                                        <member>}</member>
33                                        <member>[</member>
34                                        <member>]</member>
35                                        </simplelist></para>
36                                       
37                </sect2>
38               
39                <sect2>
40                        <title>Required keys</title>
41                       
42                        <para>There is a small set of required key/value pairs without
43                        which a Portfile cannot be correct.</para>
44                       
45                        <para>The required keys are
46                                <simplelist type="vert">
47                                        <member>PortSystem</member>
48                                        <member>name</member>
49                                        <member>version</member>
50                                        <member>platforms</member>
51                                        <member>maintainers</member>
52                                        <member>categories</member>
53                                        <member>description</member>
54                                        <member>master_sites</member>
55                                        <member>checksums</member>
56                                        <member>homepage</member>
57                                        <member>long_description</member>
58                                       
59                                </simplelist>
60                        Each of these keys is described in the following pages of
61                        the guide. </para>
62
63                               
64                </sect2>
65        </sect1>
66        <sect1>
67                <title>Useful preset variables</title>
68                <para></para>
69                <variablelist>
70                        <varlistentry id='prefix'>
71                                <term>prefix</term>
72                                <listitem>
73                                        <para>Installation prefix, set in the systemwide
74                                        configuration file /etc/ports/ports.conf. Can be
75                                        overridden on a per port basis. For example XFree86
76                                        needs to install in the /usr tree, or aqua applications
77                                        are installed in /Applications/Ports</para>
78                                       
79                                </listitem>
80                        </varlistentry>
81                       
82                        <varlistentry id='libpath'>
83                                <term>libpath</term>
84                                <listitem>
85                                        <para>Path to the DarwinPorts TCL libraries. Read
86                                        only.</para>
87                                       
88                                </listitem>
89                        </varlistentry>
90                       
91                        <varlistentry id='portpath'>
92                                <term>portpath</term>
93                                <listitem>
94                                        <para>Path to the directory containing the downloaded
95                                        Portfiles. Read Only.</para>
96                                       
97                                </listitem>
98                        </varlistentry>
99                       
100                        <varlistentry id='filedir'>
101                                <term>filedir</term>
102                                <listitem>
103                                        <para>Path to port files relative to ${portpath}.
104                                        Read Only.</para>
105                                       
106                                </listitem>
107                        </varlistentry>
108                       
109                        <varlistentry id='workdir'>
110                                <term>workdir</term>
111                                <listitem>
112                                        <para>Path to work directory relative to ${portpath}.
113                                        Read Only</para>
114                                       
115                                </listitem>
116                        </varlistentry>
117                       
118                        <varlistentry id='workpath'>
119                                <term>workpath</term>
120                                <listitem>
121                                        <para>Full path to work directory. Read only.</para>
122                                       
123                                </listitem>
124                        </varlistentry>
125                                               
126                        <varlistentry id='distpath'>
127                                <term>distpath</term>
128                                <listitem>
129                                        <para>Location to store downloaded distfiles. Read
130                                        Only</para>
131                                       
132                                </listitem>
133                        </varlistentry>
134                       
135                        <varlistentry id='os_arch'>
136                                <term>os_arch</term>
137                                <listitem>
138                                        <para>Identifies hardware type (ie, "Power Macintosh").
139                                        Read Only</para>
140                                       
141                                </listitem>
142                        </varlistentry>
143                       
144                        <varlistentry id='os_version'>
145                                <term>os_version</term>
146                                <listitem>
147                                        <para>Version number of operating system (ie "6.0").
148                                        Read Only.</para>
149                                       
150                                </listitem>
151                        </varlistentry>
152                       
153                </variablelist>
154        </sect1>
155
156        <sect1>
157                <title>Initialization phase</title>
158                <para>The first part of a Portfile deals with initialisation. Most
159                of the keys (or options) in the initialisation phase  are required
160                for all Portfiles. </para>
161
162                <variablelist>
163                        <varlistentry id='PortSystem'>
164                                <term>PortSystem</term>
165                                <listitem>
166                                        <para>Determines which version of the portsystem the
167                                        Portfile is compatible with. DarwinPorts supports
168                                        versioning of the PortSystem so if new, backwards
169                                        incompatible changes are introduced older Portfiles
170                                        can continue to use the older version of the system.
171                                        The PortSystem line wraps the loading of TCL libraries
172                                        appropriate for that version of DarwinPorts. If you
173                                        don't load the libraries, nothing else in the Portfile
174                                        will work. Thus, the PortSystem should be the top line
175                                        in the Portfile.</para>
176                                       
177                                        <para>Currently DarwinPorts only has version 1.0 so you
178                                        should put: <userinput>PortSystem 1.0</userinput> in your
179                                        Portfile.</para>
180
181                                </listitem>
182                        </varlistentry>
183                        <varlistentry id='name'>
184                                <term>name</term>
185                                <listitem>
186                                        <para>The name of the Port. By default this is used to
187                                        build the url from which the Port is fetched. The name
188                                        should be lowercase.</para>
189                                       
190                                        <para><userinput>name foo</userinput></para>
191                                       
192                                </listitem>
193                        </varlistentry>
194                        <varlistentry id='version'>
195                                <term>version</term>
196                                <listitem>
197                                        <para>The version of the Port. By default this is used to
198                                        build the url from which the Port is fetched. </para>
199                                       
200                                        <para><userinput>version 1.23.45</userinput></para>
201                                       
202                                </listitem>
203                        </varlistentry>
204                        <varlistentry id='platforms'>
205                                <term>platforms</term>
206                                <listitem>
207                                        <para>The platforms on which the port has been
208                                        tested. </para>
209                                        <para><userinput>platforms darwin freebsd</userinput></para>
210                                </listitem>
211                        </varlistentry>
212                        <varlistentry id='categories'>
213                                <term>categories</term>
214                                <listitem>
215                                        <para>The type of Port. The first category should be the
216                                        same as the directory in which the Portfile is stored
217                                        and therefore should be chosen with care. A Port may have
218                                        more that one category but is not required to.</para>
219                                       
220                                        <para><userinput>categories foo bar</userinput></para>
221                                       
222                                </listitem>
223                        </varlistentry>
224                        <varlistentry id='description'>
225                                <term>description</term>
226                                <listitem>
227                                        <para>One sentence describing what the port is, use
228                                        long_description for more detail. If you use
229                                        long_description you must still use description. </para>
230                                       
231                                        <para><userinput>description foo performs the
232                                        transformation of bar into xml</userinput> </para>
233                                       
234                                </listitem>
235                               
236                        </varlistentry>
237                        <varlistentry id='long_description'>
238                                <term>long_description</term>
239                                <listitem>
240                                        <para>Description of what the port is/does. Long lines
241                                        can be broken with escaped newlines. </para>
242                                        <para><programlisting><userinput>long_description foo
243                                        performs the transformation of bar into xml \
244This allows users to rapidly transform documentation into multiple \
245formats. </userinput></programlisting></para>
246                                </listitem>
247                        </varlistentry>
248                       
249                        <varlistentry id='maintainers'>
250                                <term>maintainers</term>
251                                <listitem>
252                                        <para>List the email address or addresses of the
253                                        Portfile maintainer(s)</para>
254                                        <para><userinput>maintainers
255                                        joeblogs@somerandom.domain.com</userinput></para>
256                                </listitem>
257                        </varlistentry>
258                        <varlistentry id='revision'>
259                                <term>revision</term>
260                                <listitem>
261                               
262                                        <para>Local revision number of portfile.  Increment
263                                        for port revisions. The default for this is 0. It
264                                        should be incremented for revisions that change the
265                                        installed port.</para>
266                                        <para><userinput>revision 1.1</userinput></para>
267                                       
268                                </listitem>
269                        </varlistentry>
270                        <varlistentry id='extract.sufx'>
271                                <term>extract.sufx</term>
272                                <listitem>
273                                        <para>By default the value of ${extract.sufx} is .tar.gz.
274                                        Specifying extract.sufx is optional, only use it if the
275                                        suffix is not 'tar.gz.'. </para>
276                                       
277                                        <para><userinput>extract.sufx .tgz</userinput></para>
278                                       
279                                </listitem>
280                        </varlistentry>
281                        <varlistentry id='distname'>
282                                <term>distname</term>
283                                <listitem>
284                                        <para>By default distname is ${name}-${version}.
285                                        Specifying distname is optional, only use it if the
286                                        file that contains the port is not ${name}-${version}
287                                        (without the extract.sufx).</para>
288                                       
289                                        <para><userinput>distname ${name}_${version}</userinput></para>
290                                       
291                                </listitem>
292                        </varlistentry>
293                       
294                        <varlistentry id='distfiles'>
295                                <term>distfiles</term>
296                                <listitem>
297                                        <para>Defaults to ${distname}.${extract.sufx}. Specifying
298                                        distfiles is optional, only use it if the file that
299                                        contains the port is not ${distname}.${extract.sufx}
300                                        or more than one file needs to be retirieved. </para>
301                                       
302                                        <para><userinput>distfiles stable.${extract.sufx}
303                                        installer.sh</userinput></para>
304                                       
305                                        <para>Some ports require multiple items to be fetched
306                                        from different sites, this can be achieved using tags.
307                                        The tags are then used to identify which of the
308                                        master_sites to fetch the file from.see master_sites
309                                        below for more information. As with long_description,
310                                        long lines should be broken up with escaped
311                                        newlines. </para>
312                                        <para><userinput>distfiles
313                                        stable.${extract.sufx}:source
314                                        installer.sh:install</userinput></para>
315                                </listitem>
316                        </varlistentry>
317                       
318                        <varlistentry id='use_zip'>
319                                <term>use_zip</term>
320                                <listitem>
321                                        <para>Specifying use_zip is optional, only use it if
322                                        the file downloades is zipped rather than tarred and
323                                        gziped. use_zip set ${extract.sufx} to .zip and
324                                        extract.cmd to unzip, extract.pre_args to -q and
325                                        extract.post_args to "-d $portpath/$workdir".</para>
326                                       
327                                        <para><userinput>use_zip yes</userinput></para>
328                                       
329                                </listitem>
330                        </varlistentry>
331                        <varlistentry id='use_bzip2'>
332                                <term>use_bzip2</term>
333                                <listitem>
334                                        <para>Specifying use_bzip2 is optional, only use it
335                                        if the file downloades is bzipped rather than tarred
336                                        and gziped. use_bzip2 set ${extract.sufx} to .bzip2
337                                        and extract.cmd to bzip2.</para>
338                                       
339                                        <para><userinput>use_bzip2 yes</userinput></para>
340                                       
341                                </listitem>
342                        </varlistentry>
343                       
344                </variablelist>
345        </sect1>
346        <sect1>
347                <title>Fetch phase</title>
348         
349             
350                <variablelist> 
351                        <varlistentry id="master_sites">
352                                <term>master_sites</term>
353                                <listitem>
354                                        <para> A whitespace delimited list of urls from which the
355                                        source of the port can be retrieved. The URL should not
356                                        include the name of the file being retrieved.</para>
357                                       
358                                        <para>If you have multiple sites you should break up
359                                        long lines with escapend newlines. </para>
360               
361                <programlisting><userinput>master_sites   http://www.somesite.org/files/ \
362               http://www.somemirror.org/somesite_org/files/</userinput></programlisting>
363
364                                        <tip><para>Always put the trailing forward slash at the
365                                        end of a url, and remember to not include the filename
366                                        itself.</para></tip>
367                                       
368                                        <para>If you need to retrieve files from different
369                                        sites you can label the urls with tags.</para>
370
371                <programlisting><userinput>master_sites   http://www.somesite.org/files/:source \
372               http://www.someothersite.org/somesite_extras/:extras</userinput></programlisting>
373              </listitem>
374            </varlistentry>
375                       
376            <varlistentry id='master_sites_subdir'>
377              <term>master_sites.mirror_subdir</term>
378             
379              <listitem>
380                <para>Subdirectory to add to mirror sites taken from a
381                  mirror sites list.  Please see the section below on
382                  Mirror Site Lists for more details.</para>
383                                </listitem>
384                        </varlistentry>
385                       
386                                <varlistentry id='patchsites'>
387                                        <term>patch_sites</term>
388             
389                                        <listitem>
390                                                <para>List sites from which to download patchfiles
391                                                from, syntax is the same as master_sites. See the
392                                                Patch phase below for more information. </para>
393
394                <programlisting><userinput>patch_sites    ftp://ftp.patchcityrepo.com/pub/magic/patches</userinput></programlisting>
395                                        </listitem>
396                                </varlistentry>
397                               
398            <varlistentry id='patchsites_subdir'>
399              <term>patch_sites.mirror_subdir</term>
400             
401              <listitem>
402                <para>Subdirectory to add to mirror sites taken from a
403                  mirror sites list.  Please see the section below on
404                  Mirror Site Lists for more details.</para>
405              </listitem>
406            </varlistentry>
407                </variablelist>
408         
409          <sect2>
410            <title>Mirror Site Lists</title>
411
412            <para>Mirror site lists are, as one might guess, predefined
413              lists of mirror sites for use in
414              <varname>master_sites</varname> or
415              <varname>patch_sites</varname>.  The basic usage of mirror
416              site lists in a <filename>Portfile</filename> is:</para>
417
418            <programlisting><userinput>master_sites                sourceforge http://distfiles.opendarwin.org/
419master_sites.mirror_subdir  ${name}</userinput></programlisting>
420
421            <para>Where '<varname>sourceforge</varname>' is the name of
422              the mirror list which specifies SourceForge mirrors.
423              <varname>master_sites.mirror_subdir</varname> is used to
424              specify the subdirectory of <emphasis>all</emphasis> sites
425              in in any mirror lists in which the file is found.  The
426              above example is equivalent to:</para>
427
428            <programlisting><userinput>master_sites  http://us.dl.sourceforge.net/${name}/ \
429              http://eu.dl.sourceforge.net/${name}/ \
430              ftp://us.dl.sourceforge.net/pub/sourceforge/${name}/ \
431              ...
432              http://distfiles.opendarwin.org/</userinput></programlisting>
433
434            <para>There are two potential problems when using mirror
435              site lists as described above.  First, if you are using
436              multiple mirror site lists, such as
437              <varname>sourceforge</varname> and <varname>gnu</varname>,
438              the subdirectory might not always be the same.  Second, if
439              you have multiple distfiles and are using distfile tags to
440              specify which site in <varname>master_sites</varname> to
441              download which file from.</para>
442           
443            <para>Fortunately DarwinPorts also provides a much more
444              powerful and flexible syntax for mirror site lists.</para>
445
446            <programlisting><userinput>distfiles                   file_one.tar.gz:tagone file_two.tar.gz:tagtwo file_three.tar.gz
447master_sites                sourceforge::tagone gnu:directory:tagtwo \
448                            http://distfiles.opendarwin.org/
449master_sites.mirror_subdir  ${name}</userinput></programlisting>
450
451            <para>At first glance, this example is probably quite
452              confusing.  Basically, the advanced syntax is
453              <varname>list:subdirectory:tag</varname>.  The above
454              example shows the many ways this can be used.  The above
455              example will:</para>
456
457            <itemizedlist>
458              <listitem>
459                <para>Look for <filename>file_one.tar.gz</filename>
460                  in:</para>
461
462                <programlisting>http://us.dl.sourceforge.net/${name}/
463http://eu.dl.sourceforge.net/${name}/
464ftp://us.dl.sourceforge.net/pub/sourceforge/${name}/
465...</programlisting>
466              </listitem>
467
468              <listitem>
469                <para>Look for <filename>file_two.tar.gz</filename>
470                  in:</para>
471
472                <programlisting>ftp://ftp.gnu.org/gnu/directory/${name}/
473ftp://gatekeeper.dec.com/pub/GNU/directory/${name}/
474ftp://ftp.uu.net/archive/systems/gnu/directory/${name}/
475...</programlisting>
476              </listitem>
477
478              <listitem>
479                <para>Look for <filename>file_three.tar.gz</filename>
480                  in:</para>
481
482                <programlisting>http://distfiles.opendarwin.org/</programlisting>
483              </listitem>
484            </itemizedlist>
485
486            <para>There are a few important points to remember when
487              using this syntax.  The subdirectory specified with the
488              list
489              (<varname>gnu:<emphasis>directory</emphasis></varname>) is
490              appended to all of the mirror sites in that list
491              <emphasis>before</emphasis> the
492              <varname>master_sites.mirror_subdir</varname>, and
493              <varname>master_sites.mirror_subdir</varname> is
494              <emphasis>always</emphasis> appended to the end of the
495              mirror site.  When using tags, you are not required to
496              specify a subdirectory
497              (<varname>sourceforge::tagone</varname>).
498              <varname>master_sites.mirror_subdir</varname> is also not
499              required when specifying a subdirectory with the
500              list.</para>
501
502            <para>The original example could also be have been written
503              using this syntax without the need of
504              <varname>master_sites.mirror_subdir</varname> like
505              this:</para>
506
507            <programlisting><userinput>master_sites   sourceforge:${name} http://distfiles.opendarwin.org/</userinput></programlisting>
508
509            <para>The mirror site lists functionality also works exactly
510              the same for <varname>patch_sites</varname> and
511              <varname>patch_sites.mirror_subdir</varname>.</para>
512
513            <para>Below is a list of the mirror site lists that can be
514              used.</para>
515
516            <itemizedlist>
517              <listitem><para><varname>apache</varname></para></listitem>
518              <listitem><para><varname>gnome</varname></para></listitem>
519              <listitem><para><varname>gnu</varname></para></listitem>
520              <listitem><para><varname>isc</varname></para></listitem>
521              <listitem><para><varname>kde</varname></para></listitem>
522              <listitem><para><varname>perl_cpan</varname></para></listitem>
523              <listitem><para><varname>ruby</varname></para></listitem>
524              <listitem><para><varname>sourceforge</varname></para></listitem>
525              <listitem><para><varname>sunsite</varname></para></listitem>
526              <listitem><para><varname>tcltk</varname></para></listitem>
527              <listitem><para><varname>xcontrib</varname></para></listitem>
528              <listitem><para><varname>xfree</varname></para></listitem>
529            </itemizedlist>
530          </sect2>
531        </sect1>
532
533        <sect1>
534                <title>Integrity checking phase</title>
535                <para>Each file downloaded is integrity checked using a checksum.
536                This is used to help prevent trojaned sources being downloaded.
537                If you do not include the checksums line, the file will be
538                downloaded and the checksum reported as a conenience to the Portfile
539                author.</para>
540               
541                <variablelist>
542                        <varlistentry id='checksums'>
543                                        <term>checksums</term>
544                                        <listitem>
545                                                <para>Currently only the md5 checksum is supported.
546                                                Specify the filename, the checksum type and the
547                                                checksum.</para>
548                                               
549                                                <para><programlisting><userinput>
550                                                ${distname}-${extract.sufx} md5 65b89365a65dcad71d4402b48 \
551                                                foo.tar.gz md5 65b89365a65dcad71d4402b44</userinput>
552                                                        </programlisting></para>
553
554                                                <tip><para>If you only have one file being fetched the
555                                                filename can be omitted. </para>
556                                               
557                                                <para><userinput>md5 65b89365a65dcad71d4402b48</userinput>
558                                                </para></tip>
559                                        </listitem>
560                                </varlistentry>
561                        </variablelist>
562        </sect1>
563        <sect1>
564                <title>Extract phase</title>
565                <para></para>
566                <variablelist>
567                        <varlistentry id='extract.only'>
568                                        <term>extract.only</term>
569                                        <listitem>
570                                                <para>List of files to extract into ${workpath},
571                                                defaults to ${distfiles}. Useful when some files
572                                                are not compressed. Only use extract.only if the
573                                                default does not do the right thing.</para>
574                                               
575                                                <para>
576                                                <userinput>extract.only foo.tar.gz bar.tar.gz</userinput>
577                                                </para>
578
579                                        </listitem>
580                                </varlistentry>
581                               
582                                <varlistentry id='extract.cmd'>
583                                        <term>extract.cmd</term>
584                                        <listitem>
585                                                <para>Command to perform extraction. Defaults to gzip. </para>
586                                                <para><userinput>extract.cmd gunzip</userinput></para>
587
588                                        </listitem>
589                                </varlistentry>
590                               
591                                <varlistentry id='extract.pre_args'>
592                                        <term>extract.pre_args</term>
593                                        <listitem>
594                                                <para>Arguments added to extract command before a
595                                                file name. Defaults to -dc. </para>
596                                                <para><userinput>extract.pre_args    -cd</userinput>
597                                                </para>
598
599                                        </listitem>
600                                </varlistentry>
601                               
602                                <varlistentry id='extract.args'>
603                                        <term>extract.args</term>
604                                        <listitem>
605                                                <para>Arguments to extract.cmd, Read Only. The value
606                                                is ${distpath}/${distfile}</para>
607
608                                        </listitem>
609                                </varlistentry>
610                               
611                                <varlistentry id='extract.post_args'>
612                                        <term>extract.post_args></term>
613                                        <listitem>
614                                                <para>Arguments added to extract command after a file
615                                                name. Defaults to "| tar -xf". </para>
616                                                <para><userinput>extract.post_args   | tar -xf
617                                                </userinput></para>
618
619                                        </listitem>
620                                </varlistentry>
621                               
622                        </variablelist>
623        </sect1>
624        <sect1>
625                <title>Patch phase</title>
626                <para></para>
627                        <variablelist>
628                                <varlistentry id='patchfiles'>
629                                        <term>patchfiles</term>
630                                        <listitem>
631                                                <para>List of patch files to apply to source. Patch
632                                                files can be supplied in a port in a directory named
633                                                files (based on the value of ${filepath}) within the
634                                                port directory or fetched from ${patchsites}. Each
635                                                patchfile supplied by the Portfile author should
636                                                patch a single file. The standard convention is to
637                                                name the patch file 'patch-&lt;filename&gt;.diff,
638                                                with one diff file per file altered in the source.
639                                                If the filename is ambiguous because there are
640                                                multiple files with that name in the distribution,
641                                                supply the path components to uniquely identify the
642                                                file being patched. Diffs should be created with
643                                                <userinput>diff -u file1
644                                                file2 >../../files/patch-file.diff</userinput>.
645                                                Patches downloaded from patchsites must have
646                                                checksumes.</para>
647                                                <para><userinput>patchfiles patch-Makefile.in
648                                                patch-source.c</userinput></para>
649
650                                        </listitem>
651                                </varlistentry>
652                               
653                        </variablelist>
654        </sect1>
655        <sect1 id='configure'>
656                <title>Configuration phase</title>
657                <para></para>
658                       
659                        <sect2>
660                                <title> Automake and autoconf</title>                                           
661                                        <variablelist>
662                                                <varlistentry id='use_automake'>
663                                                        <term>use_automake</term>
664                                                        <listitem>
665                                                                <para>If set to yes, use automake</para>
666                                                                <para><userinput>use_automake yes
667                                                                </userinput></para>
668
669                                                        </listitem>
670                                                </varlistentry>
671                                               
672                                                <varlistentry id='automake.env'>
673                                                        <term>automake.env</term>
674                                                        <listitem>
675                                                                <para>Environmental variables to pass
676                                                                to automake</para>
677                                                                <para><userinput>CFLAGS="-I'${prefix}/include'"
678                                                                </userinput></para>
679
680                                                        </listitem>
681                                                </varlistentry>
682                                               
683                                                <varlistentry id='automake.args'>
684                                                        <term>automake.args</term>
685                                                        <listitem>
686                                                                <para>Arguments to pass to automake. </para>
687                                                                <para><userinput>automake.args  --foreign
688                                                                </userinput></para>
689
690                                                        </listitem>
691                                                </varlistentry>
692                                               
693                                                <varlistentry id='automake.dir'>
694                                                        <term>automake.dir</term>
695                                                        <listitem>
696                                                                <para>Directory in which to run ${automake.cmd}.
697                                                                Defaults to ${worksrcpath}</para>
698                                                                <para><userinput>automake.dir</userinput></para>
699
700                                                        </listitem>
701                                                </varlistentry>
702                                               
703                                                <varlistentry id='use_autoconf'>
704                                                        <term>use_autoconf</term>
705                                                        <listitem>
706                                                                <para>If set to yes, run autoconf. </para>
707                                                                <para><userinput>use_autoconf   yes
708                                                                </userinput></para>
709
710                                                        </listitem>
711                                                </varlistentry>
712                                               
713                                                <varlistentry id='autoconf.env'>
714                                                        <term>autoconf.env</term>
715                                                        <listitem>
716                                                                <para>Environmental variables to pass to
717                                                                autoconf</para>
718                                                                <para><userinput>autoconf.env   
719                                                                CFLAGS=-I'${prefix}/include/gtk12'</userinput>
720                                                                </para>
721
722                                                        </listitem>
723                                                </varlistentry>
724                                               
725                                                <varlistentry id='autoconf.args'>
726                                                        <term>autoconf.args</term>
727                                                        <listitem>
728                                                                <para>Arguments to pass to autoconf. </para>
729                                                                <para><userinput>autoconf.args  -l
730                                                                src/aclocaldir</userinput></para>
731
732                                                        </listitem>
733                                                </varlistentry>
734                                               
735                                                <varlistentry id='autoconf.dir'>
736                                                        <term>autoconf.dir</term>
737                                                        <listitem>
738                                                                <para>Directory in which to run
739                                                                ${autoconf.cmd}. </para>
740                                                                <para><userinput>autoconf.dir   
741                                                                src</userinput></para>
742
743                                                        </listitem>
744                                                </varlistentry>
745                                               
746                                        </variablelist>
747                                </sect2>
748                                <sect2>
749                                        <title>configure</title>
750                                        <variablelist>
751                                                <varlistentry id='configure.env'>
752                                                        <term>configure.env</term>
753                                                        <listitem>
754                                                                <para>Set environment variables for
755                                                                configure.</para>
756                                                                <para><userinput>configure.env
757                                                                CFLAGS="-I'${prefix}/include'"</userinput>
758                                                                </para>
759
760                                                        </listitem>
761                                                </varlistentry>
762                                               
763                                                <varlistentry id='configure.pre_args'>
764                                                        <term>configure.pre_args</term>
765                                                        <listitem>
766                                                                <para>Arguments added to configure command
767                                                                before ${configure.args}. Defaults to
768                                                                --prefix=${prefix}. </para>
769                                                                <para><userinput>configure.pre_args       
770                                                                --prefix="${prefix}/apache2"</userinput></para>
771
772                                                        </listitem>
773                                                </varlistentry>
774                                               
775                                                <varlistentry id='configure.args'>
776                                                        <term>configure.args</term>
777                                                        <listitem>
778                                                                <para>Arguments to pass to configure.</para>
779                                                                <para><userinput>configure.args     
780                                                                --etcdir="${prefix}/etc"</userinput></para>
781
782                                                        </listitem>
783                                                </varlistentry>
784                                        </variablelist>
785                                </sect2>
786                               
787        </sect1>
788        <sect1>
789                <title>Build phase</title>
790                <para></para>
791               
792                <variablelist>
793                       
794                        <varlistentry id='build.cmd'>
795                                <term>build.cmd</term>
796                                <listitem>
797                                        <para>Make command to run relative to ${worksrcdir}.
798                                        Defaults to make.</para>
799                                        <para><userinput>build.cmd pbxbuild</userinput></para>
800
801                                </listitem>
802                        </varlistentry>
803                       
804                        <varlistentry id='build.type'>
805                                <term>build.type</term>
806                                <listitem>
807                                        <para>Defines which 'make' is required, either 'gnu'
808                                        or 'bsd' Sets build.cmd to either
809                                                'gnumake' or 'bsdmake' accordingly</para>
810                                               
811                                        <para><userinput>build.type     gnu</userinput></para>
812
813                                </listitem>
814                        </varlistentry>
815                       
816                        <varlistentry id='build.pre_args'>
817                                <term>build.pre_args</term>
818                                <listitem>
819                                        <para>Arguments to pass to ${build.cmd} before
820                                        ${build.args}. Read only. Set to
821                                        ${build.target.current}</para>
822
823                                </listitem>
824                        </varlistentry>
825                       
826                        <varlistentry id='build.args'>
827                                <term>build.args</term>
828                                <listitem>
829                                        <para>Arguments to pass to ${build.cmd}</para>
830                                        <para><userinput>build.args     
831                                        -DNOWARN</userinput></para>
832
833                                </listitem>
834                        </varlistentry>
835                       
836                        <varlistentry id='build.target'>
837                                <term>build.target</term>
838                                <listitem>
839                                        <para>Target to pass to make for building everything.
840                                        Defaults to all.</para>
841                                        <para><userinput>build.target.all all-src</userinput>
842                                        </para>
843
844                                </listitem>
845                        </varlistentry>
846
847                </variablelist>
848        </sect1>
849        <sect1>
850                <title>Install phase</title>
851               
852                <variablelist>
853
854                        <varlistentry id='install.cmd'>
855                                <term>install.cmd</term>
856                                <listitem>
857                                        <para>Install command to run relative to ${worksrcdir}.
858                                        Defaults to ${build.cmd}.</para>
859                                        <para><userinput>install.cmd pbxbuild</userinput></para>
860
861                                </listitem>
862                        </varlistentry>
863                       
864                        <varlistentry id='install.type'>
865                                <term>install.type</term>
866                                <listitem>
867                                        <para>Defines which 'make' is required, either 'gnu' or
868                                        'bsd' Sets install.cmd to either
869                                                'gnumake' or 'bsdmake' accordingly</para>
870                                               
871                                        <para><userinput>install.type     gnu</userinput></para>
872
873                                </listitem>
874                        </varlistentry>
875                       
876                        <varlistentry id='install.pre_args'>
877                                <term>install.pre_args</term>
878                                <listitem>
879                                        <para>Arguments to pass to ${install.cmd} before
880                                        ${install.args}. Read only. Set to  ${install.target}</para>
881
882                                </listitem>
883                        </varlistentry>
884                       
885                        <varlistentry id='install.args'>
886                                <term>install.args</term>
887                                <listitem>
888                                        <para>Arguments to pass to ${install.cmd}</para>
889                                        <para><userinput>install.args     -DNOWARN</userinput></para>
890
891                                </listitem>
892                        </varlistentry>
893                       
894                        <varlistentry id='install.target'>
895                                <term>install.target</term>
896                                <listitem>
897                                        <para>Install target to pass to ${install.cmd}.</para>
898                                        <para><userinput>install.target all-src</userinput></para>
899
900                                </listitem>
901                        </varlistentry>
902                        <varlistentry id='install.destroot'>
903                                <term>install.destroot</term>
904                                <listitem>
905                                        <para>Arguments passed to ${install.cmd} in order to
906                                        install correctly into the destroot.</para>
907                                        <para>All ports must install via the 'destroot' so
908                                        that the DarwinPorts infrastructure can register each
909                                        file and directory a port installs. Most autoconf based
910                                        build systems will behave correctly and respect DESTDIR,
911                                        however some will not. Most of those that do not respect
912                                        DESTDIR will install correctly if you use 'prefix', as
913                                        in the example below. If your port doesn't respect either
914                                        of these, you'll have to figure out what to do yourself.
915                                        Some ports use another term, others require you to patch
916                                        the Makefile (or other build related script). </para>
917
918                                        <para><userinput>install.destroot prefix=${destroot}${prefix}
919                                        </userinput></para>
920
921                                       
922                                </listitem>
923                        </varlistentry>
924                </variablelist>
925        </sect1>
926       
927
928        <sect1>
929        <title>Dependencies</title>
930        <para></para>                   
931        <sect2>
932                        <title>Principles</title>
933                        <para></para>
934                </sect2>
935                <sect2>
936                        <title>Dependency tests</title>
937                        <para></para>
938                        <variablelist>
939                                <varlistentry>
940                                                <term> depends_fetch </term>
941                                                <listitem>
942                                                <para></para>
943                                                </listitem>
944                                </varlistentry>
945                                <varlistentry>
946                                                <term> depends_extract </term>
947                                                <listitem>
948                                                <para></para>
949                                                </listitem>
950                                </varlistentry>
951                                <varlistentry>
952                                                <term> depends_lib </term>
953                                                <listitem>
954                                                <para></para>
955                                                </listitem>
956                                </varlistentry>
957                                <varlistentry>
958                                                <term> depends_build </term>
959                                                <listitem>
960                                                <para></para>
961                                                </listitem>
962                                </varlistentry>
963                                <varlistentry>
964                                                <term> depends_run </term>
965                                                <listitem>
966                                                        <para></para>
967                                                </listitem>
968                                </varlistentry> 
969            </variablelist>
970        </sect2>
971    </sect1>
972        <sect1>
973                <title>TCL primitives</title>
974                        <para></para>
975                <sect2>
976                        <title>reinplace</title>
977                        <para></para>
978                </sect2>
979                <sect2>
980                        <title>system</title>
981                        <para></para>
982                </sect2>               
983                <sect2>
984                        <title>file</title>
985                        <para></para>
986                </sect2>
987        </sect1>
988        <sect1>
989                <title>Other</title>
990                <para></para>
991                <sect2>
992                        <title>Pre and post phase steps</title>
993                        <variablelist>
994                                <varlistentry>
995                                        <term>Pre-*</term>
996                                        <listitem>
997                                                <para></para>
998                                        </listitem>
999                                </varlistentry>
1000                               
1001                                <varlistentry>
1002                                        <term>Post-*</term>
1003                                        <listitem>
1004                                                <para></para>
1005
1006                                        </listitem>
1007                                </varlistentry>
1008                        </variablelist>
1009                </sect2>
1010                <sect2>
1011                        <title>Overriding a phase</title>
1012                        <para></para>
1013
1014                </sect2>
1015                       
1016    </sect1>
1017 </chapter>
1018       
1019
1020               
1021               
Note: See TracBrowser for help on using the repository browser.