Use glib-sys via re-exported `glib::ffi` (and similar for gio)

In general only `-sys` crates should depend on other `-sys`
crates.  IOW for us, `ostree-sys` depends on `glib-sys`.

By using the re-export, we avoid needing to keep a version lock
between `glib` and `glib-sys` in our main crate.  And similar
is true of our higher level reverse dependencies (e.g. `ostree-rs-ext`).

Also weaken our dependency to `0.14` as that's clearer.
This commit is contained in:
Colin Walters 2021-08-03 15:41:30 -04:00
parent 709b35bf11
commit 9b57bda607
11 changed files with 24 additions and 34 deletions

View File

@ -60,9 +60,6 @@ pages:
variables: variables:
RUSTDOCFLAGS: >- RUSTDOCFLAGS: >-
-Z unstable-options -Z unstable-options
--extern-html-root-url glib_sys=https://gtk-rs.org/docs
--extern-html-root-url gobject_sys=https://gtk-rs.org/docs
--extern-html-root-url gio_sys=https://gtk-rs.org/docs
--extern-html-root-url glib=https://gtk-rs.org/docs --extern-html-root-url glib=https://gtk-rs.org/docs
--extern-html-root-url gio=https://gtk-rs.org/docs --extern-html-root-url gio=https://gtk-rs.org/docs
script: script:

View File

@ -30,11 +30,8 @@ members = [".", "sys"]
[dependencies] [dependencies]
bitflags = "1.2.1" bitflags = "1.2.1"
ffi = { package = "ostree-sys", path = "sys", version = "0.8.1" } ffi = { package = "ostree-sys", path = "sys", version = "0.8.1" }
gio = "0.14.0" gio = "0.14"
gio-sys = "0.14.0" glib = "0.14"
glib = "0.14.0"
glib-sys = "0.14.0"
gobject-sys = "0.14.0"
hex = "0.4.2" hex = "0.4.2"
libc = "0.2" libc = "0.2"
once_cell = "1.4.0" once_cell = "1.4.0"

View File

