version 1.19, 2005/02/09 20:37:25 |
version 1.20, 2005/12/20 08:33:09 |
|
|
<h2><a name="Introduction"><font color= |
<h2><a name="Introduction"><font color= |
"#0000e0">Introduction</font></a></h2> |
"#0000e0">Introduction</font></a></h2> |
|
|
<p>The <a href="ports.html">ports tree</a> is an huge piece of work that |
<p>The <a href="faq/faq15.html#Ports">ports tree</a> is a huge piece |
|
of work that |
permits OpenBSD users to use third-party programs without wasting time |
permits OpenBSD users to use third-party programs without wasting time |
patching, configuring and installing each one individually. This work |
patching, configuring and installing each one individually. This work |
is done by a group of volunteers who spend their time porting and testing |
is done by a group of volunteers who spend their time porting and testing |
|
|
|
|
<p>The ports tree is developed against |
<p>The ports tree is developed against |
<a href="plus.html">OpenBSD-current</a>; there is no guarantee that |
<a href="plus.html">OpenBSD-current</a>; there is no guarantee that |
new ports will work correctly on the other branches. This also means |
new ports or updates will work correctly on the other branches. |
|
This means |
you should upgrade your system and ports tree to -current |
you should upgrade your system and ports tree to -current |
(instructions on how to do this can be found at the |
(instructions on how to do this can be found at the |
<a href="anoncvs.html">anoncvs</a> and |
<a href="anoncvs.html">anoncvs</a> and |
|
|
|
|
<p>There are two types of submissions on the mailing-lists; new ports |
<p>There are two types of submissions on the mailing-lists; new ports |
and updates. New ports are generally posted as tarball attachments |
and updates. New ports are generally posted as tarball attachments |
or urls. A good idea is to extract them into the |
or URLs. A good idea is to extract them into the |
<tt>/usr/ports/mystuff/</tt> directory and test from there. |
<tt>/usr/ports/mystuff/</tt> directory and test from there. |
Updates are generally a diff against the -current ports tree, so it is best |
Updates are generally a diff against the -current ports tree, so it is best |
to copy the port to <tt>mystuff/</tt> and apply the diff to prevent tree |
to copy the port to <tt>mystuff/</tt> and apply the diff to prevent tree |
|
|
<li>Try to set the <tt>SEPARATE_BUILD</tt> variable to 'concurrent' |
<li>Try to set the <tt>SEPARATE_BUILD</tt> variable to 'concurrent' |
and test if the build still works. |
and test if the build still works. |
<li>Make sure dependencies on GNU make are really necessary. |
<li>Make sure dependencies on GNU make are really necessary. |
|
<li>Check whether the port is using libtool. If it is, try |
|
setting <tt>USE_LIBTOOL=Yes</tt>. This way, the ports |
|
infrastructure will use the libtool version in the tree, instead |
|
of libtool versions that come bundled with the software's source. |
</ul> |
</ul> |
|
|
<li><i>regress</i> |
<li><i>regress</i> |
|
|
without affecting the base system. |
without affecting the base system. |
<li>The port should <b>never</b> install files outside of the |
<li>The port should <b>never</b> install files outside of the |
fake directory (such as into <tt>/usr/local</tt>). |
fake directory (such as into <tt>/usr/local</tt>). |
|
This kind of mistake can be easily caught by using |
|
<tt>USE_SYSTRACE=Yes</tt>. |
<li>GNU libtool occasionally has trouble relinking libraries |
<li>GNU libtool occasionally has trouble relinking libraries |
during the fake process on some architectures. |
during the fake process on some architectures. |
|
<li>Check whether all files get installed with correct ownerships |
|
and permissions. |
</ul> |
</ul> |
|
|
<li><i>package</i> |
<li><i>package</i> |
|
|
pkg/PFRAG* are wrong.</li> |
pkg/PFRAG* are wrong.</li> |
</ul> |
</ul> |
|
|
|
<li><i>lib-depends-check</i> |
|
<ul> |
|
<li>This will check whether all libraries on which the port depends |
|
can be reached through either <tt>LIB_DEPENDS</tt> or <tt>WANTLIB</tt>. |
|
The result should be empty. The above variables should be inspected |
|
when you see lines starting "Extra" or "Missing". |
|
</ul> |
|
|
<li><i>install</i> |
<li><i>install</i> |
<ul> |
<ul> |
<li>Packages should install all of the files from their packaging |
<li>Packages should install all of the files from their packaging |
|
|
<p>This will redirect the output into a log file located in the current |
<p>This will redirect the output into a log file located in the current |
directory.</p> |
directory.</p> |
|
|
|
<p>Finally, once the port is found to be okay, other ports depending on |
|
it should also be tested, to check whether they are still working |
|
correctly. The <i>show-required-by</i> make target will help to find |
|
other ports which depend on the current one. |
|
|
<h2><a name="More"><font color="#0000e0">More testing</font></a></h2> |
<h2><a name="More"><font color="#0000e0">More testing</font></a></h2> |
|
|
<p>Check the port Makefile for typos, incorrect links, useless or |
<p>Check the port's Makefile for correct dependencies, typos, incorrect |
missing variables, correct licensing and categories. |
links, useless or missing variables, correct licensing and categories. |
For those who are more skilled other targets can be tested like |
Those who are more skilled can help by examining patches, as well as |
<i>lib-depends-check</i>, examining patches, as well as providing |
providing diffs to correct bugs, add flavors, or other enhancements.</p> |
diffs to correct bugs, add flavors, or other enhancements.</p> |
|
<p>These diffs should be done with the <tt>-uNr --exclude=CVS</tt> options. |
<p>These diffs should be done with the <tt>-uNr --exclude=CVS</tt> options. |
<tt>cvs diff -uN</tt> can also be used to generate patches against |
<tt>cvs diff -uN</tt> can also be used to generate patches against |
the CVS repository.</p> |
the CVS repository.</p> |