diff --git a/debian/changelog b/debian/changelog index 4709f2d2..da7539f5 100644 --- a/debian/changelog +++ b/debian/changelog @@ -16,7 +16,7 @@ llvm-toolchain-snapshot (1:19~++20240529093513+2cfea14a57ad-1~exp2) UNRELEASED; * Pass --package-metadata on distros with supporting linkers (starting with Debian trixie and Ubuntu noble). The package metadata is constructed from the environment variables - DEB_BUILD_OS_RELEASE_ID, DEB_SOURCE, DEB_VERSION and DEB_HOST_ARCH. + ELF_PACKAGE_METADATA. Setting NO_PKG_METADATA=1 disables the generation of the package metadata. -- Sylvestre Ledru Wed, 26 Jun 2024 21:18:27 +0200 diff --git a/debian/patches/link-with-package-metadata.diff b/debian/patches/link-with-package-metadata.diff index a9a8fc01..b82b5ff4 100644 --- a/debian/patches/link-with-package-metadata.diff +++ b/debian/patches/link-with-package-metadata.diff @@ -1,33 +1,21 @@ --- a/clang/lib/Driver/ToolChains/Linux.cpp +++ b/clang/lib/Driver/ToolChains/Linux.cpp -@@ -287,6 +287,33 @@ Linux::Linux(const Driver &D, const llvm +@@ -283,6 +283,21 @@ Linux::Linux(const Driver &D, const llvm ExtraOpts.push_back("--build-id"); #endif + if (Distro.IsDebian() && Distro >= Distro::DebianTrixie + || Distro.IsUbuntu() && Distro >= Distro::UbuntuNoble) + { -+ const char *deb_build_os_release_id = getenv ("DEB_BUILD_OS_RELEASE_ID"); -+ const char *deb_source = getenv ("DEB_SOURCE"); -+ const char *deb_version = getenv ("DEB_VERSION"); -+ const char *deb_host_arch = getenv ("DEB_HOST_ARCH"); ++ const char pkg_metadata = getenv ("ELF_PACKAGE_METADATA"); + const char *no_pkg_metadata = getenv ("NO_PKG_METADATA"); + + if (no_pkg_metadata) { + // don't issue --package-metadata option -+ } else if (!deb_build_os_release_id && !deb_source && !deb_version && !deb_host_arch) { ++ } else if (!pkg_metadata) { + // no environment set for package metadata -+ } else if (!(deb_build_os_release_id && deb_source && deb_version && deb_host_arch)) { -+ // incomple environment -+ // FIXME: emit error + } else { -+ ExtraOpts.push_back(std::string("--package-metadata={") -+ + "\"type\":\"deb\"," -+ + "\"os\":\"" + deb_build_os_release_id + "\"," -+ + "\"name\":\"" + deb_source + "\"," -+ + "\"version\":\"" + deb_version + "\"," -+ + "\"architecture\":\"" + deb_host_arch + "\"" -+ + "}"); ++ ExtraOpts.push_back(std::string("--package-metadata=") + pkg_metadata); + } + } +