1
0
forked from brl/citadel

Compare commits

..

12 Commits

39 changed files with 1538 additions and 162 deletions

View File

@ -0,0 +1,4 @@
# For blueprint-compiler-native to work
EXTRA_OEMESON:remove:class-native = "-Dintrospection=disabled"
EXTRA_OEMESON:append:class-native = " -Dintrospection=enabled"

View File

@ -0,0 +1,4 @@
# For blueprint-compiler-native to work
EXTRA_OEMESON:remove:class-native = "-Dintrospection=disabled"
EXTRA_OEMESON:append:class-native = " -Dintrospection=enabled"

View File

@ -1,2 +1,6 @@
# Remove this dependency so it doesn't get dragged in with gtk. These icons are in citadel-extra-image now
GTKBASE_RRECOMMENDS:remove = "adwaita-icon-theme-symbolic"
# For blueprint-compiler-native to work
EXTRA_OEMESON:remove:class-native = "-Dintrospection=disabled"
EXTRA_OEMESON:append:class-native = " -Dintrospection=enabled"

View File

@ -0,0 +1,4 @@
# For blueprint-compiler-native to work
EXTRA_OEMESON:remove:class-native = "-Dintrospection=disabled"
EXTRA_OEMESON:append:class-native = " -Dintrospection=enabled"

View File

@ -0,0 +1,6 @@
# For blueprint-compiler-native to work
EXTRA_OEMESON:remove:class-native = "-Dintrospection=disabled"
EXTRA_OEMESON:append:class-native = " -Dintrospection=enabled"
BBCLASSEXTEND = "native"

View File

@ -3,16 +3,12 @@ FILESEXTRAPATHS:prepend := "${THISDIR}/networkmanager:"
SRC_URI += "\
file://NetworkManager.conf \
file://watch-resolvconf.path \
file://watch-resolvconf.service \
"
SYSTEMD_SERVICE:${PN} += "watch-resolvconf.path"
do_install:append() {
install -m 0644 ${WORKDIR}/NetworkManager.conf ${D}${sysconfdir}/NetworkManager/
install -m 644 ${WORKDIR}/watch-resolvconf.path ${D}${systemd_system_unitdir}
install -m 644 ${WORKDIR}/watch-resolvconf.service ${D}${systemd_system_unitdir}
}
PACKAGECONFIG = "nss systemd polkit wifi iwd vala nmcli bluez5"
NETWORKMANAGER_FIREWALL_DEFAULT = "iptables"

View File

@ -0,0 +1,4 @@
# For blueprint-compiler-native to work
EXTRA_OEMESON:remove:class-native = "-Dintrospection=disabled"
EXTRA_OEMESON:append:class-native = " -Dintrospection=enabled"

View File

