Hello, there is a patch upstream [1] for the CMake files, its also included as debian patch until the next release.
I hopefully addressed all your concerns, and verified the package is lintian-clean, the code is available at [2], broken up into multiple commits The buildflags for CMake are set in a way so that they work with older debhelper versions [3], this is for easing backports to Wheezy and Jessie (which are still used at my workplace). I had to lookup some details on the debian policies, and I thing its now compliant regarding breaks and the "circular dependency" between bear and bear-lib should ensure that all "lib" are uninstalled with bear. Can you send this package through a debian buildserver (experimental?), so that the various architectures are easily available? Kind Regards, Norbert Lange [1] - https://github.com/rizsotto/Bear/commit/5aba709f15fcef8bda3c4db3b4751c0076a274e6 [2] - https://github.com/nolange/bear-debpackage [3] - https://wiki.debian.org/Hardening#Notes_for_packages_using_CMake 2017-03-02 23:25 GMT+01:00 Norbert Lange <la...@chello.at>: > 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