diff --git a/rust-bindings/rust/Cargo.toml b/rust-bindings/rust/Cargo.toml index 83720c5d..49904dbc 100644 --- a/rust-bindings/rust/Cargo.toml +++ b/rust-bindings/rust/Cargo.toml @@ -80,4 +80,5 @@ v2019_2 = ["v2018_9", "ostree-sys/v2019_2"] v2019_3 = ["v2019_2", "ostree-sys/v2019_3"] v2019_4 = ["v2019_3", "ostree-sys/v2019_4"] v2019_6 = ["v2019_4", "ostree-sys/v2019_6"] -latest = ["v2019_6"] +v2020_1 = ["v2019_6", "ostree-sys/v2020_1"] +latest = ["v2020_1"] diff --git a/rust-bindings/rust/README.md b/rust-bindings/rust/README.md index 9f796df5..b96aa752 100644 --- a/rust-bindings/rust/README.md +++ b/rust-bindings/rust/README.md @@ -40,7 +40,7 @@ version as well: ```toml [dependencies.ostree] version = "0.7" -features = ["v2019_6"] +features = ["v2020_1"] ``` ## Developing diff --git a/rust-bindings/rust/src/auto/functions.rs b/rust-bindings/rust/src/auto/functions.rs index 71acf40d..f439af45 100644 --- a/rust-bindings/rust/src/auto/functions.rs +++ b/rust-bindings/rust/src/auto/functions.rs @@ -107,6 +107,11 @@ pub fn commit_get_content_checksum(commit_variant: &glib::Variant) -> Option Result<(), glib::Error> { +// unsafe { TODO: call ostree_sys:ostree_commit_get_object_sizes() } +//} + pub fn commit_get_parent(commit_variant: &glib::Variant) -> Option { unsafe { from_glib_full(ostree_sys::ostree_commit_get_parent(commit_variant.to_glib_none().0)) @@ -158,16 +163,16 @@ pub fn create_directory_metadata(dir_info: &gio::FileInfo, xattrs: Option<&glib: } } -//pub fn diff_dirs, Q: IsA, R: IsA>(flags: DiffFlags, a: &P, b: &Q, modified: /*Unknown conversion*//*Unimplemented*/PtrArray TypeId { ns_id: 1, id: 25 }, removed: /*Unknown conversion*//*Unimplemented*/PtrArray TypeId { ns_id: 4, id: 15 }, added: /*Unknown conversion*//*Unimplemented*/PtrArray TypeId { ns_id: 4, id: 15 }, cancellable: Option<&R>) -> Result<(), glib::Error> { +//pub fn diff_dirs, Q: IsA, R: IsA>(flags: DiffFlags, a: &P, b: &Q, modified: /*Unknown conversion*//*Unimplemented*/PtrArray TypeId { ns_id: 1, id: 27 }, removed: /*Unknown conversion*//*Unimplemented*/PtrArray TypeId { ns_id: 4, id: 15 }, added: /*Unknown conversion*//*Unimplemented*/PtrArray TypeId { ns_id: 4, id: 15 }, cancellable: Option<&R>) -> Result<(), glib::Error> { // unsafe { TODO: call ostree_sys:ostree_diff_dirs() } //} //#[cfg(any(feature = "v2017_4", feature = "dox"))] -//pub fn diff_dirs_with_options, Q: IsA, R: IsA>(flags: DiffFlags, a: &P, b: &Q, modified: /*Unknown conversion*//*Unimplemented*/PtrArray TypeId { ns_id: 1, id: 25 }, removed: /*Unknown conversion*//*Unimplemented*/PtrArray TypeId { ns_id: 4, id: 15 }, added: /*Unknown conversion*//*Unimplemented*/PtrArray TypeId { ns_id: 4, id: 15 }, options: /*Ignored*/Option<&mut DiffDirsOptions>, cancellable: Option<&R>) -> Result<(), glib::Error> { +//pub fn diff_dirs_with_options, Q: IsA, R: IsA>(flags: DiffFlags, a: &P, b: &Q, modified: /*Unknown conversion*//*Unimplemented*/PtrArray TypeId { ns_id: 1, id: 27 }, removed: /*Unknown conversion*//*Unimplemented*/PtrArray TypeId { ns_id: 4, id: 15 }, added: /*Unknown conversion*//*Unimplemented*/PtrArray TypeId { ns_id: 4, id: 15 }, options: /*Ignored*/Option<&mut DiffDirsOptions>, cancellable: Option<&R>) -> Result<(), glib::Error> { // unsafe { TODO: call ostree_sys:ostree_diff_dirs_with_options() } //} -//pub fn diff_print, Q: IsA>(a: &P, b: &Q, modified: /*Unknown conversion*//*Unimplemented*/PtrArray TypeId { ns_id: 1, id: 25 }, removed: /*Unknown conversion*//*Unimplemented*/PtrArray TypeId { ns_id: 4, id: 15 }, added: /*Unknown conversion*//*Unimplemented*/PtrArray TypeId { ns_id: 4, id: 15 }) { +//pub fn diff_print, Q: IsA>(a: &P, b: &Q, modified: /*Unknown conversion*//*Unimplemented*/PtrArray TypeId { ns_id: 1, id: 27 }, removed: /*Unknown conversion*//*Unimplemented*/PtrArray TypeId { ns_id: 4, id: 15 }, added: /*Unknown conversion*//*Unimplemented*/PtrArray TypeId { ns_id: 4, id: 15 }) { // unsafe { TODO: call ostree_sys:ostree_diff_print() } //} diff --git a/rust-bindings/rust/src/auto/gpg_verify_result.rs b/rust-bindings/rust/src/auto/gpg_verify_result.rs index 5aaa2ce9..3e93a604 100644 --- a/rust-bindings/rust/src/auto/gpg_verify_result.rs +++ b/rust-bindings/rust/src/auto/gpg_verify_result.rs @@ -38,7 +38,7 @@ impl GpgVerifyResult { } } - //pub fn get(&self, signature_index: u32, attrs: /*Unimplemented*/&CArray TypeId { ns_id: 1, id: 27 }) -> Option { + //pub fn get(&self, signature_index: u32, attrs: /*Unimplemented*/&CArray TypeId { ns_id: 1, id: 29 }) -> Option { // unsafe { TODO: call ostree_sys:ostree_gpg_verify_result_get() } //} diff --git a/rust-bindings/rust/src/auto/mutable_tree.rs b/rust-bindings/rust/src/auto/mutable_tree.rs index da6b2e2c..4bec41b7 100644 --- a/rust-bindings/rust/src/auto/mutable_tree.rs +++ b/rust-bindings/rust/src/auto/mutable_tree.rs @@ -60,7 +60,7 @@ pub trait MutableTreeExt: 'static { fn get_metadata_checksum(&self) -> Option; - //fn get_subdirs(&self) -> /*Unknown conversion*//*Unimplemented*/HashTable TypeId { ns_id: 0, id: 28 }/TypeId { ns_id: 1, id: 40 }; + //fn get_subdirs(&self) -> /*Unknown conversion*//*Unimplemented*/HashTable TypeId { ns_id: 0, id: 28 }/TypeId { ns_id: 1, id: 42 }; fn lookup(&self, name: &str) -> Result<(GString, MutableTree), glib::Error>; @@ -122,7 +122,7 @@ impl> MutableTreeExt for O { } } - //fn get_subdirs(&self) -> /*Unknown conversion*//*Unimplemented*/HashTable TypeId { ns_id: 0, id: 28 }/TypeId { ns_id: 1, id: 40 } { + //fn get_subdirs(&self) -> /*Unknown conversion*//*Unimplemented*/HashTable TypeId { ns_id: 0, id: 28 }/TypeId { ns_id: 1, id: 42 } { // unsafe { TODO: call ostree_sys:ostree_mutable_tree_get_subdirs() } //} diff --git a/rust-bindings/rust/src/auto/sysroot.rs b/rust-bindings/rust/src/auto/sysroot.rs index 93880f92..613d46a1 100644 --- a/rust-bindings/rust/src/auto/sysroot.rs +++ b/rust-bindings/rust/src/auto/sysroot.rs @@ -141,7 +141,7 @@ impl Sysroot { } } - //pub fn get_deployments(&self) -> /*Unknown conversion*//*Unimplemented*/PtrArray TypeId { ns_id: 1, id: 20 } { + //pub fn get_deployments(&self) -> /*Unknown conversion*//*Unimplemented*/PtrArray TypeId { ns_id: 1, id: 22 } { // unsafe { TODO: call ostree_sys:ostree_sysroot_get_deployments() } //} @@ -194,6 +194,22 @@ impl Sysroot { } } + #[cfg(any(feature = "v2020_1", feature = "dox"))] + pub fn initialize(&self) -> Result<(), glib::Error> { + unsafe { + let mut error = ptr::null_mut(); + let _ = ostree_sys::ostree_sysroot_initialize(self.to_glib_none().0, &mut error); + if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) } + } + } + + #[cfg(any(feature = "v2020_1", feature = "dox"))] + pub fn is_booted(&self) -> bool { + unsafe { + from_glib(ostree_sys::ostree_sysroot_is_booted(self.to_glib_none().0)) + } + } + pub fn load>(&self, cancellable: Option<&P>) -> Result<(), glib::Error> { unsafe { let mut error = ptr::null_mut(); @@ -252,6 +268,14 @@ impl Sysroot { })) } + pub fn lock_with_mount_namespace(&self) -> Result<(), glib::Error> { + unsafe { + let mut error = ptr::null_mut(); + let _ = ostree_sys::ostree_sysroot_lock_with_mount_namespace(self.to_glib_none().0, &mut error); + if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) } + } + } + pub fn origin_new_from_refspec(&self, refspec: &str) -> Option { unsafe { from_glib_full(ostree_sys::ostree_sysroot_origin_new_from_refspec(self.to_glib_none().0, refspec.to_glib_none().0)) @@ -283,6 +307,13 @@ impl Sysroot { } } + #[cfg(any(feature = "v2020_1", feature = "dox"))] + pub fn set_mount_namespace_in_use(&self) { + unsafe { + ostree_sys::ostree_sysroot_set_mount_namespace_in_use(self.to_glib_none().0); + } + } + pub fn simple_write_deployment>(&self, osname: Option<&str>, new_deployment: &Deployment, merge_deployment: Option<&Deployment>, flags: SysrootSimpleWriteDeploymentFlags, cancellable: Option<&P>) -> Result<(), glib::Error> { unsafe { let mut error = ptr::null_mut(); @@ -323,12 +354,12 @@ impl Sysroot { } } - //pub fn write_deployments>(&self, new_deployments: /*Unknown conversion*//*Unimplemented*/PtrArray TypeId { ns_id: 1, id: 20 }, cancellable: Option<&P>) -> Result<(), glib::Error> { + //pub fn write_deployments>(&self, new_deployments: /*Unknown conversion*//*Unimplemented*/PtrArray TypeId { ns_id: 1, id: 22 }, cancellable: Option<&P>) -> Result<(), glib::Error> { // unsafe { TODO: call ostree_sys:ostree_sysroot_write_deployments() } //} //#[cfg(any(feature = "v2017_4", feature = "dox"))] - //pub fn write_deployments_with_options>(&self, new_deployments: /*Unknown conversion*//*Unimplemented*/PtrArray TypeId { ns_id: 1, id: 20 }, opts: /*Ignored*/&mut SysrootWriteDeploymentsOpts, cancellable: Option<&P>) -> Result<(), glib::Error> { + //pub fn write_deployments_with_options>(&self, new_deployments: /*Unknown conversion*//*Unimplemented*/PtrArray TypeId { ns_id: 1, id: 22 }, opts: /*Ignored*/&mut SysrootWriteDeploymentsOpts, cancellable: Option<&P>) -> Result<(), glib::Error> { // unsafe { TODO: call ostree_sys:ostree_sysroot_write_deployments_with_options() } //} diff --git a/rust-bindings/rust/sys/Cargo.toml b/rust-bindings/rust/sys/Cargo.toml index 48e12a8e..d3d916f5 100644 --- a/rust-bindings/rust/sys/Cargo.toml +++ b/rust-bindings/rust/sys/Cargo.toml @@ -46,6 +46,7 @@ v2019_2 = ["v2018_9"] v2019_3 = ["v2019_2"] v2019_4 = ["v2019_3"] v2019_6 = ["v2019_4"] +v2020_1 = ["v2019_6"] dox = [] [lib] diff --git a/rust-bindings/rust/sys/build.rs b/rust-bindings/rust/sys/build.rs index 6db8c4c9..fcb4afe6 100644 --- a/rust-bindings/rust/sys/build.rs +++ b/rust-bindings/rust/sys/build.rs @@ -31,7 +31,9 @@ fn main() { fn find() -> Result<(), Error> { let package_name = "ostree-1"; let shared_libs = ["ostree-1"]; - let version = if cfg!(feature = "v2019_6") { + let version = if cfg!(feature = "v2020_1") { + "2020.1" + } else if cfg!(feature = "v2019_6") { "2019.6" } else if cfg!(feature = "v2019_4") { "2019.4" diff --git a/rust-bindings/rust/sys/src/lib.rs b/rust-bindings/rust/sys/src/lib.rs index ba1fc095..aa3942a0 100644 --- a/rust-bindings/rust/sys/src/lib.rs +++ b/rust-bindings/rust/sys/src/lib.rs @@ -36,6 +36,9 @@ pub type OstreeGpgError = c_int; pub const OSTREE_GPG_ERROR_NO_SIGNATURE: OstreeGpgError = 0; pub const OSTREE_GPG_ERROR_INVALID_SIGNATURE: OstreeGpgError = 1; pub const OSTREE_GPG_ERROR_MISSING_KEY: OstreeGpgError = 2; +pub const OSTREE_GPG_ERROR_EXPIRED_SIGNATURE: OstreeGpgError = 3; +pub const OSTREE_GPG_ERROR_EXPIRED_KEY: OstreeGpgError = 4; +pub const OSTREE_GPG_ERROR_REVOKED_KEY: OstreeGpgError = 5; pub type OstreeGpgSignatureAttr = c_int; pub const OSTREE_GPG_SIGNATURE_ATTR_VALID: OstreeGpgSignatureAttr = 0; @@ -274,6 +277,26 @@ impl ::std::fmt::Debug for OstreeCollectionRef { } } +#[repr(C)] +#[derive(Copy, Clone)] +pub struct OstreeCommitSizesEntry { + pub checksum: *mut c_char, + pub objtype: OstreeObjectType, + pub unpacked: u64, + pub archived: u64, +} + +impl ::std::fmt::Debug for OstreeCommitSizesEntry { + fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result { + f.debug_struct(&format!("OstreeCommitSizesEntry @ {:?}", self as *const _)) + .field("checksum", &self.checksum) + .field("objtype", &self.objtype) + .field("unpacked", &self.unpacked) + .field("archived", &self.archived) + .finish() + } +} + #[repr(C)] #[derive(Copy, Clone)] pub struct OstreeDiffDirsOptions { @@ -907,6 +930,17 @@ extern "C" { #[cfg(any(feature = "v2018_6", feature = "dox"))] pub fn ostree_collection_ref_hash(ref_: gconstpointer) -> c_uint; + //========================================================================= + // OstreeCommitSizesEntry + //========================================================================= + pub fn ostree_commit_sizes_entry_get_type() -> GType; + #[cfg(any(feature = "v2020_1", feature = "dox"))] + pub fn ostree_commit_sizes_entry_new(checksum: *const c_char, objtype: OstreeObjectType, unpacked: u64, archived: u64) -> *mut OstreeCommitSizesEntry; + #[cfg(any(feature = "v2020_1", feature = "dox"))] + pub fn ostree_commit_sizes_entry_copy(entry: *const OstreeCommitSizesEntry) -> *mut OstreeCommitSizesEntry; + #[cfg(any(feature = "v2020_1", feature = "dox"))] + pub fn ostree_commit_sizes_entry_free(entry: *mut OstreeCommitSizesEntry); + //========================================================================= // OstreeDiffItem //========================================================================= @@ -1415,18 +1449,25 @@ extern "C" { pub fn ostree_sysroot_get_subbootversion(self_: *mut OstreeSysroot) -> c_int; #[cfg(any(feature = "v2016_4", feature = "dox"))] pub fn ostree_sysroot_init_osname(self_: *mut OstreeSysroot, osname: *const c_char, cancellable: *mut gio::GCancellable, error: *mut *mut glib::GError) -> gboolean; + #[cfg(any(feature = "v2020_1", feature = "dox"))] + pub fn ostree_sysroot_initialize(self_: *mut OstreeSysroot, error: *mut *mut glib::GError) -> gboolean; + #[cfg(any(feature = "v2020_1", feature = "dox"))] + pub fn ostree_sysroot_is_booted(self_: *mut OstreeSysroot) -> gboolean; pub fn ostree_sysroot_load(self_: *mut OstreeSysroot, cancellable: *mut gio::GCancellable, error: *mut *mut glib::GError) -> gboolean; #[cfg(any(feature = "v2016_4", feature = "dox"))] pub fn ostree_sysroot_load_if_changed(self_: *mut OstreeSysroot, out_changed: *mut gboolean, cancellable: *mut gio::GCancellable, error: *mut *mut glib::GError) -> gboolean; pub fn ostree_sysroot_lock(self_: *mut OstreeSysroot, error: *mut *mut glib::GError) -> gboolean; pub fn ostree_sysroot_lock_async(self_: *mut OstreeSysroot, cancellable: *mut gio::GCancellable, callback: gio::GAsyncReadyCallback, user_data: gpointer); pub fn ostree_sysroot_lock_finish(self_: *mut OstreeSysroot, result: *mut gio::GAsyncResult, error: *mut *mut glib::GError) -> gboolean; + pub fn ostree_sysroot_lock_with_mount_namespace(self_: *mut OstreeSysroot, error: *mut *mut glib::GError) -> gboolean; pub fn ostree_sysroot_origin_new_from_refspec(self_: *mut OstreeSysroot, refspec: *const c_char) -> *mut glib::GKeyFile; pub fn ostree_sysroot_prepare_cleanup(self_: *mut OstreeSysroot, cancellable: *mut gio::GCancellable, error: *mut *mut glib::GError) -> gboolean; #[cfg(any(feature = "v2017_7", feature = "dox"))] pub fn ostree_sysroot_query_deployments_for(self_: *mut OstreeSysroot, osname: *const c_char, out_pending: *mut *mut OstreeDeployment, out_rollback: *mut *mut OstreeDeployment); #[cfg(any(feature = "v2017_7", feature = "dox"))] pub fn ostree_sysroot_repo(self_: *mut OstreeSysroot) -> *mut OstreeRepo; + #[cfg(any(feature = "v2020_1", feature = "dox"))] + pub fn ostree_sysroot_set_mount_namespace_in_use(self_: *mut OstreeSysroot); pub fn ostree_sysroot_simple_write_deployment(sysroot: *mut OstreeSysroot, osname: *const c_char, new_deployment: *mut OstreeDeployment, merge_deployment: *mut OstreeDeployment, flags: OstreeSysrootSimpleWriteDeploymentFlags, cancellable: *mut gio::GCancellable, error: *mut *mut glib::GError) -> gboolean; #[cfg(any(feature = "v2018_5", feature = "dox"))] pub fn ostree_sysroot_stage_tree(self_: *mut OstreeSysroot, osname: *const c_char, revision: *const c_char, origin: *mut glib::GKeyFile, merge_deployment: *mut OstreeDeployment, override_kernel_argv: *mut *mut c_char, out_new_deployment: *mut *mut OstreeDeployment, cancellable: *mut gio::GCancellable, error: *mut *mut glib::GError) -> gboolean; @@ -1498,6 +1539,8 @@ extern "C" { pub fn ostree_cmp_checksum_bytes(a: *const u8, b: *const u8) -> c_int; #[cfg(any(feature = "v2018_2", feature = "dox"))] pub fn ostree_commit_get_content_checksum(commit_variant: *mut glib::GVariant) -> *mut c_char; + #[cfg(any(feature = "v2020_1", feature = "dox"))] + pub fn ostree_commit_get_object_sizes(commit_variant: *mut glib::GVariant, out_sizes_entries: *mut *mut glib::GPtrArray, error: *mut *mut glib::GError) -> gboolean; pub fn ostree_commit_get_parent(commit_variant: *mut glib::GVariant) -> *mut c_char; pub fn ostree_commit_get_timestamp(commit_variant: *mut glib::GVariant) -> u64; pub fn ostree_content_file_parse(compressed: gboolean, content_path: *mut gio::GFile, trusted: gboolean, out_input: *mut *mut gio::GInputStream, out_file_info: *mut *mut gio::GFileInfo, out_xattrs: *mut *mut glib::GVariant, cancellable: *mut gio::GCancellable, error: *mut *mut glib::GError) -> gboolean; diff --git a/rust-bindings/rust/sys/tests/abi.rs b/rust-bindings/rust/sys/tests/abi.rs index 170cca40..0d0e6ec7 100644 --- a/rust-bindings/rust/sys/tests/abi.rs +++ b/rust-bindings/rust/sys/tests/abi.rs @@ -243,6 +243,7 @@ const RUST_LAYOUTS: &[(&str, Layout)] = &[ ("OstreeChecksumFlags", Layout {size: size_of::(), alignment: align_of::()}), ("OstreeCollectionRef", Layout {size: size_of::(), alignment: align_of::()}), ("OstreeCollectionRefv", Layout {size: size_of::(), alignment: align_of::()}), + ("OstreeCommitSizesEntry", Layout {size: size_of::(), alignment: align_of::()}), ("OstreeDeploymentUnlockedState", Layout {size: size_of::(), alignment: align_of::()}), ("OstreeDiffDirsOptions", Layout {size: size_of::(), alignment: align_of::()}), ("OstreeDiffFlags", Layout {size: size_of::(), alignment: align_of::()}), @@ -305,9 +306,12 @@ const RUST_CONSTANTS: &[(&str, &str)] = &[ ("(guint) OSTREE_DIFF_FLAGS_NONE", "0"), ("OSTREE_DIRMETA_GVARIANT_STRING", "(uuua(ayay))"), ("OSTREE_FILEMETA_GVARIANT_STRING", "(uuua(ayay))"), + ("(gint) OSTREE_GPG_ERROR_EXPIRED_KEY", "4"), + ("(gint) OSTREE_GPG_ERROR_EXPIRED_SIGNATURE", "3"), ("(gint) OSTREE_GPG_ERROR_INVALID_SIGNATURE", "1"), ("(gint) OSTREE_GPG_ERROR_MISSING_KEY", "2"), ("(gint) OSTREE_GPG_ERROR_NO_SIGNATURE", "0"), + ("(gint) OSTREE_GPG_ERROR_REVOKED_KEY", "5"), ("(gint) OSTREE_GPG_SIGNATURE_ATTR_EXP_TIMESTAMP", "7"), ("(gint) OSTREE_GPG_SIGNATURE_ATTR_FINGERPRINT", "5"), ("(gint) OSTREE_GPG_SIGNATURE_ATTR_FINGERPRINT_PRIMARY", "12"),