introduce /usr/lib/dracut/dracut.conf.d/ drop-in directory
authorHarald Hoyer <harald@redhat.com>
Tue, 19 Feb 2013 16:36:15 +0000 (17:36 +0100)
committerHarald Hoyer <harald@redhat.com>
Tue, 19 Feb 2013 16:46:24 +0000 (17:46 +0100)
/usr/lib/dracut/dracut.conf.d/*.conf can be overwritten by the same
filenames in /etc/dracut.conf.d.

Packages should use /usr/lib/dracut/dracut.conf.d rather than
/etc/dracut.conf.d. /etc/dracut.conf.d belongs to the system
administrator.

Makefile
dracut.sh
dracut.spec

index 234176f..2a92d04 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -91,6 +91,7 @@ install: dracut-version.sh
        install -m 0755 lsinitrd.sh $(DESTDIR)$(bindir)/lsinitrd
        install -m 0644 dracut.conf $(DESTDIR)$(sysconfdir)/dracut.conf
        mkdir -p $(DESTDIR)$(sysconfdir)/dracut.conf.d
+       mkdir -p $(DESTDIR)$(pkglibdir)/dracut.conf.d
        install -m 0755 dracut-functions.sh $(DESTDIR)$(pkglibdir)/dracut-functions.sh
        install -m 0755 dracut-version.sh $(DESTDIR)$(pkglibdir)/dracut-version.sh
        ln -fs dracut-functions.sh $(DESTDIR)$(pkglibdir)/dracut-functions
index 4d17e4d..31cf2a5 100755 (executable)
--- a/dracut.sh
+++ b/dracut.sh
@@ -235,6 +235,30 @@ read_arg() {
     fi
 }
 
+
+source_dirs_prio()
+{
+    suffix=$1; shift
+    args=("$@")
+    files=$(
+        while (( $# > 0 )); do
+            for i in ${1}/*${suffix}; do
+                [[ -f $i ]] && echo ${i##*/}
+            done
+            shift
+        done | sort -Vu
+    )
+
+    for f in $files; do
+        for d in "${args[@]}"; do
+            if [[ -f "$d/$f" ]]; then
+                echo "$d/$f"
+                continue 2
+            fi
+        done
+    done
+}
+
 verbosity_mod_l=0
 unset kernel
 unset outfile
@@ -465,11 +489,9 @@ fi
 [[ -f $conffile ]] && . "$conffile"
 
 # source our config dir
-if [[ $confdir && -d $confdir ]]; then
-    for f in "$confdir"/*.conf; do
-        [[ -e $f ]] && . "$f"
-    done
-fi
+for f in $(source_dirs_prio ".conf" "$confdir" "$dracutbasedir/dracut.conf.d"); do
+    [[ -e $f ]] && . "$f"
+done
 
 # these optins add to the stuff in the config file
 if (( ${#add_dracutmodules_l[@]} )); then
index 22f3366..7d1bbbc 100644 (file)
@@ -217,12 +217,12 @@ touch $RPM_BUILD_ROOT%{_localstatedir}/log/dracut.log
 mkdir -p $RPM_BUILD_ROOT%{_sharedstatedir}/initramfs
 
 %if 0%{?fedora} || 0%{?rhel} || 0%{?suse_version}
-install -m 0644 dracut.conf.d/fedora.conf.example $RPM_BUILD_ROOT/etc/dracut.conf.d/01-dist.conf
-install -m 0644 dracut.conf.d/fips.conf.example $RPM_BUILD_ROOT/etc/dracut.conf.d/40-fips.conf
+install -m 0644 dracut.conf.d/fedora.conf.example $RPM_BUILD_ROOT%{dracutlibdir}/dracut.conf.d/01-dist.conf
+install -m 0644 dracut.conf.d/fips.conf.example $RPM_BUILD_ROOT%{dracutlibdir}/dracut.conf.d/40-fips.conf
 %endif
 
 %if 0%{?suse_version}
-install -m 0644 dracut.conf.d/suse.conf.example   $RPM_BUILD_ROOT/etc/dracut.conf.d/01-dist.conf
+install -m 0644 dracut.conf.d/suse.conf.example   $RPM_BUILD_ROOT%{dracutlibdir}/dracut.conf.d/01-dist.conf
 %endif
 
 %if 0%{?fedora} <= 12 && 0%{?rhel} < 6 && 0%{?suse_version} <= 9999
@@ -260,9 +260,10 @@ rm -rf $RPM_BUILD_ROOT
 %{dracutlibdir}/dracut-install
 %config(noreplace) /etc/dracut.conf
 %if 0%{?fedora} || 0%{?suse_version} || 0%{?rhel}
-%config /etc/dracut.conf.d/01-dist.conf
+%{dracutlibdir}/dracut.conf.d/01-dist.conf
 %endif
 %dir /etc/dracut.conf.d
+%dir %{dracutlibdir}/dracut.conf.d
 %{_mandir}/man8/dracut.8*
 %{_mandir}/man8/*service.8*
 %if 0%{?fedora} > 12 || 0%{?rhel} >= 6 || 0%{?suse_version} > 9999
@@ -345,7 +346,7 @@ rm -rf $RPM_BUILD_ROOT
 %files fips
 %defattr(-,root,root,0755)
 %{dracutlibdir}/modules.d/01fips
-%config(noreplace) /etc/dracut.conf.d/40-fips.conf
+%{dracutlibdir}/dracut.conf.d/40-fips.conf
 %endif
 
 %files fips-aesni