From 159c11e70b447514ad67c32eb3478ecdb3699157 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C4=90o=C3=A0n=20Tr=E1=BA=A7n=20C=C3=B4ng=20Danh?= Date: Tue, 22 Nov 2022 16:09:35 +0700 Subject: [PATCH] New package: initramfs-tools-0.142 --- srcpkgs/initramfs-tools/files/hooks/udev | 49 +++++++++ .../files/kernel/hook-postinst | 10 ++ .../initramfs-tools/files/kernel/hook-postrm | 10 ++ .../files/scripts/init-bottom/udev | 28 +++++ .../files/scripts/init-top/udev | 32 ++++++ .../initramfs-tools/patches/dpkg-arch.patch | 104 ++++++++++++++++++ srcpkgs/initramfs-tools/patches/hid.patch | 51 +++++++++ srcpkgs/initramfs-tools/template | 78 +++++++++++++ srcpkgs/klibc/files/initramfs-tools-hooks | 37 +++++++ srcpkgs/klibc/template | 2 + 10 files changed, 401 insertions(+) create mode 100755 srcpkgs/initramfs-tools/files/hooks/udev create mode 100644 srcpkgs/initramfs-tools/files/kernel/hook-postinst create mode 100644 srcpkgs/initramfs-tools/files/kernel/hook-postrm create mode 100755 srcpkgs/initramfs-tools/files/scripts/init-bottom/udev create mode 100755 srcpkgs/initramfs-tools/files/scripts/init-top/udev create mode 100644 srcpkgs/initramfs-tools/patches/dpkg-arch.patch create mode 100644 srcpkgs/initramfs-tools/patches/hid.patch create mode 100644 srcpkgs/initramfs-tools/template create mode 100755 srcpkgs/klibc/files/initramfs-tools-hooks diff --git a/srcpkgs/initramfs-tools/files/hooks/udev b/srcpkgs/initramfs-tools/files/hooks/udev new file mode 100755 index 000000000000..51a16ef4cf6f --- /dev/null +++ b/srcpkgs/initramfs-tools/files/hooks/udev @@ -0,0 +1,49 @@ +#!/bin/sh -e + +PREREQS="" + +prereqs() { echo "$PREREQS"; } + +case "$1" in + prereqs) + prereqs + exit 0 + ;; +esac + +. /usr/share/initramfs-tools/hook-functions + +copy_exec /bin/udevd /bin +copy_exec /bin/udevadm /bin + +mkdir -p "$DESTDIR/lib/systemd" +ln -rs "$DESTDIR/bin/udevd" "$DESTDIR/lib/systemd/systemd-udevd" + +mkdir -p "$DESTDIR/etc/udev" +cp -p /etc/udev/udev.conf "$DESTDIR/etc/udev/" + +mkdir -p "$DESTDIR/lib/udev/rules.d/" +for rules in 50-udev-default.rules \ + 60-block.rules 60-persistent-storage.rules \ + 71-seat.rules 75-net-description.rules \ + 80-net-name-slot.rules 80-drivers.rules; do + if [ -e /etc/udev/rules.d/$rules ]; then + cp -p /etc/udev/rules.d/$rules "$DESTDIR/lib/udev/rules.d/" + elif [ -e /lib/udev/rules.d/$rules ]; then + cp -p /lib/udev/rules.d/$rules "$DESTDIR/lib/udev/rules.d/" + fi +done + +# now copy all custom udev rules which don't have an equivalent in /lib (e. g. +# 70-persistent-net.rules or similar); They might contain network names or +# other bits which are relevant for the initramfs. +for rules in /etc/udev/rules.d/*.rules; do + if [ -e "$rules" ] && [ ! -e "/lib/${rules#/etc/}" ]; then + cp -p "$rules" "$DESTDIR/lib/udev/rules.d/" + fi +done + +for program in ata_id scsi_id; do + copy_exec /lib/udev/$program /lib/udev +done +copy_exec /sbin/blkid /sbin diff --git a/srcpkgs/initramfs-tools/files/kernel/hook-postinst b/srcpkgs/initramfs-tools/files/kernel/hook-postinst new file mode 100644 index 000000000000..8c83bc836768 --- /dev/null +++ b/srcpkgs/initramfs-tools/files/kernel/hook-postinst @@ -0,0 +1,10 @@ +#!/bin/sh +# +# Kernel post-install hook for initramfs-tools. +# +# Arguments passed to this script: $1 pkgname, $2 version. +# +PKGNAME="$1" +VERSION="$2" + +usr/bin/mkinitramfs -o boot/initramfs-${VERSION}.img ${VERSION} diff --git a/srcpkgs/initramfs-tools/files/kernel/hook-postrm b/srcpkgs/initramfs-tools/files/kernel/hook-postrm new file mode 100644 index 000000000000..f64f34cc47da --- /dev/null +++ b/srcpkgs/initramfs-tools/files/kernel/hook-postrm @@ -0,0 +1,10 @@ +#!/bin/sh +# +# Kernel post-install hook for initramfs-tools. +# +# Arguments passed to this script: $1 pkgname, $2 version. +# +PKGNAME="$1" +VERSION="$2" + +rm -f boot/initramfs-${VERSION}.img diff --git a/srcpkgs/initramfs-tools/files/scripts/init-bottom/udev b/srcpkgs/initramfs-tools/files/scripts/init-bottom/udev new file mode 100755 index 000000000000..73887eaa091b --- /dev/null +++ b/srcpkgs/initramfs-tools/files/scripts/init-bottom/udev @@ -0,0 +1,28 @@ +#!/bin/sh -e + +PREREQS="" + +prereqs() { echo "$PREREQS"; } + +case "$1" in + prereqs) + prereqs + exit 0 + ;; +esac + +# Stop udevd, we'll miss a few events while we run init, but we catch up +udevadm control --exit + +# move the /dev tmpfs to the rootfs; fall back to util-linux mount that does +# not understand -o move +mount -n -o move /dev "${rootmnt:?}/dev" || mount -n --move /dev "${rootmnt}/dev" + +# create a temporary symlink to the final /dev for other initramfs scripts +if command -v nuke >/dev/null; then + nuke /dev +else + # shellcheck disable=SC2114 + rm -rf /dev +fi +ln -s "${rootmnt}/dev" /dev diff --git a/srcpkgs/initramfs-tools/files/scripts/init-top/udev b/srcpkgs/initramfs-tools/files/scripts/init-top/udev new file mode 100755 index 000000000000..153a2bf406c2 --- /dev/null +++ b/srcpkgs/initramfs-tools/files/scripts/init-top/udev @@ -0,0 +1,32 @@ +#!/bin/sh -e + +PREREQS="" + +prereqs() { echo "$PREREQS"; } + +case "$1" in + prereqs) + prereqs + exit 0 + ;; +esac + +if [ -w /sys/kernel/uevent_helper ]; then + echo > /sys/kernel/uevent_helper +fi + +if [ "${quiet:-n}" = "y" ]; then + log_level=notice +else + log_level=info +fi + +UDEV_LOG=$log_level /lib/systemd/systemd-udevd --daemon --resolve-names=never + +udevadm control --reload || : +udevadm trigger --type=subsystems --action=add +udevadm trigger --type=devices --action=add +udevadm settle || true + +# Leave udev running to process events that come in out-of-band (like USB +# connections) diff --git a/srcpkgs/initramfs-tools/patches/dpkg-arch.patch b/srcpkgs/initramfs-tools/patches/dpkg-arch.patch new file mode 100644 index 000000000000..295a8111f947 --- /dev/null +++ b/srcpkgs/initramfs-tools/patches/dpkg-arch.patch @@ -0,0 +1,104 @@ +Index: initramfs-tools-0.142/hooks/thermal +=================================================================== +--- initramfs-tools-0.142.orig/hooks/thermal ++++ initramfs-tools-0.142/hooks/thermal +@@ -19,9 +19,9 @@ esac + + . /usr/share/initramfs-tools/hook-functions + +-case "$DPKG_ARCH" in ++case "$XBPS_ARCH" in + # copy the right modules +-powerpc|ppc64) ++ppc*) + + # Only G5 Mac machines need to load + # windfarm_core or one of the windfarm_pm* modules. +@@ -64,7 +64,7 @@ powerpc|ppc64) + manual_add_modules windfarm_smu_sat + manual_add_modules windfarm_smu_sensors + ;; +-i386|amd64|ia64) ++i686*|x86_64*) + manual_add_modules fan + manual_add_modules thermal + ;; +Index: initramfs-tools-0.142/init +=================================================================== +--- initramfs-tools-0.142.orig/init ++++ initramfs-tools-0.142/init +@@ -46,6 +46,7 @@ mount -t devpts -o noexec,nosuid,gid=5,m + + # Export the dpkg architecture + export DPKG_ARCH= ++export XBPS_ARCH= + . /conf/arch.conf + + # Set modprobe env +@@ -299,6 +300,7 @@ maybe_break init + unset debug + unset MODPROBE_OPTIONS + unset DPKG_ARCH ++unset XBPS_ARCH + unset ROOTFLAGS + unset ROOTFSTYPE + unset ROOTDELAY +Index: initramfs-tools-0.142/initramfs-tools.7 +=================================================================== +--- initramfs-tools-0.142.orig/initramfs-tools.7 ++++ initramfs-tools-0.142/initramfs-tools.7 +@@ -574,8 +574,9 @@ corresponds to the rootdelay, rootflags, + Use of ROOTDELAY is deprecated; you should implement a \fIlocal-block\fR + boot script rather than delaying or polling. + .TP +-\fB\fI DPKG_ARCH +-allows arch specific boot actions. ++\fB\fI DPKG_ARCH, XBPS_ARCH ++allows arch specific boot actions. Void Linux specific hooks should use ++\fBXBPS_ARCH\fR. + .TP + \fB\fI blacklist, panic, quiet, resume, noresume, resume_offset + set according relevant boot option. +Index: initramfs-tools-0.142/mkinitramfs +=================================================================== +--- initramfs-tools-0.142.orig/mkinitramfs ++++ initramfs-tools-0.142/mkinitramfs +@@ -284,7 +284,29 @@ __TMPCPIOGZ="$(mktemp "${TMPDIR:-/var/tm + __TMPMAINCPIO="$(mktemp "${TMPDIR:-/var/tmp}/mkinitramfs-MAIN_XXXXXX")" || exit 1 + __TMPEARLYCPIO="$(mktemp "${TMPDIR:-/var/tmp}/mkinitramfs-FW_XXXXXX")" || exit 1 + +-DPKG_ARCH=$(dpkg --print-architecture) ++XBPS_ARCH=$(xbps-uhelper arch) ++case "$XBPS_ARCH" in ++i686*) ++ DPKG_ARCH=i386 ;; ++x86_64*) ++ DPKG_ARCH=amd64 ;; ++aarch64*) ++ DPKG_ARCH=arm64 ;; ++armv[67]*) ++ DPKG_ARCH=armhf ;; ++arm*) ++ DPKG_ARCH=armel ;; ++ppc64le*) ++ DPKG_ARCH=ppc64el ;; ++ppc64*) ++ DPKG_ARCH=ppc64 ;; ++ppc*) ++ DPKG_ARCH=powerpc ;; ++mipsel*) ++ DPKG_ARCH=mipsel ;; ++mips*) ++ DPKG_ARCH=mips ;; ++esac + + # Export environment for hook scripts. + # +@@ -293,6 +315,7 @@ export version + export CONFDIR + export DESTDIR + export DPKG_ARCH ++export XBPS_ARCH + export verbose + export KEYMAP + export MODULES diff --git a/srcpkgs/initramfs-tools/patches/hid.patch b/srcpkgs/initramfs-tools/patches/hid.patch new file mode 100644 index 000000000000..9cf9cd76e75c --- /dev/null +++ b/srcpkgs/initramfs-tools/patches/hid.patch @@ -0,0 +1,51 @@ +Index: initramfs-tools-0.142/scripts/functions +=================================================================== +--- initramfs-tools-0.142.orig/scripts/functions ++++ initramfs-tools-0.142/scripts/functions +@@ -37,6 +37,22 @@ panic() + { + local console rest IFS + ++ # udev is not yet running, so load keyboard drivers ++ if [ "${quiet}" = "y" ]; then ++ opts="-q" ++ else ++ opts="-v" ++ fi ++ /sbin/modprobe ${opts} -a i8042 atkbd ehci-pci ehci-orion \ ++ ehci-hcd ohci-hcd ohci-pci uhci-hcd usbhid xhci \ ++ xhci-pci xhci-hcd ++ sleep 2 ++ for modalias in /sys/bus/hid/devices/*/modalias; do ++ if [ -f "${modalias}" ]; then ++ /sbin/modprobe ${opts} -b "$(cat "${modalias}")" ++ fi ++ done ++ + if command -v chvt >/dev/null 2>&1; then + chvt 1 + fi +@@ -92,23 +108,6 @@ maybe_break() + { + case ",${break?}," in + *,$1,*) +- if [ "$1" = "top" ]; then +- # udev is not yet running, so load keyboard drivers +- if [ "${quiet}" = "y" ]; then +- opts="-q" +- else +- opts="-v" +- fi +- /sbin/modprobe ${opts} -a i8042 atkbd ehci-pci ehci-orion \ +- ehci-hcd ohci-hcd ohci-pci uhci-hcd usbhid xhci \ +- xhci-pci xhci-hcd +- sleep 2 +- for modalias in /sys/bus/hid/devices/*/modalias; do +- if [ -f "${modalias}" ]; then +- /sbin/modprobe ${opts} -b "$(cat "${modalias}")" +- fi +- done +- fi + panic "Spawning shell within the initramfs" + ;; + esac diff --git a/srcpkgs/initramfs-tools/template b/srcpkgs/initramfs-tools/template new file mode 100644 index 000000000000..d1dd0978e086 --- /dev/null +++ b/srcpkgs/initramfs-tools/template @@ -0,0 +1,78 @@ +# Template file for 'initramfs-tools' +pkgname=initramfs-tools +version=0.142 +revision=1 +#archs="i686 x86_64" +#wrksrc= +#create_wrksrc=yes +#build_style=gnu-configure +#configure_args="" +#make_build_args="" +#make_install_args="" +#conf_files="" +#make_dirs="/var/log/dir 0755 root root" +#hostmakedepends="" +#makedepends="" +depends="klibc cpio kmod eudev e2fsprogs util-linux coreutils run-parts + ischroot kbd" +short_desc="Generic modular initramfs generator" +maintainer="Đoàn Trần Công Danh " +license="GPL-3.0-or-later" +homepage="https://wiki.debian.org/initramfs-tools" +#changelog="" +distfiles="${DEBIAN_SITE}/main/i/initramfs-tools/initramfs-tools_${version}.tar.xz" +checksum=e566929d02f53efcea7851aa9120bba417c320c60405b84d8774de01765e9882 +make_dirs=" + /etc/initramfs-tools/scripts/init-bottom 0755 root root + /etc/initramfs-tools/scripts/init-premount 0755 root root + /etc/initramfs-tools/scripts/init-top 0755 root root + /etc/initramfs-tools/scripts/local-bottom 0755 root root + /etc/initramfs-tools/scripts/local-premount 0755 root root + /etc/initramfs-tools/scripts/local-top 0755 root root + /etc/initramfs-tools/scripts/nfs-bottom 0755 root root + /etc/initramfs-tools/scripts/nfs-premount 0755 root root + /etc/initramfs-tools/scripts/nfs-top 0755 root root + /etc/initramfs-tools/scripts/panic 0755 root root + /etc/initramfs-tools/hooks 0755 root root + /etc/initramfs-tools/conf.d 0755 root root + /usr/share/initramfs-tools/conf.d 0755 root root + /usr/share/initramfs-tools/conf-hooks.d 0755 root root + /usr/share/initramfs-tools/modules.d 0755 root root +" +alternatives=" + initramfs:/etc/kernel.d/post-install/20-initramfs:/usr/share/initramfs-tools/kernel/hook-postinst + initramfs:/etc/kernel.d/post-remove/20-initramfs:/usr/share/initramfs-tools/kernel/hook-postrm + " +conf_files=" + /etc/initramfs-tools/modules + /etc/initramfs-tools/initramfs.conf + " + +do_build() { + cp -r ${FILESDIR}/* . + chmod -R a+r scripts hooks docs +} + +do_install() { + vbin lsinitramfs + vman lsinitramfs.8 + vbin mkinitramfs + vman mkinitramfs.8 + vbin unmkinitramfs + vman unmkinitramfs.8 + vman initramfs-tools.7 + vman initramfs.conf.5 + vinstall init 755 usr/share/initramfs-tools + vcopy scripts usr/share/initramfs-tools + vinstall conf/initramfs.conf 644 etc/initramfs-tools + vcopy hooks usr/share/initramfs-tools + vinstall hook-functions 644 usr/share/initramfs-tools + vinstall conf/modules 644 usr/share/initramfs-tools + vinstall conf/modules 644 etc/initramfs-tools + vsconf docs/example_hook + vsconf docs/example_script + vsconf docs/framebuffer + # kernel hooks. + vinstall kernel/hook-postinst 755 usr/share/initramfs-tools/kernel + vinstall kernel/hook-postrm 755 usr/share/initramfs-tools/kernel +} diff --git a/srcpkgs/klibc/files/initramfs-tools-hooks b/srcpkgs/klibc/files/initramfs-tools-hooks new file mode 100755 index 000000000000..403fa625819c --- /dev/null +++ b/srcpkgs/klibc/files/initramfs-tools-hooks @@ -0,0 +1,37 @@ +#!/bin/sh +# taken from Debian's project + +prereqs() +{ + if [ "${BUSYBOX}" = "n" ] || [ -z "${BUSYBOXDIR}" ]; then + echo '' + else + # Ensure busybox installs all its commands before + # checking what we should provide + echo zz-busybox + fi +} + +case $1 in +# get pre-requisites +prereqs) + prereqs + exit 0 + ;; +esac + +for src in /usr/lib/klibc/bin/*; do + command="$(basename "$src")" + case "$command" in + gzip | kinit | zcat) + # Don't install; these will not be needed + ;; + *) + # Don't install commands that already exist in /bin or /sbin + if ! [ -e "${DESTDIR}/sbin/$command" ]; then + cp -pnL "$src" "${DESTDIR}/bin" + fi + ;; + esac +done +cp -pL /lib/klibc-*.so "${DESTDIR}/lib" diff --git a/srcpkgs/klibc/template b/srcpkgs/klibc/template index b5b757d2745b..43b08ee51f6c 100644 --- a/srcpkgs/klibc/template +++ b/srcpkgs/klibc/template @@ -105,6 +105,8 @@ do_install() { else vbin klcc/${XBPS_TRIPLET/unknown-/}-klcc fi + vinstall ${FILESDIR}/initramfs-tools-hooks 755 \ + usr/share/initramfs-tools/hooks klibc } klibc-devel_package() {