Browse Source

dpkg-architecture: Add new DEB_*_ARCH_ABI and DEB_*_ARCH_LIBC variables

Guillem Jover 7 years ago
parent
commit
9122b2f6bd

+ 2 - 0
debian/changelog

@@ -55,6 +55,8 @@ dpkg (1.18.11) UNRELEASED; urgency=medium
   * Remove default «.» from @INC before loading perl modules in perl code.
     Fixes CVE-2016-1238.
   * Give more information on --set-selections warnings. Closes: #842230
+  * Add new DEB_*_ARCH_ABI and DEB_*_ARCH_LIBC variables to dpkg-architecture
+    and architecture.mk Makefile fragment.
   * Architecture support:
     - Add support for AIX operating system.
     - Add a version pseudo-field to the arch tables.

+ 12 - 0
man/dpkg-architecture.man

@@ -178,6 +178,10 @@ Example paths: /lib/powerpc64le-linux-gnu/, /usr/lib/i386-kfreebsd-gnu/.
 The following variables are set by \fBdpkg\-architecture\fP:
 .IP "\fBDEB_BUILD_ARCH\fP" 4
 The Debian architecture of the build machine.
+.IP "\fBDEB_BUILD_ARCH_ABI\fP" 4
+The Debian abi name of the build machine (since dpkg 1.18.11).
+.IP "\fBDEB_BUILD_ARCH_LIBC\fP" 4
+The Debian libc name of the build machine (since dpkg 1.18.11).
 .IP "\fBDEB_BUILD_ARCH_OS\fP" 4
 The Debian system name of the build machine (since dpkg 1.13.2).
 .IP "\fBDEB_BUILD_ARCH_CPU\fP" 4
@@ -197,6 +201,10 @@ The clarified GNU system type of the build machine, used for filesystem
 paths (since dpkg 1.16.0).
 .IP "\fBDEB_HOST_ARCH\fP" 4
 The Debian architecture of the host machine.
+.IP "\fBDEB_HOST_ARCH_ABI\fP" 4
+The Debian abi name of the host machine (since dpkg 1.18.11).
+.IP "\fBDEB_HOST_ARCH_LIBC\fP" 4
+The Debian libc name of the host machine (since dpkg 1.18.11).
 .IP "\fBDEB_HOST_ARCH_OS\fP" 4
 The Debian system name of the host machine (since dpkg 1.13.2).
 .IP "\fBDEB_HOST_ARCH_CPU\fP" 4
@@ -216,6 +224,10 @@ The clarified GNU system type of the host machine, used for filesystem
 paths (since dpkg 1.16.0).
 .IP "\fBDEB_TARGET_ARCH\fP" 4
 The Debian architecture of the target machine (since dpkg 1.17.14).
+.IP "\fBDEB_TARGET_ARCH_ABI\fP" 4
+The Debian abi name of the target machine (since dpkg 1.18.11).
+.IP "\fBDEB_TARGET_ARCH_LIBC\fP" 4
+The Debian libc name of the target machine (since dpkg 1.18.11).
 .IP "\fBDEB_TARGET_ARCH_OS\fP" 4
 The Debian system name of the target machine (since dpkg 1.17.14).
 .IP "\fBDEB_TARGET_ARCH_CPU\fP" 4

+ 12 - 5
scripts/dpkg-architecture.pl

