Make version in package name independant of internal abi

* debian/bin/gencontrol.py: Export internal ABI.
* debian/lib/python/debian_linux/debian.py: Export three-part version.
* debian/rules.real
  - Provide more variables.
  - Make udeb generation easier.
  - Use internal ABI for files.
* debian/templates/control.*: Provide name with internal ABI.
* debian/templates/image.plain.*: Use internal ABI.

svn path=/dists/sid/linux/; revision=22017
This commit is contained in:
Bastian Blank 2014-11-01 19:20:16 +00:00
parent 53475cbadc
commit cb080a3167
10 changed files with 63 additions and 39 deletions

View File

@ -60,7 +60,8 @@ class Gencontrol(Base):
makeflags.update({
'VERSION': self.version.linux_version,
'UPSTREAMVERSION': self.version.linux_upstream,
'ABINAME': self.abiname_version + self.abiname_part,
'ABINAME': self.abiname,
'ABINAME_INTERNAL': self.abiname_internal,
'SOURCEVERSION': self.version.complete,
})
@ -129,7 +130,9 @@ class Gencontrol(Base):
except KeyError:
abiname_part = self.abiname_part
makeflags['ABINAME'] = vars['abiname'] = \
self.abiname_version + abiname_part
self.version.linux_upstream + abiname_part
makeflags['ABINAME_INTERNAL'] = vars['abiname_internal'] = \
self.version.linux_upstream_3part + abiname_part
if foreign_kernel:
packages_headers_arch = []
@ -170,7 +173,7 @@ class Gencontrol(Base):
kw_env['KW_DEFCONFIG_DIR'] = installer_def_dir
kw_env['KW_CONFIG_DIR'] = installer_arch_dir
kw_proc = subprocess.Popen(
['kernel-wedge', 'gen-control', vars['abiname']],
['kernel-wedge', 'gen-control', vars['abiname_internal']],
stdout=subprocess.PIPE,
env=kw_env)
if not isinstance(kw_proc.stdout, io.IOBase):
@ -464,21 +467,19 @@ class Gencontrol(Base):
self.abiname_part = ''
else:
self.abiname_part = '-%s' % self.config['abi', ]['abiname']
# We need to keep at least three version components to avoid
# userland breakage (e.g. #742226, #745984).
self.abiname_version = re.sub('^(\d+\.\d+)(?=-|$)', r'\1.0',
self.version.linux_upstream)
self.abiname = self.version.linux_upstream + self.abiname_part
self.abiname_internal = self.version.linux_upstream_3part + self.abiname_part
self.vars = {
'upstreamversion': self.version.linux_upstream,
'version': self.version.linux_version,
'source_upstream': self.version.upstream,
'source_package': self.changelog[0].source,
'abiname': self.abiname_version + self.abiname_part,
'abiname': self.abiname,
'abiname_internal': self.abiname_internal,
}
self.config['version', ] = {'source': self.version.complete,
'upstream': self.version.linux_upstream,
'abiname': (self.abiname_version +
self.abiname_part)}
'abiname': self.abiname}
distribution = self.changelog[0].distribution
if distribution in ('unstable', ):

View File

@ -161,8 +161,10 @@ $
if d['modifier'] is not None:
assert not d['update']
self.linux_upstream = u'-'.join((d['version'], d['modifier']))
self.linux_upstream_3part = u'-'.join((d['version'] + '.0', d['modifier']))
else:
self.linux_upstream = d['version']
self.linux_upstream_3part = d['version'] + '.0'
self.linux_upstream_full = self.linux_upstream + (d['update'] or u'')
self.linux_dfsg = d['dfsg']
self.linux_revision_experimental = match.group('revision_experimental') and True

66
debian/rules.real vendored
View File

