Double check configuration files in order to avoid discrepancies
like this:
https://bugzilla.redhat.com/show_bug.cgi?id=1347454
Signed-off-by: Miguel Flores Silverio <floresmigu3l(a)gmail.com>
These are the steps or stages I understood to take part in the
process of generating the config files to build the diffent kernels.
Stage 1: Copy required files
Copy all the config files and merge.pl in the tree to the
directory with the vanilla version of the kernel
Stage 2: Generate config files dynamically
Dynamically create the config files for the different
architectures and kernel version. The recipe for each of one
the config files is in Makefile.config which uses merge.pl. The
latter takes two config files at a time and its only purpose
is to put them together. The resulting config files are a combination
of config-generic,config-[cpu arch]-generic and config-[cpu arch]-debug
with the name kernel-[kernel version]-[cpu arch].config
Stage 3: Apply any local configs
After all the different config files are generated, if there
are any configuration options in config-local, using merge.pl
apply them to the generated config files.
Stage 4: oldconfig over generated files
for each of the generated configs rename as .config and run
listnewconfigs to find any new config options. Any new options
are saved in .newoptions. If .newoptions contains anything, display
them and stop the compilation. If there are no new options, run
oldnoconfig(?). The resulting .config file is then renamed back and
copied to the configs directory.
Stage 5: Final config
At compilation time the right config file is grabed and copied
to .config and used as the final config file to build the kernel.
My initial approach was to use grep and nested loops which added
several lines to spec file. I also decided to check the config
files at Stage 5, right before compilation.
The spec file is already very complex as it is. I think
it appropiate to keep the solution as short and sweet as possible. So
I am reaching to the Fedora kernel wizards for guidance \o/
---
kernel.spec | 10 +++++++---
1 file changed, 7 insertions(+), 3 deletions(-)
diff --git a/kernel.spec b/kernel.spec
index 6bab535..8bcf44f 100644
--- a/kernel.spec
+++ b/kernel.spec
@@ -1278,6 +1278,12 @@ cp_vmlinux()
eu-strip --remove-comment -o "$2" "$1"
}
+CheckConfigs() {
+ generated_config=$1
+ final_config=$2
+ diff -s "$generated_config" "$final_config"
+}
+
BuildKernel() {
MakeTarget=$1
KernelImage=$2
@@ -1314,12 +1320,10 @@ BuildKernel() {
perl -p -i -e 's/^PATCHLEVEL.*/PATCHLEVEL = %{upstream_sublevel}/' Makefile
%endif
%endif
-
+ CheckConfigs configs/$Config .config
# and now to start the build process
-
make -s mrproper
cp configs/$Config .config
-
%if %{signkernel}%{signmodules}
cp %{SOURCE11} certs/.
%endif
--
2.7.4