summarylogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.SRCINFO16
-rw-r--r--PKGBUILD127
-rw-r--r--mdadm.install9
3 files changed, 96 insertions, 56 deletions
diff --git a/.SRCINFO b/.SRCINFO
index a4a56f57a67f..3aca39ec1a98 100644
--- a/.SRCINFO
+++ b/.SRCINFO
@@ -1,8 +1,6 @@
-# Generated by mksrcinfo v8
-# Thu Jan 12 16:54:28 UTC 2017
pkgbase = mdadm-git
pkgdesc = create, manage, and monitor Linux mdraid block device RAID arrays
- pkgver = 4.0.r0.g25cfca3
+ pkgver = 4.1.r106.ga64f126
pkgrel = 1
url = http://neil.brown.name/blog/mdadm
install = mdadm.install
@@ -11,21 +9,21 @@ pkgbase = mdadm-git
license = GPL
makedepends = git
depends = glibc
- provides = mdadm=4.0
+ provides = mdadm=4.1
conflicts = mkinitcpio<0.7
conflicts = mdadm
replaces = raidtools
backup = etc/mdadm.conf
- source = mdadm_gitnb::git://neil.brown.name/mdadm
+ source = mdadm_gitkr::git://git.kernel.org/pub/scm/utils/mdadm/mdadm.git
source = mdadm.conf::https://projects.archlinux.org/svntogit/packages.git/plain/trunk/mdadm.conf?h=packages/mdadm
- source = mdadm_hook::https://projects.archlinux.org/svntogit/packages.git/plain/trunk/mdadm_hook?h=packages/mdadm
- source = mdadm_install::https://projects.archlinux.org/svntogit/packages.git/plain/trunk/mdadm_install?h=packages/mdadm
source = mdadm_udev_install::https://projects.archlinux.org/svntogit/packages.git/plain/trunk/mdadm_udev_install?h=packages/mdadm
source = mdadm_udev_hook
+ md5sums = SKIP
+ md5sums = 5a37c112aa07dccdde62f9fa5b888607
+ md5sums = b6b0bfd6487c99264578630616dfe5eb
+ md5sums = 910398cd21e16c1da33f2d7449497245
sha256sums = SKIP
sha256sums = 4ce1e90690282f98e4828e11576fbd61be65e97a2cdae6c7eac7035ea5ee53e5
- sha256sums = d297b4fa6213016ec08e4f66d07cf7eb03426e4e17ab31eddfa5c5c1d82ea294
- sha256sums = 15bc46b9fa663dc204e2168861fabfd26e0dbcbb073792f271e3e4510897fb4e
sha256sums = 170b0e5d548416c0adb9df4e6941bea6bc33d843419c997e45ecaf9e36a58f38
sha256sums = d395184617f45849cbbaf5b4ee3665ca6895a1d642e0470e9de703ce944279ca
diff --git a/PKGBUILD b/PKGBUILD
index eadb4412b1dd..72bbd5c7b2c7 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -7,7 +7,7 @@
set -u
_pkgname='mdadm'
pkgname="${_pkgname}-git"
-pkgver=4.0.r0.g25cfca3
+pkgver=4.1.r106.ga64f126
pkgrel=1
pkgdesc='create, manage, and monitor Linux mdraid block device RAID arrays'
arch=('i686' 'x86_64')
@@ -22,20 +22,25 @@ conflicts=('mkinitcpio<0.7' "${_pkgname}")
replaces=('raidtools')
backup=("etc/${_pkgname}.conf")
install="${_pkgname}.install"
-_verwatch=('ftp://ftp.kernel.org/pub/linux/utils/raid/mdadm/' 'mdadm-\(.*\)\.tar\.xz' 'f')
+_verwatch=('https://mirrors.edge.kernel.org/pub/linux/utils/raid/mdadm/' 'mdadm-\(.*\)\.tar\.xz' 't')
_archlink="@@@::https://projects.archlinux.org/svntogit/packages.git/plain/trunk/@@@?h=packages/${_pkgname}"
-source=(# use either one, but not both. Reset with makepkg -sCf. My comparison shows these are identical, including the tags. Github is faster.
- "mdadm_gitnb::git://neil.brown.name/${_pkgname}"
- #"mdadm_github::git+https://github.com/neilbrown/${_pkgname}.git"
- "${_archlink//@@@/${_pkgname}.conf}"
- "${_archlink//@@@/${_pkgname}_hook}"
- "${_archlink//@@@/${_pkgname}_install}"
- "${_archlink//@@@/${_pkgname}_udev_install}"
- "mdadm_udev_hook")
+source=(
+ # choose whichever repo is newest.
+ #"mdadm_gitnb::git://neil.brown.name/${_pkgname}"
+ #"mdadm_github::git+https://github.com/neilbrown/${_pkgname}.git"
+ "mdadm_gitkr::git://git.kernel.org/pub/scm/utils/mdadm/mdadm.git"
+ "${_archlink//@@@/${_pkgname}.conf}"
+ #"${_archlink//@@@/${_pkgname}_hook}"
+ #"${_archlink//@@@/${_pkgname}_install}"
+ "${_archlink//@@@/${_pkgname}_udev_install}"
+ "${_pkgname}_udev_hook"
+)
+md5sums=('SKIP'
+ '5a37c112aa07dccdde62f9fa5b888607'
+ 'b6b0bfd6487c99264578630616dfe5eb'
+ '910398cd21e16c1da33f2d7449497245')
sha256sums=('SKIP'
'4ce1e90690282f98e4828e11576fbd61be65e97a2cdae6c7eac7035ea5ee53e5'
- 'd297b4fa6213016ec08e4f66d07cf7eb03426e4e17ab31eddfa5c5c1d82ea294'
- '15bc46b9fa663dc204e2168861fabfd26e0dbcbb073792f271e3e4510897fb4e'
'170b0e5d548416c0adb9df4e6941bea6bc33d843419c997e45ecaf9e36a58f38'
'd395184617f45849cbbaf5b4ee3665ca6895a1d642e0470e9de703ce944279ca')
@@ -49,65 +54,93 @@ pkgver() {
prepare() {
set -u
cd mdadm_git*/
- # NB strives for warning free code so the werror patch should not be necessary. Comment but don't erase it as it may be needed from time to time.
- #sed -i -e 's: -Werror : :g' 'Makefile' # disable-werror.patch
- sed -i -e 's:/usr/sbin/:/usr/bin:g' -e 's:/sbin:/usr/bin:g' 'Makefile' 'test' 'mkinitramfs' 'mdadm.conf.5'
+ # NB and the mdadm team strive for warning free code. Disable the warning only when necessary.
+ sed -e 's: -Werror : :g' -i 'Makefile' # disable-werror.patch
+ sed -e 's:/usr/sbin/:/usr/bin:g' -e 's:/sbin:/usr/bin:g' -i 'Makefile' 'test' 'mkinitramfs' 'mdadm.conf.5'
+
+ # make install must not compile anything
+ sed -e '/^install\s*:/ s:\bmdadm mdmon\b::g' -i 'Makefile'
set +u
}
build() {
set -u
cd mdadm_git*/
- msg2 'Build mdadm'
- make -s -j $(nproc) CXFLAGS="${CFLAGS}" BINDIR='/usr/bin' UDEVDIR='/usr/lib/udev'
- # build static mdassemble for Arch's initramfs for use with mkinitcpio hook mdadm. Hook mdadm_udev does not use mdassemble.
- msg2 'Build mdassemble'
- make -s -j $(nproc) CXFLAGS="${CFLAGS}" MDASSEMBLE_AUTO=1 mdassemble
+ local _nproc="$(nproc)"; _nproc=$((_nproc>8?8:_nproc))
+ nice make -s -j "${_nproc}" CXFLAGS="${CFLAGS}" BINDIR='/usr/bin' UDEVDIR='/usr/lib/udev'
set +u
}
check() {
set -u
cd mdadm_git*/
- make -s -j $(nproc) CXFLAGS="${CFLAGS}" test
- #sudo ./test # can't do sudo in a PKGBUILD
+ #make -s -j1 CXFLAGS="${CFLAGS}" test
+ # check must be run on a machine *NOT* running mdraid, think laptop!
+ # Watch for gksu prompts.
+ if ! :; then
+ #sudo ./test
+ echo "passed, but you can't deliver a PKGBUILD with sudo in it"
+ set +u
+ false
+ fi
set +u
}
package() {
set -u
cd mdadm_git*/
- make -s INSTALL='/usr/bin/install' BINDIR='/usr/bin' DESTDIR="${pkgdir}" UDEVDIR='/usr/lib/udev' install
- make -s SYSTEMD_DIR="${pkgdir}/usr/lib/systemd/system" install-systemd # does not honor silent -s
- install -Dpm755 'mdassemble' -t "${pkgdir}/usr/bin/"
+ make -s -j1 INSTALL='/usr/bin/install' BINDIR='/usr/bin' DESTDIR="${pkgdir}" UDEVDIR='/usr/lib/udev' install
+
+ # systemd addon
+ make -s -j1 SYSTEMD_DIR="${pkgdir}/usr/lib/systemd/system" install-systemd # does not honor silent -s
+ sed -e 's:#!/bin/sh:#!/usr/bin/sh:g' -i "${pkgdir}/usr/lib/systemd/system-shutdown/mdadm.shutdown"
+
+ # configuration
install -Dpm644 "${srcdir}/mdadm.conf" -t "${pkgdir}/etc/"
- sed -i -e 's:/usr/sbin/:/usr/bin:g' "${pkgdir}/etc/mdadm.conf"
- install -Dpm644 "${srcdir}/mdadm_install" "${pkgdir}/usr/lib/initcpio/install/mdadm"
- ## 2015-08-04 mdadm is required even when using mdassemble. This eliminates the need for adding mdadm to BINARIES="" in mkinitcpio.conf
- #if ! grep -q '/usr/bin/mdadm' "${pkgdir}/usr/lib/initcpio/install/mdadm"; then
- # sed -i -e 's:^\(\s\+\)\(add_binary \):\1\2"/usr/bin/mdadm"\n&:g' "${pkgdir}/usr/lib/initcpio/install/mdadm"
- #fi
- install -Dpm644 "${srcdir}/mdadm_hook" "${pkgdir}/usr/lib/initcpio/hooks/mdadm"
- sed -i -e 's:/usr/bin/ash:/usr/bin/bash:g' "${pkgdir}/usr/lib/initcpio/hooks/mdadm"
+ sed -e 's:/usr/sbin/:/usr/bin/:g' -i "${pkgdir}/etc/mdadm.conf"
+
+ # hook mdadm_udev
install -Dpm644 "${srcdir}/mdadm_udev_install" "${pkgdir}/usr/lib/initcpio/install/mdadm_udev"
if ! grep -q 'add_runscript' "${pkgdir}/usr/lib/initcpio/install/mdadm_udev"; then
- sed -i -e 's:^\(\s\+\)add_binary:\1add_runscript\n&:g' "${pkgdir}/usr/lib/initcpio/install/mdadm_udev"
+ sed -e 's:^\(\s\+\)add_binary:\1add_runscript\n&:g' -i "${pkgdir}/usr/lib/initcpio/install/mdadm_udev"
fi
+ sed -e 's:#!/bin/bash:#!/usr/bin/bash:g' -i "${pkgdir}/usr/lib/initcpio/install/mdadm_udev"
+ bash -n "${pkgdir}/usr/lib/initcpio/install/mdadm_udev" || echo "${}"
+ ln -s '/usr/lib/initcpio/install/mdadm_udev' "${pkgdir}/usr/lib/initcpio/install/mdadm"
+
+ # Custom display hook
install -Dpm644 "${srcdir}/mdadm_udev_hook" "${pkgdir}/usr/lib/initcpio/hooks/mdadm_udev"
- sed -i -e 's:#!/bin/bash:#!/usr/bin/bash:g' "${pkgdir}/usr/lib/initcpio/install"/{mdadm,mdadm_udev}
- sed -i -e 's:#!/bin/sh:#!/usr/bin/sh:g' "${pkgdir}/usr/lib/systemd/system-shutdown/mdadm.shutdown"
+ bash -n "${pkgdir}/usr/lib/initcpio/hooks/mdadm_udev" || echo "${}"
#ln -sf 'mdadm' "${pkgdir}/usr/lib/initcpio/hooks/raid" # symlink for backward compatibility
+
+ # Ensure all udev rules files are present in the initcpio install hooks
+ shopt -s failglob
+ local _lf=$'\n'
+ local _missing=''
+ pushd "${pkgdir}" > /dev/null
+ local _mks=(usr/lib/initcpio/install/*)
+ cd "${pkgdir}/usr/lib/udev/rules.d/"
+ local _mk _mkd _ud _udp
+ for _mk in "${_mks[@]}"; do
+ for _ud in *.rules; do
+ _udp="/usr/lib/udev/rules.d/${_ud}"
+ if ! grep -qe "add_file.*${_udp}" "${pkgdir}/${_mk}"; then
+ _missing+="${_lf}Missing ${_mk}: ${_udp}"
+ fi
+ done
+ done
+ popd > /dev/null
+ if [ ! -z "${_missing}" ]; then
+ echo "${_missing}"
+ set +u
+ # Disable for now.
+ : false
+ fi
+ shopt -u failglob
+
+ # Ensure files are clean
+ ! grep -alqr "mdassemble" "${pkgdir}" || { echo "Line ${LINENO} Forbidden: mdassemble"; false; }
+ ! grep -alqr "/sbin" "${pkgdir}" || echo "${}"
set +u
- # Ensure there are no forbidden paths. Place at the end of package() and comment out as you find or need exceptions. (git-aurcheck)
- ! test -d "${pkgdir}/bin" || { echo "Line ${LINENO} Forbidden: /bin"; false; }
- ! test -d "${pkgdir}/sbin" || { echo "Line ${LINENO} Forbidden: /sbin"; false; }
- ! test -d "${pkgdir}/lib" || { echo "Line ${LINENO} Forbidden: /lib"; false; }
- ! test -d "${pkgdir}/share" || { echo "Line ${LINENO} Forbidden: /share"; false; }
- ! test -d "${pkgdir}/usr/sbin" || { echo "Line ${LINENO} Forbidden: /usr/sbin"; false; }
- ! test -d "${pkgdir}/usr/local" || { echo "Line ${LINENO} Forbidden: /usr/local"; false; }
- ! grep -lr "/sbin" "${pkgdir}" || { echo "Line ${LINENO} Forbidden: /sbin"; false; }
- ! grep -lr "/usr/tmp" "${pkgdir}" || { echo "Line ${LINENO} Forbidden: /usr/tmp"; false; }
- ! grep -lr "/usr/local" "${pkgdir}" || { echo "Line ${LINENO} Forbidden: /usr/local"; false; }
- ! pcre2grep -Ilr "(?<!/usr)/bin" "${pkgdir}" || { echo "Line ${LINENO} Forbidden: /bin"; false; }
}
set +u
diff --git a/mdadm.install b/mdadm.install
index 4c22c159fb09..c1b0f730bf8e 100644
--- a/mdadm.install
+++ b/mdadm.install
@@ -1,6 +1,13 @@
# arg 1: the new package version
# arg 2: the old package version
+_picheck() {
+ if grep -qe '^\s*HOOKS=.*\<mdadm\>' '/etc/mkinitcpio.conf'; then
+ echo 'The old mkinitcpio hook "mdadm" is no longer supported'
+ echo 'In /etc/mkinitcpio.conf HOOKS= change "mdadm" to "mdadm_udev"'
+ fi
+}
+
post_upgrade() {
if [ "$(vercmp "$2" '2.6.8-2')" -lt 0 -a "$(grep 'raid_partitions' '/etc/mkinitcpio.conf')" ]; then
echo "Attention mdadm update:"
@@ -18,6 +25,7 @@ post_upgrade() {
echo 'One or more arrays may be damaged. Please repair soon.'
tput 'sgr0'
fi
+ _picheck
}
post_install() {
@@ -32,6 +40,7 @@ post_install() {
mv '/etc/mdadm.conf.pacsave' '/etc/mdadm.conf' && echo '/etc/mdadm.conf restored from /etc/mdadm.conf.pacsave'
fi
fi
+ _picheck
}
pre_remove() {