[Bug 2071468] Re: ELF package metadata failure: environment variable ‘DEB_HOST_ARCH’ not defined

Launchpad Bug Tracker 2071468 at bugs.launchpad.net
Tue Jul 2 17:22:18 UTC 2024


** Merge proposal linked:
   https://code.launchpad.net/~athos-ribeiro/ubuntu/+source/squid/+git/squid/+merge/468531

-- 
You received this bug notification because you are a member of Ubuntu
Foundations Bugs, which is subscribed to dpkg in Ubuntu.
https://bugs.launchpad.net/bugs/2071468

Title:
  ELF package metadata failure: environment variable ‘DEB_HOST_ARCH’ not
  defined

Status in asymptote package in Ubuntu:
  Fix Released
Status in dpkg package in Ubuntu:
  Triaged
Status in gsequencer package in Ubuntu:
  Fix Released
Status in mosh package in Ubuntu:
  Fix Released
Status in mwrap package in Ubuntu:
  Fix Released
Status in squid package in Ubuntu:
  Triaged

Bug description:
  The ELF package note metadata introduced in dpkg 1.22.6ubuntu11
  (refined in 1.22.6ubuntu14) can cause this failure:

  ```
  gcc fatal error: environment variable ‘DEB_HOST_ARCH’ not defined
  ```

  This happens when the `-specs=/usr/share/dpkg/elf-package-
  metadata.specs` parameter is set but the needed environment variables
  are not set. Cases:

  1. Only the LDFLAGS is queried from dpkg-buildflags. Affected source
  packages builds: python3.12, openjdk-21, cdbs (causing dvbstreamer and
  rp-pppoe fail to build)

  2. autopkgtests

  3. debugging a crash of an application build with the -spec parameter

  This approach is too fragile. An alternative approach would be to specify the `--package-metadata` linker flag directly. The problem with that approach is that the curly brackets and quotation marks need to be escaped. Example failure: Building dpkg would add this parameter to the LDFLAGS:
  ```
  -Wl,--package-metadata,{"type":"deb","os":"ubuntu","name":"dpkg","version":"1.22.6ubuntu15","architecture":"amd64"}
  ```
  The following configure script call (non-relevant parameters deleted):
  ```
  $ gcc -Wl,--package-metadata,{type:deb,os:ubuntu,name:dpkg,version:1.22.6ubuntu15,architecture:amd64}
  /usr/bin/ld: cannot find {type:deb: No such file or directory
  /usr/bin/ld: cannot find os:ubuntu: No such file or directory
  /usr/bin/ld: cannot find name:dpkg: No such file or directory
  /usr/bin/ld: cannot find version:1.22.6ubuntu15: No such file or directory
  /usr/bin/ld: cannot find architecture:amd64}: No such file or directory
  ```

  Proposed solution: Add support for an `--escaped-package-metadata` parameter to the linkers that takes an URL encoded (RFC 3986) parameter. Example:
  ```
  -Wl,--encoded-package-metadata,%7B%22type%22:%22deb%22%2C%22os%22:%22ubuntu%22%2C%22name%22:%22dpkg%22%2C%22version%22:%221.22.6ubuntu15%22%2C%22architecture%22:%22amd64%22%7D
  ```

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/asymptote/+bug/2071468/+subscriptions




More information about the foundations-bugs mailing list