Просмотр исходного кода

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 лет назад: 16
Родитель
Сommit
23d8465817
5 измененных файлов с 27 добавлено и 11 удалено
  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