On Wed, Jun 20, 2007 at 05:26:20AM +0900, Junichi Uekawa wrote:
> Hi,
> 
> > Looking at the code, I'm a bit confused.
> > It looks like this:
> > 
> > patch: patch-stamp (well,  ${DPATCH_STAMPFN})
> > patch-stamp:
> >     XX
> >     XX
> > 
> > 
> > So, if patch is .PHONY, patch-stamp is a real file, depending on
> > 'patch' should do the right thing (only be invoked if patch-stamp does
> > not exist), and depending on patch-stamp shouldn't be necessary.
> > At least, this is the intention.
> > 
> > Could you give me a testcase / log ?
> 
> So, after a face-to-face discussion, it seems like the problem was 
> dpatch.make did not set 'patch', and 'unpatch' as .PHONY.

Actually not, it seems I must have had the stamp file dependancy still
in place when testing the .PHONY way, as it doesn't work when I test it
now.

Here's a relatively stripped-down version of the makefile I'm having
problems with.

To reproduce, just create an empty configure.ac in the same directory,
and try "make -f rules build" twice.

Then swap the comment between the following lines:

#config.status: patch-stamp configure.ac
config.status: patch configure.ac

do a "make -f rules clean" and retry "build" twice again.

-- 
Marcin Owsiany <[EMAIL PROTECTED]>             http://marcin.owsiany.pl/
GnuPG: 1024D/60F41216  FE67 DA2D 0ACA FC5E 3F75  D6F6 3A0D 8AA0 60F4 1216
#!/usr/bin/make -f
# Sample debian/rules that uses debhelper.
# GNU copyright 1997 to 1999 by Joey Hess.
# Adapted for ekg2 package by Marcin Owsiany.
# GNU copyright 2002-2006

#export DH_VERBOSE=1

# Help cross-compiling
DEB_HOST_GNU_TYPE   ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE)
DEB_BUILD_GNU_TYPE  ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE)

# This is to ease debugging, until ekg2 stabilizes
DEB_BUILD_OPTIONS=nostrip
export DEB_BUILD_OPTIONS

CFLAGS += -g
ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS)))
        CFLAGS += -O0
else
        CFLAGS += -O2
endif
export CFLAGS

# dh_strip will take care of nostrip

AUTOMAKE = automake-1.9
ACLOCAL  = aclocal-1.9
export AUTOMAKE ACLOCAL

include /usr/share/dpatch/dpatch.make
.PHONY: patch

#config.status: patch-stamp configure.ac
config.status: patch configure.ac
        @echo autogen
        touch config.status

build: build-stamp
build-stamp:  config.status
        @echo make
        touch build-stamp

clean: clean-patched unpatch

clean-patched:
        rm -f build-stamp 
        rm -f config.status
        @echo make clean

install: build
        @echo make install

binary-indep: build install
# We have nothing to do.

binary-arch: build install
        @echo build deb

binary: binary-indep binary-arch
.PHONY: build clean binary-indep binary-arch binary install 

Reply via email to