Skip to contentSkip to conversation

scripts/dtc: dt_to_config, use full path for dtx_diff

PATCH In review Frank Rowand 3 participants 7 messages Jun 25, 2016 – Jul 19, 2016 6 messages not in the archive Device tree

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 scripts/dtc: dt_to_config, use full path for dtx_diff

From: Frank Rowand <[email protected]>

Do not require dtx_diff to be in $PATH.

dt_to_config already needs to be run from the root directory of a kernel tree so use scripts/dtc/dtx_diff instead of dtx_diff.

---
 scripts/dtc/dt_to_config |   22 +++++++++++-----------
 1 file changed, 11 insertions(+), 11 deletions(-)
scripts/dtc/dt_to_config +11 -11
Index: b/scripts/dtc/dt_to_config
===================================================================
@@ -871,19 +871,10 @@ sub read_dts()
 		exit 3;
 	}
 
-	if (! `which dtx_diff`) {
-		print STDERR "\n";
-		print STDERR "file 'dtx_diff' is not executable or does not exist\n";
-		print STDERR "   Is scripts/dtc/ in the shell \$PATH variable?\n";
-		print STDERR "   Are you in the root directory of a kernel tree?\n";
-		print STDERR "\n";
-		exit 3;
-	}
-
-	if (!open(DT_FILE, "-|", "dtx_diff $file")) {
+	if (!open(DT_FILE, "-|", "$dtx_diff $file")) {
 		print STDERR "\n";
 		print STDERR "shell command failed:\n";
-		print STDERR "   dtx_diff $file\n";
+		print STDERR "   $dtx_diff $file\n";
 		print STDERR "\n";
 		exit 3;
 	}
@@ -1207,6 +1198,15 @@ if ($white_list_config) {
 	}
 }
 
