Chapter 15 Upgrading
When you notice that a port is out of date compared to the latest version from the
original authors, you should first ensure that you have the latest port. You can find
them in the ports/ports-current directory of the FreeBSD FTP
mirror sites. However, if you are working with more than a few ports, will will probably
find it easier to use CVSup to keep your whole ports
collection up-to-date, as described in the Handbook. This will have
the added benefit of tracking all the ports' dependencies.
The next step is to see if there is an update already pending. To do this, you have
two options. There is a searchable interface to the FreeBSD
Problem Report (PR) database (also known as GNATS). Select
ports in the dropdown, and enter the name of the port.
However, sometimes people forget to put the name of the port into the Synopsis field
in an unambiguous fashion. In that case, you can try the FreeBSD Ports Monitoring System
(also known as portsmon). This system attempts to classify
port PRs by portname. To search for PRs about a particular port, use the Overview of One
Port.
If there is no pending PR, the next step is to send an email to the port's maintainer,
as shown by make maintainer. That person may already be working
on an upgrade, or have a reason to not upgrade the port right now (because of, for
example, stability problems of the new version); you would not want to duplicate their
work. Note that unmaintained ports are listed with a maintainer of ports@FreeBSD.org, which is just the general ports mailing list, so
sending mail there probably will not help in this case.
If the maintainer asks you to do the upgrade or there is no maintainer, then you have
a chance to help out FreeBSD by preparing the update yourself! Please make the changes
and save the result of the recursive diff output of the new and
old ports directories (e.g., if your modified port directory is called superedit and the original is in our tree as superedit.bak, then save the result of diff
-ruN superedit.bak superedit). Either unified or context diff is fine, but port
committers generally prefer unified diffs. Note the use of the -N option--this is the accepted way to force diff to properly deal
with the case of new files being added or old files being deleted. Before sending us the
diff, please examine the output to make sure all the changes make sense. To simplify
common operations with patch files, you can use /usr/ports/Tools/scripts/patchtool.py. Before using it, please read
/usr/ports/Tools/scripts/README.patchtool.
If the port is unmaintained, and you are actively using it yourself, please consider
volunteering to become its maintainer. FreeBSD has over 2000 ports without maintainers,
and this is an area where more volunteers are always needed. (For a detailed description
of the responsibilities of maintainers, refer to the MAINTAINER
on Makefiles section.)
The best way to send us the diff is by including it via send-pr(1) (category
ports). If you are volunteering to maintain the port, be sure
to put [maintainer update] at the beginning of your synopsis
line and set the ``Class'' of your PR to maintainer-update.
Otherwise, the ``Class'' of your PR should be change-request.
Please mention any added or deleted files in the message, as they have to be explicitly
specified to cvs(1) when doing a
commit. If the diff is more than about 20KB, please compress and uuencode it; otherwise,
just include it in the PR as is.
Before you send-pr(1), you should
review the Writing
the problem report section in the Problem Reports article; it contains far more
information about how to write useful problem reports.
Important: If your upgrade is motivated by security concerns or a serious fault
in the currently committed port, please notify the Ports Management Team <portmgr@FreeBSD.org> to request
immediate rebuilding and redistribution of your port's package. Unsuspecting users of pkg_add(1) will
otherwise continue to install the old version via pkg_add -r for
several weeks.
Note: Once again, please use diff(1) and not shar(1) to send
updates to existing ports!
Now that you have done all that, you will want to read about how to keep up-to-date in
Chapter 19.