# $Id$ PNAME="dracut" PVER="046" PBUILD="r1" 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 >= virtual/bzip2 >= virtual/gzip >= virtual/xz-utils >= app-arch/cpio-2.11 >= virtual/tar >= sys-apps/coreutils-8.22 >= sys-apps/findutils-4.4 >= virtual/grep >= virtual/kbd >= virtual/procps >= virtual/module-tools >= virtual/sed >= virtual/eject >= sys-apps/util-linux-2.25 >= sys-apps/plymouth-0.8.8 >= sys-apps/grubby-8.40 >= sys-fs/lvm2-2.02.111 >= sys-fs/device-mapper-2.02.111 >= sys-fs/udev-230 >= sys-apps/systemd-230" # todo nfs, icsci, rpcbind NETWORK_DEPEND=">= virtual/iproute2 >= virtual/dhcp >= 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}-045-magellan.patch mirror://${PNAME}/${PNAME}-036-mkinitrd-ignore-allow-missing-switch.patch mirror://${PNAME}/${PNAME}-019-convertfs-make-selinux-optional.patch mirror://${PNAME}/${PNAME}-046-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}-045-magellan.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}-046-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:g" \ 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} # always usr /usr/lib as dracut modules dir mconfigure --sysconfdir=/etc --sbindir=/usr/bin --libdir=/usr/lib --systemdsystemunitdir=$(mget-systemd-unit-dir) || die mmake || die } src_install_dracut() { cd ${SRCDIR} mmake DESTDIR=${BINDIR} install || die # remove modules owned by other packages mdelete -r /usr/lib/dracut/modules.d/01fips || die mdelete -r /usr/lib/dracut/modules.d/02fips-aesni || die mdelete -r /usr/lib/dracut/modules.d/02caps || die mdelete -r /usr/lib/dracut/modules.d/02systemd-networkd || die mdelete -r /usr/lib/dracut/modules.d/90kernel-network-modules || die mdelete -r /usr/lib/dracut/modules.d/40network || die mdelete -r /usr/lib/dracut/modules.d/90livenet || die mdelete -r /usr/lib/dracut/modules.d/90qemu-net || die mdelete -r /usr/lib/dracut/modules.d/95cifs || die mdelete -r /usr/lib/dracut/modules.d/95fcoe || die mdelete -r /usr/lib/dracut/modules.d/95iscsi || die mdelete -r /usr/lib/dracut/modules.d/95nbd || die mdelete -r /usr/lib/dracut/modules.d/95nfs || die mdelete -r /usr/lib/dracut/modules.d/95ssh-client || die mdelete -r /usr/lib/dracut/modules.d/45ifcfg || die mdelete -r /usr/lib/dracut/modules.d/95znet || die mdelete -r /usr/lib/dracut/modules.d/95fcoe-uefi || die mdelete -r /usr/lib/dracut/modules.d/99uefi-lib || die mdelete /usr/share/man/man8/dracut-catimages.8\* || die mdelete /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} install || die # fix sometimes broken permissions mchmod 0755 /usr/lib/dracut/modules.d/40network/\*.sh || die # keep only related stuff zapmost ${BINDIR} \ usr/lib/dracut/modules.d/02systemd-networkd \ usr/lib/dracut/modules.d/40network \ usr/lib/dracut/modules.d/90kernel-network-modules \ 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 \ usr/lib/dracut/modules.d/95fcoe-uefi \ usr/lib/dracut/modules.d/99uefi-lib \ || die } src_install_dracut-fips() { cd ${SRCDIR} mmake DESTDIR=${BINDIR} 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} 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} install || die # keep only related stuff zapmost ${BINDIR} usr/lib/dracut/modules.d/02caps || die } src_install_dracut-tools() { cd ${SRCDIR} mmake DESTDIR=${BINDIR} 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 }