Architecture specific change in rpms/libseccomp.git
by githook-noreply@fedoraproject.org
The package rpms/libseccomp.git has added or updated architecture specific content in its
spec file (ExclusiveArch/ExcludeArch or %ifarch/%ifnarch) in commit(s):
https://src.fedoraproject.org/cgit/rpms/libseccomp.git/commit/?id=529c957....
Change:
-%ifarch i686 ppc64le s390x
Thanks.
Full change:
============
commit 5e8deb83a0c85b2d8a2400cd467e3949f8ef3de4
Author: Debarshi Ray <debarshir(a)gnome.org>
Date: Wed Nov 3 12:06:12 2021 +0100
New upstream version (#1900097)
diff --git a/.gitignore b/.gitignore
index 54770ea..6c46772 100644
--- a/.gitignore
+++ b/.gitignore
@@ -16,3 +16,4 @@
/libseccomp-2.4.2.tar.gz
/libseccomp-2.5.0.tar.gz
/libseccomp-2.5.1.tar.gz
+/libseccomp-2.5.2.tar.gz
diff --git a/libseccomp.spec b/libseccomp.spec
index 04e7081..7c13843 100644
--- a/libseccomp.spec
+++ b/libseccomp.spec
@@ -1,5 +1,5 @@
Name: libseccomp
-Version: 2.5.1
+Version: 2.5.2
Release: 1%{?dist}
Summary: Enhanced seccomp library
License: LGPLv2
@@ -83,6 +83,9 @@ rm -f %{buildroot}/%{_libdir}/libseccomp.la
%{_libdir}/libseccomp.a
%changelog
+* Wed Nov 03 2021 Debarshi Ray <rishi(a)fedoraproject.org> - 2.5.2-1
+- New upstream version (#1900097)
+
* Wed Nov 03 2021 Debarshi Ray <rishi(a)fedoraproject.org> - 2.5.1-1
- New upstream version (#1900097)
diff --git a/sources b/sources
index 27d4059..936b0f5 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-SHA512 (libseccomp-2.5.1.tar.gz) = 2be80a6323f9282dbeae8791724e5778b32e2382b2a3d1b0f77366371ec4072ea28128204f675cce101c091c0420d12c497e1a9ccbb7dc5bcbf61bfd777160af
+SHA512 (libseccomp-2.5.2.tar.gz) = b2a95152cb274d6b35753596fd825406dae20c4a48b2f4076f835f977ecf324de38a3fe02e789dc20b49ecf6b4eb67f03e7733e92d40f5e20f25874307f1c2ac
commit 43b0412403c480995b6da3ee45cf2744830f6251
Author: Debarshi Ray <debarshir(a)gnome.org>
Date: Wed Nov 3 12:06:52 2021 +0100
Drop upstreamed patches
Fallout from 529c95767dc1b6ca1e73c4bf8c5c8b2734d2e0c8
diff --git a/0101-all-only-request-the-userspace-notification-fd-once.patch b/0101-all-only-request-the-userspace-notification-fd-once.patch
deleted file mode 100644
index 59f412e..0000000
--- a/0101-all-only-request-the-userspace-notification-fd-once.patch
+++ /dev/null
@@ -1,631 +0,0 @@
-From bbf4ae95742662e641e0a456951b912024433435 Mon Sep 17 00:00:00 2001
-From: Paul Moore <paul(a)paul-moore.com>
-Date: Sun, 26 Jul 2020 11:01:49 -0400
-Subject: [PATCH 101/102] all: only request the userspace notification fd once
-
-It turns out that requesting the seccomp userspace notifcation fd
-more than once is a bad thing which causes the kernel to complain
-(rightfully so for a variety of reasons). Unfortunately as we were
-always requesting the notification fd whenever possible this results
-in problems at filter load time.
-
-Our solution is to move the notification fd out of the filter context
-and into the global task context, using a newly created task_state
-structure. This allows us to store, and retrieve the notification
-outside the scope of an individual filter context. It also provides
-some implementation improvements by giving us a convenient place to
-stash all of the API level related support variables. We also extend
-the seccomp_reset() API call to reset this internal global state when
-passed a NULL filter context.
-
-There is one potential case which we don't currently handle well:
-threads. At the moment libseccomp is thread ignorant, and that works
-well as the only global state up to this point was the currently
-supported API level information which was common to all threads in a
-process. Unfortunately, it appears that the notification fd need not
-be common to all threads in a process, yet this patch treats it as if
-it is common. I suspect this is a very unusual use case so I decided
-to keep this patch simple and ignore this case, but in the future if
-we need to support this properly we should be able to do so without
-API changes by keeping an internal list of notification fds indexed
-by gettid(2).
-
-This fixes the GitHub issue below:
-* https://github.com/seccomp/libseccomp/issues/273
-
-Reported-by: Tobias Stoeckmann <tobias(a)stoeckmann.org>
-Acked-by: Tom Hromatka <tom.hromatka(a)oracle.com>
-Signed-off-by: Paul Moore <paul(a)paul-moore.com>
----
- doc/man/man3/seccomp_init.3 | 10 +-
- doc/man/man3/seccomp_notify_alloc.3 | 3 +-
- src/api.c | 19 ++-
- src/db.c | 1 -
- src/db.h | 3 +-
- src/system.c | 204 ++++++++++++++++++----------
- src/system.h | 3 +
- tests/11-basic-basic_errors.c | 9 +-
- tests/51-live-user_notification.c | 21 +++
- tests/51-live-user_notification.py | 4 +
- 10 files changed, 187 insertions(+), 90 deletions(-)
-
-diff --git a/doc/man/man3/seccomp_init.3 b/doc/man/man3/seccomp_init.3
-index 3ab68fe..87520cd 100644
---- a/doc/man/man3/seccomp_init.3
-+++ b/doc/man/man3/seccomp_init.3
-@@ -36,7 +36,15 @@ The
- function releases the existing filter context state before reinitializing it
- and can only be called after a call to
- .BR seccomp_init ()
--has succeeded.
-+has succeeded. If
-+.BR seccomp_reset ()
-+is called with a NULL filter, it resets the library's global task state;
-+normally this is not needed, but it may be required to continue using the
-+library after a
-+.BR fork ()
-+or
-+.BR clone ()
-+call to ensure the API level and user notification state is properly reset.
- .P
- When the caller is finished configuring the seccomp filter and has loaded it
- into the kernel, the caller should call
-diff --git a/doc/man/man3/seccomp_notify_alloc.3 b/doc/man/man3/seccomp_notify_alloc.3
-index 50c8970..cb1c048 100644
---- a/doc/man/man3/seccomp_notify_alloc.3
-+++ b/doc/man/man3/seccomp_notify_alloc.3
-@@ -59,7 +59,8 @@ returns the notification fd of a filter after it has been loaded.
- .\" //////////////////////////////////////////////////////////////////////////
- The
- .BR seccomp_notify_fd ()
--returns the notification fd of the loaded filter.
-+returns the notification fd of the loaded filter, -1 if a notification fd has
-+not yet been created, and -EINVAL if the filter context is invalid.
- .P
- The
- .BR seccomp_notify_id_valid ()
-diff --git a/src/api.c b/src/api.c
-index 00975ad..5cec088 100644
---- a/src/api.c
-+++ b/src/api.c
-@@ -301,10 +301,18 @@ API int seccomp_reset(scmp_filter_ctx ctx, uint32_t def_action)
- {
- struct db_filter_col *col = (struct db_filter_col *)ctx;
-
-- /* use a NULL filter collection here since we are resetting it */
-- if (ctx == NULL || db_col_action_valid(NULL, def_action) < 0)
-+ /* a NULL filter context indicates we are resetting the global state */
-+ if (ctx == NULL) {
-+ /* reset the global state and redetermine the api level */
-+ sys_reset_state();
-+ _seccomp_api_update();
-+ return _rc_filter(0);
-+ }
-+ /* ensure the default action is valid */
-+ if (db_col_action_valid(NULL, def_action) < 0)
- return _rc_filter(-EINVAL);
-
-+ /* reset the filter */
- return _rc_filter(db_col_reset(col, def_action));
- }
-
-@@ -675,16 +683,17 @@ API int seccomp_notify_id_valid(int fd, uint64_t id)
- /* NOTE - function header comment in include/seccomp.h */
- API int seccomp_notify_fd(const scmp_filter_ctx ctx)
- {
-- struct db_filter_col *col;
-+ /* NOTE: for historical reasons, and possibly future use, we require a
-+ * valid filter context even though we don't actual use it here; the
-+ * api update is also not strictly necessary, but keep it for now */
-
- /* force a runtime api level detection */
- _seccomp_api_update();
-
- if (_ctx_valid(ctx))
- return _rc_filter(-EINVAL);
-- col = (struct db_filter_col *)ctx;
-
-- return _rc_filter(col->notify_fd);
-+ return _rc_filter(sys_notify_fd());
- }
-
- /* NOTE - function header comment in include/seccomp.h */
-diff --git a/src/db.c b/src/db.c
-index 4a87ea3..836171a 100644
---- a/src/db.c
-+++ b/src/db.c
-@@ -1057,7 +1057,6 @@ int db_col_reset(struct db_filter_col *col, uint32_t def_action)
- if (col->filters)
- free(col->filters);
- col->filters = NULL;
-- col->notify_fd = -1;
-
- /* set the endianess to undefined */
- col->endian = 0;
-diff --git a/src/db.h b/src/db.h
-index b96b104..765c607 100644
---- a/src/db.h
-+++ b/src/db.h
-@@ -160,8 +160,7 @@ struct db_filter_col {
- /* transaction snapshots */
- struct db_filter_snap *snapshots;
-
-- /* notification fd that was returned from seccomp() */
-- int notify_fd;
-+ /* userspace notification */
- bool notify_used;
- };
-
-diff --git a/src/system.c b/src/system.c
-index 6cdfc16..3b43b2a 100644
---- a/src/system.c
-+++ b/src/system.c
-@@ -40,16 +40,61 @@
- * our next release we may have to enable the allowlist */
- #define SYSCALL_ALLOWLIST_ENABLE 0
-
--static int _nr_seccomp = -1;
--static int _support_seccomp_syscall = -1;
--static int _support_seccomp_flag_tsync = -1;
--static int _support_seccomp_flag_log = -1;
--static int _support_seccomp_action_log = -1;
--static int _support_seccomp_kill_process = -1;
--static int _support_seccomp_flag_spec_allow = -1;
--static int _support_seccomp_flag_new_listener = -1;
--static int _support_seccomp_user_notif = -1;
--static int _support_seccomp_flag_tsync_esrch = -1;
-+/* task global state */
-+struct task_state {
-+ /* seccomp(2) syscall */
-+ int nr_seccomp;
-+
-+ /* userspace notification fd */
-+ int notify_fd;
-+
-+ /* runtime support flags */
-+ int sup_syscall;
-+ int sup_flag_tsync;
-+ int sup_flag_log;
-+ int sup_action_log;
-+ int sup_kill_process;
-+ int sup_flag_spec_allow;
-+ int sup_flag_new_listener;
-+ int sup_user_notif;
-+ int sup_flag_tsync_esrch;
-+};
-+static struct task_state state = {
-+ .nr_seccomp = -1,
-+
-+ .notify_fd = -1,
-+
-+ .sup_syscall = -1,
-+ .sup_flag_tsync = -1,
-+ .sup_flag_log = -1,
-+ .sup_action_log = -1,
-+ .sup_kill_process = -1,
-+ .sup_flag_spec_allow = -1,
-+ .sup_flag_new_listener = -1,
-+ .sup_user_notif = -1,
-+ .sup_flag_tsync_esrch = -1,
-+};
-+
-+/**
-+ * Reset the task state
-+ *
-+ * This function fully resets the library's global "system task state".
-+ *
-+ */
-+void sys_reset_state(void)
-+{
-+ state.nr_seccomp = -1;
-+ state.notify_fd = -1;
-+ state.sup_syscall = -1;
-+ state.sup_flag_tsync = -1;
-+ state.sup_flag_log = -1;
-+ state.sup_action_log = -1;
-+ state.sup_kill_process = -1;
-+ state.sup_flag_spec_allow = -1;
-+ state.sup_flag_new_listener = -1;
-+ state.sup_user_notif = -1;
-+ state.sup_flag_tsync_esrch = -1;
-+}
-
- /**
- * Check to see if the seccomp() syscall is supported
-@@ -68,8 +113,8 @@ int sys_chk_seccomp_syscall(void)
- /* NOTE: it is reasonably safe to assume that we should be able to call
- * seccomp() when the caller first starts, but we can't rely on
- * it later so we need to cache our findings for use later */
-- if (_support_seccomp_syscall >= 0)
-- return _support_seccomp_syscall;
-+ if (state.sup_syscall >= 0)
-+ return state.sup_syscall;
-
- #if SYSCALL_ALLOWLIST_ENABLE
- /* architecture allowlist */
-@@ -100,11 +145,11 @@ int sys_chk_seccomp_syscall(void)
- goto supported;
-
- unsupported:
-- _support_seccomp_syscall = 0;
-+ state.sup_syscall = 0;
- return 0;
- supported:
-- _nr_seccomp = nr_seccomp;
-- _support_seccomp_syscall = 1;
-+ state.nr_seccomp = nr_seccomp;
-+ state.sup_syscall = 1;
- return 1;
- }
-
-@@ -118,7 +163,7 @@ supported:
- */
- void sys_set_seccomp_syscall(bool enable)
- {
-- _support_seccomp_syscall = (enable ? 1 : 0);
-+ state.sup_syscall = (enable ? 1 : 0);
- }
-
- /**
-@@ -132,16 +177,16 @@ void sys_set_seccomp_syscall(bool enable)
- int sys_chk_seccomp_action(uint32_t action)
- {
- if (action == SCMP_ACT_KILL_PROCESS) {
-- if (_support_seccomp_kill_process < 0) {
-+ if (state.sup_kill_process < 0) {
- if (sys_chk_seccomp_syscall() == 1 &&
-- syscall(_nr_seccomp, SECCOMP_GET_ACTION_AVAIL, 0,
-- &action) == 0)
-- _support_seccomp_kill_process = 1;
-+ syscall(state.nr_seccomp,
-+ SECCOMP_GET_ACTION_AVAIL, 0, &action) == 0)
-+ state.sup_kill_process = 1;
- else
-- _support_seccomp_kill_process = 0;
-+ state.sup_kill_process = 0;
- }
-
-- return _support_seccomp_kill_process;
-+ return state.sup_kill_process;
- } else if (action == SCMP_ACT_KILL_THREAD) {
- return 1;
- } else if (action == SCMP_ACT_TRAP) {
-@@ -152,30 +197,30 @@ int sys_chk_seccomp_action(uint32_t action)
- } else if (action == SCMP_ACT_TRACE(action & 0x0000ffff)) {
- return 1;
- } else if (action == SCMP_ACT_LOG) {
-- if (_support_seccomp_action_log < 0) {
-+ if (state.sup_action_log < 0) {
- if (sys_chk_seccomp_syscall() == 1 &&
-- syscall(_nr_seccomp, SECCOMP_GET_ACTION_AVAIL, 0,
-- &action) == 0)
-- _support_seccomp_action_log = 1;
-+ syscall(state.nr_seccomp,
-+ SECCOMP_GET_ACTION_AVAIL, 0, &action) == 0)
-+ state.sup_action_log = 1;
- else
-- _support_seccomp_action_log = 0;
-+ state.sup_action_log = 0;
- }
-
-- return _support_seccomp_action_log;
-+ return state.sup_action_log;
- } else if (action == SCMP_ACT_ALLOW) {
- return 1;
- } else if (action == SCMP_ACT_NOTIFY) {
-- if (_support_seccomp_user_notif < 0) {
-+ if (state.sup_user_notif < 0) {
- struct seccomp_notif_sizes sizes;
- if (sys_chk_seccomp_syscall() == 1 &&
-- syscall(_nr_seccomp, SECCOMP_GET_NOTIF_SIZES, 0,
-- &sizes) == 0)
-- _support_seccomp_user_notif = 1;
-+ syscall(state.nr_seccomp,
-+ SECCOMP_GET_NOTIF_SIZES, 0, &sizes) == 0)
-+ state.sup_user_notif = 1;
- else
-- _support_seccomp_user_notif = 0;
-+ state.sup_user_notif = 0;
- }
-
-- return _support_seccomp_user_notif;
-+ return state.sup_user_notif;
- }
-
- return 0;
-@@ -193,13 +238,13 @@ void sys_set_seccomp_action(uint32_t action, bool enable)
- {
- switch (action) {
- case SCMP_ACT_LOG:
-- _support_seccomp_action_log = (enable ? 1 : 0);
-+ state.sup_action_log = (enable ? 1 : 0);
- break;
- case SCMP_ACT_KILL_PROCESS:
-- _support_seccomp_kill_process = (enable ? 1 : 0);
-+ state.sup_kill_process = (enable ? 1 : 0);
- break;
- case SCMP_ACT_NOTIFY:
-- _support_seccomp_user_notif = (enable ? 1 : 0);
-+ state.sup_user_notif = (enable ? 1 : 0);
- break;
- }
- }
-@@ -212,13 +257,14 @@ void sys_set_seccomp_action(uint32_t action, bool enable)
- * Return one if the flag is supported, zero otherwise.
- *
- */
--static int _sys_chk_seccomp_flag_kernel(int flag)
-+static int _sys_chk_flag_kernel(int flag)
- {
- /* this is an invalid seccomp(2) call because the last argument
- * is NULL, but depending on the errno value of EFAULT we can
- * guess if the filter flag is supported or not */
- if (sys_chk_seccomp_syscall() == 1 &&
-- syscall(_nr_seccomp, SECCOMP_SET_MODE_FILTER, flag, NULL) == -1 &&
-+ syscall(state.nr_seccomp,
-+ SECCOMP_SET_MODE_FILTER, flag, NULL) == -1 &&
- errno == EFAULT)
- return 1;
-
-@@ -238,29 +284,25 @@ int sys_chk_seccomp_flag(int flag)
- {
- switch (flag) {
- case SECCOMP_FILTER_FLAG_TSYNC:
-- if (_support_seccomp_flag_tsync < 0)
-- _support_seccomp_flag_tsync = _sys_chk_seccomp_flag_kernel(flag);
--
-- return _support_seccomp_flag_tsync;
-+ if (state.sup_flag_tsync < 0)
-+ state.sup_flag_tsync = _sys_chk_flag_kernel(flag);
-+ return state.sup_flag_tsync;
- case SECCOMP_FILTER_FLAG_LOG:
-- if (_support_seccomp_flag_log < 0)
-- _support_seccomp_flag_log = _sys_chk_seccomp_flag_kernel(flag);
--
-- return _support_seccomp_flag_log;
-+ if (state.sup_flag_log < 0)
-+ state.sup_flag_log = _sys_chk_flag_kernel(flag);
-+ return state.sup_flag_log;
- case SECCOMP_FILTER_FLAG_SPEC_ALLOW:
-- if (_support_seccomp_flag_spec_allow < 0)
-- _support_seccomp_flag_spec_allow = _sys_chk_seccomp_flag_kernel(flag);
--
-- return _support_seccomp_flag_spec_allow;
-+ if (state.sup_flag_spec_allow < 0)
-+ state.sup_flag_spec_allow = _sys_chk_flag_kernel(flag);
-+ return state.sup_flag_spec_allow;
- case SECCOMP_FILTER_FLAG_NEW_LISTENER:
-- if (_support_seccomp_flag_new_listener < 0)
-- _support_seccomp_flag_new_listener = _sys_chk_seccomp_flag_kernel(flag);
--
-- return _support_seccomp_flag_new_listener;
-+ if (state.sup_flag_new_listener < 0)
-+ state.sup_flag_new_listener = _sys_chk_flag_kernel(flag);
-+ return state.sup_flag_new_listener;
- case SECCOMP_FILTER_FLAG_TSYNC_ESRCH:
-- if (_support_seccomp_flag_tsync_esrch < 0)
-- _support_seccomp_flag_tsync_esrch = _sys_chk_seccomp_flag_kernel(flag);
-- return _support_seccomp_flag_tsync_esrch;
-+ if (state.sup_flag_tsync_esrch < 0)
-+ state.sup_flag_tsync_esrch = _sys_chk_flag_kernel(flag);
-+ return state.sup_flag_tsync_esrch;
- }
-
- return -EOPNOTSUPP;
-@@ -279,19 +321,19 @@ void sys_set_seccomp_flag(int flag, bool enable)
- {
- switch (flag) {
- case SECCOMP_FILTER_FLAG_TSYNC:
-- _support_seccomp_flag_tsync = (enable ? 1 : 0);
-+ state.sup_flag_tsync = (enable ? 1 : 0);
- break;
- case SECCOMP_FILTER_FLAG_LOG:
-- _support_seccomp_flag_log = (enable ? 1 : 0);
-+ state.sup_flag_log = (enable ? 1 : 0);
- break;
- case SECCOMP_FILTER_FLAG_SPEC_ALLOW:
-- _support_seccomp_flag_spec_allow = (enable ? 1 : 0);
-+ state.sup_flag_spec_allow = (enable ? 1 : 0);
- break;
- case SECCOMP_FILTER_FLAG_NEW_LISTENER:
-- _support_seccomp_flag_new_listener = (enable ? 1 : 0);
-+ state.sup_flag_new_listener = (enable ? 1 : 0);
- break;
- case SECCOMP_FILTER_FLAG_TSYNC_ESRCH:
-- _support_seccomp_flag_tsync_esrch = (enable ? 1 : 0);
-+ state.sup_flag_tsync_esrch = (enable ? 1 : 0);
- break;
- }
- }
-@@ -324,7 +366,7 @@ int sys_filter_load(struct db_filter_col *col, bool rawrc)
- goto filter_load_out;
- }
-
-- tsync_notify = (_support_seccomp_flag_tsync_esrch > 0);
-+ tsync_notify = state.sup_flag_tsync_esrch > 0 && state.notify_fd == -1;
-
- /* load the filter into the kernel */
- if (sys_chk_seccomp_syscall() == 1) {
-@@ -333,28 +375,29 @@ int sys_filter_load(struct db_filter_col *col, bool rawrc)
- if (col->attr.tsync_enable)
- flgs |= SECCOMP_FILTER_FLAG_TSYNC | \
- SECCOMP_FILTER_FLAG_TSYNC_ESRCH;
-- if (_support_seccomp_user_notif > 0)
-+ if (state.sup_user_notif > 0)
- flgs |= SECCOMP_FILTER_FLAG_NEW_LISTENER;
- } else if (col->attr.tsync_enable)
- flgs |= SECCOMP_FILTER_FLAG_TSYNC;
-- else if (_support_seccomp_user_notif > 0)
-+ else if (state.sup_user_notif > 0 && state.notify_fd == -1)
- flgs |= SECCOMP_FILTER_FLAG_NEW_LISTENER;
- if (col->attr.log_enable)
- flgs |= SECCOMP_FILTER_FLAG_LOG;
- if (col->attr.spec_allow)
- flgs |= SECCOMP_FILTER_FLAG_SPEC_ALLOW;
-- rc = syscall(_nr_seccomp, SECCOMP_SET_MODE_FILTER, flgs, prgm);
-+ rc = syscall(state.nr_seccomp,
-+ SECCOMP_SET_MODE_FILTER, flgs, prgm);
- if (tsync_notify && rc > 0) {
- /* return 0 on NEW_LISTENER success, but save the fd */
-- col->notify_fd = rc;
-+ state.notify_fd = rc;
- rc = 0;
- } else if (rc > 0 && col->attr.tsync_enable) {
- /* always return -ESRCH if we fail to sync threads */
- errno = ESRCH;
- rc = -errno;
-- } else if (rc > 0 && _support_seccomp_user_notif > 0) {
-+ } else if (rc > 0 && state.sup_user_notif > 0) {
- /* return 0 on NEW_LISTENER success, but save the fd */
-- col->notify_fd = rc;
-+ state.notify_fd = rc;
- rc = 0;
- }
- } else
-@@ -370,6 +413,19 @@ filter_load_out:
- return rc;
- }
-
-+/**
-+ * Return the userspace notification fd
-+ *
-+ * This function returns the userspace notification fd from
-+ * SECCOMP_FILTER_FLAG_NEW_LISTENER. If the notification fd has not yet been
-+ * set, or an error has occurred, -1 is returned.
-+ *
-+ */
-+int sys_notify_fd(void)
-+{
-+ return state.notify_fd;
-+}
-+
- /**
- * Allocate a pair of notification request/response structures
- * @param req the request location
-@@ -386,7 +442,7 @@ int sys_notify_alloc(struct seccomp_notif **req,
- int rc;
- static struct seccomp_notif_sizes sizes = { 0, 0, 0 };
-
-- if (_support_seccomp_syscall <= 0)
-+ if (state.sup_syscall <= 0)
- return -EOPNOTSUPP;
-
- if (sizes.seccomp_notif == 0 && sizes.seccomp_notif_resp == 0) {
-@@ -427,7 +483,7 @@ int sys_notify_alloc(struct seccomp_notif **req,
- */
- int sys_notify_receive(int fd, struct seccomp_notif *req)
- {
-- if (_support_seccomp_user_notif <= 0)
-+ if (state.sup_user_notif <= 0)
- return -EOPNOTSUPP;
-
- if (ioctl(fd, SECCOMP_IOCTL_NOTIF_RECV, req) < 0)
-@@ -448,7 +504,7 @@ int sys_notify_receive(int fd, struct seccomp_notif *req)
- */
- int sys_notify_respond(int fd, struct seccomp_notif_resp *resp)
- {
-- if (_support_seccomp_user_notif <= 0)
-+ if (state.sup_user_notif <= 0)
- return -EOPNOTSUPP;
-
- if (ioctl(fd, SECCOMP_IOCTL_NOTIF_SEND, resp) < 0)
-@@ -467,7 +523,7 @@ int sys_notify_respond(int fd, struct seccomp_notif_resp *resp)
- */
- int sys_notify_id_valid(int fd, uint64_t id)
- {
-- if (_support_seccomp_user_notif <= 0)
-+ if (state.sup_user_notif <= 0)
- return -EOPNOTSUPP;
-
- if (ioctl(fd, SECCOMP_IOCTL_NOTIF_ID_VALID, &id) < 0)
-diff --git a/src/system.h b/src/system.h
-index 133f9b1..096f3ca 100644
---- a/src/system.h
-+++ b/src/system.h
-@@ -182,6 +182,8 @@ struct seccomp_notif_resp {
- #define SECCOMP_IOCTL_NOTIF_ID_VALID SECCOMP_IOR(2, __u64)
- #endif /* SECCOMP_RET_USER_NOTIF */
-
-+void sys_reset_state(void);
-+
- int sys_chk_seccomp_syscall(void);
- void sys_set_seccomp_syscall(bool enable);
-
-@@ -193,6 +195,7 @@ void sys_set_seccomp_flag(int flag, bool enable);
-
- int sys_filter_load(struct db_filter_col *col, bool rawrc);
-
-+int sys_notify_fd(void);
- int sys_notify_alloc(struct seccomp_notif **req,
- struct seccomp_notif_resp **resp);
- int sys_notify_receive(int fd, struct seccomp_notif *req);
-diff --git a/tests/11-basic-basic_errors.c b/tests/11-basic-basic_errors.c
-index d3b2256..da059df 100644
---- a/tests/11-basic-basic_errors.c
-+++ b/tests/11-basic-basic_errors.c
-@@ -41,12 +41,9 @@ int main(int argc, char *argv[])
- seccomp_release(ctx);
- ctx = NULL;
-
-- /* seccomp_reset error */
-- rc = seccomp_reset(ctx, SCMP_ACT_KILL + 1);
-- if (rc != -EINVAL)
-- return -1;
-- rc = seccomp_reset(ctx, SCMP_ACT_KILL);
-- if (rc != -EINVAL)
-+ /* ensure that seccomp_reset(NULL, ...) is accepted */
-+ rc = seccomp_reset(NULL, SCMP_ACT_ALLOW);
-+ if (rc != 0)
- return -1;
-
- /* seccomp_load error */
-diff --git a/tests/51-live-user_notification.c b/tests/51-live-user_notification.c
-index de31d2f..a00627b 100644
---- a/tests/51-live-user_notification.c
-+++ b/tests/51-live-user_notification.c
-@@ -98,6 +98,27 @@ int main(int argc, char *argv[])
- goto out;
- }
-
-+ rc = seccomp_reset(ctx, SCMP_ACT_ALLOW);
-+ if (rc < 0)
-+ goto out;
-+
-+ rc = seccomp_rule_add(ctx, SCMP_ACT_NOTIFY, SCMP_SYS(getppid), 0, NULL);
-+ if (rc)
-+ goto out;
-+
-+ rc = seccomp_load(ctx);
-+ if (rc < 0)
-+ goto out;
-+
-+ rc = seccomp_notify_fd(ctx);
-+ if (rc < 0)
-+ goto out;
-+ if (rc != fd) {
-+ rc = -EFAULT;
-+ goto out;
-+ } else
-+ rc = 0;
-+
- out:
- if (fd >= 0)
- close(fd);
-diff --git a/tests/51-live-user_notification.py b/tests/51-live-user_notification.py
-index 0d81f5e..3449c44 100755
---- a/tests/51-live-user_notification.py
-+++ b/tests/51-live-user_notification.py
-@@ -52,6 +52,10 @@ def test():
- raise RuntimeError("Child process error")
- if os.WEXITSTATUS(rc) != 0:
- raise RuntimeError("Child process error")
-+ f.reset(ALLOW)
-+ f.add_rule(NOTIFY, "getppid")
-+ f.load()
-+ # no easy way to check the notification fd here
- quit(160)
-
- test()
---
-2.26.2
-
diff --git a/0102-system-change-our-notification-fd-handling.patch b/0102-system-change-our-notification-fd-handling.patch
deleted file mode 100644
index 3ffe19e..0000000
--- a/0102-system-change-our-notification-fd-handling.patch
+++ /dev/null
@@ -1,93 +0,0 @@
-From 5201e324d2025b1febbade9bb90d6e405b92a14c Mon Sep 17 00:00:00 2001
-From: Paul Moore <paul(a)paul-moore.com>
-Date: Tue, 4 Aug 2020 10:52:08 -0400
-Subject: [PATCH 102/102] system: change our notification fd handling
-
-This commit changes how we handle the notification fd by only
-requesting it via _NEW_LISTENER if the filter has a _NOTIFY action
-in it. We also augment the seccomp_reset(NULL, ...) behavior so
-that it closes the notification fd before resetting the global
-state; applications that need to keep their notification fd open
-across a call to seccomp_reset(NULL, ...) can simply dup() it.
-Although one would have to wonder why the application would be
-calling seccomp_reset(NULL, ...) in that case.
-
-Signed-off-by: Paul Moore <paul(a)paul-moore.com>
----
- doc/man/man3/seccomp_init.3 | 6 ++++--
- src/system.c | 18 +++++++++++++++---
- 2 files changed, 19 insertions(+), 5 deletions(-)
-
-diff --git a/doc/man/man3/seccomp_init.3 b/doc/man/man3/seccomp_init.3
-index 87520cd..7881c35 100644
---- a/doc/man/man3/seccomp_init.3
-+++ b/doc/man/man3/seccomp_init.3
-@@ -38,8 +38,10 @@ and can only be called after a call to
- .BR seccomp_init ()
- has succeeded. If
- .BR seccomp_reset ()
--is called with a NULL filter, it resets the library's global task state;
--normally this is not needed, but it may be required to continue using the
-+is called with a NULL filter, it resets the library's global task state,
-+including any notification file descriptors retrieved by
-+.BR seccomp_notify_fd(3) .
-+Normally this is not needed, but it may be required to continue using the
- library after a
- .BR fork ()
- or
-diff --git a/src/system.c b/src/system.c
-index 3b43b2a..c646c65 100644
---- a/src/system.c
-+++ b/src/system.c
-@@ -84,7 +84,11 @@ static struct task_state state = {
- void sys_reset_state(void)
- {
- state.nr_seccomp = -1;
-+
-+ if (state.notify_fd > 0)
-+ close(state.notify_fd);
- state.notify_fd = -1;
-+
- state.sup_syscall = -1;
- state.sup_flag_tsync = -1;
- state.sup_flag_log = -1;
-@@ -353,6 +357,7 @@ int sys_filter_load(struct db_filter_col *col, bool rawrc)
- {
- int rc;
- bool tsync_notify;
-+ bool listener_req;
- struct bpf_program *prgm = NULL;
-
- rc = gen_bpf_generate(col, &prgm);
-@@ -367,6 +372,8 @@ int sys_filter_load(struct db_filter_col *col, bool rawrc)
- }
-
- tsync_notify = state.sup_flag_tsync_esrch > 0 && state.notify_fd == -1;
-+ listener_req = state.sup_user_notif > 0 && \
-+ col->notify_used && state.notify_fd == -1;
-
- /* load the filter into the kernel */
- if (sys_chk_seccomp_syscall() == 1) {
-@@ -375,11 +382,16 @@ int sys_filter_load(struct db_filter_col *col, bool rawrc)
- if (col->attr.tsync_enable)
- flgs |= SECCOMP_FILTER_FLAG_TSYNC | \
- SECCOMP_FILTER_FLAG_TSYNC_ESRCH;
-- if (state.sup_user_notif > 0)
-+ if (listener_req)
- flgs |= SECCOMP_FILTER_FLAG_NEW_LISTENER;
-- } else if (col->attr.tsync_enable)
-+ } else if (col->attr.tsync_enable) {
-+ if (listener_req) {
-+ /* NOTE: we _should_ catch this in db.c */
-+ rc = -EFAULT;
-+ goto filter_load_out;
-+ }
- flgs |= SECCOMP_FILTER_FLAG_TSYNC;
-- else if (state.sup_user_notif > 0 && state.notify_fd == -1)
-+ } else if (listener_req)
- flgs |= SECCOMP_FILTER_FLAG_NEW_LISTENER;
- if (col->attr.log_enable)
- flgs |= SECCOMP_FILTER_FLAG_LOG;
---
-2.26.2
-
commit 529c95767dc1b6ca1e73c4bf8c5c8b2734d2e0c8
Author: Debarshi Ray <debarshir(a)gnome.org>
Date: Wed Nov 3 11:36:05 2021 +0100
New upstream version (#1900097)
diff --git a/.gitignore b/.gitignore
index 550a712..54770ea 100644
--- a/.gitignore
+++ b/.gitignore
@@ -15,3 +15,4 @@
/libseccomp-2.4.1.tar.gz
/libseccomp-2.4.2.tar.gz
/libseccomp-2.5.0.tar.gz
+/libseccomp-2.5.1.tar.gz
diff --git a/libseccomp.spec b/libseccomp.spec
index c070fde..04e7081 100644
--- a/libseccomp.spec
+++ b/libseccomp.spec
@@ -1,19 +1,11 @@
Name: libseccomp
-Version: 2.5.0
-Release: 5%{?dist}
+Version: 2.5.1
+Release: 1%{?dist}
Summary: Enhanced seccomp library
License: LGPLv2
URL: https://github.com/seccomp/libseccomp
Source0: %{url}/releases/download/v%{version}/%{name}-%{version}.tar.gz
-# Backports from upstream
-
-# Patches pending merge
-## From: https://github.com/seccomp/libseccomp/pull/280
-## Reference: https://bugzilla.redhat.com/show_bug.cgi?id=1865802
-Patch0101: 0101-all-only-request-the-userspace-notification-fd-once.patch
-Patch0102: 0102-system-change-our-notification-fd-handling.patch
-
BuildRequires: gcc
BuildRequires: gperf
BuildRequires: make
@@ -70,11 +62,6 @@ mkdir -p %{buildroot}/%{_mandir}
rm -f %{buildroot}/%{_libdir}/libseccomp.la
%check
-# Tests 36 and 37 fail on the build systems for the arches below and I'm not
-# able to reproduce the failure so just skip the tests for now
-%ifarch i686 ppc64le s390x
-rm -f tests/36-sim-ipc_syscalls.tests tests/37-sim-ipc_syscalls_be.tests
-%endif
%make_build check
@@ -96,6 +83,9 @@ rm -f tests/36-sim-ipc_syscalls.tests tests/37-sim-ipc_syscalls_be.tests
%{_libdir}/libseccomp.a
%changelog
+* Wed Nov 03 2021 Debarshi Ray <rishi(a)fedoraproject.org> - 2.5.1-1
+- New upstream version (#1900097)
+
* Thu Jul 22 2021 Fedora Release Engineering <releng(a)fedoraproject.org> - 2.5.0-5
- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild
diff --git a/sources b/sources
index 99aebbc..27d4059 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-SHA512 (libseccomp-2.5.0.tar.gz) = 00ef5aeb4db8dafb546ae680b2d6d9b6aeed008df805d0f28f9dd15c074ff6ea7a5e5131ab503825b8011c59aa23046baedd5849ca040aa73352f43ab2d602ae
+SHA512 (libseccomp-2.5.1.tar.gz) = 2be80a6323f9282dbeae8791724e5778b32e2382b2a3d1b0f77366371ec4072ea28128204f675cce101c091c0420d12c497e1a9ccbb7dc5bcbf61bfd777160af
commit 8f99b157cad88bbefa84f6e31f9b111ed1c93972
Author: Debarshi Ray <debarshir(a)gnome.org>
Date: Wed Nov 3 11:36:39 2021 +0100
Silence macro-in-%changelog
diff --git a/libseccomp.spec b/libseccomp.spec
index 564d600..c070fde 100644
--- a/libseccomp.spec
+++ b/libseccomp.spec
@@ -130,7 +130,7 @@ rm -f tests/36-sim-ipc_syscalls.tests tests/37-sim-ipc_syscalls_be.tests
* Thu Mar 14 2019 Paul Moore <paul(a)paul-moore.com> - 2.4.0-0
- New upstream version
-- Added a hack to workaround test failures (see %check above)
+- Added a hack to workaround test failures (see %%check above)
* Fri Feb 01 2019 Fedora Release Engineering <releng(a)fedoraproject.org> - 2.3.3-5
- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild
commit bc0c71882c0d2b045f1e8ab65290a46a3e378e80
Author: Fedora Release Engineering <releng(a)fedoraproject.org>
Date: Thu Jul 22 12:21:02 2021 +0000
- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng(a)fedoraproject.org>
diff --git a/libseccomp.spec b/libseccomp.spec
index 8c4246c..564d600 100644
--- a/libseccomp.spec
+++ b/libseccomp.spec
@@ -1,6 +1,6 @@
Name: libseccomp
Version: 2.5.0
-Release: 4%{?dist}
+Release: 5%{?dist}
Summary: Enhanced seccomp library
License: LGPLv2
URL: https://github.com/seccomp/libseccomp
@@ -96,6 +96,9 @@ rm -f tests/36-sim-ipc_syscalls.tests tests/37-sim-ipc_syscalls_be.tests
%{_libdir}/libseccomp.a
%changelog
+* Thu Jul 22 2021 Fedora Release Engineering <releng(a)fedoraproject.org> - 2.5.0-5
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild
+
* Tue Jan 26 2021 Fedora Release Engineering <releng(a)fedoraproject.org> - 2.5.0-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild
commit 282423f64b350872534fae202ac561eeacadcde1
Author: Fedora Release Engineering <releng(a)fedoraproject.org>
Date: Tue Jan 26 17:58:46 2021 +0000
- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng(a)fedoraproject.org>
diff --git a/libseccomp.spec b/libseccomp.spec
index 0212a69..8c4246c 100644
--- a/libseccomp.spec
+++ b/libseccomp.spec
@@ -1,6 +1,6 @@
Name: libseccomp
Version: 2.5.0
-Release: 3%{?dist}
+Release: 4%{?dist}
Summary: Enhanced seccomp library
License: LGPLv2
URL: https://github.com/seccomp/libseccomp
@@ -96,6 +96,9 @@ rm -f tests/36-sim-ipc_syscalls.tests tests/37-sim-ipc_syscalls_be.tests
%{_libdir}/libseccomp.a
%changelog
+* Tue Jan 26 2021 Fedora Release Engineering <releng(a)fedoraproject.org> - 2.5.0-4
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild
+
* Wed Aug 05 2020 Neal Gompa <ngompa13(a)gmail.com> - 2.5.0-3
- Apply fixes to change internal handling of the notification fd (#1865802)
2 years, 6 months
Architecture specific change in rpms/libseccomp.git
by githook-noreply@fedoraproject.org
The package rpms/libseccomp.git has added or updated architecture specific content in its
spec file (ExclusiveArch/ExcludeArch or %ifarch/%ifnarch) in commit(s):
https://src.fedoraproject.org/cgit/rpms/libseccomp.git/commit/?id=529c957....
Change:
-%ifarch i686 ppc64le s390x
Thanks.
Full change:
============
commit 5e8deb83a0c85b2d8a2400cd467e3949f8ef3de4
Author: Debarshi Ray <debarshir(a)gnome.org>
Date: Wed Nov 3 12:06:12 2021 +0100
New upstream version (#1900097)
diff --git a/.gitignore b/.gitignore
index 54770ea..6c46772 100644
--- a/.gitignore
+++ b/.gitignore
@@ -16,3 +16,4 @@
/libseccomp-2.4.2.tar.gz
/libseccomp-2.5.0.tar.gz
/libseccomp-2.5.1.tar.gz
+/libseccomp-2.5.2.tar.gz
diff --git a/libseccomp.spec b/libseccomp.spec
index 04e7081..7c13843 100644
--- a/libseccomp.spec
+++ b/libseccomp.spec
@@ -1,5 +1,5 @@
Name: libseccomp
-Version: 2.5.1
+Version: 2.5.2
Release: 1%{?dist}
Summary: Enhanced seccomp library
License: LGPLv2
@@ -83,6 +83,9 @@ rm -f %{buildroot}/%{_libdir}/libseccomp.la
%{_libdir}/libseccomp.a
%changelog
+* Wed Nov 03 2021 Debarshi Ray <rishi(a)fedoraproject.org> - 2.5.2-1
+- New upstream version (#1900097)
+
* Wed Nov 03 2021 Debarshi Ray <rishi(a)fedoraproject.org> - 2.5.1-1
- New upstream version (#1900097)
diff --git a/sources b/sources
index 27d4059..936b0f5 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-SHA512 (libseccomp-2.5.1.tar.gz) = 2be80a6323f9282dbeae8791724e5778b32e2382b2a3d1b0f77366371ec4072ea28128204f675cce101c091c0420d12c497e1a9ccbb7dc5bcbf61bfd777160af
+SHA512 (libseccomp-2.5.2.tar.gz) = b2a95152cb274d6b35753596fd825406dae20c4a48b2f4076f835f977ecf324de38a3fe02e789dc20b49ecf6b4eb67f03e7733e92d40f5e20f25874307f1c2ac
commit 43b0412403c480995b6da3ee45cf2744830f6251
Author: Debarshi Ray <debarshir(a)gnome.org>
Date: Wed Nov 3 12:06:52 2021 +0100
Drop upstreamed patches
Fallout from 529c95767dc1b6ca1e73c4bf8c5c8b2734d2e0c8
diff --git a/0101-all-only-request-the-userspace-notification-fd-once.patch b/0101-all-only-request-the-userspace-notification-fd-once.patch
deleted file mode 100644
index 59f412e..0000000
--- a/0101-all-only-request-the-userspace-notification-fd-once.patch
+++ /dev/null
@@ -1,631 +0,0 @@
-From bbf4ae95742662e641e0a456951b912024433435 Mon Sep 17 00:00:00 2001
-From: Paul Moore <paul(a)paul-moore.com>
-Date: Sun, 26 Jul 2020 11:01:49 -0400
-Subject: [PATCH 101/102] all: only request the userspace notification fd once
-
-It turns out that requesting the seccomp userspace notifcation fd
-more than once is a bad thing which causes the kernel to complain
-(rightfully so for a variety of reasons). Unfortunately as we were
-always requesting the notification fd whenever possible this results
-in problems at filter load time.
-
-Our solution is to move the notification fd out of the filter context
-and into the global task context, using a newly created task_state
-structure. This allows us to store, and retrieve the notification
-outside the scope of an individual filter context. It also provides
-some implementation improvements by giving us a convenient place to
-stash all of the API level related support variables. We also extend
-the seccomp_reset() API call to reset this internal global state when
-passed a NULL filter context.
-
-There is one potential case which we don't currently handle well:
-threads. At the moment libseccomp is thread ignorant, and that works
-well as the only global state up to this point was the currently
-supported API level information which was common to all threads in a
-process. Unfortunately, it appears that the notification fd need not
-be common to all threads in a process, yet this patch treats it as if
-it is common. I suspect this is a very unusual use case so I decided
-to keep this patch simple and ignore this case, but in the future if
-we need to support this properly we should be able to do so without
-API changes by keeping an internal list of notification fds indexed
-by gettid(2).
-
-This fixes the GitHub issue below:
-* https://github.com/seccomp/libseccomp/issues/273
-
-Reported-by: Tobias Stoeckmann <tobias(a)stoeckmann.org>
-Acked-by: Tom Hromatka <tom.hromatka(a)oracle.com>
-Signed-off-by: Paul Moore <paul(a)paul-moore.com>
----
- doc/man/man3/seccomp_init.3 | 10 +-
- doc/man/man3/seccomp_notify_alloc.3 | 3 +-
- src/api.c | 19 ++-
- src/db.c | 1 -
- src/db.h | 3 +-
- src/system.c | 204 ++++++++++++++++++----------
- src/system.h | 3 +
- tests/11-basic-basic_errors.c | 9 +-
- tests/51-live-user_notification.c | 21 +++
- tests/51-live-user_notification.py | 4 +
- 10 files changed, 187 insertions(+), 90 deletions(-)
-
-diff --git a/doc/man/man3/seccomp_init.3 b/doc/man/man3/seccomp_init.3
-index 3ab68fe..87520cd 100644
---- a/doc/man/man3/seccomp_init.3
-+++ b/doc/man/man3/seccomp_init.3
-@@ -36,7 +36,15 @@ The
- function releases the existing filter context state before reinitializing it
- and can only be called after a call to
- .BR seccomp_init ()
--has succeeded.
-+has succeeded. If
-+.BR seccomp_reset ()
-+is called with a NULL filter, it resets the library's global task state;
-+normally this is not needed, but it may be required to continue using the
-+library after a
-+.BR fork ()
-+or
-+.BR clone ()
-+call to ensure the API level and user notification state is properly reset.
- .P
- When the caller is finished configuring the seccomp filter and has loaded it
- into the kernel, the caller should call
-diff --git a/doc/man/man3/seccomp_notify_alloc.3 b/doc/man/man3/seccomp_notify_alloc.3
-index 50c8970..cb1c048 100644
---- a/doc/man/man3/seccomp_notify_alloc.3
-+++ b/doc/man/man3/seccomp_notify_alloc.3
-@@ -59,7 +59,8 @@ returns the notification fd of a filter after it has been loaded.
- .\" //////////////////////////////////////////////////////////////////////////
- The
- .BR seccomp_notify_fd ()
--returns the notification fd of the loaded filter.
-+returns the notification fd of the loaded filter, -1 if a notification fd has
-+not yet been created, and -EINVAL if the filter context is invalid.
- .P
- The
- .BR seccomp_notify_id_valid ()
-diff --git a/src/api.c b/src/api.c
-index 00975ad..5cec088 100644
---- a/src/api.c
-+++ b/src/api.c
-@@ -301,10 +301,18 @@ API int seccomp_reset(scmp_filter_ctx ctx, uint32_t def_action)
- {
- struct db_filter_col *col = (struct db_filter_col *)ctx;
-
-- /* use a NULL filter collection here since we are resetting it */
-- if (ctx == NULL || db_col_action_valid(NULL, def_action) < 0)
-+ /* a NULL filter context indicates we are resetting the global state */
-+ if (ctx == NULL) {
-+ /* reset the global state and redetermine the api level */
-+ sys_reset_state();
-+ _seccomp_api_update();
-+ return _rc_filter(0);
-+ }
-+ /* ensure the default action is valid */
-+ if (db_col_action_valid(NULL, def_action) < 0)
- return _rc_filter(-EINVAL);
-
-+ /* reset the filter */
- return _rc_filter(db_col_reset(col, def_action));
- }
-
-@@ -675,16 +683,17 @@ API int seccomp_notify_id_valid(int fd, uint64_t id)
- /* NOTE - function header comment in include/seccomp.h */
- API int seccomp_notify_fd(const scmp_filter_ctx ctx)
- {
-- struct db_filter_col *col;
-+ /* NOTE: for historical reasons, and possibly future use, we require a
-+ * valid filter context even though we don't actual use it here; the
-+ * api update is also not strictly necessary, but keep it for now */
-
- /* force a runtime api level detection */
- _seccomp_api_update();
-
- if (_ctx_valid(ctx))
- return _rc_filter(-EINVAL);
-- col = (struct db_filter_col *)ctx;
-
-- return _rc_filter(col->notify_fd);
-+ return _rc_filter(sys_notify_fd());
- }
-
- /* NOTE - function header comment in include/seccomp.h */
-diff --git a/src/db.c b/src/db.c
-index 4a87ea3..836171a 100644
---- a/src/db.c
-+++ b/src/db.c
-@@ -1057,7 +1057,6 @@ int db_col_reset(struct db_filter_col *col, uint32_t def_action)
- if (col->filters)
- free(col->filters);
- col->filters = NULL;
-- col->notify_fd = -1;
-
- /* set the endianess to undefined */
- col->endian = 0;
-diff --git a/src/db.h b/src/db.h
-index b96b104..765c607 100644
---- a/src/db.h
-+++ b/src/db.h
-@@ -160,8 +160,7 @@ struct db_filter_col {
- /* transaction snapshots */
- struct db_filter_snap *snapshots;
-
-- /* notification fd that was returned from seccomp() */
-- int notify_fd;
-+ /* userspace notification */
- bool notify_used;
- };
-
-diff --git a/src/system.c b/src/system.c
-index 6cdfc16..3b43b2a 100644
---- a/src/system.c
-+++ b/src/system.c
-@@ -40,16 +40,61 @@
- * our next release we may have to enable the allowlist */
- #define SYSCALL_ALLOWLIST_ENABLE 0
-
--static int _nr_seccomp = -1;
--static int _support_seccomp_syscall = -1;
--static int _support_seccomp_flag_tsync = -1;
--static int _support_seccomp_flag_log = -1;
--static int _support_seccomp_action_log = -1;
--static int _support_seccomp_kill_process = -1;
--static int _support_seccomp_flag_spec_allow = -1;
--static int _support_seccomp_flag_new_listener = -1;
--static int _support_seccomp_user_notif = -1;
--static int _support_seccomp_flag_tsync_esrch = -1;
-+/* task global state */
-+struct task_state {
-+ /* seccomp(2) syscall */
-+ int nr_seccomp;
-+
-+ /* userspace notification fd */
-+ int notify_fd;
-+
-+ /* runtime support flags */
-+ int sup_syscall;
-+ int sup_flag_tsync;
-+ int sup_flag_log;
-+ int sup_action_log;
-+ int sup_kill_process;
-+ int sup_flag_spec_allow;
-+ int sup_flag_new_listener;
-+ int sup_user_notif;
-+ int sup_flag_tsync_esrch;
-+};
-+static struct task_state state = {
-+ .nr_seccomp = -1,
-+
-+ .notify_fd = -1,
-+
-+ .sup_syscall = -1,
-+ .sup_flag_tsync = -1,
-+ .sup_flag_log = -1,
-+ .sup_action_log = -1,
-+ .sup_kill_process = -1,
-+ .sup_flag_spec_allow = -1,
-+ .sup_flag_new_listener = -1,
-+ .sup_user_notif = -1,
-+ .sup_flag_tsync_esrch = -1,
-+};
-+
-+/**
-+ * Reset the task state
-+ *
-+ * This function fully resets the library's global "system task state".
-+ *
-+ */
-+void sys_reset_state(void)
-+{
-+ state.nr_seccomp = -1;
-+ state.notify_fd = -1;
-+ state.sup_syscall = -1;
-+ state.sup_flag_tsync = -1;
-+ state.sup_flag_log = -1;
-+ state.sup_action_log = -1;
-+ state.sup_kill_process = -1;
-+ state.sup_flag_spec_allow = -1;
-+ state.sup_flag_new_listener = -1;
-+ state.sup_user_notif = -1;
-+ state.sup_flag_tsync_esrch = -1;
-+}
-
- /**
- * Check to see if the seccomp() syscall is supported
-@@ -68,8 +113,8 @@ int sys_chk_seccomp_syscall(void)
- /* NOTE: it is reasonably safe to assume that we should be able to call
- * seccomp() when the caller first starts, but we can't rely on
- * it later so we need to cache our findings for use later */
-- if (_support_seccomp_syscall >= 0)
-- return _support_seccomp_syscall;
-+ if (state.sup_syscall >= 0)
-+ return state.sup_syscall;
-
- #if SYSCALL_ALLOWLIST_ENABLE
- /* architecture allowlist */
-@@ -100,11 +145,11 @@ int sys_chk_seccomp_syscall(void)
- goto supported;
-
- unsupported:
-- _support_seccomp_syscall = 0;
-+ state.sup_syscall = 0;
- return 0;
- supported:
-- _nr_seccomp = nr_seccomp;
-- _support_seccomp_syscall = 1;
-+ state.nr_seccomp = nr_seccomp;
-+ state.sup_syscall = 1;
- return 1;
- }
-
-@@ -118,7 +163,7 @@ supported:
- */
- void sys_set_seccomp_syscall(bool enable)
- {
-- _support_seccomp_syscall = (enable ? 1 : 0);
-+ state.sup_syscall = (enable ? 1 : 0);
- }
-
- /**
-@@ -132,16 +177,16 @@ void sys_set_seccomp_syscall(bool enable)
- int sys_chk_seccomp_action(uint32_t action)
- {
- if (action == SCMP_ACT_KILL_PROCESS) {
-- if (_support_seccomp_kill_process < 0) {
-+ if (state.sup_kill_process < 0) {
- if (sys_chk_seccomp_syscall() == 1 &&
-- syscall(_nr_seccomp, SECCOMP_GET_ACTION_AVAIL, 0,
-- &action) == 0)
-- _support_seccomp_kill_process = 1;
-+ syscall(state.nr_seccomp,
-+ SECCOMP_GET_ACTION_AVAIL, 0, &action) == 0)
-+ state.sup_kill_process = 1;
- else
-- _support_seccomp_kill_process = 0;
-+ state.sup_kill_process = 0;
- }
-
-- return _support_seccomp_kill_process;
-+ return state.sup_kill_process;
- } else if (action == SCMP_ACT_KILL_THREAD) {
- return 1;
- } else if (action == SCMP_ACT_TRAP) {
-@@ -152,30 +197,30 @@ int sys_chk_seccomp_action(uint32_t action)
- } else if (action == SCMP_ACT_TRACE(action & 0x0000ffff)) {
- return 1;
- } else if (action == SCMP_ACT_LOG) {
-- if (_support_seccomp_action_log < 0) {
-+ if (state.sup_action_log < 0) {
- if (sys_chk_seccomp_syscall() == 1 &&
-- syscall(_nr_seccomp, SECCOMP_GET_ACTION_AVAIL, 0,
-- &action) == 0)
-- _support_seccomp_action_log = 1;
-+ syscall(state.nr_seccomp,
-+ SECCOMP_GET_ACTION_AVAIL, 0, &action) == 0)
-+ state.sup_action_log = 1;
- else
-- _support_seccomp_action_log = 0;
-+ state.sup_action_log = 0;
- }
-
-- return _support_seccomp_action_log;
-+ return state.sup_action_log;
- } else if (action == SCMP_ACT_ALLOW) {
- return 1;
- } else if (action == SCMP_ACT_NOTIFY) {
-- if (_support_seccomp_user_notif < 0) {
-+ if (state.sup_user_notif < 0) {
- struct seccomp_notif_sizes sizes;
- if (sys_chk_seccomp_syscall() == 1 &&
-- syscall(_nr_seccomp, SECCOMP_GET_NOTIF_SIZES, 0,
-- &sizes) == 0)
-- _support_seccomp_user_notif = 1;
-+ syscall(state.nr_seccomp,
-+ SECCOMP_GET_NOTIF_SIZES, 0, &sizes) == 0)
-+ state.sup_user_notif = 1;
- else
-- _support_seccomp_user_notif = 0;
-+ state.sup_user_notif = 0;
- }
-
-- return _support_seccomp_user_notif;
-+ return state.sup_user_notif;
- }
-
- return 0;
-@@ -193,13 +238,13 @@ void sys_set_seccomp_action(uint32_t action, bool enable)
- {
- switch (action) {
- case SCMP_ACT_LOG:
-- _support_seccomp_action_log = (enable ? 1 : 0);
-+ state.sup_action_log = (enable ? 1 : 0);
- break;
- case SCMP_ACT_KILL_PROCESS:
-- _support_seccomp_kill_process = (enable ? 1 : 0);
-+ state.sup_kill_process = (enable ? 1 : 0);
- break;
- case SCMP_ACT_NOTIFY:
-- _support_seccomp_user_notif = (enable ? 1 : 0);
-+ state.sup_user_notif = (enable ? 1 : 0);
- break;
- }
- }
-@@ -212,13 +257,14 @@ void sys_set_seccomp_action(uint32_t action, bool enable)
- * Return one if the flag is supported, zero otherwise.
- *
- */
--static int _sys_chk_seccomp_flag_kernel(int flag)
-+static int _sys_chk_flag_kernel(int flag)
- {
- /* this is an invalid seccomp(2) call because the last argument
- * is NULL, but depending on the errno value of EFAULT we can
- * guess if the filter flag is supported or not */
- if (sys_chk_seccomp_syscall() == 1 &&
-- syscall(_nr_seccomp, SECCOMP_SET_MODE_FILTER, flag, NULL) == -1 &&
-+ syscall(state.nr_seccomp,
-+ SECCOMP_SET_MODE_FILTER, flag, NULL) == -1 &&
- errno == EFAULT)
- return 1;
-
-@@ -238,29 +284,25 @@ int sys_chk_seccomp_flag(int flag)
- {
- switch (flag) {
- case SECCOMP_FILTER_FLAG_TSYNC:
-- if (_support_seccomp_flag_tsync < 0)
-- _support_seccomp_flag_tsync = _sys_chk_seccomp_flag_kernel(flag);
--
-- return _support_seccomp_flag_tsync;
-+ if (state.sup_flag_tsync < 0)
-+ state.sup_flag_tsync = _sys_chk_flag_kernel(flag);
-+ return state.sup_flag_tsync;
- case SECCOMP_FILTER_FLAG_LOG:
-- if (_support_seccomp_flag_log < 0)
-- _support_seccomp_flag_log = _sys_chk_seccomp_flag_kernel(flag);
--
-- return _support_seccomp_flag_log;
-+ if (state.sup_flag_log < 0)
-+ state.sup_flag_log = _sys_chk_flag_kernel(flag);
-+ return state.sup_flag_log;
- case SECCOMP_FILTER_FLAG_SPEC_ALLOW:
-- if (_support_seccomp_flag_spec_allow < 0)
-- _support_seccomp_flag_spec_allow = _sys_chk_seccomp_flag_kernel(flag);
--
-- return _support_seccomp_flag_spec_allow;
-+ if (state.sup_flag_spec_allow < 0)
-+ state.sup_flag_spec_allow = _sys_chk_flag_kernel(flag);
-+ return state.sup_flag_spec_allow;
- case SECCOMP_FILTER_FLAG_NEW_LISTENER:
-- if (_support_seccomp_flag_new_listener < 0)
-- _support_seccomp_flag_new_listener = _sys_chk_seccomp_flag_kernel(flag);
--
-- return _support_seccomp_flag_new_listener;
-+ if (state.sup_flag_new_listener < 0)
-+ state.sup_flag_new_listener = _sys_chk_flag_kernel(flag);
-+ return state.sup_flag_new_listener;
- case SECCOMP_FILTER_FLAG_TSYNC_ESRCH:
-- if (_support_seccomp_flag_tsync_esrch < 0)
-- _support_seccomp_flag_tsync_esrch = _sys_chk_seccomp_flag_kernel(flag);
-- return _support_seccomp_flag_tsync_esrch;
-+ if (state.sup_flag_tsync_esrch < 0)
-+ state.sup_flag_tsync_esrch = _sys_chk_flag_kernel(flag);
-+ return state.sup_flag_tsync_esrch;
- }
-
- return -EOPNOTSUPP;
-@@ -279,19 +321,19 @@ void sys_set_seccomp_flag(int flag, bool enable)
- {
- switch (flag) {
- case SECCOMP_FILTER_FLAG_TSYNC:
-- _support_seccomp_flag_tsync = (enable ? 1 : 0);
-+ state.sup_flag_tsync = (enable ? 1 : 0);
- break;
- case SECCOMP_FILTER_FLAG_LOG:
-- _support_seccomp_flag_log = (enable ? 1 : 0);
-+ state.sup_flag_log = (enable ? 1 : 0);
- break;
- case SECCOMP_FILTER_FLAG_SPEC_ALLOW:
-- _support_seccomp_flag_spec_allow = (enable ? 1 : 0);
-+ state.sup_flag_spec_allow = (enable ? 1 : 0);
- break;
- case SECCOMP_FILTER_FLAG_NEW_LISTENER:
-- _support_seccomp_flag_new_listener = (enable ? 1 : 0);
-+ state.sup_flag_new_listener = (enable ? 1 : 0);
- break;
- case SECCOMP_FILTER_FLAG_TSYNC_ESRCH:
-- _support_seccomp_flag_tsync_esrch = (enable ? 1 : 0);
-+ state.sup_flag_tsync_esrch = (enable ? 1 : 0);
- break;
- }
- }
-@@ -324,7 +366,7 @@ int sys_filter_load(struct db_filter_col *col, bool rawrc)
- goto filter_load_out;
- }
-
-- tsync_notify = (_support_seccomp_flag_tsync_esrch > 0);
-+ tsync_notify = state.sup_flag_tsync_esrch > 0 && state.notify_fd == -1;
-
- /* load the filter into the kernel */
- if (sys_chk_seccomp_syscall() == 1) {
-@@ -333,28 +375,29 @@ int sys_filter_load(struct db_filter_col *col, bool rawrc)
- if (col->attr.tsync_enable)
- flgs |= SECCOMP_FILTER_FLAG_TSYNC | \
- SECCOMP_FILTER_FLAG_TSYNC_ESRCH;
-- if (_support_seccomp_user_notif > 0)
-+ if (state.sup_user_notif > 0)
- flgs |= SECCOMP_FILTER_FLAG_NEW_LISTENER;
- } else if (col->attr.tsync_enable)
- flgs |= SECCOMP_FILTER_FLAG_TSYNC;
-- else if (_support_seccomp_user_notif > 0)
-+ else if (state.sup_user_notif > 0 && state.notify_fd == -1)
- flgs |= SECCOMP_FILTER_FLAG_NEW_LISTENER;
- if (col->attr.log_enable)
- flgs |= SECCOMP_FILTER_FLAG_LOG;
- if (col->attr.spec_allow)
- flgs |= SECCOMP_FILTER_FLAG_SPEC_ALLOW;
-- rc = syscall(_nr_seccomp, SECCOMP_SET_MODE_FILTER, flgs, prgm);
-+ rc = syscall(state.nr_seccomp,
-+ SECCOMP_SET_MODE_FILTER, flgs, prgm);
- if (tsync_notify && rc > 0) {
- /* return 0 on NEW_LISTENER success, but save the fd */
-- col->notify_fd = rc;
-+ state.notify_fd = rc;
- rc = 0;
- } else if (rc > 0 && col->attr.tsync_enable) {
- /* always return -ESRCH if we fail to sync threads */
- errno = ESRCH;
- rc = -errno;
-- } else if (rc > 0 && _support_seccomp_user_notif > 0) {
-+ } else if (rc > 0 && state.sup_user_notif > 0) {
- /* return 0 on NEW_LISTENER success, but save the fd */
-- col->notify_fd = rc;
-+ state.notify_fd = rc;
- rc = 0;
- }
- } else
-@@ -370,6 +413,19 @@ filter_load_out:
- return rc;
- }
-
-+/**
-+ * Return the userspace notification fd
-+ *
-+ * This function returns the userspace notification fd from
-+ * SECCOMP_FILTER_FLAG_NEW_LISTENER. If the notification fd has not yet been
-+ * set, or an error has occurred, -1 is returned.
-+ *
-+ */
-+int sys_notify_fd(void)
-+{
-+ return state.notify_fd;
-+}
-+
- /**
- * Allocate a pair of notification request/response structures
- * @param req the request location
-@@ -386,7 +442,7 @@ int sys_notify_alloc(struct seccomp_notif **req,
- int rc;
- static struct seccomp_notif_sizes sizes = { 0, 0, 0 };
-
-- if (_support_seccomp_syscall <= 0)
-+ if (state.sup_syscall <= 0)
- return -EOPNOTSUPP;
-
- if (sizes.seccomp_notif == 0 && sizes.seccomp_notif_resp == 0) {
-@@ -427,7 +483,7 @@ int sys_notify_alloc(struct seccomp_notif **req,
- */
- int sys_notify_receive(int fd, struct seccomp_notif *req)
- {
-- if (_support_seccomp_user_notif <= 0)
-+ if (state.sup_user_notif <= 0)
- return -EOPNOTSUPP;
-
- if (ioctl(fd, SECCOMP_IOCTL_NOTIF_RECV, req) < 0)
-@@ -448,7 +504,7 @@ int sys_notify_receive(int fd, struct seccomp_notif *req)
- */
- int sys_notify_respond(int fd, struct seccomp_notif_resp *resp)
- {
-- if (_support_seccomp_user_notif <= 0)
-+ if (state.sup_user_notif <= 0)
- return -EOPNOTSUPP;
-
- if (ioctl(fd, SECCOMP_IOCTL_NOTIF_SEND, resp) < 0)
-@@ -467,7 +523,7 @@ int sys_notify_respond(int fd, struct seccomp_notif_resp *resp)
- */
- int sys_notify_id_valid(int fd, uint64_t id)
- {
-- if (_support_seccomp_user_notif <= 0)
-+ if (state.sup_user_notif <= 0)
- return -EOPNOTSUPP;
-
- if (ioctl(fd, SECCOMP_IOCTL_NOTIF_ID_VALID, &id) < 0)
-diff --git a/src/system.h b/src/system.h
-index 133f9b1..096f3ca 100644
---- a/src/system.h
-+++ b/src/system.h
-@@ -182,6 +182,8 @@ struct seccomp_notif_resp {
- #define SECCOMP_IOCTL_NOTIF_ID_VALID SECCOMP_IOR(2, __u64)
- #endif /* SECCOMP_RET_USER_NOTIF */
-
-+void sys_reset_state(void);
-+
- int sys_chk_seccomp_syscall(void);
- void sys_set_seccomp_syscall(bool enable);
-
-@@ -193,6 +195,7 @@ void sys_set_seccomp_flag(int flag, bool enable);
-
- int sys_filter_load(struct db_filter_col *col, bool rawrc);
-
-+int sys_notify_fd(void);
- int sys_notify_alloc(struct seccomp_notif **req,
- struct seccomp_notif_resp **resp);
- int sys_notify_receive(int fd, struct seccomp_notif *req);
-diff --git a/tests/11-basic-basic_errors.c b/tests/11-basic-basic_errors.c
-index d3b2256..da059df 100644
---- a/tests/11-basic-basic_errors.c
-+++ b/tests/11-basic-basic_errors.c
-@@ -41,12 +41,9 @@ int main(int argc, char *argv[])
- seccomp_release(ctx);
- ctx = NULL;
-
-- /* seccomp_reset error */
-- rc = seccomp_reset(ctx, SCMP_ACT_KILL + 1);
-- if (rc != -EINVAL)
-- return -1;
-- rc = seccomp_reset(ctx, SCMP_ACT_KILL);
-- if (rc != -EINVAL)
-+ /* ensure that seccomp_reset(NULL, ...) is accepted */
-+ rc = seccomp_reset(NULL, SCMP_ACT_ALLOW);
-+ if (rc != 0)
- return -1;
-
- /* seccomp_load error */
-diff --git a/tests/51-live-user_notification.c b/tests/51-live-user_notification.c
-index de31d2f..a00627b 100644
---- a/tests/51-live-user_notification.c
-+++ b/tests/51-live-user_notification.c
-@@ -98,6 +98,27 @@ int main(int argc, char *argv[])
- goto out;
- }
-
-+ rc = seccomp_reset(ctx, SCMP_ACT_ALLOW);
-+ if (rc < 0)
-+ goto out;
-+
-+ rc = seccomp_rule_add(ctx, SCMP_ACT_NOTIFY, SCMP_SYS(getppid), 0, NULL);
-+ if (rc)
-+ goto out;
-+
-+ rc = seccomp_load(ctx);
-+ if (rc < 0)
-+ goto out;
-+
-+ rc = seccomp_notify_fd(ctx);
-+ if (rc < 0)
-+ goto out;
-+ if (rc != fd) {
-+ rc = -EFAULT;
-+ goto out;
-+ } else
-+ rc = 0;
-+
- out:
- if (fd >= 0)
- close(fd);
-diff --git a/tests/51-live-user_notification.py b/tests/51-live-user_notification.py
-index 0d81f5e..3449c44 100755
---- a/tests/51-live-user_notification.py
-+++ b/tests/51-live-user_notification.py
-@@ -52,6 +52,10 @@ def test():
- raise RuntimeError("Child process error")
- if os.WEXITSTATUS(rc) != 0:
- raise RuntimeError("Child process error")
-+ f.reset(ALLOW)
-+ f.add_rule(NOTIFY, "getppid")
-+ f.load()
-+ # no easy way to check the notification fd here
- quit(160)
-
- test()
---
-2.26.2
-
diff --git a/0102-system-change-our-notification-fd-handling.patch b/0102-system-change-our-notification-fd-handling.patch
deleted file mode 100644
index 3ffe19e..0000000
--- a/0102-system-change-our-notification-fd-handling.patch
+++ /dev/null
@@ -1,93 +0,0 @@
-From 5201e324d2025b1febbade9bb90d6e405b92a14c Mon Sep 17 00:00:00 2001
-From: Paul Moore <paul(a)paul-moore.com>
-Date: Tue, 4 Aug 2020 10:52:08 -0400
-Subject: [PATCH 102/102] system: change our notification fd handling
-
-This commit changes how we handle the notification fd by only
-requesting it via _NEW_LISTENER if the filter has a _NOTIFY action
-in it. We also augment the seccomp_reset(NULL, ...) behavior so
-that it closes the notification fd before resetting the global
-state; applications that need to keep their notification fd open
-across a call to seccomp_reset(NULL, ...) can simply dup() it.
-Although one would have to wonder why the application would be
-calling seccomp_reset(NULL, ...) in that case.
-
-Signed-off-by: Paul Moore <paul(a)paul-moore.com>
----
- doc/man/man3/seccomp_init.3 | 6 ++++--
- src/system.c | 18 +++++++++++++++---
- 2 files changed, 19 insertions(+), 5 deletions(-)
-
-diff --git a/doc/man/man3/seccomp_init.3 b/doc/man/man3/seccomp_init.3
-index 87520cd..7881c35 100644
---- a/doc/man/man3/seccomp_init.3
-+++ b/doc/man/man3/seccomp_init.3
-@@ -38,8 +38,10 @@ and can only be called after a call to
- .BR seccomp_init ()
- has succeeded. If
- .BR seccomp_reset ()
--is called with a NULL filter, it resets the library's global task state;
--normally this is not needed, but it may be required to continue using the
-+is called with a NULL filter, it resets the library's global task state,
-+including any notification file descriptors retrieved by
-+.BR seccomp_notify_fd(3) .
-+Normally this is not needed, but it may be required to continue using the
- library after a
- .BR fork ()
- or
-diff --git a/src/system.c b/src/system.c
-index 3b43b2a..c646c65 100644
---- a/src/system.c
-+++ b/src/system.c
-@@ -84,7 +84,11 @@ static struct task_state state = {
- void sys_reset_state(void)
- {
- state.nr_seccomp = -1;
-+
-+ if (state.notify_fd > 0)
-+ close(state.notify_fd);
- state.notify_fd = -1;
-+
- state.sup_syscall = -1;
- state.sup_flag_tsync = -1;
- state.sup_flag_log = -1;
-@@ -353,6 +357,7 @@ int sys_filter_load(struct db_filter_col *col, bool rawrc)
- {
- int rc;
- bool tsync_notify;
-+ bool listener_req;
- struct bpf_program *prgm = NULL;
-
- rc = gen_bpf_generate(col, &prgm);
-@@ -367,6 +372,8 @@ int sys_filter_load(struct db_filter_col *col, bool rawrc)
- }
-
- tsync_notify = state.sup_flag_tsync_esrch > 0 && state.notify_fd == -1;
-+ listener_req = state.sup_user_notif > 0 && \
-+ col->notify_used && state.notify_fd == -1;
-
- /* load the filter into the kernel */
- if (sys_chk_seccomp_syscall() == 1) {
-@@ -375,11 +382,16 @@ int sys_filter_load(struct db_filter_col *col, bool rawrc)
- if (col->attr.tsync_enable)
- flgs |= SECCOMP_FILTER_FLAG_TSYNC | \
- SECCOMP_FILTER_FLAG_TSYNC_ESRCH;
-- if (state.sup_user_notif > 0)
-+ if (listener_req)
- flgs |= SECCOMP_FILTER_FLAG_NEW_LISTENER;
-- } else if (col->attr.tsync_enable)
-+ } else if (col->attr.tsync_enable) {
-+ if (listener_req) {
-+ /* NOTE: we _should_ catch this in db.c */
-+ rc = -EFAULT;
-+ goto filter_load_out;
-+ }
- flgs |= SECCOMP_FILTER_FLAG_TSYNC;
-- else if (state.sup_user_notif > 0 && state.notify_fd == -1)
-+ } else if (listener_req)
- flgs |= SECCOMP_FILTER_FLAG_NEW_LISTENER;
- if (col->attr.log_enable)
- flgs |= SECCOMP_FILTER_FLAG_LOG;
---
-2.26.2
-
commit 529c95767dc1b6ca1e73c4bf8c5c8b2734d2e0c8
Author: Debarshi Ray <debarshir(a)gnome.org>
Date: Wed Nov 3 11:36:05 2021 +0100
New upstream version (#1900097)
diff --git a/.gitignore b/.gitignore
index 550a712..54770ea 100644
--- a/.gitignore
+++ b/.gitignore
@@ -15,3 +15,4 @@
/libseccomp-2.4.1.tar.gz
/libseccomp-2.4.2.tar.gz
/libseccomp-2.5.0.tar.gz
+/libseccomp-2.5.1.tar.gz
diff --git a/libseccomp.spec b/libseccomp.spec
index c070fde..04e7081 100644
--- a/libseccomp.spec
+++ b/libseccomp.spec
@@ -1,19 +1,11 @@
Name: libseccomp
-Version: 2.5.0
-Release: 5%{?dist}
+Version: 2.5.1
+Release: 1%{?dist}
Summary: Enhanced seccomp library
License: LGPLv2
URL: https://github.com/seccomp/libseccomp
Source0: %{url}/releases/download/v%{version}/%{name}-%{version}.tar.gz
-# Backports from upstream
-
-# Patches pending merge
-## From: https://github.com/seccomp/libseccomp/pull/280
-## Reference: https://bugzilla.redhat.com/show_bug.cgi?id=1865802
-Patch0101: 0101-all-only-request-the-userspace-notification-fd-once.patch
-Patch0102: 0102-system-change-our-notification-fd-handling.patch
-
BuildRequires: gcc
BuildRequires: gperf
BuildRequires: make
@@ -70,11 +62,6 @@ mkdir -p %{buildroot}/%{_mandir}
rm -f %{buildroot}/%{_libdir}/libseccomp.la
%check
-# Tests 36 and 37 fail on the build systems for the arches below and I'm not
-# able to reproduce the failure so just skip the tests for now
-%ifarch i686 ppc64le s390x
-rm -f tests/36-sim-ipc_syscalls.tests tests/37-sim-ipc_syscalls_be.tests
-%endif
%make_build check
@@ -96,6 +83,9 @@ rm -f tests/36-sim-ipc_syscalls.tests tests/37-sim-ipc_syscalls_be.tests
%{_libdir}/libseccomp.a
%changelog
+* Wed Nov 03 2021 Debarshi Ray <rishi(a)fedoraproject.org> - 2.5.1-1
+- New upstream version (#1900097)
+
* Thu Jul 22 2021 Fedora Release Engineering <releng(a)fedoraproject.org> - 2.5.0-5
- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild
diff --git a/sources b/sources
index 99aebbc..27d4059 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-SHA512 (libseccomp-2.5.0.tar.gz) = 00ef5aeb4db8dafb546ae680b2d6d9b6aeed008df805d0f28f9dd15c074ff6ea7a5e5131ab503825b8011c59aa23046baedd5849ca040aa73352f43ab2d602ae
+SHA512 (libseccomp-2.5.1.tar.gz) = 2be80a6323f9282dbeae8791724e5778b32e2382b2a3d1b0f77366371ec4072ea28128204f675cce101c091c0420d12c497e1a9ccbb7dc5bcbf61bfd777160af
commit 8f99b157cad88bbefa84f6e31f9b111ed1c93972
Author: Debarshi Ray <debarshir(a)gnome.org>
Date: Wed Nov 3 11:36:39 2021 +0100
Silence macro-in-%changelog
diff --git a/libseccomp.spec b/libseccomp.spec
index 564d600..c070fde 100644
--- a/libseccomp.spec
+++ b/libseccomp.spec
@@ -130,7 +130,7 @@ rm -f tests/36-sim-ipc_syscalls.tests tests/37-sim-ipc_syscalls_be.tests
* Thu Mar 14 2019 Paul Moore <paul(a)paul-moore.com> - 2.4.0-0
- New upstream version
-- Added a hack to workaround test failures (see %check above)
+- Added a hack to workaround test failures (see %%check above)
* Fri Feb 01 2019 Fedora Release Engineering <releng(a)fedoraproject.org> - 2.3.3-5
- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild
commit bc0c71882c0d2b045f1e8ab65290a46a3e378e80
Author: Fedora Release Engineering <releng(a)fedoraproject.org>
Date: Thu Jul 22 12:21:02 2021 +0000
- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng(a)fedoraproject.org>
diff --git a/libseccomp.spec b/libseccomp.spec
index 8c4246c..564d600 100644
--- a/libseccomp.spec
+++ b/libseccomp.spec
@@ -1,6 +1,6 @@
Name: libseccomp
Version: 2.5.0
-Release: 4%{?dist}
+Release: 5%{?dist}
Summary: Enhanced seccomp library
License: LGPLv2
URL: https://github.com/seccomp/libseccomp
@@ -96,6 +96,9 @@ rm -f tests/36-sim-ipc_syscalls.tests tests/37-sim-ipc_syscalls_be.tests
%{_libdir}/libseccomp.a
%changelog
+* Thu Jul 22 2021 Fedora Release Engineering <releng(a)fedoraproject.org> - 2.5.0-5
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild
+
* Tue Jan 26 2021 Fedora Release Engineering <releng(a)fedoraproject.org> - 2.5.0-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild
2 years, 6 months
Architecture specific change in rpms/libseccomp.git
by githook-noreply@fedoraproject.org
The package rpms/libseccomp.git has added or updated architecture specific content in its
spec file (ExclusiveArch/ExcludeArch or %ifarch/%ifnarch) in commit(s):
https://src.fedoraproject.org/cgit/rpms/libseccomp.git/commit/?id=529c957....
Change:
-%ifarch i686 ppc64le s390x
Thanks.
Full change:
============
commit 5e8deb83a0c85b2d8a2400cd467e3949f8ef3de4
Author: Debarshi Ray <debarshir(a)gnome.org>
Date: Wed Nov 3 12:06:12 2021 +0100
New upstream version (#1900097)
diff --git a/.gitignore b/.gitignore
index 54770ea..6c46772 100644
--- a/.gitignore
+++ b/.gitignore
@@ -16,3 +16,4 @@
/libseccomp-2.4.2.tar.gz
/libseccomp-2.5.0.tar.gz
/libseccomp-2.5.1.tar.gz
+/libseccomp-2.5.2.tar.gz
diff --git a/libseccomp.spec b/libseccomp.spec
index 04e7081..7c13843 100644
--- a/libseccomp.spec
+++ b/libseccomp.spec
@@ -1,5 +1,5 @@
Name: libseccomp
-Version: 2.5.1
+Version: 2.5.2
Release: 1%{?dist}
Summary: Enhanced seccomp library
License: LGPLv2
@@ -83,6 +83,9 @@ rm -f %{buildroot}/%{_libdir}/libseccomp.la
%{_libdir}/libseccomp.a
%changelog
+* Wed Nov 03 2021 Debarshi Ray <rishi(a)fedoraproject.org> - 2.5.2-1
+- New upstream version (#1900097)
+
* Wed Nov 03 2021 Debarshi Ray <rishi(a)fedoraproject.org> - 2.5.1-1
- New upstream version (#1900097)
diff --git a/sources b/sources
index 27d4059..936b0f5 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-SHA512 (libseccomp-2.5.1.tar.gz) = 2be80a6323f9282dbeae8791724e5778b32e2382b2a3d1b0f77366371ec4072ea28128204f675cce101c091c0420d12c497e1a9ccbb7dc5bcbf61bfd777160af
+SHA512 (libseccomp-2.5.2.tar.gz) = b2a95152cb274d6b35753596fd825406dae20c4a48b2f4076f835f977ecf324de38a3fe02e789dc20b49ecf6b4eb67f03e7733e92d40f5e20f25874307f1c2ac
commit 43b0412403c480995b6da3ee45cf2744830f6251
Author: Debarshi Ray <debarshir(a)gnome.org>
Date: Wed Nov 3 12:06:52 2021 +0100
Drop upstreamed patches
Fallout from 529c95767dc1b6ca1e73c4bf8c5c8b2734d2e0c8
diff --git a/0101-all-only-request-the-userspace-notification-fd-once.patch b/0101-all-only-request-the-userspace-notification-fd-once.patch
deleted file mode 100644
index 59f412e..0000000
--- a/0101-all-only-request-the-userspace-notification-fd-once.patch
+++ /dev/null
@@ -1,631 +0,0 @@
-From bbf4ae95742662e641e0a456951b912024433435 Mon Sep 17 00:00:00 2001
-From: Paul Moore <paul(a)paul-moore.com>
-Date: Sun, 26 Jul 2020 11:01:49 -0400
-Subject: [PATCH 101/102] all: only request the userspace notification fd once
-
-It turns out that requesting the seccomp userspace notifcation fd
-more than once is a bad thing which causes the kernel to complain
-(rightfully so for a variety of reasons). Unfortunately as we were
-always requesting the notification fd whenever possible this results
-in problems at filter load time.
-
-Our solution is to move the notification fd out of the filter context
-and into the global task context, using a newly created task_state
-structure. This allows us to store, and retrieve the notification
-outside the scope of an individual filter context. It also provides
-some implementation improvements by giving us a convenient place to
-stash all of the API level related support variables. We also extend
-the seccomp_reset() API call to reset this internal global state when
-passed a NULL filter context.
-
-There is one potential case which we don't currently handle well:
-threads. At the moment libseccomp is thread ignorant, and that works
-well as the only global state up to this point was the currently
-supported API level information which was common to all threads in a
-process. Unfortunately, it appears that the notification fd need not
-be common to all threads in a process, yet this patch treats it as if
-it is common. I suspect this is a very unusual use case so I decided
-to keep this patch simple and ignore this case, but in the future if
-we need to support this properly we should be able to do so without
-API changes by keeping an internal list of notification fds indexed
-by gettid(2).
-
-This fixes the GitHub issue below:
-* https://github.com/seccomp/libseccomp/issues/273
-
-Reported-by: Tobias Stoeckmann <tobias(a)stoeckmann.org>
-Acked-by: Tom Hromatka <tom.hromatka(a)oracle.com>
-Signed-off-by: Paul Moore <paul(a)paul-moore.com>
----
- doc/man/man3/seccomp_init.3 | 10 +-
- doc/man/man3/seccomp_notify_alloc.3 | 3 +-
- src/api.c | 19 ++-
- src/db.c | 1 -
- src/db.h | 3 +-
- src/system.c | 204 ++++++++++++++++++----------
- src/system.h | 3 +
- tests/11-basic-basic_errors.c | 9 +-
- tests/51-live-user_notification.c | 21 +++
- tests/51-live-user_notification.py | 4 +
- 10 files changed, 187 insertions(+), 90 deletions(-)
-
-diff --git a/doc/man/man3/seccomp_init.3 b/doc/man/man3/seccomp_init.3
-index 3ab68fe..87520cd 100644
---- a/doc/man/man3/seccomp_init.3
-+++ b/doc/man/man3/seccomp_init.3
-@@ -36,7 +36,15 @@ The
- function releases the existing filter context state before reinitializing it
- and can only be called after a call to
- .BR seccomp_init ()
--has succeeded.
-+has succeeded. If
-+.BR seccomp_reset ()
-+is called with a NULL filter, it resets the library's global task state;
-+normally this is not needed, but it may be required to continue using the
-+library after a
-+.BR fork ()
-+or
-+.BR clone ()
-+call to ensure the API level and user notification state is properly reset.
- .P
- When the caller is finished configuring the seccomp filter and has loaded it
- into the kernel, the caller should call
-diff --git a/doc/man/man3/seccomp_notify_alloc.3 b/doc/man/man3/seccomp_notify_alloc.3
-index 50c8970..cb1c048 100644
---- a/doc/man/man3/seccomp_notify_alloc.3
-+++ b/doc/man/man3/seccomp_notify_alloc.3
-@@ -59,7 +59,8 @@ returns the notification fd of a filter after it has been loaded.
- .\" //////////////////////////////////////////////////////////////////////////
- The
- .BR seccomp_notify_fd ()
--returns the notification fd of the loaded filter.
-+returns the notification fd of the loaded filter, -1 if a notification fd has
-+not yet been created, and -EINVAL if the filter context is invalid.
- .P
- The
- .BR seccomp_notify_id_valid ()
-diff --git a/src/api.c b/src/api.c
-index 00975ad..5cec088 100644
---- a/src/api.c
-+++ b/src/api.c
-@@ -301,10 +301,18 @@ API int seccomp_reset(scmp_filter_ctx ctx, uint32_t def_action)
- {
- struct db_filter_col *col = (struct db_filter_col *)ctx;
-
-- /* use a NULL filter collection here since we are resetting it */
-- if (ctx == NULL || db_col_action_valid(NULL, def_action) < 0)
-+ /* a NULL filter context indicates we are resetting the global state */
-+ if (ctx == NULL) {
-+ /* reset the global state and redetermine the api level */
-+ sys_reset_state();
-+ _seccomp_api_update();
-+ return _rc_filter(0);
-+ }
-+ /* ensure the default action is valid */
-+ if (db_col_action_valid(NULL, def_action) < 0)
- return _rc_filter(-EINVAL);
-
-+ /* reset the filter */
- return _rc_filter(db_col_reset(col, def_action));
- }
-
-@@ -675,16 +683,17 @@ API int seccomp_notify_id_valid(int fd, uint64_t id)
- /* NOTE - function header comment in include/seccomp.h */
- API int seccomp_notify_fd(const scmp_filter_ctx ctx)
- {
-- struct db_filter_col *col;
-+ /* NOTE: for historical reasons, and possibly future use, we require a
-+ * valid filter context even though we don't actual use it here; the
-+ * api update is also not strictly necessary, but keep it for now */
-
- /* force a runtime api level detection */
- _seccomp_api_update();
-
- if (_ctx_valid(ctx))
- return _rc_filter(-EINVAL);
-- col = (struct db_filter_col *)ctx;
-
-- return _rc_filter(col->notify_fd);
-+ return _rc_filter(sys_notify_fd());
- }
-
- /* NOTE - function header comment in include/seccomp.h */
-diff --git a/src/db.c b/src/db.c
-index 4a87ea3..836171a 100644
---- a/src/db.c
-+++ b/src/db.c
-@@ -1057,7 +1057,6 @@ int db_col_reset(struct db_filter_col *col, uint32_t def_action)
- if (col->filters)
- free(col->filters);
- col->filters = NULL;
-- col->notify_fd = -1;
-
- /* set the endianess to undefined */
- col->endian = 0;
-diff --git a/src/db.h b/src/db.h
-index b96b104..765c607 100644
---- a/src/db.h
-+++ b/src/db.h
-@@ -160,8 +160,7 @@ struct db_filter_col {
- /* transaction snapshots */
- struct db_filter_snap *snapshots;
-
-- /* notification fd that was returned from seccomp() */
-- int notify_fd;
-+ /* userspace notification */
- bool notify_used;
- };
-
-diff --git a/src/system.c b/src/system.c
-index 6cdfc16..3b43b2a 100644
---- a/src/system.c
-+++ b/src/system.c
-@@ -40,16 +40,61 @@
- * our next release we may have to enable the allowlist */
- #define SYSCALL_ALLOWLIST_ENABLE 0
-
--static int _nr_seccomp = -1;
--static int _support_seccomp_syscall = -1;
--static int _support_seccomp_flag_tsync = -1;
--static int _support_seccomp_flag_log = -1;
--static int _support_seccomp_action_log = -1;
--static int _support_seccomp_kill_process = -1;
--static int _support_seccomp_flag_spec_allow = -1;
--static int _support_seccomp_flag_new_listener = -1;
--static int _support_seccomp_user_notif = -1;
--static int _support_seccomp_flag_tsync_esrch = -1;
-+/* task global state */
-+struct task_state {
-+ /* seccomp(2) syscall */
-+ int nr_seccomp;
-+
-+ /* userspace notification fd */
-+ int notify_fd;
-+
-+ /* runtime support flags */
-+ int sup_syscall;
-+ int sup_flag_tsync;
-+ int sup_flag_log;
-+ int sup_action_log;
-+ int sup_kill_process;
-+ int sup_flag_spec_allow;
-+ int sup_flag_new_listener;
-+ int sup_user_notif;
-+ int sup_flag_tsync_esrch;
-+};
-+static struct task_state state = {
-+ .nr_seccomp = -1,
-+
-+ .notify_fd = -1,
-+
-+ .sup_syscall = -1,
-+ .sup_flag_tsync = -1,
-+ .sup_flag_log = -1,
-+ .sup_action_log = -1,
-+ .sup_kill_process = -1,
-+ .sup_flag_spec_allow = -1,
-+ .sup_flag_new_listener = -1,
-+ .sup_user_notif = -1,
-+ .sup_flag_tsync_esrch = -1,
-+};
-+
-+/**
-+ * Reset the task state
-+ *
-+ * This function fully resets the library's global "system task state".
-+ *
-+ */
-+void sys_reset_state(void)
-+{
-+ state.nr_seccomp = -1;
-+ state.notify_fd = -1;
-+ state.sup_syscall = -1;
-+ state.sup_flag_tsync = -1;
-+ state.sup_flag_log = -1;
-+ state.sup_action_log = -1;
-+ state.sup_kill_process = -1;
-+ state.sup_flag_spec_allow = -1;
-+ state.sup_flag_new_listener = -1;
-+ state.sup_user_notif = -1;
-+ state.sup_flag_tsync_esrch = -1;
-+}
-
- /**
- * Check to see if the seccomp() syscall is supported
-@@ -68,8 +113,8 @@ int sys_chk_seccomp_syscall(void)
- /* NOTE: it is reasonably safe to assume that we should be able to call
- * seccomp() when the caller first starts, but we can't rely on
- * it later so we need to cache our findings for use later */
-- if (_support_seccomp_syscall >= 0)
-- return _support_seccomp_syscall;
-+ if (state.sup_syscall >= 0)
-+ return state.sup_syscall;
-
- #if SYSCALL_ALLOWLIST_ENABLE
- /* architecture allowlist */
-@@ -100,11 +145,11 @@ int sys_chk_seccomp_syscall(void)
- goto supported;
-
- unsupported:
-- _support_seccomp_syscall = 0;
-+ state.sup_syscall = 0;
- return 0;
- supported:
-- _nr_seccomp = nr_seccomp;
-- _support_seccomp_syscall = 1;
-+ state.nr_seccomp = nr_seccomp;
-+ state.sup_syscall = 1;
- return 1;
- }
-
-@@ -118,7 +163,7 @@ supported:
- */
- void sys_set_seccomp_syscall(bool enable)
- {
-- _support_seccomp_syscall = (enable ? 1 : 0);
-+ state.sup_syscall = (enable ? 1 : 0);
- }
-
- /**
-@@ -132,16 +177,16 @@ void sys_set_seccomp_syscall(bool enable)
- int sys_chk_seccomp_action(uint32_t action)
- {
- if (action == SCMP_ACT_KILL_PROCESS) {
-- if (_support_seccomp_kill_process < 0) {
-+ if (state.sup_kill_process < 0) {
- if (sys_chk_seccomp_syscall() == 1 &&
-- syscall(_nr_seccomp, SECCOMP_GET_ACTION_AVAIL, 0,
-- &action) == 0)
-- _support_seccomp_kill_process = 1;
-+ syscall(state.nr_seccomp,
-+ SECCOMP_GET_ACTION_AVAIL, 0, &action) == 0)
-+ state.sup_kill_process = 1;
- else
-- _support_seccomp_kill_process = 0;
-+ state.sup_kill_process = 0;
- }
-
-- return _support_seccomp_kill_process;
-+ return state.sup_kill_process;
- } else if (action == SCMP_ACT_KILL_THREAD) {
- return 1;
- } else if (action == SCMP_ACT_TRAP) {
-@@ -152,30 +197,30 @@ int sys_chk_seccomp_action(uint32_t action)
- } else if (action == SCMP_ACT_TRACE(action & 0x0000ffff)) {
- return 1;
- } else if (action == SCMP_ACT_LOG) {
-- if (_support_seccomp_action_log < 0) {
-+ if (state.sup_action_log < 0) {
- if (sys_chk_seccomp_syscall() == 1 &&
-- syscall(_nr_seccomp, SECCOMP_GET_ACTION_AVAIL, 0,
-- &action) == 0)
-- _support_seccomp_action_log = 1;
-+ syscall(state.nr_seccomp,
-+ SECCOMP_GET_ACTION_AVAIL, 0, &action) == 0)
-+ state.sup_action_log = 1;
- else
-- _support_seccomp_action_log = 0;
-+ state.sup_action_log = 0;
- }
-
-- return _support_seccomp_action_log;
-+ return state.sup_action_log;
- } else if (action == SCMP_ACT_ALLOW) {
- return 1;
- } else if (action == SCMP_ACT_NOTIFY) {
-- if (_support_seccomp_user_notif < 0) {
-+ if (state.sup_user_notif < 0) {
- struct seccomp_notif_sizes sizes;
- if (sys_chk_seccomp_syscall() == 1 &&
-- syscall(_nr_seccomp, SECCOMP_GET_NOTIF_SIZES, 0,
-- &sizes) == 0)
-- _support_seccomp_user_notif = 1;
-+ syscall(state.nr_seccomp,
-+ SECCOMP_GET_NOTIF_SIZES, 0, &sizes) == 0)
-+ state.sup_user_notif = 1;
- else
-- _support_seccomp_user_notif = 0;
-+ state.sup_user_notif = 0;
- }
-
-- return _support_seccomp_user_notif;
-+ return state.sup_user_notif;
- }
-
- return 0;
-@@ -193,13 +238,13 @@ void sys_set_seccomp_action(uint32_t action, bool enable)
- {
- switch (action) {
- case SCMP_ACT_LOG:
-- _support_seccomp_action_log = (enable ? 1 : 0);
-+ state.sup_action_log = (enable ? 1 : 0);
- break;
- case SCMP_ACT_KILL_PROCESS:
-- _support_seccomp_kill_process = (enable ? 1 : 0);
-+ state.sup_kill_process = (enable ? 1 : 0);
- break;
- case SCMP_ACT_NOTIFY:
-- _support_seccomp_user_notif = (enable ? 1 : 0);
-+ state.sup_user_notif = (enable ? 1 : 0);
- break;
- }
- }
-@@ -212,13 +257,14 @@ void sys_set_seccomp_action(uint32_t action, bool enable)
- * Return one if the flag is supported, zero otherwise.
- *
- */
--static int _sys_chk_seccomp_flag_kernel(int flag)
-+static int _sys_chk_flag_kernel(int flag)
- {
- /* this is an invalid seccomp(2) call because the last argument
- * is NULL, but depending on the errno value of EFAULT we can
- * guess if the filter flag is supported or not */
- if (sys_chk_seccomp_syscall() == 1 &&
-- syscall(_nr_seccomp, SECCOMP_SET_MODE_FILTER, flag, NULL) == -1 &&
-+ syscall(state.nr_seccomp,
-+ SECCOMP_SET_MODE_FILTER, flag, NULL) == -1 &&
- errno == EFAULT)
- return 1;
-
-@@ -238,29 +284,25 @@ int sys_chk_seccomp_flag(int flag)
- {
- switch (flag) {
- case SECCOMP_FILTER_FLAG_TSYNC:
-- if (_support_seccomp_flag_tsync < 0)
-- _support_seccomp_flag_tsync = _sys_chk_seccomp_flag_kernel(flag);
--
-- return _support_seccomp_flag_tsync;
-+ if (state.sup_flag_tsync < 0)
-+ state.sup_flag_tsync = _sys_chk_flag_kernel(flag);
-+ return state.sup_flag_tsync;
- case SECCOMP_FILTER_FLAG_LOG:
-- if (_support_seccomp_flag_log < 0)
-- _support_seccomp_flag_log = _sys_chk_seccomp_flag_kernel(flag);
--
-- return _support_seccomp_flag_log;
-+ if (state.sup_flag_log < 0)
-+ state.sup_flag_log = _sys_chk_flag_kernel(flag);
-+ return state.sup_flag_log;
- case SECCOMP_FILTER_FLAG_SPEC_ALLOW:
-- if (_support_seccomp_flag_spec_allow < 0)
-- _support_seccomp_flag_spec_allow = _sys_chk_seccomp_flag_kernel(flag);
--
-- return _support_seccomp_flag_spec_allow;
-+ if (state.sup_flag_spec_allow < 0)
-+ state.sup_flag_spec_allow = _sys_chk_flag_kernel(flag);
-+ return state.sup_flag_spec_allow;
- case SECCOMP_FILTER_FLAG_NEW_LISTENER:
-- if (_support_seccomp_flag_new_listener < 0)
-- _support_seccomp_flag_new_listener = _sys_chk_seccomp_flag_kernel(flag);
--
-- return _support_seccomp_flag_new_listener;
-+ if (state.sup_flag_new_listener < 0)
-+ state.sup_flag_new_listener = _sys_chk_flag_kernel(flag);
-+ return state.sup_flag_new_listener;
- case SECCOMP_FILTER_FLAG_TSYNC_ESRCH:
-- if (_support_seccomp_flag_tsync_esrch < 0)
-- _support_seccomp_flag_tsync_esrch = _sys_chk_seccomp_flag_kernel(flag);
-- return _support_seccomp_flag_tsync_esrch;
-+ if (state.sup_flag_tsync_esrch < 0)
-+ state.sup_flag_tsync_esrch = _sys_chk_flag_kernel(flag);
-+ return state.sup_flag_tsync_esrch;
- }
-
- return -EOPNOTSUPP;
-@@ -279,19 +321,19 @@ void sys_set_seccomp_flag(int flag, bool enable)
- {
- switch (flag) {
- case SECCOMP_FILTER_FLAG_TSYNC:
-- _support_seccomp_flag_tsync = (enable ? 1 : 0);
-+ state.sup_flag_tsync = (enable ? 1 : 0);
- break;
- case SECCOMP_FILTER_FLAG_LOG:
-- _support_seccomp_flag_log = (enable ? 1 : 0);
-+ state.sup_flag_log = (enable ? 1 : 0);
- break;
- case SECCOMP_FILTER_FLAG_SPEC_ALLOW:
-- _support_seccomp_flag_spec_allow = (enable ? 1 : 0);
-+ state.sup_flag_spec_allow = (enable ? 1 : 0);
- break;
- case SECCOMP_FILTER_FLAG_NEW_LISTENER:
-- _support_seccomp_flag_new_listener = (enable ? 1 : 0);
-+ state.sup_flag_new_listener = (enable ? 1 : 0);
- break;
- case SECCOMP_FILTER_FLAG_TSYNC_ESRCH:
-- _support_seccomp_flag_tsync_esrch = (enable ? 1 : 0);
-+ state.sup_flag_tsync_esrch = (enable ? 1 : 0);
- break;
- }
- }
-@@ -324,7 +366,7 @@ int sys_filter_load(struct db_filter_col *col, bool rawrc)
- goto filter_load_out;
- }
-
-- tsync_notify = (_support_seccomp_flag_tsync_esrch > 0);
-+ tsync_notify = state.sup_flag_tsync_esrch > 0 && state.notify_fd == -1;
-
- /* load the filter into the kernel */
- if (sys_chk_seccomp_syscall() == 1) {
-@@ -333,28 +375,29 @@ int sys_filter_load(struct db_filter_col *col, bool rawrc)
- if (col->attr.tsync_enable)
- flgs |= SECCOMP_FILTER_FLAG_TSYNC | \
- SECCOMP_FILTER_FLAG_TSYNC_ESRCH;
-- if (_support_seccomp_user_notif > 0)
-+ if (state.sup_user_notif > 0)
- flgs |= SECCOMP_FILTER_FLAG_NEW_LISTENER;
- } else if (col->attr.tsync_enable)
- flgs |= SECCOMP_FILTER_FLAG_TSYNC;
-- else if (_support_seccomp_user_notif > 0)
-+ else if (state.sup_user_notif > 0 && state.notify_fd == -1)
- flgs |= SECCOMP_FILTER_FLAG_NEW_LISTENER;
- if (col->attr.log_enable)
- flgs |= SECCOMP_FILTER_FLAG_LOG;
- if (col->attr.spec_allow)
- flgs |= SECCOMP_FILTER_FLAG_SPEC_ALLOW;
-- rc = syscall(_nr_seccomp, SECCOMP_SET_MODE_FILTER, flgs, prgm);
-+ rc = syscall(state.nr_seccomp,
-+ SECCOMP_SET_MODE_FILTER, flgs, prgm);
- if (tsync_notify && rc > 0) {
- /* return 0 on NEW_LISTENER success, but save the fd */
-- col->notify_fd = rc;
-+ state.notify_fd = rc;
- rc = 0;
- } else if (rc > 0 && col->attr.tsync_enable) {
- /* always return -ESRCH if we fail to sync threads */
- errno = ESRCH;
- rc = -errno;
-- } else if (rc > 0 && _support_seccomp_user_notif > 0) {
-+ } else if (rc > 0 && state.sup_user_notif > 0) {
- /* return 0 on NEW_LISTENER success, but save the fd */
-- col->notify_fd = rc;
-+ state.notify_fd = rc;
- rc = 0;
- }
- } else
-@@ -370,6 +413,19 @@ filter_load_out:
- return rc;
- }
-
-+/**
-+ * Return the userspace notification fd
-+ *
-+ * This function returns the userspace notification fd from
-+ * SECCOMP_FILTER_FLAG_NEW_LISTENER. If the notification fd has not yet been
-+ * set, or an error has occurred, -1 is returned.
-+ *
-+ */
-+int sys_notify_fd(void)
-+{
-+ return state.notify_fd;
-+}
-+
- /**
- * Allocate a pair of notification request/response structures
- * @param req the request location
-@@ -386,7 +442,7 @@ int sys_notify_alloc(struct seccomp_notif **req,
- int rc;
- static struct seccomp_notif_sizes sizes = { 0, 0, 0 };
-
-- if (_support_seccomp_syscall <= 0)
-+ if (state.sup_syscall <= 0)
- return -EOPNOTSUPP;
-
- if (sizes.seccomp_notif == 0 && sizes.seccomp_notif_resp == 0) {
-@@ -427,7 +483,7 @@ int sys_notify_alloc(struct seccomp_notif **req,
- */
- int sys_notify_receive(int fd, struct seccomp_notif *req)
- {
-- if (_support_seccomp_user_notif <= 0)
-+ if (state.sup_user_notif <= 0)
- return -EOPNOTSUPP;
-
- if (ioctl(fd, SECCOMP_IOCTL_NOTIF_RECV, req) < 0)
-@@ -448,7 +504,7 @@ int sys_notify_receive(int fd, struct seccomp_notif *req)
- */
- int sys_notify_respond(int fd, struct seccomp_notif_resp *resp)
- {
-- if (_support_seccomp_user_notif <= 0)
-+ if (state.sup_user_notif <= 0)
- return -EOPNOTSUPP;
-
- if (ioctl(fd, SECCOMP_IOCTL_NOTIF_SEND, resp) < 0)
-@@ -467,7 +523,7 @@ int sys_notify_respond(int fd, struct seccomp_notif_resp *resp)
- */
- int sys_notify_id_valid(int fd, uint64_t id)
- {
-- if (_support_seccomp_user_notif <= 0)
-+ if (state.sup_user_notif <= 0)
- return -EOPNOTSUPP;
-
- if (ioctl(fd, SECCOMP_IOCTL_NOTIF_ID_VALID, &id) < 0)
-diff --git a/src/system.h b/src/system.h
-index 133f9b1..096f3ca 100644
---- a/src/system.h
-+++ b/src/system.h
-@@ -182,6 +182,8 @@ struct seccomp_notif_resp {
- #define SECCOMP_IOCTL_NOTIF_ID_VALID SECCOMP_IOR(2, __u64)
- #endif /* SECCOMP_RET_USER_NOTIF */
-
-+void sys_reset_state(void);
-+
- int sys_chk_seccomp_syscall(void);
- void sys_set_seccomp_syscall(bool enable);
-
-@@ -193,6 +195,7 @@ void sys_set_seccomp_flag(int flag, bool enable);
-
- int sys_filter_load(struct db_filter_col *col, bool rawrc);
-
-+int sys_notify_fd(void);
- int sys_notify_alloc(struct seccomp_notif **req,
- struct seccomp_notif_resp **resp);
- int sys_notify_receive(int fd, struct seccomp_notif *req);
-diff --git a/tests/11-basic-basic_errors.c b/tests/11-basic-basic_errors.c
-index d3b2256..da059df 100644
---- a/tests/11-basic-basic_errors.c
-+++ b/tests/11-basic-basic_errors.c
-@@ -41,12 +41,9 @@ int main(int argc, char *argv[])
- seccomp_release(ctx);
- ctx = NULL;
-
-- /* seccomp_reset error */
-- rc = seccomp_reset(ctx, SCMP_ACT_KILL + 1);
-- if (rc != -EINVAL)
-- return -1;
-- rc = seccomp_reset(ctx, SCMP_ACT_KILL);
-- if (rc != -EINVAL)
-+ /* ensure that seccomp_reset(NULL, ...) is accepted */
-+ rc = seccomp_reset(NULL, SCMP_ACT_ALLOW);
-+ if (rc != 0)
- return -1;
-
- /* seccomp_load error */
-diff --git a/tests/51-live-user_notification.c b/tests/51-live-user_notification.c
-index de31d2f..a00627b 100644
---- a/tests/51-live-user_notification.c
-+++ b/tests/51-live-user_notification.c
-@@ -98,6 +98,27 @@ int main(int argc, char *argv[])
- goto out;
- }
-
-+ rc = seccomp_reset(ctx, SCMP_ACT_ALLOW);
-+ if (rc < 0)
-+ goto out;
-+
-+ rc = seccomp_rule_add(ctx, SCMP_ACT_NOTIFY, SCMP_SYS(getppid), 0, NULL);
-+ if (rc)
-+ goto out;
-+
-+ rc = seccomp_load(ctx);
-+ if (rc < 0)
-+ goto out;
-+
-+ rc = seccomp_notify_fd(ctx);
-+ if (rc < 0)
-+ goto out;
-+ if (rc != fd) {
-+ rc = -EFAULT;
-+ goto out;
-+ } else
-+ rc = 0;
-+
- out:
- if (fd >= 0)
- close(fd);
-diff --git a/tests/51-live-user_notification.py b/tests/51-live-user_notification.py
-index 0d81f5e..3449c44 100755
---- a/tests/51-live-user_notification.py
-+++ b/tests/51-live-user_notification.py
-@@ -52,6 +52,10 @@ def test():
- raise RuntimeError("Child process error")
- if os.WEXITSTATUS(rc) != 0:
- raise RuntimeError("Child process error")
-+ f.reset(ALLOW)
-+ f.add_rule(NOTIFY, "getppid")
-+ f.load()
-+ # no easy way to check the notification fd here
- quit(160)
-
- test()
---
-2.26.2
-
diff --git a/0102-system-change-our-notification-fd-handling.patch b/0102-system-change-our-notification-fd-handling.patch
deleted file mode 100644
index 3ffe19e..0000000
--- a/0102-system-change-our-notification-fd-handling.patch
+++ /dev/null
@@ -1,93 +0,0 @@
-From 5201e324d2025b1febbade9bb90d6e405b92a14c Mon Sep 17 00:00:00 2001
-From: Paul Moore <paul(a)paul-moore.com>
-Date: Tue, 4 Aug 2020 10:52:08 -0400
-Subject: [PATCH 102/102] system: change our notification fd handling
-
-This commit changes how we handle the notification fd by only
-requesting it via _NEW_LISTENER if the filter has a _NOTIFY action
-in it. We also augment the seccomp_reset(NULL, ...) behavior so
-that it closes the notification fd before resetting the global
-state; applications that need to keep their notification fd open
-across a call to seccomp_reset(NULL, ...) can simply dup() it.
-Although one would have to wonder why the application would be
-calling seccomp_reset(NULL, ...) in that case.
-
-Signed-off-by: Paul Moore <paul(a)paul-moore.com>
----
- doc/man/man3/seccomp_init.3 | 6 ++++--
- src/system.c | 18 +++++++++++++++---
- 2 files changed, 19 insertions(+), 5 deletions(-)
-
-diff --git a/doc/man/man3/seccomp_init.3 b/doc/man/man3/seccomp_init.3
-index 87520cd..7881c35 100644
---- a/doc/man/man3/seccomp_init.3
-+++ b/doc/man/man3/seccomp_init.3
-@@ -38,8 +38,10 @@ and can only be called after a call to
- .BR seccomp_init ()
- has succeeded. If
- .BR seccomp_reset ()
--is called with a NULL filter, it resets the library's global task state;
--normally this is not needed, but it may be required to continue using the
-+is called with a NULL filter, it resets the library's global task state,
-+including any notification file descriptors retrieved by
-+.BR seccomp_notify_fd(3) .
-+Normally this is not needed, but it may be required to continue using the
- library after a
- .BR fork ()
- or
-diff --git a/src/system.c b/src/system.c
-index 3b43b2a..c646c65 100644
---- a/src/system.c
-+++ b/src/system.c
-@@ -84,7 +84,11 @@ static struct task_state state = {
- void sys_reset_state(void)
- {
- state.nr_seccomp = -1;
-+
-+ if (state.notify_fd > 0)
-+ close(state.notify_fd);
- state.notify_fd = -1;
-+
- state.sup_syscall = -1;
- state.sup_flag_tsync = -1;
- state.sup_flag_log = -1;
-@@ -353,6 +357,7 @@ int sys_filter_load(struct db_filter_col *col, bool rawrc)
- {
- int rc;
- bool tsync_notify;
-+ bool listener_req;
- struct bpf_program *prgm = NULL;
-
- rc = gen_bpf_generate(col, &prgm);
-@@ -367,6 +372,8 @@ int sys_filter_load(struct db_filter_col *col, bool rawrc)
- }
-
- tsync_notify = state.sup_flag_tsync_esrch > 0 && state.notify_fd == -1;
-+ listener_req = state.sup_user_notif > 0 && \
-+ col->notify_used && state.notify_fd == -1;
-
- /* load the filter into the kernel */
- if (sys_chk_seccomp_syscall() == 1) {
-@@ -375,11 +382,16 @@ int sys_filter_load(struct db_filter_col *col, bool rawrc)
- if (col->attr.tsync_enable)
- flgs |= SECCOMP_FILTER_FLAG_TSYNC | \
- SECCOMP_FILTER_FLAG_TSYNC_ESRCH;
-- if (state.sup_user_notif > 0)
-+ if (listener_req)
- flgs |= SECCOMP_FILTER_FLAG_NEW_LISTENER;
-- } else if (col->attr.tsync_enable)
-+ } else if (col->attr.tsync_enable) {
-+ if (listener_req) {
-+ /* NOTE: we _should_ catch this in db.c */
-+ rc = -EFAULT;
-+ goto filter_load_out;
-+ }
- flgs |= SECCOMP_FILTER_FLAG_TSYNC;
-- else if (state.sup_user_notif > 0 && state.notify_fd == -1)
-+ } else if (listener_req)
- flgs |= SECCOMP_FILTER_FLAG_NEW_LISTENER;
- if (col->attr.log_enable)
- flgs |= SECCOMP_FILTER_FLAG_LOG;
---
-2.26.2
-
commit 529c95767dc1b6ca1e73c4bf8c5c8b2734d2e0c8
Author: Debarshi Ray <debarshir(a)gnome.org>
Date: Wed Nov 3 11:36:05 2021 +0100
New upstream version (#1900097)
diff --git a/.gitignore b/.gitignore
index 550a712..54770ea 100644
--- a/.gitignore
+++ b/.gitignore
@@ -15,3 +15,4 @@
/libseccomp-2.4.1.tar.gz
/libseccomp-2.4.2.tar.gz
/libseccomp-2.5.0.tar.gz
+/libseccomp-2.5.1.tar.gz
diff --git a/libseccomp.spec b/libseccomp.spec
index c070fde..04e7081 100644
--- a/libseccomp.spec
+++ b/libseccomp.spec
@@ -1,19 +1,11 @@
Name: libseccomp
-Version: 2.5.0
-Release: 5%{?dist}
+Version: 2.5.1
+Release: 1%{?dist}
Summary: Enhanced seccomp library
License: LGPLv2
URL: https://github.com/seccomp/libseccomp
Source0: %{url}/releases/download/v%{version}/%{name}-%{version}.tar.gz
-# Backports from upstream
-
-# Patches pending merge
-## From: https://github.com/seccomp/libseccomp/pull/280
-## Reference: https://bugzilla.redhat.com/show_bug.cgi?id=1865802
-Patch0101: 0101-all-only-request-the-userspace-notification-fd-once.patch
-Patch0102: 0102-system-change-our-notification-fd-handling.patch
-
BuildRequires: gcc
BuildRequires: gperf
BuildRequires: make
@@ -70,11 +62,6 @@ mkdir -p %{buildroot}/%{_mandir}
rm -f %{buildroot}/%{_libdir}/libseccomp.la
%check
-# Tests 36 and 37 fail on the build systems for the arches below and I'm not
-# able to reproduce the failure so just skip the tests for now
-%ifarch i686 ppc64le s390x
-rm -f tests/36-sim-ipc_syscalls.tests tests/37-sim-ipc_syscalls_be.tests
-%endif
%make_build check
@@ -96,6 +83,9 @@ rm -f tests/36-sim-ipc_syscalls.tests tests/37-sim-ipc_syscalls_be.tests
%{_libdir}/libseccomp.a
%changelog
+* Wed Nov 03 2021 Debarshi Ray <rishi(a)fedoraproject.org> - 2.5.1-1
+- New upstream version (#1900097)
+
* Thu Jul 22 2021 Fedora Release Engineering <releng(a)fedoraproject.org> - 2.5.0-5
- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild
diff --git a/sources b/sources
index 99aebbc..27d4059 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-SHA512 (libseccomp-2.5.0.tar.gz) = 00ef5aeb4db8dafb546ae680b2d6d9b6aeed008df805d0f28f9dd15c074ff6ea7a5e5131ab503825b8011c59aa23046baedd5849ca040aa73352f43ab2d602ae
+SHA512 (libseccomp-2.5.1.tar.gz) = 2be80a6323f9282dbeae8791724e5778b32e2382b2a3d1b0f77366371ec4072ea28128204f675cce101c091c0420d12c497e1a9ccbb7dc5bcbf61bfd777160af
commit 8f99b157cad88bbefa84f6e31f9b111ed1c93972
Author: Debarshi Ray <debarshir(a)gnome.org>
Date: Wed Nov 3 11:36:39 2021 +0100
Silence macro-in-%changelog
diff --git a/libseccomp.spec b/libseccomp.spec
index 564d600..c070fde 100644
--- a/libseccomp.spec
+++ b/libseccomp.spec
@@ -130,7 +130,7 @@ rm -f tests/36-sim-ipc_syscalls.tests tests/37-sim-ipc_syscalls_be.tests
* Thu Mar 14 2019 Paul Moore <paul(a)paul-moore.com> - 2.4.0-0
- New upstream version
-- Added a hack to workaround test failures (see %check above)
+- Added a hack to workaround test failures (see %%check above)
* Fri Feb 01 2019 Fedora Release Engineering <releng(a)fedoraproject.org> - 2.3.3-5
- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild
2 years, 6 months
[Report] Packages Restricting Arches
by root
List of packages currently excluding arches (2293)
===========================================
- 0ad
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64 ppc64le
- 90-Second-Portraits
ExclusiveArch: %{arm} %{ix86} x86_64 aarch64 ppc64le
- GoldenCheetah
ExclusiveArch: %{qt5_qtwebengine_arches}
- GtkAda
ExclusiveArch: %{GPRbuild_arches}
- GtkAda3
ExclusiveArch: %{GPRbuild_arches}
- OpenColorIO
ExclusiveArch: x86_64 ppc64le
- OpenImageIO
ExclusiveArch: x86_64 ppc64le
- OpenMolcas
ExclusiveArch: x86_64 aarch64 ppc64le s390x
- PragmARC
ExclusiveArch: %{GPRbuild_arches}
- R-V8
ExclusiveArch: %{nodejs_arches}
- RdRand
ExclusiveArch: %{ix86} x86_64
- RediSearch
ExclusiveArch: x86_64
- SLOF
ExclusiveArch: ppc64le
- YafaRay
ExclusiveArch: %{ix86} x86_64
- aboot
ExclusiveArch: alpha
- accel-config
ExclusiveArch: %{ix86} x86_64
- acpid
ExclusiveArch: ia64 x86_64 %{ix86} %{arm} aarch64
- ahven
ExclusiveArch: %{GPRbuild_arches}
- algobox
ExclusiveArch: %{qt5_qtwebengine_arches}
- alleyoop
ExclusiveArch: %{ix86} x86_64 ppc ppc64 ppc64le s390x %{arm} aarch64
- american-fuzzy-lop
ExclusiveArch: %{ix86} x86_64 s390x
- anet
ExclusiveArch: %{GPRbuild_arches}
- anki
ExclusiveArch: %{qt5_qtwebengine_arches} noarch
- apmd
ExclusiveArch: %{ix86}
- appstream-generator
ExclusiveArch: %{ldc_arches}
- arm-trusted-firmware
ExclusiveArch: aarch64
- aunit
ExclusiveArch: %GPRbuild_arches
- avgtime
ExclusiveArch: %{ldc_arches}
- aws
ExclusiveArch: %GPRbuild_arches
- bcal
ExclusiveArch: x86_64 aarch64 ia64 ppc64 ppc64le s390x
- bcc
ExclusiveArch: x86_64 %{power64} aarch64 s390x armv7hl
- bcm283x-firmware
ExclusiveArch: %{arm} aarch64
- berusky2
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64 %{mips}
- biosdevname
ExclusiveArch: %{ix86} x86_64
- blender
ExclusiveArch: x86_64 aarch64 ppc64le
- bless
ExclusiveArch: %mono_arches
- bpftrace
ExclusiveArch: x86_64 %{power64} aarch64 s390x
- calamares
ExclusiveArch: %{ix86} x86_64 aarch64
- calibre
ExclusiveArch: %{qt5_qtwebengine_arches}
- ccdciel
ExclusiveArch: %{fpc_arches}
- cdcollect
ExclusiveArch: %{mono_arches}
- ceph
ExclusiveArch: x86_64 aarch64 ppc64le s390x
- chromium
ExclusiveArch: x86_64 i686
ExclusiveArch: x86_64 aarch64
ExclusiveArch: x86_64 i686 aarch64
- cjdns
ExclusiveArch: %{nodejs_arches}
- clevis-pin-tpm2
ExclusiveArch: %{rust_arches}
- cmospwd
ExclusiveArch: %{ix86} x86_64
- cmrt
ExclusiveArch: %{ix86} x86_64 ia64
- coffee-script
ExclusiveArch: %{nodejs_arches} noarch
- colorful
ExclusiveArch: %{fpc_arches}
- cpu-x
ExclusiveArch: i686 x86_64
- cpufetch
ExclusiveArch: %{arm} aarch64 x86_64 ppc ppc64 ppc64le
- cpuid
ExclusiveArch: %{ix86} x86_64
- cqrlog
ExclusiveArch: %{fpc_arches}
- crash
ExclusiveArch: %{ix86} ia64 x86_64 ppc ppc64 s390 s390x %{arm} aarch64 ppc64le
- crash-gcore-command
ExclusiveArch: aarch64 ppc64le x86_64
- crash-trace-command
ExclusiveArch: aarch64 ppc64le s390x x86_64
- cri-tools
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- criu
ExclusiveArch: x86_64 %{arm} ppc64le aarch64 s390x
- cryptlib
ExclusiveArch: x86_64 %{ix86} aarch64 ppc64 ppc64le
- cryptobone
ExclusiveArch: x86_64 %{ix86} ppc64 ppc64le aarch64
- csslint
ExclusiveArch: %{nodejs_arches} noarch
- daq
ExclusiveArch: x86_64 aarch64
- darktable
ExclusiveArch: x86_64 aarch64
ExclusiveArch: x86_64 ppc64le
- dbus-parsec
ExclusiveArch: %{rust_arches}
- dbus-sharp
ExclusiveArch: %mono_arches
- dbus-sharp-glib
ExclusiveArch: %mono_arches
- dbxtool
ExclusiveArch: i386 x86_64 aarch64
- deepin-daemon
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- deepin-desktop-schemas
ExclusiveArch: %{go_arches}
- dlm
ExclusiveArch: i686 x86_64
- dmidecode
ExclusiveArch: %{ix86} x86_64 ia64 aarch64
- dmtcp
ExclusiveArch: x86_64
- docker-distribution
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- dolphin-emu
ExclusiveArch: x86_64 aarch64
- dotnet-build-reference-packages
ExclusiveArch: aarch64 x86_64
ExclusiveArch: x86_64
- dotnet3.1
ExclusiveArch: aarch64 x86_64
ExclusiveArch: x86_64
- dotnet5.0
ExclusiveArch: aarch64 x86_64
ExclusiveArch: x86_64
- dotnet5.0-build-reference-packages
ExclusiveArch: aarch64 x86_64
ExclusiveArch: x86_64
- doublecmd
ExclusiveArch: %{ix86} x86_64
- dpdk
ExclusiveArch: x86_64 i686 aarch64 ppc64le
- dxvk-native
ExclusiveArch: %{ix86} x86_64
- dyninst
ExclusiveArch: %{ix86} x86_64 ppc64le aarch64
- e3
ExclusiveArch: %{ix86} x86_64
- eclipse-swt
ExclusiveArch: s390x x86_64 aarch64 ppc64le
- edk2
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64
ExclusiveArch: x86_64 aarch64
- efibootmgr
ExclusiveArch: %{efi}
- efifs
ExclusiveArch: %{efi}
- efitools
ExclusiveArch: %{efi}
- efivar
ExclusiveArch: %{efi}
- elk
ExclusiveArch: x86_64 %{ix86}
ExclusiveArch: x86_64 %{ix86} aarch64 %{arm} %{power64}
- emacs-slime
ExclusiveArch: %{arm} %{ix86} x86_64 ppc sparcv9 aarch64
- enki
ExclusiveArch: %{qt5_qtwebengine_arches} noarch
- envytools
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64
- eric
ExclusiveArch: %{qt5_qtwebengine_arches} noarch
- eth-tools
ExclusiveArch: x86_64
- extlinux-bootloader
ExclusiveArch: %{arm} aarch64
- fasttrack
ExclusiveArch: %{qt5_qtwebengine_arches}
- fcitx-libpinyin
ExclusiveArch: %{qt5_qtwebengine_arches}
- fedora-dockerfiles
ExclusiveArch: %{go_arches}
- fes
ExclusiveArch: %{ix86} x86_64
- fkill-cli
ExclusiveArch: %{nodejs_arches} noarch
- florist
ExclusiveArch: %{GPRbuild_arches}
- fpc
ExclusiveArch: %{arm} aarch64 %{ix86} x86_64 ppc64le
- frescobaldi
ExclusiveArch: %{qt5_qtwebengine_arches}
- frysk
ExclusiveArch: %{ix86} x86_64 ppc64
- fwts
ExclusiveArch: x86_64 %{arm} aarch64 s390x riscv64 %{power64}
- fwupd-efi
ExclusiveArch: x86_64 aarch64
- fx
ExclusiveArch: %{nodejs_arches} noarch
- fx-completion
ExclusiveArch: %{nodejs_arches} noarch
- ga
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64 ppc64le
- gbrainy
ExclusiveArch: %mono_arches
- gdata-sharp
ExclusiveArch: %mono_arches
- gdb-exploitable
ExclusiveArch: x86_64 i386
ExclusiveArch: x86_64 noarch
- gearhead1
ExclusiveArch: %{fpc_arches}
- gela-asis
ExclusiveArch: %GPRbuild_arches
- ghdl
ExclusiveArch: %{GNAT_arches}
- ghostwriter
ExclusiveArch: %{qt5_qtwebengine_arches}
- gio-sharp
ExclusiveArch: %mono_arches
- gir-to-d
ExclusiveArch: %{ldc_arches}
- git-octopus
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- gitqlient
ExclusiveArch: %{qt5_qtwebengine_arches}
- giver
ExclusiveArch: %{mono_arches}
- gkeyfile-sharp
ExclusiveArch: %mono_arches
- glibc32
ExclusiveArch: x86_64
- glibd
ExclusiveArch: %{ldc_arches}
- gmqcc
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64
- gnatcoll
ExclusiveArch: %{GPRbuild_arches}
- gnatcoll-bindings
ExclusiveArch: %{GPRbuild_arches}
- gnatcoll-db
ExclusiveArch: %{GPRbuild_arches}
- gnome-boxes
ExclusiveArch: x86_64
- gnome-desktop-sharp
ExclusiveArch: %mono_arches
- gnome-do
ExclusiveArch: %mono_arches
- gnome-keyring-sharp
ExclusiveArch: %mono_arches
- gnome-rdp
ExclusiveArch: %{mono_arches}
- gnome-sharp
ExclusiveArch: %mono_arches
- gnome-subtitles
ExclusiveArch: %mono_arches
- gnu-efi
ExclusiveArch: %{efi}
- go-bindata
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- go-compilers
ExclusiveArch: %{go_arches}
- go-rpm-macros
ExclusiveArch: %{golang_arches} %{gccgo_arches}
- godep
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang
ExclusiveArch: %{golang_arches}
- gomtree
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- gotun
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
ExclusiveArch: x86_64
- goverlay
ExclusiveArch: %{fpc_arches}
- gprbuild
ExclusiveArch: %{GPRbuild_arches} %{bootstrap_arch}
- gprolog
ExclusiveArch: x86_64 %{ix86} ppc alpha
- grafana
ExclusiveArch: %{grafana_arches}
- grafana-pcp
ExclusiveArch: %{grafanapcp_arches}
- gtk-sharp-beans
ExclusiveArch: %mono_arches
- gtk-sharp2
ExclusiveArch: %mono_arches
- gtk-sharp3
ExclusiveArch: %{mono_arches}
- gtkd
ExclusiveArch: %{ldc_arches}
- gudev-sharp
ExclusiveArch: %mono_arches
- guestfs-tools
ExclusiveArch: %{kernel_arches}
- hedgewars
ExclusiveArch: %{fpc_arches}
- hsakmt
ExclusiveArch: x86_64 aarch64
- hyena
ExclusiveArch: %{mono_arches}
- hyperscan
ExclusiveArch: x86_64
- hyperv-daemons
ExclusiveArch: i686 x86_64
- i3status-rs
ExclusiveArch: %{rust_arches}
- icaro
ExclusiveArch: %{ix86} x86_64 noarch
- imvirt
ExclusiveArch: %{ix86} x86_64 ia64
- indistarter
ExclusiveArch: %{fpc_arches}
- infinipath-psm
ExclusiveArch: x86_64
- intel-cmt-cat
ExclusiveArch: x86_64 i686 i586
ExclusiveArch: x86_64 i686 i586
- intel-gmmlib
ExclusiveArch: x86_64 i686
- intel-ipp-crypto-mb
ExclusiveArch: x86_64
ExclusiveArch: x86_64
- intel-ipsec-mb
ExclusiveArch: x86_64
ExclusiveArch: x86_64
- intel-mediasdk
ExclusiveArch: x86_64
- intel-undervolt
ExclusiveArch: i386 x86_64
- ioport
ExclusiveArch: %{ix86} x86_64
- ipmctl
ExclusiveArch: x86_64
- ipw2100-firmware
ExclusiveArch: noarch i386 x86_64
- ipw2200-firmware
ExclusiveArch: noarch i386 x86_64
- ispc
ExclusiveArch: x86_64 aarch64
- iucode-tool
ExclusiveArch: %{ix86} x86_64
- iyfct
ExclusiveArch: %{arm} %{ix86} x86_64 aarch64 ppc64le
- java-1.8.0-openjdk-aarch32
ExclusiveArch: %{arm}
- jigawatts
ExclusiveArch: x86_64 %{arm} ppc64le aarch64 s390x
- kchmviewer
ExclusiveArch: %{qt5_qtwebengine_arches}
- keepass
ExclusiveArch: %{mono_arches}
- kernel
ExclusiveArch: noarch x86_64 s390x %{arm} aarch64 ppc64le
ExclusiveArch: noarch i386 i686 x86_64 s390x %{arm} aarch64 ppc64le
- keyring-ima-signer
ExclusiveArch: %{rust_arches}
- kf5-akonadi-search
ExclusiveArch: x86_64 ppc64le aarch64 %{arm}
- kf5-audiocd-kio
ExclusiveArch: x86_64 ppc64le aarch64 %{arm}
- kf5-kalarmcal
ExclusiveArch: x86_64 ppc64le aarch64 %{arm}
- kf5-kblog
ExclusiveArch: x86_64 ppc64le aarch64 %{arm}
- kf5-kcalendarcore
ExclusiveArch: x86_64 ppc64le aarch64 %{arm}
- kf5-kcalendarutils
ExclusiveArch: x86_64 ppc64le aarch64 %{arm}
- kf5-kitinerary
ExclusiveArch: x86_64 ppc64le aarch64 %{arm}
- kf5-ktnef
ExclusiveArch: x86_64 ppc64le aarch64 %{arm}
- kf5-libkdcraw
ExclusiveArch: x86_64 ppc64le %{arm}
- kicad
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64 ppc64le
- kiwix-desktop
ExclusiveArch: %{qt5_qtwebengine_arches}
- klee
ExclusiveArch: x86_64
- knot-resolver
ExclusiveArch: %{ix86} x86_64
ExclusiveArch: %{arm} aarch64 %{ix86} x86_64
- knotes
ExclusiveArch: x86_64 %{arm}
- kompose
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64 s390x
- kubernetes
ExclusiveArch: x86_64 aarch64 ppc64le s390x %{arm}
- lazarus
ExclusiveArch: %{fpc_arches}
- lazpaint
ExclusiveArch: %{fpc_arches}
- ldc
ExclusiveArch: %{ldc_arches}
- libbsr
ExclusiveArch: %{power64}
- libclc
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64 %{power64} s390x
- libcxl
ExclusiveArch: %{power64}
- libdfp
ExclusiveArch: ppc ppc64 ppc64le s390 s390x x86_64
- libdispatch
ExclusiveArch: x86_64 aarch64
- libguestfs
ExclusiveArch: %{kernel_arches}
- libica
ExclusiveArch: s390 s390x
- libipt
ExclusiveArch: %{ix86} x86_64
ExclusiveArch: %{ix86} x86_64
- libnxz
ExclusiveArch: ppc64le
- libocxl
ExclusiveArch: ppc64le
- libpmemobj-cpp
ExclusiveArch: x86_64 ppc64le
- libpsm2
ExclusiveArch: x86_64
- libquentier
ExclusiveArch: %{qt5_qtwebengine_arches}
- libretro-desmume2015
ExclusiveArch: i686 x86_64
- librtas
ExclusiveArch: %{power64}
- libservicelog
ExclusiveArch: ppc %{power64}
- libsmbios
ExclusiveArch: x86_64 %{ix86}
- libunwind
ExclusiveArch: %{arm} aarch64 hppa ia64 mips ppc %{power64} s390x %{ix86} x86_64
- libva-intel-hybrid-driver
ExclusiveArch: %{ix86} x86_64 ia64
- libvma
ExclusiveArch: x86_64 ppc64le ppc64 aarch64
- libvmi
ExclusiveArch: x86_64
- libvpd
ExclusiveArch: %{power64}
- libxsmm
ExclusiveArch: x86_64
- libzfcphbaapi
ExclusiveArch: s390 s390x
- lightdm
ExclusiveArch: x86_64 ppc64le
- log4net
ExclusiveArch: %mono_arches
- lrmi
ExclusiveArch: %{ix86}
- lsvpd
ExclusiveArch: %{power64}
- luajit
ExclusiveArch: %{arm} %{ix86} x86_64 %{mips} aarch64
- luxcorerender
ExclusiveArch: x86_64
- mactel-boot
ExclusiveArch: x86_64
- manifest-tool
ExclusiveArch: x86_64 aarch64 ppc64le s390x
- marked
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- matreshka
ExclusiveArch: %GPRbuild_arches
- maxima
ExclusiveArch: %{arm} %{ix86} x86_64 aarch64 ppc sparcv9
ExclusiveArch: %{ix86} x86_64 ppc sparcv9
- mbpfan
ExclusiveArch: x86_64
- mcelog
ExclusiveArch: i686 x86_64
- mdevctl
ExclusiveArch: %{rust_arches}
- mediaconch
ExclusiveArch: %{qt5_qtwebengine_arches}
- mellowplayer
ExclusiveArch: %{qt5_qtwebengine_arches}
- memkind
ExclusiveArch: x86_64 ppc64 ppc64le s390x aarch64
- memtest86+
ExclusiveArch: %{ix86} x86_64
- mesos
ExclusiveArch: x86_64
- microcode_ctl
ExclusiveArch: %{ix86} x86_64
- micropython
ExclusiveArch: %{arm} %{ix86} x86_64
- mine_detector
ExclusiveArch: %{GPRbuild_arches}
- minetest
ExclusiveArch: %{ix86} x86_64
ExclusiveArch: %{arm} %{ix86} x86_64 %{mips} aarch64
- mingw-libidn2
ExclusiveArch: %{ix86} x86_64 %{arm}
- mingw-wine-gecko
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64
- mirrorlist-server
ExclusiveArch: %{rust_arches}
- mkbootdisk
ExclusiveArch: %{ix86} sparc sparc64 x86_64
- mod_mono
ExclusiveArch: %mono_arches
- module-build-service
ExclusiveArch: %{ix86} x86_64 noarch
- mokutil
ExclusiveArch: %{ix86} x86_64 aarch64 %{arm}
- mono
ExclusiveArch: %mono_arches
- mono-addins
ExclusiveArch: %mono_arches
- mono-basic
ExclusiveArch: %{mono_arches}
- mono-bouncycastle
ExclusiveArch: %mono_arches
- mono-cecil
ExclusiveArch: %mono_arches
- mono-cecil-flowanalysis
ExclusiveArch: %mono_arches
- mono-reflection
ExclusiveArch: %mono_arches
- mono-tools
ExclusiveArch: %mono_arches
- mono-zeroconf
ExclusiveArch: %mono_arches
- monobristol
ExclusiveArch: %{mono_arches}
- monodevelop
ExclusiveArch: %mono_arches
- monodevelop-debugger-gdb
ExclusiveArch: %{mono_arches}
- monosim
ExclusiveArch: %mono_arches
- mrrescue
ExclusiveArch: %{arm} %{ix86} x86_64 aarch64 ppc64le
- msr-tools
ExclusiveArch: %{ix86} x86_64
- mustache-d
ExclusiveArch: %{ldc_arches}
- mysql-connector-net
ExclusiveArch: %{mono_arches}
- nant
ExclusiveArch: %mono_arches
- nativejit
ExclusiveArch: x86_64
- nbc
ExclusiveArch: %{fpc_arches}
- nbdkit
ExclusiveArch: x86_64
- ndesk-dbus
ExclusiveArch: %{mono_arches}
- ndesk-dbus-glib
ExclusiveArch: %{mono_arches}
- newsflash
ExclusiveArch: %{rust_arches}
- newtonsoft-json
ExclusiveArch: %{mono_arches}
- nispor
ExclusiveArch: %{rust_arches}
- nodejs
ExclusiveArch: %{nodejs_arches}
- nodejs-acorn-object-spread
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-backbone
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-bash-language-server
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-buble
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-colors
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-generic-pool
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-linefix
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-nodemon
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-packaging
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-replace-require-self
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-supervisor
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-svgo
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-tape
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-typescript
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-underscore
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- notify-sharp
ExclusiveArch: %{mono_arches}
- notify-sharp3
ExclusiveArch: %{mono_arches}
- npm-name-cli
ExclusiveArch: %{nodejs_arches} noarch
- nuget
ExclusiveArch: %{mono_arches}
- numatop
ExclusiveArch: x86_64 ppc64le
- nunit
ExclusiveArch: %{mono_arches}
- nunit2
ExclusiveArch: %{mono_arches}
- nvml
ExclusiveArch: x86_64 ppc64le
- nwchem
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64 ppc64le
- obs-service-rust2rpm
ExclusiveArch: %{rust_arches} noarch
- oci-kvm-hook
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- oci-seccomp-bpf-hook
ExclusiveArch: x86_64 %%{power64} aarch64 s390x armv7hl
- oci-umount
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64 ppc64le s390x %{mips}
- oidn
ExclusiveArch: x86_64
- olpc-kbdshim
ExclusiveArch: %{ix86} %{arm}
- olpc-utils
ExclusiveArch: %{ix86} %{arm}
- onednn
ExclusiveArch: x86_64 aarch64 ppc64le s390x
- onedrive
ExclusiveArch: %{ldc_arches}
- opae
ExclusiveArch: x86_64
- opal-prd
ExclusiveArch: ppc64le
- open-vm-tools
ExclusiveArch: x86_64
ExclusiveArch: %{ix86} x86_64 aarch64
- openblas
ExclusiveArch: %{openblas_arches}
- openjfx
ExclusiveArch: x86_64
- openjfx8
ExclusiveArch: x86_64
- openlibm
ExclusiveArch: %{arm} %{ix86} x86_64 aarch64 %{power64}
- openni
ExclusiveArch: %{ix86} x86_64 %{arm}
- openni-primesense
ExclusiveArch: %{ix86} x86_64 %{arm}
- openshadinglanguage
ExclusiveArch: x86_64 aarch64 ppc64le s390x
- openssl-ibmca
ExclusiveArch: s390 s390x
- origin
ExclusiveArch: %{go_arches}
ExclusiveArch: x86_64 aarch64 ppc64le s390x
- orion
ExclusiveArch: %{qt5_qtwebengine_arches}
- orthorobot
ExclusiveArch: %{arm} %{ix86} x86_64 aarch64 ppc64le
- pacemaker
ExclusiveArch: aarch64 i686 ppc64le s390x x86_64 %{arm}
ExclusiveArch: aarch64 i686 ppc64le s390x x86_64
- paflib
ExclusiveArch: ppc %{power64}
- parsec
ExclusiveArch: %{rust_arches}
- parsec-tool
ExclusiveArch: %{rust_arches}
- pcc
ExclusiveArch: %{ix86} x86_64
- pcm
ExclusiveArch: %{ix86} x86_64
- pcmciautils
ExclusiveArch: %{ix86} x86_64 ia64 ppc ppc64 %{arm}
- pdbg
ExclusiveArch: ppc64le
- pdfmod
ExclusiveArch: %mono_arches
- perl-Dumbbench
ExclusiveArch: %{ix86} x86_64 noarch
- perl-Parse-DMIDecode
ExclusiveArch: %{ix86} x86_64 ia64 aarch64
- pesign
ExclusiveArch: %{ix86} x86_64 ia64 aarch64 %{arm}
- pesign-test-app
ExclusiveArch: x86_64
- pinta
ExclusiveArch: %mono_arches
- pioneer
ExclusiveArch: %{ix86} x86_64
- playonlinux
ExclusiveArch: %{arm} aarch64 %{ix86} x86_64
- pmdk-convert
ExclusiveArch: x86_64
- pmemkv
ExclusiveArch: x86_64
- podman
ExclusiveArch: %{golang_arches}
- poppler-sharp
ExclusiveArch: %mono_arches
- popub
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- powerpc-utils
ExclusiveArch: ppc %{power64}
- ppc64-diag
ExclusiveArch: ppc %{power64}
- pveclib
ExclusiveArch: ppc %{power64}
- pvs-sbcl
ExclusiveArch: %{ix86} x86_64 ppc sparcv9
- pyqtwebengine
ExclusiveArch: %{qt5_qtwebengine_arches}
- python-cryptography
ExclusiveArch: %{rust_arches}
- python-etcd
ExclusiveArch: noarch %{ix86} x86_64 %{arm} aarch64 ppc64le s390x
- python-healpy
ExclusiveArch: aarch64 ppc64 ppc64le x86_64 s390x
- python-javabridge
ExclusiveArch: i686 x86_64
- python-openoffice
ExclusiveArch: noarch x86_64
- python-pymoc
ExclusiveArch: aarch64 ppc64 ppc64le x86_64 s390x
- python-setuptools-rust
ExclusiveArch: %{rust_arches}
- q4wine
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64
- qatzip
ExclusiveArch: x86_64
- qcint
ExclusiveArch: x86_64
- qclib
ExclusiveArch: s390 s390x
- qemu-sanity-check
ExclusiveArch: %{kernel_arches}
- qevercloud
ExclusiveArch: %{qt5_qtwebengine_arches}
- qmapshack
ExclusiveArch: %{qt5_qtwebengine_arches}
- qt4pas
ExclusiveArch: %{fpc_arches}
- qt5-qtwebengine
ExclusiveArch: %{qt5_qtwebengine_arches}
- quantum-espresso
ExclusiveArch: x86_64 %{ix86} aarch64 %{power64}
- quentier
ExclusiveArch: %{qt5_qtwebengine_arches}
- rear
ExclusiveArch: %ix86 x86_64 ppc ppc64 ppc64le ia64
- reg
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- renderdoc
ExclusiveArch: x86_64
- reptyr
ExclusiveArch: %{ix86} x86_64 %{arm}
- rescene
ExclusiveArch: %{mono_arches}
- restool
ExclusiveArch: aarch64
- restsharp
ExclusiveArch: %{mono_arches}
- rhythmbox-alternative-toolbar
ExclusiveArch: %{ix86} %{arm} x86_64 ppc64 ppc64le
- rocm-runtime
ExclusiveArch: x86_64 aarch64
- rocminfo
ExclusiveArch: x86_64 aarch64
- rpg-cli
ExclusiveArch: %{rust_arches}
- rpm-ostree
ExclusiveArch: %{rust_arches}
- rr
ExclusiveArch: %{ix86} x86_64 aarch64
- rssguard
ExclusiveArch: %{qt5_qtwebengine_arches}
- rubygem-childprocess
ExclusiveArch: %{ix86} x86_64 noarch
- runc
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64 ppc64le %{mips} s390x
- rust
ExclusiveArch: %{rust_arches}
- rust-Inflector
ExclusiveArch: %{rust_arches}
- rust-ab_glyph
ExclusiveArch: %{rust_arches}
- rust-ab_glyph_rasterizer
ExclusiveArch: %{rust_arches}
- rust-abomonation
ExclusiveArch: %{rust_arches}
- rust-actix
ExclusiveArch: %{rust_arches}
- rust-actix-codec
ExclusiveArch: %{rust_arches}
- rust-actix-connect
ExclusiveArch: %{rust_arches}
- rust-actix-files
ExclusiveArch: %{rust_arches}
- rust-actix-http
ExclusiveArch: %{rust_arches}
- rust-actix-macros
ExclusiveArch: %{rust_arches}
- rust-actix-macros0.1
ExclusiveArch: %{rust_arches}
- rust-actix-router
ExclusiveArch: %{rust_arches}
- rust-actix-rt
ExclusiveArch: %{rust_arches}
- rust-actix-rt1
ExclusiveArch: %{rust_arches}
- rust-actix-server
ExclusiveArch: %{rust_arches}
- rust-actix-server-config
ExclusiveArch: %{rust_arches}
- rust-actix-service
ExclusiveArch: %{rust_arches}
- rust-actix-testing
ExclusiveArch: %{rust_arches}
- rust-actix-threadpool
ExclusiveArch: %{rust_arches}
- rust-actix-tls
ExclusiveArch: %{rust_arches}
- rust-actix-utils
ExclusiveArch: %{rust_arches}
- rust-actix-web
ExclusiveArch: %{rust_arches}
- rust-actix-web-codegen
ExclusiveArch: %{rust_arches}
- rust-actix0.10
ExclusiveArch: %{rust_arches}
- rust-actix_derive
ExclusiveArch: %{rust_arches}
- rust-actix_derive0.5
ExclusiveArch: %{rust_arches}
- rust-addr2line
ExclusiveArch: %{rust_arches}
- rust-adler
ExclusiveArch: %{rust_arches}
- rust-adler32
ExclusiveArch: %{rust_arches}
- rust-aead
ExclusiveArch: %{rust_arches}
- rust-aes
ExclusiveArch: %{rust_arches}
- rust-aes-gcm
ExclusiveArch: %{rust_arches}
- rust-afterburn
ExclusiveArch: %{rust_arches}
- rust-ahash
ExclusiveArch: %{rust_arches}
- rust-ahash0.4
ExclusiveArch: %{rust_arches}
- rust-aho-corasick
ExclusiveArch: %{rust_arches}
- rust-alacritty
ExclusiveArch: %{rust_arches}
- rust-alacritty_config_derive
ExclusiveArch: %{rust_arches}
- rust-alacritty_terminal
ExclusiveArch: %{rust_arches}
- rust-alga
ExclusiveArch: %{rust_arches}
- rust-alga_derive
ExclusiveArch: %{rust_arches}
- rust-aliasable
ExclusiveArch: %{rust_arches}
- rust-alloc-no-stdlib
ExclusiveArch: %{rust_arches}
- rust-alloc-stdlib
ExclusiveArch: %{rust_arches}
- rust-alphanumeric-sort
ExclusiveArch: %{rust_arches}
- rust-alsa
ExclusiveArch: %{rust_arches}
- rust-alsa-sys
ExclusiveArch: %{rust_arches}
- rust-ambient-authority
ExclusiveArch: %{rust_arches}
- rust-ammonia
ExclusiveArch: %{rust_arches}
- rust-andrew
ExclusiveArch: %{rust_arches}
- rust-ansi_colours
ExclusiveArch: %{rust_arches}
- rust-ansi_term
ExclusiveArch: %{rust_arches}
- rust-ansi_term0.11
ExclusiveArch: %{rust_arches}
- rust-antidote
ExclusiveArch: %{rust_arches}
- rust-anyhow
ExclusiveArch: %{rust_arches}
- rust-anymap
ExclusiveArch: %{rust_arches}
- rust-aom-sys
ExclusiveArch: %{rust_arches}
- rust-app_dirs
ExclusiveArch: %{rust_arches}
- rust-approx
ExclusiveArch: %{rust_arches}
- rust-ar
ExclusiveArch: %{rust_arches}
- rust-arbitrary
ExclusiveArch: %{rust_arches}
- rust-arbitrary0.4
ExclusiveArch: %{rust_arches}
- rust-arc-swap
ExclusiveArch: %{rust_arches}
- rust-arg_enum_proc_macro
ExclusiveArch: %{rust_arches}
- rust-argh
ExclusiveArch: %{rust_arches}
- rust-argh_derive
ExclusiveArch: %{rust_arches}
- rust-argh_shared
ExclusiveArch: %{rust_arches}
- rust-argparse
ExclusiveArch: %{rust_arches}
- rust-array-init
ExclusiveArch: %{rust_arches}
- rust-arraydeque
ExclusiveArch: %{rust_arches}
- rust-arrayref
ExclusiveArch: %{rust_arches}
- rust-arrayvec
ExclusiveArch: %{rust_arches}
- rust-article_scraper
ExclusiveArch: %{rust_arches}
- rust-ascii
ExclusiveArch: %{rust_arches}
- rust-ascii-canvas
ExclusiveArch: %{rust_arches}
- rust-askalono
ExclusiveArch: %{rust_arches}
- rust-askalono-cli
ExclusiveArch: %{rust_arches}
- rust-askama
ExclusiveArch: %{rust_arches}
- rust-askama_derive
ExclusiveArch: %{rust_arches}
- rust-askama_escape
ExclusiveArch: %{rust_arches}
- rust-askama_shared
ExclusiveArch: %{rust_arches}
- rust-asn1
ExclusiveArch: %{rust_arches}
- rust-asn1_derive
ExclusiveArch: %{rust_arches}
- rust-assert-impl
ExclusiveArch: %{rust_arches}
- rust-assert-json-diff
ExclusiveArch: %{rust_arches}
- rust-assert_approx_eq
ExclusiveArch: %{rust_arches}
- rust-assert_cli
ExclusiveArch: %{rust_arches}
- rust-assert_cmd
ExclusiveArch: %{rust_arches}
- rust-assert_fs
ExclusiveArch: %{rust_arches}
- rust-assert_matches
ExclusiveArch: %{rust_arches}
- rust-assign
ExclusiveArch: %{rust_arches}
- rust-async-attributes
ExclusiveArch: %{rust_arches}
- rust-async-channel
ExclusiveArch: %{rust_arches}
- rust-async-compression
ExclusiveArch: %{rust_arches}
- rust-async-executor
ExclusiveArch: %{rust_arches}
- rust-async-global-executor
ExclusiveArch: %{rust_arches}
- rust-async-io
ExclusiveArch: %{rust_arches}
- rust-async-lock
ExclusiveArch: %{rust_arches}
- rust-async-mutex
ExclusiveArch: %{rust_arches}
- rust-async-process
ExclusiveArch: %{rust_arches}
- rust-async-std
ExclusiveArch: %{rust_arches}
- rust-async-stream
ExclusiveArch: %{rust_arches}
- rust-async-stream-impl
ExclusiveArch: %{rust_arches}
- rust-async-task
ExclusiveArch: %{rust_arches}
- rust-async-trait
ExclusiveArch: %{rust_arches}
- rust-asyncgit
ExclusiveArch: %{rust_arches}
- rust-atk
ExclusiveArch: %{rust_arches}
- rust-atk-sys
ExclusiveArch: %{rust_arches}
- rust-atom
ExclusiveArch: %{rust_arches}
- rust-atomic-waker
ExclusiveArch: %{rust_arches}
- rust-atomicwrites
ExclusiveArch: %{rust_arches}
- rust-attohttpc
ExclusiveArch: %{rust_arches}
- rust-atty
ExclusiveArch: %{rust_arches}
- rust-autocfg
ExclusiveArch: %{rust_arches}
- rust-automod
ExclusiveArch: %{rust_arches}
- rust-av-metrics
ExclusiveArch: %{rust_arches}
- rust-average
ExclusiveArch: %{rust_arches}
- rust-awc
ExclusiveArch: %{rust_arches}
- rust-aws-nitro-enclaves-cose
ExclusiveArch: %{rust_arches}
- rust-az
ExclusiveArch: %{rust_arches}
- rust-backtrace
ExclusiveArch: %{rust_arches}
- rust-backtrace-sys
ExclusiveArch: %{rust_arches}
- rust-base100
ExclusiveArch: %{rust_arches}
- rust-base64
ExclusiveArch: %{rust_arches}
- rust-base64-0.10
ExclusiveArch: %{rust_arches}
- rust-base64-0.11
ExclusiveArch: %{rust_arches}
- rust-base64_0.12
ExclusiveArch: %{rust_arches}
- rust-bat
ExclusiveArch: %{rust_arches}
- rust-battery
ExclusiveArch: %{rust_arches}
- rust-beef
ExclusiveArch: %{rust_arches}
- rust-below
ExclusiveArch: %{rust_arches}
- rust-below-common
ExclusiveArch: %{rust_arches}
- rust-below-config
ExclusiveArch: %{rust_arches}
- rust-below-dump
ExclusiveArch: %{rust_arches}
- rust-below-model
ExclusiveArch: %{rust_arches}
- rust-below-render
ExclusiveArch: %{rust_arches}
- rust-below-store
ExclusiveArch: %{rust_arches}
- rust-below-view
ExclusiveArch: %{rust_arches}
- rust-below_derive
ExclusiveArch: %{rust_arches}
- rust-bencher
ExclusiveArch: %{rust_arches}
- rust-better-panic
ExclusiveArch: %{rust_arches}
- rust-bincode
ExclusiveArch: %{rust_arches}
- rust-bincode0.8
ExclusiveArch: %{rust_arches}
- rust-bindgen
ExclusiveArch: %{rust_arches}
- rust-binfarce
ExclusiveArch: %{rust_arches}
- rust-biscuit
ExclusiveArch: %{rust_arches}
- rust-bit-set
ExclusiveArch: %{rust_arches}
- rust-bit-vec
ExclusiveArch: %{rust_arches}
- rust-bitfield
ExclusiveArch: %{rust_arches}
- rust-bitflags
ExclusiveArch: %{rust_arches}
- rust-bitmaps
ExclusiveArch: %{rust_arches}
- rust-bitreader
ExclusiveArch: %{rust_arches}
- rust-bitstream-io
ExclusiveArch: %{rust_arches}
- rust-bitvec
ExclusiveArch: %{rust_arches}
- rust-blake2
ExclusiveArch: %{rust_arches}
- rust-blobby
ExclusiveArch: %{rust_arches}
- rust-blobby0.1
ExclusiveArch: %{rust_arches}
- rust-block-buffer
ExclusiveArch: %{rust_arches}
- rust-block-buffer0.7
ExclusiveArch: %{rust_arches}
- rust-block-modes
ExclusiveArch: %{rust_arches}
- rust-block-padding
ExclusiveArch: %{rust_arches}
- rust-blocking
ExclusiveArch: %{rust_arches}
- rust-blsctl
ExclusiveArch: %{rust_arches}
- rust-bodhi
ExclusiveArch: %{rust_arches}
- rust-bodhi-cli
ExclusiveArch: %{rust_arches}
- rust-bootupd
ExclusiveArch: x86_64 aarch64
- rust-box_drawing
ExclusiveArch: %{rust_arches}
- rust-boxfnonce
ExclusiveArch: %{rust_arches}
- rust-brev
ExclusiveArch: %{rust_arches}
- rust-brotli
ExclusiveArch: %{rust_arches}
- rust-brotli-decompressor
ExclusiveArch: %{rust_arches}
- rust-brotli-sys
ExclusiveArch: %{rust_arches}
- rust-brotli2
ExclusiveArch: %{rust_arches}
- rust-bstr
ExclusiveArch: %{rust_arches}
- rust-btrd
ExclusiveArch: %{rust_arches}
- rust-buf-min
ExclusiveArch: %{rust_arches}
- rust-buf_redux
ExclusiveArch: %{rust_arches}
- rust-buffered-reader
ExclusiveArch: %{rust_arches}
- rust-bufsize
ExclusiveArch: %{rust_arches}
- rust-bufstream
ExclusiveArch: %{rust_arches}
- rust-bugreport
ExclusiveArch: %{rust_arches}
- rust-build-env
ExclusiveArch: %{rust_arches}
- rust-build_const
ExclusiveArch: %{rust_arches}
- rust-bumpalo
ExclusiveArch: %{rust_arches}
- rust-byte-tools
ExclusiveArch: %{rust_arches}
- rust-byte-unit
ExclusiveArch: %{rust_arches}
- rust-byte-unit3
ExclusiveArch: %{rust_arches}
- rust-bytecheck
ExclusiveArch: %{rust_arches}
- rust-bytecheck_derive
ExclusiveArch: %{rust_arches}
- rust-bytecount
ExclusiveArch: %{rust_arches}
- rust-bytelines
ExclusiveArch: %{rust_arches}
- rust-bytemuck
ExclusiveArch: %{rust_arches}
- rust-bytemuck_derive
ExclusiveArch: %{rust_arches}
- rust-byteorder
ExclusiveArch: %{rust_arches}
- rust-bytes
ExclusiveArch: %{rust_arches}
- rust-bytes0.4
ExclusiveArch: %{rust_arches}
- rust-bytes0.5
ExclusiveArch: %{rust_arches}
- rust-bytes0.6
ExclusiveArch: %{rust_arches}
- rust-bytesize
ExclusiveArch: %{rust_arches}
- rust-bytestring
ExclusiveArch: %{rust_arches}
- rust-bzip2
ExclusiveArch: %{rust_arches}
- rust-bzip2-sys
ExclusiveArch: %{rust_arches}
- rust-c_vec
ExclusiveArch: %{rust_arches}
- rust-cache-padded
ExclusiveArch: %{rust_arches}
- rust-cairo-rs
ExclusiveArch: %{rust_arches}
- rust-cairo-sys-rs
ExclusiveArch: %{rust_arches}
- rust-calloop
ExclusiveArch: %{rust_arches}
- rust-calloop0.6
ExclusiveArch: %{rust_arches}
- rust-camino
ExclusiveArch: %{rust_arches}
- rust-cap-primitives
ExclusiveArch: %{rust_arches}
- rust-cap-rand
ExclusiveArch: %{rust_arches}
- rust-cap-std
ExclusiveArch: %{rust_arches}
- rust-capnp
ExclusiveArch: %{rust_arches}
- rust-capnp-futures
ExclusiveArch: %{rust_arches}
- rust-capnp-rpc
ExclusiveArch: %{rust_arches}
- rust-caps
ExclusiveArch: %{rust_arches}
- rust-cargo
ExclusiveArch: %{rust_arches}
- rust-cargo-bloat
ExclusiveArch: %{rust_arches}
- rust-cargo-c
ExclusiveArch: %{rust_arches}
- rust-cargo-husky
ExclusiveArch: %{rust_arches}
- rust-cargo-insta
ExclusiveArch: %{rust_arches}
- rust-cargo-platform
ExclusiveArch: %{rust_arches}
- rust-cargo-readme
ExclusiveArch: %{rust_arches}
- rust-cargo-util
ExclusiveArch: %{rust_arches}
- rust-cargo_metadata
ExclusiveArch: %{rust_arches}
- rust-case
ExclusiveArch: %{rust_arches}
- rust-cassowary
ExclusiveArch: %{rust_arches}
- rust-cast
ExclusiveArch: %{rust_arches}
- rust-cbindgen
ExclusiveArch: %{rust_arches}
- rust-cc
ExclusiveArch: %{rust_arches}
- rust-cedarwood
ExclusiveArch: %{rust_arches}
- rust-cexpr
ExclusiveArch: %{rust_arches}
- rust-cfg-expr
ExclusiveArch: %{rust_arches}
- rust-cfg-if
ExclusiveArch: %{rust_arches}
- rust-cfg-if0.1
ExclusiveArch: %{rust_arches}
- rust-cgmath
ExclusiveArch: %{rust_arches}
- rust-cgroupfs
ExclusiveArch: %{rust_arches}
- rust-chainerror
ExclusiveArch: %{rust_arches}
- rust-charset
ExclusiveArch: %{rust_arches}
- rust-chbs
ExclusiveArch: %{rust_arches}
- rust-checked_int_cast
ExclusiveArch: %{rust_arches}
- rust-chlorine
ExclusiveArch: %{rust_arches}
- rust-choosier
ExclusiveArch: %{rust_arches}
- rust-chrono
ExclusiveArch: %{rust_arches}
- rust-chrono-humanize
ExclusiveArch: %{rust_arches}
- rust-chrono-tz
ExclusiveArch: %{rust_arches}
- rust-chunked_transfer
ExclusiveArch: %{rust_arches}
- rust-cipher
ExclusiveArch: %{rust_arches}
- rust-clang-ast
ExclusiveArch: %{rust_arches}
- rust-clang-sys
ExclusiveArch: %{rust_arches}
- rust-clap
ExclusiveArch: %{rust_arches}
- rust-clap-verbosity-flag
ExclusiveArch: %{rust_arches}
- rust-clap2
ExclusiveArch: %{rust_arches}
- rust-clap_derive
ExclusiveArch: %{rust_arches}
- rust-claxon
ExclusiveArch: %{rust_arches}
- rust-clicolors-control
ExclusiveArch: %{rust_arches}
- rust-clipboard
ExclusiveArch: %{rust_arches}
- rust-cloudflare-zlib
ExclusiveArch: x86_64 aarch64
- rust-cloudflare-zlib-sys
ExclusiveArch: x86_64 aarch64
- rust-cmake
ExclusiveArch: %{rust_arches}
- rust-codespan-reporting
ExclusiveArch: %{rust_arches}
- rust-codicon
ExclusiveArch: %{rust_arches}
- rust-color-backtrace
ExclusiveArch: %{rust_arches}
- rust-color_quant
ExclusiveArch: %{rust_arches}
- rust-colored
ExclusiveArch: %{rust_arches}
- rust-colored1
ExclusiveArch: %{rust_arches}
- rust-colored_json
ExclusiveArch: %{rust_arches}
- rust-colorful
ExclusiveArch: %{rust_arches}
- rust-comfy-table
ExclusiveArch: %{rust_arches}
- rust-compiletest_rs
ExclusiveArch: %{rust_arches}
- rust-comrak
ExclusiveArch: %{rust_arches}
- rust-concurrent-queue
ExclusiveArch: %{rust_arches}
- rust-config
ExclusiveArch: %{rust_arches}
- rust-configparser
ExclusiveArch: %{rust_arches}
- rust-confy
ExclusiveArch: %{rust_arches}
- rust-console
ExclusiveArch: %{rust_arches}
- rust-console0.11
ExclusiveArch: %{rust_arches}
- rust-console0.12
ExclusiveArch: %{rust_arches}
- rust-console0.13
ExclusiveArch: %{rust_arches}
- rust-console0.9
ExclusiveArch: %{rust_arches}
- rust-console_error_panic_hook
ExclusiveArch: %{rust_arches}
- rust-const-cstr
ExclusiveArch: %{rust_arches}
- rust-const-random
ExclusiveArch: %{rust_arches}
- rust-const-random-macro
ExclusiveArch: %{rust_arches}
- rust-const_fn
ExclusiveArch: %{rust_arches}
- rust-constant_time_eq
ExclusiveArch: %{rust_arches}
- rust-content_inspector
ExclusiveArch: %{rust_arches}
- rust-conv
ExclusiveArch: %{rust_arches}
- rust-convert_case
ExclusiveArch: %{rust_arches}
- rust-cookie
ExclusiveArch: %{rust_arches}
- rust-cookie_store
ExclusiveArch: %{rust_arches}
- rust-copydeps
ExclusiveArch: %{rust_arches}
- rust-copyless
ExclusiveArch: %{rust_arches}
- rust-copypasta
ExclusiveArch: %{rust_arches}
- rust-cordic
ExclusiveArch: %{rust_arches}
- rust-coreos-installer
ExclusiveArch: %{rust_arches}
- rust-counted-array
ExclusiveArch: %{rust_arches}
- rust-cpal
ExclusiveArch: %{rust_arches}
- rust-cpio
ExclusiveArch: %{rust_arches}
- rust-cpp_demangle
ExclusiveArch: %{rust_arches}
- rust-cpufeatures
ExclusiveArch: %{rust_arches}
- rust-cpuid-bool
ExclusiveArch: %{rust_arches}
- rust-cpython
ExclusiveArch: %{rust_arches}
- rust-cranelift-bforest
ExclusiveArch: %{rust_arches}
- rust-cranelift-codegen
ExclusiveArch: %{rust_arches}
- rust-cranelift-codegen-meta
ExclusiveArch: %{rust_arches}
- rust-cranelift-codegen-shared
ExclusiveArch: %{rust_arches}
- rust-cranelift-entity
ExclusiveArch: %{rust_arches}
- rust-cranelift-frontend
ExclusiveArch: %{rust_arches}
- rust-cranelift-native
ExclusiveArch: %{rust_arches}
- rust-cranelift-wasm
ExclusiveArch: %{rust_arches}
- rust-crates-io
ExclusiveArch: %{rust_arches}
- rust-crc
ExclusiveArch: %{rust_arches}
- rust-crc-any
ExclusiveArch: %{rust_arches}
- rust-crc-core
ExclusiveArch: %{rust_arches}
- rust-crc32fast
ExclusiveArch: %{rust_arches}
- rust-criterion
ExclusiveArch: %{rust_arches}
- rust-criterion-plot
ExclusiveArch: %{rust_arches}
- rust-crossbeam
ExclusiveArch: %{rust_arches}
- rust-crossbeam-channel
ExclusiveArch: %{rust_arches}
- rust-crossbeam-channel0.4
ExclusiveArch: %{rust_arches}
- rust-crossbeam-deque
ExclusiveArch: %{rust_arches}
- rust-crossbeam-deque0.7
ExclusiveArch: %{rust_arches}
- rust-crossbeam-epoch
ExclusiveArch: %{rust_arches}
- rust-crossbeam-epoch0.8
ExclusiveArch: %{rust_arches}
- rust-crossbeam-queue
ExclusiveArch: %{rust_arches}
- rust-crossbeam-queue0.2
ExclusiveArch: %{rust_arches}
- rust-crossbeam-utils
ExclusiveArch: %{rust_arches}
- rust-crossbeam-utils0.7
ExclusiveArch: %{rust_arches}
- rust-crossbeam0.7
ExclusiveArch: %{rust_arches}
- rust-crossfont
ExclusiveArch: %{rust_arches}
- rust-crossterm
ExclusiveArch: %{rust_arches}
- rust-crossterm0.17
ExclusiveArch: %{rust_arches}
- rust-crossterm0.19
ExclusiveArch: %{rust_arches}
- rust-crosstermion
ExclusiveArch: %{rust_arches}
- rust-crunchy
ExclusiveArch: %{rust_arches}
- rust-crypto-hash
ExclusiveArch: %{rust_arches}
- rust-crypto-mac
ExclusiveArch: %{rust_arches}
- rust-crypto-mac0.8
ExclusiveArch: %{rust_arches}
- rust-cryptoki
ExclusiveArch: %{rust_arches}
- rust-cryptoki-sys
ExclusiveArch: %{rust_arches}
- rust-cryptovec
ExclusiveArch: %{rust_arches}
- rust-cssparser
ExclusiveArch: %{rust_arches}
- rust-cssparser-macros
ExclusiveArch: %{rust_arches}
- rust-cstr-argument
ExclusiveArch: %{rust_arches}
- rust-csv
ExclusiveArch: %{rust_arches}
- rust-csv-core
ExclusiveArch: %{rust_arches}
- rust-ct-logs
ExclusiveArch: %{rust_arches}
- rust-ctor
ExclusiveArch: %{rust_arches}
- rust-ctr
ExclusiveArch: %{rust_arches}
- rust-ctrlc
ExclusiveArch: %{rust_arches}
- rust-cty
ExclusiveArch: %{rust_arches}
- rust-curl
ExclusiveArch: %{rust_arches}
- rust-curl-sys
ExclusiveArch: %{rust_arches}
- rust-cursive
ExclusiveArch: %{rust_arches}
- rust-cursive-tabs
ExclusiveArch: %{rust_arches}
- rust-cursive_buffered_backend
ExclusiveArch: %{rust_arches}
- rust-cursive_core
ExclusiveArch: %{rust_arches}
- rust-curve25519-dalek
ExclusiveArch: %{rust_arches}
- rust-custom_derive
ExclusiveArch: %{rust_arches}
- rust-cxx
ExclusiveArch: %{rust_arches}
- rust-cxx-build
ExclusiveArch: %{rust_arches}
- rust-cxx-gen
ExclusiveArch: %{rust_arches}
- rust-cxxbridge-flags
ExclusiveArch: %{rust_arches}
- rust-cxxbridge-macro
ExclusiveArch: %{rust_arches}
- rust-darling
ExclusiveArch: %{rust_arches}
- rust-darling_core
ExclusiveArch: %{rust_arches}
- rust-darling_macro
ExclusiveArch: %{rust_arches}
- rust-dashmap
ExclusiveArch: %{rust_arches}
- rust-data-encoding
ExclusiveArch: %{rust_arches}
- rust-data-url
ExclusiveArch: %{rust_arches}
- rust-datetime
ExclusiveArch: %{rust_arches}
- rust-dav1d-sys
ExclusiveArch: %{rust_arches}
- rust-dbus
ExclusiveArch: %{rust_arches}
- rust-dbus-codegen
ExclusiveArch: %{rust_arches}
- rust-dbus-crossroads
ExclusiveArch: %{rust_arches}
- rust-dbus-tokio
ExclusiveArch: %{rust_arches}
- rust-dbus-tree
ExclusiveArch: %{rust_arches}
- rust-dbus0.8
ExclusiveArch: %{rust_arches}
- rust-debug-helper
ExclusiveArch: %{rust_arches}
- rust-decimal
ExclusiveArch: %{rust_arches}
- rust-defer-drop
ExclusiveArch: %{rust_arches}
- rust-deflate
ExclusiveArch: %{rust_arches}
- rust-defmac
ExclusiveArch: %{rust_arches}
- rust-delta_e
ExclusiveArch: %{rust_arches}
- rust-derivative
ExclusiveArch: %{rust_arches}
- rust-derive-new
ExclusiveArch: %{rust_arches}
- rust-derive_arbitrary
ExclusiveArch: %{rust_arches}
- rust-derive_arbitrary0.4
ExclusiveArch: %{rust_arches}
- rust-derive_builder
ExclusiveArch: %{rust_arches}
- rust-derive_builder0.9
ExclusiveArch: %{rust_arches}
- rust-derive_builder_core
ExclusiveArch: %{rust_arches}
- rust-derive_builder_core0.9
ExclusiveArch: %{rust_arches}
- rust-derive_builder_macro
ExclusiveArch: %{rust_arches}
- rust-derive_more
ExclusiveArch: %{rust_arches}
- rust-des
ExclusiveArch: %{rust_arches}
- rust-desed
ExclusiveArch: %{rust_arches}
- rust-deunicode
ExclusiveArch: %{rust_arches}
- rust-devicemapper
ExclusiveArch: %{rust_arches}
- rust-devicemapper-sys
ExclusiveArch: %{rust_arches}
- rust-dialoguer
ExclusiveArch: %{rust_arches}
- rust-diesel
ExclusiveArch: %{rust_arches}
- rust-diesel_derives
ExclusiveArch: %{rust_arches}
- rust-diesel_migrations
ExclusiveArch: %{rust_arches}
- rust-diff
ExclusiveArch: %{rust_arches}
- rust-difference
ExclusiveArch: %{rust_arches}
- rust-difflib
ExclusiveArch: %{rust_arches}
- rust-diffus
ExclusiveArch: %{rust_arches}
- rust-diffus-derive
ExclusiveArch: %{rust_arches}
- rust-digest
ExclusiveArch: %{rust_arches}
- rust-digest0.8
ExclusiveArch: %{rust_arches}
- rust-directories
ExclusiveArch: %{rust_arches}
- rust-directories-next
ExclusiveArch: %{rust_arches}
- rust-dirs
ExclusiveArch: %{rust_arches}
- rust-dirs-next
ExclusiveArch: %{rust_arches}
- rust-dirs-sys
ExclusiveArch: %{rust_arches}
- rust-dirs-sys-next
ExclusiveArch: %{rust_arches}
- rust-dirs2
ExclusiveArch: %{rust_arches}
- rust-diskonaut
ExclusiveArch: %{rust_arches}
- rust-displaydoc
ExclusiveArch: %{rust_arches}
- rust-dissimilar
ExclusiveArch: %{rust_arches}
- rust-dlib
ExclusiveArch: %{rust_arches}
- rust-dlib0.4
ExclusiveArch: %{rust_arches}
- rust-dlv-list
ExclusiveArch: %{rust_arches}
- rust-dns-lookup
ExclusiveArch: %{rust_arches}
- rust-dns-parser
ExclusiveArch: %{rust_arches}
- rust-doc-comment
ExclusiveArch: %{rust_arches}
- rust-docmatic
ExclusiveArch: %{rust_arches}
- rust-docopt
ExclusiveArch: %{rust_arches}
- rust-dotenv
ExclusiveArch: %{rust_arches}
- rust-downcast
ExclusiveArch: %{rust_arches}
- rust-downcast-rs
ExclusiveArch: %{rust_arches}
- rust-drg
ExclusiveArch: %{rust_arches}
- rust-dtoa
ExclusiveArch: %{rust_arches}
- rust-dtoa-short
ExclusiveArch: %{rust_arches}
- rust-dua-cli
ExclusiveArch: %{rust_arches}
- rust-duct
ExclusiveArch: %{rust_arches}
- rust-dummy
ExclusiveArch: %{rust_arches}
- rust-dunce
ExclusiveArch: %{rust_arches}
- rust-dutree
ExclusiveArch: %{rust_arches}
- rust-dyn-clone
ExclusiveArch: %{rust_arches}
- rust-easy-cast
ExclusiveArch: %{rust_arches}
- rust-easy-parallel
ExclusiveArch: %{rust_arches}
- rust-edit
ExclusiveArch: %{rust_arches}
- rust-edit-distance
ExclusiveArch: %{rust_arches}
- rust-either
ExclusiveArch: %{rust_arches}
- rust-elasticlunr-rs
ExclusiveArch: %{rust_arches}
- rust-elfcat
ExclusiveArch: %{rust_arches}
- rust-ena
ExclusiveArch: %{rust_arches}
- rust-encode_unicode
ExclusiveArch: %{rust_arches}
- rust-encoding
ExclusiveArch: %{rust_arches}
- rust-encoding-index-japanese
ExclusiveArch: %{rust_arches}
- rust-encoding-index-korean
ExclusiveArch: %{rust_arches}
- rust-encoding-index-simpchinese
ExclusiveArch: %{rust_arches}
- rust-encoding-index-singlebyte
ExclusiveArch: %{rust_arches}
- rust-encoding-index-tradchinese
ExclusiveArch: %{rust_arches}
- rust-encoding_index_tests
ExclusiveArch: %{rust_arches}
- rust-encoding_rs
ExclusiveArch: %{rust_arches}
- rust-encoding_rs_io
ExclusiveArch: %{rust_arches}
- rust-endian-type
ExclusiveArch: %{rust_arches}
- rust-entities
ExclusiveArch: %{rust_arches}
- rust-enum-as-inner
ExclusiveArch: %{rust_arches}
- rust-enum-iterator
ExclusiveArch: %{rust_arches}
- rust-enum-iterator-derive
ExclusiveArch: %{rust_arches}
- rust-enum-map
ExclusiveArch: %{rust_arches}
- rust-enum-map-derive
ExclusiveArch: %{rust_arches}
- rust-enum-repr
ExclusiveArch: %{rust_arches}
- rust-enum_primitive
ExclusiveArch: %{rust_arches}
- rust-enumflags2
ExclusiveArch: %{rust_arches}
- rust-enumflags2_derive
ExclusiveArch: %{rust_arches}
- rust-enumset
ExclusiveArch: %{rust_arches}
- rust-enumset_derive
ExclusiveArch: %{rust_arches}
- rust-env_logger
ExclusiveArch: %{rust_arches}
- rust-env_logger0.4
ExclusiveArch: %{rust_arches}
- rust-env_logger0.5
ExclusiveArch: %{rust_arches}
- rust-env_logger0.6
ExclusiveArch: %{rust_arches}
- rust-env_logger0.7
ExclusiveArch: %{rust_arches}
- rust-environment
ExclusiveArch: %{rust_arches}
- rust-envsubst
ExclusiveArch: %{rust_arches}
- rust-epoll
ExclusiveArch: %{rust_arches}
- rust-erased-serde
ExclusiveArch: %{rust_arches}
- rust-err-derive
ExclusiveArch: %{rust_arches}
- rust-errln
ExclusiveArch: %{rust_arches}
- rust-errno
ExclusiveArch: %{rust_arches}
- rust-error-chain
ExclusiveArch: %{rust_arches}
- rust-escaper
ExclusiveArch: %{rust_arches}
- rust-escargot
ExclusiveArch: %{rust_arches}
- rust-euclid
ExclusiveArch: %{rust_arches}
- rust-event-listener
ExclusiveArch: %{rust_arches}
- rust-exa
ExclusiveArch: %{rust_arches}
- rust-executable-path
ExclusiveArch: %{rust_arches}
- rust-exitcode
ExclusiveArch: %{rust_arches}
- rust-exitfailure
ExclusiveArch: %{rust_arches}
- rust-expat-sys
ExclusiveArch: %{rust_arches}
- rust-extend
ExclusiveArch: %{rust_arches}
- rust-extprim
ExclusiveArch: %{rust_arches}
- rust-extprim_literals_macros
ExclusiveArch: %{rust_arches}
- rust-fail
ExclusiveArch: %{rust_arches}
- rust-failure
ExclusiveArch: %{rust_arches}
- rust-failure-tools
ExclusiveArch: %{rust_arches}
- rust-failure_derive
ExclusiveArch: %{rust_arches}
- rust-fake
ExclusiveArch: %{rust_arches}
- rust-fake-simd
ExclusiveArch: %{rust_arches}
- rust-fake_clock
ExclusiveArch: %{rust_arches}
- rust-fallible-iterator
ExclusiveArch: %{rust_arches}
- rust-fallible-streaming-iterator
ExclusiveArch: %{rust_arches}
- rust-fallible_collections
ExclusiveArch: %{rust_arches}
- rust-fancy-regex
ExclusiveArch: %{rust_arches}
- rust-fastrand
ExclusiveArch: %{rust_arches}
- rust-fb_procfs
ExclusiveArch: %{rust_arches}
- rust-fbthrift_codegen_includer_proc_macro
ExclusiveArch: %{rust_arches}
- rust-fd-find
ExclusiveArch: %{rust_arches}
- rust-fd-lock
ExclusiveArch: %{rust_arches}
- rust-fdlimit
ExclusiveArch: %{rust_arches}
- rust-fedora
ExclusiveArch: %{rust_arches}
- rust-fedora-coreos-pinger
ExclusiveArch: %{rust_arches}
- rust-fedora-update-feedback
ExclusiveArch: %{rust_arches}
- rust-feed-rs
ExclusiveArch: %{rust_arches}
- rust-feedbin_api
ExclusiveArch: %{rust_arches}
- rust-feedly_api
ExclusiveArch: %{rust_arches}
- rust-femme
ExclusiveArch: %{rust_arches}
- rust-fern
ExclusiveArch: %{rust_arches}
- rust-fever_api
ExclusiveArch: %{rust_arches}
- rust-ffsend
ExclusiveArch: %{rust_arches}
- rust-ffsend-api
ExclusiveArch: %{rust_arches}
- rust-field-offset
ExclusiveArch: %{rust_arches}
- rust-file-per-thread-logger
ExclusiveArch: %{rust_arches}
- rust-filedescriptor
ExclusiveArch: %{rust_arches}
- rust-filesize
ExclusiveArch: %{rust_arches}
- rust-filetime
ExclusiveArch: %{rust_arches}
- rust-filetreelist
ExclusiveArch: %{rust_arches}
- rust-findshlibs
ExclusiveArch: %{rust_arches}
- rust-fixed
ExclusiveArch: %{rust_arches}
- rust-fixedbitset
ExclusiveArch: %{rust_arches}
- rust-flame
ExclusiveArch: %{rust_arches}
- rust-flate2
ExclusiveArch: %{rust_arches}
- rust-float-cmp
ExclusiveArch: %{rust_arches}
- rust-float-cmp0.6
ExclusiveArch: %{rust_arches}
- rust-float-ord
ExclusiveArch: %{rust_arches}
- rust-flume
ExclusiveArch: %{rust_arches}
- rust-fn-error-context
ExclusiveArch: %{rust_arches}
- rust-fnv
ExclusiveArch: %{rust_arches}
- rust-font-kit
ExclusiveArch: %{rust_arches}
- rust-foreign-types
ExclusiveArch: %{rust_arches}
- rust-foreign-types-macros
ExclusiveArch: %{rust_arches}
- rust-foreign-types-shared
ExclusiveArch: %{rust_arches}
- rust-foreign-types-shared0.1
ExclusiveArch: %{rust_arches}
- rust-foreign-types0.3
ExclusiveArch: %{rust_arches}
- rust-form_urlencoded
ExclusiveArch: %{rust_arches}
- rust-fragile
ExclusiveArch: %{rust_arches}
- rust-freetype
ExclusiveArch: %{rust_arches}
- rust-freetype-rs
ExclusiveArch: %{rust_arches}
- rust-freetype-sys
ExclusiveArch: %{rust_arches}
- rust-fs-set-times
ExclusiveArch: %{rust_arches}
- rust-fs2
ExclusiveArch: %{rust_arches}
- rust-fs_extra
ExclusiveArch: %{rust_arches}
- rust-funty
ExclusiveArch: %{rust_arches}
- rust-fuse
ExclusiveArch: %{rust_arches}
- rust-futf
ExclusiveArch: %{rust_arches}
- rust-futures
ExclusiveArch: %{rust_arches}
- rust-futures-channel
ExclusiveArch: %{rust_arches}
- rust-futures-core
ExclusiveArch: %{rust_arches}
- rust-futures-cpupool
ExclusiveArch: %{rust_arches}
- rust-futures-executor
ExclusiveArch: %{rust_arches}
- rust-futures-io
ExclusiveArch: %{rust_arches}
- rust-futures-lite
ExclusiveArch: %{rust_arches}
- rust-futures-macro
ExclusiveArch: %{rust_arches}
- rust-futures-sink
ExclusiveArch: %{rust_arches}
- rust-futures-task
ExclusiveArch: %{rust_arches}
- rust-futures-test
ExclusiveArch: %{rust_arches}
- rust-futures-timer
ExclusiveArch: %{rust_arches}
- rust-futures-util
ExclusiveArch: %{rust_arches}
- rust-futures0.1
ExclusiveArch: %{rust_arches}
- rust-fuzzy-matcher
ExclusiveArch: %{rust_arches}
- rust-fxhash
ExclusiveArch: %{rust_arches}
- rust-gcsf
ExclusiveArch: %{rust_arches}
- rust-gdk
ExclusiveArch: %{rust_arches}
- rust-gdk-pixbuf
ExclusiveArch: %{rust_arches}
- rust-gdk-pixbuf-sys
ExclusiveArch: %{rust_arches}
- rust-gdk-sys
ExclusiveArch: %{rust_arches}
- rust-gdk4
ExclusiveArch: %{rust_arches}
- rust-gdk4-sys
ExclusiveArch: %{rust_arches}
- rust-generic-array
ExclusiveArch: %{rust_arches}
- rust-generic-array0.12
ExclusiveArch: %{rust_arches}
- rust-genmesh
ExclusiveArch: %{rust_arches}
- rust-getch
ExclusiveArch: %{rust_arches}
- rust-gethostname
ExclusiveArch: %{rust_arches}
- rust-getopts
ExclusiveArch: %{rust_arches}
- rust-getrandom
ExclusiveArch: %{rust_arches}
- rust-getrandom0.1
ExclusiveArch: %{rust_arches}
- rust-getset
ExclusiveArch: %{rust_arches}
- rust-gettext-rs
ExclusiveArch: %{rust_arches}
- rust-gettext-sys
ExclusiveArch: %{rust_arches}
- rust-ghash
ExclusiveArch: %{rust_arches}
- rust-ghost
ExclusiveArch: %{rust_arches}
- rust-gif
ExclusiveArch: %{rust_arches}
- rust-gimli
ExclusiveArch: %{rust_arches}
- rust-gio
ExclusiveArch: %{rust_arches}
- rust-gio-sys
ExclusiveArch: %{rust_arches}
- rust-gir-format-check
ExclusiveArch: %{rust_arches}
- rust-git-delta
ExclusiveArch: %{rust_arches}
- rust-git-version
ExclusiveArch: %{rust_arches}
- rust-git-version-macro
ExclusiveArch: %{rust_arches}
- rust-git2
ExclusiveArch: %{rust_arches}
- rust-git2-curl
ExclusiveArch: %{rust_arches}
- rust-gitui
ExclusiveArch: %{rust_arches}
- rust-gl_generator
ExclusiveArch: %{rust_arches}
- rust-glam
ExclusiveArch: %{rust_arches}
- rust-glib
ExclusiveArch: %{rust_arches}
- rust-glib-macros
ExclusiveArch: %{rust_arches}
- rust-glib-sys
ExclusiveArch: %{rust_arches}
- rust-glob
ExclusiveArch: %{rust_arches}
- rust-globset
ExclusiveArch: %{rust_arches}
- rust-globwalk
ExclusiveArch: %{rust_arches}
- rust-glutin
ExclusiveArch: %{rust_arches}
- rust-glutin_egl_sys
ExclusiveArch: %{rust_arches}
- rust-glutin_glx_sys
ExclusiveArch: %{rust_arches}
- rust-gobject-sys
ExclusiveArch: %{rust_arches}
- rust-goblin
ExclusiveArch: %{rust_arches}
- rust-google-drive3-fork
ExclusiveArch: %{rust_arches}
- rust-gptman
ExclusiveArch: %{rust_arches}
- rust-graphene-rs
ExclusiveArch: %{rust_arches}
- rust-graphene-sys
ExclusiveArch: %{rust_arches}
- rust-grep
ExclusiveArch: %{rust_arches}
- rust-grep-cli
ExclusiveArch: %{rust_arches}
- rust-grep-matcher
ExclusiveArch: %{rust_arches}
- rust-grep-pcre2
ExclusiveArch: %{rust_arches}
- rust-grep-printer
ExclusiveArch: %{rust_arches}
- rust-grep-regex
ExclusiveArch: %{rust_arches}
- rust-grep-searcher
ExclusiveArch: %{rust_arches}
- rust-groupable
ExclusiveArch: %{rust_arches}
- rust-gsk4
ExclusiveArch: %{rust_arches}
- rust-gsk4-sys
ExclusiveArch: %{rust_arches}
- rust-gstreamer
ExclusiveArch: %{rust_arches}
- rust-gstreamer-audio
ExclusiveArch: %{rust_arches}
- rust-gstreamer-audio-sys
ExclusiveArch: %{rust_arches}
- rust-gstreamer-base
ExclusiveArch: %{rust_arches}
- rust-gstreamer-base-sys
ExclusiveArch: %{rust_arches}
- rust-gstreamer-editing-services
ExclusiveArch: %{rust_arches}
- rust-gstreamer-editing-services-sys
ExclusiveArch: %{rust_arches}
- rust-gstreamer-pbutils
ExclusiveArch: %{rust_arches}
- rust-gstreamer-pbutils-sys
ExclusiveArch: %{rust_arches}
- rust-gstreamer-player
ExclusiveArch: %{rust_arches}
- rust-gstreamer-player-sys
ExclusiveArch: %{rust_arches}
- rust-gstreamer-sys
ExclusiveArch: %{rust_arches}
- rust-gstreamer-video
ExclusiveArch: %{rust_arches}
- rust-gstreamer-video-sys
ExclusiveArch: %{rust_arches}
- rust-gtk
ExclusiveArch: %{rust_arches}
- rust-gtk-macros
ExclusiveArch: %{rust_arches}
- rust-gtk-rs-lgpl-docs
ExclusiveArch: %{rust_arches}
- rust-gtk-sys
ExclusiveArch: %{rust_arches}
- rust-gtk3-macros
ExclusiveArch: %{rust_arches}
- rust-gtk4
ExclusiveArch: %{rust_arches}
- rust-gtk4-macros
ExclusiveArch: %{rust_arches}
- rust-gtk4-sys
ExclusiveArch: %{rust_arches}
- rust-gzip-header
ExclusiveArch: %{rust_arches}
- rust-h2
ExclusiveArch: %{rust_arches}
- rust-h2_0.2
ExclusiveArch: %{rust_arches}
- rust-half
ExclusiveArch: %{rust_arches}
- rust-hamcrest
ExclusiveArch: %{rust_arches}
- rust-hamcrest2
ExclusiveArch: %{rust_arches}
- rust-handlebars
ExclusiveArch: %{rust_arches}
- rust-hashbrown
ExclusiveArch: %{rust_arches}
- rust-hashbrown0.9
ExclusiveArch: %{rust_arches}
- rust-hashlink
ExclusiveArch: %{rust_arches}
- rust-headers
ExclusiveArch: %{rust_arches}
- rust-headers-core
ExclusiveArch: %{rust_arches}
- rust-headers-derive
ExclusiveArch: %{rust_arches}
- rust-heapsize
ExclusiveArch: %{rust_arches}
- rust-heatseeker
ExclusiveArch: %{rust_arches}
- rust-heck
ExclusiveArch: %{rust_arches}
- rust-hex
ExclusiveArch: %{rust_arches}
- rust-hex-literal
ExclusiveArch: %{rust_arches}
- rust-hex-literal-impl
ExclusiveArch: %{rust_arches}
- rust-hex-literal0.2
ExclusiveArch: %{rust_arches}
- rust-hexyl
ExclusiveArch: %{rust_arches}
- rust-hkdf
ExclusiveArch: %{rust_arches}
- rust-hmac
ExclusiveArch: %{rust_arches}
- rust-home
ExclusiveArch: %{rust_arches}
- rust-horrorshow
ExclusiveArch: %{rust_arches}
- rust-hostname
ExclusiveArch: %{rust_arches}
- rust-hostname-validator
ExclusiveArch: %{rust_arches}
- rust-hound
ExclusiveArch: %{rust_arches}
- rust-html2pango
ExclusiveArch: %{rust_arches}
- rust-html5ever
ExclusiveArch: %{rust_arches}
- rust-http
ExclusiveArch: %{rust_arches}
- rust-http-body
ExclusiveArch: %{rust_arches}
- rust-http-body0.3
ExclusiveArch: %{rust_arches}
- rust-http0.1
ExclusiveArch: %{rust_arches}
- rust-httparse
ExclusiveArch: %{rust_arches}
- rust-httpdate
ExclusiveArch: %{rust_arches}
- rust-human-panic
ExclusiveArch: %{rust_arches}
- rust-human-sort
ExclusiveArch: %{rust_arches}
- rust-humansize
ExclusiveArch: %{rust_arches}
- rust-humantime
ExclusiveArch: %{rust_arches}
- rust-humantime-serde
ExclusiveArch: %{rust_arches}
- rust-humantime1
ExclusiveArch: %{rust_arches}
- rust-hyper
ExclusiveArch: %{rust_arches}
- rust-hyper-native-tls
ExclusiveArch: %{rust_arches}
- rust-hyper-rustls
ExclusiveArch: %{rust_arches}
- rust-hyper-staticfile
ExclusiveArch: %{rust_arches}
- rust-hyper-tls
ExclusiveArch: %{rust_arches}
- rust-hyper-tls0.4
ExclusiveArch: %{rust_arches}
- rust-hyper0.10
ExclusiveArch: %{rust_arches}
- rust-hyper0.13
ExclusiveArch: %{rust_arches}
- rust-hyperfine
ExclusiveArch: %{rust_arches}
- rust-i3ipc
ExclusiveArch: %{rust_arches}
- rust-id_tree
ExclusiveArch: %{rust_arches}
- rust-ident_case
ExclusiveArch: %{rust_arches}
- rust-idna
ExclusiveArch: %{rust_arches}
- rust-idna0.1
ExclusiveArch: %{rust_arches}
- rust-ignore
ExclusiveArch: %{rust_arches}
- rust-im-rc
ExclusiveArch: %{rust_arches}
- rust-image
ExclusiveArch: %{rust_arches}
- rust-image-roll
ExclusiveArch: %{rust_arches}
- rust-imgref
ExclusiveArch: %{rust_arches}
- rust-imgui
ExclusiveArch: %{rust_arches}
- rust-imgui-sys
ExclusiveArch: %{rust_arches}
- rust-imgui-winit-support
ExclusiveArch: %{rust_arches}
- rust-indexmap
ExclusiveArch: %{rust_arches}
- rust-indicatif
ExclusiveArch: %{rust_arches}
- rust-indoc
ExclusiveArch: %{rust_arches}
- rust-inflate
ExclusiveArch: %{rust_arches}
- rust-inotify
ExclusiveArch: %{rust_arches}
- rust-inotify-sys
ExclusiveArch: %{rust_arches}
- rust-input_buffer
ExclusiveArch: %{rust_arches}
- rust-insta
ExclusiveArch: %{rust_arches}
- rust-instant
ExclusiveArch: %{rust_arches}
- rust-interpolate_name
ExclusiveArch: %{rust_arches}
- rust-intervaltree
ExclusiveArch: %{rust_arches}
- rust-invalidstring
ExclusiveArch: %{rust_arches}
- rust-inventory
ExclusiveArch: %{rust_arches}
- rust-inventory-impl
ExclusiveArch: %{rust_arches}
- rust-io-lifetimes
ExclusiveArch: %{rust_arches}
- rust-ioctl-rs
ExclusiveArch: %{rust_arches}
- rust-iocuddle
ExclusiveArch: %{rust_arches}
- rust-iovec
ExclusiveArch: %{rust_arches}
- rust-ipnet
ExclusiveArch: %{rust_arches}
- rust-ipnetwork
ExclusiveArch: %{rust_arches}
- rust-iron
ExclusiveArch: %{rust_arches}
- rust-isahc
ExclusiveArch: %{rust_arches}
- rust-iso8601
ExclusiveArch: %{rust_arches}
- rust-iter-read
ExclusiveArch: %{rust_arches}
- rust-itertools
ExclusiveArch: %{rust_arches}
- rust-itertools-num
ExclusiveArch: %{rust_arches}
- rust-itertools0.8
ExclusiveArch: %{rust_arches}
- rust-itertools0.9
ExclusiveArch: %{rust_arches}
- rust-itoa
ExclusiveArch: %{rust_arches}
- rust-ivf
ExclusiveArch: %{rust_arches}
- rust-javascriptcore-rs
ExclusiveArch: %{rust_arches}
- rust-javascriptcore-rs-sys
ExclusiveArch: %{rust_arches}
- rust-jetscii
ExclusiveArch: %{rust_arches}
- rust-jieba-rs
ExclusiveArch: %{rust_arches}
- rust-jobserver
ExclusiveArch: %{rust_arches}
- rust-jpeg-decoder
ExclusiveArch: %{rust_arches}
- rust-jql
ExclusiveArch: %{rust_arches}
- rust-js-sys
ExclusiveArch: %{rust_arches}
- rust-js_int
ExclusiveArch: %{rust_arches}
- rust-json
ExclusiveArch: %{rust_arches}
- rust-just
ExclusiveArch: %{rust_arches}
- rust-jwalk
ExclusiveArch: %{rust_arches}
- rust-k9
ExclusiveArch: %{rust_arches}
- rust-keccak
ExclusiveArch: %{rust_arches}
- rust-khronos_api
ExclusiveArch: %{rust_arches}
- rust-kstring
ExclusiveArch: %{rust_arches}
- rust-kv-log-macro
ExclusiveArch: %{rust_arches}
- rust-lab
ExclusiveArch: %{rust_arches}
- rust-lalrpop
ExclusiveArch: %{rust_arches}
- rust-lalrpop-util
ExclusiveArch: %{rust_arches}
- rust-language-tags
ExclusiveArch: %{rust_arches}
- rust-lazy-init
ExclusiveArch: %{rust_arches}
- rust-lazy_static
ExclusiveArch: %{rust_arches}
- rust-lazycell
ExclusiveArch: %{rust_arches}
- rust-leb128
ExclusiveArch: %{rust_arches}
- rust-lewton
ExclusiveArch: %{rust_arches}
- rust-lexical-core
ExclusiveArch: %{rust_arches}
- rust-lexiclean
ExclusiveArch: %{rust_arches}
- rust-libblkid-rs-sys
ExclusiveArch: %{rust_arches}
- rust-libbpf-cargo
ExclusiveArch: %{rust_arches}
- rust-libbpf-rs
ExclusiveArch: %{rust_arches}
- rust-libbpf-sys
ExclusiveArch: %{rust_arches}
- rust-libc
ExclusiveArch: %{rust_arches}
- rust-libcryptsetup-rs
ExclusiveArch: %{rust_arches}
- rust-libcryptsetup-rs-sys
ExclusiveArch: %{rust_arches}
- rust-libdbus-sys
ExclusiveArch: %{rust_arches}
- rust-libdeflate-sys
ExclusiveArch: %{rust_arches}
- rust-libdeflater
ExclusiveArch: %{rust_arches}
- rust-libflate
ExclusiveArch: %{rust_arches}
- rust-libflate_lz77
ExclusiveArch: %{rust_arches}
- rust-libgit2-sys
ExclusiveArch: %{rust_arches}
- rust-libhandy
ExclusiveArch: %{rust_arches}
- rust-libhandy-sys
ExclusiveArch: %{rust_arches}
- rust-libloading
ExclusiveArch: %{rust_arches}
- rust-libloading0.6
ExclusiveArch: %{rust_arches}
- rust-libm
ExclusiveArch: %{rust_arches}
- rust-libmount
ExclusiveArch: %{rust_arches}
- rust-libnotcurses-sys
ExclusiveArch: %{rust_arches}
- rust-liboverdrop
ExclusiveArch: %{rust_arches}
- rust-libpulse-binding
ExclusiveArch: %{rust_arches}
- rust-libpulse-sys
ExclusiveArch: %{rust_arches}
- rust-libslirp
ExclusiveArch: %{rust_arches}
- rust-libslirp-sys
ExclusiveArch: %{rust_arches}
- rust-libsqlite3-sys
ExclusiveArch: %{rust_arches}
- rust-libssh2-sys
ExclusiveArch: %{rust_arches}
- rust-libsystemd
ExclusiveArch: %{rust_arches}
- rust-libsystemd-sys
ExclusiveArch: %{rust_arches}
- rust-libudev
ExclusiveArch: %{rust_arches}
- rust-libudev-sys
ExclusiveArch: %{rust_arches}
- rust-libwebp
ExclusiveArch: %{rust_arches}
- rust-libwebp-sys2
ExclusiveArch: %{rust_arches}
- rust-libxml
ExclusiveArch: %{rust_arches}
- rust-libz-sys
ExclusiveArch: %{rust_arches}
- rust-line-wrap
ExclusiveArch: %{rust_arches}
- rust-link-cplusplus
ExclusiveArch: %{rust_arches}
- rust-linked-hash-map
ExclusiveArch: %{rust_arches}
- rust-linkify
ExclusiveArch: %{rust_arches}
- rust-linreg
ExclusiveArch: %{rust_arches}
- rust-linux_proc
ExclusiveArch: %{rust_arches}
- rust-lipsum
ExclusiveArch: %{rust_arches}
- rust-liquid
ExclusiveArch: %{rust_arches}
- rust-liquid-core
ExclusiveArch: %{rust_arches}
- rust-liquid-derive
ExclusiveArch: %{rust_arches}
- rust-liquid-lib
ExclusiveArch: %{rust_arches}
- rust-listenfd
ExclusiveArch: %{rust_arches}
- rust-lmdb
ExclusiveArch: %{rust_arches}
- rust-lmdb-sys
ExclusiveArch: %{rust_arches}
- rust-locale
ExclusiveArch: %{rust_arches}
- rust-locale_config
ExclusiveArch: %{rust_arches}
- rust-lock_api
ExclusiveArch: %{rust_arches}
- rust-lockfree
ExclusiveArch: %{rust_arches}
- rust-log
ExclusiveArch: %{rust_arches}
- rust-log-mdc
ExclusiveArch: %{rust_arches}
- rust-log-panics
ExclusiveArch: %{rust_arches}
- rust-log0.3
ExclusiveArch: %{rust_arches}
- rust-log4rs
ExclusiveArch: %{rust_arches}
- rust-loggerv
ExclusiveArch: %{rust_arches}
- rust-loopdev
ExclusiveArch: %{rust_arches}
- rust-lru-cache
ExclusiveArch: %{rust_arches}
- rust-lru_time_cache
ExclusiveArch: %{rust_arches}
- rust-lscolors
ExclusiveArch: %{rust_arches}
- rust-lsd
ExclusiveArch: %{rust_arches}
- rust-lzma-sys
ExclusiveArch: %{rust_arches}
- rust-lzw
ExclusiveArch: %{rust_arches}
- rust-mac
ExclusiveArch: %{rust_arches}
- rust-macro-attr
ExclusiveArch: %{rust_arches}
- rust-macroquad_macro
ExclusiveArch: %{rust_arches}
- rust-magic-crypt
ExclusiveArch: %{rust_arches}
- rust-maildir
ExclusiveArch: %{rust_arches}
- rust-mailparse
ExclusiveArch: %{rust_arches}
- rust-man
ExclusiveArch: %{rust_arches}
- rust-maplit
ExclusiveArch: %{rust_arches}
- rust-markup5ever
ExclusiveArch: %{rust_arches}
- rust-markup5ever_rcdom
ExclusiveArch: %{rust_arches}
- rust-match_cfg
ExclusiveArch: %{rust_arches}
- rust-matches
ExclusiveArch: %{rust_arches}
- rust-matrixcompare
ExclusiveArch: %{rust_arches}
- rust-matrixcompare-core
ExclusiveArch: %{rust_arches}
- rust-matrixcompare-mock
ExclusiveArch: %{rust_arches}
- rust-matrixmultiply
ExclusiveArch: %{rust_arches}
- rust-maxminddb
ExclusiveArch: %{rust_arches}
- rust-maybe-owned
ExclusiveArch: %{rust_arches}
- rust-maybe-uninit
ExclusiveArch: %{rust_arches}
- rust-mbox
ExclusiveArch: %{rust_arches}
- rust-mbrman
ExclusiveArch: %{rust_arches}
- rust-md-5
ExclusiveArch: %{rust_arches}
- rust-md5
ExclusiveArch: %{rust_arches}
- rust-mdl
ExclusiveArch: %{rust_arches}
- rust-memchr
ExclusiveArch: %{rust_arches}
- rust-memmap
ExclusiveArch: %{rust_arches}
- rust-memmap2
ExclusiveArch: %{rust_arches}
- rust-memmap2_0.1
ExclusiveArch: %{rust_arches}
- rust-memoffset
ExclusiveArch: %{rust_arches}
- rust-memoffset0.5
ExclusiveArch: %{rust_arches}
- rust-memsec
ExclusiveArch: %{rust_arches}
- rust-metadeps
ExclusiveArch: %{rust_arches}
- rust-migrations_internals
ExclusiveArch: %{rust_arches}
- rust-migrations_macros
ExclusiveArch: %{rust_arches}
- rust-mime
ExclusiveArch: %{rust_arches}
- rust-mime-sniffer
ExclusiveArch: %{rust_arches}
- rust-mime0.2
ExclusiveArch: %{rust_arches}
- rust-mime_guess
ExclusiveArch: %{rust_arches}
- rust-mime_guess1
ExclusiveArch: %{rust_arches}
- rust-miniflux_api
ExclusiveArch: %{rust_arches}
- rust-minify-html
ExclusiveArch: %{rust_arches}
- rust-minimal-lexical
ExclusiveArch: %{rust_arches}
- rust-minimp3
ExclusiveArch: %{rust_arches}
- rust-minimp3-sys
ExclusiveArch: %{rust_arches}
- rust-miniz-sys
ExclusiveArch: %{rust_arches}
- rust-miniz_oxide
ExclusiveArch: %{rust_arches}
- rust-miniz_oxide0.3
ExclusiveArch: %{rust_arches}
- rust-miniz_oxide_c_api
ExclusiveArch: %{rust_arches}
- rust-mint
ExclusiveArch: %{rust_arches}
- rust-mio
ExclusiveArch: %{rust_arches}
- rust-mio-extras
ExclusiveArch: %{rust_arches}
- rust-mio-uds
ExclusiveArch: %{rust_arches}
- rust-mio0.6
ExclusiveArch: %{rust_arches}
- rust-mktemp
ExclusiveArch: %{rust_arches}
- rust-mnt
ExclusiveArch: %{rust_arches}
- rust-mockall
ExclusiveArch: %{rust_arches}
- rust-mockall_derive
ExclusiveArch: %{rust_arches}
- rust-mockall_double
ExclusiveArch: %{rust_arches}
- rust-mockito
ExclusiveArch: %{rust_arches}
- rust-modifier
ExclusiveArch: %{rust_arches}
- rust-more-asserts
ExclusiveArch: %{rust_arches}
- rust-mp4parse
ExclusiveArch: %{rust_arches}
- rust-msgbox
ExclusiveArch: %{rust_arches}
- rust-muldiv
ExclusiveArch: %{rust_arches}
- rust-multimap
ExclusiveArch: %{rust_arches}
- rust-multipart
ExclusiveArch: %{rust_arches}
- rust-mustache
ExclusiveArch: %{rust_arches}
- rust-nalgebra
ExclusiveArch: %{rust_arches}
- rust-nalgebra-macros
ExclusiveArch: %{rust_arches}
- rust-nasm-rs
ExclusiveArch: %{rust_arches}
- rust-native-tls
ExclusiveArch: %{rust_arches}
- rust-natord
ExclusiveArch: %{rust_arches}
- rust-navi
ExclusiveArch: %{rust_arches}
- rust-nb-connect
ExclusiveArch: %{rust_arches}
- rust-ncurses
ExclusiveArch: %{rust_arches}
- rust-net2
ExclusiveArch: %{rust_arches}
- rust-netlink-packet-core
ExclusiveArch: %{rust_arches}
- rust-netlink-packet-route
ExclusiveArch: %{rust_arches}
- rust-netlink-packet-utils
ExclusiveArch: %{rust_arches}
- rust-netlink-proto
ExclusiveArch: %{rust_arches}
- rust-netlink-sys
ExclusiveArch: %{rust_arches}
- rust-netmap_sys
ExclusiveArch: %{rust_arches}
- rust-nettle
ExclusiveArch: %{rust_arches}
- rust-nettle-sys
ExclusiveArch: %{rust_arches}
- rust-new_debug_unreachable
ExclusiveArch: %{rust_arches}
- rust-news-flash
ExclusiveArch: %{rust_arches}
- rust-newsblur_api
ExclusiveArch: %{rust_arches}
- rust-newtype_derive
ExclusiveArch: %{rust_arches}
- rust-nibble_vec
ExclusiveArch: %{rust_arches}
- rust-nickel
ExclusiveArch: %{rust_arches}
- rust-nix
ExclusiveArch: %{rust_arches}
- rust-nix0.14
ExclusiveArch: %{rust_arches}
- rust-nix0.17
ExclusiveArch: %{rust_arches}
- rust-nix0.18
ExclusiveArch: %{rust_arches}
- rust-nix0.20
ExclusiveArch: %{rust_arches}
- rust-no-panic
ExclusiveArch: %{rust_arches}
- rust-nodrop
ExclusiveArch: %{rust_arches}
- rust-nom
ExclusiveArch: %{rust_arches}
- rust-nom4
ExclusiveArch: %{rust_arches}
- rust-nom5
ExclusiveArch: %{rust_arches}
- rust-nom6
ExclusiveArch: %{rust_arches}
- rust-noop_proc_macro
ExclusiveArch: %{rust_arches}
- rust-normalize-line-endings
ExclusiveArch: %{rust_arches}
- rust-notify
ExclusiveArch: %{rust_arches}
- rust-notify-rust
ExclusiveArch: %{rust_arches}
- rust-num
ExclusiveArch: %{rust_arches}
- rust-num-bigint
ExclusiveArch: %{rust_arches}
- rust-num-bigint-dig
ExclusiveArch: %{rust_arches}
- rust-num-bigint0.3
ExclusiveArch: %{rust_arches}
- rust-num-complex
ExclusiveArch: %{rust_arches}
- rust-num-complex0.3
ExclusiveArch: %{rust_arches}
- rust-num-derive
ExclusiveArch: %{rust_arches}
- rust-num-integer
ExclusiveArch: %{rust_arches}
- rust-num-iter
ExclusiveArch: %{rust_arches}
- rust-num-rational
ExclusiveArch: %{rust_arches}
- rust-num-rational0.3
ExclusiveArch: %{rust_arches}
- rust-num-traits
ExclusiveArch: %{rust_arches}
- rust-num-traits0.1
ExclusiveArch: %{rust_arches}
- rust-num0.3
ExclusiveArch: %{rust_arches}
- rust-num_cpus
ExclusiveArch: %{rust_arches}
- rust-num_enum
ExclusiveArch: %{rust_arches}
- rust-num_enum_derive
ExclusiveArch: %{rust_arches}
- rust-number_prefix
ExclusiveArch: %{rust_arches}
- rust-numtoa
ExclusiveArch: %{rust_arches}
- rust-oauth2
ExclusiveArch: %{rust_arches}
- rust-obfstr
ExclusiveArch: %{rust_arches}
- rust-obj
ExclusiveArch: %{rust_arches}
- rust-object
ExclusiveArch: %{rust_arches}
- rust-odds
ExclusiveArch: %{rust_arches}
- rust-ogg
ExclusiveArch: %{rust_arches}
- rust-oid
ExclusiveArch: %{rust_arches}
- rust-once_cell
ExclusiveArch: %{rust_arches}
- rust-onig
ExclusiveArch: %{rust_arches}
- rust-onig_sys
ExclusiveArch: %{rust_arches}
- rust-oorandom
ExclusiveArch: %{rust_arches}
- rust-opaque-debug
ExclusiveArch: %{rust_arches}
- rust-open
ExclusiveArch: %{rust_arches}
- rust-openat
ExclusiveArch: %{rust_arches}
- rust-openat-ext
ExclusiveArch: %{rust_arches}
- rust-opener
ExclusiveArch: %{rust_arches}
- rust-openssh-keys
ExclusiveArch: %{rust_arches}
- rust-openssl
ExclusiveArch: %{rust_arches}
- rust-openssl-probe
ExclusiveArch: %{rust_arches}
- rust-openssl-sys
ExclusiveArch: %{rust_arches}
- rust-opml
ExclusiveArch: %{rust_arches}
- rust-ord_subset
ExclusiveArch: %{rust_arches}
- rust-ordered-float
ExclusiveArch: %{rust_arches}
- rust-ordered-multimap
ExclusiveArch: %{rust_arches}
- rust-os_info
ExclusiveArch: %{rust_arches}
- rust-os_pipe
ExclusiveArch: %{rust_arches}
- rust-os_str_bytes
ExclusiveArch: %{rust_arches}
- rust-os_type
ExclusiveArch: %{rust_arches}
- rust-osmesa-sys
ExclusiveArch: %{rust_arches}
- rust-osstrtools
ExclusiveArch: %{rust_arches}
- rust-ostree
ExclusiveArch: %{rust_arches}
- rust-ostree-sys
ExclusiveArch: %{rust_arches}
- rust-ouroboros
ExclusiveArch: %{rust_arches}
- rust-ouroboros_macro
ExclusiveArch: %{rust_arches}
- rust-owned-alloc
ExclusiveArch: %{rust_arches}
- rust-owned_ttf_parser
ExclusiveArch: %{rust_arches}
- rust-owning_ref
ExclusiveArch: %{rust_arches}
- rust-oxipng
ExclusiveArch: %{rust_arches}
- rust-packaging
ExclusiveArch: %{rust_arches}
- rust-pad
ExclusiveArch: %{rust_arches}
- rust-page_size
ExclusiveArch: %{rust_arches}
- rust-pager
ExclusiveArch: %{rust_arches}
- rust-palette
ExclusiveArch: %{rust_arches}
- rust-palette_derive
ExclusiveArch: %{rust_arches}
- rust-pam
ExclusiveArch: %{rust_arches}
- rust-pam-client
ExclusiveArch: %{rust_arches}
- rust-pam-sys
ExclusiveArch: %{rust_arches}
- rust-pancurses
ExclusiveArch: %{rust_arches}
- rust-pango
ExclusiveArch: %{rust_arches}
- rust-pango-sys
ExclusiveArch: %{rust_arches}
- rust-pangocairo
ExclusiveArch: %{rust_arches}
- rust-pangocairo-sys
ExclusiveArch: %{rust_arches}
- rust-parity-wasm
ExclusiveArch: %{rust_arches}
- rust-parking
ExclusiveArch: %{rust_arches}
- rust-parking_lot
ExclusiveArch: %{rust_arches}
- rust-parking_lot_core
ExclusiveArch: %{rust_arches}
- rust-parse-zoneinfo
ExclusiveArch: %{rust_arches}
- rust-parse_cfg
ExclusiveArch: %{rust_arches}
- rust-parsec-client
ExclusiveArch: %{rust_arches}
- rust-parsec-interface
ExclusiveArch: %{rust_arches}
- rust-partial-io
ExclusiveArch: %{rust_arches}
- rust-partition-identity
ExclusiveArch: %{rust_arches}
- rust-paste
ExclusiveArch: %{rust_arches}
- rust-paste-impl
ExclusiveArch: %{rust_arches}
- rust-path-absolutize
ExclusiveArch: %{rust_arches}
- rust-path-dedot
ExclusiveArch: %{rust_arches}
- rust-path-slash
ExclusiveArch: %{rust_arches}
- rust-pathdiff
ExclusiveArch: %{rust_arches}
- rust-pathfinder_geometry
ExclusiveArch: %{rust_arches}
- rust-pathfinder_simd
ExclusiveArch: %{rust_arches}
- rust-pbr
ExclusiveArch: %{rust_arches}
- rust-pcap
ExclusiveArch: %{rust_arches}
- rust-pcre2
ExclusiveArch: %{rust_arches}
- rust-pcre2-sys
ExclusiveArch: %{rust_arches}
- rust-peeking_take_while
ExclusiveArch: %{rust_arches}
- rust-peg
ExclusiveArch: %{rust_arches}
- rust-peg-macros
ExclusiveArch: %{rust_arches}
- rust-peg-runtime
ExclusiveArch: %{rust_arches}
- rust-peg0.5
ExclusiveArch: %{rust_arches}
- rust-pem
ExclusiveArch: %{rust_arches}
- rust-percent-encoding
ExclusiveArch: %{rust_arches}
- rust-percent-encoding1
ExclusiveArch: %{rust_arches}
- rust-peresil
ExclusiveArch: %{rust_arches}
- rust-permutate
ExclusiveArch: %{rust_arches}
- rust-permutohedron
ExclusiveArch: %{rust_arches}
- rust-pest
ExclusiveArch: %{rust_arches}
- rust-pest_derive
ExclusiveArch: %{rust_arches}
- rust-pest_generator
ExclusiveArch: %{rust_arches}
- rust-pest_meta
ExclusiveArch: %{rust_arches}
- rust-petgraph
ExclusiveArch: %{rust_arches}
- rust-phf
ExclusiveArch: %{rust_arches}
- rust-phf0.7
ExclusiveArch: %{rust_arches}
- rust-phf_codegen
ExclusiveArch: %{rust_arches}
- rust-phf_codegen0.7
ExclusiveArch: %{rust_arches}
- rust-phf_generator
ExclusiveArch: %{rust_arches}
- rust-phf_generator0.7
ExclusiveArch: %{rust_arches}
- rust-phf_macros
ExclusiveArch: %{rust_arches}
- rust-phf_macros0.7
ExclusiveArch: %{rust_arches}
- rust-phf_shared
ExclusiveArch: %{rust_arches}
- rust-phf_shared0.7
ExclusiveArch: %{rust_arches}
- rust-picky-asn1
ExclusiveArch: %{rust_arches}
- rust-picky-asn1-der
ExclusiveArch: %{rust_arches}
- rust-picky-asn1-x509
ExclusiveArch: %{rust_arches}
- rust-pico-args
ExclusiveArch: %{rust_arches}
- rust-pid
ExclusiveArch: %{rust_arches}
- rust-pin-project
ExclusiveArch: %{rust_arches}
- rust-pin-project-internal
ExclusiveArch: %{rust_arches}
- rust-pin-project-internal0.4
ExclusiveArch: %{rust_arches}
- rust-pin-project-lite
ExclusiveArch: %{rust_arches}
- rust-pin-project-lite0.1
ExclusiveArch: %{rust_arches}
- rust-pin-project0.4
ExclusiveArch: %{rust_arches}
- rust-pin-utils
ExclusiveArch: %{rust_arches}
- rust-pipe
ExclusiveArch: %{rust_arches}
- rust-piper
ExclusiveArch: %{rust_arches}
- rust-pkcs11
ExclusiveArch: %{rust_arches}
- rust-pkg-config
ExclusiveArch: %{rust_arches}
- rust-plain
ExclusiveArch: %{rust_arches}
- rust-pleaser
ExclusiveArch: %{rust_arches}
- rust-plist
ExclusiveArch: %{rust_arches}
- rust-plotlib
ExclusiveArch: %{rust_arches}
- rust-plotters
ExclusiveArch: %{rust_arches}
- rust-plotters-backend
ExclusiveArch: %{rust_arches}
- rust-plotters-bitmap
ExclusiveArch: %{rust_arches}
- rust-plotters-svg
ExclusiveArch: %{rust_arches}
- rust-plugin
ExclusiveArch: %{rust_arches}
- rust-pnet_base
ExclusiveArch: %{rust_arches}
- rust-pnet_datalink
ExclusiveArch: %{rust_arches}
- rust-pnet_sys
ExclusiveArch: %{rust_arches}
- rust-png
ExclusiveArch: %{rust_arches}
- rust-podio
ExclusiveArch: %{rust_arches}
- rust-polling
ExclusiveArch: %{rust_arches}
- rust-polyval
ExclusiveArch: %{rust_arches}
- rust-pom
ExclusiveArch: %{rust_arches}
- rust-pommes
ExclusiveArch: %{rust_arches}
- rust-posish
ExclusiveArch: %{rust_arches}
- rust-ppv-lite86
ExclusiveArch: %{rust_arches}
- rust-pq-sys
ExclusiveArch: %{rust_arches}
- rust-precomputed-hash
ExclusiveArch: %{rust_arches}
- rust-predicates
ExclusiveArch: %{rust_arches}
- rust-predicates-core
ExclusiveArch: %{rust_arches}
- rust-predicates-tree
ExclusiveArch: %{rust_arches}
- rust-predicates1
ExclusiveArch: %{rust_arches}
- rust-pretty-git-prompt
ExclusiveArch: %{rust_arches}
- rust-pretty-hex
ExclusiveArch: %{rust_arches}
- rust-pretty_assertions
ExclusiveArch: %{rust_arches}
- rust-pretty_assertions0.6
ExclusiveArch: %{rust_arches}
- rust-pretty_env_logger
ExclusiveArch: %{rust_arches}
- rust-prettytable-rs
ExclusiveArch: %{rust_arches}
- rust-proc-macro-crate
ExclusiveArch: %{rust_arches}
- rust-proc-macro-crate0.1
ExclusiveArch: %{rust_arches}
- rust-proc-macro-error
ExclusiveArch: %{rust_arches}
- rust-proc-macro-error-attr
ExclusiveArch: %{rust_arches}
- rust-proc-macro-hack
ExclusiveArch: %{rust_arches}
- rust-proc-macro-nested
ExclusiveArch: %{rust_arches}
- rust-proc-macro2
ExclusiveArch: %{rust_arches}
- rust-proc-macro2-0.4
ExclusiveArch: %{rust_arches}
- rust-proc-mounts
ExclusiveArch: %{rust_arches}
- rust-proc-quote
ExclusiveArch: %{rust_arches}
- rust-proc-quote-impl
ExclusiveArch: %{rust_arches}
- rust-procedural-masquerade
ExclusiveArch: %{rust_arches}
- rust-process_control
ExclusiveArch: %{rust_arches}
- rust-process_path
ExclusiveArch: %{rust_arches}
- rust-procfs
ExclusiveArch: %{rust_arches}
- rust-procs
ExclusiveArch: %{rust_arches}
- rust-progress-streams
ExclusiveArch: %{rust_arches}
- rust-prometheus
ExclusiveArch: %{rust_arches}
- rust-proptest
ExclusiveArch: %{rust_arches}
- rust-proptest-derive
ExclusiveArch: %{rust_arches}
- rust-proptest0.10
ExclusiveArch: %{rust_arches}
- rust-prost
ExclusiveArch: %{rust_arches}
- rust-prost-build
ExclusiveArch: %{rust_arches}
- rust-prost-derive
ExclusiveArch: %{rust_arches}
- rust-prost-types
ExclusiveArch: %{rust_arches}
- rust-protobuf
ExclusiveArch: %{rust_arches}
- rust-protobuf-codegen
ExclusiveArch: %{rust_arches}
- rust-protobuf-codegen-pure
ExclusiveArch: %{rust_arches}
- rust-protoc
ExclusiveArch: %{rust_arches}
- rust-protoc-rust
ExclusiveArch: %{rust_arches}
- rust-psa-crypto
ExclusiveArch: %{rust_arches}
- rust-psa-crypto-sys
ExclusiveArch: %{rust_arches}
- rust-psd
ExclusiveArch: %{rust_arches}
- rust-psm
ExclusiveArch: %{rust_arches}
- rust-ptr_meta
ExclusiveArch: %{rust_arches}
- rust-ptr_meta_derive
ExclusiveArch: %{rust_arches}
- rust-publicsuffix
ExclusiveArch: %{rust_arches}
- rust-pulldown-cmark
ExclusiveArch: %{rust_arches}
- rust-pulse
ExclusiveArch: %{rust_arches}
- rust-pure-rust-locales
ExclusiveArch: %{rust_arches}
- rust-pyo3
ExclusiveArch: %{rust_arches}
- rust-pyo3-build-config
ExclusiveArch: %{rust_arches}
- rust-pyo3-macros
ExclusiveArch: %{rust_arches}
- rust-pyo3-macros-backend
ExclusiveArch: %{rust_arches}
- rust-python-launcher
ExclusiveArch: %{rust_arches}
- rust-python3-sys
ExclusiveArch: %{rust_arches}
- rust-qr2term
ExclusiveArch: %{rust_arches}
- rust-qrcode
ExclusiveArch: %{rust_arches}
- rust-qstring
ExclusiveArch: %{rust_arches}
- rust-quad-rand
ExclusiveArch: %{rust_arches}
- rust-quantiles
ExclusiveArch: %{rust_arches}
- rust-quick-error
ExclusiveArch: %{rust_arches}
- rust-quick-error1
ExclusiveArch: %{rust_arches}
- rust-quick-xml
ExclusiveArch: %{rust_arches}
- rust-quick-xml0.20
ExclusiveArch: %{rust_arches}
- rust-quickcheck
ExclusiveArch: %{rust_arches}
- rust-quickcheck0.6
ExclusiveArch: %{rust_arches}
- rust-quickcheck0.9
ExclusiveArch: %{rust_arches}
- rust-quickcheck_macros
ExclusiveArch: %{rust_arches}
- rust-quickersort
ExclusiveArch: %{rust_arches}
- rust-quote
ExclusiveArch: %{rust_arches}
- rust-quote0.3
ExclusiveArch: %{rust_arches}
- rust-quote0.6
ExclusiveArch: %{rust_arches}
- rust-quoted_printable
ExclusiveArch: %{rust_arches}
- rust-r2d2
ExclusiveArch: %{rust_arches}
- rust-radium
ExclusiveArch: %{rust_arches}
- rust-radix64
ExclusiveArch: %{rust_arches}
- rust-radix_trie
ExclusiveArch: %{rust_arches}
- rust-rand
ExclusiveArch: %{rust_arches}
- rust-rand0.4
ExclusiveArch: %{rust_arches}
- rust-rand0.5
ExclusiveArch: %{rust_arches}
- rust-rand0.6
ExclusiveArch: %{rust_arches}
- rust-rand0.7
ExclusiveArch: %{rust_arches}
- rust-rand_chacha
ExclusiveArch: %{rust_arches}
- rust-rand_chacha0.1
ExclusiveArch: %{rust_arches}
- rust-rand_chacha0.2
ExclusiveArch: %{rust_arches}
- rust-rand_core
ExclusiveArch: %{rust_arches}
- rust-rand_core0.3
ExclusiveArch: %{rust_arches}
- rust-rand_core0.4
ExclusiveArch: %{rust_arches}
- rust-rand_core0.5
ExclusiveArch: %{rust_arches}
- rust-rand_distr
ExclusiveArch: %{rust_arches}
- rust-rand_distr0.2
ExclusiveArch: %{rust_arches}
- rust-rand_hc
ExclusiveArch: %{rust_arches}
- rust-rand_hc0.1
ExclusiveArch: %{rust_arches}
- rust-rand_isaac
ExclusiveArch: %{rust_arches}
- rust-rand_isaac0.1
ExclusiveArch: %{rust_arches}
- rust-rand_jitter
ExclusiveArch: %{rust_arches}
- rust-rand_jitter0.1
ExclusiveArch: %{rust_arches}
- rust-rand_os
ExclusiveArch: %{rust_arches}
- rust-rand_os0.1
ExclusiveArch: %{rust_arches}
- rust-rand_pcg
ExclusiveArch: %{rust_arches}
- rust-rand_pcg0.1
ExclusiveArch: %{rust_arches}
- rust-rand_pcg0.2
ExclusiveArch: %{rust_arches}
- rust-rand_xorshift
ExclusiveArch: %{rust_arches}
- rust-rand_xorshift0.1
ExclusiveArch: %{rust_arches}
- rust-rand_xorshift0.2
ExclusiveArch: %{rust_arches}
- rust-rand_xoshiro
ExclusiveArch: %{rust_arches}
- rust-random-fast-rng
ExclusiveArch: %{rust_arches}
- rust-random-trait
ExclusiveArch: %{rust_arches}
- rust-randomize
ExclusiveArch: %{rust_arches}
- rust-rav1e
ExclusiveArch: %{rust_arches}
- rust-raw-window-handle
ExclusiveArch: %{rust_arches}
- rust-rawpointer
ExclusiveArch: %{rust_arches}
- rust-rawslice
ExclusiveArch: %{rust_arches}
- rust-rayon
ExclusiveArch: %{rust_arches}
- rust-rayon-core
ExclusiveArch: %{rust_arches}
- rust-rd-agent
ExclusiveArch: %{rust_arches}
- rust-rd-agent-intf
ExclusiveArch: %{rust_arches}
- rust-rd-hashd
ExclusiveArch: %{rust_arches}
- rust-rd-hashd-intf
ExclusiveArch: %{rust_arches}
- rust-rd-util
ExclusiveArch: %{rust_arches}
- rust-read_input
ExclusiveArch: %{rust_arches}
- rust-readability-fork
ExclusiveArch: %{rust_arches}
- rust-readwrite
ExclusiveArch: %{rust_arches}
- rust-recycler
ExclusiveArch: %{rust_arches}
- rust-ref-cast
ExclusiveArch: %{rust_arches}
- rust-ref-cast-impl
ExclusiveArch: %{rust_arches}
- rust-regalloc
ExclusiveArch: %{rust_arches}
- rust-regex
ExclusiveArch: %{rust_arches}
- rust-regex-automata
ExclusiveArch: %{rust_arches}
- rust-regex-syntax
ExclusiveArch: %{rust_arches}
- rust-region
ExclusiveArch: %{rust_arches}
- rust-relative-path
ExclusiveArch: %{rust_arches}
- rust-relay
ExclusiveArch: %{rust_arches}
- rust-remove_dir_all
ExclusiveArch: %{rust_arches}
- rust-rend
ExclusiveArch: %{rust_arches}
- rust-rental
ExclusiveArch: %{rust_arches}
- rust-rental-impl
ExclusiveArch: %{rust_arches}
- rust-reqwest
ExclusiveArch: %{rust_arches}
- rust-reqwest0.10
ExclusiveArch: %{rust_arches}
- rust-resctl-bench
ExclusiveArch: %{rust_arches}
- rust-resctl-bench-intf
ExclusiveArch: %{rust_arches}
- rust-resctl-demo
ExclusiveArch: %{rust_arches}
- rust-resize
ExclusiveArch: %{rust_arches}
- rust-resolv-conf
ExclusiveArch: %{rust_arches}
- rust-restson
ExclusiveArch: %{rust_arches}
- rust-retry
ExclusiveArch: %{rust_arches}
- rust-rgb
ExclusiveArch: %{rust_arches}
- rust-ring
ExclusiveArch: %{rust_arches}
- rust-ripgrep
ExclusiveArch: %{rust_arches}
- rust-rkyv
ExclusiveArch: %{rust_arches}
- rust-rkyv_derive
ExclusiveArch: %{rust_arches}
- rust-rle-decode-fast
ExclusiveArch: %{rust_arches}
- rust-rmp
ExclusiveArch: %{rust_arches}
- rust-rmp-serde
ExclusiveArch: %{rust_arches}
- rust-rodio
ExclusiveArch: %{rust_arches}
- rust-roff
ExclusiveArch: %{rust_arches}
- rust-ron
ExclusiveArch: %{rust_arches}
- rust-roxmltree
ExclusiveArch: %{rust_arches}
- rust-rpassword
ExclusiveArch: %{rust_arches}
- rust-rpick
ExclusiveArch: %{rust_arches}
- rust-rsa
ExclusiveArch: %{rust_arches}
- rust-rspec
ExclusiveArch: %{rust_arches}
- rust-rtnetlink
ExclusiveArch: %{rust_arches}
- rust-rudo
ExclusiveArch: %{rust_arches}
- rust-ruma
ExclusiveArch: %{rust_arches}
- rust-ruma-api
ExclusiveArch: %{rust_arches}
- rust-ruma-api-macros
ExclusiveArch: %{rust_arches}
- rust-ruma-appservice-api
ExclusiveArch: %{rust_arches}
- rust-ruma-client-api
ExclusiveArch: %{rust_arches}
- rust-ruma-common
ExclusiveArch: %{rust_arches}
- rust-ruma-events
ExclusiveArch: %{rust_arches}
- rust-ruma-events-macros
ExclusiveArch: %{rust_arches}
- rust-ruma-federation-api
ExclusiveArch: %{rust_arches}
- rust-ruma-identifiers
ExclusiveArch: %{rust_arches}
- rust-ruma-identifiers-macros
ExclusiveArch: %{rust_arches}
- rust-ruma-identifiers-validation
ExclusiveArch: %{rust_arches}
- rust-ruma-identity-service-api
ExclusiveArch: %{rust_arches}
- rust-ruma-push-gateway-api
ExclusiveArch: %{rust_arches}
- rust-ruma-serde
ExclusiveArch: %{rust_arches}
- rust-ruma-serde-macros
ExclusiveArch: %{rust_arches}
- rust-ruma-signatures
ExclusiveArch: %{rust_arches}
- rust-rusqlite
ExclusiveArch: %{rust_arches}
- rust-rust-embed
ExclusiveArch: %{rust_arches}
- rust-rust-embed-impl
ExclusiveArch: %{rust_arches}
- rust-rust-embed-utils
ExclusiveArch: %{rust_arches}
- rust-rust-ini
ExclusiveArch: %{rust_arches}
- rust-rust-stemmers
ExclusiveArch: %{rust_arches}
- rust-rust_decimal
ExclusiveArch: %{rust_arches}
- rust-rust_hawktracer
ExclusiveArch: %{rust_arches}
- rust-rust_hawktracer_normal_macro
ExclusiveArch: %{rust_arches}
- rust-rust_hawktracer_proc_macro
ExclusiveArch: %{rust_arches}
- rust-rust_hawktracer_sys
ExclusiveArch: %{rust_arches}
- rust-rustbus
ExclusiveArch: %{rust_arches}
- rust-rustbus_derive
ExclusiveArch: %{rust_arches}
- rust-rustc-demangle
ExclusiveArch: %{rust_arches}
- rust-rustc-hash
ExclusiveArch: %{rust_arches}
- rust-rustc-serialize
ExclusiveArch: %{rust_arches}
- rust-rustc-test
ExclusiveArch: %{rust_arches}
- rust-rustc_tools_util
ExclusiveArch: %{rust_arches}
- rust-rustc_version
ExclusiveArch: %{rust_arches}
- rust-rustc_version0.3
ExclusiveArch: %{rust_arches}
- rust-rustdoc-stripper
ExclusiveArch: %{rust_arches}
- rust-rustfilt
ExclusiveArch: %{rust_arches}
- rust-rustfix
ExclusiveArch: %{rust_arches}
- rust-rustio
ExclusiveArch: %{rust_arches}
- rust-rustls
ExclusiveArch: %{rust_arches}
- rust-rustls-native-certs
ExclusiveArch: %{rust_arches}
- rust-rusttype
ExclusiveArch: %{rust_arches}
- rust-rustversion
ExclusiveArch: %{rust_arches}
- rust-rusty-fork
ExclusiveArch: %{rust_arches}
- rust-rustyline
ExclusiveArch: %{rust_arches}
- rust-rustyline-derive
ExclusiveArch: %{rust_arches}
- rust-ryu
ExclusiveArch: %{rust_arches}
- rust-safe-transmute
ExclusiveArch: %{rust_arches}
- rust-safe_arch
ExclusiveArch: %{rust_arches}
- rust-safemem
ExclusiveArch: %{rust_arches}
- rust-same-file
ExclusiveArch: %{rust_arches}
- rust-sapp-kms
ExclusiveArch: %{rust_arches}
- rust-sapp-linux
ExclusiveArch: %{rust_arches}
- rust-sass-rs
ExclusiveArch: %{rust_arches}
- rust-sass-sys
ExclusiveArch: %{rust_arches}
- rust-scan_fmt
ExclusiveArch: %{rust_arches}
- rust-scheduled-thread-pool
ExclusiveArch: %{rust_arches}
- rust-scoped-tls
ExclusiveArch: %{rust_arches}
- rust-scoped-tls-hkt
ExclusiveArch: %{rust_arches}
- rust-scoped_threadpool
ExclusiveArch: %{rust_arches}
- rust-scopeguard
ExclusiveArch: %{rust_arches}
- rust-scopetime
ExclusiveArch: %{rust_arches}
- rust-scratch
ExclusiveArch: %{rust_arches}
- rust-scroll
ExclusiveArch: %{rust_arches}
- rust-scroll_derive
ExclusiveArch: %{rust_arches}
- rust-sct
ExclusiveArch: %{rust_arches}
- rust-sd
ExclusiveArch: %{rust_arches}
- rust-sd-notify
ExclusiveArch: %{rust_arches}
- rust-seahash
ExclusiveArch: %{rust_arches}
- rust-seahash3
ExclusiveArch: %{rust_arches}
- rust-secrecy
ExclusiveArch: %{rust_arches}
- rust-secret-service
ExclusiveArch: %{rust_arches}
- rust-semver
ExclusiveArch: %{rust_arches}
- rust-semver-parser
ExclusiveArch: %{rust_arches}
- rust-semver-parser0.9
ExclusiveArch: %{rust_arches}
- rust-semver0.11
ExclusiveArch: %{rust_arches}
- rust-sequoia-autocrypt
ExclusiveArch: %{rust_arches}
- rust-sequoia-ipc
ExclusiveArch: %{rust_arches}
- rust-sequoia-keyring-linter
ExclusiveArch: %{rust_arches}
- rust-sequoia-net
ExclusiveArch: %{rust_arches}
- rust-sequoia-octopus-librnp
ExclusiveArch: %{rust_arches}
- rust-sequoia-openpgp
ExclusiveArch: %{rust_arches}
- rust-sequoia-sop
ExclusiveArch: %{rust_arches}
- rust-sequoia-sq
ExclusiveArch: %{rust_arches}
- rust-sequoia-sqv
ExclusiveArch: %{rust_arches}
- rust-serde
ExclusiveArch: %{rust_arches}
- rust-serde-big-array
ExclusiveArch: %{rust_arches}
- rust-serde-pickle
ExclusiveArch: %{rust_arches}
- rust-serde-value
ExclusiveArch: %{rust_arches}
- rust-serde-xml-rs
ExclusiveArch: %{rust_arches}
- rust-serde_bser
ExclusiveArch: %{rust_arches}
- rust-serde_bytes
ExclusiveArch: %{rust_arches}
- rust-serde_cbor
ExclusiveArch: %{rust_arches}
- rust-serde_derive
ExclusiveArch: %{rust_arches}
- rust-serde_fmt
ExclusiveArch: %{rust_arches}
- rust-serde_ignored
ExclusiveArch: %{rust_arches}
- rust-serde_json
ExclusiveArch: %{rust_arches}
- rust-serde_repr
ExclusiveArch: %{rust_arches}
- rust-serde_stacker
ExclusiveArch: %{rust_arches}
- rust-serde_test
ExclusiveArch: %{rust_arches}
- rust-serde_url_params
ExclusiveArch: %{rust_arches}
- rust-serde_urlencoded
ExclusiveArch: %{rust_arches}
- rust-serde_urlencoded0.6
ExclusiveArch: %{rust_arches}
- rust-serde_with
ExclusiveArch: %{rust_arches}
- rust-serde_with_macros
ExclusiveArch: %{rust_arches}
- rust-serde_yaml
ExclusiveArch: %{rust_arches}
- rust-serial-core
ExclusiveArch: %{rust_arches}
- rust-serial_test
ExclusiveArch: %{rust_arches}
- rust-serial_test_derive
ExclusiveArch: %{rust_arches}
- rust-servo-fontconfig
ExclusiveArch: %{rust_arches}
- rust-servo-fontconfig-sys
ExclusiveArch: %{rust_arches}
- rust-sev
ExclusiveArch: %{rust_arches}
- rust-sevctl
ExclusiveArch: %{rust_arches}
- rust-sha-1
ExclusiveArch: %{rust_arches}
- rust-sha1
ExclusiveArch: %{rust_arches}
- rust-sha1collisiondetection
ExclusiveArch: %{rust_arches}
- rust-sha2
ExclusiveArch: %{rust_arches}
- rust-sha3
ExclusiveArch: %{rust_arches}
- rust-shadow-rs
ExclusiveArch: %{rust_arches}
- rust-shared_child
ExclusiveArch: %{rust_arches}
- rust-shared_library
ExclusiveArch: %{rust_arches}
- rust-shell-escape
ExclusiveArch: %{rust_arches}
- rust-shell-words
ExclusiveArch: %{rust_arches}
- rust-shellexpand
ExclusiveArch: %{rust_arches}
- rust-shellwords
ExclusiveArch: %{rust_arches}
- rust-shlex
ExclusiveArch: %{rust_arches}
- rust-signal-hook
ExclusiveArch: %{rust_arches}
- rust-signal-hook-mio
ExclusiveArch: %{rust_arches}
- rust-signal-hook-registry
ExclusiveArch: %{rust_arches}
- rust-signal-hook0.1
ExclusiveArch: %{rust_arches}
- rust-signature
ExclusiveArch: x86_64 aarch64
- rust-silver
ExclusiveArch: %{rust_arches}
- rust-simba
ExclusiveArch: %{rust_arches}
- rust-simd_helpers
ExclusiveArch: %{rust_arches}
- rust-simdutf8
ExclusiveArch: %{rust_arches}
- rust-similar
ExclusiveArch: %{rust_arches}
- rust-similar-asserts
ExclusiveArch: %{rust_arches}
- rust-simple_asn1
ExclusiveArch: %{rust_arches}
- rust-simple_logger
ExclusiveArch: %{rust_arches}
- rust-simplelog
ExclusiveArch: %{rust_arches}
- rust-siphasher
ExclusiveArch: %{rust_arches}
- rust-size
ExclusiveArch: %{rust_arches}
- rust-sized-chunks
ExclusiveArch: %{rust_arches}
- rust-skeptic
ExclusiveArch: %{rust_arches}
- rust-skim
ExclusiveArch: %{rust_arches}
- rust-slab
ExclusiveArch: %{rust_arches}
- rust-slash-formatter
ExclusiveArch: %{rust_arches}
- rust-slice-deque
ExclusiveArch: %{rust_arches}
- rust-slog
ExclusiveArch: %{rust_arches}
- rust-slog-async
ExclusiveArch: %{rust_arches}
- rust-slog-scope
ExclusiveArch: %{rust_arches}
- rust-slog-term
ExclusiveArch: %{rust_arches}
- rust-slotmap
ExclusiveArch: %{rust_arches}
- rust-slug
ExclusiveArch: %{rust_arches}
- rust-sluice
ExclusiveArch: %{rust_arches}
- rust-smallstr
ExclusiveArch: %{rust_arches}
- rust-smallvec
ExclusiveArch: %{rust_arches}
- rust-smart-default
ExclusiveArch: %{rust_arches}
- rust-smawk
ExclusiveArch: %{rust_arches}
- rust-smithay-client-toolkit
ExclusiveArch: %{rust_arches}
- rust-smithay-client-toolkit0.12
ExclusiveArch: %{rust_arches}
- rust-smithay-clipboard
ExclusiveArch: %{rust_arches}
- rust-snafu
ExclusiveArch: %{rust_arches}
- rust-snafu-derive
ExclusiveArch: %{rust_arches}
- rust-snake_case
ExclusiveArch: %{rust_arches}
- rust-snowflake
ExclusiveArch: %{rust_arches}
- rust-socket2
ExclusiveArch: %{rust_arches}
- rust-socket2_0.3
ExclusiveArch: %{rust_arches}
- rust-sop
ExclusiveArch: %{rust_arches}
- rust-soup-sys
ExclusiveArch: %{rust_arches}
- rust-spin
ExclusiveArch: %{rust_arches}
- rust-spin_on
ExclusiveArch: %{rust_arches}
- rust-spinning_top
ExclusiveArch: %{rust_arches}
- rust-spmc
ExclusiveArch: %{rust_arches}
- rust-ssh-key-dir
ExclusiveArch: %{rust_arches}
- rust-stable_deref_trait
ExclusiveArch: %{rust_arches}
- rust-stacker
ExclusiveArch: %{rust_arches}
- rust-standback
ExclusiveArch: %{rust_arches}
- rust-starship
ExclusiveArch: %{rust_arches}
- rust-starship_module_config_derive
ExclusiveArch: %{rust_arches}
- rust-static_assertions
ExclusiveArch: %{rust_arches}
- rust-statistical
ExclusiveArch: %{rust_arches}
- rust-statrs
ExclusiveArch: %{rust_arches}
- rust-stb_truetype
ExclusiveArch: %{rust_arches}
- rust-stderrlog
ExclusiveArch: %{rust_arches}
- rust-stratisd_proc_macros
ExclusiveArch: %{rust_arches}
- rust-streaming-stats
ExclusiveArch: %{rust_arches}
- rust-streebog
ExclusiveArch: %{rust_arches}
- rust-string
ExclusiveArch: %{rust_arches}
- rust-string_cache
ExclusiveArch: %{rust_arches}
- rust-string_cache_codegen
ExclusiveArch: %{rust_arches}
- rust-string_cache_shared
ExclusiveArch: %{rust_arches}
- rust-strings
ExclusiveArch: %{rust_arches}
- rust-strip-ansi-escapes
ExclusiveArch: %{rust_arches}
- rust-strong-xml
ExclusiveArch: %{rust_arches}
- rust-strong-xml-derive
ExclusiveArch: %{rust_arches}
- rust-strsim
ExclusiveArch: %{rust_arches}
- rust-structopt
ExclusiveArch: %{rust_arches}
- rust-structopt-derive
ExclusiveArch: %{rust_arches}
- rust-structopt-derive0.2
ExclusiveArch: %{rust_arches}
- rust-structopt0.2
ExclusiveArch: %{rust_arches}
- rust-strum
ExclusiveArch: %{rust_arches}
- rust-strum_macros
ExclusiveArch: %{rust_arches}
- rust-subtle
ExclusiveArch: %{rust_arches}
- rust-sudo_plugin
ExclusiveArch: %{rust_arches}
- rust-sudo_plugin-sys
ExclusiveArch: %{rust_arches}
- rust-sval
ExclusiveArch: %{rust_arches}
- rust-sval_derive
ExclusiveArch: %{rust_arches}
- rust-sval_json
ExclusiveArch: %{rust_arches}
- rust-svg
ExclusiveArch: %{rust_arches}
- rust-svg_metadata
ExclusiveArch: %{rust_arches}
- rust-svgfilters
ExclusiveArch: %{rust_arches}
- rust-svgtypes
ExclusiveArch: %{rust_arches}
- rust-sxd-document
ExclusiveArch: %{rust_arches}
- rust-syn
ExclusiveArch: %{rust_arches}
- rust-syn-mid
ExclusiveArch: %{rust_arches}
- rust-syn0.15
ExclusiveArch: %{rust_arches}
- rust-synom
ExclusiveArch: %{rust_arches}
- rust-synstructure
ExclusiveArch: %{rust_arches}
- rust-syntect
ExclusiveArch: %{rust_arches}
- rust-sys-info
ExclusiveArch: %{rust_arches}
- rust-sysctl
ExclusiveArch: %{rust_arches}
- rust-sysinfo
ExclusiveArch: %{rust_arches}
- rust-syslog
ExclusiveArch: %{rust_arches}
- rust-system-deps
ExclusiveArch: %{rust_arches}
- rust-systemd
ExclusiveArch: %{rust_arches}
- rust-tabular
ExclusiveArch: %{rust_arches}
- rust-tabwriter
ExclusiveArch: %{rust_arches}
- rust-take
ExclusiveArch: %{rust_arches}
- rust-take_mut
ExclusiveArch: %{rust_arches}
- rust-takeable
ExclusiveArch: %{rust_arches}
- rust-takeable-option
ExclusiveArch: %{rust_arches}
- rust-tap
ExclusiveArch: %{rust_arches}
- rust-tar
ExclusiveArch: %{rust_arches}
- rust-target
ExclusiveArch: %{rust_arches}
- rust-target-lexicon
ExclusiveArch: %{rust_arches}
- rust-tealdeer
ExclusiveArch: %{rust_arches}
- rust-teloxide
ExclusiveArch: %{rust_arches}
- rust-teloxide-macros
ExclusiveArch: %{rust_arches}
- rust-tempdir
ExclusiveArch: %{rust_arches}
- rust-tempfile
ExclusiveArch: %{rust_arches}
- rust-temptree
ExclusiveArch: %{rust_arches}
- rust-tendril
ExclusiveArch: %{rust_arches}
- rust-tera
ExclusiveArch: %{rust_arches}
- rust-term
ExclusiveArch: %{rust_arches}
- rust-term0.6
ExclusiveArch: %{rust_arches}
- rust-term_grid
ExclusiveArch: %{rust_arches}
- rust-term_size
ExclusiveArch: %{rust_arches}
- rust-termcolor
ExclusiveArch: %{rust_arches}
- rust-terminal_size
ExclusiveArch: %{rust_arches}
- rust-terminfo
ExclusiveArch: %{rust_arches}
- rust-termion
ExclusiveArch: %{rust_arches}
- rust-termios
ExclusiveArch: %{rust_arches}
- rust-test-assembler
ExclusiveArch: %{rust_arches}
- rust-test-case
ExclusiveArch: %{rust_arches}
- rust-tester
ExclusiveArch: %{rust_arches}
- rust-testing_logger
ExclusiveArch: %{rust_arches}
- rust-textwrap
ExclusiveArch: %{rust_arches}
- rust-textwrap0.11
ExclusiveArch: %{rust_arches}
- rust-textwrap0.12
ExclusiveArch: %{rust_arches}
- rust-thiserror
ExclusiveArch: %{rust_arches}
- rust-thiserror-impl
ExclusiveArch: %{rust_arches}
- rust-thread-id
ExclusiveArch: %{rust_arches}
- rust-thread-scoped
ExclusiveArch: %{rust_arches}
- rust-thread-tree
ExclusiveArch: %{rust_arches}
- rust-thread_local
ExclusiveArch: %{rust_arches}
- rust-threadpool
ExclusiveArch: %{rust_arches}
- rust-tiff
ExclusiveArch: %{rust_arches}
- rust-tiger
ExclusiveArch: %{rust_arches}
- rust-tiger-digest
ExclusiveArch: %{rust_arches}
- rust-time
ExclusiveArch: %{rust_arches}
- rust-time-macros
ExclusiveArch: %{rust_arches}
- rust-time-macros-impl
ExclusiveArch: %{rust_arches}
- rust-time0.1
ExclusiveArch: %{rust_arches}
- rust-timebomb
ExclusiveArch: %{rust_arches}
- rust-timer
ExclusiveArch: %{rust_arches}
- rust-timerfd
ExclusiveArch: %{rust_arches}
- rust-tiny-keccak
ExclusiveArch: %{rust_arches}
- rust-tiny_http
ExclusiveArch: %{rust_arches}
- rust-tinyfiledialogs
ExclusiveArch: %{rust_arches}
- rust-tinytemplate
ExclusiveArch: %{rust_arches}
- rust-tinyvec
ExclusiveArch: %{rust_arches}
- rust-tinyvec_macros
ExclusiveArch: %{rust_arches}
- rust-tokei
ExclusiveArch: %{rust_arches}
- rust-tokio
ExclusiveArch: %{rust_arches}
- rust-tokio-codec
ExclusiveArch: %{rust_arches}
- rust-tokio-core
ExclusiveArch: %{rust_arches}
- rust-tokio-current-thread
ExclusiveArch: %{rust_arches}
- rust-tokio-executor
ExclusiveArch: %{rust_arches}
- rust-tokio-fs
ExclusiveArch: %{rust_arches}
- rust-tokio-io
ExclusiveArch: %{rust_arches}
- rust-tokio-io-pool
ExclusiveArch: %{rust_arches}
- rust-tokio-macros
ExclusiveArch: %{rust_arches}
- rust-tokio-macros0.2
ExclusiveArch: %{rust_arches}
- rust-tokio-mock-task
ExclusiveArch: %{rust_arches}
- rust-tokio-native-tls
ExclusiveArch: %{rust_arches}
- rust-tokio-openssl
ExclusiveArch: %{rust_arches}
- rust-tokio-openssl0.4
ExclusiveArch: %{rust_arches}
- rust-tokio-reactor
ExclusiveArch: %{rust_arches}
- rust-tokio-rustls
ExclusiveArch: %{rust_arches}
- rust-tokio-socks
ExclusiveArch: %{rust_arches}
- rust-tokio-socks0.3
ExclusiveArch: %{rust_arches}
- rust-tokio-stream
ExclusiveArch: %{rust_arches}
- rust-tokio-sync
ExclusiveArch: %{rust_arches}
- rust-tokio-tcp
ExclusiveArch: %{rust_arches}
- rust-tokio-test
ExclusiveArch: %{rust_arches}
- rust-tokio-threadpool
ExclusiveArch: %{rust_arches}
- rust-tokio-timer
ExclusiveArch: %{rust_arches}
- rust-tokio-tls
ExclusiveArch: %{rust_arches}
- rust-tokio-tls0.2
ExclusiveArch: %{rust_arches}
- rust-tokio-tungstenite
ExclusiveArch: %{rust_arches}
- rust-tokio-udp
ExclusiveArch: %{rust_arches}
- rust-tokio-uds
ExclusiveArch: %{rust_arches}
- rust-tokio-util
ExclusiveArch: %{rust_arches}
- rust-tokio-util0.3
ExclusiveArch: %{rust_arches}
- rust-tokio0.1
ExclusiveArch: %{rust_arches}
- rust-tokio0.2
ExclusiveArch: %{rust_arches}
- rust-toml
ExclusiveArch: %{rust_arches}
- rust-toml0.4
ExclusiveArch: %{rust_arches}
- rust-tower-layer
ExclusiveArch: %{rust_arches}
- rust-tower-service
ExclusiveArch: %{rust_arches}
- rust-tower-test
ExclusiveArch: %{rust_arches}
- rust-tower-util
ExclusiveArch: %{rust_arches}
- rust-tpm2-policy
ExclusiveArch: %{rust_arches}
- rust-tracing
ExclusiveArch: %{rust_arches}
- rust-tracing-attributes
ExclusiveArch: %{rust_arches}
- rust-tracing-core
ExclusiveArch: %{rust_arches}
- rust-tracing-futures
ExclusiveArch: %{rust_arches}
- rust-traitobject
ExclusiveArch: %{rust_arches}
- rust-treebitmap
ExclusiveArch: %{rust_arches}
- rust-treeline
ExclusiveArch: %{rust_arches}
- rust-trust-dns-https
ExclusiveArch: %{rust_arches}
- rust-trust-dns-native-tls
ExclusiveArch: %{rust_arches}
- rust-trust-dns-native-tls0.19
ExclusiveArch: %{rust_arches}
- rust-trust-dns-openssl
ExclusiveArch: %{rust_arches}
- rust-trust-dns-openssl0.19
ExclusiveArch: %{rust_arches}
- rust-trust-dns-proto
ExclusiveArch: %{rust_arches}
- rust-trust-dns-proto0.19
ExclusiveArch: %{rust_arches}
- rust-trust-dns-resolver
ExclusiveArch: %{rust_arches}
- rust-trust-dns-resolver0.19
ExclusiveArch: %{rust_arches}
- rust-trust-dns-rustls
ExclusiveArch: %{rust_arches}
- rust-try-lock
ExclusiveArch: %{rust_arches}
- rust-try_from
ExclusiveArch: %{rust_arches}
- rust-try_or
ExclusiveArch: %{rust_arches}
- rust-trybuild
ExclusiveArch: %{rust_arches}
- rust-tss-esapi
ExclusiveArch: %{rust_arches}
- rust-tss-esapi-sys
ExclusiveArch: %{rust_arches}
- rust-ttf-parser
ExclusiveArch: %{rust_arches}
- rust-tui
ExclusiveArch: %{rust_arches}
- rust-tui-react
ExclusiveArch: %{rust_arches}
- rust-tui0.11
ExclusiveArch: %{rust_arches}
- rust-tui0.9
ExclusiveArch: %{rust_arches}
- rust-tuikit
ExclusiveArch: %{rust_arches}
- rust-tungstenite
ExclusiveArch: %{rust_arches}
- rust-twoway
ExclusiveArch: %{rust_arches}
- rust-typeable
ExclusiveArch: %{rust_arches}
- rust-typed-arena
ExclusiveArch: %{rust_arches}
- rust-typemap
ExclusiveArch: %{rust_arches}
- rust-typenum
ExclusiveArch: %{rust_arches}
- rust-typetag
ExclusiveArch: %{rust_arches}
- rust-typetag-impl
ExclusiveArch: %{rust_arches}
- rust-tzfile
ExclusiveArch: %{rust_arches}
- rust-ucd-parse
ExclusiveArch: %{rust_arches}
- rust-ucd-trie
ExclusiveArch: %{rust_arches}
- rust-ucd-util
ExclusiveArch: %{rust_arches}
- rust-unchecked-index
ExclusiveArch: %{rust_arches}
- rust-unescape
ExclusiveArch: %{rust_arches}
- rust-unic-char-property
ExclusiveArch: %{rust_arches}
- rust-unic-char-range
ExclusiveArch: %{rust_arches}
- rust-unic-common
ExclusiveArch: %{rust_arches}
- rust-unic-segment
ExclusiveArch: %{rust_arches}
- rust-unic-ucd-category
ExclusiveArch: %{rust_arches}
- rust-unic-ucd-common
ExclusiveArch: %{rust_arches}
- rust-unic-ucd-segment
ExclusiveArch: %{rust_arches}
- rust-unic-ucd-version
ExclusiveArch: %{rust_arches}
- rust-unicase
ExclusiveArch: %{rust_arches}
- rust-unicase1
ExclusiveArch: %{rust_arches}
- rust-unicode-bidi
ExclusiveArch: %{rust_arches}
- rust-unicode-linebreak
ExclusiveArch: %{rust_arches}
- rust-unicode-normalization
ExclusiveArch: %{rust_arches}
- rust-unicode-segmentation
ExclusiveArch: %{rust_arches}
- rust-unicode-truncate
ExclusiveArch: %{rust_arches}
- rust-unicode-width
ExclusiveArch: %{rust_arches}
- rust-unicode-xid
ExclusiveArch: %{rust_arches}
- rust-unicode-xid0.1
ExclusiveArch: %{rust_arches}
- rust-unicode_categories
ExclusiveArch: %{rust_arches}
- rust-unindent
ExclusiveArch: %{rust_arches}
- rust-universal-hash
ExclusiveArch: %{rust_arches}
- rust-unix_socket
ExclusiveArch: %{rust_arches}
- rust-unreachable
ExclusiveArch: %{rust_arches}
- rust-unsafe-any
ExclusiveArch: %{rust_arches}
- rust-unsafe-io
ExclusiveArch: %{rust_arches}
- rust-untrusted
ExclusiveArch: %{rust_arches}
- rust-uom
ExclusiveArch: %{rust_arches}
- rust-url
ExclusiveArch: %{rust_arches}
- rust-url1
ExclusiveArch: %{rust_arches}
- rust-url_serde
ExclusiveArch: %{rust_arches}
- rust-urlencoding
ExclusiveArch: %{rust_arches}
- rust-urlocator
ExclusiveArch: %{rust_arches}
- rust-urlshortener
ExclusiveArch: %{rust_arches}
- rust-users
ExclusiveArch: %{rust_arches}
- rust-users0.10
ExclusiveArch: %{rust_arches}
- rust-utf-8
ExclusiveArch: %{rust_arches}
- rust-utf8-cstr
ExclusiveArch: %{rust_arches}
- rust-utf8-ranges
ExclusiveArch: %{rust_arches}
- rust-utf8-width
ExclusiveArch: %{rust_arches}
- rust-utf8parse
ExclusiveArch: %{rust_arches}
- rust-uuid
ExclusiveArch: %{rust_arches}
- rust-uuid0.7
ExclusiveArch: %{rust_arches}
- rust-v_escape
ExclusiveArch: %{rust_arches}
- rust-v_escape_derive
ExclusiveArch: %{rust_arches}
- rust-v_frame
ExclusiveArch: %{rust_arches}
- rust-v_htmlescape
ExclusiveArch: %{rust_arches}
- rust-value-bag
ExclusiveArch: %{rust_arches}
- rust-varlink
ExclusiveArch: %{rust_arches}
- rust-varlink-cli
ExclusiveArch: %{rust_arches}
- rust-varlink_generator
ExclusiveArch: %{rust_arches}
- rust-varlink_parser
ExclusiveArch: %{rust_arches}
- rust-varlink_stdinterfaces
ExclusiveArch: %{rust_arches}
- rust-vcpkg
ExclusiveArch: %{rust_arches}
- rust-vec-arena
ExclusiveArch: %{rust_arches}
- rust-vec_map
ExclusiveArch: %{rust_arches}
- rust-vergen
ExclusiveArch: %{rust_arches}
- rust-vergen3
ExclusiveArch: %{rust_arches}
- rust-version
ExclusiveArch: %{rust_arches}
- rust-version-compare
ExclusiveArch: %{rust_arches}
- rust-version-sync
ExclusiveArch: %{rust_arches}
- rust-version-sync0.8
ExclusiveArch: %{rust_arches}
- rust-version_check
ExclusiveArch: %{rust_arches}
- rust-versions
ExclusiveArch: %{rust_arches}
- rust-virtio-bindings
ExclusiveArch: x86_64 aarch64 ppc64le
- rust-vm-memory
ExclusiveArch: x86_64 aarch64 ppc64le
- rust-vmm-sys-util
ExclusiveArch: x86_64 aarch64 ppc64le
- rust-vmw_backdoor
ExclusiveArch: %{rust_arches}
- rust-void
ExclusiveArch: %{rust_arches}
- rust-vsprintf
ExclusiveArch: %{rust_arches}
- rust-vte
ExclusiveArch: %{rust_arches}
- rust-vte_generate_state_changes
ExclusiveArch: %{rust_arches}
- rust-wait-timeout
ExclusiveArch: %{rust_arches}
- rust-waker-fn
ExclusiveArch: %{rust_arches}
- rust-walkdir
ExclusiveArch: %{rust_arches}
- rust-want
ExclusiveArch: %{rust_arches}
- rust-warp
ExclusiveArch: %{rust_arches}
- rust-warp0.2
ExclusiveArch: %{rust_arches}
- rust-wasm-bindgen
ExclusiveArch: %{rust_arches}
- rust-wasm-bindgen-backend
ExclusiveArch: %{rust_arches}
- rust-wasm-bindgen-futures
ExclusiveArch: %{rust_arches}
- rust-wasm-bindgen-macro
ExclusiveArch: %{rust_arches}
- rust-wasm-bindgen-macro-support
ExclusiveArch: %{rust_arches}
- rust-wasm-bindgen-shared
ExclusiveArch: %{rust_arches}
- rust-wasm-bindgen-test
ExclusiveArch: %{rust_arches}
- rust-wasm-bindgen-test-macro
ExclusiveArch: %{rust_arches}
- rust-wasmer_enumset
ExclusiveArch: %{rust_arches}
- rust-wasmer_enumset_derive
ExclusiveArch: %{rust_arches}
- rust-wasmparser
ExclusiveArch: %{rust_arches}
- rust-wasmtime-cache
ExclusiveArch: %{rust_arches}
- rust-wasmtime-environ
ExclusiveArch: %{rust_arches}
- rust-wasmtime-fiber
ExclusiveArch: %{rust_arches}
- rust-wasmtime-types
ExclusiveArch: %{rust_arches}
- rust-wast
ExclusiveArch: %{rust_arches}
- rust-wat
ExclusiveArch: %{rust_arches}
- rust-watchman_client
ExclusiveArch: %{rust_arches}
- rust-wayland-client
ExclusiveArch: %{rust_arches}
- rust-wayland-commons
ExclusiveArch: %{rust_arches}
- rust-wayland-cursor
ExclusiveArch: %{rust_arches}
- rust-wayland-egl
ExclusiveArch: %{rust_arches}
- rust-wayland-protocols
ExclusiveArch: %{rust_arches}
- rust-wayland-scanner
ExclusiveArch: %{rust_arches}
- rust-wayland-server
ExclusiveArch: %{rust_arches}
- rust-wayland-sys
ExclusiveArch: %{rust_arches}
- rust-web-sys
ExclusiveArch: %{rust_arches}
- rust-webbrowser
ExclusiveArch: %{rust_arches}
- rust-webkit2gtk
ExclusiveArch: %{rust_arches}
- rust-webkit2gtk-sys
ExclusiveArch: %{rust_arches}
- rust-webpki
ExclusiveArch: %{rust_arches}
- rust-webpki-roots
ExclusiveArch: %{rust_arches}
- rust-websocket
ExclusiveArch: %{rust_arches}
- rust-websocket-base
ExclusiveArch: %{rust_arches}
- rust-weezl
ExclusiveArch: %{rust_arches}
- rust-which
ExclusiveArch: %{rust_arches}
- rust-wide
ExclusiveArch: %{rust_arches}
- rust-wild
ExclusiveArch: %{rust_arches}
- rust-wildmatch
ExclusiveArch: %{rust_arches}
- rust-winit
ExclusiveArch: %{rust_arches}
- rust-witx
ExclusiveArch: %{rust_arches}
- rust-ws
ExclusiveArch: %{rust_arches}
- rust-wyz
ExclusiveArch: %{rust_arches}
- rust-x11
ExclusiveArch: %{rust_arches}
- rust-x11-clipboard
ExclusiveArch: %{rust_arches}
- rust-x11-dl
ExclusiveArch: %{rust_arches}
- rust-xattr
ExclusiveArch: %{rust_arches}
- rust-xcb
ExclusiveArch: %{rust_arches}
- rust-xcursor
ExclusiveArch: %{rust_arches}
- rust-xdg
ExclusiveArch: %{rust_arches}
- rust-xi-unicode
ExclusiveArch: %{rust_arches}
- rust-xkbcommon
ExclusiveArch: %{rust_arches}
- rust-xml-rs
ExclusiveArch: %{rust_arches}
- rust-xml5ever
ExclusiveArch: %{rust_arches}
- rust-xmlparser
ExclusiveArch: %{rust_arches}
- rust-xmltree
ExclusiveArch: %{rust_arches}
- rust-xmlwriter
ExclusiveArch: %{rust_arches}
- rust-xz2
ExclusiveArch: %{rust_arches}
- rust-y4m
ExclusiveArch: %{rust_arches}
- rust-yaml-rust
ExclusiveArch: %{rust_arches}
- rust-yaml-rust0.3
ExclusiveArch: %{rust_arches}
- rust-ybaas
ExclusiveArch: %{rust_arches}
- rust-yubibomb
ExclusiveArch: %{rust_arches}
- rust-yup-oauth2
ExclusiveArch: %{rust_arches}
- rust-zbase32
ExclusiveArch: %{rust_arches}
- rust-zbus
ExclusiveArch: %{rust_arches}
- rust-zbus_macros
ExclusiveArch: %{rust_arches}
- rust-zcomponents
ExclusiveArch: %{rust_arches}
- rust-zeroize
ExclusiveArch: %{rust_arches}
- rust-zeroize_derive
ExclusiveArch: %{rust_arches}
- rust-zincati
ExclusiveArch: %{rust_arches}
- rust-zip
ExclusiveArch: %{rust_arches}
- rust-zoneinfo_compiled
ExclusiveArch: %{rust_arches}
- rust-zopfli
ExclusiveArch: %{rust_arches}
- rust-zoxide
ExclusiveArch: %{rust_arches}
- rust-zram-generator
ExclusiveArch: %{rust_arches}
- rust-zstd
ExclusiveArch: %{rust_arches}
- rust-zstd-safe
ExclusiveArch: %{rust_arches}
- rust-zstd-sys
ExclusiveArch: %{rust_arches}
- rust-zvariant
ExclusiveArch: %{rust_arches}
- rust-zvariant_derive
ExclusiveArch: %{rust_arches}
- s390utils
ExclusiveArch: s390 s390x
- safetyblanket
ExclusiveArch: %{arm} %{ix86} x86_64 aarch64 ppc64le
- sagemath
ExclusiveArch: aarch64 %{ix86} x86_64 ppc sparcv9
- sbcl
ExclusiveArch: %{arm} %{ix86} x86_64 ppc sparcv9 aarch64
- sbd
ExclusiveArch: i686 x86_64 s390x aarch64 ppc64le
- sbsigntools
ExclusiveArch: x86_64 aarch64 %{arm} %{ix86}
- seabios
ExclusiveArch: x86_64
- seadrive-gui
ExclusiveArch: %{qt5_qtwebengine_arches}
- seafile-client
ExclusiveArch: %{qt5_qtwebengine_arches}
- seamonkey
ExclusiveArch: x86_64
- seqan3
ExclusiveArch: %{power64} x86_64 aarch64
- servicelog
ExclusiveArch: ppc %{power64}
- sgabios
ExclusiveArch: %{ix86} x86_64
- sharpfont
ExclusiveArch: %mono_arches
- sharpziplib
ExclusiveArch: %{mono_arches}
- shim
ExclusiveArch: %{efi}
- shim-unsigned-aarch64
ExclusiveArch: aarch64
- shim-unsigned-x64
ExclusiveArch: x86_64
- sigul
ExclusiveArch: x86_64
- skopeo
ExclusiveArch: %{go_arches}
- skychart
ExclusiveArch: %{fpc_arches}
- snapd
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64 ppc64le s390x
- soup-sharp
ExclusiveArch: %{mono_arches}
- sparkleshare
ExclusiveArch: %{mono_arches}
- spicctrl
ExclusiveArch: %{ix86} x86_64
- spice
ExclusiveArch: x86_64
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64
- springlobby
ExclusiveArch: %{ix86} x86_64
- squeekboard
ExclusiveArch: %{rust_arches}
- startdde
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- statsd
ExclusiveArch: %{nodejs_arches} noarch
- stratis-cli
ExclusiveArch: %{rust_arches} noarch
- stratisd
ExclusiveArch: %{rust_arches}
ExclusiveArch: ${rust_arches}
- stripesnoop
ExclusiveArch: %{ix86} x86_64
- supercollider
ExclusiveArch: %{qt5_qtwebengine_arches}
- supermin
ExclusiveArch: %{kernel_arches}
- svt-av1
ExclusiveArch: x86_64
- svt-vp9
ExclusiveArch: x86_64
- swift-lang
ExclusiveArch: x86_64 aarch64
- sysbench
ExclusiveArch: %{arm} %{ix86} x86_64 %{mips}
ExclusiveArch: %{arm} %{ix86} x86_64 %{mips} aarch64 ppc64le s390x
- syslinux
ExclusiveArch: %{ix86} x86_64
ExclusiveArch: %{ix86} x86_64
- taglib-sharp
ExclusiveArch: %{mono_arches}
- tarantool
ExclusiveArch: %{ix86} x86_64
- tboot
ExclusiveArch: %{ix86} x86_64
- tdlib
ExclusiveArch: x86_64
- templates_parser
ExclusiveArch: %GPRbuild_arches
- ternimal
ExclusiveArch: %{rust_arches}
- testcloud
ExclusiveArch: %{kernel_arches} noarch
- themonospot-base
ExclusiveArch: %mono_arches
- themonospot-console
ExclusiveArch: %mono_arches
- themonospot-gui-gtk
ExclusiveArch: %mono_arches
- themonospot-plugin-avi
ExclusiveArch: %mono_arches
- themonospot-plugin-mkv
ExclusiveArch: %mono_arches
- thermald
ExclusiveArch: %{ix86} x86_64
- tilix
ExclusiveArch: %{ldc_arches}
- tmux-top
ExclusiveArch: %{go_arches}
- tomboy
ExclusiveArch: %{mono_arches}
- topojson-client
ExclusiveArch: %{nodejs_arches} noarch
- topojson-server
ExclusiveArch: %{nodejs_arches} noarch
- topojson-simplify
ExclusiveArch: %{nodejs_arches} noarch
- torbrowser-launcher
ExclusiveArch: %{ix86} x86_64
- tuned-profiles-nfv-host-bin
ExclusiveArch: %{ix86} x86_64
- uClibc
ExclusiveArch: %{arm} %{ix86} x86_64 %{mips}
- ucx
ExclusiveArch: aarch64 ppc64le x86_64
- ugene
ExclusiveArch: %{ix86} x86_64
- uglify-js
ExclusiveArch: %{nodejs_arches} noarch
- uglify-js1
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- unetbootin
ExclusiveArch: %{ix86} x86_64
- ursa-major
ExclusiveArch: noarch aarch64 ppc64le s390x x86_64
- usd
ExclusiveArch: aarch64 x86_64
- v8-314
ExclusiveArch: %{ix86} x86_64 %{arm} mips mipsel ppc ppc64
- valgrind
ExclusiveArch: %{ix86} x86_64 ppc ppc64 ppc64le s390x armv7hl aarch64
- vboot-utils
ExclusiveArch: %{arm} aarch64 %{ix86} x86_64
- vim-go
ExclusiveArch: %{?golang_arches}%{!?golang_arches:%{ix86} x86_64 %{arm}}
- virt-p2v
ExclusiveArch: x86_64
- virt-v2v
ExclusiveArch: x86_64
- virtualbox-guest-additions
ExclusiveArch: i686 x86_64
- vkd3d
ExclusiveArch: %{ix86} x86_64 %{arm}
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64
- vmaf
ExclusiveArch: x86_64
- vmemcache
ExclusiveArch: x86_64 ppc64 ppc64le s390x aarch64
- vrq
ExclusiveArch: %{ix86} x86_64
- warsow
ExclusiveArch: %{ix86} x86_64 %{arm}
- warsow-data
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
ExclusiveArch: %{ix86} x86_64 %{arm}
- webkit2-sharp
ExclusiveArch: %mono_arches
- wine
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64
ExclusiveArch: %{ix86} %{arm}
- wine-dxvk
ExclusiveArch: %{ix86} x86_64
- winetricks
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64
- wxMaxima
ExclusiveArch: %{arm} %{ix86} x86_64 aarch64 ppc sparcv9
- x2goclient
ExclusiveArch: x86_64
- xe-guest-utilities-latest
ExclusiveArch: %{ix86} x86_64
- xen
ExclusiveArch: %{ix86} x86_64 armv7hl aarch64
- xmlada
ExclusiveArch: %{GPRbuild_arches}
- xorg-x11-drv-armsoc
ExclusiveArch: %{arm} aarch64
- xorg-x11-drv-intel
ExclusiveArch: %{ix86} x86_64
- xorg-x11-drv-openchrome
ExclusiveArch: %{ix86} x86_64
- xorg-x11-drv-vesa
ExclusiveArch: %{ix86} x86_64
- xorg-x11-drv-vmware
ExclusiveArch: %{ix86} x86_64 ia64
- xsp
ExclusiveArch: %mono_arches
- yarnpkg
ExclusiveArch: %{nodejs_arches} noarch
- zeal
ExclusiveArch: %{qt5_qtwebengine_arches}
- zeromq-ada
ExclusiveArch: %{GPRbuild_arches}
- zig
ExclusiveArch: %{zig_arches}
- zlib-ada
ExclusiveArch: %{GPRbuild_arches}
- zlib-ng
ExclusiveArch: aarch64 i686 ppc64le s390x x86_64
- zola
ExclusiveArch: %{rust_arches}
2 years, 6 months
Architecture specific change in rpms/wlcs.git
by githook-noreply@fedoraproject.org
The package rpms/wlcs.git has added or updated architecture specific content in its
spec file (ExclusiveArch/ExcludeArch or %ifarch/%ifnarch) in commit(s):
https://src.fedoraproject.org/cgit/rpms/wlcs.git/commit/?id=3eb2210d0ab4c....
Change:
+%ifarch x86_64 ppc64 ppc64le aarch64
Thanks.
Full change:
============
commit 4073d6955bb906e968b1437a54f5490421542231
Author: Benjamin A. Beasley <code(a)musicinmybrain.net>
Date: Tue Nov 2 15:27:48 2021 -0400
Opt in to rpmautospec
diff --git a/changelog b/changelog
new file mode 100644
index 0000000..c9b9216
--- /dev/null
+++ b/changelog
@@ -0,0 +1,49 @@
+* Tue Nov 02 2021 Benjamin A. Beasley <code(a)musicinmybrain.net> - 1.3.0-4
+- Rebuild for gtest 1.11.0 (fix RHBZ#2001358)
+- Remove obsolete macros and workarounds
+- Update architecture lists for sanitizers
+- Audit source licenses and correct License from “GPLv2 or GPLv3” to “GPLv3”
+- Drop license files from -devel since it depends on the base package
+- Reduce macro indirection in the spec file
+- Use more pkgconfig(…) and cmake(…) dependencies where appropriate
+- Package README.rst in -devel package only, and also package example/
+- Fix a trivial typo in README.rst and the package description
+
+* Tue Nov 2 2021 Mamoru TASAKA <mtasaka(a)fedoraproject.org> - 1.3.0-3
+- Backport upstream patch to build with gtest 1.11
+
+* Fri Jul 23 2021 Fedora Release Engineering <releng(a)fedoraproject.org> - 1.3.0-2
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild
+
+* Thu Jun 24 2021 Neal Gompa <ngompa13(a)gmail.com> - 1.3.0-1
+- Update to 1.3.0 (RH#1931861)
+
+* Wed Jan 27 2021 Fedora Release Engineering <releng(a)fedoraproject.org> - 1.2.0-2
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild
+
+* Sun Nov 1 2020 Neal Gompa <ngompa13(a)gmail.com> - 1.2.0-1
+- Update to 1.2.0 (RH#1893144)
+
+* Sat Oct 17 2020 Jeff Law <law(a)redhat.com> - 1.1.0-5
+- Use reference for loop variable to avoid range-loop-construct warning
+
+* Wed Jul 29 2020 Fedora Release Engineering <releng(a)fedoraproject.org> - 1.1.0-4
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
+
+* Wed Apr 01 2020 Neal Gompa <ngompa13(a)gmail.com> - 1.1.0-3
+- Rebuild for gtest 1.10.0
+
+* Fri Jan 31 2020 Fedora Release Engineering <releng(a)fedoraproject.org> - 1.1.0-2
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
+
+* Tue Aug 27 2019 Neal Gompa <ngompa13(a)gmail.com> - 1.1.0-1
+- Update to 1.1.0 (RH#1742232)
+
+* Sat Jul 27 2019 Fedora Release Engineering <releng(a)fedoraproject.org> - 1.0.0-3
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
+
+* Sat Jul 13 2019 Neal Gompa <ngompa13(a)gmail.com> - 1.0.0-2
+- Fix pkgconfig file to point to runner binaries
+
+* Sat Jul 13 2019 Neal Gompa <ngompa13(a)gmail.com> - 1.0.0-1
+- Initial packaging for Fedora
diff --git a/wlcs.spec b/wlcs.spec
index 802c55e..9b32f5a 100644
--- a/wlcs.spec
+++ b/wlcs.spec
@@ -26,7 +26,7 @@
Name: wlcs
Version: 1.3.0
-Release: 4%{?dist}
+Release: %autorelease
Summary: Wayland Conformance Test Suite
# The entire source is GPLv3, except:
@@ -171,52 +171,4 @@ Wayland compositor tests that use wlcs.
%changelog
-* Tue Nov 02 2021 Benjamin A. Beasley <code(a)musicinmybrain.net> - 1.3.0-4
-- Rebuild for gtest 1.11.0 (fix RHBZ#2001358)
-- Remove obsolete macros and workarounds
-- Update architecture lists for sanitizers
-- Audit source licenses and correct License from “GPLv2 or GPLv3” to “GPLv3”
-- Drop license files from -devel since it depends on the base package
-- Reduce macro indirection in the spec file
-- Use more pkgconfig(…) and cmake(…) dependencies where appropriate
-- Package README.rst in -devel package only, and also package example/
-- Fix a trivial typo in README.rst and the package description
-
-* Tue Nov 2 2021 Mamoru TASAKA <mtasaka(a)fedoraproject.org> - 1.3.0-3
-- Backport upstream patch to build with gtest 1.11
-
-* Fri Jul 23 2021 Fedora Release Engineering <releng(a)fedoraproject.org> - 1.3.0-2
-- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild
-
-* Thu Jun 24 2021 Neal Gompa <ngompa13(a)gmail.com> - 1.3.0-1
-- Update to 1.3.0 (RH#1931861)
-
-* Wed Jan 27 2021 Fedora Release Engineering <releng(a)fedoraproject.org> - 1.2.0-2
-- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild
-
-* Sun Nov 1 2020 Neal Gompa <ngompa13(a)gmail.com> - 1.2.0-1
-- Update to 1.2.0 (RH#1893144)
-
-* Sat Oct 17 2020 Jeff Law <law(a)redhat.com> - 1.1.0-5
-- Use reference for loop variable to avoid range-loop-construct warning
-
-* Wed Jul 29 2020 Fedora Release Engineering <releng(a)fedoraproject.org> - 1.1.0-4
-- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
-
-* Wed Apr 01 2020 Neal Gompa <ngompa13(a)gmail.com> - 1.1.0-3
-- Rebuild for gtest 1.10.0
-
-* Fri Jan 31 2020 Fedora Release Engineering <releng(a)fedoraproject.org> - 1.1.0-2
-- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
-
-* Tue Aug 27 2019 Neal Gompa <ngompa13(a)gmail.com> - 1.1.0-1
-- Update to 1.1.0 (RH#1742232)
-
-* Sat Jul 27 2019 Fedora Release Engineering <releng(a)fedoraproject.org> - 1.0.0-3
-- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
-
-* Sat Jul 13 2019 Neal Gompa <ngompa13(a)gmail.com> - 1.0.0-2
-- Fix pkgconfig file to point to runner binaries
-
-* Sat Jul 13 2019 Neal Gompa <ngompa13(a)gmail.com> - 1.0.0-1
-- Initial packaging for Fedora
+%autochangelog
commit 3eb2210d0ab4ca368081311161c5379c73fee6d9
Author: Benjamin A. Beasley <code(a)musicinmybrain.net>
Date: Tue Nov 2 13:57:41 2021 -0400
Rebuild for gtest 1.11.0 (fix RHBZ#2001358)
- Remove obsolete macros and workarounds
- Update architecture lists for sanitizers
- Audit source licenses and correct License from “GPLv2 or GPLv3” to “GPLv3”
- Drop license files from -devel since it depends on the base package
- Reduce macro indirection in the spec file
- Use more pkgconfig(…) and cmake(…) dependencies where appropriate
- Package README.rst in -devel package only, and also package example/
- Fix a trivial typo in README.rst and the package description
diff --git a/215.patch b/215.patch
new file mode 100644
index 0000000..6dfbf93
--- /dev/null
+++ b/215.patch
@@ -0,0 +1,26 @@
+From 6aa1becb3cee328f715af76d16de544974b6646e Mon Sep 17 00:00:00 2001
+From: "Benjamin A. Beasley" <code(a)musicinmybrain.net>
+Date: Tue, 2 Nov 2021 13:40:07 -0400
+Subject: [PATCH] =?UTF-8?q?Fix=20a=20trivial=20typo=20(=E2=80=9Caid?=
+ =?UTF-8?q?=E2=80=9D=20for=20=E2=80=9Cand=E2=80=9D)=20in=20README.rst?=
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+---
+ README.rst | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/README.rst b/README.rst
+index 50f8ec1f..7656dc30 100644
+--- a/README.rst
++++ b/README.rst
+@@ -25,7 +25,7 @@ happens-before ordering available.
+
+ Instead, ``wlcs`` relies on compositors providing an integration module,
+ providing ``wlcs`` with API hooks to start a compositor, connect a client,
+-move a window, and so on. This makes both writing aid debugging tests easier -
++move a window, and so on. This makes both writing and debugging tests easier -
+ the tests are (generally) in the same address space as the compositor, so there
+ is a consistent global clock available, it's easier to poke around in
+ compositor internals, and standard debugging tools can follow control flow from
diff --git a/wlcs-1.3.0-gtest-1.11.patch b/f6ff93f7b7db154b7899f415ec67677e6ddd7ff5.patch
similarity index 100%
rename from wlcs-1.3.0-gtest-1.11.patch
rename to f6ff93f7b7db154b7899f415ec67677e6ddd7ff5.patch
diff --git a/wlcs.spec b/wlcs.spec
index 77f3236..802c55e 100644
--- a/wlcs.spec
+++ b/wlcs.spec
@@ -1,45 +1,105 @@
-%undefine __cmake_in_source_build
-
-%if 0%{?fedora} >= 30
-# asan doesn't work with gcc9 on s390x...
-%ifarch s390 s390x
-%bcond_with asan
-%else
+# List copied from gcc.spec
+# Current as of 11.2.1 (line 59)
+# Note that this covers all Fedora primary architectures.
+%ifarch %{ix86} x86_64 ppc ppc64 ppc64le ppc64p7 s390 s390x %{arm} aarch64
%bcond_without asan
-%endif
+%else
+%bcond_with asan
%endif
+# List copied from gcc.spec
+# Current as of 11.2.1 (line 74)
+# Note that this covers all Fedora primary architectures.
+%ifarch %{ix86} x86_64 ppc ppc64 ppc64le ppc64p7 s390 s390x %{arm} aarch64
%bcond_without ubsan
-
-%ifarch %{ix86} %{arm} s390 s390x
-%bcond_with tsan
%else
+%bcond_with ubsan
+%endif
+
+# List copied from gcc.spec
+# Current as of 11.2.1 (line 64)
+%ifarch x86_64 ppc64 ppc64le aarch64
%bcond_without tsan
+%else
+%bcond_with tsan
%endif
Name: wlcs
Version: 1.3.0
-Release: 3%{?dist}
+Release: 4%{?dist}
Summary: Wayland Conformance Test Suite
-License: GPLv2 or GPLv3
-URL: https://github.com/MirServer/%{name}
-Source0: %{url}/releases/download/v%{version}/%{name}-%{version}.tar.xz
-# https://github.com/MirServer/wlcs/commit/f6ff93f7b7db154b7899f415ec67677e...
-Patch0: wlcs-1.3.0-gtest-1.11.patch
+# The entire source is GPLv3, except:
+#
+# (GPLv2 or GPLv3):
+# - CMakeLists.txt
+# > Build system file that does not contribute to the licenses of the binary
+# RPMs
+#
+# (LGPLv2 or LGPLv3):
+# - include/mutex.h
+# - include/shared_library.h
+# - src/helpers.cpp
+# - src/shared_library.cpp
+# > Since (L)GPLv2-only code is not compatible with (L)GPLv3 or (L)GPLv3+ code,
+# and these sources are combined with GPLv3 code, the LGPLv3 option is used
+# in this package.
+#
+# GPLv2+:
+# - debian/*
+# > Not used in this package
+#
+# MIT:
+# - src/protocol/gtk-primary-selection.xml
+# - src/protocol/pointer-constraints-unstable-v1.xml
+# - src/protocol/primary-selection-unstable-v1.xml
+# - src/protocol/relative-pointer-unstable-v1.xml
+# - src/protocol/wayland.xml
+# - src/protocol/xdg-output-unstable-v1.xml
+# - src/protocol/xdg-shell-unstable-v6.xml
+# - src/protocol/xdg-shell.xml
+# - tests/test_bad_buffer.cpp
+# - tests/test_surface_events.cpp
+# - tests/xdg_popup_v6.cpp
+# - tests/xdg_surface_stable.cpp
+# - tests/xdg_surface_v6.cpp
+# - tests/xdg_toplevel_stable.cpp
+# - tests/xdg_toplevel_v6.cpp
+# > Files in tests/ are all test code that is not installed (so does not
+# contribute to the licenses of the binary RPMs). Files in src/protocol/ are
+# used as inputs to “wayland-scanner” to generate C source files and headers,
+# and are not directly included in the binary RPMs.
+#
+# Thus, files under GPLv3 and (LGPLv2 or LGPLv3) licenses contribute to the
+# installed binaries, and the effective license remains GPLv3.
+License: GPLv3
+URL: https://github.com/MirServer/wlcs
+Source0: %{url}/releases/download/v%{version}/wlcs-%{version}.tar.xz
+# Backport upstream commit f6ff93f7b7db154b7899f415ec67677e6ddd7ff5:
+#
+# Fix build when using GTest-1.11
+#
+# Some change in GTest 1.11 headers caused a conflict on the name
+# `Pointer`. Removing the unconditional import of namespace `testing`
+# in favor of individual imports of the used items fixes it.
+Patch0: %{url}/commit/f6ff93f7b7db154b7899f415ec67677e6ddd7ff5.patch
+# Fix a trivial typo (“aid” for “and”) in README.rst
+# https://github.com/MirServer/wlcs/pull/215
+Patch1: %{url}/pull/215.patch
BuildRequires: gcc
BuildRequires: gcc-c++
+
BuildRequires: cmake
BuildRequires: ninja-build
+
BuildRequires: boost-devel
-BuildRequires: gtest-devel
+BuildRequires: cmake(GTest)
BuildRequires: gmock-devel
BuildRequires: pkgconfig(wayland-client)
BuildRequires: pkgconfig(wayland-server)
-BuildRequires: %{_bindir}/wayland-scanner
-# Because for some reason they're not pulled in normally?
-BuildRequires: libatomic
+BuildRequires: pkgconfig(wayland-scanner)
+
%if %{with asan}
BuildRequires: libasan
%endif
@@ -51,34 +111,31 @@ BuildRequires: libtsan
%endif
%description
-wlcs aspires to be a protocol-conformance-verifying test suite
-usable by Wayland compositor implementors.
+wlcs aspires to be a protocol-conformance-verifying test suite usable by
+Wayland compositor implementors.
-It is growing out of porting the existing Weston test suite to
-be run in Mir's test suite, but it is designed to be usable by
-any compositor.
+It is growing out of porting the existing Weston test suite to be run in Mir’s
+test suite, but it is designed to be usable by any compositor.
-wlcs relies on compositors providing an integration module,
-providing wlcs with API hooks to start a compositor, connect a
-client, move a window, and so on.
+wlcs relies on compositors providing an integration module, providing wlcs with
+API hooks to start a compositor, connect a client, move a window, and so on.
-This makes both writing aid debugging tests easier - the tests
-are (generally) in the same address space as the compositor, so
-there is a consistent global clock available, it's easier to poke
-around in compositor internals, and standard debugging tools can
-follow control flow from the test client to the compositor and
-back again.
+This makes both writing and debugging tests easier - the tests are (generally)
+in the same address space as the compositor, so there is a consistent global
+clock available, it’s easier to poke around in compositor internals, and
+standard debugging tools can follow control flow from the test client to the
+compositor and back again.
%package devel
-Summary: Development files for %{name}
-Requires: %{name}%{?_isa} = %{version}-%{release}
+Summary: Development files for wlcs
+Requires: wlcs%{?_isa} = %{version}-%{release}
%description devel
-%{name} aspires to be a protocol-conformance-verifying test suite
-usable by Wayland compositor implementors.
+wlcs aspires to be a protocol-conformance-verifying test suite usable by
+Wayland compositor implementors.
-The %{name}-devel package contains libraries and header files for
-developing Wayland compositor tests that use %{name}.
+The wlcs-devel package contains libraries and header files for developing
+Wayland compositor tests that use wlcs.
%prep
@@ -86,25 +143,45 @@ developing Wayland compositor tests that use %{name}.
%build
-%cmake -GNinja %{!?with_asan:-DWLCS_BUILD_ASAN=OFF} %{!?with_ubsan:-DWLCS_BUILD_UBSAN=OFF} %{!?with_tsan:-DWLCS_BUILD_TSAN=OFF}
+%cmake \
+ -DWLCS_BUILD_ASAN=%{?with_asan:ON}%{?!with_asan:OFF} \
+ -DWLCS_BUILD_TSAN=%{?with_tsan:ON}%{?!with_tsan:OFF} \
+ -DWLCS_BUILD_UBSAN=%{?with_ubsan:ON}%{?!with_ubsan:OFF} \
+ -GNinja
%cmake_build
+
%install
%cmake_install
+
%files
%license COPYING.*
%doc README.rst
-%{_libexecdir}/%{name}/
+
+%{_libexecdir}/wlcs/
+
%files devel
-%license COPYING.*
%doc README.rst
-%{_includedir}/%{name}/
-%{_libdir}/pkgconfig/%{name}.pc
+%doc example
+
+%{_includedir}/wlcs/
+%{_libdir}/pkgconfig/wlcs.pc
%changelog
+* Tue Nov 02 2021 Benjamin A. Beasley <code(a)musicinmybrain.net> - 1.3.0-4
+- Rebuild for gtest 1.11.0 (fix RHBZ#2001358)
+- Remove obsolete macros and workarounds
+- Update architecture lists for sanitizers
+- Audit source licenses and correct License from “GPLv2 or GPLv3” to “GPLv3”
+- Drop license files from -devel since it depends on the base package
+- Reduce macro indirection in the spec file
+- Use more pkgconfig(…) and cmake(…) dependencies where appropriate
+- Package README.rst in -devel package only, and also package example/
+- Fix a trivial typo in README.rst and the package description
+
* Tue Nov 2 2021 Mamoru TASAKA <mtasaka(a)fedoraproject.org> - 1.3.0-3
- Backport upstream patch to build with gtest 1.11
commit 8bae7df04083c260c7b18d9045757d7a79c77d70
Author: Mamoru TASAKA <mtasaka(a)fedoraproject.org>
Date: Tue Nov 2 22:19:22 2021 +0900
Backport upstream patch to build with gtest 1.11
diff --git a/wlcs-1.3.0-gtest-1.11.patch b/wlcs-1.3.0-gtest-1.11.patch
new file mode 100644
index 0000000..31981c6
--- /dev/null
+++ b/wlcs-1.3.0-gtest-1.11.patch
@@ -0,0 +1,49 @@
+From f6ff93f7b7db154b7899f415ec67677e6ddd7ff5 Mon Sep 17 00:00:00 2001
+From: Victor Berger <victor.berger(a)m4x.org>
+Date: Thu, 8 Jul 2021 19:39:30 +0200
+Subject: [PATCH] Fix build when using GTest-1.11
+
+Some change in GTest 1.11 headers caused a conflict on the name
+`Pointer`. Removing the unconditional import of namespace `testing`
+in favor of individual imports of the used items fixes it.
+
+cc #205
+---
+ tests/pointer_constraints.cpp | 6 +++++-
+ tests/relative_pointer.cpp | 6 +++++-
+ 2 files changed, 10 insertions(+), 2 deletions(-)
+
+diff --git a/tests/pointer_constraints.cpp b/tests/pointer_constraints.cpp
+index d306710..6ee856f 100644
+--- a/tests/pointer_constraints.cpp
++++ b/tests/pointer_constraints.cpp
+@@ -24,7 +24,11 @@
+
+ #include <memory>
+
+-using namespace testing;
++using testing::AnyNumber;
++using testing::Eq;
++using testing::Ne;
++using testing::NotNull;
++
+ using namespace wlcs;
+
+ namespace
+diff --git a/tests/relative_pointer.cpp b/tests/relative_pointer.cpp
+index c33316c..c5c5358 100644
+--- a/tests/relative_pointer.cpp
++++ b/tests/relative_pointer.cpp
+@@ -22,7 +22,11 @@
+
+ #include <gmock/gmock.h>
+
+-using namespace testing;
++using testing::AnyNumber;
++using testing::IsTrue;
++using testing::NotNull;
++using testing::_;
++
+ using namespace wlcs;
+
+ namespace
diff --git a/wlcs.spec b/wlcs.spec
index 371baba..77f3236 100644
--- a/wlcs.spec
+++ b/wlcs.spec
@@ -19,12 +19,14 @@
Name: wlcs
Version: 1.3.0
-Release: 2%{?dist}
+Release: 3%{?dist}
Summary: Wayland Conformance Test Suite
License: GPLv2 or GPLv3
URL: https://github.com/MirServer/%{name}
Source0: %{url}/releases/download/v%{version}/%{name}-%{version}.tar.xz
+# https://github.com/MirServer/wlcs/commit/f6ff93f7b7db154b7899f415ec67677e...
+Patch0: wlcs-1.3.0-gtest-1.11.patch
BuildRequires: gcc
BuildRequires: gcc-c++
@@ -103,6 +105,9 @@ developing Wayland compositor tests that use %{name}.
%changelog
+* Tue Nov 2 2021 Mamoru TASAKA <mtasaka(a)fedoraproject.org> - 1.3.0-3
+- Backport upstream patch to build with gtest 1.11
+
* Fri Jul 23 2021 Fedora Release Engineering <releng(a)fedoraproject.org> - 1.3.0-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild
commit 7c8df544219327e5e6c5885e7a3cab61ebfa1e31
Author: Fedora Release Engineering <releng(a)fedoraproject.org>
Date: Fri Jul 23 21:01:52 2021 +0000
- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng(a)fedoraproject.org>
diff --git a/wlcs.spec b/wlcs.spec
index 5176ad8..371baba 100644
--- a/wlcs.spec
+++ b/wlcs.spec
@@ -19,7 +19,7 @@
Name: wlcs
Version: 1.3.0
-Release: 1%{?dist}
+Release: 2%{?dist}
Summary: Wayland Conformance Test Suite
License: GPLv2 or GPLv3
@@ -103,6 +103,9 @@ developing Wayland compositor tests that use %{name}.
%changelog
+* Fri Jul 23 2021 Fedora Release Engineering <releng(a)fedoraproject.org> - 1.3.0-2
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild
+
* Thu Jun 24 2021 Neal Gompa <ngompa13(a)gmail.com> - 1.3.0-1
- Update to 1.3.0 (RH#1931861)
2 years, 6 months
Architecture specific change in rpms/wlcs.git
by githook-noreply@fedoraproject.org
The package rpms/wlcs.git has added or updated architecture specific content in its
spec file (ExclusiveArch/ExcludeArch or %ifarch/%ifnarch) in commit(s):
https://src.fedoraproject.org/cgit/rpms/wlcs.git/commit/?id=3eb2210d0ab4c....
Change:
+%ifarch x86_64 ppc64 ppc64le aarch64
Thanks.
Full change:
============
commit 4073d6955bb906e968b1437a54f5490421542231
Author: Benjamin A. Beasley <code(a)musicinmybrain.net>
Date: Tue Nov 2 15:27:48 2021 -0400
Opt in to rpmautospec
diff --git a/changelog b/changelog
new file mode 100644
index 0000000..c9b9216
--- /dev/null
+++ b/changelog
@@ -0,0 +1,49 @@
+* Tue Nov 02 2021 Benjamin A. Beasley <code(a)musicinmybrain.net> - 1.3.0-4
+- Rebuild for gtest 1.11.0 (fix RHBZ#2001358)
+- Remove obsolete macros and workarounds
+- Update architecture lists for sanitizers
+- Audit source licenses and correct License from “GPLv2 or GPLv3” to “GPLv3”
+- Drop license files from -devel since it depends on the base package
+- Reduce macro indirection in the spec file
+- Use more pkgconfig(…) and cmake(…) dependencies where appropriate
+- Package README.rst in -devel package only, and also package example/
+- Fix a trivial typo in README.rst and the package description
+
+* Tue Nov 2 2021 Mamoru TASAKA <mtasaka(a)fedoraproject.org> - 1.3.0-3
+- Backport upstream patch to build with gtest 1.11
+
+* Fri Jul 23 2021 Fedora Release Engineering <releng(a)fedoraproject.org> - 1.3.0-2
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild
+
+* Thu Jun 24 2021 Neal Gompa <ngompa13(a)gmail.com> - 1.3.0-1
+- Update to 1.3.0 (RH#1931861)
+
+* Wed Jan 27 2021 Fedora Release Engineering <releng(a)fedoraproject.org> - 1.2.0-2
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild
+
+* Sun Nov 1 2020 Neal Gompa <ngompa13(a)gmail.com> - 1.2.0-1
+- Update to 1.2.0 (RH#1893144)
+
+* Sat Oct 17 2020 Jeff Law <law(a)redhat.com> - 1.1.0-5
+- Use reference for loop variable to avoid range-loop-construct warning
+
+* Wed Jul 29 2020 Fedora Release Engineering <releng(a)fedoraproject.org> - 1.1.0-4
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
+
+* Wed Apr 01 2020 Neal Gompa <ngompa13(a)gmail.com> - 1.1.0-3
+- Rebuild for gtest 1.10.0
+
+* Fri Jan 31 2020 Fedora Release Engineering <releng(a)fedoraproject.org> - 1.1.0-2
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
+
+* Tue Aug 27 2019 Neal Gompa <ngompa13(a)gmail.com> - 1.1.0-1
+- Update to 1.1.0 (RH#1742232)
+
+* Sat Jul 27 2019 Fedora Release Engineering <releng(a)fedoraproject.org> - 1.0.0-3
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
+
+* Sat Jul 13 2019 Neal Gompa <ngompa13(a)gmail.com> - 1.0.0-2
+- Fix pkgconfig file to point to runner binaries
+
+* Sat Jul 13 2019 Neal Gompa <ngompa13(a)gmail.com> - 1.0.0-1
+- Initial packaging for Fedora
diff --git a/wlcs.spec b/wlcs.spec
index 802c55e..9b32f5a 100644
--- a/wlcs.spec
+++ b/wlcs.spec
@@ -26,7 +26,7 @@
Name: wlcs
Version: 1.3.0
-Release: 4%{?dist}
+Release: %autorelease
Summary: Wayland Conformance Test Suite
# The entire source is GPLv3, except:
@@ -171,52 +171,4 @@ Wayland compositor tests that use wlcs.
%changelog
-* Tue Nov 02 2021 Benjamin A. Beasley <code(a)musicinmybrain.net> - 1.3.0-4
-- Rebuild for gtest 1.11.0 (fix RHBZ#2001358)
-- Remove obsolete macros and workarounds
-- Update architecture lists for sanitizers
-- Audit source licenses and correct License from “GPLv2 or GPLv3” to “GPLv3”
-- Drop license files from -devel since it depends on the base package
-- Reduce macro indirection in the spec file
-- Use more pkgconfig(…) and cmake(…) dependencies where appropriate
-- Package README.rst in -devel package only, and also package example/
-- Fix a trivial typo in README.rst and the package description
-
-* Tue Nov 2 2021 Mamoru TASAKA <mtasaka(a)fedoraproject.org> - 1.3.0-3
-- Backport upstream patch to build with gtest 1.11
-
-* Fri Jul 23 2021 Fedora Release Engineering <releng(a)fedoraproject.org> - 1.3.0-2
-- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild
-
-* Thu Jun 24 2021 Neal Gompa <ngompa13(a)gmail.com> - 1.3.0-1
-- Update to 1.3.0 (RH#1931861)
-
-* Wed Jan 27 2021 Fedora Release Engineering <releng(a)fedoraproject.org> - 1.2.0-2
-- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild
-
-* Sun Nov 1 2020 Neal Gompa <ngompa13(a)gmail.com> - 1.2.0-1
-- Update to 1.2.0 (RH#1893144)
-
-* Sat Oct 17 2020 Jeff Law <law(a)redhat.com> - 1.1.0-5
-- Use reference for loop variable to avoid range-loop-construct warning
-
-* Wed Jul 29 2020 Fedora Release Engineering <releng(a)fedoraproject.org> - 1.1.0-4
-- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
-
-* Wed Apr 01 2020 Neal Gompa <ngompa13(a)gmail.com> - 1.1.0-3
-- Rebuild for gtest 1.10.0
-
-* Fri Jan 31 2020 Fedora Release Engineering <releng(a)fedoraproject.org> - 1.1.0-2
-- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
-
-* Tue Aug 27 2019 Neal Gompa <ngompa13(a)gmail.com> - 1.1.0-1
-- Update to 1.1.0 (RH#1742232)
-
-* Sat Jul 27 2019 Fedora Release Engineering <releng(a)fedoraproject.org> - 1.0.0-3
-- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
-
-* Sat Jul 13 2019 Neal Gompa <ngompa13(a)gmail.com> - 1.0.0-2
-- Fix pkgconfig file to point to runner binaries
-
-* Sat Jul 13 2019 Neal Gompa <ngompa13(a)gmail.com> - 1.0.0-1
-- Initial packaging for Fedora
+%autochangelog
commit 3eb2210d0ab4ca368081311161c5379c73fee6d9
Author: Benjamin A. Beasley <code(a)musicinmybrain.net>
Date: Tue Nov 2 13:57:41 2021 -0400
Rebuild for gtest 1.11.0 (fix RHBZ#2001358)
- Remove obsolete macros and workarounds
- Update architecture lists for sanitizers
- Audit source licenses and correct License from “GPLv2 or GPLv3” to “GPLv3”
- Drop license files from -devel since it depends on the base package
- Reduce macro indirection in the spec file
- Use more pkgconfig(…) and cmake(…) dependencies where appropriate
- Package README.rst in -devel package only, and also package example/
- Fix a trivial typo in README.rst and the package description
diff --git a/215.patch b/215.patch
new file mode 100644
index 0000000..6dfbf93
--- /dev/null
+++ b/215.patch
@@ -0,0 +1,26 @@
+From 6aa1becb3cee328f715af76d16de544974b6646e Mon Sep 17 00:00:00 2001
+From: "Benjamin A. Beasley" <code(a)musicinmybrain.net>
+Date: Tue, 2 Nov 2021 13:40:07 -0400
+Subject: [PATCH] =?UTF-8?q?Fix=20a=20trivial=20typo=20(=E2=80=9Caid?=
+ =?UTF-8?q?=E2=80=9D=20for=20=E2=80=9Cand=E2=80=9D)=20in=20README.rst?=
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+---
+ README.rst | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/README.rst b/README.rst
+index 50f8ec1f..7656dc30 100644
+--- a/README.rst
++++ b/README.rst
+@@ -25,7 +25,7 @@ happens-before ordering available.
+
+ Instead, ``wlcs`` relies on compositors providing an integration module,
+ providing ``wlcs`` with API hooks to start a compositor, connect a client,
+-move a window, and so on. This makes both writing aid debugging tests easier -
++move a window, and so on. This makes both writing and debugging tests easier -
+ the tests are (generally) in the same address space as the compositor, so there
+ is a consistent global clock available, it's easier to poke around in
+ compositor internals, and standard debugging tools can follow control flow from
diff --git a/wlcs-1.3.0-gtest-1.11.patch b/f6ff93f7b7db154b7899f415ec67677e6ddd7ff5.patch
similarity index 100%
rename from wlcs-1.3.0-gtest-1.11.patch
rename to f6ff93f7b7db154b7899f415ec67677e6ddd7ff5.patch
diff --git a/wlcs.spec b/wlcs.spec
index 77f3236..802c55e 100644
--- a/wlcs.spec
+++ b/wlcs.spec
@@ -1,45 +1,105 @@
-%undefine __cmake_in_source_build
-
-%if 0%{?fedora} >= 30
-# asan doesn't work with gcc9 on s390x...
-%ifarch s390 s390x
-%bcond_with asan
-%else
+# List copied from gcc.spec
+# Current as of 11.2.1 (line 59)
+# Note that this covers all Fedora primary architectures.
+%ifarch %{ix86} x86_64 ppc ppc64 ppc64le ppc64p7 s390 s390x %{arm} aarch64
%bcond_without asan
-%endif
+%else
+%bcond_with asan
%endif
+# List copied from gcc.spec
+# Current as of 11.2.1 (line 74)
+# Note that this covers all Fedora primary architectures.
+%ifarch %{ix86} x86_64 ppc ppc64 ppc64le ppc64p7 s390 s390x %{arm} aarch64
%bcond_without ubsan
-
-%ifarch %{ix86} %{arm} s390 s390x
-%bcond_with tsan
%else
+%bcond_with ubsan
+%endif
+
+# List copied from gcc.spec
+# Current as of 11.2.1 (line 64)
+%ifarch x86_64 ppc64 ppc64le aarch64
%bcond_without tsan
+%else
+%bcond_with tsan
%endif
Name: wlcs
Version: 1.3.0
-Release: 3%{?dist}
+Release: 4%{?dist}
Summary: Wayland Conformance Test Suite
-License: GPLv2 or GPLv3
-URL: https://github.com/MirServer/%{name}
-Source0: %{url}/releases/download/v%{version}/%{name}-%{version}.tar.xz
-# https://github.com/MirServer/wlcs/commit/f6ff93f7b7db154b7899f415ec67677e...
-Patch0: wlcs-1.3.0-gtest-1.11.patch
+# The entire source is GPLv3, except:
+#
+# (GPLv2 or GPLv3):
+# - CMakeLists.txt
+# > Build system file that does not contribute to the licenses of the binary
+# RPMs
+#
+# (LGPLv2 or LGPLv3):
+# - include/mutex.h
+# - include/shared_library.h
+# - src/helpers.cpp
+# - src/shared_library.cpp
+# > Since (L)GPLv2-only code is not compatible with (L)GPLv3 or (L)GPLv3+ code,
+# and these sources are combined with GPLv3 code, the LGPLv3 option is used
+# in this package.
+#
+# GPLv2+:
+# - debian/*
+# > Not used in this package
+#
+# MIT:
+# - src/protocol/gtk-primary-selection.xml
+# - src/protocol/pointer-constraints-unstable-v1.xml
+# - src/protocol/primary-selection-unstable-v1.xml
+# - src/protocol/relative-pointer-unstable-v1.xml
+# - src/protocol/wayland.xml
+# - src/protocol/xdg-output-unstable-v1.xml
+# - src/protocol/xdg-shell-unstable-v6.xml
+# - src/protocol/xdg-shell.xml
+# - tests/test_bad_buffer.cpp
+# - tests/test_surface_events.cpp
+# - tests/xdg_popup_v6.cpp
+# - tests/xdg_surface_stable.cpp
+# - tests/xdg_surface_v6.cpp
+# - tests/xdg_toplevel_stable.cpp
+# - tests/xdg_toplevel_v6.cpp
+# > Files in tests/ are all test code that is not installed (so does not
+# contribute to the licenses of the binary RPMs). Files in src/protocol/ are
+# used as inputs to “wayland-scanner” to generate C source files and headers,
+# and are not directly included in the binary RPMs.
+#
+# Thus, files under GPLv3 and (LGPLv2 or LGPLv3) licenses contribute to the
+# installed binaries, and the effective license remains GPLv3.
+License: GPLv3
+URL: https://github.com/MirServer/wlcs
+Source0: %{url}/releases/download/v%{version}/wlcs-%{version}.tar.xz
+# Backport upstream commit f6ff93f7b7db154b7899f415ec67677e6ddd7ff5:
+#
+# Fix build when using GTest-1.11
+#
+# Some change in GTest 1.11 headers caused a conflict on the name
+# `Pointer`. Removing the unconditional import of namespace `testing`
+# in favor of individual imports of the used items fixes it.
+Patch0: %{url}/commit/f6ff93f7b7db154b7899f415ec67677e6ddd7ff5.patch
+# Fix a trivial typo (“aid” for “and”) in README.rst
+# https://github.com/MirServer/wlcs/pull/215
+Patch1: %{url}/pull/215.patch
BuildRequires: gcc
BuildRequires: gcc-c++
+
BuildRequires: cmake
BuildRequires: ninja-build
+
BuildRequires: boost-devel
-BuildRequires: gtest-devel
+BuildRequires: cmake(GTest)
BuildRequires: gmock-devel
BuildRequires: pkgconfig(wayland-client)
BuildRequires: pkgconfig(wayland-server)
-BuildRequires: %{_bindir}/wayland-scanner
-# Because for some reason they're not pulled in normally?
-BuildRequires: libatomic
+BuildRequires: pkgconfig(wayland-scanner)
+
%if %{with asan}
BuildRequires: libasan
%endif
@@ -51,34 +111,31 @@ BuildRequires: libtsan
%endif
%description
-wlcs aspires to be a protocol-conformance-verifying test suite
-usable by Wayland compositor implementors.
+wlcs aspires to be a protocol-conformance-verifying test suite usable by
+Wayland compositor implementors.
-It is growing out of porting the existing Weston test suite to
-be run in Mir's test suite, but it is designed to be usable by
-any compositor.
+It is growing out of porting the existing Weston test suite to be run in Mir’s
+test suite, but it is designed to be usable by any compositor.
-wlcs relies on compositors providing an integration module,
-providing wlcs with API hooks to start a compositor, connect a
-client, move a window, and so on.
+wlcs relies on compositors providing an integration module, providing wlcs with
+API hooks to start a compositor, connect a client, move a window, and so on.
-This makes both writing aid debugging tests easier - the tests
-are (generally) in the same address space as the compositor, so
-there is a consistent global clock available, it's easier to poke
-around in compositor internals, and standard debugging tools can
-follow control flow from the test client to the compositor and
-back again.
+This makes both writing and debugging tests easier - the tests are (generally)
+in the same address space as the compositor, so there is a consistent global
+clock available, it’s easier to poke around in compositor internals, and
+standard debugging tools can follow control flow from the test client to the
+compositor and back again.
%package devel
-Summary: Development files for %{name}
-Requires: %{name}%{?_isa} = %{version}-%{release}
+Summary: Development files for wlcs
+Requires: wlcs%{?_isa} = %{version}-%{release}
%description devel
-%{name} aspires to be a protocol-conformance-verifying test suite
-usable by Wayland compositor implementors.
+wlcs aspires to be a protocol-conformance-verifying test suite usable by
+Wayland compositor implementors.
-The %{name}-devel package contains libraries and header files for
-developing Wayland compositor tests that use %{name}.
+The wlcs-devel package contains libraries and header files for developing
+Wayland compositor tests that use wlcs.
%prep
@@ -86,25 +143,45 @@ developing Wayland compositor tests that use %{name}.
%build
-%cmake -GNinja %{!?with_asan:-DWLCS_BUILD_ASAN=OFF} %{!?with_ubsan:-DWLCS_BUILD_UBSAN=OFF} %{!?with_tsan:-DWLCS_BUILD_TSAN=OFF}
+%cmake \
+ -DWLCS_BUILD_ASAN=%{?with_asan:ON}%{?!with_asan:OFF} \
+ -DWLCS_BUILD_TSAN=%{?with_tsan:ON}%{?!with_tsan:OFF} \
+ -DWLCS_BUILD_UBSAN=%{?with_ubsan:ON}%{?!with_ubsan:OFF} \
+ -GNinja
%cmake_build
+
%install
%cmake_install
+
%files
%license COPYING.*
%doc README.rst
-%{_libexecdir}/%{name}/
+
+%{_libexecdir}/wlcs/
+
%files devel
-%license COPYING.*
%doc README.rst
-%{_includedir}/%{name}/
-%{_libdir}/pkgconfig/%{name}.pc
+%doc example
+
+%{_includedir}/wlcs/
+%{_libdir}/pkgconfig/wlcs.pc
%changelog
+* Tue Nov 02 2021 Benjamin A. Beasley <code(a)musicinmybrain.net> - 1.3.0-4
+- Rebuild for gtest 1.11.0 (fix RHBZ#2001358)
+- Remove obsolete macros and workarounds
+- Update architecture lists for sanitizers
+- Audit source licenses and correct License from “GPLv2 or GPLv3” to “GPLv3”
+- Drop license files from -devel since it depends on the base package
+- Reduce macro indirection in the spec file
+- Use more pkgconfig(…) and cmake(…) dependencies where appropriate
+- Package README.rst in -devel package only, and also package example/
+- Fix a trivial typo in README.rst and the package description
+
* Tue Nov 2 2021 Mamoru TASAKA <mtasaka(a)fedoraproject.org> - 1.3.0-3
- Backport upstream patch to build with gtest 1.11
commit 8bae7df04083c260c7b18d9045757d7a79c77d70
Author: Mamoru TASAKA <mtasaka(a)fedoraproject.org>
Date: Tue Nov 2 22:19:22 2021 +0900
Backport upstream patch to build with gtest 1.11
diff --git a/wlcs-1.3.0-gtest-1.11.patch b/wlcs-1.3.0-gtest-1.11.patch
new file mode 100644
index 0000000..31981c6
--- /dev/null
+++ b/wlcs-1.3.0-gtest-1.11.patch
@@ -0,0 +1,49 @@
+From f6ff93f7b7db154b7899f415ec67677e6ddd7ff5 Mon Sep 17 00:00:00 2001
+From: Victor Berger <victor.berger(a)m4x.org>
+Date: Thu, 8 Jul 2021 19:39:30 +0200
+Subject: [PATCH] Fix build when using GTest-1.11
+
+Some change in GTest 1.11 headers caused a conflict on the name
+`Pointer`. Removing the unconditional import of namespace `testing`
+in favor of individual imports of the used items fixes it.
+
+cc #205
+---
+ tests/pointer_constraints.cpp | 6 +++++-
+ tests/relative_pointer.cpp | 6 +++++-
+ 2 files changed, 10 insertions(+), 2 deletions(-)
+
+diff --git a/tests/pointer_constraints.cpp b/tests/pointer_constraints.cpp
+index d306710..6ee856f 100644
+--- a/tests/pointer_constraints.cpp
++++ b/tests/pointer_constraints.cpp
+@@ -24,7 +24,11 @@
+
+ #include <memory>
+
+-using namespace testing;
++using testing::AnyNumber;
++using testing::Eq;
++using testing::Ne;
++using testing::NotNull;
++
+ using namespace wlcs;
+
+ namespace
+diff --git a/tests/relative_pointer.cpp b/tests/relative_pointer.cpp
+index c33316c..c5c5358 100644
+--- a/tests/relative_pointer.cpp
++++ b/tests/relative_pointer.cpp
+@@ -22,7 +22,11 @@
+
+ #include <gmock/gmock.h>
+
+-using namespace testing;
++using testing::AnyNumber;
++using testing::IsTrue;
++using testing::NotNull;
++using testing::_;
++
+ using namespace wlcs;
+
+ namespace
diff --git a/wlcs.spec b/wlcs.spec
index 371baba..77f3236 100644
--- a/wlcs.spec
+++ b/wlcs.spec
@@ -19,12 +19,14 @@
Name: wlcs
Version: 1.3.0
-Release: 2%{?dist}
+Release: 3%{?dist}
Summary: Wayland Conformance Test Suite
License: GPLv2 or GPLv3
URL: https://github.com/MirServer/%{name}
Source0: %{url}/releases/download/v%{version}/%{name}-%{version}.tar.xz
+# https://github.com/MirServer/wlcs/commit/f6ff93f7b7db154b7899f415ec67677e...
+Patch0: wlcs-1.3.0-gtest-1.11.patch
BuildRequires: gcc
BuildRequires: gcc-c++
@@ -103,6 +105,9 @@ developing Wayland compositor tests that use %{name}.
%changelog
+* Tue Nov 2 2021 Mamoru TASAKA <mtasaka(a)fedoraproject.org> - 1.3.0-3
+- Backport upstream patch to build with gtest 1.11
+
* Fri Jul 23 2021 Fedora Release Engineering <releng(a)fedoraproject.org> - 1.3.0-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild
commit 7c8df544219327e5e6c5885e7a3cab61ebfa1e31
Author: Fedora Release Engineering <releng(a)fedoraproject.org>
Date: Fri Jul 23 21:01:52 2021 +0000
- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng(a)fedoraproject.org>
diff --git a/wlcs.spec b/wlcs.spec
index 5176ad8..371baba 100644
--- a/wlcs.spec
+++ b/wlcs.spec
@@ -19,7 +19,7 @@
Name: wlcs
Version: 1.3.0
-Release: 1%{?dist}
+Release: 2%{?dist}
Summary: Wayland Conformance Test Suite
License: GPLv2 or GPLv3
@@ -103,6 +103,9 @@ developing Wayland compositor tests that use %{name}.
%changelog
+* Fri Jul 23 2021 Fedora Release Engineering <releng(a)fedoraproject.org> - 1.3.0-2
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild
+
* Thu Jun 24 2021 Neal Gompa <ngompa13(a)gmail.com> - 1.3.0-1
- Update to 1.3.0 (RH#1931861)
2 years, 6 months
Architecture specific change in rpms/wlcs.git
by githook-noreply@fedoraproject.org
The package rpms/wlcs.git has added or updated architecture specific content in its
spec file (ExclusiveArch/ExcludeArch or %ifarch/%ifnarch) in commit(s):
https://src.fedoraproject.org/cgit/rpms/wlcs.git/commit/?id=3eb2210d0ab4c....
Change:
+%ifarch x86_64 ppc64 ppc64le aarch64
Thanks.
Full change:
============
commit 4073d6955bb906e968b1437a54f5490421542231
Author: Benjamin A. Beasley <code(a)musicinmybrain.net>
Date: Tue Nov 2 15:27:48 2021 -0400
Opt in to rpmautospec
diff --git a/changelog b/changelog
new file mode 100644
index 0000000..c9b9216
--- /dev/null
+++ b/changelog
@@ -0,0 +1,49 @@
+* Tue Nov 02 2021 Benjamin A. Beasley <code(a)musicinmybrain.net> - 1.3.0-4
+- Rebuild for gtest 1.11.0 (fix RHBZ#2001358)
+- Remove obsolete macros and workarounds
+- Update architecture lists for sanitizers
+- Audit source licenses and correct License from “GPLv2 or GPLv3” to “GPLv3”
+- Drop license files from -devel since it depends on the base package
+- Reduce macro indirection in the spec file
+- Use more pkgconfig(…) and cmake(…) dependencies where appropriate
+- Package README.rst in -devel package only, and also package example/
+- Fix a trivial typo in README.rst and the package description
+
+* Tue Nov 2 2021 Mamoru TASAKA <mtasaka(a)fedoraproject.org> - 1.3.0-3
+- Backport upstream patch to build with gtest 1.11
+
+* Fri Jul 23 2021 Fedora Release Engineering <releng(a)fedoraproject.org> - 1.3.0-2
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild
+
+* Thu Jun 24 2021 Neal Gompa <ngompa13(a)gmail.com> - 1.3.0-1
+- Update to 1.3.0 (RH#1931861)
+
+* Wed Jan 27 2021 Fedora Release Engineering <releng(a)fedoraproject.org> - 1.2.0-2
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild
+
+* Sun Nov 1 2020 Neal Gompa <ngompa13(a)gmail.com> - 1.2.0-1
+- Update to 1.2.0 (RH#1893144)
+
+* Sat Oct 17 2020 Jeff Law <law(a)redhat.com> - 1.1.0-5
+- Use reference for loop variable to avoid range-loop-construct warning
+
+* Wed Jul 29 2020 Fedora Release Engineering <releng(a)fedoraproject.org> - 1.1.0-4
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
+
+* Wed Apr 01 2020 Neal Gompa <ngompa13(a)gmail.com> - 1.1.0-3
+- Rebuild for gtest 1.10.0
+
+* Fri Jan 31 2020 Fedora Release Engineering <releng(a)fedoraproject.org> - 1.1.0-2
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
+
+* Tue Aug 27 2019 Neal Gompa <ngompa13(a)gmail.com> - 1.1.0-1
+- Update to 1.1.0 (RH#1742232)
+
+* Sat Jul 27 2019 Fedora Release Engineering <releng(a)fedoraproject.org> - 1.0.0-3
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
+
+* Sat Jul 13 2019 Neal Gompa <ngompa13(a)gmail.com> - 1.0.0-2
+- Fix pkgconfig file to point to runner binaries
+
+* Sat Jul 13 2019 Neal Gompa <ngompa13(a)gmail.com> - 1.0.0-1
+- Initial packaging for Fedora
diff --git a/wlcs.spec b/wlcs.spec
index 802c55e..9b32f5a 100644
--- a/wlcs.spec
+++ b/wlcs.spec
@@ -26,7 +26,7 @@
Name: wlcs
Version: 1.3.0
-Release: 4%{?dist}
+Release: %autorelease
Summary: Wayland Conformance Test Suite
# The entire source is GPLv3, except:
@@ -171,52 +171,4 @@ Wayland compositor tests that use wlcs.
%changelog
-* Tue Nov 02 2021 Benjamin A. Beasley <code(a)musicinmybrain.net> - 1.3.0-4
-- Rebuild for gtest 1.11.0 (fix RHBZ#2001358)
-- Remove obsolete macros and workarounds
-- Update architecture lists for sanitizers
-- Audit source licenses and correct License from “GPLv2 or GPLv3” to “GPLv3”
-- Drop license files from -devel since it depends on the base package
-- Reduce macro indirection in the spec file
-- Use more pkgconfig(…) and cmake(…) dependencies where appropriate
-- Package README.rst in -devel package only, and also package example/
-- Fix a trivial typo in README.rst and the package description
-
-* Tue Nov 2 2021 Mamoru TASAKA <mtasaka(a)fedoraproject.org> - 1.3.0-3
-- Backport upstream patch to build with gtest 1.11
-
-* Fri Jul 23 2021 Fedora Release Engineering <releng(a)fedoraproject.org> - 1.3.0-2
-- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild
-
-* Thu Jun 24 2021 Neal Gompa <ngompa13(a)gmail.com> - 1.3.0-1
-- Update to 1.3.0 (RH#1931861)
-
-* Wed Jan 27 2021 Fedora Release Engineering <releng(a)fedoraproject.org> - 1.2.0-2
-- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild
-
-* Sun Nov 1 2020 Neal Gompa <ngompa13(a)gmail.com> - 1.2.0-1
-- Update to 1.2.0 (RH#1893144)
-
-* Sat Oct 17 2020 Jeff Law <law(a)redhat.com> - 1.1.0-5
-- Use reference for loop variable to avoid range-loop-construct warning
-
-* Wed Jul 29 2020 Fedora Release Engineering <releng(a)fedoraproject.org> - 1.1.0-4
-- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
-
-* Wed Apr 01 2020 Neal Gompa <ngompa13(a)gmail.com> - 1.1.0-3
-- Rebuild for gtest 1.10.0
-
-* Fri Jan 31 2020 Fedora Release Engineering <releng(a)fedoraproject.org> - 1.1.0-2
-- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
-
-* Tue Aug 27 2019 Neal Gompa <ngompa13(a)gmail.com> - 1.1.0-1
-- Update to 1.1.0 (RH#1742232)
-
-* Sat Jul 27 2019 Fedora Release Engineering <releng(a)fedoraproject.org> - 1.0.0-3
-- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
-
-* Sat Jul 13 2019 Neal Gompa <ngompa13(a)gmail.com> - 1.0.0-2
-- Fix pkgconfig file to point to runner binaries
-
-* Sat Jul 13 2019 Neal Gompa <ngompa13(a)gmail.com> - 1.0.0-1
-- Initial packaging for Fedora
+%autochangelog
commit 3eb2210d0ab4ca368081311161c5379c73fee6d9
Author: Benjamin A. Beasley <code(a)musicinmybrain.net>
Date: Tue Nov 2 13:57:41 2021 -0400
Rebuild for gtest 1.11.0 (fix RHBZ#2001358)
- Remove obsolete macros and workarounds
- Update architecture lists for sanitizers
- Audit source licenses and correct License from “GPLv2 or GPLv3” to “GPLv3”
- Drop license files from -devel since it depends on the base package
- Reduce macro indirection in the spec file
- Use more pkgconfig(…) and cmake(…) dependencies where appropriate
- Package README.rst in -devel package only, and also package example/
- Fix a trivial typo in README.rst and the package description
diff --git a/215.patch b/215.patch
new file mode 100644
index 0000000..6dfbf93
--- /dev/null
+++ b/215.patch
@@ -0,0 +1,26 @@
+From 6aa1becb3cee328f715af76d16de544974b6646e Mon Sep 17 00:00:00 2001
+From: "Benjamin A. Beasley" <code(a)musicinmybrain.net>
+Date: Tue, 2 Nov 2021 13:40:07 -0400
+Subject: [PATCH] =?UTF-8?q?Fix=20a=20trivial=20typo=20(=E2=80=9Caid?=
+ =?UTF-8?q?=E2=80=9D=20for=20=E2=80=9Cand=E2=80=9D)=20in=20README.rst?=
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+---
+ README.rst | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/README.rst b/README.rst
+index 50f8ec1f..7656dc30 100644
+--- a/README.rst
++++ b/README.rst
+@@ -25,7 +25,7 @@ happens-before ordering available.
+
+ Instead, ``wlcs`` relies on compositors providing an integration module,
+ providing ``wlcs`` with API hooks to start a compositor, connect a client,
+-move a window, and so on. This makes both writing aid debugging tests easier -
++move a window, and so on. This makes both writing and debugging tests easier -
+ the tests are (generally) in the same address space as the compositor, so there
+ is a consistent global clock available, it's easier to poke around in
+ compositor internals, and standard debugging tools can follow control flow from
diff --git a/wlcs-1.3.0-gtest-1.11.patch b/f6ff93f7b7db154b7899f415ec67677e6ddd7ff5.patch
similarity index 100%
rename from wlcs-1.3.0-gtest-1.11.patch
rename to f6ff93f7b7db154b7899f415ec67677e6ddd7ff5.patch
diff --git a/wlcs.spec b/wlcs.spec
index 77f3236..802c55e 100644
--- a/wlcs.spec
+++ b/wlcs.spec
@@ -1,45 +1,105 @@
-%undefine __cmake_in_source_build
-
-%if 0%{?fedora} >= 30
-# asan doesn't work with gcc9 on s390x...
-%ifarch s390 s390x
-%bcond_with asan
-%else
+# List copied from gcc.spec
+# Current as of 11.2.1 (line 59)
+# Note that this covers all Fedora primary architectures.
+%ifarch %{ix86} x86_64 ppc ppc64 ppc64le ppc64p7 s390 s390x %{arm} aarch64
%bcond_without asan
-%endif
+%else
+%bcond_with asan
%endif
+# List copied from gcc.spec
+# Current as of 11.2.1 (line 74)
+# Note that this covers all Fedora primary architectures.
+%ifarch %{ix86} x86_64 ppc ppc64 ppc64le ppc64p7 s390 s390x %{arm} aarch64
%bcond_without ubsan
-
-%ifarch %{ix86} %{arm} s390 s390x
-%bcond_with tsan
%else
+%bcond_with ubsan
+%endif
+
+# List copied from gcc.spec
+# Current as of 11.2.1 (line 64)
+%ifarch x86_64 ppc64 ppc64le aarch64
%bcond_without tsan
+%else
+%bcond_with tsan
%endif
Name: wlcs
Version: 1.3.0
-Release: 3%{?dist}
+Release: 4%{?dist}
Summary: Wayland Conformance Test Suite
-License: GPLv2 or GPLv3
-URL: https://github.com/MirServer/%{name}
-Source0: %{url}/releases/download/v%{version}/%{name}-%{version}.tar.xz
-# https://github.com/MirServer/wlcs/commit/f6ff93f7b7db154b7899f415ec67677e...
-Patch0: wlcs-1.3.0-gtest-1.11.patch
+# The entire source is GPLv3, except:
+#
+# (GPLv2 or GPLv3):
+# - CMakeLists.txt
+# > Build system file that does not contribute to the licenses of the binary
+# RPMs
+#
+# (LGPLv2 or LGPLv3):
+# - include/mutex.h
+# - include/shared_library.h
+# - src/helpers.cpp
+# - src/shared_library.cpp
+# > Since (L)GPLv2-only code is not compatible with (L)GPLv3 or (L)GPLv3+ code,
+# and these sources are combined with GPLv3 code, the LGPLv3 option is used
+# in this package.
+#
+# GPLv2+:
+# - debian/*
+# > Not used in this package
+#
+# MIT:
+# - src/protocol/gtk-primary-selection.xml
+# - src/protocol/pointer-constraints-unstable-v1.xml
+# - src/protocol/primary-selection-unstable-v1.xml
+# - src/protocol/relative-pointer-unstable-v1.xml
+# - src/protocol/wayland.xml
+# - src/protocol/xdg-output-unstable-v1.xml
+# - src/protocol/xdg-shell-unstable-v6.xml
+# - src/protocol/xdg-shell.xml
+# - tests/test_bad_buffer.cpp
+# - tests/test_surface_events.cpp
+# - tests/xdg_popup_v6.cpp
+# - tests/xdg_surface_stable.cpp
+# - tests/xdg_surface_v6.cpp
+# - tests/xdg_toplevel_stable.cpp
+# - tests/xdg_toplevel_v6.cpp
+# > Files in tests/ are all test code that is not installed (so does not
+# contribute to the licenses of the binary RPMs). Files in src/protocol/ are
+# used as inputs to “wayland-scanner” to generate C source files and headers,
+# and are not directly included in the binary RPMs.
+#
+# Thus, files under GPLv3 and (LGPLv2 or LGPLv3) licenses contribute to the
+# installed binaries, and the effective license remains GPLv3.
+License: GPLv3
+URL: https://github.com/MirServer/wlcs
+Source0: %{url}/releases/download/v%{version}/wlcs-%{version}.tar.xz
+# Backport upstream commit f6ff93f7b7db154b7899f415ec67677e6ddd7ff5:
+#
+# Fix build when using GTest-1.11
+#
+# Some change in GTest 1.11 headers caused a conflict on the name
+# `Pointer`. Removing the unconditional import of namespace `testing`
+# in favor of individual imports of the used items fixes it.
+Patch0: %{url}/commit/f6ff93f7b7db154b7899f415ec67677e6ddd7ff5.patch
+# Fix a trivial typo (“aid” for “and”) in README.rst
+# https://github.com/MirServer/wlcs/pull/215
+Patch1: %{url}/pull/215.patch
BuildRequires: gcc
BuildRequires: gcc-c++
+
BuildRequires: cmake
BuildRequires: ninja-build
+
BuildRequires: boost-devel
-BuildRequires: gtest-devel
+BuildRequires: cmake(GTest)
BuildRequires: gmock-devel
BuildRequires: pkgconfig(wayland-client)
BuildRequires: pkgconfig(wayland-server)
-BuildRequires: %{_bindir}/wayland-scanner
-# Because for some reason they're not pulled in normally?
-BuildRequires: libatomic
+BuildRequires: pkgconfig(wayland-scanner)
+
%if %{with asan}
BuildRequires: libasan
%endif
@@ -51,34 +111,31 @@ BuildRequires: libtsan
%endif
%description
-wlcs aspires to be a protocol-conformance-verifying test suite
-usable by Wayland compositor implementors.
+wlcs aspires to be a protocol-conformance-verifying test suite usable by
+Wayland compositor implementors.
-It is growing out of porting the existing Weston test suite to
-be run in Mir's test suite, but it is designed to be usable by
-any compositor.
+It is growing out of porting the existing Weston test suite to be run in Mir’s
+test suite, but it is designed to be usable by any compositor.
-wlcs relies on compositors providing an integration module,
-providing wlcs with API hooks to start a compositor, connect a
-client, move a window, and so on.
+wlcs relies on compositors providing an integration module, providing wlcs with
+API hooks to start a compositor, connect a client, move a window, and so on.
-This makes both writing aid debugging tests easier - the tests
-are (generally) in the same address space as the compositor, so
-there is a consistent global clock available, it's easier to poke
-around in compositor internals, and standard debugging tools can
-follow control flow from the test client to the compositor and
-back again.
+This makes both writing and debugging tests easier - the tests are (generally)
+in the same address space as the compositor, so there is a consistent global
+clock available, it’s easier to poke around in compositor internals, and
+standard debugging tools can follow control flow from the test client to the
+compositor and back again.
%package devel
-Summary: Development files for %{name}
-Requires: %{name}%{?_isa} = %{version}-%{release}
+Summary: Development files for wlcs
+Requires: wlcs%{?_isa} = %{version}-%{release}
%description devel
-%{name} aspires to be a protocol-conformance-verifying test suite
-usable by Wayland compositor implementors.
+wlcs aspires to be a protocol-conformance-verifying test suite usable by
+Wayland compositor implementors.
-The %{name}-devel package contains libraries and header files for
-developing Wayland compositor tests that use %{name}.
+The wlcs-devel package contains libraries and header files for developing
+Wayland compositor tests that use wlcs.
%prep
@@ -86,25 +143,45 @@ developing Wayland compositor tests that use %{name}.
%build
-%cmake -GNinja %{!?with_asan:-DWLCS_BUILD_ASAN=OFF} %{!?with_ubsan:-DWLCS_BUILD_UBSAN=OFF} %{!?with_tsan:-DWLCS_BUILD_TSAN=OFF}
+%cmake \
+ -DWLCS_BUILD_ASAN=%{?with_asan:ON}%{?!with_asan:OFF} \
+ -DWLCS_BUILD_TSAN=%{?with_tsan:ON}%{?!with_tsan:OFF} \
+ -DWLCS_BUILD_UBSAN=%{?with_ubsan:ON}%{?!with_ubsan:OFF} \
+ -GNinja
%cmake_build
+
%install
%cmake_install
+
%files
%license COPYING.*
%doc README.rst
-%{_libexecdir}/%{name}/
+
+%{_libexecdir}/wlcs/
+
%files devel
-%license COPYING.*
%doc README.rst
-%{_includedir}/%{name}/
-%{_libdir}/pkgconfig/%{name}.pc
+%doc example
+
+%{_includedir}/wlcs/
+%{_libdir}/pkgconfig/wlcs.pc
%changelog
+* Tue Nov 02 2021 Benjamin A. Beasley <code(a)musicinmybrain.net> - 1.3.0-4
+- Rebuild for gtest 1.11.0 (fix RHBZ#2001358)
+- Remove obsolete macros and workarounds
+- Update architecture lists for sanitizers
+- Audit source licenses and correct License from “GPLv2 or GPLv3” to “GPLv3”
+- Drop license files from -devel since it depends on the base package
+- Reduce macro indirection in the spec file
+- Use more pkgconfig(…) and cmake(…) dependencies where appropriate
+- Package README.rst in -devel package only, and also package example/
+- Fix a trivial typo in README.rst and the package description
+
* Tue Nov 2 2021 Mamoru TASAKA <mtasaka(a)fedoraproject.org> - 1.3.0-3
- Backport upstream patch to build with gtest 1.11
commit 8bae7df04083c260c7b18d9045757d7a79c77d70
Author: Mamoru TASAKA <mtasaka(a)fedoraproject.org>
Date: Tue Nov 2 22:19:22 2021 +0900
Backport upstream patch to build with gtest 1.11
diff --git a/wlcs-1.3.0-gtest-1.11.patch b/wlcs-1.3.0-gtest-1.11.patch
new file mode 100644
index 0000000..31981c6
--- /dev/null
+++ b/wlcs-1.3.0-gtest-1.11.patch
@@ -0,0 +1,49 @@
+From f6ff93f7b7db154b7899f415ec67677e6ddd7ff5 Mon Sep 17 00:00:00 2001
+From: Victor Berger <victor.berger(a)m4x.org>
+Date: Thu, 8 Jul 2021 19:39:30 +0200
+Subject: [PATCH] Fix build when using GTest-1.11
+
+Some change in GTest 1.11 headers caused a conflict on the name
+`Pointer`. Removing the unconditional import of namespace `testing`
+in favor of individual imports of the used items fixes it.
+
+cc #205
+---
+ tests/pointer_constraints.cpp | 6 +++++-
+ tests/relative_pointer.cpp | 6 +++++-
+ 2 files changed, 10 insertions(+), 2 deletions(-)
+
+diff --git a/tests/pointer_constraints.cpp b/tests/pointer_constraints.cpp
+index d306710..6ee856f 100644
+--- a/tests/pointer_constraints.cpp
++++ b/tests/pointer_constraints.cpp
+@@ -24,7 +24,11 @@
+
+ #include <memory>
+
+-using namespace testing;
++using testing::AnyNumber;
++using testing::Eq;
++using testing::Ne;
++using testing::NotNull;
++
+ using namespace wlcs;
+
+ namespace
+diff --git a/tests/relative_pointer.cpp b/tests/relative_pointer.cpp
+index c33316c..c5c5358 100644
+--- a/tests/relative_pointer.cpp
++++ b/tests/relative_pointer.cpp
+@@ -22,7 +22,11 @@
+
+ #include <gmock/gmock.h>
+
+-using namespace testing;
++using testing::AnyNumber;
++using testing::IsTrue;
++using testing::NotNull;
++using testing::_;
++
+ using namespace wlcs;
+
+ namespace
diff --git a/wlcs.spec b/wlcs.spec
index 371baba..77f3236 100644
--- a/wlcs.spec
+++ b/wlcs.spec
@@ -19,12 +19,14 @@
Name: wlcs
Version: 1.3.0
-Release: 2%{?dist}
+Release: 3%{?dist}
Summary: Wayland Conformance Test Suite
License: GPLv2 or GPLv3
URL: https://github.com/MirServer/%{name}
Source0: %{url}/releases/download/v%{version}/%{name}-%{version}.tar.xz
+# https://github.com/MirServer/wlcs/commit/f6ff93f7b7db154b7899f415ec67677e...
+Patch0: wlcs-1.3.0-gtest-1.11.patch
BuildRequires: gcc
BuildRequires: gcc-c++
@@ -103,6 +105,9 @@ developing Wayland compositor tests that use %{name}.
%changelog
+* Tue Nov 2 2021 Mamoru TASAKA <mtasaka(a)fedoraproject.org> - 1.3.0-3
+- Backport upstream patch to build with gtest 1.11
+
* Fri Jul 23 2021 Fedora Release Engineering <releng(a)fedoraproject.org> - 1.3.0-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild
2 years, 6 months
Architecture specific change in rpms/python-google-cloud-bigquery-storage.git
by githook-noreply@fedoraproject.org
The package rpms/python-google-cloud-bigquery-storage.git has added or updated architecture specific content in its
spec file (ExclusiveArch/ExcludeArch or %ifarch/%ifnarch) in commit(s):
https://src.fedoraproject.org/cgit/rpms/python-google-cloud-bigquery-stor....
Change:
+%ifnarch %{arm32} %{ix86}
Thanks.
Full change:
============
commit 49f13c0301b311ac29fcff743ab67d5c34deba69
Author: Major Hayden <major(a)mhtx.net>
Date: Wed Oct 27 15:43:32 2021 -0500
First package for version 2.9.1
commit 08710c5b98df7872b44dba66b76f9bd215de8c64
Author: Major Hayden <major(a)mhtx.net>
Date: Wed Oct 27 15:43:14 2021 -0500
Initial import (#2012986)
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..790aa9f
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1 @@
+/python-bigquery-storage-2.9.1.tar.gz
diff --git a/python-google-cloud-bigquery-storage-mock.patch b/python-google-cloud-bigquery-storage-mock.patch
new file mode 100644
index 0000000..41f759d
--- /dev/null
+++ b/python-google-cloud-bigquery-storage-mock.patch
@@ -0,0 +1,67 @@
+From d0ff3ad92e53c62d6f14a9086876e4a46e404bf2 Mon Sep 17 00:00:00 2001
+From: Major Hayden <major(a)mhtx.net>
+Date: Mon, 11 Oct 2021 10:02:52 -0500
+Subject: [PATCH] Use unittest.mock
+
+---
+ tests/unit/gapic/bigquery_storage_v1/test_big_query_read.py | 2 +-
+ tests/unit/gapic/bigquery_storage_v1/test_big_query_write.py | 2 +-
+ .../unit/gapic/bigquery_storage_v1beta2/test_big_query_read.py | 2 +-
+ .../unit/gapic/bigquery_storage_v1beta2/test_big_query_write.py | 2 +-
+ 4 files changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/tests/unit/gapic/bigquery_storage_v1/test_big_query_read.py b/tests/unit/gapic/bigquery_storage_v1/test_big_query_read.py
+index 23480a7..1cbd162 100644
+--- a/tests/unit/gapic/bigquery_storage_v1/test_big_query_read.py
++++ b/tests/unit/gapic/bigquery_storage_v1/test_big_query_read.py
+@@ -14,7 +14,7 @@
+ # limitations under the License.
+ #
+ import os
+-import mock
++from unittest import mock
+ import packaging.version
+
+ import grpc
+diff --git a/tests/unit/gapic/bigquery_storage_v1/test_big_query_write.py b/tests/unit/gapic/bigquery_storage_v1/test_big_query_write.py
+index a6b1f1f..3d35e16 100644
+--- a/tests/unit/gapic/bigquery_storage_v1/test_big_query_write.py
++++ b/tests/unit/gapic/bigquery_storage_v1/test_big_query_write.py
+@@ -14,7 +14,7 @@
+ # limitations under the License.
+ #
+ import os
+-import mock
++from unittest import mock
+ import packaging.version
+
+ import grpc
+diff --git a/tests/unit/gapic/bigquery_storage_v1beta2/test_big_query_read.py b/tests/unit/gapic/bigquery_storage_v1beta2/test_big_query_read.py
+index c519ab6..abf3e93 100644
+--- a/tests/unit/gapic/bigquery_storage_v1beta2/test_big_query_read.py
++++ b/tests/unit/gapic/bigquery_storage_v1beta2/test_big_query_read.py
+@@ -14,7 +14,7 @@
+ # limitations under the License.
+ #
+ import os
+-import mock
++from unittest import mock
+ import packaging.version
+
+ import grpc
+diff --git a/tests/unit/gapic/bigquery_storage_v1beta2/test_big_query_write.py b/tests/unit/gapic/bigquery_storage_v1beta2/test_big_query_write.py
+index df48cf4..51729b9 100644
+--- a/tests/unit/gapic/bigquery_storage_v1beta2/test_big_query_write.py
++++ b/tests/unit/gapic/bigquery_storage_v1beta2/test_big_query_write.py
+@@ -14,7 +14,7 @@
+ # limitations under the License.
+ #
+ import os
+-import mock
++from unittest import mock
+ import packaging.version
+
+ import grpc
+--
+2.31.1
+
diff --git a/python-google-cloud-bigquery-storage.spec b/python-google-cloud-bigquery-storage.spec
new file mode 100644
index 0000000..01e42fd
--- /dev/null
+++ b/python-google-cloud-bigquery-storage.spec
@@ -0,0 +1,103 @@
+# tests are enabled by default
+%bcond_without tests
+
+# https://pypi.org/project/pyarrow not yet packaged
+%bcond_with pyarrow
+
+%global srcname google-cloud-bigquery-storage
+%global forgeurl https://github.com/googleapis/python-bigquery-storage
+Version: 2.9.1
+%global tag v%{version}
+%forgemeta
+
+Name: python-%{srcname}
+Release: %autorelease
+Summary: Python SDK for Google Cloud BigQuery Storage API
+
+License: ASL 2.0
+URL: %forgeurl
+Source0: %forgesource
+# Use unittest.mock instead of PyPI mock
+# (https://fedoraproject.org/wiki/Changes/DeprecatePythonMock).
+#
+# This simple patch cannot be submitted upstream because they support
+# Python 3.6 and 3.7, but use AsyncMock, which was introduced to
+# unittest.mock in Python 3.8.
+Patch0: python-google-cloud-bigquery-storage-mock.patch
+
+# The base package is arched because extras metapackages requiring fastavro are
+# not available on 32-bit architectures
+# (https://bugzilla.redhat.com/show_bug.cgi?id=1943932).
+%ifnarch %{arm32} %{ix86}
+%global fastavro_arch 1
+%endif
+# Of the binary RPMs, only the conditionally-enabled extras metapackage
+# python3-google-cloud-bigquery-storage+fastavro is arched.
+#
+# Since there is no compiled code, there are no debugging symbols.
+%global debug_package %{nil}
+
+BuildRequires: python3-devel
+
+%if %{with tests}
+BuildRequires: python3dist(pytest)
+BuildRequires: python3dist(pytest-asyncio)
+%endif
+
+%global _description %{expand:
+Python SDK for Google Cloud BigQuery Storage API}
+
+%description %{_description}
+
+
+%package -n python3-%{srcname}
+Summary: %{summary}
+BuildArch: noarch
+
+%description -n python3-%{srcname} %{_description}
+
+# We would have to write out the extras metapackage definitions manually if
+# we wanted them to be noarch, since the base package is arched.
+%pyproject_extras_subpkg -n python3-%{srcname} pandas %{?with_pyarrow:pyarrow}
+
+%if 0%{?fastavro_arch}
+# Note that this metapackage is arched because it is not available on 32-bit
+# architectures.
+%pyproject_extras_subpkg -n python3-%{srcname} fastavro
+%endif
+
+
+%prep
+%forgeautosetup -p1
+
+
+%generate_buildrequires
+%pyproject_buildrequires -x pandas%{?with_pyarrow:,pyarrow}%{?fastavro_arch:,fastavro},tests
+
+
+%build
+%pyproject_wheel
+
+
+%install
+%pyproject_install
+%pyproject_save_files google
+
+# Remove unnecessary scripts.
+rm -f %{buildroot}%{_bindir}/fixup*.py
+
+
+%if %{with tests}
+%check
+%pytest %{?!fastavro_arch:--ignore=tests/unit/test_reader_v1.py} \
+ --disable-warnings tests/unit
+%endif
+
+
+%files -n python3-%{srcname} -f %{pyproject_files}
+%doc README.rst CHANGELOG.md CODE_OF_CONDUCT.md CONTRIBUTING.rst SECURITY.md UPGRADING.md samples
+%{python3_sitelib}/google_cloud_bigquery_storage-%{version}-py%{python3_version}-nspkg.pth
+
+
+%changelog
+%autochangelog
diff --git a/sources b/sources
new file mode 100644
index 0000000..78941dc
--- /dev/null
+++ b/sources
@@ -0,0 +1 @@
+SHA512 (python-bigquery-storage-2.9.1.tar.gz) = 4214ea013a2a2228a1b4c483b285c25bd1020290b1594e6568ab9c8d7646050e5b20501299d4d1ab1526f45333c9425dfbb6061dfdcb3dc62b3aafdd6ac4dcfc
2 years, 6 months
Architecture specific change in rpms/rust-libblkid-rs-sys.git
by githook-noreply@fedoraproject.org
The package rpms/rust-libblkid-rs-sys.git has added or updated architecture specific content in its
spec file (ExclusiveArch/ExcludeArch or %ifarch/%ifnarch) in commit(s):
https://src.fedoraproject.org/cgit/rpms/rust-libblkid-rs-sys.git/commit/?....
Change:
+ExclusiveArch: %{rust_arches}
Thanks.
Full change:
============
commit 42e898f931d4c829a46138c3e6670976d4fe03ef
Author: John Baublitz <jbaublitz(a)redhat.com>
Date: Mon Nov 1 14:37:46 2021 -0400
Initial import (#2018307)
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..471e2f9
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1 @@
+/libblkid-rs-sys-0.1.2.crate
diff --git a/rust-libblkid-rs-sys.spec b/rust-libblkid-rs-sys.spec
new file mode 100644
index 0000000..e4e9067
--- /dev/null
+++ b/rust-libblkid-rs-sys.spec
@@ -0,0 +1,77 @@
+# Generated by rust2rpm 16
+%bcond_without check
+%global debug_package %{nil}
+
+%global crate libblkid-rs-sys
+
+Name: rust-%{crate}
+Version: 0.1.2
+Release: 1%{?dist}
+Summary: Low level bindings for libblkid
+
+# Upstream license specification: MPL-2.0
+License: MPLv2.0
+URL: https://crates.io/crates/libblkid-rs-sys
+Source: %{crates_source}
+
+ExclusiveArch: %{rust_arches}
+%if %{__cargo_skip_build}
+BuildArch: noarch
+%endif
+
+BuildRequires: rust-packaging
+
+%global _description %{expand:
+Low level bindings for libblkid.}
+
+%description %{_description}
+
+%package devel
+Summary: %{summary}
+BuildArch: noarch
+Requires: pkgconfig(blkid)
+
+%description devel %{_description}
+
+This package contains library source intended for building other packages
+which use "%{crate}" crate.
+
+%files devel
+%doc README.md
+%license LICENSE
+%{cargo_registry}/%{crate}-%{version_no_tilde}/
+
+%package -n %{name}+default-devel
+Summary: %{summary}
+BuildArch: noarch
+
+%description -n %{name}+default-devel %{_description}
+
+This package contains library source intended for building other packages
+which use "default" feature of "%{crate}" crate.
+
+%files -n %{name}+default-devel
+%ghost %{cargo_registry}/%{crate}-%{version_no_tilde}/Cargo.toml
+
+%prep
+%autosetup -n %{crate}-%{version_no_tilde} -p1
+%cargo_prep
+
+%generate_buildrequires
+%cargo_generate_buildrequires
+echo 'pkgconfig(blkid)'
+
+%build
+%cargo_build
+
+%install
+%cargo_install
+
+%if %{with check}
+%check
+%cargo_test
+%endif
+
+%changelog
+* Thu Oct 28 14:54:53 EDT 2021 John Baublitz <jbaublitz(a)redhat.com> - 0.1.2-1
+- Initial package
diff --git a/sources b/sources
new file mode 100644
index 0000000..5eb5d9b
--- /dev/null
+++ b/sources
@@ -0,0 +1 @@
+SHA512 (libblkid-rs-sys-0.1.2.crate) = e52c60afb84f33bc86a66f57c04df1dcbf904305a8ec8a706e02482f8cb84507a61d51302d225b0f72230c193a4a4d35abeed67a68afabb4a209e6ec1b0312b6
2 years, 6 months
Architecture specific change in rpms/mingw-qt6-qtsvg.git
by githook-noreply@fedoraproject.org
The package rpms/mingw-qt6-qtsvg.git has added or updated architecture specific content in its
spec file (ExclusiveArch/ExcludeArch or %ifarch/%ifnarch) in commit(s):
https://src.fedoraproject.org/cgit/rpms/mingw-qt6-qtsvg.git/commit/?id=b8....
Change:
+ExcludeArch: s390x
Thanks.
Full change:
============
commit 2fd4c6021ab1031a4f6b1e12a41536ffdb3e1477
Author: Sandro Mani <manisandro(a)gmail.com>
Date: Mon Nov 1 20:39:35 2021 +0100
Update to 6.2.1
diff --git a/.gitignore b/.gitignore
index fdac11a..2239b0d 100644
--- a/.gitignore
+++ b/.gitignore
@@ -3,3 +3,4 @@
/qtsvg-everywhere-src-6.2.0-rc.tar.xz
/qtsvg-everywhere-src-6.2.0-rc2.tar.xz
/qtsvg-everywhere-src-6.2.0.tar.xz
+/qtsvg-everywhere-src-6.2.1.tar.xz
diff --git a/mingw-qt6-qtsvg.spec b/mingw-qt6-qtsvg.spec
index 65f24f8..96edaf9 100644
--- a/mingw-qt6-qtsvg.spec
+++ b/mingw-qt6-qtsvg.spec
@@ -13,16 +13,16 @@
%endif
# first two digits of version
-%define release_version %(echo %{version} | awk -F. '{print $1"."$2}')
+%global release_version %(echo %{version} | awk -F. '{print $1"."$2}')
Name: mingw-qt6-%{qt_module}
-Version: 6.2.0
+Version: 6.2.1
Release: 1%{?pre:.%pre}%{?dist}
Summary: Qt6 for Windows - QtSvg component
# Native build is not available for s390x
ExcludeArch: s390x
-License: GPLv3 with exceptions or LGPLv2 with exceptions
+License: LGPLv3 or GPLv2
URL: http://qt.io/
%if 0%{?commit:1}
@@ -59,7 +59,7 @@ Summary: Qt6 for Windows - QtSvg component
This package contains the Qt software toolkit for developing
cross-platform applications.
-This is the Windows version of Qt, for use in conjunction with the
+This is the 32-bit Windows version of Qt, for use in conjunction with the
Fedora Windows cross-compiler.
@@ -71,7 +71,7 @@ Summary: Qt6 for Windows - QtSvg component
This package contains the Qt software toolkit for developing
cross-platform applications.
-This is the Windows version of Qt, for use in conjunction with the
+This is the 64-bit Windows version of Qt, for use in conjunction with the
Fedora Windows cross-compiler.
@@ -149,6 +149,9 @@ Fedora Windows cross-compiler.
%changelog
+* Mon Nov 01 2021 Sandro Mani <manisandro(a)gmail.com> - 6.2.1-1
+- Update to 6.2.1
+
* Sun Oct 03 2021 Sandro Mani <manisandro(a)gmail.com> - 6.2.0-1
- Update to 6.2.0
diff --git a/sources b/sources
index 826c708..88d0975 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-SHA512 (qtsvg-everywhere-src-6.2.0.tar.xz) = c63f0b987c4b94d9f2b586df38dbf686c71ca6532dcc1405892e7e077853b4247bccb49285cc4d3440b25f9291c429682df0054297b5d6402d382e062cecc19f
+SHA512 (qtsvg-everywhere-src-6.2.1.tar.xz) = 807357ea22042788cb573b5132ac3f0caeb011d3a20f338aaf87f229625da26d7aab2bce87174ded33f2a668c2046855c06ff5169af0e30e400219efc8e00964
commit b871a3e557641ba782fe47f840a18db4f6e05a38
Author: Sandro Mani <manisandro(a)gmail.com>
Date: Sun Oct 3 12:31:53 2021 +0200
ExcludeArch: s390x
diff --git a/mingw-qt6-qtsvg.spec b/mingw-qt6-qtsvg.spec
index 03a206e..65f24f8 100644
--- a/mingw-qt6-qtsvg.spec
+++ b/mingw-qt6-qtsvg.spec
@@ -19,6 +19,8 @@ Name: mingw-qt6-%{qt_module}
Version: 6.2.0
Release: 1%{?pre:.%pre}%{?dist}
Summary: Qt6 for Windows - QtSvg component
+# Native build is not available for s390x
+ExcludeArch: s390x
License: GPLv3 with exceptions or LGPLv2 with exceptions
URL: http://qt.io/
commit 3eaec82e105885047bef7a292e5d2d9eafbf6576
Author: Sandro Mani <manisandro(a)gmail.com>
Date: Sun Oct 3 11:29:13 2021 +0200
Update sources
diff --git a/.gitignore b/.gitignore
index 6a13eea..fdac11a 100644
--- a/.gitignore
+++ b/.gitignore
@@ -2,3 +2,4 @@
/qtsvg-everywhere-src-6.1.2.tar.xz
/qtsvg-everywhere-src-6.2.0-rc.tar.xz
/qtsvg-everywhere-src-6.2.0-rc2.tar.xz
+/qtsvg-everywhere-src-6.2.0.tar.xz
diff --git a/sources b/sources
index 29c2d3e..826c708 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-SHA512 (qtsvg-everywhere-src-6.2.0-rc2.tar.xz) = 7595d4510d428cb42853ccce8cf5ffb3b3da917110b9356a26f135230becc44638e1bc18af1f5c58a6f0e40cc0985f652ebb7ecd1f7250bd19f0789dcdd16fcb
+SHA512 (qtsvg-everywhere-src-6.2.0.tar.xz) = c63f0b987c4b94d9f2b586df38dbf686c71ca6532dcc1405892e7e077853b4247bccb49285cc4d3440b25f9291c429682df0054297b5d6402d382e062cecc19f
commit 083fd5bb422abb37bbe7a2bf369a81d28c327110
Author: Sandro Mani <manisandro(a)gmail.com>
Date: Sun Oct 3 10:44:03 2021 +0200
Update to 6.2.0
diff --git a/mingw-qt6-qtsvg.spec b/mingw-qt6-qtsvg.spec
index 041ec6e..03a206e 100644
--- a/mingw-qt6-qtsvg.spec
+++ b/mingw-qt6-qtsvg.spec
@@ -1,7 +1,7 @@
%{?mingw_package_header}
%global qt_module qtsvg
-%global pre rc2
+#global pre rc2
#global commit 45483bfae4f59ab92be22007cf49d9d7eee8a16c
#global shortcommit %(c=%{commit}; echo ${c:0:7})
@@ -17,7 +17,7 @@
Name: mingw-qt6-%{qt_module}
Version: 6.2.0
-Release: 0.2%{?pre:.%pre}%{?dist}
+Release: 1%{?pre:.%pre}%{?dist}
Summary: Qt6 for Windows - QtSvg component
License: GPLv3 with exceptions or LGPLv2 with exceptions
@@ -147,6 +147,9 @@ Fedora Windows cross-compiler.
%changelog
+* Sun Oct 03 2021 Sandro Mani <manisandro(a)gmail.com> - 6.2.0-1
+- Update to 6.2.0
+
* Mon Sep 27 2021 Sandro Mani <manisandro(a)gmail.com> - 6.2.0-0.2.rc2
- Update to 6.2.0-rc2
commit 5528b7d541d784cb10b94c48a08344b1dfe288ed
Author: Sandro Mani <manisandro(a)gmail.com>
Date: Mon Sep 27 22:20:24 2021 +0200
Update to 6.2.0-rc2
diff --git a/.gitignore b/.gitignore
index 79cfeff..6a13eea 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,3 +1,4 @@
/qtsvg-everywhere-src-6.1.1.tar.xz
/qtsvg-everywhere-src-6.1.2.tar.xz
/qtsvg-everywhere-src-6.2.0-rc.tar.xz
+/qtsvg-everywhere-src-6.2.0-rc2.tar.xz
diff --git a/mingw-qt6-qtsvg.spec b/mingw-qt6-qtsvg.spec
index e1276d7..041ec6e 100644
--- a/mingw-qt6-qtsvg.spec
+++ b/mingw-qt6-qtsvg.spec
@@ -1,7 +1,7 @@
%{?mingw_package_header}
%global qt_module qtsvg
-%global pre rc
+%global pre rc2
#global commit 45483bfae4f59ab92be22007cf49d9d7eee8a16c
#global shortcommit %(c=%{commit}; echo ${c:0:7})
@@ -17,7 +17,7 @@
Name: mingw-qt6-%{qt_module}
Version: 6.2.0
-Release: 0.1%{?pre:.%pre}%{?dist}
+Release: 0.2%{?pre:.%pre}%{?dist}
Summary: Qt6 for Windows - QtSvg component
License: GPLv3 with exceptions or LGPLv2 with exceptions
@@ -147,6 +147,9 @@ Fedora Windows cross-compiler.
%changelog
+* Mon Sep 27 2021 Sandro Mani <manisandro(a)gmail.com> - 6.2.0-0.2.rc2
+- Update to 6.2.0-rc2
+
* Wed Sep 22 2021 Sandro Mani <manisandro(a)gmail.com> - 6.2.0-0.1.rc
- Update to 6.2.0-rc
diff --git a/sources b/sources
index b3e5096..29c2d3e 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-SHA512 (qtsvg-everywhere-src-6.2.0-rc.tar.xz) = 12a07dab289c711ead442928da783527c0586e64e96e795f04b43b1232ad604d36da898ec702a8cb556e77ef1d77426125017aaf8993cabd8c100b2019996b9a
+SHA512 (qtsvg-everywhere-src-6.2.0-rc2.tar.xz) = 7595d4510d428cb42853ccce8cf5ffb3b3da917110b9356a26f135230becc44638e1bc18af1f5c58a6f0e40cc0985f652ebb7ecd1f7250bd19f0789dcdd16fcb
commit e25a5562ffc4a093f530b6596444356db0c64856
Author: Sandro Mani <manisandro(a)gmail.com>
Date: Wed Sep 22 22:22:42 2021 +0200
Update to 6.2.0-rc
diff --git a/.gitignore b/.gitignore
index 02b0c00..79cfeff 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,2 +1,3 @@
/qtsvg-everywhere-src-6.1.1.tar.xz
/qtsvg-everywhere-src-6.1.2.tar.xz
+/qtsvg-everywhere-src-6.2.0-rc.tar.xz
diff --git a/mingw-qt6-qtsvg.spec b/mingw-qt6-qtsvg.spec
index a9d0825..e1276d7 100644
--- a/mingw-qt6-qtsvg.spec
+++ b/mingw-qt6-qtsvg.spec
@@ -1,7 +1,7 @@
%{?mingw_package_header}
%global qt_module qtsvg
-#global pre rc
+%global pre rc
#global commit 45483bfae4f59ab92be22007cf49d9d7eee8a16c
#global shortcommit %(c=%{commit}; echo ${c:0:7})
@@ -16,8 +16,8 @@
%define release_version %(echo %{version} | awk -F. '{print $1"."$2}')
Name: mingw-qt6-%{qt_module}
-Version: 6.1.2
-Release: 1%{?dist}
+Version: 6.2.0
+Release: 0.1%{?pre:.%pre}%{?dist}
Summary: Qt6 for Windows - QtSvg component
License: GPLv3 with exceptions or LGPLv2 with exceptions
@@ -105,6 +105,8 @@ Fedora Windows cross-compiler.
%{mingw32_libdir}/cmake/Qt6Gui/Qt6QSvgIconPlugin*.cmake
%{mingw32_libdir}/cmake/Qt6Svg/
%{mingw32_libdir}/cmake/Qt6SvgWidgets/
+%{mingw32_libdir}/metatypes/qt6svg_relwithdebinfo_metatypes.json
+%{mingw32_libdir}/metatypes/qt6svgwidgets_relwithdebinfo_metatypes.json
%{mingw32_libdir}/qt6/mkspecs/modules/qt_lib_svg.pri
%{mingw32_libdir}/qt6/mkspecs/modules/qt_lib_svg_private.pri
%{mingw32_libdir}/qt6/mkspecs/modules/qt_lib_svgwidgets.pri
@@ -131,6 +133,8 @@ Fedora Windows cross-compiler.
%{mingw64_libdir}/cmake/Qt6Gui/Qt6QSvgIconPlugin*.cmake
%{mingw64_libdir}/cmake/Qt6Svg/
%{mingw64_libdir}/cmake/Qt6SvgWidgets/
+%{mingw64_libdir}/metatypes/qt6svg_relwithdebinfo_metatypes.json
+%{mingw64_libdir}/metatypes/qt6svgwidgets_relwithdebinfo_metatypes.json
%{mingw64_libdir}/qt6/mkspecs/modules/qt_lib_svg.pri
%{mingw64_libdir}/qt6/mkspecs/modules/qt_lib_svg_private.pri
%{mingw64_libdir}/qt6/mkspecs/modules/qt_lib_svgwidgets.pri
@@ -143,6 +147,9 @@ Fedora Windows cross-compiler.
%changelog
+* Wed Sep 22 2021 Sandro Mani <manisandro(a)gmail.com> - 6.2.0-0.1.rc
+- Update to 6.2.0-rc
+
* Sat Aug 14 2021 Sandro Mani <manisandro(a)gmail.com> - 6.1.2-1
- Update to 6.1.2
diff --git a/sources b/sources
index 5b4b0f5..b3e5096 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-SHA512 (qtsvg-everywhere-src-6.1.2.tar.xz) = d5f447a11d5420fb769f95af5e089370176ec7406265d43a8e333deaf82fb57bb8d998aa0e4f89404f97e8355bf22766e753b156e4ea8017566ce6a5098b6716
+SHA512 (qtsvg-everywhere-src-6.2.0-rc.tar.xz) = 12a07dab289c711ead442928da783527c0586e64e96e795f04b43b1232ad604d36da898ec702a8cb556e77ef1d77426125017aaf8993cabd8c100b2019996b9a
2 years, 6 months