diff --git a/debian/changelog b/debian/changelog index 49f196a3..9787f598 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,23 @@ +llvm-toolchain-9 (1:9~+rc3-1~exp3) experimental; urgency=medium + + * Force gcc before 9 (gcc 8 on Debian unstable) because it causes + huge increase of the size of the .deb (because of .a and .so) and + issues in the libs + (Closes: #939472) + + -- Sylvestre Ledru Fri, 06 Sep 2019 23:27:28 +0200 + +llvm-toolchain-9 (1:9~+rc3-1~exp2) experimental; urgency=medium + + * Debian moved to gcc-9. This gcc version now refuses -flto="Thin" + Move from LLVM_ENABLE_LTO="Thin" to BOOTSTRAP_LLVM_ENABLE_LTO="Thin" + to mitigate the issue (the argument should be passed only at the + second stage of the build process) + See https://bugs.llvm.org/show_bug.cgi?id=43193 + * Fix a link issue (Closes: #939172) + + -- Sylvestre Ledru Mon, 02 Sep 2019 10:46:45 +0200 + llvm-toolchain-9 (1:9~+rc3-1~exp1) experimental; urgency=medium * New snapshot release diff --git a/debian/control b/debian/control index 1cd449fc..afce6b02 100644 --- a/debian/control +++ b/debian/control @@ -18,7 +18,8 @@ Build-Depends: debhelper (>= 9.0), cmake, chrpath, texinfo, sharutils, ocaml-findlib [amd64 arm64 armhf i386 ppc64el s390x], libctypes-ocaml-dev [amd64 arm64 armhf i386 ppc64el s390x], dh-exec, dh-ocaml [amd64 arm64 armhf i386 ppc64el s390x], - libpfm4-dev, python3-setuptools + libpfm4-dev, python3-setuptools, + g++-8 | g++-7 | g++-6 | g++-5 | g++-4.7 Build-Conflicts: oprofile, ocaml Standards-Version: 4.2.1 Homepage: https://www.llvm.org/ diff --git a/debian/libclang-cppX.Y.install.in b/debian/libclang-cppX.Y.install.in index 532be080..75113642 100644 --- a/debian/libclang-cppX.Y.install.in +++ b/debian/libclang-cppX.Y.install.in @@ -1 +1,3 @@ usr/lib/llvm-@LLVM_VERSION@/lib/libclang-cpp-@LLVM_VERSION@.so.1 /usr/lib/@DEB_HOST_MULTIARCH@/ +usr/lib/llvm-@LLVM_VERSION@/lib/libclang-cpp.so.1 + diff --git a/debian/libclang-cppX.Y.links.in b/debian/libclang-cppX.Y.links.in index 351b66ba..d566c832 100644 --- a/debian/libclang-cppX.Y.links.in +++ b/debian/libclang-cppX.Y.links.in @@ -1 +1,3 @@ /usr/lib/@DEB_HOST_MULTIARCH@/libclang-cpp-@LLVM_VERSION@.so.1 usr/lib/llvm-@LLVM_VERSION@/lib/libclang-cpp.so.@LLVM_VERSION@ +/usr/lib/@DEB_HOST_MULTIARCH@/libclang-cpp-@LLVM_VERSION@.so.1 usr/lib/llvm-@LLVM_VERSION@/lib/libclang-cpp.so.1 +/usr/lib/@DEB_HOST_MULTIARCH@/libclang-cpp-@LLVM_VERSION@.so.1 /usr/lib/@DEB_HOST_MULTIARCH@/libclang-cpp.so.@LLVM_VERSION@ diff --git a/debian/patches/series b/debian/patches/series index 669029c7..e3c68d60 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -129,3 +129,4 @@ bootstrap-fix-include-next.diff clang-riscv64-multiarch.diff clang-riscv64-rv64gc.diff +#try-to-unbreak-thinlto.diff diff --git a/debian/patches/try-to-unbreak-thinlto.diff b/debian/patches/try-to-unbreak-thinlto.diff new file mode 100644 index 00000000..5335566d --- /dev/null +++ b/debian/patches/try-to-unbreak-thinlto.diff @@ -0,0 +1,19 @@ +Index: llvm-toolchain-9-9~+rc3/clang/CMakeLists.txt +=================================================================== +--- llvm-toolchain-9-9~+rc3.orig/clang/CMakeLists.txt ++++ llvm-toolchain-9-9~+rc3/clang/CMakeLists.txt +@@ -719,11 +719,9 @@ if (CLANG_ENABLE_BOOTSTRAP) + if(BOOTSTRAP_LLVM_ENABLE_LLD) + set(${CLANG_STAGE}_LINKER -DCMAKE_LINKER=${LLVM_RUNTIME_OUTPUT_INTDIR}/ld.lld) + endif() +- if(NOT BOOTSTRAP_LLVM_ENABLE_LTO) +- add_dependencies(clang-bootstrap-deps llvm-ar llvm-ranlib) +- set(${CLANG_STAGE}_AR -DCMAKE_AR=${LLVM_RUNTIME_OUTPUT_INTDIR}/llvm-ar) +- set(${CLANG_STAGE}_RANLIB -DCMAKE_RANLIB=${LLVM_RUNTIME_OUTPUT_INTDIR}/llvm-ranlib) +- endif() ++ add_dependencies(clang-bootstrap-deps llvm-ar llvm-ranlib) ++ set(${CLANG_STAGE}_AR -DCMAKE_AR=${LLVM_RUNTIME_OUTPUT_INTDIR}/llvm-ar) ++ set(${CLANG_STAGE}_RANLIB -DCMAKE_RANLIB=${LLVM_RUNTIME_OUTPUT_INTDIR}/llvm-ranlib) + add_dependencies(clang-bootstrap-deps llvm-objcopy llvm-strip) + set(${CLANG_STAGE}_OBJCOPY -DCMAKE_OBJCOPY=${LLVM_RUNTIME_OUTPUT_INTDIR}/llvm-objcopy) + set(${CLANG_STAGE}_STRIP -DCMAKE_STRIP=${LLVM_RUNTIME_OUTPUT_INTDIR}/llvm-strip) diff --git a/debian/qualify-clang.sh b/debian/qualify-clang.sh index 397fc923..6f31b1e8 100755 --- a/debian/qualify-clang.sh +++ b/debian/qualify-clang.sh @@ -9,7 +9,7 @@ VERSION=$(dpkg-parsechangelog | sed -rne "s,^Version: 1:([0-9]+).*,\1,p") DETAILED_VERSION=$(dpkg-parsechangelog | sed -rne "s,^Version: 1:([0-9.]+)(~|-)(.*),\1\2\3,p") DEB_HOST_ARCH=$(dpkg-architecture -qDEB_HOST_ARCH) -LIST="libomp5-${VERSION}_${DETAILED_VERSION}_amd64.deb libomp-${VERSION}-dev_${DETAILED_VERSION}_amd64.deb lldb-${VERSION}_${DETAILED_VERSION}_amd64.deb python-lldb-${VERSION}_${DETAILED_VERSION}_amd64.deb libllvm${VERSION}_${DETAILED_VERSION}_amd64.deb llvm-${VERSION}-dev_${DETAILED_VERSION}_amd64.deb liblldb-${VERSION}-dev_${DETAILED_VERSION}_amd64.deb libclang1-${VERSION}_${DETAILED_VERSION}_amd64.deb libclang-common-${VERSION}-dev_${DETAILED_VERSION}_amd64.deb llvm-${VERSION}_${DETAILED_VERSION}_amd64.deb liblldb-${VERSION}_${DETAILED_VERSION}_amd64.deb llvm-${VERSION}-runtime_${DETAILED_VERSION}_amd64.deb lld-${VERSION}_${DETAILED_VERSION}_amd64.deb libfuzzer-${VERSION}-dev_${DETAILED_VERSION}_amd64.deb libclang-${VERSION}-dev_${DETAILED_VERSION}_amd64.deb libc++-${VERSION}-dev_${DETAILED_VERSION}_amd64.deb libc++abi-${VERSION}-dev_${DETAILED_VERSION}_amd64.deb libc++1-${VERSION}_${DETAILED_VERSION}_amd64.deb libc++abi1-${VERSION}_${DETAILED_VERSION}_amd64.deb clang-${VERSION}_${DETAILED_VERSION}_amd64.deb llvm-${VERSION}-tools_${DETAILED_VERSION}_amd64.deb clang-tools-${VERSION}_${DETAILED_VERSION}_amd64.deb clangd-${VERSION}_${DETAILED_VERSION}_amd64.deb clang-${VERSION}-dbgsym_${DETAILED_VERSION}_amd64.deb libclang1-${VERSION}-dbgsym_${DETAILED_VERSION}_amd64.deb" +LIST="libomp5-${VERSION}_${DETAILED_VERSION}_amd64.deb libomp-${VERSION}-dev_${DETAILED_VERSION}_amd64.deb lldb-${VERSION}_${DETAILED_VERSION}_amd64.deb python-lldb-${VERSION}_${DETAILED_VERSION}_amd64.deb libllvm${VERSION}_${DETAILED_VERSION}_amd64.deb llvm-${VERSION}-dev_${DETAILED_VERSION}_amd64.deb liblldb-${VERSION}-dev_${DETAILED_VERSION}_amd64.deb libclang1-${VERSION}_${DETAILED_VERSION}_amd64.deb libclang-common-${VERSION}-dev_${DETAILED_VERSION}_amd64.deb llvm-${VERSION}_${DETAILED_VERSION}_amd64.deb liblldb-${VERSION}_${DETAILED_VERSION}_amd64.deb llvm-${VERSION}-runtime_${DETAILED_VERSION}_amd64.deb lld-${VERSION}_${DETAILED_VERSION}_amd64.deb libfuzzer-${VERSION}-dev_${DETAILED_VERSION}_amd64.deb libclang-${VERSION}-dev_${DETAILED_VERSION}_amd64.deb libc++-${VERSION}-dev_${DETAILED_VERSION}_amd64.deb libc++abi-${VERSION}-dev_${DETAILED_VERSION}_amd64.deb libc++1-${VERSION}_${DETAILED_VERSION}_amd64.deb libc++abi1-${VERSION}_${DETAILED_VERSION}_amd64.deb clang-${VERSION}_${DETAILED_VERSION}_amd64.deb llvm-${VERSION}-tools_${DETAILED_VERSION}_amd64.deb clang-tools-${VERSION}_${DETAILED_VERSION}_amd64.deb clangd-${VERSION}_${DETAILED_VERSION}_amd64.deb clang-${VERSION}-dbgsym_${DETAILED_VERSION}_amd64.deb libclang1-${VERSION}-dbgsym_${DETAILED_VERSION}_amd64.deb libclang-cpp${VERSION}_${DETAILED_VERSION}_amd64.deb" echo "To install everything:" echo "sudo dpkg -i $LIST" L="" @@ -162,6 +162,18 @@ echo '#include int main() { }' > foo.cpp clang++-$VERSION -std=c++11 foo.cpp +echo "Testing linking clang-cpp ..." + +clang-$VERSION -lclang-cpp$VERSION -v foo.cpp -o o &> /dev/null +if ! ldd o 2>&1|grep -q libclang-cpp; then + echo "Didn't link against libclang-cpp$VERSION" + exit 42 +fi +./o > /dev/null + +# Check that the symlink is correct +ls -al /usr/lib/llvm-$VERSION/lib/libclang-cpp.so.1 > /dev/null + echo "Testing code coverage ..." echo '#include @@ -379,7 +391,7 @@ struct g { typedef f::e c; }; class h { - struct : g::c {}; + struct : g::c { int i; }; }; struct m { h i; @@ -841,7 +853,7 @@ fi # MARCH should iterate the library architectures via flags # LIB should iterate the different libraries echo "if it fails, please run" -echo "apt-get install libc6-dev:i386 libgcc-5-dev:i386 libc6-dev-x32 libx32gcc-5-dev libx32gcc-8-dev" +echo "apt-get install libc6-dev:i386 libgcc-5-dev:i386 libc6-dev-x32 libx32gcc-5-dev libx32gcc-9-dev" for SYSTEM in ""; do for MARCH in -m64 -m32 -mx32 "-m32 -march=i686"; do for LIB in --rtlib=compiler-rt -fsanitize=address -fsanitize=thread -fsanitize=memory -fsanitize=undefined -fsanitize=dataflow; do # -fsanitize=efficiency-working-set; do @@ -868,7 +880,7 @@ done echo "If the following fails, try setting an environment variable such as:" echo "OBJC_INCLUDE_PATH=/usr/lib/gcc/x86_64-linux-gnu/8/include" -echo "libobjc-8-dev should be also installed" +echo "libobjc-9-dev should be also installed" echo "#include " > foo.m #clang-$VERSION -c foo.m diff --git a/debian/rules b/debian/rules index 09ea4fe6..b3205728 100755 --- a/debian/rules +++ b/debian/rules @@ -67,6 +67,14 @@ ifeq ($(shell dpkg --compare-versions $(shell dpkg-query -W -f '$${Version}' g++ GCC_VERSION := 4.9 endif +FORCE_NOT_GCC_9_DISTRO := eoan bullseye +ifeq (,$(filter $(DISTRO), $(FORCE_NOT_GCC_9_DISTRO))) +# Force gcc-8 + GCC_VERSION := 8 +endif + + + export CC=gcc-$(GCC_VERSION) export CXX=g++-$(GCC_VERSION) @@ -390,8 +398,6 @@ override_dh_auto_configure: preconfigure -DCMAKE_VERBOSE_MAKEFILE=ON \ -DCMAKE_BUILD_TYPE=RelWithDebInfo \ -DCMAKE_CXX_FLAGS_RELWITHDEBINFO="$(opt_flags)" \ - -DBOOTSTRAP_CMAKE_CXX_FLAGS='$(BOOTSTRAP_CXXFLAGS_EXTRA)' \ - -DBOOTSTRAP_CMAKE_C_FLAGS='$(BOOTSTRAP_CFLAGS_EXTRA)' \ -DLLVM_LINK_LLVM_DYLIB=ON \ -DLLVM_INSTALL_UTILS=ON \ -DLLVM_VERSION_SUFFIX= \ @@ -405,9 +411,11 @@ override_dh_auto_configure: preconfigure -DENABLE_LINKER_BUILD_ID=ON \ -DPOLLY_BUNDLED_JSONCPP=OFF \ -DLLVM_EXPERIMENTAL_TARGETS_TO_BUILD="AVR" \ - -DCLANG_ENABLE_BOOTSTRAP=ON \ -DLLVM_TEMPORARILY_ALLOW_OLD_TOOLCHAIN=ON \ -DCLANG_VENDOR=$(VENDOR) \ + -DCLANG_ENABLE_BOOTSTRAP=ON \ + -DBOOTSTRAP_CMAKE_CXX_FLAGS='$(BOOTSTRAP_CXXFLAGS_EXTRA)' \ + -DBOOTSTRAP_CMAKE_C_FLAGS='$(BOOTSTRAP_CFLAGS_EXTRA)' \ -DCLANG_BOOTSTRAP_PASSTHROUGH="CMAKE_INSTALL_PREFIX;CMAKE_VERBOSE_MAKEFILE;CMAKE_BUILD_TYPE;CMAKE_CXX_FLAGS_RELWITHDEBINFO;LLVM_LINK_LLVM_DYLIB;LLVM_INSTALL_UTILS;LLVM_VERSION_SUFFIX;LLVM_ENABLE_SPHINX;SPHINX_WARNINGS_AS_ERRORS;LLVM_BUILD_LLVM_DYLIB;LLVM_ENABLE_RTTI;LLVM_ENABLE_FFI;LIBCLANG_LIBRARY_VERSION;ENABLE_LINKER_BUILD_ID;POLLY_BUNDLED_JSONCPP;LLVM_EXPERIMENTAL_TARGETS_TO_BUILD;LLVM_USE_PERF;LLVM_ENABLE_ASSERTIONS;LLVM_BINUTILS_INCDIR;LLVM_HOST_TRIPLE;;LLVM_COMPILER_CHECKED;COMPILER_RT_BUILD_BUILTINS;LIBOMP_LIBFLAGS;CMAKE_SHARED_LINKER_FLAGS;PYTHON_EXECUTABLE" @@ -576,9 +584,11 @@ override_dh_auto_install: cd debian/tmp/usr/lib/llvm-$(LLVM_VERSION)/lib/ && rm -f libclang.so.$(SONAME_EXT) libclang-$(LLVM_VERSION).so; \ ln -s libclang-$(LLVM_VERSION).so.$(SONAME_EXT) libclang.so.$(SONAME_EXT) - cd debian/tmp/usr/lib/llvm-$(LLVM_VERSION)/lib/ && mv libclang-cpp.so.$(SONAME_EXT) libclang-cpp-$(LLVM_VERSION).so.$(SONAME_EXT); \ + cd debian/tmp/usr/lib/llvm-$(LLVM_VERSION)/lib/ && mv libclang-cpp.so.$(LLVM_VERSION) libclang-cpp-$(LLVM_VERSION).so.$(SONAME_EXT); \ ln -s libclang-cpp-$(LLVM_VERSION).so.$(SONAME_EXT) libclang-cpp.so.$(SONAME_EXT) + + cd debian/tmp/usr/lib/llvm-$(LLVM_VERSION)/lib && rm -f libomp.so; \ ln -s libomp.so.$(SONAME_OPENMP) libomp.so @@ -710,7 +720,7 @@ endif # Delete the target build directory to save some space on the build systems # All the files have been installed in $(CURDIR)/debian/tmp/ already - rm -rf $(TARGET_BUILD) +# rm -rf $(TARGET_BUILD) override_dh_makeshlibs: