Bug#768167: dpkg-architecture export DEB_TARGET_* make cross build failure
Package: src:gcc-4.9
Version: 4.9.2-1
In the past, dpkg-architecture doesn't export DEB_TARGET_* Vars,
so in rules.defs
ifdef DEB_TARGET_GNU_TYPE
TARGET_VARS := $(shell dpkg-architecture -f -t$(DEB_TARGET_GNU_TYPE)
2>/dev/null)
else
# allow debian/target to be used instead of DEB_GCC_TARGET - this
was requested
# by toolchain-source maintainer
DEBIAN_TARGET_FILE := $(strip $(if $(wildcard debian/target),$(shell
cat debian/target 2>/dev/null)))
ifndef DEB_TARGET_ARCH
ifneq (,$(DEBIAN_TARGET_FILE))
DEB_TARGET_ARCH := $(DEBIAN_TARGET_FILE)
else
ifdef DEB_GCC_TARGET
DEB_TARGET_ARCH := $(DEB_GCC_TARGET)
else
DEB_TARGET_ARCH := $(DEB_HOST_ARCH)
endif
endif
endif
TARGET_VARS := $(shell dpkg-architecture -f -a$(DEB_TARGET_ARCH) 2>/dev/null)
endif
DEB_TARGET_ARCH ?= $(call vafilt,$(TARGET_VARS),DEB_HOST_ARCH)
DEB_TARGET_ARCH_OS ?= $(call vafilt,$(TARGET_VARS),DEB_HOST_ARCH_OS)
DEB_TARGET_ARCH_CPU ?= $(call vafilt,$(TARGET_VARS),DEB_HOST_ARCH_CPU)
DEB_TARGET_GNU_CPU ?= $(call vafilt,$(TARGET_VARS),DEB_HOST_GNU_CPU)
DEB_TARGET_GNU_TYPE ?= $(call vafilt,$(TARGET_VARS),DEB_HOST_GNU_TYPE)
DEB_TARGET_GNU_SYSTEM ?= $(call vafilt,$(TARGET_VARS),DEB_HOST_GNU_SYSTEM)
DEB_TARGET_MULTIARCH ?= $(call vafilt,$(TARGET_VARS),DEB_HOST_MULTIARCH)
works
But now, when DEB_TARGET_GNU_TYPE and DEB_TARGET_ARCH always define,
we can not get cross complier with debian/target file or DEB_GCC_TARGET var.
Modifying it to this can fix this problem
# allow debian/target to be used instead of DEB_GCC_TARGET - this was requested
# by toolchain-source maintainer
DEBIAN_TARGET_FILE := $(strip $(if $(wildcard debian/target),$(shell
cat debian/target 2>/dev/null)))
ifndef DEB_TARGET_ARCH
ifneq (,$(DEBIAN_TARGET_FILE))
DEB_TARGET_ARCH := $(DEBIAN_TARGET_FILE)
else
ifdef DEB_GCC_TARGET
DEB_TARGET_ARCH := $(DEB_GCC_TARGET)
else
DEB_TARGET_ARCH := $(DEB_HOST_ARCH)
endif
endif
endif
TARGET_VARS := $(shell dpkg-architecture -f -a$(DEB_TARGET_ARCH) 2>/dev/null)
DEB_TARGET_ARCH := $(call vafilt,$(TARGET_VARS),DEB_HOST_ARCH)
DEB_TARGET_ARCH_OS := $(call vafilt,$(TARGET_VARS),DEB_HOST_ARCH_OS)
DEB_TARGET_ARCH_CPU := $(call vafilt,$(TARGET_VARS),DEB_HOST_ARCH_CPU)
DEB_TARGET_GNU_CPU := $(call vafilt,$(TARGET_VARS),DEB_HOST_GNU_CPU)
DEB_TARGET_GNU_TYPE := $(call vafilt,$(TARGET_VARS),DEB_HOST_GNU_TYPE)
DEB_TARGET_GNU_SYSTEM := $(call vafilt,$(TARGET_VARS),DEB_HOST_GNU_SYSTEM)
DEB_TARGET_MULTIARCH := $(call vafilt,$(TARGET_VARS),DEB_HOST_MULTIARCH)
GCC 4.8 also has the same problem.
--
YunQiang Su
--- gcc-4.9-4.9.2/debian/rules.defs 2014-11-06 00:12:34.000000000 +0800
+++ gcc-4.9/debian/rules.defs 2014-11-06 00:03:38.081051557 +0800
@@ -89,33 +89,30 @@
ifdef GCC_TARGET
DEB_GCC_TARGET := $(GCC_TARGET)
endif
-ifdef DEB_TARGET_GNU_TYPE
- TARGET_VARS := $(shell dpkg-architecture -f -t$(DEB_TARGET_GNU_TYPE) 2>/dev/null)
-else
- # allow debian/target to be used instead of DEB_GCC_TARGET - this was requested
- # by toolchain-source maintainer
- DEBIAN_TARGET_FILE := $(strip $(if $(wildcard debian/target),$(shell cat debian/target 2>/dev/null)))
- ifndef DEB_TARGET_ARCH
- ifneq (,$(DEBIAN_TARGET_FILE))
- DEB_TARGET_ARCH := $(DEBIAN_TARGET_FILE)
+
+# allow debian/target to be used instead of DEB_GCC_TARGET - this was requested
+# by toolchain-source maintainer
+DEBIAN_TARGET_FILE := $(strip $(if $(wildcard debian/target),$(shell cat debian/target 2>/dev/null)))
+ifndef DEB_TARGET_ARCH
+ ifneq (,$(DEBIAN_TARGET_FILE))
+ DEB_TARGET_ARCH := $(DEBIAN_TARGET_FILE)
+ else
+ ifdef DEB_GCC_TARGET
+ DEB_TARGET_ARCH := $(DEB_GCC_TARGET)
else
- ifdef DEB_GCC_TARGET
- DEB_TARGET_ARCH := $(DEB_GCC_TARGET)
- else
- DEB_TARGET_ARCH := $(DEB_HOST_ARCH)
- endif
+ DEB_TARGET_ARCH := $(DEB_HOST_ARCH)
endif
endif
- TARGET_VARS := $(shell dpkg-architecture -f -a$(DEB_TARGET_ARCH) 2>/dev/null)
endif
+TARGET_VARS := $(shell dpkg-architecture -f -a$(DEB_TARGET_ARCH) 2>/dev/null)
-DEB_TARGET_ARCH ?= $(call vafilt,$(TARGET_VARS),DEB_HOST_ARCH)
-DEB_TARGET_ARCH_OS ?= $(call vafilt,$(TARGET_VARS),DEB_HOST_ARCH_OS)
-DEB_TARGET_ARCH_CPU ?= $(call vafilt,$(TARGET_VARS),DEB_HOST_ARCH_CPU)
-DEB_TARGET_GNU_CPU ?= $(call vafilt,$(TARGET_VARS),DEB_HOST_GNU_CPU)
-DEB_TARGET_GNU_TYPE ?= $(call vafilt,$(TARGET_VARS),DEB_HOST_GNU_TYPE)
-DEB_TARGET_GNU_SYSTEM ?= $(call vafilt,$(TARGET_VARS),DEB_HOST_GNU_SYSTEM)
-DEB_TARGET_MULTIARCH ?= $(call vafilt,$(TARGET_VARS),DEB_HOST_MULTIARCH)
+DEB_TARGET_ARCH := $(call vafilt,$(TARGET_VARS),DEB_HOST_ARCH)
+DEB_TARGET_ARCH_OS := $(call vafilt,$(TARGET_VARS),DEB_HOST_ARCH_OS)
+DEB_TARGET_ARCH_CPU := $(call vafilt,$(TARGET_VARS),DEB_HOST_ARCH_CPU)
+DEB_TARGET_GNU_CPU := $(call vafilt,$(TARGET_VARS),DEB_HOST_GNU_CPU)
+DEB_TARGET_GNU_TYPE := $(call vafilt,$(TARGET_VARS),DEB_HOST_GNU_TYPE)
+DEB_TARGET_GNU_SYSTEM := $(call vafilt,$(TARGET_VARS),DEB_HOST_GNU_SYSTEM)
+DEB_TARGET_MULTIARCH := $(call vafilt,$(TARGET_VARS),DEB_HOST_MULTIARCH)
ifeq ($(DEB_TARGET_GNU_TYPE),i486-linux-gnu)
DEB_TARGET_GNU_TYPE = i586-linux-gnu
Reply to: