Hello Sebastian, think of this patch more of a proof of concept, I am not fluent with all the requirements and conventions of the deb packages, especially the logic behind the "breaks".
>> + python:any, >> + python3:any, > > Why? Is it required that python is the same arch? I built the package with 'dpkg-buildpackage -a i386' for 32bit (or atleast I tried to), and this is a hinderance for cross-compiling. Sure this is not related to the reported bug, so fell free to ignore it. > Why not something like libear? cause (to me atleast) a package called libear is by convention a library that ends up in the system path, together with shlibs and all this automagical stuff. bear-lib is a private component of bear. > This should go upstream. Yeah, working on it. Any other of your points: I din`t knew better Kind regards, Norbert Lange 2017-03-02 10:40 GMT+01:00 Sebastian Ramacher <sramac...@debian.org>: > Hi Norbert, > > thank you for the patch. See some comments below. > > Cheers > > On 2017-02-28 00:57:41, Norbert Lange wrote: >> Package: bear >> Version: 2.2.1-1 >> Severity: normal >> Tags: patch >> >> Dear Maintainer, >> >> bear is preloading the libear.so library with an absolute path, >> this requires that the architecture (32/64 bit) is matched >> and known in advance. >> >> This leads to several issues: >> >> 1. the package is not multiarch capable, thus >> there cant be libear.so for multiple archs installed >> 2. the default path is fixed for one architecture >> 3. starting a build under bear, using both 32 and 64 bit >> tools will need someting different that a fixed path >> >> I am attaching a path to fix these issue, by splitting the library >> in its own package, and using a variable in the default path >> >> Kind Regards, >> Norbert Lange >> >> -- System Information: >> Debian Release: 9.0 >> APT prefers testing >> APT policy: (200, 'testing') >> Architecture: amd64 (x86_64) >> Foreign Architectures: i386, armhf, arm64 >> >> Kernel: Linux 4.9.0-1-amd64 (SMP w/8 CPU cores) >> Locale: LANG=en_US.utf8, LC_CTYPE=en_US.utf8 (charmap=UTF-8) >> Shell: /bin/sh linked to /bin/dash >> Init: systemd (via /run/systemd/system) >> >> Versions of packages bear depends on: >> ii bear-lib 2.2.1-1 >> pn python3:any <none> >> >> bear recommends no packages. >> >> bear suggests no packages. >> >> -- no debconf information > >> diff -burN debian.orig/bear.install debian/bear.install >> --- debian.orig/bear.install 1970-01-01 01:00:00.000000000 +0100 >> +++ debian/bear.install 2017-02-28 00:01:36.000000000 +0100 >> @@ -0,0 +1,2 @@ >> +/usr/bin >> +/usr/share/man >> diff -burN debian.orig/bear-lib.install debian/bear-lib.install >> --- debian.orig/bear-lib.install 1970-01-01 01:00:00.000000000 +0100 >> +++ debian/bear-lib.install 2017-02-27 23:59:12.000000000 +0100 >> @@ -0,0 +1 @@ >> +/usr/lib >> diff -burN debian.orig/changelog debian/changelog >> --- debian.orig/changelog 2016-10-19 19:01:50.000000000 +0200 >> +++ debian/changelog 2017-02-28 00:40:58.000000000 +0100 >> @@ -1,3 +1,11 @@ >> +bear (2.2.1-1~nmu) unstable; urgency=medium >> + >> + * split library from main python script >> + * make default libear.so path configurable in the CMake files >> + * adjust the default libear.so path to use the ${LIB} Variable >> + >> + -- Norbert Lange <nolang...@gmail.com> Tue, 28 Feb 2017 00:40:58 +0100 >> + >> bear (2.2.1-1) unstable; urgency=medium >> >> * New upstream release. >> diff -burN debian.orig/control debian/control >> --- debian.orig/control 2016-10-19 18:58:44.000000000 +0200 >> +++ debian/control 2017-02-28 00:36:05.000000000 +0100 >> @@ -5,8 +5,8 @@ >> Build-Depends: >> debhelper (>= 10), >> cmake, >> - python, >> - python3, >> + python:any, >> + python3:any, > > Why? > >> scons, >> libqt4-dev, >> dh-python >> @@ -16,9 +16,9 @@ >> Vcs-Git: https://anonscm.debian.org/git/collab-maint/bear.git >> >> Package: bear >> -Architecture: any >> +Architecture: all >> Depends: >> - ${shlibs:Depends}, >> + bear-lib (>= ${source:Version}), bear-lib (<< >> ${source:Upstream-Version}.0~) > > Missing comma at the end. > >> ${misc:Depends}, >> ${python3:Depends} >> Description: generate compilation database for Clang tooling >> @@ -29,3 +29,19 @@ >> cmake supports the generation of JSON compilation databases out of the box. >> For any other build system that does not support this, Bear can be used >> instead to intercept the invocation of the compiler. >> + >> +Package: bear-lib > > Why not something like libear? > >> +Architecture: any >> +Multi-Arch: same >> +Depends: >> + ${shlibs:Depends} > > Missing ${misc:Depends} > >> +Description: generate compilation database for Clang tooling >> + Bear records the flags passed to the compiler for each translation unit and >> + stores them in a JSON file. This file can be used by Clang's tooling >> interface >> + and programs like clang-check to process a translation unit. >> + . >> + cmake supports the generation of JSON compilation databases out of the box. >> + For any other build system that does not support this, Bear can be used >> + instead to intercept the invocation of the compiler. >> + . >> + This is the required library for wrapping system calls > > Missing Breaks + Replaces. > >> diff -burN debian.orig/patches/make_default_preload_configurable.diff >> debian/patches/make_default_preload_configurable.diff >> --- debian.orig/patches/make_default_preload_configurable.diff >> 1970-01-01 01:00:00.000000000 +0100 >> +++ debian/patches/make_default_preload_configurable.diff 2017-02-28 >> 00:19:16.000000000 +0100 >> @@ -0,0 +1,15 @@ >> +Description: Allow configuring the default preload library path >> + Add the responsible variable to CMake's cache >> + . >> + >> +--- bear-2.2.1.orig/CMakeLists.txt >> ++++ bear-2.2.1/CMakeLists.txt >> +@@ -39,7 +39,7 @@ if (NOT CMAKE_BUILD_TYPE) >> + endif() >> + >> + set(EAR_LIB_FILE >> ${CMAKE_SHARED_LIBRARY_PREFIX}ear${CMAKE_SHARED_LIBRARY_SUFFIX}) >> +-set(DEFAULT_PRELOAD_FILE ${CMAKE_INSTALL_FULL_LIBDIR}/${EAR_LIB_FILE}) >> ++set(DEFAULT_PRELOAD_FILE ${CMAKE_INSTALL_FULL_LIBDIR}/${EAR_LIB_FILE} >> CACHE STRING "Default preload library path") >> + >> + add_subdirectory(libear) >> + add_subdirectory(bear) > > This should go upstream. > > > Cheers > >> diff -burN debian.orig/patches/series debian/patches/series >> --- debian.orig/patches/series 2015-08-08 17:13:48.000000000 +0200 >> +++ debian/patches/series 2017-02-28 00:17:16.000000000 +0100 >> @@ -1,2 +1,3 @@ >> use-python3.patch >> remove-rpath.patch >> +make_default_preload_configurable.diff >> diff -burN debian.orig/rules debian/rules >> --- debian.orig/rules 2016-10-19 18:58:44.000000000 +0200 >> +++ debian/rules 2017-02-28 00:35:21.000000000 +0100 >> @@ -7,7 +7,8 @@ >> >> override_dh_auto_configure: >> dh_auto_configure -- \ >> - -DCMAKE_INSTALL_LIBDIR="lib/${DEB_HOST_MULTIARCH}/bear" >> + -DCMAKE_INSTALL_LIBDIR="lib/${DEB_HOST_MULTIARCH}/bear" \ >> + -DDEFAULT_PRELOAD_FILE="/usr/\$${LIB}/bear/libear.so" >> >> override_dh_auto_test: >> # The tests fail if /usr/lib/ccache is in PATH so we remove it here. >> The tests >> @@ -17,10 +18,5 @@ >> -e 's;^/usr/lib/ccache/\?;;') \ >> dh_auto_test >> >> -override_dh_auto_install: >> - dh_auto_install >> - # Remove unwanted files. >> - rm -rf debian/bear/usr/share/doc/bear >> - >> override_dh_installchangelogs: >> dh_installchangelogs ChangeLog.md > > > -- > Sebastian Ramacher