[cubicweb-ctl] respect sys.exit status code when aborting a command
When exploring the stack of all calls to a cubicweb-ctl command, it has been
discovered than on a KeyboardInterrupt and on a SystemExit exception the base
class InstanceCommand (for commands that works on one instance) will always set
the return code of cubicweb-ctl to 8: this mean that if another command do a
`sys.exit(some_code)` the exit code will be ignored and overwritten by '8'.
This behavior is not intuitive, apparently not documented and doesn't seems to
have any justification. It also prevent commands from exciting with different
return codes which could be a desired behavior in the situation of scripting.
#!/usr/bin/make -f
# Sample debian/rules that uses debhelper.
# GNU copyright 1997 to 1999 by Joey Hess.
# Uncomment this to turn on verbose mode.
# export DH_VERBOSE=1
export PYBUILD_NAME=cubicweb
export PYBUILD_DISABLE_python3=test
%:
dh $@ --with python3,sphinxdoc --buildsystem=pybuild
override_dh_auto_build: export http_proxy=127.0.0.1:9
override_dh_auto_build: export https_proxy=127.0.0.1:9
override_dh_auto_build:
dh_auto_build
ifeq (,$(findstring nodocs, $(DEB_BUILD_OPTIONS)))
PYTHONPATH=. sphinx-build -N -bhtml doc/ debian/cubicweb-doc/html
endif
override_dh_auto_install:
dh_auto_install
mv debian/python3-${PYBUILD_NAME}/usr/bin/cubicweb-ctl \
debian/cubicweb-ctl/usr/bin/cubicweb-ctl
override_dh_installchangelogs:
dh_installchangelogs -Xdoc/changes
# Should extra sections in requires.txt go to Recommends, Suggests or be
# ignored?
#
# All sections must be listed so we don't forget any in cases of future
# changes.
RECOMMENDS_SECTIONS = ext crypto ical pyramid rdf
SUGGESTS_SECTIONS = captcha zmq
# sparql currently requires fyzz which is not compatible with Python 3
IGNORED_SECTIONS = sparql
override_dh_python3:
@set -e && trap 'rm -f requires-sections debian-sections' EXIT && \
sed -n -e 's/\[\(.*\)\]/\1/p' cubicweb.egg-info/requires.txt | sort > requires-sections && \
printf "%s\n" $(RECOMMENDS_SECTIONS) $(SUGGESTS_SECTIONS) $(IGNORED_SECTIONS) | sort > debian-sections && \
FORGOTTEN_SECTIONS=$$(comm -23 requires-sections debian-sections) && \
if [ "$$FORGOTTEN_SECTIONS" ]; then \
echo "The following sections are not listed in debian/rules:" && \
echo "$$FORGOTTEN_SECTIONS" && \
echo "Please add them in either RECOMMENDS_SECTIONS, SUGGESTS_SECTIONS or IGNORED_SECTIONS" && \
exit 1; \
fi
dh_python3 \
$(foreach section,$(RECOMMENDS_SECTIONS),--recommends-section=$(section)) \
$(foreach section,$(SUGGESTS_SECTIONS),--suggests-section=$(section))