소스 검색

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
20개의 변경된 파일213개의 추가작업 그리고 88개의 파일을 삭제
  1. 1 1
      Makefile.in
  2. 18 0
      debian/changelog
  3. 23 7
      debian/control
  4. 5 3
      debian/copyright
  5. 2 0
      debian/dev-README
  6. 1 3
      debian/postinst
  7. 1 2
      debian/prerm
  8. 54 37
      debian/rules
  9. 1 0
      debian/shlibs.default.i386
  10. 16 0
      doc/changelog
  11. 2 2
      doc/manuals-version
  12. 48 16
      doc/policy.sgml
  13. 20 6
      doc/programmer.sgml
  14. 2 2
      dpkg-deb/build.c
  15. 1 1
      lib/Makefile.in
  16. 3 2
      scripts/Makefile.in
  17. 3 3
      scripts/debian-changelog-mode.el
  18. 3 2
      scripts/dpkg-shlibdeps.pl
  19. 8 0
      scripts/dpkg-source.1
  20. 1 1
      version.h

+ 1 - 1
Makefile.in

@@ -22,7 +22,7 @@ prefix = @prefix@
 exec_prefix = $(prefix)
 exec_prefix = $(prefix)
 docdir = $(prefix)/doc
 docdir = $(prefix)/doc
 devdocdir = $(docdir)/dpkg
 devdocdir = $(docdir)/dpkg
-copyingfile = $(docdir)/copyright/dpkg
+copyingfile = $(docdir)/dpkg/copyright
 infodir = $(prefix)/info
 infodir = $(prefix)/info
 bindir = $(exec_prefix)/bin
 bindir = $(exec_prefix)/bin
 sbindir = $(exec_prefix)/sbin
 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 (1.3.14) unstable; urgency=low
 
 
   * dpkg-buildpackage new -tc (clean source tree) option.
   * dpkg-buildpackage new -tc (clean source tree) option.

+ 23 - 7
debian/control

@@ -1,16 +1,13 @@
 Source: dpkg
 Source: dpkg
 Section: base
 Section: base
 Priority: required
 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
 Package: dpkg
 Architecture: any
 Architecture: any
 Essential: yes
 Essential: yes
 Pre-Depends: ${shlibs:Pre-Depends}
 Pre-Depends: ${shlibs:Pre-Depends}
-Suggests: cpio (>= 2.4.2-2), patch
-Conflicts: dpkgname
-Replaces: dpkgname
 Description: Package maintenance system for Debian Linux
 Description: Package maintenance system for Debian Linux
  This package contains the programs which handle the installation and
  This package contains the programs which handle the installation and
  removal of packages on your system.
  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
  a more low-level and less user-friendly interface is available in
  the form of the `dpkg' command.
  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.
 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) 1995,1996 Erick Branderhorst <branderhorst@heel.fgg.eur.nl>
 Copyright (C) 1996 Miquel van Smoorenburg <miquels@cistron.nl>
 Copyright (C) 1996 Miquel van Smoorenburg <miquels@cistron.nl>
 Copyright (C) 1996 Kim-Minh Kaplan <kkaplan@cdfhp3.in2p3.fr>
 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
 	touch diversions
 fi
 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
 if test -d /DEBIAN
 then
 then

+ 1 - 2
debian/prerm

@@ -1,9 +1,8 @@
-#!/bin/sh -
+#!/bin/sh
 
 
 set -e
 set -e
 
 
 cd /usr/bin
 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/Guidelines
 install-info --quiet --remove /usr/info/debian-guidelines
 install-info --quiet --remove /usr/info/debian-guidelines

+ 54 - 37
debian/rules

@@ -3,7 +3,7 @@
 DIR:=$(shell pwd)
 DIR:=$(shell pwd)
 
 
 arch=$(shell dpkg --print-architecture)
 arch=$(shell dpkg --print-architecture)
-cidir=debian/tmp/DEBIAN
+mcidir=debian/tmp-main/DEBIAN
 
 
 build:
 build:
 	$(checkdir)
 	$(checkdir)
@@ -21,57 +21,74 @@ clean:
 
 
 binary:		binary-arch binary-indep
 binary:		binary-arch binary-indep
 
 
-binary-indep:	build
+binary-trees:	checkroot build
 	$(checkdir)
 	$(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 \
 	set -e; if [ $(arch) = i386 ]; then \
-		sed -e 's/^# i386elf: //' <debian/preinst >$(cidir)/preinst ; \
+		sed -e 's/^# i386elf: //' <debian/preinst >$(mcidir)/preinst ; \
 	else \
 	else \
-		sed -e '/^# i386elf: /d' debian/preinst >$(cidir)/preinst ; \
+		sed -e '/^# i386elf: /d' debian/preinst >$(mcidir)/preinst ; \
 	fi
 	fi
 	set -e; if [ -f debian/shlibs.default.$(arch) ]; then \
 	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
 	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
 		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 \
 	set -e; for f in dpkg-buildpackage dpkg-gencontrol dpkg-distaddfile \
 		  dpkg-parsechangelog dpkg-genchanges dpkg-shlibdeps; do \
 		  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
 	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-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`; \
 	 version=`sed -n 's/^Version: //p' DEBIAN/control`; \
 	 file=dpkg_$${version}_$(arch).nondebbin.tar; \
 	 file=dpkg_$${version}_$(arch).nondebbin.tar; \
 	 tar cf ../../../$${file} usr var && gzip -9vf ../../../$${file}; \
 	 tar cf ../../../$${file} usr var && gzip -9vf ../../../$${file}; \
 	 cd ../..; dpkg-distaddfile $${file}.gz byhand -
 	 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
 define checkdir
 	test -f include/dpkg.h
 	test -f include/dpkg.h

