diff --git a/devel/ikos/Makefile b/devel/ikos/Makefile index 1dfea014dc2f..fa5c1c3ae66d 100644 --- a/devel/ikos/Makefile +++ b/devel/ikos/Makefile @@ -1,48 +1,60 @@ PORTNAME= ikos DISTVERSIONPREFIX= v -DISTVERSION= 3.2 -PORTREVISION= 5 +DISTVERSION= 3.5 CATEGORIES= devel MAINTAINER= yuri@FreeBSD.org COMMENT= Static analyzer for C/C++ based on theory of abstract interpretation WWW= https://github.com/NASA-SW-VnV/ikos LICENSE= MIT LICENSE_FILE= ${WRKSRC}/LICENSE.pdf BROKEN_armv7= configure fails: error when running a program linked with GMP: Segmentation fault BUILD_DEPENDS= llvm${LLVM_VERSION}>0:devel/llvm${LLVM_VERSION} LIB_DEPENDS= libapron.so:math/apron \ libboost_system.so:devel/boost-libs \ libmpfr.so:math/mpfr \ libgmp.so:math/gmp \ libppl.so:devel/ppl \ libtbb.so:devel/onetbb RUN_DEPENDS= llvm${LLVM_VERSION}>0:devel/llvm${LLVM_VERSION} USES= cmake ncurses python sqlite USE_GITHUB= yes GH_ACCOUNT= NASA-SW-VnV USE_LDCONFIG= yes LLVM_VERSION= 14 # only llvm-14 is currently supported CXXFLAGS+= -DNDEBUG # https://github.com/NASA-SW-VnV/ikos/issues/36, it also breaks with assert without NDEBUG CMAKE_ON= BUILD_SHARED_LIBS +CMAKE_OFF= INSTALL_PYTHON_VIRTUALENV CMAKE_ARGS= -DLLVM_CONFIG_EXECUTABLE:PATH=${LOCALBASE}/bin/llvm-config${LLVM_VERSION} \ - -DPYTHON_EXECUTABLE:STRING=${PYTHON_CMD} + -DPYTHON_EXECUTABLE:STRING=${PYTHON_CMD} \ + -DPYTHON_VENV_EXECUTABLE:STRING=${PYTHON_CMD} PLIST_SUB= PORTVERSION=${PORTVERSION} post-configure: # workaround for the problem that --color-diagnostics gets into the linker command lines @${REINPLACE_CMD} 's|-Wl,--color-diagnostics| |' ${BUILD_WRKSRC}/build.ninja +post-install: + # install the local python module 'ikos' + @${MKDIR} ${STAGEDIR}${DATADIR}/python + cd ${BUILD_WRKSRC}/analyzer/python && \ + ${COPYTREE_SHARE} ikos ${STAGEDIR}${DATADIR}/python + ${CP} ${WRKSRC}/analyzer/python/ikos/*.py ${STAGEDIR}${DATADIR}/python/ikos + cd ${WRKSRC}/analyzer/python/ikos && \ + ${COPYTREE_SHARE} view ${STAGEDIR}${DATADIR}/python/ikos + # expand the token + ${REINPLACE_CMD} -i '' -e 's|%%PREFIX%%|${PREFIX}|' ${STAGEDIR}${PREFIX}/bin/ikos + # use clang corresponding to the used llvm version CPP= clang-cpp${LLVM_VERSION} CC= clang${LLVM_VERSION} CXX= clang++${LLVM_VERSION} .include diff --git a/devel/ikos/distinfo b/devel/ikos/distinfo index 38a6b6e44ddd..5e5d05f8f4f8 100644 --- a/devel/ikos/distinfo +++ b/devel/ikos/distinfo @@ -1,3 +1,3 @@ -TIMESTAMP = 1703825428 -SHA256 (NASA-SW-VnV-ikos-v3.2_GH0.tar.gz) = 11ab520043523a048f8756d68bd3f6a761870d4ec1a9f240eda8f3b1a11f7aa1 -SIZE (NASA-SW-VnV-ikos-v3.2_GH0.tar.gz) = 1381841 +TIMESTAMP = 1736373858 +SHA256 (NASA-SW-VnV-ikos-v3.5_GH0.tar.gz) = 375b575b715901f47d7884e8ac33e5c4410974011b603f825c5e6eda7d1c74b8 +SIZE (NASA-SW-VnV-ikos-v3.5_GH0.tar.gz) = 1382417 diff --git a/devel/ikos/files/patch-analyzer_python_ikos_analyzer.py b/devel/ikos/files/patch-analyzer_python_ikos_analyzer.py index 6c98135fc18c..a495f7c9bde5 100644 --- a/devel/ikos/files/patch-analyzer_python_ikos_analyzer.py +++ b/devel/ikos/files/patch-analyzer_python_ikos_analyzer.py @@ -1,17 +1,17 @@ ---- analyzer/python/ikos/analyzer.py.orig 2018-12-14 07:13:50 UTC +--- analyzer/python/ikos/analyzer.py.orig 2024-12-31 23:34:34 UTC +++ analyzer/python/ikos/analyzer.py -@@ -554,10 +554,10 @@ def clang(bc_path, cpp_path, colors=True - # For #include - cmd += ['-isystem', settings.INCLUDE_DIR] +@@ -703,10 +703,10 @@ def clang( + if machine_flags: + cmd += ['-m%s' % m for m in machine_flags] - if colors: - cmd.append('-fcolor-diagnostics') - else: - cmd.append('-fno-color-diagnostics') + #if colors: + # cmd.append('-fcolor-diagnostics') + #else: + # cmd.append('-fno-color-diagnostics') - if cpp_path.endswith('.cpp'): - cmd.append('-std=c++14') # available because clang >= 4.0 + if path_ext(cpp_path) in cpp_extensions: + cmd.append('-std=c++17') # available because clang >= 7.0 diff --git a/devel/ikos/files/patch-analyzer_script_ikos.py.in b/devel/ikos/files/patch-analyzer_script_ikos.py.in new file mode 100644 index 000000000000..0745d41049e7 --- /dev/null +++ b/devel/ikos/files/patch-analyzer_script_ikos.py.in @@ -0,0 +1,12 @@ +--- analyzer/script/ikos.py.in.orig 2025-01-09 06:36:15 UTC ++++ analyzer/script/ikos.py.in +@@ -43,6 +43,9 @@ import sys + import os.path + import sys + ++# add local python module to sys.path ++sys.path.append('%%PREFIX%%/share/ikos/python') ++ + if __name__ == '__main__': + try: + import ikos.analyzer diff --git a/devel/ikos/files/patch-ar_src_format_text.cpp b/devel/ikos/files/patch-ar_src_format_text.cpp new file mode 100644 index 000000000000..4473b6a2243a --- /dev/null +++ b/devel/ikos/files/patch-ar_src_format_text.cpp @@ -0,0 +1,13 @@ +- workaround the potential problem in boost: /usr/local/include/boost/move/adl_move_swap.hpp:190:15: error: no member named 'swap' in namespace 'std' + +--- ar/src/format/text.cpp.orig 2025-01-08 22:27:38 UTC ++++ ar/src/format/text.cpp +@@ -41,6 +41,8 @@ + * + ******************************************************************************/ + ++#include ++ + #include + + #include diff --git a/devel/ikos/pkg-plist b/devel/ikos/pkg-plist index 735129ebe113..1d163f3af5d9 100644 --- a/devel/ikos/pkg-plist +++ b/devel/ikos/pkg-plist @@ -1,175 +1,199 @@ bin/ikos bin/ikos-analyzer bin/ikos-config bin/ikos-import bin/ikos-pp bin/ikos-report bin/ikos-scan bin/ikos-scan-c++ bin/ikos-scan-cc bin/ikos-scan-extract bin/ikos-view include/ikos/analyzer/intrinsic.h include/ikos/ar/format/dot.hpp include/ikos/ar/format/formatter.hpp include/ikos/ar/format/namer.hpp include/ikos/ar/format/text.hpp include/ikos/ar/pass/add_loop_counters.hpp include/ikos/ar/pass/add_partitioning_variables.hpp include/ikos/ar/pass/name_values.hpp include/ikos/ar/pass/pass.hpp include/ikos/ar/pass/simplify_cfg.hpp include/ikos/ar/pass/simplify_upcast_comparison.hpp include/ikos/ar/semantic.hpp include/ikos/ar/semantic/bundle.hpp include/ikos/ar/semantic/code.hpp include/ikos/ar/semantic/context.hpp include/ikos/ar/semantic/data_layout.hpp include/ikos/ar/semantic/function.hpp include/ikos/ar/semantic/intrinsic.hpp include/ikos/ar/semantic/statement.hpp include/ikos/ar/semantic/statement_visitor.hpp include/ikos/ar/semantic/symbol_table.hpp include/ikos/ar/semantic/type.hpp include/ikos/ar/semantic/type_visitor.hpp include/ikos/ar/semantic/value.hpp include/ikos/ar/semantic/value_visitor.hpp include/ikos/ar/support/assert.hpp include/ikos/ar/support/cast.hpp include/ikos/ar/support/flags.hpp include/ikos/ar/support/iterator.hpp include/ikos/ar/support/number.hpp include/ikos/ar/support/string_ref.hpp include/ikos/ar/support/traceable.hpp include/ikos/ar/verify/frontend.hpp include/ikos/ar/verify/type.hpp include/ikos/core/adt/patricia_tree/map.hpp include/ikos/core/adt/patricia_tree/set.hpp include/ikos/core/adt/patricia_tree/utils.hpp include/ikos/core/adt/small_vector.hpp include/ikos/core/adt/string_ref.hpp include/ikos/core/domain/abstract_domain.hpp include/ikos/core/domain/discrete_domain.hpp include/ikos/core/domain/domain_product.hpp include/ikos/core/domain/exception/abstract_domain.hpp include/ikos/core/domain/exception/exception.hpp include/ikos/core/domain/lifetime/abstract_domain.hpp include/ikos/core/domain/lifetime/dummy.hpp include/ikos/core/domain/lifetime/separate_domain.hpp include/ikos/core/domain/machine_int/abstract_domain.hpp include/ikos/core/domain/machine_int/congruence.hpp include/ikos/core/domain/machine_int/dummy.hpp include/ikos/core/domain/machine_int/interval.hpp include/ikos/core/domain/machine_int/interval_congruence.hpp include/ikos/core/domain/machine_int/numeric_domain_adapter.hpp include/ikos/core/domain/machine_int/operator.hpp include/ikos/core/domain/machine_int/polymorphic_domain.hpp include/ikos/core/domain/machine_int/separate_domain.hpp include/ikos/core/domain/memory/abstract_domain.hpp include/ikos/core/domain/memory/dummy.hpp include/ikos/core/domain/memory/partitioning.hpp include/ikos/core/domain/memory/polymorphic_domain.hpp include/ikos/core/domain/memory/value.hpp include/ikos/core/domain/memory/value/cell_set.hpp include/ikos/core/domain/memory/value/mem_loc_to_cell_set.hpp include/ikos/core/domain/memory/value/mem_loc_to_pointer_set.hpp include/ikos/core/domain/nullity/abstract_domain.hpp include/ikos/core/domain/nullity/dummy.hpp include/ikos/core/domain/nullity/separate_domain.hpp include/ikos/core/domain/numeric/abstract_domain.hpp include/ikos/core/domain/numeric/apron.hpp include/ikos/core/domain/numeric/congruence.hpp include/ikos/core/domain/numeric/constant.hpp include/ikos/core/domain/numeric/dbm.hpp include/ikos/core/domain/numeric/domain_product.hpp include/ikos/core/domain/numeric/equality_congruence_solver.hpp include/ikos/core/domain/numeric/gauge.hpp include/ikos/core/domain/numeric/gauge_interval_congruence.hpp include/ikos/core/domain/numeric/interval.hpp include/ikos/core/domain/numeric/interval_congruence.hpp include/ikos/core/domain/numeric/linear_interval_solver.hpp include/ikos/core/domain/numeric/octagon.hpp include/ikos/core/domain/numeric/operator.hpp include/ikos/core/domain/numeric/separate_domain.hpp include/ikos/core/domain/numeric/union.hpp include/ikos/core/domain/numeric/var_packing_dbm.hpp include/ikos/core/domain/numeric/var_packing_dbm_congruence.hpp include/ikos/core/domain/numeric/var_packing_domain.hpp include/ikos/core/domain/pointer/operator.hpp include/ikos/core/domain/pointer/solver.hpp include/ikos/core/domain/scalar/abstract_domain.hpp include/ikos/core/domain/scalar/composite.hpp include/ikos/core/domain/scalar/dummy.hpp include/ikos/core/domain/scalar/machine_int.hpp include/ikos/core/domain/separate_domain.hpp include/ikos/core/domain/uninitialized/abstract_domain.hpp include/ikos/core/domain/uninitialized/dummy.hpp include/ikos/core/domain/uninitialized/separate_domain.hpp include/ikos/core/example/machine_int/variable_factory.hpp include/ikos/core/example/memory_factory.hpp include/ikos/core/example/muzq.hpp include/ikos/core/example/scalar/variable_factory.hpp include/ikos/core/example/variable_factory.hpp include/ikos/core/exception.hpp include/ikos/core/fixpoint/concurrent_fwd_fixpoint_iterator.hpp include/ikos/core/fixpoint/fixpoint_iterator.hpp include/ikos/core/fixpoint/fwd_fixpoint_iterator.hpp include/ikos/core/fixpoint/wpo.hpp include/ikos/core/fixpoint/wto.hpp include/ikos/core/linear_constraint.hpp include/ikos/core/linear_expression.hpp include/ikos/core/literal.hpp include/ikos/core/number.hpp include/ikos/core/number/bound.hpp include/ikos/core/number/compatibility.hpp include/ikos/core/number/dummy_number.hpp include/ikos/core/number/exception.hpp include/ikos/core/number/machine_int.hpp include/ikos/core/number/q_number.hpp include/ikos/core/number/signedness.hpp include/ikos/core/number/supported_integral.hpp include/ikos/core/number/z_number.hpp include/ikos/core/semantic/dumpable.hpp include/ikos/core/semantic/graph.hpp include/ikos/core/semantic/indexable.hpp include/ikos/core/semantic/machine_int/variable.hpp include/ikos/core/semantic/memory/value/cell_factory.hpp include/ikos/core/semantic/memory/value/cell_variable.hpp include/ikos/core/semantic/memory_location.hpp include/ikos/core/semantic/scalar/variable.hpp include/ikos/core/semantic/variable.hpp include/ikos/core/support/assert.hpp include/ikos/core/support/cast.hpp include/ikos/core/support/compiler.hpp include/ikos/core/support/mpl.hpp include/ikos/core/value/lifetime.hpp include/ikos/core/value/machine_int/congruence.hpp include/ikos/core/value/machine_int/constant.hpp include/ikos/core/value/machine_int/interval.hpp include/ikos/core/value/machine_int/interval_congruence.hpp include/ikos/core/value/nullity.hpp include/ikos/core/value/numeric/congruence.hpp include/ikos/core/value/numeric/constant.hpp include/ikos/core/value/numeric/gauge.hpp include/ikos/core/value/numeric/interval.hpp include/ikos/core/value/numeric/interval_congruence.hpp include/ikos/core/value/pointer/pointer.hpp include/ikos/core/value/pointer/pointer_set.hpp include/ikos/core/value/pointer/points_to_set.hpp include/ikos/core/value/uninitialized.hpp include/ikos/frontend/llvm/import.hpp include/ikos/frontend/llvm/import/exception.hpp include/ikos/frontend/llvm/import/importer.hpp include/ikos/frontend/llvm/import/source_location.hpp include/ikos/frontend/llvm/pass.hpp lib/libikos-ar.so lib/libikos-llvm-to-ar.so lib/libikos-pp.so +%%DATADIR%%/python/ikos/__init__.py +%%DATADIR%%/python/ikos/abs_int.py +%%DATADIR%%/python/ikos/analyzer.py +%%DATADIR%%/python/ikos/args.py +%%DATADIR%%/python/ikos/colors.py +%%DATADIR%%/python/ikos/enums.py +%%DATADIR%%/python/ikos/filetype.py +%%DATADIR%%/python/ikos/highlight.py +%%DATADIR%%/python/ikos/http.py +%%DATADIR%%/python/ikos/log.py +%%DATADIR%%/python/ikos/output_db.py +%%DATADIR%%/python/ikos/report.py +%%DATADIR%%/python/ikos/scan.py +%%DATADIR%%/python/ikos/settings/__init__.py +%%DATADIR%%/python/ikos/stats.py +%%DATADIR%%/python/ikos/view.py +%%DATADIR%%/python/ikos/view/static/css/ikos_theme.css +%%DATADIR%%/python/ikos/view/static/js/ikos_homepage.js +%%DATADIR%%/python/ikos/view/static/js/ikos_report.js +%%DATADIR%%/python/ikos/view/template/error.html +%%DATADIR%%/python/ikos/view/template/homepage.html +%%DATADIR%%/python/ikos/view/template/not_found.html +%%DATADIR%%/python/ikos/view/template/report.html +%%DATADIR%%/python/ikos/view/template/settings.html %%DATADIR%%/view/static/css/ikos_theme.css %%DATADIR%%/view/static/js/ikos_homepage.js %%DATADIR%%/view/static/js/ikos_report.js %%DATADIR%%/view/template/error.html %%DATADIR%%/view/template/homepage.html %%DATADIR%%/view/template/not_found.html %%DATADIR%%/view/template/report.html %%DATADIR%%/view/template/settings.html