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

Bug#773065: marked as done (selecting target via dpkg-buildpackage --target-arch)



Your message dated Thu, 07 Feb 2019 03:13:19 +0000
with message-id <E1gra7r-000G9u-7I@fasolo.debian.org>
and subject line Bug#920171: Removed package(s) from unstable
has caused the Debian Bug report #773065,
regarding selecting target via dpkg-buildpackage --target-arch
to be marked as done.

This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.

(NB: If you are a system administrator and have no idea what this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact owner@bugs.debian.org
immediately.)


-- 
773065: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=773065
Debian Bug Tracking System
Contact owner@bugs.debian.org with problems
--- Begin Message ---
Package: src:gcc-4.9
Version: 4.9.2-7
Tags: patch
User: helmutg@debian.org
Usertags: rebootstrap
X-Debbugs-Cc: debian-cross@lists.debian.orgj

Please allow selecting the target architecture using "dpkg-buildpackage
--target-arch" again. This ability was removed in 4.9.2-7 when #768167
was fixed.

I am attaching a diff that enables target selection via:
 * dpkg-buildpackage --target-arch
 * debian/target
 * DEB_GCC_TARGET

Please see below for the rationale for individual hunks.

Helmut

diff -u gcc-4.9-4.9.2/debian/rules.defs gcc-4.9-4.9.2/debian/rules.defs
--- gcc-4.9-4.9.2/debian/rules.defs
+++ gcc-4.9-4.9.2/debian/rules.defs
@@ -31,23 +31,7 @@
 # for rules.sonames
 vafilt_defined = 1
 
-dpkg_target_vars := $(shell (dpkg-architecture | grep -q DEB_TARGET) && echo yes)
-ifeq ($(dpkg_target_vars),yes)
-  DEB_TARGET_ARCH=
-  DEB_TARGET_ARCH_BITS=
-  DEB_TARGET_ARCH_CPU=
-  DEB_TARGET_ARCH_ENDIAN=
-  DEB_TARGET_ARCH_OS=
-  DEB_TARGET_GNU_CPU=
-  DEB_TARGET_GNU_SYSTEM=
-  DEB_TARGET_GNU_TYPE=
-  DEB_TARGET_MULTIARCH=
-endif
-
 DPKG_VARS		:= $(shell dpkg-architecture)
-ifeq ($(dpkg_target_vars),yes)
-  DPKG_VARS		:= $(filter-out DEB_TARGET_%, $(DPKG_VARS))
-endif
 DEB_BUILD_ARCH		?= $(call vafilt,$(DPKG_VARS),DEB_BUILD_ARCH)
 DEB_BUILD_GNU_TYPE	?= $(call vafilt,$(DPKG_VARS),DEB_BUILD_GNU_TYPE)
 DEB_BUILD_MULTIARCH	?= $(call vafilt,$(DPKG_VARS),DEB_BUILD_MULTIARCH)

Explicitly clearing DEB_TARGET_ variables is not needed as they are set
later. Having them cleared prevents selection via dpkg-buildpackage
--target-arch. Furthermore, clearing DEB_TARGET_ assignments from
DPKG_VARS is not necessary, because those are never accessed using
vafilt.

@@ -97,7 +81,7 @@
 
 # ---------------------------------------------------------------------------
 # set target
-# - GNU triplet via DEB_TARGET_GNU_TYPE
+# - dpkg-buildpackage --target-arch (via DEB_TARGET_ARCH)
 # - Debian arch in debian/target
 # - Debian arch via DEB_GCC_TARGET or GCC_TARGET
 #
@@ -105,39 +89,35 @@
 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)
