Compare commits
10 Commits
9c4e0d685b
...
100aab2793
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
100aab2793 | ||
|
|
3034b71e96 | ||
|
|
b6719c5b57 | ||
|
|
35aa381710 | ||
|
|
30c584e070 | ||
|
|
91d9b5c2e6 | ||
|
|
2d7b3bb27d | ||
|
|
90e3afbd7b | ||
|
|
3a6995978f | ||
|
|
8a1687245f |
76
0001-change-external-project-to-local-package.patch
Normal file
76
0001-change-external-project-to-local-package.patch
Normal file
@ -0,0 +1,76 @@
|
||||
diff --git a/third_party/fmt/CMakeLists.txt b/third_party/fmt/CMakeLists.txt
|
||||
index cc6bae4..c26a7ec 100644
|
||||
--- a/third_party/fmt/CMakeLists.txt
|
||||
+++ b/third_party/fmt/CMakeLists.txt
|
||||
@@ -10,13 +10,9 @@ else ()
|
||||
include(ExternalProject)
|
||||
ExternalProject_Add(fmt_dependency
|
||||
URL
|
||||
- https://github.com/fmtlib/fmt/archive/9.0.0.tar.gz
|
||||
+ ${DEPEND_PATH}/fmt-9.0.0.tar.gz
|
||||
URL_HASH
|
||||
MD5=d56c8b0612b049bb1854f07c8b133f3c
|
||||
- DOWNLOAD_NO_PROGRESS
|
||||
- 1
|
||||
- UPDATE_COMMAND
|
||||
- ""
|
||||
LOG_CONFIGURE
|
||||
1
|
||||
LOG_BUILD
|
||||
diff --git a/third_party/googletest/CMakeLists.txt b/third_party/googletest/CMakeLists.txt
|
||||
index 42dbf27..322b37d 100644
|
||||
--- a/third_party/googletest/CMakeLists.txt
|
||||
+++ b/third_party/googletest/CMakeLists.txt
|
||||
@@ -12,13 +12,9 @@ else ()
|
||||
include(ExternalProject)
|
||||
ExternalProject_Add(googletest_dependency
|
||||
URL
|
||||
- https://github.com/google/googletest/archive/release-1.12.1.tar.gz
|
||||
+ ${DEPEND_PATH}/googletest-release-1.12.1.tar.gz
|
||||
URL_HASH
|
||||
MD5=e82199374acdfda3f425331028eb4e2a
|
||||
- DOWNLOAD_NO_PROGRESS
|
||||
- 1
|
||||
- UPDATE_COMMAND
|
||||
- ""
|
||||
LOG_CONFIGURE
|
||||
1
|
||||
LOG_BUILD
|
||||
diff --git a/third_party/nlohmann_json/CMakeLists.txt b/third_party/nlohmann_json/CMakeLists.txt
|
||||
index c4ec891..7e57f1d 100644
|
||||
--- a/third_party/nlohmann_json/CMakeLists.txt
|
||||
+++ b/third_party/nlohmann_json/CMakeLists.txt
|
||||
@@ -9,13 +9,9 @@ else ()
|
||||
include(ExternalProject)
|
||||
ExternalProject_Add(nlohmann_json_dependency
|
||||
URL
|
||||
- https://github.com/nlohmann/json/archive/v3.10.5.tar.gz
|
||||
+ ${DEPEND_PATH}/json-3.10.5.tar.gz
|
||||
URL_HASH
|
||||
MD5=5b946f7d892fa55eabec45e76a20286b
|
||||
- DOWNLOAD_NO_PROGRESS
|
||||
- 1
|
||||
- UPDATE_COMMAND
|
||||
- ""
|
||||
LOG_CONFIGURE
|
||||
1
|
||||
LOG_BUILD
|
||||
diff --git a/third_party/spdlog/CMakeLists.txt b/third_party/spdlog/CMakeLists.txt
|
||||
index 2d8a5da..cefba1d 100644
|
||||
--- a/third_party/spdlog/CMakeLists.txt
|
||||
+++ b/third_party/spdlog/CMakeLists.txt
|
||||
@@ -10,13 +10,9 @@ else ()
|
||||
include(ExternalProject)
|
||||
ExternalProject_Add(spdlog_dependency
|
||||
URL
|
||||
- https://github.com/gabime/spdlog/archive/v1.10.0.tar.gz
|
||||
+ ${DEPEND_PATH}/spdlog-1.10.0.tar.gz
|
||||
URL_HASH
|
||||
MD5=effea813cd81cfb5588806c5754e14f1
|
||||
- DOWNLOAD_NO_PROGRESS
|
||||
- 1
|
||||
- UPDATE_COMMAND
|
||||
- ""
|
||||
LOG_CONFIGURE
|
||||
1
|
||||
LOG_BUILD
|
||||
1138
0002-Rebuild-when-add-option-failed.patch
Normal file
1138
0002-Rebuild-when-add-option-failed.patch
Normal file
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,79 @@
|
||||
diff --git a/source/intercept/source/report/wrapper/Application.cc b/source/intercept/source/report/wrapper/Application.cc
|
||||
index 358d2dc..cec5dba 100644
|
||||
--- a/source/intercept/source/report/wrapper/Application.cc
|
||||
+++ b/source/intercept/source/report/wrapper/Application.cc
|
||||
@@ -167,6 +167,15 @@ namespace wr {
|
||||
return option_new;
|
||||
}
|
||||
|
||||
+ bool WrapperBuilder::enableWrapperBuilder()
|
||||
+ {
|
||||
+ bool emtpy_options = compile_flags_.size() == 0 && ld_flags_.size() == 0;
|
||||
+ // skip preprocess commands
|
||||
+ auto it = std::find(parameters_replace_.begin(), parameters_replace_.end(), "-E");
|
||||
+ bool preprocess = it != parameters_replace_.end();
|
||||
+ return !emtpy_options && !preprocess;
|
||||
+ }
|
||||
+
|
||||
Execution WrapperBuilder::get_new_execution(Execution& execution)
|
||||
{
|
||||
return Execution {
|
||||
@@ -253,17 +262,17 @@ namespace wr {
|
||||
rust::Result<wr::Execution> result_execution = supervisor_client.resolve(execution_);
|
||||
|
||||
wr::Execution execution = result_execution.unwrap();
|
||||
-
|
||||
- if (!lamd_is_compiler_call(execution.executable) && !lamd_is_linker_call(execution.executable)) {
|
||||
+ wr::WrapperBuilder wrBuilder = wr::WrapperBuilder(execution.executable, execution.environment)
|
||||
+ .add_arguments(execution.arguments.begin(), execution.arguments.end());
|
||||
+ if ((!lamd_is_compiler_call(execution.executable) && !lamd_is_linker_call(execution.executable))
|
||||
+ || !wrBuilder.enableWrapperBuilder()) {
|
||||
return result_execution
|
||||
.and_then<sys::Process>(lmd_builder)
|
||||
.and_then<sys::ExitStatus>(lmd_child_wait)
|
||||
.map<int>(lmd_status_ret);
|
||||
}
|
||||
|
||||
- auto new_execution = wr::WrapperBuilder(execution.executable, execution.environment)
|
||||
- .add_arguments(execution.arguments.begin(), execution.arguments.end())
|
||||
- .get_new_execution(execution);
|
||||
+ auto new_execution = wrBuilder.get_new_execution(execution);
|
||||
|
||||
auto build_spawn = result_execution.and_then<sys::Process>(lmd_wrapper_builder);
|
||||
|
||||
diff --git a/source/intercept/source/report/wrapper/Application.h b/source/intercept/source/report/wrapper/Application.h
|
||||
index 5113be3..41160c5 100644
|
||||
--- a/source/intercept/source/report/wrapper/Application.h
|
||||
+++ b/source/intercept/source/report/wrapper/Application.h
|
||||
@@ -79,6 +79,7 @@ namespace wr {
|
||||
std::list<std::string> split_optons(std::string& options);
|
||||
|
||||
Execution get_new_execution(Execution& execution);
|
||||
+ bool enableWrapperBuilder();
|
||||
public:
|
||||
NON_DEFAULT_CONSTRUCTABLE(WrapperBuilder)
|
||||
|
||||
diff --git a/test/cases/compilation/output/skip_preprocess_commands.sh b/test/cases/compilation/output/skip_preprocess_commands.sh
|
||||
new file mode 100644
|
||||
index 0000000..ea229b6
|
||||
--- /dev/null
|
||||
+++ b/test/cases/compilation/output/skip_preprocess_commands.sh
|
||||
@@ -0,0 +1,18 @@
|
||||
+#!/usr/bin/env sh
|
||||
+
|
||||
+# REQUIRES: preload, shell
|
||||
+# RUN: %{shell} %s %t
|
||||
+# RUN: cd %T; /usr/bin/env - %{bear} --verbose --output %t.json -- %{shell} %t/build.sh
|
||||
+# RUN: assert_compilation %t.json count -eq 0
|
||||
+
|
||||
+
|
||||
+TEST=$1
|
||||
+
|
||||
+mkdir -p $TEST;
|
||||
+touch $TEST/source.c;
|
||||
+
|
||||
+cat > "$TEST/build.sh" << EOF
|
||||
+#!/usr/bin/env sh
|
||||
+
|
||||
+$CC -E -o $TEST/source.i $TEST/source.c;
|
||||
+EOF
|
||||
BIN
Bear-3.0.20.tar.gz
Normal file
BIN
Bear-3.0.20.tar.gz
Normal file
Binary file not shown.
121
Bear.spec
Normal file
121
Bear.spec
Normal file
@ -0,0 +1,121 @@
|
||||
#
|
||||
# spec file for package Bear
|
||||
#
|
||||
# Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
|
||||
# Everyone is permitted to copy and distribute verbatim copies
|
||||
# of this license document, but changing it is not allowed.
|
||||
#
|
||||
# This file is under the GNU GENERAL PUBLIC LICENSE Version 3.
|
||||
#
|
||||
|
||||
%bcond_with tests
|
||||
Name: Bear
|
||||
Version: 3.0.20
|
||||
Release: 4
|
||||
Summary: Tool to generate compilation database for clang tooling
|
||||
License: GPL-3.0-or-later
|
||||
URL: https://github.com/rizsotto/Bear
|
||||
Source0: %{name}-%{version}.tar.gz
|
||||
Source1: googletest-release-1.12.1.tar.gz
|
||||
Source2: fmt-9.0.0.tar.gz
|
||||
Source3: json-3.10.5.tar.gz
|
||||
Source4: spdlog-1.10.0.tar.gz
|
||||
BuildRequires: bash-completion
|
||||
BuildRequires: gcc, gcc-c++, make
|
||||
BuildRequires: protobuf-devel, grpc-devel, grpc-plugins
|
||||
BuildRequires: c-ares-devel
|
||||
BuildRequires: glibc-devel, glibc-debuginfo
|
||||
BuildRequires: cmake
|
||||
BuildRequires: pkgconfig(absl_synchronization)
|
||||
BuildRequires: pkgconfig(grpc)
|
||||
BuildRequires: pkgconfig(grpc++) >= 1.26
|
||||
BuildRequires: pkgconfig(protobuf) >= 3.11
|
||||
%if %{with tests}
|
||||
BuildRequires: python
|
||||
BuildRequires: python3-lit
|
||||
BuildRequires: python3-setuptools
|
||||
# one of the tests requires /usr/bin/more
|
||||
BuildRequires: util-linux
|
||||
# additional binaries for specific tests
|
||||
BuildRequires: gcc-fortran
|
||||
BuildRequires: fakeroot
|
||||
BuildRequires: valgrind
|
||||
# the fakeroot test requires xargs
|
||||
BuildRequires: findutils
|
||||
%endif
|
||||
|
||||
Patch1: 0001-change-external-project-to-local-package.patch
|
||||
Patch2: 0002-Rebuild-when-add-option-failed.patch
|
||||
Patch3: 0003-Bugfix-skip-rebuild-without-new-options-and-preprocess.patch
|
||||
|
||||
%description
|
||||
Bear is a tool to generate compilation database for clang tooling.
|
||||
|
||||
One way to get compilation database is to use cmake as build tool. When the
|
||||
project compiles with no cmake, but another build system, there is no free json
|
||||
file. Bear is a tool to generate such file during the build process.
|
||||
|
||||
%prep
|
||||
%autosetup -p1 -n %{name}-%{version}
|
||||
|
||||
%build
|
||||
BEAR_MFLAGS_JOBS="%{?_smp_mflags}"
|
||||
|
||||
mkdir build
|
||||
cd build
|
||||
|
||||
%cmake .. \
|
||||
-DDEPEND_PATH=%{_sourcedir} \
|
||||
-DCMAKE_INSTALL_PREFIX=%{_prefix} \
|
||||
%if %{with tests}
|
||||
-DENABLE_UNIT_TESTS=ON \
|
||||
-DENABLE_FUNC_TESTS=ON
|
||||
%else
|
||||
-DENABLE_UNIT_TESTS=OFF \
|
||||
-DENABLE_FUNC_TESTS=OFF
|
||||
%endif
|
||||
|
||||
make $BEAR_MFLAGS_JOBS
|
||||
|
||||
%install
|
||||
pushd build
|
||||
make DESTDIR=%{buildroot} install
|
||||
# Let RPM install it correctly
|
||||
rm -rf %{buildroot}%{_datadir}/doc
|
||||
popd
|
||||
|
||||
%files
|
||||
%license COPYING
|
||||
%doc README.md
|
||||
%{_bindir}/bear
|
||||
%{_bindir}/citnames
|
||||
%{_bindir}/intercept
|
||||
%{_mandir}/man1/bear.1*
|
||||
%{_mandir}/man1/citnames.1*
|
||||
%{_mandir}/man1/intercept.1*
|
||||
%{_libdir}/bear/
|
||||
|
||||
%changelog
|
||||
* Fri Jan 6 2023 yangtao <yangt111@chinatelecom.cn> - 3.0.20-4
|
||||
- Type:SPEC
|
||||
- ID:NA
|
||||
- SUG:NA
|
||||
- DESC: fix missing other tar.gz packages in src.rpm.
|
||||
|
||||
* Mon Dec 19 2022 zhaowenyu <804544223@qq.com> - 3.0.20-3
|
||||
- Type:SPEC
|
||||
- ID:NA
|
||||
- SUG:NA
|
||||
- DESC:Skip rebuild without new options and preprocess
|
||||
|
||||
* Thu Dec 01 2022 zhaowenyu <804544223@qq.com> - 3.0.20-2
|
||||
- Type:SPEC
|
||||
- ID:NA
|
||||
- SUG:NA
|
||||
- DESC:Rebuild when add option failed
|
||||
|
||||
* Wed Nov 16 2022 zhaowenyu <804544223@qq.com> - 3.0.20-1
|
||||
- Type:Init
|
||||
- ID:NA
|
||||
- SUG:NA
|
||||
- DESC:Init Bear 3.0.20 repository
|
||||
BIN
fmt-9.0.0.tar.gz
Normal file
BIN
fmt-9.0.0.tar.gz
Normal file
Binary file not shown.
BIN
googletest-release-1.12.1.tar.gz
Normal file
BIN
googletest-release-1.12.1.tar.gz
Normal file
Binary file not shown.
BIN
json-3.10.5.tar.gz
Normal file
BIN
json-3.10.5.tar.gz
Normal file
Binary file not shown.
BIN
spdlog-1.10.0.tar.gz
Normal file
BIN
spdlog-1.10.0.tar.gz
Normal file
Binary file not shown.
Loading…
x
Reference in New Issue
Block a user