Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
DEVELOPMENT(7)	   FreeBSD Miscellaneous Information Manual	DEVELOPMENT(7)

NAME
     development -- introduction to FreeBSD development	process

DESCRIPTION
     FreeBSD development is split into three major suprojects: doc, ports, and
     src.  Doc is the documentation, such as the FreeBSD Handbook.  To read
     more, see:

     https://docs.FreeBSD.org/en/books/fdp-primer/

     Ports, described further in ports(7), are the way to build, package, and
     install third party software.  To read more, see:

     https://docs.FreeBSD.org/en/books/porters-handbook/

     The last one, src,	revolves around	the source code	for the	base system,
     consisting	of the kernel, and the libraries and utilities commonly	called
     the world.

     The Committer's Guide, describing topics relevant to all committers, can
     be	found at:

     https://docs.freebsd.org/en/articles/committers-guide/

     FreeBSD src development takes place in the	project-hosted Git repository,
     located at:

     https://git.FreeBSD.org/src.git

     The push URL is:

     ssh://git@gitrepo.FreeBSD.org/src.git

     There is also a list of public, read-only Git mirrors at:

     https://docs.FreeBSD.org/en/books/handbook/mirrors/#external-mirrors

     The `main'	Git branch represents CURRENT; all changes are first committed
     to	CURRENT	and then usually cherry-picked back to STABLE, which refers to
     Git branches such as `stable/13'.	Every few years	a new STABLE is
     branched from CURRENT, with an incremented	major version number.  Re-
     leases are	then branched off STABLE and numbered with consecutive minor
     numbers.

     The layout	of the source tree is described	in its README.md file.	Build
     instructions can be found in build(7) and release(7).  Kernel programming
     interfaces	(KPIs) are documented in section 9 manual pages; use `apropos
     -s	9 .' for a list.  Regression test suite	is described in	tests(7).  For
     coding conventions, see style(9).

     To	ask questions regarding	development, use the mailing lists, such as
     freebsd-arch@ and freebsd-hackers@:

     https://lists.FreeBSD.org

     To	get your patches integrated into the main FreeBSD repository use
     Phabricator; it is	a code review tool that	allows other developers	to re-
     view the changes, suggest improvements, and, eventually, allows them to
     pick up the change	and commit it:

     https://reviews.FreeBSD.org

     To	check the latest FreeBSD build and test	status of CURRENT and STABLE
     branches, the continuous integration system is at:

     https://ci.FreeBSD.org

EXAMPLES
     Check out the CURRENT branch, build it, and install, overwriting the cur-
     rent system:

	   git clone https://git.FreeBSD.org/src.git src
	   cd src
	   make	-sj8 buildworld	buildkernel installkernel
	   shutdown -r now

     After reboot:

	   cd src
	   make	-j8 installworld
	   reboot

     Rebuild and reinstall a single piece of userspace,	in this	case ls(1):

	   cd src/bin/ls
	   make	clean all install

     Quickly rebuild and reinstall the kernel, only recompiling	the files
     changed since last	build; note that this will only	work if	the full ker-
     nel build has been	completed in the past, not on a	fresh source tree:

	   cd src
	   make	-sj8 kernel KERNFAST=1

     To	rebuild	parts of FreeBSD for another CPU architecture, first prepare
     your source tree by building the cross-toolchain:

	   cd src
	   make	-sj8 toolchain TARGET_ARCH=aarch64

     Afterwards, to build and install a	single piece of	userspace, use:

	   cd src/bin/ls
	   make	buildenv TARGET_ARCH=aarch64
	   make	clean all install DESTDIR=/clients/arm

     Likewise, to quickly rebuild and reinstall	the kernel, use:

	   cd src
	   make	buildenv TARGET_ARCH=aarch64
	   make	-sj8 kernel KERNFAST=1 DESTDIR=/clients/arm

SEE ALSO
     git(1), witness(4), build(7), hier(7), ports(7), release(7), tests(7),
     locking(9), style(9)

HISTORY
     The development manual page was originally	written	by Matthew Dillon
     <dillon@FreeBSD.org> and first appeared in	FreeBSD	5.0, December 2002.
     It	was since extensively modified by Eitan	Adler <eadler@FreeBSD.org> to
     reflect the repository conversion from cvs(1) to svn(1).  It was rewrit-
     ten from scratch by Edward	Tomasz Napierala <trasz@FreeBSD.org> for
     FreeBSD 12.0.

FreeBSD	13.0		       November	1, 2022			  FreeBSD 13.0

NAME | DESCRIPTION | EXAMPLES | SEE ALSO | HISTORY

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=development&sektion=7&manpath=FreeBSD+13.2-RELEASE+and+Ports>

home | help