src_install
| Function | src_install | 
  
|---|---|
| Purpose | Install a package to ${D}
 | 
  
| Sandbox | Enabled | 
| Privilege | root | 
| Called for | ebuild | 
Default src_install
For EAPIs 4 and later, the default src_install function is the following:
src_install() {
	if [[ -f Makefile ]] || [[ -f GNUmakefile ]] || [[ -f makefile ]] ; then
		emake DESTDIR="${D}" install
	fi
	if ! declare -p DOCS >/dev/null 2>&1 ; then
		local d
		for d in README* ChangeLog AUTHORS NEWS TODO CHANGES THANKS BUGS \
				FAQ CREDITS CHANGELOG ; do
			[[ -s "${d}" ]] && dodoc "${d}"
		done
	elif [[ $(declare -p DOCS) == "declare -a"* ]] ; then
		dodoc "${DOCS[@]}"
	else
		dodoc ${DOCS}
	fi
}
For EAPIs 6 and later, the default src_install function is the following:
src_install() {
	if [[ -f Makefile ]] || [[ -f GNUmakefile ]] || [[ -f makefile ]] ; then
		emake DESTDIR="${D}" install
	fi
	einstalldocs
}
Easy installs
Often, especially with autotools-powered packages, there is a Makefile
install target which will honour the DESTDIR variable to tell it to
install to a non-root location. If possible, this should be used:
	emake DESTDIR="${D}" install
emake should be used to parallelise here. Some installs are
not designed to be parallelised, use emake -j1 or make
if you hit an error.
Usually the package's build system will not install the README,
ChangeLog, etc. files, so it is necessary to include additional
dodoc statements for them:
	emake DESTDIR="${D}" install
	dodoc README CHANGES
	dodoc -r doc
dodoc supports -r as the first argument, which allows directories
to be installed recursively.
dodoc COPYING! The license belongs in the
repository's licenses/ directory. Sometimes though, you might want to
install COPYING regardless, if it explains how different licenses are
applied to different parts of the application, for example.
Trivial installs
For some packages with no Makefile that only install a small
number of files, writing a manual install using cp is the
easiest option. For example, to do a simple install of some (no
compilation required) themes:
	dodir /usr/share/foo-styles/
	cp -R "${S}/" "${D}/" || die "Install failed!"
Or sometimes a combination of insinto and doins (plus related
functions — see Install functions reference) —
the following is based upon the sys-fs/udev install:
src_install() {
	dobin udevinfo
	dobin udevtest
	into /
	dosbin udev
	dosbin udevd
	dosbin udevsend
	dosbin udevstart
	dosbin extras/scsi_id/scsi_id
	dosbin extras/volume_id/udev_volume_id
	exeinto /etc/udev/scripts
	doexe extras/ide-devfs.sh
	doexe extras/scsi-devfs.sh
	doexe extras/cdsymlinks.sh
	doexe extras/dvb.sh
	insinto /etc/udev
	newins "${FILESDIR}/udev.conf.post_050" udev.conf
	doins extras/cdsymlinks.conf
	# For devfs style layout
	insinto /etc/udev/rules.d/
	newins etc/udev/gentoo/udev.rules 50-udev.rules
	# scsi_id configuration
	insinto /etc
	doins extras/scsi_id/scsi_id.config
	# set up symlinks in /etc/hotplug.d/default
	dodir /etc/hotplug.d/default
	dosym ../../../sbin/udevsend /etc/hotplug.d/default/10-udev.hotplug
	# set up the /etc/dev.d directory tree
	dodir /etc/dev.d/default
	dodir /etc/dev.d/net
	exeinto /etc/dev.d/net
	doexe etc/dev.d/net/hotplug.dev
	doman *.8
	doman extras/scsi_id/scsi_id.8
	dodoc ChangeLog FAQ HOWTO-udev_for_dev README TODO
	dodoc docs/{overview,udev-OLS2003.pdf,udev_vs_devfs,RFC-dev.d,libsysfs.txt}
	dodoc docs/persistent_naming/* docs/writing_udev_rules/*
	newdoc extras/volume_id/README README_volume_id
}
This is, of course, considerably harder to handle than a
simple Makefile driven install.
Other installs
Sometimes, there will be a Makefile that does not
honour DESTDIR and a non-trivial number of files to install. In
these situations, it is best to patch the Makefile and contact
upstream explaining the situation to them.