1
0
mirror of https://github.com/projectatomic/rpm-ostree.git synced 2026-02-05 09:45:27 +01:00
Files
rpm-ostree/rpmostree-cxxrs.h
Jonathan Lebon f1fc6a32b5 daemon/upgrader: Print OSTree signature verification text when pulling OCI
If using OSTree remote signature verification for an OCI pull, print the
verification text we get from ostree-ext.
2025-01-16 20:18:14 -05:00

2081 lines
61 KiB
C++

#pragma once
#include "rpmostree-clientlib.h"
#include "rpmostree-container.hpp"
#include "rpmostree-cxxrsutil.hpp"
#include "rpmostree-diff.hpp"
#include "rpmostree-libbuiltin.h"
#include "rpmostree-output.h"
#include "rpmostree-package-variants.h"
#include "rpmostree-rpm-util.h"
#include "rpmostree-util.h"
#include "rpmostreemain.h"
#include "src/libpriv/rpmostree-cxxrs-prelude.h"
#include <algorithm>
#include <array>
#include <cassert>
#include <cstddef>
#include <cstdint>
#include <initializer_list>
#include <iterator>
#include <memory>
#include <new>
#include <stdexcept>
#include <string>
#include <type_traits>
#include <utility>
namespace rust
{
inline namespace cxxbridge1
{
// #include "rust/cxx.h"
#ifndef CXXBRIDGE1_PANIC
#define CXXBRIDGE1_PANIC
template <typename Exception> void panic [[noreturn]] (const char *msg);
#endif // CXXBRIDGE1_PANIC
struct unsafe_bitcopy_t;
namespace
{
template <typename T> class impl;
} // namespace
template <typename T>::std::size_t size_of ();
template <typename T>::std::size_t align_of ();
#ifndef CXXBRIDGE1_RUST_STRING
#define CXXBRIDGE1_RUST_STRING
class String final
{
public:
String () noexcept;
String (const String &) noexcept;
String (String &&) noexcept;
~String () noexcept;
String (const std::string &);
String (const char *);
String (const char *, std::size_t);
String (const char16_t *);
String (const char16_t *, std::size_t);
static String lossy (const std::string &) noexcept;
static String lossy (const char *) noexcept;
static String lossy (const char *, std::size_t) noexcept;
static String lossy (const char16_t *) noexcept;
static String lossy (const char16_t *, std::size_t) noexcept;
String &operator= (const String &) & noexcept;
String &operator= (String &&) & noexcept;
explicit operator std::string () const;
const char *data () const noexcept;
std::size_t size () const noexcept;
std::size_t length () const noexcept;
bool empty () const noexcept;
const char *c_str () noexcept;
std::size_t capacity () const noexcept;
void reserve (size_t new_cap) noexcept;
using iterator = char *;
iterator begin () noexcept;
iterator end () noexcept;
using const_iterator = const char *;
const_iterator begin () const noexcept;
const_iterator end () const noexcept;
const_iterator cbegin () const noexcept;
const_iterator cend () const noexcept;
bool operator== (const String &) const noexcept;
bool operator!= (const String &) const noexcept;
bool operator< (const String &) const noexcept;
bool operator<= (const String &) const noexcept;
bool operator> (const String &) const noexcept;
bool operator>= (const String &) const noexcept;
void swap (String &) noexcept;
String (unsafe_bitcopy_t, const String &) noexcept;
private:
struct lossy_t;
String (lossy_t, const char *, std::size_t) noexcept;
String (lossy_t, const char16_t *, std::size_t) noexcept;
friend void
swap (String &lhs, String &rhs) noexcept
{
lhs.swap (rhs);
}
std::array<std::uintptr_t, 3> repr;
};
#endif // CXXBRIDGE1_RUST_STRING
#ifndef CXXBRIDGE1_RUST_STR
#define CXXBRIDGE1_RUST_STR
class Str final
{
public:
Str () noexcept;
Str (const String &) noexcept;
Str (const std::string &);
Str (const char *);
Str (const char *, std::size_t);
Str &operator= (const Str &) &noexcept = default;
explicit operator std::string () const;
const char *data () const noexcept;
std::size_t size () const noexcept;
std::size_t length () const noexcept;
bool empty () const noexcept;
Str (const Str &) noexcept = default;
~Str () noexcept = default;
using iterator = const char *;
using const_iterator = const char *;
const_iterator begin () const noexcept;
const_iterator end () const noexcept;
const_iterator cbegin () const noexcept;
const_iterator cend () const noexcept;
bool operator== (const Str &) const noexcept;
bool operator!= (const Str &) const noexcept;
bool operator< (const Str &) const noexcept;
bool operator<= (const Str &) const noexcept;
bool operator> (const Str &) const noexcept;
bool operator>= (const Str &) const noexcept;
void swap (Str &) noexcept;
private:
class uninit;
Str (uninit) noexcept;
friend impl<Str>;
std::array<std::uintptr_t, 2> repr;
};
#endif // CXXBRIDGE1_RUST_STR
#ifndef CXXBRIDGE1_RUST_SLICE
#define CXXBRIDGE1_RUST_SLICE
namespace detail
{
template <bool> struct copy_assignable_if
{
};
template <> struct copy_assignable_if<false>
{
copy_assignable_if () noexcept = default;
copy_assignable_if (const copy_assignable_if &) noexcept = default;
copy_assignable_if &operator= (const copy_assignable_if &) &noexcept = delete;
copy_assignable_if &operator= (copy_assignable_if &&) &noexcept = default;
};
} // namespace detail
template <typename T>
class Slice final : private detail::copy_assignable_if<std::is_const<T>::value>
{
public:
using value_type = T;
Slice () noexcept;
Slice (T *, std::size_t count) noexcept;
template <typename C> explicit Slice (C &c) : Slice (c.data (), c.size ()) {}
Slice &operator= (const Slice<T> &) &noexcept = default;
Slice &operator= (Slice<T> &&) &noexcept = default;
T *data () const noexcept;
std::size_t size () const noexcept;
std::size_t length () const noexcept;
bool empty () const noexcept;
T &operator[] (std::size_t n) const noexcept;
T &at (std::size_t n) const;
T &front () const noexcept;
T &back () const noexcept;
Slice (const Slice<T> &) noexcept = default;
~Slice () noexcept = default;
class iterator;
iterator begin () const noexcept;
iterator end () const noexcept;
void swap (Slice &) noexcept;
private:
class uninit;
Slice (uninit) noexcept;
friend impl<Slice>;
friend void sliceInit (void *, const void *, std::size_t) noexcept;
friend void *slicePtr (const void *) noexcept;
friend std::size_t sliceLen (const void *) noexcept;
std::array<std::uintptr_t, 2> repr;
};
template <typename T> class Slice<T>::iterator final
{
public:
using iterator_category = std::random_access_iterator_tag;
using value_type = T;
using difference_type = std::ptrdiff_t;
using pointer = typename std::add_pointer<T>::type;
using reference = typename std::add_lvalue_reference<T>::type;
reference operator* () const noexcept;
pointer operator->() const noexcept;
reference operator[] (difference_type) const noexcept;
iterator &operator++ () noexcept;
iterator operator++ (int) noexcept;
iterator &operator-- () noexcept;
iterator operator-- (int) noexcept;
iterator &operator+= (difference_type) noexcept;
iterator &operator-= (difference_type) noexcept;
iterator operator+ (difference_type) const noexcept;
iterator operator- (difference_type) const noexcept;
difference_type operator- (const iterator &) const noexcept;
bool operator== (const iterator &) const noexcept;
bool operator!= (const iterator &) const noexcept;
bool operator< (const iterator &) const noexcept;
bool operator<= (const iterator &) const noexcept;
bool operator> (const iterator &) const noexcept;
bool operator>= (const iterator &) const noexcept;
private:
friend class Slice;
void *pos;
std::size_t stride;
};
template <typename T> Slice<T>::Slice () noexcept
{
sliceInit (this, reinterpret_cast<void *> (align_of<T> ()), 0);
}
template <typename T> Slice<T>::Slice (T *s, std::size_t count) noexcept
{
assert (s != nullptr || count == 0);
sliceInit (this,
s == nullptr && count == 0 ? reinterpret_cast<void *> (align_of<T> ())
: const_cast<typename std::remove_const<T>::type *> (s),
count);
}
template <typename T>
T *
Slice<T>::data () const noexcept
{
return reinterpret_cast<T *> (slicePtr (this));
}
template <typename T>
std::size_t
Slice<T>::size () const noexcept
{
return sliceLen (this);
}
template <typename T>
std::size_t
Slice<T>::length () const noexcept
{
return this->size ();
}
template <typename T>
bool
Slice<T>::empty () const noexcept
{
return this->size () == 0;
}
template <typename T>
T &
Slice<T>::operator[] (std::size_t n) const noexcept
{
assert (n < this->size ());
auto ptr = static_cast<char *> (slicePtr (this)) + size_of<T> () * n;
return *reinterpret_cast<T *> (ptr);
}
template <typename T>
T &
Slice<T>::at (std::size_t n) const
{
if (n >= this->size ())
{
panic<std::out_of_range> ("rust::Slice index out of range");
}
return (*this)[n];
}
template <typename T>
T &
Slice<T>::front () const noexcept
{
assert (!this->empty ());
return (*this)[0];
}
template <typename T>
T &
Slice<T>::back () const noexcept
{
assert (!this->empty ());
return (*this)[this->size () - 1];
}
template <typename T>
typename Slice<T>::iterator::reference
Slice<T>::iterator::operator* () const noexcept
{
return *static_cast<T *> (this->pos);
}
template <typename T>
typename Slice<T>::iterator::pointer
Slice<T>::iterator::operator->() const noexcept
{
return static_cast<T *> (this->pos);
}
template <typename T>
typename Slice<T>::iterator::reference
Slice<T>::iterator::operator[] (typename Slice<T>::iterator::difference_type n) const noexcept
{
auto ptr = static_cast<char *> (this->pos) + this->stride * n;
return *reinterpret_cast<T *> (ptr);
}
template <typename T>
typename Slice<T>::iterator &
Slice<T>::iterator::operator++ () noexcept
{
this->pos = static_cast<char *> (this->pos) + this->stride;
return *this;
}
template <typename T>
typename Slice<T>::iterator
Slice<T>::iterator::operator++ (int) noexcept
{
auto ret = iterator (*this);
this->pos = static_cast<char *> (this->pos) + this->stride;
return ret;
}
template <typename T>
typename Slice<T>::iterator &
Slice<T>::iterator::operator-- () noexcept
{
this->pos = static_cast<char *> (this->pos) - this->stride;
return *this;
}
template <typename T>
typename Slice<T>::iterator
Slice<T>::iterator::operator-- (int) noexcept
{
auto ret = iterator (*this);
this->pos = static_cast<char *> (this->pos) - this->stride;
return ret;
}
template <typename T>
typename Slice<T>::iterator &
Slice<T>::iterator::operator+= (typename Slice<T>::iterator::difference_type n) noexcept
{
this->pos = static_cast<char *> (this->pos) + this->stride * n;
return *this;
}
template <typename T>
typename Slice<T>::iterator &
Slice<T>::iterator::operator-= (typename Slice<T>::iterator::difference_type n) noexcept
{
this->pos = static_cast<char *> (this->pos) - this->stride * n;
return *this;
}
template <typename T>
typename Slice<T>::iterator
Slice<T>::iterator::operator+ (typename Slice<T>::iterator::difference_type n) const noexcept
{
auto ret = iterator (*this);
ret.pos = static_cast<char *> (this->pos) + this->stride * n;
return ret;
}
template <typename T>
typename Slice<T>::iterator
Slice<T>::iterator::operator- (typename Slice<T>::iterator::difference_type n) const noexcept
{
auto ret = iterator (*this);
ret.pos = static_cast<char *> (this->pos) - this->stride * n;
return ret;
}
template <typename T>
typename Slice<T>::iterator::difference_type
Slice<T>::iterator::operator- (const iterator &other) const noexcept
{
auto diff = std::distance (static_cast<char *> (other.pos), static_cast<char *> (this->pos));
return diff / static_cast<typename Slice<T>::iterator::difference_type> (this->stride);
}
template <typename T>
bool
Slice<T>::iterator::operator== (const iterator &other) const noexcept
{
return this->pos == other.pos;
}
template <typename T>
bool
Slice<T>::iterator::operator!= (const iterator &other) const noexcept
{
return this->pos != other.pos;
}
template <typename T>
bool
Slice<T>::iterator::operator< (const iterator &other) const noexcept
{
return this->pos < other.pos;
}
template <typename T>
bool
Slice<T>::iterator::operator<= (const iterator &other) const noexcept
{
return this->pos <= other.pos;
}
template <typename T>
bool
Slice<T>::iterator::operator> (const iterator &other) const noexcept
{
return this->pos > other.pos;
}
template <typename T>
bool
Slice<T>::iterator::operator>= (const iterator &other) const noexcept
{
return this->pos >= other.pos;
}
template <typename T>
typename Slice<T>::iterator
Slice<T>::begin () const noexcept
{
iterator it;
it.pos = slicePtr (this);
it.stride = size_of<T> ();
return it;
}
template <typename T>
typename Slice<T>::iterator
Slice<T>::end () const noexcept
{
iterator it = this->begin ();
it.pos = static_cast<char *> (it.pos) + it.stride * this->size ();
return it;
}
template <typename T>
void
Slice<T>::swap (Slice &rhs) noexcept
{
std::swap (*this, rhs);
}
#endif // CXXBRIDGE1_RUST_SLICE
#ifndef CXXBRIDGE1_RUST_BOX
#define CXXBRIDGE1_RUST_BOX
template <typename T> class Box final
{
public:
using element_type = T;
using const_pointer = typename std::add_pointer<typename std::add_const<T>::type>::type;
using pointer = typename std::add_pointer<T>::type;
Box () = delete;
Box (Box &&) noexcept;
~Box () noexcept;
explicit Box (const T &);
explicit Box (T &&);
Box &operator= (Box &&) & noexcept;
const T *operator->() const noexcept;
const T &operator* () const noexcept;
T *operator->() noexcept;
T &operator* () noexcept;
template <typename... Fields> static Box in_place (Fields &&...);
void swap (Box &) noexcept;
static Box from_raw (T *) noexcept;
T *into_raw () noexcept;
/* Deprecated */ using value_type = element_type;
private:
class uninit;
class allocation;
Box (uninit) noexcept;
void drop () noexcept;
friend void
swap (Box &lhs, Box &rhs) noexcept
{
lhs.swap (rhs);
}
T *ptr;
};
template <typename T> class Box<T>::uninit
{
};
template <typename T> class Box<T>::allocation
{
static T *alloc () noexcept;
static void dealloc (T *) noexcept;
public:
allocation () noexcept : ptr (alloc ()) {}
~allocation () noexcept
{
if (this->ptr)
{
dealloc (this->ptr);
}
}
T *ptr;
};
template <typename T> Box<T>::Box (Box &&other) noexcept : ptr (other.ptr) { other.ptr = nullptr; }
template <typename T> Box<T>::Box (const T &val)
{
allocation alloc;
::new (alloc.ptr) T (val);
this->ptr = alloc.ptr;
alloc.ptr = nullptr;
}
template <typename T> Box<T>::Box (T &&val)
{
allocation alloc;
::new (alloc.ptr) T (std::move (val));
this->ptr = alloc.ptr;
alloc.ptr = nullptr;
}
template <typename T> Box<T>::~Box () noexcept
{
if (this->ptr)
{
this->drop ();
}
}
template <typename T>
Box<T> &
Box<T>::operator= (Box &&other)
& noexcept
{
if (this->ptr)
{
this->drop ();
}
this->ptr = other.ptr;
other.ptr = nullptr;
return *this;
}
template <typename T>
const T *
Box<T>::operator->() const noexcept
{
return this->ptr;
}
template <typename T>
const T &
Box<T>::operator* () const noexcept
{
return *this->ptr;
}
template <typename T>
T *
Box<T>::operator->() noexcept
{
return this->ptr;
}
template <typename T>
T &
Box<T>::operator* () noexcept
{
return *this->ptr;
}
template <typename T>
template <typename... Fields>
Box<T>
Box<T>::in_place (Fields &&...fields)
{
allocation alloc;
auto ptr = alloc.ptr;
::new (ptr) T{ std::forward<Fields> (fields)... };
alloc.ptr = nullptr;
return from_raw (ptr);
}
template <typename T>
void
Box<T>::swap (Box &rhs) noexcept
{
using std::swap;
swap (this->ptr, rhs.ptr);
}
template <typename T>
Box<T>
Box<T>::from_raw (T *raw) noexcept
{
Box box = uninit{};
box.ptr = raw;
return box;
}
template <typename T>
T *
Box<T>::into_raw () noexcept
{
T *raw = this->ptr;
this->ptr = nullptr;
return raw;
}
template <typename T> Box<T>::Box (uninit) noexcept {}
#endif // CXXBRIDGE1_RUST_BOX
#ifndef CXXBRIDGE1_RUST_BITCOPY_T
#define CXXBRIDGE1_RUST_BITCOPY_T
struct unsafe_bitcopy_t final
{
explicit unsafe_bitcopy_t () = default;
};
#endif // CXXBRIDGE1_RUST_BITCOPY_T
#ifndef CXXBRIDGE1_RUST_VEC
#define CXXBRIDGE1_RUST_VEC
template <typename T> class Vec final
{
public:
using value_type = T;
Vec () noexcept;
Vec (std::initializer_list<T>);
Vec (const Vec &);
Vec (Vec &&) noexcept;
~Vec () noexcept;
Vec &operator= (Vec &&) & noexcept;
Vec &operator= (const Vec &) &;
std::size_t size () const noexcept;
bool empty () const noexcept;
const T *data () const noexcept;
T *data () noexcept;
std::size_t capacity () const noexcept;
const T &operator[] (std::size_t n) const noexcept;
const T &at (std::size_t n) const;
const T &front () const noexcept;
const T &back () const noexcept;
T &operator[] (std::size_t n) noexcept;
T &at (std::size_t n);
T &front () noexcept;
T &back () noexcept;
void reserve (std::size_t new_cap);
void push_back (const T &value);
void push_back (T &&value);
template <typename... Args> void emplace_back (Args &&...args);
void truncate (std::size_t len);
void clear ();
using iterator = typename Slice<T>::iterator;
iterator begin () noexcept;
iterator end () noexcept;
using const_iterator = typename Slice<const T>::iterator;
const_iterator begin () const noexcept;
const_iterator end () const noexcept;
const_iterator cbegin () const noexcept;
const_iterator cend () const noexcept;
void swap (Vec &) noexcept;
Vec (unsafe_bitcopy_t, const Vec &) noexcept;
private:
void reserve_total (std::size_t new_cap) noexcept;
void set_len (std::size_t len) noexcept;
void drop () noexcept;
friend void
swap (Vec &lhs, Vec &rhs) noexcept
{
lhs.swap (rhs);
}
std::array<std::uintptr_t, 3> repr;
};
template <typename T> Vec<T>::Vec (std::initializer_list<T> init) : Vec{}
{
this->reserve_total (init.size ());
std::move (init.begin (), init.end (), std::back_inserter (*this));
}
template <typename T> Vec<T>::Vec (const Vec &other) : Vec ()
{
this->reserve_total (other.size ());
std::copy (other.begin (), other.end (), std::back_inserter (*this));
}
template <typename T> Vec<T>::Vec (Vec &&other) noexcept : repr (other.repr)
{
new (&other) Vec ();
}
template <typename T> Vec<T>::~Vec () noexcept { this->drop (); }
template <typename T>
Vec<T> &
Vec<T>::operator= (Vec &&other)
& noexcept
{
this->drop ();
this->repr = other.repr;
new (&other) Vec ();
return *this;
}
template <typename T>
Vec<T> &
Vec<T>::operator= (const Vec &other) &
{
if (this != &other)
{
this->drop ();
new (this) Vec (other);
}
return *this;
}
template <typename T>
bool
Vec<T>::empty () const noexcept
{
return this->size () == 0;
}
template <typename T>
T *
Vec<T>::data () noexcept
{
return const_cast<T *> (const_cast<const Vec<T> *> (this)->data ());
}
template <typename T>
const T &
Vec<T>::operator[] (std::size_t n) const noexcept
{
assert (n < this->size ());
auto data = reinterpret_cast<const char *> (this->data ());
return *reinterpret_cast<const T *> (data + n * size_of<T> ());
}
template <typename T>
const T &
Vec<T>::at (std::size_t n) const
{
if (n >= this->size ())
{
panic<std::out_of_range> ("rust::Vec index out of range");
}
return (*this)[n];
}
template <typename T>
const T &
Vec<T>::front () const noexcept
{
assert (!this->empty ());
return (*this)[0];
}
template <typename T>
const T &
Vec<T>::back () const noexcept
{
assert (!this->empty ());
return (*this)[this->size () - 1];
}
template <typename T>
T &
Vec<T>::operator[] (std::size_t n) noexcept
{
assert (n < this->size ());
auto data = reinterpret_cast<char *> (this->data ());
return *reinterpret_cast<T *> (data + n * size_of<T> ());
}
template <typename T>
T &
Vec<T>::at (std::size_t n)
{
if (n >= this->size ())
{
panic<std::out_of_range> ("rust::Vec index out of range");
}
return (*this)[n];
}
template <typename T>
T &
Vec<T>::front () noexcept
{
assert (!this->empty ());
return (*this)[0];
}
template <typename T>
T &
Vec<T>::back () noexcept
{
assert (!this->empty ());
return (*this)[this->size () - 1];
}
template <typename T>
void
Vec<T>::reserve (std::size_t new_cap)
{
this->reserve_total (new_cap);
}
template <typename T>
void
Vec<T>::push_back (const T &value)
{
this->emplace_back (value);
}
template <typename T>
void
Vec<T>::push_back (T &&value)
{
this->emplace_back (std::move (value));
}
template <typename T>
template <typename... Args>
void
Vec<T>::emplace_back (Args &&...args)
{
auto size = this->size ();
this->reserve_total (size + 1);
::new (reinterpret_cast<T *> (reinterpret_cast<char *> (this->data ()) + size * size_of<T> ()))
T (std::forward<Args> (args)...);
this->set_len (size + 1);
}
template <typename T>
void
Vec<T>::clear ()
{
this->truncate (0);
}
template <typename T>
typename Vec<T>::iterator
Vec<T>::begin () noexcept
{
return Slice<T> (this->data (), this->size ()).begin ();
}
template <typename T>
typename Vec<T>::iterator
Vec<T>::end () noexcept
{
return Slice<T> (this->data (), this->size ()).end ();
}
template <typename T>
typename Vec<T>::const_iterator
Vec<T>::begin () const noexcept
{
return this->cbegin ();
}
template <typename T>
typename Vec<T>::const_iterator
Vec<T>::end () const noexcept
{
return this->cend ();
}
template <typename T>
typename Vec<T>::const_iterator
Vec<T>::cbegin () const noexcept
{
return Slice<const T> (this->data (), this->size ()).begin ();
}
template <typename T>
typename Vec<T>::const_iterator
Vec<T>::cend () const noexcept
{
return Slice<const T> (this->data (), this->size ()).end ();
}
template <typename T>
void
Vec<T>::swap (Vec &rhs) noexcept
{
using std::swap;
swap (this->repr, rhs.repr);
}
template <typename T> Vec<T>::Vec (unsafe_bitcopy_t, const Vec &bits) noexcept : repr (bits.repr) {}
#endif // CXXBRIDGE1_RUST_VEC
#ifndef CXXBRIDGE1_RUST_OPAQUE
#define CXXBRIDGE1_RUST_OPAQUE
class Opaque
{
public:
Opaque () = delete;
Opaque (const Opaque &) = delete;
~Opaque () = delete;
};
#endif // CXXBRIDGE1_RUST_OPAQUE
#ifndef CXXBRIDGE1_IS_COMPLETE
#define CXXBRIDGE1_IS_COMPLETE
namespace detail
{
namespace
{
template <typename T, typename = std::size_t> struct is_complete : std::false_type
{
};
template <typename T> struct is_complete<T, decltype (sizeof (T))> : std::true_type
{
};
} // namespace
} // namespace detail
#endif // CXXBRIDGE1_IS_COMPLETE
#ifndef CXXBRIDGE1_LAYOUT
#define CXXBRIDGE1_LAYOUT
class layout
{
template <typename T> friend std::size_t size_of ();
template <typename T> friend std::size_t align_of ();
template <typename T>
static typename std::enable_if<std::is_base_of<Opaque, T>::value, std::size_t>::type
do_size_of ()
{
return T::layout::size ();
}
template <typename T>
static typename std::enable_if<!std::is_base_of<Opaque, T>::value, std::size_t>::type
do_size_of ()
{
return sizeof (T);
}
template <typename T>
static typename std::enable_if<detail::is_complete<T>::value, std::size_t>::type
size_of ()
{
return do_size_of<T> ();
}
template <typename T>
static typename std::enable_if<std::is_base_of<Opaque, T>::value, std::size_t>::type
do_align_of ()
{
return T::layout::align ();
}
template <typename T>
static typename std::enable_if<!std::is_base_of<Opaque, T>::value, std::size_t>::type
do_align_of ()
{
return alignof (T);
}
template <typename T>
static typename std::enable_if<detail::is_complete<T>::value, std::size_t>::type
align_of ()
{
return do_align_of<T> ();
}
};
template <typename T>
std::size_t
size_of ()
{
return layout::size_of<T> ();
}
template <typename T>
std::size_t
align_of ()
{
return layout::align_of<T> ();
}
#endif // CXXBRIDGE1_LAYOUT
} // namespace cxxbridge1
} // namespace rust
namespace rpmostreecxx
{
struct StringMapping;
enum class SystemHostType : ::std::uint8_t;
enum class BubblewrapMutability : ::std::uint8_t;
struct Bubblewrap;
struct ContainerImageState;
struct ExportedManifestDiff;
struct PrunedContainerInfo;
enum class RefspecType : ::std::uint8_t;
struct TempEtcGuard;
struct FilesystemScriptPrep;
struct DeploymentLayeredMeta;
struct OverrideReplacementSource;
enum class ParsedRevisionKind : ::std::uint8_t;
struct ParsedRevision;
struct RpmImporterFlags;
struct RpmImporter;
struct HistoryEntry;
struct HistoryCtx;
struct TokioHandle;
struct TokioEnterGuard;
enum class RepoMetadataTarget : ::std::uint8_t;
struct Refspec;
enum class OverrideReplacementType : ::std::uint8_t;
struct OverrideReplacement;
enum class OptUsrLocal : ::std::uint8_t;
struct Treefile;
struct RepoPackage;
struct LiveApplyState;
struct PasswdDB;
struct PasswdEntries;
struct Extensions;
struct LockedPackage;
struct LockfileConfig;
using CxxGObjectArray = ::rpmostreecxx::CxxGObjectArray;
using ClientConnection = ::rpmostreecxx::ClientConnection;
using RPMDiff = ::rpmostreecxx::RPMDiff;
using RpmOstreeDiffPrintFormat = ::rpmostreecxx::RpmOstreeDiffPrintFormat;
using Progress = ::rpmostreecxx::Progress;
using RpmTs = ::rpmostreecxx::RpmTs;
using PackageMeta = ::rpmostreecxx::PackageMeta;
}
namespace rpmostreecxx
{
#ifndef CXXBRIDGE1_STRUCT_rpmostreecxx$StringMapping
#define CXXBRIDGE1_STRUCT_rpmostreecxx$StringMapping
// Currently cxx-rs doesn't support mappings; like probably most projects,
// by far our most common case is a mapping from string -> string and since
// our data sizes aren't large, we serialize this as a vector of strings pairs.
// In the future it's also likely that cxx-rs will support a C++ string_view
// so we could avoid duplicating in that direction.
struct StringMapping final
{
::rust::String k;
::rust::String v;
using IsRelocatable = ::std::true_type;
};
#endif // CXXBRIDGE1_STRUCT_rpmostreecxx$StringMapping
#ifndef CXXBRIDGE1_ENUM_rpmostreecxx$SystemHostType
#define CXXBRIDGE1_ENUM_rpmostreecxx$SystemHostType
// Classify the running system.
enum class SystemHostType : ::std::uint8_t
{
OstreeContainer = 0,
OstreeHost = 1,
Unknown = 2,
};
#endif // CXXBRIDGE1_ENUM_rpmostreecxx$SystemHostType
#ifndef CXXBRIDGE1_ENUM_rpmostreecxx$BubblewrapMutability
#define CXXBRIDGE1_ENUM_rpmostreecxx$BubblewrapMutability
enum class BubblewrapMutability : ::std::uint8_t
{
Immutable = 0,
RoFiles = 1,
MutateFreely = 2,
};
#endif // CXXBRIDGE1_ENUM_rpmostreecxx$BubblewrapMutability
#ifndef CXXBRIDGE1_STRUCT_rpmostreecxx$Bubblewrap
#define CXXBRIDGE1_STRUCT_rpmostreecxx$Bubblewrap
struct Bubblewrap final : public ::rust::Opaque
{
::std::int32_t get_rootfs_fd () const noexcept;
void append_bwrap_arg (::rust::Str arg) noexcept;
void append_child_arg (::rust::Str arg) noexcept;
void setenv (::rust::Str k, ::rust::Str v) noexcept;
void take_fd (::std::int32_t source_fd, ::std::int32_t target_fd) noexcept;
void set_inherit_stdin () noexcept;
void take_stdin_fd (::std::int32_t source_fd) noexcept;
void take_stdout_fd (::std::int32_t source_fd) noexcept;
void take_stderr_fd (::std::int32_t source_fd) noexcept;
void take_stdout_and_stderr_fd (::std::int32_t source_fd) noexcept;
void bind_read (::rust::Str src, ::rust::Str dest) noexcept;
void bind_readwrite (::rust::Str src, ::rust::Str dest) noexcept;
void setup_compat_var ();
void run (::rpmostreecxx::GCancellable const &cancellable);
~Bubblewrap () = delete;
private:
friend ::rust::layout;
struct layout
{
static ::std::size_t size () noexcept;
static ::std::size_t align () noexcept;
};
};
#endif // CXXBRIDGE1_STRUCT_rpmostreecxx$Bubblewrap
#ifndef CXXBRIDGE1_STRUCT_rpmostreecxx$ExportedManifestDiff
#define CXXBRIDGE1_STRUCT_rpmostreecxx$ExportedManifestDiff
struct ExportedManifestDiff final
{
// Check if the struct is initialized
bool initialized;
// The total number of packages in the next upgrade
::std::uint64_t total;
// The size of the total number of packages in the next upgrade
::std::uint64_t total_size;
// The total number of removed packages in the next upgrade
::std::uint64_t n_removed;
// The size of total number of removed packages in the next upgrade
::std::uint64_t removed_size;
// The total number of added packages in the next upgrade
::std::uint64_t n_added;
// The size of total number of added packages in the next upgrade
::std::uint64_t added_size;
// The version of the next upgrade
::rust::String version;
using IsRelocatable = ::std::true_type;
};
#endif // CXXBRIDGE1_STRUCT_rpmostreecxx$ExportedManifestDiff
#ifndef CXXBRIDGE1_STRUCT_rpmostreecxx$ContainerImageState
#define CXXBRIDGE1_STRUCT_rpmostreecxx$ContainerImageState
// `ContainerImageState` is currently identical to ostree-rs-ext's `LayeredImageState` struct,
// because cxx.rs currently requires types used as extern Rust types to be defined by the same crate
// that contains the bridge using them, so we redefine an `ContainerImport` struct here.
struct ContainerImageState final
{
::rust::String base_commit;
::rust::String merge_commit;
::rust::String image_digest;
::rust::String version;
::rpmostreecxx::ExportedManifestDiff cached_update_diff;
::rust::String verify_text;
using IsRelocatable = ::std::true_type;
};
#endif // CXXBRIDGE1_STRUCT_rpmostreecxx$ContainerImageState
#ifndef CXXBRIDGE1_STRUCT_rpmostreecxx$PrunedContainerInfo
#define CXXBRIDGE1_STRUCT_rpmostreecxx$PrunedContainerInfo
struct PrunedContainerInfo final
{
::std::uint32_t images;
::std::uint32_t layers;
bool operator== (PrunedContainerInfo const &) const noexcept;
bool operator!= (PrunedContainerInfo const &) const noexcept;
using IsRelocatable = ::std::true_type;
};
#endif // CXXBRIDGE1_STRUCT_rpmostreecxx$PrunedContainerInfo
#ifndef CXXBRIDGE1_ENUM_rpmostreecxx$RefspecType
#define CXXBRIDGE1_ENUM_rpmostreecxx$RefspecType
enum class RefspecType : ::std::uint8_t
{
Ostree = 0,
Checksum = 1,
Container = 2,
};
#endif // CXXBRIDGE1_ENUM_rpmostreecxx$RefspecType
#ifndef CXXBRIDGE1_STRUCT_rpmostreecxx$TempEtcGuard
#define CXXBRIDGE1_STRUCT_rpmostreecxx$TempEtcGuard
struct TempEtcGuard final : public ::rust::Opaque
{
void undo () const;
~TempEtcGuard () = delete;
private:
friend ::rust::layout;
struct layout
{
static ::std::size_t size () noexcept;
static ::std::size_t align () noexcept;
};
};
#endif // CXXBRIDGE1_STRUCT_rpmostreecxx$TempEtcGuard
#ifndef CXXBRIDGE1_STRUCT_rpmostreecxx$FilesystemScriptPrep
#define CXXBRIDGE1_STRUCT_rpmostreecxx$FilesystemScriptPrep
struct FilesystemScriptPrep final : public ::rust::Opaque
{
void undo ();
~FilesystemScriptPrep () = delete;
private:
friend ::rust::layout;
struct layout
{
static ::std::size_t size () noexcept;
static ::std::size_t align () noexcept;
};
};
#endif // CXXBRIDGE1_STRUCT_rpmostreecxx$FilesystemScriptPrep
#ifndef CXXBRIDGE1_STRUCT_rpmostreecxx$DeploymentLayeredMeta
#define CXXBRIDGE1_STRUCT_rpmostreecxx$DeploymentLayeredMeta
struct DeploymentLayeredMeta final
{
bool is_layered;
::rust::String base_commit;
::std::uint32_t clientlayer_version;
using IsRelocatable = ::std::true_type;
};
#endif // CXXBRIDGE1_STRUCT_rpmostreecxx$DeploymentLayeredMeta
#ifndef CXXBRIDGE1_STRUCT_rpmostreecxx$OverrideReplacementSource
#define CXXBRIDGE1_STRUCT_rpmostreecxx$OverrideReplacementSource
struct OverrideReplacementSource final
{
::rpmostreecxx::OverrideReplacementType kind;
::rust::String name;
using IsRelocatable = ::std::true_type;
};
#endif // CXXBRIDGE1_STRUCT_rpmostreecxx$OverrideReplacementSource
#ifndef CXXBRIDGE1_ENUM_rpmostreecxx$ParsedRevisionKind
#define CXXBRIDGE1_ENUM_rpmostreecxx$ParsedRevisionKind
enum class ParsedRevisionKind : ::std::uint8_t
{
Version = 0,
Checksum = 1,
};
#endif // CXXBRIDGE1_ENUM_rpmostreecxx$ParsedRevisionKind
#ifndef CXXBRIDGE1_STRUCT_rpmostreecxx$ParsedRevision
#define CXXBRIDGE1_STRUCT_rpmostreecxx$ParsedRevision
struct ParsedRevision final
{
::rpmostreecxx::ParsedRevisionKind kind;
::rust::String value;
using IsRelocatable = ::std::true_type;
};
#endif // CXXBRIDGE1_STRUCT_rpmostreecxx$ParsedRevision
#ifndef CXXBRIDGE1_STRUCT_rpmostreecxx$RpmImporterFlags
#define CXXBRIDGE1_STRUCT_rpmostreecxx$RpmImporterFlags
struct RpmImporterFlags final : public ::rust::Opaque
{
bool is_ima_enabled () const noexcept;
~RpmImporterFlags () = delete;
private:
friend ::rust::layout;
struct layout
{
static ::std::size_t size () noexcept;
static ::std::size_t align () noexcept;
};
};
#endif // CXXBRIDGE1_STRUCT_rpmostreecxx$RpmImporterFlags
#ifndef CXXBRIDGE1_STRUCT_rpmostreecxx$RpmImporter
#define CXXBRIDGE1_STRUCT_rpmostreecxx$RpmImporter
struct RpmImporter final : public ::rust::Opaque
{
::rust::String handle_translate_pathname (::rust::Str path) noexcept;
::rust::String ostree_branch () const noexcept;
::rust::String pkg_name () const noexcept;
bool doc_files_are_filtered () const noexcept;
void doc_files_insert (::rust::Str path) noexcept;
bool doc_files_contains (::rust::Str path) const noexcept;
void rpmfi_overrides_insert (::rust::Str path, ::std::uint64_t index) noexcept;
bool rpmfi_overrides_contains (::rust::Str path) const noexcept;
::std::uint64_t rpmfi_overrides_get (::rust::Str path) const noexcept;
bool is_ima_enabled () const noexcept;
void tweak_imported_file_info (::rpmostreecxx::GFileInfo const &file_info) const noexcept;
bool is_file_filtered (::rust::Str path, ::rpmostreecxx::GFileInfo const &file_info) const;
void translate_to_tmpfiles_entry (::rust::Str abs_path,
::rpmostreecxx::GFileInfo const &file_info,
::rust::Str username, ::rust::Str groupname);
bool has_tmpfiles_entries () const noexcept;
::rust::String serialize_tmpfiles_content () const noexcept;
~RpmImporter () = delete;
private:
friend ::rust::layout;
struct layout
{
static ::std::size_t size () noexcept;
static ::std::size_t align () noexcept;
};
};
#endif // CXXBRIDGE1_STRUCT_rpmostreecxx$RpmImporter
#ifndef CXXBRIDGE1_STRUCT_rpmostreecxx$HistoryEntry
#define CXXBRIDGE1_STRUCT_rpmostreecxx$HistoryEntry
// A history entry in the journal. It may represent multiple consecutive boots
// into the same deployment. This struct is exposed directly via FFI to C.
struct HistoryEntry final
{
// The deployment root timestamp.
::std::uint64_t deploy_timestamp;
// The command-line that was used to create the deployment, if any.
::rust::String deploy_cmdline;
// The number of consecutive times the deployment was booted.
::std::uint64_t boot_count;
// The first time the deployment was booted if multiple consecutive times.
::std::uint64_t first_boot_timestamp;
// The last time the deployment was booted if multiple consecutive times.
::std::uint64_t last_boot_timestamp;
// `true` if there are no more entries.
bool eof;
bool operator== (HistoryEntry const &) const noexcept;
bool operator!= (HistoryEntry const &) const noexcept;
using IsRelocatable = ::std::true_type;
};
#endif // CXXBRIDGE1_STRUCT_rpmostreecxx$HistoryEntry
#ifndef CXXBRIDGE1_STRUCT_rpmostreecxx$HistoryCtx
#define CXXBRIDGE1_STRUCT_rpmostreecxx$HistoryCtx
struct HistoryCtx final : public ::rust::Opaque
{
::rpmostreecxx::HistoryEntry next_entry ();
~HistoryCtx () = delete;
private:
friend ::rust::layout;
struct layout
{
static ::std::size_t size () noexcept;
static ::std::size_t align () noexcept;
};
};
#endif // CXXBRIDGE1_STRUCT_rpmostreecxx$HistoryCtx
#ifndef CXXBRIDGE1_STRUCT_rpmostreecxx$TokioHandle
#define CXXBRIDGE1_STRUCT_rpmostreecxx$TokioHandle
struct TokioHandle final : public ::rust::Opaque
{
::rust::Box< ::rpmostreecxx::TokioEnterGuard> enter () const noexcept;
~TokioHandle () = delete;
private:
friend ::rust::layout;
struct layout
{
static ::std::size_t size () noexcept;
static ::std::size_t align () noexcept;
};
};
#endif // CXXBRIDGE1_STRUCT_rpmostreecxx$TokioHandle
#ifndef CXXBRIDGE1_STRUCT_rpmostreecxx$TokioEnterGuard
#define CXXBRIDGE1_STRUCT_rpmostreecxx$TokioEnterGuard
struct TokioEnterGuard final : public ::rust::Opaque
{
~TokioEnterGuard () = delete;
private:
friend ::rust::layout;
struct layout
{
static ::std::size_t size () noexcept;
static ::std::size_t align () noexcept;
};
};
#endif // CXXBRIDGE1_STRUCT_rpmostreecxx$TokioEnterGuard
#ifndef CXXBRIDGE1_ENUM_rpmostreecxx$RepoMetadataTarget
#define CXXBRIDGE1_ENUM_rpmostreecxx$RepoMetadataTarget
enum class RepoMetadataTarget : ::std::uint8_t
{
Inline = 0,
Detached = 1,
Disabled = 2,
};
#endif // CXXBRIDGE1_ENUM_rpmostreecxx$RepoMetadataTarget
#ifndef CXXBRIDGE1_STRUCT_rpmostreecxx$Refspec
#define CXXBRIDGE1_STRUCT_rpmostreecxx$Refspec
struct Refspec final
{
::rpmostreecxx::RefspecType kind;
::rust::String refspec;
bool operator== (Refspec const &) const noexcept;
bool operator!= (Refspec const &) const noexcept;
using IsRelocatable = ::std::true_type;
};
#endif // CXXBRIDGE1_STRUCT_rpmostreecxx$Refspec
#ifndef CXXBRIDGE1_ENUM_rpmostreecxx$OverrideReplacementType
#define CXXBRIDGE1_ENUM_rpmostreecxx$OverrideReplacementType
enum class OverrideReplacementType : ::std::uint8_t
{
Repo = 0,
};
#endif // CXXBRIDGE1_ENUM_rpmostreecxx$OverrideReplacementType
#ifndef CXXBRIDGE1_STRUCT_rpmostreecxx$OverrideReplacement
#define CXXBRIDGE1_STRUCT_rpmostreecxx$OverrideReplacement
struct OverrideReplacement final
{
::rust::String from;
::rpmostreecxx::OverrideReplacementType from_kind;
::rust::Vec< ::rust::String> packages;
bool operator== (OverrideReplacement const &) const noexcept;
bool operator!= (OverrideReplacement const &) const noexcept;
using IsRelocatable = ::std::true_type;
};
#endif // CXXBRIDGE1_STRUCT_rpmostreecxx$OverrideReplacement
#ifndef CXXBRIDGE1_ENUM_rpmostreecxx$OptUsrLocal
#define CXXBRIDGE1_ENUM_rpmostreecxx$OptUsrLocal
enum class OptUsrLocal : ::std::uint8_t
{
Var = 0,
Root = 1,
StateOverlay = 2,
};
#endif // CXXBRIDGE1_ENUM_rpmostreecxx$OptUsrLocal
#ifndef CXXBRIDGE1_STRUCT_rpmostreecxx$Treefile
#define CXXBRIDGE1_STRUCT_rpmostreecxx$Treefile
struct Treefile final : public ::rust::Opaque
{
::rust::Str get_workdir () const noexcept;
::std::int32_t get_passwd_fd () noexcept;
::std::int32_t get_group_fd () noexcept;
::rust::String get_json_string () const noexcept;
::rust::Vec< ::rust::String> get_ostree_layers () const noexcept;
::rust::Vec< ::rust::String> get_ostree_override_layers () const noexcept;
::rust::Vec< ::rust::String> get_all_ostree_layers () const noexcept;
::rust::Vec< ::rust::String> get_repos () const noexcept;
::rust::Vec< ::rust::String> get_packages () const noexcept;
::rust::String require_automatic_version_prefix () const;
bool add_packages (::rust::Vec< ::rust::String> packages, bool allow_existing);
bool has_packages () const noexcept;
::rust::Vec< ::rust::String> get_local_packages () const noexcept;
bool add_local_packages (::rust::Vec< ::rust::String> packages, bool allow_existing);
::rust::Vec< ::rust::String> get_local_fileoverride_packages () const noexcept;
bool add_local_fileoverride_packages (::rust::Vec< ::rust::String> packages, bool allow_existing);
bool remove_packages (::rust::Vec< ::rust::String> packages, bool allow_noent);
::rust::Vec< ::rpmostreecxx::OverrideReplacement> get_packages_override_replace () const noexcept;
bool has_packages_override_replace () const noexcept;
bool add_packages_override_replace (::rpmostreecxx::OverrideReplacement replacement) noexcept;
bool remove_package_override_replace (::rust::Str package) noexcept;
::rust::Vec< ::rust::String> get_packages_override_replace_local () const noexcept;
void add_packages_override_replace_local (::rust::Vec< ::rust::String> packages);
bool remove_package_override_replace_local (::rust::Str package) noexcept;
::rust::Vec< ::rust::String> get_packages_override_remove () const noexcept;
void add_packages_override_remove (::rust::Vec< ::rust::String> packages);
bool remove_package_override_remove (::rust::Str package) noexcept;
bool has_packages_override_remove_name (::rust::Str name) const noexcept;
bool remove_all_overrides () noexcept;
bool remove_all_packages () noexcept;
::rust::Vec< ::rust::String> get_exclude_packages () const noexcept;
::rust::String get_platform_module () const noexcept;
::rust::Vec< ::rust::String> get_install_langs () const noexcept;
::rust::String format_install_langs_macro () const noexcept;
::rust::Vec< ::rust::String> get_lockfile_repos () const noexcept;
::rust::Str get_ref () const noexcept;
bool get_cliwrap () const noexcept;
::rust::Vec< ::rust::String> get_cliwrap_binaries () const noexcept;
void set_cliwrap (bool enabled) noexcept;
::rust::Vec< ::rust::String> get_container_cmd () const noexcept;
bool get_readonly_executables () const noexcept;
bool get_documentation () const noexcept;
bool get_recommends () const noexcept;
bool get_selinux () const noexcept;
::std::uint32_t get_selinux_label_version () const noexcept;
::rust::String get_gpg_key () const noexcept;
::rust::String get_automatic_version_suffix () const noexcept;
bool get_container () const noexcept;
bool get_machineid_compat () const noexcept;
::rust::Vec< ::rust::String> get_etc_group_members () const noexcept;
bool get_boot_location_is_modules () const noexcept;
bool use_kernel_install () const noexcept;
bool get_ima () const noexcept;
::rust::String get_releasever () const noexcept;
::rpmostreecxx::RepoMetadataTarget get_repo_metadata_target () const noexcept;
bool rpmdb_backend_is_target () const noexcept;
bool should_normalize_rpmdb () const noexcept;
::rpmostreecxx::OptUsrLocal get_opt_usrlocal () const noexcept;
::rust::Vec< ::rust::String> get_files_remove_regex (::rust::Str package) const noexcept;
::rust::String get_checksum (::rpmostreecxx::OstreeRepo const &repo) const;
::rust::String get_ostree_ref () const noexcept;
::rust::Slice< ::rpmostreecxx::RepoPackage const> get_repo_packages () const noexcept;
void clear_repo_packages () noexcept;
void prettyprint_json_stdout () const noexcept;
void print_deprecation_warnings () const noexcept;
void print_experimental_notices () const noexcept;
void sanitycheck_externals () const;
::rust::Box< ::rpmostreecxx::RpmImporterFlags>
importer_flags (::rust::Str pkg_name) const noexcept;
::rust::String write_repovars (::std::int32_t workdir_dfd_raw) const;
void set_releasever (::rust::Str releasever);
void set_recommends (bool val);
void enable_repo (::rust::Str repo);
void disable_repo (::rust::Str repo);
void validate_for_container () const;
::rpmostreecxx::Refspec get_base_refspec () const noexcept;
void rebase (::rust::Str new_refspec, ::rust::Str custom_origin_url,
::rust::Str custom_origin_description) noexcept;
::rust::String get_origin_custom_url () const noexcept;
::rust::String get_origin_custom_description () const noexcept;
::rust::String get_override_commit () const noexcept;
void set_override_commit (::rust::Str checksum) noexcept;
::rust::Vec< ::rust::String> get_initramfs_etc_files () const noexcept;
bool has_initramfs_etc_files () const noexcept;
bool initramfs_etc_files_track (::rust::Vec< ::rust::String> files) noexcept;
bool initramfs_etc_files_untrack (::rust::Vec< ::rust::String> files) noexcept;
bool initramfs_etc_files_untrack_all () noexcept;
bool get_initramfs_regenerate () const noexcept;
::rust::Vec< ::rust::String> get_initramfs_args () const noexcept;
void set_initramfs_regenerate (bool enabled, ::rust::Vec< ::rust::String> args) noexcept;
::rust::String get_unconfigured_state () const noexcept;
bool may_require_local_assembly () const noexcept;
bool has_any_packages () const noexcept;
bool merge_treefile (::rust::Str treefile);
~Treefile () = delete;
private:
friend ::rust::layout;
struct layout
{
static ::std::size_t size () noexcept;
static ::std::size_t align () noexcept;
};
};
#endif // CXXBRIDGE1_STRUCT_rpmostreecxx$Treefile
#ifndef CXXBRIDGE1_STRUCT_rpmostreecxx$RepoPackage
#define CXXBRIDGE1_STRUCT_rpmostreecxx$RepoPackage
struct RepoPackage final : public ::rust::Opaque
{
::rust::Str get_repo () const noexcept;
::rust::Vec< ::rust::String> get_packages () const noexcept;
~RepoPackage () = delete;
private:
friend ::rust::layout;
struct layout
{
static ::std::size_t size () noexcept;
static ::std::size_t align () noexcept;
};
};
#endif // CXXBRIDGE1_STRUCT_rpmostreecxx$RepoPackage
#ifndef CXXBRIDGE1_STRUCT_rpmostreecxx$LiveApplyState
#define CXXBRIDGE1_STRUCT_rpmostreecxx$LiveApplyState
// A copy of LiveFsState that is bridged to C++; the main
// change here is we can't use Option<> yet, so empty values
// are represented by the empty string.
struct LiveApplyState final
{
::rust::String inprogress;
::rust::String commit;
using IsRelocatable = ::std::true_type;
};
#endif // CXXBRIDGE1_STRUCT_rpmostreecxx$LiveApplyState
#ifndef CXXBRIDGE1_STRUCT_rpmostreecxx$PasswdDB
#define CXXBRIDGE1_STRUCT_rpmostreecxx$PasswdDB
struct PasswdDB final : public ::rust::Opaque
{
::rust::String lookup_user (::std::uint32_t uid) const;
::rust::String lookup_group (::std::uint32_t gid) const;
~PasswdDB () = delete;
private:
friend ::rust::layout;
struct layout
{
static ::std::size_t size () noexcept;
static ::std::size_t align () noexcept;
};
};
#endif // CXXBRIDGE1_STRUCT_rpmostreecxx$PasswdDB
#ifndef CXXBRIDGE1_STRUCT_rpmostreecxx$PasswdEntries
#define CXXBRIDGE1_STRUCT_rpmostreecxx$PasswdEntries
struct PasswdEntries final : public ::rust::Opaque
{
void add_group_content (::std::int32_t rootfs, ::rust::Str path);
void add_passwd_content (::std::int32_t rootfs, ::rust::Str path);
bool contains_group (::rust::Str user) const noexcept;
bool contains_user (::rust::Str user) const noexcept;
::std::uint32_t lookup_user_id (::rust::Str user) const;
::std::uint32_t lookup_group_id (::rust::Str group) const;
~PasswdEntries () = delete;
private:
friend ::rust::layout;
struct layout
{
static ::std::size_t size () noexcept;
static ::std::size_t align () noexcept;
};
};
#endif // CXXBRIDGE1_STRUCT_rpmostreecxx$PasswdEntries
#ifndef CXXBRIDGE1_STRUCT_rpmostreecxx$Extensions
#define CXXBRIDGE1_STRUCT_rpmostreecxx$Extensions
struct Extensions final : public ::rust::Opaque
{
::rust::Vec< ::rust::String> get_repos () const noexcept;
::rust::Vec< ::rust::String> get_os_extension_packages () const noexcept;
::rust::Vec< ::rust::String> get_development_packages () const noexcept;
bool state_checksum_changed (::rust::Str chksum, ::rust::Str output_dir) const;
void update_state_checksum (::rust::Str chksum, ::rust::Str output_dir) const;
void serialize_to_dir (::rust::Str output_dir) const;
::rust::Box< ::rpmostreecxx::Treefile>
generate_treefile (::rpmostreecxx::Treefile const &src) const;
~Extensions () = delete;
private:
friend ::rust::layout;
struct layout
{
static ::std::size_t size () noexcept;
static ::std::size_t align () noexcept;
};
};
#endif // CXXBRIDGE1_STRUCT_rpmostreecxx$Extensions
#ifndef CXXBRIDGE1_STRUCT_rpmostreecxx$LockedPackage
#define CXXBRIDGE1_STRUCT_rpmostreecxx$LockedPackage
struct LockedPackage final
{
::rust::String name;
::rust::String evr;
::rust::String arch;
::rust::String digest;
using IsRelocatable = ::std::true_type;
};
#endif // CXXBRIDGE1_STRUCT_rpmostreecxx$LockedPackage
#ifndef CXXBRIDGE1_STRUCT_rpmostreecxx$LockfileConfig
#define CXXBRIDGE1_STRUCT_rpmostreecxx$LockfileConfig
struct LockfileConfig final : public ::rust::Opaque
{
::rust::Vec< ::rpmostreecxx::LockedPackage> get_locked_packages () const;
~LockfileConfig () = delete;
private:
friend ::rust::layout;
struct layout
{
static ::std::size_t size () noexcept;
static ::std::size_t align () noexcept;
};
};
#endif // CXXBRIDGE1_STRUCT_rpmostreecxx$LockfileConfig
static_assert (::std::is_enum<RpmOstreeDiffPrintFormat>::value, "expected enum");
static_assert (sizeof (RpmOstreeDiffPrintFormat) == sizeof (::std::uint8_t), "incorrect size");
static_assert (
static_cast< ::std::uint8_t> (RpmOstreeDiffPrintFormat::RPMOSTREE_DIFF_PRINT_FORMAT_SUMMARY)
== 0,
"disagrees with the value in #[cxx::bridge]");
static_assert (static_cast< ::std::uint8_t> (
RpmOstreeDiffPrintFormat::RPMOSTREE_DIFF_PRINT_FORMAT_FULL_ALIGNED)
== 1,
"disagrees with the value in #[cxx::bridge]");
static_assert (static_cast< ::std::uint8_t> (
RpmOstreeDiffPrintFormat::RPMOSTREE_DIFF_PRINT_FORMAT_FULL_MULTILINE)
== 2,
"disagrees with the value in #[cxx::bridge]");
bool is_bare_split_xattrs ();
bool is_http_arg (::rust::Str arg) noexcept;
bool is_ostree_container ();
::rpmostreecxx::SystemHostType get_system_host_type ();
void require_system_host_type (::rpmostreecxx::SystemHostType t);
bool is_rpm_arg (::rust::Str arg) noexcept;
void client_start_daemon ();
::rust::Vec< ::std::int32_t> client_handle_fd_argument (::rust::Str arg, ::rust::Str arch,
bool is_replace);
::rust::String client_render_download_progress (::rpmostreecxx::GVariant const &progress) noexcept;
bool running_in_container () noexcept;
bool confirm ();
void confirm_or_abort ();
void bubblewrap_selftest ();
::rust::Vec< ::std::uint8_t> bubblewrap_run_sync (::std::int32_t rootfs_dfd,
::rust::Vec< ::rust::String> const &args,
bool capture_stdout,
::rpmostreecxx::BubblewrapMutability mutability);
::rust::Box< ::rpmostreecxx::Bubblewrap> bubblewrap_new (::std::int32_t rootfs_fd);
::rust::Box< ::rpmostreecxx::Bubblewrap>
bubblewrap_new_with_mutability (::std::int32_t rootfs_fd,
::rpmostreecxx::BubblewrapMutability mutability);
::rpmostreecxx::BubblewrapMutability mutability_for_unified_core (bool unified_core) noexcept;
void usroverlay_entrypoint (::rust::Vec< ::rust::String> const &args);
void applylive_entrypoint (::rust::Vec< ::rust::String> const &args);
void applylive_finish (::rpmostreecxx::OstreeSysroot const &sysroot);
void composeutil_legacy_prep_dev_and_run (::std::int32_t rootfs_dfd);
void print_ostree_txn_stats (::rpmostreecxx::OstreeRepoTransactionStats &stats) noexcept;
void write_commit_id (::rust::Str target_path, ::rust::Str revision);
void cliwrap_write_wrappers (::std::int32_t rootfs);
void cliwrap_write_some_wrappers (::std::int32_t rootfs, ::rust::Vec< ::rust::String> const &args);
::rust::String cliwrap_destdir () noexcept;
void container_encapsulate (::rust::Vec< ::rust::String> args);
void deploy_from_self_entrypoint (::rust::Vec< ::rust::String> args);
::rust::Box< ::rpmostreecxx::ContainerImageState>
pull_container (::rpmostreecxx::OstreeRepo const &repo,
::rpmostreecxx::GCancellable const &cancellable, ::rust::Str imgref);
::rpmostreecxx::PrunedContainerInfo container_prune (::rpmostreecxx::OstreeSysroot const &sysroot);
::rust::Box< ::rpmostreecxx::ContainerImageState>
query_container_image_commit (::rpmostreecxx::OstreeRepo const &repo, ::rust::Str c);
void purge_refspec (::rpmostreecxx::OstreeRepo const &repo, ::rust::Str refspec);
bool check_container_update (::rpmostreecxx::OstreeRepo const &repo,
::rpmostreecxx::GCancellable const &cancellable, ::rust::Str imgref);
::rust::Box< ::rpmostreecxx::TempEtcGuard> prepare_tempetc_guard (::std::int32_t rootfs);
::rust::Box< ::rpmostreecxx::FilesystemScriptPrep>
prepare_filesystem_script_prep (::std::int32_t rootfs);
void run_depmod (::std::int32_t rootfs_dfd, ::rust::Str kver, bool unified_core);
void log_treefile (::rpmostreecxx::Treefile const &tf) noexcept;
bool is_container_image_reference (::rust::Str refspec) noexcept;
bool is_container_image_digest_reference (::rust::Str refspec) noexcept;
::rpmostreecxx::RefspecType refspec_classify (::rust::Str refspec) noexcept;
void verify_kernel_hmac (::std::int32_t rootfs, ::rust::Str moddir);
::rust::Vec< ::rust::String> stage_container_rpms (::rust::Vec< ::rust::String> rpms);
::rust::Vec< ::rust::String> stage_container_rpm_raw_fds (::rust::Vec< ::std::int32_t> fds);
bool commit_has_matching_sepolicy (::rpmostreecxx::GVariant const &commit,
::rpmostreecxx::OstreeSePolicy const &policy);
::rpmostreecxx::GVariant *get_header_variant (::rpmostreecxx::OstreeRepo const &repo,
::rust::Str cachebranch);
void compose_image (::rust::Vec< ::rust::String> args);
void configure_build_repo_from_target (::rpmostreecxx::OstreeRepo const &build_repo,
::rpmostreecxx::OstreeRepo const &target_repo);
void compose_prepare_rootfs (::std::int32_t src_rootfs_dfd, ::std::int32_t dest_rootfs_dfd,
::rpmostreecxx::Treefile &treefile);
void composepost_nsswitch_altfiles (::std::int32_t rootfs_dfd);
void compose_postprocess (::std::int32_t rootfs_dfd, ::rpmostreecxx::Treefile &treefile,
::rust::Str next_version, bool unified_core);
void compose_postprocess_final_pre (::std::int32_t rootfs_dfd,
::rpmostreecxx::Treefile const &treefile);
void compose_postprocess_final (::std::int32_t rootfs_dfd,
::rpmostreecxx::Treefile const &treefile);
void convert_var_to_tmpfiles_d (::std::int32_t rootfs_dfd,
::rpmostreecxx::GCancellable const &cancellable);
void rootfs_prepare_links (::std::int32_t rootfs_dfd, ::rpmostreecxx::Treefile const &treefile,
bool skip_usrlocal);
void workaround_selinux_cross_labeling (::std::int32_t rootfs_dfd,
::rpmostreecxx::GCancellable &cancellable);
void compose_postprocess_rpm_macro (::std::int32_t rootfs_dfd);
void postprocess_cleanup_rpmdb (::std::int32_t rootfs_dfd);
void rewrite_rpmdb_for_target (::std::int32_t rootfs_dfd, bool normalize);
::std::uint64_t directory_size (::std::int32_t dfd,
::rpmostreecxx::GCancellable const &cancellable);
::rpmostreecxx::OstreeDeployment *deployment_for_id (::rpmostreecxx::OstreeSysroot &sysroot,
::rust::Str deploy_id);
::rust::String deployment_checksum_for_id (::rpmostreecxx::OstreeSysroot &sysroot,
::rust::Str deploy_id);
::rpmostreecxx::OstreeDeployment *deployment_get_base (::rpmostreecxx::OstreeSysroot &sysroot,
::rust::Str opt_deploy_id,
::rust::Str opt_os_name);
bool deployment_add_manifest_diff (::rpmostreecxx::GVariantDict const &dict,
::rpmostreecxx::ExportedManifestDiff const &diff) noexcept;
void daemon_sanitycheck_environment (::rpmostreecxx::OstreeSysroot const &sysroot);
::rust::String deployment_generate_id (::rpmostreecxx::OstreeDeployment const &deployment) noexcept;
void deployment_populate_variant (::rpmostreecxx::OstreeSysroot const &sysroot,
::rpmostreecxx::OstreeDeployment const &deployment,
::rpmostreecxx::GVariantDict const &dict);
void generate_baselayer_refs (::rpmostreecxx::OstreeSysroot const &sysroot,
::rpmostreecxx::OstreeRepo const &repo,
::rpmostreecxx::GCancellable const &cancellable);
void variant_add_remote_status (::rpmostreecxx::OstreeRepo const &repo, ::rust::Str refspec,
::rust::Str base_checksum,
::rpmostreecxx::GVariantDict const &dict);
::rpmostreecxx::DeploymentLayeredMeta
deployment_layeredmeta_from_commit (::rpmostreecxx::OstreeDeployment const &deployment,
::rpmostreecxx::GVariant const &commit);
::rpmostreecxx::DeploymentLayeredMeta
deployment_layeredmeta_load (::rpmostreecxx::OstreeRepo const &repo,
::rpmostreecxx::OstreeDeployment const &deployment);
::rpmostreecxx::OverrideReplacementSource parse_override_source (::rust::Str source);
::rpmostreecxx::ParsedRevision parse_revision (::rust::Str source);
::rust::String generate_object_path (::rust::Str base, ::rust::Str next_segment);
void failpoint (::rust::Str p);
::rust::Box< ::rpmostreecxx::RpmImporterFlags> rpm_importer_flags_new_empty () noexcept;
::rust::Box< ::rpmostreecxx::RpmImporter>
rpm_importer_new (::rust::Str pkg_name, ::rust::Str ostree_branch,
::rpmostreecxx::RpmImporterFlags const &flags);
::rust::String tmpfiles_translate (::rust::Str abs_path, ::rpmostreecxx::GFileInfo const &file_info,
::rust::Str username, ::rust::Str groupname);
void append_dracut_random_cpio (::std::int32_t fd);
::std::int32_t initramfs_overlay_generate (::rust::Vec< ::rust::String> const &files,
::rpmostreecxx::GCancellable &cancellable);
void journal_print_staging_failure () noexcept;
void console_progress_begin_task (::rust::Str msg) noexcept;
void console_progress_begin_n_items (::rust::Str msg, ::std::uint64_t n) noexcept;
void console_progress_begin_percent (::rust::Str msg) noexcept;
void console_progress_set_message (::rust::Str msg) noexcept;
void console_progress_set_sub_message (::rust::Str msg) noexcept;
void console_progress_update (::std::uint64_t n) noexcept;
void console_progress_end (::rust::Str suffix) noexcept;
::rust::Box< ::rpmostreecxx::HistoryCtx> history_ctx_new ();
void history_prune ();
::rust::Box< ::rpmostreecxx::TokioHandle> tokio_handle_get () noexcept;
bool script_is_ignored (::rust::Str pkg, ::rust::Str script, bool use_kernel_install) noexcept;
void testutils_entrypoint (::rust::Vec< ::rust::String> argv);
::rust::String maybe_shell_quote (::rust::Str input) noexcept;
::rust::Box< ::rpmostreecxx::Treefile> treefile_new (::rust::Str filename, ::rust::Str basearch);
::rust::Box< ::rpmostreecxx::Treefile> treefile_new_empty ();
::rust::Box< ::rpmostreecxx::Treefile> treefile_new_from_string (::rust::Str buf, bool client);
::rust::Box< ::rpmostreecxx::Treefile> treefile_new_compose (::rust::Str filename,
::rust::Str basearch);
::rust::Box< ::rpmostreecxx::Treefile> treefile_new_client (::rust::Str filename,
::rust::Str basearch);
::rust::Box< ::rpmostreecxx::Treefile> treefile_new_client_from_etc (::rust::Str basearch);
::std::uint32_t treefile_delete_client_etc ();
::rust::String varsubstitute (::rust::Str s,
::rust::Vec< ::rpmostreecxx::StringMapping> const &vars);
::rust::Vec< ::rust::String> get_features () noexcept;
::rust::String get_rpm_basearch () noexcept;
::std::int32_t sealed_memfd (::rust::Str description, ::rust::Slice< ::std::uint8_t const> content);
bool running_in_systemd () noexcept;
::rpmostreecxx::GVariant *calculate_advisories_diff (::rpmostreecxx::OstreeRepo const &repo,
::rust::Str checksum_from,
::rust::Str checksum_to);
::rust::String translate_path_for_ostree (::rust::Str path) noexcept;
::rpmostreecxx::LiveApplyState
get_live_apply_state (::rpmostreecxx::OstreeSysroot const &sysroot,
::rpmostreecxx::OstreeDeployment const &deployment);
bool has_live_apply_state (::rpmostreecxx::OstreeSysroot const &sysroot,
::rpmostreecxx::OstreeDeployment const &deployment);
void applylive_sync_ref (::rpmostreecxx::OstreeSysroot const &sysroot);
void transaction_apply_live (::rpmostreecxx::OstreeSysroot const &sysroot,
::rpmostreecxx::GVariant const &target);
bool prepare_rpm_layering (::std::int32_t rootfs, ::rust::Str merge_passwd_dir);
void complete_rpm_layering (::std::int32_t rootfs);
void deduplicate_tmpfiles_entries (::std::int32_t rootfs);
void passwd_cleanup (::std::int32_t rootfs);
void migrate_group_except_root (::std::int32_t rootfs,
::rust::Vec< ::rust::String> const &preserved_groups);
void migrate_passwd_except_root (::std::int32_t rootfs);
void passwd_compose_prep (::std::int32_t rootfs, ::rpmostreecxx::Treefile &treefile);
void passwd_compose_prep_repo (::std::int32_t rootfs, ::rpmostreecxx::Treefile &treefile,
::rpmostreecxx::OstreeRepo const &repo,
::rust::Str previous_checksum, bool unified_core);
bool dir_contains_uid (::std::int32_t dirfd, ::std::uint32_t id);
bool dir_contains_gid (::std::int32_t dirfd, ::std::uint32_t id);
void check_passwd_group_entries (::rpmostreecxx::OstreeRepo const &ffi_repo,
::std::int32_t rootfs_dfd, ::rpmostreecxx::Treefile &treefile,
::rust::Str previous_rev);
::rust::Box< ::rpmostreecxx::PasswdDB> passwddb_open (::std::int32_t rootfs);
::rust::Box< ::rpmostreecxx::PasswdEntries> new_passwd_entries () noexcept;
::rust::Box< ::rpmostreecxx::Extensions>
extensions_load (::rust::Str path, ::rust::Str basearch,
::rust::Vec< ::rpmostreecxx::StringMapping> const &base_pkgs);
::rust::Box< ::rpmostreecxx::LockfileConfig>
lockfile_read (::rust::Vec< ::rust::String> const &filenames);
void lockfile_write (::rust::Str filename, ::rpmostreecxx::CxxGObjectArray &packages,
::rpmostreecxx::CxxGObjectArray &rpmmd_repos);
::rust::Box< ::rpmostreecxx::Treefile> origin_to_treefile (::rpmostreecxx::GKeyFile const &kf);
::rpmostreecxx::GKeyFile *treefile_to_origin (::rpmostreecxx::Treefile const &tf);
void origin_validate_roundtrip (::rpmostreecxx::GKeyFile const &kf) noexcept;
::rust::String cache_branch_to_nevra (::rust::Str nevra) noexcept;
} // namespace rpmostreecxx