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

Re: Building a clean debian perl package



On Sat, Jan 26, 2008 at 12:16:56AM +0200, Damyan Ivanov wrote:
> -=| Bob Wilkinson, Fri, Jan 25, 2008 at 09:43:02PM +0000 |=-
> >      I am trying to build a new debian package of my CPAN module. I
> >      get errors when building and it it not linda-clean.
> > 
> > b@italy:~/src/gramofile/Audio/Gramofile$ fakeroot debian/rules binary
> > dh_testdir
> [...]
> > dh_gencontrol
> > dpkg-gencontrol: warning: unknown substitution variable ${perl:Depends}
> [...]
> > bob@italy:~/src/gramofile/Audio/Gramofile$ grep Depends debian/*
> > debian/control:Build-Depends: debhelper (>= 4.0.2), perl (>= 5.8.0-7)
> > debian/control:Depends: ${perl:Depends}, ${shlibs:Depends}
> > debian/libaudio-gramofile-perl.substvars:shlibs:Depends=libgramofile1, libc6 (>= 2.7-1)
> > bob@italy:~/src/gramofile/Audio/Gramofile$ linda ../libaudio-gramofile-perl_0.07-1_i386.deb
> > W: libaudio-gramofile-perl; Module package has no dependancy on perl or perl-base.
> > 
> >      Please could someone point out the mistake I am making?
> 
> If you put the debian/rules file somewhere so that we can take a look at
> it... it would be much easier :)
> 
> Perhaps the install target is not working properly so the resulting
> package is mostly empty and dh_perl does not detect any need to add
> dependency on perl. I speculate here, please show ys debian/rules :)

Hello

     Here is the debian/rules file (less than 100 lines - thought
     better to inline it).

bob@italy:~/src/gramofile/Audio/Gramofile$ cat debian/rules 
#!/usr/bin/make -f
# This debian/rules file is provided as a template for normal perl
# packages. It was created by Marc Brockschmidt <marc@dch-faq.de> for
# the Debian Perl Group (http://pkg-perl.alioth.debian.org/) but may
# be used freely wherever it is useful.

# Uncomment this to turn on verbose mode.
#export DH_VERBOSE=1

# If set to a true value then MakeMaker's prompt function will
# always return the default without waiting for user input.
export PERL_MM_USE_DEFAULT=1

PACKAGE=$(shell dh_listpackages)

ifndef PERL
PERL = /usr/bin/perl
endif

TMP     =$(CURDIR)/debian/$(PACKAGE)

# Allow disabling build optimation by setting noopt in
# $DEB_BUILD_OPTIONS
CFLAGS = -Wall -g
ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS)))
        CFLAGS += -O0
else
        CFLAGS += -O2
endif

build: build-stamp
build-stamp:
        dh_testdir

        # Add commands to compile the package here
        $(PERL) Makefile.PL INSTALLDIRS=vendor
        $(MAKE) OPTIMIZE="$(CFLAGS)" LD_RUN_PATH=""

        touch build-stamp

clean:
        dh_testdir
        dh_testroot

        # Add commands to clean up after the build process here
        [ ! -f Makefile ] || $(MAKE) realclean

        dh_clean build-stamp install-stamp

install: build install-stamp
install-stamp:
        dh_testdir
        dh_testroot
        dh_clean -k

        # Add commands to install the package into debian/$PACKAGE_NAME here
        $(MAKE) test
        $(MAKE) install DESTDIR=$(TMP) PREFIX=/usr

        # As this is a architecture dependent package, we are not
        # supposed to install stuff to /usr/share. MakeMaker creates
        # the dirs, we delete them from the deb:
        rmdir --ignore-fail-on-non-empty --parents $(TMP)/usr/share/perl5

        touch install-stamp

# Build architecture-independent files here.
binary-indep: build install
# We have nothing to do by default.

# Build architecture-dependent files here.
binary-arch: build install
        dh_testdir
        dh_testroot
        dh_installdocs README
        dh_installexamples 
#       dh_installmenu
#       dh_installcron
#       dh_installman
        dh_installchangelogs Changes
        dh_link
        dh_strip
        dh_compress
        dh_fixperms
        dh_makeshlibs
        dh_installdeb
        dh_perl 
        dh_shlibdeps
        dh_gencontrol
        dh_md5sums
        dh_builddeb

source diff:                                                                  
        @echo >&2 'source and diff are obsolete - use dpkg-source -b'; false

binary: binary-indep binary-arch
.PHONY: build clean binary-indep binary-arch binary
bob@italy:~/src/gramofile/Audio/Gramofile$ 

> BTW, the easiest way to start a perl module's Debian packaging is to use
> dh-make-perl[1]
> 
>     [1] http://packages.debian.org/dh-make-perl

Just downloaded this and tried... After warnings about missing copyright, I thought 
I may as well try to build, and saw.

bob@italy:~/src/gramofile/Audio/Gramofile$ fakeroot !!
fakeroot debian/rules binary
dh_testdir
dh_testroot
dh_installexamples 
dh_installdocs README debian.old/libaudio-gramofile-perl/usr/share/doc/libaudio-gramofile-perl/README
dh_installchangelogs Changes
dh_shlibdeps
dh_strip
dh_perl
dh_compress
dh_fixperms
dh_installdeb
dh_gencontrol
dpkg-gencontrol: warning: unknown substitution variable ${perl:Depends}
dpkg-gencontrol: warning: unknown substitution variable ${shlibs:Depends}
dpkg-gencontrol: warning: unknown substitution variable ${misc:Depends}
dh_md5sums
dh_builddeb
dpkg-deb: building package `libaudio-gramofile-perl' in `../libaudio-gramofile-perl_0.06-1_i386.deb'.
bob@italy:~/src/gramofile/Audio/Gramofile$ 

> -- 
> dam            JabberID: dam@jabber.minus273.org

Bob


Reply to: