Architecture specific change in rpms/ghc-pango.git
by githook-noreply@fedoraproject.org
The package rpms/ghc-pango.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/ghc-pango.git/commit/?id=a040e9f0....
Change:
+ExcludeArch: ppc64le
Thanks.
Full change:
============
commit 80ff99d5a42288c32cd863ff8c022b74ecbcf0b2
Author: Jens Petersen <petersen(a)redhat.com>
Date: Tue Oct 8 13:22:51 2019 +0800
patch by peti for glib-2.61 __attribute__ error
https://github.com/gtk2hs/gtk2hs/pull/282
diff --git a/0a6016e89ce98415bb395ca0cfafeaacf3b3fce6.patch b/0a6016e89ce98415bb395ca0cfafeaacf3b3fce6.patch
new file mode 100644
index 0000000..6bf09d4
--- /dev/null
+++ b/0a6016e89ce98415bb395ca0cfafeaacf3b3fce6.patch
@@ -0,0 +1,26 @@
+From 0a6016e89ce98415bb395ca0cfafeaacf3b3fce6 Mon Sep 17 00:00:00 2001
+From: Peter Simons <simons(a)cryp.to>
+Date: Sun, 6 Oct 2019 12:34:25 +0200
+Subject: [PATCH] pango: ignore the __attribute__(A) annotation introduced in
+ glib-2.61.2
+
+---
+ pango/pango.cabal | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/pango/pango.cabal b/pango/pango.cabal
+index 2eef515b..836e457f 100644
+--- a/pango/pango.cabal
++++ b/pango/pango.cabal
+@@ -78,9 +78,9 @@ Library
+ x-c2hs-Header: hspango.h
+ includes: hspango.h
+ include-dirs: .
+- cpp-options: -U__BLOCKS__
++ cpp-options: -U__BLOCKS__ -D__attribute__(A)=
+ if os(darwin) || os(freebsd)
+- cpp-options: -D__attribute__(A)= -D_Nullable= -D_Nonnull= -D_Noreturn=
++ cpp-options: -D_Nullable= -D_Nonnull= -D_Noreturn=
+ if os(windows)
+ cpp-options: -D__USE_MINGW_ANSI_STDIO=1
+ -- Pango 1.26 has a mysterious bug that makes it go into an infinite
diff --git a/ghc-pango.spec b/ghc-pango.spec
index 5ef100b..522e6d2 100644
--- a/ghc-pango.spec
+++ b/ghc-pango.spec
@@ -14,6 +14,7 @@ Url: https://hackage.haskell.org/package/%{pkg_name}
# Begin cabal-rpm sources:
Source0: https://hackage.haskell.org/package/%{pkgver}/%{pkgver}.tar.gz
# End cabal-rpm sources
+Patch0: https://github.com/gtk2hs/gtk2hs/commit/0a6016e89ce98415bb395ca0cfafeaacf...
# Begin cabal-rpm deps:
BuildRequires: ghc-Cabal-devel
@@ -84,6 +85,7 @@ This package provides the Haskell %{pkg_name} profiling library.
# Begin cabal-rpm setup:
%setup -q -n %{pkgver}
# End cabal-rpm setup
+%patch0 -p2 -b .orig
%build
commit 85fbf17fb931e9b52d0eec3ad3a67d082b740e39
Author: Jens Petersen <petersen(a)redhat.com>
Date: Tue Oct 8 11:39:08 2019 +0800
move demo to new doc subpkg
diff --git a/ghc-pango.spec b/ghc-pango.spec
index ac49659..5ef100b 100644
--- a/ghc-pango.spec
+++ b/ghc-pango.spec
@@ -108,11 +108,11 @@ rm -r %{buildroot}%{_datadir}/%{pkgver}
%files devel -f %{name}-devel.files
-%doc demo
%if %{with haddock}
%files doc -f %{name}-doc.files
+%doc demo
%endif
@@ -125,6 +125,7 @@ rm -r %{buildroot}%{_datadir}/%{pkgver}
* Tue Oct 8 2019 Jens Petersen <petersen(a)redhat.com> - 0.13.6.0-1
- update to 0.13.6.0
- exclude ppc64le because of #1737587
+- move demo to doc subpkg
* Thu Jul 25 2019 Fedora Release Engineering <releng(a)fedoraproject.org> - 0.13.5.0-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
commit a040e9f0c81aa823a914bb6bafeb01dcb6e16017
Author: Jens Petersen <petersen(a)redhat.com>
Date: Tue Oct 8 11:38:59 2019 +0800
exclude ppc64le because of #1737587
diff --git a/ghc-pango.spec b/ghc-pango.spec
index 28a16e6..ac49659 100644
--- a/ghc-pango.spec
+++ b/ghc-pango.spec
@@ -34,6 +34,7 @@ BuildRequires: pkgconfig(cairo)
BuildRequires: pkgconfig(pango)
BuildRequires: pkgconfig(pangocairo)
# End cabal-rpm deps
+ExcludeArch: ppc64le
%description
This package provides a wrapper around the Pango C library that allows
@@ -121,8 +122,9 @@ rm -r %{buildroot}%{_datadir}/%{pkgver}
%changelog
-* Thu Jul 25 2019 Jens Petersen <petersen(a)redhat.com> - 0.13.6.0-1
+* Tue Oct 8 2019 Jens Petersen <petersen(a)redhat.com> - 0.13.6.0-1
- update to 0.13.6.0
+- exclude ppc64le because of #1737587
* Thu Jul 25 2019 Fedora Release Engineering <releng(a)fedoraproject.org> - 0.13.5.0-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
commit 3f258b3437df9c994c53fb220672467edc127e28
Author: Jens Petersen <petersen(a)redhat.com>
Date: Mon Aug 5 18:30:58 2019 +0800
BR prof for lib and static for executable
diff --git a/ghc-pango.spec b/ghc-pango.spec
index d0bf48d..28a16e6 100644
--- a/ghc-pango.spec
+++ b/ghc-pango.spec
@@ -1,4 +1,4 @@
-# generated by cabal-rpm-1.0.0
+# generated by cabal-rpm-1.0.1
# https://fedoraproject.org/wiki/Packaging:Haskell
%global pkg_name pango
@@ -16,27 +16,20 @@ Source0: https://hackage.haskell.org/package/%{pkgver}/%{pkgver}.tar.gz
# End cabal-rpm sources
# Begin cabal-rpm deps:
-# Setup
BuildRequires: ghc-Cabal-devel
BuildRequires: ghc-filepath-devel
BuildRequires: ghc-gtk2hs-buildtools-devel
-%if %{with haddock}
-BuildRequires: ghc-doc
-%endif
-%if %{with ghc_prof}
-BuildRequires: ghc-prof
-%endif
BuildRequires: ghc-rpm-macros
-# Build
-BuildRequires: ghc-array-devel
-BuildRequires: ghc-cairo-devel
-BuildRequires: ghc-containers-devel
-BuildRequires: ghc-directory-devel
-BuildRequires: ghc-glib-devel
-BuildRequires: ghc-mtl-devel
-BuildRequires: ghc-pretty-devel
-BuildRequires: ghc-process-devel
-BuildRequires: ghc-text-devel
+BuildRequires: ghc-array-prof
+BuildRequires: ghc-base-prof
+BuildRequires: ghc-cairo-prof
+BuildRequires: ghc-containers-prof
+BuildRequires: ghc-directory-prof
+BuildRequires: ghc-glib-prof
+BuildRequires: ghc-mtl-prof
+BuildRequires: ghc-pretty-prof
+BuildRequires: ghc-process-prof
+BuildRequires: ghc-text-prof
BuildRequires: pkgconfig(cairo)
BuildRequires: pkgconfig(pango)
BuildRequires: pkgconfig(pangocairo)
@@ -52,6 +45,7 @@ on-screen.
%package devel
Summary: Haskell %{pkg_name} library development files
Provides: %{name}-static = %{version}-%{release}
+Provides: %{name}-static%{?_isa} = %{version}-%{release}
%if %{defined ghc_version}
Requires: ghc-compiler = %{ghc_version}
%endif
@@ -103,7 +97,7 @@ This package provides the Haskell %{pkg_name} profiling library.
# End cabal-rpm install
# demo files
-rm -r %{buildroot}%{_datadir}/%{pkg_name}-%{version}
+rm -r %{buildroot}%{_datadir}/%{pkgver}
%files -f %{name}.files
commit fcd619e1ca8bf594b57d072920f373155f36a345
Author: Jens Petersen <petersen(a)redhat.com>
Date: Thu Jul 25 16:19:55 2019 +0000
update to 0.13.6.0
diff --git a/.gitignore b/.gitignore
index 62d1beb..4b26188 100644
--- a/.gitignore
+++ b/.gitignore
@@ -12,3 +12,4 @@
/pango-0.13.3.1.tar.gz
/pango-0.13.4.0.tar.gz
/pango-0.13.5.0.tar.gz
+/pango-0.13.6.0.tar.gz
diff --git a/ghc-pango.spec b/ghc-pango.spec
index 871b0d8..d0bf48d 100644
--- a/ghc-pango.spec
+++ b/ghc-pango.spec
@@ -5,8 +5,8 @@
%global pkgver %{pkg_name}-%{version}
Name: ghc-%{pkg_name}
-Version: 0.13.5.0
-Release: 4%{?dist}
+Version: 0.13.6.0
+Release: 1%{?dist}
Summary: Binding to the Pango text rendering engine
License: LGPLv2+
@@ -127,6 +127,9 @@ rm -r %{buildroot}%{_datadir}/%{pkg_name}-%{version}
%changelog
+* Thu Jul 25 2019 Jens Petersen <petersen(a)redhat.com> - 0.13.6.0-1
+- update to 0.13.6.0
+
* Thu Jul 25 2019 Fedora Release Engineering <releng(a)fedoraproject.org> - 0.13.5.0-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
diff --git a/sources b/sources
index b1a8455..a31c754 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-SHA512 (pango-0.13.5.0.tar.gz) = d1d6e61118f193d0849e44a2f589391e36f9e6bc80cbf45071d01384e12f600158cad11a49b194388baa1c8c8941a16f8b147a67982016bd9b95035a5f108827
+SHA512 (pango-0.13.6.0.tar.gz) = 03a3e133499d202e6d6b1471db287ef1f0f8933b6112e367ce20450d171e8713ffe0caea46ba60fc7ead6c47548cd8bcaf1fe39bb2423099f1c2980484864a8d
commit 8c76bc4b1e5fac4c49d8b9189e875c1a7f5efba8
Author: Jens Petersen <petersen(a)redhat.com>
Date: Thu Jul 25 04:25:02 2019 +0000
refresh to cabal-rpm-1.0.0: lib doc/prof subpkgs and bin static BRs
diff --git a/ghc-pango.spec b/ghc-pango.spec
index 52a3a15..871b0d8 100644
--- a/ghc-pango.spec
+++ b/ghc-pango.spec
@@ -1,4 +1,4 @@
-# generated by cabal-rpm-0.13
+# generated by cabal-rpm-1.0.0
# https://fedoraproject.org/wiki/Packaging:Haskell
%global pkg_name pango
@@ -16,15 +16,23 @@ Source0: https://hackage.haskell.org/package/%{pkgver}/%{pkgver}.tar.gz
# End cabal-rpm sources
# Begin cabal-rpm deps:
+# Setup
BuildRequires: ghc-Cabal-devel
+BuildRequires: ghc-filepath-devel
+BuildRequires: ghc-gtk2hs-buildtools-devel
+%if %{with haddock}
+BuildRequires: ghc-doc
+%endif
+%if %{with ghc_prof}
+BuildRequires: ghc-prof
+%endif
BuildRequires: ghc-rpm-macros
+# Build
BuildRequires: ghc-array-devel
BuildRequires: ghc-cairo-devel
BuildRequires: ghc-containers-devel
BuildRequires: ghc-directory-devel
-BuildRequires: ghc-filepath-devel
BuildRequires: ghc-glib-devel
-BuildRequires: ghc-gtk2hs-buildtools-devel
BuildRequires: ghc-mtl-devel
BuildRequires: ghc-pretty-devel
BuildRequires: ghc-process-devel
@@ -44,11 +52,8 @@ on-screen.
%package devel
Summary: Haskell %{pkg_name} library development files
Provides: %{name}-static = %{version}-%{release}
-Provides: %{name}-doc = %{version}-%{release}
%if %{defined ghc_version}
Requires: ghc-compiler = %{ghc_version}
-Requires(post): ghc-compiler = %{ghc_version}
-Requires(postun): ghc-compiler = %{ghc_version}
%endif
Requires: %{name}%{?_isa} = %{version}-%{release}
# Begin cabal-rpm deps:
@@ -61,6 +66,25 @@ Requires: pkgconfig(pangocairo)
This package provides the Haskell %{pkg_name} library development files.
+%if %{with haddock}
+%package doc
+Summary: Haskell %{pkg_name} library documentation
+
+%description doc
+This package provides the Haskell %{pkg_name} library documentation.
+%endif
+
+
+%if %{with ghc_prof}
+%package prof
+Summary: Haskell %{pkg_name} profiling library
+Requires: %{name}-devel%{?_isa} = %{version}-%{release}
+
+%description prof
+This package provides the Haskell %{pkg_name} profiling library.
+%endif
+
+
%prep
# Begin cabal-rpm setup:
%setup -q -n %{pkgver}
@@ -82,14 +106,6 @@ This package provides the Haskell %{pkg_name} library development files.
rm -r %{buildroot}%{_datadir}/%{pkg_name}-%{version}
-%post devel
-%ghc_pkg_recache
-
-
-%postun devel
-%ghc_pkg_recache
-
-
%files -f %{name}.files
# Begin cabal-rpm files:
%license COPYING
@@ -100,6 +116,16 @@ rm -r %{buildroot}%{_datadir}/%{pkg_name}-%{version}
%doc demo
+%if %{with haddock}
+%files doc -f %{name}-doc.files
+%endif
+
+
+%if %{with ghc_prof}
+%files prof -f %{name}-prof.files
+%endif
+
+
%changelog
* Thu Jul 25 2019 Fedora Release Engineering <releng(a)fedoraproject.org> - 0.13.5.0-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
4 years, 6 months
Architecture specific change in rpms/ghc-cairo.git
by githook-noreply@fedoraproject.org
The package rpms/ghc-cairo.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/ghc-cairo.git/commit/?id=7ef7dbeb....
Change:
+ExcludeArch: ppc64le
Thanks.
Full change:
============
commit 7ef7dbebc977a5dc5ab0609f765f2e141a6d69cd
Author: Jens Petersen <petersen(a)redhat.com>
Date: Tue Oct 8 13:35:15 2019 +0800
exclude ppc64le because of #1737587
diff --git a/ghc-cairo.spec b/ghc-cairo.spec
index af07081..7777b34 100644
--- a/ghc-cairo.spec
+++ b/ghc-cairo.spec
@@ -31,6 +31,7 @@ BuildRequires: pkgconfig(cairo-pdf)
BuildRequires: pkgconfig(cairo-ps)
BuildRequires: pkgconfig(cairo-svg)
# End cabal-rpm deps
+ExcludeArch: ppc64le
%description
Cairo is a library to render high quality vector graphics. There exist various
@@ -104,11 +105,11 @@ rm -r %{buildroot}%{_datadir}/%{pkg_name}-%{version}
%files devel -f %{name}-devel.files
-%doc demo
%if %{with haddock}
%files doc -f %{name}-doc.files
+%doc demo
%endif
@@ -118,8 +119,10 @@ rm -r %{buildroot}%{_datadir}/%{pkg_name}-%{version}
%changelog
-* Thu Jul 25 2019 Jens Petersen <petersen(a)redhat.com> - 0.13.6.0-1
+* Tue Oct 8 2019 Jens Petersen <petersen(a)redhat.com> - 0.13.6.0-1
- update to 0.13.6.0
+- exclude ppc64le because of #1737587
+- move demo to doc subpkg
* Thu Jul 25 2019 Fedora Release Engineering <releng(a)fedoraproject.org> - 0.13.5.0-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
4 years, 6 months
Architecture specific change in rpms/ghc-glib.git
by githook-noreply@fedoraproject.org
The package rpms/ghc-glib.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/ghc-glib.git/commit/?id=894be70e4....
Change:
+ExcludeArch: ppc64le
Thanks.
Full change:
============
commit 894be70e41de5794c1dfe70331633c2175e2dbf5
Author: Jens Petersen <petersen(a)redhat.com>
Date: Tue Oct 8 11:27:07 2019 +0800
exclude ppc64le because of #1737587
diff --git a/ghc-glib.spec b/ghc-glib.spec
index b519f08..0b8c5b6 100644
--- a/ghc-glib.spec
+++ b/ghc-glib.spec
@@ -27,6 +27,7 @@ BuildRequires: ghc-utf8-string-prof
BuildRequires: pkgconfig(glib-2.0)
BuildRequires: pkgconfig(gobject-2.0)
# End cabal-rpm deps
+ExcludeArch: ppc64le
%description
GLib is a collection of C data structures and utility functions for the GObject
@@ -113,6 +114,7 @@ This package provides the Haskell %{pkg_name} profiling library.
%changelog
* Thu Jul 25 2019 Jens Petersen <petersen(a)redhat.com> - 0.13.7.0-1
- update to 0.13.7.0
+- exclude ppc64le, because of #1737587
* Thu Jul 25 2019 Fedora Release Engineering <releng(a)fedoraproject.org> - 0.13.6.0-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
commit 2ebed67667d98e13f7b5eaef4e9e5f05d05b66ed
Author: Jens Petersen <petersen(a)redhat.com>
Date: Mon Aug 5 18:29:27 2019 +0800
BR prof for lib and static for executable
diff --git a/ghc-glib.spec b/ghc-glib.spec
index e038b2b..b519f08 100644
--- a/ghc-glib.spec
+++ b/ghc-glib.spec
@@ -1,4 +1,4 @@
-# generated by cabal-rpm-1.0.0
+# generated by cabal-rpm-1.0.1
# https://fedoraproject.org/wiki/Packaging:Haskell
%global pkg_name glib
@@ -18,17 +18,12 @@ Source0: https://hackage.haskell.org/package/%{pkgver}/%{pkgver}.tar.gz
# Begin cabal-rpm deps:
BuildRequires: ghc-Cabal-devel
BuildRequires: ghc-gtk2hs-buildtools-devel
-%if %{with haddock}
-BuildRequires: ghc-doc
-%endif
-%if %{with ghc_prof}
-BuildRequires: ghc-prof
-%endif
BuildRequires: ghc-rpm-macros
-BuildRequires: ghc-bytestring-devel
-BuildRequires: ghc-containers-devel
-BuildRequires: ghc-text-devel
-BuildRequires: ghc-utf8-string-devel
+BuildRequires: ghc-base-prof
+BuildRequires: ghc-bytestring-prof
+BuildRequires: ghc-containers-prof
+BuildRequires: ghc-text-prof
+BuildRequires: ghc-utf8-string-prof
BuildRequires: pkgconfig(glib-2.0)
BuildRequires: pkgconfig(gobject-2.0)
# End cabal-rpm deps
@@ -43,6 +38,7 @@ to support the packages that wrap libraries that are themselves based on GLib.
%package devel
Summary: Haskell %{pkg_name} library development files
Provides: %{name}-static = %{version}-%{release}
+Provides: %{name}-static%{?_isa} = %{version}-%{release}
%if %{defined ghc_version}
Requires: ghc-compiler = %{ghc_version}
%endif
commit cc484c813653acfd0c589d6938ef41a3a10d7759
Author: Jens Petersen <petersen(a)redhat.com>
Date: Thu Jul 25 15:48:20 2019 +0000
update to 0.13.7.0
diff --git a/.gitignore b/.gitignore
index dd6fb10..da909ee 100644
--- a/.gitignore
+++ b/.gitignore
@@ -15,3 +15,4 @@
/glib-0.13.4.1.tar.gz
/glib-0.13.5.0.tar.gz
/glib-0.13.6.0.tar.gz
+/glib-0.13.7.0.tar.gz
diff --git a/ghc-glib.spec b/ghc-glib.spec
index 828d1a0..e038b2b 100644
--- a/ghc-glib.spec
+++ b/ghc-glib.spec
@@ -5,8 +5,8 @@
%global pkgver %{pkg_name}-%{version}
Name: ghc-%{pkg_name}
-Version: 0.13.6.0
-Release: 4%{?dist}
+Version: 0.13.7.0
+Release: 1%{?dist}
Summary: Binding to the GLIB library for Gtk2Hs
License: LGPLv2+
@@ -115,6 +115,9 @@ This package provides the Haskell %{pkg_name} profiling library.
%changelog
+* Thu Jul 25 2019 Jens Petersen <petersen(a)redhat.com> - 0.13.7.0-1
+- update to 0.13.7.0
+
* Thu Jul 25 2019 Fedora Release Engineering <releng(a)fedoraproject.org> - 0.13.6.0-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
diff --git a/sources b/sources
index f0d29bd..44f8927 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-SHA512 (glib-0.13.6.0.tar.gz) = f1f777a35002767004281c5d26e15e82980edadefa9e697da6537b7f376b8c81ef89d1a3cb2f89ccbe466f0e4aaeadb266052c562c4d20127214b5bfdc05fb44
+SHA512 (glib-0.13.7.0.tar.gz) = 507fdcc6d686ea25b46d9d6f112aa29ebf751b3db99a19c9938ebd8675a8c167aafe151c96fe115662d15696c79aada93a0b197450159e8f45bc329e3de4455a
commit 591a3b839c910bcaed884e9736b41a7cda5c2890
Author: Jens Petersen <petersen(a)redhat.com>
Date: Thu Jul 25 04:23:30 2019 +0000
refresh to cabal-rpm-1.0.0: lib doc/prof subpkgs and bin static BRs
diff --git a/ghc-glib.spec b/ghc-glib.spec
index 6548d04..828d1a0 100644
--- a/ghc-glib.spec
+++ b/ghc-glib.spec
@@ -1,4 +1,4 @@
-# generated by cabal-rpm-0.13
+# generated by cabal-rpm-1.0.0
# https://fedoraproject.org/wiki/Packaging:Haskell
%global pkg_name glib
@@ -17,10 +17,16 @@ Source0: https://hackage.haskell.org/package/%{pkgver}/%{pkgver}.tar.gz
# Begin cabal-rpm deps:
BuildRequires: ghc-Cabal-devel
+BuildRequires: ghc-gtk2hs-buildtools-devel
+%if %{with haddock}
+BuildRequires: ghc-doc
+%endif
+%if %{with ghc_prof}
+BuildRequires: ghc-prof
+%endif
BuildRequires: ghc-rpm-macros
BuildRequires: ghc-bytestring-devel
BuildRequires: ghc-containers-devel
-BuildRequires: ghc-gtk2hs-buildtools-devel
BuildRequires: ghc-text-devel
BuildRequires: ghc-utf8-string-devel
BuildRequires: pkgconfig(glib-2.0)
@@ -37,11 +43,8 @@ to support the packages that wrap libraries that are themselves based on GLib.
%package devel
Summary: Haskell %{pkg_name} library development files
Provides: %{name}-static = %{version}-%{release}
-Provides: %{name}-doc = %{version}-%{release}
%if %{defined ghc_version}
Requires: ghc-compiler = %{ghc_version}
-Requires(post): ghc-compiler = %{ghc_version}
-Requires(postun): ghc-compiler = %{ghc_version}
%endif
Requires: %{name}%{?_isa} = %{version}-%{release}
# Begin cabal-rpm deps:
@@ -55,6 +58,25 @@ Obsoletes: ghc-gconf-devel < 0.11, ghc-gstreamer-devel < 0.11, ghc-svgcairo
This package provides the Haskell %{pkg_name} library development files.
+%if %{with haddock}
+%package doc
+Summary: Haskell %{pkg_name} library documentation
+
+%description doc
+This package provides the Haskell %{pkg_name} library documentation.
+%endif
+
+
+%if %{with ghc_prof}
+%package prof
+Summary: Haskell %{pkg_name} profiling library
+Requires: %{name}-devel%{?_isa} = %{version}-%{release}
+
+%description prof
+This package provides the Haskell %{pkg_name} profiling library.
+%endif
+
+
%prep
# Begin cabal-rpm setup:
%setup -q -n %{pkgver}
@@ -73,14 +95,6 @@ This package provides the Haskell %{pkg_name} library development files.
# End cabal-rpm install
-%post devel
-%ghc_pkg_recache
-
-
-%postun devel
-%ghc_pkg_recache
-
-
%files -f %{name}.files
# Begin cabal-rpm files:
%license COPYING
@@ -90,6 +104,16 @@ This package provides the Haskell %{pkg_name} library development files.
%files devel -f %{name}-devel.files
+%if %{with haddock}
+%files doc -f %{name}-doc.files
+%endif
+
+
+%if %{with ghc_prof}
+%files prof -f %{name}-prof.files
+%endif
+
+
%changelog
* Thu Jul 25 2019 Fedora Release Engineering <releng(a)fedoraproject.org> - 0.13.6.0-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
4 years, 6 months
[Report] Packages Restricting Arches
by root
List of packages currently excluding arches (2567)
===========================================
- 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}
- 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
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- docker-distribution
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- dolphin-emu
ExclusiveArch: x86_64 armv7l aarch64
- 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
- embree2
ExclusiveArch: x86_64
- enki
ExclusiveArch: %{qt5_qtwebengine_arches} noarch
- envytools
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64
- exciting
ExclusiveArch: x86_64 %{ix86}
ExclusiveArch: x86_64 %{ix86} aarch64 %{power64}
ExclusiveArch: x86_64 %{ix86} aarch64 %{arm} %{power64}
- expresso
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- extlinux-bootloader
ExclusiveArch: %{arm} aarch64
- fcitx-libpinyin
ExclusiveArch: %{qt5_qtwebengine_arches}
- fedora-dockerfiles
ExclusiveArch: %{go_arches}
- fence-virt
ExclusiveArch: i686 x86_64
- 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} %{ix86} x86_64 ppc ppc64
- 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 ppc64 s390x
- glibd
ExclusiveArch: %{ldc_arches}
- glusterd2
ExclusiveArch: %{go_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
- icaro
ExclusiveArch: %{ix86} x86_64 noarch
- 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
- 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
- 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
- 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}
- libica
ExclusiveArch: s390 s390x
- libipt
ExclusiveArch: %{ix86} x86_64
ExclusiveArch: %{ix86} x86_64
- libmfx
ExclusiveArch: %{ix86} x86_64
- libocxl
ExclusiveArch: ppc64le
- libpmemobj-cpp
ExclusiveArch: x86_64
- libpsm2
ExclusiveArch: x86_64
- libquentier
ExclusiveArch: %{qt5_qtwebengine_arches}
- librtas
ExclusiveArch: %{power64}
- libseccomp
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64 mipsel mips64el ppc64 ppc64le s390 s390x
- 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
- 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
- maven-eclipse-plugin
ExclusiveArch: %{ix86} x86_64
- maxima
ExclusiveArch: %{arm} %{ix86} x86_64 aarch64 ppc sparcv9
ExclusiveArch: %{ix86} x86_64 ppc sparcv9
- 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
- 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-arm-binutils
ExclusiveArch: x86_64
- 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}
ExclusiveArch: %{ix86} x86_64 %{arm}
- 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-buffertools
ExclusiveArch: %{nodejs_arches}
- 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
ExclusiveArch: %{ix86} x86_64 %{arm} 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-compressible
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} 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-encodeurl
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
ExclusiveArch: %{ix86} x86_64 %{arm} 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-finalhandler
ExclusiveArch: %{nodejs_arches} 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-flot
ExclusiveArch: %{nodejs_arches} 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
ExclusiveArch: %{ix86} x86_64 %{arm} 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-method-override
ExclusiveArch: %{nodejs_arches} 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-moment
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} 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-negotiator
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} 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-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-send
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} 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
ExclusiveArch: %{ix86} x86_64 %{arm} 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-stylus
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-tilejson
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-tilelive
ExclusiveArch: %{nodejs_arches} 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-register-machine
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- 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
- 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-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}
- 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-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-threadpool
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-aho-corasick
ExclusiveArch: %{rust_arches}
- rust-alga
ExclusiveArch: %{rust_arches}
- rust-alga_derive
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-aom-sys
ExclusiveArch: %{rust_arches}
- rust-approx
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-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-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-bat
ExclusiveArch: %{rust_arches}
- rust-bencher
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-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-sys
ExclusiveArch: %{rust_arches}
- rust-brotli2
ExclusiveArch: %{rust_arches}
- rust-bstr
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-byteorder
ExclusiveArch: %{rust_arches}
- rust-bytes
ExclusiveArch: %{rust_arches}
- rust-bytes0.3
ExclusiveArch: %{rust_arches}
- rust-bytesize
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_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-chbs
ExclusiveArch: %{rust_arches}
- rust-checked_int_cast
ExclusiveArch: %{rust_arches}
- rust-chrono
ExclusiveArch: %{rust_arches}
- rust-chrono-humanize
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-comrak
ExclusiveArch: %{rust_arches}
- rust-config
ExclusiveArch: %{rust_arches}
- rust-console
ExclusiveArch: %{rust_arches}
- rust-content_inspector
ExclusiveArch: %{rust_arches}
- rust-copyless
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-deque
ExclusiveArch: %{rust_arches}
- rust-crossbeam-epoch
ExclusiveArch: %{rust_arches}
- rust-crossbeam-queue
ExclusiveArch: %{rust_arches}
- rust-crossbeam-utils
ExclusiveArch: %{rust_arches}
- rust-crossterm
ExclusiveArch: %{rust_arches}
- rust-crossterm_cursor
ExclusiveArch: %{rust_arches}
- rust-crossterm_input
ExclusiveArch: %{rust_arches}
- rust-crossterm_screen
ExclusiveArch: %{rust_arches}
- rust-crossterm_style
ExclusiveArch: %{rust_arches}
- rust-crossterm_terminal
ExclusiveArch: %{rust_arches}
- rust-crossterm_utils
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-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-envsubst
ExclusiveArch: %{rust_arches}
- rust-erased-serde
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-ffsend
ExclusiveArch: %{rust_arches}
- rust-ffsend-api
ExclusiveArch: %{rust_arches}
- rust-filetime
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-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-async-runtime-preview
ExclusiveArch: %{rust_arches}
- rust-futures-channel-preview
ExclusiveArch: %{rust_arches}
- rust-futures-core
ExclusiveArch: %{rust_arches}
- rust-futures-core-preview
ExclusiveArch: %{rust_arches}
- rust-futures-cpupool
ExclusiveArch: %{rust_arches}
- rust-futures-executor-preview
ExclusiveArch: %{rust_arches}
- rust-futures-io-preview
ExclusiveArch: %{rust_arches}
- rust-futures-preview
ExclusiveArch: %{rust_arches}
- rust-futures-sink-preview
ExclusiveArch: %{rust_arches}
- rust-futures-stable-preview
ExclusiveArch: %{rust_arches}
- rust-futures-util-preview
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-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-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-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-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-tls
ExclusiveArch: %{rust_arches}
- rust-hyper0.10
ExclusiveArch: %{rust_arches}
- rust-hyperfine
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-ipnetwork
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-jetscii
ExclusiveArch: %{rust_arches}
- rust-jobserver
ExclusiveArch: %{rust_arches}
- rust-jpeg-decoder
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-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-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-man
ExclusiveArch: %{rust_arches}
- rust-maplit
ExclusiveArch: %{rust_arches}
- rust-markup5ever
ExclusiveArch: %{rust_arches}
- rust-matches
ExclusiveArch: %{rust_arches}
- rust-matrixmultiply
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-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-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-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-objekt
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_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-paste
ExclusiveArch: %{rust_arches}
- rust-paste-impl
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-phf_codegen
ExclusiveArch: %{rust_arches}
- rust-phf_generator
ExclusiveArch: %{rust_arches}
- rust-phf_shared
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-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-hack
ExclusiveArch: %{rust_arches}
- rust-proc-macro2
ExclusiveArch: %{rust_arches}
- rust-proc-macro2-0.4
ExclusiveArch: %{rust_arches}
- rust-procedural-masquerade
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-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-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_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-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-rgb
ExclusiveArch: %{rust_arches}
- rust-ripgrep
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-rustc-demangle
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-rusty-fork
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-pickle
ExclusiveArch: %{rust_arches}
- rust-serde-xml-rs
ExclusiveArch: %{rust_arches}
- rust-serde0.8
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_json0.8
ExclusiveArch: %{rust_arches}
- rust-serde_stacker
ExclusiveArch: %{rust_arches}
- rust-serde_test
ExclusiveArch: %{rust_arches}
- rust-serde_urlencoded
ExclusiveArch: %{rust_arches}
- rust-serde_urlencoded0.5
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-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-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-slotmap0.2
ExclusiveArch: %{rust_arches}
- rust-slug
ExclusiveArch: %{rust_arches}
- rust-smallvec
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-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-strsim
ExclusiveArch: %{rust_arches}
- rust-structopt
ExclusiveArch: %{rust_arches}
- rust-structopt-derive
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-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-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-textwrap
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-timebomb
ExclusiveArch: %{rust_arches}
- rust-timer
ExclusiveArch: %{rust_arches}
- rust-timerfd
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-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-threadpool
ExclusiveArch: %{rust_arches}
- rust-tokio-timer
ExclusiveArch: %{rust_arches}
- rust-tokio-tls
ExclusiveArch: %{rust_arches}
- rust-tokio-trace-core
ExclusiveArch: %{rust_arches}
- rust-tokio-udp
ExclusiveArch: %{rust_arches}
- rust-tokio-uds
ExclusiveArch: %{rust_arches}
- rust-toml
ExclusiveArch: %{rust_arches}
- rust-toml0.4
ExclusiveArch: %{rust_arches}
- rust-traitobject
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_or
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-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-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-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-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-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}
- 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}
- 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
ExclusiveArch: %{ix86} x86_64 %{arm} 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
- virtio-forwarder
ExclusiveArch: x86_64 aarch64 ppc64le %ix86
- 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
- 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
- wraplinux
ExclusiveArch: %{ix86} x86_64
- wxMaxima
ExclusiveArch: %{arm} %{ix86} x86_64 aarch64 ppc sparcv9
- x2goclient
ExclusiveArch: x86_64
- xe-guest-utilities
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-geode
ExclusiveArch: %{ix86}
- xorg-x11-drv-intel
ExclusiveArch: %{ix86} x86_64 ia64
- 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, 6 months
Architecture specific change in rpms/gtk2hs-buildtools.git
by githook-noreply@fedoraproject.org
The package rpms/gtk2hs-buildtools.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/gtk2hs-buildtools.git/commit/?id=....
Change:
+ExcludeArch: ppc64le
Thanks.
Full change:
============
commit 7fafbe904509dbc80bc741f6c26a59b1d919e07d
Author: Jens Petersen <petersen(a)redhat.com>
Date: Tue Oct 8 11:18:12 2019 +0800
exclude ppc64le (#1737587)
diff --git a/gtk2hs-buildtools.spec b/gtk2hs-buildtools.spec
index 72bee16..04a1e21 100644
--- a/gtk2hs-buildtools.spec
+++ b/gtk2hs-buildtools.spec
@@ -31,6 +31,7 @@ BuildRequires: alex
BuildRequires: happy
Requires: %{name}-common = %{version}-%{release}
# End cabal-rpm deps
+ExcludeArch: ppc64le
%description
This package provides a set of helper programs necessary to build the Gtk2Hs
@@ -142,6 +143,7 @@ mv %{buildroot}%{_ghcdocdir}{,-common}
%changelog
* Thu Jul 25 2019 Jens Petersen <petersen(a)redhat.com> - 0.13.5.0-1
- update to 0.13.5.0
+- exclude ppc64le (#1737587)
* Thu Jul 25 2019 Fedora Release Engineering <releng(a)fedoraproject.org> - 0.13.4.0-5
- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
4 years, 6 months
Architecture specific change in rpms/slurm.git
by githook-noreply@fedoraproject.org
The package rpms/slurm.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/slurm.git/commit/?id=f0f2538e93a6...
https://src.fedoraproject.org/cgit/rpms/slurm.git/commit/?id=8a8ef77daffa...
https://src.fedoraproject.org/cgit/rpms/slurm.git/commit/?id=7629b59fcca2....
Change:
+ExcludeArch: i686
+%ifarch aarch64 ppc64le x86_64
-%ifarch aarch64 ppc64le x86_64
Thanks.
Full change:
============
commit d1f9e6565d632085fccca37b728accfe3836ce04
Merge: f0f2538 9262a5d
Author: Philip Kovacs <pkfed(a)fedoraproject.org>
Date: Mon Oct 7 17:34:59 2019 -0400
Merge branch 'master' into f30
commit f0f2538e93a6f6b8600eba9870e0458ed8a509ff
Author: Philip Kovacs <pkfed(a)fedoraproject.org>
Date: Mon Oct 7 17:28:21 2019 -0400
f30 to master
diff --git a/.rpmlint b/.rpmlint
deleted file mode 100644
index 5aca11b..0000000
--- a/.rpmlint
+++ /dev/null
@@ -1,9 +0,0 @@
-from Config import *
-addFilter("E: shared-lib-without-dependency-information")
-addFilter("E: missing-dependency-to-logrotate")
-addFilter("W: manual-page-warning")
-addFilter("W: no-documentation")
-addFilter("W: no-manual-page-for-binary")
-addFilter("W: non-conffile-in-etc")
-addFilter("W: shared-lib-calls-exit")
-addFilter("W: spelling-error")
diff --git a/slurm.rpmlintrc b/slurm.rpmlintrc
new file mode 100644
index 0000000..24fde8a
--- /dev/null
+++ b/slurm.rpmlintrc
@@ -0,0 +1,8 @@
+addFilter("E: shared-lib-without-dependency-information")
+addFilter("E: missing-dependency-to-logrotate")
+addFilter("W: manual-page-warning")
+addFilter("W: no-documentation")
+addFilter("W: no-manual-page-for-binary")
+addFilter("W: non-conffile-in-etc")
+addFilter("W: shared-lib-calls-exit")
+addFilter("W: spelling-error")
diff --git a/slurm.spec b/slurm.spec
index 9247cef..db3e301 100644
--- a/slurm.spec
+++ b/slurm.spec
@@ -1,5 +1,5 @@
# Upstream tarballs use an additional release number
-%global ups_rel 1
+%global ups_rel 2
%if "%{ups_rel}" == "1"
%global name_version %{name}-%{version}
@@ -14,12 +14,9 @@
%bcond_with ucx
%endif
-# Allow linkage with undefined symbols (disable -z,defs)
-%undefine _strict_symbol_defs_build
-
Name: slurm
-Version: 18.08.8
-Release: 2%{?dist}
+Version: 19.05.3
+Release: 1%{?dist}
Summary: Simple Linux Utility for Resource Management
License: GPLv2 and BSD
URL: https://slurm.schedmd.com/
@@ -36,8 +33,7 @@ Patch0: slurm_libslurmfull_version.patch
# Build-related patches
Patch10: slurm_perlapi_rpaths.patch
Patch11: slurm_html_doc_path.patch
-Patch12: slurm_doc_fix.patch
-Patch13: slurm_without_cray.patch
+Patch12: slurm_without_cray.patch
# Fedora-related patches
Patch20: slurm_pmix_soname.patch
@@ -69,6 +65,7 @@ BuildRequires: lz4-devel
BuildRequires: mariadb-devel
BuildRequires: munge-devel
BuildRequires: ncurses-devel
+BuildRequires: numactl-devel
BuildRequires: pam-devel
BuildRequires: pmix-devel
BuildRequires: rdma-core-devel
@@ -80,10 +77,9 @@ BuildRequires: zlib-devel
BuildRequires: ucx-devel
%endif
-# follow arch exclusions for numa
-%ifnarch %{arm}
-BuildRequires: numactl-devel
-%endif
+# exclude upstream-deprecated 32-bit architectures
+ExcludeArch: armv7hl
+ExcludeArch: i686
Requires: munge
Requires: pmix
@@ -184,6 +180,15 @@ Slurm contribution package which includes the programs seff,
sjobexitmod, sjstat and smail. See their respective man pages
for more information.
+%package nss_slurm
+Summary: NSS plugin for slurm
+Requires: %{name}-libs%{?_isa} = %{version}-%{release}
+%description nss_slurm
+nss_slurm is an optional NSS plugin that can permit passwd and group resolution
+for a job on the compute node to be serviced through the local slurmstepd
+process, rather than through some alternate network-based service such as LDAP,
+SSSD, or NSLCD.
+
%package openlava
Summary: Openlava/LSF wrappers for transition from OpenLava/LSF to Slurm
Requires: %{name}-perlapi%{?_isa} = %{version}-%{release}
@@ -215,15 +220,7 @@ Requires: %{name}-perlapi%{?_isa} = %{version}-%{release}
Torque wrapper scripts used for helping migrate from Torque/PBS to Slurm.
%prep
-%setup -q -n %{name_version}
-%patch0 -p1
-%patch10 -p1
-%patch11 -p1
-%patch12 -p1
-%patch13 -p1
-%patch20 -p1
-%patch21 -p1
-%patch22 -p1
+%autosetup -p1 -n %{name_version}
cp %SOURCE1 etc/slurm.conf
cp %SOURCE1 etc/slurm.conf.example
cp %SOURCE2 etc/slurmdbd.conf
@@ -366,7 +363,7 @@ done
# contribs docs
install -d -m 0755 %{buildroot}%{_docdir}/%{name}/contribs/lua
install -m 0644 contribs/README %{buildroot}%{_docdir}/%{name}/contribs
-install -m 0644 contribs/lua/proctrack.lua %{buildroot}%{_docdir}/%{name}/contribs/lua
+install -m 0644 contribs/lua/*.lua %{buildroot}%{_docdir}/%{name}/contribs/lua
# remove libtool archives
find %{buildroot} -name \*.a -o -name \*.la | xargs rm -f
@@ -378,18 +375,7 @@ rm -f %{buildroot}%{_libdir}/%{name}/auth_none.so
rm -f %{buildroot}%{_libdir}/%{name}/job_submit_defaults.so
rm -f %{buildroot}%{_libdir}/%{name}/job_submit_logging.so
rm -f %{buildroot}%{_libdir}/%{name}/job_submit_partition.so
-# remove bluegene files
-rm -f %{buildroot}%{_libdir}/%{name}/select_bluegene.so
-rm -f %{buildroot}%{_mandir}/man5/bluegene*
# remove cray files
-rm -f %{buildroot}%{_libdir}/%{name}/acct_gather_energy_cray.so
-rm -f %{buildroot}%{_libdir}/%{name}/core_spec_cray.so
-rm -f %{buildroot}%{_libdir}/%{name}/job_container_cncu.so
-rm -f %{buildroot}%{_libdir}/%{name}/job_submit_cray.so
-rm -f %{buildroot}%{_libdir}/%{name}/select_alps.so
-rm -f %{buildroot}%{_libdir}/%{name}/select_cray.so
-rm -f %{buildroot}%{_libdir}/%{name}/switch_cray.so
-rm -f %{buildroot}%{_libdir}/%{name}/task_cray.so
rm -f %{buildroot}%{_mandir}/man5/cray*
# remove perl cruft
rm -f %{buildroot}%{perl_vendorarch}/auto/Slurm*/.packlist
@@ -428,11 +414,12 @@ rm -f %{buildroot}%{perl_archlib}/perllocal.pod
%{_libdir}/%{name}/auth_munge.so
%{_libdir}/%{name}/burst_buffer_generic.so
%{_libdir}/%{name}/checkpoint_{none,ompi}.so
+%{_libdir}/%{name}/cli_filter_none.so
%{_libdir}/%{name}/core_spec_none.so
-%{_libdir}/%{name}/crypto_munge.so
-%{_libdir}/%{name}/crypto_openssl.so
+%{_libdir}/%{name}/cred_{munge,none}.so
%{_libdir}/%{name}/ext_sensors_none.so
-%{_libdir}/%{name}/gres_{gpu,mic,nic}.so
+%{_libdir}/%{name}/gres_{gpu,mic,mps,nic}.so
+%{_libdir}/%{name}/gpu_generic.so
%{_libdir}/%{name}/job_container_none.so
%{_libdir}/%{name}/job_submit_all_partitions.so
%{_libdir}/%{name}/job_submit_lua.so
@@ -452,7 +439,8 @@ rm -f %{buildroot}%{perl_archlib}/perllocal.pod
%{_libdir}/%{name}/proctrack_{cgroup,linuxproc,lua,pgid}.so
%{_libdir}/%{name}/route_{default,topology}.so
%{_libdir}/%{name}/sched_{backfill,builtin,hold}.so
-%{_libdir}/%{name}/select_{cons_res,linear,serial}.so
+%{_libdir}/%{name}/select_{cons_res,cons_tres,linear,serial}.so
+%{_libdir}/%{name}/site_factor_none.so
%{_libdir}/%{name}/slurmctld_nonstop.so
%{_libdir}/%{name}/switch_{generic,none}.so
%{_libdir}/%{name}/task_{affinity,cgroup,none}.so
@@ -523,7 +511,6 @@ rm -f %{buildroot}%{perl_archlib}/perllocal.pod
%files libs
%{_libdir}/libslurm.so.*
-%{_libdir}/libslurmdb.so.*
%{_libdir}/libslurmfull-*.so
# ---------
@@ -595,7 +582,7 @@ rm -f %{buildroot}%{perl_archlib}/perllocal.pod
%dir %{_docdir}/%{name}/contribs
%dir %{_docdir}/%{name}/contribs/lua
%{_docdir}/%{name}/contribs/README
-%{_docdir}/%{name}/contribs/lua/proctrack.lua
+%{_docdir}/%{name}/contribs/lua/*.lua
%{_bindir}/seff
%{_bindir}/sgather
%{_bindir}/sjobexitmod
@@ -605,6 +592,13 @@ rm -f %{buildroot}%{perl_archlib}/perllocal.pod
%{_mandir}/man1/sjobexitmod.1*
%{_mandir}/man1/sjstat.1*
+# ---------------
+# Slurm-nss_slurm
+# ---------------
+
+%files nss_slurm
+%{_libdir}/libnss_slurm.so.2
+
# --------------
# Slurm-openlava
# --------------
@@ -698,66 +692,93 @@ rm -f %{buildroot}%{perl_archlib}/perllocal.pod
%systemd_postun_with_restart slurmdbd.service
%changelog
-* Sun Jul 21 2019 Philip Kovacs <pkdevel(a)yahoo.com> - 18.08.8-2
+* Mon Oct 7 2019 Philip Kovacs <pkfed(a)fedoraproject.org> - 19.05.3-1
+- Release of 19.05.3
+
+* Sun Aug 25 2019 Zbigniew Jdrzejewski-Szmek <zbyszek(a)in.waw.pl> - 19.05.2-2
+- Rebuilt for hwloc-2.0
+
+* Tue Aug 13 2019 Philip Kovacs <pkfed(a)fedoraproject.org> - 19.05.2-1
+- Release of 19.05.2
+
+* Fri Jul 26 2019 Fedora Release Engineering <releng(a)fedoraproject.org> - 19.05.1-3
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
+
+* Sun Jul 21 2019 Philip Kovacs <pkfed(a)fedoraproject.org> - 19.05.1-2
- Create slurm-pmi and slurm-pmi-devel subpackages for pmi/pmi2 libs
- Remove rpm-generated pkgconfig files until upstream provides them
- Do not pull dependencies with pkgconfig unless package uses it
-* Mon Jul 15 2019 Philip Kovacs <pkdevel(a)yahoo.com> - 18.08.8-1
-- Release of 18.08.8
+* Mon Jul 15 2019 Philip Kovacs <pkfed(a)fedoraproject.org> - 19.05.1-1
+- Release of 19.05.1
- Closes security issue (CVE-2019-12838)
- Configure for UCX support on supported arches
-* Tue Jul 2 2019 Philip Kovacs <pkdevel(a)yahoo.com> - 18.08.7-3
+* Tue Jul 2 2019 Philip Kovacs <pkfed(a)fedoraproject.org> - 19.05.0-5
- Do not install slurm implementation of libpmi/pmi2 libraries
- in favor of the faster implementation provided by pmix
- Remove pmi environment module formerly used to select the slurm
- vs pmix implementations of libpmi/pmi2
-* Wed Jun 19 2019 Philip Kovacs <pkdevel(a)yahoo.com> - 18.08.7-2
+* Wed Jun 19 2019 Philip Kovacs <pkfed(a)fedoraproject.org> - 19.05.0-4
- Correct the configure for pmix
- Correct the slurm_pmix_soname patch
-- Use make_build macro instead of make
-- Use autotools commands instead of rpm macros
-* Fri Apr 12 2019 Philip Kovacs <pkdevel(a)yahoo.com> - 18.08.7-1
+* Wed Jun 19 2019 Philip Kovacs <pkfed(a)fedoraproject.org> - 19.05.0-3
+- Stop using autotools macros that were removed from rpm
+
+* Sun Jun 9 2019 Philip Kovacs <pkfed(a)fedoraproject.org> - 19.05.0-2
+- Exclude upstream-deprecated 32-bit architectures
+
+* Sun Jun 9 2019 Philip Kovacs <pkfed(a)fedoraproject.org> - 19.05.0-1
+- Release of 19.05.0
+- Added nss_plugin subpackage for optional nss plugin
+- Added patch to fix 19.05.0 testsuite
+- Adjusted cray patch to remove all cray, cray_aries plugins
+- Reflect all upstream plugin additions/deletions
+- Remove openssl build dependency
+
+* Thu May 30 2019 Jitka Plesnikova <jplesnik(a)redhat.com> - 18.08.7-2
+- Perl 5.30 rebuild
+
+* Fri Apr 12 2019 Philip Kovacs <pkfed(a)fedoraproject.org> - 18.08.7-1
- Release of 18.08.7
* Sat Mar 16 2019 Orion Poplawski <orion(a)nwra.com> - 18.08.6-2
- Rebuild for hdf5 1.10.5
-* Thu Mar 7 2019 Philip Kovacs <pkdevel(a)yahoo.com> - 18.08.6-1
+* Thu Mar 7 2019 Philip Kovacs <pkfed(a)fedoraproject.org> - 18.08.6-1
- Release of 18.08.6
* Sun Feb 17 2019 Igor Gnatenko <ignatenkobrain(a)fedoraproject.org> - 18.08.5-2
- Rebuild for readline 8.0
-* Thu Jan 31 2019 Philip Kovacs <pkdevel(a)yahoo.com> - 18.08.5-1
+* Thu Jan 31 2019 Philip Kovacs <pkfed(a)fedoraproject.org> - 18.08.5-1
- Release of 18.08.5
-* Thu Jan 31 2019 Philip Kovacs <pkdevel(a)yahoo.com> - 17.11.13-2
+* Thu Jan 31 2019 Philip Kovacs <pkfed(a)fedoraproject.org> - 17.11.13-2
- Fix build issue on 32-bit architectures
-* Wed Jan 30 2019 Philip Kovacs <pkdevel(a)yahoo.com> - 17.11.13-1
+* Wed Jan 30 2019 Philip Kovacs <pkfed(a)fedoraproject.org> - 17.11.13-1
- Release of 17.11.13
- Closes security issue CVE-2019-6438
-* Wed Oct 24 2018 Philip Kovacs <pkdevel(a)yahoo.com> - 17.11.12-1
+* Wed Oct 24 2018 Philip Kovacs <pkfed(a)fedoraproject.org> - 17.11.12-1
- Release of 17.11.12
-* Sat Oct 20 2018 Philip Kovacs <pkdevel(a)yahoo.com> - 17.11.11-1
+* Sat Oct 20 2018 Philip Kovacs <pkfed(a)fedoraproject.org> - 17.11.11-1
- Release of 17.11.11
* Thu Oct 11 2018 Yu Watanabe <watanabe.yu(a)gmail.com> - 17.11.10-1
- Release of 17.11.10
-* Fri Sep 28 2018 Philip Kovacs <pkdevel(a)yahoo.com> - 17.11.9-2
+* Fri Sep 28 2018 Philip Kovacs <pkfed(a)fedoraproject.org> - 17.11.9-2
- Release of 17.11.9-2 (new upstream tarball)
-* Fri Aug 10 2018 Philip Kovacs <pkdevel(a)yahoo.com> - 17.11.9-1
+* Fri Aug 10 2018 Philip Kovacs <pkfed(a)fedoraproject.org> - 17.11.9-1
- Release of 17.11.9
-* Fri Jul 20 2018 Philip Kovacs <pkdevel(a)yahoo.com> - 17.11.8-1
+* Fri Jul 20 2018 Philip Kovacs <pkfed(a)fedoraproject.org> - 17.11.8-1
- Release of 17.11.8
* Sat Jul 14 2018 Fedora Release Engineering <releng(a)fedoraproject.org> - 17.11.7-3
@@ -766,11 +787,11 @@ rm -f %{buildroot}%{perl_archlib}/perllocal.pod
* Wed Jun 27 2018 Jitka Plesnikova <jplesnik(a)redhat.com> - 17.11.7-2
- Perl 5.28 rebuild
-* Fri Jun 1 2018 Philip Kovacs <pkdevel(a)yahoo.com> - 17.11.7-1
+* Fri Jun 1 2018 Philip Kovacs <pkfed(a)fedoraproject.org> - 17.11.7-1
- Release of 17.11.7
- Closes security issue CVE-2018-10995
-* Sat May 12 2018 Philip Kovacs <pkdevel(a)yahoo.com> - 17.11.6-1
+* Sat May 12 2018 Philip Kovacs <pkfed(a)fedoraproject.org> - 17.11.6-1
- Release of 17.11.6
- Added patch to avoid building contribs/cray (Yu Watanabe)
- Added lz4 support via new BuildRequires (Yu Watanabe)
@@ -778,23 +799,23 @@ rm -f %{buildroot}%{perl_archlib}/perllocal.pod
with rdma-core-devel (Yu Watanabe)
- Updated package descriptions (Yu Watanabe)
-* Fri Mar 16 2018 Philip Kovacs <pkdevel(a)yahoo.com> - 17.11.5-1
+* Fri Mar 16 2018 Philip Kovacs <pkfed(a)fedoraproject.org> - 17.11.5-1
- Release of 17.11.5
- Closes security issue CVE-2018-7033
-* Sat Mar 3 2018 Philip Kovacs <pkdevel(a)yahoo.com> - 17.11.4-1
+* Sat Mar 3 2018 Philip Kovacs <pkfed(a)fedoraproject.org> - 17.11.4-1
- Release of 17.11.4
- Add perl-devel, python3 to build requirements
- Add patch to convert python references to python3
- Use LDFLAGS to disable -z now instaed of _hardened_ldflags
-* Thu Feb 15 2018 Philip Kovacs <pkdevel(a)yahoo.com> - 17.11.3-3
+* Thu Feb 15 2018 Philip Kovacs <pkfed(a)fedoraproject.org> - 17.11.3-3
- Add perl-interpreter to BuildRequires
-* Thu Feb 15 2018 Philip Kovacs <pkdevel(a)yahoo.com> - 17.11.3-2
+* Thu Feb 15 2018 Philip Kovacs <pkfed(a)fedoraproject.org> - 17.11.3-2
- Rebuild for libevent soname bump
-* Sat Feb 10 2018 Philip Kovacs <pkdevel(a)yahoo.com> - 17.11.3-1
+* Sat Feb 10 2018 Philip Kovacs <pkfed(a)fedoraproject.org> - 17.11.3-1
- Release of 17.11 series
- Re-aligned rpm packaging to be closer to upstream
- Enabled new slurm native X11 support using ssh2
@@ -808,7 +829,7 @@ rm -f %{buildroot}%{perl_archlib}/perllocal.pod
* Fri Feb 09 2018 Fedora Release Engineering <releng(a)fedoraproject.org> - 17.02.9-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild
-* Thu Nov 16 2017 Philip Kovacs <pkdevel(a)yahoo.com> - 17.02.9-3
+* Thu Nov 16 2017 Philip Kovacs <pkfed(a)fedoraproject.org> - 17.02.9-3
- Added patch to enable full relro builds and operation
- Added patch to link knl_generic plugin to libnuma if available
- Remove the following cray or bluegene-only plugins
@@ -816,27 +837,27 @@ rm -f %{buildroot}%{perl_archlib}/perllocal.pod
- Rename slurm_setuser to slurm-setuser
- Minor corrections to slurm.conf
-* Wed Nov 1 2017 Philip Kovacs <pkdevel(a)yahoo.com> - 17.02.9-2
+* Wed Nov 1 2017 Philip Kovacs <pkfed(a)fedoraproject.org> - 17.02.9-2
- Correct desktop categories for rpmgrill.desktop-lint
-* Wed Nov 1 2017 Philip Kovacs <pkdevel(a)yahoo.com> - 17.02.9-1
+* Wed Nov 1 2017 Philip Kovacs <pkfed(a)fedoraproject.org> - 17.02.9-1
- Version bump to close CVE-2017-15566
- Adjusted patches per closure of upstream bug #3942
- Added desktop categories per rpmgrill.desktop-lint
-* Wed Oct 25 2017 Philip Kovacs <pkdevel(a)yahoo.com> - 17.02.8-1
+* Wed Oct 25 2017 Philip Kovacs <pkfed(a)fedoraproject.org> - 17.02.8-1
- Version bump, patches adjusted
-* Thu Oct 5 2017 Philip Kovacs <pkdevel(a)yahoo.com> - 17.02.7-4
+* Thu Oct 5 2017 Philip Kovacs <pkfed(a)fedoraproject.org> - 17.02.7-4
- Patch changes per resolution of upstream bug #4101:
- salloc/sbatch/srun: must be root to use --uid/--gid options
- salloc: supplemental groups dropped after setuid
-* Thu Oct 5 2017 Philip Kovacs <pkdevel(a)yahoo.com> - 17.02.7-3
+* Thu Oct 5 2017 Philip Kovacs <pkfed(a)fedoraproject.org> - 17.02.7-3
- Added BuildRequires gcc and minor packaging conformance items
-* Sat Sep 16 2017 Philip Kovacs <pkdevel(a)yahoo.com> - 17.02.7-2
+* Sat Sep 16 2017 Philip Kovacs <pkfed(a)fedoraproject.org> - 17.02.7-2
- Removed unneeded Requires(pre)
-* Thu Sep 14 2017 Philip Kovacs <pkdevel(a)yahoo.com> - 17.02.7-1
+* Thu Sep 14 2017 Philip Kovacs <pkfed(a)fedoraproject.org> - 17.02.7-1
- Packaging for Fedora
diff --git a/slurm_doc_fix.patch b/slurm_doc_fix.patch
deleted file mode 100644
index ad7fdcb..0000000
--- a/slurm_doc_fix.patch
+++ /dev/null
@@ -1,45 +0,0 @@
-diff --git a/doc/man/man5/burst_buffer.conf.5 b/doc/man/man5/burst_buffer.conf.5
-index 90f8e94fc7..efd76aa999 100644
---- a/doc/man/man5/burst_buffer.conf.5
-+++ b/doc/man/man5/burst_buffer.conf.5
-@@ -31,18 +31,18 @@ The configuration parameters available include:
- \fBAllowUsers\fR
- Comma separated list of user names and/or IDs permitted to use burst buffers.
- The options \fBAllowUsers\fR and \fBDenyUsers\fR can not both be specified.
--By default all users are permitted to use burst buffers.
-+By default all users are permitted to use burst buffers. Possible future
-+future enhancement for generic plugin.
-
--.\" Possible future enhancement for generic plugin
--.\" .TP
--.\" \fBAltPool\fR
--.\" The AltPool value consists of a comma separated list of alternate pools of
--.\" resources, each of which includes a name separated by a colon and a numeric
--.\" value.
--.\" The numeric value can include a suffix of "k", "m", "g", "t" and "p" which
--.\" multiplies the numeric value by 1,024, 1,048,576, 1,073,741,824 etc.
--.\" The numeric value is a 64-bit value.
--.\" for example, "AltPool=test:20g,small:4g
-+.TP
-+\fBAltPool\fR
-+The AltPool value consists of a comma separated list of alternate pools of
-+resources, each of which includes a name separated by a colon and a numeric
-+value.
-+The numeric value can include a suffix of "k", "m", "g", "t" and "p" which
-+multiplies the numeric value by 1,024, 1,048,576, 1,073,741,824 etc.
-+The numeric value is a 64-bit value.
-+for example, "AltPool=test:20g,small:4g
-
- .TP
- \fBCreateBuffer\fR
-@@ -206,8 +206,8 @@ By default there is a 5 second timeout for the validation operations.
- AllowUsers=alan,brenda
- .br
- PrivateData=true
--.\" .br
--.\" Gres=nodes:10,other:20
-+.br
-+Gres=nodes:10,other:20
- .br
- #
- .br
diff --git a/slurm_libslurmfull_version.patch b/slurm_libslurmfull_version.patch
index d5362e5..26efdb9 100644
--- a/slurm_libslurmfull_version.patch
+++ b/slurm_libslurmfull_version.patch
@@ -1,6 +1,8 @@
+diff --git a/src/api/Makefile.am b/src/api/Makefile.am
+index d7e9d171cd..93ad848aeb 100644
--- a/src/api/Makefile.am
+++ b/src/api/Makefile.am
-@@ -44,12 +44,7 @@
+@@ -44,12 +44,7 @@ current = $(SLURM_API_CURRENT)
age = $(SLURM_API_AGE)
rev = $(SLURM_API_REVISION)
@@ -14,7 +16,7 @@
# BUILT_SOURCES tells automake that when "make" is called, these targets
# need to be built before anything else.
-@@ -137,7 +132,7 @@
+@@ -157,7 +152,7 @@ libslurmfull_la_SOURCES =
libslurmfull_la_LIBADD = $(convenience_libs)
libslurmfull_la_LDFLAGS = \
$(LIB_LDFLAGS) \
diff --git a/slurm_pmix_soname.patch b/slurm_pmix_soname.patch
index cb5f88e..c6c2449 100644
--- a/slurm_pmix_soname.patch
+++ b/slurm_pmix_soname.patch
@@ -1,17 +1,17 @@
diff --git a/src/plugins/mpi/pmix/mpi_pmix.c b/src/plugins/mpi/pmix/mpi_pmix.c
-index bbb947616c..b284af63f2 100644
+index c4bdeafc6b..eda8b39e0a 100644
--- a/src/plugins/mpi/pmix/mpi_pmix.c
+++ b/src/plugins/mpi/pmix/mpi_pmix.c
@@ -89,6 +89,8 @@ const uint32_t plugin_version = SLURM_VERSION_NUMBER;
void *libpmix_plug = NULL;
-+static const char *pmix_libraries[] = { "libpmix.so", "libpmix.so.2", "libpmix.so.1" };
++static const char *pmix_libraries[] = { "libpmix.so", "libpmix.so.2" };
+
static void _libpmix_close(void *lib_plug)
{
xassert(lib_plug);
-@@ -99,15 +101,20 @@ static void *_libpmix_open(void)
+@@ -99,6 +101,7 @@ static void *_libpmix_open(void)
{
void *lib_plug = NULL;
char *full_path = NULL;
@@ -19,24 +19,22 @@ index bbb947616c..b284af63f2 100644
#ifdef PMIXP_V1_LIBPATH
xstrfmtcat(full_path, "%s/", PMIXP_V1_LIBPATH);
- #elif defined PMIXP_V2_LIBPATH
- xstrfmtcat(full_path, "%s/", PMIXP_V2_LIBPATH);
- #endif
-- xstrfmtcat(full_path, "libpmix.so");
-- lib_plug = dlopen(full_path, RTLD_LAZY | RTLD_GLOBAL);
-- xfree(full_path);
-+
+@@ -112,6 +115,13 @@ static void *_libpmix_open(void)
+ lib_plug = dlopen(full_path, RTLD_LAZY | RTLD_GLOBAL);
+ xfree(full_path);
+
+ while (!lib_plug && (sz < sizeof(pmix_libraries)/sizeof(pmix_libraries[0]))) {
+ xstrfmtcat(full_path, "%s", pmix_libraries[sz]);
+ lib_plug = dlopen(full_path, RTLD_LAZY | RTLD_GLOBAL);
+ xfree(full_path);
+ ++sz;
+ }
-
++
if (lib_plug && (HAVE_PMIX_VER != pmixp_lib_get_version())) {
PMIXP_ERROR("pmi/pmix: incorrect PMIx library version loaded %d was loaded, required %d version",
+ pmixp_lib_get_version(), (int)HAVE_PMIX_VER);
diff --git a/src/plugins/mpi/pmix/pmixp_dconn_ucx.c b/src/plugins/mpi/pmix/pmixp_dconn_ucx.c
-index f6c91adc93..650fb7d5ff 100644
+index f6c91adc93..506a18e3c1 100644
--- a/src/plugins/mpi/pmix/pmixp_dconn_ucx.c
+++ b/src/plugins/mpi/pmix/pmixp_dconn_ucx.c
@@ -140,6 +140,8 @@ static struct io_operations _progress_ops = {
@@ -48,7 +46,7 @@ index f6c91adc93..650fb7d5ff 100644
static void *_ucx_init(int nodeid, pmixp_p2p_data_t direct_hdr);
static void _ucx_fini(void *_priv);
static int _ucx_connect(void *_priv, void *ep_data, size_t ep_len,
-@@ -161,15 +163,20 @@ static int _load_ucx_lib()
+@@ -161,6 +163,8 @@ static int _load_ucx_lib()
setenv("UCX_MEM_MALLOC_RELOC", "no", 1);
setenv("UCX_MEM_EVENTS", "no", 1);
@@ -57,12 +55,10 @@ index f6c91adc93..650fb7d5ff 100644
#ifdef PMIXP_UCX_LIBPATH
/* If this Slurm build doesn't allow RPATH's
* try to open library by it's full path that
- * we have from autoconf
- */
- char *full_path = NULL;
-- xstrfmtcat(full_path, "%s/libucp.so", PMIXP_UCX_LIBPATH);
-- _ucx_lib_handler = dlopen(full_path, RTLD_LAZY | RTLD_GLOBAL);
-- xfree(full_path);
+@@ -170,6 +174,12 @@ static int _load_ucx_lib()
+ xstrfmtcat(full_path, "%s/libucp.so", PMIXP_UCX_LIBPATH);
+ _ucx_lib_handler = dlopen(full_path, RTLD_LAZY | RTLD_GLOBAL);
+ xfree(full_path);
+ while (!_ucx_lib_handler && (sz < sizeof(ucx_libraries)/sizeof(ucx_libraries[0]))) {
+ xstrfmtcat(full_path, "%s/%s", PMIXP_UCX_LIBPATH, ucx_libraries[sz]);
+ _ucx_lib_handler = dlopen(full_path, RTLD_LAZY | RTLD_GLOBAL);
@@ -72,11 +68,10 @@ index f6c91adc93..650fb7d5ff 100644
if (_ucx_lib_handler) {
/* successful, exit now */
return SLURM_SUCCESS;
-@@ -178,7 +185,13 @@ static int _load_ucx_lib()
- * known by dynamic linker.
+@@ -179,6 +189,13 @@ static int _load_ucx_lib()
*/
#endif
-- _ucx_lib_handler = dlopen("libucp.so", RTLD_LAZY | RTLD_GLOBAL);
+ _ucx_lib_handler = dlopen("libucp.so", RTLD_LAZY | RTLD_GLOBAL);
+ sz = 0;
+ while (!_ucx_lib_handler && (sz < sizeof(ucx_libraries)/sizeof(ucx_libraries[0]))) {
+ xstrfmtcat(full_path, "%s", ucx_libraries[sz]);
diff --git a/slurm_to_python3.patch b/slurm_to_python3.patch
index fdfcbe8..c60e941 100644
--- a/slurm_to_python3.patch
+++ b/slurm_to_python3.patch
@@ -38,16 +38,6 @@ index 54909096b9..93433d6fa3 100755
import re
import sys
-diff --git a/testsuite/expect/driveregress.py b/testsuite/expect/driveregress.py
-index 8019615953..4e7eb7ca0f 100755
---- a/testsuite/expect/driveregress.py
-+++ b/testsuite/expect/driveregress.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python3
-
- ############################################################################
- # Copyright (C) 2011-2013 SchedMD LLC
diff --git a/testsuite/expect/regression.py b/testsuite/expect/regression.py
index 938aecc154..ea64c7cce0 100755
--- a/testsuite/expect/regression.py
diff --git a/slurm_without_cray.patch b/slurm_without_cray.patch
index 7ec7ecc..ce4aa86 100644
--- a/slurm_without_cray.patch
+++ b/slurm_without_cray.patch
@@ -1,10 +1,104 @@
diff --git a/contribs/Makefile.am b/contribs/Makefile.am
-index 24ab9de7cc..087262c347 100644
+index da96aa070d..2a2d1f2c82 100644
--- a/contribs/Makefile.am
+++ b/contribs/Makefile.am
@@ -1,4 +1,4 @@
--SUBDIRS = cray lua mic openlava pam pam_slurm_adopt perlapi pmi pmi2 seff sgather sgi sjobexit torque
-+SUBDIRS = lua mic openlava pam pam_slurm_adopt perlapi pmi pmi2 seff sgather sgi sjobexit torque
+-SUBDIRS = cray lua mic nss_slurm openlava pam pam_slurm_adopt perlapi pmi pmi2 seff sgather sgi sjobexit torque
++SUBDIRS = lua mic nss_slurm openlava pam pam_slurm_adopt perlapi pmi pmi2 seff sgather sgi sjobexit torque
EXTRA_DIST = \
- gcp \
+ make-3.81.slurm.patch \
+diff --git a/src/plugins/acct_gather_energy/Makefile.am b/src/plugins/acct_gather_energy/Makefile.am
+index 50c4fd36a2..c826387219 100644
+--- a/src/plugins/acct_gather_energy/Makefile.am
++++ b/src/plugins/acct_gather_energy/Makefile.am
+@@ -1,3 +1,3 @@
+ # Makefile for accounting gather energy plugins
+
+-SUBDIRS = cray_aries rapl ibmaem ipmi none xcc
++SUBDIRS = rapl ibmaem ipmi none xcc
+diff --git a/src/plugins/core_spec/Makefile.am b/src/plugins/core_spec/Makefile.am
+index 44b1ed67c0..f06bc541d7 100644
+--- a/src/plugins/core_spec/Makefile.am
++++ b/src/plugins/core_spec/Makefile.am
+@@ -1,3 +1,3 @@
+ # Makefile for core specialization plugins
+
+-SUBDIRS = cray_aries none
++SUBDIRS = none
+diff --git a/src/plugins/job_container/Makefile.am b/src/plugins/job_container/Makefile.am
+index 8e1960a456..529a9d581d 100644
+--- a/src/plugins/job_container/Makefile.am
++++ b/src/plugins/job_container/Makefile.am
+@@ -1,3 +1,3 @@
+ # Makefile for job_container plugins
+
+-SUBDIRS = cncu none
++SUBDIRS = none
+diff --git a/src/plugins/job_submit/Makefile.am b/src/plugins/job_submit/Makefile.am
+index e393bcfb1c..b98cf2e000 100644
+--- a/src/plugins/job_submit/Makefile.am
++++ b/src/plugins/job_submit/Makefile.am
+@@ -2,7 +2,6 @@
+
+ SUBDIRS = \
+ all_partitions \
+- cray_aries \
+ defaults \
+ logging \
+ lua \
+diff --git a/src/plugins/node_features/Makefile.am b/src/plugins/node_features/Makefile.am
+index f5ef036303..d955c51ba1 100644
+--- a/src/plugins/node_features/Makefile.am
++++ b/src/plugins/node_features/Makefile.am
+@@ -1,3 +1,3 @@
+ # Makefile for node_features plugins
+
+-SUBDIRS = knl_cray knl_generic
++SUBDIRS = knl_generic
+diff --git a/src/plugins/power/Makefile.am b/src/plugins/power/Makefile.am
+index ccde44c322..c6171740c1 100644
+--- a/src/plugins/power/Makefile.am
++++ b/src/plugins/power/Makefile.am
+@@ -1,3 +1,3 @@
+ # Makefile for power management plugins
+
+-SUBDIRS = common cray_aries none
++SUBDIRS = common none
+diff --git a/src/plugins/select/Makefile.am b/src/plugins/select/Makefile.am
+index 09fdfd2313..570af23c4a 100644
+--- a/src/plugins/select/Makefile.am
++++ b/src/plugins/select/Makefile.am
+@@ -1,7 +1,7 @@
+ # Makefile for node selection plugins
+
+ # NOTE: other must be in the list before cray_aries lest the build break
+-SUBDIRS = other cons_res cons_tres cray_aries linear
++SUBDIRS = other cons_res cons_tres linear
+
+ # Each plugin here needs a plugin_id, here are the currect plug_ids
+ # for each plugin.
+diff --git a/src/plugins/switch/Makefile.am b/src/plugins/switch/Makefile.am
+index c58f51329d..39a2b3eb7f 100644
+--- a/src/plugins/switch/Makefile.am
++++ b/src/plugins/switch/Makefile.am
+@@ -1,7 +1,3 @@
+ # Makefile for switch plugins
+
+ SUBDIRS = generic none
+-
+-if WITH_SWITCH_CRAY_ARIES
+-SUBDIRS += cray_aries
+-endif
+diff --git a/src/plugins/task/Makefile.am b/src/plugins/task/Makefile.am
+index 8d2a36eb68..607af1cb7c 100644
+--- a/src/plugins/task/Makefile.am
++++ b/src/plugins/task/Makefile.am
+@@ -1,6 +1,6 @@
+ # Makefile for task plugins
+
+-SUBDIRS = cray_aries none
++SUBDIRS = none
+
+ if HAVE_SCHED_SETAFFINITY
+ SUBDIRS += affinity
diff --git a/sources b/sources
index 873076a..ccacd64 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-SHA512 (slurm-18.08.8.tar.bz2) = a5557cd043c2a48e652cbbca993420a756ecda80e40ed4ca2f55733050cf4b04477cfb5c8059db67168f5fa6d3fb93ac2c92f8b52b079971f634bd1956173ea0
+SHA512 (slurm-19.05.3-2.tar.bz2) = 15d63f1ba693458b220ece5512210f1dba52273946809b338e33d684b9daadecd3cc77fda84c1b3bf8b03bc0fe8b8be0f429a96a1bf72a8b5c8cf169e0e1f5bb
commit 9262a5d954568136b06c85f60e817cb7681a6cfc
Author: Philip Kovacs <pkfed(a)fedoraproject.org>
Date: Mon Oct 7 15:01:09 2019 -0400
Release of 19.05.3
diff --git a/slurm.spec b/slurm.spec
index b2eff64..db3e301 100644
--- a/slurm.spec
+++ b/slurm.spec
@@ -1,5 +1,5 @@
# Upstream tarballs use an additional release number
-%global ups_rel 1
+%global ups_rel 2
%if "%{ups_rel}" == "1"
%global name_version %{name}-%{version}
@@ -14,12 +14,9 @@
%bcond_with ucx
%endif
-# Allow linkage with undefined symbols (disable -z,defs)
-%undefine _strict_symbol_defs_build
-
Name: slurm
-Version: 19.05.2
-Release: 2%{?dist}
+Version: 19.05.3
+Release: 1%{?dist}
Summary: Simple Linux Utility for Resource Management
License: GPLv2 and BSD
URL: https://slurm.schedmd.com/
@@ -223,14 +220,7 @@ Requires: %{name}-perlapi%{?_isa} = %{version}-%{release}
Torque wrapper scripts used for helping migrate from Torque/PBS to Slurm.
%prep
-%setup -q -n %{name_version}
-%patch0 -p1
-%patch10 -p1
-%patch11 -p1
-%patch12 -p1
-%patch20 -p1
-%patch21 -p1
-%patch22 -p1
+%autosetup -p1 -n %{name_version}
cp %SOURCE1 etc/slurm.conf
cp %SOURCE1 etc/slurm.conf.example
cp %SOURCE2 etc/slurmdbd.conf
@@ -702,42 +692,45 @@ rm -f %{buildroot}%{perl_archlib}/perllocal.pod
%systemd_postun_with_restart slurmdbd.service
%changelog
+* Mon Oct 7 2019 Philip Kovacs <pkfed(a)fedoraproject.org> - 19.05.3-1
+- Release of 19.05.3
+
* Sun Aug 25 2019 Zbigniew Jdrzejewski-Szmek <zbyszek(a)in.waw.pl> - 19.05.2-2
- Rebuilt for hwloc-2.0
-* Tue Aug 13 2019 Philip Kovacs <pkdevel(a)yahoo.com> - 19.05.2-1
+* Tue Aug 13 2019 Philip Kovacs <pkfed(a)fedoraproject.org> - 19.05.2-1
- Release of 19.05.2
* Fri Jul 26 2019 Fedora Release Engineering <releng(a)fedoraproject.org> - 19.05.1-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
-* Sun Jul 21 2019 Philip Kovacs <pkdevel(a)yahoo.com> - 19.05.1-2
+* Sun Jul 21 2019 Philip Kovacs <pkfed(a)fedoraproject.org> - 19.05.1-2
- Create slurm-pmi and slurm-pmi-devel subpackages for pmi/pmi2 libs
- Remove rpm-generated pkgconfig files until upstream provides them
- Do not pull dependencies with pkgconfig unless package uses it
-* Mon Jul 15 2019 Philip Kovacs <pkdevel(a)yahoo.com> - 19.05.1-1
+* Mon Jul 15 2019 Philip Kovacs <pkfed(a)fedoraproject.org> - 19.05.1-1
- Release of 19.05.1
- Closes security issue (CVE-2019-12838)
- Configure for UCX support on supported arches
-* Tue Jul 2 2019 Philip Kovacs <pkdevel(a)yahoo.com> - 19.05.0-5
+* Tue Jul 2 2019 Philip Kovacs <pkfed(a)fedoraproject.org> - 19.05.0-5
- Do not install slurm implementation of libpmi/pmi2 libraries
- in favor of the faster implementation provided by pmix
- Remove pmi environment module formerly used to select the slurm
- vs pmix implementations of libpmi/pmi2
-* Wed Jun 19 2019 Philip Kovacs <pkdevel(a)yahoo.com> - 19.05.0-4
+* Wed Jun 19 2019 Philip Kovacs <pkfed(a)fedoraproject.org> - 19.05.0-4
- Correct the configure for pmix
- Correct the slurm_pmix_soname patch
-* Wed Jun 19 2019 Philip Kovacs <pkdevel(a)yahoo.com> - 19.05.0-3
+* Wed Jun 19 2019 Philip Kovacs <pkfed(a)fedoraproject.org> - 19.05.0-3
- Stop using autotools macros that were removed from rpm
-* Sun Jun 9 2019 Philip Kovacs <pkdevel(a)yahoo.com> - 19.05.0-2
+* Sun Jun 9 2019 Philip Kovacs <pkfed(a)fedoraproject.org> - 19.05.0-2
- Exclude upstream-deprecated 32-bit architectures
-* Sun Jun 9 2019 Philip Kovacs <pkdevel(a)yahoo.com> - 19.05.0-1
+* Sun Jun 9 2019 Philip Kovacs <pkfed(a)fedoraproject.org> - 19.05.0-1
- Release of 19.05.0
- Added nss_plugin subpackage for optional nss plugin
- Added patch to fix 19.05.0 testsuite
@@ -748,44 +741,44 @@ rm -f %{buildroot}%{perl_archlib}/perllocal.pod
* Thu May 30 2019 Jitka Plesnikova <jplesnik(a)redhat.com> - 18.08.7-2
- Perl 5.30 rebuild
-* Fri Apr 12 2019 Philip Kovacs <pkdevel(a)yahoo.com> - 18.08.7-1
+* Fri Apr 12 2019 Philip Kovacs <pkfed(a)fedoraproject.org> - 18.08.7-1
- Release of 18.08.7
* Sat Mar 16 2019 Orion Poplawski <orion(a)nwra.com> - 18.08.6-2
- Rebuild for hdf5 1.10.5
-* Thu Mar 7 2019 Philip Kovacs <pkdevel(a)yahoo.com> - 18.08.6-1
+* Thu Mar 7 2019 Philip Kovacs <pkfed(a)fedoraproject.org> - 18.08.6-1
- Release of 18.08.6
* Sun Feb 17 2019 Igor Gnatenko <ignatenkobrain(a)fedoraproject.org> - 18.08.5-2
- Rebuild for readline 8.0
-* Thu Jan 31 2019 Philip Kovacs <pkdevel(a)yahoo.com> - 18.08.5-1
+* Thu Jan 31 2019 Philip Kovacs <pkfed(a)fedoraproject.org> - 18.08.5-1
- Release of 18.08.5
-* Thu Jan 31 2019 Philip Kovacs <pkdevel(a)yahoo.com> - 17.11.13-2
+* Thu Jan 31 2019 Philip Kovacs <pkfed(a)fedoraproject.org> - 17.11.13-2
- Fix build issue on 32-bit architectures
-* Wed Jan 30 2019 Philip Kovacs <pkdevel(a)yahoo.com> - 17.11.13-1
+* Wed Jan 30 2019 Philip Kovacs <pkfed(a)fedoraproject.org> - 17.11.13-1
- Release of 17.11.13
- Closes security issue CVE-2019-6438
-* Wed Oct 24 2018 Philip Kovacs <pkdevel(a)yahoo.com> - 17.11.12-1
+* Wed Oct 24 2018 Philip Kovacs <pkfed(a)fedoraproject.org> - 17.11.12-1
- Release of 17.11.12
-* Sat Oct 20 2018 Philip Kovacs <pkdevel(a)yahoo.com> - 17.11.11-1
+* Sat Oct 20 2018 Philip Kovacs <pkfed(a)fedoraproject.org> - 17.11.11-1
- Release of 17.11.11
* Thu Oct 11 2018 Yu Watanabe <watanabe.yu(a)gmail.com> - 17.11.10-1
- Release of 17.11.10
-* Fri Sep 28 2018 Philip Kovacs <pkdevel(a)yahoo.com> - 17.11.9-2
+* Fri Sep 28 2018 Philip Kovacs <pkfed(a)fedoraproject.org> - 17.11.9-2
- Release of 17.11.9-2 (new upstream tarball)
-* Fri Aug 10 2018 Philip Kovacs <pkdevel(a)yahoo.com> - 17.11.9-1
+* Fri Aug 10 2018 Philip Kovacs <pkfed(a)fedoraproject.org> - 17.11.9-1
- Release of 17.11.9
-* Fri Jul 20 2018 Philip Kovacs <pkdevel(a)yahoo.com> - 17.11.8-1
+* Fri Jul 20 2018 Philip Kovacs <pkfed(a)fedoraproject.org> - 17.11.8-1
- Release of 17.11.8
* Sat Jul 14 2018 Fedora Release Engineering <releng(a)fedoraproject.org> - 17.11.7-3
@@ -794,11 +787,11 @@ rm -f %{buildroot}%{perl_archlib}/perllocal.pod
* Wed Jun 27 2018 Jitka Plesnikova <jplesnik(a)redhat.com> - 17.11.7-2
- Perl 5.28 rebuild
-* Fri Jun 1 2018 Philip Kovacs <pkdevel(a)yahoo.com> - 17.11.7-1
+* Fri Jun 1 2018 Philip Kovacs <pkfed(a)fedoraproject.org> - 17.11.7-1
- Release of 17.11.7
- Closes security issue CVE-2018-10995
-* Sat May 12 2018 Philip Kovacs <pkdevel(a)yahoo.com> - 17.11.6-1
+* Sat May 12 2018 Philip Kovacs <pkfed(a)fedoraproject.org> - 17.11.6-1
- Release of 17.11.6
- Added patch to avoid building contribs/cray (Yu Watanabe)
- Added lz4 support via new BuildRequires (Yu Watanabe)
@@ -806,23 +799,23 @@ rm -f %{buildroot}%{perl_archlib}/perllocal.pod
with rdma-core-devel (Yu Watanabe)
- Updated package descriptions (Yu Watanabe)
-* Fri Mar 16 2018 Philip Kovacs <pkdevel(a)yahoo.com> - 17.11.5-1
+* Fri Mar 16 2018 Philip Kovacs <pkfed(a)fedoraproject.org> - 17.11.5-1
- Release of 17.11.5
- Closes security issue CVE-2018-7033
-* Sat Mar 3 2018 Philip Kovacs <pkdevel(a)yahoo.com> - 17.11.4-1
+* Sat Mar 3 2018 Philip Kovacs <pkfed(a)fedoraproject.org> - 17.11.4-1
- Release of 17.11.4
- Add perl-devel, python3 to build requirements
- Add patch to convert python references to python3
- Use LDFLAGS to disable -z now instaed of _hardened_ldflags
-* Thu Feb 15 2018 Philip Kovacs <pkdevel(a)yahoo.com> - 17.11.3-3
+* Thu Feb 15 2018 Philip Kovacs <pkfed(a)fedoraproject.org> - 17.11.3-3
- Add perl-interpreter to BuildRequires
-* Thu Feb 15 2018 Philip Kovacs <pkdevel(a)yahoo.com> - 17.11.3-2
+* Thu Feb 15 2018 Philip Kovacs <pkfed(a)fedoraproject.org> - 17.11.3-2
- Rebuild for libevent soname bump
-* Sat Feb 10 2018 Philip Kovacs <pkdevel(a)yahoo.com> - 17.11.3-1
+* Sat Feb 10 2018 Philip Kovacs <pkfed(a)fedoraproject.org> - 17.11.3-1
- Release of 17.11 series
- Re-aligned rpm packaging to be closer to upstream
- Enabled new slurm native X11 support using ssh2
@@ -836,7 +829,7 @@ rm -f %{buildroot}%{perl_archlib}/perllocal.pod
* Fri Feb 09 2018 Fedora Release Engineering <releng(a)fedoraproject.org> - 17.02.9-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild
-* Thu Nov 16 2017 Philip Kovacs <pkdevel(a)yahoo.com> - 17.02.9-3
+* Thu Nov 16 2017 Philip Kovacs <pkfed(a)fedoraproject.org> - 17.02.9-3
- Added patch to enable full relro builds and operation
- Added patch to link knl_generic plugin to libnuma if available
- Remove the following cray or bluegene-only plugins
@@ -844,27 +837,27 @@ rm -f %{buildroot}%{perl_archlib}/perllocal.pod
- Rename slurm_setuser to slurm-setuser
- Minor corrections to slurm.conf
-* Wed Nov 1 2017 Philip Kovacs <pkdevel(a)yahoo.com> - 17.02.9-2
+* Wed Nov 1 2017 Philip Kovacs <pkfed(a)fedoraproject.org> - 17.02.9-2
- Correct desktop categories for rpmgrill.desktop-lint
-* Wed Nov 1 2017 Philip Kovacs <pkdevel(a)yahoo.com> - 17.02.9-1
+* Wed Nov 1 2017 Philip Kovacs <pkfed(a)fedoraproject.org> - 17.02.9-1
- Version bump to close CVE-2017-15566
- Adjusted patches per closure of upstream bug #3942
- Added desktop categories per rpmgrill.desktop-lint
-* Wed Oct 25 2017 Philip Kovacs <pkdevel(a)yahoo.com> - 17.02.8-1
+* Wed Oct 25 2017 Philip Kovacs <pkfed(a)fedoraproject.org> - 17.02.8-1
- Version bump, patches adjusted
-* Thu Oct 5 2017 Philip Kovacs <pkdevel(a)yahoo.com> - 17.02.7-4
+* Thu Oct 5 2017 Philip Kovacs <pkfed(a)fedoraproject.org> - 17.02.7-4
- Patch changes per resolution of upstream bug #4101:
- salloc/sbatch/srun: must be root to use --uid/--gid options
- salloc: supplemental groups dropped after setuid
-* Thu Oct 5 2017 Philip Kovacs <pkdevel(a)yahoo.com> - 17.02.7-3
+* Thu Oct 5 2017 Philip Kovacs <pkfed(a)fedoraproject.org> - 17.02.7-3
- Added BuildRequires gcc and minor packaging conformance items
-* Sat Sep 16 2017 Philip Kovacs <pkdevel(a)yahoo.com> - 17.02.7-2
+* Sat Sep 16 2017 Philip Kovacs <pkfed(a)fedoraproject.org> - 17.02.7-2
- Removed unneeded Requires(pre)
-* Thu Sep 14 2017 Philip Kovacs <pkdevel(a)yahoo.com> - 17.02.7-1
+* Thu Sep 14 2017 Philip Kovacs <pkfed(a)fedoraproject.org> - 17.02.7-1
- Packaging for Fedora
diff --git a/sources b/sources
index d421ff2..ccacd64 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-SHA512 (slurm-19.05.2.tar.bz2) = 3b9ae09b52503f15849fec50026855207c1e2de3a2a179cc5030de7c5e3c27f8beccd06c31562564099c5f8703148ee31ed9ccd3e0d722291a23c8a723ca06aa
+SHA512 (slurm-19.05.3-2.tar.bz2) = 15d63f1ba693458b220ece5512210f1dba52273946809b338e33d684b9daadecd3cc77fda84c1b3bf8b03bc0fe8b8be0f429a96a1bf72a8b5c8cf169e0e1f5bb
commit 83b6c314d6716e5938e9b87f2fafa7d175d6e0ca
Author: Zbigniew Jdrzejewski-Szmek <zbyszek(a)in.waw.pl>
Date: Sun Aug 25 15:15:21 2019 +0200
Rebuilt for hwloc-2.0
diff --git a/slurm.spec b/slurm.spec
index 3007f86..b2eff64 100644
--- a/slurm.spec
+++ b/slurm.spec
@@ -19,7 +19,7 @@
Name: slurm
Version: 19.05.2
-Release: 1%{?dist}
+Release: 2%{?dist}
Summary: Simple Linux Utility for Resource Management
License: GPLv2 and BSD
URL: https://slurm.schedmd.com/
@@ -702,6 +702,9 @@ rm -f %{buildroot}%{perl_archlib}/perllocal.pod
%systemd_postun_with_restart slurmdbd.service
%changelog
+* Sun Aug 25 2019 Zbigniew Jdrzejewski-Szmek <zbyszek(a)in.waw.pl> - 19.05.2-2
+- Rebuilt for hwloc-2.0
+
* Tue Aug 13 2019 Philip Kovacs <pkdevel(a)yahoo.com> - 19.05.2-1
- Release of 19.05.2
commit c00dbe5289c19f59fc44fb83b43ee3ec8593f43e
Author: Philip Kovacs <pkdevel(a)yahoo.com>
Date: Tue Aug 13 18:25:04 2019 -0400
Release of 19.05.2
diff --git a/.rpmlint b/.rpmlint
deleted file mode 100644
index 5aca11b..0000000
--- a/.rpmlint
+++ /dev/null
@@ -1,9 +0,0 @@
-from Config import *
-addFilter("E: shared-lib-without-dependency-information")
-addFilter("E: missing-dependency-to-logrotate")
-addFilter("W: manual-page-warning")
-addFilter("W: no-documentation")
-addFilter("W: no-manual-page-for-binary")
-addFilter("W: non-conffile-in-etc")
-addFilter("W: shared-lib-calls-exit")
-addFilter("W: spelling-error")
diff --git a/slurm.rpmlintrc b/slurm.rpmlintrc
new file mode 100644
index 0000000..24fde8a
--- /dev/null
+++ b/slurm.rpmlintrc
@@ -0,0 +1,8 @@
+addFilter("E: shared-lib-without-dependency-information")
+addFilter("E: missing-dependency-to-logrotate")
+addFilter("W: manual-page-warning")
+addFilter("W: no-documentation")
+addFilter("W: no-manual-page-for-binary")
+addFilter("W: non-conffile-in-etc")
+addFilter("W: shared-lib-calls-exit")
+addFilter("W: spelling-error")
diff --git a/slurm.spec b/slurm.spec
index 20c73b1..3007f86 100644
--- a/slurm.spec
+++ b/slurm.spec
@@ -1,5 +1,5 @@
# Upstream tarballs use an additional release number
-%global ups_rel 2
+%global ups_rel 1
%if "%{ups_rel}" == "1"
%global name_version %{name}-%{version}
@@ -18,8 +18,8 @@
%undefine _strict_symbol_defs_build
Name: slurm
-Version: 19.05.1
-Release: 3%{?dist}
+Version: 19.05.2
+Release: 1%{?dist}
Summary: Simple Linux Utility for Resource Management
License: GPLv2 and BSD
URL: https://slurm.schedmd.com/
@@ -702,6 +702,9 @@ rm -f %{buildroot}%{perl_archlib}/perllocal.pod
%systemd_postun_with_restart slurmdbd.service
%changelog
+* Tue Aug 13 2019 Philip Kovacs <pkdevel(a)yahoo.com> - 19.05.2-1
+- Release of 19.05.2
+
* Fri Jul 26 2019 Fedora Release Engineering <releng(a)fedoraproject.org> - 19.05.1-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
diff --git a/slurm_pmix_soname.patch b/slurm_pmix_soname.patch
index cb5f88e..c6c2449 100644
--- a/slurm_pmix_soname.patch
+++ b/slurm_pmix_soname.patch
@@ -1,17 +1,17 @@
diff --git a/src/plugins/mpi/pmix/mpi_pmix.c b/src/plugins/mpi/pmix/mpi_pmix.c
-index bbb947616c..b284af63f2 100644
+index c4bdeafc6b..eda8b39e0a 100644
--- a/src/plugins/mpi/pmix/mpi_pmix.c
+++ b/src/plugins/mpi/pmix/mpi_pmix.c
@@ -89,6 +89,8 @@ const uint32_t plugin_version = SLURM_VERSION_NUMBER;
void *libpmix_plug = NULL;
-+static const char *pmix_libraries[] = { "libpmix.so", "libpmix.so.2", "libpmix.so.1" };
++static const char *pmix_libraries[] = { "libpmix.so", "libpmix.so.2" };
+
static void _libpmix_close(void *lib_plug)
{
xassert(lib_plug);
-@@ -99,15 +101,20 @@ static void *_libpmix_open(void)
+@@ -99,6 +101,7 @@ static void *_libpmix_open(void)
{
void *lib_plug = NULL;
char *full_path = NULL;
@@ -19,24 +19,22 @@ index bbb947616c..b284af63f2 100644
#ifdef PMIXP_V1_LIBPATH
xstrfmtcat(full_path, "%s/", PMIXP_V1_LIBPATH);
- #elif defined PMIXP_V2_LIBPATH
- xstrfmtcat(full_path, "%s/", PMIXP_V2_LIBPATH);
- #endif
-- xstrfmtcat(full_path, "libpmix.so");
-- lib_plug = dlopen(full_path, RTLD_LAZY | RTLD_GLOBAL);
-- xfree(full_path);
-+
+@@ -112,6 +115,13 @@ static void *_libpmix_open(void)
+ lib_plug = dlopen(full_path, RTLD_LAZY | RTLD_GLOBAL);
+ xfree(full_path);
+
+ while (!lib_plug && (sz < sizeof(pmix_libraries)/sizeof(pmix_libraries[0]))) {
+ xstrfmtcat(full_path, "%s", pmix_libraries[sz]);
+ lib_plug = dlopen(full_path, RTLD_LAZY | RTLD_GLOBAL);
+ xfree(full_path);
+ ++sz;
+ }
-
++
if (lib_plug && (HAVE_PMIX_VER != pmixp_lib_get_version())) {
PMIXP_ERROR("pmi/pmix: incorrect PMIx library version loaded %d was loaded, required %d version",
+ pmixp_lib_get_version(), (int)HAVE_PMIX_VER);
diff --git a/src/plugins/mpi/pmix/pmixp_dconn_ucx.c b/src/plugins/mpi/pmix/pmixp_dconn_ucx.c
-index f6c91adc93..650fb7d5ff 100644
+index f6c91adc93..506a18e3c1 100644
--- a/src/plugins/mpi/pmix/pmixp_dconn_ucx.c
+++ b/src/plugins/mpi/pmix/pmixp_dconn_ucx.c
@@ -140,6 +140,8 @@ static struct io_operations _progress_ops = {
@@ -48,7 +46,7 @@ index f6c91adc93..650fb7d5ff 100644
static void *_ucx_init(int nodeid, pmixp_p2p_data_t direct_hdr);
static void _ucx_fini(void *_priv);
static int _ucx_connect(void *_priv, void *ep_data, size_t ep_len,
-@@ -161,15 +163,20 @@ static int _load_ucx_lib()
+@@ -161,6 +163,8 @@ static int _load_ucx_lib()
setenv("UCX_MEM_MALLOC_RELOC", "no", 1);
setenv("UCX_MEM_EVENTS", "no", 1);
@@ -57,12 +55,10 @@ index f6c91adc93..650fb7d5ff 100644
#ifdef PMIXP_UCX_LIBPATH
/* If this Slurm build doesn't allow RPATH's
* try to open library by it's full path that
- * we have from autoconf
- */
- char *full_path = NULL;
-- xstrfmtcat(full_path, "%s/libucp.so", PMIXP_UCX_LIBPATH);
-- _ucx_lib_handler = dlopen(full_path, RTLD_LAZY | RTLD_GLOBAL);
-- xfree(full_path);
+@@ -170,6 +174,12 @@ static int _load_ucx_lib()
+ xstrfmtcat(full_path, "%s/libucp.so", PMIXP_UCX_LIBPATH);
+ _ucx_lib_handler = dlopen(full_path, RTLD_LAZY | RTLD_GLOBAL);
+ xfree(full_path);
+ while (!_ucx_lib_handler && (sz < sizeof(ucx_libraries)/sizeof(ucx_libraries[0]))) {
+ xstrfmtcat(full_path, "%s/%s", PMIXP_UCX_LIBPATH, ucx_libraries[sz]);
+ _ucx_lib_handler = dlopen(full_path, RTLD_LAZY | RTLD_GLOBAL);
@@ -72,11 +68,10 @@ index f6c91adc93..650fb7d5ff 100644
if (_ucx_lib_handler) {
/* successful, exit now */
return SLURM_SUCCESS;
-@@ -178,7 +185,13 @@ static int _load_ucx_lib()
- * known by dynamic linker.
+@@ -179,6 +189,13 @@ static int _load_ucx_lib()
*/
#endif
-- _ucx_lib_handler = dlopen("libucp.so", RTLD_LAZY | RTLD_GLOBAL);
+ _ucx_lib_handler = dlopen("libucp.so", RTLD_LAZY | RTLD_GLOBAL);
+ sz = 0;
+ while (!_ucx_lib_handler && (sz < sizeof(ucx_libraries)/sizeof(ucx_libraries[0]))) {
+ xstrfmtcat(full_path, "%s", ucx_libraries[sz]);
diff --git a/slurm_without_cray.patch b/slurm_without_cray.patch
index 8b994dc..ce4aa86 100644
--- a/slurm_without_cray.patch
+++ b/slurm_without_cray.patch
@@ -79,14 +79,17 @@ index 09fdfd2313..570af23c4a 100644
# Each plugin here needs a plugin_id, here are the currect plug_ids
# for each plugin.
diff --git a/src/plugins/switch/Makefile.am b/src/plugins/switch/Makefile.am
-index ddfe019a65..39a2b3eb7f 100644
+index c58f51329d..39a2b3eb7f 100644
--- a/src/plugins/switch/Makefile.am
+++ b/src/plugins/switch/Makefile.am
-@@ -1,3 +1,3 @@
+@@ -1,7 +1,3 @@
# Makefile for switch plugins
--SUBDIRS = cray_aries generic none
-+SUBDIRS = generic none
+ SUBDIRS = generic none
+-
+-if WITH_SWITCH_CRAY_ARIES
+-SUBDIRS += cray_aries
+-endif
diff --git a/src/plugins/task/Makefile.am b/src/plugins/task/Makefile.am
index 8d2a36eb68..607af1cb7c 100644
--- a/src/plugins/task/Makefile.am
diff --git a/sources b/sources
index 60733ef..d421ff2 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-SHA512 (slurm-19.05.1-2.tar.bz2) = 49d7fc1bbb9d15a9459268a37742e983785d8fbdd19a771c0b07411fc4d9b6378f48614247991efce5b43c21c277a6b4e998b18231d839128fc5cf4a45172f9b
+SHA512 (slurm-19.05.2.tar.bz2) = 3b9ae09b52503f15849fec50026855207c1e2de3a2a179cc5030de7c5e3c27f8beccd06c31562564099c5f8703148ee31ed9ccd3e0d722291a23c8a723ca06aa
commit 0dca84d8952bf9c33cb19156893f3e12125f6006
Author: Fedora Release Engineering <releng(a)fedoraproject.org>
Date: Fri Jul 26 23:33:42 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/slurm.spec b/slurm.spec
index f40fa80..20c73b1 100644
--- a/slurm.spec
+++ b/slurm.spec
@@ -19,7 +19,7 @@
Name: slurm
Version: 19.05.1
-Release: 2%{?dist}
+Release: 3%{?dist}
Summary: Simple Linux Utility for Resource Management
License: GPLv2 and BSD
URL: https://slurm.schedmd.com/
@@ -702,6 +702,9 @@ rm -f %{buildroot}%{perl_archlib}/perllocal.pod
%systemd_postun_with_restart slurmdbd.service
%changelog
+* Fri Jul 26 2019 Fedora Release Engineering <releng(a)fedoraproject.org> - 19.05.1-3
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
+
* Sun Jul 21 2019 Philip Kovacs <pkdevel(a)yahoo.com> - 19.05.1-2
- Create slurm-pmi and slurm-pmi-devel subpackages for pmi/pmi2 libs
- Remove rpm-generated pkgconfig files until upstream provides them
commit 0ff89d1eafaa86f075f3979ada152f43216c75c7
Author: Philip Kovacs <pkdevel(a)yahoo.com>
Date: Sun Jul 21 03:30:21 2019 -0400
minor spec edit
Signed-off-by: Philip Kovacs <pkdevel(a)yahoo.com>
diff --git a/slurm.spec b/slurm.spec
index c1b8af3..f40fa80 100644
--- a/slurm.spec
+++ b/slurm.spec
@@ -198,14 +198,6 @@ Requires: %{name}-perlapi%{?_isa} = %{version}-%{release}
%description openlava
OpenLava wrapper scripts used for helping migrate from OpenLava/LSF to Slurm.
-%package perlapi
-Summary: Perl API to Slurm
-Requires: perl(:MODULE_COMPAT_%(eval "`perl -V:version`"; echo $version))
-Requires: %{name}-libs%{?_isa} = %{version}-%{release}
-%description perlapi
-Perl API package for Slurm. This package includes the perl API to provide a
-helpful interface to Slurm through Perl.
-
%package pam_slurm
Summary: PAM module for restricting access to compute nodes via Slurm
Requires: %{name}-libs%{?_isa} = %{version}-%{release}
@@ -215,6 +207,14 @@ is in use. Access is granted to root, any user with a Slurm-launched job
currently running on the node, or any user who has allocated resources
on the node according to Slurm.
+%package perlapi
+Summary: Perl API to Slurm
+Requires: perl(:MODULE_COMPAT_%(eval "`perl -V:version`"; echo $version))
+Requires: %{name}-libs%{?_isa} = %{version}-%{release}
+%description perlapi
+Perl API package for Slurm. This package includes the perl API to provide a
+helpful interface to Slurm through Perl.
+
%package torque
Summary: Torque/PBS wrappers for transition from Torque/PBS to Slurm
Requires: %{name}%{?_isa} = %{version}-%{release}
@@ -523,6 +523,23 @@ rm -f %{buildroot}%{perl_archlib}/perllocal.pod
%{_libdir}/libslurm.so.*
%{_libdir}/libslurmfull-*.so
+# ---------
+# Slurm-pmi
+# ---------
+
+%files pmi
+%{_libdir}/libpmi.so.0*
+%{_libdir}/libpmi2.so.0*
+
+# ---------------
+# Slurm-pmi-devel
+# ---------------
+
+%files pmi-devel
+%{_includedir}/%{name}/pmi*.h
+%{_libdir}/libpmi.so
+%{_libdir}/libpmi2.so
+
# -------------
# Slurm-rrdtool
# -------------
@@ -606,6 +623,14 @@ rm -f %{buildroot}%{perl_archlib}/perllocal.pod
%{_mandir}/man1/bsub.1*
%{_mandir}/man1/lsid.1*
+# ---------------
+# Slurm-pam_slurm
+# ---------------
+
+%files pam_slurm
+%{_libdir}/security/pam_slurm.so
+%{_libdir}/security/pam_slurm_adopt.so
+
# -------------
# Slurm-perlapi
# -------------
@@ -622,31 +647,6 @@ rm -f %{buildroot}%{perl_archlib}/perllocal.pod
%{perl_vendorarch}/auto/Slurmdb/Slurmdb.so
%{perl_vendorarch}/auto/Slurmdb/autosplit.ix
-# ---------
-# Slurm-pmi
-# ---------
-
-%files pmi
-%{_libdir}/libpmi.so.0*
-%{_libdir}/libpmi2.so.0*
-
-# ---------------
-# Slurm-pmi-devel
-# ---------------
-
-%files pmi-devel
-%{_includedir}/%{name}/pmi*.h
-%{_libdir}/libpmi.so
-%{_libdir}/libpmi2.so
-
-# ---------------
-# Slurm-pam_slurm
-# ---------------
-
-%files pam_slurm
-%{_libdir}/security/pam_slurm.so
-%{_libdir}/security/pam_slurm_adopt.so
-
# ------------
# Slurm-torque
# ------------
commit 7629b59fcca26b9e561949bdedaa54fff12243d2
Author: Philip Kovacs <pkdevel(a)yahoo.com>
Date: Sun Jul 21 02:04:47 2019 -0400
Create slurm-pmi and slurm-pmi-devel subpackages for pmi/pmi2 libs
Remove rpm-generated pkgconfig files until upstream provides them
Do not pull dependencies with pkgconfig unless package uses it
diff --git a/.rpmlint b/.rpmlint
new file mode 100644
index 0000000..5aca11b
--- /dev/null
+++ b/.rpmlint
@@ -0,0 +1,9 @@
+from Config import *
+addFilter("E: shared-lib-without-dependency-information")
+addFilter("E: missing-dependency-to-logrotate")
+addFilter("W: manual-page-warning")
+addFilter("W: no-documentation")
+addFilter("W: no-manual-page-for-binary")
+addFilter("W: non-conffile-in-etc")
+addFilter("W: shared-lib-calls-exit")
+addFilter("W: spelling-error")
diff --git a/slurm.spec b/slurm.spec
index 61db11d..c1b8af3 100644
--- a/slurm.spec
+++ b/slurm.spec
@@ -7,12 +7,19 @@
%global name_version %{name}-%{version}-%{ups_rel}
%endif
+# follow arch-inclusions for ucx
+%ifarch aarch64 ppc64le x86_64
+%bcond_without ucx
+%else
+%bcond_with ucx
+%endif
+
# Allow linkage with undefined symbols (disable -z,defs)
%undefine _strict_symbol_defs_build
Name: slurm
Version: 19.05.1
-Release: 1%{?dist}
+Release: 2%{?dist}
Summary: Simple Linux Utility for Resource Management
License: GPLv2 and BSD
URL: https://slurm.schedmd.com/
@@ -29,8 +36,7 @@ Patch0: slurm_libslurmfull_version.patch
# Build-related patches
Patch10: slurm_perlapi_rpaths.patch
Patch11: slurm_html_doc_path.patch
-Patch13: slurm_without_cray.patch
-Patch14: slurm_without_pmi.patch
+Patch12: slurm_without_cray.patch
# Fedora-related patches
Patch20: slurm_pmix_soname.patch
@@ -48,31 +54,30 @@ BuildRequires: perl-macros
BuildRequires: perl-podlators
BuildRequires: pkgconf
BuildRequires: pkgconfig(check)
+BuildRequires: pkgconfig(lua)
BuildRequires: python3
BuildRequires: systemd
+BuildRequires: freeipmi-devel
+BuildRequires: gtk2-devel
BuildRequires: hdf5-devel
+BuildRequires: hwloc-devel
+BuildRequires: libcurl-devel
+BuildRequires: libssh2-devel
+BuildRequires: lz4-devel
+BuildRequires: mariadb-devel
+BuildRequires: munge-devel
+BuildRequires: ncurses-devel
BuildRequires: numactl-devel
BuildRequires: pam-devel
+BuildRequires: pmix-devel
BuildRequires: rdma-core-devel
-BuildRequires: pkgconfig(gtk+-2.0)
-BuildRequires: pkgconfig(hwloc)
-BuildRequires: pkgconfig(libcurl)
-BuildRequires: pkgconfig(libfreeipmi)
-BuildRequires: pkgconfig(liblz4)
-BuildRequires: pkgconfig(librrd)
-BuildRequires: pkgconfig(libssh2)
-BuildRequires: pkgconfig(lua)
-BuildRequires: pkgconfig(mariadb)
-BuildRequires: pkgconfig(munge)
-BuildRequires: pkgconfig(ncurses)
-BuildRequires: pkgconfig(pmix) >= 2.0.0
-BuildRequires: pkgconfig(zlib)
-BuildRequires: pkgconfig(readline)
+BuildRequires: readline-devel
+BuildRequires: rrdtool-devel
+BuildRequires: zlib-devel
-# follow arch-inclusions for ucx
-%ifarch aarch64 ppc64le x86_64
-BuildRequires: pkgconfig(ucx)
+%if %{with ucx}
+BuildRequires: ucx-devel
%endif
# exclude upstream-deprecated 32-bit architectures
@@ -80,8 +85,8 @@ ExcludeArch: armv7hl
ExcludeArch: i686
Requires: munge
-Requires: pmix >= 2.0.0
-%ifarch aarch64 ppc64le x86_64
+Requires: pmix
+%if %{with ucx}
Requires: ucx
%endif
%{?systemd_requires}
@@ -121,6 +126,22 @@ Summary: Slurm shared libraries
%description libs
Slurm shared libraries.
+%package pmi
+Summary: The %{name} implementation of libpmi and libpmi2
+Requires: %{name}%{?_isa} = %{version}-%{release}
+Conflicts: pmix-pmi
+%description pmi
+The %{name}-pmi package contains the %{name} implementation of
+the libpmi and libpmi2 libraries.
+
+%package pmi-devel
+Summary: Development files for %{name}-pmi
+Requires: %{name}-pmi%{?_isa} = %{version}-%{release}
+Conflicts: pmix-pmi-devel
+%description pmi-devel
+The %{name}-pmi-devel package contains the development files for
+the libpmi and libpmi2 libraries.
+
%package rrdtool
Summary: Slurm rrdtool external sensor plugin
Requires: %{name}%{?_isa} = %{version}-%{release}
@@ -206,8 +227,7 @@ Torque wrapper scripts used for helping migrate from Torque/PBS to Slurm.
%patch0 -p1
%patch10 -p1
%patch11 -p1
-%patch13 -p1
-%patch14 -p1
+%patch12 -p1
%patch20 -p1
%patch21 -p1
%patch22 -p1
@@ -232,7 +252,7 @@ automake --no-force
--prefix=%{_prefix} \
--sysconfdir=%{_sysconfdir}/%{name} \
--with-pam_dir=%{_libdir}/security \
-%ifarch aarch64 ppc64le x86_64
+%if %{with ucx}
--with-ucx=%{_prefix} \
%endif
--enable-shared \
@@ -322,19 +342,6 @@ touch %{buildroot}%{_rundir}/%{name}/slurmctld.pid
touch %{buildroot}%{_rundir}/%{name}/slurmd.pid
touch %{buildroot}%{_rundir}/%{name}/slurmdbd.pid
-# install pkgconfig file slurm.pc
-install -d -m 0755 %{buildroot}%{_libdir}/pkgconfig
-cat >%{buildroot}%{_libdir}/pkgconfig/%{name}.pc <<EOF
-includedir=%{_includedir}/%{name}
-libdir=%{_libdir}
-
-Name: %{name}
-Version: %{version}
-Description: Slurm development library
-Cflags: -I\${includedir}
-Libs: -L\${libdir} -lslurm
-EOF
-
# install desktop file for sview GTK+ program
desktop-file-install \
--dir=%{buildroot}%{_datadir}/applications \
@@ -483,7 +490,6 @@ rm -f %{buildroot}%{perl_archlib}/perllocal.pod
%{_includedir}/%{name}/smd_ns.h
%{_includedir}/%{name}/spank.h
%{_libdir}/lib{slurm,slurmdb}.so
-%{_libdir}/pkgconfig/%{name}.pc
%{_libdir}/%{name}/src/sattach/sattach.wrapper.c
%{_libdir}/%{name}/src/srun/srun.wrapper.c
%{_mandir}/man3/*.3.*
@@ -616,6 +622,23 @@ rm -f %{buildroot}%{perl_archlib}/perllocal.pod
%{perl_vendorarch}/auto/Slurmdb/Slurmdb.so
%{perl_vendorarch}/auto/Slurmdb/autosplit.ix
+# ---------
+# Slurm-pmi
+# ---------
+
+%files pmi
+%{_libdir}/libpmi.so.0*
+%{_libdir}/libpmi2.so.0*
+
+# ---------------
+# Slurm-pmi-devel
+# ---------------
+
+%files pmi-devel
+%{_includedir}/%{name}/pmi*.h
+%{_libdir}/libpmi.so
+%{_libdir}/libpmi2.so
+
# ---------------
# Slurm-pam_slurm
# ---------------
@@ -679,6 +702,11 @@ rm -f %{buildroot}%{perl_archlib}/perllocal.pod
%systemd_postun_with_restart slurmdbd.service
%changelog
+* Sun Jul 21 2019 Philip Kovacs <pkdevel(a)yahoo.com> - 19.05.1-2
+- Create slurm-pmi and slurm-pmi-devel subpackages for pmi/pmi2 libs
+- Remove rpm-generated pkgconfig files until upstream provides them
+- Do not pull dependencies with pkgconfig unless package uses it
+
* Mon Jul 15 2019 Philip Kovacs <pkdevel(a)yahoo.com> - 19.05.1-1
- Release of 19.05.1
- Closes security issue (CVE-2019-12838)
diff --git a/slurm_without_pmi.patch b/slurm_without_pmi.patch
deleted file mode 100644
index a51659f..0000000
--- a/slurm_without_pmi.patch
+++ /dev/null
@@ -1,22 +0,0 @@
-diff --git a/Makefile.am b/Makefile.am
-index 064e992d53..10859a78a5 100644
---- a/Makefile.am
-+++ b/Makefile.am
-@@ -29,7 +29,6 @@ EXTRA_DIST = \
- META
-
- pkginclude_HEADERS = \
-- slurm/pmi.h \
- slurm/slurm.h \
- slurm/slurmdb.h \
- slurm/slurm_errno.h \
-diff --git a/contribs/Makefile.am b/contribs/Makefile.am
-index 2a2d1f2c82..d8d268c0e7 100644
---- a/contribs/Makefile.am
-+++ b/contribs/Makefile.am
-@@ -1,4 +1,4 @@
--SUBDIRS = lua mic nss_slurm openlava pam pam_slurm_adopt perlapi pmi pmi2 seff sgather sgi sjobexit torque
-+SUBDIRS = lua mic nss_slurm openlava pam pam_slurm_adopt perlapi seff sgather sgi sjobexit torque
-
- EXTRA_DIST = \
- make-3.81.slurm.patch \
commit 8a8ef77daffa047b01209297185b9363770f0f1b
Author: Philip Kovacs <pkdevel(a)yahoo.com>
Date: Mon Jul 15 15:29:35 2019 -0400
Release of 19.05.1
Closes security issue (CVE-2019-12838)
Configure for UCX support on supported arches
diff --git a/slurm.spec b/slurm.spec
index a3ad352..61db11d 100644
--- a/slurm.spec
+++ b/slurm.spec
@@ -1,5 +1,5 @@
# Upstream tarballs use an additional release number
-%global ups_rel 1
+%global ups_rel 2
%if "%{ups_rel}" == "1"
%global name_version %{name}-%{version}
@@ -11,8 +11,8 @@
%undefine _strict_symbol_defs_build
Name: slurm
-Version: 19.05.0
-Release: 5%{?dist}
+Version: 19.05.1
+Release: 1%{?dist}
Summary: Simple Linux Utility for Resource Management
License: GPLv2 and BSD
URL: https://slurm.schedmd.com/
@@ -25,13 +25,10 @@ Source5: slurm-setuser.in
# Upstream bug #4449: release-style versioning of libslurmfull
Patch0: slurm_libslurmfull_version.patch
-# Upstream bug #7197: fix 19.05.0 testsuite
-Patch1: slurm_fix_testsuite.patch
# Build-related patches
Patch10: slurm_perlapi_rpaths.patch
Patch11: slurm_html_doc_path.patch
-Patch12: slurm_doc_fix.patch
Patch13: slurm_without_cray.patch
Patch14: slurm_without_pmi.patch
@@ -55,7 +52,9 @@ BuildRequires: python3
BuildRequires: systemd
BuildRequires: hdf5-devel
+BuildRequires: numactl-devel
BuildRequires: pam-devel
+BuildRequires: rdma-core-devel
BuildRequires: pkgconfig(gtk+-2.0)
BuildRequires: pkgconfig(hwloc)
BuildRequires: pkgconfig(libcurl)
@@ -69,12 +68,11 @@ BuildRequires: pkgconfig(munge)
BuildRequires: pkgconfig(ncurses)
BuildRequires: pkgconfig(pmix) >= 2.0.0
BuildRequires: pkgconfig(zlib)
-BuildRequires: readline-devel
+BuildRequires: pkgconfig(readline)
-# follow arch exclusions for these devel packages
-%ifnarch s390 s390x %{arm}
-BuildRequires: rdma-core-devel
-BuildRequires: numactl-devel
+# follow arch-inclusions for ucx
+%ifarch aarch64 ppc64le x86_64
+BuildRequires: pkgconfig(ucx)
%endif
# exclude upstream-deprecated 32-bit architectures
@@ -83,6 +81,9 @@ ExcludeArch: i686
Requires: munge
Requires: pmix >= 2.0.0
+%ifarch aarch64 ppc64le x86_64
+Requires: ucx
+%endif
%{?systemd_requires}
%description
@@ -203,10 +204,8 @@ Torque wrapper scripts used for helping migrate from Torque/PBS to Slurm.
%prep
%setup -q -n %{name_version}
%patch0 -p1
-%patch1 -p1
%patch10 -p1
%patch11 -p1
-%patch12 -p1
%patch13 -p1
%patch14 -p1
%patch20 -p1
@@ -233,6 +232,9 @@ automake --no-force
--prefix=%{_prefix} \
--sysconfdir=%{_sysconfdir}/%{name} \
--with-pam_dir=%{_libdir}/security \
+%ifarch aarch64 ppc64le x86_64
+ --with-ucx=%{_prefix} \
+%endif
--enable-shared \
--enable-x11 \
--disable-static \
@@ -677,6 +679,11 @@ rm -f %{buildroot}%{perl_archlib}/perllocal.pod
%systemd_postun_with_restart slurmdbd.service
%changelog
+* Mon Jul 15 2019 Philip Kovacs <pkdevel(a)yahoo.com> - 19.05.1-1
+- Release of 19.05.1
+- Closes security issue (CVE-2019-12838)
+- Configure for UCX support on supported arches
+
* Tue Jul 2 2019 Philip Kovacs <pkdevel(a)yahoo.com> - 19.05.0-5
- Do not install slurm implementation of libpmi/pmi2 libraries
- in favor of the faster implementation provided by pmix
diff --git a/slurm_doc_fix.patch b/slurm_doc_fix.patch
deleted file mode 100644
index ad7fdcb..0000000
--- a/slurm_doc_fix.patch
+++ /dev/null
@@ -1,45 +0,0 @@
-diff --git a/doc/man/man5/burst_buffer.conf.5 b/doc/man/man5/burst_buffer.conf.5
-index 90f8e94fc7..efd76aa999 100644
---- a/doc/man/man5/burst_buffer.conf.5
-+++ b/doc/man/man5/burst_buffer.conf.5
-@@ -31,18 +31,18 @@ The configuration parameters available include:
- \fBAllowUsers\fR
- Comma separated list of user names and/or IDs permitted to use burst buffers.
- The options \fBAllowUsers\fR and \fBDenyUsers\fR can not both be specified.
--By default all users are permitted to use burst buffers.
-+By default all users are permitted to use burst buffers. Possible future
-+future enhancement for generic plugin.
-
--.\" Possible future enhancement for generic plugin
--.\" .TP
--.\" \fBAltPool\fR
--.\" The AltPool value consists of a comma separated list of alternate pools of
--.\" resources, each of which includes a name separated by a colon and a numeric
--.\" value.
--.\" The numeric value can include a suffix of "k", "m", "g", "t" and "p" which
--.\" multiplies the numeric value by 1,024, 1,048,576, 1,073,741,824 etc.
--.\" The numeric value is a 64-bit value.
--.\" for example, "AltPool=test:20g,small:4g
-+.TP
-+\fBAltPool\fR
-+The AltPool value consists of a comma separated list of alternate pools of
-+resources, each of which includes a name separated by a colon and a numeric
-+value.
-+The numeric value can include a suffix of "k", "m", "g", "t" and "p" which
-+multiplies the numeric value by 1,024, 1,048,576, 1,073,741,824 etc.
-+The numeric value is a 64-bit value.
-+for example, "AltPool=test:20g,small:4g
-
- .TP
- \fBCreateBuffer\fR
-@@ -206,8 +206,8 @@ By default there is a 5 second timeout for the validation operations.
- AllowUsers=alan,brenda
- .br
- PrivateData=true
--.\" .br
--.\" Gres=nodes:10,other:20
-+.br
-+Gres=nodes:10,other:20
- .br
- #
- .br
diff --git a/slurm_fix_testsuite.patch b/slurm_fix_testsuite.patch
deleted file mode 100644
index 4cf2c80..0000000
--- a/slurm_fix_testsuite.patch
+++ /dev/null
@@ -1,579 +0,0 @@
-commit 7fa8a69d8eda68ac1fa144de7686e47d18161037
-Author: Philip Kovacs <pkdevel(a)yahoo.com>
-Date: Fri Jun 7 07:33:01 2019 -0600
-
- patch for 19.05.0 testsuite `make check` errors
-
- bug 7197
-
-diff --git a/testsuite/slurm_unit/common/slurm_protocol_pack/pack_job_alloc_info_msg-test.c b/testsuite/slurm_unit/common/slurm_protocol_pack/pack_job_alloc_info_msg-test.c
-index 2f245622e7..ca95f636a8 100644
---- a/testsuite/slurm_unit/common/slurm_protocol_pack/pack_job_alloc_info_msg-test.c
-+++ b/testsuite/slurm_unit/common/slurm_protocol_pack/pack_job_alloc_info_msg-test.c
-@@ -59,7 +59,7 @@ START_TEST(pack_1702_req_null_ptrs)
- unpack_req = (job_alloc_info_msg_t *)msg.data;
- ck_assert_int_eq(rc, SLURM_SUCCESS);
- ck_assert(unpack_req);
-- ck_assert(!unpack_req->req_cluster); /* >= 17.11 */
-+ //ck_assert(!unpack_req->req_cluster); /* >= 17.11 */
- ck_assert_uint_eq(unpack_req->job_id, pack_req.job_id);
-
- free_buf(buf);
-@@ -94,7 +94,7 @@ START_TEST(pack_1702_req)
- unpack_req = (job_alloc_info_msg_t *)msg.data;
- ck_assert_int_eq(rc, SLURM_SUCCESS);
- ck_assert(unpack_req);
-- ck_assert(!unpack_req->req_cluster); /* >= 17.11 */
-+ //ck_assert(!unpack_req->req_cluster); /* >= 17.11 */
- ck_assert_uint_eq(unpack_req->job_id, pack_req.job_id);
-
- free_buf(buf);
-diff --git a/testsuite/slurm_unit/common/slurmdb_pack/pack_federation_rec-test.c b/testsuite/slurm_unit/common/slurmdb_pack/pack_federation_rec-test.c
-index dd10e1b857..d068fef66d 100644
---- a/testsuite/slurm_unit/common/slurmdb_pack/pack_federation_rec-test.c
-+++ b/testsuite/slurm_unit/common/slurmdb_pack/pack_federation_rec-test.c
-@@ -236,9 +236,9 @@ Suite* suite(void)
- TCase* tc_core = tcase_create("Pack slurmdb_federation_rec_t");
- tcase_add_test(tc_core, invalid_protocol);
- tcase_add_test(tc_core, pack_1702_federation_rec);
-- tcase_add_test(tc_core, pack_1702_null_federation_rec);
-+ //tcase_add_test(tc_core, pack_1702_null_federation_rec);
- tcase_add_test(tc_core, pack_1702_federation_rec_empty_list);
-- tcase_add_test(tc_core, pack_1702_federation_rec_fail);
-+ //tcase_add_test(tc_core, pack_1702_federation_rec_fail);
-
- tcase_add_test(tc_core, pack_1711_federation_rec);
- tcase_add_test(tc_core, pack_1711_null_federation_rec);
-diff --git a/testsuite/slurm_unit/common/xhash-test.c b/testsuite/slurm_unit/common/xhash-test.c
-index 46616aef2b..2fc4d1d373 100644
---- a/testsuite/slurm_unit/common/xhash-test.c
-+++ b/testsuite/slurm_unit/common/xhash-test.c
-@@ -49,12 +49,11 @@ typedef struct hashable_st {
- uint32_t idn;
- } hashable_t;
-
--const char* hashable_identify(void* voiditem)
-+void hashable_identify(void* voiditem, const char** key, uint32_t* key_len)
- {
- hashable_t* item = (hashable_t*)voiditem;
-- if (!item->id[0]) snprintf(item->id, 255, "%lu",
-- (unsigned long)item->idn);
-- return item->id;
-+ *key = item->id;
-+ *key_len = strlen(item->id);
- }
-
- /*****************************************************************************
-@@ -71,7 +70,7 @@ static void setup(void)
- g_ht = xhash_init(hashable_identify, NULL);
- if (!g_ht) return; /* fatal error, will be detected by test cases */
- for (i = 0; i < g_hashableslen; ++i) {
-- g_hashables[i].id[0] = 0;
-+ snprintf(g_hashables[i].id, sizeof(g_hashables[i].id), "%d", i);
- g_hashables[i].idn = i;
- /* it is an error if xhash_add returns null but it will be
- * detected by test cases */
-@@ -120,7 +119,7 @@ START_TEST(test_add)
- fail_unless(xhash_add(ht, a+3) != NULL, "xhash_add failed");
- for (i = 0; i < len; ++i) {
- snprintf(buffer, sizeof(buffer), "%d", i);
-- fail_unless(xhash_get(ht, buffer) == (a + i),
-+ fail_unless(xhash_get_str(ht, buffer) == (a + i),
- "bad hashable item returned");
- }
- xhash_free(ht);
-@@ -134,14 +133,14 @@ START_TEST(test_find)
- int i;
-
- /* test bad match */
-- fail_unless(xhash_get(ht, "bad") == NULL , "invalid case not null");
-- fail_unless(xhash_get(ht, "-1") == NULL , "invalid case not null");
-- fail_unless(xhash_get(ht, "10000") == NULL, "invalid case not null");
-+ fail_unless(xhash_get_str(ht, "bad") == NULL , "invalid case not null");
-+ fail_unless(xhash_get_str(ht, "-1") == NULL , "invalid case not null");
-+ fail_unless(xhash_get_str(ht, "10000") == NULL, "invalid case not null");
-
- /* test all good indexes */
- for (i = 0; i < g_hashableslen; ++i) {
- snprintf(buffer, sizeof(buffer), "%d", i);
-- fail_unless(xhash_get(ht, buffer) == (g_hashables + i),
-+ fail_unless(xhash_get_str(ht, buffer) == (g_hashables + i),
- "bad hashable item returned");
- }
- }
-@@ -156,7 +155,7 @@ static int test_delete_helper()
- char buffer[255];
- for (i = 0; i < g_hashableslen; ++i) {
- snprintf(buffer, sizeof(buffer), "%d", i);
-- if (xhash_get(ht, buffer) != (g_hashables + i)) {
-+ if (xhash_get_str(ht, buffer) != (g_hashables + i)) {
- ++ret;
- }
- }
-@@ -170,10 +169,10 @@ START_TEST(test_delete)
- char buffer[255];
-
- /* invalid cases */
-- xhash_delete(NULL, "1");
-- fail_unless(xhash_get(ht, "1") != NULL, "invalid case null");
-+ xhash_delete_str(NULL, "1");
-+ fail_unless(xhash_get_str(ht, "1") != NULL, "invalid case null");
- /* Deleting non-existent item should do nothing. */
-- xhash_delete(ht, NULL);
-+ xhash_delete(ht, NULL, 0);
- fail_unless(xhash_count(ht) == g_hashableslen,
- "invalid delete has been done");
- result = test_delete_helper();
-@@ -182,17 +181,17 @@ START_TEST(test_delete)
- result);
-
- /* test correct deletion */
-- xhash_delete(ht, "10");
-- fail_unless(xhash_get(ht, "10") == NULL, "item not deleted");
-+ xhash_delete_str(ht, "10");
-+ fail_unless(xhash_get_str(ht, "10") == NULL, "item not deleted");
- fail_unless(xhash_count(ht) == (g_hashableslen-1), "bad count");
- /* left edge */
-- xhash_delete(ht, "0");
-- fail_unless(xhash_get(ht, "0") == NULL, "item not deleted");
-+ xhash_delete_str(ht, "0");
-+ fail_unless(xhash_get_str(ht, "0") == NULL, "item not deleted");
- fail_unless(xhash_count(ht) == (g_hashableslen-2), "bad count");
- /* right edge */
- snprintf(buffer, sizeof(buffer), "%u", (g_hashableslen-2));
-- xhash_delete(ht, buffer);
-- fail_unless(xhash_get(ht, "0") == NULL, "item not deleted");
-+ xhash_delete_str(ht, buffer);
-+ fail_unless(xhash_get_str(ht, "0") == NULL, "item not deleted");
- fail_unless(xhash_count(ht) == (g_hashableslen-3), "bad count");
-
- result = test_delete_helper();
-commit b0db3f0fbfdfc9a7820f24c4b30adee696dc863a
-Author: Morris Jette <jette(a)schedmd.com>
-Date: Fri Jun 7 07:57:26 2019 -0600
-
- Modify "make check" to validate v1808 un/pack logic
-
- bug 7197
-
-diff --git a/testsuite/slurm_unit/common/slurmdb_pack/pack_federation_rec-test.c b/testsuite/slurm_unit/common/slurmdb_pack/pack_federation_rec-test.c
-index d068fef66d..bbeeefc4a7 100644
---- a/testsuite/slurm_unit/common/slurmdb_pack/pack_federation_rec-test.c
-+++ b/testsuite/slurm_unit/common/slurmdb_pack/pack_federation_rec-test.c
-@@ -32,29 +32,26 @@ START_TEST(invalid_protocol)
- }
- END_TEST
-
--START_TEST(pack_1702_null_federation_rec)
-+START_TEST(pack_1711_null_federation_rec)
- {
- int rc;
- Buf buf = init_buf(1024);
-- slurmdb_federation_rec_t pack_fr = {0};
-
- slurmdb_pack_federation_rec(NULL, SLURM_MIN_PROTOCOL_VERSION, buf);
-
- set_buf_offset(buf, 0);
-
-- slurmdb_federation_rec_t *unpack_fr;
-+ slurmdb_federation_rec_t *unpack_fr = NULL;
- rc = slurmdb_unpack_federation_rec((void **)&unpack_fr, SLURM_MIN_PROTOCOL_VERSION, buf);
-- ck_assert(rc == SLURM_SUCCESS);
-- ck_assert(pack_fr.name == unpack_fr->name);
-- ck_assert(pack_fr.flags == unpack_fr->flags);
-- ck_assert(pack_fr.cluster_list == unpack_fr->cluster_list);
-+ ck_assert(rc == SLURM_SUCCESS);
-+ ck_assert(unpack_fr == NULL);
-
- free_buf(buf);
- slurmdb_destroy_federation_rec(unpack_fr);
- }
- END_TEST
-
--START_TEST(pack_1702_federation_rec)
-+START_TEST(pack_1711_federation_rec)
- {
- int rc;
-
-@@ -90,7 +87,7 @@ START_TEST(pack_1702_federation_rec)
- END_TEST
-
-
--START_TEST(pack_1702_federation_rec_empty_list)
-+START_TEST(pack_1711_federation_rec_empty_list)
- {
- int rc;
-
-@@ -118,31 +115,7 @@ START_TEST(pack_1702_federation_rec_empty_list)
- END_TEST
-
-
--/* This test sets up the buffer so that it fails when unpacking the cluster rec.
-- */
--START_TEST(pack_1702_federation_rec_fail)
--{
-- int rc;
-- char *name = xstrdup("Saint Augustine");
-- Buf buf = init_buf(18*sizeof(uint32_t));
-- packstr(name, buf);
-- pack32(7, buf);
-- pack32(1, buf);
--
-- set_buf_offset(buf, 0);
--
-- slurmdb_federation_rec_t *unpack_fr;
-- rc = slurmdb_unpack_federation_rec((void **)&unpack_fr, SLURM_MIN_PROTOCOL_VERSION, buf);
-- ck_assert_int_eq(rc, SLURM_ERROR);
--
-- free_buf(buf);
-- xfree(name);
--}
--END_TEST
--
--
--/* 17.11 */
--START_TEST(pack_1711_null_federation_rec)
-+START_TEST(pack_1808_null_federation_rec)
- {
- int rc;
- Buf buf = init_buf(1024);
-@@ -161,7 +134,7 @@ START_TEST(pack_1711_null_federation_rec)
- }
- END_TEST
-
--START_TEST(pack_1711_federation_rec)
-+START_TEST(pack_1808_federation_rec)
- {
- int rc;
-
-@@ -197,7 +170,7 @@ START_TEST(pack_1711_federation_rec)
- END_TEST
-
-
--START_TEST(pack_1711_federation_rec_empty_list)
-+START_TEST(pack_1808_federation_rec_empty_list)
- {
- int rc;
-
-@@ -235,15 +208,14 @@ Suite* suite(void)
- Suite* s = suite_create("Pack slurmdb_federation_rec_t");
- TCase* tc_core = tcase_create("Pack slurmdb_federation_rec_t");
- tcase_add_test(tc_core, invalid_protocol);
-- tcase_add_test(tc_core, pack_1702_federation_rec);
-- //tcase_add_test(tc_core, pack_1702_null_federation_rec);
-- tcase_add_test(tc_core, pack_1702_federation_rec_empty_list);
-- //tcase_add_test(tc_core, pack_1702_federation_rec_fail);
--
- tcase_add_test(tc_core, pack_1711_federation_rec);
- tcase_add_test(tc_core, pack_1711_null_federation_rec);
- tcase_add_test(tc_core, pack_1711_federation_rec_empty_list);
-
-+ tcase_add_test(tc_core, pack_1808_federation_rec);
-+ tcase_add_test(tc_core, pack_1808_null_federation_rec);
-+ tcase_add_test(tc_core, pack_1808_federation_rec_empty_list);
-+
- suite_add_tcase(s, tc_core);
- return s;
- }
-commit 8aade6d1a3b25ee43b466f7c5624f5199b7bf0ec
-Author: Morris Jette <jette(a)schedmd.com>
-Date: Fri Jun 7 08:14:50 2019 -0600
-
- Rename some "make check" functions names to be generic
-
- bug 7197
-
-diff --git a/testsuite/slurm_unit/common/slurmdb_pack/pack_federation_rec-test.c b/testsuite/slurm_unit/common/slurmdb_pack/pack_federation_rec-test.c
-index bbeeefc4a7..6a48164027 100644
---- a/testsuite/slurm_unit/common/slurmdb_pack/pack_federation_rec-test.c
-+++ b/testsuite/slurm_unit/common/slurmdb_pack/pack_federation_rec-test.c
-@@ -32,7 +32,7 @@ START_TEST(invalid_protocol)
- }
- END_TEST
-
--START_TEST(pack_1711_null_federation_rec)
-+START_TEST(pack_back2_null_federation_rec)
- {
- int rc;
- Buf buf = init_buf(1024);
-@@ -51,7 +51,7 @@ START_TEST(pack_1711_null_federation_rec)
- }
- END_TEST
-
--START_TEST(pack_1711_federation_rec)
-+START_TEST(pack_back2_federation_rec)
- {
- int rc;
-
-@@ -87,7 +87,7 @@ START_TEST(pack_1711_federation_rec)
- END_TEST
-
-
--START_TEST(pack_1711_federation_rec_empty_list)
-+START_TEST(pack_back2_federation_rec_empty_list)
- {
- int rc;
-
-@@ -115,7 +115,7 @@ START_TEST(pack_1711_federation_rec_empty_list)
- END_TEST
-
-
--START_TEST(pack_1808_null_federation_rec)
-+START_TEST(pack_back1_null_federation_rec)
- {
- int rc;
- Buf buf = init_buf(1024);
-@@ -134,7 +134,7 @@ START_TEST(pack_1808_null_federation_rec)
- }
- END_TEST
-
--START_TEST(pack_1808_federation_rec)
-+START_TEST(pack_back1_federation_rec)
- {
- int rc;
-
-@@ -170,7 +170,7 @@ START_TEST(pack_1808_federation_rec)
- END_TEST
-
-
--START_TEST(pack_1808_federation_rec_empty_list)
-+START_TEST(pack_back1_federation_rec_empty_list)
- {
- int rc;
-
-@@ -208,13 +208,13 @@ Suite* suite(void)
- Suite* s = suite_create("Pack slurmdb_federation_rec_t");
- TCase* tc_core = tcase_create("Pack slurmdb_federation_rec_t");
- tcase_add_test(tc_core, invalid_protocol);
-- tcase_add_test(tc_core, pack_1711_federation_rec);
-- tcase_add_test(tc_core, pack_1711_null_federation_rec);
-- tcase_add_test(tc_core, pack_1711_federation_rec_empty_list);
-+ tcase_add_test(tc_core, pack_back2_federation_rec);
-+ tcase_add_test(tc_core, pack_back2_null_federation_rec);
-+ tcase_add_test(tc_core, pack_back2_federation_rec_empty_list);
-
-- tcase_add_test(tc_core, pack_1808_federation_rec);
-- tcase_add_test(tc_core, pack_1808_null_federation_rec);
-- tcase_add_test(tc_core, pack_1808_federation_rec_empty_list);
-+ tcase_add_test(tc_core, pack_back1_federation_rec);
-+ tcase_add_test(tc_core, pack_back1_null_federation_rec);
-+ tcase_add_test(tc_core, pack_back1_federation_rec_empty_list);
-
- suite_add_tcase(s, tc_core);
- return s;
-commit 549b1a3e6a8f6a677228209a2520595ffb42f98c
-Author: Morris Jette <jette(a)schedmd.com>
-Date: Fri Jun 7 09:50:14 2019 -0600
-
- Make check tests made more generic
-
-diff --git a/testsuite/slurm_unit/common/slurm_protocol_pack/pack_job_alloc_info_msg-test.c b/testsuite/slurm_unit/common/slurm_protocol_pack/pack_job_alloc_info_msg-test.c
-index ca95f636a8..85adb59ed1 100644
---- a/testsuite/slurm_unit/common/slurm_protocol_pack/pack_job_alloc_info_msg-test.c
-+++ b/testsuite/slurm_unit/common/slurm_protocol_pack/pack_job_alloc_info_msg-test.c
-@@ -33,7 +33,7 @@ START_TEST(pack_null_req)
- END_TEST
- #endif
-
--START_TEST(pack_1702_req_null_ptrs)
-+START_TEST(pack_back2_req_null_ptrs)
- {
- int rc;
- Buf buf = init_buf(1024);
-@@ -59,7 +59,7 @@ START_TEST(pack_1702_req_null_ptrs)
- unpack_req = (job_alloc_info_msg_t *)msg.data;
- ck_assert_int_eq(rc, SLURM_SUCCESS);
- ck_assert(unpack_req);
-- //ck_assert(!unpack_req->req_cluster); /* >= 17.11 */
-+ ck_assert(!unpack_req->req_cluster);
- ck_assert_uint_eq(unpack_req->job_id, pack_req.job_id);
-
- free_buf(buf);
-@@ -67,7 +67,7 @@ START_TEST(pack_1702_req_null_ptrs)
- }
- END_TEST
-
--START_TEST(pack_1702_req)
-+START_TEST(pack_back2_req)
- {
- int rc;
- Buf buf = init_buf(1024);
-@@ -103,7 +103,7 @@ START_TEST(pack_1702_req)
- }
- END_TEST
-
--START_TEST(pack_1711_req_null_ptrs)
-+START_TEST(pack_back1_req_null_ptrs)
- {
- int rc;
- Buf buf = init_buf(1024);
-@@ -136,7 +136,7 @@ START_TEST(pack_1711_req_null_ptrs)
- }
- END_TEST
-
--START_TEST(pack_1711_req)
-+START_TEST(pack_back1_req)
- {
- int rc;
- Buf buf = init_buf(1024);
-@@ -188,10 +188,10 @@ Suite* suite(SRunner *sr)
- if (srunner_fork_status(sr) != CK_NOFORK)
- tcase_add_test_raise_signal(tc_core, pack_null_req, SIGABRT);
- #endif
-- tcase_add_test(tc_core, pack_1702_req_null_ptrs);
-- tcase_add_test(tc_core, pack_1702_req);
-- tcase_add_test(tc_core, pack_1711_req_null_ptrs);
-- tcase_add_test(tc_core, pack_1711_req);
-+ tcase_add_test(tc_core, pack_back2_req_null_ptrs);
-+ tcase_add_test(tc_core, pack_back2_req);
-+ tcase_add_test(tc_core, pack_back1_req_null_ptrs);
-+ tcase_add_test(tc_core, pack_back1_req);
- suite_add_tcase(s, tc_core);
- return s;
- }
-diff --git a/testsuite/slurm_unit/common/slurmdb_pack/pack_cluster_rec-test.c b/testsuite/slurm_unit/common/slurmdb_pack/pack_cluster_rec-test.c
-index c58149b48f..b2c6042888 100644
---- a/testsuite/slurm_unit/common/slurmdb_pack/pack_cluster_rec-test.c
-+++ b/testsuite/slurm_unit/common/slurmdb_pack/pack_cluster_rec-test.c
-@@ -20,7 +20,7 @@ START_TEST(invalid_protocol)
- }
- END_TEST
-
--START_TEST(pack_1702_null_rec)
-+START_TEST(pack_back2_null_rec)
- {
- int rc;
- slurmdb_cluster_rec_t pack_rec;
-@@ -64,7 +64,7 @@ START_TEST(pack_1702_null_rec)
- }
- END_TEST
-
--START_TEST(pack_1702_rec)
-+START_TEST(pack_back2_rec)
- {
- int rc;
- Buf buf = init_buf(1024);
-@@ -85,6 +85,9 @@ START_TEST(pack_1702_rec)
- pack_rec.name = xstrdup("name");
- pack_rec.nodes = xstrdup("nodes");
- pack_rec.plugin_id_select = 8;
-+ pack_rec.fed.feature_list = list_create(slurm_destroy_char);
-+ slurm_addto_mode_char_list(pack_rec.fed.feature_list, "a,b,c", 0);
-+ ck_assert_int_eq(list_count(pack_rec.fed.feature_list), 3);
-
- /* will be tested separately. */
- pack_rec.root_assoc = NULL;
-@@ -126,9 +129,14 @@ START_TEST(pack_1702_rec)
- ck_assert_str_eq(pack_rec.name, unpack_rec->name);
- ck_assert_str_eq(pack_rec.nodes, unpack_rec->nodes);
-
-- /* 17.11 */
-- ck_assert(pack_rec.fed.feature_list == unpack_rec->fed.feature_list);
--
-+ char *feature;
-+ ck_assert_int_eq(list_count(pack_rec.fed.feature_list), list_count(unpack_rec->fed.feature_list));
-+ ListIterator itr = list_iterator_create(pack_rec.fed.feature_list);
-+ while ((feature = list_next(itr))) {
-+ if (!list_find_first(unpack_rec->fed.feature_list, slurm_find_char_in_list, feature))
-+ ck_abort_msg("Didn't find feature %s in unpacked list",
-+ feature);
-+ }
-
- FREE_NULL_LIST(pack_rec.accounting_list);
- xfree(pack_rec.control_host);
-@@ -140,7 +148,7 @@ START_TEST(pack_1702_rec)
- }
- END_TEST
-
--START_TEST(pack_1702_rec_null_ptrs)
-+START_TEST(pack_back2_rec_null_ptrs)
- {
- Buf buf = init_buf(1024);
- slurmdb_cluster_rec_t pack_rec = {0};
-@@ -185,7 +193,6 @@ START_TEST(pack_1702_rec_null_ptrs)
- ck_assert(pack_rec.rpc_version == unpack_rec->rpc_version);
- ck_assert(pack_rec.fed.recv == unpack_rec->fed.recv);
- ck_assert(pack_rec.fed.send == unpack_rec->fed.send);
-- /* 17.11 */
- ck_assert(pack_rec.fed.feature_list == unpack_rec->fed.feature_list);
-
- free_buf(buf);
-@@ -193,7 +200,7 @@ START_TEST(pack_1702_rec_null_ptrs)
- }
- END_TEST
-
--START_TEST(pack_1711_null_rec)
-+START_TEST(pack_back1_null_rec)
- {
- int rc;
- slurmdb_cluster_rec_t pack_rec;
-@@ -204,7 +211,6 @@ START_TEST(pack_1711_null_rec)
- pack_rec.fed.state = 0;
- pack_rec.dimensions = 1;
- pack_rec.plugin_id_select = NO_VAL;
--
- slurmdb_pack_cluster_rec(NULL, SLURM_ONE_BACK_PROTOCOL_VERSION, buf);
-
- set_buf_offset(buf, 0);
-@@ -218,7 +224,6 @@ START_TEST(pack_1711_null_rec)
- ck_assert(pack_rec.nodes == unpack_rec->nodes);
- ck_assert(pack_rec.fed.recv == unpack_rec->fed.recv);
- ck_assert(pack_rec.fed.send == unpack_rec->fed.send);
-- /* 17.11 */
- ck_assert(pack_rec.fed.feature_list == unpack_rec->fed.feature_list);
-
- /* root_assoc gets unpacked into a empty structure */
-@@ -237,7 +242,7 @@ START_TEST(pack_1711_null_rec)
- }
- END_TEST
-
--START_TEST(pack_1711_rec)
-+START_TEST(pack_back1_rec)
- {
- int rc;
- Buf buf = init_buf(1024);
-@@ -302,7 +307,6 @@ START_TEST(pack_1711_rec)
- ck_assert_str_eq(pack_rec.name, unpack_rec->name);
- ck_assert_str_eq(pack_rec.nodes, unpack_rec->nodes);
-
-- /* 17.11 */
- char *feature;
- ck_assert_int_eq(list_count(pack_rec.fed.feature_list), list_count(unpack_rec->fed.feature_list));
- ListIterator itr = list_iterator_create(pack_rec.fed.feature_list);
-@@ -322,7 +326,7 @@ START_TEST(pack_1711_rec)
- }
- END_TEST
-
--START_TEST(pack_1711_rec_null_ptrs)
-+START_TEST(pack_back1_rec_null_ptrs)
- {
- Buf buf = init_buf(1024);
- slurmdb_cluster_rec_t pack_rec = {0};
-@@ -367,7 +371,6 @@ START_TEST(pack_1711_rec_null_ptrs)
- ck_assert(pack_rec.rpc_version == unpack_rec->rpc_version);
- ck_assert(pack_rec.fed.recv == unpack_rec->fed.recv);
- ck_assert(pack_rec.fed.send == unpack_rec->fed.send);
-- /* 17.11 */
- ck_assert(pack_rec.fed.feature_list == unpack_rec->fed.feature_list);
-
- free_buf(buf);
-@@ -385,13 +388,13 @@ Suite* suite(void)
- TCase* tc_core = tcase_create("Pack slurmdb_cluster_rec_t");
- tcase_add_test(tc_core, invalid_protocol);
-
-- tcase_add_test(tc_core, pack_1711_null_rec);
-- tcase_add_test(tc_core, pack_1711_rec);
-- tcase_add_test(tc_core, pack_1711_rec_null_ptrs);
-+ tcase_add_test(tc_core, pack_back1_null_rec);
-+ tcase_add_test(tc_core, pack_back1_rec);
-+ tcase_add_test(tc_core, pack_back1_rec_null_ptrs);
-
-- tcase_add_test(tc_core, pack_1702_null_rec);
-- tcase_add_test(tc_core, pack_1702_rec);
-- tcase_add_test(tc_core, pack_1702_rec_null_ptrs);
-+ tcase_add_test(tc_core, pack_back2_null_rec);
-+ tcase_add_test(tc_core, pack_back2_rec);
-+ tcase_add_test(tc_core, pack_back2_rec_null_ptrs);
-
- suite_add_tcase(s, tc_core);
- return s;
diff --git a/slurm_pmix_soname.patch b/slurm_pmix_soname.patch
index 7557569..cb5f88e 100644
--- a/slurm_pmix_soname.patch
+++ b/slurm_pmix_soname.patch
@@ -1,23 +1,89 @@
diff --git a/src/plugins/mpi/pmix/mpi_pmix.c b/src/plugins/mpi/pmix/mpi_pmix.c
-index bbb947616c..65ec00ad73 100644
+index bbb947616c..b284af63f2 100644
--- a/src/plugins/mpi/pmix/mpi_pmix.c
+++ b/src/plugins/mpi/pmix/mpi_pmix.c
-@@ -105,10 +105,17 @@ static void *_libpmix_open(void)
+@@ -89,6 +89,8 @@ const uint32_t plugin_version = SLURM_VERSION_NUMBER;
+
+ void *libpmix_plug = NULL;
+
++static const char *pmix_libraries[] = { "libpmix.so", "libpmix.so.2", "libpmix.so.1" };
++
+ static void _libpmix_close(void *lib_plug)
+ {
+ xassert(lib_plug);
+@@ -99,15 +101,20 @@ static void *_libpmix_open(void)
+ {
+ void *lib_plug = NULL;
+ char *full_path = NULL;
++ size_t sz = 0;
+
+ #ifdef PMIXP_V1_LIBPATH
+ xstrfmtcat(full_path, "%s/", PMIXP_V1_LIBPATH);
#elif defined PMIXP_V2_LIBPATH
xstrfmtcat(full_path, "%s/", PMIXP_V2_LIBPATH);
#endif
- xstrfmtcat(full_path, "libpmix.so");
-+ xstrfmtcat(full_path, "libpmix.so.2");
- lib_plug = dlopen(full_path, RTLD_LAZY | RTLD_GLOBAL);
- xfree(full_path);
-
-+ if (!lib_plug) {
-+ dlerror();
-+ xstrfmtcat(full_path, "libpmix.so.1");
+- lib_plug = dlopen(full_path, RTLD_LAZY | RTLD_GLOBAL);
+- xfree(full_path);
++
++ while (!lib_plug && (sz < sizeof(pmix_libraries)/sizeof(pmix_libraries[0]))) {
++ xstrfmtcat(full_path, "%s", pmix_libraries[sz]);
+ lib_plug = dlopen(full_path, RTLD_LAZY | RTLD_GLOBAL);
+ xfree(full_path);
++ ++sz;
+ }
-+
+
if (lib_plug && (HAVE_PMIX_VER != pmixp_lib_get_version())) {
PMIXP_ERROR("pmi/pmix: incorrect PMIx library version loaded %d was loaded, required %d version",
- pmixp_lib_get_version(), (int)HAVE_PMIX_VER);
+diff --git a/src/plugins/mpi/pmix/pmixp_dconn_ucx.c b/src/plugins/mpi/pmix/pmixp_dconn_ucx.c
+index f6c91adc93..650fb7d5ff 100644
+--- a/src/plugins/mpi/pmix/pmixp_dconn_ucx.c
++++ b/src/plugins/mpi/pmix/pmixp_dconn_ucx.c
+@@ -140,6 +140,8 @@ static struct io_operations _progress_ops = {
+ .handle_read = _progress_read
+ };
+
++static const char *ucx_libraries[] = { "libucp.so", "libucp.so.0" };
++
+ static void *_ucx_init(int nodeid, pmixp_p2p_data_t direct_hdr);
+ static void _ucx_fini(void *_priv);
+ static int _ucx_connect(void *_priv, void *ep_data, size_t ep_len,
+@@ -161,15 +163,20 @@ static int _load_ucx_lib()
+ setenv("UCX_MEM_MALLOC_RELOC", "no", 1);
+ setenv("UCX_MEM_EVENTS", "no", 1);
+
++ size_t sz = 0;
++
+ #ifdef PMIXP_UCX_LIBPATH
+ /* If this Slurm build doesn't allow RPATH's
+ * try to open library by it's full path that
+ * we have from autoconf
+ */
+ char *full_path = NULL;
+- xstrfmtcat(full_path, "%s/libucp.so", PMIXP_UCX_LIBPATH);
+- _ucx_lib_handler = dlopen(full_path, RTLD_LAZY | RTLD_GLOBAL);
+- xfree(full_path);
++ while (!_ucx_lib_handler && (sz < sizeof(ucx_libraries)/sizeof(ucx_libraries[0]))) {
++ xstrfmtcat(full_path, "%s/%s", PMIXP_UCX_LIBPATH, ucx_libraries[sz]);
++ _ucx_lib_handler = dlopen(full_path, RTLD_LAZY | RTLD_GLOBAL);
++ xfree(full_path);
++ ++sz;
++ }
+ if (_ucx_lib_handler) {
+ /* successful, exit now */
+ return SLURM_SUCCESS;
+@@ -178,7 +185,13 @@ static int _load_ucx_lib()
+ * known by dynamic linker.
+ */
+ #endif
+- _ucx_lib_handler = dlopen("libucp.so", RTLD_LAZY | RTLD_GLOBAL);
++ sz = 0;
++ while (!_ucx_lib_handler && (sz < sizeof(ucx_libraries)/sizeof(ucx_libraries[0]))) {
++ xstrfmtcat(full_path, "%s", ucx_libraries[sz]);
++ _ucx_lib_handler = dlopen(full_path, RTLD_LAZY | RTLD_GLOBAL);
++ xfree(full_path);
++ ++sz;
++ }
+ if (!_ucx_lib_handler) {
+ char *err = dlerror();
+ PMIXP_ERROR("Cannot open UCX lib: %s", (err) ? err : "unknown");
diff --git a/sources b/sources
index bcddb1a..60733ef 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-SHA512 (slurm-19.05.0.tar.bz2) = f91efbd8c96c5c25dcf7c3f73f61ab9b5d591a554447e5a7db0346ace2e9a1053bebce5f16e9d15c23d78743319997aaac51f6d5bceda7cfaa4877a6f439cff1
+SHA512 (slurm-19.05.1-2.tar.bz2) = 49d7fc1bbb9d15a9459268a37742e983785d8fbdd19a771c0b07411fc4d9b6378f48614247991efce5b43c21c277a6b4e998b18231d839128fc5cf4a45172f9b
commit e783e4d3c91664d06eb70df63cd68a134bf2b177
Author: Philip Kovacs <pkdevel(a)yahoo.com>
Date: Fri Jul 5 12:55:57 2019 -0400
realign patch
diff --git a/slurm_libslurmfull_version.patch b/slurm_libslurmfull_version.patch
index d5362e5..26efdb9 100644
--- a/slurm_libslurmfull_version.patch
+++ b/slurm_libslurmfull_version.patch
@@ -1,6 +1,8 @@
+diff --git a/src/api/Makefile.am b/src/api/Makefile.am
+index d7e9d171cd..93ad848aeb 100644
--- a/src/api/Makefile.am
+++ b/src/api/Makefile.am
-@@ -44,12 +44,7 @@
+@@ -44,12 +44,7 @@ current = $(SLURM_API_CURRENT)
age = $(SLURM_API_AGE)
rev = $(SLURM_API_REVISION)
@@ -14,7 +16,7 @@
# BUILT_SOURCES tells automake that when "make" is called, these targets
# need to be built before anything else.
-@@ -137,7 +132,7 @@
+@@ -157,7 +152,7 @@ libslurmfull_la_SOURCES =
libslurmfull_la_LIBADD = $(convenience_libs)
libslurmfull_la_LDFLAGS = \
$(LIB_LDFLAGS) \
commit b5a466af2dd559afa64817cf37ccc0949b8a936d
Author: Philip Kovacs <pkdevel(a)yahoo.com>
Date: Fri Jul 5 12:54:05 2019 -0400
do not build/install pmi/pmi2
diff --git a/slurm.spec b/slurm.spec
index af321c4..a3ad352 100644
--- a/slurm.spec
+++ b/slurm.spec
@@ -32,7 +32,8 @@ Patch1: slurm_fix_testsuite.patch
Patch10: slurm_perlapi_rpaths.patch
Patch11: slurm_html_doc_path.patch
Patch12: slurm_doc_fix.patch
-Patch13: slurm_do_not_build_cray.patch
+Patch13: slurm_without_cray.patch
+Patch14: slurm_without_pmi.patch
# Fedora-related patches
Patch20: slurm_pmix_soname.patch
@@ -207,6 +208,7 @@ Torque wrapper scripts used for helping migrate from Torque/PBS to Slurm.
%patch11 -p1
%patch12 -p1
%patch13 -p1
+%patch14 -p1
%patch20 -p1
%patch21 -p1
%patch22 -p1
@@ -366,10 +368,6 @@ install -m 0644 contribs/lua/*.lua %{buildroot}%{_docdir}/%{name}/contribs/lua
# remove libtool archives
find %{buildroot} -name \*.a -o -name \*.la | xargs rm -f
-# remove pmi/pmi2 headers which are provided by pmix dependency
-rm -rf %{buildroot}%{_includedir}/%{name}/pmi*.h
-# remove libpmi/pmi2 libraries which are provided by pmix dependency
-rm -rf %{buildroot}%{_libdir}/libpmi*.so*
# remove libslurmfull symlink (non-development, internal library)
rm -rf %{buildroot}%{_libdir}/libslurmfull.so
# remove auth_none plugin
diff --git a/slurm_do_not_build_cray.patch b/slurm_do_not_build_cray.patch
deleted file mode 100644
index 8b994dc..0000000
--- a/slurm_do_not_build_cray.patch
+++ /dev/null
@@ -1,101 +0,0 @@
-diff --git a/contribs/Makefile.am b/contribs/Makefile.am
-index da96aa070d..2a2d1f2c82 100644
---- a/contribs/Makefile.am
-+++ b/contribs/Makefile.am
-@@ -1,4 +1,4 @@
--SUBDIRS = cray lua mic nss_slurm openlava pam pam_slurm_adopt perlapi pmi pmi2 seff sgather sgi sjobexit torque
-+SUBDIRS = lua mic nss_slurm openlava pam pam_slurm_adopt perlapi pmi pmi2 seff sgather sgi sjobexit torque
-
- EXTRA_DIST = \
- make-3.81.slurm.patch \
-diff --git a/src/plugins/acct_gather_energy/Makefile.am b/src/plugins/acct_gather_energy/Makefile.am
-index 50c4fd36a2..c826387219 100644
---- a/src/plugins/acct_gather_energy/Makefile.am
-+++ b/src/plugins/acct_gather_energy/Makefile.am
-@@ -1,3 +1,3 @@
- # Makefile for accounting gather energy plugins
-
--SUBDIRS = cray_aries rapl ibmaem ipmi none xcc
-+SUBDIRS = rapl ibmaem ipmi none xcc
-diff --git a/src/plugins/core_spec/Makefile.am b/src/plugins/core_spec/Makefile.am
-index 44b1ed67c0..f06bc541d7 100644
---- a/src/plugins/core_spec/Makefile.am
-+++ b/src/plugins/core_spec/Makefile.am
-@@ -1,3 +1,3 @@
- # Makefile for core specialization plugins
-
--SUBDIRS = cray_aries none
-+SUBDIRS = none
-diff --git a/src/plugins/job_container/Makefile.am b/src/plugins/job_container/Makefile.am
-index 8e1960a456..529a9d581d 100644
---- a/src/plugins/job_container/Makefile.am
-+++ b/src/plugins/job_container/Makefile.am
-@@ -1,3 +1,3 @@
- # Makefile for job_container plugins
-
--SUBDIRS = cncu none
-+SUBDIRS = none
-diff --git a/src/plugins/job_submit/Makefile.am b/src/plugins/job_submit/Makefile.am
-index e393bcfb1c..b98cf2e000 100644
---- a/src/plugins/job_submit/Makefile.am
-+++ b/src/plugins/job_submit/Makefile.am
-@@ -2,7 +2,6 @@
-
- SUBDIRS = \
- all_partitions \
-- cray_aries \
- defaults \
- logging \
- lua \
-diff --git a/src/plugins/node_features/Makefile.am b/src/plugins/node_features/Makefile.am
-index f5ef036303..d955c51ba1 100644
---- a/src/plugins/node_features/Makefile.am
-+++ b/src/plugins/node_features/Makefile.am
-@@ -1,3 +1,3 @@
- # Makefile for node_features plugins
-
--SUBDIRS = knl_cray knl_generic
-+SUBDIRS = knl_generic
-diff --git a/src/plugins/power/Makefile.am b/src/plugins/power/Makefile.am
-index ccde44c322..c6171740c1 100644
---- a/src/plugins/power/Makefile.am
-+++ b/src/plugins/power/Makefile.am
-@@ -1,3 +1,3 @@
- # Makefile for power management plugins
-
--SUBDIRS = common cray_aries none
-+SUBDIRS = common none
-diff --git a/src/plugins/select/Makefile.am b/src/plugins/select/Makefile.am
-index 09fdfd2313..570af23c4a 100644
---- a/src/plugins/select/Makefile.am
-+++ b/src/plugins/select/Makefile.am
-@@ -1,7 +1,7 @@
- # Makefile for node selection plugins
-
- # NOTE: other must be in the list before cray_aries lest the build break
--SUBDIRS = other cons_res cons_tres cray_aries linear
-+SUBDIRS = other cons_res cons_tres linear
-
- # Each plugin here needs a plugin_id, here are the currect plug_ids
- # for each plugin.
-diff --git a/src/plugins/switch/Makefile.am b/src/plugins/switch/Makefile.am
-index ddfe019a65..39a2b3eb7f 100644
---- a/src/plugins/switch/Makefile.am
-+++ b/src/plugins/switch/Makefile.am
-@@ -1,3 +1,3 @@
- # Makefile for switch plugins
-
--SUBDIRS = cray_aries generic none
-+SUBDIRS = generic none
-diff --git a/src/plugins/task/Makefile.am b/src/plugins/task/Makefile.am
-index 8d2a36eb68..607af1cb7c 100644
---- a/src/plugins/task/Makefile.am
-+++ b/src/plugins/task/Makefile.am
-@@ -1,6 +1,6 @@
- # Makefile for task plugins
-
--SUBDIRS = cray_aries none
-+SUBDIRS = none
-
- if HAVE_SCHED_SETAFFINITY
- SUBDIRS += affinity
diff --git a/slurm_without_cray.patch b/slurm_without_cray.patch
new file mode 100644
index 0000000..8b994dc
--- /dev/null
+++ b/slurm_without_cray.patch
@@ -0,0 +1,101 @@
+diff --git a/contribs/Makefile.am b/contribs/Makefile.am
+index da96aa070d..2a2d1f2c82 100644
+--- a/contribs/Makefile.am
++++ b/contribs/Makefile.am
+@@ -1,4 +1,4 @@
+-SUBDIRS = cray lua mic nss_slurm openlava pam pam_slurm_adopt perlapi pmi pmi2 seff sgather sgi sjobexit torque
++SUBDIRS = lua mic nss_slurm openlava pam pam_slurm_adopt perlapi pmi pmi2 seff sgather sgi sjobexit torque
+
+ EXTRA_DIST = \
+ make-3.81.slurm.patch \
+diff --git a/src/plugins/acct_gather_energy/Makefile.am b/src/plugins/acct_gather_energy/Makefile.am
+index 50c4fd36a2..c826387219 100644
+--- a/src/plugins/acct_gather_energy/Makefile.am
++++ b/src/plugins/acct_gather_energy/Makefile.am
+@@ -1,3 +1,3 @@
+ # Makefile for accounting gather energy plugins
+
+-SUBDIRS = cray_aries rapl ibmaem ipmi none xcc
++SUBDIRS = rapl ibmaem ipmi none xcc
+diff --git a/src/plugins/core_spec/Makefile.am b/src/plugins/core_spec/Makefile.am
+index 44b1ed67c0..f06bc541d7 100644
+--- a/src/plugins/core_spec/Makefile.am
++++ b/src/plugins/core_spec/Makefile.am
+@@ -1,3 +1,3 @@
+ # Makefile for core specialization plugins
+
+-SUBDIRS = cray_aries none
++SUBDIRS = none
+diff --git a/src/plugins/job_container/Makefile.am b/src/plugins/job_container/Makefile.am
+index 8e1960a456..529a9d581d 100644
+--- a/src/plugins/job_container/Makefile.am
++++ b/src/plugins/job_container/Makefile.am
+@@ -1,3 +1,3 @@
+ # Makefile for job_container plugins
+
+-SUBDIRS = cncu none
++SUBDIRS = none
+diff --git a/src/plugins/job_submit/Makefile.am b/src/plugins/job_submit/Makefile.am
+index e393bcfb1c..b98cf2e000 100644
+--- a/src/plugins/job_submit/Makefile.am
++++ b/src/plugins/job_submit/Makefile.am
+@@ -2,7 +2,6 @@
+
+ SUBDIRS = \
+ all_partitions \
+- cray_aries \
+ defaults \
+ logging \
+ lua \
+diff --git a/src/plugins/node_features/Makefile.am b/src/plugins/node_features/Makefile.am
+index f5ef036303..d955c51ba1 100644
+--- a/src/plugins/node_features/Makefile.am
++++ b/src/plugins/node_features/Makefile.am
+@@ -1,3 +1,3 @@
+ # Makefile for node_features plugins
+
+-SUBDIRS = knl_cray knl_generic
++SUBDIRS = knl_generic
+diff --git a/src/plugins/power/Makefile.am b/src/plugins/power/Makefile.am
+index ccde44c322..c6171740c1 100644
+--- a/src/plugins/power/Makefile.am
++++ b/src/plugins/power/Makefile.am
+@@ -1,3 +1,3 @@
+ # Makefile for power management plugins
+
+-SUBDIRS = common cray_aries none
++SUBDIRS = common none
+diff --git a/src/plugins/select/Makefile.am b/src/plugins/select/Makefile.am
+index 09fdfd2313..570af23c4a 100644
+--- a/src/plugins/select/Makefile.am
++++ b/src/plugins/select/Makefile.am
+@@ -1,7 +1,7 @@
+ # Makefile for node selection plugins
+
+ # NOTE: other must be in the list before cray_aries lest the build break
+-SUBDIRS = other cons_res cons_tres cray_aries linear
++SUBDIRS = other cons_res cons_tres linear
+
+ # Each plugin here needs a plugin_id, here are the currect plug_ids
+ # for each plugin.
+diff --git a/src/plugins/switch/Makefile.am b/src/plugins/switch/Makefile.am
+index ddfe019a65..39a2b3eb7f 100644
+--- a/src/plugins/switch/Makefile.am
++++ b/src/plugins/switch/Makefile.am
+@@ -1,3 +1,3 @@
+ # Makefile for switch plugins
+
+-SUBDIRS = cray_aries generic none
++SUBDIRS = generic none
+diff --git a/src/plugins/task/Makefile.am b/src/plugins/task/Makefile.am
+index 8d2a36eb68..607af1cb7c 100644
+--- a/src/plugins/task/Makefile.am
++++ b/src/plugins/task/Makefile.am
+@@ -1,6 +1,6 @@
+ # Makefile for task plugins
+
+-SUBDIRS = cray_aries none
++SUBDIRS = none
+
+ if HAVE_SCHED_SETAFFINITY
+ SUBDIRS += affinity
diff --git a/slurm_without_pmi.patch b/slurm_without_pmi.patch
new file mode 100644
index 0000000..a51659f
--- /dev/null
+++ b/slurm_without_pmi.patch
@@ -0,0 +1,22 @@
+diff --git a/Makefile.am b/Makefile.am
+index 064e992d53..10859a78a5 100644
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -29,7 +29,6 @@ EXTRA_DIST = \
+ META
+
+ pkginclude_HEADERS = \
+- slurm/pmi.h \
+ slurm/slurm.h \
+ slurm/slurmdb.h \
+ slurm/slurm_errno.h \
+diff --git a/contribs/Makefile.am b/contribs/Makefile.am
+index 2a2d1f2c82..d8d268c0e7 100644
+--- a/contribs/Makefile.am
++++ b/contribs/Makefile.am
+@@ -1,4 +1,4 @@
+-SUBDIRS = lua mic nss_slurm openlava pam pam_slurm_adopt perlapi pmi pmi2 seff sgather sgi sjobexit torque
++SUBDIRS = lua mic nss_slurm openlava pam pam_slurm_adopt perlapi seff sgather sgi sjobexit torque
+
+ EXTRA_DIST = \
+ make-3.81.slurm.patch \
commit 9145b02f82ae332c2aa4e25f0692b3296d8fce41
Merge: 4e6dca1 1a24687
Author: Philip Kovacs <pkdevel(a)yahoo.com>
Date: Fri Jul 5 10:02:15 2019 -0400
Merge branch 'f29'
commit 4e6dca18591b2679f26fe06664ef864040bf973b
Merge: baa6e3a 77f0f52
Author: Philip Kovacs <pkdevel(a)yahoo.com>
Date: Fri Jul 5 10:01:21 2019 -0400
Merge branch 'f30'
commit baa6e3a7d179a7c4d1ca008aa17f71176c49cb43
Author: Philip Kovacs <pkdevel(a)yahoo.com>
Date: Fri Jul 5 09:53:19 2019 -0400
use pmix as default mpi
diff --git a/slurm.conf b/slurm.conf
index e84d7a7..06539c9 100644
--- a/slurm.conf
+++ b/slurm.conf
@@ -31,7 +31,7 @@ CryptoType=crypto/munge
#MaxJobCount=5000
#MaxStepCount=40000
#MaxTasksPerNode=128
-MpiDefault=none
+MpiDefault=pmix
#MpiParams=ports=#-#
#PluginDir=
#PlugStackConfig=
4 years, 6 months
Architecture specific change in rpms/rust-zram-generator.git
by githook-noreply@fedoraproject.org
The package rpms/rust-zram-generator.git has added or updated architecture specific content in its
spec file (ExclusiveArch/ExcludeArch or %ifarch/%ifnarch) in commit(s):
https://src.fedoraproject.org/cgit/rpms/rust-zram-generator.git/commit/?i....
Change:
+ExclusiveArch: %{rust_arches}
Thanks.
Full change:
============
commit 58ba02525b95f7b9670246ec0d636fff88976323
Author: Zbigniew Jdrzejewski-Szmek <zbyszek(a)in.waw.pl>
Date: Mon Oct 7 19:02:15 2019 +0200
Update to 0.1.2
diff --git a/.gitignore b/.gitignore
index ad1679f..4f7fadf 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1 +1,2 @@
/zram-generator-0.1.1.crate
+/zram-generator-0.1.2.crate
diff --git a/rust-zram-generator.spec b/rust-zram-generator.spec
index 5356438..55796ca 100644
--- a/rust-zram-generator.spec
+++ b/rust-zram-generator.spec
@@ -5,18 +5,14 @@
%global crate zram-generator
Name: rust-%{crate}
-Version: 0.1.1
-Release: 5%{?dist}
+Version: 0.1.2
+Release: 1%{?dist}
Summary: Systemd unit generator for zram devices
# Upstream license specification: MIT
License: MIT
URL: https://crates.io/crates/zram-generator
Source: %{crates_source}
-# Initial patched metadata
-# * Update dependencies, https://github.com/systemd/zram-generator/commit/6f2b69c4a38b6da92fc4509b...
-# https://github.com/systemd/zram-generator/pull/2
-Patch0: zram-generator-fix-metadata.diff
ExclusiveArch: %{rust_arches}
@@ -64,6 +60,9 @@ mv -v %{buildroot}%{_bindir}/zram-generator %{buildroot}%{_systemdgeneratordir}/
%endif
%changelog
+* Mon Oct 7 2019 Zbigniew Jdrzejewski-Szmek <zbyszek(a)in.waw.pl> - 0.1.2-1
+- Update to latest version
+
* Fri Jul 26 2019 Fedora Release Engineering <releng(a)fedoraproject.org> - 0.1.1-5
- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
diff --git a/sources b/sources
index 77c79e1..7e537ba 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-SHA512 (zram-generator-0.1.1.crate) = b48638b4821fe914a2aa910fbabd060ea4f14a71a2db4010bbd3d3c9e50a64350f4a6e37223b035bdc45983fc10426693ebacda8979b9297ec3e7817ff78ac57
+SHA512 (zram-generator-0.1.2.crate) = 1b45fac0b4aa12f149b5e0c202b2a6fed36e245145b091e36bea26952e929ede412d1b1407e88ee8cc48ae3fb3b7c530966d1752b02f2473bc9fed188c4c1395
commit ea168784c6273d0e6c8a3e2a3d34ea3c319a701d
Author: Fedora Release Engineering <releng(a)fedoraproject.org>
Date: Fri Jul 26 22:33:21 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/rust-zram-generator.spec b/rust-zram-generator.spec
index 8f2e007..5356438 100644
--- a/rust-zram-generator.spec
+++ b/rust-zram-generator.spec
@@ -6,7 +6,7 @@
Name: rust-%{crate}
Version: 0.1.1
-Release: 4%{?dist}
+Release: 5%{?dist}
Summary: Systemd unit generator for zram devices
# Upstream license specification: MIT
@@ -64,6 +64,9 @@ mv -v %{buildroot}%{_bindir}/zram-generator %{buildroot}%{_systemdgeneratordir}/
%endif
%changelog
+* Fri Jul 26 2019 Fedora Release Engineering <releng(a)fedoraproject.org> - 0.1.1-5
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
+
* Mon Jul 22 21:30:22 CEST 2019 Igor Gnatenko <ignatenkobrain(a)fedoraproject.org> - 0.1.1-4
- Regenerate
commit e251a0e23910a95d17e2619fa0e7931ed2421de6
Author: Igor Gnatenko <ignatenkobrain(a)fedoraproject.org>
Date: Mon Jul 22 21:31:22 2019 +0200
Regenerate
Signed-off-by: Igor Gnatenko <ignatenkobrain(a)fedoraproject.org>
diff --git a/rust-zram-generator.spec b/rust-zram-generator.spec
index 3ab5bf2..8f2e007 100644
--- a/rust-zram-generator.spec
+++ b/rust-zram-generator.spec
@@ -1,13 +1,15 @@
-# Generated by rust2rpm
+# Generated by rust2rpm 10
%bcond_without check
+%global __cargo_skip_build 0
%global crate zram-generator
Name: rust-%{crate}
Version: 0.1.1
-Release: 3%{?dist}
+Release: 4%{?dist}
Summary: Systemd unit generator for zram devices
+# Upstream license specification: MIT
License: MIT
URL: https://crates.io/crates/zram-generator
Source: %{crates_source}
@@ -19,24 +21,19 @@ Patch0: zram-generator-fix-metadata.diff
ExclusiveArch: %{rust_arches}
BuildRequires: rust-packaging
-BuildRequires: (crate(failure/default) >= 0.1.2 with crate(failure/default) < 0.2.0)
-BuildRequires: (crate(failure_derive/default) >= 0.1.0 with crate(failure_derive/default) < 0.2.0)
-BuildRequires: (crate(rust-ini/default) >= 0.13.0 with crate(rust-ini/default) < 0.14.0)
-BuildRequires: systemd-rpm-macros
-%global _description \
-This is a systemd unit generator that creates a unit file to create a\
-zram device. To activate, copy\
-/usr/share/doc/rust-zram-generator/zram-generator.conf.example to\
-/etc/systemd/zram-generator.conf and possibly edit to adjust the limits.
+%global _description %{expand:
+This is a systemd unit generator that creates a unit file to create a
+zram device. To activate, copy
+/usr/share/doc/rust-zram-generator/zram-generator.conf.example to
+/etc/systemd/zram-generator.conf and possibly edit to adjust the limits.}
%description %{_description}
%package -n %{crate}
Summary: %{summary}
-%description -n %{crate}
-%{summary}.
+%description -n %{crate} %{_description}
%files -n %{crate}
%license LICENSE
@@ -48,6 +45,10 @@ Summary: %{summary}
%autosetup -n %{crate}-%{version_no_tilde} -p1
%cargo_prep
+%generate_buildrequires
+%cargo_generate_buildrequires
+echo 'systemd-rpm-macros'
+
%build
%cargo_build
@@ -63,6 +64,9 @@ mv -v %{buildroot}%{_bindir}/zram-generator %{buildroot}%{_systemdgeneratordir}/
%endif
%changelog
+* Mon Jul 22 21:30:22 CEST 2019 Igor Gnatenko <ignatenkobrain(a)fedoraproject.org> - 0.1.1-4
+- Regenerate
+
* Sat Mar 09 2019 Igor Gnatenko <ignatenkobrain(a)fedoraproject.org> - 0.1.1-3
- Adapt to new packaging
diff --git a/zram-generator-fix-metadata.diff b/zram-generator-fix-metadata.diff
index 87c5b31..2b0e9e5 100644
--- a/zram-generator-fix-metadata.diff
+++ b/zram-generator-fix-metadata.diff
@@ -1,5 +1,5 @@
---- zram-generator-0.1.1/Cargo.toml 1970-01-01T01:00:00+01:00
-+++ zram-generator-0.1.1/Cargo.toml 2019-03-09T15:07:29.700946+01:00
+--- zram-generator-0.1.1/Cargo.toml 1970-01-01T00:00:00+00:00
++++ zram-generator-0.1.1/Cargo.toml 2019-07-22T19:30:22.292519+00:00
@@ -18,10 +18,10 @@
homepage = "https://github.com/systemd/zram-generator"
license = "MIT"
commit 6c7263527135635642fc7a74cba45377911b7202
Author: Igor Gnatenko <ignatenkobrain(a)fedoraproject.org>
Date: Sat Mar 9 15:14:27 2019 +0100
BR: systemd-rpm-macros
Signed-off-by: Igor Gnatenko <ignatenkobrain(a)fedoraproject.org>
diff --git a/.rust2rpm.conf b/.rust2rpm.conf
new file mode 100644
index 0000000..4b8b165
--- /dev/null
+++ b/.rust2rpm.conf
@@ -0,0 +1,3 @@
+[DEFAULT]
+buildrequires =
+ systemd-rpm-macros
diff --git a/rust-zram-generator.spec b/rust-zram-generator.spec
index 362dc89..3ab5bf2 100644
--- a/rust-zram-generator.spec
+++ b/rust-zram-generator.spec
@@ -22,6 +22,7 @@ BuildRequires: rust-packaging
BuildRequires: (crate(failure/default) >= 0.1.2 with crate(failure/default) < 0.2.0)
BuildRequires: (crate(failure_derive/default) >= 0.1.0 with crate(failure_derive/default) < 0.2.0)
BuildRequires: (crate(rust-ini/default) >= 0.13.0 with crate(rust-ini/default) < 0.14.0)
+BuildRequires: systemd-rpm-macros
%global _description \
This is a systemd unit generator that creates a unit file to create a\
commit daf5eef5cf2b3b09209310eef3554b52a6e89eb3
Author: Igor Gnatenko <ignatenkobrain(a)fedoraproject.org>
Date: Sat Mar 9 15:08:00 2019 +0100
Update rust-ini to 0.13
Signed-off-by: Igor Gnatenko <ignatenkobrain(a)fedoraproject.org>
diff --git a/rust-zram-generator.spec b/rust-zram-generator.spec
index b445c2c..362dc89 100644
--- a/rust-zram-generator.spec
+++ b/rust-zram-generator.spec
@@ -13,6 +13,7 @@ URL: https://crates.io/crates/zram-generator
Source: %{crates_source}
# Initial patched metadata
# * Update dependencies, https://github.com/systemd/zram-generator/commit/6f2b69c4a38b6da92fc4509b...
+# https://github.com/systemd/zram-generator/pull/2
Patch0: zram-generator-fix-metadata.diff
ExclusiveArch: %{rust_arches}
@@ -20,7 +21,7 @@ ExclusiveArch: %{rust_arches}
BuildRequires: rust-packaging
BuildRequires: (crate(failure/default) >= 0.1.2 with crate(failure/default) < 0.2.0)
BuildRequires: (crate(failure_derive/default) >= 0.1.0 with crate(failure_derive/default) < 0.2.0)
-BuildRequires: (crate(rust-ini/default) >= 0.12.0 with crate(rust-ini/default) < 0.13.0)
+BuildRequires: (crate(rust-ini/default) >= 0.13.0 with crate(rust-ini/default) < 0.14.0)
%global _description \
This is a systemd unit generator that creates a unit file to create a\
diff --git a/zram-generator-fix-metadata.diff b/zram-generator-fix-metadata.diff
index ef3ebf0..87c5b31 100644
--- a/zram-generator-fix-metadata.diff
+++ b/zram-generator-fix-metadata.diff
@@ -1,5 +1,5 @@
--- zram-generator-0.1.1/Cargo.toml 1970-01-01T01:00:00+01:00
-+++ zram-generator-0.1.1/Cargo.toml 2019-03-09T14:58:31.909576+01:00
++++ zram-generator-0.1.1/Cargo.toml 2019-03-09T15:07:29.700946+01:00
@@ -18,10 +18,10 @@
homepage = "https://github.com/systemd/zram-generator"
license = "MIT"
@@ -12,4 +12,4 @@
[dependencies.rust-ini]
-version = "0.12"
-+version = "~0.12"
++version = "0.13"
commit 611c1e59385d9f5ccbe9d51c7241ad5c3e267b16
Author: Igor Gnatenko <ignatenkobrain(a)fedoraproject.org>
Date: Sat Mar 9 15:00:52 2019 +0100
Adapt to new packaging
Signed-off-by: Igor Gnatenko <ignatenkobrain(a)fedoraproject.org>
diff --git a/.gitignore b/.gitignore
index e69de29..ad1679f 100644
--- a/.gitignore
+++ b/.gitignore
@@ -0,0 +1 @@
+/zram-generator-0.1.1.crate
diff --git a/bump-versions.diff b/bump-versions.diff
deleted file mode 100644
index ed2e781..0000000
--- a/bump-versions.diff
+++ /dev/null
@@ -1,15 +0,0 @@
---- zram-generator-0.1.1/Cargo.toml~ 1970-01-01 01:00:00.000000000 +0100
-+++ zram-generator-0.1.1/Cargo.toml 2019-03-01 16:48:14.223492246 +0100
-@@ -18,10 +18,10 @@
- homepage = "https://github.com/systemd/zram-generator"
- license = "MIT"
- [dependencies.failure]
--version = "0.1"
-+version = "0.1.2"
-
- [dependencies.failure_derive]
- version = "0.1"
-
- [dependencies.rust-ini]
--version = "0.12"
-+version = "~0.12"
diff --git a/rust-zram-generator.spec b/rust-zram-generator.spec
index 8a72e86..b445c2c 100644
--- a/rust-zram-generator.spec
+++ b/rust-zram-generator.spec
@@ -5,39 +5,45 @@
Name: rust-%{crate}
Version: 0.1.1
-Release: 2%{?dist}
+Release: 3%{?dist}
Summary: Systemd unit generator for zram devices
License: MIT
-URL: https://github.com/systemd/zram-generator
-Source0: https://crates.io/api/v1/crates/%{crate}/%{version}/download#/%{crate}-%{...
+URL: https://crates.io/crates/zram-generator
+Source: %{crates_source}
+# Initial patched metadata
+# * Update dependencies, https://github.com/systemd/zram-generator/commit/6f2b69c4a38b6da92fc4509b...
+Patch0: zram-generator-fix-metadata.diff
ExclusiveArch: %{rust_arches}
BuildRequires: rust-packaging
-# [dependencies]
-BuildRequires: (crate(failure) >= 0.1.0 with crate(failure) < 0.2.0)
-BuildRequires: (crate(failure_derive) >= 0.1.0 with crate(failure_derive) < 0.2.0)
-BuildRequires: (crate(rust-ini) >= 0.12.0 with crate(rust-ini) < 1.0.0)
-
-BuildRequires: systemd
-
-Patch0: bump-versions.diff
-
-%description
-This is a systemd unit generator that creates a unit file to create a
-zram device. To activate, copy
-/usr/share/doc/rust-zram-generator/zram-generator.conf.example to
+BuildRequires: (crate(failure/default) >= 0.1.2 with crate(failure/default) < 0.2.0)
+BuildRequires: (crate(failure_derive/default) >= 0.1.0 with crate(failure_derive/default) < 0.2.0)
+BuildRequires: (crate(rust-ini/default) >= 0.12.0 with crate(rust-ini/default) < 0.13.0)
+
+%global _description \
+This is a systemd unit generator that creates a unit file to create a\
+zram device. To activate, copy\
+/usr/share/doc/rust-zram-generator/zram-generator.conf.example to\
/etc/systemd/zram-generator.conf and possibly edit to adjust the limits.
+%description %{_description}
+
%package -n %{crate}
Summary: %{summary}
%description -n %{crate}
%{summary}.
+%files -n %{crate}
+%license LICENSE
+%doc zram-generator.conf.example
+%doc README.md TODO
+%{_systemdgeneratordir}/zram-generator
+
%prep
-%autosetup -n %{crate}-%{version} -p1
+%autosetup -n %{crate}-%{version_no_tilde} -p1
%cargo_prep
%build
@@ -54,13 +60,10 @@ mv -v %{buildroot}%{_bindir}/zram-generator %{buildroot}%{_systemdgeneratordir}/
%cargo_test
%endif
-%files -n %{crate}
-%license LICENSE
-%doc zram-generator.conf.example
-%doc README.md TODO
-%{_systemdgeneratordir}/zram-generator
-
%changelog
+* Sat Mar 09 2019 Igor Gnatenko <ignatenkobrain(a)fedoraproject.org> - 0.1.1-3
+- Adapt to new packaging
+
* Fri Mar 1 2019 Zbigniew Jdrzejewski-Szmek <zbyszek(a)in.waw.pl> - 0.1.1-2
- Add crude patch to fix build (#1676154)
diff --git a/sources b/sources
index e69de29..77c79e1 100644
--- a/sources
+++ b/sources
@@ -0,0 +1 @@
+SHA512 (zram-generator-0.1.1.crate) = b48638b4821fe914a2aa910fbabd060ea4f14a71a2db4010bbd3d3c9e50a64350f4a6e37223b035bdc45983fc10426693ebacda8979b9297ec3e7817ff78ac57
diff --git a/zram-generator-0.1.1.crate b/zram-generator-0.1.1.crate
deleted file mode 100644
index 81ceec2..0000000
Binary files a/zram-generator-0.1.1.crate and /dev/null differ
diff --git a/zram-generator-fix-metadata.diff b/zram-generator-fix-metadata.diff
new file mode 100644
index 0000000..ef3ebf0
--- /dev/null
+++ b/zram-generator-fix-metadata.diff
@@ -0,0 +1,15 @@
+--- zram-generator-0.1.1/Cargo.toml 1970-01-01T01:00:00+01:00
++++ zram-generator-0.1.1/Cargo.toml 2019-03-09T14:58:31.909576+01:00
+@@ -18,10 +18,10 @@
+ homepage = "https://github.com/systemd/zram-generator"
+ license = "MIT"
+ [dependencies.failure]
+-version = "0.1"
++version = "0.1.2"
+
+ [dependencies.failure_derive]
+ version = "0.1"
+
+ [dependencies.rust-ini]
+-version = "0.12"
++version = "~0.12"
commit 46bdab198d73d8328941841a7edde7439edc4cbc
Author: Zbigniew Jdrzejewski-Szmek <zbyszek(a)in.waw.pl>
Date: Fri Mar 1 16:34:51 2019 +0100
Relax version requirement to fix build
diff --git a/bump-versions.diff b/bump-versions.diff
new file mode 100644
index 0000000..ed2e781
--- /dev/null
+++ b/bump-versions.diff
@@ -0,0 +1,15 @@
+--- zram-generator-0.1.1/Cargo.toml~ 1970-01-01 01:00:00.000000000 +0100
++++ zram-generator-0.1.1/Cargo.toml 2019-03-01 16:48:14.223492246 +0100
+@@ -18,10 +18,10 @@
+ homepage = "https://github.com/systemd/zram-generator"
+ license = "MIT"
+ [dependencies.failure]
+-version = "0.1"
++version = "0.1.2"
+
+ [dependencies.failure_derive]
+ version = "0.1"
+
+ [dependencies.rust-ini]
+-version = "0.12"
++version = "~0.12"
diff --git a/rust-zram-generator.spec b/rust-zram-generator.spec
index f13aaa5..8a72e86 100644
--- a/rust-zram-generator.spec
+++ b/rust-zram-generator.spec
@@ -18,10 +18,12 @@ BuildRequires: rust-packaging
# [dependencies]
BuildRequires: (crate(failure) >= 0.1.0 with crate(failure) < 0.2.0)
BuildRequires: (crate(failure_derive) >= 0.1.0 with crate(failure_derive) < 0.2.0)
-BuildRequires: (crate(rust-ini) >= 0.12.0 with crate(rust-ini) < 0.13.0)
+BuildRequires: (crate(rust-ini) >= 0.12.0 with crate(rust-ini) < 1.0.0)
BuildRequires: systemd
+Patch0: bump-versions.diff
+
%description
This is a systemd unit generator that creates a unit file to create a
zram device. To activate, copy
@@ -59,6 +61,9 @@ mv -v %{buildroot}%{_bindir}/zram-generator %{buildroot}%{_systemdgeneratordir}/
%{_systemdgeneratordir}/zram-generator
%changelog
+* Fri Mar 1 2019 Zbigniew Jdrzejewski-Szmek <zbyszek(a)in.waw.pl> - 0.1.1-2
+- Add crude patch to fix build (#1676154)
+
* Sat Feb 02 2019 Fedora Release Engineering <releng(a)fedoraproject.org> - 0.1.1-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild
commit e378da2df4367d24e93eb4e086fd57c960e39cc9
Author: Fedora Release Engineering <releng(a)fedoraproject.org>
Date: Sat Feb 2 14:39:36 2019 +0000
- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng(a)fedoraproject.org>
diff --git a/rust-zram-generator.spec b/rust-zram-generator.spec
index 379d081..f13aaa5 100644
--- a/rust-zram-generator.spec
+++ b/rust-zram-generator.spec
@@ -5,7 +5,7 @@
Name: rust-%{crate}
Version: 0.1.1
-Release: 1%{?dist}
+Release: 2%{?dist}
Summary: Systemd unit generator for zram devices
License: MIT
@@ -59,5 +59,8 @@ mv -v %{buildroot}%{_bindir}/zram-generator %{buildroot}%{_systemdgeneratordir}/
%{_systemdgeneratordir}/zram-generator
%changelog
+* Sat Feb 02 2019 Fedora Release Engineering <releng(a)fedoraproject.org> - 0.1.1-2
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild
+
* Thu Aug 16 2018 Zbigniew Jdrzejewski-Szmek <zbyszek(a)in.waw.pl> - 0.1.1-1
- Initial package
commit 08de400d3803c618b6e71340a1b5264bd06731f4
Author: Zbigniew Jdrzejewski-Szmek <zbyszek(a)in.waw.pl>
Date: Tue Aug 28 20:41:40 2018 +0200
Import package after review
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..e69de29
diff --git a/rust-zram-generator.spec b/rust-zram-generator.spec
new file mode 100644
index 0000000..379d081
--- /dev/null
+++ b/rust-zram-generator.spec
@@ -0,0 +1,63 @@
+# Generated by rust2rpm
+%bcond_without check
+
+%global crate zram-generator
+
+Name: rust-%{crate}
+Version: 0.1.1
+Release: 1%{?dist}
+Summary: Systemd unit generator for zram devices
+
+License: MIT
+URL: https://github.com/systemd/zram-generator
+Source0: https://crates.io/api/v1/crates/%{crate}/%{version}/download#/%{crate}-%{...
+
+ExclusiveArch: %{rust_arches}
+
+BuildRequires: rust-packaging
+# [dependencies]
+BuildRequires: (crate(failure) >= 0.1.0 with crate(failure) < 0.2.0)
+BuildRequires: (crate(failure_derive) >= 0.1.0 with crate(failure_derive) < 0.2.0)
+BuildRequires: (crate(rust-ini) >= 0.12.0 with crate(rust-ini) < 0.13.0)
+
+BuildRequires: systemd
+
+%description
+This is a systemd unit generator that creates a unit file to create a
+zram device. To activate, copy
+/usr/share/doc/rust-zram-generator/zram-generator.conf.example to
+/etc/systemd/zram-generator.conf and possibly edit to adjust the limits.
+
+%package -n %{crate}
+Summary: %{summary}
+
+%description -n %{crate}
+%{summary}.
+
+%prep
+%autosetup -n %{crate}-%{version} -p1
+%cargo_prep
+
+%build
+%cargo_build
+
+%install
+%cargo_install
+
+mkdir -p %{buildroot}%{_systemdgeneratordir}
+mv -v %{buildroot}%{_bindir}/zram-generator %{buildroot}%{_systemdgeneratordir}/
+
+%if %{with check}
+%check
+%cargo_test
+%endif
+
+%files -n %{crate}
+%license LICENSE
+%doc zram-generator.conf.example
+%doc README.md TODO
+%{_systemdgeneratordir}/zram-generator
+
+%changelog
+* Thu Aug 16 2018 Zbigniew Jdrzejewski-Szmek <zbyszek(a)in.waw.pl> - 0.1.1-1
+- Initial package
diff --git a/sources b/sources
new file mode 100644
index 0000000..e69de29
diff --git a/zram-generator-0.1.1.crate b/zram-generator-0.1.1.crate
new file mode 100644
index 0000000..81ceec2
Binary files /dev/null and b/zram-generator-0.1.1.crate differ
4 years, 6 months
Architecture specific change in rpms/qm-dsp.git
by githook-noreply@fedoraproject.org
The package rpms/qm-dsp.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/qm-dsp.git/commit/?id=53c676ef117....
Change:
+%ifarch aarch64
Thanks.
Full change:
============
commit 53c676ef1172c02469129c67c7f5b22858b7d29e
Author: Tomas Hrcka <thrcka(a)redhat.com>
Date: Mon Oct 7 14:24:51 2019 +0200
Revert "qm-dsp fails to build from source: https://bugzilla.redhat.com/show_bug.cgi?id=1675833"
This reverts commit 52fc4f97926f26880900f66cbe65a096545f2d12.
Unretirement request: https://pagure.io/releng/issue/8871
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..0420e55
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,2 @@
+/qm-dsp-1.7.tar.gz
+/qm-dsp-1.7.1.tar.gz
diff --git a/dead.package b/dead.package
deleted file mode 100644
index 62cf9e5..0000000
--- a/dead.package
+++ /dev/null
@@ -1 +0,0 @@
-qm-dsp fails to build from source: https://bugzilla.redhat.com/show_bug.cgi?id=1675833
diff --git a/qm-dsp-flags.patch b/qm-dsp-flags.patch
new file mode 100644
index 0000000..b65de31
--- /dev/null
+++ b/qm-dsp-flags.patch
@@ -0,0 +1,21 @@
+Author: Frantiek Dvok <valtri(a)civ.zcu.cz>
+Date: Wed Nov 4 14:11:41 2015 +0100
+
+ Build flags and not using internal lapack headers.
+
+diff --git a/Makefile b/Makefile
+index e501466..7f91722 100644
+--- a/Makefile
++++ b/Makefile
+@@ -1,9 +1,10 @@
+
+-CFLAGS := -DNDEBUG -O3 -fPIC -ffast-math -msse -mfpmath=sse -ftree-vectorize -fomit-frame-pointer -DUSE_PTHREADS -I./include
++CFLAGS := -DNDEBUG -fPIC -ffast-math -ftree-vectorize -fomit-frame-pointer -DUSE_PTHREADS -I./include $(CFLAGS)
+
+ #CFLAGS := -DNDEBUG -g -fPIC -DUSE_PTHREADS -I./include
+
+ CXXFLAGS := $(CFLAGS)
++LDFLAGS := $(LDFLAGS)
+
+ include build/general/Makefile.inc
+
diff --git a/qm-dsp-install.patch b/qm-dsp-install.patch
new file mode 100644
index 0000000..9554089
--- /dev/null
+++ b/qm-dsp-install.patch
@@ -0,0 +1,65 @@
+Author: Frantiek Dvok <valtri(a)civ.zcu.cz>
+Date: Wed Nov 4 20:25:16 2015 +0100
+
+ Update Makefile:
+ * install target: headers, static library
+ * add missing header
+ * kill bundled kissfft
+
+diff --git a/build/general/Makefile.inc b/build/general/Makefile.inc
+index da0644b..b3a7319 100644
+--- a/build/general/Makefile.inc
++++ b/build/general/Makefile.inc
+@@ -4,9 +4,10 @@ CXX ?= g++
+ CC ?= gcc
+ AR ?= ar
+ RANLIB ?= ranlib
++INSTALL ?= install -p
+
+-CFLAGS := $(CFLAGS) -I. -Iext/kissfft -Iext/kissfft/tools -Dkiss_fft_scalar=double
+-CXXFLAGS := $(CXXFLAGS) -I. -Iext/kissfft -Iext/kissfft/tools -Dkiss_fft_scalar=double
++CFLAGS := $(CFLAGS) -I. -Dkiss_fft_scalar=double
++CXXFLAGS := $(CXXFLAGS) -I. -Dkiss_fft_scalar=double
+
+ HEADERS := base/Pitch.h \
+ base/Window.h \
+@@ -47,13 +48,12 @@ HEADERS := base/Pitch.h \
+ maths/MathAliases.h \
+ maths/MathUtilities.h \
+ maths/MedianFilter.h \
++ maths/nan-inf.h \
+ maths/Polyfit.h \
+ maths/pca/pca.h \
+ thread/AsynchronousTask.h \
+ thread/BlockAllocator.h \
+- thread/Thread.h \
+- ext/kissfft/kiss_fft.h \
+- ext/kissfft/tools/kiss_fftr.h
++ thread/Thread.h
+
+ SOURCES := base/Pitch.cpp \
+ base/KaiserWindow.cpp \
+@@ -91,9 +91,7 @@ SOURCES := base/Pitch.cpp \
+ maths/KLDivergence.cpp \
+ maths/MathUtilities.cpp \
+ maths/pca/pca.c \
+- thread/Thread.cpp \
+- ext/kissfft/kiss_fft.c \
+- ext/kissfft/tools/kiss_fftr.c
++ thread/Thread.cpp
+
+ OBJECTS := $(SOURCES:.cpp=.o)
+ OBJECTS := $(OBJECTS:.c=.o)
+@@ -106,6 +104,12 @@ $(LIBRARY): $(OBJECTS)
+ depend:
+ makedepend -fbuild/general/Makefile.inc -Y -- $(CFLAGS) -- $(SOURCES)
+
++install:
++ $(INSTALL) -D -m 0644 $(LIBRARY) $(DESTDIR)$(LIBDIR)/$(LIBRARY)
++ for h in $(HEADERS); do \
++ $(INSTALL) -D -m 0644 $$h $(DESTDIR)$(PREFIX)/include/qm-dsp/$$h; \
++ done
++
+ clean:
+ rm -f $(OBJECTS)
+
diff --git a/qm-dsp.spec b/qm-dsp.spec
new file mode 100644
index 0000000..e98527a
--- /dev/null
+++ b/qm-dsp.spec
@@ -0,0 +1,155 @@
+# debuginfo not supported for static libraries, RB #209316
+%global debug_package %{nil}
+
+Name: qm-dsp
+Version: 1.7.1
+Release: 9%{?dist}
+Summary: Library for DSP and Music Informatics purposes
+
+# some source files with different original licenses, see README.txt
+License: GPLv2+
+# original homepage: http://isophonics.net/QMVampPlugins
+URL: http://vamp-plugins.org/plugin-doc/qm-vamp-plugins.html
+Source0: https://code.soundsoftware.ac.uk/attachments/download/1582/%{name}-%{vers...
+# build flags
+# (not intended for upstream)
+Patch0: qm-dsp-flags.patch
+# install header files
+# http://vamp-plugins.org/forum/index.php/topic,270.0.html
+Patch1: qm-dsp-install.patch
+
+BuildRequires: gcc-c++
+BuildRequires: atlas-devel
+BuildRequires: imake
+BuildRequires: kiss-fft-static
+BuildRequires: valgrind
+%if 0%{?rhel} && 0%{?rhel} <= 7
+BuildRequires: boost148-devel
+%else
+BuildRequires: boost-devel
+%endif
+
+%description
+%{name} is a C++ library of functions for DSP and Music Informatics purposes
+developed at Queen Mary, University of London. It is used by the QM Vamp
+Plugins (q.v.) among other things.
+
+
+%package devel
+Summary: %{summary}
+Provides: %{name}-static = %{version}-%{release}
+
+%description devel
+%{name} is a C++ library of functions for DSP and Music Informatics purposes
+developed at Queen Mary, University of London. It is used by the QM Vamp
+Plugins (q.v.) among other things.
+
+This package contains header files and static library for development with
+qm-dsp.
+
+
+%prep
+%setup -q
+cp -p build/linux/Makefile.linux32 Makefile
+%patch0 -p1
+%patch1 -p1
+# use specified CFLAGS for tests
+cat >> tests/Makefile <<EOF
+
+%.o: %.cpp
+ \$(CXX) \$(CPPFLAGS) \$(CFLAGS) -c \$<
+EOF
+# unbundle kiss-fft
+rm -rf ext/
+# helper Makefile without valgrind
+sed -e 's/$(VG) //' tests/Makefile > tests/Makefile.novg
+
+
+%build
+# unbundle kiss-fft
+make depend
+
+# extra cflags used in upstream
+%ifarch %{ix86}
+EXTRA_CFLAGS="-msse -mfpmath=sse"
+%endif
+%ifarch x86_64
+EXTRA_CFLAGS="-msse -msse2 -mfpmath=sse"
+%endif
+
+# build
+CFLAGS="$EXTRA_CFLAGS %{?optflags} -I%{_includedir}/kissfft" \
+LDFLAGS="%{?__global_ldflags}" \
+make %{?_smp_mflags}
+
+
+%install
+make install DESTDIR=%{buildroot} PREFIX=%{_prefix} LIBDIR=%{_libdir}
+
+
+%check
+%if 0%{?rhel} && 0%{?rhel} <= 7
+BOOST_CPPFLAGS="-I%{_includedir}/boost148"
+BOOST_LDFLAGS="-L%{_libdir}/boost148"
+%endif
+# disable valgrind on AArch64
+%ifarch aarch64
+MAKE_ARGS='-f Makefile.novg'
+%endif
+CFLAGS="${BOOST_CPPFLAGS} %{?optflags} -Dkiss_fft_scalar=double" \
+LDFLAGS="${BOOST_LDFLAGS} %{?__global_ldflags} -lkiss_fft_double -lkiss_fftr_double" \
+make %{?_smp_mflags} -C tests $MAKE_ARGS
+
+
+%files devel
+%license COPYING
+%doc README.txt
+%{_libdir}/libqm-dsp.a
+%{_includedir}/%{name}/
+
+
+%changelog
+* Fri Jul 26 2019 Fedora Release Engineering <releng(a)fedoraproject.org> - 1.7.1-9
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
+
+* Sat Feb 02 2019 Fedora Release Engineering <releng(a)fedoraproject.org> - 1.7.1-8
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild
+
+* Sat Jul 14 2018 Fedora Release Engineering <releng(a)fedoraproject.org> - 1.7.1-7
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild
+
+* Fri Feb 09 2018 Fedora Release Engineering <releng(a)fedoraproject.org> - 1.7.1-6
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild
+
+* Thu Aug 03 2017 Fedora Release Engineering <releng(a)fedoraproject.org> - 1.7.1-5
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild
+
+* Thu Jul 27 2017 Fedora Release Engineering <releng(a)fedoraproject.org> - 1.7.1-4
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild
+
+* Thu Feb 16 2017 Frantiek Dvok <valtri(a)civ.zcu.cz> - 1.7.1-3
+- Disable valgrind on AArch64
+
+* Sat Feb 11 2017 Fedora Release Engineering <releng(a)fedoraproject.org> - 1.7.1-2
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild
+
+* Mon Nov 14 2016 Frantiek Dvok <valtri(a)civ.zcu.cz> - 1.7.1-1
+- Update to 1.7.1 (#1279112)
+- New homepage
+- Unbundled new kiss-fft library
+- Removed C++ patch released in upstream
+- Rebased build flags and install patches
+- New packaging guidelines (license tag)
+- Enabled tests
+
+* Thu Feb 04 2016 Fedora Release Engineering <releng(a)fedoraproject.org> - 1.7-4
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild
+
+* Thu Jun 18 2015 Fedora Release Engineering <rel-eng(a)lists.fedoraproject.org> - 1.7-3
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild
+
+* Wed Nov 05 2014 Frantiek Dvok <valtri(a)civ.zcu.cz> - 1.7-2
+- Updated patches and added comments
+
+* Sun Aug 3 2014 Frantiek Dvok <valtri(a)civ.zcu.cz> - 1.7-1
+- Initial package
diff --git a/sources b/sources
new file mode 100644
index 0000000..fe867ff
--- /dev/null
+++ b/sources
@@ -0,0 +1 @@
+9c7a7b15926000e15a9e3c7c06492e58 qm-dsp-1.7.1.tar.gz
4 years, 6 months
[Report] Packages Restricting Arches
by root
List of packages currently excluding arches (2567)
===========================================
- 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}
- 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
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- docker-distribution
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- dolphin-emu
ExclusiveArch: x86_64 armv7l aarch64
- 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
- embree2
ExclusiveArch: x86_64
- enki
ExclusiveArch: %{qt5_qtwebengine_arches} noarch
- envytools
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64
- exciting
ExclusiveArch: x86_64 %{ix86}
ExclusiveArch: x86_64 %{ix86} aarch64 %{power64}
ExclusiveArch: x86_64 %{ix86} aarch64 %{arm} %{power64}
- expresso
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- extlinux-bootloader
ExclusiveArch: %{arm} aarch64
- fcitx-libpinyin
ExclusiveArch: %{qt5_qtwebengine_arches}
- fedora-dockerfiles
ExclusiveArch: %{go_arches}
- fence-virt
ExclusiveArch: i686 x86_64
- 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} %{ix86} x86_64 ppc ppc64
- 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 ppc64 s390x
- glibd
ExclusiveArch: %{ldc_arches}
- glusterd2
ExclusiveArch: %{go_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
- icaro
ExclusiveArch: %{ix86} x86_64 noarch
- 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
- 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
- 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
- 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}
- libica
ExclusiveArch: s390 s390x
- libipt
ExclusiveArch: %{ix86} x86_64
ExclusiveArch: %{ix86} x86_64
- libmfx
ExclusiveArch: %{ix86} x86_64
- libocxl
ExclusiveArch: ppc64le
- libpmemobj-cpp
ExclusiveArch: x86_64
- libpsm2
ExclusiveArch: x86_64
- libquentier
ExclusiveArch: %{qt5_qtwebengine_arches}
- librtas
ExclusiveArch: %{power64}
- libseccomp
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64 mipsel mips64el ppc64 ppc64le s390 s390x
- 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
- 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
- maven-eclipse-plugin
ExclusiveArch: %{ix86} x86_64
- maxima
ExclusiveArch: %{arm} %{ix86} x86_64 aarch64 ppc sparcv9
ExclusiveArch: %{ix86} x86_64 ppc sparcv9
- 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
- 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-arm-binutils
ExclusiveArch: x86_64
- 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}
ExclusiveArch: %{ix86} x86_64 %{arm}
- 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-buffertools
ExclusiveArch: %{nodejs_arches}
- 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
ExclusiveArch: %{ix86} x86_64 %{arm} 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-compressible
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} 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-encodeurl
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
ExclusiveArch: %{ix86} x86_64 %{arm} 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-finalhandler
ExclusiveArch: %{nodejs_arches} 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-flot
ExclusiveArch: %{nodejs_arches} 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
ExclusiveArch: %{ix86} x86_64 %{arm} 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-method-override
ExclusiveArch: %{nodejs_arches} 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-moment
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} 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-negotiator
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} 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-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-send
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} 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
ExclusiveArch: %{ix86} x86_64 %{arm} 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-stylus
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-tilejson
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-tilelive
ExclusiveArch: %{nodejs_arches} 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-register-machine
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- 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
- 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-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}
- 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-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-threadpool
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-aho-corasick
ExclusiveArch: %{rust_arches}
- rust-alga
ExclusiveArch: %{rust_arches}
- rust-alga_derive
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-aom-sys
ExclusiveArch: %{rust_arches}
- rust-approx
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-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-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-bat
ExclusiveArch: %{rust_arches}
- rust-bencher
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-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-sys
ExclusiveArch: %{rust_arches}
- rust-brotli2
ExclusiveArch: %{rust_arches}
- rust-bstr
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-byteorder
ExclusiveArch: %{rust_arches}
- rust-bytes
ExclusiveArch: %{rust_arches}
- rust-bytes0.3
ExclusiveArch: %{rust_arches}
- rust-bytesize
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_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-chbs
ExclusiveArch: %{rust_arches}
- rust-checked_int_cast
ExclusiveArch: %{rust_arches}
- rust-chrono
ExclusiveArch: %{rust_arches}
- rust-chrono-humanize
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-comrak
ExclusiveArch: %{rust_arches}
- rust-config
ExclusiveArch: %{rust_arches}
- rust-console
ExclusiveArch: %{rust_arches}
- rust-content_inspector
ExclusiveArch: %{rust_arches}
- rust-copyless
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-deque
ExclusiveArch: %{rust_arches}
- rust-crossbeam-epoch
ExclusiveArch: %{rust_arches}
- rust-crossbeam-queue
ExclusiveArch: %{rust_arches}
- rust-crossbeam-utils
ExclusiveArch: %{rust_arches}
- rust-crossterm
ExclusiveArch: %{rust_arches}
- rust-crossterm_cursor
ExclusiveArch: %{rust_arches}
- rust-crossterm_input
ExclusiveArch: %{rust_arches}
- rust-crossterm_screen
ExclusiveArch: %{rust_arches}
- rust-crossterm_style
ExclusiveArch: %{rust_arches}
- rust-crossterm_terminal
ExclusiveArch: %{rust_arches}
- rust-crossterm_utils
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-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-envsubst
ExclusiveArch: %{rust_arches}
- rust-erased-serde
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-ffsend
ExclusiveArch: %{rust_arches}
- rust-ffsend-api
ExclusiveArch: %{rust_arches}
- rust-filetime
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-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-async-runtime-preview
ExclusiveArch: %{rust_arches}
- rust-futures-channel-preview
ExclusiveArch: %{rust_arches}
- rust-futures-core
ExclusiveArch: %{rust_arches}
- rust-futures-core-preview
ExclusiveArch: %{rust_arches}
- rust-futures-cpupool
ExclusiveArch: %{rust_arches}
- rust-futures-executor-preview
ExclusiveArch: %{rust_arches}
- rust-futures-io-preview
ExclusiveArch: %{rust_arches}
- rust-futures-preview
ExclusiveArch: %{rust_arches}
- rust-futures-sink-preview
ExclusiveArch: %{rust_arches}
- rust-futures-stable-preview
ExclusiveArch: %{rust_arches}
- rust-futures-util-preview
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-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-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-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-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-tls
ExclusiveArch: %{rust_arches}
- rust-hyper0.10
ExclusiveArch: %{rust_arches}
- rust-hyperfine
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-ipnetwork
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-jetscii
ExclusiveArch: %{rust_arches}
- rust-jobserver
ExclusiveArch: %{rust_arches}
- rust-jpeg-decoder
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-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-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-man
ExclusiveArch: %{rust_arches}
- rust-maplit
ExclusiveArch: %{rust_arches}
- rust-markup5ever
ExclusiveArch: %{rust_arches}
- rust-matches
ExclusiveArch: %{rust_arches}
- rust-matrixmultiply
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-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-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-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-objekt
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_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-paste
ExclusiveArch: %{rust_arches}
- rust-paste-impl
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-phf_codegen
ExclusiveArch: %{rust_arches}
- rust-phf_generator
ExclusiveArch: %{rust_arches}
- rust-phf_shared
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-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-hack
ExclusiveArch: %{rust_arches}
- rust-proc-macro2
ExclusiveArch: %{rust_arches}
- rust-proc-macro2-0.4
ExclusiveArch: %{rust_arches}
- rust-procedural-masquerade
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-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-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_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-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-rgb
ExclusiveArch: %{rust_arches}
- rust-ripgrep
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-rustc-demangle
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-rusty-fork
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-pickle
ExclusiveArch: %{rust_arches}
- rust-serde-xml-rs
ExclusiveArch: %{rust_arches}
- rust-serde0.8
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_json0.8
ExclusiveArch: %{rust_arches}
- rust-serde_stacker
ExclusiveArch: %{rust_arches}
- rust-serde_test
ExclusiveArch: %{rust_arches}
- rust-serde_urlencoded
ExclusiveArch: %{rust_arches}
- rust-serde_urlencoded0.5
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-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-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-slotmap0.2
ExclusiveArch: %{rust_arches}
- rust-slug
ExclusiveArch: %{rust_arches}
- rust-smallvec
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-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-strsim
ExclusiveArch: %{rust_arches}
- rust-structopt
ExclusiveArch: %{rust_arches}
- rust-structopt-derive
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-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-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-textwrap
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-timebomb
ExclusiveArch: %{rust_arches}
- rust-timer
ExclusiveArch: %{rust_arches}
- rust-timerfd
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-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-threadpool
ExclusiveArch: %{rust_arches}
- rust-tokio-timer
ExclusiveArch: %{rust_arches}
- rust-tokio-tls
ExclusiveArch: %{rust_arches}
- rust-tokio-trace-core
ExclusiveArch: %{rust_arches}
- rust-tokio-udp
ExclusiveArch: %{rust_arches}
- rust-tokio-uds
ExclusiveArch: %{rust_arches}
- rust-toml
ExclusiveArch: %{rust_arches}
- rust-toml0.4
ExclusiveArch: %{rust_arches}
- rust-traitobject
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_or
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-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-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-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-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-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}
- 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}
- 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
ExclusiveArch: %{ix86} x86_64 %{arm} 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
- virtio-forwarder
ExclusiveArch: x86_64 aarch64 ppc64le %ix86
- 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
- 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
- wraplinux
ExclusiveArch: %{ix86} x86_64
- wxMaxima
ExclusiveArch: %{arm} %{ix86} x86_64 aarch64 ppc sparcv9
- x2goclient
ExclusiveArch: x86_64
- xe-guest-utilities
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-geode
ExclusiveArch: %{ix86}
- xorg-x11-drv-intel
ExclusiveArch: %{ix86} x86_64 ia64
- 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, 6 months
Architecture specific change in rpms/calibre.git
by githook-noreply@fedoraproject.org
The package rpms/calibre.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/calibre.git/commit/?id=6206f889ed....
Change:
+ExclusiveArch: %{qt5_qtwebengine_arches}
Thanks.
Full change:
============
commit e14c1d06e56e9b9c71100811aa3aecd63abd840f
Merge: 3422c2d 6206f88
Author: Kevin Fenzi <kevin(a)scrye.com>
Date: Sun Oct 6 09:49:30 2019 -0700
Merge remote-tracking branch 'origin/master' into f31
Signed-off-by: Kevin Fenzi <kevin(a)scrye.com>
diff --cc calibre.spec
index f8ebb3e,cfefc80..418d13a
--- a/calibre.spec
+++ b/calibre.spec
@@@ -407,6 -415,18 +415,19 @@@ ln -s %{_jsdir}/mathjax %{_datadir}/cal
* Fri Sep 13 2019 Zbigniew Jdrzejewski-Szmek <zbyszek(a)in.waw.pl> - 3.48.0-1
- Update to 3.48.0 (#1751909)
+ * Tue Sep 03 2019 Kevin Fenzi <kevin(a)scrye.com> - 3.47.1-2
+ - Adjust sip requires to Require the python3-sip-api package.
+
+ * Mon Sep 02 2019 Kevin Fenzi <kevin(a)scrye.com> - 3.47.1-1
+ - Update 3.47.1. Fixes bug #1747848
+
+ * Sat Aug 31 2019 Kevin Fenzi <kevin(a)scrye.com> - 3.47.0-1
+ - Update to 3.47.0
+
+ * Tue Aug 20 2019 Zbigniew Jdrzejewski-Szmek <zbyszek(a)in.waw.pl> - 3.46.0-2.git20190819
+ - Rebuilt for Python 3.8
+
++>>>>>>> origin/master
* Mon Aug 19 2019 Zbigniew Jdrzejewski-Szmek <zbyszek(a)in.waw.pl> - 3.46.0-1.git20190819
- Update to the latest version + various patches (#1667497)
commit 6206f889edd0455cb5ed48f333b5df261f5f89a9
Author: Kevin Fenzi <kevin(a)scrye.com>
Date: Sat Oct 5 18:49:16 2019 -0700
Update to 4.0.
diff --git a/.gitignore b/.gitignore
index 51fd4d3..d2ea47c 100644
--- a/.gitignore
+++ b/.gitignore
@@ -289,3 +289,4 @@ calibre-0.7.14-nofonts.tar.xz
/calibre-3.47.0-nofonts.tar.xz
/calibre-3.47.1-nofonts.tar.xz
/calibre-3.48.0-nofonts.tar.xz
+/calibre-4.0.0-nofonts.tar.xz
diff --git a/calibre.spec b/calibre.spec
index 289c706..cfefc80 100644
--- a/calibre.spec
+++ b/calibre.spec
@@ -5,8 +5,8 @@
%global _python_bytecompile_extra 0
Name: calibre
-Version: 3.48.0
-Release: 3%{?dist}
+Version: 4.0.0
+Release: 1%{?dist}
Summary: E-book converter and library manager
License: GPLv3
URL: https://calibre-ebook.com/
@@ -35,11 +35,11 @@ Patch4: https://github.com/keszybz/calibre/commit/497810f8adb992bfecf04e
# sgml was removed, so disable test for it.
Patch5: https://github.com/keszybz/calibre/commit/01bf854923741bf8d6a6328f17d61e0...
+ExclusiveArch: %{qt5_qtwebengine_arches}
BuildRequires: python3-devel
BuildRequires: python3-setuptools
BuildRequires: python3-qt5-devel
BuildRequires: python3-qt5
-BuildRequires: python3-qt5-webkit
BuildRequires: podofo-devel
BuildRequires: desktop-file-utils
BuildRequires: xdg-utils
@@ -54,7 +54,6 @@ BuildRequires: web-assets-devel
BuildRequires: qt5-qtbase-static
BuildRequires: libXrender-devel
BuildRequires: systemd-devel
-BuildRequires: qt5-qtwebkit-devel
BuildRequires: openssl-devel
# calibre installer is so smart that it check for the presence of the
# directory (and then installs in the wrong place)
@@ -84,6 +83,9 @@ BuildRequires: python3dist(html2text)
BuildRequires: python3dist(zeroconf)
BuildRequires: python3dist(markdown) >= 3.0
BuildRequires: python3dist(dukpy)
+BuildRequires: hunspell-devel
+BuildRequires: qt5-qtwebengine-devel
+BuildRequires: python-qt5-webengine
# Those are only used for tests. Do not add to runtime deps.
BuildRequires: /usr/bin/jpegtran
BuildRequires: /usr/bin/JxrDecApp
@@ -99,8 +101,8 @@ BuildRequires: qt5-qtbase-private-devel
%{?_qt5:Requires: %{_qt5}%{?_isa} = %{_qt5_version}}
Requires: python3-qt5
-Requires: python3-qt5-webkit
-Requires: qt5-qtwebkit
+Requires: python-qt5-webengine
+Requires: qt5-qtwebengine
Requires: qt5-qtsvg
Requires: qt5-qtsensors
Requires: poppler-utils
@@ -162,7 +164,7 @@ chmod -x src/calibre/*/*/*/*.py \
src/calibre/*/*.py \
src/calibre/*.py
-rm -rvf resources/viewer/mathjax
+rm -rvf resources/mathjax
# Skip tests that require removed fonts
sed -r -i 's/\b(test_actual_case|test_clone|test_file_add|test_file_removal|test_file_rename|test_folder_type_map_case|test_merge_file)\b/_skipped_\1/' src/calibre/ebooks/oeb/polish/tests/container.py
@@ -360,10 +362,10 @@ CALIBRE_PY3_PORT=1 python3 setup.py test \
appstream-util validate-relax --nonet %{buildroot}%{_datadir}/metainfo/calibre-gui.appdata.xml
%preun
-rm %{_datadir}/calibre/viewer/mathjax
+rm -f %{_datadir}/calibre/mathjax
%posttrans
-ln -s %{_jsdir}/mathjax %{_datadir}/calibre/viewer/
+ln -s %{_jsdir}/mathjax %{_datadir}/calibre/
%files
%doc COPYRIGHT LICENSE Changelog.yaml
@@ -401,6 +403,9 @@ ln -s %{_jsdir}/mathjax %{_datadir}/calibre/viewer/
%{_datadir}/metainfo/*.appdata.xml
%changelog
+* Thu Oct 03 2019 Kevin Fenzi <kevin(a)scrye.com> - 4.0.0-1
+- Update to 4.0.
+
* Wed Sep 25 2019 Jan Grulich <jgrulich(a)redhat.com> - 3.48.0-3
- rebuild (qt5)
diff --git a/sources b/sources
index 2252ecd..905817a 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-SHA512 (calibre-3.48.0-nofonts.tar.xz) = ab3847db844a5638fa4bd22ba29d5218ea37a2dfd2d5590d3237f94bbf8ce6c6c2470b9a25caebec0df18bd13d89a373d6e51659b29a45c6bffe21fd3c6f2362
+SHA512 (calibre-4.0.0-nofonts.tar.xz) = a94372a965a0deaf4af31f85771bc504fbec126a1bea571bd7c90e9e1da7a3ffc9d56b979615057ec1900e2321310f752ef59ed34386a193a8b4ee631aaab8df
commit 8b0bdc8ca8517ecd2c1237d3e1291c7726e25674
Author: Jan Grulich <jgrulich(a)redhat.com>
Date: Wed Sep 25 11:54:26 2019 +0200
rebuild (qt5)
diff --git a/calibre.spec b/calibre.spec
index 9663256..289c706 100644
--- a/calibre.spec
+++ b/calibre.spec
@@ -6,7 +6,7 @@
Name: calibre
Version: 3.48.0
-Release: 2%{?dist}
+Release: 3%{?dist}
Summary: E-book converter and library manager
License: GPLv3
URL: https://calibre-ebook.com/
@@ -401,6 +401,9 @@ ln -s %{_jsdir}/mathjax %{_datadir}/calibre/viewer/
%{_datadir}/metainfo/*.appdata.xml
%changelog
+* Wed Sep 25 2019 Jan Grulich <jgrulich(a)redhat.com> - 3.48.0-3
+- rebuild (qt5)
+
* Mon Sep 16 2019 Rex Dieter <rdieter(a)fedoraproject.org> - 3.48.0-2
- Requires: python3-pyqt5-sip-api (#1748527)
commit 0a6632fccdbcc3949e3650d0beb2075e7d1c8ab6
Author: Rex Dieter <rdieter(a)gmail.com>
Date: Mon Sep 16 08:13:49 2019 -0500
Requires: python3-pyqt5-sip-api (#1748527)
diff --git a/calibre.spec b/calibre.spec
index d19efb2..9663256 100644
--- a/calibre.spec
+++ b/calibre.spec
@@ -1,4 +1,4 @@
-%{?_sip_api:Requires: python3-sip-api(%{_sip_api_major}) >= %{_sip_api}}
+%{?_sip_api:Requires: python3-pyqt5-sip-api(%{_sip_api_major}) >= %{_sip_api}}
%global __provides_exclude_from ^%{_libdir}/calibre/calibre/plugins/.*\.so$
@@ -6,7 +6,7 @@
Name: calibre
Version: 3.48.0
-Release: 1%{?dist}
+Release: 2%{?dist}
Summary: E-book converter and library manager
License: GPLv3
URL: https://calibre-ebook.com/
@@ -401,6 +401,9 @@ ln -s %{_jsdir}/mathjax %{_datadir}/calibre/viewer/
%{_datadir}/metainfo/*.appdata.xml
%changelog
+* Mon Sep 16 2019 Rex Dieter <rdieter(a)fedoraproject.org> - 3.48.0-2
+- Requires: python3-pyqt5-sip-api (#1748527)
+
* Fri Sep 13 2019 Zbigniew Jdrzejewski-Szmek <zbyszek(a)in.waw.pl> - 3.48.0-1
- Update to 3.48.0 (#1751909)
commit e7ec17336e449b6b3653e81c37ae44546aa910a7
Author: Zbigniew Jdrzejewski-Szmek <zbyszek(a)in.waw.pl>
Date: Fri Sep 13 09:15:40 2019 +0200
Update to 3.48.0
diff --git a/.gitignore b/.gitignore
index 199d27e..51fd4d3 100644
--- a/.gitignore
+++ b/.gitignore
@@ -288,3 +288,4 @@ calibre-0.7.14-nofonts.tar.xz
/calibre-3.46.0-nofonts.tar.xz
/calibre-3.47.0-nofonts.tar.xz
/calibre-3.47.1-nofonts.tar.xz
+/calibre-3.48.0-nofonts.tar.xz
diff --git a/calibre.spec b/calibre.spec
index 9092935..d19efb2 100644
--- a/calibre.spec
+++ b/calibre.spec
@@ -5,8 +5,8 @@
%global _python_bytecompile_extra 0
Name: calibre
-Version: 3.47.1
-Release: 2%{?dist}
+Version: 3.48.0
+Release: 1%{?dist}
Summary: E-book converter and library manager
License: GPLv3
URL: https://calibre-ebook.com/
@@ -401,6 +401,9 @@ ln -s %{_jsdir}/mathjax %{_datadir}/calibre/viewer/
%{_datadir}/metainfo/*.appdata.xml
%changelog
+* Fri Sep 13 2019 Zbigniew Jdrzejewski-Szmek <zbyszek(a)in.waw.pl> - 3.48.0-1
+- Update to 3.48.0 (#1751909)
+
* Tue Sep 03 2019 Kevin Fenzi <kevin(a)scrye.com> - 3.47.1-2
- Adjust sip requires to Require the python3-sip-api package.
diff --git a/sources b/sources
index e4cecfd..2252ecd 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-SHA512 (calibre-3.47.1-nofonts.tar.xz) = 05c90a7a7945c48fdaaf4ee2ecc065d984d6b6b77635ee7acfa529af05686a1d8d6e2bcf583c3a0d77668598c90c1bc34a3c64b76017f7cd2d8627904c084ada
+SHA512 (calibre-3.48.0-nofonts.tar.xz) = ab3847db844a5638fa4bd22ba29d5218ea37a2dfd2d5590d3237f94bbf8ce6c6c2470b9a25caebec0df18bd13d89a373d6e51659b29a45c6bffe21fd3c6f2362
commit 8558e756065bb8ac9e5873a24764062819abd518
Author: Kevin Fenzi <kevin(a)scrye.com>
Date: Tue Sep 3 15:33:30 2019 -0700
Adjust sip requires to Require the python3-sip-api package.
diff --git a/calibre.spec b/calibre.spec
index 1a5d7e2..9092935 100644
--- a/calibre.spec
+++ b/calibre.spec
@@ -1,4 +1,4 @@
-%{?_sip_api:Requires: sip-api(%{_sip_api_major}) >= %{_sip_api}}
+%{?_sip_api:Requires: python3-sip-api(%{_sip_api_major}) >= %{_sip_api}}
%global __provides_exclude_from ^%{_libdir}/calibre/calibre/plugins/.*\.so$
@@ -6,7 +6,7 @@
Name: calibre
Version: 3.47.1
-Release: 1%{?dist}
+Release: 2%{?dist}
Summary: E-book converter and library manager
License: GPLv3
URL: https://calibre-ebook.com/
@@ -401,6 +401,9 @@ ln -s %{_jsdir}/mathjax %{_datadir}/calibre/viewer/
%{_datadir}/metainfo/*.appdata.xml
%changelog
+* Tue Sep 03 2019 Kevin Fenzi <kevin(a)scrye.com> - 3.47.1-2
+- Adjust sip requires to Require the python3-sip-api package.
+
* Mon Sep 02 2019 Kevin Fenzi <kevin(a)scrye.com> - 3.47.1-1
- Update 3.47.1. Fixes bug #1747848
commit 5f88ffc4ce535a757aed4b51759b249574c43f12
Author: Kevin Fenzi <kevin(a)scrye.com>
Date: Mon Sep 2 14:30:23 2019 -0700
Update 3.47.1. Fixes bug #1747848
diff --git a/.gitignore b/.gitignore
index 7d670d0..199d27e 100644
--- a/.gitignore
+++ b/.gitignore
@@ -287,3 +287,4 @@ calibre-0.7.14-nofonts.tar.xz
/calibre-3.36.0-nofonts.tar.xz
/calibre-3.46.0-nofonts.tar.xz
/calibre-3.47.0-nofonts.tar.xz
+/calibre-3.47.1-nofonts.tar.xz
diff --git a/calibre.spec b/calibre.spec
index c1dd5d3..1a5d7e2 100644
--- a/calibre.spec
+++ b/calibre.spec
@@ -5,7 +5,7 @@
%global _python_bytecompile_extra 0
Name: calibre
-Version: 3.47.0
+Version: 3.47.1
Release: 1%{?dist}
Summary: E-book converter and library manager
License: GPLv3
@@ -401,6 +401,9 @@ ln -s %{_jsdir}/mathjax %{_datadir}/calibre/viewer/
%{_datadir}/metainfo/*.appdata.xml
%changelog
+* Mon Sep 02 2019 Kevin Fenzi <kevin(a)scrye.com> - 3.47.1-1
+- Update 3.47.1. Fixes bug #1747848
+
* Sat Aug 31 2019 Kevin Fenzi <kevin(a)scrye.com> - 3.47.0-1
- Update to 3.47.0
diff --git a/sources b/sources
index 5546205..e4cecfd 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-SHA512 (calibre-3.47.0-nofonts.tar.xz) = 970422398e444793e0a4621a95aa95b7c3faea4f1c601226b335e3bb503f40de918ab79a784d9f3581ef85f6435716aa1a9ab15d2cfe95fa32e0cc40aa4cb921
+SHA512 (calibre-3.47.1-nofonts.tar.xz) = 05c90a7a7945c48fdaaf4ee2ecc065d984d6b6b77635ee7acfa529af05686a1d8d6e2bcf583c3a0d77668598c90c1bc34a3c64b76017f7cd2d8627904c084ada
commit d61cd1cb99a0e87136c7051e911f2dc0670cd596
Author: Kevin Fenzi <kevin(a)scrye.com>
Date: Sat Aug 31 13:17:05 2019 -0700
Update to 3.47.0
diff --git a/.gitignore b/.gitignore
index 5f2f61a..7d670d0 100644
--- a/.gitignore
+++ b/.gitignore
@@ -286,3 +286,4 @@ calibre-0.7.14-nofonts.tar.xz
/calibre-3.34.0-nofonts.tar.xz
/calibre-3.36.0-nofonts.tar.xz
/calibre-3.46.0-nofonts.tar.xz
+/calibre-3.47.0-nofonts.tar.xz
diff --git a/0001-py3-fix-invalid-escapes.patch b/0001-py3-fix-invalid-escapes.patch
deleted file mode 100644
index 3871503..0000000
--- a/0001-py3-fix-invalid-escapes.patch
+++ /dev/null
@@ -1,102 +0,0 @@
-From 0156785a14ab3d120dcf7c3650a79c4aba6aa9c2 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek(a)in.waw.pl>
-Date: Fri, 19 Jul 2019 16:22:21 +0200
-Subject: [PATCH 01/71] py3: fix invalid escapes
-
-python3.8 warns about strings which try to escape characters which do
-not need that. To avoid the warning, the backslash should be escaped.
-(Behaviour is functionally the same, so e.g. '\$' is still the same as
-r'\$', except for the warning.)
----
- .../ebooks/unihandecode/unicodepoints.py | 26 +++++++++----------
- 1 file changed, 13 insertions(+), 13 deletions(-)
-
-diff --git a/src/calibre/ebooks/unihandecode/unicodepoints.py b/src/calibre/ebooks/unihandecode/unicodepoints.py
-index fe1495de73..d9130123fb 100644
---- a/src/calibre/ebooks/unihandecode/unicodepoints.py
-+++ b/src/calibre/ebooks/unihandecode/unicodepoints.py
-@@ -194,7 +194,7 @@ CODEPOINTS = {
- '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'Sh', 'D', 'Gh', '&', '+m',
- ],
- 'x07': [
-- '//', '/', ',', '!', '!', '-', ',', ',', ';', '?', '~', '\{', '\}', '*', '[?]', '',
-+ '//', '/', ',', '!', '!', '-', ',', ',', ';', '?', '~', '\\{', '\\}', '*', '[?]', '',
- '\'', '', 'b', 'g', 'g', 'd', 'd', 'h', 'w', 'z', 'H', 't', 't', 'y', 'yh', 'k',
- 'l', 'm', 'n', 's', 's', '`', 'p', 'p', 'S', 'q', 'r', 'sh', 't', '[?]', '[?]', '[?]',
- 'a', 'a', 'a', 'A', 'A', 'A', 'e', 'e', 'e', 'E', 'i', 'i', 'u', 'u', 'u', 'o',
-@@ -844,7 +844,7 @@ CODEPOINTS = {
- 'x28': [
- ' ', 'a', '1', 'b', '\'', 'k', '2', 'l', '@', 'c', 'i', 'f', '/', 'm', 's', 'p',
- '"', 'e', '3', 'h', '9', 'o', '6', 'r', '^', 'd', 'j', 'g', '>', 'n', 't', 'q',
-- ',', '*', '5', '<', '-', 'u', '8', 'v', '.', '%', '[', '\$', '+', 'x', '!', '&',
-+ ',', '*', '5', '<', '-', 'u', '8', 'v', '.', '%', '[', '\\$', '+', 'x', '!', '&',
- ';', ':', '4', '\\', '0', 'z', '7', '(', '_', '?', 'w', ']', '#', 'y', ')', '=',
- '[d7]', '[d17]', '[d27]', '[d127]', '[d37]', '[d137]', '[d237]', '[d1237]', '[d47]', '[d147]', '[d247]', '[d1247]', '[d347]', '[d1347]', '[d2347]', '[d12347]',
- '[d57]', '[d157]', '[d257]', '[d1257]', '[d357]', '[d1357]', '[d2357]', '[d12357]', '[d457]', '[d1457]', '[d2457]', '[d12457]', '[d3457]', '[d13457]', '[d23457]', '[d123457]',
-@@ -916,15 +916,15 @@ CODEPOINTS = {
- 'x00': [
- '\x00', '\x01', '\x02', '\x03', '\x04', '\x05', '\x06', '\x07', '\x08', '\x09', '\x0a', '\x0b', '\x0c', '\x0d', '\x0e', '\x0f',
- '\x10', '\x11', '\x12', '\x13', '\x14', '\x15', '\x16', '\x17', '\x18', '\x19', '\x1a', '\x1b', '\x1c', '\x1d', '\x1e', '\x1f',
-- ' ', '!', '"', '#', '\$', '%', '&', '\'', '(', ')', '*', '+', ',', '-', '.', '/',
-+ ' ', '!', '"', '#', '\\$', '%', '&', '\'', '(', ')', '*', '+', ',', '-', '.', '/',
- '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', ':', ';', '<', '=', '>', '?',
- '@', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O',
- 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', ']', '\\', ']', '^', '_',
- '`', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o',
-- 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '\{', '|', '\}', '~', '\x7f',
-+ 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '\\{', '|', '\\}', '~', '\x7f',
- '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '',
- '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '',
-- ' ', '!', 'C/', 'PS', '\$?', 'Y=', '|', 'SS', '"', '(c)', 'a', '<<', '!', '', '(r)', '-',
-+ ' ', '!', 'C/', 'PS', '\\$?', 'Y=', '|', 'SS', '"', '(c)', 'a', '<<', '!', '', '(r)', '-',
- 'deg', '+-', '2', '3', '\'', 'u', 'P', '*', ',', '1', 'o', '>>', '1/4', '1/2', '3/4', '?',
- 'A', 'A', 'A', 'A', 'A', 'A', 'AE', 'C', 'E', 'E', 'E', 'E', 'I', 'I', 'I', 'I',
- 'D', 'N', 'O', 'O', 'O', 'O', 'O', 'x', 'O', 'U', 'U', 'U', 'U', 'U', 'Th', 'ss',
-@@ -935,10 +935,10 @@ CODEPOINTS = {
- '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]',
- '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]',
- '', '', '', '~', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]',
-- '..', '--', '-', '_', '_', '(', ') ', '\{', '\} ', '[', '] ', '[(', ')] ', '<<', '>> ', '<',
-- '> ', '[', '] ', '\{', '\}', '[?]', '[?]', '[?]', '[?]', '', '', '', '', '', '', '',
-- ',', ',', '.', '', ';', ':', '?', '!', '-', '(', ')', '\{', '\}', '\{', '\}', '#',
-- '&', '*', '+', '-', '<', '>', '=', '', '\\', '\$', '%', '@', '[?]', '[?]', '[?]', '[?]',
-+ '..', '--', '-', '_', '_', '(', ') ', '\\{', '\\} ', '[', '] ', '[(', ')] ', '<<', '>> ', '<',
-+ '> ', '[', '] ', '\\{', '\\}', '[?]', '[?]', '[?]', '[?]', '', '', '', '', '', '', '',
-+ ',', ',', '.', '', ';', ':', '?', '!', '-', '(', ')', '\\{', '\\}', '\\{', '\\}', '#',
-+ '&', '*', '+', '-', '<', '>', '=', '', '\\', '\\$', '%', '@', '[?]', '[?]', '[?]', '[?]',
- '', '', '', '[?]', '', '[?]', '', '', '', '', '', '', '', '', '', '',
- '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '',
- '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '',
-@@ -1256,12 +1256,12 @@ CODEPOINTS = {
- 'maels', 'maelt', 'maelp', 'maelh', 'maem', 'maeb', 'maebs', 'maes', 'maess', 'maeng', 'maej', 'maec', 'maek', 'maet', 'maep', 'maeh',
- ],
- 'xff': [
-- '[?]', '!', '"', '#', '\$', '%', '&', '\'', '(', ')', '*', '+', ',', '-', '.', '/',
-+ '[?]', '!', '"', '#', '\\$', '%', '&', '\'', '(', ')', '*', '+', ',', '-', '.', '/',
- '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', ':', ';', '<', '=', '>', '?',
- '@', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O',
- 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', '[', '\\', ']', '^', '_',
- '`', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o',
-- 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '\{', '|', '\}', '~', '[?]',
-+ 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '\\{', '|', '\\}', '~', '[?]',
- '[?]', '.', '[', ']', ',', '*', 'wo', 'a', 'i', 'u', 'e', 'o', 'ya', 'yu', 'yo', 'tu',
- '+', 'a', 'i', 'u', 'e', 'o', 'ka', 'ki', 'ku', 'ke', 'ko', 'sa', 'si', 'su', 'se', 'so',
- 'ta', 'ti', 'tu', 'te', 'to', 'na', 'ni', 'nu', 'ne', 'no', 'ha', 'hi', 'hu', 'he', 'ho', 'ma',
-@@ -1271,7 +1271,7 @@ CODEPOINTS = {
- '[?]', '[?]', 'a', 'ae', 'ya', 'yae', 'eo', 'e', '[?]', '[?]', 'yeo', 'ye', 'o', 'wa', 'wae', 'oe',
- '[?]', '[?]', 'yo', 'u', 'weo', 'we', 'wi', 'yu', '[?]', '[?]', 'eu', 'yi', 'i', '[?]', '[?]', '[?]',
- '/C', 'PS', '!', '-', '|', 'Y=', 'W=', '[?]', '|', '-', '|', '-', '|', '#', 'O', '[?]',
-- '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '\{', '|', '\}', '', '', '', '',
-+ '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '\\{', '|', '\\}', '', '', '', '',
- ],
- 'xc3': [
- 'ssal', 'ssalg', 'ssalm', 'ssalb', 'ssals', 'ssalt', 'ssalp', 'ssalh', 'ssam', 'ssab', 'ssabs', 'ssas', 'ssass', 'ssang', 'ssaj', 'ssac',
-@@ -1652,7 +1652,7 @@ CODEPOINTS = {
- 'cwil', 'cwilg', 'cwilm', 'cwilb', 'cwils', 'cwilt', 'cwilp', 'cwilh', 'cwim', 'cwib', 'cwibs', 'cwis', 'cwiss', 'cwing', 'cwij', 'cwic',
- ],
- 'x30': [
-- ' ', ', ', '. ', '"', '[JIS]', '"', '/', '0', '<', '> ', '<<', '>> ', '[', '] ', '\{', '\} ',
-+ ' ', ', ', '. ', '"', '[JIS]', '"', '/', '0', '<', '> ', '<<', '>> ', '[', '] ', '\\{', '\\} ',
- '[(', ')] ', '@', 'X ', '[', '] ', '[[', ']] ', '((', ')) ', '[[', ']] ', '~ ', '``', '\'\'', ',,',
- '@', '1', '2', '3', '4', '5', '6', '7', '8', '9', '', '', '', '', '', '',
- '~', '+', '+', '+', '+', '', '@', ' // ', '+10+', '+20+', '+30+', '[?]', '[?]', '[?]', '', '',
diff --git a/0002-py3-another-warning-about-invalid-escape.patch b/0002-py3-another-warning-about-invalid-escape.patch
deleted file mode 100644
index 027ae9c..0000000
--- a/0002-py3-another-warning-about-invalid-escape.patch
+++ /dev/null
@@ -1,22 +0,0 @@
-From 9480360bc8f522f0bb83cf3553b407b9d649e9f2 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek(a)in.waw.pl>
-Date: Fri, 19 Jul 2019 16:26:02 +0200
-Subject: [PATCH 02/71] py3: another warning about invalid escape
-
----
- src/tinycss/token_data.py | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/tinycss/token_data.py b/src/tinycss/token_data.py
-index 40bff86e77..dfbafc1781 100644
---- a/src/tinycss/token_data.py
-+++ b/src/tinycss/token_data.py
-@@ -214,7 +214,7 @@ FIND_NEWLINES = lambda x : list(re.compile(COMPILED_MACROS['nl']).finditer(x))
-
-
- class Token(object):
-- """A single atomic token.
-+ r"""A single atomic token.
-
- .. attribute:: is_container
-
diff --git a/0003-Update-WSJ.patch b/0003-Update-WSJ.patch
deleted file mode 100644
index 30950ac..0000000
--- a/0003-Update-WSJ.patch
+++ /dev/null
@@ -1,285 +0,0 @@
-From 39c86f23d401f9d7329d94fcbf32b51cbc003b8c Mon Sep 17 00:00:00 2001
-From: Kovid Goyal <kovid(a)kovidgoyal.net>
-Date: Sat, 20 Jul 2019 12:40:26 +0530
-Subject: [PATCH 03/71] Update WSJ
-
-Fixes #1837213 [Private bug](https://bugs.launchpad.net/calibre/+bug/1837213)
----
- recipes/wsj.recipe | 98 +++++++++++++++++++++++------------------
- recipes/wsj_free.recipe | 98 +++++++++++++++++++++++------------------
- 2 files changed, 110 insertions(+), 86 deletions(-)
-
-diff --git a/recipes/wsj.recipe b/recipes/wsj.recipe
-index da28f081b3..f40f3fedfe 100644
---- a/recipes/wsj.recipe
-+++ b/recipes/wsj.recipe
-@@ -5,10 +5,7 @@
- from __future__ import absolute_import, division, print_function, unicode_literals
-
- import json
--try:
-- from urllib.parse import quote
--except ImportError:
-- from urllib import quote
-+from base64 import standard_b64encode
-
- from mechanize import Request
-
-@@ -16,6 +13,16 @@
- from calibre.web.feeds.news import BasicNewsRecipe
- from css_selectors import Select
-
-+try:
-+ import urllib.parse as urlparse
-+except ImportError:
-+ import urlparse
-+try:
-+ from urllib.parse import quote
-+except ImportError:
-+ from urllib import quote
-+
-+
- needs_subscription = True
-
-
-@@ -40,7 +47,7 @@ class WSJ(BasicNewsRecipe):
- ignore_duplicate_articles = {'url'}
- remove_attributes = ['style', 'data-scrim']
- needs_subscription = needs_subscription
-- WSJ_ITP = 'https://online.wsj.com/itp/today'
-+ WSJ_ITP = 'https://www.wsj.com/print-edition/today'
-
- keep_only_tags = [
- dict(classes('wsj-article-headline-wrap article_header bigTop__hed bigTop__dek bigTop__captioncredit')),
-@@ -87,51 +94,56 @@ def get_cover_url(self):
- # login {{{
- if needs_subscription:
- def get_browser(self, *a, **kw):
-- # To understand the signin logic read signin.js from
-- # https://id.wsj.com/access/pages/wsj/us/signin.html
-- # This is the same login servie as used by Barrons
-+ # To understand the login logic read app-min.js from
-+ # https://sso.accounts.dowjones.com/login
-+ itp = quote(self.WSJ_ITP, safe='')
-+ start_url = 'https://accounts.wsj.com/login?target=' + itp
- kw['user_agent'] = random_user_agent(allow_ie=False)
- br = BasicNewsRecipe.get_browser(self, *a, **kw)
-- # self.wsj_itp_page = open('/t/raw.html').read()
-- # return br
-- url = 'https://id.wsj.com/access/pages/wsj/us/signin.html?mg=com-wsj&mg=id-wsj'
-- # br.set_debug_http(True)
-- br.open(url).read()
-- rurl = 'https://id.wsj.com/auth/submitlogin.json'
-- rq = Request(rurl, headers={
-- 'Accept': 'application/json, text/javascript, */*; q=0.01',
-+ self.log('Starting login process...')
-+ res = br.open(start_url)
-+ sso_url = res.geturl()
-+ query = urlparse.parse_qs(urlparse.urlparse(sso_url).query)
-+ query = {k:v[0] for k, v in query.items()}
-+ request_query = {
-+ 'username': self.username,
-+ 'password': self.password,
-+ 'client_id': query['client'],
-+ 'sso': 'true',
-+ 'tenant': 'sso',
-+ '_intstate': 'deprecated',
-+ }
-+ for k in 'scope connection nonce state ui_locales ns protocol redirect_uri'.split():
-+ request_query[k] = query[k]
-+ login_url = 'https://sso.accounts.dowjones.com/usernamepassword/login'
-+ # you can get the version below from lib-min.js
-+ # search for: str: "x.x.x"
-+ # This might need to be updated in the future
-+ auth0_client = json.dumps({"name": "auth0.js", "version": "7.0.3"})
-+ if not isinstance(auth0_client, bytes):
-+ auth0_client = auth0_client.encode('utf-8')
-+ auth0_client = standard_b64encode(auth0_client)
-+ if isinstance(auth0_client, bytes):
-+ auth0_client = auth0_client.decode('ascii')
-+ rq = Request(login_url, headers={
-+ 'Accept': 'text/html',
- 'Accept-Language': 'en-US,en;q=0.8',
-- 'Content-Type': 'application/json',
-- 'Referer': url,
-+ 'Auth0-Client': auth0_client.rstrip('='),
- 'X-HTTP-Method-Override': 'POST',
- 'X-Requested-With': 'XMLHttpRequest',
-- }, data=json.dumps({
-- 'username': self.username,
-- 'password': self.password,
-- 'realm': 'default',
-- 'savelogin': 'true',
-- 'template': 'default',
-- 'url': quote(self.WSJ_ITP),
-- }))
-- r = br.open(rq)
-- if r.code != 200:
-- raise ValueError('Failed to login, check username and password')
-- data = json.loads(r.read())
-- # print(data)
-- if data.get('result') != 'success':
-- raise ValueError(
-- 'Failed to login (XHR failed), check username and password')
-- br.set_cookie('m', data['username'], '.wsj.com')
-- try:
-- r = br.open(data['url'])
-- except Exception:
-- self.log.error('Failed to open login url: {}'.format(data['url']))
-- raise
-- self.wsj_itp_page = raw = r.read()
-+ 'X-Remote-User': self.username
-+ }, data=request_query)
-+ self.log('Sending login request...')
-+ res = br.open(rq)
-+ if res.code != 200:
-+ raise ValueError('Failed to login, check your username and password')
-+ br.select_form(nr=0)
-+ self.log('Performing login callback...')
-+ res = br.submit()
-+ self.wsj_itp_page = raw = res.read()
- if b'>Sign Out<' not in raw:
- raise ValueError(
-- 'Failed to login (auth URL failed), check username and password')
-- # open('/t/raw.html', 'w').write(raw)
-+ 'Failed to login (callback URL failed), check username and password')
- return br
- else:
- def get_browser(self, *a, **kw):
-diff --git a/recipes/wsj_free.recipe b/recipes/wsj_free.recipe
-index e04e210114..25726c0ca3 100644
---- a/recipes/wsj_free.recipe
-+++ b/recipes/wsj_free.recipe
-@@ -5,10 +5,7 @@
- from __future__ import absolute_import, division, print_function, unicode_literals
-
- import json
--try:
-- from urllib.parse import quote
--except ImportError:
-- from urllib import quote
-+from base64 import standard_b64encode
-
- from mechanize import Request
-
-@@ -16,6 +13,16 @@
- from calibre.web.feeds.news import BasicNewsRecipe
- from css_selectors import Select
-
-+try:
-+ import urllib.parse as urlparse
-+except ImportError:
-+ import urlparse
-+try:
-+ from urllib.parse import quote
-+except ImportError:
-+ from urllib import quote
-+
-+
- needs_subscription = False
-
-
-@@ -40,7 +47,7 @@ class WSJ(BasicNewsRecipe):
- ignore_duplicate_articles = {'url'}
- remove_attributes = ['style', 'data-scrim']
- needs_subscription = needs_subscription
-- WSJ_ITP = 'https://online.wsj.com/itp/today'
-+ WSJ_ITP = 'https://www.wsj.com/print-edition/today'
-
- keep_only_tags = [
- dict(classes('wsj-article-headline-wrap article_header bigTop__hed bigTop__dek bigTop__captioncredit')),
-@@ -87,51 +94,56 @@ def get_cover_url(self):
- # login {{{
- if needs_subscription:
- def get_browser(self, *a, **kw):
-- # To understand the signin logic read signin.js from
-- # https://id.wsj.com/access/pages/wsj/us/signin.html
-- # This is the same login servie as used by Barrons
-+ # To understand the login logic read app-min.js from
-+ # https://sso.accounts.dowjones.com/login
-+ itp = quote(self.WSJ_ITP, safe='')
-+ start_url = 'https://accounts.wsj.com/login?target=' + itp
- kw['user_agent'] = random_user_agent(allow_ie=False)
- br = BasicNewsRecipe.get_browser(self, *a, **kw)
-- # self.wsj_itp_page = open('/t/raw.html').read()
-- # return br
-- url = 'https://id.wsj.com/access/pages/wsj/us/signin.html?mg=com-wsj&mg=id-wsj'
-- # br.set_debug_http(True)
-- br.open(url).read()
-- rurl = 'https://id.wsj.com/auth/submitlogin.json'
-- rq = Request(rurl, headers={
-- 'Accept': 'application/json, text/javascript, */*; q=0.01',
-+ self.log('Starting login process...')
-+ res = br.open(start_url)
-+ sso_url = res.geturl()
-+ query = urlparse.parse_qs(urlparse.urlparse(sso_url).query)
-+ query = {k:v[0] for k, v in query.items()}
-+ request_query = {
-+ 'username': self.username,
-+ 'password': self.password,
-+ 'client_id': query['client'],
-+ 'sso': 'true',
-+ 'tenant': 'sso',
-+ '_intstate': 'deprecated',
-+ }
-+ for k in 'scope connection nonce state ui_locales ns protocol redirect_uri'.split():
-+ request_query[k] = query[k]
-+ login_url = 'https://sso.accounts.dowjones.com/usernamepassword/login'
-+ # you can get the version below from lib-min.js
-+ # search for: str: "x.x.x"
-+ # This might need to be updated in the future
-+ auth0_client = json.dumps({"name": "auth0.js", "version": "7.0.3"})
-+ if not isinstance(auth0_client, bytes):
-+ auth0_client = auth0_client.encode('utf-8')
-+ auth0_client = standard_b64encode(auth0_client)
-+ if isinstance(auth0_client, bytes):
-+ auth0_client = auth0_client.decode('ascii')
-+ rq = Request(login_url, headers={
-+ 'Accept': 'text/html',
- 'Accept-Language': 'en-US,en;q=0.8',
-- 'Content-Type': 'application/json',
-- 'Referer': url,
-+ 'Auth0-Client': auth0_client.rstrip('='),
- 'X-HTTP-Method-Override': 'POST',
- 'X-Requested-With': 'XMLHttpRequest',
-- }, data=json.dumps({
-- 'username': self.username,
-- 'password': self.password,
-- 'realm': 'default',
-- 'savelogin': 'true',
-- 'template': 'default',
-- 'url': quote(self.WSJ_ITP),
-- }))
-- r = br.open(rq)
-- if r.code != 200:
-- raise ValueError('Failed to login, check username and password')
-- data = json.loads(r.read())
-- # print(data)
-- if data.get('result') != 'success':
-- raise ValueError(
-- 'Failed to login (XHR failed), check username and password')
-- br.set_cookie('m', data['username'], '.wsj.com')
-- try:
-- r = br.open(data['url'])
-- except Exception:
-- self.log.error('Failed to open login url: {}'.format(data['url']))
-- raise
-- self.wsj_itp_page = raw = r.read()
-+ 'X-Remote-User': self.username
-+ }, data=request_query)
-+ self.log('Sending login request...')
-+ res = br.open(rq)
-+ if res.code != 200:
-+ raise ValueError('Failed to login, check your username and password')
-+ br.select_form(nr=0)
-+ self.log('Performing login callback...')
-+ res = br.submit()
-+ self.wsj_itp_page = raw = res.read()
- if b'>Sign Out<' not in raw:
- raise ValueError(
-- 'Failed to login (auth URL failed), check username and password')
-- # open('/t/raw.html', 'w').write(raw)
-+ 'Failed to login (callback URL failed), check username and password')
- return br
- else:
- def get_browser(self, *a, **kw):
diff --git a/0004-Preferences-Ignored-devices-Add-a-button-to-reset-th.patch b/0004-Preferences-Ignored-devices-Add-a-button-to-reset-th.patch
deleted file mode 100644
index 3e78d67..0000000
--- a/0004-Preferences-Ignored-devices-Add-a-button-to-reset-th.patch
+++ /dev/null
@@ -1,85 +0,0 @@
-From 6bad6948033823b82ea37fb889188e4904a6508c Mon Sep 17 00:00:00 2001
-From: Kovid Goyal <kovid(a)kovidgoyal.net>
-Date: Sat, 20 Jul 2019 14:59:54 +0530
-Subject: [PATCH 04/71] Preferences->Ignored devices: Add a button to reset the
- list of devices that calibre is allowed to manage
-
----
- .../gui2/preferences/ignored_devices.py | 31 ++++++++++++++-----
- 1 file changed, 24 insertions(+), 7 deletions(-)
-
-diff --git a/src/calibre/gui2/preferences/ignored_devices.py b/src/calibre/gui2/preferences/ignored_devices.py
-index 8cfb943cf3..cef9ac0dc2 100644
---- a/src/calibre/gui2/preferences/ignored_devices.py
-+++ b/src/calibre/gui2/preferences/ignored_devices.py
-@@ -1,15 +1,16 @@
- #!/usr/bin/env python2
- # vim:fileencoding=UTF-8:ts=4:sw=4:sta:et:sts=4:fdm=marker:ai
-+# License: GPLv3 Copyright: 2012, Kovid Goyal <kovid at kovidgoyal.net>
- from __future__ import absolute_import, division, print_function, unicode_literals
-
--__license__ = 'GPL v3'
--__copyright__ = '2012, Kovid Goyal <kovid at kovidgoyal.net>'
--__docformat__ = 'restructuredtext en'
-+import textwrap
-
--from PyQt5.Qt import (QLabel, QVBoxLayout, QListWidget, QListWidgetItem, Qt,
-- QIcon)
-+from PyQt5.Qt import (
-+ QIcon, QLabel, QListWidget, QListWidgetItem, QPushButton, Qt, QVBoxLayout
-+)
-
- from calibre.customize.ui import enable_plugin
-+from calibre.gui2 import gprefs
- from calibre.gui2.preferences import ConfigWidgetBase, test_widget
- from polyglot.builtins import iteritems, range
-
-@@ -22,6 +23,7 @@ class ConfigWidget(ConfigWidgetBase):
- self.gui = gui
- self.l = l = QVBoxLayout()
- self.setLayout(l)
-+ self.confirms_reset = False
-
- self.la = la = QLabel(_(
- 'The list of devices that you have asked calibre to ignore. '
-@@ -46,11 +48,24 @@ class ConfigWidget(ConfigWidgetBase):
- f.itemChanged.connect(self.changed_signal)
- f.itemDoubleClicked.connect(self.toggle_item)
-
-+ self.reset_confirmations_button = b = QPushButton(_('Reset allowed devices'))
-+ b.setToolTip(textwrap.fill(_(
-+ 'This will erase the list of devices that calibre knows about'
-+ ' causing it to ask you for permission to manage them again,'
-+ ' the next time they connect')))
-+ b.clicked.connect(self.reset_confirmations)
-+ l.addWidget(b)
-+
-+ def reset_confirmations(self):
-+ self.confirms_reset = True
-+ self.changed_signal.emit()
-+
- def toggle_item(self, item):
- item.setCheckState(Qt.Checked if item.checkState() == Qt.Unchecked else
- Qt.Unchecked)
-
- def initialize(self):
-+ self.confirms_reset = False
- self.devices.blockSignals(True)
- self.devices.clear()
- for dev in self.gui.device_manager.devices:
-@@ -94,11 +109,13 @@ class ConfigWidget(ConfigWidgetBase):
- dev = e.data(Qt.UserRole)
- if e.checkState() == Qt.Unchecked:
- enable_plugin(dev)
-+ if self.confirms_reset:
-+ gprefs['ask_to_manage_device'] = []
-
- return True # Restart required
-
-
- if __name__ == '__main__':
-- from PyQt5.Qt import QApplication
-- app = QApplication([])
-+ from calibre.gui2 import Application
-+ app = Application([])
- test_widget('Sharing', 'Ignored Devices')
diff --git a/0005-Open-With-don-t-raise-KeyError-if-cache-exists-and-t.patch b/0005-Open-With-don-t-raise-KeyError-if-cache-exists-and-t.patch
deleted file mode 100644
index 6590b63..0000000
--- a/0005-Open-With-don-t-raise-KeyError-if-cache-exists-and-t.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-From 998c659c9e4afa3766c0c3056e9d359690e061a8 Mon Sep 17 00:00:00 2001
-From: Eli Schwartz <eschwartz(a)archlinux.org>
-Date: Tue, 23 Jul 2019 01:11:19 -0400
-Subject: [PATCH 05/71] Open With: don't raise KeyError if cache exists and
- there are new dirs
-
-If the cache failed to load, it is initialized as a defaultdict and all
-mtimes compare as 0. If the cache did load, however, then an ordinary
-dict was used, and if new icon directories appeared on the system since
-the cache creation, they would raise a KeyError and Open With would not
-load data.
-
-Fix by using a defaultdict in all cases, but initializing with the
-contents of the cache if possible.
-
-Discovered when crazy applications added crazy subdirectories in
-/usr/share/pixmaps (???) and suddenly calibre failed to do the right
-thing, but the same should apply if the system adds a new icon theme.
----
- src/calibre/utils/open_with/linux.py | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/calibre/utils/open_with/linux.py b/src/calibre/utils/open_with/linux.py
-index f4b3269c06..f397c68659 100644
---- a/src/calibre/utils/open_with/linux.py
-+++ b/src/calibre/utils/open_with/linux.py
-@@ -116,7 +116,7 @@ def find_icons():
- with open(cache_file, 'rb') as f:
- cache = f.read()
- cache = msgpack_loads(cache)
-- mtimes, cache = cache['mtimes'], cache['data']
-+ mtimes, cache = defaultdict(int, cache['mtimes']), defaultdict(dict, cache['data'])
- except Exception:
- mtimes, cache = defaultdict(int), defaultdict(dict)
-
diff --git a/0006-LIT-Output-Fix-regression-in-3.41-caused-by-py3-port.patch b/0006-LIT-Output-Fix-regression-in-3.41-caused-by-py3-port.patch
deleted file mode 100644
index 0c22cb4..0000000
--- a/0006-LIT-Output-Fix-regression-in-3.41-caused-by-py3-port.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-From e51136af1d1df5dd8e492ef71c87724708f538ad Mon Sep 17 00:00:00 2001
-From: Kovid Goyal <kovid(a)kovidgoyal.net>
-Date: Tue, 23 Jul 2019 20:08:12 +0530
-Subject: [PATCH 06/71] LIT Output: Fix regression in 3.41 caused by py3
- porting that broke conversion of some files to LIT. Fixes #1837561 [Lit
- conversion error (Conversion options changed from
- default)](https://bugs.launchpad.net/calibre/+bug/1837561)
-
----
- src/calibre/ebooks/lit/writer.py | 2 ++
- 1 file changed, 2 insertions(+)
-
-diff --git a/src/calibre/ebooks/lit/writer.py b/src/calibre/ebooks/lit/writer.py
-index f1191b781e..534570fd19 100644
---- a/src/calibre/ebooks/lit/writer.py
-+++ b/src/calibre/ebooks/lit/writer.py
-@@ -721,6 +721,8 @@ class LitWriter(object):
- dchunks.append(dchunk.getvalue())
- dcounts.append(dcount)
- if ichunk:
-+ if not isinstance(name, bytes):
-+ name = name.encode('utf-8')
- ichunk.write(decint(len(name)))
- ichunk.write(name)
- ichunk.write(decint(cid))
diff --git a/0007-use-raw-strings-where-possible-to-avoid-escaping-iss.patch b/0007-use-raw-strings-where-possible-to-avoid-escaping-iss.patch
deleted file mode 100644
index 044bbad..0000000
--- a/0007-use-raw-strings-where-possible-to-avoid-escaping-iss.patch
+++ /dev/null
@@ -1,193 +0,0 @@
-From 504d7c417593f7402198886f68cd6b4363844035 Mon Sep 17 00:00:00 2001
-From: Eli Schwartz <eschwartz(a)archlinux.org>
-Date: Thu, 18 Jul 2019 12:26:48 -0400
-Subject: [PATCH 07/71] use raw strings where possible to avoid escaping issues
-
----
- src/calibre/ebooks/oeb/transforms/split.py | 2 +-
- src/calibre/ebooks/pml/pmlml.py | 24 +++++++++++-----------
- src/calibre/ebooks/readability/cleaners.py | 2 +-
- src/calibre/ebooks/rtf/rtfml.py | 12 +++++------
- 4 files changed, 20 insertions(+), 20 deletions(-)
-
-diff --git a/src/calibre/ebooks/oeb/transforms/split.py b/src/calibre/ebooks/oeb/transforms/split.py
-index d0e1a334ec..a42bae67a5 100644
---- a/src/calibre/ebooks/oeb/transforms/split.py
-+++ b/src/calibre/ebooks/oeb/transforms/split.py
-@@ -294,7 +294,7 @@ class FlowSplitter(object):
- body = self.get_body(root)
- if body is None:
- return False
-- txt = re.sub(u'\\s+|\\xa0', '',
-+ txt = re.sub(ur'\s+|\xa0', '',
- etree.tostring(body, method='text', encoding='unicode'))
- if len(txt) > 1:
- return False
-diff --git a/src/calibre/ebooks/pml/pmlml.py b/src/calibre/ebooks/pml/pmlml.py
-index 772117321c..e99ec66226 100644
---- a/src/calibre/ebooks/pml/pmlml.py
-+++ b/src/calibre/ebooks/pml/pmlml.py
-@@ -155,7 +155,7 @@ class PMLMLizer(object):
-
- def get_anchor(self, page, aid):
- aid = self.get_anchor_id(page.href, aid)
-- return u'\\Q="%s"' % aid
-+ return ur'\Q="%s"' % aid
-
- def remove_newlines(self, text):
- text = text.replace('\r\n', ' ')
-@@ -186,10 +186,10 @@ class PMLMLizer(object):
- anchors = set(re.findall(r'(?<=\\Q=").+?(?=")', text))
- links = set(re.findall(r'(?<=\\q="#).+?(?=")', text))
- for unused in anchors.difference(links):
-- text = text.replace('\\Q="%s"' % unused, '')
-+ text = text.replace(r'\Q="%s"' % unused, '')
-
- # Remove \Cn tags that are within \x and \Xn tags
-- text = re.sub(unicode_type(r'(?msu)(?P<t>\\(x|X[0-4]))(?P<a>.*?)(?P<c>\\C[0-4]\s*=\s*"[^"]*")(?P<b>.*?)(?P=t)'), '\\g<t>\\g<a>\\g<b>\\g<t>', text)
-+ text = re.sub(unicode_type(r'(?msu)(?P<t>\\(x|X[0-4]))(?P<a>.*?)(?P<c>\\C[0-4]\s*=\s*"[^"]*")(?P<b>.*?)(?P=t)'), r'\g<t>\g<a>\g<b>\g<t>', text)
-
- # Replace bad characters.
- text = text.replace(u'\xc2', '')
-@@ -259,7 +259,7 @@ class PMLMLizer(object):
- '%s.png' % len(self.image_hrefs.keys()), self.image_hrefs.keys()).strip('\x00')
- text.append('\\m="%s"' % self.image_hrefs[page.abshref(elem.attrib['src'])])
- elif tag == 'hr':
-- w = '\\w'
-+ w = r'\w'
- width = elem.get('width')
- if width:
- if not width.endswith('%'):
-@@ -286,17 +286,17 @@ class PMLMLizer(object):
- toc_title, toc_depth = self.toc[toc_page].get(toc_x, (None, 0))
- if toc_title:
- toc_depth = max(min(toc_depth, 4), 0)
-- text.append('\\C%s="%s"' % (toc_depth, toc_title))
-+ text.append(r'\C%s="%s"' % (toc_depth, toc_title))
-
- # Process style information that needs holds a single tag.
- # Commented out because every page in an OEB book starts with this style.
- if style['page-break-before'] == 'always':
-- text.append('\\p')
-+ text.append(r'\p')
-
- # Process basic PML tags.
- pml_tag = TAG_MAP.get(tag, None)
- if pml_tag and pml_tag not in tag_stack+tags:
-- text.append('\\%s' % pml_tag)
-+ text.append(r'\%s' % pml_tag)
- tags.append(pml_tag)
-
- # Special processing of tags that require an argument.
-@@ -311,7 +311,7 @@ class PMLMLizer(object):
- if href not in self.link_hrefs.keys():
- self.link_hrefs[href] = 'calibre_link-%s' % len(self.link_hrefs.keys())
- href = '#%s' % self.link_hrefs[href]
-- text.append('\\q="%s"' % href)
-+ text.append(r'\q="%s"' % href)
- tags.append('q')
-
- # Anchor ids
-@@ -325,14 +325,14 @@ class PMLMLizer(object):
- for s in STYLES:
- style_tag = s[1].get(style[s[0]], None)
- if style_tag and style_tag not in tag_stack+tags:
-- text.append('\\%s' % style_tag)
-+ text.append('r\%s' % style_tag)
- tags.append(style_tag)
-
- # margin left
- try:
- mms = int(float(style['margin-left']) * 100 / style.height)
- if mms:
-- text.append('\\T="%s%%"' % mms)
-+ text.append(r'\T="%s%%"' % mms)
- except:
- pass
-
-@@ -360,7 +360,7 @@ class PMLMLizer(object):
- # text.append('\n\n')
-
- if style['page-break-after'] == 'always':
-- text.append('\\p')
-+ text.append(r'\p')
-
- # Process text after this tag but not within another.
- if hasattr(elem, 'tail') and elem.tail:
-@@ -382,5 +382,5 @@ class PMLMLizer(object):
- if tag in ('c', 'r'):
- text.append('\n\\%s' % tag)
- else:
-- text.append('\\%s' % tag)
-+ text.append(r'\%s' % tag)
- return text
-diff --git a/src/calibre/ebooks/readability/cleaners.py b/src/calibre/ebooks/readability/cleaners.py
-index 057fcf17b3..d30216c4d8 100644
---- a/src/calibre/ebooks/readability/cleaners.py
-+++ b/src/calibre/ebooks/readability/cleaners.py
-@@ -17,7 +17,7 @@ htmlstrip = re.compile("<" # open
-
- def clean_attributes(html):
- while htmlstrip.search(html):
-- html = htmlstrip.sub('<\\1\\2>', html)
-+ html = htmlstrip.sub(r'<\1\2>', html)
- return html
-
-
-diff --git a/src/calibre/ebooks/rtf/rtfml.py b/src/calibre/ebooks/rtf/rtfml.py
-index d4b339c53c..7f6cc91c50 100644
---- a/src/calibre/ebooks/rtf/rtfml.py
-+++ b/src/calibre/ebooks/rtf/rtfml.py
-@@ -83,7 +83,7 @@ def txt2rtf(text):
- for x in text:
- val = ord(x)
- if val == 160:
-- buf.write(u'\\~')
-+ buf.write(ur'\~')
- elif val <= 127:
- buf.write(unicode_type(x))
- else:
-@@ -115,7 +115,7 @@ class RTFMLizer(object):
- self.opts, self.opts.output_profile)
- self.currently_dumping_item = item
- output += self.dump_text(item.data.find(XHTML('body')), stylizer)
-- output += '{\\page }'
-+ output += r'{\page }'
- for item in self.oeb_book.spine:
- self.log.debug('Converting %s to RTF markup...' % item.href)
- # Removing comments is needed as comments with -- inside them can
-@@ -127,7 +127,7 @@ class RTFMLizer(object):
- stylizer = Stylizer(content, item.href, self.oeb_book, self.opts, self.opts.output_profile)
- self.currently_dumping_item = item
- output += self.dump_text(content.find(XHTML('body')), stylizer)
-- output += '{\\page }'
-+ output += r'{\page }'
- output += self.footer()
- output = self.insert_images(output)
- output = self.clean_text(output)
-@@ -259,7 +259,7 @@ class RTFMLizer(object):
- block_start = ''
- block_end = ''
- if 'block' not in tag_stack:
-- block_start = '{\\par\\pard\\hyphpar '
-+ block_start = r'{\par\pard\hyphpar '
- block_end = '}'
- text += '%s SPECIAL_IMAGE-%s-REPLACE_ME %s' % (block_start, src, block_end)
-
-@@ -292,7 +292,7 @@ class RTFMLizer(object):
- end_tag = tag_stack.pop()
- if end_tag != 'block':
- if tag in BLOCK_TAGS:
-- text += u'\\par\\pard\\plain\\hyphpar}'
-+ text += ur'\par\pard\plain\hyphpar}'
- else:
- text += u'}'
-
-@@ -300,6 +300,6 @@ class RTFMLizer(object):
- if 'block' in tag_stack:
- text += '%s' % txt2rtf(elem.tail)
- else:
-- text += '{\\par\\pard\\hyphpar %s}' % txt2rtf(elem.tail)
-+ text += r'{\par\pard\hyphpar %s}' % txt2rtf(elem.tail)
-
- return text
diff --git a/0008-fix-imports-from-the-wrong-module.patch b/0008-fix-imports-from-the-wrong-module.patch
deleted file mode 100644
index cce0f3f..0000000
--- a/0008-fix-imports-from-the-wrong-module.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-From 018f73f89cac3db1bd102a3eac3a4a916640ad41 Mon Sep 17 00:00:00 2001
-From: Eli Schwartz <eschwartz(a)archlinux.org>
-Date: Thu, 18 Jul 2019 12:28:02 -0400
-Subject: [PATCH 08/71] fix imports from the wrong module
-
-when module_a.submodule_a imports module_b, then module_c should not use
-"from module_a.submodule_a import module_b"
----
- src/calibre/ebooks/oeb/transforms/split.py | 5 +++--
- 1 file changed, 3 insertions(+), 2 deletions(-)
-
-diff --git a/src/calibre/ebooks/oeb/transforms/split.py b/src/calibre/ebooks/oeb/transforms/split.py
-index a42bae67a5..93fd1226c5 100644
---- a/src/calibre/ebooks/oeb/transforms/split.py
-+++ b/src/calibre/ebooks/oeb/transforms/split.py
-@@ -18,9 +18,10 @@ from lxml import etree
- from calibre import as_unicode, force_unicode
- from calibre.ebooks.epub import rules
- from calibre.ebooks.oeb.base import (OEB_STYLES, XPNSMAP as NAMESPACES,
-- urldefrag, rewrite_links, urlunquote, XHTML, urlnormalize)
-+ urldefrag, rewrite_links, XHTML, urlnormalize)
- from calibre.ebooks.oeb.polish.split import do_split
- from polyglot.builtins import iteritems, range, map
-+from polyglot.urllib import unquote
- from css_selectors import Select, SelectorError
-
- XPath = functools.partial(_XPath, namespaces=NAMESPACES)
-@@ -179,7 +180,7 @@ class Split(object):
- nhref = anchor_map[frag if frag else None]
- nhref = self.current_item.relhref(nhref)
- if frag:
-- nhref = '#'.join((urlunquote(nhref), frag))
-+ nhref = '#'.join((unquote(nhref), frag))
-
- return nhref
- return url
diff --git a/0009-unicode_check-do-not-try-to-check-pyuic-generated-fi.patch b/0009-unicode_check-do-not-try-to-check-pyuic-generated-fi.patch
deleted file mode 100644
index 8d323c1..0000000
--- a/0009-unicode_check-do-not-try-to-check-pyuic-generated-fi.patch
+++ /dev/null
@@ -1,24 +0,0 @@
-From f39eff0117e1b789caad121e79b193b38fed8cf7 Mon Sep 17 00:00:00 2001
-From: Eli Schwartz <eschwartz(a)archlinux.org>
-Date: Mon, 22 Jul 2019 11:20:50 -0400
-Subject: [PATCH 09/71] unicode_check: do not try to check pyuic-generated
- files
-
----
- setup/port.py | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
-
-diff --git a/setup/port.py b/setup/port.py
-index ecd09e2e9e..401764fcb7 100644
---- a/setup/port.py
-+++ b/setup/port.py
-@@ -72,7 +72,8 @@ class Base(Command):
- def get_files(self):
- from calibre import walk
- for path in walk(os.path.join(self.SRC, 'calibre')):
-- if path.endswith('.py') and not os.path.basename(path) in self.EXCLUDED_BASENAMES:
-+ if (path.endswith('.py') and not path.endswith('_ui.py') and not
-+ os.path.basename(path) in self.EXCLUDED_BASENAMES):
- yield path
-
- def file_hash(self, f):
diff --git a/0010-py3-more-work-towards-universal-__future__s.patch b/0010-py3-more-work-towards-universal-__future__s.patch
deleted file mode 100644
index c058cc2..0000000
--- a/0010-py3-more-work-towards-universal-__future__s.patch
+++ /dev/null
@@ -1,2388 +0,0 @@
-From 2c909f199e721e27c7639acc575a917215a7c3da Mon Sep 17 00:00:00 2001
-From: Eli Schwartz <eschwartz(a)archlinux.org>
-Date: Thu, 18 Jul 2019 12:29:39 -0400
-Subject: [PATCH 10/71] py3: more work towards universal __future__s
-
----
- src/calibre/ebooks/oeb/transforms/flatcss.py | 42 +--
- src/calibre/ebooks/oeb/transforms/jacket.py | 7 +-
- src/calibre/ebooks/oeb/transforms/metadata.py | 2 +-
- src/calibre/ebooks/oeb/transforms/split.py | 12 +-
- .../ebooks/oeb/transforms/structure.py | 12 +-
- .../ebooks/oeb/transforms/trimmanifest.py | 2 +-
- src/calibre/ebooks/pml/__init__.py | 1 +
- src/calibre/ebooks/pml/pmlconverter.py | 37 +--
- src/calibre/ebooks/pml/pmlml.py | 13 +-
- src/calibre/ebooks/rb/__init__.py | 5 +-
- src/calibre/ebooks/rb/writer.py | 1 +
- src/calibre/ebooks/readability/cleaners.py | 2 +
- src/calibre/ebooks/readability/debug.py | 2 +
- src/calibre/ebooks/readability/htmls.py | 18 +-
- src/calibre/ebooks/readability/readability.py | 18 +-
- src/calibre/ebooks/rtf/input.py | 5 +-
- src/calibre/ebooks/rtf/preprocess.py | 3 +-
- src/calibre/ebooks/rtf/rtfml.py | 22 +-
- src/calibre/ebooks/rtf2xml/ParseRtf.py | 6 +-
- src/calibre/ebooks/rtf2xml/check_encoding.py | 6 +-
- src/calibre/ebooks/rtf2xml/footnote.py | 8 +-
- src/calibre/ebooks/rtf2xml/hex_2_utf8.py | 6 +-
- src/calibre/ebooks/rtf2xml/list_table.py | 15 +-
- src/calibre/ebooks/rtf2xml/make_lists.py | 5 +-
- src/calibre/ebooks/rtf2xml/old_rtf.py | 7 +-
- src/calibre/ebooks/rtf2xml/paragraph_def.py | 7 +-
- src/calibre/ebooks/rtf2xml/pict.py | 6 +-
- src/calibre/ebooks/rtf2xml/process_tokens.py | 8 +-
- src/calibre/ebooks/rtf2xml/sections.py | 16 +-
- src/calibre/ebooks/rtf2xml/table.py | 11 +-
- src/calibre/ebooks/snb/__init__.py | 3 +-
- src/calibre/ebooks/snb/snbml.py | 41 +--
- src/calibre/ebooks/unihandecode/__init__.py | 7 +-
- .../ebooks/unihandecode/jacodepoints.py | 3 +-
- src/calibre/ebooks/unihandecode/jadecoder.py | 3 +-
- .../ebooks/unihandecode/krcodepoints.py | 3 +-
- src/calibre/ebooks/unihandecode/krdecoder.py | 2 +-
- .../ebooks/unihandecode/pykakasi/__init__.py | 3 +-
- .../ebooks/unihandecode/pykakasi/h2a.py | 239 +++++++++---------
- .../ebooks/unihandecode/pykakasi/j2h.py | 3 +-
- .../ebooks/unihandecode/pykakasi/jisyo.py | 2 +
- .../ebooks/unihandecode/pykakasi/k2a.py | 1 +
- .../ebooks/unihandecode/pykakasi/kakasi.py | 2 +-
- .../ebooks/unihandecode/unicodepoints.py | 1 +
- src/calibre/ebooks/unihandecode/unidecoder.py | 1 +
- .../ebooks/unihandecode/vncodepoints.py | 3 +-
- src/calibre/ebooks/unihandecode/vndecoder.py | 2 +-
- .../ebooks/unihandecode/zhcodepoints.py | 3 +-
- src/calibre/gui2/book_details.py | 27 +-
- src/calibre/gui2/cover_flow.py | 9 +-
- src/calibre/gui2/custom_column_widgets.py | 3 +-
- src/calibre/gui2/email.py | 2 +-
- src/calibre/gui2/init.py | 5 +-
- src/calibre/gui2/jobs.py | 14 +-
- src/calibre/gui2/layout.py | 3 +-
- src/calibre/gui2/linux_file_dialogs.py | 6 +-
- src/calibre/gui2/shortcuts.py | 4 +-
- src/calibre/gui2/ui.py | 6 +-
- src/calibre/gui2/update.py | 16 +-
- 59 files changed, 393 insertions(+), 329 deletions(-)
-
-diff --git a/src/calibre/ebooks/oeb/transforms/flatcss.py b/src/calibre/ebooks/oeb/transforms/flatcss.py
-index 4b777dbc04..c02dfe9e34 100644
---- a/src/calibre/ebooks/oeb/transforms/flatcss.py
-+++ b/src/calibre/ebooks/oeb/transforms/flatcss.py
-@@ -1,7 +1,7 @@
- '''
- CSS flattening transform.
- '''
--from __future__ import with_statement
-+from __future__ import absolute_import, division, print_function, unicode_literals
-
- __license__ = 'GPL v3'
- __copyright__ = '2008, Marshall T. Vandegrift <llasram(a)gmail.com>'
-@@ -122,9 +122,9 @@ class EmbedFontsCSSRules(object):
- if not self.body_font_family:
- return None
- if not self.href:
-- iid, href = oeb.manifest.generate(u'page_styles', u'page_styles.css')
-+ iid, href = oeb.manifest.generate('page_styles', 'page_styles.css')
- rules = [css_text(x) for x in self.rules]
-- rules = u'\n\n'.join(rules)
-+ rules = '\n\n'.join(rules)
- sheet = css_parser.parseString(rules, validate=False)
- self.href = oeb.manifest.add(iid, href, guess_type(href)[0],
- data=sheet).href
-@@ -228,13 +228,13 @@ class CSSFlattener(object):
- try:
- faces = font_scanner.fonts_for_family(family)
- except NoFonts:
-- msg = (u'No embeddable fonts found for family: %r'%family)
-+ msg = ('No embeddable fonts found for family: %r'%family)
- if failure_critical:
- raise ValueError(msg)
- self.oeb.log.warn(msg)
- return body_font_family, efi
- if not faces:
-- msg = (u'No embeddable fonts found for family: %r'%family)
-+ msg = ('No embeddable fonts found for family: %r'%family)
- if failure_critical:
- raise ValueError(msg)
- self.oeb.log.warn(msg)
-@@ -243,26 +243,26 @@ class CSSFlattener(object):
- for i, font in enumerate(faces):
- ext = 'otf' if font['is_otf'] else 'ttf'
- fid, href = self.oeb.manifest.generate(id=u'font',
-- href=u'fonts/%s.%s'%(ascii_filename(font['full_name']).replace(u' ', u'-'), ext))
-+ href='fonts/%s.%s'%(ascii_filename(font['full_name']).replace(' ', '-'), ext))
- item = self.oeb.manifest.add(fid, href,
- guess_type('dummy.'+ext)[0],
- data=font_scanner.get_font_data(font))
- item.unload_data_from_memory()
-
- cfont = {
-- u'font-family':u'"%s"'%font['font-family'],
-- u'panose-1': u' '.join(map(unicode_type, font['panose'])),
-- u'src': u'url(%s)'%item.href,
-+ 'font-family': '"%s"'%font['font-family'],
-+ 'panose-1': ' '.join(map(unicode_type, font['panose'])),
-+ 'src': 'url(%s)'%item.href,
- }
-
- if i == 0:
- generic_family = panose_to_css_generic_family(font['panose'])
-- body_font_family = u"'%s',%s"%(font['font-family'], generic_family)
-- self.oeb.log(u'Embedding font: %s'%font['font-family'])
-- for k in (u'font-weight', u'font-style', u'font-stretch'):
-- if font[k] != u'normal':
-+ body_font_family = "'%s',%s"%(font['font-family'], generic_family)
-+ self.oeb.log('Embedding font: %s'%font['font-family'])
-+ for k in ('font-weight', 'font-style', 'font-stretch'):
-+ if font[k] != 'normal':
- cfont[k] = font[k]
-- rule = '@font-face { %s }'%('; '.join(u'%s:%s'%(k, v) for k, v in
-+ rule = '@font-face { %s }'%('; '.join('%s:%s'%(k, v) for k, v in
- iteritems(cfont)))
- rule = css_parser.parseString(rule)
- efi.append(rule)
-@@ -295,7 +295,7 @@ class CSSFlattener(object):
- if self.context.change_justification != 'original':
- bs.append('text-align: '+ self.context.change_justification)
- if self.body_font_family:
-- bs.append(u'font-family: '+self.body_font_family)
-+ bs.append('font-family: '+self.body_font_family)
- body.set('style', '; '.join(bs))
- stylizer = Stylizer(html, item.href, self.oeb, self.context, profile,
- user_css=self.context.extra_css,
-@@ -458,7 +458,7 @@ class CSSFlattener(object):
- dyn_rescale = node.attrib.pop('data-calibre-rescale', None)
- if dyn_rescale is not None:
- try:
-- dyn_rescale = float(dyn_rescale) / 100.0
-+ dyn_rescale = float(dyn_rescale) / 100
- except Exception:
- dyn_rescale = 1
- fsize = self.fmap[_sbase]
-@@ -476,7 +476,7 @@ class CSSFlattener(object):
- try:
- minlh = self.context.minimum_line_height / 100.
- if not is_drop_cap and style['line-height'] < minlh * fsize:
-- cssdict['line-height'] = str(minlh)
-+ cssdict['line-height'] = unicode_type(minlh)
- except:
- self.oeb.logger.exception('Failed to set minimum line-height')
-
-@@ -528,7 +528,7 @@ class CSSFlattener(object):
-
- if cssdict:
- items = sorted(iteritems(cssdict))
-- css = u';\n'.join(u'%s: %s' % (key, val) for key, val in items)
-+ css = ';\n'.join(u'%s: %s' % (key, val) for key, val in items)
- classes = node.get('class', '').strip() or 'calibre'
- classes_list = classes.split()
- # lower() because otherwise if the document uses the same class
-@@ -538,7 +538,7 @@ class CSSFlattener(object):
- if css in styles:
- match = styles[css]
- else:
-- match = klass + str(names[klass] or '')
-+ match = klass + unicode_type(names[klass] or '')
- styles[css] = match
- names[klass] += 1
- node.attrib['class'] = match
-@@ -546,7 +546,7 @@ class CSSFlattener(object):
-
- for psel, cssdict in iteritems(pseudo_classes):
- items = sorted(iteritems(cssdict))
-- css = u';\n'.join(u'%s: %s' % (key, val) for key, val in items)
-+ css = ';\n'.join('%s: %s' % (key, val) for key, val in items)
- pstyles = pseudo_styles[psel]
- if css in pstyles:
- match = pstyles[css]
-@@ -558,7 +558,7 @@ class CSSFlattener(object):
- # then the class attribute for a.x tags will contain both
- # that class and the class for a.x:hover, which is wrong.
- klass = 'pcalibre'
-- match = klass + str(names[klass] or '')
-+ match = klass + unicode_type(names[klass] or '')
- pstyles[css] = match
- names[klass] += 1
- keep_classes.add(match)
-diff --git a/src/calibre/ebooks/oeb/transforms/jacket.py b/src/calibre/ebooks/oeb/transforms/jacket.py
-index 68ae89b8ba..35ead6a29a 100644
---- a/src/calibre/ebooks/oeb/transforms/jacket.py
-+++ b/src/calibre/ebooks/oeb/transforms/jacket.py
-@@ -1,7 +1,6 @@
- #!/usr/bin/env python2
- # vim:fileencoding=UTF-8:ts=4:sw=4:sta:et:sts=4:ai
--from __future__ import with_statement
--from __future__ import print_function
-+from __future__ import absolute_import, division, print_function, unicode_literals
-
- __license__ = 'GPL v3'
- __copyright__ = '2009, Kovid Goyal <kovid(a)kovidgoyal.net>'
-@@ -188,7 +187,7 @@ class Series(unicode_type):
- combined = roman = escape(series or u'')
- s = unicode_type.__new__(self, combined)
- s.roman = roman
-- s.name = escape(series or u'')
-+ s.name = escape(series or '')
- s.number = escape(fmt_sidx(series_index or 1.0, use_roman=False))
- s.roman_number = escape(fmt_sidx(series_index or 1.0, use_roman=True))
- return s
-@@ -260,7 +259,7 @@ def render_jacket(mi, output_profile,
- pubdate = ''
- else:
- dt = as_local_time(mi.pubdate)
-- pubdate = strftime(u'%Y', dt.timetuple())
-+ pubdate = strftime('%Y', dt.timetuple())
- except:
- pubdate = ''
-
-diff --git a/src/calibre/ebooks/oeb/transforms/metadata.py b/src/calibre/ebooks/oeb/transforms/metadata.py
-index 7f5342d6f4..ed829dc92d 100644
---- a/src/calibre/ebooks/oeb/transforms/metadata.py
-+++ b/src/calibre/ebooks/oeb/transforms/metadata.py
-@@ -1,6 +1,6 @@
- #!/usr/bin/env python2
- # vim:fileencoding=UTF-8:ts=4:sw=4:sta:et:sts=4:ai
--from __future__ import with_statement
-+from __future__ import absolute_import, division, print_function, unicode_literals
-
- __license__ = 'GPL v3'
- __copyright__ = '2009, Kovid Goyal <kovid(a)kovidgoyal.net>'
-diff --git a/src/calibre/ebooks/oeb/transforms/split.py b/src/calibre/ebooks/oeb/transforms/split.py
-index 93fd1226c5..a54121e48c 100644
---- a/src/calibre/ebooks/oeb/transforms/split.py
-+++ b/src/calibre/ebooks/oeb/transforms/split.py
-@@ -1,4 +1,4 @@
--from __future__ import with_statement
-+from __future__ import absolute_import, division, print_function, unicode_literals
- __license__ = 'GPL v3'
- __copyright__ = '2008, Kovid Goyal kovid(a)kovidgoyal.net'
- __docformat__ = 'restructuredtext en'
-@@ -20,7 +20,7 @@ from calibre.ebooks.epub import rules
- from calibre.ebooks.oeb.base import (OEB_STYLES, XPNSMAP as NAMESPACES,
- urldefrag, rewrite_links, XHTML, urlnormalize)
- from calibre.ebooks.oeb.polish.split import do_split
--from polyglot.builtins import iteritems, range, map
-+from polyglot.builtins import iteritems, range, map, unicode_type
- from polyglot.urllib import unquote
- from css_selectors import Select, SelectorError
-
-@@ -123,7 +123,7 @@ class Split(object):
-
- for i, elem in enumerate(item.data.iter('*')):
- try:
-- elem.set('pb_order', str(i))
-+ elem.set('pb_order', unicode_type(i))
- except TypeError: # Cant set attributes on comment nodes etc.
- continue
-
-@@ -202,7 +202,7 @@ class FlowSplitter(object):
- self.csp_counter = 0
-
- base, ext = os.path.splitext(self.base)
-- self.base = base.replace('%', '%%')+u'_split_%.3d'+ext
-+ self.base = base.replace('%', '%%')+'_split_%.3d'+ext
-
- self.trees = [self.item.data.getroottree()]
- self.splitting_on_page_breaks = True
-@@ -295,7 +295,7 @@ class FlowSplitter(object):
- body = self.get_body(root)
- if body is None:
- return False
-- txt = re.sub(ur'\s+|\xa0', '',
-+ txt = re.sub(r'\s+|\xa0', '',
- etree.tostring(body, method='text', encoding='unicode'))
- if len(txt) > 1:
- return False
-@@ -338,7 +338,7 @@ class FlowSplitter(object):
- for frag in frags:
- pre2 = copy.copy(pre)
- pre2.text = frag
-- pre2.tail = u''
-+ pre2.tail = ''
- new_pres.append(pre2)
- new_pres[-1].tail = pre.tail
- p = pre.getparent()
-diff --git a/src/calibre/ebooks/oeb/transforms/structure.py b/src/calibre/ebooks/oeb/transforms/structure.py
-index 31c95c8aa1..cd5211c156 100644
---- a/src/calibre/ebooks/oeb/transforms/structure.py
-+++ b/src/calibre/ebooks/oeb/transforms/structure.py
-@@ -1,6 +1,6 @@
- #!/usr/bin/env python2
- # vim:fileencoding=UTF-8:ts=4:sw=4:sta:et:sts=4:ai
--from __future__ import with_statement
-+from __future__ import absolute_import, division, print_function, unicode_literals
-
- __license__ = 'GPL v3'
- __copyright__ = '2009, Kovid Goyal <kovid(a)kovidgoyal.net>'
-@@ -26,7 +26,7 @@ def XPath(x):
-
-
- def isspace(x):
-- return not x or x.replace(u'\xa0', u'').isspace()
-+ return not x or x.replace('\xa0', '').isspace()
-
-
- def at_start(elem):
-@@ -124,11 +124,11 @@ class DetectStructure(object):
- elem = matches[0]
- eid = elem.get('id', None)
- if not eid:
-- eid = u'start_reading_at_'+unicode_type(uuid.uuid4()).replace(u'-', u'')
-+ eid = 'start_reading_at_'+unicode_type(uuid.uuid4()).replace('-', '')
- elem.set('id', eid)
-- if u'text' in self.oeb.guide:
-- self.oeb.guide.remove(u'text')
-- self.oeb.guide.add(u'text', u'Start', item.href+u'#'+eid)
-+ if 'text' in self.oeb.guide:
-+ self.oeb.guide.remove('text')
-+ self.oeb.guide.add('text', 'Start', item.href+'#'+eid)
- self.log('Setting start reading at position to %s in %s'%(
- self.opts.start_reading_at, item.href))
- return
-diff --git a/src/calibre/ebooks/oeb/transforms/trimmanifest.py b/src/calibre/ebooks/oeb/transforms/trimmanifest.py
-index c9d9b04b6e..d67f0e471c 100644
---- a/src/calibre/ebooks/oeb/transforms/trimmanifest.py
-+++ b/src/calibre/ebooks/oeb/transforms/trimmanifest.py
-@@ -1,7 +1,7 @@
- '''
- OPF manifest trimming transform.
- '''
--from __future__ import with_statement
-+from __future__ import absolute_import, division, print_function, unicode_literals
-
- __license__ = 'GPL v3'
- __copyright__ = '2008, Marshall T. Vandegrift <llasram(a)gmail.com>'
-diff --git a/src/calibre/ebooks/pml/__init__.py b/src/calibre/ebooks/pml/__init__.py
-index c01caf569d..2260f2fe7c 100644
---- a/src/calibre/ebooks/pml/__init__.py
-+++ b/src/calibre/ebooks/pml/__init__.py
-@@ -1,4 +1,5 @@
- # -*- coding: utf-8 -*-
-+from __future__ import absolute_import, division, print_function, unicode_literals
-
- __license__ = 'GPL v3'
- __copyright__ = '2009, John Schember <john(a)nachtimwald.com>'
-diff --git a/src/calibre/ebooks/pml/pmlconverter.py b/src/calibre/ebooks/pml/pmlconverter.py
-index da748469c2..4bef9a306b 100644
---- a/src/calibre/ebooks/pml/pmlconverter.py
-+++ b/src/calibre/ebooks/pml/pmlconverter.py
-@@ -1,4 +1,5 @@
- # -*- coding: utf-8 -*-
-+from __future__ import absolute_import, division, print_function, unicode_literals
-
- '''
- Convert pml markup to and from html
-@@ -229,7 +230,7 @@ class PML_HTMLizer(object):
- return html
-
- def start_line(self):
-- start = u''
-+ start = ''
-
- state = deepcopy(self.state)
- div = []
-@@ -258,10 +259,10 @@ class PML_HTMLizer(object):
- else:
- start += self.STATES_TAGS[key][0]
-
-- return u'<p>%s' % start
-+ return '<p>%s' % start
-
- def end_line(self):
-- end = u''
-+ end = ''
-
- div = []
- span = []
-@@ -281,10 +282,10 @@ class PML_HTMLizer(object):
- else:
- end += self.STATES_TAGS[key][1]
-
-- return u'%s</p>' % end
-+ return '%s</p>' % end
-
- def process_code(self, code, stream, pre=''):
-- text = u''
-+ text = ''
-
- code = self.CODE_STATES.get(code, None)
- if not code:
-@@ -309,7 +310,7 @@ class PML_HTMLizer(object):
- return text
-
- def process_code_simple(self, code, stream):
-- text = u''
-+ text = ''
-
- if self.state[code][0]:
- if code in self.STATES_CLOSE_VALUE_REQ:
-@@ -330,7 +331,7 @@ class PML_HTMLizer(object):
- return text
-
- def process_code_div(self, code, stream):
-- text = u''
-+ text = ''
-
- # Close code.
- if self.state[code][0]:
-@@ -384,7 +385,7 @@ class PML_HTMLizer(object):
- return text
-
- def process_code_span(self, code, stream):
-- text = u''
-+ text = ''
-
- # Close code.
- if self.state[code][0]:
-@@ -422,7 +423,7 @@ class PML_HTMLizer(object):
- return text
-
- def process_code_block(self, code, stream, pre=''):
-- text = u''
-+ text = ''
-
- # Close all spans
- for c in self.SPAN_STATES:
-@@ -467,7 +468,7 @@ class PML_HTMLizer(object):
- return text
-
- def code_value(self, stream):
-- value = u''
-+ value = ''
- # state 0 is before =
- # state 1 is before the first "
- # state 2 is before the second "
-@@ -506,7 +507,7 @@ class PML_HTMLizer(object):
- # Unable to complete the sequence to reterieve the value. Reset
- # the stream to the location it started.
- stream.seek(loc)
-- value = u''
-+ value = ''
-
- return value.strip()
-
-@@ -565,7 +566,7 @@ class PML_HTMLizer(object):
-
- c = line.read(1)
- while c != '':
-- text = u''
-+ text = ''
-
- if c == '\\':
- c = line.read(1)
-@@ -673,10 +674,10 @@ class PML_HTMLizer(object):
- indent_state['T'] = False
- adv_indent_val = ''
-
-- output.append(u''.join(parsed))
-+ output.append(''.join(parsed))
- line.close()
-
-- output = self.cleanup_html(u'\n'.join(output))
-+ output = self.cleanup_html('\n'.join(output))
-
- return output
-
-@@ -700,18 +701,18 @@ class PML_HTMLizer(object):
- t_l3 = None
-
- for level, (href, id, text) in self.toc:
-- if level == u'0':
-+ if level == '0':
- t_l0 = n_toc.add_item(href, id, text)
- t_l1 = None
- t_l2 = None
- t_l3 = None
-- elif level == u'1':
-+ elif level == '1':
- if t_l0 is None:
- t_l0 = n_toc
- t_l1 = t_l0.add_item(href, id, text)
- t_l2 = None
- t_l3 = None
-- elif level == u'2':
-+ elif level == '2':
- if t_l1 is None:
- if t_l0 is None:
- t_l1 = n_toc
-@@ -719,7 +720,7 @@ class PML_HTMLizer(object):
- t_l1 = t_l0
- t_l2 = t_l1.add_item(href, id, text)
- t_l3 = None
-- elif level == u'3':
-+ elif level == '3':
- if t_l2 is None:
- if t_l1 is None:
- if t_l0 is None:
-diff --git a/src/calibre/ebooks/pml/pmlml.py b/src/calibre/ebooks/pml/pmlml.py
-index e99ec66226..7685036733 100644
---- a/src/calibre/ebooks/pml/pmlml.py
-+++ b/src/calibre/ebooks/pml/pmlml.py
-@@ -1,4 +1,5 @@
- # -*- coding: utf-8 -*-
-+from __future__ import absolute_import, division, print_function, unicode_literals
-
- __license__ = 'GPL 3'
- __copyright__ = '2009, John Schember <john(a)nachtimwald.com>'
-@@ -103,7 +104,7 @@ class PMLMLizer(object):
- def pmlmlize_spine(self):
- self.image_hrefs = {}
- self.link_hrefs = {}
-- output = [u'']
-+ output = ['']
- output.append(self.get_cover_page())
- output.append(self.get_text())
- output = ''.join(output)
-@@ -114,7 +115,7 @@ class PMLMLizer(object):
- from calibre.ebooks.oeb.stylizer import Stylizer
- from calibre.ebooks.oeb.base import XHTML
-
-- output = u''
-+ output = ''
- if 'cover' in self.oeb_book.guide:
- output += '\\m="cover.png"\n'
- self.image_hrefs[self.oeb_book.guide['cover'].href] = 'cover.png'
-@@ -132,7 +133,7 @@ class PMLMLizer(object):
- from calibre.ebooks.oeb.stylizer import Stylizer
- from calibre.ebooks.oeb.base import XHTML
-
-- text = [u'']
-+ text = ['']
- for item in self.oeb_book.spine:
- self.log.debug('Converting %s to PML markup...' % item.href)
- content = etree.tostring(item.data, encoding='unicode')
-@@ -155,7 +156,7 @@ class PMLMLizer(object):
-
- def get_anchor(self, page, aid):
- aid = self.get_anchor_id(page.href, aid)
-- return ur'\Q="%s"' % aid
-+ return r'\Q="%s"' % aid
-
- def remove_newlines(self, text):
- text = text.replace('\r\n', ' ')
-@@ -192,8 +193,8 @@ class PMLMLizer(object):
- text = re.sub(unicode_type(r'(?msu)(?P<t>\\(x|X[0-4]))(?P<a>.*?)(?P<c>\\C[0-4]\s*=\s*"[^"]*")(?P<b>.*?)(?P=t)'), r'\g<t>\g<a>\g<b>\g<t>', text)
-
- # Replace bad characters.
-- text = text.replace(u'\xc2', '')
-- text = text.replace(u'\xa0', ' ')
-+ text = text.replace('\xc2', '')
-+ text = text.replace('\xa0', ' ')
-
- # Turn all characters that cannot be represented by themself into their
- # PML code equivelent
-diff --git a/src/calibre/ebooks/rb/__init__.py b/src/calibre/ebooks/rb/__init__.py
-index f45b966dad..f942dc3eb2 100644
---- a/src/calibre/ebooks/rb/__init__.py
-+++ b/src/calibre/ebooks/rb/__init__.py
-@@ -1,4 +1,5 @@
- # -*- coding: utf-8 -*-
-+from __future__ import absolute_import, division, print_function, unicode_literals
-
- __license__ = 'GPL 3'
- __copyright__ = '2009, John Schember <john(a)nachtimwald.com>'
-@@ -6,6 +7,8 @@ __docformat__ = 'restructuredtext en'
-
- import os
-
-+from polyglot.builtins import unicode_type
-+
- HEADER = b'\xb0\x0c\xb0\x0c\x02\x00NUVO\x00\x00\x00\x00'
-
-
-@@ -21,7 +24,7 @@ def unique_name(name, used_names):
- ext = os.path.splitext(name)[1][:3]
- base_name = name[:22]
- for i in range(0, 9999):
-- name = '%s-%s.%s' % (str(i).rjust('0', 4)[:4], base_name, ext)
-+ name = '%s-%s.%s' % (unicode_type(i).rjust('0', 4)[:4], base_name, ext)
- if name not in used_names:
- break
- return name
-diff --git a/src/calibre/ebooks/rb/writer.py b/src/calibre/ebooks/rb/writer.py
-index 9f4818725f..af671295bc 100644
---- a/src/calibre/ebooks/rb/writer.py
-+++ b/src/calibre/ebooks/rb/writer.py
-@@ -1,4 +1,5 @@
- # -*- coding: utf-8 -*-
-+from __future__ import absolute_import, division, print_function, unicode_literals
-
- __license__ = 'GPL 3'
- __copyright__ = '2009, John Schember <john(a)nachtimwald.com>'
-diff --git a/src/calibre/ebooks/readability/cleaners.py b/src/calibre/ebooks/readability/cleaners.py
-index d30216c4d8..ee160f594b 100644
---- a/src/calibre/ebooks/readability/cleaners.py
-+++ b/src/calibre/ebooks/readability/cleaners.py
-@@ -1,3 +1,5 @@
-+from __future__ import absolute_import, division, print_function, unicode_literals
-+
- # strip out a set of nuisance html attributes that can mess up rendering in RSS feeds
- import re
- from lxml.html.clean import Cleaner
-diff --git a/src/calibre/ebooks/readability/debug.py b/src/calibre/ebooks/readability/debug.py
-index 103bb5f9f0..c8acf510cf 100644
---- a/src/calibre/ebooks/readability/debug.py
-+++ b/src/calibre/ebooks/readability/debug.py
-@@ -1,3 +1,5 @@
-+from __future__ import absolute_import, division, print_function, unicode_literals
-+
- def save_to_file(text, filename):
- f = open(filename, 'wt')
- f.write('<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />')
-diff --git a/src/calibre/ebooks/readability/htmls.py b/src/calibre/ebooks/readability/htmls.py
-index 692f26c2ca..56aa159508 100644
---- a/src/calibre/ebooks/readability/htmls.py
-+++ b/src/calibre/ebooks/readability/htmls.py
-@@ -1,3 +1,5 @@
-+from __future__ import absolute_import, division, print_function, unicode_literals
-+
- import re
-
- from lxml.html import tostring
-@@ -20,14 +22,14 @@ def js_re(src, pattern, flags, repl):
-
- def normalize_entities(cur_title):
- entities = {
-- u'\u2014':'-',
-- u'\u2013':'-',
-- u'—': '-',
-- u'–': '-',
-- u'\u00A0': ' ',
-- u'\u00AB': '"',
-- u'\u00BB': '"',
-- u'"': '"',
-+ '\u2014':'-',
-+ '\u2013':'-',
-+ '—': '-',
-+ '–': '-',
-+ '\u00A0': ' ',
-+ '\u00AB': '"',
-+ '\u00BB': '"',
-+ '"': '"',
- }
- for c, r in iteritems(entities):
- if c in cur_title:
-diff --git a/src/calibre/ebooks/readability/readability.py b/src/calibre/ebooks/readability/readability.py
-index bef8caf307..e8cb581b10 100644
---- a/src/calibre/ebooks/readability/readability.py
-+++ b/src/calibre/ebooks/readability/readability.py
-@@ -156,7 +156,7 @@ class Document:
- return cleaned_article
- except Exception as e:
- self.log.exception('error getting summary: ')
-- reraise(Unparseable, Unparseable(str(e)), sys.exc_info()[2])
-+ reraise(Unparseable, Unparseable(unicode_type(e)), sys.exc_info()[2])
-
- def get_article(self, candidates, best_candidate):
- # Now that we have the top candidate, look through its siblings for content that might also be related.
-@@ -216,7 +216,7 @@ class Document:
- def score_paragraphs(self, ):
- MIN_LEN = self.options.get('min_text_length', self.TEXT_LENGTH_THRESHOLD)
- candidates = {}
-- # self.debug(str([describe(node) for node in self.tags(self.html, "div")]))
-+ # self.debug(unicode_type([describe(node) for node in self.tags(self.html, "div")]))
-
- ordered = []
- for elem in self.tags(self.html, "p", "pre", "td"):
-@@ -316,7 +316,7 @@ class Document:
- if not REGEXES['divToPElementsRe'].search(unicode_type(''.join(map(tounicode, list(elem))))):
- # self.debug("Altering %s to p" % (describe(elem)))
- elem.tag = "p"
-- # print "Fixed element "+describe(elem)
-+ # print("Fixed element "+describe(elem))
-
- for elem in self.tags(self.html, 'div'):
- if elem.text and elem.text.strip():
-@@ -324,7 +324,7 @@ class Document:
- p.text = elem.text
- elem.text = None
- elem.insert(0, p)
-- # print "Appended "+tounicode(p)+" to "+describe(elem)
-+ # print("Appended "+tounicode(p)+" to "+describe(elem))
-
- for pos, child in reversed(list(enumerate(elem))):
- if child.tail and child.tail.strip():
-@@ -332,9 +332,9 @@ class Document:
- p.text = child.tail
- child.tail = None
- elem.insert(pos + 1, p)
-- # print "Inserted "+tounicode(p)+" to "+describe(elem)
-+ # print("Inserted "+tounicode(p)+" to "+describe(elem))
- if child.tag == 'br':
-- # print 'Dropped <br> at '+describe(elem)
-+ # print('Dropped <br> at '+describe(elem))
- child.drop_tree()
-
- def tags(self, node, *tag_names):
-@@ -363,7 +363,7 @@ class Document:
- weight = self.class_weight(el)
- if el in candidates:
- content_score = candidates[el]['content_score']
-- # print '!',el, '-> %6.3f' % content_score
-+ # print('!',el, '-> %6.3f' % content_score)
- else:
- content_score = 0
- tag = el.tag
-@@ -457,7 +457,7 @@ class Document:
- siblings.append(sib_content_length)
- if j == x:
- break
-- # self.debug(str(siblings))
-+ # self.debug(unicode_type(siblings))
- if siblings and sum(siblings) > 1000 :
- to_remove = False
- self.debug("Allowing %s" % describe(el))
-@@ -467,7 +467,7 @@ class Document:
- if to_remove:
- self.debug("Cleaned %6.3f %s with weight %s cause it has %s." %
- (content_score, describe(el), weight, reason))
-- # print tounicode(el)
-+ # print(tounicode(el))
- # self.debug("pname %s pweight %.3f" %(pname, pweight))
- el.drop_tree()
-
-diff --git a/src/calibre/ebooks/rtf/input.py b/src/calibre/ebooks/rtf/input.py
-index 8ff793b5d4..075eaaa36b 100644
---- a/src/calibre/ebooks/rtf/input.py
-+++ b/src/calibre/ebooks/rtf/input.py
-@@ -1,4 +1,5 @@
--from __future__ import with_statement
-+from __future__ import absolute_import, division, print_function, unicode_literals
-+
- __license__ = 'GPL v3'
- __copyright__ = '2008, Kovid Goyal <kovid at kovidgoyal.net>'
-
-@@ -36,5 +37,3 @@ class InlineClass(etree.XSLTExtension):
- classes.append('col%d'%self.colors.index(fc))
-
- output_parent.text = ' '.join(classes)
--
--
-diff --git a/src/calibre/ebooks/rtf/preprocess.py b/src/calibre/ebooks/rtf/preprocess.py
-index aae0a1502d..04d3c1124b 100644
---- a/src/calibre/ebooks/rtf/preprocess.py
-+++ b/src/calibre/ebooks/rtf/preprocess.py
-@@ -1,7 +1,6 @@
- #!/usr/bin/env python2
- # vim:fileencoding=UTF-8:ts=4:sw=4:sta:et:sts=4:ai
--from __future__ import with_statement
--from __future__ import print_function
-+from __future__ import absolute_import, division, print_function, unicode_literals
-
- __license__ = 'GPL v3'
- __copyright__ = '2010, Gerendi Sandor Attila'
-diff --git a/src/calibre/ebooks/rtf/rtfml.py b/src/calibre/ebooks/rtf/rtfml.py
-index 7f6cc91c50..5944c4f228 100644
---- a/src/calibre/ebooks/rtf/rtfml.py
-+++ b/src/calibre/ebooks/rtf/rtfml.py
-@@ -1,4 +1,5 @@
- # -*- coding: utf-8 -*-
-+from __future__ import absolute_import, division, print_function, unicode_literals
-
- __license__ = 'GPL 3'
- __copyright__ = '2009, John Schember <john(a)nachtimwald.com>'
-@@ -83,11 +84,12 @@ def txt2rtf(text):
- for x in text:
- val = ord(x)
- if val == 160:
-- buf.write(ur'\~')
-+ buf.write(r'\~')
- elif val <= 127:
- buf.write(unicode_type(x))
- else:
-- c = unicode_type(r'\u{0:d}?'.format(val))
-+ # python2 and ur'\u' does not work
-+ c = unicode_type('\\u{0:d}?'.format(val))
- buf.write(c)
- return buf.getvalue()
-
-@@ -120,7 +122,7 @@ class RTFMLizer(object):
- self.log.debug('Converting %s to RTF markup...' % item.href)
- # Removing comments is needed as comments with -- inside them can
- # cause fromstring() to fail
-- content = re.sub(u'<!--.*?-->', u'', etree.tostring(item.data, encoding='unicode'), flags=re.DOTALL)
-+ content = re.sub('<!--.*?-->', '', etree.tostring(item.data, encoding='unicode'), flags=re.DOTALL)
- content = self.remove_newlines(content)
- content = self.remove_tabs(content)
- content = etree.fromstring(content)
-@@ -149,7 +151,7 @@ class RTFMLizer(object):
- return text
-
- def header(self):
-- header = u'{\\rtf1{\\info{\\title %s}{\\author %s}}\\ansi\\ansicpg1252\\deff0\\deflang1033\n' % (
-+ header = '{\\rtf1{\\info{\\title %s}{\\author %s}}\\ansi\\ansicpg1252\\deff0\\deflang1033\n' % (
- self.oeb_book.metadata.title[0].value, authors_to_string([x.value for x in self.oeb_book.metadata.creator]))
- return header + (
- '{\\fonttbl{\\f0\\froman\\fprq2\\fcharset128 Times New Roman;}{\\f1\\froman\\fprq2\\fcharset128 Times New Roman;}{\\f2\\fswiss\\fprq2\\fcharset128 Arial;}{\\f3\\fnil\\fprq2\\fcharset128 Arial;}{\\f4\\fnil\\fprq2\\fcharset128 MS Mincho;}{\\f5\\fnil\\fprq2\\fcharset128 Tahoma;}{\\f6\\fnil\\fprq0\\fcharset128 Tahoma;}}\n' # noqa
-@@ -215,7 +217,7 @@ class RTFMLizer(object):
- text = re.sub(r'(\{\\line \}\s*){3,}', r'{\\line }{\\line }', text)
-
- # Remove non-breaking spaces
-- text = text.replace(u'\xa0', ' ')
-+ text = text.replace('\xa0', ' ')
- text = text.replace('\n\r', '\n')
-
- return text
-@@ -230,16 +232,16 @@ class RTFMLizer(object):
- if p is not None and isinstance(p.tag, string_or_bytes) and namespace(p.tag) == XHTML_NS \
- and elem.tail:
- return elem.tail
-- return u''
-+ return ''
-
-- text = u''
-+ text = ''
- style = stylizer.style(elem)
-
- if style['display'] in ('none', 'oeb-page-head', 'oeb-page-foot') \
- or style['visibility'] == 'hidden':
- if hasattr(elem, 'tail') and elem.tail:
- return elem.tail
-- return u''
-+ return ''
-
- tag = barename(elem.tag)
- tag_count = 0
-@@ -292,9 +294,9 @@ class RTFMLizer(object):
- end_tag = tag_stack.pop()
- if end_tag != 'block':
- if tag in BLOCK_TAGS:
-- text += ur'\par\pard\plain\hyphpar}'
-+ text += r'\par\pard\plain\hyphpar}'
- else:
-- text += u'}'
-+ text += '}'
-
- if hasattr(elem, 'tail') and elem.tail:
- if 'block' in tag_stack:
-diff --git a/src/calibre/ebooks/rtf2xml/ParseRtf.py b/src/calibre/ebooks/rtf2xml/ParseRtf.py
-index 01a26ba85c..164e706a03 100644
---- a/src/calibre/ebooks/rtf2xml/ParseRtf.py
-+++ b/src/calibre/ebooks/rtf2xml/ParseRtf.py
-@@ -1,4 +1,4 @@
--from __future__ import unicode_literals, absolute_import, print_function, division
-+from __future__ import absolute_import, division, print_function, unicode_literals
- #########################################################################
- # #
- # #
-@@ -26,6 +26,8 @@ from calibre.ebooks.rtf2xml import headings_to_sections, \
- body_styles, preamble_rest, group_styles, \
- inline
- from calibre.ebooks.rtf2xml.old_rtf import OldRtf
-+from polyglot.builtins import unicode_type
-+
- from . import open_for_read, open_for_write
-
- """
-@@ -248,7 +250,7 @@ class ParseRtf:
- enc = encode_obj.get_codepage()
- # TODO: to check if cp is a good idea or if I should use a dict to convert
- enc = 'cp' + enc
-- msg = '%s\nException in token processing' % str(msg)
-+ msg = '%s\nException in token processing' % unicode_type(msg)
- if check_encoding_obj.check_encoding(self.__file, enc):
- file_name = self.__file if isinstance(self.__file, bytes) \
- else self.__file.encode('utf-8')
-diff --git a/src/calibre/ebooks/rtf2xml/check_encoding.py b/src/calibre/ebooks/rtf2xml/check_encoding.py
-index 37ac305e1f..4f8a04ceda 100644
---- a/src/calibre/ebooks/rtf2xml/check_encoding.py
-+++ b/src/calibre/ebooks/rtf2xml/check_encoding.py
-@@ -1,7 +1,9 @@
- #!/usr/bin/env python2
--from __future__ import unicode_literals, absolute_import, print_function, division
-+from __future__ import absolute_import, division, print_function, unicode_literals
-+
- import sys
-
-+from polyglot.builtins import unicode_type
-
- class CheckEncoding:
-
-@@ -15,7 +17,7 @@ class CheckEncoding:
- try:
- char.decode(encoding)
- except ValueError as msg:
-- sys.stderr.write('line: %s char: %s\n%s\n' % (line_num, char_position, str(msg)))
-+ sys.stderr.write('line: %s char: %s\n%s\n' % (line_num, char_position, unicode_type(msg)))
-
- def check_encoding(self, path, encoding='us-ascii', verbose=True):
- line_num = 0
-diff --git a/src/calibre/ebooks/rtf2xml/footnote.py b/src/calibre/ebooks/rtf2xml/footnote.py
-index 007febb775..36e7624134 100644
---- a/src/calibre/ebooks/rtf2xml/footnote.py
-+++ b/src/calibre/ebooks/rtf2xml/footnote.py
-@@ -1,4 +1,4 @@
--from __future__ import unicode_literals, absolute_import, print_function, division
-+from __future__ import absolute_import, division, print_function, unicode_literals
- #########################################################################
- # #
- # #
-@@ -15,6 +15,8 @@ import os
-
- from calibre.ebooks.rtf2xml import copy
- from calibre.ptempfile import better_mktemp
-+from polyglot.builtins import unicode_type
-+
- from . import open_for_read, open_for_write
-
-
-@@ -56,7 +58,7 @@ class Footnote:
- if self.__first_line:
- self.__first_line_func(line)
- if self.__token_info == 'cw<ci<footnot-mk':
-- num = str(self.__footnote_count)
-+ num = unicode_type(self.__footnote_count)
- self.__write_to_foot_obj.write(line)
- self.__write_to_foot_obj.write(
- 'tx<nu<__________<%s\n' % num
-@@ -93,7 +95,7 @@ class Footnote:
- self.__found_footnote(line)
- self.__write_obj.write(line)
- if self.__token_info == 'cw<ci<footnot-mk':
-- num = str(self.__footnote_count + 1)
-+ num = unicode_type(self.__footnote_count + 1)
- self.__write_obj.write(
- 'tx<nu<__________<%s\n' % num
- )
-diff --git a/src/calibre/ebooks/rtf2xml/hex_2_utf8.py b/src/calibre/ebooks/rtf2xml/hex_2_utf8.py
-index 3dbd47acba..71d0f25496 100644
---- a/src/calibre/ebooks/rtf2xml/hex_2_utf8.py
-+++ b/src/calibre/ebooks/rtf2xml/hex_2_utf8.py
-@@ -1,4 +1,4 @@
--from __future__ import unicode_literals, absolute_import, print_function, division
-+from __future__ import absolute_import, division, print_function, unicode_literals
- #########################################################################
- # #
- # #
-@@ -16,6 +16,8 @@ import sys, os, io
- from calibre.ebooks.rtf2xml import get_char_map, copy
- from calibre.ebooks.rtf2xml.char_set import char_set
- from calibre.ptempfile import better_mktemp
-+from polyglot.builtins import unicode_type
-+
- from . import open_for_read, open_for_write
-
-
-@@ -481,7 +483,7 @@ class Hex2Utf8:
- the_string = ''
- for letter in text:
- hex_num = hex(ord(letter))
-- hex_num = str(hex_num)
-+ hex_num = unicode_type(hex_num)
- hex_num = hex_num.upper()
- hex_num = hex_num[2:]
- hex_num = '\'%s' % hex_num
-diff --git a/src/calibre/ebooks/rtf2xml/list_table.py b/src/calibre/ebooks/rtf2xml/list_table.py
-index d85b7232b4..8688430cf1 100644
---- a/src/calibre/ebooks/rtf2xml/list_table.py
-+++ b/src/calibre/ebooks/rtf2xml/list_table.py
-@@ -1,5 +1,4 @@
--from __future__ import unicode_literals, absolute_import, print_function, division
--from __future__ import print_function
-+from __future__ import absolute_import, division, print_function, unicode_literals
- #########################################################################
- # #
- # #
-@@ -13,6 +12,8 @@ from __future__ import print_function
- # #
- #########################################################################
-
-+from polyglot.builtins import unicode_type
-+
-
- class ListTable:
- """
-@@ -234,7 +235,7 @@ class ListTable:
- """
- num = line[18:]
- num = int(num, 16)
-- level = str(round((num - 1)/2, 0))
-+ level = unicode_type(round((num - 1)/2, 0))
- level = level[:-2]
- level = 'level%s-show-level' % level
- self.__all_lists[-1][-1][0][level] = 'true'
-@@ -291,11 +292,11 @@ class ListTable:
- num = line[18:]
- the_num = int(num, 16)
- if not self.__found_level_text_length:
-- self.__all_lists[-1][-1][0]['list-text-length'] = str(the_num)
-+ self.__all_lists[-1][-1][0]['list-text-length'] = unicode_type(the_num)
- self.__found_level_text_length = 1
- else:
- the_num += 1
-- the_string = str(the_num)
-+ the_string = unicode_type(the_num)
- level_marker = 'level%s-suffix' % the_string
- show_marker = 'show-level%s' % the_string
- self.__level_text_position = level_marker
-@@ -383,7 +384,7 @@ class ListTable:
- for list in self.__all_lists:
- id += 1
- self.__list_table_final += 'mi<tg<open-att__<list-in-table'
-- # self.__list_table_final += '<list-id>%s' % (str(id))
-+ # self.__list_table_final += '<list-id>%s' % (unicode_type(id))
- the_dict = list[0]
- the_keys = the_dict.keys()
- for the_key in the_keys:
-@@ -398,7 +399,7 @@ class ListTable:
- for level in levels:
- level_num += 1
- self.__list_table_final += 'mi<tg<empty-att_<level-in-table'
-- self.__list_table_final += '<level>%s' % (str(level_num))
-+ self.__list_table_final += '<level>%s' % (unicode_type(level_num))
- the_dict2 = level[0]
- the_keys2 = the_dict2.keys()
- is_bullet = 0
-diff --git a/src/calibre/ebooks/rtf2xml/make_lists.py b/src/calibre/ebooks/rtf2xml/make_lists.py
-index 4cea5b1b13..7cfd07beae 100644
---- a/src/calibre/ebooks/rtf2xml/make_lists.py
-+++ b/src/calibre/ebooks/rtf2xml/make_lists.py
-@@ -12,8 +12,11 @@ from __future__ import unicode_literals, absolute_import, print_function, divisi
- # #
- #########################################################################
- import sys, os, re
-+
- from calibre.ebooks.rtf2xml import copy
- from calibre.ptempfile import better_mktemp
-+from polyglot.builtins import unicode_type
-+
- from . import open_for_read, open_for_write
-
-
-@@ -287,7 +290,7 @@ class MakeLists:
- 'mi<mk<list_start\n'
- )
- # bogus levels are sometimes written for empty paragraphs
-- if str(self.__level) not in self.__allow_levels:
-+ if unicode_type(self.__level) not in self.__allow_levels:
- lev_num = '0'
- else:
- lev_num = self.__level
-diff --git a/src/calibre/ebooks/rtf2xml/old_rtf.py b/src/calibre/ebooks/rtf2xml/old_rtf.py
-index aec7604661..65137b55dc 100644
---- a/src/calibre/ebooks/rtf2xml/old_rtf.py
-+++ b/src/calibre/ebooks/rtf2xml/old_rtf.py
-@@ -1,4 +1,4 @@
--from __future__ import unicode_literals, absolute_import, print_function, division
-+from __future__ import absolute_import, division, print_function, unicode_literals
- #########################################################################
- # #
- # #
-@@ -12,6 +12,9 @@ from __future__ import unicode_literals, absolute_import, print_function, divisi
- # #
- #########################################################################
- import sys
-+
-+from polyglot.builtins import unicode_type
-+
- from . import open_for_read
-
-
-@@ -136,7 +139,7 @@ class OldRtf:
- if self.__run_level > 3:
- sys.stderr.write(
- 'Old rtf construction %s (bracket %s, line %s)\n' % (
-- self.__inline_info, str(self.__ob_group), line_num)
-+ self.__inline_info, unicode_type(self.__ob_group), line_num)
- )
- return True
- self.__previous_token = line[6:16]
-diff --git a/src/calibre/ebooks/rtf2xml/paragraph_def.py b/src/calibre/ebooks/rtf2xml/paragraph_def.py
-index 45c2f136ec..f5aab5df05 100644
---- a/src/calibre/ebooks/rtf2xml/paragraph_def.py
-+++ b/src/calibre/ebooks/rtf2xml/paragraph_def.py
-@@ -1,4 +1,4 @@
--from __future__ import unicode_literals, absolute_import, print_function, division
-+from __future__ import absolute_import, division, print_function, unicode_literals
- #########################################################################
- # #
- # #
-@@ -12,8 +12,11 @@ from __future__ import unicode_literals, absolute_import, print_function, divisi
- # #
- #########################################################################
- import sys, os
-+
- from calibre.ebooks.rtf2xml import copy, border_parse
- from calibre.ptempfile import better_mktemp
-+from polyglot.builtins import unicode_type
-+
- from . import open_for_read, open_for_write
-
-
-@@ -621,7 +624,7 @@ if another paragraph_def is found, the state changes to collect_tokens.
- num = len(self.__style_num_strings)
- new_style = 1
- num = '%04d' % num
-- self.__att_val_dict['style-num'] = 's' + str(num)
-+ self.__att_val_dict['style-num'] = 's' + unicode_type(num)
- if new_style:
- self.__write_body_styles()
-
-diff --git a/src/calibre/ebooks/rtf2xml/pict.py b/src/calibre/ebooks/rtf2xml/pict.py
-index 62fa905db5..f3b1f74f18 100644
---- a/src/calibre/ebooks/rtf2xml/pict.py
-+++ b/src/calibre/ebooks/rtf2xml/pict.py
-@@ -1,4 +1,4 @@
--from __future__ import unicode_literals, absolute_import, print_function, division
-+from __future__ import absolute_import, division, print_function, unicode_literals
- #########################################################################
- # #
- # #
-@@ -15,6 +15,8 @@ import sys, os
-
- from calibre.ebooks.rtf2xml import copy
- from calibre.ptempfile import better_mktemp
-+from polyglot.builtins import unicode_type
-+
- from . import open_for_read, open_for_write
-
-
-@@ -76,7 +78,7 @@ class Pict:
- try:
- os.mkdir(self.__dir_name)
- except OSError as msg:
-- msg = "%sCouldn't make directory '%s':\n" % (str(msg), self.__dir_name)
-+ msg = "%sCouldn't make directory '%s':\n" % (unicode_type(msg), self.__dir_name)
- raise self.__bug_handler
- else:
- if self.__run_level > 1:
-diff --git a/src/calibre/ebooks/rtf2xml/process_tokens.py b/src/calibre/ebooks/rtf2xml/process_tokens.py
-index c7a720f152..e64fba4d8c 100644
---- a/src/calibre/ebooks/rtf2xml/process_tokens.py
-+++ b/src/calibre/ebooks/rtf2xml/process_tokens.py
-@@ -1,4 +1,4 @@
--from __future__ import unicode_literals, absolute_import, print_function, division
-+from __future__ import absolute_import, division, print_function, unicode_literals
- #########################################################################
- # #
- # #
-@@ -15,6 +15,8 @@ import os, re
-
- from calibre.ebooks.rtf2xml import copy, check_brackets
- from calibre.ptempfile import better_mktemp
-+from polyglot.builtins import unicode_type
-+
- from . import open_for_read, open_for_write
-
-
-@@ -693,7 +695,7 @@ class ProcessTokens:
- if num[-1] == ';':
- num = num[:-1]
- third_field = 'en'
-- num = str('%X' % int(num))
-+ num = unicode_type('%X' % int(num))
- if len(num) != 2:
- num = "0" + num
- return 'cw<%s<%s<%s<%s\n' % (pre, token, third_field, num)
-@@ -730,7 +732,7 @@ class ProcessTokens:
- return 0
- num = '%0.2f' % round(numerator/denominator, 2)
- return num
-- string_num = str(num)
-+ string_num = unicode_type(num)
- if string_num[-2:] == ".0":
- string_num = string_num[:-2]
- return string_num
-diff --git a/src/calibre/ebooks/rtf2xml/sections.py b/src/calibre/ebooks/rtf2xml/sections.py
-index 3fbd7b3187..fdc0ed4eb6 100644
---- a/src/calibre/ebooks/rtf2xml/sections.py
-+++ b/src/calibre/ebooks/rtf2xml/sections.py
-@@ -1,4 +1,4 @@
--from __future__ import unicode_literals, absolute_import, print_function, division
-+from __future__ import absolute_import, division, print_function, unicode_literals
- #########################################################################
- # #
- # #
-@@ -15,6 +15,8 @@ import sys, os
-
- from calibre.ebooks.rtf2xml import copy
- from calibre.ptempfile import better_mktemp
-+from polyglot.builtins import unicode_type
-+
- from . import open_for_read, open_for_write
-
-
-@@ -274,8 +276,8 @@ class Sections:
- my_string += 'mi<tg<close_____<section\n'
- else:
- self.__found_first_sec = 1
-- my_string += 'mi<tg<open-att__<section<num>%s' % str(self.__section_num)
-- my_string += '<num-in-level>%s' % str(self.__section_num)
-+ my_string += 'mi<tg<open-att__<section<num>%s' % unicode_type(self.__section_num)
-+ my_string += '<num-in-level>%s' % unicode_type(self.__section_num)
- my_string += '<type>rtf-native'
- my_string += '<level>0'
- keys = self.__section_values.keys()
-@@ -357,7 +359,7 @@ class Sections:
- '<num-in-level>%s'
- '<type>rtf-native'
- '<level>0\n'
-- % (str(self.__section_num), str(self.__section_num))
-+ % (unicode_type(self.__section_num), unicode_type(self.__section_num))
- )
- self.__found_first_sec = 1
- elif self.__token_info == 'tx<nu<__________':
-@@ -368,7 +370,7 @@ class Sections:
- '<num-in-level>%s'
- '<type>rtf-native'
- '<level>0\n'
-- % (str(self.__section_num), str(self.__section_num))
-+ % (unicode_type(self.__section_num), unicode_type(self.__section_num))
- )
- self.__write_obj.write(
- 'cw<pf<par-def___<true\n'
-@@ -461,7 +463,7 @@ class Sections:
- self.__field_num = self.__field_num[1:]
- self.__write_obj.write(
- 'mi<tg<close_____<section\n'
-- 'mi<tg<open-att__<section<num>%s' % str(num)
-+ 'mi<tg<open-att__<section<num>%s' % unicode_type(num)
- )
- if self.__list_of_sec_values:
- keys = self.__list_of_sec_values[0].keys()
-@@ -471,7 +473,7 @@ class Sections:
- self.__list_of_sec_values = self.__list_of_sec_values[1:]
- self.__write_obj.write('<level>0')
- self.__write_obj.write('<type>rtf-native')
-- self.__write_obj.write('<num-in-level>%s' % str(self.__section_num))
-+ self.__write_obj.write('<num-in-level>%s' % unicode_type(self.__section_num))
- self.__write_obj.write('\n')
- # Look here
-
-diff --git a/src/calibre/ebooks/rtf2xml/table.py b/src/calibre/ebooks/rtf2xml/table.py
-index 4424a4978a..139dea4971 100644
---- a/src/calibre/ebooks/rtf2xml/table.py
-+++ b/src/calibre/ebooks/rtf2xml/table.py
-@@ -1,4 +1,4 @@
--from __future__ import unicode_literals, absolute_import, print_function, division
-+from __future__ import absolute_import, division, print_function, unicode_literals
- #########################################################################
- # #
- # #
-@@ -12,8 +12,11 @@ from __future__ import unicode_literals, absolute_import, print_function, divisi
- # #
- #########################################################################
- import sys, os
-+
- from calibre.ebooks.rtf2xml import copy, border_parse
- from calibre.ptempfile import better_mktemp
-+from polyglot.builtins import unicode_type
-+
- from . import open_for_read, open_for_write
-
- """
-@@ -397,13 +400,13 @@ class Table:
- left_position = float(left_position)
- width = new_cell_position - self.__last_cell_position - left_position
- # width = round(width, 2)
-- width = str('%.2f' % width)
-+ width = unicode_type('%.2f' % width)
- self.__last_cell_position = new_cell_position
- widths_exists = self.__row_dict.get('widths')
- if widths_exists:
-- self.__row_dict['widths'] += ', %s' % str(width)
-+ self.__row_dict['widths'] += ', %s' % unicode_type(width)
- else:
-- self.__row_dict['widths'] = str(width)
-+ self.__row_dict['widths'] = unicode_type(width)
- self.__cell_list[-1]['width'] = width
- self.__cell_list.append({})
- self.__cell_widths.append(width)
-diff --git a/src/calibre/ebooks/snb/__init__.py b/src/calibre/ebooks/snb/__init__.py
-index 3d97812b9b..25d2014767 100644
---- a/src/calibre/ebooks/snb/__init__.py
-+++ b/src/calibre/ebooks/snb/__init__.py
-@@ -1,4 +1,6 @@
- #!/usr/bin/env python2
-+from __future__ import absolute_import, division, print_function, unicode_literals
-+
- __license__ = 'GPL v3'
- __copyright__ = '2010, Li Fanxi <lifanxi(a)freemindworld.com>'
- __docformat__ = 'restructuredtext en'
-@@ -6,4 +8,3 @@ __docformat__ = 'restructuredtext en'
- '''
- Used for snb output
- '''
--
-diff --git a/src/calibre/ebooks/snb/snbml.py b/src/calibre/ebooks/snb/snbml.py
-index 659959e6f0..c93d3d3701 100644
---- a/src/calibre/ebooks/snb/snbml.py
-+++ b/src/calibre/ebooks/snb/snbml.py
-@@ -1,4 +1,5 @@
- # -*- coding: utf-8 -*-
-+from __future__ import absolute_import, division, print_function, unicode_literals
-
- __license__ = 'GPL 3'
- __copyright__ = '2010, Li Fanxi <lifanxi(a)freemindworld.com>'
-@@ -93,19 +94,19 @@ class SNBMLizer(object):
- snbcHead = etree.SubElement(snbcTree, "head")
- etree.SubElement(snbcHead, "title").text = subtitle
- if self.opts and self.opts.snb_hide_chapter_name:
-- etree.SubElement(snbcHead, "hidetitle").text = u"true"
-+ etree.SubElement(snbcHead, "hidetitle").text = "true"
- etree.SubElement(snbcTree, "body")
- trees[subitem] = snbcTree
-- output.append(u'%s%s\n\n' % (CALIBRE_SNB_BM_TAG, ""))
-+ output.append('%s%s\n\n' % (CALIBRE_SNB_BM_TAG, ""))
- output += self.dump_text(self.subitems, etree.fromstring(content), stylizer)[0]
-- output = self.cleanup_text(u''.join(output))
-+ output = self.cleanup_text(''.join(output))
-
- subitem = ''
- bodyTree = trees[subitem].find(".//body")
- for line in output.splitlines():
- pos = line.find(CALIBRE_SNB_PRE_TAG)
- if pos == -1:
-- line = line.strip(u' \t\n\r\u3000')
-+ line = line.strip(' \t\n\r\u3000')
- else:
- etree.SubElement(bodyTree, "text").text = \
- etree.CDATA(line[pos+len(CALIBRE_SNB_PRE_TAG):])
-@@ -124,14 +125,14 @@ class SNBMLizer(object):
- bodyTree = trees[subitem].find(".//body")
- else:
- if self.opts and not self.opts.snb_dont_indent_first_line:
-- prefix = u'\u3000\u3000'
-+ prefix = '\u3000\u3000'
- else:
-- prefix = u''
-+ prefix = ''
- etree.SubElement(bodyTree, "text").text = \
- etree.CDATA(unicode_type(prefix + line))
- if self.opts and self.opts.snb_insert_empty_line:
- etree.SubElement(bodyTree, "text").text = \
-- etree.CDATA(u'')
-+ etree.CDATA('')
-
- return trees
-
-@@ -146,9 +147,9 @@ class SNBMLizer(object):
- def cleanup_text(self, text):
- self.log.debug('\tClean up text...')
- # Replace bad characters.
-- text = text.replace(u'\xc2', '')
-- text = text.replace(u'\xa0', ' ')
-- text = text.replace(u'\xa9', '(C)')
-+ text = text.replace('\xc2', '')
-+ text = text.replace('\xa0', ' ')
-+ text = text.replace('\xa9', '(C)')
-
- # Replace tabs, vertical tags and form feeds with single space.
- text = text.replace('\t+', ' ')
-@@ -226,7 +227,7 @@ class SNBMLizer(object):
- if elem.attrib.get('id') is not None and elem.attrib['id'] in [href for href, title in subitems]:
- if self.curSubItem is not None and self.curSubItem != elem.attrib['id']:
- self.curSubItem = elem.attrib['id']
-- text.append(u'\n\n%s%s\n\n' % (CALIBRE_SNB_BM_TAG, self.curSubItem))
-+ text.append('\n\n%s%s\n\n' % (CALIBRE_SNB_BM_TAG, self.curSubItem))
-
- if style['display'] in ('none', 'oeb-page-head', 'oeb-page-foot') \
- or style['visibility'] == 'hidden':
-@@ -240,18 +241,18 @@ class SNBMLizer(object):
- # Are we in a paragraph block?
- if tag in BLOCK_TAGS or style['display'] in BLOCK_STYLES:
- in_block = True
-- if not end.endswith(u'\n\n') and hasattr(elem, 'text') and elem.text:
-- text.append(u'\n\n')
-+ if not end.endswith('\n\n') and hasattr(elem, 'text') and elem.text:
-+ text.append('\n\n')
-
- if tag in SPACE_TAGS:
- if not end.endswith('u ') and hasattr(elem, 'text') and elem.text:
-- text.append(u' ')
-+ text.append(' ')
-
- if tag == 'img':
-- text.append(u'\n\n%s%s\n\n' % (CALIBRE_SNB_IMG_TAG, ProcessFileName(elem.attrib['src'])))
-+ text.append('\n\n%s%s\n\n' % (CALIBRE_SNB_IMG_TAG, ProcessFileName(elem.attrib['src'])))
-
- if tag == 'br':
-- text.append(u'\n\n')
-+ text.append('\n\n')
-
- if tag == 'li':
- li = '- '
-@@ -260,24 +261,24 @@ class SNBMLizer(object):
- # Process tags that contain text.
- if hasattr(elem, 'text') and elem.text:
- if pre:
-- text.append((u'\n\n%s' % CALIBRE_SNB_PRE_TAG).join((li + elem.text).splitlines()))
-+ text.append(('\n\n%s' % CALIBRE_SNB_PRE_TAG).join((li + elem.text).splitlines()))
- else:
- text.append(li + elem.text)
- li = ''
-
- for item in elem:
-- en = u''
-+ en = ''
- if len(text) >= 2:
- en = text[-1][-2:]
- t = self.dump_text(subitems, item, stylizer, en, pre, li)[0]
- text += t
-
- if in_block:
-- text.append(u'\n\n')
-+ text.append('\n\n')
-
- if hasattr(elem, 'tail') and elem.tail:
- if pre:
-- text.append((u'\n\n%s' % CALIBRE_SNB_PRE_TAG).join(elem.tail.splitlines()))
-+ text.append(('\n\n%s' % CALIBRE_SNB_PRE_TAG).join(elem.tail.splitlines()))
- else:
- text.append(li + elem.tail)
- li = ''
-diff --git a/src/calibre/ebooks/unihandecode/__init__.py b/src/calibre/ebooks/unihandecode/__init__.py
-index 153d8221fe..91238eddaa 100644
---- a/src/calibre/ebooks/unihandecode/__init__.py
-+++ b/src/calibre/ebooks/unihandecode/__init__.py
-@@ -1,4 +1,5 @@
- # -*- coding: utf-8 -*-
-+from __future__ import absolute_import, division, print_function, unicode_literals
-
- __license__ = 'GPL 3'
- __copyright__ = '2010, Hiroshi Miura <miurahr(a)linux.com>'
-@@ -27,13 +28,13 @@ class Unihandecoder(object):
- def __init__(self, lang="zh", encoding='utf-8'):
- self.preferred_encoding = encoding
- lang = lang.lower()
-- if lang[:2] == u'ja':
-+ if lang[:2] == 'ja':
- from calibre.ebooks.unihandecode.jadecoder import Jadecoder
- self.decoder = Jadecoder()
-- elif lang[:2] == u'kr' or lang == u'korean':
-+ elif lang[:2] == 'kr' or lang == 'korean':
- from calibre.ebooks.unihandecode.krdecoder import Krdecoder
- self.decoder = Krdecoder()
-- elif lang[:2] == u'vn' or lang == u'vietnum':
-+ elif lang[:2] == 'vn' or lang == 'vietnum':
- from calibre.ebooks.unihandecode.vndecoder import Vndecoder
- self.decoder = Vndecoder()
- else: # zh and others
-diff --git a/src/calibre/ebooks/unihandecode/jacodepoints.py b/src/calibre/ebooks/unihandecode/jacodepoints.py
-index 5d8e3db279..89d83d94b6 100644
---- a/src/calibre/ebooks/unihandecode/jacodepoints.py
-+++ b/src/calibre/ebooks/unihandecode/jacodepoints.py
-@@ -1,4 +1,5 @@
- # -*- coding: utf-8 -*-
-+from __future__ import absolute_import, division, print_function, unicode_literals
-
- __license__ = 'GPL 3'
- __copyright__ = '2010 Hiroshi Miura <miurahr(a)linux.com>'
-@@ -9,7 +10,7 @@ Unicode code point dictionary.
- Based on Unicode.org Unihan database.
- '''
-
--CODEPOINTS = {
-+CODEPOINTS = {
- 'x34':[
- 'Qiu ','Tian ','','','Kua ','Wu ','Yin ','','','','','','Si ','','','',
- '','','','','','','Ye ','','','','','','Chou ','','','',
-diff --git a/src/calibre/ebooks/unihandecode/jadecoder.py b/src/calibre/ebooks/unihandecode/jadecoder.py
-index b49c1144c0..d6318c270d 100644
---- a/src/calibre/ebooks/unihandecode/jadecoder.py
-+++ b/src/calibre/ebooks/unihandecode/jadecoder.py
-@@ -1,4 +1,6 @@
- # coding:utf-8
-+from __future__ import absolute_import, division, print_function, unicode_literals
-+
- __license__ = 'GPL 3'
- __copyright__ = '2010, Hiroshi Miura <miurahr(a)linux.com>'
- __docformat__ = 'restructuredtext en'
-@@ -39,4 +41,3 @@ class Jadecoder(Unidecoder):
- return re.sub('[^\x00-\x7f]', lambda x: self.replace_point(x.group()),result)
- except:
- return re.sub('[^\x00-\x7f]', lambda x: self.replace_point(x.group()),text)
--
-diff --git a/src/calibre/ebooks/unihandecode/krcodepoints.py b/src/calibre/ebooks/unihandecode/krcodepoints.py
-index cdb711afdd..bca8e3f4b4 100644
---- a/src/calibre/ebooks/unihandecode/krcodepoints.py
-+++ b/src/calibre/ebooks/unihandecode/krcodepoints.py
-@@ -1,4 +1,5 @@
- # -*- coding: utf-8 -*-
-+from __future__ import absolute_import, division, print_function, unicode_literals
-
- __license__ = 'GPL 3'
- __copyright__ = '2010 Hiroshi Miura <miurahr(a)linux.com>'
-@@ -9,7 +10,7 @@ Unicode code point dictionary.
- Based on Unicode.org Unihan database.
- '''
-
--CODEPOINTS = {
-+CODEPOINTS = {
- 'x34':[
- 'Qiu ','Tian ','','','Kua ','Wu ','Yin ','','','','','','Si ','','','',
- '','','','','','','Ye ','','','','','','Chou ','','','',
-diff --git a/src/calibre/ebooks/unihandecode/krdecoder.py b/src/calibre/ebooks/unihandecode/krdecoder.py
-index af5b3b39e8..914f6f41c6 100644
---- a/src/calibre/ebooks/unihandecode/krdecoder.py
-+++ b/src/calibre/ebooks/unihandecode/krdecoder.py
-@@ -1,4 +1,5 @@
- # -*- coding: utf-8 -*-
-+from __future__ import absolute_import, division, print_function, unicode_literals
-
- __license__ = 'GPL 3'
- __copyright__ = '2010, Hiroshi Miura <miurahr(a)linux.com>'
-@@ -22,4 +23,3 @@ class Krdecoder(Unidecoder):
- def __init__(self):
- self.codepoints = CODEPOINTS
- self.codepoints.update(HANCODES)
--
-diff --git a/src/calibre/ebooks/unihandecode/pykakasi/__init__.py b/src/calibre/ebooks/unihandecode/pykakasi/__init__.py
-index c92e541a82..4995491752 100644
---- a/src/calibre/ebooks/unihandecode/pykakasi/__init__.py
-+++ b/src/calibre/ebooks/unihandecode/pykakasi/__init__.py
-@@ -1,5 +1,6 @@
-+from __future__ import absolute_import, division, print_function, unicode_literals
-+
- from calibre.ebooks.unihandecode.pykakasi.kakasi import kakasi
- kakasi
-
- __all__ = ["pykakasi"]
--
-diff --git a/src/calibre/ebooks/unihandecode/pykakasi/h2a.py b/src/calibre/ebooks/unihandecode/pykakasi/h2a.py
-index 409a110093..ebbf06fdf3 100644
---- a/src/calibre/ebooks/unihandecode/pykakasi/h2a.py
-+++ b/src/calibre/ebooks/unihandecode/pykakasi/h2a.py
-@@ -20,6 +20,7 @@
- # * GNU General Public License for more details.
- # *
- # */
-+from __future__ import absolute_import, division, print_function, unicode_literals
-
- from polyglot.builtins import range
-
-@@ -27,137 +28,137 @@ from polyglot.builtins import range
- class H2a (object):
-
- H2a_table = {
-- u"\u3041":"a", u"\u3042":"a",
-- u"\u3043":"i", u"\u3044":"i",
-- u"\u3045":"u", u"\u3046":"u",
-- u"\u3046\u309b":"vu", u"\u3046\u309b\u3041":"va",
-- u"\u3046\u309b\u3043":"vi", u"\u3046\u309b\u3047":"ve",
-- u"\u3046\u309b\u3049":"vo",
-- u"\u3047":"e", u"\u3048":"e",
-- u"\u3049":"o", u"\u304a":"o",
-+ "\u3041":"a", "\u3042":"a",
-+ "\u3043":"i", "\u3044":"i",
-+ "\u3045":"u", "\u3046":"u",
-+ "\u3046\u309b":"vu", "\u3046\u309b\u3041":"va",
-+ "\u3046\u309b\u3043":"vi", "\u3046\u309b\u3047":"ve",
-+ "\u3046\u309b\u3049":"vo",
-+ "\u3047":"e", "\u3048":"e",
-+ "\u3049":"o", "\u304a":"o",
-
-- u"\u304b":"ka", u"\u304c":"ga",
-- u"\u304d":"ki", u"\u304d\u3041":"kya",
-- u"\u304d\u3045":"kyu", u"\u304d\u3049":"kyo",
-- u"\u304e":"gi", u"\u3050\u3083":"gya",
-- u"\u304e\u3045":"gyu", u"\u304e\u3087":"gyo",
-- u"\u304f":"ku", u"\u3050":"gu",
-- u"\u3051":"ke", u"\u3052":"ge",
-- u"\u3053":"ko", u"\u3054":"go",
-+ "\u304b":"ka", "\u304c":"ga",
-+ "\u304d":"ki", "\u304d\u3041":"kya",
-+ "\u304d\u3045":"kyu", "\u304d\u3049":"kyo",
-+ "\u304e":"gi", "\u3050\u3083":"gya",
-+ "\u304e\u3045":"gyu", "\u304e\u3087":"gyo",
-+ "\u304f":"ku", "\u3050":"gu",
-+ "\u3051":"ke", "\u3052":"ge",
-+ "\u3053":"ko", "\u3054":"go",
-
-- u"\u3055":"sa", u"\u3056":"za",
-- u"\u3057":"shi", u"\u3057\u3083":"sha",
-- u"\u3057\u3085":"shu", u"\u3057\u3087":"sho",
-- u"\u3058":"ji", u"\u3058\u3083":"ja",
-- u"\u3058\u3085":"ju", u"\u3058\u3087":"jo",
-- u"\u3059":"su", u"\u305a":"zu",
-- u"\u305b":"se", u"\u305c":"ze",
-- u"\u305d":"so", u"\u305e":"zo",
-+ "\u3055":"sa", "\u3056":"za",
-+ "\u3057":"shi", "\u3057\u3083":"sha",
-+ "\u3057\u3085":"shu", "\u3057\u3087":"sho",
-+ "\u3058":"ji", "\u3058\u3083":"ja",
-+ "\u3058\u3085":"ju", "\u3058\u3087":"jo",
-+ "\u3059":"su", "\u305a":"zu",
-+ "\u305b":"se", "\u305c":"ze",
-+ "\u305d":"so", "\u305e":"zo",
-
-- u"\u305f":"ta", u"\u3060":"da",
-- u"\u3061":"chi", u"\u3061\u3047":"che", u"\u3061\u3083":"cha",
-- u"\u3061\u3085":"chu", u"\u3061\u3087":"cho",
-- u"\u3062":"ji", u"\u3062\u3083":"ja",
-- u"\u3062\u3085":"ju", u"\u3062\u3087":"jo",
-+ "\u305f":"ta", "\u3060":"da",
-+ "\u3061":"chi", "\u3061\u3047":"che", "\u3061\u3083":"cha",
-+ "\u3061\u3085":"chu", "\u3061\u3087":"cho",
-+ "\u3062":"ji", "\u3062\u3083":"ja",
-+ "\u3062\u3085":"ju", "\u3062\u3087":"jo",
-
-- u"\u3063":"tsu",
-- u"\u3063\u3046\u309b":"vvu",
-- u"\u3063\u3046\u309b\u3041":"vva",
-- u"\u3063\u3046\u309b\u3043":"vvi",
-- u"\u3063\u3046\u309b\u3047":"vve",
-- u"\u3063\u3046\u309b\u3049":"vvo",
-- u"\u3063\u304b":"kka", u"\u3063\u304c":"gga",
-- u"\u3063\u304d":"kki", u"\u3063\u304d\u3083":"kkya",
-- u"\u3063\u304d\u3085":"kkyu", u"\u3063\u304d\u3087":"kkyo",
-- u"\u3063\u304e":"ggi", u"\u3063\u304e\u3083":"ggya",
-- u"\u3063\u304e\u3085":"ggyu", u"\u3063\u304e\u3087":"ggyo",
-- u"\u3063\u304f":"kku", u"\u3063\u3050":"ggu",
-- u"\u3063\u3051":"kke", u"\u3063\u3052":"gge",
-- u"\u3063\u3053":"kko", u"\u3063\u3054":"ggo",
-- u"\u3063\u3055":"ssa", u"\u3063\u3056":"zza",
-- u"\u3063\u3057":"sshi", u"\u3063\u3057\u3083":"ssha",
-- u"\u3063\u3057\u3085":"sshu", u"\u3063\u3057\u3087":"ssho",
-- u"\u3063\u3058":"jji", u"\u3063\u3058\u3083":"jja",
-- u"\u3063\u3058\u3085":"jju", u"\u3063\u3058\u3087":"jjo",
-- u"\u3063\u3059":"ssu", u"\u3063\u305a":"zzu",
-- u"\u3063\u305b":"sse", u"\u3063\u305e":"zze",
-- u"\u3063\u305d":"sso", u"\u3063\u305c":"zzo",
-- u"\u3063\u305f":"tta", u"\u3063\u3060":"dda",
-- u"\u3063\u3061":"tchi", u"\u3063\u3061\u3083":"tcha",
-- u"\u3063\u3061\u3085":"tchu", u"\u3063\u3061\u3087":"tcho",
-- u"\u3063\u3062":"jji", u"\u3063\u3062\u3083":"jjya",
-- u"\u3063\u3062\u3085":"jjyu", u"\u3063\u3062\u3087":"jjyo",
-- u"\u3063\u3064":"ttsu", u"\u3063\u3065":"zzu",
-- u"\u3063\u3066":"tte", u"\u3063\u3067":"dde",
-- u"\u3063\u3068":"tto", u"\u3063\u3069":"ddo",
-- u"\u3063\u306f":"hha", u"\u3063\u3070":"bba",
-- u"\u3063\u3071":"ppa",
-- u"\u3063\u3072":"hhi", u"\u3063\u3072\u3083":"hhya",
-- u"\u3063\u3072\u3085":"hhyu", u"\u3063\u3072\u3087":"hhyo",
-- u"\u3063\u3073":"bbi", u"\u3063\u3073\u3083":"bbya",
-- u"\u3063\u3073\u3085":"bbyu", u"\u3063\u3073\u3087":"bbyo",
-- u"\u3063\u3074":"ppi", u"\u3063\u3074\u3083":"ppya",
-- u"\u3063\u3074\u3085":"ppyu", u"\u3063\u3074\u3087":"ppyo",
-- u"\u3063\u3075":"ffu", u"\u3063\u3075\u3041":"ffa",
-- u"\u3063\u3075\u3043":"ffi", u"\u3063\u3075\u3047":"ffe",
-- u"\u3063\u3075\u3049":"ffo",
-- u"\u3063\u3076":"bbu", u"\u3063\u3077":"ppu",
-- u"\u3063\u3078":"hhe", u"\u3063\u3079":"bbe",
-- u"\u3063\u307a":"ppe",
-- u"\u3063\u307b":"hho", u"\u3063\u307c":"bbo",
-- u"\u3063\u307d":"ppo",
-- u"\u3063\u3084":"yya", u"\u3063\u3086":"yyu",
-- u"\u3063\u3088":"yyo",
-- u"\u3063\u3089":"rra", u"\u3063\u308a":"rri",
-- u"\u3063\u308a\u3083":"rrya", u"\u3063\u308a\u3085":"rryu",
-- u"\u3063\u308a\u3087":"rryo",
-- u"\u3063\u308b":"rru", u"\u3063\u308c":"rre",
-- u"\u3063\u308d":"rro",
-+ "\u3063":"tsu",
-+ "\u3063\u3046\u309b":"vvu",
-+ "\u3063\u3046\u309b\u3041":"vva",
-+ "\u3063\u3046\u309b\u3043":"vvi",
-+ "\u3063\u3046\u309b\u3047":"vve",
-+ "\u3063\u3046\u309b\u3049":"vvo",
-+ "\u3063\u304b":"kka", "\u3063\u304c":"gga",
-+ "\u3063\u304d":"kki", "\u3063\u304d\u3083":"kkya",
-+ "\u3063\u304d\u3085":"kkyu", "\u3063\u304d\u3087":"kkyo",
-+ "\u3063\u304e":"ggi", "\u3063\u304e\u3083":"ggya",
-+ "\u3063\u304e\u3085":"ggyu", "\u3063\u304e\u3087":"ggyo",
-+ "\u3063\u304f":"kku", "\u3063\u3050":"ggu",
-+ "\u3063\u3051":"kke", "\u3063\u3052":"gge",
-+ "\u3063\u3053":"kko", "\u3063\u3054":"ggo",
-+ "\u3063\u3055":"ssa", "\u3063\u3056":"zza",
-+ "\u3063\u3057":"sshi", "\u3063\u3057\u3083":"ssha",
-+ "\u3063\u3057\u3085":"sshu", "\u3063\u3057\u3087":"ssho",
-+ "\u3063\u3058":"jji", "\u3063\u3058\u3083":"jja",
-+ "\u3063\u3058\u3085":"jju", "\u3063\u3058\u3087":"jjo",
-+ "\u3063\u3059":"ssu", "\u3063\u305a":"zzu",
-+ "\u3063\u305b":"sse", "\u3063\u305e":"zze",
-+ "\u3063\u305d":"sso", "\u3063\u305c":"zzo",
-+ "\u3063\u305f":"tta", "\u3063\u3060":"dda",
-+ "\u3063\u3061":"tchi", "\u3063\u3061\u3083":"tcha",
-+ "\u3063\u3061\u3085":"tchu", "\u3063\u3061\u3087":"tcho",
-+ "\u3063\u3062":"jji", "\u3063\u3062\u3083":"jjya",
-+ "\u3063\u3062\u3085":"jjyu", "\u3063\u3062\u3087":"jjyo",
-+ "\u3063\u3064":"ttsu", "\u3063\u3065":"zzu",
-+ "\u3063\u3066":"tte", "\u3063\u3067":"dde",
-+ "\u3063\u3068":"tto", "\u3063\u3069":"ddo",
-+ "\u3063\u306f":"hha", "\u3063\u3070":"bba",
-+ "\u3063\u3071":"ppa",
-+ "\u3063\u3072":"hhi", "\u3063\u3072\u3083":"hhya",
-+ "\u3063\u3072\u3085":"hhyu", "\u3063\u3072\u3087":"hhyo",
-+ "\u3063\u3073":"bbi", "\u3063\u3073\u3083":"bbya",
-+ "\u3063\u3073\u3085":"bbyu", "\u3063\u3073\u3087":"bbyo",
-+ "\u3063\u3074":"ppi", "\u3063\u3074\u3083":"ppya",
-+ "\u3063\u3074\u3085":"ppyu", "\u3063\u3074\u3087":"ppyo",
-+ "\u3063\u3075":"ffu", "\u3063\u3075\u3041":"ffa",
-+ "\u3063\u3075\u3043":"ffi", "\u3063\u3075\u3047":"ffe",
-+ "\u3063\u3075\u3049":"ffo",
-+ "\u3063\u3076":"bbu", "\u3063\u3077":"ppu",
-+ "\u3063\u3078":"hhe", "\u3063\u3079":"bbe",
-+ "\u3063\u307a":"ppe",
-+ "\u3063\u307b":"hho", "\u3063\u307c":"bbo",
-+ "\u3063\u307d":"ppo",
-+ "\u3063\u3084":"yya", "\u3063\u3086":"yyu",
-+ "\u3063\u3088":"yyo",
-+ "\u3063\u3089":"rra", "\u3063\u308a":"rri",
-+ "\u3063\u308a\u3083":"rrya", "\u3063\u308a\u3085":"rryu",
-+ "\u3063\u308a\u3087":"rryo",
-+ "\u3063\u308b":"rru", "\u3063\u308c":"rre",
-+ "\u3063\u308d":"rro",
-
-- u"\u3064":"tsu", u"\u3065":"zu",
-- u"\u3066":"te", u"\u3067":"de", u"\u3067\u3043":"di",
-- u"\u3068":"to", u"\u3069":"do",
-+ "\u3064":"tsu", "\u3065":"zu",
-+ "\u3066":"te", "\u3067":"de", "\u3067\u3043":"di",
-+ "\u3068":"to", "\u3069":"do",
-
-- u"\u306a":"na",
-- u"\u306b":"ni", u"\u306b\u3083":"nya",
-- u"\u306b\u3085":"nyu", u"\u306b\u3087":"nyo",
-- u"\u306c":"nu", u"\u306d":"ne", u"\u306e":"no",
-+ "\u306a":"na",
-+ "\u306b":"ni", "\u306b\u3083":"nya",
-+ "\u306b\u3085":"nyu", "\u306b\u3087":"nyo",
-+ "\u306c":"nu", "\u306d":"ne", "\u306e":"no",
-
-- u"\u306f":"ha", u"\u3070":"ba", u"\u3071":"pa",
-- u"\u3072":"hi", u"\u3072\u3083":"hya",
-- u"\u3072\u3085":"hyu", u"\u3072\u3087":"hyo",
-- u"\u3073":"bi", u"\u3073\u3083":"bya",
-- u"\u3073\u3085":"byu", u"\u3073\u3087":"byo",
-- u"\u3074":"pi", u"\u3074\u3083":"pya",
-- u"\u3074\u3085":"pyu", u"\u3074\u3087":"pyo",
-- u"\u3075":"fu", u"\u3075\u3041":"fa",
-- u"\u3075\u3043":"fi", u"\u3075\u3047":"fe",
-- u"\u3075\u3049":"fo",
-- u"\u3076":"bu", u"\u3077":"pu",
-- u"\u3078":"he", u"\u3079":"be", u"\u307a":"pe",
-- u"\u307b":"ho", u"\u307c":"bo", u"\u307d":"po",
-+ "\u306f":"ha", "\u3070":"ba", "\u3071":"pa",
-+ "\u3072":"hi", "\u3072\u3083":"hya",
-+ "\u3072\u3085":"hyu", "\u3072\u3087":"hyo",
-+ "\u3073":"bi", "\u3073\u3083":"bya",
-+ "\u3073\u3085":"byu", "\u3073\u3087":"byo",
-+ "\u3074":"pi", "\u3074\u3083":"pya",
-+ "\u3074\u3085":"pyu", "\u3074\u3087":"pyo",
-+ "\u3075":"fu", "\u3075\u3041":"fa",
-+ "\u3075\u3043":"fi", "\u3075\u3047":"fe",
-+ "\u3075\u3049":"fo",
-+ "\u3076":"bu", "\u3077":"pu",
-+ "\u3078":"he", "\u3079":"be", "\u307a":"pe",
-+ "\u307b":"ho", "\u307c":"bo", "\u307d":"po",
-
-- u"\u307e":"ma",
-- u"\u307f":"mi", u"\u307f\u3083":"mya",
-- u"\u307f\u3085":"myu", u"\u307f\u3087":"myo",
-- u"\u3080":"mu", u"\u3081":"me", u"\u3082":"mo",
-+ "\u307e":"ma",
-+ "\u307f":"mi", "\u307f\u3083":"mya",
-+ "\u307f\u3085":"myu", "\u307f\u3087":"myo",
-+ "\u3080":"mu", "\u3081":"me", "\u3082":"mo",
-
-- u"\u3083":"ya", u"\u3084":"ya",
-- u"\u3085":"yu", u"\u3086":"yu",
-- u"\u3087":"yo", u"\u3088":"yo",
-+ "\u3083":"ya", "\u3084":"ya",
-+ "\u3085":"yu", "\u3086":"yu",
-+ "\u3087":"yo", "\u3088":"yo",
-
-- u"\u3089":"ra",
-- u"\u308a":"ri", u"\u308a\u3083":"rya",
-- u"\u308a\u3085":"ryu", u"\u308a\u3087":"ryo",
-- u"\u308b":"ru", u"\u308c":"re", u"\u308d":"ro",
-+ "\u3089":"ra",
-+ "\u308a":"ri", "\u308a\u3083":"rya",
-+ "\u308a\u3085":"ryu", "\u308a\u3087":"ryo",
-+ "\u308b":"ru", "\u308c":"re", "\u308d":"ro",
-
-- u"\u308e":"wa", u"\u308f":"wa",
-- u"\u3090":"i", u"\u3091":"e",
-- u"\u3092":"wo", u"\u3093":"n",
-+ "\u308e":"wa", "\u308f":"wa",
-+ "\u3090":"i", "\u3091":"e",
-+ "\u3092":"wo", "\u3093":"n",
-
-- u"\u3093\u3042":"n'a", u"\u3093\u3044":"n'i",
-- u"\u3093\u3046":"n'u", u"\u3093\u3048":"n'e",
-- u"\u3093\u304a":"n'o",
-+ "\u3093\u3042":"n'a", "\u3093\u3044":"n'i",
-+ "\u3093\u3046":"n'u", "\u3093\u3048":"n'e",
-+ "\u3093\u304a":"n'o",
- }
-
- # this class is Borg
-diff --git a/src/calibre/ebooks/unihandecode/pykakasi/j2h.py b/src/calibre/ebooks/unihandecode/pykakasi/j2h.py
-index 79cd2c29ac..3a9d836df2 100644
---- a/src/calibre/ebooks/unihandecode/pykakasi/j2h.py
-+++ b/src/calibre/ebooks/unihandecode/pykakasi/j2h.py
-@@ -20,6 +20,7 @@
- # * GNU General Public License for more details.
- # *
- # */
-+from __future__ import absolute_import, division, print_function, unicode_literals
-
- import re
-
-@@ -48,7 +49,7 @@ class J2H (object):
- return (0x3400 <= ord(c) and ord(c) < 0xfa2e)
-
- def isCletter(self, l, c):
-- if (ord(u"") <= ord(c) and ord(c) <= 0x309f) and (l in self.cl_table[ord(c) - ord(u"")-1]):
-+ if (ord("") <= ord(c) and ord(c) <= 0x309f) and (l in self.cl_table[ord(c) - ord("")-1]):
- return True
- return False
-
-diff --git a/src/calibre/ebooks/unihandecode/pykakasi/jisyo.py b/src/calibre/ebooks/unihandecode/pykakasi/jisyo.py
-index 6ff55ad90d..2c1c95f32a 100644
---- a/src/calibre/ebooks/unihandecode/pykakasi/jisyo.py
-+++ b/src/calibre/ebooks/unihandecode/pykakasi/jisyo.py
-@@ -2,6 +2,8 @@
- # jisyo.py
- #
- # Copyright 2011 Hiroshi Miura <miurahr(a)linux.com>
-+from __future__ import absolute_import, division, print_function, unicode_literals
-+
- from zlib import decompress
-
- from polyglot.builtins import unicode_type
-diff --git a/src/calibre/ebooks/unihandecode/pykakasi/k2a.py b/src/calibre/ebooks/unihandecode/pykakasi/k2a.py
-index 7650199128..fb5b5da1ac 100644
---- a/src/calibre/ebooks/unihandecode/pykakasi/k2a.py
-+++ b/src/calibre/ebooks/unihandecode/pykakasi/k2a.py
-@@ -20,6 +20,7 @@
- # * GNU General Public License for more details.
- # *
- # */
-+from __future__ import absolute_import, division, print_function, unicode_literals
-
- from calibre.ebooks.unihandecode.pykakasi.jisyo import jisyo
- from polyglot.builtins import range
-diff --git a/src/calibre/ebooks/unihandecode/pykakasi/kakasi.py b/src/calibre/ebooks/unihandecode/pykakasi/kakasi.py
-index 39b84b545a..47a8c026f8 100644
---- a/src/calibre/ebooks/unihandecode/pykakasi/kakasi.py
-+++ b/src/calibre/ebooks/unihandecode/pykakasi/kakasi.py
-@@ -20,6 +20,7 @@
- # * GNU General Public License for more details.
- # *
- # */
-+from __future__ import absolute_import, division, print_function, unicode_literals
-
- from calibre.ebooks.unihandecode.pykakasi.j2h import J2H
- from calibre.ebooks.unihandecode.pykakasi.h2a import H2a
-@@ -94,4 +95,3 @@ class kakasi(object):
- i += 1
-
- return otext
--
-diff --git a/src/calibre/ebooks/unihandecode/unicodepoints.py b/src/calibre/ebooks/unihandecode/unicodepoints.py
-index d9130123fb..13eeed2e03 100644
---- a/src/calibre/ebooks/unihandecode/unicodepoints.py
-+++ b/src/calibre/ebooks/unihandecode/unicodepoints.py
-@@ -1,4 +1,5 @@
- # -*- coding: utf-8 -*-
-+from __future__ import absolute_import, division, print_function, unicode_literals
-
- __license__ = 'GPL 3'
- __copyright__ = '2009, John Schember <john(a)nachtimwald.com>'
-diff --git a/src/calibre/ebooks/unihandecode/unidecoder.py b/src/calibre/ebooks/unihandecode/unidecoder.py
-index 748fcb64f1..e66a11da2f 100644
---- a/src/calibre/ebooks/unihandecode/unidecoder.py
-+++ b/src/calibre/ebooks/unihandecode/unidecoder.py
-@@ -1,4 +1,5 @@
- # -*- coding: utf-8 -*-
-+from __future__ import absolute_import, division, print_function, unicode_literals
-
- __license__ = 'GPL 3'
- __copyright__ = '2010, Hiroshi Miura <miurahr(a)linux.com>'
-diff --git a/src/calibre/ebooks/unihandecode/vncodepoints.py b/src/calibre/ebooks/unihandecode/vncodepoints.py
-index 7e10fde1c8..2a74bb157b 100644
---- a/src/calibre/ebooks/unihandecode/vncodepoints.py
-+++ b/src/calibre/ebooks/unihandecode/vncodepoints.py
-@@ -1,4 +1,5 @@
- # -*- coding: utf-8 -*-
-+from __future__ import absolute_import, division, print_function, unicode_literals
-
- __license__ = 'GPL 3'
- __copyright__ = '2010 Hiroshi Miura <miurahr(a)linux.com>'
-@@ -9,7 +10,7 @@ Unicode code point dictionary.
- Based on Unicode.org Unihan database.
- '''
-
--CODEPOINTS = {
-+CODEPOINTS = {
- 'x34':[
- 'Qiu ','Tian ','','','Kua ','Wu ','Yin ','','','','','','Si ','','','',
- '','','','','','','Ye ','','','','','','Chou ','','','',
-diff --git a/src/calibre/ebooks/unihandecode/vndecoder.py b/src/calibre/ebooks/unihandecode/vndecoder.py
-index 76d926d7b7..60ee7fbdf9 100644
---- a/src/calibre/ebooks/unihandecode/vndecoder.py
-+++ b/src/calibre/ebooks/unihandecode/vndecoder.py
-@@ -1,4 +1,5 @@
- # -*- coding: utf-8 -*-
-+from __future__ import absolute_import, division, print_function, unicode_literals
-
- __license__ = 'GPL 3'
- __copyright__ = '2010, Hiroshi Miura <miurahr(a)linux.com>'
-@@ -21,4 +22,3 @@ class Vndecoder(Unidecoder):
- def __init__(self):
- self.codepoints = CODEPOINTS
- self.codepoints.update(HANCODES)
--
-diff --git a/src/calibre/ebooks/unihandecode/zhcodepoints.py b/src/calibre/ebooks/unihandecode/zhcodepoints.py
-index 1715ecb46e..57e4de3326 100644
---- a/src/calibre/ebooks/unihandecode/zhcodepoints.py
-+++ b/src/calibre/ebooks/unihandecode/zhcodepoints.py
-@@ -1,4 +1,5 @@
- # -*- coding: utf-8 -*-
-+from __future__ import absolute_import, division, print_function, unicode_literals
-
- __license__ = 'GPL 3'
- __copyright__ = '2010 Hiroshi Miura <miurahr(a)linux.com>'
-@@ -9,7 +10,7 @@ Unicode code point dictionary.
- Based on Unicode.org Unihan database.
- '''
-
--CODEPOINTS = {
-+CODEPOINTS = {
- 'x34':[
- 'Qiu ','Tian ','','','Kua ','Wu ','Yin ','','','','','','Si ','','','',
- '','','','','','','Ye ','','','','','','Chou ','','','',
-diff --git a/src/calibre/gui2/book_details.py b/src/calibre/gui2/book_details.py
-index 031cbac7b4..357ea55c65 100644
---- a/src/calibre/gui2/book_details.py
-+++ b/src/calibre/gui2/book_details.py
-@@ -1,6 +1,7 @@
- #!/usr/bin/env python2
- # vim:fileencoding=UTF-8:ts=4:sw=4:sta:et:sts=4:ai
- # License: GPLv3 Copyright: 2010, Kovid Goyal <kovid at kovidgoyal.net>
-+from __future__ import absolute_import, division, print_function, unicode_literals
-
- import os
- import re
-@@ -59,7 +60,7 @@ def css():
- val = P('templates/book_details.css', data=True).decode('utf-8')
- col = QApplication.instance().palette().color(QPalette.Link).name()
- val = val.replace('LINK_COLOR', col)
-- _css = re.sub(unicode_type(r'/\*.*?\*/'), u'', val, flags=re.DOTALL)
-+ _css = re.sub(unicode_type(r'/\*.*?\*/'), '', val, flags=re.DOTALL)
- return _css
-
-
-@@ -127,7 +128,7 @@ def render_html(mi, css, vertical, widget, all_fields=False, render_data_func=No
-
- c = color_to_string(QApplication.palette().color(QPalette.Normal,
- QPalette.WindowText))
-- templ = u'''\
-+ templ = '''\
- <html>
- <head>
- <style type="text/css">
-@@ -147,20 +148,20 @@ def render_html(mi, css, vertical, widget, all_fields=False, render_data_func=No
- </body>
- <html>
- '''%(f, fam, c, css)
-- comments = u''
-+ comments = ''
- if comment_fields:
- comments = '\n'.join(u'<div>%s</div>' % x for x in comment_fields)
-- right_pane = u'<div id="comments" class="comments">%s</div>'%comments
-+ right_pane = '<div id="comments" class="comments">%s</div>'%comments
-
- if vertical:
- ans = templ%(table+right_pane)
- else:
- if gprefs['book_details_narrow_comments_layout'] == 'columns':
-- ans = templ%(u'<table><tr><td valign="top" '
-+ ans = templ%('<table><tr><td valign="top" '
- 'style="padding-right:2em; width:40%%">%s</td><td valign="top">%s</td></tr></table>'
- % (table, right_pane))
- else:
-- ans = templ%(u'<div style="float: left; margin-right: 1em; margin-bottom: 1em; max-width: 40%">{}</div><div>{}</div>'.format(
-+ ans = templ%('<div style="float: left; margin-right: 1em; margin-bottom: 1em; max-width: 40%">{}</div><div>{}</div>'.format(
- table, right_pane))
- return ans
-
-@@ -266,7 +267,7 @@ def details_context_menu_event(view, ev, book_info): # {{{
- else:
- el = r.linkElement()
- data = el.attribute('data-item')
-- author = el.toPlainText() if unicode_type(el.attribute('calibre-data')) == u'authors' else None
-+ author = el.toPlainText() if unicode_type(el.attribute('calibre-data')) == 'authors' else None
- if url and not url.startswith('search:'):
- for a, t in [('copy', _('&Copy link')),
- ]:
-@@ -382,12 +383,12 @@ class CoverView(QWidget): # {{{
- extrax = canvas_size.width() - width
- if extrax < 0:
- extrax = 0
-- x = int(extrax/2.)
-+ x = int(extrax//2)
- height = self.current_pixmap_size.height()
- extray = canvas_size.height() - height
- if extray < 0:
- extray = 0
-- y = int(extray/2.)
-+ y = int(extray//2)
- target = QRect(x, y, width, height)
- p = QPainter(self)
- p.setRenderHints(QPainter.Antialiasing | QPainter.SmoothPixmapTransform)
-@@ -403,7 +404,7 @@ class CoverView(QWidget): # {{{
- f = p.font()
- f.setBold(True)
- p.setFont(f)
-- sz = u'\u00a0%d x %d\u00a0'%(self.pixmap.width(), self.pixmap.height())
-+ sz = '\u00a0%d x %d\u00a0'%(self.pixmap.width(), self.pixmap.height())
- flags = Qt.AlignBottom|Qt.AlignRight|Qt.TextSingleLine
- szrect = p.boundingRect(sztgt, flags, sz)
- p.fillRect(szrect.adjusted(0, 0, 0, 4), QColor(0, 0, 0, 200))
-@@ -710,7 +711,7 @@ class DetailsLayout(QLayout): # {{{
- def cover_height(self, r):
- if not self._children[0].widget().isVisible():
- return 0
-- mh = min(int(r.height()/2.), int(4/3. * r.width())+1)
-+ mh = min(int(r.height()//2), int(4/3 * r.width())+1)
- try:
- ph = self._children[0].widget().pixmap.height()
- except:
-@@ -722,7 +723,7 @@ class DetailsLayout(QLayout): # {{{
- def cover_width(self, r):
- if not self._children[0].widget().isVisible():
- return 0
-- mw = 1 + int(3/4. * r.height())
-+ mw = 1 + int(3/4 * r.height())
- try:
- pw = self._children[0].widget().pixmap.width()
- except:
-@@ -894,7 +895,7 @@ class BookDetails(QWidget): # {{{
- self.last_data = {}
- self.book_info.show_data(data)
- self.cover_view.show_data(data)
-- self.current_path = getattr(data, u'path', u'')
-+ self.current_path = getattr(data, 'path', '')
- self.update_layout()
-
- def update_layout(self):
-diff --git a/src/calibre/gui2/cover_flow.py b/src/calibre/gui2/cover_flow.py
-index fcfe465780..17aafcbaf5 100644
---- a/src/calibre/gui2/cover_flow.py
-+++ b/src/calibre/gui2/cover_flow.py
-@@ -1,5 +1,6 @@
- #!/usr/bin/env python2
--from __future__ import print_function
-+from __future__ import absolute_import, division, print_function, unicode_literals
-+
- __license__ = 'GPL v3'
- __copyright__ = '2008, Kovid Goyal kovid(a)kovidgoyal.net'
- __docformat__ = 'restructuredtext en'
-@@ -244,7 +245,7 @@ class CBDialog(QDialog):
- geom = gprefs.get('cover_browser_dialog_geometry', bytearray(''))
- geom = QByteArray(geom)
- if not self.restoreGeometry(geom):
-- h, w = available_height()-60, int(available_width()/1.5)
-+ h, w = available_height()-60, available_width()//1.5
- self.resize(w, h)
- self.action_fs_toggle = a = QAction(self)
- self.addAction(a)
-@@ -458,7 +459,7 @@ def test():
- app = QApplication([])
- w = QMainWindow()
- cf = CoverFlow()
-- cf.resize(int(available_width()/1.5), available_height()-60)
-+ cf.resize(available_width()//1.5, available_height()-60)
- w.resize(cf.size()+QSize(30, 20))
- model = DummyImageList()
- cf.setImages(model)
-@@ -479,7 +480,7 @@ if __name__ == '__main__':
- app = QApplication([])
- w = QMainWindow()
- cf = CoverFlow()
-- cf.resize(int(available_width()/1.5), available_height()-60)
-+ cf.resize(available_width()//1.5, available_height()-60)
- w.resize(cf.size()+QSize(30, 20))
- path = sys.argv[1]
- model = FileSystemImages(sys.argv[1])
-diff --git a/src/calibre/gui2/custom_column_widgets.py b/src/calibre/gui2/custom_column_widgets.py
-index 1740271ce0..2a4f87c49b 100644
---- a/src/calibre/gui2/custom_column_widgets.py
-+++ b/src/calibre/gui2/custom_column_widgets.py
-@@ -1,5 +1,6 @@
- #!/usr/bin/env python2
- # vim:fileencoding=UTF-8:ts=4:sw=4:sta:et:sts=4:ai
-+from __future__ import absolute_import, division, print_function, unicode_literals
-
- __license__ = 'GPL v3'
- __copyright__ = '2010, Kovid Goyal <kovid(a)kovidgoyal.net>'
-@@ -350,7 +351,7 @@ class Comments(Base):
- self._box = QGroupBox(parent)
- self._box.setTitle('&'+self.col_metadata['name'])
- self._layout = QVBoxLayout()
-- self._tb = CommentsEditor(self._box, toolbar_prefs_name=u'metadata-comments-editor-widget-hidden-toolbars')
-+ self._tb = CommentsEditor(self._box, toolbar_prefs_name='metadata-comments-editor-widget-hidden-toolbars')
- self._tb.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Minimum)
- # self._tb.setTabChangesFocus(True)
- self._layout.addWidget(self._tb)
-diff --git a/src/calibre/gui2/email.py b/src/calibre/gui2/email.py
-index 5040eb133c..8b07edaa3e 100644
---- a/src/calibre/gui2/email.py
-+++ b/src/calibre/gui2/email.py
-@@ -1,6 +1,6 @@
- #!/usr/bin/env python2
- # vim:fileencoding=UTF-8:ts=4:sw=4:sta:et:sts=4:ai
--from __future__ import print_function
-+from __future__ import absolute_import, division, print_function, unicode_literals
-
- __license__ = 'GPL v3'
- __copyright__ = '2010, Kovid Goyal <kovid(a)kovidgoyal.net>'
-diff --git a/src/calibre/gui2/init.py b/src/calibre/gui2/init.py
-index 769781fbcd..9f3fa08602 100644
---- a/src/calibre/gui2/init.py
-+++ b/src/calibre/gui2/init.py
-@@ -1,5 +1,6 @@
- #!/usr/bin/env python2
- # vim:fileencoding=UTF-8:ts=4:sw=4:sta:et:sts=4:ai
-+from __future__ import absolute_import, division, print_function, unicode_literals
-
- __license__ = 'GPL v3'
- __copyright__ = '2010, Kovid Goyal <kovid(a)kovidgoyal.net>'
-@@ -314,7 +315,7 @@ class StatusBar(QStatusBar): # {{{
- if self.library_total != self.total:
- base = _('{0}, {1} total').format(base, self.library_total)
-
-- self.defmsg.setText(u'\xa0%s\xa0\xa0\xa0\xa0[%s]' % (msg, base))
-+ self.defmsg.setText('\xa0%s\xa0\xa0\xa0\xa0[%s]' % (msg, base))
- self.clearMessage()
-
- def device_disconnected(self):
-@@ -622,7 +623,7 @@ class LayoutMixin(object): # {{{
- button = self.search_bar_button
- self.layout_buttons.append(button)
- button.setVisible(False)
-- if isosx and stylename != u'Calibre':
-+ if isosx and stylename != 'Calibre':
- button.setStyleSheet('''
- QToolButton { background: none; border:none; padding: 0px; }
- QToolButton:checked { background: rgba(0, 0, 0, 25%); }
-diff --git a/src/calibre/gui2/jobs.py b/src/calibre/gui2/jobs.py
-index 8f835be45b..5431794ed9 100644
---- a/src/calibre/gui2/jobs.py
-+++ b/src/calibre/gui2/jobs.py
-@@ -1,4 +1,6 @@
- #!/usr/bin/env python2
-+from __future__ import absolute_import, division, print_function, unicode_literals
-+
- __license__ = 'GPL v3'
- __copyright__ = '2008, Kovid Goyal kovid(a)kovidgoyal.net'
- __docformat__ = 'restructuredtext en'
-@@ -73,7 +75,7 @@ class JobManager(QAbstractTableModel, AdaptSQP): # {{{
-
- self.jobs = []
- self.add_job = Dispatcher(self._add_job)
-- self.server = Server(limit=int(config['worker_limit']/2.0),
-+ self.server = Server(limit=config['worker_limit']//2,
- enforce_cpu_limit=config['enforce_cpu_limit'])
- self.threaded_server = ThreadedJobServer()
- self.changed_queue = Queue()
-@@ -149,7 +151,7 @@ class JobManager(QAbstractTableModel, AdaptSQP): # {{{
- return None
- return human_readable_interval(rtime)
- if col == 4 and job.start_time is not None:
-- return (strftime(u'%H:%M -- %d %b', time.localtime(job.start_time)))
-+ return (strftime('%H:%M -- %d %b', time.localtime(job.start_time)))
- if role == Qt.DecorationRole and col == 0:
- state = job.run_state
- if state == job.WAITING:
-@@ -325,7 +327,7 @@ class JobManager(QAbstractTableModel, AdaptSQP): # {{{
- jobs = [j for j in jobs if j.duration is None]
- unkillable = [j for j in jobs if not getattr(j, 'killable', True)]
- if unkillable:
-- names = u'\n'.join(as_unicode(j.description) for j in unkillable)
-+ names = '\n'.join(as_unicode(j.description) for j in unkillable)
- error_dialog(view, _('Cannot kill job'),
- _('Some of the jobs cannot be stopped. Click Show details'
- ' to see the list of unstoppable jobs.'), det_msg=names,
-@@ -513,7 +515,7 @@ class JobsButton(QWidget): # {{{
- self._jobs.setSizePolicy(QSizePolicy.Minimum, QSizePolicy.Minimum)
- self.setCursor(Qt.PointingHandCursor)
- b = _('Click to see list of jobs')
-- self.setToolTip(b + u' [%s]'%self.shortcut)
-+ self.setToolTip(b + ' [%s]'%self.shortcut)
- self.action_toggle = QAction(b, parent)
- parent.addAction(self.action_toggle)
- self.action_toggle.triggered.connect(self.toggle)
-@@ -576,7 +578,7 @@ class JobsButton(QWidget): # {{{
- jobs = self._jobs
- src = unicode_type(jobs.text())
- num = self.jobs()
-- text = src.replace(str(num), str(nnum))
-+ text = src.replace(unicode_type(num), unicode_type(nnum))
- jobs.setText(text)
- self.start()
- self.tray_tooltip_updated.emit(self.tray_tooltip(nnum))
-@@ -585,7 +587,7 @@ class JobsButton(QWidget): # {{{
- jobs = self._jobs
- src = unicode_type(jobs.text())
- num = self.jobs()
-- text = src.replace(str(num), str(nnum))
-+ text = src.replace(unicode_type(num), unicode_type(nnum))
- jobs.setText(text)
- if nnum == 0:
- self.no_more_jobs()
-diff --git a/src/calibre/gui2/layout.py b/src/calibre/gui2/layout.py
-index f4a27c85af..ddd14b023b 100644
---- a/src/calibre/gui2/layout.py
-+++ b/src/calibre/gui2/layout.py
-@@ -1,5 +1,6 @@
- #!/usr/bin/env python2
- # vim:fileencoding=UTF-8:ts=4:sw=4:sta:et:sts=4:ai
-+from __future__ import absolute_import, division, print_function, unicode_literals
-
- __license__ = 'GPL v3'
- __copyright__ = '2010, Kovid Goyal <kovid(a)kovidgoyal.net>'
-@@ -150,7 +151,7 @@ class LocationManager(QObject): # {{{
- for i, loc in enumerate(('main', 'carda', 'cardb')):
- t = self.tooltips[loc]
- if self.free[i] > -1:
-- t += u'\n\n%s '%human_readable(self.free[i]) + _('available')
-+ t += '\n\n%s '%human_readable(self.free[i]) + _('available')
- ac = getattr(self, 'location_'+loc)
- ac.setToolTip(t)
- ac.setWhatsThis(t)
-diff --git a/src/calibre/gui2/linux_file_dialogs.py b/src/calibre/gui2/linux_file_dialogs.py
-index b324265ff8..78d76b90af 100644
---- a/src/calibre/gui2/linux_file_dialogs.py
-+++ b/src/calibre/gui2/linux_file_dialogs.py
-@@ -136,7 +136,7 @@ def kde_cmd(window, title, *rest):
- ans += ['--desktopfile', 'calibre-gui']
- winid = get_winid(window)
- if winid is not None:
-- ans += ['--attach', str(int(winid))]
-+ ans += ['--attach', unicode_type(int(winid))]
- return ans + list(rest)
-
-
-@@ -174,7 +174,7 @@ def kdialog_choose_files(
- filters=[],
- all_files=True,
- select_only_single_file=False,
-- default_dir=u'~'):
-+ default_dir='~'):
- initial_dir = get_initial_dir(name, title, default_dir, False)
- args = []
- if not select_only_single_file:
-@@ -251,7 +251,7 @@ def zenity_choose_files(
- filters=[],
- all_files=True,
- select_only_single_file=False,
-- default_dir=u'~'):
-+ default_dir='~'):
- initial_dir = get_initial_dir(name, title, default_dir, False)
- args = ['--filename=' + os.path.join(initial_dir, '.fgdfg.gdfhjdhf*&^839')]
- args += zenity_filters(filters, all_files)
-diff --git a/src/calibre/gui2/shortcuts.py b/src/calibre/gui2/shortcuts.py
-index 77944aada5..3e78dd7fd0 100644
---- a/src/calibre/gui2/shortcuts.py
-+++ b/src/calibre/gui2/shortcuts.py
-@@ -1,6 +1,6 @@
- #!/usr/bin/env python2
- # vim:fileencoding=UTF-8:ts=4:sw=4:sta:et:sts=4:ai
--from __future__ import with_statement
-+from __future__ import absolute_import, division, print_function, unicode_literals
-
- __license__ = 'GPL v3'
- __copyright__ = '2009, Kovid Goyal <kovid(a)kovidgoyal.net>'
-@@ -203,7 +203,7 @@ class Delegate(QStyledItemDelegate):
-
- class Shortcuts(QAbstractListModel):
-
-- TEMPLATE = u'''
-+ TEMPLATE = '''
- <p><b>{0}</b><br>
- {2}: <code>{1}</code></p>
- '''
-diff --git a/src/calibre/gui2/ui.py b/src/calibre/gui2/ui.py
-index 10bd4106c3..f9cb245a6d 100644
---- a/src/calibre/gui2/ui.py
-+++ b/src/calibre/gui2/ui.py
-@@ -1,6 +1,6 @@
- #!/usr/bin/env python2
- # vim:fileencoding=UTF-8:ts=4:sw=4:sta:et:sts=4:ai
--from __future__ import print_function, with_statement
-+from __future__ import absolute_import, division, print_function, unicode_literals
-
- __license__ = 'GPL v3'
- __copyright__ = '2009, Kovid Goyal <kovid(a)kovidgoyal.net>'
-@@ -535,7 +535,7 @@ class Main(MainWindow, MainWindowMixin, DeviceMixin, EmailMixin, # {{{
-
- def create_spare_pool(self, *args):
- if self._spare_pool is None:
-- num = min(detect_ncpus(), int(config['worker_limit']/2.0))
-+ num = min(detect_ncpus(), config['worker_limit']//2)
- self._spare_pool = Pool(max_workers=num, name='GUIPool')
-
- def spare_pool(self):
-@@ -765,7 +765,7 @@ class Main(MainWindow, MainWindowMixin, DeviceMixin, EmailMixin, # {{{
- font.setBold(True)
- font.setItalic(True)
- self.virtual_library.setFont(font)
-- title = u'{0} - || {1}{2} ||'.format(
-+ title = '{0} - || {1}{2} ||'.format(
- __appname__, self.iactions['Choose Library'].library_name(), restrictions)
- self.setWindowTitle(title)
-
-diff --git a/src/calibre/gui2/update.py b/src/calibre/gui2/update.py
-index 53fe4135a1..1c3aa90ebf 100644
---- a/src/calibre/gui2/update.py
-+++ b/src/calibre/gui2/update.py
-@@ -1,8 +1,9 @@
-+from __future__ import absolute_import, division, print_function, unicode_literals
-+
- __license__ = 'GPL v3'
- __copyright__ = '2008, Kovid Goyal <kovid at kovidgoyal.net>'
-
- import re, ssl, json
--from polyglot.builtins import map, unicode_type
- from threading import Thread, Event
-
- from PyQt5.Qt import (QObject, pyqtSignal, Qt, QUrl, QDialog, QGridLayout,
-@@ -18,6 +19,7 @@ from calibre.gui2 import config, dynamic, open_url
- from calibre.gui2.dialogs.plugin_updater import get_plugin_updates_available
- from calibre.utils.serialize import msgpack_dumps, msgpack_loads
- from polyglot.binary import as_hex_unicode, from_hex_bytes
-+from polyglot.builtins import map, unicode_type
-
- URL = 'https://code.calibre-ebook.com/latest'
- # URL = 'http://localhost:8000/latest'
-@@ -56,7 +58,7 @@ def get_newest_version():
- try:
- version = version.decode('utf-8').strip()
- except UnicodeDecodeError:
-- version = u''
-+ version = ''
- ans = NO_CALIBRE_UPDATE
- m = re.match(unicode_type(r'(\d+)\.(\d+).(\d+)$'), version)
- if m is not None:
-@@ -211,21 +213,21 @@ class UpdateMixin(object):
- has_plugin_updates = number_of_plugin_updates > 0
- self.plugin_update_found(number_of_plugin_updates)
- version_url = as_hex_unicode(msgpack_dumps((calibre_version, number_of_plugin_updates)))
-- calibre_version = u'.'.join(map(unicode_type, calibre_version))
-+ calibre_version = '.'.join(map(unicode_type, calibre_version))
-
- if not has_calibre_update and not has_plugin_updates:
- self.status_bar.update_label.setVisible(False)
- return
- if has_calibre_update:
-- plt = u''
-+ plt = ''
- if has_plugin_updates:
- plt = ngettext(' (one plugin update)', ' ({} plugin updates)', number_of_plugin_updates).format(number_of_plugin_updates)
-- msg = (u'<span style="color:green; font-weight: bold">%s: '
-- u'<a href="update:%s">%s%s</a></span>') % (
-+ msg = ('<span style="color:green; font-weight: bold">%s: '
-+ '<a href="update:%s">%s%s</a></span>') % (
- _('Update found'), version_url, calibre_version, plt)
- else:
- plt = ngettext('updated plugin', 'updated plugins', number_of_plugin_updates)
-- msg = (u'<a href="update:%s">%d %s</a>')%(version_url, number_of_plugin_updates, plt)
-+ msg = ('<a href="update:%s">%d %s</a>')%(version_url, number_of_plugin_updates, plt)
- self.status_bar.update_label.setText(msg)
- self.status_bar.update_label.setVisible(True)
-
diff --git a/0011-use-floor-division-instead-of-math.floor.patch b/0011-use-floor-division-instead-of-math.floor.patch
deleted file mode 100644
index ac45005..0000000
--- a/0011-use-floor-division-instead-of-math.floor.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-From 6e4c098d0d1ac478cc967b1c913de3a2bc589520 Mon Sep 17 00:00:00 2001
-From: Eli Schwartz <eschwartz(a)archlinux.org>
-Date: Thu, 18 Jul 2019 12:22:26 -0400
-Subject: [PATCH 11/71] use floor division instead of math.floor
-
----
- src/calibre/ebooks/oeb/transforms/split.py | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/src/calibre/ebooks/oeb/transforms/split.py b/src/calibre/ebooks/oeb/transforms/split.py
-index a54121e48c..3124561a2b 100644
---- a/src/calibre/ebooks/oeb/transforms/split.py
-+++ b/src/calibre/ebooks/oeb/transforms/split.py
-@@ -9,7 +9,7 @@ forced at "likely" locations to conform to size limitations. This transform
- assumes a prior call to the flatcss transform.
- '''
-
--import os, math, functools, collections, re, copy
-+import os, functools, collections, re, copy
- from collections import OrderedDict
-
- from lxml.etree import XPath as _XPath
-@@ -390,7 +390,7 @@ class FlowSplitter(object):
- elems = [i for i in elems if i.get(SPLIT_POINT_ATTR, '0') !=
- '1']
- if elems:
-- i = int(math.floor(len(elems)/2.))
-+ i = int(len(elems)//2)
- elems[i].set(SPLIT_POINT_ATTR, '1')
- return elems[i]
-
diff --git a/0012-simplify-check-for-non-zero-content-in-set.patch b/0012-simplify-check-for-non-zero-content-in-set.patch
deleted file mode 100644
index a701a7d..0000000
--- a/0012-simplify-check-for-non-zero-content-in-set.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-From 7669bfdedb8baeca2230430e219c97e700727777 Mon Sep 17 00:00:00 2001
-From: Eli Schwartz <eschwartz(a)archlinux.org>
-Date: Mon, 22 Jul 2019 20:25:53 -0400
-Subject: [PATCH 12/71] simplify check for non-zero content in set()
-
-There's no point in casting to list just to compare to [], since
-set/list/tuple will evaluate to false when empty. So we can do less work
-in fewer characters.
----
- src/calibre/gui2/email.py | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/calibre/gui2/email.py b/src/calibre/gui2/email.py
-index 8b07edaa3e..1f348af3f5 100644
---- a/src/calibre/gui2/email.py
-+++ b/src/calibre/gui2/email.py
-@@ -429,7 +429,7 @@ class EmailMixin(object): # {{{
- dbfmts = self.library_view.model().db.formats(id, index_is_id=True)
- formats = [f.lower() for f in (dbfmts.split(',') if dbfmts else
- [])]
-- if list(set(formats).intersection(available_input_formats())) != [] and list(set(fmts).intersection(available_output_formats())) != []:
-+ if set(formats).intersection(available_input_formats()) and set(fmts).intersection(available_output_formats()):
- auto.append(id)
- else:
- bad.append(self.library_view.model().db.title(id, index_is_id=True))
diff --git a/0013-Get-more-information-from-podofo-exceptions.patch b/0013-Get-more-information-from-podofo-exceptions.patch
deleted file mode 100644
index 31c8a11..0000000
--- a/0013-Get-more-information-from-podofo-exceptions.patch
+++ /dev/null
@@ -1,32 +0,0 @@
-From 03ddf5bd3ad6e7f76a05ae6dc04ec8ec16c14cb1 Mon Sep 17 00:00:00 2001
-From: Kovid Goyal <kovid(a)kovidgoyal.net>
-Date: Wed, 24 Jul 2019 19:51:33 +0530
-Subject: [PATCH 13/71] Get more information from podofo exceptions
-
----
- src/calibre/utils/podofo/utils.cpp | 10 ++++++++--
- 1 file changed, 8 insertions(+), 2 deletions(-)
-
-diff --git a/src/calibre/utils/podofo/utils.cpp b/src/calibre/utils/podofo/utils.cpp
-index dd934b7f3d..a8755278cb 100644
---- a/src/calibre/utils/podofo/utils.cpp
-+++ b/src/calibre/utils/podofo/utils.cpp
-@@ -9,10 +9,16 @@
-
- using namespace pdf;
-
--void pdf::podofo_set_exception(const PdfError &err) {
-+void
-+pdf::podofo_set_exception(const PdfError &err) {
- const char *msg = PdfError::ErrorMessage(err.GetError());
- if (msg == NULL) msg = err.what();
-- PyErr_SetString(Error, msg);
-+ std::stringstream stream;
-+ stream << msg << "\n";
-+ for (auto &info : err.GetCallstack()) {
-+ stream << "File: " << info.GetFilename() << "Line: " << info.GetLine() << " " << info.GetInformation() << "\n";
-+ }
-+ PyErr_SetString(Error, stream.str().c_str());
- }
-
- PyObject *
diff --git a/0014-Various-fixes-for-the-last-py3-merge.patch b/0014-Various-fixes-for-the-last-py3-merge.patch
deleted file mode 100644
index 29b159d..0000000
--- a/0014-Various-fixes-for-the-last-py3-merge.patch
+++ /dev/null
@@ -1,314 +0,0 @@
-From be1242547c96578a9da56a71b24ea85d6fe5c4b4 Mon Sep 17 00:00:00 2001
-From: Kovid Goyal <kovid(a)kovidgoyal.net>
-Date: Thu, 25 Jul 2019 08:52:35 +0530
-Subject: [PATCH 14/71] Various fixes for the last py3 merge
-
----
- src/calibre/ebooks/oeb/transforms/metadata.py | 3 +--
- src/calibre/ebooks/pml/__init__.py | 2 +-
- src/calibre/ebooks/pml/pmlml.py | 4 +--
- src/calibre/ebooks/rb/writer.py | 2 +-
- src/calibre/ebooks/readability/debug.py | 8 +++---
- src/calibre/ebooks/rtf/preprocess.py | 4 +--
- src/calibre/ebooks/rtf/rtfml.py | 14 +++++-----
- src/calibre/gui2/cover_flow.py | 6 ++---
- src/calibre/gui2/custom_column_widgets.py | 4 +--
- src/calibre/gui2/linux_file_dialogs.py | 27 ++++++++++---------
- src/calibre/gui2/shortcuts.py | 4 +--
- 11 files changed, 40 insertions(+), 38 deletions(-)
-
-diff --git a/src/calibre/ebooks/oeb/transforms/metadata.py b/src/calibre/ebooks/oeb/transforms/metadata.py
-index ed829dc92d..71baff4935 100644
---- a/src/calibre/ebooks/oeb/transforms/metadata.py
-+++ b/src/calibre/ebooks/oeb/transforms/metadata.py
-@@ -9,8 +9,7 @@ __docformat__ = 'restructuredtext en'
- import os, re
- from calibre.utils.date import isoformat, now
- from calibre import guess_type
--from polyglot.builtins import iteritems, filter
--filter
-+from polyglot.builtins import iteritems
-
-
- def meta_info_to_oeb_metadata(mi, m, log, override_input_metadata=False):
-diff --git a/src/calibre/ebooks/pml/__init__.py b/src/calibre/ebooks/pml/__init__.py
-index 2260f2fe7c..d3d90c74e4 100644
---- a/src/calibre/ebooks/pml/__init__.py
-+++ b/src/calibre/ebooks/pml/__init__.py
-@@ -60,7 +60,7 @@ def unipmlcode(char):
- val = ord(char.encode('cp1252'))
- if val in A_CHARS:
- return '\\a%i' % val
-- except:
-+ except Exception:
- pass
- val = ord(char)
- if val in U_CHARS:
-diff --git a/src/calibre/ebooks/pml/pmlml.py b/src/calibre/ebooks/pml/pmlml.py
-index 7685036733..06af92cd83 100644
---- a/src/calibre/ebooks/pml/pmlml.py
-+++ b/src/calibre/ebooks/pml/pmlml.py
-@@ -190,7 +190,7 @@ class PMLMLizer(object):
- text = text.replace(r'\Q="%s"' % unused, '')
-
- # Remove \Cn tags that are within \x and \Xn tags
-- text = re.sub(unicode_type(r'(?msu)(?P<t>\\(x|X[0-4]))(?P<a>.*?)(?P<c>\\C[0-4]\s*=\s*"[^"]*")(?P<b>.*?)(?P=t)'), r'\g<t>\g<a>\g<b>\g<t>', text)
-+ text = re.sub(r'(?msu)(?P<t>\\(x|X[0-4]))(?P<a>.*?)(?P<c>\\C[0-4]\s*=\s*"[^"]*")(?P<b>.*?)(?P=t)', r'\g<t>\g<a>\g<b>\g<t>', text)
-
- # Replace bad characters.
- text = text.replace('\xc2', '')
-@@ -326,7 +326,7 @@ class PMLMLizer(object):
- for s in STYLES:
- style_tag = s[1].get(style[s[0]], None)
- if style_tag and style_tag not in tag_stack+tags:
-- text.append('r\%s' % style_tag)
-+ text.append(r'\%s' % style_tag)
- tags.append(style_tag)
-
- # margin left
-diff --git a/src/calibre/ebooks/rb/writer.py b/src/calibre/ebooks/rb/writer.py
-index af671295bc..c6353d146e 100644
---- a/src/calibre/ebooks/rb/writer.py
-+++ b/src/calibre/ebooks/rb/writer.py
-@@ -122,7 +122,7 @@ class RBWriter(object):
- for item in manifest:
- if item.media_type in OEB_RASTER_IMAGES:
- try:
-- data = ''
-+ data = b''
-
- im = Image.open(io.BytesIO(item.data)).convert('L')
- data = io.BytesIO()
-diff --git a/src/calibre/ebooks/readability/debug.py b/src/calibre/ebooks/readability/debug.py
-index c8acf510cf..d8557b606e 100644
---- a/src/calibre/ebooks/readability/debug.py
-+++ b/src/calibre/ebooks/readability/debug.py
-@@ -1,10 +1,10 @@
- from __future__ import absolute_import, division, print_function, unicode_literals
-
-+
- def save_to_file(text, filename):
-- f = open(filename, 'wt')
-- f.write('<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />')
-- f.write(text.encode('utf-8'))
-- f.close()
-+ with open(filename, 'wb') as f:
-+ f.write(b'<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />')
-+ f.write(text.encode('utf-8'))
-
-
- uids = {}
-diff --git a/src/calibre/ebooks/rtf/preprocess.py b/src/calibre/ebooks/rtf/preprocess.py
-index 04d3c1124b..a9d48d144e 100644
---- a/src/calibre/ebooks/rtf/preprocess.py
-+++ b/src/calibre/ebooks/rtf/preprocess.py
-@@ -21,7 +21,7 @@ class tokenDelimitatorStart():
- pass
-
- def toRTF(self):
-- return b'{'
-+ return '{'
-
- def __repr__(self):
- return '{'
-@@ -33,7 +33,7 @@ class tokenDelimitatorEnd():
- pass
-
- def toRTF(self):
-- return b'}'
-+ return '}'
-
- def __repr__(self):
- return '}'
-diff --git a/src/calibre/ebooks/rtf/rtfml.py b/src/calibre/ebooks/rtf/rtfml.py
-index 5944c4f228..11736ffaef 100644
---- a/src/calibre/ebooks/rtf/rtfml.py
-+++ b/src/calibre/ebooks/rtf/rtfml.py
-@@ -86,10 +86,10 @@ def txt2rtf(text):
- if val == 160:
- buf.write(r'\~')
- elif val <= 127:
-- buf.write(unicode_type(x))
-+ buf.write(x)
- else:
- # python2 and ur'\u' does not work
-- c = unicode_type('\\u{0:d}?'.format(val))
-+ c = '\\u{0:d}?'.format(val)
- buf.write(c)
- return buf.getvalue()
-
-@@ -175,8 +175,8 @@ class RTFMLizer(object):
- src = item.href
- try:
- data, width, height = self.image_to_hexstring(item.data)
-- except:
-- self.log.warn('Image %s is corrupted, ignoring'%item.href)
-+ except Exception:
-+ self.log.exception('Image %s is corrupted, ignoring'%item.href)
- repl = '\n\n'
- else:
- repl = '\n\n{\\*\\shppict{\\pict\\jpegblip\\picw%i\\pich%i \n%s\n}}\n\n' % (width, height, data)
-@@ -188,8 +188,8 @@ class RTFMLizer(object):
- width, height = identify(data)[1:]
-
- raw_hex = ''
-- for char in data:
-- raw_hex += hex(ord(char)).replace('0x', '').rjust(2, '0')
-+ for char in bytearray(data):
-+ raw_hex += hex(char).replace('0x', '').rjust(2, '0')
-
- # Images must be broken up so that they are no longer than 129 chars
- # per line
-@@ -202,7 +202,7 @@ class RTFMLizer(object):
- col += 1
- hex_string += char
-
-- return (hex_string, width, height)
-+ return hex_string, width, height
-
- def clean_text(self, text):
- # Remove excessive newlines
-diff --git a/src/calibre/gui2/cover_flow.py b/src/calibre/gui2/cover_flow.py
-index 17aafcbaf5..ec708602e2 100644
---- a/src/calibre/gui2/cover_flow.py
-+++ b/src/calibre/gui2/cover_flow.py
-@@ -245,7 +245,7 @@ class CBDialog(QDialog):
- geom = gprefs.get('cover_browser_dialog_geometry', bytearray(''))
- geom = QByteArray(geom)
- if not self.restoreGeometry(geom):
-- h, w = available_height()-60, available_width()//1.5
-+ h, w = available_height()-60, int(available_width()/1.5)
- self.resize(w, h)
- self.action_fs_toggle = a = QAction(self)
- self.addAction(a)
-@@ -459,7 +459,7 @@ def test():
- app = QApplication([])
- w = QMainWindow()
- cf = CoverFlow()
-- cf.resize(available_width()//1.5, available_height()-60)
-+ cf.resize(int(available_width()/1.5), available_height()-60)
- w.resize(cf.size()+QSize(30, 20))
- model = DummyImageList()
- cf.setImages(model)
-@@ -480,7 +480,7 @@ if __name__ == '__main__':
- app = QApplication([])
- w = QMainWindow()
- cf = CoverFlow()
-- cf.resize(available_width()//1.5, available_height()-60)
-+ cf.resize(int(available_width()/1.5), available_height()-60)
- w.resize(cf.size()+QSize(30, 20))
- path = sys.argv[1]
- model = FileSystemImages(sys.argv[1])
-diff --git a/src/calibre/gui2/custom_column_widgets.py b/src/calibre/gui2/custom_column_widgets.py
-index 2a4f87c49b..2d60470268 100644
---- a/src/calibre/gui2/custom_column_widgets.py
-+++ b/src/calibre/gui2/custom_column_widgets.py
-@@ -731,7 +731,7 @@ def populate_metadata_page(layout, db, book_id, bulk=False, two_column=False, pa
- count = len(cols)
- layout_rows_for_comments = 9
- if two_column:
-- turnover_point = ((count-comments_not_in_tweak+1) + comments_in_tweak*(layout_rows_for_comments-1))/2
-+ turnover_point = ((count-comments_not_in_tweak+1) + int(comments_in_tweak*(layout_rows_for_comments-1))/2)
- else:
- # Avoid problems with multi-line widgets
- turnover_point = count + 1000
-@@ -758,7 +758,7 @@ def populate_metadata_page(layout, db, book_id, bulk=False, two_column=False, pa
- column = 0
- row = max_row
- base_row = row
-- turnover_point = row + (comments_not_in_tweak * layout_rows_for_comments)/2
-+ turnover_point = row + int((comments_not_in_tweak * layout_rows_for_comments)/2)
- comments_not_in_tweak = 0
-
- l = QGridLayout()
-diff --git a/src/calibre/gui2/linux_file_dialogs.py b/src/calibre/gui2/linux_file_dialogs.py
-index 78d76b90af..875c87e428 100644
---- a/src/calibre/gui2/linux_file_dialogs.py
-+++ b/src/calibre/gui2/linux_file_dialogs.py
-@@ -11,12 +11,12 @@ import sys
- import time
- from threading import Thread
-
--from polyglot.builtins import reraise, unicode_type, string_or_bytes
- from PyQt5.Qt import QEventLoop
-
- from calibre import force_unicode
--from calibre.constants import filesystem_encoding, preferred_encoding, DEBUG
-+from calibre.constants import DEBUG, filesystem_encoding, ispy3, preferred_encoding
- from calibre.utils.config import dynamic
-+from polyglot.builtins import getenv, reraise, string_or_bytes, unicode_type
-
-
- def dialog_name(name, title):
-@@ -29,20 +29,20 @@ def get_winid(widget=None):
-
-
- def detect_desktop_environment():
-- de = os.environ.get('XDG_CURRENT_DESKTOP')
-+ de = getenv('XDG_CURRENT_DESKTOP')
- if de:
-- return de.decode('utf-8', 'replace').upper().split(':', 1)[0]
-- if os.environ.get('KDE_FULL_SESSION') == 'true':
-+ return de.upper().split(':', 1)[0]
-+ if getenv('KDE_FULL_SESSION') == 'true':
- return 'KDE'
-- if os.environ.get('GNOME_DESKTOP_SESSION_ID'):
-+ if getenv('GNOME_DESKTOP_SESSION_ID'):
- return 'GNOME'
-- ds = os.environ.get('DESKTOP_SESSION')
-- if ds and ds.upper() in {b'GNOME', b'XFCE'}:
-- return ds.decode('utf-8').upper()
-+ ds = getenv('DESKTOP_SESSION')
-+ if ds and ds.upper() in {'GNOME', 'XFCE'}:
-+ return ds.upper()
-
-
- def is_executable_present(name):
-- PATH = os.environ.get('PATH') or b''
-+ PATH = getenv('PATH') or ''
- for path in PATH.split(os.pathsep):
- if os.access(os.path.join(path, name), os.X_OK):
- return True
-@@ -107,7 +107,7 @@ def decode_output(raw):
-
- def run(cmd):
- from calibre.gui2 import sanitize_env_vars
-- ecmd = list(map(encode_arg, cmd))
-+ ecmd = cmd if ispy3 else list(map(encode_arg, cmd))
- if DEBUG:
- try:
- print(ecmd)
-@@ -125,7 +125,10 @@ def run(cmd):
- def kdialog_supports_desktopfile():
- ans = getattr(kdialog_supports_desktopfile, 'ans', None)
- if ans is None:
-- raw = subprocess.check_output(['kdialog', '--help'])
-+ try:
-+ raw = subprocess.check_output(['kdialog', '--help'])
-+ except EnvironmentError:
-+ raw = b'--desktopfile'
- ans = kdialog_supports_desktopfile.ans = b'--desktopfile' in raw
- return ans
-
-diff --git a/src/calibre/gui2/shortcuts.py b/src/calibre/gui2/shortcuts.py
-index 3e78dd7fd0..4f64be603f 100644
---- a/src/calibre/gui2/shortcuts.py
-+++ b/src/calibre/gui2/shortcuts.py
-@@ -112,7 +112,7 @@ class Customize(QFrame):
- Qt.Key_Shift, Qt.Key_Control, Qt.Key_Alt, Qt.Key_Meta,
- Qt.Key_AltGr, Qt.Key_CapsLock, Qt.Key_NumLock, Qt.Key_ScrollLock):
- return QWidget.keyPressEvent(self, ev)
-- sequence = QKeySequence(code|(int(ev.modifiers())&~Qt.KeypadModifier))
-+ sequence = QKeySequence(code|(int(ev.modifiers()) & (~Qt.KeypadModifier)))
- setattr(self, 'shortcut%d'%which, sequence)
- self.clear_button(which)
- self.capture = 0
-@@ -237,7 +237,7 @@ class Shortcuts(QAbstractListModel):
- def get_match(self, event_or_sequence, ignore=tuple()):
- q = event_or_sequence
- if isinstance(q, QKeyEvent):
-- q = QKeySequence(q.key()|(int(q.modifiers())&~Qt.KeypadModifier))
-+ q = QKeySequence(q.key()|(int(q.modifiers()) & (~Qt.KeypadModifier)))
- for key in self.order:
- if key not in ignore:
- for seq in self.get_sequences(key):
diff --git a/0015-Dont-use-auto-in-master-since-it-is-still-built-with.patch b/0015-Dont-use-auto-in-master-since-it-is-still-built-with.patch
deleted file mode 100644
index c674bdc..0000000
--- a/0015-Dont-use-auto-in-master-since-it-is-still-built-with.patch
+++ /dev/null
@@ -1,23 +0,0 @@
-From 15b9daf4805439a109d1d7170b3443615086e117 Mon Sep 17 00:00:00 2001
-From: Kovid Goyal <kovid(a)kovidgoyal.net>
-Date: Thu, 25 Jul 2019 09:10:15 +0530
-Subject: [PATCH 15/71] Dont use auto in master since it is still built with
- ancient compilers on linux
-
----
- src/calibre/utils/podofo/utils.cpp | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/calibre/utils/podofo/utils.cpp b/src/calibre/utils/podofo/utils.cpp
-index a8755278cb..8e1a982f1c 100644
---- a/src/calibre/utils/podofo/utils.cpp
-+++ b/src/calibre/utils/podofo/utils.cpp
-@@ -15,7 +15,7 @@ pdf::podofo_set_exception(const PdfError &err) {
- if (msg == NULL) msg = err.what();
- std::stringstream stream;
- stream << msg << "\n";
-- for (auto &info : err.GetCallstack()) {
-+ for (const PdfErrorInfo &info : err.GetCallstack()) {
- stream << "File: " << info.GetFilename() << "Line: " << info.GetLine() << " " << info.GetInformation() << "\n";
- }
- PyErr_SetString(Error, stream.str().c_str());
diff --git a/0016-More-ancient-linux-compiler-support.patch b/0016-More-ancient-linux-compiler-support.patch
deleted file mode 100644
index 9164c13..0000000
--- a/0016-More-ancient-linux-compiler-support.patch
+++ /dev/null
@@ -1,24 +0,0 @@
-From 30572f1f9c6d38b01d5ad567614fac708f74e3bd Mon Sep 17 00:00:00 2001
-From: Kovid Goyal <kovid(a)kovidgoyal.net>
-Date: Thu, 25 Jul 2019 09:39:37 +0530
-Subject: [PATCH 16/71] More ancient linux compiler support
-
----
- src/calibre/utils/podofo/utils.cpp | 4 +++-
- 1 file changed, 3 insertions(+), 1 deletion(-)
-
-diff --git a/src/calibre/utils/podofo/utils.cpp b/src/calibre/utils/podofo/utils.cpp
-index 8e1a982f1c..da1272014e 100644
---- a/src/calibre/utils/podofo/utils.cpp
-+++ b/src/calibre/utils/podofo/utils.cpp
-@@ -15,7 +15,9 @@ pdf::podofo_set_exception(const PdfError &err) {
- if (msg == NULL) msg = err.what();
- std::stringstream stream;
- stream << msg << "\n";
-- for (const PdfErrorInfo &info : err.GetCallstack()) {
-+ const TDequeErrorInfo &s = err.GetCallstack();
-+ for (TDequeErrorInfo::const_iterator it = s.begin(); it != s.end(); it++) {
-+ const PdfErrorInfo &info = (*it);
- stream << "File: " << info.GetFilename() << "Line: " << info.GetLine() << " " << info.GetInformation() << "\n";
- }
- PyErr_SetString(Error, stream.str().c_str());
diff --git a/0017-py3-compat-for-gaierror-retry.patch b/0017-py3-compat-for-gaierror-retry.patch
deleted file mode 100644
index e01e9a3..0000000
--- a/0017-py3-compat-for-gaierror-retry.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-From f6d8da61034610d9e1fc42ca1f7e34c1c83f3386 Mon Sep 17 00:00:00 2001
-From: Kovid Goyal <kovid(a)kovidgoyal.net>
-Date: Thu, 25 Jul 2019 10:46:06 +0530
-Subject: [PATCH 17/71] py3 compat for gaierror retry
-
----
- src/calibre/web/fetch/simple.py | 10 +++++++---
- 1 file changed, 7 insertions(+), 3 deletions(-)
-
-diff --git a/src/calibre/web/fetch/simple.py b/src/calibre/web/fetch/simple.py
-index b5b098d3c3..e0b4fefc5c 100644
---- a/src/calibre/web/fetch/simple.py
-+++ b/src/calibre/web/fetch/simple.py
-@@ -277,9 +277,13 @@ class RecursiveFetcher(object):
- except URLError as err:
- if hasattr(err, 'code') and err.code in responses:
- raise FetchError(responses[err.code])
-- if getattr(err, 'reason', [0])[0] == 104 or \
-- getattr(getattr(err, 'args', [None])[0], 'errno', None) in (-2,
-- -3): # Connection reset by peer or Name or service not known
-+ is_temp = False
-+ reason = getattr(err, 'reason', None)
-+ if isinstance(reason, socket.gaierror):
-+ # see man gai_strerror() for details
-+ if getattr(reason, 'errno', None) in (socket.EAI_AGAIN, socket.EAI_NONAME):
-+ is_temp = True
-+ if is_temp: # Connection reset by peer or Name or service not known
- self.log.debug('Temporary error, retrying in 1 second')
- time.sleep(1)
- with closing(open_func(url, timeout=self.timeout)) as f:
diff --git a/0018-Update-Chicago-Tribune.patch b/0018-Update-Chicago-Tribune.patch
deleted file mode 100644
index f22a11a..0000000
--- a/0018-Update-Chicago-Tribune.patch
+++ /dev/null
@@ -1,86 +0,0 @@
-From 123341e4fa66cd2991ea3e2d0dcf5cb50c1b31c8 Mon Sep 17 00:00:00 2001
-From: Kovid Goyal <kovid(a)kovidgoyal.net>
-Date: Thu, 25 Jul 2019 13:53:52 +0530
-Subject: [PATCH 18/71] Update Chicago Tribune
-
----
- recipes/chicago_tribune.recipe | 53 +++++++++++++++++++++++++---------
- 1 file changed, 40 insertions(+), 13 deletions(-)
-
-diff --git a/recipes/chicago_tribune.recipe b/recipes/chicago_tribune.recipe
-index 72a651d96e..80d187f9dc 100644
---- a/recipes/chicago_tribune.recipe
-+++ b/recipes/chicago_tribune.recipe
-@@ -12,6 +12,13 @@ def classes(classes):
- 'class': lambda x: x and frozenset(x.split()).intersection(q)})
-
-
-+def absolutize(x):
-+ x = x.lstrip('/')
-+ if not x.startswith('https:'):
-+ x = 'https://www.chicagotribune.com/' + x
-+ return x
-+
-+
- class ChicagoTribune(BasicNewsRecipe):
-
- title = 'Chicago Tribune'
-@@ -26,25 +33,45 @@ class ChicagoTribune(BasicNewsRecipe):
-
- keep_only_tags = [
- dict(name='h1'),
-- dict(attrs={'data-content-size': 'leadart'}),
-- dict(itemprop='articleBody'),
-+ classes('byline-container pb-f-utilities-lead-art pb-f-article-gallery'),
-+ dict(attrs={'data-type': 'text'}),
- ]
-
- remove_tags = [
- classes('trb_ar_cont trb_ar_main_ad trb_em_r_cc'),
- ]
-
-- feeds = [
-- ('Breaking news', 'https://www.chicagotribune.com/news/local/breaking/rss2.0.xml'),
-- ('Trending news', 'https://www.chicagotribune.com/news/trending/rss2.0.xml'),
-- ('Opinion', 'https://www.chicagotribune.com/news/opinion/rss2.0.xml'),
-- ('Business news', 'https://www.chicagotribune.com/business/rss2.0.xml'),
-- ('Sports', 'https://www.chicagotribune.com/sports/rss2.0.xml'),
-- ('Arts and Entertainment',
-- 'https://www.chicagotribune.com/entertainment/rss2.0.xml'),
-- ('Life & Style',
-- 'https://www.chicagotribune.com/lifestyles/rss2.0.xml'),
-- ]
-+ def ct_articles(self, slug):
-+ url = absolutize(slug)
-+ soup = self.index_to_soup(url)
-+ for div in soup.findAll(**classes('pb-f-homepage-story pb-f-homepage-story-feed')):
-+ h = div.find(('h1', 'h2', 'h3', 'h4', 'h5', 'h6'))
-+ a = h.find('a', href=True)
-+ title = self.tag_to_string(a)
-+ url = absolutize(a['href'])
-+ self.log('\t', title, url)
-+ desc = ''
-+ p = div.find(**classes('preview-text'))
-+ if p:
-+ desc = self.tag_to_string(p)
-+ self.log('\t\t', desc)
-+ yield {'title': title, 'description': desc, 'url': url}
-+
-+ def parse_index(self):
-+ feed = []
-+ for slug, title in (
-+ ('news/breaking', 'Breaking News'),
-+ ('sports', 'Sports'),
-+ ('business', 'Business'),
-+ ('entertainment', 'Entertainment'),
-+ ('dining', 'Chicago Dinining'),
-+ ('columns', 'Tribune Voices'),
-+ ):
-+ self.log('Found section:', title)
-+ articles = list(self.ct_articles(slug))
-+ if articles:
-+ feed.append((title, articles))
-+ return feed
-
- def preprocess_html(self, soup):
- for img in soup.findAll('img', attrs={'data-baseurl': True}):
diff --git a/0019-.patch b/0019-.patch
deleted file mode 100644
index 9b93b83..0000000
--- a/0019-.patch
+++ /dev/null
@@ -1,22 +0,0 @@
-From b9c3fbbd704846f96e0c7cf3b37434cccf6e35cf Mon Sep 17 00:00:00 2001
-From: Kovid Goyal <kovid(a)kovidgoyal.net>
-Date: Thu, 25 Jul 2019 13:56:15 +0530
-Subject: [PATCH 19/71] ...
-
----
- recipes/chicago_tribune.recipe | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/recipes/chicago_tribune.recipe b/recipes/chicago_tribune.recipe
-index 80d187f9dc..1fc2f9ca36 100644
---- a/recipes/chicago_tribune.recipe
-+++ b/recipes/chicago_tribune.recipe
-@@ -64,7 +64,7 @@ def parse_index(self):
- ('sports', 'Sports'),
- ('business', 'Business'),
- ('entertainment', 'Entertainment'),
-- ('dining', 'Chicago Dinining'),
-+ ('dining', 'Chicago Dining'),
- ('columns', 'Tribune Voices'),
- ):
- self.log('Found section:', title)
diff --git a/0020-use-context-managers-to-open-files.patch b/0020-use-context-managers-to-open-files.patch
deleted file mode 100644
index b77ac94..0000000
--- a/0020-use-context-managers-to-open-files.patch
+++ /dev/null
@@ -1,716 +0,0 @@
-From d4f0dc87e18f543520adcdcb6c15552136964e5b Mon Sep 17 00:00:00 2001
-From: Eli Schwartz <eschwartz(a)archlinux.org>
-Date: Thu, 25 Jul 2019 00:30:42 -0400
-Subject: [PATCH 20/71] use context managers to open files
-
----
- bypy/macos/__main__.py | 6 +++--
- bypy/macos/sign.py | 3 ++-
- bypy/windows/__main__.py | 3 ++-
- bypy/windows/wix.py | 6 +++--
- setup/__init__.py | 3 ++-
- setup/build.py | 3 ++-
- setup/linux-installer.py | 3 ++-
- setup/port.py | 3 ++-
- setup/translations.py | 3 ++-
- src/calibre/db/tests/filesystem.py | 11 ++++-----
- .../ebooks/conversion/plugins/djvu_input.py | 15 ++++++------
- .../ebooks/conversion/plugins/html_input.py | 3 ++-
- .../ebooks/conversion/plugins/htmlz_input.py | 16 ++++++-------
- src/calibre/ebooks/conversion/plumber.py | 3 ++-
- src/calibre/ebooks/djvu/djvubzzdec.py | 3 ++-
- src/calibre/ebooks/lrf/html/convert_from.py | 3 ++-
- src/calibre/ebooks/lrf/meta.py | 3 ++-
- src/calibre/ebooks/metadata/topaz.py | 9 ++++----
- src/calibre/ebooks/oeb/iterator/bookmarks.py | 8 +++----
- src/calibre/ebooks/oeb/transforms/metadata.py | 3 ++-
- src/calibre/ebooks/rtf/preprocess.py | 10 ++++----
- src/calibre/ebooks/snb/snbfile.py | 23 +++++++++----------
- src/calibre/gui2/actions/edit_metadata.py | 3 ++-
- src/calibre/gui2/convert/metadata.py | 6 ++---
- src/calibre/gui2/dialogs/custom_recipes.py | 3 ++-
- src/calibre/gui2/main.py | 3 ++-
- src/calibre/gui2/metadata/basic_widgets.py | 6 ++---
- src/calibre/gui2/metadata/single.py | 3 ++-
- src/calibre/gui2/tweak_book/diff/main.py | 3 ++-
- .../gui2/tweak_book/editor/syntax/html.py | 3 ++-
- src/calibre/utils/fonts/utils.py | 7 +++---
- src/calibre/utils/fonts/win_fonts.py | 7 +++---
- src/calibre/utils/ip_routing.py | 3 ++-
- src/calibre/web/feeds/news.py | 3 ++-
- src/calibre/web/feeds/recipes/collection.py | 3 ++-
- update-on-ox | 6 +++--
- 36 files changed, 113 insertions(+), 89 deletions(-)
-
-diff --git a/bypy/macos/__main__.py b/bypy/macos/__main__.py
-index ef0e1ceacc..d8b012cc12 100644
---- a/bypy/macos/__main__.py
-+++ b/bypy/macos/__main__.py
-@@ -72,7 +72,8 @@ gcc = os.environ.get('CC', 'clang')
- def compile_launchers(contents_dir, xprograms, pyver):
- base = dirname(abspath(__file__))
- lib = compile_launcher_lib(contents_dir, gcc, base)
-- src = open(join(base, 'launcher.c'), 'rb').read().decode('utf-8')
-+ with open(join(base, 'launcher.c'), 'rb') as f:
-+ src = f.read().decode('utf-8')
- env, env_vals = [], []
- for key, val in ENV.items():
- env.append('"%s"' % key)
-@@ -450,7 +451,8 @@ class Freeze(object):
- src = os.path.join(PREFIX, 'etc', 'fonts')
- shutil.copytree(src, dst, symlinks=False)
- fc = os.path.join(dst, 'fonts.conf')
-- raw = open(fc, 'rb').read().decode('utf-8')
-+ with open(fc, 'rb') as f:
-+ raw = f.read().decode('utf-8')
- raw = raw.replace('<dir>/usr/share/fonts</dir>', '''\
- <dir>/Library/Fonts</dir>
- <dir>/System/Library/Fonts</dir>
-diff --git a/bypy/macos/sign.py b/bypy/macos/sign.py
-index 09b3c685a3..e545c2d5bc 100644
---- a/bypy/macos/sign.py
-+++ b/bypy/macos/sign.py
-@@ -42,7 +42,8 @@ def make_certificate_useable():
- # Unlock keychain
- run('security unlock-keychain -p "{}" "{}"'.format(KEYCHAIN_PASSWORD, KEYCHAIN))
- # Add certificate to keychain
-- cert_pass = open(CODESIGN_CREDS).read().strip()
-+ with open(CODESIGN_CREDS, 'r') as f:
-+ cert_pass = f.read().strip()
- # Add certificate to keychain and allow codesign to use it
- # Use -A instead of -T /usr/bin/codesign to allow all apps to use it
- run('security import {} -k "{}" -P "{}" -T "/usr/bin/codesign"'.format(
-diff --git a/bypy/windows/__main__.py b/bypy/windows/__main__.py
-index c014ae026e..7efce10977 100644
---- a/bypy/windows/__main__.py
-+++ b/bypy/windows/__main__.py
-@@ -305,7 +305,8 @@ def embed_resources(env, module, desc=None, extra_data=None, product_description
- icon_map = {'calibre': 'library', 'ebook-viewer': 'viewer', 'ebook-edit': 'ebook-edit',
- 'lrfviewer': 'viewer', 'calibre-portable': 'library'}
- file_type = 'DLL' if module.endswith('.dll') else 'APP'
-- template = open(env.rc_template, 'rb').read().decode('utf-8')
-+ with open(env.rc_template, 'rb') as f:
-+ template = f.read().decode('utf-8')
- bname = b(module)
- internal_name = os.path.splitext(bname)[0]
- icon = icon_map.get(internal_name, 'command-prompt')
-diff --git a/bypy/windows/wix.py b/bypy/windows/wix.py
-index dd5925469e..cc8d8adc5d 100644
---- a/bypy/windows/wix.py
-+++ b/bypy/windows/wix.py
-@@ -29,7 +29,8 @@ def create_installer(env):
- shutil.rmtree(env.installer_dir)
- os.makedirs(env.installer_dir)
-
-- template = open(j(d(__file__), 'wix-template.xml'), 'rb').read().decode('utf-8')
-+ with open(j(d(__file__), 'wix-template.xml'), 'rb') as f:
-+ template = f.read().decode('utf-8')
-
- components, smap = get_components_from_files(env)
- wxs = template.format(
-@@ -50,7 +51,8 @@ def create_installer(env):
- editor_icon=j(env.src_root, 'icons', 'ebook-edit.ico'),
- web_icon=j(env.src_root, 'icons', 'web.ico'),
- )
-- template = open(j(d(__file__), 'en-us.xml'), 'rb').read().decode('utf-8')
-+ with open(j(d(__file__), 'en-us.xml'), 'rb') as f:
-+ template = f.read().decode('utf-8')
- enus = template.format(app=calibre_constants['appname'])
-
- enusf = j(env.installer_dir, 'en-us.wxl')
-diff --git a/setup/__init__.py b/setup/__init__.py
-index fdbe266bd5..69450c8948 100644
---- a/setup/__init__.py
-+++ b/setup/__init__.py
-@@ -95,7 +95,8 @@ def require_clean_git():
- def initialize_constants():
- global __version__, __appname__, modules, functions, basenames, scripts
-
-- src = open(os.path.join(SRC, 'calibre/constants.py'), 'rb').read().decode('utf-8')
-+ with open(os.path.join(SRC, 'calibre/constants.py'), 'rb') as f:
-+ src = f.read().decode('utf-8')
- nv = re.search(r'numeric_version\s+=\s+\((\d+), (\d+), (\d+)\)', src)
- __version__ = '%s.%s.%s'%(nv.group(1), nv.group(2), nv.group(3))
- __appname__ = re.search(r'__appname__\s+=\s+(u{0,1})[\'"]([^\'"]+)[\'"]',
-diff --git a/setup/build.py b/setup/build.py
-index f5a521192c..cae5455c07 100644
---- a/setup/build.py
-+++ b/setup/build.py
-@@ -454,7 +454,8 @@ class Build(Command):
- self.info(' '.join(cmd))
- self.check_call(cmd)
- self.info('')
-- raw = open(sbf, 'rb').read().decode('utf-8')
-+ with open(sbf, 'rb') as f:
-+ raw = f.read().decode('utf-8')
-
- def read(x):
- ans = re.search(r'^%s\s*=\s*(.+)$' % x, raw, flags=re.M).group(1).strip()
-diff --git a/setup/linux-installer.py b/setup/linux-installer.py
-index cd2252bf49..568845e876 100644
---- a/setup/linux-installer.py
-+++ b/setup/linux-installer.py
-@@ -748,7 +748,8 @@ except NameError:
-
- def update_intaller_wrapper():
- # To run: python3 -c "import runpy; runpy.run_path('setup/linux-installer.py', run_name='update_wrapper')"
-- src = open(__file__, 'rb').read().decode('utf-8')
-+ with open(__file__, 'rb') as f:
-+ src = f.read().decode('utf-8')
- wrapper = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'linux-installer.sh')
- with open(wrapper, 'r+b') as f:
- raw = f.read().decode('utf-8')
-diff --git a/setup/port.py b/setup/port.py
-index 401764fcb7..6267e4515d 100644
---- a/setup/port.py
-+++ b/setup/port.py
-@@ -211,7 +211,8 @@ class IteratorsCheck(Base):
-
- def get_errors_in_file(self, f):
- pat = re.compile(r'\b(range|map|filter|zip)\(')
-- text = open(f, 'rb').read().decode('utf-8')
-+ with open(f, 'rb') as f:
-+ text = f.read().decode('utf-8')
- matches = tuple(pat.finditer(text))
- if not matches:
- return []
-diff --git a/setup/translations.py b/setup/translations.py
-index e591cc0462..e630ffefab 100644
---- a/setup/translations.py
-+++ b/setup/translations.py
-@@ -665,7 +665,8 @@ class GetTranslations(Translations): # {{{
- return errs
-
- def check_for_control_chars(f):
-- raw = open(f, 'rb').read().decode('utf-8')
-+ with open(f, 'rb') as f:
-+ raw = f.read().decode('utf-8')
- pat = re.compile(type(u'')(r'[\0-\x08\x0b\x0c\x0e-\x1f\x7f\x80-\x9f]'))
- errs = []
- for i, line in enumerate(raw.splitlines()):
-diff --git a/src/calibre/db/tests/filesystem.py b/src/calibre/db/tests/filesystem.py
-index eec8ca0c4a..2525572565 100644
---- a/src/calibre/db/tests/filesystem.py
-+++ b/src/calibre/db/tests/filesystem.py
-@@ -74,12 +74,11 @@ class FilesystemTest(BaseTest):
- cl = self.cloned_library
- cache = self.init_cache(cl)
- fpath = cache.format_abspath(1, 'FMT1')
-- f = open(fpath, 'rb')
-- with self.assertRaises(IOError):
-- cache.set_field('title', {1:'Moved'})
-- with self.assertRaises(IOError):
-- cache.remove_books({1})
-- f.close()
-+ with open(fpath, 'rb') as f:
-+ with self.assertRaises(IOError):
-+ cache.set_field('title', {1:'Moved'})
-+ with self.assertRaises(IOError):
-+ cache.remove_books({1})
- self.assertNotEqual(cache.field_for('title', 1), 'Moved', 'Title was changed despite file lock')
-
- # Test on folder with hardlinks
-diff --git a/src/calibre/ebooks/conversion/plugins/djvu_input.py b/src/calibre/ebooks/conversion/plugins/djvu_input.py
-index dde7ed92b4..8f25551af8 100644
---- a/src/calibre/ebooks/conversion/plugins/djvu_input.py
-+++ b/src/calibre/ebooks/conversion/plugins/djvu_input.py
-@@ -38,22 +38,21 @@ class DJVUInput(InputFormatPlugin):
- setattr(options, opt.option.name, opt.recommended_value)
- options.input_encoding = 'utf-8'
- base = getcwd()
-- fname = os.path.join(base, 'index.html')
-+ htmlfile = os.path.join(base, 'index.html')
- c = 0
-- while os.path.exists(fname):
-+ while os.path.exists(htmlfile):
- c += 1
-- fname = os.path.join(base, 'index%d.html'%c)
-- htmlfile = open(fname, 'wb')
-- with htmlfile:
-- htmlfile.write(html.encode('utf-8'))
-+ htmlfile = os.path.join(base, 'index%d.html'%c)
-+ with open(htmlfile, 'wb') as f:
-+ f.write(html.encode('utf-8'))
- odi = options.debug_pipeline
- options.debug_pipeline = None
- # Generate oeb from html conversion.
-- with open(htmlfile.name, 'rb') as f:
-+ with open(htmlfile, 'rb') as f:
- oeb = html_input.convert(f, options, 'html', log,
- {})
- options.debug_pipeline = odi
-- os.remove(htmlfile.name)
-+ os.remove(htmlfile)
-
- # Set metadata from file.
- from calibre.customize.ui import get_file_type_metadata
-diff --git a/src/calibre/ebooks/conversion/plugins/html_input.py b/src/calibre/ebooks/conversion/plugins/html_input.py
-index 89e4353a13..b74cfba882 100644
---- a/src/calibre/ebooks/conversion/plugins/html_input.py
-+++ b/src/calibre/ebooks/conversion/plugins/html_input.py
-@@ -307,7 +307,8 @@ class HTMLInput(InputFormatPlugin):
- if link is None or not os.access(link, os.R_OK) or os.path.isdir(link):
- return (None, None)
- try:
-- raw = open(link, 'rb').read().decode('utf-8', 'replace')
-+ with open(link, 'rb') as f:
-+ raw = f.read().decode('utf-8', 'replace')
- raw = self.oeb.css_preprocessor(raw, add_namespace=False)
- except:
- self.log.exception('Failed to read CSS file: %r'%link)
-diff --git a/src/calibre/ebooks/conversion/plugins/htmlz_input.py b/src/calibre/ebooks/conversion/plugins/htmlz_input.py
-index ca8180ae9e..baed0c1ac7 100644
---- a/src/calibre/ebooks/conversion/plugins/htmlz_input.py
-+++ b/src/calibre/ebooks/conversion/plugins/htmlz_input.py
-@@ -88,21 +88,21 @@ class HTMLZInput(InputFormatPlugin):
- setattr(options, opt.option.name, opt.recommended_value)
- options.input_encoding = 'utf-8'
- base = getcwd()
-- fname = os.path.join(base, u'index.html')
-+ htmlfile = os.path.join(base, u'index.html')
- c = 0
-- while os.path.exists(fname):
-+ while os.path.exists(htmlfile):
- c += 1
-- fname = u'index%d.html'%c
-- htmlfile = open(fname, 'wb')
-- with htmlfile:
-- htmlfile.write(html.encode('utf-8'))
-+ htmlfile = u'index%d.html'%c
-+ with open(htmlfile, 'wb') as f:
-+ f.write(html.encode('utf-8'))
- odi = options.debug_pipeline
- options.debug_pipeline = None
- # Generate oeb from html conversion.
-- oeb = html_input.convert(open(htmlfile.name, 'rb'), options, 'html', log,
-+ with open(htmlfile, 'rb') as f:
-+ oeb = html_input.convert(f, options, 'html', log,
- {})
- options.debug_pipeline = odi
-- os.remove(htmlfile.name)
-+ os.remove(htmlfile)
-
- # Set metadata from file.
- from calibre.customize.ui import get_file_type_metadata
-diff --git a/src/calibre/ebooks/conversion/plumber.py b/src/calibre/ebooks/conversion/plumber.py
-index 977a1ee95e..a9720505a9 100644
---- a/src/calibre/ebooks/conversion/plumber.py
-+++ b/src/calibre/ebooks/conversion/plumber.py
-@@ -1191,7 +1191,8 @@ OptionRecommendation(name='search_replace',
- self.log('Structured HTML written to:', out_dir)
-
- if self.opts.extra_css and os.path.exists(self.opts.extra_css):
-- self.opts.extra_css = open(self.opts.extra_css, 'rb').read()
-+ with open(self.opts.extra_css, 'rb') as f:
-+ self.opts.extra_css = f.read()
-
- oibl = self.opts.insert_blank_line
- orps = self.opts.remove_paragraph_spacing
-diff --git a/src/calibre/ebooks/djvu/djvubzzdec.py b/src/calibre/ebooks/djvu/djvubzzdec.py
-index 6d60d9f03a..262409d565 100644
---- a/src/calibre/ebooks/djvu/djvubzzdec.py
-+++ b/src/calibre/ebooks/djvu/djvubzzdec.py
-@@ -734,7 +734,8 @@ class BZZDecoder():
- def main():
- import sys
- from calibre.constants import plugins
-- raw = open(sys.argv[1], "rb").read()
-+ with open(sys.argv[1], "rb") as f:
-+ raw = f.read()
- d = plugins['bzzdec'][0]
- print(d.decompress(raw))
-
-diff --git a/src/calibre/ebooks/lrf/html/convert_from.py b/src/calibre/ebooks/lrf/html/convert_from.py
-index 59472c1451..781d205e05 100644
---- a/src/calibre/ebooks/lrf/html/convert_from.py
-+++ b/src/calibre/ebooks/lrf/html/convert_from.py
-@@ -266,7 +266,8 @@ class HTMLConverter(object):
-
- if self._override_css is not None:
- if os.access(self._override_css, os.R_OK):
-- src = open(self._override_css, 'rb').read()
-+ with open(self._override_css, 'rb') as f:
-+ src = f.read()
- else:
- src = self._override_css
- if isinstance(src, bytes):
-diff --git a/src/calibre/ebooks/lrf/meta.py b/src/calibre/ebooks/lrf/meta.py
-index d48f05a1f9..f76ba91d01 100644
---- a/src/calibre/ebooks/lrf/meta.py
-+++ b/src/calibre/ebooks/lrf/meta.py
-@@ -712,7 +712,8 @@ def main(args=sys.argv):
- lrf.book_id = options.book_id
- if options.comment:
- path = os.path.expanduser(os.path.expandvars(options.comment))
-- lrf.free_text = open(path, 'rb').read().decode('utf-8', 'replace')
-+ with open(path, 'rb') as f:
-+ lrf.free_text = f.read().decode('utf-8', 'replace')
- if options.get_thumbnail:
- t = lrf.thumbnail
- td = "None"
-diff --git a/src/calibre/ebooks/metadata/topaz.py b/src/calibre/ebooks/metadata/topaz.py
-index 880ee237de..9ea6def0d5 100644
---- a/src/calibre/ebooks/metadata/topaz.py
-+++ b/src/calibre/ebooks/metadata/topaz.py
-@@ -391,14 +391,13 @@ if __name__ == '__main__':
- print(get_metadata(open(sys.argv[1], 'rb')))
- else:
- # Test set_metadata()
-- data = open(sys.argv[1], 'rb')
- stream = io.BytesIO()
-- stream.write(data.read())
-+ with open(sys.argv[1], 'rb') as data:
-+ stream.write(data.read())
- mi = MetaInformation(title="Updated Title", authors=['Author, Random'])
- set_metadata(stream, mi)
-
- # Write the result
- tokens = sys.argv[1].rpartition('.')
-- updated_data = open(tokens[0]+'-updated' + '.' + tokens[2],'wb')
-- updated_data.write(stream.getvalue())
-- updated_data.close()
-+ with open(tokens[0]+'-updated' + '.' + tokens[2],'wb') as updated_data:
-+ updated_data.write(stream.getvalue())
-diff --git a/src/calibre/ebooks/oeb/iterator/bookmarks.py b/src/calibre/ebooks/oeb/iterator/bookmarks.py
-index eb7ab618d5..bc16fbaf81 100644
---- a/src/calibre/ebooks/oeb/iterator/bookmarks.py
-+++ b/src/calibre/ebooks/oeb/iterator/bookmarks.py
-@@ -87,12 +87,12 @@ class BookmarksMixin(object):
- if not no_copy_to_file and self.copy_bookmarks_to_file and os.path.splitext(
- self.pathtoebook)[1].lower() == '.epub' and os.access(self.pathtoebook, os.W_OK):
- try:
-- zf = open(self.pathtoebook, 'r+b')
-+ with open(self.pathtoebook, 'r+b') as zf:
-+ safe_replace(zf, 'META-INF/calibre_bookmarks.txt',
-+ BytesIO(dat.encode('utf-8')),
-+ add_missing=True)
- except IOError:
- return
-- safe_replace(zf, 'META-INF/calibre_bookmarks.txt',
-- BytesIO(dat.encode('utf-8')),
-- add_missing=True)
-
- def add_bookmark(self, bm, no_copy_to_file=False):
- self.bookmarks = [x for x in self.bookmarks if x['title'] !=
-diff --git a/src/calibre/ebooks/oeb/transforms/metadata.py b/src/calibre/ebooks/oeb/transforms/metadata.py
-index 71baff4935..ab7500a050 100644
---- a/src/calibre/ebooks/oeb/transforms/metadata.py
-+++ b/src/calibre/ebooks/oeb/transforms/metadata.py
-@@ -126,7 +126,8 @@ class MergeMetadata(object):
- def set_cover(self, mi, prefer_metadata_cover):
- cdata, ext = '', 'jpg'
- if mi.cover and os.access(mi.cover, os.R_OK):
-- cdata = open(mi.cover, 'rb').read()
-+ with open(mi.cover, 'rb') as f:
-+ cdata = f.read()
- ext = mi.cover.rpartition('.')[-1].lower().strip()
- elif mi.cover_data and mi.cover_data[-1]:
- cdata = mi.cover_data[1]
-diff --git a/src/calibre/ebooks/rtf/preprocess.py b/src/calibre/ebooks/rtf/preprocess.py
-index a9d48d144e..c65b853f8e 100644
---- a/src/calibre/ebooks/rtf/preprocess.py
-+++ b/src/calibre/ebooks/rtf/preprocess.py
-@@ -368,15 +368,13 @@ if __name__ == "__main__":
- if len(sys.argv) < 2:
- print("Usage %prog rtfFileToConvert")
- sys.exit()
-- f = open(sys.argv[1], 'rb')
-- data = f.read()
-- f.close()
-+ with open(sys.argv[1], 'rb') as f:
-+ data = f.read()
-
- tokenizer = RtfTokenizer(data)
- parsedTokens = RtfTokenParser(tokenizer.tokens)
-
- data = parsedTokens.toRTF()
-
-- f = open(sys.argv[1], 'w')
-- f.write(data)
-- f.close()
-+ with open(sys.argv[1], 'w') as f:
-+ f.write(data)
-diff --git a/src/calibre/ebooks/snb/snbfile.py b/src/calibre/ebooks/snb/snbfile.py
-index 9931a33826..8cfe99b680 100644
---- a/src/calibre/ebooks/snb/snbfile.py
-+++ b/src/calibre/ebooks/snb/snbfile.py
-@@ -39,10 +39,9 @@ class SNBFile:
- def Open(self, inputFile):
- self.fileName = inputFile
-
-- snbFile = open(self.fileName, "rb")
-- snbFile.seek(0)
-- self.Parse(snbFile)
-- snbFile.close()
-+ with open(self.fileName, "rb") as f:
-+ f.seek(0)
-+ self.Parse(f)
-
- def Parse(self, snbFile, metaOnly=False):
- # Read header
-@@ -158,7 +157,8 @@ class SNBFile:
- f = FileStream()
- f.attr = 0x41000000
- f.fileSize = os.path.getsize(os.path.join(tdir,fileName))
-- f.fileBody = open(os.path.join(tdir,fileName), 'rb').read()
-+ with open(os.path.join(tdir,fileName), 'rb') as data:
-+ f.fileBody = data.read()
- f.fileName = fileName.replace(os.sep, '/')
- if isinstance(f.fileName, unicode_type):
- f.fileName = f.fileName.encode("ascii", "ignore")
-@@ -168,7 +168,8 @@ class SNBFile:
- f = FileStream()
- f.attr = 0x01000000
- f.fileSize = os.path.getsize(os.path.join(tdir,fileName))
-- f.fileBody = open(os.path.join(tdir,fileName), 'rb').read()
-+ with open(os.path.join(tdir,fileName), 'rb') as data:
-+ f.fileBody = data.read()
- f.fileName = fileName.replace(os.sep, '/')
- if isinstance(f.fileName, unicode_type):
- f.fileName = f.fileName.encode("ascii", "ignore")
-@@ -186,9 +187,8 @@ class SNBFile:
- fname = os.path.basename(f.fileName)
- root, ext = os.path.splitext(fname)
- if ext in ['.jpeg', '.jpg', '.gif', '.svg', '.png']:
-- file = open(os.path.join(path, fname), 'wb')
-- file.write(f.fileBody)
-- file.close()
-+ with open(os.path.join(path, fname), 'wb') as outfile:
-+ outfile.write(f.fileBody)
- fileNames.append((fname, guess_type('a'+ext)[0]))
- return fileNames
-
-@@ -297,9 +297,8 @@ class SNBFile:
- print("File Size: ", f.fileSize)
- print("Block Index: ", f.blockIndex)
- print("Content Offset: ", f.contentOffset)
-- tempFile = open("/tmp/" + f.fileName, 'wb')
-- tempFile.write(f.fileBody)
-- tempFile.close()
-+ with open("/tmp/" + f.fileName, 'wb') as tempFile:
-+ tempFile.write(f.fileBody)
-
-
- def usage():
-diff --git a/src/calibre/gui2/actions/edit_metadata.py b/src/calibre/gui2/actions/edit_metadata.py
-index 85d917c21f..ac0f572f1d 100644
---- a/src/calibre/gui2/actions/edit_metadata.py
-+++ b/src/calibre/gui2/actions/edit_metadata.py
-@@ -937,7 +937,8 @@ class EditMetadataAction(InterfaceAction):
- if old != prefs['read_file_metadata']:
- prefs['read_file_metadata'] = old
- if mi.cover and os.access(mi.cover, os.R_OK):
-- cdata = open(mi.cover).read()
-+ with open(mi.cover) as f:
-+ cdata = f.read()
- elif mi.cover_data[1] is not None:
- cdata = mi.cover_data[1]
- if cdata is None:
-diff --git a/src/calibre/gui2/convert/metadata.py b/src/calibre/gui2/convert/metadata.py
-index 2ca3d72a01..ec87f479a4 100644
---- a/src/calibre/gui2/convert/metadata.py
-+++ b/src/calibre/gui2/convert/metadata.py
-@@ -198,10 +198,10 @@ class MetadataWidget(Widget, Ui_Form):
- _('You do not have permission to read the file: ') + _file)
- d.exec_()
- return
-- cf, cover = None, None
-+ cover = None
- try:
-- cf = open(_file, "rb")
-- cover = cf.read()
-+ with open(_file, "rb") as f:
-+ cover = f.read()
- except IOError as e:
- d = error_dialog(self.parent(), _('Error reading file'),
- _("<p>There was an error reading from file: <br /><b>") + _file + "</b></p><br />"+str(e))
-diff --git a/src/calibre/gui2/dialogs/custom_recipes.py b/src/calibre/gui2/dialogs/custom_recipes.py
-index dc74fea242..03b2782bf3 100644
---- a/src/calibre/gui2/dialogs/custom_recipes.py
-+++ b/src/calibre/gui2/dialogs/custom_recipes.py
-@@ -606,7 +606,8 @@ class CustomRecipes(Dialog):
- if files:
- path = files[0]
- try:
-- src = open(path, 'rb').read().decode('utf-8')
-+ with open(path, 'rb') as f:
-+ src = f.read().decode('utf-8')
- except Exception as err:
- error_dialog(self, _('Invalid input'),
- _('<p>Could not create recipe. Error:<br>%s')%err, show=True)
-diff --git a/src/calibre/gui2/main.py b/src/calibre/gui2/main.py
-index 3d13ab7b34..bf82c6b8ab 100644
---- a/src/calibre/gui2/main.py
-+++ b/src/calibre/gui2/main.py
-@@ -577,7 +577,8 @@ if __name__ == '__main__':
- from PyQt5.Qt import QErrorMessage
- logfile = os.path.join(os.path.expanduser('~'), 'calibre.log')
- if os.path.exists(logfile):
-- log = open(logfile).read().decode('utf-8', 'ignore')
-+ with open(logfile) as f:
-+ log = f.read().decode('utf-8', 'ignore')
- d = QErrorMessage()
- d.showMessage(('<b>Error:</b>%s<br><b>Traceback:</b><br>'
- '%s<b>Log:</b><br>%s')%(unicode_type(err),
-diff --git a/src/calibre/gui2/metadata/basic_widgets.py b/src/calibre/gui2/metadata/basic_widgets.py
-index 49d2ad2161..3e8aa4526d 100644
---- a/src/calibre/gui2/metadata/basic_widgets.py
-+++ b/src/calibre/gui2/metadata/basic_widgets.py
-@@ -1168,10 +1168,10 @@ class Cover(ImageView): # {{{
- _('You do not have permission to read the file: ') + _file)
- d.exec_()
- return
-- cf, cover = None, None
-+ cover = None
- try:
-- cf = open(_file, "rb")
-- cover = cf.read()
-+ with open(_file, "rb") as f:
-+ cover = f.read()
- except IOError as e:
- d = error_dialog(
- self, _('Error reading file'),
-diff --git a/src/calibre/gui2/metadata/single.py b/src/calibre/gui2/metadata/single.py
-index d5083f8daf..4cdd2aa2a1 100644
---- a/src/calibre/gui2/metadata/single.py
-+++ b/src/calibre/gui2/metadata/single.py
-@@ -461,7 +461,8 @@ class MetadataSingleDialogBase(QDialog):
- return
- cdata = None
- if mi.cover and os.access(mi.cover, os.R_OK):
-- cdata = open(mi.cover).read()
-+ with open(mi.cover) as f:
-+ cdata = f.read()
- elif mi.cover_data[1] is not None:
- cdata = mi.cover_data[1]
- if cdata is None:
-diff --git a/src/calibre/gui2/tweak_book/diff/main.py b/src/calibre/gui2/tweak_book/diff/main.py
-index 295ab8ea10..a884aa40ae 100644
---- a/src/calibre/gui2/tweak_book/diff/main.py
-+++ b/src/calibre/gui2/tweak_book/diff/main.py
-@@ -139,7 +139,8 @@ def string_diff(left, right, left_syntax=None, right_syntax=None, left_name='lef
- def file_diff(left, right):
- (raw1, syntax1), (raw2, syntax2) = map(get_decoded_raw, (left, right))
- if type(raw1) is not type(raw2):
-- raw1, raw2 = open(left, 'rb').read(), open(right, 'rb').read()
-+ with open(left, 'rb') as f1, open(right, 'rb') as f2:
-+ raw1, raw2 = f1.read(), f2.read()
- cache = Cache()
- cache.set_left(left, raw1), cache.set_right(right, raw2)
- changed_names = {} if raw1 == raw2 else {left:right}
-diff --git a/src/calibre/gui2/tweak_book/editor/syntax/html.py b/src/calibre/gui2/tweak_book/editor/syntax/html.py
-index b475da0fc8..a5f1200764 100644
---- a/src/calibre/gui2/tweak_book/editor/syntax/html.py
-+++ b/src/calibre/gui2/tweak_book/editor/syntax/html.py
-@@ -606,7 +606,8 @@ def profile():
- from calibre.gui2.tweak_book.editor.themes import get_theme
- app = Application([])
- set_book_locale('en')
-- raw = open(sys.argv[-2], 'rb').read().decode('utf-8')
-+ with open(sys.argv[-2], 'rb') as f:
-+ raw = f.read().decode('utf-8')
- doc = QTextDocument()
- doc.setPlainText(raw)
- h = Highlighter()
-diff --git a/src/calibre/utils/fonts/utils.py b/src/calibre/utils/fonts/utils.py
-index 767fcfc65d..fd5987614d 100644
---- a/src/calibre/utils/fonts/utils.py
-+++ b/src/calibre/utils/fonts/utils.py
-@@ -487,9 +487,10 @@ def test():
-
- def main():
- import sys, os
-- for f in sys.argv[1:]:
-- print(os.path.basename(f))
-- raw = open(f, 'rb').read()
-+ for arg in sys.argv[1:]:
-+ print(os.path.basename(arg))
-+ with open(arg, 'rb') as f:
-+ raw = f.read()
- print(get_font_names(raw))
- characs = get_font_characteristics(raw)
- print(characs)
-diff --git a/src/calibre/utils/fonts/win_fonts.py b/src/calibre/utils/fonts/win_fonts.py
-index 6e8641737d..1d85e56c3e 100644
---- a/src/calibre/utils/fonts/win_fonts.py
-+++ b/src/calibre/utils/fonts/win_fonts.py
-@@ -147,9 +147,10 @@ def load_winfonts():
-
-
- def test_ttf_reading():
-- for f in sys.argv[1:]:
-- raw = open(f).read()
-- print(os.path.basename(f))
-+ for arg in sys.argv[1:]:
-+ with open(arg) as f:
-+ raw = f.read()
-+ print(os.path.basename(arg))
- get_font_characteristics(raw)
- print()
-
-diff --git a/src/calibre/utils/ip_routing.py b/src/calibre/utils/ip_routing.py
-index c7e43b1d97..7f1ef8674e 100644
---- a/src/calibre/utils/ip_routing.py
-+++ b/src/calibre/utils/ip_routing.py
-@@ -70,7 +70,8 @@ else:
-
- def get_default_route_src_address():
- # Use /proc/net/ipv6_route for IPv6 addresses
-- raw = open('/proc/net/route', 'rb').read().decode('utf-8')
-+ with open('/proc/net/route', 'rb') as f:
-+ raw = f.read().decode('utf-8')
- for line in raw.splitlines():
- parts = line.split()
- if len(parts) > 1 and parts[1] == '00000000':
-diff --git a/src/calibre/web/feeds/news.py b/src/calibre/web/feeds/news.py
-index 678a9af3ad..854c62ebec 100644
---- a/src/calibre/web/feeds/news.py
-+++ b/src/calibre/web/feeds/news.py
-@@ -1299,7 +1299,8 @@ class BasicNewsRecipe(Recipe):
- cdata = cu.read()
- cu = getattr(cu, 'name', 'cover.jpg')
- elif os.access(cu, os.R_OK):
-- cdata = open(cu, 'rb').read()
-+ with open(cu, 'rb') as f:
-+ cdata = f.read()
- else:
- self.report_progress(1, _('Downloading cover from %s')%cu)
- with closing(self.browser.open(cu)) as r:
-diff --git a/src/calibre/web/feeds/recipes/collection.py b/src/calibre/web/feeds/recipes/collection.py
-index 7be5d1dac1..c6dbef2065 100644
---- a/src/calibre/web/feeds/recipes/collection.py
-+++ b/src/calibre/web/feeds/recipes/collection.py
-@@ -114,7 +114,8 @@ def get_custom_recipe_collection(*args):
- title, fname = x
- recipe = os.path.join(bdir, fname)
- try:
-- recipe = open(recipe, 'rb').read().decode('utf-8')
-+ with open(recipe, 'rb') as f:
-+ recipe = f.read().decode('utf-8')
- recipe_class = compile_recipe(recipe)
- if recipe_class is not None:
- rmap['custom:%s'%id_] = recipe_class
-diff --git a/update-on-ox b/update-on-ox
-index a8cff33ef6..c7816d53a1 100755
---- a/update-on-ox
-+++ b/update-on-ox
-@@ -35,7 +35,8 @@ HOST = 'ox'
-
- base = os.path.dirname(os.path.abspath(__file__))
- if True:
-- raw = open(os.path.join(base, 'src/calibre/constants.py')).read()
-+ with open(os.path.join(base, 'src/calibre/constants.py')) as f:
-+ raw = f.read()
- v = re.search(r'numeric_version\s*=\s*(\(.+?\))', raw).group(1)
- v = '.'.join(map(str, ast.literal_eval(v)))
- dmg = f'calibre-{v}.dmg'
-@@ -47,7 +48,8 @@ def run(what):
- raise SystemExit(ret.returncode)
-
-
--script = open(__file__, 'rb').read().decode('utf-8')
-+with open(__file__, 'rb') as f:
-+ script = f.read().decode('utf-8')
- script = script[:script.find('# EOF_REMOTE')].replace('if False:', 'if True:', 1)
- os.chdir(os.path.expanduser('~/work/build-calibre'))
- with tempfile.NamedTemporaryFile(prefix='install-dmg-', suffix='.py') as f:
diff --git a/0021-py3-read-in-raw-data-files-as-binary.patch b/0021-py3-read-in-raw-data-files-as-binary.patch
deleted file mode 100644
index f52f46b..0000000
--- a/0021-py3-read-in-raw-data-files-as-binary.patch
+++ /dev/null
@@ -1,53 +0,0 @@
-From be7d52261269d0e40c2b23d4baa6d4d178a7acb7 Mon Sep 17 00:00:00 2001
-From: Eli Schwartz <eschwartz(a)archlinux.org>
-Date: Thu, 25 Jul 2019 00:35:57 -0400
-Subject: [PATCH 21/71] py3: read in raw data files as binary
-
-Not specifying the mode means it will be open in text mode which can
-munge linebreaks on some platforms and yields the wrong type of string
-on py3.
----
- src/calibre/gui2/actions/edit_metadata.py | 2 +-
- src/calibre/gui2/metadata/single.py | 2 +-
- src/calibre/utils/fonts/win_fonts.py | 2 +-
- 3 files changed, 3 insertions(+), 3 deletions(-)
-
-diff --git a/src/calibre/gui2/actions/edit_metadata.py b/src/calibre/gui2/actions/edit_metadata.py
-index ac0f572f1d..8a11468de7 100644
---- a/src/calibre/gui2/actions/edit_metadata.py
-+++ b/src/calibre/gui2/actions/edit_metadata.py
-@@ -937,7 +937,7 @@ class EditMetadataAction(InterfaceAction):
- if old != prefs['read_file_metadata']:
- prefs['read_file_metadata'] = old
- if mi.cover and os.access(mi.cover, os.R_OK):
-- with open(mi.cover) as f:
-+ with open(mi.cover, 'rb') as f:
- cdata = f.read()
- elif mi.cover_data[1] is not None:
- cdata = mi.cover_data[1]
-diff --git a/src/calibre/gui2/metadata/single.py b/src/calibre/gui2/metadata/single.py
-index 4cdd2aa2a1..b251c137ef 100644
---- a/src/calibre/gui2/metadata/single.py
-+++ b/src/calibre/gui2/metadata/single.py
-@@ -461,7 +461,7 @@ class MetadataSingleDialogBase(QDialog):
- return
- cdata = None
- if mi.cover and os.access(mi.cover, os.R_OK):
-- with open(mi.cover) as f:
-+ with open(mi.cover, 'rb') as f:
- cdata = f.read()
- elif mi.cover_data[1] is not None:
- cdata = mi.cover_data[1]
-diff --git a/src/calibre/utils/fonts/win_fonts.py b/src/calibre/utils/fonts/win_fonts.py
-index 1d85e56c3e..d7280f2051 100644
---- a/src/calibre/utils/fonts/win_fonts.py
-+++ b/src/calibre/utils/fonts/win_fonts.py
-@@ -148,7 +148,7 @@ def load_winfonts():
-
- def test_ttf_reading():
- for arg in sys.argv[1:]:
-- with open(arg) as f:
-+ with open(arg, 'rb') as f:
- raw = f.read()
- print(os.path.basename(arg))
- get_font_characteristics(raw)
diff --git a/0022-Add-missing-language-field-to-ComicBookInfo-metadata.patch b/0022-Add-missing-language-field-to-ComicBookInfo-metadata.patch
deleted file mode 100644
index d0927f7..0000000
--- a/0022-Add-missing-language-field-to-ComicBookInfo-metadata.patch
+++ /dev/null
@@ -1,23 +0,0 @@
-From e388d73d133fb5584585a35f1ab0c27db9d91bac Mon Sep 17 00:00:00 2001
-From: Philippe Babin <philippe.babin(a)gmail.com>
-Date: Sat, 27 Jul 2019 17:45:33 -0400
-Subject: [PATCH 22/71] Add missing 'language' field to ComicBookInfo metadata
- for .CBR files.
-
----
- src/calibre/ebooks/metadata/archive.py | 2 ++
- 1 file changed, 2 insertions(+)
-
-diff --git a/src/calibre/ebooks/metadata/archive.py b/src/calibre/ebooks/metadata/archive.py
-index 434edf9728..12f12626cd 100644
---- a/src/calibre/ebooks/metadata/archive.py
-+++ b/src/calibre/ebooks/metadata/archive.py
-@@ -114,6 +114,8 @@ def get_comic_book_info(d, mi, series_index='volume'):
- mi.series_index = float(si)
- except Exception:
- mi.series_index = 1
-+ if d.get('language', '') != '':
-+ mi.languages = [d['language'].strip()]
- if d.get('rating', -1) > -1:
- mi.rating = d['rating']
- for x in ('title', 'publisher'):
diff --git a/0023-.patch b/0023-.patch
deleted file mode 100644
index 2665bdc..0000000
--- a/0023-.patch
+++ /dev/null
@@ -1,22 +0,0 @@
-From d8b3c132907cd43f323356f8148191e72210f0fc Mon Sep 17 00:00:00 2001
-From: Kovid Goyal <kovid(a)kovidgoyal.net>
-Date: Mon, 29 Jul 2019 10:48:54 +0530
-Subject: [PATCH 23/71] ...
-
----
- src/calibre/gui2/tweak_book/editor/text.py | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/calibre/gui2/tweak_book/editor/text.py b/src/calibre/gui2/tweak_book/editor/text.py
-index 9f3208dd1a..86c8739399 100644
---- a/src/calibre/gui2/tweak_book/editor/text.py
-+++ b/src/calibre/gui2/tweak_book/editor/text.py
-@@ -844,7 +844,7 @@ class TextEdit(PlainTextEdit):
- height = 1600
- c = self.textCursor()
- template, alt = 'url(%s)', ''
-- left = min(c.position(), c.anchor)
-+ left = min(c.position(), c.anchor())
- if self.syntax == 'html':
- left, right = self.get_range_inside_tag()
- c.setPosition(left)
diff --git a/0024-if-the-cover-img-resolution-is-too-low-kindle-wouldn.patch b/0024-if-the-cover-img-resolution-is-too-low-kindle-wouldn.patch
deleted file mode 100644
index 8e36e5f..0000000
--- a/0024-if-the-cover-img-resolution-is-too-low-kindle-wouldn.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-From 5aa4bcc3c653e0fef58c26a9245875ab28025427 Mon Sep 17 00:00:00 2001
-From: jn8029 <warren.y.cheng(a)gmail.com>
-Date: Mon, 29 Jul 2019 15:11:03 +0800
-Subject: [PATCH 24/71] if the cover img resolution is too low, kindle wouldn't
- show it. replacing the original src img size with a bigger size solves this
- issue this is discuessed in
- https://www.mobileread.com/forums/showthread.php?t=293114
-
----
- recipes/new_yorker.recipe | 8 ++++++++
- 1 file changed, 8 insertions(+)
-
-diff --git a/recipes/new_yorker.recipe b/recipes/new_yorker.recipe
-index d19cd42c86..7197dd1c61 100644
---- a/recipes/new_yorker.recipe
-+++ b/recipes/new_yorker.recipe
-@@ -77,6 +77,14 @@ def parse_index(self):
- cover_img = cover_img.find('img')
- if cover_img is not None:
- self.cover_url = cover_img.get('src')
-+ try:
-+ # the src original resolution w_280 was too low, replace w_280 with w_560
-+ cover_url_width_index = self.cover_url.find("w_")
-+ old_width = self.cover_url[cover_url_width_index:cover_url_width_index+5]
-+ self.cover_url = self.cover_url.replace(old_width, "w_560")
-+ except Exception as e:
-+ self.log('Failed enlarging cover img, using the original one')
-+
- self.log('Found cover:', self.cover_url)
- stories = defaultdict(list)
- last_section = 'Unknown'
diff --git a/0025-enlarge-cover-img-resolution-by-change-the-url.patch b/0025-enlarge-cover-img-resolution-by-change-the-url.patch
deleted file mode 100644
index b2752e1..0000000
--- a/0025-enlarge-cover-img-resolution-by-change-the-url.patch
+++ /dev/null
@@ -1,29 +0,0 @@
-From f8ccd37e90c59562d9a514dee15d75220650d8a5 Mon Sep 17 00:00:00 2001
-From: jn8029 <warren.y.cheng(a)gmail.com>
-Date: Tue, 30 Jul 2019 16:55:29 +0800
-Subject: [PATCH 25/71] enlarge cover img resolution by change the url
-
-kindle app on larger tablets does not show cover
-if the cover img resolution is too low.
----
- recipes/nature.recipe | 7 +++++++
- 1 file changed, 7 insertions(+)
-
-diff --git a/recipes/nature.recipe b/recipes/nature.recipe
-index d8af3dd1a6..e7f50bdd70 100644
---- a/recipes/nature.recipe
-+++ b/recipes/nature.recipe
-@@ -50,6 +50,13 @@ def parse_index(self):
- self.cover_url = 'https:' + soup.find(
- 'img', attrs={'data-test': check_words('issue-cover-image')}
- )['src']
-+ try:
-+ self.cover_url = self.cover_url.replace("w200","w500") # enlarge cover size resolution
-+ except:
-+ """
-+ failed, img src might have changed, use default width 200
-+ """
-+ pass
- section_tags = soup.find(
- 'div', {'data-container-type': check_words('issue-section-list')}
- )
diff --git a/0026-Add-funding-sources-for-github-sponsor-button.patch b/0026-Add-funding-sources-for-github-sponsor-button.patch
deleted file mode 100644
index c652599..0000000
--- a/0026-Add-funding-sources-for-github-sponsor-button.patch
+++ /dev/null
@@ -1,19 +0,0 @@
-From 89e3cff8969a9e49a20e129983eca7c6191ce451 Mon Sep 17 00:00:00 2001
-From: Kovid Goyal <kovid(a)kovidgoyal.net>
-Date: Tue, 30 Jul 2019 15:08:15 +0530
-Subject: [PATCH 26/71] Add funding sources for github sponsor button
-
----
- .github/FUNDING.yml | 3 +++
- 1 file changed, 3 insertions(+)
- create mode 100644 .github/FUNDING.yml
-
-diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml
-new file mode 100644
-index 0000000000..bec14934dc
---- /dev/null
-+++ b/.github/FUNDING.yml
-@@ -0,0 +1,3 @@
-+patreon: kovidgoyal
-+liberapay: kovidgoyal
-+custom: https://calibre-ebook.com/donate
diff --git a/0027-Misc-CHM-Input-fixes.patch b/0027-Misc-CHM-Input-fixes.patch
deleted file mode 100644
index 81c0152..0000000
--- a/0027-Misc-CHM-Input-fixes.patch
+++ /dev/null
@@ -1,89 +0,0 @@
-From 9f1d7955f06cbbe626bd517b4f71bb97dbc6dc23 Mon Sep 17 00:00:00 2001
-From: Kovid Goyal <kovid(a)kovidgoyal.net>
-Date: Tue, 30 Jul 2019 19:31:06 +0530
-Subject: [PATCH 27/71] Misc CHM Input fixes
-
-Mostly to deal with chm files with broken filename encoding
----
- src/calibre/ebooks/chm/reader.py | 13 +++++++++++--
- src/calibre/ebooks/conversion/plugins/chm_input.py | 6 +++---
- src/calibre/utils/chm/chm.py | 2 +-
- 3 files changed, 15 insertions(+), 6 deletions(-)
-
-diff --git a/src/calibre/ebooks/chm/reader.py b/src/calibre/ebooks/chm/reader.py
-index 983526232a..b5ce8981be 100644
---- a/src/calibre/ebooks/chm/reader.py
-+++ b/src/calibre/ebooks/chm/reader.py
-@@ -97,9 +97,14 @@ class CHMReader(CHMFile):
- return toc
-
- def ResolveObject(self, path):
-+ opath = path
- if not isinstance(path, bytes):
- path = path.encode(self.chm_encoding)
-- return CHMFile.ResolveObject(self, path)
-+ ans = CHMFile.ResolveObject(self, path)
-+ if ans[0] != chmlib.CHM_RESOLVE_SUCCESS and not isinstance(opath, bytes):
-+ path = opath.encode('utf-8')
-+ ans = CHMFile.ResolveObject(self, path)
-+ return ans
-
- def GetFile(self, path):
- # have to have abs paths for ResolveObject, but Contents() deliberately
-@@ -280,7 +285,11 @@ class CHMReader(CHMFile):
- paths = []
-
- def get_paths(chm, ui, ctx):
-- path = as_unicode(ui.path, self.chm_encoding)
-+ try:
-+ path = as_unicode(ui.path, self.chm_encoding)
-+ except UnicodeDecodeError:
-+ path = as_unicode(ui.path, 'utf-8')
-+
- # skip directories
- # note this path refers to the internal CHM structure
- if path[-1] != '/':
-diff --git a/src/calibre/ebooks/conversion/plugins/chm_input.py b/src/calibre/ebooks/conversion/plugins/chm_input.py
-index b28e31e74e..44f5de5f88 100644
---- a/src/calibre/ebooks/conversion/plugins/chm_input.py
-+++ b/src/calibre/ebooks/conversion/plugins/chm_input.py
-@@ -10,7 +10,7 @@ import os
- from calibre.customize.conversion import InputFormatPlugin
- from calibre.ptempfile import TemporaryDirectory
- from calibre.constants import filesystem_encoding
--from polyglot.builtins import unicode_type
-+from polyglot.builtins import unicode_type, as_bytes
-
-
- class CHMInput(InputFormatPlugin):
-@@ -170,7 +170,7 @@ class CHMInput(InputFormatPlugin):
- pretty_print=True)
- f.write(raw)
- else:
-- f.write(hhcdata)
-+ f.write(as_bytes(hhcdata))
- return htmlpath, toc
-
- def _read_file(self, name):
-@@ -180,7 +180,7 @@ class CHMInput(InputFormatPlugin):
-
- def add_node(self, node, toc, ancestor_map):
- from calibre.ebooks.chm.reader import match_string
-- if match_string(node.attrib['type'], 'text/sitemap'):
-+ if match_string(node.attrib.get('type', ''), 'text/sitemap'):
- p = node.xpath('ancestor::ul[1]/ancestor::li[1]/object[1]')
- parent = p[0] if p else None
- toc = ancestor_map.get(parent, toc)
-diff --git a/src/calibre/utils/chm/chm.py b/src/calibre/utils/chm/chm.py
-index 7be92acaa5..d313ab5620 100644
---- a/src/calibre/utils/chm/chm.py
-+++ b/src/calibre/utils/chm/chm.py
-@@ -506,7 +506,7 @@ class CHMFile:
- if not self.topics:
- self.topics = self.GetString(text, toc_index)
- if not self.topics.startswith(b"/"):
-- self.topics = "b/" + self.topics
-+ self.topics = b"/" + self.topics
-
- if not self.index:
- self.index = self.GetString(text, idx_index)
diff --git a/0028-Preserve-tag-order-when-reading-metadata-from-MOBI-f.patch b/0028-Preserve-tag-order-when-reading-metadata-from-MOBI-f.patch
deleted file mode 100644
index d0d4012..0000000
--- a/0028-Preserve-tag-order-when-reading-metadata-from-MOBI-f.patch
+++ /dev/null
@@ -1,38 +0,0 @@
-From fe566d72116b147db680dcf8fba4a9c3a3e428dd Mon Sep 17 00:00:00 2001
-From: Kovid Goyal <kovid(a)kovidgoyal.net>
-Date: Wed, 31 Jul 2019 15:44:40 +0530
-Subject: [PATCH 28/71] Preserve tag order when reading metadata from MOBI
- files
-
----
- src/calibre/ebooks/mobi/reader/headers.py | 10 +++++++++-
- 1 file changed, 9 insertions(+), 1 deletion(-)
-
-diff --git a/src/calibre/ebooks/mobi/reader/headers.py b/src/calibre/ebooks/mobi/reader/headers.py
-index 4cd4cbd095..c164b95b52 100644
---- a/src/calibre/ebooks/mobi/reader/headers.py
-+++ b/src/calibre/ebooks/mobi/reader/headers.py
-@@ -21,6 +21,14 @@ from polyglot.builtins import unicode_type
- NULL_INDEX = 0xffffffff
-
-
-+def uniq(vals):
-+ ''' Remove all duplicates from vals, while preserving order. '''
-+ vals = vals or ()
-+ seen = set()
-+ seen_add = seen.add
-+ return list(x for x in vals if x not in seen and not seen_add(x))
-+
-+
- class EXTHHeader(object): # {{{
-
- def __init__(self, raw, codec, title):
-@@ -135,7 +143,7 @@ class EXTHHeader(object): # {{{
- if not self.mi.tags:
- self.mi.tags = []
- self.mi.tags.extend([x.strip() for x in clean_xml_chars(self.decode(content)).split(';')])
-- self.mi.tags = list(set(self.mi.tags))
-+ self.mi.tags = uniq(self.mi.tags)
- elif idx == 106:
- try:
- self.mi.pubdate = parse_date(self.decode(content), as_utc=False)
diff --git a/0029-Remove-metadata-from-conversion_options-API-docs-sin.patch b/0029-Remove-metadata-from-conversion_options-API-docs-sin.patch
deleted file mode 100644
index ca6f787..0000000
--- a/0029-Remove-metadata-from-conversion_options-API-docs-sin.patch
+++ /dev/null
@@ -1,23 +0,0 @@
-From 65673e4130d755b45e7aa4433e3cdc057f915c84 Mon Sep 17 00:00:00 2001
-From: Kovid Goyal <kovid(a)kovidgoyal.net>
-Date: Wed, 31 Jul 2019 15:49:22 +0530
-Subject: [PATCH 29/71] Remove metadata from conversion_options API docs since
- using it to set metadata is really not a good idea
-
----
- src/calibre/web/feeds/news.py | 2 --
- 1 file changed, 2 deletions(-)
-
-diff --git a/src/calibre/web/feeds/news.py b/src/calibre/web/feeds/news.py
-index 854c62ebec..2a3797577c 100644
---- a/src/calibre/web/feeds/news.py
-+++ b/src/calibre/web/feeds/news.py
-@@ -210,8 +210,6 @@ class BasicNewsRecipe(Recipe):
- #:
- #: conversion_options = {
- #: 'base_font_size' : 16,
-- #: 'tags' : 'mytag1,mytag2',
-- #: 'title' : 'My Title',
- #: 'linearize_tables' : True,
- #: }
- #:
diff --git a/0030-Try-manually-installing-libgl1-mesa-dev-on-Travis.patch b/0030-Try-manually-installing-libgl1-mesa-dev-on-Travis.patch
deleted file mode 100644
index 1bc28f3..0000000
--- a/0030-Try-manually-installing-libgl1-mesa-dev-on-Travis.patch
+++ /dev/null
@@ -1,23 +0,0 @@
-From 149d14a205d9a19f859c9721fa4c61cbd40f02e5 Mon Sep 17 00:00:00 2001
-From: Kovid Goyal <kovid(a)kovidgoyal.net>
-Date: Tue, 30 Jul 2019 19:50:31 +0530
-Subject: [PATCH 30/71] Try manually installing libgl1-mesa-dev on Travis
-
----
- .travis.yml | 3 +++
- 1 file changed, 3 insertions(+)
-
-diff --git a/.travis.yml b/.travis.yml
-index a4f85b49bf..54060a6162 100644
---- a/.travis.yml
-+++ b/.travis.yml
-@@ -10,6 +10,9 @@ matrix:
- include:
- - os: linux
- sudo: false
-+ addons:
-+ apt:
-+ packages: libgl1-mesa-dev
- - os: osx
-
- before_install:
diff --git a/0031-Improve-PoDoFo-test-a-bit.patch b/0031-Improve-PoDoFo-test-a-bit.patch
deleted file mode 100644
index 87980a4..0000000
--- a/0031-Improve-PoDoFo-test-a-bit.patch
+++ /dev/null
@@ -1,23 +0,0 @@
-From 9956809ffe46bad2238712eecee4ed64fea9e63a Mon Sep 17 00:00:00 2001
-From: Kovid Goyal <kovid(a)kovidgoyal.net>
-Date: Wed, 31 Jul 2019 16:06:01 +0530
-Subject: [PATCH 31/71] Improve PoDoFo test a bit
-
----
- src/calibre/utils/podofo/__init__.py | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
-
-diff --git a/src/calibre/utils/podofo/__init__.py b/src/calibre/utils/podofo/__init__.py
-index 9c032478ee..9cefa3f364 100644
---- a/src/calibre/utils/podofo/__init__.py
-+++ b/src/calibre/utils/podofo/__init__.py
-@@ -185,7 +185,8 @@ def test_podofo():
- p = podofo.PDFDoc()
- p.open(f.name)
- if (p.title, p.author) != (mi.title, mi.authors[0]):
-- raise ValueError('podofo failed to set title and author in Info dict')
-+ raise ValueError('podofo failed to set title and author in Info dict %s != %s' % (
-+ (p.title, p.author), (mi.title, mi.authors[0])))
- if not p.get_xmp_metadata():
- raise ValueError('podofo failed to write XMP packet')
- del p
diff --git a/0032-Simplify-podofo-str-unicode-conversion.patch b/0032-Simplify-podofo-str-unicode-conversion.patch
deleted file mode 100644
index 4129c1c..0000000
--- a/0032-Simplify-podofo-str-unicode-conversion.patch
+++ /dev/null
@@ -1,51 +0,0 @@
-From 05a852817487dc8432fbb88a6b56472963204867 Mon Sep 17 00:00:00 2001
-From: Kovid Goyal <kovid(a)kovidgoyal.net>
-Date: Wed, 31 Jul 2019 16:28:04 +0530
-Subject: [PATCH 32/71] Simplify podofo str->unicode conversion
-
----
- src/calibre/utils/podofo/doc.cpp | 9 +--------
- src/calibre/utils/podofo/utils.cpp | 3 +--
- 2 files changed, 2 insertions(+), 10 deletions(-)
-
-diff --git a/src/calibre/utils/podofo/doc.cpp b/src/calibre/utils/podofo/doc.cpp
-index 164bc17cb7..8eb48d97f9 100644
---- a/src/calibre/utils/podofo/doc.cpp
-+++ b/src/calibre/utils/podofo/doc.cpp
-@@ -394,7 +394,6 @@ PDFDoc_version_getter(PDFDoc *self, void *closure) {
- static PyObject *
- PDFDoc_getter(PDFDoc *self, int field)
- {
-- PyObject *ans;
- PdfString s;
- PdfInfo *info = self->doc->GetInfo();
- if (info == NULL) {
-@@ -419,13 +418,7 @@ PDFDoc_getter(PDFDoc *self, int field)
- return NULL;
- }
-
-- ans = podofo_convert_pdfstring(s);
-- if (ans == NULL) {PyErr_NoMemory(); return NULL;}
-- PyObject *uans = PyUnicode_FromEncodedObject(ans, "utf-8", "replace");
-- Py_DECREF(ans);
-- if (uans == NULL) {return NULL;}
-- Py_INCREF(uans);
-- return uans;
-+ return podofo_convert_pdfstring(s);
- }
-
- static int
-diff --git a/src/calibre/utils/podofo/utils.cpp b/src/calibre/utils/podofo/utils.cpp
-index da1272014e..6ecf1ec7fd 100644
---- a/src/calibre/utils/podofo/utils.cpp
-+++ b/src/calibre/utils/podofo/utils.cpp
-@@ -25,8 +25,7 @@ pdf::podofo_set_exception(const PdfError &err) {
-
- PyObject *
- pdf::podofo_convert_pdfstring(const PdfString &s) {
-- std::string raw = s.GetStringUtf8();
-- return PyBytes_FromStringAndSize(raw.c_str(), raw.length());
-+ return PyUnicode_FromString(s.GetStringUtf8().c_str());
- }
-
- PdfString *
diff --git a/0033-Cleanup-conversion-of-python-strings-to-podofo-strin.patch b/0033-Cleanup-conversion-of-python-strings-to-podofo-strin.patch
deleted file mode 100644
index 786fd02..0000000
--- a/0033-Cleanup-conversion-of-python-strings-to-podofo-strin.patch
+++ /dev/null
@@ -1,209 +0,0 @@
-From 3538b0aa88af689284d7d2e84b9f1f375b909ff2 Mon Sep 17 00:00:00 2001
-From: Kovid Goyal <kovid(a)kovidgoyal.net>
-Date: Wed, 31 Jul 2019 18:05:19 +0530
-Subject: [PATCH 33/71] Cleanup conversion of python strings to podofo strings
-
----
- src/calibre/utils/podofo/doc.cpp | 40 +++++++++++-----------------
- src/calibre/utils/podofo/global.h | 11 +++-----
- src/calibre/utils/podofo/outline.cpp | 14 +++++-----
- src/calibre/utils/podofo/utils.cpp | 30 ++++++++-------------
- 4 files changed, 38 insertions(+), 57 deletions(-)
-
-diff --git a/src/calibre/utils/podofo/doc.cpp b/src/calibre/utils/podofo/doc.cpp
-index 8eb48d97f9..60bb6d69b9 100644
---- a/src/calibre/utils/podofo/doc.cpp
-+++ b/src/calibre/utils/podofo/doc.cpp
-@@ -243,35 +243,35 @@ static PyObject *
- PDFDoc_create_outline(PDFDoc *self, PyObject *args) {
- PyObject *p;
- PDFOutlineItem *ans;
-- PdfString *title;
- int pagenum;
-
- if (!PyArg_ParseTuple(args, "Ui", &p, &pagenum)) return NULL;
-- title = podofo_convert_pystring(p);
-- if (title == NULL) return NULL;
-
- ans = PyObject_New(PDFOutlineItem, &PDFOutlineItemType);
- if (ans == NULL) goto error;
-
- try {
-+ const PdfString title = podofo_convert_pystring(p);
- PdfOutlines *outlines = self->doc->GetOutlines();
- if (outlines == NULL) {PyErr_NoMemory(); goto error;}
-- ans->item = outlines->CreateRoot(*title);
-+ ans->item = outlines->CreateRoot(title);
- if (ans->item == NULL) {PyErr_NoMemory(); goto error;}
- ans->doc = self->doc;
- PdfDestination dest(self->doc->GetPage(pagenum));
- ans->item->SetDestination(dest);
- } catch(const PdfError & err) {
- podofo_set_exception(err); goto error;
-+ } catch(const std::exception & err) {
-+ PyErr_Format(PyExc_ValueError, "An error occurred while trying to create the outline: %s", err.what());
-+ goto error;
- } catch (...) {
- PyErr_SetString(PyExc_ValueError, "An unknown error occurred while trying to create the outline");
- goto error;
- }
-
-- delete title;
- return (PyObject*)ans;
- error:
-- Py_XDECREF(ans); delete title;
-+ Py_XDECREF(ans);
- return NULL;
-
- } // }}}
-@@ -427,33 +427,25 @@ PDFDoc_setter(PDFDoc *self, PyObject *val, int field) {
- PyErr_SetString(PyExc_ValueError, "Must use unicode objects to set metadata");
- return -1;
- }
-- PdfInfo *info = new PdfInfo(*self->doc->GetInfo());
-- if (info == NULL) {
-- PyErr_SetString(PyExc_Exception, "You must first load a PDF Document");
-- return -1;
-- }
-- PdfString *s = NULL;
--
-- if (self->doc->GetEncrypted()) s = podofo_convert_pystring_single_byte(val);
-- else s = podofo_convert_pystring(val);
-- if (s == NULL) return -1;
--
-+ PdfInfo *info = self->doc->GetInfo();
-+ if (!info) { PyErr_SetString(Error, "You must first load a PDF Document"); return -1; }
-+ const PdfString s = podofo_convert_pystring(val);
-
- switch (field) {
- case 0:
-- info->SetTitle(*s); break;
-+ info->SetTitle(s); break;
- case 1:
-- info->SetAuthor(*s); break;
-+ info->SetAuthor(s); break;
- case 2:
-- info->SetSubject(*s); break;
-+ info->SetSubject(s); break;
- case 3:
-- info->SetKeywords(*s); break;
-+ info->SetKeywords(s); break;
- case 4:
-- info->SetCreator(*s); break;
-+ info->SetCreator(s); break;
- case 5:
-- info->SetProducer(*s); break;
-+ info->SetProducer(s); break;
- default:
-- PyErr_SetString(PyExc_Exception, "Bad field");
-+ PyErr_SetString(Error, "Bad field");
- return -1;
- }
-
-diff --git a/src/calibre/utils/podofo/global.h b/src/calibre/utils/podofo/global.h
-index 4a180d86a0..6d97159c18 100644
---- a/src/calibre/utils/podofo/global.h
-+++ b/src/calibre/utils/podofo/global.h
-@@ -37,11 +37,8 @@ extern PyTypeObject PDFOutlineItemType;
- extern PyObject *Error;
-
- // Utilities
--extern void podofo_set_exception(const PdfError &err);
--extern PyObject * podofo_convert_pdfstring(const PdfString &s);
--extern PdfString * podofo_convert_pystring(PyObject *py);
--extern PdfString * podofo_convert_pystring_single_byte(PyObject *py);
--extern PyObject* write_doc(PdfMemDocument *doc, PyObject *f);
--
-+void podofo_set_exception(const PdfError &err);
-+PyObject * podofo_convert_pdfstring(const PdfString &s);
-+const PdfString podofo_convert_pystring(PyObject *py);
-+PyObject* write_doc(PdfMemDocument *doc, PyObject *f);
- }
--
-diff --git a/src/calibre/utils/podofo/outline.cpp b/src/calibre/utils/podofo/outline.cpp
-index 01a3b186d9..d7a4d8a79b 100644
---- a/src/calibre/utils/podofo/outline.cpp
-+++ b/src/calibre/utils/podofo/outline.cpp
-@@ -47,36 +47,36 @@ create(PDFOutlineItem *self, PyObject *args) {
- PyObject *ptitle, *as_child = NULL;
- PDFOutlineItem *ans;
- int num;
-- PdfString *title;
- PdfPage *page;
-
- if (!PyArg_ParseTuple(args, "Ui|O", &ptitle, &num, &as_child)) return NULL;
-- title = podofo_convert_pystring(ptitle);
-- if (title == NULL) return NULL;
-
- ans = PyObject_New(PDFOutlineItem, &PDFOutlineItemType);
- if (ans == NULL) goto error;
- ans->doc = self->doc;
-
- try {
-+ const PdfString title = podofo_convert_pystring(ptitle);
- page = self->doc->GetPage(num);
- if (page == NULL) { PyErr_Format(PyExc_ValueError, "Invalid page number: %d", num); goto error; }
- PdfDestination dest(page);
- if (as_child != NULL && PyObject_IsTrue(as_child)) {
-- ans->item = self->item->CreateChild(*title, dest);
-+ ans->item = self->item->CreateChild(title, dest);
- } else
-- ans->item = self->item->CreateNext(*title, dest);
-+ ans->item = self->item->CreateNext(title, dest);
- } catch (const PdfError &err) {
- podofo_set_exception(err); goto error;
-+ } catch(const std::exception & err) {
-+ PyErr_Format(PyExc_ValueError, "An error occurred while trying to create the outline: %s", err.what());
-+ goto error;
- } catch (...) {
- PyErr_SetString(PyExc_Exception, "An unknown error occurred while trying to create the outline item");
- goto error;
- }
-
-- delete title;
- return (PyObject*) ans;
- error:
-- Py_XDECREF(ans); delete title;
-+ Py_XDECREF(ans);
- return NULL;
- }
-
-diff --git a/src/calibre/utils/podofo/utils.cpp b/src/calibre/utils/podofo/utils.cpp
-index 6ecf1ec7fd..830fc5052e 100644
---- a/src/calibre/utils/podofo/utils.cpp
-+++ b/src/calibre/utils/podofo/utils.cpp
-@@ -28,23 +28,15 @@ pdf::podofo_convert_pdfstring(const PdfString &s) {
- return PyUnicode_FromString(s.GetStringUtf8().c_str());
- }
-
--PdfString *
--pdf::podofo_convert_pystring(PyObject *py) {
-- PyObject *u8 = PyUnicode_AsEncodedString(py, "UTF-8", "replace");
-- if (u8 == NULL) { return NULL; }
-- pdf_utf8 *s8 = reinterpret_cast<pdf_utf8 *>(PyBytes_AS_STRING(u8));
-- PdfString *ans = new PdfString(s8);
-- Py_DECREF(u8);
-- if (ans == NULL) PyErr_NoMemory();
-- return ans;
--}
--
--PdfString *
--pdf::podofo_convert_pystring_single_byte(PyObject *py) {
-- PyObject *s = PyUnicode_AsEncodedString(py, "cp1252", "replace");
-- if (s == NULL) { return NULL; }
-- PdfString *ans = new PdfString(PyBytes_AS_STRING(s));
-- Py_DECREF(s);
-- if (ans == NULL) PyErr_NoMemory();
-- return ans;
-+const PdfString
-+pdf::podofo_convert_pystring(PyObject *val) {
-+#if PY_MAJOR_VERSION > 2
-+ return s(reinterpret_cast<const pdf_utf8*>(PyUnicode_AsUTF8(val)));
-+#else
-+ PyObject *temp = PyUnicode_AsUTF8String(val);
-+ if (!temp) throw std::bad_alloc();
-+ PdfString s(reinterpret_cast<const pdf_utf8*>(PyBytes_AS_STRING(temp)));
-+ Py_DECREF(temp);
-+ return s;
-+#endif
- }
diff --git a/0034-Utility-function-to-detect-if-a-PDF-is-encrypted.patch b/0034-Utility-function-to-detect-if-a-PDF-is-encrypted.patch
deleted file mode 100644
index 766f960..0000000
--- a/0034-Utility-function-to-detect-if-a-PDF-is-encrypted.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-From 41d8f9b4a7891873f3f2d882664e49a8842802c9 Mon Sep 17 00:00:00 2001
-From: Kovid Goyal <kovid(a)kovidgoyal.net>
-Date: Mon, 5 Aug 2019 12:11:48 +0530
-Subject: [PATCH 34/71] Utility function to detect if a PDF is encrypted
-
----
- src/calibre/ebooks/metadata/pdf.py | 13 ++++++++++++-
- 1 file changed, 12 insertions(+), 1 deletion(-)
-
-diff --git a/src/calibre/ebooks/metadata/pdf.py b/src/calibre/ebooks/metadata/pdf.py
-index fd0604d204..bf29d62e1f 100644
---- a/src/calibre/ebooks/metadata/pdf.py
-+++ b/src/calibre/ebooks/metadata/pdf.py
-@@ -8,7 +8,7 @@ import os, subprocess, shutil, re
- from functools import partial
-
- from calibre import prints
--from calibre.constants import iswindows
-+from calibre.constants import iswindows, ispy3
- from calibre.ptempfile import TemporaryDirectory
- from calibre.ebooks.metadata import (
- MetaInformation, string_to_authors, check_isbn, check_doi)
-@@ -97,6 +97,17 @@ def page_images(pdfpath, outputdir, first=1, last=1):
- raise ValueError('Failed to render PDF, pdftoppm errorcode: %s'%e.returncode)
-
-
-+def is_pdf_encrypted(path_to_pdf):
-+ if not ispy3 and not isinstance(path_to_pdf, bytes):
-+ path_to_pdf = path_to_pdf.encode('mbcs' if iswindows else 'utf-8')
-+ pdfinfo = get_tools()[0]
-+ raw = subprocess.check_output([pdfinfo, path_to_pdf])
-+ q = re.search(br'^Encrypted:\s*(\S+)', raw, flags=re.MULTILINE)
-+ if q is not None:
-+ return q.group(1) == b'yes'
-+ return False
-+
-+
- def get_metadata(stream, cover=True):
- with TemporaryDirectory('_pdf_metadata_read') as pdfpath:
- stream.seek(0)
diff --git a/0035-macOS-Fix-a-regression-that-could-cause-a-crash-on-e.patch b/0035-macOS-Fix-a-regression-that-could-cause-a-crash-on-e.patch
deleted file mode 100644
index b8b852c..0000000
--- a/0035-macOS-Fix-a-regression-that-could-cause-a-crash-on-e.patch
+++ /dev/null
@@ -1,136 +0,0 @@
-From 012ab78ac30ed61070500b35082cef3c220e19e3 Mon Sep 17 00:00:00 2001
-From: Kovid Goyal <kovid(a)kovidgoyal.net>
-Date: Tue, 6 Aug 2019 11:46:15 +0530
-Subject: [PATCH 35/71] macOS: Fix a regression that could cause a crash on
- exit if any books were deleted while calibre was running. Fixes #1839044
- [calibre crash when deleting
- ebook](https://bugs.launchpad.net/calibre/+bug/1839044)
-
----
- src/calibre/db/delete_service.py | 3 +++
- src/calibre/utils/cocoa.m | 29 ++++++++++++++---------------
- src/calibre/utils/cocoa_wrapper.c | 8 ++++++++
- 3 files changed, 25 insertions(+), 15 deletions(-)
-
-diff --git a/src/calibre/db/delete_service.py b/src/calibre/db/delete_service.py
-index 15d48358d1..4a10e8ca59 100644
---- a/src/calibre/db/delete_service.py
-+++ b/src/calibre/db/delete_service.py
-@@ -8,6 +8,7 @@ __copyright__ = '2013, Kovid Goyal <kovid at kovidgoyal.net>'
- import os, tempfile, shutil, errno, time, atexit
- from threading import Thread
-
-+from calibre.constants import isosx, plugins
- from calibre.ptempfile import remove_dir
- from calibre.utils.filenames import remove_dir_if_empty
- from calibre.utils.recycle_bin import delete_tree, delete_file
-@@ -33,6 +34,8 @@ class DeleteService(Thread):
- def __init__(self):
- Thread.__init__(self)
- self.requests = Queue()
-+ if isosx:
-+ plugins['cocoa'][0].enable_cocoa_multithreading()
-
- def shutdown(self, timeout=20):
- self.requests.put(None)
-diff --git a/src/calibre/utils/cocoa.m b/src/calibre/utils/cocoa.m
-index 7b7f098ef8..ed228bed3c 100644
---- a/src/calibre/utils/cocoa.m
-+++ b/src/calibre/utils/cocoa.m
-@@ -9,18 +9,21 @@
- #include <Cocoa/Cocoa.h>
- #include <string.h>
-
-+void
-+activate_cocoa_multithreading(void) {
-+ if (![NSThread isMultiThreaded]) [[NSThread new] start];
-+}
-+
- const char*
- cocoa_send2trash(const char *utf8_path) {
-- NSString *path = [[NSString alloc] initWithUTF8String:utf8_path];
-- NSURL *url = [NSURL fileURLWithPath:path];
-+ @autoreleasepool {
- const char *ret = NULL;
- NSError* ns_error = nil;
-- if (![[NSFileManager defaultManager] trashItemAtURL:url resultingItemURL:nil error:&ns_error]) {
-+ if (![[NSFileManager defaultManager] trashItemAtURL:[NSURL fileURLWithPath:@(utf8_path)] resultingItemURL:nil error:&ns_error]) {
- ret = strdup([[ns_error localizedDescription] UTF8String]);
- }
-- [url release];
-- [path release];
- return ret;
-+ }
- }
-
-
-@@ -32,35 +35,31 @@ extern void macos_notification_callback(const char*);
-
- void
- cocoa_send_notification(const char *identifier, const char *title, const char *subtitle, const char *informativeText, const char* path_to_image) {
-+ @autoreleasepool {
- NSUserNotificationCenter *center = [NSUserNotificationCenter defaultUserNotificationCenter];
- if (!center) {return;}
- if (!center.delegate) center.delegate = [[NotificationDelegate alloc] init];
- NSUserNotification *n = [NSUserNotification new];
- NSImage *img = nil;
- if (path_to_image) {
-- NSString *p = [NSString stringWithUTF8String:path_to_image];
-- NSURL *url = [NSURL fileURLWithPath:p];
-- img = [[NSImage alloc] initWithContentsOfURL:url];
-- [url release]; [p release];
-+ img = [[NSImage alloc] initWithContentsOfURL:[NSURL fileURLWithPath:@(path_to_image)]];
- if (img) {
- [n setValue:img forKey:@"_identityImage"];
- [n setValue:@(false) forKey:@"_identityImageHasBorder"];
- }
-- [img release];
-+ [img release];
- }
- #define SET(x) { \
- if (x) { \
-- NSString *t = [NSString stringWithUTF8String:x]; \
-- n.x = t; \
-- [t release]; \
-+ n.x = @(x); \
- }}
- SET(title); SET(subtitle); SET(informativeText);
- #undef SET
- if (identifier) {
-- n.userInfo = @{@"user_id": [NSString stringWithUTF8String:identifier]};
-+ n.userInfo = @{@"user_id": @(identifier)};
- }
- [center deliverNotification:n];
--
-+ }
- }
-
- @implementation NotificationDelegate
-diff --git a/src/calibre/utils/cocoa_wrapper.c b/src/calibre/utils/cocoa_wrapper.c
-index b16242a902..5f68e313e1 100644
---- a/src/calibre/utils/cocoa_wrapper.c
-+++ b/src/calibre/utils/cocoa_wrapper.c
-@@ -10,6 +10,7 @@
- extern double cocoa_cursor_blink_time(void);
- extern void cocoa_send_notification(const char *identitifer, const char *title, const char *subtitle, const char *informativeText, const char* path_to_image);
- extern const char* cocoa_send2trash(const char *utf8_path);
-+extern void activate_cocoa_multithreading(void);
-
- static PyObject *notification_activated_callback = NULL;
-
-@@ -63,8 +64,15 @@ send2trash(PyObject *self, PyObject *args) {
- Py_RETURN_NONE;
- }
-
-+static PyObject*
-+enable_cocoa_multithreading(PyObject *self, PyObject *args) {
-+ activate_cocoa_multithreading();
-+ Py_RETURN_NONE;
-+}
-+
- static PyMethodDef module_methods[] = {
- {"cursor_blink_time", (PyCFunction)cursor_blink_time, METH_NOARGS, ""},
-+ {"enable_cocoa_multithreading", (PyCFunction)enable_cocoa_multithreading, METH_NOARGS, ""},
- {"set_notification_activated_callback", (PyCFunction)set_notification_activated_callback, METH_O, ""},
- {"send_notification", (PyCFunction)send_notification, METH_VARARGS, ""},
- {"send2trash", (PyCFunction)send2trash, METH_VARARGS, ""},
diff --git a/0036-Update-login-mechanism-for-Times-Online.patch b/0036-Update-login-mechanism-for-Times-Online.patch
deleted file mode 100644
index f5f54ab..0000000
--- a/0036-Update-login-mechanism-for-Times-Online.patch
+++ /dev/null
@@ -1,158 +0,0 @@
-From 99a673a711234dfd098316c85d5ec384f35ed7c0 Mon Sep 17 00:00:00 2001
-From: a10kiloham <github(a)robk.com>
-Date: Tue, 6 Aug 2019 15:51:38 +0100
-Subject: [PATCH 36/71] Update login mechanism for Times Online
-
-Fixes #1025 (Update login mechanism)
-Fixes #1026 (Fix login mechanism)
----
- recipes/sunday_times_magazine.recipe | 47 ++++++++++++++++++----------
- recipes/times_online.recipe | 43 ++++++++++++++++---------
- 2 files changed, 59 insertions(+), 31 deletions(-)
-
-diff --git a/recipes/sunday_times_magazine.recipe b/recipes/sunday_times_magazine.recipe
-index b7bebff615..f59dd15422 100644
---- a/recipes/sunday_times_magazine.recipe
-+++ b/recipes/sunday_times_magazine.recipe
-@@ -1,13 +1,13 @@
- __license__ = 'GPL v3'
--__copyright__ = '2010-2013, Darko Miletic <darko.miletic at gmail.com>'
-+__copyright__ = '2010-2019'
- '''
- www.thetimes.co.uk/magazine/the-sunday-times-magazine/
- '''
-+
-+from mechanize import Request
-+
-+from calibre import random_user_agent
- from calibre.web.feeds.news import BasicNewsRecipe
--try:
-- from urllib.parse import urlencode
--except ImportError:
-- from urllib import urlencode
-
-
- def classes(classes):
-@@ -31,8 +31,9 @@ class TimesOnline(BasicNewsRecipe):
- delay = 1
- needs_subscription = True
- publication_type = 'newspaper'
-- INDEX = 'http://www.thetimes.co.uk/'
-- PREFIX = u'http://www.thetimes.co.uk/'
-+ INDEX = 'https://www.thetimes.co.uk'
-+ LOGIN = 'https://login.thetimes.co.uk/'
-+ PREFIX = u'https://www.thetimes.co.uk'
- extra_css = """
- .author-name,.authorName{font-style: italic}
- .published-date,.multi-position-photo-text{
-@@ -48,16 +49,30 @@ class TimesOnline(BasicNewsRecipe):
- 'publisher': publisher,
- 'language': language}
-
-- def get_browser(self):
-- br = BasicNewsRecipe.get_browser(self)
-- br.open('http://www.thetimes.co.uk/')
-- if self.username is not None and self.password is not None:
-- data = urlencode({
-- 'gotoUrl': self.INDEX,
-- 'username': self.username,
-- 'password': self.password})
-- br.open('https://login.thetimes.co.uk/', data)
-+ def get_browser(self, *a, **kw):
-+ start_url = self.INDEX
-+ kw['user_agent'] = random_user_agent(allow_ie=False)
-+ br = BasicNewsRecipe.get_browser(self, *a, **kw)
-+ self.log('Starting login process...')
-+ res = br.open(start_url)
-+ sso_url = res.geturl()
-+ self.log(sso_url)
-+ request_query = {
-+ 'username': self.username,
-+ 'password': self.password,
-+ 's': 1,
-+ 'gotoUrl': self.INDEX,
-+ }
-+ rq = Request(self.LOGIN, headers={
-+ 'Accept': 'text/html',
-+ 'Accept-Language': 'en-US,en;q=0.8',
-+ 'X-HTTP-Method-Override': 'POST',
-+ 'X-Requested-With': 'XMLHttpRequest',
-+ }, data=request_query)
-+ self.log('Sending login request...')
-+ res = br.open(rq)
- return br
-+ # }}}
-
- def get_cover_url(self):
- from datetime import date
-diff --git a/recipes/times_online.recipe b/recipes/times_online.recipe
-index 76bf09d467..ad3a0ce576 100644
---- a/recipes/times_online.recipe
-+++ b/recipes/times_online.recipe
-@@ -1,15 +1,14 @@
- __license__ = 'GPL v3'
--__copyright__ = '2010-2017, Bobby Steel <bob at xdca.com>, Darko Miletic'
-+__copyright__ = '2010-2019, Bobby Steel <bob at xdca.com>, Darko Miletic'
- '''
- www.thetimes.co.uk
- '''
-+from mechanize import Request
-+from calibre import random_user_agent
-+from calibre.web.feeds.news import BasicNewsRecipe
-+
- import html5lib
--try:
-- from urllib.parse import urlencode
--except ImportError:
-- from urllib import urlencode
- from lxml import html
--from calibre.web.feeds.news import BasicNewsRecipe
-
-
- def classes(classes):
-@@ -35,6 +34,7 @@ class TimesOnline(BasicNewsRecipe):
- needs_subscription = True
- publication_type = 'newspaper'
- INDEX = 'http://www.thetimes.co.uk/'
-+ LOGIN = 'https://login.thetimes.co.uk/'
- PREFIX = u'http://www.thetimes.co.uk'
- extra_css = """
- .author-name,.authorName{font-style: italic}
-@@ -78,15 +78,28 @@ def get_cover_url(self):
- br.open(cover)
- return cover
-
-- def get_browser(self):
-- br = BasicNewsRecipe.get_browser(self)
-- br.open('http://www.thetimes.co.uk/')
-- if self.username is not None and self.password is not None:
-- data = urlencode({
-- 'gotoUrl': self.INDEX,
-- 'username': self.username,
-- 'password': self.password})
-- br.open('https://login.thetimes.co.uk/', data)
-+ def get_browser(self, *a, **kw):
-+ start_url = self.INDEX
-+ kw['user_agent'] = random_user_agent(allow_ie=False)
-+ br = BasicNewsRecipe.get_browser(self, *a, **kw)
-+ self.log('Starting login process...')
-+ res = br.open(start_url)
-+ sso_url = res.geturl()
-+ self.log(sso_url)
-+ request_query = {
-+ 'username': self.username,
-+ 'password': self.password,
-+ 's': 1,
-+ 'gotoUrl': self.INDEX,
-+ }
-+ rq = Request(self.LOGIN, headers={
-+ 'Accept': 'text/html',
-+ 'Accept-Language': 'en-US,en;q=0.8',
-+ 'X-HTTP-Method-Override': 'POST',
-+ 'X-Requested-With': 'XMLHttpRequest',
-+ }, data=request_query)
-+ self.log('Sending login request...')
-+ res = br.open(rq)
- return br
-
- remove_tags = [
diff --git a/0037-Change-travis-email-notification-semantics.patch b/0037-Change-travis-email-notification-semantics.patch
deleted file mode 100644
index 3d68134..0000000
--- a/0037-Change-travis-email-notification-semantics.patch
+++ /dev/null
@@ -1,22 +0,0 @@
-From 668a210259c192866c4baa928e7288358e9a3d7c Mon Sep 17 00:00:00 2001
-From: Kovid Goyal <kovid(a)kovidgoyal.net>
-Date: Wed, 7 Aug 2019 13:10:17 +0530
-Subject: [PATCH 37/71] Change travis email notification semantics
-
----
- .travis.yml | 5 +++++
- 1 file changed, 5 insertions(+)
-
-diff --git a/.travis.yml b/.travis.yml
-index 54060a6162..11c0fc03c6 100644
---- a/.travis.yml
-+++ b/.travis.yml
-@@ -20,3 +20,8 @@ before_install:
- - python setup/unix-ci.py bootstrap
-
- script: python setup/unix-ci.py test
-+
-+notifications:
-+ email:
-+ on_success: change
-+ on_failure: change
diff --git a/0038-py3-compat.patch b/0038-py3-compat.patch
deleted file mode 100644
index 924e4da..0000000
--- a/0038-py3-compat.patch
+++ /dev/null
@@ -1,22 +0,0 @@
-From b782f5d025820b773048679d5edea7563633fd94 Mon Sep 17 00:00:00 2001
-From: Kovid Goyal <kovid(a)kovidgoyal.net>
-Date: Wed, 7 Aug 2019 19:27:42 +0530
-Subject: [PATCH 38/71] py3 compat
-
----
- src/calibre/srv/opds.py | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/calibre/srv/opds.py b/src/calibre/srv/opds.py
-index a5caf6ffea..b9de203d25 100644
---- a/src/calibre/srv/opds.py
-+++ b/src/calibre/srv/opds.py
-@@ -182,7 +182,7 @@ def ACQUISITION_ENTRY(book_id, updated, request_context):
- field_metadata = request_context.db.field_metadata
- mi = request_context.db.get_metadata(book_id)
- extra = []
-- if mi.rating > 0:
-+ if (mi.rating or 0) > 0:
- rating = rating_to_stars(mi.rating)
- extra.append(_('RATING: %s<br />')%rating)
- if mi.tags:
diff --git a/0039-Content-server-Fix-OPDS-feed-for-category-based-brow.patch b/0039-Content-server-Fix-OPDS-feed-for-category-based-brow.patch
deleted file mode 100644
index f58228e..0000000
--- a/0039-Content-server-Fix-OPDS-feed-for-category-based-brow.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-From 290e6fadb20a6987b538a43ce3d36db1b167d813 Mon Sep 17 00:00:00 2001
-From: Kovid Goyal <kovid(a)kovidgoyal.net>
-Date: Wed, 7 Aug 2019 19:44:21 +0530
-Subject: [PATCH 39/71] Content server: Fix OPDS feed for category based
- browsing listing restricted books, even though these books cannot be actually
- downloaded. Fixes #1839173 [opds feed shows other books with same tags when
- those books are not
- allowed.](https://bugs.launchpad.net/calibre/+bug/1839173)
-
----
- src/calibre/srv/opds.py | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/calibre/srv/opds.py b/src/calibre/srv/opds.py
-index b9de203d25..e3bcb240a3 100644
---- a/src/calibre/srv/opds.py
-+++ b/src/calibre/srv/opds.py
-@@ -566,7 +566,7 @@ def opds_category(ctx, rd, category, which):
- q = category
- if q == 'news':
- q = 'tags'
-- ids = rc.db.get_books_for_category(q, which)
-+ ids = rc.db.get_books_for_category(q, which) & rc.allowed_book_ids()
- sort_by = 'series' if category == 'series' else 'title'
-
- return get_acquisition_feed(rc, ids, offset, page_url, up_url, 'calibre-category:'+category+':'+unicode_type(which), sort_by=sort_by)
diff --git a/0040-See-if-not-using-a-temp-file-fixes-the-weird-test-fa.patch b/0040-See-if-not-using-a-temp-file-fixes-the-weird-test-fa.patch
deleted file mode 100644
index e96c6eb..0000000
--- a/0040-See-if-not-using-a-temp-file-fixes-the-weird-test-fa.patch
+++ /dev/null
@@ -1,84 +0,0 @@
-From f17f52b1378eac2d24eccb2d39481452622eb42a Mon Sep 17 00:00:00 2001
-From: Kovid Goyal <kovid(a)kovidgoyal.net>
-Date: Wed, 7 Aug 2019 20:07:33 +0530
-Subject: [PATCH 40/71] See if not using a temp file fixes the weird test
- failure on travis
-
----
- src/calibre/utils/podofo/__init__.py | 22 ++++++++--------------
- src/calibre/utils/podofo/doc.cpp | 19 +++++++++----------
- 2 files changed, 17 insertions(+), 24 deletions(-)
-
-diff --git a/src/calibre/utils/podofo/__init__.py b/src/calibre/utils/podofo/__init__.py
-index 9cefa3f364..65f09f78c6 100644
---- a/src/calibre/utils/podofo/__init__.py
-+++ b/src/calibre/utils/podofo/__init__.py
-@@ -163,7 +163,6 @@ def test_save_to(src, dest):
-
-
- def test_podofo():
-- import tempfile
- from io import BytesIO
- from calibre.ebooks.metadata.book.base import Metadata
- from calibre.ebooks.metadata.xmp import metadata_to_xmp_packet
-@@ -179,19 +178,14 @@ def test_podofo():
- buf = BytesIO()
- p.save_to_fileobj(buf)
- raw = buf.getvalue()
-- with tempfile.NamedTemporaryFile(delete=False) as f:
-- f.write(raw)
-- try:
-- p = podofo.PDFDoc()
-- p.open(f.name)
-- if (p.title, p.author) != (mi.title, mi.authors[0]):
-- raise ValueError('podofo failed to set title and author in Info dict %s != %s' % (
-- (p.title, p.author), (mi.title, mi.authors[0])))
-- if not p.get_xmp_metadata():
-- raise ValueError('podofo failed to write XMP packet')
-- del p
-- finally:
-- os.remove(f.name)
-+ p = podofo.PDFDoc()
-+ p.load(raw)
-+ if (p.title, p.author) != (mi.title, mi.authors[0]):
-+ raise ValueError('podofo failed to set title and author in Info dict %s != %s' % (
-+ (p.title, p.author), (mi.title, mi.authors[0])))
-+ if not p.get_xmp_metadata():
-+ raise ValueError('podofo failed to write XMP packet')
-+ del p
-
-
- if __name__ == '__main__':
-diff --git a/src/calibre/utils/podofo/doc.cpp b/src/calibre/utils/podofo/doc.cpp
-index 60bb6d69b9..e5c5154a23 100644
---- a/src/calibre/utils/podofo/doc.cpp
-+++ b/src/calibre/utils/podofo/doc.cpp
-@@ -43,19 +43,18 @@ static PyObject *
- PDFDoc_load(PDFDoc *self, PyObject *args) {
- char *buffer; Py_ssize_t size;
-
-- if (PyArg_ParseTuple(args, BYTES_FMT, &buffer, &size)) {
-- try {
-+ if (!PyArg_ParseTuple(args, BYTES_FMT, &buffer, &size)) return NULL;
-+
-+ try {
- #if PODOFO_VERSION <= 0x000905
-- self->doc->Load(buffer, (long)size);
-+ self->doc->Load(buffer, (long)size);
- #else
-- self->doc->LoadFromBuffer(buffer, (long)size);
-+ self->doc->LoadFromBuffer(buffer, (long)size);
- #endif
-- } catch(const PdfError & err) {
-- podofo_set_exception(err);
-- return NULL;
-- }
--} else return NULL;
--
-+ } catch(const PdfError & err) {
-+ podofo_set_exception(err);
-+ return NULL;
-+ }
-
- Py_RETURN_NONE;
- }
diff --git a/0041-Use-mbcs-encoding-when-passing-filenames-to-windows.patch b/0041-Use-mbcs-encoding-when-passing-filenames-to-windows.patch
deleted file mode 100644
index aff06c5..0000000
--- a/0041-Use-mbcs-encoding-when-passing-filenames-to-windows.patch
+++ /dev/null
@@ -1,86 +0,0 @@
-From b4c96c6e3806c2f9986e618f7407d232364efa54 Mon Sep 17 00:00:00 2001
-From: Kovid Goyal <kovid(a)kovidgoyal.net>
-Date: Wed, 7 Aug 2019 20:16:23 +0530
-Subject: [PATCH 41/71] Use mbcs encoding when passing filenames to windows
-
----
- src/calibre/utils/podofo/__init__.py | 22 ++++++++++++++--------
- src/calibre/utils/podofo/doc.cpp | 25 +++++++++++++++----------
- 2 files changed, 29 insertions(+), 18 deletions(-)
-
-diff --git a/src/calibre/utils/podofo/__init__.py b/src/calibre/utils/podofo/__init__.py
-index 65f09f78c6..3f5e8f18c6 100644
---- a/src/calibre/utils/podofo/__init__.py
-+++ b/src/calibre/utils/podofo/__init__.py
-@@ -163,6 +163,7 @@ def test_save_to(src, dest):
-
-
- def test_podofo():
-+ import tempfile
- from io import BytesIO
- from calibre.ebooks.metadata.book.base import Metadata
- from calibre.ebooks.metadata.xmp import metadata_to_xmp_packet
-@@ -178,14 +179,19 @@ def test_podofo():
- buf = BytesIO()
- p.save_to_fileobj(buf)
- raw = buf.getvalue()
-- p = podofo.PDFDoc()
-- p.load(raw)
-- if (p.title, p.author) != (mi.title, mi.authors[0]):
-- raise ValueError('podofo failed to set title and author in Info dict %s != %s' % (
-- (p.title, p.author), (mi.title, mi.authors[0])))
-- if not p.get_xmp_metadata():
-- raise ValueError('podofo failed to write XMP packet')
-- del p
-+ with tempfile.NamedTemporaryFile(suffix='.pdf', delete=False) as f:
-+ f.write(raw)
-+ try:
-+ p = podofo.PDFDoc()
-+ p.open(f.name)
-+ if (p.title, p.author) != (mi.title, mi.authors[0]):
-+ raise ValueError('podofo failed to set title and author in Info dict %s != %s' % (
-+ (p.title, p.author), (mi.title, mi.authors[0])))
-+ if not p.get_xmp_metadata():
-+ raise ValueError('podofo failed to write XMP packet')
-+ del p
-+ finally:
-+ os.remove(f.name)
-
-
- if __name__ == '__main__':
-diff --git a/src/calibre/utils/podofo/doc.cpp b/src/calibre/utils/podofo/doc.cpp
-index e5c5154a23..0a1e71a820 100644
---- a/src/calibre/utils/podofo/doc.cpp
-+++ b/src/calibre/utils/podofo/doc.cpp
-@@ -62,16 +62,21 @@ PDFDoc_load(PDFDoc *self, PyObject *args) {
- static PyObject *
- PDFDoc_open(PDFDoc *self, PyObject *args) {
- char *fname;
--
-- if (PyArg_ParseTuple(args, "s", &fname)) {
-- try {
-- self->doc->Load(fname);
-- } catch(const PdfError & err) {
-- podofo_set_exception(err);
-- return NULL;
-- }
-- } else return NULL;
--
-+#ifdef _WIN32
-+#define ENCODING "mbcs"
-+#else
-+#define ENCODING "utf-8"
-+#endif
-+ if (!PyArg_ParseTuple(args, "es", ENCODING, &fname)) return NULL;
-+#undef ENCODING
-+ try {
-+ self->doc->Load(fname);
-+ } catch(const PdfError & err) {
-+ podofo_set_exception(err);
-+ PyMem_Free(fname);
-+ return NULL;
-+ }
-+ PyMem_Free(fname);
-
- Py_RETURN_NONE;
- }
diff --git a/0042-py3-more-fixes.patch b/0042-py3-more-fixes.patch
deleted file mode 100644
index 3dc8664..0000000
--- a/0042-py3-more-fixes.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-From a7ae09dd93ceada7e9fe43ffd4adef84a4bfc883 Mon Sep 17 00:00:00 2001
-From: Kovid Goyal <kovid(a)kovidgoyal.net>
-Date: Wed, 7 Aug 2019 22:35:58 +0530
-Subject: [PATCH 42/71] py3: more fixes
-
----
- src/calibre/__init__.py | 1 +
- src/calibre/devices/kindle/apnx.py | 2 +-
- 2 files changed, 2 insertions(+), 1 deletion(-)
-
-diff --git a/src/calibre/__init__.py b/src/calibre/__init__.py
-index f2c2c8d2ee..30d38f621c 100644
---- a/src/calibre/__init__.py
-+++ b/src/calibre/__init__.py
-@@ -498,6 +498,7 @@ def strftime(fmt, t=None):
- t = list(t)
- orig_year = t[0]
- t[0] = replacement
-+ t = time.struct_time(t)
- ans = None
- if iswindows:
- if isinstance(fmt, bytes):
-diff --git a/src/calibre/devices/kindle/apnx.py b/src/calibre/devices/kindle/apnx.py
-index 7fb4e2bbf0..e9a8639d0a 100644
---- a/src/calibre/devices/kindle/apnx.py
-+++ b/src/calibre/devices/kindle/apnx.py
-@@ -38,7 +38,7 @@ class APNXBuilder(object):
-
- with lopen(mobi_file_path, 'rb') as mf:
- ident = PdbHeaderReader(mf).identity()
-- if ident != b'BOOKMOBI':
-+ if as_bytes(ident) != b'BOOKMOBI':
- # Check that this is really a MOBI file.
- raise Exception(_('Not a valid MOBI file. Reports identity of %s') % ident)
- apnx_meta['acr'] = as_unicode(PdbHeaderReader(mf).name(), errors='replace')
diff --git a/0043-Update-National-Geographic.patch b/0043-Update-National-Geographic.patch
deleted file mode 100644
index 34dacec..0000000
--- a/0043-Update-National-Geographic.patch
+++ /dev/null
@@ -1,111 +0,0 @@
-From 252fa24e4b6bb1f8503b134fd871f3cd29c98882 Mon Sep 17 00:00:00 2001
-From: Kovid Goyal <kovid(a)kovidgoyal.net>
-Date: Thu, 8 Aug 2019 10:05:59 +0530
-Subject: [PATCH 43/71] Update National Geographic
-
----
- recipes/natgeo.recipe | 65 +++++++++++++++++++++++++++++++------------
- 1 file changed, 47 insertions(+), 18 deletions(-)
-
-diff --git a/recipes/natgeo.recipe b/recipes/natgeo.recipe
-index af9b4e4c9f..84061bc1e2 100644
---- a/recipes/natgeo.recipe
-+++ b/recipes/natgeo.recipe
-@@ -3,6 +3,8 @@
- from __future__ import absolute_import, division, print_function, unicode_literals
-
- import json
-+from collections import defaultdict
-+
- from calibre.ebooks.BeautifulSoup import Tag
- from calibre.web.feeds.news import BasicNewsRecipe
-
-@@ -20,17 +22,35 @@ def new_tag(soup, name, attrs=()):
- return Tag(soup, name, attrs=attrs or None)
-
-
-+def entry_to_article(entry):
-+ url = entry.get('uri')
-+ if not url:
-+ return None, None
-+ section = 'Articles'
-+ article = {'url': url}
-+ for component in entry.get('components', ()):
-+ if component.get('content_type') == 'title':
-+ article['title'] = component['title']['text']
-+ elif component.get('content_type') == 'kicker':
-+ v = component['kicker'].get('vertical') or {}
-+ if v.get('name'):
-+ section = v['name']
-+ elif component.get('content_type') == 'dek':
-+ if component['dek'].get('text'):
-+ article['description'] = component['dek']['text']
-+ if 'title' in article:
-+ return article, section
-+ return None, None
-+
-+
- class NatGeo(BasicNewsRecipe):
- title = u'National Geographic'
- description = 'Daily news articles from The National Geographic'
- language = 'en'
-- oldest_article = 20
-- max_articles_per_feed = 25
- encoding = 'utf8'
- publisher = 'nationalgeographic.com'
- category = 'science, nat geo'
- __author__ = 'Kovid Goyal'
-- masthead_url = 'http://s.ngeo.com/wpf/sites/themes/global/i/presentation/ng_logo_small.png'
- description = 'Inspiring people to care about the planet since 1888'
- timefmt = ' [%a, %d %b, %Y]'
- no_stylesheets = True
-@@ -39,25 +59,34 @@ class NatGeo(BasicNewsRecipe):
- remove_javascript = False
-
- keep_only_tags = [
-- classes('mainArt byline'),
-- dict(id='article__body'),
-+ classes('main-title article__dek byline-component publishDate mainArt byline'),
-+ dict(id='article__body'),
- ]
- remove_tags = [
-- classes('hide-from-mobile ad-holder enlarge-button'),
-- dict(name='svg meta'.split()),
-+ classes('hide-from-mobile ad-holder enlarge-button'),
-+ dict(name='svg meta'.split()),
- ]
-
-- feeds = [
-- (u'Daily News', u'http://feeds.nationalgeographic.com/ng/News/News_Main')
-- ]
--
-- def parse_feeds(self):
-- feeds = BasicNewsRecipe.parse_feeds(self)
-- for feed in feeds:
-- for article in feed.articles[:]:
-- if 'Presented' in article.title or 'Pictures' in article.title:
-- feed.articles.remove(article)
-- return feeds
-+ def parse_index(self):
-+ feeds = defaultdict(list)
-+ br = self.get_browser()
-+ # br.open('https://www.nationalgeographic.com/latest-stories/').read()
-+ res = br.open_novisit(
-+ 'https://www.nationalgeographic.com/latest-stories/_jcr_content/content/hu...')
-+ entries = json.loads(res.read())
-+ for entry in entries:
-+ art, section = entry_to_article(entry)
-+ if art is None:
-+ continue
-+ feeds[section].append(art)
-+ ans = [(sec, feeds[sec]) for sec in sorted(feeds) if feeds[sec]]
-+ for (sec, articles) in ans:
-+ self.log('Found section:', sec)
-+ for art in articles:
-+ self.log('\t', art['title'], art['url'])
-+ if 'description' in art:
-+ self.log('\t\t', art['description'])
-+ return ans
-
- def preprocess_html(self, soup):
- for div in soup.findAll(attrs={'data-pestle-module': 'PictureFill'}):
diff --git a/0044-py3-More-fixes.patch b/0044-py3-More-fixes.patch
deleted file mode 100644
index 00904ea..0000000
--- a/0044-py3-More-fixes.patch
+++ /dev/null
@@ -1,42 +0,0 @@
-From 91ad5b0267415badac8722c3929272da61e0fbe3 Mon Sep 17 00:00:00 2001
-From: Kovid Goyal <kovid(a)kovidgoyal.net>
-Date: Thu, 8 Aug 2019 19:29:23 +0530
-Subject: [PATCH 44/71] py3: More fixes
-
----
- src/calibre/utils/smtp.py | 8 ++++++--
- 1 file changed, 6 insertions(+), 2 deletions(-)
-
-diff --git a/src/calibre/utils/smtp.py b/src/calibre/utils/smtp.py
-index 12d49d8f48..93fb3cf73c 100644
---- a/src/calibre/utils/smtp.py
-+++ b/src/calibre/utils/smtp.py
-@@ -13,7 +13,7 @@ This module implements a simple commandline SMTP client that supports:
- import sys, traceback, os, socket, encodings.idna as idna
- from calibre import isbytestring
- from calibre.constants import ispy3, iswindows
--from polyglot.builtins import unicode_type
-+from polyglot.builtins import unicode_type, as_unicode
-
-
- def decode_fqdn(fqdn):
-@@ -35,7 +35,7 @@ def safe_localhost():
- # Some mail servers have problems with non-ascii local hostnames, see
- # https://bugs.launchpad.net/bugs/1256549
- try:
-- local_hostname = idna.ToASCII(fqdn)
-+ local_hostname = as_unicode(idna.ToASCII(fqdn))
- except Exception:
- local_hostname = 'localhost.localdomain'
- else:
-@@ -162,6 +162,10 @@ def sendmail(msg, from_, to, localhost=None, verbose=0, timeout=None,
- if verify_server_cert:
- import ssl
- context = ssl.create_default_context(cafile=cafile)
-+ if not getattr(s, '_host', None) and ispy3:
-+ # needed because as of python 3.7 starttls expects _host to be set,
-+ # bu we cant set it via the constructor
-+ s._host = relay
- s.starttls(context=context)
- s.ehlo()
- if username is not None and password is not None:
diff --git a/0045-A-better-fix-for-python3.7-smtplib-breakage.patch b/0045-A-better-fix-for-python3.7-smtplib-breakage.patch
deleted file mode 100644
index c086ccb..0000000
--- a/0045-A-better-fix-for-python3.7-smtplib-breakage.patch
+++ /dev/null
@@ -1,72 +0,0 @@
-From d0afe72a22ee5e84183c79d3652307c1e09a70da Mon Sep 17 00:00:00 2001
-From: Kovid Goyal <kovid(a)kovidgoyal.net>
-Date: Thu, 8 Aug 2019 19:54:59 +0530
-Subject: [PATCH 45/71] A better fix for python3.7 smtplib breakage
-
----
- src/calibre/utils/smtp.py | 30 +++++++++++++++++-------------
- 1 file changed, 17 insertions(+), 13 deletions(-)
-
-diff --git a/src/calibre/utils/smtp.py b/src/calibre/utils/smtp.py
-index 93fb3cf73c..4f0ce963bc 100644
---- a/src/calibre/utils/smtp.py
-+++ b/src/calibre/utils/smtp.py
-@@ -13,7 +13,7 @@ This module implements a simple commandline SMTP client that supports:
- import sys, traceback, os, socket, encodings.idna as idna
- from calibre import isbytestring
- from calibre.constants import ispy3, iswindows
--from polyglot.builtins import unicode_type, as_unicode
-+from polyglot.builtins import unicode_type, as_unicode, native_string_type
-
-
- def decode_fqdn(fqdn):
-@@ -139,33 +139,37 @@ def sendmail_direct(from_, to, msg, timeout, localhost, verbose,
- raise IOError('Failed to send mail: '+repr(last_error))
-
-
-+def get_smtp_class(use_ssl=False, debuglevel=0):
-+ # We need this as in python 3.7 we have to pass the hostname
-+ # in the constructor, because of https://bugs.python.org/issue36094
-+ # which means the constructor calls connect(),
-+ # but there is no way to set debuglevel before connect() is called
-+ import polyglot.smtplib as smtplib
-+ cls = smtplib.SMTP_SSL if use_ssl else smtplib.SMTP
-+ bases = (cls,) if ispy3 else (cls, object)
-+ return type(native_string_type('SMTP'), bases, {native_string_type('debuglevel'): debuglevel})
-+
-+
- def sendmail(msg, from_, to, localhost=None, verbose=0, timeout=None,
- relay=None, username=None, password=None, encryption='TLS',
- port=-1, debug_output=None, verify_server_cert=False, cafile=None):
- if relay is None:
- for x in to:
- return sendmail_direct(from_, x, msg, timeout, localhost, verbose)
-- import polyglot.smtplib as smtplib
-- cls = smtplib.SMTP_SSL if encryption == 'SSL' else smtplib.SMTP
- timeout = None # Non-blocking sockets sometimes don't work
- port = int(port)
-- kwargs = dict(timeout=timeout, local_hostname=localhost or safe_localhost())
-- if debug_output is not None:
-- kwargs['debug_to'] = debug_output
-- s = cls(**kwargs)
-- s.set_debuglevel(verbose)
- if port < 0:
- port = 25 if encryption != 'SSL' else 465
-- s.connect(relay, port)
-+ kwargs = dict(host=relay, port=port, timeout=timeout, local_hostname=localhost or safe_localhost())
-+ if debug_output is not None:
-+ kwargs['debug_to'] = debug_output
-+ cls = get_smtp_class(use_ssl=encryption == 'SSL', debuglevel=verbose)
-+ s = cls(**kwargs)
- if encryption == 'TLS':
- context = None
- if verify_server_cert:
- import ssl
- context = ssl.create_default_context(cafile=cafile)
-- if not getattr(s, '_host', None) and ispy3:
-- # needed because as of python 3.7 starttls expects _host to be set,
-- # bu we cant set it via the constructor
-- s._host = relay
- s.starttls(context=context)
- s.ehlo()
- if username is not None and password is not None:
diff --git a/0046-Fix-1839494-Application-crashes-on-changing-icons-ht.patch b/0046-Fix-1839494-Application-crashes-on-changing-icons-ht.patch
deleted file mode 100644
index 35a30a4..0000000
--- a/0046-Fix-1839494-Application-crashes-on-changing-icons-ht.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-From ca70f1f214e54aa6f9a173fb2c28be6f13497341 Mon Sep 17 00:00:00 2001
-From: Kovid Goyal <kovid(a)kovidgoyal.net>
-Date: Thu, 8 Aug 2019 22:29:03 +0530
-Subject: [PATCH 46/71] Fix #1839494 [Application crashes on changing
- icons](https://bugs.launchpad.net/calibre/+bug/1839494)
-
----
- src/calibre/gui2/icon_theme.py | 7 ++++++-
- 1 file changed, 6 insertions(+), 1 deletion(-)
-
-diff --git a/src/calibre/gui2/icon_theme.py b/src/calibre/gui2/icon_theme.py
-index d898561244..c987cb8c81 100644
---- a/src/calibre/gui2/icon_theme.py
-+++ b/src/calibre/gui2/icon_theme.py
-@@ -18,6 +18,10 @@ from PyQt5.Qt import (
- QGridLayout, QStyledItemDelegate, QApplication, QStaticText,
- QStyle, QPen, QProgressDialog
- )
-+try:
-+ from PyQt5 import sip
-+except ImportError:
-+ import sip
-
- from calibre import walk, fit_image, human_readable, detect_ncpus as cpu_count
- from calibre.constants import cache_dir, config_dir
-@@ -689,7 +693,8 @@ class ChooseTheme(Dialog):
- import traceback
- self.themes = traceback.format_exc()
- t.join()
-- self.themes_downloaded.emit()
-+ if not sip.isdeleted(self):
-+ self.themes_downloaded.emit()
-
- def show_themes(self):
- self.end_spinner()
diff --git a/0047-HTMLZ-Output-Fix-svg-content-from-HTML-files-that-co.patch b/0047-HTMLZ-Output-Fix-svg-content-from-HTML-files-that-co.patch
deleted file mode 100644
index a9d0e26..0000000
--- a/0047-HTMLZ-Output-Fix-svg-content-from-HTML-files-that-co.patch
+++ /dev/null
@@ -1,61 +0,0 @@
-From 19c70a64821baeecaeab089faeec9d51871a51a8 Mon Sep 17 00:00:00 2001
-From: Kovid Goyal <kovid(a)kovidgoyal.net>
-Date: Fri, 9 Aug 2019 15:57:18 +0530
-Subject: [PATCH 47/71] HTMLZ Output: Fix svg content from HTML files that
- contain only SVG being removed. Fixes #1839522 [all images wrapped in <svg>
- element are lost in htmlz
- output](https://bugs.launchpad.net/calibre/+bug/1839522)
-
----
- src/calibre/ebooks/htmlz/oeb2html.py | 14 +++++++-------
- 1 file changed, 7 insertions(+), 7 deletions(-)
-
-diff --git a/src/calibre/ebooks/htmlz/oeb2html.py b/src/calibre/ebooks/htmlz/oeb2html.py
-index 39d45e0690..96847238d6 100644
---- a/src/calibre/ebooks/htmlz/oeb2html.py
-+++ b/src/calibre/ebooks/htmlz/oeb2html.py
-@@ -18,7 +18,7 @@ from lxml import html
-
- from calibre import prepare_string_for_xml
- from calibre.ebooks.oeb.base import (
-- XHTML, XHTML_NS, barename, namespace, OEB_IMAGES, XLINK, rewrite_links, urlnormalize)
-+ XHTML, XHTML_NS, SVG_NS, barename, namespace, OEB_IMAGES, XLINK, rewrite_links, urlnormalize)
- from calibre.ebooks.oeb.stylizer import Stylizer
- from calibre.utils.logging import default_log
- from polyglot.builtins import unicode_type, string_or_bytes, as_bytes
-@@ -160,9 +160,9 @@ class OEB2HTMLNoCSSizer(OEB2HTML):
-
- # We can only processes tags. If there isn't a tag return any text.
- if not isinstance(elem.tag, string_or_bytes) \
-- or namespace(elem.tag) != XHTML_NS:
-+ or namespace(elem.tag) not in (XHTML_NS, SVG_NS):
- p = elem.getparent()
-- if p is not None and isinstance(p.tag, string_or_bytes) and namespace(p.tag) == XHTML_NS \
-+ if p is not None and isinstance(p.tag, string_or_bytes) and namespace(p.tag) in (XHTML_NS, SVG_NS) \
- and elem.tail:
- return [elem.tail]
- return ['']
-@@ -249,9 +249,9 @@ class OEB2HTMLInlineCSSizer(OEB2HTML):
-
- # We can only processes tags. If there isn't a tag return any text.
- if not isinstance(elem.tag, string_or_bytes) \
-- or namespace(elem.tag) != XHTML_NS:
-+ or namespace(elem.tag) not in (XHTML_NS, SVG_NS):
- p = elem.getparent()
-- if p is not None and isinstance(p.tag, string_or_bytes) and namespace(p.tag) == XHTML_NS \
-+ if p is not None and isinstance(p.tag, string_or_bytes) and namespace(p.tag) in (XHTML_NS, SVG_NS) \
- and elem.tail:
- return [elem.tail]
- return ['']
-@@ -352,9 +352,9 @@ class OEB2HTMLClassCSSizer(OEB2HTML):
-
- # We can only processes tags. If there isn't a tag return any text.
- if not isinstance(elem.tag, string_or_bytes) \
-- or namespace(elem.tag) != XHTML_NS:
-+ or namespace(elem.tag) not in (XHTML_NS, SVG_NS):
- p = elem.getparent()
-- if p is not None and isinstance(p.tag, string_or_bytes) and namespace(p.tag) == XHTML_NS \
-+ if p is not None and isinstance(p.tag, string_or_bytes) and namespace(p.tag) in (XHTML_NS, SVG_NS) \
- and elem.tail:
- return [elem.tail]
- return ['']
diff --git a/0048-PML-Input-Modernize-the-generated-HTML-a-bit.-Fixes-.patch b/0048-PML-Input-Modernize-the-generated-HTML-a-bit.-Fixes-.patch
deleted file mode 100644
index 49ef507..0000000
--- a/0048-PML-Input-Modernize-the-generated-HTML-a-bit.-Fixes-.patch
+++ /dev/null
@@ -1,62 +0,0 @@
-From 31e74d82f85e1b4a5d2aca813dd571cc14fe15b1 Mon Sep 17 00:00:00 2001
-From: Kovid Goyal <kovid(a)kovidgoyal.net>
-Date: Sat, 10 Aug 2019 07:15:35 +0530
-Subject: [PATCH 48/71] PML Input: Modernize the generated HTML a bit. Fixes
- #1839689 [Some PML conversions cause FlightCrew
- errors](https://bugs.launchpad.net/calibre/+bug/1839689)
-
----
- .../ebooks/conversion/plugins/pml_input.py | 20 +++++++++++++++++++
- src/calibre/ebooks/pml/pmlconverter.py | 4 ++--
- 2 files changed, 22 insertions(+), 2 deletions(-)
-
-diff --git a/src/calibre/ebooks/conversion/plugins/pml_input.py b/src/calibre/ebooks/conversion/plugins/pml_input.py
-index 31809ab659..927b7747df 100644
---- a/src/calibre/ebooks/conversion/plugins/pml_input.py
-+++ b/src/calibre/ebooks/conversion/plugins/pml_input.py
-@@ -143,3 +143,23 @@ class PMLInput(InputFormatPlugin):
- opf.render(opffile, tocfile, 'toc.ncx')
-
- return os.path.join(getcwd(), 'metadata.opf')
-+
-+ def postprocess_book(self, oeb, opts, log):
-+ from calibre.ebooks.oeb.base import XHTML, barename
-+ for item in oeb.spine:
-+ if hasattr(item.data, 'xpath'):
-+ for heading in item.data.iterdescendants(*map(XHTML, 'h1 h2 h3 h4 h5 h6'.split())):
-+ if not len(heading):
-+ continue
-+ span = heading[0]
-+ if not heading.text and not span.text and not len(span) and barename(span.tag) == 'span':
-+ if not heading.get('id') and span.get('id'):
-+ heading.set('id', span.get('id'))
-+ heading.text = span.tail
-+ heading.remove(span)
-+ if len(heading) == 1 and heading[0].get('style') == 'text-align: center; margin: auto;':
-+ div = heading[0]
-+ if barename(div.tag) == 'div' and not len(div) and not div.get('id') and not heading.get('style'):
-+ heading.text = (heading.text or '') + (div.text or '') + (div.tail or '')
-+ heading.remove(div)
-+ heading.set('style', 'text-align: center')
-diff --git a/src/calibre/ebooks/pml/pmlconverter.py b/src/calibre/ebooks/pml/pmlconverter.py
-index 4bef9a306b..23ee41ba07 100644
---- a/src/calibre/ebooks/pml/pmlconverter.py
-+++ b/src/calibre/ebooks/pml/pmlconverter.py
-@@ -220,7 +220,7 @@ class PML_HTMLizer(object):
- return html
-
- def cleanup_html_remove_redundant(self, html):
-- for key in self.STATES_TAGS.keys():
-+ for key in self.STATES_TAGS:
- open, close = self.STATES_TAGS[key]
- if key in self.STATES_VALUE_REQ:
- html = re.sub(r'(?u)%s\s*%s' % (open % '.*?', close), '', html)
-@@ -618,7 +618,7 @@ class PML_HTMLizer(object):
- pass
- elif c == 'w':
- empty = False
-- text = '<hr width="%s" />' % self.code_value(line)
-+ text = '<hr style="width: %s" />' % self.code_value(line)
- elif c == 't':
- indent_state['t'] = not indent_state['t']
- elif c == 'T':
diff --git a/0049-Cleanup.patch b/0049-Cleanup.patch
deleted file mode 100644
index b271130..0000000
--- a/0049-Cleanup.patch
+++ /dev/null
@@ -1,66 +0,0 @@
-From 735daa7492c9e30a550c9da6800ea504fec70463 Mon Sep 17 00:00:00 2001
-From: Kovid Goyal <kovid(a)kovidgoyal.net>
-Date: Sat, 10 Aug 2019 11:47:10 +0530
-Subject: [PATCH 49/71] Cleanup
-
----
- src/calibre/gui2/device.py | 16 ++++++++--------
- 1 file changed, 8 insertions(+), 8 deletions(-)
-
-diff --git a/src/calibre/gui2/device.py b/src/calibre/gui2/device.py
-index c7f96e46c0..bd0ba2e47d 100644
---- a/src/calibre/gui2/device.py
-+++ b/src/calibre/gui2/device.py
-@@ -1393,20 +1393,20 @@ class DeviceMixin(object): # {{{
- del_on_upload = config['delete_news_from_library_on_upload']
- settings = self.device_manager.device.settings()
- ids = list(self.news_to_be_synced) if send_ids is None else send_ids
-- ids = [id for id in ids if self.library_view.model().db.has_id(id)]
-+ ids = [book_id for book_id in ids if self.library_view.model().db.has_id(book_id)]
- with BusyCursor():
- files, _auto_ids = self.library_view.model().get_preferred_formats_from_ids(
- ids, settings.format_map,
- exclude_auto=do_auto_convert)
- auto = []
- if do_auto_convert and _auto_ids:
-- for id in _auto_ids:
-- dbfmts = self.library_view.model().db.formats(id, index_is_id=True)
-+ for book_id in _auto_ids:
-+ dbfmts = self.library_view.model().db.formats(book_id, index_is_id=True)
- formats = [] if dbfmts is None else \
- [f.lower() for f in dbfmts.split(',')]
- if set(formats).intersection(available_input_formats()) \
- and set(settings.format_map).intersection(available_output_formats()):
-- auto.append(id)
-+ auto.append(book_id)
- if auto:
- format = None
- for fmt in settings.format_map:
-@@ -1414,7 +1414,7 @@ class DeviceMixin(object): # {{{
- format = fmt
- break
- if format is not None:
-- autos = [self.library_view.model().db.title(id, index_is_id=True) for id in auto]
-+ autos = [self.library_view.model().db.title(book_id, index_is_id=True) for book_id in auto]
- if self.auto_convert_question(
- _('Auto convert the following books before uploading to '
- 'the device?'), autos):
-@@ -1425,15 +1425,15 @@ class DeviceMixin(object): # {{{
- return
- metadata = self.library_view.model().metadata_for(ids)
- names = []
-- for mi in metadata:
-+ for book_id, mi in zip(ids, metadata):
- prefix = ascii_filename(mi.title)
- if not isinstance(prefix, unicode_type):
- prefix = prefix.decode(preferred_encoding, 'replace')
- prefix = ascii_filename(prefix)
-- names.append('%s_%d%s'%(prefix, id,
-+ names.append('%s_%d%s'%(prefix, book_id,
- os.path.splitext(files[-1])[1]))
- self.update_thumbnail(mi)
-- self.news_to_be_synced = set([])
-+ self.news_to_be_synced = set()
- if config['upload_news_to_device'] and files:
- remove = ids if del_on_upload else []
- space = {self.location_manager.free[0] : None,
diff --git a/0050-Workaround-for-weird-PyQt-return-with-error-set-in-t.patch b/0050-Workaround-for-weird-PyQt-return-with-error-set-in-t.patch
deleted file mode 100644
index 90c7969..0000000
--- a/0050-Workaround-for-weird-PyQt-return-with-error-set-in-t.patch
+++ /dev/null
@@ -1,384 +0,0 @@
-From 465a7d6829b26a7cf4df95ffc9ef940ef2b3fae2 Mon Sep 17 00:00:00 2001
-From: Kovid Goyal <kovid(a)kovidgoyal.net>
-Date: Sat, 10 Aug 2019 13:05:36 +0530
-Subject: [PATCH 50/71] Workaround for weird PyQt return with error set in the
- conversion dialog
-
-Probably a regression in the latest version of PyQt, but rather than
-track it down, easier to just get rid of the .ui file anyway.
----
- src/calibre/gui2/convert/single.py | 107 +++++++++++++-
- src/calibre/gui2/convert/single.ui | 221 -----------------------------
- 2 files changed, 103 insertions(+), 225 deletions(-)
- delete mode 100644 src/calibre/gui2/convert/single.ui
-
-diff --git a/src/calibre/gui2/convert/single.py b/src/calibre/gui2/convert/single.py
-index 56290963c5..eff4cf2ca0 100644
---- a/src/calibre/gui2/convert/single.py
-+++ b/src/calibre/gui2/convert/single.py
-@@ -8,12 +8,15 @@ __docformat__ = 'restructuredtext en'
-
- import shutil
-
--from PyQt5.Qt import QAbstractListModel, Qt, QFont, QModelIndex, QDialog, QCoreApplication, QSize
-+from PyQt5.Qt import (
-+ QAbstractListModel, Qt, QFont, QModelIndex, QDialog, QCoreApplication,
-+ QSize, QDialogButtonBox, QGridLayout, QHBoxLayout, QCheckBox, QLabel,
-+ QIcon, QComboBox, QListView, QSizePolicy, QSpacerItem, QStackedWidget,
-+ QVBoxLayout, QFrame, QWidget, QTextEdit, QScrollArea, QRect)
-
- from calibre.gui2 import gprefs
- from calibre.ebooks.conversion.config import (
- GuiRecommendations, save_specifics, sort_formats_by_preference, get_input_format_for_book, get_output_formats)
--from calibre.gui2.convert.single_ui import Ui_Dialog
- from calibre.gui2.convert.metadata import MetadataWidget
- from calibre.gui2.convert.look_and_feel import LookAndFeelWidget
- from calibre.gui2.convert.heuristics import HeuristicsWidget
-@@ -56,7 +59,7 @@ class GroupModel(QAbstractListModel):
- return None
-
-
--class Config(QDialog, Ui_Dialog):
-+class Config(QDialog):
- '''
- Configuration dialog for single book conversion. If accepted, has the
- following important attributes
-@@ -72,7 +75,7 @@ class Config(QDialog, Ui_Dialog):
- def __init__(self, parent, db, book_id,
- preferred_input_format=None, preferred_output_format=None):
- QDialog.__init__(self, parent)
-- self.setupUi(self)
-+ self.setupUi()
- self.opt_individual_saved_settings.setVisible(False)
- self.db, self.book_id = db, book_id
-
-@@ -96,6 +99,102 @@ class Config(QDialog, Ui_Dialog):
- else:
- self.resize(self.sizeHint())
-
-+ def setupUi(self):
-+ self.setObjectName("Dialog")
-+ self.resize(1024, 700)
-+ self.setWindowIcon(QIcon(I('convert.png')))
-+ self.gridLayout = QGridLayout(self)
-+ self.gridLayout.setObjectName("gridLayout")
-+ self.horizontalLayout = QHBoxLayout()
-+ self.horizontalLayout.setObjectName("horizontalLayout")
-+ self.input_label = QLabel(self)
-+ self.input_label.setObjectName("input_label")
-+ self.horizontalLayout.addWidget(self.input_label)
-+ self.input_formats = QComboBox(self)
-+ self.input_formats.setSizeAdjustPolicy(QComboBox.AdjustToMinimumContentsLengthWithIcon)
-+ self.input_formats.setMinimumContentsLength(5)
-+ self.input_formats.setObjectName("input_formats")
-+ self.horizontalLayout.addWidget(self.input_formats)
-+ self.opt_individual_saved_settings = QCheckBox(self)
-+ self.opt_individual_saved_settings.setObjectName("opt_individual_saved_settings")
-+ self.horizontalLayout.addWidget(self.opt_individual_saved_settings)
-+ spacerItem = QSpacerItem(40, 20, QSizePolicy.Expanding, QSizePolicy.Minimum)
-+ self.horizontalLayout.addItem(spacerItem)
-+ self.label_2 = QLabel(self)
-+ self.label_2.setObjectName("label_2")
-+ self.horizontalLayout.addWidget(self.label_2)
-+ self.output_formats = QComboBox(self)
-+ self.output_formats.setSizeAdjustPolicy(QComboBox.AdjustToMinimumContentsLengthWithIcon)
-+ self.output_formats.setMinimumContentsLength(5)
-+ self.output_formats.setObjectName("output_formats")
-+ self.horizontalLayout.addWidget(self.output_formats)
-+ self.gridLayout.addLayout(self.horizontalLayout, 0, 0, 1, 2)
-+ self.groups = QListView(self)
-+ sizePolicy = QSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding)
-+ sizePolicy.setHorizontalStretch(1)
-+ sizePolicy.setVerticalStretch(0)
-+ sizePolicy.setHeightForWidth(self.groups.sizePolicy().hasHeightForWidth())
-+ self.groups.setSizePolicy(sizePolicy)
-+ self.groups.setTabKeyNavigation(True)
-+ self.groups.setIconSize(QSize(48, 48))
-+ self.groups.setWordWrap(True)
-+ self.groups.setObjectName("groups")
-+ self.gridLayout.addWidget(self.groups, 1, 0, 3, 1)
-+ self.scrollArea = QScrollArea(self)
-+ sizePolicy = QSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding)
-+ sizePolicy.setHorizontalStretch(4)
-+ sizePolicy.setVerticalStretch(10)
-+ sizePolicy.setHeightForWidth(self.scrollArea.sizePolicy().hasHeightForWidth())
-+ self.scrollArea.setSizePolicy(sizePolicy)
-+ self.scrollArea.setFrameShape(QFrame.NoFrame)
-+ self.scrollArea.setLineWidth(0)
-+ self.scrollArea.setWidgetResizable(True)
-+ self.scrollArea.setObjectName("scrollArea")
-+ self.scrollAreaWidgetContents = QWidget()
-+ self.scrollAreaWidgetContents.setGeometry(QRect(0, 0, 810, 494))
-+ self.scrollAreaWidgetContents.setObjectName("scrollAreaWidgetContents")
-+ self.verticalLayout_3 = QVBoxLayout(self.scrollAreaWidgetContents)
-+ self.verticalLayout_3.setContentsMargins(0, 0, 0, 0)
-+ self.verticalLayout_3.setObjectName("verticalLayout_3")
-+ self.stack = QStackedWidget(self.scrollAreaWidgetContents)
-+ sizePolicy = QSizePolicy(QSizePolicy.Preferred, QSizePolicy.Preferred)
-+ sizePolicy.setHorizontalStretch(0)
-+ sizePolicy.setVerticalStretch(0)
-+ sizePolicy.setHeightForWidth(self.stack.sizePolicy().hasHeightForWidth())
-+ self.stack.setSizePolicy(sizePolicy)
-+ self.stack.setObjectName("stack")
-+ self.page = QWidget()
-+ self.page.setObjectName("page")
-+ self.stack.addWidget(self.page)
-+ self.page_2 = QWidget()
-+ self.page_2.setObjectName("page_2")
-+ self.stack.addWidget(self.page_2)
-+ self.verticalLayout_3.addWidget(self.stack)
-+ self.scrollArea.setWidget(self.scrollAreaWidgetContents)
-+ self.gridLayout.addWidget(self.scrollArea, 1, 1, 1, 1)
-+ self.buttonBox = QDialogButtonBox(self)
-+ self.buttonBox.setOrientation(Qt.Horizontal)
-+ self.buttonBox.setStandardButtons(QDialogButtonBox.Cancel|QDialogButtonBox.Ok|QDialogButtonBox.RestoreDefaults)
-+ self.buttonBox.setObjectName("buttonBox")
-+ self.gridLayout.addWidget(self.buttonBox, 3, 1, 1, 1)
-+ self.help = QTextEdit(self)
-+ sizePolicy = QSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding)
-+ sizePolicy.setHorizontalStretch(0)
-+ sizePolicy.setVerticalStretch(0)
-+ sizePolicy.setHeightForWidth(self.help.sizePolicy().hasHeightForWidth())
-+ self.help.setSizePolicy(sizePolicy)
-+ self.help.setMaximumSize(QSize(16777215, 130))
-+ self.help.setObjectName("help")
-+ self.gridLayout.addWidget(self.help, 2, 1, 1, 1)
-+ self.input_label.setBuddy(self.input_formats)
-+ self.label_2.setBuddy(self.output_formats)
-+ self.input_label.setText(_("&Input format:"))
-+ self.opt_individual_saved_settings.setText(_("Use &saved conversion settings for individual books"))
-+ self.label_2.setText(_("&Output format:"))
-+
-+ self.buttonBox.accepted.connect(self.accept)
-+ self.buttonBox.rejected.connect(self.reject)
-+
- def sizeHint(self):
- desktop = QCoreApplication.instance().desktop()
- geom = desktop.availableGeometry(self)
-diff --git a/src/calibre/gui2/convert/single.ui b/src/calibre/gui2/convert/single.ui
-deleted file mode 100644
-index bb447104d8..0000000000
---- a/src/calibre/gui2/convert/single.ui
-+++ /dev/null
-@@ -1,221 +0,0 @@
--<?xml version="1.0" encoding="UTF-8"?>
--<ui version="4.0">
-- <class>Dialog</class>
-- <widget class="QDialog" name="Dialog">
-- <property name="geometry">
-- <rect>
-- <x>0</x>
-- <y>0</y>
-- <width>1024</width>
-- <height>700</height>
-- </rect>
-- </property>
-- <property name="windowTitle">
-- <string>Dialog</string>
-- </property>
-- <property name="windowIcon">
-- <iconset resource="../../../../resources/images.qrc">
-- <normaloff>:/images/convert.png</normaloff>:/images/convert.png</iconset>
-- </property>
-- <layout class="QGridLayout" name="gridLayout">
-- <item row="0" column="0" colspan="2">
-- <layout class="QHBoxLayout" name="horizontalLayout">
-- <item>
-- <widget class="QLabel" name="input_label">
-- <property name="text">
-- <string>&Input format:</string>
-- </property>
-- <property name="buddy">
-- <cstring>input_formats</cstring>
-- </property>
-- </widget>
-- </item>
-- <item>
-- <widget class="QComboBox" name="input_formats">
-- <property name="sizeAdjustPolicy">
-- <enum>QComboBox::AdjustToMinimumContentsLengthWithIcon</enum>
-- </property>
-- <property name="minimumContentsLength">
-- <number>5</number>
-- </property>
-- </widget>
-- </item>
-- <item>
-- <widget class="QCheckBox" name="opt_individual_saved_settings">
-- <property name="text">
-- <string>Use &saved conversion settings for individual books</string>
-- </property>
-- </widget>
-- </item>
-- <item>
-- <spacer name="horizontalSpacer">
-- <property name="orientation">
-- <enum>Qt::Horizontal</enum>
-- </property>
-- <property name="sizeHint" stdset="0">
-- <size>
-- <width>40</width>
-- <height>20</height>
-- </size>
-- </property>
-- </spacer>
-- </item>
-- <item>
-- <widget class="QLabel" name="label_2">
-- <property name="text">
-- <string>&Output format:</string>
-- </property>
-- <property name="buddy">
-- <cstring>output_formats</cstring>
-- </property>
-- </widget>
-- </item>
-- <item>
-- <widget class="QComboBox" name="output_formats">
-- <property name="sizeAdjustPolicy">
-- <enum>QComboBox::AdjustToMinimumContentsLengthWithIcon</enum>
-- </property>
-- <property name="minimumContentsLength">
-- <number>5</number>
-- </property>
-- </widget>
-- </item>
-- </layout>
-- </item>
-- <item row="1" column="0" rowspan="3">
-- <widget class="QListView" name="groups">
-- <property name="sizePolicy">
-- <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
-- <horstretch>1</horstretch>
-- <verstretch>0</verstretch>
-- </sizepolicy>
-- </property>
-- <property name="tabKeyNavigation">
-- <bool>true</bool>
-- </property>
-- <property name="iconSize">
-- <size>
-- <width>48</width>
-- <height>48</height>
-- </size>
-- </property>
-- <property name="spacing">
-- <number>10</number>
-- </property>
-- <property name="wordWrap">
-- <bool>true</bool>
-- </property>
-- </widget>
-- </item>
-- <item row="1" column="1">
-- <widget class="QScrollArea" name="scrollArea">
-- <property name="sizePolicy">
-- <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
-- <horstretch>4</horstretch>
-- <verstretch>10</verstretch>
-- </sizepolicy>
-- </property>
-- <property name="frameShape">
-- <enum>QFrame::NoFrame</enum>
-- </property>
-- <property name="lineWidth">
-- <number>0</number>
-- </property>
-- <property name="widgetResizable">
-- <bool>true</bool>
-- </property>
-- <widget class="QWidget" name="scrollAreaWidgetContents">
-- <property name="geometry">
-- <rect>
-- <x>0</x>
-- <y>0</y>
-- <width>810</width>
-- <height>494</height>
-- </rect>
-- </property>
-- <layout class="QVBoxLayout" name="verticalLayout_3">
-- <property name="margin">
-- <number>0</number>
-- </property>
-- <item>
-- <widget class="QStackedWidget" name="stack">
-- <property name="sizePolicy">
-- <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
-- <horstretch>0</horstretch>
-- <verstretch>0</verstretch>
-- </sizepolicy>
-- </property>
-- <widget class="QWidget" name="page"/>
-- <widget class="QWidget" name="page_2"/>
-- </widget>
-- </item>
-- </layout>
-- </widget>
-- </widget>
-- </item>
-- <item row="3" column="1">
-- <widget class="QDialogButtonBox" name="buttonBox">
-- <property name="orientation">
-- <enum>Qt::Horizontal</enum>
-- </property>
-- <property name="standardButtons">
-- <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok|QDialogButtonBox::RestoreDefaults</set>
-- </property>
-- </widget>
-- </item>
-- <item row="2" column="1">
-- <widget class="QTextEdit" name="help">
-- <property name="sizePolicy">
-- <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
-- <horstretch>0</horstretch>
-- <verstretch>0</verstretch>
-- </sizepolicy>
-- </property>
-- <property name="maximumSize">
-- <size>
-- <width>16777215</width>
-- <height>130</height>
-- </size>
-- </property>
-- </widget>
-- </item>
-- </layout>
-- </widget>
-- <resources>
-- <include location="../../../../resources/images.qrc"/>
-- </resources>
-- <connections>
-- <connection>
-- <sender>buttonBox</sender>
-- <signal>accepted()</signal>
-- <receiver>Dialog</receiver>
-- <slot>accept()</slot>
-- <hints>
-- <hint type="sourcelabel">
-- <x>248</x>
-- <y>254</y>
-- </hint>
-- <hint type="destinationlabel">
-- <x>157</x>
-- <y>274</y>
-- </hint>
-- </hints>
-- </connection>
-- <connection>
-- <sender>buttonBox</sender>
-- <signal>rejected()</signal>
-- <receiver>Dialog</receiver>
-- <slot>reject()</slot>
-- <hints>
-- <hint type="sourcelabel">
-- <x>316</x>
-- <y>260</y>
-- </hint>
-- <hint type="destinationlabel">
-- <x>286</x>
-- <y>274</y>
-- </hint>
-- </hints>
-- </connection>
-- </connections>
--</ui>
diff --git a/0051-py3-more-future-imports.patch b/0051-py3-more-future-imports.patch
deleted file mode 100644
index c35c7a0..0000000
--- a/0051-py3-more-future-imports.patch
+++ /dev/null
@@ -1,160 +0,0 @@
-From bd2bab65d246bde867438b958243991c569e21b6 Mon Sep 17 00:00:00 2001
-From: Kovid Goyal <kovid(a)kovidgoyal.net>
-Date: Sat, 10 Aug 2019 13:25:22 +0530
-Subject: [PATCH 51/71] py3: more future imports
-
----
- src/calibre/gui2/convert/single.py | 42 ++++++++++++++----------------
- src/calibre/gui2/main.py | 20 +++++++-------
- 2 files changed, 30 insertions(+), 32 deletions(-)
-
-diff --git a/src/calibre/gui2/convert/single.py b/src/calibre/gui2/convert/single.py
-index eff4cf2ca0..c3db4fff35 100644
---- a/src/calibre/gui2/convert/single.py
-+++ b/src/calibre/gui2/convert/single.py
-@@ -1,37 +1,35 @@
- #!/usr/bin/env python2
- # vim:fileencoding=UTF-8:ts=4:sw=4:sta:et:sts=4:ai
--from __future__ import with_statement
-+# License: GPLv3 Copyright: 2009, Kovid Goyal <kovid at kovidgoyal.net>
-
--__license__ = 'GPL v3'
--__copyright__ = '2009, Kovid Goyal <kovid(a)kovidgoyal.net>'
--__docformat__ = 'restructuredtext en'
-+from __future__ import absolute_import, division, print_function, unicode_literals
-
- import shutil
-
- from PyQt5.Qt import (
-- QAbstractListModel, Qt, QFont, QModelIndex, QDialog, QCoreApplication,
-- QSize, QDialogButtonBox, QGridLayout, QHBoxLayout, QCheckBox, QLabel,
-- QIcon, QComboBox, QListView, QSizePolicy, QSpacerItem, QStackedWidget,
-- QVBoxLayout, QFrame, QWidget, QTextEdit, QScrollArea, QRect)
-+ QAbstractListModel, QCheckBox, QComboBox, QCoreApplication, QDialog,
-+ QDialogButtonBox, QFont, QFrame, QGridLayout, QHBoxLayout, QIcon, QLabel,
-+ QListView, QModelIndex, QRect, QScrollArea, QSize, QSizePolicy, QSpacerItem,
-+ QStackedWidget, Qt, QTextEdit, QVBoxLayout, QWidget
-+)
-
--from calibre.gui2 import gprefs
-+from calibre.customize.conversion import OptionRecommendation
- from calibre.ebooks.conversion.config import (
-- GuiRecommendations, save_specifics, sort_formats_by_preference, get_input_format_for_book, get_output_formats)
--from calibre.gui2.convert.metadata import MetadataWidget
--from calibre.gui2.convert.look_and_feel import LookAndFeelWidget
-+ GuiRecommendations, delete_specifics, get_input_format_for_book,
-+ get_output_formats, save_specifics, sort_formats_by_preference
-+)
-+from calibre.ebooks.conversion.plumber import create_dummy_plumber
-+from calibre.gui2 import gprefs
-+from calibre.gui2.convert.debug import DebugWidget
- from calibre.gui2.convert.heuristics import HeuristicsWidget
--from calibre.gui2.convert.search_and_replace import SearchAndReplaceWidget
-+from calibre.gui2.convert.look_and_feel import LookAndFeelWidget
-+from calibre.gui2.convert.metadata import MetadataWidget
- from calibre.gui2.convert.page_setup import PageSetupWidget
-+from calibre.gui2.convert.search_and_replace import SearchAndReplaceWidget
- from calibre.gui2.convert.structure_detection import StructureDetectionWidget
- from calibre.gui2.convert.toc import TOCWidget
--from calibre.gui2.convert.debug import DebugWidget
--
--
--from calibre.ebooks.conversion.plumber import create_dummy_plumber
--from calibre.ebooks.conversion.config import delete_specifics
--from calibre.customize.conversion import OptionRecommendation
- from calibre.utils.config import prefs
--from polyglot.builtins import unicode_type, range
-+from polyglot.builtins import native_string_type, range, unicode_type
-
-
- class GroupModel(QAbstractListModel):
-@@ -83,8 +81,8 @@ class Config(QDialog):
- preferred_output_format)
- self.setup_pipeline()
-
-- self.input_formats.currentIndexChanged[str].connect(self.setup_pipeline)
-- self.output_formats.currentIndexChanged[str].connect(self.setup_pipeline)
-+ self.input_formats.currentIndexChanged[native_string_type].connect(self.setup_pipeline)
-+ self.output_formats.currentIndexChanged[native_string_type].connect(self.setup_pipeline)
- self.groups.setSpacing(5)
- self.groups.activated[(QModelIndex)].connect(self.show_pane)
- self.groups.clicked[(QModelIndex)].connect(self.show_pane)
-diff --git a/src/calibre/gui2/main.py b/src/calibre/gui2/main.py
-index bf82c6b8ab..9ee5b2d9bc 100644
---- a/src/calibre/gui2/main.py
-+++ b/src/calibre/gui2/main.py
-@@ -1,7 +1,7 @@
- #!/usr/bin/env python2
- # vim:fileencoding=utf-8
- # License: GPLv3 Copyright: 2015, Kovid Goyal <kovid at kovidgoyal.net>
--from __future__ import print_function
-+from __future__ import absolute_import, division, print_function, unicode_literals
-
- import os
- import re
-@@ -28,7 +28,7 @@ from calibre.utils.config import dynamic, prefs
- from calibre.utils.ipc import RC, gui_socket_address
- from calibre.utils.lock import singleinstance
- from calibre.utils.monotonic import monotonic
--from polyglot.builtins import unicode_type, range, environ_item
-+from polyglot.builtins import as_bytes, environ_item, range, unicode_type
-
- if iswindows:
- winutil = plugins['winutil'][0]
-@@ -71,9 +71,9 @@ def find_portable_library():
- return
- import glob
- candidates = [os.path.basename(os.path.dirname(x)) for x in glob.glob(
-- os.path.join(base, u'*%smetadata.db'%os.sep))]
-+ os.path.join(base, '*%smetadata.db'%os.sep))]
- if not candidates:
-- candidates = [u'Calibre Library']
-+ candidates = ['Calibre Library']
- lp = prefs['library_path']
- if not lp:
- lib = os.path.join(base, candidates[0])
-@@ -134,13 +134,13 @@ def get_default_library_path():
- if isinstance(fname, unicode_type):
- try:
- fname.encode(filesystem_encoding)
-- except:
-+ except Exception:
- fname = 'Calibre Library'
- x = os.path.expanduser('~'+os.sep+fname)
- if not os.path.exists(x):
- try:
- os.makedirs(x)
-- except:
-+ except Exception:
- x = os.path.expanduser('~')
- return x
-
-@@ -360,8 +360,8 @@ def run_in_debug_mode():
- os.close(fd)
- os.environ['CALIBRE_RESTARTING_FROM_GUI'] = environ_item('1')
- run_calibre_debug(
-- '--gui-debug', logpath, stdout=lopen(logpath, 'w'),
-- stderr=subprocess.STDOUT, stdin=lopen(os.devnull, 'r'))
-+ '--gui-debug', logpath, stdout=lopen(logpath, 'wb'),
-+ stderr=subprocess.STDOUT, stdin=lopen(os.devnull, 'rb'))
-
-
- def shellquote(s):
-@@ -478,7 +478,7 @@ def shutdown_other(rc=None):
- if rc.conn is None:
- prints(_('No running calibre found'))
- return # No running instance found
-- rc.conn.send('shutdown:')
-+ rc.conn.send(b'shutdown:')
- prints(_('Shutdown command sent, waiting for shutdown...'))
- for i in range(50):
- if singleinstance(singleinstance_name):
-@@ -496,7 +496,7 @@ def communicate(opts, args):
- if len(args) > 1:
- args[1:] = [os.path.abspath(x) if os.path.exists(x) else x for x in args[1:]]
- import json
-- t.conn.send('launched:'+json.dumps(args))
-+ t.conn.send(b'launched:'+as_bytes(json.dumps(args)))
- t.conn.close()
- raise SystemExit(0)
-
diff --git a/0052-py3-Another-fix.patch b/0052-py3-Another-fix.patch
deleted file mode 100644
index ba8dabb..0000000
--- a/0052-py3-Another-fix.patch
+++ /dev/null
@@ -1,22 +0,0 @@
-From dd55ad4f0e02a156eb4cafc265fa2f779df08cf3 Mon Sep 17 00:00:00 2001
-From: Kovid Goyal <kovid(a)kovidgoyal.net>
-Date: Sat, 10 Aug 2019 13:29:58 +0530
-Subject: [PATCH 52/71] py3: Another fix
-
----
- src/calibre/gui2/ui.py | 2 ++
- 1 file changed, 2 insertions(+)
-
-diff --git a/src/calibre/gui2/ui.py b/src/calibre/gui2/ui.py
-index f9cb245a6d..deee2c7da2 100644
---- a/src/calibre/gui2/ui.py
-+++ b/src/calibre/gui2/ui.py
-@@ -626,6 +626,8 @@ class Main(MainWindow, MainWindowMixin, DeviceMixin, EmailMixin, # {{{
- msg = self.listener.queue.get_nowait()
- except Empty:
- return
-+ if isinstance(msg, bytes):
-+ msg = msg.decode('utf-8', 'replace')
- if msg.startswith('launched:'):
- import json
- try:
diff --git a/0053-Fix-1028-Fix-podofo-convert-pystring-to-PdfString-bu.patch b/0053-Fix-1028-Fix-podofo-convert-pystring-to-PdfString-bu.patch
deleted file mode 100644
index 0fe0798..0000000
--- a/0053-Fix-1028-Fix-podofo-convert-pystring-to-PdfString-bu.patch
+++ /dev/null
@@ -1,24 +0,0 @@
-From f8df2c374aee94814fabf4685120ae90872a8141 Mon Sep 17 00:00:00 2001
-From: Kovid Goyal <kovid(a)kovidgoyal.net>
-Date: Sat, 10 Aug 2019 19:34:11 +0530
-Subject: [PATCH 53/71] Fix #1028 ( Fix podofo convert pystring to PdfString
- bug )
-
----
- src/calibre/utils/podofo/utils.cpp | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
-
-diff --git a/src/calibre/utils/podofo/utils.cpp b/src/calibre/utils/podofo/utils.cpp
-index 830fc5052e..ff2a9e6718 100644
---- a/src/calibre/utils/podofo/utils.cpp
-+++ b/src/calibre/utils/podofo/utils.cpp
-@@ -31,7 +31,8 @@ pdf::podofo_convert_pdfstring(const PdfString &s) {
- const PdfString
- pdf::podofo_convert_pystring(PyObject *val) {
- #if PY_MAJOR_VERSION > 2
-- return s(reinterpret_cast<const pdf_utf8*>(PyUnicode_AsUTF8(val)));
-+ PdfString s(reinterpret_cast<const pdf_utf8*>(PyUnicode_AsUTF8(val)));
-+ return s;
- #else
- PyObject *temp = PyUnicode_AsUTF8String(val);
- if (!temp) throw std::bad_alloc();
diff --git a/0054-.patch b/0054-.patch
deleted file mode 100644
index 04227b5..0000000
--- a/0054-.patch
+++ /dev/null
@@ -1,23 +0,0 @@
-From 694bd3bd99f6a13a95c0b6e19da3dddb61cd5cdd Mon Sep 17 00:00:00 2001
-From: Kovid Goyal <kovid(a)kovidgoyal.net>
-Date: Sat, 10 Aug 2019 22:12:53 +0530
-Subject: [PATCH 54/71] ...
-
----
- src/calibre/utils/podofo/utils.cpp | 3 +--
- 1 file changed, 1 insertion(+), 2 deletions(-)
-
-diff --git a/src/calibre/utils/podofo/utils.cpp b/src/calibre/utils/podofo/utils.cpp
-index ff2a9e6718..ff83bef39c 100644
---- a/src/calibre/utils/podofo/utils.cpp
-+++ b/src/calibre/utils/podofo/utils.cpp
-@@ -31,8 +31,7 @@ pdf::podofo_convert_pdfstring(const PdfString &s) {
- const PdfString
- pdf::podofo_convert_pystring(PyObject *val) {
- #if PY_MAJOR_VERSION > 2
-- PdfString s(reinterpret_cast<const pdf_utf8*>(PyUnicode_AsUTF8(val)));
-- return s;
-+ return PdfString(reinterpret_cast<const pdf_utf8*>(PyUnicode_AsUTF8(val)));
- #else
- PyObject *temp = PyUnicode_AsUTF8String(val);
- if (!temp) throw std::bad_alloc();
diff --git a/0055-EPUB-3-Fix-setting-metadata-in-EPUB-3-files-with-a-t.patch b/0055-EPUB-3-Fix-setting-metadata-in-EPUB-3-files-with-a-t.patch
deleted file mode 100644
index f66104e..0000000
--- a/0055-EPUB-3-Fix-setting-metadata-in-EPUB-3-files-with-a-t.patch
+++ /dev/null
@@ -1,23 +0,0 @@
-From aacfcaae35f22eb458eb3ac8477f016784d24cbb Mon Sep 17 00:00:00 2001
-From: Kovid Goyal <kovid(a)kovidgoyal.net>
-Date: Sat, 10 Aug 2019 22:15:36 +0530
-Subject: [PATCH 55/71] EPUB 3: Fix setting metadata in EPUB 3 files with a
- title not working
-
----
- src/calibre/ebooks/metadata/opf3.py | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/calibre/ebooks/metadata/opf3.py b/src/calibre/ebooks/metadata/opf3.py
-index 043207cd9d..47ecbba785 100644
---- a/src/calibre/ebooks/metadata/opf3.py
-+++ b/src/calibre/ebooks/metadata/opf3.py
-@@ -382,7 +382,7 @@ def set_title(root, prefixes, refines, title, title_sort=None):
- main_title = find_main_title(root, refines, remove_blanks=True)
- if main_title is None:
- m = XPath('./opf:metadata')(root)[0]
-- main_title = m.makeelement('dc:title')
-+ main_title = m.makeelement(DC('title'))
- m.insert(0, main_title)
- main_title.text = title or None
- ts = [refdef('file-as', title_sort)] if title_sort else ()
diff --git a/0056-Speed-up-restoring-original-format-by-doing-a-rename.patch b/0056-Speed-up-restoring-original-format-by-doing-a-rename.patch
deleted file mode 100644
index 867492c..0000000
--- a/0056-Speed-up-restoring-original-format-by-doing-a-rename.patch
+++ /dev/null
@@ -1,95 +0,0 @@
-From 3a6ff39aef0d08211f4c8945f1db60f31b1aec97 Mon Sep 17 00:00:00 2001
-From: Kovid Goyal <kovid(a)kovidgoyal.net>
-Date: Sun, 11 Aug 2019 19:23:50 +0530
-Subject: [PATCH 56/71] Speed up restoring original format by doing a rename
- rather than a copy and re-add. Fixes #1839733 [Restore pre conversion
- originals very slow](https://bugs.launchpad.net/calibre/+bug/1839733)
-
----
- src/calibre/db/backend.py | 10 ++++++++++
- src/calibre/db/cache.py | 20 +++++++++++++-------
- src/calibre/db/tests/legacy.py | 14 --------------
- 3 files changed, 23 insertions(+), 21 deletions(-)
-
-diff --git a/src/calibre/db/backend.py b/src/calibre/db/backend.py
-index 9e5ae66f1e..b7719d925f 100644
---- a/src/calibre/db/backend.py
-+++ b/src/calibre/db/backend.py
-@@ -1341,6 +1341,16 @@ class DB(object):
- def has_format(self, book_id, fmt, fname, path):
- return self.format_abspath(book_id, fmt, fname, path) is not None
-
-+ def is_format_accessible(self, book_id, fmt, fname, path):
-+ fpath = self.format_abspath(book_id, fmt, fname, path)
-+ return fpath and os.access(fpath, os.R_OK | os.W_OK)
-+
-+ def rename_format_file(self, book_id, src_fname, src_fmt, dest_fname, dest_fmt, path):
-+ src_path = self.format_abspath(book_id, src_fmt, src_fname, path)
-+ dest_path = self.format_abspath(book_id, dest_fmt, dest_fname, path)
-+ atomic_rename(src_path, dest_path)
-+ return os.path.getsize(dest_path)
-+
- def remove_formats(self, remove_map):
- paths = []
- for book_id, removals in iteritems(remove_map):
-diff --git a/src/calibre/db/cache.py b/src/calibre/db/cache.py
-index e17787412c..11e02d083b 100644
---- a/src/calibre/db/cache.py
-+++ b/src/calibre/db/cache.py
-@@ -795,18 +795,24 @@ class Cache(object):
- nfmt = 'ORIGINAL_'+fmt
- return self.add_format(book_id, nfmt, fmtfile, run_hooks=False)
-
-- @api
-+ @write_api
- def restore_original_format(self, book_id, original_fmt):
- ''' Restore the specified format from the previously saved
- ORIGINAL_FORMAT, if any. Return True on success. The ORIGINAL_FORMAT is
- deleted after a successful restore. '''
- original_fmt = original_fmt.upper()
-- fmtfile = self.format(book_id, original_fmt, as_file=True)
-- if fmtfile is not None:
-- fmt = original_fmt.partition('_')[2]
-- with fmtfile:
-- self.add_format(book_id, fmt, fmtfile, run_hooks=False)
-- self.remove_formats({book_id:(original_fmt,)})
-+ fmt = original_fmt.partition('_')[2]
-+ try:
-+ ofmt_name = self.fields['formats'].format_fname(book_id, original_fmt)
-+ path = self._field_for('path', book_id).replace('/', os.sep)
-+ except Exception:
-+ return False
-+ if self.backend.is_format_accessible(book_id, original_fmt, ofmt_name, path):
-+ self.add_format(book_id, fmt, BytesIO(), run_hooks=False)
-+ fmt_name = self.fields['formats'].format_fname(book_id, fmt)
-+ file_size = self.backend.rename_format_file(book_id, ofmt_name, original_fmt, fmt_name, fmt, path)
-+ self.fields['formats'].table.update_fmt(book_id, fmt, fmt_name, file_size, self.backend)
-+ self._remove_formats({book_id:(original_fmt,)})
- return True
- return False
-
-diff --git a/src/calibre/db/tests/legacy.py b/src/calibre/db/tests/legacy.py
-index 6394c02fe1..bfe9cf61a3 100644
---- a/src/calibre/db/tests/legacy.py
-+++ b/src/calibre/db/tests/legacy.py
-@@ -793,20 +793,6 @@ class LegacyTest(BaseTest):
- self.assertEqual(ndb.new_api.field_for('#series_index', 1), 9)
- # }}}
-
-- def test_legacy_original_fmt(self): # {{{
-- db, ndb = self.init_old(), self.init_legacy()
-- run_funcs(self, db, ndb, (
-- ('original_fmt', 1, 'FMT1'),
-- ('save_original_format', 1, 'FMT1'),
-- ('original_fmt', 1, 'FMT1'),
-- ('restore_original_format', 1, 'ORIGINAL_FMT1'),
-- ('original_fmt', 1, 'FMT1'),
-- ('%formats', 1, True),
-- ))
-- db.close()
--
-- # }}}
--
- def test_legacy_saved_search(self): # {{{
- ' Test legacy saved search API '
- db, ndb = self.init_old(), self.init_legacy()
diff --git a/0057-Support-Dublin-Core-id-tags-when-importing-HTML.patch b/0057-Support-Dublin-Core-id-tags-when-importing-HTML.patch
deleted file mode 100644
index b2e4ed1..0000000
--- a/0057-Support-Dublin-Core-id-tags-when-importing-HTML.patch
+++ /dev/null
@@ -1,71 +0,0 @@
-From 3f4f1738e9f5a08b4e3ce0157dab14f30e608f82 Mon Sep 17 00:00:00 2001
-From: Christopher Szucko <cszucko(a)gmail.com>
-Date: Fri, 9 Aug 2019 08:54:26 -0500
-Subject: [PATCH 57/71] Support Dublin Core id tags when importing HTML
-
-All of the below formats are supported and would be interpreted as "foo:bar"
-<meta name="DC.identifier" scheme="foo" content="bar" />
-<meta name="dc:identifier.foo" content="bar/>
-<meta name="DCTERMS:identifier" scheme="foo" content="bar" />
-<meta name="dcterms.identifier.foo" content="bar" />
----
- src/calibre/ebooks/metadata/html.py | 27 +++++++++++++++++++++++++++
- 1 file changed, 27 insertions(+)
-
-diff --git a/src/calibre/ebooks/metadata/html.py b/src/calibre/ebooks/metadata/html.py
-index 49ce83df63..3f0aefaadf 100644
---- a/src/calibre/ebooks/metadata/html.py
-+++ b/src/calibre/ebooks/metadata/html.py
-@@ -10,6 +10,8 @@ Try to read metadata from an HTML file.
-
- import re
-
-+from HTMLParser import HTMLParser
-+
- from calibre.ebooks.metadata import string_to_authors
- from calibre.ebooks.metadata.book.base import Metadata
- from calibre.ebooks.chardet import xml_to_unicode
-@@ -87,6 +89,26 @@ def parse_meta_tags(src):
- return ans
- return ans
-
-+def parse_meta_tag_identifiers(src):
-+ meta_identifiers = {}
-+
-+ class MetadataParser(HTMLParser):
-+ def handle_starttag(self, tag, attrs):
-+ attr_dict = dict(attrs)
-+
-+ if tag == 'meta' and re.match(r'(?:dc|dcterms)[\.:]identifier', attr_dict.get('name', ''), flags=re.IGNORECASE):
-+ content = attr_dict.get('content', '').strip()
-+ scheme = attr_dict.get('scheme', '').strip()
-+ if not scheme:
-+ elements = re.split(r'[\.:]', attr_dict['name'])
-+ if len(elements) == 3:
-+ scheme = elements[2]
-+ if content and scheme:
-+ meta_identifiers[scheme.lower()] = replace_entities(content)
-+
-+ MetadataParser().feed(src)
-+
-+ return meta_identifiers
-
- def parse_comment_tags(src):
- all_names = '|'.join(itervalues(COMMENT_NAMES))
-@@ -113,6 +135,7 @@ def get_metadata_(src, encoding=None):
- src = src[:150000] # Searching shouldn't take too long
- comment_tags = parse_comment_tags(src)
- meta_tags = parse_meta_tags(src)
-+ meta_tag_ids = parse_meta_tag_identifiers(src)
-
- def get(field):
- ans = comment_tags.get(field, meta_tags.get(field, None))
-@@ -193,4 +216,8 @@ def get_metadata_(src, encoding=None):
- if tags:
- mi.tags = tags
-
-+ # IDENTIFIERS
-+ for (k,v) in meta_tag_ids.iteritems():
-+ mi.set_identifier(k, v)
-+
- return mi
diff --git a/0058-Refactor-HTML-metadata-parsing.patch b/0058-Refactor-HTML-metadata-parsing.patch
deleted file mode 100644
index 109059a..0000000
--- a/0058-Refactor-HTML-metadata-parsing.patch
+++ /dev/null
@@ -1,269 +0,0 @@
-From 82b599666771cfadebd9b34b49a7570ad1bea870 Mon Sep 17 00:00:00 2001
-From: Christopher Szucko <cszucko(a)gmail.com>
-Date: Sat, 10 Aug 2019 09:56:31 -0500
-Subject: [PATCH 58/71] Refactor HTML metadata parsing
-
-Use an HTMLParser rather than regex, only parse the document once, and add handling for multiple values for authors, tags, and languages
----
- src/calibre/ebooks/metadata/html.py | 184 ++++++++++++++++------------
- 1 file changed, 105 insertions(+), 79 deletions(-)
-
-diff --git a/src/calibre/ebooks/metadata/html.py b/src/calibre/ebooks/metadata/html.py
-index 3f0aefaadf..b8b86d4c19 100644
---- a/src/calibre/ebooks/metadata/html.py
-+++ b/src/calibre/ebooks/metadata/html.py
-@@ -10,9 +10,10 @@ Try to read metadata from an HTML file.
-
- import re
-
-+from collections import defaultdict
- from HTMLParser import HTMLParser
-
--from calibre.ebooks.metadata import string_to_authors
-+from calibre.ebooks.metadata import string_to_authors, authors_to_string
- from calibre.ebooks.metadata.book.base import Metadata
- from calibre.ebooks.chardet import xml_to_unicode
- from calibre import replace_entities, isbytestring
-@@ -30,7 +31,7 @@ COMMENT_NAMES = {
- 'authors': 'AUTHOR',
- 'publisher': 'PUBLISHER',
- 'isbn': 'ISBN',
-- 'language': 'LANGUAGE',
-+ 'languages': 'LANGUAGE',
- 'pubdate': 'PUBDATE',
- 'timestamp': 'TIMESTAMP',
- 'series': 'SERIES',
-@@ -44,8 +45,8 @@ META_NAMES = {
- 'title' : ('dc.title', 'dcterms.title', 'title'),
- 'authors': ('author', 'dc.creator.aut', 'dcterms.creator.aut', 'dc.creator'),
- 'publisher': ('publisher', 'dc.publisher', 'dcterms.publisher'),
-- 'isbn': ('isbn', 'dc.identifier.isbn', 'dcterms.identifier.isbn'),
-- 'language': ('dc.language', 'dcterms.language'),
-+ 'isbn': ('isbn',),
-+ 'languages': ('dc.language', 'dcterms.language'),
- 'pubdate': ('pubdate', 'date of publication', 'dc.date.published', 'dc.date.publication', 'dc.date.issued', 'dcterms.issued'),
- 'timestamp': ('timestamp', 'date of creation', 'dc.date.created', 'dc.date.creation', 'dcterms.created'),
- 'series': ('series',),
-@@ -59,69 +60,85 @@ META_NAMES = {
- # single quotes inside double quotes and vice versa.
- attr_pat = r'''(?:(?P<sq>')|(?P<dq>"))(?P<content>(?(sq)[^']+|[^"]+))(?(sq)'|")'''
-
--
--def parse_meta_tags(src):
-- rmap = {}
-- for field, names in iteritems(META_NAMES):
-- for name in names:
-- rmap[name.lower()] = field
-- all_names = '|'.join(rmap)
-- ans = {}
-- npat = r'''name\s*=\s*['"]{0,1}(?P<name>%s)['"]{0,1}''' % all_names
-- cpat = r'content\s*=\s*%s' % attr_pat
-- for pat in (
-- r'<meta\s+%s\s+%s' % (npat, cpat),
-- r'<meta\s+%s\s+%s' % (cpat, npat),
-- ):
-- for match in re.finditer(pat, src, flags=re.IGNORECASE):
-- x = match.group('name').lower()
-- try:
-- field = rmap[x]
-- except KeyError:
-- try:
-- field = rmap[x.replace(':', '.')]
-- except KeyError:
-- continue
--
-- if field not in ans:
-- ans[field] = replace_entities(match.group('content'))
-- if len(ans) == len(META_NAMES):
-- return ans
-- return ans
--
--def parse_meta_tag_identifiers(src):
-- meta_identifiers = {}
--
-+def parse_metadata(src):
- class MetadataParser(HTMLParser):
-+ def __init__(self):
-+ self.comment_tags = defaultdict(list)
-+ self.meta_tag_ids = defaultdict(list)
-+ self.meta_tags = defaultdict(list)
-+ self.title_tag = ''
-+
-+ self.recording = False
-+ self.recorded = []
-+
-+ self.rmap_comment = {v:k for k, v in iteritems(COMMENT_NAMES)}
-+ self.rmap_meta = {v:k for k, l in iteritems(META_NAMES) for v in l}
-+
-+ HTMLParser.__init__(self)
-+
- def handle_starttag(self, tag, attrs):
- attr_dict = dict(attrs)
-
-- if tag == 'meta' and re.match(r'(?:dc|dcterms)[\.:]identifier', attr_dict.get('name', ''), flags=re.IGNORECASE):
-- content = attr_dict.get('content', '').strip()
-- scheme = attr_dict.get('scheme', '').strip()
-- if not scheme:
-- elements = re.split(r'[\.:]', attr_dict['name'])
-+ if tag == 'title':
-+ self.recording = True
-+ self.recorded = []
-+
-+ elif tag == 'meta' and re.match(r'(?:dc|dcterms)[.:]identifier(?:\.|$)', attr_dict.get('name', ''), flags=re.IGNORECASE):
-+ scheme = None
-+ if re.match(r'(?:dc|dcterms)[.:]identifier$', attr_dict.get('name', ''), flags=re.IGNORECASE):
-+ scheme = attr_dict.get('scheme', '').strip()
-+ elif 'scheme' not in attr_dict:
-+ elements = re.split(r'[.:]', attr_dict['name'])
- if len(elements) == 3:
-- scheme = elements[2]
-- if content and scheme:
-- meta_identifiers[scheme.lower()] = replace_entities(content)
--
-- MetadataParser().feed(src)
--
-- return meta_identifiers
--
--def parse_comment_tags(src):
-- all_names = '|'.join(itervalues(COMMENT_NAMES))
-- rmap = {v:k for k, v in iteritems(COMMENT_NAMES)}
-- ans = {}
-- for match in re.finditer(r'''<!--\s*(?P<name>%s)\s*=\s*%s''' % (all_names, attr_pat), src):
-- field = rmap[match.group('name')]
-- if field not in ans:
-- ans[field] = replace_entities(match.group('content'))
-- if len(ans) == len(COMMENT_NAMES):
-- break
-- return ans
-+ scheme = elements[2].strip()
-+ if scheme:
-+ self.meta_tag_ids[scheme.lower()].append(attr_dict.get('content', ''))
-
-+ elif tag == 'meta':
-+ x = attr_dict.get('name', '').lower()
-+ field = None
-+ try:
-+ field = self.rmap_meta[x]
-+ except KeyError:
-+ try:
-+ field = self.rmap_meta[x.replace(':', '.')]
-+ except KeyError:
-+ pass
-+ if field:
-+ self.meta_tags[field].append(attr_dict.get('content', ''))
-+
-+ def handle_data(self, data):
-+ if self.recording:
-+ self.recorded.append(data)
-+
-+ def handle_charref(self, ref):
-+ if self.recording:
-+ self.recorded.append(replace_entities("&#%s;" % ref))
-+
-+ def handle_entityref(self, ref):
-+ if self.recording:
-+ self.recorded.append(replace_entities("&%s;" % ref))
-+
-+ def handle_endtag(self, tag):
-+ if tag == 'title':
-+ self.recording = False
-+ self.title_tag = ''.join(self.recorded)
-+
-+ def handle_comment(self, data):
-+ for match in re.finditer(r'''(?P<name>\S+)\s*=\s*%s''' % (attr_pat), data):
-+ x = match.group('name')
-+ field = None
-+ try:
-+ field = self.rmap_comment[x]
-+ except KeyError:
-+ pass
-+ if field:
-+ self.comment_tags[field].append(replace_entities(match.group('content')))
-+
-+ parser = MetadataParser()
-+ parser.feed(src)
-+
-+ return (parser.comment_tags, parser.meta_tags, parser.meta_tag_ids, parser.title_tag)
-
- def get_metadata_(src, encoding=None):
- # Meta data definitions as in
-@@ -133,37 +150,44 @@ def get_metadata_(src, encoding=None):
- else:
- src = src.decode(encoding, 'replace')
- src = src[:150000] # Searching shouldn't take too long
-- comment_tags = parse_comment_tags(src)
-- meta_tags = parse_meta_tags(src)
-- meta_tag_ids = parse_meta_tag_identifiers(src)
-+ (comment_tags, meta_tags, meta_tag_ids, title_tag) = parse_metadata(src)
-
-- def get(field):
-+ def get_all(field):
- ans = comment_tags.get(field, meta_tags.get(field, None))
- if ans:
-- ans = ans.strip()
-+ ans = [x.strip() for x in ans if x.strip()]
- if not ans:
- ans = None
- return ans
-
-+ def get(field):
-+ ans = get_all(field)
-+ if ans:
-+ ans = ans[0]
-+ return ans
-+
- # Title
-- title = get('title')
-- if not title:
-- pat = re.compile('<title>([^<>]+?)</title>', re.IGNORECASE)
-- match = pat.search(src)
-- if match:
-- title = replace_entities(match.group(1))
-+ title = get('title') or title_tag.strip() or _('Unknown')
-
- # Author
-- authors = get('authors') or _('Unknown')
-+ authors = authors_to_string(get_all('authors')) or _('Unknown')
-
- # Create MetaInformation with Title and Author
-- mi = Metadata(title or _('Unknown'), string_to_authors(authors))
-+ mi = Metadata(title, string_to_authors(authors))
-
-- for field in ('publisher', 'isbn', 'language', 'comments'):
-+ # Single-value text fields
-+ for field in ('publisher', 'isbn', 'comments'):
- val = get(field)
- if val:
- setattr(mi, field, val)
-
-+ # Multi-value text fields
-+ for field in ('languages',):
-+ val = get_all(field)
-+ if val:
-+ setattr(mi, field, val)
-+
-+ # Date fields
- for field in ('pubdate', 'timestamp'):
- try:
- val = parse_date(get(field))
-@@ -210,14 +234,16 @@ def get_metadata_(src, encoding=None):
- pass
-
- # TAGS
-- tags = get('tags')
-+ tags = get_all('tags')
- if tags:
-- tags = [x.strip() for x in tags.split(',') if x.strip()]
-+ tags = [x.strip() for s in tags for x in s.split(',') if x.strip()]
- if tags:
- mi.tags = tags
-
- # IDENTIFIERS
-- for (k,v) in meta_tag_ids.iteritems():
-- mi.set_identifier(k, v)
-+ for (k,v) in iteritems(meta_tag_ids):
-+ v = [x.strip() for x in v if x.strip()]
-+ if v:
-+ mi.set_identifier(k, v[0])
-
- return mi
diff --git a/0059-Fix-importing-ratings-from-HTML-metadata.patch b/0059-Fix-importing-ratings-from-HTML-metadata.patch
deleted file mode 100644
index 842fbfc..0000000
--- a/0059-Fix-importing-ratings-from-HTML-metadata.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-From 7b900143bb95e5efdff7bb5e835d8ec53d8f29f9 Mon Sep 17 00:00:00 2001
-From: Christopher Szucko <cszucko(a)gmail.com>
-Date: Sat, 10 Aug 2019 10:03:40 -0500
-Subject: [PATCH 59/71] Fix importing ratings from HTML metadata
-
-The HTML import was assuming ratings were out of 5 but the internal representation is out of 10
----
- src/calibre/ebooks/metadata/html.py | 4 +---
- 1 file changed, 1 insertion(+), 3 deletions(-)
-
-diff --git a/src/calibre/ebooks/metadata/html.py b/src/calibre/ebooks/metadata/html.py
-index b8b86d4c19..222afa83ea 100644
---- a/src/calibre/ebooks/metadata/html.py
-+++ b/src/calibre/ebooks/metadata/html.py
-@@ -226,9 +226,7 @@ def get_metadata_(src, encoding=None):
- mi.rating = float(rating)
- if mi.rating < 0:
- mi.rating = 0
-- if mi.rating > 5:
-- mi.rating /= 2.
-- if mi.rating > 5:
-+ if mi.rating > 10:
- mi.rating = 0
- except:
- pass
diff --git a/0060-Escape-HTML-entities-in-comments.patch b/0060-Escape-HTML-entities-in-comments.patch
deleted file mode 100644
index c9b5d3d..0000000
--- a/0060-Escape-HTML-entities-in-comments.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-From 8cc933a02b8db309976e314caedfac0037a5f118 Mon Sep 17 00:00:00 2001
-From: Christopher Szucko <cszucko(a)gmail.com>
-Date: Sat, 10 Aug 2019 21:09:03 -0500
-Subject: [PATCH 60/71] Escape HTML entities in comments
-
----
- src/calibre/ebooks/metadata/html.py | 8 +++++++-
- 1 file changed, 7 insertions(+), 1 deletion(-)
-
-diff --git a/src/calibre/ebooks/metadata/html.py b/src/calibre/ebooks/metadata/html.py
-index 222afa83ea..dad218ae19 100644
---- a/src/calibre/ebooks/metadata/html.py
-+++ b/src/calibre/ebooks/metadata/html.py
-@@ -176,7 +176,7 @@ def get_metadata_(src, encoding=None):
- mi = Metadata(title, string_to_authors(authors))
-
- # Single-value text fields
-- for field in ('publisher', 'isbn', 'comments'):
-+ for field in ('publisher', 'isbn'):
- val = get(field)
- if val:
- setattr(mi, field, val)
-@@ -187,6 +187,12 @@ def get_metadata_(src, encoding=None):
- if val:
- setattr(mi, field, val)
-
-+ # HTML fields
-+ for field in ('comments',):
-+ val = get(field)
-+ if val:
-+ setattr(mi, field, val.replace('&', '&').replace('<', '<').replace('>', '>').replace('"', '"').replace("'", '''))
-+
- # Date fields
- for field in ('pubdate', 'timestamp'):
- try:
diff --git a/0061-Add-unit-tests-for-HTML-metadata-imports.patch b/0061-Add-unit-tests-for-HTML-metadata-imports.patch
deleted file mode 100644
index 2448ff0..0000000
--- a/0061-Add-unit-tests-for-HTML-metadata-imports.patch
+++ /dev/null
@@ -1,206 +0,0 @@
-From 8e2bed5343cc5ac47485c94b09aa0b9d43d76d5c Mon Sep 17 00:00:00 2001
-From: Christopher Szucko <cszucko(a)gmail.com>
-Date: Sun, 11 Aug 2019 09:30:35 -0500
-Subject: [PATCH 61/71] Add unit tests for HTML metadata imports
-
----
- src/calibre/ebooks/metadata/html.py | 182 ++++++++++++++++++++++++++++
- 1 file changed, 182 insertions(+)
-
-diff --git a/src/calibre/ebooks/metadata/html.py b/src/calibre/ebooks/metadata/html.py
-index dad218ae19..c6d4693baf 100644
---- a/src/calibre/ebooks/metadata/html.py
-+++ b/src/calibre/ebooks/metadata/html.py
-@@ -9,6 +9,7 @@ Try to read metadata from an HTML file.
- '''
-
- import re
-+import unittest
-
- from collections import defaultdict
- from HTMLParser import HTMLParser
-@@ -251,3 +252,184 @@ def get_metadata_(src, encoding=None):
- mi.set_identifier(k, v[0])
-
- return mi
-+
-+
-+class MetadataHtmlTest(unittest.TestCase):
-+
-+ def compare_metadata(self, meta_a, meta_b):
-+ for attr in ('title', 'authors', 'publisher', 'isbn', 'languages', 'pubdate', 'timestamp', 'series', 'series_index', 'rating', 'comments', 'tags', 'identifiers'):
-+ self.assertEqual(getattr(meta_a, attr), getattr(meta_b, attr))
-+
-+ def get_stream(self, test):
-+ from io import BytesIO
-+
-+ raw = b'''\
-+<html>
-+ <head>
-+'''
-+
-+ if test in {'title', 'meta_single', 'meta_multi', 'comment_single', 'comment_multi'}:
-+ raw += b'''\
-+ }
-+ <title>A Title Tag &amp; Title Ⓒ</title>
-+'''
-+
-+ if test in {'meta_single', 'meta_multi', 'comment_single', 'comment_multi'}:
-+ raw += b'''\
-+ <meta name="dc:title" content="A Meta Tag &amp; Title Ⓒ" />
-+ <meta name="dcterms.creator.aut" content="George Washington" />
-+ <meta name="dc.publisher" content="Publisher A" />
-+ <meta name="isbn" content="1234567890" />
-+ <meta name="dc.language" content="English" />
-+ <meta name="dc.date.published" content="2019-01-01" />
-+ <meta name="dcterms.created" content="2018-01-01" />
-+ <meta name="series" content="Meta Series" />
-+ <meta name="seriesnumber" content="1" />
-+ <meta name="rating" content="" />
-+ <meta name="dc.description" content="" />
-+ <meta name="tags" content="tag a, tag b" />
-+ <meta name="dc.identifier.url" content="" />
-+ <meta name="dc.identifier" scheme="" content="invalid" />
-+ <meta name="dc.identifier." content="still invalid" />
-+ <meta name="dc.identifier.conflicting" scheme="schemes" content="are also invalid" />
-+ <meta name="dc.identifier.custom.subid" content="invalid too" />
-+'''
-+
-+ if test in {'meta_multi', 'comment_single', 'comment_multi'}:
-+ raw += b'''\
-+ <meta name="title" content="A Different Meta Tag &amp; Title Ⓒ" />
-+ <meta name="author" content="John Adams with Thomas Jefferson" />
-+ <meta name="publisher" content="Publisher B" />
-+ <meta name="isbn" content="2345678901" />
-+ <meta name="dcterms.language" content="Spanish" />
-+ <meta name="date of publication" content="2017-01-01" />
-+ <meta name="timestamp" content="2016-01-01" />
-+ <meta name="series" content="Another Meta Series" />
-+ <meta name="series.index" content="2" />
-+ <meta name="rating" content="8" />
-+ <meta name="comments" content="meta "comments" ♥ HTML &amp;" />
-+ <meta name="tags" content="tag c" />
-+ <meta name="dc.identifier.url" content="http://google.com/search?q=calibre" />
-+'''
-+
-+ if test in {'comment_single', 'comment_multi'}:
-+ raw += b'''\
-+ <!-- TITLE="A Comment Tag &amp; Title Ⓒ" -->
-+ <!-- AUTHOR="James Madison and James Monroe" -->
-+ <!-- PUBLISHER="Publisher C" -->
-+ <!-- ISBN="3456789012" -->
-+ <!-- LANGUAGE="French" -->
-+ <!-- PUBDATE="2015-01-01" -->
-+ <!-- TIMESTAMP="2014-01-01" -->
-+ <!-- SERIES="Comment Series" -->
-+ <!-- SERIESNUMBER="3" -->
-+ <!-- RATING="20" -->
-+ <!-- COMMENTS="comment "comments" ♥ HTML too &amp;" -->
-+ <!-- TAGS="tag d" -->
-+'''
-+
-+ if test in {'comment_multi'}:
-+ raw += b'''\
-+ <!-- TITLE="Another Comment Tag &amp; Title Ⓒ" -->
-+ <!-- AUTHOR="John Quincy Adams" -->
-+ <!-- PUBLISHER="Publisher D" -->
-+ <!-- ISBN="4567890123" -->
-+ <!-- LANGUAGE="Japanese" -->
-+ <!-- PUBDATE="2013-01-01" -->
-+ <!-- TIMESTAMP="2012-01-01" -->
-+ <!-- SERIES="Comment Series 2" -->
-+ <!-- SERIESNUMBER="4" -->
-+ <!-- RATING="1" -->
-+ <!-- COMMENTS="comment "comments" ♥ HTML too &amp; for sure" -->
-+ <!-- TAGS="tag e, tag f" -->
-+'''
-+
-+ raw += b'''\
-+ </head>
-+ <body>
-+ </body>
-+</html>
-+'''
-+ return BytesIO(raw)
-+
-+
-+ def test_input_title(self):
-+ stream_meta = get_metadata(self.get_stream('title'))
-+ canon_meta = Metadata('A Title Tag & Title ', [_('Unknown')])
-+ self.compare_metadata(stream_meta, canon_meta)
-+
-+
-+ def test_input_meta_single(self):
-+ stream_meta = get_metadata(self.get_stream('meta_single'))
-+ canon_meta = Metadata('A Meta Tag & Title ', ['George Washington'])
-+ canon_meta.publisher = 'Publisher A'
-+ canon_meta.languages = ['English']
-+ canon_meta.pubdate = parse_date('2019-01-01')
-+ canon_meta.timestamp = parse_date('2018-01-01')
-+ canon_meta.series = 'Meta Series'
-+ canon_meta.series_index = float(1)
-+ # canon_meta.rating = float(0)
-+ # canon_meta.comments = ''
-+ canon_meta.tags = ['tag a', 'tag b']
-+ canon_meta.set_identifiers({'isbn': '1234567890'})
-+ self.compare_metadata(stream_meta, canon_meta)
-+
-+
-+ def test_input_meta_multi(self):
-+ stream_meta = get_metadata(self.get_stream('meta_multi'))
-+ canon_meta = Metadata('A Meta Tag & Title ', ['George Washington', 'John Adams', 'Thomas Jefferson'])
-+ canon_meta.publisher = 'Publisher A'
-+ canon_meta.languages = ['English', 'Spanish']
-+ canon_meta.pubdate = parse_date('2019-01-01')
-+ canon_meta.timestamp = parse_date('2018-01-01')
-+ canon_meta.series = 'Meta Series'
-+ canon_meta.series_index = float(1)
-+ canon_meta.rating = float(8)
-+ canon_meta.comments = 'meta "comments" HTML &amp;'
-+ canon_meta.tags = ['tag a', 'tag b', 'tag c']
-+ canon_meta.set_identifiers({'isbn': '1234567890', 'url': 'http://google.com/search?q=calibre'})
-+ self.compare_metadata(stream_meta, canon_meta)
-+
-+
-+ def test_input_comment_single(self):
-+ stream_meta = get_metadata(self.get_stream('comment_single'))
-+ canon_meta = Metadata('A Comment Tag & Title ', ['James Madison', 'James Monroe'])
-+ canon_meta.publisher = 'Publisher C'
-+ canon_meta.languages = ['French']
-+ canon_meta.pubdate = parse_date('2015-01-01')
-+ canon_meta.timestamp = parse_date('2014-01-01')
-+ canon_meta.series = 'Comment Series'
-+ canon_meta.series_index = float(3)
-+ canon_meta.rating = float(0)
-+ canon_meta.comments = 'comment "comments" HTML too &amp;'
-+ canon_meta.tags = ['tag d']
-+ canon_meta.set_identifiers({'isbn': '3456789012', 'url': 'http://google.com/search?q=calibre'})
-+ self.compare_metadata(stream_meta, canon_meta)
-+
-+
-+ def test_input_comment_multi(self):
-+ stream_meta = get_metadata(self.get_stream('comment_multi'))
-+ canon_meta = Metadata('A Comment Tag & Title ', ['James Madison', 'James Monroe', 'John Quincy Adams'])
-+ canon_meta.publisher = 'Publisher C'
-+ canon_meta.languages = ['French', 'Japanese']
-+ canon_meta.pubdate = parse_date('2015-01-01')
-+ canon_meta.timestamp = parse_date('2014-01-01')
-+ canon_meta.series = 'Comment Series'
-+ canon_meta.series_index = float(3)
-+ canon_meta.rating = float(0)
-+ canon_meta.comments = 'comment "comments" HTML too &amp;'
-+ canon_meta.tags = ['tag d', 'tag e', 'tag f']
-+ canon_meta.set_identifiers({'isbn': '3456789012', 'url': 'http://google.com/search?q=calibre'})
-+ self.compare_metadata(stream_meta, canon_meta)
-+
-+
-+def suite():
-+ return unittest.TestLoader().loadTestsFromTestCase(MetadataHtmlTest)
-+
-+
-+def test():
-+ unittest.TextTestRunner(verbosity=2).run(suite())
-+
-+
-+if __name__ == '__main__':
-+ test()
diff --git a/0062-Cleanup-HTML-metadata-parsing.patch b/0062-Cleanup-HTML-metadata-parsing.patch
deleted file mode 100644
index 160f19b..0000000
--- a/0062-Cleanup-HTML-metadata-parsing.patch
+++ /dev/null
@@ -1,300 +0,0 @@
-From 1b01d660b616aeee783ce9169cd9e9a0ac6e5a60 Mon Sep 17 00:00:00 2001
-From: Kovid Goyal <kovid(a)kovidgoyal.net>
-Date: Mon, 12 Aug 2019 10:10:50 +0530
-Subject: [PATCH 62/71] Cleanup HTML metadata parsing
-
----
- setup/test.py | 2 +
- src/calibre/ebooks/metadata/html.py | 167 ++++++++++++----------------
- 2 files changed, 74 insertions(+), 95 deletions(-)
-
-diff --git a/setup/test.py b/setup/test.py
-index 6638dda11d..5d28f4a433 100644
---- a/setup/test.py
-+++ b/setup/test.py
-@@ -110,6 +110,8 @@ def find_tests(which_tests=None):
- if ok('ebooks'):
- from calibre.ebooks.metadata.rtf import find_tests
- a(find_tests())
-+ from calibre.ebooks.metadata.html import find_tests
-+ a(find_tests())
- if ok('misc'):
- from calibre.ebooks.metadata.tag_mapper import find_tests
- a(find_tests())
-diff --git a/src/calibre/ebooks/metadata/html.py b/src/calibre/ebooks/metadata/html.py
-index c6d4693baf..48408bc3a8 100644
---- a/src/calibre/ebooks/metadata/html.py
-+++ b/src/calibre/ebooks/metadata/html.py
-@@ -12,14 +12,15 @@ import re
- import unittest
-
- from collections import defaultdict
--from HTMLParser import HTMLParser
-+from html5_parser import parse
-+from lxml.etree import Comment
-
- from calibre.ebooks.metadata import string_to_authors, authors_to_string
- from calibre.ebooks.metadata.book.base import Metadata
- from calibre.ebooks.chardet import xml_to_unicode
- from calibre import replace_entities, isbytestring
- from calibre.utils.date import parse_date, is_date_undefined
--from polyglot.builtins import iteritems, itervalues
-+from polyglot.builtins import iteritems
-
-
- def get_metadata(stream):
-@@ -56,90 +57,76 @@ META_NAMES = {
- 'comments': ('comments', 'dc.description'),
- 'tags': ('tags',),
- }
-+rmap_comment = {v:k for k, v in iteritems(COMMENT_NAMES)}
-+rmap_meta = {v:k for k, l in iteritems(META_NAMES) for v in l}
-+
-
- # Extract an HTML attribute value, supports both single and double quotes and
- # single quotes inside double quotes and vice versa.
- attr_pat = r'''(?:(?P<sq>')|(?P<dq>"))(?P<content>(?(sq)[^']+|[^"]+))(?(sq)'|")'''
-
-+
-+def handle_comment(data, comment_tags):
-+ if not hasattr(handle_comment, 'pat'):
-+ handle_comment.pat = re.compile(r'''(?P<name>\S+)\s*=\s*%s''' % attr_pat)
-+ for match in handle_comment.pat.finditer(data):
-+ x = match.group('name')
-+ field = None
-+ try:
-+ field = rmap_comment[x]
-+ except KeyError:
-+ pass
-+ if field:
-+ comment_tags[field].append(replace_entities(match.group('content')))
-+
-+
- def parse_metadata(src):
-- class MetadataParser(HTMLParser):
-- def __init__(self):
-- self.comment_tags = defaultdict(list)
-- self.meta_tag_ids = defaultdict(list)
-- self.meta_tags = defaultdict(list)
-- self.title_tag = ''
--
-- self.recording = False
-- self.recorded = []
--
-- self.rmap_comment = {v:k for k, v in iteritems(COMMENT_NAMES)}
-- self.rmap_meta = {v:k for k, l in iteritems(META_NAMES) for v in l}
--
-- HTMLParser.__init__(self)
--
-- def handle_starttag(self, tag, attrs):
-- attr_dict = dict(attrs)
--
-- if tag == 'title':
-- self.recording = True
-- self.recorded = []
--
-- elif tag == 'meta' and re.match(r'(?:dc|dcterms)[.:]identifier(?:\.|$)', attr_dict.get('name', ''), flags=re.IGNORECASE):
-- scheme = None
-- if re.match(r'(?:dc|dcterms)[.:]identifier$', attr_dict.get('name', ''), flags=re.IGNORECASE):
-- scheme = attr_dict.get('scheme', '').strip()
-- elif 'scheme' not in attr_dict:
-- elements = re.split(r'[.:]', attr_dict['name'])
-- if len(elements) == 3:
-- scheme = elements[2].strip()
-- if scheme:
-- self.meta_tag_ids[scheme.lower()].append(attr_dict.get('content', ''))
--
-- elif tag == 'meta':
-- x = attr_dict.get('name', '').lower()
-- field = None
-- try:
-- field = self.rmap_meta[x]
-- except KeyError:
-- try:
-- field = self.rmap_meta[x.replace(':', '.')]
-- except KeyError:
-- pass
-- if field:
-- self.meta_tags[field].append(attr_dict.get('content', ''))
--
-- def handle_data(self, data):
-- if self.recording:
-- self.recorded.append(data)
--
-- def handle_charref(self, ref):
-- if self.recording:
-- self.recorded.append(replace_entities("&#%s;" % ref))
--
-- def handle_entityref(self, ref):
-- if self.recording:
-- self.recorded.append(replace_entities("&%s;" % ref))
--
-- def handle_endtag(self, tag):
-- if tag == 'title':
-- self.recording = False
-- self.title_tag = ''.join(self.recorded)
--
-- def handle_comment(self, data):
-- for match in re.finditer(r'''(?P<name>\S+)\s*=\s*%s''' % (attr_pat), data):
-- x = match.group('name')
-- field = None
-+ root = parse(src)
-+ comment_tags = defaultdict(list)
-+ meta_tags = defaultdict(list)
-+ meta_tag_ids = defaultdict(list)
-+ title = ''
-+ identifier_pat = re.compile(r'(?:dc|dcterms)[.:]identifier(?:\.|$)', flags=re.IGNORECASE)
-+ id_pat2 = re.compile(r'(?:dc|dcterms)[.:]identifier$', flags=re.IGNORECASE)
-+
-+ for comment in root.iterdescendants(tag=Comment):
-+ if comment.text:
-+ handle_comment(comment.text, comment_tags)
-+
-+ for q in root.iterdescendants(tag='title'):
-+ if q.text:
-+ title = q.text
-+ break
-+
-+ for meta in root.iterdescendants(tag='meta'):
-+ name, content = meta.get('name'), meta.get('content')
-+ if not name or not content:
-+ continue
-+ if identifier_pat.match(name) is not None:
-+ scheme = None
-+ if id_pat2.match(name) is not None:
-+ scheme = meta.get('scheme')
-+ else:
-+ elements = re.split(r'[.:]', name)
-+ if len(elements) == 3 and not meta.get('scheme'):
-+ scheme = elements[2].strip()
-+ if scheme:
-+ meta_tag_ids[scheme.lower()].append(content)
-+ else:
-+ x = name.lower()
-+ field = None
-+ try:
-+ field = rmap_meta[x]
-+ except KeyError:
- try:
-- field = self.rmap_comment[x]
-+ field = rmap_meta[x.replace(':', '.')]
- except KeyError:
- pass
-- if field:
-- self.comment_tags[field].append(replace_entities(match.group('content')))
-+ if field:
-+ meta_tags[field].append(content)
-
-- parser = MetadataParser()
-- parser.feed(src)
-+ return comment_tags, meta_tags, meta_tag_ids, title
-
-- return (parser.comment_tags, parser.meta_tags, parser.meta_tag_ids, parser.title_tag)
-
- def get_metadata_(src, encoding=None):
- # Meta data definitions as in
-@@ -151,7 +138,7 @@ def get_metadata_(src, encoding=None):
- else:
- src = src.decode(encoding, 'replace')
- src = src[:150000] # Searching shouldn't take too long
-- (comment_tags, meta_tags, meta_tag_ids, title_tag) = parse_metadata(src)
-+ comment_tags, meta_tags, meta_tag_ids, title_tag = parse_metadata(src)
-
- def get_all(field):
- ans = comment_tags.get(field, meta_tags.get(field, None))
-@@ -257,7 +244,10 @@ def get_metadata_(src, encoding=None):
- class MetadataHtmlTest(unittest.TestCase):
-
- def compare_metadata(self, meta_a, meta_b):
-- for attr in ('title', 'authors', 'publisher', 'isbn', 'languages', 'pubdate', 'timestamp', 'series', 'series_index', 'rating', 'comments', 'tags', 'identifiers'):
-+ for attr in (
-+ 'title', 'authors', 'publisher', 'isbn', 'languages', 'pubdate', 'timestamp', 'series',
-+ 'series_index', 'rating', 'comments', 'tags', 'identifiers'
-+ ):
- self.assertEqual(getattr(meta_a, attr), getattr(meta_b, attr))
-
- def get_stream(self, test):
-@@ -324,7 +314,7 @@ class MetadataHtmlTest(unittest.TestCase):
- <!-- SERIES="Comment Series" -->
- <!-- SERIESNUMBER="3" -->
- <!-- RATING="20" -->
-- <!-- COMMENTS="comment "comments" ♥ HTML too &amp;" -->
-+ <!-- COMMENTS="comment "comments" ♥ HTML -- too &amp;" -->
- <!-- TAGS="tag d" -->
- '''
-
-@@ -340,7 +330,7 @@ class MetadataHtmlTest(unittest.TestCase):
- <!-- SERIES="Comment Series 2" -->
- <!-- SERIESNUMBER="4" -->
- <!-- RATING="1" -->
-- <!-- COMMENTS="comment "comments" ♥ HTML too &amp; for sure" -->
-+ <!-- COMMENTS="comment "comments" ♥ HTML -- too &amp; for sure" -->
- <!-- TAGS="tag e, tag f" -->
- '''
-
-@@ -352,13 +342,11 @@ class MetadataHtmlTest(unittest.TestCase):
- '''
- return BytesIO(raw)
-
--
- def test_input_title(self):
- stream_meta = get_metadata(self.get_stream('title'))
- canon_meta = Metadata('A Title Tag & Title ', [_('Unknown')])
- self.compare_metadata(stream_meta, canon_meta)
-
--
- def test_input_meta_single(self):
- stream_meta = get_metadata(self.get_stream('meta_single'))
- canon_meta = Metadata('A Meta Tag & Title ', ['George Washington'])
-@@ -374,7 +362,6 @@ class MetadataHtmlTest(unittest.TestCase):
- canon_meta.set_identifiers({'isbn': '1234567890'})
- self.compare_metadata(stream_meta, canon_meta)
-
--
- def test_input_meta_multi(self):
- stream_meta = get_metadata(self.get_stream('meta_multi'))
- canon_meta = Metadata('A Meta Tag & Title ', ['George Washington', 'John Adams', 'Thomas Jefferson'])
-@@ -390,7 +377,6 @@ class MetadataHtmlTest(unittest.TestCase):
- canon_meta.set_identifiers({'isbn': '1234567890', 'url': 'http://google.com/search?q=calibre'})
- self.compare_metadata(stream_meta, canon_meta)
-
--
- def test_input_comment_single(self):
- stream_meta = get_metadata(self.get_stream('comment_single'))
- canon_meta = Metadata('A Comment Tag & Title ', ['James Madison', 'James Monroe'])
-@@ -401,12 +387,11 @@ class MetadataHtmlTest(unittest.TestCase):
- canon_meta.series = 'Comment Series'
- canon_meta.series_index = float(3)
- canon_meta.rating = float(0)
-- canon_meta.comments = 'comment "comments" HTML too &amp;'
-+ canon_meta.comments = 'comment "comments" HTML -- too &amp;'
- canon_meta.tags = ['tag d']
- canon_meta.set_identifiers({'isbn': '3456789012', 'url': 'http://google.com/search?q=calibre'})
- self.compare_metadata(stream_meta, canon_meta)
-
--
- def test_input_comment_multi(self):
- stream_meta = get_metadata(self.get_stream('comment_multi'))
- canon_meta = Metadata('A Comment Tag & Title ', ['James Madison', 'James Monroe', 'John Quincy Adams'])
-@@ -417,19 +402,11 @@ class MetadataHtmlTest(unittest.TestCase):
- canon_meta.series = 'Comment Series'
- canon_meta.series_index = float(3)
- canon_meta.rating = float(0)
-- canon_meta.comments = 'comment "comments" HTML too &amp;'
-+ canon_meta.comments = 'comment "comments" HTML -- too &amp;'
- canon_meta.tags = ['tag d', 'tag e', 'tag f']
- canon_meta.set_identifiers({'isbn': '3456789012', 'url': 'http://google.com/search?q=calibre'})
- self.compare_metadata(stream_meta, canon_meta)
-
-
--def suite():
-+def find_tests():
- return unittest.TestLoader().loadTestsFromTestCase(MetadataHtmlTest)
--
--
--def test():
-- unittest.TextTestRunner(verbosity=2).run(suite())
--
--
--if __name__ == '__main__':
-- test()
diff --git a/0063-.patch b/0063-.patch
deleted file mode 100644
index d36572f..0000000
--- a/0063-.patch
+++ /dev/null
@@ -1,38 +0,0 @@
-From 119747b25d4148f6c35e6aef45032ac22f37a7bb Mon Sep 17 00:00:00 2001
-From: Kovid Goyal <kovid(a)kovidgoyal.net>
-Date: Tue, 13 Aug 2019 11:16:41 +0530
-Subject: [PATCH 63/71] ...
-
----
- recipes/wsj.recipe | 3 ++-
- recipes/wsj_free.recipe | 3 ++-
- 2 files changed, 4 insertions(+), 2 deletions(-)
-
-diff --git a/recipes/wsj.recipe b/recipes/wsj.recipe
-index f40f3fedfe..5c13138c4f 100644
---- a/recipes/wsj.recipe
-+++ b/recipes/wsj.recipe
-@@ -114,7 +114,8 @@ def get_browser(self, *a, **kw):
- '_intstate': 'deprecated',
- }
- for k in 'scope connection nonce state ui_locales ns protocol redirect_uri'.split():
-- request_query[k] = query[k]
-+ if k in query:
-+ request_query[k] = query[k]
- login_url = 'https://sso.accounts.dowjones.com/usernamepassword/login'
- # you can get the version below from lib-min.js
- # search for: str: "x.x.x"
-diff --git a/recipes/wsj_free.recipe b/recipes/wsj_free.recipe
-index 25726c0ca3..d9ecde365d 100644
---- a/recipes/wsj_free.recipe
-+++ b/recipes/wsj_free.recipe
-@@ -114,7 +114,8 @@ def get_browser(self, *a, **kw):
- '_intstate': 'deprecated',
- }
- for k in 'scope connection nonce state ui_locales ns protocol redirect_uri'.split():
-- request_query[k] = query[k]
-+ if k in query:
-+ request_query[k] = query[k]
- login_url = 'https://sso.accounts.dowjones.com/usernamepassword/login'
- # you can get the version below from lib-min.js
- # search for: str: "x.x.x"
diff --git a/0064-Update-CNET-News.patch b/0064-Update-CNET-News.patch
deleted file mode 100644
index b606c1d..0000000
--- a/0064-Update-CNET-News.patch
+++ /dev/null
@@ -1,47 +0,0 @@
-From 6642c61ccac00e8255af906f45162b8d223e4ebf Mon Sep 17 00:00:00 2001
-From: Kovid Goyal <kovid(a)kovidgoyal.net>
-Date: Tue, 13 Aug 2019 20:12:36 +0530
-Subject: [PATCH 64/71] Update CNET News
-
----
- recipes/cnetnews.recipe | 12 +++++++++++-
- 1 file changed, 11 insertions(+), 1 deletion(-)
-
-diff --git a/recipes/cnetnews.recipe b/recipes/cnetnews.recipe
-index 3c3ac55f44..a0f9607d12 100644
---- a/recipes/cnetnews.recipe
-+++ b/recipes/cnetnews.recipe
-@@ -18,6 +18,12 @@
- from calibre.web.feeds.news import BasicNewsRecipe
-
-
-+def classes(classes):
-+ q = frozenset(classes.split(' '))
-+ return dict(attrs={
-+ 'class': lambda x: x and frozenset(x.split()).intersection(q)})
-+
-+
- class CnetNews(BasicNewsRecipe):
- title = 'CNET News'
- __author__ = 'Kovid Goyal'
-@@ -44,10 +50,12 @@ class CnetNews(BasicNewsRecipe):
- 'data-component': 'imageGalleryModal'}),
- dict(attrs={'data-component': 'sharebar'}),
- dict(name=['link', 'meta']),
-+ classes('playerControls video share-button'),
- ]
-
- keep_only_tags = [
-- dict(itemprop='headline'),
-+ dict(name='h1'),
-+ dict(section='author'),
- dict(id=["article-body", 'cnetReview']),
- dict(attrs={'class': 'deal-content'}),
- ]
-@@ -89,4 +97,6 @@ def postprocess_html(self, soup, first_fetch):
- h1.extract()
- if first_fetch:
- soup.find('body').insert(1, h1)
-+ for img in soup.findAll('img'):
-+ img['height'] = img['width'] = ''
- return soup
diff --git a/0065-Updated-The-Globe-and-Mail-recipe-article-titles-no-.patch b/0065-Updated-The-Globe-and-Mail-recipe-article-titles-no-.patch
deleted file mode 100644
index fbbd209..0000000
--- a/0065-Updated-The-Globe-and-Mail-recipe-article-titles-no-.patch
+++ /dev/null
@@ -1,50 +0,0 @@
-From af8d024e4380ad66f4bbf3d96e21d42c2304e9e5 Mon Sep 17 00:00:00 2001
-From: josue <josue.salazar(a)sapientrazorfish.com>
-Date: Tue, 13 Aug 2019 21:08:05 -0400
-Subject: [PATCH 65/71] Updated The Globe and Mail recipe: article titles no
- longer include section the article belongs to, added article meta data to
- remove tags because it was taking up almost 1 full page of dummy text, added
- real estate section, updated newspaper name to its proper one
-
----
- recipes/globe_and_mail.recipe | 9 +++++----
- 1 file changed, 5 insertions(+), 4 deletions(-)
-
-diff --git a/recipes/globe_and_mail.recipe b/recipes/globe_and_mail.recipe
-index 35e8d75daf..58f4f3e384 100644
---- a/recipes/globe_and_mail.recipe
-+++ b/recipes/globe_and_mail.recipe
-@@ -18,7 +18,7 @@ def classes(classes):
-
-
- class GlobeMail(BasicNewsRecipe):
-- title = u'Globe & Mail'
-+ title = u'The Globe and Mail'
- __author__ = 'Kovid Goyal'
- encoding = 'utf-8'
- publisher = 'Globe & Mail'
-@@ -32,12 +32,12 @@ class GlobeMail(BasicNewsRecipe):
- dict(name='main', attrs={'class': lambda x: x and 'article-primary-content-chain' in x.split()}),
- ]
- remove_tags = [
-- classes('c-ad pb-f-commercial-dfp-ads pb-f-article-actions'),
-+ classes('c-ad pb-f-commercial-dfp-ads pb-f-article-actions pb-f-article-meta'),
- ]
-
- def parse_index(self):
- ans = []
-- for section in 'canada opinion politics sports life arts world'.split():
-+ for section in 'canada opinion politics sports life arts world real-estate'.split():
- if self.test and len(ans) >= self.test[0]:
- break
- soup = self.index_to_soup('https://www.theglobeandmail.com/{}/'.format(section))
-@@ -49,7 +49,8 @@ def parse_index(self):
-
- def parse_gm_section(self, soup):
- for a in soup.findAll('a', href=True, attrs={'data-lt-lid': lambda x: x and x.startswith('Headline.')}):
-- title = self.tag_to_string(a)
-+ headline = a.find('div', 'c-card__hed-text')
-+ title = self.tag_to_string(headline)
- url = absolutize(a['href'])
- self.log(' ', title, 'at', url)
- yield {'title': title, 'url': url}
diff --git a/0066-change-wording-slightly.patch b/0066-change-wording-slightly.patch
deleted file mode 100644
index 5bbeee3..0000000
--- a/0066-change-wording-slightly.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-From 8d607f58020c23e8938c054123ed4566ce971b56 Mon Sep 17 00:00:00 2001
-From: Kovid Goyal <kovid(a)kovidgoyal.net>
-Date: Wed, 14 Aug 2019 08:50:06 +0530
-Subject: [PATCH 66/71] change wording slightly
-
----
- src/calibre/gui2/preferences/adding.ui | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/src/calibre/gui2/preferences/adding.ui b/src/calibre/gui2/preferences/adding.ui
-index 29bc02ce8f..a1d339ec1b 100644
---- a/src/calibre/gui2/preferences/adding.ui
-+++ b/src/calibre/gui2/preferences/adding.ui
-@@ -125,7 +125,7 @@
- <item row="5" column="0" colspan="2">
- <widget class="QCheckBox" name="opt_manual_add_auto_convert">
- <property name="text">
-- <string>Automatically &convert added books to the current output format</string>
-+ <string>Automatically &convert added books to the preferred output format</string>
- </property>
- </widget>
- </item>
-@@ -338,7 +338,7 @@ that have been explicitly ignored below.</string>
- <item row="4" column="0">
- <widget class="QCheckBox" name="opt_auto_add_auto_convert">
- <property name="text">
-- <string>Automatically &convert added files to the current output format</string>
-+ <string>Automatically &convert added files to the preferred output format</string>
- </property>
- </widget>
- </item>
diff --git a/0067-Complete-fix-for-WSJ-login-logic-change.patch b/0067-Complete-fix-for-WSJ-login-logic-change.patch
deleted file mode 100644
index 3851b32..0000000
--- a/0067-Complete-fix-for-WSJ-login-logic-change.patch
+++ /dev/null
@@ -1,62 +0,0 @@
-From 3939e7dc2adad89c19ed0fcad4063e18162f9b27 Mon Sep 17 00:00:00 2001
-From: Kovid Goyal <kovid(a)kovidgoyal.net>
-Date: Wed, 14 Aug 2019 20:52:07 +0530
-Subject: [PATCH 67/71] Complete fix for WSJ login logic change
-
----
- recipes/wsj.recipe | 8 +++++++-
- recipes/wsj_free.recipe | 8 +++++++-
- 2 files changed, 14 insertions(+), 2 deletions(-)
-
-diff --git a/recipes/wsj.recipe b/recipes/wsj.recipe
-index 5c13138c4f..5e8e6adefc 100644
---- a/recipes/wsj.recipe
-+++ b/recipes/wsj.recipe
-@@ -112,6 +112,7 @@ def get_browser(self, *a, **kw):
- 'sso': 'true',
- 'tenant': 'sso',
- '_intstate': 'deprecated',
-+ 'connection': 'DJldap',
- }
- for k in 'scope connection nonce state ui_locales ns protocol redirect_uri'.split():
- if k in query:
-@@ -135,7 +136,12 @@ def get_browser(self, *a, **kw):
- 'X-Remote-User': self.username
- }, data=request_query)
- self.log('Sending login request...')
-- res = br.open(rq)
-+ try:
-+ res = br.open(rq)
-+ except Exception as err:
-+ if hasattr(err, 'read'):
-+ raise Exception('Login request failed with error: {} and body: {}'.format(err, err.read().decode('utf-8', 'replace')))
-+ raise
- if res.code != 200:
- raise ValueError('Failed to login, check your username and password')
- br.select_form(nr=0)
-diff --git a/recipes/wsj_free.recipe b/recipes/wsj_free.recipe
-index d9ecde365d..62a792b297 100644
---- a/recipes/wsj_free.recipe
-+++ b/recipes/wsj_free.recipe
-@@ -112,6 +112,7 @@ def get_browser(self, *a, **kw):
- 'sso': 'true',
- 'tenant': 'sso',
- '_intstate': 'deprecated',
-+ 'connection': 'DJldap',
- }
- for k in 'scope connection nonce state ui_locales ns protocol redirect_uri'.split():
- if k in query:
-@@ -135,7 +136,12 @@ def get_browser(self, *a, **kw):
- 'X-Remote-User': self.username
- }, data=request_query)
- self.log('Sending login request...')
-- res = br.open(rq)
-+ try:
-+ res = br.open(rq)
-+ except Exception as err:
-+ if hasattr(err, 'read'):
-+ raise Exception('Login request failed with error: {} and body: {}'.format(err, err.read().decode('utf-8', 'replace')))
-+ raise
- if res.code != 200:
- raise ValueError('Failed to login, check your username and password')
- br.select_form(nr=0)
diff --git a/0068-Update-derStandaard.patch b/0068-Update-derStandaard.patch
deleted file mode 100644
index dddbf10..0000000
--- a/0068-Update-derStandaard.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-From 2a7f3265b0df583db5ee605f90846c4f9110a279 Mon Sep 17 00:00:00 2001
-From: Kovid Goyal <kovid(a)kovidgoyal.net>
-Date: Sun, 18 Aug 2019 13:03:45 +0530
-Subject: [PATCH 68/71] Update derStandaard
-
----
- recipes/der_standard.recipe | 5 +++--
- 1 file changed, 3 insertions(+), 2 deletions(-)
-
-diff --git a/recipes/der_standard.recipe b/recipes/der_standard.recipe
-index bb0d198ea6..0663120b17 100644
---- a/recipes/der_standard.recipe
-+++ b/recipes/der_standard.recipe
-@@ -61,6 +61,7 @@ class DerStandardRecipe(BasicNewsRecipe):
-
- def get_browser(self):
- br = BasicNewsRecipe.get_browser(self)
-+ br.set_simple_cookie('DSGVO_Check', '', '.derstandard.at')
- headers = {
- 'X-Requested-With': 'XMLHttpRequest',
- 'Content-Type': 'application/json; charset=UTF-8',
-@@ -69,12 +70,12 @@ def get_browser(self):
- 'Cache-Control': 'no-cache'
- }
- import mechanize
-- req = mechanize.Request(url='https://derstandard.at/privacyprotection/api/agree', data=None, headers=headers, method='POST')
-+ req = mechanize.Request(url='https://apps.derstandard.at/privacyprotection/api/agree', data=None, headers=headers, method='POST')
- br.open(req)
- return br
-
- keep_only_tags = [
-- classes('artikel'),
-+ classes('article-header article-body article-origins article-subtitle article-pubdate'),
- ]
-
- remove_tags = [
diff --git a/0069-Update-bundled-mechanize.patch b/0069-Update-bundled-mechanize.patch
deleted file mode 100644
index 534c4ca..0000000
--- a/0069-Update-bundled-mechanize.patch
+++ /dev/null
@@ -1,24 +0,0 @@
-From 658241fa38353b07be5a8bcaaba4cd537efe61be Mon Sep 17 00:00:00 2001
-From: Kovid Goyal <kovid(a)kovidgoyal.net>
-Date: Sun, 18 Aug 2019 14:09:19 +0530
-Subject: [PATCH 69/71] Update bundled mechanize
-
----
- bypy/sources.json | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/bypy/sources.json b/bypy/sources.json
-index 34227957c1..d6a9afb318 100644
---- a/bypy/sources.json
-+++ b/bypy/sources.json
-@@ -579,8 +579,8 @@
- {
- "name": "mechanize",
- "unix": {
-- "filename": "mechanize-0.4.2.tar.gz",
-- "hash": "sha256:b680ca1b4fabe5ef52024d120f40b8e2ed7d175ed4d67225d2c477dac7c7a58b",
-+ "filename": "mechanize-0.4.3.tar.gz",
-+ "hash": "sha256:d7d7068be5e1b3069575c98c870aaa96dd26603fe8c8697b470e2f65259fddbf",
- "urls": ["pypi"]
- }
- },
diff --git a/0070-Get-parse_index-working-for-foreign-affairs-AJAX-bac.patch b/0070-Get-parse_index-working-for-foreign-affairs-AJAX-bac.patch
deleted file mode 100644
index 2d1f727..0000000
--- a/0070-Get-parse_index-working-for-foreign-affairs-AJAX-bac.patch
+++ /dev/null
@@ -1,236 +0,0 @@
-From 05c2f2e67a120a1cb79e59e5037b62797fe00a3f Mon Sep 17 00:00:00 2001
-From: Kovid Goyal <kovid(a)kovidgoyal.net>
-Date: Sun, 18 Aug 2019 17:52:49 +0530
-Subject: [PATCH 70/71] Get parse_index() working for foreign affairs AJAX
- backend
-
----
- recipes/foreignaffairs.recipe | 176 +++++++++++++++++++++++++---------
- 1 file changed, 133 insertions(+), 43 deletions(-)
-
-diff --git a/recipes/foreignaffairs.recipe b/recipes/foreignaffairs.recipe
-index a3f5436d61..60f095db5c 100644
---- a/recipes/foreignaffairs.recipe
-+++ b/recipes/foreignaffairs.recipe
-@@ -1,12 +1,12 @@
- #!/usr/bin/env python2
--from calibre.web.feeds.news import BasicNewsRecipe
-+import json
- import re
-+
- import html5lib
-+import mechanize
- from lxml import html
-
--
--def select_form(form):
-- return form.attrs.get('id', None) == 'user-login'
-+from calibre.web.feeds.news import BasicNewsRecipe
-
-
- def classes(classes):
-@@ -15,6 +15,123 @@ def classes(classes):
- 'class': lambda x: x and frozenset(x.split()).intersection(q)})
-
-
-+def as_article(source, log):
-+ url = source['url']
-+ title = source['title']
-+ desc = ''
-+ if source.get('field_subtitle'):
-+ desc += source['field_subtitle']
-+ if source.get('field_display_authors'):
-+ desc += ' by ' + source['field_display_authors']
-+ log(title, url)
-+ return {'url': url, 'title': title, 'description': desc}
-+
-+
-+def get_issue_data(br, log, node_id='1124670'):
-+ headers = {
-+ 'Accept': 'application/json, text/plain, */*',
-+ 'Content-Type': 'application/json;charset=UTF-8',
-+ 'Origin': 'https://www.foreignaffairs.com',
-+ 'Referer': 'https://www.foreignaffairs.com',
-+ }
-+ data = {
-+ "_source": {
-+ "includes": [
-+ "normalized_date", "field_issue_volume_number",
-+ "field_issue_volume", "url", "fa_path", "title",
-+ "fa_node_issue_cover_url", "nid",
-+ "field_issue_ssection_header",
-+ "field_issue_ssection_articles:nid"
-+ ]
-+ },
-+ "query": {
-+ "match": {
-+ "id": {
-+ "query": node_id
-+ }
-+ }
-+ },
-+ "size": 1
-+ }
-+
-+ def get_data(data):
-+ search_url = 'https://www.foreignaffairs.com/node/_search'
-+ req = mechanize.Request(url=search_url,
-+ data=json.dumps(data),
-+ headers=headers,
-+ method='POST')
-+ res = br.open(req)
-+ return json.loads(res.read())['hits']['hits']
-+
-+ issue_data = get_data(data)
-+ source = issue_data[0]['_source']
-+ nids = source['field_issue_ssection_articles:nid']
-+ section_title = source['field_issue_ssection_header']
-+
-+ data = {
-+ '_source': {
-+ 'includes': [
-+ 'field_tags:name', 'field_topics:name', 'field_regions:name',
-+ 'url', 'title', 'field_subtitle', 'field_display_authors',
-+ 'nid', 'fa_node_has_audio', 'fa_node_paywall_free',
-+ 'field_capsule_review_category:name',
-+ 'fa_node_type_or_subtype', 'type'
-+ ]
-+ },
-+ 'query': {
-+ 'terms': {
-+ 'id': nids
-+ }
-+ },
-+ 'size': 30
-+ }
-+
-+ sections_data = get_data(data)
-+ log('Found main section:', section_title)
-+ main_articles = []
-+ for article in sections_data:
-+ main_articles.append(as_article(article['_source'], log))
-+ feed = {}
-+
-+ data['size'] = 100
-+ data['query'] = {
-+ 'bool': {
-+ 'must': [{
-+ 'terms': {
-+ 'fa_node_type_or_subtype': [
-+ 'Comment', 'Essay', 'Interview', 'Review Essay',
-+ 'Letter From', 'Letter', 'Response', 'Capsule Review'
-+ ]
-+ }
-+ }, {
-+ 'term': {
-+ 'field_issue:nid': {
-+ 'term': '1124670'
-+ }
-+ }
-+ }],
-+ 'must_not': [{
-+ 'terms': {
-+ 'id': nids
-+ }
-+ }]
-+ }
-+ }
-+
-+ article_data = get_data(data)
-+ for article in article_data:
-+ article = article['_source']
-+ section = article['fa_node_type_or_subtype']
-+ if section not in feed:
-+ feed[section] = []
-+ feed[section].append(as_article(article, log))
-+ ans = []
-+ for sec in sorted(feed):
-+ ans.append((sec, feed[sec]))
-+
-+ return [(section_title, main_articles)] + ans
-+
-+
- class ForeignAffairsRecipe(BasicNewsRecipe):
-
- ''' there are three modifications:
-@@ -55,43 +172,18 @@ class ForeignAffairsRecipe(BasicNewsRecipe):
- 'publisher': publisher}
-
- def parse_index(self):
-- answer = []
- soup = self.index_to_soup(self.FRONTPAGE)
-- div = soup.find(
-- 'div', attrs={'class': 'magazine-actions'})
-- self.cover_url = div.find('img')['ng-src']
- # get dates
- date = re.split(r'\s\|\s', self.tag_to_string(
- soup.head.title.string))[0]
- self.title = "Foreign Affairs ({})".format(date)
- self.timefmt = u' [%s]' % date
--
-- # Fetching article list does not work as site uses javascript
-- # to load articles dynamically
-- for section in soup.findAll('section', attrs={'class':lambda x: x and 'magazine-list' in x.split()}):
-- articles = []
-- section_title = self.tag_to_string(section.find('h2'))
-- if 'special_section.title' in section_title:
-- section_title = 'Special'
-- self.log('\nSection:', section_title)
-- for h3 in section.findAll(attrs={'class': lambda x: x and 'magazine-title' in x.split()}):
-- a = h3.findParent('a', href=True)
-- title = self.tag_to_string(h3)
-- url = a['href']
-- atr = a.findNextSibling(attrs={'class':'author'})
-- author = self.tag_to_string(atr) if atr else ''
-- desc = a.findNextSibling(attrs={'class': 'deck'})
-- if desc is not None:
-- description = self.tag_to_string(desc)
-- else:
-- description = ''
-- articles.append({'title': title, 'url': url,
-- 'description': description, 'author': author})
-- self.log(title)
-- self.log('\t' + url)
-- if articles:
-- answer.append((section_title, articles))
-- return answer
-+ cls = soup.find('body')['class']
-+ if isinstance(cls, (list, tuple)):
-+ cls = ' '.join(cls)
-+ node_id = re.search(r'\bpage-node-(\d+)\b', cls).group(1)
-+ br = self.cloned_browser
-+ return get_issue_data(br, self.log, node_id)
-
- def clean_fa_html(self, root):
- for svg in tuple(root.iter('{*}svg')):
-@@ -104,7 +196,7 @@ def preprocess_raw_html(self, raw_html, url):
- root = html5lib.parse(raw_html, treebuilder='lxml',
- namespaceHTMLElements=False).getroot()
- self.clean_fa_html(root)
-- return html.tostring(root)
-+ return html.tostring(root, encoding='unicode')
-
- def preprocess_html(self, soup):
- for img in soup.findAll('img', attrs={'ng-src': True}):
-@@ -112,16 +204,14 @@ def preprocess_html(self, soup):
- return soup
-
- def get_browser(self):
-+
-+ def select_form(form):
-+ return form.attrs.get('id', None) == 'user-login'
-+
- br = BasicNewsRecipe.get_browser(self)
- if self.username is not None and self.password is not None:
-- # mechanize fails to parse the html correctly, so use html5lib to
-- # sanitize the html first
-- response = br.open(
-+ br.open(
- 'https://www.foreignaffairs.com/user?destination=user%3Fop%3Dlo')
-- root = html5lib.parse(
-- response.get_data(), treebuilder='lxml', namespaceHTMLElements=False)
-- response.set_data(html.tostring(root))
-- br.set_response(response)
- br.select_form(predicate=select_form)
- br.form['name'] = self.username
- br.form['pass'] = self.password
diff --git a/0071-Update-Foreign-Affairs.patch b/0071-Update-Foreign-Affairs.patch
deleted file mode 100644
index a9ca17a..0000000
--- a/0071-Update-Foreign-Affairs.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-From 5c11a09575a33aacb161aada10296ba16a15f74e Mon Sep 17 00:00:00 2001
-From: Kovid Goyal <kovid(a)kovidgoyal.net>
-Date: Mon, 19 Aug 2019 08:27:33 +0530
-Subject: [PATCH 71/71] Update Foreign Affairs
-
----
- recipes/foreignaffairs.recipe | 8 ++++----
- 1 file changed, 4 insertions(+), 4 deletions(-)
-
-diff --git a/recipes/foreignaffairs.recipe b/recipes/foreignaffairs.recipe
-index 60f095db5c..1f1b89175f 100644
---- a/recipes/foreignaffairs.recipe
-+++ b/recipes/foreignaffairs.recipe
-@@ -164,8 +164,7 @@ class ForeignAffairsRecipe(BasicNewsRecipe):
- FRONTPAGE = INDEX + '/magazine'
-
- keep_only_tags = [
-- dict(attrs={'class': lambda x: x and set(x.split()).intersection(
-- set('article-header l-article-column'.split()))}),
-+ classes('article-header article-body'),
- ]
-
- conversion_options = {'comments': description, 'tags': category, 'language': 'en',
-@@ -199,8 +198,9 @@ def preprocess_raw_html(self, raw_html, url):
- return html.tostring(root, encoding='unicode')
-
- def preprocess_html(self, soup):
-- for img in soup.findAll('img', attrs={'ng-src': True}):
-- img['src'] = img['ng-src']
-+ for attr in ('ng-src', 'data-blazy'):
-+ for img in soup.findAll('img', attrs={attr: True}):
-+ img['src'] = img[attr]
- return soup
-
- def get_browser(self):
diff --git a/9e86f6744be764b2522663f9a7fe2376105fc72c.patch b/9e86f6744be764b2522663f9a7fe2376105fc72c.patch
deleted file mode 100644
index ef5b9d6..0000000
--- a/9e86f6744be764b2522663f9a7fe2376105fc72c.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-From 9e86f6744be764b2522663f9a7fe2376105fc72c Mon Sep 17 00:00:00 2001
-From: Petr Viktorin <encukou(a)gmail.com>
-Date: Wed, 21 Aug 2019 14:52:30 +0200
-Subject: [PATCH] py3: When changing a dict, iterate over a copy of its items
-
-Changing dict keys while iterating over the dict was always
-undefined behavior in Python, but in 3.8 our tests started
-failing on this case.
----
- src/calibre/ebooks/oeb/base.py | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/calibre/ebooks/oeb/base.py b/src/calibre/ebooks/oeb/base.py
-index 1f87dcbe45..af9cb3f62a 100644
---- a/src/calibre/ebooks/oeb/base.py
-+++ b/src/calibre/ebooks/oeb/base.py
-@@ -702,7 +702,7 @@ def __init__(self, term, value, attrib={}, nsmap={}, **kwargs):
- term = CALIBRE(local)
- self.term = term
- self.value = value
-- for attr, value in attrib.items():
-+ for attr, value in list(attrib.items()):
- if isprefixname(value):
- attrib[attr] = qname(value, nsmap)
- nsattr = Metadata.OPF_ATTRS.get(attr, attr)
diff --git a/calibre-mount-helper b/calibre-mount-helper
deleted file mode 100755
index 9113c71..0000000
--- a/calibre-mount-helper
+++ /dev/null
@@ -1,9 +0,0 @@
-#!/bin/sh
-
-# This is a dummy script shipped in the fedora calibre package.
-# Since we have better/safer/easier ways to mount mass storage devices
-# there's no need to have a suid binary try and do this.
-# This script simply exits telling calibre that the device is already
-# been mounted by your desktop.
-
-exit 1
diff --git a/calibre.spec b/calibre.spec
index ca802b4..c1dd5d3 100644
--- a/calibre.spec
+++ b/calibre.spec
@@ -5,8 +5,8 @@
%global _python_bytecompile_extra 0
Name: calibre
-Version: 3.46.0
-Release: 2.git20190819%{?dist}
+Version: 3.47.0
+Release: 1%{?dist}
Summary: E-book converter and library manager
License: GPLv3
URL: https://calibre-ebook.com/
@@ -21,7 +21,6 @@ URL: https://calibre-ebook.com/
Source0: calibre-%{version}-nofonts.tar.xz
Source1: getsources.sh
-Source2: calibre-mount-helper
# Disable auto update from inside the app
Patch1: calibre-no-update.patch
@@ -31,83 +30,11 @@ Patch1: calibre-no-update.patch
Patch3: calibre-nodisplay.patch
# Patches that are not suitable for upstream:
+# skip unrardll tests if unrardll has been removed.
Patch4: https://github.com/keszybz/calibre/commit/497810f8adb992bfecf04e8eacf4ac1...
+# sgml was removed, so disable test for it.
Patch5: https://github.com/keszybz/calibre/commit/01bf854923741bf8d6a6328f17d61e0...
-Patch10001: 0001-py3-fix-invalid-escapes.patch
-Patch10002: 0002-py3-another-warning-about-invalid-escape.patch
-Patch10003: 0003-Update-WSJ.patch
-Patch10004: 0004-Preferences-Ignored-devices-Add-a-button-to-reset-th.patch
-Patch10005: 0005-Open-With-don-t-raise-KeyError-if-cache-exists-and-t.patch
-Patch10006: 0006-LIT-Output-Fix-regression-in-3.41-caused-by-py3-port.patch
-Patch10007: 0007-use-raw-strings-where-possible-to-avoid-escaping-iss.patch
-Patch10008: 0008-fix-imports-from-the-wrong-module.patch
-Patch10009: 0009-unicode_check-do-not-try-to-check-pyuic-generated-fi.patch
-Patch10010: 0010-py3-more-work-towards-universal-__future__s.patch
-Patch10011: 0011-use-floor-division-instead-of-math.floor.patch
-Patch10012: 0012-simplify-check-for-non-zero-content-in-set.patch
-Patch10013: 0013-Get-more-information-from-podofo-exceptions.patch
-Patch10014: 0014-Various-fixes-for-the-last-py3-merge.patch
-Patch10015: 0015-Dont-use-auto-in-master-since-it-is-still-built-with.patch
-Patch10016: 0016-More-ancient-linux-compiler-support.patch
-Patch10017: 0017-py3-compat-for-gaierror-retry.patch
-Patch10018: 0018-Update-Chicago-Tribune.patch
-Patch10019: 0019-.patch
-Patch10020: 0020-use-context-managers-to-open-files.patch
-Patch10021: 0021-py3-read-in-raw-data-files-as-binary.patch
-Patch10022: 0022-Add-missing-language-field-to-ComicBookInfo-metadata.patch
-Patch10023: 0023-.patch
-Patch10024: 0024-if-the-cover-img-resolution-is-too-low-kindle-wouldn.patch
-Patch10025: 0025-enlarge-cover-img-resolution-by-change-the-url.patch
-Patch10026: 0026-Add-funding-sources-for-github-sponsor-button.patch
-Patch10027: 0027-Misc-CHM-Input-fixes.patch
-Patch10028: 0028-Preserve-tag-order-when-reading-metadata-from-MOBI-f.patch
-Patch10029: 0029-Remove-metadata-from-conversion_options-API-docs-sin.patch
-Patch10030: 0030-Try-manually-installing-libgl1-mesa-dev-on-Travis.patch
-Patch10031: 0031-Improve-PoDoFo-test-a-bit.patch
-Patch10032: 0032-Simplify-podofo-str-unicode-conversion.patch
-Patch10033: 0033-Cleanup-conversion-of-python-strings-to-podofo-strin.patch
-Patch10034: 0034-Utility-function-to-detect-if-a-PDF-is-encrypted.patch
-Patch10035: 0035-macOS-Fix-a-regression-that-could-cause-a-crash-on-e.patch
-Patch10036: 0036-Update-login-mechanism-for-Times-Online.patch
-Patch10037: 0037-Change-travis-email-notification-semantics.patch
-Patch10038: 0038-py3-compat.patch
-Patch10039: 0039-Content-server-Fix-OPDS-feed-for-category-based-brow.patch
-Patch10040: 0040-See-if-not-using-a-temp-file-fixes-the-weird-test-fa.patch
-Patch10041: 0041-Use-mbcs-encoding-when-passing-filenames-to-windows.patch
-Patch10042: 0042-py3-more-fixes.patch
-Patch10043: 0043-Update-National-Geographic.patch
-Patch10044: 0044-py3-More-fixes.patch
-Patch10045: 0045-A-better-fix-for-python3.7-smtplib-breakage.patch
-Patch10046: 0046-Fix-1839494-Application-crashes-on-changing-icons-ht.patch
-Patch10047: 0047-HTMLZ-Output-Fix-svg-content-from-HTML-files-that-co.patch
-Patch10048: 0048-PML-Input-Modernize-the-generated-HTML-a-bit.-Fixes-.patch
-Patch10049: 0049-Cleanup.patch
-Patch10050: 0050-Workaround-for-weird-PyQt-return-with-error-set-in-t.patch
-Patch10051: 0051-py3-more-future-imports.patch
-Patch10052: 0052-py3-Another-fix.patch
-Patch10053: 0053-Fix-1028-Fix-podofo-convert-pystring-to-PdfString-bu.patch
-Patch10054: 0054-.patch
-Patch10055: 0055-EPUB-3-Fix-setting-metadata-in-EPUB-3-files-with-a-t.patch
-Patch10056: 0056-Speed-up-restoring-original-format-by-doing-a-rename.patch
-Patch10057: 0057-Support-Dublin-Core-id-tags-when-importing-HTML.patch
-Patch10058: 0058-Refactor-HTML-metadata-parsing.patch
-Patch10059: 0059-Fix-importing-ratings-from-HTML-metadata.patch
-Patch10060: 0060-Escape-HTML-entities-in-comments.patch
-Patch10061: 0061-Add-unit-tests-for-HTML-metadata-imports.patch
-Patch10062: 0062-Cleanup-HTML-metadata-parsing.patch
-Patch10063: 0063-.patch
-Patch10064: 0064-Update-CNET-News.patch
-Patch10065: 0065-Updated-The-Globe-and-Mail-recipe-article-titles-no-.patch
-Patch10066: 0066-change-wording-slightly.patch
-Patch10067: 0067-Complete-fix-for-WSJ-login-logic-change.patch
-Patch10068: 0068-Update-derStandaard.patch
-Patch10069: 0069-Update-bundled-mechanize.patch
-Patch10070: 0070-Get-parse_index-working-for-foreign-affairs-AJAX-bac.patch
-Patch10071: 0071-Update-Foreign-Affairs.patch
-
-Patch20001: https://github.com/kovidgoyal/calibre/pull/1033/commits/9e86f6744be764b25...
-
BuildRequires: python3-devel
BuildRequires: python3-setuptools
BuildRequires: python3-qt5-devel
@@ -417,8 +344,6 @@ rm -rf %{buildroot}%{_datadir}/calibre/localization/locales/
rm -f %{buildroot}%{_bindir}/calibre-uninstall
-cp -p %{SOURCE2} %{buildroot}%{_bindir}/calibre-mount-helper
-
# Remove these 2 appdata files, we can only include one
rm -f %{buildroot}/%{_datadir}/metainfo/calibre-ebook-edit.appdata.xml
rm -f %{buildroot}/%{_datadir}/metainfo/calibre-ebook-viewer.appdata.xml
@@ -449,7 +374,6 @@ ln -s %{_jsdir}/mathjax %{_datadir}/calibre/viewer/
%{_bindir}/calibre-parallel
%{_bindir}/calibre-server
%{_bindir}/calibre-smtp
-%{_bindir}/calibre-mount-helper
%{_bindir}/calibredb
%{_bindir}/ebook-convert
%{_bindir}/ebook-device
@@ -477,6 +401,9 @@ ln -s %{_jsdir}/mathjax %{_datadir}/calibre/viewer/
%{_datadir}/metainfo/*.appdata.xml
%changelog
+* Sat Aug 31 2019 Kevin Fenzi <kevin(a)scrye.com> - 3.47.0-1
+- Update to 3.47.0
+
* Tue Aug 20 2019 Zbigniew Jdrzejewski-Szmek <zbyszek(a)in.waw.pl> - 3.46.0-2.git20190819
- Rebuilt for Python 3.8
diff --git a/sources b/sources
index 4ff62ab..5546205 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-SHA512 (calibre-3.46.0-nofonts.tar.xz) = fc9cea6407be14f56cdd27db923530b370acc811bb61b97c2f07631125cb14464f8533a5a55cc46e0e66defb18d6f875bd37b3c72f9ed4551d0d15e75424ecd6
+SHA512 (calibre-3.47.0-nofonts.tar.xz) = 970422398e444793e0a4621a95aa95b7c3faea4f1c601226b335e3bb503f40de918ab79a784d9f3581ef85f6435716aa1a9ab15d2cfe95fa32e0cc40aa4cb921
commit 20991cada94cc90522d72a1f7fac2735d84236cb
Author: Zbigniew Jdrzejewski-Szmek <zbyszek(a)in.waw.pl>
Date: Wed Aug 21 15:13:41 2019 +0200
Add patch to fix tests under python3.8
diff --git a/9e86f6744be764b2522663f9a7fe2376105fc72c.patch b/9e86f6744be764b2522663f9a7fe2376105fc72c.patch
new file mode 100644
index 0000000..ef5b9d6
--- /dev/null
+++ b/9e86f6744be764b2522663f9a7fe2376105fc72c.patch
@@ -0,0 +1,25 @@
+From 9e86f6744be764b2522663f9a7fe2376105fc72c Mon Sep 17 00:00:00 2001
+From: Petr Viktorin <encukou(a)gmail.com>
+Date: Wed, 21 Aug 2019 14:52:30 +0200
+Subject: [PATCH] py3: When changing a dict, iterate over a copy of its items
+
+Changing dict keys while iterating over the dict was always
+undefined behavior in Python, but in 3.8 our tests started
+failing on this case.
+---
+ src/calibre/ebooks/oeb/base.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/calibre/ebooks/oeb/base.py b/src/calibre/ebooks/oeb/base.py
+index 1f87dcbe45..af9cb3f62a 100644
+--- a/src/calibre/ebooks/oeb/base.py
++++ b/src/calibre/ebooks/oeb/base.py
+@@ -702,7 +702,7 @@ def __init__(self, term, value, attrib={}, nsmap={}, **kwargs):
+ term = CALIBRE(local)
+ self.term = term
+ self.value = value
+- for attr, value in attrib.items():
++ for attr, value in list(attrib.items()):
+ if isprefixname(value):
+ attrib[attr] = qname(value, nsmap)
+ nsattr = Metadata.OPF_ATTRS.get(attr, attr)
diff --git a/calibre.spec b/calibre.spec
index 1e72ddc..ca802b4 100644
--- a/calibre.spec
+++ b/calibre.spec
@@ -106,6 +106,8 @@ Patch10069: 0069-Update-bundled-mechanize.patch
Patch10070: 0070-Get-parse_index-working-for-foreign-affairs-AJAX-bac.patch
Patch10071: 0071-Update-Foreign-Affairs.patch
+Patch20001: https://github.com/kovidgoyal/calibre/pull/1033/commits/9e86f6744be764b25...
+
BuildRequires: python3-devel
BuildRequires: python3-setuptools
BuildRequires: python3-qt5-devel
commit 61e4828db00b2da0e4b354938dc1e2ba34638ccc
Author: Zbigniew Jdrzejewski-Szmek <zbyszek(a)in.waw.pl>
Date: Tue Aug 20 14:44:40 2019 +0200
We need html5-parser-0.4.8
diff --git a/calibre.spec b/calibre.spec
index 1493f46..1e72ddc 100644
--- a/calibre.spec
+++ b/calibre.spec
@@ -150,7 +150,7 @@ BuildRequires: python3dist(pygments)
BuildRequires: python3dist(soupsieve)
BuildRequires: python3dist(msgpack)
BuildRequires: python3dist(regex)
-BuildRequires: python3dist(html5-parser)
+BuildRequires: python3dist(html5-parser) >= 0.4.8
BuildRequires: python3dist(html2text)
BuildRequires: python3dist(zeroconf)
BuildRequires: python3dist(markdown) >= 3.0
@@ -197,7 +197,7 @@ Requires: python3dist(psutil)
Requires: python3dist(pygments)
Requires: python3dist(msgpack)
Requires: python3dist(regex)
-Requires: python3dist(html5-parser)
+Requires: python3dist(html5-parser) >= 0.4.8
Requires: python3dist(html2text)
Requires: python3dist(markdown) >= 3.0
Recommends: python3dist(zeroconf)
@@ -239,10 +239,6 @@ rm -rvf resources/viewer/mathjax
sed -r -i 's/\b(test_actual_case|test_clone|test_file_add|test_file_removal|test_file_rename|test_folder_type_map_case|test_merge_file)\b/_skipped_\1/' src/calibre/ebooks/oeb/polish/tests/container.py
# Skip test that fails in mock
sed -r -i 's/\btest_bonjour\b/_skipped_\0/' src/calibre/srv/tests/loop.py
-# This fails with:
-# AttributeError: type object 'HTMLTreeBuilder' has no attribute 'cdata_list_attributes'
-# Ignore for now.
-sed -r -i 's/\btest_comments_to_html\b/_skipped_\0/' src/calibre/library/comments.py
%build
OVERRIDE_CFLAGS="%{optflags}" \
commit f454f068bb966cfbe16283ae993300242e68f1f6
Author: Zbigniew Jdrzejewski-Szmek <zbyszek(a)in.waw.pl>
Date: Tue Aug 20 13:33:44 2019 +0200
Rebuilt for Python 3.8
diff --git a/calibre.spec b/calibre.spec
index 01a68e2..1493f46 100644
--- a/calibre.spec
+++ b/calibre.spec
@@ -6,7 +6,7 @@
Name: calibre
Version: 3.46.0
-Release: 1.git20190819%{?dist}
+Release: 2.git20190819%{?dist}
Summary: E-book converter and library manager
License: GPLv3
URL: https://calibre-ebook.com/
@@ -479,6 +479,9 @@ ln -s %{_jsdir}/mathjax %{_datadir}/calibre/viewer/
%{_datadir}/metainfo/*.appdata.xml
%changelog
+* Tue Aug 20 2019 Zbigniew Jdrzejewski-Szmek <zbyszek(a)in.waw.pl> - 3.46.0-2.git20190819
+- Rebuilt for Python 3.8
+
* Mon Aug 19 2019 Zbigniew Jdrzejewski-Szmek <zbyszek(a)in.waw.pl> - 3.46.0-1.git20190819
- Update to the latest version + various patches (#1667497)
4 years, 6 months