[config_data] Put files in meta/
Files in config_data are usually small.
Put them in meta/ so they're archived, rather than rounding up to blob
boundaries.
Impact: >3MB saved in one of the product builds. :)
Bug: 37055
Fixed: 37055
Change-Id: Ia5513e5c942dce4ad8a4826931d5804613a4d9af
Reviewed-on: https://fuchsia-review.googlesource.com/c/fuchsia/+/434554
Commit-Queue: Shai Barack <shayba@google.com>
Reviewed-by: Petr Hosek <phosek@google.com>
Reviewed-by: Fady Samuel <fsamuel@google.com>
Testability-Review: Fady Samuel <fsamuel@google.com>
diff --git a/build/config.gni b/build/config.gni
index 8bcbfef..dc8620c 100644
--- a/build/config.gni
+++ b/build/config.gni
@@ -61,8 +61,12 @@
}
foreach(source, sources) {
foreach(target, process_file_template([ source ], outputs)) {
- config_package_entries += [ "data/" + for_pkg + "/" + target + "=" +
- rebase_path(source, root_build_dir) ]
+ # Config files are usually small, so package them in meta/ so they're
+ # archived together rather than spread across individual blobs.
+ # See also: fxbug.dev/37055
+ config_package_entries +=
+ [ "meta/data/" + for_pkg + "/" + target + "=" +
+ rebase_path(source, root_build_dir) ]
}
}
}
diff --git a/build/tools/validate_sysmgr_config.py b/build/tools/validate_sysmgr_config.py
index c6898a5..4b545d4 100755
--- a/build/tools/validate_sysmgr_config.py
+++ b/build/tools/validate_sysmgr_config.py
@@ -28,10 +28,10 @@
The input provided to this tool is expected to be the config-data package
manifest, formatted like this::
- data/some_package/foo=../../src/somewhere/foo
- data/sysmgr/services.config=../../src/sys/sysmgr/config/services.config
- data/sysmgr/file1.config=../../src/bar/file1.config
- data/other_package/baz=../../some/other/path/baz
+ meta/data/some_package/foo=../../src/somewhere/foo
+ meta/data/sysmgr/services.config=../../src/sys/sysmgr/config/services.config
+ meta/data/sysmgr/file1.config=../../src/bar/file1.config
+ meta/data/other_package/baz=../../some/other/path/baz
where the path before the '=' is the destination path in the package, and the
path after the '=' is the source file (rebased to the root build directory).
@@ -65,7 +65,9 @@
lines = f.read().splitlines()
# Build a list of all the source paths that contribute to sysmgr's config-data
- sysmgr_lines = [line for line in lines if line.startswith('data/sysmgr/')]
+ sysmgr_lines = [
+ line for line in lines if line.startswith('meta/data/sysmgr/')
+ ]
sysmgr_config_files = [line.split('=')[1] for line in sysmgr_lines]
# Parse all config files.
diff --git a/garnet/bin/run_test_component/main.cc b/garnet/bin/run_test_component/main.cc
index b5526d0..1039926 100644
--- a/garnet/bin/run_test_component/main.cc
+++ b/garnet/bin/run_test_component/main.cc
@@ -54,7 +54,7 @@
const uint64_t kNanosInSec = 1000000000UL;
const std::string max_severity_config_path =
- "/pkgfs/packages/config-data/0/data/run_test_component";
+ "/pkgfs/packages/config-data/0/meta/data/run_test_component";
void PrintUsage() {
fprintf(stderr, R"(
diff --git a/garnet/bin/setui/meta/setui_service.cml b/garnet/bin/setui/meta/setui_service.cml
index ad60c87..ea41d70 100644
--- a/garnet/bin/setui/meta/setui_service.cml
+++ b/garnet/bin/setui/meta/setui_service.cml
@@ -47,7 +47,7 @@
// features: config-data
{
- directory: "/pkgfs/packages/config-data/0/data/setui_service",
+ directory: "/pkgfs/packages/config-data/0/meta/data/setui_service",
from: "parent",
as: "/config/data",
rights: [ "r*" ],
diff --git a/garnet/bin/setui/src/agent/earcons/utils.rs b/garnet/bin/setui/src/agent/earcons/utils.rs
index 29531f1..5a0a5d7 100644
--- a/garnet/bin/setui/src/agent/earcons/utils.rs
+++ b/garnet/bin/setui/src/agent/earcons/utils.rs
@@ -22,12 +22,15 @@
name: &str,
) -> Result<fidl::endpoints::ClientEnd<fidl_fuchsia_io::FileMarker>, Error> {
// We try two paths here, because normal components see their config package data resources in
- // /pkg/data and shell tools see them in /pkgfs/packages/config-data/0/data/<pkg>.
+ // /pkg/data and shell tools see them in /pkgfs/packages/config-data/0/meta/data/<pkg>.
Ok(fidl::endpoints::ClientEnd::<fidl_fuchsia_io::FileMarker>::new(zx::Channel::from(
fdio::transfer_fd(
File::open(format!("/config/data/{}", name))
.or_else(|_| {
- File::open(format!("/pkgfs/packages/config-data/0/data/setui_service/{}", name))
+ File::open(format!(
+ "/pkgfs/packages/config-data/0/meta/data/setui_service/{}",
+ name
+ ))
})
.context("Opening package data file")?,
)?,
diff --git a/src/session/bin/component_manager/meta/component_manager_sfw.cmx b/src/session/bin/component_manager/meta/component_manager_sfw.cmx
index 8d66ad0d..25cee37 100644
--- a/src/session/bin/component_manager/meta/component_manager_sfw.cmx
+++ b/src/session/bin/component_manager/meta/component_manager_sfw.cmx
@@ -21,8 +21,8 @@
"root-ssl-certificates"
],
"pkgfs": [
- "packages/config-data/0/data/cast_agent",
- "packages/config-data/0/data/setui_service"
+ "packages/config-data/0/meta/data/cast_agent",
+ "packages/config-data/0/meta/data/setui_service"
],
"services": [
"fuchsia.accessibility.SettingsManager",
diff --git a/src/session/bin/session_manager/meta/session_manager.cml b/src/session/bin/session_manager/meta/session_manager.cml
index 553df89..866c41d 100644
--- a/src/session/bin/session_manager/meta/session_manager.cml
+++ b/src/session/bin/session_manager/meta/session_manager.cml
@@ -137,13 +137,13 @@
},
{
// features: config-data for cast_agent
- directory: "/pkgfs/packages/config-data/0/data/cast_agent",
+ directory: "/pkgfs/packages/config-data/0/meta/data/cast_agent",
// There is an approved Component Framework design to support
// offering subdirectories.
//
// WHEN AVAILABLE, THIS SHOULD BE CHANGED TO JUST:
- // directory: "/pkgfs/packages/config-data/0/data",
+ // directory: "/pkgfs/packages/config-data/0/meta/data",
// as: "/pkgfs-config-data"
// and then share "/pkgfs-config-data/cast_agent" with the
// cast_agent component.
@@ -153,7 +153,7 @@
},
{
// features: config-data for setui_service (see above)
- directory: "/pkgfs/packages/config-data/0/data/setui_service",
+ directory: "/pkgfs/packages/config-data/0/meta/data/setui_service",
from: "parent",
to: [ "#session" ],
rights: [ "r*" ],
diff --git a/src/storage/fshost/meta/fshost.cml b/src/storage/fshost/meta/fshost.cml
index 786dcdd2..8ce9852 100644
--- a/src/storage/fshost/meta/fshost.cml
+++ b/src/storage/fshost/meta/fshost.cml
@@ -9,7 +9,7 @@
directory: "config-data",
from: "self",
rights: [ "r*" ],
- path: "/delayed/fs/pkgfs/packages/config-data/0/data",
+ path: "/delayed/fs/pkgfs/packages/config-data/0/meta/data",
},
],
use: [
@@ -107,7 +107,7 @@
from: "self",
},
{
- directory: "/delayed/fs/pkgfs/packages/config-data/0/data",
+ directory: "/delayed/fs/pkgfs/packages/config-data/0/meta/data",
from: "self",
as: "/config/data",
rights: [ "r*" ],
diff --git a/src/sys/appmgr/appmgr.cc b/src/sys/appmgr/appmgr.cc
index 2332cf3..c36d048 100644
--- a/src/sys/appmgr/appmgr.cc
+++ b/src/sys/appmgr/appmgr.cc
@@ -66,7 +66,7 @@
storage_watchdog_.Run(dispatcher);
// 1. Create root realm.
- fxl::UniqueFD appmgr_config_dir(open("/pkgfs/packages/config-data/0/data/appmgr", O_RDONLY));
+ fxl::UniqueFD appmgr_config_dir(open("/pkgfs/packages/config-data/0/meta/data/appmgr", O_RDONLY));
fit::result<fbl::RefPtr<ComponentIdIndex>, ComponentIdIndex::Error> component_id_index =
ComponentIdIndex::CreateFromAppmgrConfigDir(appmgr_config_dir);
FX_CHECK(component_id_index) << "Cannot read component ID Index. error = "
diff --git a/src/sys/appmgr/integration_tests/lifecycle/meta/appmgr-lifecycle-tests.cmx b/src/sys/appmgr/integration_tests/lifecycle/meta/appmgr-lifecycle-tests.cmx
index f9ae5ee..2b8cc83 100644
--- a/src/sys/appmgr/integration_tests/lifecycle/meta/appmgr-lifecycle-tests.cmx
+++ b/src/sys/appmgr/integration_tests/lifecycle/meta/appmgr-lifecycle-tests.cmx
@@ -8,7 +8,7 @@
"isolated-temp"
],
"pkgfs": [
- "packages/config-data/0/data/appmgr"
+ "packages/config-data/0/meta/data/appmgr"
],
"services": [
"fuchsia.logger.LogSink",
diff --git a/src/sys/appmgr/integration_tests/outdir/src/main.rs b/src/sys/appmgr/integration_tests/outdir/src/main.rs
index b247d2c..c7c8bae 100644
--- a/src/sys/appmgr/integration_tests/outdir/src/main.rs
+++ b/src/sys/appmgr/integration_tests/outdir/src/main.rs
@@ -84,14 +84,16 @@
},
"config-data" => pseudo_directory! {
"0" => pseudo_directory! {
- "data" => pseudo_directory! {
- "sysmgr" => pseudo_directory! {
- "services.config" => read_only_static(SYSMGR_SERVICES_CONFIG),
- },
- "appmgr" => pseudo_directory! {
- "scheme_map" => pseudo_directory! {
- "default.config" => read_only_static(APPMGR_SCHEME_MAP),
- }
+ "meta" => pseudo_directory! {
+ "data" => pseudo_directory! {
+ "sysmgr" => pseudo_directory! {
+ "services.config" => read_only_static(SYSMGR_SERVICES_CONFIG),
+ },
+ "appmgr" => pseudo_directory! {
+ "scheme_map" => pseudo_directory! {
+ "default.config" => read_only_static(APPMGR_SCHEME_MAP),
+ }
+ },
},
},
},
diff --git a/src/sys/appmgr/namespace_builder.cc b/src/sys/appmgr/namespace_builder.cc
index c090ed5..296c34f 100644
--- a/src/sys/appmgr/namespace_builder.cc
+++ b/src/sys/appmgr/namespace_builder.cc
@@ -48,7 +48,8 @@
void NamespaceBuilder::AddConfigData(const SandboxMetadata& sandbox, const std::string& pkg_name) {
for (const auto& feature : sandbox.features()) {
if (feature == "config-data") {
- PushDirectoryFromPathAs("/pkgfs/packages/config-data/0/data/" + pkg_name, "/config/data");
+ PushDirectoryFromPathAs("/pkgfs/packages/config-data/0/meta/data/" + pkg_name,
+ "/config/data");
}
}
}
@@ -154,7 +155,7 @@
PushDirectoryFromPath("/dev/class/goldfish-control");
PushDirectoryFromPath("/dev/class/goldfish-pipe");
PushDirectoryFromPath("/dev/class/gpu");
- PushDirectoryFromPathAs("/pkgfs/packages/config-data/0/data/vulkan-icd/icd.d",
+ PushDirectoryFromPathAs("/pkgfs/packages/config-data/0/meta/data/vulkan-icd/icd.d",
"/config/vulkan/icd.d");
} else if (feature == "isolated-cache-storage") {
PushDirectoryFromPathAs(isolated_cache_path_factory().value(), "/cache");
diff --git a/src/sys/component_manager_for_test/config.json b/src/sys/component_manager_for_test/config.json
index 12150a3..28b21cf 100644
--- a/src/sys/component_manager_for_test/config.json
+++ b/src/sys/component_manager_for_test/config.json
@@ -12,7 +12,7 @@
{
directory: "config-data",
rights: [ "r*" ],
- path: "/pkgfs/packages/config-data/0/data",
+ path: "/pkgfs/packages/config-data/0/meta/data",
},
{
protocol: [
diff --git a/src/sys/component_manager_for_test/meta/component_manager_for_test.cmx b/src/sys/component_manager_for_test/meta/component_manager_for_test.cmx
index a3ca025e..c24d55c 100644
--- a/src/sys/component_manager_for_test/meta/component_manager_for_test.cmx
+++ b/src/sys/component_manager_for_test/meta/component_manager_for_test.cmx
@@ -14,7 +14,7 @@
"isolated-temp"
],
"pkgfs": [
- "packages/config-data/0/data"
+ "packages/config-data/0/meta/data"
],
"services": [
"fuchsia.boot.WriteOnlyLog",
diff --git a/src/sys/component_manager_for_test/meta/test_manager_envelope.cml b/src/sys/component_manager_for_test/meta/test_manager_envelope.cml
index e0ab002..3dbcdbf 100644
--- a/src/sys/component_manager_for_test/meta/test_manager_envelope.cml
+++ b/src/sys/component_manager_for_test/meta/test_manager_envelope.cml
@@ -1,5 +1,5 @@
// We need this cml so that we can transform paths from appmgr's namespace like
-// "/pkgfs/packages/config-data/0/data" to "/config/data" and present them to test_manager.
+// "/pkgfs/packages/config-data/0/meta/data" to "/config/data" and present them to test_manager.
// TODO(56604): I don't think we need this component anymore?
{
children: [