Open matachi opened 8 years ago
It seems that the reason why dumpconf is throwing can't open file "arch/x86/Kconfig"
is because it doesn't understand when the current working directory is not the Linux source directory:
~/dev/kconfigreader$ binary/dumpconf ../linux/Kconfig
setting archusing arch x86
../linux/Kconfig:11: can't open file "arch/x86/Kconfig"
~/dev/kconfigreader$ cd ../linux
~/dev/linux$ ../kconfigreader/binary/dumpconf Kconfig
.
<submenu>
<menu flags="1">
<symbol type="string" flags="46464" id="37009792">
<name>SRCARCH</name>
<property type="?"><expr>S@37009792</expr></property>
<property type="env"><expr>'SRCARCH'</expr></property>
<property type="default"><expr>'x86'</expr></property>
</symbol>
</menu>
<menu flags="0">
<symbol type="boolean" flags="41216" id="37028208">
<name>64BIT</name>
...
So I manually generated the out.rsf
file by executing ~/dev/linux$ ../kconfigreader/binary/dumpconf Kconfig > ../kconfigreader/out.rsf
. I then deleted the dumpconf step from KConfigReader so it wouldn't overwrite it with an empty file:
diff --git a/src/main/scala/KConfigReader.scala b/src/main/scala/KConfigReader.scala
index ffe507e..99f85b8 100644
--- a/src/main/scala/KConfigReader.scala
+++ b/src/main/scala/KConfigReader.scala
@@ -61,7 +61,6 @@ object KConfigReader extends App {
val kconfigPath = options("kconfigpath")
val out = options("out")
- val kconfigFile = new File(kconfigPath)
val rsfFile = new File(out + ".rsf")
val modelFile = new File(out + ".model")
val dimacsFile = new File(out + ".dimacs")
@@ -70,12 +69,6 @@ object KConfigReader extends App {
val openFeatureListFile = new File(out + ".open")
val updatedDimacsFile = new File(out + ".dimacs.2")
- assert(kconfigFile.exists(), "kconfig file does not exist")
-
- //creating .rsf file
- println("dumping model")
- Process(dumpconf + " %s > %s".format(kconfigFile, rsfFile)).#>(rsfFile).!
-
//reading model
println("reading model")
val model = new XMLDumpReader().readRSF(rsfFile)
And now it's working:
~/dev/kconfigreader$ ./run.sh de.fosd.typechef.kconfig.KConfigReader --writeDimacs Kconfig out
reading model
getting constraints
Warning: 'SGI_IP32'=y will always evaluate to false
Warning: 'SGI_IP32'=y will always evaluate to false
Warning: 'SIBYTE_SB1xxx_SOC'=y will always evaluate to false
Warning: 'SIBYTE_SB1xxx_SOC'=y will always evaluate to false
Warning: 'SIBYTE_SB1xxx_SOC'=y will always evaluate to false
Warning: 'SIBYTE_SB1xxx_SOC'=y will always evaluate to false
Warning: 'CPU_DCACHE_DISABLE'=n will always evaluate to false
Warning: 'CPU_DCACHE_DISABLE'=n will always evaluate to false
checking combined constraint
writing model
writing dimacs
It's at least a working workaround.
I have compiled
dumpconf
using themake.sh
script against the kernel source tree I have downloaded. The version of it is:However, when I then tried to run kconfigreader, it crashed with the following error:
Which I assume is due to the content of
out.rsf
:When running only
dumpconf
, I'm getting the same error:So it's obvious that
dumpconf
doesn't behave correctly. Is it because the kernel version is too new? I have tried against 3.6.0 too, and it neither worked. What version are you using it against?Thanks, Daniel