@@ -123,6 +123,8 @@ use constant DEB_ALL => DEB_BUILD | DEB_HOST | DEB_TARGET |
 
 my %arch_vars = (
     DEB_BUILD_ARCH => DEB_BUILD,
+    DEB_BUILD_ARCH_ABI => DEB_BUILD | DEB_ARCH_INFO,
+    DEB_BUILD_ARCH_LIBC => DEB_BUILD | DEB_ARCH_INFO,
     DEB_BUILD_ARCH_OS => DEB_BUILD | DEB_ARCH_INFO,
     DEB_BUILD_ARCH_CPU => DEB_BUILD | DEB_ARCH_INFO,
     DEB_BUILD_ARCH_BITS => DEB_BUILD | DEB_ARCH_ATTR,
@@ -132,6 +134,8 @@ my %arch_vars = (
     DEB_BUILD_GNU_SYSTEM => DEB_BUILD | DEB_GNU_INFO,
     DEB_BUILD_GNU_TYPE => DEB_BUILD | DEB_GNU_INFO,
     DEB_HOST_ARCH => DEB_HOST,
+    DEB_HOST_ARCH_ABI => DEB_HOST | DEB_ARCH_INFO,
+    DEB_HOST_ARCH_LIBC => DEB_HOST | DEB_ARCH_INFO,
     DEB_HOST_ARCH_OS => DEB_HOST | DEB_ARCH_INFO,
     DEB_HOST_ARCH_CPU => DEB_HOST | DEB_ARCH_INFO,
     DEB_HOST_ARCH_BITS => DEB_HOST | DEB_ARCH_ATTR,
@@ -141,6 +145,8 @@ my %arch_vars = (
     DEB_HOST_GNU_SYSTEM => DEB_HOST | DEB_GNU_INFO,
     DEB_HOST_GNU_TYPE => DEB_HOST | DEB_GNU_INFO,
     DEB_TARGET_ARCH => DEB_TARGET,
+    DEB_TARGET_ARCH_ABI => DEB_TARGET | DEB_ARCH_INFO,
+    DEB_TARGET_ARCH_LIBC => DEB_TARGET | DEB_ARCH_INFO,
     DEB_TARGET_ARCH_OS => DEB_TARGET | DEB_ARCH_INFO,
     DEB_TARGET_ARCH_CPU => DEB_TARGET | DEB_ARCH_INFO,
     DEB_TARGET_ARCH_BITS => DEB_TARGET | DEB_ARCH_ATTR,
@@ -232,8 +238,6 @@ while (@ARGV) {
 }
 
 my %v;
-my $abi;
-my $libc;
 
 #
 # Set build variables
@@ -241,7 +245,8 @@ my $libc;
 
 $v{DEB_BUILD_ARCH} = get_raw_build_arch()
     if (action_needs(DEB_BUILD));
-($abi, $libc, $v{DEB_BUILD_ARCH_OS}, $v{DEB_BUILD_ARCH_CPU}) = debarch_to_debtuple($v{DEB_BUILD_ARCH})
+($v{DEB_BUILD_ARCH_ABI}, $v{DEB_BUILD_ARCH_LIBC},
+ $v{DEB_BUILD_ARCH_OS}, $v{DEB_BUILD_ARCH_CPU}) = debarch_to_debtuple($v{DEB_BUILD_ARCH})
     if (action_needs(DEB_BUILD | DEB_ARCH_INFO));
 ($v{DEB_BUILD_ARCH_BITS}, $v{DEB_BUILD_ARCH_ENDIAN}) = debarch_to_cpuattrs($v{DEB_BUILD_ARCH})
     if (action_needs(DEB_BUILD | DEB_ARCH_ATTR));
@@ -266,7 +271,8 @@ if (action_needs(DEB_BUILD | DEB_GNU_INFO)) {
 
 $v{DEB_HOST_ARCH} = $req_host_arch || get_raw_host_arch()
     if (action_needs(DEB_HOST));
-($abi, $libc, $v{DEB_HOST_ARCH_OS}, $v{DEB_HOST_ARCH_CPU}) = debarch_to_debtuple($v{DEB_HOST_ARCH})
+($v{DEB_HOST_ARCH_ABI}, $v{DEB_HOST_ARCH_LIBC},
+ $v{DEB_HOST_ARCH_OS}, $v{DEB_HOST_ARCH_CPU}) = debarch_to_debtuple($v{DEB_HOST_ARCH})
     if (action_needs(DEB_HOST | DEB_ARCH_INFO));
 ($v{DEB_HOST_ARCH_BITS}, $v{DEB_HOST_ARCH_ENDIAN}) = debarch_to_cpuattrs($v{DEB_HOST_ARCH})
     if (action_needs(DEB_HOST | DEB_ARCH_ATTR));
@@ -302,7 +308,8 @@ if (action_needs(DEB_HOST | DEB_GNU_INFO)) {
 
 $v{DEB_TARGET_ARCH} = $req_target_arch || $req_host_arch || get_raw_host_arch()
     if (action_needs(DEB_TARGET));
-($abi, $libc, $v{DEB_TARGET_ARCH_OS}, $v{DEB_TARGET_ARCH_CPU}) = debarch_to_debtuple($v{DEB_TARGET_ARCH})
+($v{DEB_TARGET_ARCH_ABI}, $v{DEB_TARGET_ARCH_LIBC},
+ $v{DEB_TARGET_ARCH_OS}, $v{DEB_TARGET_ARCH_CPU}) = debarch_to_debtuple($v{DEB_TARGET_ARCH})
     if (action_needs(DEB_TARGET | DEB_ARCH_INFO));
 ($v{DEB_TARGET_ARCH_BITS}, $v{DEB_TARGET_ARCH_ENDIAN}) = debarch_to_cpuattrs($v{DEB_TARGET_ARCH})
     if (action_needs(DEB_TARGET | DEB_ARCH_ATTR));

+ 1 - 1
scripts/mk/architecture.mk

@@ -7,5 +7,5 @@ dpkg_lazy_eval ?= $$(or $$(value DPKG_CACHE_$(1)),$$(eval DPKG_CACHE_$(1) := $$(
 dpkg_architecture_setvar = $(1) ?= $(call dpkg_lazy_eval,$(1),dpkg-architecture -q$(1))
 
 $(foreach machine,BUILD HOST TARGET,\
-  $(foreach var,ARCH ARCH_OS ARCH_CPU ARCH_BITS ARCH_ENDIAN GNU_CPU GNU_SYSTEM GNU_TYPE MULTIARCH,\
+  $(foreach var,ARCH ARCH_ABI ARCH_LIBC ARCH_OS ARCH_CPU ARCH_BITS ARCH_ENDIAN GNU_CPU GNU_SYSTEM GNU_TYPE MULTIARCH,\
     $(eval $(call dpkg_architecture_setvar,DEB_$(machine)_$(var)))))

+ 6 - 0
scripts/t/mk/architecture.mk

@@ -2,27 +2,33 @@ include $(srcdir)/mk/architecture.mk
 
 test:
 	test "$(DEB_BUILD_ARCH)" = "$(TEST_DEB_BUILD_ARCH)"
+	test "$(DEB_BUILD_ARCH_ABI)" = "$(TEST_DEB_BUILD_ARCH_ABI)"
 	test "$(DEB_BUILD_ARCH_BITS)" = "$(TEST_DEB_BUILD_ARCH_BITS)"
 	test "$(DEB_BUILD_ARCH_CPU)" = "$(TEST_DEB_BUILD_ARCH_CPU)"
 	test "$(DEB_BUILD_ARCH_ENDIAN)" = "$(TEST_DEB_BUILD_ARCH_ENDIAN)"
+	test "$(DEB_BUILD_ARCH_LIBC)" = "$(TEST_DEB_BUILD_ARCH_LIBC)"
 	test "$(DEB_BUILD_ARCH_OS)" = "$(TEST_DEB_BUILD_ARCH_OS)"
 	test "$(DEB_BUILD_GNU_CPU)" = "$(TEST_DEB_BUILD_GNU_CPU)"
 	test "$(DEB_BUILD_GNU_SYSTEM)" = "$(TEST_DEB_BUILD_GNU_SYSTEM)"
 	test "$(DEB_BUILD_GNU_TYPE)" = "$(TEST_DEB_BUILD_GNU_TYPE)"
 	test "$(DEB_BUILD_MULTIARCH)" = "$(TEST_DEB_BUILD_MULTIARCH)"
 	test "$(DEB_HOST_ARCH)" = "$(TEST_DEB_HOST_ARCH)"
+	test "$(DEB_HOST_ARCH_ABI)" = "$(TEST_DEB_HOST_ARCH_ABI)"
 	test "$(DEB_HOST_ARCH_BITS)" = "$(TEST_DEB_HOST_ARCH_BITS)"
 	test "$(DEB_HOST_ARCH_CPU)" = "$(TEST_DEB_HOST_ARCH_CPU)"
 	test "$(DEB_HOST_ARCH_ENDIAN)" = "$(TEST_DEB_HOST_ARCH_ENDIAN)"
+	test "$(DEB_HOST_ARCH_LIBC)" = "$(TEST_DEB_HOST_ARCH_LIBC)"
 	test "$(DEB_HOST_ARCH_OS)" = "$(TEST_DEB_HOST_ARCH_OS)"
 	test "$(DEB_HOST_GNU_CPU)" = "$(TEST_DEB_HOST_GNU_CPU)"
 	test "$(DEB_HOST_GNU_SYSTEM)" = "$(TEST_DEB_HOST_GNU_SYSTEM)"
 	test "$(DEB_HOST_GNU_TYPE)" = "$(TEST_DEB_HOST_GNU_TYPE)"
 	test "$(DEB_HOST_MULTIARCH)" = "$(TEST_DEB_HOST_MULTIARCH)"
 	test "$(DEB_TARGET_ARCH)" = "$(TEST_DEB_TARGET_ARCH)"
+	test "$(DEB_TARGET_ARCH_ABI)" = "$(TEST_DEB_TARGET_ARCH_ABI)"
 	test "$(DEB_TARGET_ARCH_BITS)" = "$(TEST_DEB_TARGET_ARCH_BITS)"
 	test "$(DEB_TARGET_ARCH_CPU)" = "$(TEST_DEB_TARGET_ARCH_CPU)"
 	test "$(DEB_TARGET_ARCH_ENDIAN)" = "$(TEST_DEB_TARGET_ARCH_ENDIAN)"
+	test "$(DEB_TARGET_ARCH_LIBC)" = "$(TEST_DEB_TARGET_ARCH_LIBC)"
 	test "$(DEB_TARGET_ARCH_OS)" = "$(TEST_DEB_TARGET_ARCH_OS)"
 	test "$(DEB_TARGET_GNU_CPU)" = "$(TEST_DEB_TARGET_GNU_CPU)"
 	test "$(DEB_TARGET_GNU_SYSTEM)" = "$(TEST_DEB_TARGET_GNU_SYSTEM)"