diff options
author | Platon Ryzhikov | 2019-01-04 10:41:53 +0300 |
---|---|---|
committer | Platon Ryzhikov | 2019-01-04 10:41:53 +0300 |
commit | 56530819b021eeb553fe3630f1533dfddf3670c8 (patch) | |
tree | 472ad583592551c84fdc62f156aa599f81ddbf7d | |
download | aur-56530819b021eeb553fe3630f1533dfddf3670c8.tar.gz |
Initial commit
-rw-r--r-- | .SRCINFO | 43 | ||||
-rw-r--r-- | 11-dm-initramfs.rules | 3 | ||||
-rw-r--r-- | PKGBUILD | 100 | ||||
-rw-r--r-- | lvm2_hook | 25 | ||||
-rw-r--r-- | lvm2_install | 43 |
5 files changed, 214 insertions, 0 deletions
diff --git a/.SRCINFO b/.SRCINFO new file mode 100644 index 000000000000..79bf8dfe0173 --- /dev/null +++ b/.SRCINFO @@ -0,0 +1,43 @@ +pkgbase = lvm2-noudev + pkgver = 2.02.183 + pkgrel = 1 + url = https://sourceware.org/lvm2/ + arch = x86_64 + groups = base + license = GPL2 + license = LGPL2.1 + makedepends = git + makedepends = thin-provisioning-tools + source = git+https://sourceware.org/git/lvm2.git#tag=v2_02_183?signed + source = lvm2_install + source = lvm2_hook + source = 11-dm-initramfs.rules + validpgpkeys = 88437EF5C077BD113D3B7224228191C1567E2C17 + validpgpkeys = D501A478440AE2FD130A1BE8B9112431E509039F + sha256sums = SKIP + sha256sums = cc51940a8437f3c8339bb9cec7e929b2cc0852ffc8a0b2463e6f67ca2b9950f6 + sha256sums = 97d7c92e4954bc0108e7cd183b2eb5fe7ecc97e6f56369669e6537cb6ed45d80 + sha256sums = e10f24b57582d6e2da71f7c80732a62e0ee2e3b867fe84591ccdb53e80fa92e0 + +pkgname = lvm2-noudev + pkgdesc = Logical Volume Manager 2 utilities + depends = bash + depends = device-mapper>=2.02.183 + depends = libutil-linux + depends = readline + depends = thin-provisioning-tools + provides = lvm2 + conflicts = lvm + conflicts = mkinitcpio<0.7 + conflicts = lvm2 + options = !makeflags + backup = etc/lvm/lvm.conf + backup = etc/lvm/lvmlocal.conf + +pkgname = device-mapper-noudev + pkgdesc = Device mapper userspace library and tools + url = http://sourceware.org/dm/ + depends = glibc + provides = device-mapper=2.02.183 + conflicts = device-mapper + diff --git a/11-dm-initramfs.rules b/11-dm-initramfs.rules new file mode 100644 index 000000000000..d2c167324528 --- /dev/null +++ b/11-dm-initramfs.rules @@ -0,0 +1,3 @@ +# needed with new udev/mkinitcpio and as implemented in dracut: +# <http://git.kernel.org/?p=boot/dracut/dracut.git;a=commitdiff;h=12b9736228f2b34c15a9cb63be79cf7b6e865b54> +SUBSYSTEM=="block", KERNEL=="dm-[0-9]*", ACTION=="add|change", OPTIONS="db_persist" diff --git a/PKGBUILD b/PKGBUILD new file mode 100644 index 000000000000..bc7b3e21978f --- /dev/null +++ b/PKGBUILD @@ -0,0 +1,100 @@ +# Maintainer: Platon Ryzhikov <ihummer63@yandex.ru> +# Contributor: Eric Bélanger <eric@archlinux.org> +# Contributor: Thomas Bächler <thomas@archlinux.org> + +# noudev: udev support is only kept in initramfs + +pkgbase=lvm2-noudev +pkgname=('lvm2-noudev' 'device-mapper-noudev') +pkgver=2.02.183 +pkgrel=1 +arch=('x86_64') +url='https://sourceware.org/lvm2/' +license=('GPL2' 'LGPL2.1') +makedepends=('git' 'thin-provisioning-tools') +groups=('base') +validpgpkeys=('88437EF5C077BD113D3B7224228191C1567E2C17' # Alasdair G Kergon <agk@redhat.com> + 'D501A478440AE2FD130A1BE8B9112431E509039F') # Marian Csontos <marian.csontos@gmail.com> +source=("git+https://sourceware.org/git/lvm2.git#tag=v${pkgver//./_}?signed" + 'lvm2_install' + 'lvm2_hook' + '11-dm-initramfs.rules') +sha256sums=('SKIP' + 'cc51940a8437f3c8339bb9cec7e929b2cc0852ffc8a0b2463e6f67ca2b9950f6' + '97d7c92e4954bc0108e7cd183b2eb5fe7ecc97e6f56369669e6537cb6ed45d80' + 'e10f24b57582d6e2da71f7c80732a62e0ee2e3b867fe84591ccdb53e80fa92e0') + +build() { + local _CONFIGUREOPTS=( + --prefix=/usr + --sbindir=/usr/bin + --sysconfdir=/etc + --localstatedir=/var + --enable-applib + --enable-cmdlib + --enable-dmeventd + --enable-lvmetad + --enable-lvmpolld + --enable-pkgconfig + --enable-readline + --enable-use-lvmetad + --with-cache=internal + --with-default-dm-run-dir=/run + --with-default-locking-dir=/run/lock/lvm + --with-default-pid-dir=/run + --with-default-run-dir=/run/lvm + --with-systemdsystemunitdir=no + --with-thin=internal + --with-udev-prefix=/usr + ) + + cp -a lvm2/ lvm2-initramfs/ + + cd lvm2/ + + ./configure "${_CONFIGUREOPTS[@]}" --enable-udev-systemd-background-jobs=no --enable-udev_rules=no --enable-udev_sync=no --enable-udev-rule-exec-detection=no + make + + # Build legacy udev rule for initramfs + cd ../lvm2-initramfs + ./configure "${_CONFIGUREOPTS[@]}" --enable-udev-systemd-background-jobs=no --enable-udev_rules --enable-udev_sync + cd udev + make 69-dm-lvm-metad.rules +} + +package_device-mapper-noudev() { + pkgdesc="Device mapper userspace library and tools" + url="http://sourceware.org/dm/" + depends=('glibc') + conflicts=('device-mapper') + provides=("device-mapper=$pkgver") + + cd lvm2/ + + make DESTDIR="${pkgdir}" install_device-mapper + # extra udev rule for device-mapper in initramfs + install -D -m644 "${srcdir}/11-dm-initramfs.rules" "${pkgdir}/usr/lib/initcpio/udev/11-dm-initramfs.rules" +} + +package_lvm2-noudev() { + pkgdesc="Logical Volume Manager 2 utilities" + depends=('bash' "device-mapper>=${pkgver}" 'libutil-linux' 'readline' 'thin-provisioning-tools') + conflicts=('lvm' 'mkinitcpio<0.7' 'lvm2') + provides=('lvm2') + backup=('etc/lvm/lvm.conf' + 'etc/lvm/lvmlocal.conf') + options=('!makeflags') + + cd lvm2/ + + make DESTDIR="${pkgdir}" install_lvm2 + # install applib + make -C liblvm DESTDIR="${pkgdir}" install + # /etc directories + install -d "${pkgdir}"/etc/lvm/{archive,backup} + # mkinitcpio hook + install -D -m644 "${srcdir}/lvm2_hook" "${pkgdir}/usr/lib/initcpio/hooks/lvm2" + install -D -m644 "${srcdir}/lvm2_install" "${pkgdir}/usr/lib/initcpio/install/lvm2" + # extra udev rule for lvmetad in non-systemd initramfs + install -D -m644 "${srcdir}/lvm2-initramfs/udev/69-dm-lvm-metad.rules" "${pkgdir}/usr/lib/initcpio/udev/69-dm-lvm-metad.rules" +} diff --git a/lvm2_hook b/lvm2_hook new file mode 100644 index 000000000000..3c28d67ffb97 --- /dev/null +++ b/lvm2_hook @@ -0,0 +1,25 @@ +#!/usr/bin/ash + +run_earlyhook() { + mkdir /run/lvm + lvmetad +} + +# We are suffering a race condition in non-systemd initramfs: If lvmetad is +# killed before pvscan processes finish we have stale processes and +# uninitialized physical volumes. So wait for pvscan processes to finish. +# Break after 10 seconds (50*0.2s) to avaid infinite loop. +run_latehook() { + local i=50 + + while pgrep -f pvscan >/dev/null 2>/dev/null && [ $i -gt 0 ]; do + sleep 0.2 + i=$((i - 1)) + done +} + +run_cleanuphook() { + kill $(cat /run/lvmetad.pid) +} + +# vim: set ft=sh ts=4 sw=4 et: diff --git a/lvm2_install b/lvm2_install new file mode 100644 index 000000000000..d7a63332a403 --- /dev/null +++ b/lvm2_install @@ -0,0 +1,43 @@ +#!/usr/bin/bash + +build() { + local mod + local symlink + + # device mapper modules + for mod in dm-mod dm-snapshot dm-mirror dm-cache dm-cache-smq dm-thin-pool; do + add_module "$mod" + done + + # binaries from lvm2 + add_binary "lvm" + add_binary "lvmetad" + + # beinaries from device-mapper + add_binary "dmsetup" + + # from thin-provisioning-tools + add_binary "pdata_tools" + for symlink in cache_{check,dump,metadata_size,repair,restore} thin_{check,delta,dump,ls,metadata_size,repair,restore,rmap,trim}; do + add_symlink "/usr/bin/${symlink}" "pdata_tools" + done + + # udev rules and lvm configuration + add_file "/usr/lib/udev/rules.d/10-dm.rules" + add_file "/usr/lib/udev/rules.d/11-dm-lvm.rules" + add_file "/usr/lib/udev/rules.d/13-dm-disk.rules" + add_file "/usr/lib/udev/rules.d/95-dm-notify.rules" + add_file "/usr/lib/initcpio/udev/11-dm-initramfs.rules" "/usr/lib/udev/rules.d/11-dm-initramfs.rules" + add_file "/usr/lib/initcpio/udev/69-dm-lvm-metad.rules" "/usr/lib/udev/rules.d/69-dm-lvm-metad.rules" + add_file "/etc/lvm/lvm.conf" + + add_runscript +} + +help() { + cat <<HELPEOF +This hook enables LVM2 volumes in initramfs. +HELPEOF +} + +# vim: set ft=sh ts=4 sw=4 et: |