Struct fuchsia_pkg::PackageBuildManifest
source · pub struct PackageBuildManifest(/* private fields */);
Expand description
A PackageBuildManifest
lists the files that should be included in a Fuchsia package. Both
external_contents
and far_contents
are maps from package resource paths in the to-be-created
package to paths on the local filesystem. Package resource paths start with “meta/” if and only
if they are in far_contents
.
Implementations§
source§impl PackageBuildManifest
impl PackageBuildManifest
sourcepub fn from_external_and_far_contents(
external_contents: BTreeMap<String, String>,
far_contents: BTreeMap<String, String>
) -> Result<Self, PackageBuildManifestError>
pub fn from_external_and_far_contents( external_contents: BTreeMap<String, String>, far_contents: BTreeMap<String, String> ) -> Result<Self, PackageBuildManifestError>
Creates a PackageBuildManifest
from external and far contents maps.
external_contents
is a map from package resource paths to their locations
on the host filesystem. These are the files that will be listed in
meta/contents
. Resource paths in external_contents
must not start with
meta/
or be exactly meta
. Resource paths must not have file/directory collisions,
e.g. [“foo”, “foo/bar”] have a file/directory collision at “foo”, or they will be rejected.
far_contents
is a map from package resource paths to their locations
on the host filesystem. These are the files that will be included bodily in the
package meta.far
archive. Resource paths in far_contents
must start with
meta/
.
Examples
let external_contents = btreemap! {
"lib/mylib.so".to_string() => "build/system/path/mylib.so".to_string()
};
let far_contents = btreemap! {
"meta/my_component_manifest.cm".to_string() =>
"other/build/system/path/my_component_manifest.cm".to_string()
};
let creation_manifest =
PackageBuildManifest::from_external_and_far_contents(external_contents, far_contents)
.unwrap();
sourcepub fn from_json<R: Read>(reader: R) -> Result<Self, PackageBuildManifestError>
pub fn from_json<R: Read>(reader: R) -> Result<Self, PackageBuildManifestError>
Deserializes a PackageBuildManifest
from versioned json.
Examples
let json_string = r#"
{
"version": "1",
"content": {
"/": {
"lib/mylib.so": "build/system/path/mylib.so"
},
"/meta/": {
"my_component_manifest.cml": "other/build/system/path/my_component_manifest.cml"
}
}"#;
let creation_manifest = PackageBuildManifest::from_json(json_string.as_bytes());
pub fn from_dir( root: impl AsRef<Path> ) -> Result<Self, PackageBuildManifestError>
sourcepub fn from_pm_fini<R: BufRead>(
reader: R
) -> Result<Self, PackageBuildManifestError>
pub fn from_pm_fini<R: BufRead>( reader: R ) -> Result<Self, PackageBuildManifestError>
Create a PackageBuildManifest
from a pm-build
-style Fuchsia INI file (fini). fini is a
simple format where each line is an entry of $PKG_PATH=$HOST_PATH
. This copies the
parsing algorithm from pm, where:
- The $PKG_PATH is the string up to the first equals sign.
- If there is a duplicate entry, check if the two entries have the same file contents. If not, error out.
- Only check if the files exist upon duplicate entry.
- Ignores lines without an ‘=’ in it.
Note: This functionality exists only to ease the migration from pm build
. This will be
removed once there are no more users of pm build
-style manifests.
Examples
let fini_string = "\
lib/mylib.so=build/system/path/mylib.so\n\
meta/my_component_manifest.cml=other/build/system/path/my_component_manifest.cml\n";
let creation_manifest = PackageBuildManifest::from_pm_fini(fini_string.as_bytes()).unwrap();
sourcepub fn external_contents(&self) -> &BTreeMap<String, String>
pub fn external_contents(&self) -> &BTreeMap<String, String>
external_contents
lists the blobs that make up the meta/contents file
sourcepub fn far_contents(&self) -> &BTreeMap<String, String>
pub fn far_contents(&self) -> &BTreeMap<String, String>
far_contents
lists the files to be included bodily in the meta.far
Trait Implementations§
source§impl Clone for PackageBuildManifest
impl Clone for PackageBuildManifest
source§fn clone(&self) -> PackageBuildManifest
fn clone(&self) -> PackageBuildManifest
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moresource§impl Debug for PackageBuildManifest
impl Debug for PackageBuildManifest
source§impl PartialEq for PackageBuildManifest
impl PartialEq for PackageBuildManifest
source§fn eq(&self, other: &PackageBuildManifest) -> bool
fn eq(&self, other: &PackageBuildManifest) -> bool
self
and other
values to be equal, and is used
by ==
.