Architecture specific change in rpms/libquotient.git
by githook-noreply@fedoraproject.org
The package rpms/libquotient.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/libquotient.git/commit/?id=74e0e0....
Change:
-ExcludeArch: s390x
Thanks.
Full change:
============
commit 74e0e0381f9c35edc644e30e07133c155d763a86
Author: Vitaly Zaitsev <vitaly(a)easycoding.org>
Date: Sat Mar 7 13:30:43 2020 +0100
Updated to latest Git snapshot.
diff --git a/.gitignore b/.gitignore
index c568c12..91a9d70 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1 +1,2 @@
/libquotient-e3a5b3a.tar.gz
+/libquotient-9bcf0cb.tar.gz
diff --git a/libquotient.spec b/libquotient.spec
index 6385d3c..300d1ed 100644
--- a/libquotient.spec
+++ b/libquotient.spec
@@ -1,13 +1,13 @@
%global appname Quotient
%global libname lib%{appname}
-%global commit0 e3a5b3a5e5253fc5ce67574b01e8d25ec14e4d25
+%global commit0 9bcf0cbc3d690663d37d1737173ab5088fed152f
%global shortcommit0 %(c=%{commit0}; echo ${c:0:7})
-%global date 20200121
+%global date 20200207
Name: libquotient
Version: 0.6.0
-Release: 0.3.%{date}git%{shortcommit0}%{?dist}
+Release: 0.4.%{date}git%{shortcommit0}%{?dist}
License: LGPLv2+
URL: https://github.com/quotient-im/%{libname}
@@ -28,9 +28,6 @@ BuildRequires: gcc-c++
BuildRequires: cmake
BuildRequires: gcc
-# It looks like Qt is broken on s390x. Linkage failure with QByteArray.
-ExcludeArch: s390x
-
%description
The Quotient project aims to produce a Qt5-based SDK to develop applications
for Matrix. libQuotient is a library that enables client applications. It is
@@ -80,6 +77,9 @@ rm -rf %{buildroot}%{_datadir}/ndk-modules
%{_libdir}/%{libname}.so
%changelog
+* Sat Mar 07 2020 Vitaly Zaitsev <vitaly(a)easycoding.org> - 0.6.0-0.4.20200207git9bcf0cb
+- Updated to latest Git snapshot.
+
* Wed Jan 29 2020 Fedora Release Engineering <releng(a)fedoraproject.org> - 0.6.0-0.3.20200121gite3a5b3a
- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
diff --git a/sources b/sources
index 83ff35a..aeaa263 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-SHA512 (libquotient-e3a5b3a.tar.gz) = f7001368b7d1dd68bc031b06aa79f0ead9266595b1ef33f33f6e12513f0ced2c359e4e1f4ae9cef7682096e9aff5f5899514ad3094c3c32215f0f54202739fca
+SHA512 (libquotient-9bcf0cb.tar.gz) = 96c6ec915e21cccb399400377f1b14656b6a5000570fbe233a5cfce329ec6a22db5d364553a5e0acce3d75481ea71fd53d91b9e880c2bd82cf8bccd99d9c0d3e
4 years, 1 month
[Report] Packages Restricting Arches
by root
New package excluding arches (1)
============================
- rust-app_dirs
ExclusiveArch: %{rust_arches}
List of packages currently excluding arches (2755)
===========================================
- 0ad
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64 ppc64le
- 90-Second-Portraits
ExclusiveArch: %{arm} %{ix86} x86_64 %{mips} aarch64 ppc64
- GoldenCheetah
ExclusiveArch: %{qt5_qtwebengine_arches}
- GtkAda
ExclusiveArch: %{GPRbuild_arches}
- GtkAda3
ExclusiveArch: %{GPRbuild_arches}
- PragmARC
ExclusiveArch: %{GPRbuild_arches}
- R-V8
ExclusiveArch: %{nodejs_arches}
- RdRand
ExclusiveArch: %{ix86} x86_64
- SLOF
ExclusiveArch: ppc64le
- YafaRay
ExclusiveArch: %{ix86} x86_64
- aboot
ExclusiveArch: alpha
- acpid
ExclusiveArch: ia64 x86_64 %{ix86} %{arm} aarch64
- ahven
ExclusiveArch: %{GPRbuild_arches}
- alleyoop
ExclusiveArch: %{ix86} x86_64 ppc ppc64 ppc64le s390x %{arm} aarch64
- american-fuzzy-lop
ExclusiveArch: %{ix86} x86_64
- anet
ExclusiveArch: %{GPRbuild_arches}
- apmd
ExclusiveArch: %{ix86}
- appstream-generator
ExclusiveArch: x86_64 %{ix86} %{arm}
- arduino
ExclusiveArch: %{go_arches}
- arduino-builder
ExclusiveArch: %{go_arches}
- arm-trusted-firmware
ExclusiveArch: aarch64
- aunit
ExclusiveArch: %GPRbuild_arches
- avgtime
ExclusiveArch: %{ldc_arches}
- aws
ExclusiveArch: %GPRbuild_arches
- banshee
ExclusiveArch: %{mono_arches}
- banshee-community-extensions
ExclusiveArch: %ix86 x86_64 ppc ppc64 ia64 %{arm} sparcv9 alpha s390x
- bareftp
ExclusiveArch: %{mono_arches}
- bcal
ExclusiveArch: x86_64 aarch64 ia64 ppc64 ppc64le s390x
- bcc
ExclusiveArch: x86_64 %{power64} aarch64 s390x
- bcm283x-firmware
ExclusiveArch: %{arm} aarch64
- berusky2
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64 %{mips}
- biosdevname
ExclusiveArch: %{ix86} x86_64
- bless
ExclusiveArch: %mono_arches
- boo
ExclusiveArch: %{mono_arches}
- bpftrace
ExclusiveArch: x86_64 %{power64} aarch64 s390x
- bwa
ExclusiveArch: x86_64
- calamares
ExclusiveArch: %{ix86} x86_64
- calibre
ExclusiveArch: %{qt5_qtwebengine_arches}
- carto
ExclusiveArch: %{nodejs_arches} noarch
- ccdciel
ExclusiveArch: %{fpc_arches}
- cdcollect
ExclusiveArch: %{mono_arches}
- chromium
ExclusiveArch: x86_64 i686
ExclusiveArch: x86_64 i686 aarch64
- cjdns
ExclusiveArch: %{nodejs_arches}
- cmospwd
ExclusiveArch: %{ix86} x86_64
- cmrt
ExclusiveArch: %{ix86} x86_64 ia64
- coffee-script
ExclusiveArch: %{nodejs_arches} noarch
- colorful
ExclusiveArch: %{fpc_arches}
- containers
ExclusiveArch: %{ldc_arches}
- cpu-x
ExclusiveArch: i686 x86_64
- cpuid
ExclusiveArch: %{ix86} x86_64
- cqrlog
ExclusiveArch: %{fpc_arches}
- crash
ExclusiveArch: %{ix86} ia64 x86_64 ppc ppc64 s390 s390x %{arm} aarch64 ppc64le
- 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
- daq
ExclusiveArch: x86_64 aarch64
- darktable
ExclusiveArch: x86_64 aarch64 ppc64le
- 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}}
- discord-irc
ExclusiveArch: %{nodejs_arches} noarch
- dlm
ExclusiveArch: i686 x86_64
- dmidecode
ExclusiveArch: %{ix86} x86_64 ia64 aarch64
- docco
ExclusiveArch: %{nodejs_arches} noarch
- docker-distribution
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- dolphin-emu
ExclusiveArch: x86_64 armv7l aarch64
- dotnet-build-reference-packages
ExclusiveArch: x86_64
- dotnet3.1
ExclusiveArch: x86_64
- doublecmd
ExclusiveArch: %{ix86} x86_64
- dpdk
ExclusiveArch: x86_64 i686 aarch64 ppc64le
- dssi-vst
ExclusiveArch: %{ix86} x86_64
- dyninst
ExclusiveArch: %{ix86} x86_64 ppc64le aarch64
- e3
ExclusiveArch: %{ix86} x86_64
- edac-utils
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64 %{power64}
- edb
ExclusiveArch: %{ix86} x86_64
- edk2
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64
ExclusiveArch: x86_64 aarch64
- efibootmgr
ExclusiveArch: %{efi}
- efivar
ExclusiveArch: %{efi}
- elasticdump
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
ExclusiveArch: %{nodejs_arches} noarch
- elk
ExclusiveArch: x86_64 %{ix86}
ExclusiveArch: x86_64 %{ix86} aarch64 %{arm} %{power64}
- embree
ExclusiveArch: x86_64
- enki
ExclusiveArch: %{qt5_qtwebengine_arches} noarch
- envytools
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64
- eric
ExclusiveArch: %{qt5_qtwebengine_arches} noarch
- extlinux-bootloader
ExclusiveArch: %{arm} aarch64
- fcitx-libpinyin
ExclusiveArch: %{qt5_qtwebengine_arches}
- fedora-dockerfiles
ExclusiveArch: %{go_arches}
- fes
ExclusiveArch: %{ix86} x86_64
- flannel
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64 ppc64le s390x
- florist
ExclusiveArch: %{GPRbuild_arches}
- fluxcapacitor
ExclusiveArch: %{ix86} x86_64 %{arm}
- fpc
ExclusiveArch: %{arm} aarch64 %{ix86} x86_64 ppc64le
- frescobaldi
ExclusiveArch: %{qt5_qtwebengine_arches}
- frysk
ExclusiveArch: %{ix86} x86_64 ppc64
- fst
ExclusiveArch: i686
- fwts
ExclusiveArch: x86_64 %{arm} aarch64 s390x %{power64}
- ga
ExclusiveArch: %{ix86} x86_64
- gbrainy
ExclusiveArch: %mono_arches
- gdata-sharp
ExclusiveArch: %mono_arches
- gdb-exploitable
ExclusiveArch: x86_64 i386
ExclusiveArch: x86_64 noarch
- 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}}
- 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-guitar
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
- gprbuild
ExclusiveArch: %{GPRbuild_arches} %{bootstrap_arch}
- gprolog
ExclusiveArch: x86_64 %{ix86} ppc alpha
- grafana
ExclusiveArch: %{grafana_arches}
- grafana-pcp
ExclusiveArch: %{nodejs_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
- hcc
ExclusiveArch: x86_64 aarch64
- hedgewars
ExclusiveArch: %{fpc_arches}
- heketi
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- hip
ExclusiveArch: x86_64
- 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
- ikona
ExclusiveArch: %{qt5_qtwebengine_arches}
- imvirt
ExclusiveArch: %{ix86} x86_64 ia64
- indistarter
ExclusiveArch: %{fpc_arches}
- infinipath-psm
ExclusiveArch: x86_64
- insect
ExclusiveArch: %{nodejs_arches} noarch
- intel-cmt-cat
ExclusiveArch: x86_64 i686 i586
ExclusiveArch: x86_64 i686 i586
- intel-gmmlib
ExclusiveArch: x86_64 i686
- 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: %{arm} %{ix86} x86_64
- iucode-tool
ExclusiveArch: %{ix86} x86_64
- jake
ExclusiveArch: %{nodejs_arches} noarch
- jasmine-node
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- java-1.8.0-openjdk-aarch32
ExclusiveArch: %{arm}
- josm
ExclusiveArch: %{ix86} x86_64
- keepass
ExclusiveArch: %{mono_arches}
- kernel
ExclusiveArch: x86_64 s390x %{arm} aarch64 ppc64le
ExclusiveArch: noarch i386 i686 x86_64 s390x %{arm} aarch64 ppc64le
- kf5-akonadi-calendar
ExclusiveArch: x86_64 %{arm}
- kf5-akonadi-search
ExclusiveArch: x86_64 ppc64le %{arm}
- kf5-kalarmcal
ExclusiveArch: x86_64 ppc64le %{arm}
- kf5-kblog
ExclusiveArch: x86_64 ppc64le %{arm}
- kf5-kcalendarcore
ExclusiveArch: x86_64 ppc64le %{arm}
- kf5-kcalendarutils
ExclusiveArch: x86_64 ppc64le %{arm}
- kf5-kitinerary
ExclusiveArch: x86_64 ppc64le %{arm}
- kf5-kmailtransport
ExclusiveArch: x86_64 %{arm}
- kf5-ktnef
ExclusiveArch: x86_64 ppc64le %{arm}
- kf5-libgravatar
ExclusiveArch: x86_64 %{arm}
- kf5-libkdcraw
ExclusiveArch: x86_64 ppc64le %{arm}
- kf5-libkdepim
ExclusiveArch: x86_64 %{arm}
- kf5-libksieve
ExclusiveArch: x86_64 %{arm}
- kf5-mailimporter
ExclusiveArch: x86_64 %{arm}
- kf5-pimcommon
ExclusiveArch: x86_64 %{arm}
- kicad
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64 ppc64le
- kiwix-desktop
ExclusiveArch: %{qt5_qtwebengine_arches}
- 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
- kosmtik
ExclusiveArch: %{nodejs_arches} noarch
- kubernetes
ExclusiveArch: x86_64 aarch64 ppc64le s390x %{arm}
- lazarus
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
- libica
ExclusiveArch: s390 s390x
- libipt
ExclusiveArch: %{ix86} x86_64
ExclusiveArch: %{ix86} x86_64
- libkgapi
ExclusiveArch: x86_64 %{arm}
- libocxl
ExclusiveArch: ppc64le
- libpmemobj-cpp
ExclusiveArch: x86_64
- 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} %{ix86} x86_64
- libva-intel-hybrid-driver
ExclusiveArch: %{ix86} x86_64 ia64
- libvmi
ExclusiveArch: x86_64
- libvpd
ExclusiveArch: %{power64}
- libxsmm
ExclusiveArch: x86_64
- libzfcphbaapi
ExclusiveArch: s390 s390x
- lightdm
ExclusiveArch: x86_64 ppc64le
- lodash
ExclusiveArch: %{nodejs_arches} noarch
- log4net
ExclusiveArch: %mono_arches
- lrmi
ExclusiveArch: %{ix86}
- lsvpd
ExclusiveArch: %{power64}
- luajit
ExclusiveArch: %{arm} %{ix86} x86_64 %{mips} aarch64 s390x ppc64le
- luxcorerender
ExclusiveArch: x86_64
- mactel-boot
ExclusiveArch: x86_64
- manifest-tool
ExclusiveArch: x86_64 aarch64 ppc64le s390x
- mantle
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- 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
- mediaconch
ExclusiveArch: %{qt5_qtwebengine_arches}
- mellowplayer
ExclusiveArch: %{qt5_qtwebengine_arches}
- memkind
ExclusiveArch: x86_64
- 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-wine-gecko
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64
- mirrorlist-server
ExclusiveArch: %{rust_arches}
- mkbootdisk
ExclusiveArch: %{ix86} sparc sparc64 x86_64
- mnemosyne
ExclusiveArch: noarch %{qt5_qtwebengine_arches}
- mocha
ExclusiveArch: %{nodejs_arches} noarch
- mod_mono
ExclusiveArch: %mono_arches
- module-build-service
ExclusiveArch: %{ix86} x86_64 noarch
- mokutil
ExclusiveArch: %{ix86} x86_64 aarch64
- 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
- mozilla-iot-gateway
ExclusiveArch: %{nodejs_arches} noarch
- mozilla-iot-gateway-addon-node
ExclusiveArch: %{nodejs_arches} noarch
- mrrescue
ExclusiveArch: %{arm} %{ix86} x86_64 %{mips} aarch64 ppc64
- msr-tools
ExclusiveArch: %{ix86} x86_64
- mustache-d
ExclusiveArch: %{ldc_arches}
- mysql-connector-net
ExclusiveArch: %{mono_arches}
- nacl-binutils
ExclusiveArch: x86_64
- nant
ExclusiveArch: %mono_arches
- nbc
ExclusiveArch: %{fpc_arches}
- nbdkit
ExclusiveArch: x86_64
- ndesk-dbus
ExclusiveArch: %{mono_arches}
- ndesk-dbus-glib
ExclusiveArch: %{mono_arches}
- newtonsoft-json
ExclusiveArch: %{mono_arches}
- nim
ExclusiveArch: %{nim_arches}
- node-gyp
ExclusiveArch: %{nodejs_arches} noarch
- nodejs
ExclusiveArch: %{nodejs_arches}
- nodejs-Base64
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-abbrev
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-acorn
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-acorn-dynamic-import
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-acorn-jsx
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-acorn-object-spread
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-agentkeepalive
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ain2
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-align-text
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ansi
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ansi-bgblack
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ansi-bgblue
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ansi-bgcyan
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ansi-bggreen
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ansi-bgmagenta
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ansi-bgred
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ansi-bgwhite
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ansi-bgyellow
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ansi-black
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ansi-blue
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ansi-bold
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ansi-colors
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ansi-cyan
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-ansi-dim
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ansi-escapes
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ansi-gray
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ansi-green
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-ansi-grey
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ansi-hidden
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ansi-inverse
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ansi-italic
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ansi-magenta
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-ansi-red
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ansi-regex
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ansi-reset
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ansi-strikethrough
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ansi-styles
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-ansi-underline
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ansi-white
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ansi-wrap
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-ansi-yellow
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-ansicolors
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-ansistyles
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-any-path
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-any-promise
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-ap
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-append-field
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-append-transform
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-archy
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-are-we-there-yet
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-argparse
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-argsparser
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-arr-diff
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-arr-exclude
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-arr-flatten
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-arr-union
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-array-buffer-from-string
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-array-differ
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-array-events
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-array-filter
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-array-find
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-array-find-index
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-array-flatten
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-array-foreach
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-array-ify
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-array-index
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-array-map
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-array-reduce
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-array-union
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-array-unique
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-arraybuffer-dot-slice
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-arraybuffer-equal
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-arrify
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-asap
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-ascii-tree
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ascli
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-asn1
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-assert-plus
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-assertion-error
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-assume
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-async
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-async-array-reduce
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-async-arrays
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-async-limiter
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-async-queue
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-async-some
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-asynckit
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-atob
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-auto-bind
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-autoresolve
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-aws-sign
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-aws-sign2
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-aws4
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-babel-code-frame
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-babel-plugin-syntax-async-functions
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-babel-plugin-syntax-async-generators
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-babel-runtime
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-babylon
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-backbone
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-backoff
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-balanced-match
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-base
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-base-plugins
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-base32-encode
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-base64-arraybuffer
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-base64-url
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-base64id
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-bash-match
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-basic-auth
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-basic-auth-connect
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-batch
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-bcrypt
ExclusiveArch: %{nodejs_arches}
- nodejs-bcryptjs
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-beeper
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-benchmark
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-better-assert
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-better-than-before
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-bignumber-js
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-bind-obj-methods
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-bindings
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-bit-mask
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-bl
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-blob
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-block-stream
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-bluebird
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-body-parser
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-boolbase
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-boom
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-brace-expansion
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-braces
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-browser-stdout
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-bson
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-buble
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-buf-compare
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-buffer-crc32
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-buffer-equal
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-buffer-writer
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-bufferutil
ExclusiveArch: %{nodejs_arches}
- nodejs-builtin-modules
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-builtins
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-bundle-dependencies
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-bunker
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-bunyan
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-burrito
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-busboy
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-byline
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-bytes
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-cache-base
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-caching-transform
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-call-delayed
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-call-matcher
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-call-me-maybe
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-call-signature
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-callback-stream
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-caller-callsite
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-caller-path
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-callsite
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-callsites
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-camelcase
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-camelcase-keys
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-carrier
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-caseless
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-center-align
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-chai
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-chai-as-promised
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-chai-cheerio
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-chai-connect-middleware
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-chai-fs
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-chai-json-schema
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-chai-oauth2orize-grant
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-chai-passport-strategy
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-chai-spies-next
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-chainer
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-chalk
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-char-spinner
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-character-parser
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-chardet
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-charenc
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-charm
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-check-env
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-check-error
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-cheerio
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-child-process-close
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-chmodr
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-chownr
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-chroma-js
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-chrono
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ci-info
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-circular-json
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-cjson
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-clap
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-class-utils
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-clean-css
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-clean-yaml-object
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-clear-require
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-cli
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-cli-color
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-cli-spinner
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-cli-table
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-cliui
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-clone
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-clone-deep
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-clone-stats
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-closure-compiler
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-cmd-shim
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-co
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-co-mocha
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-co-with-promise
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-coa
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-code-point-at
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-codemirror
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-coffee-coverage
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-collection-visit
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-collections
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-color-support
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-colors
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-colour
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-columnify
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-combined-stream
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-commander
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-common-path-prefix
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-commondir
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-commonmark
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-compare-func
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-compare-versions
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-component-emitter
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-component-indexof
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-component-inherit
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-concat-map
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-concat-stream
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-config-chain
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-connect
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-connect-livereload
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-connect-timeout
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-console-dot-log
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-console-group
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-consolemd
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-constantinople
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-content-disposition
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-content-type
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-conventional-changelog-angular
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-conventional-changelog-atom
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-conventional-changelog-codemirror
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-conventional-changelog-ember
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-conventional-changelog-eslint
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-conventional-changelog-express
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-conventional-changelog-jquery
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-conventional-changelog-jscs
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-conventional-changelog-jshint
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-conventional-changelog-preset-loader
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-conventional-changelog-writer
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-conventional-commits-filter
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-conventional-commits-parser
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-convert-hex
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-convert-source-map
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-cookie
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-cookie-jar
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-cookie-parser
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-cookie-session
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-cookie-signature
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-cookiejar
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-cookies
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-copy-descriptor
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-core-assert
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-core-js
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-core-util-is
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-cors
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-couch-login
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-coveralls
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-crc
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-cross-spawn
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-cross-spawn-async
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-crypt
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-cryptiles
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-csrf
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-css
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-css-parse
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-css-select
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-css-stringify
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-css-tree
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-css-what
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-csscomb-core
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-csslint
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-csso
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-cssom
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-csurf
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-csv
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-csv-generate
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-csv-parse
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-csv-spectrum
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-csv-stringify
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-ctype
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-currently-unhandled
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-cycle
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-cyclist
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-d
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-dargs
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-data-uri-to-buffer
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-dateformat
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-death
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-debug
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-debug-fabulous
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-debug-log
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-debuglog
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-decamelize
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-decamelize-keys
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-decimal-js
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-dedent
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-deep-eql
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-deep-equal
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-deep-extend
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-deep-is
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-deeper
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-default-require-extensions
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-default-resolution
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-defaults
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-defence
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-defence-cli
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-define-properties
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-define-property
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-defined
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-del
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-delayed-stream
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-delegates
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-delete
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-dep-graph
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-depd
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-deprecated
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-destroy
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-detect-file
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-detect-indent
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-detect-newline
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-detect-node
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-detective
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-dezalgo
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-dicer
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-diff
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-difflet
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-difflib
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-dirty-chai
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-discord-js
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-docopt
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-doctrine
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-dot-prop
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-dotfile-regex
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-dryice
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-duplexer
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-duplexer2
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-duplexify
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-duration
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-each
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-ebnf-parser
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-echomd
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-editor
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ee-first
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ejs
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-emojione
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-empty-dir
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-end-of-stream
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-engine-dot-io-client
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-engine-dot-io-parser
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-error-ex
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-error-symbol
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-es-abstract
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-es-to-primitive
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-es5-ext
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-es5-shim
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-es6-iterator
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-es6-promise
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-es6-promisify
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-es6-shim
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-es6-symbol
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-es6-weak-map
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-escallmatch
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-escape-html
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-escape-regexp-component
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-escape-string-regexp
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-escodegen
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-escope
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-espower
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-espower-location-detector
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-esprima
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-esprima-fb
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-esprima-harmony-jscs
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-espurify
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-esrecurse
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-estraverse
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-estraverse-fb
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-estree-walker
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-esutils
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-event-emitter
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-eventemitter2
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-events
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-events-to-array
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-everything-dot-js
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-exit
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-expand-brackets
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-expand-range
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-expand-tilde
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-expect
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-expect-dot-js
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-express
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-express-session
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-extend
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-extend-shallow
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-extended-emitter
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-extglob
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-eyes
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-fake
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-fancy-log
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-fast-levenshtein
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-fastfall
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-faucet
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-faye-websocket
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-figures
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-file-entry-cache
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-file-sync-cmp
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-filelist
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-filename-regex
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-fileset
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-fill-keys
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-fill-range
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-find-cache-dir
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-find-up
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-findup-sync
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-first-chunk-stream
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-flagged-respawn
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-flat-cache
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-flush-write-stream
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-fmix
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-fn-dot-name
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-for-each
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-for-in
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-for-own
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-foreach
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-foreground-child
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-forever-agent
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-form-data
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-formatio
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-formidable
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-forwarded
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-fragment-cache
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-freetree
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-fresh
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-from
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-fs-dot-notify
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-fs-exists-cached
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-fs-exists-sync
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-fs-ext
ExclusiveArch: %{nodejs_arches}
- nodejs-fs-promise
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-fs-temp
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-fs-vacuum
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-fs-write-stream-atomic
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-fstream
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-fstream-ignore
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-fstream-npm
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-function-bind
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-function-loop
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-gauge
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-gaze
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-gdal
ExclusiveArch: %{nodejs_arches}
- nodejs-generate-function
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-generate-object-property
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-generic-pool
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-get-port
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-get-value
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-getobject
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-git-remote-origin-url
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-git-tails
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-gitconfiglocal
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-github-url-from-git
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-github-url-from-username-repo
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-glob
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-glob-base
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-glob-expand
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-glob-parent
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-glob-to-regexp
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-global-modules
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-global-prefix
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-globals
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-globby
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-globule
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-glogg
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-gnode
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-gonzales-pe
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-graceful-fs
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-graceful-readlink
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-grip
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-growl
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-grunt
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-grunt-banner
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-grunt-cli
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-grunt-compare-size
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-grunt-contrib-clean
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-grunt-contrib-concat
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-grunt-contrib-csslint
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-grunt-contrib-internal
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-grunt-contrib-nodeunit
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-grunt-contrib-uglify
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-grunt-contrib-watch
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-grunt-git-authors
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-grunt-init
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-grunt-known-options
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-grunt-legacy-log
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-grunt-legacy-log-utils
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-grunt-legacy-util
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-grunt-lib-contrib
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-grunt-sed
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-grunt-simple-mocha
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-grunt-wrap
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-gulplog
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-gzip-size
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-handlebars
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-har-validator
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-has
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-has-ansi
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-has-binary
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-has-binary2
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-has-color
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-has-cors
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-has-flag
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-has-glob
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-has-gulplog
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-has-symbols
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-has-unicode
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-has-value
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-has-values
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-has-yarn
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-hash_file
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-hawk
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-heap
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-hex-to-array-buffer
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-highlight-js
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-historic-readline
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-hoek
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-homedir-polyfill
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-hook-std
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-hooker
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-hosted-git-info
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-hsluv
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-htmlparser2
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-http-deceiver
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-http-errors
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-http-signature
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-http2
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-humanize-ms
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-i
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-i18n-transform
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-i2c
ExclusiveArch: %{nodejs_arches}
- nodejs-iconv
ExclusiveArch: %{nodejs_arches}
- nodejs-iconv-lite
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-iferr
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-ignore
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-image-size
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-immutable
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-import-local
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-imul
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-imurmurhash
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-indent-string
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-indexof
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-inflight
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-info-symbol
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-inherit
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-inherits
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-inherits1
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ini
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-int64-buffer
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-intercept-require
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-interpret
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-invert-kv
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ip
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ipaddr-dot-js
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-irc-colors
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-irc-formatting
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-irc-upd
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-irregular-plurals
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-is
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-accessor-descriptor
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-arrayish
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-arrow-function
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-is-boolean-object
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-buffer
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-is-builtin-module
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-callable
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-data-descriptor
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-date-object
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-descriptor
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-dir
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-is-dotfile
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-is-equal-shallow
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-is-error
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-extendable
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-is-extglob
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-is-finite
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-fullwidth-code-point
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-function
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-generator
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-is-generator-fn
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-is-generator-function
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-is-glob
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-is-module
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-my-json-valid
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-negated-glob
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-node
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-number
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-is-number-object
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-is-obj
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-object
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-observable
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-is-odd
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-path-cwd
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-is-path-in-cwd
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-is-path-inside
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-is-plain-obj
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-plain-object
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-primitive
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-is-promise
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-property
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-regex
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-regexp
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-registered
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-relative
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-is-stream
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-string
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-is-subset
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-symbol
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-text-path
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-typedarray
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-unc-path
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-is-url
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-is-utf8
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-valid-glob
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-is-valid-instance
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-windows
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-isarray
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-isexe
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-iso8601
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-isobject
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-isodate
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-isstream
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-istanbul-lib-coverage
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-istanbul-lib-hook
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-istanbul-lib-report
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-istanbul-lib-source-maps
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-istanbul-reports
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-jade
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-jasmine-growl-reporter
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-jasmine-reporters
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-jest-mock
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-jison-lex
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-joose
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-joosex-namespace-depended
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-joosex-simplerequest
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-js-base64
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-js-string-escape
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-js-tokens
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-js-yaml
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-jschardet
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-jscoverage
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-json-diff
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-json-localizer
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-json-parse-helpfulerror
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-json-stable-stringify
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-json-stringify-safe
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-json3
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-jsonfile
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-jsonify
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-jsonm
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-jsonparse
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-jsonpointer
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-jsonpointer-dot-js
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-jsonselect
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-jwt-simple
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-keep-alive-agent
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-keygrip
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-keypress
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-kind-of
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-klaw
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-kuler2gpl
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-lazy-cache
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-lazystream
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-lcid
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-lcov-parse
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-leaflet
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-leaflet-formbuilder
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-leaflet-hash
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-leche
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-left-pad
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-less
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-less-plugin-clean-css
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-levn
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-libpq
ExclusiveArch: %{nodejs_arches}
- nodejs-libxmljs
ExclusiveArch: %{nodejs_arches}
- nodejs-line-numbers
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-line-reader
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-linefix
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-linkify-it
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-load-grunt-tasks
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-locate-character
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-locate-path
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-lockfile
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-log-driver
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-log-ok
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-log-utils
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-lolex
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-long
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-longest
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-loophole
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-loud-rejection
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-lru-cache
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-lru-queue
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-ltx
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-magic-string
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-make-arrow-function
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-make-dir
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-make-error
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-make-generator-function
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-make-node
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-makedir
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-makeerror
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-map-cache
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-map-obj
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-map-visit
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-mapnik
ExclusiveArch: %{nodejs_arches}
- nodejs-mapnik-pool
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-mapnik-vector-tile
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-markdown
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-markdown-it-testgen
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-marked
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-matched
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-max-timeout
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-maxmin
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-mbtiles
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-md5
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-md5-hex
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-md5-o-matic
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-mdn-data
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-mdurl
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-media-typer
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-memoize-path
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-memoizee
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-merge-descriptors
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-metascript
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-methods
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-micromatch
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-millstone
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-mime
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-mime-db
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-mime-types
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-mimeparse
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-minimalistic-assert
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-minimatch
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-minimist
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-minipass
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-mixin-deep
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-mixin-object
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-mkdirp
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-mock-bin
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-mock-fs
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-mock-git
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-modify-values
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-module-not-found-error
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-mongodb
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-mongodb-core
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-monocle
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-morgan
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-ms
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-muffin
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-multimatch
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-multiparty
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-multipipe
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-murmur-32
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-mustache
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-mutate-fs
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-mute-stream
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-mv
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-mysql
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-mz
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-nan
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-nan0
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-nan1
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-nanomatch
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-nanomsg
ExclusiveArch: %{nodejs_arches}
- nodejs-nanoseconds
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ncp
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-needle
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-negative-zero
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-net-browserify-alt
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-netmask
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-next-tick
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-ng-classify
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-node-dot-extend
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-node-expat
ExclusiveArch: %{nodejs_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- nodejs-node-int64
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-node-markdown
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-node-static
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-node-stringprep
ExclusiveArch: %{nodejs_arches}
- nodejs-node-uuid
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-nomnom
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-noncharacters
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-nopt
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-nopt-usage
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-noptify
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-normalize-git-url
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-normalize-path
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-npm-cache-filename
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-npm-install-checks
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-npm-license
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-npm-package-arg
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-npm-run-path
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-npm-user-validate
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-npmlog
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-nth-check
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-number-is-nan
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-numeral
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-oauth
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-oauth-sign
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-oauth2orize
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-object-assign
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-object-copy
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-object-dot-assign
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-object-dot-entries
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-object-dot-omit
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-object-dot-pick
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-object-inspect
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-object-is
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-object-keys
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-object-visit
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-observable-to-promise
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-obuf
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-okay
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-on-finished
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-on-headers
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-once
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-only-shallow
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-opal-runtime
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-open
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-opener
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-option-cache
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-option-chain
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-optionator
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-options
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-optjs
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-opts
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-orchestrator
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-ordered-read-streams
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-os-homedir
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-os-locale
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-os-shim
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-os-tmpdir
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-osenv
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-output-file-sync
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-own-or
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-own-or-env
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-p-finally
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-p-limit
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-p-locate
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-p-try
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-package
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-package-license
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-packaging
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-packet-reader
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-pad
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-pad-left
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-paperboy
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-parallel-transform
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-parse-github-repo-url
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-parse-glob
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-parse-ms
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-parse-passwd
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-parsejson
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-parseqs
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-parseuri
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-parseurl
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-pascalcase
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-passport-http-bearer
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-passport-oauth
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-passport-oauth1
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-passport-oauth2
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-passport-oauth2-client-password
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-passport-strategy
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-path-array
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-path-dirname
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-path-exists
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-path-extra
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-path-is-absolute
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-path-is-inside
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-path-key
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-path-parse
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-path-to-regexp
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-path-type
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-path2
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-pathval
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-pause
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-pbkdf2-password
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-pedding
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-pff
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-pg
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-pg-connection-string
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-pg-cursor
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-pg-escape
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-pg-int8
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-pg-native
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-pg-numeric
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-pg-packet-stream
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-pg-pool
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-pg-types
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-pgpass
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-pinkie
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-pinkie-promise
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-pkg-dir
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-pkg-up
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-pkginfo
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-platform
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-plur
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-posix-character-classes
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-postgres-array
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-postgres-bytea
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-postgres-date
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-postgres-interval
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-precond
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-prelude-ls
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-preserve
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-pretty-bytes
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-pretty-hrtime
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-pretty-ms
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-pretty-time
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-prism-media
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-process-nextick-args
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-proclaim
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-progress
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-progress-stream
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-promise
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-promises-aplus-tests
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-prompt
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-promzard
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-propagate
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-propget
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-proto-list
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-proxy-addr
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-proxyquire
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-pruddy-error
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-pseudomap
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-pubcontrol
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-pump
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-pumpify
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-q
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-q-io
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-qs
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-qtdatastream
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-queue-async
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-quick-lru
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-qunit-extras
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-rainbowsocks
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-random-bytes
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-random-path
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-randomatic
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-range-parser
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-raw-body
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-re-emitter
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-read
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-read-all-stream
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-read-cmd-shim
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-read-file
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-read-json-sync
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-read-package-json
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-read-pkg
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-readable-stream
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-readdir-enhanced
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-readdir-scoped-modules
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-readdirp
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-realize-package-specifier
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-rechoir
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-redent
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-reduce-component
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-regex-cache
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-regex-not
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-remove-trailing-separator
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-repeat-element
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-repeat-string
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-repeating
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-repl
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-replace
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-replace-ext
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-replace-require-self
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-request
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-require-cs
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-require-directory
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-require-inject
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-require-main-filename
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-require-relative
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-require-uncached
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-require-yaml
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-requirejs
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-resolve
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-resolve-cwd
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-resolve-dir
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-resolve-from
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-resolve-pkg
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-resolve-url
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-response-time
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-resumer
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ret
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-retry
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-reusify
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-revalidator
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-rewire
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-rfile
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-rhea
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-right-align
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-rimraf
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-rndm
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-rollup
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-rollup-plugin-buble
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-rollup-plugin-commonjs
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-rollup-plugin-json
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-rollup-plugin-node-resolve
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-rollup-plugin-typescript
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-rollup-pluginutils
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-ronn
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-runforcover
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-safe-buffer
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-safe-json-stringify
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-safe-regex
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-safecb
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-samsam
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-sax
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-secure-random
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-seedrandom
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-select-hose
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-semver
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-sentiment
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-sequencify
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-serialize-error
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-serve-index
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-server-destroy
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-set-blocking
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-set-getter
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-set-immediate
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-set-immediate-shim
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-set-value
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-setimmediate
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-setprototypeof
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-sha
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-shallow-clone
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-shebang-command
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-shebang-regex
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-shelljs
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-shelljs-nodecli
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-should
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-should-equal
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-should-format
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-should-http
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-should-type
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-showdown
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-sift
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-sigmund
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-signal-exit
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-simple-assert
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-simple-asyncify
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-simple-fmt
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-simple-is
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-simple-markdown
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-single-line-log
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-sinon
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-sinon-chai
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-sinon-restore
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-slash
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-sliced
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-slide
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-snapdragon
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-snapdragon-capture
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-snapdragon-capture-set
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-snapdragon-node
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-snapdragon-util
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-snekfetch
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-snockets
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-sntp
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-socket-dot-io-parser
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-sorted-object
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-source-map
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-source-map-fixtures
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-source-map-resolve
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-source-map-support
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-source-map-url
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-sparkles
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-spawn-sync
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-spawn-wrap
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-spdx-exceptions
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-spdx-license-ids
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-spec
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-spec-js
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-speedometer
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-split
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-split-string
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-split2
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-sprintf
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-sprintf-js
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-sqlite3
ExclusiveArch: %{nodejs_arches}
- nodejs-srs
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ssri
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-stable
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-stack-trace
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-stack-utils
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-static-extend
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-static-favicon
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-statuses
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-stream-combiner
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-stream-consume
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-stream-counter
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-stream-each
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-stream-pair
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-stream-replace
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-stream-shift
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-stream-spigot
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-stream-transform
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-streamsearch
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-streamtest
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-string
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-string-dot-prototype-dot-repeat
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-string-dot-prototype-dot-trim
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-string-width
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-string_decoder
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-stringmap
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-stringscanner
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-stringset
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-stringstream
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-strip-ansi
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-strip-bom
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-strip-bom-stream
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-strip-bom-string
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-strip-color
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-strip-eof
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-strip-json-comments
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-strip-path
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-strong-log-transformer
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-success-symbol
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-superagent
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-supertest
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-supervisor
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-supports-color
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-suspend
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-svgo
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-symbol-observable
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-tap
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-tap-mocha-reporter
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-tap-out
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-tap-parser
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-tap-spec
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-tape
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-tapes
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-tar
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-tar-pack
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-temp
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-temp-dir
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-temp-write
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-tempfile
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-temporary
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-tern-cordovajs
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-tern-liferay
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-terst
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-testdata-w3c-json-form
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-testswarm
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-testutil
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-text-extensions
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-text-table
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-thenify
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-thenify-all
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-thread-sleep
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-through
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-through2
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-through2-filter
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-thunkify
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-tildify
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-tilelive-mapnik
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-tiletype
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-time-diff
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-time-stamp
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-timekeeper
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-timers-ext
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-tiny-lr-fork
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-tippex
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-tlds
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-tmatch
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-tmp
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-tmpl
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-to-absolute-glob
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-to-array
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-to-object-path
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-to-regex
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-to-regex-range
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-toidentifier
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-touch
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-tough-cookie
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-tracejs
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-transformers
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-traverse
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-treeify
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-tressa
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-trim
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-trim-newlines
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-trim-off-newlines
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-trivial-deferred
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-try-open
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-try-thread-sleep
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-tryor
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-tsame
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-tslib
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-tsscmp
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-tunnel-agent
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-tv4
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-tweetnacl
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-tweetnacl-util
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-type-check
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-type-detect
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-type-is
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-type-name
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-typeahead.js
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-typescript
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-uc-dot-micro
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-uglify-to-browserify
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-uid-number
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-uid-safe
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-uid2
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-ultron
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-umask
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-unc-path-regex
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-underscore
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-underscore-dot-logger
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-unicode-length
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-union-value
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-unique-filename
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-unique-slug
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-unique-stream
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-unique-temp-dir
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-unpipe
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-unset-value
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-uri-path
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-urix
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-url2
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-use
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-user-home
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-utf8
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-util
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-util-deprecate
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-util-extend
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-util-inspect
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-utilities
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-utils-merge
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-uuid
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-vali-date
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-validate-npm-package-name
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-vasync
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-vhost
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-vlq
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-vow
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-vow-fs
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-vow-queue
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-vows
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-walkdir
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-walker
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ware
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-warning-symbol
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-watchit
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-watershed
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-wbuf
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-wcwidth
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-weak-map
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-websocket-driver
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-when
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-whet-dot-extend
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-which
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-win-spawn
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-window-size
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-winston
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-with
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-wolfy87-eventemitter
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-woothee
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-wordwrap
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-wrap-ansi
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-wrap-fn
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-wrappy
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-write
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-write-file-atomic
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ws
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-xdg-basedir
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-xml2js
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-xmlbuilder
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-xmlhttprequest
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-xmlhttprequest-ssl
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-xtend
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-y18n
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-yallist
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-yapool
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-yargs
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-yargs-parser
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-yarn
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-yeast
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-yn
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-zap
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-zeropad
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-zipfile
ExclusiveArch: %{nodejs_arches}
- nodejs-zlib-browserify
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-zlibjs
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodeunit
ExclusiveArch: %{nodejs_arches} noarch
- notify-sharp
ExclusiveArch: %{mono_arches}
- notify-sharp3
ExclusiveArch: %{mono_arches}
- nuget
ExclusiveArch: %{mono_arches}
- numatop
ExclusiveArch: x86_64 ppc64le
- nunit
ExclusiveArch: %{mono_arches}
- nunit2
ExclusiveArch: %{mono_arches}
- nvml
ExclusiveArch: x86_64 ppc64le
- nwchem
ExclusiveArch: x86_64 %{ix86}
- 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
- oci-umount
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64 ppc64le s390x %{mips}
- ocitools
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- oidn
ExclusiveArch: x86_64
- olpc-kbdshim
ExclusiveArch: %{ix86} %{arm}
- olpc-netutils
ExclusiveArch: %{ix86} %{arm}
- olpc-utils
ExclusiveArch: %{ix86} %{arm}
- onedrive
ExclusiveArch: %{ldc_arches}
- opal-prd
ExclusiveArch: ppc64le
- open-vm-tools
ExclusiveArch: x86_64
ExclusiveArch: %{ix86} x86_64
- openblas
ExclusiveArch: %{openblas_arches}
- openjfx
ExclusiveArch: %{ix86} x86_64
- openlibm
ExclusiveArch: %{arm} %{ix86} x86_64 aarch64 %{power64}
- openni
ExclusiveArch: %{ix86} x86_64 %{arm}
- openni-primesense
ExclusiveArch: %{ix86} x86_64 %{arm}
- 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 %{mips} aarch64 ppc64
- oshinko-cli
ExclusiveArch: %{go_arches}
ExclusiveArch: x86_64 aarch64 ppc64le s390x
- paflib
ExclusiveArch: ppc %{power64}
- pcc
ExclusiveArch: %{ix86} x86_64
- pcmciautils
ExclusiveArch: %{ix86} x86_64 ia64 ppc ppc64 %{arm}
- pdfmod
ExclusiveArch: %mono_arches
- peripety
ExclusiveArch: %{rust_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: i686 x86_64 ia64 aarch64
- pinta
ExclusiveArch: %mono_arches
- pioneer
ExclusiveArch: %{ix86} x86_64
- pmdk-convert
ExclusiveArch: x86_64
- pmemkv
ExclusiveArch: x86_64
- pocl
ExclusiveArch: %{arm} aarch64 %{ix86} x86_64
- 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}
- publican-jboss
ExclusiveArch: i686 x86_64
- pveclib
ExclusiveArch: ppc %{power64}
- pvs-sbcl
ExclusiveArch: %{ix86} x86_64 ppc sparcv9
- pyqtwebengine
ExclusiveArch: %{qt5_qtwebengine_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-rpi-gpio
ExclusiveArch: %{arm} aarch64
- q4wine
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64
- qcint
ExclusiveArch: x86_64
- qclib
ExclusiveArch: s390 s390x
- 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}
ExclusiveArch: x86_64 %{ix86}
- quentier
ExclusiveArch: %{qt5_qtwebengine_arches}
- reactfx
ExclusiveArch: %{ix86} x86_64 noarch
- rear
ExclusiveArch: %ix86 x86_64 ppc ppc64 ppc64le ia64
- redhat-lsb
ExclusiveArch: %{ix86} ia64 x86_64 ppc ppc64 s390 s390x %{arm} aarch64 ppc64le
- reg
ExclusiveArch: x86_64
- renderdoc
ExclusiveArch: %{ix86} x86_64
- reptyr
ExclusiveArch: %{ix86} x86_64 %{arm}
- rescene
ExclusiveArch: %{mono_arches}
- 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
- rpm-ostree
ExclusiveArch: %{rust_arches}
- rr
ExclusiveArch: %{ix86} x86_64
- 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-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-router
ExclusiveArch: %{rust_arches}
- rust-actix-rt
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-actix_derive
ExclusiveArch: %{rust_arches}
- rust-addr2line
ExclusiveArch: %{rust_arches}
- rust-adler32
ExclusiveArch: %{rust_arches}
- rust-aes
ExclusiveArch: %{rust_arches}
- rust-aes-soft
ExclusiveArch: %{rust_arches}
- rust-afterburn
ExclusiveArch: %{rust_arches}
- rust-ahash
ExclusiveArch: %{rust_arches}
- rust-aho-corasick
ExclusiveArch: %{rust_arches}
- rust-alga
ExclusiveArch: %{rust_arches}
- rust-alga_derive
ExclusiveArch: %{rust_arches}
- rust-alloc-no-stdlib
ExclusiveArch: %{rust_arches}
- rust-alloc-stdlib
ExclusiveArch: %{rust_arches}
- rust-alphanumeric-sort
ExclusiveArch: %{rust_arches}
- rust-ammonia
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-aom-sys
ExclusiveArch: %{rust_arches}
- rust-app_dirs
ExclusiveArch: %{rust_arches}
- rust-approx
ExclusiveArch: %{rust_arches}
- rust-arbitrary
ExclusiveArch: %{rust_arches}
- rust-arc-swap
ExclusiveArch: %{rust_arches}
- rust-arg_enum_proc_macro
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-ascii
ExclusiveArch: %{rust_arches}
- rust-askalono
ExclusiveArch: %{rust_arches}
- rust-askalono-cli
ExclusiveArch: %{rust_arches}
- rust-assert-json-diff
ExclusiveArch: %{rust_arches}
- rust-assert_matches
ExclusiveArch: %{rust_arches}
- rust-async-attributes
ExclusiveArch: %{rust_arches}
- rust-async-task
ExclusiveArch: %{rust_arches}
- rust-async-trait
ExclusiveArch: %{rust_arches}
- rust-atk
ExclusiveArch: %{rust_arches}
- rust-atk-sys
ExclusiveArch: %{rust_arches}
- rust-atom
ExclusiveArch: %{rust_arches}
- rust-atomicwrites
ExclusiveArch: %{rust_arches}
- rust-atty
ExclusiveArch: %{rust_arches}
- rust-autocfg
ExclusiveArch: %{rust_arches}
- rust-average
ExclusiveArch: %{rust_arches}
- rust-awc
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-bat
ExclusiveArch: %{rust_arches}
- rust-battery
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-bit-set
ExclusiveArch: %{rust_arches}
- rust-bit-vec
ExclusiveArch: %{rust_arches}
- rust-bitflags
ExclusiveArch: %{rust_arches}
- rust-bitmaps
ExclusiveArch: %{rust_arches}
- rust-bitstream-io
ExclusiveArch: %{rust_arches}
- rust-blake2
ExclusiveArch: %{rust_arches}
- rust-blobby
ExclusiveArch: %{rust_arches}
- rust-block-buffer
ExclusiveArch: %{rust_arches}
- rust-block-cipher-trait
ExclusiveArch: %{rust_arches}
- rust-block-modes
ExclusiveArch: %{rust_arches}
- rust-block-padding
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-buf_redux
ExclusiveArch: %{rust_arches}
- rust-bufstream
ExclusiveArch: %{rust_arches}
- rust-build_const
ExclusiveArch: %{rust_arches}
- rust-byte-tools
ExclusiveArch: %{rust_arches}
- rust-byte-unit
ExclusiveArch: %{rust_arches}
- rust-bytecount
ExclusiveArch: %{rust_arches}
- rust-bytemuck
ExclusiveArch: %{rust_arches}
- rust-byteorder
ExclusiveArch: %{rust_arches}
- rust-bytes
ExclusiveArch: %{rust_arches}
- rust-bytes0.3
ExclusiveArch: %{rust_arches}
- rust-bytes0.4
ExclusiveArch: %{rust_arches}
- rust-bytesize
ExclusiveArch: %{rust_arches}
- rust-bytestring
ExclusiveArch: %{rust_arches}
- rust-c2-chacha
ExclusiveArch: %{rust_arches}
- rust-c_vec
ExclusiveArch: %{rust_arches}
- rust-cairo-rs
ExclusiveArch: %{rust_arches}
- rust-cairo-sys-rs
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-platform
ExclusiveArch: %{rust_arches}
- rust-cargo_metadata
ExclusiveArch: %{rust_arches}
- rust-cassowary
ExclusiveArch: %{rust_arches}
- rust-cast
ExclusiveArch: %{rust_arches}
- rust-cbindgen
ExclusiveArch: %{rust_arches}
- rust-cc
ExclusiveArch: %{rust_arches}
- rust-cexpr
ExclusiveArch: %{rust_arches}
- rust-cfg-if
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-chrono
ExclusiveArch: %{rust_arches}
- rust-chrono-humanize
ExclusiveArch: %{rust_arches}
- rust-chrono-tz
ExclusiveArch: %{rust_arches}
- rust-chunked_transfer
ExclusiveArch: %{rust_arches}
- rust-clang-sys
ExclusiveArch: %{rust_arches}
- rust-clap
ExclusiveArch: %{rust_arches}
- rust-clicolors-control
ExclusiveArch: %{rust_arches}
- rust-cmake
ExclusiveArch: %{rust_arches}
- rust-color_quant
ExclusiveArch: %{rust_arches}
- rust-colored
ExclusiveArch: %{rust_arches}
- rust-colored_json
ExclusiveArch: %{rust_arches}
- rust-compiletest_rs
ExclusiveArch: %{rust_arches}
- rust-comrak
ExclusiveArch: %{rust_arches}
- rust-config
ExclusiveArch: %{rust_arches}
- rust-console
ExclusiveArch: %{rust_arches}
- rust-const-random
ExclusiveArch: %{rust_arches}
- rust-const-random-macro
ExclusiveArch: %{rust_arches}
- rust-content_inspector
ExclusiveArch: %{rust_arches}
- rust-conv
ExclusiveArch: %{rust_arches}
- rust-cookie
ExclusiveArch: %{rust_arches}
- rust-cookie_store
ExclusiveArch: %{rust_arches}
- rust-copyless
ExclusiveArch: %{rust_arches}
- rust-coreos-installer
ExclusiveArch: %{rust_arches}
- rust-cpio
ExclusiveArch: %{rust_arches}
- rust-cpp_demangle
ExclusiveArch: %{rust_arches}
- rust-crates-io
ExclusiveArch: %{rust_arches}
- rust-crc
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.3
ExclusiveArch: %{rust_arches}
- rust-crossbeam-deque
ExclusiveArch: %{rust_arches}
- rust-crossbeam-epoch
ExclusiveArch: %{rust_arches}
- rust-crossbeam-queue
ExclusiveArch: %{rust_arches}
- rust-crossbeam-queue0.1
ExclusiveArch: %{rust_arches}
- rust-crossbeam-utils
ExclusiveArch: %{rust_arches}
- rust-crossbeam-utils0.6
ExclusiveArch: %{rust_arches}
- rust-crossterm
ExclusiveArch: %{rust_arches}
- rust-crypto-hash
ExclusiveArch: %{rust_arches}
- rust-crypto-mac
ExclusiveArch: %{rust_arches}
- rust-cryptovec
ExclusiveArch: %{rust_arches}
- rust-cssparser
ExclusiveArch: %{rust_arches}
- rust-cssparser-macros
ExclusiveArch: %{rust_arches}
- rust-csv
ExclusiveArch: %{rust_arches}
- rust-csv-core
ExclusiveArch: %{rust_arches}
- rust-ctrlc
ExclusiveArch: %{rust_arches}
- rust-curl
ExclusiveArch: %{rust_arches}
- rust-curl-sys
ExclusiveArch: %{rust_arches}
- rust-custom_derive
ExclusiveArch: %{rust_arches}
- rust-darling
ExclusiveArch: %{rust_arches}
- rust-darling_core
ExclusiveArch: %{rust_arches}
- rust-darling_macro
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-dbus0.2
ExclusiveArch: %{rust_arches}
- rust-dbus0.6
ExclusiveArch: %{rust_arches}
- rust-decimal
ExclusiveArch: %{rust_arches}
- rust-deflate
ExclusiveArch: %{rust_arches}
- rust-defmac
ExclusiveArch: %{rust_arches}
- rust-delta_e
ExclusiveArch: %{rust_arches}
- rust-derive_builder
ExclusiveArch: %{rust_arches}
- rust-derive_builder_core
ExclusiveArch: %{rust_arches}
- rust-derive_more
ExclusiveArch: %{rust_arches}
- rust-deunicode
ExclusiveArch: %{rust_arches}
- rust-devicemapper
ExclusiveArch: %{rust_arches}
- rust-diff
ExclusiveArch: %{rust_arches}
- rust-difference
ExclusiveArch: %{rust_arches}
- rust-digest
ExclusiveArch: %{rust_arches}
- rust-directories
ExclusiveArch: %{rust_arches}
- rust-dirs
ExclusiveArch: %{rust_arches}
- rust-dirs-sys
ExclusiveArch: %{rust_arches}
- rust-dissimilar
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-downcast-rs
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-dutree
ExclusiveArch: %{rust_arches}
- rust-edit-distance
ExclusiveArch: %{rust_arches}
- rust-either
ExclusiveArch: %{rust_arches}
- rust-elasticlunr-rs
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-entities
ExclusiveArch: %{rust_arches}
- rust-enum-as-inner
ExclusiveArch: %{rust_arches}
- rust-enum_primitive
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-envsubst
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-exa
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-simd
ExclusiveArch: %{rust_arches}
- rust-fake_clock
ExclusiveArch: %{rust_arches}
- rust-fallible-iterator
ExclusiveArch: %{rust_arches}
- rust-fd-find
ExclusiveArch: %{rust_arches}
- rust-fedora-coreos-pinger
ExclusiveArch: %{rust_arches}
- rust-fern
ExclusiveArch: %{rust_arches}
- rust-ffsend
ExclusiveArch: %{rust_arches}
- rust-ffsend-api
ExclusiveArch: %{rust_arches}
- rust-filesize
ExclusiveArch: %{rust_arches}
- rust-filetime
ExclusiveArch: %{rust_arches}
- rust-findshlibs
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-ord
ExclusiveArch: %{rust_arches}
- rust-fnv
ExclusiveArch: %{rust_arches}
- rust-foreign-types
ExclusiveArch: %{rust_arches}
- rust-foreign-types-shared
ExclusiveArch: %{rust_arches}
- rust-fragile
ExclusiveArch: %{rust_arches}
- rust-fs2
ExclusiveArch: %{rust_arches}
- rust-fs_extra
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-macro
ExclusiveArch: %{rust_arches}
- rust-futures-sink
ExclusiveArch: %{rust_arches}
- rust-futures-task
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-generic-array
ExclusiveArch: %{rust_arches}
- rust-getch
ExclusiveArch: %{rust_arches}
- rust-gethostname
ExclusiveArch: %{rust_arches}
- rust-getopts
ExclusiveArch: %{rust_arches}
- rust-getrandom
ExclusiveArch: %{rust_arches}
- rust-gettext-rs
ExclusiveArch: %{rust_arches}
- rust-gettext-sys
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-git2
ExclusiveArch: %{rust_arches}
- rust-git2-curl
ExclusiveArch: %{rust_arches}
- rust-glib
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-gobject-sys
ExclusiveArch: %{rust_arches}
- rust-goblin
ExclusiveArch: %{rust_arches}
- rust-google-drive3-fork
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-gspell
ExclusiveArch: %{rust_arches}
- rust-gspell-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-rs-lgpl-docs
ExclusiveArch: %{rust_arches}
- rust-gtk-source-sys
ExclusiveArch: %{rust_arches}
- rust-gtk-sys
ExclusiveArch: %{rust_arches}
- rust-gzip-header
ExclusiveArch: %{rust_arches}
- rust-h2
ExclusiveArch: %{rust_arches}
- rust-half
ExclusiveArch: %{rust_arches}
- rust-hamcrest
ExclusiveArch: %{rust_arches}
- rust-handlebars
ExclusiveArch: %{rust_arches}
- rust-hashbrown
ExclusiveArch: %{rust_arches}
- rust-hashbrown0.5
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-heck
ExclusiveArch: %{rust_arches}
- rust-hex
ExclusiveArch: %{rust_arches}
- rust-hex-literal
ExclusiveArch: %{rust_arches}
- rust-hex-literal-impl
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-html2pango
ExclusiveArch: %{rust_arches}
- rust-html5ever
ExclusiveArch: %{rust_arches}
- rust-http
ExclusiveArch: %{rust_arches}
- rust-http-body
ExclusiveArch: %{rust_arches}
- rust-http0.1
ExclusiveArch: %{rust_arches}
- rust-httparse
ExclusiveArch: %{rust_arches}
- rust-humansize
ExclusiveArch: %{rust_arches}
- rust-humantime
ExclusiveArch: %{rust_arches}
- rust-humantime1
ExclusiveArch: %{rust_arches}
- rust-hyper
ExclusiveArch: %{rust_arches}
- rust-hyper-native-tls
ExclusiveArch: %{rust_arches}
- rust-hyper-staticfile
ExclusiveArch: %{rust_arches}
- rust-hyper-tls
ExclusiveArch: %{rust_arches}
- rust-hyper0.10
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-imgref
ExclusiveArch: %{rust_arches}
- rust-indexmap
ExclusiveArch: %{rust_arches}
- rust-indicatif
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-interpolate_name
ExclusiveArch: %{rust_arches}
- rust-intervaltree
ExclusiveArch: %{rust_arches}
- rust-iovec
ExclusiveArch: %{rust_arches}
- rust-ipnet
ExclusiveArch: %{rust_arches}
- rust-ipnetwork
ExclusiveArch: %{rust_arches}
- rust-iron
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-itoa
ExclusiveArch: %{rust_arches}
- rust-ivf
ExclusiveArch: %{rust_arches}
- rust-jetscii
ExclusiveArch: %{rust_arches}
- rust-jobserver
ExclusiveArch: %{rust_arches}
- rust-jpeg-decoder
ExclusiveArch: %{rust_arches}
- rust-jql
ExclusiveArch: %{rust_arches}
- rust-json
ExclusiveArch: %{rust_arches}
- rust-jwalk
ExclusiveArch: %{rust_arches}
- rust-kv-log-macro
ExclusiveArch: %{rust_arches}
- rust-lab
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-letter-avatar
ExclusiveArch: %{rust_arches}
- rust-lexical-core
ExclusiveArch: %{rust_arches}
- rust-libc
ExclusiveArch: %{rust_arches}
- rust-libdbus-sys
ExclusiveArch: %{rust_arches}
- rust-libflate
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-libm
ExclusiveArch: %{rust_arches}
- rust-libmount
ExclusiveArch: %{rust_arches}
- rust-liboverdrop
ExclusiveArch: %{rust_arches}
- rust-libpulse-binding
ExclusiveArch: %{rust_arches}
- rust-libpulse-sys
ExclusiveArch: %{rust_arches}
- rust-libssh2-sys
ExclusiveArch: %{rust_arches}
- rust-libsystemd
ExclusiveArch: %{rust_arches}
- rust-libudev
ExclusiveArch: %{rust_arches}
- rust-libudev-sys
ExclusiveArch: %{rust_arches}
- rust-libz-sys
ExclusiveArch: %{rust_arches}
- rust-line-wrap
ExclusiveArch: %{rust_arches}
- rust-linked-hash-map
ExclusiveArch: %{rust_arches}
- rust-linkify
ExclusiveArch: %{rust_arches}
- rust-lipsum
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-log0.3
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-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-matrixmultiply
ExclusiveArch: %{rust_arches}
- rust-maxminddb
ExclusiveArch: %{rust_arches}
- rust-maybe-uninit
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-memoffset
ExclusiveArch: %{rust_arches}
- rust-metadeps
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-miniz-sys
ExclusiveArch: %{rust_arches}
- rust-miniz_oxide
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-mktemp
ExclusiveArch: %{rust_arches}
- rust-mnt
ExclusiveArch: %{rust_arches}
- rust-mockito
ExclusiveArch: %{rust_arches}
- rust-modifier
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-nasm-rs
ExclusiveArch: %{rust_arches}
- rust-native-tls
ExclusiveArch: %{rust_arches}
- rust-natord
ExclusiveArch: %{rust_arches}
- rust-net2
ExclusiveArch: %{rust_arches}
- rust-netmap_sys
ExclusiveArch: %{rust_arches}
- rust-new_debug_unreachable
ExclusiveArch: %{rust_arches}
- rust-newtype_derive
ExclusiveArch: %{rust_arches}
- rust-nickel
ExclusiveArch: %{rust_arches}
- rust-nix
ExclusiveArch: %{rust_arches}
- rust-nix0.14
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-noop_proc_macro
ExclusiveArch: %{rust_arches}
- rust-normalize-line-endings
ExclusiveArch: %{rust_arches}
- rust-notify
ExclusiveArch: %{rust_arches}
- rust-num
ExclusiveArch: %{rust_arches}
- rust-num-bigint
ExclusiveArch: %{rust_arches}
- rust-num-complex
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-traits
ExclusiveArch: %{rust_arches}
- rust-num-traits0.1
ExclusiveArch: %{rust_arches}
- rust-num_cpus
ExclusiveArch: %{rust_arches}
- rust-number_prefix
ExclusiveArch: %{rust_arches}
- rust-numtoa
ExclusiveArch: %{rust_arches}
- rust-object
ExclusiveArch: %{rust_arches}
- rust-odds
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-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-ord_subset
ExclusiveArch: %{rust_arches}
- rust-ordered-float
ExclusiveArch: %{rust_arches}
- rust-os_info
ExclusiveArch: %{rust_arches}
- rust-os_pipe
ExclusiveArch: %{rust_arches}
- rust-osstrtools
ExclusiveArch: %{rust_arches}
- rust-owned-alloc
ExclusiveArch: %{rust_arches}
- rust-owning_ref
ExclusiveArch: %{rust_arches}
- rust-packaging
ExclusiveArch: %{rust_arches}
- rust-pad
ExclusiveArch: %{rust_arches}
- rust-pager
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_lot
ExclusiveArch: %{rust_arches}
- rust-parking_lot_core
ExclusiveArch: %{rust_arches}
- rust-parse-zoneinfo
ExclusiveArch: %{rust_arches}
- rust-partial-io
ExclusiveArch: %{rust_arches}
- rust-paste
ExclusiveArch: %{rust_arches}
- rust-paste-impl
ExclusiveArch: %{rust_arches}
- rust-path-slash
ExclusiveArch: %{rust_arches}
- rust-pathdiff
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-percent-encoding
ExclusiveArch: %{rust_arches}
- rust-percent-encoding1
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-pico-args
ExclusiveArch: %{rust_arches}
- rust-pin-project
ExclusiveArch: %{rust_arches}
- rust-pin-project-internal
ExclusiveArch: %{rust_arches}
- rust-pin-project-lite
ExclusiveArch: %{rust_arches}
- rust-pin-utils
ExclusiveArch: %{rust_arches}
- rust-pkg-config
ExclusiveArch: %{rust_arches}
- rust-plain
ExclusiveArch: %{rust_arches}
- rust-plist
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-ppv-lite86
ExclusiveArch: %{rust_arches}
- rust-precomputed-hash
ExclusiveArch: %{rust_arches}
- rust-predicates-core
ExclusiveArch: %{rust_arches}
- rust-predicates-tree
ExclusiveArch: %{rust_arches}
- rust-pretty-git-prompt
ExclusiveArch: %{rust_arches}
- rust-pretty_assertions
ExclusiveArch: %{rust_arches}
- rust-pretty_env_logger
ExclusiveArch: %{rust_arches}
- rust-prettytable-rs
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-procedural-masquerade
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-protobuf
ExclusiveArch: %{rust_arches}
- rust-protobuf-codegen
ExclusiveArch: %{rust_arches}
- rust-protoc
ExclusiveArch: %{rust_arches}
- rust-protoc-rust
ExclusiveArch: %{rust_arches}
- rust-psm
ExclusiveArch: %{rust_arches}
- rust-publicsuffix
ExclusiveArch: %{rust_arches}
- rust-pulldown-cmark
ExclusiveArch: %{rust_arches}
- rust-pulse
ExclusiveArch: %{rust_arches}
- rust-qr2term
ExclusiveArch: %{rust_arches}
- rust-qrcode
ExclusiveArch: %{rust_arches}
- rust-quick-error
ExclusiveArch: %{rust_arches}
- rust-quickcheck
ExclusiveArch: %{rust_arches}
- rust-quickcheck0.6
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-rand
ExclusiveArch: %{rust_arches}
- rust-rand0.4
ExclusiveArch: %{rust_arches}
- rust-rand0.5
ExclusiveArch: %{rust_arches}
- rust-rand0.6
ExclusiveArch: %{rust_arches}
- rust-rand_chacha
ExclusiveArch: %{rust_arches}
- rust-rand_chacha0.1
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_distr
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_xorshift
ExclusiveArch: %{rust_arches}
- rust-rand_xorshift0.1
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-rawpointer
ExclusiveArch: %{rust_arches}
- rust-rawslice
ExclusiveArch: %{rust_arches}
- rust-rayon
ExclusiveArch: %{rust_arches}
- rust-rayon-core
ExclusiveArch: %{rust_arches}
- rust-recycler
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-relay
ExclusiveArch: %{rust_arches}
- rust-remove_dir_all
ExclusiveArch: %{rust_arches}
- rust-reqwest
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-ripgrep
ExclusiveArch: %{rust_arches}
- rust-rle-decode-fast
ExclusiveArch: %{rust_arches}
- rust-rmp
ExclusiveArch: %{rust_arches}
- rust-rmp-serde
ExclusiveArch: %{rust_arches}
- rust-roff
ExclusiveArch: %{rust_arches}
- rust-ron
ExclusiveArch: %{rust_arches}
- rust-rpassword
ExclusiveArch: %{rust_arches}
- rust-rpick
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-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_version
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-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-safemem
ExclusiveArch: %{rust_arches}
- rust-same-file
ExclusiveArch: %{rust_arches}
- rust-sass-rs
ExclusiveArch: %{rust_arches}
- rust-sass-sys
ExclusiveArch: %{rust_arches}
- rust-scan_fmt
ExclusiveArch: %{rust_arches}
- rust-scoped-tls
ExclusiveArch: %{rust_arches}
- rust-scoped_threadpool
ExclusiveArch: %{rust_arches}
- rust-scopeguard
ExclusiveArch: %{rust_arches}
- rust-scroll
ExclusiveArch: %{rust_arches}
- rust-scroll_derive
ExclusiveArch: %{rust_arches}
- rust-sd
ExclusiveArch: %{rust_arches}
- rust-seahash
ExclusiveArch: %{rust_arches}
- rust-secret-service
ExclusiveArch: %{rust_arches}
- rust-semver
ExclusiveArch: %{rust_arches}
- rust-semver-parser
ExclusiveArch: %{rust_arches}
- rust-semver-parser0.7
ExclusiveArch: %{rust_arches}
- rust-serde
ExclusiveArch: %{rust_arches}
- rust-serde-big-array
ExclusiveArch: %{rust_arches}
- rust-serde-pickle
ExclusiveArch: %{rust_arches}
- rust-serde-xml-rs
ExclusiveArch: %{rust_arches}
- rust-serde_bytes
ExclusiveArch: %{rust_arches}
- rust-serde_cbor
ExclusiveArch: %{rust_arches}
- rust-serde_derive
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_with_macros
ExclusiveArch: %{rust_arches}
- rust-serde_yaml
ExclusiveArch: %{rust_arches}
- rust-sha-1
ExclusiveArch: %{rust_arches}
- rust-sha1
ExclusiveArch: %{rust_arches}
- rust-sha2
ExclusiveArch: %{rust_arches}
- rust-shared_child
ExclusiveArch: %{rust_arches}
- rust-shell-escape
ExclusiveArch: %{rust_arches}
- rust-shell-words
ExclusiveArch: %{rust_arches}
- rust-shlex
ExclusiveArch: %{rust_arches}
- rust-signal-hook
ExclusiveArch: %{rust_arches}
- rust-signal-hook-registry
ExclusiveArch: %{rust_arches}
- rust-silver
ExclusiveArch: %{rust_arches}
- rust-simd_helpers
ExclusiveArch: %{rust_arches}
- rust-simple_logger
ExclusiveArch: %{rust_arches}
- rust-simplelog
ExclusiveArch: %{rust_arches}
- rust-siphasher
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-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-smallvec
ExclusiveArch: %{rust_arches}
- rust-smallvec0.6
ExclusiveArch: %{rust_arches}
- rust-smart-default
ExclusiveArch: %{rust_arches}
- rust-snowflake
ExclusiveArch: %{rust_arches}
- rust-socket2
ExclusiveArch: %{rust_arches}
- rust-sourceview
ExclusiveArch: %{rust_arches}
- rust-spin
ExclusiveArch: %{rust_arches}
- rust-spmc
ExclusiveArch: %{rust_arches}
- rust-stable_deref_trait
ExclusiveArch: %{rust_arches}
- rust-stacker
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-stb_truetype
ExclusiveArch: %{rust_arches}
- rust-stream-cipher
ExclusiveArch: %{rust_arches}
- rust-streaming-stats
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-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-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-sysinfo
ExclusiveArch: %{rust_arches}
- rust-tabwriter
ExclusiveArch: %{rust_arches}
- rust-take
ExclusiveArch: %{rust_arches}
- rust-take_mut
ExclusiveArch: %{rust_arches}
- rust-tar
ExclusiveArch: %{rust_arches}
- rust-target-lexicon
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-tendril
ExclusiveArch: %{rust_arches}
- rust-tera
ExclusiveArch: %{rust_arches}
- rust-term
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-tester
ExclusiveArch: %{rust_arches}
- rust-textwrap
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_local
ExclusiveArch: %{rust_arches}
- rust-threadpool
ExclusiveArch: %{rust_arches}
- rust-tiff
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_http
ExclusiveArch: %{rust_arches}
- rust-tinytemplate
ExclusiveArch: %{rust_arches}
- rust-tokei
ExclusiveArch: %{rust_arches}
- rust-tokio
ExclusiveArch: %{rust_arches}
- rust-tokio-async-await
ExclusiveArch: %{rust_arches}
- rust-tokio-buf
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-mock-task
ExclusiveArch: %{rust_arches}
- rust-tokio-mockstream
ExclusiveArch: %{rust_arches}
- rust-tokio-openssl
ExclusiveArch: %{rust_arches}
- rust-tokio-process
ExclusiveArch: %{rust_arches}
- rust-tokio-reactor
ExclusiveArch: %{rust_arches}
- rust-tokio-service
ExclusiveArch: %{rust_arches}
- rust-tokio-signal
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-trace-core
ExclusiveArch: %{rust_arches}
- rust-tokio-udp
ExclusiveArch: %{rust_arches}
- rust-tokio-uds
ExclusiveArch: %{rust_arches}
- rust-tokio-util
ExclusiveArch: %{rust_arches}
- rust-tokio0.1
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-traitobject
ExclusiveArch: %{rust_arches}
- rust-treebitmap
ExclusiveArch: %{rust_arches}
- rust-treeline
ExclusiveArch: %{rust_arches}
- rust-trust-dns-native-tls
ExclusiveArch: %{rust_arches}
- rust-trust-dns-openssl
ExclusiveArch: %{rust_arches}
- rust-trust-dns-proto
ExclusiveArch: %{rust_arches}
- rust-trust-dns-resolver
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-tui
ExclusiveArch: %{rust_arches}
- rust-tui-react
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-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-normalization
ExclusiveArch: %{rust_arches}
- rust-unicode-segmentation
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-unix_socket
ExclusiveArch: %{rust_arches}
- rust-unreachable
ExclusiveArch: %{rust_arches}
- rust-unsafe-any
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-urlshortener
ExclusiveArch: %{rust_arches}
- rust-users
ExclusiveArch: %{rust_arches}
- rust-utf-8
ExclusiveArch: %{rust_arches}
- rust-utf8-ranges
ExclusiveArch: %{rust_arches}
- rust-utf8parse
ExclusiveArch: %{rust_arches}
- rust-uuid
ExclusiveArch: %{rust_arches}
- rust-uuid0.6
ExclusiveArch: %{rust_arches}
- rust-uuid0.7
ExclusiveArch: %{rust_arches}
- rust-v_escape
ExclusiveArch: %{rust_arches}
- rust-v_escape_derive
ExclusiveArch: %{rust_arches}
- rust-v_htmlescape
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-vec_map
ExclusiveArch: %{rust_arches}
- rust-vergen
ExclusiveArch: %{rust_arches}
- rust-version-compare
ExclusiveArch: %{rust_arches}
- rust-version-sync
ExclusiveArch: %{rust_arches}
- rust-version_check
ExclusiveArch: %{rust_arches}
- rust-void
ExclusiveArch: %{rust_arches}
- rust-vte
ExclusiveArch: %{rust_arches}
- rust-wait-timeout
ExclusiveArch: %{rust_arches}
- rust-walkdir
ExclusiveArch: %{rust_arches}
- rust-want
ExclusiveArch: %{rust_arches}
- rust-warp
ExclusiveArch: %{rust_arches}
- rust-websocket
ExclusiveArch: %{rust_arches}
- rust-websocket-base
ExclusiveArch: %{rust_arches}
- rust-which
ExclusiveArch: %{rust_arches}
- rust-which1
ExclusiveArch: %{rust_arches}
- rust-wild
ExclusiveArch: %{rust_arches}
- rust-ws
ExclusiveArch: %{rust_arches}
- rust-x11
ExclusiveArch: %{rust_arches}
- rust-xattr
ExclusiveArch: %{rust_arches}
- rust-xdg
ExclusiveArch: %{rust_arches}
- rust-xml-rs
ExclusiveArch: %{rust_arches}
- rust-xml5ever
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-zincati
ExclusiveArch: %{rust_arches}
- rust-zoneinfo_compiled
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}
- s390utils
ExclusiveArch: s390 s390x
- safetyblanket
ExclusiveArch: %{arm} %{ix86} x86_64 %{mips} aarch64 ppc64
- 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
- seamonkey
ExclusiveArch: x86_64
- 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
- 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}
- source-to-image
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- sparkleshare
ExclusiveArch: %{mono_arches}
- spicctrl
ExclusiveArch: %{ix86} x86_64
- spice
ExclusiveArch: x86_64
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64
- springlobby
ExclusiveArch: %{ix86} x86_64
- 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}
- stripesnoop
ExclusiveArch: %{ix86} x86_64
- supercollider
ExclusiveArch: %{qt5_qtwebengine_arches}
- supermin
ExclusiveArch: x86_64
- 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
- syslinux
ExclusiveArch: %{ix86} x86_64
ExclusiveArch: %{ix86} x86_64
- taglib-sharp
ExclusiveArch: %{mono_arches}
- tarantool
ExclusiveArch: %{ix86} x86_64 armv7hl armv7hnl
- tboot
ExclusiveArch: %{ix86} x86_64
- tdlib
ExclusiveArch: x86_64
- templates_parser
ExclusiveArch: %GPRbuild_arches
- termy-qt
ExclusiveArch: %{ix86} x86_64
- ternimal
ExclusiveArch: %{rust_arches}
- 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}
- toolbox
ExclusiveArch: aarch64 %{arm} ppc64le s390x 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: %{ix86} x86_64 noarch
- v8-314
ExclusiveArch: %{ix86} x86_64 %{arm} mips mipsel ppc ppc64
- valgrind
ExclusiveArch: %{ix86} x86_64 ppc ppc64 ppc64le s390x armv7hl aarch64
- vapoursynth
ExclusiveArch: %{ix86} x86_64
- vboot-utils
ExclusiveArch: %{arm} aarch64 %{ix86} x86_64
- vim-go
ExclusiveArch: %{?golang_arches}%{!?golang_arches:%{ix86} x86_64 %{arm}}
- virt-p2v
ExclusiveArch: x86_64
- virtualbox-guest-additions
ExclusiveArch: i686 x86_64
- virtualplanet
ExclusiveArch: %{fpc_arches}
- vkd3d
ExclusiveArch: %{ix86} x86_64 %{arm}
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64
- vmaf
ExclusiveArch: x86_64
- vmem
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
- ycssmin
ExclusiveArch: %{nodejs_arches} noarch
- zeromq-ada
ExclusiveArch: %{GPRbuild_arches}
- zlib-ada
ExclusiveArch: %{GPRbuild_arches}
- zola
ExclusiveArch: %{rust_arches}
4 years, 1 month
Architecture specific change in rpms/sbd.git
by githook-noreply@fedoraproject.org
The package rpms/sbd.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/sbd.git/commit/?id=050f11c6be29d0....
Change:
+%ifarch s390x s390
Thanks.
Full change:
============
commit 484326875655c5694f6e9d819914284f54119f2c
Merge: 41d89a9 553c4c2
Author: Klaus Wenninger <kwenning(a)redhat.com>
Date: Fri Mar 6 20:38:56 2020 +0000
Merge #6 `Rebase to upstream v1.4.1`
commit 553c4c2c586adfe5444dfe2813b2552a1088bd9c
Author: Klaus Wenninger <klaus.wenninger(a)aon.at>
Date: Fri Mar 6 16:43:32 2020 +0100
sbd.spec: correct buildnum
diff --git a/sbd.spec b/sbd.spec
index d5f624c..7f4cbed 100644
--- a/sbd.spec
+++ b/sbd.spec
@@ -18,7 +18,7 @@
%global commit 25fce8a7d5e8cd5abc2379077381b10bd6cec183
%global shortcommit %(c=%{commit}; echo ${c:0:7})
%global github_owner Clusterlabs
-%global buildnum 1
+%global buildnum 4
Name: sbd
Summary: Storage-based death
commit 050f11c6be29d0a1e93dce4f2b181a4c680a913e
Author: Klaus Wenninger <klaus.wenninger(a)aon.at>
Date: Fri Mar 6 14:25:25 2020 +0100
* Thu Mar 5 2020 Klaus Wenninger <kwenning(a)redhat.com> - 1.4.1-1
- Rebase to upstream v1.4.1
- Make coverity happy with parameter passing in regressions.sh
- Add auto generated environment section to man-page
- Overhaul setting scheduler policy/priority
- Enable Fedora CI Gating
diff --git a/.gitignore b/.gitignore
index 0fb7102..ba457ce 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1 +1,2 @@
/sbd-*.tar.gz
+/sbd-*.src.rpm
diff --git a/0001-Fix-regressions.sh-make-parameter-passing-consistent.patch b/0001-Fix-regressions.sh-make-parameter-passing-consistent.patch
new file mode 100644
index 0000000..6f17a5a
--- /dev/null
+++ b/0001-Fix-regressions.sh-make-parameter-passing-consistent.patch
@@ -0,0 +1,82 @@
+From 1d2a7b8d059d4f090b351b8decca0ddf274c82a0 Mon Sep 17 00:00:00 2001
+From: Klaus Wenninger <klaus.wenninger(a)aon.at>
+Date: Wed, 20 Nov 2019 15:20:19 +0100
+Subject: [PATCH] Fix: regressions.sh: make parameter passing consistent
+
+---
+ tests/regressions.sh | 24 ++++++++++++------------
+ 1 file changed, 12 insertions(+), 12 deletions(-)
+
+diff --git a/tests/regressions.sh b/tests/regressions.sh
+index 6cfb303..7ab80be 100755
+--- a/tests/regressions.sh
++++ b/tests/regressions.sh
+@@ -32,7 +32,7 @@
+ : ${SBD_USE_DM:="yes"}
+
+ sbd() {
+- LD_PRELOAD=${SBD_PRELOAD} SBD_WATCHDOG_TIMEOUT=5 SBD_DEVICE="${SBD_DEVICE}" SBD_PRELOAD_LOG=${SBD_PRELOAD_LOG} SBD_WATCHDOG_DEV=/dev/watchdog setsid ${SBD_BINARY} -p ${SBD_PIDFILE} $*
++ LD_PRELOAD=${SBD_PRELOAD} SBD_WATCHDOG_TIMEOUT=5 SBD_DEVICE="${SBD_DEVICE}" SBD_PRELOAD_LOG=${SBD_PRELOAD_LOG} SBD_WATCHDOG_DEV=/dev/watchdog setsid ${SBD_BINARY} -p ${SBD_PIDFILE} "$@"
+ }
+
+ sbd_wipe_disk() {
+@@ -98,26 +98,26 @@ sbd_daemon_cleanup() {
+ pkill -TERM --pidfile ${SBD_PIDFILE} 2>/dev/null
+ sleep 5
+ pkill -KILL --pidfile ${SBD_PIDFILE} 2>/dev/null
+- pkill -KILL --parent $(cat ${SBD_PIDFILE} 2>/dev/null) 2>/dev/null
++ pkill -KILL --parent "$(cat ${SBD_PIDFILE} 2>/dev/null)" 2>/dev/null
+ echo > ${SBD_PIDFILE}
+ }
+
+ _ok() {
+- echo -- $@
+- $@
++ echo "-- $*"
++ "$@"
+ rc=$?
+ if [ $rc -ne 0 ]; then
+- echo "$@ failed with $rc"
++ echo "$* failed with $rc"
+ exit $rc
+ fi
+ }
+
+ _no() {
+- echo -- $@
+- $@
++ echo "-- $*"
++ "$@"
+ rc=$?
+ if [ $rc -eq 0 ]; then
+- echo "$@ did NOT fail ($rc)"
++ echo "$* did NOT fail ($rc)"
+ exit $rc
+ fi
+ return 0
+@@ -126,7 +126,7 @@ _no() {
+ _in_log() {
+ grep "$@" ${SBD_PRELOAD_LOG} >/dev/null
+ if [ $? -ne 0 ]; then
+- echo "didn't find '$@' in log:"
++ echo "didn't find '$*' in log:"
+ cat ${SBD_PRELOAD_LOG}
+ sbd_daemon_cleanup
+ exit 1
+@@ -227,10 +227,10 @@ test_stall_inquisitor() {
+ sbd_daemon_cleanup
+ sbd -d ${D[1]} -d ${D[2]} -d ${D[3]} -n test-1 watch
+ sleep 10
+- _ok kill -0 $(cat ${SBD_PIDFILE})
+- kill -STOP $(cat ${SBD_PIDFILE})
++ _ok kill -0 "$(cat ${SBD_PIDFILE})"
++ kill -STOP "$(cat ${SBD_PIDFILE})"
+ sleep 10
+- kill -CONT $(cat ${SBD_PIDFILE}) 2>/dev/null
++ kill -CONT "$(cat ${SBD_PIDFILE})" 2>/dev/null
+ _in_log "watchdog fired"
+ }
+
+--
+1.8.3.1
+
diff --git a/0001-Refactor-fail-earlier-on-invalid-servants.patch b/0001-Refactor-fail-earlier-on-invalid-servants.patch
deleted file mode 100644
index cb71002..0000000
--- a/0001-Refactor-fail-earlier-on-invalid-servants.patch
+++ /dev/null
@@ -1,142 +0,0 @@
-From 8301cbafed191f30656a22876941cc7c9189b623 Mon Sep 17 00:00:00 2001
-From: Klaus Wenninger <klaus.wenninger(a)aon.at>
-Date: Thu, 31 Jan 2019 14:42:01 +0100
-Subject: [PATCH] Refactor: fail earlier on invalid servants
-
----
- src/sbd-inquisitor.c | 51 ++++++++++++++++++++++++++++++++-------------------
- src/sbd-md.c | 7 +------
- src/sbd.h | 2 +-
- 3 files changed, 34 insertions(+), 26 deletions(-)
-
-diff --git a/src/sbd-inquisitor.c b/src/sbd-inquisitor.c
-index 8e0bc87..9be6c99 100644
---- a/src/sbd-inquisitor.c
-+++ b/src/sbd-inquisitor.c
-@@ -42,19 +42,36 @@ void recruit_servant(const char *devname, pid_t pid)
- struct servants_list_item *newbie;
-
- if (lookup_servant_by_dev(devname)) {
-- cl_log(LOG_DEBUG, "Servant %s already exists", devname);
-- return;
-+ cl_log(LOG_DEBUG, "Servant %s already exists", devname);
-+ return;
- }
-
- newbie = malloc(sizeof(*newbie));
-- if (!newbie) {
-- fprintf(stderr, "malloc failed in recruit_servant.\n");
-- exit(1);
-+ if (newbie) {
-+ memset(newbie, 0, sizeof(*newbie));
-+ newbie->devname = strdup(devname);
-+ newbie->pid = pid;
-+ newbie->first_start = 1;
-+ }
-+ if (!newbie || !newbie->devname) {
-+ fprintf(stderr, "heap allocation failed in recruit_servant.\n");
-+ exit(1);
-+ }
-+
-+ /* some sanity-check on our newbie */
-+ if (sbd_is_disk(newbie)) {
-+ cl_log(LOG_INFO, "Monitoring %s", devname);
-+ disk_count++;
-+ } else if (sbd_is_pcmk(newbie) || sbd_is_cluster(newbie)) {
-+ /* alive just after pcmk and cluster servants have shown up */
-+ newbie->outdated = 1;
-+ } else {
-+ /* toss our newbie */
-+ cl_log(LOG_ERR, "Refusing to recruit unrecognized servant %s", devname);
-+ free((void *) newbie->devname);
-+ free(newbie);
-+ return;
- }
-- memset(newbie, 0, sizeof(*newbie));
-- newbie->devname = strdup(devname);
-- newbie->pid = pid;
-- newbie->first_start = 1;
-
- if (!s) {
- servants_leader = newbie;
-@@ -65,12 +82,6 @@ void recruit_servant(const char *devname, pid_t pid)
- }
-
- servant_count++;
-- if(sbd_is_disk(newbie)) {
-- cl_log(LOG_INFO, "Monitoring %s", devname);
-- disk_count++;
-- } else {
-- newbie->outdated = 1;
-- }
- }
-
- int assign_servant(const char* devname, functionp_t functionp, int mode, const void* argp)
-@@ -148,7 +159,7 @@ void servant_start(struct servants_list_item *s)
- if (sbd_is_disk(s)) {
- #if SUPPORT_SHARED_DISK
- DBGLOG(LOG_INFO, "Starting servant for device %s", s->devname);
-- s->pid = assign_servant(s->devname, servant, start_mode, s);
-+ s->pid = assign_servant(s->devname, servant_md, start_mode, s);
- #else
- cl_log(LOG_ERR, "Shared disk functionality not supported");
- return;
-@@ -785,12 +796,14 @@ parse_device_line(const char *line)
-
- if (lpc > last) {
- entry = calloc(1, 1 + lpc - last);
-+ if (!entry) {
-+ fprintf(stderr, "heap allocation failed parsing device-line.\n");
-+ exit(1);
-+ }
- rc = sscanf(line + last, "%[^;]", entry);
- }
-
-- if (entry == NULL) {
-- /* Skip */
-- } else if (rc != 1) {
-+ if (rc != 1) {
- cl_log(LOG_WARNING, "Could not parse (%d %d): %s", last, lpc, line + last);
- } else {
- cl_log(LOG_DEBUG, "Adding '%s'", entry);
-diff --git a/src/sbd-md.c b/src/sbd-md.c
-index 579d273..ba2c34d 100644
---- a/src/sbd-md.c
-+++ b/src/sbd-md.c
-@@ -1031,7 +1031,7 @@ static int servant_check_timeout_inconsistent(struct sector_header_s *hdr)
- return 0;
- }
-
--int servant(const char *diskname, int mode, const void* argp)
-+int servant_md(const char *diskname, int mode, const void* argp)
- {
- struct sector_mbox_s *s_mbox = NULL;
- struct sector_node_s *s_node = NULL;
-@@ -1046,11 +1046,6 @@ int servant(const char *diskname, int mode, const void* argp)
- char uuid[37];
- const struct servants_list_item *s = argp;
-
-- if (!diskname) {
-- cl_log(LOG_ERR, "Empty disk name %s.", diskname);
-- return -1;
-- }
--
- cl_log(LOG_INFO, "Servant starting for device %s", diskname);
-
- /* Block most of the signals */
-diff --git a/src/sbd.h b/src/sbd.h
-index 386c85c..6fe07f9 100644
---- a/src/sbd.h
-+++ b/src/sbd.h
-@@ -175,7 +175,7 @@ int ping_via_slots(const char *name, struct servants_list_item *servants);
- int dump_headers(struct servants_list_item *servants);
- unsigned long get_first_msgwait(struct servants_list_item *servants);
- int messenger(const char *name, const char *msg, struct servants_list_item *servants);
--int servant(const char *diskname, int mode, const void* argp);
-+int servant_md(const char *diskname, int mode, const void* argp);
- #endif
-
- int servant_pcmk(const char *diskname, int mode, const void* argp);
---
-1.8.3.1
-
diff --git a/0002-Doc-add-environment-section-to-man-page.patch b/0002-Doc-add-environment-section-to-man-page.patch
new file mode 100644
index 0000000..2ad9556
--- /dev/null
+++ b/0002-Doc-add-environment-section-to-man-page.patch
@@ -0,0 +1,1459 @@
+From 9dd82a8b4daa5a7bd8ab3afa43b081f212efb1ac Mon Sep 17 00:00:00 2001
+From: Klaus Wenninger <klaus.wenninger(a)aon.at>
+Date: Wed, 29 Jan 2020 20:34:18 +0100
+Subject: [PATCH] Doc: add environment section to man-page
+
+Environment section is auto-generated from sbd.sysconfig.
+---
+ .gitignore | 1 +
+ Makefile.am | 6 +-
+ README.md | 3 +-
+ man/Makefile.am | 8 +-
+ man/sbd.8.pod | 668 -----------------------------------------------------
+ man/sbd.8.pod.in | 675 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ src/sbd.sysconfig | 3 +-
+ 7 files changed, 690 insertions(+), 674 deletions(-)
+ delete mode 100644 man/sbd.8.pod
+ create mode 100644 man/sbd.8.pod.in
+
+diff --git a/Makefile.am b/Makefile.am
+index 1c29f75..bd4346d 100644
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -9,8 +9,8 @@ TARFILE = $(distdir).tar.gz
+ DIST_ARCHIVES = $(TARFILE)
+ KEEP_EXISTING_TAR = no
+ INJECT_GIT_COMMIT = yes
+-DISTCLEANFILES = sbd-* sbd-*/
+ CLEANFILES = *.rpm *.tar.* sbd-*
++DISTCLEANFILES = sbd-* sbd-*/
+
+ RPM_ROOT = $(shell pwd)
+ RPM_OPTS = --define "_sourcedir $(RPM_ROOT)" \
+@@ -31,7 +31,7 @@ export SBD_BINARY := src/sbd
+ export SBD_PRELOAD := tests/.libs/libsbdtestbed.so
+ export SBD_USE_DM := no
+
+-EXTRA_DIST = sbd.spec tests/regressions.sh
++EXTRA_DIST = sbd.spec tests/regressions.sh man/sbd.8.pod.in
+
+ export:
+ rm -f $(PACKAGE)-HEAD.tar.*
+@@ -43,7 +43,7 @@ export:
+ echo `date`: Using existing tarball: $(TARFILE); \
+ else \
+ rm -f $(PACKAGE).tar.*; \
+- (git archive --prefix=$(distdir)/ $(shell echo $(TAG)|cut -f1 -d-) || tar -c --transform="s,^,$(distdir)/," --exclude="*.tar.*" --exclude="$(distdir)" --exclude="*.o" --exclude="*.8" --exclude="config.*" --exclude="libtool" --exclusive="ltmain.sh*" --exclude="Makefile" --exclude="Makefile.in" --exclude="stamp-*" --exclude="*.service" --exclude="sbd" --exclude="*.m4" --exclude="*.cache" --exclude="configure" --exclude="*.list" --exclude="depcomp" --exclude="install-sh" --exclude="missing" --exclude="compile" --exclude="sbd.sh" --exclude="~" --exclude="*.swp" --exclude="*.patch" --exclude="*.diff" --exclude="*.orig" --exclude="*.rej" --exclude="*.rpm" --exclude=".deps" --exclude="test-driver" *) | gzip > $(TARFILE); \
++ (git archive --prefix=$(distdir)/ $(shell echo $(TAG)|cut -f1 -d-) || tar -c --transform="s,^,$(distdir)/," --exclude="*.tar.*" --exclude="$(distdir)" --exclude="*.o" --exclude="*.8" --exclude="config.*" --exclude="libtool" --exclude="ltmain.sh*" --exclude="Makefile" --exclude="Makefile.in" --exclude="stamp-*" --exclude="*.service" --exclude="sbd" --exclude="*.m4" --exclude="*.cache" --exclude="configure" --exclude="*.list" --exclude="depcomp" --exclude="install-sh" --exclude="missing" --exclude="compile" --exclude="sbd.sh" --exclude="~" --exclude="*.swp" --exclude="*.patch" --exclude="*.diff" --exclude="*.orig" --exclude="*.rej" --exclude="*.rpm" --exclude="*.pod" --exclude=".deps" --exclude="test-driver" *) | gzip > $(TARFILE); \
+ if test -n "$$(git status -s)" || test "$(INJECT_GIT_COMMIT)" = "yes"; then \
+ if test -n "$$(git status -s)"; then git diff HEAD --name-only|grep -v "^\."|xargs -n1 git diff HEAD > uncommitted.diff; fi; \
+ rm -rf $(distdir); tar -xzf $(TARFILE); rm $(TARFILE); \
+diff --git a/README.md b/README.md
+index d02a8bd..42a3fde 100644
+--- a/README.md
++++ b/README.md
+@@ -5,5 +5,6 @@ A highly reliable fencing or Shoot-the-other-node-in-the-head (STONITH) mechanis
+ The component works with Pacemaker clusters, and is currently known to
+ compile and function on Pacemaker 1.1.7+ and corosync 1.4.x or 2.3.x.
+
+-Please see https://github.com/l-mb/sbd/blob/master/man/sbd.8.pod for the full documentation.
++Please see https://github.com/clusterlabs/sbd/blob/master/man/sbd.8.pod.in &
++https://github.com/clusterlabs/sbd/blob/master/src/sbd.sysconfig for the full documentation.
+
+diff --git a/man/Makefile.am b/man/Makefile.am
+index 3f89085..995712d 100644
+--- a/man/Makefile.am
++++ b/man/Makefile.am
+@@ -1,6 +1,12 @@
+ dist_man_MANS = sbd.8
+
+-EXTRA_DIST = sbd.8.pod
++DISTCLEANFILES = sbd.8.pod sbd.8 sbd.sysconfig.pod
++
++sbd.sysconfig.pod: ../src/sbd.sysconfig
++ sed -r -n -e "s/^## Type: (.*)/Allows C<\1>/;t type;s/^## Default: (.*)/ defaulting to C<\1>/;t default;s/^#*(.*)=.*/=item B<\1>\n/;t variable;s/^#*//;s/^ *//;H;d;:type;h;d;:default;H;x;s/\n//;x;d;:variable;G;p" $< > $@
++
++sbd.8.pod: sbd.8.pod.in sbd.sysconfig.pod
++ sed -e "s/@environment_section@//;t insert;p;d;:insert;rsbd.sysconfig.pod" $< > $@
+
+ sbd.8: sbd.8.pod
+ @POD2MAN@ -s 8 -c "STONITH Block Device" -r "SBD" -n "SBD" $< $@
+diff --git a/man/sbd.8.pod b/man/sbd.8.pod
+deleted file mode 100644
+index 377c579..0000000
+--- a/man/sbd.8.pod
++++ /dev/null
+@@ -1,668 +0,0 @@
+-=head1 NAME
+-
+-sbd - STONITH Block Device daemon
+-
+-=head1 SYNOPSIS
+-
+-sbd <-d F</dev/...>> [options] C<command>
+-
+-=head1 SUMMARY
+-
+-SBD provides a node fencing mechanism (Shoot the other node in the head,
+-STONITH) for Pacemaker-based clusters through the exchange of messages
+-via shared block storage such as for example a SAN, iSCSI, FCoE. This
+-isolates the fencing mechanism from changes in firmware version or
+-dependencies on specific firmware controllers, and it can be used as a
+-STONITH mechanism in all configurations that have reliable shared
+-storage.
+-
+-SBD can also be used without any shared storage. In this mode, the
+-watchdog device will be used to reset the node if it loses quorum, if
+-any monitored daemon is lost and not recovered or if Pacemaker decides
+-that the node requires fencing.
+-
+-The F<sbd> binary implements both the daemon that watches the message
+-slots as well as the management tool for interacting with the block
+-storage device(s). This mode of operation is specified via the
+-C<command> parameter; some of these modes take additional parameters.
+-
+-To use SBD with shared storage, you must first C<create> the messaging
+-layout on one to three block devices. Second, configure
+-F</etc/sysconfig/sbd> to list those devices (and possibly adjust other
+-options), and restart the cluster stack on each node to ensure that
+-C<sbd> is started. Third, configure the C<external/sbd> fencing
+-resource in the Pacemaker CIB.
+-
+-Each of these steps is documented in more detail below the description
+-of the command options.
+-
+-C<sbd> can only be used as root.
+-
+-=head2 GENERAL OPTIONS
+-
+-=over
+-
+-=item B<-d> F</dev/...>
+-
+-Specify the block device(s) to be used. If you have more than one,
+-specify this option up to three times. This parameter is mandatory for
+-all modes, since SBD always needs a block device to interact with.
+-
+-This man page uses F</dev/sda1>, F</dev/sdb1>, and F</dev/sdc1> as
+-example device names for brevity. However, in your production
+-environment, you should instead always refer to them by using the long,
+-stable device name (e.g.,
+-F</dev/disk/by-id/dm-uuid-part1-mpath-3600508b400105b5a0001500000250000>).
+-
+-=item B<-v|-vv|-vvv>
+-
+-Enable verbose|debug|debug-library logging (optional)
+-
+-=item B<-h>
+-
+-Display a concise summary of C<sbd> options.
+-
+-=item B<-n> I<node>
+-
+-Set local node name; defaults to C<uname -n>. This should not need to be
+-set.
+-
+-=item B<-R>
+-
+-Do B<not> enable realtime priority. By default, C<sbd> runs at realtime
+-priority, locks itself into memory, and also acquires highest IO
+-priority to protect itself against interference from other processes on
+-the system. This is a debugging-only option.
+-
+-=item B<-I> I<N>
+-
+-Async IO timeout (defaults to 3 seconds, optional). You should not need
+-to adjust this unless your IO setup is really very slow.
+-
+-(In daemon mode, the watchdog is refreshed when the majority of devices
+-could be read within this time.)
+-
+-=back
+-
+-=head2 create
+-
+-Example usage:
+-
+- sbd -d /dev/sdc2 -d /dev/sdd3 create
+-
+-If you specify the I<create> command, sbd will write a metadata header
+-to the device(s) specified and also initialize the messaging slots for
+-up to 255 nodes.
+-
+-B<Warning>: This command will not prompt for confirmation. Roughly the
+-first megabyte of the specified block device(s) will be overwritten
+-immediately and without backup.
+-
+-This command accepts a few options to adjust the default timings that
+-are written to the metadata (to ensure they are identical across all
+-nodes accessing the device).
+-
+-=over
+-
+-=item B<-1> I<N>
+-
+-Set watchdog timeout to N seconds. This depends mostly on your storage
+-latency; the majority of devices must be successfully read within this
+-time, or else the node will self-fence.
+-
+-If your sbd device(s) reside on a multipath setup or iSCSI, this should
+-be the time required to detect a path failure. You may be able to reduce
+-this if your device outages are independent, or if you are using the
+-Pacemaker integration.
+-
+-=item B<-2> I<N>
+-
+-Set slot allocation timeout to N seconds. You should not need to tune
+-this.
+-
+-=item B<-3> I<N>
+-
+-Set daemon loop timeout to N seconds. You should not need to tune this.
+-
+-=item B<-4> I<N>
+-
+-Set I<msgwait> timeout to N seconds. This should be twice the I<watchdog>
+-timeout. This is the time after which a message written to a node's slot
+-will be considered delivered. (Or long enough for the node to detect
+-that it needed to self-fence.)
+-
+-This also affects the I<stonith-timeout> in Pacemaker's CIB; see below.
+-
+-=back
+-
+-=head2 list
+-
+-Example usage:
+-
+- # sbd -d /dev/sda1 list
+- 0 hex-0 clear
+- 1 hex-7 clear
+- 2 hex-9 clear
+-
+-List all allocated slots on device, and messages. You should see all
+-cluster nodes that have ever been started against this device. Nodes
+-that are currently running should have a I<clear> state; nodes that have
+-been fenced, but not yet restarted, will show the appropriate fencing
+-message.
+-
+-=head2 dump
+-
+-Example usage:
+-
+- # sbd -d /dev/sda1 dump
+- ==Dumping header on disk /dev/sda1
+- Header version : 2
+- Number of slots : 255
+- Sector size : 512
+- Timeout (watchdog) : 15
+- Timeout (allocate) : 2
+- Timeout (loop) : 1
+- Timeout (msgwait) : 30
+- ==Header on disk /dev/sda1 is dumped
+-
+-Dump meta-data header from device.
+-
+-=head2 watch
+-
+-Example usage:
+-
+- sbd -d /dev/sdc2 -d /dev/sdd3 -P watch
+-
+-This command will make C<sbd> start in daemon mode. It will constantly monitor
+-the message slot of the local node for incoming messages, reachability, and
+-optionally take Pacemaker's state into account.
+-
+-C<sbd> B<must> be started on boot before the cluster stack! See below
+-for enabling this according to your boot environment.
+-
+-The options for this mode are rarely specified directly on the
+-commandline directly, but most frequently set via F</etc/sysconfig/sbd>.
+-
+-It also constantly monitors connectivity to the storage device, and
+-self-fences in case the partition becomes unreachable, guaranteeing that it
+-does not disconnect from fencing messages.
+-
+-A node slot is automatically allocated on the device(s) the first time
+-the daemon starts watching the device; hence, manual allocation is not
+-usually required.
+-
+-If a watchdog is used together with the C<sbd> as is strongly
+-recommended, the watchdog is activated at initial start of the sbd
+-daemon. The watchdog is refreshed every time the majority of SBD devices
+-has been successfully read. Using a watchdog provides additional
+-protection against C<sbd> crashing.
+-
+-If the Pacemaker integration is activated, C<sbd> will B<not> self-fence
+-if device majority is lost, if:
+-
+-=over
+-
+-=item 1.
+-
+-The partition the node is in is still quorate according to the CIB;
+-
+-=item 2.
+-
+-it is still quorate according to Corosync's node count;
+-
+-=item 3.
+-
+-the node itself is considered online and healthy by Pacemaker.
+-
+-=back
+-
+-This allows C<sbd> to survive temporary outages of the majority of
+-devices. However, while the cluster is in such a degraded state, it can
+-neither successfully fence nor be shutdown cleanly (as taking the
+-cluster below the quorum threshold will immediately cause all remaining
+-nodes to self-fence). In short, it will not tolerate any further faults.
+-Please repair the system before continuing.
+-
+-There is one C<sbd> process that acts as a master to which all watchers
+-report; one per device to monitor the node's slot; and, optionally, one
+-that handles the Pacemaker integration.
+-
+-=over
+-
+-=item B<-W>
+-
+-Enable or disable use of the system watchdog to protect against the sbd
+-processes failing and the node being left in an undefined state. Specify
+-this once to enable, twice to disable.
+-
+-Defaults to I<enabled>.
+-
+-=item B<-w> F</dev/watchdog>
+-
+-This can be used to override the default watchdog device used and should not
+-usually be necessary.
+-
+-=item B<-p> F</var/run/sbd.pid>
+-
+-This option can be used to specify a pidfile for the main sbd process.
+-
+-=item B<-F> I<N>
+-
+-Number of failures before a failing servant process will not be restarted
+-immediately until the dampening delay has expired. If set to zero, servants
+-will be restarted immediately and indefinitely. If set to one, a failed
+-servant will be restarted once every B<-t> seconds. If set to a different
+-value, the servant will be restarted that many times within the dampening
+-period and then delay.
+-
+-Defaults to I<1>.
+-
+-=item B<-t> I<N>
+-
+-Dampening delay before faulty servants are restarted. Combined with C<-F 1>,
+-the most logical way to tune the restart frequency of servant processes.
+-Default is 5 seconds.
+-
+-If set to zero, processes will be restarted indefinitely and immediately.
+-
+-=item B<-P>
+-
+-Enable Pacemaker integration which checks Pacemaker quorum and node health.
+-Specify this once to enable, twice to disable.
+-
+-Defaults to I<enabled>.
+-
+-=item B<-S> I<N>
+-
+-Set the start mode. (Defaults to I<0>.)
+-
+-If this is set to zero, sbd will always start up unconditionally,
+-regardless of whether the node was previously fenced or not.
+-
+-If set to one, sbd will only start if the node was previously shutdown
+-cleanly (as indicated by an exit request message in the slot), or if the
+-slot is empty. A reset, crashdump, or power-off request in any slot will
+-halt the start up.
+-
+-This is useful to prevent nodes from rejoining if they were faulty. The
+-node must be manually "unfenced" by sending an empty message to it:
+-
+- sbd -d /dev/sda1 message node1 clear
+-
+-=item B<-s> I<N>
+-
+-Set the start-up wait time for devices. (Defaults to I<120>.)
+-
+-Dynamic block devices such as iSCSI might not be fully initialized and
+-present yet. This allows one to set a timeout for waiting for devices to
+-appear on start-up. If set to 0, start-up will be aborted immediately if
+-no devices are available.
+-
+-=item B<-Z>
+-
+-Enable trace mode. B<Warning: this is unsafe for production, use at your
+-own risk!> Specifying this once will turn all reboots or power-offs, be
+-they caused by self-fence decisions or messages, into a crashdump.
+-Specifying this twice will just log them but not continue running.
+-
+-=item B<-T>
+-
+-By default, the daemon will set the watchdog timeout as specified in the
+-device metadata. However, this does not work for every watchdog device.
+-In this case, you must manually ensure that the watchdog timeout used by
+-the system correctly matches the SBD settings, and then specify this
+-option to allow C<sbd> to continue with start-up.
+-
+-=item B<-5> I<N>
+-
+-Warn if the time interval for tickling the watchdog exceeds this many seconds.
+-Since the node is unable to log the watchdog expiry (it reboots immediately
+-without a chance to write its logs to disk), this is very useful for getting
+-an indication that the watchdog timeout is too short for the IO load of the
+-system.
+-
+-Default is 3 seconds, set to zero to disable.
+-
+-=item B<-C> I<N>
+-
+-Watchdog timeout to set before crashdumping. If SBD is set to crashdump
+-instead of reboot - either via the trace mode settings or the I<external/sbd>
+-fencing agent's parameter -, SBD will adjust the watchdog timeout to this
+-setting before triggering the dump. Otherwise, the watchdog might trigger and
+-prevent a successful crashdump from ever being written.
+-
+-Set to zero (= default) to disable.
+-
+-=item B<-r> I<N>
+-
+-Actions to be executed when the watchers don't timely report to the sbd
+-master process or one of the watchers detects that the master process
+-has died.
+-
+-Set timeout-action to comma-separated combination of
+-noflush|flush plus reboot|crashdump|off.
+-If just one of both is given the other stays at the default.
+-
+-This doesn't affect actions like off, crashdump, reboot explicitly
+-triggered via message slots.
+-And it does as well not configure the action a watchdog would
+-trigger should it run off (there is no generic interface).
+-
+-Defaults to flush,reboot.
+-
+-=back
+-
+-=head2 allocate
+-
+-Example usage:
+-
+- sbd -d /dev/sda1 allocate node1
+-
+-Explicitly allocates a slot for the specified node name. This should
+-rarely be necessary, as every node will automatically allocate itself a
+-slot the first time it starts up on watch mode.
+-
+-=head2 message
+-
+-Example usage:
+-
+- sbd -d /dev/sda1 message node1 test
+-
+-Writes the specified message to node's slot. This is rarely done
+-directly, but rather abstracted via the C<external/sbd> fencing agent
+-configured as a cluster resource.
+-
+-Supported message types are:
+-
+-=over
+-
+-=item test
+-
+-This only generates a log message on the receiving node and can be used
+-to check if SBD is seeing the device. Note that this could overwrite a
+-fencing request send by the cluster, so should not be used during
+-production.
+-
+-=item reset
+-
+-Reset the target upon receipt of this message.
+-
+-=item off
+-
+-Power-off the target.
+-
+-=item crashdump
+-
+-Cause the target node to crashdump.
+-
+-=item exit
+-
+-This will make the C<sbd> daemon exit cleanly on the target. You should
+-B<not> send this message manually; this is handled properly during
+-shutdown of the cluster stack. Manually stopping the daemon means the
+-node is unprotected!
+-
+-=item clear
+-
+-This message indicates that no real message has been sent to the node.
+-You should not set this manually; C<sbd> will clear the message slot
+-automatically during start-up, and setting this manually could overwrite
+-a fencing message by the cluster.
+-
+-=back
+-
+-=head2 query-watchdog
+-
+-Example usage:
+-
+- sbd query-watchdog
+-
+-Check for available watchdog devices and print some info.
+-
+-B<Warning>: This command will arm the watchdog during query, and if your
+-watchdog refuses disarming (for example, if its kernel module has the
+-'nowayout' parameter set) this will reset your system.
+-
+-=head2 test-watchdog
+-
+-Example usage:
+-
+- sbd test-watchdog [-w /dev/watchdog3]
+-
+-Test specified watchdog device (/dev/watchdog by default).
+-
+-B<Warning>: This command will arm the watchdog and have your system reset
+-in case your watchdog is working properly! If issued from an interactive
+-session, it will prompt for confirmation.
+-
+-=head1 Base system configuration
+-
+-=head2 Configure a watchdog
+-
+-It is highly recommended that you configure your Linux system to load a
+-watchdog driver with hardware assistance (as is available on most modern
+-systems), such as I<hpwdt>, I<iTCO_wdt>, or others. As a fall-back, you
+-can use the I<softdog> module.
+-
+-No other software must access the watchdog timer; it can only be
+-accessed by one process at any given time. Some hardware vendors ship
+-systems management software that use the watchdog for system resets
+-(f.e. HP ASR daemon). Such software has to be disabled if the watchdog
+-is to be used by SBD.
+-
+-=head2 Choosing and initializing the block device(s)
+-
+-First, you have to decide if you want to use one, two, or three devices.
+-
+-If you are using multiple ones, they should reside on independent
+-storage setups. Putting all three of them on the same logical unit for
+-example would not provide any additional redundancy.
+-
+-The SBD device can be connected via Fibre Channel, Fibre Channel over
+-Ethernet, or even iSCSI. Thus, an iSCSI target can become a sort-of
+-network-based quorum server; the advantage is that it does not require
+-a smart host at your third location, just block storage.
+-
+-The SBD partitions themselves B<must not> be mirrored (via MD,
+-DRBD, or the storage layer itself), since this could result in a
+-split-mirror scenario. Nor can they reside on cLVM2 volume groups, since
+-they must be accessed by the cluster stack before it has started the
+-cLVM2 daemons; hence, these should be either raw partitions or logical
+-units on (multipath) storage.
+-
+-The block device(s) must be accessible from all nodes. (While it is not
+-necessary that they share the same path name on all nodes, this is
+-considered a very good idea.)
+-
+-SBD will only use about one megabyte per device, so you can easily
+-create a small partition, or very small logical units. (The size of the
+-SBD device depends on the block size of the underlying device. Thus, 1MB
+-is fine on plain SCSI devices and SAN storage with 512 byte blocks. On
+-the IBM s390x architecture in particular, disks default to 4k blocks,
+-and thus require roughly 4MB.)
+-
+-The number of devices will affect the operation of SBD as follows:
+-
+-=over
+-
+-=item One device
+-
+-In its most simple implementation, you use one device only. This is
+-appropriate for clusters where all your data is on the same shared
+-storage (with internal redundancy) anyway; the SBD device does not
+-introduce an additional single point of failure then.
+-
+-If the SBD device is not accessible, the daemon will fail to start and
+-inhibit startup of cluster services.
+-
+-=item Two devices
+-
+-This configuration is a trade-off, primarily aimed at environments where
+-host-based mirroring is used, but no third storage device is available.
+-
+-SBD will not commit suicide if it loses access to one mirror leg; this
+-allows the cluster to continue to function even in the face of one outage.
+-
+-However, SBD will not fence the other side while only one mirror leg is
+-available, since it does not have enough knowledge to detect an asymmetric
+-split of the storage. So it will not be able to automatically tolerate a
+-second failure while one of the storage arrays is down. (Though you
+-can use the appropriate crm command to acknowledge the fence manually.)
+-
+-It will not start unless both devices are accessible on boot.
+-
+-=item Three devices
+-
+-In this most reliable and recommended configuration, SBD will only
+-self-fence if more than one device is lost; hence, this configuration is
+-resilient against temporary single device outages (be it due to failures
+-or maintenance). Fencing messages can still be successfully relayed if
+-at least two devices remain accessible.
+-
+-This configuration is appropriate for more complex scenarios where
+-storage is not confined to a single array. For example, host-based
+-mirroring solutions could have one SBD per mirror leg (not mirrored
+-itself), and an additional tie-breaker on iSCSI.
+-
+-It will only start if at least two devices are accessible on boot.
+-
+-=back
+-
+-After you have chosen the devices and created the appropriate partitions
+-and perhaps multipath alias names to ease management, use the C<sbd create>
+-command described above to initialize the SBD metadata on them.
+-
+-=head3 Sharing the block device(s) between multiple clusters
+-
+-It is possible to share the block devices between multiple clusters,
+-provided the total number of nodes accessing them does not exceed I<255>
+-nodes, and they all must share the same SBD timeouts (since these are
+-part of the metadata).
+-
+-If you are using multiple devices this can reduce the setup overhead
+-required. However, you should B<not> share devices between clusters in
+-different security domains.
+-
+-=head2 Configure SBD to start on boot
+-
+-On systems using C<sysvinit>, the C<openais> or C<corosync> system
+-start-up scripts must handle starting or stopping C<sbd> as required
+-before starting the rest of the cluster stack.
+-
+-For C<systemd>, sbd simply has to be enabled using
+-
+- systemctl enable sbd.service
+-
+-The daemon is brought online on each node before corosync and Pacemaker
+-are started, and terminated only after all other cluster components have
+-been shut down - ensuring that cluster resources are never activated
+-without SBD supervision.
+-
+-=head2 Configuration via sysconfig
+-
+-The system instance of C<sbd> is configured via F</etc/sysconfig/sbd>.
+-In this file, you must specify the device(s) used, as well as any
+-options to pass to the daemon:
+-
+- SBD_DEVICE="/dev/sda1;/dev/sdb1;/dev/sdc1"
+- SBD_PACEMAKER="true"
+-
+-C<sbd> will fail to start if no C<SBD_DEVICE> is specified. See the
+-installed template for more options that can be configured here.
+-In general configuration done via parameters takes precedence over
+-the configuration from the configuration file.
+-
+-=head2 Testing the sbd installation
+-
+-After a restart of the cluster stack on this node, you can now try
+-sending a test message to it as root, from this or any other node:
+-
+- sbd -d /dev/sda1 message node1 test
+-
+-The node will acknowledge the receipt of the message in the system logs:
+-
+- Aug 29 14:10:00 node1 sbd: [13412]: info: Received command test from node2
+-
+-This confirms that SBD is indeed up and running on the node, and that it
+-is ready to receive messages.
+-
+-Make B<sure> that F</etc/sysconfig/sbd> is identical on all cluster
+-nodes, and that all cluster nodes are running the daemon.
+-
+-=head1 Pacemaker CIB integration
+-
+-=head2 Fencing resource
+-
+-Pacemaker can only interact with SBD to issue a node fence if there is a
+-configure fencing resource. This should be a primitive, not a clone, as
+-follows:
+-
+- primitive fencing-sbd stonith:external/sbd \
+- params pcmk_delay_max=30
+-
+-This will automatically use the same devices as configured in
+-F</etc/sysconfig/sbd>.
+-
+-While you should not configure this as a clone (as Pacemaker will register
+-the fencing device on each node automatically), the I<pcmk_delay_max>
+-setting enables random fencing delay which ensures, in a scenario where a
+-split-brain scenario did occur in a two node cluster, that one of the nodes
+-has a better chance to survive to avoid double fencing.
+-
+-SBD also supports turning the reset request into a crash request, which
+-may be helpful for debugging if you have kernel crashdumping configured;
+-then, every fence request will cause the node to dump core. You can
+-enable this via the C<crashdump="true"> parameter on the fencing
+-resource. This is B<not> recommended for production use, but only for
+-debugging phases.
+-
+-=head2 General cluster properties
+-
+-You must also enable STONITH in general, and set the STONITH timeout to
+-be at least twice the I<msgwait> timeout you have configured, to allow
+-enough time for the fencing message to be delivered. If your I<msgwait>
+-timeout is 60 seconds, this is a possible configuration:
+-
+- property stonith-enabled="true"
+- property stonith-timeout="120s"
+-
+-B<Caution>: if I<stonith-timeout> is too low for I<msgwait> and the
+-system overhead, sbd will never be able to successfully complete a fence
+-request. This will create a fencing loop.
+-
+-Note that the sbd fencing agent will try to detect this and
+-automatically extend the I<stonith-timeout> setting to a reasonable
+-value, on the assumption that sbd modifying your configuration is
+-preferable to not fencing.
+-
+-=head1 Management tasks
+-
+-=head2 Recovering from temporary SBD device outage
+-
+-If you have multiple devices, failure of a single device is not immediately
+-fatal. C<sbd> will retry to restart the monitor for the device every 5
+-seconds by default. However, you can tune this via the options to the
+-I<watch> command.
+-
+-In case you wish the immediately force a restart of all currently
+-disabled monitor processes, you can send a I<SIGUSR1> to the SBD
+-I<inquisitor> process.
+-
+-
+-=head1 LICENSE
+-
+-Copyright (C) 2008-2013 Lars Marowsky-Bree
+-
+-This program is free software; you can redistribute it and/or
+-modify it under the terms of the GNU General Public
+-License as published by the Free Software Foundation; either
+-version 2 of the License, or (at your option) any later version.
+-
+-This software is distributed in the hope that it will be useful,
+-but WITHOUT ANY WARRANTY; without even the implied warranty of
+-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+-General Public License for more details.
+-
+-For details see the GNU General Public License at
+-http://www.gnu.org/licenses/gpl-2.0.html (version 2) and/or
+-http://www.gnu.org/licenses/gpl.html (the newest as per "any later").
+diff --git a/man/sbd.8.pod.in b/man/sbd.8.pod.in
+new file mode 100644
+index 0000000..ff89c82
+--- /dev/null
++++ b/man/sbd.8.pod.in
+@@ -0,0 +1,675 @@
++=head1 NAME
++
++sbd - STONITH Block Device daemon
++
++=head1 SYNOPSIS
++
++sbd <-d F</dev/...>> [options] C<command>
++
++=head1 SUMMARY
++
++SBD provides a node fencing mechanism (Shoot the other node in the head,
++STONITH) for Pacemaker-based clusters through the exchange of messages
++via shared block storage such as for example a SAN, iSCSI, FCoE. This
++isolates the fencing mechanism from changes in firmware version or
++dependencies on specific firmware controllers, and it can be used as a
++STONITH mechanism in all configurations that have reliable shared
++storage.
++
++SBD can also be used without any shared storage. In this mode, the
++watchdog device will be used to reset the node if it loses quorum, if
++any monitored daemon is lost and not recovered or if Pacemaker decides
++that the node requires fencing.
++
++The F<sbd> binary implements both the daemon that watches the message
++slots as well as the management tool for interacting with the block
++storage device(s). This mode of operation is specified via the
++C<command> parameter; some of these modes take additional parameters.
++
++To use SBD with shared storage, you must first C<create> the messaging
++layout on one to three block devices. Second, configure
++F</etc/sysconfig/sbd> to list those devices (and possibly adjust other
++options), and restart the cluster stack on each node to ensure that
++C<sbd> is started. Third, configure the C<external/sbd> fencing
++resource in the Pacemaker CIB.
++
++Each of these steps is documented in more detail below the description
++of the command options.
++
++C<sbd> can only be used as root.
++
++=head2 GENERAL OPTIONS
++
++=over
++
++=item B<-d> F</dev/...>
++
++Specify the block device(s) to be used. If you have more than one,
++specify this option up to three times. This parameter is mandatory for
++all modes, since SBD always needs a block device to interact with.
++
++This man page uses F</dev/sda1>, F</dev/sdb1>, and F</dev/sdc1> as
++example device names for brevity. However, in your production
++environment, you should instead always refer to them by using the long,
++stable device name (e.g.,
++F</dev/disk/by-id/dm-uuid-part1-mpath-3600508b400105b5a0001500000250000>).
++
++=item B<-v|-vv|-vvv>
++
++Enable verbose|debug|debug-library logging (optional)
++
++=item B<-h>
++
++Display a concise summary of C<sbd> options.
++
++=item B<-n> I<node>
++
++Set local node name; defaults to C<uname -n>. This should not need to be
++set.
++
++=item B<-R>
++
++Do B<not> enable realtime priority. By default, C<sbd> runs at realtime
++priority, locks itself into memory, and also acquires highest IO
++priority to protect itself against interference from other processes on
++the system. This is a debugging-only option.
++
++=item B<-I> I<N>
++
++Async IO timeout (defaults to 3 seconds, optional). You should not need
++to adjust this unless your IO setup is really very slow.
++
++(In daemon mode, the watchdog is refreshed when the majority of devices
++could be read within this time.)
++
++=back
++
++=head2 create
++
++Example usage:
++
++ sbd -d /dev/sdc2 -d /dev/sdd3 create
++
++If you specify the I<create> command, sbd will write a metadata header
++to the device(s) specified and also initialize the messaging slots for
++up to 255 nodes.
++
++B<Warning>: This command will not prompt for confirmation. Roughly the
++first megabyte of the specified block device(s) will be overwritten
++immediately and without backup.
++
++This command accepts a few options to adjust the default timings that
++are written to the metadata (to ensure they are identical across all
++nodes accessing the device).
++
++=over
++
++=item B<-1> I<N>
++
++Set watchdog timeout to N seconds. This depends mostly on your storage
++latency; the majority of devices must be successfully read within this
++time, or else the node will self-fence.
++
++If your sbd device(s) reside on a multipath setup or iSCSI, this should
++be the time required to detect a path failure. You may be able to reduce
++this if your device outages are independent, or if you are using the
++Pacemaker integration.
++
++=item B<-2> I<N>
++
++Set slot allocation timeout to N seconds. You should not need to tune
++this.
++
++=item B<-3> I<N>
++
++Set daemon loop timeout to N seconds. You should not need to tune this.
++
++=item B<-4> I<N>
++
++Set I<msgwait> timeout to N seconds. This should be twice the I<watchdog>
++timeout. This is the time after which a message written to a node's slot
++will be considered delivered. (Or long enough for the node to detect
++that it needed to self-fence.)
++
++This also affects the I<stonith-timeout> in Pacemaker's CIB; see below.
++
++=back
++
++=head2 list
++
++Example usage:
++
++ # sbd -d /dev/sda1 list
++ 0 hex-0 clear
++ 1 hex-7 clear
++ 2 hex-9 clear
++
++List all allocated slots on device, and messages. You should see all
++cluster nodes that have ever been started against this device. Nodes
++that are currently running should have a I<clear> state; nodes that have
++been fenced, but not yet restarted, will show the appropriate fencing
++message.
++
++=head2 dump
++
++Example usage:
++
++ # sbd -d /dev/sda1 dump
++ ==Dumping header on disk /dev/sda1
++ Header version : 2
++ Number of slots : 255
++ Sector size : 512
++ Timeout (watchdog) : 15
++ Timeout (allocate) : 2
++ Timeout (loop) : 1
++ Timeout (msgwait) : 30
++ ==Header on disk /dev/sda1 is dumped
++
++Dump meta-data header from device.
++
++=head2 watch
++
++Example usage:
++
++ sbd -d /dev/sdc2 -d /dev/sdd3 -P watch
++
++This command will make C<sbd> start in daemon mode. It will constantly monitor
++the message slot of the local node for incoming messages, reachability, and
++optionally take Pacemaker's state into account.
++
++C<sbd> B<must> be started on boot before the cluster stack! See below
++for enabling this according to your boot environment.
++
++The options for this mode are rarely specified directly on the
++commandline directly, but most frequently set via F</etc/sysconfig/sbd>.
++
++It also constantly monitors connectivity to the storage device, and
++self-fences in case the partition becomes unreachable, guaranteeing that it
++does not disconnect from fencing messages.
++
++A node slot is automatically allocated on the device(s) the first time
++the daemon starts watching the device; hence, manual allocation is not
++usually required.
++
++If a watchdog is used together with the C<sbd> as is strongly
++recommended, the watchdog is activated at initial start of the sbd
++daemon. The watchdog is refreshed every time the majority of SBD devices
++has been successfully read. Using a watchdog provides additional
++protection against C<sbd> crashing.
++
++If the Pacemaker integration is activated, C<sbd> will B<not> self-fence
++if device majority is lost, if:
++
++=over
++
++=item 1.
++
++The partition the node is in is still quorate according to the CIB;
++
++=item 2.
++
++it is still quorate according to Corosync's node count;
++
++=item 3.
++
++the node itself is considered online and healthy by Pacemaker.
++
++=back
++
++This allows C<sbd> to survive temporary outages of the majority of
++devices. However, while the cluster is in such a degraded state, it can
++neither successfully fence nor be shutdown cleanly (as taking the
++cluster below the quorum threshold will immediately cause all remaining
++nodes to self-fence). In short, it will not tolerate any further faults.
++Please repair the system before continuing.
++
++There is one C<sbd> process that acts as a master to which all watchers
++report; one per device to monitor the node's slot; and, optionally, one
++that handles the Pacemaker integration.
++
++=over
++
++=item B<-W>
++
++Enable or disable use of the system watchdog to protect against the sbd
++processes failing and the node being left in an undefined state. Specify
++this once to enable, twice to disable.
++
++Defaults to I<enabled>.
++
++=item B<-w> F</dev/watchdog>
++
++This can be used to override the default watchdog device used and should not
++usually be necessary.
++
++=item B<-p> F</var/run/sbd.pid>
++
++This option can be used to specify a pidfile for the main sbd process.
++
++=item B<-F> I<N>
++
++Number of failures before a failing servant process will not be restarted
++immediately until the dampening delay has expired. If set to zero, servants
++will be restarted immediately and indefinitely. If set to one, a failed
++servant will be restarted once every B<-t> seconds. If set to a different
++value, the servant will be restarted that many times within the dampening
++period and then delay.
++
++Defaults to I<1>.
++
++=item B<-t> I<N>
++
++Dampening delay before faulty servants are restarted. Combined with C<-F 1>,
++the most logical way to tune the restart frequency of servant processes.
++Default is 5 seconds.
++
++If set to zero, processes will be restarted indefinitely and immediately.
++
++=item B<-P>
++
++Enable Pacemaker integration which checks Pacemaker quorum and node health.
++Specify this once to enable, twice to disable.
++
++Defaults to I<enabled>.
++
++=item B<-S> I<N>
++
++Set the start mode. (Defaults to I<0>.)
++
++If this is set to zero, sbd will always start up unconditionally,
++regardless of whether the node was previously fenced or not.
++
++If set to one, sbd will only start if the node was previously shutdown
++cleanly (as indicated by an exit request message in the slot), or if the
++slot is empty. A reset, crashdump, or power-off request in any slot will
++halt the start up.
++
++This is useful to prevent nodes from rejoining if they were faulty. The
++node must be manually "unfenced" by sending an empty message to it:
++
++ sbd -d /dev/sda1 message node1 clear
++
++=item B<-s> I<N>
++
++Set the start-up wait time for devices. (Defaults to I<120>.)
++
++Dynamic block devices such as iSCSI might not be fully initialized and
++present yet. This allows one to set a timeout for waiting for devices to
++appear on start-up. If set to 0, start-up will be aborted immediately if
++no devices are available.
++
++=item B<-Z>
++
++Enable trace mode. B<Warning: this is unsafe for production, use at your
++own risk!> Specifying this once will turn all reboots or power-offs, be
++they caused by self-fence decisions or messages, into a crashdump.
++Specifying this twice will just log them but not continue running.
++
++=item B<-T>
++
++By default, the daemon will set the watchdog timeout as specified in the
++device metadata. However, this does not work for every watchdog device.
++In this case, you must manually ensure that the watchdog timeout used by
++the system correctly matches the SBD settings, and then specify this
++option to allow C<sbd> to continue with start-up.
++
++=item B<-5> I<N>
++
++Warn if the time interval for tickling the watchdog exceeds this many seconds.
++Since the node is unable to log the watchdog expiry (it reboots immediately
++without a chance to write its logs to disk), this is very useful for getting
++an indication that the watchdog timeout is too short for the IO load of the
++system.
++
++Default is 3 seconds, set to zero to disable.
++
++=item B<-C> I<N>
++
++Watchdog timeout to set before crashdumping. If SBD is set to crashdump
++instead of reboot - either via the trace mode settings or the I<external/sbd>
++fencing agent's parameter -, SBD will adjust the watchdog timeout to this
++setting before triggering the dump. Otherwise, the watchdog might trigger and
++prevent a successful crashdump from ever being written.
++
++Set to zero (= default) to disable.
++
++=item B<-r> I<N>
++
++Actions to be executed when the watchers don't timely report to the sbd
++master process or one of the watchers detects that the master process
++has died.
++
++Set timeout-action to comma-separated combination of
++noflush|flush plus reboot|crashdump|off.
++If just one of both is given the other stays at the default.
++
++This doesn't affect actions like off, crashdump, reboot explicitly
++triggered via message slots.
++And it does as well not configure the action a watchdog would
++trigger should it run off (there is no generic interface).
++
++Defaults to flush,reboot.
++
++=back
++
++=head2 allocate
++
++Example usage:
++
++ sbd -d /dev/sda1 allocate node1
++
++Explicitly allocates a slot for the specified node name. This should
++rarely be necessary, as every node will automatically allocate itself a
++slot the first time it starts up on watch mode.
++
++=head2 message
++
++Example usage:
++
++ sbd -d /dev/sda1 message node1 test
++
++Writes the specified message to node's slot. This is rarely done
++directly, but rather abstracted via the C<external/sbd> fencing agent
++configured as a cluster resource.
++
++Supported message types are:
++
++=over
++
++=item test
++
++This only generates a log message on the receiving node and can be used
++to check if SBD is seeing the device. Note that this could overwrite a
++fencing request send by the cluster, so should not be used during
++production.
++
++=item reset
++
++Reset the target upon receipt of this message.
++
++=item off
++
++Power-off the target.
++
++=item crashdump
++
++Cause the target node to crashdump.
++
++=item exit
++
++This will make the C<sbd> daemon exit cleanly on the target. You should
++B<not> send this message manually; this is handled properly during
++shutdown of the cluster stack. Manually stopping the daemon means the
++node is unprotected!
++
++=item clear
++
++This message indicates that no real message has been sent to the node.
++You should not set this manually; C<sbd> will clear the message slot
++automatically during start-up, and setting this manually could overwrite
++a fencing message by the cluster.
++
++=back
++
++=head2 query-watchdog
++
++Example usage:
++
++ sbd query-watchdog
++
++Check for available watchdog devices and print some info.
++
++B<Warning>: This command will arm the watchdog during query, and if your
++watchdog refuses disarming (for example, if its kernel module has the
++'nowayout' parameter set) this will reset your system.
++
++=head2 test-watchdog
++
++Example usage:
++
++ sbd test-watchdog [-w /dev/watchdog3]
++
++Test specified watchdog device (/dev/watchdog by default).
++
++B<Warning>: This command will arm the watchdog and have your system reset
++in case your watchdog is working properly! If issued from an interactive
++session, it will prompt for confirmation.
++
++=head1 Base system configuration
++
++=head2 Configure a watchdog
++
++It is highly recommended that you configure your Linux system to load a
++watchdog driver with hardware assistance (as is available on most modern
++systems), such as I<hpwdt>, I<iTCO_wdt>, or others. As a fall-back, you
++can use the I<softdog> module.
++
++No other software must access the watchdog timer; it can only be
++accessed by one process at any given time. Some hardware vendors ship
++systems management software that use the watchdog for system resets
++(f.e. HP ASR daemon). Such software has to be disabled if the watchdog
++is to be used by SBD.
++
++=head2 Choosing and initializing the block device(s)
++
++First, you have to decide if you want to use one, two, or three devices.
++
++If you are using multiple ones, they should reside on independent
++storage setups. Putting all three of them on the same logical unit for
++example would not provide any additional redundancy.
++
++The SBD device can be connected via Fibre Channel, Fibre Channel over
++Ethernet, or even iSCSI. Thus, an iSCSI target can become a sort-of
++network-based quorum server; the advantage is that it does not require
++a smart host at your third location, just block storage.
++
++The SBD partitions themselves B<must not> be mirrored (via MD,
++DRBD, or the storage layer itself), since this could result in a
++split-mirror scenario. Nor can they reside on cLVM2 volume groups, since
++they must be accessed by the cluster stack before it has started the
++cLVM2 daemons; hence, these should be either raw partitions or logical
++units on (multipath) storage.
++
++The block device(s) must be accessible from all nodes. (While it is not
++necessary that they share the same path name on all nodes, this is
++considered a very good idea.)
++
++SBD will only use about one megabyte per device, so you can easily
++create a small partition, or very small logical units. (The size of the
++SBD device depends on the block size of the underlying device. Thus, 1MB
++is fine on plain SCSI devices and SAN storage with 512 byte blocks. On
++the IBM s390x architecture in particular, disks default to 4k blocks,
++and thus require roughly 4MB.)
++
++The number of devices will affect the operation of SBD as follows:
++
++=over
++
++=item One device
++
++In its most simple implementation, you use one device only. This is
++appropriate for clusters where all your data is on the same shared
++storage (with internal redundancy) anyway; the SBD device does not
++introduce an additional single point of failure then.
++
++If the SBD device is not accessible, the daemon will fail to start and
++inhibit startup of cluster services.
++
++=item Two devices
++
++This configuration is a trade-off, primarily aimed at environments where
++host-based mirroring is used, but no third storage device is available.
++
++SBD will not commit suicide if it loses access to one mirror leg; this
++allows the cluster to continue to function even in the face of one outage.
++
++However, SBD will not fence the other side while only one mirror leg is
++available, since it does not have enough knowledge to detect an asymmetric
++split of the storage. So it will not be able to automatically tolerate a
++second failure while one of the storage arrays is down. (Though you
++can use the appropriate crm command to acknowledge the fence manually.)
++
++It will not start unless both devices are accessible on boot.
++
++=item Three devices
++
++In this most reliable and recommended configuration, SBD will only
++self-fence if more than one device is lost; hence, this configuration is
++resilient against temporary single device outages (be it due to failures
++or maintenance). Fencing messages can still be successfully relayed if
++at least two devices remain accessible.
++
++This configuration is appropriate for more complex scenarios where
++storage is not confined to a single array. For example, host-based
++mirroring solutions could have one SBD per mirror leg (not mirrored
++itself), and an additional tie-breaker on iSCSI.
++
++It will only start if at least two devices are accessible on boot.
++
++=back
++
++After you have chosen the devices and created the appropriate partitions
++and perhaps multipath alias names to ease management, use the C<sbd create>
++command described above to initialize the SBD metadata on them.
++
++=head3 Sharing the block device(s) between multiple clusters
++
++It is possible to share the block devices between multiple clusters,
++provided the total number of nodes accessing them does not exceed I<255>
++nodes, and they all must share the same SBD timeouts (since these are
++part of the metadata).
++
++If you are using multiple devices this can reduce the setup overhead
++required. However, you should B<not> share devices between clusters in
++different security domains.
++
++=head2 Configure SBD to start on boot
++
++On systems using C<sysvinit>, the C<openais> or C<corosync> system
++start-up scripts must handle starting or stopping C<sbd> as required
++before starting the rest of the cluster stack.
++
++For C<systemd>, sbd simply has to be enabled using
++
++ systemctl enable sbd.service
++
++The daemon is brought online on each node before corosync and Pacemaker
++are started, and terminated only after all other cluster components have
++been shut down - ensuring that cluster resources are never activated
++without SBD supervision.
++
++=head2 Configuration via sysconfig
++
++The system instance of C<sbd> is configured via F</etc/sysconfig/sbd>.
++In this file, you must specify the device(s) used, as well as any
++options to pass to the daemon:
++
++ SBD_DEVICE="/dev/sda1;/dev/sdb1;/dev/sdc1"
++ SBD_PACEMAKER="true"
++
++C<sbd> will fail to start if no C<SBD_DEVICE> is specified. See the
++installed template or section for configuration via environment
++for more options that can be configured here.
++In general configuration done via parameters takes precedence over
++the configuration from the configuration file.
++
++=head2 Configuration via environment
++
++=over
++@environment_section@
++=back
++
++=head2 Testing the sbd installation
++
++After a restart of the cluster stack on this node, you can now try
++sending a test message to it as root, from this or any other node:
++
++ sbd -d /dev/sda1 message node1 test
++
++The node will acknowledge the receipt of the message in the system logs:
++
++ Aug 29 14:10:00 node1 sbd: [13412]: info: Received command test from node2
++
++This confirms that SBD is indeed up and running on the node, and that it
++is ready to receive messages.
++
++Make B<sure> that F</etc/sysconfig/sbd> is identical on all cluster
++nodes, and that all cluster nodes are running the daemon.
++
++=head1 Pacemaker CIB integration
++
++=head2 Fencing resource
++
++Pacemaker can only interact with SBD to issue a node fence if there is a
++configure fencing resource. This should be a primitive, not a clone, as
++follows:
++
++ primitive fencing-sbd stonith:external/sbd \
++ params pcmk_delay_max=30
++
++This will automatically use the same devices as configured in
++F</etc/sysconfig/sbd>.
++
++While you should not configure this as a clone (as Pacemaker will register
++the fencing device on each node automatically), the I<pcmk_delay_max>
++setting enables random fencing delay which ensures, in a scenario where a
++split-brain scenario did occur in a two node cluster, that one of the nodes
++has a better chance to survive to avoid double fencing.
++
++SBD also supports turning the reset request into a crash request, which
++may be helpful for debugging if you have kernel crashdumping configured;
++then, every fence request will cause the node to dump core. You can
++enable this via the C<crashdump="true"> parameter on the fencing
++resource. This is B<not> recommended for production use, but only for
++debugging phases.
++
++=head2 General cluster properties
++
++You must also enable STONITH in general, and set the STONITH timeout to
++be at least twice the I<msgwait> timeout you have configured, to allow
++enough time for the fencing message to be delivered. If your I<msgwait>
++timeout is 60 seconds, this is a possible configuration:
++
++ property stonith-enabled="true"
++ property stonith-timeout="120s"
++
++B<Caution>: if I<stonith-timeout> is too low for I<msgwait> and the
++system overhead, sbd will never be able to successfully complete a fence
++request. This will create a fencing loop.
++
++Note that the sbd fencing agent will try to detect this and
++automatically extend the I<stonith-timeout> setting to a reasonable
++value, on the assumption that sbd modifying your configuration is
++preferable to not fencing.
++
++=head1 Management tasks
++
++=head2 Recovering from temporary SBD device outage
++
++If you have multiple devices, failure of a single device is not immediately
++fatal. C<sbd> will retry to restart the monitor for the device every 5
++seconds by default. However, you can tune this via the options to the
++I<watch> command.
++
++In case you wish the immediately force a restart of all currently
++disabled monitor processes, you can send a I<SIGUSR1> to the SBD
++I<inquisitor> process.
++
++
++=head1 LICENSE
++
++Copyright (C) 2008-2013 Lars Marowsky-Bree
++
++This program is free software; you can redistribute it and/or
++modify it under the terms of the GNU General Public
++License as published by the Free Software Foundation; either
++version 2 of the License, or (at your option) any later version.
++
++This software is distributed in the hope that it will be useful,
++but WITHOUT ANY WARRANTY; without even the implied warranty of
++MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++General Public License for more details.
++
++For details see the GNU General Public License at
++http://www.gnu.org/licenses/gpl-2.0.html (version 2) and/or
++http://www.gnu.org/licenses/gpl.html (the newest as per "any later").
+diff --git a/src/sbd.sysconfig b/src/sbd.sysconfig
+index e1a60ed..33b50d0 100644
+--- a/src/sbd.sysconfig
++++ b/src/sbd.sysconfig
+@@ -14,7 +14,7 @@
+ #
+ SBD_PACEMAKER=yes
+
+-## Type: list(always,clean)
++## Type: always / clean
+ ## Default: always
+ #
+ # Specify the start mode for sbd. Setting this to "clean" will only
+@@ -103,6 +103,7 @@ SBD_TIMEOUT_ACTION=flush,reboot
+ # Thus in auto-mode sbd will check if the slice has RT-budget assigned.
+ # If that is the case sbd will stay in that slice while it will
+ # be moved to root-slice otherwise.
++#
+ SBD_MOVE_TO_ROOT_CGROUP=auto
+
+ ## Type: string
+--
+1.8.3.1
+
diff --git a/0003-Fix-scheduling-overhaul-the-whole-thing.patch b/0003-Fix-scheduling-overhaul-the-whole-thing.patch
new file mode 100644
index 0000000..05fab9d
--- /dev/null
+++ b/0003-Fix-scheduling-overhaul-the-whole-thing.patch
@@ -0,0 +1,152 @@
+From 4bc08cf76fc01e98cbec76bf32bb333b77f69217 Mon Sep 17 00:00:00 2001
+From: Klaus Wenninger <klaus.wenninger(a)aon.at>
+Date: Thu, 27 Feb 2020 19:02:57 +0100
+Subject: [PATCH] Fix: scheduling: overhaul the whole thing
+
+- prevent possible lockup when format in proc changes
+- properly get and handle scheduler policy & prio
+- on SCHED_RR failing push to the max with SCHED_OTHER
+---
+ src/sbd-common.c | 56 ++++++++++++++++++++++++++++++++++++++++++++------------
+ 1 file changed, 44 insertions(+), 12 deletions(-)
+
+diff --git a/src/sbd-common.c b/src/sbd-common.c
+index 9ec43b2..c2da758 100644
+--- a/src/sbd-common.c
++++ b/src/sbd-common.c
+@@ -26,6 +26,9 @@
+ #include <pwd.h>
+ #include <unistd.h>
+ #include <dirent.h>
++#include <sys/time.h>
++#include <sys/resource.h>
++#include <limits.h>
+
+ #ifdef _POSIX_MEMLOCK
+ # include <sys/mman.h>
+@@ -298,7 +301,7 @@ watchdog_populate_list(void)
+ FILE *file;
+
+ snprintf(entry_name, sizeof(entry_name),
+- SYS_CLASS_WATCHDOG "/%s/dev", entry->d_name);
++ SYS_CLASS_WATCHDOG "/%s/dev", entry->d_name);
+ file = fopen(entry_name, "r");
+ if (file) {
+ int major, minor;
+@@ -667,7 +670,7 @@ static int get_realtime_budget(void)
+ {
+ FILE *f;
+ char fname[PATH_MAX];
+- int res = -1, lnum = 0;
++ int res = -1, lnum = 0, num;
+ char *cgroup = NULL, *namespecs = NULL;
+
+ snprintf(fname, PATH_MAX, "/proc/%jd/cgroup", (intmax_t)getpid());
+@@ -677,7 +680,8 @@ static int get_realtime_budget(void)
+ (intmax_t)getpid());
+ goto exit_res;
+ }
+- while( fscanf(f, "%d:%m[^:]:%m[^\n]", &lnum, &namespecs, &cgroup) !=EOF ) {
++ while( (num = fscanf(f, "%d:%m[^:]:%m[^\n]\n", &lnum,
++ &namespecs, &cgroup)) !=EOF ) {
+ if (namespecs && strstr(namespecs, "cpuacct")) {
+ free(namespecs);
+ break;
+@@ -690,6 +694,11 @@ static int get_realtime_budget(void)
+ free(namespecs);
+ namespecs = NULL;
+ }
++ /* not to get stuck if format changes */
++ if ((num < 3) && ((fscanf(f, "%*[^\n]") == EOF) ||
++ (fscanf(f, "\n") == EOF))) {
++ break;
++ }
+ }
+ fclose(f);
+ if (cgroup == NULL) {
+@@ -776,15 +785,17 @@ sbd_make_realtime(int priority, int stackgrowK, int heapgrowK)
+ return;
+ }
+
++do {
+ #ifdef SCHED_RR
+ if (move_to_root_cgroup) {
+ sbd_move_to_root_cgroup(enforce_moving_to_root_cgroup);
+ }
+
+ {
+- int pcurrent = 0;
+ int pmin = sched_get_priority_min(SCHED_RR);
+ int pmax = sched_get_priority_max(SCHED_RR);
++ struct sched_param sp;
++ int pcurrent;
+
+ if (priority == 0) {
+ priority = pmax;
+@@ -794,26 +805,47 @@ sbd_make_realtime(int priority, int stackgrowK, int heapgrowK)
+ priority = pmax;
+ }
+
+- pcurrent = sched_getscheduler(0);
+- if (pcurrent < 0) {
++ if (sched_getparam(0, &sp) < 0) {
+ cl_perror("Unable to get scheduler priority");
+
+- } else if(pcurrent < priority) {
+- struct sched_param sp;
++ } else if ((pcurrent = sched_getscheduler(0)) < 0) {
++ cl_perror("Unable to get scheduler policy");
+
++ } else if ((pcurrent == SCHED_RR) &&
++ (sp.sched_priority >= priority)) {
++ cl_log(LOG_INFO,
++ "Stay with priority (%d) for policy SCHED_RR",
++ sp.sched_priority);
++ break;
++ } else {
+ memset(&sp, 0, sizeof(sp));
+ sp.sched_priority = priority;
+
+ if (sched_setscheduler(0, SCHED_RR, &sp) < 0) {
+- cl_perror("Unable to set scheduler priority to %d", priority);
++ cl_perror(
++ "Unable to set scheduler policy to SCHED_RR priority %d",
++ priority);
+ } else {
+- cl_log(LOG_INFO, "Scheduler priority is now %d", priority);
++ cl_log(LOG_INFO,
++ "Scheduler policy is now SCHED_RR priority %d",
++ priority);
++ break;
+ }
+ }
+ }
+ #else
+- cl_log(LOG_ERR, "System does not support updating the scheduler priority");
++ cl_log(LOG_ERR, "System does not support updating the scheduler policy");
++#endif
++#ifdef PRIO_PGRP
++ if (setpriority(PRIO_PGRP, 0, INT_MIN) < 0) {
++ cl_perror("Unable to raise the scheduler priority");
++ } else {
++ cl_log(LOG_INFO, "Scheduler priority raised to the maximum");
++ }
++#else
++ cl_perror("System does not support setting the scheduler priority");
+ #endif
++} while (0);
+
+ sbd_memlock(heapgrowK, stackgrowK);
+ }
+@@ -826,7 +858,7 @@ maximize_priority(void)
+ return;
+ }
+
+- sbd_make_realtime(0, 256, 256);
++ sbd_make_realtime(0, 256, 256);
+
+ if (ioprio_set(IOPRIO_WHO_PROCESS, getpid(),
+ IOPRIO_PRIO_VALUE(IOPRIO_CLASS_RT, 1)) != 0) {
+--
+1.8.3.1
+
diff --git a/gating.yaml b/gating.yaml
new file mode 100644
index 0000000..9e15ced
--- /dev/null
+++ b/gating.yaml
@@ -0,0 +1,15 @@
+--- !Policy
+product_versions:
+ - fedora-*
+decision_context: bodhi_update_push_testing
+subject_type: koji_build
+rules:
+ - !PassingTestCaseRule {test_case_name: fedora-ci.koji-build.tier0.functional}
+--- !Policy
+product_versions:
+ - fedora-*
+decision_context: bodhi_update_push_stable
+subject_type: koji_build
+rules:
+ - !PassingTestCaseRule {test_case_name: fedora-ci.koji-build.tier0.functional}
+
diff --git a/sbd.spec b/sbd.spec
index 86d6f85..d5f624c 100644
--- a/sbd.spec
+++ b/sbd.spec
@@ -15,24 +15,28 @@
# Please submit bugfixes or comments via http://bugs.opensuse.org/
#
-%global commit 7f33d1a409d0a4e2cd69946688c48eaa8f3c5d26
+%global commit 25fce8a7d5e8cd5abc2379077381b10bd6cec183
%global shortcommit %(c=%{commit}; echo ${c:0:7})
-%global github_owner clusterlabs
+%global github_owner Clusterlabs
+%global buildnum 1
Name: sbd
Summary: Storage-based death
License: GPLv2+
-Version: 1.4.0
-Release: 3%{?dist}
+Group: System Environment/Daemons
+Version: 1.4.1
+Release: %{buildnum}%{?dist}
Url: https://github.com/%{github_owner}/%{name}
Source0: https://github.com/%{github_owner}/%{name}/archive/%{commit}/%{name}-%{co...
-Patch0: 0001-Refactor-fail-earlier-on-invalid-servants.patch
+Patch0: 0001-Fix-regressions.sh-make-parameter-passing-consistent.patch
+Patch1: 0002-Doc-add-environment-section-to-man-page.patch
+Patch2: 0003-Fix-scheduling-overhaul-the-whole-thing.patch
BuildRequires: autoconf
BuildRequires: automake
BuildRequires: libuuid-devel
BuildRequires: glib2-devel
BuildRequires: libaio-devel
-BuildRequires: corosynclib-devel
+BuildRequires: corosync-devel
BuildRequires: pacemaker-libs-devel
BuildRequires: libtool
BuildRequires: libuuid-devel
@@ -40,6 +44,7 @@ BuildRequires: libxml2-devel
BuildRequires: pkgconfig
BuildRequires: make
BuildRequires: systemd
+Conflicts: fence-agents-sbd < 4.5.0
%if 0%{?rhel}
ExclusiveArch: i686 x86_64 s390x aarch64 ppc64le
@@ -53,15 +58,28 @@ ExclusiveArch: i686 x86_64 s390x aarch64 ppc64le
This package contains the storage-based death functionality.
+%package tests
+Summary: Storage-based death environment for regression tests
+License: GPLv2+
+Group: System Environment/Daemons
+
+%description tests
+This package provides an environment + testscripts for
+regression-testing sbd.
+
###########################################################
%prep
%autosetup -n %{name}-%{commit} -p1
+%ifarch s390x s390
+sed -i src/sbd.sysconfig -e "s/Default: 5/Default: 15/"
+sed -i src/sbd.sysconfig -e "s/SBD_WATCHDOG_TIMEOUT=5/SBD_WATCHDOG_TIMEOUT=15/"
+%endif
###########################################################
%build
-autoreconf -i
+./autogen.sh
export CFLAGS="$RPM_OPT_FLAGS -Wall -Werror"
%configure
make %{?_smp_mflags}
@@ -73,6 +91,7 @@ make %{?_smp_mflags}
make DESTDIR=$RPM_BUILD_ROOT LIBDIR=%{_libdir} install
rm -rf ${RPM_BUILD_ROOT}%{_libdir}/stonith
+install -D -m 0755 tests/regressions.sh $RPM_BUILD_ROOT/usr/share/sbd/regressions.sh
%if %{defined _unitdir}
install -D -m 0644 src/sbd.service $RPM_BUILD_ROOT/%{_unitdir}/sbd.service
install -D -m 0644 src/sbd_remote.service $RPM_BUILD_ROOT/%{_unitdir}/sbd_remote.service
@@ -81,12 +100,26 @@ install -D -m 0644 src/sbd_remote.service $RPM_BUILD_ROOT/%{_unitdir}/sbd_remote
mkdir -p ${RPM_BUILD_ROOT}%{_sysconfdir}/sysconfig
install -m 644 src/sbd.sysconfig ${RPM_BUILD_ROOT}%{_sysconfdir}/sysconfig/sbd
+# Don't package static libs
+find %{buildroot} -name '*.a' -type f -print0 | xargs -0 rm -f
+find %{buildroot} -name '*.la' -type f -print0 | xargs -0 rm -f
+
###########################################################
%if %{defined _unitdir}
%post
%systemd_post sbd.service
%systemd_post sbd_remote.service
+if [ $1 -ne 1 ] ; then
+ if systemctl --quiet is-enabled sbd.service 2>/dev/null
+ then
+ systemctl --quiet reenable sbd.service 2>/dev/null || :
+ fi
+ if systemctl --quiet is-enabled sbd_remote.service 2>/dev/null
+ then
+ systemctl --quiet reenable sbd_remote.service 2>/dev/null || :
+ fi
+fi
%preun
%systemd_preun sbd.service
@@ -102,6 +135,7 @@ install -m 644 src/sbd.sysconfig ${RPM_BUILD_ROOT}%{_sysconfdir}/sysconfig/sbd
%defattr(-,root,root)
%config(noreplace) %{_sysconfdir}/sysconfig/sbd
%{_sbindir}/sbd
+%exclude %{_datadir}/sbd/regressions.sh
%doc %{_mandir}/man8/sbd*
%if %{defined _unitdir}
%{_unitdir}/sbd.service
@@ -109,7 +143,21 @@ install -m 644 src/sbd.sysconfig ${RPM_BUILD_ROOT}%{_sysconfdir}/sysconfig/sbd
%endif
%doc COPYING
+%files tests
+###########################################################
+%defattr(-,root,root)
+%dir %{_datadir}/sbd
+%{_datadir}/sbd/regressions.sh
+%{_libdir}/libsbdtestbed*
+
%changelog
+* Thu Mar 5 2020 Klaus Wenninger <kwenning(a)redhat.com> - 1.4.1-4
+- Rebase to upstream v1.4.1
+- Make coverity happy with parameter passing in regressions.sh
+- Add auto generated environment section to man-page
+- Overhaul setting scheduler policy/priority
+- Enable Fedora CI Gating
+
* Thu Jan 30 2020 Fedora Release Engineering <releng(a)fedoraproject.org> - 1.4.0-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
diff --git a/sources b/sources
index fab3041..50b7de1 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-SHA512 (sbd-7f33d1a409d0a4e2cd69946688c48eaa8f3c5d26.tar.gz) = 1baca43ad95d8d0886cbd1db82eeb617a2055e5a31d16f2802c27b120894c6829bfc99663e2da402a37e6c52d0cda6cec63cbc15cb6c580895e5a1d30e5b1c62
+SHA512 (sbd-25fce8a7d5e8cd5abc2379077381b10bd6cec183.tar.gz) = 3b89ee0aa88282f17c8daf725a1e7a8c2f2affdcf6ff6f4ca4faf250760d778a65c5693e5df3fcc7554d60dd9b0cb1a0350e266fadb7668320f3c676d8799a29
diff --git a/tests/inventory b/tests/inventory
new file mode 100755
index 0000000..e0cea17
--- /dev/null
+++ b/tests/inventory
@@ -0,0 +1,4 @@
+#!/bin/bash
+export TEST_DOCKER_EXTRA_ARGS="--privileged --network host"
+exec merge-standard-inventory "$@"
+
diff --git a/tests/tests.yml b/tests/tests.yml
new file mode 100644
index 0000000..49bc170
--- /dev/null
+++ b/tests/tests.yml
@@ -0,0 +1,16 @@
+---
+- hosts: localhost
+ roles:
+ - role: standard-test-basic
+ tags:
+ - classic
+ - container
+ tests:
+ - smoke:
+ dir: .
+ run: /usr/share/sbd/regressions.sh
+ required_packages:
+ - sbd
+ - sbd-tests
+ - device-mapper
+
4 years, 2 months
Architecture specific change in rpms/ocaml-dune.git
by githook-noreply@fedoraproject.org
The package rpms/ocaml-dune.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/ocaml-dune.git/commit/?id=134b5e5....
Change:
-%ifarch %{ocaml_native_compiler}
Thanks.
Full change:
============
commit 134b5e568d42d5a53b8ae0418da234a33650c11f
Author: Jerry James <loganjerry(a)gmail.com>
Date: Fri Mar 6 11:01:02 2020 -0700
New version 2.4.0.
Add bootstrap conditional for builds without ocaml-menhir.
diff --git a/ocaml-dune.spec b/ocaml-dune.spec
index 6a6d48f..b6da0c0 100644
--- a/ocaml-dune.spec
+++ b/ocaml-dune.spec
@@ -1,8 +1,12 @@
%global libname dune
+# Since menhir now requires dune to build, but dune needs menhir only for the
+# tests, build in bootstrap mode to skip the tests and the need for menhir.
+%bcond_with bootstrap
+
Name: ocaml-%{libname}
-Version: 2.3.1
-Release: 2%{?dist}
+Version: 2.4.0
+Release: 1%{?dist}
Summary: A composable build system for OCaml
# Dune itself is MIT. Some bundled libraries have a different license:
@@ -24,8 +28,10 @@ BuildRequires: ocaml-findlib
BuildRequires: python3dist(sphinx)
BuildRequires: python3dist(sphinx-rtd-theme)
+%if %{without bootstrap}
# Required by tests.
BuildRequires: ocaml-menhir
+%endif
# Dune has vendored deps (ugh):
# I'm not clear on how to unbundle them.
@@ -93,12 +99,10 @@ system, a mode to edit dune files, and flymake support for dune files.
./dune.exe build @install
%make_build doc
-%ifarch %{ocaml_native_compiler}
# Relink the stublib. See https://github.com/ocaml/dune/issues/2977.
cd _build/default/src/stdune
ocamlmklib -g -ldopt "$RPM_LD_FLAGS" -o stdune_stubs fcntl_stubs.o
cd -
-%endif
%install
# "make install" only installs the binary. We want the libraries, too.
@@ -119,10 +123,12 @@ rm -fr %{buildroot}%{_prefix}/doc
mkdir -p %{buildroot}%{_pkgdocdir}/
cp -ar README.md CHANGES.md MIGRATION.md doc/_build/* %{buildroot}%{_pkgdocdir}/
+%if %{without bootstrap}
%check
# These are the only tests we can run. The others require components that
# either depend on dune themselves or are not available in Fedora at all.
%{buildroot}%{_bindir}/dune runtest test/unit-tests
+%endif
%files
%license LICENSE.md
@@ -182,6 +188,10 @@ cp -ar README.md CHANGES.md MIGRATION.md doc/_build/* %{buildroot}%{_pkgdocdir}/
%{_emacs_sitelispdir}/dune*
%changelog
+* Fri Mar 6 2020 Jerry James <loganjerry(a)gmail.com> - 2.4.0-1
+- New version 2.4.0
+- Add bootstrap conditional for builds without ocaml-menhir
+
* Wed Feb 26 2020 Richard W.M. Jones <rjones(a)redhat.com> - 2.3.1-2
- OCaml 4.10.0 final.
diff --git a/sources b/sources
index c8c8d50..6189d09 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-SHA512 (dune-2.3.1.tar.gz) = 2496731d8477e3d603b685616c5474ed704464cca822845c9eb623aa03d4b43caf454fc3d8b1f949360a96363450fb322e5f085305a209af7dc6b3f0f72e5ae0
+SHA512 (dune-2.4.0.tar.gz) = 4e8ecc422cd00b63aca95b9ce2ab16bad6e9ab53a5be991377c932ccaf117c974012ebaaacc6138f3b5b3154d395099c6828fb87b2ba096393db2d82d3f47fee
4 years, 2 months
Architecture specific change in rpms/pacemaker.git
by githook-noreply@fedoraproject.org
The package rpms/pacemaker.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/pacemaker.git/commit/?id=2957abde....
Change:
-ExcludeArch: s390x
Thanks.
Full change:
============
commit 2957abde8a4a15864ad3e9edb684db00e489e766
Author: Jan Pokorn <jpokorny(a)redhat.com>
Date: Fri Mar 6 16:20:41 2020 +0100
2.0.3-4 - return back to building also for s390x architecture
...was identified and interim fix (way to build along with one
actual bugfix as raised along) applied (RHBZ#1799842)
Signed-off-by: Jan Pokorn <jpokorny(a)redhat.com>
diff --git a/Build-fix-compilation-Werror-compilation-issue.patch b/Build-fix-compilation-Werror-compilation-issue.patch
new file mode 100644
index 0000000..30ed7a2
--- /dev/null
+++ b/Build-fix-compilation-Werror-compilation-issue.patch
@@ -0,0 +1,94 @@
+From 9acf1f9b3d42ce48044568230cb4eba6a52b2e27 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Jan=20Pokorn=C3=BD?= <jpokorny(a)redhat.com>
+Date: Wed, 4 Mar 2020 23:42:33 +0100
+Subject: [PATCH] Build: fix compilation -Werror compilation issue with GCC 10
+ with s390x
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Curiously, this possible NULL propagation:
+
+> In file included from ../../include/crm_internal.h:21,
+> from utils.c:10:
+> In function pe_action_set_reason,
+> inlined from custom_action at utils.c:605:13:
+> ../../include/crm/common/logging.h:235:13: error: %s directive argument is null [-Werror=format-overflow=]
+> 235 | qb_log_from_external_source(__func__, __FILE__, fmt, level, \
+> | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+> 236 | __LINE__, converted_tag , ##args); \
+> | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+> ./../include/crm/pengine/internal.h:19:43: note: in expansion of macro crm_log_tag
+> 19 | # define pe_rsc_trace(rsc, fmt, args...) crm_log_tag(LOG_TRACE, rsc ? rsc->id : "<NULL>", fmt, ##args)
+> | ^~~~~~~~~~~
+> utils.c:2502:9: note: in expansion of macro pe_rsc_trace
+> 2502 | pe_rsc_trace(action->rsc, "Changing %s reason from '%s' to '%s'", action->uuid, action->reason, reason);
+> | ^~~~~~~~~~~~
+> tils.c: In function custom_action:
+> tils.c:2502:69: note: format string is defined here
+> 2502 | pe_rsc_trace(action->rsc, "Changing %s reason from '%s' to '%s'", action->uuid, action->reason, reason);
+> | ^~
+
+was not observed with other architectures with a Rawhide rebuild.
+
+There are various hypotheses behind that, currently concentrated
+around a suspicion that "-fPIC" vs. building lacking that, which
+is what libtool performs sequentially both unless the project is
+configured with --disable-static (current stopgap solution for
+said Rawhide/s390x problem) will mean that under some additional
+circumstances, more interprocedural (or even cross-file?) data
+flow analysis can be made and hence more problematic situations
+discovered. To add insult into injury, libtool would purposefully
+(and perhaps mistakenly) hide any outputs of possibly failing
+second compilation pass per above when the former succeeded.
+
+[Due to resorting to said --disable-static, further occurrences
+of "new" problems are not being pursued at this time.]
+
+Special thanks to Dan Hork for providing an instant feedback
+based on some Fedora automatic notification triggers:
+https://bugzilla.redhat.com/show_bug.cgi?id=1799842#c11
+
+Also of interest, reduce double message to single one only
+in one particular combination.
+---
+ lib/pengine/utils.c | 24 ++++++++++++++----------
+ 1 file changed, 14 insertions(+), 10 deletions(-)
+
+diff --git a/lib/pengine/utils.c b/lib/pengine/utils.c
+index 81f91215f3..6c82105f61 100644
+--- a/lib/pengine/utils.c
++++ b/lib/pengine/utils.c
+@@ -2551,18 +2551,22 @@ void pe_action_set_flag_reason(const char *function, long line,
+
+ void pe_action_set_reason(pe_action_t *action, const char *reason, bool overwrite)
+ {
+- if(action->reason && overwrite) {
+- pe_rsc_trace(action->rsc, "Changing %s reason from '%s' to '%s'", action->uuid, action->reason, reason);
++ if (action->reason != NULL && overwrite) {
++ pe_rsc_trace(action->rsc, "Changing %s reason from '%s' to '%s'",
++ action->uuid, action->reason, crm_str(reason));
+ free(action->reason);
+- action->reason = NULL;
++ } else if (action->reason == NULL) {
++ pe_rsc_trace(action->rsc, "Set %s reason to '%s'",
++ action->uuid, crm_str(reason));
++ } else {
++ // crm_assert(action->reason != NULL && !overwrite);
++ return;
+ }
+- if(action->reason == NULL) {
+- if(reason) {
+- pe_rsc_trace(action->rsc, "Set %s reason to '%s'", action->uuid, reason);
+- action->reason = strdup(reason);
+- } else {
+- action->reason = NULL;
+- }
++
++ if (reason != NULL) {
++ action->reason = strdup(reason);
++ } else {
++ action->reason = NULL;
+ }
+ }
+
diff --git a/pacemaker.spec b/pacemaker.spec
index 363e070..4ec3f8a 100644
--- a/pacemaker.spec
+++ b/pacemaker.spec
@@ -14,7 +14,7 @@
## can be incremented to build packages reliably considered "newer"
## than previously built packages with the same pcmkversion)
%global pcmkversion 2.0.3
-%global specversion 3
+%global specversion 4
## Upstream commit (or git tag, such as "Pacemaker-" plus the
## {pcmkversion} macro for an official release) to use for this package
@@ -146,29 +146,7 @@ Source1: https://github.com/%{github_owner}/%{nagios_name}/archive/%{nagio
Patch0: Build-fix-unability-to-build-with-Inkscape-1.0-beta-.patch
Patch1: https://github.com/ClusterLabs/pacemaker/commit/898d369f3bc770c0db2ad3973...
Patch2: https://github.com/ClusterLabs/pacemaker/commit/77a79358cc72174cbba0dd44e...
-
-# with s390x, linker fails without justification:
-# libtool: compile: gcc -DHAVE_CONFIG_H -I. -I../../include
-# -I../../include -I../../include -I../../libltdl -I../../libltdl
-# -DPCMK_TIME_EMERGENCY_CGT -UPCMK_TIME_EMERGENCY_CGT
-# -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include
-# -I/usr/include/libxml2 -I/usr/include/heartbeat
-# -I/usr/include/dbus-1.0 -I/usr/lib64/dbus-1.0/include
-# -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -O2 -g -pipe -Wall
-# -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2
-# -Wp,-D_GLIBCXX_ASSERTIONS -fexceptions -fstack-protector-strong
-# -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1
-# -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -march=zEC12
-# -mtune=z13 -fasynchronous-unwind-tables -fstack-clash-protection -ggdb
-# -fgnu89-inline -Wall -Waggregate-return -Wbad-function-cast
-# -Wcast-align -Wdeclaration-after-statement -Wendif-labels
-# -Wfloat-equal -Wformat-security -Wmissing-prototypes
-# -Wmissing-declarations -Wnested-externs -Wno-long-long
-# -Wno-strict-aliasing -Wpointer-arith -Wwrite-strings
-# -Wunused-but-set-variable -Wformat=2 -Wformat-nonliteral -Werror -c
-# utils.c -o libpe_status_la-utils.o >/dev/null 2>&1
-# make[3]: *** [Makefile:808: libpe_status_la-utils.lo] Error 1
-ExcludeArch: s390x
+Patch3: https://github.com/ClusterLabs/pacemaker/commit/9acf1f9b3d42ce48044568230...
Requires: resource-agents
Requires: %{name}-libs%{?_isa} = %{version}-%{release}
@@ -409,6 +387,7 @@ export CPPFLAGS="-UPCMK_TIME_EMERGENCY_CGT $CPPFLAGS"
%{?with_coverage: --with-coverage} \
%{!?with_doc: --with-brand=} \
%{?gnutls_priorities: --with-gnutls-priorities="%{gnutls_priorities}"} \
+ --disable-static \
--with-initdir=%{_initrddir} \
--with-runstatedir=%{_rundir} \
--localstatedir=%{_var} \
@@ -738,7 +717,12 @@ exit 0
%license %{nagios_name}-%{nagios_hash}/COPYING
%changelog
-* Wed March 04 2020 Jan Pokorn <jpokorny+rpm-pacemaker(a)redhat.com> - 2.0.3-3
+* Fri Mar 06 2020 Jan Pokorn <jpokorny+rpm-pacemaker(a)redhat.com> - 2.0.3-4
+- return back to building also for s390x architecture, previous obstacle
+ was identified and interim fix (way to build along with one actual bugfix
+ as raised along) applied (RHBZ#1799842)
+
+* Wed Mar 04 2020 Jan Pokorn <jpokorny+rpm-pacemaker(a)redhat.com> - 2.0.3-3
- include upstream fix for buildability with GCC 10 (PR #1968)
- omit s390x architecture for now, compilation would fail at this time
4 years, 2 months
Architecture specific change in rpms/sbd.git
by githook-noreply@fedoraproject.org
The package rpms/sbd.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/sbd.git/commit/?id=41d89a91b0c502....
Change:
-%ifarch s390x s390
Thanks.
Full change:
============
commit 41d89a91b0c502511efb3c36316d13e8bc3433c5
Author: Klaus Wenninger <klaus.wenninger(a)aon.at>
Date: Fri Mar 6 17:11:18 2020 +0100
Revert "* Thu Mar 5 2020 Klaus Wenninger <kwenning(a)redhat.com> - 1.4.1-1"
This reverts commit 92066d1d784cbaf327bd50cc46f311c3592e1035.
diff --git a/.gitignore b/.gitignore
index ba457ce..0fb7102 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,2 +1 @@
/sbd-*.tar.gz
-/sbd-*.src.rpm
diff --git a/0001-Fix-regressions.sh-make-parameter-passing-consistent.patch b/0001-Fix-regressions.sh-make-parameter-passing-consistent.patch
deleted file mode 100644
index 6f17a5a..0000000
--- a/0001-Fix-regressions.sh-make-parameter-passing-consistent.patch
+++ /dev/null
@@ -1,82 +0,0 @@
-From 1d2a7b8d059d4f090b351b8decca0ddf274c82a0 Mon Sep 17 00:00:00 2001
-From: Klaus Wenninger <klaus.wenninger(a)aon.at>
-Date: Wed, 20 Nov 2019 15:20:19 +0100
-Subject: [PATCH] Fix: regressions.sh: make parameter passing consistent
-
----
- tests/regressions.sh | 24 ++++++++++++------------
- 1 file changed, 12 insertions(+), 12 deletions(-)
-
-diff --git a/tests/regressions.sh b/tests/regressions.sh
-index 6cfb303..7ab80be 100755
---- a/tests/regressions.sh
-+++ b/tests/regressions.sh
-@@ -32,7 +32,7 @@
- : ${SBD_USE_DM:="yes"}
-
- sbd() {
-- LD_PRELOAD=${SBD_PRELOAD} SBD_WATCHDOG_TIMEOUT=5 SBD_DEVICE="${SBD_DEVICE}" SBD_PRELOAD_LOG=${SBD_PRELOAD_LOG} SBD_WATCHDOG_DEV=/dev/watchdog setsid ${SBD_BINARY} -p ${SBD_PIDFILE} $*
-+ LD_PRELOAD=${SBD_PRELOAD} SBD_WATCHDOG_TIMEOUT=5 SBD_DEVICE="${SBD_DEVICE}" SBD_PRELOAD_LOG=${SBD_PRELOAD_LOG} SBD_WATCHDOG_DEV=/dev/watchdog setsid ${SBD_BINARY} -p ${SBD_PIDFILE} "$@"
- }
-
- sbd_wipe_disk() {
-@@ -98,26 +98,26 @@ sbd_daemon_cleanup() {
- pkill -TERM --pidfile ${SBD_PIDFILE} 2>/dev/null
- sleep 5
- pkill -KILL --pidfile ${SBD_PIDFILE} 2>/dev/null
-- pkill -KILL --parent $(cat ${SBD_PIDFILE} 2>/dev/null) 2>/dev/null
-+ pkill -KILL --parent "$(cat ${SBD_PIDFILE} 2>/dev/null)" 2>/dev/null
- echo > ${SBD_PIDFILE}
- }
-
- _ok() {
-- echo -- $@
-- $@
-+ echo "-- $*"
-+ "$@"
- rc=$?
- if [ $rc -ne 0 ]; then
-- echo "$@ failed with $rc"
-+ echo "$* failed with $rc"
- exit $rc
- fi
- }
-
- _no() {
-- echo -- $@
-- $@
-+ echo "-- $*"
-+ "$@"
- rc=$?
- if [ $rc -eq 0 ]; then
-- echo "$@ did NOT fail ($rc)"
-+ echo "$* did NOT fail ($rc)"
- exit $rc
- fi
- return 0
-@@ -126,7 +126,7 @@ _no() {
- _in_log() {
- grep "$@" ${SBD_PRELOAD_LOG} >/dev/null
- if [ $? -ne 0 ]; then
-- echo "didn't find '$@' in log:"
-+ echo "didn't find '$*' in log:"
- cat ${SBD_PRELOAD_LOG}
- sbd_daemon_cleanup
- exit 1
-@@ -227,10 +227,10 @@ test_stall_inquisitor() {
- sbd_daemon_cleanup
- sbd -d ${D[1]} -d ${D[2]} -d ${D[3]} -n test-1 watch
- sleep 10
-- _ok kill -0 $(cat ${SBD_PIDFILE})
-- kill -STOP $(cat ${SBD_PIDFILE})
-+ _ok kill -0 "$(cat ${SBD_PIDFILE})"
-+ kill -STOP "$(cat ${SBD_PIDFILE})"
- sleep 10
-- kill -CONT $(cat ${SBD_PIDFILE}) 2>/dev/null
-+ kill -CONT "$(cat ${SBD_PIDFILE})" 2>/dev/null
- _in_log "watchdog fired"
- }
-
---
-1.8.3.1
-
diff --git a/0001-Refactor-fail-earlier-on-invalid-servants.patch b/0001-Refactor-fail-earlier-on-invalid-servants.patch
new file mode 100644
index 0000000..cb71002
--- /dev/null
+++ b/0001-Refactor-fail-earlier-on-invalid-servants.patch
@@ -0,0 +1,142 @@
+From 8301cbafed191f30656a22876941cc7c9189b623 Mon Sep 17 00:00:00 2001
+From: Klaus Wenninger <klaus.wenninger(a)aon.at>
+Date: Thu, 31 Jan 2019 14:42:01 +0100
+Subject: [PATCH] Refactor: fail earlier on invalid servants
+
+---
+ src/sbd-inquisitor.c | 51 ++++++++++++++++++++++++++++++++-------------------
+ src/sbd-md.c | 7 +------
+ src/sbd.h | 2 +-
+ 3 files changed, 34 insertions(+), 26 deletions(-)
+
+diff --git a/src/sbd-inquisitor.c b/src/sbd-inquisitor.c
+index 8e0bc87..9be6c99 100644
+--- a/src/sbd-inquisitor.c
++++ b/src/sbd-inquisitor.c
+@@ -42,19 +42,36 @@ void recruit_servant(const char *devname, pid_t pid)
+ struct servants_list_item *newbie;
+
+ if (lookup_servant_by_dev(devname)) {
+- cl_log(LOG_DEBUG, "Servant %s already exists", devname);
+- return;
++ cl_log(LOG_DEBUG, "Servant %s already exists", devname);
++ return;
+ }
+
+ newbie = malloc(sizeof(*newbie));
+- if (!newbie) {
+- fprintf(stderr, "malloc failed in recruit_servant.\n");
+- exit(1);
++ if (newbie) {
++ memset(newbie, 0, sizeof(*newbie));
++ newbie->devname = strdup(devname);
++ newbie->pid = pid;
++ newbie->first_start = 1;
++ }
++ if (!newbie || !newbie->devname) {
++ fprintf(stderr, "heap allocation failed in recruit_servant.\n");
++ exit(1);
++ }
++
++ /* some sanity-check on our newbie */
++ if (sbd_is_disk(newbie)) {
++ cl_log(LOG_INFO, "Monitoring %s", devname);
++ disk_count++;
++ } else if (sbd_is_pcmk(newbie) || sbd_is_cluster(newbie)) {
++ /* alive just after pcmk and cluster servants have shown up */
++ newbie->outdated = 1;
++ } else {
++ /* toss our newbie */
++ cl_log(LOG_ERR, "Refusing to recruit unrecognized servant %s", devname);
++ free((void *) newbie->devname);
++ free(newbie);
++ return;
+ }
+- memset(newbie, 0, sizeof(*newbie));
+- newbie->devname = strdup(devname);
+- newbie->pid = pid;
+- newbie->first_start = 1;
+
+ if (!s) {
+ servants_leader = newbie;
+@@ -65,12 +82,6 @@ void recruit_servant(const char *devname, pid_t pid)
+ }
+
+ servant_count++;
+- if(sbd_is_disk(newbie)) {
+- cl_log(LOG_INFO, "Monitoring %s", devname);
+- disk_count++;
+- } else {
+- newbie->outdated = 1;
+- }
+ }
+
+ int assign_servant(const char* devname, functionp_t functionp, int mode, const void* argp)
+@@ -148,7 +159,7 @@ void servant_start(struct servants_list_item *s)
+ if (sbd_is_disk(s)) {
+ #if SUPPORT_SHARED_DISK
+ DBGLOG(LOG_INFO, "Starting servant for device %s", s->devname);
+- s->pid = assign_servant(s->devname, servant, start_mode, s);
++ s->pid = assign_servant(s->devname, servant_md, start_mode, s);
+ #else
+ cl_log(LOG_ERR, "Shared disk functionality not supported");
+ return;
+@@ -785,12 +796,14 @@ parse_device_line(const char *line)
+
+ if (lpc > last) {
+ entry = calloc(1, 1 + lpc - last);
++ if (!entry) {
++ fprintf(stderr, "heap allocation failed parsing device-line.\n");
++ exit(1);
++ }
+ rc = sscanf(line + last, "%[^;]", entry);
+ }
+
+- if (entry == NULL) {
+- /* Skip */
+- } else if (rc != 1) {
++ if (rc != 1) {
+ cl_log(LOG_WARNING, "Could not parse (%d %d): %s", last, lpc, line + last);
+ } else {
+ cl_log(LOG_DEBUG, "Adding '%s'", entry);
+diff --git a/src/sbd-md.c b/src/sbd-md.c
+index 579d273..ba2c34d 100644
+--- a/src/sbd-md.c
++++ b/src/sbd-md.c
+@@ -1031,7 +1031,7 @@ static int servant_check_timeout_inconsistent(struct sector_header_s *hdr)
+ return 0;
+ }
+
+-int servant(const char *diskname, int mode, const void* argp)
++int servant_md(const char *diskname, int mode, const void* argp)
+ {
+ struct sector_mbox_s *s_mbox = NULL;
+ struct sector_node_s *s_node = NULL;
+@@ -1046,11 +1046,6 @@ int servant(const char *diskname, int mode, const void* argp)
+ char uuid[37];
+ const struct servants_list_item *s = argp;
+
+- if (!diskname) {
+- cl_log(LOG_ERR, "Empty disk name %s.", diskname);
+- return -1;
+- }
+-
+ cl_log(LOG_INFO, "Servant starting for device %s", diskname);
+
+ /* Block most of the signals */
+diff --git a/src/sbd.h b/src/sbd.h
+index 386c85c..6fe07f9 100644
+--- a/src/sbd.h
++++ b/src/sbd.h
+@@ -175,7 +175,7 @@ int ping_via_slots(const char *name, struct servants_list_item *servants);
+ int dump_headers(struct servants_list_item *servants);
+ unsigned long get_first_msgwait(struct servants_list_item *servants);
+ int messenger(const char *name, const char *msg, struct servants_list_item *servants);
+-int servant(const char *diskname, int mode, const void* argp);
++int servant_md(const char *diskname, int mode, const void* argp);
+ #endif
+
+ int servant_pcmk(const char *diskname, int mode, const void* argp);
+--
+1.8.3.1
+
diff --git a/0002-Doc-add-environment-section-to-man-page.patch b/0002-Doc-add-environment-section-to-man-page.patch
deleted file mode 100644
index 2ad9556..0000000
--- a/0002-Doc-add-environment-section-to-man-page.patch
+++ /dev/null
@@ -1,1459 +0,0 @@
-From 9dd82a8b4daa5a7bd8ab3afa43b081f212efb1ac Mon Sep 17 00:00:00 2001
-From: Klaus Wenninger <klaus.wenninger(a)aon.at>
-Date: Wed, 29 Jan 2020 20:34:18 +0100
-Subject: [PATCH] Doc: add environment section to man-page
-
-Environment section is auto-generated from sbd.sysconfig.
----
- .gitignore | 1 +
- Makefile.am | 6 +-
- README.md | 3 +-
- man/Makefile.am | 8 +-
- man/sbd.8.pod | 668 -----------------------------------------------------
- man/sbd.8.pod.in | 675 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
- src/sbd.sysconfig | 3 +-
- 7 files changed, 690 insertions(+), 674 deletions(-)
- delete mode 100644 man/sbd.8.pod
- create mode 100644 man/sbd.8.pod.in
-
-diff --git a/Makefile.am b/Makefile.am
-index 1c29f75..bd4346d 100644
---- a/Makefile.am
-+++ b/Makefile.am
-@@ -9,8 +9,8 @@ TARFILE = $(distdir).tar.gz
- DIST_ARCHIVES = $(TARFILE)
- KEEP_EXISTING_TAR = no
- INJECT_GIT_COMMIT = yes
--DISTCLEANFILES = sbd-* sbd-*/
- CLEANFILES = *.rpm *.tar.* sbd-*
-+DISTCLEANFILES = sbd-* sbd-*/
-
- RPM_ROOT = $(shell pwd)
- RPM_OPTS = --define "_sourcedir $(RPM_ROOT)" \
-@@ -31,7 +31,7 @@ export SBD_BINARY := src/sbd
- export SBD_PRELOAD := tests/.libs/libsbdtestbed.so
- export SBD_USE_DM := no
-
--EXTRA_DIST = sbd.spec tests/regressions.sh
-+EXTRA_DIST = sbd.spec tests/regressions.sh man/sbd.8.pod.in
-
- export:
- rm -f $(PACKAGE)-HEAD.tar.*
-@@ -43,7 +43,7 @@ export:
- echo `date`: Using existing tarball: $(TARFILE); \
- else \
- rm -f $(PACKAGE).tar.*; \
-- (git archive --prefix=$(distdir)/ $(shell echo $(TAG)|cut -f1 -d-) || tar -c --transform="s,^,$(distdir)/," --exclude="*.tar.*" --exclude="$(distdir)" --exclude="*.o" --exclude="*.8" --exclude="config.*" --exclude="libtool" --exclusive="ltmain.sh*" --exclude="Makefile" --exclude="Makefile.in" --exclude="stamp-*" --exclude="*.service" --exclude="sbd" --exclude="*.m4" --exclude="*.cache" --exclude="configure" --exclude="*.list" --exclude="depcomp" --exclude="install-sh" --exclude="missing" --exclude="compile" --exclude="sbd.sh" --exclude="~" --exclude="*.swp" --exclude="*.patch" --exclude="*.diff" --exclude="*.orig" --exclude="*.rej" --exclude="*.rpm" --exclude=".deps" --exclude="test-driver" *) | gzip > $(TARFILE); \
-+ (git archive --prefix=$(distdir)/ $(shell echo $(TAG)|cut -f1 -d-) || tar -c --transform="s,^,$(distdir)/," --exclude="*.tar.*" --exclude="$(distdir)" --exclude="*.o" --exclude="*.8" --exclude="config.*" --exclude="libtool" --exclude="ltmain.sh*" --exclude="Makefile" --exclude="Makefile.in" --exclude="stamp-*" --exclude="*.service" --exclude="sbd" --exclude="*.m4" --exclude="*.cache" --exclude="configure" --exclude="*.list" --exclude="depcomp" --exclude="install-sh" --exclude="missing" --exclude="compile" --exclude="sbd.sh" --exclude="~" --exclude="*.swp" --exclude="*.patch" --exclude="*.diff" --exclude="*.orig" --exclude="*.rej" --exclude="*.rpm" --exclude="*.pod" --exclude=".deps" --exclude="test-driver" *) | gzip > $(TARFILE); \
- if test -n "$$(git status -s)" || test "$(INJECT_GIT_COMMIT)" = "yes"; then \
- if test -n "$$(git status -s)"; then git diff HEAD --name-only|grep -v "^\."|xargs -n1 git diff HEAD > uncommitted.diff; fi; \
- rm -rf $(distdir); tar -xzf $(TARFILE); rm $(TARFILE); \
-diff --git a/README.md b/README.md
-index d02a8bd..42a3fde 100644
---- a/README.md
-+++ b/README.md
-@@ -5,5 +5,6 @@ A highly reliable fencing or Shoot-the-other-node-in-the-head (STONITH) mechanis
- The component works with Pacemaker clusters, and is currently known to
- compile and function on Pacemaker 1.1.7+ and corosync 1.4.x or 2.3.x.
-
--Please see https://github.com/l-mb/sbd/blob/master/man/sbd.8.pod for the full documentation.
-+Please see https://github.com/clusterlabs/sbd/blob/master/man/sbd.8.pod.in &
-+https://github.com/clusterlabs/sbd/blob/master/src/sbd.sysconfig for the full documentation.
-
-diff --git a/man/Makefile.am b/man/Makefile.am
-index 3f89085..995712d 100644
---- a/man/Makefile.am
-+++ b/man/Makefile.am
-@@ -1,6 +1,12 @@
- dist_man_MANS = sbd.8
-
--EXTRA_DIST = sbd.8.pod
-+DISTCLEANFILES = sbd.8.pod sbd.8 sbd.sysconfig.pod
-+
-+sbd.sysconfig.pod: ../src/sbd.sysconfig
-+ sed -r -n -e "s/^## Type: (.*)/Allows C<\1>/;t type;s/^## Default: (.*)/ defaulting to C<\1>/;t default;s/^#*(.*)=.*/=item B<\1>\n/;t variable;s/^#*//;s/^ *//;H;d;:type;h;d;:default;H;x;s/\n//;x;d;:variable;G;p" $< > $@
-+
-+sbd.8.pod: sbd.8.pod.in sbd.sysconfig.pod
-+ sed -e "s/@environment_section@//;t insert;p;d;:insert;rsbd.sysconfig.pod" $< > $@
-
- sbd.8: sbd.8.pod
- @POD2MAN@ -s 8 -c "STONITH Block Device" -r "SBD" -n "SBD" $< $@
-diff --git a/man/sbd.8.pod b/man/sbd.8.pod
-deleted file mode 100644
-index 377c579..0000000
---- a/man/sbd.8.pod
-+++ /dev/null
-@@ -1,668 +0,0 @@
--=head1 NAME
--
--sbd - STONITH Block Device daemon
--
--=head1 SYNOPSIS
--
--sbd <-d F</dev/...>> [options] C<command>
--
--=head1 SUMMARY
--
--SBD provides a node fencing mechanism (Shoot the other node in the head,
--STONITH) for Pacemaker-based clusters through the exchange of messages
--via shared block storage such as for example a SAN, iSCSI, FCoE. This
--isolates the fencing mechanism from changes in firmware version or
--dependencies on specific firmware controllers, and it can be used as a
--STONITH mechanism in all configurations that have reliable shared
--storage.
--
--SBD can also be used without any shared storage. In this mode, the
--watchdog device will be used to reset the node if it loses quorum, if
--any monitored daemon is lost and not recovered or if Pacemaker decides
--that the node requires fencing.
--
--The F<sbd> binary implements both the daemon that watches the message
--slots as well as the management tool for interacting with the block
--storage device(s). This mode of operation is specified via the
--C<command> parameter; some of these modes take additional parameters.
--
--To use SBD with shared storage, you must first C<create> the messaging
--layout on one to three block devices. Second, configure
--F</etc/sysconfig/sbd> to list those devices (and possibly adjust other
--options), and restart the cluster stack on each node to ensure that
--C<sbd> is started. Third, configure the C<external/sbd> fencing
--resource in the Pacemaker CIB.
--
--Each of these steps is documented in more detail below the description
--of the command options.
--
--C<sbd> can only be used as root.
--
--=head2 GENERAL OPTIONS
--
--=over
--
--=item B<-d> F</dev/...>
--
--Specify the block device(s) to be used. If you have more than one,
--specify this option up to three times. This parameter is mandatory for
--all modes, since SBD always needs a block device to interact with.
--
--This man page uses F</dev/sda1>, F</dev/sdb1>, and F</dev/sdc1> as
--example device names for brevity. However, in your production
--environment, you should instead always refer to them by using the long,
--stable device name (e.g.,
--F</dev/disk/by-id/dm-uuid-part1-mpath-3600508b400105b5a0001500000250000>).
--
--=item B<-v|-vv|-vvv>
--
--Enable verbose|debug|debug-library logging (optional)
--
--=item B<-h>
--
--Display a concise summary of C<sbd> options.
--
--=item B<-n> I<node>
--
--Set local node name; defaults to C<uname -n>. This should not need to be
--set.
--
--=item B<-R>
--
--Do B<not> enable realtime priority. By default, C<sbd> runs at realtime
--priority, locks itself into memory, and also acquires highest IO
--priority to protect itself against interference from other processes on
--the system. This is a debugging-only option.
--
--=item B<-I> I<N>
--
--Async IO timeout (defaults to 3 seconds, optional). You should not need
--to adjust this unless your IO setup is really very slow.
--
--(In daemon mode, the watchdog is refreshed when the majority of devices
--could be read within this time.)
--
--=back
--
--=head2 create
--
--Example usage:
--
-- sbd -d /dev/sdc2 -d /dev/sdd3 create
--
--If you specify the I<create> command, sbd will write a metadata header
--to the device(s) specified and also initialize the messaging slots for
--up to 255 nodes.
--
--B<Warning>: This command will not prompt for confirmation. Roughly the
--first megabyte of the specified block device(s) will be overwritten
--immediately and without backup.
--
--This command accepts a few options to adjust the default timings that
--are written to the metadata (to ensure they are identical across all
--nodes accessing the device).
--
--=over
--
--=item B<-1> I<N>
--
--Set watchdog timeout to N seconds. This depends mostly on your storage
--latency; the majority of devices must be successfully read within this
--time, or else the node will self-fence.
--
--If your sbd device(s) reside on a multipath setup or iSCSI, this should
--be the time required to detect a path failure. You may be able to reduce
--this if your device outages are independent, or if you are using the
--Pacemaker integration.
--
--=item B<-2> I<N>
--
--Set slot allocation timeout to N seconds. You should not need to tune
--this.
--
--=item B<-3> I<N>
--
--Set daemon loop timeout to N seconds. You should not need to tune this.
--
--=item B<-4> I<N>
--
--Set I<msgwait> timeout to N seconds. This should be twice the I<watchdog>
--timeout. This is the time after which a message written to a node's slot
--will be considered delivered. (Or long enough for the node to detect
--that it needed to self-fence.)
--
--This also affects the I<stonith-timeout> in Pacemaker's CIB; see below.
--
--=back
--
--=head2 list
--
--Example usage:
--
-- # sbd -d /dev/sda1 list
-- 0 hex-0 clear
-- 1 hex-7 clear
-- 2 hex-9 clear
--
--List all allocated slots on device, and messages. You should see all
--cluster nodes that have ever been started against this device. Nodes
--that are currently running should have a I<clear> state; nodes that have
--been fenced, but not yet restarted, will show the appropriate fencing
--message.
--
--=head2 dump
--
--Example usage:
--
-- # sbd -d /dev/sda1 dump
-- ==Dumping header on disk /dev/sda1
-- Header version : 2
-- Number of slots : 255
-- Sector size : 512
-- Timeout (watchdog) : 15
-- Timeout (allocate) : 2
-- Timeout (loop) : 1
-- Timeout (msgwait) : 30
-- ==Header on disk /dev/sda1 is dumped
--
--Dump meta-data header from device.
--
--=head2 watch
--
--Example usage:
--
-- sbd -d /dev/sdc2 -d /dev/sdd3 -P watch
--
--This command will make C<sbd> start in daemon mode. It will constantly monitor
--the message slot of the local node for incoming messages, reachability, and
--optionally take Pacemaker's state into account.
--
--C<sbd> B<must> be started on boot before the cluster stack! See below
--for enabling this according to your boot environment.
--
--The options for this mode are rarely specified directly on the
--commandline directly, but most frequently set via F</etc/sysconfig/sbd>.
--
--It also constantly monitors connectivity to the storage device, and
--self-fences in case the partition becomes unreachable, guaranteeing that it
--does not disconnect from fencing messages.
--
--A node slot is automatically allocated on the device(s) the first time
--the daemon starts watching the device; hence, manual allocation is not
--usually required.
--
--If a watchdog is used together with the C<sbd> as is strongly
--recommended, the watchdog is activated at initial start of the sbd
--daemon. The watchdog is refreshed every time the majority of SBD devices
--has been successfully read. Using a watchdog provides additional
--protection against C<sbd> crashing.
--
--If the Pacemaker integration is activated, C<sbd> will B<not> self-fence
--if device majority is lost, if:
--
--=over
--
--=item 1.
--
--The partition the node is in is still quorate according to the CIB;
--
--=item 2.
--
--it is still quorate according to Corosync's node count;
--
--=item 3.
--
--the node itself is considered online and healthy by Pacemaker.
--
--=back
--
--This allows C<sbd> to survive temporary outages of the majority of
--devices. However, while the cluster is in such a degraded state, it can
--neither successfully fence nor be shutdown cleanly (as taking the
--cluster below the quorum threshold will immediately cause all remaining
--nodes to self-fence). In short, it will not tolerate any further faults.
--Please repair the system before continuing.
--
--There is one C<sbd> process that acts as a master to which all watchers
--report; one per device to monitor the node's slot; and, optionally, one
--that handles the Pacemaker integration.
--
--=over
--
--=item B<-W>
--
--Enable or disable use of the system watchdog to protect against the sbd
--processes failing and the node being left in an undefined state. Specify
--this once to enable, twice to disable.
--
--Defaults to I<enabled>.
--
--=item B<-w> F</dev/watchdog>
--
--This can be used to override the default watchdog device used and should not
--usually be necessary.
--
--=item B<-p> F</var/run/sbd.pid>
--
--This option can be used to specify a pidfile for the main sbd process.
--
--=item B<-F> I<N>
--
--Number of failures before a failing servant process will not be restarted
--immediately until the dampening delay has expired. If set to zero, servants
--will be restarted immediately and indefinitely. If set to one, a failed
--servant will be restarted once every B<-t> seconds. If set to a different
--value, the servant will be restarted that many times within the dampening
--period and then delay.
--
--Defaults to I<1>.
--
--=item B<-t> I<N>
--
--Dampening delay before faulty servants are restarted. Combined with C<-F 1>,
--the most logical way to tune the restart frequency of servant processes.
--Default is 5 seconds.
--
--If set to zero, processes will be restarted indefinitely and immediately.
--
--=item B<-P>
--
--Enable Pacemaker integration which checks Pacemaker quorum and node health.
--Specify this once to enable, twice to disable.
--
--Defaults to I<enabled>.
--
--=item B<-S> I<N>
--
--Set the start mode. (Defaults to I<0>.)
--
--If this is set to zero, sbd will always start up unconditionally,
--regardless of whether the node was previously fenced or not.
--
--If set to one, sbd will only start if the node was previously shutdown
--cleanly (as indicated by an exit request message in the slot), or if the
--slot is empty. A reset, crashdump, or power-off request in any slot will
--halt the start up.
--
--This is useful to prevent nodes from rejoining if they were faulty. The
--node must be manually "unfenced" by sending an empty message to it:
--
-- sbd -d /dev/sda1 message node1 clear
--
--=item B<-s> I<N>
--
--Set the start-up wait time for devices. (Defaults to I<120>.)
--
--Dynamic block devices such as iSCSI might not be fully initialized and
--present yet. This allows one to set a timeout for waiting for devices to
--appear on start-up. If set to 0, start-up will be aborted immediately if
--no devices are available.
--
--=item B<-Z>
--
--Enable trace mode. B<Warning: this is unsafe for production, use at your
--own risk!> Specifying this once will turn all reboots or power-offs, be
--they caused by self-fence decisions or messages, into a crashdump.
--Specifying this twice will just log them but not continue running.
--
--=item B<-T>
--
--By default, the daemon will set the watchdog timeout as specified in the
--device metadata. However, this does not work for every watchdog device.
--In this case, you must manually ensure that the watchdog timeout used by
--the system correctly matches the SBD settings, and then specify this
--option to allow C<sbd> to continue with start-up.
--
--=item B<-5> I<N>
--
--Warn if the time interval for tickling the watchdog exceeds this many seconds.
--Since the node is unable to log the watchdog expiry (it reboots immediately
--without a chance to write its logs to disk), this is very useful for getting
--an indication that the watchdog timeout is too short for the IO load of the
--system.
--
--Default is 3 seconds, set to zero to disable.
--
--=item B<-C> I<N>
--
--Watchdog timeout to set before crashdumping. If SBD is set to crashdump
--instead of reboot - either via the trace mode settings or the I<external/sbd>
--fencing agent's parameter -, SBD will adjust the watchdog timeout to this
--setting before triggering the dump. Otherwise, the watchdog might trigger and
--prevent a successful crashdump from ever being written.
--
--Set to zero (= default) to disable.
--
--=item B<-r> I<N>
--
--Actions to be executed when the watchers don't timely report to the sbd
--master process or one of the watchers detects that the master process
--has died.
--
--Set timeout-action to comma-separated combination of
--noflush|flush plus reboot|crashdump|off.
--If just one of both is given the other stays at the default.
--
--This doesn't affect actions like off, crashdump, reboot explicitly
--triggered via message slots.
--And it does as well not configure the action a watchdog would
--trigger should it run off (there is no generic interface).
--
--Defaults to flush,reboot.
--
--=back
--
--=head2 allocate
--
--Example usage:
--
-- sbd -d /dev/sda1 allocate node1
--
--Explicitly allocates a slot for the specified node name. This should
--rarely be necessary, as every node will automatically allocate itself a
--slot the first time it starts up on watch mode.
--
--=head2 message
--
--Example usage:
--
-- sbd -d /dev/sda1 message node1 test
--
--Writes the specified message to node's slot. This is rarely done
--directly, but rather abstracted via the C<external/sbd> fencing agent
--configured as a cluster resource.
--
--Supported message types are:
--
--=over
--
--=item test
--
--This only generates a log message on the receiving node and can be used
--to check if SBD is seeing the device. Note that this could overwrite a
--fencing request send by the cluster, so should not be used during
--production.
--
--=item reset
--
--Reset the target upon receipt of this message.
--
--=item off
--
--Power-off the target.
--
--=item crashdump
--
--Cause the target node to crashdump.
--
--=item exit
--
--This will make the C<sbd> daemon exit cleanly on the target. You should
--B<not> send this message manually; this is handled properly during
--shutdown of the cluster stack. Manually stopping the daemon means the
--node is unprotected!
--
--=item clear
--
--This message indicates that no real message has been sent to the node.
--You should not set this manually; C<sbd> will clear the message slot
--automatically during start-up, and setting this manually could overwrite
--a fencing message by the cluster.
--
--=back
--
--=head2 query-watchdog
--
--Example usage:
--
-- sbd query-watchdog
--
--Check for available watchdog devices and print some info.
--
--B<Warning>: This command will arm the watchdog during query, and if your
--watchdog refuses disarming (for example, if its kernel module has the
--'nowayout' parameter set) this will reset your system.
--
--=head2 test-watchdog
--
--Example usage:
--
-- sbd test-watchdog [-w /dev/watchdog3]
--
--Test specified watchdog device (/dev/watchdog by default).
--
--B<Warning>: This command will arm the watchdog and have your system reset
--in case your watchdog is working properly! If issued from an interactive
--session, it will prompt for confirmation.
--
--=head1 Base system configuration
--
--=head2 Configure a watchdog
--
--It is highly recommended that you configure your Linux system to load a
--watchdog driver with hardware assistance (as is available on most modern
--systems), such as I<hpwdt>, I<iTCO_wdt>, or others. As a fall-back, you
--can use the I<softdog> module.
--
--No other software must access the watchdog timer; it can only be
--accessed by one process at any given time. Some hardware vendors ship
--systems management software that use the watchdog for system resets
--(f.e. HP ASR daemon). Such software has to be disabled if the watchdog
--is to be used by SBD.
--
--=head2 Choosing and initializing the block device(s)
--
--First, you have to decide if you want to use one, two, or three devices.
--
--If you are using multiple ones, they should reside on independent
--storage setups. Putting all three of them on the same logical unit for
--example would not provide any additional redundancy.
--
--The SBD device can be connected via Fibre Channel, Fibre Channel over
--Ethernet, or even iSCSI. Thus, an iSCSI target can become a sort-of
--network-based quorum server; the advantage is that it does not require
--a smart host at your third location, just block storage.
--
--The SBD partitions themselves B<must not> be mirrored (via MD,
--DRBD, or the storage layer itself), since this could result in a
--split-mirror scenario. Nor can they reside on cLVM2 volume groups, since
--they must be accessed by the cluster stack before it has started the
--cLVM2 daemons; hence, these should be either raw partitions or logical
--units on (multipath) storage.
--
--The block device(s) must be accessible from all nodes. (While it is not
--necessary that they share the same path name on all nodes, this is
--considered a very good idea.)
--
--SBD will only use about one megabyte per device, so you can easily
--create a small partition, or very small logical units. (The size of the
--SBD device depends on the block size of the underlying device. Thus, 1MB
--is fine on plain SCSI devices and SAN storage with 512 byte blocks. On
--the IBM s390x architecture in particular, disks default to 4k blocks,
--and thus require roughly 4MB.)
--
--The number of devices will affect the operation of SBD as follows:
--
--=over
--
--=item One device
--
--In its most simple implementation, you use one device only. This is
--appropriate for clusters where all your data is on the same shared
--storage (with internal redundancy) anyway; the SBD device does not
--introduce an additional single point of failure then.
--
--If the SBD device is not accessible, the daemon will fail to start and
--inhibit startup of cluster services.
--
--=item Two devices
--
--This configuration is a trade-off, primarily aimed at environments where
--host-based mirroring is used, but no third storage device is available.
--
--SBD will not commit suicide if it loses access to one mirror leg; this
--allows the cluster to continue to function even in the face of one outage.
--
--However, SBD will not fence the other side while only one mirror leg is
--available, since it does not have enough knowledge to detect an asymmetric
--split of the storage. So it will not be able to automatically tolerate a
--second failure while one of the storage arrays is down. (Though you
--can use the appropriate crm command to acknowledge the fence manually.)
--
--It will not start unless both devices are accessible on boot.
--
--=item Three devices
--
--In this most reliable and recommended configuration, SBD will only
--self-fence if more than one device is lost; hence, this configuration is
--resilient against temporary single device outages (be it due to failures
--or maintenance). Fencing messages can still be successfully relayed if
--at least two devices remain accessible.
--
--This configuration is appropriate for more complex scenarios where
--storage is not confined to a single array. For example, host-based
--mirroring solutions could have one SBD per mirror leg (not mirrored
--itself), and an additional tie-breaker on iSCSI.
--
--It will only start if at least two devices are accessible on boot.
--
--=back
--
--After you have chosen the devices and created the appropriate partitions
--and perhaps multipath alias names to ease management, use the C<sbd create>
--command described above to initialize the SBD metadata on them.
--
--=head3 Sharing the block device(s) between multiple clusters
--
--It is possible to share the block devices between multiple clusters,
--provided the total number of nodes accessing them does not exceed I<255>
--nodes, and they all must share the same SBD timeouts (since these are
--part of the metadata).
--
--If you are using multiple devices this can reduce the setup overhead
--required. However, you should B<not> share devices between clusters in
--different security domains.
--
--=head2 Configure SBD to start on boot
--
--On systems using C<sysvinit>, the C<openais> or C<corosync> system
--start-up scripts must handle starting or stopping C<sbd> as required
--before starting the rest of the cluster stack.
--
--For C<systemd>, sbd simply has to be enabled using
--
-- systemctl enable sbd.service
--
--The daemon is brought online on each node before corosync and Pacemaker
--are started, and terminated only after all other cluster components have
--been shut down - ensuring that cluster resources are never activated
--without SBD supervision.
--
--=head2 Configuration via sysconfig
--
--The system instance of C<sbd> is configured via F</etc/sysconfig/sbd>.
--In this file, you must specify the device(s) used, as well as any
--options to pass to the daemon:
--
-- SBD_DEVICE="/dev/sda1;/dev/sdb1;/dev/sdc1"
-- SBD_PACEMAKER="true"
--
--C<sbd> will fail to start if no C<SBD_DEVICE> is specified. See the
--installed template for more options that can be configured here.
--In general configuration done via parameters takes precedence over
--the configuration from the configuration file.
--
--=head2 Testing the sbd installation
--
--After a restart of the cluster stack on this node, you can now try
--sending a test message to it as root, from this or any other node:
--
-- sbd -d /dev/sda1 message node1 test
--
--The node will acknowledge the receipt of the message in the system logs:
--
-- Aug 29 14:10:00 node1 sbd: [13412]: info: Received command test from node2
--
--This confirms that SBD is indeed up and running on the node, and that it
--is ready to receive messages.
--
--Make B<sure> that F</etc/sysconfig/sbd> is identical on all cluster
--nodes, and that all cluster nodes are running the daemon.
--
--=head1 Pacemaker CIB integration
--
--=head2 Fencing resource
--
--Pacemaker can only interact with SBD to issue a node fence if there is a
--configure fencing resource. This should be a primitive, not a clone, as
--follows:
--
-- primitive fencing-sbd stonith:external/sbd \
-- params pcmk_delay_max=30
--
--This will automatically use the same devices as configured in
--F</etc/sysconfig/sbd>.
--
--While you should not configure this as a clone (as Pacemaker will register
--the fencing device on each node automatically), the I<pcmk_delay_max>
--setting enables random fencing delay which ensures, in a scenario where a
--split-brain scenario did occur in a two node cluster, that one of the nodes
--has a better chance to survive to avoid double fencing.
--
--SBD also supports turning the reset request into a crash request, which
--may be helpful for debugging if you have kernel crashdumping configured;
--then, every fence request will cause the node to dump core. You can
--enable this via the C<crashdump="true"> parameter on the fencing
--resource. This is B<not> recommended for production use, but only for
--debugging phases.
--
--=head2 General cluster properties
--
--You must also enable STONITH in general, and set the STONITH timeout to
--be at least twice the I<msgwait> timeout you have configured, to allow
--enough time for the fencing message to be delivered. If your I<msgwait>
--timeout is 60 seconds, this is a possible configuration:
--
-- property stonith-enabled="true"
-- property stonith-timeout="120s"
--
--B<Caution>: if I<stonith-timeout> is too low for I<msgwait> and the
--system overhead, sbd will never be able to successfully complete a fence
--request. This will create a fencing loop.
--
--Note that the sbd fencing agent will try to detect this and
--automatically extend the I<stonith-timeout> setting to a reasonable
--value, on the assumption that sbd modifying your configuration is
--preferable to not fencing.
--
--=head1 Management tasks
--
--=head2 Recovering from temporary SBD device outage
--
--If you have multiple devices, failure of a single device is not immediately
--fatal. C<sbd> will retry to restart the monitor for the device every 5
--seconds by default. However, you can tune this via the options to the
--I<watch> command.
--
--In case you wish the immediately force a restart of all currently
--disabled monitor processes, you can send a I<SIGUSR1> to the SBD
--I<inquisitor> process.
--
--
--=head1 LICENSE
--
--Copyright (C) 2008-2013 Lars Marowsky-Bree
--
--This program is free software; you can redistribute it and/or
--modify it under the terms of the GNU General Public
--License as published by the Free Software Foundation; either
--version 2 of the License, or (at your option) any later version.
--
--This software is distributed in the hope that it will be useful,
--but WITHOUT ANY WARRANTY; without even the implied warranty of
--MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
--General Public License for more details.
--
--For details see the GNU General Public License at
--http://www.gnu.org/licenses/gpl-2.0.html (version 2) and/or
--http://www.gnu.org/licenses/gpl.html (the newest as per "any later").
-diff --git a/man/sbd.8.pod.in b/man/sbd.8.pod.in
-new file mode 100644
-index 0000000..ff89c82
---- /dev/null
-+++ b/man/sbd.8.pod.in
-@@ -0,0 +1,675 @@
-+=head1 NAME
-+
-+sbd - STONITH Block Device daemon
-+
-+=head1 SYNOPSIS
-+
-+sbd <-d F</dev/...>> [options] C<command>
-+
-+=head1 SUMMARY
-+
-+SBD provides a node fencing mechanism (Shoot the other node in the head,
-+STONITH) for Pacemaker-based clusters through the exchange of messages
-+via shared block storage such as for example a SAN, iSCSI, FCoE. This
-+isolates the fencing mechanism from changes in firmware version or
-+dependencies on specific firmware controllers, and it can be used as a
-+STONITH mechanism in all configurations that have reliable shared
-+storage.
-+
-+SBD can also be used without any shared storage. In this mode, the
-+watchdog device will be used to reset the node if it loses quorum, if
-+any monitored daemon is lost and not recovered or if Pacemaker decides
-+that the node requires fencing.
-+
-+The F<sbd> binary implements both the daemon that watches the message
-+slots as well as the management tool for interacting with the block
-+storage device(s). This mode of operation is specified via the
-+C<command> parameter; some of these modes take additional parameters.
-+
-+To use SBD with shared storage, you must first C<create> the messaging
-+layout on one to three block devices. Second, configure
-+F</etc/sysconfig/sbd> to list those devices (and possibly adjust other
-+options), and restart the cluster stack on each node to ensure that
-+C<sbd> is started. Third, configure the C<external/sbd> fencing
-+resource in the Pacemaker CIB.
-+
-+Each of these steps is documented in more detail below the description
-+of the command options.
-+
-+C<sbd> can only be used as root.
-+
-+=head2 GENERAL OPTIONS
-+
-+=over
-+
-+=item B<-d> F</dev/...>
-+
-+Specify the block device(s) to be used. If you have more than one,
-+specify this option up to three times. This parameter is mandatory for
-+all modes, since SBD always needs a block device to interact with.
-+
-+This man page uses F</dev/sda1>, F</dev/sdb1>, and F</dev/sdc1> as
-+example device names for brevity. However, in your production
-+environment, you should instead always refer to them by using the long,
-+stable device name (e.g.,
-+F</dev/disk/by-id/dm-uuid-part1-mpath-3600508b400105b5a0001500000250000>).
-+
-+=item B<-v|-vv|-vvv>
-+
-+Enable verbose|debug|debug-library logging (optional)
-+
-+=item B<-h>
-+
-+Display a concise summary of C<sbd> options.
-+
-+=item B<-n> I<node>
-+
-+Set local node name; defaults to C<uname -n>. This should not need to be
-+set.
-+
-+=item B<-R>
-+
-+Do B<not> enable realtime priority. By default, C<sbd> runs at realtime
-+priority, locks itself into memory, and also acquires highest IO
-+priority to protect itself against interference from other processes on
-+the system. This is a debugging-only option.
-+
-+=item B<-I> I<N>
-+
-+Async IO timeout (defaults to 3 seconds, optional). You should not need
-+to adjust this unless your IO setup is really very slow.
-+
-+(In daemon mode, the watchdog is refreshed when the majority of devices
-+could be read within this time.)
-+
-+=back
-+
-+=head2 create
-+
-+Example usage:
-+
-+ sbd -d /dev/sdc2 -d /dev/sdd3 create
-+
-+If you specify the I<create> command, sbd will write a metadata header
-+to the device(s) specified and also initialize the messaging slots for
-+up to 255 nodes.
-+
-+B<Warning>: This command will not prompt for confirmation. Roughly the
-+first megabyte of the specified block device(s) will be overwritten
-+immediately and without backup.
-+
-+This command accepts a few options to adjust the default timings that
-+are written to the metadata (to ensure they are identical across all
-+nodes accessing the device).
-+
-+=over
-+
-+=item B<-1> I<N>
-+
-+Set watchdog timeout to N seconds. This depends mostly on your storage
-+latency; the majority of devices must be successfully read within this
-+time, or else the node will self-fence.
-+
-+If your sbd device(s) reside on a multipath setup or iSCSI, this should
-+be the time required to detect a path failure. You may be able to reduce
-+this if your device outages are independent, or if you are using the
-+Pacemaker integration.
-+
-+=item B<-2> I<N>
-+
-+Set slot allocation timeout to N seconds. You should not need to tune
-+this.
-+
-+=item B<-3> I<N>
-+
-+Set daemon loop timeout to N seconds. You should not need to tune this.
-+
-+=item B<-4> I<N>
-+
-+Set I<msgwait> timeout to N seconds. This should be twice the I<watchdog>
-+timeout. This is the time after which a message written to a node's slot
-+will be considered delivered. (Or long enough for the node to detect
-+that it needed to self-fence.)
-+
-+This also affects the I<stonith-timeout> in Pacemaker's CIB; see below.
-+
-+=back
-+
-+=head2 list
-+
-+Example usage:
-+
-+ # sbd -d /dev/sda1 list
-+ 0 hex-0 clear
-+ 1 hex-7 clear
-+ 2 hex-9 clear
-+
-+List all allocated slots on device, and messages. You should see all
-+cluster nodes that have ever been started against this device. Nodes
-+that are currently running should have a I<clear> state; nodes that have
-+been fenced, but not yet restarted, will show the appropriate fencing
-+message.
-+
-+=head2 dump
-+
-+Example usage:
-+
-+ # sbd -d /dev/sda1 dump
-+ ==Dumping header on disk /dev/sda1
-+ Header version : 2
-+ Number of slots : 255
-+ Sector size : 512
-+ Timeout (watchdog) : 15
-+ Timeout (allocate) : 2
-+ Timeout (loop) : 1
-+ Timeout (msgwait) : 30
-+ ==Header on disk /dev/sda1 is dumped
-+
-+Dump meta-data header from device.
-+
-+=head2 watch
-+
-+Example usage:
-+
-+ sbd -d /dev/sdc2 -d /dev/sdd3 -P watch
-+
-+This command will make C<sbd> start in daemon mode. It will constantly monitor
-+the message slot of the local node for incoming messages, reachability, and
-+optionally take Pacemaker's state into account.
-+
-+C<sbd> B<must> be started on boot before the cluster stack! See below
-+for enabling this according to your boot environment.
-+
-+The options for this mode are rarely specified directly on the
-+commandline directly, but most frequently set via F</etc/sysconfig/sbd>.
-+
-+It also constantly monitors connectivity to the storage device, and
-+self-fences in case the partition becomes unreachable, guaranteeing that it
-+does not disconnect from fencing messages.
-+
-+A node slot is automatically allocated on the device(s) the first time
-+the daemon starts watching the device; hence, manual allocation is not
-+usually required.
-+
-+If a watchdog is used together with the C<sbd> as is strongly
-+recommended, the watchdog is activated at initial start of the sbd
-+daemon. The watchdog is refreshed every time the majority of SBD devices
-+has been successfully read. Using a watchdog provides additional
-+protection against C<sbd> crashing.
-+
-+If the Pacemaker integration is activated, C<sbd> will B<not> self-fence
-+if device majority is lost, if:
-+
-+=over
-+
-+=item 1.
-+
-+The partition the node is in is still quorate according to the CIB;
-+
-+=item 2.
-+
-+it is still quorate according to Corosync's node count;
-+
-+=item 3.
-+
-+the node itself is considered online and healthy by Pacemaker.
-+
-+=back
-+
-+This allows C<sbd> to survive temporary outages of the majority of
-+devices. However, while the cluster is in such a degraded state, it can
-+neither successfully fence nor be shutdown cleanly (as taking the
-+cluster below the quorum threshold will immediately cause all remaining
-+nodes to self-fence). In short, it will not tolerate any further faults.
-+Please repair the system before continuing.
-+
-+There is one C<sbd> process that acts as a master to which all watchers
-+report; one per device to monitor the node's slot; and, optionally, one
-+that handles the Pacemaker integration.
-+
-+=over
-+
-+=item B<-W>
-+
-+Enable or disable use of the system watchdog to protect against the sbd
-+processes failing and the node being left in an undefined state. Specify
-+this once to enable, twice to disable.
-+
-+Defaults to I<enabled>.
-+
-+=item B<-w> F</dev/watchdog>
-+
-+This can be used to override the default watchdog device used and should not
-+usually be necessary.
-+
-+=item B<-p> F</var/run/sbd.pid>
-+
-+This option can be used to specify a pidfile for the main sbd process.
-+
-+=item B<-F> I<N>
-+
-+Number of failures before a failing servant process will not be restarted
-+immediately until the dampening delay has expired. If set to zero, servants
-+will be restarted immediately and indefinitely. If set to one, a failed
-+servant will be restarted once every B<-t> seconds. If set to a different
-+value, the servant will be restarted that many times within the dampening
-+period and then delay.
-+
-+Defaults to I<1>.
-+
-+=item B<-t> I<N>
-+
-+Dampening delay before faulty servants are restarted. Combined with C<-F 1>,
-+the most logical way to tune the restart frequency of servant processes.
-+Default is 5 seconds.
-+
-+If set to zero, processes will be restarted indefinitely and immediately.
-+
-+=item B<-P>
-+
-+Enable Pacemaker integration which checks Pacemaker quorum and node health.
-+Specify this once to enable, twice to disable.
-+
-+Defaults to I<enabled>.
-+
-+=item B<-S> I<N>
-+
-+Set the start mode. (Defaults to I<0>.)
-+
-+If this is set to zero, sbd will always start up unconditionally,
-+regardless of whether the node was previously fenced or not.
-+
-+If set to one, sbd will only start if the node was previously shutdown
-+cleanly (as indicated by an exit request message in the slot), or if the
-+slot is empty. A reset, crashdump, or power-off request in any slot will
-+halt the start up.
-+
-+This is useful to prevent nodes from rejoining if they were faulty. The
-+node must be manually "unfenced" by sending an empty message to it:
-+
-+ sbd -d /dev/sda1 message node1 clear
-+
-+=item B<-s> I<N>
-+
-+Set the start-up wait time for devices. (Defaults to I<120>.)
-+
-+Dynamic block devices such as iSCSI might not be fully initialized and
-+present yet. This allows one to set a timeout for waiting for devices to
-+appear on start-up. If set to 0, start-up will be aborted immediately if
-+no devices are available.
-+
-+=item B<-Z>
-+
-+Enable trace mode. B<Warning: this is unsafe for production, use at your
-+own risk!> Specifying this once will turn all reboots or power-offs, be
-+they caused by self-fence decisions or messages, into a crashdump.
-+Specifying this twice will just log them but not continue running.
-+
-+=item B<-T>
-+
-+By default, the daemon will set the watchdog timeout as specified in the
-+device metadata. However, this does not work for every watchdog device.
-+In this case, you must manually ensure that the watchdog timeout used by
-+the system correctly matches the SBD settings, and then specify this
-+option to allow C<sbd> to continue with start-up.
-+
-+=item B<-5> I<N>
-+
-+Warn if the time interval for tickling the watchdog exceeds this many seconds.
-+Since the node is unable to log the watchdog expiry (it reboots immediately
-+without a chance to write its logs to disk), this is very useful for getting
-+an indication that the watchdog timeout is too short for the IO load of the
-+system.
-+
-+Default is 3 seconds, set to zero to disable.
-+
-+=item B<-C> I<N>
-+
-+Watchdog timeout to set before crashdumping. If SBD is set to crashdump
-+instead of reboot - either via the trace mode settings or the I<external/sbd>
-+fencing agent's parameter -, SBD will adjust the watchdog timeout to this
-+setting before triggering the dump. Otherwise, the watchdog might trigger and
-+prevent a successful crashdump from ever being written.
-+
-+Set to zero (= default) to disable.
-+
-+=item B<-r> I<N>
-+
-+Actions to be executed when the watchers don't timely report to the sbd
-+master process or one of the watchers detects that the master process
-+has died.
-+
-+Set timeout-action to comma-separated combination of
-+noflush|flush plus reboot|crashdump|off.
-+If just one of both is given the other stays at the default.
-+
-+This doesn't affect actions like off, crashdump, reboot explicitly
-+triggered via message slots.
-+And it does as well not configure the action a watchdog would
-+trigger should it run off (there is no generic interface).
-+
-+Defaults to flush,reboot.
-+
-+=back
-+
-+=head2 allocate
-+
-+Example usage:
-+
-+ sbd -d /dev/sda1 allocate node1
-+
-+Explicitly allocates a slot for the specified node name. This should
-+rarely be necessary, as every node will automatically allocate itself a
-+slot the first time it starts up on watch mode.
-+
-+=head2 message
-+
-+Example usage:
-+
-+ sbd -d /dev/sda1 message node1 test
-+
-+Writes the specified message to node's slot. This is rarely done
-+directly, but rather abstracted via the C<external/sbd> fencing agent
-+configured as a cluster resource.
-+
-+Supported message types are:
-+
-+=over
-+
-+=item test
-+
-+This only generates a log message on the receiving node and can be used
-+to check if SBD is seeing the device. Note that this could overwrite a
-+fencing request send by the cluster, so should not be used during
-+production.
-+
-+=item reset
-+
-+Reset the target upon receipt of this message.
-+
-+=item off
-+
-+Power-off the target.
-+
-+=item crashdump
-+
-+Cause the target node to crashdump.
-+
-+=item exit
-+
-+This will make the C<sbd> daemon exit cleanly on the target. You should
-+B<not> send this message manually; this is handled properly during
-+shutdown of the cluster stack. Manually stopping the daemon means the
-+node is unprotected!
-+
-+=item clear
-+
-+This message indicates that no real message has been sent to the node.
-+You should not set this manually; C<sbd> will clear the message slot
-+automatically during start-up, and setting this manually could overwrite
-+a fencing message by the cluster.
-+
-+=back
-+
-+=head2 query-watchdog
-+
-+Example usage:
-+
-+ sbd query-watchdog
-+
-+Check for available watchdog devices and print some info.
-+
-+B<Warning>: This command will arm the watchdog during query, and if your
-+watchdog refuses disarming (for example, if its kernel module has the
-+'nowayout' parameter set) this will reset your system.
-+
-+=head2 test-watchdog
-+
-+Example usage:
-+
-+ sbd test-watchdog [-w /dev/watchdog3]
-+
-+Test specified watchdog device (/dev/watchdog by default).
-+
-+B<Warning>: This command will arm the watchdog and have your system reset
-+in case your watchdog is working properly! If issued from an interactive
-+session, it will prompt for confirmation.
-+
-+=head1 Base system configuration
-+
-+=head2 Configure a watchdog
-+
-+It is highly recommended that you configure your Linux system to load a
-+watchdog driver with hardware assistance (as is available on most modern
-+systems), such as I<hpwdt>, I<iTCO_wdt>, or others. As a fall-back, you
-+can use the I<softdog> module.
-+
-+No other software must access the watchdog timer; it can only be
-+accessed by one process at any given time. Some hardware vendors ship
-+systems management software that use the watchdog for system resets
-+(f.e. HP ASR daemon). Such software has to be disabled if the watchdog
-+is to be used by SBD.
-+
-+=head2 Choosing and initializing the block device(s)
-+
-+First, you have to decide if you want to use one, two, or three devices.
-+
-+If you are using multiple ones, they should reside on independent
-+storage setups. Putting all three of them on the same logical unit for
-+example would not provide any additional redundancy.
-+
-+The SBD device can be connected via Fibre Channel, Fibre Channel over
-+Ethernet, or even iSCSI. Thus, an iSCSI target can become a sort-of
-+network-based quorum server; the advantage is that it does not require
-+a smart host at your third location, just block storage.
-+
-+The SBD partitions themselves B<must not> be mirrored (via MD,
-+DRBD, or the storage layer itself), since this could result in a
-+split-mirror scenario. Nor can they reside on cLVM2 volume groups, since
-+they must be accessed by the cluster stack before it has started the
-+cLVM2 daemons; hence, these should be either raw partitions or logical
-+units on (multipath) storage.
-+
-+The block device(s) must be accessible from all nodes. (While it is not
-+necessary that they share the same path name on all nodes, this is
-+considered a very good idea.)
-+
-+SBD will only use about one megabyte per device, so you can easily
-+create a small partition, or very small logical units. (The size of the
-+SBD device depends on the block size of the underlying device. Thus, 1MB
-+is fine on plain SCSI devices and SAN storage with 512 byte blocks. On
-+the IBM s390x architecture in particular, disks default to 4k blocks,
-+and thus require roughly 4MB.)
-+
-+The number of devices will affect the operation of SBD as follows:
-+
-+=over
-+
-+=item One device
-+
-+In its most simple implementation, you use one device only. This is
-+appropriate for clusters where all your data is on the same shared
-+storage (with internal redundancy) anyway; the SBD device does not
-+introduce an additional single point of failure then.
-+
-+If the SBD device is not accessible, the daemon will fail to start and
-+inhibit startup of cluster services.
-+
-+=item Two devices
-+
-+This configuration is a trade-off, primarily aimed at environments where
-+host-based mirroring is used, but no third storage device is available.
-+
-+SBD will not commit suicide if it loses access to one mirror leg; this
-+allows the cluster to continue to function even in the face of one outage.
-+
-+However, SBD will not fence the other side while only one mirror leg is
-+available, since it does not have enough knowledge to detect an asymmetric
-+split of the storage. So it will not be able to automatically tolerate a
-+second failure while one of the storage arrays is down. (Though you
-+can use the appropriate crm command to acknowledge the fence manually.)
-+
-+It will not start unless both devices are accessible on boot.
-+
-+=item Three devices
-+
-+In this most reliable and recommended configuration, SBD will only
-+self-fence if more than one device is lost; hence, this configuration is
-+resilient against temporary single device outages (be it due to failures
-+or maintenance). Fencing messages can still be successfully relayed if
-+at least two devices remain accessible.
-+
-+This configuration is appropriate for more complex scenarios where
-+storage is not confined to a single array. For example, host-based
-+mirroring solutions could have one SBD per mirror leg (not mirrored
-+itself), and an additional tie-breaker on iSCSI.
-+
-+It will only start if at least two devices are accessible on boot.
-+
-+=back
-+
-+After you have chosen the devices and created the appropriate partitions
-+and perhaps multipath alias names to ease management, use the C<sbd create>
-+command described above to initialize the SBD metadata on them.
-+
-+=head3 Sharing the block device(s) between multiple clusters
-+
-+It is possible to share the block devices between multiple clusters,
-+provided the total number of nodes accessing them does not exceed I<255>
-+nodes, and they all must share the same SBD timeouts (since these are
-+part of the metadata).
-+
-+If you are using multiple devices this can reduce the setup overhead
-+required. However, you should B<not> share devices between clusters in
-+different security domains.
-+
-+=head2 Configure SBD to start on boot
-+
-+On systems using C<sysvinit>, the C<openais> or C<corosync> system
-+start-up scripts must handle starting or stopping C<sbd> as required
-+before starting the rest of the cluster stack.
-+
-+For C<systemd>, sbd simply has to be enabled using
-+
-+ systemctl enable sbd.service
-+
-+The daemon is brought online on each node before corosync and Pacemaker
-+are started, and terminated only after all other cluster components have
-+been shut down - ensuring that cluster resources are never activated
-+without SBD supervision.
-+
-+=head2 Configuration via sysconfig
-+
-+The system instance of C<sbd> is configured via F</etc/sysconfig/sbd>.
-+In this file, you must specify the device(s) used, as well as any
-+options to pass to the daemon:
-+
-+ SBD_DEVICE="/dev/sda1;/dev/sdb1;/dev/sdc1"
-+ SBD_PACEMAKER="true"
-+
-+C<sbd> will fail to start if no C<SBD_DEVICE> is specified. See the
-+installed template or section for configuration via environment
-+for more options that can be configured here.
-+In general configuration done via parameters takes precedence over
-+the configuration from the configuration file.
-+
-+=head2 Configuration via environment
-+
-+=over
-+@environment_section@
-+=back
-+
-+=head2 Testing the sbd installation
-+
-+After a restart of the cluster stack on this node, you can now try
-+sending a test message to it as root, from this or any other node:
-+
-+ sbd -d /dev/sda1 message node1 test
-+
-+The node will acknowledge the receipt of the message in the system logs:
-+
-+ Aug 29 14:10:00 node1 sbd: [13412]: info: Received command test from node2
-+
-+This confirms that SBD is indeed up and running on the node, and that it
-+is ready to receive messages.
-+
-+Make B<sure> that F</etc/sysconfig/sbd> is identical on all cluster
-+nodes, and that all cluster nodes are running the daemon.
-+
-+=head1 Pacemaker CIB integration
-+
-+=head2 Fencing resource
-+
-+Pacemaker can only interact with SBD to issue a node fence if there is a
-+configure fencing resource. This should be a primitive, not a clone, as
-+follows:
-+
-+ primitive fencing-sbd stonith:external/sbd \
-+ params pcmk_delay_max=30
-+
-+This will automatically use the same devices as configured in
-+F</etc/sysconfig/sbd>.
-+
-+While you should not configure this as a clone (as Pacemaker will register
-+the fencing device on each node automatically), the I<pcmk_delay_max>
-+setting enables random fencing delay which ensures, in a scenario where a
-+split-brain scenario did occur in a two node cluster, that one of the nodes
-+has a better chance to survive to avoid double fencing.
-+
-+SBD also supports turning the reset request into a crash request, which
-+may be helpful for debugging if you have kernel crashdumping configured;
-+then, every fence request will cause the node to dump core. You can
-+enable this via the C<crashdump="true"> parameter on the fencing
-+resource. This is B<not> recommended for production use, but only for
-+debugging phases.
-+
-+=head2 General cluster properties
-+
-+You must also enable STONITH in general, and set the STONITH timeout to
-+be at least twice the I<msgwait> timeout you have configured, to allow
-+enough time for the fencing message to be delivered. If your I<msgwait>
-+timeout is 60 seconds, this is a possible configuration:
-+
-+ property stonith-enabled="true"
-+ property stonith-timeout="120s"
-+
-+B<Caution>: if I<stonith-timeout> is too low for I<msgwait> and the
-+system overhead, sbd will never be able to successfully complete a fence
-+request. This will create a fencing loop.
-+
-+Note that the sbd fencing agent will try to detect this and
-+automatically extend the I<stonith-timeout> setting to a reasonable
-+value, on the assumption that sbd modifying your configuration is
-+preferable to not fencing.
-+
-+=head1 Management tasks
-+
-+=head2 Recovering from temporary SBD device outage
-+
-+If you have multiple devices, failure of a single device is not immediately
-+fatal. C<sbd> will retry to restart the monitor for the device every 5
-+seconds by default. However, you can tune this via the options to the
-+I<watch> command.
-+
-+In case you wish the immediately force a restart of all currently
-+disabled monitor processes, you can send a I<SIGUSR1> to the SBD
-+I<inquisitor> process.
-+
-+
-+=head1 LICENSE
-+
-+Copyright (C) 2008-2013 Lars Marowsky-Bree
-+
-+This program is free software; you can redistribute it and/or
-+modify it under the terms of the GNU General Public
-+License as published by the Free Software Foundation; either
-+version 2 of the License, or (at your option) any later version.
-+
-+This software is distributed in the hope that it will be useful,
-+but WITHOUT ANY WARRANTY; without even the implied warranty of
-+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-+General Public License for more details.
-+
-+For details see the GNU General Public License at
-+http://www.gnu.org/licenses/gpl-2.0.html (version 2) and/or
-+http://www.gnu.org/licenses/gpl.html (the newest as per "any later").
-diff --git a/src/sbd.sysconfig b/src/sbd.sysconfig
-index e1a60ed..33b50d0 100644
---- a/src/sbd.sysconfig
-+++ b/src/sbd.sysconfig
-@@ -14,7 +14,7 @@
- #
- SBD_PACEMAKER=yes
-
--## Type: list(always,clean)
-+## Type: always / clean
- ## Default: always
- #
- # Specify the start mode for sbd. Setting this to "clean" will only
-@@ -103,6 +103,7 @@ SBD_TIMEOUT_ACTION=flush,reboot
- # Thus in auto-mode sbd will check if the slice has RT-budget assigned.
- # If that is the case sbd will stay in that slice while it will
- # be moved to root-slice otherwise.
-+#
- SBD_MOVE_TO_ROOT_CGROUP=auto
-
- ## Type: string
---
-1.8.3.1
-
diff --git a/0003-Fix-scheduling-overhaul-the-whole-thing.patch b/0003-Fix-scheduling-overhaul-the-whole-thing.patch
deleted file mode 100644
index 05fab9d..0000000
--- a/0003-Fix-scheduling-overhaul-the-whole-thing.patch
+++ /dev/null
@@ -1,152 +0,0 @@
-From 4bc08cf76fc01e98cbec76bf32bb333b77f69217 Mon Sep 17 00:00:00 2001
-From: Klaus Wenninger <klaus.wenninger(a)aon.at>
-Date: Thu, 27 Feb 2020 19:02:57 +0100
-Subject: [PATCH] Fix: scheduling: overhaul the whole thing
-
-- prevent possible lockup when format in proc changes
-- properly get and handle scheduler policy & prio
-- on SCHED_RR failing push to the max with SCHED_OTHER
----
- src/sbd-common.c | 56 ++++++++++++++++++++++++++++++++++++++++++++------------
- 1 file changed, 44 insertions(+), 12 deletions(-)
-
-diff --git a/src/sbd-common.c b/src/sbd-common.c
-index 9ec43b2..c2da758 100644
---- a/src/sbd-common.c
-+++ b/src/sbd-common.c
-@@ -26,6 +26,9 @@
- #include <pwd.h>
- #include <unistd.h>
- #include <dirent.h>
-+#include <sys/time.h>
-+#include <sys/resource.h>
-+#include <limits.h>
-
- #ifdef _POSIX_MEMLOCK
- # include <sys/mman.h>
-@@ -298,7 +301,7 @@ watchdog_populate_list(void)
- FILE *file;
-
- snprintf(entry_name, sizeof(entry_name),
-- SYS_CLASS_WATCHDOG "/%s/dev", entry->d_name);
-+ SYS_CLASS_WATCHDOG "/%s/dev", entry->d_name);
- file = fopen(entry_name, "r");
- if (file) {
- int major, minor;
-@@ -667,7 +670,7 @@ static int get_realtime_budget(void)
- {
- FILE *f;
- char fname[PATH_MAX];
-- int res = -1, lnum = 0;
-+ int res = -1, lnum = 0, num;
- char *cgroup = NULL, *namespecs = NULL;
-
- snprintf(fname, PATH_MAX, "/proc/%jd/cgroup", (intmax_t)getpid());
-@@ -677,7 +680,8 @@ static int get_realtime_budget(void)
- (intmax_t)getpid());
- goto exit_res;
- }
-- while( fscanf(f, "%d:%m[^:]:%m[^\n]", &lnum, &namespecs, &cgroup) !=EOF ) {
-+ while( (num = fscanf(f, "%d:%m[^:]:%m[^\n]\n", &lnum,
-+ &namespecs, &cgroup)) !=EOF ) {
- if (namespecs && strstr(namespecs, "cpuacct")) {
- free(namespecs);
- break;
-@@ -690,6 +694,11 @@ static int get_realtime_budget(void)
- free(namespecs);
- namespecs = NULL;
- }
-+ /* not to get stuck if format changes */
-+ if ((num < 3) && ((fscanf(f, "%*[^\n]") == EOF) ||
-+ (fscanf(f, "\n") == EOF))) {
-+ break;
-+ }
- }
- fclose(f);
- if (cgroup == NULL) {
-@@ -776,15 +785,17 @@ sbd_make_realtime(int priority, int stackgrowK, int heapgrowK)
- return;
- }
-
-+do {
- #ifdef SCHED_RR
- if (move_to_root_cgroup) {
- sbd_move_to_root_cgroup(enforce_moving_to_root_cgroup);
- }
-
- {
-- int pcurrent = 0;
- int pmin = sched_get_priority_min(SCHED_RR);
- int pmax = sched_get_priority_max(SCHED_RR);
-+ struct sched_param sp;
-+ int pcurrent;
-
- if (priority == 0) {
- priority = pmax;
-@@ -794,26 +805,47 @@ sbd_make_realtime(int priority, int stackgrowK, int heapgrowK)
- priority = pmax;
- }
-
-- pcurrent = sched_getscheduler(0);
-- if (pcurrent < 0) {
-+ if (sched_getparam(0, &sp) < 0) {
- cl_perror("Unable to get scheduler priority");
-
-- } else if(pcurrent < priority) {
-- struct sched_param sp;
-+ } else if ((pcurrent = sched_getscheduler(0)) < 0) {
-+ cl_perror("Unable to get scheduler policy");
-
-+ } else if ((pcurrent == SCHED_RR) &&
-+ (sp.sched_priority >= priority)) {
-+ cl_log(LOG_INFO,
-+ "Stay with priority (%d) for policy SCHED_RR",
-+ sp.sched_priority);
-+ break;
-+ } else {
- memset(&sp, 0, sizeof(sp));
- sp.sched_priority = priority;
-
- if (sched_setscheduler(0, SCHED_RR, &sp) < 0) {
-- cl_perror("Unable to set scheduler priority to %d", priority);
-+ cl_perror(
-+ "Unable to set scheduler policy to SCHED_RR priority %d",
-+ priority);
- } else {
-- cl_log(LOG_INFO, "Scheduler priority is now %d", priority);
-+ cl_log(LOG_INFO,
-+ "Scheduler policy is now SCHED_RR priority %d",
-+ priority);
-+ break;
- }
- }
- }
- #else
-- cl_log(LOG_ERR, "System does not support updating the scheduler priority");
-+ cl_log(LOG_ERR, "System does not support updating the scheduler policy");
-+#endif
-+#ifdef PRIO_PGRP
-+ if (setpriority(PRIO_PGRP, 0, INT_MIN) < 0) {
-+ cl_perror("Unable to raise the scheduler priority");
-+ } else {
-+ cl_log(LOG_INFO, "Scheduler priority raised to the maximum");
-+ }
-+#else
-+ cl_perror("System does not support setting the scheduler priority");
- #endif
-+} while (0);
-
- sbd_memlock(heapgrowK, stackgrowK);
- }
-@@ -826,7 +858,7 @@ maximize_priority(void)
- return;
- }
-
-- sbd_make_realtime(0, 256, 256);
-+ sbd_make_realtime(0, 256, 256);
-
- if (ioprio_set(IOPRIO_WHO_PROCESS, getpid(),
- IOPRIO_PRIO_VALUE(IOPRIO_CLASS_RT, 1)) != 0) {
---
-1.8.3.1
-
diff --git a/gating.yaml b/gating.yaml
deleted file mode 100644
index 9e15ced..0000000
--- a/gating.yaml
+++ /dev/null
@@ -1,15 +0,0 @@
---- !Policy
-product_versions:
- - fedora-*
-decision_context: bodhi_update_push_testing
-subject_type: koji_build
-rules:
- - !PassingTestCaseRule {test_case_name: fedora-ci.koji-build.tier0.functional}
---- !Policy
-product_versions:
- - fedora-*
-decision_context: bodhi_update_push_stable
-subject_type: koji_build
-rules:
- - !PassingTestCaseRule {test_case_name: fedora-ci.koji-build.tier0.functional}
-
diff --git a/sbd.spec b/sbd.spec
index 936d7e7..86d6f85 100644
--- a/sbd.spec
+++ b/sbd.spec
@@ -15,28 +15,24 @@
# Please submit bugfixes or comments via http://bugs.opensuse.org/
#
-%global commit 25fce8a7d5e8cd5abc2379077381b10bd6cec183
+%global commit 7f33d1a409d0a4e2cd69946688c48eaa8f3c5d26
%global shortcommit %(c=%{commit}; echo ${c:0:7})
-%global github_owner Clusterlabs
-%global buildnum 1
+%global github_owner clusterlabs
Name: sbd
Summary: Storage-based death
License: GPLv2+
-Group: System Environment/Daemons
-Version: 1.4.1
-Release: %{buildnum}%{?dist}
+Version: 1.4.0
+Release: 3%{?dist}
Url: https://github.com/%{github_owner}/%{name}
Source0: https://github.com/%{github_owner}/%{name}/archive/%{commit}/%{name}-%{co...
-Patch0: 0001-Fix-regressions.sh-make-parameter-passing-consistent.patch
-Patch1: 0002-Doc-add-environment-section-to-man-page.patch
-Patch2: 0003-Fix-scheduling-overhaul-the-whole-thing.patch
+Patch0: 0001-Refactor-fail-earlier-on-invalid-servants.patch
BuildRequires: autoconf
BuildRequires: automake
BuildRequires: libuuid-devel
BuildRequires: glib2-devel
BuildRequires: libaio-devel
-BuildRequires: corosync-devel
+BuildRequires: corosynclib-devel
BuildRequires: pacemaker-libs-devel
BuildRequires: libtool
BuildRequires: libuuid-devel
@@ -44,7 +40,6 @@ BuildRequires: libxml2-devel
BuildRequires: pkgconfig
BuildRequires: make
BuildRequires: systemd
-Conflicts: fence-agents-sbd < 4.5.0
%if 0%{?rhel}
ExclusiveArch: i686 x86_64 s390x aarch64 ppc64le
@@ -58,28 +53,15 @@ ExclusiveArch: i686 x86_64 s390x aarch64 ppc64le
This package contains the storage-based death functionality.
-%package tests
-Summary: Storage-based death environment for regression tests
-License: GPLv2+
-Group: System Environment/Daemons
-
-%description tests
-This package provides an environment + testscripts for
-regression-testing sbd.
-
###########################################################
%prep
%autosetup -n %{name}-%{commit} -p1
-%ifarch s390x s390
-sed -i src/sbd.sysconfig -e "s/Default: 5/Default: 15/"
-sed -i src/sbd.sysconfig -e "s/SBD_WATCHDOG_TIMEOUT=5/SBD_WATCHDOG_TIMEOUT=15/"
-%endif
###########################################################
%build
-./autogen.sh
+autoreconf -i
export CFLAGS="$RPM_OPT_FLAGS -Wall -Werror"
%configure
make %{?_smp_mflags}
@@ -91,7 +73,6 @@ make %{?_smp_mflags}
make DESTDIR=$RPM_BUILD_ROOT LIBDIR=%{_libdir} install
rm -rf ${RPM_BUILD_ROOT}%{_libdir}/stonith
-install -D -m 0755 tests/regressions.sh $RPM_BUILD_ROOT/usr/share/sbd/regressions.sh
%if %{defined _unitdir}
install -D -m 0644 src/sbd.service $RPM_BUILD_ROOT/%{_unitdir}/sbd.service
install -D -m 0644 src/sbd_remote.service $RPM_BUILD_ROOT/%{_unitdir}/sbd_remote.service
@@ -100,26 +81,12 @@ install -D -m 0644 src/sbd_remote.service $RPM_BUILD_ROOT/%{_unitdir}/sbd_remote
mkdir -p ${RPM_BUILD_ROOT}%{_sysconfdir}/sysconfig
install -m 644 src/sbd.sysconfig ${RPM_BUILD_ROOT}%{_sysconfdir}/sysconfig/sbd
-# Don't package static libs
-find %{buildroot} -name '*.a' -type f -print0 | xargs -0 rm -f
-find %{buildroot} -name '*.la' -type f -print0 | xargs -0 rm -f
-
###########################################################
%if %{defined _unitdir}
%post
%systemd_post sbd.service
%systemd_post sbd_remote.service
-if [ $1 -ne 1 ] ; then
- if systemctl --quiet is-enabled sbd.service 2>/dev/null
- then
- systemctl --quiet reenable sbd.service 2>/dev/null || :
- fi
- if systemctl --quiet is-enabled sbd_remote.service 2>/dev/null
- then
- systemctl --quiet reenable sbd_remote.service 2>/dev/null || :
- fi
-fi
%preun
%systemd_preun sbd.service
@@ -135,7 +102,6 @@ fi
%defattr(-,root,root)
%config(noreplace) %{_sysconfdir}/sysconfig/sbd
%{_sbindir}/sbd
-%exclude %{_datadir}/sbd/regressions.sh
%doc %{_mandir}/man8/sbd*
%if %{defined _unitdir}
%{_unitdir}/sbd.service
@@ -143,21 +109,7 @@ fi
%endif
%doc COPYING
-%files tests
-###########################################################
-%defattr(-,root,root)
-%dir %{_datadir}/sbd
-%{_datadir}/sbd/regressions.sh
-%{_libdir}/libsbdtestbed*
-
%changelog
-* Thu Mar 5 2020 Klaus Wenninger <kwenning(a)redhat.com> - 1.4.1-1
-- Rebase to upstream v1.4.1
-- Make coverity happy with parameter passing in regressions.sh
-- Add auto generated environment section to man-page
-- Overhaul setting scheduler policy/priority
-- Enable Fedora CI Gating
-
* Thu Jan 30 2020 Fedora Release Engineering <releng(a)fedoraproject.org> - 1.4.0-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
diff --git a/sources b/sources
index 50b7de1..fab3041 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-SHA512 (sbd-25fce8a7d5e8cd5abc2379077381b10bd6cec183.tar.gz) = 3b89ee0aa88282f17c8daf725a1e7a8c2f2affdcf6ff6f4ca4faf250760d778a65c5693e5df3fcc7554d60dd9b0cb1a0350e266fadb7668320f3c676d8799a29
+SHA512 (sbd-7f33d1a409d0a4e2cd69946688c48eaa8f3c5d26.tar.gz) = 1baca43ad95d8d0886cbd1db82eeb617a2055e5a31d16f2802c27b120894c6829bfc99663e2da402a37e6c52d0cda6cec63cbc15cb6c580895e5a1d30e5b1c62
diff --git a/tests/inventory b/tests/inventory
deleted file mode 100755
index e0cea17..0000000
--- a/tests/inventory
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/bash
-export TEST_DOCKER_EXTRA_ARGS="--privileged --network host"
-exec merge-standard-inventory "$@"
-
diff --git a/tests/tests.yml b/tests/tests.yml
deleted file mode 100644
index 49bc170..0000000
--- a/tests/tests.yml
+++ /dev/null
@@ -1,16 +0,0 @@
----
-- hosts: localhost
- roles:
- - role: standard-test-basic
- tags:
- - classic
- - container
- tests:
- - smoke:
- dir: .
- run: /usr/share/sbd/regressions.sh
- required_packages:
- - sbd
- - sbd-tests
- - device-mapper
-
commit 22544d028d32925583cb70e234d71cba77b6e8cd
Author: Klaus Wenninger <klaus.wenninger(a)aon.at>
Date: Fri Mar 6 17:11:04 2020 +0100
Revert "sync with master"
This reverts commit c20a22191f162f49aa8a984efc5d0fdf4eccf5ef.
diff --git a/sbd.spec b/sbd.spec
index d5f624c..936d7e7 100644
--- a/sbd.spec
+++ b/sbd.spec
@@ -151,7 +151,7 @@ fi
%{_libdir}/libsbdtestbed*
%changelog
-* Thu Mar 5 2020 Klaus Wenninger <kwenning(a)redhat.com> - 1.4.1-4
+* Thu Mar 5 2020 Klaus Wenninger <kwenning(a)redhat.com> - 1.4.1-1
- Rebase to upstream v1.4.1
- Make coverity happy with parameter passing in regressions.sh
- Add auto generated environment section to man-page
4 years, 2 months
Architecture specific change in rpms/sbd.git
by githook-noreply@fedoraproject.org
The package rpms/sbd.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/sbd.git/commit/?id=050f11c6be29d0....
Change:
+%ifarch s390x s390
Thanks.
Full change:
============
commit 050f11c6be29d0a1e93dce4f2b181a4c680a913e
Author: Klaus Wenninger <klaus.wenninger(a)aon.at>
Date: Fri Mar 6 14:25:25 2020 +0100
* Thu Mar 5 2020 Klaus Wenninger <kwenning(a)redhat.com> - 1.4.1-1
- Rebase to upstream v1.4.1
- Make coverity happy with parameter passing in regressions.sh
- Add auto generated environment section to man-page
- Overhaul setting scheduler policy/priority
- Enable Fedora CI Gating
diff --git a/.gitignore b/.gitignore
index 0fb7102..ba457ce 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1 +1,2 @@
/sbd-*.tar.gz
+/sbd-*.src.rpm
diff --git a/0001-Fix-regressions.sh-make-parameter-passing-consistent.patch b/0001-Fix-regressions.sh-make-parameter-passing-consistent.patch
new file mode 100644
index 0000000..6f17a5a
--- /dev/null
+++ b/0001-Fix-regressions.sh-make-parameter-passing-consistent.patch
@@ -0,0 +1,82 @@
+From 1d2a7b8d059d4f090b351b8decca0ddf274c82a0 Mon Sep 17 00:00:00 2001
+From: Klaus Wenninger <klaus.wenninger(a)aon.at>
+Date: Wed, 20 Nov 2019 15:20:19 +0100
+Subject: [PATCH] Fix: regressions.sh: make parameter passing consistent
+
+---
+ tests/regressions.sh | 24 ++++++++++++------------
+ 1 file changed, 12 insertions(+), 12 deletions(-)
+
+diff --git a/tests/regressions.sh b/tests/regressions.sh
+index 6cfb303..7ab80be 100755
+--- a/tests/regressions.sh
++++ b/tests/regressions.sh
+@@ -32,7 +32,7 @@
+ : ${SBD_USE_DM:="yes"}
+
+ sbd() {
+- LD_PRELOAD=${SBD_PRELOAD} SBD_WATCHDOG_TIMEOUT=5 SBD_DEVICE="${SBD_DEVICE}" SBD_PRELOAD_LOG=${SBD_PRELOAD_LOG} SBD_WATCHDOG_DEV=/dev/watchdog setsid ${SBD_BINARY} -p ${SBD_PIDFILE} $*
++ LD_PRELOAD=${SBD_PRELOAD} SBD_WATCHDOG_TIMEOUT=5 SBD_DEVICE="${SBD_DEVICE}" SBD_PRELOAD_LOG=${SBD_PRELOAD_LOG} SBD_WATCHDOG_DEV=/dev/watchdog setsid ${SBD_BINARY} -p ${SBD_PIDFILE} "$@"
+ }
+
+ sbd_wipe_disk() {
+@@ -98,26 +98,26 @@ sbd_daemon_cleanup() {
+ pkill -TERM --pidfile ${SBD_PIDFILE} 2>/dev/null
+ sleep 5
+ pkill -KILL --pidfile ${SBD_PIDFILE} 2>/dev/null
+- pkill -KILL --parent $(cat ${SBD_PIDFILE} 2>/dev/null) 2>/dev/null
++ pkill -KILL --parent "$(cat ${SBD_PIDFILE} 2>/dev/null)" 2>/dev/null
+ echo > ${SBD_PIDFILE}
+ }
+
+ _ok() {
+- echo -- $@
+- $@
++ echo "-- $*"
++ "$@"
+ rc=$?
+ if [ $rc -ne 0 ]; then
+- echo "$@ failed with $rc"
++ echo "$* failed with $rc"
+ exit $rc
+ fi
+ }
+
+ _no() {
+- echo -- $@
+- $@
++ echo "-- $*"
++ "$@"
+ rc=$?
+ if [ $rc -eq 0 ]; then
+- echo "$@ did NOT fail ($rc)"
++ echo "$* did NOT fail ($rc)"
+ exit $rc
+ fi
+ return 0
+@@ -126,7 +126,7 @@ _no() {
+ _in_log() {
+ grep "$@" ${SBD_PRELOAD_LOG} >/dev/null
+ if [ $? -ne 0 ]; then
+- echo "didn't find '$@' in log:"
++ echo "didn't find '$*' in log:"
+ cat ${SBD_PRELOAD_LOG}
+ sbd_daemon_cleanup
+ exit 1
+@@ -227,10 +227,10 @@ test_stall_inquisitor() {
+ sbd_daemon_cleanup
+ sbd -d ${D[1]} -d ${D[2]} -d ${D[3]} -n test-1 watch
+ sleep 10
+- _ok kill -0 $(cat ${SBD_PIDFILE})
+- kill -STOP $(cat ${SBD_PIDFILE})
++ _ok kill -0 "$(cat ${SBD_PIDFILE})"
++ kill -STOP "$(cat ${SBD_PIDFILE})"
+ sleep 10
+- kill -CONT $(cat ${SBD_PIDFILE}) 2>/dev/null
++ kill -CONT "$(cat ${SBD_PIDFILE})" 2>/dev/null
+ _in_log "watchdog fired"
+ }
+
+--
+1.8.3.1
+
diff --git a/0001-Refactor-fail-earlier-on-invalid-servants.patch b/0001-Refactor-fail-earlier-on-invalid-servants.patch
deleted file mode 100644
index cb71002..0000000
--- a/0001-Refactor-fail-earlier-on-invalid-servants.patch
+++ /dev/null
@@ -1,142 +0,0 @@
-From 8301cbafed191f30656a22876941cc7c9189b623 Mon Sep 17 00:00:00 2001
-From: Klaus Wenninger <klaus.wenninger(a)aon.at>
-Date: Thu, 31 Jan 2019 14:42:01 +0100
-Subject: [PATCH] Refactor: fail earlier on invalid servants
-
----
- src/sbd-inquisitor.c | 51 ++++++++++++++++++++++++++++++++-------------------
- src/sbd-md.c | 7 +------
- src/sbd.h | 2 +-
- 3 files changed, 34 insertions(+), 26 deletions(-)
-
-diff --git a/src/sbd-inquisitor.c b/src/sbd-inquisitor.c
-index 8e0bc87..9be6c99 100644
---- a/src/sbd-inquisitor.c
-+++ b/src/sbd-inquisitor.c
-@@ -42,19 +42,36 @@ void recruit_servant(const char *devname, pid_t pid)
- struct servants_list_item *newbie;
-
- if (lookup_servant_by_dev(devname)) {
-- cl_log(LOG_DEBUG, "Servant %s already exists", devname);
-- return;
-+ cl_log(LOG_DEBUG, "Servant %s already exists", devname);
-+ return;
- }
-
- newbie = malloc(sizeof(*newbie));
-- if (!newbie) {
-- fprintf(stderr, "malloc failed in recruit_servant.\n");
-- exit(1);
-+ if (newbie) {
-+ memset(newbie, 0, sizeof(*newbie));
-+ newbie->devname = strdup(devname);
-+ newbie->pid = pid;
-+ newbie->first_start = 1;
-+ }
-+ if (!newbie || !newbie->devname) {
-+ fprintf(stderr, "heap allocation failed in recruit_servant.\n");
-+ exit(1);
-+ }
-+
-+ /* some sanity-check on our newbie */
-+ if (sbd_is_disk(newbie)) {
-+ cl_log(LOG_INFO, "Monitoring %s", devname);
-+ disk_count++;
-+ } else if (sbd_is_pcmk(newbie) || sbd_is_cluster(newbie)) {
-+ /* alive just after pcmk and cluster servants have shown up */
-+ newbie->outdated = 1;
-+ } else {
-+ /* toss our newbie */
-+ cl_log(LOG_ERR, "Refusing to recruit unrecognized servant %s", devname);
-+ free((void *) newbie->devname);
-+ free(newbie);
-+ return;
- }
-- memset(newbie, 0, sizeof(*newbie));
-- newbie->devname = strdup(devname);
-- newbie->pid = pid;
-- newbie->first_start = 1;
-
- if (!s) {
- servants_leader = newbie;
-@@ -65,12 +82,6 @@ void recruit_servant(const char *devname, pid_t pid)
- }
-
- servant_count++;
-- if(sbd_is_disk(newbie)) {
-- cl_log(LOG_INFO, "Monitoring %s", devname);
-- disk_count++;
-- } else {
-- newbie->outdated = 1;
-- }
- }
-
- int assign_servant(const char* devname, functionp_t functionp, int mode, const void* argp)
-@@ -148,7 +159,7 @@ void servant_start(struct servants_list_item *s)
- if (sbd_is_disk(s)) {
- #if SUPPORT_SHARED_DISK
- DBGLOG(LOG_INFO, "Starting servant for device %s", s->devname);
-- s->pid = assign_servant(s->devname, servant, start_mode, s);
-+ s->pid = assign_servant(s->devname, servant_md, start_mode, s);
- #else
- cl_log(LOG_ERR, "Shared disk functionality not supported");
- return;
-@@ -785,12 +796,14 @@ parse_device_line(const char *line)
-
- if (lpc > last) {
- entry = calloc(1, 1 + lpc - last);
-+ if (!entry) {
-+ fprintf(stderr, "heap allocation failed parsing device-line.\n");
-+ exit(1);
-+ }
- rc = sscanf(line + last, "%[^;]", entry);
- }
-
-- if (entry == NULL) {
-- /* Skip */
-- } else if (rc != 1) {
-+ if (rc != 1) {
- cl_log(LOG_WARNING, "Could not parse (%d %d): %s", last, lpc, line + last);
- } else {
- cl_log(LOG_DEBUG, "Adding '%s'", entry);
-diff --git a/src/sbd-md.c b/src/sbd-md.c
-index 579d273..ba2c34d 100644
---- a/src/sbd-md.c
-+++ b/src/sbd-md.c
-@@ -1031,7 +1031,7 @@ static int servant_check_timeout_inconsistent(struct sector_header_s *hdr)
- return 0;
- }
-
--int servant(const char *diskname, int mode, const void* argp)
-+int servant_md(const char *diskname, int mode, const void* argp)
- {
- struct sector_mbox_s *s_mbox = NULL;
- struct sector_node_s *s_node = NULL;
-@@ -1046,11 +1046,6 @@ int servant(const char *diskname, int mode, const void* argp)
- char uuid[37];
- const struct servants_list_item *s = argp;
-
-- if (!diskname) {
-- cl_log(LOG_ERR, "Empty disk name %s.", diskname);
-- return -1;
-- }
--
- cl_log(LOG_INFO, "Servant starting for device %s", diskname);
-
- /* Block most of the signals */
-diff --git a/src/sbd.h b/src/sbd.h
-index 386c85c..6fe07f9 100644
---- a/src/sbd.h
-+++ b/src/sbd.h
-@@ -175,7 +175,7 @@ int ping_via_slots(const char *name, struct servants_list_item *servants);
- int dump_headers(struct servants_list_item *servants);
- unsigned long get_first_msgwait(struct servants_list_item *servants);
- int messenger(const char *name, const char *msg, struct servants_list_item *servants);
--int servant(const char *diskname, int mode, const void* argp);
-+int servant_md(const char *diskname, int mode, const void* argp);
- #endif
-
- int servant_pcmk(const char *diskname, int mode, const void* argp);
---
-1.8.3.1
-
diff --git a/0002-Doc-add-environment-section-to-man-page.patch b/0002-Doc-add-environment-section-to-man-page.patch
new file mode 100644
index 0000000..2ad9556
--- /dev/null
+++ b/0002-Doc-add-environment-section-to-man-page.patch
@@ -0,0 +1,1459 @@
+From 9dd82a8b4daa5a7bd8ab3afa43b081f212efb1ac Mon Sep 17 00:00:00 2001
+From: Klaus Wenninger <klaus.wenninger(a)aon.at>
+Date: Wed, 29 Jan 2020 20:34:18 +0100
+Subject: [PATCH] Doc: add environment section to man-page
+
+Environment section is auto-generated from sbd.sysconfig.
+---
+ .gitignore | 1 +
+ Makefile.am | 6 +-
+ README.md | 3 +-
+ man/Makefile.am | 8 +-
+ man/sbd.8.pod | 668 -----------------------------------------------------
+ man/sbd.8.pod.in | 675 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ src/sbd.sysconfig | 3 +-
+ 7 files changed, 690 insertions(+), 674 deletions(-)
+ delete mode 100644 man/sbd.8.pod
+ create mode 100644 man/sbd.8.pod.in
+
+diff --git a/Makefile.am b/Makefile.am
+index 1c29f75..bd4346d 100644
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -9,8 +9,8 @@ TARFILE = $(distdir).tar.gz
+ DIST_ARCHIVES = $(TARFILE)
+ KEEP_EXISTING_TAR = no
+ INJECT_GIT_COMMIT = yes
+-DISTCLEANFILES = sbd-* sbd-*/
+ CLEANFILES = *.rpm *.tar.* sbd-*
++DISTCLEANFILES = sbd-* sbd-*/
+
+ RPM_ROOT = $(shell pwd)
+ RPM_OPTS = --define "_sourcedir $(RPM_ROOT)" \
+@@ -31,7 +31,7 @@ export SBD_BINARY := src/sbd
+ export SBD_PRELOAD := tests/.libs/libsbdtestbed.so
+ export SBD_USE_DM := no
+
+-EXTRA_DIST = sbd.spec tests/regressions.sh
++EXTRA_DIST = sbd.spec tests/regressions.sh man/sbd.8.pod.in
+
+ export:
+ rm -f $(PACKAGE)-HEAD.tar.*
+@@ -43,7 +43,7 @@ export:
+ echo `date`: Using existing tarball: $(TARFILE); \
+ else \
+ rm -f $(PACKAGE).tar.*; \
+- (git archive --prefix=$(distdir)/ $(shell echo $(TAG)|cut -f1 -d-) || tar -c --transform="s,^,$(distdir)/," --exclude="*.tar.*" --exclude="$(distdir)" --exclude="*.o" --exclude="*.8" --exclude="config.*" --exclude="libtool" --exclusive="ltmain.sh*" --exclude="Makefile" --exclude="Makefile.in" --exclude="stamp-*" --exclude="*.service" --exclude="sbd" --exclude="*.m4" --exclude="*.cache" --exclude="configure" --exclude="*.list" --exclude="depcomp" --exclude="install-sh" --exclude="missing" --exclude="compile" --exclude="sbd.sh" --exclude="~" --exclude="*.swp" --exclude="*.patch" --exclude="*.diff" --exclude="*.orig" --exclude="*.rej" --exclude="*.rpm" --exclude=".deps" --exclude="test-driver" *) | gzip > $(TARFILE); \
++ (git archive --prefix=$(distdir)/ $(shell echo $(TAG)|cut -f1 -d-) || tar -c --transform="s,^,$(distdir)/," --exclude="*.tar.*" --exclude="$(distdir)" --exclude="*.o" --exclude="*.8" --exclude="config.*" --exclude="libtool" --exclude="ltmain.sh*" --exclude="Makefile" --exclude="Makefile.in" --exclude="stamp-*" --exclude="*.service" --exclude="sbd" --exclude="*.m4" --exclude="*.cache" --exclude="configure" --exclude="*.list" --exclude="depcomp" --exclude="install-sh" --exclude="missing" --exclude="compile" --exclude="sbd.sh" --exclude="~" --exclude="*.swp" --exclude="*.patch" --exclude="*.diff" --exclude="*.orig" --exclude="*.rej" --exclude="*.rpm" --exclude="*.pod" --exclude=".deps" --exclude="test-driver" *) | gzip > $(TARFILE); \
+ if test -n "$$(git status -s)" || test "$(INJECT_GIT_COMMIT)" = "yes"; then \
+ if test -n "$$(git status -s)"; then git diff HEAD --name-only|grep -v "^\."|xargs -n1 git diff HEAD > uncommitted.diff; fi; \
+ rm -rf $(distdir); tar -xzf $(TARFILE); rm $(TARFILE); \
+diff --git a/README.md b/README.md
+index d02a8bd..42a3fde 100644
+--- a/README.md
++++ b/README.md
+@@ -5,5 +5,6 @@ A highly reliable fencing or Shoot-the-other-node-in-the-head (STONITH) mechanis
+ The component works with Pacemaker clusters, and is currently known to
+ compile and function on Pacemaker 1.1.7+ and corosync 1.4.x or 2.3.x.
+
+-Please see https://github.com/l-mb/sbd/blob/master/man/sbd.8.pod for the full documentation.
++Please see https://github.com/clusterlabs/sbd/blob/master/man/sbd.8.pod.in &
++https://github.com/clusterlabs/sbd/blob/master/src/sbd.sysconfig for the full documentation.
+
+diff --git a/man/Makefile.am b/man/Makefile.am
+index 3f89085..995712d 100644
+--- a/man/Makefile.am
++++ b/man/Makefile.am
+@@ -1,6 +1,12 @@
+ dist_man_MANS = sbd.8
+
+-EXTRA_DIST = sbd.8.pod
++DISTCLEANFILES = sbd.8.pod sbd.8 sbd.sysconfig.pod
++
++sbd.sysconfig.pod: ../src/sbd.sysconfig
++ sed -r -n -e "s/^## Type: (.*)/Allows C<\1>/;t type;s/^## Default: (.*)/ defaulting to C<\1>/;t default;s/^#*(.*)=.*/=item B<\1>\n/;t variable;s/^#*//;s/^ *//;H;d;:type;h;d;:default;H;x;s/\n//;x;d;:variable;G;p" $< > $@
++
++sbd.8.pod: sbd.8.pod.in sbd.sysconfig.pod
++ sed -e "s/@environment_section@//;t insert;p;d;:insert;rsbd.sysconfig.pod" $< > $@
+
+ sbd.8: sbd.8.pod
+ @POD2MAN@ -s 8 -c "STONITH Block Device" -r "SBD" -n "SBD" $< $@
+diff --git a/man/sbd.8.pod b/man/sbd.8.pod
+deleted file mode 100644
+index 377c579..0000000
+--- a/man/sbd.8.pod
++++ /dev/null
+@@ -1,668 +0,0 @@
+-=head1 NAME
+-
+-sbd - STONITH Block Device daemon
+-
+-=head1 SYNOPSIS
+-
+-sbd <-d F</dev/...>> [options] C<command>
+-
+-=head1 SUMMARY
+-
+-SBD provides a node fencing mechanism (Shoot the other node in the head,
+-STONITH) for Pacemaker-based clusters through the exchange of messages
+-via shared block storage such as for example a SAN, iSCSI, FCoE. This
+-isolates the fencing mechanism from changes in firmware version or
+-dependencies on specific firmware controllers, and it can be used as a
+-STONITH mechanism in all configurations that have reliable shared
+-storage.
+-
+-SBD can also be used without any shared storage. In this mode, the
+-watchdog device will be used to reset the node if it loses quorum, if
+-any monitored daemon is lost and not recovered or if Pacemaker decides
+-that the node requires fencing.
+-
+-The F<sbd> binary implements both the daemon that watches the message
+-slots as well as the management tool for interacting with the block
+-storage device(s). This mode of operation is specified via the
+-C<command> parameter; some of these modes take additional parameters.
+-
+-To use SBD with shared storage, you must first C<create> the messaging
+-layout on one to three block devices. Second, configure
+-F</etc/sysconfig/sbd> to list those devices (and possibly adjust other
+-options), and restart the cluster stack on each node to ensure that
+-C<sbd> is started. Third, configure the C<external/sbd> fencing
+-resource in the Pacemaker CIB.
+-
+-Each of these steps is documented in more detail below the description
+-of the command options.
+-
+-C<sbd> can only be used as root.
+-
+-=head2 GENERAL OPTIONS
+-
+-=over
+-
+-=item B<-d> F</dev/...>
+-
+-Specify the block device(s) to be used. If you have more than one,
+-specify this option up to three times. This parameter is mandatory for
+-all modes, since SBD always needs a block device to interact with.
+-
+-This man page uses F</dev/sda1>, F</dev/sdb1>, and F</dev/sdc1> as
+-example device names for brevity. However, in your production
+-environment, you should instead always refer to them by using the long,
+-stable device name (e.g.,
+-F</dev/disk/by-id/dm-uuid-part1-mpath-3600508b400105b5a0001500000250000>).
+-
+-=item B<-v|-vv|-vvv>
+-
+-Enable verbose|debug|debug-library logging (optional)
+-
+-=item B<-h>
+-
+-Display a concise summary of C<sbd> options.
+-
+-=item B<-n> I<node>
+-
+-Set local node name; defaults to C<uname -n>. This should not need to be
+-set.
+-
+-=item B<-R>
+-
+-Do B<not> enable realtime priority. By default, C<sbd> runs at realtime
+-priority, locks itself into memory, and also acquires highest IO
+-priority to protect itself against interference from other processes on
+-the system. This is a debugging-only option.
+-
+-=item B<-I> I<N>
+-
+-Async IO timeout (defaults to 3 seconds, optional). You should not need
+-to adjust this unless your IO setup is really very slow.
+-
+-(In daemon mode, the watchdog is refreshed when the majority of devices
+-could be read within this time.)
+-
+-=back
+-
+-=head2 create
+-
+-Example usage:
+-
+- sbd -d /dev/sdc2 -d /dev/sdd3 create
+-
+-If you specify the I<create> command, sbd will write a metadata header
+-to the device(s) specified and also initialize the messaging slots for
+-up to 255 nodes.
+-
+-B<Warning>: This command will not prompt for confirmation. Roughly the
+-first megabyte of the specified block device(s) will be overwritten
+-immediately and without backup.
+-
+-This command accepts a few options to adjust the default timings that
+-are written to the metadata (to ensure they are identical across all
+-nodes accessing the device).
+-
+-=over
+-
+-=item B<-1> I<N>
+-
+-Set watchdog timeout to N seconds. This depends mostly on your storage
+-latency; the majority of devices must be successfully read within this
+-time, or else the node will self-fence.
+-
+-If your sbd device(s) reside on a multipath setup or iSCSI, this should
+-be the time required to detect a path failure. You may be able to reduce
+-this if your device outages are independent, or if you are using the
+-Pacemaker integration.
+-
+-=item B<-2> I<N>
+-
+-Set slot allocation timeout to N seconds. You should not need to tune
+-this.
+-
+-=item B<-3> I<N>
+-
+-Set daemon loop timeout to N seconds. You should not need to tune this.
+-
+-=item B<-4> I<N>
+-
+-Set I<msgwait> timeout to N seconds. This should be twice the I<watchdog>
+-timeout. This is the time after which a message written to a node's slot
+-will be considered delivered. (Or long enough for the node to detect
+-that it needed to self-fence.)
+-
+-This also affects the I<stonith-timeout> in Pacemaker's CIB; see below.
+-
+-=back
+-
+-=head2 list
+-
+-Example usage:
+-
+- # sbd -d /dev/sda1 list
+- 0 hex-0 clear
+- 1 hex-7 clear
+- 2 hex-9 clear
+-
+-List all allocated slots on device, and messages. You should see all
+-cluster nodes that have ever been started against this device. Nodes
+-that are currently running should have a I<clear> state; nodes that have
+-been fenced, but not yet restarted, will show the appropriate fencing
+-message.
+-
+-=head2 dump
+-
+-Example usage:
+-
+- # sbd -d /dev/sda1 dump
+- ==Dumping header on disk /dev/sda1
+- Header version : 2
+- Number of slots : 255
+- Sector size : 512
+- Timeout (watchdog) : 15
+- Timeout (allocate) : 2
+- Timeout (loop) : 1
+- Timeout (msgwait) : 30
+- ==Header on disk /dev/sda1 is dumped
+-
+-Dump meta-data header from device.
+-
+-=head2 watch
+-
+-Example usage:
+-
+- sbd -d /dev/sdc2 -d /dev/sdd3 -P watch
+-
+-This command will make C<sbd> start in daemon mode. It will constantly monitor
+-the message slot of the local node for incoming messages, reachability, and
+-optionally take Pacemaker's state into account.
+-
+-C<sbd> B<must> be started on boot before the cluster stack! See below
+-for enabling this according to your boot environment.
+-
+-The options for this mode are rarely specified directly on the
+-commandline directly, but most frequently set via F</etc/sysconfig/sbd>.
+-
+-It also constantly monitors connectivity to the storage device, and
+-self-fences in case the partition becomes unreachable, guaranteeing that it
+-does not disconnect from fencing messages.
+-
+-A node slot is automatically allocated on the device(s) the first time
+-the daemon starts watching the device; hence, manual allocation is not
+-usually required.
+-
+-If a watchdog is used together with the C<sbd> as is strongly
+-recommended, the watchdog is activated at initial start of the sbd
+-daemon. The watchdog is refreshed every time the majority of SBD devices
+-has been successfully read. Using a watchdog provides additional
+-protection against C<sbd> crashing.
+-
+-If the Pacemaker integration is activated, C<sbd> will B<not> self-fence
+-if device majority is lost, if:
+-
+-=over
+-
+-=item 1.
+-
+-The partition the node is in is still quorate according to the CIB;
+-
+-=item 2.
+-
+-it is still quorate according to Corosync's node count;
+-
+-=item 3.
+-
+-the node itself is considered online and healthy by Pacemaker.
+-
+-=back
+-
+-This allows C<sbd> to survive temporary outages of the majority of
+-devices. However, while the cluster is in such a degraded state, it can
+-neither successfully fence nor be shutdown cleanly (as taking the
+-cluster below the quorum threshold will immediately cause all remaining
+-nodes to self-fence). In short, it will not tolerate any further faults.
+-Please repair the system before continuing.
+-
+-There is one C<sbd> process that acts as a master to which all watchers
+-report; one per device to monitor the node's slot; and, optionally, one
+-that handles the Pacemaker integration.
+-
+-=over
+-
+-=item B<-W>
+-
+-Enable or disable use of the system watchdog to protect against the sbd
+-processes failing and the node being left in an undefined state. Specify
+-this once to enable, twice to disable.
+-
+-Defaults to I<enabled>.
+-
+-=item B<-w> F</dev/watchdog>
+-
+-This can be used to override the default watchdog device used and should not
+-usually be necessary.
+-
+-=item B<-p> F</var/run/sbd.pid>
+-
+-This option can be used to specify a pidfile for the main sbd process.
+-
+-=item B<-F> I<N>
+-
+-Number of failures before a failing servant process will not be restarted
+-immediately until the dampening delay has expired. If set to zero, servants
+-will be restarted immediately and indefinitely. If set to one, a failed
+-servant will be restarted once every B<-t> seconds. If set to a different
+-value, the servant will be restarted that many times within the dampening
+-period and then delay.
+-
+-Defaults to I<1>.
+-
+-=item B<-t> I<N>
+-
+-Dampening delay before faulty servants are restarted. Combined with C<-F 1>,
+-the most logical way to tune the restart frequency of servant processes.
+-Default is 5 seconds.
+-
+-If set to zero, processes will be restarted indefinitely and immediately.
+-
+-=item B<-P>
+-
+-Enable Pacemaker integration which checks Pacemaker quorum and node health.
+-Specify this once to enable, twice to disable.
+-
+-Defaults to I<enabled>.
+-
+-=item B<-S> I<N>
+-
+-Set the start mode. (Defaults to I<0>.)
+-
+-If this is set to zero, sbd will always start up unconditionally,
+-regardless of whether the node was previously fenced or not.
+-
+-If set to one, sbd will only start if the node was previously shutdown
+-cleanly (as indicated by an exit request message in the slot), or if the
+-slot is empty. A reset, crashdump, or power-off request in any slot will
+-halt the start up.
+-
+-This is useful to prevent nodes from rejoining if they were faulty. The
+-node must be manually "unfenced" by sending an empty message to it:
+-
+- sbd -d /dev/sda1 message node1 clear
+-
+-=item B<-s> I<N>
+-
+-Set the start-up wait time for devices. (Defaults to I<120>.)
+-
+-Dynamic block devices such as iSCSI might not be fully initialized and
+-present yet. This allows one to set a timeout for waiting for devices to
+-appear on start-up. If set to 0, start-up will be aborted immediately if
+-no devices are available.
+-
+-=item B<-Z>
+-
+-Enable trace mode. B<Warning: this is unsafe for production, use at your
+-own risk!> Specifying this once will turn all reboots or power-offs, be
+-they caused by self-fence decisions or messages, into a crashdump.
+-Specifying this twice will just log them but not continue running.
+-
+-=item B<-T>
+-
+-By default, the daemon will set the watchdog timeout as specified in the
+-device metadata. However, this does not work for every watchdog device.
+-In this case, you must manually ensure that the watchdog timeout used by
+-the system correctly matches the SBD settings, and then specify this
+-option to allow C<sbd> to continue with start-up.
+-
+-=item B<-5> I<N>
+-
+-Warn if the time interval for tickling the watchdog exceeds this many seconds.
+-Since the node is unable to log the watchdog expiry (it reboots immediately
+-without a chance to write its logs to disk), this is very useful for getting
+-an indication that the watchdog timeout is too short for the IO load of the
+-system.
+-
+-Default is 3 seconds, set to zero to disable.
+-
+-=item B<-C> I<N>
+-
+-Watchdog timeout to set before crashdumping. If SBD is set to crashdump
+-instead of reboot - either via the trace mode settings or the I<external/sbd>
+-fencing agent's parameter -, SBD will adjust the watchdog timeout to this
+-setting before triggering the dump. Otherwise, the watchdog might trigger and
+-prevent a successful crashdump from ever being written.
+-
+-Set to zero (= default) to disable.
+-
+-=item B<-r> I<N>
+-
+-Actions to be executed when the watchers don't timely report to the sbd
+-master process or one of the watchers detects that the master process
+-has died.
+-
+-Set timeout-action to comma-separated combination of
+-noflush|flush plus reboot|crashdump|off.
+-If just one of both is given the other stays at the default.
+-
+-This doesn't affect actions like off, crashdump, reboot explicitly
+-triggered via message slots.
+-And it does as well not configure the action a watchdog would
+-trigger should it run off (there is no generic interface).
+-
+-Defaults to flush,reboot.
+-
+-=back
+-
+-=head2 allocate
+-
+-Example usage:
+-
+- sbd -d /dev/sda1 allocate node1
+-
+-Explicitly allocates a slot for the specified node name. This should
+-rarely be necessary, as every node will automatically allocate itself a
+-slot the first time it starts up on watch mode.
+-
+-=head2 message
+-
+-Example usage:
+-
+- sbd -d /dev/sda1 message node1 test
+-
+-Writes the specified message to node's slot. This is rarely done
+-directly, but rather abstracted via the C<external/sbd> fencing agent
+-configured as a cluster resource.
+-
+-Supported message types are:
+-
+-=over
+-
+-=item test
+-
+-This only generates a log message on the receiving node and can be used
+-to check if SBD is seeing the device. Note that this could overwrite a
+-fencing request send by the cluster, so should not be used during
+-production.
+-
+-=item reset
+-
+-Reset the target upon receipt of this message.
+-
+-=item off
+-
+-Power-off the target.
+-
+-=item crashdump
+-
+-Cause the target node to crashdump.
+-
+-=item exit
+-
+-This will make the C<sbd> daemon exit cleanly on the target. You should
+-B<not> send this message manually; this is handled properly during
+-shutdown of the cluster stack. Manually stopping the daemon means the
+-node is unprotected!
+-
+-=item clear
+-
+-This message indicates that no real message has been sent to the node.
+-You should not set this manually; C<sbd> will clear the message slot
+-automatically during start-up, and setting this manually could overwrite
+-a fencing message by the cluster.
+-
+-=back
+-
+-=head2 query-watchdog
+-
+-Example usage:
+-
+- sbd query-watchdog
+-
+-Check for available watchdog devices and print some info.
+-
+-B<Warning>: This command will arm the watchdog during query, and if your
+-watchdog refuses disarming (for example, if its kernel module has the
+-'nowayout' parameter set) this will reset your system.
+-
+-=head2 test-watchdog
+-
+-Example usage:
+-
+- sbd test-watchdog [-w /dev/watchdog3]
+-
+-Test specified watchdog device (/dev/watchdog by default).
+-
+-B<Warning>: This command will arm the watchdog and have your system reset
+-in case your watchdog is working properly! If issued from an interactive
+-session, it will prompt for confirmation.
+-
+-=head1 Base system configuration
+-
+-=head2 Configure a watchdog
+-
+-It is highly recommended that you configure your Linux system to load a
+-watchdog driver with hardware assistance (as is available on most modern
+-systems), such as I<hpwdt>, I<iTCO_wdt>, or others. As a fall-back, you
+-can use the I<softdog> module.
+-
+-No other software must access the watchdog timer; it can only be
+-accessed by one process at any given time. Some hardware vendors ship
+-systems management software that use the watchdog for system resets
+-(f.e. HP ASR daemon). Such software has to be disabled if the watchdog
+-is to be used by SBD.
+-
+-=head2 Choosing and initializing the block device(s)
+-
+-First, you have to decide if you want to use one, two, or three devices.
+-
+-If you are using multiple ones, they should reside on independent
+-storage setups. Putting all three of them on the same logical unit for
+-example would not provide any additional redundancy.
+-
+-The SBD device can be connected via Fibre Channel, Fibre Channel over
+-Ethernet, or even iSCSI. Thus, an iSCSI target can become a sort-of
+-network-based quorum server; the advantage is that it does not require
+-a smart host at your third location, just block storage.
+-
+-The SBD partitions themselves B<must not> be mirrored (via MD,
+-DRBD, or the storage layer itself), since this could result in a
+-split-mirror scenario. Nor can they reside on cLVM2 volume groups, since
+-they must be accessed by the cluster stack before it has started the
+-cLVM2 daemons; hence, these should be either raw partitions or logical
+-units on (multipath) storage.
+-
+-The block device(s) must be accessible from all nodes. (While it is not
+-necessary that they share the same path name on all nodes, this is
+-considered a very good idea.)
+-
+-SBD will only use about one megabyte per device, so you can easily
+-create a small partition, or very small logical units. (The size of the
+-SBD device depends on the block size of the underlying device. Thus, 1MB
+-is fine on plain SCSI devices and SAN storage with 512 byte blocks. On
+-the IBM s390x architecture in particular, disks default to 4k blocks,
+-and thus require roughly 4MB.)
+-
+-The number of devices will affect the operation of SBD as follows:
+-
+-=over
+-
+-=item One device
+-
+-In its most simple implementation, you use one device only. This is
+-appropriate for clusters where all your data is on the same shared
+-storage (with internal redundancy) anyway; the SBD device does not
+-introduce an additional single point of failure then.
+-
+-If the SBD device is not accessible, the daemon will fail to start and
+-inhibit startup of cluster services.
+-
+-=item Two devices
+-
+-This configuration is a trade-off, primarily aimed at environments where
+-host-based mirroring is used, but no third storage device is available.
+-
+-SBD will not commit suicide if it loses access to one mirror leg; this
+-allows the cluster to continue to function even in the face of one outage.
+-
+-However, SBD will not fence the other side while only one mirror leg is
+-available, since it does not have enough knowledge to detect an asymmetric
+-split of the storage. So it will not be able to automatically tolerate a
+-second failure while one of the storage arrays is down. (Though you
+-can use the appropriate crm command to acknowledge the fence manually.)
+-
+-It will not start unless both devices are accessible on boot.
+-
+-=item Three devices
+-
+-In this most reliable and recommended configuration, SBD will only
+-self-fence if more than one device is lost; hence, this configuration is
+-resilient against temporary single device outages (be it due to failures
+-or maintenance). Fencing messages can still be successfully relayed if
+-at least two devices remain accessible.
+-
+-This configuration is appropriate for more complex scenarios where
+-storage is not confined to a single array. For example, host-based
+-mirroring solutions could have one SBD per mirror leg (not mirrored
+-itself), and an additional tie-breaker on iSCSI.
+-
+-It will only start if at least two devices are accessible on boot.
+-
+-=back
+-
+-After you have chosen the devices and created the appropriate partitions
+-and perhaps multipath alias names to ease management, use the C<sbd create>
+-command described above to initialize the SBD metadata on them.
+-
+-=head3 Sharing the block device(s) between multiple clusters
+-
+-It is possible to share the block devices between multiple clusters,
+-provided the total number of nodes accessing them does not exceed I<255>
+-nodes, and they all must share the same SBD timeouts (since these are
+-part of the metadata).
+-
+-If you are using multiple devices this can reduce the setup overhead
+-required. However, you should B<not> share devices between clusters in
+-different security domains.
+-
+-=head2 Configure SBD to start on boot
+-
+-On systems using C<sysvinit>, the C<openais> or C<corosync> system
+-start-up scripts must handle starting or stopping C<sbd> as required
+-before starting the rest of the cluster stack.
+-
+-For C<systemd>, sbd simply has to be enabled using
+-
+- systemctl enable sbd.service
+-
+-The daemon is brought online on each node before corosync and Pacemaker
+-are started, and terminated only after all other cluster components have
+-been shut down - ensuring that cluster resources are never activated
+-without SBD supervision.
+-
+-=head2 Configuration via sysconfig
+-
+-The system instance of C<sbd> is configured via F</etc/sysconfig/sbd>.
+-In this file, you must specify the device(s) used, as well as any
+-options to pass to the daemon:
+-
+- SBD_DEVICE="/dev/sda1;/dev/sdb1;/dev/sdc1"
+- SBD_PACEMAKER="true"
+-
+-C<sbd> will fail to start if no C<SBD_DEVICE> is specified. See the
+-installed template for more options that can be configured here.
+-In general configuration done via parameters takes precedence over
+-the configuration from the configuration file.
+-
+-=head2 Testing the sbd installation
+-
+-After a restart of the cluster stack on this node, you can now try
+-sending a test message to it as root, from this or any other node:
+-
+- sbd -d /dev/sda1 message node1 test
+-
+-The node will acknowledge the receipt of the message in the system logs:
+-
+- Aug 29 14:10:00 node1 sbd: [13412]: info: Received command test from node2
+-
+-This confirms that SBD is indeed up and running on the node, and that it
+-is ready to receive messages.
+-
+-Make B<sure> that F</etc/sysconfig/sbd> is identical on all cluster
+-nodes, and that all cluster nodes are running the daemon.
+-
+-=head1 Pacemaker CIB integration
+-
+-=head2 Fencing resource
+-
+-Pacemaker can only interact with SBD to issue a node fence if there is a
+-configure fencing resource. This should be a primitive, not a clone, as
+-follows:
+-
+- primitive fencing-sbd stonith:external/sbd \
+- params pcmk_delay_max=30
+-
+-This will automatically use the same devices as configured in
+-F</etc/sysconfig/sbd>.
+-
+-While you should not configure this as a clone (as Pacemaker will register
+-the fencing device on each node automatically), the I<pcmk_delay_max>
+-setting enables random fencing delay which ensures, in a scenario where a
+-split-brain scenario did occur in a two node cluster, that one of the nodes
+-has a better chance to survive to avoid double fencing.
+-
+-SBD also supports turning the reset request into a crash request, which
+-may be helpful for debugging if you have kernel crashdumping configured;
+-then, every fence request will cause the node to dump core. You can
+-enable this via the C<crashdump="true"> parameter on the fencing
+-resource. This is B<not> recommended for production use, but only for
+-debugging phases.
+-
+-=head2 General cluster properties
+-
+-You must also enable STONITH in general, and set the STONITH timeout to
+-be at least twice the I<msgwait> timeout you have configured, to allow
+-enough time for the fencing message to be delivered. If your I<msgwait>
+-timeout is 60 seconds, this is a possible configuration:
+-
+- property stonith-enabled="true"
+- property stonith-timeout="120s"
+-
+-B<Caution>: if I<stonith-timeout> is too low for I<msgwait> and the
+-system overhead, sbd will never be able to successfully complete a fence
+-request. This will create a fencing loop.
+-
+-Note that the sbd fencing agent will try to detect this and
+-automatically extend the I<stonith-timeout> setting to a reasonable
+-value, on the assumption that sbd modifying your configuration is
+-preferable to not fencing.
+-
+-=head1 Management tasks
+-
+-=head2 Recovering from temporary SBD device outage
+-
+-If you have multiple devices, failure of a single device is not immediately
+-fatal. C<sbd> will retry to restart the monitor for the device every 5
+-seconds by default. However, you can tune this via the options to the
+-I<watch> command.
+-
+-In case you wish the immediately force a restart of all currently
+-disabled monitor processes, you can send a I<SIGUSR1> to the SBD
+-I<inquisitor> process.
+-
+-
+-=head1 LICENSE
+-
+-Copyright (C) 2008-2013 Lars Marowsky-Bree
+-
+-This program is free software; you can redistribute it and/or
+-modify it under the terms of the GNU General Public
+-License as published by the Free Software Foundation; either
+-version 2 of the License, or (at your option) any later version.
+-
+-This software is distributed in the hope that it will be useful,
+-but WITHOUT ANY WARRANTY; without even the implied warranty of
+-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+-General Public License for more details.
+-
+-For details see the GNU General Public License at
+-http://www.gnu.org/licenses/gpl-2.0.html (version 2) and/or
+-http://www.gnu.org/licenses/gpl.html (the newest as per "any later").
+diff --git a/man/sbd.8.pod.in b/man/sbd.8.pod.in
+new file mode 100644
+index 0000000..ff89c82
+--- /dev/null
++++ b/man/sbd.8.pod.in
+@@ -0,0 +1,675 @@
++=head1 NAME
++
++sbd - STONITH Block Device daemon
++
++=head1 SYNOPSIS
++
++sbd <-d F</dev/...>> [options] C<command>
++
++=head1 SUMMARY
++
++SBD provides a node fencing mechanism (Shoot the other node in the head,
++STONITH) for Pacemaker-based clusters through the exchange of messages
++via shared block storage such as for example a SAN, iSCSI, FCoE. This
++isolates the fencing mechanism from changes in firmware version or
++dependencies on specific firmware controllers, and it can be used as a
++STONITH mechanism in all configurations that have reliable shared
++storage.
++
++SBD can also be used without any shared storage. In this mode, the
++watchdog device will be used to reset the node if it loses quorum, if
++any monitored daemon is lost and not recovered or if Pacemaker decides
++that the node requires fencing.
++
++The F<sbd> binary implements both the daemon that watches the message
++slots as well as the management tool for interacting with the block
++storage device(s). This mode of operation is specified via the
++C<command> parameter; some of these modes take additional parameters.
++
++To use SBD with shared storage, you must first C<create> the messaging
++layout on one to three block devices. Second, configure
++F</etc/sysconfig/sbd> to list those devices (and possibly adjust other
++options), and restart the cluster stack on each node to ensure that
++C<sbd> is started. Third, configure the C<external/sbd> fencing
++resource in the Pacemaker CIB.
++
++Each of these steps is documented in more detail below the description
++of the command options.
++
++C<sbd> can only be used as root.
++
++=head2 GENERAL OPTIONS
++
++=over
++
++=item B<-d> F</dev/...>
++
++Specify the block device(s) to be used. If you have more than one,
++specify this option up to three times. This parameter is mandatory for
++all modes, since SBD always needs a block device to interact with.
++
++This man page uses F</dev/sda1>, F</dev/sdb1>, and F</dev/sdc1> as
++example device names for brevity. However, in your production
++environment, you should instead always refer to them by using the long,
++stable device name (e.g.,
++F</dev/disk/by-id/dm-uuid-part1-mpath-3600508b400105b5a0001500000250000>).
++
++=item B<-v|-vv|-vvv>
++
++Enable verbose|debug|debug-library logging (optional)
++
++=item B<-h>
++
++Display a concise summary of C<sbd> options.
++
++=item B<-n> I<node>
++
++Set local node name; defaults to C<uname -n>. This should not need to be
++set.
++
++=item B<-R>
++
++Do B<not> enable realtime priority. By default, C<sbd> runs at realtime
++priority, locks itself into memory, and also acquires highest IO
++priority to protect itself against interference from other processes on
++the system. This is a debugging-only option.
++
++=item B<-I> I<N>
++
++Async IO timeout (defaults to 3 seconds, optional). You should not need
++to adjust this unless your IO setup is really very slow.
++
++(In daemon mode, the watchdog is refreshed when the majority of devices
++could be read within this time.)
++
++=back
++
++=head2 create
++
++Example usage:
++
++ sbd -d /dev/sdc2 -d /dev/sdd3 create
++
++If you specify the I<create> command, sbd will write a metadata header
++to the device(s) specified and also initialize the messaging slots for
++up to 255 nodes.
++
++B<Warning>: This command will not prompt for confirmation. Roughly the
++first megabyte of the specified block device(s) will be overwritten
++immediately and without backup.
++
++This command accepts a few options to adjust the default timings that
++are written to the metadata (to ensure they are identical across all
++nodes accessing the device).
++
++=over
++
++=item B<-1> I<N>
++
++Set watchdog timeout to N seconds. This depends mostly on your storage
++latency; the majority of devices must be successfully read within this
++time, or else the node will self-fence.
++
++If your sbd device(s) reside on a multipath setup or iSCSI, this should
++be the time required to detect a path failure. You may be able to reduce
++this if your device outages are independent, or if you are using the
++Pacemaker integration.
++
++=item B<-2> I<N>
++
++Set slot allocation timeout to N seconds. You should not need to tune
++this.
++
++=item B<-3> I<N>
++
++Set daemon loop timeout to N seconds. You should not need to tune this.
++
++=item B<-4> I<N>
++
++Set I<msgwait> timeout to N seconds. This should be twice the I<watchdog>
++timeout. This is the time after which a message written to a node's slot
++will be considered delivered. (Or long enough for the node to detect
++that it needed to self-fence.)
++
++This also affects the I<stonith-timeout> in Pacemaker's CIB; see below.
++
++=back
++
++=head2 list
++
++Example usage:
++
++ # sbd -d /dev/sda1 list
++ 0 hex-0 clear
++ 1 hex-7 clear
++ 2 hex-9 clear
++
++List all allocated slots on device, and messages. You should see all
++cluster nodes that have ever been started against this device. Nodes
++that are currently running should have a I<clear> state; nodes that have
++been fenced, but not yet restarted, will show the appropriate fencing
++message.
++
++=head2 dump
++
++Example usage:
++
++ # sbd -d /dev/sda1 dump
++ ==Dumping header on disk /dev/sda1
++ Header version : 2
++ Number of slots : 255
++ Sector size : 512
++ Timeout (watchdog) : 15
++ Timeout (allocate) : 2
++ Timeout (loop) : 1
++ Timeout (msgwait) : 30
++ ==Header on disk /dev/sda1 is dumped
++
++Dump meta-data header from device.
++
++=head2 watch
++
++Example usage:
++
++ sbd -d /dev/sdc2 -d /dev/sdd3 -P watch
++
++This command will make C<sbd> start in daemon mode. It will constantly monitor
++the message slot of the local node for incoming messages, reachability, and
++optionally take Pacemaker's state into account.
++
++C<sbd> B<must> be started on boot before the cluster stack! See below
++for enabling this according to your boot environment.
++
++The options for this mode are rarely specified directly on the
++commandline directly, but most frequently set via F</etc/sysconfig/sbd>.
++
++It also constantly monitors connectivity to the storage device, and
++self-fences in case the partition becomes unreachable, guaranteeing that it
++does not disconnect from fencing messages.
++
++A node slot is automatically allocated on the device(s) the first time
++the daemon starts watching the device; hence, manual allocation is not
++usually required.
++
++If a watchdog is used together with the C<sbd> as is strongly
++recommended, the watchdog is activated at initial start of the sbd
++daemon. The watchdog is refreshed every time the majority of SBD devices
++has been successfully read. Using a watchdog provides additional
++protection against C<sbd> crashing.
++
++If the Pacemaker integration is activated, C<sbd> will B<not> self-fence
++if device majority is lost, if:
++
++=over
++
++=item 1.
++
++The partition the node is in is still quorate according to the CIB;
++
++=item 2.
++
++it is still quorate according to Corosync's node count;
++
++=item 3.
++
++the node itself is considered online and healthy by Pacemaker.
++
++=back
++
++This allows C<sbd> to survive temporary outages of the majority of
++devices. However, while the cluster is in such a degraded state, it can
++neither successfully fence nor be shutdown cleanly (as taking the
++cluster below the quorum threshold will immediately cause all remaining
++nodes to self-fence). In short, it will not tolerate any further faults.
++Please repair the system before continuing.
++
++There is one C<sbd> process that acts as a master to which all watchers
++report; one per device to monitor the node's slot; and, optionally, one
++that handles the Pacemaker integration.
++
++=over
++
++=item B<-W>
++
++Enable or disable use of the system watchdog to protect against the sbd
++processes failing and the node being left in an undefined state. Specify
++this once to enable, twice to disable.
++
++Defaults to I<enabled>.
++
++=item B<-w> F</dev/watchdog>
++
++This can be used to override the default watchdog device used and should not
++usually be necessary.
++
++=item B<-p> F</var/run/sbd.pid>
++
++This option can be used to specify a pidfile for the main sbd process.
++
++=item B<-F> I<N>
++
++Number of failures before a failing servant process will not be restarted
++immediately until the dampening delay has expired. If set to zero, servants
++will be restarted immediately and indefinitely. If set to one, a failed
++servant will be restarted once every B<-t> seconds. If set to a different
++value, the servant will be restarted that many times within the dampening
++period and then delay.
++
++Defaults to I<1>.
++
++=item B<-t> I<N>
++
++Dampening delay before faulty servants are restarted. Combined with C<-F 1>,
++the most logical way to tune the restart frequency of servant processes.
++Default is 5 seconds.
++
++If set to zero, processes will be restarted indefinitely and immediately.
++
++=item B<-P>
++
++Enable Pacemaker integration which checks Pacemaker quorum and node health.
++Specify this once to enable, twice to disable.
++
++Defaults to I<enabled>.
++
++=item B<-S> I<N>
++
++Set the start mode. (Defaults to I<0>.)
++
++If this is set to zero, sbd will always start up unconditionally,
++regardless of whether the node was previously fenced or not.
++
++If set to one, sbd will only start if the node was previously shutdown
++cleanly (as indicated by an exit request message in the slot), or if the
++slot is empty. A reset, crashdump, or power-off request in any slot will
++halt the start up.
++
++This is useful to prevent nodes from rejoining if they were faulty. The
++node must be manually "unfenced" by sending an empty message to it:
++
++ sbd -d /dev/sda1 message node1 clear
++
++=item B<-s> I<N>
++
++Set the start-up wait time for devices. (Defaults to I<120>.)
++
++Dynamic block devices such as iSCSI might not be fully initialized and
++present yet. This allows one to set a timeout for waiting for devices to
++appear on start-up. If set to 0, start-up will be aborted immediately if
++no devices are available.
++
++=item B<-Z>
++
++Enable trace mode. B<Warning: this is unsafe for production, use at your
++own risk!> Specifying this once will turn all reboots or power-offs, be
++they caused by self-fence decisions or messages, into a crashdump.
++Specifying this twice will just log them but not continue running.
++
++=item B<-T>
++
++By default, the daemon will set the watchdog timeout as specified in the
++device metadata. However, this does not work for every watchdog device.
++In this case, you must manually ensure that the watchdog timeout used by
++the system correctly matches the SBD settings, and then specify this
++option to allow C<sbd> to continue with start-up.
++
++=item B<-5> I<N>
++
++Warn if the time interval for tickling the watchdog exceeds this many seconds.
++Since the node is unable to log the watchdog expiry (it reboots immediately
++without a chance to write its logs to disk), this is very useful for getting
++an indication that the watchdog timeout is too short for the IO load of the
++system.
++
++Default is 3 seconds, set to zero to disable.
++
++=item B<-C> I<N>
++
++Watchdog timeout to set before crashdumping. If SBD is set to crashdump
++instead of reboot - either via the trace mode settings or the I<external/sbd>
++fencing agent's parameter -, SBD will adjust the watchdog timeout to this
++setting before triggering the dump. Otherwise, the watchdog might trigger and
++prevent a successful crashdump from ever being written.
++
++Set to zero (= default) to disable.
++
++=item B<-r> I<N>
++
++Actions to be executed when the watchers don't timely report to the sbd
++master process or one of the watchers detects that the master process
++has died.
++
++Set timeout-action to comma-separated combination of
++noflush|flush plus reboot|crashdump|off.
++If just one of both is given the other stays at the default.
++
++This doesn't affect actions like off, crashdump, reboot explicitly
++triggered via message slots.
++And it does as well not configure the action a watchdog would
++trigger should it run off (there is no generic interface).
++
++Defaults to flush,reboot.
++
++=back
++
++=head2 allocate
++
++Example usage:
++
++ sbd -d /dev/sda1 allocate node1
++
++Explicitly allocates a slot for the specified node name. This should
++rarely be necessary, as every node will automatically allocate itself a
++slot the first time it starts up on watch mode.
++
++=head2 message
++
++Example usage:
++
++ sbd -d /dev/sda1 message node1 test
++
++Writes the specified message to node's slot. This is rarely done
++directly, but rather abstracted via the C<external/sbd> fencing agent
++configured as a cluster resource.
++
++Supported message types are:
++
++=over
++
++=item test
++
++This only generates a log message on the receiving node and can be used
++to check if SBD is seeing the device. Note that this could overwrite a
++fencing request send by the cluster, so should not be used during
++production.
++
++=item reset
++
++Reset the target upon receipt of this message.
++
++=item off
++
++Power-off the target.
++
++=item crashdump
++
++Cause the target node to crashdump.
++
++=item exit
++
++This will make the C<sbd> daemon exit cleanly on the target. You should
++B<not> send this message manually; this is handled properly during
++shutdown of the cluster stack. Manually stopping the daemon means the
++node is unprotected!
++
++=item clear
++
++This message indicates that no real message has been sent to the node.
++You should not set this manually; C<sbd> will clear the message slot
++automatically during start-up, and setting this manually could overwrite
++a fencing message by the cluster.
++
++=back
++
++=head2 query-watchdog
++
++Example usage:
++
++ sbd query-watchdog
++
++Check for available watchdog devices and print some info.
++
++B<Warning>: This command will arm the watchdog during query, and if your
++watchdog refuses disarming (for example, if its kernel module has the
++'nowayout' parameter set) this will reset your system.
++
++=head2 test-watchdog
++
++Example usage:
++
++ sbd test-watchdog [-w /dev/watchdog3]
++
++Test specified watchdog device (/dev/watchdog by default).
++
++B<Warning>: This command will arm the watchdog and have your system reset
++in case your watchdog is working properly! If issued from an interactive
++session, it will prompt for confirmation.
++
++=head1 Base system configuration
++
++=head2 Configure a watchdog
++
++It is highly recommended that you configure your Linux system to load a
++watchdog driver with hardware assistance (as is available on most modern
++systems), such as I<hpwdt>, I<iTCO_wdt>, or others. As a fall-back, you
++can use the I<softdog> module.
++
++No other software must access the watchdog timer; it can only be
++accessed by one process at any given time. Some hardware vendors ship
++systems management software that use the watchdog for system resets
++(f.e. HP ASR daemon). Such software has to be disabled if the watchdog
++is to be used by SBD.
++
++=head2 Choosing and initializing the block device(s)
++
++First, you have to decide if you want to use one, two, or three devices.
++
++If you are using multiple ones, they should reside on independent
++storage setups. Putting all three of them on the same logical unit for
++example would not provide any additional redundancy.
++
++The SBD device can be connected via Fibre Channel, Fibre Channel over
++Ethernet, or even iSCSI. Thus, an iSCSI target can become a sort-of
++network-based quorum server; the advantage is that it does not require
++a smart host at your third location, just block storage.
++
++The SBD partitions themselves B<must not> be mirrored (via MD,
++DRBD, or the storage layer itself), since this could result in a
++split-mirror scenario. Nor can they reside on cLVM2 volume groups, since
++they must be accessed by the cluster stack before it has started the
++cLVM2 daemons; hence, these should be either raw partitions or logical
++units on (multipath) storage.
++
++The block device(s) must be accessible from all nodes. (While it is not
++necessary that they share the same path name on all nodes, this is
++considered a very good idea.)
++
++SBD will only use about one megabyte per device, so you can easily
++create a small partition, or very small logical units. (The size of the
++SBD device depends on the block size of the underlying device. Thus, 1MB
++is fine on plain SCSI devices and SAN storage with 512 byte blocks. On
++the IBM s390x architecture in particular, disks default to 4k blocks,
++and thus require roughly 4MB.)
++
++The number of devices will affect the operation of SBD as follows:
++
++=over
++
++=item One device
++
++In its most simple implementation, you use one device only. This is
++appropriate for clusters where all your data is on the same shared
++storage (with internal redundancy) anyway; the SBD device does not
++introduce an additional single point of failure then.
++
++If the SBD device is not accessible, the daemon will fail to start and
++inhibit startup of cluster services.
++
++=item Two devices
++
++This configuration is a trade-off, primarily aimed at environments where
++host-based mirroring is used, but no third storage device is available.
++
++SBD will not commit suicide if it loses access to one mirror leg; this
++allows the cluster to continue to function even in the face of one outage.
++
++However, SBD will not fence the other side while only one mirror leg is
++available, since it does not have enough knowledge to detect an asymmetric
++split of the storage. So it will not be able to automatically tolerate a
++second failure while one of the storage arrays is down. (Though you
++can use the appropriate crm command to acknowledge the fence manually.)
++
++It will not start unless both devices are accessible on boot.
++
++=item Three devices
++
++In this most reliable and recommended configuration, SBD will only
++self-fence if more than one device is lost; hence, this configuration is
++resilient against temporary single device outages (be it due to failures
++or maintenance). Fencing messages can still be successfully relayed if
++at least two devices remain accessible.
++
++This configuration is appropriate for more complex scenarios where
++storage is not confined to a single array. For example, host-based
++mirroring solutions could have one SBD per mirror leg (not mirrored
++itself), and an additional tie-breaker on iSCSI.
++
++It will only start if at least two devices are accessible on boot.
++
++=back
++
++After you have chosen the devices and created the appropriate partitions
++and perhaps multipath alias names to ease management, use the C<sbd create>
++command described above to initialize the SBD metadata on them.
++
++=head3 Sharing the block device(s) between multiple clusters
++
++It is possible to share the block devices between multiple clusters,
++provided the total number of nodes accessing them does not exceed I<255>
++nodes, and they all must share the same SBD timeouts (since these are
++part of the metadata).
++
++If you are using multiple devices this can reduce the setup overhead
++required. However, you should B<not> share devices between clusters in
++different security domains.
++
++=head2 Configure SBD to start on boot
++
++On systems using C<sysvinit>, the C<openais> or C<corosync> system
++start-up scripts must handle starting or stopping C<sbd> as required
++before starting the rest of the cluster stack.
++
++For C<systemd>, sbd simply has to be enabled using
++
++ systemctl enable sbd.service
++
++The daemon is brought online on each node before corosync and Pacemaker
++are started, and terminated only after all other cluster components have
++been shut down - ensuring that cluster resources are never activated
++without SBD supervision.
++
++=head2 Configuration via sysconfig
++
++The system instance of C<sbd> is configured via F</etc/sysconfig/sbd>.
++In this file, you must specify the device(s) used, as well as any
++options to pass to the daemon:
++
++ SBD_DEVICE="/dev/sda1;/dev/sdb1;/dev/sdc1"
++ SBD_PACEMAKER="true"
++
++C<sbd> will fail to start if no C<SBD_DEVICE> is specified. See the
++installed template or section for configuration via environment
++for more options that can be configured here.
++In general configuration done via parameters takes precedence over
++the configuration from the configuration file.
++
++=head2 Configuration via environment
++
++=over
++@environment_section@
++=back
++
++=head2 Testing the sbd installation
++
++After a restart of the cluster stack on this node, you can now try
++sending a test message to it as root, from this or any other node:
++
++ sbd -d /dev/sda1 message node1 test
++
++The node will acknowledge the receipt of the message in the system logs:
++
++ Aug 29 14:10:00 node1 sbd: [13412]: info: Received command test from node2
++
++This confirms that SBD is indeed up and running on the node, and that it
++is ready to receive messages.
++
++Make B<sure> that F</etc/sysconfig/sbd> is identical on all cluster
++nodes, and that all cluster nodes are running the daemon.
++
++=head1 Pacemaker CIB integration
++
++=head2 Fencing resource
++
++Pacemaker can only interact with SBD to issue a node fence if there is a
++configure fencing resource. This should be a primitive, not a clone, as
++follows:
++
++ primitive fencing-sbd stonith:external/sbd \
++ params pcmk_delay_max=30
++
++This will automatically use the same devices as configured in
++F</etc/sysconfig/sbd>.
++
++While you should not configure this as a clone (as Pacemaker will register
++the fencing device on each node automatically), the I<pcmk_delay_max>
++setting enables random fencing delay which ensures, in a scenario where a
++split-brain scenario did occur in a two node cluster, that one of the nodes
++has a better chance to survive to avoid double fencing.
++
++SBD also supports turning the reset request into a crash request, which
++may be helpful for debugging if you have kernel crashdumping configured;
++then, every fence request will cause the node to dump core. You can
++enable this via the C<crashdump="true"> parameter on the fencing
++resource. This is B<not> recommended for production use, but only for
++debugging phases.
++
++=head2 General cluster properties
++
++You must also enable STONITH in general, and set the STONITH timeout to
++be at least twice the I<msgwait> timeout you have configured, to allow
++enough time for the fencing message to be delivered. If your I<msgwait>
++timeout is 60 seconds, this is a possible configuration:
++
++ property stonith-enabled="true"
++ property stonith-timeout="120s"
++
++B<Caution>: if I<stonith-timeout> is too low for I<msgwait> and the
++system overhead, sbd will never be able to successfully complete a fence
++request. This will create a fencing loop.
++
++Note that the sbd fencing agent will try to detect this and
++automatically extend the I<stonith-timeout> setting to a reasonable
++value, on the assumption that sbd modifying your configuration is
++preferable to not fencing.
++
++=head1 Management tasks
++
++=head2 Recovering from temporary SBD device outage
++
++If you have multiple devices, failure of a single device is not immediately
++fatal. C<sbd> will retry to restart the monitor for the device every 5
++seconds by default. However, you can tune this via the options to the
++I<watch> command.
++
++In case you wish the immediately force a restart of all currently
++disabled monitor processes, you can send a I<SIGUSR1> to the SBD
++I<inquisitor> process.
++
++
++=head1 LICENSE
++
++Copyright (C) 2008-2013 Lars Marowsky-Bree
++
++This program is free software; you can redistribute it and/or
++modify it under the terms of the GNU General Public
++License as published by the Free Software Foundation; either
++version 2 of the License, or (at your option) any later version.
++
++This software is distributed in the hope that it will be useful,
++but WITHOUT ANY WARRANTY; without even the implied warranty of
++MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++General Public License for more details.
++
++For details see the GNU General Public License at
++http://www.gnu.org/licenses/gpl-2.0.html (version 2) and/or
++http://www.gnu.org/licenses/gpl.html (the newest as per "any later").
+diff --git a/src/sbd.sysconfig b/src/sbd.sysconfig
+index e1a60ed..33b50d0 100644
+--- a/src/sbd.sysconfig
++++ b/src/sbd.sysconfig
+@@ -14,7 +14,7 @@
+ #
+ SBD_PACEMAKER=yes
+
+-## Type: list(always,clean)
++## Type: always / clean
+ ## Default: always
+ #
+ # Specify the start mode for sbd. Setting this to "clean" will only
+@@ -103,6 +103,7 @@ SBD_TIMEOUT_ACTION=flush,reboot
+ # Thus in auto-mode sbd will check if the slice has RT-budget assigned.
+ # If that is the case sbd will stay in that slice while it will
+ # be moved to root-slice otherwise.
++#
+ SBD_MOVE_TO_ROOT_CGROUP=auto
+
+ ## Type: string
+--
+1.8.3.1
+
diff --git a/0003-Fix-scheduling-overhaul-the-whole-thing.patch b/0003-Fix-scheduling-overhaul-the-whole-thing.patch
new file mode 100644
index 0000000..05fab9d
--- /dev/null
+++ b/0003-Fix-scheduling-overhaul-the-whole-thing.patch
@@ -0,0 +1,152 @@
+From 4bc08cf76fc01e98cbec76bf32bb333b77f69217 Mon Sep 17 00:00:00 2001
+From: Klaus Wenninger <klaus.wenninger(a)aon.at>
+Date: Thu, 27 Feb 2020 19:02:57 +0100
+Subject: [PATCH] Fix: scheduling: overhaul the whole thing
+
+- prevent possible lockup when format in proc changes
+- properly get and handle scheduler policy & prio
+- on SCHED_RR failing push to the max with SCHED_OTHER
+---
+ src/sbd-common.c | 56 ++++++++++++++++++++++++++++++++++++++++++++------------
+ 1 file changed, 44 insertions(+), 12 deletions(-)
+
+diff --git a/src/sbd-common.c b/src/sbd-common.c
+index 9ec43b2..c2da758 100644
+--- a/src/sbd-common.c
++++ b/src/sbd-common.c
+@@ -26,6 +26,9 @@
+ #include <pwd.h>
+ #include <unistd.h>
+ #include <dirent.h>
++#include <sys/time.h>
++#include <sys/resource.h>
++#include <limits.h>
+
+ #ifdef _POSIX_MEMLOCK
+ # include <sys/mman.h>
+@@ -298,7 +301,7 @@ watchdog_populate_list(void)
+ FILE *file;
+
+ snprintf(entry_name, sizeof(entry_name),
+- SYS_CLASS_WATCHDOG "/%s/dev", entry->d_name);
++ SYS_CLASS_WATCHDOG "/%s/dev", entry->d_name);
+ file = fopen(entry_name, "r");
+ if (file) {
+ int major, minor;
+@@ -667,7 +670,7 @@ static int get_realtime_budget(void)
+ {
+ FILE *f;
+ char fname[PATH_MAX];
+- int res = -1, lnum = 0;
++ int res = -1, lnum = 0, num;
+ char *cgroup = NULL, *namespecs = NULL;
+
+ snprintf(fname, PATH_MAX, "/proc/%jd/cgroup", (intmax_t)getpid());
+@@ -677,7 +680,8 @@ static int get_realtime_budget(void)
+ (intmax_t)getpid());
+ goto exit_res;
+ }
+- while( fscanf(f, "%d:%m[^:]:%m[^\n]", &lnum, &namespecs, &cgroup) !=EOF ) {
++ while( (num = fscanf(f, "%d:%m[^:]:%m[^\n]\n", &lnum,
++ &namespecs, &cgroup)) !=EOF ) {
+ if (namespecs && strstr(namespecs, "cpuacct")) {
+ free(namespecs);
+ break;
+@@ -690,6 +694,11 @@ static int get_realtime_budget(void)
+ free(namespecs);
+ namespecs = NULL;
+ }
++ /* not to get stuck if format changes */
++ if ((num < 3) && ((fscanf(f, "%*[^\n]") == EOF) ||
++ (fscanf(f, "\n") == EOF))) {
++ break;
++ }
+ }
+ fclose(f);
+ if (cgroup == NULL) {
+@@ -776,15 +785,17 @@ sbd_make_realtime(int priority, int stackgrowK, int heapgrowK)
+ return;
+ }
+
++do {
+ #ifdef SCHED_RR
+ if (move_to_root_cgroup) {
+ sbd_move_to_root_cgroup(enforce_moving_to_root_cgroup);
+ }
+
+ {
+- int pcurrent = 0;
+ int pmin = sched_get_priority_min(SCHED_RR);
+ int pmax = sched_get_priority_max(SCHED_RR);
++ struct sched_param sp;
++ int pcurrent;
+
+ if (priority == 0) {
+ priority = pmax;
+@@ -794,26 +805,47 @@ sbd_make_realtime(int priority, int stackgrowK, int heapgrowK)
+ priority = pmax;
+ }
+
+- pcurrent = sched_getscheduler(0);
+- if (pcurrent < 0) {
++ if (sched_getparam(0, &sp) < 0) {
+ cl_perror("Unable to get scheduler priority");
+
+- } else if(pcurrent < priority) {
+- struct sched_param sp;
++ } else if ((pcurrent = sched_getscheduler(0)) < 0) {
++ cl_perror("Unable to get scheduler policy");
+
++ } else if ((pcurrent == SCHED_RR) &&
++ (sp.sched_priority >= priority)) {
++ cl_log(LOG_INFO,
++ "Stay with priority (%d) for policy SCHED_RR",
++ sp.sched_priority);
++ break;
++ } else {
+ memset(&sp, 0, sizeof(sp));
+ sp.sched_priority = priority;
+
+ if (sched_setscheduler(0, SCHED_RR, &sp) < 0) {
+- cl_perror("Unable to set scheduler priority to %d", priority);
++ cl_perror(
++ "Unable to set scheduler policy to SCHED_RR priority %d",
++ priority);
+ } else {
+- cl_log(LOG_INFO, "Scheduler priority is now %d", priority);
++ cl_log(LOG_INFO,
++ "Scheduler policy is now SCHED_RR priority %d",
++ priority);
++ break;
+ }
+ }
+ }
+ #else
+- cl_log(LOG_ERR, "System does not support updating the scheduler priority");
++ cl_log(LOG_ERR, "System does not support updating the scheduler policy");
++#endif
++#ifdef PRIO_PGRP
++ if (setpriority(PRIO_PGRP, 0, INT_MIN) < 0) {
++ cl_perror("Unable to raise the scheduler priority");
++ } else {
++ cl_log(LOG_INFO, "Scheduler priority raised to the maximum");
++ }
++#else
++ cl_perror("System does not support setting the scheduler priority");
+ #endif
++} while (0);
+
+ sbd_memlock(heapgrowK, stackgrowK);
+ }
+@@ -826,7 +858,7 @@ maximize_priority(void)
+ return;
+ }
+
+- sbd_make_realtime(0, 256, 256);
++ sbd_make_realtime(0, 256, 256);
+
+ if (ioprio_set(IOPRIO_WHO_PROCESS, getpid(),
+ IOPRIO_PRIO_VALUE(IOPRIO_CLASS_RT, 1)) != 0) {
+--
+1.8.3.1
+
diff --git a/gating.yaml b/gating.yaml
new file mode 100644
index 0000000..9e15ced
--- /dev/null
+++ b/gating.yaml
@@ -0,0 +1,15 @@
+--- !Policy
+product_versions:
+ - fedora-*
+decision_context: bodhi_update_push_testing
+subject_type: koji_build
+rules:
+ - !PassingTestCaseRule {test_case_name: fedora-ci.koji-build.tier0.functional}
+--- !Policy
+product_versions:
+ - fedora-*
+decision_context: bodhi_update_push_stable
+subject_type: koji_build
+rules:
+ - !PassingTestCaseRule {test_case_name: fedora-ci.koji-build.tier0.functional}
+
diff --git a/sbd.spec b/sbd.spec
index 86d6f85..d5f624c 100644
--- a/sbd.spec
+++ b/sbd.spec
@@ -15,24 +15,28 @@
# Please submit bugfixes or comments via http://bugs.opensuse.org/
#
-%global commit 7f33d1a409d0a4e2cd69946688c48eaa8f3c5d26
+%global commit 25fce8a7d5e8cd5abc2379077381b10bd6cec183
%global shortcommit %(c=%{commit}; echo ${c:0:7})
-%global github_owner clusterlabs
+%global github_owner Clusterlabs
+%global buildnum 1
Name: sbd
Summary: Storage-based death
License: GPLv2+
-Version: 1.4.0
-Release: 3%{?dist}
+Group: System Environment/Daemons
+Version: 1.4.1
+Release: %{buildnum}%{?dist}
Url: https://github.com/%{github_owner}/%{name}
Source0: https://github.com/%{github_owner}/%{name}/archive/%{commit}/%{name}-%{co...
-Patch0: 0001-Refactor-fail-earlier-on-invalid-servants.patch
+Patch0: 0001-Fix-regressions.sh-make-parameter-passing-consistent.patch
+Patch1: 0002-Doc-add-environment-section-to-man-page.patch
+Patch2: 0003-Fix-scheduling-overhaul-the-whole-thing.patch
BuildRequires: autoconf
BuildRequires: automake
BuildRequires: libuuid-devel
BuildRequires: glib2-devel
BuildRequires: libaio-devel
-BuildRequires: corosynclib-devel
+BuildRequires: corosync-devel
BuildRequires: pacemaker-libs-devel
BuildRequires: libtool
BuildRequires: libuuid-devel
@@ -40,6 +44,7 @@ BuildRequires: libxml2-devel
BuildRequires: pkgconfig
BuildRequires: make
BuildRequires: systemd
+Conflicts: fence-agents-sbd < 4.5.0
%if 0%{?rhel}
ExclusiveArch: i686 x86_64 s390x aarch64 ppc64le
@@ -53,15 +58,28 @@ ExclusiveArch: i686 x86_64 s390x aarch64 ppc64le
This package contains the storage-based death functionality.
+%package tests
+Summary: Storage-based death environment for regression tests
+License: GPLv2+
+Group: System Environment/Daemons
+
+%description tests
+This package provides an environment + testscripts for
+regression-testing sbd.
+
###########################################################
%prep
%autosetup -n %{name}-%{commit} -p1
+%ifarch s390x s390
+sed -i src/sbd.sysconfig -e "s/Default: 5/Default: 15/"
+sed -i src/sbd.sysconfig -e "s/SBD_WATCHDOG_TIMEOUT=5/SBD_WATCHDOG_TIMEOUT=15/"
+%endif
###########################################################
%build
-autoreconf -i
+./autogen.sh
export CFLAGS="$RPM_OPT_FLAGS -Wall -Werror"
%configure
make %{?_smp_mflags}
@@ -73,6 +91,7 @@ make %{?_smp_mflags}
make DESTDIR=$RPM_BUILD_ROOT LIBDIR=%{_libdir} install
rm -rf ${RPM_BUILD_ROOT}%{_libdir}/stonith
+install -D -m 0755 tests/regressions.sh $RPM_BUILD_ROOT/usr/share/sbd/regressions.sh
%if %{defined _unitdir}
install -D -m 0644 src/sbd.service $RPM_BUILD_ROOT/%{_unitdir}/sbd.service
install -D -m 0644 src/sbd_remote.service $RPM_BUILD_ROOT/%{_unitdir}/sbd_remote.service
@@ -81,12 +100,26 @@ install -D -m 0644 src/sbd_remote.service $RPM_BUILD_ROOT/%{_unitdir}/sbd_remote
mkdir -p ${RPM_BUILD_ROOT}%{_sysconfdir}/sysconfig
install -m 644 src/sbd.sysconfig ${RPM_BUILD_ROOT}%{_sysconfdir}/sysconfig/sbd
+# Don't package static libs
+find %{buildroot} -name '*.a' -type f -print0 | xargs -0 rm -f
+find %{buildroot} -name '*.la' -type f -print0 | xargs -0 rm -f
+
###########################################################
%if %{defined _unitdir}
%post
%systemd_post sbd.service
%systemd_post sbd_remote.service
+if [ $1 -ne 1 ] ; then
+ if systemctl --quiet is-enabled sbd.service 2>/dev/null
+ then
+ systemctl --quiet reenable sbd.service 2>/dev/null || :
+ fi
+ if systemctl --quiet is-enabled sbd_remote.service 2>/dev/null
+ then
+ systemctl --quiet reenable sbd_remote.service 2>/dev/null || :
+ fi
+fi
%preun
%systemd_preun sbd.service
@@ -102,6 +135,7 @@ install -m 644 src/sbd.sysconfig ${RPM_BUILD_ROOT}%{_sysconfdir}/sysconfig/sbd
%defattr(-,root,root)
%config(noreplace) %{_sysconfdir}/sysconfig/sbd
%{_sbindir}/sbd
+%exclude %{_datadir}/sbd/regressions.sh
%doc %{_mandir}/man8/sbd*
%if %{defined _unitdir}
%{_unitdir}/sbd.service
@@ -109,7 +143,21 @@ install -m 644 src/sbd.sysconfig ${RPM_BUILD_ROOT}%{_sysconfdir}/sysconfig/sbd
%endif
%doc COPYING
+%files tests
+###########################################################
+%defattr(-,root,root)
+%dir %{_datadir}/sbd
+%{_datadir}/sbd/regressions.sh
+%{_libdir}/libsbdtestbed*
+
%changelog
+* Thu Mar 5 2020 Klaus Wenninger <kwenning(a)redhat.com> - 1.4.1-4
+- Rebase to upstream v1.4.1
+- Make coverity happy with parameter passing in regressions.sh
+- Add auto generated environment section to man-page
+- Overhaul setting scheduler policy/priority
+- Enable Fedora CI Gating
+
* Thu Jan 30 2020 Fedora Release Engineering <releng(a)fedoraproject.org> - 1.4.0-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
diff --git a/sources b/sources
index fab3041..50b7de1 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-SHA512 (sbd-7f33d1a409d0a4e2cd69946688c48eaa8f3c5d26.tar.gz) = 1baca43ad95d8d0886cbd1db82eeb617a2055e5a31d16f2802c27b120894c6829bfc99663e2da402a37e6c52d0cda6cec63cbc15cb6c580895e5a1d30e5b1c62
+SHA512 (sbd-25fce8a7d5e8cd5abc2379077381b10bd6cec183.tar.gz) = 3b89ee0aa88282f17c8daf725a1e7a8c2f2affdcf6ff6f4ca4faf250760d778a65c5693e5df3fcc7554d60dd9b0cb1a0350e266fadb7668320f3c676d8799a29
diff --git a/tests/inventory b/tests/inventory
new file mode 100755
index 0000000..e0cea17
--- /dev/null
+++ b/tests/inventory
@@ -0,0 +1,4 @@
+#!/bin/bash
+export TEST_DOCKER_EXTRA_ARGS="--privileged --network host"
+exec merge-standard-inventory "$@"
+
diff --git a/tests/tests.yml b/tests/tests.yml
new file mode 100644
index 0000000..49bc170
--- /dev/null
+++ b/tests/tests.yml
@@ -0,0 +1,16 @@
+---
+- hosts: localhost
+ roles:
+ - role: standard-test-basic
+ tags:
+ - classic
+ - container
+ tests:
+ - smoke:
+ dir: .
+ run: /usr/share/sbd/regressions.sh
+ required_packages:
+ - sbd
+ - sbd-tests
+ - device-mapper
+
4 years, 2 months
Architecture specific change in rpms/sbd.git
by githook-noreply@fedoraproject.org
The package rpms/sbd.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/sbd.git/commit/?id=92066d1d784cba....
Change:
+%ifarch s390x s390
Thanks.
Full change:
============
commit 92066d1d784cbaf327bd50cc46f311c3592e1035
Author: Klaus Wenninger <klaus.wenninger(a)aon.at>
Date: Fri Mar 6 14:25:25 2020 +0100
* Thu Mar 5 2020 Klaus Wenninger <kwenning(a)redhat.com> - 1.4.1-1
- Rebase to upstream v1.4.1
- Make coverity happy with parameter passing in regressions.sh
- Add auto generated environment section to man-page
- Overhaul setting scheduler policy/priority
- Enable Fedora CI Gating
diff --git a/.gitignore b/.gitignore
index 0fb7102..ba457ce 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1 +1,2 @@
/sbd-*.tar.gz
+/sbd-*.src.rpm
diff --git a/0001-Fix-regressions.sh-make-parameter-passing-consistent.patch b/0001-Fix-regressions.sh-make-parameter-passing-consistent.patch
new file mode 100644
index 0000000..6f17a5a
--- /dev/null
+++ b/0001-Fix-regressions.sh-make-parameter-passing-consistent.patch
@@ -0,0 +1,82 @@
+From 1d2a7b8d059d4f090b351b8decca0ddf274c82a0 Mon Sep 17 00:00:00 2001
+From: Klaus Wenninger <klaus.wenninger(a)aon.at>
+Date: Wed, 20 Nov 2019 15:20:19 +0100
+Subject: [PATCH] Fix: regressions.sh: make parameter passing consistent
+
+---
+ tests/regressions.sh | 24 ++++++++++++------------
+ 1 file changed, 12 insertions(+), 12 deletions(-)
+
+diff --git a/tests/regressions.sh b/tests/regressions.sh
+index 6cfb303..7ab80be 100755
+--- a/tests/regressions.sh
++++ b/tests/regressions.sh
+@@ -32,7 +32,7 @@
+ : ${SBD_USE_DM:="yes"}
+
+ sbd() {
+- LD_PRELOAD=${SBD_PRELOAD} SBD_WATCHDOG_TIMEOUT=5 SBD_DEVICE="${SBD_DEVICE}" SBD_PRELOAD_LOG=${SBD_PRELOAD_LOG} SBD_WATCHDOG_DEV=/dev/watchdog setsid ${SBD_BINARY} -p ${SBD_PIDFILE} $*
++ LD_PRELOAD=${SBD_PRELOAD} SBD_WATCHDOG_TIMEOUT=5 SBD_DEVICE="${SBD_DEVICE}" SBD_PRELOAD_LOG=${SBD_PRELOAD_LOG} SBD_WATCHDOG_DEV=/dev/watchdog setsid ${SBD_BINARY} -p ${SBD_PIDFILE} "$@"
+ }
+
+ sbd_wipe_disk() {
+@@ -98,26 +98,26 @@ sbd_daemon_cleanup() {
+ pkill -TERM --pidfile ${SBD_PIDFILE} 2>/dev/null
+ sleep 5
+ pkill -KILL --pidfile ${SBD_PIDFILE} 2>/dev/null
+- pkill -KILL --parent $(cat ${SBD_PIDFILE} 2>/dev/null) 2>/dev/null
++ pkill -KILL --parent "$(cat ${SBD_PIDFILE} 2>/dev/null)" 2>/dev/null
+ echo > ${SBD_PIDFILE}
+ }
+
+ _ok() {
+- echo -- $@
+- $@
++ echo "-- $*"
++ "$@"
+ rc=$?
+ if [ $rc -ne 0 ]; then
+- echo "$@ failed with $rc"
++ echo "$* failed with $rc"
+ exit $rc
+ fi
+ }
+
+ _no() {
+- echo -- $@
+- $@
++ echo "-- $*"
++ "$@"
+ rc=$?
+ if [ $rc -eq 0 ]; then
+- echo "$@ did NOT fail ($rc)"
++ echo "$* did NOT fail ($rc)"
+ exit $rc
+ fi
+ return 0
+@@ -126,7 +126,7 @@ _no() {
+ _in_log() {
+ grep "$@" ${SBD_PRELOAD_LOG} >/dev/null
+ if [ $? -ne 0 ]; then
+- echo "didn't find '$@' in log:"
++ echo "didn't find '$*' in log:"
+ cat ${SBD_PRELOAD_LOG}
+ sbd_daemon_cleanup
+ exit 1
+@@ -227,10 +227,10 @@ test_stall_inquisitor() {
+ sbd_daemon_cleanup
+ sbd -d ${D[1]} -d ${D[2]} -d ${D[3]} -n test-1 watch
+ sleep 10
+- _ok kill -0 $(cat ${SBD_PIDFILE})
+- kill -STOP $(cat ${SBD_PIDFILE})
++ _ok kill -0 "$(cat ${SBD_PIDFILE})"
++ kill -STOP "$(cat ${SBD_PIDFILE})"
+ sleep 10
+- kill -CONT $(cat ${SBD_PIDFILE}) 2>/dev/null
++ kill -CONT "$(cat ${SBD_PIDFILE})" 2>/dev/null
+ _in_log "watchdog fired"
+ }
+
+--
+1.8.3.1
+
diff --git a/0001-Refactor-fail-earlier-on-invalid-servants.patch b/0001-Refactor-fail-earlier-on-invalid-servants.patch
deleted file mode 100644
index cb71002..0000000
--- a/0001-Refactor-fail-earlier-on-invalid-servants.patch
+++ /dev/null
@@ -1,142 +0,0 @@
-From 8301cbafed191f30656a22876941cc7c9189b623 Mon Sep 17 00:00:00 2001
-From: Klaus Wenninger <klaus.wenninger(a)aon.at>
-Date: Thu, 31 Jan 2019 14:42:01 +0100
-Subject: [PATCH] Refactor: fail earlier on invalid servants
-
----
- src/sbd-inquisitor.c | 51 ++++++++++++++++++++++++++++++++-------------------
- src/sbd-md.c | 7 +------
- src/sbd.h | 2 +-
- 3 files changed, 34 insertions(+), 26 deletions(-)
-
-diff --git a/src/sbd-inquisitor.c b/src/sbd-inquisitor.c
-index 8e0bc87..9be6c99 100644
---- a/src/sbd-inquisitor.c
-+++ b/src/sbd-inquisitor.c
-@@ -42,19 +42,36 @@ void recruit_servant(const char *devname, pid_t pid)
- struct servants_list_item *newbie;
-
- if (lookup_servant_by_dev(devname)) {
-- cl_log(LOG_DEBUG, "Servant %s already exists", devname);
-- return;
-+ cl_log(LOG_DEBUG, "Servant %s already exists", devname);
-+ return;
- }
-
- newbie = malloc(sizeof(*newbie));
-- if (!newbie) {
-- fprintf(stderr, "malloc failed in recruit_servant.\n");
-- exit(1);
-+ if (newbie) {
-+ memset(newbie, 0, sizeof(*newbie));
-+ newbie->devname = strdup(devname);
-+ newbie->pid = pid;
-+ newbie->first_start = 1;
-+ }
-+ if (!newbie || !newbie->devname) {
-+ fprintf(stderr, "heap allocation failed in recruit_servant.\n");
-+ exit(1);
-+ }
-+
-+ /* some sanity-check on our newbie */
-+ if (sbd_is_disk(newbie)) {
-+ cl_log(LOG_INFO, "Monitoring %s", devname);
-+ disk_count++;
-+ } else if (sbd_is_pcmk(newbie) || sbd_is_cluster(newbie)) {
-+ /* alive just after pcmk and cluster servants have shown up */
-+ newbie->outdated = 1;
-+ } else {
-+ /* toss our newbie */
-+ cl_log(LOG_ERR, "Refusing to recruit unrecognized servant %s", devname);
-+ free((void *) newbie->devname);
-+ free(newbie);
-+ return;
- }
-- memset(newbie, 0, sizeof(*newbie));
-- newbie->devname = strdup(devname);
-- newbie->pid = pid;
-- newbie->first_start = 1;
-
- if (!s) {
- servants_leader = newbie;
-@@ -65,12 +82,6 @@ void recruit_servant(const char *devname, pid_t pid)
- }
-
- servant_count++;
-- if(sbd_is_disk(newbie)) {
-- cl_log(LOG_INFO, "Monitoring %s", devname);
-- disk_count++;
-- } else {
-- newbie->outdated = 1;
-- }
- }
-
- int assign_servant(const char* devname, functionp_t functionp, int mode, const void* argp)
-@@ -148,7 +159,7 @@ void servant_start(struct servants_list_item *s)
- if (sbd_is_disk(s)) {
- #if SUPPORT_SHARED_DISK
- DBGLOG(LOG_INFO, "Starting servant for device %s", s->devname);
-- s->pid = assign_servant(s->devname, servant, start_mode, s);
-+ s->pid = assign_servant(s->devname, servant_md, start_mode, s);
- #else
- cl_log(LOG_ERR, "Shared disk functionality not supported");
- return;
-@@ -785,12 +796,14 @@ parse_device_line(const char *line)
-
- if (lpc > last) {
- entry = calloc(1, 1 + lpc - last);
-+ if (!entry) {
-+ fprintf(stderr, "heap allocation failed parsing device-line.\n");
-+ exit(1);
-+ }
- rc = sscanf(line + last, "%[^;]", entry);
- }
-
-- if (entry == NULL) {
-- /* Skip */
-- } else if (rc != 1) {
-+ if (rc != 1) {
- cl_log(LOG_WARNING, "Could not parse (%d %d): %s", last, lpc, line + last);
- } else {
- cl_log(LOG_DEBUG, "Adding '%s'", entry);
-diff --git a/src/sbd-md.c b/src/sbd-md.c
-index 579d273..ba2c34d 100644
---- a/src/sbd-md.c
-+++ b/src/sbd-md.c
-@@ -1031,7 +1031,7 @@ static int servant_check_timeout_inconsistent(struct sector_header_s *hdr)
- return 0;
- }
-
--int servant(const char *diskname, int mode, const void* argp)
-+int servant_md(const char *diskname, int mode, const void* argp)
- {
- struct sector_mbox_s *s_mbox = NULL;
- struct sector_node_s *s_node = NULL;
-@@ -1046,11 +1046,6 @@ int servant(const char *diskname, int mode, const void* argp)
- char uuid[37];
- const struct servants_list_item *s = argp;
-
-- if (!diskname) {
-- cl_log(LOG_ERR, "Empty disk name %s.", diskname);
-- return -1;
-- }
--
- cl_log(LOG_INFO, "Servant starting for device %s", diskname);
-
- /* Block most of the signals */
-diff --git a/src/sbd.h b/src/sbd.h
-index 386c85c..6fe07f9 100644
---- a/src/sbd.h
-+++ b/src/sbd.h
-@@ -175,7 +175,7 @@ int ping_via_slots(const char *name, struct servants_list_item *servants);
- int dump_headers(struct servants_list_item *servants);
- unsigned long get_first_msgwait(struct servants_list_item *servants);
- int messenger(const char *name, const char *msg, struct servants_list_item *servants);
--int servant(const char *diskname, int mode, const void* argp);
-+int servant_md(const char *diskname, int mode, const void* argp);
- #endif
-
- int servant_pcmk(const char *diskname, int mode, const void* argp);
---
-1.8.3.1
-
diff --git a/0002-Doc-add-environment-section-to-man-page.patch b/0002-Doc-add-environment-section-to-man-page.patch
new file mode 100644
index 0000000..2ad9556
--- /dev/null
+++ b/0002-Doc-add-environment-section-to-man-page.patch
@@ -0,0 +1,1459 @@
+From 9dd82a8b4daa5a7bd8ab3afa43b081f212efb1ac Mon Sep 17 00:00:00 2001
+From: Klaus Wenninger <klaus.wenninger(a)aon.at>
+Date: Wed, 29 Jan 2020 20:34:18 +0100
+Subject: [PATCH] Doc: add environment section to man-page
+
+Environment section is auto-generated from sbd.sysconfig.
+---
+ .gitignore | 1 +
+ Makefile.am | 6 +-
+ README.md | 3 +-
+ man/Makefile.am | 8 +-
+ man/sbd.8.pod | 668 -----------------------------------------------------
+ man/sbd.8.pod.in | 675 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ src/sbd.sysconfig | 3 +-
+ 7 files changed, 690 insertions(+), 674 deletions(-)
+ delete mode 100644 man/sbd.8.pod
+ create mode 100644 man/sbd.8.pod.in
+
+diff --git a/Makefile.am b/Makefile.am
+index 1c29f75..bd4346d 100644
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -9,8 +9,8 @@ TARFILE = $(distdir).tar.gz
+ DIST_ARCHIVES = $(TARFILE)
+ KEEP_EXISTING_TAR = no
+ INJECT_GIT_COMMIT = yes
+-DISTCLEANFILES = sbd-* sbd-*/
+ CLEANFILES = *.rpm *.tar.* sbd-*
++DISTCLEANFILES = sbd-* sbd-*/
+
+ RPM_ROOT = $(shell pwd)
+ RPM_OPTS = --define "_sourcedir $(RPM_ROOT)" \
+@@ -31,7 +31,7 @@ export SBD_BINARY := src/sbd
+ export SBD_PRELOAD := tests/.libs/libsbdtestbed.so
+ export SBD_USE_DM := no
+
+-EXTRA_DIST = sbd.spec tests/regressions.sh
++EXTRA_DIST = sbd.spec tests/regressions.sh man/sbd.8.pod.in
+
+ export:
+ rm -f $(PACKAGE)-HEAD.tar.*
+@@ -43,7 +43,7 @@ export:
+ echo `date`: Using existing tarball: $(TARFILE); \
+ else \
+ rm -f $(PACKAGE).tar.*; \
+- (git archive --prefix=$(distdir)/ $(shell echo $(TAG)|cut -f1 -d-) || tar -c --transform="s,^,$(distdir)/," --exclude="*.tar.*" --exclude="$(distdir)" --exclude="*.o" --exclude="*.8" --exclude="config.*" --exclude="libtool" --exclusive="ltmain.sh*" --exclude="Makefile" --exclude="Makefile.in" --exclude="stamp-*" --exclude="*.service" --exclude="sbd" --exclude="*.m4" --exclude="*.cache" --exclude="configure" --exclude="*.list" --exclude="depcomp" --exclude="install-sh" --exclude="missing" --exclude="compile" --exclude="sbd.sh" --exclude="~" --exclude="*.swp" --exclude="*.patch" --exclude="*.diff" --exclude="*.orig" --exclude="*.rej" --exclude="*.rpm" --exclude=".deps" --exclude="test-driver" *) | gzip > $(TARFILE); \
++ (git archive --prefix=$(distdir)/ $(shell echo $(TAG)|cut -f1 -d-) || tar -c --transform="s,^,$(distdir)/," --exclude="*.tar.*" --exclude="$(distdir)" --exclude="*.o" --exclude="*.8" --exclude="config.*" --exclude="libtool" --exclude="ltmain.sh*" --exclude="Makefile" --exclude="Makefile.in" --exclude="stamp-*" --exclude="*.service" --exclude="sbd" --exclude="*.m4" --exclude="*.cache" --exclude="configure" --exclude="*.list" --exclude="depcomp" --exclude="install-sh" --exclude="missing" --exclude="compile" --exclude="sbd.sh" --exclude="~" --exclude="*.swp" --exclude="*.patch" --exclude="*.diff" --exclude="*.orig" --exclude="*.rej" --exclude="*.rpm" --exclude="*.pod" --exclude=".deps" --exclude="test-driver" *) | gzip > $(TARFILE); \
+ if test -n "$$(git status -s)" || test "$(INJECT_GIT_COMMIT)" = "yes"; then \
+ if test -n "$$(git status -s)"; then git diff HEAD --name-only|grep -v "^\."|xargs -n1 git diff HEAD > uncommitted.diff; fi; \
+ rm -rf $(distdir); tar -xzf $(TARFILE); rm $(TARFILE); \
+diff --git a/README.md b/README.md
+index d02a8bd..42a3fde 100644
+--- a/README.md
++++ b/README.md
+@@ -5,5 +5,6 @@ A highly reliable fencing or Shoot-the-other-node-in-the-head (STONITH) mechanis
+ The component works with Pacemaker clusters, and is currently known to
+ compile and function on Pacemaker 1.1.7+ and corosync 1.4.x or 2.3.x.
+
+-Please see https://github.com/l-mb/sbd/blob/master/man/sbd.8.pod for the full documentation.
++Please see https://github.com/clusterlabs/sbd/blob/master/man/sbd.8.pod.in &
++https://github.com/clusterlabs/sbd/blob/master/src/sbd.sysconfig for the full documentation.
+
+diff --git a/man/Makefile.am b/man/Makefile.am
+index 3f89085..995712d 100644
+--- a/man/Makefile.am
++++ b/man/Makefile.am
+@@ -1,6 +1,12 @@
+ dist_man_MANS = sbd.8
+
+-EXTRA_DIST = sbd.8.pod
++DISTCLEANFILES = sbd.8.pod sbd.8 sbd.sysconfig.pod
++
++sbd.sysconfig.pod: ../src/sbd.sysconfig
++ sed -r -n -e "s/^## Type: (.*)/Allows C<\1>/;t type;s/^## Default: (.*)/ defaulting to C<\1>/;t default;s/^#*(.*)=.*/=item B<\1>\n/;t variable;s/^#*//;s/^ *//;H;d;:type;h;d;:default;H;x;s/\n//;x;d;:variable;G;p" $< > $@
++
++sbd.8.pod: sbd.8.pod.in sbd.sysconfig.pod
++ sed -e "s/@environment_section@//;t insert;p;d;:insert;rsbd.sysconfig.pod" $< > $@
+
+ sbd.8: sbd.8.pod
+ @POD2MAN@ -s 8 -c "STONITH Block Device" -r "SBD" -n "SBD" $< $@
+diff --git a/man/sbd.8.pod b/man/sbd.8.pod
+deleted file mode 100644
+index 377c579..0000000
+--- a/man/sbd.8.pod
++++ /dev/null
+@@ -1,668 +0,0 @@
+-=head1 NAME
+-
+-sbd - STONITH Block Device daemon
+-
+-=head1 SYNOPSIS
+-
+-sbd <-d F</dev/...>> [options] C<command>
+-
+-=head1 SUMMARY
+-
+-SBD provides a node fencing mechanism (Shoot the other node in the head,
+-STONITH) for Pacemaker-based clusters through the exchange of messages
+-via shared block storage such as for example a SAN, iSCSI, FCoE. This
+-isolates the fencing mechanism from changes in firmware version or
+-dependencies on specific firmware controllers, and it can be used as a
+-STONITH mechanism in all configurations that have reliable shared
+-storage.
+-
+-SBD can also be used without any shared storage. In this mode, the
+-watchdog device will be used to reset the node if it loses quorum, if
+-any monitored daemon is lost and not recovered or if Pacemaker decides
+-that the node requires fencing.
+-
+-The F<sbd> binary implements both the daemon that watches the message
+-slots as well as the management tool for interacting with the block
+-storage device(s). This mode of operation is specified via the
+-C<command> parameter; some of these modes take additional parameters.
+-
+-To use SBD with shared storage, you must first C<create> the messaging
+-layout on one to three block devices. Second, configure
+-F</etc/sysconfig/sbd> to list those devices (and possibly adjust other
+-options), and restart the cluster stack on each node to ensure that
+-C<sbd> is started. Third, configure the C<external/sbd> fencing
+-resource in the Pacemaker CIB.
+-
+-Each of these steps is documented in more detail below the description
+-of the command options.
+-
+-C<sbd> can only be used as root.
+-
+-=head2 GENERAL OPTIONS
+-
+-=over
+-
+-=item B<-d> F</dev/...>
+-
+-Specify the block device(s) to be used. If you have more than one,
+-specify this option up to three times. This parameter is mandatory for
+-all modes, since SBD always needs a block device to interact with.
+-
+-This man page uses F</dev/sda1>, F</dev/sdb1>, and F</dev/sdc1> as
+-example device names for brevity. However, in your production
+-environment, you should instead always refer to them by using the long,
+-stable device name (e.g.,
+-F</dev/disk/by-id/dm-uuid-part1-mpath-3600508b400105b5a0001500000250000>).
+-
+-=item B<-v|-vv|-vvv>
+-
+-Enable verbose|debug|debug-library logging (optional)
+-
+-=item B<-h>
+-
+-Display a concise summary of C<sbd> options.
+-
+-=item B<-n> I<node>
+-
+-Set local node name; defaults to C<uname -n>. This should not need to be
+-set.
+-
+-=item B<-R>
+-
+-Do B<not> enable realtime priority. By default, C<sbd> runs at realtime
+-priority, locks itself into memory, and also acquires highest IO
+-priority to protect itself against interference from other processes on
+-the system. This is a debugging-only option.
+-
+-=item B<-I> I<N>
+-
+-Async IO timeout (defaults to 3 seconds, optional). You should not need
+-to adjust this unless your IO setup is really very slow.
+-
+-(In daemon mode, the watchdog is refreshed when the majority of devices
+-could be read within this time.)
+-
+-=back
+-
+-=head2 create
+-
+-Example usage:
+-
+- sbd -d /dev/sdc2 -d /dev/sdd3 create
+-
+-If you specify the I<create> command, sbd will write a metadata header
+-to the device(s) specified and also initialize the messaging slots for
+-up to 255 nodes.
+-
+-B<Warning>: This command will not prompt for confirmation. Roughly the
+-first megabyte of the specified block device(s) will be overwritten
+-immediately and without backup.
+-
+-This command accepts a few options to adjust the default timings that
+-are written to the metadata (to ensure they are identical across all
+-nodes accessing the device).
+-
+-=over
+-
+-=item B<-1> I<N>
+-
+-Set watchdog timeout to N seconds. This depends mostly on your storage
+-latency; the majority of devices must be successfully read within this
+-time, or else the node will self-fence.
+-
+-If your sbd device(s) reside on a multipath setup or iSCSI, this should
+-be the time required to detect a path failure. You may be able to reduce
+-this if your device outages are independent, or if you are using the
+-Pacemaker integration.
+-
+-=item B<-2> I<N>
+-
+-Set slot allocation timeout to N seconds. You should not need to tune
+-this.
+-
+-=item B<-3> I<N>
+-
+-Set daemon loop timeout to N seconds. You should not need to tune this.
+-
+-=item B<-4> I<N>
+-
+-Set I<msgwait> timeout to N seconds. This should be twice the I<watchdog>
+-timeout. This is the time after which a message written to a node's slot
+-will be considered delivered. (Or long enough for the node to detect
+-that it needed to self-fence.)
+-
+-This also affects the I<stonith-timeout> in Pacemaker's CIB; see below.
+-
+-=back
+-
+-=head2 list
+-
+-Example usage:
+-
+- # sbd -d /dev/sda1 list
+- 0 hex-0 clear
+- 1 hex-7 clear
+- 2 hex-9 clear
+-
+-List all allocated slots on device, and messages. You should see all
+-cluster nodes that have ever been started against this device. Nodes
+-that are currently running should have a I<clear> state; nodes that have
+-been fenced, but not yet restarted, will show the appropriate fencing
+-message.
+-
+-=head2 dump
+-
+-Example usage:
+-
+- # sbd -d /dev/sda1 dump
+- ==Dumping header on disk /dev/sda1
+- Header version : 2
+- Number of slots : 255
+- Sector size : 512
+- Timeout (watchdog) : 15
+- Timeout (allocate) : 2
+- Timeout (loop) : 1
+- Timeout (msgwait) : 30
+- ==Header on disk /dev/sda1 is dumped
+-
+-Dump meta-data header from device.
+-
+-=head2 watch
+-
+-Example usage:
+-
+- sbd -d /dev/sdc2 -d /dev/sdd3 -P watch
+-
+-This command will make C<sbd> start in daemon mode. It will constantly monitor
+-the message slot of the local node for incoming messages, reachability, and
+-optionally take Pacemaker's state into account.
+-
+-C<sbd> B<must> be started on boot before the cluster stack! See below
+-for enabling this according to your boot environment.
+-
+-The options for this mode are rarely specified directly on the
+-commandline directly, but most frequently set via F</etc/sysconfig/sbd>.
+-
+-It also constantly monitors connectivity to the storage device, and
+-self-fences in case the partition becomes unreachable, guaranteeing that it
+-does not disconnect from fencing messages.
+-
+-A node slot is automatically allocated on the device(s) the first time
+-the daemon starts watching the device; hence, manual allocation is not
+-usually required.
+-
+-If a watchdog is used together with the C<sbd> as is strongly
+-recommended, the watchdog is activated at initial start of the sbd
+-daemon. The watchdog is refreshed every time the majority of SBD devices
+-has been successfully read. Using a watchdog provides additional
+-protection against C<sbd> crashing.
+-
+-If the Pacemaker integration is activated, C<sbd> will B<not> self-fence
+-if device majority is lost, if:
+-
+-=over
+-
+-=item 1.
+-
+-The partition the node is in is still quorate according to the CIB;
+-
+-=item 2.
+-
+-it is still quorate according to Corosync's node count;
+-
+-=item 3.
+-
+-the node itself is considered online and healthy by Pacemaker.
+-
+-=back
+-
+-This allows C<sbd> to survive temporary outages of the majority of
+-devices. However, while the cluster is in such a degraded state, it can
+-neither successfully fence nor be shutdown cleanly (as taking the
+-cluster below the quorum threshold will immediately cause all remaining
+-nodes to self-fence). In short, it will not tolerate any further faults.
+-Please repair the system before continuing.
+-
+-There is one C<sbd> process that acts as a master to which all watchers
+-report; one per device to monitor the node's slot; and, optionally, one
+-that handles the Pacemaker integration.
+-
+-=over
+-
+-=item B<-W>
+-
+-Enable or disable use of the system watchdog to protect against the sbd
+-processes failing and the node being left in an undefined state. Specify
+-this once to enable, twice to disable.
+-
+-Defaults to I<enabled>.
+-
+-=item B<-w> F</dev/watchdog>
+-
+-This can be used to override the default watchdog device used and should not
+-usually be necessary.
+-
+-=item B<-p> F</var/run/sbd.pid>
+-
+-This option can be used to specify a pidfile for the main sbd process.
+-
+-=item B<-F> I<N>
+-
+-Number of failures before a failing servant process will not be restarted
+-immediately until the dampening delay has expired. If set to zero, servants
+-will be restarted immediately and indefinitely. If set to one, a failed
+-servant will be restarted once every B<-t> seconds. If set to a different
+-value, the servant will be restarted that many times within the dampening
+-period and then delay.
+-
+-Defaults to I<1>.
+-
+-=item B<-t> I<N>
+-
+-Dampening delay before faulty servants are restarted. Combined with C<-F 1>,
+-the most logical way to tune the restart frequency of servant processes.
+-Default is 5 seconds.
+-
+-If set to zero, processes will be restarted indefinitely and immediately.
+-
+-=item B<-P>
+-
+-Enable Pacemaker integration which checks Pacemaker quorum and node health.
+-Specify this once to enable, twice to disable.
+-
+-Defaults to I<enabled>.
+-
+-=item B<-S> I<N>
+-
+-Set the start mode. (Defaults to I<0>.)
+-
+-If this is set to zero, sbd will always start up unconditionally,
+-regardless of whether the node was previously fenced or not.
+-
+-If set to one, sbd will only start if the node was previously shutdown
+-cleanly (as indicated by an exit request message in the slot), or if the
+-slot is empty. A reset, crashdump, or power-off request in any slot will
+-halt the start up.
+-
+-This is useful to prevent nodes from rejoining if they were faulty. The
+-node must be manually "unfenced" by sending an empty message to it:
+-
+- sbd -d /dev/sda1 message node1 clear
+-
+-=item B<-s> I<N>
+-
+-Set the start-up wait time for devices. (Defaults to I<120>.)
+-
+-Dynamic block devices such as iSCSI might not be fully initialized and
+-present yet. This allows one to set a timeout for waiting for devices to
+-appear on start-up. If set to 0, start-up will be aborted immediately if
+-no devices are available.
+-
+-=item B<-Z>
+-
+-Enable trace mode. B<Warning: this is unsafe for production, use at your
+-own risk!> Specifying this once will turn all reboots or power-offs, be
+-they caused by self-fence decisions or messages, into a crashdump.
+-Specifying this twice will just log them but not continue running.
+-
+-=item B<-T>
+-
+-By default, the daemon will set the watchdog timeout as specified in the
+-device metadata. However, this does not work for every watchdog device.
+-In this case, you must manually ensure that the watchdog timeout used by
+-the system correctly matches the SBD settings, and then specify this
+-option to allow C<sbd> to continue with start-up.
+-
+-=item B<-5> I<N>
+-
+-Warn if the time interval for tickling the watchdog exceeds this many seconds.
+-Since the node is unable to log the watchdog expiry (it reboots immediately
+-without a chance to write its logs to disk), this is very useful for getting
+-an indication that the watchdog timeout is too short for the IO load of the
+-system.
+-
+-Default is 3 seconds, set to zero to disable.
+-
+-=item B<-C> I<N>
+-
+-Watchdog timeout to set before crashdumping. If SBD is set to crashdump
+-instead of reboot - either via the trace mode settings or the I<external/sbd>
+-fencing agent's parameter -, SBD will adjust the watchdog timeout to this
+-setting before triggering the dump. Otherwise, the watchdog might trigger and
+-prevent a successful crashdump from ever being written.
+-
+-Set to zero (= default) to disable.
+-
+-=item B<-r> I<N>
+-
+-Actions to be executed when the watchers don't timely report to the sbd
+-master process or one of the watchers detects that the master process
+-has died.
+-
+-Set timeout-action to comma-separated combination of
+-noflush|flush plus reboot|crashdump|off.
+-If just one of both is given the other stays at the default.
+-
+-This doesn't affect actions like off, crashdump, reboot explicitly
+-triggered via message slots.
+-And it does as well not configure the action a watchdog would
+-trigger should it run off (there is no generic interface).
+-
+-Defaults to flush,reboot.
+-
+-=back
+-
+-=head2 allocate
+-
+-Example usage:
+-
+- sbd -d /dev/sda1 allocate node1
+-
+-Explicitly allocates a slot for the specified node name. This should
+-rarely be necessary, as every node will automatically allocate itself a
+-slot the first time it starts up on watch mode.
+-
+-=head2 message
+-
+-Example usage:
+-
+- sbd -d /dev/sda1 message node1 test
+-
+-Writes the specified message to node's slot. This is rarely done
+-directly, but rather abstracted via the C<external/sbd> fencing agent
+-configured as a cluster resource.
+-
+-Supported message types are:
+-
+-=over
+-
+-=item test
+-
+-This only generates a log message on the receiving node and can be used
+-to check if SBD is seeing the device. Note that this could overwrite a
+-fencing request send by the cluster, so should not be used during
+-production.
+-
+-=item reset
+-
+-Reset the target upon receipt of this message.
+-
+-=item off
+-
+-Power-off the target.
+-
+-=item crashdump
+-
+-Cause the target node to crashdump.
+-
+-=item exit
+-
+-This will make the C<sbd> daemon exit cleanly on the target. You should
+-B<not> send this message manually; this is handled properly during
+-shutdown of the cluster stack. Manually stopping the daemon means the
+-node is unprotected!
+-
+-=item clear
+-
+-This message indicates that no real message has been sent to the node.
+-You should not set this manually; C<sbd> will clear the message slot
+-automatically during start-up, and setting this manually could overwrite
+-a fencing message by the cluster.
+-
+-=back
+-
+-=head2 query-watchdog
+-
+-Example usage:
+-
+- sbd query-watchdog
+-
+-Check for available watchdog devices and print some info.
+-
+-B<Warning>: This command will arm the watchdog during query, and if your
+-watchdog refuses disarming (for example, if its kernel module has the
+-'nowayout' parameter set) this will reset your system.
+-
+-=head2 test-watchdog
+-
+-Example usage:
+-
+- sbd test-watchdog [-w /dev/watchdog3]
+-
+-Test specified watchdog device (/dev/watchdog by default).
+-
+-B<Warning>: This command will arm the watchdog and have your system reset
+-in case your watchdog is working properly! If issued from an interactive
+-session, it will prompt for confirmation.
+-
+-=head1 Base system configuration
+-
+-=head2 Configure a watchdog
+-
+-It is highly recommended that you configure your Linux system to load a
+-watchdog driver with hardware assistance (as is available on most modern
+-systems), such as I<hpwdt>, I<iTCO_wdt>, or others. As a fall-back, you
+-can use the I<softdog> module.
+-
+-No other software must access the watchdog timer; it can only be
+-accessed by one process at any given time. Some hardware vendors ship
+-systems management software that use the watchdog for system resets
+-(f.e. HP ASR daemon). Such software has to be disabled if the watchdog
+-is to be used by SBD.
+-
+-=head2 Choosing and initializing the block device(s)
+-
+-First, you have to decide if you want to use one, two, or three devices.
+-
+-If you are using multiple ones, they should reside on independent
+-storage setups. Putting all three of them on the same logical unit for
+-example would not provide any additional redundancy.
+-
+-The SBD device can be connected via Fibre Channel, Fibre Channel over
+-Ethernet, or even iSCSI. Thus, an iSCSI target can become a sort-of
+-network-based quorum server; the advantage is that it does not require
+-a smart host at your third location, just block storage.
+-
+-The SBD partitions themselves B<must not> be mirrored (via MD,
+-DRBD, or the storage layer itself), since this could result in a
+-split-mirror scenario. Nor can they reside on cLVM2 volume groups, since
+-they must be accessed by the cluster stack before it has started the
+-cLVM2 daemons; hence, these should be either raw partitions or logical
+-units on (multipath) storage.
+-
+-The block device(s) must be accessible from all nodes. (While it is not
+-necessary that they share the same path name on all nodes, this is
+-considered a very good idea.)
+-
+-SBD will only use about one megabyte per device, so you can easily
+-create a small partition, or very small logical units. (The size of the
+-SBD device depends on the block size of the underlying device. Thus, 1MB
+-is fine on plain SCSI devices and SAN storage with 512 byte blocks. On
+-the IBM s390x architecture in particular, disks default to 4k blocks,
+-and thus require roughly 4MB.)
+-
+-The number of devices will affect the operation of SBD as follows:
+-
+-=over
+-
+-=item One device
+-
+-In its most simple implementation, you use one device only. This is
+-appropriate for clusters where all your data is on the same shared
+-storage (with internal redundancy) anyway; the SBD device does not
+-introduce an additional single point of failure then.
+-
+-If the SBD device is not accessible, the daemon will fail to start and
+-inhibit startup of cluster services.
+-
+-=item Two devices
+-
+-This configuration is a trade-off, primarily aimed at environments where
+-host-based mirroring is used, but no third storage device is available.
+-
+-SBD will not commit suicide if it loses access to one mirror leg; this
+-allows the cluster to continue to function even in the face of one outage.
+-
+-However, SBD will not fence the other side while only one mirror leg is
+-available, since it does not have enough knowledge to detect an asymmetric
+-split of the storage. So it will not be able to automatically tolerate a
+-second failure while one of the storage arrays is down. (Though you
+-can use the appropriate crm command to acknowledge the fence manually.)
+-
+-It will not start unless both devices are accessible on boot.
+-
+-=item Three devices
+-
+-In this most reliable and recommended configuration, SBD will only
+-self-fence if more than one device is lost; hence, this configuration is
+-resilient against temporary single device outages (be it due to failures
+-or maintenance). Fencing messages can still be successfully relayed if
+-at least two devices remain accessible.
+-
+-This configuration is appropriate for more complex scenarios where
+-storage is not confined to a single array. For example, host-based
+-mirroring solutions could have one SBD per mirror leg (not mirrored
+-itself), and an additional tie-breaker on iSCSI.
+-
+-It will only start if at least two devices are accessible on boot.
+-
+-=back
+-
+-After you have chosen the devices and created the appropriate partitions
+-and perhaps multipath alias names to ease management, use the C<sbd create>
+-command described above to initialize the SBD metadata on them.
+-
+-=head3 Sharing the block device(s) between multiple clusters
+-
+-It is possible to share the block devices between multiple clusters,
+-provided the total number of nodes accessing them does not exceed I<255>
+-nodes, and they all must share the same SBD timeouts (since these are
+-part of the metadata).
+-
+-If you are using multiple devices this can reduce the setup overhead
+-required. However, you should B<not> share devices between clusters in
+-different security domains.
+-
+-=head2 Configure SBD to start on boot
+-
+-On systems using C<sysvinit>, the C<openais> or C<corosync> system
+-start-up scripts must handle starting or stopping C<sbd> as required
+-before starting the rest of the cluster stack.
+-
+-For C<systemd>, sbd simply has to be enabled using
+-
+- systemctl enable sbd.service
+-
+-The daemon is brought online on each node before corosync and Pacemaker
+-are started, and terminated only after all other cluster components have
+-been shut down - ensuring that cluster resources are never activated
+-without SBD supervision.
+-
+-=head2 Configuration via sysconfig
+-
+-The system instance of C<sbd> is configured via F</etc/sysconfig/sbd>.
+-In this file, you must specify the device(s) used, as well as any
+-options to pass to the daemon:
+-
+- SBD_DEVICE="/dev/sda1;/dev/sdb1;/dev/sdc1"
+- SBD_PACEMAKER="true"
+-
+-C<sbd> will fail to start if no C<SBD_DEVICE> is specified. See the
+-installed template for more options that can be configured here.
+-In general configuration done via parameters takes precedence over
+-the configuration from the configuration file.
+-
+-=head2 Testing the sbd installation
+-
+-After a restart of the cluster stack on this node, you can now try
+-sending a test message to it as root, from this or any other node:
+-
+- sbd -d /dev/sda1 message node1 test
+-
+-The node will acknowledge the receipt of the message in the system logs:
+-
+- Aug 29 14:10:00 node1 sbd: [13412]: info: Received command test from node2
+-
+-This confirms that SBD is indeed up and running on the node, and that it
+-is ready to receive messages.
+-
+-Make B<sure> that F</etc/sysconfig/sbd> is identical on all cluster
+-nodes, and that all cluster nodes are running the daemon.
+-
+-=head1 Pacemaker CIB integration
+-
+-=head2 Fencing resource
+-
+-Pacemaker can only interact with SBD to issue a node fence if there is a
+-configure fencing resource. This should be a primitive, not a clone, as
+-follows:
+-
+- primitive fencing-sbd stonith:external/sbd \
+- params pcmk_delay_max=30
+-
+-This will automatically use the same devices as configured in
+-F</etc/sysconfig/sbd>.
+-
+-While you should not configure this as a clone (as Pacemaker will register
+-the fencing device on each node automatically), the I<pcmk_delay_max>
+-setting enables random fencing delay which ensures, in a scenario where a
+-split-brain scenario did occur in a two node cluster, that one of the nodes
+-has a better chance to survive to avoid double fencing.
+-
+-SBD also supports turning the reset request into a crash request, which
+-may be helpful for debugging if you have kernel crashdumping configured;
+-then, every fence request will cause the node to dump core. You can
+-enable this via the C<crashdump="true"> parameter on the fencing
+-resource. This is B<not> recommended for production use, but only for
+-debugging phases.
+-
+-=head2 General cluster properties
+-
+-You must also enable STONITH in general, and set the STONITH timeout to
+-be at least twice the I<msgwait> timeout you have configured, to allow
+-enough time for the fencing message to be delivered. If your I<msgwait>
+-timeout is 60 seconds, this is a possible configuration:
+-
+- property stonith-enabled="true"
+- property stonith-timeout="120s"
+-
+-B<Caution>: if I<stonith-timeout> is too low for I<msgwait> and the
+-system overhead, sbd will never be able to successfully complete a fence
+-request. This will create a fencing loop.
+-
+-Note that the sbd fencing agent will try to detect this and
+-automatically extend the I<stonith-timeout> setting to a reasonable
+-value, on the assumption that sbd modifying your configuration is
+-preferable to not fencing.
+-
+-=head1 Management tasks
+-
+-=head2 Recovering from temporary SBD device outage
+-
+-If you have multiple devices, failure of a single device is not immediately
+-fatal. C<sbd> will retry to restart the monitor for the device every 5
+-seconds by default. However, you can tune this via the options to the
+-I<watch> command.
+-
+-In case you wish the immediately force a restart of all currently
+-disabled monitor processes, you can send a I<SIGUSR1> to the SBD
+-I<inquisitor> process.
+-
+-
+-=head1 LICENSE
+-
+-Copyright (C) 2008-2013 Lars Marowsky-Bree
+-
+-This program is free software; you can redistribute it and/or
+-modify it under the terms of the GNU General Public
+-License as published by the Free Software Foundation; either
+-version 2 of the License, or (at your option) any later version.
+-
+-This software is distributed in the hope that it will be useful,
+-but WITHOUT ANY WARRANTY; without even the implied warranty of
+-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+-General Public License for more details.
+-
+-For details see the GNU General Public License at
+-http://www.gnu.org/licenses/gpl-2.0.html (version 2) and/or
+-http://www.gnu.org/licenses/gpl.html (the newest as per "any later").
+diff --git a/man/sbd.8.pod.in b/man/sbd.8.pod.in
+new file mode 100644
+index 0000000..ff89c82
+--- /dev/null
++++ b/man/sbd.8.pod.in
+@@ -0,0 +1,675 @@
++=head1 NAME
++
++sbd - STONITH Block Device daemon
++
++=head1 SYNOPSIS
++
++sbd <-d F</dev/...>> [options] C<command>
++
++=head1 SUMMARY
++
++SBD provides a node fencing mechanism (Shoot the other node in the head,
++STONITH) for Pacemaker-based clusters through the exchange of messages
++via shared block storage such as for example a SAN, iSCSI, FCoE. This
++isolates the fencing mechanism from changes in firmware version or
++dependencies on specific firmware controllers, and it can be used as a
++STONITH mechanism in all configurations that have reliable shared
++storage.
++
++SBD can also be used without any shared storage. In this mode, the
++watchdog device will be used to reset the node if it loses quorum, if
++any monitored daemon is lost and not recovered or if Pacemaker decides
++that the node requires fencing.
++
++The F<sbd> binary implements both the daemon that watches the message
++slots as well as the management tool for interacting with the block
++storage device(s). This mode of operation is specified via the
++C<command> parameter; some of these modes take additional parameters.
++
++To use SBD with shared storage, you must first C<create> the messaging
++layout on one to three block devices. Second, configure
++F</etc/sysconfig/sbd> to list those devices (and possibly adjust other
++options), and restart the cluster stack on each node to ensure that
++C<sbd> is started. Third, configure the C<external/sbd> fencing
++resource in the Pacemaker CIB.
++
++Each of these steps is documented in more detail below the description
++of the command options.
++
++C<sbd> can only be used as root.
++
++=head2 GENERAL OPTIONS
++
++=over
++
++=item B<-d> F</dev/...>
++
++Specify the block device(s) to be used. If you have more than one,
++specify this option up to three times. This parameter is mandatory for
++all modes, since SBD always needs a block device to interact with.
++
++This man page uses F</dev/sda1>, F</dev/sdb1>, and F</dev/sdc1> as
++example device names for brevity. However, in your production
++environment, you should instead always refer to them by using the long,
++stable device name (e.g.,
++F</dev/disk/by-id/dm-uuid-part1-mpath-3600508b400105b5a0001500000250000>).
++
++=item B<-v|-vv|-vvv>
++
++Enable verbose|debug|debug-library logging (optional)
++
++=item B<-h>
++
++Display a concise summary of C<sbd> options.
++
++=item B<-n> I<node>
++
++Set local node name; defaults to C<uname -n>. This should not need to be
++set.
++
++=item B<-R>
++
++Do B<not> enable realtime priority. By default, C<sbd> runs at realtime
++priority, locks itself into memory, and also acquires highest IO
++priority to protect itself against interference from other processes on
++the system. This is a debugging-only option.
++
++=item B<-I> I<N>
++
++Async IO timeout (defaults to 3 seconds, optional). You should not need
++to adjust this unless your IO setup is really very slow.
++
++(In daemon mode, the watchdog is refreshed when the majority of devices
++could be read within this time.)
++
++=back
++
++=head2 create
++
++Example usage:
++
++ sbd -d /dev/sdc2 -d /dev/sdd3 create
++
++If you specify the I<create> command, sbd will write a metadata header
++to the device(s) specified and also initialize the messaging slots for
++up to 255 nodes.
++
++B<Warning>: This command will not prompt for confirmation. Roughly the
++first megabyte of the specified block device(s) will be overwritten
++immediately and without backup.
++
++This command accepts a few options to adjust the default timings that
++are written to the metadata (to ensure they are identical across all
++nodes accessing the device).
++
++=over
++
++=item B<-1> I<N>
++
++Set watchdog timeout to N seconds. This depends mostly on your storage
++latency; the majority of devices must be successfully read within this
++time, or else the node will self-fence.
++
++If your sbd device(s) reside on a multipath setup or iSCSI, this should
++be the time required to detect a path failure. You may be able to reduce
++this if your device outages are independent, or if you are using the
++Pacemaker integration.
++
++=item B<-2> I<N>
++
++Set slot allocation timeout to N seconds. You should not need to tune
++this.
++
++=item B<-3> I<N>
++
++Set daemon loop timeout to N seconds. You should not need to tune this.
++
++=item B<-4> I<N>
++
++Set I<msgwait> timeout to N seconds. This should be twice the I<watchdog>
++timeout. This is the time after which a message written to a node's slot
++will be considered delivered. (Or long enough for the node to detect
++that it needed to self-fence.)
++
++This also affects the I<stonith-timeout> in Pacemaker's CIB; see below.
++
++=back
++
++=head2 list
++
++Example usage:
++
++ # sbd -d /dev/sda1 list
++ 0 hex-0 clear
++ 1 hex-7 clear
++ 2 hex-9 clear
++
++List all allocated slots on device, and messages. You should see all
++cluster nodes that have ever been started against this device. Nodes
++that are currently running should have a I<clear> state; nodes that have
++been fenced, but not yet restarted, will show the appropriate fencing
++message.
++
++=head2 dump
++
++Example usage:
++
++ # sbd -d /dev/sda1 dump
++ ==Dumping header on disk /dev/sda1
++ Header version : 2
++ Number of slots : 255
++ Sector size : 512
++ Timeout (watchdog) : 15
++ Timeout (allocate) : 2
++ Timeout (loop) : 1
++ Timeout (msgwait) : 30
++ ==Header on disk /dev/sda1 is dumped
++
++Dump meta-data header from device.
++
++=head2 watch
++
++Example usage:
++
++ sbd -d /dev/sdc2 -d /dev/sdd3 -P watch
++
++This command will make C<sbd> start in daemon mode. It will constantly monitor
++the message slot of the local node for incoming messages, reachability, and
++optionally take Pacemaker's state into account.
++
++C<sbd> B<must> be started on boot before the cluster stack! See below
++for enabling this according to your boot environment.
++
++The options for this mode are rarely specified directly on the
++commandline directly, but most frequently set via F</etc/sysconfig/sbd>.
++
++It also constantly monitors connectivity to the storage device, and
++self-fences in case the partition becomes unreachable, guaranteeing that it
++does not disconnect from fencing messages.
++
++A node slot is automatically allocated on the device(s) the first time
++the daemon starts watching the device; hence, manual allocation is not
++usually required.
++
++If a watchdog is used together with the C<sbd> as is strongly
++recommended, the watchdog is activated at initial start of the sbd
++daemon. The watchdog is refreshed every time the majority of SBD devices
++has been successfully read. Using a watchdog provides additional
++protection against C<sbd> crashing.
++
++If the Pacemaker integration is activated, C<sbd> will B<not> self-fence
++if device majority is lost, if:
++
++=over
++
++=item 1.
++
++The partition the node is in is still quorate according to the CIB;
++
++=item 2.
++
++it is still quorate according to Corosync's node count;
++
++=item 3.
++
++the node itself is considered online and healthy by Pacemaker.
++
++=back
++
++This allows C<sbd> to survive temporary outages of the majority of
++devices. However, while the cluster is in such a degraded state, it can
++neither successfully fence nor be shutdown cleanly (as taking the
++cluster below the quorum threshold will immediately cause all remaining
++nodes to self-fence). In short, it will not tolerate any further faults.
++Please repair the system before continuing.
++
++There is one C<sbd> process that acts as a master to which all watchers
++report; one per device to monitor the node's slot; and, optionally, one
++that handles the Pacemaker integration.
++
++=over
++
++=item B<-W>
++
++Enable or disable use of the system watchdog to protect against the sbd
++processes failing and the node being left in an undefined state. Specify
++this once to enable, twice to disable.
++
++Defaults to I<enabled>.
++
++=item B<-w> F</dev/watchdog>
++
++This can be used to override the default watchdog device used and should not
++usually be necessary.
++
++=item B<-p> F</var/run/sbd.pid>
++
++This option can be used to specify a pidfile for the main sbd process.
++
++=item B<-F> I<N>
++
++Number of failures before a failing servant process will not be restarted
++immediately until the dampening delay has expired. If set to zero, servants
++will be restarted immediately and indefinitely. If set to one, a failed
++servant will be restarted once every B<-t> seconds. If set to a different
++value, the servant will be restarted that many times within the dampening
++period and then delay.
++
++Defaults to I<1>.
++
++=item B<-t> I<N>
++
++Dampening delay before faulty servants are restarted. Combined with C<-F 1>,
++the most logical way to tune the restart frequency of servant processes.
++Default is 5 seconds.
++
++If set to zero, processes will be restarted indefinitely and immediately.
++
++=item B<-P>
++
++Enable Pacemaker integration which checks Pacemaker quorum and node health.
++Specify this once to enable, twice to disable.
++
++Defaults to I<enabled>.
++
++=item B<-S> I<N>
++
++Set the start mode. (Defaults to I<0>.)
++
++If this is set to zero, sbd will always start up unconditionally,
++regardless of whether the node was previously fenced or not.
++
++If set to one, sbd will only start if the node was previously shutdown
++cleanly (as indicated by an exit request message in the slot), or if the
++slot is empty. A reset, crashdump, or power-off request in any slot will
++halt the start up.
++
++This is useful to prevent nodes from rejoining if they were faulty. The
++node must be manually "unfenced" by sending an empty message to it:
++
++ sbd -d /dev/sda1 message node1 clear
++
++=item B<-s> I<N>
++
++Set the start-up wait time for devices. (Defaults to I<120>.)
++
++Dynamic block devices such as iSCSI might not be fully initialized and
++present yet. This allows one to set a timeout for waiting for devices to
++appear on start-up. If set to 0, start-up will be aborted immediately if
++no devices are available.
++
++=item B<-Z>
++
++Enable trace mode. B<Warning: this is unsafe for production, use at your
++own risk!> Specifying this once will turn all reboots or power-offs, be
++they caused by self-fence decisions or messages, into a crashdump.
++Specifying this twice will just log them but not continue running.
++
++=item B<-T>
++
++By default, the daemon will set the watchdog timeout as specified in the
++device metadata. However, this does not work for every watchdog device.
++In this case, you must manually ensure that the watchdog timeout used by
++the system correctly matches the SBD settings, and then specify this
++option to allow C<sbd> to continue with start-up.
++
++=item B<-5> I<N>
++
++Warn if the time interval for tickling the watchdog exceeds this many seconds.
++Since the node is unable to log the watchdog expiry (it reboots immediately
++without a chance to write its logs to disk), this is very useful for getting
++an indication that the watchdog timeout is too short for the IO load of the
++system.
++
++Default is 3 seconds, set to zero to disable.
++
++=item B<-C> I<N>
++
++Watchdog timeout to set before crashdumping. If SBD is set to crashdump
++instead of reboot - either via the trace mode settings or the I<external/sbd>
++fencing agent's parameter -, SBD will adjust the watchdog timeout to this
++setting before triggering the dump. Otherwise, the watchdog might trigger and
++prevent a successful crashdump from ever being written.
++
++Set to zero (= default) to disable.
++
++=item B<-r> I<N>
++
++Actions to be executed when the watchers don't timely report to the sbd
++master process or one of the watchers detects that the master process
++has died.
++
++Set timeout-action to comma-separated combination of
++noflush|flush plus reboot|crashdump|off.
++If just one of both is given the other stays at the default.
++
++This doesn't affect actions like off, crashdump, reboot explicitly
++triggered via message slots.
++And it does as well not configure the action a watchdog would
++trigger should it run off (there is no generic interface).
++
++Defaults to flush,reboot.
++
++=back
++
++=head2 allocate
++
++Example usage:
++
++ sbd -d /dev/sda1 allocate node1
++
++Explicitly allocates a slot for the specified node name. This should
++rarely be necessary, as every node will automatically allocate itself a
++slot the first time it starts up on watch mode.
++
++=head2 message
++
++Example usage:
++
++ sbd -d /dev/sda1 message node1 test
++
++Writes the specified message to node's slot. This is rarely done
++directly, but rather abstracted via the C<external/sbd> fencing agent
++configured as a cluster resource.
++
++Supported message types are:
++
++=over
++
++=item test
++
++This only generates a log message on the receiving node and can be used
++to check if SBD is seeing the device. Note that this could overwrite a
++fencing request send by the cluster, so should not be used during
++production.
++
++=item reset
++
++Reset the target upon receipt of this message.
++
++=item off
++
++Power-off the target.
++
++=item crashdump
++
++Cause the target node to crashdump.
++
++=item exit
++
++This will make the C<sbd> daemon exit cleanly on the target. You should
++B<not> send this message manually; this is handled properly during
++shutdown of the cluster stack. Manually stopping the daemon means the
++node is unprotected!
++
++=item clear
++
++This message indicates that no real message has been sent to the node.
++You should not set this manually; C<sbd> will clear the message slot
++automatically during start-up, and setting this manually could overwrite
++a fencing message by the cluster.
++
++=back
++
++=head2 query-watchdog
++
++Example usage:
++
++ sbd query-watchdog
++
++Check for available watchdog devices and print some info.
++
++B<Warning>: This command will arm the watchdog during query, and if your
++watchdog refuses disarming (for example, if its kernel module has the
++'nowayout' parameter set) this will reset your system.
++
++=head2 test-watchdog
++
++Example usage:
++
++ sbd test-watchdog [-w /dev/watchdog3]
++
++Test specified watchdog device (/dev/watchdog by default).
++
++B<Warning>: This command will arm the watchdog and have your system reset
++in case your watchdog is working properly! If issued from an interactive
++session, it will prompt for confirmation.
++
++=head1 Base system configuration
++
++=head2 Configure a watchdog
++
++It is highly recommended that you configure your Linux system to load a
++watchdog driver with hardware assistance (as is available on most modern
++systems), such as I<hpwdt>, I<iTCO_wdt>, or others. As a fall-back, you
++can use the I<softdog> module.
++
++No other software must access the watchdog timer; it can only be
++accessed by one process at any given time. Some hardware vendors ship
++systems management software that use the watchdog for system resets
++(f.e. HP ASR daemon). Such software has to be disabled if the watchdog
++is to be used by SBD.
++
++=head2 Choosing and initializing the block device(s)
++
++First, you have to decide if you want to use one, two, or three devices.
++
++If you are using multiple ones, they should reside on independent
++storage setups. Putting all three of them on the same logical unit for
++example would not provide any additional redundancy.
++
++The SBD device can be connected via Fibre Channel, Fibre Channel over
++Ethernet, or even iSCSI. Thus, an iSCSI target can become a sort-of
++network-based quorum server; the advantage is that it does not require
++a smart host at your third location, just block storage.
++
++The SBD partitions themselves B<must not> be mirrored (via MD,
++DRBD, or the storage layer itself), since this could result in a
++split-mirror scenario. Nor can they reside on cLVM2 volume groups, since
++they must be accessed by the cluster stack before it has started the
++cLVM2 daemons; hence, these should be either raw partitions or logical
++units on (multipath) storage.
++
++The block device(s) must be accessible from all nodes. (While it is not
++necessary that they share the same path name on all nodes, this is
++considered a very good idea.)
++
++SBD will only use about one megabyte per device, so you can easily
++create a small partition, or very small logical units. (The size of the
++SBD device depends on the block size of the underlying device. Thus, 1MB
++is fine on plain SCSI devices and SAN storage with 512 byte blocks. On
++the IBM s390x architecture in particular, disks default to 4k blocks,
++and thus require roughly 4MB.)
++
++The number of devices will affect the operation of SBD as follows:
++
++=over
++
++=item One device
++
++In its most simple implementation, you use one device only. This is
++appropriate for clusters where all your data is on the same shared
++storage (with internal redundancy) anyway; the SBD device does not
++introduce an additional single point of failure then.
++
++If the SBD device is not accessible, the daemon will fail to start and
++inhibit startup of cluster services.
++
++=item Two devices
++
++This configuration is a trade-off, primarily aimed at environments where
++host-based mirroring is used, but no third storage device is available.
++
++SBD will not commit suicide if it loses access to one mirror leg; this
++allows the cluster to continue to function even in the face of one outage.
++
++However, SBD will not fence the other side while only one mirror leg is
++available, since it does not have enough knowledge to detect an asymmetric
++split of the storage. So it will not be able to automatically tolerate a
++second failure while one of the storage arrays is down. (Though you
++can use the appropriate crm command to acknowledge the fence manually.)
++
++It will not start unless both devices are accessible on boot.
++
++=item Three devices
++
++In this most reliable and recommended configuration, SBD will only
++self-fence if more than one device is lost; hence, this configuration is
++resilient against temporary single device outages (be it due to failures
++or maintenance). Fencing messages can still be successfully relayed if
++at least two devices remain accessible.
++
++This configuration is appropriate for more complex scenarios where
++storage is not confined to a single array. For example, host-based
++mirroring solutions could have one SBD per mirror leg (not mirrored
++itself), and an additional tie-breaker on iSCSI.
++
++It will only start if at least two devices are accessible on boot.
++
++=back
++
++After you have chosen the devices and created the appropriate partitions
++and perhaps multipath alias names to ease management, use the C<sbd create>
++command described above to initialize the SBD metadata on them.
++
++=head3 Sharing the block device(s) between multiple clusters
++
++It is possible to share the block devices between multiple clusters,
++provided the total number of nodes accessing them does not exceed I<255>
++nodes, and they all must share the same SBD timeouts (since these are
++part of the metadata).
++
++If you are using multiple devices this can reduce the setup overhead
++required. However, you should B<not> share devices between clusters in
++different security domains.
++
++=head2 Configure SBD to start on boot
++
++On systems using C<sysvinit>, the C<openais> or C<corosync> system
++start-up scripts must handle starting or stopping C<sbd> as required
++before starting the rest of the cluster stack.
++
++For C<systemd>, sbd simply has to be enabled using
++
++ systemctl enable sbd.service
++
++The daemon is brought online on each node before corosync and Pacemaker
++are started, and terminated only after all other cluster components have
++been shut down - ensuring that cluster resources are never activated
++without SBD supervision.
++
++=head2 Configuration via sysconfig
++
++The system instance of C<sbd> is configured via F</etc/sysconfig/sbd>.
++In this file, you must specify the device(s) used, as well as any
++options to pass to the daemon:
++
++ SBD_DEVICE="/dev/sda1;/dev/sdb1;/dev/sdc1"
++ SBD_PACEMAKER="true"
++
++C<sbd> will fail to start if no C<SBD_DEVICE> is specified. See the
++installed template or section for configuration via environment
++for more options that can be configured here.
++In general configuration done via parameters takes precedence over
++the configuration from the configuration file.
++
++=head2 Configuration via environment
++
++=over
++@environment_section@
++=back
++
++=head2 Testing the sbd installation
++
++After a restart of the cluster stack on this node, you can now try
++sending a test message to it as root, from this or any other node:
++
++ sbd -d /dev/sda1 message node1 test
++
++The node will acknowledge the receipt of the message in the system logs:
++
++ Aug 29 14:10:00 node1 sbd: [13412]: info: Received command test from node2
++
++This confirms that SBD is indeed up and running on the node, and that it
++is ready to receive messages.
++
++Make B<sure> that F</etc/sysconfig/sbd> is identical on all cluster
++nodes, and that all cluster nodes are running the daemon.
++
++=head1 Pacemaker CIB integration
++
++=head2 Fencing resource
++
++Pacemaker can only interact with SBD to issue a node fence if there is a
++configure fencing resource. This should be a primitive, not a clone, as
++follows:
++
++ primitive fencing-sbd stonith:external/sbd \
++ params pcmk_delay_max=30
++
++This will automatically use the same devices as configured in
++F</etc/sysconfig/sbd>.
++
++While you should not configure this as a clone (as Pacemaker will register
++the fencing device on each node automatically), the I<pcmk_delay_max>
++setting enables random fencing delay which ensures, in a scenario where a
++split-brain scenario did occur in a two node cluster, that one of the nodes
++has a better chance to survive to avoid double fencing.
++
++SBD also supports turning the reset request into a crash request, which
++may be helpful for debugging if you have kernel crashdumping configured;
++then, every fence request will cause the node to dump core. You can
++enable this via the C<crashdump="true"> parameter on the fencing
++resource. This is B<not> recommended for production use, but only for
++debugging phases.
++
++=head2 General cluster properties
++
++You must also enable STONITH in general, and set the STONITH timeout to
++be at least twice the I<msgwait> timeout you have configured, to allow
++enough time for the fencing message to be delivered. If your I<msgwait>
++timeout is 60 seconds, this is a possible configuration:
++
++ property stonith-enabled="true"
++ property stonith-timeout="120s"
++
++B<Caution>: if I<stonith-timeout> is too low for I<msgwait> and the
++system overhead, sbd will never be able to successfully complete a fence
++request. This will create a fencing loop.
++
++Note that the sbd fencing agent will try to detect this and
++automatically extend the I<stonith-timeout> setting to a reasonable
++value, on the assumption that sbd modifying your configuration is
++preferable to not fencing.
++
++=head1 Management tasks
++
++=head2 Recovering from temporary SBD device outage
++
++If you have multiple devices, failure of a single device is not immediately
++fatal. C<sbd> will retry to restart the monitor for the device every 5
++seconds by default. However, you can tune this via the options to the
++I<watch> command.
++
++In case you wish the immediately force a restart of all currently
++disabled monitor processes, you can send a I<SIGUSR1> to the SBD
++I<inquisitor> process.
++
++
++=head1 LICENSE
++
++Copyright (C) 2008-2013 Lars Marowsky-Bree
++
++This program is free software; you can redistribute it and/or
++modify it under the terms of the GNU General Public
++License as published by the Free Software Foundation; either
++version 2 of the License, or (at your option) any later version.
++
++This software is distributed in the hope that it will be useful,
++but WITHOUT ANY WARRANTY; without even the implied warranty of
++MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++General Public License for more details.
++
++For details see the GNU General Public License at
++http://www.gnu.org/licenses/gpl-2.0.html (version 2) and/or
++http://www.gnu.org/licenses/gpl.html (the newest as per "any later").
+diff --git a/src/sbd.sysconfig b/src/sbd.sysconfig
+index e1a60ed..33b50d0 100644
+--- a/src/sbd.sysconfig
++++ b/src/sbd.sysconfig
+@@ -14,7 +14,7 @@
+ #
+ SBD_PACEMAKER=yes
+
+-## Type: list(always,clean)
++## Type: always / clean
+ ## Default: always
+ #
+ # Specify the start mode for sbd. Setting this to "clean" will only
+@@ -103,6 +103,7 @@ SBD_TIMEOUT_ACTION=flush,reboot
+ # Thus in auto-mode sbd will check if the slice has RT-budget assigned.
+ # If that is the case sbd will stay in that slice while it will
+ # be moved to root-slice otherwise.
++#
+ SBD_MOVE_TO_ROOT_CGROUP=auto
+
+ ## Type: string
+--
+1.8.3.1
+
diff --git a/0003-Fix-scheduling-overhaul-the-whole-thing.patch b/0003-Fix-scheduling-overhaul-the-whole-thing.patch
new file mode 100644
index 0000000..05fab9d
--- /dev/null
+++ b/0003-Fix-scheduling-overhaul-the-whole-thing.patch
@@ -0,0 +1,152 @@
+From 4bc08cf76fc01e98cbec76bf32bb333b77f69217 Mon Sep 17 00:00:00 2001
+From: Klaus Wenninger <klaus.wenninger(a)aon.at>
+Date: Thu, 27 Feb 2020 19:02:57 +0100
+Subject: [PATCH] Fix: scheduling: overhaul the whole thing
+
+- prevent possible lockup when format in proc changes
+- properly get and handle scheduler policy & prio
+- on SCHED_RR failing push to the max with SCHED_OTHER
+---
+ src/sbd-common.c | 56 ++++++++++++++++++++++++++++++++++++++++++++------------
+ 1 file changed, 44 insertions(+), 12 deletions(-)
+
+diff --git a/src/sbd-common.c b/src/sbd-common.c
+index 9ec43b2..c2da758 100644
+--- a/src/sbd-common.c
++++ b/src/sbd-common.c
+@@ -26,6 +26,9 @@
+ #include <pwd.h>
+ #include <unistd.h>
+ #include <dirent.h>
++#include <sys/time.h>
++#include <sys/resource.h>
++#include <limits.h>
+
+ #ifdef _POSIX_MEMLOCK
+ # include <sys/mman.h>
+@@ -298,7 +301,7 @@ watchdog_populate_list(void)
+ FILE *file;
+
+ snprintf(entry_name, sizeof(entry_name),
+- SYS_CLASS_WATCHDOG "/%s/dev", entry->d_name);
++ SYS_CLASS_WATCHDOG "/%s/dev", entry->d_name);
+ file = fopen(entry_name, "r");
+ if (file) {
+ int major, minor;
+@@ -667,7 +670,7 @@ static int get_realtime_budget(void)
+ {
+ FILE *f;
+ char fname[PATH_MAX];
+- int res = -1, lnum = 0;
++ int res = -1, lnum = 0, num;
+ char *cgroup = NULL, *namespecs = NULL;
+
+ snprintf(fname, PATH_MAX, "/proc/%jd/cgroup", (intmax_t)getpid());
+@@ -677,7 +680,8 @@ static int get_realtime_budget(void)
+ (intmax_t)getpid());
+ goto exit_res;
+ }
+- while( fscanf(f, "%d:%m[^:]:%m[^\n]", &lnum, &namespecs, &cgroup) !=EOF ) {
++ while( (num = fscanf(f, "%d:%m[^:]:%m[^\n]\n", &lnum,
++ &namespecs, &cgroup)) !=EOF ) {
+ if (namespecs && strstr(namespecs, "cpuacct")) {
+ free(namespecs);
+ break;
+@@ -690,6 +694,11 @@ static int get_realtime_budget(void)
+ free(namespecs);
+ namespecs = NULL;
+ }
++ /* not to get stuck if format changes */
++ if ((num < 3) && ((fscanf(f, "%*[^\n]") == EOF) ||
++ (fscanf(f, "\n") == EOF))) {
++ break;
++ }
+ }
+ fclose(f);
+ if (cgroup == NULL) {
+@@ -776,15 +785,17 @@ sbd_make_realtime(int priority, int stackgrowK, int heapgrowK)
+ return;
+ }
+
++do {
+ #ifdef SCHED_RR
+ if (move_to_root_cgroup) {
+ sbd_move_to_root_cgroup(enforce_moving_to_root_cgroup);
+ }
+
+ {
+- int pcurrent = 0;
+ int pmin = sched_get_priority_min(SCHED_RR);
+ int pmax = sched_get_priority_max(SCHED_RR);
++ struct sched_param sp;
++ int pcurrent;
+
+ if (priority == 0) {
+ priority = pmax;
+@@ -794,26 +805,47 @@ sbd_make_realtime(int priority, int stackgrowK, int heapgrowK)
+ priority = pmax;
+ }
+
+- pcurrent = sched_getscheduler(0);
+- if (pcurrent < 0) {
++ if (sched_getparam(0, &sp) < 0) {
+ cl_perror("Unable to get scheduler priority");
+
+- } else if(pcurrent < priority) {
+- struct sched_param sp;
++ } else if ((pcurrent = sched_getscheduler(0)) < 0) {
++ cl_perror("Unable to get scheduler policy");
+
++ } else if ((pcurrent == SCHED_RR) &&
++ (sp.sched_priority >= priority)) {
++ cl_log(LOG_INFO,
++ "Stay with priority (%d) for policy SCHED_RR",
++ sp.sched_priority);
++ break;
++ } else {
+ memset(&sp, 0, sizeof(sp));
+ sp.sched_priority = priority;
+
+ if (sched_setscheduler(0, SCHED_RR, &sp) < 0) {
+- cl_perror("Unable to set scheduler priority to %d", priority);
++ cl_perror(
++ "Unable to set scheduler policy to SCHED_RR priority %d",
++ priority);
+ } else {
+- cl_log(LOG_INFO, "Scheduler priority is now %d", priority);
++ cl_log(LOG_INFO,
++ "Scheduler policy is now SCHED_RR priority %d",
++ priority);
++ break;
+ }
+ }
+ }
+ #else
+- cl_log(LOG_ERR, "System does not support updating the scheduler priority");
++ cl_log(LOG_ERR, "System does not support updating the scheduler policy");
++#endif
++#ifdef PRIO_PGRP
++ if (setpriority(PRIO_PGRP, 0, INT_MIN) < 0) {
++ cl_perror("Unable to raise the scheduler priority");
++ } else {
++ cl_log(LOG_INFO, "Scheduler priority raised to the maximum");
++ }
++#else
++ cl_perror("System does not support setting the scheduler priority");
+ #endif
++} while (0);
+
+ sbd_memlock(heapgrowK, stackgrowK);
+ }
+@@ -826,7 +858,7 @@ maximize_priority(void)
+ return;
+ }
+
+- sbd_make_realtime(0, 256, 256);
++ sbd_make_realtime(0, 256, 256);
+
+ if (ioprio_set(IOPRIO_WHO_PROCESS, getpid(),
+ IOPRIO_PRIO_VALUE(IOPRIO_CLASS_RT, 1)) != 0) {
+--
+1.8.3.1
+
diff --git a/gating.yaml b/gating.yaml
new file mode 100644
index 0000000..9e15ced
--- /dev/null
+++ b/gating.yaml
@@ -0,0 +1,15 @@
+--- !Policy
+product_versions:
+ - fedora-*
+decision_context: bodhi_update_push_testing
+subject_type: koji_build
+rules:
+ - !PassingTestCaseRule {test_case_name: fedora-ci.koji-build.tier0.functional}
+--- !Policy
+product_versions:
+ - fedora-*
+decision_context: bodhi_update_push_stable
+subject_type: koji_build
+rules:
+ - !PassingTestCaseRule {test_case_name: fedora-ci.koji-build.tier0.functional}
+
diff --git a/sbd.spec b/sbd.spec
index 86d6f85..936d7e7 100644
--- a/sbd.spec
+++ b/sbd.spec
@@ -15,24 +15,28 @@
# Please submit bugfixes or comments via http://bugs.opensuse.org/
#
-%global commit 7f33d1a409d0a4e2cd69946688c48eaa8f3c5d26
+%global commit 25fce8a7d5e8cd5abc2379077381b10bd6cec183
%global shortcommit %(c=%{commit}; echo ${c:0:7})
-%global github_owner clusterlabs
+%global github_owner Clusterlabs
+%global buildnum 1
Name: sbd
Summary: Storage-based death
License: GPLv2+
-Version: 1.4.0
-Release: 3%{?dist}
+Group: System Environment/Daemons
+Version: 1.4.1
+Release: %{buildnum}%{?dist}
Url: https://github.com/%{github_owner}/%{name}
Source0: https://github.com/%{github_owner}/%{name}/archive/%{commit}/%{name}-%{co...
-Patch0: 0001-Refactor-fail-earlier-on-invalid-servants.patch
+Patch0: 0001-Fix-regressions.sh-make-parameter-passing-consistent.patch
+Patch1: 0002-Doc-add-environment-section-to-man-page.patch
+Patch2: 0003-Fix-scheduling-overhaul-the-whole-thing.patch
BuildRequires: autoconf
BuildRequires: automake
BuildRequires: libuuid-devel
BuildRequires: glib2-devel
BuildRequires: libaio-devel
-BuildRequires: corosynclib-devel
+BuildRequires: corosync-devel
BuildRequires: pacemaker-libs-devel
BuildRequires: libtool
BuildRequires: libuuid-devel
@@ -40,6 +44,7 @@ BuildRequires: libxml2-devel
BuildRequires: pkgconfig
BuildRequires: make
BuildRequires: systemd
+Conflicts: fence-agents-sbd < 4.5.0
%if 0%{?rhel}
ExclusiveArch: i686 x86_64 s390x aarch64 ppc64le
@@ -53,15 +58,28 @@ ExclusiveArch: i686 x86_64 s390x aarch64 ppc64le
This package contains the storage-based death functionality.
+%package tests
+Summary: Storage-based death environment for regression tests
+License: GPLv2+
+Group: System Environment/Daemons
+
+%description tests
+This package provides an environment + testscripts for
+regression-testing sbd.
+
###########################################################
%prep
%autosetup -n %{name}-%{commit} -p1
+%ifarch s390x s390
+sed -i src/sbd.sysconfig -e "s/Default: 5/Default: 15/"
+sed -i src/sbd.sysconfig -e "s/SBD_WATCHDOG_TIMEOUT=5/SBD_WATCHDOG_TIMEOUT=15/"
+%endif
###########################################################
%build
-autoreconf -i
+./autogen.sh
export CFLAGS="$RPM_OPT_FLAGS -Wall -Werror"
%configure
make %{?_smp_mflags}
@@ -73,6 +91,7 @@ make %{?_smp_mflags}
make DESTDIR=$RPM_BUILD_ROOT LIBDIR=%{_libdir} install
rm -rf ${RPM_BUILD_ROOT}%{_libdir}/stonith
+install -D -m 0755 tests/regressions.sh $RPM_BUILD_ROOT/usr/share/sbd/regressions.sh
%if %{defined _unitdir}
install -D -m 0644 src/sbd.service $RPM_BUILD_ROOT/%{_unitdir}/sbd.service
install -D -m 0644 src/sbd_remote.service $RPM_BUILD_ROOT/%{_unitdir}/sbd_remote.service
@@ -81,12 +100,26 @@ install -D -m 0644 src/sbd_remote.service $RPM_BUILD_ROOT/%{_unitdir}/sbd_remote
mkdir -p ${RPM_BUILD_ROOT}%{_sysconfdir}/sysconfig
install -m 644 src/sbd.sysconfig ${RPM_BUILD_ROOT}%{_sysconfdir}/sysconfig/sbd
+# Don't package static libs
+find %{buildroot} -name '*.a' -type f -print0 | xargs -0 rm -f
+find %{buildroot} -name '*.la' -type f -print0 | xargs -0 rm -f
+
###########################################################
%if %{defined _unitdir}
%post
%systemd_post sbd.service
%systemd_post sbd_remote.service
+if [ $1 -ne 1 ] ; then
+ if systemctl --quiet is-enabled sbd.service 2>/dev/null
+ then
+ systemctl --quiet reenable sbd.service 2>/dev/null || :
+ fi
+ if systemctl --quiet is-enabled sbd_remote.service 2>/dev/null
+ then
+ systemctl --quiet reenable sbd_remote.service 2>/dev/null || :
+ fi
+fi
%preun
%systemd_preun sbd.service
@@ -102,6 +135,7 @@ install -m 644 src/sbd.sysconfig ${RPM_BUILD_ROOT}%{_sysconfdir}/sysconfig/sbd
%defattr(-,root,root)
%config(noreplace) %{_sysconfdir}/sysconfig/sbd
%{_sbindir}/sbd
+%exclude %{_datadir}/sbd/regressions.sh
%doc %{_mandir}/man8/sbd*
%if %{defined _unitdir}
%{_unitdir}/sbd.service
@@ -109,7 +143,21 @@ install -m 644 src/sbd.sysconfig ${RPM_BUILD_ROOT}%{_sysconfdir}/sysconfig/sbd
%endif
%doc COPYING
+%files tests
+###########################################################
+%defattr(-,root,root)
+%dir %{_datadir}/sbd
+%{_datadir}/sbd/regressions.sh
+%{_libdir}/libsbdtestbed*
+
%changelog
+* Thu Mar 5 2020 Klaus Wenninger <kwenning(a)redhat.com> - 1.4.1-1
+- Rebase to upstream v1.4.1
+- Make coverity happy with parameter passing in regressions.sh
+- Add auto generated environment section to man-page
+- Overhaul setting scheduler policy/priority
+- Enable Fedora CI Gating
+
* Thu Jan 30 2020 Fedora Release Engineering <releng(a)fedoraproject.org> - 1.4.0-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
diff --git a/sources b/sources
index fab3041..50b7de1 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-SHA512 (sbd-7f33d1a409d0a4e2cd69946688c48eaa8f3c5d26.tar.gz) = 1baca43ad95d8d0886cbd1db82eeb617a2055e5a31d16f2802c27b120894c6829bfc99663e2da402a37e6c52d0cda6cec63cbc15cb6c580895e5a1d30e5b1c62
+SHA512 (sbd-25fce8a7d5e8cd5abc2379077381b10bd6cec183.tar.gz) = 3b89ee0aa88282f17c8daf725a1e7a8c2f2affdcf6ff6f4ca4faf250760d778a65c5693e5df3fcc7554d60dd9b0cb1a0350e266fadb7668320f3c676d8799a29
diff --git a/tests/inventory b/tests/inventory
new file mode 100755
index 0000000..e0cea17
--- /dev/null
+++ b/tests/inventory
@@ -0,0 +1,4 @@
+#!/bin/bash
+export TEST_DOCKER_EXTRA_ARGS="--privileged --network host"
+exec merge-standard-inventory "$@"
+
diff --git a/tests/tests.yml b/tests/tests.yml
new file mode 100644
index 0000000..49bc170
--- /dev/null
+++ b/tests/tests.yml
@@ -0,0 +1,16 @@
+---
+- hosts: localhost
+ roles:
+ - role: standard-test-basic
+ tags:
+ - classic
+ - container
+ tests:
+ - smoke:
+ dir: .
+ run: /usr/share/sbd/regressions.sh
+ required_packages:
+ - sbd
+ - sbd-tests
+ - device-mapper
+
4 years, 2 months
[Report] Packages Restricting Arches
by root
List of packages currently excluding arches (2754)
===========================================
- 0ad
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64 ppc64le
- 90-Second-Portraits
ExclusiveArch: %{arm} %{ix86} x86_64 %{mips} aarch64 ppc64
- GoldenCheetah
ExclusiveArch: %{qt5_qtwebengine_arches}
- GtkAda
ExclusiveArch: %{GPRbuild_arches}
- GtkAda3
ExclusiveArch: %{GPRbuild_arches}
- PragmARC
ExclusiveArch: %{GPRbuild_arches}
- R-V8
ExclusiveArch: %{nodejs_arches}
- RdRand
ExclusiveArch: %{ix86} x86_64
- SLOF
ExclusiveArch: ppc64le
- YafaRay
ExclusiveArch: %{ix86} x86_64
- aboot
ExclusiveArch: alpha
- acpid
ExclusiveArch: ia64 x86_64 %{ix86} %{arm} aarch64
- ahven
ExclusiveArch: %{GPRbuild_arches}
- alleyoop
ExclusiveArch: %{ix86} x86_64 ppc ppc64 ppc64le s390x %{arm} aarch64
- american-fuzzy-lop
ExclusiveArch: %{ix86} x86_64
- anet
ExclusiveArch: %{GPRbuild_arches}
- apmd
ExclusiveArch: %{ix86}
- appstream-generator
ExclusiveArch: x86_64 %{ix86} %{arm}
- arduino
ExclusiveArch: %{go_arches}
- arduino-builder
ExclusiveArch: %{go_arches}
- arm-trusted-firmware
ExclusiveArch: aarch64
- aunit
ExclusiveArch: %GPRbuild_arches
- avgtime
ExclusiveArch: %{ldc_arches}
- aws
ExclusiveArch: %GPRbuild_arches
- banshee
ExclusiveArch: %{mono_arches}
- banshee-community-extensions
ExclusiveArch: %ix86 x86_64 ppc ppc64 ia64 %{arm} sparcv9 alpha s390x
- bareftp
ExclusiveArch: %{mono_arches}
- bcal
ExclusiveArch: x86_64 aarch64 ia64 ppc64 ppc64le s390x
- bcc
ExclusiveArch: x86_64 %{power64} aarch64 s390x
- bcm283x-firmware
ExclusiveArch: %{arm} aarch64
- berusky2
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64 %{mips}
- biosdevname
ExclusiveArch: %{ix86} x86_64
- bless
ExclusiveArch: %mono_arches
- boo
ExclusiveArch: %{mono_arches}
- bpftrace
ExclusiveArch: x86_64 %{power64} aarch64 s390x
- bwa
ExclusiveArch: x86_64
- calamares
ExclusiveArch: %{ix86} x86_64
- calibre
ExclusiveArch: %{qt5_qtwebengine_arches}
- carto
ExclusiveArch: %{nodejs_arches} noarch
- ccdciel
ExclusiveArch: %{fpc_arches}
- cdcollect
ExclusiveArch: %{mono_arches}
- chromium
ExclusiveArch: x86_64 i686
ExclusiveArch: x86_64 i686 aarch64
- cjdns
ExclusiveArch: %{nodejs_arches}
- cmospwd
ExclusiveArch: %{ix86} x86_64
- cmrt
ExclusiveArch: %{ix86} x86_64 ia64
- coffee-script
ExclusiveArch: %{nodejs_arches} noarch
- colorful
ExclusiveArch: %{fpc_arches}
- containers
ExclusiveArch: %{ldc_arches}
- cpu-x
ExclusiveArch: i686 x86_64
- cpuid
ExclusiveArch: %{ix86} x86_64
- cqrlog
ExclusiveArch: %{fpc_arches}
- crash
ExclusiveArch: %{ix86} ia64 x86_64 ppc ppc64 s390 s390x %{arm} aarch64 ppc64le
- 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
- daq
ExclusiveArch: x86_64 aarch64
- darktable
ExclusiveArch: x86_64 aarch64 ppc64le
- 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}}
- discord-irc
ExclusiveArch: %{nodejs_arches} noarch
- dlm
ExclusiveArch: i686 x86_64
- dmidecode
ExclusiveArch: %{ix86} x86_64 ia64 aarch64
- docco
ExclusiveArch: %{nodejs_arches} noarch
- docker-distribution
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- dolphin-emu
ExclusiveArch: x86_64 armv7l aarch64
- dotnet-build-reference-packages
ExclusiveArch: x86_64
- dotnet3.1
ExclusiveArch: x86_64
- doublecmd
ExclusiveArch: %{ix86} x86_64
- dpdk
ExclusiveArch: x86_64 i686 aarch64 ppc64le
- dssi-vst
ExclusiveArch: %{ix86} x86_64
- dyninst
ExclusiveArch: %{ix86} x86_64 ppc64le aarch64
- e3
ExclusiveArch: %{ix86} x86_64
- edac-utils
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64 %{power64}
- edb
ExclusiveArch: %{ix86} x86_64
- edk2
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64
ExclusiveArch: x86_64 aarch64
- efibootmgr
ExclusiveArch: %{efi}
- efivar
ExclusiveArch: %{efi}
- elasticdump
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
ExclusiveArch: %{nodejs_arches} noarch
- elk
ExclusiveArch: x86_64 %{ix86}
ExclusiveArch: x86_64 %{ix86} aarch64 %{arm} %{power64}
- embree
ExclusiveArch: x86_64
- enki
ExclusiveArch: %{qt5_qtwebengine_arches} noarch
- envytools
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64
- eric
ExclusiveArch: %{qt5_qtwebengine_arches} noarch
- extlinux-bootloader
ExclusiveArch: %{arm} aarch64
- fcitx-libpinyin
ExclusiveArch: %{qt5_qtwebengine_arches}
- fedora-dockerfiles
ExclusiveArch: %{go_arches}
- fes
ExclusiveArch: %{ix86} x86_64
- flannel
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64 ppc64le s390x
- florist
ExclusiveArch: %{GPRbuild_arches}
- fluxcapacitor
ExclusiveArch: %{ix86} x86_64 %{arm}
- fpc
ExclusiveArch: %{arm} aarch64 %{ix86} x86_64 ppc64le
- frescobaldi
ExclusiveArch: %{qt5_qtwebengine_arches}
- frysk
ExclusiveArch: %{ix86} x86_64 ppc64
- fst
ExclusiveArch: i686
- fwts
ExclusiveArch: x86_64 %{arm} aarch64 s390x %{power64}
- ga
ExclusiveArch: %{ix86} x86_64
- gbrainy
ExclusiveArch: %mono_arches
- gdata-sharp
ExclusiveArch: %mono_arches
- gdb-exploitable
ExclusiveArch: x86_64 i386
ExclusiveArch: x86_64 noarch
- 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}}
- 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-guitar
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
- gprbuild
ExclusiveArch: %{GPRbuild_arches} %{bootstrap_arch}
- gprolog
ExclusiveArch: x86_64 %{ix86} ppc alpha
- grafana
ExclusiveArch: %{grafana_arches}
- grafana-pcp
ExclusiveArch: %{nodejs_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
- hcc
ExclusiveArch: x86_64 aarch64
- hedgewars
ExclusiveArch: %{fpc_arches}
- heketi
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- hip
ExclusiveArch: x86_64
- 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
- ikona
ExclusiveArch: %{qt5_qtwebengine_arches}
- imvirt
ExclusiveArch: %{ix86} x86_64 ia64
- indistarter
ExclusiveArch: %{fpc_arches}
- infinipath-psm
ExclusiveArch: x86_64
- insect
ExclusiveArch: %{nodejs_arches} noarch
- intel-cmt-cat
ExclusiveArch: x86_64 i686 i586
ExclusiveArch: x86_64 i686 i586
- intel-gmmlib
ExclusiveArch: x86_64 i686
- 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: %{arm} %{ix86} x86_64
- iucode-tool
ExclusiveArch: %{ix86} x86_64
- jake
ExclusiveArch: %{nodejs_arches} noarch
- jasmine-node
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- java-1.8.0-openjdk-aarch32
ExclusiveArch: %{arm}
- josm
ExclusiveArch: %{ix86} x86_64
- keepass
ExclusiveArch: %{mono_arches}
- kernel
ExclusiveArch: x86_64 s390x %{arm} aarch64 ppc64le
ExclusiveArch: noarch i386 i686 x86_64 s390x %{arm} aarch64 ppc64le
- kf5-akonadi-calendar
ExclusiveArch: x86_64 %{arm}
- kf5-akonadi-search
ExclusiveArch: x86_64 ppc64le %{arm}
- kf5-kalarmcal
ExclusiveArch: x86_64 ppc64le %{arm}
- kf5-kblog
ExclusiveArch: x86_64 ppc64le %{arm}
- kf5-kcalendarcore
ExclusiveArch: x86_64 ppc64le %{arm}
- kf5-kcalendarutils
ExclusiveArch: x86_64 ppc64le %{arm}
- kf5-kitinerary
ExclusiveArch: x86_64 ppc64le %{arm}
- kf5-kmailtransport
ExclusiveArch: x86_64 %{arm}
- kf5-ktnef
ExclusiveArch: x86_64 ppc64le %{arm}
- kf5-libgravatar
ExclusiveArch: x86_64 %{arm}
- kf5-libkdcraw
ExclusiveArch: x86_64 ppc64le %{arm}
- kf5-libkdepim
ExclusiveArch: x86_64 %{arm}
- kf5-libksieve
ExclusiveArch: x86_64 %{arm}
- kf5-mailimporter
ExclusiveArch: x86_64 %{arm}
- kf5-pimcommon
ExclusiveArch: x86_64 %{arm}
- kicad
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64 ppc64le
- kiwix-desktop
ExclusiveArch: %{qt5_qtwebengine_arches}
- 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
- kosmtik
ExclusiveArch: %{nodejs_arches} noarch
- kubernetes
ExclusiveArch: x86_64 aarch64 ppc64le s390x %{arm}
- lazarus
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
- libica
ExclusiveArch: s390 s390x
- libipt
ExclusiveArch: %{ix86} x86_64
ExclusiveArch: %{ix86} x86_64
- libkgapi
ExclusiveArch: x86_64 %{arm}
- libocxl
ExclusiveArch: ppc64le
- libpmemobj-cpp
ExclusiveArch: x86_64
- 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} %{ix86} x86_64
- libva-intel-hybrid-driver
ExclusiveArch: %{ix86} x86_64 ia64
- libvmi
ExclusiveArch: x86_64
- libvpd
ExclusiveArch: %{power64}
- libxsmm
ExclusiveArch: x86_64
- libzfcphbaapi
ExclusiveArch: s390 s390x
- lightdm
ExclusiveArch: x86_64 ppc64le
- lodash
ExclusiveArch: %{nodejs_arches} noarch
- log4net
ExclusiveArch: %mono_arches
- lrmi
ExclusiveArch: %{ix86}
- lsvpd
ExclusiveArch: %{power64}
- luajit
ExclusiveArch: %{arm} %{ix86} x86_64 %{mips} aarch64 s390x ppc64le
- luxcorerender
ExclusiveArch: x86_64
- mactel-boot
ExclusiveArch: x86_64
- manifest-tool
ExclusiveArch: x86_64 aarch64 ppc64le s390x
- mantle
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- 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
- mediaconch
ExclusiveArch: %{qt5_qtwebengine_arches}
- mellowplayer
ExclusiveArch: %{qt5_qtwebengine_arches}
- memkind
ExclusiveArch: x86_64
- 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-wine-gecko
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64
- mirrorlist-server
ExclusiveArch: %{rust_arches}
- mkbootdisk
ExclusiveArch: %{ix86} sparc sparc64 x86_64
- mnemosyne
ExclusiveArch: noarch %{qt5_qtwebengine_arches}
- mocha
ExclusiveArch: %{nodejs_arches} noarch
- mod_mono
ExclusiveArch: %mono_arches
- module-build-service
ExclusiveArch: %{ix86} x86_64 noarch
- mokutil
ExclusiveArch: %{ix86} x86_64 aarch64
- 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
- mozilla-iot-gateway
ExclusiveArch: %{nodejs_arches} noarch
- mozilla-iot-gateway-addon-node
ExclusiveArch: %{nodejs_arches} noarch
- mrrescue
ExclusiveArch: %{arm} %{ix86} x86_64 %{mips} aarch64 ppc64
- msr-tools
ExclusiveArch: %{ix86} x86_64
- mustache-d
ExclusiveArch: %{ldc_arches}
- mysql-connector-net
ExclusiveArch: %{mono_arches}
- nacl-binutils
ExclusiveArch: x86_64
- nant
ExclusiveArch: %mono_arches
- nbc
ExclusiveArch: %{fpc_arches}
- nbdkit
ExclusiveArch: x86_64
- ndesk-dbus
ExclusiveArch: %{mono_arches}
- ndesk-dbus-glib
ExclusiveArch: %{mono_arches}
- newtonsoft-json
ExclusiveArch: %{mono_arches}
- nim
ExclusiveArch: %{nim_arches}
- node-gyp
ExclusiveArch: %{nodejs_arches} noarch
- nodejs
ExclusiveArch: %{nodejs_arches}
- nodejs-Base64
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-abbrev
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-acorn
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-acorn-dynamic-import
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-acorn-jsx
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-acorn-object-spread
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-agentkeepalive
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ain2
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-align-text
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ansi
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ansi-bgblack
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ansi-bgblue
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ansi-bgcyan
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ansi-bggreen
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ansi-bgmagenta
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ansi-bgred
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ansi-bgwhite
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ansi-bgyellow
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ansi-black
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ansi-blue
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ansi-bold
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ansi-colors
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ansi-cyan
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-ansi-dim
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ansi-escapes
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ansi-gray
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ansi-green
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-ansi-grey
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ansi-hidden
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ansi-inverse
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ansi-italic
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ansi-magenta
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-ansi-red
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ansi-regex
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ansi-reset
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ansi-strikethrough
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ansi-styles
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-ansi-underline
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ansi-white
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ansi-wrap
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-ansi-yellow
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-ansicolors
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-ansistyles
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-any-path
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-any-promise
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-ap
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-append-field
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-append-transform
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-archy
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-are-we-there-yet
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-argparse
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-argsparser
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-arr-diff
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-arr-exclude
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-arr-flatten
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-arr-union
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-array-buffer-from-string
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-array-differ
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-array-events
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-array-filter
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-array-find
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-array-find-index
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-array-flatten
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-array-foreach
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-array-ify
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-array-index
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-array-map
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-array-reduce
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-array-union
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-array-unique
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-arraybuffer-dot-slice
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-arraybuffer-equal
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-arrify
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-asap
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-ascii-tree
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ascli
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-asn1
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-assert-plus
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-assertion-error
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-assume
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-async
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-async-array-reduce
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-async-arrays
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-async-limiter
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-async-queue
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-async-some
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-asynckit
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-atob
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-auto-bind
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-autoresolve
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-aws-sign
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-aws-sign2
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-aws4
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-babel-code-frame
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-babel-plugin-syntax-async-functions
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-babel-plugin-syntax-async-generators
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-babel-runtime
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-babylon
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-backbone
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-backoff
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-balanced-match
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-base
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-base-plugins
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-base32-encode
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-base64-arraybuffer
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-base64-url
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-base64id
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-bash-match
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-basic-auth
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-basic-auth-connect
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-batch
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-bcrypt
ExclusiveArch: %{nodejs_arches}
- nodejs-bcryptjs
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-beeper
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-benchmark
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-better-assert
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-better-than-before
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-bignumber-js
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-bind-obj-methods
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-bindings
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-bit-mask
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-bl
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-blob
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-block-stream
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-bluebird
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-body-parser
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-boolbase
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-boom
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-brace-expansion
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-braces
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-browser-stdout
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-bson
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-buble
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-buf-compare
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-buffer-crc32
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-buffer-equal
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-buffer-writer
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-bufferutil
ExclusiveArch: %{nodejs_arches}
- nodejs-builtin-modules
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-builtins
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-bundle-dependencies
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-bunker
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-bunyan
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-burrito
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-busboy
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-byline
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-bytes
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-cache-base
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-caching-transform
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-call-delayed
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-call-matcher
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-call-me-maybe
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-call-signature
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-callback-stream
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-caller-callsite
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-caller-path
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-callsite
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-callsites
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-camelcase
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-camelcase-keys
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-carrier
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-caseless
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-center-align
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-chai
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-chai-as-promised
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-chai-cheerio
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-chai-connect-middleware
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-chai-fs
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-chai-json-schema
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-chai-oauth2orize-grant
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-chai-passport-strategy
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-chai-spies-next
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-chainer
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-chalk
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-char-spinner
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-character-parser
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-chardet
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-charenc
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-charm
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-check-env
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-check-error
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-cheerio
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-child-process-close
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-chmodr
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-chownr
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-chroma-js
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-chrono
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ci-info
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-circular-json
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-cjson
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-clap
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-class-utils
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-clean-css
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-clean-yaml-object
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-clear-require
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-cli
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-cli-color
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-cli-spinner
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-cli-table
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-cliui
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-clone
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-clone-deep
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-clone-stats
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-closure-compiler
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-cmd-shim
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-co
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-co-mocha
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-co-with-promise
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-coa
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-code-point-at
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-codemirror
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-coffee-coverage
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-collection-visit
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-collections
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-color-support
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-colors
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-colour
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-columnify
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-combined-stream
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-commander
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-common-path-prefix
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-commondir
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-commonmark
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-compare-func
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-compare-versions
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-component-emitter
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-component-indexof
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-component-inherit
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-concat-map
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-concat-stream
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-config-chain
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-connect
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-connect-livereload
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-connect-timeout
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-console-dot-log
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-console-group
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-consolemd
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-constantinople
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-content-disposition
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-content-type
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-conventional-changelog-angular
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-conventional-changelog-atom
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-conventional-changelog-codemirror
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-conventional-changelog-ember
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-conventional-changelog-eslint
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-conventional-changelog-express
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-conventional-changelog-jquery
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-conventional-changelog-jscs
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-conventional-changelog-jshint
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-conventional-changelog-preset-loader
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-conventional-changelog-writer
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-conventional-commits-filter
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-conventional-commits-parser
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-convert-hex
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-convert-source-map
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-cookie
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-cookie-jar
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-cookie-parser
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-cookie-session
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-cookie-signature
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-cookiejar
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-cookies
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-copy-descriptor
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-core-assert
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-core-js
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-core-util-is
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-cors
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-couch-login
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-coveralls
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-crc
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-cross-spawn
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-cross-spawn-async
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-crypt
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-cryptiles
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-csrf
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-css
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-css-parse
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-css-select
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-css-stringify
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-css-tree
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-css-what
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-csscomb-core
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-csslint
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-csso
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-cssom
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-csurf
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-csv
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-csv-generate
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-csv-parse
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-csv-spectrum
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-csv-stringify
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-ctype
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-currently-unhandled
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-cycle
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-cyclist
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-d
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-dargs
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-data-uri-to-buffer
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-dateformat
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-death
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-debug
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-debug-fabulous
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-debug-log
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-debuglog
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-decamelize
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-decamelize-keys
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-decimal-js
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-dedent
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-deep-eql
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-deep-equal
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-deep-extend
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-deep-is
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-deeper
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-default-require-extensions
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-default-resolution
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-defaults
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-defence
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-defence-cli
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-define-properties
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-define-property
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-defined
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-del
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-delayed-stream
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-delegates
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-delete
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-dep-graph
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-depd
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-deprecated
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-destroy
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-detect-file
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-detect-indent
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-detect-newline
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-detect-node
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-detective
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-dezalgo
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-dicer
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-diff
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-difflet
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-difflib
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-dirty-chai
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-discord-js
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-docopt
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-doctrine
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-dot-prop
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-dotfile-regex
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-dryice
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-duplexer
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-duplexer2
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-duplexify
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-duration
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-each
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-ebnf-parser
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-echomd
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-editor
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ee-first
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ejs
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-emojione
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-empty-dir
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-end-of-stream
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-engine-dot-io-client
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-engine-dot-io-parser
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-error-ex
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-error-symbol
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-es-abstract
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-es-to-primitive
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-es5-ext
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-es5-shim
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-es6-iterator
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-es6-promise
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-es6-promisify
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-es6-shim
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-es6-symbol
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-es6-weak-map
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-escallmatch
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-escape-html
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-escape-regexp-component
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-escape-string-regexp
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-escodegen
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-escope
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-espower
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-espower-location-detector
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-esprima
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-esprima-fb
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-esprima-harmony-jscs
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-espurify
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-esrecurse
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-estraverse
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-estraverse-fb
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-estree-walker
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-esutils
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-event-emitter
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-eventemitter2
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-events
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-events-to-array
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-everything-dot-js
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-exit
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-expand-brackets
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-expand-range
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-expand-tilde
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-expect
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-expect-dot-js
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-express
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-express-session
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-extend
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-extend-shallow
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-extended-emitter
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-extglob
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-eyes
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-fake
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-fancy-log
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-fast-levenshtein
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-fastfall
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-faucet
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-faye-websocket
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-figures
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-file-entry-cache
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-file-sync-cmp
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-filelist
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-filename-regex
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-fileset
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-fill-keys
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-fill-range
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-find-cache-dir
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-find-up
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-findup-sync
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-first-chunk-stream
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-flagged-respawn
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-flat-cache
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-flush-write-stream
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-fmix
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-fn-dot-name
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-for-each
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-for-in
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-for-own
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-foreach
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-foreground-child
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-forever-agent
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-form-data
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-formatio
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-formidable
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-forwarded
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-fragment-cache
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-freetree
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-fresh
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-from
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-fs-dot-notify
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-fs-exists-cached
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-fs-exists-sync
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-fs-ext
ExclusiveArch: %{nodejs_arches}
- nodejs-fs-promise
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-fs-temp
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-fs-vacuum
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-fs-write-stream-atomic
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-fstream
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-fstream-ignore
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-fstream-npm
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-function-bind
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-function-loop
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-gauge
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-gaze
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-gdal
ExclusiveArch: %{nodejs_arches}
- nodejs-generate-function
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-generate-object-property
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-generic-pool
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-get-port
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-get-value
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-getobject
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-git-remote-origin-url
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-git-tails
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-gitconfiglocal
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-github-url-from-git
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-github-url-from-username-repo
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-glob
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-glob-base
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-glob-expand
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-glob-parent
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-glob-to-regexp
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-global-modules
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-global-prefix
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-globals
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-globby
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-globule
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-glogg
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-gnode
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-gonzales-pe
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-graceful-fs
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-graceful-readlink
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-grip
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-growl
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-grunt
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-grunt-banner
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-grunt-cli
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-grunt-compare-size
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-grunt-contrib-clean
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-grunt-contrib-concat
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-grunt-contrib-csslint
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-grunt-contrib-internal
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-grunt-contrib-nodeunit
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-grunt-contrib-uglify
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-grunt-contrib-watch
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-grunt-git-authors
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-grunt-init
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-grunt-known-options
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-grunt-legacy-log
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-grunt-legacy-log-utils
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-grunt-legacy-util
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-grunt-lib-contrib
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-grunt-sed
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-grunt-simple-mocha
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-grunt-wrap
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-gulplog
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-gzip-size
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-handlebars
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-har-validator
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-has
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-has-ansi
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-has-binary
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-has-binary2
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-has-color
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-has-cors
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-has-flag
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-has-glob
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-has-gulplog
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-has-symbols
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-has-unicode
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-has-value
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-has-values
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-has-yarn
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-hash_file
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-hawk
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-heap
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-hex-to-array-buffer
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-highlight-js
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-historic-readline
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-hoek
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-homedir-polyfill
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-hook-std
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-hooker
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-hosted-git-info
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-hsluv
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-htmlparser2
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-http-deceiver
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-http-errors
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-http-signature
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-http2
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-humanize-ms
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-i
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-i18n-transform
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-i2c
ExclusiveArch: %{nodejs_arches}
- nodejs-iconv
ExclusiveArch: %{nodejs_arches}
- nodejs-iconv-lite
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-iferr
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-ignore
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-image-size
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-immutable
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-import-local
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-imul
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-imurmurhash
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-indent-string
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-indexof
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-inflight
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-info-symbol
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-inherit
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-inherits
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-inherits1
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ini
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-int64-buffer
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-intercept-require
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-interpret
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-invert-kv
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ip
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ipaddr-dot-js
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-irc-colors
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-irc-formatting
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-irc-upd
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-irregular-plurals
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-is
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-accessor-descriptor
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-arrayish
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-arrow-function
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-is-boolean-object
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-buffer
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-is-builtin-module
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-callable
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-data-descriptor
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-date-object
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-descriptor
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-dir
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-is-dotfile
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-is-equal-shallow
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-is-error
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-extendable
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-is-extglob
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-is-finite
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-fullwidth-code-point
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-function
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-generator
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-is-generator-fn
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-is-generator-function
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-is-glob
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-is-module
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-my-json-valid
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-negated-glob
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-node
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-number
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-is-number-object
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-is-obj
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-object
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-observable
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-is-odd
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-path-cwd
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-is-path-in-cwd
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-is-path-inside
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-is-plain-obj
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-plain-object
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-primitive
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-is-promise
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-property
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-regex
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-regexp
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-registered
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-relative
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-is-stream
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-string
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-is-subset
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-symbol
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-text-path
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-typedarray
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-unc-path
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-is-url
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-is-utf8
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-valid-glob
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-is-valid-instance
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-windows
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-isarray
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-isexe
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-iso8601
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-isobject
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-isodate
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-isstream
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-istanbul-lib-coverage
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-istanbul-lib-hook
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-istanbul-lib-report
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-istanbul-lib-source-maps
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-istanbul-reports
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-jade
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-jasmine-growl-reporter
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-jasmine-reporters
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-jest-mock
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-jison-lex
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-joose
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-joosex-namespace-depended
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-joosex-simplerequest
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-js-base64
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-js-string-escape
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-js-tokens
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-js-yaml
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-jschardet
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-jscoverage
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-json-diff
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-json-localizer
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-json-parse-helpfulerror
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-json-stable-stringify
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-json-stringify-safe
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-json3
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-jsonfile
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-jsonify
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-jsonm
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-jsonparse
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-jsonpointer
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-jsonpointer-dot-js
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-jsonselect
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-jwt-simple
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-keep-alive-agent
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-keygrip
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-keypress
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-kind-of
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-klaw
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-kuler2gpl
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-lazy-cache
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-lazystream
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-lcid
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-lcov-parse
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-leaflet
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-leaflet-formbuilder
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-leaflet-hash
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-leche
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-left-pad
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-less
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-less-plugin-clean-css
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-levn
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-libpq
ExclusiveArch: %{nodejs_arches}
- nodejs-libxmljs
ExclusiveArch: %{nodejs_arches}
- nodejs-line-numbers
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-line-reader
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-linefix
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-linkify-it
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-load-grunt-tasks
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-locate-character
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-locate-path
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-lockfile
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-log-driver
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-log-ok
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-log-utils
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-lolex
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-long
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-longest
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-loophole
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-loud-rejection
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-lru-cache
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-lru-queue
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-ltx
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-magic-string
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-make-arrow-function
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-make-dir
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-make-error
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-make-generator-function
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-make-node
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-makedir
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-makeerror
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-map-cache
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-map-obj
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-map-visit
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-mapnik
ExclusiveArch: %{nodejs_arches}
- nodejs-mapnik-pool
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-mapnik-vector-tile
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-markdown
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-markdown-it-testgen
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-marked
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-matched
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-max-timeout
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-maxmin
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-mbtiles
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-md5
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-md5-hex
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-md5-o-matic
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-mdn-data
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-mdurl
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-media-typer
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-memoize-path
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-memoizee
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-merge-descriptors
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-metascript
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-methods
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-micromatch
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-millstone
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-mime
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-mime-db
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-mime-types
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-mimeparse
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-minimalistic-assert
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-minimatch
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-minimist
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-minipass
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-mixin-deep
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-mixin-object
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-mkdirp
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-mock-bin
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-mock-fs
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-mock-git
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-modify-values
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-module-not-found-error
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-mongodb
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-mongodb-core
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-monocle
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-morgan
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-ms
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-muffin
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-multimatch
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-multiparty
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-multipipe
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-murmur-32
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-mustache
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-mutate-fs
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-mute-stream
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-mv
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-mysql
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-mz
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-nan
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-nan0
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-nan1
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-nanomatch
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-nanomsg
ExclusiveArch: %{nodejs_arches}
- nodejs-nanoseconds
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ncp
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-needle
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-negative-zero
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-net-browserify-alt
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-netmask
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-next-tick
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-ng-classify
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-node-dot-extend
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-node-expat
ExclusiveArch: %{nodejs_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- nodejs-node-int64
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-node-markdown
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-node-static
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-node-stringprep
ExclusiveArch: %{nodejs_arches}
- nodejs-node-uuid
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-nomnom
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-noncharacters
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-nopt
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-nopt-usage
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-noptify
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-normalize-git-url
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-normalize-path
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-npm-cache-filename
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-npm-install-checks
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-npm-license
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-npm-package-arg
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-npm-run-path
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-npm-user-validate
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-npmlog
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-nth-check
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-number-is-nan
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-numeral
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-oauth
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-oauth-sign
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-oauth2orize
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-object-assign
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-object-copy
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-object-dot-assign
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-object-dot-entries
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-object-dot-omit
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-object-dot-pick
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-object-inspect
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-object-is
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-object-keys
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-object-visit
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-observable-to-promise
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-obuf
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-okay
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-on-finished
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-on-headers
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-once
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-only-shallow
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-opal-runtime
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-open
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-opener
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-option-cache
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-option-chain
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-optionator
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-options
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-optjs
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-opts
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-orchestrator
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-ordered-read-streams
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-os-homedir
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-os-locale
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-os-shim
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-os-tmpdir
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-osenv
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-output-file-sync
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-own-or
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-own-or-env
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-p-finally
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-p-limit
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-p-locate
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-p-try
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-package
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-package-license
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-packaging
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-packet-reader
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-pad
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-pad-left
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-paperboy
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-parallel-transform
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-parse-github-repo-url
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-parse-glob
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-parse-ms
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-parse-passwd
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-parsejson
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-parseqs
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-parseuri
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-parseurl
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-pascalcase
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-passport-http-bearer
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-passport-oauth
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-passport-oauth1
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-passport-oauth2
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-passport-oauth2-client-password
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-passport-strategy
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-path-array
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-path-dirname
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-path-exists
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-path-extra
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-path-is-absolute
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-path-is-inside
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-path-key
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-path-parse
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-path-to-regexp
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-path-type
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-path2
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-pathval
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-pause
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-pbkdf2-password
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-pedding
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-pff
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-pg
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-pg-connection-string
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-pg-cursor
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-pg-escape
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-pg-int8
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-pg-native
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-pg-numeric
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-pg-packet-stream
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-pg-pool
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-pg-types
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-pgpass
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-pinkie
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-pinkie-promise
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-pkg-dir
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-pkg-up
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-pkginfo
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-platform
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-plur
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-posix-character-classes
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-postgres-array
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-postgres-bytea
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-postgres-date
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-postgres-interval
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-precond
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-prelude-ls
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-preserve
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-pretty-bytes
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-pretty-hrtime
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-pretty-ms
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-pretty-time
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-prism-media
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-process-nextick-args
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-proclaim
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-progress
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-progress-stream
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-promise
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-promises-aplus-tests
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-prompt
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-promzard
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-propagate
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-propget
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-proto-list
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-proxy-addr
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-proxyquire
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-pruddy-error
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-pseudomap
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-pubcontrol
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-pump
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-pumpify
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-q
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-q-io
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-qs
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-qtdatastream
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-queue-async
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-quick-lru
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-qunit-extras
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-rainbowsocks
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-random-bytes
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-random-path
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-randomatic
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-range-parser
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-raw-body
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-re-emitter
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-read
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-read-all-stream
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-read-cmd-shim
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-read-file
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-read-json-sync
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-read-package-json
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-read-pkg
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-readable-stream
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-readdir-enhanced
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-readdir-scoped-modules
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-readdirp
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-realize-package-specifier
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-rechoir
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-redent
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-reduce-component
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-regex-cache
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-regex-not
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-remove-trailing-separator
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-repeat-element
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-repeat-string
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-repeating
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-repl
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-replace
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-replace-ext
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-replace-require-self
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-request
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-require-cs
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-require-directory
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-require-inject
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-require-main-filename
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-require-relative
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-require-uncached
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-require-yaml
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-requirejs
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-resolve
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-resolve-cwd
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-resolve-dir
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-resolve-from
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-resolve-pkg
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-resolve-url
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-response-time
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-resumer
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ret
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-retry
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-reusify
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-revalidator
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-rewire
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-rfile
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-rhea
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-right-align
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-rimraf
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-rndm
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-rollup
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-rollup-plugin-buble
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-rollup-plugin-commonjs
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-rollup-plugin-json
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-rollup-plugin-node-resolve
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-rollup-plugin-typescript
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-rollup-pluginutils
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-ronn
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-runforcover
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-safe-buffer
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-safe-json-stringify
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-safe-regex
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-safecb
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-samsam
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-sax
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-secure-random
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-seedrandom
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-select-hose
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-semver
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-sentiment
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-sequencify
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-serialize-error
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-serve-index
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-server-destroy
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-set-blocking
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-set-getter
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-set-immediate
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-set-immediate-shim
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-set-value
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-setimmediate
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-setprototypeof
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-sha
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-shallow-clone
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-shebang-command
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-shebang-regex
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-shelljs
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-shelljs-nodecli
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-should
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-should-equal
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-should-format
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-should-http
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-should-type
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-showdown
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-sift
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-sigmund
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-signal-exit
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-simple-assert
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-simple-asyncify
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-simple-fmt
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-simple-is
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-simple-markdown
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-single-line-log
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-sinon
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-sinon-chai
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-sinon-restore
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-slash
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-sliced
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-slide
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-snapdragon
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-snapdragon-capture
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-snapdragon-capture-set
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-snapdragon-node
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-snapdragon-util
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-snekfetch
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-snockets
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-sntp
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-socket-dot-io-parser
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-sorted-object
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-source-map
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-source-map-fixtures
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-source-map-resolve
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-source-map-support
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-source-map-url
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-sparkles
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-spawn-sync
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-spawn-wrap
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-spdx-exceptions
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-spdx-license-ids
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-spec
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-spec-js
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-speedometer
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-split
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-split-string
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-split2
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-sprintf
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-sprintf-js
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-sqlite3
ExclusiveArch: %{nodejs_arches}
- nodejs-srs
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ssri
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-stable
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-stack-trace
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-stack-utils
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-static-extend
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-static-favicon
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-statuses
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-stream-combiner
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-stream-consume
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-stream-counter
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-stream-each
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-stream-pair
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-stream-replace
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-stream-shift
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-stream-spigot
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-stream-transform
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-streamsearch
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-streamtest
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-string
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-string-dot-prototype-dot-repeat
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-string-dot-prototype-dot-trim
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-string-width
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-string_decoder
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-stringmap
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-stringscanner
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-stringset
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-stringstream
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-strip-ansi
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-strip-bom
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-strip-bom-stream
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-strip-bom-string
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-strip-color
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-strip-eof
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-strip-json-comments
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-strip-path
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-strong-log-transformer
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-success-symbol
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-superagent
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-supertest
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-supervisor
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-supports-color
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-suspend
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-svgo
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-symbol-observable
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-tap
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-tap-mocha-reporter
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-tap-out
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-tap-parser
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-tap-spec
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-tape
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-tapes
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-tar
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-tar-pack
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-temp
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-temp-dir
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-temp-write
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-tempfile
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-temporary
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-tern-cordovajs
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-tern-liferay
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-terst
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-testdata-w3c-json-form
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-testswarm
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-testutil
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-text-extensions
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-text-table
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-thenify
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-thenify-all
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-thread-sleep
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-through
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-through2
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-through2-filter
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-thunkify
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-tildify
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-tilelive-mapnik
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-tiletype
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-time-diff
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-time-stamp
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-timekeeper
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-timers-ext
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-tiny-lr-fork
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-tippex
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-tlds
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-tmatch
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-tmp
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-tmpl
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-to-absolute-glob
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-to-array
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-to-object-path
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-to-regex
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-to-regex-range
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-toidentifier
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-touch
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-tough-cookie
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-tracejs
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-transformers
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-traverse
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-treeify
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-tressa
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-trim
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-trim-newlines
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-trim-off-newlines
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-trivial-deferred
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-try-open
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-try-thread-sleep
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-tryor
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-tsame
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-tslib
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-tsscmp
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-tunnel-agent
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-tv4
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-tweetnacl
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-tweetnacl-util
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-type-check
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-type-detect
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-type-is
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-type-name
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-typeahead.js
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-typescript
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-uc-dot-micro
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-uglify-to-browserify
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-uid-number
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-uid-safe
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-uid2
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-ultron
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-umask
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-unc-path-regex
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-underscore
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-underscore-dot-logger
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-unicode-length
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-union-value
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-unique-filename
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-unique-slug
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-unique-stream
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-unique-temp-dir
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-unpipe
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-unset-value
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-uri-path
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-urix
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-url2
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-use
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-user-home
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-utf8
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-util
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-util-deprecate
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-util-extend
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-util-inspect
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-utilities
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-utils-merge
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-uuid
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-vali-date
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-validate-npm-package-name
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-vasync
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-vhost
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-vlq
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-vow
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-vow-fs
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-vow-queue
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-vows
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-walkdir
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-walker
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ware
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-warning-symbol
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-watchit
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-watershed
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-wbuf
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-wcwidth
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-weak-map
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-websocket-driver
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-when
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-whet-dot-extend
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-which
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-win-spawn
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-window-size
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-winston
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-with
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-wolfy87-eventemitter
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-woothee
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-wordwrap
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-wrap-ansi
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-wrap-fn
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-wrappy
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-write
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-write-file-atomic
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ws
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-xdg-basedir
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-xml2js
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-xmlbuilder
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-xmlhttprequest
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-xmlhttprequest-ssl
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-xtend
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-y18n
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-yallist
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-yapool
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-yargs
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-yargs-parser
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-yarn
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-yeast
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-yn
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-zap
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-zeropad
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-zipfile
ExclusiveArch: %{nodejs_arches}
- nodejs-zlib-browserify
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-zlibjs
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodeunit
ExclusiveArch: %{nodejs_arches} noarch
- notify-sharp
ExclusiveArch: %{mono_arches}
- notify-sharp3
ExclusiveArch: %{mono_arches}
- nuget
ExclusiveArch: %{mono_arches}
- numatop
ExclusiveArch: x86_64 ppc64le
- nunit
ExclusiveArch: %{mono_arches}
- nunit2
ExclusiveArch: %{mono_arches}
- nvml
ExclusiveArch: x86_64 ppc64le
- nwchem
ExclusiveArch: x86_64 %{ix86}
- 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
- oci-umount
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64 ppc64le s390x %{mips}
- ocitools
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- oidn
ExclusiveArch: x86_64
- olpc-kbdshim
ExclusiveArch: %{ix86} %{arm}
- olpc-netutils
ExclusiveArch: %{ix86} %{arm}
- olpc-utils
ExclusiveArch: %{ix86} %{arm}
- onedrive
ExclusiveArch: %{ldc_arches}
- opal-prd
ExclusiveArch: ppc64le
- open-vm-tools
ExclusiveArch: x86_64
ExclusiveArch: %{ix86} x86_64
- openblas
ExclusiveArch: %{openblas_arches}
- openjfx
ExclusiveArch: %{ix86} x86_64
- openlibm
ExclusiveArch: %{arm} %{ix86} x86_64 aarch64 %{power64}
- openni
ExclusiveArch: %{ix86} x86_64 %{arm}
- openni-primesense
ExclusiveArch: %{ix86} x86_64 %{arm}
- 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 %{mips} aarch64 ppc64
- oshinko-cli
ExclusiveArch: %{go_arches}
ExclusiveArch: x86_64 aarch64 ppc64le s390x
- paflib
ExclusiveArch: ppc %{power64}
- pcc
ExclusiveArch: %{ix86} x86_64
- pcmciautils
ExclusiveArch: %{ix86} x86_64 ia64 ppc ppc64 %{arm}
- pdfmod
ExclusiveArch: %mono_arches
- peripety
ExclusiveArch: %{rust_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: i686 x86_64 ia64 aarch64
- pinta
ExclusiveArch: %mono_arches
- pioneer
ExclusiveArch: %{ix86} x86_64
- pmdk-convert
ExclusiveArch: x86_64
- pmemkv
ExclusiveArch: x86_64
- pocl
ExclusiveArch: %{arm} aarch64 %{ix86} x86_64
- 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}
- publican-jboss
ExclusiveArch: i686 x86_64
- pveclib
ExclusiveArch: ppc %{power64}
- pvs-sbcl
ExclusiveArch: %{ix86} x86_64 ppc sparcv9
- pyqtwebengine
ExclusiveArch: %{qt5_qtwebengine_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-rpi-gpio
ExclusiveArch: %{arm} aarch64
- q4wine
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64
- qcint
ExclusiveArch: x86_64
- qclib
ExclusiveArch: s390 s390x
- 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}
ExclusiveArch: x86_64 %{ix86}
- quentier
ExclusiveArch: %{qt5_qtwebengine_arches}
- reactfx
ExclusiveArch: %{ix86} x86_64 noarch
- rear
ExclusiveArch: %ix86 x86_64 ppc ppc64 ppc64le ia64
- redhat-lsb
ExclusiveArch: %{ix86} ia64 x86_64 ppc ppc64 s390 s390x %{arm} aarch64 ppc64le
- reg
ExclusiveArch: x86_64
- renderdoc
ExclusiveArch: %{ix86} x86_64
- reptyr
ExclusiveArch: %{ix86} x86_64 %{arm}
- rescene
ExclusiveArch: %{mono_arches}
- 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
- rpm-ostree
ExclusiveArch: %{rust_arches}
- rr
ExclusiveArch: %{ix86} x86_64
- 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-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-router
ExclusiveArch: %{rust_arches}
- rust-actix-rt
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-actix_derive
ExclusiveArch: %{rust_arches}
- rust-addr2line
ExclusiveArch: %{rust_arches}
- rust-adler32
ExclusiveArch: %{rust_arches}
- rust-aes
ExclusiveArch: %{rust_arches}
- rust-aes-soft
ExclusiveArch: %{rust_arches}
- rust-afterburn
ExclusiveArch: %{rust_arches}
- rust-ahash
ExclusiveArch: %{rust_arches}
- rust-aho-corasick
ExclusiveArch: %{rust_arches}
- rust-alga
ExclusiveArch: %{rust_arches}
- rust-alga_derive
ExclusiveArch: %{rust_arches}
- rust-alloc-no-stdlib
ExclusiveArch: %{rust_arches}
- rust-alloc-stdlib
ExclusiveArch: %{rust_arches}
- rust-alphanumeric-sort
ExclusiveArch: %{rust_arches}
- rust-ammonia
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-aom-sys
ExclusiveArch: %{rust_arches}
- rust-approx
ExclusiveArch: %{rust_arches}
- rust-arbitrary
ExclusiveArch: %{rust_arches}
- rust-arc-swap
ExclusiveArch: %{rust_arches}
- rust-arg_enum_proc_macro
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-ascii
ExclusiveArch: %{rust_arches}
- rust-askalono
ExclusiveArch: %{rust_arches}
- rust-askalono-cli
ExclusiveArch: %{rust_arches}
- rust-assert-json-diff
ExclusiveArch: %{rust_arches}
- rust-assert_matches
ExclusiveArch: %{rust_arches}
- rust-async-attributes
ExclusiveArch: %{rust_arches}
- rust-async-task
ExclusiveArch: %{rust_arches}
- rust-async-trait
ExclusiveArch: %{rust_arches}
- rust-atk
ExclusiveArch: %{rust_arches}
- rust-atk-sys
ExclusiveArch: %{rust_arches}
- rust-atom
ExclusiveArch: %{rust_arches}
- rust-atomicwrites
ExclusiveArch: %{rust_arches}
- rust-atty
ExclusiveArch: %{rust_arches}
- rust-autocfg
ExclusiveArch: %{rust_arches}
- rust-average
ExclusiveArch: %{rust_arches}
- rust-awc
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-bat
ExclusiveArch: %{rust_arches}
- rust-battery
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-bit-set
ExclusiveArch: %{rust_arches}
- rust-bit-vec
ExclusiveArch: %{rust_arches}
- rust-bitflags
ExclusiveArch: %{rust_arches}
- rust-bitmaps
ExclusiveArch: %{rust_arches}
- rust-bitstream-io
ExclusiveArch: %{rust_arches}
- rust-blake2
ExclusiveArch: %{rust_arches}
- rust-blobby
ExclusiveArch: %{rust_arches}
- rust-block-buffer
ExclusiveArch: %{rust_arches}
- rust-block-cipher-trait
ExclusiveArch: %{rust_arches}
- rust-block-modes
ExclusiveArch: %{rust_arches}
- rust-block-padding
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-buf_redux
ExclusiveArch: %{rust_arches}
- rust-bufstream
ExclusiveArch: %{rust_arches}
- rust-build_const
ExclusiveArch: %{rust_arches}
- rust-byte-tools
ExclusiveArch: %{rust_arches}
- rust-byte-unit
ExclusiveArch: %{rust_arches}
- rust-bytecount
ExclusiveArch: %{rust_arches}
- rust-bytemuck
ExclusiveArch: %{rust_arches}
- rust-byteorder
ExclusiveArch: %{rust_arches}
- rust-bytes
ExclusiveArch: %{rust_arches}
- rust-bytes0.3
ExclusiveArch: %{rust_arches}
- rust-bytes0.4
ExclusiveArch: %{rust_arches}
- rust-bytesize
ExclusiveArch: %{rust_arches}
- rust-bytestring
ExclusiveArch: %{rust_arches}
- rust-c2-chacha
ExclusiveArch: %{rust_arches}
- rust-c_vec
ExclusiveArch: %{rust_arches}
- rust-cairo-rs
ExclusiveArch: %{rust_arches}
- rust-cairo-sys-rs
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-platform
ExclusiveArch: %{rust_arches}
- rust-cargo_metadata
ExclusiveArch: %{rust_arches}
- rust-cassowary
ExclusiveArch: %{rust_arches}
- rust-cast
ExclusiveArch: %{rust_arches}
- rust-cbindgen
ExclusiveArch: %{rust_arches}
- rust-cc
ExclusiveArch: %{rust_arches}
- rust-cexpr
ExclusiveArch: %{rust_arches}
- rust-cfg-if
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-chrono
ExclusiveArch: %{rust_arches}
- rust-chrono-humanize
ExclusiveArch: %{rust_arches}
- rust-chrono-tz
ExclusiveArch: %{rust_arches}
- rust-chunked_transfer
ExclusiveArch: %{rust_arches}
- rust-clang-sys
ExclusiveArch: %{rust_arches}
- rust-clap
ExclusiveArch: %{rust_arches}
- rust-clicolors-control
ExclusiveArch: %{rust_arches}
- rust-cmake
ExclusiveArch: %{rust_arches}
- rust-color_quant
ExclusiveArch: %{rust_arches}
- rust-colored
ExclusiveArch: %{rust_arches}
- rust-colored_json
ExclusiveArch: %{rust_arches}
- rust-compiletest_rs
ExclusiveArch: %{rust_arches}
- rust-comrak
ExclusiveArch: %{rust_arches}
- rust-config
ExclusiveArch: %{rust_arches}
- rust-console
ExclusiveArch: %{rust_arches}
- rust-const-random
ExclusiveArch: %{rust_arches}
- rust-const-random-macro
ExclusiveArch: %{rust_arches}
- rust-content_inspector
ExclusiveArch: %{rust_arches}
- rust-conv
ExclusiveArch: %{rust_arches}
- rust-cookie
ExclusiveArch: %{rust_arches}
- rust-cookie_store
ExclusiveArch: %{rust_arches}
- rust-copyless
ExclusiveArch: %{rust_arches}
- rust-coreos-installer
ExclusiveArch: %{rust_arches}
- rust-cpio
ExclusiveArch: %{rust_arches}
- rust-cpp_demangle
ExclusiveArch: %{rust_arches}
- rust-crates-io
ExclusiveArch: %{rust_arches}
- rust-crc
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.3
ExclusiveArch: %{rust_arches}
- rust-crossbeam-deque
ExclusiveArch: %{rust_arches}
- rust-crossbeam-epoch
ExclusiveArch: %{rust_arches}
- rust-crossbeam-queue
ExclusiveArch: %{rust_arches}
- rust-crossbeam-queue0.1
ExclusiveArch: %{rust_arches}
- rust-crossbeam-utils
ExclusiveArch: %{rust_arches}
- rust-crossbeam-utils0.6
ExclusiveArch: %{rust_arches}
- rust-crossterm
ExclusiveArch: %{rust_arches}
- rust-crypto-hash
ExclusiveArch: %{rust_arches}
- rust-crypto-mac
ExclusiveArch: %{rust_arches}
- rust-cryptovec
ExclusiveArch: %{rust_arches}
- rust-cssparser
ExclusiveArch: %{rust_arches}
- rust-cssparser-macros
ExclusiveArch: %{rust_arches}
- rust-csv
ExclusiveArch: %{rust_arches}
- rust-csv-core
ExclusiveArch: %{rust_arches}
- rust-ctrlc
ExclusiveArch: %{rust_arches}
- rust-curl
ExclusiveArch: %{rust_arches}
- rust-curl-sys
ExclusiveArch: %{rust_arches}
- rust-custom_derive
ExclusiveArch: %{rust_arches}
- rust-darling
ExclusiveArch: %{rust_arches}
- rust-darling_core
ExclusiveArch: %{rust_arches}
- rust-darling_macro
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-dbus0.2
ExclusiveArch: %{rust_arches}
- rust-dbus0.6
ExclusiveArch: %{rust_arches}
- rust-decimal
ExclusiveArch: %{rust_arches}
- rust-deflate
ExclusiveArch: %{rust_arches}
- rust-defmac
ExclusiveArch: %{rust_arches}
- rust-delta_e
ExclusiveArch: %{rust_arches}
- rust-derive_builder
ExclusiveArch: %{rust_arches}
- rust-derive_builder_core
ExclusiveArch: %{rust_arches}
- rust-derive_more
ExclusiveArch: %{rust_arches}
- rust-deunicode
ExclusiveArch: %{rust_arches}
- rust-devicemapper
ExclusiveArch: %{rust_arches}
- rust-diff
ExclusiveArch: %{rust_arches}
- rust-difference
ExclusiveArch: %{rust_arches}
- rust-digest
ExclusiveArch: %{rust_arches}
- rust-directories
ExclusiveArch: %{rust_arches}
- rust-dirs
ExclusiveArch: %{rust_arches}
- rust-dirs-sys
ExclusiveArch: %{rust_arches}
- rust-dissimilar
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-downcast-rs
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-dutree
ExclusiveArch: %{rust_arches}
- rust-edit-distance
ExclusiveArch: %{rust_arches}
- rust-either
ExclusiveArch: %{rust_arches}
- rust-elasticlunr-rs
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-entities
ExclusiveArch: %{rust_arches}
- rust-enum-as-inner
ExclusiveArch: %{rust_arches}
- rust-enum_primitive
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-envsubst
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-exa
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-simd
ExclusiveArch: %{rust_arches}
- rust-fake_clock
ExclusiveArch: %{rust_arches}
- rust-fallible-iterator
ExclusiveArch: %{rust_arches}
- rust-fd-find
ExclusiveArch: %{rust_arches}
- rust-fedora-coreos-pinger
ExclusiveArch: %{rust_arches}
- rust-fern
ExclusiveArch: %{rust_arches}
- rust-ffsend
ExclusiveArch: %{rust_arches}
- rust-ffsend-api
ExclusiveArch: %{rust_arches}
- rust-filesize
ExclusiveArch: %{rust_arches}
- rust-filetime
ExclusiveArch: %{rust_arches}
- rust-findshlibs
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-ord
ExclusiveArch: %{rust_arches}
- rust-fnv
ExclusiveArch: %{rust_arches}
- rust-foreign-types
ExclusiveArch: %{rust_arches}
- rust-foreign-types-shared
ExclusiveArch: %{rust_arches}
- rust-fragile
ExclusiveArch: %{rust_arches}
- rust-fs2
ExclusiveArch: %{rust_arches}
- rust-fs_extra
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-macro
ExclusiveArch: %{rust_arches}
- rust-futures-sink
ExclusiveArch: %{rust_arches}
- rust-futures-task
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-generic-array
ExclusiveArch: %{rust_arches}
- rust-getch
ExclusiveArch: %{rust_arches}
- rust-gethostname
ExclusiveArch: %{rust_arches}
- rust-getopts
ExclusiveArch: %{rust_arches}
- rust-getrandom
ExclusiveArch: %{rust_arches}
- rust-gettext-rs
ExclusiveArch: %{rust_arches}
- rust-gettext-sys
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-git2
ExclusiveArch: %{rust_arches}
- rust-git2-curl
ExclusiveArch: %{rust_arches}
- rust-glib
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-gobject-sys
ExclusiveArch: %{rust_arches}
- rust-goblin
ExclusiveArch: %{rust_arches}
- rust-google-drive3-fork
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-gspell
ExclusiveArch: %{rust_arches}
- rust-gspell-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-rs-lgpl-docs
ExclusiveArch: %{rust_arches}
- rust-gtk-source-sys
ExclusiveArch: %{rust_arches}
- rust-gtk-sys
ExclusiveArch: %{rust_arches}
- rust-gzip-header
ExclusiveArch: %{rust_arches}
- rust-h2
ExclusiveArch: %{rust_arches}
- rust-half
ExclusiveArch: %{rust_arches}
- rust-hamcrest
ExclusiveArch: %{rust_arches}
- rust-handlebars
ExclusiveArch: %{rust_arches}
- rust-hashbrown
ExclusiveArch: %{rust_arches}
- rust-hashbrown0.5
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-heck
ExclusiveArch: %{rust_arches}
- rust-hex
ExclusiveArch: %{rust_arches}
- rust-hex-literal
ExclusiveArch: %{rust_arches}
- rust-hex-literal-impl
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-html2pango
ExclusiveArch: %{rust_arches}
- rust-html5ever
ExclusiveArch: %{rust_arches}
- rust-http
ExclusiveArch: %{rust_arches}
- rust-http-body
ExclusiveArch: %{rust_arches}
- rust-http0.1
ExclusiveArch: %{rust_arches}
- rust-httparse
ExclusiveArch: %{rust_arches}
- rust-humansize
ExclusiveArch: %{rust_arches}
- rust-humantime
ExclusiveArch: %{rust_arches}
- rust-humantime1
ExclusiveArch: %{rust_arches}
- rust-hyper
ExclusiveArch: %{rust_arches}
- rust-hyper-native-tls
ExclusiveArch: %{rust_arches}
- rust-hyper-staticfile
ExclusiveArch: %{rust_arches}
- rust-hyper-tls
ExclusiveArch: %{rust_arches}
- rust-hyper0.10
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-imgref
ExclusiveArch: %{rust_arches}
- rust-indexmap
ExclusiveArch: %{rust_arches}
- rust-indicatif
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-interpolate_name
ExclusiveArch: %{rust_arches}
- rust-intervaltree
ExclusiveArch: %{rust_arches}
- rust-iovec
ExclusiveArch: %{rust_arches}
- rust-ipnet
ExclusiveArch: %{rust_arches}
- rust-ipnetwork
ExclusiveArch: %{rust_arches}
- rust-iron
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-itoa
ExclusiveArch: %{rust_arches}
- rust-ivf
ExclusiveArch: %{rust_arches}
- rust-jetscii
ExclusiveArch: %{rust_arches}
- rust-jobserver
ExclusiveArch: %{rust_arches}
- rust-jpeg-decoder
ExclusiveArch: %{rust_arches}
- rust-jql
ExclusiveArch: %{rust_arches}
- rust-json
ExclusiveArch: %{rust_arches}
- rust-jwalk
ExclusiveArch: %{rust_arches}
- rust-kv-log-macro
ExclusiveArch: %{rust_arches}
- rust-lab
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-letter-avatar
ExclusiveArch: %{rust_arches}
- rust-lexical-core
ExclusiveArch: %{rust_arches}
- rust-libc
ExclusiveArch: %{rust_arches}
- rust-libdbus-sys
ExclusiveArch: %{rust_arches}
- rust-libflate
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-libm
ExclusiveArch: %{rust_arches}
- rust-libmount
ExclusiveArch: %{rust_arches}
- rust-liboverdrop
ExclusiveArch: %{rust_arches}
- rust-libpulse-binding
ExclusiveArch: %{rust_arches}
- rust-libpulse-sys
ExclusiveArch: %{rust_arches}
- rust-libssh2-sys
ExclusiveArch: %{rust_arches}
- rust-libsystemd
ExclusiveArch: %{rust_arches}
- rust-libudev
ExclusiveArch: %{rust_arches}
- rust-libudev-sys
ExclusiveArch: %{rust_arches}
- rust-libz-sys
ExclusiveArch: %{rust_arches}
- rust-line-wrap
ExclusiveArch: %{rust_arches}
- rust-linked-hash-map
ExclusiveArch: %{rust_arches}
- rust-linkify
ExclusiveArch: %{rust_arches}
- rust-lipsum
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-log0.3
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-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-matrixmultiply
ExclusiveArch: %{rust_arches}
- rust-maxminddb
ExclusiveArch: %{rust_arches}
- rust-maybe-uninit
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-memoffset
ExclusiveArch: %{rust_arches}
- rust-metadeps
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-miniz-sys
ExclusiveArch: %{rust_arches}
- rust-miniz_oxide
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-mktemp
ExclusiveArch: %{rust_arches}
- rust-mnt
ExclusiveArch: %{rust_arches}
- rust-mockito
ExclusiveArch: %{rust_arches}
- rust-modifier
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-nasm-rs
ExclusiveArch: %{rust_arches}
- rust-native-tls
ExclusiveArch: %{rust_arches}
- rust-natord
ExclusiveArch: %{rust_arches}
- rust-net2
ExclusiveArch: %{rust_arches}
- rust-netmap_sys
ExclusiveArch: %{rust_arches}
- rust-new_debug_unreachable
ExclusiveArch: %{rust_arches}
- rust-newtype_derive
ExclusiveArch: %{rust_arches}
- rust-nickel
ExclusiveArch: %{rust_arches}
- rust-nix
ExclusiveArch: %{rust_arches}
- rust-nix0.14
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-noop_proc_macro
ExclusiveArch: %{rust_arches}
- rust-normalize-line-endings
ExclusiveArch: %{rust_arches}
- rust-notify
ExclusiveArch: %{rust_arches}
- rust-num
ExclusiveArch: %{rust_arches}
- rust-num-bigint
ExclusiveArch: %{rust_arches}
- rust-num-complex
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-traits
ExclusiveArch: %{rust_arches}
- rust-num-traits0.1
ExclusiveArch: %{rust_arches}
- rust-num_cpus
ExclusiveArch: %{rust_arches}
- rust-number_prefix
ExclusiveArch: %{rust_arches}
- rust-numtoa
ExclusiveArch: %{rust_arches}
- rust-object
ExclusiveArch: %{rust_arches}
- rust-odds
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-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-ord_subset
ExclusiveArch: %{rust_arches}
- rust-ordered-float
ExclusiveArch: %{rust_arches}
- rust-os_info
ExclusiveArch: %{rust_arches}
- rust-os_pipe
ExclusiveArch: %{rust_arches}
- rust-osstrtools
ExclusiveArch: %{rust_arches}
- rust-owned-alloc
ExclusiveArch: %{rust_arches}
- rust-owning_ref
ExclusiveArch: %{rust_arches}
- rust-packaging
ExclusiveArch: %{rust_arches}
- rust-pad
ExclusiveArch: %{rust_arches}
- rust-pager
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_lot
ExclusiveArch: %{rust_arches}
- rust-parking_lot_core
ExclusiveArch: %{rust_arches}
- rust-parse-zoneinfo
ExclusiveArch: %{rust_arches}
- rust-partial-io
ExclusiveArch: %{rust_arches}
- rust-paste
ExclusiveArch: %{rust_arches}
- rust-paste-impl
ExclusiveArch: %{rust_arches}
- rust-path-slash
ExclusiveArch: %{rust_arches}
- rust-pathdiff
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-percent-encoding
ExclusiveArch: %{rust_arches}
- rust-percent-encoding1
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-pico-args
ExclusiveArch: %{rust_arches}
- rust-pin-project
ExclusiveArch: %{rust_arches}
- rust-pin-project-internal
ExclusiveArch: %{rust_arches}
- rust-pin-project-lite
ExclusiveArch: %{rust_arches}
- rust-pin-utils
ExclusiveArch: %{rust_arches}
- rust-pkg-config
ExclusiveArch: %{rust_arches}
- rust-plain
ExclusiveArch: %{rust_arches}
- rust-plist
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-ppv-lite86
ExclusiveArch: %{rust_arches}
- rust-precomputed-hash
ExclusiveArch: %{rust_arches}
- rust-predicates-core
ExclusiveArch: %{rust_arches}
- rust-predicates-tree
ExclusiveArch: %{rust_arches}
- rust-pretty-git-prompt
ExclusiveArch: %{rust_arches}
- rust-pretty_assertions
ExclusiveArch: %{rust_arches}
- rust-pretty_env_logger
ExclusiveArch: %{rust_arches}
- rust-prettytable-rs
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-procedural-masquerade
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-protobuf
ExclusiveArch: %{rust_arches}
- rust-protobuf-codegen
ExclusiveArch: %{rust_arches}
- rust-protoc
ExclusiveArch: %{rust_arches}
- rust-protoc-rust
ExclusiveArch: %{rust_arches}
- rust-psm
ExclusiveArch: %{rust_arches}
- rust-publicsuffix
ExclusiveArch: %{rust_arches}
- rust-pulldown-cmark
ExclusiveArch: %{rust_arches}
- rust-pulse
ExclusiveArch: %{rust_arches}
- rust-qr2term
ExclusiveArch: %{rust_arches}
- rust-qrcode
ExclusiveArch: %{rust_arches}
- rust-quick-error
ExclusiveArch: %{rust_arches}
- rust-quickcheck
ExclusiveArch: %{rust_arches}
- rust-quickcheck0.6
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-rand
ExclusiveArch: %{rust_arches}
- rust-rand0.4
ExclusiveArch: %{rust_arches}
- rust-rand0.5
ExclusiveArch: %{rust_arches}
- rust-rand0.6
ExclusiveArch: %{rust_arches}
- rust-rand_chacha
ExclusiveArch: %{rust_arches}
- rust-rand_chacha0.1
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_distr
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_xorshift
ExclusiveArch: %{rust_arches}
- rust-rand_xorshift0.1
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-rawpointer
ExclusiveArch: %{rust_arches}
- rust-rawslice
ExclusiveArch: %{rust_arches}
- rust-rayon
ExclusiveArch: %{rust_arches}
- rust-rayon-core
ExclusiveArch: %{rust_arches}
- rust-recycler
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-relay
ExclusiveArch: %{rust_arches}
- rust-remove_dir_all
ExclusiveArch: %{rust_arches}
- rust-reqwest
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-ripgrep
ExclusiveArch: %{rust_arches}
- rust-rle-decode-fast
ExclusiveArch: %{rust_arches}
- rust-rmp
ExclusiveArch: %{rust_arches}
- rust-rmp-serde
ExclusiveArch: %{rust_arches}
- rust-roff
ExclusiveArch: %{rust_arches}
- rust-ron
ExclusiveArch: %{rust_arches}
- rust-rpassword
ExclusiveArch: %{rust_arches}
- rust-rpick
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-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_version
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-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-safemem
ExclusiveArch: %{rust_arches}
- rust-same-file
ExclusiveArch: %{rust_arches}
- rust-sass-rs
ExclusiveArch: %{rust_arches}
- rust-sass-sys
ExclusiveArch: %{rust_arches}
- rust-scan_fmt
ExclusiveArch: %{rust_arches}
- rust-scoped-tls
ExclusiveArch: %{rust_arches}
- rust-scoped_threadpool
ExclusiveArch: %{rust_arches}
- rust-scopeguard
ExclusiveArch: %{rust_arches}
- rust-scroll
ExclusiveArch: %{rust_arches}
- rust-scroll_derive
ExclusiveArch: %{rust_arches}
- rust-sd
ExclusiveArch: %{rust_arches}
- rust-seahash
ExclusiveArch: %{rust_arches}
- rust-secret-service
ExclusiveArch: %{rust_arches}
- rust-semver
ExclusiveArch: %{rust_arches}
- rust-semver-parser
ExclusiveArch: %{rust_arches}
- rust-semver-parser0.7
ExclusiveArch: %{rust_arches}
- rust-serde
ExclusiveArch: %{rust_arches}
- rust-serde-big-array
ExclusiveArch: %{rust_arches}
- rust-serde-pickle
ExclusiveArch: %{rust_arches}
- rust-serde-xml-rs
ExclusiveArch: %{rust_arches}
- rust-serde_bytes
ExclusiveArch: %{rust_arches}
- rust-serde_cbor
ExclusiveArch: %{rust_arches}
- rust-serde_derive
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_with_macros
ExclusiveArch: %{rust_arches}
- rust-serde_yaml
ExclusiveArch: %{rust_arches}
- rust-sha-1
ExclusiveArch: %{rust_arches}
- rust-sha1
ExclusiveArch: %{rust_arches}
- rust-sha2
ExclusiveArch: %{rust_arches}
- rust-shared_child
ExclusiveArch: %{rust_arches}
- rust-shell-escape
ExclusiveArch: %{rust_arches}
- rust-shell-words
ExclusiveArch: %{rust_arches}
- rust-shlex
ExclusiveArch: %{rust_arches}
- rust-signal-hook
ExclusiveArch: %{rust_arches}
- rust-signal-hook-registry
ExclusiveArch: %{rust_arches}
- rust-silver
ExclusiveArch: %{rust_arches}
- rust-simd_helpers
ExclusiveArch: %{rust_arches}
- rust-simple_logger
ExclusiveArch: %{rust_arches}
- rust-simplelog
ExclusiveArch: %{rust_arches}
- rust-siphasher
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-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-smallvec
ExclusiveArch: %{rust_arches}
- rust-smallvec0.6
ExclusiveArch: %{rust_arches}
- rust-smart-default
ExclusiveArch: %{rust_arches}
- rust-snowflake
ExclusiveArch: %{rust_arches}
- rust-socket2
ExclusiveArch: %{rust_arches}
- rust-sourceview
ExclusiveArch: %{rust_arches}
- rust-spin
ExclusiveArch: %{rust_arches}
- rust-spmc
ExclusiveArch: %{rust_arches}
- rust-stable_deref_trait
ExclusiveArch: %{rust_arches}
- rust-stacker
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-stb_truetype
ExclusiveArch: %{rust_arches}
- rust-stream-cipher
ExclusiveArch: %{rust_arches}
- rust-streaming-stats
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-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-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-sysinfo
ExclusiveArch: %{rust_arches}
- rust-tabwriter
ExclusiveArch: %{rust_arches}
- rust-take
ExclusiveArch: %{rust_arches}
- rust-take_mut
ExclusiveArch: %{rust_arches}
- rust-tar
ExclusiveArch: %{rust_arches}
- rust-target-lexicon
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-tendril
ExclusiveArch: %{rust_arches}
- rust-tera
ExclusiveArch: %{rust_arches}
- rust-term
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-tester
ExclusiveArch: %{rust_arches}
- rust-textwrap
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_local
ExclusiveArch: %{rust_arches}
- rust-threadpool
ExclusiveArch: %{rust_arches}
- rust-tiff
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_http
ExclusiveArch: %{rust_arches}
- rust-tinytemplate
ExclusiveArch: %{rust_arches}
- rust-tokei
ExclusiveArch: %{rust_arches}
- rust-tokio
ExclusiveArch: %{rust_arches}
- rust-tokio-async-await
ExclusiveArch: %{rust_arches}
- rust-tokio-buf
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-mock-task
ExclusiveArch: %{rust_arches}
- rust-tokio-mockstream
ExclusiveArch: %{rust_arches}
- rust-tokio-openssl
ExclusiveArch: %{rust_arches}
- rust-tokio-process
ExclusiveArch: %{rust_arches}
- rust-tokio-reactor
ExclusiveArch: %{rust_arches}
- rust-tokio-service
ExclusiveArch: %{rust_arches}
- rust-tokio-signal
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-trace-core
ExclusiveArch: %{rust_arches}
- rust-tokio-udp
ExclusiveArch: %{rust_arches}
- rust-tokio-uds
ExclusiveArch: %{rust_arches}
- rust-tokio-util
ExclusiveArch: %{rust_arches}
- rust-tokio0.1
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-traitobject
ExclusiveArch: %{rust_arches}
- rust-treebitmap
ExclusiveArch: %{rust_arches}
- rust-treeline
ExclusiveArch: %{rust_arches}
- rust-trust-dns-native-tls
ExclusiveArch: %{rust_arches}
- rust-trust-dns-openssl
ExclusiveArch: %{rust_arches}
- rust-trust-dns-proto
ExclusiveArch: %{rust_arches}
- rust-trust-dns-resolver
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-tui
ExclusiveArch: %{rust_arches}
- rust-tui-react
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-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-normalization
ExclusiveArch: %{rust_arches}
- rust-unicode-segmentation
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-unix_socket
ExclusiveArch: %{rust_arches}
- rust-unreachable
ExclusiveArch: %{rust_arches}
- rust-unsafe-any
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-urlshortener
ExclusiveArch: %{rust_arches}
- rust-users
ExclusiveArch: %{rust_arches}
- rust-utf-8
ExclusiveArch: %{rust_arches}
- rust-utf8-ranges
ExclusiveArch: %{rust_arches}
- rust-utf8parse
ExclusiveArch: %{rust_arches}
- rust-uuid
ExclusiveArch: %{rust_arches}
- rust-uuid0.6
ExclusiveArch: %{rust_arches}
- rust-uuid0.7
ExclusiveArch: %{rust_arches}
- rust-v_escape
ExclusiveArch: %{rust_arches}
- rust-v_escape_derive
ExclusiveArch: %{rust_arches}
- rust-v_htmlescape
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-vec_map
ExclusiveArch: %{rust_arches}
- rust-vergen
ExclusiveArch: %{rust_arches}
- rust-version-compare
ExclusiveArch: %{rust_arches}
- rust-version-sync
ExclusiveArch: %{rust_arches}
- rust-version_check
ExclusiveArch: %{rust_arches}
- rust-void
ExclusiveArch: %{rust_arches}
- rust-vte
ExclusiveArch: %{rust_arches}
- rust-wait-timeout
ExclusiveArch: %{rust_arches}
- rust-walkdir
ExclusiveArch: %{rust_arches}
- rust-want
ExclusiveArch: %{rust_arches}
- rust-warp
ExclusiveArch: %{rust_arches}
- rust-websocket
ExclusiveArch: %{rust_arches}
- rust-websocket-base
ExclusiveArch: %{rust_arches}
- rust-which
ExclusiveArch: %{rust_arches}
- rust-which1
ExclusiveArch: %{rust_arches}
- rust-wild
ExclusiveArch: %{rust_arches}
- rust-ws
ExclusiveArch: %{rust_arches}
- rust-x11
ExclusiveArch: %{rust_arches}
- rust-xattr
ExclusiveArch: %{rust_arches}
- rust-xdg
ExclusiveArch: %{rust_arches}
- rust-xml-rs
ExclusiveArch: %{rust_arches}
- rust-xml5ever
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-zincati
ExclusiveArch: %{rust_arches}
- rust-zoneinfo_compiled
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}
- s390utils
ExclusiveArch: s390 s390x
- safetyblanket
ExclusiveArch: %{arm} %{ix86} x86_64 %{mips} aarch64 ppc64
- 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
- seamonkey
ExclusiveArch: x86_64
- 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
- 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}
- source-to-image
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- sparkleshare
ExclusiveArch: %{mono_arches}
- spicctrl
ExclusiveArch: %{ix86} x86_64
- spice
ExclusiveArch: x86_64
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64
- springlobby
ExclusiveArch: %{ix86} x86_64
- 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}
- stripesnoop
ExclusiveArch: %{ix86} x86_64
- supercollider
ExclusiveArch: %{qt5_qtwebengine_arches}
- supermin
ExclusiveArch: x86_64
- 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
- syslinux
ExclusiveArch: %{ix86} x86_64
ExclusiveArch: %{ix86} x86_64
- taglib-sharp
ExclusiveArch: %{mono_arches}
- tarantool
ExclusiveArch: %{ix86} x86_64 armv7hl armv7hnl
- tboot
ExclusiveArch: %{ix86} x86_64
- tdlib
ExclusiveArch: x86_64
- templates_parser
ExclusiveArch: %GPRbuild_arches
- termy-qt
ExclusiveArch: %{ix86} x86_64
- ternimal
ExclusiveArch: %{rust_arches}
- 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}
- toolbox
ExclusiveArch: aarch64 %{arm} ppc64le s390x 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: %{ix86} x86_64 noarch
- v8-314
ExclusiveArch: %{ix86} x86_64 %{arm} mips mipsel ppc ppc64
- valgrind
ExclusiveArch: %{ix86} x86_64 ppc ppc64 ppc64le s390x armv7hl aarch64
- vapoursynth
ExclusiveArch: %{ix86} x86_64
- vboot-utils
ExclusiveArch: %{arm} aarch64 %{ix86} x86_64
- vim-go
ExclusiveArch: %{?golang_arches}%{!?golang_arches:%{ix86} x86_64 %{arm}}
- virt-p2v
ExclusiveArch: x86_64
- virtualbox-guest-additions
ExclusiveArch: i686 x86_64
- virtualplanet
ExclusiveArch: %{fpc_arches}
- vkd3d
ExclusiveArch: %{ix86} x86_64 %{arm}
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64
- vmaf
ExclusiveArch: x86_64
- vmem
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
- ycssmin
ExclusiveArch: %{nodejs_arches} noarch
- zeromq-ada
ExclusiveArch: %{GPRbuild_arches}
- zlib-ada
ExclusiveArch: %{GPRbuild_arches}
- zola
ExclusiveArch: %{rust_arches}
4 years, 2 months
Architecture specific change in rpms/erlang-sd_notify.git
by githook-noreply@fedoraproject.org
The package rpms/erlang-sd_notify.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/erlang-sd_notify.git/commit/?id=7....
Change:
-ExcludeArch: s390x
Thanks.
Full change:
============
commit 75987cd5638426d315ec6f5268f3e89d3681e322
Author: Peter Lemenkov <lemenkov(a)gmail.com>
Date: Thu Mar 5 21:03:19 2020 +0100
Reenable s390x on F-31
Signed-off-by: Peter Lemenkov <lemenkov(a)gmail.com>
diff --git a/erlang-sd_notify.spec b/erlang-sd_notify.spec
index 920f267..95bbb34 100644
--- a/erlang-sd_notify.spec
+++ b/erlang-sd_notify.spec
@@ -4,7 +4,7 @@
Name: erlang-%{realname}
Version: 1.0
-Release: 14%{?dist}
+Release: 14%{?dist}.1
Summary: Erlang interface to systemd notify subsystem
License: MIT
URL: https://github.com/%{upstream}/erlang-%{realname}
@@ -14,8 +14,6 @@ BuildRequires: erlang-rebar
BuildRequires: gcc
BuildRequires: systemd-devel
-# Remove this when https://bugzilla.redhat.com/show_bug.cgi?id=1770256 is resolved
-ExcludeArch: s390x
%description
%{summary}.
4 years, 2 months