+ 1 - 0
debian/shlibs.default.i386

@@ -1,4 +1,5 @@
 libc 5		libc5 (>= 5.2.18)
 libc 5		libc5 (>= 5.2.18)
+libm 5		libc5 (>= 5.2.18)
 libncurses 3.0	ncurses3.0
 libncurses 3.0	ncurses3.0
 libICE	6	elf-x11r6lib
 libICE	6	elf-x11r6lib
 libPEX5	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;
 debian-manuals (2.1.0.0) unstable;
 
 
   * Upstream changelog must be installed too (was just recommended).
   * 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>
 <p>
 
 
 Add a dependency for any shared libraries required by
 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>
 <p>
 
 
 All packages must use virtual package names where appropriate, and
 All packages must use virtual package names where appropriate, and
@@ -333,16 +330,30 @@ installing new packages (perhaps via a network).
 <p>
 <p>
 
 
 Most of these packages should have <tt/Priority: required/ or at least
 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>
 <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/
 <sect1>Including <tt/Priority/ and <tt/Section/ in the <tt/.deb/
 control file
 control file
@@ -978,6 +989,22 @@ primarily in emacs, it is probably complex enough that speed is an
 issue and should be byte compiled.
 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
 <chapt>Configuring and building the programs in the package
 
 
 <sect>Compilation options
 <sect>Compilation options
@@ -992,10 +1019,15 @@ install -s # (or use strip on the files in debian/tmp)
 </example>
 </example>
 <p>
 <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>
 <p>
 
 
 Make sure that you do not link with <tt/-g/, as this makes a.out
 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.
 predefined variables are available.
 <p>
 <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>
 <p>
 
 
+
+
 See <manref name=dpkg-source section=1> for full details about source
 See <manref name=dpkg-source section=1> for full details about source
 variable substitutions, including the format of
 variable substitutions, including the format of
 <tt>debian/substvars</>.
 <tt>debian/substvars</>.
@@ -1158,9 +1160,12 @@ using <prgn/dpkg-source/.  In particular, attempting to use
 <sect1>Restrictions on objects in source packages
 <sect1>Restrictions on objects in source packages
 <p>
 <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>
 <p>
 
 
 The source packaging tools manage the changes between the original and
 The source packaging tools manage the changes between the original and
@@ -2518,6 +2523,15 @@ version clause in the <tt/Pre-Depends/ field.
 
 
 </taglist>
 </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
 <sect1>Dependencies on shared libraries
 <p>
 <p>
 
 