+if (-x "scripts/dtc/dtx_diff") {
+	$dtx_diff = "scripts/dtc/dtx_diff";
+} else {
+
+	print STDERR "\n";
+	print STDERR "$script_name must be run from the root directory of a Linux kernel tree\n";
+	print STDERR "\n";
+	exit 3;
+}
 
 for $file (@ARGV) {
 	&read_dts($file);

--
To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html

A message that is not in the archive (sent off-list or not yet received): [email protected]

#2 lore raw
Quoted 6 lines · Frank Rowand

From: Frank Rowand <[email protected]>

Do not require dtx_diff to be in $PATH.

dt_to_config already needs to be run from the root directory of a kernel tree so use scripts/dtc/dtx_diff instead of dtx_diff.

Okay, now I get a bit further. I get this message even if I set my .config file on the command line:

grep: ./.config: No such file or directory

The config format still doesn't make sense to me. I'm running this on highbank.dts, and I get mostly options that are not relevant to highbank.

Rob
--
To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html

A message that is not in the archive (sent off-list or not yet received): CAL_JsqKUFR4uX24rV3hoYCEEZ-osDvycM12v1ome3-R3jNORZw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org

#4 lore raw
Quoted 5 lines · Rob Herring
Quoted 4 lines · Frank Rowand

From: Frank Rowand <[email protected]>

Do not require dtx_diff to be in $PATH.

Quoted 7 lines
Quoted 2 lines

dt_to_config already needs to be run from the root directory of a kernel tree so use scripts/dtc/dtx_diff instead of dtx_diff.

Okay, now I get a bit further. I get this message even if I set my .config file on the command line:

grep: ./.config: No such file or directory

All of the following work for me:

  scripts/dtc/dt_to_config --config .config arch/arm/boot/dts/highbank.dts

  scripts/dtc/dt_to_config --config=.config arch/arm/boot/dts/highbank.dts

  scripts/dtc/dt_to_config --config ./.config arch/arm/boot/dts/highbank.dts

  scripts/dtc/dt_to_config --config=./.config arch/arm/boot/dts/highbank.dts

What is the exact command line you are using?

Just to confirm, you are in the root directory of the kernel source tree and your .config is in the same directory (since you specified "./.config").

Quoted 4 lines

The config format still doesn't make sense to me. I'm running this on highbank.dts, and I get mostly options that are not relevant to highbank.

Yes. dt_to_config is not smart enough to know that you want to configure a highbank, so it offers you all of the choices that match the highbank compatibles, even for other boards. This is the same result that you would get if you were searching manually, but dt_to_config gives you those extraneous results much faster than if you were searching manually.

I did some proof of concept code to provide scores for the results, to select which entries are likely to be correct and which are likely to be wrong, but I did not want to add that complexity to the first version of dt_to_config -- it is complex enough already.

I now have some slides that provide more examples of using dt_to_config at

http://elinux.org/images/5/50/Dt_debugging_part_2.pdf

You can skip forward to slide 27, then skim to slide 35, then it starts talking in more detail about using dt_to_config.

I'm in Tokyo this week, so I may be somewhat slow responding.

-Frank
--
To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html

A message that is not in the archive (sent off-list or not yet received): [email protected]

#6 lore raw
Quoted 24 lines · Frank Rowand
Quoted 5 lines · Rob Herring
Quoted 4 lines · Frank Rowand

From: Frank Rowand <[email protected]>

Do not require dtx_diff to be in $PATH.

Quoted 7 lines
Quoted 2 lines

dt_to_config already needs to be run from the root directory of a kernel tree so use scripts/dtc/dtx_diff instead of dtx_diff.

Okay, now I get a bit further. I get this message even if I set my .config file on the command line:

grep: ./.config: No such file or directory

All of the following work for me:

  scripts/dtc/dt_to_config --config .config arch/arm/boot/dts/highbank.dts

  scripts/dtc/dt_to_config --config=.config arch/arm/boot/dts/highbank.dts

  scripts/dtc/dt_to_config --config ./.config arch/arm/boot/dts/highbank.dts

  scripts/dtc/dt_to_config --config=./.config arch/arm/boot/dts/highbank.dts
Quoted 1 line

What is the exact command line you are using?

scripts/dtc/dt_to_config -c .build-arm/.config --config-format arch/arm/boot/dts/highbank.dts

Quoted 3 lines

Just to confirm, you are in the root directory of the kernel source tree and your .config is in the same directory (since you specified "./.config").

I'm in the root, but .config is not.

Rob
--
To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html

A message that is not in the archive (sent off-list or not yet received): CAL_JsqJO98NsoG2RSSa7osZEzaiC8RrYigiwt_nJBCtUU1a8HA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org

#8 lore raw
Quoted 21 lines · Rob Herring
Quoted 20 lines · Frank Rowand
Quoted 5 lines · Rob Herring
Quoted 4 lines · Frank Rowand

From: Frank Rowand <[email protected]>

Do not require dtx_diff to be in $PATH.

Quoted 7 lines
Quoted 2 lines

dt_to_config already needs to be run from the root directory of a kernel tree so use scripts/dtc/dtx_diff instead of dtx_diff.

Okay, now I get a bit further. I get this message even if I set my .config file on the command line:

grep: ./.config: No such file or directory

All of the following work for me:

  scripts/dtc/dt_to_config --config .config arch/arm/boot/dts/highbank.dts

  scripts/dtc/dt_to_config --config=.config arch/arm/boot/dts/highbank.dts
Quoted 9 lines
Quoted 5 lines
  scripts/dtc/dt_to_config --config ./.config arch/arm/boot/dts/highbank.dts

  scripts/dtc/dt_to_config --config=./.config arch/arm/boot/dts/highbank.dts

What is the exact command line you are using?

scripts/dtc/dt_to_config -c .build-arm/.config --config-format arch/arm/boot/dts/highbank.dts

Above command works for me.

Quoted 7 lines
Quoted 3 lines

Just to confirm, you are in the root directory of the kernel source tree and your .config is in the same directory (since you specified "./.config").

I'm in the root, but .config is not.

Rob

--
To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html

A message that is not in the archive (sent off-list or not yet received): CA+rpMbKm8+S5yrbjAMg7K2J8ThBZhyyQ-iJ8_6+osxHUGqKwtQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org

#10 lore raw
Quoted 24 lines · Gaurav Minocha
Quoted 23 lines · Rob Herring
Quoted 22 lines · Frank Rowand
Quoted 5 lines · Rob Herring
Quoted 4 lines · Frank Rowand

From: Frank Rowand <[email protected]>

Do not require dtx_diff to be in $PATH.

Quoted 7 lines
Quoted 2 lines

dt_to_config already needs to be run from the root directory of a kernel tree so use scripts/dtc/dtx_diff instead of dtx_diff.

Okay, now I get a bit further. I get this message even if I set my .config file on the command line:

grep: ./.config: No such file or directory

All of the following work for me:

  scripts/dtc/dt_to_config --config .config arch/arm/boot/dts/highbank.dts

  scripts/dtc/dt_to_config --config=.config arch/arm/boot/dts/highbank.dts

  scripts/dtc/dt_to_config --config ./.config arch/arm/boot/dts/highbank.dts
Quoted 9 lines
Quoted 7 lines
Quoted 3 lines
  scripts/dtc/dt_to_config --config=./.config arch/arm/boot/dts/highbank.dts

What is the exact command line you are using?

scripts/dtc/dt_to_config -c .build-arm/.config --config-format arch/arm/boot/dts/highbank.dts

Above command works for me.

My bad, cleaned my local repo. Now, I can see this error. Will get back!

Quoted 7 lines
Quoted 7 lines
Quoted 3 lines

Just to confirm, you are in the root directory of the kernel source tree and your .config is in the same directory (since you specified "./.config").

I'm in the root, but .config is not.

Rob

--
To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html

A message that is not in the archive (sent off-list or not yet received): CA+rpMbLeYdrC3RVBN2Yku+uAAwM23ABct+rH5_eZ3QonxjuFfw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org

#12 lore raw
Quoted 28 lines · Gaurav Minocha
Quoted 26 lines · Gaurav Minocha
Quoted 25 lines · Rob Herring
Quoted 24 lines · Frank Rowand
Quoted 5 lines · Rob Herring
Quoted 4 lines · Frank Rowand

From: Frank Rowand <[email protected]>

Do not require dtx_diff to be in $PATH.

Quoted 7 lines
Quoted 2 lines

dt_to_config already needs to be run from the root directory of a kernel tree so use scripts/dtc/dtx_diff instead of dtx_diff.

Okay, now I get a bit further. I get this message even if I set my .config file on the command line:

grep: ./.config: No such file or directory

All of the following work for me:

  scripts/dtc/dt_to_config --config .config arch/arm/boot/dts/highbank.dts

  scripts/dtc/dt_to_config --config=.config arch/arm/boot/dts/highbank.dts

  scripts/dtc/dt_to_config --config ./.config arch/arm/boot/dts/highbank.dts

  scripts/dtc/dt_to_config --config=./.config arch/arm/boot/dts/highbank.dts
Quoted 9 lines
Quoted 7 lines
Quoted 5 lines
Quoted 1 line

What is the exact command line you are using?

scripts/dtc/dt_to_config -c .build-arm/.config --config-format arch/arm/boot/dts/highbank.dts

Above command works for me.

My bad, cleaned my local repo. Now, I can see this error. Will get back!

Frank,
It is coming from dtx_diff,
if grep -q "^CONFIG_DTC=y" ${__KBUILD_OUTPUT}/.config ; then

you may have to add a check on .config file here.
if [ -f "${__KBUILD_OUTPUT}/.config" ] && grep -q "^CONFIG_DTC=y" ${__KBUILD_OUTPUT}/.config; then

Quoted 7 lines
Quoted 7 lines
Quoted 7 lines
Quoted 3 lines

Just to confirm, you are in the root directory of the kernel source tree and your .config is in the same directory (since you specified "./.config").

I'm in the root, but .config is not.

Rob

Please let me know if I'm missing something.

--
Gaurav Minocha
--
To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html