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

Last change on this file since 4925 was 4925, checked in by jkh, 16 years ago

Add a binpath variable for setting the default PATH in order to avoid
"binary polution" in users PATHs (and also eliminated the dreaded
"Directory not found" error). For users who specifically want something
other than the default path, they can set it in ports.conf

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