diff --git a/debian/changelog b/debian/changelog index adaabd84..e3a2be5a 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,9 +1,20 @@ +llvm-toolchain-7 (1:7-4) unstable; urgency=medium + + * Backport a fix to improve scan-build code error. + Thanks to Roman Lebedev for the fix(Closes: #909662) + * Remove bat files https://bugs.llvm.org/show_bug.cgi?id=30755 + * Install bash-completion + + -- Sylvestre Ledru Wed, 26 Sep 2018 14:32:41 +0100 + llvm-toolchain-7 (1:7-3) unstable; urgency=medium * Fix a syntax issue in a scan-build patch * Fix the autopkgtest script (no gcc in the test) - * Create a new llvm-lto-7-dev package to ship lto - This will avoid to download llvm-dev to get lld + * remove dep from lld to llvm-7-dev because lld + doesn't use LLVM LTO + * remove old Replaces/Breaks + * Standards-Version: 4.2.1 -- Sylvestre Ledru Fri, 21 Sep 2018 22:48:47 +0200 diff --git a/debian/clang-X.Y.links.in b/debian/clang-X.Y.links.in index 4ba8a3b9..47b41e10 100644 --- a/debian/clang-X.Y.links.in +++ b/debian/clang-X.Y.links.in @@ -1,2 +1,3 @@ usr/lib/llvm-@LLVM_VERSION@/bin/clang usr/lib/llvm-@LLVM_VERSION@/bin/clang-@LLVM_VERSION@ usr/lib/llvm-@LLVM_VERSION@/lib/cmake/clang usr/lib/cmake/clang-@LLVM_VERSION@ +usr/lib/llvm-@LLVM_VERSION@/share/clang/bash-autocomplete.sh etc/bash_completion.d/clang-@LLVM_VERSION@ \ No newline at end of file diff --git a/debian/control b/debian/control index e86cf031..090139a4 100644 --- a/debian/control +++ b/debian/control @@ -12,13 +12,13 @@ Build-Depends: debhelper (>= 9.0), cmake, chrpath, texinfo, sharutils, lcov, procps, help2man, zlib1g-dev, g++-multilib [amd64 i386 kfreebsd-amd64 mips mips64 mips64el mipsel powerpc ppc64 s390 s390x sparc sparc64 x32], libjs-mathjax, - doxygen, gfortran -# ocaml-nox [amd64 arm64 armel armhf i386 ppc64el s390x], -# ocaml-findlib [amd64 arm64 armel armhf i386 ppc64el s390x], -# libctypes-ocaml-dev [amd64 arm64 armel armhf i386 ppc64el s390x], -# dh-ocaml [amd64 arm64 armel armhf i386 ppc64el s390x], + doxygen, gfortran, + ocaml-nox [amd64 arm64 armel armhf i386 ppc64el s390x], + ocaml-findlib [amd64 arm64 armel armhf i386 ppc64el s390x], + libctypes-ocaml-dev [amd64 arm64 armel armhf i386 ppc64el s390x], + dh-ocaml [amd64 arm64 armel armhf i386 ppc64el s390x], Build-Conflicts: oprofile, ocaml, libllvm-3.8-ocaml-dev, libllvm-3.9-ocaml-dev -Standards-Version: 4.2.0 +Standards-Version: 4.2.1 Homepage: https://www.llvm.org/ Vcs-Git: https://salsa.debian.org/pkg-llvm-team/llvm-toolchain.git -b 7 Vcs-Browser: https://salsa.debian.org/pkg-llvm-team/llvm-toolchain/tree/7 @@ -255,8 +255,6 @@ Description: Modular compiler and toolchain technologies Package: llvm-7-runtime Architecture: any Depends: binfmt-support, ${shlibs:Depends}, ${misc:Depends} -Conflicts: llvm (<< 2.7-1) -Replaces: llvm (<< 2.7-1) Description: Modular compiler and toolchain technologies, IR interpreter LLVM is a collection of libraries and tools that make it easy to build compilers, optimizers, just-in-time code generators, and many other @@ -277,7 +275,6 @@ Package: llvm-7-dev Architecture: any Depends: ${shlibs:Depends}, libffi-dev (>= 3.0.9), ${misc:Depends}, llvm-7 (= ${binary:Version}), libllvm7 (= ${binary:Version}), libtinfo-dev -Replaces: llvm (<< 2.2-3) Description: Modular compiler and toolchain technologies, libraries and headers LLVM is a collection of libraries and tools that make it easy to build compilers, optimizers, just-in-time code generators, and many other @@ -294,16 +291,6 @@ Description: Modular compiler and toolchain technologies, libraries and headers This package provides the libraries and headers to develop applications using llvm. -Package: libllvm-lto-7-dev -Architecture: any -Depends: ${shlibs:Depends}, ${misc:Depends} -Description: Modular compiler and toolchain technologies, LTO lib - LLVM is a collection of libraries and tools that make it easy to build - compilers, optimizers, just-in-time code generators, and many other - compiler-related programs. - . - This package provides the LTO libraries. - Package: llvm-7-tools Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends}, python, @@ -323,28 +310,28 @@ Description: Modular compiler and toolchain technologies, tools . This package provides tools for testing. -# Package: libllvm-7-ocaml-dev -# Section: ocaml -# Architecture: amd64 arm64 armel armhf i386 ppc64el s390x -# Suggests: llvm-7-doc -# Depends: ${shlibs:Depends}, ${misc:Depends}, ${ocaml:Depends}, llvm-7-dev (= ${binary:Version}) -# Replaces: libllvm-x.y-ocaml-dev -# Conflicts: libllvm-x.y-ocaml-dev -# Provides: ${ocaml:Provides}, libllvm-x.y-ocaml-dev -# Description: Modular compiler and toolchain technologies, OCaml bindings -# LLVM is a collection of libraries and tools that make it easy to build -# compilers, optimizers, just-in-time code generators, and many other -# compiler-related programs. -# . -# LLVM uses a single, language-independent virtual instruction set both -# as an offline code representation (to communicate code between -# compiler phases and to run-time systems) and as the compiler internal -# representation (to analyze and transform programs). This persistent -# code representation allows a common set of sophisticated compiler -# techniques to be applied at compile-time, link-time, install-time, -# run-time, or "idle-time" (between program runs). -# . -# This package provides the OCaml bindings to develop applications using llvm. +Package: libllvm-7-ocaml-dev +Section: ocaml +Architecture: amd64 arm64 armel armhf i386 ppc64el s390x +Suggests: llvm-7-doc +Depends: ${shlibs:Depends}, ${misc:Depends}, ${ocaml:Depends}, llvm-7-dev (= ${binary:Version}) +Replaces: libllvm-x.y-ocaml-dev +Conflicts: libllvm-x.y-ocaml-dev +Provides: ${ocaml:Provides}, libllvm-x.y-ocaml-dev +Description: Modular compiler and toolchain technologies, OCaml bindings + LLVM is a collection of libraries and tools that make it easy to build + compilers, optimizers, just-in-time code generators, and many other + compiler-related programs. + . + LLVM uses a single, language-independent virtual instruction set both + as an offline code representation (to communicate code between + compiler phases and to run-time systems) and as the compiler internal + representation (to analyze and transform programs). This persistent + code representation allows a common set of sophisticated compiler + techniques to be applied at compile-time, link-time, install-time, + run-time, or "idle-time" (between program runs). + . + This package provides the OCaml bindings to develop applications using llvm. Package: llvm-7-doc Section: doc @@ -391,7 +378,7 @@ Description: Modular compiler and toolchain technologies, examples Package: lld-7 Architecture: amd64 arm64 armel armhf i386 mips mipsel mips64el ppc64el kfreebsd-amd64 kfreebsd-i386 s390 sparc alpha hppa m68k powerpcspe ppc64 sh4 sparc64 x32 # ia64 hurd powerpc have been removed -Depends: ${shlibs:Depends}, ${misc:Depends}, libllvm7 (= ${binary:Version}), libllvm-lto-7-dev (= ${binary:Version}) +Depends: ${shlibs:Depends}, ${misc:Depends}, libllvm7 (= ${binary:Version}) Pre-Depends: ${misc:Pre-Depends} Description: LLVM-based linker LLD is a new, high-performance linker. It is built as a set of reusable diff --git a/debian/libllvm-lto-X.Y-dev.install.in b/debian/libllvm-lto-X.Y-dev.install.in deleted file mode 100644 index 4eeb014f..00000000 --- a/debian/libllvm-lto-X.Y-dev.install.in +++ /dev/null @@ -1 +0,0 @@ -usr/lib/llvm-@LLVM_VERSION@/lib/libLTO.* diff --git a/debian/llvm-X.Y-dev.install.in b/debian/llvm-X.Y-dev.install.in index 25d65a75..f367b8e9 100644 --- a/debian/llvm-X.Y-dev.install.in +++ b/debian/llvm-X.Y-dev.install.in @@ -4,6 +4,7 @@ usr/lib/llvm-@LLVM_VERSION@/lib/LLVM*.so usr/lib/llvm-@LLVM_VERSION@/lib/libLLVM.so usr/lib/llvm-@LLVM_VERSION@/lib/libLLVM-@LLVM_VERSION@.so usr/lib/llvm-@LLVM_VERSION@/lib/libLLVM-@LLVM_VERSION_FULL@.so +usr/lib/llvm-@LLVM_VERSION@/lib/libLTO.* usr/lib/llvm-@LLVM_VERSION@/lib/BugpointPasses.so usr/lib/llvm-@LLVM_VERSION@/lib/TestPlugin.so usr/lib/llvm-@LLVM_VERSION@/include/llvm/ usr/include/llvm-@LLVM_VERSION@/ diff --git a/debian/patches/0001-analyzer-scan-build-if-status-bugs-is-passed-don-t-f.patch b/debian/patches/0001-analyzer-scan-build-if-status-bugs-is-passed-don-t-f.patch new file mode 100644 index 00000000..e8a65a55 --- /dev/null +++ b/debian/patches/0001-analyzer-scan-build-if-status-bugs-is-passed-don-t-f.patch @@ -0,0 +1,46 @@ +From 564f50e7536dab9dec5ed73f811b0b2d9d3aed14 Mon Sep 17 00:00:00 2001 +From: Roman Lebedev +Date: Wed, 26 Sep 2018 13:08:44 +0000 +Subject: [PATCH] [analyzer] scan-build: if --status-bugs is passed, don't + forget about the exit status of the actual build + +Summary: +This has been bothering me for a while, but only now i have actually looked into this. +I'm using one CI job for static analysis - clang static analyzers as compilers + clang-tidy via cmake. +And i'd like for the build to fail if at least one of those finds issues. +If clang-tidy finds issues, it will fail the build since the warnings-as-errors is set. +If static analyzer finds anything, since --status-bugs is set, it will fail the build. +But if clang-tidy find anything, but static analyzer does not, the build succeeds :/ + +Reviewers: sylvestre.ledru, alexfh, jroelofs, ygribov, george.karpenkov, krememek + +Reviewed By: jroelofs + +Subscribers: xazax.hun, szepet, a.sidorin, mikhail.ramalho, Szelethus, cfe-commits + +Differential Revision: https://reviews.llvm.org/D52530 + +git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@343105 91177308-0d34-0410-b5e6-96231b3b80d8 + +Index: llvm-toolchain-7-7/clang/tools/scan-build/bin/scan-build +=================================================================== +--- llvm-toolchain-7-7.orig/clang/tools/scan-build/bin/scan-build ++++ llvm-toolchain-7-7/clang/tools/scan-build/bin/scan-build +@@ -1192,7 +1192,7 @@ OPTIONS: + + By default, the exit status of scan-build is the same as the executed build + command. Specifying this option causes the exit status of scan-build to be 1 +- if it found potential bugs and 0 otherwise. ++ if it found potential bugs and the exit status of the build itself otherwise. + + --use-cc [compiler path] + --use-cc=[compiler path] +@@ -1878,7 +1878,7 @@ if (defined $Options{OutputFormat}) { + + if ($Options{ExitStatusFoundBugs}) { + exit 1 if ($NumBugs > 0); +- exit 0; ++ exit $ExitStatus; + } + } + } diff --git a/debian/patches/series b/debian/patches/series index 31697f6e..7e80a4bb 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -75,3 +75,4 @@ D51108-rust-powerpc.diff disable-sse2-old-x86.diff scan-build-clang-X.diff +0001-analyzer-scan-build-if-status-bugs-is-passed-don-t-f.patch diff --git a/debian/qualify-clang.sh b/debian/qualify-clang.sh index 125d0b96..7e601155 100755 --- a/debian/qualify-clang.sh +++ b/debian/qualify-clang.sh @@ -148,6 +148,10 @@ fi clang-$VERSION -fuse-ld=lld -O2 foo.c main.c -o foo ./foo > /dev/null +clang-$VERSION -fuse-ld=lld -flto -O2 foo.c main.c -o foo +./foo > /dev/null +exit 0 + clang-$VERSION -fuse-ld=lld-$VERSION -O2 foo.c main.c -o foo ./foo > /dev/null diff --git a/debian/rules b/debian/rules index c8b4de02..f81d566b 100755 --- a/debian/rules +++ b/debian/rules @@ -31,7 +31,7 @@ DEB_HOST_ARCH ?= $(shell dpkg-architecture -qDEB_HOST_ARCH) DEB_HOST_ARCH_OS ?= $(shell dpkg-architecture -qDEB_HOST_ARCH_OS) LDFLAGS_EXTRA = -CXXFLAGS_EXTRA = -std=c++0x +CXXFLAGS_EXTRA = CONFIGURE_EXTRA = CMAKE_EXTRA = @@ -188,12 +188,12 @@ OCAML_ENABLE= no OCAML_ARCHS := amd64 arm64 armel armhf i386 ppc64el s390x ifneq (,$(filter $(DEB_HOST_ARCH),$(OCAML_ARCHS))) # Enable OCAML for this arch. - # OCAML_ENABLE=yes - # OCAML_STDLIB_DIR ?= $(shell ocamlc -where) - # DH_OPTIONS=--with ocaml + OCAML_ENABLE=yes + OCAML_STDLIB_DIR ?= $(shell ocamlc -where) + DH_OPTIONS=--with ocaml endif # Force the deactivation of ocaml until the transition is done -OCAML_ENABLE=no +#OCAML_ENABLE=no LIBFUZZER_ENABLE=yes ifeq (,$(filter $(DEB_HOST_ARCH_OS),linux)) @@ -290,9 +290,9 @@ override_dh_auto_configure: preconfigure cov-configure --compiler clang --comptype clang; \ cov-configure --compiler gcc-$(GCC_VERSION) --comptype gcc; \ cov-configure --compiler g++-$(GCC_VERSION) --comptype gcc; \ - cov-configure -co /usr/bin/g++-$(GCC_VERSION) --comptype gcc -- -std=c++0x -fPIC -std=c++11; \ + cov-configure -co /usr/bin/g++-$(GCC_VERSION) --comptype gcc -- -fPIC -std=c++11; \ cov-configure -co /usr/bin/gcc-$(GCC_VERSION) --comptype gcc -- -fPIC; \ - cov-configure -co /usr/bin/g++-$(GCC_VERSION) --comptype gcc -- -std=c++0x -fPIC -std=c++11 -fno-exceptions; \ + cov-configure -co /usr/bin/g++-$(GCC_VERSION) --comptype gcc -- -fPIC -std=c++11 -fno-exceptions; \ cov-configure -co /usr/bin/g++-$(GCC_VERSION) --comptype gcc --template \ --xml-option append_arg:"--ppp_translator" \ --xml-option append_arg:"replace/llvm::AlignOf::Alignment/(llvm::AlignOf::Alignment)" \ @@ -456,6 +456,8 @@ override_dh_auto_install: # Not used on Linux. rm -f $(DEB_INST)/usr/lib/llvm-$(LLVM_VERSION)/bin/argdumper rm -f $(DEB_INST)/usr/lib/llvm-$(LLVM_VERSION)/share/clang/clang-format-bbedit.applescript + # Remove bat files https://bugs.llvm.org/show_bug.cgi?id=30755 + rm -f $(DEB_INST)/usr/share/clang/scan-build-$(LLVM_VERSION)/libexec/*.bat $(DEB_INST)/usr/share/clang/scan-build-$(LLVM_VERSION)/bin/*.bat cp $(TARGET_BUILD)/bin/clang-query $(DEB_INST)/usr/lib/llvm-$(LLVM_VERSION)/bin