env-package-metadata
authorMatthias Klose <doko@debian.org>
Wed, 4 Dec 2024 13:17:25 +0000 (14:17 +0100)
committerMatthias Klose <doko@debian.org>
Wed, 4 Dec 2024 13:17:25 +0000 (14:17 +0100)
Gbp-Pq: Name env-package-metadata.diff

Makefile.in
Makefile.tpl
gold/layout.cc
ld/ldelf.c

index f12c251f9c815607f084f78072fda54a01910f35..8a0dd6a54222774f48686a44b805fe07a81b06da 100644 (file)
@@ -2823,6 +2823,8 @@ do-check:
        @: $(MAKE); $(unstage)
        @r=`${PWD_COMMAND}`; export r; \
        s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+       echo "Unset ELF_PACKAGE_METADATA for tests"; \
+       export -n ELF_PACKAGE_METADATA; \
        $(MAKE) $(RECURSE_FLAGS_TO_PASS) check-host check-target
 
 # Automated reporting of test results.
index 6e22adecd2f125835baaa3ec67244d102ea6c646..216326a75bf36b997f5dcdc2430f9d6a3cc24f8f 100644 (file)
@@ -1008,6 +1008,8 @@ do-check:
        @: $(MAKE); $(unstage)
        @r=`${PWD_COMMAND}`; export r; \
        s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+       echo "Unset ELF_PACKAGE_METADATA for tests"; \
+       export -n ELF_PACKAGE_METADATA; \
        $(MAKE) $(RECURSE_FLAGS_TO_PASS) check-host check-target
 
 # Automated reporting of test results.
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 54cdf45a99941879902a87715cd2adfd25985b1c..f7f3a930e75844c23651a8aba92268c33d444a35 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.  */