diff options
| author | CoprDistGit <infra@openeuler.org> | 2023-05-15 06:39:36 +0000 |
|---|---|---|
| committer | CoprDistGit <infra@openeuler.org> | 2023-05-15 06:39:36 +0000 |
| commit | b00b1671a1012f16ac856647fca8b44943e7e78e (patch) | |
| tree | 1f83c2e128d209e03bfacfc968203ba7c4903e66 | |
| parent | e236ffe0546b1ea924e76a830adbc539d352b9a3 (diff) | |
automatic import of python-wllvm
| -rw-r--r-- | .gitignore | 1 | ||||
| -rw-r--r-- | python-wllvm.spec | 135 | ||||
| -rw-r--r-- | sources | 1 |
3 files changed, 137 insertions, 0 deletions
@@ -0,0 +1 @@ +/wllvm-1.3.1.tar.gz diff --git a/python-wllvm.spec b/python-wllvm.spec new file mode 100644 index 0000000..fe009bf --- /dev/null +++ b/python-wllvm.spec @@ -0,0 +1,135 @@ +%global _empty_manifest_terminate_build 0 +Name: python-wllvm +Version: 1.3.1 +Release: 1 +Summary: Whole Program LLVM +License: MIT +URL: https://github.com/SRI-CSL/whole-program-llvm +Source0: https://mirrors.nju.edu.cn/pypi/web/packages/4b/df/31d7519052bc21d0e9771e9a6540d6310bfb13bae7dacde060d8f647b8d3/wllvm-1.3.1.tar.gz +BuildArch: noarch + + +%description +This project, WLLVM, provides tools for building whole-program (or +whole-library) LLVM bitcode files from an unmodified C or C++ +source package. It currently runs on `*nix` platforms such as Linux, +FreeBSD, and Mac OS X. +WLLVM provides python-based compiler wrappers that work in two +steps. The wrappers first invoke the compiler as normal. Then, for +each object file, they call a bitcode compiler to produce LLVM +bitcode. The wrappers also store the location of the generated bitcode +file in a dedicated section of the object file. When object files are +linked together, the contents of the dedicated sections are +concatenated (so we don't lose the locations of any of the constituent +bitcode files). After the build completes, one can use an WLLVM +utility to read the contents of the dedicated section and link all of +the bitcode into a single whole-program bitcode file. This utility +works for both executable and native libraries. +This two-phase build process is necessary to be a drop-in replacement +for ``gcc`` or ``g++`` in any build system. Using the LTO framework in gcc +and the gold linker plugin works in many cases, but fails in the +presence of static libraries in builds. WLLVM's approach has the +distinct advantage of generating working binaries, in case some part +of a build process requires that. +WLLVM works with either ``clang`` or the ``gcc dragonegg`` plugin. + +%package -n python3-wllvm +Summary: Whole Program LLVM +Provides: python-wllvm +BuildRequires: python3-devel +BuildRequires: python3-setuptools +BuildRequires: python3-pip +%description -n python3-wllvm +This project, WLLVM, provides tools for building whole-program (or +whole-library) LLVM bitcode files from an unmodified C or C++ +source package. It currently runs on `*nix` platforms such as Linux, +FreeBSD, and Mac OS X. +WLLVM provides python-based compiler wrappers that work in two +steps. The wrappers first invoke the compiler as normal. Then, for +each object file, they call a bitcode compiler to produce LLVM +bitcode. The wrappers also store the location of the generated bitcode +file in a dedicated section of the object file. When object files are +linked together, the contents of the dedicated sections are +concatenated (so we don't lose the locations of any of the constituent +bitcode files). After the build completes, one can use an WLLVM +utility to read the contents of the dedicated section and link all of +the bitcode into a single whole-program bitcode file. This utility +works for both executable and native libraries. +This two-phase build process is necessary to be a drop-in replacement +for ``gcc`` or ``g++`` in any build system. Using the LTO framework in gcc +and the gold linker plugin works in many cases, but fails in the +presence of static libraries in builds. WLLVM's approach has the +distinct advantage of generating working binaries, in case some part +of a build process requires that. +WLLVM works with either ``clang`` or the ``gcc dragonegg`` plugin. + +%package help +Summary: Development documents and examples for wllvm +Provides: python3-wllvm-doc +%description help +This project, WLLVM, provides tools for building whole-program (or +whole-library) LLVM bitcode files from an unmodified C or C++ +source package. It currently runs on `*nix` platforms such as Linux, +FreeBSD, and Mac OS X. +WLLVM provides python-based compiler wrappers that work in two +steps. The wrappers first invoke the compiler as normal. Then, for +each object file, they call a bitcode compiler to produce LLVM +bitcode. The wrappers also store the location of the generated bitcode +file in a dedicated section of the object file. When object files are +linked together, the contents of the dedicated sections are +concatenated (so we don't lose the locations of any of the constituent +bitcode files). After the build completes, one can use an WLLVM +utility to read the contents of the dedicated section and link all of +the bitcode into a single whole-program bitcode file. This utility +works for both executable and native libraries. +This two-phase build process is necessary to be a drop-in replacement +for ``gcc`` or ``g++`` in any build system. Using the LTO framework in gcc +and the gold linker plugin works in many cases, but fails in the +presence of static libraries in builds. WLLVM's approach has the +distinct advantage of generating working binaries, in case some part +of a build process requires that. +WLLVM works with either ``clang`` or the ``gcc dragonegg`` plugin. + +%prep +%autosetup -n wllvm-1.3.1 + +%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-wllvm -f filelist.lst +%dir %{python3_sitelib}/* + +%files help -f doclist.lst +%{_docdir}/* + +%changelog +* Mon May 15 2023 Python_Bot <Python_Bot@openeuler.org> - 1.3.1-1 +- Package Spec generated @@ -0,0 +1 @@ +ac8e009a47407cf6377ab057d7db6c37 wllvm-1.3.1.tar.gz |
