summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitignore1
-rw-r--r--python-compile-commands.spec423
-rw-r--r--sources1
3 files changed, 425 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore
index e69de29..b19012d 100644
--- a/.gitignore
+++ b/.gitignore
@@ -0,0 +1 @@
+/compile-commands-2.0.0.tar.gz
diff --git a/python-compile-commands.spec b/python-compile-commands.spec
new file mode 100644
index 0000000..1cd43a8
--- /dev/null
+++ b/python-compile-commands.spec
@@ -0,0 +1,423 @@
+%global _empty_manifest_terminate_build 0
+Name: python-compile-commands
+Version: 2.0.0
+Release: 1
+Summary: Compilation Database Manipulation Utility
+License: MIT
+URL: https://github.com/qdewaghe/compile-commands
+Source0: https://mirrors.aliyun.com/pypi/web/packages/b4/0b/ed621cae614508ce185dbc7da0b962aab627b29b5b764e13d4fdfa7e0d61/compile-commands-2.0.0.tar.gz
+BuildArch: noarch
+
+Requires: python3-glob2
+Requires: python3-version
+Requires: python3-pytest
+Requires: python3-pytest-cov
+Requires: python3-mypy
+Requires: python3-gprof2dot
+
+%description
+# Compilation Database Manipulation Utility
+
+This utility facilitates the use and modifications of compilation databases (CDB). \
+Modifying compilation databases can be useful especially when you don't have control over how a project is built.
+
+## Install
+
+```bash
+pip install compile-commands
+```
+
+## Requirements
+
+Requires at least python 3.8
+
+## Usage
+
+This tool has many possible uses, some of them are listed below.
+
+In a project composed of subproject with their own build directories, you can use `--merge` and indicate the root `--dir` and it will merge them.
+This is particularly useful for LSP servers that don't handle these projects well.
+
+```bash
+compile-commands --dir /path/to/project --merge
+```
+
+This may be slow if the project is big one alternative would to specify "by hand" the compilation databases with `--files`.
+
+``` bash
+compile-commands --files $(fd compile_commands.json)
+compile-commands --files myproject1/build/compile_commands.json myproject2/build/compile_commands.json --merge
+```
+The output file will named by default "compile_commands.json" in the current working directory. You can use `-o`, `--output` to override this behavior.
+
+You can also indicate to a LSP server that you prefer using libc++ instead of libstdc++ even if your buildsystem doesn't use it.
+
+```bash
+compile-commands --file compile-commands.json \
+ --add_flags='-stdlib=libc++'
+```
+
+`--add_flags` takes in a string so you can add multiple flags easily
+
+```bash
+compile-commands --file compile-commands.json \
+ --add_flags='-stdlib=libc++ -O0'
+```
+
+You can combine `--add_flags` with `--run` to monitor warnings:
+
+```bash
+compile-commands --file compile-commands.json \
+ --add_flags='-Wall -Wextra -pedantic -fsyntax' \
+ --run --threads=12
+```
+
+You can decide to treat only a subset of your project by using `--filter_files` or `--remove_files`.\
+`--filter_files` takes in a regular expression whereas `--remove_files` takes in a comma-separated list of absolute paths.
+
+You can as example filter out .c files from the database:
+
+```bash
+compile-commands --file compile-commands.json \
+ --filter_files='.*\.c$' \
+ --remove_files path/to/file1 path/to/file2
+```
+
+You can decide to treat only a subset of your project by using `--include_files` which takes in a comma-separated list of absolute paths. You can also prefix each paths passed to `--include_files` and `--remove_files` by using `--path-prefix`.
+
+```bash
+compile-commands --file compile-commands.json \
+ --include_files= path/to/file1 path/to/file2
+```
+
+You can use the `-o` flag to specify the name of the output file in case you don't want to overwrite
+
+```bash
+compile-commands --file compile-commands.json \
+ --filter_files='.c\$' \
+ -o my-db-without-c-files.json
+```
+
+You can also filter out parts of the commands based on a regular expression using `--filter`. \
+This is particularly useful when you need to modify the `-o` from the compiler's command.
+A good example of that is using [ClangBuildAnalyzer](https://github.com/aras-p/ClangBuildAnalyzer).
+
+```bash
+mkdir ftime
+cd ftime
+compile-commands --file=/path/to/project/compile-commands.json \
+ --add_flags='-ftime-trace' \
+ --filter='-o .*\\.o' \
+ --run -j 12
+
+# .json and .o files are created in-place!
+ClangBuildAnalyzer --all . capture_file
+ClangBuildAnalyzer --analyze capture_file
+```
+
+We add the clang's `-ftime-trace` as required by ClangBuildAnalyzer and remove every occurences of -o path/to/object/file.o and run each commands to produces the json tracings.\
+What if g++ was used during the creation of compilation database ? In this case we can use `--clang` and `--gcc` to switch between the two compilers and even change the path of the compiler with `--compiler_path` if let's say gcc is in `/usr/bin` and the clang we want to use is in `/usr/bin/local`.
+
+```bash
+compile-commands --file=/path/to/project/compile-commands.json \
+ --clang --compiler_path='/usr/bin/local' \
+ --add_flags='-ftime-trace' \
+ --filter='-o .*\\.o' \
+ --run -j 12
+```
+
+`--filter` also accepts a replacement through the `--replacement` flag, it accepts reference to groups within the regular expression as per `re.sub()`. `--filter` is also useful to remove flags that are not compatible with both gcc and clang.
+
+If you are a user of the Ninja buildsystem you might notice that the above example does not work. That is because generating a CDB through CMake using Ninja as the generator will result in having relative include paths within the CDB (relative to "directory" that is). This is inconvenient because the above effectively moves the build directory but does not move dependencies. To fix that you can use `--absolute_include_directories` which will modify relative includes paths into absolute include paths.
+
+
+
+
+%package -n python3-compile-commands
+Summary: Compilation Database Manipulation Utility
+Provides: python-compile-commands
+BuildRequires: python3-devel
+BuildRequires: python3-setuptools
+BuildRequires: python3-pip
+%description -n python3-compile-commands
+# Compilation Database Manipulation Utility
+
+This utility facilitates the use and modifications of compilation databases (CDB). \
+Modifying compilation databases can be useful especially when you don't have control over how a project is built.
+
+## Install
+
+```bash
+pip install compile-commands
+```
+
+## Requirements
+
+Requires at least python 3.8
+
+## Usage
+
+This tool has many possible uses, some of them are listed below.
+
+In a project composed of subproject with their own build directories, you can use `--merge` and indicate the root `--dir` and it will merge them.
+This is particularly useful for LSP servers that don't handle these projects well.
+
+```bash
+compile-commands --dir /path/to/project --merge
+```
+
+This may be slow if the project is big one alternative would to specify "by hand" the compilation databases with `--files`.
+
+``` bash
+compile-commands --files $(fd compile_commands.json)
+compile-commands --files myproject1/build/compile_commands.json myproject2/build/compile_commands.json --merge
+```
+The output file will named by default "compile_commands.json" in the current working directory. You can use `-o`, `--output` to override this behavior.
+
+You can also indicate to a LSP server that you prefer using libc++ instead of libstdc++ even if your buildsystem doesn't use it.
+
+```bash
+compile-commands --file compile-commands.json \
+ --add_flags='-stdlib=libc++'
+```
+
+`--add_flags` takes in a string so you can add multiple flags easily
+
+```bash
+compile-commands --file compile-commands.json \
+ --add_flags='-stdlib=libc++ -O0'
+```
+
+You can combine `--add_flags` with `--run` to monitor warnings:
+
+```bash
+compile-commands --file compile-commands.json \
+ --add_flags='-Wall -Wextra -pedantic -fsyntax' \
+ --run --threads=12
+```
+
+You can decide to treat only a subset of your project by using `--filter_files` or `--remove_files`.\
+`--filter_files` takes in a regular expression whereas `--remove_files` takes in a comma-separated list of absolute paths.
+
+You can as example filter out .c files from the database:
+
+```bash
+compile-commands --file compile-commands.json \
+ --filter_files='.*\.c$' \
+ --remove_files path/to/file1 path/to/file2
+```
+
+You can decide to treat only a subset of your project by using `--include_files` which takes in a comma-separated list of absolute paths. You can also prefix each paths passed to `--include_files` and `--remove_files` by using `--path-prefix`.
+
+```bash
+compile-commands --file compile-commands.json \
+ --include_files= path/to/file1 path/to/file2
+```
+
+You can use the `-o` flag to specify the name of the output file in case you don't want to overwrite
+
+```bash
+compile-commands --file compile-commands.json \
+ --filter_files='.c\$' \
+ -o my-db-without-c-files.json
+```
+
+You can also filter out parts of the commands based on a regular expression using `--filter`. \
+This is particularly useful when you need to modify the `-o` from the compiler's command.
+A good example of that is using [ClangBuildAnalyzer](https://github.com/aras-p/ClangBuildAnalyzer).
+
+```bash
+mkdir ftime
+cd ftime
+compile-commands --file=/path/to/project/compile-commands.json \
+ --add_flags='-ftime-trace' \
+ --filter='-o .*\\.o' \
+ --run -j 12
+
+# .json and .o files are created in-place!
+ClangBuildAnalyzer --all . capture_file
+ClangBuildAnalyzer --analyze capture_file
+```
+
+We add the clang's `-ftime-trace` as required by ClangBuildAnalyzer and remove every occurences of -o path/to/object/file.o and run each commands to produces the json tracings.\
+What if g++ was used during the creation of compilation database ? In this case we can use `--clang` and `--gcc` to switch between the two compilers and even change the path of the compiler with `--compiler_path` if let's say gcc is in `/usr/bin` and the clang we want to use is in `/usr/bin/local`.
+
+```bash
+compile-commands --file=/path/to/project/compile-commands.json \
+ --clang --compiler_path='/usr/bin/local' \
+ --add_flags='-ftime-trace' \
+ --filter='-o .*\\.o' \
+ --run -j 12
+```
+
+`--filter` also accepts a replacement through the `--replacement` flag, it accepts reference to groups within the regular expression as per `re.sub()`. `--filter` is also useful to remove flags that are not compatible with both gcc and clang.
+
+If you are a user of the Ninja buildsystem you might notice that the above example does not work. That is because generating a CDB through CMake using Ninja as the generator will result in having relative include paths within the CDB (relative to "directory" that is). This is inconvenient because the above effectively moves the build directory but does not move dependencies. To fix that you can use `--absolute_include_directories` which will modify relative includes paths into absolute include paths.
+
+
+
+
+%package help
+Summary: Development documents and examples for compile-commands
+Provides: python3-compile-commands-doc
+%description help
+# Compilation Database Manipulation Utility
+
+This utility facilitates the use and modifications of compilation databases (CDB). \
+Modifying compilation databases can be useful especially when you don't have control over how a project is built.
+
+## Install
+
+```bash
+pip install compile-commands
+```
+
+## Requirements
+
+Requires at least python 3.8
+
+## Usage
+
+This tool has many possible uses, some of them are listed below.
+
+In a project composed of subproject with their own build directories, you can use `--merge` and indicate the root `--dir` and it will merge them.
+This is particularly useful for LSP servers that don't handle these projects well.
+
+```bash
+compile-commands --dir /path/to/project --merge
+```
+
+This may be slow if the project is big one alternative would to specify "by hand" the compilation databases with `--files`.
+
+``` bash
+compile-commands --files $(fd compile_commands.json)
+compile-commands --files myproject1/build/compile_commands.json myproject2/build/compile_commands.json --merge
+```
+The output file will named by default "compile_commands.json" in the current working directory. You can use `-o`, `--output` to override this behavior.
+
+You can also indicate to a LSP server that you prefer using libc++ instead of libstdc++ even if your buildsystem doesn't use it.
+
+```bash
+compile-commands --file compile-commands.json \
+ --add_flags='-stdlib=libc++'
+```
+
+`--add_flags` takes in a string so you can add multiple flags easily
+
+```bash
+compile-commands --file compile-commands.json \
+ --add_flags='-stdlib=libc++ -O0'
+```
+
+You can combine `--add_flags` with `--run` to monitor warnings:
+
+```bash
+compile-commands --file compile-commands.json \
+ --add_flags='-Wall -Wextra -pedantic -fsyntax' \
+ --run --threads=12
+```
+
+You can decide to treat only a subset of your project by using `--filter_files` or `--remove_files`.\
+`--filter_files` takes in a regular expression whereas `--remove_files` takes in a comma-separated list of absolute paths.
+
+You can as example filter out .c files from the database:
+
+```bash
+compile-commands --file compile-commands.json \
+ --filter_files='.*\.c$' \
+ --remove_files path/to/file1 path/to/file2
+```
+
+You can decide to treat only a subset of your project by using `--include_files` which takes in a comma-separated list of absolute paths. You can also prefix each paths passed to `--include_files` and `--remove_files` by using `--path-prefix`.
+
+```bash
+compile-commands --file compile-commands.json \
+ --include_files= path/to/file1 path/to/file2
+```
+
+You can use the `-o` flag to specify the name of the output file in case you don't want to overwrite
+
+```bash
+compile-commands --file compile-commands.json \
+ --filter_files='.c\$' \
+ -o my-db-without-c-files.json
+```
+
+You can also filter out parts of the commands based on a regular expression using `--filter`. \
+This is particularly useful when you need to modify the `-o` from the compiler's command.
+A good example of that is using [ClangBuildAnalyzer](https://github.com/aras-p/ClangBuildAnalyzer).
+
+```bash
+mkdir ftime
+cd ftime
+compile-commands --file=/path/to/project/compile-commands.json \
+ --add_flags='-ftime-trace' \
+ --filter='-o .*\\.o' \
+ --run -j 12
+
+# .json and .o files are created in-place!
+ClangBuildAnalyzer --all . capture_file
+ClangBuildAnalyzer --analyze capture_file
+```
+
+We add the clang's `-ftime-trace` as required by ClangBuildAnalyzer and remove every occurences of -o path/to/object/file.o and run each commands to produces the json tracings.\
+What if g++ was used during the creation of compilation database ? In this case we can use `--clang` and `--gcc` to switch between the two compilers and even change the path of the compiler with `--compiler_path` if let's say gcc is in `/usr/bin` and the clang we want to use is in `/usr/bin/local`.
+
+```bash
+compile-commands --file=/path/to/project/compile-commands.json \
+ --clang --compiler_path='/usr/bin/local' \
+ --add_flags='-ftime-trace' \
+ --filter='-o .*\\.o' \
+ --run -j 12
+```
+
+`--filter` also accepts a replacement through the `--replacement` flag, it accepts reference to groups within the regular expression as per `re.sub()`. `--filter` is also useful to remove flags that are not compatible with both gcc and clang.
+
+If you are a user of the Ninja buildsystem you might notice that the above example does not work. That is because generating a CDB through CMake using Ninja as the generator will result in having relative include paths within the CDB (relative to "directory" that is). This is inconvenient because the above effectively moves the build directory but does not move dependencies. To fix that you can use `--absolute_include_directories` which will modify relative includes paths into absolute include paths.
+
+
+
+
+%prep
+%autosetup -n compile-commands-2.0.0
+
+%build
+%py3_build
+
+%install
+%py3_install
+install -d -m755 %{buildroot}/%{_pkgdocdir}
+if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi
+if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi
+if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi
+if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi
+pushd %{buildroot}
+if [ -d usr/lib ]; then
+ find usr/lib -type f -printf "\"/%h/%f\"\n" >> filelist.lst
+fi
+if [ -d usr/lib64 ]; then
+ find usr/lib64 -type f -printf "\"/%h/%f\"\n" >> filelist.lst
+fi
+if [ -d usr/bin ]; then
+ find usr/bin -type f -printf "\"/%h/%f\"\n" >> filelist.lst
+fi
+if [ -d usr/sbin ]; then
+ find usr/sbin -type f -printf "\"/%h/%f\"\n" >> filelist.lst
+fi
+touch doclist.lst
+if [ -d usr/share/man ]; then
+ find usr/share/man -type f -printf "\"/%h/%f.gz\"\n" >> doclist.lst
+fi
+popd
+mv %{buildroot}/filelist.lst .
+mv %{buildroot}/doclist.lst .
+
+%files -n python3-compile-commands -f filelist.lst
+%dir %{python3_sitelib}/*
+
+%files help -f doclist.lst
+%{_docdir}/*
+
+%changelog
+* Tue Jun 20 2023 Python_Bot <Python_Bot@openeuler.org> - 2.0.0-1
+- Package Spec generated
diff --git a/sources b/sources
new file mode 100644
index 0000000..699c807
--- /dev/null
+++ b/sources
@@ -0,0 +1 @@
+1d2cfe8d2d00b29f15a37b322e08124f compile-commands-2.0.0.tar.gz