@ -1,5 +1,5 @@
use glib::ffi::{g_free, g_malloc0, gpointer};
use glib::translate::{FromGlibPtrFull, FromGlibPtrNone}; use glib::translate::{FromGlibPtrFull, FromGlibPtrNone};
use glib_sys::{g_free, g_malloc0, gpointer};
use once_cell::sync::OnceCell; use once_cell::sync::OnceCell;
use std::ptr::copy_nonoverlapping; use std::ptr::copy_nonoverlapping;
@ -168,8 +168,8 @@ impl FromGlibPtrNone<*mut [u8; BYTES_LEN]> for Checksum {
#[cfg(test)] #[cfg(test)]
mod tests { mod tests {
use super::*; use super::*;
use glib::ffi::g_malloc0;
use glib::translate::from_glib_full; use glib::translate::from_glib_full;
use glib_sys::g_malloc0;
const CHECKSUM_BYTES: &[u8; BYTES_LEN] = b"\xbf\x87S\x06x>\xfd\xc5\xbc\xab7\xea\x10\xb6\xcaN\x9bj\xea\x8b\x94X\r\x0c\xa9J\xf1 V\\\x0e\x8a"; const CHECKSUM_BYTES: &[u8; BYTES_LEN] = b"\xbf\x87S\x06x>\xfd\xc5\xbc\xab7\xea\x10\xb6\xcaN\x9bj\xea\x8b\x94X\r\x0c\xa9J\xf1 V\\\x0e\x8a";
const CHECKSUM_HEX: &str = "bf875306783efdc5bcab37ea10b6ca4e9b6aea8b94580d0ca94af120565c0e8a"; const CHECKSUM_HEX: &str = "bf875306783efdc5bcab37ea10b6ca4e9b6aea8b94580d0ca94af120565c0e8a";

View File

@ -1,8 +1,8 @@
#[cfg(any(feature = "v2017_13", feature = "dox"))] #[cfg(any(feature = "v2017_13", feature = "dox"))]
use crate::ChecksumFlags; use crate::ChecksumFlags;
use crate::{Checksum, ObjectType}; use crate::{Checksum, ObjectType};
use glib::ffi::GFALSE;
use glib::{prelude::*, translate::*}; use glib::{prelude::*, translate::*};
use glib_sys::GFALSE;
use std::{future::Future, mem::MaybeUninit, pin::Pin, ptr}; use std::{future::Future, mem::MaybeUninit, pin::Pin, ptr};
/// Compute the SHA-256 checksum of a file. /// Compute the SHA-256 checksum of a file.
@ -41,9 +41,9 @@ pub fn checksum_file_async<
unsafe extern "C" fn checksum_file_async_trampoline< unsafe extern "C" fn checksum_file_async_trampoline<
R: FnOnce(Result<Checksum, Box<dyn std::error::Error>>) + Send + 'static, R: FnOnce(Result<Checksum, Box<dyn std::error::Error>>) + Send + 'static,
>( >(
_source_object: *mut gobject_sys::GObject, _source_object: *mut glib::gobject_ffi::GObject,
res: *mut gio_sys::GAsyncResult, res: *mut gio::ffi::GAsyncResult,
user_data: glib_sys::gpointer, user_data: glib::ffi::gpointer,
) { ) {
let mut error = ptr::null_mut(); let mut error = ptr::null_mut();
let mut out_csum = MaybeUninit::uninit(); let mut out_csum = MaybeUninit::uninit();
@ -145,7 +145,7 @@ pub fn checksum_file_at<P: IsA<gio::Cancellable>>(
unsafe fn checksum_file_error( unsafe fn checksum_file_error(
out_csum: *mut [*mut u8; 32], out_csum: *mut [*mut u8; 32],
error: *mut glib_sys::GError, error: *mut glib::ffi::GError,
ret: i32, ret: i32,
) -> Result<Checksum, Box<dyn std::error::Error>> { ) -> Result<Checksum, Box<dyn std::error::Error>> {
if !error.is_null() { if !error.is_null() {

View File

@ -3,7 +3,6 @@ use crate::{object_name_deserialize, object_name_serialize, object_to_string};
use glib; use glib;
use glib::translate::*; use glib::translate::*;
use glib::GString; use glib::GString;
use glib_sys;
use std::fmt::Display; use std::fmt::Display;
use std::fmt::Error; use std::fmt::Error;
use std::fmt::Formatter; use std::fmt::Formatter;
@ -11,7 +10,7 @@ use std::hash::Hash;
use std::hash::Hasher; use std::hash::Hasher;
fn hash_object_name(v: &glib::Variant) -> u32 { fn hash_object_name(v: &glib::Variant) -> u32 {
unsafe { ffi::ostree_hash_object_name(v.to_glib_none().0 as glib_sys::gconstpointer) } unsafe { ffi::ostree_hash_object_name(v.to_glib_none().0 as glib::ffi::gconstpointer) }
} }
/// A reference to an object in an OSTree repo. It contains both a checksum and an /// A reference to an object in an OSTree repo. It contains both a checksum and an

View File

@ -2,9 +2,8 @@
use crate::RepoListRefsExtFlags; use crate::RepoListRefsExtFlags;
use crate::{Checksum, ObjectName, ObjectType, Repo}; use crate::{Checksum, ObjectName, ObjectType, Repo};
use ffi; use ffi;
use gio_sys; use glib::ffi as glib_sys;
use glib::{self, translate::*, Error, IsA}; use glib::{self, translate::*, Error, IsA};
use glib_sys;
use std::{ use std::{
collections::{HashMap, HashSet}, collections::{HashMap, HashSet},
future::Future, future::Future,
@ -193,9 +192,9 @@ impl Repo {
unsafe extern "C" fn write_content_async_trampoline< unsafe extern "C" fn write_content_async_trampoline<
R: FnOnce(Result<Checksum, Error>) + Send + 'static, R: FnOnce(Result<Checksum, Error>) + Send + 'static,
>( >(
_source_object: *mut gobject_sys::GObject, _source_object: *mut glib::gobject_ffi::GObject,
res: *mut gio_sys::GAsyncResult, res: *mut gio::ffi::GAsyncResult,
user_data: glib_sys::gpointer, user_data: glib::ffi::gpointer,
) { ) {
let mut error = ptr::null_mut(); let mut error = ptr::null_mut();
let mut out_csum = MaybeUninit::uninit(); let mut out_csum = MaybeUninit::uninit();
@ -268,8 +267,8 @@ impl Repo {
unsafe extern "C" fn write_metadata_async_trampoline< unsafe extern "C" fn write_metadata_async_trampoline<
Q: FnOnce(Result<Checksum, Error>) + Send + 'static, Q: FnOnce(Result<Checksum, Error>) + Send + 'static,
>( >(
_source_object: *mut gobject_sys::GObject, _source_object: *mut glib::gobject_ffi::GObject,
res: *mut gio_sys::GAsyncResult, res: *mut gio::ffi::GAsyncResult,
user_data: glib_sys::gpointer, user_data: glib_sys::gpointer,
) { ) {
let mut error = ptr::null_mut(); let mut error = ptr::null_mut();

View File

@ -166,7 +166,7 @@ impl<'a> ToGlibPtr<'a, *const ffi::OstreeRepoCheckoutAtOptions> for RepoCheckout
#[cfg(test)] #[cfg(test)]
mod tests { mod tests {
use super::*; use super::*;
use glib_sys::{GFALSE, GTRUE}; use glib::ffi::{GFALSE, GTRUE};
use std::ffi::{CStr, CString}; use std::ffi::{CStr, CString};
use std::ptr; use std::ptr;

View File

@ -1,6 +1,6 @@
use crate::{Repo, RepoCheckoutFilterResult}; use crate::{Repo, RepoCheckoutFilterResult};
use glib::ffi::gpointer;
use glib::translate::*; use glib::translate::*;
use glib_sys::gpointer;
use libc::c_char; use libc::c_char;
use std::any::Any; use std::any::Any;
use std::panic::catch_unwind; use std::panic::catch_unwind;

View File

@ -1,13 +1,11 @@
use gobject_sys;
glib::wrapper! { glib::wrapper! {
/// A list of statistics for each transaction that may be interesting for reporting purposes. /// A list of statistics for each transaction that may be interesting for reporting purposes.
#[derive(Debug, PartialEq, Eq, PartialOrd, Ord, Hash)] #[derive(Debug, PartialEq, Eq, PartialOrd, Ord, Hash)]
pub struct RepoTransactionStats(Boxed<ffi::OstreeRepoTransactionStats>); pub struct RepoTransactionStats(Boxed<ffi::OstreeRepoTransactionStats>);
match fn { match fn {
copy => |ptr| gobject_sys::g_boxed_copy(ffi::ostree_repo_transaction_stats_get_type(), ptr as *mut _) as *mut ffi::OstreeRepoTransactionStats, copy => |ptr| glib::gobject_ffi::g_boxed_copy(ffi::ostree_repo_transaction_stats_get_type(), ptr as *mut _) as *mut ffi::OstreeRepoTransactionStats,
free => |ptr| gobject_sys::g_boxed_free(ffi::ostree_repo_transaction_stats_get_type(), ptr as *mut _), free => |ptr| glib::gobject_ffi::g_boxed_free(ffi::ostree_repo_transaction_stats_get_type(), ptr as *mut _),
init => |_ptr| (), init => |_ptr| (),
clear => |_ptr| (), clear => |_ptr| (),
type_ => || ffi::ostree_repo_transaction_stats_get_type(), type_ => || ffi::ostree_repo_transaction_stats_get_type(),

View File

@ -33,7 +33,7 @@ impl<'a> ToGlibPtr<'a, *const OstreeSysrootWriteDeploymentsOpts> for SysrootWrit
#[cfg(test)] #[cfg(test)]
mod tests { mod tests {
use super::*; use super::*;
use glib_sys::{GFALSE, GTRUE}; use glib::ffi::{GFALSE, GTRUE};
#[test] #[test]
fn should_convert_default_options() { fn should_convert_default_options() {

View File

@ -5,9 +5,9 @@ repository = "fkrull/ostree-rs"
system-deps = "3" system-deps = "3"
[dependencies] [dependencies]
glib-sys = "0.14.0" glib-sys = "0.14"
gobject-sys = "0.14.0" gobject-sys = "0.14"
gio-sys = "0.14.0" gio-sys = "0.14"
libc = "0.2" libc = "0.2"
[dev-dependencies] [dev-dependencies]