FreeBSD Porter's Handbook

The FreeBSD Documentation Project


Table of Contents
1. Making a port yourself
2. Quick Porting
2.1. Writing the Makefile
2.2. Writing the description files
2.2.1. pkg-comment
2.2.2. pkg-descr
2.2.3. pkg-plist
2.3. Creating the checksum file
2.4. Testing the port
2.5. Checking your port with portlint
2.6. Submitting the port
3. Slow Porting
3.1. How things work
3.2. Getting the original sources
3.3. Modifying the port
3.4. Patching
3.5. Configuring
3.6. Handling user input
4. Configuring the Makefile
4.1. The original source
4.2. PORTNAME and PORTVERSION
4.3. PORTREVISION and PORTEPOCH
4.3.1. PORTREVISION
4.3.2. PORTEPOCH
4.3.3. Example of PORTREVISION and PORTEPOCH usage
4.4. PKGNAMEPREFIX and PKGNAMESUFFIX
4.5. DISTNAME
4.6. CATEGORIES
4.7. MASTER_SITES
4.8. PATCHFILES
4.9. MAINTAINER
4.10. Dependencies
4.10.1. LIB_DEPENDS
4.10.2. RUN_DEPENDS
4.10.3. BUILD_DEPENDS
4.10.4. FETCH_DEPENDS
4.10.5. DEPENDS
4.10.6. Common dependency variables
4.10.7. Notes on dependencies
4.11. Optional dependencies
4.12. Building mechanisms
5. Special considerations
5.1. Shared Libraries
6. MASTERDIR
7. Shared library versions
8. Manpages
9. Ports that require Motif
9.1. REQUIRES_MOTIF
9.2. MOTIFLIB
10. X11 fonts
11. Info files
12. The pkg-* files
12.1. pkg-message
12.2. pkg-install
12.3. pkg-req
12.4. Changing pkg-plist based on make variables
12.5. Changing the names of pkg-* files
13. Licensing Problems
14. Upgrading
15. Dos and Don'ts
15.1. Strip Binaries
15.2. INSTALL_* macros
15.3. WRKDIR
15.4. WRKDIRPREFIX
15.5. Differentiating operating systems and OS versions
15.6. Writing something after bsd.port.mk
15.7. Install additional documentation
15.8. DIST_SUBDIR
15.9. Package information
15.10. RCS strings
15.11. Recursive diff
15.12. PREFIX
15.13. Subdirectories
15.14. Cleaning up empty directories
15.15. UIDs
15.16. Do things rationally
15.17. Respect CFLAGS
15.18. Configuration files
15.19. Portlint
15.20. Feedback
15.21. README.html
15.22. Miscellanea
15.23. If you are stuck...
16. A Sample Makefile
17. Automated package list creation
18. Package Names
19. Categories
19.1. Current list of categories
19.2. Choosing the right category
20. Changes to this document and the ports system
21. That is It, Folks!
For questions about the FreeBSD ports system, e-mail <ports@FreeBSD.org>.
For questions about this documentation, e-mail <doc@FreeBSD.org>.