[PATCH] D77880: get scan-view executable from environment

2020-04-10 Thread Oliver Tušla via Phabricator via cfe-commits
asmar created this revision.
asmar added a reviewer: NoQ.
Herald added subscribers: cfe-commits, Charusso.
Herald added a project: clang.

Fixes "Use of uninitialized value $ScanView in exec" error on systems with 
scan-view executable not located in the expected place.

Currently when scan-build is installed in Debian-like (Ubuntu 18.04 my case) 
system the scan-view executable is not correctly identified when installed by 
apt from clang-tools package.

The buggy code was first introduced here 10 ago:

https://bugs.llvm.org/show_bug.cgi?id=3725

The issue was recently reported on Debian Bugs:

https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=941614

The problem lies in current master scan-build:974:

https://github.com/llvm/llvm-project/blob/350522670232c74587138dc83161de514567f411/clang/tools/scan-build/bin/scan-build#L974

Searching for "$RealBin/../../scan-view/bin/scan-view" may not work in such 
cases because directories are versioned e.g. 
"$RealBin/../../scan-view-6.0/bin/scan-view".


Repository:
  rG LLVM Github Monorepo

https://reviews.llvm.org/D77880

Files:
  clang/tools/scan-build/bin/scan-build


Index: clang/tools/scan-build/bin/scan-build
===
--- clang/tools/scan-build/bin/scan-build
+++ clang/tools/scan-build/bin/scan-build
@@ -971,6 +971,7 @@
 my $ScanView = Cwd::realpath("$RealBin/scan-view");
 if (! -x $ScanView) { $ScanView = "scan-view"; }
 if (! -x $ScanView) { $ScanView = 
Cwd::realpath("$RealBin/../../scan-view/bin/scan-view"); }
+if (! -x $ScanView) { $ScanView = `which scan-view`; chomp $ScanView; }
 exec $ScanView, "$Options{OutputDir}";
   }
 


Index: clang/tools/scan-build/bin/scan-build
===
--- clang/tools/scan-build/bin/scan-build
+++ clang/tools/scan-build/bin/scan-build
@@ -971,6 +971,7 @@
 my $ScanView = Cwd::realpath("$RealBin/scan-view");
 if (! -x $ScanView) { $ScanView = "scan-view"; }
 if (! -x $ScanView) { $ScanView = Cwd::realpath("$RealBin/../../scan-view/bin/scan-view"); }
+if (! -x $ScanView) { $ScanView = `which scan-view`; chomp $ScanView; }
 exec $ScanView, "$Options{OutputDir}";
   }
 
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[PATCH] D77880: get scan-view executable from environment

2020-04-16 Thread Oliver Tušla via Phabricator via cfe-commits
asmar added a comment.

Rather than globbing I would check whether there's a `scan-view` directory with 
the same version suffix as in the `scan-build`'s one. Getting "random" version 
from other directories doesn't seem transparent to me. When this fails, `which` 
for the system version is expected behaviour I suppose.

I believe that Perl error is sufficient. It emits the correct error code, helps 
to spot the root of the error right away and custom error will not have any 
other benefits.

I am not sure about reporting `$PATH` though.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D77880/new/

https://reviews.llvm.org/D77880



___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits