瀏覽代碼

dpkg (1.4.0) unstable; urgency=low (HIGH for new source format)

  * Corrected buffer overrun when dpkg-deb generates filename.  (Bug#4467.)
  * dpkg-shlibdeps works with DEBIAN/shlibs (thanks Heiko Schlittermann).
  * Added libm.so.5 to shlibs.default for i386/m68k.

  * Split binary package into two: dpkg and dpkg-dev.
  * dpkg-source(1) documents mode and ownership setting during extraction.

  * dpkg-scanpackages moved to /usr/bin.
  * Include /usr/bin/dpkg-deb, not dpkg-deb.dist; don't rename in scripts.
  * Copyright file changed slightly.
  * debian-changelog-mode uses magic key substitution strings.  (Bug#4419.)
  * Changed email address in control file to <ian@chiark.greenend.org.uk>.
  * Manuals and own Standards-Version: updated to 2.1.1.0.

 -- Ian Jackson <ian@chiark.greenend.org.uk>  Thu, 12 Sep 1996 01:13:33 +0100
Ian Jackson 30 年之前
父節點
當前提交
026b9db883

+ 1 - 1
Makefile.in

@@ -22,7 +22,7 @@ prefix = @prefix@
 exec_prefix = $(prefix)
 docdir = $(prefix)/doc
 devdocdir = $(docdir)/dpkg
-copyingfile = $(docdir)/copyright/dpkg
+copyingfile = $(docdir)/dpkg/copyright
 infodir = $(prefix)/info
 bindir = $(exec_prefix)/bin
 sbindir = $(exec_prefix)/sbin

+ 18 - 0
debian/changelog

@@ -1,3 +1,21 @@
+dpkg (1.4.0) unstable; urgency=low (HIGH for new source format)
+
+  * Corrected buffer overrun when dpkg-deb generates filename.  (Bug#4467.)
+  * dpkg-shlibdeps works with DEBIAN/shlibs (thanks Heiko Schlittermann).
+  * Added libm.so.5 to shlibs.default for i386/m68k.
+
+  * Split binary package into two: dpkg and dpkg-dev.
+  * dpkg-source(1) documents mode and ownership setting during extraction.
+
+  * dpkg-scanpackages moved to /usr/bin.
+  * Include /usr/bin/dpkg-deb, not dpkg-deb.dist; don't rename in scripts.
+  * Copyright file changed slightly.
+  * debian-changelog-mode uses magic key substitution strings.  (Bug#4419.)
+  * Changed email address in control file to <ian@chiark.greenend.org.uk>.
+  * Manuals and own Standards-Version: updated to 2.1.1.0.
+
+ -- Ian Jackson <ian@chiark.greenend.org.uk>  Thu, 12 Sep 1996 01:13:33 +0100
+
 dpkg (1.3.14) unstable; urgency=low
 
   * dpkg-buildpackage new -tc (clean source tree) option.

+ 23 - 7
debian/control

@@ -1,16 +1,13 @@
 Source: dpkg
 Section: base
 Priority: required
-Maintainer: Ian Jackson <ian@chiark.chu.cam.ac.uk>
-Standards-Version: 2.0.1.0
+Maintainer: Ian Jackson <ian@chiark.greenend.org.uk>
+Standards-Version: 2.1.0.0
 
 Package: dpkg
 Architecture: any
 Essential: yes
 Pre-Depends: ${shlibs:Pre-Depends}
-Suggests: cpio (>= 2.4.2-2), patch
-Conflicts: dpkgname
-Replaces: dpkgname
 Description: Package maintenance system for Debian Linux
  This package contains the programs which handle the installation and
  removal of packages on your system.
@@ -19,5 +16,24 @@ Description: Package maintenance system for Debian Linux
  a more low-level and less user-friendly interface is available in
  the form of the `dpkg' command.
  .
- In order to manipulate source packages using `dpkg-source' you will
- need to install the `cpio' and `patch' packages.
+ In order to unpack and build Debian source packages you will need to
+ install the developers' package `dpkg-dev' as well as this one.
+
+Package: dpkg-dev
+Section: devel
+Priority: important
+Architecture: all
+Recommends: cpio (>= 2.4.2-2), patch
+Conflicts: dpkgname
+Replaces: dpkgname, dpkg (<< 1.4.0)
+Description: Package building tools for Debian Linux
+ This package contains the tools (including dpkg-source) required to
+ unpack, build and upload Debian source packages.  It also contains
+ the programmers' and Debian policy manuals, which are the
+ documentation for package developers.
+ .
+ `cpio' and `patch' are also required to manipulate source packages.
+ Some older cpios are insufficient - use at least 2.4.2-2.
+ .
+ Most Debian source packages will require additional tools to build -
+ for example, most packages need the `make' and the C compiler `gcc'.

+ 5 - 3
debian/copyright

@@ -1,9 +1,11 @@
 This is Debian Linux's package maintenance system.
 
-For an example of how to construct packages see the `hello' package
-which is part of Debian.
+To build your own packages install the `dpkg-dev' package and read the
+manuals which it installs in /usr/doc/dpkg and look at the `hello'
+example package.
 
-Copyright (C) 1994,1995,1996 Ian Jackson <iwj10@cus.cam.ac.uk>
+
+Copyright (C) 1994,1995,1996 Ian Jackson <ian@chiark.chu.cam.ac.uk>
 Copyright (C) 1995,1996 Erick Branderhorst <branderhorst@heel.fgg.eur.nl>
 Copyright (C) 1996 Miquel van Smoorenburg <miquels@cistron.nl>
 Copyright (C) 1996 Kim-Minh Kaplan <kkaplan@cdfhp3.in2p3.fr>

+ 2 - 0
debian/dev-README

@@ -0,0 +1,2 @@
+All dpkg documentation in /usr/doc, including the developers'
+information which comes in the dpkg-dev package, is in /usr/doc/dpkg.

+ 1 - 3
debian/postinst

@@ -116,9 +116,7 @@ then
 	touch diversions
 fi
 
-cd /usr/bin
-if test dpkg-deb.dist -ef dpkg-deb; then rm dpkg-deb.dist; fi
-if test -f dpkg-deb.dist; then mv dpkg-deb.dist dpkg-deb; fi
+rm -f /usr/bin/dpkg-deb.dist
 
 if test -d /DEBIAN
 then

+ 1 - 2
debian/prerm

@@ -1,9 +1,8 @@
-#!/bin/sh -
+#!/bin/sh
 
 set -e
 
 cd /usr/bin
-test -f dpkg-deb.dist || ln dpkg-deb dpkg-deb.dist
 
 install-info --quiet --remove /usr/info/Guidelines
 install-info --quiet --remove /usr/info/debian-guidelines

+ 54 - 37
debian/rules

@@ -3,7 +3,7 @@
 DIR:=$(shell pwd)
 
 arch=$(shell dpkg --print-architecture)
-cidir=debian/tmp/DEBIAN
+mcidir=debian/tmp-main/DEBIAN
 
 build:
 	$(checkdir)
@@ -21,57 +21,74 @@ clean:
 
 binary:		binary-arch binary-indep
 
-binary-indep:	build
+binary-trees:	checkroot build
 	$(checkdir)
-	set -e -x; cd doc; for f in policy programmer; do \
-		debiandoc2ps -pa4 -O $$f.sgml | gzip -9v >../../$$f.ps.gz; \
-		dpkg-distaddfile -f../debian/files $$f.ps.gz byhand -; \
-		GZIP=-9v tar zcf ../../$$f.html.tar.gz $$f.html; \
-		dpkg-distaddfile -f../debian/files $$f.html.tar.gz byhand -; \
-	done
-
-binary-arch:	checkroot build
-	$(checkdir)
-	-rm -rf debian/tmp
-	install -d debian/tmp debian/tmp/DEBIAN debian/tmp/etc/dpkg
-	install -d debian/tmp/usr/doc/{copyright,dpkg}
+	-rm -rf debian/tmp-{main,dev}
+	install -d debian/tmp-{main,dev}/{DEBIAN,etc/dpkg,usr/doc/dpkg}
+	install -d debian/tmp-dev/usr/{lib/dpkg,doc/dpkg-dev,man/man1,man/man8,sbin,bin}
 	set -e; if [ $(arch) = i386 ]; then \
-		sed -e 's/^# i386elf: //' <debian/preinst >$(cidir)/preinst ; \
+		sed -e 's/^# i386elf: //' <debian/preinst >$(mcidir)/preinst ; \
 	else \
-		sed -e '/^# i386elf: /d' debian/preinst >$(cidir)/preinst ; \
+		sed -e '/^# i386elf: /d' debian/preinst >$(mcidir)/preinst ; \
 	fi
 	set -e; if [ -f debian/shlibs.default.$(arch) ]; then \
-		echo /etc/dpkg/shlibs.default >$(cidir)/conffiles ; \
-		cp debian/shlibs.default.$(arch) debian/tmp/etc/dpkg/shlibs.default ; \
+		echo /etc/dpkg/shlibs.default >debian/tmp-dev/DEBIAN/conffiles ; \
+		cp debian/shlibs.default.$(arch) \
+			debian/tmp-dev/etc/dpkg/shlibs.default ; \
 	fi
-	cp debian/{prerm,postinst} $(cidir)/.
-	chmod +x $(cidir)/{postinst,prerm,preinst}
-	$(MAKE) prefix=$(DIR)/debian/tmp/usr \
-		datadir=$(DIR)/debian/tmp/var/lib/dpkg \
-		etcdir=$(DIR)/debian/tmp/etc \
+	cp debian/{prerm,postinst} $(mcidir)/.
+	chmod +x $(mcidir)/{postinst,prerm,preinst}
+	$(MAKE) prefix=$(DIR)/debian/tmp-main/usr \
+		datadir=$(DIR)/debian/tmp-main/var/lib/dpkg \
+		etcdir=$(DIR)/debian/tmp-main/etc \
 		install
-	find debian/tmp/usr/man -type f | xargs gzip -9v
+	find debian/tmp-main/usr/man -type f | xargs gzip -9v
 	set -e; for f in dpkg-buildpackage dpkg-gencontrol dpkg-distaddfile \
 		  dpkg-parsechangelog dpkg-genchanges dpkg-shlibdeps; do \
-		rm debian/tmp/usr/man/man1/$$f.1; \
-		ln -s dpkg-source.1.gz debian/tmp/usr/man/man1/$$f.1.gz ; \
+		rm debian/tmp-main/usr/man/man1/$$f.1; \
+		ln -s dpkg-source.1.gz debian/tmp-main/usr/man/man1/$$f.1.gz ; \
 	done
-	gzip -9v debian/tmp/usr/doc/dpkg/changelog.*
-	cp debian/copyright debian/tmp/usr/doc/dpkg/copyright
-	cp TODO debian/tmp/usr/doc/dpkg/WISHLIST
-	touch debian/tmp/var/lib/dpkg/{status,available}
+	gzip -9v debian/tmp-main/usr/doc/dpkg/changelog.*
+	cp debian/copyright debian/tmp-main/usr/doc/dpkg/copyright
+	cp debian/copyright debian/tmp-dev/usr/doc/dpkg-dev/copyright
+	cp debian/dev-README debian/tmp-dev/usr/doc/dpkg-dev/README
+	cp TODO debian/tmp-dev/usr/doc/dpkg/WISHLIST
+	set -e; for f in \
+ usr/doc/dpkg/{programmer.html,policy.html,developer-keys.pgp,changelog.manuals.gz} \
+ usr/bin/dpkg-{source,genchanges,gencontrol,shlibdeps,buildpackage,parsechangelog} \
+ usr/bin/{dpkg-distaddfile,822-date,dpkg-scanpackages} \
+ usr/man/man1/dpkg-{source,genchanges,gencontrol,shlibdeps,buildpackage}.1.gz \
+ usr/man/man1/{dpkg-parsechangelog,dpkg-distaddfile,822-date}.1.gz \
+ usr/man/man5 usr/man/man8/dpkg-scanpackages.8.gz usr/lib/emacs \
+ usr/lib/dpkg/parsechangelog usr/lib/dpkg/controllib.pl \
+		; do mv debian/tmp-main/$$f debian/tmp-dev/$$f; done
+
+binary-indep:	checkroot build binary-trees
+	$(checkdir)
+	dpkg-gencontrol -pdpkg-dev -Pdebian/tmp-dev
+	chown -R root.root debian/tmp-dev
+	chmod -R g-ws,a+r,u+w debian/tmp-dev
+	dpkg-deb --build debian/tmp-dev ..
+	set -e -x; cd doc; for f in policy programmer; do \
+		debiandoc2ps -pa4 -O $$f.sgml | gzip -9v >../../$$f.ps.gz; \
+		dpkg-distaddfile -f../debian/files $$f.ps.gz byhand -; \
+		GZIP=-9v tar zcf ../../$$f.html.tar.gz $$f.html; \
+		dpkg-distaddfile -f../debian/files $$f.html.tar.gz byhand -; \
+	done
+
+binary-arch:	checkroot build binary-trees
+	touch debian/tmp-main/var/lib/dpkg/{status,available}
 	dpkg-shlibdeps -dPre-Depends main/dpkg dselect/dselect
-	dpkg-gencontrol
-	chown -R root.root debian/tmp
-	chmod -R g-ws,a+r,u+w debian/tmp
-	set -e; cd debian/tmp; \
+	dpkg-gencontrol -pdpkg -Pdebian/tmp-main
+	chown -R root.root debian/tmp-main
+	chmod -R g-ws,a+r,u+w debian/tmp-main
+	set -e; cd debian/tmp-main; \
 	 version=`sed -n 's/^Version: //p' DEBIAN/control`; \
 	 file=dpkg_$${version}_$(arch).nondebbin.tar; \
 	 tar cf ../../../$${file} usr var && gzip -9vf ../../../$${file}; \
 	 cd ../..; dpkg-distaddfile $${file}.gz byhand -
-	mv debian/tmp/usr/bin/dpkg-deb{,.dist}
-	rm debian/tmp/var/lib/dpkg/{status,available}
-	dpkg-deb --build debian/tmp ..
+	rm debian/tmp-main/var/lib/dpkg/{status,available}
+	dpkg-deb --build debian/tmp-main ..
 
 define checkdir
 	test -f include/dpkg.h

+ 1 - 0
debian/shlibs.default.i386

@@ -1,4 +1,5 @@
 libc 5		libc5 (>= 5.2.18)
+libm 5		libc5 (>= 5.2.18)
 libncurses 3.0	ncurses3.0
 libICE	6	elf-x11r6lib
 libPEX5	6	elf-x11r6lib

+ 16 - 0
doc/changelog

@@ -1,3 +1,19 @@
+debian-manuals (2.1.1.0) unstable;
+
+  * Hard links are forbidden in source packages (they didn't work anyway,
+    and can't easily be made to work reliably).
+  * Do not use dpkg-divert or update-alternatives without consultation.
+
+  * Do not need to declare dependencies on Essential packages.
+  * Restrictions on Pre-Depends stated in policy manual.
+  * debian/substvars file is now almost always auto-generated.
+  * Shared libraries must be installed stripped.
+  * Essential and Pre-Depends put together in policy manual.
+
+  * Explained component-wise (file-wise) vs. package-wise dependencies.
+
+ -- Ian Jackson <ian@chiark.greenend.org.uk>  Thu, 12 Sep 1996 01:00:41 +0100
+
 debian-manuals (2.1.0.0) unstable;
 
   * Upstream changelog must be installed too (was just recommended).

+ 2 - 2
doc/manuals-version

@@ -1,2 +1,2 @@
-<!entity manuals-version "2.1.0.0">
-<!entity dpkg-version "1.3.14">
+<!entity manuals-version "2.1.1.0">
+<!entity dpkg-version "1.4.0">

+ 48 - 16
doc/policy.sgml

@@ -224,11 +224,8 @@ having different forms of their name and address in different
 <p>
 
 Add a dependency for any shared libraries required by
-dynamically-linked executable binaries in your package.  Almost every
-package containing compiled C code should therefore include a
-<tt/Depends/ field which mentions the shared C library required for
-the program to run.  For ELF binaries linked against <tt/libc.so.5/
-the relevant package name is <tt/libc5/.
+dynamically-linked executable binaries in your package, by using
+<prgn/dpkg-shlibdeps/.
 <p>
 
 All packages must use virtual package names where appropriate, and
@@ -333,16 +330,30 @@ installing new packages (perhaps via a network).
 <p>
 
 Most of these packages should have <tt/Priority: required/ or at least
-<tt/Priority: important/.
+<tt/Priority: important/, and many will be essential (see below).
 
-<sect1>The <tt/Essential/ flag
+<sect1><tt/Pre-Depends/ and the <tt/Essential/ flag
 <p>
 
-The <tt/Essential: yes/ control file field should not be used unless
-removing a package really will completely hose the system; nor should
-it be used for a shared library package - the dependencies will
-prevent its premature removal, and we need to be able to remove it
-when it has been superseded.
+Do not use <tt/Pre-Depends/ or <tt/Essential: yes/ unless your package
+is absolutely vital to the functioning of the system and the
+installation of other packages.  Do not do either of these things
+without consultation with the distribution maintainers or on
+<prgn/debian-devel/.
+<p>
+
+Usually, neither of these fields should not be used unless removing a
+package really will completely hose the system, making it impossible
+to recover by (re)installing packages with <prgn/dpkg/.
+<p>
+
+<tt/Essential/ should not be used for a shared library package - the
+dependencies will prevent its premature removal, and we need to be
+able to remove it when it has been superseded.
+<p>
+
+It is not necessary for other packages to declare any dependencies
+they have on other packages which are marked <tt/Essential/.
 
 <sect1>Including <tt/Priority/ and <tt/Section/ in the <tt/.deb/
 control file
@@ -978,6 +989,22 @@ primarily in emacs, it is probably complex enough that speed is an
 issue and should be byte compiled.
 
 
+<sect>Use of <prgn/dpkg-divert/ and <prgn/update-alternatives/
+<p>
+
+Do not use <prgn/dpkg-divert/ on a file belonging to another package
+without consulting the maintainer of that package first.
+<p>
+
+In order for <prgn/update-alternatives/ to work correctly all the
+packages which supply an instance of the `shared' command name (or,
+in general, filename) must use it.  You can use <tt/Conflicts/ to
+force the deinstallation of other packages supplying it which do not
+(yet) use <prgn/update-alternatives/.  It may in this case be
+appropriate to specify a conflict on earlier versions on something -
+this is an exception to the usual rule that this is not allowed.
+
+
 <chapt>Configuring and building the programs in the package
 
 <sect>Compilation options
@@ -992,10 +1019,15 @@ install -s # (or use strip on the files in debian/tmp)
 </example>
 <p>
 
-Note that all installed binaries should be stripped, either by using
-the <tt/-s/ flag to <prgn/install/, or by calling <prgn/strip/ on the
-binaries after they have been copied into <tt>debian/tmp</> but
-before the tree is made into a package.
+Note that all installed binaries and shared libraries should be
+stripped<footnote>Shared libraries can function perfectly well when
+stripped, since the symbols for dynamic linking are in a separate part
+of the ELF object file.</footnote><footnote>Under some circumstances
+it may be useful to install a shared library unstripped, for example
+when building a separate package to support debugging.</footnote>,
+either by using the <tt/-s/ flag to <prgn/install/, or by calling
+<prgn/strip/ on the binaries after they have been copied into
+<tt>debian/tmp</> but before the tree is made into a package.
 <p>
 
 Make sure that you do not link with <tt/-g/, as this makes a.out

+ 20 - 6
doc/programmer.sgml

@@ -1002,11 +1002,13 @@ using the <tt/-V/ option to the source packaging commands, and certain
 predefined variables are available.
 <p>
 
-The file may be a static part of the source archive, or generated and
-modified dynamically by <tt>debian/rules</> targets.  In the latter
-case it must be removed by the <prgn/clean/ target.
+The is usually generated and modified dynamically by
+<tt>debian/rules</> targets; in this case it must be removed by the
+<prgn/clean/ target.
 <p>
 
+
+
 See <manref name=dpkg-source section=1> for full details about source
 variable substitutions, including the format of
 <tt>debian/substvars</>.
@@ -1158,9 +1160,12 @@ using <prgn/dpkg-source/.  In particular, attempting to use
 <sect1>Restrictions on objects in source packages
 <p>
 
-The source package may not contain any device special files, sockets
-or setuid or setgid files.<footnote>Setgid directories are
-allowed.</footnote>
+The source package may not contain any hard links<footnote>This is not
+currently detected when building source packages, but only when
+extracting them.</footnote><footnote>Hard links may be permitted at
+some point in the future, but would require a fair amount of
+work.</footnote>, device special files, sockets or setuid or setgid
+files.<footnote>Setgid directories are allowed.</footnote>
 <p>
 
 The source packaging tools manage the changes between the original and
@@ -2518,6 +2523,15 @@ version clause in the <tt/Pre-Depends/ field.
 
 </taglist>
 
+When selecting which level of dependency to use you should consider
+how important the depended-on package is to the functionality of the
+one declaring the dependency.  Some packages are composed of
+components of varying degrees of importance.  Such a package should
+list using <tt/Depends/ the package(s) which are required by the more
+important components.  The other components' requirements may be
+mentioned as Suggestions or Recommendations, as appropriate to the
+components' relative importance.
+
 <sect1>Dependencies on shared libraries
 <p>
 

+ 2 - 2
dpkg-deb/build.c

@@ -124,9 +124,9 @@ void do_build(const char *const *argv) {
 
     if (subdir) {
       versionstring= versiondescribe(&checkedinfo->available.version,vdew_never);
-      m= m_malloc(strlen(debar)+1+strlen(checkedinfo->name)+1+
-                  strlen(versionstring)+sizeof(DEBEXT));
       arch= checkedinfo->available.architecture; if (!arch) arch= "";
+      m= m_malloc(sizeof(DEBEXT)+1+strlen(debar)+1+strlen(checkedinfo->name)+
+                  strlen(versionstring)+1+strlen(arch));
       sprintf(m,"%s/%s_%s%s%s" DEBEXT,debar,checkedinfo->name,versionstring,
               arch[0] ? "_" : "", arch);
       debar= m;

+ 1 - 1
lib/Makefile.in

@@ -19,7 +19,7 @@ srcdir = @srcdir@
 VPATH = @srcdir@
 
 prefix = @prefix@
-copyingfile = $(prefix)/doc/copyright/dpkg
+copyingfile = $(prefix)/doc/dpkg/copyright
 
 SRC =	ehandle.c mlib.c parse.c parsehelp.c fields.c dump.c nfmalloc.c \
 	varbuf.c database.c myopt.c vercmp.c compat.c lock.c dbmodify.c \

+ 3 - 2
scripts/Makefile.in

@@ -41,11 +41,12 @@ LSMAN = dpkg-source.$(man1)
 LSMANL=	dpkg-gencontrol dpkg-genchanges dpkg-buildpackage \
 	dpkg-distaddfile dpkg-parsechangelog dpkg-shlibdeps
 EXC =   dpkg-name dpkg-source dpkg-genchanges dpkg-gencontrol dpkg-shlibdeps \
-	dpkg-buildpackage dpkg-parsechangelog dpkg-distaddfile 822-date
+	dpkg-buildpackage dpkg-parsechangelog dpkg-distaddfile 822-date \
+	dpkg-scanpackages
 MAN8 =	update-rc.d start-stop-daemon update-alternatives install-info \
 	dpkg-scanpackages
 SBIN =	update-rc.d start-stop-daemon update-alternatives install-info \
-	dpkg-scanpackages dpkg-divert cleanup-info
+	dpkg-divert cleanup-info
 LIB =	controllib.pl
 ELISP =	debian-changelog-mode.el
 CHGLGS=	cl-debian

+ 3 - 3
scripts/debian-changelog-mode.el

@@ -24,11 +24,11 @@
 
 (defvar debian-changelog-urgencies
   '((?l."low") (?m."medium") (?h."HIGH"))
-  "alist of keystrokes vs. urgency values debian-changelog-urgency ^c^u.")
+  "alist of keystrokes vs. urgency values for debian-changelog-urgency \\[debian-changelog-urgency].")
 
 (defvar debian-changelog-distributions
   '((?s."stable") (?u."unstable") (?c."contrib") (?n."non-free") (?e."experimental"))
-  "alist of keystrokes vs. distribution values for debian-changelog-distribution ^c^d.")
+  "alist of keystrokes vs. distribution values for debian-changelog-distribution \\[debian-changelog-distribution].")
 
 (defvar debian-changelog-mode-map nil
   "Keymap for Debian changelog major mode.")
@@ -49,7 +49,7 @@
   "Add a new change entry to a debian-style changelog."
   (interactive)
   (if (eq (debian-changelog-finalised-p) t)
-      (error "most recent version has been finalised - use ^c^e or ^c^v"))
+      (error (substitute-command-keys "most recent version has been finalised - use \\[debian-changelog-unfinalise-last-version] or \\[debian-changelog-add-version]")))
   (goto-char (point-min))
   (re-search-forward "\n --")
   (backward-char 5)

+ 3 - 2
scripts/dpkg-shlibdeps.pl

@@ -105,7 +105,7 @@ while (<P>) {
 }
 close(P); $? && subprocerr("dpkg --search");
 
-for ($i=0;$i<=$#libname;$i++) {
+LIB: for ($i=0;$i<=$#libname;$i++) {
     scanshlibsfile($shlibslocal,$libname[$i],$libsoname[$i],$libf[$i]) && next;
     scanshlibsfile($shlibsoverride,$libname[$i],$libsoname[$i],$libf[$i]) && next;
     if (!defined($pathpackages{$libpath[$i]})) {
@@ -115,7 +115,8 @@ for ($i=0;$i<=$#libname;$i++) {
         @packages= split(/, /,$pathpackages{$libpath[$i]});
         for $p (@packages) {
             scanshlibsfile("$shlibsppdir/$p$shlibsppext",
-                           $libname[$i],$libsoname[$i],$libf[$i]) && next;
+                           $libname[$i],$libsoname[$i],$libf[$i])
+                && next LIB;
         }
     }
     scanshlibsfile($shlibsdefault,$libname[$i],$libsoname[$i],$libf[$i]) && next;

+ 8 - 0
scripts/dpkg-source.1

@@ -241,6 +241,14 @@ will read the names of the other file(s) making up the source package
 from the control file; they are assumed to be in the same directory as
 the
 .BR .dsc .
+
+The files in the extracted package will have their permissions and
+ownerships set to those which would have been expected if the files
+and directories had simply been created - directories and executable
+files will be 0777 and plain files will be 0666, both modified by the
+extractors' umask; if the parent directory is setgid then the
+extracted directories will be too, and all the files and directories
+will inherit its group ownership.
 .TP
 .B -b
 Build: pack up a source tree.  One or two non-option arguments should

+ 1 - 1
version.h

@@ -1 +1 @@
-#define DPKG_VERSION "1.3.14" /* This line modified by Makefile */
+#define DPKG_VERSION "1.4.0" /* This line modified by Makefile */