Here comes the patch to split out the libraries. Reasons
for doing this are:
(1) Policy Section 8.1:
"The run-time shared library needs to be placed in a
package whose name changes whenever the shared object
version changes".
(2) It makes it possible to install apt from experimental
for testing purposes.
(3) It makes future ABI breaks easier to handle without
breaking most unstable machines for a long time.
I have currently added Pre-Depends on apt and apt-utils to
have the libraries always installed before those packages;
in order to not break apt during an interruption.
I CCed debian-devel@l.d.o to get some more opinions on this
topic, but all replies should go to deity@l.d.o.
--
Julian Andres Klode - Debian Developer, Ubuntu Member
See http://wiki.debian.org/JulianAndresKlode and http://jak-linux.org/.
=== modified file 'debian/control'
--- debian/control 2010-03-01 12:47:56 +0000
+++ debian/control 2010-03-12 15:59:10 +0000
@@ -13,7 +13,7 @@ Package: apt
Architecture: any
Depends: ${shlibs:Depends}, debian-archive-keyring, ${misc:Depends}
Replaces: libapt-pkg-doc (<< 0.3.7), libapt-pkg-dev (<< 0.3.7)
-Provides: ${libapt-pkg:provides}
+Pre-Depends: ${libapt-pkg} (>= ${binary:Version})
Conflicts: python-apt (<< 0.7.93.2~)
Suggests: aptitude | synaptic | wajig, dpkg-dev, apt-doc, bzip2, lzma, python-apt
Description: Advanced front-end for dpkg
@@ -24,6 +24,26 @@ Description: Advanced front-end for dpkg
APT features complete installation ordering, multiple source capability
and several other unique features, see the Users Guide in apt-doc.
+Package: libapt-pkg4.9
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: Advanced front-end for dpkg (apt-pkg library)
+ This is Debian's next generation front-end for the dpkg package manager.
+ It provides the apt-get utility and APT dselect method that provides a
+ simpler, safer way to install and upgrade packages.
+ .
+ This package contains the library libapt-pkg used by APT.
+
+Package: libapt-inst1.2
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: Advanced front-end for dpkg (apt-inst library)
+ This is Debian's next generation front-end for the dpkg package manager.
+ It provides the apt-get utility and APT dselect method that provides a
+ simpler, safer way to install and upgrade packages.
+ .
+ This package contains the library libapt-inst used by apt-utils.
+
Package: apt-doc
Architecture: all
Priority: optional
@@ -55,8 +75,8 @@ Description: Documentation for APT devel
Package: apt-utils
Architecture: any
+Pre-Depends: ${libapt-inst} (>= ${binary:Version}), ${libapt-pkg} (>= ${binary:Version})
Depends: ${shlibs:Depends}, ${misc:Depends}
-Provides: ${libapt-inst:provides}
Replaces: apt (<< 0.5.9)
Description: APT utility programs
This package contains some APT utility programs such as apt-ftparchive,
=== modified file 'debian/rules'
--- debian/rules 2010-03-12 14:29:07 +0000
+++ debian/rules 2010-03-12 15:55:28 +0000
@@ -81,19 +81,6 @@ include buildlib/libversion.mak
LIBAPTPKG_PROVIDE=libapt-pkg$(LIBAPTPKG_MAJOR)
LIBAPTINST_PROVIDE=libapt-inst$(LIBAPTINST_MAJOR)
-debian/shlibs.local: apt-pkg/makefile
- # We have 3 shlibs.local files.. One for 'apt', one for 'apt-utils' and
- # one for the rest of the packages. This ensures that each package gets
- # the right overrides..
- rm -rf $@ $@.apt $@.apt-utils
- echo "libapt-pkg $(LIBAPTPKG_MAJOR)" > $@.apt
-
- echo "libapt-pkg $(LIBAPTPKG_MAJOR) $(LIBAPTPKG_PROVIDE)" > $@.apt-utils
- echo "libapt-inst $(LIBAPTINST_MAJOR)" >> $@.apt-utils
-
- echo "libapt-pkg $(LIBAPTPKG_MAJOR) $(LIBAPTPKG_PROVIDE)" > $@
- echo "libapt-inst $(LIBAPTINST_MAJOR) $(LIBAPTINST_PROVIDE)" >> $@
-
build: build/build-stamp
build-doc: build/build-doc-stamp
@@ -130,11 +117,11 @@ clean:
rm -rf build
# Add here commands to clean up after the build process.
- dh_clean debian/copyright debian/shlibs.local debian/shlibs.local.apt debian/shlibs.local.apt-utils
+ dh_clean debian/copyright
binary-indep: apt-doc libapt-pkg-doc
# Build architecture-independent files here.
-libapt-pkg-doc: build-doc debian/shlibs.local
+libapt-pkg-doc: build-doc
dh_testdir -p$@
dh_testroot -p$@
dh_clean -p$@ -k
@@ -158,7 +145,7 @@ libapt-pkg-doc: build-doc debian/shlibs.
dh_fixperms -p$@
# dh_suidregister -p$@
dh_installdeb -p$@
- dh_gencontrol -p$@ -u -Vlibapt-pkg:provides=$(LIBAPTPKG_PROVIDE)
+ dh_gencontrol -p$@ -- -Vlibapt-pkg=$(LIBAPTPKG_PROVIDE) -Vlibapt-inst=$(LIBAPTINST_PROVIDE)
dh_md5sums -p$@
dh_builddeb -p$@
@@ -176,7 +163,7 @@ apt-doc: build-doc
dh_compress -p$@
dh_fixperms -p$@
dh_installdeb -p$@
- dh_gencontrol -p$@
+ dh_gencontrol -p$@ -- -Vlibapt-pkg=$(LIBAPTPKG_PROVIDE) -Vlibapt-inst=$(LIBAPTINST_PROVIDE)
dh_md5sums -p$@
dh_builddeb -p$@
@@ -184,9 +171,9 @@ apt-doc: build-doc
# Build architecture-dependent files here.
-binary-arch: apt libapt-pkg-dev apt-utils apt-transport-https
+binary-arch: apt libapt-pkg-dev apt-utils apt-transport-https $(LIBAPTINST_PROVIDE) $(LIBAPTPKG_PROVIDE)
apt_MANPAGES = apt-cache apt-cdrom apt-config apt-get apt-key apt-mark apt-secure apt apt.conf apt_preferences sources.list
-apt: build build-doc debian/shlibs.local
+apt: build build-doc $(LIBAPTPKG_PROVIDE)
dh_testdir -p$@
dh_testroot -p$@
dh_clean -p$@ -k
@@ -199,16 +186,16 @@ apt: build build-doc debian/shlibs.local
# Remove the bits that are in apt-utils
rm $(addprefix debian/$@/usr/bin/apt-,$(APT_UTILS))
- # install the shared libs
- find $(BLD)/bin/ -type f -name "libapt-pkg*.so.*" -exec cp -a "{}" debian/$@/usr/lib/ \;
- find $(BLD)/bin/ -type l -name "libapt-pkg*.so.*" -exec cp -a "{}" debian/$@/usr/lib/ \;
-
cp $(BLD)/bin/methods/* debian/$@/usr/lib/apt/methods/
# https has its own package
rm debian/$@/usr/lib/apt/methods/https
cp $(BLD)/scripts/dselect/* debian/$@/usr/lib/dpkg/methods/apt/
- cp -r $(BLD)/locale debian/$@/usr/share/
+
+ set -e; cd $(BLD)/locale; \
+ for file in */LC_MESSAGES/$@.mo; do \
+ install -D $$file $(CURDIR)/debian/$@/usr/share/locale/$$file; \
+ done; \
cp debian/bugscript debian/$@/usr/share/bug/apt/script
cp debian/apt.logrotate debian/$@/etc/logrotate.d/apt
@@ -232,14 +219,42 @@ apt: build build-doc debian/shlibs.local
dh_strip -p$@
dh_compress -p$@
dh_fixperms -p$@
- dh_makeshlibs -p$@ -m$(LIBAPTPKG_MAJOR) -V '$(LIBAPTPKG_PROVIDE)'
+ dh_makeshlibs -p$@
dh_installdeb -p$@
- dh_shlibdeps -p$@ -l`pwd`/debian/apt/usr/lib:`pwd`/debian/$@/usr/lib -- -Ldebian/shlibs.local.apt
- dh_gencontrol -p$@ -u -Vlibapt-pkg:provides=$(LIBAPTPKG_PROVIDE)
+ dh_shlibdeps -p$@
+ dh_gencontrol -p$@ -- -Vlibapt-pkg=$(LIBAPTPKG_PROVIDE) -Vlibapt-inst=$(LIBAPTINST_PROVIDE)
dh_md5sums -p$@
dh_builddeb -p$@
-libapt-pkg-dev: build debian/shlibs.local
+$(LIBAPTPKG_PROVIDE): build
+ dh_testdir -p$@
+ dh_testroot -p$@
+ dh_clean -p$@ -k
+ dh_installdirs -p$@ usr/lib/
+
+ # install the shared libs
+ find $(BLD)/bin/ -type f -name "libapt-pkg*.so.*" -exec cp -a "{}" debian/$@/usr/lib/ \;
+ find $(BLD)/bin/ -type l -name "libapt-pkg*.so.*" -exec cp -a "{}" debian/$@/usr/lib/ \;
+
+ set -e; cd $(BLD)/locale; \
+ for file in */LC_MESSAGES/$@.mo; do \
+ install -D $$file $(CURDIR)/debian/$@/usr/share/locale/$$file; \
+ done; \
+
+ dh_installcron -p$@
+ dh_installdocs -p$@
+ dh_installchangelogs -p$@
+ dh_strip -p$@
+ dh_compress -p$@
+ dh_fixperms -p$@
+ dh_makeshlibs -p$@
+ dh_installdeb -p$@
+ dh_shlibdeps -p$@
+ dh_gencontrol -p$@ -- -Vlibapt-pkg=$(LIBAPTPKG_PROVIDE) -Vlibapt-inst=$(LIBAPTINST_PROVIDE)
+ dh_md5sums -p$@
+ dh_builddeb -p$@
+
+libapt-pkg-dev: build
dh_testdir -p$@
dh_testroot -p$@
dh_clean -p$@ -k
@@ -264,21 +279,44 @@ libapt-pkg-dev: build debian/shlibs.loca
dh_fixperms -p$@
# dh_suidregister -p$@
dh_installdeb -p$@
- dh_gencontrol -p$@ -u -Vlibapt-pkg:provides=$(LIBAPTPKG_PROVIDE) -Vlibapt-inst:provides=$(LIBAPTINST_PROVIDE)
+ dh_gencontrol -p$@ -- -Vlibapt-pkg=$(LIBAPTPKG_PROVIDE) -Vlibapt-inst=$(LIBAPTINST_PROVIDE)
dh_md5sums -p$@
dh_builddeb -p$@
-apt-utils_MANPAGES = apt-sortpkgs apt-ftparchive apt-extracttemplates
-apt-utils: build debian/shlibs.local
+$(LIBAPTINST_PROVIDE): build
dh_testdir -p$@
dh_testroot -p$@
dh_clean -p$@ -k
- dh_installdirs -p$@
+ dh_installdirs -p$@ usr/lib/
# install the shared libs
find $(BLD)/bin/ -type f -name "libapt-inst*.so.*" -exec cp -a "{}" debian/$@/usr/lib/ \;
find $(BLD)/bin/ -type l -name "libapt-inst*.so.*" -exec cp -a "{}" debian/$@/usr/lib/ \;
+ set -e; cd $(BLD)/locale; \
+ for file in */LC_MESSAGES/$@.mo; do \
+ install -D $$file $(CURDIR)/debian/$@/usr/share/locale/$$file; \
+ done; \
+
+ dh_installdocs -p$@ --link-doc=apt
+ dh_installchangelogs -p$@
+ dh_strip -p$@
+ dh_compress -p$@
+ dh_fixperms -p$@
+ dh_makeshlibs -p$@
+ dh_installdeb -p$@
+ dh_shlibdeps -p$@
+ dh_gencontrol -p$@ -- -Vlibapt-pkg=$(LIBAPTPKG_PROVIDE) -Vlibapt-inst=$(LIBAPTINST_PROVIDE)
+ dh_md5sums -p$@
+ dh_builddeb -p$@
+
+apt-utils_MANPAGES = apt-sortpkgs apt-ftparchive apt-extracttemplates
+apt-utils: build $(LIBAPTINST_PROVIDE)
+ dh_testdir -p$@
+ dh_testroot -p$@
+ dh_clean -p$@ -k
+ dh_installdirs -p$@
+
cp $(addprefix $(BLD)/bin/apt-,$(APT_UTILS)) debian/$@/usr/bin/
dh_installdocs -p$@
dh_installexamples -p$@
@@ -290,14 +328,14 @@ apt-utils: build debian/shlibs.local
dh_strip -p$@
dh_compress -p$@
dh_fixperms -p$@
- dh_makeshlibs -m$(LIBAPTINST_MAJOR) -V '$(LIBAPTINST_PROVIDE)' -p$@
+ dh_makeshlibs -p$@
dh_installdeb -p$@
- dh_shlibdeps -p$@ -l`pwd`/debian/apt/usr/lib:`pwd`/debian/$@/usr/lib -- -Ldebian/shlibs.local.apt-utils
- dh_gencontrol -p$@ -u -Vlibapt-inst:provides=$(LIBAPTINST_PROVIDE)
+ dh_shlibdeps -p$@
+ dh_gencontrol -p$@ -- -Vlibapt-pkg=$(LIBAPTPKG_PROVIDE) -Vlibapt-inst=$(LIBAPTINST_PROVIDE)
dh_md5sums -p$@
dh_builddeb -p$@
-apt-transport-https: build debian/shlibs.local libapt-pkg-dev
+apt-transport-https: build libapt-pkg-dev
dh_testdir -p$@
dh_testroot -p$@
dh_clean -p$@ -k
@@ -318,8 +356,8 @@ apt-transport-https: build debian/shlibs
dh_compress -p$@
dh_fixperms -p$@
dh_installdeb -p$@
- dh_shlibdeps -p$@ -l`pwd`/debian/apt/usr/lib:`pwd`/debian/$@/usr/lib
- dh_gencontrol -p$@
+ dh_shlibdeps -p$@
+ dh_gencontrol -p$@ -- -Vlibapt-pkg=$(LIBAPTPKG_PROVIDE) -Vlibapt-inst=$(LIBAPTINST_PROVIDE)
dh_md5sums -p$@
dh_builddeb -p$@
@@ -346,7 +384,7 @@ really-clean: clean
rm -f l33ch-stamp
binary: binary-indep binary-arch
-.PHONY: build clean binary-indep binary-arch binary debian/shlibs.local
+.PHONY: build clean binary-indep binary-arch binary
# Done by the uploader.
Attachment:
pgpIg5ZZkI3yr.pgp
Description: PGP signature