+ 2 - 2
dpkg-deb/build.c

@@ -124,9 +124,9 @@ void do_build(const char *const *argv) {
 
 
     if (subdir) {
     if (subdir) {
       versionstring= versiondescribe(&checkedinfo->available.version,vdew_never);
       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= "";
       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,
       sprintf(m,"%s/%s_%s%s%s" DEBEXT,debar,checkedinfo->name,versionstring,
               arch[0] ? "_" : "", arch);
               arch[0] ? "_" : "", arch);
       debar= m;
       debar= m;

+ 1 - 1
lib/Makefile.in

@@ -19,7 +19,7 @@ srcdir = @srcdir@
 VPATH = @srcdir@
 VPATH = @srcdir@
 
 
 prefix = @prefix@
 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 \
 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 \
 	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 \
 LSMANL=	dpkg-gencontrol dpkg-genchanges dpkg-buildpackage \
 	dpkg-distaddfile dpkg-parsechangelog dpkg-shlibdeps
 	dpkg-distaddfile dpkg-parsechangelog dpkg-shlibdeps
 EXC =   dpkg-name dpkg-source dpkg-genchanges dpkg-gencontrol 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 \
 MAN8 =	update-rc.d start-stop-daemon update-alternatives install-info \
 	dpkg-scanpackages
 	dpkg-scanpackages
 SBIN =	update-rc.d start-stop-daemon update-alternatives install-info \
 SBIN =	update-rc.d start-stop-daemon update-alternatives install-info \
-	dpkg-scanpackages dpkg-divert cleanup-info
+	dpkg-divert cleanup-info
 LIB =	controllib.pl
 LIB =	controllib.pl
 ELISP =	debian-changelog-mode.el
 ELISP =	debian-changelog-mode.el
 CHGLGS=	cl-debian
 CHGLGS=	cl-debian

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

@@ -24,11 +24,11 @@
 
 
 (defvar debian-changelog-urgencies
 (defvar debian-changelog-urgencies
   '((?l."low") (?m."medium") (?h."HIGH"))
   '((?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
 (defvar debian-changelog-distributions
   '((?s."stable") (?u."unstable") (?c."contrib") (?n."non-free") (?e."experimental"))
   '((?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
 (defvar debian-changelog-mode-map nil
   "Keymap for Debian changelog major mode.")
   "Keymap for Debian changelog major mode.")
@@ -49,7 +49,7 @@
   "Add a new change entry to a debian-style changelog."
   "Add a new change entry to a debian-style changelog."
   (interactive)
   (interactive)
   (if (eq (debian-changelog-finalised-p) t)
   (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))
   (goto-char (point-min))
   (re-search-forward "\n --")
   (re-search-forward "\n --")
   (backward-char 5)
   (backward-char 5)

+ 3 - 2
scripts/dpkg-shlibdeps.pl

@@ -105,7 +105,7 @@ while (<P>) {
 }
 }
 close(P); $? && subprocerr("dpkg --search");
 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($shlibslocal,$libname[$i],$libsoname[$i],$libf[$i]) && next;
     scanshlibsfile($shlibsoverride,$libname[$i],$libsoname[$i],$libf[$i]) && next;
     scanshlibsfile($shlibsoverride,$libname[$i],$libsoname[$i],$libf[$i]) && next;
     if (!defined($pathpackages{$libpath[$i]})) {
     if (!defined($pathpackages{$libpath[$i]})) {
@@ -115,7 +115,8 @@ for ($i=0;$i<=$#libname;$i++) {
         @packages= split(/, /,$pathpackages{$libpath[$i]});
         @packages= split(/, /,$pathpackages{$libpath[$i]});
         for $p (@packages) {
         for $p (@packages) {
             scanshlibsfile("$shlibsppdir/$p$shlibsppext",
             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;
     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
 from the control file; they are assumed to be in the same directory as
 the
 the
 .BR .dsc .
 .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
 .TP
 .B -b
 .B -b
 Build: pack up a source tree.  One or two non-option arguments should
 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 */