summarylogtreecommitdiffstats
diff options
context:
space:
mode:
authorPlaton Ryzhikov2019-01-04 10:41:53 +0300
committerPlaton Ryzhikov2019-01-04 10:41:53 +0300
commit56530819b021eeb553fe3630f1533dfddf3670c8 (patch)
tree472ad583592551c84fdc62f156aa599f81ddbf7d
downloadaur-56530819b021eeb553fe3630f1533dfddf3670c8.tar.gz
Initial commit
-rw-r--r--.SRCINFO43
-rw-r--r--11-dm-initramfs.rules3
-rw-r--r--PKGBUILD100
-rw-r--r--lvm2_hook25
-rw-r--r--lvm2_install43
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: