The problem can be reproduced by 'debuild binary-arch' with cli-common-dev package uninstalled.
The proper fix (building arch-dependent packages only when requested),
requires complicated debian/rules (attached) with many conditionals.
This complicated script is hard to read, so I'll just move mono
dependencies to Build-Depends.
It looks like there is another way [1] to solve the bug, which utilizes
dh_listpackages:
===========================8<===================================
ifeq ($(shell dh_listpackages | grep -q cil && echo yes),yes)
DHWITH = --with cli
endif
%:
dh $@ $(DHWITH)
===========================>8===================================
But in reality it doesn't work: when running 'debuild binary-arch' the
dh_listpackages prints all packages, including ones with
'Architecture: all'.
[1] http://mail-archive.com/[email protected]/msg00103.html
24.04.2012 7:55, Aaron M. Ucko wrote:
> Source: rhash
> Version: 1.2.9-1
> Severity: serious
> Justification: fails to build from source (but built successfully in the past)
>
> Builds of rhash in minimal environments covering only its
> architecture-dependent packages (with Build-Depends but not
> necessarily Build-Depends-Indep available) are failing:
>
> fakeroot debian/rules clean
> dh clean --with=python2 --with=cli
> dh: unable to load addon cli: Can't locate Debian/Debhelper/Sequence/cli.pm
> in @INC (@INC contains: /etc/perl /usr/local/lib/perl/5.14.2
> /usr/local/share/perl/5.14.2 /usr/lib/perl5 /usr/share/perl5
> /usr/lib/perl/5.14 /usr/share/perl/5.14 /usr/local/lib/site_perl .) at (eval
> 4) line 2.
> BEGIN failed--compilation aborted at (eval 4) line 2.
>
> make: *** [clean] Error 2
>
> Please either move cli-common-dev to Build-Depends or arrange to pass
> --with=cli only when it is actually safe to do so.
>
> Thanks!
#!/usr/bin/make -f
# debian/rules makefile that uses debhelper.
#
# Uncomment this to turn on verbose mode.
#export DH_VERBOSE=1
INSTALL_PROGRAM = install -p -m 755
CFLAGS = -Wall -DUSE_GETTEXT
LIBCFLAGS =
LIBLDFLAGS =
DESTDIR = $(CURDIR)/debian/tmp
LIBRHASH_INC=-I$(DESTDIR)
LIBRHASH_LD=-Wl,--as-needed -L$(DESTDIR)
JAVADOC_API_URL=/usr/share/doc/default-jdk-doc/api
# see Debian Policy Manual - source packages
ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS)))
CFLAGS += -O0 -DNDEBUG
else
CFLAGS += -O2 -DNDEBUG -fomit-frame-pointer
endif
ifneq (,$(findstring debug,$(DEB_BUILD_OPTIONS)))
CFLAGS += -g
endif
ifneq (,$(findstring nostrip,$(DEB_BUILD_OPTIONS)))
INSTALL_PROGRAM += -s
endif
ifneq (,$(filter parallel=%,$(DEB_BUILD_OPTIONS)))
NUMJOBS = $(patsubst parallel=%,%,$(filter
parallel=%,$(DEB_BUILD_OPTIONS)))
MAKEFLAGS += -j$(NUMJOBS)
endif
# by default compile RHash with openssl runtime linking
ifeq (,$(findstring nossl,$(DEB_BUILD_OPTIONS)))
LIBCFLAGS += -DUSE_OPENSSL
ifneq (,$(findstring ssldynamic,$(DEB_BUILD_OPTIONS)))
LIBLDFLAGS += -lcrypto
else
LIBCFLAGS += -DOPENSSL_RUNTIME -rdynamic
LIBLDFLAGS += -ldl
endif
endif
# using debhelper >= 8 to build the package
# we use this intricate logic to allow 'debuild binary-indep' without mono
packages installed
build:
BUILDARCH=all dh $@ --with=python2 --with=cli
binary:
BUILDARCH=all dh $@ --with=python2 --with=cli
binary-arch:
BUILDARCH=arch dh $@
# only arch-independent packages really need python2 and cli
binary-indep:
BUILDARCH=indep dh $@ --with=python2 --with=cli
%:
BUILDARCH=indep dh $@
# bindings to provide
ifeq ($(BUILDARCH),all)
BINDINGS = java mono perl python ruby
else ifeq ($(BUILDARCH),arch)
BINDINGS = java perl ruby
else
BINDINGS = java mono python
endif
ifneq ($(LD_LIBRARY_PATH),"")
LD_LIB=$(DESTDIR):$(LD_LIBRARY_PATH)
else
LD_LIB=$(DESTDIR)
endif
override_dh_auto_build:
# Compile the package.
$(MAKE) lib-static lib-shared LIBCFLAGS="$(CFLAGS) $(LIBCFLAGS)"
LIBLDFLAGS="$(LIBLDFLAGS)"
ifneq ($(BUILDARCH),indep)
$(MAKE) rhash-shared CFLAGS="$(CFLAGS)" SHARED_TRG=rhash
endif
# prepare local librhash include/lib directories
mkdir -p $(DESTDIR) && ln -fs $(CURDIR)/librhash $(DESTDIR)/rhash
ln -fs $(CURDIR)/librhash/librhash.so.0 $(DESTDIR)/ && ln -fs
$(DESTDIR)/librhash.so.0 $(DESTDIR)/librhash.so
# Compile language bindings.
$(MAKE) -C bindings configure build
JAVADOC_API_URL="$(JAVADOC_API_URL)" \
LIBRHASH_INC="$(LIBRHASH_INC)" LIBRHASH_LD="$(LIBRHASH_LD)"
BINDINGS="$(BINDINGS)"
ifneq ($(BUILDARCH),indep)
chrpath -d bindings/perl/blib/arch/auto/Rhash/Rhash.so
endif
override_dh_auto_test:
ifneq ($(BUILDARCH),indep)
$(MAKE) test-lib test-shared CFLAGS="$(CFLAGS)" \
LIBLDFLAGS="$(LIBLDFLAGS)" SHARED_TRG=rhash
endif
$(MAKE) -C bindings test LD_LIBRARY_PATH=$(LD_LIB)
BINDINGS="$(BINDINGS)"
override_dh_auto_install:
ifneq ($(BUILDARCH),indep)
# Install the program and its translation strings
$(MAKE) PREFIX=/usr DESTDIR=$(CURDIR)/debian/rhash
INSTALL_PROGRAM="$(INSTALL_PROGRAM)" install install-gmo
# Install static library
$(MAKE) PREFIX=/usr DESTDIR=$(CURDIR)/debian/librhash-dev
install-lib-static
# Install shared library
$(MAKE) PREFIX=/usr DESTDIR=$(CURDIR)/debian/librhash0
install-lib-shared
endif
# Install language bindings
$(MAKE) -C bindings install DESTDIR=$(DESTDIR) PREFIX=/usr
sitedir=$(DESTDIR)/usr/lib/ruby BINDINGS="$(BINDINGS)"
override_dh_strip:
dh_strip -plibrhash0 --dbg-package=librhash0-dbg
dh_strip
override_dh_auto_clean:
$(MAKE) distclean
$(MAKE) -C bindings distclean
signature.asc
Description: OpenPGP digital signature