@ -0,0 +1,245 @@
From 14cd68b1fdd3a16a3aa2892f9216096bea02173d Mon Sep 17 00:00:00 2001
From: isa <isa@subgraph.com>
Date: Thu, 11 Jul 2024 18:58:40 +0000
Subject: [PATCH] Modify systemd to use localtime in /storage/citadel-state
Upstream-Status: Inappropriate [citadel specific]
---
src/basic/time-util.c | 4 ++--
src/core/manager.c | 18 +++++++++---------
src/core/manager.h | 2 +-
src/core/unit.h | 2 +-
src/firstboot/firstboot.c | 20 ++++++++++----------
src/timedate/timedated.c | 12 ++++++------
units/systemd-timedated.service.in | 2 +-
7 files changed, 30 insertions(+), 30 deletions(-)
diff --git a/src/basic/time-util.c b/src/basic/time-util.c
index f9014dc560..bab1db4224 100644
--- a/src/basic/time-util.c
+++ b/src/basic/time-util.c
@@ -1612,7 +1612,7 @@ int get_timezone(char **ret) {
assert(ret);
- r = readlink_malloc("/etc/localtime", &t);
+ r = readlink_malloc("/storage/citadel-state/localtime", &t);
if (r == -ENOENT) {
/* If the symlink does not exist, assume "UTC", like glibc does */
z = strdup("UTC");
@@ -1625,7 +1625,7 @@ int get_timezone(char **ret) {
if (r < 0)
return r; /* returns EINVAL if not a symlink */
- e = PATH_STARTSWITH_SET(t, "/usr/share/zoneinfo/", "../usr/share/zoneinfo/");
+ e = PATH_STARTSWITH_SET(t, "/usr/share/zoneinfo/", "../../usr/share/zoneinfo/");
if (!e)
return -EINVAL;
diff --git a/src/core/manager.c b/src/core/manager.c
index 88eebfc626..59c4dbbae1 100644
--- a/src/core/manager.c
+++ b/src/core/manager.c
@@ -412,9 +412,9 @@ static int manager_read_timezone_stat(Manager *m) {
assert(m);
- /* Read the current stat() data of /etc/localtime so that we detect changes */
- if (lstat("/etc/localtime", &st) < 0) {
- log_debug_errno(errno, "Failed to stat /etc/localtime, ignoring: %m");
+ /* Read the current stat() data of /storage/citadel-state/localtime so that we detect changes */
+ if (lstat("/storage/citadel-state/localtime", &st) < 0) {
+ log_debug_errno(errno, "Failed to stat /storage/citadel-state/localtime, ignoring: %m");
changed = m->etc_localtime_accessible;
m->etc_localtime_accessible = false;
} else {
@@ -439,7 +439,7 @@ static int manager_setup_timezone_change(Manager *m) {
if (MANAGER_IS_TEST_RUN(m))
return 0;
- /* We watch /etc/localtime for three events: change of the link count (which might mean removal from /etc even
+ /* We watch /storage/citadel-state/localtime for three events: change of the link count (which might mean removal from /etc even
* though another link might be kept), renames, and file close operations after writing. Note we don't bother
* with IN_DELETE_SELF, as that would just report when the inode is removed entirely, i.e. after the link count
* went to zero and all fds to it are closed.
@@ -450,14 +450,14 @@ static int manager_setup_timezone_change(Manager *m) {
* Note that we create the new event source first here, before releasing the old one. This should optimize
* behaviour as this way sd-event can reuse the old watch in case the inode didn't change. */
- r = sd_event_add_inotify(m->event, &new_event, "/etc/localtime",
+ r = sd_event_add_inotify(m->event, &new_event, "/storage/citadel-state/localtime",
IN_ATTRIB|IN_MOVE_SELF|IN_CLOSE_WRITE|IN_DONT_FOLLOW, manager_dispatch_timezone_change, m);
if (r == -ENOENT) {
/* If the file doesn't exist yet, subscribe to /etc instead, and wait until it is created either by
* O_CREATE or by rename() */
- log_debug_errno(r, "/etc/localtime doesn't exist yet, watching /etc instead.");
- r = sd_event_add_inotify(m->event, &new_event, "/etc",
+ log_debug_errno(r, "/storage/citadel-state/localtime doesn't exist yet, watching /storage/citadel-state instead.");
+ r = sd_event_add_inotify(m->event, &new_event, "/storage/citadel-state",
IN_CREATE|IN_MOVED_TO|IN_ONLYDIR, manager_dispatch_timezone_change, m);
}
if (r < 0)
@@ -3173,13 +3173,13 @@ static int manager_dispatch_timezone_change(
int changed;
Unit *u;
- log_debug("inotify event for /etc/localtime");
+ log_debug("inotify event for /storage/citadel-state/localtime");
changed = manager_read_timezone_stat(m);
if (changed <= 0)
return changed;
- /* Something changed, restart the watch, to ensure we watch the new /etc/localtime if it changed */
+ /* Something changed, restart the watch, to ensure we watch the new /storage/citadel-state/localtime if it changed */
(void) manager_setup_timezone_change(m);
/* Read the new timezone */
diff --git a/src/core/manager.h b/src/core/manager.h
index d96eb7b995..68066cac50 100644
--- a/src/core/manager.h
+++ b/src/core/manager.h
@@ -370,7 +370,7 @@ struct Manager {
unsigned gc_marker;
- /* The stat() data the last time we saw /etc/localtime */
+ /* The stat() data the last time we saw /storage/citadel-state/localtime */
usec_t etc_localtime_mtime;
bool etc_localtime_accessible;
diff --git a/src/core/unit.h b/src/core/unit.h
index 60bc2e3d35..c19af861f9 100644
--- a/src/core/unit.h
+++ b/src/core/unit.h
@@ -713,7 +713,7 @@ typedef struct UnitVTable {
/* Called whenever CLOCK_REALTIME made a jump */
void (*time_change)(Unit *u);
- /* Called whenever /etc/localtime was modified */
+ /* Called whenever /storage/citadel-state/localtime was modified */
void (*timezone_change)(Unit *u);
/* Returns the next timeout of a unit */
diff --git a/src/firstboot/firstboot.c b/src/firstboot/firstboot.c
index d4029272de..5bc0976f63 100644
--- a/src/firstboot/firstboot.c
+++ b/src/firstboot/firstboot.c
@@ -606,15 +606,15 @@ static int process_timezone(int rfd) {
assert(rfd >= 0);
- pfd = chase_and_open_parent_at(rfd, "/etc/localtime",
+ pfd = chase_and_open_parent_at(rfd, "/storage/citadel-state/localtime",
CHASE_AT_RESOLVE_IN_ROOT|CHASE_MKDIR_0755|CHASE_WARN|CHASE_NOFOLLOW,
&f);
if (pfd < 0)
- return log_error_errno(pfd, "Failed to chase /etc/localtime: %m");
+ return log_error_errno(pfd, "Failed to chase /storage/citadel-state/localtime: %m");
r = should_configure(pfd, f);
if (r == 0)
- log_debug("Found /etc/localtime, assuming timezone has been configured.");
+ log_debug("Found /storage/citadel-state/localtime, assuming timezone has been configured.");
if (r <= 0)
return r;
@@ -625,16 +625,16 @@ static int process_timezone(int rfd) {
if (arg_copy_timezone && r == 0) {
_cleanup_free_ char *s = NULL;
- r = readlink_malloc("/etc/localtime", &s);
+ r = readlink_malloc("/storage/citadel-state/localtime", &s);
if (r != -ENOENT) {
if (r < 0)
- return log_error_errno(r, "Failed to read host's /etc/localtime: %m");
+ return log_error_errno(r, "Failed to read host's /storage/citadel-state/localtime: %m");
r = symlinkat_atomic_full(s, pfd, f, /* make_relative= */ false);
if (r < 0)
- return log_error_errno(r, "Failed to create /etc/localtime symlink: %m");
+ return log_error_errno(r, "Failed to create /storage/citadel-state/localtime symlink: %m");
- log_info("Copied host's /etc/localtime.");
+ log_info("Copied host's /storage/citadel-state/localtime.");
return 0;
}
}
@@ -650,9 +650,9 @@ static int process_timezone(int rfd) {
r = symlinkat_atomic_full(e, pfd, f, /* make_relative= */ false);
if (r < 0)
- return log_error_errno(r, "Failed to create /etc/localtime symlink: %m");
+ return log_error_errno(r, "Failed to create /storage/citadel-state/localtime symlink: %m");
- log_info("/etc/localtime written");
+ log_info("/storage/citadel-state/localtime written");
return 0;
}
@@ -1223,7 +1223,7 @@ static int process_reset(int rfd) {
"/etc/hostname",
"/etc/machine-id",
"/etc/kernel/cmdline",
- "/etc/localtime") {
+ "/storage/citadel-state/localtime") {
r = reset_one(rfd, p);
if (r < 0)
return r;
diff --git a/src/timedate/timedated.c b/src/timedate/timedated.c
index c7be30f563..334e5e251e 100644
--- a/src/timedate/timedated.c
+++ b/src/timedate/timedated.c
@@ -276,9 +276,9 @@ static int context_read_data(Context *c) {
r = get_timezone(&t);
if (r == -EINVAL)
- log_warning_errno(r, "/etc/localtime should be a symbolic link to a time zone data file in /usr/share/zoneinfo/.");
+ log_warning_errno(r, "/storage/citadel-state/localtime should be a symbolic link to a time zone data file in /usr/share/zoneinfo/.");
else if (r < 0)
- log_warning_errno(r, "Failed to get target of /etc/localtime: %m");
+ log_warning_errno(r, "Failed to get target of /storage/citadel-state/localtime: %m");
free_and_replace(c->zone, t);
@@ -302,22 +302,22 @@ static int context_write_data_timezone(Context *c) {
if (access("/usr/share/zoneinfo/UTC", F_OK) < 0) {
- if (unlink("/etc/localtime") < 0 && errno != ENOENT)
+ if (unlink("/storage/citadel-state/localtime") < 0 && errno != ENOENT)
return -errno;
return 0;
}
- source = "../usr/share/zoneinfo/UTC";
+ source = "../../usr/share/zoneinfo/UTC";
} else {
- p = path_join("../usr/share/zoneinfo", c->zone);
+ p = path_join("../../usr/share/zoneinfo", c->zone);
if (!p)
return -ENOMEM;
source = p;
}
- return symlink_atomic(source, "/etc/localtime");
+ return symlink_atomic(source, "/storage/citadel-state/localtime");
}
static int context_write_data_local_rtc(Context *c) {
diff --git a/units/systemd-timedated.service.in b/units/systemd-timedated.service.in
index 00f6643ba7..9be4010576 100644
--- a/units/systemd-timedated.service.in
+++ b/units/systemd-timedated.service.in
@@ -31,7 +31,7 @@ ProtectKernelLogs=yes
ProtectKernelModules=yes
ProtectKernelTunables=yes
ProtectSystem=strict
-ReadWritePaths=/etc
+ReadWritePaths=/storage/citadel-state
RestrictAddressFamilies=AF_UNIX
RestrictNamespaces=yes
RestrictRealtime=yes

View File

@ -16,3 +16,7 @@ do_install:append() {
rm -f ${D}${sysconfdir}/tmpfiles.d/00-create-volatile.conf
ln -s rescue.target ${D}${systemd_unitdir}/system/kbrequest.target
}
SRC_URI += " \
file://0001-Modify-systemd-to-use-localtime-in-storage-citadel-s.patch \
"

View File

@ -0,0 +1,5 @@
pkg_postinst:${PN}() {
etc_lt="$D${sysconfdir}/localtime"
ln -sf ../storage/citadel-state/localtime $etc_lt
}

View File

@ -41,6 +41,7 @@ SRC_URI = "\
file://share/dot.profile \
file://share/dot.vimrc \
file://polkit/citadel.rules \
file://polkit/gnome-control-center.rules \
file://citadel-installer.session \
file://citadel-installer.json \
file://citadel-installer.desktop \
@ -50,6 +51,9 @@ SRC_URI = "\
file://systemd/citadel-installer-backend.service \
file://systemd/installer-session-switcher.service \
file://systemd/user/gnome-session@citadel-installer.target.d/session.conf \
file://icons/citadel-installer.svg \
file://systemd/watch-resolvconf.service \
file://systemd/watch-resolvconf.path \
file://skel/profile \
file://skel/bashrc \
file://skel/vimrc \
@ -66,7 +70,7 @@ SRC_URI = "\
"
USERADD_PACKAGES = "${PN}"
USERADD_PARAM:${PN} = "-m -u 1000 -s /bin/bash citadel"
USERADD_PARAM:${PN} = "-m -u 1000 -G wheel -s /bin/bash citadel"
INHIBIT_PACKAGE_DEBUG_SPLIT = "1"
# for citadel-ifconfig.sh
@ -74,7 +78,7 @@ RDEPENDS:${PN} = "bash"
inherit allarch systemd useradd
SYSTEMD_SERVICE:${PN} = "zram-swap.service citadel-launch-default-realm.path x11-session-switcher.service citadel-installer-backend.service installer-session-switcher.service citadel-setpassword.service"
SYSTEMD_SERVICE:${PN} = "zram-swap.service citadel-launch-default-realm.path x11-session-switcher.service citadel-installer-backend.service installer-session-switcher.service citadel-setpassword.service watch-resolvconf.service watch-resolvconf.path"
do_install() {
install -m 0755 -d ${D}/storage
@ -118,6 +122,9 @@ do_install() {
install -m 644 ${WORKDIR}/systemd/citadel-installer-backend.service ${D}${systemd_system_unitdir}
install -m 644 ${WORKDIR}/systemd/installer-session-switcher.service ${D}${systemd_system_unitdir}
install -m 644 ${WORKDIR}/systemd/watch-resolvconf.service ${D}${systemd_system_unitdir}
install -m 644 ${WORKDIR}/systemd/watch-resolvconf.path ${D}${systemd_system_unitdir}
install -m 644 ${WORKDIR}/systemd/citadel-setpassword.service ${D}${systemd_system_unitdir}
install -m 0754 ${WORKDIR}/citadel-setpassword.sh ${D}${libexecdir}
install -d ${D}${systemd_user_unitdir}/gnome-session@citadel-installer.target.d
@ -163,6 +170,7 @@ do_install() {
install -m 0644 ${WORKDIR}/polkit/citadel.rules ${D}${sysconfdir}/polkit-1/rules.d/
install -m 0644 ${WORKDIR}/polkit/gnome-control-center.rules ${D}${sysconfdir}/polkit-1/rules.d/
install -m 0644 ${WORKDIR}/modprobe.d/audio_powersave.conf ${D}${sysconfdir}/modprobe.d/
@ -172,6 +180,10 @@ do_install() {
install -m 0644 ${WORKDIR}/apt-cacher-ng/acng.conf ${D}${datadir}/apt-cacher-ng/conf/
install -m 0644 ${WORKDIR}/apt-cacher-ng/security.conf ${D}${datadir}/apt-cacher-ng/conf/
# icons
mkdir ${D}${datadir}/icons/
install -m 0644 ${WORKDIR}/icons/citadel-installer.svg ${D}${datadir}/icons/
# This probably belongs in lvm2 recipe
install -d ${D}${systemd_system_unitdir}/sysinit.target.wants
ln -s ../lvm2-lvmetad.socket ${D}${systemd_system_unitdir}/sysinit.target.wants/lvm2-lvmetad.socket

View File

@ -3,6 +3,6 @@ Name=Citadel Installer
Comment=This session logs you into the Citadel Installer
Exec=/usr/libexec/citadel-installer-ui
TryExec=/usr/libexec/citadel-installer-ui
Icon=
Icon=/usr/share/icons/citadel-installer.svg
Type=Application

View File

@ -0,0 +1,153 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
width="64"
height="64"
version="1.1"
id="svg13"
sodipodi:docname="citadel-installer.svg"
inkscape:version="1.3 (0e150ed6c4, 2023-07-21)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<defs
id="defs13" />
<sodipodi:namedview
id="namedview13"
pagecolor="#ffffff"
bordercolor="#000000"
borderopacity="0.25"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:zoom="15.0625"
inkscape:cx="31.966805"
inkscape:cy="31.966805"
inkscape:window-width="3840"
inkscape:window-height="2090"
inkscape:window-x="0"
inkscape:window-y="34"
inkscape:window-maximized="1"
inkscape:current-layer="svg13" />
<rect
style="opacity:0.2;fill:#b6150c;fill-opacity:1"
width="56"
height="17"
x="4"
y="44"
rx="2.8"
ry="2.8"
id="rect1" />
<path
style="fill:#b60c12;fill-opacity:1;opacity:0.04"
d="m 18.25,4 h 27.5 C 50.3205,4 54,7.7045 54,12.275 V 46.65 c 0,4.5705 -3.6795,8.25 -8.25,8.25 H 18.25 C 13.6795,54.9 10,51.2205 10,46.65 V 12.275 C 10,7.7045 13.6795,4 18.25,4 Z"
id="path1" />
<path
style="opacity:0.1;fill:#b60c12;fill-opacity:1"
transform="matrix(2.2773394,0,0,1.2576563,-4.4374303,-4.805362)"
d="m 10.950248,26.084524 5.049752,0 5.049752,0 -2.524876,4.373214 L 16,34.830952 13.475124,30.457738 Z"
id="path2" />
<path
style="fill:#b6150c;fill-opacity:1"
transform="matrix(2.2773394,0,0,1.2576563,-4.4374303,-5.8053658)"
d="m 10.950248,26.084524 5.049752,0 5.049752,0 -2.524876,4.373214 L 16,34.830952 13.475124,30.457738 Z"
id="path3" />
<rect
style="opacity:0.8;fill:#b6150c;fill-opacity:1"
width="6"
height="6"
x="26"
y="9"
id="rect3" />
<rect
style="opacity:0.2;fill:#b6150c;fill-opacity:1"
width="6"
height="6"
x="32"
y="9"
id="rect4" />
<rect
style="opacity:0.4;fill:#b6150c;fill-opacity:1"
width="6"
height="6"
x="26"
y="15"
id="rect5" />
<rect
style="opacity:0.9;fill:#b6150c;fill-opacity:1"
width="6"
height="6"
x="32"
y="15"
id="rect6" />
<rect
style="fill:#b6150c;fill-opacity:1"
width="6"
height="6"
x="26"
y="21"
id="rect7" />
<rect
style="opacity:0.6;fill:#b6150c;fill-opacity:1"
width="6"
height="6"
x="32"
y="21"
id="rect8" />
<rect
style="fill:#b6150c;fill-opacity:1"
width="56"
height="17"
x="4"
y="43"
rx="2.8"
ry="2.8"
id="rect9" />
<rect
style="opacity:0.2"
width="22.4"
height="1"
x="12.4"
y="53"
id="rect10" />
<path
style="opacity:0.3"
d="M 51.5 47 A 4.5 4.5 0 0 0 47.267578 50 L 32.400391 50 L 32.400391 53 L 47.267578 53 A 4.5 4.5 0 0 0 51.5 56 A 4.5 4.5 0 0 0 56 51.5 A 4.5 4.5 0 0 0 51.5 47 z"
id="path10" />
<circle
style="opacity:0.2"
cx="12.5"
cy="52.5"
r="4.5"
id="circle10" />
<circle
style="fill:#ffffff"
cx="12.5"
cy="51.5"
r="4.5"
id="circle11" />
<rect
style="fill:#ffffff"
width="22.4"
height="3"
x="12.4"
y="50"
id="rect11" />
<circle
style="opacity:0.2"
cx="31.5"
cy="52.5"
r="4.5"
id="circle12" />
<circle
style="fill:#ffffff"
cx="31.5"
cy="51.5"
r="4.5"
id="circle13" />
<path
style="fill:#ffffff;opacity:0.2"
d="M 18.25 4 C 13.6795 4 10 7.7048906 10 12.275391 L 10 13.275391 C 10 8.7048906 13.6795 5 18.25 5 L 45.75 5 C 50.3205 5 54 8.7048906 54 13.275391 L 54 12.275391 C 54 7.7048906 50.3205 4 45.75 4 L 18.25 4 z"
id="path13" />
</svg>

After

Width:  |  Height:  |  Size: 3.9 KiB

View File

@ -0,0 +1,13 @@
polkit.addRule(function(action, subject) {
if ((action.id == "org.freedesktop.locale1.set-locale" ||
action.id == "org.freedesktop.locale1.set-keyboard" ||
action.id == "org.freedesktop.ModemManager1.Device.Control" ||
action.id == "org.freedesktop.hostname1.set-static-hostname" ||
action.id == "org.freedesktop.hostname1.set-hostname" ||
action.id == "org.gnome.controlcenter.datetime.configure") &&
subject.local &&
subject.active &&
subject.isInGroup ("citadel")) {
return polkit.Result.YES;
}
});

View File

@ -6,4 +6,4 @@ PathChanged=/run/NetworkManager
MakeDirectory=true
[Install]
WantedBy=multi-user.target
WantedBy=multi-user.target

View File

@ -4,4 +4,4 @@ ConditionPathExists=/run/NetworkManager/resolv.conf
ConditionPathExists=/storage/citadel-state
[Service]
Type=oneshot
ExecStart=/bin/cp /run/NetworkManager/resolv.conf /storage/citadel-state/resolv.conf
ExecStart=/bin/cp /run/NetworkManager/resolv.conf /storage/citadel-state/resolv.conf

View File

@ -0,0 +1,21 @@
LICENSE="CLOSED"
SRC_URI = "gitsm://git.subgraph.com/brl/citadel-realms.git;protocol=https;branch=master"
PV = "1.0"
SRCREV = "048002a617d643b61774d69edee1526d4c7adbdf"
S = "${WORKDIR}/git"
APPNAME="com.subgraph.citadel.Realms"
GTKIC_VERSION = "4"
FILES:${PN} += "${datadir}/icons \
${datadir}/${APPNAME} \
"
DEPENDS = "blueprint-compiler-native gjs gtk4 gtk4-native libadwaita-native"
inherit meson gtk-icon-cache

View File

@ -49,4 +49,6 @@ RDEPENDS:${PN} = "\
pipewire-tools \
pipewire-spa-tools \
alsa-utils \
gnome-software \
minijail \
"

View File

@ -29,6 +29,7 @@ RDEPENDS:${PN} = "\
libdrm-amdgpu \
dash-to-panel \
citadel-config-gnome \
citadel-realms \
power-profiles-daemon \
"

View File

@ -8,9 +8,16 @@ inherit cargo systemd gsettings pkgconfig
#
# Update this when changes are pushed to github
#
SRCREV = "421b0e27d777c418a26016bd8065715823504637"
SRCREV = "11b3e8a0164c8b304efbeda5245f4ab6ec48d298"
GIT_URI = "git://git.subgraph.com/brl/citadel-tools.git;protocol=https;branch=master"
# get git repo owner from citadel to find the correct citadel-tools repo path
python () {
import subprocess
git_owner = subprocess.check_output(['git', 'remote', 'get-url', 'origin']).strip().decode('utf-8').split('/')[0].split(':')[1]
d.setVar("GIT_REPO_OWNER", git_owner)
}
GIT_URI = "git://git.subgraph.com/${GIT_REPO_OWNER}/citadel-tools.git;protocol=https;branch=master"
# If Cargo.lock changes in citadel-tools, this needs to be updated.
# cargo bitbake does not support workspaces so as a workaround first
@ -24,78 +31,99 @@ SRC_URI += " \
crate://crates.io/acl-sys/1.2.2 \
crate://crates.io/addr2line/0.17.0 \
crate://crates.io/adler/1.0.2 \
crate://crates.io/aho-corasick/0.7.18 \
crate://crates.io/ansi_term/0.12.1 \
crate://crates.io/anstream/0.6.15 \
crate://crates.io/anstyle-parse/0.2.5 \
crate://crates.io/anstyle-query/1.1.1 \
crate://crates.io/anstyle-wincon/3.0.4 \
crate://crates.io/anstyle/1.0.8 \
crate://crates.io/anyhow/1.0.57 \
crate://crates.io/array-macro/1.0.5 \
crate://crates.io/async-broadcast/0.3.4 \
crate://crates.io/async-channel/1.6.1 \
crate://crates.io/async-executor/1.4.1 \
crate://crates.io/async-io/1.6.0 \
crate://crates.io/async-lock/2.5.0 \
crate://crates.io/async-task/4.2.0 \
crate://crates.io/async-broadcast/0.7.1 \
crate://crates.io/async-channel/2.3.1 \
crate://crates.io/async-executor/1.13.1 \
crate://crates.io/async-fs/2.1.2 \
crate://crates.io/async-io/2.3.4 \
crate://crates.io/async-lock/3.4.0 \
crate://crates.io/async-process/2.2.4 \
crate://crates.io/async-recursion/1.1.1 \
crate://crates.io/async-signal/0.2.10 \
crate://crates.io/async-task/4.7.1 \
crate://crates.io/async-trait/0.1.82 \
crate://crates.io/atk-sys/0.14.0 \
crate://crates.io/atk/0.14.0 \
crate://crates.io/atty/0.2.14 \
crate://crates.io/atomic-waker/1.1.2 \
crate://crates.io/autocfg/1.1.0 \
crate://crates.io/backtrace/0.3.65 \
crate://crates.io/bincode/1.3.3 \
crate://crates.io/bitflags/1.2.1 \
crate://crates.io/bitflags/2.6.0 \
crate://crates.io/block-buffer/0.10.4 \
crate://crates.io/block-buffer/0.9.0 \
crate://crates.io/block-cipher/0.7.1 \
crate://crates.io/blowfish/0.5.0 \
crate://crates.io/blocking/1.6.1 \
crate://crates.io/blowfish/0.7.0 \
crate://crates.io/byteorder/1.4.3 \
crate://crates.io/cache-padded/1.2.0 \
crate://crates.io/cairo-rs/0.14.9 \
crate://crates.io/cairo-sys-rs/0.14.9 \
crate://crates.io/cc/1.0.73 \
crate://crates.io/cfg-expr/0.8.1 \
crate://crates.io/cfg-if/0.1.10 \
crate://crates.io/cfg-if/1.0.0 \
crate://crates.io/cfg_aliases/0.2.1 \
crate://crates.io/chrono/0.4.19 \
crate://crates.io/clap/2.34.0 \
crate://crates.io/concurrent-queue/1.2.2 \
crate://crates.io/cipher/0.2.5 \
crate://crates.io/clap/4.5.17 \
crate://crates.io/clap_builder/4.5.17 \
crate://crates.io/clap_derive/4.5.13 \
crate://crates.io/clap_lex/0.7.2 \
crate://crates.io/colorchoice/1.0.2 \
crate://crates.io/concurrent-queue/2.5.0 \
crate://crates.io/cpufeatures/0.2.2 \
crate://crates.io/crc32fast/1.3.2 \
crate://crates.io/crossbeam-channel/0.3.9 \
crate://crates.io/crossbeam-utils/0.6.6 \
crate://crates.io/crypto-mac/0.8.0 \
crate://crates.io/crossbeam-utils/0.8.20 \
crate://crates.io/crypto-common/0.1.6 \
crate://crates.io/crypto-mac/0.10.1 \
crate://crates.io/cursive/0.11.0 \
crate://crates.io/dbus/0.6.5 \
crate://crates.io/dbus/0.8.4 \
crate://crates.io/derivative/2.2.0 \
crate://crates.io/digest/0.10.7 \
crate://crates.io/digest/0.9.0 \
crate://crates.io/easy-parallel/3.2.0 \
crate://crates.io/dtoa/0.4.8 \
crate://crates.io/ed25519/1.5.2 \
crate://crates.io/either/1.6.1 \
crate://crates.io/endi/1.1.0 \
crate://crates.io/enum-map-derive/0.4.6 \
crate://crates.io/enum-map-internals/0.1.2 \
crate://crates.io/enum-map/0.5.0 \
crate://crates.io/enumflags2/0.6.4 \
crate://crates.io/enumflags2_derive/0.6.4 \
crate://crates.io/enumflags2/0.7.10 \
crate://crates.io/enumflags2_derive/0.7.10 \
crate://crates.io/enumset/0.3.19 \
crate://crates.io/enumset_derive/0.3.2 \
crate://crates.io/event-listener/2.5.2 \
crate://crates.io/equivalent/1.0.1 \
crate://crates.io/errno/0.3.9 \
crate://crates.io/event-listener-strategy/0.5.2 \
crate://crates.io/event-listener/5.3.1 \
crate://crates.io/failure/0.1.8 \
crate://crates.io/failure_derive/0.1.8 \
crate://crates.io/fastrand/1.7.0 \
crate://crates.io/fastrand/2.1.1 \
crate://crates.io/field-offset/0.3.4 \
crate://crates.io/flate2/1.0.24 \
crate://crates.io/futures-channel/0.3.21 \
crate://crates.io/futures-core/0.3.21 \
crate://crates.io/futures-core/0.3.30 \
crate://crates.io/futures-executor/0.3.21 \
crate://crates.io/futures-io/0.3.21 \
crate://crates.io/futures-lite/1.12.0 \
crate://crates.io/futures-macro/0.3.21 \
crate://crates.io/futures-sink/0.3.21 \
crate://crates.io/futures-task/0.3.21 \
crate://crates.io/futures-util/0.3.21 \
crate://crates.io/futures-io/0.3.30 \
crate://crates.io/futures-lite/2.3.0 \
crate://crates.io/futures-macro/0.3.30 \
crate://crates.io/futures-sink/0.3.30 \
crate://crates.io/futures-task/0.3.30 \
crate://crates.io/futures-util/0.3.30 \
crate://crates.io/gdk-pixbuf-sys/0.14.0 \
crate://crates.io/gdk-pixbuf/0.14.0 \
crate://crates.io/gdk-sys/0.14.0 \
crate://crates.io/gdk/0.14.3 \
crate://crates.io/generic-array/0.14.5 \
crate://crates.io/getrandom/0.1.16 \
crate://crates.io/getrandom/0.2.6 \
crate://crates.io/gimli/0.26.1 \
crate://crates.io/gio-sys/0.14.0 \
@ -111,97 +139,101 @@ SRC_URI += " \
crate://crates.io/gtk-sys/0.14.0 \
crate://crates.io/gtk/0.14.3 \
crate://crates.io/gtk3-macros/0.14.0 \
crate://crates.io/hashbrown/0.14.5 \
crate://crates.io/heck/0.3.3 \
crate://crates.io/hermit-abi/0.1.19 \
crate://crates.io/heck/0.5.0 \
crate://crates.io/hermit-abi/0.4.0 \
crate://crates.io/hex/0.4.3 \
crate://crates.io/hmac/0.8.1 \
crate://crates.io/hmac/0.10.1 \
crate://crates.io/indexmap/2.5.0 \
crate://crates.io/inotify-sys/0.1.5 \
crate://crates.io/inotify/0.8.3 \
crate://crates.io/instant/0.1.12 \
crate://crates.io/is_terminal_polyfill/1.70.1 \
crate://crates.io/itertools/0.10.3 \
crate://crates.io/itertools/0.9.0 \
crate://crates.io/itoa/0.3.4 \
crate://crates.io/lazy_static/1.4.0 \
crate://crates.io/libc/0.2.126 \
crate://crates.io/libc/0.2.158 \
crate://crates.io/libdbus-sys/0.2.2 \
crate://crates.io/libsodium-sys/0.2.7 \
crate://crates.io/linux-raw-sys/0.4.14 \
crate://crates.io/log/0.4.17 \
crate://crates.io/md-5/0.9.1 \
crate://crates.io/memchr/2.5.0 \
crate://crates.io/memoffset/0.6.5 \
crate://crates.io/memoffset/0.9.1 \
crate://crates.io/miniz_oxide/0.5.1 \
crate://crates.io/nix/0.17.0 \
crate://crates.io/nix/0.21.2 \
crate://crates.io/nix/0.29.0 \
crate://crates.io/num-complex/0.2.4 \
crate://crates.io/num-integer/0.1.45 \
crate://crates.io/num-iter/0.1.43 \
crate://crates.io/num-rational/0.2.4 \
crate://crates.io/num-traits/0.1.43 \
crate://crates.io/num-traits/0.2.15 \
crate://crates.io/num/0.2.1 \
crate://crates.io/numtoa/0.1.0 \
crate://crates.io/object/0.28.4 \
crate://crates.io/once_cell/1.10.0 \
crate://crates.io/opaque-debug/0.2.3 \
crate://crates.io/once_cell/1.19.0 \
crate://crates.io/opaque-debug/0.3.0 \
crate://crates.io/ordered-stream/0.2.0 \
crate://crates.io/owning_ref/0.4.1 \
crate://crates.io/pango-sys/0.10.0 \
crate://crates.io/pango-sys/0.14.0 \
crate://crates.io/pango/0.14.8 \
crate://crates.io/pango/0.9.1 \
crate://crates.io/parking/2.0.0 \
crate://crates.io/parking/2.2.1 \
crate://crates.io/pest/2.1.3 \
crate://crates.io/pin-project-lite/0.2.9 \
crate://crates.io/pin-project-lite/0.2.14 \
crate://crates.io/pin-utils/0.1.0 \
crate://crates.io/piper/0.2.4 \
crate://crates.io/pkg-config/0.3.25 \
crate://crates.io/polling/2.2.0 \
crate://crates.io/polling/3.7.3 \
crate://crates.io/posix-acl/1.0.0 \
crate://crates.io/ppv-lite86/0.2.16 \
crate://crates.io/proc-macro-crate/0.1.5 \
crate://crates.io/proc-macro-crate/1.1.3 \
crate://crates.io/proc-macro-crate/3.2.0 \
crate://crates.io/proc-macro-error-attr/1.0.4 \
crate://crates.io/proc-macro-error/1.0.4 \
crate://crates.io/proc-macro2/0.4.30 \
crate://crates.io/proc-macro2/1.0.39 \
crate://crates.io/proc-macro2/1.0.86 \
crate://crates.io/procfs/0.12.0 \
crate://crates.io/pwhash/0.3.1 \
crate://crates.io/pwhash/1.0.0 \
crate://crates.io/quote/0.6.13 \
crate://crates.io/quote/1.0.18 \
crate://crates.io/rand/0.7.3 \
crate://crates.io/quote/1.0.37 \
crate://crates.io/rand/0.8.5 \
crate://crates.io/rand_chacha/0.2.2 \
crate://crates.io/rand_chacha/0.3.1 \
crate://crates.io/rand_core/0.5.1 \
crate://crates.io/rand_core/0.6.3 \
crate://crates.io/rand_hc/0.2.0 \
crate://crates.io/redox_syscall/0.2.13 \
crate://crates.io/redox_termios/0.1.2 \
crate://crates.io/regex-syntax/0.6.25 \
crate://crates.io/regex/1.5.5 \
crate://crates.io/remove_dir_all/0.5.3 \
crate://crates.io/rpassword/4.0.5 \
crate://crates.io/rpassword/7.3.1 \
crate://crates.io/rtoolbox/0.0.2 \
crate://crates.io/rustc-demangle/0.1.21 \
crate://crates.io/rustc_version/0.3.3 \
crate://crates.io/rustix/0.38.37 \
crate://crates.io/same-file/1.0.6 \
crate://crates.io/scoped-tls/1.0.0 \
crate://crates.io/semver-parser/0.10.2 \
crate://crates.io/semver/0.11.0 \
crate://crates.io/serde/1.0.137 \
crate://crates.io/serde_derive/1.0.137 \
crate://crates.io/serde_repr/0.1.8 \
crate://crates.io/serde/1.0.209 \
crate://crates.io/serde_derive/1.0.209 \
crate://crates.io/serde_json/1.0.1 \
crate://crates.io/serde_repr/0.1.19 \
crate://crates.io/serde_spanned/0.6.7 \
crate://crates.io/sha-1/0.9.8 \
crate://crates.io/sha1/0.6.1 \
crate://crates.io/sha1_smol/1.0.0 \
crate://crates.io/sha1/0.10.6 \
crate://crates.io/sha2/0.9.9 \
crate://crates.io/signal-hook-registry/1.4.0 \
crate://crates.io/signal-hook/0.1.17 \
crate://crates.io/signature/1.5.0 \
crate://crates.io/slab/0.4.6 \
crate://crates.io/slotmap/1.0.6 \
crate://crates.io/slab/0.4.9 \
crate://crates.io/smallvec/1.8.0 \
crate://crates.io/socket2/0.4.4 \
crate://crates.io/sodiumoxide/0.2.7 \
crate://crates.io/stable_deref_trait/1.2.0 \
crate://crates.io/static_assertions/1.1.0 \
crate://crates.io/strsim/0.8.0 \
crate://crates.io/strsim/0.11.1 \
crate://crates.io/strum/0.18.0 \
crate://crates.io/strum/0.21.0 \
crate://crates.io/strum_macros/0.18.0 \
@ -209,120 +241,169 @@ SRC_URI += " \
crate://crates.io/subtle/2.4.1 \
crate://crates.io/syn/0.15.44 \
crate://crates.io/syn/1.0.95 \
crate://crates.io/syn/2.0.77 \
crate://crates.io/synstructure/0.12.6 \
crate://crates.io/system-deps/1.3.2 \
crate://crates.io/system-deps/3.2.0 \
crate://crates.io/tempfile/3.3.0 \
crate://crates.io/termion/1.5.6 \
crate://crates.io/textwrap/0.11.0 \
crate://crates.io/thiserror-impl/1.0.31 \
crate://crates.io/thiserror/1.0.31 \
crate://crates.io/time/0.1.43 \
crate://crates.io/toml/0.4.10 \
crate://crates.io/toml/0.5.9 \
crate://crates.io/toml/0.8.19 \
crate://crates.io/toml_datetime/0.6.8 \
crate://crates.io/toml_edit/0.22.20 \
crate://crates.io/tracing-attributes/0.1.27 \
crate://crates.io/tracing-core/0.1.32 \
crate://crates.io/tracing/0.1.40 \
crate://crates.io/typenum/1.15.0 \
crate://crates.io/ucd-trie/0.1.3 \
crate://crates.io/uds_windows/1.1.0 \
crate://crates.io/unicode-ident/1.0.0 \
crate://crates.io/unicode-segmentation/1.9.0 \
crate://crates.io/unicode-width/0.1.9 \
crate://crates.io/unicode-xid/0.1.0 \
crate://crates.io/unicode-xid/0.2.3 \
crate://crates.io/vec_map/0.8.2 \
crate://crates.io/utf8parse/0.2.2 \
crate://crates.io/version-compare/0.0.10 \
crate://crates.io/version-compare/0.0.11 \
crate://crates.io/version_check/0.9.4 \
crate://crates.io/void/1.0.2 \
crate://crates.io/waker-fn/1.1.0 \
crate://crates.io/walkdir/2.3.2 \
crate://crates.io/wasi/0.10.2+wasi-snapshot-preview1 \
crate://crates.io/wasi/0.9.0+wasi-snapshot-preview1 \
crate://crates.io/wepoll-ffi/0.1.2 \
crate://crates.io/winapi-i686-pc-windows-gnu/0.4.0 \
crate://crates.io/winapi-util/0.1.5 \
crate://crates.io/winapi-x86_64-pc-windows-gnu/0.4.0 \
crate://crates.io/winapi/0.3.9 \
crate://crates.io/windows-sys/0.48.0 \
crate://crates.io/windows-sys/0.52.0 \
crate://crates.io/windows-sys/0.59.0 \
crate://crates.io/windows-targets/0.48.5 \
crate://crates.io/windows-targets/0.52.6 \
crate://crates.io/windows_aarch64_gnullvm/0.48.5 \
crate://crates.io/windows_aarch64_gnullvm/0.52.6 \
crate://crates.io/windows_aarch64_msvc/0.48.5 \
crate://crates.io/windows_aarch64_msvc/0.52.6 \
crate://crates.io/windows_i686_gnu/0.48.5 \
crate://crates.io/windows_i686_gnu/0.52.6 \
crate://crates.io/windows_i686_gnullvm/0.52.6 \
crate://crates.io/windows_i686_msvc/0.48.5 \
crate://crates.io/windows_i686_msvc/0.52.6 \
crate://crates.io/windows_x86_64_gnu/0.48.5 \
crate://crates.io/windows_x86_64_gnu/0.52.6 \
crate://crates.io/windows_x86_64_gnullvm/0.48.5 \
crate://crates.io/windows_x86_64_gnullvm/0.52.6 \
crate://crates.io/windows_x86_64_msvc/0.48.5 \
crate://crates.io/windows_x86_64_msvc/0.52.6 \
crate://crates.io/winnow/0.6.18 \
crate://crates.io/xdg-home/1.3.0 \
crate://crates.io/xi-unicode/0.1.0 \
crate://crates.io/zbus/2.0.0-beta.5 \
crate://crates.io/zbus_macros/2.0.0-beta.5 \
crate://crates.io/zvariant/2.10.0 \
crate://crates.io/zvariant_derive/2.10.0 \
crate://crates.io/zbus/4.4.0 \
crate://crates.io/zbus_macros/4.4.0 \
crate://crates.io/zbus_names/3.0.0 \
crate://crates.io/zvariant/4.2.0 \
crate://crates.io/zvariant_derive/4.2.0 \
crate://crates.io/zvariant_utils/2.1.0 \
"
SRC_URI[acl-sys-1.2.2.sha256sum] = "bbc079f9bdd3124fd18df23c67f7e0f79d24751ae151dcffd095fcade07a3eb2"
SRC_URI[addr2line-0.17.0.sha256sum] = "b9ecd88a8c8378ca913a680cd98f0f13ac67383d35993f86c90a70e3f137816b"
SRC_URI[adler-1.0.2.sha256sum] = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe"
SRC_URI[aho-corasick-0.7.18.sha256sum] = "1e37cfd5e7657ada45f742d6e99ca5788580b5c529dc78faf11ece6dc702656f"
SRC_URI[ansi_term-0.12.1.sha256sum] = "d52a9bb7ec0cf484c551830a7ce27bd20d67eac647e1befb56b0be4ee39a55d2"
SRC_URI[anstream-0.6.15.sha256sum] = "64e15c1ab1f89faffbf04a634d5e1962e9074f2741eef6d97f3c4e322426d526"
SRC_URI[anstyle-parse-0.2.5.sha256sum] = "eb47de1e80c2b463c735db5b217a0ddc39d612e7ac9e2e96a5aed1f57616c1cb"
SRC_URI[anstyle-query-1.1.1.sha256sum] = "6d36fc52c7f6c869915e99412912f22093507da8d9e942ceaf66fe4b7c14422a"
SRC_URI[anstyle-wincon-3.0.4.sha256sum] = "5bf74e1b6e971609db8ca7a9ce79fd5768ab6ae46441c572e46cf596f59e57f8"
SRC_URI[anstyle-1.0.8.sha256sum] = "1bec1de6f59aedf83baf9ff929c98f2ad654b97c9510f4e70cf6f661d49fd5b1"
SRC_URI[anyhow-1.0.57.sha256sum] = "08f9b8508dccb7687a1d6c4ce66b2b0ecef467c94667de27d8d7fe1f8d2a9cdc"
SRC_URI[array-macro-1.0.5.sha256sum] = "06e97b4e522f9e55523001238ac59d13a8603af57f69980de5d8de4bbbe8ada6"
SRC_URI[async-broadcast-0.3.4.sha256sum] = "90622698a1218e0b2fb846c97b5f19a0831f6baddee73d9454156365ccfa473b"
SRC_URI[async-channel-1.6.1.sha256sum] = "2114d64672151c0c5eaa5e131ec84a74f06e1e559830dabba01ca30605d66319"
SRC_URI[async-executor-1.4.1.sha256sum] = "871f9bb5e0a22eeb7e8cf16641feb87c9dc67032ccf8ff49e772eb9941d3a965"
SRC_URI[async-io-1.6.0.sha256sum] = "a811e6a479f2439f0c04038796b5cfb3d2ad56c230e0f2d3f7b04d68cfee607b"
SRC_URI[async-lock-2.5.0.sha256sum] = "e97a171d191782fba31bb902b14ad94e24a68145032b7eedf871ab0bc0d077b6"
SRC_URI[async-task-4.2.0.sha256sum] = "30696a84d817107fc028e049980e09d5e140e8da8f1caeb17e8e950658a3cea9"
SRC_URI[async-broadcast-0.7.1.sha256sum] = "20cd0e2e25ea8e5f7e9df04578dc6cf5c83577fd09b1a46aaf5c85e1c33f2a7e"
SRC_URI[async-channel-2.3.1.sha256sum] = "89b47800b0be77592da0afd425cc03468052844aff33b84e33cc696f64e77b6a"
SRC_URI[async-executor-1.13.1.sha256sum] = "30ca9a001c1e8ba5149f91a74362376cc6bc5b919d92d988668657bd570bdcec"
SRC_URI[async-fs-2.1.2.sha256sum] = "ebcd09b382f40fcd159c2d695175b2ae620ffa5f3bd6f664131efff4e8b9e04a"
SRC_URI[async-io-2.3.4.sha256sum] = "444b0228950ee6501b3568d3c93bf1176a1fdbc3b758dcd9475046d30f4dc7e8"
SRC_URI[async-lock-3.4.0.sha256sum] = "ff6e472cdea888a4bd64f342f09b3f50e1886d32afe8df3d663c01140b811b18"
SRC_URI[async-process-2.2.4.sha256sum] = "a8a07789659a4d385b79b18b9127fc27e1a59e1e89117c78c5ea3b806f016374"
SRC_URI[async-recursion-1.1.1.sha256sum] = "3b43422f69d8ff38f95f1b2bb76517c91589a924d1559a0e935d7c8ce0274c11"
SRC_URI[async-signal-0.2.10.sha256sum] = "637e00349800c0bdf8bfc21ebbc0b6524abea702b0da4168ac00d070d0c0b9f3"
SRC_URI[async-task-4.7.1.sha256sum] = "8b75356056920673b02621b35afd0f7dda9306d03c79a30f5c56c44cf256e3de"
SRC_URI[async-trait-0.1.82.sha256sum] = "a27b8a3a6e1a44fa4c8baf1f653e4172e81486d4941f2237e20dc2d0cf4ddff1"
SRC_URI[atk-sys-0.14.0.sha256sum] = "badcf670157c84bb8b1cf6b5f70b650fed78da2033c9eed84c4e49b11cbe83ea"
SRC_URI[atk-0.14.0.sha256sum] = "a83b21d2aa75e464db56225e1bda2dd5993311ba1095acaa8fa03d1ae67026ba"
SRC_URI[atty-0.2.14.sha256sum] = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8"
SRC_URI[atomic-waker-1.1.2.sha256sum] = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0"
SRC_URI[autocfg-1.1.0.sha256sum] = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa"
SRC_URI[backtrace-0.3.65.sha256sum] = "11a17d453482a265fd5f8479f2a3f405566e6ca627837aaddb85af8b1ab8ef61"
SRC_URI[bincode-1.3.3.sha256sum] = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad"
SRC_URI[bitflags-1.2.1.sha256sum] = "cf1de2fe8c75bc145a2f577add951f8134889b4795d47466a54a5c846d691693"
SRC_URI[bitflags-2.6.0.sha256sum] = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de"
SRC_URI[block-buffer-0.10.4.sha256sum] = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71"
SRC_URI[block-buffer-0.9.0.sha256sum] = "4152116fd6e9dadb291ae18fc1ec3575ed6d84c29642d97890f4b4a3417297e4"
SRC_URI[block-cipher-0.7.1.sha256sum] = "fa136449e765dc7faa244561ccae839c394048667929af599b5d931ebe7b7f10"
SRC_URI[blowfish-0.5.0.sha256sum] = "91d01392750dd899a2528948d6b856afe2df508d627fc7c339868c0bd0141b4b"
SRC_URI[blocking-1.6.1.sha256sum] = "703f41c54fc768e63e091340b424302bb1c29ef4aa0c7f10fe849dfb114d29ea"
SRC_URI[blowfish-0.7.0.sha256sum] = "32fa6a061124e37baba002e496d203e23ba3d7b73750be82dbfbc92913048a5b"
SRC_URI[byteorder-1.4.3.sha256sum] = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610"
SRC_URI[cache-padded-1.2.0.sha256sum] = "c1db59621ec70f09c5e9b597b220c7a2b43611f4710dc03ceb8748637775692c"
SRC_URI[cairo-rs-0.14.9.sha256sum] = "33b5725979db0c586d98abad2193cdb612dd40ef95cd26bd99851bf93b3cb482"
SRC_URI[cairo-sys-rs-0.14.9.sha256sum] = "b448b876970834fda82ba3aeaccadbd760206b75388fc5c1b02f1e343b697570"
SRC_URI[cc-1.0.73.sha256sum] = "2fff2a6927b3bb87f9595d67196a70493f627687a71d87a0d692242c33f58c11"
SRC_URI[cfg-expr-0.8.1.sha256sum] = "b412e83326147c2bb881f8b40edfbf9905b9b8abaebd0e47ca190ba62fda8f0e"
SRC_URI[cfg-if-0.1.10.sha256sum] = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822"
SRC_URI[cfg-if-1.0.0.sha256sum] = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
SRC_URI[cfg_aliases-0.2.1.sha256sum] = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724"
SRC_URI[chrono-0.4.19.sha256sum] = "670ad68c9088c2a963aaa298cb369688cf3f9465ce5e2d4ca10e6e0098a1ce73"
SRC_URI[clap-2.34.0.sha256sum] = "a0610544180c38b88101fecf2dd634b174a62eef6946f84dfc6a7127512b381c"
SRC_URI[concurrent-queue-1.2.2.sha256sum] = "30ed07550be01594c6026cff2a1d7fe9c8f683caa798e12b68694ac9e88286a3"
SRC_URI[cipher-0.2.5.sha256sum] = "12f8e7987cbd042a63249497f41aed09f8e65add917ea6566effbc56578d6801"
SRC_URI[clap-4.5.17.sha256sum] = "3e5a21b8495e732f1b3c364c9949b201ca7bae518c502c80256c96ad79eaf6ac"
SRC_URI[clap_builder-4.5.17.sha256sum] = "8cf2dd12af7a047ad9d6da2b6b249759a22a7abc0f474c1dae1777afa4b21a73"
SRC_URI[clap_derive-4.5.13.sha256sum] = "501d359d5f3dcaf6ecdeee48833ae73ec6e42723a1e52419c79abf9507eec0a0"
SRC_URI[clap_lex-0.7.2.sha256sum] = "1462739cb27611015575c0c11df5df7601141071f07518d56fcc1be504cbec97"
SRC_URI[colorchoice-1.0.2.sha256sum] = "d3fd119d74b830634cea2a0f58bbd0d54540518a14397557951e79340abc28c0"
SRC_URI[concurrent-queue-2.5.0.sha256sum] = "4ca0197aee26d1ae37445ee532fefce43251d24cc7c166799f4d46817f1d3973"
SRC_URI[cpufeatures-0.2.2.sha256sum] = "59a6001667ab124aebae2a495118e11d30984c3a653e99d86d58971708cf5e4b"
SRC_URI[crc32fast-1.3.2.sha256sum] = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d"
SRC_URI[crossbeam-channel-0.3.9.sha256sum] = "c8ec7fcd21571dc78f96cc96243cab8d8f035247c3efd16c687be154c3fa9efa"
SRC_URI[crossbeam-utils-0.6.6.sha256sum] = "04973fa96e96579258a5091af6003abde64af786b860f18622b82e026cca60e6"
SRC_URI[crypto-mac-0.8.0.sha256sum] = "b584a330336237c1eecd3e94266efb216c56ed91225d634cb2991c5f3fd1aeab"
SRC_URI[crossbeam-utils-0.8.20.sha256sum] = "22ec99545bb0ed0ea7bb9b8e1e9122ea386ff8a48c0922e43f36d45ab09e0e80"
SRC_URI[crypto-common-0.1.6.sha256sum] = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3"
SRC_URI[crypto-mac-0.10.1.sha256sum] = "bff07008ec701e8028e2ceb8f83f0e4274ee62bd2dbdc4fefff2e9a91824081a"
SRC_URI[cursive-0.11.0.sha256sum] = "e50c8961fb6728e44ea668e4133ca6f5bea681cb5e93aaee70a8f452412bbce5"
SRC_URI[dbus-0.6.5.sha256sum] = "48b5f0f36f1eebe901b0e6bee369a77ed3396334bf3f09abd46454a576f71819"
SRC_URI[dbus-0.8.4.sha256sum] = "5cd9e78c210146a1860f897db03412fd5091fd73100778e43ee255cca252cf32"
SRC_URI[derivative-2.2.0.sha256sum] = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b"
SRC_URI[digest-0.10.7.sha256sum] = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292"
SRC_URI[digest-0.9.0.sha256sum] = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066"
SRC_URI[easy-parallel-3.2.0.sha256sum] = "6907e25393cdcc1f4f3f513d9aac1e840eb1cc341a0fccb01171f7d14d10b946"
SRC_URI[dtoa-0.4.8.sha256sum] = "56899898ce76aaf4a0f24d914c97ea6ed976d42fec6ad33fcbb0a1103e07b2b0"
SRC_URI[ed25519-1.5.2.sha256sum] = "1e9c280362032ea4203659fc489832d0204ef09f247a0506f170dafcac08c369"
SRC_URI[either-1.6.1.sha256sum] = "e78d4f1cc4ae33bbfc157ed5d5a5ef3bc29227303d595861deb238fcec4e9457"
SRC_URI[endi-1.1.0.sha256sum] = "a3d8a32ae18130a3c84dd492d4215c3d913c3b07c6b63c2eb3eb7ff1101ab7bf"
SRC_URI[enum-map-derive-0.4.6.sha256sum] = "e5c450cf304c9e18d45db562025a14fb1ca0f5c769b6f609309f81d4c31de455"
SRC_URI[enum-map-internals-0.1.2.sha256sum] = "38b0bacf3ea7aba18ce84032efc3f0fa29f5c814048b742ab3e64d07d83ac3e8"
SRC_URI[enum-map-0.5.0.sha256sum] = "ccd9b2d5e0eb5c2ff851791e2af90ab4531b1168cfc239d1c0bf467e60ba3c89"
SRC_URI[enumflags2-0.6.4.sha256sum] = "83c8d82922337cd23a15f88b70d8e4ef5f11da38dd7cdb55e84dd5de99695da0"
SRC_URI[enumflags2_derive-0.6.4.sha256sum] = "946ee94e3dbf58fdd324f9ce245c7b238d46a66f00e86a020b71996349e46cce"
SRC_URI[enumflags2-0.7.10.sha256sum] = "d232db7f5956f3f14313dc2f87985c58bd2c695ce124c8cdd984e08e15ac133d"
SRC_URI[enumflags2_derive-0.7.10.sha256sum] = "de0d48a183585823424a4ce1aa132d174a6a81bd540895822eb4c8373a8e49e8"
SRC_URI[enumset-0.3.19.sha256sum] = "43bd5effaae6a671efa2032056110916a501bd24128cfb6f44e5a339b5cdb152"
SRC_URI[enumset_derive-0.3.2.sha256sum] = "f73e5c77cf68e532b0e6fdd22c7f8f4d09f6f663692aecca0b3d8ec2e11af723"
SRC_URI[event-listener-2.5.2.sha256sum] = "77f3309417938f28bf8228fcff79a4a37103981e3e186d2ccd19c74b38f4eb71"
SRC_URI[equivalent-1.0.1.sha256sum] = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5"
SRC_URI[errno-0.3.9.sha256sum] = "534c5cf6194dfab3db3242765c03bbe257cf92f22b38f6bc0c58d59108a820ba"
SRC_URI[event-listener-strategy-0.5.2.sha256sum] = "0f214dc438f977e6d4e3500aaa277f5ad94ca83fbbd9b1a15713ce2344ccc5a1"
SRC_URI[event-listener-5.3.1.sha256sum] = "6032be9bd27023a771701cc49f9f053c751055f71efb2e0ae5c15809093675ba"
SRC_URI[failure-0.1.8.sha256sum] = "d32e9bd16cc02eae7db7ef620b392808b89f6a5e16bb3497d159c6b92a0f4f86"
SRC_URI[failure_derive-0.1.8.sha256sum] = "aa4da3c766cd7a0db8242e326e9e4e081edd567072893ed320008189715366a4"
SRC_URI[fastrand-1.7.0.sha256sum] = "c3fcf0cee53519c866c09b5de1f6c56ff9d647101f81c1964fa632e148896cdf"
SRC_URI[fastrand-2.1.1.sha256sum] = "e8c02a5121d4ea3eb16a80748c74f5549a5665e4c21333c6098f283870fbdea6"
SRC_URI[field-offset-0.3.4.sha256sum] = "1e1c54951450cbd39f3dbcf1005ac413b49487dabf18a720ad2383eccfeffb92"
SRC_URI[flate2-1.0.24.sha256sum] = "f82b0f4c27ad9f8bfd1f3208d882da2b09c301bc1c828fd3a00d0216d2fbbff6"
SRC_URI[futures-channel-0.3.21.sha256sum] = "c3083ce4b914124575708913bca19bfe887522d6e2e6d0952943f5eac4a74010"
SRC_URI[futures-core-0.3.21.sha256sum] = "0c09fd04b7e4073ac7156a9539b57a484a8ea920f79c7c675d05d289ab6110d3"
SRC_URI[futures-core-0.3.30.sha256sum] = "dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d"
SRC_URI[futures-executor-0.3.21.sha256sum] = "9420b90cfa29e327d0429f19be13e7ddb68fa1cccb09d65e5706b8c7a749b8a6"
SRC_URI[futures-io-0.3.21.sha256sum] = "fc4045962a5a5e935ee2fdedaa4e08284547402885ab326734432bed5d12966b"
SRC_URI[futures-lite-1.12.0.sha256sum] = "7694489acd39452c77daa48516b894c153f192c3578d5a839b62c58099fcbf48"
SRC_URI[futures-macro-0.3.21.sha256sum] = "33c1e13800337f4d4d7a316bf45a567dbcb6ffe087f16424852d97e97a91f512"
SRC_URI[futures-sink-0.3.21.sha256sum] = "21163e139fa306126e6eedaf49ecdb4588f939600f0b1e770f4205ee4b7fa868"
SRC_URI[futures-task-0.3.21.sha256sum] = "57c66a976bf5909d801bbef33416c41372779507e7a6b3a5e25e4749c58f776a"
SRC_URI[futures-util-0.3.21.sha256sum] = "d8b7abd5d659d9b90c8cba917f6ec750a74e2dc23902ef9cd4cc8c8b22e6036a"
SRC_URI[futures-io-0.3.30.sha256sum] = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1"
SRC_URI[futures-lite-2.3.0.sha256sum] = "52527eb5074e35e9339c6b4e8d12600c7128b68fb25dcb9fa9dec18f7c25f3a5"
SRC_URI[futures-macro-0.3.30.sha256sum] = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac"
SRC_URI[futures-sink-0.3.30.sha256sum] = "9fb8e00e87438d937621c1c6269e53f536c14d3fbd6a042bb24879e57d474fb5"
SRC_URI[futures-task-0.3.30.sha256sum] = "38d84fa142264698cdce1a9f9172cf383a0c82de1bddcf3092901442c4097004"
SRC_URI[futures-util-0.3.30.sha256sum] = "3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48"
SRC_URI[gdk-pixbuf-sys-0.14.0.sha256sum] = "f097c0704201fbc8f69c1762dc58c6947c8bb188b8ed0bc7e65259f1894fe590"
SRC_URI[gdk-pixbuf-0.14.0.sha256sum] = "534192cb8f01daeb8fab2c8d4baa8f9aae5b7a39130525779f5c2608e235b10f"
SRC_URI[gdk-sys-0.14.0.sha256sum] = "0e091b3d3d6696949ac3b3fb3c62090e5bfd7bd6850bef5c3c5ea701de1b1f1e"
SRC_URI[gdk-0.14.3.sha256sum] = "b9d749dcfc00d8de0d7c3a289e04a04293eb5ba3d8a4e64d64911d481fa9933b"
SRC_URI[generic-array-0.14.5.sha256sum] = "fd48d33ec7f05fbfa152300fdad764757cbded343c1aa1cff2fbaf4134851803"
SRC_URI[getrandom-0.1.16.sha256sum] = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce"
SRC_URI[getrandom-0.2.6.sha256sum] = "9be70c98951c83b8d2f8f60d7065fa6d5146873094452a1008da8c2f1e4205ad"
SRC_URI[gimli-0.26.1.sha256sum] = "78cc372d058dcf6d5ecd98510e7fbc9e5aec4d21de70f65fea8fecebcd881bd4"
SRC_URI[gio-sys-0.14.0.sha256sum] = "c0a41df66e57fcc287c4bcf74fc26b884f31901ea9792ec75607289b456f48fa"
@ -338,97 +419,101 @@ SRC_URI[gobject-sys-0.14.0.sha256sum] = "aa92cae29759dae34ab5921d73fff5ad54b3d79
SRC_URI[gtk-sys-0.14.0.sha256sum] = "8c14c8d3da0545785a7c5a120345b3abb534010fb8ae0f2ef3f47c027fba303e"
SRC_URI[gtk-0.14.3.sha256sum] = "2eb51122dd3317e9327ec1e4faa151d1fa0d95664cd8fb8dcfacf4d4d29ac70c"
SRC_URI[gtk3-macros-0.14.0.sha256sum] = "21de1da96dc117443fb03c2e270b2d34b7de98d0a79a19bbb689476173745b79"
SRC_URI[hashbrown-0.14.5.sha256sum] = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1"
SRC_URI[heck-0.3.3.sha256sum] = "6d621efb26863f0e9924c6ac577e8275e5e6b77455db64ffa6c65c904e9e132c"
SRC_URI[hermit-abi-0.1.19.sha256sum] = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33"
SRC_URI[heck-0.5.0.sha256sum] = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea"
SRC_URI[hermit-abi-0.4.0.sha256sum] = "fbf6a919d6cf397374f7dfeeea91d974c7c0a7221d0d0f4f20d859d329e53fcc"
SRC_URI[hex-0.4.3.sha256sum] = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70"
SRC_URI[hmac-0.8.1.sha256sum] = "126888268dcc288495a26bf004b38c5fdbb31682f992c84ceb046a1f0fe38840"
SRC_URI[hmac-0.10.1.sha256sum] = "c1441c6b1e930e2817404b5046f1f989899143a12bf92de603b69f4e0aee1e15"
SRC_URI[indexmap-2.5.0.sha256sum] = "68b900aa2f7301e21c36462b170ee99994de34dff39a4a6a528e80e7376d07e5"
SRC_URI[inotify-sys-0.1.5.sha256sum] = "e05c02b5e89bff3b946cedeca278abc628fe811e604f027c45a8aa3cf793d0eb"
SRC_URI[inotify-0.8.3.sha256sum] = "46dd0a94b393c730779ccfd2a872b67b1eb67be3fc33082e733bdb38b5fde4d4"
SRC_URI[instant-0.1.12.sha256sum] = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c"
SRC_URI[is_terminal_polyfill-1.70.1.sha256sum] = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf"
SRC_URI[itertools-0.10.3.sha256sum] = "a9a9d19fa1e79b6215ff29b9d6880b706147f16e9b1dbb1e4e5947b5b02bc5e3"
SRC_URI[itertools-0.9.0.sha256sum] = "284f18f85651fe11e8a991b2adb42cb078325c996ed026d994719efcfca1d54b"
SRC_URI[itoa-0.3.4.sha256sum] = "8324a32baf01e2ae060e9de58ed0bc2320c9a2833491ee36cd3b4c414de4db8c"
SRC_URI[lazy_static-1.4.0.sha256sum] = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
SRC_URI[libc-0.2.126.sha256sum] = "349d5a591cd28b49e1d1037471617a32ddcda5731b99419008085f72d5a53836"
SRC_URI[libc-0.2.158.sha256sum] = "d8adc4bb1803a324070e64a98ae98f38934d91957a99cfb3a43dcbc01bc56439"
SRC_URI[libdbus-sys-0.2.2.sha256sum] = "c185b5b7ad900923ef3a8ff594083d4d9b5aea80bb4f32b8342363138c0d456b"
SRC_URI[libsodium-sys-0.2.7.sha256sum] = "6b779387cd56adfbc02ea4a668e704f729be8d6a6abd2c27ca5ee537849a92fd"
SRC_URI[linux-raw-sys-0.4.14.sha256sum] = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89"
SRC_URI[log-0.4.17.sha256sum] = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e"
SRC_URI[md-5-0.9.1.sha256sum] = "7b5a279bb9607f9f53c22d496eade00d138d1bdcccd07d74650387cf94942a15"
SRC_URI[memchr-2.5.0.sha256sum] = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d"
SRC_URI[memoffset-0.6.5.sha256sum] = "5aa361d4faea93603064a027415f07bd8e1d5c88c9fbf68bf56a285428fd79ce"
SRC_URI[memoffset-0.9.1.sha256sum] = "488016bfae457b036d996092f6cb448677611ce4449e970ceaf42695203f218a"
SRC_URI[miniz_oxide-0.5.1.sha256sum] = "d2b29bd4bc3f33391105ebee3589c19197c4271e3e5a9ec9bfe8127eeff8f082"
SRC_URI[nix-0.17.0.sha256sum] = "50e4785f2c3b7589a0d0c1dd60285e1188adac4006e8abd6dd578e1567027363"
SRC_URI[nix-0.21.2.sha256sum] = "77d9f3521ea8e0641a153b3cddaf008dcbf26acd4ed739a2517295e0760d12c7"
SRC_URI[nix-0.29.0.sha256sum] = "71e2746dc3a24dd78b3cfcb7be93368c6de9963d30f43a6a73998a9cf4b17b46"
SRC_URI[num-complex-0.2.4.sha256sum] = "b6b19411a9719e753aff12e5187b74d60d3dc449ec3f4dc21e3989c3f554bc95"
SRC_URI[num-integer-0.1.45.sha256sum] = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9"
SRC_URI[num-iter-0.1.43.sha256sum] = "7d03e6c028c5dc5cac6e2dec0efda81fc887605bb3d884578bb6d6bf7514e252"
SRC_URI[num-rational-0.2.4.sha256sum] = "5c000134b5dbf44adc5cb772486d335293351644b801551abe8f75c84cfa4aef"
SRC_URI[num-traits-0.1.43.sha256sum] = "92e5113e9fd4cc14ded8e499429f396a20f98c772a47cc8622a736e1ec843c31"
SRC_URI[num-traits-0.2.15.sha256sum] = "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd"
SRC_URI[num-0.2.1.sha256sum] = "b8536030f9fea7127f841b45bb6243b27255787fb4eb83958aa1ef9d2fdc0c36"
SRC_URI[numtoa-0.1.0.sha256sum] = "b8f8bdf33df195859076e54ab11ee78a1b208382d3a26ec40d142ffc1ecc49ef"
SRC_URI[object-0.28.4.sha256sum] = "e42c982f2d955fac81dd7e1d0e1426a7d702acd9c98d19ab01083a6a0328c424"
SRC_URI[once_cell-1.10.0.sha256sum] = "87f3e037eac156d1775da914196f0f37741a274155e34a0b7e427c35d2a2ecb9"
SRC_URI[opaque-debug-0.2.3.sha256sum] = "2839e79665f131bdb5782e51f2c6c9599c133c6098982a54c794358bf432529c"
SRC_URI[once_cell-1.19.0.sha256sum] = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92"
SRC_URI[opaque-debug-0.3.0.sha256sum] = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5"
SRC_URI[ordered-stream-0.2.0.sha256sum] = "9aa2b01e1d916879f73a53d01d1d6cee68adbb31d6d9177a8cfce093cced1d50"
SRC_URI[owning_ref-0.4.1.sha256sum] = "6ff55baddef9e4ad00f88b6c743a2a8062d4c6ade126c2a528644b8e444d52ce"
SRC_URI[pango-sys-0.10.0.sha256sum] = "24d2650c8b62d116c020abd0cea26a4ed96526afda89b1c4ea567131fdefc890"
SRC_URI[pango-sys-0.14.0.sha256sum] = "2367099ca5e761546ba1d501955079f097caa186bb53ce0f718dca99ac1942fe"
SRC_URI[pango-0.14.8.sha256sum] = "546fd59801e5ca735af82839007edd226fe7d3bb06433ec48072be4439c28581"
SRC_URI[pango-0.9.1.sha256sum] = "9937068580bebd8ced19975938573803273ccbcbd598c58d4906efd4ac87c438"
SRC_URI[parking-2.0.0.sha256sum] = "427c3892f9e783d91cc128285287e70a59e206ca452770ece88a76f7a3eddd72"
SRC_URI[parking-2.2.1.sha256sum] = "f38d5652c16fde515bb1ecef450ab0f6a219d619a7274976324d5e377f7dceba"
SRC_URI[pest-2.1.3.sha256sum] = "10f4872ae94d7b90ae48754df22fd42ad52ce740b8f370b03da4835417403e53"
SRC_URI[pin-project-lite-0.2.9.sha256sum] = "e0a7ae3ac2f1173085d398531c705756c94a4c56843785df85a60c1a0afac116"
SRC_URI[pin-project-lite-0.2.14.sha256sum] = "bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02"
SRC_URI[pin-utils-0.1.0.sha256sum] = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184"
SRC_URI[piper-0.2.4.sha256sum] = "96c8c490f422ef9a4efd2cb5b42b76c8613d7e7dfc1caf667b8a3350a5acc066"
SRC_URI[pkg-config-0.3.25.sha256sum] = "1df8c4ec4b0627e53bdf214615ad287367e482558cf84b109250b37464dc03ae"
SRC_URI[polling-2.2.0.sha256sum] = "685404d509889fade3e86fe3a5803bca2ec09b0c0778d5ada6ec8bf7a8de5259"
SRC_URI[polling-3.7.3.sha256sum] = "cc2790cd301dec6cd3b7a025e4815cf825724a51c98dccfe6a3e55f05ffb6511"
SRC_URI[posix-acl-1.0.0.sha256sum] = "2ea5dae99e4365fa738533b43f4c649c0450ba7fbb81a984a4fba6a42ce91812"
SRC_URI[ppv-lite86-0.2.16.sha256sum] = "eb9f9e6e233e5c4a35559a617bf40a4ec447db2e84c20b55a6f83167b7e57872"
SRC_URI[proc-macro-crate-0.1.5.sha256sum] = "1d6ea3c4595b96363c13943497db34af4460fb474a95c43f4446ad341b8c9785"
SRC_URI[proc-macro-crate-1.1.3.sha256sum] = "e17d47ce914bf4de440332250b0edd23ce48c005f59fab39d3335866b114f11a"
SRC_URI[proc-macro-crate-3.2.0.sha256sum] = "8ecf48c7ca261d60b74ab1a7b20da18bede46776b2e55535cb958eb595c5fa7b"
SRC_URI[proc-macro-error-attr-1.0.4.sha256sum] = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869"
SRC_URI[proc-macro-error-1.0.4.sha256sum] = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c"
SRC_URI[proc-macro2-0.4.30.sha256sum] = "cf3d2011ab5c909338f7887f4fc896d35932e29146c12c8d01da6b22a80ba759"
SRC_URI[proc-macro2-1.0.39.sha256sum] = "c54b25569025b7fc9651de43004ae593a75ad88543b17178aa5e1b9c4f15f56f"
SRC_URI[proc-macro2-1.0.86.sha256sum] = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77"
SRC_URI[procfs-0.12.0.sha256sum] = "0941606b9934e2d98a3677759a971756eb821f75764d0e0d26946d08e74d9104"
SRC_URI[pwhash-0.3.1.sha256sum] = "1068eebd5d8aa4bbd6cbba05ff2647ad32f8ec86a3b73417b95522383c4bd18f"
SRC_URI[pwhash-1.0.0.sha256sum] = "419a3ad8fa9f9d445e69d9b185a24878ae6e6f55c96e4512f4a0e28cd3bc5c56"
SRC_URI[quote-0.6.13.sha256sum] = "6ce23b6b870e8f94f81fb0a363d65d86675884b34a09043c81e5562f11c1f8e1"
SRC_URI[quote-1.0.18.sha256sum] = "a1feb54ed693b93a84e14094943b84b7c4eae204c512b7ccb95ab0c66d278ad1"
SRC_URI[rand-0.7.3.sha256sum] = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03"
SRC_URI[quote-1.0.37.sha256sum] = "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af"
SRC_URI[rand-0.8.5.sha256sum] = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404"
SRC_URI[rand_chacha-0.2.2.sha256sum] = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402"
SRC_URI[rand_chacha-0.3.1.sha256sum] = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88"
SRC_URI[rand_core-0.5.1.sha256sum] = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19"
SRC_URI[rand_core-0.6.3.sha256sum] = "d34f1408f55294453790c48b2f1ebbb1c5b4b7563eb1f418bcfcfdbb06ebb4e7"
SRC_URI[rand_hc-0.2.0.sha256sum] = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c"
SRC_URI[redox_syscall-0.2.13.sha256sum] = "62f25bc4c7e55e0b0b7a1d43fb893f4fa1361d0abe38b9ce4f323c2adfe6ef42"
SRC_URI[redox_termios-0.1.2.sha256sum] = "8440d8acb4fd3d277125b4bd01a6f38aee8d814b3b5fc09b3f2b825d37d3fe8f"
SRC_URI[regex-syntax-0.6.25.sha256sum] = "f497285884f3fcff424ffc933e56d7cbca511def0c9831a7f9b5f6153e3cc89b"
SRC_URI[regex-1.5.5.sha256sum] = "1a11647b6b25ff05a515cb92c365cec08801e83423a235b51e231e1808747286"
SRC_URI[remove_dir_all-0.5.3.sha256sum] = "3acd125665422973a33ac9d3dd2df85edad0f4ae9b00dafb1a05e43a9f5ef8e7"
SRC_URI[rpassword-4.0.5.sha256sum] = "99371657d3c8e4d816fb6221db98fa408242b0b53bac08f8676a41f8554fe99f"
SRC_URI[rpassword-7.3.1.sha256sum] = "80472be3c897911d0137b2d2b9055faf6eeac5b14e324073d83bc17b191d7e3f"
SRC_URI[rtoolbox-0.0.2.sha256sum] = "c247d24e63230cdb56463ae328478bd5eac8b8faa8c69461a77e8e323afac90e"
SRC_URI[rustc-demangle-0.1.21.sha256sum] = "7ef03e0a2b150c7a90d01faf6254c9c48a41e95fb2a8c2ac1c6f0d2b9aefc342"
SRC_URI[rustc_version-0.3.3.sha256sum] = "f0dfe2087c51c460008730de8b57e6a320782fbfb312e1f4d520e6c6fae155ee"
SRC_URI[rustix-0.38.37.sha256sum] = "8acb788b847c24f28525660c4d7758620a7210875711f79e7f663cc152726811"
SRC_URI[same-file-1.0.6.sha256sum] = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502"
SRC_URI[scoped-tls-1.0.0.sha256sum] = "ea6a9290e3c9cf0f18145ef7ffa62d68ee0bf5fcd651017e586dc7fd5da448c2"
SRC_URI[semver-parser-0.10.2.sha256sum] = "00b0bef5b7f9e0df16536d3961cfb6e84331c065b4066afb39768d0e319411f7"
SRC_URI[semver-0.11.0.sha256sum] = "f301af10236f6df4160f7c3f04eec6dbc70ace82d23326abad5edee88801c6b6"
SRC_URI[serde-1.0.137.sha256sum] = "61ea8d54c77f8315140a05f4c7237403bf38b72704d031543aa1d16abbf517d1"
SRC_URI[serde_derive-1.0.137.sha256sum] = "1f26faba0c3959972377d3b2d306ee9f71faee9714294e41bb777f83f88578be"
SRC_URI[serde_repr-0.1.8.sha256sum] = "a2ad84e47328a31223de7fed7a4f5087f2d6ddfe586cf3ca25b7a165bc0a5aed"
SRC_URI[serde-1.0.209.sha256sum] = "99fce0ffe7310761ca6bf9faf5115afbc19688edd00171d81b1bb1b116c63e09"
SRC_URI[serde_derive-1.0.209.sha256sum] = "a5831b979fd7b5439637af1752d535ff49f4860c0f341d1baeb6faf0f4242170"
SRC_URI[serde_json-1.0.1.sha256sum] = "1c62115693d0a9ed8c32d1c760f0fdbe7d4b05cb13c135b9b54137ac0d59fccb"
SRC_URI[serde_repr-0.1.19.sha256sum] = "6c64451ba24fc7a6a2d60fc75dd9c83c90903b19028d4eff35e88fc1e86564e9"
SRC_URI[serde_spanned-0.6.7.sha256sum] = "eb5b1b31579f3811bf615c144393417496f152e12ac8b7663bf664f4a815306d"
SRC_URI[sha-1-0.9.8.sha256sum] = "99cd6713db3cf16b6c84e06321e049a9b9f699826e16096d23bbcc44d15d51a6"
SRC_URI[sha1-0.6.1.sha256sum] = "c1da05c97445caa12d05e848c4a4fcbbea29e748ac28f7e80e9b010392063770"
SRC_URI[sha1_smol-1.0.0.sha256sum] = "ae1a47186c03a32177042e55dbc5fd5aee900b8e0069a8d70fba96a9375cd012"
SRC_URI[sha1-0.10.6.sha256sum] = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba"
SRC_URI[sha2-0.9.9.sha256sum] = "4d58a1e1bf39749807d89cf2d98ac2dfa0ff1cb3faa38fbb64dd88ac8013d800"
SRC_URI[signal-hook-registry-1.4.0.sha256sum] = "e51e73328dc4ac0c7ccbda3a494dfa03df1de2f46018127f60c693f2648455b0"
SRC_URI[signal-hook-0.1.17.sha256sum] = "7e31d442c16f047a671b5a71e2161d6e68814012b7f5379d269ebd915fac2729"
SRC_URI[signature-1.5.0.sha256sum] = "f054c6c1a6e95179d6f23ed974060dcefb2d9388bb7256900badad682c499de4"
SRC_URI[slab-0.4.6.sha256sum] = "eb703cfe953bccee95685111adeedb76fabe4e97549a58d16f03ea7b9367bb32"
SRC_URI[slotmap-1.0.6.sha256sum] = "e1e08e261d0e8f5c43123b7adf3e4ca1690d655377ac93a03b2c9d3e98de1342"
SRC_URI[slab-0.4.9.sha256sum] = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67"
SRC_URI[smallvec-1.8.0.sha256sum] = "f2dd574626839106c320a323308629dcb1acfc96e32a8cba364ddc61ac23ee83"
SRC_URI[socket2-0.4.4.sha256sum] = "66d72b759436ae32898a2af0a14218dbf55efde3feeb170eb623637db85ee1e0"
SRC_URI[sodiumoxide-0.2.7.sha256sum] = "e26be3acb6c2d9a7aac28482586a7856436af4cfe7100031d219de2d2ecb0028"
SRC_URI[stable_deref_trait-1.2.0.sha256sum] = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3"
SRC_URI[static_assertions-1.1.0.sha256sum] = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f"
SRC_URI[strsim-0.8.0.sha256sum] = "8ea5119cdb4c55b55d432abb513a0429384878c15dde60cc77b1c99de1a95a6a"
SRC_URI[strsim-0.11.1.sha256sum] = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f"
SRC_URI[strum-0.18.0.sha256sum] = "57bd81eb48f4c437cadc685403cad539345bf703d78e63707418431cecd4522b"
SRC_URI[strum-0.21.0.sha256sum] = "aaf86bbcfd1fa9670b7a129f64fc0c9fcbbfe4f1bc4210e9e98fe71ffc12cde2"
SRC_URI[strum_macros-0.18.0.sha256sum] = "87c85aa3f8ea653bfd3ddf25f7ee357ee4d204731f6aa9ad04002306f6e2774c"
@ -436,43 +521,71 @@ SRC_URI[strum_macros-0.21.1.sha256sum] = "d06aaeeee809dbc59eb4556183dd927df67db1
SRC_URI[subtle-2.4.1.sha256sum] = "6bdef32e8150c2a081110b42772ffe7d7c9032b606bc226c8260fd97e0976601"
SRC_URI[syn-0.15.44.sha256sum] = "9ca4b3b69a77cbe1ffc9e198781b7acb0c7365a883670e8f1c1bc66fba79a5c5"
SRC_URI[syn-1.0.95.sha256sum] = "fbaf6116ab8924f39d52792136fb74fd60a80194cf1b1c6ffa6453eef1c3f942"
SRC_URI[syn-2.0.77.sha256sum] = "9f35bcdf61fd8e7be6caf75f429fdca8beb3ed76584befb503b1569faee373ed"
SRC_URI[synstructure-0.12.6.sha256sum] = "f36bdaa60a83aca3921b5259d5400cbf5e90fc51931376a9bd4a0eb79aa7210f"
SRC_URI[system-deps-1.3.2.sha256sum] = "0f3ecc17269a19353b3558b313bba738b25d82993e30d62a18406a24aba4649b"
SRC_URI[system-deps-3.2.0.sha256sum] = "480c269f870722b3b08d2f13053ce0c2ab722839f472863c3e2d61ff3a1c2fa6"
SRC_URI[tempfile-3.3.0.sha256sum] = "5cdb1ef4eaeeaddc8fbd371e5017057064af0911902ef36b39801f67cc6d79e4"
SRC_URI[termion-1.5.6.sha256sum] = "077185e2eac69c3f8379a4298e1e07cd36beb962290d4a51199acf0fdc10607e"
SRC_URI[textwrap-0.11.0.sha256sum] = "d326610f408c7a4eb6f51c37c330e496b08506c9457c9d34287ecc38809fb060"
SRC_URI[thiserror-impl-1.0.31.sha256sum] = "0396bc89e626244658bef819e22d0cc459e795a5ebe878e6ec336d1674a8d79a"
SRC_URI[thiserror-1.0.31.sha256sum] = "bd829fe32373d27f76265620b5309d0340cb8550f523c1dda251d6298069069a"
SRC_URI[time-0.1.43.sha256sum] = "ca8a50ef2360fbd1eeb0ecd46795a87a19024eb4b53c5dc916ca1fd95fe62438"
SRC_URI[toml-0.4.10.sha256sum] = "758664fc71a3a69038656bee8b6be6477d2a6c315a6b81f7081f591bffa4111f"
SRC_URI[toml-0.5.9.sha256sum] = "8d82e1a7758622a465f8cee077614c73484dac5b836c02ff6a40d5d1010324d7"
SRC_URI[toml-0.8.19.sha256sum] = "a1ed1f98e3fdc28d6d910e6737ae6ab1a93bf1985935a1193e68f93eeb68d24e"
SRC_URI[toml_datetime-0.6.8.sha256sum] = "0dd7358ecb8fc2f8d014bf86f6f638ce72ba252a2c3a2572f2a795f1d23efb41"
SRC_URI[toml_edit-0.22.20.sha256sum] = "583c44c02ad26b0c3f3066fe629275e50627026c51ac2e595cca4c230ce1ce1d"
SRC_URI[tracing-attributes-0.1.27.sha256sum] = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7"
SRC_URI[tracing-core-0.1.32.sha256sum] = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54"
SRC_URI[tracing-0.1.40.sha256sum] = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef"
SRC_URI[typenum-1.15.0.sha256sum] = "dcf81ac59edc17cc8697ff311e8f5ef2d99fcbd9817b34cec66f90b6c3dfd987"
SRC_URI[ucd-trie-0.1.3.sha256sum] = "56dee185309b50d1f11bfedef0fe6d036842e3fb77413abef29f8f8d1c5d4c1c"
SRC_URI[uds_windows-1.1.0.sha256sum] = "89daebc3e6fd160ac4aa9fc8b3bf71e1f74fbf92367ae71fb83a037e8bf164b9"
SRC_URI[unicode-ident-1.0.0.sha256sum] = "d22af068fba1eb5edcb4aea19d382b2a3deb4c8f9d475c589b6ada9e0fd493ee"
SRC_URI[unicode-segmentation-1.9.0.sha256sum] = "7e8820f5d777f6224dc4be3632222971ac30164d4a258d595640799554ebfd99"
SRC_URI[unicode-width-0.1.9.sha256sum] = "3ed742d4ea2bd1176e236172c8429aaf54486e7ac098db29ffe6529e0ce50973"
SRC_URI[unicode-xid-0.1.0.sha256sum] = "fc72304796d0818e357ead4e000d19c9c174ab23dc11093ac919054d20a6a7fc"
SRC_URI[unicode-xid-0.2.3.sha256sum] = "957e51f3646910546462e67d5f7599b9e4fb8acdd304b087a6494730f9eebf04"
SRC_URI[vec_map-0.8.2.sha256sum] = "f1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191"
SRC_URI[utf8parse-0.2.2.sha256sum] = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821"
SRC_URI[version-compare-0.0.10.sha256sum] = "d63556a25bae6ea31b52e640d7c41d1ab27faba4ccb600013837a3d0b3994ca1"
SRC_URI[version-compare-0.0.11.sha256sum] = "1c18c859eead79d8b95d09e4678566e8d70105c4e7b251f707a03df32442661b"
SRC_URI[version_check-0.9.4.sha256sum] = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f"
SRC_URI[void-1.0.2.sha256sum] = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d"
SRC_URI[waker-fn-1.1.0.sha256sum] = "9d5b2c62b4012a3e1eca5a7e077d13b3bf498c4073e33ccd58626607748ceeca"
SRC_URI[walkdir-2.3.2.sha256sum] = "808cf2735cd4b6866113f648b791c6adc5714537bc222d9347bb203386ffda56"
SRC_URI[wasi-0.10.2+wasi-snapshot-preview1.sha256sum] = "fd6fbd9a79829dd1ad0cc20627bf1ed606756a7f77edff7b66b7064f9cb327c6"
SRC_URI[wasi-0.9.0+wasi-snapshot-preview1.sha256sum] = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519"
SRC_URI[wepoll-ffi-0.1.2.sha256sum] = "d743fdedc5c64377b5fc2bc036b01c7fd642205a0d96356034ae3404d49eb7fb"
SRC_URI[winapi-i686-pc-windows-gnu-0.4.0.sha256sum] = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
SRC_URI[winapi-util-0.1.5.sha256sum] = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178"
SRC_URI[winapi-x86_64-pc-windows-gnu-0.4.0.sha256sum] = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
SRC_URI[winapi-0.3.9.sha256sum] = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419"
SRC_URI[windows-sys-0.48.0.sha256sum] = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9"
SRC_URI[windows-sys-0.52.0.sha256sum] = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d"
SRC_URI[windows-sys-0.59.0.sha256sum] = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b"
SRC_URI[windows-targets-0.48.5.sha256sum] = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c"
SRC_URI[windows-targets-0.52.6.sha256sum] = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973"
SRC_URI[windows_aarch64_gnullvm-0.48.5.sha256sum] = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8"
SRC_URI[windows_aarch64_gnullvm-0.52.6.sha256sum] = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3"
SRC_URI[windows_aarch64_msvc-0.48.5.sha256sum] = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc"
SRC_URI[windows_aarch64_msvc-0.52.6.sha256sum] = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469"
SRC_URI[windows_i686_gnu-0.48.5.sha256sum] = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e"
SRC_URI[windows_i686_gnu-0.52.6.sha256sum] = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b"
SRC_URI[windows_i686_gnullvm-0.52.6.sha256sum] = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66"
SRC_URI[windows_i686_msvc-0.48.5.sha256sum] = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406"
SRC_URI[windows_i686_msvc-0.52.6.sha256sum] = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66"
SRC_URI[windows_x86_64_gnu-0.48.5.sha256sum] = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e"
SRC_URI[windows_x86_64_gnu-0.52.6.sha256sum] = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78"
SRC_URI[windows_x86_64_gnullvm-0.48.5.sha256sum] = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc"
SRC_URI[windows_x86_64_gnullvm-0.52.6.sha256sum] = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d"
SRC_URI[windows_x86_64_msvc-0.48.5.sha256sum] = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538"
SRC_URI[windows_x86_64_msvc-0.52.6.sha256sum] = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec"
SRC_URI[winnow-0.6.18.sha256sum] = "68a9bda4691f099d435ad181000724da8e5899daa10713c2d432552b9ccd3a6f"
SRC_URI[xdg-home-1.3.0.sha256sum] = "ec1cdab258fb55c0da61328dc52c8764709b249011b2cad0454c72f0bf10a1f6"
SRC_URI[xi-unicode-0.1.0.sha256sum] = "12ea8eda4b1eb72f02d148402e23832d56a33f55d8c1b2d5bcdde91d79d47cb1"
SRC_URI[zbus-2.0.0-beta.5.sha256sum] = "d45f4720326304c291f96f66b6c1131f16964bba6bffe216ac85de2e48321a10"
SRC_URI[zbus_macros-2.0.0-beta.5.sha256sum] = "cf0fa91321143695013cb3fa62a6395dbe14eafd97ab58c2ba73f61d5035b1d9"
SRC_URI[zvariant-2.10.0.sha256sum] = "a68c7b55f2074489b7e8e07d2d0a6ee6b4f233867a653c664d8020ba53692525"
SRC_URI[zvariant_derive-2.10.0.sha256sum] = "e4ca5e22593eb4212382d60d26350065bf2a02c34b85bc850474a74b589a3de9"
SRC_URI[zbus-4.4.0.sha256sum] = "bb97012beadd29e654708a0fdb4c84bc046f537aecfde2c3ee0a9e4b4d48c725"
SRC_URI[zbus_macros-4.4.0.sha256sum] = "267db9407081e90bbfa46d841d3cbc60f59c0351838c4bc65199ecd79ab1983e"
SRC_URI[zbus_names-3.0.0.sha256sum] = "4b9b1fef7d021261cc16cba64c351d291b715febe0fa10dc3a443ac5a5022e6c"
SRC_URI[zvariant-4.2.0.sha256sum] = "2084290ab9a1c471c38fc524945837734fbf124487e105daec2bb57fd48c81fe"
SRC_URI[zvariant_derive-4.2.0.sha256sum] = "73e2ba546bda683a90652bac4a279bc146adad1386f25379cf73200d2002c449"
SRC_URI[zvariant_utils-2.1.0.sha256sum] = "c51bcff7cc3dbb5055396bcf774748c3dab426b4b8659046963523cee4808340"
export SODIUM_USE_PKG_CONFIG = "1"
@ -494,6 +607,7 @@ FILES:${PN} = "\
${libexecdir}/citadel-realmsd \
${libexecdir}/citadel-installer-ui \
${libexecdir}/realm-config-ui \
${libexecdir}/launch-gnome-software \
${bindir}/citadel-image \
${bindir}/citadel-realmfs \
${bindir}/citadel-update \
@ -541,6 +655,9 @@ do_install() {
# citadel-realms as /usr/bin/realms
install -m 755 -T ${TARGET_BIN}/citadel-realms ${D}${bindir}/realms
# /usr/libexec/launch-gnome-software
install -m 4755 ${TARGET_BIN}/launch-gnome-software ${D}${libexecdir}
ln ${D}${libexecdir}/citadel-tool ${D}${libexecdir}/citadel-boot
ln ${D}${libexecdir}/citadel-tool ${D}${libexecdir}/citadel-install
ln ${D}${libexecdir}/citadel-tool ${D}${libexecdir}/citadel-install-backend

View File

@ -0,0 +1,51 @@
From a9ad6dd95f0aa2d413a5328edf3e3e4668e39415 Mon Sep 17 00:00:00 2001
From: isa <isa@subgraph.com>
Date: Thu, 22 Aug 2024 15:23:03 +0000
Subject: [PATCH] Modify glib to use localtime in /storage/citadel-state
Upstream-Status: Inappropriate [citadel specific]
---
glib/gtimezone.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/glib/gtimezone.c b/glib/gtimezone.c
index 4a4a2d0..ed1444a 100644
--- a/glib/gtimezone.c
+++ b/glib/gtimezone.c
@@ -538,14 +538,14 @@ zone_identifier_unix (void)
gboolean not_a_symlink_to_zoneinfo = FALSE;
struct stat file_status;
- /* Resolve the actual timezone pointed to by /etc/localtime. */
- resolved_identifier = g_file_read_link ("/etc/localtime", &read_link_err);
+ /* Resolve the actual timezone pointed to by /storage/citadel-state/localtime. */
+ resolved_identifier = g_file_read_link ("/storage/citadel-state/localtime", &read_link_err);
if (resolved_identifier != NULL)
{
if (!g_path_is_absolute (resolved_identifier))
{
- gchar *absolute_resolved_identifier = g_build_filename ("/etc", resolved_identifier, NULL);
+ gchar *absolute_resolved_identifier = g_build_filename ("/storage/citadel-state", resolved_identifier, NULL);
g_free (resolved_identifier);
resolved_identifier = g_steal_pointer (&absolute_resolved_identifier);
}
@@ -604,7 +604,7 @@ zone_identifier_unix (void)
else
{
/* Resolve relative path */
- canonical_path = g_canonicalize_filename (resolved_identifier, "/etc");
+ canonical_path = g_canonicalize_filename (resolved_identifier, "/storage/citadel-state");
g_free (resolved_identifier);
resolved_identifier = g_steal_pointer (&canonical_path);
}
file = g_mapped_file_new (filename, FALSE, NULL);
@@ -671,7 +671,7 @@ zone_info_unix (const gchar *identifier,
if (resolved_identifier == NULL)
goto out;
- filename = g_strdup ("/etc/localtime");
+ filename = g_strdup ("/storage/citadel-state/localtime");
}
file = g_mapped_file_new (filename, FALSE, NULL);

View File

@ -0,0 +1,4 @@
FILESEXTRAPATHS:prepend := "${THISDIR}/${PN}:"
SRC_URI += "file://0001-Modify-glib-to-accommodate-citadel-timezone-symlink-.patch"

View File

@ -0,0 +1,23 @@
From f96b772948fa78cbb6b2e58f6fe41e53501cc629 Mon Sep 17 00:00:00 2001
From: isa <isa@subgraph.com>
Date: Fri, 23 Aug 2024 16:00:25 +0000
Subject: [PATCH] Modify gnome-desktop to use localtime in /storage/citadel-state
Upstream-Status: Inappropriate [citadel specific]
---
libgnome-desktop/gnome-wall-clock.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/libgnome-desktop/gnome-wall-clock.c b/libgnome-desktop/gnome-wall-clock.c
index 4646220..1bb8269 100644
--- a/libgnome-desktop/gnome-wall-clock.c
+++ b/libgnome-desktop/gnome-wall-clock.c
@@ -78,7 +78,7 @@ gnome_wall_clock_init (GnomeWallClock *self)
self->priv->clock_string = NULL;
- tz = g_file_new_for_path ("/etc/localtime");
+ tz = g_file_new_for_path ("/storage/citadel-state/localtime");
self->priv->tz_monitor = g_file_monitor_file (tz, 0, NULL, NULL);
g_object_unref (tz);

View File

@ -0,0 +1,4 @@
FILESEXTRAPATHS:prepend := "${THISDIR}/${PN}:"
SRC_URI += "file://0001-Modify-gnome-desktop-to-use-localtime-in-storage-cit.patch"

View File

@ -912,7 +912,7 @@ CONFIG_BLK_DEV_BSG_COMMON=y
CONFIG_BLK_DEV_BSGLIB=y
CONFIG_BLK_DEV_INTEGRITY=y
CONFIG_BLK_DEV_INTEGRITY_T10=y
# CONFIG_BLK_DEV_WRITE_MOUNTED is not set
CONFIG_BLK_DEV_WRITE_MOUNTED=m
# CONFIG_BLK_DEV_ZONED is not set
# CONFIG_BLK_DEV_THROTTLING is not set
# CONFIG_BLK_WBT is not set
@ -3177,7 +3177,7 @@ CONFIG_PINCTRL_INTEL=y
# CONFIG_PINCTRL_INTEL_PLATFORM is not set
# CONFIG_PINCTRL_ALDERLAKE is not set
CONFIG_PINCTRL_BROXTON=m
# CONFIG_PINCTRL_CANNONLAKE is not set
CONFIG_PINCTRL_CANNONLAKE=m
# CONFIG_PINCTRL_CEDARFORK is not set
# CONFIG_PINCTRL_DENVERTON is not set
# CONFIG_PINCTRL_ELKHARTLAKE is not set

View File

@ -0,0 +1,16 @@
SUMMARY = "A markup language for GTK user interface files."
LICENSE = "LGPL-3.0-only"
LIC_FILES_CHKSUM = "file://COPYING;md5=3000208d539ec061b899bce1d9ce9404"
SRC_URI = "git://gitlab.gnome.org/jwestman/blueprint-compiler.git;protocol=https;branch=main"
PV = "0.14.0"
SRCREV = "8e10fcf8692108b9d4ab78f41086c5d7773ef864"
S = "${WORKDIR}/git"
DEPENDS = "python3-pygobject"
inherit meson
BBCLASSEXTEND= "native"

View File

@ -0,0 +1,24 @@
DESCRIPTION = "Unprivileged sandboxing tool"
HOMEPAGE = "https://github.com/containers/bubblewrap"
LICENSE = "LGPL-2.0-or-later"
LIC_FILES_CHKSUM = "file://COPYING;md5=5f30f0716dfdd0d91eb439ebec522ec2"
DEPENDS = "libcap"
SRC_URI = "https://github.com/containers/${BPN}/releases/download/v${PV}/${BP}.tar.xz"
SRC_URI[sha256sum] = "957ad1149db9033db88e988b12bcebe349a445e1efc8a9b59ad2939a113d333a"
inherit autotools bash-completion github-releases manpages pkgconfig
GITHUB_BASE_URI = "https://github.com/containers/${BPN}/releases/"
PACKAGECONFIG ?= "${@bb.utils.filter('DISTRO_FEATURES', 'selinux', d)}"
PACKAGECONFIG[manpages] = "--enable-man,--disable-man,libxslt-native docbook-xsl-stylesheets-native xmlto-native"
PACKAGECONFIG[selinux] = "--enable-selinux,--disable-selinux,libselinux"
PACKAGECONFIG[setuid] = "--with-priv-mode=setuid,--with-priv-mode=none"
PACKAGES += "${PN}-zsh-completion"
FILES:${PN}-zsh-completion = "${datadir}/zsh/site-functions"
BBCLASSEXTEND = "native"

View File

@ -0,0 +1 @@
fuse

View File

@ -0,0 +1,3 @@
#!/bin/sh
pytest -o log_cli=true -o log_cli_level=INFO | sed -e 's/\[...%\]//g'| sed -e 's/PASSED/PASS/g'| sed -e 's/FAILED/FAIL/g'|sed -e 's/SKIPPED/SKIP/g'| awk '{if ($NF=="PASS" || $NF=="FAIL" || $NF=="SKIP" || $NF=="XFAIL" || $NF=="XPASS"){printf "%s: %s\n", $NF, $0}else{print}}'| awk '{if ($NF=="PASS" || $NF=="FAIL" || $NF=="SKIP" || $NF=="XFAIL" || $NF=="XPASS") {$NF="";print $0}else{print}}'

View File

@ -0,0 +1,98 @@
SUMMARY = "Implementation of a fully functional filesystem in a userspace program"
DESCRIPTION = "FUSE (Filesystem in Userspace) is a simple interface for userspace \
programs to export a virtual filesystem to the Linux kernel. FUSE \
also aims to provide a secure method for non privileged users to \
create and mount their own filesystem implementations. \
"
HOMEPAGE = "https://github.com/libfuse/libfuse"
SECTION = "libs"
LICENSE = "GPL-2.0-only & LGPL-2.0-only"
LIC_FILES_CHKSUM = " \
file://GPL2.txt;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
file://LGPL2.txt;md5=4fbd65380cdd255951079008b364516c \
file://LICENSE;md5=a55c12a2d7d742ecb41ca9ae0a6ddc66 \
"
SRC_URI = "https://github.com/libfuse/libfuse/releases/download/fuse-${PV}/fuse-${PV}.tar.gz"
SRC_URI[sha256sum] = "f797055d9296b275e981f5f62d4e32e089614fc253d1ef2985851025b8a0ce87"
S = "${WORKDIR}/fuse-${PV}"
UPSTREAM_CHECK_URI = "https://github.com/libfuse/libfuse/releases"
UPSTREAM_CHECK_REGEX = "fuse\-(?P<pver>3(\.\d+)+).tar.xz"
CVE_PRODUCT = "fuse_project:fuse"
inherit meson pkgconfig ptest
SRC_URI += " \
file://run-ptest \
file://fuse3.conf \
"
RDEPENDS:${PN}-ptest += " \
python3-pytest \
python3-looseversion \
bash \
"
RRECOMMENDS:${PN}-ptest += " kernel-module-cuse"
do_install_ptest() {
install -d ${D}${PTEST_PATH}/test
install -d ${D}${PTEST_PATH}/example
install -d ${D}${PTEST_PATH}/util
cp -rf ${S}/test/* ${D}${PTEST_PATH}/test/
example_excutables=`find ${B}/example -type f -executable`
util_excutables=`find ${B}/util -type f -executable`
test_excutables=`find ${B}/test -type f -executable`
for e in $example_excutables
do
cp -rf $e ${D}${PTEST_PATH}/example/
done
for e in $util_excutables
do
cp -rf $e ${D}${PTEST_PATH}/util/
done
for e in $test_excutables
do
cp -rf $e ${D}${PTEST_PATH}/test
done
}
DEPENDS = "udev"
PACKAGES =+ "fuse3-utils"
RPROVIDES:${PN}-dbg += "fuse3-utils-dbg"
RRECOMMENDS:${PN}:class-target = "kernel-module-fuse fuse3-utils"
FILES:${PN} += "${libdir}/libfuse3.so.*"
FILES:${PN}-dev += "${libdir}/libfuse3*.la"
# Forbid auto-renaming to libfuse3-utils
FILES:fuse3-utils = "${bindir} ${base_sbindir}"
DEBIAN_NOAUTONAME:fuse3-utils = "1"
DEBIAN_NOAUTONAME:${PN}-dbg = "1"
SYSTEMD_SERVICE:${PN} = ""
do_install:append() {
rm -rf ${D}${base_prefix}/dev
# systemd class remove the sysv_initddir only if systemd_system_unitdir
# contains anything, but it's not needed if sysvinit is not in DISTRO_FEATURES
if ${@bb.utils.contains('DISTRO_FEATURES', 'sysvinit', 'false', 'true', d)}; then
rm -rf ${D}${sysconfdir}/init.d/
fi
# Install systemd related configuration file
if ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'true', 'false', d)}; then
install -d ${D}${sysconfdir}/modules-load.d
install -m 0644 ${WORKDIR}/fuse3.conf ${D}${sysconfdir}/modules-load.d
fi
}

View File

@ -0,0 +1,54 @@
# Recipe created by recipetool
# This is the basis of a recipe and may need further editing in order to be fully functional.
# (Feel free to remove these comments when editing.)
SUMMARY = "A set of tools for Minijail"
HOMEPAGE = "https://google.github.io/minijail/"
# NOTE: License in setup.py/PKGINFO is: Apache License 2.0
# WARNING: the following LICENSE and LIC_FILES_CHKSUM values are best guesses - it is
# your responsibility to verify that the values are complete and correct.
#
# The following license files were not able to be identified and are
# represented as "Unknown" below, you will need to check them yourself:
# LICENSE
# NOTE: Original package / source metadata indicates license is: Apache-2.0
#
# NOTE: multiple licenses have been detected; they have been separated with &
# in the LICENSE value for now since it is a reasonable assumption that all
# of the licenses apply. If instead there is a choice between the multiple
# licenses then you should change the value to separate the licenses with |
# instead of &. If there is any doubt, check the accompanying documentation
# to determine which situation is applicable.
LICENSE = "Apache-2.0 & Proprietary"
LIC_FILES_CHKSUM = "file://LICENSE;md5=2089bcf649ce83dde9493f497237833a \
file://MODULE_LICENSE_BSD;md5=d41d8cd98f00b204e9800998ecf8427e"
SRC_URI = "git://github.com/google/minijail.git;protocol=https;branch=main"
# Modify these as desired
PV = "0.12+git"
SRCREV = "3ce72e092f1ea94edc74545cd29df297e503d4fa"
S = "${WORKDIR}/git"
DEPENDS = "libcap"
do_configure () {
:
}
do_compile () {
oe_runmake LIBDIR=${libdir}
}
do_install () {
install -d ${D}${libdir}
install -d ${D}${libexecdir}
install -m 0755 ${S}/libminijail.so ${D}${libdir}
install -m 0755 ${S}/libminijailpreload.so ${D}${libdir}
install -m 0755 ${S}/minijail0 ${D}${libexecdir}
}
FILES:${PN}-dev = ""
FILES:${PN} = "/"

View File

@ -0,0 +1,73 @@
From cfb9327280c3e173b4cfb0ec3ec3d62e729f1e21 Mon Sep 17 00:00:00 2001
From: Bruce Leidl <bruce@subgraph.com>
Date: Fri, 27 Sep 2024 07:34:13 -0400
Subject: [PATCH] Remove System Bus and close application on quit
To facilitage sandboxing remove dependency on system bus. The
system bus is not needed for any plugin that we are using. Also
close the application rather than just hiding the window when
the user exits the application. Otherwise the sandbox will run
forever.
---
lib/gs-plugin-loader.c | 5 +----
lib/gs-plugin.c | 1 -
src/gs-shell.c | 4 +++-
3 files changed, 4 insertions(+), 6 deletions(-)
diff --git a/lib/gs-plugin-loader.c b/lib/gs-plugin-loader.c
index 6661b73..ac57bdc 100644
--- a/lib/gs-plugin-loader.c
+++ b/lib/gs-plugin-loader.c
@@ -1964,8 +1964,6 @@ gs_plugin_loader_setup_async (GsPluginLoader *plugin_loader,
* time. */
if (plugin_loader->session_bus_connection == NULL)
g_bus_get (G_BUS_TYPE_SESSION, cancellable, get_session_bus_cb, g_object_ref (task));
- if (plugin_loader->system_bus_connection == NULL)
- g_bus_get (G_BUS_TYPE_SYSTEM, cancellable, get_system_bus_cb, g_object_ref (task));
finish_setup_get_bus (task);
}
@@ -2032,8 +2030,7 @@ finish_setup_get_bus (GTask *task)
g_autoptr(GError) local_error = NULL;
/* Wait until weve got all the buses we need. */
- if (plugin_loader->session_bus_connection == NULL ||
- plugin_loader->system_bus_connection == NULL)
+ if (plugin_loader->session_bus_connection == NULL)
return;
/* use the default, but this requires a 'make install' */
diff --git a/lib/gs-plugin.c b/lib/gs-plugin.c
index 97bc47e..514d97a 100644
--- a/lib/gs-plugin.c
+++ b/lib/gs-plugin.c
@@ -1606,7 +1606,6 @@ gs_plugin_constructed (GObject *object)
/* Check all required properties have been set. */
g_assert (priv->session_bus_connection != NULL);
- g_assert (priv->system_bus_connection != NULL);
}
static void
diff --git a/src/gs-shell.c b/src/gs-shell.c
index 5c069e2..13bdcc6 100644
--- a/src/gs-shell.c
+++ b/src/gs-shell.c
@@ -1081,6 +1081,8 @@ main_window_closed_cb (GtkWidget *dialog, gpointer user_data)
/* Free unused memory with GNU extension of malloc.h */
malloc_trim (0);
#endif
+ GApplication *app = g_application_get_default ();
+ g_action_group_activate_action(G_ACTION_GROUP(app), "quit", NULL);
return TRUE;
}
@@ -2505,7 +2507,7 @@ gs_shell_class_init (GsShellClass *klass)
gtk_widget_class_bind_template_callback (widget_class, gs_shell_details_page_metainfo_loaded_cb);
gtk_widget_class_bind_template_callback (widget_class, details_page_app_clicked_cb);
- gtk_widget_class_add_binding_action (widget_class, GDK_KEY_q, GDK_CONTROL_MASK, "window.close", NULL);
+ gtk_widget_class_add_binding_action (widget_class, GDK_KEY_q, GDK_CONTROL_MASK, "app.quit", NULL);
}
static void

View File

@ -0,0 +1,51 @@
SUMMARY = "GNOME Software allows users to easily find, discover and install apps."
LICENSE = "GPL-2.0-only"
LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
GTKDOC_MESON_OPTION ?= "gtk_doc"
inherit gnomebase gsettings itstool gnome-help gtk-icon-cache gtk-doc mime mime-xdg gettext upstream-version-is-even features_check
REQUIRED_DISTRO_FEATURES = "x11 polkit systemd pam"
DEPENDS += " \
appstream \
gdk-pixbuf \
glib-2.0 \
glib-2.0-native \
gsettings-desktop-schemas \
gtk4 \
iso-codes \
json-glib \
libadwaita \
libgudev \
libsoup-3.0 \
libxmlb-native \
polkit \
"
RDEPENDS:${PN} = "iso-codes"
EXTRA_OEMESON += "-Dtests=false -Dsoup2=false"
SRC_URI += " file://0001-Remove-System-Bus-and-close-application-on-quit.patch"
SRC_URI[archive.sha256sum] = "b6eeb789100de94b50ebe2e77f16b26be4c2db15489905f198d060c425e19076"
PACKAGECONFIG ?= "flatpak"
PACKAGECONFIG[flatpak] = "-Dflatpak=true,-Dflatpak=false,flatpak ostree"
PACKAGECONFIG[snap] = "-Dsnap=true,-Dsnap=false,snapd-glib"
PACKAGECONFIG[gtk_doc] = "-Dgtk_doc=true,-Dgtk_doc=false,libxslt-native docbook-xsl-stylesheets"
PACKAGECONFIG[man] = "-Dman=true,-Dman=false,libxslt-native docbook-xsl-stylesheets"
PACKAGECONFIG[packagekit] = "-Dpackagekit=true,-Dpackagekit=false,gnome-packagekit,gnome-packagekit"
PACKAGECONFIG[fwupd] = "-Dfwupd=true,-Dfwupd=false,fwupd,fwupd"
PACKAGECONFIG[malcontent] = "-Dmalcontent=true,-Dmalcontent=false,malcontent"
FILES:${PN} += "${datadir}/dbus-1 \
${datadir}/metainfo \
${datadir}/swcatalog \
"
FILES:${PN}:remove = "${datadir}/applications ${sysconfdir}"
PACKAGES += "${PN}-extra"
FILES:${PN}-extra += "${datadir} ${sysconfdir}"
FILES:${PN}-dev += "${libdir}/gnome-software/libgnomesoftware.so"

View File

@ -0,0 +1,14 @@
DESCRIPTION = "This repository contains a number of commandline utilities for use inside Flatpak sandboxes."
HOMEPAGE = "http://flatpak.org"
LICENSE = "LGPL-2.1-only"
LIC_FILES_CHKSUM = "file://COPYING;md5=4fbd65380cdd255951079008b364516c"
SRC_URI = "git://github.com/flatpak/flatpak-xdg-utils.git;protocol=https;branch=main"
SRCREV = "5ba39872f81bf8d98d58c5f8acb86604645be468"
S = "${WORKDIR}/git"
inherit meson pkgconfig
DEPENDS = "glib-2.0"

View File

@ -0,0 +1,28 @@
From 3a1ab02d821cd4b0af44c0dad87e290ebaabef83 Mon Sep 17 00:00:00 2001
From: Markus Volk <f_l_k@t-online.de>
Date: Wed, 14 Dec 2022 06:50:40 +0100
Subject: [PATCH] flatpak.pc: add pc_sysrootdir
Signed-off-by: Markus Volk <f_l_k@t-online.de>
---
Upstream-Status: Inappropriate [oe-specific]
meson.build | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/meson.build b/meson.build
index 4a0b865e..5f69b1d9 100644
--- a/meson.build
+++ b/meson.build
@@ -509,7 +509,7 @@ pkgconfig_variables += 'exec_prefix=${prefix}'
pkgconfig_variables += 'datadir=' + ('${prefix}' / get_option('datadir'))
pkgconfig_variables += 'datarootdir=' + ('${prefix}' / get_option('datadir'))
-pkgconfig_variables += 'interfaces_dir=${datadir}/dbus-1/interfaces/'
+pkgconfig_variables += 'interfaces_dir=${pc_sysrootdir}${datadir}/dbus-1/interfaces/'
pkgconfig_variables += 'httpbackend=' + get_option('http_backend')
pkgconfig.generate(
--
2.34.1

View File

@ -0,0 +1,81 @@
DESCRIPTION = "Desktop containment framework."
HOMEPAGE = "http://flatpak.org"
LICENSE = "LGPL-2.1-only"
LIC_FILES_CHKSUM = "file://COPYING;md5=4fbd65380cdd255951079008b364516c"
SRC_URI = " \
gitsm://github.com/flatpak/flatpak;protocol=https;branch=main \
file://0001-flatpak-pc-add-pc_sysrootdir.patch \
"
SRCREV = "925c80f913d69e7ca424428823e1431c4ffb0deb"
S = "${WORKDIR}/git"
inherit meson pkgconfig gettext systemd gtk-doc gobject-introspection python3native useradd mime features_check
REQUIRED_DISTRO_FEATURES = "polkit"
DEPENDS = " \
appstream \
bison-native \
dconf \
fuse3 \
gdk-pixbuf \
glib-2.0 \
gpgme \
json-glib \
libarchive \
libcap \
libxml2 \
ostree \
polkit \
python3-pyparsing-native \
zstd \
"
RDEPENDS:${PN} = " \
ca-certificates \
dconf \
flatpak-xdg-utils \
fuse3-utils \
"
GIR_MESON_OPTION = "gir"
GIR_MESON_ENABLE_FLAG = 'enabled'
GIR_MESON_DISABLE_FLAG = 'disabled'
GTKDOC_MESON_OPTION = 'gtkdoc'
GTKDOC_MESON_ENABLE_FLAG = 'enabled'
GTKDOC_MESON_DISABLE_FLAG = 'disabled'
PACKAGECONFIG[curl] = "-Dhttp_backend=curl,,curl"
PACKAGECONFIG[docbook_docs] = "-Ddocbook_docs=enabled,-Ddocbook_docs=disabled,xmlto-native"
PACKAGECONFIG[man] = "-Dman=enabled,-Dman=disabled,libxslt-native"
PACKAGECONFIG[soup] = "-Dhttp_backend=soup,,libsoup-2.4"
PACKAGECONFIG[tests] = "-Dtests=true,-Dtests=false,xauth socat-native"
PACKAGECONFIG[xauth] = "-Dxauth=enabled,-Dxauth=disabled,xauth"
PACKAGECONFIG[seccomp] = "-Dseccomp=enabled,-Dseccomp=disabled,libseccomp"
PACKAGECONFIG[malcontent] = "-Dmalcontent=enabled,-Dmalcontent=disabled,malcontent"
PACKAGECONFIG[selinux] = "-Dselinux_module=enabled,-Dselinux_module=disabled,libselinux"
PACKAGECONFIG[wayland-security-context] = "-Dwayland_security_context=enabled,-Dwayland_security_context=disabled,wayland wayland-native wayland-protocols"
PACKAGECONFIG ?= " \
curl \
${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'xauth', '', d)} \
${@bb.utils.contains('DISTRO_FEATURES', 'seccomp', 'seccomp', '', d)} \
${@bb.utils.contains('DISTRO_FEATURES', 'wayland', 'wayland-security-context', '', d)} \
"
EXTRA_OEMESON = "-Dsystem_fusermount=${bindir}/fusermount3"
FILES:${PN} += "${libdir} ${datadir}"
USERADD_PACKAGES = "${PN}"
USERADD_PARAM:${PN} = "--system --no-create-home --user-group --home-dir ${sysconfdir}/polkit-1 polkitd"
USERADD_PARAM:${PN} += "; --system --no-create-home --user-group flatpak"
do_install:append() {
chmod 0700 ${D}/${datadir}/polkit-1/rules.d
chown polkitd ${D}/${datadir}/polkit-1/rules.d
chgrp root ${D}/${datadir}/polkit-1/rules.d
}

View File

@ -0,0 +1,3 @@
#! /bin/sh
gnome-desktop-testing-runner libostree

View File

@ -0,0 +1,215 @@
SUMMARY = "Versioned Operating System Repository."
DESCRIPTION = "libostree is both a shared library and suite of command line \
tools that combines a \"git-like\" model for committing and downloading \
bootable filesystem trees, along with a layer for deploying them and managing \
the bootloader configuration."
HOMEPAGE = "https://ostree.readthedocs.io"
LICENSE = "LGPL-2.1-only"
LIC_FILES_CHKSUM = "file://COPYING;md5=5f30f0716dfdd0d91eb439ebec522ec2"
DEPENDS = " \
glib-2.0-native \
glib-2.0 \
e2fsprogs \
libcap \
zlib \
xz \
bison-native \
"
GITHUB_BASE_URI = "https://github.com/ostreedev/ostree/releases"
SRC_URI = "${GITHUB_BASE_URI}/download/v${PV}/libostree-${PV}.tar.xz \
file://run-ptest \
"
SRC_URI[sha256sum] = "8b61c856697aa412f2f1724322ada40bdd7b1bf9e7783e2c594faa7a594f868f"
S = "${WORKDIR}/libostree-${PV}"
inherit autotools bash-completion gobject-introspection github-releases gtk-doc manpages pkgconfig ptest-gnome systemd
UNKNOWN_CONFIGURE_OPT_IGNORE = "--disable-introspection --enable-introspection"
# Workaround compile failure:
# |../git/src/libotutil/zbase32.c:37:1: error: function returns an aggregate [-Werror=aggregate-return]
# so remove -Og and use -O2 as workaround
DEBUG_OPTIMIZATION:remove = "-Og"
DEBUG_OPTIMIZATION:append = " -O2"
BUILD_OPTIMIZATION:remove = "-Og"
BUILD_OPTIMIZATION:append = " -O2"
# Package configuration - match ostree defaults, but without rofiles-fuse
# otherwise we introduce a dependendency on meta-filesystems and swap
# soup for curl to avoid bringing in deprecated libsoup2 (though
# to run ptest requires that you have soup2 or soup3).
PACKAGECONFIG ??= " \
${@bb.utils.filter('DISTRO_FEATURES', 'selinux smack', d)} \
${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'systemd libmount', '', d)} \
${@bb.utils.contains('DISTRO_FEATURES', 'ptest', 'soup3', '', d)} \
glib \
gpgme \
curl \
"
# We include curl because ostree can't (currently) be built without
# soup or curl - https://github.com/ostreedev/ostree/issues/1897
PACKAGECONFIG:class-native ??= " \
${@bb.utils.filter('DISTRO_FEATURES', 'selinux smack', d)} \
builtin-grub2-mkconfig \
gpgme \
curl \
"
PACKAGECONFIG:class-nativesdk ??= " \
${@bb.utils.filter('DISTRO_FEATURES', 'selinux smack', d)} \
builtin-grub2-mkconfig \
gpgme \
curl \
"
PACKAGECONFIG[avahi] = "--with-avahi, --without-avahi, avahi"
PACKAGECONFIG[builtin-grub2-mkconfig] = "--with-builtin-grub2-mkconfig, --without-builtin-grub2-mkconfig"
PACKAGECONFIG[composefs] = "--with-composefs, --without-composefs, composefs"
PACKAGECONFIG[curl] = "--with-curl, --without-curl, curl"
PACKAGECONFIG[dracut] = "--with-dracut, --without-dracut"
PACKAGECONFIG[ed25519-libsodium] = "--with-ed25519-libsodium, --without-ed25519-libsodium, libsodium"
PACKAGECONFIG[ed25519-openssl] = "--with-openssl, --without-openssl, openssl"
PACKAGECONFIG[gjs] = "ac_cv_path_GJS=${bindir}/gjs"
PACKAGECONFIG[glib] = "--with-crypto=glib, , , , , gnutls openssl"
PACKAGECONFIG[gnutls] = "--with-crypto=gnutls, , gnutls, , , glib openssl"
PACKAGECONFIG[gpgme] = "--with-gpgme, --without-gpgme, gpgme"
PACKAGECONFIG[libarchive] = "--with-libarchive, --without-libarchive, libarchive"
PACKAGECONFIG[libmount] = "--with-libmount, --without-libmount, util-linux"
PACKAGECONFIG[manpages] = "--enable-man, --disable-man, libxslt-native docbook-xsl-stylesheets-native"
PACKAGECONFIG[mkinitcpio] = "--with-mkinitcpio, --without-mkinitcpio"
PACKAGECONFIG[no-http2] = "--disable-http2, --enable-http2"
PACKAGECONFIG[openssl] = "--with-crypto=openssl, , openssl, , , glib gnutls"
PACKAGECONFIG[rofiles-fuse] = "--enable-rofiles-fuse, --disable-rofiles-fuse, fuse3"
PACKAGECONFIG[selinux] = "--with-selinux, --without-selinux, libselinux, bubblewrap"
PACKAGECONFIG[smack] = "--with-smack, --without-smack, smack"
PACKAGECONFIG[soup2] = "--with-soup, --without-soup, libsoup-2.4, , , soup3"
PACKAGECONFIG[soup3] = "--with-soup3, --without-soup3, libsoup, , , soup2"
PACKAGECONFIG[static] = ""
PACKAGECONFIG[systemd] = "--with-libsystemd --with-systemdsystemunitdir=${systemd_system_unitdir}, --without-libsystemd, systemd"
EXTRA_OECONF = " \
${@bb.utils.contains('PACKAGECONFIG', 'static', '--with-static-compiler=\'${CC} ${CFLAGS} ${CPPFLAGS} ${LDFLAGS}\'', '', d)} \
"
# Makefile-libostree.am overrides this to avoid a build problem with clang,
# but that fix breaks cross compilation and we don't need it
EXTRA_OEMAKE = " \
INTROSPECTION_SCANNER_ENV= \
"
EXTRA_OECONF:class-native = " \
--enable-wrpseudo-compat \
--disable-otmpfile \
"
EXTRA_OECONF:class-nativesdk = " \
--enable-wrpseudo-compat \
--disable-otmpfile \
"
# Path to ${prefix}/lib/ostree/ostree-grub-generator is hardcoded on the
# do_configure stage so we do depend on it
SYSROOT_DIR = "${STAGING_DIR_TARGET}"
SYSROOT_DIR:class-native = "${STAGING_DIR_NATIVE}"
do_configure[vardeps] += "SYSROOT_DIR"
do_configure:prepend() {
# this reflects what autogen.sh does, but the OE wrappers for autoreconf
# allow it to work without the other gyrations which exist there
cp ${S}/libglnx/Makefile-libglnx.am ${S}/libglnx/Makefile-libglnx.am.inc
cp ${S}/bsdiff/Makefile-bsdiff.am ${S}/bsdiff/Makefile-bsdiff.am.inc
}
do_install:append:class-native() {
create_wrapper ${D}${bindir}/ostree OSTREE_GRUB2_EXEC="${STAGING_LIBDIR_NATIVE}/ostree/ostree-grub-generator"
}
do_install:append:class-nativesdk() {
create_wrapper ${D}${bindir}/ostree OSTREE_GRUB2_EXEC="\$OECORE_NATIVE_SYSROOT/usr/lib/ostree/ostree-grub-generator"
}
PACKAGE_BEFORE_PN = " \
${PN}-dracut \
${PN}-grub \
${PN}-mkinitcpio \
${PN}-switchroot \
"
FILES:${PN} += " \
${nonarch_libdir}/${BPN} \
${nonarch_libdir}/tmpfiles.d \
${systemd_system_unitdir} \
${systemd_unitdir}/system-generators \
"
FILES:${PN}-dracut = " \
${sysconfdir}/dracut.conf.d \
${libdir}/dracut \
"
FILES:${PN}-grub = " \
${sysconfdir}/grub.d \
${libexecdir}/libostree/grub2-15_ostree \
"
FILES:${PN}-mkinitcpio = " \
${sysconfdir}/ostree-mkinitcpio.conf \
${libdir}/initcpio \
"
FILES:${PN}-switchroot = " \
${nonarch_libdir}/${BPN}/ostree-prepare-root \
${systemd_system_unitdir}/ostree-prepare-root.service \
"
RDEPENDS:${PN}-dracut = "bash"
RDEPENDS:${PN}-mkinitcpio = "bash"
RDEPENDS:${PN}:class-target = " \
${@bb.utils.contains('PACKAGECONFIG', 'gpgme', 'gnupg', '', d)} \
${PN}-switchroot \
"
#
# Note that to get ptest to pass you also need:
#
# xattr in DISTRO_FEATURES (default)
# static ostree-prepare-root
# overlayfs in your kernel
# busybox built statically
# C.UTF-8 locale available (default)
# Sufficient disk space/RAM (e.g. core-image-sato-sdk)
#
# Something like this in your local.conf:
#
# PACKAGECONFIG:append:pn-ostree = " static soup3"
# KERNEL_EXTRA_FEATURES:append = " features/overlayfs/overlayfs.scc"
# TARGET_CFLAGS:append:pn-busybox = " -static"
#
RDEPENDS:${PN}-ptest += " \
attr \
bash \
coreutils \
cpio \
diffutils \
findutils \
grep \
locale-base-en-us \
python3-core \
python3-multiprocessing \
strace \
tar \
util-linux \
xz \
python3-pyyaml \
${@bb.utils.contains('PACKAGECONFIG', 'gjs', 'gjs', '', d)} \
"
RDEPENDS:${PN}-ptest:remove:riscv32 = "strace"
RDEPENDS:${PN}-ptest:append:libc-glibc = " glibc-utils glibc-localedata-en-us"
RRECOMMENDS:${PN}:append:class-target = " kernel-module-overlay"
SYSTEMD_SERVICE:${PN} = "ostree-remount.service ostree-finalize-staged.path"
SYSTEMD_SERVICE:${PN}-switchroot = "ostree-prepare-root.service"
BBCLASSEXTEND = "native nativesdk"

View File

@ -1,16 +1,11 @@
#!/bin/bash
#!/usr/bin/env bash
EXTRA_KERNEL_CMDLINE=""
SCRIPT=$(realpath ${BASH_SOURCE})
BUILD_ROOT=$(realpath $(dirname ${SCRIPT})/../build)
SYSROOT=${BUILD_ROOT}/tmp-glibc/work/x86_64-linux/qemu-helper-native/1.0-r1/recipe-sysroot-native
QEMU=${SYSROOT}/usr/bin/qemu-system-x86_64
if [[ ! -f ${QEMU} ]]; then
>&2 printf "Qemu binary not found at: ${QEMU}\n"
exit 1
fi
SYSROOT=${BUILD_ROOT}/tmp-glibc/work/x86_64-linux/qemu-helper-native/1.0/recipe-sysroot-native
QEMU=qemu-system-x86_64
ENABLE_KVM="--enable-kvm -cpu host"
@ -20,9 +15,13 @@ if [[ ! -c "/dev/kvm" ]]; then
fi
EFI_BIOS="-bios /usr/share/qemu/OVMF.fd"
if [[ ! -f "/usr/share/qemu/OVMF.fd" ]]; then
printf "Disabling EFI boot because OVMF.fd not found in /usr/share/qemu\n"
EFI_BIOS=""
if [[ -f "/usr/share/qemu/OVMF.fd" ]]; then
printf "Using EFI boot because OVMF.fd found in /usr/share/qemu/\n"
elif [[ -f "/usr/share/edk2-ovmf/x64/OVMF.fd" ]]; then # fedora and arch
printf "Using EFI boot because OVMF.fd found in /usr/share/edk2-ovmf/x64/\n"
EFI_BIOS="-bios /usr/share/edk2-ovmf/x64/OVMF.fd"
else
printf "Disabling EFI boot because OVMF.fd not found\n"
fi
usage() {
@ -43,7 +42,7 @@ exit 0
}
BOOT_TARGET=""
MEMORY_ARG="-m 4G"
MEMORY_ARG="-m 8G"
DEBUG_MODE=0
while [[ $# -gt 0 ]]; do
@ -70,6 +69,14 @@ while [[ $# -gt 0 ]]; do
BOOT_TARGET="installer"
shift
;;
boot-to-install)
BOOT_TARGET="boot-to-install"
shift
;;
boot-installed)
BOOT_TARGET="boot-installed"
shift
;;
--help)
usage
;;
@ -84,23 +91,50 @@ COMMON_INSTALLER_ARGS="\
${ENABLE_KVM} \
${MEMORY_ARG} \
${EFI_BIOS} \
-vga virtio \
-device virtio-vga-gl \
-display sdl,gl=on \
-vga none \
-usb -device usb-tablet,id=input0 \
-drive format=raw,file=${BUILD_ROOT}/images/citadel-installer.img \
-net none \
-nic user,model=virtio-net-pci \
-smp 2"
boot_installer() {
if [[ ${DEBUG_MODE} -eq 1 ]]; then
${QEMU} ${COMMON_INSTALLER_ARGS} \
${QEMU} ${COMMON_INSTALLER_ARGS} \
-serial stdio \
-kernel ${BUILD_ROOT}/images/bzImage \
-drive format=raw,file=${BUILD_ROOT}/images/citadel-installer.img \
-append "console=ttyS0 earlyprintk=ttyS0 root=/dev/mapper/rootfs citadel.verbose citadel.install fstab=no luks=no systemd.journald.forward_to_console=1 ${EXTRA_KERNEL_CMDLINE}"
else
${QEMU} ${COMMON_INSTALLER_ARGS}
${QEMU} ${COMMON_INSTALLER_ARGS} -drive format=raw,file=${BUILD_ROOT}/images/citadel-installer.img
fi
}
# qemu-img create -f qcow2 qemu_disk/citadel_disk.qcow2 -o size=50G,preallocation=metadata
# mount -t 9p -o trans=virtio,version=9p2000.L shared /mnt/my9p
boot_to_install() {
if [ ! -f qemu_disk/citadel_disk.qcow2 ]; then
mkdir qemu_disk
qemu-img create -f qcow2 qemu_disk/citadel_disk.qcow2 -o size=50G,preallocation=metadata
fi
CITADEL_QEMU_ARGS+=" ${COMMON_INSTALLER_ARGS} -drive format=raw,file=${BUILD_ROOT}/images/citadel-installer.img -drive format=qcow2,file=${BUILD_ROOT}/../qemu_disk/citadel_disk.qcow2"
echo "${QEMU} ${CITADEL_QEMU_ARGS}"
${QEMU} ${CITADEL_QEMU_ARGS}
}
boot_installed() {
if [ ! -f qemu_disk/citadel_disk.qcow2 ]; then
printf "The qemu disk is not found on the drive. Please run boot-to-install\n"
fi
CITADEL_QEMU_ARGS+=" ${COMMON_INSTALLER_ARGS} -drive format=qcow2,file=${BUILD_ROOT}/../qemu_disk/citadel_disk.qcow2"
echo "${QEMU} ${CITADEL_QEMU_ARGS}"
${QEMU} ${CITADEL_QEMU_ARGS}
}
boot_kernel() {
EXTRA_OPTIONS=""
KERNEL_IMAGE="bzImage"
@ -124,6 +158,10 @@ if [[ ${BOOT_TARGET} = "kernel" ]]; then
boot_kernel
elif [[ ${BOOT_TARGET} = "installer" ]]; then
boot_installer
elif [[ ${BOOT_TARGET} = "boot-to-install" ]]; then
boot_to_install
elif [[ ${BOOT_TARGET} = "boot-installed" ]]; then
boot_installed
else
usage
fi