[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: [PROPOSAL] changing policy on compiling with -g .. a better way



Hi,
>>"Ben" == Ben Collins <bcollins@debian.org> writes:

 Ben> I like this one, but I don't think that "build-debug" target
 Ben> should be used as an alternative since it gives two ways of
 Ben> doing this and the use will still need to look at the rules file

        This happens not to be the case. You can use the BUILD_DEBUG
 variable and always have that work.

 Ben> to see which one they need to get the debug files. Perhaps
 Ben> "build-debug" could be worded as in addition to as opposed to
 Ben> instead of. I'm sure you didn't mean this in the wording, but
 Ben> some how it comes across as such.

        Then I need to fix this.

 Ben> Also it needs to be noted, IMO, that BUILD_DEBUG should create a
 Ben> package that is not stripped (ie, don't use "install -s", nor
 Ben> dh_strip[1]) when building.

        OK.

        First, the minimal change::
======================================================================
          CC = gcc
          CFLAGS = -O2 -g -Wall # sane warning options vary between programs
          LDFLAGS = # none
          install -s # (or use strip on the files in debian/tmp)
...

          The `-g' flag is useful on compilation so that you have available a
          full set of debugging symbols in your built source tree, in case
          anyone should file a bug report involving (for example) a core dump.
+         Alternately, you could use an environment variable
+         BUILD_DEBUG, which, if set to `yes', would cause compilation
+         to be done with -g. (Remember not to call ``install -s'' or
+         strip on the binaries afterwards). The resulting binaries in
+         your built source tree will then contain the full set of
+         debugging symbols. Additionally, (and optionally) you may
+         also provide a target `build-debug' in debian/rules which has
+         the same effect as setting BUILD_DEBUG to `yes'. This can be
+         done quite simply, with the folowing lines:
+ build-debug: BUILD_DEBUG=yes
+ build-debug: build
======================================================================

        The second way: we don't just offer an alternative, we
 deprecate the old method, but let it be still legal.
======================================================================
          CC = gcc
-         CFLAGS = -O2 -g -Wall # sane warning options vary between programs
+         # sane warning options vary between programs
+         ifeq (,$(findstring $(BUILD_DEBUG),YES yes Yes))
+         CFLAGS = -O2 -g -Wall 
+         else
+         CFLAGS = -O2 -Wall 
+         endif
          LDFLAGS = # none
-          install -s # (or use strip on the files in debian/tmp)
...

          
          The `-g' flag is useful on compilation so that you have available a
          full set of debugging symbols in your built source tree, in case
          anyone should file a bug report involving (for example) a core dump.
+         It is acceptable, but deprecated, to always have -g in
+         ``CFLAGS'', and ``use install -s'' to install binaries or use
+         ``strip'' on the binaries in debian/tmp, but that make it
+         hard to create a debuggable debian package, and increase
+         build time for all builds, since debugging information is
+         created and then stripped away. The preferred method is to
+         use an environment variable BUILD_DEBUG, which, if set to
+         `yes', would cause compilation to be done with -g. The
+         resulting binaries in your package will then contain the full
+         set of debugging symbols. (Remember not to call ``install -s''
+         or ``strip'' on the binaries afterwards). Additionally, (and
+         optionally) you may also provide a target `build-debug' in
+         debian/rules which has the same effect as setting BUILD_DEBUG
+         to `yes'. This can be done quite simply, with the folowing
+         lines:
+ build-debug: BUILD_DEBUG=yes
+ build-debug: build
======================================================================

        manoj
-- 
 "Gun control: Hitting what you aim at."  Author Unknown
Manoj Srivastava   <srivasta@debian.org>  <http://www.debian.org/%7Esrivasta/>
Key C7261095 fingerprint = CB D9 F4 12 68 07 E4 05  CC 2D 27 12 1D F5 E8 6E


Reply to: