summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libre/mkinitcpio/9001-udev.patch52
-rw-r--r--libre/mkinitcpio/PKGBUILD67
-rw-r--r--libre/mkinitcpio/mkinitcpio.install15
3 files changed, 134 insertions, 0 deletions
diff --git a/libre/mkinitcpio/9001-udev.patch b/libre/mkinitcpio/9001-udev.patch
new file mode 100644
index 000000000..0de1067a4
--- /dev/null
+++ b/libre/mkinitcpio/9001-udev.patch
@@ -0,0 +1,52 @@
+$ curl https://github.com/archlinux/mkinitcpio/commit/9ee1333a5f3302d7ddb004cf0909c94b4cff60ba.diff
+diff --git a/functions b/functions
+index 9539a60..f95fb92 100644
+--- a/functions
++++ b/functions
+@@ -625,6 +625,46 @@ add_binary() {
+ return 0
+ }
+
++add_udev_rule() {
++ # Add an udev rules file to the initcpio image. Dependencies on binaries
++ # will be discovered and added.
++ # $1: path to rules file (or name of rules file)
++
++ local rules="$1" rule= key= value= binary=
++
++ if [[ ${rules:0:1} != '/' ]]; then
++ rules=$(PATH=/usr/lib/udev/rules.d:/lib/udev/rules.d type -P "$rules")
++ fi
++ if [[ -z $rules ]]; then
++ # complain about not found rules
++ return 1
++ fi
++
++ add_file "$rules" /usr/lib/udev/rules.d/"${rules##*/}"
++
++ while IFS=, read -ra rule; do
++ # skip empty lines, comments
++ [[ -z $rule || $rule = @(+([[:space:]])|#*) ]] && continue
++
++ for pair in "${rule[@]}"; do
++ IFS=' =' read -r key value <<< "$pair"
++ case $key in
++ RUN@({program}|+)|IMPORT{program}|ENV{REMOVE_CMD})
++ # strip quotes
++ binary=${value//[\"\']/}
++ # just take the first word as the binary name
++ binary=${binary%% *}
++ [[ ${binary:0:1} == '$' ]] && continue
++ if [[ ${binary:0:1} != '/' ]]; then
++ binary=$(PATH=/usr/lib/udev:/lib/udev type -P "$binary")
++ fi
++ add_binary "$binary"
++ ;;
++ esac
++ done
++ done <"$rules"
++}
++
+ parse_config() {
+ # parse key global variables set by the config file.
+
diff --git a/libre/mkinitcpio/PKGBUILD b/libre/mkinitcpio/PKGBUILD
new file mode 100644
index 000000000..d8d12a586
--- /dev/null
+++ b/libre/mkinitcpio/PKGBUILD
@@ -0,0 +1,67 @@
+# Maintainer (Arch): Giancarlo Razzolini <grazzolini@archlinux.org>
+# Maintainer (Arch): Dave Reisner <dreisner@archlinux.org>
+# Maintainer (Arch): Thomas Bächler <thomas@archlinux.org>
+# Maintainer: David P. <megver83@parabola.nu>
+
+
+# parabola changes and rationale:
+# - replace 'systemd' dep with 'udev'
+# - emergency patch (mkinitcpio/udev patch #3121)
+# normally we keep core/mkinitcpio
+# !!! REMEMBER to db-remove libre/mkinitcpio !!!
+_IS_NONSYSTEMD=false
+
+
+pkgname=mkinitcpio
+pkgver=30
+pkgrel=2
+pkgrel+=$(${_IS_NONSYSTEMD} && echo '.nonsystemd1' || echo '.parabola2')
+pkgdesc="Modular initramfs image creation utility"
+arch=('any')
+url='https://github.com/archlinux/mkinitcpio'
+license=('GPL')
+makedepends=('asciidoc')
+depends=('awk' 'mkinitcpio-busybox>=1.19.4-2' 'kmod' 'util-linux>=2.23' 'libarchive' 'coreutils'
+ 'bash' 'diffutils' 'findutils' 'grep' 'filesystem>=2011.10-1' 'zstd' 'systemd')
+depends=( $(${_IS_NONSYSTEMD} && echo ${depends[*]/systemd/udev} || echo ${depends[*]}) )
+optdepends=('gzip: Use gzip compression for the initramfs image'
+ 'xz: Use lzma or xz compression for the initramfs image'
+ 'bzip2: Use bzip2 compression for the initramfs image'
+ 'lzop: Use lzo compression for the initramfs image'
+ 'lz4: Use lz4 compression for the initramfs image'
+ 'mkinitcpio-nfs-utils: Support for root filesystem on NFS')
+provides=('initramfs')
+backup=('etc/mkinitcpio.conf')
+source=("https://sources.archlinux.org/other/$pkgname/$pkgname-$pkgver.tar.gz"{,.sig})
+source+=( $(${_IS_NONSYSTEMD} && echo '9000-nonsystemd.patch') )
+source+=(9001-udev.patch)
+install=mkinitcpio.install
+sha512sums=('ef43a8ddc01697fa43bede4eebad3271bbc89efa57ba7e4e9f321e8174ff2af74d857b308c5c0f37b42a91906c91c1b022f9a651c70d5d3e9dfc8dc441a60ee4'
+ 'SKIP')
+sha512sums+=( $(${_IS_NONSYSTEMD} && echo 'f1ad7792b3b42397c2645e834d4b6c6a89122060455954d1ab56a71c673c3b8a8fdbbd6d722d30195211672b9075d09ac07ce6fb5d9723f56ce540709ebe4665') )
+sha512sums+=('695e70d85cf4c666b4325113f5f784b06002b0d9c626338b72bec9049a133cd5a2209d73193574da18d8ecac2fab54754cf499c18faaff5b20e2053a4d338b12')
+b2sums=('2001f9ac12bfa7369ad32842956cd21b2a786cd28133b6d3256e4aa77210c78ec6cac8a710ff8c2feb5a4797c1a33ce8c8c7dfabd84d7927c08bf8377e330300'
+ 'SKIP')
+b2sums+=( $(${_IS_NONSYSTEMD} && echo '92e1969572e0022bd257f44314045f57db47821d99a40ea1290749967b50ead1cb11adaa9b79f4286fbf20a94173e0ba7f2d4f88208e31d7a03a8de4ea014396') )
+b2sums+=('0f53c448b2ada7923c1dbab331a0b68a9e79f402bd7e16388a6ea2da4c7d93539405e4bd86eccdaaabcdfdbb0c01c5ca337ba226b81dd8dc91f6411c4e678c64')
+validpgpkeys=('ECCAC84C1BA08A6CC8E63FBBF22FB1D78A77AEAB' # Giancarlo Razzolini
+ '86CFFCA918CF3AF47147588051E8B148A9999C34') # Evangelos Foutras
+
+prepare() {
+ cd $pkgname-$pkgver
+
+ ${_IS_NONSYSTEMD} && patch -Np1 -i ../9000-nonsystemd.patch
+
+ # https://labs.parabola.nu/issues/3121
+ # https://github.com/archlinux/mkinitcpio/pull/54
+ # https://github.com/archlinux/mkinitcpio/commit/9ee1333a5f3302d7ddb004cf0909c94b4cff60ba.diff
+ patch -Np1 -i ../9001-udev.patch
+}
+
+check() {
+ make -C "$pkgname-$pkgver" check
+}
+
+package() {
+ make -C "$pkgname-$pkgver" DESTDIR="$pkgdir" install
+}
diff --git a/libre/mkinitcpio/mkinitcpio.install b/libre/mkinitcpio/mkinitcpio.install
new file mode 100644
index 000000000..8571ee7d3
--- /dev/null
+++ b/libre/mkinitcpio/mkinitcpio.install
@@ -0,0 +1,15 @@
+#!/bin/sh
+
+post_upgrade() {
+ if [ "$(vercmp 0.9.0 "$2")" -eq 1 ]; then
+ printf '==> If your /usr is on a separate partition, you must add the "usr" hook\n'
+ printf ' to /etc/mkinitcpio.conf and regenerate your images before rebooting\n'
+ fi
+
+ if [ "$(vercmp 0.12.0 "$2")" -eq 1 ]; then
+ printf '==> The "block" hook has replaced several hooks:\n'
+ printf ' fw, sata, pata, scsi, virtio, mmc, usb\n'
+ printf ' Replace any and all of these in /etc/mkinitcpio.conf with a single\n'
+ printf ' instance of the "block" hook\n'
+ fi
+}