summaryrefslogtreecommitdiff
blob: 841048382ed417405fe2f53ad7a93e5948702b48 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
# Copyright 1999-2014 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2

EAPI=4

inherit bsdmk flag-o-matic

DESCRIPTION="Virtio drivers from FreeBSD Ports' emulators/virtio-kmod"
HOMEPAGE="http://www.freshports.org/emulators/virtio-kmod/"
SRC_URI="mirror://freebsd/ports/local-distfiles/kuriyama/virtio-${PV}.tar.gz"

SLOT="0"
KEYWORDS="~x86-fbsd ~amd64-fbsd"
IUSE="custom-cflags +debug"
LICENSE="BSD-2"

DEPEND=">=sys-freebsd/freebsd-sources-8.2
	app-arch/cpio"
RDEPEND=""

QA_TEXTRELS="*"
RESTRICT="strip"
S="${WORKDIR}"

NEEDSUBDIRS="conf contrib dev/pci geom kern net netinet netinet6 sys tools vm
	x86 i386 amd64"

src_unpack() {
	default
	CPIO_ARGS="-dump"

	# When hardlinks are possible, use them to avoid copies when FEATURES=userpriv
	test $UID != 0 && export CPIO_ARGS+=l

	cd /usr/src/sys/
	for d in $NEEDSUBDIRS; do
		find $d ! -name @ | cpio --quiet "${CPIO_ARGS}" "${WORKDIR}"
	done

}

src_compile() {

	use debug && export DEBUG_FLAGS="-g"
	use custom-cflags || strip-flags
	append-cflags "-I${WORKDIR}"

	cd "${WORKDIR}/modules/virtio"
	mkmake SYSDIR="${WORKDIR}" LDFLAGS="$(raw-ldflags)" || die "mkmake failed"

}

src_install() {
	# Upstream does not provide an install target
	dodir /boot/modules
	cp "${WORKDIR}"/modules/virtio/*/*.ko{,.symbols} "${ED}/boot/modules"
}

pkg_postinst() {
	# Update linker.hints file
	/usr/sbin/kldxref "${EPREFIX}/boot/modules"

	# Print message from FreeBSD Ports
	elog "$(cat "${FILESDIR}/pkg-message")"
}

pkg_postrm() {
	# Update linker.hints file
	/usr/sbin/kldxref "${EPREFIX}/boot/modules"
}