summaryrefslogtreecommitdiff
blob: 09f6e1543acfb36e2e1bfbbe0531a2fa7611e646 (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
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
# Copyright 1999-2009 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/sys-kernel/dracut/dracut-002-r1.ebuild,v 1.1 2009/12/09 08:24:27 ramereth Exp $

EAPI=2

inherit eutils mount-boot

DESCRIPTION="Generic initramfs generation tool"
HOMEPAGE="http://sourceforge.net/projects/dracut/"
SRC_URI="mirror://sourceforge/${PN}/${P}.tar.bz2"

LICENSE="GPL-2"
SLOT="0"
KEYWORDS="~amd64 ~x86"
IUSE="crypt dmraid iscsi lvm nbd nfs md selinux"

# common networking deps
NETWORK_DEPS="sys-apps/iproute2 net-misc/dhcp net-misc/bridge-utils"

RDEPEND="app-shells/dash
	>=sys-apps/module-init-tools-3.6
	>=sys-apps/util-linux-2.16
	crypt? ( sys-fs/cryptsetup )
	dmraid? ( sys-fs/dmraid )
	lvm? ( >=sys-fs/lvm2-2.02.33 )
	md? ( sys-fs/mdadm )
	nfs? ( net-fs/nfs-utils net-nds/rpcbind ${NETWORK_DEPS} )
	iscsi? ( sys-block/open-iscsi[utils] ${NETWORK_DEPS} )
	nbd? ( sys-block/nbd ${NETWORK_DEPS} )
	selinux? ( sys-libs/libselinux sys-libs/libsepol )"
DEPEND="${RDEPEND}"

src_prepare() {
	epatch "${FILESDIR}/${P}-unmount.patch"
	epatch "${FILESDIR}/${P}-custom-paths.patch"
	epatch "${FILESDIR}/${P}-dir-symlinks.patch"
	epatch "${FILESDIR}/${P}-add-missing-functions.patch"
	epatch "${FILESDIR}/${P}-gencmdline-check-for-keyboard-i18n-files.patch"
	epatch "${FILESDIR}/${P}-makefile-add-with_switch_root.patch"
}

src_compile() {
	emake WITH_SWITCH_ROOT=0 prefix=/usr sysconfdir=/etc || die "emake failed"
}

src_install() {
	local modules_dir="${D}/usr/share/dracut/modules.d"

	emake WITH_SWITCH_ROOT=0 \
		prefix=/usr sysconfdir=/etc \
		DESTDIR="${D}" install || die "emake install failed"
	echo "${PF}" > "${modules_dir}"/10rpmversion/dracut-version
	dodir /boot/dracut /var/lib/dracut/overlay
	dodoc HACKING TODO AUTHORS NEWS README*
	# disable modules not enabled by use flags
	for module in crypt dmraid lvm md ; do
		! use ${module} && rm -rf ${modules_dir}/90${module}
	done
	# disable all network modules
	for module in iscsi nbd nfs ; do
		! use ${module} && rm -rf ${modules_dir}/95${module}
	done
	# if no networking at all, disable the rest
	if ! use iscsi && ! use nbd && ! use nfs ; then
		rm -rf ${modules_dir}/40network
		rm -rf ${modules_dir}/95fcoe
	fi
}

pkg_postinst() {
	elog 'To generate the initramfs:'
	elog ' # mount /boot (if necessary)'
	elog ' # dracut "" <kernel-version>'
	elog ''
	elog 'For command line documentation, see:'
	elog 'http://sourceforge.net/apps/trac/dracut/wiki/commandline'
	elog ''
	elog 'Simple example to select root and resume partition:'
	elog ' root=/dev/???? resume=/dev/????'
	elog ''
	elog 'Configuration is in /etc/dracut.conf.'
	elog 'The default config is very minimal and is highly recommended you'
	elog 'adjust based on your needs. To include only drivers for this system,'
	elog 'use the "-H" option.'
}