|
Lines 8784-8789
Link Here
|
| 8784 |
them.</para> |
8784 |
them.</para> |
| 8785 |
</sect1> |
8785 |
</sect1> |
| 8786 |
|
8786 |
|
|
|
8787 |
<sect1 id="porting-configure"> |
| 8788 |
<title>Configure script and feature auto-activation</title> |
| 8789 |
|
| 8790 |
<sect2 id="configure-control"> |
| 8791 |
<title>Control your port</title> |
| 8792 |
|
| 8793 |
<para>When using a configure script, keep control on what feature is activated |
| 8794 |
or not. Avoid using auto-detection of libraries that would silently activate |
| 8795 |
something you wouldn't be aware of. Say, explicitly disable options when you |
| 8796 |
do not want them activated (do not just activate them when you want them).</para> |
| 8797 |
</sect2> |
| 8798 |
|
| 8799 |
<sect2 id="configure-example"> |
| 8800 |
<title>Example</title> |
| 8801 |
|
| 8802 |
<para>Silently-activated features can bring you in trouble, let's give an example :</para> |
| 8803 |
|
| 8804 |
<itemizedlist> |
| 8805 |
<listitem> |
| 8806 |
<para>I have libxxx installed on my system (not used by any program)</para> |
| 8807 |
</listitem> |
| 8808 |
|
| 8809 |
<listitem> |
| 8810 |
<para>I don't want the application yyy to be built with xxx support so I disable the xxx option in the port's 'make config' or by defining the WITHOUT_XXX option</para> |
| 8811 |
</listitem> |
| 8812 |
|
| 8813 |
<listitem> |
| 8814 |
<para>Unfortunately, the port manages the option by *only* adding a --with-xxx (or --enable-xxx) option to <makevar>CONFIGURE_ARGS</makevar> when <makevar>WITH_XXX</makevar> is defined (so nothing happens here)</para> |
| 8815 |
</listitem> |
| 8816 |
|
| 8817 |
<listitem> |
| 8818 |
<para>The configure script is run and detects the library. It silently activates the option since our machine *can* run the xxx option</para> |
| 8819 |
</listitem> |
| 8820 |
|
| 8821 |
<listitem> |
| 8822 |
<para>The application is built with the xxx option</para> |
| 8823 |
</listitem> |
| 8824 |
</itemizedlist> |
| 8825 |
|
| 8826 |
</sect2> |
| 8827 |
|
| 8828 |
<sect2 id="configure-bad"> |
| 8829 |
<title>The bad things</title> |
| 8830 |
|
| 8831 |
<para>Why is it so bad ?</para> |
| 8832 |
|
| 8833 |
<itemizedlist> |
| 8834 |
<listitem> |
| 8835 |
<para>I have a feature I didn't want (that I have explicitly disabled)</para> |
| 8836 |
</listitem> |
| 8837 |
|
| 8838 |
<listitem> |
| 8839 |
<para>I can uninstall libxxx and break my application yyy, since no dependency is recorded in the database</para> |
| 8840 |
</listitem> |
| 8841 |
</itemizedlist> |
| 8842 |
|
| 8843 |
</sect2> |
| 8844 |
|
| 8845 |
<sect2 id="configure-solution"> |
| 8846 |
<title>A solution</title> |
| 8847 |
|
| 8848 |
<para>So, what can I do ?</para> |
| 8849 |
|
| 8850 |
<para>When possible, add (force) the corresponding --disable- or --without- option |
| 8851 |
for *each* --enable- or --with one you are using in the port's Makefile (if |
| 8852 |
supported by the configure script). This will ensure that each dependency is |
| 8853 |
recorded and that the port installs *exactly* the features users want.</para> |
| 8854 |
|
| 8855 |
</sect2> |
| 8856 |
|
| 8857 |
</sect1> |
| 8858 |
|
| 8787 |
<sect1 id="porting-wrkdir"> |
8859 |
<sect1 id="porting-wrkdir"> |
| 8788 |
<title><makevar>WRKDIR</makevar></title> |
8860 |
<title><makevar>WRKDIR</makevar></title> |