From 8b621656bce3d0b97cf877178f7275c2b9be7390 Mon Sep 17 00:00:00 2001
From: Avi Kivity <avi@cloudius-systems.com>
Date: Mon, 29 Apr 2013 18:15:21 +0300
Subject: [PATCH] bootfs: reduce filename repetition

Instead of specifying

  /foo/some/common/path/name: /bar/some/common/path/name

say

  /foo/&/some/common/path/name: /bar/&

The '/&/' tells mkbootfs where the common name begins; everything after that
is substituted for '&' in the host filesystem filename.
---
 bootfs.manifest     | 34 +++++++++++++++++-----------------
 scripts/mkbootfs.py |  3 +++
 2 files changed, 20 insertions(+), 17 deletions(-)

diff --git a/bootfs.manifest b/bootfs.manifest
index 9f477bb4e..41bbe762a 100644
--- a/bootfs.manifest
+++ b/bootfs.manifest
@@ -1,21 +1,21 @@
 [manifest]
-/usr/lib/jvm/jre/lib/amd64/server/libjvm.so: %(jdkbase)s/jre/lib/amd64/server/libjvm.so
-/usr/lib/jvm/jre/lib/amd64/libverify.so: %(jdkbase)s/jre/lib/amd64/libverify.so
-/usr/lib/jvm/jre/lib/amd64/libjava.so: %(jdkbase)s/jre/lib/amd64/libjava.so
-/usr/lib/jvm/jre/lib/amd64/libzip.so: %(jdkbase)s/jre/lib/amd64/libzip.so
-/usr/lib/jvm/jre/lib/amd64/libnio.so: %(jdkbase)s/jre/lib/amd64/libnio.so
-/usr/lib/jvm/jre/lib/amd64/libawt.so: %(jdkbase)s/jre/lib/amd64/libawt.so
-/usr/lib/jvm/jre/lib/amd64/headless/libmawt.so: %(jdkbase)s/jre/lib/amd64/headless/libmawt.so
-/usr/lib/jvm/jre/lib/amd64/libfontmanager.so: %(jdkbase)s/jre/lib/amd64/libfontmanager.so
-/usr/lib/jvm/jre/lib/amd64/libnet.so: %(jdkbase)s/jre/lib/amd64/libnet.so
-/usr/lib/jvm/jre/lib/resources.jar: %(jdkbase)s/jre/lib/resources.jar
-/usr/lib/jvm/jre/lib/rt.jar: %(jdkbase)s/jre/lib/rt.jar
-/usr/lib/jvm/jre/lib/jsse.jar: %(jdkbase)s/jre/lib/jsse.jar
-/usr/lib/jvm/jre/lib/jce.jar: %(jdkbase)s/jre/lib/jce.jar
-/usr/lib/jvm/jre/lib/charsets.jar: %(jdkbase)s/jre/lib/charsets.jar
-/usr/lib/jvm/jre/lib/rhino.jar: %(jdkbase)s/jre/lib/rhino.jar
-/usr/lib/jvm/jre/lib/meta-index: %(jdkbase)s/jre/lib/meta-index
-/usr/lib/jvm/jre/lib/currency.data: %(jdkbase)s/jre/lib/currency.data
+/usr/lib/jvm/&/jre/lib/amd64/server/libjvm.so: %(jdkbase)s/&
+/usr/lib/jvm/&/jre/lib/amd64/libverify.so: %(jdkbase)s/&
+/usr/lib/jvm/&/jre/lib/amd64/libjava.so: %(jdkbase)s/&
+/usr/lib/jvm/&/jre/lib/amd64/libzip.so: %(jdkbase)s/&
+/usr/lib/jvm/&/jre/lib/amd64/libnio.so: %(jdkbase)s/&
+/usr/lib/jvm/&/jre/lib/amd64/libawt.so: %(jdkbase)s/&
+/usr/lib/jvm/&/jre/lib/amd64/headless/libmawt.so: %(jdkbase)s/&
+/usr/lib/jvm/&/jre/lib/amd64/libfontmanager.so: %(jdkbase)s/&
+/usr/lib/jvm/&/jre/lib/amd64/libnet.so: %(jdkbase)s/&
+/usr/lib/jvm/&/jre/lib/resources.jar: %(jdkbase)s/&
+/usr/lib/jvm/&/jre/lib/rt.jar: %(jdkbase)s/&
+/usr/lib/jvm/&/jre/lib/jsse.jar: %(jdkbase)s/&
+/usr/lib/jvm/&/jre/lib/jce.jar: %(jdkbase)s/&
+/usr/lib/jvm/&/jre/lib/charsets.jar: %(jdkbase)s/&
+/usr/lib/jvm/&/jre/lib/rhino.jar: %(jdkbase)s/&
+/usr/lib/jvm/&/jre/lib/meta-index: %(jdkbase)s/&
+/usr/lib/jvm/&/jre/lib/currency.data: %(jdkbase)s/&
 /usr/lib/libstdc++.so.6: %(gccbase)s/usr/lib64/libstdc++.so.6
 /usr/lib/libgcc_s.so.1: %(gccbase)s/lib64/libgcc_s.so.1
 /usr/lib/libz.so.1: %(miscbase)s/usr/lib64/libz.so.1
diff --git a/scripts/mkbootfs.py b/scripts/mkbootfs.py
index 98a61ad63..b1a67a848 100755
--- a/scripts/mkbootfs.py
+++ b/scripts/mkbootfs.py
@@ -57,6 +57,9 @@ def expand(items):
                     relpath = dirpath[len(hostname):]
                     yield (name + relpath + '/' + filename,
                            hostname + relpath + '/' + filename)
+        elif '/&/' in name and hostname.endswith('/&'):
+            prefix, suffix = name.split('/&/', 1)
+            yield (prefix + '/' + suffix, hostname[:-1] + suffix)
         else:
             yield (name, hostname)
 
-- 
GitLab