@ -36,7 +36,7 @@ include debian/rules.defs
stamp = [ -d $(dir $@) ] || mkdir $(dir $@); touch $@
setup_env := env -u ABINAME -u ARCH -u FEATURESET -u FLAVOUR -u VERSION -u LOCALVERSION
setup_env := env -u ABINAME -u ABINAME_INTERNAL -u ARCH -u FEATURESET -u FLAVOUR -u VERSION -u LOCALVERSION
setup_env += DISTRIBUTION_OFFICIAL_BUILD=1 DISTRIBUTOR="$(DISTRIBUTOR)" DISTRIBUTION_VERSION="$(SOURCEVERSION)" KBUILD_BUILD_TIMESTAMP="$(DISTRIBUTOR) $(SOURCEVERSION) ($(SOURCE_DATE_UTC_ISO))" KBUILD_BUILD_USER="$(word 1,$(subst @, ,$(MAINTAINER)))" KBUILD_BUILD_HOST="$(word 2,$(subst @, ,$(MAINTAINER)))"
MAKE_CLEAN = $(setup_env) $(MAKE)
@ -52,6 +52,7 @@ endif
binary-arch-arch: install-libc-dev_$(ARCH)
binary-arch-featureset: install-headers_$(ARCH)_$(FEATURESET)
binary-arch-flavour: install-image_$(ARCH)_$(FEATURESET)_$(FLAVOUR)_$(TYPE)
binary-arch-flavour: install-image-udeb_$(ARCH)_$(FEATURESET)_$(FLAVOUR)_$(TYPE)
ifeq ($(DEBUG),True)
binary-arch-flavour: install-image-dbg_$(ARCH)_$(FEATURESET)_$(FLAVOUR)
endif
@ -132,7 +133,7 @@ $(STAMPS_DIR)/setup_$(ARCH)_$(FEATURESET)_$(FLAVOUR): $(STAMPS_DIR)/source_$(FEA
mkdir '$(DIR)'
cp '$(CONFIG)' '$(DIR)/.config'
echo 'override ARCH = $(KERNEL_ARCH)' >> '$(DIR)/.kernelvariables'
echo 'override KERNELRELEASE = $(ABINAME)$(LOCALVERSION_IMAGE)' >> '$(DIR)/.kernelvariables'
echo 'override KERNELRELEASE = $(ABINAME_INTERNAL)$(LOCALVERSION_IMAGE)' >> '$(DIR)/.kernelvariables'
echo 'CCACHE = ccache' >> '$(DIR)/.kernelvariables'
echo 'CC = $$(if $$(DEBIAN_KERNEL_USE_CCACHE),$$(CCACHE)) $$(CROSS_COMPILE)$(COMPILER)' >> '$(DIR)/.kernelvariables'
# TODO: Should we set CROSS_COMPILE always?
@ -247,6 +248,7 @@ install-headers_$(ARCH)_$(FEATURESET): $(STAMPS_DIR)/source_$(FEATURESET)
+$(MAKE_SELF) install-base
install-headers_$(ARCH)_$(FEATURESET)_$(FLAVOUR): REAL_VERSION = $(ABINAME)$(LOCALVERSION)
install-headers_$(ARCH)_$(FEATURESET)_$(FLAVOUR): ABI_VERSION = $(ABINAME_INTERNAL)$(LOCALVERSION)
install-headers_$(ARCH)_$(FEATURESET)_$(FLAVOUR): PACKAGE_NAME = linux-headers-$(REAL_VERSION)
install-headers_$(ARCH)_$(FEATURESET)_$(FLAVOUR): PACKAGE_NAME_COMMON = linux-headers-$(ABINAME)-common$(LOCALVERSION_HEADERS)
install-headers_$(ARCH)_$(FEATURESET)_$(FLAVOUR): PACKAGE_NAME_KBUILD = linux-kbuild-$(VERSION)
@ -257,6 +259,7 @@ install-headers_$(ARCH)_$(FEATURESET)_$(FLAVOUR): SOURCE_DIR = $(BUILD_DIR)/buil
install-headers_$(ARCH)_$(FEATURESET)_$(FLAVOUR): REF_DIR = $(BUILD_DIR)/source_$(FEATURESET)
install-headers_$(ARCH)_$(FEATURESET)_$(FLAVOUR): PACKAGE_DIR = debian/$(PACKAGE_NAME)
install-headers_$(ARCH)_$(FEATURESET)_$(FLAVOUR): DIR = $(PACKAGE_DIR)/$(BASE_DIR)
install-headers_$(ARCH)_$(FEATURESET)_$(FLAVOUR): MODULES_DIR = $(PACKAGE_DIR)/lib/modules/$(ABI_VERSION)
install-headers_$(ARCH)_$(FEATURESET)_$(FLAVOUR): $(STAMPS_DIR)/build_$(ARCH)_$(FEATURESET)_$(FLAVOUR)_$(TYPE)
dh_testdir
dh_testroot
@ -288,9 +291,9 @@ install-headers_$(ARCH)_$(FEATURESET)_$(FLAVOUR): $(STAMPS_DIR)/build_$(ARCH)_$(
dh_link /usr/lib/$(PACKAGE_NAME_KBUILD)/scripts $(BASE_DIR)/scripts
mkdir -p $(PACKAGE_DIR)/lib/modules/$(REAL_VERSION)
ln -s /usr/src/$(PACKAGE_NAME) $(PACKAGE_DIR)/lib/modules/$(REAL_VERSION)/build
ln -s /usr/src/$(PACKAGE_NAME_COMMON) $(PACKAGE_DIR)/lib/modules/$(REAL_VERSION)/source
mkdir -p $(MODULES_DIR)
ln -s /usr/src/$(PACKAGE_NAME) $(MODULES_DIR)/build
ln -s /usr/src/$(PACKAGE_NAME_COMMON) $(MODULES_DIR)/source
+$(MAKE_SELF) install-base INSTALLDOCS_ARGS="--link-doc=$(PACKAGE_NAME_COMMON)"
@ -332,9 +335,11 @@ install-support:
+$(MAKE_SELF) install-base
install-image_$(ARCH)_$(FEATURESET)_$(FLAVOUR)_$(TYPE): REAL_VERSION = $(ABINAME)$(LOCALVERSION)
install-image_$(ARCH)_$(FEATURESET)_$(FLAVOUR)_$(TYPE): ABI_VERSION = $(ABINAME_INTERNAL)$(LOCALVERSION)
install-image_$(ARCH)_$(FEATURESET)_$(FLAVOUR)_$(TYPE): PACKAGE_NAME = linux-image-$(REAL_VERSION)
install-image_$(ARCH)_$(FEATURESET)_$(FLAVOUR)_$(TYPE): PACKAGE_DIR = debian/$(PACKAGE_NAME)
install-image_$(ARCH)_$(FEATURESET)_$(FLAVOUR)_$(TYPE): INSTALL_DIR = $(PACKAGE_DIR)/boot
install-image_$(ARCH)_$(FEATURESET)_$(FLAVOUR)_$(TYPE): BOOT_DIR = $(PACKAGE_DIR)/boot
install-image_$(ARCH)_$(FEATURESET)_$(FLAVOUR)_$(TYPE): MODULES_DIR = $(PACKAGE_DIR)/lib/modules/$(ABI_VERSION)
install-image_$(ARCH)_$(FEATURESET)_$(FLAVOUR)_$(TYPE): DIR = $(BUILD_DIR)/build_$(ARCH)_$(FEATURESET)_$(FLAVOUR)
install-image_$(ARCH)_$(FEATURESET)_$(FLAVOUR)_$(TYPE): DH_OPTIONS = -p$(PACKAGE_NAME)
install-image_$(ARCH)_$(FEATURESET)_$(FLAVOUR)_$(TYPE): $(STAMPS_DIR)/build_$(ARCH)_$(FEATURESET)_$(FLAVOUR)_$(TYPE)
@ -344,34 +349,34 @@ install-image_$(ARCH)_$(FEATURESET)_$(FLAVOUR)_plain:
dh_testroot
dh_prep
dh_installdirs 'boot'
install -m644 '$(DIR)/$(IMAGE_FILE)' $(INSTALL_DIR)/$(IMAGE_INSTALL_STEM)-$(REAL_VERSION)
install -m644 '$(DIR)/$(IMAGE_FILE)' $(BOOT_DIR)/$(IMAGE_INSTALL_STEM)-$(ABI_VERSION)
+$(MAKE_SELF) \
install-image_$(ARCH)_$(FEATURESET)_$(FLAVOUR)_plain_dt \
DIR='$(DIR)' PACKAGE_DIR='$(PACKAGE_DIR)' REAL_VERSION='$(REAL_VERSION)'
DIR='$(DIR)' PACKAGE_DIR='$(PACKAGE_DIR)' ABI_VERSION='$(ABI_VERSION)'
ifeq ($(MODULES),True)
+$(MAKE_CLEAN) -C $(DIR) modules_install DEPMOD='$(CURDIR)/debian/bin/no-depmod' INSTALL_MOD_PATH='$(CURDIR)'/$(PACKAGE_DIR) INSTALL_MOD_STRIP=1
ifeq ($(DEBUG),True)
set -o pipefail; \
find $(PACKAGE_DIR) -name '*.ko' | sed 's|$(PACKAGE_DIR)/lib/modules/$(REAL_VERSION)/kernel/||' | while read module ; do \
$(CROSS_COMPILE)objcopy --add-gnu-debuglink=$(DIR)/$$module $(PACKAGE_DIR)/lib/modules/$(REAL_VERSION)/kernel/$$module || exit; \
find $(PACKAGE_DIR) -name '*.ko' | sed 's|$(MODULES_DIR)/kernel/||' | while read module ; do \
$(CROSS_COMPILE)objcopy --add-gnu-debuglink=$(DIR)/$$module $(MODULES_DIR)/kernel/$$module || exit; \
done
endif
cp $(DIR)/.config $(PACKAGE_DIR)/boot/config-$(REAL_VERSION)
cp $(DIR)/System.map $(PACKAGE_DIR)/boot/System.map-$(REAL_VERSION)
rm -f $(PACKAGE_DIR)/lib/modules/$(REAL_VERSION)/build
rm -f $(PACKAGE_DIR)/lib/modules/$(REAL_VERSION)/source
cp $(DIR)/.config $(BOOT_DIR)/config-$(ABI_VERSION)
cp $(DIR)/System.map $(BOOT_DIR)/System.map-$(ABI_VERSION)
rm -f $(MODULES_DIR)/build
rm -f $(MODULES_DIR)/source
rm $(PACKAGE_DIR)/lib/firmware -rf
endif
dh_installdebconf
+$(MAKE_SELF) \
install-image_$(ARCH)_$(FEATURESET)_$(FLAVOUR)_plain_bug \
PACKAGE_DIR='$(PACKAGE_DIR)' PACKAGE_NAME='$(PACKAGE_NAME)' REAL_VERSION='$(REAL_VERSION)'
PACKAGE_DIR='$(PACKAGE_DIR)' PACKAGE_NAME='$(PACKAGE_NAME)' ABI_VERSION='$(ABI_VERSION)'
+$(MAKE_SELF) install-base GENCONTROL_ARGS='-Vkernel:Recommends='"$$( \
if grep -q '^CONFIG_SMP=y' $(DIR)/.config; then \
printf irqbalance,; \
fi)"
install-image_$(ARCH)_$(FEATURESET)_$(FLAVOUR)_plain_dt: DT_INSTALL_DIR = $(PACKAGE_DIR)/usr/lib/linux-image-$(REAL_VERSION)
install-image_$(ARCH)_$(FEATURESET)_$(FLAVOUR)_plain_dt: DT_INSTALL_DIR = $(PACKAGE_DIR)/usr/lib/linux-image-$(ABI_VERSION)
install-image_$(ARCH)_$(FEATURESET)_$(FLAVOUR)_plain_dt:
ifneq ($(filter arm64 armel armhf,$(ARCH)),)
+$(MAKE_CLEAN) -C $(DIR) dtbs
@ -390,12 +395,14 @@ install-image_$(ARCH)_$(FEATURESET)_$(FLAVOUR)_plain_bug:
dh_installdirs usr/share/bug/$(PACKAGE_NAME)
dh_install debian/templates/image.plain.bug/* usr/share/bug/$(PACKAGE_NAME)
chmod 755 $(PACKAGE_DIR)/usr/share/bug/$(PACKAGE_NAME)/script
echo "RELEASE='$(REAL_VERSION)'" > $(PACKAGE_DIR)/usr/share/bug/$(PACKAGE_NAME)/info
echo "RELEASE='$(ABI_VERSION)'" > $(PACKAGE_DIR)/usr/share/bug/$(PACKAGE_NAME)/info
install-image-dbg_$(ARCH)_$(FEATURESET)_$(FLAVOUR): REAL_VERSION = $(ABINAME)$(LOCALVERSION)
install-image-dbg_$(ARCH)_$(FEATURESET)_$(FLAVOUR): ABI_VERSION = $(ABINAME_INTERNAL)$(LOCALVERSION)
install-image-dbg_$(ARCH)_$(FEATURESET)_$(FLAVOUR): PACKAGE_NAME = linux-image-$(REAL_VERSION)-dbg
install-image-dbg_$(ARCH)_$(FEATURESET)_$(FLAVOUR): PACKAGE_DIR = debian/$(PACKAGE_NAME)
install-image-dbg_$(ARCH)_$(FEATURESET)_$(FLAVOUR): DEBUG_DIR = $(PACKAGE_DIR)/usr/lib/debug
install-image-dbg_$(ARCH)_$(FEATURESET)_$(FLAVOUR): MODULES_DIR = $(DEBUG_DIR)/lib/modules/$(ABI_VERSION)
install-image-dbg_$(ARCH)_$(FEATURESET)_$(FLAVOUR): DIR = $(BUILD_DIR)/build_$(ARCH)_$(FEATURESET)_$(FLAVOUR)
install-image-dbg_$(ARCH)_$(FEATURESET)_$(FLAVOUR): DH_OPTIONS = -p$(PACKAGE_NAME)
install-image-dbg_$(ARCH)_$(FEATURESET)_$(FLAVOUR): $(STAMPS_DIR)/build_$(ARCH)_$(FEATURESET)_$(FLAVOUR)_$(TYPE)
@ -404,26 +411,39 @@ install-image-dbg_$(ARCH)_$(FEATURESET)_$(FLAVOUR): $(STAMPS_DIR)/build_$(ARCH)_
dh_prep
dh_installdirs usr/lib/debug usr/lib/debug/boot usr/share/lintian/overrides/
dh_lintian
install -m644 $(DIR)/vmlinux $(DEBUG_DIR)/boot/vmlinux-$(REAL_VERSION)
install -m644 $(DIR)/vmlinux $(DEBUG_DIR)/boot/vmlinux-$(ABI_VERSION)
ifeq ($(MODULES),True)
+$(MAKE_CLEAN) -C $(DIR) modules_install DEPMOD='$(CURDIR)/debian/bin/no-depmod' INSTALL_MOD_PATH='$(CURDIR)'/$(DEBUG_DIR)
find $(DEBUG_DIR)/lib/modules/$(REAL_VERSION)/ -mindepth 1 -maxdepth 1 \! -name kernel -exec rm {} \+
find $(MODULES_DIR)/ -mindepth 1 -maxdepth 1 \! -name kernel -exec rm {} \+
rm $(DEBUG_DIR)/lib/firmware -rf
endif
# Add symlinks to vmlinux from the locations expected by kdump-tools,
# systemtap and others
ln -s boot/vmlinux-$(REAL_VERSION) $(DEBUG_DIR)/
mkdir -p $(DEBUG_DIR)/lib/modules/$(REAL_VERSION)
ln -s ../../../boot/vmlinux-$(REAL_VERSION) $(DEBUG_DIR)/lib/modules/$(REAL_VERSION)/vmlinux
ln -s boot/vmlinux-$(ABI_VERSION) $(DEBUG_DIR)/
mkdir -p $(MODULES_DIR)
ln -s ../../../boot/vmlinux-$(ABI_VERSION) $(MODULES_DIR)/vmlinux
+$(MAKE_SELF) install-base
install-image-udeb_$(ARCH)_$(FEATURESET)_$(FLAVOUR)_$(TYPE): REAL_VERSION = $(ABINAME)$(LOCALVERSION)
install-image-udeb_$(ARCH)_$(FEATURESET)_$(FLAVOUR)_$(TYPE): ABI_VERSION = $(ABINAME_INTERNAL)$(LOCALVERSION)
install-image-udeb_$(ARCH)_$(FEATURESET)_$(FLAVOUR)_$(TYPE): PACKAGE_INPUT = debian/linux-image-$(REAL_VERSION)
install-image-udeb_$(ARCH)_$(FEATURESET)_$(FLAVOUR)_$(TYPE): BOOT_INPUT = $(PACKAGE_INPUT)/boot/$(IMAGE_INSTALL_STEM)-$(ABI_VERSION)
install-image-udeb_$(ARCH)_$(FEATURESET)_$(FLAVOUR)_$(TYPE): MODULES_INPUT = $(PACKAGE_INPUT)/lib/modules/$(ABI_VERSION)
install-image-udeb_$(ARCH)_$(FEATURESET)_$(FLAVOUR)_$(TYPE): $(STAMPS_DIR)/build_$(ARCH)_$(FEATURESET)_$(FLAVOUR)_$(TYPE)
install-image-udeb_$(ARCH)_$(FEATURESET)_$(FLAVOUR)_plain:
mkdir -p $(BUILD_DIR)/udeb/boot $(BUILD_DIR)/udeb/lib/modules
ln -sf $(abspath $(BOOT_INPUT)) $(BUILD_DIR)/udeb/boot/$(IMAGE_INSTALL_STEM)-$(ABI_VERSION)
ln -sf $(abspath $(MODULES_INPUT)) $(BUILD_DIR)/udeb/lib/modules/$(ABI_VERSION)
install-udeb_$(ARCH): export KW_DEFCONFIG_DIR=debian/installer
install-udeb_$(ARCH): export KW_CONFIG_DIR=debian/installer/$(ARCH)
install-udeb_$(ARCH): export SOURCEDIR=$(BUILD_DIR)/udeb
install-udeb_$(ARCH): DH_OPTIONS=$(PACKAGE_NAMES:%=-p%)
install-udeb_$(ARCH):
dh_testdir
dh_prep
kernel-wedge install-files $(ABINAME)
kernel-wedge install-files $(ABINAME_INTERNAL)
kernel-wedge check $(PACKAGE_NAMES)
dh_fixperms
dh_gencontrol

View File

@ -1,5 +1,6 @@
Package: linux-headers-@abiname@@localversion@
Depends: linux-headers-@abiname@-common@localversion_headers@ (= ${binary:Version}), linux-kbuild-@version@, ${misc:Depends}
Provides: linux-headers-@abiname_internal@@localversion@
Description: Header files for Linux @abiname@@localversion@
This package provides the architecture-specific kernel header files
for Linux kernel @abiname@@localversion@, generally

View File

@ -1,5 +1,5 @@
Package: linux-image-@abiname@@localversion@
Provides: linux-modules-@abiname@@localversion@
Provides: linux-modules-@abiname@@localversion@, linux-image-@abiname_internal@@localversion@
Pre-Depends: debconf | debconf-2.0
Depends: kmod | module-init-tools, linux-base (>= 3~), ${misc:Depends}
Recommends: firmware-linux-free (>= 3~), ${kernel:Recommends}

View File

@ -1,5 +1,5 @@
Package: linux-image-@abiname@@localversion@
Provides: linux-image
Provides: linux-image, linux-image-@abiname_internal@@localversion@
Suggests: linux-doc-@version@
Depends: ${misc:Depends}
Description: Linux @upstreamversion@ for @class@

View File

@ -11,7 +11,7 @@ my $capb = capb('backup', 'escape');
$|=1;
# Predefined values:
my $version = "@abiname@@localversion@";
my $version = "@abiname_internal@@localversion@";
my $arch = "@arch@";
my $link_in_boot = "";
my $no_symlink = "";

View File

@ -19,7 +19,7 @@ if ( ! $@ )
$|=1;
# Predefined values:
my $version = "@abiname@@localversion@";
my $version = "@abiname_internal@@localversion@";
my $link_in_boot = "";
my $kimage = "@image-stem@";
my $postrm_hook = ''; #Normally we do not

View File

@ -10,7 +10,7 @@ my $capb=capb("backup");
$|=1;
# Predefined values:
my $version = "@abiname@@localversion@";
my $version = "@abiname_internal@@localversion@";
my $kimage = "@image-stem@";
my $preinst_hook = ''; #Normally we do not
my $package_name = "linux-image-$version";

View File

@ -8,7 +8,7 @@ my $capb=capb("backup");
$|=1;
# Predefined values:
my $version = "@abiname@@localversion@";
my $version = "@abiname_internal@@localversion@";
my $kimage = "@image-stem@";
my $prerm_hook = ''; #Normally we do not
my $package_name = "linux-image-$version";