File tree Expand file tree Collapse file tree 4 files changed +28
-12
lines changed
Expand file tree Collapse file tree 4 files changed +28
-12
lines changed Original file line number Diff line number Diff line change @@ -127,16 +127,17 @@ impl Component for Bios {
127127 } )
128128 }
129129
130- fn generate_update_metadata ( & self , sysroot_path : & str ) -> Result < ContentMetadata > {
130+ fn generate_update_metadata ( & self , sysroot_path : & str ) -> Result < Option < ContentMetadata > > {
131131 let grub_install = Path :: new ( sysroot_path) . join ( GRUB_BIN ) ;
132132 if !grub_install. exists ( ) {
133- bail ! ( "Failed to find {:?}" , grub_install) ;
133+ println ! ( "Failed to find {:?}" , grub_install) ;
134+ return Ok ( None ) ;
134135 }
135136
136137 // Query the rpm database and list the package and build times for /usr/sbin/grub2-install
137138 let meta = packagesystem:: query_files ( sysroot_path, [ & grub_install] ) ?;
138139 write_update_metadata ( sysroot_path, self , & meta) ?;
139- Ok ( meta)
140+ Ok ( Some ( meta) )
140141 }
141142
142143 fn query_adopt ( & self , devices : & Option < Vec < String > > ) -> Result < Option < Adoptable > > {
Original file line number Diff line number Diff line change @@ -93,6 +93,15 @@ pub(crate) fn install(
9393 continue ;
9494 }
9595
96+ // skip components that don't have an update metadata
97+ if component. query_update ( & source_root_dir) ?. is_none ( ) {
98+ println ! (
99+ "Skip installing component {} without update metadata" ,
100+ component. name( )
101+ ) ;
102+ continue ;
103+ }
104+
96105 let meta = component
97106 . install ( & source_root, dest_root, device, update_firmware)
98107 . with_context ( || format ! ( "installing component {}" , component. name( ) ) ) ?;
@@ -199,12 +208,18 @@ pub(crate) fn generate_update_metadata(sysroot_path: &str) -> Result<()> {
199208 std:: fs:: create_dir_all ( & updates_dir)
200209 . with_context ( || format ! ( "Failed to create updates dir {:?}" , & updates_dir) ) ?;
201210 for component in get_components ( ) . values ( ) {
202- let v = component. generate_update_metadata ( sysroot_path) ?;
203- println ! (
204- "Generated update layout for {}: {}" ,
205- component. name( ) ,
206- v. version,
207- ) ;
211+ if let Some ( v) = component. generate_update_metadata ( sysroot_path) ? {
212+ println ! (
213+ "Generated update layout for {}: {}" ,
214+ component. name( ) ,
215+ v. version,
216+ ) ;
217+ } else {
218+ println ! (
219+ "Generating update layout for {} was not possible, skipping." ,
220+ component. name( ) ,
221+ ) ;
222+ }
208223 }
209224
210225 Ok ( ( ) )
Original file line number Diff line number Diff line change @@ -62,7 +62,7 @@ pub(crate) trait Component {
6262 /// this is an `rpm-ostree compose tree` for example. For a dual-partition
6363 /// style updater, this would be run as part of a postprocessing step
6464 /// while the filesystem for the partition is mounted.
65- fn generate_update_metadata ( & self , sysroot : & str ) -> Result < ContentMetadata > ;
65+ fn generate_update_metadata ( & self , sysroot : & str ) -> Result < Option < ContentMetadata > > ;
6666
6767 /// Used on the client to query for an update cached in the current booted OS.
6868 fn query_update ( & self , sysroot : & openat:: Dir ) -> Result < Option < ContentMetadata > > ;
Original file line number Diff line number Diff line change @@ -460,7 +460,7 @@ impl Component for Efi {
460460 } )
461461 }
462462
463- fn generate_update_metadata ( & self , sysroot : & str ) -> Result < ContentMetadata > {
463+ fn generate_update_metadata ( & self , sysroot : & str ) -> Result < Option < ContentMetadata > > {
464464 let sysroot_path = Utf8Path :: new ( sysroot) ;
465465
466466 // copy EFI files to updates dir from usr/lib/efi
@@ -533,7 +533,7 @@ impl Component for Efi {
533533 } ;
534534
535535 write_update_metadata ( sysroot, self , & meta) ?;
536- Ok ( meta)
536+ Ok ( Some ( meta) )
537537 }
538538
539539 fn query_update ( & self , sysroot : & openat:: Dir ) -> Result < Option < ContentMetadata > > {
You can’t perform that action at this time.
0 commit comments