# $Id$ PNAME="dracut" PVER="038" PBUILD="r2" SPLIT_PACKAGES="dracut dracut-network dracut-fips dracut-fips-aesni dracut-caps dracut-tools" PCAT="sys-apps" HOMEPAGE="https://dracut.wiki.kernel.org/" # sysvinit support for compatibility reasons # 1=yes, 0=no SYSVINIT_SUPPORT=0 COMMON_DEPEND=">= app-shells/bash-4.2 >= app-arch/bzip2-1.0.6 >= app-arch/gzip-1.4 >= app-arch/xz-utils-5 >= app-arch/cpio-2.11 >= sys-apps/tar-1.26 >= sys-apps/coreutils-8.22 >= sys-apps/findutils-4.4 >= sys-apps/grep-2.8 >= sys-apps/kbd-2 >= sys-apps/procps-3.3 >= virtual/module-tools >= virtual/sed >= virtual/eject >= sys-apps/util-linux-2.22 >= sys-apps/v86d-0.1.9 >= sys-apps/plymouth-0.8.8 >= sys-apps/grubby-8.29 >= sys-fs/lvm2-2.02.85 >= sys-fs/device-mapper-2.02.85 >= sys-fs/udev-214 >= sys-apps/systemd-214" # todo nfs, icsci, rpcbind NETWORK_DEPEND=">= sys-apps/iproute2-3.12 >= net-misc/dhcpcd-6 >= net-misc/bridge-utils-1.5" # todo: arping CAPS_DEPEND=">= sys-libs/libcap-2.24" SDEPEND="${COMMON_DEPEND} ${NETWORK_DEPEND} ${CAPS_DEPEND} >= app-text/docbook-xml-dtd-9 >= app-text/asciidoc-8.6" SRCFILE="${PNAME}-${PVER}.tar.xz" SRCDIR="${BUILDDIR}/${PNAME}-${PVER}" sminclude mbuild mtools systemd cleanutils msetfeature "!check" SRC_URI=( http://www.kernel.org/pub/linux/utils/boot/${PNAME}/${SRCFILE} mirror://${PNAME}/${SRCFILE} mirror://${PNAME}/${PNAME}-038-magellan.patch mirror://${PNAME}/${PNAME}-024-add-uvesafb-module.patch mirror://${PNAME}/${PNAME}-036-mkinitrd-ignore-allow-missing-switch.patch mirror://${PNAME}/${PNAME}-019-convertfs-make-selinux-optional.patch mirror://${PNAME}/${PNAME}-037-network-support-udhcpc-dhcpcd.patch ) UP2DATE="updatecmd http://www.kernel.org/pub/linux/utils/boot/${PNAME} | highesttarball xz" split_info_dracut() { DESCRIPTION="Initramfs generator using udev which fully replaces mkinitrd." DEPEND="${COMMON_DEPEND}" PROVIDE="virtual/initramfs-tools" } split_info_dracut-network() { DESCRIPTION="Dracut modules to build a dracut initramfs with network support." DEPEND="== sys-apps/dracut-${PVER} ${NETWORK_DEPEND}" } split_info_dracut-fips() { DESCRIPTION="Dracut modules to build a dracut initramfs with an integrity check." DEPEND="== sys-apps/dracut-${PVER}" } split_info_dracut-fips-aesni() { DESCRIPTION="Dracut modules to build a dracut initramfs with an integrity check with aesni-intel." DEPEND="== sys-apps/dracut-${PVER} == sys-apps/dracut-fips-${PVER}" } split_info_dracut-caps() { DESCRIPTION="Dracut modules to build a dracut initramfs which drops capabilities." DEPEND="== sys-apps/dracut-${PVER} ${CAPS_DEPEND}" } split_info_dracut-tools() { DESCRIPTION="Dracut tools to build the local initramfs." DEPEND="== sys-apps/dracut-${PVER}" } src_prepare() { munpack ${SRCFILE} || die cd ${SRCDIR} # magellan compat patch mpatch ${PNAME}-038-magellan.patch || die # add uvesafb module to run v86d inside the initrd (default off) mpatch ${PNAME}-024-add-uvesafb-module.patch || die # for better mkinitrd compat and to fully support new-kernel-pkg # as drop-in replacement ignore the --allow-missing switch mpatch ${PNAME}-036-mkinitrd-ignore-allow-missing-switch.patch || die # make selinux optional, we do not use it yet mpatch ${PNAME}-019-convertfs-make-selinux-optional.patch || die # add support for dhcpcd and udhcpc in the network module mpatch ${PNAME}-037-network-support-udhcpc-dhcpcd.patch || die # remove gentoo specific modules rm -rf modules.d/50gensplash || die # remove rpm-bases specific modules rm -rf modules.d/10rpmversion || die # systemd-bootchart works better rm -rf modules.d/00bootchart || die # no dash support anymore rm -rf modules.d/00dash || die # fix plymouth libexecdir sed -i "s:/usr/libexec:/usr/$(mlibdir)/plymouth:" \ modules.d/50plymouth/module-setup.sh || die # fix plymouth logo local plymouth_logo=/usr/share/plymouth/magellan-logo.png sed -i "s:^\(PLYMOUTH_LOGO_FILE=\).*:\1\"${plymouth_logo}\":" \ modules.d/50plymouth/plymouth-populate-initrd.sh || die # fix qemu libexecdir sed -i "s:/usr/libexec:/usr/$(mlibdir)/qemu:" test/run-qemu || die } src_compile() { cd ${SRCDIR} mmake || die } src_install_dracut() { cd ${SRCDIR} mmake DESTDIR=${BINDIR} sysconfdir=/etc sbindir=/usr/bin systemdsystemunitdir=$(mget-systemd-unit-dir) install || die # remove modules owned by other packages rm -r ${BINDIR}/usr/lib/dracut/modules.d/01fips || die rm -r ${BINDIR}/usr/lib/dracut/modules.d/02fips-aesni || die rm -r ${BINDIR}/usr/lib/dracut/modules.d/02caps || die rm -r ${BINDIR}/usr/lib/dracut/modules.d/40network || die rm -r ${BINDIR}/usr/lib/dracut/modules.d/90livenet || die rm -r ${BINDIR}/usr/lib/dracut/modules.d/90qemu-net || die rm -r ${BINDIR}/usr/lib/dracut/modules.d/95cifs || die rm -r ${BINDIR}/usr/lib/dracut/modules.d/95fcoe || die rm -r ${BINDIR}/usr/lib/dracut/modules.d/95iscsi || die rm -r ${BINDIR}/usr/lib/dracut/modules.d/95nbd || die rm -r ${BINDIR}/usr/lib/dracut/modules.d/95nfs || die rm -r ${BINDIR}/usr/lib/dracut/modules.d/95ssh-client || die rm -r ${BINDIR}/usr/lib/dracut/modules.d/45ifcfg || die rm -r ${BINDIR}/usr/lib/dracut/modules.d/95znet || die rm ${BINDIR}/usr/share/man/man8/dracut-catimages.8* || die rm ${BINDIR}/usr/bin/dracut-catimages || die # needed directories mkeepdir /var/initramfs || die mkeepdir /var/log || die memptyfile /var/log/dracut.log || die # missing compat symlink mlink dracut /usr/bin/mkinitrd || die minstalldocs AUTHORS COPYING HACKING NEWS README* TODO || die } src_install_dracut-network() { cd ${SRCDIR} mmake DESTDIR=${BINDIR} sysconfdir=/etc sbindir=/usr/bin systemdsystemunitdir=$(mget-systemd-unit-dir) install || die # keep only related stuff zapmost ${BINDIR} \ usr/lib/dracut/modules.d/40network \ usr/lib/dracut/modules.d/90livenet \ usr/lib/dracut/modules.d/90qemu-net \ usr/lib/dracut/modules.d/95cifs \ usr/lib/dracut/modules.d/95fcoe \ usr/lib/dracut/modules.d/95iscsi \ usr/lib/dracut/modules.d/95nbd \ usr/lib/dracut/modules.d/95nfs \ usr/lib/dracut/modules.d/95ssh-client \ usr/lib/dracut/modules.d/45ifcfg \ usr/lib/dracut/modules.d/95znet \ || die } src_install_dracut-fips() { cd ${SRCDIR} mmake DESTDIR=${BINDIR} sysconfdir=/etc sbindir=/usr/bin systemdsystemunitdir=$(mget-systemd-unit-dir) install || die minstalldir /etc/dracut.conf.d || die minstallfile dracut.conf.d/fips.conf.example /etc/dracut.conf.d/40-fips.conf || die # keep only related stuff zapmost ${BINDIR} etc/dracut.conf.d/40-fips usr/lib/dracut/modules.d/01fips || die } src_install_dracut-fips-aesni() { cd ${SRCDIR} mmake DESTDIR=${BINDIR} sysconfdir=/etc sbindir=/usr/bin systemdsystemunitdir=$(mget-systemd-unit-dir) install || die # keep only related stuff zapmost ${BINDIR} usr/lib/dracut/modules.d/02fips-aesni || die } src_install_dracut-caps() { cd ${SRCDIR} mmake DESTDIR=${BINDIR} sysconfdir=/etc sbindir=/usr/bin systemdsystemunitdir=$(mget-systemd-unit-dir) install || die # keep only related stuff zapmost ${BINDIR} usr/lib/dracut/modules.d/02caps || die } src_install_dracut-tools() { cd ${SRCDIR} mmake DESTDIR=${BINDIR} sysconfdir=/etc sbindir=/usr/bin systemdsystemunitdir=$(mget-systemd-unit-dir) install || die # keep only related stuff zapmost ${BINDIR} \ usr/share/man/man8/dracut-catimages.8\* \ usr/bin/dracut-catimages \ || die mkeepdir /boot/dracut || die mkeepdir /var/lib/dracut || die mkeepdir /var/lib/dracut/overlay || die } preinstall_dracut() { if [[ ! -z $(magequery -n mkinitrd) ]] then echo -e ${COLRED} echo -e "Error: sys-apps/mkinitrd is installed!!" echo -e "dracut will overwrite binaries from sys-apps/mkinitrd and fully replace it." echo -e "Please uninstall sys-apps/mkinitrd first!" echo -e ${COLDEFAULT} die "sys-apps/mkinitrd found!" fi }