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

Reply via email to