Struct fuchsia_pkg::PackageBuildManifest
source · pub struct PackageBuildManifest(/* private fields */);
Expand description
Package file list
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 ==
.source§impl Serialize for PackageBuildManifest
impl Serialize for PackageBuildManifest
impl Eq for PackageBuildManifest
impl StructuralPartialEq for PackageBuildManifest
Auto Trait Implementations§
impl Freeze for PackageBuildManifest
impl RefUnwindSafe for PackageBuildManifest
impl Send for PackageBuildManifest
impl Sync for PackageBuildManifest
impl Unpin for PackageBuildManifest
impl UnwindSafe for PackageBuildManifest
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
source§default unsafe fn clone_to_uninit(&self, dst: *mut T)
default unsafe fn clone_to_uninit(&self, dst: *mut T)
clone_to_uninit
)