FreeBSD Handbook : Installing Applications: The Ports collection : Making a port yourself
Previous: Some Questions and Answers
Next: Quick Porting

4.7. Making a port yourself

Contributed by Jordan K. Hubbard <jkh@FreeBSD.ORG>, Gary Palmer <gpalmer@FreeBSD.ORG>, Satoshi Asami <asami@FreeBSD.ORG>, David O'Brien <obrien@FreeBSD.ORG> and Tim Vanderhoek <hoek@FreeBSD.ORG>.
28 August 1996.

So, now you are interested in making your own port? Great! :)

What follows are some guidelines for creating a new port for FreeBSD. The bulk of the work is done by /usr/share/mk/bsd.port.mk, which all port Makefiles include. Please refer to that file for more details on the inner workings of the ports collection. Even if you don't hack Makefiles daily, it is well commented, and you will still gain much knowledge from it.

Note: Only a fraction of the overridable variables (${..}) are mentioned in this document. Most (if not all) are documented at the start of bsd.port.mk. This file uses a non-standard tab setting. Emacs and Vim should recognize the setting on loading the file. vi or ex can be set to using the correct value by typing `:set tabstop=4' once the file has been loaded.

4.7.1. Quick Porting

4.7.1.1. Writing the Makefile
4.7.1.2. Writing the description files
4.7.1.3. Creating the checksum file
4.7.1.4. Testing the port
4.7.1.5. Checking your port with portlint
4.7.1.6. Submitting the port

4.7.2. Slow Porting

4.7.2.1. How things work
4.7.2.2. Getting the original sources
4.7.2.3. Modifying the port
4.7.2.4. Patching
4.7.2.5. Configuring
4.7.2.6. Handling user input

4.7.3. Configuring the Makefile

4.7.3.1. The original source
4.7.3.2. DISTNAME
4.7.3.3. PKGNAME
4.7.3.4. CATEGORIES
4.7.3.5. MASTER_SITES
4.7.3.6. PATCHFILES
4.7.3.7. MAINTAINER
4.7.3.8. Dependencies
4.7.3.9. Building mechanisms

4.7.4. Special Considerations

4.7.4.1. ldconfig
4.7.4.2. ELF support
4.7.4.3. MASTERDIR
4.7.4.4. Shared library versions
4.7.4.5. Manpages
4.7.4.6. Ports that require Motif
4.7.4.7. X11 fonts
4.7.4.8. Info files

4.7.5. The pkg Subdirectory

4.7.5.1. MESSAGE
4.7.5.2. INSTALL
4.7.5.3. REQ
4.7.5.4. Changing PLIST based on make variables
4.7.5.5. Changing the names of files in the pkg subdirectory

4.7.6. Licensing Problems

4.7.7. Upgrading

4.7.8. Do's and Dont's

4.7.8.1. Strip Binaries
4.7.8.2. INSTALL_* macros
4.7.8.3. WRKDIR
4.7.8.4. WRKDIRPREFIX
4.7.8.5. Differentiating operating systems and OS versions
4.7.8.6. Writing something after bsd.port.mk
4.7.8.7. Install additional documentation
4.7.8.8. DIST_SUBDIR
4.7.8.9. RCS strings
4.7.8.10. Recursive diff
4.7.8.11. PREFIX
4.7.8.12. Subdirectories
4.7.8.13. Cleaning up empty directories
4.7.8.14. UIDs
4.7.8.15. Do things rationally
4.7.8.16. Respect CFLAGS
4.7.8.17. Configuration files
4.7.8.18. Portlint
4.7.8.19. Feedback
4.7.8.20. Miscellanea
4.7.8.21. If you are stuck....

4.7.9. A Sample Makefile

4.7.10. Package Names

4.7.11. Categories

4.7.11.1. Current list of categories
4.7.11.2. Choosing the right category

4.7.12. Changes to this document and the ports system

4.7.13. That is It, Folks!


FreeBSD Handbook : Installing Applications: The Ports collection : Making a port yourself
Previous: Some Questions and Answers
Next: Quick Porting