# $Id$ PNAME="dracut" PVER="050" PBUILD="r1" PCAT="sys-apps" DESCRIPTION="Initramfs generator using udev which fully replaces mkinitrd." HOMEPAGE="https://dracut.wiki.kernel.org/" DEPEND=">= app-shells/bash-5 >= virtual/bzip2 >= virtual/gzip >= virtual/xz-utils >= virtual/cpio >= virtual/tar >= sys-apps/coreutils-8.32 >= sys-apps/findutils-4.7 >= virtual/grep >= virtual/kbd >= virtual/procps >= virtual/module-tools >= virtual/sed >= virtual/eject >= sys-apps/util-linux-2.35 >= sys-apps/grubby-8.40 >= sys-fs/device-mapper-2.03 >= sys-fs/udev-242 >= sys-apps/kmod-27 >= sys-apps/systemd-242" # >= sys-apps/plymouth-0.9 # >= sys-fs/lvm2-2.03 PROVIDE="virtual/initramfs-tools" SDEPEND=">= app-text/docbook-xml-dtd-9 >= app-text/docbook-xml-dtd-9 >= app-text/asciidoc-8.6 >= sys-apps/util-linux-dev-2.35 >= sys-fs/udev-dev-245 >= sys-apps/kmod-dev-27 >= sys-apps/systemd-dev-245 >= sys-apps/plymouth-0.9" SRCFILE="${PNAME}-${PVER}.tar.gz" SRCDIR="${BUILDDIR}/${PNAME}-${PVER}" ALX_PKG_KEEP="etc/dracut.conf etc/dracut.conf.d usr/lib/dracut/dracut-install usr/lib/dracut/dracut-logger.sh usr/lib/dracut/dracut-functions usr/lib/dracut/dracut-functions.sh usr/lib/dracut/dracut-initramfs-restore usr/lib/dracut/dracut-version.sh usr/lib/kernel/install.d/50-dracut.install usr/lib/kernel/install.d/51-dracut-rescue.install usr/lib/dracut/dracut-init.sh usr/lib/dracut/skipcpio usr/lib/dracut/modules.d/00bash usr/lib/dracut/modules.d/00systemd usr/lib/dracut/modules.d/01systemd-initrd usr/lib/dracut/modules.d/02systemd-networkd usr/lib/dracut/modules.d/05busybox usr/lib/dracut/modules.d/10i18n usr/lib/dracut/modules.d/30convertfs usr/lib/dracut/modules.d/35network-legacy usr/lib/dracut/modules.d/40network usr/lib/dracut/modules.d/45ifcfg usr/lib/dracut/modules.d/45url-lib usr/lib/dracut/modules.d/50drm usr/lib/dracut/modules.d/50plymouth usr/lib/dracut/modules.d/90dm usr/lib/dracut/modules.d/90dmsquash-live usr/lib/dracut/modules.d/90kernel-network-modules usr/lib/dracut/modules.d/90kernel-modules usr/lib/dracut/modules.d/90livenet usr/lib/dracut/modules.d/95dasd usr/lib/dracut/modules.d/95dasd_mod usr/lib/dracut/modules.d/95dasd_rules usr/lib/dracut/modules.d/95fstab-sys usr/lib/dracut/modules.d/95resume usr/lib/dracut/modules.d/95rootfs-block usr/lib/dracut/modules.d/95terminfo usr/lib/dracut/modules.d/95udev-rules usr/lib/dracut/modules.d/98dracut-systemd usr/lib/dracut/modules.d/98pollcdrom usr/lib/dracut/modules.d/98syslog usr/lib/dracut/modules.d/98usrmount usr/lib/dracut/modules.d/99base usr/lib/dracut/modules.d/99fs-lib usr/lib/dracut/modules.d/99img-lib usr/lib/dracut/modules.d/99shutdown usr/lib/systemd usr/bin/dracut usr/bin/dracut-catimages usr/bin/lsinitrd usr/bin/mkinitrd var/initramfs var/log/dracut.log" # not supported with alx # usr/lib/dracut/modules.d/90dmraid # usr/lib/dracut/modules.d/90mdraid # usr/lib/dracut/modules.d/90multipath # usr/lib/dracut/modules.d/97biosdevname sminclude mbuild mtools systemd cleanutils alx-split msetfeature "!check" # += to add injection files (alx.sminc) SRC_URI+=( https://git.kernel.org/pub/scm/boot/${PNAME}/${PNAME}.git/snapshot/${SRCFILE} mirror://${PNAME}/${SRCFILE} mirror://${PNAME}/${PNAME}-049-magellan.patch mirror://${PNAME}/${PNAME}-036-mkinitrd-ignore-allow-missing-switch.patch mirror://${PNAME}/${PNAME}-019-convertfs-make-selinux-optional.patch mirror://${PNAME}/${PNAME}-049-network-support-udhcpc-dhcpcd.patch mirror://${PNAME}/${PNAME}-049-busybox.patch mirror://${PNAME}/${PNAME}-049-busybox-fsfreeze.patch mirror://${PNAME}/${PNAME}-037-alx-busybox-install-method.patch ) UP2DATE="updatecmd http://www.kernel.org/pub/linux/utils/boot/${PNAME} | highesttarball xz" src_prepare() { munpack ${SRCFILE} || die cd ${SRCDIR} # magellan compat patch mpatch ${PNAME}-049-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}-049-network-support-udhcpc-dhcpcd.patch || die # be compatible with busybox cmds mpatch ${PNAME}-049-busybox.patch || die # use long options with fsfreeze to support the busybox binary mpatch ${PNAME}-049-busybox-fsfreeze.patch || die # install the busybox module with the alx method via busybox.links file mpatch ${PNAME}-037-alx-busybox-install-method.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 } alx_generic_src_install() { cd ${SRCDIR} mmake DESTDIR=${BINDIR} install || die # fix some broken permissions mchmod 0755 /usr/lib/dracut/modules.d/40network/\*.sh || die mchmod 0755 /usr/lib/dracut/modules.d/35network\*/\*.sh || 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 # install busybox-rc compatible config and remove upstream systemd one echo -e ${COLGREEN}" injecting custom dracut-configs"${COLDEFAULT} if [ -f ${BINDIR}/etc/dracut.conf.d/01-magellan.conf ] then mdelete /etc/dracut.conf.d/01-magellan.conf || die fi mcinjectfile 01-alx.conf /etc/dracut.conf.d || die } preinstall() { 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 add_conf_prot_mask /etc/dracut.conf /etc/dracut.conf.d }