-    else
-      ifdef DEB_GCC_TARGET
-        DEB_TARGET_ARCH := $(DEB_GCC_TARGET)
-      else
-        DEB_TARGET_ARCH := $(DEB_HOST_ARCH)
-      endif
+# since dpkg 1.17.14, DEB_TARGET_* default to DEB_HOST_*
+DEB_TARGET_ARCH ?= $(DEB_HOST_ARCH)
+# 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)))
+# consider DEB_TARGET_* set, if it differs from DEB_HOST_*
+ifeq ($(DEB_TARGET_ARCH),$(DEB_HOST_ARCH))
+  ifneq (,$(DEBIAN_TARGET_FILE))
+    DEB_TARGET_ARCH := $(DEBIAN_TARGET_FILE)
+  else
+    ifdef DEB_GCC_TARGET
+      DEB_TARGET_ARCH := $(DEB_GCC_TARGET)
     endif
   endif

Rather than checking DEB_TARGET_GNU_TYPE, I check DEB_TARGET_ARCH here.
The reason for this is that the only way to determine whether a
DEB_TARGET_* variable was actually set is to compare it to the
DEB_HOST_* counterpart. But DEB_HOST_GNU_TYPE is munged for i386, so on
a i386 build system, DEB_TARGET_GNU_TYPE can differ from
DEB_HOST_GNU_TYPE without being set. Thus this patch does not examine
DEB_HOST_GNU_TYPE at all.

Not supporting DEB_TARGET_GNU_TYPE is not a regression in this patch, as
4.9.2-7 already removed that support. If it needs to be supported
anyway, the major alternative to this approach is to prefer
debian/target and DEB_GCC_TARGET over DEB_TARGET_GNU_TYPE and hope that
it doesn't break the native build on i386.

The order of preference implemented in this patch is:
 * dpkg-buildpackage --target-arch (via DEB_TARGET_ARCH)
 * debian/target
 * DEB_GCC_TARGET

I verified that each of those methods works after applying this patch.

-  TARGET_VARS := $(shell dpkg-architecture -f -a$(DEB_TARGET_ARCH) 2>/dev/null)
-endif
-ifeq ($(dpkg_target_vars),yes)
-  TARGET_VARS		:= $(filter-out DEB_TARGET_%, $(TARGET_VARS))
 endif
+TARGET_VARS := $(shell dpkg-architecture -f -a$(DEB_TARGET_ARCH) 2>/dev/null)
 
Again, no clearing of TARGET_VARS is necessary, because the DEB_TARGET_*
variables are not accessed using vafilt.

 DEB_TARGET_ARCH		:= $(call vafilt,$(TARGET_VARS),DEB_HOST_ARCH)
+DEB_TARGET_ARCH_BITS	:= $(call vafilt,$(TARGET_VARS),DEB_HOST_ARCH_BITS)
 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_ARCH_ENDIAN	:= $(call vafilt,$(TARGET_VARS),DEB_HOST_ARCH_ENDIAN)
 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)
 
Explicitly set the remaining DEB_TARGET_* variables to prevent their
original values from leaking into the build. If they were used in any
place, it would be rather confusing to find out that they were leaks
from the host architecture.
diff -u gcc-4.9-4.9.2/debian/changelog gcc-4.9-4.9.2/debian/changelog
--- gcc-4.9-4.9.2/debian/changelog
+++ gcc-4.9-4.9.2/debian/changelog
@@ -1,3 +1,10 @@
+gcc-4.9 (4.9.2-7.1) UNRELEASED; urgency=low
+
+  * Non-maintainer upload.
+  * Allow target selection via dpkg-buildpackage --target-arch. Closes: #-1.
+
+ -- Helmut Grohne <helmut@subdivi.de>  Thu, 13 Dec 2014 22:11:40 +0100
+
 gcc-4.9 (4.9.2-7) unstable; urgency=medium
 
   * Update to SVN 20141210 (r218575) from the gcc-4_9-branch.
diff -u gcc-4.9-4.9.2/debian/rules.defs gcc-4.9-4.9.2/debian/rules.defs
--- gcc-4.9-4.9.2/debian/rules.defs
+++ gcc-4.9-4.9.2/debian/rules.defs
@@ -31,23 +31,7 @@
 # for rules.sonames
 vafilt_defined = 1
 
