diff options
author | Ben Hutchings <ben@decadent.org.uk> | 2018-02-13 00:52:36 +0000 |
---|---|---|
committer | Ben Hutchings <ben@decadent.org.uk> | 2019-02-06 00:50:10 +0000 |
commit | 1ae0994ff9a16ea2e8c4c61ba2f526820ffe608d (patch) | |
tree | a7e0137827a37f1e33d0a6db642c5dd975d0080f /mkinitramfs | |
parent | 5002aa9e09bf6ff02451764a902e627a33dcf890 (diff) |
mkinitramfs: Change EXTRA_CONF to include directory names
Collecting just basenames in EXTRA_CONF is a bit strange and makes
it complicated to use later on.
A (probably unintended) result of collecting only basenames is that
configuration files in /etc/initramfs-tools/conf.d mask those in
/usr/share/initramfs-tools/conf.d. Some users might rely on this, so
preserve that behaviour.
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
Diffstat (limited to 'mkinitramfs')
-rwxr-xr-x | mkinitramfs | 38 |
1 files changed, 23 insertions, 15 deletions
diff --git a/mkinitramfs b/mkinitramfs index 28a77d0..c834eca 100755 --- a/mkinitramfs +++ b/mkinitramfs @@ -65,18 +65,31 @@ done . /usr/share/initramfs-tools/hook-functions . "${CONFDIR}/initramfs.conf" + EXTRA_CONF='' -for i in /usr/share/initramfs-tools/conf.d/* "${CONFDIR}"/conf.d/*; do - [ -e "$i" ] && EXTRA_CONF="${EXTRA_CONF} $(basename "$i" \ - | grep '^[[:alnum:]][[:alnum:]\._-]*$' | grep -v '\.dpkg-.*$')"; +maybe_add_conf() { + if [ -e "$1" ] && \ + basename "$1" \ + | grep '^[[:alnum:]][[:alnum:]\._-]*$' \ + | grep -qv '\.dpkg-.*$'; then + EXTRA_CONF="${EXTRA_CONF} $1" + fi +} +for i in /usr/share/initramfs-tools/conf.d/*; do + # Configuration files in /etc mask those in /usr/share + if ! [ -e "${CONFDIR}"/conf.d/"$(basename "${i}")" ]; then + maybe_add_conf "${i}" + fi +done +for i in "${CONFDIR}"/conf.d/*; do + maybe_add_conf "${i}" done + for i in ${EXTRA_CONF}; do - if [ -d "${CONFDIR}/conf.d/${i}" ]; then - echo "W: ${CONFDIR}/conf.d/${i} is a directory instead of file" >&2 - elif [ -e "${CONFDIR}/conf.d/${i}" ]; then - . "${CONFDIR}/conf.d/${i}" - elif [ -e "/usr/share/initramfs-tools/conf.d/${i}" ]; then - . "/usr/share/initramfs-tools/conf.d/${i}" + if [ -d "${i}" ]; then + echo "W: ${i} is a directory instead of file" >&2 + else + . "${i}" fi done @@ -279,12 +292,7 @@ done echo "DPKG_ARCH=${DPKG_ARCH}" > "${DESTDIR}/conf/arch.conf" cp -p "${CONFDIR}/initramfs.conf" "${DESTDIR}/conf" for i in ${EXTRA_CONF}; do - if [ -e "${CONFDIR}/conf.d/${i}" ]; then - copy_file config "${CONFDIR}/conf.d/${i}" /conf/conf.d - elif [ -e "/usr/share/initramfs-tools/conf.d/${i}" ]; then - copy_file config "/usr/share/initramfs-tools/conf.d/${i}" \ - /conf/conf.d - fi + copy_file config "${i}" /conf/conf.d done # ROOT hardcoding |