Explorar o código

refactor the buildsystem to extract library versions from one file,
so it is not needed to change x-files to just increase a version number
(because this is far to easy to forget one of the files, which will not
result in failures or is bad in general, but is inconsitent.)

David Kalnischkies %!s(int64=16) %!d(string=hai) anos
pai
achega
23d8465817
Modificáronse 5 ficheiros con 27 adicións e 11 borrados
  1. 5 1
      apt-pkg/init.h
  2. 5 5
      apt-pkg/makefile
  3. 14 0
      buildlib/libversion.mak
  4. 1 2
      debian/rules
  5. 2 3
      methods/makefile

+ 5 - 1
apt-pkg/init.h

@@ -16,7 +16,11 @@
 #include <apt-pkg/configuration.h>
 #include <apt-pkg/pkgsystem.h>
 
-// See the makefile
+// These lines are extracted by the makefiles and the buildsystem
+// Increasing MAJOR or MINOR results in the need of recompiling all
+// reverse-dependencies of libapt-pkg against the new SONAME.
+// Non-ABI-Breaks should only increase RELEASE number.
+// See also buildlib/libversion.mak
 #define APT_PKG_MAJOR 4
 #define APT_PKG_MINOR 9
 #define APT_PKG_RELEASE 0

+ 5 - 5
apt-pkg/makefile

@@ -9,13 +9,13 @@ HEADER_TARGETDIRS = apt-pkg
 # Bring in the default rules
 include ../buildlib/defaults.mak
 
-# The library name, don't forget to update init.h and the copy in 
-# methods/makefile - FIXME
+# The library name and version (indirectly used from init.h)
+include ../buildlib/libversion.mak
 LIBRARY=apt-pkg
-MAJOR=4.9
-MINOR=0
+MAJOR=$(LIBAPTPKG_MAJOR)
+MINOR=$(LIBAPTPKG_RELEASE)
 SLIBS=$(PTHREADLIB) $(INTLLIBS) -lutil -ldl
-APT_DOMAIN:=libapt-pkg$(MAJOR)
+APT_DOMAIN:=libapt-pkg$(LIBAPTPKG_MAJOR)
 
 # Source code for the contributed non-core things
 SOURCE = contrib/mmap.cc contrib/error.cc contrib/strutl.cc \

+ 14 - 0
buildlib/libversion.mak

@@ -0,0 +1,14 @@
+# -*- make -*-
+# Version number of libapt-pkg.
+# Please increase MAJOR with each ABI break,
+# with each non-ABI break to the lib, please increase RELEASE.
+# The versionnumber is extracted from apt-pkg/init.h - see also there.
+LIBAPTPKG_MAJOR=$(shell awk -v ORS='.' '/^\#define APT_PKG_M/ {print $$3}' $(BASE)/apt-pkg/init.h | sed 's/\.$$//')
+LIBAPTPKG_RELEASE=$(shell grep -E '^\#define APT_PKG_RELEASE' $(BASE)/apt-pkg/init.h | cut -d ' ' -f 3)
+
+# Version number of libapt-inst
+# Please increase MAJOR with each ABI break,
+# with each non-ABI break to the lib, please increase MINOR.
+# The versionnumber is extracted from apt-inst/makefile - see also there.
+LIBAPTINST_MAJOR=$(shell egrep '^MAJOR=' $(BASE)/apt-inst/makefile |cut -d '=' -f 2)
+LIBAPTINST_MINOR=$(shell egrep '^MINOR=' $(BASE)/apt-inst/makefile |cut -d '=' -f 2)

+ 1 - 2
debian/rules

@@ -75,8 +75,7 @@ APT_UTILS=ftparchive sortpkgs extracttemplates
 #export DH_VERBOSE=1
 
 # Find the libapt-pkg major version for use in other control files
-export LIBAPTPKG_MAJOR:=$(shell egrep '^MAJOR=' apt-pkg/makefile |cut -d '=' -f 2)
-export LIBAPTINST_MAJOR:=$(shell egrep '^MAJOR=' apt-inst/makefile |cut -d '=' -f 2)
+include buildlib/libversion.mak
 
 # Determine which package we should provide in the control files
 LIBAPTPKG_PROVIDE=libapt-pkg-$(LIBAPTPKG_MAJOR)

+ 2 - 3
methods/makefile

@@ -6,9 +6,8 @@ SUBDIR=methods
 include ../buildlib/defaults.mak
 BIN := $(BIN)/methods
 
-# FIXME..
-LIB_APT_PKG_MAJOR = 4.9
-APT_DOMAIN := libapt-pkg$(LIB_APT_PKG_MAJOR)
+include ../buildlib/libversion.mak
+APT_DOMAIN := libapt-pkg$(LIBAPTPKG_MAJOR)
 
 # The file method
 PROGRAM=file