-dpkg_target_vars := $(shell (dpkg-architecture | grep -q DEB_TARGET) && echo yes)
-ifeq ($(dpkg_target_vars),yes)
-  DEB_TARGET_ARCH=
-  DEB_TARGET_ARCH_BITS=
-  DEB_TARGET_ARCH_CPU=
-  DEB_TARGET_ARCH_ENDIAN=
-  DEB_TARGET_ARCH_OS=
-  DEB_TARGET_GNU_CPU=
-  DEB_TARGET_GNU_SYSTEM=
-  DEB_TARGET_GNU_TYPE=
-  DEB_TARGET_MULTIARCH=
-endif
-
 DPKG_VARS		:= $(shell dpkg-architecture)
-ifeq ($(dpkg_target_vars),yes)
-  DPKG_VARS		:= $(filter-out DEB_TARGET_%, $(DPKG_VARS))
-endif
 DEB_BUILD_ARCH		?= $(call vafilt,$(DPKG_VARS),DEB_BUILD_ARCH)
 DEB_BUILD_GNU_TYPE	?= $(call vafilt,$(DPKG_VARS),DEB_BUILD_GNU_TYPE)
 DEB_BUILD_MULTIARCH	?= $(call vafilt,$(DPKG_VARS),DEB_BUILD_MULTIARCH)
@@ -97,7 +81,7 @@
 
 # ---------------------------------------------------------------------------
 # set target
-# - GNU triplet via DEB_TARGET_GNU_TYPE
+# - dpkg-buildpackage --target-arch (via DEB_TARGET_ARCH)
 # - Debian arch in debian/target
 # - Debian arch via DEB_GCC_TARGET or GCC_TARGET
 #
@@ -105,32 +89,28 @@
 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)
-    else
-      ifdef DEB_GCC_TARGET
-        DEB_TARGET_ARCH := $(DEB_GCC_TARGET)
-      else
-        DEB_TARGET_ARCH := $(DEB_HOST_ARCH)
-      endif
+# since dpkg 1.17.14, DEB_TARGET_* default to DEB_HOST_*
+DEB_TARGET_ARCH ?= $(DEB_HOST_ARCH)
+# 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)))
+# consider DEB_TARGET_* set, if it differs from DEB_HOST_*
+ifeq ($(DEB_TARGET_ARCH),$(DEB_HOST_ARCH))
+  ifneq (,$(DEBIAN_TARGET_FILE))
+    DEB_TARGET_ARCH := $(DEBIAN_TARGET_FILE)
+  else
+    ifdef DEB_GCC_TARGET
+      DEB_TARGET_ARCH := $(DEB_GCC_TARGET)
     endif
   endif
-  TARGET_VARS := $(shell dpkg-architecture -f -a$(DEB_TARGET_ARCH) 2>/dev/null)
-endif
-ifeq ($(dpkg_target_vars),yes)
-  TARGET_VARS		:= $(filter-out DEB_TARGET_%, $(TARGET_VARS))
 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_BITS	:= $(call vafilt,$(TARGET_VARS),DEB_HOST_ARCH_BITS)
 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_ARCH_ENDIAN	:= $(call vafilt,$(TARGET_VARS),DEB_HOST_ARCH_ENDIAN)
 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)

--- End Message ---
--- Begin Message ---
Version: 6.5.0-2+rm

Dear submitter,

as the package gcc-6 has just been removed from the Debian archive
unstable we hereby close the associated bug reports.  We are sorry
that we couldn't deal with your issue properly.

For details on the removal, please see https://bugs.debian.org/920171

The version of this package that was in Debian prior to this removal
can still be found using http://snapshot.debian.org/.

This message was generated automatically; if you believe that there is
a problem with it please contact the archive administrators by mailing
ftpmaster@ftp-master.debian.org.

Debian distribution maintenance software
pp.
Scott Kitterman (the ftpmaster behind the curtain)

--- End Message ---

Reply to: