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

FreeBSD Manual Pages

  
 
  

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

NAME
       development -- introduction to FreeBSD development process

DESCRIPTION
       FreeBSD	development is split into three	major subprojects: 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  reposi-
       tory, 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 commit-
       ted  to	CURRENT	 and  then usually cherry-picked back to STABLE, which
       refers to Git branches such as `stable/13'.  Every few years a new STA-
       BLE is branched from CURRENT, with an incremented major version number.
       Releases	are then branched off STABLE and numbered with consecutive mi-
       nor 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
       review  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

FILES
       FreeBSD contribution guidelines
       Phabricator review tooling

EXAMPLES
       Check out the CURRENT branch, build it, and  install,  overwriting  the
       current 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
       kernel  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:
       https://www.nongnu.org/cvs/		  to		   Subversion:
       https://subversion.apache.org/.	 It  was  rewritten  from  scratch  by
       Edward Tomasz Napierala <trasz@FreeBSD.org> for FreeBSD 12.0.

FreeBSD	13.2			 July 7, 2024			DEVELOPMENT(7)

NAME | DESCRIPTION | FILES | EXAMPLES | SEE ALSO | HISTORY

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

home | help