@@ -256,8 +256,7 @@ pub(crate) fn update(name: &str, sysroot: &openat::Dir) -> Result<ComponentUpdat
256
256
}
257
257
258
258
/// 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 > {
261
260
let mut state = SavedState :: load_from_disk ( "/" ) ?. unwrap_or_default ( ) ;
262
261
let component = component:: new_from_name ( name) ?;
263
262
if state. installed . contains_key ( name) {
@@ -269,6 +268,7 @@ pub(crate) fn adopt_and_update(name: &str) -> Result<ContentMetadata> {
269
268
let Some ( update) = component. query_update ( & sysroot) ? else {
270
269
anyhow:: bail!( "Component {} has no available update" , name) ;
271
270
} ;
271
+ let sysroot = sysroot. try_clone ( ) ?;
272
272
let mut state_guard =
273
273
SavedState :: acquire_write_lock ( sysroot) . context ( "Failed to acquire write lock" ) ?;
274
274
@@ -449,7 +449,7 @@ pub(crate) fn client_run_update(sysroot: &openat::Dir) -> Result<()> {
449
449
}
450
450
for ( name, adoptable) in status. adoptable . iter ( ) {
451
451
if adoptable. confident {
452
- let r: ContentMetadata = adopt_and_update ( name) ?;
452
+ let r: ContentMetadata = adopt_and_update ( name, sysroot ) ?;
453
453
println ! ( "Adopted and updated: {}: {}" , name, r. version) ;
454
454
updated = true ;
455
455
} else {
@@ -462,13 +462,13 @@ pub(crate) fn client_run_update(sysroot: &openat::Dir) -> Result<()> {
462
462
Ok ( ( ) )
463
463
}
464
464
465
- pub ( crate ) fn client_run_adopt_and_update ( ) -> Result < ( ) > {
465
+ pub ( crate ) fn client_run_adopt_and_update ( sysroot : & openat :: Dir ) -> Result < ( ) > {
466
466
let status: Status = status ( ) ?;
467
467
if status. adoptable . is_empty ( ) {
468
468
println ! ( "No components are adoptable." ) ;
469
469
} else {
470
470
for ( name, _) in status. adoptable . iter ( ) {
471
- let r: ContentMetadata = adopt_and_update ( name) ?;
471
+ let r: ContentMetadata = adopt_and_update ( name, sysroot ) ?;
472
472
println ! ( "Adopted and updated: {}: {}" , name, r. version) ;
473
473
}
474
474
}
0 commit comments