summaryrefslogtreecommitdiff
path: root/mkinitramfs
diff options
context:
space:
mode:
authorBen Hutchings <ben@decadent.org.uk>2018-02-13 00:52:36 +0000
committerBen Hutchings <ben@decadent.org.uk>2019-02-06 00:50:10 +0000
commit1ae0994ff9a16ea2e8c4c61ba2f526820ffe608d (patch)
treea7e0137827a37f1e33d0a6db642c5dd975d0080f /mkinitramfs
parent5002aa9e09bf6ff02451764a902e627a33dcf890 (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-xmkinitramfs38
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