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: