[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: