Bug#43787: [PROPOSAL] changing policy on compiling with -g .. a better way
Hi,
This is the final form (or, at least, I am done with this). I
am forwarding this to bugs.debian.org
manoj
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_OPTIONS, which, if it contains `debug', would cause
+ compilation to be done with -g. (Remember not to call
+ ``install -s'' or strip on the binaries afterwards for this
+ case). The resulting binaries in your built package will then
+ contain the full set of debugging symbols (remember not to call
+ ``install -s'' or ``strip'' on the binaries afterwards).
+
+ This would let us later add other options in a fairly clean way.
+
+ Additionally, (and optionally) you may also provide a target
+ `build-debug' in debian/rules which has the same effect as
+ setting BUILD_OPTIONS to contain `debug'. This can be done
+ quite simply, with the folowing lines:
+ build-debug: BUILD_OPTIONS+=debug
+ build-debug: build
+ Note: You still have to ensure that BUILD_OPTIONS is honoured.
======================================================================
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
+ CFLAGS = -O2 -Wall
+ ifneq (,$(findstring $(BUILD_OPTIONS),DEBUG Debug debug))
+ CFLAGS += -g
+ INSTALL_FLAGS= -s
+ endif
LDFLAGS = # none
- install -s # (or use strip on the files in debian/tmp)
+ install $(INSTALL_FLAGS) #
...
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_OPTIONS, which, if it
+ contains `debug', 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).
+
+ This would let us later add other options in a fairly clean way.
+
+ Additionally, (and optionally) you may also provide a target
+ `build-debug' in debian/rules which has the same effect as
+ setting BUILD_OPTIONS to contain `debug'. This can be done
+ quite simply, with the folowing lines:
+ build-debug: BUILD_OPTIONS+=debug
+ build-debug: build
======================================================================
--
INSIDE, I have the same personality disorder as LUCY RICARDO!!
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: