# $Id$ PNAME="dracut" PVER="045" PBUILD="r4" PCAT="sys-apps" DESCRIPTION="Initramfs generator using udev which fully replaces mkinitrd." HOMEPAGE="https://dracut.wiki.kernel.org/" DEPEND=">= app-shells/bash-4.2 >= virtual/bzip2 >= virtual/gzip >= virtual/xz-utils >= virtual/cpio >= 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.27 >= sys-apps/v86d-0.1.9 >= sys-apps/plymouth-0.8.8 >= sys-apps/grubby-8.35 >= sys-fs/device-mapper-2.02.111 >= sys-fs/udev-228 >= sys-apps/kmod-23 >= sys-apps/systemd-228" # >= sys-fs/lvm2-2.02.111 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.25 >= sys-fs/udev-dev-228 >= sys-apps/kmod-dev-23 >= sys-apps/systemd-dev-228" SRCFILE="${PNAME}-${PVER}.tar.xz" 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/40uvesafb 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/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+=( http://www.kernel.org/pub/linux/utils/boot/${PNAME}/${SRCFILE} mirror://${PNAME}/${SRCFILE} mirror://${PNAME}/${PNAME}-045-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}-045-network-support-udhcpc-dhcpcd-2.patch mirror://${PNAME}/${PNAME}-045-busybox.patch mirror://${PNAME}/${PNAME}-045-busybox-makefile.patch mirror://${PNAME}/${PNAME}-045-busybox-realpath.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}-045-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}-045-network-support-udhcpc-dhcpcd-2.patch || die # be compatible with busybox cmds mpatch ${PNAME}-045-busybox.patch || die mpatch ${PNAME}-045-busybox-makefile.patch || die mpatch ${PNAME}-045-busybox-realpath.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 sometimes broken permissions mchmod 0755 /usr/lib/dracut/modules.d/40network/\*.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 }