@@ -256,8 +256,7 @@ pub(crate) fn update(name: &str, sysroot: &openat::Dir) -> Result<ComponentUpdat
256256}
257257
258258/// daemon implementation of component adoption
259- pub ( crate ) fn adopt_and_update ( name : & str ) -> Result < ContentMetadata > {
260- let sysroot = openat:: Dir :: open ( "/" ) ?;
259+ pub ( crate ) fn adopt_and_update ( name : & str , sysroot : & openat:: Dir ) -> Result < ContentMetadata > {
261260 let mut state = SavedState :: load_from_disk ( "/" ) ?. unwrap_or_default ( ) ;
262261 let component = component:: new_from_name ( name) ?;
263262 if state. installed . contains_key ( name) {
@@ -269,6 +268,7 @@ pub(crate) fn adopt_and_update(name: &str) -> Result<ContentMetadata> {
269268 let Some ( update) = component. query_update ( & sysroot) ? else {
270269 anyhow:: bail!( "Component {} has no available update" , name) ;
271270 } ;
271+ let sysroot = sysroot. try_clone ( ) ?;
272272 let mut state_guard =
273273 SavedState :: acquire_write_lock ( sysroot) . context ( "Failed to acquire write lock" ) ?;
274274
@@ -449,7 +449,7 @@ pub(crate) fn client_run_update(sysroot: &openat::Dir) -> Result<()> {
449449 }
450450 for ( name, adoptable) in status. adoptable . iter ( ) {
451451 if adoptable. confident {
452- let r: ContentMetadata = adopt_and_update ( name) ?;
452+ let r: ContentMetadata = adopt_and_update ( name, sysroot ) ?;
453453 println ! ( "Adopted and updated: {}: {}" , name, r. version) ;
454454 updated = true ;
455455 } else {
@@ -462,13 +462,13 @@ pub(crate) fn client_run_update(sysroot: &openat::Dir) -> Result<()> {
462462 Ok ( ( ) )
463463}
464464
465- pub ( crate ) fn client_run_adopt_and_update ( ) -> Result < ( ) > {
465+ pub ( crate ) fn client_run_adopt_and_update ( sysroot : & openat :: Dir ) -> Result < ( ) > {
466466 let status: Status = status ( ) ?;
467467 if status. adoptable . is_empty ( ) {
468468 println ! ( "No components are adoptable." ) ;
469469 } else {
470470 for ( name, _) in status. adoptable . iter ( ) {
471- let r: ContentMetadata = adopt_and_update ( name) ?;
471+ let r: ContentMetadata = adopt_and_update ( name, sysroot ) ?;
472472 println ! ( "Adopted and updated: {}: {}" , name, r. version) ;
473473 }
474474 }
0 commit comments