env-package-metadata
authorMatthias Klose <doko@debian.org>
Sun, 25 Aug 2024 15:32:28 +0000 (17:32 +0200)
committerMatthias Klose <doko@debian.org>
Sun, 25 Aug 2024 15:32:28 +0000 (17:32 +0200)
Gbp-Pq: Name env-package-metadata.diff

gold/layout.cc
ld/ldelf.c

index b43ae841a6cc90689d6e62244ce6fa83f9be885b..56b7acd0a5f46c3a846ebe438b5f8020623bfb74 100644 (file)
@@ -3560,15 +3560,32 @@ Layout::create_build_id()
 // If --package-metadata was used, set up the package metadata note.
 // https://systemd.io/ELF_PACKAGE_METADATA/
 
+static const char*
+get_package_metadata()
+{
+  if (parameters->options().user_set_package_metadata())
+    {
+      const char* desc = parameters->options().package_metadata();
+      if (strcmp(desc, "") != 0)
+       return desc;
+    }
+
+  if (getenv("ELF_PACKAGE_METADATA"))
+    {
+      const char* desc = getenv("ELF_PACKAGE_METADATA");
+      if (strcmp(desc, "") != 0)
+       return desc;
+    }
+
+  return NULL;
+}
+
 void
 Layout::create_package_metadata()
 {
-  if (!parameters->options().user_set_package_metadata())
-    return;
-
-  const char* desc = parameters->options().package_metadata();
-  if (strcmp(desc, "") == 0)
-    return;
+  const char* desc = get_package_metadata();
+  if (desc == NULL)
+     return;
 
 #ifdef HAVE_JANSSON
   json_error_t json_error;
index 09691609fc0e920eb53dabc7050c0aee046d2f0e..8bb279fe471bfca1a90b16250c325d12f8308aed 100644 (file)
@@ -97,6 +97,18 @@ ldelf_after_parse (void)
        einfo (_("%F%P: common page size (0x%v) > maximum page size (0x%v)\n"),
               link_info.commonpagesize, link_info.maxpagesize);
     }
+
+  if (!ldelf_emit_note_fdo_package_metadata)
+    {
+      char *package_metadata = getenv("ELF_PACKAGE_METADATA");
+
+      if (package_metadata)
+       {
+         ldelf_emit_note_fdo_package_metadata =
+           xmalloc (strlen (package_metadata) + 1);
+         strcpy (ldelf_emit_note_fdo_package_metadata, package_metadata);
+       }
+    }
 }
 
 /* Handle the generation of DT_NEEDED tags.  */