Architecture specific change in rpms/R.git
by githook-noreply@fedoraproject.org
The package rpms/R.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/R.git/commit/?id=2d600e0a99a6db2e....
Change:
-%ifarch x86_64 %{ix86} armv7hl %{power64} aarch64
Thanks.
Full change:
============
commit 2d600e0a99a6db2e8c2ec1cbd0431c117d2c8581
Author: Tom Callaway <spot(a)fedoraproject.org>
Date: Tue Feb 18 17:10:52 2020 -0500
fix openblas conditionals, openblas has wider arch support everywhere except el7
diff --git a/R.spec b/R.spec
index 92de22e..d35655e 100644
--- a/R.spec
+++ b/R.spec
@@ -14,18 +14,22 @@
%endif
%endif
-%ifarch x86_64 %{ix86} armv7hl %{power64} aarch64
-%if 0%{?rhel} >= 7
-%global openblas 1
-%else
-%if 0%{?fedora} >= 23
-%global openblas 1
-%else
-%global openblas 0
-%endif
-%endif
+%if 0%{?rhel} >= 8
+ %global openblas 1
%else
-%global openblas 0
+ %if 0%{?rhel} == 7
+ %ifarch x86_64 %{ix86} armv7hl %{power64} aarch64
+ %global openblas 1
+ %else
+ %global openblas 0
+ %endif
+ %else
+ %if 0%{?fedora}
+ %global openblas 1
+ %else
+ %global openblas 0
+ %endif
+ %endif
%endif
%if 0%{?fedora} >= 31
@@ -141,7 +145,7 @@
Name: R
Version: 3.6.2
-Release: 4%{?dist}
+Release: 5%{?dist}
Summary: A language for data analysis and graphics
URL: http://www.r-project.org
Source0: https://cran.r-project.org/src/base/R-3/R-%{version}.tar.gz
@@ -1233,6 +1237,9 @@ R CMD javareconf \
%{_libdir}/libRmath.a
%changelog
+* Tue Feb 18 2020 Tom Callaway <spot(a)fedoraproject.org> - 3.6.2-5
+- fix openblas conditionals, openblas has wider arch support everywhere except el7
+
* Tue Feb 18 2020 Tom Callaway <spot(a)fedoraproject.org> - 3.6.2-4
- fix conditionals so that Fedora builds against system openblas for lapack/blas
and we only generate the R lapack/blas libs on RHEL 5-6-7 (where system lapack/openblas
commit 85586e3bcf38e6d8e8a7c7612a3281053e571c2c
Merge: 42bfa27 901e950
Author: Tom Callaway <spot(a)fedoraproject.org>
Date: Tue Feb 18 16:29:37 2020 -0500
Merge branch 'master' into epel8
commit 42bfa27a28a7450cf661581e3d934d23e1409a10
Merge: 4ed4310 86fb95a
Author: Tom Callaway <spot(a)fedoraproject.org>
Date: Thu Dec 12 15:06:36 2019 -0500
Merge branch 'master' into epel8
commit 4ed43102969f0a1234c28f62edd44968a79a3d4f
Merge: 0cd0e7c 063aebf
Author: Tom Callaway <spot(a)fedoraproject.org>
Date: Thu Dec 12 12:06:31 2019 -0500
Merge branch 'master' into epel8
commit 0cd0e7c5c855097160458b848c01cfaf0afd9bbf
Merge: ba5b610 02916c0
Author: Tom Callaway <spot(a)fedoraproject.org>
Date: Fri Aug 16 12:28:43 2019 -0400
Merge branch 'master' into epel8
commit ba5b61083ce34c2eef5e08d15f1e58ba7e42ebde
Author: Gwyn Ciesla <gwync(a)protonmail.com>
Date: Thu Aug 15 15:17:08 2019 -0500
"Adding package.cfg file"
diff --git a/package.cfg b/package.cfg
new file mode 100644
index 0000000..66ea79d
--- /dev/null
+++ b/package.cfg
@@ -0,0 +1,2 @@
+[koji]
+targets = epel8 epel8-playground
\ No newline at end of file
4 years, 3 months
Architecture specific change in rpms/cockpit.git
by githook-noreply@fedoraproject.org
The package rpms/cockpit.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/cockpit.git/commit/?id=9f4b923de9....
Change:
-%ifarch x86_64 %{arm} aarch64 ppc64le i686 s390x
Thanks.
Full change:
============
commit 9f4b923de93b858a837841e0adc3c4dc5c1b4e2f
Author: Cockpit Project <cockpituous(a)gmail.com>
Date: Wed Feb 19 12:22:22 2020 +0000
Update to 213-1
- Inline documentation
- Support for transient virtual machines
- UEFI for virtual machines
- Unattended virtual machines installation
diff --git a/.gitignore b/.gitignore
index 4304a7c..d1c1716 100644
--- a/.gitignore
+++ b/.gitignore
@@ -172,3 +172,4 @@
/cockpit-211.tar.xz
/cockpit-211.1.tar.xz
/cockpit-212.tar.xz
+/cockpit-213.tar.xz
diff --git a/cockpit.spec b/cockpit.spec
index b4cf534..42db6d9 100644
--- a/cockpit.spec
+++ b/cockpit.spec
@@ -1,5 +1,5 @@
# This spec file has been automatically updated
-Version: 212
+Version: 213
Release: 1%{?dist}
#
# This file is maintained at the following location:
@@ -204,15 +204,17 @@ echo '%dir %{_datadir}/cockpit/playground' > tests.list
find %{buildroot}%{_datadir}/cockpit/playground -type f >> tests.list
%ifarch x86_64 %{arm} aarch64 ppc64le i686 s390x
-%if 0%{?fedora}
+%if 0%{?fedora} && 0%{?build_optional}
+%define build_docker 1
+%endif
+%endif
+
+%if 0%{?build_docker}
echo '%dir %{_datadir}/cockpit/docker' > docker.list
find %{buildroot}%{_datadir}/cockpit/docker -type f >> docker.list
%else
rm -rf %{buildroot}/%{_datadir}/cockpit/docker
-touch docker.list
-%endif
-%else
-rm -rf %{buildroot}/%{_datadir}/cockpit/docker
+rm -f %{buildroot}/%{_prefix}/share/metainfo/org.cockpit-project.cockpit-docker.metainfo.xml
touch docker.list
%endif
@@ -250,6 +252,8 @@ rm -r %{buildroot}/%{_libexecdir}/cockpit-pcp %{buildroot}/%{_localstatedir}/lib
rm -f %{buildroot}/%{_prefix}/share/metainfo/org.cockpit-project.cockpit-machines.metainfo.xml
# files from -storaged
rm -f %{buildroot}/%{_prefix}/share/metainfo/org.cockpit-project.cockpit-storaged.metainfo.xml
+# files from -docker
+rm -f %{buildroot}/%{_prefix}/share/metainfo/org.cockpit-project.cockpit-docker.metainfo.xml
%endif
sed -i "s|%{buildroot}||" *.list
@@ -626,8 +630,7 @@ bastion hosts, and a basic dashboard.
%endif
-%ifarch x86_64 %{arm} aarch64 ppc64le i686 s390x
-%if 0%{?fedora}
+%if 0%{?build_docker}
%package -n cockpit-docker
Summary: Cockpit user interface for Docker containers
Requires: cockpit-bridge >= 122
@@ -640,8 +643,7 @@ The Cockpit components for interacting with Docker and user interface.
This package is not yet complete.
%files -n cockpit-docker -f docker.list
-
-%endif
+%{_datadir}/metainfo/org.cockpit-project.cockpit-docker.metainfo.xml
%endif
%package -n cockpit-packagekit
@@ -660,6 +662,13 @@ via PackageKit.
# The changelog is automatically generated and merged
%changelog
+* Wed Feb 19 2020 Marius Vollmer <mvollmer(a)redhat.com> - 213-1
+
+- Inline documentation
+- Support for transient virtual machines
+- UEFI for virtual machines
+- Unattended virtual machines installation
+
* Wed Feb 05 2020 sanne raymaekers <sanne.raymaekers(a)gmail.com> - 212-1
- Per page documentation
diff --git a/sources b/sources
index 1153db7..8053807 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-SHA512 (cockpit-212.tar.xz) = 6aa8dde69c3a05a9a9fe9fca6abcfbe27ff6c911bcd141d43eae4c1727b2e36afc48e3d8675792bd31ccf087eaa33596672499fbd4dd0f84f5ac0fd7eef235a8
+SHA512 (cockpit-213.tar.xz) = ea3b13c6bccb9998272b393ea76ac32c743935cb4c631736937b103cdb325b0f34750ae2a980366994fab3cb21d3fca2acfd04e18d185bb684ef962d7cdaed97
4 years, 3 months
Architecture specific change in rpms/cockpit.git
by githook-noreply@fedoraproject.org
The package rpms/cockpit.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/cockpit.git/commit/?id=910c003b4b....
Change:
-%ifarch x86_64 %{arm} aarch64 ppc64le i686 s390x
Thanks.
Full change:
============
commit 910c003b4b754f866e50a894e50e3f26871bc444
Author: Cockpit Project <cockpituous(a)gmail.com>
Date: Wed Feb 19 12:17:02 2020 +0000
Update to 213-1
- Inline documentation
- Support for transient virtual machines
- UEFI for virtual machines
- Unattended virtual machines installation
diff --git a/.gitignore b/.gitignore
index 0ea2de3..2bc47d9 100644
--- a/.gitignore
+++ b/.gitignore
@@ -169,3 +169,4 @@
/cockpit-211.tar.xz
/cockpit-211.1.tar.xz
/cockpit-212.tar.xz
+/cockpit-213.tar.xz
diff --git a/cockpit.spec b/cockpit.spec
index 945649c..27246d7 100644
--- a/cockpit.spec
+++ b/cockpit.spec
@@ -1,5 +1,5 @@
# This spec file has been automatically updated
-Version: 212
+Version: 213
Release: 1%{?dist}
#
# This file is maintained at the following location:
@@ -204,15 +204,17 @@ echo '%dir %{_datadir}/cockpit/playground' > tests.list
find %{buildroot}%{_datadir}/cockpit/playground -type f >> tests.list
%ifarch x86_64 %{arm} aarch64 ppc64le i686 s390x
-%if 0%{?fedora}
+%if 0%{?fedora} && 0%{?build_optional}
+%define build_docker 1
+%endif
+%endif
+
+%if 0%{?build_docker}
echo '%dir %{_datadir}/cockpit/docker' > docker.list
find %{buildroot}%{_datadir}/cockpit/docker -type f >> docker.list
%else
rm -rf %{buildroot}/%{_datadir}/cockpit/docker
-touch docker.list
-%endif
-%else
-rm -rf %{buildroot}/%{_datadir}/cockpit/docker
+rm -f %{buildroot}/%{_prefix}/share/metainfo/org.cockpit-project.cockpit-docker.metainfo.xml
touch docker.list
%endif
@@ -250,6 +252,8 @@ rm -r %{buildroot}/%{_libexecdir}/cockpit-pcp %{buildroot}/%{_localstatedir}/lib
rm -f %{buildroot}/%{_prefix}/share/metainfo/org.cockpit-project.cockpit-machines.metainfo.xml
# files from -storaged
rm -f %{buildroot}/%{_prefix}/share/metainfo/org.cockpit-project.cockpit-storaged.metainfo.xml
+# files from -docker
+rm -f %{buildroot}/%{_prefix}/share/metainfo/org.cockpit-project.cockpit-docker.metainfo.xml
%endif
sed -i "s|%{buildroot}||" *.list
@@ -626,8 +630,7 @@ bastion hosts, and a basic dashboard.
%endif
-%ifarch x86_64 %{arm} aarch64 ppc64le i686 s390x
-%if 0%{?fedora}
+%if 0%{?build_docker}
%package -n cockpit-docker
Summary: Cockpit user interface for Docker containers
Requires: cockpit-bridge >= 122
@@ -640,8 +643,7 @@ The Cockpit components for interacting with Docker and user interface.
This package is not yet complete.
%files -n cockpit-docker -f docker.list
-
-%endif
+%{_datadir}/metainfo/org.cockpit-project.cockpit-docker.metainfo.xml
%endif
%package -n cockpit-packagekit
@@ -660,6 +662,13 @@ via PackageKit.
# The changelog is automatically generated and merged
%changelog
+* Wed Feb 19 2020 Marius Vollmer <mvollmer(a)redhat.com> - 213-1
+
+- Inline documentation
+- Support for transient virtual machines
+- UEFI for virtual machines
+- Unattended virtual machines installation
+
* Wed Feb 05 2020 sanne raymaekers <sanne.raymaekers(a)gmail.com> - 212-1
- Per page documentation
diff --git a/sources b/sources
index 1153db7..8053807 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-SHA512 (cockpit-212.tar.xz) = 6aa8dde69c3a05a9a9fe9fca6abcfbe27ff6c911bcd141d43eae4c1727b2e36afc48e3d8675792bd31ccf087eaa33596672499fbd4dd0f84f5ac0fd7eef235a8
+SHA512 (cockpit-213.tar.xz) = ea3b13c6bccb9998272b393ea76ac32c743935cb4c631736937b103cdb325b0f34750ae2a980366994fab3cb21d3fca2acfd04e18d185bb684ef962d7cdaed97
4 years, 3 months
[Report] Packages Restricting Arches
by root
New package excluding arches (10)
============================
- rust-anyhow
ExclusiveArch: %{rust_arches}
- rust-getch
ExclusiveArch: %{rust_arches}
- rust-process_path
ExclusiveArch: %{rust_arches}
- rust-procfs
ExclusiveArch: %{rust_arches}
- rust-procs
ExclusiveArch: %{rust_arches}
- rust-random-fast-rng
ExclusiveArch: %{rust_arches}
- rust-sluice
ExclusiveArch: %{rust_arches}
- rust-smallvec0.6
ExclusiveArch: %{rust_arches}
- rust-thiserror
ExclusiveArch: %{rust_arches}
- rust-thiserror-impl
ExclusiveArch: %{rust_arches}
List of packages currently excluding arches (2729)
===========================================
- 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
- 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
- exciting
ExclusiveArch: x86_64 %{ix86}
ExclusiveArch: x86_64 %{ix86} aarch64 %{power64}
ExclusiveArch: x86_64 %{ix86} aarch64 %{arm} %{power64}
- 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-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-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
- 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-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_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-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-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-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-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-jwalk
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-lexical-core0.4
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-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-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-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-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-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-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-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_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-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-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-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 %{arm} %{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: %{ix86} 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
- 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
- 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, 3 months
Architecture specific change in rpms/pesign.git
by githook-noreply@fedoraproject.org
The package rpms/pesign.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/pesign.git/commit/?id=f45e45d1276...
https://src.fedoraproject.org/cgit/rpms/pesign.git/commit/?id=6ef5e2d1792....
Change:
-ExclusiveArch: %{ix86} x86_64 ia64 aarch64 %{arm}
+ExclusiveArch: %{ix86} x86_64 ia64 aarch64 %{arm}
Thanks.
Full change:
============
commit 6a21c3cf8a8cc92001c0a7fde08bd197dce84d6e
Author: Peter Jones <pjones(a)redhat.com>
Date: Tue Feb 18 17:33:22 2020 -0500
Backport a minor fix.
Signed-off-by: Peter Jones <pjones(a)redhat.com>
diff --git a/0031-pesigcheck-Fix-a-wrong-assignment.patch b/0031-pesigcheck-Fix-a-wrong-assignment.patch
new file mode 100644
index 0000000..7df5f0b
--- /dev/null
+++ b/0031-pesigcheck-Fix-a-wrong-assignment.patch
@@ -0,0 +1,49 @@
+From c555fd74c009242c3864576bd5f17a1f8f4fdffd Mon Sep 17 00:00:00 2001
+From: Peter Jones <pjones(a)redhat.com>
+Date: Tue, 18 Feb 2020 16:28:56 -0500
+Subject: [PATCH] pesigcheck: Fix a wrong assignment
+
+gcc says:
+
+ pesigcheck.c: In function 'check_signature':
+ pesigcheck.c:321:17: error: implicit conversion from 'enum <anonymous>' to 'enum <anonymous>' [-Werror=enum-conversion]
+ 321 | reason->type = siBuffer;
+ | ^
+ pesigcheck.c:333:17: error: implicit conversion from 'enum <anonymous>' to 'enum <anonymous>' [-Werror=enum-conversion]
+ 333 | reason->type = siBuffer;
+ | ^
+ cc1: all warnings being treated as errors
+
+And indeed, that line of code makes no sense at all - it was supposed to
+be reason->sig.type.
+
+Signed-off-by: Peter Jones <pjones(a)redhat.com>
+---
+ src/pesigcheck.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/src/pesigcheck.c b/src/pesigcheck.c
+index 524cce307bf..8fa0f1ad03d 100644
+--- a/src/pesigcheck.c
++++ b/src/pesigcheck.c
+@@ -318,7 +318,7 @@ check_signature(pesigcheck_context *ctx, int *nreasons,
+ reason->type = SIGNATURE;
+ reason->sig.data = data;
+ reason->sig.len = datalen;
+- reason->type = siBuffer;
++ reason->sig.type = siBuffer;
+ nreason += 1;
+ is_invalid = true;
+ }
+@@ -330,7 +330,7 @@ check_signature(pesigcheck_context *ctx, int *nreasons,
+ reason->type = SIGNATURE;
+ reason->sig.data = data;
+ reason->sig.len = datalen;
+- reason->type = siBuffer;
++ reason->sig.type = siBuffer;
+ nreason += 1;
+ has_valid_cert = true;
+ }
+--
+2.24.1
+
diff --git a/pesign.spec b/pesign.spec
index c29c84f..4a74aa2 100644
--- a/pesign.spec
+++ b/pesign.spec
@@ -71,6 +71,7 @@ Patch0027: 0027-Make-pesign-users-groups-static-in-the-repo.patch
Patch0028: 0028-rpm-Make-the-client-signer-use-the-fedora-values-unl.patch
Patch0029: 0029-Make-macros.pesign-error-in-kojibuilder-if-we-don-t-.patch
Patch0030: 0030-efikeygen-Fix-the-build-with-nss-3.44.patch
+Patch0031: 0031-pesigcheck-Fix-a-wrong-assignment.patch
%description
This package contains the pesign utility for signing UEFI binaries as
commit f4cb5bfd7e6f20dbae8c9e8accdc0b96a9b81caa
Author: Peter Jones <pjones(a)redhat.com>
Date: Tue Feb 18 17:27:22 2020 -0500
Rebuild to match OpenSC's token name mangling change.
Signed-off-by: Peter Jones <pjones(a)redhat.com>
diff --git a/pesign.spec b/pesign.spec
index 134921a..c29c84f 100644
--- a/pesign.spec
+++ b/pesign.spec
@@ -3,7 +3,7 @@
Name: pesign
Summary: Signing utility for UEFI binaries
Version: 0.112
-Release: 28%{?dist}
+Release: 29%{?dist}
License: GPLv2
URL: https://github.com/vathpela/pesign
@@ -178,6 +178,9 @@ exit 0
%{python3_sitelib}/mockbuild/plugins/pesign.*
%changelog
+* Tue Feb 18 2020 Peter Jones <pjones(a)redhat.com> - 0.112-29
+- Rebuild to match OpenSC's token name mangling change.
+
* Thu Jan 30 2020 Fedora Release Engineering <releng(a)fedoraproject.org> - 0.112-28
- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
commit e9b8bb75770e1636cb8ee22ceb7f4072ca8ae91e
Author: Jeremy Cline <jcline(a)redhat.com>
Date: Tue Feb 18 16:37:53 2020 -0500
pesign: Apparently opensc got updated and the token name changed
All the kernel builds started failing yesterday because the signing
token could not be found. Update the token name in the macro shipped by
pesign.
diff --git a/0028-rpm-Make-the-client-signer-use-the-fedora-values-unl.patch b/0028-rpm-Make-the-client-signer-use-the-fedora-values-unl.patch
index 3f0b2e1..793fe6c 100644
--- a/0028-rpm-Make-the-client-signer-use-the-fedora-values-unl.patch
+++ b/0028-rpm-Make-the-client-signer-use-the-fedora-values-unl.patch
@@ -17,7 +17,7 @@ index 69280e9..22a3ee6 100644
%__pesign_token %{nil}%{?pe_signing_token:-t "%{pe_signing_token}"}
%__pesign_cert %{!?pe_signing_cert:"Red Hat Test Certificate"}%{?pe_signing_cert:"%{pe_signing_cert}"}
-+%__pesign_client_token %{!?pe_signing_token:"Fedora Signer (OpenSC Card)"}%{?pe_signing_token:"%{pe_signing_token}"}
++%__pesign_client_token %{!?pe_signing_token:"OpenSC Card (Fedora Signer)"}%{?pe_signing_token:"%{pe_signing_token}"}
+%__pesign_client_cert %{!?pe_signing_cert:"/CN=Fedora Secure Boot Signer"}%{?pe_signing_cert:"%{pe_signing_cert}"}
+
%_pesign /usr/bin/pesign
commit 6666916c129cdc783cdd3f570fef81a43b19f228
Author: Fedora Release Engineering <releng(a)fedoraproject.org>
Date: Thu Jan 30 06:39:31 2020 +0000
- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng(a)fedoraproject.org>
diff --git a/pesign.spec b/pesign.spec
index 50420aa..134921a 100644
--- a/pesign.spec
+++ b/pesign.spec
@@ -3,7 +3,7 @@
Name: pesign
Summary: Signing utility for UEFI binaries
Version: 0.112
-Release: 27%{?dist}
+Release: 28%{?dist}
License: GPLv2
URL: https://github.com/vathpela/pesign
@@ -178,6 +178,9 @@ exit 0
%{python3_sitelib}/mockbuild/plugins/pesign.*
%changelog
+* Thu Jan 30 2020 Fedora Release Engineering <releng(a)fedoraproject.org> - 0.112-28
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
+
* Tue Nov 12 2019 Peter Jones <pjones(a)redhat.com> - 0.112-27
- Rebuild to fix an NSS API issue.
commit e8c65c74be12a2f8a76e9bb55cc90911738a3d61
Author: Peter Jones <pjones(a)redhat.com>
Date: Tue Nov 12 13:15:28 2019 -0500
Rebuild to fix an NSS API issue.
Signed-off-by: Peter Jones <pjones(a)redhat.com>
diff --git a/0030-efikeygen-Fix-the-build-with-nss-3.44.patch b/0030-efikeygen-Fix-the-build-with-nss-3.44.patch
new file mode 100644
index 0000000..e583369
--- /dev/null
+++ b/0030-efikeygen-Fix-the-build-with-nss-3.44.patch
@@ -0,0 +1,45 @@
+From b535d1ac5cbcdf18a97d97a92581e38080d9e521 Mon Sep 17 00:00:00 2001
+From: Peter Jones <pjones(a)redhat.com>
+Date: Tue, 14 May 2019 11:28:38 -0400
+Subject: [PATCH] efikeygen: Fix the build with nss 3.44
+
+NSS 3.44 adds some certificate types, which changes a type and makes
+some encoding stuff weird. As a result, we get:
+
+gcc8 -I/wrkdirs/usr/ports/sysutils/pesign/work/pesign-0.110/include -O2 -pipe -fstack-protector-strong -Wl,-rpath=/usr/local/lib/gcc8 -isystem /usr/local/include -fno-strict-aliasing -g -O0 -g -O0 -Wall -fshort-wchar -fno-strict-aliasing -fno-merge-constants --std=gnu99 -D_GNU_SOURCE -Wno-unused-result -Wno-unused-function -I../include/ -I/usr/local/include/nss -I/usr/local/include/nss/nss -I/usr/local/include/nspr -Werror -fPIC -isystem /usr/local/include -DCONFIG_amd64 -DCONFIG_amd64 -c efikeygen.c -o efikeygen.o
+In file included from /usr/local/include/nss/nss/cert.h:22,
+ from efikeygen.c:39:
+efikeygen.c: In function 'add_cert_type':
+/usr/local/include/nss/nss/certt.h:445:5: error: unsigned conversion from 'int' to 'unsigned char' changes value from '496' to '240' [-Werror=overflow]
+ (NS_CERT_TYPE_SSL_CLIENT | NS_CERT_TYPE_SSL_SERVER | NS_CERT_TYPE_EMAIL | \
+ ^
+efikeygen.c:208:23: note: in expansion of macro 'NS_CERT_TYPE_APP'
+ unsigned char type = NS_CERT_TYPE_APP;
+ ^~~~~~~~~~~~~~~~
+cc1: all warnings being treated as errors
+
+This is fixed by just making it an int.
+
+Fixes github issue #48.
+
+Signed-off-by: Peter Jones <pjones(a)redhat.com>
+---
+ src/efikeygen.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/efikeygen.c b/src/efikeygen.c
+index ede76ef0b48..2cd953e9781 100644
+--- a/src/efikeygen.c
++++ b/src/efikeygen.c
+@@ -208,7 +208,7 @@ static int
+ add_cert_type(cms_context *cms, void *extHandle, int is_ca)
+ {
+ SECItem bitStringValue;
+- unsigned char type = NS_CERT_TYPE_APP;
++ int type = NS_CERT_TYPE_APP;
+
+ if (is_ca)
+ type |= NS_CERT_TYPE_SSL_CA |
+--
+2.23.0
+
diff --git a/pesign.spec b/pesign.spec
index 0d6ce00..50420aa 100644
--- a/pesign.spec
+++ b/pesign.spec
@@ -3,7 +3,7 @@
Name: pesign
Summary: Signing utility for UEFI binaries
Version: 0.112
-Release: 26%{?dist}
+Release: 27%{?dist}
License: GPLv2
URL: https://github.com/vathpela/pesign
@@ -70,6 +70,7 @@ Patch0026: 0026-Clean-up-gcc-command-lines-a-little.patch
Patch0027: 0027-Make-pesign-users-groups-static-in-the-repo.patch
Patch0028: 0028-rpm-Make-the-client-signer-use-the-fedora-values-unl.patch
Patch0029: 0029-Make-macros.pesign-error-in-kojibuilder-if-we-don-t-.patch
+Patch0030: 0030-efikeygen-Fix-the-build-with-nss-3.44.patch
%description
This package contains the pesign utility for signing UEFI binaries as
@@ -177,6 +178,9 @@ exit 0
%{python3_sitelib}/mockbuild/plugins/pesign.*
%changelog
+* Tue Nov 12 2019 Peter Jones <pjones(a)redhat.com> - 0.112-27
+- Rebuild to fix an NSS API issue.
+
* Fri Jul 26 2019 Fedora Release Engineering <releng(a)fedoraproject.org> - 0.112-26
- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
commit 6ef5e2d179297fe39abd9e8049c3bedfcc844576
Author: Igor Gnatenko <ignatenkobrain(a)fedoraproject.org>
Date: Mon Aug 12 17:36:50 2019 +0200
Revert "pesign fails to build from source: https://bugzilla.redhat.com/show_bug.cgi?id=1675653"
This reverts commit f45e45d1276f29c56739d6aa6e33f79ffac37abe.
References: https://pagure.io/releng/issue/8618
Signed-off-by: Igor Gnatenko <ignatenkobrain(a)fedoraproject.org>
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..56f099b
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,7 @@
+/pesign-*.tar.bz2
+clog
+/rh-test-certs.tar.bz2
+*.rpm
+/certs.tar.xz
+.build*.log
+/pesign-*/
diff --git a/0001-cms-kill-generate_integer-it-doesn-t-build-on-i686-a.patch b/0001-cms-kill-generate_integer-it-doesn-t-build-on-i686-a.patch
new file mode 100644
index 0000000..0c82dcf
--- /dev/null
+++ b/0001-cms-kill-generate_integer-it-doesn-t-build-on-i686-a.patch
@@ -0,0 +1,72 @@
+From 33bcca8303cad962606df3bfc6a031a9b0626375 Mon Sep 17 00:00:00 2001
+From: Peter Jones <pjones(a)redhat.com>
+Date: Thu, 21 Apr 2016 10:47:34 -0400
+Subject: [PATCH 01/29] cms: kill generate_integer(), it doesn't build on i686
+ and it's unused.
+
+Signed-off-by: Peter Jones <pjones(a)redhat.com>
+---
+ src/cms_common.c | 34 ----------------------------------
+ src/cms_common.h | 1 -
+ 2 files changed, 35 deletions(-)
+
+diff --git a/src/cms_common.c b/src/cms_common.c
+index b19bc62..6a4e6a7 100644
+--- a/src/cms_common.c
++++ b/src/cms_common.c
+@@ -641,40 +641,6 @@ generate_string(cms_context *cms, SECItem *der, char *str)
+ return 0;
+ }
+
+-static SEC_ASN1Template IntegerTemplate[] = {
+- {.kind = SEC_ASN1_INTEGER,
+- .offset = 0,
+- .sub = NULL,
+- .size = sizeof(long),
+- },
+- { 0 },
+-};
+-
+-int
+-generate_integer(cms_context *cms, SECItem *der, unsigned long integer)
+-{
+- void *ret;
+-
+- uint32_t u32;
+-
+- SECItem input = {
+- .data = (void *)&integer,
+- .len = sizeof(integer),
+- .type = siUnsignedInteger,
+- };
+-
+- if (integer < 0x100000000) {
+- u32 = integer & 0xffffffffUL;
+- input.data = (void *)&u32;
+- input.len = sizeof(u32);
+- }
+-
+- ret = SEC_ASN1EncodeItem(cms->arena, der, &input, IntegerTemplate);
+- if (ret == NULL)
+- cmsreterr(-1, cms, "could not encode data");
+- return 0;
+-}
+-
+ int
+ generate_time(cms_context *cms, SECItem *encoded, time_t when)
+ {
+diff --git a/src/cms_common.h b/src/cms_common.h
+index 7d77faf..c7d7268 100644
+--- a/src/cms_common.h
++++ b/src/cms_common.h
+@@ -117,7 +117,6 @@ extern int generate_object_id(cms_context *ctx, SECItem *encoded,
+ SECOidTag tag);
+ extern int generate_empty_sequence(cms_context *ctx, SECItem *encoded);
+ extern int generate_time(cms_context *ctx, SECItem *encoded, time_t when);
+-extern int generate_integer(cms_context *cms, SECItem *der, unsigned long integer);
+ extern int generate_string(cms_context *cms, SECItem *der, char *str);
+ extern int wrap_in_set(cms_context *cms, SECItem *der, SECItem **items);
+ extern int wrap_in_seq(cms_context *cms, SECItem *der,
+--
+2.13.4
+
diff --git a/0002-Fix-command-line-parsing.patch b/0002-Fix-command-line-parsing.patch
new file mode 100644
index 0000000..9c03eeb
--- /dev/null
+++ b/0002-Fix-command-line-parsing.patch
@@ -0,0 +1,73 @@
+From 5be0515dee24308fd7e270bf2e0fb5e5a7a78f32 Mon Sep 17 00:00:00 2001
+From: Julien Cristau <jcristau(a)debian.org>
+Date: Thu, 9 Jun 2016 14:30:37 +0200
+Subject: [PATCH 02/29] Fix command line parsing
+
+The gettext translation domain should be passed as .arg, not .descrip,
+otherwise popt won't process any of the command line options (it stops
+looping over the struct poptOption array when an entry has unset
+longName, shortName and arg).
+
+Signed-off-by: Julien Cristau <jcristau(a)debian.org>
+---
+ src/client.c | 2 +-
+ src/efikeygen.c | 2 +-
+ src/efisiglist.c | 2 +-
+ src/pesigcheck.c | 2 +-
+ 4 files changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/src/client.c b/src/client.c
+index 028419f..575c873 100644
+--- a/src/client.c
++++ b/src/client.c
+@@ -555,7 +555,7 @@ main(int argc, char *argv[])
+
+ struct poptOption options[] = {
+ {.argInfo = POPT_ARG_INTL_DOMAIN,
+- .descrip = "pesign" },
++ .arg = "pesign" },
+ {.longName = "token",
+ .shortName = 't',
+ .argInfo = POPT_ARG_STRING|POPT_ARGFLAG_SHOW_DEFAULT,
+diff --git a/src/efikeygen.c b/src/efikeygen.c
+index 6278849..8a515a5 100644
+--- a/src/efikeygen.c
++++ b/src/efikeygen.c
+@@ -486,7 +486,7 @@ int main(int argc, char *argv[])
+ poptContext optCon;
+ struct poptOption options[] = {
+ {.argInfo = POPT_ARG_INTL_DOMAIN,
+- .descrip = "pesign" },
++ .arg = "pesign" },
+ /* global nss-ish things */
+ {.longName = "dbdir",
+ .shortName = 'd',
+diff --git a/src/efisiglist.c b/src/efisiglist.c
+index cd3f1ae..40d6a93 100644
+--- a/src/efisiglist.c
++++ b/src/efisiglist.c
+@@ -126,7 +126,7 @@ main(int argc, char *argv[])
+
+ struct poptOption options[] = {
+ {.argInfo = POPT_ARG_INTL_DOMAIN,
+- .descrip = "pesign" },
++ .arg = "pesign" },
+ {.longName = "infile",
+ .shortName = 'i',
+ .argInfo = POPT_ARG_STRING,
+diff --git a/src/pesigcheck.c b/src/pesigcheck.c
+index 1328fe9..0d49c1a 100644
+--- a/src/pesigcheck.c
++++ b/src/pesigcheck.c
+@@ -214,7 +214,7 @@ main(int argc, char *argv[])
+ poptContext optCon;
+ struct poptOption options[] = {
+ {.argInfo = POPT_ARG_INTL_DOMAIN,
+- .descrip = "pesign" },
++ .arg = "pesign" },
+ {.longName = "dbfile",
+ .shortName = 'D',
+ .argInfo = POPT_ARG_CALLBACK|POPT_CBFLAG_POST,
+--
+2.13.4
+
diff --git a/0003-gcc-don-t-error-on-stuff-in-includes.patch b/0003-gcc-don-t-error-on-stuff-in-includes.patch
new file mode 100644
index 0000000..cf4e61d
--- /dev/null
+++ b/0003-gcc-don-t-error-on-stuff-in-includes.patch
@@ -0,0 +1,26 @@
+From 6de291458cbab99bcc317e282c16e1523d6de9b8 Mon Sep 17 00:00:00 2001
+From: Peter Jones <pjones(a)redhat.com>
+Date: Wed, 10 Aug 2016 17:12:39 -0400
+Subject: [PATCH 03/29] gcc: don't error on stuff in includes.
+
+Signed-off-by: Peter Jones <pjones(a)redhat.com>
+---
+ Make.defaults | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/Make.defaults b/Make.defaults
+index c97b452..3511080 100644
+--- a/Make.defaults
++++ b/Make.defaults
+@@ -19,7 +19,7 @@ PKG_CONFIG = $(CROSS_COMPILE)pkg-config
+ CC := $(if $(filter default,$(origin CC)),$(CROSS_COMPILE)gcc,$(CC))
+ CCLD := $(if $(filter undefined,$(origin CCLD)),$(CC),$(CCLD))
+ CFLAGS ?= -O0 -g3 -fvar-tracking -fvar-tracking-assignments \
+- -Wall -Werror -Wextra
++ -Wall -Werror -Wextra -Wno-error=cpp
+ AS := $(CROSS_COMPILE)as
+ AR := $(CROSS_COMPILE)gcc-ar
+ RANLIB := $(CROSS_COMPILE)gcc-ranlib
+--
+2.13.4
+
diff --git a/0004-Fix-certficate-argument-name.patch b/0004-Fix-certficate-argument-name.patch
new file mode 100644
index 0000000..08509ff
--- /dev/null
+++ b/0004-Fix-certficate-argument-name.patch
@@ -0,0 +1,39 @@
+From b20fc54c08e8afe1365e56cacade3ec39984da8d Mon Sep 17 00:00:00 2001
+From: Peter Jones <pjones(a)redhat.com>
+Date: Tue, 18 Apr 2017 19:00:34 -0400
+Subject: [PATCH 04/29] Fix "certficate" argument name.
+
+This fixes our typoed argument name by making the incorrectly spelled
+version be a popt alias, and fixing the real implementation to be
+spelled right in pesign.c .
+
+Signed-off-by: Peter Jones <pjones(a)redhat.com>
+---
+ src/pesign.c | 2 +-
+ src/pesign.popt | 1 +
+ 2 files changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/src/pesign.c b/src/pesign.c
+index af374b6..279a17a 100644
+--- a/src/pesign.c
++++ b/src/pesign.c
+@@ -438,7 +438,7 @@ main(int argc, char *argv[])
+ .arg = &ctxp->outfile,
+ .descrip = "specify output file",
+ .argDescrip = "<outfile>" },
+- {.longName = "certficate",
++ {.longName = "certificate",
+ .shortName = 'c',
+ .argInfo = POPT_ARG_STRING,
+ .arg = &certname,
+diff --git a/src/pesign.popt b/src/pesign.popt
+index 7b3385d..5a97748 100644
+--- a/src/pesign.popt
++++ b/src/pesign.popt
+@@ -1,2 +1,3 @@
+ pesign alias --cert --certificate
++pesign alias --certficate --certificate
+ pesign alias --daemon --daemonize
+--
+2.13.4
+
diff --git a/0005-Fix-description-of-ascii-armor-option-in-manpage.patch b/0005-Fix-description-of-ascii-armor-option-in-manpage.patch
new file mode 100644
index 0000000..6a5b02d
--- /dev/null
+++ b/0005-Fix-description-of-ascii-armor-option-in-manpage.patch
@@ -0,0 +1,26 @@
+From 7bc8e8b04c74be5c4e0ebf211affc37cf9f5db37 Mon Sep 17 00:00:00 2001
+From: Julien Cristau <jcristau(a)debian.org>
+Date: Mon, 27 Jun 2016 15:38:38 +0200
+Subject: [PATCH 05/29] Fix description of --ascii-armor option in manpage
+
+The --ascii option does not exist.
+---
+ src/pesign.1 | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/pesign.1 b/src/pesign.1
+index 47d1aec..29ae060 100644
+--- a/src/pesign.1
++++ b/src/pesign.1
+@@ -81,7 +81,7 @@ Export the public key specified by \-\-certificate to \fIoutkey\fR
+ Export the certificate specified by \-\-certificate to \fIoutcert\fR
+
+ .TP
+-\fB-\-ascii\fR
++\fB-\-ascii\-armor\fR
+ Use ascii armoring on exported certificates.
+
+ .TP
+--
+2.13.4
+
diff --git a/0006-Make-ascii-work-since-we-documented-it.patch b/0006-Make-ascii-work-since-we-documented-it.patch
new file mode 100644
index 0000000..d0165f9
--- /dev/null
+++ b/0006-Make-ascii-work-since-we-documented-it.patch
@@ -0,0 +1,22 @@
+From 9f411f4e797e983d2e8cb51dc5b9ab8db250c2e3 Mon Sep 17 00:00:00 2001
+From: Peter Jones <pjones(a)redhat.com>
+Date: Tue, 18 Apr 2017 19:05:40 -0400
+Subject: [PATCH 06/29] Make --ascii work, since we documented it.
+
+Signed-off-by: Peter Jones <pjones(a)redhat.com>
+---
+ src/pesign.popt | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/src/pesign.popt b/src/pesign.popt
+index 5a97748..5ae0c5c 100644
+--- a/src/pesign.popt
++++ b/src/pesign.popt
+@@ -1,3 +1,4 @@
+ pesign alias --cert --certificate
+ pesign alias --certficate --certificate
+ pesign alias --daemon --daemonize
++pesign alias --ascii --ascii-armor
+--
+2.13.4
+
diff --git a/0007-Switch-pesign-client-to-also-accept-token-cert-macro.patch b/0007-Switch-pesign-client-to-also-accept-token-cert-macro.patch
new file mode 100644
index 0000000..faa78ec
--- /dev/null
+++ b/0007-Switch-pesign-client-to-also-accept-token-cert-macro.patch
@@ -0,0 +1,32 @@
+From d618de733865eab359890b4e677c368a133dad99 Mon Sep 17 00:00:00 2001
+From: Pat Riehecky <riehecky(a)fnal.gov>
+Date: Mon, 7 Nov 2016 11:37:08 -0600
+Subject: [PATCH 07/29] Switch pesign client to also accept token/cert macros
+ rather than use hard coded values
+
+---
+ src/macros.pesign | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/src/macros.pesign b/src/macros.pesign
+index 18e5b5e..69280e9 100644
+--- a/src/macros.pesign
++++ b/src/macros.pesign
+@@ -41,11 +41,11 @@
+ --certdir ${nss} -c signer %{-o} \
+ rm -rf ${sattrs} ${sattrs}.sig ${nss} \
+ elif [ -S /var/run/pesign/socket ]; then \
+- %{_pesign_client} -t "OpenSC Card (Fedora Signer)" \\\
+- -c "/CN=Fedora Secure Boot Signer" \\\
++ %{_pesign_client} -t %{__pesign_token} \\\
++ -c %{__pesign_cert} \\\
+ %{-i} %{-o} %{-e} %{-s} %{-C} \
+ else \
+- %{_pesign} %{__pesign_token} -c %{__pesign_cert} \\\
++ %{_pesign} -t %{__pesign_token} -c %{__pesign_cert} \\\
+ --certdir ${_pesign_nssdir} \\\
+ %{-i} %{-o} %{-e} %{-s} %{-C} \
+ fi \
+--
+2.13.4
+
diff --git a/0008-pesigcheck-Verify-with-the-cert-as-an-object-signer.patch b/0008-pesigcheck-Verify-with-the-cert-as-an-object-signer.patch
new file mode 100644
index 0000000..2226498
--- /dev/null
+++ b/0008-pesigcheck-Verify-with-the-cert-as-an-object-signer.patch
@@ -0,0 +1,25 @@
+From 2cd211bcc612ad8cb99c778461ca02a9f3e5e44b Mon Sep 17 00:00:00 2001
+From: David Michael <david.michael(a)coreos.com>
+Date: Thu, 16 Feb 2017 15:08:30 -0800
+Subject: [PATCH 08/29] pesigcheck: Verify with the cert as an object signer
+
+---
+ src/certdb.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/certdb.c b/src/certdb.c
+index 2a08042..b7c99bb 100644
+--- a/src/certdb.c
++++ b/src/certdb.c
+@@ -339,7 +339,7 @@ check_cert(pesigcheck_context *ctx, SECItem *sig, efi_guid_t *sigtype,
+ }
+ /* Verify the signature */
+ result = SEC_PKCS7VerifyDetachedSignatureAtTime(cinfo,
+- certUsageSSLServer,
++ certUsageObjectSigner,
+ digest, HASH_AlgSHA256,
+ PR_FALSE, atTime);
+ if (!result) {
+--
+2.13.4
+
diff --git a/0009-pesigcheck-make-certfile-actually-work.patch b/0009-pesigcheck-make-certfile-actually-work.patch
new file mode 100644
index 0000000..8b77417
--- /dev/null
+++ b/0009-pesigcheck-make-certfile-actually-work.patch
@@ -0,0 +1,47 @@
+From e0238e2363f9668aee07b2e44a8f358e694551c0 Mon Sep 17 00:00:00 2001
+From: Peter Jones <pjones(a)redhat.com>
+Date: Mon, 24 Apr 2017 15:18:10 -0400
+Subject: [PATCH 09/29] pesigcheck: make --certfile actually work
+
+Signed-off-by: Peter Jones <pjones(a)redhat.com>
+---
+ src/pesigcheck.c | 9 +++++++--
+ 1 file changed, 7 insertions(+), 2 deletions(-)
+
+diff --git a/src/pesigcheck.c b/src/pesigcheck.c
+index 0d49c1a..d7be542 100644
+--- a/src/pesigcheck.c
++++ b/src/pesigcheck.c
+@@ -130,7 +130,7 @@ check_signature(pesigcheck_context *ctx)
+ cert_iter iter;
+
+ generate_digest(ctx->cms_ctx, ctx->inpe, 1);
+-
++
+ if (check_db_hash(DBX, ctx) == FOUND)
+ return -1;
+
+@@ -225,6 +225,11 @@ main(int argc, char *argv[])
+ .argInfo = POPT_ARG_CALLBACK|POPT_CBFLAG_POST,
+ .arg = (void *)callback,
+ .descrip = (void *)ctxp },
++ {.longName = "certfile",
++ .shortName = 'c',
++ .argInfo = POPT_ARG_CALLBACK|POPT_CBFLAG_POST,
++ .arg = (void *)callback,
++ .descrip = (void *)ctxp },
+ {.longName = "in",
+ .shortName = 'i',
+ .argInfo = POPT_ARG_STRING,
+@@ -258,7 +263,7 @@ main(int argc, char *argv[])
+ .shortName = 'c',
+ .argInfo = POPT_ARG_STRING,
+ .arg = &certfile,
+- .descrip = "the certificate (in DER form) for verification ",
++ .descrip = "import certfile (in DER encoding) for allowed certificate",
+ .argDescrip = "<certfile>" },
+ POPT_AUTOALIAS
+ POPT_AUTOHELP
+--
+2.13.4
+
diff --git a/0010-signerInfos-make-sure-err-is-always-initialized.patch b/0010-signerInfos-make-sure-err-is-always-initialized.patch
new file mode 100644
index 0000000..08d1da7
--- /dev/null
+++ b/0010-signerInfos-make-sure-err-is-always-initialized.patch
@@ -0,0 +1,27 @@
+From 799808b265ac6f82fa1268fd696d70357acce69c Mon Sep 17 00:00:00 2001
+From: Peter Jones <pjones(a)redhat.com>
+Date: Tue, 25 Apr 2017 16:15:07 -0400
+Subject: [PATCH 10/29] signerInfos: make sure err is always initialized
+
+Signed-off-by: Peter Jones <pjones(a)redhat.com>
+---
+ src/signed_data.c | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/src/signed_data.c b/src/signed_data.c
+index 721db90..9e0af23 100644
+--- a/src/signed_data.c
++++ b/src/signed_data.c
+@@ -132,7 +132,8 @@ int
+ generate_signerInfo_list(cms_context *cms, SpcSignerInfo ***signerInfo_list_p, SignerInfoType type)
+ {
+ SpcSignerInfo **signerInfo_list;
+- int err, rc;
++ int err = 0;
++ int rc;
+
+ if (!signerInfo_list_p)
+ return -1;
+--
+2.13.4
+
diff --git a/0011-pesign-make-pesign-h-tell-you-the-file-name.patch b/0011-pesign-make-pesign-h-tell-you-the-file-name.patch
new file mode 100644
index 0000000..3e15617
--- /dev/null
+++ b/0011-pesign-make-pesign-h-tell-you-the-file-name.patch
@@ -0,0 +1,26 @@
+From 868b42b338d919917ea31cfbf0f96e9586947eaf Mon Sep 17 00:00:00 2001
+From: Peter Jones <pjones(a)redhat.com>
+Date: Tue, 25 Apr 2017 16:23:36 -0400
+Subject: [PATCH 11/29] pesign: make "pesign -h" tell you the file name.
+
+Signed-off-by: Peter Jones <pjones(a)redhat.com>
+---
+ src/pesign.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/pesign.c b/src/pesign.c
+index 279a17a..5879cfc 100644
+--- a/src/pesign.c
++++ b/src/pesign.c
+@@ -387,7 +387,7 @@ print_digest(pesign_context *pctx)
+ if (!ctx)
+ return;
+
+- printf("hash: ");
++ printf("%s ", pctx->infile);
+ int j = ctx->selected_digest;
+ for (unsigned int i = 0; i < ctx->digests[j].pe_digest->len; i++)
+ printf("%02x",
+--
+2.13.4
+
diff --git a/0012-Add-coverity-build-scripts.patch b/0012-Add-coverity-build-scripts.patch
new file mode 100644
index 0000000..f3f0a89
--- /dev/null
+++ b/0012-Add-coverity-build-scripts.patch
@@ -0,0 +1,104 @@
+From 95327e6d9bd4f70980acd8fd6c9524265990dc4d Mon Sep 17 00:00:00 2001
+From: Peter Jones <pjones(a)redhat.com>
+Date: Wed, 10 May 2017 10:49:57 -0400
+Subject: [PATCH 12/29] Add coverity build scripts
+
+Signed-off-by: Peter Jones <pjones(a)redhat.com>
+---
+ .gitignore | 1 +
+ Make.coverity | 37 +++++++++++++++++++++++++++++++++++++
+ Make.defaults | 2 ++
+ Make.rules | 4 ++++
+ Makefile | 1 +
+ 5 files changed, 45 insertions(+)
+ create mode 100644 Make.coverity
+
+diff --git a/.gitignore b/.gitignore
+index 1635ba2..847e172 100644
+--- a/.gitignore
++++ b/.gitignore
+@@ -12,3 +12,4 @@
+ *.tar.*
+ *.rpm
+ core.*
++cov-int
+diff --git a/Make.coverity b/Make.coverity
+new file mode 100644
+index 0000000..b80b091
+--- /dev/null
++++ b/Make.coverity
+@@ -0,0 +1,37 @@
++include $(TOPDIR)/Make.version
++include $(TOPDIR)/Make.rules
++include $(TOPDIR)/Make.defaults
++
++COV_EMAIL=$(call get-config,coverity.email)
++COV_TOKEN=$(call get-config,coverity.token)
++COV_URL=$(call get-config,coverity.url)
++COV_FILE=$(NAME)-coverity-$(VERSION)-$(COMMIT_ID).tar.bz2
++
++cov-int : clean
++ cov-build --dir cov-int make all
++
++cov-clean :
++ @rm -vf $(NAME)-coverity-*.tar.*
++ @if [[ -d cov-int ]]; then rm -rf cov-int && echo "removed 'cov-int'"; fi
++
++cov-file : | $(COV_FILE)
++
++$(COV_FILE) : cov-int
++ tar caf $@ cov-int
++
++cov-upload :
++ @if [[ -n "$(COV_URL)" ]] && \
++ [[ -n "$(COV_TOKEN)" ]] && \
++ [[ -n "$(COV_EMAIL)" ]] ; \
++ then \
++ echo curl --form token=$(COV_TOKEN) --form email="$(COV_EMAIL)" --form file=@"$(COV_FILE)" --form version=$(VERSION).1 --form description="$(COMMIT_ID)" "$(COV_URL)" ; \
++ curl --form token=$(COV_TOKEN) --form email="$(COV_EMAIL)" --form file=@"$(COV_FILE)" --form version=$(VERSION).1 --form description="$(COMMIT_ID)" "$(COV_URL)" ; \
++ else \
++ echo Coverity output is in $(COV_FILE) ; \
++ fi
++
++coverity : cov-file cov-upload
++
++clean : | cov-clean
++
++.PHONY : coverity cov-upload cov-clean cov-file
+diff --git a/Make.defaults b/Make.defaults
+index 3511080..39b78f0 100644
+--- a/Make.defaults
++++ b/Make.defaults
+@@ -1,3 +1,5 @@
++NAME = pesign
++COMMIT_ID ?= $(shell git log -1 --pretty=%H 2>/dev/null || echo master)
+ prefix ?= /usr/
+ prefix := $(abspath $(prefix))/
+ libdir ?= $(prefix)lib64/
+diff --git a/Make.rules b/Make.rules
+index af5ecfe..5e3c83d 100644
+--- a/Make.rules
++++ b/Make.rules
+@@ -79,3 +79,7 @@ endef
+
+ $(TOPDIR)/libdpe/%.a $(TOPDIR)/libdpe/% :
+ $(MAKE) -C $(TOPDIR)/libdpe $(notdir $@)
++
++define get-config =
++$(shell git config --local --get "$(NAME).$(1)")
++endef
+diff --git a/Makefile b/Makefile
+index db8eb7e..ca1a359 100644
+--- a/Makefile
++++ b/Makefile
+@@ -4,6 +4,7 @@ TOPDIR = $(realpath .)
+ include $(TOPDIR)/Make.version
+ include $(TOPDIR)/Make.rules
+ include $(TOPDIR)/Make.defaults
++include $(TOPDIR)/Make.coverity
+
+ SUBDIRS := include libdpe src
+
+--
+2.13.4
+
diff --git a/0013-Document-implicit-fallthrough.patch b/0013-Document-implicit-fallthrough.patch
new file mode 100644
index 0000000..3731a3f
--- /dev/null
+++ b/0013-Document-implicit-fallthrough.patch
@@ -0,0 +1,25 @@
+From 4b9e7cf3e869de36daf2ea705b9efef55ae87ef8 Mon Sep 17 00:00:00 2001
+From: Peter Jones <pjones(a)redhat.com>
+Date: Sat, 8 Jul 2017 16:31:18 -0400
+Subject: [PATCH 13/29] Document implicit fallthrough.
+
+Signed-off-by: Peter Jones <pjones(a)redhat.com>
+---
+ src/authvar.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/src/authvar.c b/src/authvar.c
+index ad659ca..03e0c47 100644
+--- a/src/authvar.c
++++ b/src/authvar.c
+@@ -511,6 +511,7 @@ main(int argc, char *argv[])
+ case IMPORT|SET:
+ case IMPORT|SIGN|SET:
+ fprintf(stderr, "authvar: not implemented\n");
++ /* fallthrough. */
+ case IMPORT|SIGN|EXPORT:
+ default:
+ fprintf(stderr, "authvar: invalid flags: ");
+--
+2.13.4
+
diff --git a/0014-Actually-setfacl-each-directory-of-our-key-storage.patch b/0014-Actually-setfacl-each-directory-of-our-key-storage.patch
new file mode 100644
index 0000000..4b62cb3
--- /dev/null
+++ b/0014-Actually-setfacl-each-directory-of-our-key-storage.patch
@@ -0,0 +1,50 @@
+From a95e28e5cb10d417c81c8720e8521eb63793da37 Mon Sep 17 00:00:00 2001
+From: Peter Jones <pjones(a)redhat.com>
+Date: Mon, 16 May 2016 15:25:53 -0400
+Subject: [PATCH 14/29] Actually setfacl /each/ directory of our key storage.
+
+Signed-off-by: Peter Jones <pjones(a)redhat.com>
+---
+ src/pesign-authorize-groups | 6 +++---
+ src/pesign-authorize-users | 6 +++---
+ 2 files changed, 6 insertions(+), 6 deletions(-)
+
+diff --git a/src/pesign-authorize-groups b/src/pesign-authorize-groups
+index a4f895e..cf51fb6 100644
+--- a/src/pesign-authorize-groups
++++ b/src/pesign-authorize-groups
+@@ -18,10 +18,10 @@ if [ -r /etc/pesign/groups ]; then
+ setfacl -m g:${group}:rw /var/run/pesign/socket
+ fi
+ fi
+- for x in /etc/pki/pesign* ; do
++ for x in /etc/pki/pesign*/ ; do
+ if [ -d ${x} ]; then
+- setfacl -m g:${group}:rx /etc/pki/pesign
+- for y in ${x}/{cert8,key3,secmod}.db ; do
++ setfacl -m g:${group}:rx ${x}
++ for y in ${x}{cert8,key3,secmod}.db ; do
+ setfacl -m g:${group}:rw ${y}
+ done
+ fi
+diff --git a/src/pesign-authorize-users b/src/pesign-authorize-users
+index 8b9a885..940138e 100644
+--- a/src/pesign-authorize-users
++++ b/src/pesign-authorize-users
+@@ -18,10 +18,10 @@ if [ -r /etc/pesign/users ]; then
+ setfacl -m g:${username}:rw /var/run/pesign/socket
+ fi
+ fi
+- for x in /etc/pki/pesign* ; do
++ for x in /etc/pki/pesign*/ ; do
+ if [ -d ${x} ]; then
+- setfacl -m g:${username}:rx /etc/pki/pesign
+- for y in ${x}/{cert8,key3,secmod}.db ; do
++ setfacl -m g:${username}:rx ${x}
++ for y in ${x}{cert8,key3,secmod}.db ; do
+ setfacl -m g:${username}:rw ${y}
+ done
+ fi
+--
+2.13.4
+
diff --git a/0015-oid-add-SHIM_EKU_MODULE_SIGNING_ONLY-and-fix-our-arr.patch b/0015-oid-add-SHIM_EKU_MODULE_SIGNING_ONLY-and-fix-our-arr.patch
new file mode 100644
index 0000000..d5428b5
--- /dev/null
+++ b/0015-oid-add-SHIM_EKU_MODULE_SIGNING_ONLY-and-fix-our-arr.patch
@@ -0,0 +1,59 @@
+From a3cc2ad5d49ed61187527281da351e80d8f76a89 Mon Sep 17 00:00:00 2001
+From: Peter Jones <pjones(a)redhat.com>
+Date: Mon, 22 Aug 2016 13:31:38 -0400
+Subject: [PATCH 15/29] oid: add SHIM_EKU_MODULE_SIGNING_ONLY and fix our array
+ indices.
+
+That was all kinds of wrong.
+
+Signed-off-by: Peter Jones <pjones(a)redhat.com>
+---
+ src/oid.c | 10 +++++++---
+ src/oid.h | 1 +
+ 2 files changed, 8 insertions(+), 3 deletions(-)
+
+diff --git a/src/oid.c b/src/oid.c
+index 9d8154f..7037e1e 100644
+--- a/src/oid.c
++++ b/src/oid.c
+@@ -33,6 +33,7 @@ static uint8_t oiddata[] = {
+ 0x2b, 0x06, 0x01, 0x04, 0x01, 0x82, 0x37, 0x02, 0x01, 0x0f,
+ 0x2b, 0x06, 0x01, 0x04, 0x01, 0x82, 0x37, 0x02, 0x01, 0x15,
+ 0x2b, 0x06, 0x01, 0x04, 0x01, 0x82, 0x37, 0x15, 0x01,
++ 0x2b, 0x06, 0x01, 0x04, 0x01, 0x92, 0x08, 0x10, 0x01, 0x02,
+ };
+
+ #define OID(num, desc_s, oidtype, length, value) \
+@@ -53,11 +54,14 @@ static struct {
+ OID(SPC_STATEMENT_TYPE_OBJID, "Statement Type", siDEROID, 10,
+ &oiddata[10]),
+ OID(SPC_PE_IMAGE_DATA_OBJID, "PE Image Data", siDEROID, 10,
+- &oiddata[30]),
++ &oiddata[20]),
+ OID(SPC_INDIVIDUAL_SP_KEY_PURPOSE_OBJID, "Individual Key", siDEROID,
+- 10, &oiddata[40]),
++ 10, &oiddata[30]),
+ OID(szOID_CERTSRV_CA_VERSION, "Certification server CA version",
+- siAsciiString, 9, &oiddata[50]),
++ siAsciiString, 9, &oiddata[40]),
++ OID(SHIM_EKU_MODULE_SIGNING_ONLY,
++ "Certificate is used for kernel modules only", siDEROID, 10,
++ &oiddata[49]),
+ { .oid = END_OID_LIST }
+ };
+
+diff --git a/src/oid.h b/src/oid.h
+index 599f49d..0e00781 100644
+--- a/src/oid.h
++++ b/src/oid.h
+@@ -25,6 +25,7 @@ typedef enum {
+ SPC_PE_IMAGE_DATA_OBJID, /* 1.3.6.1.4.1.311.2.1.15 */
+ SPC_INDIVIDUAL_SP_KEY_PURPOSE_OBJID, /* 1.3.6.1.4.1.311.2.1.21 */
+ szOID_CERTSRV_CA_VERSION, /* 1.3.6.1.4.1.311.21.1 */
++ SHIM_EKU_MODULE_SIGNING_ONLY, /* 1.3.6.1.4.1.2312.16.1.2 */
+ END_OID_LIST
+ } ms_oid_t;
+
+--
+2.13.4
+
diff --git a/0016-efikeygen-add-modsign.patch b/0016-efikeygen-add-modsign.patch
new file mode 100644
index 0000000..8324334
--- /dev/null
+++ b/0016-efikeygen-add-modsign.patch
@@ -0,0 +1,197 @@
+From 9b4b12928c0450ac69d83293e179eec439465c03 Mon Sep 17 00:00:00 2001
+From: Peter Jones <pjones(a)redhat.com>
+Date: Mon, 22 Aug 2016 13:43:56 -0400
+Subject: [PATCH 16/29] efikeygen: add --modsign
+
+---
+ src/cms_common.c | 29 ++++++++++++++++++++++++++++
+ src/cms_common.h | 1 +
+ src/efikeygen.c | 59 ++++++++++++++++++++++++++++++++++++++++++++------------
+ 3 files changed, 77 insertions(+), 12 deletions(-)
+
+diff --git a/src/cms_common.c b/src/cms_common.c
+index 6a4e6a7..2df2cfe 100644
+--- a/src/cms_common.c
++++ b/src/cms_common.c
+@@ -715,6 +715,35 @@ make_context_specific(cms_context *cms, int ctxt, SECItem *encoded,
+ return 0;
+ }
+
++static SEC_ASN1Template EKUOidSequence[] = {
++ {
++ .kind = SEC_ASN1_OBJECT_ID,
++ .offset = 0,
++ .sub = &SEC_AnyTemplate,
++ .size = sizeof (SECItem),
++ },
++ { 0 }
++};
++
++int
++make_eku_oid(cms_context *cms, SECItem *encoded, SECOidTag oid_tag)
++{
++ void *rv;
++ SECOidData *oid_data;
++
++ oid_data = SECOID_FindOIDByTag(oid_tag);
++ if (!oid_data)
++ cmsreterr(-1, cms, "could not encode eku oid data");
++
++ rv = SEC_ASN1EncodeItem(cms->arena, encoded, &oid_data->oid,
++ EKUOidSequence);
++ if (rv == NULL)
++ cmsreterr(-1, cms, "could not encode eku oid data");
++
++ encoded->type = siBuffer;
++ return 0;
++}
++
+ int
+ generate_octet_string(cms_context *cms, SECItem *encoded, SECItem *original)
+ {
+diff --git a/src/cms_common.h b/src/cms_common.h
+index c7d7268..7a31273 100644
+--- a/src/cms_common.h
++++ b/src/cms_common.h
+@@ -123,6 +123,7 @@ extern int wrap_in_seq(cms_context *cms, SECItem *der,
+ SECItem *items, int num_items);
+ extern int make_context_specific(cms_context *cms, int ctxt, SECItem *encoded,
+ SECItem *original);
++extern int make_eku_oid(cms_context *cms, SECItem *encoded, SECOidTag oid_tag);
+ extern int generate_validity(cms_context *cms, SECItem *der, time_t start,
+ time_t end);
+ extern int generate_common_name(cms_context *cms, SECItem *der, char *cn);
+diff --git a/src/efikeygen.c b/src/efikeygen.c
+index 8a515a5..9390578 100644
+--- a/src/efikeygen.c
++++ b/src/efikeygen.c
+@@ -49,6 +49,7 @@
+ #include <libdpe/libdpe.h>
+
+ #include "cms_common.h"
++#include "oid.h"
+ #include "util.h"
+
+ typedef struct {
+@@ -249,20 +250,34 @@ add_basic_constraints(cms_context *cms, void *extHandle)
+ }
+
+ static int
+-add_extended_key_usage(cms_context *cms, void *extHandle)
++add_extended_key_usage(cms_context *cms, int modsign_only, void *extHandle)
+ {
+- SECItem value = {
+- .data = (unsigned char *)"\x30\x0a\x06\x08\x2b\x06\x01"
+- "\x05\x05\x07\x03\x03",
+- .len = 12,
+- .type = siBuffer
+- };
++ SECItem values[2];
++ SECItem wrapped = { 0 };
++ SECStatus status;
++ SECOidTag tag;
++ int rc;
++
++ if (modsign_only < 1 || modsign_only > 2)
++ cmsreterr(-1, cms, "could not encode extended key usage");
+
++ rc = make_eku_oid(cms, &values[0], SEC_OID_EXT_KEY_USAGE_CODE_SIGN);
++ if (rc < 0)
++ cmsreterr(-1, cms, "could not encode extended key usage");
++
++ tag = find_ms_oid_tag(SHIM_EKU_MODULE_SIGNING_ONLY);
++ printf("tag: %d\n", tag);
++ rc = make_eku_oid(cms, &values[1], tag);
++ if (rc < 0)
++ cmsreterr(-1, cms, "could not encode extended key usage");
++
++ rc = wrap_in_seq(cms, &wrapped, values, modsign_only);
++ if (rc < 0)
++ cmsreterr(-1, cms, "could not encode extended key usage");
+
+- SECStatus status;
+
+ status = CERT_AddExtension(extHandle, SEC_OID_X509_EXT_KEY_USAGE,
+- &value, PR_FALSE, PR_TRUE);
++ &wrapped, PR_FALSE, PR_TRUE);
+ if (status != SECSuccess)
+ cmsreterr(-1, cms, "could not encode extended key usage");
+
+@@ -294,7 +309,7 @@ static int
+ add_extensions_to_crq(cms_context *cms, CERTCertificateRequest *crq,
+ int is_ca, int is_self_signed, SECKEYPublicKey *pubkey,
+ SECKEYPublicKey *spubkey,
+- char *url)
++ char *url, int modsign_only)
+ {
+ void *mark = PORT_ArenaMark(cms->arena);
+
+@@ -319,7 +334,7 @@ add_extensions_to_crq(cms_context *cms, CERTCertificateRequest *crq,
+ if (rc < 0)
+ cmsreterr(-1, cms, "could not generate certificate extensions");
+
+- rc = add_extended_key_usage(cms, extHandle);
++ rc = add_extended_key_usage(cms, modsign_only, extHandle);
+ if (rc < 0)
+ cmsreterr(-1, cms, "could not generate certificate extensions");
+
+@@ -469,6 +484,7 @@ int main(int argc, char *argv[])
+ {
+ int is_ca = 0;
+ int is_self_signed = -1;
++ int modsign_only = 0;
+ char *tokenname = "NSS Certificate DB";
+ char *signer = NULL;
+ char *nickname = NULL;
+@@ -522,6 +538,18 @@ int main(int argc, char *argv[])
+ .descrip = "Generate a self-signed certificate" },
+
+ /* stuff about the generated key */
++ {.longName = "kernel",
++ .shortName = 'k',
++ .argInfo = POPT_ARG_VAL|POPT_ARGFLAG_OR,
++ .arg = &modsign_only,
++ .val = 1,
++ .descrip = "Generate a kernel-signing certificate" },
++ {.longName = "module",
++ .shortName = 'm',
++ .argInfo = POPT_ARG_VAL|POPT_ARGFLAG_OR,
++ .arg = &modsign_only,
++ .val = 2,
++ .descrip = "Generate a module-signing certificate" },
+ {.longName = "nickname",
+ .shortName = 'n',
+ .argInfo = POPT_ARG_STRING,
+@@ -628,6 +656,9 @@ int main(int argc, char *argv[])
+ liberr(1, "could not allocate cms context");
+ }
+
++ if (modsign_only < 1 || modsign_only > 2)
++ errx(1, "either --kernel or --module must be used");
++
+ SECStatus status = NSS_InitReadWrite(dbdir);
+ if (status != SECSuccess)
+ nsserr(1, "could not initialize NSS");
+@@ -639,6 +670,10 @@ int main(int argc, char *argv[])
+ SECKEYPublicKey *pubkey = NULL;
+ SECKEYPrivateKey *privkey = NULL;
+
++ status = register_oids(cms);
++ if (status != SECSuccess)
++ nsserr(1, "Could not register OIDs");
++
+ PK11SlotInfo *slot = NULL;
+ if (pubfile) {
+ rc = get_pubkey_from_file(pubfile, &pubkey);
+@@ -713,7 +748,7 @@ int main(int argc, char *argv[])
+ crq = CERT_CreateCertificateRequest(name, spki, &attributes);
+
+ rc = add_extensions_to_crq(cms, crq, is_ca, is_self_signed, pubkey,
+- spubkey, url);
++ spubkey, url, modsign_only);
+ if (rc < 0)
+ exit(1);
+
+--
+2.13.4
+
diff --git a/0017-check_cert_db-try-even-harder-to-pick-a-reasonable-v.patch b/0017-check_cert_db-try-even-harder-to-pick-a-reasonable-v.patch
new file mode 100644
index 0000000..acebc3a
--- /dev/null
+++ b/0017-check_cert_db-try-even-harder-to-pick-a-reasonable-v.patch
@@ -0,0 +1,121 @@
+From 0456758e0c0873d1251bdf77d27f0f6175cbf289 Mon Sep 17 00:00:00 2001
+From: Peter Jones <pjones(a)redhat.com>
+Date: Tue, 25 Apr 2017 16:25:02 -0400
+Subject: [PATCH 17/29] check_cert_db(): try even harder to pick a reasonable
+ validation time.
+
+Signed-off-by: Peter Jones <pjones(a)redhat.com>
+---
+ src/certdb.c | 75 ++++++++++++++++++++++++++++++++++++++++++++++++++++--------
+ 1 file changed, 66 insertions(+), 9 deletions(-)
+
+diff --git a/src/certdb.c b/src/certdb.c
+index b7c99bb..1a4baf1 100644
+--- a/src/certdb.c
++++ b/src/certdb.c
+@@ -250,12 +250,53 @@ check_db_hash(db_specifier which, pesigcheck_context *ctx)
+ return check_db(which, ctx, check_hash, NULL, 0);
+ }
+
+-static PRTime
+-determine_reasonable_time(CERTCertificate *cert)
++static void
++find_cert_times(SEC_PKCS7ContentInfo *cinfo,
++ PRTime *notBefore, PRTime *notAfter)
+ {
+- PRTime notBefore, notAfter;
+- CERT_GetCertTimes(cert, ¬Before, ¬After);
+- return notBefore;
++ CERTCertDBHandle *defaultdb, *certdb;
++ SEC_PKCS7SignedData *sdp;
++ CERTCertificate **certs = NULL;
++ SECItem **rawcerts;
++ int i, certcount;
++ SECStatus rv;
++
++ if (cinfo->contentTypeTag->offset != SEC_OID_PKCS7_SIGNED_DATA) {
++err:
++ *notBefore = 0;
++ *notAfter = 0x7fffffffffffffff;
++ return;
++ }
++
++ sdp = cinfo->content.signedData;
++ rawcerts = sdp->rawCerts;
++
++ defaultdb = CERT_GetDefaultCertDB();
++
++ certdb = defaultdb;
++ if (certdb == NULL)
++ goto err;
++
++ certcount = 0;
++ if (rawcerts != NULL) {
++ for (; rawcerts[certcount] != NULL; certcount++)
++ ;
++ }
++ rv = CERT_ImportCerts(certdb, certUsageObjectSigner, certcount,
++ rawcerts, &certs, PR_FALSE, PR_FALSE, NULL);
++ if (rv != SECSuccess)
++ goto err;
++
++ for (i = 0; i < certcount; i++) {
++ PRTime nb = 0, na = 0x7fffffffffff;
++ CERT_GetCertTimes(certs[i], &nb, &na);
++ if (*notBefore < nb)
++ *notBefore = nb;
++ if (*notAfter > na)
++ *notAfter = na;
++ }
++
++ CERT_DestroyCertArray(certs, certcount);
+ }
+
+ static db_status
+@@ -271,6 +312,8 @@ check_cert(pesigcheck_context *ctx, SECItem *sig, efi_guid_t *sigtype,
+ PRBool result;
+ SECStatus rv;
+ db_status status = NOT_FOUND;
++ PRTime earlyNow = 0, lateNow = 0x7fffffffffffffff;
++ PRTime notBefore = 0, notAfter = 0x7fffffffffffffff;
+
+ efi_guid_t efi_x509 = efi_guid_x509_cert;
+
+@@ -327,16 +370,30 @@ check_cert(pesigcheck_context *ctx, SECItem *sig, efi_guid_t *sigtype,
+ }
+ cert->timeOK = PR_TRUE;
+
++ find_cert_times(cinfo, ¬Before, ¬After);
++ if (earlyNow < notBefore)
++ earlyNow = notBefore;
++ if (lateNow > notAfter)
++ lateNow = notAfter;
++
+ SECItem *eTime;
+ PRTime atTime;
+ // atTime = determine_reasonable_time(cert);
+ eTime = SEC_PKCS7GetSigningTime(cinfo);
+ if (eTime != NULL) {
+- if (DER_DecodeTimeChoice (&atTime, eTime) != SECSuccess)
+- atTime = determine_reasonable_time(cert);
+- } else {
+- atTime = determine_reasonable_time(cert);
++ if (DER_DecodeTimeChoice (&atTime, eTime) == SECSuccess) {
++ if (earlyNow < atTime)
++ earlyNow = atTime;
++ if (lateNow > atTime)
++ lateNow = atTime;
++ }
+ }
++
++ if (lateNow < earlyNow)
++ printf("Impossible time constraints: %ld <= %ld\n",
++ earlyNow / 1000000, lateNow / 1000000);
++ atTime = earlyNow / 2 + lateNow / 2;
++
+ /* Verify the signature */
+ result = SEC_PKCS7VerifyDetachedSignatureAtTime(cinfo,
+ certUsageObjectSigner,
+--
+2.13.4
+
diff --git a/0018-show-which-db-we-re-checking.patch b/0018-show-which-db-we-re-checking.patch
new file mode 100644
index 0000000..2b92f83
--- /dev/null
+++ b/0018-show-which-db-we-re-checking.patch
@@ -0,0 +1,137 @@
+From 01b89fb7a191f4639a93c5a7c47a80752118ba95 Mon Sep 17 00:00:00 2001
+From: Peter Jones <pjones(a)redhat.com>
+Date: Tue, 25 Apr 2017 16:58:50 -0400
+Subject: [PATCH 18/29] show which db we're checking
+
+---
+ src/certdb.c | 35 ++++++++++++++++++++++++++++++++++-
+ src/pesigcheck_context.c | 2 ++
+ src/pesigcheck_context.h | 1 +
+ 3 files changed, 37 insertions(+), 1 deletion(-)
+
+diff --git a/src/certdb.c b/src/certdb.c
+index 1a4baf1..673e074 100644
+--- a/src/certdb.c
++++ b/src/certdb.c
+@@ -18,6 +18,7 @@
+ */
+
+ #include <fcntl.h>
++#include <libgen.h>
+ #include <sys/mman.h>
+ #include <sys/types.h>
+ #include <sys/stat.h>
+@@ -42,17 +43,33 @@ add_db_file(pesigcheck_context *ctx, db_specifier which, const char *dbfile,
+ return -1;
+
+ db->type = type;
+-
+ db->fd = open(dbfile, O_RDONLY);
+ if (db->fd < 0) {
+ save_errno(free(db));
+ return -1;
+ }
+
++ char *path = strdup(dbfile);
++ if (!path) {
++ save_errno(close(db->fd);
++ free(db));
++ return -1;
++ }
++
++ db->path = basename(path);
++ db->path = strdup(db->path);
++ free(path);
++ if (!db->path) {
++ save_errno(close(db->fd);
++ free(db));
++ return -1;
++ }
++
+ struct stat sb;
+ int rc = fstat(db->fd, &sb);
+ if (rc < 0) {
+ save_errno(close(db->fd);
++ free(db->path);
+ free(db));
+ return -1;
+ }
+@@ -65,6 +82,7 @@ add_db_file(pesigcheck_context *ctx, db_specifier which, const char *dbfile,
+ rc = read_file(db->fd, (char **)&db->map, &sz);
+ if (rc < 0) {
+ save_errno(close(db->fd);
++ free(db->path);
+ free(db));
+ return -1;
+ }
+@@ -133,6 +151,7 @@ add_cert_file(pesigcheck_context *ctx, const char *filename)
+ #define DB_PATH "/sys/firmware/efi/efivars/db-d719b2cb-3d3a-4596-a3bc-dad00e67656f"
+ #define MOK_PATH "/sys/firmware/efi/efivars/MokListRT-605dab50-e046-4300-abb6-3dd810dd8b23"
+ #define DBX_PATH "/sys/firmware/efi/efivars/dbx-d719b2cb-3d3a-4596-a3bc-dad00e67656f"
++#define MOKX_PATH "/sys/firmware/efi/efivars/MokListXRT-605dab50-e046-4300-abb6-3dd810dd8b23"
+
+ void
+ init_cert_db(pesigcheck_context *ctx, int use_system_dbs)
+@@ -167,6 +186,18 @@ init_cert_db(pesigcheck_context *ctx, int use_system_dbs)
+ "database \"%s\": %m\n", DBX_PATH);
+ exit(1);
+ }
++
++ rc = add_db_file(ctx, DBX, MOKX_PATH, DB_EFIVAR);
++ if (rc < 0 && errno != ENOENT) {
++ fprintf(stderr, "pesigcheck: Could not add key database "
++ "\"%s\": %m\n", MOKX_PATH);
++ exit(1);
++ }
++
++ if (ctx->dbx == NULL) {
++ fprintf(stderr, "pesigcheck: warning: "
++ "No key recovation database available\n");
++ }
+ }
+
+ typedef db_status (*checkfn)(pesigcheck_context *ctx, SECItem *sig,
+@@ -187,6 +218,8 @@ check_db(db_specifier which, pesigcheck_context *ctx, checkfn check,
+ sig.type = siBuffer;
+
+ while (dbl) {
++ printf("Searching %s %s\n", which == DB ? "db" : "dbx",
++ dbl->path);
+ EFI_SIGNATURE_LIST *certlist;
+ EFI_SIGNATURE_DATA *cert;
+ size_t dbsize = dbl->datalen;
+diff --git a/src/pesigcheck_context.c b/src/pesigcheck_context.c
+index b934cbe..5a355b1 100644
+--- a/src/pesigcheck_context.c
++++ b/src/pesigcheck_context.c
+@@ -87,6 +87,7 @@ pesigcheck_context_fini(pesigcheck_context *ctx)
+ munmap(db->map, db->size);
+ close(db->fd);
+ ctx->db = db->next;
++ free(db->path);
+ free(db);
+ }
+ while (ctx->dbx) {
+@@ -95,6 +96,7 @@ pesigcheck_context_fini(pesigcheck_context *ctx)
+ if (db->type == DB_CERT)
+ free(db->data);
+ munmap(db->map, db->size);
++ free(db->path);
+ close(db->fd);
+ ctx->dbx = db->next;
+ free(db);
+diff --git a/src/pesigcheck_context.h b/src/pesigcheck_context.h
+index 1b916e3..7b5cc89 100644
+--- a/src/pesigcheck_context.h
++++ b/src/pesigcheck_context.h
+@@ -34,6 +34,7 @@ typedef enum {
+
+ struct dblist {
+ db_f_type type;
++ char *path;
+ int fd;
+ struct dblist *next;
+ size_t size;
+--
+2.13.4
+
diff --git a/0019-more-about-the-time.patch b/0019-more-about-the-time.patch
new file mode 100644
index 0000000..2570bf8
--- /dev/null
+++ b/0019-more-about-the-time.patch
@@ -0,0 +1,97 @@
+From 713e61448a6ffa3e6029a7c89fad61b8cb08c9ff Mon Sep 17 00:00:00 2001
+From: Peter Jones <pjones(a)redhat.com>
+Date: Tue, 25 Apr 2017 17:00:46 -0400
+Subject: [PATCH 19/29] more about the time
+
+---
+ src/certdb.c | 59 +++++++++++++++++++++++++++++++++--------------------------
+ 1 file changed, 33 insertions(+), 26 deletions(-)
+
+diff --git a/src/certdb.c b/src/certdb.c
+index 673e074..1078a8a 100644
+--- a/src/certdb.c
++++ b/src/certdb.c
+@@ -345,8 +345,10 @@ check_cert(pesigcheck_context *ctx, SECItem *sig, efi_guid_t *sigtype,
+ PRBool result;
+ SECStatus rv;
+ db_status status = NOT_FOUND;
++ PRTime atTime = PR_Now();
++ SECItem *eTime;
+ PRTime earlyNow = 0, lateNow = 0x7fffffffffffffff;
+- PRTime notBefore = 0, notAfter = 0x7fffffffffffffff;
++ PRTime notBefore, notAfter;
+
+ efi_guid_t efi_x509 = efi_guid_x509_cert;
+
+@@ -358,6 +360,36 @@ check_cert(pesigcheck_context *ctx, SECItem *sig, efi_guid_t *sigtype,
+ if (!cinfo)
+ goto out;
+
++ notBefore = earlyNow;
++ notAfter = lateNow;
++ find_cert_times(cinfo, ¬Before, ¬After);
++ if (earlyNow < notBefore)
++ earlyNow = notBefore;
++ if (lateNow > notAfter)
++ lateNow = notAfter;
++
++ // atTime = determine_reasonable_time(cert);
++ eTime = SEC_PKCS7GetSigningTime(cinfo);
++ if (eTime != NULL) {
++ if (DER_DecodeTimeChoice (&atTime, eTime) == SECSuccess) {
++ if (earlyNow < atTime)
++ earlyNow = atTime;
++ if (lateNow > atTime)
++ lateNow = atTime;
++ }
++ }
++
++ if (lateNow < earlyNow)
++ printf("Signature has impossible time constraint: %ld <= %ld\n",
++ earlyNow / 1000000, lateNow / 1000000);
++ atTime = earlyNow / 2 + lateNow / 2;
++
++
++ cinfo = SEC_PKCS7DecodeItem(pkcs7sig, NULL, NULL, NULL, NULL, NULL,
++ NULL, NULL);
++ if (!cinfo)
++ goto out;
++
+ /* Generate the digest of contentInfo */
+ /* XXX support only sha256 for now */
+ digest = SECITEM_AllocItem(NULL, NULL, 32);
+@@ -401,31 +433,6 @@ check_cert(pesigcheck_context *ctx, SECItem *sig, efi_guid_t *sigtype,
+ PORT_ErrorToString(PORT_GetError()));
+ goto out;
+ }
+- cert->timeOK = PR_TRUE;
+-
+- find_cert_times(cinfo, ¬Before, ¬After);
+- if (earlyNow < notBefore)
+- earlyNow = notBefore;
+- if (lateNow > notAfter)
+- lateNow = notAfter;
+-
+- SECItem *eTime;
+- PRTime atTime;
+- // atTime = determine_reasonable_time(cert);
+- eTime = SEC_PKCS7GetSigningTime(cinfo);
+- if (eTime != NULL) {
+- if (DER_DecodeTimeChoice (&atTime, eTime) == SECSuccess) {
+- if (earlyNow < atTime)
+- earlyNow = atTime;
+- if (lateNow > atTime)
+- lateNow = atTime;
+- }
+- }
+-
+- if (lateNow < earlyNow)
+- printf("Impossible time constraints: %ld <= %ld\n",
+- earlyNow / 1000000, lateNow / 1000000);
+- atTime = earlyNow / 2 + lateNow / 2;
+
+ /* Verify the signature */
+ result = SEC_PKCS7VerifyDetachedSignatureAtTime(cinfo,
+--
+2.13.4
+
diff --git a/0020-try-to-say-why-something-fails.patch b/0020-try-to-say-why-something-fails.patch
new file mode 100644
index 0000000..96bdd60
--- /dev/null
+++ b/0020-try-to-say-why-something-fails.patch
@@ -0,0 +1,419 @@
+From 81583146602bba96728fa7544c8e856b32c22ee4 Mon Sep 17 00:00:00 2001
+From: Peter Jones <pjones(a)redhat.com>
+Date: Tue, 25 Apr 2017 17:01:13 -0400
+Subject: [PATCH 20/29] try to say why something fails
+
+Signed-off-by: Peter Jones <pjones(a)redhat.com>
+---
+ src/certdb.c | 15 ++-
+ src/certdb.h | 2 +-
+ src/pesigcheck.c | 244 ++++++++++++++++++++++++++++++++++++++++++-----
+ src/pesigcheck_context.h | 1 +
+ 4 files changed, 233 insertions(+), 29 deletions(-)
+
+diff --git a/src/certdb.c b/src/certdb.c
+index 1078a8a..fae80af 100644
+--- a/src/certdb.c
++++ b/src/certdb.c
+@@ -205,7 +205,7 @@ typedef db_status (*checkfn)(pesigcheck_context *ctx, SECItem *sig,
+
+ static db_status
+ check_db(db_specifier which, pesigcheck_context *ctx, checkfn check,
+- void *data, ssize_t datalen)
++ void *data, ssize_t datalen, SECItem *match)
+ {
+ SECItem pkcs7sig, sig;
+ dblist *dbl = which == DB ? ctx->db : ctx->dbx;
+@@ -241,8 +241,12 @@ check_db(db_specifier which, pesigcheck_context *ctx, checkfn check,
+ found = check(ctx, &sig,
+ &certlist->SignatureType,
+ &pkcs7sig);
+- if (found == FOUND)
++ if (found == FOUND) {
++ if (match)
++ memcpy(match, &sig,
++ sizeof(sig));
+ return FOUND;
++ }
+ cert = (EFI_SIGNATURE_DATA *)((uint8_t *)cert +
+ certlist->SignatureSize);
+ }
+@@ -280,7 +284,7 @@ check_hash(pesigcheck_context *ctx, SECItem *sig, efi_guid_t *sigtype,
+ db_status
+ check_db_hash(db_specifier which, pesigcheck_context *ctx)
+ {
+- return check_db(which, ctx, check_hash, NULL, 0);
++ return check_db(which, ctx, check_hash, NULL, 0, NULL);
+ }
+
+ static void
+@@ -459,7 +463,8 @@ out:
+ }
+
+ db_status
+-check_db_cert(db_specifier which, pesigcheck_context *ctx, void *data, ssize_t datalen)
++check_db_cert(db_specifier which, pesigcheck_context *ctx,
++ void *data, ssize_t datalen, SECItem *match)
+ {
+- return check_db(which, ctx, check_cert, data, datalen);
++ return check_db(which, ctx, check_cert, data, datalen, match);
+ }
+diff --git a/src/certdb.h b/src/certdb.h
+index ccf3c87..8402299 100644
+--- a/src/certdb.h
++++ b/src/certdb.h
+@@ -43,7 +43,7 @@ typedef struct {
+
+ extern db_status check_db_hash(db_specifier which, pesigcheck_context *ctx);
+ extern db_status check_db_cert(db_specifier which, pesigcheck_context *ctx,
+- void *data, ssize_t datalen);
++ void *data, ssize_t datalen, SECItem *match);
+
+ extern void init_cert_db(pesigcheck_context *ctx, int use_system_dbs);
+ extern int add_cert_db(pesigcheck_context *ctx, const char *filename);
+diff --git a/src/pesigcheck.c b/src/pesigcheck.c
+index d7be542..c8e1086 100644
+--- a/src/pesigcheck.c
++++ b/src/pesigcheck.c
+@@ -17,7 +17,9 @@
+ * Author(s): Peter Jones <pjones(a)redhat.com>
+ */
+
++#include <err.h>
+ #include <fcntl.h>
++#include <stdbool.h>
+ #include <stdio.h>
+ #include <stdlib.h>
+ #include <string.h>
+@@ -88,7 +90,8 @@ check_inputs(pesigcheck_context *ctx)
+ }
+
+ static int
+-cert_matches_digest(pesigcheck_context *ctx, void *data, ssize_t datalen)
++cert_matches_digest(pesigcheck_context *ctx, void *data, ssize_t datalen,
++ SECItem *digest_out)
+ {
+ SECItem sig, *pe_digest, *content;
+ uint8_t *digest;
+@@ -109,6 +112,12 @@ cert_matches_digest(pesigcheck_context *ctx, void *data, ssize_t datalen)
+ pe_digest = ctx->cms_ctx->digests[0].pe_digest;
+ content = cinfo->content.signedData->contentInfo.content.data;
+ digest = content->data + content->len - pe_digest->len;
++ if (digest_out) {
++ digest_out->data = malloc(pe_digest->len);
++ digest_out->len = pe_digest->len;
++ digest_out->type = pe_digest->type;
++ memcpy(digest_out->data, digest, pe_digest->len);
++ }
+ if (memcmp(pe_digest->data, digest, pe_digest->len) != 0)
+ goto out;
+
+@@ -120,22 +129,149 @@ out:
+ return ret;
+ }
+
++struct reason {
++ enum {
++ WHITELISTED = 0,
++ INVALID = 1,
++ BLACKLISTED = 2,
++ NO_WHITELIST = 3,
++ } reason;
++ enum {
++ NONE = 0,
++ DIGEST = 1,
++ SIGNATURE = 2,
++ } type;
++ union {
++ struct {
++ SECItem digest;
++ };
++ struct {
++ SECItem sig;
++ SECItem db_cert;
++ };
++ };
++};
++
++static void
++print_digest(SECItem *digest)
++{
++ char buf[digest->len * 2 + 2];
++
++ for (unsigned int i = 0; i < digest->len; i++)
++ snprintf(buf + i * 2, digest->len * 2, "%02x",
++ digest->data[i]);
++ buf[digest->len * 2] = '\0';
++ printf("%s\n", buf);
++}
++
++static void
++print_certificate(SECItem *cert)
++{
++ printf("put a breakpoint at %s:%d\n", __FILE__, __LINE__);
++ printf("cert: %p\n", cert);
++}
++
++static void
++print_signatures(SECItem *database_cert, SECItem *signature)
++{
++ printf("put a breakpoint at %s:%d\n", __FILE__, __LINE__);
++ print_certificate(database_cert);
++ print_certificate(signature);
++}
++
++static void
++print_reason(struct reason *reason)
++{
++ switch (reason->reason) {
++ case WHITELISTED:
++ printf("Whitelist entry: ");
++ if (reason->type == DIGEST)
++ print_digest(&reason->digest);
++ else if (reason->type == SIGNATURE)
++ print_signatures(&reason->sig, &reason->db_cert);
++ else
++ errx(1, "Unknown data type %d\n", reason->type);
++ break;
++ case INVALID:
++ if (reason->type == DIGEST) {
++ printf("Invalid digest: ");
++ print_digest(&reason->digest);
++ } else if (reason->type == SIGNATURE) {
++ printf("Invalid signature: ");
++ print_signatures(&reason->sig, &reason->db_cert);
++ } else {
++ errx(1, "Unknown data type %d\n", reason->type);
++ }
++ break;
++ case BLACKLISTED:
++ if (reason->type == DIGEST) {
++ printf("Invalid digest: ");
++ print_digest(&reason->digest);
++ } else if (reason->type == SIGNATURE) {
++ printf("Invalid signature: ");
++ print_signatures(&reason->sig, &reason->db_cert);
++ } else {
++ errx(1, "Unknown data type %d\n", reason->type);
++ }
++ break;
++ case NO_WHITELIST:
++ if (reason->type == NONE)
++ printf("No matching whitelist entry.\n");
++ else
++ errx(1, "Invalid data type %d\n", reason->type);
++ break;
++ default:
++ errx(1, "Unknown reason type %d\n", reason->reason);
++ break;
++ }
++}
++
++static void
++get_digest(pesigcheck_context *ctx, SECItem *digest)
++{
++ struct cms_context *cms = ctx->cms_ctx;
++ struct digest *cms_digest = &cms->digests[cms->selected_digest];
++
++ memcpy(digest, cms_digest->pe_digest, sizeof (*digest));
++}
++
+ static int
+-check_signature(pesigcheck_context *ctx)
++check_signature(pesigcheck_context *ctx, int *nreasons,
++ struct reason **reasons)
+ {
+- int has_valid_cert = 0;
+- int has_invalid_cert = 0;
++ bool has_valid_cert = false;
++ bool is_invalid = false;
++ struct reason *reasonps = NULL, *reason;
++ int num_reasons = 16;
++ int nreason = 0;
+ int rc = 0;
++ int ret = -1;
+
+ cert_iter iter;
+
++ reasonps = calloc(sizeof(struct reason), 512);
++ if (!reasonps)
++ err(1, "check_signature");
++
+ generate_digest(ctx->cms_ctx, ctx->inpe, 1);
+
+- if (check_db_hash(DBX, ctx) == FOUND)
+- return -1;
++ if (check_db_hash(DBX, ctx) == FOUND) {
++ reason = &reasonps[nreason];
++ reason->reason = BLACKLISTED;
++ reason->type = DIGEST;
++ get_digest(ctx, &reason->digest);
++ reason += 1;
++ is_invalid = true;
++ }
+
+- if (check_db_hash(DB, ctx) == FOUND)
+- has_valid_cert = 1;
++ if (check_db_hash(DB, ctx) == FOUND) {
++ reason = &reasonps[nreason];
++ reason->reason = WHITELISTED;
++ reason->type = DIGEST;
++ get_digest(ctx, &reason->digest);
++ nreason += 1;
++ has_valid_cert = true;
++ }
+
+ rc = cert_iter_init(&iter, ctx->inpe);
+ if (rc < 0)
+@@ -145,32 +281,81 @@ check_signature(pesigcheck_context *ctx)
+ ssize_t datalen;
+
+ while (1) {
++ /*
++ * Make sure we always have enough for this iteration of the
++ * loop, plus one "NO_WHITELIST" entry at the end.
++ */
++ if (nreason >= num_reasons - 4) {
++ struct reason *new_reasons;
++
++ num_reasons += 16;
++
++ new_reasons = calloc(sizeof(struct reason), num_reasons);
++ if (!new_reasons)
++ err(1, "check_signature");
++ reasonps = new_reasons;
++ }
++
+ rc = next_cert(&iter, &data, &datalen);
+ if (rc <= 0)
+ break;
+
+- if (cert_matches_digest(ctx, data, datalen) < 0) {
+- has_invalid_cert = 1;
+- break;
++ reason = &reasonps[nreason];
++ if (cert_matches_digest(ctx, data, datalen,
++ &reason->digest) < 0) {
++ reason->reason = INVALID;
++ reason->type = DIGEST;
++ nreason += 1;
++ is_invalid = true;
+ }
+
+- if (check_db_cert(DBX, ctx, data, datalen) == FOUND) {
+- has_invalid_cert = 1;
+- break;
++ reason = &reasonps[nreason];
++ if (check_db_cert(DBX, ctx, data, datalen,
++ &reason->db_cert) == FOUND) {
++ reason->reason = INVALID;
++ reason->type = SIGNATURE;
++ reason->sig.data = data;
++ reason->sig.len = datalen;
++ reason->type = siBuffer;
++ nreason += 1;
++ is_invalid = true;
+ }
+
+- if (check_db_cert(DB, ctx, data, datalen) == FOUND)
+- has_valid_cert = 1;
++ reason = &reasonps[nreason];
++ if (check_db_cert(DB, ctx, data, datalen,
++ &reason->db_cert) == FOUND) {
++ reason->reason = WHITELISTED;
++ reason->type = SIGNATURE;
++ reason->sig.data = data;
++ reason->sig.len = datalen;
++ reason->type = siBuffer;
++ nreason += 1;
++ has_valid_cert = true;
++ }
+ }
+
+ err:
+- if (has_invalid_cert)
+- return -1;
++ if (has_valid_cert != true) {
++ if (is_invalid != true) {
++ reason = &reasonps[nreason];
++ reason->reason = NO_WHITELIST;
++ reason->type = NONE;
++ nreason += 1;
++ }
++ is_invalid = true;
++ }
+
+- if (has_valid_cert)
+- return 0;
++ if (is_invalid == false)
++ ret = 0;
+
+- return -1;
++ if (nreasons && reasons) {
++ *nreasons = nreason;
++ *reasons = reasonps;
++ } else {
++ free(reasonps);
++ }
++
++ return ret;
+ }
+
+ void
+@@ -204,6 +389,9 @@ main(int argc, char *argv[])
+
+ pesigcheck_context ctx, *ctxp = &ctx;
+
++ struct reason *reasons = NULL;
++ int nreasons = 0;
++
+ char *dbfile = NULL;
+ char *dbxfile = NULL;
+ char *certfile = NULL;
+@@ -242,6 +430,12 @@ main(int argc, char *argv[])
+ .arg = &ctx.quiet,
+ .val = 1,
+ .descrip = "return only; no text output." },
++ {.longName = "verbose",
++ .shortName = 'v',
++ .argInfo = POPT_BIT_SET,
++ .arg = &ctx.verbose,
++ .val = 1,
++ .descrip = "print reasons for success and failure." },
+ {.longName = "no-system-db",
+ .shortName = 'n',
+ .argInfo = POPT_ARG_INT,
+@@ -308,12 +502,16 @@ main(int argc, char *argv[])
+ exit(1);
+ }
+
+- rc = check_signature(ctxp);
++ rc = check_signature(ctxp, &nreasons, &reasons);
+
+- close_input(ctxp);
++ if (!ctx.quiet && ctx.verbose) {
++ for (int i = 0; i < nreasons; i++)
++ print_reason(&reasons[i]);
++ }
+ if (!ctx.quiet)
+ printf("pesigcheck: \"%s\" is %s.\n", ctx.infile,
+ rc >= 0 ? "valid" : "invalid");
++ close_input(ctxp);
+ pesigcheck_context_fini(&ctx);
+
+ NSS_Shutdown();
+diff --git a/src/pesigcheck_context.h b/src/pesigcheck_context.h
+index 7b5cc89..aec415e 100644
+--- a/src/pesigcheck_context.h
++++ b/src/pesigcheck_context.h
+@@ -61,6 +61,7 @@ typedef struct pesigcheck_context {
+ Pe *inpe;
+
+ int quiet;
++ int verbose;
+
+ hashlist *hashes;
+
+--
+2.13.4
+
diff --git a/0021-Fix-race-condition-in-SEC_GetPassword.patch b/0021-Fix-race-condition-in-SEC_GetPassword.patch
new file mode 100644
index 0000000..3088923
--- /dev/null
+++ b/0021-Fix-race-condition-in-SEC_GetPassword.patch
@@ -0,0 +1,34 @@
+From a40c584691ae071e93e8adf4e5c05bcd90c68159 Mon Sep 17 00:00:00 2001
+From: Julien Cristau <jcristau(a)debian.org>
+Date: Sat, 6 May 2017 22:45:34 +0200
+Subject: [PATCH 21/29] Fix race condition in SEC_GetPassword
+
+A side effect of echoOff is to discard unread input, so if we print the
+prompt before echoOff, the user (or process) at the other end might
+react to it by writing the password in between those steps, which is
+then discarded. This bit me when trying to drive pesign with an expect
+script.
+
+Signed-off-by: Julien Cristau <jcristau(a)debian.org>
+---
+ src/password.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/password.c b/src/password.c
+index cd1c07e..d4eae0d 100644
+--- a/src/password.c
++++ b/src/password.c
+@@ -71,9 +71,9 @@ static char *SEC_GetPassword(FILE *input, FILE *output, char *prompt,
+ for (;;) {
+ /* Prompt for password */
+ if (isTTY) {
++ echoOff(infd);
+ fprintf(output, "%s", prompt);
+ fflush (output);
+- echoOff(infd);
+ }
+
+ fgets ( phrase, sizeof(phrase), input);
+--
+2.13.4
+
diff --git a/0022-sysvinit-Create-the-socket-directory-at-runtime.patch b/0022-sysvinit-Create-the-socket-directory-at-runtime.patch
new file mode 100644
index 0000000..06980ee
--- /dev/null
+++ b/0022-sysvinit-Create-the-socket-directory-at-runtime.patch
@@ -0,0 +1,27 @@
+From 27afa5a4ea8de1679603f5871935096280d0b12e Mon Sep 17 00:00:00 2001
+From: David Michael <david.michael(a)coreos.com>
+Date: Tue, 13 Jun 2017 13:20:16 -0700
+Subject: [PATCH 22/29] sysvinit: Create the socket directory at runtime
+
+This better supports non-systemd configurations with tmpfs on /run.
+---
+ src/pesign.sysvinit.in | 3 +++
+ 1 file changed, 3 insertions(+)
+
+diff --git a/src/pesign.sysvinit.in b/src/pesign.sysvinit.in
+index d8fffca..dc508d8 100644
+--- a/src/pesign.sysvinit.in
++++ b/src/pesign.sysvinit.in
+@@ -20,6 +20,9 @@ RETVAL=0
+
+ start(){
+ echo -n "Starting pesign: "
++ mkdir /var/run/pesign 2>/dev/null &&
++ chown pesign:pesign /var/run/pesign &&
++ chmod 0770 /var/run/pesign
+ daemon /usr/bin/pesign --daemonize
+ RETVAL=$?
+ echo
+--
+2.13.4
+
diff --git a/0023-Better-authorization-scripts.-Again.patch b/0023-Better-authorization-scripts.-Again.patch
new file mode 100644
index 0000000..c778c94
--- /dev/null
+++ b/0023-Better-authorization-scripts.-Again.patch
@@ -0,0 +1,217 @@
+From 31560e2784722b986b8a73cc28e3510870180b07 Mon Sep 17 00:00:00 2001
+From: Peter Jones <pjones(a)redhat.com>
+Date: Tue, 8 Aug 2017 15:44:44 -0400
+Subject: [PATCH 23/29] Better authorization scripts. Again.
+
+Signed-off-by: Peter Jones <pjones(a)redhat.com>
+---
+ src/Makefile | 12 ++++++----
+ src/pesign-authorize | 56 +++++++++++++++++++++++++++++++++++++++++++++
+ src/pesign-authorize-groups | 30 ------------------------
+ src/pesign-authorize-users | 30 ------------------------
+ src/pesign.service.in | 3 +--
+ src/pesign.sysvinit.in | 3 +--
+ 6 files changed, 65 insertions(+), 69 deletions(-)
+ create mode 100755 src/pesign-authorize
+ delete mode 100644 src/pesign-authorize-groups
+ delete mode 100644 src/pesign-authorize-users
+
+diff --git a/src/Makefile b/src/Makefile
+index 654b792..84ad130 100644
+--- a/src/Makefile
++++ b/src/Makefile
+@@ -7,7 +7,7 @@ include $(TOPDIR)/Make.defaults
+
+ BINTARGETS=authvar client efikeygen efisiglist pesigcheck pesign
+ SVCTARGETS=pesign.sysvinit pesign.service
+-TARGETS=$(BINTARGETS) $(SVCTARGETS)
++TARGETS=$(BINTARGETS) $(SVCTARGETS) pesign-users pesign-groups
+
+ all : deps $(TARGETS)
+
+@@ -65,6 +65,9 @@ install_sysvinit: pesign.sysvinit
+ $(INSTALL) -d -m 755 $(INSTALLROOT)/etc/rc.d/init.d/
+ $(INSTALL) -m 755 pesign.sysvinit $(INSTALLROOT)/etc/rc.d/init.d/pesign
+
++pesign-users pesign-groups :
++ echo pesign > $@
++
+ install :
+ $(INSTALL) -d -m 700 $(INSTALLROOT)/etc/pki/pesign/
+ $(INSTALL) -d -m 700 $(INSTALLROOT)/etc/pki/pesign-rh-test/
+@@ -88,10 +91,9 @@ install :
+ $(INSTALL) -d -m 755 $(INSTALLROOT)/etc/rpm/
+ $(INSTALL) -m 644 macros.pesign $(INSTALLROOT)/etc/rpm/
+ $(INSTALL) -d -m 755 $(INSTALLROOT)$(libexecdir)/pesign/
+- $(INSTALL) -m 750 pesign-authorize-users $(INSTALLROOT)$(libexecdir)/pesign/
+- $(INSTALL) -m 750 pesign-authorize-groups $(INSTALLROOT)$(libexecdir)/pesign/
++ $(INSTALL) -m 750 pesign-authorize $(INSTALLROOT)$(libexecdir)/pesign/
+ $(INSTALL) -d -m 700 $(INSTALLROOT)/etc/pesign
+- $(INSTALL) -m 600 /dev/null $(INSTALLROOT)/etc/pesign/users
+- $(INSTALL) -m 600 /dev/null $(INSTALLROOT)/etc/pesign/groups
++ $(INSTALL) -m 600 pesign-users $(INSTALLROOT)/etc/pesign/users
++ $(INSTALL) -m 600 pesign-groups $(INSTALLROOT)/etc/pesign/groups
+
+ .PHONY: all deps clean install
+diff --git a/src/pesign-authorize b/src/pesign-authorize
+new file mode 100755
+index 0000000..a496f60
+--- /dev/null
++++ b/src/pesign-authorize
+@@ -0,0 +1,56 @@
++#!/bin/bash
++set -e
++set -u
++
++#
++# With /run/pesign/socket on tmpfs, a simple way of restoring the
++# acls for specific users is useful
++#
++# Compare to: http://infrastructure.fedoraproject.org/cgit/ansible.git/tree/roles/bkern...
++#
++
++# License: GPLv2
++declare -a fileusers=()
++declare -a dirusers=()
++for user in $(cat /etc/pesign/users); do
++ dirusers[${#dirusers[@]}]=-m
++ dirusers[${#dirusers[@]}]="u:$user:rwx"
++ fileusers[${#fileusers[@]}]=-m
++ fileusers[${#fileusers[@]}]="u:$user:rw"
++done
++
++declare -a filegroups=()
++declare -a dirgroups=()
++for group in $(cat /etc/pesign/groups); do
++ dirgroups[${#dirgroups[@]}]=-m
++ dirgroups[${#dirgroups[@]}]="g:$group:rwx"
++ filegroups[${#filegroups[@]}]=-m
++ filegroups[${#filegroups[@]}]="g:$group:rw"
++done
++
++update_subdir() {
++ subdir=$1 && shift
++
++ setfacl -bk "${subdir}"
++ setfacl "${dirusers[@]}" "${dirgroups[@]}" "${subdir}"
++ for x in "${subdir}"* ; do
++ if [ -d "${x}" ]; then
++ setfacl -bk ${x}
++ setfacl "${dirusers[@]}" "${dirgroups[@]}" ${x}
++ update_subdir "${x}/"
++ elif [ -e "${x}" ]; then
++ setfacl -bk ${x}
++ setfacl "${fileusers[@]}" "${filegroups[@]}" ${x}
++ else
++ :;
++ fi
++ done
++}
++
++for x in /var/run/pesign/ /etc/pki/pesign*/ ; do
++ if [ -d "${x}" ]; then
++ update_subdir "${x}"
++ else
++ :;
++ fi
++done
+diff --git a/src/pesign-authorize-groups b/src/pesign-authorize-groups
+deleted file mode 100644
+index cf51fb6..0000000
+--- a/src/pesign-authorize-groups
++++ /dev/null
+@@ -1,30 +0,0 @@
+-#!/bin/bash
+-set -e
+-
+-#
+-# With /run/pesign/socket on tmpfs, a simple way of restoring the
+-# acls for specific groups is useful
+-#
+-# Compare to: http://infrastructure.fedoraproject.org/cgit/ansible.git/tree/roles/bkern...
+-#
+-
+-# License: GPLv2
+-
+-if [ -r /etc/pesign/groups ]; then
+- for group in $(cat /etc/pesign/groups); do
+- if [ -d /var/run/pesign ]; then
+- setfacl -m g:${group}:rx /var/run/pesign
+- if [ -e /var/run/pesign/socket ]; then
+- setfacl -m g:${group}:rw /var/run/pesign/socket
+- fi
+- fi
+- for x in /etc/pki/pesign*/ ; do
+- if [ -d ${x} ]; then
+- setfacl -m g:${group}:rx ${x}
+- for y in ${x}{cert8,key3,secmod}.db ; do
+- setfacl -m g:${group}:rw ${y}
+- done
+- fi
+- done
+- done
+-fi
+diff --git a/src/pesign-authorize-users b/src/pesign-authorize-users
+deleted file mode 100644
+index 940138e..0000000
+--- a/src/pesign-authorize-users
++++ /dev/null
+@@ -1,30 +0,0 @@
+-#!/bin/bash
+-set -e
+-
+-#
+-# With /run/pesign/socket on tmpfs, a simple way of restoring the
+-# acls for specific users is useful
+-#
+-# Compare to: http://infrastructure.fedoraproject.org/cgit/ansible.git/tree/roles/bkern...
+-#
+-
+-# License: GPLv2
+-
+-if [ -r /etc/pesign/users ]; then
+- for username in $(cat /etc/pesign/users); do
+- if [ -d /var/run/pesign ]; then
+- setfacl -m g:${username}:rx /var/run/pesign
+- if [ -e /var/run/pesign/socket ]; then
+- setfacl -m g:${username}:rw /var/run/pesign/socket
+- fi
+- fi
+- for x in /etc/pki/pesign*/ ; do
+- if [ -d ${x} ]; then
+- setfacl -m g:${username}:rx ${x}
+- for y in ${x}{cert8,key3,secmod}.db ; do
+- setfacl -m g:${username}:rw ${y}
+- done
+- fi
+- done
+- done
+-fi
+diff --git a/src/pesign.service.in b/src/pesign.service.in
+index aaa408e..c75a000 100644
+--- a/src/pesign.service.in
++++ b/src/pesign.service.in
+@@ -6,5 +6,4 @@ PrivateTmp=true
+ Type=forking
+ PIDFile=/var/run/pesign.pid
+ ExecStart=/usr/bin/pesign --daemonize
+-ExecStartPost=@@LIBEXECDIR@@/pesign/pesign-authorize-users
+-ExecStartPost=@@LIBEXECDIR@@/pesign/pesign-authorize-groups
++ExecStartPost=@@LIBEXECDIR@@/pesign/pesign-authorize
+diff --git a/src/pesign.sysvinit.in b/src/pesign.sysvinit.in
+index dc508d8..b0e0f84 100644
+--- a/src/pesign.sysvinit.in
++++ b/src/pesign.sysvinit.in
+@@ -27,8 +27,7 @@ start(){
+ RETVAL=$?
+ echo
+ touch /var/lock/subsys/pesign
+- @@LIBEXECDIR@@/pesign/pesign-authorize-users
+- @@LIBEXECDIR@@/pesign/pesign-authorize-groups
++ @@LIBEXECDIR@@/pesign/pesign-authorize
+ }
+
+ stop(){
+--
+2.13.4
+
diff --git a/0024-Make-the-daemon-also-try-to-give-better-errors-on-EP.patch b/0024-Make-the-daemon-also-try-to-give-better-errors-on-EP.patch
new file mode 100644
index 0000000..8f4a380
--- /dev/null
+++ b/0024-Make-the-daemon-also-try-to-give-better-errors-on-EP.patch
@@ -0,0 +1,95 @@
+From a7b0f7e1ce2de1acea9a8c286a0ff3dd9bc245cb Mon Sep 17 00:00:00 2001
+From: Peter Jones <pjones(a)redhat.com>
+Date: Tue, 8 Aug 2017 17:28:19 -0400
+Subject: [PATCH 24/29] Make the daemon also try to give better errors on
+ -EPERM etc.
+
+Basically 6796e5f but also for the daemon. This also tries to fix them
+up to save errno better, for more accurate reporting.
+
+Signed-off-by: Peter Jones <pjones(a)redhat.com>
+---
+ src/daemon.c | 27 +++++++++++++++++++++++++--
+ src/pesign.c | 8 ++++++--
+ 2 files changed, 31 insertions(+), 4 deletions(-)
+
+diff --git a/src/daemon.c b/src/daemon.c
+index 7f694b2..942d576 100644
+--- a/src/daemon.c
++++ b/src/daemon.c
+@@ -19,6 +19,7 @@
+
+ #include <errno.h>
+ #include <fcntl.h>
++#include <glob.h>
+ #include <poll.h>
+ #include <pwd.h>
+ #include <signal.h>
+@@ -1104,10 +1105,32 @@ daemonize(cms_context *cms_ctx, char *certdir, int do_fork)
+ "pesignd starting (pid %d)", ctx.pid);
+
+ SECStatus status = NSS_Init(certdir);
++ int error = errno;
+ if (status != SECSuccess) {
++ char *globpattern = NULL;
++ rc = asprintf(&globpattern, "%s/cert*.db",
++ certdir);
++ if (rc > 0) {
++ glob_t globbuf;
++ memset(&globbuf, 0, sizeof(globbuf));
++ rc = glob(globpattern, GLOB_ERR, NULL,
++ &globbuf);
++ if (rc != 0) {
++ errno = error;
++ ctx.backup_cms->log(ctx.backup_cms,
++ ctx.priority|LOG_NOTICE,
++ "Could not open NSS database (\"%s\"): %m",
++ PORT_ErrorToString(PORT_GetError()));
++ exit(1);
++ }
++ }
++ }
++ if (status != SECSuccess) {
++ errno = error;
+ ctx.backup_cms->log(ctx.backup_cms, ctx.priority|LOG_NOTICE,
+- "Could not initialize nss: %s\n",
+- PORT_ErrorToString(PORT_GetError()));
++ "Could not initialize nss.\n"
++ "NSS says \"%s\" errno says \"%m\"\n",
++ PORT_ErrorToString(PORT_GetError()));
+ exit(1);
+ }
+
+diff --git a/src/pesign.c b/src/pesign.c
+index 5879cfc..6ceda34 100644
+--- a/src/pesign.c
++++ b/src/pesign.c
+@@ -660,10 +660,12 @@ main(int argc, char *argv[])
+
+ if (!daemon) {
+ SECStatus status;
++ int error;
+ if (need_db) {
+ status = NSS_Init(certdir);
+ if (status != SECSuccess) {
+ char *globpattern = NULL;
++ error = errno;
+ rc = asprintf(&globpattern, "%s/cert*.db",
+ certdir);
+ if (rc > 0) {
+@@ -680,8 +682,10 @@ main(int argc, char *argv[])
+ } else
+ status = NSS_NoDB_Init(NULL);
+ if (status != SECSuccess) {
+- errx(1, "Could not initialize nss. NSS says \"%s\" errno says \"%m\"\n",
+- PORT_ErrorToString(PORT_GetError()));
++ errno = error;
++ errx(1, "Could not initialize nss.\n"
++ "NSS says \"%s\" errno says \"%m\"\n",
++ PORT_ErrorToString(PORT_GetError()));
+ }
+
+ status = register_oids(ctxp->cms_ctx);
+--
+2.13.4
+
diff --git a/0025-certdb-fix-PRTime-printfs-for-i686.patch b/0025-certdb-fix-PRTime-printfs-for-i686.patch
new file mode 100644
index 0000000..0fc2ad8
--- /dev/null
+++ b/0025-certdb-fix-PRTime-printfs-for-i686.patch
@@ -0,0 +1,31 @@
+From bc1043bf2b428971e29a61a341da9a57595bada5 Mon Sep 17 00:00:00 2001
+From: Peter Jones <pjones(a)redhat.com>
+Date: Wed, 9 Aug 2017 17:40:33 -0400
+Subject: [PATCH 25/29] certdb: fix PRTime printfs for i686
+
+Signed-off-by: Peter Jones <pjones(a)redhat.com>
+---
+ src/certdb.c | 5 ++---
+ 1 file changed, 2 insertions(+), 3 deletions(-)
+
+diff --git a/src/certdb.c b/src/certdb.c
+index fae80af..29c9502 100644
+--- a/src/certdb.c
++++ b/src/certdb.c
+@@ -384,11 +384,10 @@ check_cert(pesigcheck_context *ctx, SECItem *sig, efi_guid_t *sigtype,
+ }
+
+ if (lateNow < earlyNow)
+- printf("Signature has impossible time constraint: %ld <= %ld\n",
+- earlyNow / 1000000, lateNow / 1000000);
++ printf("Signature has impossible time constraint: %lld <= %lld\n",
++ earlyNow / 1000000LL, lateNow / 1000000LL);
+ atTime = earlyNow / 2 + lateNow / 2;
+
+-
+ cinfo = SEC_PKCS7DecodeItem(pkcs7sig, NULL, NULL, NULL, NULL, NULL,
+ NULL, NULL);
+ if (!cinfo)
+--
+2.13.4
+
diff --git a/0026-Clean-up-gcc-command-lines-a-little.patch b/0026-Clean-up-gcc-command-lines-a-little.patch
new file mode 100644
index 0000000..928d62d
--- /dev/null
+++ b/0026-Clean-up-gcc-command-lines-a-little.patch
@@ -0,0 +1,41 @@
+From a44115c9b4f43a1a7219f897bd33555e653d2e20 Mon Sep 17 00:00:00 2001
+From: Peter Jones <pjones(a)redhat.com>
+Date: Thu, 10 Aug 2017 10:02:38 -0400
+Subject: [PATCH 26/29] Clean up gcc command lines a little
+
+Signed-off-by: Peter Jones <pjones(a)redhat.com>
+---
+ Make.defaults | 9 ++++-----
+ 1 file changed, 4 insertions(+), 5 deletions(-)
+
+diff --git a/Make.defaults b/Make.defaults
+index 39b78f0..b6c0381 100644
+--- a/Make.defaults
++++ b/Make.defaults
+@@ -20,8 +20,7 @@ CROSS_COMPILE ?= $(bindir)
+ PKG_CONFIG = $(CROSS_COMPILE)pkg-config
+ CC := $(if $(filter default,$(origin CC)),$(CROSS_COMPILE)gcc,$(CC))
+ CCLD := $(if $(filter undefined,$(origin CCLD)),$(CC),$(CCLD))
+-CFLAGS ?= -O0 -g3 -fvar-tracking -fvar-tracking-assignments \
+- -Wall -Werror -Wextra -Wno-error=cpp
++CFLAGS ?= -O0 -g3 -fvar-tracking -fvar-tracking-assignments -Wno-error=cpp
+ AS := $(CROSS_COMPILE)as
+ AR := $(CROSS_COMPILE)gcc-ar
+ RANLIB := $(CROSS_COMPILE)gcc-ranlib
+@@ -36,10 +35,10 @@ ARCH := $(shell uname -m | sed s,i[3456789]86,ia32,)
+
+ SOFLAGS = -shared
+ clang_cflags =
+-gcc_cflags = -Wmaybe-uninitialized
++gcc_cflags = -Wmaybe-uninitialized -grecord-gcc-switches
+ cflags = $(CFLAGS) $(ARCH3264) \
+- -Wall -Werror -Wno-cpp -Wsign-compare -Wno-unused-result \
+- -Wno-unused-function\
++ -Wall -Werror -Wextra -Wsign-compare -Wno-unused-result \
++ -Wno-unused-function -Wsign-compare \
+ -std=gnu11 -fshort-wchar -fPIC -flto -fno-strict-aliasing \
+ -fno-merge-constants -fkeep-inline-functions \
+ -D_GNU_SOURCE -DCONFIG_$(ARCH) -I${TOPDIR}/include \
+--
+2.13.4
+
diff --git a/0027-Make-pesign-users-groups-static-in-the-repo.patch b/0027-Make-pesign-users-groups-static-in-the-repo.patch
new file mode 100644
index 0000000..4131de3
--- /dev/null
+++ b/0027-Make-pesign-users-groups-static-in-the-repo.patch
@@ -0,0 +1,54 @@
+From a133d051c3f8acf3e058e92711eb528c3c0f41f9 Mon Sep 17 00:00:00 2001
+From: Peter Jones <pjones(a)redhat.com>
+Date: Thu, 10 Aug 2017 10:03:37 -0400
+Subject: [PATCH 27/29] Make pesign-{users,groups} static in the repo.
+
+Signed-off-by: Peter Jones <pjones(a)redhat.com>
+---
+ src/Makefile | 5 +----
+ src/pesign-groups | 1 +
+ src/pesign-users | 1 +
+ 3 files changed, 3 insertions(+), 4 deletions(-)
+ create mode 100644 src/pesign-groups
+ create mode 100644 src/pesign-users
+
+diff --git a/src/Makefile b/src/Makefile
+index 84ad130..7d68fa1 100644
+--- a/src/Makefile
++++ b/src/Makefile
+@@ -7,7 +7,7 @@ include $(TOPDIR)/Make.defaults
+
+ BINTARGETS=authvar client efikeygen efisiglist pesigcheck pesign
+ SVCTARGETS=pesign.sysvinit pesign.service
+-TARGETS=$(BINTARGETS) $(SVCTARGETS) pesign-users pesign-groups
++TARGETS=$(BINTARGETS) $(SVCTARGETS)
+
+ all : deps $(TARGETS)
+
+@@ -65,9 +65,6 @@ install_sysvinit: pesign.sysvinit
+ $(INSTALL) -d -m 755 $(INSTALLROOT)/etc/rc.d/init.d/
+ $(INSTALL) -m 755 pesign.sysvinit $(INSTALLROOT)/etc/rc.d/init.d/pesign
+
+-pesign-users pesign-groups :
+- echo pesign > $@
+-
+ install :
+ $(INSTALL) -d -m 700 $(INSTALLROOT)/etc/pki/pesign/
+ $(INSTALL) -d -m 700 $(INSTALLROOT)/etc/pki/pesign-rh-test/
+diff --git a/src/pesign-groups b/src/pesign-groups
+new file mode 100644
+index 0000000..7f57cc5
+--- /dev/null
++++ b/src/pesign-groups
+@@ -0,0 +1 @@
++pesign
+diff --git a/src/pesign-users b/src/pesign-users
+new file mode 100644
+index 0000000..7f57cc5
+--- /dev/null
++++ b/src/pesign-users
+@@ -0,0 +1 @@
++pesign
+--
+2.13.4
+
diff --git a/0028-rpm-Make-the-client-signer-use-the-fedora-values-unl.patch b/0028-rpm-Make-the-client-signer-use-the-fedora-values-unl.patch
new file mode 100644
index 0000000..3f0b2e1
--- /dev/null
+++ b/0028-rpm-Make-the-client-signer-use-the-fedora-values-unl.patch
@@ -0,0 +1,43 @@
+From 025eb8aea94761fdc45507b6192aafdef80d4842 Mon Sep 17 00:00:00 2001
+From: Peter Jones <pjones(a)redhat.com>
+Date: Wed, 9 Aug 2017 17:31:31 -0400
+Subject: [PATCH 28/29] rpm: Make the client signer use the fedora values
+ unless overridden
+
+Signed-off-by: Peter Jones <pjones(a)redhat.com>
+---
+ src/macros.pesign | 9 ++++++---
+ 1 file changed, 6 insertions(+), 3 deletions(-)
+
+diff --git a/src/macros.pesign b/src/macros.pesign
+index 69280e9..22a3ee6 100644
+--- a/src/macros.pesign
++++ b/src/macros.pesign
+@@ -9,6 +9,9 @@
+ %__pesign_token %{nil}%{?pe_signing_token:-t "%{pe_signing_token}"}
+ %__pesign_cert %{!?pe_signing_cert:"Red Hat Test Certificate"}%{?pe_signing_cert:"%{pe_signing_cert}"}
+
++%__pesign_client_token %{!?pe_signing_token:"Fedora Signer (OpenSC Card)"}%{?pe_signing_token:"%{pe_signing_token}"}
++%__pesign_client_cert %{!?pe_signing_cert:"/CN=Fedora Secure Boot Signer"}%{?pe_signing_cert:"%{pe_signing_cert}"}
++
+ %_pesign /usr/bin/pesign
+ %_pesign_client /usr/bin/pesign-client
+
+@@ -41,11 +44,11 @@
+ --certdir ${nss} -c signer %{-o} \
+ rm -rf ${sattrs} ${sattrs}.sig ${nss} \
+ elif [ -S /var/run/pesign/socket ]; then \
+- %{_pesign_client} -t %{__pesign_token} \\\
+- -c %{__pesign_cert} \\\
++ %{_pesign_client} -t %{__pesign_client_token} \\\
++ -c %{__pesign_client_cert} \\\
+ %{-i} %{-o} %{-e} %{-s} %{-C} \
+ else \
+- %{_pesign} -t %{__pesign_token} -c %{__pesign_cert} \\\
++ %{_pesign} %{__pesign_token} -c %{__pesign_cert} \\\
+ --certdir ${_pesign_nssdir} \\\
+ %{-i} %{-o} %{-e} %{-s} %{-C} \
+ fi \
+--
+2.13.4
+
diff --git a/0029-Make-macros.pesign-error-in-kojibuilder-if-we-don-t-.patch b/0029-Make-macros.pesign-error-in-kojibuilder-if-we-don-t-.patch
new file mode 100644
index 0000000..753afe8
--- /dev/null
+++ b/0029-Make-macros.pesign-error-in-kojibuilder-if-we-don-t-.patch
@@ -0,0 +1,39 @@
+From 86a6b02e4b95ab3629446e71895cc5e57ad4482f Mon Sep 17 00:00:00 2001
+From: Peter Jones <pjones(a)redhat.com>
+Date: Mon, 14 Aug 2017 11:37:43 -0400
+Subject: [PATCH 29/29] Make macros.pesign error in kojibuilder if we don't
+ have perms on the socket
+
+---
+ src/macros.pesign | 9 +++++++++
+ 1 file changed, 9 insertions(+)
+
+diff --git a/src/macros.pesign b/src/macros.pesign
+index 22a3ee6..1665b4c 100644
+--- a/src/macros.pesign
++++ b/src/macros.pesign
+@@ -43,6 +43,21 @@
+ %{_pesign} -R ${sattrs}.sig -I ${sattrs} %{-i} \\\
+ --certdir ${nss} -c signer %{-o} \
+ rm -rf ${sattrs} ${sattrs}.sig ${nss} \
++ elif [ "%{vendor}" == "Fedora Project" -a \\\
++ "$(id -un)" == "mockbuild" -a \\\
++ "$(uname -m)" == "x86_64" ] && \\\
++ grep -q ID=fedora /etc/os-release && \\\
++ [[ "%{_buildhost}" =~ ^bkernel.* ]] && \\\
++ ! [ -S /var/run/pesign/socket ]; then \
++ echo "No socket even though this is %{_buildhost}" \
++ ls -ld /var/run/pesign || : \
++ getfacl /var/run/pesign || : \
++ ls -l /var/run/pesign/socket || : \
++ getfacl /var/run/pesign/socket || : \
++ echo =========== env ============== \
++ set \
++ echo =========== env ============== \
++ exit 1 \
+ elif [ -S /var/run/pesign/socket ]; then \
+ %{_pesign_client} -t %{__pesign_client_token} \\\
+ -c %{__pesign_client_cert} \\\
+--
+2.13.4
+
diff --git a/dead.package b/dead.package
deleted file mode 100644
index 5684bd0..0000000
--- a/dead.package
+++ /dev/null
@@ -1 +0,0 @@
-pesign fails to build from source: https://bugzilla.redhat.com/show_bug.cgi?id=1675653
diff --git a/pesign.py b/pesign.py
new file mode 100644
index 0000000..4ee59f8
--- /dev/null
+++ b/pesign.py
@@ -0,0 +1,91 @@
+#!/usr/bin/python3
+#
+# Copyright 2017 Peter Jones <Peter Jones@random>
+#
+# Distributed under terms of the GPLv3 license.
+
+"""
+mock plugin to make sure pesign and mockbuild users have the right uid and
+gid.
+"""
+
+from mockbuild.trace_decorator import getLog, traceLog
+import mockbuild.util
+
+requires_api_version = "1.1"
+
+@traceLog()
+def init(plugins, conf, buildroot):
+ """ hello """
+ Pesign(plugins, conf, buildroot)
+
+def getuid(name):
+ """ get a uid for a user name """
+ output = mockbuild.util.do(["getent", "passwd", "%s" % (name,)],
+ returnOutput=1, printOutput=True)
+ output = output.split(':')
+ return output[2], output[3]
+
+def getgid(name):
+ """ get a gid for a group name """
+ output = mockbuild.util.do(["getent", "group", "%s" % (name,)],
+ returnOutput=1, printOutput=True)
+ return output.split(':')[2]
+
+def newgroup(name, gid, rootdir):
+ """ create a group with a gid """
+ getLog().info("creating group %s with gid %s" % (name, gid))
+ mockbuild.util.do(["groupadd",
+ "-g", "%s" % (gid,),
+ "-R", "%s" % (rootdir,),
+ "%s" % (name,),
+ ])
+
+def newuser(name, uid, gid, rootdir):
+ """ create a user with a uid """
+ getLog().info("creating user %s with uid %s" % (name, uid))
+ mockbuild.util.do(["useradd",
+ "-u", "%s" % (uid,),
+ "-g", "%s" % (gid,),
+ "-R", "%s" % (rootdir,),
+ "%s" % (name,)])
+
+class Pesign(object):
+ """ Creates some stuff in our mock root """
+ # pylint: disable=too-few-public-methods
+ @traceLog()
+ def __init__(self, plugins, conf, buildroot):
+ """ Effectively we're doing:
+ getent group pesign >/dev/null || groupadd -r pesign
+ getent passwd pesign >/dev/null || \
+ useradd -r -g pesign -d /var/run/pesign -s /sbin/nologin \
+ -c "Group for the pesign signing daemon" pesign
+ """
+
+ self.buildroot = buildroot
+ self.pesign_opts = conf
+ self.config = buildroot.config
+ self.state = buildroot.state
+ self.users = {}
+ self.groups = {}
+ plugins.add_hook("postinit", self._pesignPostInitHook)
+
+ @traceLog()
+ def _pesignPostInitHook(self):
+ """ find our uid and gid lists """
+ for user in self.pesign_opts['users']:
+ uid, gid = getuid(user)
+ self.users[user] = [user, uid, gid]
+ for group in self.pesign_opts['groups']:
+ gid = getgid(group)
+ self.groups[group] = [group, gid]
+
+ # create our users
+ rootdir = self.buildroot.make_chroot_path()
+ for name, gid in self.groups.values():
+ newgroup(name, gid, rootdir)
+ for name, uid, gid in self.users.values():
+ newuser(name, uid, gid, rootdir)
+
+# -*- coding: utf-8 -*-
+# vim:fenc=utf-8:tw=75
diff --git a/pesign.spec b/pesign.spec
new file mode 100644
index 0000000..0d6ce00
--- /dev/null
+++ b/pesign.spec
@@ -0,0 +1,446 @@
+%global macrosdir %(d=%{_rpmconfigdir}/macros.d; [ -d $d ] || d=%{_sysconfdir}/rpm; echo $d)
+
+Name: pesign
+Summary: Signing utility for UEFI binaries
+Version: 0.112
+Release: 26%{?dist}
+License: GPLv2
+URL: https://github.com/vathpela/pesign
+
+Obsoletes: pesign-rh-test-certs <= 0.111-7
+BuildRequires: gcc
+BuildRequires: git
+BuildRequires: nspr
+BuildRequires: nss
+BuildRequires: nss-util
+BuildRequires: popt-devel
+BuildRequires: nss-tools
+BuildRequires: nspr-devel >= 4.9.2-1
+BuildRequires: nss-devel >= 3.13.6-1
+BuildRequires: efivar-devel >= 31-1
+BuildRequires: libuuid-devel
+BuildRequires: tar
+BuildRequires: xz
+BuildRequires: python3-rpm-macros
+BuildRequires: python3
+%if 0%{?rhel} >= 7 || 0%{?fedora} >= 17
+BuildRequires: systemd-rpm-macros
+%endif
+Requires: nspr
+Requires: nss
+Requires: nss-util
+Requires: popt
+Requires: rpm
+Requires(pre): shadow-utils
+ExclusiveArch: %{ix86} x86_64 ia64 aarch64 %{arm}
+%if 0%{?rhel} == 7
+BuildRequires: rh-signing-tools >= 1.20-2
+%endif
+
+Source0: https://github.com/vathpela/pesign/releases/download/%{version}/pesign-%{...
+Source1: certs.tar.xz
+Source2: pesign.py
+
+Patch0001: 0001-cms-kill-generate_integer-it-doesn-t-build-on-i686-a.patch
+Patch0002: 0002-Fix-command-line-parsing.patch
+Patch0003: 0003-gcc-don-t-error-on-stuff-in-includes.patch
+Patch0004: 0004-Fix-certficate-argument-name.patch
+Patch0005: 0005-Fix-description-of-ascii-armor-option-in-manpage.patch
+Patch0006: 0006-Make-ascii-work-since-we-documented-it.patch
+Patch0007: 0007-Switch-pesign-client-to-also-accept-token-cert-macro.patch
+Patch0008: 0008-pesigcheck-Verify-with-the-cert-as-an-object-signer.patch
+Patch0009: 0009-pesigcheck-make-certfile-actually-work.patch
+Patch0010: 0010-signerInfos-make-sure-err-is-always-initialized.patch
+Patch0011: 0011-pesign-make-pesign-h-tell-you-the-file-name.patch
+Patch0012: 0012-Add-coverity-build-scripts.patch
+Patch0013: 0013-Document-implicit-fallthrough.patch
+Patch0014: 0014-Actually-setfacl-each-directory-of-our-key-storage.patch
+Patch0015: 0015-oid-add-SHIM_EKU_MODULE_SIGNING_ONLY-and-fix-our-arr.patch
+Patch0016: 0016-efikeygen-add-modsign.patch
+Patch0017: 0017-check_cert_db-try-even-harder-to-pick-a-reasonable-v.patch
+Patch0018: 0018-show-which-db-we-re-checking.patch
+Patch0019: 0019-more-about-the-time.patch
+Patch0020: 0020-try-to-say-why-something-fails.patch
+Patch0021: 0021-Fix-race-condition-in-SEC_GetPassword.patch
+Patch0022: 0022-sysvinit-Create-the-socket-directory-at-runtime.patch
+Patch0023: 0023-Better-authorization-scripts.-Again.patch
+Patch0024: 0024-Make-the-daemon-also-try-to-give-better-errors-on-EP.patch
+Patch0025: 0025-certdb-fix-PRTime-printfs-for-i686.patch
+Patch0026: 0026-Clean-up-gcc-command-lines-a-little.patch
+Patch0027: 0027-Make-pesign-users-groups-static-in-the-repo.patch
+Patch0028: 0028-rpm-Make-the-client-signer-use-the-fedora-values-unl.patch
+Patch0029: 0029-Make-macros.pesign-error-in-kojibuilder-if-we-don-t-.patch
+
+%description
+This package contains the pesign utility for signing UEFI binaries as
+well as other associated tools.
+
+%prep
+%setup -q -T -b 0
+%setup -q -T -D -c -n pesign-%{version}/ -a 1
+git init
+git config user.email "pesign-owner(a)fedoraproject.org"
+git config user.name "Fedora Ninjas"
+git add .
+git commit -a -q -m "%{version} baseline."
+git am %{patches} </dev/null
+git config --unset user.email
+git config --unset user.name
+
+# https://bugzilla.redhat.com/show_bug.cgi?id=1678146
+sed -i 's|/var/run/pesign|/run/pesign|' src/tmpfiles.conf
+
+%build
+make PREFIX=%{_prefix} LIBDIR=%{_libdir}
+
+%install
+mkdir -p %{buildroot}/%{_libdir}
+make PREFIX=%{_prefix} LIBDIR=%{_libdir} INSTALLROOT=%{buildroot} \
+ install
+%if 0%{?rhel} >= 7 || 0%{?fedora} >= 17
+make PREFIX=%{_prefix} LIBDIR=%{_libdir} INSTALLROOT=%{buildroot} \
+ install_systemd
+%endif
+
+# there's some stuff that's not really meant to be shipped yet
+rm -rf %{buildroot}/boot %{buildroot}/usr/include
+rm -rf %{buildroot}%{_libdir}/libdpe*
+mkdir -p %{buildroot}%{_sysconfdir}/pki/pesign/
+mkdir -p %{buildroot}%{_sysconfdir}/pki/pesign-rh-test/
+cp -a etc/pki/pesign/* %{buildroot}%{_sysconfdir}/pki/pesign/
+cp -a etc/pki/pesign-rh-test/* %{buildroot}%{_sysconfdir}/pki/pesign-rh-test/
+
+if [ %{macrosdir} != %{_sysconfdir}/rpm ]; then
+ mkdir -p %{buildroot}%{macrosdir}
+ mv %{buildroot}%{_sysconfdir}/rpm/macros.pesign \
+ %{buildroot}%{macrosdir}
+ rmdir %{buildroot}%{_sysconfdir}/rpm
+fi
+rm -vf %{buildroot}/usr/share/doc/pesign-%{version}/COPYING
+
+# and find-debuginfo.sh has some pretty awful deficencies too...
+cp -av libdpe/*.[ch] src/
+
+install -d -m 0755 %{buildroot}%{python3_sitelib}/mockbuild/plugins/
+install -m 0755 %{SOURCE2} %{buildroot}%{python3_sitelib}/mockbuild/plugins/
+
+%pre
+getent group pesign >/dev/null || groupadd -r pesign
+getent passwd pesign >/dev/null || \
+ useradd -r -g pesign -d /var/run/pesign -s /sbin/nologin \
+ -c "Group for the pesign signing daemon" pesign
+exit 0
+
+%if 0%{?rhel} >= 7 || 0%{?fedora} >= 17
+%post
+%systemd_post pesign.service
+
+#%%posttrans
+#%%{_libexecdir}/pesign/pesign-authorize
+
+%preun
+%systemd_preun pesign.service
+
+%postun
+%systemd_postun_with_restart pesign.service
+%endif
+
+%files
+%{!?_licensedir:%global license %%doc}
+%license COPYING
+%doc README TODO
+%{_bindir}/authvar
+%{_bindir}/efikeygen
+%{_bindir}/efisiglist
+%{_bindir}/pesigcheck
+%{_bindir}/pesign
+%{_bindir}/pesign-client
+%dir %{_libexecdir}/pesign/
+%dir %attr(0770,pesign,pesign) %{_sysconfdir}/pki/pesign/
+%config(noreplace) %attr(0660,pesign,pesign) %{_sysconfdir}/pki/pesign/*
+%dir %attr(0775,pesign,pesign) %{_sysconfdir}/pki/pesign-rh-test/
+%config(noreplace) %attr(0664,pesign,pesign) %{_sysconfdir}/pki/pesign-rh-test/*
+%{_libexecdir}/pesign/pesign-authorize
+%config(noreplace)/%{_sysconfdir}/pesign/users
+%config(noreplace)/%{_sysconfdir}/pesign/groups
+%{_sysconfdir}/popt.d/pesign.popt
+%{macrosdir}/macros.pesign
+%{_mandir}/man*/*
+%dir %attr(0770, pesign, pesign) %{_localstatedir}/run/%{name}
+%ghost %attr(0660, -, -) %{_localstatedir}/run/%{name}/socket
+%ghost %attr(0660, -, -) %{_localstatedir}/run/%{name}/pesign.pid
+%if 0%{?rhel} >= 7 || 0%{?fedora} >= 17
+%{_tmpfilesdir}/pesign.conf
+%{_unitdir}/pesign.service
+%endif
+%{python3_sitelib}/mockbuild/plugins/*/pesign.*
+%{python3_sitelib}/mockbuild/plugins/pesign.*
+
+%changelog
+* Fri Jul 26 2019 Fedora Release Engineering <releng(a)fedoraproject.org> - 0.112-26
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
+
+* Wed Mar 6 2019 Zbigniew Jdrzejewski-Szmek <zbyszek(a)in.waw.pl> - 0.112-25
+- Fix build (#1675653)
+- Add missing closing quote in macro (#1651020)
+- Update obsolete /var/run/ path (#1678146)
+
+* Sat Feb 02 2019 Fedora Release Engineering <releng(a)fedoraproject.org> - 0.112-25
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild
+
+* Fri Jul 13 2018 Fedora Release Engineering <releng(a)fedoraproject.org> - 0.112-24
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild
+
+* Fri Feb 09 2018 Fedora Release Engineering <releng(a)fedoraproject.org> - 0.112-23
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild
+
+* Mon Jan 22 2018 Peter Robinson <pbrobinson(a)fedoraproject.org> 0.112-22
+- Minor spec cleanups, fix arm conditional
+
+* Fri Oct 06 2017 Troy Dawson <tdawson(a)redhat.com> - 0.112-21
+- Cleanup spec file conditionals
+
+* Tue Aug 15 2017 Peter Jones <pjones(a)redhat.com> - 0.112-20
+- Maybe fewer typoes would be better.
+
+* Tue Aug 15 2017 Peter Jones <pjones(a)redhat.com> - 0.112-19
+- Update to match f26's build so new kernel builds will work.
+
+* Thu Aug 10 2017 Peter Jones <pjones(a)redhat.com> - 0.112-10
+- Try to fix the db problem nirik is seeing trying to upgrade the builders.
+
+* Thu Aug 03 2017 Fedora Release Engineering <releng(a)fedoraproject.org> - 0.112-9
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild
+
+* Thu Jul 27 2017 Fedora Release Engineering <releng(a)fedoraproject.org> - 0.112-8
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild
+
+* Sat Jul 08 2017 Peter Jones <pjones(a)redhat.com> - 0.112-7
+- Rebuild for efivar-31-1.fc26
+ Related: rhbz#1468841
+
+* Sat Feb 11 2017 Fedora Release Engineering <releng(a)fedoraproject.org> - 0.112-6
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild
+
+* Fri Jan 06 2017 Peter Jones <pjones(a)redhat.com> - 0.112-5
+- Don't Req: or BuildReq: coolkey or opensc; those belong in system deploy
+ scripts.
+ Related: rhbz#1349073
+
+* Wed Aug 17 2016 Peter Jones <pjones(a)redhat.com> - 0.112-4
+- Build as -4 to make bodhi happy.
+
+* Fri Aug 12 2016 Adam Williamson <awilliam(a)redhat.com> - 0.112-3
+- backport fix for command line parsing from upstream master
+
+* Wed Aug 10 2016 Peter Jones <pjones(a)redhat.com> - 0.112-2
+- Build with newer efivar.
+
+* Wed Apr 20 2016 Peter Jones <pjones(a)redhat.com> - 0.112-1
+- Update to 0.112
+- Also fix up some spec file woes:
+ - dumb things in %%setup
+ - find-debuginfo.sh not working right for some source files...
+
+* Thu Feb 04 2016 Fedora Release Engineering <releng(a)fedoraproject.org> - 0.111-8
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild
+
+* Thu Dec 10 2015 Peter Jones <pjones(a)redhat.com> - 0.111-7
+- Obsolete pesign-rh-test-certs, it was in -1's update.
+ Resolves: rhbz#1283475
+
+* Wed Dec 02 2015 Peter Jones <pjones(a)redhat.com> - 0.111-6
+- *Don't* use --certdir if we're using the socket.
+ Related: rhbz#1283475
+ Related: rhbz#1284063
+ Related: rhbz#1284561
+
+* Tue Dec 01 2015 Peter Jones <pjones(a)redhat.com> - 0.111-5
+- Actually do a better job of choosing which cert to use when, so people will
+ stop seeing any of this problem. (Thanks for the thought, jforbes.)
+ Resolves: rhbz#1283475
+ Resolves: rhbz#1284063
+ Resolves: rhbz#1284561
+
+* Mon Nov 30 2015 Peter Jones <pjones(a)redhat.com> - 0.111-5
+- setfacl even harder.
+ Related: rhbz#1283475
+ Related: rhbz#1284063
+ Related: rhbz#1284561
+
+* Fri Nov 20 2015 Peter Jones <pjones(a)redhat.com> - 0.111-3
+- Better ACL setting code.
+ Related: rhbz#1283475
+
+* Thu Nov 19 2015 Peter Jones <pjones(a)redhat.com> - 0.111-2
+- Allow the mockbuild user to read the nss database if the account exists.
+
+* Wed Oct 28 2015 Peter Jones <pjones(a)redhat.com> - 0.111-1
+- Rebase to 0.111
+- Split test certs out into a "Recommends" subpackage.
+
+* Thu Jun 18 2015 Fedora Release Engineering <rel-eng(a)lists.fedoraproject.org> - 0.110-3
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild
+
+* Wed Mar 4 2015 Ville Skytt <ville.skytta(a)iki.fi> - 0.110-2
+- Install macros in %%{_rpmconfigdir}/macros.d where available (#1074281)
+
+* Fri Oct 24 2014 Peter Jones <pjones(a)redhat.com> - 0.110-1
+- Update to pesign-0.110
+
+* Sun Aug 17 2014 Fedora Release Engineering <rel-eng(a)lists.fedoraproject.org> - 0.108-4
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild
+
+* Sat Jun 07 2014 Fedora Release Engineering <rel-eng(a)lists.fedoraproject.org> - 0.108-3
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild
+
+* Thu May 29 2014 Peter Jones <pjones(a)redhat.com> - 0.108-2
+- Fix a networking problem nirik observed when reinstalling builders.
+
+* Sat Aug 10 2013 Peter Jones <pjones(a)redhat.com> - 0.108-1
+- Remove errant result files and raise an error from %%pesign
+
+* Tue Aug 06 2013 Peter Jones <pjones(a)redhat.com> - 0.106-3
+- Add code for signing in RHEL 7
+
+* Mon Aug 05 2013 Peter Jones <pjones(a)redhat.com> - 0.106-2
+- Fix for new %%doc rules.
+
+* Sun Aug 04 2013 Fedora Release Engineering <rel-eng(a)lists.fedoraproject.org> - 0.106-2
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild
+
+* Tue May 21 2013 Peter Jones <pjones(a)redhat.com> - 0.106-1
+- Update to 0.106
+- Hopefully fix the segfault dgilmore was seeing.
+
+* Mon May 20 2013 Peter Jones <pjones(a)redhat.com> - 0.105-1
+- Various bug fixes.
+
+* Wed May 15 2013 Peter Jones <pjones(a)redhat.com> - 0.104-1
+- Make sure alignment is correct on signature list entries
+ Resolves: rhbz#963361
+- Make sure section alignment is correct if we have to extend the file
+
+* Wed Feb 06 2013 Peter Jones <pjones(a)redhat.com> - 0.103-2
+- Conditionalize systemd bits so they don't show up in RHEL 6 builds
+
+* Tue Feb 05 2013 Peter Jones <pjones(a)redhat.com> - 0.103-1
+- One more compiler problem. Let's expect a few more, shall we?
+
+* Tue Feb 05 2013 Peter Jones <pjones(a)redhat.com> - 0.102-1
+- Don't use --std=gnu11 because we have to work on RHEL 6 builders.
+
+* Mon Feb 04 2013 Peter Jones <pjones(a)redhat.com> - 0.101-1
+- Update to 0.101 to fix more "pesign -E" issues.
+
+* Fri Nov 30 2012 Peter Jones <pjones(a)redhat.com> - 0.100-1
+- Fix insertion of signatures from a file.
+
+* Mon Nov 26 2012 Matthew Garrett <mjg59(a)srcf.ucam.org> - 0.99-9
+- Add a patch needed for new shim builds
+
+* Fri Oct 19 2012 Peter Jones <pjones(a)redhat.com> - 0.99-8
+- Get the Fedora signing token name right.
+
+* Fri Oct 19 2012 Peter Jones <pjones(a)redhat.com>
+- Add coolkey and opensc modules to pki database during %%install.
+
+* Fri Oct 19 2012 Peter Jones <pjones(a)redhat.com> - 0.99-7
+- setfacl u:kojibuilder:rw /var/run/pesign/socket
+- Fix command line checking in client
+- Add client stdin pin reading.
+
+* Thu Oct 18 2012 Peter Jones <pjones(a)redhat.com> - 0.99-6
+- Automatically select daemon as signer when using rpm macros.
+
+* Thu Oct 18 2012 Peter Jones <pjones(a)redhat.com> - 0.99-5
+- Make it work on the -el6 branch as well.
+
+* Wed Oct 17 2012 Peter Jones <pjones(a)redhat.com> - 0.99-4
+- Fix some more bugs found by valgrind and coverity.
+- Don't build utils/ ; we're not using them and they're not ready anyway.
+
+* Wed Oct 17 2012 Peter Jones <pjones(a)redhat.com> - 0.99-3
+- Fix daemon startup bug from 0.99-2
+
+* Wed Oct 17 2012 Peter Jones <pjones(a)redhat.com> - 0.99-2
+- Fix various bugs from 0.99-1
+- Don't make the database unreadable just yet.
+
+* Mon Oct 15 2012 Peter Jones <pjones(a)redhat.com> - 0.99-1
+- Update to 0.99
+- Add documentation for client/server mode.
+- Add --pinfd and --pinfile to server mode.
+
+* Fri Oct 12 2012 Peter Jones <pjones(a)redhat.com> - 0.98-1
+- Update to 0.98
+- Add client/server mode.
+
+* Mon Oct 01 2012 Peter Jones <pjones(a)redhat.com> - 0.10-5
+- Fix missing section address fixup.
+
+* Wed Aug 15 2012 Peter Jones <pjones(a)redhat.com> - 0.10-4
+- Make macros.pesign even better (and make it work right for i686 packages)
+
+* Tue Aug 14 2012 Peter Jones <pjones(a)redhat.com> - 0.10-3
+- Only sign things on x86_64; all else ignore gracefully.
+
+* Tue Aug 14 2012 Peter Jones <pjones(a)redhat.com> - 0.10-2
+- Make macros.pesign more reliable
+
+* Mon Aug 13 2012 Peter Jones <pjones(a)redhat.com> - 0.10-1
+- Update to 0.10
+- Include rpm macros to support easy custom signing of signed packages.
+
+* Fri Aug 10 2012 Peter Jones <pjones(a)redhat.com> - 0.9-1
+- Update to 0.9
+- Bug fix from Gary Ching-Pang Lin
+- Support NSS Token selection for use with smart cards.
+
+* Wed Aug 08 2012 Peter Jones <pjones(a)redhat.com> - 0.8-1
+- Update to 0.8
+- Don't open the db read-write
+- Fix permissions on keystore (everybody can sign with test keys)
+
+* Wed Aug 08 2012 Peter Jones <pjones(a)redhat.com> - 0.7-2
+- Include test keys.
+
+* Mon Jul 30 2012 Peter Jones <pjones(a)redhat.com> - 0.7-1
+- Update to 0.7
+- Better fix for MS compatibility.
+
+* Mon Jul 30 2012 Peter Jones <pjones(a)redhat.com> - 0.6-1
+- Update to 0.6
+- Bug-for-bug compatibility with signtool.exe .
+
+* Fri Jul 20 2012 Fedora Release Engineering <rel-eng(a)lists.fedoraproject.org> - 0.5-2
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild
+
+* Wed Jul 11 2012 Peter Jones <pjones(a)redhat.com> - 0.5-1
+- Rebase to 0.5
+- Do more rigorous bounds checking when hashing a new binary.
+
+* Tue Jul 10 2012 Peter Jones <pjones(a)redhat.com> - 0.3-2
+- Rebase to 0.4
+
+* Fri Jun 22 2012 Peter Jones <pjones(a)redhat.com> - 0.3-2
+- Move man page to a more reasonable place.
+
+* Fri Jun 22 2012 Peter Jones <pjones(a)redhat.com> - 0.3-1
+- Update to upstream's 0.3 .
+
+* Thu Jun 21 2012 Peter Jones <pjones(a)redhat.com> - 0.2-4
+- Do not build with smp flags.
+
+* Thu Jun 21 2012 Peter Jones <pjones(a)redhat.com> - 0.2-3
+- Make it build on i686, though it's unclear it'll ever be necessary.
+
+* Thu Jun 21 2012 Peter Jones <pjones(a)redhat.com> - 0.2-2
+- Fix compile problem with f18's compiler.
+
+* Thu Jun 21 2012 Peter Jones <pjones(a)redhat.com> - 0.2-1
+- Fix some rpmlint complaints nirik pointed out
+- Add popt-devel build dep
+
+* Fri Jun 15 2012 Peter Jones <pjones(a)redhat.com> - 0.1-1
+- First version of SRPM.
diff --git a/sources b/sources
new file mode 100644
index 0000000..c2671ea
--- /dev/null
+++ b/sources
@@ -0,0 +1,2 @@
+e377e0bc924287ee09356a239c5f51a8 certs.tar.xz
+eae1d66e160be744ff310ad7592ae31e pesign-0.112.tar.bz2
commit f45e45d1276f29c56739d6aa6e33f79ffac37abe
Author: Fedora Release Engineering <releng(a)fedoraproject.org>
Date: Thu Aug 8 16:17:10 2019 +0000
pesign fails to build from source: https://bugzilla.redhat.com/show_bug.cgi?id=1675653
diff --git a/.gitignore b/.gitignore
deleted file mode 100644
index 56f099b..0000000
--- a/.gitignore
+++ /dev/null
@@ -1,7 +0,0 @@
-/pesign-*.tar.bz2
-clog
-/rh-test-certs.tar.bz2
-*.rpm
-/certs.tar.xz
-.build*.log
-/pesign-*/
diff --git a/0001-cms-kill-generate_integer-it-doesn-t-build-on-i686-a.patch b/0001-cms-kill-generate_integer-it-doesn-t-build-on-i686-a.patch
deleted file mode 100644
index 0c82dcf..0000000
--- a/0001-cms-kill-generate_integer-it-doesn-t-build-on-i686-a.patch
+++ /dev/null
@@ -1,72 +0,0 @@
-From 33bcca8303cad962606df3bfc6a031a9b0626375 Mon Sep 17 00:00:00 2001
-From: Peter Jones <pjones(a)redhat.com>
-Date: Thu, 21 Apr 2016 10:47:34 -0400
-Subject: [PATCH 01/29] cms: kill generate_integer(), it doesn't build on i686
- and it's unused.
-
-Signed-off-by: Peter Jones <pjones(a)redhat.com>
----
- src/cms_common.c | 34 ----------------------------------
- src/cms_common.h | 1 -
- 2 files changed, 35 deletions(-)
-
-diff --git a/src/cms_common.c b/src/cms_common.c
-index b19bc62..6a4e6a7 100644
---- a/src/cms_common.c
-+++ b/src/cms_common.c
-@@ -641,40 +641,6 @@ generate_string(cms_context *cms, SECItem *der, char *str)
- return 0;
- }
-
--static SEC_ASN1Template IntegerTemplate[] = {
-- {.kind = SEC_ASN1_INTEGER,
-- .offset = 0,
-- .sub = NULL,
-- .size = sizeof(long),
-- },
-- { 0 },
--};
--
--int
--generate_integer(cms_context *cms, SECItem *der, unsigned long integer)
--{
-- void *ret;
--
-- uint32_t u32;
--
-- SECItem input = {
-- .data = (void *)&integer,
-- .len = sizeof(integer),
-- .type = siUnsignedInteger,
-- };
--
-- if (integer < 0x100000000) {
-- u32 = integer & 0xffffffffUL;
-- input.data = (void *)&u32;
-- input.len = sizeof(u32);
-- }
--
-- ret = SEC_ASN1EncodeItem(cms->arena, der, &input, IntegerTemplate);
-- if (ret == NULL)
-- cmsreterr(-1, cms, "could not encode data");
-- return 0;
--}
--
- int
- generate_time(cms_context *cms, SECItem *encoded, time_t when)
- {
-diff --git a/src/cms_common.h b/src/cms_common.h
-index 7d77faf..c7d7268 100644
---- a/src/cms_common.h
-+++ b/src/cms_common.h
-@@ -117,7 +117,6 @@ extern int generate_object_id(cms_context *ctx, SECItem *encoded,
- SECOidTag tag);
- extern int generate_empty_sequence(cms_context *ctx, SECItem *encoded);
- extern int generate_time(cms_context *ctx, SECItem *encoded, time_t when);
--extern int generate_integer(cms_context *cms, SECItem *der, unsigned long integer);
- extern int generate_string(cms_context *cms, SECItem *der, char *str);
- extern int wrap_in_set(cms_context *cms, SECItem *der, SECItem **items);
- extern int wrap_in_seq(cms_context *cms, SECItem *der,
---
-2.13.4
-
diff --git a/0002-Fix-command-line-parsing.patch b/0002-Fix-command-line-parsing.patch
deleted file mode 100644
index 9c03eeb..0000000
--- a/0002-Fix-command-line-parsing.patch
+++ /dev/null
@@ -1,73 +0,0 @@
-From 5be0515dee24308fd7e270bf2e0fb5e5a7a78f32 Mon Sep 17 00:00:00 2001
-From: Julien Cristau <jcristau(a)debian.org>
-Date: Thu, 9 Jun 2016 14:30:37 +0200
-Subject: [PATCH 02/29] Fix command line parsing
-
-The gettext translation domain should be passed as .arg, not .descrip,
-otherwise popt won't process any of the command line options (it stops
-looping over the struct poptOption array when an entry has unset
-longName, shortName and arg).
-
-Signed-off-by: Julien Cristau <jcristau(a)debian.org>
----
- src/client.c | 2 +-
- src/efikeygen.c | 2 +-
- src/efisiglist.c | 2 +-
- src/pesigcheck.c | 2 +-
- 4 files changed, 4 insertions(+), 4 deletions(-)
-
-diff --git a/src/client.c b/src/client.c
-index 028419f..575c873 100644
---- a/src/client.c
-+++ b/src/client.c
-@@ -555,7 +555,7 @@ main(int argc, char *argv[])
-
- struct poptOption options[] = {
- {.argInfo = POPT_ARG_INTL_DOMAIN,
-- .descrip = "pesign" },
-+ .arg = "pesign" },
- {.longName = "token",
- .shortName = 't',
- .argInfo = POPT_ARG_STRING|POPT_ARGFLAG_SHOW_DEFAULT,
-diff --git a/src/efikeygen.c b/src/efikeygen.c
-index 6278849..8a515a5 100644
---- a/src/efikeygen.c
-+++ b/src/efikeygen.c
-@@ -486,7 +486,7 @@ int main(int argc, char *argv[])
- poptContext optCon;
- struct poptOption options[] = {
- {.argInfo = POPT_ARG_INTL_DOMAIN,
-- .descrip = "pesign" },
-+ .arg = "pesign" },
- /* global nss-ish things */
- {.longName = "dbdir",
- .shortName = 'd',
-diff --git a/src/efisiglist.c b/src/efisiglist.c
-index cd3f1ae..40d6a93 100644
---- a/src/efisiglist.c
-+++ b/src/efisiglist.c
-@@ -126,7 +126,7 @@ main(int argc, char *argv[])
-
- struct poptOption options[] = {
- {.argInfo = POPT_ARG_INTL_DOMAIN,
-- .descrip = "pesign" },
-+ .arg = "pesign" },
- {.longName = "infile",
- .shortName = 'i',
- .argInfo = POPT_ARG_STRING,
-diff --git a/src/pesigcheck.c b/src/pesigcheck.c
-index 1328fe9..0d49c1a 100644
---- a/src/pesigcheck.c
-+++ b/src/pesigcheck.c
-@@ -214,7 +214,7 @@ main(int argc, char *argv[])
- poptContext optCon;
- struct poptOption options[] = {
- {.argInfo = POPT_ARG_INTL_DOMAIN,
-- .descrip = "pesign" },
-+ .arg = "pesign" },
- {.longName = "dbfile",
- .shortName = 'D',
- .argInfo = POPT_ARG_CALLBACK|POPT_CBFLAG_POST,
---
-2.13.4
-
diff --git a/0003-gcc-don-t-error-on-stuff-in-includes.patch b/0003-gcc-don-t-error-on-stuff-in-includes.patch
deleted file mode 100644
index cf4e61d..0000000
--- a/0003-gcc-don-t-error-on-stuff-in-includes.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-From 6de291458cbab99bcc317e282c16e1523d6de9b8 Mon Sep 17 00:00:00 2001
-From: Peter Jones <pjones(a)redhat.com>
-Date: Wed, 10 Aug 2016 17:12:39 -0400
-Subject: [PATCH 03/29] gcc: don't error on stuff in includes.
-
-Signed-off-by: Peter Jones <pjones(a)redhat.com>
----
- Make.defaults | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/Make.defaults b/Make.defaults
-index c97b452..3511080 100644
---- a/Make.defaults
-+++ b/Make.defaults
-@@ -19,7 +19,7 @@ PKG_CONFIG = $(CROSS_COMPILE)pkg-config
- CC := $(if $(filter default,$(origin CC)),$(CROSS_COMPILE)gcc,$(CC))
- CCLD := $(if $(filter undefined,$(origin CCLD)),$(CC),$(CCLD))
- CFLAGS ?= -O0 -g3 -fvar-tracking -fvar-tracking-assignments \
-- -Wall -Werror -Wextra
-+ -Wall -Werror -Wextra -Wno-error=cpp
- AS := $(CROSS_COMPILE)as
- AR := $(CROSS_COMPILE)gcc-ar
- RANLIB := $(CROSS_COMPILE)gcc-ranlib
---
-2.13.4
-
diff --git a/0004-Fix-certficate-argument-name.patch b/0004-Fix-certficate-argument-name.patch
deleted file mode 100644
index 08509ff..0000000
--- a/0004-Fix-certficate-argument-name.patch
+++ /dev/null
@@ -1,39 +0,0 @@
-From b20fc54c08e8afe1365e56cacade3ec39984da8d Mon Sep 17 00:00:00 2001
-From: Peter Jones <pjones(a)redhat.com>
-Date: Tue, 18 Apr 2017 19:00:34 -0400
-Subject: [PATCH 04/29] Fix "certficate" argument name.
-
-This fixes our typoed argument name by making the incorrectly spelled
-version be a popt alias, and fixing the real implementation to be
-spelled right in pesign.c .
-
-Signed-off-by: Peter Jones <pjones(a)redhat.com>
----
- src/pesign.c | 2 +-
- src/pesign.popt | 1 +
- 2 files changed, 2 insertions(+), 1 deletion(-)
-
-diff --git a/src/pesign.c b/src/pesign.c
-index af374b6..279a17a 100644
---- a/src/pesign.c
-+++ b/src/pesign.c
-@@ -438,7 +438,7 @@ main(int argc, char *argv[])
- .arg = &ctxp->outfile,
- .descrip = "specify output file",
- .argDescrip = "<outfile>" },
-- {.longName = "certficate",
-+ {.longName = "certificate",
- .shortName = 'c',
- .argInfo = POPT_ARG_STRING,
- .arg = &certname,
-diff --git a/src/pesign.popt b/src/pesign.popt
-index 7b3385d..5a97748 100644
---- a/src/pesign.popt
-+++ b/src/pesign.popt
-@@ -1,2 +1,3 @@
- pesign alias --cert --certificate
-+pesign alias --certficate --certificate
- pesign alias --daemon --daemonize
---
-2.13.4
-
diff --git a/0005-Fix-description-of-ascii-armor-option-in-manpage.patch b/0005-Fix-description-of-ascii-armor-option-in-manpage.patch
deleted file mode 100644
index 6a5b02d..0000000
--- a/0005-Fix-description-of-ascii-armor-option-in-manpage.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-From 7bc8e8b04c74be5c4e0ebf211affc37cf9f5db37 Mon Sep 17 00:00:00 2001
-From: Julien Cristau <jcristau(a)debian.org>
-Date: Mon, 27 Jun 2016 15:38:38 +0200
-Subject: [PATCH 05/29] Fix description of --ascii-armor option in manpage
-
-The --ascii option does not exist.
----
- src/pesign.1 | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/pesign.1 b/src/pesign.1
-index 47d1aec..29ae060 100644
---- a/src/pesign.1
-+++ b/src/pesign.1
-@@ -81,7 +81,7 @@ Export the public key specified by \-\-certificate to \fIoutkey\fR
- Export the certificate specified by \-\-certificate to \fIoutcert\fR
-
- .TP
--\fB-\-ascii\fR
-+\fB-\-ascii\-armor\fR
- Use ascii armoring on exported certificates.
-
- .TP
---
-2.13.4
-
diff --git a/0006-Make-ascii-work-since-we-documented-it.patch b/0006-Make-ascii-work-since-we-documented-it.patch
deleted file mode 100644
index d0165f9..0000000
--- a/0006-Make-ascii-work-since-we-documented-it.patch
+++ /dev/null
@@ -1,22 +0,0 @@
-From 9f411f4e797e983d2e8cb51dc5b9ab8db250c2e3 Mon Sep 17 00:00:00 2001
-From: Peter Jones <pjones(a)redhat.com>
-Date: Tue, 18 Apr 2017 19:05:40 -0400
-Subject: [PATCH 06/29] Make --ascii work, since we documented it.
-
-Signed-off-by: Peter Jones <pjones(a)redhat.com>
----
- src/pesign.popt | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/src/pesign.popt b/src/pesign.popt
-index 5a97748..5ae0c5c 100644
---- a/src/pesign.popt
-+++ b/src/pesign.popt
-@@ -1,3 +1,4 @@
- pesign alias --cert --certificate
- pesign alias --certficate --certificate
- pesign alias --daemon --daemonize
-+pesign alias --ascii --ascii-armor
---
-2.13.4
-
diff --git a/0007-Switch-pesign-client-to-also-accept-token-cert-macro.patch b/0007-Switch-pesign-client-to-also-accept-token-cert-macro.patch
deleted file mode 100644
index faa78ec..0000000
--- a/0007-Switch-pesign-client-to-also-accept-token-cert-macro.patch
+++ /dev/null
@@ -1,32 +0,0 @@
-From d618de733865eab359890b4e677c368a133dad99 Mon Sep 17 00:00:00 2001
-From: Pat Riehecky <riehecky(a)fnal.gov>
-Date: Mon, 7 Nov 2016 11:37:08 -0600
-Subject: [PATCH 07/29] Switch pesign client to also accept token/cert macros
- rather than use hard coded values
-
----
- src/macros.pesign | 6 +++---
- 1 file changed, 3 insertions(+), 3 deletions(-)
-
-diff --git a/src/macros.pesign b/src/macros.pesign
-index 18e5b5e..69280e9 100644
---- a/src/macros.pesign
-+++ b/src/macros.pesign
-@@ -41,11 +41,11 @@
- --certdir ${nss} -c signer %{-o} \
- rm -rf ${sattrs} ${sattrs}.sig ${nss} \
- elif [ -S /var/run/pesign/socket ]; then \
-- %{_pesign_client} -t "OpenSC Card (Fedora Signer)" \\\
-- -c "/CN=Fedora Secure Boot Signer" \\\
-+ %{_pesign_client} -t %{__pesign_token} \\\
-+ -c %{__pesign_cert} \\\
- %{-i} %{-o} %{-e} %{-s} %{-C} \
- else \
-- %{_pesign} %{__pesign_token} -c %{__pesign_cert} \\\
-+ %{_pesign} -t %{__pesign_token} -c %{__pesign_cert} \\\
- --certdir ${_pesign_nssdir} \\\
- %{-i} %{-o} %{-e} %{-s} %{-C} \
- fi \
---
-2.13.4
-
diff --git a/0008-pesigcheck-Verify-with-the-cert-as-an-object-signer.patch b/0008-pesigcheck-Verify-with-the-cert-as-an-object-signer.patch
deleted file mode 100644
index 2226498..0000000
--- a/0008-pesigcheck-Verify-with-the-cert-as-an-object-signer.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-From 2cd211bcc612ad8cb99c778461ca02a9f3e5e44b Mon Sep 17 00:00:00 2001
-From: David Michael <david.michael(a)coreos.com>
-Date: Thu, 16 Feb 2017 15:08:30 -0800
-Subject: [PATCH 08/29] pesigcheck: Verify with the cert as an object signer
-
----
- src/certdb.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/certdb.c b/src/certdb.c
-index 2a08042..b7c99bb 100644
---- a/src/certdb.c
-+++ b/src/certdb.c
-@@ -339,7 +339,7 @@ check_cert(pesigcheck_context *ctx, SECItem *sig, efi_guid_t *sigtype,
- }
- /* Verify the signature */
- result = SEC_PKCS7VerifyDetachedSignatureAtTime(cinfo,
-- certUsageSSLServer,
-+ certUsageObjectSigner,
- digest, HASH_AlgSHA256,
- PR_FALSE, atTime);
- if (!result) {
---
-2.13.4
-
diff --git a/0009-pesigcheck-make-certfile-actually-work.patch b/0009-pesigcheck-make-certfile-actually-work.patch
deleted file mode 100644
index 8b77417..0000000
--- a/0009-pesigcheck-make-certfile-actually-work.patch
+++ /dev/null
@@ -1,47 +0,0 @@
-From e0238e2363f9668aee07b2e44a8f358e694551c0 Mon Sep 17 00:00:00 2001
-From: Peter Jones <pjones(a)redhat.com>
-Date: Mon, 24 Apr 2017 15:18:10 -0400
-Subject: [PATCH 09/29] pesigcheck: make --certfile actually work
-
-Signed-off-by: Peter Jones <pjones(a)redhat.com>
----
- src/pesigcheck.c | 9 +++++++--
- 1 file changed, 7 insertions(+), 2 deletions(-)
-
-diff --git a/src/pesigcheck.c b/src/pesigcheck.c
-index 0d49c1a..d7be542 100644
---- a/src/pesigcheck.c
-+++ b/src/pesigcheck.c
-@@ -130,7 +130,7 @@ check_signature(pesigcheck_context *ctx)
- cert_iter iter;
-
- generate_digest(ctx->cms_ctx, ctx->inpe, 1);
--
-+
- if (check_db_hash(DBX, ctx) == FOUND)
- return -1;
-
-@@ -225,6 +225,11 @@ main(int argc, char *argv[])
- .argInfo = POPT_ARG_CALLBACK|POPT_CBFLAG_POST,
- .arg = (void *)callback,
- .descrip = (void *)ctxp },
-+ {.longName = "certfile",
-+ .shortName = 'c',
-+ .argInfo = POPT_ARG_CALLBACK|POPT_CBFLAG_POST,
-+ .arg = (void *)callback,
-+ .descrip = (void *)ctxp },
- {.longName = "in",
- .shortName = 'i',
- .argInfo = POPT_ARG_STRING,
-@@ -258,7 +263,7 @@ main(int argc, char *argv[])
- .shortName = 'c',
- .argInfo = POPT_ARG_STRING,
- .arg = &certfile,
-- .descrip = "the certificate (in DER form) for verification ",
-+ .descrip = "import certfile (in DER encoding) for allowed certificate",
- .argDescrip = "<certfile>" },
- POPT_AUTOALIAS
- POPT_AUTOHELP
---
-2.13.4
-
diff --git a/0010-signerInfos-make-sure-err-is-always-initialized.patch b/0010-signerInfos-make-sure-err-is-always-initialized.patch
deleted file mode 100644
index 08d1da7..0000000
--- a/0010-signerInfos-make-sure-err-is-always-initialized.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-From 799808b265ac6f82fa1268fd696d70357acce69c Mon Sep 17 00:00:00 2001
-From: Peter Jones <pjones(a)redhat.com>
-Date: Tue, 25 Apr 2017 16:15:07 -0400
-Subject: [PATCH 10/29] signerInfos: make sure err is always initialized
-
-Signed-off-by: Peter Jones <pjones(a)redhat.com>
----
- src/signed_data.c | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
-
-diff --git a/src/signed_data.c b/src/signed_data.c
-index 721db90..9e0af23 100644
---- a/src/signed_data.c
-+++ b/src/signed_data.c
-@@ -132,7 +132,8 @@ int
- generate_signerInfo_list(cms_context *cms, SpcSignerInfo ***signerInfo_list_p, SignerInfoType type)
- {
- SpcSignerInfo **signerInfo_list;
-- int err, rc;
-+ int err = 0;
-+ int rc;
-
- if (!signerInfo_list_p)
- return -1;
---
-2.13.4
-
diff --git a/0011-pesign-make-pesign-h-tell-you-the-file-name.patch b/0011-pesign-make-pesign-h-tell-you-the-file-name.patch
deleted file mode 100644
index 3e15617..0000000
--- a/0011-pesign-make-pesign-h-tell-you-the-file-name.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-From 868b42b338d919917ea31cfbf0f96e9586947eaf Mon Sep 17 00:00:00 2001
-From: Peter Jones <pjones(a)redhat.com>
-Date: Tue, 25 Apr 2017 16:23:36 -0400
-Subject: [PATCH 11/29] pesign: make "pesign -h" tell you the file name.
-
-Signed-off-by: Peter Jones <pjones(a)redhat.com>
----
- src/pesign.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/pesign.c b/src/pesign.c
-index 279a17a..5879cfc 100644
---- a/src/pesign.c
-+++ b/src/pesign.c
-@@ -387,7 +387,7 @@ print_digest(pesign_context *pctx)
- if (!ctx)
- return;
-
-- printf("hash: ");
-+ printf("%s ", pctx->infile);
- int j = ctx->selected_digest;
- for (unsigned int i = 0; i < ctx->digests[j].pe_digest->len; i++)
- printf("%02x",
---
-2.13.4
-
diff --git a/0012-Add-coverity-build-scripts.patch b/0012-Add-coverity-build-scripts.patch
deleted file mode 100644
index f3f0a89..0000000
--- a/0012-Add-coverity-build-scripts.patch
+++ /dev/null
@@ -1,104 +0,0 @@
-From 95327e6d9bd4f70980acd8fd6c9524265990dc4d Mon Sep 17 00:00:00 2001
-From: Peter Jones <pjones(a)redhat.com>
-Date: Wed, 10 May 2017 10:49:57 -0400
-Subject: [PATCH 12/29] Add coverity build scripts
-
-Signed-off-by: Peter Jones <pjones(a)redhat.com>
----
- .gitignore | 1 +
- Make.coverity | 37 +++++++++++++++++++++++++++++++++++++
- Make.defaults | 2 ++
- Make.rules | 4 ++++
- Makefile | 1 +
- 5 files changed, 45 insertions(+)
- create mode 100644 Make.coverity
-
-diff --git a/.gitignore b/.gitignore
-index 1635ba2..847e172 100644
---- a/.gitignore
-+++ b/.gitignore
-@@ -12,3 +12,4 @@
- *.tar.*
- *.rpm
- core.*
-+cov-int
-diff --git a/Make.coverity b/Make.coverity
-new file mode 100644
-index 0000000..b80b091
---- /dev/null
-+++ b/Make.coverity
-@@ -0,0 +1,37 @@
-+include $(TOPDIR)/Make.version
-+include $(TOPDIR)/Make.rules
-+include $(TOPDIR)/Make.defaults
-+
-+COV_EMAIL=$(call get-config,coverity.email)
-+COV_TOKEN=$(call get-config,coverity.token)
-+COV_URL=$(call get-config,coverity.url)
-+COV_FILE=$(NAME)-coverity-$(VERSION)-$(COMMIT_ID).tar.bz2
-+
-+cov-int : clean
-+ cov-build --dir cov-int make all
-+
-+cov-clean :
-+ @rm -vf $(NAME)-coverity-*.tar.*
-+ @if [[ -d cov-int ]]; then rm -rf cov-int && echo "removed 'cov-int'"; fi
-+
-+cov-file : | $(COV_FILE)
-+
-+$(COV_FILE) : cov-int
-+ tar caf $@ cov-int
-+
-+cov-upload :
-+ @if [[ -n "$(COV_URL)" ]] && \
-+ [[ -n "$(COV_TOKEN)" ]] && \
-+ [[ -n "$(COV_EMAIL)" ]] ; \
-+ then \
-+ echo curl --form token=$(COV_TOKEN) --form email="$(COV_EMAIL)" --form file=@"$(COV_FILE)" --form version=$(VERSION).1 --form description="$(COMMIT_ID)" "$(COV_URL)" ; \
-+ curl --form token=$(COV_TOKEN) --form email="$(COV_EMAIL)" --form file=@"$(COV_FILE)" --form version=$(VERSION).1 --form description="$(COMMIT_ID)" "$(COV_URL)" ; \
-+ else \
-+ echo Coverity output is in $(COV_FILE) ; \
-+ fi
-+
-+coverity : cov-file cov-upload
-+
-+clean : | cov-clean
-+
-+.PHONY : coverity cov-upload cov-clean cov-file
-diff --git a/Make.defaults b/Make.defaults
-index 3511080..39b78f0 100644
---- a/Make.defaults
-+++ b/Make.defaults
-@@ -1,3 +1,5 @@
-+NAME = pesign
-+COMMIT_ID ?= $(shell git log -1 --pretty=%H 2>/dev/null || echo master)
- prefix ?= /usr/
- prefix := $(abspath $(prefix))/
- libdir ?= $(prefix)lib64/
-diff --git a/Make.rules b/Make.rules
-index af5ecfe..5e3c83d 100644
---- a/Make.rules
-+++ b/Make.rules
-@@ -79,3 +79,7 @@ endef
-
- $(TOPDIR)/libdpe/%.a $(TOPDIR)/libdpe/% :
- $(MAKE) -C $(TOPDIR)/libdpe $(notdir $@)
-+
-+define get-config =
-+$(shell git config --local --get "$(NAME).$(1)")
-+endef
-diff --git a/Makefile b/Makefile
-index db8eb7e..ca1a359 100644
---- a/Makefile
-+++ b/Makefile
-@@ -4,6 +4,7 @@ TOPDIR = $(realpath .)
- include $(TOPDIR)/Make.version
- include $(TOPDIR)/Make.rules
- include $(TOPDIR)/Make.defaults
-+include $(TOPDIR)/Make.coverity
-
- SUBDIRS := include libdpe src
-
---
-2.13.4
-
diff --git a/0013-Document-implicit-fallthrough.patch b/0013-Document-implicit-fallthrough.patch
deleted file mode 100644
index 3731a3f..0000000
--- a/0013-Document-implicit-fallthrough.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-From 4b9e7cf3e869de36daf2ea705b9efef55ae87ef8 Mon Sep 17 00:00:00 2001
-From: Peter Jones <pjones(a)redhat.com>
-Date: Sat, 8 Jul 2017 16:31:18 -0400
-Subject: [PATCH 13/29] Document implicit fallthrough.
-
-Signed-off-by: Peter Jones <pjones(a)redhat.com>
----
- src/authvar.c | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/src/authvar.c b/src/authvar.c
-index ad659ca..03e0c47 100644
---- a/src/authvar.c
-+++ b/src/authvar.c
-@@ -511,6 +511,7 @@ main(int argc, char *argv[])
- case IMPORT|SET:
- case IMPORT|SIGN|SET:
- fprintf(stderr, "authvar: not implemented\n");
-+ /* fallthrough. */
- case IMPORT|SIGN|EXPORT:
- default:
- fprintf(stderr, "authvar: invalid flags: ");
---
-2.13.4
-
diff --git a/0014-Actually-setfacl-each-directory-of-our-key-storage.patch b/0014-Actually-setfacl-each-directory-of-our-key-storage.patch
deleted file mode 100644
index 4b62cb3..0000000
--- a/0014-Actually-setfacl-each-directory-of-our-key-storage.patch
+++ /dev/null
@@ -1,50 +0,0 @@
-From a95e28e5cb10d417c81c8720e8521eb63793da37 Mon Sep 17 00:00:00 2001
-From: Peter Jones <pjones(a)redhat.com>
-Date: Mon, 16 May 2016 15:25:53 -0400
-Subject: [PATCH 14/29] Actually setfacl /each/ directory of our key storage.
-
-Signed-off-by: Peter Jones <pjones(a)redhat.com>
----
- src/pesign-authorize-groups | 6 +++---
- src/pesign-authorize-users | 6 +++---
- 2 files changed, 6 insertions(+), 6 deletions(-)
-
-diff --git a/src/pesign-authorize-groups b/src/pesign-authorize-groups
-index a4f895e..cf51fb6 100644
---- a/src/pesign-authorize-groups
-+++ b/src/pesign-authorize-groups
-@@ -18,10 +18,10 @@ if [ -r /etc/pesign/groups ]; then
- setfacl -m g:${group}:rw /var/run/pesign/socket
- fi
- fi
-- for x in /etc/pki/pesign* ; do
-+ for x in /etc/pki/pesign*/ ; do
- if [ -d ${x} ]; then
-- setfacl -m g:${group}:rx /etc/pki/pesign
-- for y in ${x}/{cert8,key3,secmod}.db ; do
-+ setfacl -m g:${group}:rx ${x}
-+ for y in ${x}{cert8,key3,secmod}.db ; do
- setfacl -m g:${group}:rw ${y}
- done
- fi
-diff --git a/src/pesign-authorize-users b/src/pesign-authorize-users
-index 8b9a885..940138e 100644
---- a/src/pesign-authorize-users
-+++ b/src/pesign-authorize-users
-@@ -18,10 +18,10 @@ if [ -r /etc/pesign/users ]; then
- setfacl -m g:${username}:rw /var/run/pesign/socket
- fi
- fi
-- for x in /etc/pki/pesign* ; do
-+ for x in /etc/pki/pesign*/ ; do
- if [ -d ${x} ]; then
-- setfacl -m g:${username}:rx /etc/pki/pesign
-- for y in ${x}/{cert8,key3,secmod}.db ; do
-+ setfacl -m g:${username}:rx ${x}
-+ for y in ${x}{cert8,key3,secmod}.db ; do
- setfacl -m g:${username}:rw ${y}
- done
- fi
---
-2.13.4
-
diff --git a/0015-oid-add-SHIM_EKU_MODULE_SIGNING_ONLY-and-fix-our-arr.patch b/0015-oid-add-SHIM_EKU_MODULE_SIGNING_ONLY-and-fix-our-arr.patch
deleted file mode 100644
index d5428b5..0000000
--- a/0015-oid-add-SHIM_EKU_MODULE_SIGNING_ONLY-and-fix-our-arr.patch
+++ /dev/null
@@ -1,59 +0,0 @@
-From a3cc2ad5d49ed61187527281da351e80d8f76a89 Mon Sep 17 00:00:00 2001
-From: Peter Jones <pjones(a)redhat.com>
-Date: Mon, 22 Aug 2016 13:31:38 -0400
-Subject: [PATCH 15/29] oid: add SHIM_EKU_MODULE_SIGNING_ONLY and fix our array
- indices.
-
-That was all kinds of wrong.
-
-Signed-off-by: Peter Jones <pjones(a)redhat.com>
----
- src/oid.c | 10 +++++++---
- src/oid.h | 1 +
- 2 files changed, 8 insertions(+), 3 deletions(-)
-
-diff --git a/src/oid.c b/src/oid.c
-index 9d8154f..7037e1e 100644
---- a/src/oid.c
-+++ b/src/oid.c
-@@ -33,6 +33,7 @@ static uint8_t oiddata[] = {
- 0x2b, 0x06, 0x01, 0x04, 0x01, 0x82, 0x37, 0x02, 0x01, 0x0f,
- 0x2b, 0x06, 0x01, 0x04, 0x01, 0x82, 0x37, 0x02, 0x01, 0x15,
- 0x2b, 0x06, 0x01, 0x04, 0x01, 0x82, 0x37, 0x15, 0x01,
-+ 0x2b, 0x06, 0x01, 0x04, 0x01, 0x92, 0x08, 0x10, 0x01, 0x02,
- };
-
- #define OID(num, desc_s, oidtype, length, value) \
-@@ -53,11 +54,14 @@ static struct {
- OID(SPC_STATEMENT_TYPE_OBJID, "Statement Type", siDEROID, 10,
- &oiddata[10]),
- OID(SPC_PE_IMAGE_DATA_OBJID, "PE Image Data", siDEROID, 10,
-- &oiddata[30]),
-+ &oiddata[20]),
- OID(SPC_INDIVIDUAL_SP_KEY_PURPOSE_OBJID, "Individual Key", siDEROID,
-- 10, &oiddata[40]),
-+ 10, &oiddata[30]),
- OID(szOID_CERTSRV_CA_VERSION, "Certification server CA version",
-- siAsciiString, 9, &oiddata[50]),
-+ siAsciiString, 9, &oiddata[40]),
-+ OID(SHIM_EKU_MODULE_SIGNING_ONLY,
-+ "Certificate is used for kernel modules only", siDEROID, 10,
-+ &oiddata[49]),
- { .oid = END_OID_LIST }
- };
-
-diff --git a/src/oid.h b/src/oid.h
-index 599f49d..0e00781 100644
---- a/src/oid.h
-+++ b/src/oid.h
-@@ -25,6 +25,7 @@ typedef enum {
- SPC_PE_IMAGE_DATA_OBJID, /* 1.3.6.1.4.1.311.2.1.15 */
- SPC_INDIVIDUAL_SP_KEY_PURPOSE_OBJID, /* 1.3.6.1.4.1.311.2.1.21 */
- szOID_CERTSRV_CA_VERSION, /* 1.3.6.1.4.1.311.21.1 */
-+ SHIM_EKU_MODULE_SIGNING_ONLY, /* 1.3.6.1.4.1.2312.16.1.2 */
- END_OID_LIST
- } ms_oid_t;
-
---
-2.13.4
-
diff --git a/0016-efikeygen-add-modsign.patch b/0016-efikeygen-add-modsign.patch
deleted file mode 100644
index 8324334..0000000
--- a/0016-efikeygen-add-modsign.patch
+++ /dev/null
@@ -1,197 +0,0 @@
-From 9b4b12928c0450ac69d83293e179eec439465c03 Mon Sep 17 00:00:00 2001
-From: Peter Jones <pjones(a)redhat.com>
-Date: Mon, 22 Aug 2016 13:43:56 -0400
-Subject: [PATCH 16/29] efikeygen: add --modsign
-
----
- src/cms_common.c | 29 ++++++++++++++++++++++++++++
- src/cms_common.h | 1 +
- src/efikeygen.c | 59 ++++++++++++++++++++++++++++++++++++++++++++------------
- 3 files changed, 77 insertions(+), 12 deletions(-)
-
-diff --git a/src/cms_common.c b/src/cms_common.c
-index 6a4e6a7..2df2cfe 100644
---- a/src/cms_common.c
-+++ b/src/cms_common.c
-@@ -715,6 +715,35 @@ make_context_specific(cms_context *cms, int ctxt, SECItem *encoded,
- return 0;
- }
-
-+static SEC_ASN1Template EKUOidSequence[] = {
-+ {
-+ .kind = SEC_ASN1_OBJECT_ID,
-+ .offset = 0,
-+ .sub = &SEC_AnyTemplate,
-+ .size = sizeof (SECItem),
-+ },
-+ { 0 }
-+};
-+
-+int
-+make_eku_oid(cms_context *cms, SECItem *encoded, SECOidTag oid_tag)
-+{
-+ void *rv;
-+ SECOidData *oid_data;
-+
-+ oid_data = SECOID_FindOIDByTag(oid_tag);
-+ if (!oid_data)
-+ cmsreterr(-1, cms, "could not encode eku oid data");
-+
-+ rv = SEC_ASN1EncodeItem(cms->arena, encoded, &oid_data->oid,
-+ EKUOidSequence);
-+ if (rv == NULL)
-+ cmsreterr(-1, cms, "could not encode eku oid data");
-+
-+ encoded->type = siBuffer;
-+ return 0;
-+}
-+
- int
- generate_octet_string(cms_context *cms, SECItem *encoded, SECItem *original)
- {
-diff --git a/src/cms_common.h b/src/cms_common.h
-index c7d7268..7a31273 100644
---- a/src/cms_common.h
-+++ b/src/cms_common.h
-@@ -123,6 +123,7 @@ extern int wrap_in_seq(cms_context *cms, SECItem *der,
- SECItem *items, int num_items);
- extern int make_context_specific(cms_context *cms, int ctxt, SECItem *encoded,
- SECItem *original);
-+extern int make_eku_oid(cms_context *cms, SECItem *encoded, SECOidTag oid_tag);
- extern int generate_validity(cms_context *cms, SECItem *der, time_t start,
- time_t end);
- extern int generate_common_name(cms_context *cms, SECItem *der, char *cn);
-diff --git a/src/efikeygen.c b/src/efikeygen.c
-index 8a515a5..9390578 100644
---- a/src/efikeygen.c
-+++ b/src/efikeygen.c
-@@ -49,6 +49,7 @@
- #include <libdpe/libdpe.h>
-
- #include "cms_common.h"
-+#include "oid.h"
- #include "util.h"
-
- typedef struct {
-@@ -249,20 +250,34 @@ add_basic_constraints(cms_context *cms, void *extHandle)
- }
-
- static int
--add_extended_key_usage(cms_context *cms, void *extHandle)
-+add_extended_key_usage(cms_context *cms, int modsign_only, void *extHandle)
- {
-- SECItem value = {
-- .data = (unsigned char *)"\x30\x0a\x06\x08\x2b\x06\x01"
-- "\x05\x05\x07\x03\x03",
-- .len = 12,
-- .type = siBuffer
-- };
-+ SECItem values[2];
-+ SECItem wrapped = { 0 };
-+ SECStatus status;
-+ SECOidTag tag;
-+ int rc;
-+
-+ if (modsign_only < 1 || modsign_only > 2)
-+ cmsreterr(-1, cms, "could not encode extended key usage");
-
-+ rc = make_eku_oid(cms, &values[0], SEC_OID_EXT_KEY_USAGE_CODE_SIGN);
-+ if (rc < 0)
-+ cmsreterr(-1, cms, "could not encode extended key usage");
-+
-+ tag = find_ms_oid_tag(SHIM_EKU_MODULE_SIGNING_ONLY);
-+ printf("tag: %d\n", tag);
-+ rc = make_eku_oid(cms, &values[1], tag);
-+ if (rc < 0)
-+ cmsreterr(-1, cms, "could not encode extended key usage");
-+
-+ rc = wrap_in_seq(cms, &wrapped, values, modsign_only);
-+ if (rc < 0)
-+ cmsreterr(-1, cms, "could not encode extended key usage");
-
-- SECStatus status;
-
- status = CERT_AddExtension(extHandle, SEC_OID_X509_EXT_KEY_USAGE,
-- &value, PR_FALSE, PR_TRUE);
-+ &wrapped, PR_FALSE, PR_TRUE);
- if (status != SECSuccess)
- cmsreterr(-1, cms, "could not encode extended key usage");
-
-@@ -294,7 +309,7 @@ static int
- add_extensions_to_crq(cms_context *cms, CERTCertificateRequest *crq,
- int is_ca, int is_self_signed, SECKEYPublicKey *pubkey,
- SECKEYPublicKey *spubkey,
-- char *url)
-+ char *url, int modsign_only)
- {
- void *mark = PORT_ArenaMark(cms->arena);
-
-@@ -319,7 +334,7 @@ add_extensions_to_crq(cms_context *cms, CERTCertificateRequest *crq,
- if (rc < 0)
- cmsreterr(-1, cms, "could not generate certificate extensions");
-
-- rc = add_extended_key_usage(cms, extHandle);
-+ rc = add_extended_key_usage(cms, modsign_only, extHandle);
- if (rc < 0)
- cmsreterr(-1, cms, "could not generate certificate extensions");
-
-@@ -469,6 +484,7 @@ int main(int argc, char *argv[])
- {
- int is_ca = 0;
- int is_self_signed = -1;
-+ int modsign_only = 0;
- char *tokenname = "NSS Certificate DB";
- char *signer = NULL;
- char *nickname = NULL;
-@@ -522,6 +538,18 @@ int main(int argc, char *argv[])
- .descrip = "Generate a self-signed certificate" },
-
- /* stuff about the generated key */
-+ {.longName = "kernel",
-+ .shortName = 'k',
-+ .argInfo = POPT_ARG_VAL|POPT_ARGFLAG_OR,
-+ .arg = &modsign_only,
-+ .val = 1,
-+ .descrip = "Generate a kernel-signing certificate" },
-+ {.longName = "module",
-+ .shortName = 'm',
-+ .argInfo = POPT_ARG_VAL|POPT_ARGFLAG_OR,
-+ .arg = &modsign_only,
-+ .val = 2,
-+ .descrip = "Generate a module-signing certificate" },
- {.longName = "nickname",
- .shortName = 'n',
- .argInfo = POPT_ARG_STRING,
-@@ -628,6 +656,9 @@ int main(int argc, char *argv[])
- liberr(1, "could not allocate cms context");
- }
-
-+ if (modsign_only < 1 || modsign_only > 2)
-+ errx(1, "either --kernel or --module must be used");
-+
- SECStatus status = NSS_InitReadWrite(dbdir);
- if (status != SECSuccess)
- nsserr(1, "could not initialize NSS");
-@@ -639,6 +670,10 @@ int main(int argc, char *argv[])
- SECKEYPublicKey *pubkey = NULL;
- SECKEYPrivateKey *privkey = NULL;
-
-+ status = register_oids(cms);
-+ if (status != SECSuccess)
-+ nsserr(1, "Could not register OIDs");
-+
- PK11SlotInfo *slot = NULL;
- if (pubfile) {
- rc = get_pubkey_from_file(pubfile, &pubkey);
-@@ -713,7 +748,7 @@ int main(int argc, char *argv[])
- crq = CERT_CreateCertificateRequest(name, spki, &attributes);
-
- rc = add_extensions_to_crq(cms, crq, is_ca, is_self_signed, pubkey,
-- spubkey, url);
-+ spubkey, url, modsign_only);
- if (rc < 0)
- exit(1);
-
---
-2.13.4
-
diff --git a/0017-check_cert_db-try-even-harder-to-pick-a-reasonable-v.patch b/0017-check_cert_db-try-even-harder-to-pick-a-reasonable-v.patch
deleted file mode 100644
index acebc3a..0000000
--- a/0017-check_cert_db-try-even-harder-to-pick-a-reasonable-v.patch
+++ /dev/null
@@ -1,121 +0,0 @@
-From 0456758e0c0873d1251bdf77d27f0f6175cbf289 Mon Sep 17 00:00:00 2001
-From: Peter Jones <pjones(a)redhat.com>
-Date: Tue, 25 Apr 2017 16:25:02 -0400
-Subject: [PATCH 17/29] check_cert_db(): try even harder to pick a reasonable
- validation time.
-
-Signed-off-by: Peter Jones <pjones(a)redhat.com>
----
- src/certdb.c | 75 ++++++++++++++++++++++++++++++++++++++++++++++++++++--------
- 1 file changed, 66 insertions(+), 9 deletions(-)
-
-diff --git a/src/certdb.c b/src/certdb.c
-index b7c99bb..1a4baf1 100644
---- a/src/certdb.c
-+++ b/src/certdb.c
-@@ -250,12 +250,53 @@ check_db_hash(db_specifier which, pesigcheck_context *ctx)
- return check_db(which, ctx, check_hash, NULL, 0);
- }
-
--static PRTime
--determine_reasonable_time(CERTCertificate *cert)
-+static void
-+find_cert_times(SEC_PKCS7ContentInfo *cinfo,
-+ PRTime *notBefore, PRTime *notAfter)
- {
-- PRTime notBefore, notAfter;
-- CERT_GetCertTimes(cert, ¬Before, ¬After);
-- return notBefore;
-+ CERTCertDBHandle *defaultdb, *certdb;
-+ SEC_PKCS7SignedData *sdp;
-+ CERTCertificate **certs = NULL;
-+ SECItem **rawcerts;
-+ int i, certcount;
-+ SECStatus rv;
-+
-+ if (cinfo->contentTypeTag->offset != SEC_OID_PKCS7_SIGNED_DATA) {
-+err:
-+ *notBefore = 0;
-+ *notAfter = 0x7fffffffffffffff;
-+ return;
-+ }
-+
-+ sdp = cinfo->content.signedData;
-+ rawcerts = sdp->rawCerts;
-+
-+ defaultdb = CERT_GetDefaultCertDB();
-+
-+ certdb = defaultdb;
-+ if (certdb == NULL)
-+ goto err;
-+
-+ certcount = 0;
-+ if (rawcerts != NULL) {
-+ for (; rawcerts[certcount] != NULL; certcount++)
-+ ;
-+ }
-+ rv = CERT_ImportCerts(certdb, certUsageObjectSigner, certcount,
-+ rawcerts, &certs, PR_FALSE, PR_FALSE, NULL);
-+ if (rv != SECSuccess)
-+ goto err;
-+
-+ for (i = 0; i < certcount; i++) {
-+ PRTime nb = 0, na = 0x7fffffffffff;
-+ CERT_GetCertTimes(certs[i], &nb, &na);
-+ if (*notBefore < nb)
-+ *notBefore = nb;
-+ if (*notAfter > na)
-+ *notAfter = na;
-+ }
-+
-+ CERT_DestroyCertArray(certs, certcount);
- }
-
- static db_status
-@@ -271,6 +312,8 @@ check_cert(pesigcheck_context *ctx, SECItem *sig, efi_guid_t *sigtype,
- PRBool result;
- SECStatus rv;
- db_status status = NOT_FOUND;
-+ PRTime earlyNow = 0, lateNow = 0x7fffffffffffffff;
-+ PRTime notBefore = 0, notAfter = 0x7fffffffffffffff;
-
- efi_guid_t efi_x509 = efi_guid_x509_cert;
-
-@@ -327,16 +370,30 @@ check_cert(pesigcheck_context *ctx, SECItem *sig, efi_guid_t *sigtype,
- }
- cert->timeOK = PR_TRUE;
-
-+ find_cert_times(cinfo, ¬Before, ¬After);
-+ if (earlyNow < notBefore)
-+ earlyNow = notBefore;
-+ if (lateNow > notAfter)
-+ lateNow = notAfter;
-+
- SECItem *eTime;
- PRTime atTime;
- // atTime = determine_reasonable_time(cert);
- eTime = SEC_PKCS7GetSigningTime(cinfo);
- if (eTime != NULL) {
-- if (DER_DecodeTimeChoice (&atTime, eTime) != SECSuccess)
-- atTime = determine_reasonable_time(cert);
-- } else {
-- atTime = determine_reasonable_time(cert);
-+ if (DER_DecodeTimeChoice (&atTime, eTime) == SECSuccess) {
-+ if (earlyNow < atTime)
-+ earlyNow = atTime;
-+ if (lateNow > atTime)
-+ lateNow = atTime;
-+ }
- }
-+
-+ if (lateNow < earlyNow)
-+ printf("Impossible time constraints: %ld <= %ld\n",
-+ earlyNow / 1000000, lateNow / 1000000);
-+ atTime = earlyNow / 2 + lateNow / 2;
-+
- /* Verify the signature */
- result = SEC_PKCS7VerifyDetachedSignatureAtTime(cinfo,
- certUsageObjectSigner,
---
-2.13.4
-
diff --git a/0018-show-which-db-we-re-checking.patch b/0018-show-which-db-we-re-checking.patch
deleted file mode 100644
index 2b92f83..0000000
--- a/0018-show-which-db-we-re-checking.patch
+++ /dev/null
@@ -1,137 +0,0 @@
-From 01b89fb7a191f4639a93c5a7c47a80752118ba95 Mon Sep 17 00:00:00 2001
-From: Peter Jones <pjones(a)redhat.com>
-Date: Tue, 25 Apr 2017 16:58:50 -0400
-Subject: [PATCH 18/29] show which db we're checking
-
----
- src/certdb.c | 35 ++++++++++++++++++++++++++++++++++-
- src/pesigcheck_context.c | 2 ++
- src/pesigcheck_context.h | 1 +
- 3 files changed, 37 insertions(+), 1 deletion(-)
-
-diff --git a/src/certdb.c b/src/certdb.c
-index 1a4baf1..673e074 100644
---- a/src/certdb.c
-+++ b/src/certdb.c
-@@ -18,6 +18,7 @@
- */
-
- #include <fcntl.h>
-+#include <libgen.h>
- #include <sys/mman.h>
- #include <sys/types.h>
- #include <sys/stat.h>
-@@ -42,17 +43,33 @@ add_db_file(pesigcheck_context *ctx, db_specifier which, const char *dbfile,
- return -1;
-
- db->type = type;
--
- db->fd = open(dbfile, O_RDONLY);
- if (db->fd < 0) {
- save_errno(free(db));
- return -1;
- }
-
-+ char *path = strdup(dbfile);
-+ if (!path) {
-+ save_errno(close(db->fd);
-+ free(db));
-+ return -1;
-+ }
-+
-+ db->path = basename(path);
-+ db->path = strdup(db->path);
-+ free(path);
-+ if (!db->path) {
-+ save_errno(close(db->fd);
-+ free(db));
-+ return -1;
-+ }
-+
- struct stat sb;
- int rc = fstat(db->fd, &sb);
- if (rc < 0) {
- save_errno(close(db->fd);
-+ free(db->path);
- free(db));
- return -1;
- }
-@@ -65,6 +82,7 @@ add_db_file(pesigcheck_context *ctx, db_specifier which, const char *dbfile,
- rc = read_file(db->fd, (char **)&db->map, &sz);
- if (rc < 0) {
- save_errno(close(db->fd);
-+ free(db->path);
- free(db));
- return -1;
- }
-@@ -133,6 +151,7 @@ add_cert_file(pesigcheck_context *ctx, const char *filename)
- #define DB_PATH "/sys/firmware/efi/efivars/db-d719b2cb-3d3a-4596-a3bc-dad00e67656f"
- #define MOK_PATH "/sys/firmware/efi/efivars/MokListRT-605dab50-e046-4300-abb6-3dd810dd8b23"
- #define DBX_PATH "/sys/firmware/efi/efivars/dbx-d719b2cb-3d3a-4596-a3bc-dad00e67656f"
-+#define MOKX_PATH "/sys/firmware/efi/efivars/MokListXRT-605dab50-e046-4300-abb6-3dd810dd8b23"
-
- void
- init_cert_db(pesigcheck_context *ctx, int use_system_dbs)
-@@ -167,6 +186,18 @@ init_cert_db(pesigcheck_context *ctx, int use_system_dbs)
- "database \"%s\": %m\n", DBX_PATH);
- exit(1);
- }
-+
-+ rc = add_db_file(ctx, DBX, MOKX_PATH, DB_EFIVAR);
-+ if (rc < 0 && errno != ENOENT) {
-+ fprintf(stderr, "pesigcheck: Could not add key database "
-+ "\"%s\": %m\n", MOKX_PATH);
-+ exit(1);
-+ }
-+
-+ if (ctx->dbx == NULL) {
-+ fprintf(stderr, "pesigcheck: warning: "
-+ "No key recovation database available\n");
-+ }
- }
-
- typedef db_status (*checkfn)(pesigcheck_context *ctx, SECItem *sig,
-@@ -187,6 +218,8 @@ check_db(db_specifier which, pesigcheck_context *ctx, checkfn check,
- sig.type = siBuffer;
-
- while (dbl) {
-+ printf("Searching %s %s\n", which == DB ? "db" : "dbx",
-+ dbl->path);
- EFI_SIGNATURE_LIST *certlist;
- EFI_SIGNATURE_DATA *cert;
- size_t dbsize = dbl->datalen;
-diff --git a/src/pesigcheck_context.c b/src/pesigcheck_context.c
-index b934cbe..5a355b1 100644
---- a/src/pesigcheck_context.c
-+++ b/src/pesigcheck_context.c
-@@ -87,6 +87,7 @@ pesigcheck_context_fini(pesigcheck_context *ctx)
- munmap(db->map, db->size);
- close(db->fd);
- ctx->db = db->next;
-+ free(db->path);
- free(db);
- }
- while (ctx->dbx) {
-@@ -95,6 +96,7 @@ pesigcheck_context_fini(pesigcheck_context *ctx)
- if (db->type == DB_CERT)
- free(db->data);
- munmap(db->map, db->size);
-+ free(db->path);
- close(db->fd);
- ctx->dbx = db->next;
- free(db);
-diff --git a/src/pesigcheck_context.h b/src/pesigcheck_context.h
-index 1b916e3..7b5cc89 100644
---- a/src/pesigcheck_context.h
-+++ b/src/pesigcheck_context.h
-@@ -34,6 +34,7 @@ typedef enum {
-
- struct dblist {
- db_f_type type;
-+ char *path;
- int fd;
- struct dblist *next;
- size_t size;
---
-2.13.4
-
diff --git a/0019-more-about-the-time.patch b/0019-more-about-the-time.patch
deleted file mode 100644
index 2570bf8..0000000
--- a/0019-more-about-the-time.patch
+++ /dev/null
@@ -1,97 +0,0 @@
-From 713e61448a6ffa3e6029a7c89fad61b8cb08c9ff Mon Sep 17 00:00:00 2001
-From: Peter Jones <pjones(a)redhat.com>
-Date: Tue, 25 Apr 2017 17:00:46 -0400
-Subject: [PATCH 19/29] more about the time
-
----
- src/certdb.c | 59 +++++++++++++++++++++++++++++++++--------------------------
- 1 file changed, 33 insertions(+), 26 deletions(-)
-
-diff --git a/src/certdb.c b/src/certdb.c
-index 673e074..1078a8a 100644
---- a/src/certdb.c
-+++ b/src/certdb.c
-@@ -345,8 +345,10 @@ check_cert(pesigcheck_context *ctx, SECItem *sig, efi_guid_t *sigtype,
- PRBool result;
- SECStatus rv;
- db_status status = NOT_FOUND;
-+ PRTime atTime = PR_Now();
-+ SECItem *eTime;
- PRTime earlyNow = 0, lateNow = 0x7fffffffffffffff;
-- PRTime notBefore = 0, notAfter = 0x7fffffffffffffff;
-+ PRTime notBefore, notAfter;
-
- efi_guid_t efi_x509 = efi_guid_x509_cert;
-
-@@ -358,6 +360,36 @@ check_cert(pesigcheck_context *ctx, SECItem *sig, efi_guid_t *sigtype,
- if (!cinfo)
- goto out;
-
-+ notBefore = earlyNow;
-+ notAfter = lateNow;
-+ find_cert_times(cinfo, ¬Before, ¬After);
-+ if (earlyNow < notBefore)
-+ earlyNow = notBefore;
-+ if (lateNow > notAfter)
-+ lateNow = notAfter;
-+
-+ // atTime = determine_reasonable_time(cert);
-+ eTime = SEC_PKCS7GetSigningTime(cinfo);
-+ if (eTime != NULL) {
-+ if (DER_DecodeTimeChoice (&atTime, eTime) == SECSuccess) {
-+ if (earlyNow < atTime)
-+ earlyNow = atTime;
-+ if (lateNow > atTime)
-+ lateNow = atTime;
-+ }
-+ }
-+
-+ if (lateNow < earlyNow)
-+ printf("Signature has impossible time constraint: %ld <= %ld\n",
-+ earlyNow / 1000000, lateNow / 1000000);
-+ atTime = earlyNow / 2 + lateNow / 2;
-+
-+
-+ cinfo = SEC_PKCS7DecodeItem(pkcs7sig, NULL, NULL, NULL, NULL, NULL,
-+ NULL, NULL);
-+ if (!cinfo)
-+ goto out;
-+
- /* Generate the digest of contentInfo */
- /* XXX support only sha256 for now */
- digest = SECITEM_AllocItem(NULL, NULL, 32);
-@@ -401,31 +433,6 @@ check_cert(pesigcheck_context *ctx, SECItem *sig, efi_guid_t *sigtype,
- PORT_ErrorToString(PORT_GetError()));
- goto out;
- }
-- cert->timeOK = PR_TRUE;
--
-- find_cert_times(cinfo, ¬Before, ¬After);
-- if (earlyNow < notBefore)
-- earlyNow = notBefore;
-- if (lateNow > notAfter)
-- lateNow = notAfter;
--
-- SECItem *eTime;
-- PRTime atTime;
-- // atTime = determine_reasonable_time(cert);
-- eTime = SEC_PKCS7GetSigningTime(cinfo);
-- if (eTime != NULL) {
-- if (DER_DecodeTimeChoice (&atTime, eTime) == SECSuccess) {
-- if (earlyNow < atTime)
-- earlyNow = atTime;
-- if (lateNow > atTime)
-- lateNow = atTime;
-- }
-- }
--
-- if (lateNow < earlyNow)
-- printf("Impossible time constraints: %ld <= %ld\n",
-- earlyNow / 1000000, lateNow / 1000000);
-- atTime = earlyNow / 2 + lateNow / 2;
-
- /* Verify the signature */
- result = SEC_PKCS7VerifyDetachedSignatureAtTime(cinfo,
---
-2.13.4
-
diff --git a/0020-try-to-say-why-something-fails.patch b/0020-try-to-say-why-something-fails.patch
deleted file mode 100644
index 96bdd60..0000000
--- a/0020-try-to-say-why-something-fails.patch
+++ /dev/null
@@ -1,419 +0,0 @@
-From 81583146602bba96728fa7544c8e856b32c22ee4 Mon Sep 17 00:00:00 2001
-From: Peter Jones <pjones(a)redhat.com>
-Date: Tue, 25 Apr 2017 17:01:13 -0400
-Subject: [PATCH 20/29] try to say why something fails
-
-Signed-off-by: Peter Jones <pjones(a)redhat.com>
----
- src/certdb.c | 15 ++-
- src/certdb.h | 2 +-
- src/pesigcheck.c | 244 ++++++++++++++++++++++++++++++++++++++++++-----
- src/pesigcheck_context.h | 1 +
- 4 files changed, 233 insertions(+), 29 deletions(-)
-
-diff --git a/src/certdb.c b/src/certdb.c
-index 1078a8a..fae80af 100644
---- a/src/certdb.c
-+++ b/src/certdb.c
-@@ -205,7 +205,7 @@ typedef db_status (*checkfn)(pesigcheck_context *ctx, SECItem *sig,
-
- static db_status
- check_db(db_specifier which, pesigcheck_context *ctx, checkfn check,
-- void *data, ssize_t datalen)
-+ void *data, ssize_t datalen, SECItem *match)
- {
- SECItem pkcs7sig, sig;
- dblist *dbl = which == DB ? ctx->db : ctx->dbx;
-@@ -241,8 +241,12 @@ check_db(db_specifier which, pesigcheck_context *ctx, checkfn check,
- found = check(ctx, &sig,
- &certlist->SignatureType,
- &pkcs7sig);
-- if (found == FOUND)
-+ if (found == FOUND) {
-+ if (match)
-+ memcpy(match, &sig,
-+ sizeof(sig));
- return FOUND;
-+ }
- cert = (EFI_SIGNATURE_DATA *)((uint8_t *)cert +
- certlist->SignatureSize);
- }
-@@ -280,7 +284,7 @@ check_hash(pesigcheck_context *ctx, SECItem *sig, efi_guid_t *sigtype,
- db_status
- check_db_hash(db_specifier which, pesigcheck_context *ctx)
- {
-- return check_db(which, ctx, check_hash, NULL, 0);
-+ return check_db(which, ctx, check_hash, NULL, 0, NULL);
- }
-
- static void
-@@ -459,7 +463,8 @@ out:
- }
-
- db_status
--check_db_cert(db_specifier which, pesigcheck_context *ctx, void *data, ssize_t datalen)
-+check_db_cert(db_specifier which, pesigcheck_context *ctx,
-+ void *data, ssize_t datalen, SECItem *match)
- {
-- return check_db(which, ctx, check_cert, data, datalen);
-+ return check_db(which, ctx, check_cert, data, datalen, match);
- }
-diff --git a/src/certdb.h b/src/certdb.h
-index ccf3c87..8402299 100644
---- a/src/certdb.h
-+++ b/src/certdb.h
-@@ -43,7 +43,7 @@ typedef struct {
-
- extern db_status check_db_hash(db_specifier which, pesigcheck_context *ctx);
- extern db_status check_db_cert(db_specifier which, pesigcheck_context *ctx,
-- void *data, ssize_t datalen);
-+ void *data, ssize_t datalen, SECItem *match);
-
- extern void init_cert_db(pesigcheck_context *ctx, int use_system_dbs);
- extern int add_cert_db(pesigcheck_context *ctx, const char *filename);
-diff --git a/src/pesigcheck.c b/src/pesigcheck.c
-index d7be542..c8e1086 100644
---- a/src/pesigcheck.c
-+++ b/src/pesigcheck.c
-@@ -17,7 +17,9 @@
- * Author(s): Peter Jones <pjones(a)redhat.com>
- */
-
-+#include <err.h>
- #include <fcntl.h>
-+#include <stdbool.h>
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
-@@ -88,7 +90,8 @@ check_inputs(pesigcheck_context *ctx)
- }
-
- static int
--cert_matches_digest(pesigcheck_context *ctx, void *data, ssize_t datalen)
-+cert_matches_digest(pesigcheck_context *ctx, void *data, ssize_t datalen,
-+ SECItem *digest_out)
- {
- SECItem sig, *pe_digest, *content;
- uint8_t *digest;
-@@ -109,6 +112,12 @@ cert_matches_digest(pesigcheck_context *ctx, void *data, ssize_t datalen)
- pe_digest = ctx->cms_ctx->digests[0].pe_digest;
- content = cinfo->content.signedData->contentInfo.content.data;
- digest = content->data + content->len - pe_digest->len;
-+ if (digest_out) {
-+ digest_out->data = malloc(pe_digest->len);
-+ digest_out->len = pe_digest->len;
-+ digest_out->type = pe_digest->type;
-+ memcpy(digest_out->data, digest, pe_digest->len);
-+ }
- if (memcmp(pe_digest->data, digest, pe_digest->len) != 0)
- goto out;
-
-@@ -120,22 +129,149 @@ out:
- return ret;
- }
-
-+struct reason {
-+ enum {
-+ WHITELISTED = 0,
-+ INVALID = 1,
-+ BLACKLISTED = 2,
-+ NO_WHITELIST = 3,
-+ } reason;
-+ enum {
-+ NONE = 0,
-+ DIGEST = 1,
-+ SIGNATURE = 2,
-+ } type;
-+ union {
-+ struct {
-+ SECItem digest;
-+ };
-+ struct {
-+ SECItem sig;
-+ SECItem db_cert;
-+ };
-+ };
-+};
-+
-+static void
-+print_digest(SECItem *digest)
-+{
-+ char buf[digest->len * 2 + 2];
-+
-+ for (unsigned int i = 0; i < digest->len; i++)
-+ snprintf(buf + i * 2, digest->len * 2, "%02x",
-+ digest->data[i]);
-+ buf[digest->len * 2] = '\0';
-+ printf("%s\n", buf);
-+}
-+
-+static void
-+print_certificate(SECItem *cert)
-+{
-+ printf("put a breakpoint at %s:%d\n", __FILE__, __LINE__);
-+ printf("cert: %p\n", cert);
-+}
-+
-+static void
-+print_signatures(SECItem *database_cert, SECItem *signature)
-+{
-+ printf("put a breakpoint at %s:%d\n", __FILE__, __LINE__);
-+ print_certificate(database_cert);
-+ print_certificate(signature);
-+}
-+
-+static void
-+print_reason(struct reason *reason)
-+{
-+ switch (reason->reason) {
-+ case WHITELISTED:
-+ printf("Whitelist entry: ");
-+ if (reason->type == DIGEST)
-+ print_digest(&reason->digest);
-+ else if (reason->type == SIGNATURE)
-+ print_signatures(&reason->sig, &reason->db_cert);
-+ else
-+ errx(1, "Unknown data type %d\n", reason->type);
-+ break;
-+ case INVALID:
-+ if (reason->type == DIGEST) {
-+ printf("Invalid digest: ");
-+ print_digest(&reason->digest);
-+ } else if (reason->type == SIGNATURE) {
-+ printf("Invalid signature: ");
-+ print_signatures(&reason->sig, &reason->db_cert);
-+ } else {
-+ errx(1, "Unknown data type %d\n", reason->type);
-+ }
-+ break;
-+ case BLACKLISTED:
-+ if (reason->type == DIGEST) {
-+ printf("Invalid digest: ");
-+ print_digest(&reason->digest);
-+ } else if (reason->type == SIGNATURE) {
-+ printf("Invalid signature: ");
-+ print_signatures(&reason->sig, &reason->db_cert);
-+ } else {
-+ errx(1, "Unknown data type %d\n", reason->type);
-+ }
-+ break;
-+ case NO_WHITELIST:
-+ if (reason->type == NONE)
-+ printf("No matching whitelist entry.\n");
-+ else
-+ errx(1, "Invalid data type %d\n", reason->type);
-+ break;
-+ default:
-+ errx(1, "Unknown reason type %d\n", reason->reason);
-+ break;
-+ }
-+}
-+
-+static void
-+get_digest(pesigcheck_context *ctx, SECItem *digest)
-+{
-+ struct cms_context *cms = ctx->cms_ctx;
-+ struct digest *cms_digest = &cms->digests[cms->selected_digest];
-+
-+ memcpy(digest, cms_digest->pe_digest, sizeof (*digest));
-+}
-+
- static int
--check_signature(pesigcheck_context *ctx)
-+check_signature(pesigcheck_context *ctx, int *nreasons,
-+ struct reason **reasons)
- {
-- int has_valid_cert = 0;
-- int has_invalid_cert = 0;
-+ bool has_valid_cert = false;
-+ bool is_invalid = false;
-+ struct reason *reasonps = NULL, *reason;
-+ int num_reasons = 16;
-+ int nreason = 0;
- int rc = 0;
-+ int ret = -1;
-
- cert_iter iter;
-
-+ reasonps = calloc(sizeof(struct reason), 512);
-+ if (!reasonps)
-+ err(1, "check_signature");
-+
- generate_digest(ctx->cms_ctx, ctx->inpe, 1);
-
-- if (check_db_hash(DBX, ctx) == FOUND)
-- return -1;
-+ if (check_db_hash(DBX, ctx) == FOUND) {
-+ reason = &reasonps[nreason];
-+ reason->reason = BLACKLISTED;
-+ reason->type = DIGEST;
-+ get_digest(ctx, &reason->digest);
-+ reason += 1;
-+ is_invalid = true;
-+ }
-
-- if (check_db_hash(DB, ctx) == FOUND)
-- has_valid_cert = 1;
-+ if (check_db_hash(DB, ctx) == FOUND) {
-+ reason = &reasonps[nreason];
-+ reason->reason = WHITELISTED;
-+ reason->type = DIGEST;
-+ get_digest(ctx, &reason->digest);
-+ nreason += 1;
-+ has_valid_cert = true;
-+ }
-
- rc = cert_iter_init(&iter, ctx->inpe);
- if (rc < 0)
-@@ -145,32 +281,81 @@ check_signature(pesigcheck_context *ctx)
- ssize_t datalen;
-
- while (1) {
-+ /*
-+ * Make sure we always have enough for this iteration of the
-+ * loop, plus one "NO_WHITELIST" entry at the end.
-+ */
-+ if (nreason >= num_reasons - 4) {
-+ struct reason *new_reasons;
-+
-+ num_reasons += 16;
-+
-+ new_reasons = calloc(sizeof(struct reason), num_reasons);
-+ if (!new_reasons)
-+ err(1, "check_signature");
-+ reasonps = new_reasons;
-+ }
-+
- rc = next_cert(&iter, &data, &datalen);
- if (rc <= 0)
- break;
-
-- if (cert_matches_digest(ctx, data, datalen) < 0) {
-- has_invalid_cert = 1;
-- break;
-+ reason = &reasonps[nreason];
-+ if (cert_matches_digest(ctx, data, datalen,
-+ &reason->digest) < 0) {
-+ reason->reason = INVALID;
-+ reason->type = DIGEST;
-+ nreason += 1;
-+ is_invalid = true;
- }
-
-- if (check_db_cert(DBX, ctx, data, datalen) == FOUND) {
-- has_invalid_cert = 1;
-- break;
-+ reason = &reasonps[nreason];
-+ if (check_db_cert(DBX, ctx, data, datalen,
-+ &reason->db_cert) == FOUND) {
-+ reason->reason = INVALID;
-+ reason->type = SIGNATURE;
-+ reason->sig.data = data;
-+ reason->sig.len = datalen;
-+ reason->type = siBuffer;
-+ nreason += 1;
-+ is_invalid = true;
- }
-
-- if (check_db_cert(DB, ctx, data, datalen) == FOUND)
-- has_valid_cert = 1;
-+ reason = &reasonps[nreason];
-+ if (check_db_cert(DB, ctx, data, datalen,
-+ &reason->db_cert) == FOUND) {
-+ reason->reason = WHITELISTED;
-+ reason->type = SIGNATURE;
-+ reason->sig.data = data;
-+ reason->sig.len = datalen;
-+ reason->type = siBuffer;
-+ nreason += 1;
-+ has_valid_cert = true;
-+ }
- }
-
- err:
-- if (has_invalid_cert)
-- return -1;
-+ if (has_valid_cert != true) {
-+ if (is_invalid != true) {
-+ reason = &reasonps[nreason];
-+ reason->reason = NO_WHITELIST;
-+ reason->type = NONE;
-+ nreason += 1;
-+ }
-+ is_invalid = true;
-+ }
-
-- if (has_valid_cert)
-- return 0;
-+ if (is_invalid == false)
-+ ret = 0;
-
-- return -1;
-+ if (nreasons && reasons) {
-+ *nreasons = nreason;
-+ *reasons = reasonps;
-+ } else {
-+ free(reasonps);
-+ }
-+
-+ return ret;
- }
-
- void
-@@ -204,6 +389,9 @@ main(int argc, char *argv[])
-
- pesigcheck_context ctx, *ctxp = &ctx;
-
-+ struct reason *reasons = NULL;
-+ int nreasons = 0;
-+
- char *dbfile = NULL;
- char *dbxfile = NULL;
- char *certfile = NULL;
-@@ -242,6 +430,12 @@ main(int argc, char *argv[])
- .arg = &ctx.quiet,
- .val = 1,
- .descrip = "return only; no text output." },
-+ {.longName = "verbose",
-+ .shortName = 'v',
-+ .argInfo = POPT_BIT_SET,
-+ .arg = &ctx.verbose,
-+ .val = 1,
-+ .descrip = "print reasons for success and failure." },
- {.longName = "no-system-db",
- .shortName = 'n',
- .argInfo = POPT_ARG_INT,
-@@ -308,12 +502,16 @@ main(int argc, char *argv[])
- exit(1);
- }
-
-- rc = check_signature(ctxp);
-+ rc = check_signature(ctxp, &nreasons, &reasons);
-
-- close_input(ctxp);
-+ if (!ctx.quiet && ctx.verbose) {
-+ for (int i = 0; i < nreasons; i++)
-+ print_reason(&reasons[i]);
-+ }
- if (!ctx.quiet)
- printf("pesigcheck: \"%s\" is %s.\n", ctx.infile,
- rc >= 0 ? "valid" : "invalid");
-+ close_input(ctxp);
- pesigcheck_context_fini(&ctx);
-
- NSS_Shutdown();
-diff --git a/src/pesigcheck_context.h b/src/pesigcheck_context.h
-index 7b5cc89..aec415e 100644
---- a/src/pesigcheck_context.h
-+++ b/src/pesigcheck_context.h
-@@ -61,6 +61,7 @@ typedef struct pesigcheck_context {
- Pe *inpe;
-
- int quiet;
-+ int verbose;
-
- hashlist *hashes;
-
---
-2.13.4
-
diff --git a/0021-Fix-race-condition-in-SEC_GetPassword.patch b/0021-Fix-race-condition-in-SEC_GetPassword.patch
deleted file mode 100644
index 3088923..0000000
--- a/0021-Fix-race-condition-in-SEC_GetPassword.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From a40c584691ae071e93e8adf4e5c05bcd90c68159 Mon Sep 17 00:00:00 2001
-From: Julien Cristau <jcristau(a)debian.org>
-Date: Sat, 6 May 2017 22:45:34 +0200
-Subject: [PATCH 21/29] Fix race condition in SEC_GetPassword
-
-A side effect of echoOff is to discard unread input, so if we print the
-prompt before echoOff, the user (or process) at the other end might
-react to it by writing the password in between those steps, which is
-then discarded. This bit me when trying to drive pesign with an expect
-script.
-
-Signed-off-by: Julien Cristau <jcristau(a)debian.org>
----
- src/password.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/password.c b/src/password.c
-index cd1c07e..d4eae0d 100644
---- a/src/password.c
-+++ b/src/password.c
-@@ -71,9 +71,9 @@ static char *SEC_GetPassword(FILE *input, FILE *output, char *prompt,
- for (;;) {
- /* Prompt for password */
- if (isTTY) {
-+ echoOff(infd);
- fprintf(output, "%s", prompt);
- fflush (output);
-- echoOff(infd);
- }
-
- fgets ( phrase, sizeof(phrase), input);
---
-2.13.4
-
diff --git a/0022-sysvinit-Create-the-socket-directory-at-runtime.patch b/0022-sysvinit-Create-the-socket-directory-at-runtime.patch
deleted file mode 100644
index 06980ee..0000000
--- a/0022-sysvinit-Create-the-socket-directory-at-runtime.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-From 27afa5a4ea8de1679603f5871935096280d0b12e Mon Sep 17 00:00:00 2001
-From: David Michael <david.michael(a)coreos.com>
-Date: Tue, 13 Jun 2017 13:20:16 -0700
-Subject: [PATCH 22/29] sysvinit: Create the socket directory at runtime
-
-This better supports non-systemd configurations with tmpfs on /run.
----
- src/pesign.sysvinit.in | 3 +++
- 1 file changed, 3 insertions(+)
-
-diff --git a/src/pesign.sysvinit.in b/src/pesign.sysvinit.in
-index d8fffca..dc508d8 100644
---- a/src/pesign.sysvinit.in
-+++ b/src/pesign.sysvinit.in
-@@ -20,6 +20,9 @@ RETVAL=0
-
- start(){
- echo -n "Starting pesign: "
-+ mkdir /var/run/pesign 2>/dev/null &&
-+ chown pesign:pesign /var/run/pesign &&
-+ chmod 0770 /var/run/pesign
- daemon /usr/bin/pesign --daemonize
- RETVAL=$?
- echo
---
-2.13.4
-
diff --git a/0023-Better-authorization-scripts.-Again.patch b/0023-Better-authorization-scripts.-Again.patch
deleted file mode 100644
index c778c94..0000000
--- a/0023-Better-authorization-scripts.-Again.patch
+++ /dev/null
@@ -1,217 +0,0 @@
-From 31560e2784722b986b8a73cc28e3510870180b07 Mon Sep 17 00:00:00 2001
-From: Peter Jones <pjones(a)redhat.com>
-Date: Tue, 8 Aug 2017 15:44:44 -0400
-Subject: [PATCH 23/29] Better authorization scripts. Again.
-
-Signed-off-by: Peter Jones <pjones(a)redhat.com>
----
- src/Makefile | 12 ++++++----
- src/pesign-authorize | 56 +++++++++++++++++++++++++++++++++++++++++++++
- src/pesign-authorize-groups | 30 ------------------------
- src/pesign-authorize-users | 30 ------------------------
- src/pesign.service.in | 3 +--
- src/pesign.sysvinit.in | 3 +--
- 6 files changed, 65 insertions(+), 69 deletions(-)
- create mode 100755 src/pesign-authorize
- delete mode 100644 src/pesign-authorize-groups
- delete mode 100644 src/pesign-authorize-users
-
-diff --git a/src/Makefile b/src/Makefile
-index 654b792..84ad130 100644
---- a/src/Makefile
-+++ b/src/Makefile
-@@ -7,7 +7,7 @@ include $(TOPDIR)/Make.defaults
-
- BINTARGETS=authvar client efikeygen efisiglist pesigcheck pesign
- SVCTARGETS=pesign.sysvinit pesign.service
--TARGETS=$(BINTARGETS) $(SVCTARGETS)
-+TARGETS=$(BINTARGETS) $(SVCTARGETS) pesign-users pesign-groups
-
- all : deps $(TARGETS)
-
-@@ -65,6 +65,9 @@ install_sysvinit: pesign.sysvinit
- $(INSTALL) -d -m 755 $(INSTALLROOT)/etc/rc.d/init.d/
- $(INSTALL) -m 755 pesign.sysvinit $(INSTALLROOT)/etc/rc.d/init.d/pesign
-
-+pesign-users pesign-groups :
-+ echo pesign > $@
-+
- install :
- $(INSTALL) -d -m 700 $(INSTALLROOT)/etc/pki/pesign/
- $(INSTALL) -d -m 700 $(INSTALLROOT)/etc/pki/pesign-rh-test/
-@@ -88,10 +91,9 @@ install :
- $(INSTALL) -d -m 755 $(INSTALLROOT)/etc/rpm/
- $(INSTALL) -m 644 macros.pesign $(INSTALLROOT)/etc/rpm/
- $(INSTALL) -d -m 755 $(INSTALLROOT)$(libexecdir)/pesign/
-- $(INSTALL) -m 750 pesign-authorize-users $(INSTALLROOT)$(libexecdir)/pesign/
-- $(INSTALL) -m 750 pesign-authorize-groups $(INSTALLROOT)$(libexecdir)/pesign/
-+ $(INSTALL) -m 750 pesign-authorize $(INSTALLROOT)$(libexecdir)/pesign/
- $(INSTALL) -d -m 700 $(INSTALLROOT)/etc/pesign
-- $(INSTALL) -m 600 /dev/null $(INSTALLROOT)/etc/pesign/users
-- $(INSTALL) -m 600 /dev/null $(INSTALLROOT)/etc/pesign/groups
-+ $(INSTALL) -m 600 pesign-users $(INSTALLROOT)/etc/pesign/users
-+ $(INSTALL) -m 600 pesign-groups $(INSTALLROOT)/etc/pesign/groups
-
- .PHONY: all deps clean install
-diff --git a/src/pesign-authorize b/src/pesign-authorize
-new file mode 100755
-index 0000000..a496f60
---- /dev/null
-+++ b/src/pesign-authorize
-@@ -0,0 +1,56 @@
-+#!/bin/bash
-+set -e
-+set -u
-+
-+#
-+# With /run/pesign/socket on tmpfs, a simple way of restoring the
-+# acls for specific users is useful
-+#
-+# Compare to: http://infrastructure.fedoraproject.org/cgit/ansible.git/tree/roles/bkern...
-+#
-+
-+# License: GPLv2
-+declare -a fileusers=()
-+declare -a dirusers=()
-+for user in $(cat /etc/pesign/users); do
-+ dirusers[${#dirusers[@]}]=-m
-+ dirusers[${#dirusers[@]}]="u:$user:rwx"
-+ fileusers[${#fileusers[@]}]=-m
-+ fileusers[${#fileusers[@]}]="u:$user:rw"
-+done
-+
-+declare -a filegroups=()
-+declare -a dirgroups=()
-+for group in $(cat /etc/pesign/groups); do
-+ dirgroups[${#dirgroups[@]}]=-m
-+ dirgroups[${#dirgroups[@]}]="g:$group:rwx"
-+ filegroups[${#filegroups[@]}]=-m
-+ filegroups[${#filegroups[@]}]="g:$group:rw"
-+done
-+
-+update_subdir() {
-+ subdir=$1 && shift
-+
-+ setfacl -bk "${subdir}"
-+ setfacl "${dirusers[@]}" "${dirgroups[@]}" "${subdir}"
-+ for x in "${subdir}"* ; do
-+ if [ -d "${x}" ]; then
-+ setfacl -bk ${x}
-+ setfacl "${dirusers[@]}" "${dirgroups[@]}" ${x}
-+ update_subdir "${x}/"
-+ elif [ -e "${x}" ]; then
-+ setfacl -bk ${x}
-+ setfacl "${fileusers[@]}" "${filegroups[@]}" ${x}
-+ else
-+ :;
-+ fi
-+ done
-+}
-+
-+for x in /var/run/pesign/ /etc/pki/pesign*/ ; do
-+ if [ -d "${x}" ]; then
-+ update_subdir "${x}"
-+ else
-+ :;
-+ fi
-+done
-diff --git a/src/pesign-authorize-groups b/src/pesign-authorize-groups
-deleted file mode 100644
-index cf51fb6..0000000
---- a/src/pesign-authorize-groups
-+++ /dev/null
-@@ -1,30 +0,0 @@
--#!/bin/bash
--set -e
--
--#
--# With /run/pesign/socket on tmpfs, a simple way of restoring the
--# acls for specific groups is useful
--#
--# Compare to: http://infrastructure.fedoraproject.org/cgit/ansible.git/tree/roles/bkern...
--#
--
--# License: GPLv2
--
--if [ -r /etc/pesign/groups ]; then
-- for group in $(cat /etc/pesign/groups); do
-- if [ -d /var/run/pesign ]; then
-- setfacl -m g:${group}:rx /var/run/pesign
-- if [ -e /var/run/pesign/socket ]; then
-- setfacl -m g:${group}:rw /var/run/pesign/socket
-- fi
-- fi
-- for x in /etc/pki/pesign*/ ; do
-- if [ -d ${x} ]; then
-- setfacl -m g:${group}:rx ${x}
-- for y in ${x}{cert8,key3,secmod}.db ; do
-- setfacl -m g:${group}:rw ${y}
-- done
-- fi
-- done
-- done
--fi
-diff --git a/src/pesign-authorize-users b/src/pesign-authorize-users
-deleted file mode 100644
-index 940138e..0000000
---- a/src/pesign-authorize-users
-+++ /dev/null
-@@ -1,30 +0,0 @@
--#!/bin/bash
--set -e
--
--#
--# With /run/pesign/socket on tmpfs, a simple way of restoring the
--# acls for specific users is useful
--#
--# Compare to: http://infrastructure.fedoraproject.org/cgit/ansible.git/tree/roles/bkern...
--#
--
--# License: GPLv2
--
--if [ -r /etc/pesign/users ]; then
-- for username in $(cat /etc/pesign/users); do
-- if [ -d /var/run/pesign ]; then
-- setfacl -m g:${username}:rx /var/run/pesign
-- if [ -e /var/run/pesign/socket ]; then
-- setfacl -m g:${username}:rw /var/run/pesign/socket
-- fi
-- fi
-- for x in /etc/pki/pesign*/ ; do
-- if [ -d ${x} ]; then
-- setfacl -m g:${username}:rx ${x}
-- for y in ${x}{cert8,key3,secmod}.db ; do
-- setfacl -m g:${username}:rw ${y}
-- done
-- fi
-- done
-- done
--fi
-diff --git a/src/pesign.service.in b/src/pesign.service.in
-index aaa408e..c75a000 100644
---- a/src/pesign.service.in
-+++ b/src/pesign.service.in
-@@ -6,5 +6,4 @@ PrivateTmp=true
- Type=forking
- PIDFile=/var/run/pesign.pid
- ExecStart=/usr/bin/pesign --daemonize
--ExecStartPost=@@LIBEXECDIR@@/pesign/pesign-authorize-users
--ExecStartPost=@@LIBEXECDIR@@/pesign/pesign-authorize-groups
-+ExecStartPost=@@LIBEXECDIR@@/pesign/pesign-authorize
-diff --git a/src/pesign.sysvinit.in b/src/pesign.sysvinit.in
-index dc508d8..b0e0f84 100644
---- a/src/pesign.sysvinit.in
-+++ b/src/pesign.sysvinit.in
-@@ -27,8 +27,7 @@ start(){
- RETVAL=$?
- echo
- touch /var/lock/subsys/pesign
-- @@LIBEXECDIR@@/pesign/pesign-authorize-users
-- @@LIBEXECDIR@@/pesign/pesign-authorize-groups
-+ @@LIBEXECDIR@@/pesign/pesign-authorize
- }
-
- stop(){
---
-2.13.4
-
diff --git a/0024-Make-the-daemon-also-try-to-give-better-errors-on-EP.patch b/0024-Make-the-daemon-also-try-to-give-better-errors-on-EP.patch
deleted file mode 100644
index 8f4a380..0000000
--- a/0024-Make-the-daemon-also-try-to-give-better-errors-on-EP.patch
+++ /dev/null
@@ -1,95 +0,0 @@
-From a7b0f7e1ce2de1acea9a8c286a0ff3dd9bc245cb Mon Sep 17 00:00:00 2001
-From: Peter Jones <pjones(a)redhat.com>
-Date: Tue, 8 Aug 2017 17:28:19 -0400
-Subject: [PATCH 24/29] Make the daemon also try to give better errors on
- -EPERM etc.
-
-Basically 6796e5f but also for the daemon. This also tries to fix them
-up to save errno better, for more accurate reporting.
-
-Signed-off-by: Peter Jones <pjones(a)redhat.com>
----
- src/daemon.c | 27 +++++++++++++++++++++++++--
- src/pesign.c | 8 ++++++--
- 2 files changed, 31 insertions(+), 4 deletions(-)
-
-diff --git a/src/daemon.c b/src/daemon.c
-index 7f694b2..942d576 100644
---- a/src/daemon.c
-+++ b/src/daemon.c
-@@ -19,6 +19,7 @@
-
- #include <errno.h>
- #include <fcntl.h>
-+#include <glob.h>
- #include <poll.h>
- #include <pwd.h>
- #include <signal.h>
-@@ -1104,10 +1105,32 @@ daemonize(cms_context *cms_ctx, char *certdir, int do_fork)
- "pesignd starting (pid %d)", ctx.pid);
-
- SECStatus status = NSS_Init(certdir);
-+ int error = errno;
- if (status != SECSuccess) {
-+ char *globpattern = NULL;
-+ rc = asprintf(&globpattern, "%s/cert*.db",
-+ certdir);
-+ if (rc > 0) {
-+ glob_t globbuf;
-+ memset(&globbuf, 0, sizeof(globbuf));
-+ rc = glob(globpattern, GLOB_ERR, NULL,
-+ &globbuf);
-+ if (rc != 0) {
-+ errno = error;
-+ ctx.backup_cms->log(ctx.backup_cms,
-+ ctx.priority|LOG_NOTICE,
-+ "Could not open NSS database (\"%s\"): %m",
-+ PORT_ErrorToString(PORT_GetError()));
-+ exit(1);
-+ }
-+ }
-+ }
-+ if (status != SECSuccess) {
-+ errno = error;
- ctx.backup_cms->log(ctx.backup_cms, ctx.priority|LOG_NOTICE,
-- "Could not initialize nss: %s\n",
-- PORT_ErrorToString(PORT_GetError()));
-+ "Could not initialize nss.\n"
-+ "NSS says \"%s\" errno says \"%m\"\n",
-+ PORT_ErrorToString(PORT_GetError()));
- exit(1);
- }
-
-diff --git a/src/pesign.c b/src/pesign.c
-index 5879cfc..6ceda34 100644
---- a/src/pesign.c
-+++ b/src/pesign.c
-@@ -660,10 +660,12 @@ main(int argc, char *argv[])
-
- if (!daemon) {
- SECStatus status;
-+ int error;
- if (need_db) {
- status = NSS_Init(certdir);
- if (status != SECSuccess) {
- char *globpattern = NULL;
-+ error = errno;
- rc = asprintf(&globpattern, "%s/cert*.db",
- certdir);
- if (rc > 0) {
-@@ -680,8 +682,10 @@ main(int argc, char *argv[])
- } else
- status = NSS_NoDB_Init(NULL);
- if (status != SECSuccess) {
-- errx(1, "Could not initialize nss. NSS says \"%s\" errno says \"%m\"\n",
-- PORT_ErrorToString(PORT_GetError()));
-+ errno = error;
-+ errx(1, "Could not initialize nss.\n"
-+ "NSS says \"%s\" errno says \"%m\"\n",
-+ PORT_ErrorToString(PORT_GetError()));
- }
-
- status = register_oids(ctxp->cms_ctx);
---
-2.13.4
-
diff --git a/0025-certdb-fix-PRTime-printfs-for-i686.patch b/0025-certdb-fix-PRTime-printfs-for-i686.patch
deleted file mode 100644
index 0fc2ad8..0000000
--- a/0025-certdb-fix-PRTime-printfs-for-i686.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-From bc1043bf2b428971e29a61a341da9a57595bada5 Mon Sep 17 00:00:00 2001
-From: Peter Jones <pjones(a)redhat.com>
-Date: Wed, 9 Aug 2017 17:40:33 -0400
-Subject: [PATCH 25/29] certdb: fix PRTime printfs for i686
-
-Signed-off-by: Peter Jones <pjones(a)redhat.com>
----
- src/certdb.c | 5 ++---
- 1 file changed, 2 insertions(+), 3 deletions(-)
-
-diff --git a/src/certdb.c b/src/certdb.c
-index fae80af..29c9502 100644
---- a/src/certdb.c
-+++ b/src/certdb.c
-@@ -384,11 +384,10 @@ check_cert(pesigcheck_context *ctx, SECItem *sig, efi_guid_t *sigtype,
- }
-
- if (lateNow < earlyNow)
-- printf("Signature has impossible time constraint: %ld <= %ld\n",
-- earlyNow / 1000000, lateNow / 1000000);
-+ printf("Signature has impossible time constraint: %lld <= %lld\n",
-+ earlyNow / 1000000LL, lateNow / 1000000LL);
- atTime = earlyNow / 2 + lateNow / 2;
-
--
- cinfo = SEC_PKCS7DecodeItem(pkcs7sig, NULL, NULL, NULL, NULL, NULL,
- NULL, NULL);
- if (!cinfo)
---
-2.13.4
-
diff --git a/0026-Clean-up-gcc-command-lines-a-little.patch b/0026-Clean-up-gcc-command-lines-a-little.patch
deleted file mode 100644
index 928d62d..0000000
--- a/0026-Clean-up-gcc-command-lines-a-little.patch
+++ /dev/null
@@ -1,41 +0,0 @@
-From a44115c9b4f43a1a7219f897bd33555e653d2e20 Mon Sep 17 00:00:00 2001
-From: Peter Jones <pjones(a)redhat.com>
-Date: Thu, 10 Aug 2017 10:02:38 -0400
-Subject: [PATCH 26/29] Clean up gcc command lines a little
-
-Signed-off-by: Peter Jones <pjones(a)redhat.com>
----
- Make.defaults | 9 ++++-----
- 1 file changed, 4 insertions(+), 5 deletions(-)
-
-diff --git a/Make.defaults b/Make.defaults
-index 39b78f0..b6c0381 100644
---- a/Make.defaults
-+++ b/Make.defaults
-@@ -20,8 +20,7 @@ CROSS_COMPILE ?= $(bindir)
- PKG_CONFIG = $(CROSS_COMPILE)pkg-config
- CC := $(if $(filter default,$(origin CC)),$(CROSS_COMPILE)gcc,$(CC))
- CCLD := $(if $(filter undefined,$(origin CCLD)),$(CC),$(CCLD))
--CFLAGS ?= -O0 -g3 -fvar-tracking -fvar-tracking-assignments \
-- -Wall -Werror -Wextra -Wno-error=cpp
-+CFLAGS ?= -O0 -g3 -fvar-tracking -fvar-tracking-assignments -Wno-error=cpp
- AS := $(CROSS_COMPILE)as
- AR := $(CROSS_COMPILE)gcc-ar
- RANLIB := $(CROSS_COMPILE)gcc-ranlib
-@@ -36,10 +35,10 @@ ARCH := $(shell uname -m | sed s,i[3456789]86,ia32,)
-
- SOFLAGS = -shared
- clang_cflags =
--gcc_cflags = -Wmaybe-uninitialized
-+gcc_cflags = -Wmaybe-uninitialized -grecord-gcc-switches
- cflags = $(CFLAGS) $(ARCH3264) \
-- -Wall -Werror -Wno-cpp -Wsign-compare -Wno-unused-result \
-- -Wno-unused-function\
-+ -Wall -Werror -Wextra -Wsign-compare -Wno-unused-result \
-+ -Wno-unused-function -Wsign-compare \
- -std=gnu11 -fshort-wchar -fPIC -flto -fno-strict-aliasing \
- -fno-merge-constants -fkeep-inline-functions \
- -D_GNU_SOURCE -DCONFIG_$(ARCH) -I${TOPDIR}/include \
---
-2.13.4
-
diff --git a/0027-Make-pesign-users-groups-static-in-the-repo.patch b/0027-Make-pesign-users-groups-static-in-the-repo.patch
deleted file mode 100644
index 4131de3..0000000
--- a/0027-Make-pesign-users-groups-static-in-the-repo.patch
+++ /dev/null
@@ -1,54 +0,0 @@
-From a133d051c3f8acf3e058e92711eb528c3c0f41f9 Mon Sep 17 00:00:00 2001
-From: Peter Jones <pjones(a)redhat.com>
-Date: Thu, 10 Aug 2017 10:03:37 -0400
-Subject: [PATCH 27/29] Make pesign-{users,groups} static in the repo.
-
-Signed-off-by: Peter Jones <pjones(a)redhat.com>
----
- src/Makefile | 5 +----
- src/pesign-groups | 1 +
- src/pesign-users | 1 +
- 3 files changed, 3 insertions(+), 4 deletions(-)
- create mode 100644 src/pesign-groups
- create mode 100644 src/pesign-users
-
-diff --git a/src/Makefile b/src/Makefile
-index 84ad130..7d68fa1 100644
---- a/src/Makefile
-+++ b/src/Makefile
-@@ -7,7 +7,7 @@ include $(TOPDIR)/Make.defaults
-
- BINTARGETS=authvar client efikeygen efisiglist pesigcheck pesign
- SVCTARGETS=pesign.sysvinit pesign.service
--TARGETS=$(BINTARGETS) $(SVCTARGETS) pesign-users pesign-groups
-+TARGETS=$(BINTARGETS) $(SVCTARGETS)
-
- all : deps $(TARGETS)
-
-@@ -65,9 +65,6 @@ install_sysvinit: pesign.sysvinit
- $(INSTALL) -d -m 755 $(INSTALLROOT)/etc/rc.d/init.d/
- $(INSTALL) -m 755 pesign.sysvinit $(INSTALLROOT)/etc/rc.d/init.d/pesign
-
--pesign-users pesign-groups :
-- echo pesign > $@
--
- install :
- $(INSTALL) -d -m 700 $(INSTALLROOT)/etc/pki/pesign/
- $(INSTALL) -d -m 700 $(INSTALLROOT)/etc/pki/pesign-rh-test/
-diff --git a/src/pesign-groups b/src/pesign-groups
-new file mode 100644
-index 0000000..7f57cc5
---- /dev/null
-+++ b/src/pesign-groups
-@@ -0,0 +1 @@
-+pesign
-diff --git a/src/pesign-users b/src/pesign-users
-new file mode 100644
-index 0000000..7f57cc5
---- /dev/null
-+++ b/src/pesign-users
-@@ -0,0 +1 @@
-+pesign
---
-2.13.4
-
diff --git a/0028-rpm-Make-the-client-signer-use-the-fedora-values-unl.patch b/0028-rpm-Make-the-client-signer-use-the-fedora-values-unl.patch
deleted file mode 100644
index 3f0b2e1..0000000
--- a/0028-rpm-Make-the-client-signer-use-the-fedora-values-unl.patch
+++ /dev/null
@@ -1,43 +0,0 @@
-From 025eb8aea94761fdc45507b6192aafdef80d4842 Mon Sep 17 00:00:00 2001
-From: Peter Jones <pjones(a)redhat.com>
-Date: Wed, 9 Aug 2017 17:31:31 -0400
-Subject: [PATCH 28/29] rpm: Make the client signer use the fedora values
- unless overridden
-
-Signed-off-by: Peter Jones <pjones(a)redhat.com>
----
- src/macros.pesign | 9 ++++++---
- 1 file changed, 6 insertions(+), 3 deletions(-)
-
-diff --git a/src/macros.pesign b/src/macros.pesign
-index 69280e9..22a3ee6 100644
---- a/src/macros.pesign
-+++ b/src/macros.pesign
-@@ -9,6 +9,9 @@
- %__pesign_token %{nil}%{?pe_signing_token:-t "%{pe_signing_token}"}
- %__pesign_cert %{!?pe_signing_cert:"Red Hat Test Certificate"}%{?pe_signing_cert:"%{pe_signing_cert}"}
-
-+%__pesign_client_token %{!?pe_signing_token:"Fedora Signer (OpenSC Card)"}%{?pe_signing_token:"%{pe_signing_token}"}
-+%__pesign_client_cert %{!?pe_signing_cert:"/CN=Fedora Secure Boot Signer"}%{?pe_signing_cert:"%{pe_signing_cert}"}
-+
- %_pesign /usr/bin/pesign
- %_pesign_client /usr/bin/pesign-client
-
-@@ -41,11 +44,11 @@
- --certdir ${nss} -c signer %{-o} \
- rm -rf ${sattrs} ${sattrs}.sig ${nss} \
- elif [ -S /var/run/pesign/socket ]; then \
-- %{_pesign_client} -t %{__pesign_token} \\\
-- -c %{__pesign_cert} \\\
-+ %{_pesign_client} -t %{__pesign_client_token} \\\
-+ -c %{__pesign_client_cert} \\\
- %{-i} %{-o} %{-e} %{-s} %{-C} \
- else \
-- %{_pesign} -t %{__pesign_token} -c %{__pesign_cert} \\\
-+ %{_pesign} %{__pesign_token} -c %{__pesign_cert} \\\
- --certdir ${_pesign_nssdir} \\\
- %{-i} %{-o} %{-e} %{-s} %{-C} \
- fi \
---
-2.13.4
-
diff --git a/0029-Make-macros.pesign-error-in-kojibuilder-if-we-don-t-.patch b/0029-Make-macros.pesign-error-in-kojibuilder-if-we-don-t-.patch
deleted file mode 100644
index 753afe8..0000000
--- a/0029-Make-macros.pesign-error-in-kojibuilder-if-we-don-t-.patch
+++ /dev/null
@@ -1,39 +0,0 @@
-From 86a6b02e4b95ab3629446e71895cc5e57ad4482f Mon Sep 17 00:00:00 2001
-From: Peter Jones <pjones(a)redhat.com>
-Date: Mon, 14 Aug 2017 11:37:43 -0400
-Subject: [PATCH 29/29] Make macros.pesign error in kojibuilder if we don't
- have perms on the socket
-
----
- src/macros.pesign | 9 +++++++++
- 1 file changed, 9 insertions(+)
-
-diff --git a/src/macros.pesign b/src/macros.pesign
-index 22a3ee6..1665b4c 100644
---- a/src/macros.pesign
-+++ b/src/macros.pesign
-@@ -43,6 +43,21 @@
- %{_pesign} -R ${sattrs}.sig -I ${sattrs} %{-i} \\\
- --certdir ${nss} -c signer %{-o} \
- rm -rf ${sattrs} ${sattrs}.sig ${nss} \
-+ elif [ "%{vendor}" == "Fedora Project" -a \\\
-+ "$(id -un)" == "mockbuild" -a \\\
-+ "$(uname -m)" == "x86_64" ] && \\\
-+ grep -q ID=fedora /etc/os-release && \\\
-+ [[ "%{_buildhost}" =~ ^bkernel.* ]] && \\\
-+ ! [ -S /var/run/pesign/socket ]; then \
-+ echo "No socket even though this is %{_buildhost}" \
-+ ls -ld /var/run/pesign || : \
-+ getfacl /var/run/pesign || : \
-+ ls -l /var/run/pesign/socket || : \
-+ getfacl /var/run/pesign/socket || : \
-+ echo =========== env ============== \
-+ set \
-+ echo =========== env ============== \
-+ exit 1 \
- elif [ -S /var/run/pesign/socket ]; then \
- %{_pesign_client} -t %{__pesign_client_token} \\\
- -c %{__pesign_client_cert} \\\
---
-2.13.4
-
diff --git a/dead.package b/dead.package
new file mode 100644
index 0000000..5684bd0
--- /dev/null
+++ b/dead.package
@@ -0,0 +1 @@
+pesign fails to build from source: https://bugzilla.redhat.com/show_bug.cgi?id=1675653
diff --git a/pesign.py b/pesign.py
deleted file mode 100644
index 4ee59f8..0000000
--- a/pesign.py
+++ /dev/null
@@ -1,91 +0,0 @@
-#!/usr/bin/python3
-#
-# Copyright 2017 Peter Jones <Peter Jones@random>
-#
-# Distributed under terms of the GPLv3 license.
-
-"""
-mock plugin to make sure pesign and mockbuild users have the right uid and
-gid.
-"""
-
-from mockbuild.trace_decorator import getLog, traceLog
-import mockbuild.util
-
-requires_api_version = "1.1"
-
-@traceLog()
-def init(plugins, conf, buildroot):
- """ hello """
- Pesign(plugins, conf, buildroot)
-
-def getuid(name):
- """ get a uid for a user name """
- output = mockbuild.util.do(["getent", "passwd", "%s" % (name,)],
- returnOutput=1, printOutput=True)
- output = output.split(':')
- return output[2], output[3]
-
-def getgid(name):
- """ get a gid for a group name """
- output = mockbuild.util.do(["getent", "group", "%s" % (name,)],
- returnOutput=1, printOutput=True)
- return output.split(':')[2]
-
-def newgroup(name, gid, rootdir):
- """ create a group with a gid """
- getLog().info("creating group %s with gid %s" % (name, gid))
- mockbuild.util.do(["groupadd",
- "-g", "%s" % (gid,),
- "-R", "%s" % (rootdir,),
- "%s" % (name,),
- ])
-
-def newuser(name, uid, gid, rootdir):
- """ create a user with a uid """
- getLog().info("creating user %s with uid %s" % (name, uid))
- mockbuild.util.do(["useradd",
- "-u", "%s" % (uid,),
- "-g", "%s" % (gid,),
- "-R", "%s" % (rootdir,),
- "%s" % (name,)])
-
-class Pesign(object):
- """ Creates some stuff in our mock root """
- # pylint: disable=too-few-public-methods
- @traceLog()
- def __init__(self, plugins, conf, buildroot):
- """ Effectively we're doing:
- getent group pesign >/dev/null || groupadd -r pesign
- getent passwd pesign >/dev/null || \
- useradd -r -g pesign -d /var/run/pesign -s /sbin/nologin \
- -c "Group for the pesign signing daemon" pesign
- """
-
- self.buildroot = buildroot
- self.pesign_opts = conf
- self.config = buildroot.config
- self.state = buildroot.state
- self.users = {}
- self.groups = {}
- plugins.add_hook("postinit", self._pesignPostInitHook)
-
- @traceLog()
- def _pesignPostInitHook(self):
- """ find our uid and gid lists """
- for user in self.pesign_opts['users']:
- uid, gid = getuid(user)
- self.users[user] = [user, uid, gid]
- for group in self.pesign_opts['groups']:
- gid = getgid(group)
- self.groups[group] = [group, gid]
-
- # create our users
- rootdir = self.buildroot.make_chroot_path()
- for name, gid in self.groups.values():
- newgroup(name, gid, rootdir)
- for name, uid, gid in self.users.values():
- newuser(name, uid, gid, rootdir)
-
-# -*- coding: utf-8 -*-
-# vim:fenc=utf-8:tw=75
diff --git a/pesign.spec b/pesign.spec
deleted file mode 100644
index 0d6ce00..0000000
--- a/pesign.spec
+++ /dev/null
@@ -1,446 +0,0 @@
-%global macrosdir %(d=%{_rpmconfigdir}/macros.d; [ -d $d ] || d=%{_sysconfdir}/rpm; echo $d)
-
-Name: pesign
-Summary: Signing utility for UEFI binaries
-Version: 0.112
-Release: 26%{?dist}
-License: GPLv2
-URL: https://github.com/vathpela/pesign
-
-Obsoletes: pesign-rh-test-certs <= 0.111-7
-BuildRequires: gcc
-BuildRequires: git
-BuildRequires: nspr
-BuildRequires: nss
-BuildRequires: nss-util
-BuildRequires: popt-devel
-BuildRequires: nss-tools
-BuildRequires: nspr-devel >= 4.9.2-1
-BuildRequires: nss-devel >= 3.13.6-1
-BuildRequires: efivar-devel >= 31-1
-BuildRequires: libuuid-devel
-BuildRequires: tar
-BuildRequires: xz
-BuildRequires: python3-rpm-macros
-BuildRequires: python3
-%if 0%{?rhel} >= 7 || 0%{?fedora} >= 17
-BuildRequires: systemd-rpm-macros
-%endif
-Requires: nspr
-Requires: nss
-Requires: nss-util
-Requires: popt
-Requires: rpm
-Requires(pre): shadow-utils
-ExclusiveArch: %{ix86} x86_64 ia64 aarch64 %{arm}
-%if 0%{?rhel} == 7
-BuildRequires: rh-signing-tools >= 1.20-2
-%endif
-
-Source0: https://github.com/vathpela/pesign/releases/download/%{version}/pesign-%{...
-Source1: certs.tar.xz
-Source2: pesign.py
-
-Patch0001: 0001-cms-kill-generate_integer-it-doesn-t-build-on-i686-a.patch
-Patch0002: 0002-Fix-command-line-parsing.patch
-Patch0003: 0003-gcc-don-t-error-on-stuff-in-includes.patch
-Patch0004: 0004-Fix-certficate-argument-name.patch
-Patch0005: 0005-Fix-description-of-ascii-armor-option-in-manpage.patch
-Patch0006: 0006-Make-ascii-work-since-we-documented-it.patch
-Patch0007: 0007-Switch-pesign-client-to-also-accept-token-cert-macro.patch
-Patch0008: 0008-pesigcheck-Verify-with-the-cert-as-an-object-signer.patch
-Patch0009: 0009-pesigcheck-make-certfile-actually-work.patch
-Patch0010: 0010-signerInfos-make-sure-err-is-always-initialized.patch
-Patch0011: 0011-pesign-make-pesign-h-tell-you-the-file-name.patch
-Patch0012: 0012-Add-coverity-build-scripts.patch
-Patch0013: 0013-Document-implicit-fallthrough.patch
-Patch0014: 0014-Actually-setfacl-each-directory-of-our-key-storage.patch
-Patch0015: 0015-oid-add-SHIM_EKU_MODULE_SIGNING_ONLY-and-fix-our-arr.patch
-Patch0016: 0016-efikeygen-add-modsign.patch
-Patch0017: 0017-check_cert_db-try-even-harder-to-pick-a-reasonable-v.patch
-Patch0018: 0018-show-which-db-we-re-checking.patch
-Patch0019: 0019-more-about-the-time.patch
-Patch0020: 0020-try-to-say-why-something-fails.patch
-Patch0021: 0021-Fix-race-condition-in-SEC_GetPassword.patch
-Patch0022: 0022-sysvinit-Create-the-socket-directory-at-runtime.patch
-Patch0023: 0023-Better-authorization-scripts.-Again.patch
-Patch0024: 0024-Make-the-daemon-also-try-to-give-better-errors-on-EP.patch
-Patch0025: 0025-certdb-fix-PRTime-printfs-for-i686.patch
-Patch0026: 0026-Clean-up-gcc-command-lines-a-little.patch
-Patch0027: 0027-Make-pesign-users-groups-static-in-the-repo.patch
-Patch0028: 0028-rpm-Make-the-client-signer-use-the-fedora-values-unl.patch
-Patch0029: 0029-Make-macros.pesign-error-in-kojibuilder-if-we-don-t-.patch
-
-%description
-This package contains the pesign utility for signing UEFI binaries as
-well as other associated tools.
-
-%prep
-%setup -q -T -b 0
-%setup -q -T -D -c -n pesign-%{version}/ -a 1
-git init
-git config user.email "pesign-owner(a)fedoraproject.org"
-git config user.name "Fedora Ninjas"
-git add .
-git commit -a -q -m "%{version} baseline."
-git am %{patches} </dev/null
-git config --unset user.email
-git config --unset user.name
-
-# https://bugzilla.redhat.com/show_bug.cgi?id=1678146
-sed -i 's|/var/run/pesign|/run/pesign|' src/tmpfiles.conf
-
-%build
-make PREFIX=%{_prefix} LIBDIR=%{_libdir}
-
-%install
-mkdir -p %{buildroot}/%{_libdir}
-make PREFIX=%{_prefix} LIBDIR=%{_libdir} INSTALLROOT=%{buildroot} \
- install
-%if 0%{?rhel} >= 7 || 0%{?fedora} >= 17
-make PREFIX=%{_prefix} LIBDIR=%{_libdir} INSTALLROOT=%{buildroot} \
- install_systemd
-%endif
-
-# there's some stuff that's not really meant to be shipped yet
-rm -rf %{buildroot}/boot %{buildroot}/usr/include
-rm -rf %{buildroot}%{_libdir}/libdpe*
-mkdir -p %{buildroot}%{_sysconfdir}/pki/pesign/
-mkdir -p %{buildroot}%{_sysconfdir}/pki/pesign-rh-test/
-cp -a etc/pki/pesign/* %{buildroot}%{_sysconfdir}/pki/pesign/
-cp -a etc/pki/pesign-rh-test/* %{buildroot}%{_sysconfdir}/pki/pesign-rh-test/
-
-if [ %{macrosdir} != %{_sysconfdir}/rpm ]; then
- mkdir -p %{buildroot}%{macrosdir}
- mv %{buildroot}%{_sysconfdir}/rpm/macros.pesign \
- %{buildroot}%{macrosdir}
- rmdir %{buildroot}%{_sysconfdir}/rpm
-fi
-rm -vf %{buildroot}/usr/share/doc/pesign-%{version}/COPYING
-
-# and find-debuginfo.sh has some pretty awful deficencies too...
-cp -av libdpe/*.[ch] src/
-
-install -d -m 0755 %{buildroot}%{python3_sitelib}/mockbuild/plugins/
-install -m 0755 %{SOURCE2} %{buildroot}%{python3_sitelib}/mockbuild/plugins/
-
-%pre
-getent group pesign >/dev/null || groupadd -r pesign
-getent passwd pesign >/dev/null || \
- useradd -r -g pesign -d /var/run/pesign -s /sbin/nologin \
- -c "Group for the pesign signing daemon" pesign
-exit 0
-
-%if 0%{?rhel} >= 7 || 0%{?fedora} >= 17
-%post
-%systemd_post pesign.service
-
-#%%posttrans
-#%%{_libexecdir}/pesign/pesign-authorize
-
-%preun
-%systemd_preun pesign.service
-
-%postun
-%systemd_postun_with_restart pesign.service
-%endif
-
-%files
-%{!?_licensedir:%global license %%doc}
-%license COPYING
-%doc README TODO
-%{_bindir}/authvar
-%{_bindir}/efikeygen
-%{_bindir}/efisiglist
-%{_bindir}/pesigcheck
-%{_bindir}/pesign
-%{_bindir}/pesign-client
-%dir %{_libexecdir}/pesign/
-%dir %attr(0770,pesign,pesign) %{_sysconfdir}/pki/pesign/
-%config(noreplace) %attr(0660,pesign,pesign) %{_sysconfdir}/pki/pesign/*
-%dir %attr(0775,pesign,pesign) %{_sysconfdir}/pki/pesign-rh-test/
-%config(noreplace) %attr(0664,pesign,pesign) %{_sysconfdir}/pki/pesign-rh-test/*
-%{_libexecdir}/pesign/pesign-authorize
-%config(noreplace)/%{_sysconfdir}/pesign/users
-%config(noreplace)/%{_sysconfdir}/pesign/groups
-%{_sysconfdir}/popt.d/pesign.popt
-%{macrosdir}/macros.pesign
-%{_mandir}/man*/*
-%dir %attr(0770, pesign, pesign) %{_localstatedir}/run/%{name}
-%ghost %attr(0660, -, -) %{_localstatedir}/run/%{name}/socket
-%ghost %attr(0660, -, -) %{_localstatedir}/run/%{name}/pesign.pid
-%if 0%{?rhel} >= 7 || 0%{?fedora} >= 17
-%{_tmpfilesdir}/pesign.conf
-%{_unitdir}/pesign.service
-%endif
-%{python3_sitelib}/mockbuild/plugins/*/pesign.*
-%{python3_sitelib}/mockbuild/plugins/pesign.*
-
-%changelog
-* Fri Jul 26 2019 Fedora Release Engineering <releng(a)fedoraproject.org> - 0.112-26
-- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
-
-* Wed Mar 6 2019 Zbigniew Jdrzejewski-Szmek <zbyszek(a)in.waw.pl> - 0.112-25
-- Fix build (#1675653)
-- Add missing closing quote in macro (#1651020)
-- Update obsolete /var/run/ path (#1678146)
-
-* Sat Feb 02 2019 Fedora Release Engineering <releng(a)fedoraproject.org> - 0.112-25
-- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild
-
-* Fri Jul 13 2018 Fedora Release Engineering <releng(a)fedoraproject.org> - 0.112-24
-- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild
-
-* Fri Feb 09 2018 Fedora Release Engineering <releng(a)fedoraproject.org> - 0.112-23
-- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild
-
-* Mon Jan 22 2018 Peter Robinson <pbrobinson(a)fedoraproject.org> 0.112-22
-- Minor spec cleanups, fix arm conditional
-
-* Fri Oct 06 2017 Troy Dawson <tdawson(a)redhat.com> - 0.112-21
-- Cleanup spec file conditionals
-
-* Tue Aug 15 2017 Peter Jones <pjones(a)redhat.com> - 0.112-20
-- Maybe fewer typoes would be better.
-
-* Tue Aug 15 2017 Peter Jones <pjones(a)redhat.com> - 0.112-19
-- Update to match f26's build so new kernel builds will work.
-
-* Thu Aug 10 2017 Peter Jones <pjones(a)redhat.com> - 0.112-10
-- Try to fix the db problem nirik is seeing trying to upgrade the builders.
-
-* Thu Aug 03 2017 Fedora Release Engineering <releng(a)fedoraproject.org> - 0.112-9
-- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild
-
-* Thu Jul 27 2017 Fedora Release Engineering <releng(a)fedoraproject.org> - 0.112-8
-- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild
-
-* Sat Jul 08 2017 Peter Jones <pjones(a)redhat.com> - 0.112-7
-- Rebuild for efivar-31-1.fc26
- Related: rhbz#1468841
-
-* Sat Feb 11 2017 Fedora Release Engineering <releng(a)fedoraproject.org> - 0.112-6
-- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild
-
-* Fri Jan 06 2017 Peter Jones <pjones(a)redhat.com> - 0.112-5
-- Don't Req: or BuildReq: coolkey or opensc; those belong in system deploy
- scripts.
- Related: rhbz#1349073
-
-* Wed Aug 17 2016 Peter Jones <pjones(a)redhat.com> - 0.112-4
-- Build as -4 to make bodhi happy.
-
-* Fri Aug 12 2016 Adam Williamson <awilliam(a)redhat.com> - 0.112-3
-- backport fix for command line parsing from upstream master
-
-* Wed Aug 10 2016 Peter Jones <pjones(a)redhat.com> - 0.112-2
-- Build with newer efivar.
-
-* Wed Apr 20 2016 Peter Jones <pjones(a)redhat.com> - 0.112-1
-- Update to 0.112
-- Also fix up some spec file woes:
- - dumb things in %%setup
- - find-debuginfo.sh not working right for some source files...
-
-* Thu Feb 04 2016 Fedora Release Engineering <releng(a)fedoraproject.org> - 0.111-8
-- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild
-
-* Thu Dec 10 2015 Peter Jones <pjones(a)redhat.com> - 0.111-7
-- Obsolete pesign-rh-test-certs, it was in -1's update.
- Resolves: rhbz#1283475
-
-* Wed Dec 02 2015 Peter Jones <pjones(a)redhat.com> - 0.111-6
-- *Don't* use --certdir if we're using the socket.
- Related: rhbz#1283475
- Related: rhbz#1284063
- Related: rhbz#1284561
-
-* Tue Dec 01 2015 Peter Jones <pjones(a)redhat.com> - 0.111-5
-- Actually do a better job of choosing which cert to use when, so people will
- stop seeing any of this problem. (Thanks for the thought, jforbes.)
- Resolves: rhbz#1283475
- Resolves: rhbz#1284063
- Resolves: rhbz#1284561
-
-* Mon Nov 30 2015 Peter Jones <pjones(a)redhat.com> - 0.111-5
-- setfacl even harder.
- Related: rhbz#1283475
- Related: rhbz#1284063
- Related: rhbz#1284561
-
-* Fri Nov 20 2015 Peter Jones <pjones(a)redhat.com> - 0.111-3
-- Better ACL setting code.
- Related: rhbz#1283475
-
-* Thu Nov 19 2015 Peter Jones <pjones(a)redhat.com> - 0.111-2
-- Allow the mockbuild user to read the nss database if the account exists.
-
-* Wed Oct 28 2015 Peter Jones <pjones(a)redhat.com> - 0.111-1
-- Rebase to 0.111
-- Split test certs out into a "Recommends" subpackage.
-
-* Thu Jun 18 2015 Fedora Release Engineering <rel-eng(a)lists.fedoraproject.org> - 0.110-3
-- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild
-
-* Wed Mar 4 2015 Ville Skytt <ville.skytta(a)iki.fi> - 0.110-2
-- Install macros in %%{_rpmconfigdir}/macros.d where available (#1074281)
-
-* Fri Oct 24 2014 Peter Jones <pjones(a)redhat.com> - 0.110-1
-- Update to pesign-0.110
-
-* Sun Aug 17 2014 Fedora Release Engineering <rel-eng(a)lists.fedoraproject.org> - 0.108-4
-- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild
-
-* Sat Jun 07 2014 Fedora Release Engineering <rel-eng(a)lists.fedoraproject.org> - 0.108-3
-- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild
-
-* Thu May 29 2014 Peter Jones <pjones(a)redhat.com> - 0.108-2
-- Fix a networking problem nirik observed when reinstalling builders.
-
-* Sat Aug 10 2013 Peter Jones <pjones(a)redhat.com> - 0.108-1
-- Remove errant result files and raise an error from %%pesign
-
-* Tue Aug 06 2013 Peter Jones <pjones(a)redhat.com> - 0.106-3
-- Add code for signing in RHEL 7
-
-* Mon Aug 05 2013 Peter Jones <pjones(a)redhat.com> - 0.106-2
-- Fix for new %%doc rules.
-
-* Sun Aug 04 2013 Fedora Release Engineering <rel-eng(a)lists.fedoraproject.org> - 0.106-2
-- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild
-
-* Tue May 21 2013 Peter Jones <pjones(a)redhat.com> - 0.106-1
-- Update to 0.106
-- Hopefully fix the segfault dgilmore was seeing.
-
-* Mon May 20 2013 Peter Jones <pjones(a)redhat.com> - 0.105-1
-- Various bug fixes.
-
-* Wed May 15 2013 Peter Jones <pjones(a)redhat.com> - 0.104-1
-- Make sure alignment is correct on signature list entries
- Resolves: rhbz#963361
-- Make sure section alignment is correct if we have to extend the file
-
-* Wed Feb 06 2013 Peter Jones <pjones(a)redhat.com> - 0.103-2
-- Conditionalize systemd bits so they don't show up in RHEL 6 builds
-
-* Tue Feb 05 2013 Peter Jones <pjones(a)redhat.com> - 0.103-1
-- One more compiler problem. Let's expect a few more, shall we?
-
-* Tue Feb 05 2013 Peter Jones <pjones(a)redhat.com> - 0.102-1
-- Don't use --std=gnu11 because we have to work on RHEL 6 builders.
-
-* Mon Feb 04 2013 Peter Jones <pjones(a)redhat.com> - 0.101-1
-- Update to 0.101 to fix more "pesign -E" issues.
-
-* Fri Nov 30 2012 Peter Jones <pjones(a)redhat.com> - 0.100-1
-- Fix insertion of signatures from a file.
-
-* Mon Nov 26 2012 Matthew Garrett <mjg59(a)srcf.ucam.org> - 0.99-9
-- Add a patch needed for new shim builds
-
-* Fri Oct 19 2012 Peter Jones <pjones(a)redhat.com> - 0.99-8
-- Get the Fedora signing token name right.
-
-* Fri Oct 19 2012 Peter Jones <pjones(a)redhat.com>
-- Add coolkey and opensc modules to pki database during %%install.
-
-* Fri Oct 19 2012 Peter Jones <pjones(a)redhat.com> - 0.99-7
-- setfacl u:kojibuilder:rw /var/run/pesign/socket
-- Fix command line checking in client
-- Add client stdin pin reading.
-
-* Thu Oct 18 2012 Peter Jones <pjones(a)redhat.com> - 0.99-6
-- Automatically select daemon as signer when using rpm macros.
-
-* Thu Oct 18 2012 Peter Jones <pjones(a)redhat.com> - 0.99-5
-- Make it work on the -el6 branch as well.
-
-* Wed Oct 17 2012 Peter Jones <pjones(a)redhat.com> - 0.99-4
-- Fix some more bugs found by valgrind and coverity.
-- Don't build utils/ ; we're not using them and they're not ready anyway.
-
-* Wed Oct 17 2012 Peter Jones <pjones(a)redhat.com> - 0.99-3
-- Fix daemon startup bug from 0.99-2
-
-* Wed Oct 17 2012 Peter Jones <pjones(a)redhat.com> - 0.99-2
-- Fix various bugs from 0.99-1
-- Don't make the database unreadable just yet.
-
-* Mon Oct 15 2012 Peter Jones <pjones(a)redhat.com> - 0.99-1
-- Update to 0.99
-- Add documentation for client/server mode.
-- Add --pinfd and --pinfile to server mode.
-
-* Fri Oct 12 2012 Peter Jones <pjones(a)redhat.com> - 0.98-1
-- Update to 0.98
-- Add client/server mode.
-
-* Mon Oct 01 2012 Peter Jones <pjones(a)redhat.com> - 0.10-5
-- Fix missing section address fixup.
-
-* Wed Aug 15 2012 Peter Jones <pjones(a)redhat.com> - 0.10-4
-- Make macros.pesign even better (and make it work right for i686 packages)
-
-* Tue Aug 14 2012 Peter Jones <pjones(a)redhat.com> - 0.10-3
-- Only sign things on x86_64; all else ignore gracefully.
-
-* Tue Aug 14 2012 Peter Jones <pjones(a)redhat.com> - 0.10-2
-- Make macros.pesign more reliable
-
-* Mon Aug 13 2012 Peter Jones <pjones(a)redhat.com> - 0.10-1
-- Update to 0.10
-- Include rpm macros to support easy custom signing of signed packages.
-
-* Fri Aug 10 2012 Peter Jones <pjones(a)redhat.com> - 0.9-1
-- Update to 0.9
-- Bug fix from Gary Ching-Pang Lin
-- Support NSS Token selection for use with smart cards.
-
-* Wed Aug 08 2012 Peter Jones <pjones(a)redhat.com> - 0.8-1
-- Update to 0.8
-- Don't open the db read-write
-- Fix permissions on keystore (everybody can sign with test keys)
-
-* Wed Aug 08 2012 Peter Jones <pjones(a)redhat.com> - 0.7-2
-- Include test keys.
-
-* Mon Jul 30 2012 Peter Jones <pjones(a)redhat.com> - 0.7-1
-- Update to 0.7
-- Better fix for MS compatibility.
-
-* Mon Jul 30 2012 Peter Jones <pjones(a)redhat.com> - 0.6-1
-- Update to 0.6
-- Bug-for-bug compatibility with signtool.exe .
-
-* Fri Jul 20 2012 Fedora Release Engineering <rel-eng(a)lists.fedoraproject.org> - 0.5-2
-- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild
-
-* Wed Jul 11 2012 Peter Jones <pjones(a)redhat.com> - 0.5-1
-- Rebase to 0.5
-- Do more rigorous bounds checking when hashing a new binary.
-
-* Tue Jul 10 2012 Peter Jones <pjones(a)redhat.com> - 0.3-2
-- Rebase to 0.4
-
-* Fri Jun 22 2012 Peter Jones <pjones(a)redhat.com> - 0.3-2
-- Move man page to a more reasonable place.
-
-* Fri Jun 22 2012 Peter Jones <pjones(a)redhat.com> - 0.3-1
-- Update to upstream's 0.3 .
-
-* Thu Jun 21 2012 Peter Jones <pjones(a)redhat.com> - 0.2-4
-- Do not build with smp flags.
-
-* Thu Jun 21 2012 Peter Jones <pjones(a)redhat.com> - 0.2-3
-- Make it build on i686, though it's unclear it'll ever be necessary.
-
-* Thu Jun 21 2012 Peter Jones <pjones(a)redhat.com> - 0.2-2
-- Fix compile problem with f18's compiler.
-
-* Thu Jun 21 2012 Peter Jones <pjones(a)redhat.com> - 0.2-1
-- Fix some rpmlint complaints nirik pointed out
-- Add popt-devel build dep
-
-* Fri Jun 15 2012 Peter Jones <pjones(a)redhat.com> - 0.1-1
-- First version of SRPM.
diff --git a/sources b/sources
deleted file mode 100644
index c2671ea..0000000
--- a/sources
+++ /dev/null
@@ -1,2 +0,0 @@
-e377e0bc924287ee09356a239c5f51a8 certs.tar.xz
-eae1d66e160be744ff310ad7592ae31e pesign-0.112.tar.bz2
commit 9688270a8b3dcb8c56312c5fca5192cc3552517e
Author: Fedora Release Engineering <releng(a)fedoraproject.org>
Date: Fri Jul 26 08:32:10 2019 +0000
- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng(a)fedoraproject.org>
diff --git a/pesign.spec b/pesign.spec
index 5eda168..0d6ce00 100644
--- a/pesign.spec
+++ b/pesign.spec
@@ -3,7 +3,7 @@
Name: pesign
Summary: Signing utility for UEFI binaries
Version: 0.112
-Release: 25%{?dist}
+Release: 26%{?dist}
License: GPLv2
URL: https://github.com/vathpela/pesign
@@ -177,6 +177,9 @@ exit 0
%{python3_sitelib}/mockbuild/plugins/pesign.*
%changelog
+* Fri Jul 26 2019 Fedora Release Engineering <releng(a)fedoraproject.org> - 0.112-26
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
+
* Wed Mar 6 2019 Zbigniew Jdrzejewski-Szmek <zbyszek(a)in.waw.pl> - 0.112-25
- Fix build (#1675653)
- Add missing closing quote in macro (#1651020)
4 years, 3 months
Architecture specific change in rpms/R.git
by githook-noreply@fedoraproject.org
The package rpms/R.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/R.git/commit/?id=2d600e0a99a6db2e....
Change:
-%ifarch x86_64 %{ix86} armv7hl %{power64} aarch64
Thanks.
Full change:
============
commit 2d600e0a99a6db2e8c2ec1cbd0431c117d2c8581
Author: Tom Callaway <spot(a)fedoraproject.org>
Date: Tue Feb 18 17:10:52 2020 -0500
fix openblas conditionals, openblas has wider arch support everywhere except el7
diff --git a/R.spec b/R.spec
index 92de22e..d35655e 100644
--- a/R.spec
+++ b/R.spec
@@ -14,18 +14,22 @@
%endif
%endif
-%ifarch x86_64 %{ix86} armv7hl %{power64} aarch64
-%if 0%{?rhel} >= 7
-%global openblas 1
-%else
-%if 0%{?fedora} >= 23
-%global openblas 1
-%else
-%global openblas 0
-%endif
-%endif
+%if 0%{?rhel} >= 8
+ %global openblas 1
%else
-%global openblas 0
+ %if 0%{?rhel} == 7
+ %ifarch x86_64 %{ix86} armv7hl %{power64} aarch64
+ %global openblas 1
+ %else
+ %global openblas 0
+ %endif
+ %else
+ %if 0%{?fedora}
+ %global openblas 1
+ %else
+ %global openblas 0
+ %endif
+ %endif
%endif
%if 0%{?fedora} >= 31
@@ -141,7 +145,7 @@
Name: R
Version: 3.6.2
-Release: 4%{?dist}
+Release: 5%{?dist}
Summary: A language for data analysis and graphics
URL: http://www.r-project.org
Source0: https://cran.r-project.org/src/base/R-3/R-%{version}.tar.gz
@@ -1233,6 +1237,9 @@ R CMD javareconf \
%{_libdir}/libRmath.a
%changelog
+* Tue Feb 18 2020 Tom Callaway <spot(a)fedoraproject.org> - 3.6.2-5
+- fix openblas conditionals, openblas has wider arch support everywhere except el7
+
* Tue Feb 18 2020 Tom Callaway <spot(a)fedoraproject.org> - 3.6.2-4
- fix conditionals so that Fedora builds against system openblas for lapack/blas
and we only generate the R lapack/blas libs on RHEL 5-6-7 (where system lapack/openblas
commit 85586e3bcf38e6d8e8a7c7612a3281053e571c2c
Merge: 42bfa27 901e950
Author: Tom Callaway <spot(a)fedoraproject.org>
Date: Tue Feb 18 16:29:37 2020 -0500
Merge branch 'master' into epel8
commit 42bfa27a28a7450cf661581e3d934d23e1409a10
Merge: 4ed4310 86fb95a
Author: Tom Callaway <spot(a)fedoraproject.org>
Date: Thu Dec 12 15:06:36 2019 -0500
Merge branch 'master' into epel8
commit 4ed43102969f0a1234c28f62edd44968a79a3d4f
Merge: 0cd0e7c 063aebf
Author: Tom Callaway <spot(a)fedoraproject.org>
Date: Thu Dec 12 12:06:31 2019 -0500
Merge branch 'master' into epel8
commit 0cd0e7c5c855097160458b848c01cfaf0afd9bbf
Merge: ba5b610 02916c0
Author: Tom Callaway <spot(a)fedoraproject.org>
Date: Fri Aug 16 12:28:43 2019 -0400
Merge branch 'master' into epel8
commit ba5b61083ce34c2eef5e08d15f1e58ba7e42ebde
Author: Gwyn Ciesla <gwync(a)protonmail.com>
Date: Thu Aug 15 15:17:08 2019 -0500
"Adding package.cfg file"
diff --git a/package.cfg b/package.cfg
new file mode 100644
index 0000000..66ea79d
--- /dev/null
+++ b/package.cfg
@@ -0,0 +1,2 @@
+[koji]
+targets = epel8 epel8-playground
\ No newline at end of file
4 years, 3 months
Architecture specific change in rpms/R.git
by githook-noreply@fedoraproject.org
The package rpms/R.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/R.git/commit/?id=901e9504654846b7....
Change:
-%ifarch x86_64 %{ix86} armv7hl %{power64} aarch64
Thanks.
Full change:
============
commit 901e9504654846b713e48d674db865d27d51d837
Author: Tom Callaway <spot(a)fedoraproject.org>
Date: Tue Feb 18 13:24:21 2020 -0500
use openblas for lapack/blas, whereever possible (all fedora, el8)
diff --git a/R.spec b/R.spec
index 697ec8c..92de22e 100644
--- a/R.spec
+++ b/R.spec
@@ -3,6 +3,31 @@
%global runjavareconf 1
+# lapack comes from openblas, whenever possible.
+%if 0%{?fedora}
+%global syslapack 1
+%else
+%if 0%{?rhel} && 0%{?rhel} >= 8
+%global syslapack 1
+%else
+%global syslapack 0
+%endif
+%endif
+
+%ifarch x86_64 %{ix86} armv7hl %{power64} aarch64
+%if 0%{?rhel} >= 7
+%global openblas 1
+%else
+%if 0%{?fedora} >= 23
+%global openblas 1
+%else
+%global openblas 0
+%endif
+%endif
+%else
+%global openblas 0
+%endif
+
%if 0%{?fedora} >= 31
%global usemacros 1
%else
@@ -114,23 +139,9 @@
%global texi2any 1
%endif
-%ifarch x86_64 %{ix86} armv7hl %{power64} aarch64
-%if 0%{?rhel} >= 7
-%global openblas 1
-%else
-%if 0%{?fedora} >= 23
-%global openblas 1
-%else
-%global openblas 0
-%endif
-%endif
-%else
-%global openblas 0
-%endif
-
Name: R
Version: 3.6.2
-Release: 3%{?dist}
+Release: 4%{?dist}
Summary: A language for data analysis and graphics
URL: http://www.r-project.org
Source0: https://cran.r-project.org/src/base/R-3/R-%{version}.tar.gz
@@ -223,19 +234,10 @@ BuildRequires: autoconf, automake, libtool
BuildRequires: openblas-devel
%endif
-# We use the bundled lapack and shim for BLAS now.
-%if 0
-%if 0%{?fedora} >= 21
+%if %{syslapack}
+%if !%{openblas}
BuildRequires: lapack-devel >= 3.5.0-7
BuildRequires: blas-devel >= 3.5.0-7
-%else
-%if 0%{?fedora} >= 19
-BuildRequires: lapack-devel >= 3.4.2-7
-BuildRequires: blas-devel >= 3.4.2-7
-%else
-BuildRequires: lapack-devel
-BuildRequires: blas-devel >= 3.0
-%endif
%endif
%endif
@@ -301,9 +303,11 @@ Requires: sed, gawk, tex(latex), less, make, unzip
# Make sure we bring the new libRmath with us
Requires: libRmath%{?_isa} = %{version}-%{release}
+%if !%{syslapack}
%if %{openblas}
Requires: openblas-Rblas
%endif
+%endif
%if %{use_devtoolset}
# We need it for CXX11 and higher support.
@@ -379,8 +383,11 @@ Requires: pcre-devel
# Configure picks this up, but despite linking to it, it does not seem to be used as of R 3.5.2.
Requires: pcre2-devel
%endif
-# No longer true.
-# Requires: blas-devel >= 3.0, lapack-devel
+%if %{syslapack}
+%if %{openblas}
+Requires: openblas-devel
+%endif
+%endif
%if %{modern}
Requires: libicu-devel
%endif
@@ -632,7 +639,7 @@ export FFLAGS="%{optflags} --no-optimize-sibling-calls"
# https://bugzilla.redhat.com/show_bug.cgi?id=1117496
# https://bugzilla.redhat.com/show_bug.cgi?id=1117497
#
-# We use --enable-BLAS-shlib here. It generates a shared library
+# On old RHEL, we use --enable-BLAS-shlib here. It generates a shared library
# of the R bundled blas, that can be replaced by an optimized version.
# It also results in R using the bundled lapack copy.
@@ -644,14 +651,17 @@ export FFLAGS="%{optflags} --no-optimize-sibling-calls"
--with-system-tre \
%endif
--with-system-valgrind-headers \
-%if 0%{?fedora}
+%if %{syslapack}
--with-lapack \
+ --with-blas \
+%else
+ --enable-BLAS-shlib \
%endif
--with-tcl-config=%{_libdir}/tclConfig.sh \
--with-tk-config=%{_libdir}/tkConfig.sh \
- --enable-BLAS-shlib \
--enable-R-shlib \
--enable-prebuilt-html \
+ --enable-R-profiling \
--enable-memory-profiling \
%if %{with_lto}
%ifnarch %{arm}
@@ -788,10 +798,12 @@ sed -i 's|:/builddir/build/BUILD/R-%{version}/curl-%{curlv}/target%{_libdir}/:/b
sed -i 's|/builddir/build/BUILD/R-%{version}/curl-%{curlv}/target%{_libdir}/:/builddir/build/BUILD/R-%{version}/curl-%{curlv}/target%{_libdir}||g' %{buildroot}%{_libdir}/R/etc/ldpaths
%endif
+%if !%{syslapack}
%if %{openblas}
# Rename the R blas so.
mv %{buildroot}%{_libdir}/R/lib/libRblas.so %{buildroot}%{_libdir}/R/lib/libRrefblas.so
%endif
+%endif
# okay, look. its very clear that upstream does not run the test suite on any non-intel architectures.
%check
@@ -1221,6 +1233,11 @@ R CMD javareconf \
%{_libdir}/libRmath.a
%changelog
+* Tue Feb 18 2020 Tom Callaway <spot(a)fedoraproject.org> - 3.6.2-4
+- fix conditionals so that Fedora builds against system openblas for lapack/blas
+ and we only generate the R lapack/blas libs on RHEL 5-6-7 (where system lapack/openblas
+ is not reliable). Thanks to Dirk Eddelbuettel for pointing out the error.
+
* Tue Jan 28 2020 Fedora Release Engineering <releng(a)fedoraproject.org> - 3.6.2-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
commit a1d6c05f34eaf3912f058662ec444c36ef9a3c52
Author: Fedora Release Engineering <releng(a)fedoraproject.org>
Date: Tue Jan 28 09:43:55 2020 +0000
- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng(a)fedoraproject.org>
diff --git a/R.spec b/R.spec
index 013e467..697ec8c 100644
--- a/R.spec
+++ b/R.spec
@@ -130,7 +130,7 @@
Name: R
Version: 3.6.2
-Release: 2%{?dist}
+Release: 3%{?dist}
Summary: A language for data analysis and graphics
URL: http://www.r-project.org
Source0: https://cran.r-project.org/src/base/R-3/R-%{version}.tar.gz
@@ -1221,6 +1221,9 @@ R CMD javareconf \
%{_libdir}/libRmath.a
%changelog
+* Tue Jan 28 2020 Fedora Release Engineering <releng(a)fedoraproject.org> - 3.6.2-3
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
+
* Wed Dec 18 2019 Tom Callaway <spot(a)fedoraproject.org> - 3.6.2-2
- adjust ppc64 patch to reflect upstream fix
commit 0468c23822821d4944ff03360ae3f3367463cb8b
Author: Tom Callaway <spot(a)fedoraproject.org>
Date: Wed Dec 18 09:08:17 2019 -0500
adjust ppc64 patch to reflect upstream fix
diff --git a/R-3.6.2-ppc64-no-const-long-double.patch b/R-3.6.2-ppc64-no-const-long-double.patch
index d1427a3..34948fd 100644
--- a/R-3.6.2-ppc64-no-const-long-double.patch
+++ b/R-3.6.2-ppc64-no-const-long-double.patch
@@ -1,15 +1,16 @@
-diff -up ./src/main/arithmetic.c.orig ./src/main/arithmetic.c
---- ./src/main/arithmetic.c.orig 2019-12-12 18:30:12.416334062 +0000
-+++ ./src/main/arithmetic.c 2019-12-12 18:30:44.966334062 +0000
-@@ -179,7 +179,10 @@ void attribute_hidden InitArithmetic()
- #endif
+diff -up R-3.6.2/src/main/arithmetic.c.ppc64 R-3.6.2/src/main/arithmetic.c
+--- R-3.6.2/src/main/arithmetic.c.ppc64 2019-10-18 18:15:02.000000000 -0400
++++ R-3.6.2/src/main/arithmetic.c 2019-12-18 09:05:50.363220122 -0500
+@@ -177,7 +177,12 @@ void attribute_hidden InitArithmetic()
}
--#if HAVE_LONG_DOUBLE && (SIZEOF_LONG_DOUBLE > SIZEOF_DOUBLE)
-+/* PowerPC 64 (when gcc has -mlong-double-128) breaks here because
-+ * of issues constant folding 128bit IBM long doubles.
-+ */
-+#if HAVE_LONG_DOUBLE && (SIZEOF_LONG_DOUBLE > SIZEOF_DOUBLE) && !__PPC64__
+ #if HAVE_LONG_DOUBLE && (SIZEOF_LONG_DOUBLE > SIZEOF_DOUBLE)
++# ifdef __PPC64__
++ // PowerPC 64 (when gcc has -mlong-double-128) fails constant folding with LDOUBLE
++# define q_1_eps (1 / LDBL_EPSILON)
++# else
static LDOUBLE q_1_eps = 1 / LDBL_EPSILON;
++# endif
#else
static double q_1_eps = 1 / DBL_EPSILON;
+ #endif
diff --git a/R.spec b/R.spec
index 058d56f..013e467 100644
--- a/R.spec
+++ b/R.spec
@@ -130,7 +130,7 @@
Name: R
Version: 3.6.2
-Release: 1%{?dist}
+Release: 2%{?dist}
Summary: A language for data analysis and graphics
URL: http://www.r-project.org
Source0: https://cran.r-project.org/src/base/R-3/R-%{version}.tar.gz
@@ -1221,6 +1221,9 @@ R CMD javareconf \
%{_libdir}/libRmath.a
%changelog
+* Wed Dec 18 2019 Tom Callaway <spot(a)fedoraproject.org> - 3.6.2-2
+- adjust ppc64 patch to reflect upstream fix
+
* Thu Dec 12 2019 Tom Callaway <spot(a)fedoraproject.org> - 3.6.2-1
- update to 3.6.2
- disable tests on all non-intel arches
4 years, 3 months
Architecture specific change in rpms/R.git
by githook-noreply@fedoraproject.org
The package rpms/R.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/R.git/commit/?id=901e9504654846b7....
Change:
-%ifarch x86_64 %{ix86} armv7hl %{power64} aarch64
Thanks.
Full change:
============
commit 901e9504654846b713e48d674db865d27d51d837
Author: Tom Callaway <spot(a)fedoraproject.org>
Date: Tue Feb 18 13:24:21 2020 -0500
use openblas for lapack/blas, whereever possible (all fedora, el8)
diff --git a/R.spec b/R.spec
index 697ec8c..92de22e 100644
--- a/R.spec
+++ b/R.spec
@@ -3,6 +3,31 @@
%global runjavareconf 1
+# lapack comes from openblas, whenever possible.
+%if 0%{?fedora}
+%global syslapack 1
+%else
+%if 0%{?rhel} && 0%{?rhel} >= 8
+%global syslapack 1
+%else
+%global syslapack 0
+%endif
+%endif
+
+%ifarch x86_64 %{ix86} armv7hl %{power64} aarch64
+%if 0%{?rhel} >= 7
+%global openblas 1
+%else
+%if 0%{?fedora} >= 23
+%global openblas 1
+%else
+%global openblas 0
+%endif
+%endif
+%else
+%global openblas 0
+%endif
+
%if 0%{?fedora} >= 31
%global usemacros 1
%else
@@ -114,23 +139,9 @@
%global texi2any 1
%endif
-%ifarch x86_64 %{ix86} armv7hl %{power64} aarch64
-%if 0%{?rhel} >= 7
-%global openblas 1
-%else
-%if 0%{?fedora} >= 23
-%global openblas 1
-%else
-%global openblas 0
-%endif
-%endif
-%else
-%global openblas 0
-%endif
-
Name: R
Version: 3.6.2
-Release: 3%{?dist}
+Release: 4%{?dist}
Summary: A language for data analysis and graphics
URL: http://www.r-project.org
Source0: https://cran.r-project.org/src/base/R-3/R-%{version}.tar.gz
@@ -223,19 +234,10 @@ BuildRequires: autoconf, automake, libtool
BuildRequires: openblas-devel
%endif
-# We use the bundled lapack and shim for BLAS now.
-%if 0
-%if 0%{?fedora} >= 21
+%if %{syslapack}
+%if !%{openblas}
BuildRequires: lapack-devel >= 3.5.0-7
BuildRequires: blas-devel >= 3.5.0-7
-%else
-%if 0%{?fedora} >= 19
-BuildRequires: lapack-devel >= 3.4.2-7
-BuildRequires: blas-devel >= 3.4.2-7
-%else
-BuildRequires: lapack-devel
-BuildRequires: blas-devel >= 3.0
-%endif
%endif
%endif
@@ -301,9 +303,11 @@ Requires: sed, gawk, tex(latex), less, make, unzip
# Make sure we bring the new libRmath with us
Requires: libRmath%{?_isa} = %{version}-%{release}
+%if !%{syslapack}
%if %{openblas}
Requires: openblas-Rblas
%endif
+%endif
%if %{use_devtoolset}
# We need it for CXX11 and higher support.
@@ -379,8 +383,11 @@ Requires: pcre-devel
# Configure picks this up, but despite linking to it, it does not seem to be used as of R 3.5.2.
Requires: pcre2-devel
%endif
-# No longer true.
-# Requires: blas-devel >= 3.0, lapack-devel
+%if %{syslapack}
+%if %{openblas}
+Requires: openblas-devel
+%endif
+%endif
%if %{modern}
Requires: libicu-devel
%endif
@@ -632,7 +639,7 @@ export FFLAGS="%{optflags} --no-optimize-sibling-calls"
# https://bugzilla.redhat.com/show_bug.cgi?id=1117496
# https://bugzilla.redhat.com/show_bug.cgi?id=1117497
#
-# We use --enable-BLAS-shlib here. It generates a shared library
+# On old RHEL, we use --enable-BLAS-shlib here. It generates a shared library
# of the R bundled blas, that can be replaced by an optimized version.
# It also results in R using the bundled lapack copy.
@@ -644,14 +651,17 @@ export FFLAGS="%{optflags} --no-optimize-sibling-calls"
--with-system-tre \
%endif
--with-system-valgrind-headers \
-%if 0%{?fedora}
+%if %{syslapack}
--with-lapack \
+ --with-blas \
+%else
+ --enable-BLAS-shlib \
%endif
--with-tcl-config=%{_libdir}/tclConfig.sh \
--with-tk-config=%{_libdir}/tkConfig.sh \
- --enable-BLAS-shlib \
--enable-R-shlib \
--enable-prebuilt-html \
+ --enable-R-profiling \
--enable-memory-profiling \
%if %{with_lto}
%ifnarch %{arm}
@@ -788,10 +798,12 @@ sed -i 's|:/builddir/build/BUILD/R-%{version}/curl-%{curlv}/target%{_libdir}/:/b
sed -i 's|/builddir/build/BUILD/R-%{version}/curl-%{curlv}/target%{_libdir}/:/builddir/build/BUILD/R-%{version}/curl-%{curlv}/target%{_libdir}||g' %{buildroot}%{_libdir}/R/etc/ldpaths
%endif
+%if !%{syslapack}
%if %{openblas}
# Rename the R blas so.
mv %{buildroot}%{_libdir}/R/lib/libRblas.so %{buildroot}%{_libdir}/R/lib/libRrefblas.so
%endif
+%endif
# okay, look. its very clear that upstream does not run the test suite on any non-intel architectures.
%check
@@ -1221,6 +1233,11 @@ R CMD javareconf \
%{_libdir}/libRmath.a
%changelog
+* Tue Feb 18 2020 Tom Callaway <spot(a)fedoraproject.org> - 3.6.2-4
+- fix conditionals so that Fedora builds against system openblas for lapack/blas
+ and we only generate the R lapack/blas libs on RHEL 5-6-7 (where system lapack/openblas
+ is not reliable). Thanks to Dirk Eddelbuettel for pointing out the error.
+
* Tue Jan 28 2020 Fedora Release Engineering <releng(a)fedoraproject.org> - 3.6.2-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
commit a1d6c05f34eaf3912f058662ec444c36ef9a3c52
Author: Fedora Release Engineering <releng(a)fedoraproject.org>
Date: Tue Jan 28 09:43:55 2020 +0000
- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng(a)fedoraproject.org>
diff --git a/R.spec b/R.spec
index 013e467..697ec8c 100644
--- a/R.spec
+++ b/R.spec
@@ -130,7 +130,7 @@
Name: R
Version: 3.6.2
-Release: 2%{?dist}
+Release: 3%{?dist}
Summary: A language for data analysis and graphics
URL: http://www.r-project.org
Source0: https://cran.r-project.org/src/base/R-3/R-%{version}.tar.gz
@@ -1221,6 +1221,9 @@ R CMD javareconf \
%{_libdir}/libRmath.a
%changelog
+* Tue Jan 28 2020 Fedora Release Engineering <releng(a)fedoraproject.org> - 3.6.2-3
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
+
* Wed Dec 18 2019 Tom Callaway <spot(a)fedoraproject.org> - 3.6.2-2
- adjust ppc64 patch to reflect upstream fix
commit 0468c23822821d4944ff03360ae3f3367463cb8b
Author: Tom Callaway <spot(a)fedoraproject.org>
Date: Wed Dec 18 09:08:17 2019 -0500
adjust ppc64 patch to reflect upstream fix
diff --git a/R-3.6.2-ppc64-no-const-long-double.patch b/R-3.6.2-ppc64-no-const-long-double.patch
index d1427a3..34948fd 100644
--- a/R-3.6.2-ppc64-no-const-long-double.patch
+++ b/R-3.6.2-ppc64-no-const-long-double.patch
@@ -1,15 +1,16 @@
-diff -up ./src/main/arithmetic.c.orig ./src/main/arithmetic.c
---- ./src/main/arithmetic.c.orig 2019-12-12 18:30:12.416334062 +0000
-+++ ./src/main/arithmetic.c 2019-12-12 18:30:44.966334062 +0000
-@@ -179,7 +179,10 @@ void attribute_hidden InitArithmetic()
- #endif
+diff -up R-3.6.2/src/main/arithmetic.c.ppc64 R-3.6.2/src/main/arithmetic.c
+--- R-3.6.2/src/main/arithmetic.c.ppc64 2019-10-18 18:15:02.000000000 -0400
++++ R-3.6.2/src/main/arithmetic.c 2019-12-18 09:05:50.363220122 -0500
+@@ -177,7 +177,12 @@ void attribute_hidden InitArithmetic()
}
--#if HAVE_LONG_DOUBLE && (SIZEOF_LONG_DOUBLE > SIZEOF_DOUBLE)
-+/* PowerPC 64 (when gcc has -mlong-double-128) breaks here because
-+ * of issues constant folding 128bit IBM long doubles.
-+ */
-+#if HAVE_LONG_DOUBLE && (SIZEOF_LONG_DOUBLE > SIZEOF_DOUBLE) && !__PPC64__
+ #if HAVE_LONG_DOUBLE && (SIZEOF_LONG_DOUBLE > SIZEOF_DOUBLE)
++# ifdef __PPC64__
++ // PowerPC 64 (when gcc has -mlong-double-128) fails constant folding with LDOUBLE
++# define q_1_eps (1 / LDBL_EPSILON)
++# else
static LDOUBLE q_1_eps = 1 / LDBL_EPSILON;
++# endif
#else
static double q_1_eps = 1 / DBL_EPSILON;
+ #endif
diff --git a/R.spec b/R.spec
index 058d56f..013e467 100644
--- a/R.spec
+++ b/R.spec
@@ -130,7 +130,7 @@
Name: R
Version: 3.6.2
-Release: 1%{?dist}
+Release: 2%{?dist}
Summary: A language for data analysis and graphics
URL: http://www.r-project.org
Source0: https://cran.r-project.org/src/base/R-3/R-%{version}.tar.gz
@@ -1221,6 +1221,9 @@ R CMD javareconf \
%{_libdir}/libRmath.a
%changelog
+* Wed Dec 18 2019 Tom Callaway <spot(a)fedoraproject.org> - 3.6.2-2
+- adjust ppc64 patch to reflect upstream fix
+
* Thu Dec 12 2019 Tom Callaway <spot(a)fedoraproject.org> - 3.6.2-1
- update to 3.6.2
- disable tests on all non-intel arches
4 years, 3 months
Architecture specific change in rpms/R.git
by githook-noreply@fedoraproject.org
The package rpms/R.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/R.git/commit/?id=901e9504654846b7....
Change:
-%ifarch x86_64 %{ix86} armv7hl %{power64} aarch64
Thanks.
Full change:
============
commit 901e9504654846b713e48d674db865d27d51d837
Author: Tom Callaway <spot(a)fedoraproject.org>
Date: Tue Feb 18 13:24:21 2020 -0500
use openblas for lapack/blas, whereever possible (all fedora, el8)
diff --git a/R.spec b/R.spec
index 697ec8c..92de22e 100644
--- a/R.spec
+++ b/R.spec
@@ -3,6 +3,31 @@
%global runjavareconf 1
+# lapack comes from openblas, whenever possible.
+%if 0%{?fedora}
+%global syslapack 1
+%else
+%if 0%{?rhel} && 0%{?rhel} >= 8
+%global syslapack 1
+%else
+%global syslapack 0
+%endif
+%endif
+
+%ifarch x86_64 %{ix86} armv7hl %{power64} aarch64
+%if 0%{?rhel} >= 7
+%global openblas 1
+%else
+%if 0%{?fedora} >= 23
+%global openblas 1
+%else
+%global openblas 0
+%endif
+%endif
+%else
+%global openblas 0
+%endif
+
%if 0%{?fedora} >= 31
%global usemacros 1
%else
@@ -114,23 +139,9 @@
%global texi2any 1
%endif
-%ifarch x86_64 %{ix86} armv7hl %{power64} aarch64
-%if 0%{?rhel} >= 7
-%global openblas 1
-%else
-%if 0%{?fedora} >= 23
-%global openblas 1
-%else
-%global openblas 0
-%endif
-%endif
-%else
-%global openblas 0
-%endif
-
Name: R
Version: 3.6.2
-Release: 3%{?dist}
+Release: 4%{?dist}
Summary: A language for data analysis and graphics
URL: http://www.r-project.org
Source0: https://cran.r-project.org/src/base/R-3/R-%{version}.tar.gz
@@ -223,19 +234,10 @@ BuildRequires: autoconf, automake, libtool
BuildRequires: openblas-devel
%endif
-# We use the bundled lapack and shim for BLAS now.
-%if 0
-%if 0%{?fedora} >= 21
+%if %{syslapack}
+%if !%{openblas}
BuildRequires: lapack-devel >= 3.5.0-7
BuildRequires: blas-devel >= 3.5.0-7
-%else
-%if 0%{?fedora} >= 19
-BuildRequires: lapack-devel >= 3.4.2-7
-BuildRequires: blas-devel >= 3.4.2-7
-%else
-BuildRequires: lapack-devel
-BuildRequires: blas-devel >= 3.0
-%endif
%endif
%endif
@@ -301,9 +303,11 @@ Requires: sed, gawk, tex(latex), less, make, unzip
# Make sure we bring the new libRmath with us
Requires: libRmath%{?_isa} = %{version}-%{release}
+%if !%{syslapack}
%if %{openblas}
Requires: openblas-Rblas
%endif
+%endif
%if %{use_devtoolset}
# We need it for CXX11 and higher support.
@@ -379,8 +383,11 @@ Requires: pcre-devel
# Configure picks this up, but despite linking to it, it does not seem to be used as of R 3.5.2.
Requires: pcre2-devel
%endif
-# No longer true.
-# Requires: blas-devel >= 3.0, lapack-devel
+%if %{syslapack}
+%if %{openblas}
+Requires: openblas-devel
+%endif
+%endif
%if %{modern}
Requires: libicu-devel
%endif
@@ -632,7 +639,7 @@ export FFLAGS="%{optflags} --no-optimize-sibling-calls"
# https://bugzilla.redhat.com/show_bug.cgi?id=1117496
# https://bugzilla.redhat.com/show_bug.cgi?id=1117497
#
-# We use --enable-BLAS-shlib here. It generates a shared library
+# On old RHEL, we use --enable-BLAS-shlib here. It generates a shared library
# of the R bundled blas, that can be replaced by an optimized version.
# It also results in R using the bundled lapack copy.
@@ -644,14 +651,17 @@ export FFLAGS="%{optflags} --no-optimize-sibling-calls"
--with-system-tre \
%endif
--with-system-valgrind-headers \
-%if 0%{?fedora}
+%if %{syslapack}
--with-lapack \
+ --with-blas \
+%else
+ --enable-BLAS-shlib \
%endif
--with-tcl-config=%{_libdir}/tclConfig.sh \
--with-tk-config=%{_libdir}/tkConfig.sh \
- --enable-BLAS-shlib \
--enable-R-shlib \
--enable-prebuilt-html \
+ --enable-R-profiling \
--enable-memory-profiling \
%if %{with_lto}
%ifnarch %{arm}
@@ -788,10 +798,12 @@ sed -i 's|:/builddir/build/BUILD/R-%{version}/curl-%{curlv}/target%{_libdir}/:/b
sed -i 's|/builddir/build/BUILD/R-%{version}/curl-%{curlv}/target%{_libdir}/:/builddir/build/BUILD/R-%{version}/curl-%{curlv}/target%{_libdir}||g' %{buildroot}%{_libdir}/R/etc/ldpaths
%endif
+%if !%{syslapack}
%if %{openblas}
# Rename the R blas so.
mv %{buildroot}%{_libdir}/R/lib/libRblas.so %{buildroot}%{_libdir}/R/lib/libRrefblas.so
%endif
+%endif
# okay, look. its very clear that upstream does not run the test suite on any non-intel architectures.
%check
@@ -1221,6 +1233,11 @@ R CMD javareconf \
%{_libdir}/libRmath.a
%changelog
+* Tue Feb 18 2020 Tom Callaway <spot(a)fedoraproject.org> - 3.6.2-4
+- fix conditionals so that Fedora builds against system openblas for lapack/blas
+ and we only generate the R lapack/blas libs on RHEL 5-6-7 (where system lapack/openblas
+ is not reliable). Thanks to Dirk Eddelbuettel for pointing out the error.
+
* Tue Jan 28 2020 Fedora Release Engineering <releng(a)fedoraproject.org> - 3.6.2-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
4 years, 3 months
Architecture specific change in rpms/R.git
by githook-noreply@fedoraproject.org
The package rpms/R.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/R.git/commit/?id=901e9504654846b7....
Change:
-%ifarch x86_64 %{ix86} armv7hl %{power64} aarch64
Thanks.
Full change:
============
commit 901e9504654846b713e48d674db865d27d51d837
Author: Tom Callaway <spot(a)fedoraproject.org>
Date: Tue Feb 18 13:24:21 2020 -0500
use openblas for lapack/blas, whereever possible (all fedora, el8)
diff --git a/R.spec b/R.spec
index 697ec8c..92de22e 100644
--- a/R.spec
+++ b/R.spec
@@ -3,6 +3,31 @@
%global runjavareconf 1
+# lapack comes from openblas, whenever possible.
+%if 0%{?fedora}
+%global syslapack 1
+%else
+%if 0%{?rhel} && 0%{?rhel} >= 8
+%global syslapack 1
+%else
+%global syslapack 0
+%endif
+%endif
+
+%ifarch x86_64 %{ix86} armv7hl %{power64} aarch64
+%if 0%{?rhel} >= 7
+%global openblas 1
+%else
+%if 0%{?fedora} >= 23
+%global openblas 1
+%else
+%global openblas 0
+%endif
+%endif
+%else
+%global openblas 0
+%endif
+
%if 0%{?fedora} >= 31
%global usemacros 1
%else
@@ -114,23 +139,9 @@
%global texi2any 1
%endif
-%ifarch x86_64 %{ix86} armv7hl %{power64} aarch64
-%if 0%{?rhel} >= 7
-%global openblas 1
-%else
-%if 0%{?fedora} >= 23
-%global openblas 1
-%else
-%global openblas 0
-%endif
-%endif
-%else
-%global openblas 0
-%endif
-
Name: R
Version: 3.6.2
-Release: 3%{?dist}
+Release: 4%{?dist}
Summary: A language for data analysis and graphics
URL: http://www.r-project.org
Source0: https://cran.r-project.org/src/base/R-3/R-%{version}.tar.gz
@@ -223,19 +234,10 @@ BuildRequires: autoconf, automake, libtool
BuildRequires: openblas-devel
%endif
-# We use the bundled lapack and shim for BLAS now.
-%if 0
-%if 0%{?fedora} >= 21
+%if %{syslapack}
+%if !%{openblas}
BuildRequires: lapack-devel >= 3.5.0-7
BuildRequires: blas-devel >= 3.5.0-7
-%else
-%if 0%{?fedora} >= 19
-BuildRequires: lapack-devel >= 3.4.2-7
-BuildRequires: blas-devel >= 3.4.2-7
-%else
-BuildRequires: lapack-devel
-BuildRequires: blas-devel >= 3.0
-%endif
%endif
%endif
@@ -301,9 +303,11 @@ Requires: sed, gawk, tex(latex), less, make, unzip
# Make sure we bring the new libRmath with us
Requires: libRmath%{?_isa} = %{version}-%{release}
+%if !%{syslapack}
%if %{openblas}
Requires: openblas-Rblas
%endif
+%endif
%if %{use_devtoolset}
# We need it for CXX11 and higher support.
@@ -379,8 +383,11 @@ Requires: pcre-devel
# Configure picks this up, but despite linking to it, it does not seem to be used as of R 3.5.2.
Requires: pcre2-devel
%endif
-# No longer true.
-# Requires: blas-devel >= 3.0, lapack-devel
+%if %{syslapack}
+%if %{openblas}
+Requires: openblas-devel
+%endif
+%endif
%if %{modern}
Requires: libicu-devel
%endif
@@ -632,7 +639,7 @@ export FFLAGS="%{optflags} --no-optimize-sibling-calls"
# https://bugzilla.redhat.com/show_bug.cgi?id=1117496
# https://bugzilla.redhat.com/show_bug.cgi?id=1117497
#
-# We use --enable-BLAS-shlib here. It generates a shared library
+# On old RHEL, we use --enable-BLAS-shlib here. It generates a shared library
# of the R bundled blas, that can be replaced by an optimized version.
# It also results in R using the bundled lapack copy.
@@ -644,14 +651,17 @@ export FFLAGS="%{optflags} --no-optimize-sibling-calls"
--with-system-tre \
%endif
--with-system-valgrind-headers \
-%if 0%{?fedora}
+%if %{syslapack}
--with-lapack \
+ --with-blas \
+%else
+ --enable-BLAS-shlib \
%endif
--with-tcl-config=%{_libdir}/tclConfig.sh \
--with-tk-config=%{_libdir}/tkConfig.sh \
- --enable-BLAS-shlib \
--enable-R-shlib \
--enable-prebuilt-html \
+ --enable-R-profiling \
--enable-memory-profiling \
%if %{with_lto}
%ifnarch %{arm}
@@ -788,10 +798,12 @@ sed -i 's|:/builddir/build/BUILD/R-%{version}/curl-%{curlv}/target%{_libdir}/:/b
sed -i 's|/builddir/build/BUILD/R-%{version}/curl-%{curlv}/target%{_libdir}/:/builddir/build/BUILD/R-%{version}/curl-%{curlv}/target%{_libdir}||g' %{buildroot}%{_libdir}/R/etc/ldpaths
%endif
+%if !%{syslapack}
%if %{openblas}
# Rename the R blas so.
mv %{buildroot}%{_libdir}/R/lib/libRblas.so %{buildroot}%{_libdir}/R/lib/libRrefblas.so
%endif
+%endif
# okay, look. its very clear that upstream does not run the test suite on any non-intel architectures.
%check
@@ -1221,6 +1233,11 @@ R CMD javareconf \
%{_libdir}/libRmath.a
%changelog
+* Tue Feb 18 2020 Tom Callaway <spot(a)fedoraproject.org> - 3.6.2-4
+- fix conditionals so that Fedora builds against system openblas for lapack/blas
+ and we only generate the R lapack/blas libs on RHEL 5-6-7 (where system lapack/openblas
+ is not reliable). Thanks to Dirk Eddelbuettel for pointing out the error.
+
* Tue Jan 28 2020 Fedora Release Engineering <releng(a)fedoraproject.org> - 3.6.2-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
4 years, 3 months