Hello community, here is the log from the commit of package cvise for openSUSE:Factory checked in at 2020-05-01 11:15:02 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/cvise (Old) and /work/SRC/openSUSE:Factory/.cvise.new.2738 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "cvise" Fri May 1 11:15:02 2020 rev:4 rq:799231 version:1.1.0+git.20200430.e8d954e Changes: -------- --- /work/SRC/openSUSE:Factory/cvise/cvise.changes 2020-04-29 20:54:51.481338125 +0200 +++ /work/SRC/openSUSE:Factory/.cvise.new.2738/cvise.changes 2020-05-01 11:15:14.576094027 +0200 @@ -1,0 +2,16 @@ +Thu Apr 30 12:53:41 UTC 2020 - mli...@suse.cz + +- Update to version 1.1.0+git.20200430.e8d954e: + * Bump to version 1.1.0. + * Remove unused YYTEXT_POINTER. + * README: remove a section about temporary directories. + * Use console for markdown parts. + * Add usage example (#18). + * Docker: Do not depend on delta. + * Allow skipping of passes that miss a prerequisite (#17). + * Refactor checking of external programs. + * Fix and enable 2 rename-fun tests. + * Remove 2 lit files. + * Use -W* only for GNU and Clang compilers. + +------------------------------------------------------------------- Old: ---- cvise-1.0.0+git.20200429.99a7004.tar.xz New: ---- cvise-1.1.0+git.20200430.e8d954e.tar.xz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ cvise.spec ++++++ --- /var/tmp/diff_new_pack.mjDcpf/_old 2020-05-01 11:15:15.960097037 +0200 +++ /var/tmp/diff_new_pack.mjDcpf/_new 2020-05-01 11:15:15.964097045 +0200 @@ -17,7 +17,7 @@ Name: cvise -Version: 1.0.0+git.20200429.99a7004 +Version: 1.1.0+git.20200430.e8d954e Release: 0 Summary: Super-parallel Python port of the C-Reduce License: BSD-3-Clause ++++++ _service ++++++ --- /var/tmp/diff_new_pack.mjDcpf/_old 2020-05-01 11:15:16.008097141 +0200 +++ /var/tmp/diff_new_pack.mjDcpf/_new 2020-05-01 11:15:16.012097150 +0200 @@ -4,7 +4,7 @@ <param name="scm">git</param> <param name="changesgenerate">enable</param> <param name="filename">cvise</param> - <param name="versionformat">1.0.0+git.%cd.%h</param> + <param name="versionformat">1.1.0+git.%cd.%h</param> </service> <service mode="disabled" name="recompress"> <param name="file">*.tar</param> ++++++ cvise-1.0.0+git.20200429.99a7004.tar.xz -> cvise-1.1.0+git.20200430.e8d954e.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cvise-1.0.0+git.20200429.99a7004/CMakeLists.txt new/cvise-1.1.0+git.20200430.e8d954e/CMakeLists.txt --- old/cvise-1.0.0+git.20200429.99a7004/CMakeLists.txt 2020-04-29 16:13:35.000000000 +0200 +++ new/cvise-1.1.0+git.20200430.e8d954e/CMakeLists.txt 2020-04-30 14:43:05.000000000 +0200 @@ -113,14 +113,11 @@ set(cvise_PACKAGE "cvise") set(cvise_PACKAGE_BUGREPORT "https://github.com/marxin/cvise/issues") set(cvise_PACKAGE_NAME "cvise") -set(cvise_PACKAGE_STRING "cvise 1.0.0") +set(cvise_PACKAGE_STRING "cvise 1.1.0") set(cvise_PACKAGE_TARNAME "cvise") set(cvise_PACKAGE_URL "https://github.com/marxin/cvise/") -set(cvise_PACKAGE_VERSION "1.0.0") -set(cvise_VERSION "1.0.0") - -# FIXME: Should be determined automatically. -set(YYTEXT_POINTER 1) +set(cvise_PACKAGE_VERSION "1.1.0") +set(cvise_VERSION "1.1.0") configure_file("cmake_config.h.in" "${PROJECT_BINARY_DIR}/config.h") add_definitions("-DHAVE_CONFIG_H") @@ -146,10 +143,10 @@ endif() set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -O3") set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELEASE} -O3") -endif() -set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -Werror") -set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -Werror") + set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -Werror") + set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -Werror") +endif() ############################################################################### diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cvise-1.0.0+git.20200429.99a7004/Docker/Dockerfile-opensusetw-llvm10 new/cvise-1.1.0+git.20200430.e8d954e/Docker/Dockerfile-opensusetw-llvm10 --- old/cvise-1.0.0+git.20200429.99a7004/Docker/Dockerfile-opensusetw-llvm10 2020-04-29 16:13:35.000000000 +0200 +++ new/cvise-1.1.0+git.20200430.e8d954e/Docker/Dockerfile-opensusetw-llvm10 2020-04-30 14:43:05.000000000 +0200 @@ -1,7 +1,7 @@ FROM opensuse/tumbleweed RUN zypper -n install \ - binutils clang10-devel cmake flex gcc-c++ llvm10-devel python3-Pebble python3-pytest unifdef delta + binutils clang10-devel cmake flex gcc-c++ llvm10-devel python3-Pebble python3-pytest unifdef ENV LSAN_OPTIONS="detect_leaks=0" WORKDIR /usr/src/cvise diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cvise-1.0.0+git.20200429.99a7004/Docker/Dockerfile-opensusetw-llvm9 new/cvise-1.1.0+git.20200430.e8d954e/Docker/Dockerfile-opensusetw-llvm9 --- old/cvise-1.0.0+git.20200429.99a7004/Docker/Dockerfile-opensusetw-llvm9 2020-04-29 16:13:35.000000000 +0200 +++ new/cvise-1.1.0+git.20200430.e8d954e/Docker/Dockerfile-opensusetw-llvm9 2020-04-30 14:43:05.000000000 +0200 @@ -1,7 +1,7 @@ FROM opensuse/tumbleweed RUN zypper -n install \ - binutils clang9-devel cmake flex gcc-c++ llvm9-devel python3-Pebble python3-pytest unifdef delta + binutils clang9-devel cmake flex gcc-c++ llvm9-devel python3-Pebble python3-pytest unifdef ENV LSAN_OPTIONS="detect_leaks=0" WORKDIR /usr/src/cvise diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cvise-1.0.0+git.20200429.99a7004/README.md new/cvise-1.1.0+git.20200430.e8d954e/README.md --- old/cvise-1.0.0+git.20200429.99a7004/README.md 2020-04-29 16:13:35.000000000 +0200 +++ new/cvise-1.1.0+git.20200430.e8d954e/README.md 2020-04-30 14:43:05.000000000 +0200 @@ -24,27 +24,78 @@ See [INSTALL.md](INSTALL.md). +## Usage example + +The C-Vise can be used for a reduction of a compiler crash. In this case, +let's consider an existing [PR94534](https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94534): + +Original test-case (`pr94534.C` file): +```c++ +template<typename T> +class Demo +{ + struct + { + Demo* p; + } payload{this}; + friend decltype(payload); +}; + +int main() +{ + Demo<int> d; +} +``` + +The program crashes in GCC, but is accepted with Clang: +```console +$ g++ pr94534.C -c +pr94534.C: In instantiation of ‘class Demo<int>’: +pr94534.C:13:13: required from here +pr94534.C:7:5: internal compiler error: Segmentation fault + 7 | } payload{this}; + | ^~~~~~~ +0x10a1d8f crash_signal + /home/marxin/Programming/gcc/gcc/toplev.c:328 +0x7ffff78fef1f ??? + /usr/src/debug/glibc-2.31-4.1.x86_64/signal/../sysdeps/unix/sysv/linux/x86_64/sigaction.c:0 +0xae31a8 instantiate_class_template_1 + /home/marxin/Programming/gcc/gcc/cp/pt.c:11973 +... +$ clang++ pr94534.C -c +``` + +So let's build a reduction script so that it will grep for `instantiate_class_template_1` +on the standard error output and that it compiles with Clang: + +`reduce-ice.sh`: +```shell +#!/bin/sh +g++ pr94534.C -c 2>&1 | grep 'instantiate_class_template_1' && clang++ -c pr94534.C +``` + +The reduction can be then run with: +```console +$ cvise ./reduce-ice.sh pr94534.C +INFO ===< 30356 >=== +INFO running 16 interestingness tests in parallel +INFO INITIAL PASSES +INFO ===< IncludesPass >=== +... +template <typename> class a { + int b; + friend decltype(b); +}; +void c() { a<int> d; } +``` + ## Notes -1. When set to use more than one core, C-Vise can cause space in -`/tmp` to be leaked. This happens because sometimes C-Vise will kill -a compiler invocation when a result that is computed in parallel makes -it clear that that compiler invocation is no longer useful. If the -compiler leaves files in `/tmp` when it is killed, C-Vise has no way -to discover and remove the files. You will need to do this manually -from time to time if temporary file space is limited. The leakage is -typically pretty slow. If you need to avoid this problem altogether, -you can run C-Vise on a single core (using `--n 1`) in which case -C-Vise will never kill a running compiler instance. Alternatively, a -command line option such as `-pipe` (supported by GCC) may suppress -the creation of temporary files altogether. Another possibility is to -set the `TMPDIR` environment variable to something like -`/tmp/cvise-stuff` before invoking C-Vise -- assuming that the -tools you are invoking respect this variable. +1. C-Vise creates temporary directories in `$TMPDIR` and so usage +of a `tmpfs` directory is recommended. -2. Each invocation of the interestingness test is performed in a fresh +1. Each invocation of the interestingness test is performed in a fresh temporary directory containing a copy of the file that is being reduced. If your interestingness test requires access to other files, you should either copy them into the current working directory or else refer to them using an absolute path. - diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cvise-1.0.0+git.20200429.99a7004/clang_delta/tests/lit.cfg new/cvise-1.1.0+git.20200430.e8d954e/clang_delta/tests/lit.cfg --- old/cvise-1.0.0+git.20200429.99a7004/clang_delta/tests/lit.cfg 2020-04-29 16:13:35.000000000 +0200 +++ new/cvise-1.1.0+git.20200430.e8d954e/clang_delta/tests/lit.cfg 1970-01-01 01:00:00.000000000 +0100 @@ -1,27 +0,0 @@ -## -*- mode: Python -*- -## -## Copyright (c) 2018 The University of Utah -## All rights reserved. -## -## This file is distributed under the University of Illinois Open Source -## License. See the file COPYING for details. - -############################################################################### - -import lit.formats -import os -import sys - -config.name = 'clang_delta' -config.suffixes = ['.c', '.cc', '.cpp'] -config.test_exec_root = config.builddir + '/tests' -config.test_format = lit.formats.ShTest() -config.test_source_root = os.path.dirname(__file__) - -config.substitutions.append((r"\bFileCheck\b", config.llvm_bindir + '/FileCheck')) -config.substitutions.append(("%remove_lit_checks", config.test_exec_root + '/remove_lit_checks')) -config.substitutions.append(("%clang_delta", config.builddir + '/clang_delta')) - -############################################################################### - -## End of file. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cvise-1.0.0+git.20200429.99a7004/clang_delta/tests/lit.site.cfg.in new/cvise-1.1.0+git.20200430.e8d954e/clang_delta/tests/lit.site.cfg.in --- old/cvise-1.0.0+git.20200429.99a7004/clang_delta/tests/lit.site.cfg.in 2020-04-29 16:13:35.000000000 +0200 +++ new/cvise-1.1.0+git.20200430.e8d954e/clang_delta/tests/lit.site.cfg.in 1970-01-01 01:00:00.000000000 +0100 @@ -1,18 +0,0 @@ -## -*- mode: Python -*- -## -## Copyright (c) 2018 The University of Utah -## All rights reserved. -## -## This file is distributed under the University of Illinois Open Source -## License. See the file COPYING for details. - -############################################################################### - -config.builddir = "@abs_builddir@" -config.llvm_bindir = "@LLVM_BINDIR@" - -lit_config.load_config(config, "@clang_delta_srcdir@/tests/lit.cfg") - -############################################################################### - -## End of file. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cvise-1.0.0+git.20200429.99a7004/clang_delta/tests/rename-fun/multi.c new/cvise-1.1.0+git.20200430.e8d954e/clang_delta/tests/rename-fun/multi.c --- old/cvise-1.0.0+git.20200429.99a7004/clang_delta/tests/rename-fun/multi.c 2020-04-29 16:13:35.000000000 +0200 +++ new/cvise-1.1.0+git.20200430.e8d954e/clang_delta/tests/rename-fun/multi.c 2020-04-30 14:43:05.000000000 +0200 @@ -12,7 +12,7 @@ return 2; } -const char *baz {} +const char *baz() { return "baz"; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cvise-1.0.0+git.20200429.99a7004/clang_delta/tests/rename-fun/multi.output new/cvise-1.1.0+git.20200430.e8d954e/clang_delta/tests/rename-fun/multi.output --- old/cvise-1.0.0+git.20200429.99a7004/clang_delta/tests/rename-fun/multi.output 2020-04-29 16:13:35.000000000 +0200 +++ new/cvise-1.1.0+git.20200430.e8d954e/clang_delta/tests/rename-fun/multi.output 2020-04-30 14:43:05.000000000 +0200 @@ -1,11 +1,18 @@ -void foo(); +void fn1(); -int bar() +void fn2() { +} + +void fn3(); + +int fn4() +{ + fn2 (); return 2; } -const char *baz {} +const char *fn5() { return "baz"; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cvise-1.0.0+git.20200429.99a7004/clang_delta/tests/test_clang_delta.py new/cvise-1.1.0+git.20200430.e8d954e/clang_delta/tests/test_clang_delta.py --- old/cvise-1.0.0+git.20200429.99a7004/clang_delta/tests/test_clang_delta.py 2020-04-29 16:13:35.000000000 +0200 +++ new/cvise-1.1.0+git.20200430.e8d954e/clang_delta/tests/test_clang_delta.py 2020-04-30 14:43:05.000000000 +0200 @@ -287,14 +287,12 @@ def test_rename_fun_templ(self): self.check_clang_delta('rename-fun/func_templ.cc', '--transformation=rename-fun --counter=1') - @unittest.skip(reason='Missing rename for last function') def test_rename_fun_multi(self): self.check_clang_delta('rename-fun/multi.c', '--transformation=rename-fun --counter=1') def test_rename_fun_overloaded(self): self.check_clang_delta('rename-fun/overloaded.cc', '--transformation=rename-fun --counter=1') - @unittest.skip(reason='Missing rename for last function') def test_rename_fun_test1(self): self.check_clang_delta('rename-fun/test1.c', '--transformation=rename-fun --counter=1') diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cvise-1.0.0+git.20200429.99a7004/clex/CMakeLists.txt new/cvise-1.1.0+git.20200430.e8d954e/clex/CMakeLists.txt --- old/cvise-1.0.0+git.20200429.99a7004/clex/CMakeLists.txt 2020-04-29 16:13:35.000000000 +0200 +++ new/cvise-1.1.0+git.20200430.e8d954e/clex/CMakeLists.txt 2020-04-30 14:43:05.000000000 +0200 @@ -49,8 +49,11 @@ driver.c ) +if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU" + OR CMAKE_CXX_COMPILER_ID STREQUAL "Clang") set_source_files_properties(clex.c PROPERTIES COMPILE_FLAGS -Wno-unused-function) set_source_files_properties(strlex.c PROPERTIES COMPILE_FLAGS -Wno-unused-function) +endif() ############################################################################### diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cvise-1.0.0+git.20200429.99a7004/cvise/cvise.py new/cvise-1.1.0+git.20200430.e8d954e/cvise/cvise.py --- old/cvise-1.0.0+git.20200429.99a7004/cvise/cvise.py 2020-04-29 16:13:35.000000000 +0200 +++ new/cvise-1.1.0+git.20200430.e8d954e/cvise/cvise.py 2020-04-30 14:43:05.000000000 +0200 @@ -134,27 +134,28 @@ @staticmethod def _check_prerequisites(pass_group): passes = set() - missing = set() for category in pass_group: for p in pass_group[category]: if not p.check_prerequisites(): logging.error("Prereqs not found for pass {}".format(p)) - missing.add(str(p)) - - if missing: - raise PrerequisitesNotFoundError(missing) def _run_additional_passes(self, passes): for p in passes: - self.test_manager.run_pass(p) + if not p.check_prerequisites(): + logging.error("Skipping {}".format(p)) + else: + self.test_manager.run_pass(p) def _run_main_passes(self, passes): while True: total_file_size = self.test_manager.total_file_size for p in passes: - self.test_manager.run_pass(p) + if not p.check_prerequisites(): + logging.error("Skipping pass {}".format(p)) + else: + self.test_manager.run_pass(p) logging.info("Termination check: size was {}; now {}".format(total_file_size, self.test_manager.total_file_size)) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cvise-1.0.0+git.20200429.99a7004/cvise/passes/abstract.py new/cvise-1.1.0+git.20200430.e8d954e/cvise/passes/abstract.py --- old/cvise-1.0.0+git.20200429.99a7004/cvise/passes/abstract.py 2020-04-29 16:13:35.000000000 +0200 +++ new/cvise-1.1.0+git.20200430.e8d954e/cvise/passes/abstract.py 2020-04-30 14:43:05.000000000 +0200 @@ -2,6 +2,7 @@ import enum import logging import copy +import shutil import subprocess from enum import Enum, auto @@ -75,6 +76,12 @@ else: return "{}".format(type(self).__name__) + def check_external_program(self, name): + program = self.external_programs[name] + if not program: + return False + return shutil.which(program) is not None + def check_prerequisites(self): raise NotImplementedError("Class {} has not implemented 'check_prerequisites'!".format(type(self).__name__)) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cvise-1.0.0+git.20200429.99a7004/cvise/passes/clang.py new/cvise-1.1.0+git.20200430.e8d954e/cvise/passes/clang.py --- old/cvise-1.0.0+git.20200429.99a7004/cvise/passes/clang.py 2020-04-29 16:13:35.000000000 +0200 +++ new/cvise-1.1.0+git.20200430.e8d954e/cvise/passes/clang.py 2020-04-30 14:43:05.000000000 +0200 @@ -8,7 +8,7 @@ class ClangPass(AbstractPass): def check_prerequisites(self): - return shutil.which(self.external_programs["clang_delta"]) is not None + return self.check_external_program("clang_delta") def new(self, test_case): return 1 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cvise-1.0.0+git.20200429.99a7004/cvise/passes/clangbinarysearch.py new/cvise-1.1.0+git.20200430.e8d954e/cvise/passes/clangbinarysearch.py --- old/cvise-1.0.0+git.20200429.99a7004/cvise/passes/clangbinarysearch.py 2020-04-29 16:13:35.000000000 +0200 +++ new/cvise-1.1.0+git.20200430.e8d954e/cvise/passes/clangbinarysearch.py 2020-04-30 14:43:05.000000000 +0200 @@ -10,7 +10,7 @@ class ClangBinarySearchPass(AbstractPass): def check_prerequisites(self): - return shutil.which(self.external_programs["clang_delta"]) is not None + return self.check_external_program("clang_delta") def new(self, test_case): return BinaryState.create(self.__count_instances(test_case)) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cvise-1.0.0+git.20200429.99a7004/cvise/passes/clex.py new/cvise-1.1.0+git.20200430.e8d954e/cvise/passes/clex.py --- old/cvise-1.0.0+git.20200429.99a7004/cvise/passes/clex.py 2020-04-29 16:13:35.000000000 +0200 +++ new/cvise-1.1.0+git.20200430.e8d954e/cvise/passes/clex.py 2020-04-30 14:43:05.000000000 +0200 @@ -7,7 +7,7 @@ class ClexPass(AbstractPass): def check_prerequisites(self): - return shutil.which(self.external_programs["clex"]) is not None + return self.check_external_program("clex") def new(self, test_case): return 0 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cvise-1.0.0+git.20200429.99a7004/cvise/passes/ifs.py new/cvise-1.1.0+git.20200430.e8d954e/cvise/passes/ifs.py --- old/cvise-1.0.0+git.20200429.99a7004/cvise/passes/ifs.py 2020-04-29 16:13:35.000000000 +0200 +++ new/cvise-1.1.0+git.20200430.e8d954e/cvise/passes/ifs.py 2020-04-30 14:43:05.000000000 +0200 @@ -11,7 +11,7 @@ line_regex = re.compile('^\\s*#\\s*if') def check_prerequisites(self): - return shutil.which(self.external_programs["unifdef"]) is not None + return self.check_external_program("unifdef") @staticmethod def __macro_continues(line): diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cvise-1.0.0+git.20200429.99a7004/cvise/passes/indent.py new/cvise-1.1.0+git.20200430.e8d954e/cvise/passes/indent.py --- old/cvise-1.0.0+git.20200429.99a7004/cvise/passes/indent.py 2020-04-29 16:13:35.000000000 +0200 +++ new/cvise-1.1.0+git.20200430.e8d954e/cvise/passes/indent.py 2020-04-30 14:43:05.000000000 +0200 @@ -6,7 +6,7 @@ class IndentPass(AbstractPass): def check_prerequisites(self): - return shutil.which(self.external_programs["clang-format"]) is not None + return self.check_external_program("clang-format") def new(self, test_case): return 0 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cvise-1.0.0+git.20200429.99a7004/cvise/passes/lines.py new/cvise-1.1.0+git.20200430.e8d954e/cvise/passes/lines.py --- old/cvise-1.0.0+git.20200429.99a7004/cvise/passes/lines.py 2020-04-29 16:13:35.000000000 +0200 +++ new/cvise-1.1.0+git.20200430.e8d954e/cvise/passes/lines.py 2020-04-30 14:43:05.000000000 +0200 @@ -8,7 +8,7 @@ class LinesPass(AbstractPass): def check_prerequisites(self): - return shutil.which(self.external_programs["topformflat"]) is not None + return self.check_external_program("topformflat") def __format(self, test_case): tmp = os.path.dirname(test_case) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cvise-1.0.0+git.20200429.99a7004/cvise/passes/unifdef.py new/cvise-1.1.0+git.20200430.e8d954e/cvise/passes/unifdef.py --- old/cvise-1.0.0+git.20200429.99a7004/cvise/passes/unifdef.py 2020-04-29 16:13:35.000000000 +0200 +++ new/cvise-1.1.0+git.20200430.e8d954e/cvise/passes/unifdef.py 2020-04-30 14:43:05.000000000 +0200 @@ -8,7 +8,7 @@ class UnIfDefPass(AbstractPass): def check_prerequisites(self): - return shutil.which(self.external_programs["unifdef"]) is not None + return self.check_external_program("unifdef") def new(self, test_case): return 0