[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