Your message dated Tue, 9 Mar 2010 17:04:24 +0100
with message-id <20100309160424.ga15...@rivendell>
and subject line Re: Bug#573170: dpkg-dev: dpkg-source -
debian/patches/debian-changes-* is built too early (format quilt 3.0)
has caused the Debian Bug report #573170,
regarding dpkg-dev: dpkg-source - debian/patches/debian-changes-* is built too
early (format quilt 3.0)
to be marked as done.
This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.
(NB: If you are a system administrator and have no idea what this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact [email protected]
immediately.)
--
573170: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=573170
Debian Bug Tracking System
Contact [email protected] with problems
--- Begin Message ---
Package: dpkg-dev
Version: 1.15.5.6
Severity: normal
TEST CASE
1. Upstream sources includes files that should not be there. Like
backup *~ files
2. In debian/rules, the dh_clean would remove these *~ files,
but then the version control (git) wouldn't be happy as these
are part of the original sources.
Solution:the files are temporarily moved under other name so that
they can be restores:
*~ => *~.original
3. Unfortunately dpkg-source thinks that there are now local changes
and before debian/rules::build is run, it concludes
dpkg-source: info: local changes stored in
ccbuild.git/debian/patches/debian-changes-1.5.7-2, the modified files are:
ccbuild.git/src/MD5Info/MD5Hash/GCrypt/GCrypt.cc~.original
ccbuild.git/src/MD5Info/MD5Hash/GCrypt/GCrypt.hh~.original
ccbuild.git/src/SourceScanner/yylex.cc
ccbuild.git/src/ccbuild.cc~.original
But we wouldn't want these recorded.
SUGGESTION
The generating of debian/patches/debian-changes* should happen as late
as possible. Now it's too early. Best, if this could be done, say, in
debian/rules::binary-arch somewhere (dh_builddeb?).
This would give a chnage to modify the sources, and restore them prior
building the *.deb and associated *.diff.
Attached are the debian/rules for inspection and the
build.log. Basicly the SAVE and RESTORE here don't work as intended
with "format quilt 3.0" as outline above.
override_dh_auto_clean:
$(file-state-save)
dh_auto_clean
...
binary-arch: install
# target: binary-arch - Build architecture-dependent files
$(file-state-restore)
-----------------------------------------------------------------------
# debian/rules
#!/usr/bin/make -f
#export DH_VERBOSE=1
include debian/debian-save-restore.mk
# Inclued in original sources,; dh(1) would delete these.
FILE_LIST_PRESERVE = \
src/MD5Info/MD5Hash/GCrypt/GCrypt.cc~ \
src/MD5Info/MD5Hash/GCrypt/GCrypt.hh~ \
src/ccbuild.cc~
define file-state-save
# save files
suffix=.original; \
for file in $(FILE_LIST_PRESERVE); \
do \
if [ -f "$$file" ] && [ ! -f "$$file$$suffix" ]; then \
cp --verbose "$$file" "$$file$$suffix"; \
fi; \
done
endef
define file-state-restore
# restore files
suffix=.original; \
for file in $(FILE_LIST_PRESERVE); \
do \
if [ -f "$$file$$suffix" ]; then \
mv --verbose "$$file$$suffix" "$$file"; \
fi; \
done
endef
# Check what is happening in patches directory
override_dh_auto_configure:
ls -la ebian/patches/*
dh_auto_configure
override_dh_auto_clean:
$(file-state-save)
dh_auto_clean
install: build
# target: install
dh_testdir
dh_prep
dh_installdirs
$(MAKE) DESTDIR=$(CURDIR)/debian/ccbuild install
binary-arch: install
# target: binary-arch - Build architecture-dependent files
$(file-state-restore)
dh_testdir
dh_testroot
dh_installchangelogs ChangeLog
dh_installdocs
dh_installman
dh_strip
dh_compress
dh_fixperms
dh_installdeb
dh_shlibdeps
dh_gencontrol
dh_md5sums
dh_builddeb
binary: binary-arch
%:
dh $@
.PHONY: install binary-arch binary
-----------------------------------------------------------------------
build.log (relevant parts, see "!!")
$ dpkg-buildpackage -rfakeroot -D -us -uc -i.pc -iconfig.status
-ibackup.bzr -i.git -i -I.svn -I.bzr -Ibackup.bzr -I.bzr.bac\
kup -I.hg -I.git -I_MTN -I.darcs -ICVS -IRCS
dpkg-buildpackage: warning: using a gain-root-command while being root
dpkg-buildpackage: set CFLAGS to default value: -g -O2
dpkg-buildpackage: set CPPFLAGS to default value:
dpkg-buildpackage: set LDFLAGS to default value:
dpkg-buildpackage: set FFLAGS to default value: -g -O2
dpkg-buildpackage: set CXXFLAGS to default value: -g -O2
dpkg-buildpackage: source package ccbuild
dpkg-buildpackage: source version 1.5.7-2
dpkg-buildpackage: source changed by Jari Aalto <[email protected]>
dpkg-buildpackage: host architecture amd64
fakeroot debian/rules clean
make[1]: Entering directory `/srv/deb/debian/ccbuild/ccbuild.git'
dh clean
dh_testdir
debian/rules override_dh_auto_clean
make[2]: Entering directory `/srv/deb/debian/ccbuild/ccbuild.git'
!! # save files
suffix=.original; for file in src/MD5Info/MD5Hash/GCrypt/GCrypt.cc~
src/MD5Info/MD5Hash/GCrypt/GCrypt.hh~ src/ccbuild.cc~; \
do if [ -f "$file" ] && [ ! -f "$file$suffix" ]; then cp --verbose "$file"
"$file$suffix"; fi; done
`src/MD5Info/MD5Hash/GCrypt/GCrypt.cc~' ->
`src/MD5Info/MD5Hash/GCrypt/GCrypt.cc~.original'
`src/MD5Info/MD5Hash/GCrypt/GCrypt.hh~' ->
`src/MD5Info/MD5Hash/GCrypt/GCrypt.hh~.original'
`src/ccbuild.cc~' -> `src/ccbuild.cc~.original'
dh_auto_clean
make[3]: Entering directory `/srv/deb/debian/ccbuild/ccbuild.git'
test -z "ccbuild" || rm -f ccbuild
[...clip...]
make[2]: Leaving directory `/srv/deb/debian/ccbuild/ccbuild.git'
dh_clean
make[1]: Leaving directory `/srv/deb/debian/ccbuild/ccbuild.git'
dpkg-source -i -I.svn -I.bzr -Ibackup.bzr -I.bzr.backup -I.hg -I.git
-I_MTN -I.darcs -ICVS -IRCS -b ccbuild.git
dpkg-source: info: using source format `3.0 (quilt)'
dpkg-source: info: building ccbuild using existing
./ccbuild_1.5.7.orig.tar.gz
!! dpkg-source: info: local changes stored in
ccbuild.git/debian/patches/debian-changes-1.5.7-2, the modified files are:
ccbuild.git/src/MD5Info/MD5Hash/GCrypt/GCrypt.cc~.original
ccbuild.git/src/MD5Info/MD5Hash/GCrypt/GCrypt.hh~.original
ccbuild.git/src/SourceScanner/yylex.cc
ccbuild.git/src/ccbuild.cc~.original
dpkg-source: info: building ccbuild in ccbuild_1.5.7-2.debian.tar.gz
dpkg-source: info: building ccbuild in ccbuild_1.5.7-2.dsc
debian/rules build
make[1]: Entering directory `/srv/deb/debian/ccbuild/ccbuild.git'
dh build
dh_testdir
debian/rules override_dh_auto_configure
make[2]: Entering directory `/srv/deb/debian/ccbuild/ccbuild.git'
ls -la debian/patches/*
-rw-r--r-- 1 root root 5340 Jan 6 15:40
debian/patches/10-ccbuild.1-fix-spelling.patch
-rw-r--r-- 1 root src 71783 Mar 9 16:10
debian/patches/debian-changes-1.5.7-2
-rw-r--r-- 1 root root 55 Mar 9 16:10 debian/patches/series
dh_auto_configure
[...clip...]
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... /bin/mkdir -p
checking for gawk... awk
checking whether make sets $(MAKE)... yes
[...clip...]
config.status: executing depfiles commands
dh_auto_build
make[2]: Entering directory `/srv/deb/debian/ccbuild/ccbuild.git'
g++ -DPACKAGE_NAME=\"ccbuild\" -DPACKAGE_TARNAME=...
[...clip...]
make[2]: Leaving directory `/srv/deb/debian/ccbuild/ccbuild.git'
dh_auto_test
make[1]: Leaving directory `/srv/deb/debian/ccbuild/ccbuild.git'
fakeroot debian/rules binary
make[1]: Entering directory `/srv/deb/debian/ccbuild/ccbuild.git'
dh build
# target: install
dh_testdir
dh_prep
dh_installdirs
/usr/bin/make DESTDIR=/srv/deb/debian/ccbuild/ccbuild.git/debian/ccbuild
install
make[2]: Entering directory `/srv/deb/debian/ccbuild/ccbuild.git'
make[3]: Entering directory `/srv/deb/debian/ccbuild/ccbuild.git'
test -z "/usr/bin" || /bin/mkdir -p
"/srv/deb/debian/ccbuild/ccbuild.git/debian/ccbuild/usr/bin"
/usr/bin/install -c 'ccbuild'
'/srv/deb/debian/ccbuild/ccbuild.git/debian/ccbuild/usr/bin/ccbuild'
make[3]: Nothing to be done for `install-data-am'.
make[3]: Leaving directory `/srv/deb/debian/ccbuild/ccbuild.git'
make[2]: Leaving directory `/srv/deb/debian/ccbuild/ccbuild.git'
# target: binary-arch - Build architecture-dependent files
!! # restore files
suffix=.original; for file in src/MD5Info/MD5Hash/GCrypt/GCrypt.cc~
src/MD5Info/MD5Hash/GCrypt/GCrypt.hh~ src/ccbuild.cc~; \
do if [ -f "$file$suffix" ]; then mv --verbose "$file$suffix" "$file"; fi;
done
`src/MD5Info/MD5Hash/GCrypt/GCrypt.cc~.original' ->
`src/MD5Info/MD5Hash/GCrypt/GCrypt.cc~'
`src/MD5Info/MD5Hash/GCrypt/GCrypt.hh~.original' ->
`src/MD5Info/MD5Hash/GCrypt/GCrypt.hh~'
`src/ccbuild.cc~.original' -> `src/ccbuild.cc~'
dh_testdir
dh_testroot
dh_installchangelogs ChangeLog
dh_installdocs
dh_installman
dh_strip
dh_compress
dh_fixperms
dh_installdeb
dh_shlibdeps
dh_gencontrol
dh_md5sums
dh_builddeb
dpkg-deb: building package `ccbuild' in `../ccbuild_1.5.7-2_amd64.deb'.
[...clip...]
-- System Information:
Debian Release: squeeze/sid
APT prefers testing
APT policy: (990, 'testing'), (500, 'unstable'), (1, 'experimental')
Architecture: amd64 (x86_64)
Kernel: Linux 2.6.32-trunk-amd64 (SMP w/2 CPU cores)
Locale: LANG=en_DK.UTF-8, LC_CTYPE=en_DK.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
Versions of packages dpkg-dev depends on:
ii base-files 5.1 Debian base system miscellaneous f
ii binutils 2.20-6 The GNU assembler, linker and bina
ii bzip2 1.0.5-4 high-quality block-sorting file co
ii dpkg 1.15.5.6 Debian package management system
ii libtimedate-perl 1.2000-1 collection of modules to manipulat
ii lzma 4.43-14 Compression method of 7z format in
ii make 3.81-7 An utility for Directing compilati
ii patch 2.6-2 Apply a diff file to an original
ii perl [perl5] 5.10.1-11 Larry Wall's Practical Extraction
ii perl-modules 5.10.1-11 Core Perl modules
ii xz-utils 4.999.9beta+20091116-1 XZ-format compression utilities
Versions of packages dpkg-dev recommends:
ii build-essential 11.4 Informational list of build-essent
ii fakeroot 1.14.4-1 Gives a fake root environment
ii gcc [c-compiler] 4:4.4.2-3 The GNU C compiler
ii gcc-4.1 [c-compiler] 4.1.2-27 The GNU C compiler
ii gcc-4.3 [c-compiler] 4.3.4-6 The GNU C compiler
ii gcc-4.4 [c-compiler] 4.4.2-9 The GNU C compiler
ii gnupg 1.4.10-2 GNU privacy guard - a free PGP rep
ii gpgv 1.4.10-2 GNU privacy guard - signature veri
Versions of packages dpkg-dev suggests:
ii debian-keyring [debian-mainta 2009.11.04 GnuPG (and obsolete PGP) keys of D
-- no debconf information
--- End Message ---
--- Begin Message ---
Hi,
On Tue, 09 Mar 2010, jari wrote:
> Attached are the debian/rules for inspection and the
> build.log. Basicly the SAVE and RESTORE here don't work as intended
> with "format quilt 3.0" as outline above.
Your logic is flawed:
- clean should restore the initial state
- build should backup the files and modify them prior to the build
Hence closing the bug. Another approach that will be possible with the
next dpkg version is to use debian/source/options to extend
the default -i regex to exclude those files.
Cheers,
--
Raphaƫl Hertzog
Like what I do? Sponsor me: http://ouaza.com/wp/2010/01/05/5-years-of-freexian/
My Debian goals: http://ouaza.com/wp/2010/01/09/debian-related-goals-for-2010/
--- End Message ---