Architecture specific change in rpms/ceph.git
by githook-noreply@fedoraproject.org
The package rpms/ceph.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/ceph.git/commit/?id=491a5794614a4....
Change:
+ExclusiveArch: x86_64 aarch64 ppc64 ppc64le s390x
Thanks.
Full change:
============
commit 491a5794614a474f694c6365fc83ed3672241c5b
Author: Kaleb S. KEITHLEY <kkeithle(a)redhat.com>
Date: Sat Jul 22 19:25:07 2017 -0400
New release (2:12.1.1-1) again
diff --git a/ceph.spec b/ceph.spec
index 5345d68..cbdb551 100644
--- a/ceph.spec
+++ b/ceph.spec
@@ -84,6 +84,8 @@ ExclusiveArch: x86_64 aarch64 ppc64 ppc64le
%else
ExclusiveArch: x86_64 aarch64 ppc64le s390x
%endif
+%else
+ExclusiveArch: x86_64 aarch64 ppc64 ppc64le s390x
%endif
#################################################################################
# dependencies that apply across all distro families
@@ -1753,7 +1755,7 @@ exit 0
%changelog
* Fri Jul 21 2017 Kaleb S. KEITHLEY <kkeithle[at]redhat.com> - 1:12.1.1-1
-- New release (2:12.1.1-1)
+- New release (1:12.1.1-1)
* Fri Jul 21 2017 Kalev Lember <klember(a)redhat.com> - 1:10.2.7-3
- Rebuilt for Boost 1.64
6 years, 8 months
Architecture specific change in rpms/ceph.git
by githook-noreply@fedoraproject.org
The package rpms/ceph.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/ceph.git/commit/?id=44c0bd8d5c6ec....
Change:
+%ifarch x86_64
Thanks.
Full change:
============
commit 44c0bd8d5c6ece6c22e2f9fff1297dc082b9a0a2
Author: Kaleb S. KEITHLEY <kkeithle(a)redhat.com>
Date: Sat Jul 22 18:50:07 2017 -0400
New release (2:12.1.1-1)
diff --git a/0001-Disable-erasure_codelib-neon-build.patch b/0001-Disable-erasure_codelib-neon-build.patch
deleted file mode 100644
index e347681..0000000
--- a/0001-Disable-erasure_codelib-neon-build.patch
+++ /dev/null
@@ -1,47 +0,0 @@
-From 2a7810f39cb113570efcde5f65e5440ff9587ae0 Mon Sep 17 00:00:00 2001
-From: Boris Ranto <branto(a)redhat.com>
-Date: Wed, 11 Nov 2015 17:08:06 +0100
-Subject: [PATCH] Disable erasure_codelib neon build
-
----
- src/erasure-code/jerasure/Makefile.am | 6 +++---
- src/erasure-code/shec/Makefile.am | 6 +++---
- 2 files changed, 6 insertions(+), 6 deletions(-)
-
-diff --git a/src/erasure-code/jerasure/Makefile.am b/src/erasure-code/jerasure/Makefile.am
-index 6ffe3ed..01f5112 100644
---- a/src/erasure-code/jerasure/Makefile.am
-+++ b/src/erasure-code/jerasure/Makefile.am
-@@ -75,9 +75,9 @@ if LINUX
- libec_jerasure_neon_la_LDFLAGS += -export-symbols-regex '.*__erasure_code_.*'
- endif
-
--if HAVE_NEON
--erasure_codelib_LTLIBRARIES += libec_jerasure_neon.la
--endif
-+#if HAVE_NEON
-+#erasure_codelib_LTLIBRARIES += libec_jerasure_neon.la
-+#endif
-
- libec_jerasure_sse3_la_SOURCES = ${jerasure_sources}
- libec_jerasure_sse3_la_CFLAGS = ${AM_CFLAGS} \
-diff --git a/src/erasure-code/shec/Makefile.am b/src/erasure-code/shec/Makefile.am
-index cd93132..948979b 100644
---- a/src/erasure-code/shec/Makefile.am
-+++ b/src/erasure-code/shec/Makefile.am
-@@ -81,9 +81,9 @@ if LINUX
- libec_shec_neon_la_LDFLAGS += -export-symbols-regex '.*__erasure_code_.*'
- endif
-
--if HAVE_NEON
--erasure_codelib_LTLIBRARIES += libec_shec_neon.la
--endif
-+#if HAVE_NEON
-+#erasure_codelib_LTLIBRARIES += libec_shec_neon.la
-+#endif
-
- libec_shec_sse3_la_SOURCES = ${shec_sources}
- libec_shec_sse3_la_CFLAGS = ${AM_CFLAGS} \
---
-2.7.4
-
diff --git a/0002-hack-do-not-test-for-libxfs-assume-it-is-present.patch b/0002-hack-do-not-test-for-libxfs-assume-it-is-present.patch
deleted file mode 100644
index 7933287..0000000
--- a/0002-hack-do-not-test-for-libxfs-assume-it-is-present.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-From 69e888fa5c103588ee9f23ac4cec4bfc2285eb08 Mon Sep 17 00:00:00 2001
-From: Boris Ranto <branto(a)redhat.com>
-Date: Fri, 13 Jan 2017 01:15:42 +0100
-Subject: [PATCH] hack: do not test for libxfs, assume it is present
-
----
- configure.ac | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
-
-diff --git a/configure.ac b/configure.ac
-index 32e273f..050e754 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -882,7 +882,7 @@ AC_ARG_WITH([libxfs],
- [AS_HELP_STRING([--without-libxfs], [disable libxfs use by FileStore])],
- [],
- [with_libxfs=yes])
--AS_IF([test "x$with_libxfs" != "xno"], [
-+AS_IF([test "x$with_libxfs" = "hack..."], [
- # xfs/xfs.h presence and XFS_XFLAG_EXTSIZE define
- AC_CHECK_HEADER([xfs/xfs.h], [], AC_MSG_ERROR(
- [xfs/xfs.h not found (--without-libxfs to disable)]))
-@@ -900,6 +900,7 @@ AS_IF([test "x$with_libxfs" != "xno"], [
- AC_MSG_ERROR([XFS_XFLAG_EXTSIZE not found (--without-libxfs to disable)])
- ])
- ])
-+AC_DEFINE([HAVE_LIBXFS], [1], [Define to 1 if you have libxfs])
- AM_CONDITIONAL(WITH_LIBXFS, [test "x$with_libxfs" != "xno"])
-
- # use libzfs
---
-2.7.4
-
diff --git a/0003-librbd-Journal-include-WorkQueue-since-we-use-it.patch b/0003-librbd-Journal-include-WorkQueue-since-we-use-it.patch
deleted file mode 100644
index d6aba7f..0000000
--- a/0003-librbd-Journal-include-WorkQueue-since-we-use-it.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-From b204da4e28a0238547c99ee1bf4080ae4d62ad33 Mon Sep 17 00:00:00 2001
-From: Boris Ranto <branto(a)redhat.com>
-Date: Wed, 8 Feb 2017 22:38:12 +0100
-Subject: [PATCH] librbd/Journal: include WorkQueue since we use it
-
-Signed-off-by: Boris Ranto <branto(a)redhat.com>
----
- src/librbd/Journal.h | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/src/librbd/Journal.h b/src/librbd/Journal.h
-index 4b70b99..2490975 100644
---- a/src/librbd/Journal.h
-+++ b/src/librbd/Journal.h
-@@ -11,6 +11,7 @@
- #include "common/Cond.h"
- #include "common/Mutex.h"
- #include "common/Cond.h"
-+#include "common/WorkQueue.h"
- #include "journal/Future.h"
- #include "journal/JournalMetadataListener.h"
- #include "journal/ReplayEntry.h"
---
-2.9.3
-
diff --git a/ceph.spec b/ceph.spec
index 108a85f..5345d68 100644
--- a/ceph.spec
+++ b/ceph.spec
@@ -2,7 +2,7 @@
#
# spec file for package ceph
#
-# Copyright (C) 2004-2016 The Ceph Project Developers. See COPYING file
+# Copyright (C) 2004-2017 The Ceph Project Developers. See COPYING file
# at the top-level directory of this distribution and at
# https://github.com/ceph/ceph/blob/master/COPYING
#
@@ -14,17 +14,20 @@
#
# Please submit bugfixes or comments via http://tracker.ceph.com/
#
-%bcond_with ocf
+%bcond_without ocf
%bcond_without cephfs_java
-%bcond_with tests
-%bcond_with xio
-%ifnarch s390 s390x
-%bcond_without tcmalloc
+%if 0%{?suse_version}
+%bcond_with ceph_test_package
%else
-# no gperftools/tcmalloc on s390(x)
+%bcond_without ceph_test_package
+%endif
+%bcond_with make_check
+%bcond_with xio
+%ifarch s390 s390x
%bcond_with tcmalloc
+%else
+%bcond_without tcmalloc
%endif
-%bcond_without libs_compat
%bcond_with lowmem_builder
%if 0%{?fedora} || 0%{?rhel}
%bcond_without selinux
@@ -47,41 +50,48 @@
%{!?_udevrulesdir: %global _udevrulesdir /lib/udev/rules.d}
%{!?tmpfiles_create: %global tmpfiles_create systemd-tmpfiles --create}
+%{!?python3_pkgversion: %global python3_pkgversion 3}
# unify libexec for all targets
%global _libexecdir %{_exec_prefix}/lib
+# disable dwz which compresses the debuginfo
+%global _find_debuginfo_dwz_opts %{nil}
#################################################################################
-# common
+# main package definition
#################################################################################
Name: ceph
-Version: 10.2.7
-Release: 3%{?dist}
+Version: 12.1.1
+Release: 0%{?dist}
+%if 0%{?fedora} || 0%{?rhel}
Epoch: 1
+%endif
+
+# define %_epoch_prefix macro which will expand to the empty string if %epoch is undefined
+%global _epoch_prefix %{?epoch:%{epoch}:}
+
Summary: User space components of the Ceph file system
-License: LGPL-2.1 and CC-BY-SA-1.0 and GPL-2.0 and BSL-1.0 and GPL-2.0-with-autoconf-exception and BSD-3-Clause and MIT
+License: LGPL-2.1 and CC-BY-SA-1.0 and GPL-2.0 and BSL-1.0 and BSD-3-Clause and MIT
%if 0%{?suse_version}
-Group: System/Filesystems
+Group: System/Filesystems
%endif
URL: http://ceph.com/
-Source0: http://ceph.com/download/%{name}-%{version}.tar.gz
-Patch1: 0001-Disable-erasure_codelib-neon-build.patch
-Patch2: 0002-hack-do-not-test-for-libxfs-assume-it-is-present.patch
-Patch3: 0003-librbd-Journal-include-WorkQueue-since-we-use-it.patch
+Source0: http://download.ceph.com/tarballs/ceph-12.1.1.tar.gz
%if 0%{?suse_version}
%if 0%{?is_opensuse}
ExclusiveArch: x86_64 aarch64 ppc64 ppc64le
%else
-ExclusiveArch: x86_64 aarch64
+ExclusiveArch: x86_64 aarch64 ppc64le s390x
%endif
%endif
#################################################################################
# dependencies that apply across all distro families
#################################################################################
-Requires: ceph-osd = %{epoch}:%{version}-%{release}
-Requires: ceph-mds = %{epoch}:%{version}-%{release}
-Requires: ceph-mon = %{epoch}:%{version}-%{release}
+Requires: ceph-osd = %{_epoch_prefix}%{version}-%{release}
+Requires: ceph-mds = %{_epoch_prefix}%{version}-%{release}
+Requires: ceph-mgr = %{_epoch_prefix}%{version}-%{release}
+Requires: ceph-mon = %{_epoch_prefix}%{version}-%{release}
Requires(post): binutils
%if 0%{with cephfs_java}
BuildRequires: java-devel
@@ -92,19 +102,19 @@ BuildRequires: checkpolicy
BuildRequires: selinux-policy-devel
BuildRequires: /usr/share/selinux/devel/policyhelp
%endif
-BuildRequires: boost-devel
+BuildRequires: bc
+BuildRequires: gperf
BuildRequires: cmake
BuildRequires: cryptsetup
BuildRequires: fuse-devel
BuildRequires: gcc-c++
BuildRequires: gdbm
%if 0%{with tcmalloc}
-BuildRequires: gperftools-devel
+BuildRequires: gperftools-devel >= 2.4
%endif
-BuildRequires: hdparm
+BuildRequires: jq
BuildRequires: leveldb-devel > 1.2
BuildRequires: libaio-devel
-BuildRequires: libatomic_ops-devel
BuildRequires: libblkid-devel >= 2.17
BuildRequires: libcurl-devel
BuildRequires: libudev-devel
@@ -112,20 +122,21 @@ BuildRequires: libtool
BuildRequires: libxml2-devel
BuildRequires: make
BuildRequires: parted
-BuildRequires: perl-interpreter
+BuildRequires: perl
BuildRequires: pkgconfig
BuildRequires: python
BuildRequires: python-devel
BuildRequires: python-nose
+BuildRequires: python-pecan
BuildRequires: python-requests
-BuildRequires: python-sphinx
BuildRequires: python-virtualenv
+BuildRequires: python-werkzeug
+BuildRequires: socat
BuildRequires: snappy-devel
BuildRequires: udev
BuildRequires: util-linux
-%ifnarch s390
BuildRequires: valgrind-devel
-%endif
+BuildRequires: which
BuildRequires: xfsprogs
BuildRequires: xfsprogs-devel
BuildRequires: xmlstarlet
@@ -148,7 +159,11 @@ BuildRequires: keyutils-devel
BuildRequires: libopenssl-devel
BuildRequires: lsb-release
BuildRequires: openldap2-devel
+BuildRequires: python-CherryPy
BuildRequires: python-Cython
+BuildRequires: python-PrettyTable
+BuildRequires: python-Sphinx
+BuildRequires: rdma-core-devel
%endif
%if 0%{?fedora} || 0%{?rhel}
Requires: systemd
@@ -156,10 +171,24 @@ BuildRequires: boost-random
BuildRequires: btrfs-progs
BuildRequires: nss-devel
BuildRequires: keyutils-libs-devel
+BuildRequires: libibverbs-devel
BuildRequires: openldap-devel
BuildRequires: openssl-devel
BuildRequires: redhat-lsb-core
BuildRequires: Cython
+BuildRequires: python-cherrypy
+BuildRequires: python-prettytable
+BuildRequires: python-sphinx
+%endif
+# python34-... for RHEL, python3-... for all other supported distros
+%if 0%{?rhel}
+BuildRequires: python34-devel
+BuildRequires: python34-setuptools
+BuildRequires: python34-Cython
+%else
+BuildRequires: python3-devel
+BuildRequires: python3-setuptools
+BuildRequires: python3-Cython
%endif
# lttng and babeltrace for rbd-replay-prep
%if %{with lttng}
@@ -172,14 +201,11 @@ BuildRequires: lttng-ust-devel
BuildRequires: babeltrace-devel
%endif
%endif
-# expat and fastcgi for RGW
%if 0%{?suse_version}
BuildRequires: libexpat-devel
-BuildRequires: FastCGI-devel
%endif
%if 0%{?rhel} || 0%{?fedora}
BuildRequires: expat-devel
-BuildRequires: fcgi-devel
%endif
#hardened-cc1
%if 0%{?fedora} || 0%{?rhel}
@@ -196,18 +222,20 @@ on commodity hardware and delivers object, block and file system storage.
#################################################################################
-# packages
+# subpackages
#################################################################################
%package base
Summary: Ceph Base Package
-Group: System Environment/Base
-Requires: ceph-common = %{epoch}:%{version}-%{release}
-Requires: librbd1 = %{epoch}:%{version}-%{release}
-Requires: librados2 = %{epoch}:%{version}-%{release}
-Requires: libcephfs1 = %{epoch}:%{version}-%{release}
-Requires: librgw2 = %{epoch}:%{version}-%{release}
+%if 0%{?suse_version}
+Group: System/Filesystems
+%endif
+Requires: ceph-common = %{_epoch_prefix}%{version}-%{release}
+Requires: librbd1 = %{_epoch_prefix}%{version}-%{release}
+Requires: librados2 = %{_epoch_prefix}%{version}-%{release}
+Requires: libcephfs2 = %{_epoch_prefix}%{version}-%{release}
+Requires: librgw2 = %{_epoch_prefix}%{version}-%{release}
%if 0%{with selinux}
-Requires: ceph-selinux = %{epoch}:%{version}-%{release}
+Requires: ceph-selinux = %{_epoch_prefix}%{version}-%{release}
%endif
Requires: python
Requires: python-requests
@@ -216,17 +244,13 @@ Requires: grep
Requires: xfsprogs
Requires: logrotate
Requires: util-linux
-Requires: hdparm
Requires: cryptsetup
Requires: findutils
+Requires: psmisc
Requires: which
%if 0%{?suse_version}
-Requires: lsb-release
Recommends: ntp-daemon
%endif
-%if 0%{?fedora} || 0%{?rhel}
-Requires: redhat-lsb-core
-%endif
%if 0%{with xio}
Requires: libxio
%endif
@@ -235,13 +259,22 @@ Base is the package that includes all the files shared amongst ceph servers
%package -n ceph-common
Summary: Ceph Common
-Group: System Environment/Base
-Requires: librbd1 = %{epoch}:%{version}-%{release}
-Requires: librados2 = %{epoch}:%{version}-%{release}
-Requires: libcephfs1 = %{epoch}:%{version}-%{release}
-Requires: python-rados = %{epoch}:%{version}-%{release}
-Requires: python-rbd = %{epoch}:%{version}-%{release}
-Requires: python-cephfs = %{epoch}:%{version}-%{release}
+%if 0%{?suse_version}
+Group: System/Filesystems
+%endif
+Requires: librbd1 = %{_epoch_prefix}%{version}-%{release}
+Requires: librados2 = %{_epoch_prefix}%{version}-%{release}
+Requires: libcephfs2 = %{_epoch_prefix}%{version}-%{release}
+Requires: python-rados = %{_epoch_prefix}%{version}-%{release}
+Requires: python-rbd = %{_epoch_prefix}%{version}-%{release}
+Requires: python-cephfs = %{_epoch_prefix}%{version}-%{release}
+Requires: python-rgw = %{_epoch_prefix}%{version}-%{release}
+%if 0%{?fedora} || 0%{?rhel}
+Requires: python-prettytable
+%endif
+%if 0%{?suse_version}
+Requires: python-PrettyTable
+%endif
Requires: python-requests
%{?systemd_requires}
%if 0%{?suse_version}
@@ -256,8 +289,10 @@ Comprised of files that are common to Ceph clients and servers.
%package mds
Summary: Ceph Metadata Server Daemon
-Group: System Environment/Base
-Requires: ceph-base = %{epoch}:%{version}-%{release}
+%if 0%{?suse_version}
+Group: System/Filesystems
+%endif
+Requires: ceph-base = %{_epoch_prefix}%{version}-%{release}
%description mds
ceph-mds is the metadata server daemon for the Ceph distributed file system.
One or more instances of ceph-mds collectively manage the file system
@@ -265,8 +300,10 @@ namespace, coordinating access to the shared OSD cluster.
%package mon
Summary: Ceph Monitor Daemon
-Group: System Environment/Base
-Requires: ceph-base = %{epoch}:%{version}-%{release}
+%if 0%{?suse_version}
+Group: System/Filesystems
+%endif
+Requires: ceph-base = %{_epoch_prefix}%{version}-%{release}
# For ceph-rest-api
%if 0%{?fedora} || 0%{?rhel}
Requires: python-flask
@@ -280,54 +317,81 @@ system. One or more instances of ceph-mon form a Paxos part-time
parliament cluster that provides extremely reliable and durable storage
of cluster membership, configuration, and state.
+%package mgr
+Summary: Ceph Manager Daemon
+%if 0%{?suse_version}
+Group: System/Filesystems
+%endif
+Requires: ceph-base = %{_epoch_prefix}%{version}-%{release}
+%if 0%{?fedora} || 0%{?rhel}
+Requires: python-cherrypy
+Requires: python-werkzeug
+Requires: pyOpenSSL
+%endif
+%if 0%{?suse_version}
+Requires: python-CherryPy
+Requires: python-Werkzeug
+Requires: python-pyOpenSSL
+%endif
+Requires: python-pecan
+%description mgr
+ceph-mgr enables python modules that provide services (such as the REST
+module derived from Calamari) and expose CLI hooks. ceph-mgr gathers
+the cluster maps, the daemon metadata, and performance counters, and
+exposes all these to the python modules.
+
%package fuse
Summary: Ceph fuse-based client
-Group: System Environment/Base
+%if 0%{?suse_version}
+Group: System/Filesystems
+%endif
%description fuse
FUSE based client for Ceph distributed network file system
%package -n rbd-fuse
Summary: Ceph fuse-based client
-Group: System Environment/Base
-Requires: librados2 = %{epoch}:%{version}-%{release}
-Requires: librbd1 = %{epoch}:%{version}-%{release}
+%if 0%{?suse_version}
+Group: System/Filesystems
+%endif
+Requires: librados2 = %{_epoch_prefix}%{version}-%{release}
+Requires: librbd1 = %{_epoch_prefix}%{version}-%{release}
%description -n rbd-fuse
FUSE based client to map Ceph rbd images to files
%package -n rbd-mirror
Summary: Ceph daemon for mirroring RBD images
-Group: System Environment/Base
-Requires: ceph-common = %{epoch}:%{version}-%{release}
-Requires: librados2 = %{epoch}:%{version}-%{release}
+%if 0%{?suse_version}
+Group: System/Filesystems
+%endif
+Requires: ceph-common = %{_epoch_prefix}%{version}-%{release}
+Requires: librados2 = %{_epoch_prefix}%{version}-%{release}
%description -n rbd-mirror
Daemon for mirroring RBD images between Ceph clusters, streaming
changes asynchronously.
%package -n rbd-nbd
Summary: Ceph RBD client base on NBD
-Group: System Environment/Base
-Requires: librados2 = %{epoch}:%{version}-%{release}
-Requires: librbd1 = %{epoch}:%{version}-%{release}
+%if 0%{?suse_version}
+Group: System/Filesystems
+%endif
+Requires: librados2 = %{_epoch_prefix}%{version}-%{release}
+Requires: librbd1 = %{_epoch_prefix}%{version}-%{release}
%description -n rbd-nbd
NBD based client to map Ceph rbd images to local device
%package radosgw
Summary: Rados REST gateway
-Group: Development/Libraries
-Requires: ceph-common = %{epoch}:%{version}-%{release}
+%if 0%{?suse_version}
+Group: System/Filesystems
+%endif
+Requires: ceph-common = %{_epoch_prefix}%{version}-%{release}
%if 0%{with selinux}
-Requires: ceph-selinux = %{epoch}:%{version}-%{release}
+Requires: ceph-selinux = %{_epoch_prefix}%{version}-%{release}
%endif
-Requires: librados2 = %{epoch}:%{version}-%{release}
-Requires: librgw2 = %{epoch}:%{version}-%{release}
+Requires: librados2 = %{_epoch_prefix}%{version}-%{release}
+Requires: librgw2 = %{_epoch_prefix}%{version}-%{release}
%if 0%{?rhel} || 0%{?fedora}
Requires: mailcap
-# python-flask for powerdns
-Requires: python-flask
-%endif
-%if 0%{?suse_version}
-# python-Flask for powerdns
-Requires: python-Flask
%endif
%description radosgw
RADOS is a distributed object store used by the Ceph distributed
@@ -338,9 +402,10 @@ service as well as the OpenStack Object Storage ("Swift") API.
%if %{with ocf}
%package resource-agents
Summary: OCF-compliant resource agents for Ceph daemons
-Group: System Environment/Base
-License: LGPL-2.0
-Requires: ceph-base = %{epoch}:%{version}
+%if 0%{?suse_version}
+Group: System/Filesystems
+%endif
+Requires: ceph-base = %{_epoch_prefix}%{version}
Requires: resource-agents
%description resource-agents
Resource agents for monitoring and managing Ceph daemons
@@ -350,8 +415,10 @@ managers such as Pacemaker.
%package osd
Summary: Ceph Object Storage Daemon
-Group: System Environment/Base
-Requires: ceph-base = %{epoch}:%{version}-%{release}
+%if 0%{?suse_version}
+Group: System/Filesystems
+%endif
+Requires: ceph-base = %{_epoch_prefix}%{version}-%{release}
# for sgdisk, used by ceph-disk
%if 0%{?fedora} || 0%{?rhel}
Requires: gdisk
@@ -367,10 +434,11 @@ and providing access to them over the network.
%package -n librados2
Summary: RADOS distributed object store client library
-Group: System Environment/Libraries
-License: LGPL-2.0
+%if 0%{?suse_version}
+Group: System/Libraries
+%endif
%if 0%{?rhel} || 0%{?fedora}
-Obsoletes: ceph-libs < %{epoch}:%{version}-%{release}
+Obsoletes: ceph-libs < %{_epoch_prefix}%{version}-%{release}
%endif
%description -n librados2
RADOS is a reliable, autonomic distributed object storage cluster
@@ -380,51 +448,91 @@ store using a simple file-like interface.
%package -n librados-devel
Summary: RADOS headers
-Group: Development/Libraries
-License: LGPL-2.0
-Requires: librados2 = %{epoch}:%{version}-%{release}
-Obsoletes: ceph-devel < %{epoch}:%{version}-%{release}
-Provides: librados2-devel = %{epoch}:%{version}-%{release}
-Obsoletes: librados2-devel < %{epoch}:%{version}-%{release}
+%if 0%{?suse_version}
+Group: Development/Libraries/C and C++
+%endif
+Requires: librados2 = %{_epoch_prefix}%{version}-%{release}
+Obsoletes: ceph-devel < %{_epoch_prefix}%{version}-%{release}
+Provides: librados2-devel = %{_epoch_prefix}%{version}-%{release}
+Obsoletes: librados2-devel < %{_epoch_prefix}%{version}-%{release}
%description -n librados-devel
This package contains libraries and headers needed to develop programs
that use RADOS object store.
%package -n librgw2
Summary: RADOS gateway client library
-Group: System Environment/Libraries
-License: LGPL-2.0
-Requires: librados2 = %{epoch}:%{version}-%{release}
+%if 0%{?suse_version}
+Group: System/Libraries
+%endif
+Requires: librados2 = %{_epoch_prefix}%{version}-%{release}
%description -n librgw2
This package provides a library implementation of the RADOS gateway
(distributed object store with S3 and Swift personalities).
%package -n librgw-devel
Summary: RADOS gateway client library
-Group: Development/Libraries
-License: LGPL-2.0
-Requires: librados2 = %{epoch}:%{version}-%{release}
-Provides: librgw2-devel = %{epoch}:%{version}-%{release}
-Obsoletes: librgw2-devel < %{epoch}:%{version}-%{release}
+%if 0%{?suse_version}
+Group: Development/Libraries/C and C++
+%endif
+Requires: librados-devel = %{_epoch_prefix}%{version}-%{release}
+Requires: librgw2 = %{_epoch_prefix}%{version}-%{release}
+Provides: librgw2-devel = %{_epoch_prefix}%{version}-%{release}
+Obsoletes: librgw2-devel < %{_epoch_prefix}%{version}-%{release}
%description -n librgw-devel
This package contains libraries and headers needed to develop programs
that use RADOS gateway client library.
+%package -n python-rgw
+Summary: Python 2 libraries for the RADOS gateway
+%if 0%{?suse_version}
+Group: Development/Languages/Python
+%endif
+Requires: librgw2 = %{_epoch_prefix}%{version}-%{release}
+Requires: python-rados = %{_epoch_prefix}%{version}-%{release}
+Obsoletes: python-ceph < %{_epoch_prefix}%{version}-%{release}
+%description -n python-rgw
+This package contains Python 2 libraries for interacting with Cephs RADOS
+gateway.
+
+%package -n python%{python3_pkgversion}-rgw
+Summary: Python 3 libraries for the RADOS gateway
+%if 0%{?suse_version}
+Group: Development/Languages/Python
+%endif
+Requires: librgw2 = %{_epoch_prefix}%{version}-%{release}
+Requires: python%{python3_pkgversion}-rados = %{_epoch_prefix}%{version}-%{release}
+%description -n python%{python3_pkgversion}-rgw
+This package contains Python 3 libraries for interacting with Cephs RADOS
+gateway.
+
%package -n python-rados
-Summary: Python libraries for the RADOS object store
-Group: System Environment/Libraries
-License: LGPL-2.0
-Requires: librados2 = %{epoch}:%{version}-%{release}
-Obsoletes: python-ceph < %{epoch}:%{version}-%{release}
+Summary: Python 2 libraries for the RADOS object store
+%if 0%{?suse_version}
+Group: Development/Languages/Python
+%endif
+Requires: librados2 = %{_epoch_prefix}%{version}-%{release}
+Obsoletes: python-ceph < %{_epoch_prefix}%{version}-%{release}
%description -n python-rados
-This package contains Python libraries for interacting with Cephs RADOS
+This package contains Python 2 libraries for interacting with Cephs RADOS
+object store.
+
+%package -n python%{python3_pkgversion}-rados
+Summary: Python 3 libraries for the RADOS object store
+%if 0%{?suse_version}
+Group: Development/Languages/Python
+%endif
+Requires: python%{python3_pkgversion}
+Requires: librados2 = %{_epoch_prefix}%{version}-%{release}
+%description -n python%{python3_pkgversion}-rados
+This package contains Python 3 libraries for interacting with Cephs RADOS
object store.
%package -n libradosstriper1
Summary: RADOS striping interface
-Group: System Environment/Libraries
-License: LGPL-2.0
-Requires: librados2 = %{epoch}:%{version}-%{release}
+%if 0%{?suse_version}
+Group: System/Libraries
+%endif
+Requires: librados2 = %{_epoch_prefix}%{version}-%{release}
%description -n libradosstriper1
Striping interface built on top of the rados library, allowing
to stripe bigger objects onto several standard rados objects using
@@ -432,24 +540,29 @@ an interface very similar to the rados one.
%package -n libradosstriper-devel
Summary: RADOS striping interface headers
-Group: Development/Libraries
-License: LGPL-2.0
-Requires: libradosstriper1 = %{epoch}:%{version}-%{release}
-Requires: librados-devel = %{epoch}:%{version}-%{release}
-Obsoletes: ceph-devel < %{epoch}:%{version}-%{release}
-Provides: libradosstriper1-devel = %{epoch}:%{version}-%{release}
-Obsoletes: libradosstriper1-devel < %{epoch}:%{version}-%{release}
+%if 0%{?suse_version}
+Group: Development/Libraries/C and C++
+%endif
+Requires: libradosstriper1 = %{_epoch_prefix}%{version}-%{release}
+Requires: librados-devel = %{_epoch_prefix}%{version}-%{release}
+Obsoletes: ceph-devel < %{_epoch_prefix}%{version}-%{release}
+Provides: libradosstriper1-devel = %{_epoch_prefix}%{version}-%{release}
+Obsoletes: libradosstriper1-devel < %{_epoch_prefix}%{version}-%{release}
%description -n libradosstriper-devel
This package contains libraries and headers needed to develop programs
that use RADOS striping interface.
%package -n librbd1
Summary: RADOS block device client library
-Group: System Environment/Libraries
-License: LGPL-2.0
-Requires: librados2 = %{epoch}:%{version}-%{release}
+%if 0%{?suse_version}
+Group: System/Libraries
+%endif
+Requires: librados2 = %{_epoch_prefix}%{version}-%{release}
+%if 0%{?suse_version}
+Requires(post): coreutils
+%endif
%if 0%{?rhel} || 0%{?fedora}
-Obsoletes: ceph-libs < %{epoch}:%{version}-%{release}
+Obsoletes: ceph-libs < %{_epoch_prefix}%{version}-%{release}
%endif
%description -n librbd1
RBD is a block device striped across multiple distributed objects in
@@ -459,37 +572,52 @@ shared library allowing applications to manage these block devices.
%package -n librbd-devel
Summary: RADOS block device headers
-Group: Development/Libraries
-License: LGPL-2.0
-Requires: librbd1 = %{epoch}:%{version}-%{release}
-Requires: librados-devel = %{epoch}:%{version}-%{release}
-Obsoletes: ceph-devel < %{epoch}:%{version}-%{release}
-Provides: librbd1-devel = %{epoch}:%{version}-%{release}
-Obsoletes: librbd1-devel < %{epoch}:%{version}-%{release}
+%if 0%{?suse_version}
+Group: Development/Libraries/C and C++
+%endif
+Requires: librbd1 = %{_epoch_prefix}%{version}-%{release}
+Requires: librados-devel = %{_epoch_prefix}%{version}-%{release}
+Obsoletes: ceph-devel < %{_epoch_prefix}%{version}-%{release}
+Provides: librbd1-devel = %{_epoch_prefix}%{version}-%{release}
+Obsoletes: librbd1-devel < %{_epoch_prefix}%{version}-%{release}
%description -n librbd-devel
This package contains libraries and headers needed to develop programs
that use RADOS block device.
%package -n python-rbd
-Summary: Python libraries for the RADOS block device
-Group: System Environment/Libraries
-License: LGPL-2.0
-Requires: librbd1 = %{epoch}:%{version}-%{release}
-Requires: python-rados = %{epoch}:%{version}-%{release}
-Obsoletes: python-ceph < %{epoch}:%{version}-%{release}
+Summary: Python 2 libraries for the RADOS block device
+%if 0%{?suse_version}
+Group: Development/Languages/Python
+%endif
+Requires: librbd1 = %{_epoch_prefix}%{version}-%{release}
+Requires: python-rados = %{_epoch_prefix}%{version}-%{release}
+Obsoletes: python-ceph < %{_epoch_prefix}%{version}-%{release}
%description -n python-rbd
-This package contains Python libraries for interacting with Cephs RADOS
+This package contains Python 2 libraries for interacting with Cephs RADOS
block device.
-%package -n libcephfs1
+%package -n python%{python3_pkgversion}-rbd
+Summary: Python 3 libraries for the RADOS block device
+%if 0%{?suse_version}
+Group: Development/Languages/Python
+%endif
+Requires: librbd1 = %{_epoch_prefix}%{version}-%{release}
+Requires: python%{python3_pkgversion}-rados = %{_epoch_prefix}%{version}-%{release}
+%description -n python%{python3_pkgversion}-rbd
+This package contains Python 3 libraries for interacting with Cephs RADOS
+block device.
+
+%package -n libcephfs2
Summary: Ceph distributed file system client library
-Group: System Environment/Libraries
-License: LGPL-2.0
+%if 0%{?suse_version}
+Group: System/Libraries
+%endif
+Obsoletes: libcephfs1
%if 0%{?rhel} || 0%{?fedora}
-Obsoletes: ceph-libs < %{epoch}:%{version}-%{release}
+Obsoletes: ceph-libs < %{_epoch_prefix}%{version}-%{release}
Obsoletes: ceph-libcephfs
%endif
-%description -n libcephfs1
+%description -n libcephfs2
Ceph is a distributed network file system designed to provide excellent
performance, reliability, and scalability. This is a shared library
allowing applications to access a Ceph distributed file system via a
@@ -497,68 +625,101 @@ POSIX-like interface.
%package -n libcephfs-devel
Summary: Ceph distributed file system headers
-Group: Development/Libraries
-License: LGPL-2.0
-Requires: libcephfs1 = %{epoch}:%{version}-%{release}
-Requires: librados-devel = %{epoch}:%{version}-%{release}
-Obsoletes: ceph-devel < %{epoch}:%{version}-%{release}
-Provides: libcephfs1-devel = %{epoch}:%{version}-%{release}
-Obsoletes: libcephfs1-devel < %{epoch}:%{version}-%{release}
+%if 0%{?suse_version}
+Group: Development/Libraries/C and C++
+%endif
+Requires: libcephfs2 = %{_epoch_prefix}%{version}-%{release}
+Requires: librados-devel = %{_epoch_prefix}%{version}-%{release}
+Obsoletes: ceph-devel < %{_epoch_prefix}%{version}-%{release}
+Provides: libcephfs2-devel = %{_epoch_prefix}%{version}-%{release}
+Obsoletes: libcephfs2-devel < %{_epoch_prefix}%{version}-%{release}
%description -n libcephfs-devel
This package contains libraries and headers needed to develop programs
that use Cephs distributed file system.
%package -n python-cephfs
-Summary: Python libraries for Ceph distributed file system
-Group: System Environment/Libraries
-License: LGPL-2.0
-Requires: libcephfs1 = %{epoch}:%{version}-%{release}
-Requires: python-rados = %{epoch}:%{version}-%{release}
-Obsoletes: python-ceph < %{epoch}:%{version}-%{release}
+Summary: Python 2 libraries for Ceph distributed file system
+%if 0%{?suse_version}
+Group: Development/Languages/Python
+%endif
+Requires: libcephfs2 = %{_epoch_prefix}%{version}-%{release}
+%if 0%{?suse_version}
+Recommends: python-rados = %{_epoch_prefix}%{version}-%{release}
+%endif
+Obsoletes: python-ceph < %{_epoch_prefix}%{version}-%{release}
%description -n python-cephfs
-This package contains Python libraries for interacting with Cephs distributed
+This package contains Python 2 libraries for interacting with Cephs distributed
+file system.
+
+%package -n python%{python3_pkgversion}-cephfs
+Summary: Python 3 libraries for Ceph distributed file system
+%if 0%{?suse_version}
+Group: Development/Languages/Python
+%endif
+Requires: libcephfs2 = %{_epoch_prefix}%{version}-%{release}
+Requires: python%{python3_pkgversion}-rados = %{_epoch_prefix}%{version}-%{release}
+%description -n python%{python3_pkgversion}-cephfs
+This package contains Python 3 libraries for interacting with Cephs distributed
file system.
+%package -n python%{python3_pkgversion}-ceph-argparse
+Summary: Python 3 utility libraries for Ceph CLI
+%if 0%{?suse_version}
+Group: Development/Languages/Python
+%endif
+%description -n python%{python3_pkgversion}-ceph-argparse
+This package contains types and routines for Python 3 used by the Ceph CLI as
+well as the RESTful interface. These have to do with querying the daemons for
+command-description information, validating user command input against those
+descriptions, and submitting the command to the appropriate daemon.
+
+%if 0%{with ceph_test_package}
%package -n ceph-test
Summary: Ceph benchmarks and test tools
-Group: System Environment/Libraries
-License: LGPL-2.0
+%if 0%{?suse_version}
+Group: System/Benchmark
+%endif
Requires: ceph-common
Requires: xmlstarlet
+Requires: jq
%description -n ceph-test
This package contains Ceph benchmarks and test tools.
+%endif
%if 0%{with cephfs_java}
%package -n libcephfs_jni1
Summary: Java Native Interface library for CephFS Java bindings
-Group: System Environment/Libraries
-License: LGPL-2.0
+%if 0%{?suse_version}
+Group: System/Libraries
+%endif
Requires: java
-Requires: libcephfs1 = %{epoch}:%{version}-%{release}
+Requires: libcephfs2 = %{_epoch_prefix}%{version}-%{release}
%description -n libcephfs_jni1
This package contains the Java Native Interface library for CephFS Java
bindings.
%package -n libcephfs_jni-devel
Summary: Development files for CephFS Java Native Interface library
-Group: System Environment/Libraries
-License: LGPL-2.0
+%if 0%{?suse_version}
+Group: Development/Libraries/Java
+%endif
Requires: java
-Requires: libcephfs_jni1 = %{epoch}:%{version}-%{release}
-Obsoletes: ceph-devel < %{epoch}:%{version}-%{release}
-Provides: libcephfs_jni1-devel = %{epoch}:%{version}-%{release}
-Obsoletes: libcephfs_jni1-devel < %{epoch}:%{version}-%{release}
+Requires: libcephfs_jni1 = %{_epoch_prefix}%{version}-%{release}
+Obsoletes: ceph-devel < %{_epoch_prefix}%{version}-%{release}
+Provides: libcephfs_jni1-devel = %{_epoch_prefix}%{version}-%{release}
+Obsoletes: libcephfs_jni1-devel < %{_epoch_prefix}%{version}-%{release}
%description -n libcephfs_jni-devel
This package contains the development files for CephFS Java Native Interface
library.
%package -n cephfs-java
Summary: Java libraries for the Ceph File System
-Group: System Environment/Libraries
-License: LGPL-2.0
+%if 0%{?suse_version}
+Group: System/Libraries
+%endif
Requires: java
-Requires: libcephfs_jni1 = %{epoch}:%{version}-%{release}
+Requires: libcephfs_jni1 = %{_epoch_prefix}%{version}-%{release}
Requires: junit
BuildRequires: junit
%description -n cephfs-java
@@ -566,13 +727,24 @@ This package contains the Java libraries for the Ceph File System.
%endif
+%package -n rados-objclass-devel
+Summary: RADOS object class development kit
+Group: Development/Libraries
+Requires: librados2-devel = %{_epoch_prefix}%{version}-%{release}
+%description -n rados-objclass-devel
+This package contains libraries and headers needed to develop RADOS object
+class plugins.
+
%if 0%{with selinux}
%package selinux
Summary: SELinux support for Ceph MON, OSD and MDS
-Group: System Environment/Base
-Requires: ceph-base = %{epoch}:%{version}-%{release}
+%if 0%{?suse_version}
+Group: System/Filesystems
+%endif
+Requires: ceph-base = %{_epoch_prefix}%{version}-%{release}
Requires: policycoreutils, libselinux-utils
+Requires(post): ceph-base = %{_epoch_prefix}%{version}-%{release}
Requires(post): selinux-policy-base >= %{_selinux_policy_version}, policycoreutils, gawk
Requires(postun): policycoreutils
%description selinux
@@ -582,66 +754,28 @@ populated file-systems.
%endif
-%if 0%{with libs_compat}
-
-%package libs-compat
-Summary: Meta package to include ceph libraries
-Group: System Environment/Libraries
-License: LGPL-2.0
-Obsoletes: ceph-libs
-Requires: librados2 = %{epoch}:%{version}-%{release}
-Requires: librbd1 = %{epoch}:%{version}-%{release}
-Requires: libcephfs1 = %{epoch}:%{version}-%{release}
-Provides: ceph-libs
-
-%description libs-compat
-This is a meta package, that pulls in librados2, librbd1 and libcephfs1. It
-is included for backwards compatibility with distributions that depend on the
-former ceph-libs package, which is now split up into these three subpackages.
-Packages still depending on ceph-libs should be fixed to depend on librados2,
-librbd1 or libcephfs1 instead.
-
-%endif
-
-%package devel-compat
-Summary: Compatibility package for Ceph headers
-Group: Development/Libraries
-License: LGPL-2.0
-Obsoletes: ceph-devel
-Requires: librados-devel = %{epoch}:%{version}-%{release}
-Requires: libradosstriper-devel = %{epoch}:%{version}-%{release}
-Requires: librbd-devel = %{epoch}:%{version}-%{release}
-Requires: libcephfs-devel = %{epoch}:%{version}-%{release}
-%if 0%{with cephfs_java}
-Requires: libcephfs_jni-devel = %{epoch}:%{version}-%{release}
-%endif
-Provides: ceph-devel
-%description devel-compat
-This is a compatibility package to accommodate ceph-devel split into
-librados2-devel, librbd1-devel and libcephfs1-devel. Packages still depending
-on ceph-devel should be fixed to depend on librados2-devel, librbd1-devel,
-libcephfs1-devel or libradosstriper1-devel instead.
-
%package -n python-ceph-compat
Summary: Compatibility package for Cephs python libraries
-Group: System Environment/Libraries
-License: LGPL-2.0
+%if 0%{?suse_version}
+Group: Development/Languages/Python
+%endif
Obsoletes: python-ceph
-Requires: python-rados = %{epoch}:%{version}-%{release}
-Requires: python-rbd = %{epoch}:%{version}-%{release}
-Requires: python-cephfs = %{epoch}:%{version}-%{release}
+Requires: python-rados = %{_epoch_prefix}%{version}-%{release}
+Requires: python-rbd = %{_epoch_prefix}%{version}-%{release}
+Requires: python-cephfs = %{_epoch_prefix}%{version}-%{release}
+Requires: python-rgw = %{_epoch_prefix}%{version}-%{release}
Provides: python-ceph
%description -n python-ceph-compat
This is a compatibility package to accommodate python-ceph split into
-python-rados, python-rbd and python-cephfs. Packages still depending on
-python-ceph should be fixed to depend on python-rados, python-rbd or
-python-cephfs instead.
+python-rados, python-rbd, python-rgw and python-cephfs. Packages still
+depending on python-ceph should be fixed to depend on python-rados,
+python-rbd, python-rgw or python-cephfs instead.
#################################################################################
# common
#################################################################################
%prep
-%autosetup -p1
+%autosetup -p1 -n ceph-12.1.1
%build
%if 0%{with cephfs_java}
@@ -651,77 +785,95 @@ for i in /usr/{lib64,lib}/jvm/java/include{,/linux}; do
done
%endif
-./autogen.sh
-
%if %{with lowmem_builder}
RPM_OPT_FLAGS="$RPM_OPT_FLAGS --param ggc-min-expand=20 --param ggc-min-heapsize=32768"
%endif
export RPM_OPT_FLAGS=`echo $RPM_OPT_FLAGS | sed -e 's/i386/i486/'`
-%ifarch s390
-# Decrease debuginfo verbosity to reduce memory consumption even more
-export RPM_OPT_FLAGS=`echo $RPM_OPT_FLAGS | sed -e 's/-g /-g1 /'`
+
+export CPPFLAGS="$java_inc"
+export CFLAGS="$RPM_OPT_FLAGS"
+export CXXFLAGS="$RPM_OPT_FLAGS"
+
+env | sort
+
+%if %{with lowmem_builder}
+%if 0%{?jobs} > 8
+%define _smp_mflags -j8
+%endif
%endif
-%{configure} CPPFLAGS="$java_inc" \
- --prefix=/usr \
- --libexecdir=%{_libexecdir} \
- --localstatedir=%{_localstatedir} \
- --sysconfdir=%{_sysconfdir} \
+# unlimit _smp_mflags in system macro if not set above
+%define _smp_ncpus_max 0
+# extract the number of processors for use with cmake
+%define _smp_ncpus %(echo %{_smp_mflags} | sed 's/-j//')
+
+mkdir build
+cd build
+cmake .. \
+ -DCMAKE_INSTALL_PREFIX=%{_prefix} \
+ -DCMAKE_INSTALL_LIBDIR=%{_libdir} \
+ -DCMAKE_INSTALL_LIBEXECDIR=%{_libexecdir} \
+ -DCMAKE_INSTALL_LOCALSTATEDIR=%{_localstatedir} \
+ -DCMAKE_INSTALL_SYSCONFDIR=%{_sysconfdir} \
+ -DCMAKE_INSTALL_MANDIR=%{_mandir} \
+ -DCMAKE_INSTALL_DOCDIR=%{_docdir}/ceph \
+ -DWITH_EMBEDDED=OFF \
+ -DWITH_MANPAGE=ON \
+ -DWITH_PYTHON3=ON \
+ -DWITH_SYSTEMD=ON \
%if 0%{?rhel} && ! 0%{?centos}
- --enable-subman \
-%endif
- --with-systemdsystemunitdir=%_unitdir \
- --docdir=%{_docdir}/ceph \
- --with-man-pages \
- --mandir="%_mandir" \
- --with-nss \
- --without-cryptopp \
- --with-debug \
-%if 0%{with cephfs_java}
- --enable-cephfs-java \
+ -DWITH_SUBMAN=ON \
%endif
%if 0%{with xio}
- --enable-xio \
+ -DWITH_XIO=ON \
%endif
-%if 0%{with selinux}
- --with-selinux \
+%if 0%{without ceph_test_package}
+ -DWITH_TESTS=OFF \
%endif
- --with-librocksdb-static=check \
- --with-radosgw \
-%if %{without lttng}
- --without-lttng \
- --without-babeltrace \
+%if 0%{with cephfs_java}
+ -DWITH_CEPHFS_JAVA=ON \
%endif
- $CEPH_EXTRA_CONFIGURE_ARGS \
- %{?_with_ocf} \
-%if %{without tcmalloc}
- --without-tcmalloc \
+%if 0%{with selinux}
+ -DWITH_SELINUX=ON \
%endif
- CFLAGS="$RPM_OPT_FLAGS" CXXFLAGS="$RPM_OPT_FLAGS"
-
-%if %{with lowmem_builder}
-%if 0%{?jobs} > 8
-%define _smp_mflags -j8
+%if %{with lttng}
+ -DWITH_LTTNG=ON \
+ -DWTIH_BABELTRACE=ON \
+%else
+ -DWITH_LTTNG=OFF \
+ -DWTIH_BABELTRACE=OFF \
+%endif
+ $CEPH_EXTRA_CMAKE_ARGS \
+%if 0%{with ocf}
+ -DWITH_OCF=ON \
%endif
+%ifarch aarch64 armv7hl mips mipsel ppc ppc64 ppc64le %{ix86} x86_64
+ -DWITH_RADOSGW_BEAST_FRONTEND=ON \
+%else
+ -DWITH_RADOSGW_BEAST_FRONTEND=OFF \
%endif
+ -DBOOST_J=%{_smp_ncpus}
make %{?_smp_mflags}
-%if 0%{with tests}
+%if 0%{with make_check}
%check
# run in-tree unittests
-make %{?_smp_mflags} check
+cd build
+ctest %{?_smp_mflags}
%endif
%install
+pushd build
make DESTDIR=%{buildroot} install
-find %{buildroot} -type f -name "*.la" -exec rm -f {} ';'
-find %{buildroot} -type f -name "*.a" -exec rm -f {} ';'
-install -D src/etc-rbdmap %{buildroot}%{_sysconfdir}/ceph/rbdmap
+# we have dropped sysvinit bits
+rm -f %{buildroot}/%{_sysconfdir}/init.d/ceph
+popd
+install -m 0644 -D src/etc-rbdmap %{buildroot}%{_sysconfdir}/ceph/rbdmap
%if 0%{?fedora} || 0%{?rhel}
install -m 0644 -D etc/sysconfig/ceph %{buildroot}%{_sysconfdir}/sysconfig/ceph
%endif
@@ -734,7 +886,7 @@ install -m 0644 -D systemd/50-ceph.preset %{buildroot}%{_libexecdir}/systemd/sys
mkdir -p %{buildroot}%{_sbindir}
install -m 0644 -D src/logrotate.conf %{buildroot}%{_sysconfdir}/logrotate.d/ceph
chmod 0644 %{buildroot}%{_docdir}/ceph/sample.ceph.conf
-chmod 0644 %{buildroot}%{_docdir}/ceph/sample.fetch_config
+install -m 0644 -D COPYING %{buildroot}%{_docdir}/ceph/COPYING
# firewall templates and /sbin/mount.ceph symlink
%if 0%{?suse_version}
@@ -757,10 +909,17 @@ mkdir -p %{buildroot}%{_localstatedir}/lib/ceph/tmp
mkdir -p %{buildroot}%{_localstatedir}/lib/ceph/mon
mkdir -p %{buildroot}%{_localstatedir}/lib/ceph/osd
mkdir -p %{buildroot}%{_localstatedir}/lib/ceph/mds
+mkdir -p %{buildroot}%{_localstatedir}/lib/ceph/mgr
mkdir -p %{buildroot}%{_localstatedir}/lib/ceph/radosgw
mkdir -p %{buildroot}%{_localstatedir}/lib/ceph/bootstrap-osd
mkdir -p %{buildroot}%{_localstatedir}/lib/ceph/bootstrap-mds
mkdir -p %{buildroot}%{_localstatedir}/lib/ceph/bootstrap-rgw
+mkdir -p %{buildroot}%{_localstatedir}/lib/ceph/bootstrap-mgr
+
+%if 0%{?suse_version}
+# create __pycache__ directories and their contents
+%py3_compile %{buildroot}%{python3_sitelib}
+%endif
%clean
rm -rf %{buildroot}
@@ -771,21 +930,14 @@ rm -rf %{buildroot}
%files
%files base
-%defattr(-,root,root,-)
-%docdir %{_docdir}
-%dir %{_docdir}/ceph
-%{_docdir}/ceph/sample.ceph.conf
-%{_docdir}/ceph/sample.fetch_config
%{_bindir}/crushtool
%{_bindir}/monmaptool
%{_bindir}/osdmaptool
%{_bindir}/ceph-run
%{_bindir}/ceph-detect-init
-%{_bindir}/ceph-client-debug
-%{_bindir}/cephfs
-%{_unitdir}/ceph-create-keys@.service
%{_libexecdir}/systemd/system-preset/50-ceph.preset
%{_sbindir}/ceph-create-keys
+%{_sbindir}/ceph-disk
%{_sbindir}/rcceph
%dir %{_libexecdir}/ceph
%{_libexecdir}/ceph/ceph_common.sh
@@ -796,11 +948,14 @@ rm -rf %{buildroot}
%{_libdir}/ceph/erasure-code/libec_*.so*
%dir %{_libdir}/ceph/compressor
%{_libdir}/ceph/compressor/libceph_*.so*
+%ifarch x86_64
+%dir %{_libdir}/ceph/crypto
+%{_libdir}/ceph/crypto/libceph_*.so*
+%endif
%if %{with lttng}
%{_libdir}/libos_tp.so*
%{_libdir}/libosd_tp.so*
%endif
-%config %{_sysconfdir}/bash_completion.d/ceph
%config(noreplace) %{_sysconfdir}/logrotate.d/ceph
%if 0%{?fedora} || 0%{?rhel}
%config(noreplace) %{_sysconfdir}/sysconfig/ceph
@@ -810,57 +965,74 @@ rm -rf %{buildroot}
%config %{_sysconfdir}/sysconfig/SuSEfirewall2.d/services/ceph-mon
%config %{_sysconfdir}/sysconfig/SuSEfirewall2.d/services/ceph-osd-mds
%endif
+%{_unitdir}/ceph-disk@.service
%{_unitdir}/ceph.target
%{python_sitelib}/ceph_detect_init*
%{python_sitelib}/ceph_disk*
%{_mandir}/man8/ceph-deploy.8*
%{_mandir}/man8/ceph-detect-init.8*
%{_mandir}/man8/ceph-create-keys.8*
+%{_mandir}/man8/ceph-disk.8*
%{_mandir}/man8/ceph-run.8*
%{_mandir}/man8/crushtool.8*
%{_mandir}/man8/osdmaptool.8*
%{_mandir}/man8/monmaptool.8*
-%{_mandir}/man8/cephfs.8*
#set up placeholder directories
%attr(750,ceph,ceph) %dir %{_localstatedir}/lib/ceph/tmp
%attr(750,ceph,ceph) %dir %{_localstatedir}/lib/ceph/bootstrap-osd
%attr(750,ceph,ceph) %dir %{_localstatedir}/lib/ceph/bootstrap-mds
%attr(750,ceph,ceph) %dir %{_localstatedir}/lib/ceph/bootstrap-rgw
+%attr(750,ceph,ceph) %dir %{_localstatedir}/lib/ceph/bootstrap-mgr
%post base
/sbin/ldconfig
%if 0%{?suse_version}
%fillup_only
-if [ $1 -ge 1 ] ; then
- /usr/bin/systemctl preset ceph.target >/dev/null 2>&1 || :
+if [ $1 -eq 1 ] ; then
+ /usr/bin/systemctl preset ceph-disk(a)\*.service ceph.target >/dev/null 2>&1 || :
fi
%endif
%if 0%{?fedora} || 0%{?rhel}
-%systemd_post ceph.target
+%systemd_post ceph-disk(a)\*.service ceph.target
%endif
+if [ $1 -eq 1 ] ; then
/usr/bin/systemctl start ceph.target >/dev/null 2>&1 || :
+fi
%preun base
%if 0%{?suse_version}
-%service_del_preun ceph.target
+%service_del_preun ceph-disk(a)\*.service ceph.target
%endif
%if 0%{?fedora} || 0%{?rhel}
-%systemd_preun ceph.target
+%systemd_preun ceph-disk(a)\*.service ceph.target
%endif
%postun base
/sbin/ldconfig
+test -n "$FIRST_ARG" || FIRST_ARG=$1
%if 0%{?suse_version}
DISABLE_RESTART_ON_UPDATE="yes"
-%service_del_postun ceph.target
+%service_del_postun ceph-disk(a)\*.service ceph.target
%endif
%if 0%{?fedora} || 0%{?rhel}
-%systemd_postun ceph.target
+%systemd_postun ceph-disk(a)\*.service ceph.target
%endif
+if [ $FIRST_ARG -ge 1 ] ; then
+ # Restart on upgrade, but only if "CEPH_AUTO_RESTART_ON_UPGRADE" is set to
+ # "yes". In any case: if units are not running, do not touch them.
+ SYSCONF_CEPH=%{_sysconfdir}/sysconfig/ceph
+ if [ -f $SYSCONF_CEPH -a -r $SYSCONF_CEPH ] ; then
+ source $SYSCONF_CEPH
+ fi
+ if [ "X$CEPH_AUTO_RESTART_ON_UPGRADE" = "Xyes" ] ; then
+ /usr/bin/systemctl try-restart ceph-disk(a)\*.service > /dev/null 2>&1 || :
+ fi
+fi
-#################################################################################
%files common
-%defattr(-,root,root,-)
+%dir %{_docdir}/ceph
+%doc %{_docdir}/ceph/sample.ceph.conf
+%doc %{_docdir}/ceph/COPYING
%{_bindir}/ceph
%{_bindir}/ceph-authtool
%{_bindir}/ceph-conf
@@ -872,6 +1044,7 @@ DISABLE_RESTART_ON_UPDATE="yes"
%{_bindir}/cephfs-journal-tool
%{_bindir}/cephfs-table-tool
%{_bindir}/rados
+%{_bindir}/radosgw-admin
%{_bindir}/rbd
%{_bindir}/rbd-replay
%{_bindir}/rbd-replay-many
@@ -895,6 +1068,7 @@ DISABLE_RESTART_ON_UPDATE="yes"
%{_mandir}/man8/ceph.8*
%{_mandir}/man8/mount.ceph.8*
%{_mandir}/man8/rados.8*
+%{_mandir}/man8/radosgw-admin.8*
%{_mandir}/man8/rbd.8*
%{_mandir}/man8/rbdmap.8*
%{_mandir}/man8/rbd-replay.8*
@@ -905,8 +1079,10 @@ DISABLE_RESTART_ON_UPDATE="yes"
%{_datadir}/ceph/id_rsa_drop.ceph.com
%{_datadir}/ceph/id_rsa_drop.ceph.com.pub
%dir %{_sysconfdir}/ceph/
+%config %{_sysconfdir}/bash_completion.d/ceph
%config %{_sysconfdir}/bash_completion.d/rados
%config %{_sysconfdir}/bash_completion.d/rbd
+%config %{_sysconfdir}/bash_completion.d/radosgw-admin
%config(noreplace) %{_sysconfdir}/ceph/rbdmap
%{_unitdir}/rbdmap.service
%{python_sitelib}/ceph_argparse.py*
@@ -935,7 +1111,7 @@ if ! getent passwd ceph >/dev/null ; then
useradd ceph $CEPH_USER_ID_OPTION -r -g ceph -s /sbin/nologin 2>/dev/null || :
fi
usermod -c "Ceph storage service" \
- -d %{_localstatedir}/lib/ceph \
+ -d %{_localstatedir}/lib/ceph \
-g ceph \
-s /sbin/nologin \
ceph
@@ -952,7 +1128,6 @@ if [ "$1" -eq "0" ] ; then
rm -rf %{_sysconfdir}/ceph
fi
-#################################################################################
%files mds
%{_bindir}/ceph-mds
%{_mandir}/man8/ceph-mds.8*
@@ -962,14 +1137,16 @@ fi
%post mds
%if 0%{?suse_version}
-if [ $1 -ge 1 ] ; then
+if [ $1 -eq 1 ] ; then
/usr/bin/systemctl preset ceph-mds(a)\*.service ceph-mds.target >/dev/null 2>&1 || :
fi
%endif
%if 0%{?fedora} || 0%{?rhel}
%systemd_post ceph-mds(a)\*.service ceph-mds.target
%endif
+if [ $1 -eq 1 ] ; then
/usr/bin/systemctl start ceph-mds.target >/dev/null 2>&1 || :
+fi
%preun mds
%if 0%{?suse_version}
@@ -1000,7 +1177,55 @@ if [ $FIRST_ARG -ge 1 ] ; then
fi
fi
-#################################################################################
+%files mgr
+%{_bindir}/ceph-mgr
+%{_libdir}/ceph/mgr
+%{_unitdir}/ceph-mgr@.service
+%{_unitdir}/ceph-mgr.target
+%attr(750,ceph,ceph) %dir %{_localstatedir}/lib/ceph/mgr
+
+%post mgr
+%if 0%{?suse_version}
+if [ $1 -eq 1 ] ; then
+ /usr/bin/systemctl preset ceph-mgr(a)\*.service ceph-mgr.target >/dev/null 2>&1 || :
+fi
+%endif
+%if 0%{?fedora} || 0%{?rhel}
+%systemd_post ceph-mgr(a)\*.service ceph-mgr.target
+%endif
+if [ $1 -eq 1 ] ; then
+/usr/bin/systemctl start ceph-mgr.target >/dev/null 2>&1 || :
+fi
+
+%preun mgr
+%if 0%{?suse_version}
+%service_del_preun ceph-mgr(a)\*.service ceph-mgr.target
+%endif
+%if 0%{?fedora} || 0%{?rhel}
+%systemd_preun ceph-mgr(a)\*.service ceph-mgr.target
+%endif
+
+%postun mgr
+test -n "$FIRST_ARG" || FIRST_ARG=$1
+%if 0%{?suse_version}
+DISABLE_RESTART_ON_UPDATE="yes"
+%service_del_postun ceph-mgr(a)\*.service ceph-mgr.target
+%endif
+%if 0%{?fedora} || 0%{?rhel}
+%systemd_postun ceph-mgr(a)\*.service ceph-mgr.target
+%endif
+if [ $FIRST_ARG -ge 1 ] ; then
+ # Restart on upgrade, but only if "CEPH_AUTO_RESTART_ON_UPGRADE" is set to
+ # "yes". In any case: if units are not running, do not touch them.
+ SYSCONF_CEPH=%{_sysconfdir}/sysconfig/ceph
+ if [ -f $SYSCONF_CEPH -a -r $SYSCONF_CEPH ] ; then
+ source $SYSCONF_CEPH
+ fi
+ if [ "X$CEPH_AUTO_RESTART_ON_UPGRADE" = "Xyes" ] ; then
+ /usr/bin/systemctl try-restart ceph-mgr(a)\*.service > /dev/null 2>&1 || :
+ fi
+fi
+
%files mon
%{_bindir}/ceph-mon
%{_bindir}/ceph-rest-api
@@ -1013,31 +1238,33 @@ fi
%post mon
%if 0%{?suse_version}
-if [ $1 -ge 1 ] ; then
- /usr/bin/systemctl preset ceph-create-keys(a)\*.service ceph-mon(a)\*.service ceph-mon.target >/dev/null 2>&1 || :
+if [ $1 -eq 1 ] ; then
+ /usr/bin/systemctl preset ceph-mon(a)\*.service ceph-mon.target >/dev/null 2>&1 || :
fi
%endif
%if 0%{?fedora} || 0%{?rhel}
-%systemd_post ceph-create-keys(a)\*.service ceph-mon(a)\*.service ceph-mon.target
+%systemd_post ceph-mon(a)\*.service ceph-mon.target
%endif
+if [ $1 -eq 1 ] ; then
/usr/bin/systemctl start ceph-mon.target >/dev/null 2>&1 || :
+fi
%preun mon
%if 0%{?suse_version}
-%service_del_preun ceph-create-keys(a)\*.service ceph-mon(a)\*.service ceph-mon.target
+%service_del_preun ceph-mon(a)\*.service ceph-mon.target
%endif
%if 0%{?fedora} || 0%{?rhel}
-%systemd_preun ceph-create-keys(a)\*.service ceph-mon(a)\*.service ceph-mon.target
+%systemd_preun ceph-mon(a)\*.service ceph-mon.target
%endif
%postun mon
test -n "$FIRST_ARG" || FIRST_ARG=$1
%if 0%{?suse_version}
DISABLE_RESTART_ON_UPDATE="yes"
-%service_del_postun ceph-create-keys(a)\*.service ceph-mon(a)\*.service ceph-mon.target
+%service_del_postun ceph-mon(a)\*.service ceph-mon.target
%endif
%if 0%{?fedora} || 0%{?rhel}
-%systemd_postun ceph-create-keys(a)\*.service ceph-mon(a)\*.service ceph-mon.target
+%systemd_postun ceph-mon(a)\*.service ceph-mon.target
%endif
if [ $FIRST_ARG -ge 1 ] ; then
# Restart on upgrade, but only if "CEPH_AUTO_RESTART_ON_UPGRADE" is set to
@@ -1047,26 +1274,22 @@ if [ $FIRST_ARG -ge 1 ] ; then
source $SYSCONF_CEPH
fi
if [ "X$CEPH_AUTO_RESTART_ON_UPGRADE" = "Xyes" ] ; then
- /usr/bin/systemctl try-restart ceph-create-keys(a)\*.service ceph-mon(a)\*.service > /dev/null 2>&1 || :
+ /usr/bin/systemctl try-restart ceph-mon(a)\*.service > /dev/null 2>&1 || :
fi
fi
-#################################################################################
%files fuse
-%defattr(-,root,root,-)
%{_bindir}/ceph-fuse
%{_mandir}/man8/ceph-fuse.8*
%{_sbindir}/mount.fuse.ceph
+%{_unitdir}/ceph-fuse@.service
+%{_unitdir}/ceph-fuse.target
-#################################################################################
%files -n rbd-fuse
-%defattr(-,root,root,-)
%{_bindir}/rbd-fuse
%{_mandir}/man8/rbd-fuse.8*
-#################################################################################
%files -n rbd-mirror
-%defattr(-,root,root,-)
%{_bindir}/rbd-mirror
%{_mandir}/man8/rbd-mirror.8*
%{_unitdir}/ceph-rbd-mirror@.service
@@ -1074,14 +1297,16 @@ fi
%post -n rbd-mirror
%if 0%{?suse_version}
-if [ $1 -ge 1 ] ; then
+if [ $1 -eq 1 ] ; then
/usr/bin/systemctl preset ceph-rbd-mirror(a)\*.service ceph-rbd-mirror.target >/dev/null 2>&1 || :
fi
%endif
%if 0%{?fedora} || 0%{?rhel}
%systemd_post ceph-rbd-mirror(a)\*.service ceph-rbd-mirror.target
%endif
+if [ $1 -eq 1 ] ; then
/usr/bin/systemctl start ceph-rbd-mirror.target >/dev/null 2>&1 || :
+fi
%preun -n rbd-mirror
%if 0%{?suse_version}
@@ -1112,36 +1337,32 @@ if [ $FIRST_ARG -ge 1 ] ; then
fi
fi
-#################################################################################
%files -n rbd-nbd
-%defattr(-,root,root,-)
%{_bindir}/rbd-nbd
%{_mandir}/man8/rbd-nbd.8*
-#################################################################################
%files radosgw
-%defattr(-,root,root,-)
%{_bindir}/radosgw
-%{_bindir}/radosgw-admin
%{_bindir}/radosgw-token
+%{_bindir}/radosgw-es
%{_bindir}/radosgw-object-expirer
%{_mandir}/man8/radosgw.8*
-%{_mandir}/man8/radosgw-admin.8*
-%config %{_sysconfdir}/bash_completion.d/radosgw-admin
%dir %{_localstatedir}/lib/ceph/radosgw
%{_unitdir}/ceph-radosgw@.service
%{_unitdir}/ceph-radosgw.target
%post radosgw
%if 0%{?suse_version}
-if [ $1 -ge 1 ] ; then
+if [ $1 -eq 1 ] ; then
/usr/bin/systemctl preset ceph-radosgw(a)\*.service ceph-radosgw.target >/dev/null 2>&1 || :
fi
%endif
%if 0%{?fedora} || 0%{?rhel}
%systemd_post ceph-radosgw(a)\*.service ceph-radosgw.target
%endif
+if [ $1 -eq 1 ] ; then
/usr/bin/systemctl start ceph-radosgw.target >/dev/null 2>&1 || :
+fi
%preun radosgw
%if 0%{?suse_version}
@@ -1172,56 +1393,53 @@ if [ $FIRST_ARG -ge 1 ] ; then
fi
fi
-#################################################################################
%files osd
%{_bindir}/ceph-clsinfo
-%{_bindir}/ceph-bluefs-tool
+%{_bindir}/ceph-bluestore-tool
%{_bindir}/ceph-objectstore-tool
%{_bindir}/ceph-osd
-%{_sbindir}/ceph-disk
-%{_sbindir}/ceph-disk-udev
%{_libexecdir}/ceph/ceph-osd-prestart.sh
%dir %{_udevrulesdir}
%{_udevrulesdir}/60-ceph-by-parttypeuuid.rules
%{_udevrulesdir}/95-ceph-osd.rules
%{_mandir}/man8/ceph-clsinfo.8*
-%{_mandir}/man8/ceph-disk.8*
%{_mandir}/man8/ceph-osd.8*
%if 0%{?rhel} && ! 0%{?centos}
-%{_sysconfdir}/cron.hourly/subman
+%attr(0755,-,-) %{_sysconfdir}/cron.hourly/subman
%endif
%{_unitdir}/ceph-osd@.service
%{_unitdir}/ceph-osd.target
-%{_unitdir}/ceph-disk@.service
%attr(750,ceph,ceph) %dir %{_localstatedir}/lib/ceph/osd
%post osd
%if 0%{?suse_version}
-if [ $1 -ge 1 ] ; then
- /usr/bin/systemctl preset ceph-disk(a)\*.service ceph-osd(a)\*.service ceph-osd.target >/dev/null 2>&1 || :
+if [ $1 -eq 1 ] ; then
+ /usr/bin/systemctl preset ceph-osd(a)\*.service ceph-osd.target >/dev/null 2>&1 || :
fi
%endif
%if 0%{?fedora} || 0%{?rhel}
-%systemd_post ceph-disk(a)\*.service ceph-osd(a)\*.service ceph-osd.target
+%systemd_post ceph-osd(a)\*.service ceph-osd.target
%endif
+if [ $1 -eq 1 ] ; then
/usr/bin/systemctl start ceph-osd.target >/dev/null 2>&1 || :
+fi
%preun osd
%if 0%{?suse_version}
-%service_del_preun ceph-disk(a)\*.service ceph-osd(a)\*.service ceph-osd.target
+%service_del_preun ceph-osd(a)\*.service ceph-osd.target
%endif
%if 0%{?fedora} || 0%{?rhel}
-%systemd_preun ceph-disk(a)\*.service ceph-osd(a)\*.service ceph-osd.target
+%systemd_preun ceph-osd(a)\*.service ceph-osd.target
%endif
%postun osd
test -n "$FIRST_ARG" || FIRST_ARG=$1
%if 0%{?suse_version}
DISABLE_RESTART_ON_UPDATE="yes"
-%service_del_postun ceph-disk(a)\*.service ceph-osd(a)\*.service ceph-osd.target
+%service_del_postun ceph-osd(a)\*.service ceph-osd.target
%endif
%if 0%{?fedora} || 0%{?rhel}
-%systemd_postun ceph-disk(a)\*.service ceph-osd(a)\*.service ceph-osd.target
+%systemd_postun ceph-osd(a)\*.service ceph-osd.target
%endif
if [ $FIRST_ARG -ge 1 ] ; then
# Restart on upgrade, but only if "CEPH_AUTO_RESTART_ON_UPGRADE" is set to
@@ -1231,16 +1449,13 @@ if [ $FIRST_ARG -ge 1 ] ; then
source $SYSCONF_CEPH
fi
if [ "X$CEPH_AUTO_RESTART_ON_UPGRADE" = "Xyes" ] ; then
- /usr/bin/systemctl try-restart ceph-disk(a)\*.service ceph-osd(a)\*.service > /dev/null 2>&1 || :
+ /usr/bin/systemctl try-restart ceph-osd(a)\*.service > /dev/null 2>&1 || :
fi
fi
-#################################################################################
%if %{with ocf}
%files resource-agents
-%defattr(0755,root,root,-)
-# N.B. src/ocf/Makefile.am uses $(prefix)/lib
%dir %{_prefix}/lib/ocf
%dir %{_prefix}/lib/ocf/resource.d
%dir %{_prefix}/lib/ocf/resource.d/ceph
@@ -1248,28 +1463,25 @@ fi
%endif
-#################################################################################
%files -n librados2
-%defattr(-,root,root,-)
%{_libdir}/librados.so.*
+%dir %{_libdir}/ceph
+%{_libdir}/ceph/libceph-common.so*
%if %{with lttng}
%{_libdir}/librados_tp.so.*
%endif
-%post -n librados2
-/sbin/ldconfig
+%post -n librados2 -p /sbin/ldconfig
-%postun -n librados2
-/sbin/ldconfig
+%postun -n librados2 -p /sbin/ldconfig
-#################################################################################
%files -n librados-devel
-%defattr(-,root,root,-)
%dir %{_includedir}/rados
%{_includedir}/rados/librados.h
%{_includedir}/rados/librados.hpp
%{_includedir}/rados/buffer.h
%{_includedir}/rados/buffer_fwd.h
+%{_includedir}/rados/inline_memory.h
%{_includedir}/rados/page.h
%{_includedir}/rados/crc32c.h
%{_includedir}/rados/rados_types.h
@@ -1282,34 +1494,28 @@ fi
%{_bindir}/librados-config
%{_mandir}/man8/librados-config.8*
-#################################################################################
%files -n python-rados
-%defattr(-,root,root,-)
%{python_sitearch}/rados.so
%{python_sitearch}/rados-*.egg-info
-#################################################################################
+%files -n python%{python3_pkgversion}-rados
+%{python3_sitearch}/rados.cpython*.so
+%{python3_sitearch}/rados-*.egg-info
+
%files -n libradosstriper1
-%defattr(-,root,root,-)
%{_libdir}/libradosstriper.so.*
-%post -n libradosstriper1
-/sbin/ldconfig
+%post -n libradosstriper1 -p /sbin/ldconfig
-%postun -n libradosstriper1
-/sbin/ldconfig
+%postun -n libradosstriper1 -p /sbin/ldconfig
-#################################################################################
%files -n libradosstriper-devel
-%defattr(-,root,root,-)
%dir %{_includedir}/radosstriper
%{_includedir}/radosstriper/libradosstriper.h
%{_includedir}/radosstriper/libradosstriper.hpp
%{_libdir}/libradosstriper.so
-#################################################################################
%files -n librbd1
-%defattr(-,root,root,-)
%{_libdir}/librbd.so.*
%if %{with lttng}
%{_libdir}/librbd_tp.so.*
@@ -1320,12 +1526,9 @@ fi
mkdir -p /usr/lib64/qemu/
ln -sf %{_libdir}/librbd.so.1 /usr/lib64/qemu/librbd.so.1
-%postun -n librbd1
-/sbin/ldconfig
+%postun -n librbd1 -p /sbin/ldconfig
-#################################################################################
%files -n librbd-devel
-%defattr(-,root,root,-)
%dir %{_includedir}/rbd
%{_includedir}/rbd/librbd.h
%{_includedir}/rbd/librbd.hpp
@@ -1335,59 +1538,68 @@ ln -sf %{_libdir}/librbd.so.1 /usr/lib64/qemu/librbd.so.1
%{_libdir}/librbd_tp.so
%endif
-#################################################################################
%files -n librgw2
-%defattr(-,root,root,-)
%{_libdir}/librgw.so.*
-%post -n librgw2
-/sbin/ldconfig
+%post -n librgw2 -p /sbin/ldconfig
-%postun -n librgw2
-/sbin/ldconfig
+%postun -n librgw2 -p /sbin/ldconfig
-#################################################################################
%files -n librgw-devel
-%defattr(-,root,root,-)
%dir %{_includedir}/rados
%{_includedir}/rados/librgw.h
%{_includedir}/rados/rgw_file.h
%{_libdir}/librgw.so
-#################################################################################
+%files -n python-rgw
+%{python_sitearch}/rgw.so
+%{python_sitearch}/rgw-*.egg-info
+
+%files -n python%{python3_pkgversion}-rgw
+%{python3_sitearch}/rgw.cpython*.so
+%{python3_sitearch}/rgw-*.egg-info
+
%files -n python-rbd
-%defattr(-,root,root,-)
%{python_sitearch}/rbd.so
%{python_sitearch}/rbd-*.egg-info
-#################################################################################
-%files -n libcephfs1
-%defattr(-,root,root,-)
+%files -n python%{python3_pkgversion}-rbd
+%{python3_sitearch}/rbd.cpython*.so
+%{python3_sitearch}/rbd-*.egg-info
+
+%files -n libcephfs2
%{_libdir}/libcephfs.so.*
-%post -n libcephfs1
-/sbin/ldconfig
+%post -n libcephfs2 -p /sbin/ldconfig
-%postun -n libcephfs1
-/sbin/ldconfig
+%postun -n libcephfs2 -p /sbin/ldconfig
-#################################################################################
%files -n libcephfs-devel
-%defattr(-,root,root,-)
%dir %{_includedir}/cephfs
%{_includedir}/cephfs/libcephfs.h
+%{_includedir}/cephfs/ceph_statx.h
%{_libdir}/libcephfs.so
-#################################################################################
%files -n python-cephfs
-%defattr(-,root,root,-)
%{python_sitearch}/cephfs.so
%{python_sitearch}/cephfs-*.egg-info
%{python_sitelib}/ceph_volume_client.py*
-#################################################################################
+%files -n python%{python3_pkgversion}-cephfs
+%{python3_sitearch}/cephfs.cpython*.so
+%{python3_sitearch}/cephfs-*.egg-info
+%{python3_sitelib}/ceph_volume_client.py
+%{python3_sitelib}/__pycache__/ceph_volume_client.cpython*.py*
+
+%files -n python%{python3_pkgversion}-ceph-argparse
+%{python3_sitelib}/ceph_argparse.py
+%{python3_sitelib}/__pycache__/ceph_argparse.cpython*.py*
+%{python3_sitelib}/ceph_daemon.py
+%{python3_sitelib}/__pycache__/ceph_daemon.cpython*.py*
+
+%if 0%{with ceph_test_package}
%files -n ceph-test
-%defattr(-,root,root,-)
+%{_bindir}/ceph-client-debug
%{_bindir}/ceph_bench_log
%{_bindir}/ceph_kvstorebench
%{_bindir}/ceph_multi_stress_watch
@@ -1410,7 +1622,6 @@ ln -sf %{_libdir}/librbd.so.1 /usr/lib64/qemu/librbd.so.1
%{_bindir}/ceph_smalliobenchfs
%{_bindir}/ceph_smalliobenchrbd
%{_bindir}/ceph_test_*
-%{_bindir}/librgw_file*
%{_bindir}/ceph_tpbench
%{_bindir}/ceph_xattr_bench
%{_bindir}/ceph-coverage
@@ -1421,35 +1632,30 @@ ln -sf %{_libdir}/librbd.so.1 /usr/lib64/qemu/librbd.so.1
%{_mandir}/man8/ceph-debugpack.8*
%dir %{_libdir}/ceph
%{_libdir}/ceph/ceph-monstore-update-crush.sh
+%endif
-#################################################################################
%if 0%{with cephfs_java}
%files -n libcephfs_jni1
-%defattr(-,root,root,-)
%{_libdir}/libcephfs_jni.so.*
-%post -n libcephfs_jni1
-/sbin/ldconfig
+%post -n libcephfs_jni1 -p /sbin/ldconfig
-%postun -n libcephfs_jni1
-/sbin/ldconfig
+%postun -n libcephfs_jni1 -p /sbin/ldconfig
-#################################################################################
%files -n libcephfs_jni-devel
-%defattr(-,root,root,-)
%{_libdir}/libcephfs_jni.so
-#################################################################################
%files -n cephfs-java
-%defattr(-,root,root,-)
%{_javadir}/libcephfs.jar
%{_javadir}/libcephfs-test.jar
%endif
-#################################################################################
+%files -n rados-objclass-devel
+%dir %{_includedir}/rados
+%{_includedir}/rados/objclass.h
+
%if 0%{with selinux}
%files selinux
-%defattr(-,root,root,-)
%attr(0600,root,root) %{_datadir}/selinux/packages/ceph.pp
%{_datadir}/selinux/devel/include/contrib/ceph.if
%{_mandir}/man8/ceph_selinux.8*
@@ -1483,8 +1689,14 @@ if test $STATUS -eq 0; then
/usr/bin/systemctl stop ceph.target > /dev/null 2>&1
fi
-# Now, relabel the files
-/usr/sbin/fixfiles -C ${FILE_CONTEXT}.pre restore 2> /dev/null
+# Relabel the files
+# Use ceph-disk fix for first package install and fixfiles otherwise
+if [ "$1" = "1" ]; then
+ /usr/sbin/ceph-disk fix --selinux
+else
+ /usr/sbin/fixfiles -C ${FILE_CONTEXT}.pre restore 2> /dev/null
+fi
+
rm -f ${FILE_CONTEXT}.pre
# The fixfiles command won't fix label for /var/run/ceph
/usr/sbin/restorecon -R /var/run/ceph > /dev/null 2>&1
@@ -1534,32 +1746,22 @@ exit 0
%endif # with selinux
-#################################################################################
-%if 0%{with libs_compat}
-%files libs-compat
-# We need an empty %%files list for ceph-libs-compat, to tell rpmbuild to actually
-# build this meta package.
-%endif
-
-#################################################################################
-%files devel-compat
-# We need an empty %%files list for ceph-devel-compat, to tell rpmbuild to
-# actually build this meta package.
-
-#################################################################################
%files -n python-ceph-compat
# We need an empty %%files list for python-ceph-compat, to tell rpmbuild to
# actually build this meta package.
%changelog
+* Fri Jul 21 2017 Kaleb S. KEITHLEY <kkeithle[at]redhat.com> - 1:12.1.1-1
+- New release (2:12.1.1-1)
+
* Fri Jul 21 2017 Kalev Lember <klember(a)redhat.com> - 1:10.2.7-3
- Rebuilt for Boost 1.64
* Mon May 15 2017 Fedora Release Engineering <rel-eng(a)lists.fedoraproject.org> - 1:10.2.7-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_27_Mass_Rebuild
-* Mon Apr 17 2017 Kaleb S. KEITHLEY <kkeithle[at]redhat.com> - 1:10.2.7-2
+* Mon Apr 17 2017 Kaleb S. KEITHLEY <kkeithle[at]redhat.com> - 1:10.2.7-1
- New release (1:10.2.7-1)
* Wed Feb 08 2017 Boris Ranto <branto(a)redhat.com> - 1:10.2.5-2
diff --git a/sources b/sources
index acb745f..e54b270 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-SHA512 (ceph-10.2.7.tar.gz) = 7e0686e9efa4ddd9d548f4145b448f8232f1ca29b08428daa5cd60a74ce26f1176a1f2ebbf2ac1761d9e6c1d364a5ffa194d2b3a18a8111f59b7c27f7a1d7734
+SHA512 (ceph-12.1.1.tar.gz) = 2355f24c7f2c94f53402f8c26c482af81fd28ee309d33b85ca7891631b3da012733e6f10c10194b9a7a59b047b2227099eb1e1ad27b4b115d0103d17e34a2988
6 years, 8 months
[Report] Packages Restricting Arches
by root
New package excluding arches (2)
============================
- kicad
ExclusiveArch: %{ix86} x86_64 %{arm} ppc64 ppc64le aarch64
- mediaconch
ExclusiveArch: %{qt5_qtwebengine_arches}
List of packages currently excluding arches (1881)
===========================================
- 0ad
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64
- GtkAda
ExclusiveArch: %{GNAT_arches}
- GtkAda3
ExclusiveArch: %{GPRbuild_arches}
- LuxRender
ExclusiveArch: x86_64
- OpenTK
ExclusiveArch: %mono_arches
- PragmARC
ExclusiveArch: %{GNAT_arches}
- R-DynDoc
ExclusiveArch: armv7, ppc, go_arch
- RdRand
ExclusiveArch: %{ix86} x86_64
- YafaRay
ExclusiveArch: %{ix86} x86_64
- aboot
ExclusiveArch: alpha
- acpid
ExclusiveArch: ia64 x86_64 %{ix86} %{arm} aarch64
- ahven
ExclusiveArch: %{GNAT_arches}
- alleyoop
ExclusiveArch: %{ix86} x86_64 ppc ppc64 ppc64le s390x %{arm} aarch64
- american-fuzzy-lop
ExclusiveArch: %{ix86} x86_64
- anet
ExclusiveArch: %{GNAT_arches}
- apmd
ExclusiveArch: %{ix86}
- apmud
ExclusiveArch: ppc
- arm-boot-config
ExclusiveArch: %{arm}
- arm-trusted-firmware
ExclusiveArch: aarch64
- atomic
ExclusiveArch: i386 i486 i586 i686 pentium3 pentium4 athlon geode x86_64 armv3l armv4b armv4l armv4tl armv5tel armv5tejl armv6l armv6hl armv7l armv7hl armv7hnl aarch64 ppc64le s390x mips mipsel mipsr6 mipsr6el mips64 mips64el mips64r6 mips64r6el
ExclusiveArch: x86_64 ppc64le
- 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}
- bcc
ExclusiveArch: x86_64
- bcm283x-firmware
ExclusiveArch: %{arm} aarch64
- beignet
ExclusiveArch: x86_64 %{ix86}
- berusky2
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64 %{mips}
- biosdevname
ExclusiveArch: %{ix86} x86_64 ia64
- bless
ExclusiveArch: %mono_arches
- boo
ExclusiveArch: %{mono_arches}
- buildah
ExclusiveArch: x86_64 aarch64 ppc64le
- bwa
ExclusiveArch: x86_64
- cadvisor
ExclusiveArch: %{ix86} x86_64 aarch64 ppc64le
- calamares
ExclusiveArch: %{ix86} x86_64
- cargo
ExclusiveArch: %{rust_arches}
- carto
ExclusiveArch: %{nodejs_arches} noarch
- ccdciel
ExclusiveArch: %{fpc_arches}
- cdcollect
ExclusiveArch: %{mono_arches}
- ceph
ExclusiveArch: x86_64 aarch64 ppc64 ppc64le
ExclusiveArch: x86_64 aarch64
- chromium
ExclusiveArch: x86_64 i686
- chromium-native_client
ExclusiveArch: x86_64
- cjdns
ExclusiveArch: %{nodejs_arches}
- cmospwd
ExclusiveArch: %{ix86} x86_64
- coffee-script
ExclusiveArch: %{nodejs_arches} noarch
- colorful
ExclusiveArch: %{fpc_arches}
- compat-gcc-296
ExclusiveArch: %{ix86} ia64 ppc
- consul
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- corosync
ExclusiveArch: i686 x86_64
- cpuid
ExclusiveArch: %{ix86} x86_64
- cqrlog
ExclusiveArch: %{fpc_arches}
- crash
ExclusiveArch: %{ix86} ia64 x86_64 ppc ppc64 s390 s390x %{arm} aarch64 ppc64le
- criu
ExclusiveArch: x86_64 %{arm} ppc64le aarch64
ExclusiveArch: x86_64 ppc64le
- cryptlib
ExclusiveArch: x86_64 %{ix86} aarch64
- cryptobone
ExclusiveArch: x86_64 %{ix86}
- daq
ExclusiveArch: x86_64 aarch64
- darktable
ExclusiveArch: x86_64 aarch64
- dbus-sharp
ExclusiveArch: %mono_arches
- dbus-sharp-glib
ExclusiveArch: %mono_arches
- dbxtool
ExclusiveArch: i386 x86_64 aarch64
- derelict
ExclusiveArch: %{ldc_arches}
- direnv
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- dlm
ExclusiveArch: i686 x86_64
- dmidecode
ExclusiveArch: %{ix86} x86_64 ia64 aarch64
- dmtcp
ExclusiveArch: %ix86 x86_64 aarch64
- docco
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- docker
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64 ppc64le s390x %{mips}
- docker-anaconda-addon
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64 ppc64le s390x %{mips}
- docker-distribution
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- docker-latest
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64 ppc64le s390x %{mips}
- dolphin-emu
ExclusiveArch: x86_64 armv7l aarch64
- dpdk
ExclusiveArch: x86_64 i686 aarch64 ppc64le
- dssi-vst
ExclusiveArch: %{ix86} x86_64
- dustmite
ExclusiveArch: %{ldc_arches}
- dyninst
ExclusiveArch: %{ix86} x86_64 ppc ppc64
- 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
- efibootmgr
ExclusiveArch: %{ix86} x86_64 aarch64 arm
- efivar
ExclusiveArch: %{ix86} x86_64 aarch64
- 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
- envytools
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64
- etcd
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64 ppc64le s390x
- exciting
ExclusiveArch: x86_64 %{ix86}
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}
- fedora-gnat-project-common
ExclusiveArch: noarch %{GNAT_arches}
- fence-virt
ExclusiveArch: i686 x86_64
- fes
ExclusiveArch: x86_64
- ffcall
ExclusiveArch: %{ffcall_arches}
- firmware-addon-dell
ExclusiveArch: x86_64 ia64 %{ix86}
- flannel
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64 ppc64le s390x
- florist
ExclusiveArch: %GPRbuild_arches
- fpc
ExclusiveArch: %{arm} %{ix86} x86_64 ppc ppc64
- frysk
ExclusiveArch: %{ix86} x86_64 ppc64
- fst
ExclusiveArch: i686
- fwupdate
ExclusiveArch: x86_64 %{ix86} aarch64
- 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: %{GNAT_arches}
- ghdl
ExclusiveArch: %{GNAT_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
- gl3n
ExclusiveArch: %{ldc_arches}
- glibc32
ExclusiveArch: x86_64 ppc64 s390x
- glide
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- gmqcc
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64
- gnatcoll
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: x86_64 aarch64 %{arm} %{ix86}
- gnu-smalltalk
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64 ppc64le
- go-bindata
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- go-compilers
ExclusiveArch: %{go_arches}
- go-i18n
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- godep
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- gofed
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64 ppc64le s390x %{mips}
- golang
ExclusiveArch: %{golang_arches}
- golang-bitbucket-kardianos-osext
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-bitbucket-ww-goautoneg
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-10gen-openssl
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64 ppc64le s390x
- golang-github-3rf-mongo-lint
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-AdRoll-goamz
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-AudriusButkevicius-cli
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-AudriusButkevicius-go-nat-pmp
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-AudriusButkevicius-pfilter
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-Azure-azure-sdk-for-go
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-BurntSushi-toml
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-BurntSushi-toml-test
ExclusiveArch: %{go_arches}
- golang-github-DATA-DOG-go-sqlmock
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-DataDog-datadog-go
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-MakeNowJust-heredoc
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-Masterminds-semver
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-Masterminds-vcs
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-PuerkitoBio-purell
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-PuerkitoBio-urlesc
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-RangelReale-osin
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-RangelReale-osincli
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-SeanDolphin-bqschema
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- golang-github-Shopify-sarama
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-Shopify-toxiproxy
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-Sirupsen-logrus
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- golang-github-abbot-go-http-auth
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-agl-ed25519
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-akrennmair-gopcap
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-appc-spec
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-armon-circbuf
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-armon-go-metrics
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-armon-go-radix
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-armon-gomdb
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-asaskevich-govalidator
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-auth0-go-jwt-middleware
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-aws-aws-sdk-go
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-beorn7-perks
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-bep-gitmap
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-bep-inflect
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-bgentry-speakeasy
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-bkaradzic-go-lz4
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-blang-semver
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-bmizerany-assert
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-bmizerany-pat
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-bmizerany-perks
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-boltdb-bolt
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-bradfitz-http2
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-bugsnag-bugsnag-go
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-bugsnag-panicwrap
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-calmh-du
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-calmh-luhn
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-calmh-xdr
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-ccding-go-stun
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-cenkalti-backoff
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-chaseadamsio-goorgeous
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-cheggaaa-pb
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-chmduquesne-rollinghash
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-circonus-labs-circonus-gometrics
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-circonus-labs-circonusllhist
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-cloudfoundry-incubator-candiedyaml
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-cockroachdb-cmux
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-codegangsta-cli
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-codegangsta-negroni
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-collectd-go-collectd
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-coreos-gexpect
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-coreos-go-etcd
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-coreos-go-iptables
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-coreos-go-log
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-coreos-go-oidc
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-coreos-go-semver
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-coreos-go-systemd
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-coreos-pkg
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-cpuguy83-go-md2man
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-cznic-b
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-cznic-fileutil
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-cznic-internal
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-cznic-lex
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-cznic-lexer
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-cznic-lldb
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-cznic-mathutil
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-cznic-sortutil
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-cznic-strutil
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-cznic-zappy
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-d2g-dhcp4
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-d2g-dhcp4client
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-d4l3k-messagediff
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-davecgh-go-spew
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-daviddengcn-go-colortext
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-dchest-cssmin
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-denverdino-aliyungo
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-dgnorton-goback
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-dgrijalva-jwt-go
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-digitalocean-godo
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-docker-go
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-docker-go-connections
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-docker-go-units
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-docker-libcontainer
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-docker-libkv
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-docker-libtrust
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-docker-spdystream
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-docopt-docopt-go
ExclusiveArch: %{ix86} x86_64 %{arm}
- golang-github-dustin-go-humanize
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-dvsekhvalnov-jose2go
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-eapache-go-resiliency
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-eapache-queue
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-edsrzf-mmap-go
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-eknkc-amber
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-elazarl-go-bindata-assetfs
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-emicklei-go-restful
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-endophage-gotuf
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-evanphx-json-patch
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-fatih-pool
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-fortytw2-leaktest
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-fsnotify-fsnotify
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-fsouza-go-dockerclient
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-garyburd-redigo
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-gengo-grpc-gateway
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-getsentry-raven-go
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-ghodss-yaml
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-glacjay-goini
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-go-asn1-ber-asn1-ber
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-go-errors-errors
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-go-fsnotify-fsnotify
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-go-ini-ini
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-go-ldap-ldap
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-go-macaron-inject
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-go-mgo-mgo
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-go-sql-driver-mysql
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-go-tomb-tomb
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-gobwas-glob
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-godbus-dbus
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-golang-appengine
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-golang-glog
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-golang-groupcache
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-golang-sys
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-golang-time
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-gonum-blas
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-gonum-floats
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-gonum-graph
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-gonum-internal
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-gonum-lapack
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-gonum-matrix
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-google-btree
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-google-go-github
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-google-go-querystring
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-google-gofuzz
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-goraft-raft
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-gorilla-context
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-gorilla-handlers
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-gorilla-mux
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-gorilla-securecookie
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-gorilla-sessions
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-gorilla-websocket
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-gosexy-gettext
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-grpc-ecosystem-go-grpc-prometheus
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-grpc-ecosystem-grpc-gateway
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-grpc-grpc-go
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-hashicorp-consul-migrate
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-hashicorp-errwrap
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-hashicorp-go-checkpoint
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-hashicorp-go-cleanhttp
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-hashicorp-go-immutable-radix
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-hashicorp-go-memdb
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-hashicorp-go-msgpack
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-hashicorp-go-multierror
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-hashicorp-go-retryablehttp
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-hashicorp-go-sockaddr
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-hashicorp-go-syslog
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-hashicorp-go-uuid
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-hashicorp-golang-lru
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-hashicorp-hcl
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-hashicorp-hil
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-hashicorp-logutils
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-hashicorp-mdns
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-hashicorp-memberlist
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-hashicorp-net-rpc-msgpackrpc
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-hashicorp-raft
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-hashicorp-raft-boltdb
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-hashicorp-raft-mdb
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-hashicorp-scada-client
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-hashicorp-serf
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-hashicorp-yamux
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-hawkular-hawkular-client-go
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-howeyc-gopass
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-imdario-mergo
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-inconshreveable-mousetrap
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-inconshreveable-muxado
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-influxdb-hyperleveldb-go
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-influxdb-influxdb
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-influxdb-rocksdb
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-jackpal-gateway
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-jacobsa-oglematchers
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-jessevdk-go-flags
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-jfrazelle-go
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-jinzhu-gorm
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-jmespath-go-jmespath
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-jmhodges-levigo
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-jonboulle-clockwork
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-jtolds-gls
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-juju-ratelimit
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-julienschmidt-httprouter
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-karlseguin-ccache
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-karlseguin-expect
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-kballard-go-shellquote
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-kdar-factorlog
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-kimor79-gollectd
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-klauspost-cpuid
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-klauspost-crc32
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-klauspost-reedsolomon
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-knieriem-markdown
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-kr-fs
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-kr-pretty
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-kr-pty
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-kr-text
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-kyokomi-emoji
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-lib-pq
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-lpabon-godbc
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-lsegal-gucumber
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-magiconair-properties
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-mattn-go-isatty
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-mattn-go-runewidth
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-mattn-go-sqlite3
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-matttproud-golang_protobuf_extensions
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-mesos-mesos-go
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-miekg-dns
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-miekg-mmark
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-miekg-pkcs11
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-milochristiansen-axis2
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-milochristiansen-lua
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-minio-sha256-simd
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-mistifyio-go-zfs
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-mitchellh-cli
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-mitchellh-copystructure
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-mitchellh-go-homedir
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-mitchellh-go-wordwrap
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-mitchellh-goamz
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-mitchellh-mapstructure
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-mitchellh-reflectwalk
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-mreiferson-go-httpclient
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- golang-github-mvo5-goconfigparser
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-mvo5-uboot-go
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-mxk-go-flowrate
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-ncw-swift
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-noahdesu-go-ceph
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-ojii-gettext.go
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-olekukonko-tablewriter
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-olekukonko-ts
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-olivere-elastic
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-onsi-ginkgo
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-onsi-gomega
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-opencontainers-runtime-spec
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-opencontainers-specs
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-openshift-go-json-rest
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- golang-github-openshift-go-systemd
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- golang-github-openshift-openshift-sdn
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-oschwald-geoip2-golang
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-oschwald-maxminddb-golang
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-pelletier-go-buffruneio
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-pelletier-go-toml
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-petar-GoLLRB
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-peterh-liner
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-petermattis-goid
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-pkg-errors
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-pkg-profile
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-pkg-sftp
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-pmezard-go-difflib
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-prometheus-client_golang
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-prometheus-client_model
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- golang-github-prometheus-common
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-prometheus-procfs
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-prometheus-prometheus
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- golang-github-racker-perigee
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- golang-github-rackspace-gophercloud
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-rakyll-globalconf
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- golang-github-rakyll-pb
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-rakyll-statik
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- golang-github-rcrowley-go-metrics
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- golang-github-remyoudompheng-bigfft
ExclusiveArch: %{ix86} x86_64 %{arm}
- golang-github-russross-blackfriday
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-ryanuber-columnize
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- golang-github-samalba-dockerclient
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-samuel-go-zookeeper
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- golang-github-sasha-s-go-deadlock
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-seccomp-libseccomp-golang
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-shiena-ansicolor
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-shurcooL-sanitized_anchor_name
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-skarademir-naturalsort
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- golang-github-skratchdot-open-golang
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- golang-github-skynetservices-skydns
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- golang-github-smartystreets-assertions
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-smartystreets-go-aws-auth
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- golang-github-smartystreets-goconvey
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-spacejam-loghisto
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-spacemonkeygo-flagfile
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- golang-github-spacemonkeygo-spacelog
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- golang-github-spf13-afero
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-spf13-cast
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-spf13-cobra
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-spf13-fsync
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-spf13-jWalterWeatherman
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-spf13-nitro
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-spf13-pflag
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-spf13-viper
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-stathat-go
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- golang-github-stevvooe-resumable
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-stretchr-objx
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-stretchr-testify
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-syndtr-gocapability
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- golang-github-syndtr-goleveldb
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- golang-github-syndtr-gosnappy
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-tent-http-link-go
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- golang-github-thejerf-suture
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-tonnerre-golang-pretty
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- golang-github-ugorji-go
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-urfave-cli
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-vaughan0-go-ini
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- golang-github-vbatts-tar-split
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-vishvananda-netlink
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} aarch64 x86_64 %{arm}}
- golang-github-vishvananda-netns
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-vitrun-qart
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-vjeantet-asn1-ber
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-vmware-govcloudair
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- golang-github-wsxiaoys-terminal
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-xeipuuv-gojsonpointer
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-xeipuuv-gojsonreference
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-xeipuuv-gojsonschema
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-xiang90-probing
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-xtaci-kcp-go
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-xtaci-smux
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-yosssi-ace
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-yosssi-gohtml
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-yvasiyarov-go-metrics
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-yvasiyarov-gorelic
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-yvasiyarov-newrelic_platform_go
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-zillode-notify
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-google-golangorg-cloud
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-googlecode-gcfg
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- golang-googlecode-go-crypto
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-googlecode-go-decimal-inf
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-googlecode-go-exp
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-googlecode-goauth2
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-googlecode-gogoprotobuf
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-googlecode-gomock
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- golang-googlecode-google-api-client
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-googlecode-goprotobuf
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-googlecode-log4go
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- golang-googlecode-net
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-googlecode-sqlite
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- golang-googlecode-text
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-googlecode-tools
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-googlecode-uuid
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-gopkg-check
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-gopkg-go-check-check
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-gopkg-go-macaroon-macaroon
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-gopkg-retry-v1
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-gopkg-yaml
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golint
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- gomtree
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- gotags
ExclusiveArch: %{go_arches}
- 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
- gsf-sharp
ExclusiveArch: %mono_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
- hedgewars
ExclusiveArch: %{fpc_arches}
- heketi
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- hub
ExclusiveArch: %{go_arches}
- hyena
ExclusiveArch: %{mono_arches}
- hyperscan
ExclusiveArch: x86_64
- hyperv-daemons
ExclusiveArch: i686 x86_64
- icaro
ExclusiveArch: %{ix86} %{arm} x86_64 noarch
- ikarus
ExclusiveArch: %{ix86}
- imvirt
ExclusiveArch: %{ix86} x86_64 ia64
- indistarter
ExclusiveArch: %{fpc_arches}
- infinipath-psm
ExclusiveArch: x86_64
- intel-cmt-cat
ExclusiveArch: x86_64 i686 i586
ExclusiveArch: x86_64 i686 i586
- ioport
ExclusiveArch: %{ix86} x86_64
- ipw2100-firmware
ExclusiveArch: noarch i386 x86_64
- ipw2200-firmware
ExclusiveArch: noarch i386 x86_64
- ispc
ExclusiveArch: %{arm} %{ix86} x86_64
- iwyu
ExclusiveArch: %{ix86} x86_64
- ixpdimm_sw
ExclusiveArch: 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}
- julia
ExclusiveArch: %{ix86} x86_64
- keepass
ExclusiveArch: %{mono_arches}
- kernel
ExclusiveArch: %{all_x86} x86_64 ppc64 ppc64p7 s390x %{arm} aarch64 ppc64le
- kicad
ExclusiveArch: %{ix86} x86_64 %{arm} ppc64 ppc64le aarch64
- knot-resolver
ExclusiveArch: %{arm} aarch64 %{ix86} x86_64
- kompose
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- kosmtik
ExclusiveArch: %{nodejs_arches} noarch
- kubernetes
ExclusiveArch: x86_64 aarch64 ppc64le s390x
- latrace
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64 %{power64}
- lazarus
ExclusiveArch: %{fpc_arches}
- ldc
ExclusiveArch: %{ldc_arches}
- libbsr
ExclusiveArch: %{power64}
- libclc
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64 %{power64} s390x
- libcxl
ExclusiveArch: %{power64}
- libflatarray
ExclusiveArch: %{ix86} x86_64
- libhfi1
ExclusiveArch: x86_64
- libica
ExclusiveArch: s390 s390x
- libinvm-cim
ExclusiveArch: x86_64
- libinvm-cli
ExclusiveArch: x86_64
- libinvm-i18n
ExclusiveArch: x86_64
- libipathverbs
ExclusiveArch: x86_64
- libipt
ExclusiveArch: %{ix86} x86_64
ExclusiveArch: %{ix86} x86_64
- libjingle
ExclusiveArch: %{ix86} x86_64 %{arm}
- libmfx
ExclusiveArch: %{ix86} x86_64
- libpsm2
ExclusiveArch: x86_64
- librtas
ExclusiveArch: ppc %{power64}
- libseccomp
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64 mipsel mips64el ppc64 ppc64le s390 s390x
- libservicelog
ExclusiveArch: ppc %{power64}
- libsmbios
ExclusiveArch: x86_64 ia64 %{ix86}
- libunwind
ExclusiveArch: %{arm} aarch64 hppa ia64 mips ppc %{power64} %{ix86} x86_64
- libvmi
ExclusiveArch: x86_64
- libvpd
ExclusiveArch: ppc %{power64}
- libxsmm
ExclusiveArch: x86_64
- libzfcphbaapi
ExclusiveArch: s390 s390x
- lldb
ExclusiveArch: %{arm} aarch64 %{ix86} x86_64
- lodash
ExclusiveArch: %{nodejs_arches} noarch
- log4net
ExclusiveArch: %mono_arches
- lrmi
ExclusiveArch: %{ix86}
- lsvpd
ExclusiveArch: ppc %{power64}
- luajit
ExclusiveArch: %{arm} %{ix86} x86_64 %{mips} aarch64
- mactel-boot
ExclusiveArch: x86_64
- manifest-tool
ExclusiveArch: x86_64 aarch64 ppc64le s390x
- marked
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- matreshka
ExclusiveArch: %GPRbuild_arches
- 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}
- 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: %{GNAT_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
- mokutil
ExclusiveArch: %{ix86} x86_64 aarch64
- mongo-tools
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64 ppc64le s390x
- 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-debugger
ExclusiveArch: %ix86 x86_64
- mono-reflection
ExclusiveArch: %mono_arches
- mono-tools
ExclusiveArch: %mono_arches
- mono-zeroconf
ExclusiveArch: %mono_arches
- monobristol
ExclusiveArch: %{mono_arches}
- monodevelop
ExclusiveArch: %mono_arches
- monodevelop-debugger-gdb
ExclusiveArch: %{mono_arches}
- monosim
ExclusiveArch: %mono_arches
- mrrescue
ExclusiveArch: %{arm} %{ix86} x86_64 %{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-arm-gcc
ExclusiveArch: x86_64
- nacl-arm-newlib
ExclusiveArch: x86_64
- nacl-binutils
ExclusiveArch: x86_64
- nacl-gcc
ExclusiveArch: x86_64
- nacl-newlib
ExclusiveArch: x86_64
- nant
ExclusiveArch: %mono_arches
- nbc
ExclusiveArch: %{fpc_arches}
- ndesk-dbus
ExclusiveArch: %{mono_arches}
- ndesk-dbus-glib
ExclusiveArch: %{mono_arches}
- newtonsoft-json
ExclusiveArch: %{mono_arches}
- nini
ExclusiveArch: %{mono_arches}
- node-gyp
ExclusiveArch: %{nodejs_arches} noarch
- nodejs
ExclusiveArch: %{nodejs_arches}
- nodejs-abbrev
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-accepts
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-acorn
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-after
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-agent-base
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-alter
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-ansi
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ansi-cyan
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-ansi-font
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ansi-green
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-ansi-magenta
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-ansi-regex
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ansi-styles
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} 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-ansidiff
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-ansistyles
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-transform
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-aproba
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-archiver
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-archiver-utils
ExclusiveArch: %{nodejs_arches} 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-differ
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-array-filter
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} 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-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-uniq
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-array-unique
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-arrify
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-as-number
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-ast-traverse
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-ast-types
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-astral
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-astral-angular-annotate
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-astral-pass
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-cache
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-async-each
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-async-queue
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-async-some
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-aws-sign
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-aws-sign2
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-babel-runtime
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-backbone
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-balanced-match
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-base64-js
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-base64-url
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-basic-auth
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-basic-auth-connect
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-basic-auth-parser
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-batch
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-bcrypt
ExclusiveArch: %{nodejs_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- 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-bignumber-js
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-bindings
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-bl
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-breakable
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-browser-request
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-bson
ExclusiveArch: %{nodejs_arches} 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-shims
ExclusiveArch: %{nodejs_arches} 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-bytes
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-caching-transform
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-call-signature
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} 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-camel-case
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-camelcase
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-camelcase-keys
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-caniuse-db
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-capture-stack-trace
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-carrier
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-caseless
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-chai
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-chai-connect-middleware
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-chai-passport-strategy
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-chainsaw
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-chalk
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-change-case
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-char-spinner
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-character-parser
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-charm
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-child-process-close
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-chmodr
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-chownr
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-chrono
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-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-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-cliui
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-clone
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-cls
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} 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-code-point-at
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-codemirror
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-collections
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-colors
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} 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-commondir
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-commoner
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-commonmark
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-component-emitter
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-component-indexof
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-compress-commons
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-compressible
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-compression
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-concat-map
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-concat-stream
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-config-chain
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-connect
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-connect-livereload
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-connect-timeout
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-console-browserify
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-console-dot-log
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-constant-case
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-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-signature
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-cookiejar
ExclusiveArch: %{nodejs_arches} 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-couch-login
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-coveralls
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-crc32-stream
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-create-error-class
ExclusiveArch: %{nodejs_arches} 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-cryptiles
ExclusiveArch: %{nodejs_arches} 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-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-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-generate
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-csv-spectrum
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-d
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-dashdash
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-data-uri-to-buffer
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-date-now
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-dateformat
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-debug
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-debuglog
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-decamelize
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-decompress-response
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-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-deferred
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-define-properties
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-defined
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-defs
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-degenerator
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-dep-graph
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-depd
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-dependency-lister
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-detective
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-dezalgo
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-docopt
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-doctrine
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-dom-serializer
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-domelementtype
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-domhandler
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-domutils
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-dot-case
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-dotfile-regex
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-dreamopt
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-dryice
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-dtree
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-duplex
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-duplexer
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-duplexer2
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-duplexer3
ExclusiveArch: %{nodejs_arches} 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-each-async
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ebnf-parser
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-ecstatic
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-encodeurl
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-encoding
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-end-of-stream
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-entities
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-error-ex
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-errorhandler
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-errs
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-map
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-es6-promise
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-es6-set
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} 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-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-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-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-esutils
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-etag
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-event-emitter
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-event-stream
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-eventemitter2
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-eventemitter3
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-events
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-events-to-array
ExclusiveArch: %{nodejs_arches} 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-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
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-extend-shallow
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-extglob
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-extsprintf
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-eyes
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-fancy-log
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-far
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-fast-levenshtein
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-faye-websocket
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-fd
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-fd-slicer
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-fg-lodash
ExclusiveArch: %{nodejs_arches} 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-file-uri-to-path
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-filed
ExclusiveArch: %{nodejs_arches} 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-flot
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-fn-dot-name
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-fn-name
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-follow
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-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-freetree
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-fresh
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-from
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-from2
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-extra
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-fs-vacuum
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-fs-write-stream-atomic
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-fs2
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
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-ftp
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-function-bind
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-pkg-repo
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-get-port
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-get-stdin
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-get-stream
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-get-uri
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-getobject
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-gettext-parser
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-parent
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-gonzales-pe
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-got
ExclusiveArch: %{nodejs_arches} 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-angular-templates
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-connect
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-grunt-contrib-copy
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-grunt-contrib-csslint
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-grunt-contrib-cssmin
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-grunt-contrib-htmlmin
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-grunt-contrib-internal
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-grunt-contrib-less
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-grunt-contrib-nodeunit
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-grunt-contrib-requirejs
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-html-validation
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-saucelabs
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-grunt-sed
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-grunt-simple-mocha
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-grunt-util-args
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-grunt-util-options
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-grunt-util-process
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-grunt-util-property
ExclusiveArch: %{nodejs_arches} 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: %{ix86} x86_64 %{arm} noarch
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-has
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-has-ansi
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-has-color
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} 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-unicode
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-he
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-heap
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-highlight-js
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-hock
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-hoek
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-html-minifier
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-htmlparser2
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-http-errors
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-http-proxy
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-http-proxy-agent
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-http-server
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-http-signature
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-https-proxy-agent
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} 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-imurmurhash
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-indent-string
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-infinity-agent
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-inflight
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-init-package-json
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-inline-source-map
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-install
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-int64-buffer
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-interpret
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-into-stream
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-invert-kv
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ip
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-irc-colors
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-absolute
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} 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-date-object
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
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-equal-shallow
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} 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-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-lower-case
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-my-json-valid
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-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-property
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-redirect
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-regex
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-regexp
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-relative
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-is-retry-allowed
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-stream
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-string
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-is-symbol
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-text-path
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-typedarray
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-unc-path
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-is-upper-case
ExclusiveArch: %{nodejs_arches} 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-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
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
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-jison
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-jison-lex
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-jju
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-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-jshint
ExclusiveArch: %{nodejs_arches} 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-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: %{ix86} x86_64 %{arm} noarch
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-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-langdetect
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-latest-version
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-levn
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-lex-parser
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-libxmljs
ExclusiveArch: %{nodejs_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- nodejs-line-reader
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-load-json-file
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-symbols
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-lolex
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-loud-rejection
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-lower-case
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-lower-case-first
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-lowercase-keys
ExclusiveArch: %{nodejs_arches} 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-make-arrow-function
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-make-generator-function
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-map-obj
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-map-stream
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-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-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-mdurl
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-media-typer
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-memoizee
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-meow
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-merge-descriptors
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-merge-stream
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} 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-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-minimatch
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-minimist
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-minstache
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-mkdirp
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-mkfiletree
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-mock-fs
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
ExclusiveArch: %{ix86} x86_64 %{arm} 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-multiline
ExclusiveArch: %{nodejs_arches} 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-mustache
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-nano
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-native-or-bluebird
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-negotiator
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-nested-error-stacks
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-net-browserify-alt
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-netmask
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-next
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-next-tick
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} 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-print
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-node-static
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-node-status-codes
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-node-stringprep
ExclusiveArch: %{nodejs_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- nodejs-node-uuid
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-nomnom
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-package-data
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-registry-client
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-npm-run-path
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-npm-stats
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-npm-user-validate
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-npmlog
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-nsp-api
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-nsp-audit-shrinkwrap
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-object-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-inspect
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-object-is
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-object-keys
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-onetime
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-only-shallow
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-oop
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-open
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-opener
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-opn
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
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-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-p-finally
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-p-is-promise
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-p-limit
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-p-locate
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-pac-proxy-agent
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-pac-resolver
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-package
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-package-info
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-package-json
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-param-case
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-json
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-parse-ms
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-parserlib
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-parseurl
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-pascal-case
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-strategy
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-path-array
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-path-case
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-path-exists
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-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-pause-stream
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-pedding
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-pegjs
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-pem
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-pend
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-pff
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-pg
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-pg-connection-string
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-pg-escape
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-pg-types
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-pgpass
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-pify
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-portfinder
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-portscanner
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-posix-getopt
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-prelude-ls
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-prepend-http
ExclusiveArch: %{nodejs_arches} 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-private
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-process-nextick-args
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
ExclusiveArch: %{ix86} x86_64 %{arm} 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-proto-list
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-proxy
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-proxy-agent
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-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-qunit-extras
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-qunitjs
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-rainbowsocks
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} 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-rc
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-dir-files
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-installed
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-package-tree
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-read-pkg
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-read-pkg-up
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-readable-stream
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-readdir-scoped-modules
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-readdirp
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-realize-package-specifier
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-recast
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} 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-regenerator
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-regex-cache
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-registry-url
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-relateurl
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-requestretry
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-require-cs
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-require-directory
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-require-inject
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-requires-port
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-resolve
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-resolve-from
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-resolve-pkg
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-response-time
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-resumer
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-retry
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-revalidator
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-rewire
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-rhea
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-rimraf
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-rndm
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-ronn
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-run-parallel-limit
ExclusiveArch: %{nodejs_arches} 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-safecb
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-samsam
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-sauce-tunnel
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-saucelabs
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-sax
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-scmp
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-secure-random
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-semver
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-send
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-sentence-case
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-seq
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-serve-static
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} 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-setimmediate
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-sha
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-sigmund
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-signal-exit
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-silent-npm-registry-client
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-simple-assert
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-restore
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-slide
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-smart-buffer
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-snake-case
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-snockets
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-sntp
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-socks-client
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-socks-proxy-agent
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-sort-keys
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-sparkles
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-spdx-correct
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-spdx-exceptions
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-spdx-expression-parse
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-spdx-license-ids
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-speedometer
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-split
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-st
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-favicon
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-statuses
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-std-mocks
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-equal
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-stream-reduce
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-to-array
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-streamsink
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-indent
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-strip-json-comments
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-strip-path
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-strscanner
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-stylus
ExclusiveArch: %{ix86} x86_64 %{arm} 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-superagent-proxy
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-swap-case
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-symbol-observable
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-tad
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-parser
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-tape
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-tar
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-tar-stream
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-temp
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-temporary
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-tern
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-test
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-testjs
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-testswarm
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} 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-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-stamp
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-timed-out
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-title-case
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-to-absolute-glob
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-to-object-path
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} 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-trim-newlines
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-try-open
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-tryor
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-tsscmp
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-ttembed-js
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-tunnel-agent
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-typedarray
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: %{ix86} x86_64 %{arm} 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-7.0.0
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-unicode-length
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-union
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-unpipe
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-unzip-response
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-upper-case
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-upper-case-first
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-uri-path
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-url-join
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-url-parse-lax
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-url2
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-utfx
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-util
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-util-deprecate
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-util-extend
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-utile
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-utilities
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-utils-merge
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-vali-date
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-validate-npm-package-license
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-validate-npm-package-name
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-vary
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-vasync
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-verror
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-vhost
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-vinyl
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
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-w3cjs
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-walkdir
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-watchit
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} 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-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-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-file-atomic
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-write-json-file
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-write-pkg
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ws
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-xml2js
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-xmlbuilder
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-xmldom
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-xregexp
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} 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-yargs
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-yauzl
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-zap
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-zip-stream
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
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- notify-sharp
ExclusiveArch: %{mono_arches}
- notify-sharp3
ExclusiveArch: %{mono_arches}
- nuget
ExclusiveArch: %{mono_arches}
- numatop
ExclusiveArch: %{ix86} x86_64
- nunit
ExclusiveArch: %{mono_arches}
- nunit2
ExclusiveArch: %{mono_arches}
- nvml
ExclusiveArch: x86_64
- nwchem
ExclusiveArch: x86_64 %{ix86}
- oci-register-machine
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- ocitools
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- odcs
ExclusiveArch: %{ix86} x86_64
- olpc-kbdshim
ExclusiveArch: %{ix86} %{arm}
- olpc-netutils
ExclusiveArch: %{ix86} %{arm}
- olpc-powerd
ExclusiveArch: %{ix86} %{arm}
- olpc-utils
ExclusiveArch: %{ix86} %{arm}
- 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}
- openmx
ExclusiveArch: x86_64 %{ix86}
- 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
- orocos-bfl
ExclusiveArch: %{ix86} x86_64
- orthorobot
ExclusiveArch: %{arm} %{ix86} x86_64 %{mips} aarch64 ppc64
- paflib
ExclusiveArch: ppc %{power64}
- pcc
ExclusiveArch: %{ix86} x86_64
- pcmciautils
ExclusiveArch: %{ix86} x86_64 ia64 ppc ppc64 %{arm}
- pdfmod
ExclusiveArch: %mono_arches
- perl-Dumbbench
ExclusiveArch: %{ix86} x86_64 noarch
- perl-Parse-DMIDecode
ExclusiveArch: %{ix86} x86_64 ia64 aarch64
- pesign
ExclusiveArch: %{ix86} x86_64 ia64 aarch64 arm
- pesign-test-app
ExclusiveArch: i686 x86_64 ia64 aarch64
- pinta
ExclusiveArch: %mono_arches
- pioneer
ExclusiveArch: %{ix86} x86_64
- playonlinux
ExclusiveArch: %{arm} aarch64 %{ix86} x86_64
- polyml
ExclusiveArch: %{ix86} x86_64 sparc sparcv8 sparcv9 sparcv9v ppc %{power64} %{arm} aarch64 ia64 mips mipsel
- poppler-sharp
ExclusiveArch: %mono_arches
- powerpc-utils
ExclusiveArch: ppc %{power64}
- ppc64-diag
ExclusiveArch: ppc %{power64}
- ppc64-utils
ExclusiveArch: ppc %{power64}
- prelude-correlator
ExclusiveArch: %{ix86} x86_64
- prewikka
ExclusiveArch: %{ix86} x86_64
- publican-jboss
ExclusiveArch: i686 x86_64
- pvs-sbcl
ExclusiveArch: %{ix86} x86_64 ppc sparcv9
- python-afl
ExclusiveArch: %{ix86} x86_64
- 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-ovirt-register
ExclusiveArch: %{ix86} 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
- qt4pas
ExclusiveArch: %{fpc_arches}
- qt5-qtwebengine
ExclusiveArch: %{qt5_qtwebengine_arches}
- quantum-espresso
ExclusiveArch: x86_64 %{ix86}
ExclusiveArch: %{openblas_arches}
- 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
- reptyr
ExclusiveArch: %{ix86} x86_64 %{arm}
- rescene
ExclusiveArch: %{mono_arches}
- restsharp
ExclusiveArch: %{mono_arches}
- rhythmbox-alternative-toolbar
ExclusiveArch: %{ix86} %{arm} x86_64 ppc64 ppc64le
- rkt
ExclusiveArch: x86_64 aarch64 %{arm} %{ix86}
- runc
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64 ppc64le %{mips} s390x
- rust
ExclusiveArch: %{rust_arches}
- rust-packaging
ExclusiveArch: %{rust_arches} noarch
- s390utils
ExclusiveArch: s390 s390x
- sagemath
ExclusiveArch: aarch64 %{arm} %{ix86} x86_64 ppc sparcv9
- sbcl
ExclusiveArch: %{arm} %{ix86} x86_64 ppc sparcv9 aarch64
- sbd
ExclusiveArch: i686 x86_64 s390x
- seamonkey
ExclusiveArch: %{ix86} x86_64
- servicelog
ExclusiveArch: ppc %{power64}
- sharpfont
ExclusiveArch: %mono_arches
- sharpziplib
ExclusiveArch: %{mono_arches}
- shim
ExclusiveArch: x86_64
- shim-signed
ExclusiveArch: x86_64 aarch64
- shim-unsigned-aarch64
ExclusiveArch: aarch64
- sigul
ExclusiveArch: x86_64
- skychart
ExclusiveArch: %{fpc_arches}
- slapi-nis
ExclusiveArch: x86_64 %{ix86}
- smuxi
ExclusiveArch: %{ix86} x86_64 %{arm} ppc64le
- snapd
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64 ppc64le s390x
- 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
- spice-xpi
ExclusiveArch: i686 x86_64 armv6l armv7l armv7hl aarch64
- spring
ExclusiveArch: %{ix86} x86_64
- springlobby
ExclusiveArch: %{ix86} x86_64
- statsd
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- stripesnoop
ExclusiveArch: %{ix86} x86_64
- supermin
ExclusiveArch: x86_64
- sysbench
ExclusiveArch: %{arm} %{ix86} x86_64 %{mips}
ExclusiveArch: %{arm} %{ix86} x86_64 %{mips} aarch64
- syslinux
ExclusiveArch: %{ix86} x86_64
ExclusiveArch: %{ix86} x86_64
ExclusiveArch: %{ix86} x86_64
ExclusiveArch: %{ix86} x86_64
- taglib-sharp
ExclusiveArch: %{mono_arches}
- tarantool
ExclusiveArch: %{ix86} x86_64 armv7hl armv7hnl aarch64
- tboot
ExclusiveArch: %{ix86} x86_64
- templates_parser
ExclusiveArch: %GPRbuild_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
- thunderbird-enigmail
ExclusiveArch: %{ix86} %{arm} ppc64 ppc64le s390x x86_64 noarch
- tilix
ExclusiveArch: %{ldc_arches}
- tmux-top
ExclusiveArch: %{go_arches}
- tomboy
ExclusiveArch: %{mono_arches}
- tpm2-tools
ExclusiveArch: %{ix86} x86_64
- tpm2-tss
ExclusiveArch: %{ix86} x86_64
- uClibc
ExclusiveArch: %{arm} %{ix86} x86_64 %{mips}
- 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
- v8
ExclusiveArch: %{ix86} x86_64 ppc ppc64 aarch64 %{mips} s390 s390x
- 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
- vdsm
ExclusiveArch: x86_64 %{power64} aarch64
- vim-go
ExclusiveArch: %{?golang_arches:%{golang_arches} noarch}%{!?golang_arches:%{ix86} x86_64 %{arm}}
- virtualplanet
ExclusiveArch: %{fpc_arches}
- vrq
ExclusiveArch: %{ix86} x86_64
- warsow
ExclusiveArch: %{ix86} x86_64 %{arm}
- warsow-data
ExclusiveArch: %{ix86} x86_64 %{arm}
- webkit-sharp
ExclusiveArch: %mono_arches
- wine
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64
ExclusiveArch: %{ix86} %{arm}
- winetricks
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64
- wiredtiger
ExclusiveArch: x86_64 aarch64 ppc64le
- wraplinux
ExclusiveArch: %{ix86} x86_64
- wxMaxima
ExclusiveArch: %{arm} %{ix86} x86_64 aarch64 ppc sparcv9
- x86info
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-freedreno
ExclusiveArch: %{arm} aarch64
- xorg-x11-drv-geode
ExclusiveArch: %{ix86}
- xorg-x11-drv-intel
ExclusiveArch: %{ix86} x86_64 ia64
- xorg-x11-drv-omap
ExclusiveArch: %{arm}
- xorg-x11-drv-openchrome
ExclusiveArch: %{ix86} x86_64
- xorg-x11-drv-opentegra
ExclusiveArch: %{arm}
- xorg-x11-drv-vesa
ExclusiveArch: %{ix86} x86_64
- xorg-x11-drv-vmware
ExclusiveArch: %{ix86} x86_64 ia64
- xsp
ExclusiveArch: %mono_arches
- xsupplicant
ExclusiveArch: %{ix86} x86_64 ppc %{power64}
- ycssmin
ExclusiveArch: %{nodejs_arches} noarch
- zeromq-ada
ExclusiveArch: %{GNAT_arches}
- zlib-ada
ExclusiveArch: %{GNAT_arches}
6 years, 8 months
Architecture specific change in rpms/kicad.git
by githook-noreply@fedoraproject.org
The package rpms/kicad.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/kicad.git/commit/?id=70633a177822....
Change:
+ExclusiveArch: %{ix86} x86_64 %{arm} ppc64 ppc64le aarch64
Thanks.
Full change:
============
commit 70633a17782259c038fe2e97774b2c9cfa6d18bb
Author: Kalev Lember <klember(a)redhat.com>
Date: Fri Jul 21 14:39:13 2017 +0200
Fix the build
Add an ExclusiveArch matching with the architectures that boost-context
is available on (copy-pasted from boost.spec). Notably, this excludes
s390x where kicad build was failing.
diff --git a/kicad.spec b/kicad.spec
index cc22484..0aa817a 100644
--- a/kicad.spec
+++ b/kicad.spec
@@ -115,6 +115,9 @@ Patch2: kicad-4.0.0-freerouting.patch
Patch3: kicad-4.0.2-appstream.patch
Patch4: kicad-4.0.5-boost.patch
+# boost-context is only available on the following architectures:
+ExclusiveArch: %{ix86} x86_64 %{arm} ppc64 ppc64le aarch64
+
BuildRequires: desktop-file-utils
BuildRequires: compat-wxGTK3-gtk2-devel
BuildRequires: boost-devel
6 years, 8 months
Architecture specific change in rpms/java-1.8.0-openjdk.git
by githook-noreply@fedoraproject.org
The package rpms/java-1.8.0-openjdk.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/java-1.8.0-openjdk.git/commit/?id....
Change:
+%ifarch %{ix86} x86_64
Thanks.
Full change:
============
commit cf590e7d177e6dfb8909bfc5cfb81474ee5cca58
Author: Jiri Vanek <jvanek(a)redhat.com>
Date: Fri Jul 21 14:41:17 2017 +0200
updated to security u141.b16
- sync patches with rhel
diff --git a/.gitignore b/.gitignore
index 03ab3f7..eb623a8 100644
--- a/.gitignore
+++ b/.gitignore
@@ -74,3 +74,5 @@
/aarch64-port-jdk8u-aarch64-jdk8u131-b12.tar.xz
/aarch64-port-jdk8u-shenandoah-aarch64-shenandoah-jdk8u131-b12-shenandoah-merge-2017-04-20.tar.xz
/systemtap-tapset-3.4.0pre01.tar.xz
+/aarch64-port-jdk8u-aarch64-jdk8u141-b16.tar.xz
+/aarch64-port-jdk8u-shenandoah-aarch64-shenandoah-jdk8u141-b16.tar.xz
diff --git a/6515172-pr3346.patch b/6515172-pr3346.patch
deleted file mode 100644
index 4b8e8a2..0000000
--- a/6515172-pr3346.patch
+++ /dev/null
@@ -1,213 +0,0 @@
-# HG changeset patch
-# User shshahma
-# Date 1474535080 25200
-# Thu Sep 22 02:04:40 2016 -0700
-# Node ID baf64c88538f477d7f5a0cf90b670108ac312375
-# Parent 62212568179b76b5ebe7b0129ddeed7b268b0bc0
-6515172, PR3346: Runtime.availableProcessors() ignores Linux taskset command
-Summary: extract processor count from sched_getaffinity mask
-Reviewed-by: dholmes, gthornbr
-
-diff --git a/src/os/linux/vm/globals_linux.hpp b/src/os/linux/vm/globals_linux.hpp
---- openjdk/hotspot/src/os/linux/vm/globals_linux.hpp
-+++ openjdk/hotspot/src/os/linux/vm/globals_linux.hpp
-@@ -1,5 +1,5 @@
- /*
-- * Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
-+ * Copyright (c) 2005, 2016, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
-@@ -47,7 +47,10 @@
- "Load DLLs with executable-stack attribute in the VM Thread") \
- \
- product(bool, UseSHM, false, \
-- "Use SYSV shared memory for large pages")
-+ "Use SYSV shared memory for large pages") \
-+ \
-+ diagnostic(bool, PrintActiveCpus, false, \
-+ "Print the number of CPUs detected in os::active_processor_count")
-
- //
- // Defines Linux-specific default values. The flags are available on all
-diff --git a/src/os/linux/vm/os_linux.cpp b/src/os/linux/vm/os_linux.cpp
---- openjdk/hotspot/src/os/linux/vm/os_linux.cpp
-+++ openjdk/hotspot/src/os/linux/vm/os_linux.cpp
-@@ -1,5 +1,5 @@
- /*
-- * Copyright (c) 1999, 2015, Oracle and/or its affiliates. All rights reserved.
-+ * Copyright (c) 1999, 2016, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
-@@ -104,6 +104,14 @@
-
- PRAGMA_FORMAT_MUTE_WARNINGS_FOR_GCC
-
-+#ifndef _GNU_SOURCE
-+ #define _GNU_SOURCE
-+ #include <sched.h>
-+ #undef _GNU_SOURCE
-+#else
-+ #include <sched.h>
-+#endif
-+
- // if RUSAGE_THREAD for getrusage() has not been defined, do it here. The code calling
- // getrusage() is prepared to handle the associated failure.
- #ifndef RUSAGE_THREAD
-@@ -5027,12 +5035,42 @@
- }
- };
-
-+static int os_cpu_count(const cpu_set_t* cpus) {
-+ int count = 0;
-+ // only look up to the number of configured processors
-+ for (int i = 0; i < os::processor_count(); i++) {
-+ if (CPU_ISSET(i, cpus)) {
-+ count++;
-+ }
-+ }
-+ return count;
-+}
-+
-+// Get the current number of available processors for this process.
-+// This value can change at any time during a process's lifetime.
-+// sched_getaffinity gives an accurate answer as it accounts for cpusets.
-+// If anything goes wrong we fallback to returning the number of online
-+// processors - which can be greater than the number available to the process.
- int os::active_processor_count() {
-- // Linux doesn't yet have a (official) notion of processor sets,
-- // so just return the number of online processors.
-- int online_cpus = ::sysconf(_SC_NPROCESSORS_ONLN);
-- assert(online_cpus > 0 && online_cpus <= processor_count(), "sanity check");
-- return online_cpus;
-+ cpu_set_t cpus; // can represent at most 1024 (CPU_SETSIZE) processors
-+ int cpus_size = sizeof(cpu_set_t);
-+ int cpu_count = 0;
-+
-+ // pid 0 means the current thread - which we have to assume represents the process
-+ if (sched_getaffinity(0, cpus_size, &cpus) == 0) {
-+ cpu_count = os_cpu_count(&cpus);
-+ if (PrintActiveCpus) {
-+ tty->print_cr("active_processor_count: sched_getaffinity processor count: %d", cpu_count);
-+ }
-+ }
-+ else {
-+ cpu_count = ::sysconf(_SC_NPROCESSORS_ONLN);
-+ warning("sched_getaffinity failed (%s)- using online processor count (%d) "
-+ "which may exceed available processors", strerror(errno), cpu_count);
-+ }
-+
-+ assert(cpu_count > 0 && cpu_count <= processor_count(), "sanity check");
-+ return cpu_count;
- }
-
- void os::set_native_thread_name(const char *name) {
-diff --git a/test/runtime/os/AvailableProcessors.java b/test/runtime/os/AvailableProcessors.java
-new file mode 100644
---- /dev/null
-+++ openjdk/hotspot/test/runtime/os/AvailableProcessors.java
-@@ -0,0 +1,103 @@
-+/*
-+ * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
-+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-+ *
-+ * This code is free software; you can redistribute it and/or modify it
-+ * under the terms of the GNU General Public License version 2 only, as
-+ * published by the Free Software Foundation.
-+ *
-+ * This code is distributed in the hope that it will be useful, but WITHOUT
-+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-+ * version 2 for more details (a copy is included in the LICENSE file that
-+ * accompanied this code).
-+ *
-+ * You should have received a copy of the GNU General Public License version
-+ * 2 along with this work; if not, write to the Free Software Foundation,
-+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-+ *
-+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-+ * or visit www.oracle.com if you need additional information or have any
-+ * questions.
-+ */
-+import java.io.File;
-+import com.oracle.java.testlibrary.ProcessTools;
-+import com.oracle.java.testlibrary.OutputAnalyzer;
-+import java.util.ArrayList;
-+
-+/*
-+ * @test
-+ * @bug 6515172
-+ * @summary Check that availableProcessors reports the correct value when running in a cpuset on linux
-+ * @requires os.family == "linux"
-+ * @library /testlibrary
-+ * @build com.oracle.java.testlibrary.*
-+ * @run driver AvailableProcessors
-+ */
-+public class AvailableProcessors {
-+
-+ static final String SUCCESS_STRING = "Found expected processors: ";
-+
-+ public static void main(String[] args) throws Throwable {
-+ if (args.length > 0)
-+ checkProcessors(Integer.parseInt(args[0]));
-+ else {
-+ // run ourselves under different cpu configurations
-+ // using the taskset command
-+ String taskset;
-+ final String taskset1 = "/bin/taskset";
-+ final String taskset2 = "/usr/bin/taskset";
-+ if (new File(taskset1).exists())
-+ taskset = taskset1;
-+ else if (new File(taskset2).exists())
-+ taskset = taskset2;
-+ else {
-+ System.out.println("Skipping test: could not find taskset command");
-+ return;
-+ }
-+
-+ int available = Runtime.getRuntime().availableProcessors();
-+
-+ if (available == 1) {
-+ System.out.println("Skipping test: only one processor available");
-+ return;
-+ }
-+
-+ // Get the java command we want to execute
-+ // Enable logging for easier failure diagnosis
-+ ProcessBuilder master =
-+ ProcessTools.createJavaProcessBuilder(false,
-+ "-XX:+UnlockDiagnosticVMOptions",
-+ "-XX:+PrintActiveCpus",
-+ "AvailableProcessors");
-+
-+ int[] expected = new int[] { 1, available/2, available-1, available };
-+
-+ for (int i : expected) {
-+ System.out.println("Testing for " + i + " processors ...");
-+ int max = i - 1;
-+ ArrayList<String> cmdline = new ArrayList<>(master.command());
-+ // prepend taskset command
-+ cmdline.add(0, "0-" + max);
-+ cmdline.add(0, "-c");
-+ cmdline.add(0, taskset);
-+ // append expected processor count
-+ cmdline.add(String.valueOf(i));
-+ ProcessBuilder pb = new ProcessBuilder(cmdline);
-+ System.out.println("Final command line: " +
-+ ProcessTools.getCommandLine(pb));
-+ OutputAnalyzer output = ProcessTools.executeProcess(pb);
-+ output.shouldContain(SUCCESS_STRING);
-+ }
-+ }
-+ }
-+
-+ static void checkProcessors(int expected) {
-+ int available = Runtime.getRuntime().availableProcessors();
-+ if (available != expected)
-+ throw new Error("Expected " + expected + " processors, but found "
-+ + available);
-+ else
-+ System.out.println(SUCCESS_STRING + available);
-+ }
-+}
diff --git a/8144566-pr3352.patch b/8144566-pr3352.patch
deleted file mode 100644
index 9a2a294..0000000
--- a/8144566-pr3352.patch
+++ /dev/null
@@ -1,911 +0,0 @@
-# HG changeset patch
-# User rpatil
-# Date 1474623897 -19800
-# Fri Sep 23 15:14:57 2016 +0530
-# Node ID fb617df8fbac42e962219e45cbd29b15b5ecdc63
-# Parent d41592af9af3790fe5eee30ce686d85cff09c942
-8144566, PR3352: Custom HostnameVerifier disables SNI extension
-Reviewed-by: coffeys
-
-diff --git a/src/share/classes/sun/security/ssl/SSLSocketImpl.java b/src/share/classes/sun/security/ssl/SSLSocketImpl.java
---- openjdk/jdk/src/share/classes/sun/security/ssl/SSLSocketImpl.java
-+++ openjdk/jdk/src/share/classes/sun/security/ssl/SSLSocketImpl.java
-@@ -1,5 +1,5 @@
- /*
-- * Copyright (c) 1996, 2015, Oracle and/or its affiliates. All rights reserved.
-+ * Copyright (c) 1996, 2016, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
-@@ -220,6 +220,11 @@
- Collections.<SNIServerName>emptyList();
- Collection<SNIMatcher> sniMatchers =
- Collections.<SNIMatcher>emptyList();
-+ // Is the serverNames set to empty with SSLParameters.setServerNames()?
-+ private boolean noSniExtension = false;
-+
-+ // Is the sniMatchers set to empty with SSLParameters.setSNIMatchers()?
-+ private boolean noSniMatcher = false;
-
- /*
- * READ ME * READ ME * READ ME * READ ME * READ ME * READ ME *
-@@ -666,6 +671,11 @@
- }
-
- super.connect(endpoint, timeout);
-+
-+ if (host == null || host.length() == 0) {
-+ useImplicitHost(false);
-+ }
-+
- doneConnect();
- }
-
-@@ -2158,41 +2168,61 @@
- output.r.setVersion(protocolVersion);
- }
-
-+ //
-+ // ONLY used by ClientHandshaker for the server hostname during handshaking
-+ //
- synchronized String getHost() {
- // Note that the host may be null or empty for localhost.
- if (host == null || host.length() == 0) {
-- if (!trustNameService) {
-- // If the local name service is not trustworthy, reverse host
-- // name resolution should not be performed for endpoint
-- // identification. Use the application original specified
-- // hostname or IP address instead.
-- host = getOriginalHostname(getInetAddress());
-- } else {
-- host = getInetAddress().getHostName();
-- }
-+ useImplicitHost(true);
- }
-
- return host;
- }
-
- /*
-- * Get the original application specified hostname.
-+ * Try to set and use the implicit specified hostname
- */
-- private static String getOriginalHostname(InetAddress inetAddress) {
-- /*
-- * Get the original hostname via sun.misc.SharedSecrets.
-- */
-+ private synchronized void useImplicitHost(boolean noSniUpdate) {
-+
-+ // Note: If the local name service is not trustworthy, reverse
-+ // host name resolution should not be performed for endpoint
-+ // identification. Use the application original specified
-+ // hostname or IP address instead.
-+
-+ // Get the original hostname via jdk.internal.misc.SharedSecrets
-+ InetAddress inetAddress = getInetAddress();
-+ if (inetAddress == null) { // not connected
-+ return;
-+ }
-+
- JavaNetAccess jna = SharedSecrets.getJavaNetAccess();
- String originalHostname = jna.getOriginalHostName(inetAddress);
-+ if ((originalHostname != null) &&
-+ (originalHostname.length() != 0)) {
-
-- /*
-- * If no application specified hostname, use the IP address.
-- */
-- if (originalHostname == null || originalHostname.length() == 0) {
-- originalHostname = inetAddress.getHostAddress();
-+ host = originalHostname;
-+ if (!noSniUpdate && serverNames.isEmpty() && !noSniExtension) {
-+ serverNames =
-+ Utilities.addToSNIServerNameList(serverNames, host);
-+
-+ if (!roleIsServer &&
-+ (handshaker != null) && !handshaker.started()) {
-+ handshaker.setSNIServerNames(serverNames);
-+ }
-+ }
-+
-+ return;
- }
-
-- return originalHostname;
-+ // No explicitly specified hostname, no server name indication.
-+ if (!trustNameService) {
-+ // The local name service is not trustworthy, use IP address.
-+ host = inetAddress.getHostAddress();
-+ } else {
-+ // Use the underlying reverse host name resolution service.
-+ host = getInetAddress().getHostName();
-+ }
- }
-
-
-@@ -2205,6 +2235,10 @@
- this.host = host;
- this.serverNames =
- Utilities.addToSNIServerNameList(this.serverNames, this.host);
-+
-+ if (!roleIsServer && (handshaker != null) && !handshaker.started()) {
-+ handshaker.setSNIServerNames(serverNames);
-+ }
- }
-
- /**
-@@ -2571,8 +2605,21 @@
- // the super implementation does not handle the following parameters
- params.setEndpointIdentificationAlgorithm(identificationProtocol);
- params.setAlgorithmConstraints(algorithmConstraints);
-- params.setSNIMatchers(sniMatchers);
-- params.setServerNames(serverNames);
-+
-+ if (sniMatchers.isEmpty() && !noSniMatcher) {
-+ // 'null' indicates none has been set
-+ params.setSNIMatchers(null);
-+ } else {
-+ params.setSNIMatchers(sniMatchers);
-+ }
-+
-+ if (serverNames.isEmpty() && !noSniExtension) {
-+ // 'null' indicates none has been set
-+ params.setServerNames(null);
-+ } else {
-+ params.setServerNames(serverNames);
-+ }
-+
- params.setUseCipherSuitesOrder(preferLocalCipherSuites);
-
- return params;
-@@ -2592,11 +2639,13 @@
-
- List<SNIServerName> sniNames = params.getServerNames();
- if (sniNames != null) {
-+ noSniExtension = sniNames.isEmpty();
- serverNames = sniNames;
- }
-
- Collection<SNIMatcher> matchers = params.getSNIMatchers();
- if (matchers != null) {
-+ noSniMatcher = matchers.isEmpty();
- sniMatchers = matchers;
- }
-
-diff --git a/test/javax/net/ssl/ServerName/BestEffortOnLazyConnected.java b/test/javax/net/ssl/ServerName/BestEffortOnLazyConnected.java
-new file mode 100644
---- /dev/null
-+++ openjdk/jdk/test/javax/net/ssl/ServerName/BestEffortOnLazyConnected.java
-@@ -0,0 +1,337 @@
-+/*
-+ * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
-+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-+ *
-+ * This code is free software; you can redistribute it and/or modify it
-+ * under the terms of the GNU General Public License version 2 only, as
-+ * published by the Free Software Foundation.
-+ *
-+ * This code is distributed in the hope that it will be useful, but WITHOUT
-+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-+ * version 2 for more details (a copy is included in the LICENSE file that
-+ * accompanied this code).
-+ *
-+ * You should have received a copy of the GNU General Public License version
-+ * 2 along with this work; if not, write to the Free Software Foundation,
-+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-+ *
-+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-+ * or visit www.oracle.com if you need additional information or have any
-+ * questions.
-+ */
-+
-+//
-+// SunJSSE does not support dynamic system properties, no way to re-use
-+// system properties in samevm/agentvm mode.
-+//
-+
-+/**
-+ * @test
-+ * @bug 8144566
-+ * @summary Custom HostnameVerifier disables SNI extension
-+ * @run main/othervm BestEffortOnLazyConnected
-+ */
-+
-+import java.io.*;
-+import java.nio.*;
-+import java.nio.channels.*;
-+import java.util.*;
-+import java.net.*;
-+import javax.net.ssl.*;
-+
-+public class BestEffortOnLazyConnected {
-+
-+ /*
-+ * =============================================================
-+ * Set the various variables needed for the tests, then
-+ * specify what tests to run on each side.
-+ */
-+
-+ /*
-+ * Should we run the client or server in a separate thread?
-+ * Both sides can throw exceptions, but do you have a preference
-+ * as to which side should be the main thread.
-+ */
-+ private static final boolean separateServerThread = true;
-+
-+ /*
-+ * Where do we find the keystores?
-+ */
-+ private static final String pathToStores = "../../../../sun/security/ssl/etc";
-+ private static final String keyStoreFile = "keystore";
-+ private static final String trustStoreFile = "truststore";
-+ private static final String passwd = "passphrase";
-+
-+ /*
-+ * Is the server ready to serve?
-+ */
-+ private static volatile boolean serverReady = false;
-+
-+ /*
-+ * Turn on SSL debugging?
-+ */
-+ private static final boolean debug = false;
-+
-+ /*
-+ * the fully qualified domain name of localhost
-+ */
-+ private static String hostname = null;
-+
-+ /*
-+ * If the client or server is doing some kind of object creation
-+ * that the other side depends on, and that thread prematurely
-+ * exits, you may experience a hang. The test harness will
-+ * terminate all hung threads after its timeout has expired,
-+ * currently 3 minutes by default, but you might try to be
-+ * smart about it....
-+ */
-+
-+ /*
-+ * Define the server side of the test.
-+ *
-+ * If the server prematurely exits, serverReady will be set to true
-+ * to avoid infinite hangs.
-+ */
-+ private void doServerSide() throws Exception {
-+ SSLServerSocketFactory sslssf =
-+ (SSLServerSocketFactory) SSLServerSocketFactory.getDefault();
-+ try (SSLServerSocket sslServerSocket =
-+ (SSLServerSocket) sslssf.createServerSocket(serverPort)) {
-+
-+ serverPort = sslServerSocket.getLocalPort();
-+
-+ /*
-+ * Signal Client, we're ready for his connect.
-+ */
-+ serverReady = true;
-+
-+ try (SSLSocket sslSocket = (SSLSocket)sslServerSocket.accept()) {
-+ InputStream sslIS = sslSocket.getInputStream();
-+ OutputStream sslOS = sslSocket.getOutputStream();
-+
-+ sslIS.read();
-+ sslOS.write(85);
-+ sslOS.flush();
-+
-+ ExtendedSSLSession session =
-+ (ExtendedSSLSession)sslSocket.getSession();
-+ if (session.getRequestedServerNames().isEmpty()) {
-+ throw new Exception("No expected Server Name Indication");
-+ }
-+ }
-+ }
-+ }
-+
-+ /*
-+ * Define the client side of the test.
-+ *
-+ * If the server prematurely exits, serverReady will be set to true
-+ * to avoid infinite hangs.
-+ */
-+ private void doClientSide() throws Exception {
-+
-+ /*
-+ * Wait for server to get started.
-+ */
-+ while (!serverReady) {
-+ Thread.sleep(50);
-+ }
-+
-+ SSLSocketFactory sslsf =
-+ (SSLSocketFactory) SSLSocketFactory.getDefault();
-+
-+ try (SSLSocket sslSocket = (SSLSocket)sslsf.createSocket()) {
-+
-+ sslSocket.connect(new InetSocketAddress(hostname, serverPort), 0);
-+
-+ InputStream sslIS = sslSocket.getInputStream();
-+ OutputStream sslOS = sslSocket.getOutputStream();
-+
-+ sslOS.write(280);
-+ sslOS.flush();
-+ sslIS.read();
-+ }
-+ }
-+
-+
-+ /*
-+ * =============================================================
-+ * The remainder is just support stuff
-+ */
-+
-+ // use any free port by default
-+ private volatile int serverPort = 0;
-+
-+ private volatile Exception serverException = null;
-+ private volatile Exception clientException = null;
-+
-+ public static void main(String[] args) throws Exception {
-+ String keyFilename =
-+ System.getProperty("test.src", ".") + "/" + pathToStores +
-+ "/" + keyStoreFile;
-+ String trustFilename =
-+ System.getProperty("test.src", ".") + "/" + pathToStores +
-+ "/" + trustStoreFile;
-+
-+ System.setProperty("javax.net.ssl.keyStore", keyFilename);
-+ System.setProperty("javax.net.ssl.keyStorePassword", passwd);
-+ System.setProperty("javax.net.ssl.trustStore", trustFilename);
-+ System.setProperty("javax.net.ssl.trustStorePassword", passwd);
-+
-+ if (debug) {
-+ System.setProperty("javax.net.debug", "all");
-+ }
-+
-+ try {
-+ hostname = InetAddress.getLocalHost().getCanonicalHostName();
-+ } catch (UnknownHostException uhe) {
-+ System.out.println(
-+ "Ignore the test as the local hostname cannot be determined");
-+
-+ return;
-+ }
-+
-+ System.out.println(
-+ "The fully qualified domain name of the local host is " +
-+ hostname);
-+ // Ignore the test if the hostname does not sound like a domain name.
-+ if ((hostname == null) || hostname.isEmpty() ||
-+ hostname.startsWith("localhost") ||
-+ Character.isDigit(hostname.charAt(hostname.length() - 1))) {
-+
-+ System.out.println("Ignore the test as the local hostname " +
-+ "cannot be determined as fully qualified domain name");
-+
-+ return;
-+ }
-+
-+ /*
-+ * Start the tests.
-+ */
-+ new BestEffortOnLazyConnected();
-+ }
-+
-+ private Thread clientThread = null;
-+ private Thread serverThread = null;
-+
-+ /*
-+ * Primary constructor, used to drive remainder of the test.
-+ *
-+ * Fork off the other side, then do your work.
-+ */
-+ BestEffortOnLazyConnected() throws Exception {
-+ try {
-+ if (separateServerThread) {
-+ startServer(true);
-+ startClient(false);
-+ } else {
-+ startClient(true);
-+ startServer(false);
-+ }
-+ } catch (Exception e) {
-+ // swallow for now. Show later
-+ }
-+
-+ /*
-+ * Wait for other side to close down.
-+ */
-+ if (separateServerThread) {
-+ serverThread.join();
-+ } else {
-+ clientThread.join();
-+ }
-+
-+ /*
-+ * When we get here, the test is pretty much over.
-+ * Which side threw the error?
-+ */
-+ Exception local;
-+ Exception remote;
-+ String whichRemote;
-+
-+ if (separateServerThread) {
-+ remote = serverException;
-+ local = clientException;
-+ whichRemote = "server";
-+ } else {
-+ remote = clientException;
-+ local = serverException;
-+ whichRemote = "client";
-+ }
-+
-+ /*
-+ * If both failed, return the curthread's exception, but also
-+ * print the remote side Exception
-+ */
-+ if ((local != null) && (remote != null)) {
-+ System.out.println(whichRemote + " also threw:");
-+ remote.printStackTrace();
-+ System.out.println();
-+ throw local;
-+ }
-+
-+ if (remote != null) {
-+ throw remote;
-+ }
-+
-+ if (local != null) {
-+ throw local;
-+ }
-+ }
-+
-+ private void startServer(boolean newThread) throws Exception {
-+ if (newThread) {
-+ serverThread = new Thread() {
-+ public void run() {
-+ try {
-+ doServerSide();
-+ } catch (Exception e) {
-+ /*
-+ * Our server thread just died.
-+ *
-+ * Release the client, if not active already...
-+ */
-+ System.err.println("Server died...");
-+ serverReady = true;
-+ serverException = e;
-+ }
-+ }
-+ };
-+ serverThread.start();
-+ } else {
-+ try {
-+ doServerSide();
-+ } catch (Exception e) {
-+ serverException = e;
-+ } finally {
-+ serverReady = true;
-+ }
-+ }
-+ }
-+
-+ private void startClient(boolean newThread) throws Exception {
-+ if (newThread) {
-+ clientThread = new Thread() {
-+ public void run() {
-+ try {
-+ doClientSide();
-+ } catch (Exception e) {
-+ /*
-+ * Our client thread just died.
-+ */
-+ System.err.println("Client died...");
-+ clientException = e;
-+ }
-+ }
-+ };
-+ clientThread.start();
-+ } else {
-+ try {
-+ doClientSide();
-+ } catch (Exception e) {
-+ clientException = e;
-+ }
-+ }
-+ }
-+}
-diff --git a/test/sun/net/www/protocol/https/HttpsURLConnection/ImpactOnSNI.java b/test/sun/net/www/protocol/https/HttpsURLConnection/ImpactOnSNI.java
-new file mode 100644
---- /dev/null
-+++ openjdk/jdk/test/sun/net/www/protocol/https/HttpsURLConnection/ImpactOnSNI.java
-@@ -0,0 +1,390 @@
-+/*
-+ * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
-+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-+ *
-+ * This code is free software; you can redistribute it and/or modify it
-+ * under the terms of the GNU General Public License version 2 only, as
-+ * published by the Free Software Foundation.
-+ *
-+ * This code is distributed in the hope that it will be useful, but WITHOUT
-+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-+ * version 2 for more details (a copy is included in the LICENSE file that
-+ * accompanied this code).
-+ *
-+ * You should have received a copy of the GNU General Public License version
-+ * 2 along with this work; if not, write to the Free Software Foundation,
-+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-+ *
-+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-+ * or visit www.oracle.com if you need additional information or have any
-+ * questions.
-+ */
-+
-+//
-+// SunJSSE does not support dynamic system properties, no way to re-use
-+// system properties in samevm/agentvm mode.
-+//
-+
-+/*
-+ * @test
-+ * @bug 8144566
-+ * @summary Custom HostnameVerifier disables SNI extension
-+ * @run main/othervm ImpactOnSNI
-+ */
-+
-+import java.io.*;
-+import java.net.*;
-+import javax.net.ssl.*;
-+
-+public class ImpactOnSNI {
-+
-+ /*
-+ * =============================================================
-+ * Set the various variables needed for the tests, then
-+ * specify what tests to run on each side.
-+ */
-+
-+ /*
-+ * Should we run the client or server in a separate thread?
-+ * Both sides can throw exceptions, but do you have a preference
-+ * as to which side should be the main thread.
-+ */
-+ private static final boolean separateServerThread = true;
-+
-+ /*
-+ * Where do we find the keystores?
-+ */
-+ private static final String pathToStores =
-+ "../../../../../../sun/security/ssl/etc";
-+ private static final String keyStoreFile = "keystore";
-+ private static final String trustStoreFile = "truststore";
-+ private static final String passwd = "passphrase";
-+
-+ /*
-+ * Is the server ready to serve?
-+ */
-+ private static volatile boolean serverReady = false;
-+
-+ /*
-+ * Is the connection ready to close?
-+ */
-+ private static volatile boolean closeReady = false;
-+
-+ /*
-+ * Turn on SSL debugging?
-+ */
-+ private static final boolean debug = false;
-+
-+ /*
-+ * Message posted
-+ */
-+ private static final String postMsg = "HTTP post on a https server";
-+
-+ /*
-+ * the fully qualified domain name of localhost
-+ */
-+ private static String hostname = null;
-+
-+ /*
-+ * If the client or server is doing some kind of object creation
-+ * that the other side depends on, and that thread prematurely
-+ * exits, you may experience a hang. The test harness will
-+ * terminate all hung threads after its timeout has expired,
-+ * currently 3 minutes by default, but you might try to be
-+ * smart about it....
-+ */
-+
-+ /*
-+ * Define the server side of the test.
-+ *
-+ * If the server prematurely exits, serverReady will be set to true
-+ * to avoid infinite hangs.
-+ */
-+ private void doServerSide() throws Exception {
-+ SSLServerSocketFactory sslssf =
-+ (SSLServerSocketFactory)SSLServerSocketFactory.getDefault();
-+ try (SSLServerSocket sslServerSocket =
-+ (SSLServerSocket)sslssf.createServerSocket(serverPort)) {
-+
-+ serverPort = sslServerSocket.getLocalPort();
-+
-+ /*
-+ * Signal Client, we're ready for his connect.
-+ */
-+ serverReady = true;
-+
-+ /*
-+ * Accept connections
-+ */
-+ try (SSLSocket sslSocket = (SSLSocket)sslServerSocket.accept()) {
-+ InputStream sslIS = sslSocket.getInputStream();
-+ OutputStream sslOS = sslSocket.getOutputStream();
-+ BufferedReader br =
-+ new BufferedReader(new InputStreamReader(sslIS));
-+ PrintStream ps = new PrintStream(sslOS);
-+
-+ // process HTTP POST request from client
-+ System.out.println("status line: " + br.readLine());
-+ String msg = null;
-+ while ((msg = br.readLine()) != null && msg.length() > 0);
-+
-+ msg = br.readLine();
-+ if (msg.equals(postMsg)) {
-+ ps.println("HTTP/1.1 200 OK\n\n");
-+ } else {
-+ ps.println("HTTP/1.1 500 Not OK\n\n");
-+ }
-+ ps.flush();
-+
-+ ExtendedSSLSession session =
-+ (ExtendedSSLSession)sslSocket.getSession();
-+ if (session.getRequestedServerNames().isEmpty()) {
-+ throw new Exception("No expected Server Name Indication");
-+ }
-+
-+ // close the socket
-+ while (!closeReady) {
-+ Thread.sleep(50);
-+ }
-+ }
-+ }
-+ }
-+
-+ /*
-+ * Define the client side of the test.
-+ *
-+ * If the server prematurely exits, serverReady will be set to true
-+ * to avoid infinite hangs.
-+ */
-+ private void doClientSide() throws Exception {
-+ /*
-+ * Wait for server to get started.
-+ */
-+ while (!serverReady) {
-+ Thread.sleep(50);
-+ }
-+
-+ // Send HTTP POST request to server
-+ URL url = new URL("https://" + hostname + ":" + serverPort);
-+
-+ HttpsURLConnection.setDefaultHostnameVerifier(new NameVerifier());
-+ HttpsURLConnection http = (HttpsURLConnection)url.openConnection();
-+ http.setDoOutput(true);
-+
-+ http.setRequestMethod("POST");
-+ PrintStream ps = new PrintStream(http.getOutputStream());
-+ try {
-+ ps.println(postMsg);
-+ ps.flush();
-+ if (http.getResponseCode() != 200) {
-+ throw new RuntimeException("test Failed");
-+ }
-+ } finally {
-+ ps.close();
-+ http.disconnect();
-+ closeReady = true;
-+ }
-+ }
-+
-+ private static class NameVerifier implements HostnameVerifier {
-+ public boolean verify(String hostname, SSLSession session) {
-+ return true;
-+ }
-+ }
-+
-+ /*
-+ * =============================================================
-+ * The remainder is just support stuff
-+ */
-+
-+ // use any free port by default
-+ private volatile int serverPort = 0;
-+
-+ private volatile Exception serverException = null;
-+ private volatile Exception clientException = null;
-+
-+ public static void main(String[] args) throws Exception {
-+ String keyFilename =
-+ System.getProperty("test.src", "./") + "/" + pathToStores +
-+ "/" + keyStoreFile;
-+ String trustFilename =
-+ System.getProperty("test.src", "./") + "/" + pathToStores +
-+ "/" + trustStoreFile;
-+
-+ System.setProperty("javax.net.ssl.keyStore", keyFilename);
-+ System.setProperty("javax.net.ssl.keyStorePassword", passwd);
-+ System.setProperty("javax.net.ssl.trustStore", trustFilename);
-+ System.setProperty("javax.net.ssl.trustStorePassword", passwd);
-+
-+ if (debug) {
-+ System.setProperty("javax.net.debug", "all");
-+ }
-+
-+ try {
-+ hostname = InetAddress.getLocalHost().getCanonicalHostName();
-+ } catch (UnknownHostException uhe) {
-+ System.out.println(
-+ "Ignore the test as the local hostname cannot be determined");
-+
-+ return;
-+ }
-+
-+ System.out.println(
-+ "The fully qualified domain name of the local host is " +
-+ hostname);
-+ // Ignore the test if the hostname does not sound like a domain name.
-+ if ((hostname == null) || hostname.isEmpty() ||
-+ hostname.startsWith("localhost") ||
-+ Character.isDigit(hostname.charAt(hostname.length() - 1))) {
-+
-+ System.out.println("Ignore the test as the local hostname " +
-+ "cannot be determined as fully qualified domain name");
-+
-+ return;
-+ }
-+
-+ /*
-+ * Start the tests.
-+ */
-+ new ImpactOnSNI();
-+ }
-+
-+ private Thread clientThread = null;
-+ private Thread serverThread = null;
-+
-+ /*
-+ * Primary constructor, used to drive remainder of the test.
-+ *
-+ * Fork off the other side, then do your work.
-+ */
-+ ImpactOnSNI() throws Exception {
-+ Exception startException = null;
-+ try {
-+ if (separateServerThread) {
-+ startServer(true);
-+ startClient(false);
-+ } else {
-+ startClient(true);
-+ startServer(false);
-+ }
-+ } catch (Exception e) {
-+ startException = e;
-+ }
-+
-+ /*
-+ * Wait for other side to close down.
-+ */
-+ if (separateServerThread) {
-+ if (serverThread != null) {
-+ serverThread.join();
-+ }
-+ } else {
-+ if (clientThread != null) {
-+ clientThread.join();
-+ }
-+ }
-+
-+ /*
-+ * When we get here, the test is pretty much over.
-+ * Which side threw the error?
-+ */
-+ Exception local;
-+ Exception remote;
-+
-+ if (separateServerThread) {
-+ remote = serverException;
-+ local = clientException;
-+ } else {
-+ remote = clientException;
-+ local = serverException;
-+ }
-+
-+ Exception exception = null;
-+
-+ /*
-+ * Check various exception conditions.
-+ */
-+ if ((local != null) && (remote != null)) {
-+ // If both failed, return the curthread's exception.
-+ local.initCause(remote);
-+ exception = local;
-+ } else if (local != null) {
-+ exception = local;
-+ } else if (remote != null) {
-+ exception = remote;
-+ } else if (startException != null) {
-+ exception = startException;
-+ }
-+
-+ /*
-+ * If there was an exception *AND* a startException,
-+ * output it.
-+ */
-+ if (exception != null) {
-+ if (exception != startException && startException != null) {
-+ exception.addSuppressed(startException);
-+ }
-+ throw exception;
-+ }
-+
-+ // Fall-through: no exception to throw!
-+ }
-+
-+ private void startServer(boolean newThread) throws Exception {
-+ if (newThread) {
-+ serverThread = new Thread() {
-+ @Override
-+ public void run() {
-+ try {
-+ doServerSide();
-+ } catch (Exception e) {
-+ /*
-+ * Our server thread just died.
-+ *
-+ * Release the client, if not active already...
-+ */
-+ System.err.println("Server died...");
-+ serverReady = true;
-+ serverException = e;
-+ }
-+ }
-+ };
-+ serverThread.start();
-+ } else {
-+ try {
-+ doServerSide();
-+ } catch (Exception e) {
-+ serverException = e;
-+ } finally {
-+ serverReady = true;
-+ }
-+ }
-+ }
-+
-+ private void startClient(boolean newThread) throws Exception {
-+ if (newThread) {
-+ clientThread = new Thread() {
-+ @Override
-+ public void run() {
-+ try {
-+ doClientSide();
-+ } catch (Exception e) {
-+ /*
-+ * Our client thread just died.
-+ */
-+ System.err.println("Client died...");
-+ clientException = e;
-+ }
-+ }
-+ };
-+ clientThread.start();
-+ } else {
-+ try {
-+ doClientSide();
-+ } catch (Exception e) {
-+ clientException = e;
-+ }
-+ }
-+ }
-+}
diff --git a/8155049-pr3352.patch b/8155049-pr3352.patch
deleted file mode 100644
index 68cf02f..0000000
--- a/8155049-pr3352.patch
+++ /dev/null
@@ -1,41 +0,0 @@
-# HG changeset patch
-# User rhalade
-# Date 1463420211 25200
-# Mon May 16 10:36:51 2016 -0700
-# Node ID c0e856f2dacdf5eb5cdea380da32ba210aee9579
-# Parent fb617df8fbac42e962219e45cbd29b15b5ecdc63
-8155049, PR3352: New tests from 8144566 fail with "No expected Server Name Indication"
-Reviewed-by: xuelei
-
-diff --git a/test/javax/net/ssl/ServerName/BestEffortOnLazyConnected.java b/test/javax/net/ssl/ServerName/BestEffortOnLazyConnected.java
---- openjdk/jdk/test/javax/net/ssl/ServerName/BestEffortOnLazyConnected.java
-+++ openjdk/jdk/test/javax/net/ssl/ServerName/BestEffortOnLazyConnected.java
-@@ -34,9 +34,6 @@
- */
-
- import java.io.*;
--import java.nio.*;
--import java.nio.channels.*;
--import java.util.*;
- import java.net.*;
- import javax.net.ssl.*;
-
-@@ -197,6 +194,7 @@
- hostname);
- // Ignore the test if the hostname does not sound like a domain name.
- if ((hostname == null) || hostname.isEmpty() ||
-+ !hostname.contains(".") || hostname.endsWith(".") ||
- hostname.startsWith("localhost") ||
- Character.isDigit(hostname.charAt(hostname.length() - 1))) {
-
-diff --git a/test/sun/net/www/protocol/https/HttpsURLConnection/ImpactOnSNI.java b/test/sun/net/www/protocol/https/HttpsURLConnection/ImpactOnSNI.java
---- openjdk/jdk/test/sun/net/www/protocol/https/HttpsURLConnection/ImpactOnSNI.java
-+++ openjdk/jdk/test/sun/net/www/protocol/https/HttpsURLConnection/ImpactOnSNI.java
-@@ -235,6 +235,7 @@
- hostname);
- // Ignore the test if the hostname does not sound like a domain name.
- if ((hostname == null) || hostname.isEmpty() ||
-+ !hostname.contains(".") || hostname.endsWith(".") ||
- hostname.startsWith("localhost") ||
- Character.isDigit(hostname.charAt(hostname.length() - 1))) {
-
diff --git a/8165231-rh1437545.patch b/8165231-rh1437545.patch
deleted file mode 100644
index e0d5be7..0000000
--- a/8165231-rh1437545.patch
+++ /dev/null
@@ -1,48 +0,0 @@
-# HG changeset patch
-# User horii
-# Date 1473905514 14400
-# Wed Sep 14 22:11:54 2016 -0400
-# Node ID 8d16f74380a78eb76cb33183a64440316393903e
-# Parent be698ac288484ab140715ee29ed9335e6ea8a33b
-8165231: java.nio.Bits.unaligned() doesn't return true on ppc
-Reviewed-by: simonis, coffeys
-
-diff --git a/src/share/classes/java/nio/Bits.java b/src/share/classes/java/nio/Bits.java
---- openjdk/jdk/src/share/classes/java/nio/Bits.java
-+++ openjdk/jdk/src/share/classes/java/nio/Bits.java
-@@ -1,5 +1,5 @@
- /*
-- * Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
-+ * Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
-@@ -614,7 +614,8 @@
- String arch = AccessController.doPrivileged(
- new sun.security.action.GetPropertyAction("os.arch"));
- unaligned = arch.equals("i386") || arch.equals("x86")
-- || arch.equals("amd64") || arch.equals("x86_64");
-+ || arch.equals("amd64") || arch.equals("x86_64")
-+ || arch.equals("ppc64") || arch.equals("ppc64le");
- unalignedKnown = true;
- return unaligned;
- }
-diff --git a/src/share/classes/sun/security/provider/ByteArrayAccess.java b/src/share/classes/sun/security/provider/ByteArrayAccess.java
---- openjdk/jdk/src/share/classes/sun/security/provider/ByteArrayAccess.java
-+++ openjdk/jdk/src/share/classes/sun/security/provider/ByteArrayAccess.java
-@@ -1,5 +1,5 @@
- /*
-- * Copyright (c) 2006, 2013, Oracle and/or its affiliates. All rights reserved.
-+ * Copyright (c) 2006, 2016, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
-@@ -94,7 +94,7 @@
- String arch = java.security.AccessController.doPrivileged
- (new sun.security.action.GetPropertyAction("os.arch", ""));
- return arch.equals("i386") || arch.equals("x86") || arch.equals("amd64")
-- || arch.equals("x86_64");
-+ || arch.equals("x86_64") || arch.equals("ppc64") || arch.equals("ppc64le");
- }
-
- /**
diff --git a/8174164-pr3334-rh1417266.patch b/8174164-pr3334-rh1417266.patch
deleted file mode 100644
index 494883f..0000000
--- a/8174164-pr3334-rh1417266.patch
+++ /dev/null
@@ -1,79 +0,0 @@
-# HG changeset patch
-# User roland
-# Date 1487208397 28800
-# Wed Feb 15 17:26:37 2017 -0800
-# Node ID a9cbaff50d3d7e3a1d2dbdc0121c470142b87270
-# Parent 15922b2f31db4857ec84efdf533c41b19e68030b
-8174164, PR3334, RH1417266: SafePointNode::_replaced_nodes breaks with irreducible loops
-Reviewed-by: kvn
-
-diff --git a/src/share/vm/opto/callnode.hpp b/src/share/vm/opto/callnode.hpp
---- openjdk/hotspot/src/share/vm/opto/callnode.hpp
-+++ openjdk/hotspot/src/share/vm/opto/callnode.hpp
-@@ -449,8 +449,8 @@
- void delete_replaced_nodes() {
- _replaced_nodes.reset();
- }
-- void apply_replaced_nodes() {
-- _replaced_nodes.apply(this);
-+ void apply_replaced_nodes(uint idx) {
-+ _replaced_nodes.apply(this, idx);
- }
- void merge_replaced_nodes_with(SafePointNode* sfpt) {
- _replaced_nodes.merge_with(sfpt->_replaced_nodes);
-diff --git a/src/share/vm/opto/parse1.cpp b/src/share/vm/opto/parse1.cpp
---- openjdk/hotspot/src/share/vm/opto/parse1.cpp
-+++ openjdk/hotspot/src/share/vm/opto/parse1.cpp
-@@ -1048,7 +1048,7 @@
- kit.make_dtrace_method_exit(method());
- }
- if (_replaced_nodes_for_exceptions) {
-- kit.map()->apply_replaced_nodes();
-+ kit.map()->apply_replaced_nodes(_new_idx);
- }
- // Done with exception-path processing.
- ex_map = kit.make_exception_state(ex_oop);
-@@ -1069,7 +1069,7 @@
- _exits.add_exception_state(ex_map);
- }
- }
-- _exits.map()->apply_replaced_nodes();
-+ _exits.map()->apply_replaced_nodes(_new_idx);
- }
-
- //-----------------------------create_entry_map-------------------------------
-diff --git a/src/share/vm/opto/replacednodes.cpp b/src/share/vm/opto/replacednodes.cpp
---- openjdk/hotspot/src/share/vm/opto/replacednodes.cpp
-+++ openjdk/hotspot/src/share/vm/opto/replacednodes.cpp
-@@ -91,13 +91,17 @@
- }
-
- // Perfom node replacement (used when returning to caller)
--void ReplacedNodes::apply(Node* n) {
-+void ReplacedNodes::apply(Node* n, uint idx) {
- if (is_empty()) {
- return;
- }
- for (int i = 0; i < _replaced_nodes->length(); i++) {
- ReplacedNode replaced = _replaced_nodes->at(i);
-- n->replace_edge(replaced.initial(), replaced.improved());
-+ // Only apply if improved node was created in a callee to avoid
-+ // issues with irreducible loops in the caller
-+ if (replaced.improved()->_idx >= idx) {
-+ n->replace_edge(replaced.initial(), replaced.improved());
-+ }
- }
- }
-
-diff --git a/src/share/vm/opto/replacednodes.hpp b/src/share/vm/opto/replacednodes.hpp
---- openjdk/hotspot/src/share/vm/opto/replacednodes.hpp
-+++ openjdk/hotspot/src/share/vm/opto/replacednodes.hpp
-@@ -71,7 +71,7 @@
- void record(Node* initial, Node* improved);
- void transfer_from(const ReplacedNodes& other, uint idx);
- void reset();
-- void apply(Node* n);
-+ void apply(Node* n, uint idx);
- void merge_with(const ReplacedNodes& other);
- bool is_empty() const;
- void dump(outputStream *st) const;
diff --git a/8174729-pr3336-rh1420518.patch b/8174729-pr3336-rh1420518.patch
deleted file mode 100644
index 3d67850..0000000
--- a/8174729-pr3336-rh1420518.patch
+++ /dev/null
@@ -1,122 +0,0 @@
-# HG changeset patch
-# User adinn
-# Date 1487931564 0
-# Fri Feb 24 10:19:24 2017 +0000
-# Node ID d41592af9af3790fe5eee30ce686d85cff09c942
-# Parent 1ac9b0f1bf17fc5935bfa8250550eabc2ffb6785
-8174729, PR3336, RH1420518: Race Condition in java.lang.reflect.WeakCache
-Summary: Race can occur between Proxy.getProxyClass and Proxy.isProxyClass
-Reviewed-by: mchung
-
-diff --git a/src/share/classes/java/lang/reflect/WeakCache.java b/src/share/classes/java/lang/reflect/WeakCache.java
---- openjdk/jdk/src/share/classes/java/lang/reflect/WeakCache.java
-+++ openjdk/jdk/src/share/classes/java/lang/reflect/WeakCache.java
-@@ -239,11 +239,11 @@
- // wrap value with CacheValue (WeakReference)
- CacheValue<V> cacheValue = new CacheValue<>(value);
-
-+ // put into reverseMap
-+ reverseMap.put(cacheValue, Boolean.TRUE);
-+
- // try replacing us with CacheValue (this should always succeed)
-- if (valuesMap.replace(subKey, this, cacheValue)) {
-- // put also in reverseMap
-- reverseMap.put(cacheValue, Boolean.TRUE);
-- } else {
-+ if (!valuesMap.replace(subKey, this, cacheValue)) {
- throw new AssertionError("Should not reach here");
- }
-
-diff --git a/test/java/lang/reflect/Proxy/ProxyRace.java b/test/java/lang/reflect/Proxy/ProxyRace.java
-new file mode 100644
---- /dev/null
-+++ openjdk/jdk/test/java/lang/reflect/Proxy/ProxyRace.java
-@@ -0,0 +1,88 @@
-+/*
-+ * Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved.
-+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-+ *
-+ * This code is free software; you can redistribute it and/or modify it
-+ * under the terms of the GNU General Public License version 2 only, as
-+ * published by the Free Software Foundation.
-+ *
-+ * This code is distributed in the hope that it will be useful, but WITHOUT
-+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-+ * version 2 for more details (a copy is included in the LICENSE file that
-+ * accompanied this code).
-+ *
-+ * You should have received a copy of the GNU General Public License version
-+ * 2 along with this work; if not, write to the Free Software Foundation,
-+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-+ *
-+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-+ * or visit www.oracle.com if you need additional information or have any
-+ * questions.
-+ */
-+
-+import java.lang.reflect.Proxy;
-+import java.util.concurrent.ExecutorService;
-+import java.util.concurrent.Executors;
-+import java.util.concurrent.Phaser;
-+import java.util.concurrent.TimeUnit;
-+import java.util.concurrent.atomic.AtomicInteger;
-+
-+/**
-+ * @test
-+ * @bug 8174729
-+ * @summary Proxy.getProxyClass() / Proxy.isProxyClass() race detector
-+ * @run main ProxyRace
-+ * @author plevart
-+ */
-+
-+public class ProxyRace {
-+
-+ static final int threads = 8;
-+
-+ static volatile ClassLoader classLoader;
-+ static volatile boolean terminate;
-+ static final AtomicInteger racesDetected = new AtomicInteger();
-+
-+ public static void main(String[] args) throws Exception {
-+
-+ Phaser phaser = new Phaser(threads) {
-+ @Override
-+ protected boolean onAdvance(int phase, int registeredParties) {
-+ // install new ClassLoader on each advance
-+ classLoader = new CL();
-+ return terminate;
-+ }
-+ };
-+
-+ ExecutorService exe = Executors.newFixedThreadPool(threads);
-+
-+ for (int i = 0; i < threads; i++) {
-+ exe.execute(() -> {
-+ while (phaser.arriveAndAwaitAdvance() >= 0) {
-+ Class<?> proxyClass = Proxy.getProxyClass(classLoader, Runnable.class);
-+ if (!Proxy.isProxyClass(proxyClass)) {
-+ racesDetected.incrementAndGet();
-+ }
-+ }
-+ });
-+ }
-+
-+ Thread.sleep(5000L);
-+
-+ terminate = true;
-+ exe.shutdown();
-+ exe.awaitTermination(5L, TimeUnit.SECONDS);
-+
-+ System.out.println(racesDetected.get() + " races detected");
-+ if (racesDetected.get() != 0) {
-+ throw new RuntimeException(racesDetected.get() + " races detected");
-+ }
-+ }
-+
-+ static class CL extends ClassLoader {
-+ public CL() {
-+ super(ClassLoader.getSystemClassLoader());
-+ }
-+ }
-+}
diff --git a/8175097-pr3334-rh1417266.patch b/8175097-pr3334-rh1417266.patch
deleted file mode 100644
index e80dd11..0000000
--- a/8175097-pr3334-rh1417266.patch
+++ /dev/null
@@ -1,100 +0,0 @@
-# HG changeset patch
-# User roland
-# Date 1487286884 28800
-# Thu Feb 16 15:14:44 2017 -0800
-# Node ID 1b4eb44fbfcd0fceb485d89d91eb893d99f5864b
-# Parent a9cbaff50d3d7e3a1d2dbdc0121c470142b87270
-8175097, PR3334, RH1417266: [TESTBUG] 8174164 fix missed the test
-Reviewed-by: kvn
-
-diff --git a/test/compiler/c2/TestReplacedNodesOSR.java b/test/compiler/c2/TestReplacedNodesOSR.java
-new file mode 100644
---- /dev/null
-+++ openjdk/hotspot/test/compiler/c2/TestReplacedNodesOSR.java
-@@ -0,0 +1,86 @@
-+/*
-+ * Copyright (c) 2017, Red Hat, Inc. All rights reserved.
-+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-+ *
-+ * This code is free software; you can redistribute it and/or modify it
-+ * under the terms of the GNU General Public License version 2 only, as
-+ * published by the Free Software Foundation.
-+ *
-+ * This code is distributed in the hope that it will be useful, but WITHOUT
-+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-+ * version 2 for more details (a copy is included in the LICENSE file that
-+ * accompanied this code).
-+ *
-+ * You should have received a copy of the GNU General Public License version
-+ * 2 along with this work; if not, write to the Free Software Foundation,
-+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-+ *
-+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-+ * or visit www.oracle.com if you need additional information or have any
-+ * questions.
-+ */
-+
-+/**
-+ * @test
-+ * @bug 8174164
-+ * @summary SafePointNode::_replaced_nodes breaks with irreducible loops
-+ * @run main/othervm -XX:-BackgroundCompilation TestReplacedNodesOSR
-+ *
-+ */
-+
-+public class TestReplacedNodesOSR {
-+
-+ static Object dummy;
-+
-+ static interface I {
-+ }
-+
-+ static class A implements I {
-+ }
-+
-+ static final class MyException extends Exception {
-+ }
-+
-+ static final A obj = new A();
-+ static I static_field() { return obj; }
-+
-+ // When OSR compiled, this method has an irreducible loop
-+ static void test(int v, MyException e) {
-+ int i = 0;
-+ for (;;) {
-+ if (i == 1000) {
-+ break;
-+ }
-+ try {
-+ if ((i%2) == 0) {
-+ int j = 0;
-+ for (;;) {
-+ j++;
-+ if (i+j != v) {
-+ if (j == 1000) {
-+ break;
-+ }
-+ } else {
-+ A a = (A)static_field();
-+ // replaced node recorded here
-+ throw e;
-+ }
-+ }
-+ }
-+ } catch(MyException ex) {
-+ }
-+ i++;
-+ // replaced node applied on return of the method
-+ // replaced node used here
-+ dummy = static_field();
-+ }
-+ }
-+
-+
-+ static public void main(String[] args) {
-+ for (int i = 0; i < 1000; i++) {
-+ test(1100, new MyException());
-+ }
-+ }
-+}
diff --git a/8175887-pr3415.patch b/8175887-pr3415.patch
new file mode 100644
index 0000000..6460f60
--- /dev/null
+++ b/8175887-pr3415.patch
@@ -0,0 +1,168 @@
+# HG changeset patch
+# User shade
+# Date 1488979372 -3600
+# Wed Mar 08 14:22:52 2017 +0100
+# Node ID 654b7fcb4932d48063f5f1fba0c8994db5e02976
+# Parent 1faf7c17089922f6f72b580253725f2ecb6ba2f8
+8175887, PR3415: C1 value numbering handling of Unsafe.get*Volatile is incorrect
+Reviewed-by: vlivanov
+
+diff --git a/src/share/vm/c1/c1_ValueMap.hpp b/src/share/vm/c1/c1_ValueMap.hpp
+--- openjdk/hotspot/src/share/vm/c1/c1_ValueMap.hpp
++++ openjdk/hotspot/src/share/vm/c1/c1_ValueMap.hpp
+@@ -158,6 +158,12 @@
+ void do_UnsafePutRaw (UnsafePutRaw* x) { kill_memory(); }
+ void do_UnsafePutObject(UnsafePutObject* x) { kill_memory(); }
+ void do_UnsafeGetAndSetObject(UnsafeGetAndSetObject* x) { kill_memory(); }
++ void do_UnsafeGetRaw (UnsafeGetRaw* x) { /* nothing to do */ }
++ void do_UnsafeGetObject(UnsafeGetObject* x) {
++ if (x->is_volatile()) { // the JMM requires this
++ kill_memory();
++ }
++ }
+ void do_Intrinsic (Intrinsic* x) { if (!x->preserves_state()) kill_memory(); }
+
+ void do_Phi (Phi* x) { /* nothing to do */ }
+@@ -198,8 +204,6 @@
+ void do_OsrEntry (OsrEntry* x) { /* nothing to do */ }
+ void do_ExceptionObject(ExceptionObject* x) { /* nothing to do */ }
+ void do_RoundFP (RoundFP* x) { /* nothing to do */ }
+- void do_UnsafeGetRaw (UnsafeGetRaw* x) { /* nothing to do */ }
+- void do_UnsafeGetObject(UnsafeGetObject* x) { /* nothing to do */ }
+ void do_UnsafePrefetchRead (UnsafePrefetchRead* x) { /* nothing to do */ }
+ void do_UnsafePrefetchWrite(UnsafePrefetchWrite* x) { /* nothing to do */ }
+ void do_ProfileCall (ProfileCall* x) { /* nothing to do */ }
+diff --git a/test/compiler/c1/UnsafeVolatileGuardTest.java b/test/compiler/c1/UnsafeVolatileGuardTest.java
+new file mode 100644
+--- /dev/null
++++ openjdk/hotspot/test/compiler/c1/UnsafeVolatileGuardTest.java
+@@ -0,0 +1,72 @@
++/*
++ * Copyright (c) 2017, Red Hat Inc. All rights reserved.
++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
++ *
++ * This code is free software; you can redistribute it and/or modify it
++ * under the terms of the GNU General Public License version 2 only, as
++ * published by the Free Software Foundation.
++ *
++ * This code is distributed in the hope that it will be useful, but WITHOUT
++ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
++ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
++ * version 2 for more details (a copy is included in the LICENSE file that
++ * accompanied this code).
++ *
++ * You should have received a copy of the GNU General Public License version
++ * 2 along with this work; if not, write to the Free Software Foundation,
++ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
++ *
++ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
++ * or visit www.oracle.com if you need additional information or have any
++ * questions.
++ */
++
++import java.lang.reflect.Field;
++
++/**
++ * @test
++ * @bug 8175887
++ * @summary C1 value numbering handling of Unsafe.get*Volatile is incorrect
++ * @run main/othervm -XX:+IgnoreUnrecognizedVMOptions -XX:TieredStopAtLevel=1 UnsafeVolatileGuardTest
++ */
++public class UnsafeVolatileGuardTest {
++ volatile static private int a;
++ static private int b;
++
++ static final sun.misc.Unsafe UNSAFE;
++
++ static final Object BASE;
++ static final long OFFSET;
++
++ static {
++ try {
++ Field uf = sun.misc.Unsafe.class.getDeclaredField("theUnsafe");
++ uf.setAccessible(true);
++ UNSAFE = (sun.misc.Unsafe)uf.get(null);
++
++ Field f = UnsafeVolatileGuardTest.class.getDeclaredField("a");
++ BASE = UNSAFE.staticFieldBase(f);
++ OFFSET = UNSAFE.staticFieldOffset(f);
++ } catch (Exception e) {
++ throw new RuntimeException(e);
++ }
++ }
++
++ static void test() {
++ int tt = b; // makes the JVM CSE the value of b
++
++ while (UNSAFE.getIntVolatile(BASE, OFFSET) == 0) {} // burn
++ if (b == 0) {
++ System.err.println("wrong value of b");
++ System.exit(1); // fail hard to report the error
++ }
++ }
++
++ public static void main(String [] args) throws Exception {
++ for (int i = 0; i < 10; i++) {
++ new Thread(UnsafeVolatileGuardTest::test).start();
++ }
++ b = 1;
++ a = 1;
++ }
++}
+diff --git a/test/compiler/c1/VolatileGuardTest.java b/test/compiler/c1/VolatileGuardTest.java
+new file mode 100644
+--- /dev/null
++++ openjdk/hotspot/test/compiler/c1/VolatileGuardTest.java
+@@ -0,0 +1,52 @@
++/*
++ * Copyright (c) 2017, Red Hat Inc. All rights reserved.
++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
++ *
++ * This code is free software; you can redistribute it and/or modify it
++ * under the terms of the GNU General Public License version 2 only, as
++ * published by the Free Software Foundation.
++ *
++ * This code is distributed in the hope that it will be useful, but WITHOUT
++ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
++ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
++ * version 2 for more details (a copy is included in the LICENSE file that
++ * accompanied this code).
++ *
++ * You should have received a copy of the GNU General Public License version
++ * 2 along with this work; if not, write to the Free Software Foundation,
++ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
++ *
++ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
++ * or visit www.oracle.com if you need additional information or have any
++ * questions.
++ */
++
++/**
++ * @test
++ * @bug 8175887
++ * @summary C1 doesn't respect the JMM with volatile field loads
++ *
++ * @run main/othervm -XX:+IgnoreUnrecognizedVMOptions -XX:TieredStopAtLevel=1 VolatileGuardTest
++ */
++public class VolatileGuardTest {
++ volatile static private int a;
++ static private int b;
++
++ static void test() {
++ int tt = b; // makes the JVM CSE the value of b
++
++ while (a == 0) {} // burn
++ if (b == 0) {
++ System.err.println("wrong value of b");
++ System.exit(1); // fail hard to report the error
++ }
++ }
++
++ public static void main(String [] args) throws Exception {
++ for (int i = 0; i < 10; i++) {
++ new Thread(VolatileGuardTest::test).start();
++ }
++ b = 1;
++ a = 1;
++ }
++}
diff --git a/8179084-pr3409-rh1455694.patch b/8179084-pr3409-rh1455694.patch
new file mode 100644
index 0000000..dbc2120
--- /dev/null
+++ b/8179084-pr3409-rh1455694.patch
@@ -0,0 +1,135 @@
+# HG changeset patch
+# User dholmes
+# Date 1493428477 14400
+# Fri Apr 28 21:14:37 2017 -0400
+# Node ID 2fee74c5547889d9698a2636e0a5170f9e66fb9c
+# Parent 13a04e8df5a3af73794146b930b32556c7cbc5b0
+8179084, PR3409, RH1455694: HotSpot VM fails to start when AggressiveHeap is set
+Reviewed-by: kbarrett, stefank
+
+diff --git a/src/share/vm/runtime/arguments.cpp b/src/share/vm/runtime/arguments.cpp
+--- openjdk/hotspot/src/share/vm/runtime/arguments.cpp
++++ openjdk/hotspot/src/share/vm/runtime/arguments.cpp
+@@ -3193,8 +3193,6 @@
+
+ // Enable parallel GC and adaptive generation sizing
+ FLAG_SET_CMDLINE(bool, UseParallelGC, true);
+- FLAG_SET_DEFAULT(ParallelGCThreads,
+- Abstract_VM_Version::parallel_worker_threads());
+
+ // Encourage steady state memory management
+ FLAG_SET_CMDLINE(uintx, ThresholdTolerance, 100);
+diff --git a/test/TEST.groups b/test/TEST.groups
+--- openjdk/hotspot/test/TEST.groups
++++ openjdk/hotspot/test/TEST.groups
+@@ -1,5 +1,5 @@
+ #
+-# Copyright (c) 2013, 2014, Oracle and/or its affiliates. All rights reserved.
++# Copyright (c) 2013, 2017, Oracle and/or its affiliates. All rights reserved.
+ # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ #
+ # This code is free software; you can redistribute it and/or modify it
+@@ -164,6 +164,7 @@
+ gc/TestGCLogRotationViaJcmd.java \
+ gc/g1/TestHumongousAllocInitialMark.java \
+ gc/g1/TestHumongousShrinkHeap.java \
++ gc/arguments/TestAggressiveHeap.java \
+ gc/arguments/TestG1HeapRegionSize.java \
+ gc/metaspace/TestMetaspaceMemoryPool.java \
+ gc/arguments/TestDynMinHeapFreeRatio.java \
+diff --git a/test/gc/arguments/TestAggressiveHeap.java b/test/gc/arguments/TestAggressiveHeap.java
+new file mode 100644
+--- /dev/null
++++ openjdk/hotspot/test/gc/arguments/TestAggressiveHeap.java
+@@ -0,0 +1,91 @@
++/*
++ * Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved.
++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
++ *
++ * This code is free software; you can redistribute it and/or modify it
++ * under the terms of the GNU General Public License version 2 only, as
++ * published by the Free Software Foundation.
++ *
++ * This code is distributed in the hope that it will be useful, but WITHOUT
++ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
++ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
++ * version 2 for more details (a copy is included in the LICENSE file that
++ * accompanied this code).
++ *
++ * You should have received a copy of the GNU General Public License version
++ * 2 along with this work; if not, write to the Free Software Foundation,
++ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
++ *
++ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
++ * or visit www.oracle.com if you need additional information or have any
++ * questions.
++ */
++
++/*
++ * @test TestAggressiveHeap
++ * @key gc
++ * @bug 8179084
++ * @summary Test argument processing for -XX:+AggressiveHeap.
++ * @library /testlibrary
++ * @run driver TestAggressiveHeap
++ */
++
++import java.lang.management.ManagementFactory;
++import javax.management.MBeanServer;
++import javax.management.ObjectName;
++
++import com.oracle.java.testlibrary.OutputAnalyzer;
++import com.oracle.java.testlibrary.ProcessTools;
++
++public class TestAggressiveHeap {
++
++ public static void main(String args[]) throws Exception {
++ if (canUseAggressiveHeapOption()) {
++ testFlag();
++ }
++ }
++
++ // Note: Not a normal boolean flag; -XX:-AggressiveHeap is invalid.
++ private static final String option = "-XX:+AggressiveHeap";
++
++ // Option requires at least 256M, else error during option processing.
++ private static final long minMemory = 256 * 1024 * 1024;
++
++ // bool UseParallelGC := true {product}
++ private static final String parallelGCPattern =
++ " *bool +UseParallelGC *:= *true +\\{product\\}";
++
++ private static void testFlag() throws Exception {
++ ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(
++ option, "-XX:+PrintFlagsFinal", "-version");
++
++ OutputAnalyzer output = new OutputAnalyzer(pb.start());
++
++ output.shouldHaveExitValue(0);
++
++ String value = output.firstMatch(parallelGCPattern);
++ if (value == null) {
++ throw new RuntimeException(
++ option + " didn't set UseParallelGC");
++ }
++ }
++
++ private static boolean haveRequiredMemory() throws Exception {
++ MBeanServer server = ManagementFactory.getPlatformMBeanServer();
++ ObjectName os = new ObjectName("java.lang", "type", "OperatingSystem");
++ Object attr = server.getAttribute(os, "TotalPhysicalMemorySize");
++ String value = attr.toString();
++ long memory = Long.parseLong(value);
++ return memory >= minMemory;
++ }
++
++ private static boolean canUseAggressiveHeapOption() throws Exception {
++ if (!haveRequiredMemory()) {
++ System.out.println(
++ "Skipping test of " + option + " : insufficient memory");
++ return false;
++ }
++ return true;
++ }
++}
++
diff --git a/8181419-pr3413-rh1463144.patch b/8181419-pr3413-rh1463144.patch
new file mode 100644
index 0000000..c2c7fc6
--- /dev/null
+++ b/8181419-pr3413-rh1463144.patch
@@ -0,0 +1,92 @@
+# HG changeset patch
+# User stuefe
+# Date 1497865921 -7200
+# Mon Jun 19 11:52:01 2017 +0200
+# Node ID ca0c7b2783e0102468218589a062e7ac4736aae2
+# Parent 148a7d6c463ad1726bad8a9e8d5df191314d704b
+8181419, PR3413, RH1463144: Race in jdwp invoker handling may lead to crashes or invalid results
+Reviewed-by: sspitsyn, sgehwolf, clanger
+
+diff --git a/src/share/back/invoker.c b/src/share/back/invoker.c
+--- openjdk/jdk/src/share/back/invoker.c
++++ openjdk/jdk/src/share/back/invoker.c
+@@ -212,30 +212,6 @@
+ }
+
+ /*
+- * Delete saved global references - if any - for:
+- * - a potentially thrown Exception
+- * - a returned refernce/array value
+- * See invoker_doInvoke() and invoke* methods where global references
+- * are being saved.
+- */
+-static void
+-deletePotentiallySavedGlobalRefs(JNIEnv *env, InvokeRequest *request)
+-{
+- /* Delete potentially saved return value */
+- if ((request->invokeType == INVOKE_CONSTRUCTOR) ||
+- (returnTypeTag(request->methodSignature) == JDWP_TAG(OBJECT)) ||
+- (returnTypeTag(request->methodSignature) == JDWP_TAG(ARRAY))) {
+- if (request->returnValue.l != NULL) {
+- tossGlobalRef(env, &(request->returnValue.l));
+- }
+- }
+- /* Delete potentially saved exception */
+- if (request->exception != NULL) {
+- tossGlobalRef(env, &(request->exception));
+- }
+-}
+-
+-/*
+ * Delete global argument references from the request which got put there before a
+ * invoke request was carried out. See fillInvokeRequest().
+ */
+@@ -744,6 +720,7 @@
+ jint id;
+ InvokeRequest *request;
+ jboolean detached;
++ jboolean mustReleaseReturnValue = JNI_FALSE;
+
+ JDI_ASSERT(thread);
+
+@@ -787,6 +764,13 @@
+ id = request->id;
+ exc = request->exception;
+ returnValue = request->returnValue;
++
++ /* Release return value and exception references, but delay the release
++ * until after the return packet was sent. */
++ mustReleaseReturnValue = request->invokeType == INVOKE_CONSTRUCTOR ||
++ returnTypeTag(request->methodSignature) == JDWP_TAG(OBJECT) ||
++ returnTypeTag(request->methodSignature) == JDWP_TAG(ARRAY);
++
+ }
+
+ /*
+@@ -801,6 +785,12 @@
+ */
+ deleteGlobalArgumentRefs(env, request);
+
++ /* From now on, do not access the request structure anymore
++ * for this request id, because once we give up the invokerLock it may
++ * be immediately reused by a new invoke request.
++ */
++ request = NULL;
++
+ /*
+ * Give up the lock before I/O operation
+ */
+@@ -821,7 +811,12 @@
+ */
+ eventHandler_lock(); // for proper lock order
+ debugMonitorEnter(invokerLock);
+- deletePotentiallySavedGlobalRefs(env, request);
++ if (mustReleaseReturnValue && returnValue.l != NULL) {
++ tossGlobalRef(env, &returnValue.l);
++ }
++ if (exc != NULL) {
++ tossGlobalRef(env, &exc);
++ }
+ debugMonitorExit(invokerLock);
+ eventHandler_unlock();
+ }
diff --git a/java-1.8.0-openjdk-remove-intree-libraries.sh b/java-1.8.0-openjdk-remove-intree-libraries.sh
index 1f022f6..d9578e9 100644
--- a/java-1.8.0-openjdk-remove-intree-libraries.sh
+++ b/java-1.8.0-openjdk-remove-intree-libraries.sh
@@ -1,10 +1,10 @@
#!/bin/sh
-ZIP_SRC=jdk8/jdk/src/share/native/java/util/zip/zlib-*
-JPEG_SRC=jdk8/jdk/src/share/native/sun/awt/image/jpeg
-GIF_SRC=jdk8/jdk/src/share/native/sun/awt/giflib
-PNG_SRC=jdk8/jdk/src/share/native/sun/awt/libpng
-LCMS_SRC=jdk8/jdk/src/share/native/sun/java2d/cmm/lcms
+ZIP_SRC=openjdk/jdk/src/share/native/java/util/zip/zlib-*
+JPEG_SRC=openjdk/jdk/src/share/native/sun/awt/image/jpeg
+GIF_SRC=openjdk/jdk/src/share/native/sun/awt/giflib
+PNG_SRC=openjdk/jdk/src/share/native/sun/awt/libpng
+LCMS_SRC=openjdk/jdk/src/share/native/sun/java2d/cmm/lcms
echo "Removing built-in libs (they will be linked)"
diff --git a/java-1.8.0-openjdk.spec b/java-1.8.0-openjdk.spec
index d523a94..be1edc4 100644
--- a/java-1.8.0-openjdk.spec
+++ b/java-1.8.0-openjdk.spec
@@ -172,6 +172,27 @@
%global with_systemtap 0
%endif
+%ifarch %{ix86} x86_64
+#no fx on f24
+%global with_openjfx_binding 0
+%global openjfx_path %{_jvmdir}/openjfx
+# links src directories
+%global jfx_jre_libs_dir %{openjfx_path}/rt/lib
+%global jfx_jre_native_dir %{jfx_jre_libs_dir}/%{archinstall}
+%global jfx_sdk_libs_dir %{openjfx_path}/lib
+%global jfx_sdk_bins_dir %{openjfx_path}/bin
+%global jfx_jre_exts_dir %{jfx_jre_libs_dir}/ext
+# links src files
+# maybe depend on jfx and generate the lists in build time? Yes, bad idea to inlcude cyclic depndenci, but this list is aweful
+%global jfx_jre_libs jfxswt.jar javafx.properties
+%global jfx_jre_native libprism_es2.so libprism_common.so libjavafx_font.so libdecora_sse.so libjavafx_font_freetype.so libprism_sw.so libjavafx_font_pango.so libglass.so libjavafx_iio.so
+%global jfx_sdk_libs javafx-mx.jar packager.jar ant-javafx.jar
+%global jfx_sdk_bins javafxpackager javapackager
+%global jfx_jre_exts jfxrt.jar
+%else
+%global with_openjfx_binding 0
+%endif
+
# Convert an absolute path to a relative path. Each symbolic link is
# specified relative to the directory in which it is installed so that
# it will resolve properly within chrooted installations.
@@ -184,7 +205,7 @@
# note, following three variables are sedded from update_sources if used correctly. Hardcode them rather there.
%global project aarch64-port
%global repo jdk8u
-%global revision aarch64-jdk8u131-b12
+%global revision aarch64-jdk8u141-b16
# eg # jdk8u60-b27 -> jdk8u60 or # aarch64-jdk8u60-b27 -> aarch64-jdk8u60 (dont forget spec escape % by %%)
%global whole_update %(VERSION=%{revision}; echo ${VERSION%%-*})
# eg jdk8u60 -> 60 or aarch64-jdk8u60 -> 60
@@ -794,7 +815,7 @@ Obsoletes: java-1.7.0-openjdk-accessibility%1
Name: java-%{javaver}-%{origin}
Version: %{javaver}.%{updatever}
-Release: 3.%{buildver}%{?dist}
+Release: 1.%{buildver}%{?dist}
# java-1.5.0-ibm from jpackage.org set Epoch to 1 for unknown reasons,
# and this change was brought into RHEL-4. java-1.5.0-ibm packages
# also included the epoch in their virtual provides. This created a
@@ -820,7 +841,7 @@ URL: http://openjdk.java.net/
Source0: %{project}-%{repo}-%{revision}.tar.xz
# Shenandoah HotSpot
-Source1: aarch64-port-jdk8u-shenandoah-aarch64-shenandoah-jdk8u131-b12-shenandoah-merge-2017-04-20.tar.xz
+Source1: aarch64-port-jdk8u-shenandoah-aarch64-shenandoah-jdk8u141-b16.tar.xz
# Custom README for -src subpackage
Source2: README.src
@@ -927,34 +948,24 @@ Patch400: 8154313.patch
Patch526: 6260348-pr3066.patch
# 8061305, PR3335, RH1423421: Javadoc crashes when method name ends with "Property"
Patch538: 8061305-pr3335-rh1423421.patch
-# 8175813, PR3394, RH1448880: PPC64: "mbind: Invalid argument" when -XX:+UseNUMA is used
-Patch550: 8175813-pr3394-rh1448880.patch
# 8181055, PR3394, RH1448880: PPC64: "mbind: Invalid argument" still seen after 8175813
Patch551: 8181055-pr3394-rh1448880.patch
-
-# Patches upstream and appearing in 8u131
-# 6515172, PR3346: Runtime.availableProcessors() ignores Linux taskset command
-Patch542: 6515172-pr3346.patch
+# 8181419, PR3413, RH1463144: Race in jdwp invoker handling may lead to crashes or invalid results
+Patch553: 8181419-pr3413-rh1463144.patch
# Patches upstream and appearing in 8u152
# 8153711, PR3313, RH1284948: [REDO] JDWP: Memory Leak: GlobalRefs never deleted when processing invokeMethod command
Patch535: 8153711-pr3313-rh1284948.patch
-# 8144566, PR3352: Custom HostnameVerifier disables SNI extension
-Patch544: 8144566-pr3352.patch
-# 8155049, PR3352: New tests from 8144566 fail with "No expected Server Name Indication"
-Patch545: 8155049-pr3352.patch
# 8162384, PR3122, RH1358661: Performance regression: bimorphic inlining may be bypassed by type speculation
Patch532: 8162384-pr3122-rh1358661.patch
-# 8165231, RH1437545: java.nio.Bits.unaligned() doesn't return true on ppc
-Patch546: 8165231-rh1437545.patch
# 8173941, PR3326: SA does not work if executable is DSO
Patch547: 8173941-pr3326.patch
-# 8174164, PR3334, RH1417266: SafePointNode::_replaced_nodes breaks with irreducible loops"
-Patch537: 8174164-pr3334-rh1417266.patch
-# 8174729, PR3336, RH1420518: Race Condition in java.lang.reflect.WeakCache
-Patch548: 8174729-pr3336-rh1420518.patch
-# 8175097, PR3334, RH1417266: [TESTBUG] 8174164 fix missed the test
-Patch549: 8175097-pr3334-rh1417266.patch
+# 8175813, PR3394, RH1448880: PPC64: "mbind: Invalid argument" when -XX:+UseNUMA is used
+Patch550: 8175813-pr3394-rh1448880.patch
+# 8179084, PR3409, RH1455694: HotSpot VM fails to start when AggressiveHeap is set
+Patch552: 8179084-pr3409-rh1455694.patch
+# 8175887, PR3415: C1 value numbering handling of Unsafe.get*Volatile is incorrect
+Patch554: 8175887-pr3415.patch
# Patches ineligible for 8u
# 8043805: Allow using a system-installed libjpeg
@@ -1212,6 +1223,43 @@ Summary: OpenJDK accessibility connector %{for_debug}
See normal java-%{version}-openjdk-accessibility description.
%endif
+
+%if %{with_openjfx_binding}
+%package openjfx
+Summary: OpenJDK x OpenJFX connector. This package adds symliks finishing Java FX integration to %{name}
+Requires: %{name}%{?_isa} = %{epoch}:%{version}-%{release}
+Requires: openjfx%{?_isa}
+Provides: javafx = %{epoch}:%{version}-%{release}
+%description openjfx
+Set of links from OpenJDK (jre) to OpenJFX
+
+%package openjfx-devel
+Summary: OpenJDK x OpenJFX connector for FX developers. This package adds symliks finishing Java FX integration to %{name}-devel
+Requires: %{name}-devel%{?_isa} = %{epoch}:%{version}-%{release}
+Requires: openjfx-devel%{?_isa}
+Provides: javafx-devel = %{epoch}:%{version}-%{release}
+%description openjfx-devel
+Set of links from OpenJDK (sdk) to OpenJFX
+
+%if %{include_debug_build}
+%package openjfx-debug
+Summary: OpenJDK x OpenJFX connector %{for_debug}. his package adds symliks finishing Java FX integration to %{name}-debug
+Requires: %{name}-debug%{?_isa} = %{epoch}:%{version}-%{release}
+Requires: openjfx%{?_isa}
+Provides: javafx-debug = %{epoch}:%{version}-%{release}
+%description openjfx-debug
+Set of links from OpenJDK-debug (jre) to normal OpenJFX. OpenJFX do not support debug buuilds of itself
+
+%package openjfx-devel-debug
+Summary: OpenJDK x OpenJFX connector for FX developers %{for_debug}. This package adds symliks finishing Java FX integration to %{name}-devel-debug
+Requires: %{name}-devel-debug%{?_isa} = %{epoch}:%{version}-%{release}
+Requires: openjfx-devel%{?_isa}
+Provides: javafx-devel-debug = %{epoch}:%{version}-%{release}
+%description openjfx-devel-debug
+Set of links from OpenJDK-debug (sdk) to normal OpenJFX. OpenJFX do not support debug buuilds of itself
+%endif
+%endif
+
%prep
if [ %{include_normal_build} -eq 0 -o %{include_normal_build} -eq 1 ] ; then
echo "include_normal_build is %{include_normal_build}"
@@ -1313,17 +1361,13 @@ sh %{SOURCE12}
%patch528
%patch532
%patch535
-%patch537
%patch538
-%patch542
-%patch544
-%patch545
-%patch546
%patch547
-%patch548
-%patch549
%patch550
%patch551
+%patch552
+%patch553
+%patch554
# RPM-only fixes
%patch525
@@ -1787,6 +1831,44 @@ find $RPM_BUILD_ROOT%{_jvmdir}/%{sdkdir $suffix}/demo \
echo "" >> accessibility.properties
popd
+# intentionally after all else, fx links with redirections on its own
+%if %{with_openjfx_binding}
+ FXSDK_FILES=%{name}-openjfx-devel.files"$suffix"
+ FXJRE_FILES=%{name}-openjfx.files"$suffix"
+ echo -n "" > $FXJRE_FILES
+ echo -n "" > $FXSDK_FILES
+ for file in %{jfx_jre_libs} ; do
+ srcfile=%{jfx_jre_libs_dir}/$file
+ targetfile=%{_jvmdir}/%{jredir $suffix}/lib/$file
+ ln -s $srcfile $RPM_BUILD_ROOT/$targetfile
+ echo $targetfile >> $FXJRE_FILES
+ done
+ for file in %{jfx_jre_native} ; do
+ srcfile=%{jfx_jre_native_dir}/$file
+ targetfile=%{_jvmdir}/%{jredir $suffix}/lib/%{archinstall}/$file
+ ln -s $srcfile $RPM_BUILD_ROOT/$targetfile
+ echo $targetfile >> $FXJRE_FILES
+ done
+ for file in %{jfx_jre_exts} ; do
+ srcfile=%{jfx_jre_exts_dir}/$file
+ targetfile=%{_jvmdir}/%{jredir $suffix}/lib/ext/$file
+ ln -s $srcfile $RPM_BUILD_ROOT/$targetfile
+ echo $targetfile >> $FXJRE_FILES
+ done
+ for file in %{jfx_sdk_libs} ; do
+ srcfile=%{jfx_sdk_libs_dir}/$file
+ targetfile=%{_jvmdir}/%{sdkdir $suffix}/lib/$file
+ ln -s $srcfile $RPM_BUILD_ROOT/$targetfile
+ echo $targetfile >> $FXSDK_FILES
+ done
+ for file in %{jfx_sdk_bins} ; do
+ srcfile=%{jfx_sdk_bins_dir}/$file
+ targetfile=%{_jvmdir}/%{sdkdir $suffix}/bin/$file
+ ln -s $srcfile $RPM_BUILD_ROOT/$targetfile
+ echo $targetfile >> $FXSDK_FILES
+ done
+%endif
+
bash %{SOURCE20} $RPM_BUILD_ROOT/%{_jvmdir}/%{jredir $suffix} %{javaver}
# https://bugzilla.redhat.com/show_bug.cgi?id=1183793
touch -t 201401010000 $RPM_BUILD_ROOT/%{_jvmdir}/%{jredir $suffix}/lib/security/java.security
@@ -1945,6 +2027,12 @@ require "copy_jdk_configs.lua"
%files accessibility
%{files_accessibility %{nil}}
+
+%if %{with_openjfx_binding}
+%files openjfx -f %{name}-openjfx.files
+
+%files openjfx-devel -f %{name}-openjfx-devel.files
+%endif
%endif
%if %{include_debug_build}
@@ -1971,14 +2059,37 @@ require "copy_jdk_configs.lua"
%files accessibility-debug
%{files_accessibility %{debug_suffix_unquoted}}
+
+%if %{with_openjfx_binding}
+%files openjfx-debug -f %{name}-openjfx.files-debug
+
+%files openjfx-devel-debug -f %{name}-openjfx-devel.files-debug
+%endif
%endif
%changelog
+* Fri Jul 21 2017 Jiri Vanek <jvanek(a)redhat.com> - 1:1.8.0.141-1.b16
+- updated to security u141.b16
+- sync patches with rhel7
+
+* Sat Jun 17 2017 Jiri Vanek <jvanek(a)redhat.com> - 1:1.8.0.131-7.b12
+- adapted to no longer noarch openjfx-devel
+
+* Wed Jun 07 2017 Jiri Vanek <jvanek(a)redhat.com> - 1:1.8.0.131-6.b12
+- added virtualprovides for javafx
+
+* Wed Jun 07 2017 Jiri Vanek <jvanek(a)redhat.com> - 1:1.8.0.131-5.b12
+- fixed target of to fxrt.jar link
+- fixedname of libglass
+
* Tue Jun 06 2017 Jiri Vanek <jvanek(a)redhat.com> - 1:1.8.0.131-3.b12
- source999 moved to source1
- added two pathces 8181055-pr3394-rh1448880.patch and 8175813/PR3394/RH1448880
- enabled (commented out) system NSS via patch1000, enableCommentedOutSystemNss.patch
+* Tue May 09 2017 Jiri Vanek <jvanek(a)redhat.com> - 1:1.8.0.131-1.b12
+- added javafx binding subpackages
+
* Thu Apr 20 2017 Jiri Vanek <jvanek(a)redhat.com> - 1:1.8.0.131-1.b12
- updated to aarch64-jdk8u131-b12 (from aarch64-port/jdk8u)
- updated to aarch64-shenandoah-jdk8u131-b12-shenandoah-merge-2017-04-20 (from aarch64-port/jdk8u-shenandoah) of hotspot
diff --git a/pr1983-jdk.patch b/pr1983-jdk.patch
index a0b4e1a..673b8a9 100644
--- a/pr1983-jdk.patch
+++ b/pr1983-jdk.patch
@@ -6,10 +6,11 @@
# Parent afd392dfaed501ac674a7cc3e37353ce300969c7
PR1983: Support using the system installation of NSS with the SunEC provider
Summary: Apply code changes from PR1699 & PR1742 & forward-port Makefile changes to the new build.
+Updated 2017/07/04 to accomodate 8175110
-diff -r afd392dfaed5 -r 48c15869ecd5 make/lib/SecurityLibraries.gmk
---- openjdk/jdk/make/lib/SecurityLibraries.gmk Tue Jan 26 22:26:26 2016 +0000
-+++ openjdk/jdk/make/lib/SecurityLibraries.gmk Wed Jan 27 02:54:06 2016 +0000
+diff -r 984a4af2ed4e make/lib/SecurityLibraries.gmk
+--- openjdk/jdk/make/lib/SecurityLibraries.gmk
++++ openjdk/jdk/make/lib/SecurityLibraries.gmk
@@ -218,8 +218,17 @@
ifeq ($(ENABLE_INTREE_EC), yes)
@@ -51,9 +52,9 @@ diff -r afd392dfaed5 -r 48c15869ecd5 make/lib/SecurityLibraries.gmk
VERSIONINFO_RESOURCE := $(JDK_TOPDIR)/src/windows/resource/version.rc, \
RC_FLAGS := $(RC_FLAGS) \
-D "JDK_FNAME=sunec.dll" \
-diff -r afd392dfaed5 -r 48c15869ecd5 src/share/native/sun/security/ec/ECC_JNI.cpp
---- openjdk/jdk/src/share/native/sun/security/ec/ECC_JNI.cpp Tue Jan 26 22:26:26 2016 +0000
-+++ openjdk/jdk/src/share/native/sun/security/ec/ECC_JNI.cpp Wed Jan 27 02:54:06 2016 +0000
+diff -r 984a4af2ed4e src/share/native/sun/security/ec/ECC_JNI.cpp
+--- openjdk/jdk/src/share/native/sun/security/ec/ECC_JNI.cpp
++++ openjdk/jdk/src/share/native/sun/security/ec/ECC_JNI.cpp
@@ -24,7 +24,7 @@
*/
@@ -76,8 +77,8 @@ diff -r afd392dfaed5 -r 48c15869ecd5 src/share/native/sun/security/ec/ECC_JNI.cp
*/
JNIEXPORT jbyteArray
JNICALL Java_sun_security_ec_ECDSASignature_signDigest
-- (JNIEnv *env, jclass clazz, jbyteArray digest, jbyteArray privateKey, jbyteArray encodedParams, jbyteArray seed)
-+ (JNIEnv *env, jclass UNUSED(clazz), jbyteArray digest, jbyteArray privateKey, jbyteArray encodedParams, jbyteArray seed)
+- (JNIEnv *env, jclass clazz, jbyteArray digest, jbyteArray privateKey, jbyteArray encodedParams, jbyteArray seed, jint timing)
++ (JNIEnv *env, jclass UNUSED(clazz), jbyteArray digest, jbyteArray privateKey, jbyteArray encodedParams, jbyteArray seed, jint timing)
{
jbyte* pDigestBuffer = NULL;
jint jDigestLength = env->GetArrayLength(digest);
@@ -99,12 +100,12 @@ diff -r afd392dfaed5 -r 48c15869ecd5 src/share/native/sun/security/ec/ECC_JNI.cp
{
jbyteArray jSecret = NULL;
ECParams *ecparams = NULL;
-diff -r afd392dfaed5 -r 48c15869ecd5 src/share/native/sun/security/ec/ecc_impl.h
---- /dev/null Thu Jan 01 00:00:00 1970 +0000
-+++ openjdk/jdk/src/share/native/sun/security/ec/ecc_impl.h Wed Jan 27 02:54:06 2016 +0000
+diff -r 984a4af2ed4e src/share/native/sun/security/ec/ecc_impl.h
+--- /dev/null
++++ openjdk/jdk/src/share/native/sun/security/ec/ecc_impl.h
@@ -0,0 +1,298 @@
+/*
-+ * Copyright (c) 2007, 2013, Oracle and/or its affiliates. All rights reserved.
++ * Copyright (c) 2007, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Use is subject to license terms.
+ *
+ * This library is free software; you can redistribute it and/or
@@ -139,7 +140,7 @@ diff -r afd392dfaed5 -r 48c15869ecd5 src/share/native/sun/security/ec/ecc_impl.h
+ * Dr Vipul Gupta <vipul.gupta(a)sun.com> and
+ * Douglas Stebila <douglas(a)stebila.ca>, Sun Microsystems Laboratories
+ *
-+ * Last Modified Date from the Original Code: November 2013
++ * Last Modified Date from the Original Code: May 2017
+ *********************************************************************** */
+
+#ifndef _ECC_IMPL_H
@@ -373,7 +374,7 @@ diff -r afd392dfaed5 -r 48c15869ecd5 src/share/native/sun/security/ec/ecc_impl.h
+#ifdef SYSTEM_NSS
+#define EC_DecodeParams(a,b,c) EC_DecodeParams(a,b)
+#define EC_NewKey(a,b,c,d,e) EC_NewKeyFromSeed(a,b,c,d)
-+#define ECDSA_SignDigest(a,b,c,d,e,f) ECDSA_SignDigestWithSeed(a,b,c,d,e)
++#define ECDSA_SignDigest(a,b,c,d,e,f,g) ECDSA_SignDigestWithSeed(a,b,c,d,e)
+#define ECDSA_VerifyDigest(a,b,c,d) ECDSA_VerifyDigest(a,b,c)
+#define ECDH_Derive(a,b,c,d,e,f) ECDH_Derive(a,b,c,d,e)
+#else
@@ -389,7 +390,7 @@ diff -r afd392dfaed5 -r 48c15869ecd5 src/share/native/sun/security/ec/ecc_impl.h
+ const unsigned char* random, int randomlen, int);
+/* This function has been modified to accept an array of random bytes */
+extern SECStatus ECDSA_SignDigest(ECPrivateKey *, SECItem *, const SECItem *,
-+ const unsigned char* random, int randomlen, int);
++ const unsigned char* random, int randomlen, int, int timing);
+extern SECStatus ECDSA_VerifyDigest(ECPublicKey *, const SECItem *,
+ const SECItem *, int);
+extern SECStatus ECDH_Derive(SECItem *, ECParams *, SECItem *, boolean_t,
@@ -401,12 +402,12 @@ diff -r afd392dfaed5 -r 48c15869ecd5 src/share/native/sun/security/ec/ecc_impl.h
+#endif
+
+#endif /* _ECC_IMPL_H */
-diff -r afd392dfaed5 -r 48c15869ecd5 src/share/native/sun/security/ec/impl/ecc_impl.h
---- openjdk/jdk/src/share/native/sun/security/ec/impl/ecc_impl.h Tue Jan 26 22:26:26 2016 +0000
-+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
+diff -r 984a4af2ed4e src/share/native/sun/security/ec/impl/ecc_impl.h
+--- openjdk/jdk/src/share/native/sun/security/ec/impl/ecc_impl.h
++++ /dev/null
@@ -1,271 +0,0 @@
-/*
-- * Copyright (c) 2007, 2013, Oracle and/or its affiliates. All rights reserved.
+- * Copyright (c) 2007, 2017, Oracle and/or its affiliates. All rights reserved.
- * Use is subject to license terms.
- *
- * This library is free software; you can redistribute it and/or
@@ -441,7 +442,7 @@ diff -r afd392dfaed5 -r 48c15869ecd5 src/share/native/sun/security/ec/impl/ecc_i
- * Dr Vipul Gupta <vipul.gupta(a)sun.com> and
- * Douglas Stebila <douglas(a)stebila.ca>, Sun Microsystems Laboratories
- *
-- * Last Modified Date from the Original Code: November 2013
+- * Last Modified Date from the Original Code: May 2017
- *********************************************************************** */
-
-#ifndef _ECC_IMPL_H
@@ -665,7 +666,7 @@ diff -r afd392dfaed5 -r 48c15869ecd5 src/share/native/sun/security/ec/impl/ecc_i
- const unsigned char* random, int randomlen, int);
-/* This function has been modified to accept an array of random bytes */
-extern SECStatus ECDSA_SignDigest(ECPrivateKey *, SECItem *, const SECItem *,
-- const unsigned char* random, int randomlen, int);
+- const unsigned char* random, int randomlen, int, int timing);
-extern SECStatus ECDSA_VerifyDigest(ECPublicKey *, const SECItem *,
- const SECItem *, int);
-extern SECStatus ECDH_Derive(SECItem *, ECParams *, SECItem *, boolean_t,
@@ -676,9 +677,9 @@ diff -r afd392dfaed5 -r 48c15869ecd5 src/share/native/sun/security/ec/impl/ecc_i
-#endif
-
-#endif /* _ECC_IMPL_H */
-diff -r afd392dfaed5 -r 48c15869ecd5 src/solaris/javavm/export/jni_md.h
---- openjdk/jdk/src/solaris/javavm/export/jni_md.h Tue Jan 26 22:26:26 2016 +0000
-+++ openjdk/jdk/src/solaris/javavm/export/jni_md.h Wed Jan 27 02:54:06 2016 +0000
+diff -r 984a4af2ed4e src/solaris/javavm/export/jni_md.h
+--- openjdk/jdk/src/solaris/javavm/export/jni_md.h
++++ openjdk/jdk/src/solaris/javavm/export/jni_md.h
@@ -36,6 +36,11 @@
#define JNIEXPORT
#define JNIIMPORT
diff --git a/pr2899.patch b/pr2899.patch
index 58fb3c8..ffdefb0 100644
--- a/pr2899.patch
+++ b/pr2899.patch
@@ -6,18 +6,19 @@
# Parent 8957aff589013e671f02d38023d5ff245ef27e87
PR2899: Don't use WithSeed versions of NSS functions as they don't fully process the seed
Contributed-by: Alex Kashchenko <akashche(a)redhat.com>
+Updated 2017/07/04 to accomodate 8175110 by Andrew Hughes <gnu.andrew(a)redhat.com>
-diff -r 8957aff58901 -r 9dc0eca5fa89 src/share/native/sun/security/ec/ecc_impl.h
---- openjdk/jdk/src/share/native/sun/security/ec/ecc_impl.h Wed Mar 30 04:48:56 2016 +0100
-+++ openjdk/jdk/src/share/native/sun/security/ec/ecc_impl.h Wed Mar 30 05:54:40 2016 +0100
+diff -r e5fdbb82bd49 src/share/native/sun/security/ec/ecc_impl.h
+--- openjdk/jdk/src/share/native/sun/security/ec/ecc_impl.h
++++ openjdk/jdk/src/share/native/sun/security/ec/ecc_impl.h
@@ -267,8 +267,8 @@
#ifdef SYSTEM_NSS
#define EC_DecodeParams(a,b,c) EC_DecodeParams(a,b)
-#define EC_NewKey(a,b,c,d,e) EC_NewKeyFromSeed(a,b,c,d)
--#define ECDSA_SignDigest(a,b,c,d,e,f) ECDSA_SignDigestWithSeed(a,b,c,d,e)
+-#define ECDSA_SignDigest(a,b,c,d,e,f,g) ECDSA_SignDigestWithSeed(a,b,c,d,e)
+#define EC_NewKey(a,b,c,d,e) EC_NewKey(a,b)
-+#define ECDSA_SignDigest(a,b,c,d,e,f) ECDSA_SignDigest(a,b,c)
++#define ECDSA_SignDigest(a,b,c,d,e,f,g) ECDSA_SignDigest(a,b,c)
#define ECDSA_VerifyDigest(a,b,c,d) ECDSA_VerifyDigest(a,b,c)
#define ECDH_Derive(a,b,c,d,e,f) ECDH_Derive(a,b,c,d,e)
#else
diff --git a/pr2934.patch b/pr2934.patch
index 21e769d..83385da 100644
--- a/pr2934.patch
+++ b/pr2934.patch
@@ -6,10 +6,11 @@
# Parent 3fa42705acab6d69b6141f47ebba4f85739a338c
PR2934: SunEC provider throwing KeyException with current NSS
Summary: Initialise the random number generator and feed the seed to it.
+Updated 2017/07/04 to accomodate 8175110
-diff -r 3fa42705acab -r dab76de2f91c src/share/native/sun/security/ec/ECC_JNI.cpp
---- openjdk/jdk/src/share/native/sun/security/ec/ECC_JNI.cpp Wed Apr 20 03:39:11 2016 +0100
-+++ openjdk/jdk/src/share/native/sun/security/ec/ECC_JNI.cpp Fri Apr 22 19:17:13 2016 +0100
+diff -r 8aed1e903a4c src/share/native/sun/security/ec/ECC_JNI.cpp
+--- openjdk/jdk/src/share/native/sun/security/ec/ECC_JNI.cpp
++++ openjdk/jdk/src/share/native/sun/security/ec/ECC_JNI.cpp
@@ -134,8 +134,17 @@
env->GetByteArrayRegion(seed, 0, jSeedLength, pSeedBuffer);
@@ -42,7 +43,7 @@ diff -r 3fa42705acab -r dab76de2f91c src/share/native/sun/security/ec/ECC_JNI.cp
+ != SECSuccess) {
+#else
if (ECDSA_SignDigest(&privKey, &signature_item, &digest_item,
- (unsigned char *) pSeedBuffer, jSeedLength, 0) != SECSuccess) {
+ (unsigned char *) pSeedBuffer, jSeedLength, 0, timing) != SECSuccess) {
+#endif
ThrowException(env, KEY_EXCEPTION);
goto cleanup;
@@ -65,9 +66,9 @@ diff -r 3fa42705acab -r dab76de2f91c src/share/native/sun/security/ec/ECC_JNI.cp
if (SECOID_Shutdown() != SECSuccess) {
ThrowException(env, INTERNAL_ERROR);
}
-diff -r 3fa42705acab -r dab76de2f91c src/share/native/sun/security/ec/ecc_impl.h
---- openjdk/jdk/src/share/native/sun/security/ec/ecc_impl.h Wed Apr 20 03:39:11 2016 +0100
-+++ openjdk/jdk/src/share/native/sun/security/ec/ecc_impl.h Fri Apr 22 19:17:13 2016 +0100
+diff -r 8aed1e903a4c src/share/native/sun/security/ec/ecc_impl.h
+--- openjdk/jdk/src/share/native/sun/security/ec/ecc_impl.h
++++ openjdk/jdk/src/share/native/sun/security/ec/ecc_impl.h
@@ -254,8 +254,10 @@
This function is no longer required because the random bytes are now
supplied by the caller. Force a failure.
@@ -84,7 +85,7 @@ diff -r 3fa42705acab -r dab76de2f91c src/share/native/sun/security/ec/ecc_impl.h
#ifdef SYSTEM_NSS
#define EC_DecodeParams(a,b,c) EC_DecodeParams(a,b)
-#define EC_NewKey(a,b,c,d,e) EC_NewKey(a,b)
--#define ECDSA_SignDigest(a,b,c,d,e,f) ECDSA_SignDigest(a,b,c)
+-#define ECDSA_SignDigest(a,b,c,d,e,f,g) ECDSA_SignDigest(a,b,c)
#define ECDSA_VerifyDigest(a,b,c,d) ECDSA_VerifyDigest(a,b,c)
#define ECDH_Derive(a,b,c,d,e,f) ECDH_Derive(a,b,c,d,e)
#else
diff --git a/sources b/sources
index c232719..b8cfa8e 100644
--- a/sources
+++ b/sources
@@ -1,3 +1,3 @@
SHA512 (systemtap-tapset-3.4.0pre01.tar.xz) = 4446fa20f88bbce53b583484bf06cb2b476c9372beb898dc2b7739eaa5c98b9979fbd72e12474fb344833d831a19366b82216ee03b452411745e6cd3527faa4e
-SHA512 (aarch64-port-jdk8u-aarch64-jdk8u131-b12.tar.xz) = b7285cbadc787594664944ece1fab74aafd4f3437d75e494b900cdd5ce1d102c0cfa9d734b40c7f122ba8539f098e6dde19894ab15605f4a475138bf69143edf
-SHA512 (aarch64-port-jdk8u-shenandoah-aarch64-shenandoah-jdk8u131-b12-shenandoah-merge-2017-04-20.tar.xz) = 9450dca9445b5ed90de90905a1210388fc825caada0d4929ac9f2c81b3af066dfcbcb80a667cb4c1c644d3ac65678d6bc162f1f11c1cd44f9dbf682ca3ff95cd
+SHA512 (aarch64-port-jdk8u-aarch64-jdk8u141-b16.tar.xz) = 154cc4bebb9a0809f548f630b5d4fa45befe7e5cf784236540205f254913495157f99f63a5b2223487bbff4c430e60cc53b4aacd9e843309f657929b500b061d
+SHA512 (aarch64-port-jdk8u-shenandoah-aarch64-shenandoah-jdk8u141-b16.tar.xz) = b6bf3383fcd8fb44308eff3ba93a4a635851a4c30e91957c5771990523b0c7c1f7a2acc7ec0472e196c26633a5df7d7b592b933f55ec9cdda63b37a14395ef10
diff --git a/update_package.sh b/update_package.sh
index 2c51560..5168356 100755
--- a/update_package.sh
+++ b/update_package.sh
@@ -31,7 +31,7 @@ if [ "x$REPO_NAME" = "x" ] ; then
REPO_NAME="jdk8u"
fi
if [ "x$VERSION" = "x" ] ; then
- VERSION="aarch64-jdk8u131-b12"
+ VERSION="aarch64-jdk8u141-b16"
fi
if [ "x$COMPRESSION" = "x" ] ; then
@@ -109,7 +109,7 @@ if [ "x$VERSION" = "xtip" ] ; then
VERSION="tip"
else
#hardcoding version for anything else except tip
- VERSION="aarch64-shenandoah-jdk8u131-b12-shenandoah-merge-2017-04-20"
+ VERSION="aarch64-shenandoah-jdk8u141-b16"
fi
MAIN_REPO_NAME=$REPO_NAME
REPO_NAME=jdk8u-shenandoah
6 years, 8 months
Architecture specific change in rpms/java-1.8.0-openjdk.git
by githook-noreply@fedoraproject.org
The package rpms/java-1.8.0-openjdk.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/java-1.8.0-openjdk.git/commit/?id....
Change:
+%ifarch %{ix86} x86_64
Thanks.
Full change:
============
commit cb416ba993f0c7c5c946fdea248c2f3a3cfa3143
Merge: 8364a52 b589790
Author: Jiri Vanek <jvanek(a)redhat.com>
Date: Fri Jul 21 14:33:27 2017 +0200
Merge branch 'f25' of ssh://pkgs.fedoraproject.org/rpms/java-1.8.0-openjdk into f25
commit 8364a522820e4c40386f1fa06e287cf651372c77
Author: Jiri Vanek <jvanek(a)redhat.com>
Date: Fri Jul 21 14:28:16 2017 +0200
updated to security u141.b16
- sync patches with rhel7
diff --git a/.gitignore b/.gitignore
index 03ab3f7..eb623a8 100644
--- a/.gitignore
+++ b/.gitignore
@@ -74,3 +74,5 @@
/aarch64-port-jdk8u-aarch64-jdk8u131-b12.tar.xz
/aarch64-port-jdk8u-shenandoah-aarch64-shenandoah-jdk8u131-b12-shenandoah-merge-2017-04-20.tar.xz
/systemtap-tapset-3.4.0pre01.tar.xz
+/aarch64-port-jdk8u-aarch64-jdk8u141-b16.tar.xz
+/aarch64-port-jdk8u-shenandoah-aarch64-shenandoah-jdk8u141-b16.tar.xz
diff --git a/6515172-pr3346.patch b/6515172-pr3346.patch
deleted file mode 100644
index 4b8e8a2..0000000
--- a/6515172-pr3346.patch
+++ /dev/null
@@ -1,213 +0,0 @@
-# HG changeset patch
-# User shshahma
-# Date 1474535080 25200
-# Thu Sep 22 02:04:40 2016 -0700
-# Node ID baf64c88538f477d7f5a0cf90b670108ac312375
-# Parent 62212568179b76b5ebe7b0129ddeed7b268b0bc0
-6515172, PR3346: Runtime.availableProcessors() ignores Linux taskset command
-Summary: extract processor count from sched_getaffinity mask
-Reviewed-by: dholmes, gthornbr
-
-diff --git a/src/os/linux/vm/globals_linux.hpp b/src/os/linux/vm/globals_linux.hpp
---- openjdk/hotspot/src/os/linux/vm/globals_linux.hpp
-+++ openjdk/hotspot/src/os/linux/vm/globals_linux.hpp
-@@ -1,5 +1,5 @@
- /*
-- * Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
-+ * Copyright (c) 2005, 2016, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
-@@ -47,7 +47,10 @@
- "Load DLLs with executable-stack attribute in the VM Thread") \
- \
- product(bool, UseSHM, false, \
-- "Use SYSV shared memory for large pages")
-+ "Use SYSV shared memory for large pages") \
-+ \
-+ diagnostic(bool, PrintActiveCpus, false, \
-+ "Print the number of CPUs detected in os::active_processor_count")
-
- //
- // Defines Linux-specific default values. The flags are available on all
-diff --git a/src/os/linux/vm/os_linux.cpp b/src/os/linux/vm/os_linux.cpp
---- openjdk/hotspot/src/os/linux/vm/os_linux.cpp
-+++ openjdk/hotspot/src/os/linux/vm/os_linux.cpp
-@@ -1,5 +1,5 @@
- /*
-- * Copyright (c) 1999, 2015, Oracle and/or its affiliates. All rights reserved.
-+ * Copyright (c) 1999, 2016, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
-@@ -104,6 +104,14 @@
-
- PRAGMA_FORMAT_MUTE_WARNINGS_FOR_GCC
-
-+#ifndef _GNU_SOURCE
-+ #define _GNU_SOURCE
-+ #include <sched.h>
-+ #undef _GNU_SOURCE
-+#else
-+ #include <sched.h>
-+#endif
-+
- // if RUSAGE_THREAD for getrusage() has not been defined, do it here. The code calling
- // getrusage() is prepared to handle the associated failure.
- #ifndef RUSAGE_THREAD
-@@ -5027,12 +5035,42 @@
- }
- };
-
-+static int os_cpu_count(const cpu_set_t* cpus) {
-+ int count = 0;
-+ // only look up to the number of configured processors
-+ for (int i = 0; i < os::processor_count(); i++) {
-+ if (CPU_ISSET(i, cpus)) {
-+ count++;
-+ }
-+ }
-+ return count;
-+}
-+
-+// Get the current number of available processors for this process.
-+// This value can change at any time during a process's lifetime.
-+// sched_getaffinity gives an accurate answer as it accounts for cpusets.
-+// If anything goes wrong we fallback to returning the number of online
-+// processors - which can be greater than the number available to the process.
- int os::active_processor_count() {
-- // Linux doesn't yet have a (official) notion of processor sets,
-- // so just return the number of online processors.
-- int online_cpus = ::sysconf(_SC_NPROCESSORS_ONLN);
-- assert(online_cpus > 0 && online_cpus <= processor_count(), "sanity check");
-- return online_cpus;
-+ cpu_set_t cpus; // can represent at most 1024 (CPU_SETSIZE) processors
-+ int cpus_size = sizeof(cpu_set_t);
-+ int cpu_count = 0;
-+
-+ // pid 0 means the current thread - which we have to assume represents the process
-+ if (sched_getaffinity(0, cpus_size, &cpus) == 0) {
-+ cpu_count = os_cpu_count(&cpus);
-+ if (PrintActiveCpus) {
-+ tty->print_cr("active_processor_count: sched_getaffinity processor count: %d", cpu_count);
-+ }
-+ }
-+ else {
-+ cpu_count = ::sysconf(_SC_NPROCESSORS_ONLN);
-+ warning("sched_getaffinity failed (%s)- using online processor count (%d) "
-+ "which may exceed available processors", strerror(errno), cpu_count);
-+ }
-+
-+ assert(cpu_count > 0 && cpu_count <= processor_count(), "sanity check");
-+ return cpu_count;
- }
-
- void os::set_native_thread_name(const char *name) {
-diff --git a/test/runtime/os/AvailableProcessors.java b/test/runtime/os/AvailableProcessors.java
-new file mode 100644
---- /dev/null
-+++ openjdk/hotspot/test/runtime/os/AvailableProcessors.java
-@@ -0,0 +1,103 @@
-+/*
-+ * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
-+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-+ *
-+ * This code is free software; you can redistribute it and/or modify it
-+ * under the terms of the GNU General Public License version 2 only, as
-+ * published by the Free Software Foundation.
-+ *
-+ * This code is distributed in the hope that it will be useful, but WITHOUT
-+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-+ * version 2 for more details (a copy is included in the LICENSE file that
-+ * accompanied this code).
-+ *
-+ * You should have received a copy of the GNU General Public License version
-+ * 2 along with this work; if not, write to the Free Software Foundation,
-+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-+ *
-+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-+ * or visit www.oracle.com if you need additional information or have any
-+ * questions.
-+ */
-+import java.io.File;
-+import com.oracle.java.testlibrary.ProcessTools;
-+import com.oracle.java.testlibrary.OutputAnalyzer;
-+import java.util.ArrayList;
-+
-+/*
-+ * @test
-+ * @bug 6515172
-+ * @summary Check that availableProcessors reports the correct value when running in a cpuset on linux
-+ * @requires os.family == "linux"
-+ * @library /testlibrary
-+ * @build com.oracle.java.testlibrary.*
-+ * @run driver AvailableProcessors
-+ */
-+public class AvailableProcessors {
-+
-+ static final String SUCCESS_STRING = "Found expected processors: ";
-+
-+ public static void main(String[] args) throws Throwable {
-+ if (args.length > 0)
-+ checkProcessors(Integer.parseInt(args[0]));
-+ else {
-+ // run ourselves under different cpu configurations
-+ // using the taskset command
-+ String taskset;
-+ final String taskset1 = "/bin/taskset";
-+ final String taskset2 = "/usr/bin/taskset";
-+ if (new File(taskset1).exists())
-+ taskset = taskset1;
-+ else if (new File(taskset2).exists())
-+ taskset = taskset2;
-+ else {
-+ System.out.println("Skipping test: could not find taskset command");
-+ return;
-+ }
-+
-+ int available = Runtime.getRuntime().availableProcessors();
-+
-+ if (available == 1) {
-+ System.out.println("Skipping test: only one processor available");
-+ return;
-+ }
-+
-+ // Get the java command we want to execute
-+ // Enable logging for easier failure diagnosis
-+ ProcessBuilder master =
-+ ProcessTools.createJavaProcessBuilder(false,
-+ "-XX:+UnlockDiagnosticVMOptions",
-+ "-XX:+PrintActiveCpus",
-+ "AvailableProcessors");
-+
-+ int[] expected = new int[] { 1, available/2, available-1, available };
-+
-+ for (int i : expected) {
-+ System.out.println("Testing for " + i + " processors ...");
-+ int max = i - 1;
-+ ArrayList<String> cmdline = new ArrayList<>(master.command());
-+ // prepend taskset command
-+ cmdline.add(0, "0-" + max);
-+ cmdline.add(0, "-c");
-+ cmdline.add(0, taskset);
-+ // append expected processor count
-+ cmdline.add(String.valueOf(i));
-+ ProcessBuilder pb = new ProcessBuilder(cmdline);
-+ System.out.println("Final command line: " +
-+ ProcessTools.getCommandLine(pb));
-+ OutputAnalyzer output = ProcessTools.executeProcess(pb);
-+ output.shouldContain(SUCCESS_STRING);
-+ }
-+ }
-+ }
-+
-+ static void checkProcessors(int expected) {
-+ int available = Runtime.getRuntime().availableProcessors();
-+ if (available != expected)
-+ throw new Error("Expected " + expected + " processors, but found "
-+ + available);
-+ else
-+ System.out.println(SUCCESS_STRING + available);
-+ }
-+}
diff --git a/8144566-pr3352.patch b/8144566-pr3352.patch
deleted file mode 100644
index 9a2a294..0000000
--- a/8144566-pr3352.patch
+++ /dev/null
@@ -1,911 +0,0 @@
-# HG changeset patch
-# User rpatil
-# Date 1474623897 -19800
-# Fri Sep 23 15:14:57 2016 +0530
-# Node ID fb617df8fbac42e962219e45cbd29b15b5ecdc63
-# Parent d41592af9af3790fe5eee30ce686d85cff09c942
-8144566, PR3352: Custom HostnameVerifier disables SNI extension
-Reviewed-by: coffeys
-
-diff --git a/src/share/classes/sun/security/ssl/SSLSocketImpl.java b/src/share/classes/sun/security/ssl/SSLSocketImpl.java
---- openjdk/jdk/src/share/classes/sun/security/ssl/SSLSocketImpl.java
-+++ openjdk/jdk/src/share/classes/sun/security/ssl/SSLSocketImpl.java
-@@ -1,5 +1,5 @@
- /*
-- * Copyright (c) 1996, 2015, Oracle and/or its affiliates. All rights reserved.
-+ * Copyright (c) 1996, 2016, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
-@@ -220,6 +220,11 @@
- Collections.<SNIServerName>emptyList();
- Collection<SNIMatcher> sniMatchers =
- Collections.<SNIMatcher>emptyList();
-+ // Is the serverNames set to empty with SSLParameters.setServerNames()?
-+ private boolean noSniExtension = false;
-+
-+ // Is the sniMatchers set to empty with SSLParameters.setSNIMatchers()?
-+ private boolean noSniMatcher = false;
-
- /*
- * READ ME * READ ME * READ ME * READ ME * READ ME * READ ME *
-@@ -666,6 +671,11 @@
- }
-
- super.connect(endpoint, timeout);
-+
-+ if (host == null || host.length() == 0) {
-+ useImplicitHost(false);
-+ }
-+
- doneConnect();
- }
-
-@@ -2158,41 +2168,61 @@
- output.r.setVersion(protocolVersion);
- }
-
-+ //
-+ // ONLY used by ClientHandshaker for the server hostname during handshaking
-+ //
- synchronized String getHost() {
- // Note that the host may be null or empty for localhost.
- if (host == null || host.length() == 0) {
-- if (!trustNameService) {
-- // If the local name service is not trustworthy, reverse host
-- // name resolution should not be performed for endpoint
-- // identification. Use the application original specified
-- // hostname or IP address instead.
-- host = getOriginalHostname(getInetAddress());
-- } else {
-- host = getInetAddress().getHostName();
-- }
-+ useImplicitHost(true);
- }
-
- return host;
- }
-
- /*
-- * Get the original application specified hostname.
-+ * Try to set and use the implicit specified hostname
- */
-- private static String getOriginalHostname(InetAddress inetAddress) {
-- /*
-- * Get the original hostname via sun.misc.SharedSecrets.
-- */
-+ private synchronized void useImplicitHost(boolean noSniUpdate) {
-+
-+ // Note: If the local name service is not trustworthy, reverse
-+ // host name resolution should not be performed for endpoint
-+ // identification. Use the application original specified
-+ // hostname or IP address instead.
-+
-+ // Get the original hostname via jdk.internal.misc.SharedSecrets
-+ InetAddress inetAddress = getInetAddress();
-+ if (inetAddress == null) { // not connected
-+ return;
-+ }
-+
- JavaNetAccess jna = SharedSecrets.getJavaNetAccess();
- String originalHostname = jna.getOriginalHostName(inetAddress);
-+ if ((originalHostname != null) &&
-+ (originalHostname.length() != 0)) {
-
-- /*
-- * If no application specified hostname, use the IP address.
-- */
-- if (originalHostname == null || originalHostname.length() == 0) {
-- originalHostname = inetAddress.getHostAddress();
-+ host = originalHostname;
-+ if (!noSniUpdate && serverNames.isEmpty() && !noSniExtension) {
-+ serverNames =
-+ Utilities.addToSNIServerNameList(serverNames, host);
-+
-+ if (!roleIsServer &&
-+ (handshaker != null) && !handshaker.started()) {
-+ handshaker.setSNIServerNames(serverNames);
-+ }
-+ }
-+
-+ return;
- }
-
-- return originalHostname;
-+ // No explicitly specified hostname, no server name indication.
-+ if (!trustNameService) {
-+ // The local name service is not trustworthy, use IP address.
-+ host = inetAddress.getHostAddress();
-+ } else {
-+ // Use the underlying reverse host name resolution service.
-+ host = getInetAddress().getHostName();
-+ }
- }
-
-
-@@ -2205,6 +2235,10 @@
- this.host = host;
- this.serverNames =
- Utilities.addToSNIServerNameList(this.serverNames, this.host);
-+
-+ if (!roleIsServer && (handshaker != null) && !handshaker.started()) {
-+ handshaker.setSNIServerNames(serverNames);
-+ }
- }
-
- /**
-@@ -2571,8 +2605,21 @@
- // the super implementation does not handle the following parameters
- params.setEndpointIdentificationAlgorithm(identificationProtocol);
- params.setAlgorithmConstraints(algorithmConstraints);
-- params.setSNIMatchers(sniMatchers);
-- params.setServerNames(serverNames);
-+
-+ if (sniMatchers.isEmpty() && !noSniMatcher) {
-+ // 'null' indicates none has been set
-+ params.setSNIMatchers(null);
-+ } else {
-+ params.setSNIMatchers(sniMatchers);
-+ }
-+
-+ if (serverNames.isEmpty() && !noSniExtension) {
-+ // 'null' indicates none has been set
-+ params.setServerNames(null);
-+ } else {
-+ params.setServerNames(serverNames);
-+ }
-+
- params.setUseCipherSuitesOrder(preferLocalCipherSuites);
-
- return params;
-@@ -2592,11 +2639,13 @@
-
- List<SNIServerName> sniNames = params.getServerNames();
- if (sniNames != null) {
-+ noSniExtension = sniNames.isEmpty();
- serverNames = sniNames;
- }
-
- Collection<SNIMatcher> matchers = params.getSNIMatchers();
- if (matchers != null) {
-+ noSniMatcher = matchers.isEmpty();
- sniMatchers = matchers;
- }
-
-diff --git a/test/javax/net/ssl/ServerName/BestEffortOnLazyConnected.java b/test/javax/net/ssl/ServerName/BestEffortOnLazyConnected.java
-new file mode 100644
---- /dev/null
-+++ openjdk/jdk/test/javax/net/ssl/ServerName/BestEffortOnLazyConnected.java
-@@ -0,0 +1,337 @@
-+/*
-+ * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
-+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-+ *
-+ * This code is free software; you can redistribute it and/or modify it
-+ * under the terms of the GNU General Public License version 2 only, as
-+ * published by the Free Software Foundation.
-+ *
-+ * This code is distributed in the hope that it will be useful, but WITHOUT
-+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-+ * version 2 for more details (a copy is included in the LICENSE file that
-+ * accompanied this code).
-+ *
-+ * You should have received a copy of the GNU General Public License version
-+ * 2 along with this work; if not, write to the Free Software Foundation,
-+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-+ *
-+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-+ * or visit www.oracle.com if you need additional information or have any
-+ * questions.
-+ */
-+
-+//
-+// SunJSSE does not support dynamic system properties, no way to re-use
-+// system properties in samevm/agentvm mode.
-+//
-+
-+/**
-+ * @test
-+ * @bug 8144566
-+ * @summary Custom HostnameVerifier disables SNI extension
-+ * @run main/othervm BestEffortOnLazyConnected
-+ */
-+
-+import java.io.*;
-+import java.nio.*;
-+import java.nio.channels.*;
-+import java.util.*;
-+import java.net.*;
-+import javax.net.ssl.*;
-+
-+public class BestEffortOnLazyConnected {
-+
-+ /*
-+ * =============================================================
-+ * Set the various variables needed for the tests, then
-+ * specify what tests to run on each side.
-+ */
-+
-+ /*
-+ * Should we run the client or server in a separate thread?
-+ * Both sides can throw exceptions, but do you have a preference
-+ * as to which side should be the main thread.
-+ */
-+ private static final boolean separateServerThread = true;
-+
-+ /*
-+ * Where do we find the keystores?
-+ */
-+ private static final String pathToStores = "../../../../sun/security/ssl/etc";
-+ private static final String keyStoreFile = "keystore";
-+ private static final String trustStoreFile = "truststore";
-+ private static final String passwd = "passphrase";
-+
-+ /*
-+ * Is the server ready to serve?
-+ */
-+ private static volatile boolean serverReady = false;
-+
-+ /*
-+ * Turn on SSL debugging?
-+ */
-+ private static final boolean debug = false;
-+
-+ /*
-+ * the fully qualified domain name of localhost
-+ */
-+ private static String hostname = null;
-+
-+ /*
-+ * If the client or server is doing some kind of object creation
-+ * that the other side depends on, and that thread prematurely
-+ * exits, you may experience a hang. The test harness will
-+ * terminate all hung threads after its timeout has expired,
-+ * currently 3 minutes by default, but you might try to be
-+ * smart about it....
-+ */
-+
-+ /*
-+ * Define the server side of the test.
-+ *
-+ * If the server prematurely exits, serverReady will be set to true
-+ * to avoid infinite hangs.
-+ */
-+ private void doServerSide() throws Exception {
-+ SSLServerSocketFactory sslssf =
-+ (SSLServerSocketFactory) SSLServerSocketFactory.getDefault();
-+ try (SSLServerSocket sslServerSocket =
-+ (SSLServerSocket) sslssf.createServerSocket(serverPort)) {
-+
-+ serverPort = sslServerSocket.getLocalPort();
-+
-+ /*
-+ * Signal Client, we're ready for his connect.
-+ */
-+ serverReady = true;
-+
-+ try (SSLSocket sslSocket = (SSLSocket)sslServerSocket.accept()) {
-+ InputStream sslIS = sslSocket.getInputStream();
-+ OutputStream sslOS = sslSocket.getOutputStream();
-+
-+ sslIS.read();
-+ sslOS.write(85);
-+ sslOS.flush();
-+
-+ ExtendedSSLSession session =
-+ (ExtendedSSLSession)sslSocket.getSession();
-+ if (session.getRequestedServerNames().isEmpty()) {
-+ throw new Exception("No expected Server Name Indication");
-+ }
-+ }
-+ }
-+ }
-+
-+ /*
-+ * Define the client side of the test.
-+ *
-+ * If the server prematurely exits, serverReady will be set to true
-+ * to avoid infinite hangs.
-+ */
-+ private void doClientSide() throws Exception {
-+
-+ /*
-+ * Wait for server to get started.
-+ */
-+ while (!serverReady) {
-+ Thread.sleep(50);
-+ }
-+
-+ SSLSocketFactory sslsf =
-+ (SSLSocketFactory) SSLSocketFactory.getDefault();
-+
-+ try (SSLSocket sslSocket = (SSLSocket)sslsf.createSocket()) {
-+
-+ sslSocket.connect(new InetSocketAddress(hostname, serverPort), 0);
-+
-+ InputStream sslIS = sslSocket.getInputStream();
-+ OutputStream sslOS = sslSocket.getOutputStream();
-+
-+ sslOS.write(280);
-+ sslOS.flush();
-+ sslIS.read();
-+ }
-+ }
-+
-+
-+ /*
-+ * =============================================================
-+ * The remainder is just support stuff
-+ */
-+
-+ // use any free port by default
-+ private volatile int serverPort = 0;
-+
-+ private volatile Exception serverException = null;
-+ private volatile Exception clientException = null;
-+
-+ public static void main(String[] args) throws Exception {
-+ String keyFilename =
-+ System.getProperty("test.src", ".") + "/" + pathToStores +
-+ "/" + keyStoreFile;
-+ String trustFilename =
-+ System.getProperty("test.src", ".") + "/" + pathToStores +
-+ "/" + trustStoreFile;
-+
-+ System.setProperty("javax.net.ssl.keyStore", keyFilename);
-+ System.setProperty("javax.net.ssl.keyStorePassword", passwd);
-+ System.setProperty("javax.net.ssl.trustStore", trustFilename);
-+ System.setProperty("javax.net.ssl.trustStorePassword", passwd);
-+
-+ if (debug) {
-+ System.setProperty("javax.net.debug", "all");
-+ }
-+
-+ try {
-+ hostname = InetAddress.getLocalHost().getCanonicalHostName();
-+ } catch (UnknownHostException uhe) {
-+ System.out.println(
-+ "Ignore the test as the local hostname cannot be determined");
-+
-+ return;
-+ }
-+
-+ System.out.println(
-+ "The fully qualified domain name of the local host is " +
-+ hostname);
-+ // Ignore the test if the hostname does not sound like a domain name.
-+ if ((hostname == null) || hostname.isEmpty() ||
-+ hostname.startsWith("localhost") ||
-+ Character.isDigit(hostname.charAt(hostname.length() - 1))) {
-+
-+ System.out.println("Ignore the test as the local hostname " +
-+ "cannot be determined as fully qualified domain name");
-+
-+ return;
-+ }
-+
-+ /*
-+ * Start the tests.
-+ */
-+ new BestEffortOnLazyConnected();
-+ }
-+
-+ private Thread clientThread = null;
-+ private Thread serverThread = null;
-+
-+ /*
-+ * Primary constructor, used to drive remainder of the test.
-+ *
-+ * Fork off the other side, then do your work.
-+ */
-+ BestEffortOnLazyConnected() throws Exception {
-+ try {
-+ if (separateServerThread) {
-+ startServer(true);
-+ startClient(false);
-+ } else {
-+ startClient(true);
-+ startServer(false);
-+ }
-+ } catch (Exception e) {
-+ // swallow for now. Show later
-+ }
-+
-+ /*
-+ * Wait for other side to close down.
-+ */
-+ if (separateServerThread) {
-+ serverThread.join();
-+ } else {
-+ clientThread.join();
-+ }
-+
-+ /*
-+ * When we get here, the test is pretty much over.
-+ * Which side threw the error?
-+ */
-+ Exception local;
-+ Exception remote;
-+ String whichRemote;
-+
-+ if (separateServerThread) {
-+ remote = serverException;
-+ local = clientException;
-+ whichRemote = "server";
-+ } else {
-+ remote = clientException;
-+ local = serverException;
-+ whichRemote = "client";
-+ }
-+
-+ /*
-+ * If both failed, return the curthread's exception, but also
-+ * print the remote side Exception
-+ */
-+ if ((local != null) && (remote != null)) {
-+ System.out.println(whichRemote + " also threw:");
-+ remote.printStackTrace();
-+ System.out.println();
-+ throw local;
-+ }
-+
-+ if (remote != null) {
-+ throw remote;
-+ }
-+
-+ if (local != null) {
-+ throw local;
-+ }
-+ }
-+
-+ private void startServer(boolean newThread) throws Exception {
-+ if (newThread) {
-+ serverThread = new Thread() {
-+ public void run() {
-+ try {
-+ doServerSide();
-+ } catch (Exception e) {
-+ /*
-+ * Our server thread just died.
-+ *
-+ * Release the client, if not active already...
-+ */
-+ System.err.println("Server died...");
-+ serverReady = true;
-+ serverException = e;
-+ }
-+ }
-+ };
-+ serverThread.start();
-+ } else {
-+ try {
-+ doServerSide();
-+ } catch (Exception e) {
-+ serverException = e;
-+ } finally {
-+ serverReady = true;
-+ }
-+ }
-+ }
-+
-+ private void startClient(boolean newThread) throws Exception {
-+ if (newThread) {
-+ clientThread = new Thread() {
-+ public void run() {
-+ try {
-+ doClientSide();
-+ } catch (Exception e) {
-+ /*
-+ * Our client thread just died.
-+ */
-+ System.err.println("Client died...");
-+ clientException = e;
-+ }
-+ }
-+ };
-+ clientThread.start();
-+ } else {
-+ try {
-+ doClientSide();
-+ } catch (Exception e) {
-+ clientException = e;
-+ }
-+ }
-+ }
-+}
-diff --git a/test/sun/net/www/protocol/https/HttpsURLConnection/ImpactOnSNI.java b/test/sun/net/www/protocol/https/HttpsURLConnection/ImpactOnSNI.java
-new file mode 100644
---- /dev/null
-+++ openjdk/jdk/test/sun/net/www/protocol/https/HttpsURLConnection/ImpactOnSNI.java
-@@ -0,0 +1,390 @@
-+/*
-+ * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
-+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-+ *
-+ * This code is free software; you can redistribute it and/or modify it
-+ * under the terms of the GNU General Public License version 2 only, as
-+ * published by the Free Software Foundation.
-+ *
-+ * This code is distributed in the hope that it will be useful, but WITHOUT
-+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-+ * version 2 for more details (a copy is included in the LICENSE file that
-+ * accompanied this code).
-+ *
-+ * You should have received a copy of the GNU General Public License version
-+ * 2 along with this work; if not, write to the Free Software Foundation,
-+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-+ *
-+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-+ * or visit www.oracle.com if you need additional information or have any
-+ * questions.
-+ */
-+
-+//
-+// SunJSSE does not support dynamic system properties, no way to re-use
-+// system properties in samevm/agentvm mode.
-+//
-+
-+/*
-+ * @test
-+ * @bug 8144566
-+ * @summary Custom HostnameVerifier disables SNI extension
-+ * @run main/othervm ImpactOnSNI
-+ */
-+
-+import java.io.*;
-+import java.net.*;
-+import javax.net.ssl.*;
-+
-+public class ImpactOnSNI {
-+
-+ /*
-+ * =============================================================
-+ * Set the various variables needed for the tests, then
-+ * specify what tests to run on each side.
-+ */
-+
-+ /*
-+ * Should we run the client or server in a separate thread?
-+ * Both sides can throw exceptions, but do you have a preference
-+ * as to which side should be the main thread.
-+ */
-+ private static final boolean separateServerThread = true;
-+
-+ /*
-+ * Where do we find the keystores?
-+ */
-+ private static final String pathToStores =
-+ "../../../../../../sun/security/ssl/etc";
-+ private static final String keyStoreFile = "keystore";
-+ private static final String trustStoreFile = "truststore";
-+ private static final String passwd = "passphrase";
-+
-+ /*
-+ * Is the server ready to serve?
-+ */
-+ private static volatile boolean serverReady = false;
-+
-+ /*
-+ * Is the connection ready to close?
-+ */
-+ private static volatile boolean closeReady = false;
-+
-+ /*
-+ * Turn on SSL debugging?
-+ */
-+ private static final boolean debug = false;
-+
-+ /*
-+ * Message posted
-+ */
-+ private static final String postMsg = "HTTP post on a https server";
-+
-+ /*
-+ * the fully qualified domain name of localhost
-+ */
-+ private static String hostname = null;
-+
-+ /*
-+ * If the client or server is doing some kind of object creation
-+ * that the other side depends on, and that thread prematurely
-+ * exits, you may experience a hang. The test harness will
-+ * terminate all hung threads after its timeout has expired,
-+ * currently 3 minutes by default, but you might try to be
-+ * smart about it....
-+ */
-+
-+ /*
-+ * Define the server side of the test.
-+ *
-+ * If the server prematurely exits, serverReady will be set to true
-+ * to avoid infinite hangs.
-+ */
-+ private void doServerSide() throws Exception {
-+ SSLServerSocketFactory sslssf =
-+ (SSLServerSocketFactory)SSLServerSocketFactory.getDefault();
-+ try (SSLServerSocket sslServerSocket =
-+ (SSLServerSocket)sslssf.createServerSocket(serverPort)) {
-+
-+ serverPort = sslServerSocket.getLocalPort();
-+
-+ /*
-+ * Signal Client, we're ready for his connect.
-+ */
-+ serverReady = true;
-+
-+ /*
-+ * Accept connections
-+ */
-+ try (SSLSocket sslSocket = (SSLSocket)sslServerSocket.accept()) {
-+ InputStream sslIS = sslSocket.getInputStream();
-+ OutputStream sslOS = sslSocket.getOutputStream();
-+ BufferedReader br =
-+ new BufferedReader(new InputStreamReader(sslIS));
-+ PrintStream ps = new PrintStream(sslOS);
-+
-+ // process HTTP POST request from client
-+ System.out.println("status line: " + br.readLine());
-+ String msg = null;
-+ while ((msg = br.readLine()) != null && msg.length() > 0);
-+
-+ msg = br.readLine();
-+ if (msg.equals(postMsg)) {
-+ ps.println("HTTP/1.1 200 OK\n\n");
-+ } else {
-+ ps.println("HTTP/1.1 500 Not OK\n\n");
-+ }
-+ ps.flush();
-+
-+ ExtendedSSLSession session =
-+ (ExtendedSSLSession)sslSocket.getSession();
-+ if (session.getRequestedServerNames().isEmpty()) {
-+ throw new Exception("No expected Server Name Indication");
-+ }
-+
-+ // close the socket
-+ while (!closeReady) {
-+ Thread.sleep(50);
-+ }
-+ }
-+ }
-+ }
-+
-+ /*
-+ * Define the client side of the test.
-+ *
-+ * If the server prematurely exits, serverReady will be set to true
-+ * to avoid infinite hangs.
-+ */
-+ private void doClientSide() throws Exception {
-+ /*
-+ * Wait for server to get started.
-+ */
-+ while (!serverReady) {
-+ Thread.sleep(50);
-+ }
-+
-+ // Send HTTP POST request to server
-+ URL url = new URL("https://" + hostname + ":" + serverPort);
-+
-+ HttpsURLConnection.setDefaultHostnameVerifier(new NameVerifier());
-+ HttpsURLConnection http = (HttpsURLConnection)url.openConnection();
-+ http.setDoOutput(true);
-+
-+ http.setRequestMethod("POST");
-+ PrintStream ps = new PrintStream(http.getOutputStream());
-+ try {
-+ ps.println(postMsg);
-+ ps.flush();
-+ if (http.getResponseCode() != 200) {
-+ throw new RuntimeException("test Failed");
-+ }
-+ } finally {
-+ ps.close();
-+ http.disconnect();
-+ closeReady = true;
-+ }
-+ }
-+
-+ private static class NameVerifier implements HostnameVerifier {
-+ public boolean verify(String hostname, SSLSession session) {
-+ return true;
-+ }
-+ }
-+
-+ /*
-+ * =============================================================
-+ * The remainder is just support stuff
-+ */
-+
-+ // use any free port by default
-+ private volatile int serverPort = 0;
-+
-+ private volatile Exception serverException = null;
-+ private volatile Exception clientException = null;
-+
-+ public static void main(String[] args) throws Exception {
-+ String keyFilename =
-+ System.getProperty("test.src", "./") + "/" + pathToStores +
-+ "/" + keyStoreFile;
-+ String trustFilename =
-+ System.getProperty("test.src", "./") + "/" + pathToStores +
-+ "/" + trustStoreFile;
-+
-+ System.setProperty("javax.net.ssl.keyStore", keyFilename);
-+ System.setProperty("javax.net.ssl.keyStorePassword", passwd);
-+ System.setProperty("javax.net.ssl.trustStore", trustFilename);
-+ System.setProperty("javax.net.ssl.trustStorePassword", passwd);
-+
-+ if (debug) {
-+ System.setProperty("javax.net.debug", "all");
-+ }
-+
-+ try {
-+ hostname = InetAddress.getLocalHost().getCanonicalHostName();
-+ } catch (UnknownHostException uhe) {
-+ System.out.println(
-+ "Ignore the test as the local hostname cannot be determined");
-+
-+ return;
-+ }
-+
-+ System.out.println(
-+ "The fully qualified domain name of the local host is " +
-+ hostname);
-+ // Ignore the test if the hostname does not sound like a domain name.
-+ if ((hostname == null) || hostname.isEmpty() ||
-+ hostname.startsWith("localhost") ||
-+ Character.isDigit(hostname.charAt(hostname.length() - 1))) {
-+
-+ System.out.println("Ignore the test as the local hostname " +
-+ "cannot be determined as fully qualified domain name");
-+
-+ return;
-+ }
-+
-+ /*
-+ * Start the tests.
-+ */
-+ new ImpactOnSNI();
-+ }
-+
-+ private Thread clientThread = null;
-+ private Thread serverThread = null;
-+
-+ /*
-+ * Primary constructor, used to drive remainder of the test.
-+ *
-+ * Fork off the other side, then do your work.
-+ */
-+ ImpactOnSNI() throws Exception {
-+ Exception startException = null;
-+ try {
-+ if (separateServerThread) {
-+ startServer(true);
-+ startClient(false);
-+ } else {
-+ startClient(true);
-+ startServer(false);
-+ }
-+ } catch (Exception e) {
-+ startException = e;
-+ }
-+
-+ /*
-+ * Wait for other side to close down.
-+ */
-+ if (separateServerThread) {
-+ if (serverThread != null) {
-+ serverThread.join();
-+ }
-+ } else {
-+ if (clientThread != null) {
-+ clientThread.join();
-+ }
-+ }
-+
-+ /*
-+ * When we get here, the test is pretty much over.
-+ * Which side threw the error?
-+ */
-+ Exception local;
-+ Exception remote;
-+
-+ if (separateServerThread) {
-+ remote = serverException;
-+ local = clientException;
-+ } else {
-+ remote = clientException;
-+ local = serverException;
-+ }
-+
-+ Exception exception = null;
-+
-+ /*
-+ * Check various exception conditions.
-+ */
-+ if ((local != null) && (remote != null)) {
-+ // If both failed, return the curthread's exception.
-+ local.initCause(remote);
-+ exception = local;
-+ } else if (local != null) {
-+ exception = local;
-+ } else if (remote != null) {
-+ exception = remote;
-+ } else if (startException != null) {
-+ exception = startException;
-+ }
-+
-+ /*
-+ * If there was an exception *AND* a startException,
-+ * output it.
-+ */
-+ if (exception != null) {
-+ if (exception != startException && startException != null) {
-+ exception.addSuppressed(startException);
-+ }
-+ throw exception;
-+ }
-+
-+ // Fall-through: no exception to throw!
-+ }
-+
-+ private void startServer(boolean newThread) throws Exception {
-+ if (newThread) {
-+ serverThread = new Thread() {
-+ @Override
-+ public void run() {
-+ try {
-+ doServerSide();
-+ } catch (Exception e) {
-+ /*
-+ * Our server thread just died.
-+ *
-+ * Release the client, if not active already...
-+ */
-+ System.err.println("Server died...");
-+ serverReady = true;
-+ serverException = e;
-+ }
-+ }
-+ };
-+ serverThread.start();
-+ } else {
-+ try {
-+ doServerSide();
-+ } catch (Exception e) {
-+ serverException = e;
-+ } finally {
-+ serverReady = true;
-+ }
-+ }
-+ }
-+
-+ private void startClient(boolean newThread) throws Exception {
-+ if (newThread) {
-+ clientThread = new Thread() {
-+ @Override
-+ public void run() {
-+ try {
-+ doClientSide();
-+ } catch (Exception e) {
-+ /*
-+ * Our client thread just died.
-+ */
-+ System.err.println("Client died...");
-+ clientException = e;
-+ }
-+ }
-+ };
-+ clientThread.start();
-+ } else {
-+ try {
-+ doClientSide();
-+ } catch (Exception e) {
-+ clientException = e;
-+ }
-+ }
-+ }
-+}
diff --git a/8155049-pr3352.patch b/8155049-pr3352.patch
deleted file mode 100644
index 68cf02f..0000000
--- a/8155049-pr3352.patch
+++ /dev/null
@@ -1,41 +0,0 @@
-# HG changeset patch
-# User rhalade
-# Date 1463420211 25200
-# Mon May 16 10:36:51 2016 -0700
-# Node ID c0e856f2dacdf5eb5cdea380da32ba210aee9579
-# Parent fb617df8fbac42e962219e45cbd29b15b5ecdc63
-8155049, PR3352: New tests from 8144566 fail with "No expected Server Name Indication"
-Reviewed-by: xuelei
-
-diff --git a/test/javax/net/ssl/ServerName/BestEffortOnLazyConnected.java b/test/javax/net/ssl/ServerName/BestEffortOnLazyConnected.java
---- openjdk/jdk/test/javax/net/ssl/ServerName/BestEffortOnLazyConnected.java
-+++ openjdk/jdk/test/javax/net/ssl/ServerName/BestEffortOnLazyConnected.java
-@@ -34,9 +34,6 @@
- */
-
- import java.io.*;
--import java.nio.*;
--import java.nio.channels.*;
--import java.util.*;
- import java.net.*;
- import javax.net.ssl.*;
-
-@@ -197,6 +194,7 @@
- hostname);
- // Ignore the test if the hostname does not sound like a domain name.
- if ((hostname == null) || hostname.isEmpty() ||
-+ !hostname.contains(".") || hostname.endsWith(".") ||
- hostname.startsWith("localhost") ||
- Character.isDigit(hostname.charAt(hostname.length() - 1))) {
-
-diff --git a/test/sun/net/www/protocol/https/HttpsURLConnection/ImpactOnSNI.java b/test/sun/net/www/protocol/https/HttpsURLConnection/ImpactOnSNI.java
---- openjdk/jdk/test/sun/net/www/protocol/https/HttpsURLConnection/ImpactOnSNI.java
-+++ openjdk/jdk/test/sun/net/www/protocol/https/HttpsURLConnection/ImpactOnSNI.java
-@@ -235,6 +235,7 @@
- hostname);
- // Ignore the test if the hostname does not sound like a domain name.
- if ((hostname == null) || hostname.isEmpty() ||
-+ !hostname.contains(".") || hostname.endsWith(".") ||
- hostname.startsWith("localhost") ||
- Character.isDigit(hostname.charAt(hostname.length() - 1))) {
-
diff --git a/8165231-rh1437545.patch b/8165231-rh1437545.patch
deleted file mode 100644
index e0d5be7..0000000
--- a/8165231-rh1437545.patch
+++ /dev/null
@@ -1,48 +0,0 @@
-# HG changeset patch
-# User horii
-# Date 1473905514 14400
-# Wed Sep 14 22:11:54 2016 -0400
-# Node ID 8d16f74380a78eb76cb33183a64440316393903e
-# Parent be698ac288484ab140715ee29ed9335e6ea8a33b
-8165231: java.nio.Bits.unaligned() doesn't return true on ppc
-Reviewed-by: simonis, coffeys
-
-diff --git a/src/share/classes/java/nio/Bits.java b/src/share/classes/java/nio/Bits.java
---- openjdk/jdk/src/share/classes/java/nio/Bits.java
-+++ openjdk/jdk/src/share/classes/java/nio/Bits.java
-@@ -1,5 +1,5 @@
- /*
-- * Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
-+ * Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
-@@ -614,7 +614,8 @@
- String arch = AccessController.doPrivileged(
- new sun.security.action.GetPropertyAction("os.arch"));
- unaligned = arch.equals("i386") || arch.equals("x86")
-- || arch.equals("amd64") || arch.equals("x86_64");
-+ || arch.equals("amd64") || arch.equals("x86_64")
-+ || arch.equals("ppc64") || arch.equals("ppc64le");
- unalignedKnown = true;
- return unaligned;
- }
-diff --git a/src/share/classes/sun/security/provider/ByteArrayAccess.java b/src/share/classes/sun/security/provider/ByteArrayAccess.java
---- openjdk/jdk/src/share/classes/sun/security/provider/ByteArrayAccess.java
-+++ openjdk/jdk/src/share/classes/sun/security/provider/ByteArrayAccess.java
-@@ -1,5 +1,5 @@
- /*
-- * Copyright (c) 2006, 2013, Oracle and/or its affiliates. All rights reserved.
-+ * Copyright (c) 2006, 2016, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
-@@ -94,7 +94,7 @@
- String arch = java.security.AccessController.doPrivileged
- (new sun.security.action.GetPropertyAction("os.arch", ""));
- return arch.equals("i386") || arch.equals("x86") || arch.equals("amd64")
-- || arch.equals("x86_64");
-+ || arch.equals("x86_64") || arch.equals("ppc64") || arch.equals("ppc64le");
- }
-
- /**
diff --git a/8174164-pr3334-rh1417266.patch b/8174164-pr3334-rh1417266.patch
deleted file mode 100644
index 494883f..0000000
--- a/8174164-pr3334-rh1417266.patch
+++ /dev/null
@@ -1,79 +0,0 @@
-# HG changeset patch
-# User roland
-# Date 1487208397 28800
-# Wed Feb 15 17:26:37 2017 -0800
-# Node ID a9cbaff50d3d7e3a1d2dbdc0121c470142b87270
-# Parent 15922b2f31db4857ec84efdf533c41b19e68030b
-8174164, PR3334, RH1417266: SafePointNode::_replaced_nodes breaks with irreducible loops
-Reviewed-by: kvn
-
-diff --git a/src/share/vm/opto/callnode.hpp b/src/share/vm/opto/callnode.hpp
---- openjdk/hotspot/src/share/vm/opto/callnode.hpp
-+++ openjdk/hotspot/src/share/vm/opto/callnode.hpp
-@@ -449,8 +449,8 @@
- void delete_replaced_nodes() {
- _replaced_nodes.reset();
- }
-- void apply_replaced_nodes() {
-- _replaced_nodes.apply(this);
-+ void apply_replaced_nodes(uint idx) {
-+ _replaced_nodes.apply(this, idx);
- }
- void merge_replaced_nodes_with(SafePointNode* sfpt) {
- _replaced_nodes.merge_with(sfpt->_replaced_nodes);
-diff --git a/src/share/vm/opto/parse1.cpp b/src/share/vm/opto/parse1.cpp
---- openjdk/hotspot/src/share/vm/opto/parse1.cpp
-+++ openjdk/hotspot/src/share/vm/opto/parse1.cpp
-@@ -1048,7 +1048,7 @@
- kit.make_dtrace_method_exit(method());
- }
- if (_replaced_nodes_for_exceptions) {
-- kit.map()->apply_replaced_nodes();
-+ kit.map()->apply_replaced_nodes(_new_idx);
- }
- // Done with exception-path processing.
- ex_map = kit.make_exception_state(ex_oop);
-@@ -1069,7 +1069,7 @@
- _exits.add_exception_state(ex_map);
- }
- }
-- _exits.map()->apply_replaced_nodes();
-+ _exits.map()->apply_replaced_nodes(_new_idx);
- }
-
- //-----------------------------create_entry_map-------------------------------
-diff --git a/src/share/vm/opto/replacednodes.cpp b/src/share/vm/opto/replacednodes.cpp
---- openjdk/hotspot/src/share/vm/opto/replacednodes.cpp
-+++ openjdk/hotspot/src/share/vm/opto/replacednodes.cpp
-@@ -91,13 +91,17 @@
- }
-
- // Perfom node replacement (used when returning to caller)
--void ReplacedNodes::apply(Node* n) {
-+void ReplacedNodes::apply(Node* n, uint idx) {
- if (is_empty()) {
- return;
- }
- for (int i = 0; i < _replaced_nodes->length(); i++) {
- ReplacedNode replaced = _replaced_nodes->at(i);
-- n->replace_edge(replaced.initial(), replaced.improved());
-+ // Only apply if improved node was created in a callee to avoid
-+ // issues with irreducible loops in the caller
-+ if (replaced.improved()->_idx >= idx) {
-+ n->replace_edge(replaced.initial(), replaced.improved());
-+ }
- }
- }
-
-diff --git a/src/share/vm/opto/replacednodes.hpp b/src/share/vm/opto/replacednodes.hpp
---- openjdk/hotspot/src/share/vm/opto/replacednodes.hpp
-+++ openjdk/hotspot/src/share/vm/opto/replacednodes.hpp
-@@ -71,7 +71,7 @@
- void record(Node* initial, Node* improved);
- void transfer_from(const ReplacedNodes& other, uint idx);
- void reset();
-- void apply(Node* n);
-+ void apply(Node* n, uint idx);
- void merge_with(const ReplacedNodes& other);
- bool is_empty() const;
- void dump(outputStream *st) const;
diff --git a/8174729-pr3336-rh1420518.patch b/8174729-pr3336-rh1420518.patch
deleted file mode 100644
index 3d67850..0000000
--- a/8174729-pr3336-rh1420518.patch
+++ /dev/null
@@ -1,122 +0,0 @@
-# HG changeset patch
-# User adinn
-# Date 1487931564 0
-# Fri Feb 24 10:19:24 2017 +0000
-# Node ID d41592af9af3790fe5eee30ce686d85cff09c942
-# Parent 1ac9b0f1bf17fc5935bfa8250550eabc2ffb6785
-8174729, PR3336, RH1420518: Race Condition in java.lang.reflect.WeakCache
-Summary: Race can occur between Proxy.getProxyClass and Proxy.isProxyClass
-Reviewed-by: mchung
-
-diff --git a/src/share/classes/java/lang/reflect/WeakCache.java b/src/share/classes/java/lang/reflect/WeakCache.java
---- openjdk/jdk/src/share/classes/java/lang/reflect/WeakCache.java
-+++ openjdk/jdk/src/share/classes/java/lang/reflect/WeakCache.java
-@@ -239,11 +239,11 @@
- // wrap value with CacheValue (WeakReference)
- CacheValue<V> cacheValue = new CacheValue<>(value);
-
-+ // put into reverseMap
-+ reverseMap.put(cacheValue, Boolean.TRUE);
-+
- // try replacing us with CacheValue (this should always succeed)
-- if (valuesMap.replace(subKey, this, cacheValue)) {
-- // put also in reverseMap
-- reverseMap.put(cacheValue, Boolean.TRUE);
-- } else {
-+ if (!valuesMap.replace(subKey, this, cacheValue)) {
- throw new AssertionError("Should not reach here");
- }
-
-diff --git a/test/java/lang/reflect/Proxy/ProxyRace.java b/test/java/lang/reflect/Proxy/ProxyRace.java
-new file mode 100644
---- /dev/null
-+++ openjdk/jdk/test/java/lang/reflect/Proxy/ProxyRace.java
-@@ -0,0 +1,88 @@
-+/*
-+ * Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved.
-+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-+ *
-+ * This code is free software; you can redistribute it and/or modify it
-+ * under the terms of the GNU General Public License version 2 only, as
-+ * published by the Free Software Foundation.
-+ *
-+ * This code is distributed in the hope that it will be useful, but WITHOUT
-+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-+ * version 2 for more details (a copy is included in the LICENSE file that
-+ * accompanied this code).
-+ *
-+ * You should have received a copy of the GNU General Public License version
-+ * 2 along with this work; if not, write to the Free Software Foundation,
-+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-+ *
-+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-+ * or visit www.oracle.com if you need additional information or have any
-+ * questions.
-+ */
-+
-+import java.lang.reflect.Proxy;
-+import java.util.concurrent.ExecutorService;
-+import java.util.concurrent.Executors;
-+import java.util.concurrent.Phaser;
-+import java.util.concurrent.TimeUnit;
-+import java.util.concurrent.atomic.AtomicInteger;
-+
-+/**
-+ * @test
-+ * @bug 8174729
-+ * @summary Proxy.getProxyClass() / Proxy.isProxyClass() race detector
-+ * @run main ProxyRace
-+ * @author plevart
-+ */
-+
-+public class ProxyRace {
-+
-+ static final int threads = 8;
-+
-+ static volatile ClassLoader classLoader;
-+ static volatile boolean terminate;
-+ static final AtomicInteger racesDetected = new AtomicInteger();
-+
-+ public static void main(String[] args) throws Exception {
-+
-+ Phaser phaser = new Phaser(threads) {
-+ @Override
-+ protected boolean onAdvance(int phase, int registeredParties) {
-+ // install new ClassLoader on each advance
-+ classLoader = new CL();
-+ return terminate;
-+ }
-+ };
-+
-+ ExecutorService exe = Executors.newFixedThreadPool(threads);
-+
-+ for (int i = 0; i < threads; i++) {
-+ exe.execute(() -> {
-+ while (phaser.arriveAndAwaitAdvance() >= 0) {
-+ Class<?> proxyClass = Proxy.getProxyClass(classLoader, Runnable.class);
-+ if (!Proxy.isProxyClass(proxyClass)) {
-+ racesDetected.incrementAndGet();
-+ }
-+ }
-+ });
-+ }
-+
-+ Thread.sleep(5000L);
-+
-+ terminate = true;
-+ exe.shutdown();
-+ exe.awaitTermination(5L, TimeUnit.SECONDS);
-+
-+ System.out.println(racesDetected.get() + " races detected");
-+ if (racesDetected.get() != 0) {
-+ throw new RuntimeException(racesDetected.get() + " races detected");
-+ }
-+ }
-+
-+ static class CL extends ClassLoader {
-+ public CL() {
-+ super(ClassLoader.getSystemClassLoader());
-+ }
-+ }
-+}
diff --git a/8175097-pr3334-rh1417266.patch b/8175097-pr3334-rh1417266.patch
deleted file mode 100644
index e80dd11..0000000
--- a/8175097-pr3334-rh1417266.patch
+++ /dev/null
@@ -1,100 +0,0 @@
-# HG changeset patch
-# User roland
-# Date 1487286884 28800
-# Thu Feb 16 15:14:44 2017 -0800
-# Node ID 1b4eb44fbfcd0fceb485d89d91eb893d99f5864b
-# Parent a9cbaff50d3d7e3a1d2dbdc0121c470142b87270
-8175097, PR3334, RH1417266: [TESTBUG] 8174164 fix missed the test
-Reviewed-by: kvn
-
-diff --git a/test/compiler/c2/TestReplacedNodesOSR.java b/test/compiler/c2/TestReplacedNodesOSR.java
-new file mode 100644
---- /dev/null
-+++ openjdk/hotspot/test/compiler/c2/TestReplacedNodesOSR.java
-@@ -0,0 +1,86 @@
-+/*
-+ * Copyright (c) 2017, Red Hat, Inc. All rights reserved.
-+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-+ *
-+ * This code is free software; you can redistribute it and/or modify it
-+ * under the terms of the GNU General Public License version 2 only, as
-+ * published by the Free Software Foundation.
-+ *
-+ * This code is distributed in the hope that it will be useful, but WITHOUT
-+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-+ * version 2 for more details (a copy is included in the LICENSE file that
-+ * accompanied this code).
-+ *
-+ * You should have received a copy of the GNU General Public License version
-+ * 2 along with this work; if not, write to the Free Software Foundation,
-+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-+ *
-+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-+ * or visit www.oracle.com if you need additional information or have any
-+ * questions.
-+ */
-+
-+/**
-+ * @test
-+ * @bug 8174164
-+ * @summary SafePointNode::_replaced_nodes breaks with irreducible loops
-+ * @run main/othervm -XX:-BackgroundCompilation TestReplacedNodesOSR
-+ *
-+ */
-+
-+public class TestReplacedNodesOSR {
-+
-+ static Object dummy;
-+
-+ static interface I {
-+ }
-+
-+ static class A implements I {
-+ }
-+
-+ static final class MyException extends Exception {
-+ }
-+
-+ static final A obj = new A();
-+ static I static_field() { return obj; }
-+
-+ // When OSR compiled, this method has an irreducible loop
-+ static void test(int v, MyException e) {
-+ int i = 0;
-+ for (;;) {
-+ if (i == 1000) {
-+ break;
-+ }
-+ try {
-+ if ((i%2) == 0) {
-+ int j = 0;
-+ for (;;) {
-+ j++;
-+ if (i+j != v) {
-+ if (j == 1000) {
-+ break;
-+ }
-+ } else {
-+ A a = (A)static_field();
-+ // replaced node recorded here
-+ throw e;
-+ }
-+ }
-+ }
-+ } catch(MyException ex) {
-+ }
-+ i++;
-+ // replaced node applied on return of the method
-+ // replaced node used here
-+ dummy = static_field();
-+ }
-+ }
-+
-+
-+ static public void main(String[] args) {
-+ for (int i = 0; i < 1000; i++) {
-+ test(1100, new MyException());
-+ }
-+ }
-+}
diff --git a/8175887-pr3415.patch b/8175887-pr3415.patch
new file mode 100644
index 0000000..6460f60
--- /dev/null
+++ b/8175887-pr3415.patch
@@ -0,0 +1,168 @@
+# HG changeset patch
+# User shade
+# Date 1488979372 -3600
+# Wed Mar 08 14:22:52 2017 +0100
+# Node ID 654b7fcb4932d48063f5f1fba0c8994db5e02976
+# Parent 1faf7c17089922f6f72b580253725f2ecb6ba2f8
+8175887, PR3415: C1 value numbering handling of Unsafe.get*Volatile is incorrect
+Reviewed-by: vlivanov
+
+diff --git a/src/share/vm/c1/c1_ValueMap.hpp b/src/share/vm/c1/c1_ValueMap.hpp
+--- openjdk/hotspot/src/share/vm/c1/c1_ValueMap.hpp
++++ openjdk/hotspot/src/share/vm/c1/c1_ValueMap.hpp
+@@ -158,6 +158,12 @@
+ void do_UnsafePutRaw (UnsafePutRaw* x) { kill_memory(); }
+ void do_UnsafePutObject(UnsafePutObject* x) { kill_memory(); }
+ void do_UnsafeGetAndSetObject(UnsafeGetAndSetObject* x) { kill_memory(); }
++ void do_UnsafeGetRaw (UnsafeGetRaw* x) { /* nothing to do */ }
++ void do_UnsafeGetObject(UnsafeGetObject* x) {
++ if (x->is_volatile()) { // the JMM requires this
++ kill_memory();
++ }
++ }
+ void do_Intrinsic (Intrinsic* x) { if (!x->preserves_state()) kill_memory(); }
+
+ void do_Phi (Phi* x) { /* nothing to do */ }
+@@ -198,8 +204,6 @@
+ void do_OsrEntry (OsrEntry* x) { /* nothing to do */ }
+ void do_ExceptionObject(ExceptionObject* x) { /* nothing to do */ }
+ void do_RoundFP (RoundFP* x) { /* nothing to do */ }
+- void do_UnsafeGetRaw (UnsafeGetRaw* x) { /* nothing to do */ }
+- void do_UnsafeGetObject(UnsafeGetObject* x) { /* nothing to do */ }
+ void do_UnsafePrefetchRead (UnsafePrefetchRead* x) { /* nothing to do */ }
+ void do_UnsafePrefetchWrite(UnsafePrefetchWrite* x) { /* nothing to do */ }
+ void do_ProfileCall (ProfileCall* x) { /* nothing to do */ }
+diff --git a/test/compiler/c1/UnsafeVolatileGuardTest.java b/test/compiler/c1/UnsafeVolatileGuardTest.java
+new file mode 100644
+--- /dev/null
++++ openjdk/hotspot/test/compiler/c1/UnsafeVolatileGuardTest.java
+@@ -0,0 +1,72 @@
++/*
++ * Copyright (c) 2017, Red Hat Inc. All rights reserved.
++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
++ *
++ * This code is free software; you can redistribute it and/or modify it
++ * under the terms of the GNU General Public License version 2 only, as
++ * published by the Free Software Foundation.
++ *
++ * This code is distributed in the hope that it will be useful, but WITHOUT
++ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
++ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
++ * version 2 for more details (a copy is included in the LICENSE file that
++ * accompanied this code).
++ *
++ * You should have received a copy of the GNU General Public License version
++ * 2 along with this work; if not, write to the Free Software Foundation,
++ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
++ *
++ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
++ * or visit www.oracle.com if you need additional information or have any
++ * questions.
++ */
++
++import java.lang.reflect.Field;
++
++/**
++ * @test
++ * @bug 8175887
++ * @summary C1 value numbering handling of Unsafe.get*Volatile is incorrect
++ * @run main/othervm -XX:+IgnoreUnrecognizedVMOptions -XX:TieredStopAtLevel=1 UnsafeVolatileGuardTest
++ */
++public class UnsafeVolatileGuardTest {
++ volatile static private int a;
++ static private int b;
++
++ static final sun.misc.Unsafe UNSAFE;
++
++ static final Object BASE;
++ static final long OFFSET;
++
++ static {
++ try {
++ Field uf = sun.misc.Unsafe.class.getDeclaredField("theUnsafe");
++ uf.setAccessible(true);
++ UNSAFE = (sun.misc.Unsafe)uf.get(null);
++
++ Field f = UnsafeVolatileGuardTest.class.getDeclaredField("a");
++ BASE = UNSAFE.staticFieldBase(f);
++ OFFSET = UNSAFE.staticFieldOffset(f);
++ } catch (Exception e) {
++ throw new RuntimeException(e);
++ }
++ }
++
++ static void test() {
++ int tt = b; // makes the JVM CSE the value of b
++
++ while (UNSAFE.getIntVolatile(BASE, OFFSET) == 0) {} // burn
++ if (b == 0) {
++ System.err.println("wrong value of b");
++ System.exit(1); // fail hard to report the error
++ }
++ }
++
++ public static void main(String [] args) throws Exception {
++ for (int i = 0; i < 10; i++) {
++ new Thread(UnsafeVolatileGuardTest::test).start();
++ }
++ b = 1;
++ a = 1;
++ }
++}
+diff --git a/test/compiler/c1/VolatileGuardTest.java b/test/compiler/c1/VolatileGuardTest.java
+new file mode 100644
+--- /dev/null
++++ openjdk/hotspot/test/compiler/c1/VolatileGuardTest.java
+@@ -0,0 +1,52 @@
++/*
++ * Copyright (c) 2017, Red Hat Inc. All rights reserved.
++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
++ *
++ * This code is free software; you can redistribute it and/or modify it
++ * under the terms of the GNU General Public License version 2 only, as
++ * published by the Free Software Foundation.
++ *
++ * This code is distributed in the hope that it will be useful, but WITHOUT
++ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
++ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
++ * version 2 for more details (a copy is included in the LICENSE file that
++ * accompanied this code).
++ *
++ * You should have received a copy of the GNU General Public License version
++ * 2 along with this work; if not, write to the Free Software Foundation,
++ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
++ *
++ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
++ * or visit www.oracle.com if you need additional information or have any
++ * questions.
++ */
++
++/**
++ * @test
++ * @bug 8175887
++ * @summary C1 doesn't respect the JMM with volatile field loads
++ *
++ * @run main/othervm -XX:+IgnoreUnrecognizedVMOptions -XX:TieredStopAtLevel=1 VolatileGuardTest
++ */
++public class VolatileGuardTest {
++ volatile static private int a;
++ static private int b;
++
++ static void test() {
++ int tt = b; // makes the JVM CSE the value of b
++
++ while (a == 0) {} // burn
++ if (b == 0) {
++ System.err.println("wrong value of b");
++ System.exit(1); // fail hard to report the error
++ }
++ }
++
++ public static void main(String [] args) throws Exception {
++ for (int i = 0; i < 10; i++) {
++ new Thread(VolatileGuardTest::test).start();
++ }
++ b = 1;
++ a = 1;
++ }
++}
diff --git a/8179084-pr3409-rh1455694.patch b/8179084-pr3409-rh1455694.patch
new file mode 100644
index 0000000..dbc2120
--- /dev/null
+++ b/8179084-pr3409-rh1455694.patch
@@ -0,0 +1,135 @@
+# HG changeset patch
+# User dholmes
+# Date 1493428477 14400
+# Fri Apr 28 21:14:37 2017 -0400
+# Node ID 2fee74c5547889d9698a2636e0a5170f9e66fb9c
+# Parent 13a04e8df5a3af73794146b930b32556c7cbc5b0
+8179084, PR3409, RH1455694: HotSpot VM fails to start when AggressiveHeap is set
+Reviewed-by: kbarrett, stefank
+
+diff --git a/src/share/vm/runtime/arguments.cpp b/src/share/vm/runtime/arguments.cpp
+--- openjdk/hotspot/src/share/vm/runtime/arguments.cpp
++++ openjdk/hotspot/src/share/vm/runtime/arguments.cpp
+@@ -3193,8 +3193,6 @@
+
+ // Enable parallel GC and adaptive generation sizing
+ FLAG_SET_CMDLINE(bool, UseParallelGC, true);
+- FLAG_SET_DEFAULT(ParallelGCThreads,
+- Abstract_VM_Version::parallel_worker_threads());
+
+ // Encourage steady state memory management
+ FLAG_SET_CMDLINE(uintx, ThresholdTolerance, 100);
+diff --git a/test/TEST.groups b/test/TEST.groups
+--- openjdk/hotspot/test/TEST.groups
++++ openjdk/hotspot/test/TEST.groups
+@@ -1,5 +1,5 @@
+ #
+-# Copyright (c) 2013, 2014, Oracle and/or its affiliates. All rights reserved.
++# Copyright (c) 2013, 2017, Oracle and/or its affiliates. All rights reserved.
+ # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ #
+ # This code is free software; you can redistribute it and/or modify it
+@@ -164,6 +164,7 @@
+ gc/TestGCLogRotationViaJcmd.java \
+ gc/g1/TestHumongousAllocInitialMark.java \
+ gc/g1/TestHumongousShrinkHeap.java \
++ gc/arguments/TestAggressiveHeap.java \
+ gc/arguments/TestG1HeapRegionSize.java \
+ gc/metaspace/TestMetaspaceMemoryPool.java \
+ gc/arguments/TestDynMinHeapFreeRatio.java \
+diff --git a/test/gc/arguments/TestAggressiveHeap.java b/test/gc/arguments/TestAggressiveHeap.java
+new file mode 100644
+--- /dev/null
++++ openjdk/hotspot/test/gc/arguments/TestAggressiveHeap.java
+@@ -0,0 +1,91 @@
++/*
++ * Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved.
++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
++ *
++ * This code is free software; you can redistribute it and/or modify it
++ * under the terms of the GNU General Public License version 2 only, as
++ * published by the Free Software Foundation.
++ *
++ * This code is distributed in the hope that it will be useful, but WITHOUT
++ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
++ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
++ * version 2 for more details (a copy is included in the LICENSE file that
++ * accompanied this code).
++ *
++ * You should have received a copy of the GNU General Public License version
++ * 2 along with this work; if not, write to the Free Software Foundation,
++ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
++ *
++ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
++ * or visit www.oracle.com if you need additional information or have any
++ * questions.
++ */
++
++/*
++ * @test TestAggressiveHeap
++ * @key gc
++ * @bug 8179084
++ * @summary Test argument processing for -XX:+AggressiveHeap.
++ * @library /testlibrary
++ * @run driver TestAggressiveHeap
++ */
++
++import java.lang.management.ManagementFactory;
++import javax.management.MBeanServer;
++import javax.management.ObjectName;
++
++import com.oracle.java.testlibrary.OutputAnalyzer;
++import com.oracle.java.testlibrary.ProcessTools;
++
++public class TestAggressiveHeap {
++
++ public static void main(String args[]) throws Exception {
++ if (canUseAggressiveHeapOption()) {
++ testFlag();
++ }
++ }
++
++ // Note: Not a normal boolean flag; -XX:-AggressiveHeap is invalid.
++ private static final String option = "-XX:+AggressiveHeap";
++
++ // Option requires at least 256M, else error during option processing.
++ private static final long minMemory = 256 * 1024 * 1024;
++
++ // bool UseParallelGC := true {product}
++ private static final String parallelGCPattern =
++ " *bool +UseParallelGC *:= *true +\\{product\\}";
++
++ private static void testFlag() throws Exception {
++ ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(
++ option, "-XX:+PrintFlagsFinal", "-version");
++
++ OutputAnalyzer output = new OutputAnalyzer(pb.start());
++
++ output.shouldHaveExitValue(0);
++
++ String value = output.firstMatch(parallelGCPattern);
++ if (value == null) {
++ throw new RuntimeException(
++ option + " didn't set UseParallelGC");
++ }
++ }
++
++ private static boolean haveRequiredMemory() throws Exception {
++ MBeanServer server = ManagementFactory.getPlatformMBeanServer();
++ ObjectName os = new ObjectName("java.lang", "type", "OperatingSystem");
++ Object attr = server.getAttribute(os, "TotalPhysicalMemorySize");
++ String value = attr.toString();
++ long memory = Long.parseLong(value);
++ return memory >= minMemory;
++ }
++
++ private static boolean canUseAggressiveHeapOption() throws Exception {
++ if (!haveRequiredMemory()) {
++ System.out.println(
++ "Skipping test of " + option + " : insufficient memory");
++ return false;
++ }
++ return true;
++ }
++}
++
diff --git a/8181419-pr3413-rh1463144.patch b/8181419-pr3413-rh1463144.patch
new file mode 100644
index 0000000..c2c7fc6
--- /dev/null
+++ b/8181419-pr3413-rh1463144.patch
@@ -0,0 +1,92 @@
+# HG changeset patch
+# User stuefe
+# Date 1497865921 -7200
+# Mon Jun 19 11:52:01 2017 +0200
+# Node ID ca0c7b2783e0102468218589a062e7ac4736aae2
+# Parent 148a7d6c463ad1726bad8a9e8d5df191314d704b
+8181419, PR3413, RH1463144: Race in jdwp invoker handling may lead to crashes or invalid results
+Reviewed-by: sspitsyn, sgehwolf, clanger
+
+diff --git a/src/share/back/invoker.c b/src/share/back/invoker.c
+--- openjdk/jdk/src/share/back/invoker.c
++++ openjdk/jdk/src/share/back/invoker.c
+@@ -212,30 +212,6 @@
+ }
+
+ /*
+- * Delete saved global references - if any - for:
+- * - a potentially thrown Exception
+- * - a returned refernce/array value
+- * See invoker_doInvoke() and invoke* methods where global references
+- * are being saved.
+- */
+-static void
+-deletePotentiallySavedGlobalRefs(JNIEnv *env, InvokeRequest *request)
+-{
+- /* Delete potentially saved return value */
+- if ((request->invokeType == INVOKE_CONSTRUCTOR) ||
+- (returnTypeTag(request->methodSignature) == JDWP_TAG(OBJECT)) ||
+- (returnTypeTag(request->methodSignature) == JDWP_TAG(ARRAY))) {
+- if (request->returnValue.l != NULL) {
+- tossGlobalRef(env, &(request->returnValue.l));
+- }
+- }
+- /* Delete potentially saved exception */
+- if (request->exception != NULL) {
+- tossGlobalRef(env, &(request->exception));
+- }
+-}
+-
+-/*
+ * Delete global argument references from the request which got put there before a
+ * invoke request was carried out. See fillInvokeRequest().
+ */
+@@ -744,6 +720,7 @@
+ jint id;
+ InvokeRequest *request;
+ jboolean detached;
++ jboolean mustReleaseReturnValue = JNI_FALSE;
+
+ JDI_ASSERT(thread);
+
+@@ -787,6 +764,13 @@
+ id = request->id;
+ exc = request->exception;
+ returnValue = request->returnValue;
++
++ /* Release return value and exception references, but delay the release
++ * until after the return packet was sent. */
++ mustReleaseReturnValue = request->invokeType == INVOKE_CONSTRUCTOR ||
++ returnTypeTag(request->methodSignature) == JDWP_TAG(OBJECT) ||
++ returnTypeTag(request->methodSignature) == JDWP_TAG(ARRAY);
++
+ }
+
+ /*
+@@ -801,6 +785,12 @@
+ */
+ deleteGlobalArgumentRefs(env, request);
+
++ /* From now on, do not access the request structure anymore
++ * for this request id, because once we give up the invokerLock it may
++ * be immediately reused by a new invoke request.
++ */
++ request = NULL;
++
+ /*
+ * Give up the lock before I/O operation
+ */
+@@ -821,7 +811,12 @@
+ */
+ eventHandler_lock(); // for proper lock order
+ debugMonitorEnter(invokerLock);
+- deletePotentiallySavedGlobalRefs(env, request);
++ if (mustReleaseReturnValue && returnValue.l != NULL) {
++ tossGlobalRef(env, &returnValue.l);
++ }
++ if (exc != NULL) {
++ tossGlobalRef(env, &exc);
++ }
+ debugMonitorExit(invokerLock);
+ eventHandler_unlock();
+ }
diff --git a/java-1.8.0-openjdk-remove-intree-libraries.sh b/java-1.8.0-openjdk-remove-intree-libraries.sh
index 1f022f6..d9578e9 100644
--- a/java-1.8.0-openjdk-remove-intree-libraries.sh
+++ b/java-1.8.0-openjdk-remove-intree-libraries.sh
@@ -1,10 +1,10 @@
#!/bin/sh
-ZIP_SRC=jdk8/jdk/src/share/native/java/util/zip/zlib-*
-JPEG_SRC=jdk8/jdk/src/share/native/sun/awt/image/jpeg
-GIF_SRC=jdk8/jdk/src/share/native/sun/awt/giflib
-PNG_SRC=jdk8/jdk/src/share/native/sun/awt/libpng
-LCMS_SRC=jdk8/jdk/src/share/native/sun/java2d/cmm/lcms
+ZIP_SRC=openjdk/jdk/src/share/native/java/util/zip/zlib-*
+JPEG_SRC=openjdk/jdk/src/share/native/sun/awt/image/jpeg
+GIF_SRC=openjdk/jdk/src/share/native/sun/awt/giflib
+PNG_SRC=openjdk/jdk/src/share/native/sun/awt/libpng
+LCMS_SRC=openjdk/jdk/src/share/native/sun/java2d/cmm/lcms
echo "Removing built-in libs (they will be linked)"
diff --git a/java-1.8.0-openjdk.spec b/java-1.8.0-openjdk.spec
index d523a94..e001376 100644
--- a/java-1.8.0-openjdk.spec
+++ b/java-1.8.0-openjdk.spec
@@ -172,6 +172,27 @@
%global with_systemtap 0
%endif
+%ifarch %{ix86} x86_64
+#disabling jfx on f25for now
+%global with_openjfx_binding 0
+%global openjfx_path %{_jvmdir}/openjfx
+# links src directories
+%global jfx_jre_libs_dir %{openjfx_path}/rt/lib
+%global jfx_jre_native_dir %{jfx_jre_libs_dir}/%{archinstall}
+%global jfx_sdk_libs_dir %{openjfx_path}/lib
+%global jfx_sdk_bins_dir %{openjfx_path}/bin
+%global jfx_jre_exts_dir %{jfx_jre_libs_dir}/ext
+# links src files
+# maybe depend on jfx and generate the lists in build time? Yes, bad idea to inlcude cyclic depndenci, but this list is aweful
+%global jfx_jre_libs jfxswt.jar javafx.properties
+%global jfx_jre_native libprism_es2.so libprism_common.so libjavafx_font.so libdecora_sse.so libjavafx_font_freetype.so libprism_sw.so libjavafx_font_pango.so libglass.so libjavafx_iio.so
+%global jfx_sdk_libs javafx-mx.jar packager.jar ant-javafx.jar
+%global jfx_sdk_bins javafxpackager javapackager
+%global jfx_jre_exts jfxrt.jar
+%else
+%global with_openjfx_binding 0
+%endif
+
# Convert an absolute path to a relative path. Each symbolic link is
# specified relative to the directory in which it is installed so that
# it will resolve properly within chrooted installations.
@@ -184,7 +205,7 @@
# note, following three variables are sedded from update_sources if used correctly. Hardcode them rather there.
%global project aarch64-port
%global repo jdk8u
-%global revision aarch64-jdk8u131-b12
+%global revision aarch64-jdk8u141-b16
# eg # jdk8u60-b27 -> jdk8u60 or # aarch64-jdk8u60-b27 -> aarch64-jdk8u60 (dont forget spec escape % by %%)
%global whole_update %(VERSION=%{revision}; echo ${VERSION%%-*})
# eg jdk8u60 -> 60 or aarch64-jdk8u60 -> 60
@@ -794,7 +815,7 @@ Obsoletes: java-1.7.0-openjdk-accessibility%1
Name: java-%{javaver}-%{origin}
Version: %{javaver}.%{updatever}
-Release: 3.%{buildver}%{?dist}
+Release: 1.%{buildver}%{?dist}
# java-1.5.0-ibm from jpackage.org set Epoch to 1 for unknown reasons,
# and this change was brought into RHEL-4. java-1.5.0-ibm packages
# also included the epoch in their virtual provides. This created a
@@ -820,7 +841,7 @@ URL: http://openjdk.java.net/
Source0: %{project}-%{repo}-%{revision}.tar.xz
# Shenandoah HotSpot
-Source1: aarch64-port-jdk8u-shenandoah-aarch64-shenandoah-jdk8u131-b12-shenandoah-merge-2017-04-20.tar.xz
+Source1: aarch64-port-jdk8u-shenandoah-aarch64-shenandoah-jdk8u141-b16.tar.xz
# Custom README for -src subpackage
Source2: README.src
@@ -927,34 +948,24 @@ Patch400: 8154313.patch
Patch526: 6260348-pr3066.patch
# 8061305, PR3335, RH1423421: Javadoc crashes when method name ends with "Property"
Patch538: 8061305-pr3335-rh1423421.patch
-# 8175813, PR3394, RH1448880: PPC64: "mbind: Invalid argument" when -XX:+UseNUMA is used
-Patch550: 8175813-pr3394-rh1448880.patch
# 8181055, PR3394, RH1448880: PPC64: "mbind: Invalid argument" still seen after 8175813
Patch551: 8181055-pr3394-rh1448880.patch
-
-# Patches upstream and appearing in 8u131
-# 6515172, PR3346: Runtime.availableProcessors() ignores Linux taskset command
-Patch542: 6515172-pr3346.patch
+# 8181419, PR3413, RH1463144: Race in jdwp invoker handling may lead to crashes or invalid results
+Patch553: 8181419-pr3413-rh1463144.patch
# Patches upstream and appearing in 8u152
# 8153711, PR3313, RH1284948: [REDO] JDWP: Memory Leak: GlobalRefs never deleted when processing invokeMethod command
Patch535: 8153711-pr3313-rh1284948.patch
-# 8144566, PR3352: Custom HostnameVerifier disables SNI extension
-Patch544: 8144566-pr3352.patch
-# 8155049, PR3352: New tests from 8144566 fail with "No expected Server Name Indication"
-Patch545: 8155049-pr3352.patch
# 8162384, PR3122, RH1358661: Performance regression: bimorphic inlining may be bypassed by type speculation
Patch532: 8162384-pr3122-rh1358661.patch
-# 8165231, RH1437545: java.nio.Bits.unaligned() doesn't return true on ppc
-Patch546: 8165231-rh1437545.patch
# 8173941, PR3326: SA does not work if executable is DSO
Patch547: 8173941-pr3326.patch
-# 8174164, PR3334, RH1417266: SafePointNode::_replaced_nodes breaks with irreducible loops"
-Patch537: 8174164-pr3334-rh1417266.patch
-# 8174729, PR3336, RH1420518: Race Condition in java.lang.reflect.WeakCache
-Patch548: 8174729-pr3336-rh1420518.patch
-# 8175097, PR3334, RH1417266: [TESTBUG] 8174164 fix missed the test
-Patch549: 8175097-pr3334-rh1417266.patch
+# 8175813, PR3394, RH1448880: PPC64: "mbind: Invalid argument" when -XX:+UseNUMA is used
+Patch550: 8175813-pr3394-rh1448880.patch
+# 8179084, PR3409, RH1455694: HotSpot VM fails to start when AggressiveHeap is set
+Patch552: 8179084-pr3409-rh1455694.patch
+# 8175887, PR3415: C1 value numbering handling of Unsafe.get*Volatile is incorrect
+Patch554: 8175887-pr3415.patch
# Patches ineligible for 8u
# 8043805: Allow using a system-installed libjpeg
@@ -1212,6 +1223,43 @@ Summary: OpenJDK accessibility connector %{for_debug}
See normal java-%{version}-openjdk-accessibility description.
%endif
+
+%if %{with_openjfx_binding}
+%package openjfx
+Summary: OpenJDK x OpenJFX connector. This package adds symliks finishing Java FX integration to %{name}
+Requires: %{name}%{?_isa} = %{epoch}:%{version}-%{release}
+Requires: openjfx%{?_isa}
+Provides: javafx = %{epoch}:%{version}-%{release}
+%description openjfx
+Set of links from OpenJDK (jre) to OpenJFX
+
+%package openjfx-devel
+Summary: OpenJDK x OpenJFX connector for FX developers. This package adds symliks finishing Java FX integration to %{name}-devel
+Requires: %{name}-devel%{?_isa} = %{epoch}:%{version}-%{release}
+Requires: openjfx-devel%{?_isa}
+Provides: javafx-devel = %{epoch}:%{version}-%{release}
+%description openjfx-devel
+Set of links from OpenJDK (sdk) to OpenJFX
+
+%if %{include_debug_build}
+%package openjfx-debug
+Summary: OpenJDK x OpenJFX connector %{for_debug}. his package adds symliks finishing Java FX integration to %{name}-debug
+Requires: %{name}-debug%{?_isa} = %{epoch}:%{version}-%{release}
+Requires: openjfx%{?_isa}
+Provides: javafx-debug = %{epoch}:%{version}-%{release}
+%description openjfx-debug
+Set of links from OpenJDK-debug (jre) to normal OpenJFX. OpenJFX do not support debug buuilds of itself
+
+%package openjfx-devel-debug
+Summary: OpenJDK x OpenJFX connector for FX developers %{for_debug}. This package adds symliks finishing Java FX integration to %{name}-devel-debug
+Requires: %{name}-devel-debug%{?_isa} = %{epoch}:%{version}-%{release}
+Requires: openjfx-devel%{?_isa}
+Provides: javafx-devel-debug = %{epoch}:%{version}-%{release}
+%description openjfx-devel-debug
+Set of links from OpenJDK-debug (sdk) to normal OpenJFX. OpenJFX do not support debug buuilds of itself
+%endif
+%endif
+
%prep
if [ %{include_normal_build} -eq 0 -o %{include_normal_build} -eq 1 ] ; then
echo "include_normal_build is %{include_normal_build}"
@@ -1313,17 +1361,13 @@ sh %{SOURCE12}
%patch528
%patch532
%patch535
-%patch537
%patch538
-%patch542
-%patch544
-%patch545
-%patch546
%patch547
-%patch548
-%patch549
%patch550
%patch551
+%patch552
+%patch553
+%patch554
# RPM-only fixes
%patch525
@@ -1787,6 +1831,44 @@ find $RPM_BUILD_ROOT%{_jvmdir}/%{sdkdir $suffix}/demo \
echo "" >> accessibility.properties
popd
+# intentionally after all else, fx links with redirections on its own
+%if %{with_openjfx_binding}
+ FXSDK_FILES=%{name}-openjfx-devel.files"$suffix"
+ FXJRE_FILES=%{name}-openjfx.files"$suffix"
+ echo -n "" > $FXJRE_FILES
+ echo -n "" > $FXSDK_FILES
+ for file in %{jfx_jre_libs} ; do
+ srcfile=%{jfx_jre_libs_dir}/$file
+ targetfile=%{_jvmdir}/%{jredir $suffix}/lib/$file
+ ln -s $srcfile $RPM_BUILD_ROOT/$targetfile
+ echo $targetfile >> $FXJRE_FILES
+ done
+ for file in %{jfx_jre_native} ; do
+ srcfile=%{jfx_jre_native_dir}/$file
+ targetfile=%{_jvmdir}/%{jredir $suffix}/lib/%{archinstall}/$file
+ ln -s $srcfile $RPM_BUILD_ROOT/$targetfile
+ echo $targetfile >> $FXJRE_FILES
+ done
+ for file in %{jfx_jre_exts} ; do
+ srcfile=%{jfx_jre_exts_dir}/$file
+ targetfile=%{_jvmdir}/%{jredir $suffix}/lib/ext/$file
+ ln -s $srcfile $RPM_BUILD_ROOT/$targetfile
+ echo $targetfile >> $FXJRE_FILES
+ done
+ for file in %{jfx_sdk_libs} ; do
+ srcfile=%{jfx_sdk_libs_dir}/$file
+ targetfile=%{_jvmdir}/%{sdkdir $suffix}/lib/$file
+ ln -s $srcfile $RPM_BUILD_ROOT/$targetfile
+ echo $targetfile >> $FXSDK_FILES
+ done
+ for file in %{jfx_sdk_bins} ; do
+ srcfile=%{jfx_sdk_bins_dir}/$file
+ targetfile=%{_jvmdir}/%{sdkdir $suffix}/bin/$file
+ ln -s $srcfile $RPM_BUILD_ROOT/$targetfile
+ echo $targetfile >> $FXSDK_FILES
+ done
+%endif
+
bash %{SOURCE20} $RPM_BUILD_ROOT/%{_jvmdir}/%{jredir $suffix} %{javaver}
# https://bugzilla.redhat.com/show_bug.cgi?id=1183793
touch -t 201401010000 $RPM_BUILD_ROOT/%{_jvmdir}/%{jredir $suffix}/lib/security/java.security
@@ -1945,6 +2027,12 @@ require "copy_jdk_configs.lua"
%files accessibility
%{files_accessibility %{nil}}
+
+%if %{with_openjfx_binding}
+%files openjfx -f %{name}-openjfx.files
+
+%files openjfx-devel -f %{name}-openjfx-devel.files
+%endif
%endif
%if %{include_debug_build}
@@ -1971,14 +2059,37 @@ require "copy_jdk_configs.lua"
%files accessibility-debug
%{files_accessibility %{debug_suffix_unquoted}}
+
+%if %{with_openjfx_binding}
+%files openjfx-debug -f %{name}-openjfx.files-debug
+
+%files openjfx-devel-debug -f %{name}-openjfx-devel.files-debug
+%endif
%endif
%changelog
+* Fri Jul 21 2017 Jiri Vanek <jvanek(a)redhat.com> - 1:1.8.0.141-1.b16
+- updated to security u141.b16
+- sync patches with rhel7
+
+* Sat Jun 17 2017 Jiri Vanek <jvanek(a)redhat.com> - 1:1.8.0.131-7.b12
+- adapted to no longer noarch openjfx-devel
+
+* Wed Jun 07 2017 Jiri Vanek <jvanek(a)redhat.com> - 1:1.8.0.131-6.b12
+- added virtualprovides for javafx
+
+* Wed Jun 07 2017 Jiri Vanek <jvanek(a)redhat.com> - 1:1.8.0.131-5.b12
+- fixed target of to fxrt.jar link
+- fixedname of libglass
+
* Tue Jun 06 2017 Jiri Vanek <jvanek(a)redhat.com> - 1:1.8.0.131-3.b12
- source999 moved to source1
- added two pathces 8181055-pr3394-rh1448880.patch and 8175813/PR3394/RH1448880
- enabled (commented out) system NSS via patch1000, enableCommentedOutSystemNss.patch
+* Tue May 09 2017 Jiri Vanek <jvanek(a)redhat.com> - 1:1.8.0.131-1.b12
+- added javafx binding subpackages
+
* Thu Apr 20 2017 Jiri Vanek <jvanek(a)redhat.com> - 1:1.8.0.131-1.b12
- updated to aarch64-jdk8u131-b12 (from aarch64-port/jdk8u)
- updated to aarch64-shenandoah-jdk8u131-b12-shenandoah-merge-2017-04-20 (from aarch64-port/jdk8u-shenandoah) of hotspot
diff --git a/pr1983-jdk.patch b/pr1983-jdk.patch
index a0b4e1a..673b8a9 100644
--- a/pr1983-jdk.patch
+++ b/pr1983-jdk.patch
@@ -6,10 +6,11 @@
# Parent afd392dfaed501ac674a7cc3e37353ce300969c7
PR1983: Support using the system installation of NSS with the SunEC provider
Summary: Apply code changes from PR1699 & PR1742 & forward-port Makefile changes to the new build.
+Updated 2017/07/04 to accomodate 8175110
-diff -r afd392dfaed5 -r 48c15869ecd5 make/lib/SecurityLibraries.gmk
---- openjdk/jdk/make/lib/SecurityLibraries.gmk Tue Jan 26 22:26:26 2016 +0000
-+++ openjdk/jdk/make/lib/SecurityLibraries.gmk Wed Jan 27 02:54:06 2016 +0000
+diff -r 984a4af2ed4e make/lib/SecurityLibraries.gmk
+--- openjdk/jdk/make/lib/SecurityLibraries.gmk
++++ openjdk/jdk/make/lib/SecurityLibraries.gmk
@@ -218,8 +218,17 @@
ifeq ($(ENABLE_INTREE_EC), yes)
@@ -51,9 +52,9 @@ diff -r afd392dfaed5 -r 48c15869ecd5 make/lib/SecurityLibraries.gmk
VERSIONINFO_RESOURCE := $(JDK_TOPDIR)/src/windows/resource/version.rc, \
RC_FLAGS := $(RC_FLAGS) \
-D "JDK_FNAME=sunec.dll" \
-diff -r afd392dfaed5 -r 48c15869ecd5 src/share/native/sun/security/ec/ECC_JNI.cpp
---- openjdk/jdk/src/share/native/sun/security/ec/ECC_JNI.cpp Tue Jan 26 22:26:26 2016 +0000
-+++ openjdk/jdk/src/share/native/sun/security/ec/ECC_JNI.cpp Wed Jan 27 02:54:06 2016 +0000
+diff -r 984a4af2ed4e src/share/native/sun/security/ec/ECC_JNI.cpp
+--- openjdk/jdk/src/share/native/sun/security/ec/ECC_JNI.cpp
++++ openjdk/jdk/src/share/native/sun/security/ec/ECC_JNI.cpp
@@ -24,7 +24,7 @@
*/
@@ -76,8 +77,8 @@ diff -r afd392dfaed5 -r 48c15869ecd5 src/share/native/sun/security/ec/ECC_JNI.cp
*/
JNIEXPORT jbyteArray
JNICALL Java_sun_security_ec_ECDSASignature_signDigest
-- (JNIEnv *env, jclass clazz, jbyteArray digest, jbyteArray privateKey, jbyteArray encodedParams, jbyteArray seed)
-+ (JNIEnv *env, jclass UNUSED(clazz), jbyteArray digest, jbyteArray privateKey, jbyteArray encodedParams, jbyteArray seed)
+- (JNIEnv *env, jclass clazz, jbyteArray digest, jbyteArray privateKey, jbyteArray encodedParams, jbyteArray seed, jint timing)
++ (JNIEnv *env, jclass UNUSED(clazz), jbyteArray digest, jbyteArray privateKey, jbyteArray encodedParams, jbyteArray seed, jint timing)
{
jbyte* pDigestBuffer = NULL;
jint jDigestLength = env->GetArrayLength(digest);
@@ -99,12 +100,12 @@ diff -r afd392dfaed5 -r 48c15869ecd5 src/share/native/sun/security/ec/ECC_JNI.cp
{
jbyteArray jSecret = NULL;
ECParams *ecparams = NULL;
-diff -r afd392dfaed5 -r 48c15869ecd5 src/share/native/sun/security/ec/ecc_impl.h
---- /dev/null Thu Jan 01 00:00:00 1970 +0000
-+++ openjdk/jdk/src/share/native/sun/security/ec/ecc_impl.h Wed Jan 27 02:54:06 2016 +0000
+diff -r 984a4af2ed4e src/share/native/sun/security/ec/ecc_impl.h
+--- /dev/null
++++ openjdk/jdk/src/share/native/sun/security/ec/ecc_impl.h
@@ -0,0 +1,298 @@
+/*
-+ * Copyright (c) 2007, 2013, Oracle and/or its affiliates. All rights reserved.
++ * Copyright (c) 2007, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Use is subject to license terms.
+ *
+ * This library is free software; you can redistribute it and/or
@@ -139,7 +140,7 @@ diff -r afd392dfaed5 -r 48c15869ecd5 src/share/native/sun/security/ec/ecc_impl.h
+ * Dr Vipul Gupta <vipul.gupta(a)sun.com> and
+ * Douglas Stebila <douglas(a)stebila.ca>, Sun Microsystems Laboratories
+ *
-+ * Last Modified Date from the Original Code: November 2013
++ * Last Modified Date from the Original Code: May 2017
+ *********************************************************************** */
+
+#ifndef _ECC_IMPL_H
@@ -373,7 +374,7 @@ diff -r afd392dfaed5 -r 48c15869ecd5 src/share/native/sun/security/ec/ecc_impl.h
+#ifdef SYSTEM_NSS
+#define EC_DecodeParams(a,b,c) EC_DecodeParams(a,b)
+#define EC_NewKey(a,b,c,d,e) EC_NewKeyFromSeed(a,b,c,d)
-+#define ECDSA_SignDigest(a,b,c,d,e,f) ECDSA_SignDigestWithSeed(a,b,c,d,e)
++#define ECDSA_SignDigest(a,b,c,d,e,f,g) ECDSA_SignDigestWithSeed(a,b,c,d,e)
+#define ECDSA_VerifyDigest(a,b,c,d) ECDSA_VerifyDigest(a,b,c)
+#define ECDH_Derive(a,b,c,d,e,f) ECDH_Derive(a,b,c,d,e)
+#else
@@ -389,7 +390,7 @@ diff -r afd392dfaed5 -r 48c15869ecd5 src/share/native/sun/security/ec/ecc_impl.h
+ const unsigned char* random, int randomlen, int);
+/* This function has been modified to accept an array of random bytes */
+extern SECStatus ECDSA_SignDigest(ECPrivateKey *, SECItem *, const SECItem *,
-+ const unsigned char* random, int randomlen, int);
++ const unsigned char* random, int randomlen, int, int timing);
+extern SECStatus ECDSA_VerifyDigest(ECPublicKey *, const SECItem *,
+ const SECItem *, int);
+extern SECStatus ECDH_Derive(SECItem *, ECParams *, SECItem *, boolean_t,
@@ -401,12 +402,12 @@ diff -r afd392dfaed5 -r 48c15869ecd5 src/share/native/sun/security/ec/ecc_impl.h
+#endif
+
+#endif /* _ECC_IMPL_H */
-diff -r afd392dfaed5 -r 48c15869ecd5 src/share/native/sun/security/ec/impl/ecc_impl.h
---- openjdk/jdk/src/share/native/sun/security/ec/impl/ecc_impl.h Tue Jan 26 22:26:26 2016 +0000
-+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
+diff -r 984a4af2ed4e src/share/native/sun/security/ec/impl/ecc_impl.h
+--- openjdk/jdk/src/share/native/sun/security/ec/impl/ecc_impl.h
++++ /dev/null
@@ -1,271 +0,0 @@
-/*
-- * Copyright (c) 2007, 2013, Oracle and/or its affiliates. All rights reserved.
+- * Copyright (c) 2007, 2017, Oracle and/or its affiliates. All rights reserved.
- * Use is subject to license terms.
- *
- * This library is free software; you can redistribute it and/or
@@ -441,7 +442,7 @@ diff -r afd392dfaed5 -r 48c15869ecd5 src/share/native/sun/security/ec/impl/ecc_i
- * Dr Vipul Gupta <vipul.gupta(a)sun.com> and
- * Douglas Stebila <douglas(a)stebila.ca>, Sun Microsystems Laboratories
- *
-- * Last Modified Date from the Original Code: November 2013
+- * Last Modified Date from the Original Code: May 2017
- *********************************************************************** */
-
-#ifndef _ECC_IMPL_H
@@ -665,7 +666,7 @@ diff -r afd392dfaed5 -r 48c15869ecd5 src/share/native/sun/security/ec/impl/ecc_i
- const unsigned char* random, int randomlen, int);
-/* This function has been modified to accept an array of random bytes */
-extern SECStatus ECDSA_SignDigest(ECPrivateKey *, SECItem *, const SECItem *,
-- const unsigned char* random, int randomlen, int);
+- const unsigned char* random, int randomlen, int, int timing);
-extern SECStatus ECDSA_VerifyDigest(ECPublicKey *, const SECItem *,
- const SECItem *, int);
-extern SECStatus ECDH_Derive(SECItem *, ECParams *, SECItem *, boolean_t,
@@ -676,9 +677,9 @@ diff -r afd392dfaed5 -r 48c15869ecd5 src/share/native/sun/security/ec/impl/ecc_i
-#endif
-
-#endif /* _ECC_IMPL_H */
-diff -r afd392dfaed5 -r 48c15869ecd5 src/solaris/javavm/export/jni_md.h
---- openjdk/jdk/src/solaris/javavm/export/jni_md.h Tue Jan 26 22:26:26 2016 +0000
-+++ openjdk/jdk/src/solaris/javavm/export/jni_md.h Wed Jan 27 02:54:06 2016 +0000
+diff -r 984a4af2ed4e src/solaris/javavm/export/jni_md.h
+--- openjdk/jdk/src/solaris/javavm/export/jni_md.h
++++ openjdk/jdk/src/solaris/javavm/export/jni_md.h
@@ -36,6 +36,11 @@
#define JNIEXPORT
#define JNIIMPORT
diff --git a/pr2899.patch b/pr2899.patch
index 58fb3c8..ffdefb0 100644
--- a/pr2899.patch
+++ b/pr2899.patch
@@ -6,18 +6,19 @@
# Parent 8957aff589013e671f02d38023d5ff245ef27e87
PR2899: Don't use WithSeed versions of NSS functions as they don't fully process the seed
Contributed-by: Alex Kashchenko <akashche(a)redhat.com>
+Updated 2017/07/04 to accomodate 8175110 by Andrew Hughes <gnu.andrew(a)redhat.com>
-diff -r 8957aff58901 -r 9dc0eca5fa89 src/share/native/sun/security/ec/ecc_impl.h
---- openjdk/jdk/src/share/native/sun/security/ec/ecc_impl.h Wed Mar 30 04:48:56 2016 +0100
-+++ openjdk/jdk/src/share/native/sun/security/ec/ecc_impl.h Wed Mar 30 05:54:40 2016 +0100
+diff -r e5fdbb82bd49 src/share/native/sun/security/ec/ecc_impl.h
+--- openjdk/jdk/src/share/native/sun/security/ec/ecc_impl.h
++++ openjdk/jdk/src/share/native/sun/security/ec/ecc_impl.h
@@ -267,8 +267,8 @@
#ifdef SYSTEM_NSS
#define EC_DecodeParams(a,b,c) EC_DecodeParams(a,b)
-#define EC_NewKey(a,b,c,d,e) EC_NewKeyFromSeed(a,b,c,d)
--#define ECDSA_SignDigest(a,b,c,d,e,f) ECDSA_SignDigestWithSeed(a,b,c,d,e)
+-#define ECDSA_SignDigest(a,b,c,d,e,f,g) ECDSA_SignDigestWithSeed(a,b,c,d,e)
+#define EC_NewKey(a,b,c,d,e) EC_NewKey(a,b)
-+#define ECDSA_SignDigest(a,b,c,d,e,f) ECDSA_SignDigest(a,b,c)
++#define ECDSA_SignDigest(a,b,c,d,e,f,g) ECDSA_SignDigest(a,b,c)
#define ECDSA_VerifyDigest(a,b,c,d) ECDSA_VerifyDigest(a,b,c)
#define ECDH_Derive(a,b,c,d,e,f) ECDH_Derive(a,b,c,d,e)
#else
diff --git a/pr2934.patch b/pr2934.patch
index 21e769d..83385da 100644
--- a/pr2934.patch
+++ b/pr2934.patch
@@ -6,10 +6,11 @@
# Parent 3fa42705acab6d69b6141f47ebba4f85739a338c
PR2934: SunEC provider throwing KeyException with current NSS
Summary: Initialise the random number generator and feed the seed to it.
+Updated 2017/07/04 to accomodate 8175110
-diff -r 3fa42705acab -r dab76de2f91c src/share/native/sun/security/ec/ECC_JNI.cpp
---- openjdk/jdk/src/share/native/sun/security/ec/ECC_JNI.cpp Wed Apr 20 03:39:11 2016 +0100
-+++ openjdk/jdk/src/share/native/sun/security/ec/ECC_JNI.cpp Fri Apr 22 19:17:13 2016 +0100
+diff -r 8aed1e903a4c src/share/native/sun/security/ec/ECC_JNI.cpp
+--- openjdk/jdk/src/share/native/sun/security/ec/ECC_JNI.cpp
++++ openjdk/jdk/src/share/native/sun/security/ec/ECC_JNI.cpp
@@ -134,8 +134,17 @@
env->GetByteArrayRegion(seed, 0, jSeedLength, pSeedBuffer);
@@ -42,7 +43,7 @@ diff -r 3fa42705acab -r dab76de2f91c src/share/native/sun/security/ec/ECC_JNI.cp
+ != SECSuccess) {
+#else
if (ECDSA_SignDigest(&privKey, &signature_item, &digest_item,
- (unsigned char *) pSeedBuffer, jSeedLength, 0) != SECSuccess) {
+ (unsigned char *) pSeedBuffer, jSeedLength, 0, timing) != SECSuccess) {
+#endif
ThrowException(env, KEY_EXCEPTION);
goto cleanup;
@@ -65,9 +66,9 @@ diff -r 3fa42705acab -r dab76de2f91c src/share/native/sun/security/ec/ECC_JNI.cp
if (SECOID_Shutdown() != SECSuccess) {
ThrowException(env, INTERNAL_ERROR);
}
-diff -r 3fa42705acab -r dab76de2f91c src/share/native/sun/security/ec/ecc_impl.h
---- openjdk/jdk/src/share/native/sun/security/ec/ecc_impl.h Wed Apr 20 03:39:11 2016 +0100
-+++ openjdk/jdk/src/share/native/sun/security/ec/ecc_impl.h Fri Apr 22 19:17:13 2016 +0100
+diff -r 8aed1e903a4c src/share/native/sun/security/ec/ecc_impl.h
+--- openjdk/jdk/src/share/native/sun/security/ec/ecc_impl.h
++++ openjdk/jdk/src/share/native/sun/security/ec/ecc_impl.h
@@ -254,8 +254,10 @@
This function is no longer required because the random bytes are now
supplied by the caller. Force a failure.
@@ -84,7 +85,7 @@ diff -r 3fa42705acab -r dab76de2f91c src/share/native/sun/security/ec/ecc_impl.h
#ifdef SYSTEM_NSS
#define EC_DecodeParams(a,b,c) EC_DecodeParams(a,b)
-#define EC_NewKey(a,b,c,d,e) EC_NewKey(a,b)
--#define ECDSA_SignDigest(a,b,c,d,e,f) ECDSA_SignDigest(a,b,c)
+-#define ECDSA_SignDigest(a,b,c,d,e,f,g) ECDSA_SignDigest(a,b,c)
#define ECDSA_VerifyDigest(a,b,c,d) ECDSA_VerifyDigest(a,b,c)
#define ECDH_Derive(a,b,c,d,e,f) ECDH_Derive(a,b,c,d,e)
#else
diff --git a/sources b/sources
index c232719..b8cfa8e 100644
--- a/sources
+++ b/sources
@@ -1,3 +1,3 @@
SHA512 (systemtap-tapset-3.4.0pre01.tar.xz) = 4446fa20f88bbce53b583484bf06cb2b476c9372beb898dc2b7739eaa5c98b9979fbd72e12474fb344833d831a19366b82216ee03b452411745e6cd3527faa4e
-SHA512 (aarch64-port-jdk8u-aarch64-jdk8u131-b12.tar.xz) = b7285cbadc787594664944ece1fab74aafd4f3437d75e494b900cdd5ce1d102c0cfa9d734b40c7f122ba8539f098e6dde19894ab15605f4a475138bf69143edf
-SHA512 (aarch64-port-jdk8u-shenandoah-aarch64-shenandoah-jdk8u131-b12-shenandoah-merge-2017-04-20.tar.xz) = 9450dca9445b5ed90de90905a1210388fc825caada0d4929ac9f2c81b3af066dfcbcb80a667cb4c1c644d3ac65678d6bc162f1f11c1cd44f9dbf682ca3ff95cd
+SHA512 (aarch64-port-jdk8u-aarch64-jdk8u141-b16.tar.xz) = 154cc4bebb9a0809f548f630b5d4fa45befe7e5cf784236540205f254913495157f99f63a5b2223487bbff4c430e60cc53b4aacd9e843309f657929b500b061d
+SHA512 (aarch64-port-jdk8u-shenandoah-aarch64-shenandoah-jdk8u141-b16.tar.xz) = b6bf3383fcd8fb44308eff3ba93a4a635851a4c30e91957c5771990523b0c7c1f7a2acc7ec0472e196c26633a5df7d7b592b933f55ec9cdda63b37a14395ef10
diff --git a/update_package.sh b/update_package.sh
index 2c51560..5168356 100755
--- a/update_package.sh
+++ b/update_package.sh
@@ -31,7 +31,7 @@ if [ "x$REPO_NAME" = "x" ] ; then
REPO_NAME="jdk8u"
fi
if [ "x$VERSION" = "x" ] ; then
- VERSION="aarch64-jdk8u131-b12"
+ VERSION="aarch64-jdk8u141-b16"
fi
if [ "x$COMPRESSION" = "x" ] ; then
@@ -109,7 +109,7 @@ if [ "x$VERSION" = "xtip" ] ; then
VERSION="tip"
else
#hardcoding version for anything else except tip
- VERSION="aarch64-shenandoah-jdk8u131-b12-shenandoah-merge-2017-04-20"
+ VERSION="aarch64-shenandoah-jdk8u141-b16"
fi
MAIN_REPO_NAME=$REPO_NAME
REPO_NAME=jdk8u-shenandoah
6 years, 8 months
Architecture specific change in rpms/ocaml.git
by githook-noreply@fedoraproject.org
The package rpms/ocaml.git has added or updated architecture specific content in its
spec file (ExclusiveArch/ExcludeArch or %ifarch/%ifnarch) in commit(s):
https://src.fedoraproject.org/cgit/rpms/ocaml.git/commit/?id=725d4a96c707....
Change:
+%ifnarch %{no_parallel_build_arches}
Thanks.
Full change:
============
commit 725d4a96c707d88488b322556ea93f6afb3f385b
Author: Richard W.M. Jones <rjones(a)redhat.com>
Date: Fri Jul 21 11:00:11 2017 +0100
Revert "New upstream version 4.05.0."
It's been decided to allow the Fedora 27 Mass Rebuild to take place
before OCaml 4.05.0 is added to Fedora. To avoid this package
accidentally getting included in the mass rebuild, this commit reverts
the new upstream version, and then it will be un-re-verted after the
Mass Rebuild.
This reverts commit 40c060b8ecd3606034e5ba7fd782a6ed631fef18.
diff --git a/.gitignore b/.gitignore
index 3c88958..3552a9e 100644
--- a/.gitignore
+++ b/.gitignore
@@ -6,4 +6,3 @@
/4.04.0+beta2.tar.gz
/ocaml-4.04.1.tar.xz
/ocaml-4.04.2.tar.xz
-/ocaml-4.05.0.tar.xz
diff --git a/0001-Don-t-add-rpaths-to-libraries.patch b/0001-Don-t-add-rpaths-to-libraries.patch
index 648d09b..4b2f713 100644
--- a/0001-Don-t-add-rpaths-to-libraries.patch
+++ b/0001-Don-t-add-rpaths-to-libraries.patch
@@ -1,17 +1,17 @@
-From d56e6c1562eb5052789f4e7272d5bd523c8c7b2f Mon Sep 17 00:00:00 2001
+From ff87e5c4252e5545e50fff0a2e7c10b813c02ec2 Mon Sep 17 00:00:00 2001
From: "Richard W.M. Jones" <rjones(a)redhat.com>
Date: Tue, 24 Jun 2014 10:00:15 +0100
-Subject: [PATCH 1/8] Don't add rpaths to libraries.
+Subject: [PATCH 1/9] Don't add rpaths to libraries.
---
- tools/Makefile | 6 +++---
+ tools/Makefile.shared | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
-diff --git a/tools/Makefile b/tools/Makefile
-index 9a8cf652b..269aa18e6 100644
---- a/tools/Makefile
-+++ b/tools/Makefile
-@@ -156,9 +156,9 @@ $(call byte_and_opt,ocamlmklib,ocamlmklibconfig.cmo config.cmo misc.cmo \
+diff --git a/tools/Makefile.shared b/tools/Makefile.shared
+index a873bdd98..ba263b88f 100644
+--- a/tools/Makefile.shared
++++ b/tools/Makefile.shared
+@@ -154,9 +154,9 @@ $(call byte_and_opt,ocamlmklib,ocamlmklibconfig.cmo config.cmo misc.cmo \
ocamlmklibconfig.ml: ../config/Makefile Makefile
(echo 'let bindir = "$(BINDIR)"'; \
echo 'let supports_shared_libraries = $(SUPPORTS_SHARED_LIBRARIES)';\
diff --git a/0002-ocamlbyteinfo-ocamlplugininfo-Useful-utilities-from-.patch b/0002-ocamlbyteinfo-ocamlplugininfo-Useful-utilities-from-.patch
index 2ad33fc..367c9d7 100644
--- a/0002-ocamlbyteinfo-ocamlplugininfo-Useful-utilities-from-.patch
+++ b/0002-ocamlbyteinfo-ocamlplugininfo-Useful-utilities-from-.patch
@@ -1,7 +1,7 @@
-From 8037f8f3e5679275ac78e6f5f96602616efb7eb4 Mon Sep 17 00:00:00 2001
+From c047077c1c8a2acdc1d9bfe502c1a9b910ac3b9d Mon Sep 17 00:00:00 2001
From: "Richard W.M. Jones" <rjones(a)redhat.com>
Date: Tue, 29 May 2012 20:40:36 +0100
-Subject: [PATCH 2/8] ocamlbyteinfo, ocamlplugininfo: Useful utilities from
+Subject: [PATCH 2/9] ocamlbyteinfo, ocamlplugininfo: Useful utilities from
Debian, sent upstream.
See:
diff --git a/0003-configure-Allow-user-defined-C-compiler-flags.patch b/0003-configure-Allow-user-defined-C-compiler-flags.patch
index 6edcec3..f1f5b30 100644
--- a/0003-configure-Allow-user-defined-C-compiler-flags.patch
+++ b/0003-configure-Allow-user-defined-C-compiler-flags.patch
@@ -1,17 +1,17 @@
-From 24ba1a8796c191f2e38c0dffa130c324c69c8dff Mon Sep 17 00:00:00 2001
+From 77475cec6718b9f15bc6e8e5c7e6edb936b93cd2 Mon Sep 17 00:00:00 2001
From: "Richard W.M. Jones" <rjones(a)redhat.com>
Date: Tue, 29 May 2012 20:44:18 +0100
-Subject: [PATCH 3/8] configure: Allow user defined C compiler flags.
+Subject: [PATCH 3/9] configure: Allow user defined C compiler flags.
---
configure | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/configure b/configure
-index e79659954..786f4cdbe 100755
+index 3b2636035..d53d90367 100755
--- a/configure
+++ b/configure
-@@ -2002,6 +2002,10 @@ if $with_fpic; then
+@@ -1912,6 +1912,10 @@ if $with_fpic; then
echo "#define CAML_WITH_FPIC" >> m.h
fi
diff --git a/0004-Adapt-config.guess-for-RISC-V.patch b/0004-Adapt-config.guess-for-RISC-V.patch
deleted file mode 100644
index 97181cd..0000000
--- a/0004-Adapt-config.guess-for-RISC-V.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-From d5a3ec5286c9b467ff1c896313b40c1b0d9ec802 Mon Sep 17 00:00:00 2001
-From: Nicolas Ojeda Bar <n.oje.bar(a)gmail.com>
-Date: Tue, 8 Nov 2016 23:56:50 +0100
-Subject: [PATCH 4/8] Adapt config.guess for RISC-V
-
----
- config/gnu/config.guess | 5 ++++-
- 1 file changed, 4 insertions(+), 1 deletion(-)
-
-diff --git a/config/gnu/config.guess b/config/gnu/config.guess
-index b79252d6b..8335398b2 100755
---- a/config/gnu/config.guess
-+++ b/config/gnu/config.guess
-@@ -2,7 +2,7 @@
- # Attempt to guess a canonical system name.
- # Copyright 1992-2013 Free Software Foundation, Inc.
-
--timestamp='2013-06-10'
-+timestamp='2016-10-23'
-
- # This file is free software; you can redistribute it and/or modify it
- # under the terms of the GNU General Public License as published by
-@@ -1001,6 +1001,9 @@ EOF
- ppcle:Linux:*:*)
- echo powerpcle-unknown-linux-${LIBC}
- exit ;;
-+ riscv*:Linux:*:*)
-+ echo ${UNAME_MACHINE}-unknown-linux
-+ exit ;;
- s390:Linux:*:* | s390x:Linux:*:*)
- echo ${UNAME_MACHINE}-ibm-linux-${LIBC}
- exit ;;
---
-2.13.1
-
diff --git a/0004-Don-t-rewrite-Werror.patch b/0004-Don-t-rewrite-Werror.patch
new file mode 100644
index 0000000..ffbe70f
--- /dev/null
+++ b/0004-Don-t-rewrite-Werror.patch
@@ -0,0 +1,28 @@
+From 5376164719c12fbad2321551425b3c46ec794817 Mon Sep 17 00:00:00 2001
+From: "Richard W.M. Jones" <rjones(a)redhat.com>
+Date: Thu, 3 Nov 2016 19:50:20 +0000
+Subject: [PATCH 4/9] Don't rewrite -Werror.
+
+In Fedora our CFLAGS contains -Wall -Werror=format-security.
+
+As written, the sed phrase substitutes this with -Wall=format-security
+which is bogus. Remove this rewriting completely.
+---
+ Makefile | 1 -
+ 1 file changed, 1 deletion(-)
+
+diff --git a/Makefile b/Makefile
+index b30564d00..e8514d41e 100644
+--- a/Makefile
++++ b/Makefile
+@@ -409,7 +409,6 @@ utils/config.ml: utils/config.mlp config/Makefile
+ -e 's|%%CCOMPTYPE%%|cc|' \
+ -e 's|%%BYTECC%%|$(BYTECC) $(BYTECCCOMPOPTS) $(SHAREDCCCOMPOPTS)|' \
+ -e 's|%%NATIVECC%%|$(NATIVECC) $(NATIVECCCOMPOPTS)|' \
+- -e '/c_compiler =/s| -Werror||' \
+ -e 's|%%PACKLD%%|$(PACKLD)|' \
+ -e 's|%%BYTECCLIBS%%|$(BYTECCLIBS)|' \
+ -e 's|%%NATIVECCLIBS%%|$(NATIVECCLIBS)|' \
+--
+2.13.1
+
diff --git a/0005-Adapt-config.guess-for-RISC-V.patch b/0005-Adapt-config.guess-for-RISC-V.patch
new file mode 100644
index 0000000..b3f4d7c
--- /dev/null
+++ b/0005-Adapt-config.guess-for-RISC-V.patch
@@ -0,0 +1,35 @@
+From 8860338049b0a43377c2ea7fa05a47766b3b21aa Mon Sep 17 00:00:00 2001
+From: Nicolas Ojeda Bar <n.oje.bar(a)gmail.com>
+Date: Tue, 8 Nov 2016 23:56:50 +0100
+Subject: [PATCH 5/9] Adapt config.guess for RISC-V
+
+---
+ config/gnu/config.guess | 5 ++++-
+ 1 file changed, 4 insertions(+), 1 deletion(-)
+
+diff --git a/config/gnu/config.guess b/config/gnu/config.guess
+index b79252d6b..8335398b2 100755
+--- a/config/gnu/config.guess
++++ b/config/gnu/config.guess
+@@ -2,7 +2,7 @@
+ # Attempt to guess a canonical system name.
+ # Copyright 1992-2013 Free Software Foundation, Inc.
+
+-timestamp='2013-06-10'
++timestamp='2016-10-23'
+
+ # This file is free software; you can redistribute it and/or modify it
+ # under the terms of the GNU General Public License as published by
+@@ -1001,6 +1001,9 @@ EOF
+ ppcle:Linux:*:*)
+ echo powerpcle-unknown-linux-${LIBC}
+ exit ;;
++ riscv*:Linux:*:*)
++ echo ${UNAME_MACHINE}-unknown-linux
++ exit ;;
+ s390:Linux:*:* | s390x:Linux:*:*)
+ echo ${UNAME_MACHINE}-ibm-linux-${LIBC}
+ exit ;;
+--
+2.13.1
+
diff --git a/0005-Add-RISC-V-backend-runtime.patch b/0005-Add-RISC-V-backend-runtime.patch
deleted file mode 100644
index be108c1..0000000
--- a/0005-Add-RISC-V-backend-runtime.patch
+++ /dev/null
@@ -1,1717 +0,0 @@
-From 75da776601959f2f05288d27660c09fe86bbafcf Mon Sep 17 00:00:00 2001
-From: Nicolas Ojeda Bar <n.oje.bar(a)gmail.com>
-Date: Fri, 4 Nov 2016 20:39:09 +0100
-Subject: [PATCH 5/8] Add RISC-V backend & runtime
-
----
- README.adoc | 1 +
- asmcomp/riscv/CSE.ml | 36 +++
- asmcomp/riscv/arch.ml | 84 ++++++
- asmcomp/riscv/emit.mlp | 616 ++++++++++++++++++++++++++++++++++++++++++++
- asmcomp/riscv/proc.ml | 301 ++++++++++++++++++++++
- asmcomp/riscv/reload.ml | 16 ++
- asmcomp/riscv/scheduling.ml | 19 ++
- asmcomp/riscv/selection.ml | 85 ++++++
- asmrun/riscv.S | 424 ++++++++++++++++++++++++++++++
- byterun/caml/stack.h | 5 +
- configure | 5 +-
- 11 files changed, 1591 insertions(+), 1 deletion(-)
- create mode 100644 asmcomp/riscv/CSE.ml
- create mode 100644 asmcomp/riscv/arch.ml
- create mode 100644 asmcomp/riscv/emit.mlp
- create mode 100644 asmcomp/riscv/proc.ml
- create mode 100644 asmcomp/riscv/reload.ml
- create mode 100644 asmcomp/riscv/scheduling.ml
- create mode 100644 asmcomp/riscv/selection.ml
- create mode 100644 asmrun/riscv.S
-
-diff --git a/README.adoc b/README.adoc
-index fe07edbba..f7d13bc06 100644
---- a/README.adoc
-+++ b/README.adoc
-@@ -34,6 +34,7 @@ IA32 (Pentium):: NetBSD, OpenBSD, Solaris 9
- PowerPC:: NetBSD
- ARM:: NetBSD
- SPARC:: Solaris, Linux, NetBSD
-+RISC-V:: Linux
-
- Other operating systems for the processors above have not been tested, but
- the compiler may work under other operating systems with little work.
-diff --git a/asmcomp/riscv/CSE.ml b/asmcomp/riscv/CSE.ml
-new file mode 100644
-index 000000000..302811a99
---- /dev/null
-+++ b/asmcomp/riscv/CSE.ml
-@@ -0,0 +1,36 @@
-+(***********************************************************************)
-+(* *)
-+(* OCaml *)
-+(* *)
-+(* Nicolas Ojeda Bar <n.oje.bar(a)gmail.com> *)
-+(* *)
-+(* Copyright 2106 Institut National de Recherche en Informatique et *)
-+(* en Automatique. All rights reserved. This file is distributed *)
-+(* under the terms of the Q Public License version 1.0. *)
-+(* *)
-+(***********************************************************************)
-+
-+(* CSE for the RISC-V *)
-+
-+open Arch
-+open Mach
-+open CSEgen
-+
-+class cse = object (_self)
-+
-+inherit cse_generic as super
-+
-+method! class_of_operation op =
-+ match op with
-+ | Ispecific(Imultaddf _ | Imultsubf _) -> Op_pure
-+ | _ -> super#class_of_operation op
-+
-+method! is_cheap_operation op =
-+ match op with
-+ | Iconst_int n -> n <= 0x7FFn && n >= -0x800n
-+ | _ -> false
-+
-+end
-+
-+let fundecl f =
-+ (new cse)#fundecl f
-diff --git a/asmcomp/riscv/arch.ml b/asmcomp/riscv/arch.ml
-new file mode 100644
-index 000000000..61a38b1dd
---- /dev/null
-+++ b/asmcomp/riscv/arch.ml
-@@ -0,0 +1,84 @@
-+(***********************************************************************)
-+(* *)
-+(* OCaml *)
-+(* *)
-+(* Nicolas Ojeda Bar <n.oje.bar(a)gmail.com> *)
-+(* *)
-+(* Copyright 2016 Institut National de Recherche en Informatique et *)
-+(* en Automatique. All rights reserved. This file is distributed *)
-+(* under the terms of the Q Public License version 1.0. *)
-+(* *)
-+(***********************************************************************)
-+
-+(* Specific operations for the RISC-V processor *)
-+
-+open Format
-+
-+(* Machine-specific command-line options *)
-+
-+let command_line_options = []
-+
-+(* Specific operations *)
-+
-+type specific_operation =
-+ | Imultaddf of bool (* multiply, optionally negate, and add *)
-+ | Imultsubf of bool (* multiply, optionally negate, and subtract *)
-+
-+let spacetime_node_hole_pointer_is_live_before = function
-+ | Imultaddf _ | Imultsubf _ -> false
-+
-+(* Addressing modes *)
-+
-+type addressing_mode =
-+ | Iindexed of int (* reg + displ *)
-+
-+(* Sizes, endianness *)
-+
-+let big_endian = false
-+
-+let rv64 =
-+ match Config.model with "riscv64" -> true | "riscv32" -> false | _ -> assert false
-+
-+let size_addr = if rv64 then 8 else 4
-+let size_int = size_addr
-+let size_float = 8
-+
-+let allow_unaligned_access = false
-+
-+(* Behavior of division *)
-+
-+let division_crashes_on_overflow = false
-+
-+(* Operations on addressing modes *)
-+
-+let identity_addressing = Iindexed 0
-+
-+let offset_addressing addr delta =
-+ match addr with
-+ | Iindexed n -> Iindexed(n + delta)
-+
-+let num_args_addressing = function
-+ | Iindexed _ -> 1
-+
-+(* Printing operations and addressing modes *)
-+
-+let print_addressing printreg addr ppf arg =
-+ match addr with
-+ | Iindexed n ->
-+ let idx = if n <> 0 then Printf.sprintf " + %i" n else "" in
-+ fprintf ppf "%a%s" printreg arg.(0) idx
-+
-+let print_specific_operation printreg op ppf arg =
-+ match op with
-+ | Imultaddf false ->
-+ fprintf ppf "%a *f %a +f %a"
-+ printreg arg.(0) printreg arg.(1) printreg arg.(2)
-+ | Imultaddf true ->
-+ fprintf ppf "-f (%a *f %a +f %a)"
-+ printreg arg.(0) printreg arg.(1) printreg arg.(2)
-+ | Imultsubf false ->
-+ fprintf ppf "%a *f %a -f %a"
-+ printreg arg.(0) printreg arg.(1) printreg arg.(2)
-+ | Imultsubf true ->
-+ fprintf ppf "-f (%a *f %a -f %a)"
-+ printreg arg.(0) printreg arg.(1) printreg arg.(2)
-diff --git a/asmcomp/riscv/emit.mlp b/asmcomp/riscv/emit.mlp
-new file mode 100644
-index 000000000..6d0e3aefd
---- /dev/null
-+++ b/asmcomp/riscv/emit.mlp
-@@ -0,0 +1,616 @@
-+(***********************************************************************)
-+(* *)
-+(* OCaml *)
-+(* *)
-+(* Nicolas Ojeda Bar <n.oje.bar(a)gmail.com> *)
-+(* *)
-+(* Copyright 2016 Institut National de Recherche en Informatique et *)
-+(* en Automatique. All rights reserved. This file is distributed *)
-+(* under the terms of the Q Public License version 1.0. *)
-+(* *)
-+(***********************************************************************)
-+
-+(* Emission of RISC-V assembly code *)
-+
-+open Misc
-+open Cmm
-+open Arch
-+open Proc
-+open Reg
-+open Mach
-+open Linearize
-+open Emitaux
-+
-+(* Layout of the stack. The stack is kept 16-aligned. *)
-+
-+let stack_offset = ref 0
-+
-+let frame_size () =
-+ let size =
-+ !stack_offset + (* Trap frame, outgoing parameters *)
-+ size_int * num_stack_slots.(0) + (* Local int variables *)
-+ size_float * num_stack_slots.(1) + (* Local float variables *)
-+ (if !contains_calls then size_addr else 0) in (* The return address *)
-+ Misc.align size 16
-+
-+let slot_offset loc cls =
-+ match loc with
-+ | Local n ->
-+ if cls = 0
-+ then !stack_offset + num_stack_slots.(1) * size_float + n * size_int
-+ else !stack_offset + n * size_float
-+ | Incoming n -> frame_size() + n
-+ | Outgoing n -> n
-+
-+(* Output a symbol *)
-+
-+let emit_symbol s =
-+ Emitaux.emit_symbol '.' s
-+
-+(* Output a label *)
-+
-+let label_prefix = "L"
-+
-+let emit_label lbl =
-+ emit_string label_prefix; emit_int lbl
-+
-+(* Section switching *)
-+
-+let data_space =
-+ ".section .data"
-+
-+let code_space =
-+ ".section .text"
-+
-+let rodata_space =
-+ ".section .rodata"
-+
-+let reg_tmp1 = phys_reg 21 (* used by the assembler *)
-+let reg_tmp2 = phys_reg 22
-+let reg_t2 = phys_reg 16
-+(* let reg_fp = phys_reg 23 *)
-+let reg_trap = phys_reg 24
-+let reg_alloc_ptr = phys_reg 25
-+let reg_alloc_lim = phys_reg 26
-+
-+(* Names of instructions that differ in 32 and 64-bit modes *)
-+
-+let lg = if rv64 then "ld" else "lw"
-+let stg = if rv64 then "sd" else "sw"
-+let datag = if rv64 then ".quad" else ".long"
-+
-+(* Output a pseudo-register *)
-+
-+let emit_reg = function
-+ | {loc = Reg r} -> emit_string (register_name r)
-+ | _ -> fatal_error "Emit.emit_reg"
-+
-+(* Output a stack reference *)
-+
-+let emit_stack r =
-+ match r.loc with
-+ Stack s ->
-+ let ofs = slot_offset s (register_class r) in `{emit_int ofs}(sp)`
-+ | _ -> fatal_error "Emit.emit_stack"
-+
-+(* Record live pointers at call points *)
-+
-+let record_frame_label ?label live raise_ dbg =
-+ let lbl =
-+ match label with
-+ | None -> new_label()
-+ | Some label -> label
-+ in
-+ let live_offset = ref [] in
-+ Reg.Set.iter
-+ (function
-+ {typ = Val; loc = Reg r} ->
-+ live_offset := (r lsl 1) + 1 :: !live_offset
-+ | {typ = Val; loc = Stack s} as reg ->
-+ live_offset := slot_offset s (register_class reg) :: !live_offset
-+ | {typ = Addr} as r ->
-+ Misc.fatal_error ("bad GC root " ^ Reg.name r)
-+ | _ -> ()
-+ )
-+ live;
-+ frame_descriptors :=
-+ { fd_lbl = lbl;
-+ fd_frame_size = frame_size();
-+ fd_live_offset = !live_offset;
-+ fd_raise = raise_;
-+ fd_debuginfo = dbg } :: !frame_descriptors;
-+ lbl
-+
-+let record_frame ?label live raise_ dbg =
-+ let lbl = record_frame_label ?label live raise_ dbg in
-+ `{emit_label lbl}:\n`
-+
-+(* Record calls to the GC -- we've moved them out of the way *)
-+
-+type gc_call =
-+ { gc_lbl: label; (* Entry label *)
-+ gc_return_lbl: label; (* Where to branch after GC *)
-+ gc_frame_lbl: label } (* Label of frame descriptor *)
-+
-+let call_gc_sites = ref ([] : gc_call list)
-+
-+let emit_call_gc gc =
-+ `{emit_label gc.gc_lbl}:\n`;
-+ ` call {emit_symbol "caml_call_gc"}\n`;
-+ `{emit_label gc.gc_frame_lbl}:\n`;
-+ ` j {emit_label gc.gc_return_lbl}\n`
-+
-+(* Record calls to caml_ml_array_bound_error.
-+ In debug mode, we maintain one call to caml_ml_array_bound_error
-+ per bound check site. Otherwise, we can share a single call. *)
-+
-+type bound_error_call =
-+ { bd_lbl: label; (* Entry label *)
-+ bd_frame_lbl: label } (* Label of frame descriptor *)
-+
-+let bound_error_sites = ref ([] : bound_error_call list)
-+
-+let bound_error_label ?label dbg =
-+ if !Clflags.debug || !bound_error_sites = [] then begin
-+ let lbl_bound_error = new_label() in
-+ let lbl_frame = record_frame_label ?label Reg.Set.empty false dbg in
-+ bound_error_sites :=
-+ { bd_lbl = lbl_bound_error;
-+ bd_frame_lbl = lbl_frame } :: !bound_error_sites;
-+ lbl_bound_error
-+ end else
-+ let bd = List.hd !bound_error_sites in
-+ bd.bd_lbl
-+
-+let emit_call_bound_error bd =
-+ `{emit_label bd.bd_lbl}:\n`;
-+ ` call {emit_symbol "caml_ml_array_bound_error"}\n`;
-+ `{emit_label bd.bd_frame_lbl}:\n`
-+
-+(* Record floating-point literals *)
-+
-+let float_literals = ref ([] : (int64 * int) list)
-+
-+(* Names for various instructions *)
-+
-+let name_for_intop = function
-+ | Iadd -> "add"
-+ | Isub -> "sub"
-+ | Imul -> "mul"
-+ | Imulh -> "mulh"
-+ | Idiv -> "div"
-+ | Iand -> "and"
-+ | Ior -> "or"
-+ | Ixor -> "xor"
-+ | Ilsl -> "sll"
-+ | Ilsr -> "srl"
-+ | Iasr -> "sra"
-+ | Imod -> "rem"
-+ | _ -> fatal_error "Emit.Intop"
-+
-+let name_for_intop_imm = function
-+ | Iadd -> "addi"
-+ | Iand -> "andi"
-+ | Ior -> "ori"
-+ | Ixor -> "xori"
-+ | Ilsl -> "slli"
-+ | Ilsr -> "srli"
-+ | Iasr -> "srai"
-+ | _ -> fatal_error "Emit.Intop_imm"
-+
-+let name_for_floatop1 = function
-+ | Inegf -> "fneg.d"
-+ | Iabsf -> "fabs.d"
-+ | _ -> fatal_error "Emit.Iopf1"
-+
-+let name_for_floatop2 = function
-+ | Iaddf -> "fadd.d"
-+ | Isubf -> "fsub.d"
-+ | Imulf -> "fmul.d"
-+ | Idivf -> "fdiv.d"
-+ | _ -> fatal_error "Emit.Iopf2"
-+
-+let name_for_specific = function
-+ | Imultaddf false -> "fmadd.d"
-+ | Imultaddf true -> "fnmadd.d"
-+ | Imultsubf false -> "fmsub.d"
-+ | Imultsubf true -> "fnmsub.d"
-+
-+(* Name of current function *)
-+let function_name = ref ""
-+(* Entry point for tail recursive calls *)
-+let tailrec_entry_point = ref 0
-+
-+(* Output the assembly code for an instruction *)
-+
-+let emit_instr i =
-+ match i.desc with
-+ Lend -> ()
-+ | Lop(Imove | Ispill | Ireload) ->
-+ let src = i.arg.(0) and dst = i.res.(0) in
-+ if src.loc <> dst.loc then begin
-+ match (src, dst) with
-+ | {loc = Reg _; typ = (Val | Int | Addr)}, {loc = Reg _} ->
-+ ` mv {emit_reg dst}, {emit_reg src}\n`
-+ | {loc = Reg _; typ = Float}, {loc = Reg _; typ = Float} ->
-+ ` fmv.d {emit_reg dst}, {emit_reg src}\n`
-+ | {loc = Reg _; typ = (Val | Int | Addr)}, {loc = Stack _} ->
-+ ` {emit_string stg} {emit_reg src}, {emit_stack dst}\n`
-+ | {loc = Reg _; typ = Float}, {loc = Stack _} ->
-+ ` fsd {emit_reg src}, {emit_stack dst}\n`
-+ | {loc = Stack _; typ = (Val | Int | Addr)}, {loc = Reg _ } ->
-+ ` {emit_string lg} {emit_reg dst}, {emit_stack src}\n`
-+ | {loc = Stack _; typ = Float}, {loc = Reg _} ->
-+ ` fld {emit_reg dst}, {emit_stack src}\n`
-+ | _ ->
-+ fatal_error "Emit: Imove"
-+ end
-+ | Lop(Iconst_int n) ->
-+ ` li {emit_reg i.res.(0)}, {emit_nativeint n}\n`
-+ | Lop(Iconst_float f) ->
-+ let lbl = new_label() in
-+ float_literals := (f, lbl) :: !float_literals;
-+ ` fld {emit_reg i.res.(0)}, {emit_label lbl}, {emit_reg reg_tmp1}\n`
-+ | Lop(Iconst_symbol s) ->
-+ ` la {emit_reg i.res.(0)}, {emit_symbol s}\n`
-+ | Lop(Icall_ind {label_after = label}) ->
-+ ` jalr {emit_reg i.arg.(0)}\n`;
-+ record_frame ~label i.live false i.dbg
-+ | Lop(Icall_imm {func; label_after = label}) ->
-+ ` call {emit_symbol func}\n`;
-+ record_frame ~label i.live false i.dbg
-+ | Lop(Itailcall_ind {label_after = _}) ->
-+ let n = frame_size() in
-+ if !contains_calls then
-+ ` {emit_string lg} ra, {emit_int(n - size_addr)}(sp)\n`;
-+ if n > 0 then
-+ ` addi sp, sp, {emit_int n}\n`;
-+ ` jr {emit_reg i.arg.(0)}\n`
-+ | Lop(Itailcall_imm {func; label_after = _}) ->
-+ if func = !function_name then begin
-+ ` j {emit_label !tailrec_entry_point}\n`
-+ end else begin
-+ let n = frame_size() in
-+ if !contains_calls then
-+ ` {emit_string lg} ra, {emit_int(n - size_addr)}(sp)\n`;
-+ if n > 0 then
-+ ` addi sp, sp, {emit_int n}\n`;
-+ ` tail {emit_symbol func}\n`
-+ end
-+ | Lop(Iextcall{func; alloc = true; label_after = label}) ->
-+ ` la {emit_reg reg_t2}, {emit_symbol func}\n`;
-+ ` call {emit_symbol "caml_c_call"}\n`;
-+ record_frame ~label i.live false i.dbg
-+ | Lop(Iextcall{func; alloc = false; label_after = _}) ->
-+ ` call {emit_symbol func}\n`
-+ | Lop(Istackoffset n) ->
-+ assert (n mod 16 = 0);
-+ ` addi sp, sp, {emit_int (-n)}\n`;
-+ stack_offset := !stack_offset + n
-+ | Lop(Iload(Single, Iindexed ofs)) ->
-+ ` flw {emit_reg i.res.(0)}, {emit_int ofs}({emit_reg i.arg.(0)})\n`;
-+ ` fcvt.d.s {emit_reg i.res.(0)}, {emit_reg i.res.(0)}\n`
-+ | Lop(Iload(chunk, Iindexed ofs)) ->
-+ let instr =
-+ match chunk with
-+ | Byte_unsigned -> "lbu"
-+ | Byte_signed -> "lb"
-+ | Sixteen_unsigned -> "lhu"
-+ | Sixteen_signed -> "lh"
-+ | Thirtytwo_unsigned -> if rv64 then "lwu" else "lw"
-+ | Thirtytwo_signed -> "lw"
-+ | Word_int | Word_val -> lg
-+ | Single -> assert false
-+ | Double | Double_u -> "fld"
-+ in
-+ ` {emit_string instr} {emit_reg i.res.(0)}, {emit_int ofs}({emit_reg i.arg.(0)})\n`
-+ | Lop(Istore(Single, Iindexed ofs, _)) ->
-+ ` fmv.x.d {emit_reg reg_tmp1}, {emit_reg i.arg.(0)}\n`;
-+ ` fcvt.s.d {emit_reg i.arg.(0)}, {emit_reg i.arg.(0)}\n`;
-+ ` fsw {emit_reg i.arg.(0)}, {emit_int ofs}({emit_reg i.arg.(1)})\n`;
-+ ` fmv.d.x {emit_reg i.arg.(0)}, {emit_reg reg_tmp1}\n`
-+ | Lop(Istore(chunk, Iindexed ofs, _)) ->
-+ let instr =
-+ match chunk with
-+ | Byte_unsigned | Byte_signed -> "sb"
-+ | Sixteen_unsigned | Sixteen_signed -> "sh"
-+ | Thirtytwo_unsigned | Thirtytwo_signed -> "sw"
-+ | Word_int | Word_val -> stg
-+ | Single -> assert false
-+ | Double | Double_u -> "fsd"
-+ in
-+ ` {emit_string instr} {emit_reg i.arg.(0)}, {emit_int ofs}({emit_reg i.arg.(1)})\n`
-+ | Lop(Ialloc {words = n; label_after_call_gc = label; _}) ->
-+ let lbl_frame_lbl = record_frame_label ?label i.live false i.dbg in
-+ let lbl_redo = new_label () in
-+ let lbl_call_gc = new_label () in
-+ `{emit_label lbl_redo}:\n`;
-+ ` addi {emit_reg reg_alloc_ptr}, {emit_reg reg_alloc_ptr}, -{emit_int n}\n`;
-+ ` addi {emit_reg i.res.(0)}, {emit_reg reg_alloc_ptr}, {emit_int size_addr}\n`;
-+ ` bltu {emit_reg reg_alloc_ptr}, {emit_reg reg_alloc_lim}, {emit_label lbl_call_gc}\n`;
-+ call_gc_sites :=
-+ { gc_lbl = lbl_call_gc;
-+ gc_return_lbl = lbl_redo;
-+ gc_frame_lbl = lbl_frame_lbl } :: !call_gc_sites
-+ | Lop(Iintop(Icomp cmp)) ->
-+ begin match cmp with
-+ | Isigned Clt ->
-+ ` slt {emit_reg i.res.(0)}, {emit_reg i.arg.(0)}, {emit_reg i.arg.(1)}\n`
-+ | Isigned Cge ->
-+ ` slt {emit_reg i.res.(0)}, {emit_reg i.arg.(0)}, {emit_reg i.arg.(1)}\n`;
-+ ` xori {emit_reg i.res.(0)}, {emit_reg i.res.(0)}, 1\n`;
-+ | Isigned Cgt ->
-+ ` slt {emit_reg i.res.(0)}, {emit_reg i.arg.(1)}, {emit_reg i.arg.(0)}\n`
-+ | Isigned Cle ->
-+ ` slt {emit_reg i.res.(0)}, {emit_reg i.arg.(1)}, {emit_reg i.arg.(0)}\n`;
-+ ` xori {emit_reg i.res.(0)}, {emit_reg i.res.(0)}, 1\n`;
-+ | Isigned Ceq | Iunsigned Ceq ->
-+ ` sub {emit_reg i.res.(0)}, {emit_reg i.arg.(0)}, {emit_reg i.arg.(1)}\n`;
-+ ` seqz {emit_reg i.res.(0)}, {emit_reg i.res.(0)}\n`
-+ | Isigned Cne | Iunsigned Cne ->
-+ ` sub {emit_reg i.res.(0)}, {emit_reg i.arg.(0)}, {emit_reg i.arg.(1)}\n`;
-+ ` snez {emit_reg i.res.(0)}, {emit_reg i.res.(0)}\n`
-+ | Iunsigned Clt ->
-+ ` sltu {emit_reg i.res.(0)}, {emit_reg i.arg.(0)}, {emit_reg i.arg.(1)}\n`
-+ | Iunsigned Cge ->
-+ ` sltu {emit_reg i.res.(0)}, {emit_reg i.arg.(0)}, {emit_reg i.arg.(1)}\n`;
-+ ` xori {emit_reg i.res.(0)}, {emit_reg i.res.(0)}, 1\n`;
-+ | Iunsigned Cgt ->
-+ ` sltu {emit_reg i.res.(0)}, {emit_reg i.arg.(1)}, {emit_reg i.arg.(0)}\n`
-+ | Iunsigned Cle ->
-+ ` sltu {emit_reg i.res.(0)}, {emit_reg i.arg.(1)}, {emit_reg i.arg.(0)}\n`;
-+ ` xori {emit_reg i.res.(0)}, {emit_reg i.res.(0)}, 1\n`;
-+ end
-+ | Lop(Iintop (Icheckbound {label_after_error = label; _})) ->
-+ let lbl = bound_error_label ?label i.dbg in
-+ ` bleu {emit_reg i.arg.(0)}, {emit_reg i.arg.(1)}, {emit_label lbl}\n`
-+ | Lop(Iintop op) ->
-+ let instr = name_for_intop op in
-+ ` {emit_string instr} {emit_reg i.res.(0)}, {emit_reg i.arg.(0)}, {emit_reg i.arg.(1)}\n`
-+ | Lop(Iintop_imm(Isub, n)) ->
-+ ` addi {emit_reg i.res.(0)}, {emit_reg i.arg.(0)}, {emit_int(-n)}\n`
-+ | Lop(Iintop_imm(Icomp _, _)) ->
-+ fatal_error "Emit.emit_instr (Iintop_imm (Icomp _, _))"
-+ | Lop(Iintop_imm(Icheckbound {label_after_error = label; _}, n)) ->
-+ let lbl = bound_error_label ?label i.dbg in
-+ ` li {emit_reg reg_tmp1}, {emit_int n}\n`;
-+ ` bleu {emit_reg i.arg.(0)}, {emit_reg reg_tmp1}, {emit_label lbl}\n`
-+ | Lop(Iintop_imm(op, n)) ->
-+ let instr = name_for_intop_imm op in
-+ ` {emit_string instr} {emit_reg i.res.(0)}, {emit_reg i.arg.(0)}, {emit_int n}\n`
-+ | Lop(Inegf | Iabsf as op) ->
-+ let instr = name_for_floatop1 op in
-+ ` {emit_string instr} {emit_reg i.res.(0)}, {emit_reg i.arg.(0)}\n`
-+ | Lop(Iaddf | Isubf | Imulf | Idivf as op) ->
-+ let instr = name_for_floatop2 op in
-+ ` {emit_string instr} {emit_reg i.res.(0)}, {emit_reg i.arg.(0)}, {emit_reg i.arg.(1)}\n`
-+ | Lop(Ifloatofint) ->
-+ let name = if rv64 then "fcvt.d.l" else "fcvt.d.w" in
-+ ` {emit_string name} {emit_reg i.res.(0)}, {emit_reg i.arg.(0)}\n`
-+ | Lop(Iintoffloat) ->
-+ let name = if rv64 then "fcvt.l.d" else "fcvt.w.d" in
-+ ` {emit_string name} {emit_reg i.res.(0)}, {emit_reg i.arg.(0)}\n`
-+ | Lop(Ispecific sop) ->
-+ let instr = name_for_specific sop in
-+ ` {emit_string instr} {emit_reg i.res.(0)}, {emit_reg i.arg.(0)}, {emit_reg i.arg.(1)}, {emit_reg i.arg.(2)}\n`
-+ | Lreloadretaddr ->
-+ let n = frame_size () in
-+ ` {emit_string lg} ra, {emit_int(n - size_addr)}(sp)\n`
-+ | Lreturn ->
-+ let n = frame_size() in
-+ if n > 0 then
-+ ` addi sp, sp, {emit_int n}\n`;
-+ ` ret\n`
-+ | Llabel lbl ->
-+ `{emit_label lbl}:\n`
-+ | Lbranch lbl ->
-+ ` j {emit_label lbl}\n`
-+ | Lcondbranch(tst, lbl) ->
-+ begin match tst with
-+ | Itruetest ->
-+ ` bnez {emit_reg i.arg.(0)}, {emit_label lbl}\n`
-+ | Ifalsetest ->
-+ ` beqz {emit_reg i.arg.(0)}, {emit_label lbl}\n`
-+ | Iinttest cmp ->
-+ let name = match cmp with
-+ | Iunsigned Ceq | Isigned Ceq -> "beq"
-+ | Iunsigned Cne | Isigned Cne -> "bne"
-+ | Iunsigned Cle -> "bleu" | Isigned Cle -> "ble"
-+ | Iunsigned Cge -> "bgeu" | Isigned Cge -> "bge"
-+ | Iunsigned Clt -> "bltu" | Isigned Clt -> "blt"
-+ | Iunsigned Cgt -> "bgtu" | Isigned Cgt -> "bgt"
-+ in
-+ ` {emit_string name} {emit_reg i.arg.(0)}, {emit_reg i.arg.(1)}, {emit_label lbl}\n`
-+ | Iinttest_imm _ ->
-+ fatal_error "Emit.emit_instr (Iinttest_imm _)"
-+ | Ifloattest(cmp, neg) ->
-+ let neg = match cmp with
-+ | Ceq -> ` feq.d {emit_reg reg_tmp1}, {emit_reg i.arg.(0)}, {emit_reg i.arg.(1)}\n`; neg
-+ | Cne -> ` feq.d {emit_reg reg_tmp1}, {emit_reg i.arg.(0)}, {emit_reg i.arg.(1)}\n`; not neg
-+ | Clt -> ` flt.d {emit_reg reg_tmp1}, {emit_reg i.arg.(0)}, {emit_reg i.arg.(1)}\n`; neg
-+ | Cgt -> ` flt.d {emit_reg reg_tmp1}, {emit_reg i.arg.(1)}, {emit_reg i.arg.(0)}\n`; neg
-+ | Cle -> ` fle.d {emit_reg reg_tmp1}, {emit_reg i.arg.(0)}, {emit_reg i.arg.(1)}\n`; neg
-+ | Cge -> ` fle.d {emit_reg reg_tmp1}, {emit_reg i.arg.(1)}, {emit_reg i.arg.(0)}\n`; neg
-+ in
-+ if neg then
-+ ` beqz {emit_reg reg_tmp1}, {emit_label lbl}\n`
-+ else
-+ ` bnez {emit_reg reg_tmp1}, {emit_label lbl}\n`
-+ | Ioddtest ->
-+ ` andi {emit_reg reg_tmp1}, {emit_reg i.arg.(0)}, 1\n`;
-+ ` bnez {emit_reg reg_tmp1}, {emit_label lbl}\n`
-+ | Ieventest ->
-+ ` andi {emit_reg reg_tmp1}, {emit_reg i.arg.(0)}, 1\n`;
-+ ` beqz {emit_reg reg_tmp1}, {emit_label lbl}\n`
-+ end
-+ | Lcondbranch3(lbl0, lbl1, lbl2) ->
-+ ` addi {emit_reg reg_tmp1}, {emit_reg i.arg.(0)}, -1\n`;
-+ begin match lbl0 with
-+ | None -> ()
-+ | Some lbl -> ` bltz {emit_reg reg_tmp1}, {emit_label lbl}\n`
-+ end;
-+ begin match lbl1 with
-+ | None -> ()
-+ | Some lbl -> ` beqz {emit_reg reg_tmp1}, {emit_label lbl}\n`
-+ end;
-+ begin match lbl2 with
-+ | None -> ()
-+ | Some lbl -> ` bgtz {emit_reg reg_tmp1}, {emit_label lbl}\n`
-+ end
-+ | Lswitch jumptbl -> (* FIXME FIXME ? *)
-+ let lbl = new_label() in
-+ ` la {emit_reg reg_tmp1}, {emit_label lbl}\n`;
-+ ` slli {emit_reg reg_tmp2}, {emit_reg i.arg.(0)}, 2\n`;
-+ ` add {emit_reg reg_tmp1}, {emit_reg reg_tmp1}, {emit_reg reg_tmp2}\n`;
-+ ` jr {emit_reg reg_tmp1}\n`;
-+ `{emit_label lbl}:\n`;
-+ for i = 0 to Array.length jumptbl - 1 do
-+ ` j {emit_label jumptbl.(i)}\n`
-+ done
-+ | Lsetuptrap lbl ->
-+ ` addi sp, sp, -16\n`;
-+ ` jal {emit_label lbl}\n`
-+ | Lpushtrap ->
-+ stack_offset := !stack_offset + 16;
-+ ` {emit_string stg} ra, {emit_int size_addr}(sp)\n`;
-+ ` {emit_string stg} {emit_reg reg_trap}, 0(sp)\n`;
-+ ` mv {emit_reg reg_trap}, sp\n`
-+ | Lpoptrap ->
-+ ` {emit_string lg} {emit_reg reg_trap}, 0(sp)\n`;
-+ ` addi sp, sp, 16\n`;
-+ stack_offset := !stack_offset - 16
-+ | Lraise k ->
-+ begin match !Clflags.debug, k with
-+ | true, Cmm.Raise_withtrace ->
-+ ` call {emit_symbol "caml_raise_exn"}\n`;
-+ record_frame Reg.Set.empty true i.dbg
-+ | false, _
-+ | true, Cmm.Raise_notrace ->
-+ ` mv sp, {emit_reg reg_trap}\n`;
-+ ` {emit_string lg} {emit_reg reg_tmp1}, {emit_int size_addr}(sp)\n`;
-+ ` {emit_string lg} {emit_reg reg_trap}, 0(sp)\n`;
-+ ` addi sp, sp, 16\n`;
-+ ` jalr {emit_reg reg_tmp1}\n`
-+ end
-+
-+(* Emit a sequence of instructions *)
-+
-+let rec emit_all = function
-+ | {desc = Lend} -> () | i -> emit_instr i; emit_all i.next
-+
-+(* Emission of a function declaration *)
-+
-+let fundecl fundecl =
-+ function_name := fundecl.fun_name;
-+ tailrec_entry_point := new_label();
-+ stack_offset := 0;
-+ call_gc_sites := [];
-+ bound_error_sites := [];
-+ float_literals := [];
-+ ` .globl {emit_symbol fundecl.fun_name}\n`;
-+ ` .type {emit_symbol fundecl.fun_name}, @function\n`;
-+ ` {emit_string code_space}\n`;
-+ ` .align 2\n`;
-+ `{emit_symbol fundecl.fun_name}:\n`;
-+ let n = frame_size() in
-+ if n > 0 then
-+ ` addi sp, sp, {emit_int(-n)}\n`;
-+ if !contains_calls then
-+ ` {emit_string stg} ra, {emit_int(n - size_addr)}(sp)\n`;
-+ `{emit_label !tailrec_entry_point}:\n`;
-+ emit_all fundecl.fun_body;
-+ List.iter emit_call_gc !call_gc_sites;
-+ List.iter emit_call_bound_error !bound_error_sites;
-+ ` .size {emit_symbol fundecl.fun_name}, .-{emit_symbol fundecl.fun_name}\n`;
-+ (* Emit the float literals *)
-+ if !float_literals <> [] then begin
-+ ` {emit_string rodata_space}\n`;
-+ ` .align 3\n`;
-+ List.iter
-+ (fun (f, lbl) ->
-+ `{emit_label lbl}:\n`;
-+ if rv64
-+ then emit_float64_directive ".quad" f
-+ else emit_float64_split_directive ".long" f)
-+ !float_literals;
-+ end
-+
-+(* Emission of data *)
-+
-+let declare_global_data s =
-+ ` .globl {emit_symbol s}\n`;
-+ ` .type {emit_symbol s}, @object\n`
-+
-+let emit_item = function
-+ | Cglobal_symbol s ->
-+ declare_global_data s
-+ | Cdefine_symbol s ->
-+ `{emit_symbol s}:\n`;
-+ | Cint8 n ->
-+ ` .byte {emit_int n}\n`
-+ | Cint16 n ->
-+ ` .short {emit_int n}\n`
-+ | Cint32 n ->
-+ ` .long {emit_nativeint n}\n`
-+ | Cint n ->
-+ ` {emit_string datag} {emit_nativeint n}\n`
-+ | Csingle f ->
-+ emit_float32_directive ".long" (Int32.bits_of_float f)
-+ | Cdouble f ->
-+ if rv64
-+ then emit_float64_directive ".quad" (Int64.bits_of_float f)
-+ else emit_float64_split_directive ".long" (Int64.bits_of_float f)
-+ | Csymbol_address s ->
-+ ` {emit_string datag} {emit_symbol s}\n`
-+ | Cstring s ->
-+ emit_bytes_directive " .byte " s
-+ | Cskip n ->
-+ if n > 0 then ` .space {emit_int n}\n`
-+ | Calign n ->
-+ ` .align {emit_int (Misc.log2 n)}\n`
-+
-+let data l =
-+ ` {emit_string data_space}\n`;
-+ List.iter emit_item l
-+
-+(* Beginning / end of an assembly file *)
-+
-+let begin_assembly() =
-+ (* Emit the beginning of the segments *)
-+ let lbl_begin = Compilenv.make_symbol (Some "data_begin") in
-+ ` {emit_string data_space}\n`;
-+ declare_global_data lbl_begin;
-+ `{emit_symbol lbl_begin}:\n`;
-+ let lbl_begin = Compilenv.make_symbol (Some "code_begin") in
-+ ` {emit_string code_space}\n`;
-+ declare_global_data lbl_begin;
-+ `{emit_symbol lbl_begin}:\n`
-+
-+let end_assembly() =
-+ ` {emit_string code_space}\n`;
-+ let lbl_end = Compilenv.make_symbol (Some "code_end") in
-+ declare_global_data lbl_end;
-+ `{emit_symbol lbl_end}:\n`;
-+ ` .long 0\n`;
-+ ` {emit_string data_space}\n`;
-+ let lbl_end = Compilenv.make_symbol (Some "data_end") in
-+ declare_global_data lbl_end;
-+ `{emit_symbol lbl_end}:\n`;
-+ ` {emit_string datag} 0\n`;
-+ (* Emit the frame descriptors *)
-+ ` {emit_string rodata_space}\n`;
-+ let lbl = Compilenv.make_symbol (Some "frametable") in
-+ declare_global_data lbl;
-+ `{emit_symbol lbl}:\n`;
-+ emit_frames
-+ { efa_code_label = (fun l -> ` {emit_string datag} {emit_label l}\n`);
-+ efa_data_label = (fun l -> ` {emit_string datag} {emit_label l}\n`);
-+ efa_16 = (fun n -> ` .short {emit_int n}\n`);
-+ efa_32 = (fun n -> ` .long {emit_int32 n}\n`);
-+ efa_word = (fun n -> ` {emit_string datag} {emit_int n}\n`);
-+ efa_align = (fun n -> ` .align {emit_int (Misc.log2 n)}\n`);
-+ efa_label_rel = (fun lbl ofs ->
-+ ` .long ({emit_label lbl} - .) + {emit_int32 ofs}\n`);
-+ efa_def_label = (fun l -> `{emit_label l}:\n`);
-+ efa_string = (fun s -> emit_bytes_directive " .byte " (s ^ "\000"))
-+ }
-diff --git a/asmcomp/riscv/proc.ml b/asmcomp/riscv/proc.ml
-new file mode 100644
-index 000000000..c0b0dcdb8
---- /dev/null
-+++ b/asmcomp/riscv/proc.ml
-@@ -0,0 +1,301 @@
-+(***********************************************************************)
-+(* *)
-+(* OCaml *)
-+(* *)
-+(* Nicolas Ojeda Bar <n.oje.bar(a)gmail.com> *)
-+(* *)
-+(* Copyright 2016 Institut National de Recherche en Informatique et *)
-+(* en Automatique. All rights reserved. This file is distributed *)
-+(* under the terms of the Q Public License version 1.0. *)
-+(* *)
-+(***********************************************************************)
-+
-+(* Description of the RISC-V *)
-+
-+open Misc
-+open Cmm
-+open Reg
-+open Arch
-+open Mach
-+
-+(* Instruction selection *)
-+
-+let word_addressed = false
-+
-+(* Registers available for register allocation *)
-+
-+(* Integer register map:
-+ zero always zero
-+ ra return address
-+ sp, gp, tp stack pointer, global pointer, thread pointer (preserved by C)
-+ a0 - a7 0 - 7 arguments/results
-+ s2 - s9 8 - 15 arguments/results (preserved by C)
-+ t2 - t6 16 - 20 temporary
-+ t0 21 temporary (used by assembler)
-+ t1 22 temporary (reserved for code gen)
-+ s0 23 frame pointer (preserved by C)
-+ s1 24 trap pointer (preserved by C)
-+ s10 25 allocation pointer (preserved by C)
-+ s11 26 allocation limit (preserved by C)
-+ Floating-point register map:
-+ ft0 - ft7 100 - 107 temporary
-+ fs0 - fs1 108 - 109 general purpose (preserved by C)
-+ fa0 - fa7 110 - 117 arguments/results
-+ fs2 - fs9 118 - 125 arguments/results (preserved by C)
-+ fs10 - fs11 126 - 127 general purpose (preserved by C)
-+ ft8 - ft11 128 - 131 temporary
-+*)
-+
-+let int_reg_name =
-+ [| "a0"; "a1"; "a2"; "a3"; "a4"; "a5"; "a6"; "a7";
-+ "s2"; "s3"; "s4"; "s5"; "s6"; "s7"; "s8"; "s9";
-+ "t2"; "t3"; "t4"; "t5"; "t6";
-+ "t0"; "t1";
-+ "s0"; "s1"; "s10"; "s11" |]
-+
-+let float_reg_name =
-+ [| "ft0"; "ft1"; "ft2"; "ft3"; "ft4"; "ft5"; "ft6"; "ft7";
-+ "fs0"; "fs1";
-+ "fa0"; "fa1"; "fa2"; "fa3"; "fa4"; "fa5"; "fa6"; "fa7";
-+ "fs2"; "fs3"; "fs4"; "fs5"; "fs6"; "fs7"; "fs8"; "fs9"; "fs10"; "fs11";
-+ "ft8"; "ft9"; "ft10"; "ft11" |]
-+
-+let num_register_classes = 2
-+
-+let register_class r =
-+ match r.typ with
-+ | Val | Int | Addr -> 0
-+ | Float -> 1
-+
-+let num_available_registers = [| 21; 32 |]
-+
-+let first_available_register = [| 0; 100 |]
-+
-+let register_name r =
-+ if r < 100 then int_reg_name.(r) else float_reg_name.(r - 100)
-+
-+let rotate_registers = true
-+
-+(* Representation of hard registers by pseudo-registers *)
-+
-+let hard_int_reg =
-+ let v = Array.make 27 Reg.dummy in
-+ for i = 0 to 26 do
-+ v.(i) <- Reg.at_location Int (Reg i)
-+ done;
-+ v
-+
-+let hard_float_reg =
-+ let v = Array.make 32 Reg.dummy in
-+ for i = 0 to 31 do
-+ v.(i) <- Reg.at_location Float (Reg(100 + i))
-+ done;
-+ v
-+
-+let all_phys_regs =
-+ Array.append hard_int_reg hard_float_reg
-+
-+let phys_reg n =
-+ if n < 100 then hard_int_reg.(n) else hard_float_reg.(n - 100)
-+
-+let stack_slot slot ty =
-+ Reg.at_location ty (Stack slot)
-+
-+(* Calling conventions *)
-+
-+let calling_conventions
-+ first_int last_int first_float last_float make_stack arg =
-+ let loc = Array.make (Array.length arg) Reg.dummy in
-+ let int = ref first_int in
-+ let float = ref first_float in
-+ let ofs = ref 0 in
-+ for i = 0 to Array.length arg - 1 do
-+ match arg.(i).typ with
-+ | Val | Int | Addr as ty ->
-+ if !int <= last_int then begin
-+ loc.(i) <- phys_reg !int;
-+ incr int
-+ end else begin
-+ loc.(i) <- stack_slot (make_stack !ofs) ty;
-+ ofs := !ofs + size_int
-+ end
-+ | Float ->
-+ if !float <= last_float then begin
-+ loc.(i) <- phys_reg !float;
-+ incr float
-+ end else begin
-+ loc.(i) <- stack_slot (make_stack !ofs) Float;
-+ ofs := !ofs + size_float
-+ end
-+ done;
-+ (loc, Misc.align !ofs 16) (* Keep stack 16-aligned. *)
-+
-+let incoming ofs = Incoming ofs
-+let outgoing ofs = Outgoing ofs
-+let not_supported _ = fatal_error "Proc.loc_results: cannot call"
-+
-+let max_arguments_for_tailcalls = 16
-+
-+let loc_spacetime_node_hole = Reg.dummy (* Spacetime unsupported *)
-+
-+(* OCaml calling convention:
-+ first integer args in a0 .. a7, s2 .. s9
-+ first float args in fa0 .. fa7, fs2 .. fs9
-+ remaining args on stack.
-+ Return values in a0 .. a7, s2 .. s9 or fa0 .. fa7, fs2 .. fs9. *)
-+
-+let single_regs arg = Array.map (fun arg -> [| arg |]) arg
-+let ensure_single_regs res =
-+ Array.map (function
-+ | [| res |] -> res
-+ | _ -> failwith "proc.ensure_single_regs"
-+ ) res
-+
-+let loc_arguments arg =
-+ calling_conventions 0 15 110 125 outgoing arg
-+
-+let loc_parameters arg =
-+ let (loc, _ofs) =
-+ calling_conventions 0 15 110 125 incoming arg
-+ in
-+ loc
-+
-+let loc_results res =
-+ let (loc, _ofs) =
-+ calling_conventions 0 15 110 125 not_supported res
-+ in
-+ loc
-+
-+(* C calling convention:
-+ first integer args in a0 .. a7
-+ first float args in fa0 .. fa7
-+ remaining args on stack.
-+ Return values in a0 .. a1 or fa0 .. fa1. *)
-+
-+let external_calling_conventions
-+ first_int last_int first_float last_float make_stack arg =
-+ let loc = Array.make (Array.length arg) [| Reg.dummy |] in
-+ let int = ref first_int in
-+ let float = ref first_float in
-+ let ofs = ref 0 in
-+ for i = 0 to Array.length arg - 1 do
-+ match arg.(i) with
-+ | [| arg |] ->
-+ begin match arg.typ with
-+ | Val | Int | Addr as ty ->
-+ if !int <= last_int then begin
-+ loc.(i) <- [| phys_reg !int |];
-+ incr int;
-+ incr float;
-+ end else begin
-+ loc.(i) <- [| stack_slot (make_stack !ofs) ty |];
-+ ofs := !ofs + size_int
-+ end
-+ | Float ->
-+ if !float <= last_float then begin
-+ loc.(i) <- [| phys_reg !float |];
-+ incr float;
-+ incr int;
-+ end else begin
-+ loc.(i) <- [| stack_slot (make_stack !ofs) Float |];
-+ ofs := !ofs + size_float
-+ end
-+ end
-+ | [| arg1; arg2 |] ->
-+ (* Passing of 64-bit quantities to external functions on 32-bit
-+ platform. *)
-+ assert (size_int = 4);
-+ begin match arg1.typ, arg2.typ with
-+ | Int, Int ->
-+ int := Misc.align !int 2;
-+ if !int <= last_int - 1 then begin
-+ let reg_lower = phys_reg !int in
-+ let reg_upper = phys_reg (!int + 1) in
-+ loc.(i) <- [| reg_lower; reg_upper |];
-+ int := !int + 2
-+ end else begin
-+ let size_int64 = 8 in
-+ ofs := Misc.align !ofs size_int64;
-+ let ofs_lower = !ofs in
-+ let ofs_upper = !ofs + size_int in
-+ let stack_lower = stack_slot (make_stack ofs_lower) Int in
-+ let stack_upper = stack_slot (make_stack ofs_upper) Int in
-+ loc.(i) <- [| stack_lower; stack_upper |];
-+ ofs := !ofs + size_int64
-+ end
-+ | _ ->
-+ let f = function Int -> "I" | Addr -> "A" | Val -> "V" | Float -> "F" in
-+ fatal_error (Printf.sprintf "Proc.calling_conventions: bad register \
-+ type(s) for multi-register argument: %s, %s"
-+ (f arg1.typ) (f arg2.typ))
-+ end
-+ | _ ->
-+ fatal_error "Proc.calling_conventions: bad number of register for \
-+ multi-register argument"
-+ done;
-+ (loc, Misc.align !ofs 16) (* Keep stack 16-aligned. *)
-+
-+let loc_external_arguments arg =
-+ external_calling_conventions 0 7 110 117 outgoing arg
-+
-+let loc_external_results res =
-+ let (loc, _ofs) =
-+ external_calling_conventions 0 1 110 111 not_supported (single_regs res)
-+ in
-+ ensure_single_regs loc
-+
-+(* Exceptions are in GPR 3 *)
-+
-+let loc_exn_bucket = phys_reg 0
-+
-+(* Volatile registers: none *)
-+
-+let regs_are_volatile _ = false
-+
-+(* Registers destroyed by operations *)
-+
-+let destroyed_at_c_call =
-+ Array.of_list(List.map phys_reg
-+ [0; 1; 2; 3; 4; 5; 6; 7; 16; 17; 18; 19; 20; (* 21; 22; *)
-+ 100; 101; 102; 103; 104; 105; 106; 107; 110; 111; 112; 113; 114; 115; 116;
-+ 117; 128; 129; 130; 131])
-+
-+let destroyed_at_oper = function
-+ | Iop(Icall_ind _ | Icall_imm _ | Iextcall{alloc = true; _}) -> all_phys_regs
-+ | Iop(Iextcall{alloc = false; _}) -> destroyed_at_c_call
-+ | _ -> [||]
-+
-+let destroyed_at_raise = all_phys_regs
-+
-+(* Maximal register pressure *)
-+
-+let safe_register_pressure = function
-+ | Iextcall _ -> 15
-+ | _ -> 21
-+
-+let max_register_pressure = function
-+ | Iextcall _ -> [| 15; 18 |]
-+ | _ -> [| 21; 30 |]
-+
-+(* Pure operations (without any side effect besides updating their result
-+ registers). *)
-+
-+let op_is_pure = function
-+ | Icall_ind _ | Icall_imm _ | Itailcall_ind _ | Itailcall_imm _
-+ | Iextcall _ | Istackoffset _ | Istore _ | Ialloc _
-+ | Iintop(Icheckbound _) | Iintop_imm(Icheckbound _, _) -> false
-+ | Ispecific(Imultaddf _ | Imultsubf _) -> true
-+ | _ -> true
-+
-+(* Layout of the stack *)
-+
-+let num_stack_slots = [| 0; 0 |]
-+let contains_calls = ref false
-+
-+(* Calling the assembler *)
-+
-+let assemble_file infile outfile =
-+ Ccomp.command
-+ (Config.asm ^ " -o " ^ Filename.quote outfile ^ " " ^ Filename.quote infile)
-+
-+let init () = ()
-diff --git a/asmcomp/riscv/reload.ml b/asmcomp/riscv/reload.ml
-new file mode 100644
-index 000000000..85b970342
---- /dev/null
-+++ b/asmcomp/riscv/reload.ml
-@@ -0,0 +1,16 @@
-+(***********************************************************************)
-+(* *)
-+(* OCaml *)
-+(* *)
-+(* Nicolas Ojeda Bar <n.oje.bar(a)gmail.com> *)
-+(* *)
-+(* Copyright 2016 Institut National de Recherche en Informatique et *)
-+(* en Automatique. All rights reserved. This file is distributed *)
-+(* under the terms of the Q Public License version 1.0. *)
-+(* *)
-+(***********************************************************************)
-+
-+(* Reloading for the RISC-V *)
-+
-+let fundecl f =
-+ (new Reloadgen.reload_generic)#fundecl f
-diff --git a/asmcomp/riscv/scheduling.ml b/asmcomp/riscv/scheduling.ml
-new file mode 100644
-index 000000000..e436be1cc
---- /dev/null
-+++ b/asmcomp/riscv/scheduling.ml
-@@ -0,0 +1,19 @@
-+(***********************************************************************)
-+(* *)
-+(* OCaml *)
-+(* *)
-+(* Nicolas Ojeda Bar <n.oje.bar(a)gmail.com> *)
-+(* *)
-+(* Copyright 2016 Institut National de Recherche en Informatique et *)
-+(* en Automatique. All rights reserved. This file is distributed *)
-+(* under the terms of the Q Public License version 1.0. *)
-+(* *)
-+(***********************************************************************)
-+
-+(* Instruction scheduling for the RISC-V *)
-+
-+let _ = let module M = Schedgen in () (* to create a dependency *)
-+
-+(* Scheduling is turned off. *)
-+
-+let fundecl f = f
-diff --git a/asmcomp/riscv/selection.ml b/asmcomp/riscv/selection.ml
-new file mode 100644
-index 000000000..60ec5cb4e
---- /dev/null
-+++ b/asmcomp/riscv/selection.ml
-@@ -0,0 +1,85 @@
-+(***********************************************************************)
-+(* *)
-+(* OCaml *)
-+(* *)
-+(* Nicolas Ojeda Bar <n.oje.bar(a)gmail.com> *)
-+(* *)
-+(* Copyright 2016 Institut National de Recherche en Informatique et *)
-+(* en Automatique. All rights reserved. This file is distributed *)
-+(* under the terms of the Q Public License version 1.0. *)
-+(* *)
-+(***********************************************************************)
-+
-+(* Instruction selection for the RISC-V processor *)
-+
-+open Cmm
-+open Arch
-+open Mach
-+
-+(* Instruction selection *)
-+
-+class selector = object (self)
-+
-+inherit Selectgen.selector_generic as super
-+
-+method is_immediate n = (n <= 0x7FF) && (n >= -0x800)
-+
-+method select_addressing _ = function
-+ | Cop(Cadda, [arg; Cconst_int n]) when self#is_immediate n ->
-+ (Iindexed n, arg)
-+ | Cop(Cadda, [arg1; Cop(Caddi, [arg2; Cconst_int n])]) when self#is_immediate n ->
-+ (Iindexed n, Cop(Caddi, [arg1; arg2]))
-+ | arg ->
-+ (Iindexed 0, arg)
-+
-+method! select_operation op args =
-+ match (op, args) with
-+ (* RISC-V does not support immediate operands for multiply high *)
-+ | (Cmulhi, _) -> (Iintop Imulh, args)
-+ (* The and, or and xor instructions have a different range of immediate
-+ operands than the other instructions *)
-+ | (Cand, _) -> self#select_logical Iand args
-+ | (Cor, _) -> self#select_logical Ior args
-+ | (Cxor, _) -> self#select_logical Ixor args
-+ (* Recognize (neg-)mult-add and (neg-)mult-sub instructions *)
-+ | (Caddf, [Cop(Cmulf, [arg1; arg2]); arg3])
-+ | (Caddf, [arg3; Cop(Cmulf, [arg1; arg2])]) ->
-+ (Ispecific (Imultaddf false), [arg1; arg2; arg3])
-+ | (Csubf, [Cop(Cmulf, [arg1; arg2]); arg3]) ->
-+ (Ispecific (Imultsubf false), [arg1; arg2; arg3])
-+ | (Cnegf, [Cop(Csubf, [Cop(Cmulf, [arg1; arg2]); arg3])]) ->
-+ (Ispecific (Imultsubf true), [arg1; arg2; arg3])
-+ | (Cnegf, [Cop(Caddf, [Cop(Cmulf, [arg1; arg2]); arg3])]) ->
-+ (Ispecific (Imultaddf true), [arg1; arg2; arg3])
-+ (* RISC-V does not support immediate operands for comparison operators *)
-+ | (Ccmpi comp, args) -> (Iintop(Icomp (Isigned comp)), args)
-+ | (Ccmpa comp, args) -> (Iintop(Icomp (Iunsigned comp)), args)
-+ | (Cmuli, _) -> (Iintop Imul, args)
-+ | _ ->
-+ super#select_operation op args
-+
-+method select_logical op = function
-+ | [arg; Cconst_int n] when n >= 0 && n <= 0xFFF ->
-+ (Iintop_imm(op, n), [arg])
-+ | [Cconst_int n; arg] when n >= 0 && n <= 0xFFF ->
-+ (Iintop_imm(op, n), [arg])
-+ | args ->
-+ (Iintop op, args)
-+
-+(* Instruction selection for conditionals *)
-+
-+method! select_condition = function
-+ | Cop(Ccmpi cmp, args) ->
-+ (Iinttest(Isigned cmp), Ctuple args)
-+ | Cop(Ccmpa cmp, args) ->
-+ (Iinttest(Iunsigned cmp), Ctuple args)
-+ | Cop(Ccmpf cmp, args) ->
-+ (Ifloattest(cmp, false), Ctuple args)
-+ | Cop(Cand, [arg; Cconst_int 1]) ->
-+ (Ioddtest, arg)
-+ | arg ->
-+ (Itruetest, arg)
-+
-+end
-+
-+let fundecl f = (new selector)#emit_fundecl f
-diff --git a/asmrun/riscv.S b/asmrun/riscv.S
-new file mode 100644
-index 000000000..a82048efc
---- /dev/null
-+++ b/asmrun/riscv.S
-@@ -0,0 +1,424 @@
-+/***********************************************************************/
-+/* */
-+/* OCaml */
-+/* */
-+/* Nicolas Ojeda Bar <n.oje.bar(a)gmail.com> */
-+/* */
-+/* Copyright 1996 Institut National de Recherche en Informatique et */
-+/* en Automatique. All rights reserved. This file is distributed */
-+/* under the terms of the GNU Library General Public License, with */
-+/* the special exception on linking described in file ../LICENSE. */
-+/* */
-+/***********************************************************************/
-+
-+/* Asm part of the runtime system, RISC-V processor, 64-bit mode */
-+/* Must be preprocessed by cpp */
-+
-+#define TRAP_PTR s1
-+#define ALLOC_PTR s10
-+#define ALLOC_LIMIT s11
-+#define TMP0 t0
-+#define TMP1 t1
-+#define ARG t2
-+
-+#if defined(MODEL_riscv64)
-+#define store sd
-+#define load ld
-+#define WSZ 8
-+#else
-+#define store sw
-+#define load lw
-+#define WSZ 4
-+#endif
-+
-+#if defined(__PIC__)
-+ .option pic
-+#else
-+ .option nopic
-+#endif
-+
-+ .section .text
-+/* Invoke the garbage collector. */
-+
-+ .globl caml_system__code_begin
-+caml_system__code_begin:
-+
-+ .align 2
-+ .globl caml_call_gc
-+ .type caml_call_gc, @function
-+caml_call_gc:
-+ /* Record return address */
-+ store ra, caml_last_return_address, TMP0
-+ /* Record lowest stack address */
-+ mv TMP1, sp
-+ store sp, caml_bottom_of_stack, TMP0
-+.Lcaml_call_gc:
-+ /* Set up stack space, saving return address */
-+ /* (1 reg for RA, 1 reg for FP, 21 allocatable int regs, 20 caller-save float regs) * 8 */
-+ /* + 1 for alignment */
-+ addi sp, sp, -0x160
-+ mv s0, sp
-+ store ra, 0x8(sp)
-+ store s0, 0x0(sp)
-+ /* Save allocatable integer registers on the stack,
-+ in the order given in proc.ml */
-+ store a0, 0x10(sp)
-+ store a1, 0x18(sp)
-+ store a2, 0x20(sp)
-+ store a3, 0x28(sp)
-+ store a4, 0x30(sp)
-+ store a5, 0x38(sp)
-+ store a6, 0x40(sp)
-+ store a7, 0x48(sp)
-+ store s2, 0x50(sp)
-+ store s3, 0x58(sp)
-+ store s4, 0x60(sp)
-+ store s5, 0x68(sp)
-+ store s6, 0x70(sp)
-+ store s7, 0x78(sp)
-+ store s8, 0x80(sp)
-+ store s9, 0x88(sp)
-+ store t2, 0x90(sp)
-+ store t3, 0x98(sp)
-+ store t4, 0xa0(sp)
-+ store t5, 0xa8(sp)
-+ store t6, 0xb0(sp)
-+ /* Save caller-save floating-point registers on the stack
-+ (callee-saves are preserved by caml_garbage_collection) */
-+ fsd ft0, 0xb8(sp)
-+ fsd ft1, 0xc0(sp)
-+ fsd ft2, 0xc8(sp)
-+ fsd ft3, 0xd0(sp)
-+ fsd ft4, 0xd8(sp)
-+ fsd ft5, 0xe0(sp)
-+ fsd ft6, 0xe8(sp)
-+ fsd ft7, 0xf0(sp)
-+ fsd fa0, 0xf8(sp)
-+ fsd fa1, 0x100(sp)
-+ fsd fa2, 0x108(sp)
-+ fsd fa3, 0x110(sp)
-+ fsd fa4, 0x118(sp)
-+ fsd fa5, 0x120(sp)
-+ fsd fa6, 0x128(sp)
-+ fsd fa7, 0x130(sp)
-+ fsd ft8, 0x138(sp)
-+ fsd ft9, 0x140(sp)
-+ fsd ft9, 0x148(sp)
-+ fsd ft10, 0x150(sp)
-+ fsd ft11, 0x158(sp)
-+ /* Store pointer to saved integer registers in caml_gc_regs */
-+ addi TMP1, sp, 16
-+ store TMP1, caml_gc_regs, TMP0
-+ /* Save current allocation pointer for debugging purposes */
-+ store ALLOC_PTR, caml_young_ptr, TMP0
-+ /* Save trap pointer in case an exception is raised during GC */
-+ store TRAP_PTR, caml_exception_pointer, TMP0
-+ /* Call the garbage collector */
-+ call caml_garbage_collection
-+ /* Restore registers */
-+ load a0, 0x10(sp)
-+ load a1, 0x18(sp)
-+ load a2, 0x20(sp)
-+ load a3, 0x28(sp)
-+ load a4, 0x30(sp)
-+ load a5, 0x38(sp)
-+ load a6, 0x40(sp)
-+ load a7, 0x48(sp)
-+ load s2, 0x50(sp)
-+ load s3, 0x58(sp)
-+ load s4, 0x60(sp)
-+ load s5, 0x68(sp)
-+ load s6, 0x70(sp)
-+ load s7, 0x78(sp)
-+ load s8, 0x80(sp)
-+ load s9, 0x88(sp)
-+ load t2, 0x90(sp)
-+ load t3, 0x98(sp)
-+ load t4, 0xa0(sp)
-+ load t5, 0xa8(sp)
-+ load t6, 0xb0(sp)
-+ fld ft0, 0xb8(sp)
-+ fld ft1, 0xc0(sp)
-+ fld ft2, 0xc8(sp)
-+ fld ft3, 0xd0(sp)
-+ fld ft4, 0xd8(sp)
-+ fld ft5, 0xe0(sp)
-+ fld ft6, 0xe8(sp)
-+ fld ft7, 0xf0(sp)
-+ fld fa0, 0xf8(sp)
-+ fld fa1, 0x100(sp)
-+ fld fa2, 0x108(sp)
-+ fld fa3, 0x110(sp)
-+ fld fa4, 0x118(sp)
-+ fld fa5, 0x120(sp)
-+ fld fa6, 0x128(sp)
-+ fld fa7, 0x130(sp)
-+ fld ft8, 0x138(sp)
-+ fld ft9, 0x140(sp)
-+ fld ft9, 0x148(sp)
-+ fld ft10, 0x150(sp)
-+ fld ft11, 0x158(sp)
-+ /* Reload new allocation pointer and allocation limit */
-+ load ALLOC_PTR, caml_young_ptr
-+ load ALLOC_LIMIT, caml_young_limit
-+ /* Free stack space and return to caller */
-+ load ra, 0x8(sp)
-+ load s0, 0x0(sp)
-+ addi sp, sp, 0x160
-+ ret
-+ .size caml_call_gc, .-caml_call_gc
-+
-+/* Call a C function from OCaml */
-+/* Function to call is in ARG */
-+
-+ .align 2
-+ .globl caml_c_call
-+ .type caml_c_call, @function
-+caml_c_call:
-+ /* Preserve return address in callee-save register s2 */
-+ mv s2, ra
-+ /* Record lowest stack address and return address */
-+ store ra, caml_last_return_address, TMP0
-+ store sp, caml_bottom_of_stack, TMP0
-+ /* Make the exception handler alloc ptr available to the C code */
-+ store ALLOC_PTR, caml_young_ptr, TMP0
-+ store TRAP_PTR, caml_exception_pointer, TMP0
-+ /* Call the function */
-+ jalr ARG
-+ /* Reload alloc ptr and alloc limit */
-+ load ALLOC_PTR, caml_young_ptr
-+ load TRAP_PTR, caml_exception_pointer
-+ /* Return */
-+ jr s2
-+ .size caml_c_call, .-caml_c_call
-+
-+/* Raise an exception from OCaml */
-+ .align 2
-+ .globl caml_raise_exn
-+ .type caml_raise_exn, @function
-+caml_raise_exn:
-+ /* Test if backtrace is active */
-+ load TMP1, caml_backtrace_active
-+ bnez TMP1, 2f
-+1: /* Cut stack at current trap handler */
-+ mv sp, TRAP_PTR
-+ /* Pop previous handler and jump to it */
-+ load TMP1, 8(sp)
-+ load TRAP_PTR, 0(sp)
-+ addi sp, sp, 16
-+ jr TMP1
-+2: /* Preserve exception bucket in callee-save register s2 */
-+ mv s2, a0
-+ /* Stash the backtrace */
-+ mv a1, ra
-+ mv a2, sp
-+ mv a3, TRAP_PTR
-+ call caml_stash_backtrace
-+ /* Restore exception bucket and raise */
-+ mv a0, s2
-+ j 1b
-+ .size caml_raise_exn, .-caml_raise_exn
-+
-+ .globl caml_reraise_exn
-+ .type caml_reraise_exn, @function
-+
-+/* Raise an exception from C */
-+
-+ .align 2
-+ .globl caml_raise_exception
-+ .type caml_raise_exception, @function
-+caml_raise_exception:
-+ load TRAP_PTR, caml_exception_pointer
-+ load ALLOC_PTR, caml_young_ptr
-+ load ALLOC_LIMIT, caml_young_limit
-+ load TMP1, caml_backtrace_active
-+ bnez TMP1, 2f
-+1: /* Cut stack at current trap handler */
-+ mv sp, TRAP_PTR
-+ load TMP1, 8(sp)
-+ load TRAP_PTR, 0(sp)
-+ addi sp, sp, 16
-+ jr TMP1
-+2: /* Preserve exception bucket in callee-save register s2 */
-+ mv s2, a0
-+ load a1, caml_last_return_address
-+ load a2, caml_bottom_of_stack
-+ mv a3, TRAP_PTR
-+ call caml_stash_backtrace
-+ mv a0, s2
-+ j 1b
-+ .size caml_raise_exception, .-caml_raise_exception
-+
-+/* Start the OCaml program */
-+
-+ .align 2
-+ .globl caml_start_program
-+ .type caml_start_program, @function
-+caml_start_program:
-+
-+ la ARG, caml_program
-+ /* Code shared with caml_callback* */
-+ /* Address of OCaml code to call is in ARG */
-+ /* Arguments to the OCaml code are in a0 ... a7 */
-+.Ljump_to_caml:
-+ /* Set up stack frame and save callee-save registers */
-+ addi sp, sp, -0xd0
-+ store ra, 0xc0(sp)
-+ store s0, 0x0(sp)
-+ store s1, 0x8(sp)
-+ store s2, 0x10(sp)
-+ store s3, 0x18(sp)
-+ store s4, 0x20(sp)
-+ store s5, 0x28(sp)
-+ store s6, 0x30(sp)
-+ store s7, 0x38(sp)
-+ store s8, 0x40(sp)
-+ store s9, 0x48(sp)
-+ store s10, 0x50(sp)
-+ store s11, 0x58(sp)
-+ fsd fs0, 0x60(sp)
-+ fsd fs1, 0x68(sp)
-+ fsd fs2, 0x70(sp)
-+ fsd fs3, 0x78(sp)
-+ fsd fs4, 0x80(sp)
-+ fsd fs5, 0x88(sp)
-+ fsd fs6, 0x90(sp)
-+ fsd fs7, 0x98(sp)
-+ fsd fs8, 0xa0(sp)
-+ fsd fs9, 0xa8(sp)
-+ fsd fs10, 0xb0(sp)
-+ fsd fs11, 0xb8(sp)
-+ addi sp, sp, -32
-+ /* Setup a callback link on the stack */
-+ load TMP1, caml_bottom_of_stack
-+ store TMP1, 0(sp)
-+ load TMP1, caml_last_return_address
-+ store TMP1, 8(sp)
-+ load TMP1, caml_gc_regs
-+ store TMP1, 16(sp)
-+ /* set up a trap frame */
-+ addi sp, sp, -16
-+ load TMP1, caml_exception_pointer
-+ store TMP1, 0(sp)
-+ lla TMP0, .Ltrap_handler
-+ store TMP0, 8(sp)
-+ mv TRAP_PTR, sp
-+ load ALLOC_PTR, caml_young_ptr
-+ load ALLOC_LIMIT, caml_young_limit
-+ store x0, caml_last_return_address, TMP0
-+ jalr ARG
-+.Lcaml_retaddr: /* pop trap frame, restoring caml_exception_pointer */
-+ load TMP1, 0(sp)
-+ store TMP1, caml_exception_pointer, TMP0
-+ addi sp, sp, 16
-+.Lreturn_result: /* pop callback link, restoring global variables */
-+ load TMP1, 0(sp)
-+ store TMP1, caml_bottom_of_stack, TMP0
-+ load TMP1, 8(sp)
-+ store TMP1, caml_last_return_address, TMP0
-+ load TMP1, 16(sp)
-+ store TMP1, caml_gc_regs, TMP0
-+ addi sp, sp, 32
-+ /* Update allocation pointer */
-+ store ALLOC_PTR, caml_young_ptr, TMP0
-+ /* reload callee-save registers and return */
-+ load ra, 0xc0(sp)
-+ load s0, 0x0(sp)
-+ load s1, 0x8(sp)
-+ load s2, 0x10(sp)
-+ load s3, 0x18(sp)
-+ load s4, 0x20(sp)
-+ load s5, 0x28(sp)
-+ load s6, 0x30(sp)
-+ load s7, 0x38(sp)
-+ load s8, 0x40(sp)
-+ load s9, 0x48(sp)
-+ load s10, 0x50(sp)
-+ load s11, 0x58(sp)
-+ fld fs0, 0x60(sp)
-+ fld fs1, 0x68(sp)
-+ fld fs2, 0x70(sp)
-+ fld fs3, 0x78(sp)
-+ fld fs4, 0x80(sp)
-+ fld fs5, 0x88(sp)
-+ fld fs6, 0x90(sp)
-+ fld fs7, 0x98(sp)
-+ fld fs8, 0xa0(sp)
-+ fld fs9, 0xa8(sp)
-+ fld fs10, 0xb0(sp)
-+ fld fs11, 0xb8(sp)
-+ addi sp, sp, 0xd0
-+ ret
-+.Ltrap_handler:
-+ store TRAP_PTR, caml_exception_pointer, TMP0
-+ ori a0, a0, 2
-+ j .Lreturn_result
-+ .size caml_start_program, .-caml_start_program
-+
-+/* Callback from C to OCaml */
-+
-+ .align 2
-+ .globl caml_callback_exn
-+ .type caml_callback_exn, @function
-+caml_callback_exn:
-+ /* Initial shuffling of arguments (a0 = closure, a1 = first arg) */
-+ mv TMP1, a0
-+ mv a0, a1 /* a0 = first arg */
-+ mv a1, TMP1 /* a1 = closure environment */
-+ load ARG, 0(TMP1) /* code pointer */
-+ j .Ljump_to_caml
-+ .size caml_callback_exn, .-caml_callback_exn
-+
-+ .align 2
-+ .globl caml_callback2_exn
-+ .type caml_callback2_exn, @function
-+caml_callback2_exn:
-+ /* Initial shuffling of arguments (a0 = closure, a1 = arg1, a2 = arg2) */
-+ mv TMP1, a0
-+ mv a0, a1
-+ mv a1, a2
-+ mv a2, TMP1
-+ la ARG, caml_apply2
-+ j .Ljump_to_caml
-+ .size caml_callback2_exn, .-caml_callback2_exn
-+
-+ .align 2
-+ .globl caml_callback3_exn
-+ .type caml_callback3_exn, @function
-+caml_callback3_exn:
-+ /* Initial shuffling of argumnets */
-+ /* (a0 = closure, a1 = arg1, a2 = arg2, a3 = arg3) */
-+ mv TMP1, a0
-+ mv a0, a1
-+ mv a1, a2
-+ mv a2, a3
-+ mv a3, TMP1
-+ la ARG, caml_apply3
-+ j .Ljump_to_caml
-+ .size caml_callback3_exn, .-caml_callback3_exn
-+
-+ .align 2
-+ .globl caml_ml_array_bound_error
-+ .type caml_ml_array_bound_error, @function
-+caml_ml_array_bound_error:
-+ /* Load address of [caml_array_bound_error] in ARG */
-+ la ARG, caml_array_bound_error
-+ /* Call that function */
-+ j caml_c_call
-+
-+ .globl caml_system__code_end
-+caml_system__code_end:
-+
-+/* GC roots for callback */
-+
-+ .section .data
-+ .align 3
-+ .globl caml_system__frametable
-+ .type caml_system__frametable, @object
-+caml_system__frametable:
-+ .quad 1 /* one descriptor */
-+ .quad .Lcaml_retaddr /* return address into callback */
-+ .short -1 /* negative frame size => use callback link */
-+ .short 0 /* no roots */
-+ .align 3
-+ .size caml_system__frametable, .-caml_system__frametable
-diff --git a/byterun/caml/stack.h b/byterun/caml/stack.h
-index fd9d528e9..781c2517b 100644
---- a/byterun/caml/stack.h
-+++ b/byterun/caml/stack.h
-@@ -75,6 +75,11 @@
- #define Callback_link(sp) ((struct caml_context *)((sp) + 16))
- #endif
-
-+#ifdef TARGET_riscv /* FIXME FIXME */
-+#define Saved_return_address(sp) *((intnat *)((sp) - 8))
-+#define Callback_link(sp) ((struct caml_context *)((sp) + 16))
-+#endif
-+
- /* Structure of OCaml callback contexts */
-
- struct caml_context {
-diff --git a/configure b/configure
-index 786f4cdbe..b88dab26b 100755
---- a/configure
-+++ b/configure
-@@ -854,6 +854,7 @@ if test $with_sharedlibs = "yes"; then
- arm*-*-freebsd*) natdynlink=true;;
- earm*-*-netbsd*) natdynlink=true;;
- aarch64-*-linux*) natdynlink=true;;
-+ riscv*-*-linux*) natdynlink=true;;
- esac
- fi
-
-@@ -947,6 +948,8 @@ case "$target" in
- x86_64-*-mingw*) arch=amd64; system=mingw;;
- aarch64-*-linux*) arch=arm64; system=linux;;
- x86_64-*-cygwin*) arch=amd64; system=cygwin;;
-+ riscv32-*-linux*) arch=riscv; model=riscv32; system=linux;;
-+ riscv64-*-linux*) arch=riscv; model=riscv64; system=linux;;
- esac
-
- # Some platforms exist both in 32-bit and 64-bit variants, not distinguished
-@@ -1023,7 +1026,7 @@ case "$arch,$system" in
- aspp="${TOOLPREF}cc -c";;
- *,freebsd) as="${TOOLPREF}as"
- aspp="${TOOLPREF}cc -c";;
-- amd64,*|arm,*|arm64,*|i386,*|power,bsd*|sparc,*)
-+ amd64,*|arm,*|arm64,*|i386,*|power,bsd*|sparc,*|riscv,*)
- as="${TOOLPREF}as"
- case "$ccfamily" in
- clang-*)
---
-2.13.1
-
diff --git a/0006-Add-RISC-V-backend-runtime.patch b/0006-Add-RISC-V-backend-runtime.patch
new file mode 100644
index 0000000..b6ab0d7
--- /dev/null
+++ b/0006-Add-RISC-V-backend-runtime.patch
@@ -0,0 +1,1717 @@
+From c7d7b98e82b5571965e57c1537899094222f3157 Mon Sep 17 00:00:00 2001
+From: Nicolas Ojeda Bar <n.oje.bar(a)gmail.com>
+Date: Fri, 4 Nov 2016 20:39:09 +0100
+Subject: [PATCH 6/9] Add RISC-V backend & runtime
+
+---
+ README.adoc | 1 +
+ asmcomp/riscv/CSE.ml | 36 +++
+ asmcomp/riscv/arch.ml | 84 ++++++
+ asmcomp/riscv/emit.mlp | 616 ++++++++++++++++++++++++++++++++++++++++++++
+ asmcomp/riscv/proc.ml | 301 ++++++++++++++++++++++
+ asmcomp/riscv/reload.ml | 16 ++
+ asmcomp/riscv/scheduling.ml | 19 ++
+ asmcomp/riscv/selection.ml | 85 ++++++
+ asmrun/riscv.S | 424 ++++++++++++++++++++++++++++++
+ byterun/caml/stack.h | 5 +
+ configure | 5 +-
+ 11 files changed, 1591 insertions(+), 1 deletion(-)
+ create mode 100644 asmcomp/riscv/CSE.ml
+ create mode 100644 asmcomp/riscv/arch.ml
+ create mode 100644 asmcomp/riscv/emit.mlp
+ create mode 100644 asmcomp/riscv/proc.ml
+ create mode 100644 asmcomp/riscv/reload.ml
+ create mode 100644 asmcomp/riscv/scheduling.ml
+ create mode 100644 asmcomp/riscv/selection.ml
+ create mode 100644 asmrun/riscv.S
+
+diff --git a/README.adoc b/README.adoc
+index 480b0250f..cb6eebf1d 100644
+--- a/README.adoc
++++ b/README.adoc
+@@ -34,6 +34,7 @@ IA32 (Pentium):: NetBSD, OpenBSD, Solaris 9
+ PowerPC:: NetBSD
+ ARM:: NetBSD
+ SPARC:: Solaris, Linux, NetBSD
++RISC-V:: Linux
+
+ Other operating systems for the processors above have not been tested, but
+ the compiler may work under other operating systems with little work.
+diff --git a/asmcomp/riscv/CSE.ml b/asmcomp/riscv/CSE.ml
+new file mode 100644
+index 000000000..302811a99
+--- /dev/null
++++ b/asmcomp/riscv/CSE.ml
+@@ -0,0 +1,36 @@
++(***********************************************************************)
++(* *)
++(* OCaml *)
++(* *)
++(* Nicolas Ojeda Bar <n.oje.bar(a)gmail.com> *)
++(* *)
++(* Copyright 2106 Institut National de Recherche en Informatique et *)
++(* en Automatique. All rights reserved. This file is distributed *)
++(* under the terms of the Q Public License version 1.0. *)
++(* *)
++(***********************************************************************)
++
++(* CSE for the RISC-V *)
++
++open Arch
++open Mach
++open CSEgen
++
++class cse = object (_self)
++
++inherit cse_generic as super
++
++method! class_of_operation op =
++ match op with
++ | Ispecific(Imultaddf _ | Imultsubf _) -> Op_pure
++ | _ -> super#class_of_operation op
++
++method! is_cheap_operation op =
++ match op with
++ | Iconst_int n -> n <= 0x7FFn && n >= -0x800n
++ | _ -> false
++
++end
++
++let fundecl f =
++ (new cse)#fundecl f
+diff --git a/asmcomp/riscv/arch.ml b/asmcomp/riscv/arch.ml
+new file mode 100644
+index 000000000..61a38b1dd
+--- /dev/null
++++ b/asmcomp/riscv/arch.ml
+@@ -0,0 +1,84 @@
++(***********************************************************************)
++(* *)
++(* OCaml *)
++(* *)
++(* Nicolas Ojeda Bar <n.oje.bar(a)gmail.com> *)
++(* *)
++(* Copyright 2016 Institut National de Recherche en Informatique et *)
++(* en Automatique. All rights reserved. This file is distributed *)
++(* under the terms of the Q Public License version 1.0. *)
++(* *)
++(***********************************************************************)
++
++(* Specific operations for the RISC-V processor *)
++
++open Format
++
++(* Machine-specific command-line options *)
++
++let command_line_options = []
++
++(* Specific operations *)
++
++type specific_operation =
++ | Imultaddf of bool (* multiply, optionally negate, and add *)
++ | Imultsubf of bool (* multiply, optionally negate, and subtract *)
++
++let spacetime_node_hole_pointer_is_live_before = function
++ | Imultaddf _ | Imultsubf _ -> false
++
++(* Addressing modes *)
++
++type addressing_mode =
++ | Iindexed of int (* reg + displ *)
++
++(* Sizes, endianness *)
++
++let big_endian = false
++
++let rv64 =
++ match Config.model with "riscv64" -> true | "riscv32" -> false | _ -> assert false
++
++let size_addr = if rv64 then 8 else 4
++let size_int = size_addr
++let size_float = 8
++
++let allow_unaligned_access = false
++
++(* Behavior of division *)
++
++let division_crashes_on_overflow = false
++
++(* Operations on addressing modes *)
++
++let identity_addressing = Iindexed 0
++
++let offset_addressing addr delta =
++ match addr with
++ | Iindexed n -> Iindexed(n + delta)
++
++let num_args_addressing = function
++ | Iindexed _ -> 1
++
++(* Printing operations and addressing modes *)
++
++let print_addressing printreg addr ppf arg =
++ match addr with
++ | Iindexed n ->
++ let idx = if n <> 0 then Printf.sprintf " + %i" n else "" in
++ fprintf ppf "%a%s" printreg arg.(0) idx
++
++let print_specific_operation printreg op ppf arg =
++ match op with
++ | Imultaddf false ->
++ fprintf ppf "%a *f %a +f %a"
++ printreg arg.(0) printreg arg.(1) printreg arg.(2)
++ | Imultaddf true ->
++ fprintf ppf "-f (%a *f %a +f %a)"
++ printreg arg.(0) printreg arg.(1) printreg arg.(2)
++ | Imultsubf false ->
++ fprintf ppf "%a *f %a -f %a"
++ printreg arg.(0) printreg arg.(1) printreg arg.(2)
++ | Imultsubf true ->
++ fprintf ppf "-f (%a *f %a -f %a)"
++ printreg arg.(0) printreg arg.(1) printreg arg.(2)
+diff --git a/asmcomp/riscv/emit.mlp b/asmcomp/riscv/emit.mlp
+new file mode 100644
+index 000000000..6d0e3aefd
+--- /dev/null
++++ b/asmcomp/riscv/emit.mlp
+@@ -0,0 +1,616 @@
++(***********************************************************************)
++(* *)
++(* OCaml *)
++(* *)
++(* Nicolas Ojeda Bar <n.oje.bar(a)gmail.com> *)
++(* *)
++(* Copyright 2016 Institut National de Recherche en Informatique et *)
++(* en Automatique. All rights reserved. This file is distributed *)
++(* under the terms of the Q Public License version 1.0. *)
++(* *)
++(***********************************************************************)
++
++(* Emission of RISC-V assembly code *)
++
++open Misc
++open Cmm
++open Arch
++open Proc
++open Reg
++open Mach
++open Linearize
++open Emitaux
++
++(* Layout of the stack. The stack is kept 16-aligned. *)
++
++let stack_offset = ref 0
++
++let frame_size () =
++ let size =
++ !stack_offset + (* Trap frame, outgoing parameters *)
++ size_int * num_stack_slots.(0) + (* Local int variables *)
++ size_float * num_stack_slots.(1) + (* Local float variables *)
++ (if !contains_calls then size_addr else 0) in (* The return address *)
++ Misc.align size 16
++
++let slot_offset loc cls =
++ match loc with
++ | Local n ->
++ if cls = 0
++ then !stack_offset + num_stack_slots.(1) * size_float + n * size_int
++ else !stack_offset + n * size_float
++ | Incoming n -> frame_size() + n
++ | Outgoing n -> n
++
++(* Output a symbol *)
++
++let emit_symbol s =
++ Emitaux.emit_symbol '.' s
++
++(* Output a label *)
++
++let label_prefix = "L"
++
++let emit_label lbl =
++ emit_string label_prefix; emit_int lbl
++
++(* Section switching *)
++
++let data_space =
++ ".section .data"
++
++let code_space =
++ ".section .text"
++
++let rodata_space =
++ ".section .rodata"
++
++let reg_tmp1 = phys_reg 21 (* used by the assembler *)
++let reg_tmp2 = phys_reg 22
++let reg_t2 = phys_reg 16
++(* let reg_fp = phys_reg 23 *)
++let reg_trap = phys_reg 24
++let reg_alloc_ptr = phys_reg 25
++let reg_alloc_lim = phys_reg 26
++
++(* Names of instructions that differ in 32 and 64-bit modes *)
++
++let lg = if rv64 then "ld" else "lw"
++let stg = if rv64 then "sd" else "sw"
++let datag = if rv64 then ".quad" else ".long"
++
++(* Output a pseudo-register *)
++
++let emit_reg = function
++ | {loc = Reg r} -> emit_string (register_name r)
++ | _ -> fatal_error "Emit.emit_reg"
++
++(* Output a stack reference *)
++
++let emit_stack r =
++ match r.loc with
++ Stack s ->
++ let ofs = slot_offset s (register_class r) in `{emit_int ofs}(sp)`
++ | _ -> fatal_error "Emit.emit_stack"
++
++(* Record live pointers at call points *)
++
++let record_frame_label ?label live raise_ dbg =
++ let lbl =
++ match label with
++ | None -> new_label()
++ | Some label -> label
++ in
++ let live_offset = ref [] in
++ Reg.Set.iter
++ (function
++ {typ = Val; loc = Reg r} ->
++ live_offset := (r lsl 1) + 1 :: !live_offset
++ | {typ = Val; loc = Stack s} as reg ->
++ live_offset := slot_offset s (register_class reg) :: !live_offset
++ | {typ = Addr} as r ->
++ Misc.fatal_error ("bad GC root " ^ Reg.name r)
++ | _ -> ()
++ )
++ live;
++ frame_descriptors :=
++ { fd_lbl = lbl;
++ fd_frame_size = frame_size();
++ fd_live_offset = !live_offset;
++ fd_raise = raise_;
++ fd_debuginfo = dbg } :: !frame_descriptors;
++ lbl
++
++let record_frame ?label live raise_ dbg =
++ let lbl = record_frame_label ?label live raise_ dbg in
++ `{emit_label lbl}:\n`
++
++(* Record calls to the GC -- we've moved them out of the way *)
++
++type gc_call =
++ { gc_lbl: label; (* Entry label *)
++ gc_return_lbl: label; (* Where to branch after GC *)
++ gc_frame_lbl: label } (* Label of frame descriptor *)
++
++let call_gc_sites = ref ([] : gc_call list)
++
++let emit_call_gc gc =
++ `{emit_label gc.gc_lbl}:\n`;
++ ` call {emit_symbol "caml_call_gc"}\n`;
++ `{emit_label gc.gc_frame_lbl}:\n`;
++ ` j {emit_label gc.gc_return_lbl}\n`
++
++(* Record calls to caml_ml_array_bound_error.
++ In debug mode, we maintain one call to caml_ml_array_bound_error
++ per bound check site. Otherwise, we can share a single call. *)
++
++type bound_error_call =
++ { bd_lbl: label; (* Entry label *)
++ bd_frame_lbl: label } (* Label of frame descriptor *)
++
++let bound_error_sites = ref ([] : bound_error_call list)
++
++let bound_error_label ?label dbg =
++ if !Clflags.debug || !bound_error_sites = [] then begin
++ let lbl_bound_error = new_label() in
++ let lbl_frame = record_frame_label ?label Reg.Set.empty false dbg in
++ bound_error_sites :=
++ { bd_lbl = lbl_bound_error;
++ bd_frame_lbl = lbl_frame } :: !bound_error_sites;
++ lbl_bound_error
++ end else
++ let bd = List.hd !bound_error_sites in
++ bd.bd_lbl
++
++let emit_call_bound_error bd =
++ `{emit_label bd.bd_lbl}:\n`;
++ ` call {emit_symbol "caml_ml_array_bound_error"}\n`;
++ `{emit_label bd.bd_frame_lbl}:\n`
++
++(* Record floating-point literals *)
++
++let float_literals = ref ([] : (int64 * int) list)
++
++(* Names for various instructions *)
++
++let name_for_intop = function
++ | Iadd -> "add"
++ | Isub -> "sub"
++ | Imul -> "mul"
++ | Imulh -> "mulh"
++ | Idiv -> "div"
++ | Iand -> "and"
++ | Ior -> "or"
++ | Ixor -> "xor"
++ | Ilsl -> "sll"
++ | Ilsr -> "srl"
++ | Iasr -> "sra"
++ | Imod -> "rem"
++ | _ -> fatal_error "Emit.Intop"
++
++let name_for_intop_imm = function
++ | Iadd -> "addi"
++ | Iand -> "andi"
++ | Ior -> "ori"
++ | Ixor -> "xori"
++ | Ilsl -> "slli"
++ | Ilsr -> "srli"
++ | Iasr -> "srai"
++ | _ -> fatal_error "Emit.Intop_imm"
++
++let name_for_floatop1 = function
++ | Inegf -> "fneg.d"
++ | Iabsf -> "fabs.d"
++ | _ -> fatal_error "Emit.Iopf1"
++
++let name_for_floatop2 = function
++ | Iaddf -> "fadd.d"
++ | Isubf -> "fsub.d"
++ | Imulf -> "fmul.d"
++ | Idivf -> "fdiv.d"
++ | _ -> fatal_error "Emit.Iopf2"
++
++let name_for_specific = function
++ | Imultaddf false -> "fmadd.d"
++ | Imultaddf true -> "fnmadd.d"
++ | Imultsubf false -> "fmsub.d"
++ | Imultsubf true -> "fnmsub.d"
++
++(* Name of current function *)
++let function_name = ref ""
++(* Entry point for tail recursive calls *)
++let tailrec_entry_point = ref 0
++
++(* Output the assembly code for an instruction *)
++
++let emit_instr i =
++ match i.desc with
++ Lend -> ()
++ | Lop(Imove | Ispill | Ireload) ->
++ let src = i.arg.(0) and dst = i.res.(0) in
++ if src.loc <> dst.loc then begin
++ match (src, dst) with
++ | {loc = Reg _; typ = (Val | Int | Addr)}, {loc = Reg _} ->
++ ` mv {emit_reg dst}, {emit_reg src}\n`
++ | {loc = Reg _; typ = Float}, {loc = Reg _; typ = Float} ->
++ ` fmv.d {emit_reg dst}, {emit_reg src}\n`
++ | {loc = Reg _; typ = (Val | Int | Addr)}, {loc = Stack _} ->
++ ` {emit_string stg} {emit_reg src}, {emit_stack dst}\n`
++ | {loc = Reg _; typ = Float}, {loc = Stack _} ->
++ ` fsd {emit_reg src}, {emit_stack dst}\n`
++ | {loc = Stack _; typ = (Val | Int | Addr)}, {loc = Reg _ } ->
++ ` {emit_string lg} {emit_reg dst}, {emit_stack src}\n`
++ | {loc = Stack _; typ = Float}, {loc = Reg _} ->
++ ` fld {emit_reg dst}, {emit_stack src}\n`
++ | _ ->
++ fatal_error "Emit: Imove"
++ end
++ | Lop(Iconst_int n) ->
++ ` li {emit_reg i.res.(0)}, {emit_nativeint n}\n`
++ | Lop(Iconst_float f) ->
++ let lbl = new_label() in
++ float_literals := (f, lbl) :: !float_literals;
++ ` fld {emit_reg i.res.(0)}, {emit_label lbl}, {emit_reg reg_tmp1}\n`
++ | Lop(Iconst_symbol s) ->
++ ` la {emit_reg i.res.(0)}, {emit_symbol s}\n`
++ | Lop(Icall_ind {label_after = label}) ->
++ ` jalr {emit_reg i.arg.(0)}\n`;
++ record_frame ~label i.live false i.dbg
++ | Lop(Icall_imm {func; label_after = label}) ->
++ ` call {emit_symbol func}\n`;
++ record_frame ~label i.live false i.dbg
++ | Lop(Itailcall_ind {label_after = _}) ->
++ let n = frame_size() in
++ if !contains_calls then
++ ` {emit_string lg} ra, {emit_int(n - size_addr)}(sp)\n`;
++ if n > 0 then
++ ` addi sp, sp, {emit_int n}\n`;
++ ` jr {emit_reg i.arg.(0)}\n`
++ | Lop(Itailcall_imm {func; label_after = _}) ->
++ if func = !function_name then begin
++ ` j {emit_label !tailrec_entry_point}\n`
++ end else begin
++ let n = frame_size() in
++ if !contains_calls then
++ ` {emit_string lg} ra, {emit_int(n - size_addr)}(sp)\n`;
++ if n > 0 then
++ ` addi sp, sp, {emit_int n}\n`;
++ ` tail {emit_symbol func}\n`
++ end
++ | Lop(Iextcall{func; alloc = true; label_after = label}) ->
++ ` la {emit_reg reg_t2}, {emit_symbol func}\n`;
++ ` call {emit_symbol "caml_c_call"}\n`;
++ record_frame ~label i.live false i.dbg
++ | Lop(Iextcall{func; alloc = false; label_after = _}) ->
++ ` call {emit_symbol func}\n`
++ | Lop(Istackoffset n) ->
++ assert (n mod 16 = 0);
++ ` addi sp, sp, {emit_int (-n)}\n`;
++ stack_offset := !stack_offset + n
++ | Lop(Iload(Single, Iindexed ofs)) ->
++ ` flw {emit_reg i.res.(0)}, {emit_int ofs}({emit_reg i.arg.(0)})\n`;
++ ` fcvt.d.s {emit_reg i.res.(0)}, {emit_reg i.res.(0)}\n`
++ | Lop(Iload(chunk, Iindexed ofs)) ->
++ let instr =
++ match chunk with
++ | Byte_unsigned -> "lbu"
++ | Byte_signed -> "lb"
++ | Sixteen_unsigned -> "lhu"
++ | Sixteen_signed -> "lh"
++ | Thirtytwo_unsigned -> if rv64 then "lwu" else "lw"
++ | Thirtytwo_signed -> "lw"
++ | Word_int | Word_val -> lg
++ | Single -> assert false
++ | Double | Double_u -> "fld"
++ in
++ ` {emit_string instr} {emit_reg i.res.(0)}, {emit_int ofs}({emit_reg i.arg.(0)})\n`
++ | Lop(Istore(Single, Iindexed ofs, _)) ->
++ ` fmv.x.d {emit_reg reg_tmp1}, {emit_reg i.arg.(0)}\n`;
++ ` fcvt.s.d {emit_reg i.arg.(0)}, {emit_reg i.arg.(0)}\n`;
++ ` fsw {emit_reg i.arg.(0)}, {emit_int ofs}({emit_reg i.arg.(1)})\n`;
++ ` fmv.d.x {emit_reg i.arg.(0)}, {emit_reg reg_tmp1}\n`
++ | Lop(Istore(chunk, Iindexed ofs, _)) ->
++ let instr =
++ match chunk with
++ | Byte_unsigned | Byte_signed -> "sb"
++ | Sixteen_unsigned | Sixteen_signed -> "sh"
++ | Thirtytwo_unsigned | Thirtytwo_signed -> "sw"
++ | Word_int | Word_val -> stg
++ | Single -> assert false
++ | Double | Double_u -> "fsd"
++ in
++ ` {emit_string instr} {emit_reg i.arg.(0)}, {emit_int ofs}({emit_reg i.arg.(1)})\n`
++ | Lop(Ialloc {words = n; label_after_call_gc = label; _}) ->
++ let lbl_frame_lbl = record_frame_label ?label i.live false i.dbg in
++ let lbl_redo = new_label () in
++ let lbl_call_gc = new_label () in
++ `{emit_label lbl_redo}:\n`;
++ ` addi {emit_reg reg_alloc_ptr}, {emit_reg reg_alloc_ptr}, -{emit_int n}\n`;
++ ` addi {emit_reg i.res.(0)}, {emit_reg reg_alloc_ptr}, {emit_int size_addr}\n`;
++ ` bltu {emit_reg reg_alloc_ptr}, {emit_reg reg_alloc_lim}, {emit_label lbl_call_gc}\n`;
++ call_gc_sites :=
++ { gc_lbl = lbl_call_gc;
++ gc_return_lbl = lbl_redo;
++ gc_frame_lbl = lbl_frame_lbl } :: !call_gc_sites
++ | Lop(Iintop(Icomp cmp)) ->
++ begin match cmp with
++ | Isigned Clt ->
++ ` slt {emit_reg i.res.(0)}, {emit_reg i.arg.(0)}, {emit_reg i.arg.(1)}\n`
++ | Isigned Cge ->
++ ` slt {emit_reg i.res.(0)}, {emit_reg i.arg.(0)}, {emit_reg i.arg.(1)}\n`;
++ ` xori {emit_reg i.res.(0)}, {emit_reg i.res.(0)}, 1\n`;
++ | Isigned Cgt ->
++ ` slt {emit_reg i.res.(0)}, {emit_reg i.arg.(1)}, {emit_reg i.arg.(0)}\n`
++ | Isigned Cle ->
++ ` slt {emit_reg i.res.(0)}, {emit_reg i.arg.(1)}, {emit_reg i.arg.(0)}\n`;
++ ` xori {emit_reg i.res.(0)}, {emit_reg i.res.(0)}, 1\n`;
++ | Isigned Ceq | Iunsigned Ceq ->
++ ` sub {emit_reg i.res.(0)}, {emit_reg i.arg.(0)}, {emit_reg i.arg.(1)}\n`;
++ ` seqz {emit_reg i.res.(0)}, {emit_reg i.res.(0)}\n`
++ | Isigned Cne | Iunsigned Cne ->
++ ` sub {emit_reg i.res.(0)}, {emit_reg i.arg.(0)}, {emit_reg i.arg.(1)}\n`;
++ ` snez {emit_reg i.res.(0)}, {emit_reg i.res.(0)}\n`
++ | Iunsigned Clt ->
++ ` sltu {emit_reg i.res.(0)}, {emit_reg i.arg.(0)}, {emit_reg i.arg.(1)}\n`
++ | Iunsigned Cge ->
++ ` sltu {emit_reg i.res.(0)}, {emit_reg i.arg.(0)}, {emit_reg i.arg.(1)}\n`;
++ ` xori {emit_reg i.res.(0)}, {emit_reg i.res.(0)}, 1\n`;
++ | Iunsigned Cgt ->
++ ` sltu {emit_reg i.res.(0)}, {emit_reg i.arg.(1)}, {emit_reg i.arg.(0)}\n`
++ | Iunsigned Cle ->
++ ` sltu {emit_reg i.res.(0)}, {emit_reg i.arg.(1)}, {emit_reg i.arg.(0)}\n`;
++ ` xori {emit_reg i.res.(0)}, {emit_reg i.res.(0)}, 1\n`;
++ end
++ | Lop(Iintop (Icheckbound {label_after_error = label; _})) ->
++ let lbl = bound_error_label ?label i.dbg in
++ ` bleu {emit_reg i.arg.(0)}, {emit_reg i.arg.(1)}, {emit_label lbl}\n`
++ | Lop(Iintop op) ->
++ let instr = name_for_intop op in
++ ` {emit_string instr} {emit_reg i.res.(0)}, {emit_reg i.arg.(0)}, {emit_reg i.arg.(1)}\n`
++ | Lop(Iintop_imm(Isub, n)) ->
++ ` addi {emit_reg i.res.(0)}, {emit_reg i.arg.(0)}, {emit_int(-n)}\n`
++ | Lop(Iintop_imm(Icomp _, _)) ->
++ fatal_error "Emit.emit_instr (Iintop_imm (Icomp _, _))"
++ | Lop(Iintop_imm(Icheckbound {label_after_error = label; _}, n)) ->
++ let lbl = bound_error_label ?label i.dbg in
++ ` li {emit_reg reg_tmp1}, {emit_int n}\n`;
++ ` bleu {emit_reg i.arg.(0)}, {emit_reg reg_tmp1}, {emit_label lbl}\n`
++ | Lop(Iintop_imm(op, n)) ->
++ let instr = name_for_intop_imm op in
++ ` {emit_string instr} {emit_reg i.res.(0)}, {emit_reg i.arg.(0)}, {emit_int n}\n`
++ | Lop(Inegf | Iabsf as op) ->
++ let instr = name_for_floatop1 op in
++ ` {emit_string instr} {emit_reg i.res.(0)}, {emit_reg i.arg.(0)}\n`
++ | Lop(Iaddf | Isubf | Imulf | Idivf as op) ->
++ let instr = name_for_floatop2 op in
++ ` {emit_string instr} {emit_reg i.res.(0)}, {emit_reg i.arg.(0)}, {emit_reg i.arg.(1)}\n`
++ | Lop(Ifloatofint) ->
++ let name = if rv64 then "fcvt.d.l" else "fcvt.d.w" in
++ ` {emit_string name} {emit_reg i.res.(0)}, {emit_reg i.arg.(0)}\n`
++ | Lop(Iintoffloat) ->
++ let name = if rv64 then "fcvt.l.d" else "fcvt.w.d" in
++ ` {emit_string name} {emit_reg i.res.(0)}, {emit_reg i.arg.(0)}\n`
++ | Lop(Ispecific sop) ->
++ let instr = name_for_specific sop in
++ ` {emit_string instr} {emit_reg i.res.(0)}, {emit_reg i.arg.(0)}, {emit_reg i.arg.(1)}, {emit_reg i.arg.(2)}\n`
++ | Lreloadretaddr ->
++ let n = frame_size () in
++ ` {emit_string lg} ra, {emit_int(n - size_addr)}(sp)\n`
++ | Lreturn ->
++ let n = frame_size() in
++ if n > 0 then
++ ` addi sp, sp, {emit_int n}\n`;
++ ` ret\n`
++ | Llabel lbl ->
++ `{emit_label lbl}:\n`
++ | Lbranch lbl ->
++ ` j {emit_label lbl}\n`
++ | Lcondbranch(tst, lbl) ->
++ begin match tst with
++ | Itruetest ->
++ ` bnez {emit_reg i.arg.(0)}, {emit_label lbl}\n`
++ | Ifalsetest ->
++ ` beqz {emit_reg i.arg.(0)}, {emit_label lbl}\n`
++ | Iinttest cmp ->
++ let name = match cmp with
++ | Iunsigned Ceq | Isigned Ceq -> "beq"
++ | Iunsigned Cne | Isigned Cne -> "bne"
++ | Iunsigned Cle -> "bleu" | Isigned Cle -> "ble"
++ | Iunsigned Cge -> "bgeu" | Isigned Cge -> "bge"
++ | Iunsigned Clt -> "bltu" | Isigned Clt -> "blt"
++ | Iunsigned Cgt -> "bgtu" | Isigned Cgt -> "bgt"
++ in
++ ` {emit_string name} {emit_reg i.arg.(0)}, {emit_reg i.arg.(1)}, {emit_label lbl}\n`
++ | Iinttest_imm _ ->
++ fatal_error "Emit.emit_instr (Iinttest_imm _)"
++ | Ifloattest(cmp, neg) ->
++ let neg = match cmp with
++ | Ceq -> ` feq.d {emit_reg reg_tmp1}, {emit_reg i.arg.(0)}, {emit_reg i.arg.(1)}\n`; neg
++ | Cne -> ` feq.d {emit_reg reg_tmp1}, {emit_reg i.arg.(0)}, {emit_reg i.arg.(1)}\n`; not neg
++ | Clt -> ` flt.d {emit_reg reg_tmp1}, {emit_reg i.arg.(0)}, {emit_reg i.arg.(1)}\n`; neg
++ | Cgt -> ` flt.d {emit_reg reg_tmp1}, {emit_reg i.arg.(1)}, {emit_reg i.arg.(0)}\n`; neg
++ | Cle -> ` fle.d {emit_reg reg_tmp1}, {emit_reg i.arg.(0)}, {emit_reg i.arg.(1)}\n`; neg
++ | Cge -> ` fle.d {emit_reg reg_tmp1}, {emit_reg i.arg.(1)}, {emit_reg i.arg.(0)}\n`; neg
++ in
++ if neg then
++ ` beqz {emit_reg reg_tmp1}, {emit_label lbl}\n`
++ else
++ ` bnez {emit_reg reg_tmp1}, {emit_label lbl}\n`
++ | Ioddtest ->
++ ` andi {emit_reg reg_tmp1}, {emit_reg i.arg.(0)}, 1\n`;
++ ` bnez {emit_reg reg_tmp1}, {emit_label lbl}\n`
++ | Ieventest ->
++ ` andi {emit_reg reg_tmp1}, {emit_reg i.arg.(0)}, 1\n`;
++ ` beqz {emit_reg reg_tmp1}, {emit_label lbl}\n`
++ end
++ | Lcondbranch3(lbl0, lbl1, lbl2) ->
++ ` addi {emit_reg reg_tmp1}, {emit_reg i.arg.(0)}, -1\n`;
++ begin match lbl0 with
++ | None -> ()
++ | Some lbl -> ` bltz {emit_reg reg_tmp1}, {emit_label lbl}\n`
++ end;
++ begin match lbl1 with
++ | None -> ()
++ | Some lbl -> ` beqz {emit_reg reg_tmp1}, {emit_label lbl}\n`
++ end;
++ begin match lbl2 with
++ | None -> ()
++ | Some lbl -> ` bgtz {emit_reg reg_tmp1}, {emit_label lbl}\n`
++ end
++ | Lswitch jumptbl -> (* FIXME FIXME ? *)
++ let lbl = new_label() in
++ ` la {emit_reg reg_tmp1}, {emit_label lbl}\n`;
++ ` slli {emit_reg reg_tmp2}, {emit_reg i.arg.(0)}, 2\n`;
++ ` add {emit_reg reg_tmp1}, {emit_reg reg_tmp1}, {emit_reg reg_tmp2}\n`;
++ ` jr {emit_reg reg_tmp1}\n`;
++ `{emit_label lbl}:\n`;
++ for i = 0 to Array.length jumptbl - 1 do
++ ` j {emit_label jumptbl.(i)}\n`
++ done
++ | Lsetuptrap lbl ->
++ ` addi sp, sp, -16\n`;
++ ` jal {emit_label lbl}\n`
++ | Lpushtrap ->
++ stack_offset := !stack_offset + 16;
++ ` {emit_string stg} ra, {emit_int size_addr}(sp)\n`;
++ ` {emit_string stg} {emit_reg reg_trap}, 0(sp)\n`;
++ ` mv {emit_reg reg_trap}, sp\n`
++ | Lpoptrap ->
++ ` {emit_string lg} {emit_reg reg_trap}, 0(sp)\n`;
++ ` addi sp, sp, 16\n`;
++ stack_offset := !stack_offset - 16
++ | Lraise k ->
++ begin match !Clflags.debug, k with
++ | true, Cmm.Raise_withtrace ->
++ ` call {emit_symbol "caml_raise_exn"}\n`;
++ record_frame Reg.Set.empty true i.dbg
++ | false, _
++ | true, Cmm.Raise_notrace ->
++ ` mv sp, {emit_reg reg_trap}\n`;
++ ` {emit_string lg} {emit_reg reg_tmp1}, {emit_int size_addr}(sp)\n`;
++ ` {emit_string lg} {emit_reg reg_trap}, 0(sp)\n`;
++ ` addi sp, sp, 16\n`;
++ ` jalr {emit_reg reg_tmp1}\n`
++ end
++
++(* Emit a sequence of instructions *)
++
++let rec emit_all = function
++ | {desc = Lend} -> () | i -> emit_instr i; emit_all i.next
++
++(* Emission of a function declaration *)
++
++let fundecl fundecl =
++ function_name := fundecl.fun_name;
++ tailrec_entry_point := new_label();
++ stack_offset := 0;
++ call_gc_sites := [];
++ bound_error_sites := [];
++ float_literals := [];
++ ` .globl {emit_symbol fundecl.fun_name}\n`;
++ ` .type {emit_symbol fundecl.fun_name}, @function\n`;
++ ` {emit_string code_space}\n`;
++ ` .align 2\n`;
++ `{emit_symbol fundecl.fun_name}:\n`;
++ let n = frame_size() in
++ if n > 0 then
++ ` addi sp, sp, {emit_int(-n)}\n`;
++ if !contains_calls then
++ ` {emit_string stg} ra, {emit_int(n - size_addr)}(sp)\n`;
++ `{emit_label !tailrec_entry_point}:\n`;
++ emit_all fundecl.fun_body;
++ List.iter emit_call_gc !call_gc_sites;
++ List.iter emit_call_bound_error !bound_error_sites;
++ ` .size {emit_symbol fundecl.fun_name}, .-{emit_symbol fundecl.fun_name}\n`;
++ (* Emit the float literals *)
++ if !float_literals <> [] then begin
++ ` {emit_string rodata_space}\n`;
++ ` .align 3\n`;
++ List.iter
++ (fun (f, lbl) ->
++ `{emit_label lbl}:\n`;
++ if rv64
++ then emit_float64_directive ".quad" f
++ else emit_float64_split_directive ".long" f)
++ !float_literals;
++ end
++
++(* Emission of data *)
++
++let declare_global_data s =
++ ` .globl {emit_symbol s}\n`;
++ ` .type {emit_symbol s}, @object\n`
++
++let emit_item = function
++ | Cglobal_symbol s ->
++ declare_global_data s
++ | Cdefine_symbol s ->
++ `{emit_symbol s}:\n`;
++ | Cint8 n ->
++ ` .byte {emit_int n}\n`
++ | Cint16 n ->
++ ` .short {emit_int n}\n`
++ | Cint32 n ->
++ ` .long {emit_nativeint n}\n`
++ | Cint n ->
++ ` {emit_string datag} {emit_nativeint n}\n`
++ | Csingle f ->
++ emit_float32_directive ".long" (Int32.bits_of_float f)
++ | Cdouble f ->
++ if rv64
++ then emit_float64_directive ".quad" (Int64.bits_of_float f)
++ else emit_float64_split_directive ".long" (Int64.bits_of_float f)
++ | Csymbol_address s ->
++ ` {emit_string datag} {emit_symbol s}\n`
++ | Cstring s ->
++ emit_bytes_directive " .byte " s
++ | Cskip n ->
++ if n > 0 then ` .space {emit_int n}\n`
++ | Calign n ->
++ ` .align {emit_int (Misc.log2 n)}\n`
++
++let data l =
++ ` {emit_string data_space}\n`;
++ List.iter emit_item l
++
++(* Beginning / end of an assembly file *)
++
++let begin_assembly() =
++ (* Emit the beginning of the segments *)
++ let lbl_begin = Compilenv.make_symbol (Some "data_begin") in
++ ` {emit_string data_space}\n`;
++ declare_global_data lbl_begin;
++ `{emit_symbol lbl_begin}:\n`;
++ let lbl_begin = Compilenv.make_symbol (Some "code_begin") in
++ ` {emit_string code_space}\n`;
++ declare_global_data lbl_begin;
++ `{emit_symbol lbl_begin}:\n`
++
++let end_assembly() =
++ ` {emit_string code_space}\n`;
++ let lbl_end = Compilenv.make_symbol (Some "code_end") in
++ declare_global_data lbl_end;
++ `{emit_symbol lbl_end}:\n`;
++ ` .long 0\n`;
++ ` {emit_string data_space}\n`;
++ let lbl_end = Compilenv.make_symbol (Some "data_end") in
++ declare_global_data lbl_end;
++ `{emit_symbol lbl_end}:\n`;
++ ` {emit_string datag} 0\n`;
++ (* Emit the frame descriptors *)
++ ` {emit_string rodata_space}\n`;
++ let lbl = Compilenv.make_symbol (Some "frametable") in
++ declare_global_data lbl;
++ `{emit_symbol lbl}:\n`;
++ emit_frames
++ { efa_code_label = (fun l -> ` {emit_string datag} {emit_label l}\n`);
++ efa_data_label = (fun l -> ` {emit_string datag} {emit_label l}\n`);
++ efa_16 = (fun n -> ` .short {emit_int n}\n`);
++ efa_32 = (fun n -> ` .long {emit_int32 n}\n`);
++ efa_word = (fun n -> ` {emit_string datag} {emit_int n}\n`);
++ efa_align = (fun n -> ` .align {emit_int (Misc.log2 n)}\n`);
++ efa_label_rel = (fun lbl ofs ->
++ ` .long ({emit_label lbl} - .) + {emit_int32 ofs}\n`);
++ efa_def_label = (fun l -> `{emit_label l}:\n`);
++ efa_string = (fun s -> emit_bytes_directive " .byte " (s ^ "\000"))
++ }
+diff --git a/asmcomp/riscv/proc.ml b/asmcomp/riscv/proc.ml
+new file mode 100644
+index 000000000..c0b0dcdb8
+--- /dev/null
++++ b/asmcomp/riscv/proc.ml
+@@ -0,0 +1,301 @@
++(***********************************************************************)
++(* *)
++(* OCaml *)
++(* *)
++(* Nicolas Ojeda Bar <n.oje.bar(a)gmail.com> *)
++(* *)
++(* Copyright 2016 Institut National de Recherche en Informatique et *)
++(* en Automatique. All rights reserved. This file is distributed *)
++(* under the terms of the Q Public License version 1.0. *)
++(* *)
++(***********************************************************************)
++
++(* Description of the RISC-V *)
++
++open Misc
++open Cmm
++open Reg
++open Arch
++open Mach
++
++(* Instruction selection *)
++
++let word_addressed = false
++
++(* Registers available for register allocation *)
++
++(* Integer register map:
++ zero always zero
++ ra return address
++ sp, gp, tp stack pointer, global pointer, thread pointer (preserved by C)
++ a0 - a7 0 - 7 arguments/results
++ s2 - s9 8 - 15 arguments/results (preserved by C)
++ t2 - t6 16 - 20 temporary
++ t0 21 temporary (used by assembler)
++ t1 22 temporary (reserved for code gen)
++ s0 23 frame pointer (preserved by C)
++ s1 24 trap pointer (preserved by C)
++ s10 25 allocation pointer (preserved by C)
++ s11 26 allocation limit (preserved by C)
++ Floating-point register map:
++ ft0 - ft7 100 - 107 temporary
++ fs0 - fs1 108 - 109 general purpose (preserved by C)
++ fa0 - fa7 110 - 117 arguments/results
++ fs2 - fs9 118 - 125 arguments/results (preserved by C)
++ fs10 - fs11 126 - 127 general purpose (preserved by C)
++ ft8 - ft11 128 - 131 temporary
++*)
++
++let int_reg_name =
++ [| "a0"; "a1"; "a2"; "a3"; "a4"; "a5"; "a6"; "a7";
++ "s2"; "s3"; "s4"; "s5"; "s6"; "s7"; "s8"; "s9";
++ "t2"; "t3"; "t4"; "t5"; "t6";
++ "t0"; "t1";
++ "s0"; "s1"; "s10"; "s11" |]
++
++let float_reg_name =
++ [| "ft0"; "ft1"; "ft2"; "ft3"; "ft4"; "ft5"; "ft6"; "ft7";
++ "fs0"; "fs1";
++ "fa0"; "fa1"; "fa2"; "fa3"; "fa4"; "fa5"; "fa6"; "fa7";
++ "fs2"; "fs3"; "fs4"; "fs5"; "fs6"; "fs7"; "fs8"; "fs9"; "fs10"; "fs11";
++ "ft8"; "ft9"; "ft10"; "ft11" |]
++
++let num_register_classes = 2
++
++let register_class r =
++ match r.typ with
++ | Val | Int | Addr -> 0
++ | Float -> 1
++
++let num_available_registers = [| 21; 32 |]
++
++let first_available_register = [| 0; 100 |]
++
++let register_name r =
++ if r < 100 then int_reg_name.(r) else float_reg_name.(r - 100)
++
++let rotate_registers = true
++
++(* Representation of hard registers by pseudo-registers *)
++
++let hard_int_reg =
++ let v = Array.make 27 Reg.dummy in
++ for i = 0 to 26 do
++ v.(i) <- Reg.at_location Int (Reg i)
++ done;
++ v
++
++let hard_float_reg =
++ let v = Array.make 32 Reg.dummy in
++ for i = 0 to 31 do
++ v.(i) <- Reg.at_location Float (Reg(100 + i))
++ done;
++ v
++
++let all_phys_regs =
++ Array.append hard_int_reg hard_float_reg
++
++let phys_reg n =
++ if n < 100 then hard_int_reg.(n) else hard_float_reg.(n - 100)
++
++let stack_slot slot ty =
++ Reg.at_location ty (Stack slot)
++
++(* Calling conventions *)
++
++let calling_conventions
++ first_int last_int first_float last_float make_stack arg =
++ let loc = Array.make (Array.length arg) Reg.dummy in
++ let int = ref first_int in
++ let float = ref first_float in
++ let ofs = ref 0 in
++ for i = 0 to Array.length arg - 1 do
++ match arg.(i).typ with
++ | Val | Int | Addr as ty ->
++ if !int <= last_int then begin
++ loc.(i) <- phys_reg !int;
++ incr int
++ end else begin
++ loc.(i) <- stack_slot (make_stack !ofs) ty;
++ ofs := !ofs + size_int
++ end
++ | Float ->
++ if !float <= last_float then begin
++ loc.(i) <- phys_reg !float;
++ incr float
++ end else begin
++ loc.(i) <- stack_slot (make_stack !ofs) Float;
++ ofs := !ofs + size_float
++ end
++ done;
++ (loc, Misc.align !ofs 16) (* Keep stack 16-aligned. *)
++
++let incoming ofs = Incoming ofs
++let outgoing ofs = Outgoing ofs
++let not_supported _ = fatal_error "Proc.loc_results: cannot call"
++
++let max_arguments_for_tailcalls = 16
++
++let loc_spacetime_node_hole = Reg.dummy (* Spacetime unsupported *)
++
++(* OCaml calling convention:
++ first integer args in a0 .. a7, s2 .. s9
++ first float args in fa0 .. fa7, fs2 .. fs9
++ remaining args on stack.
++ Return values in a0 .. a7, s2 .. s9 or fa0 .. fa7, fs2 .. fs9. *)
++
++let single_regs arg = Array.map (fun arg -> [| arg |]) arg
++let ensure_single_regs res =
++ Array.map (function
++ | [| res |] -> res
++ | _ -> failwith "proc.ensure_single_regs"
++ ) res
++
++let loc_arguments arg =
++ calling_conventions 0 15 110 125 outgoing arg
++
++let loc_parameters arg =
++ let (loc, _ofs) =
++ calling_conventions 0 15 110 125 incoming arg
++ in
++ loc
++
++let loc_results res =
++ let (loc, _ofs) =
++ calling_conventions 0 15 110 125 not_supported res
++ in
++ loc
++
++(* C calling convention:
++ first integer args in a0 .. a7
++ first float args in fa0 .. fa7
++ remaining args on stack.
++ Return values in a0 .. a1 or fa0 .. fa1. *)
++
++let external_calling_conventions
++ first_int last_int first_float last_float make_stack arg =
++ let loc = Array.make (Array.length arg) [| Reg.dummy |] in
++ let int = ref first_int in
++ let float = ref first_float in
++ let ofs = ref 0 in
++ for i = 0 to Array.length arg - 1 do
++ match arg.(i) with
++ | [| arg |] ->
++ begin match arg.typ with
++ | Val | Int | Addr as ty ->
++ if !int <= last_int then begin
++ loc.(i) <- [| phys_reg !int |];
++ incr int;
++ incr float;
++ end else begin
++ loc.(i) <- [| stack_slot (make_stack !ofs) ty |];
++ ofs := !ofs + size_int
++ end
++ | Float ->
++ if !float <= last_float then begin
++ loc.(i) <- [| phys_reg !float |];
++ incr float;
++ incr int;
++ end else begin
++ loc.(i) <- [| stack_slot (make_stack !ofs) Float |];
++ ofs := !ofs + size_float
++ end
++ end
++ | [| arg1; arg2 |] ->
++ (* Passing of 64-bit quantities to external functions on 32-bit
++ platform. *)
++ assert (size_int = 4);
++ begin match arg1.typ, arg2.typ with
++ | Int, Int ->
++ int := Misc.align !int 2;
++ if !int <= last_int - 1 then begin
++ let reg_lower = phys_reg !int in
++ let reg_upper = phys_reg (!int + 1) in
++ loc.(i) <- [| reg_lower; reg_upper |];
++ int := !int + 2
++ end else begin
++ let size_int64 = 8 in
++ ofs := Misc.align !ofs size_int64;
++ let ofs_lower = !ofs in
++ let ofs_upper = !ofs + size_int in
++ let stack_lower = stack_slot (make_stack ofs_lower) Int in
++ let stack_upper = stack_slot (make_stack ofs_upper) Int in
++ loc.(i) <- [| stack_lower; stack_upper |];
++ ofs := !ofs + size_int64
++ end
++ | _ ->
++ let f = function Int -> "I" | Addr -> "A" | Val -> "V" | Float -> "F" in
++ fatal_error (Printf.sprintf "Proc.calling_conventions: bad register \
++ type(s) for multi-register argument: %s, %s"
++ (f arg1.typ) (f arg2.typ))
++ end
++ | _ ->
++ fatal_error "Proc.calling_conventions: bad number of register for \
++ multi-register argument"
++ done;
++ (loc, Misc.align !ofs 16) (* Keep stack 16-aligned. *)
++
++let loc_external_arguments arg =
++ external_calling_conventions 0 7 110 117 outgoing arg
++
++let loc_external_results res =
++ let (loc, _ofs) =
++ external_calling_conventions 0 1 110 111 not_supported (single_regs res)
++ in
++ ensure_single_regs loc
++
++(* Exceptions are in GPR 3 *)
++
++let loc_exn_bucket = phys_reg 0
++
++(* Volatile registers: none *)
++
++let regs_are_volatile _ = false
++
++(* Registers destroyed by operations *)
++
++let destroyed_at_c_call =
++ Array.of_list(List.map phys_reg
++ [0; 1; 2; 3; 4; 5; 6; 7; 16; 17; 18; 19; 20; (* 21; 22; *)
++ 100; 101; 102; 103; 104; 105; 106; 107; 110; 111; 112; 113; 114; 115; 116;
++ 117; 128; 129; 130; 131])
++
++let destroyed_at_oper = function
++ | Iop(Icall_ind _ | Icall_imm _ | Iextcall{alloc = true; _}) -> all_phys_regs
++ | Iop(Iextcall{alloc = false; _}) -> destroyed_at_c_call
++ | _ -> [||]
++
++let destroyed_at_raise = all_phys_regs
++
++(* Maximal register pressure *)
++
++let safe_register_pressure = function
++ | Iextcall _ -> 15
++ | _ -> 21
++
++let max_register_pressure = function
++ | Iextcall _ -> [| 15; 18 |]
++ | _ -> [| 21; 30 |]
++
++(* Pure operations (without any side effect besides updating their result
++ registers). *)
++
++let op_is_pure = function
++ | Icall_ind _ | Icall_imm _ | Itailcall_ind _ | Itailcall_imm _
++ | Iextcall _ | Istackoffset _ | Istore _ | Ialloc _
++ | Iintop(Icheckbound _) | Iintop_imm(Icheckbound _, _) -> false
++ | Ispecific(Imultaddf _ | Imultsubf _) -> true
++ | _ -> true
++
++(* Layout of the stack *)
++
++let num_stack_slots = [| 0; 0 |]
++let contains_calls = ref false
++
++(* Calling the assembler *)
++
++let assemble_file infile outfile =
++ Ccomp.command
++ (Config.asm ^ " -o " ^ Filename.quote outfile ^ " " ^ Filename.quote infile)
++
++let init () = ()
+diff --git a/asmcomp/riscv/reload.ml b/asmcomp/riscv/reload.ml
+new file mode 100644
+index 000000000..85b970342
+--- /dev/null
++++ b/asmcomp/riscv/reload.ml
+@@ -0,0 +1,16 @@
++(***********************************************************************)
++(* *)
++(* OCaml *)
++(* *)
++(* Nicolas Ojeda Bar <n.oje.bar(a)gmail.com> *)
++(* *)
++(* Copyright 2016 Institut National de Recherche en Informatique et *)
++(* en Automatique. All rights reserved. This file is distributed *)
++(* under the terms of the Q Public License version 1.0. *)
++(* *)
++(***********************************************************************)
++
++(* Reloading for the RISC-V *)
++
++let fundecl f =
++ (new Reloadgen.reload_generic)#fundecl f
+diff --git a/asmcomp/riscv/scheduling.ml b/asmcomp/riscv/scheduling.ml
+new file mode 100644
+index 000000000..e436be1cc
+--- /dev/null
++++ b/asmcomp/riscv/scheduling.ml
+@@ -0,0 +1,19 @@
++(***********************************************************************)
++(* *)
++(* OCaml *)
++(* *)
++(* Nicolas Ojeda Bar <n.oje.bar(a)gmail.com> *)
++(* *)
++(* Copyright 2016 Institut National de Recherche en Informatique et *)
++(* en Automatique. All rights reserved. This file is distributed *)
++(* under the terms of the Q Public License version 1.0. *)
++(* *)
++(***********************************************************************)
++
++(* Instruction scheduling for the RISC-V *)
++
++let _ = let module M = Schedgen in () (* to create a dependency *)
++
++(* Scheduling is turned off. *)
++
++let fundecl f = f
+diff --git a/asmcomp/riscv/selection.ml b/asmcomp/riscv/selection.ml
+new file mode 100644
+index 000000000..60ec5cb4e
+--- /dev/null
++++ b/asmcomp/riscv/selection.ml
+@@ -0,0 +1,85 @@
++(***********************************************************************)
++(* *)
++(* OCaml *)
++(* *)
++(* Nicolas Ojeda Bar <n.oje.bar(a)gmail.com> *)
++(* *)
++(* Copyright 2016 Institut National de Recherche en Informatique et *)
++(* en Automatique. All rights reserved. This file is distributed *)
++(* under the terms of the Q Public License version 1.0. *)
++(* *)
++(***********************************************************************)
++
++(* Instruction selection for the RISC-V processor *)
++
++open Cmm
++open Arch
++open Mach
++
++(* Instruction selection *)
++
++class selector = object (self)
++
++inherit Selectgen.selector_generic as super
++
++method is_immediate n = (n <= 0x7FF) && (n >= -0x800)
++
++method select_addressing _ = function
++ | Cop(Cadda, [arg; Cconst_int n]) when self#is_immediate n ->
++ (Iindexed n, arg)
++ | Cop(Cadda, [arg1; Cop(Caddi, [arg2; Cconst_int n])]) when self#is_immediate n ->
++ (Iindexed n, Cop(Caddi, [arg1; arg2]))
++ | arg ->
++ (Iindexed 0, arg)
++
++method! select_operation op args =
++ match (op, args) with
++ (* RISC-V does not support immediate operands for multiply high *)
++ | (Cmulhi, _) -> (Iintop Imulh, args)
++ (* The and, or and xor instructions have a different range of immediate
++ operands than the other instructions *)
++ | (Cand, _) -> self#select_logical Iand args
++ | (Cor, _) -> self#select_logical Ior args
++ | (Cxor, _) -> self#select_logical Ixor args
++ (* Recognize (neg-)mult-add and (neg-)mult-sub instructions *)
++ | (Caddf, [Cop(Cmulf, [arg1; arg2]); arg3])
++ | (Caddf, [arg3; Cop(Cmulf, [arg1; arg2])]) ->
++ (Ispecific (Imultaddf false), [arg1; arg2; arg3])
++ | (Csubf, [Cop(Cmulf, [arg1; arg2]); arg3]) ->
++ (Ispecific (Imultsubf false), [arg1; arg2; arg3])
++ | (Cnegf, [Cop(Csubf, [Cop(Cmulf, [arg1; arg2]); arg3])]) ->
++ (Ispecific (Imultsubf true), [arg1; arg2; arg3])
++ | (Cnegf, [Cop(Caddf, [Cop(Cmulf, [arg1; arg2]); arg3])]) ->
++ (Ispecific (Imultaddf true), [arg1; arg2; arg3])
++ (* RISC-V does not support immediate operands for comparison operators *)
++ | (Ccmpi comp, args) -> (Iintop(Icomp (Isigned comp)), args)
++ | (Ccmpa comp, args) -> (Iintop(Icomp (Iunsigned comp)), args)
++ | (Cmuli, _) -> (Iintop Imul, args)
++ | _ ->
++ super#select_operation op args
++
++method select_logical op = function
++ | [arg; Cconst_int n] when n >= 0 && n <= 0xFFF ->
++ (Iintop_imm(op, n), [arg])
++ | [Cconst_int n; arg] when n >= 0 && n <= 0xFFF ->
++ (Iintop_imm(op, n), [arg])
++ | args ->
++ (Iintop op, args)
++
++(* Instruction selection for conditionals *)
++
++method! select_condition = function
++ | Cop(Ccmpi cmp, args) ->
++ (Iinttest(Isigned cmp), Ctuple args)
++ | Cop(Ccmpa cmp, args) ->
++ (Iinttest(Iunsigned cmp), Ctuple args)
++ | Cop(Ccmpf cmp, args) ->
++ (Ifloattest(cmp, false), Ctuple args)
++ | Cop(Cand, [arg; Cconst_int 1]) ->
++ (Ioddtest, arg)
++ | arg ->
++ (Itruetest, arg)
++
++end
++
++let fundecl f = (new selector)#emit_fundecl f
+diff --git a/asmrun/riscv.S b/asmrun/riscv.S
+new file mode 100644
+index 000000000..a82048efc
+--- /dev/null
++++ b/asmrun/riscv.S
+@@ -0,0 +1,424 @@
++/***********************************************************************/
++/* */
++/* OCaml */
++/* */
++/* Nicolas Ojeda Bar <n.oje.bar(a)gmail.com> */
++/* */
++/* Copyright 1996 Institut National de Recherche en Informatique et */
++/* en Automatique. All rights reserved. This file is distributed */
++/* under the terms of the GNU Library General Public License, with */
++/* the special exception on linking described in file ../LICENSE. */
++/* */
++/***********************************************************************/
++
++/* Asm part of the runtime system, RISC-V processor, 64-bit mode */
++/* Must be preprocessed by cpp */
++
++#define TRAP_PTR s1
++#define ALLOC_PTR s10
++#define ALLOC_LIMIT s11
++#define TMP0 t0
++#define TMP1 t1
++#define ARG t2
++
++#if defined(MODEL_riscv64)
++#define store sd
++#define load ld
++#define WSZ 8
++#else
++#define store sw
++#define load lw
++#define WSZ 4
++#endif
++
++#if defined(__PIC__)
++ .option pic
++#else
++ .option nopic
++#endif
++
++ .section .text
++/* Invoke the garbage collector. */
++
++ .globl caml_system__code_begin
++caml_system__code_begin:
++
++ .align 2
++ .globl caml_call_gc
++ .type caml_call_gc, @function
++caml_call_gc:
++ /* Record return address */
++ store ra, caml_last_return_address, TMP0
++ /* Record lowest stack address */
++ mv TMP1, sp
++ store sp, caml_bottom_of_stack, TMP0
++.Lcaml_call_gc:
++ /* Set up stack space, saving return address */
++ /* (1 reg for RA, 1 reg for FP, 21 allocatable int regs, 20 caller-save float regs) * 8 */
++ /* + 1 for alignment */
++ addi sp, sp, -0x160
++ mv s0, sp
++ store ra, 0x8(sp)
++ store s0, 0x0(sp)
++ /* Save allocatable integer registers on the stack,
++ in the order given in proc.ml */
++ store a0, 0x10(sp)
++ store a1, 0x18(sp)
++ store a2, 0x20(sp)
++ store a3, 0x28(sp)
++ store a4, 0x30(sp)
++ store a5, 0x38(sp)
++ store a6, 0x40(sp)
++ store a7, 0x48(sp)
++ store s2, 0x50(sp)
++ store s3, 0x58(sp)
++ store s4, 0x60(sp)
++ store s5, 0x68(sp)
++ store s6, 0x70(sp)
++ store s7, 0x78(sp)
++ store s8, 0x80(sp)
++ store s9, 0x88(sp)
++ store t2, 0x90(sp)
++ store t3, 0x98(sp)
++ store t4, 0xa0(sp)
++ store t5, 0xa8(sp)
++ store t6, 0xb0(sp)
++ /* Save caller-save floating-point registers on the stack
++ (callee-saves are preserved by caml_garbage_collection) */
++ fsd ft0, 0xb8(sp)
++ fsd ft1, 0xc0(sp)
++ fsd ft2, 0xc8(sp)
++ fsd ft3, 0xd0(sp)
++ fsd ft4, 0xd8(sp)
++ fsd ft5, 0xe0(sp)
++ fsd ft6, 0xe8(sp)
++ fsd ft7, 0xf0(sp)
++ fsd fa0, 0xf8(sp)
++ fsd fa1, 0x100(sp)
++ fsd fa2, 0x108(sp)
++ fsd fa3, 0x110(sp)
++ fsd fa4, 0x118(sp)
++ fsd fa5, 0x120(sp)
++ fsd fa6, 0x128(sp)
++ fsd fa7, 0x130(sp)
++ fsd ft8, 0x138(sp)
++ fsd ft9, 0x140(sp)
++ fsd ft9, 0x148(sp)
++ fsd ft10, 0x150(sp)
++ fsd ft11, 0x158(sp)
++ /* Store pointer to saved integer registers in caml_gc_regs */
++ addi TMP1, sp, 16
++ store TMP1, caml_gc_regs, TMP0
++ /* Save current allocation pointer for debugging purposes */
++ store ALLOC_PTR, caml_young_ptr, TMP0
++ /* Save trap pointer in case an exception is raised during GC */
++ store TRAP_PTR, caml_exception_pointer, TMP0
++ /* Call the garbage collector */
++ call caml_garbage_collection
++ /* Restore registers */
++ load a0, 0x10(sp)
++ load a1, 0x18(sp)
++ load a2, 0x20(sp)
++ load a3, 0x28(sp)
++ load a4, 0x30(sp)
++ load a5, 0x38(sp)
++ load a6, 0x40(sp)
++ load a7, 0x48(sp)
++ load s2, 0x50(sp)
++ load s3, 0x58(sp)
++ load s4, 0x60(sp)
++ load s5, 0x68(sp)
++ load s6, 0x70(sp)
++ load s7, 0x78(sp)
++ load s8, 0x80(sp)
++ load s9, 0x88(sp)
++ load t2, 0x90(sp)
++ load t3, 0x98(sp)
++ load t4, 0xa0(sp)
++ load t5, 0xa8(sp)
++ load t6, 0xb0(sp)
++ fld ft0, 0xb8(sp)
++ fld ft1, 0xc0(sp)
++ fld ft2, 0xc8(sp)
++ fld ft3, 0xd0(sp)
++ fld ft4, 0xd8(sp)
++ fld ft5, 0xe0(sp)
++ fld ft6, 0xe8(sp)
++ fld ft7, 0xf0(sp)
++ fld fa0, 0xf8(sp)
++ fld fa1, 0x100(sp)
++ fld fa2, 0x108(sp)
++ fld fa3, 0x110(sp)
++ fld fa4, 0x118(sp)
++ fld fa5, 0x120(sp)
++ fld fa6, 0x128(sp)
++ fld fa7, 0x130(sp)
++ fld ft8, 0x138(sp)
++ fld ft9, 0x140(sp)
++ fld ft9, 0x148(sp)
++ fld ft10, 0x150(sp)
++ fld ft11, 0x158(sp)
++ /* Reload new allocation pointer and allocation limit */
++ load ALLOC_PTR, caml_young_ptr
++ load ALLOC_LIMIT, caml_young_limit
++ /* Free stack space and return to caller */
++ load ra, 0x8(sp)
++ load s0, 0x0(sp)
++ addi sp, sp, 0x160
++ ret
++ .size caml_call_gc, .-caml_call_gc
++
++/* Call a C function from OCaml */
++/* Function to call is in ARG */
++
++ .align 2
++ .globl caml_c_call
++ .type caml_c_call, @function
++caml_c_call:
++ /* Preserve return address in callee-save register s2 */
++ mv s2, ra
++ /* Record lowest stack address and return address */
++ store ra, caml_last_return_address, TMP0
++ store sp, caml_bottom_of_stack, TMP0
++ /* Make the exception handler alloc ptr available to the C code */
++ store ALLOC_PTR, caml_young_ptr, TMP0
++ store TRAP_PTR, caml_exception_pointer, TMP0
++ /* Call the function */
++ jalr ARG
++ /* Reload alloc ptr and alloc limit */
++ load ALLOC_PTR, caml_young_ptr
++ load TRAP_PTR, caml_exception_pointer
++ /* Return */
++ jr s2
++ .size caml_c_call, .-caml_c_call
++
++/* Raise an exception from OCaml */
++ .align 2
++ .globl caml_raise_exn
++ .type caml_raise_exn, @function
++caml_raise_exn:
++ /* Test if backtrace is active */
++ load TMP1, caml_backtrace_active
++ bnez TMP1, 2f
++1: /* Cut stack at current trap handler */
++ mv sp, TRAP_PTR
++ /* Pop previous handler and jump to it */
++ load TMP1, 8(sp)
++ load TRAP_PTR, 0(sp)
++ addi sp, sp, 16
++ jr TMP1
++2: /* Preserve exception bucket in callee-save register s2 */
++ mv s2, a0
++ /* Stash the backtrace */
++ mv a1, ra
++ mv a2, sp
++ mv a3, TRAP_PTR
++ call caml_stash_backtrace
++ /* Restore exception bucket and raise */
++ mv a0, s2
++ j 1b
++ .size caml_raise_exn, .-caml_raise_exn
++
++ .globl caml_reraise_exn
++ .type caml_reraise_exn, @function
++
++/* Raise an exception from C */
++
++ .align 2
++ .globl caml_raise_exception
++ .type caml_raise_exception, @function
++caml_raise_exception:
++ load TRAP_PTR, caml_exception_pointer
++ load ALLOC_PTR, caml_young_ptr
++ load ALLOC_LIMIT, caml_young_limit
++ load TMP1, caml_backtrace_active
++ bnez TMP1, 2f
++1: /* Cut stack at current trap handler */
++ mv sp, TRAP_PTR
++ load TMP1, 8(sp)
++ load TRAP_PTR, 0(sp)
++ addi sp, sp, 16
++ jr TMP1
++2: /* Preserve exception bucket in callee-save register s2 */
++ mv s2, a0
++ load a1, caml_last_return_address
++ load a2, caml_bottom_of_stack
++ mv a3, TRAP_PTR
++ call caml_stash_backtrace
++ mv a0, s2
++ j 1b
++ .size caml_raise_exception, .-caml_raise_exception
++
++/* Start the OCaml program */
++
++ .align 2
++ .globl caml_start_program
++ .type caml_start_program, @function
++caml_start_program:
++
++ la ARG, caml_program
++ /* Code shared with caml_callback* */
++ /* Address of OCaml code to call is in ARG */
++ /* Arguments to the OCaml code are in a0 ... a7 */
++.Ljump_to_caml:
++ /* Set up stack frame and save callee-save registers */
++ addi sp, sp, -0xd0
++ store ra, 0xc0(sp)
++ store s0, 0x0(sp)
++ store s1, 0x8(sp)
++ store s2, 0x10(sp)
++ store s3, 0x18(sp)
++ store s4, 0x20(sp)
++ store s5, 0x28(sp)
++ store s6, 0x30(sp)
++ store s7, 0x38(sp)
++ store s8, 0x40(sp)
++ store s9, 0x48(sp)
++ store s10, 0x50(sp)
++ store s11, 0x58(sp)
++ fsd fs0, 0x60(sp)
++ fsd fs1, 0x68(sp)
++ fsd fs2, 0x70(sp)
++ fsd fs3, 0x78(sp)
++ fsd fs4, 0x80(sp)
++ fsd fs5, 0x88(sp)
++ fsd fs6, 0x90(sp)
++ fsd fs7, 0x98(sp)
++ fsd fs8, 0xa0(sp)
++ fsd fs9, 0xa8(sp)
++ fsd fs10, 0xb0(sp)
++ fsd fs11, 0xb8(sp)
++ addi sp, sp, -32
++ /* Setup a callback link on the stack */
++ load TMP1, caml_bottom_of_stack
++ store TMP1, 0(sp)
++ load TMP1, caml_last_return_address
++ store TMP1, 8(sp)
++ load TMP1, caml_gc_regs
++ store TMP1, 16(sp)
++ /* set up a trap frame */
++ addi sp, sp, -16
++ load TMP1, caml_exception_pointer
++ store TMP1, 0(sp)
++ lla TMP0, .Ltrap_handler
++ store TMP0, 8(sp)
++ mv TRAP_PTR, sp
++ load ALLOC_PTR, caml_young_ptr
++ load ALLOC_LIMIT, caml_young_limit
++ store x0, caml_last_return_address, TMP0
++ jalr ARG
++.Lcaml_retaddr: /* pop trap frame, restoring caml_exception_pointer */
++ load TMP1, 0(sp)
++ store TMP1, caml_exception_pointer, TMP0
++ addi sp, sp, 16
++.Lreturn_result: /* pop callback link, restoring global variables */
++ load TMP1, 0(sp)
++ store TMP1, caml_bottom_of_stack, TMP0
++ load TMP1, 8(sp)
++ store TMP1, caml_last_return_address, TMP0
++ load TMP1, 16(sp)
++ store TMP1, caml_gc_regs, TMP0
++ addi sp, sp, 32
++ /* Update allocation pointer */
++ store ALLOC_PTR, caml_young_ptr, TMP0
++ /* reload callee-save registers and return */
++ load ra, 0xc0(sp)
++ load s0, 0x0(sp)
++ load s1, 0x8(sp)
++ load s2, 0x10(sp)
++ load s3, 0x18(sp)
++ load s4, 0x20(sp)
++ load s5, 0x28(sp)
++ load s6, 0x30(sp)
++ load s7, 0x38(sp)
++ load s8, 0x40(sp)
++ load s9, 0x48(sp)
++ load s10, 0x50(sp)
++ load s11, 0x58(sp)
++ fld fs0, 0x60(sp)
++ fld fs1, 0x68(sp)
++ fld fs2, 0x70(sp)
++ fld fs3, 0x78(sp)
++ fld fs4, 0x80(sp)
++ fld fs5, 0x88(sp)
++ fld fs6, 0x90(sp)
++ fld fs7, 0x98(sp)
++ fld fs8, 0xa0(sp)
++ fld fs9, 0xa8(sp)
++ fld fs10, 0xb0(sp)
++ fld fs11, 0xb8(sp)
++ addi sp, sp, 0xd0
++ ret
++.Ltrap_handler:
++ store TRAP_PTR, caml_exception_pointer, TMP0
++ ori a0, a0, 2
++ j .Lreturn_result
++ .size caml_start_program, .-caml_start_program
++
++/* Callback from C to OCaml */
++
++ .align 2
++ .globl caml_callback_exn
++ .type caml_callback_exn, @function
++caml_callback_exn:
++ /* Initial shuffling of arguments (a0 = closure, a1 = first arg) */
++ mv TMP1, a0
++ mv a0, a1 /* a0 = first arg */
++ mv a1, TMP1 /* a1 = closure environment */
++ load ARG, 0(TMP1) /* code pointer */
++ j .Ljump_to_caml
++ .size caml_callback_exn, .-caml_callback_exn
++
++ .align 2
++ .globl caml_callback2_exn
++ .type caml_callback2_exn, @function
++caml_callback2_exn:
++ /* Initial shuffling of arguments (a0 = closure, a1 = arg1, a2 = arg2) */
++ mv TMP1, a0
++ mv a0, a1
++ mv a1, a2
++ mv a2, TMP1
++ la ARG, caml_apply2
++ j .Ljump_to_caml
++ .size caml_callback2_exn, .-caml_callback2_exn
++
++ .align 2
++ .globl caml_callback3_exn
++ .type caml_callback3_exn, @function
++caml_callback3_exn:
++ /* Initial shuffling of argumnets */
++ /* (a0 = closure, a1 = arg1, a2 = arg2, a3 = arg3) */
++ mv TMP1, a0
++ mv a0, a1
++ mv a1, a2
++ mv a2, a3
++ mv a3, TMP1
++ la ARG, caml_apply3
++ j .Ljump_to_caml
++ .size caml_callback3_exn, .-caml_callback3_exn
++
++ .align 2
++ .globl caml_ml_array_bound_error
++ .type caml_ml_array_bound_error, @function
++caml_ml_array_bound_error:
++ /* Load address of [caml_array_bound_error] in ARG */
++ la ARG, caml_array_bound_error
++ /* Call that function */
++ j caml_c_call
++
++ .globl caml_system__code_end
++caml_system__code_end:
++
++/* GC roots for callback */
++
++ .section .data
++ .align 3
++ .globl caml_system__frametable
++ .type caml_system__frametable, @object
++caml_system__frametable:
++ .quad 1 /* one descriptor */
++ .quad .Lcaml_retaddr /* return address into callback */
++ .short -1 /* negative frame size => use callback link */
++ .short 0 /* no roots */
++ .align 3
++ .size caml_system__frametable, .-caml_system__frametable
+diff --git a/byterun/caml/stack.h b/byterun/caml/stack.h
+index fd9d528e9..781c2517b 100644
+--- a/byterun/caml/stack.h
++++ b/byterun/caml/stack.h
+@@ -75,6 +75,11 @@
+ #define Callback_link(sp) ((struct caml_context *)((sp) + 16))
+ #endif
+
++#ifdef TARGET_riscv /* FIXME FIXME */
++#define Saved_return_address(sp) *((intnat *)((sp) - 8))
++#define Callback_link(sp) ((struct caml_context *)((sp) + 16))
++#endif
++
+ /* Structure of OCaml callback contexts */
+
+ struct caml_context {
+diff --git a/configure b/configure
+index d53d90367..04acb43be 100755
+--- a/configure
++++ b/configure
+@@ -820,6 +820,7 @@ if test $with_sharedlibs = "yes"; then
+ arm*-*-freebsd*) natdynlink=true;;
+ earm*-*-netbsd*) natdynlink=true;;
+ aarch64-*-linux*) natdynlink=true;;
++ riscv*-*-linux*) natdynlink=true;;
+ esac
+ fi
+
+@@ -889,6 +890,8 @@ case "$target" in
+ x86_64-*-mingw*) arch=amd64; system=mingw;;
+ aarch64-*-linux*) arch=arm64; system=linux;;
+ x86_64-*-cygwin*) arch=amd64; system=cygwin;;
++ riscv32-*-linux*) arch=riscv; model=riscv32; system=linux;;
++ riscv64-*-linux*) arch=riscv; model=riscv64; system=linux;;
+ esac
+
+ # Some platforms exist both in 32-bit and 64-bit variants, not distinguished
+@@ -964,7 +967,7 @@ case "$arch,$system" in
+ aspp="${TOOLPREF}cc -c";;
+ *,freebsd) as="${TOOLPREF}as"
+ aspp="${TOOLPREF}cc -c";;
+- amd64,*|arm,*|arm64,*|i386,*|power,bsd*|sparc,*)
++ amd64,*|arm,*|arm64,*|i386,*|power,bsd*|sparc,*|riscv,*)
+ as="${TOOLPREF}as"
+ aspp="${TOOLPREF}gcc -c";;
+ esac
+--
+2.13.1
+
diff --git a/0006-Try-fix-for-andi-ori-xori-immediates-1.patch b/0006-Try-fix-for-andi-ori-xori-immediates-1.patch
deleted file mode 100644
index b2785da..0000000
--- a/0006-Try-fix-for-andi-ori-xori-immediates-1.patch
+++ /dev/null
@@ -1,43 +0,0 @@
-From ed0d512547d332e582e1a132d33931feec0cb3bd Mon Sep 17 00:00:00 2001
-From: Nicolas Ojeda Bar <n.oje.bar(a)gmail.com>
-Date: Thu, 10 Nov 2016 14:12:53 +0100
-Subject: [PATCH 6/8] Try fix for andi/ori/xori immediates (#1)
-
----
- asmcomp/riscv/selection.ml | 13 -------------
- 1 file changed, 13 deletions(-)
-
-diff --git a/asmcomp/riscv/selection.ml b/asmcomp/riscv/selection.ml
-index 60ec5cb4e..ad2b26e9b 100644
---- a/asmcomp/riscv/selection.ml
-+++ b/asmcomp/riscv/selection.ml
-@@ -36,11 +36,6 @@ method! select_operation op args =
- match (op, args) with
- (* RISC-V does not support immediate operands for multiply high *)
- | (Cmulhi, _) -> (Iintop Imulh, args)
-- (* The and, or and xor instructions have a different range of immediate
-- operands than the other instructions *)
-- | (Cand, _) -> self#select_logical Iand args
-- | (Cor, _) -> self#select_logical Ior args
-- | (Cxor, _) -> self#select_logical Ixor args
- (* Recognize (neg-)mult-add and (neg-)mult-sub instructions *)
- | (Caddf, [Cop(Cmulf, [arg1; arg2]); arg3])
- | (Caddf, [arg3; Cop(Cmulf, [arg1; arg2])]) ->
-@@ -58,14 +53,6 @@ method! select_operation op args =
- | _ ->
- super#select_operation op args
-
--method select_logical op = function
-- | [arg; Cconst_int n] when n >= 0 && n <= 0xFFF ->
-- (Iintop_imm(op, n), [arg])
-- | [Cconst_int n; arg] when n >= 0 && n <= 0xFFF ->
-- (Iintop_imm(op, n), [arg])
-- | args ->
-- (Iintop op, args)
--
- (* Instruction selection for conditionals *)
-
- method! select_condition = function
---
-2.13.1
-
diff --git a/0007-Fix-immediates-range-when-adjusting-indexing-sp.patch b/0007-Fix-immediates-range-when-adjusting-indexing-sp.patch
deleted file mode 100644
index dd031c7..0000000
--- a/0007-Fix-immediates-range-when-adjusting-indexing-sp.patch
+++ /dev/null
@@ -1,156 +0,0 @@
-From d5009d1287904987d8ad6fb66babfa15433b396a Mon Sep 17 00:00:00 2001
-From: Nicolas Ojeda Bar <n.oje.bar(a)gmail.com>
-Date: Tue, 22 Nov 2016 22:30:35 +0100
-Subject: [PATCH 7/8] Fix immediates' range when adjusting/indexing sp
-
----
- asmcomp/riscv/arch.ml | 3 +++
- asmcomp/riscv/emit.mlp | 53 ++++++++++++++++++++++++++++++++++------------
- asmcomp/riscv/selection.ml | 2 +-
- 3 files changed, 44 insertions(+), 14 deletions(-)
-
-diff --git a/asmcomp/riscv/arch.ml b/asmcomp/riscv/arch.ml
-index 61a38b1dd..22c807c49 100644
---- a/asmcomp/riscv/arch.ml
-+++ b/asmcomp/riscv/arch.ml
-@@ -32,6 +32,9 @@ let spacetime_node_hole_pointer_is_live_before = function
- type addressing_mode =
- | Iindexed of int (* reg + displ *)
-
-+let is_immediate n =
-+ (n <= 2047) && (n >= -2048)
-+
- (* Sizes, endianness *)
-
- let big_endian = false
-diff --git a/asmcomp/riscv/emit.mlp b/asmcomp/riscv/emit.mlp
-index 6d0e3aefd..97c49ce80 100644
---- a/asmcomp/riscv/emit.mlp
-+++ b/asmcomp/riscv/emit.mlp
-@@ -93,6 +93,34 @@ let emit_stack r =
- let ofs = slot_offset s (register_class r) in `{emit_int ofs}(sp)`
- | _ -> fatal_error "Emit.emit_stack"
-
-+(* Adjust sp by the given byte amount *)
-+
-+let emit_stack_adjustment = function
-+ | 0 -> ()
-+ | n when is_immediate n ->
-+ ` addi sp, sp, {emit_int n}\n`
-+ | n ->
-+ ` li {emit_reg reg_tmp1}, {emit_int n}\n`;
-+ ` add sp, sp, {emit_reg reg_tmp1}\n`
-+
-+let emit_store src ofs =
-+ if is_immediate ofs then
-+ ` {emit_string stg} {emit_reg src}, {emit_int ofs}(sp)\n`
-+ else begin
-+ ` li {emit_reg reg_tmp1}, {emit_int ofs}\n`;
-+ ` add {emit_reg reg_tmp1}, sp, {emit_reg reg_tmp1}\n`;
-+ ` {emit_string stg} {emit_reg src}, 0({emit_reg reg_tmp1})\n`
-+ end
-+
-+let emit_load dst ofs =
-+ if is_immediate ofs then
-+ ` {emit_string lg} {emit_reg dst}, {emit_int ofs}(sp)\n`
-+ else begin
-+ ` li {emit_reg reg_tmp1}, {emit_int ofs}\n`;
-+ ` add {emit_reg reg_tmp1}, sp, {emit_reg reg_tmp1}\n`;
-+ ` {emit_string lg} {emit_reg dst}, 0({emit_reg reg_tmp1})\n`
-+ end
-+
- (* Record live pointers at call points *)
-
- let record_frame_label ?label live raise_ dbg =
-@@ -218,6 +246,7 @@ let name_for_specific = function
-
- (* Name of current function *)
- let function_name = ref ""
-+
- (* Entry point for tail recursive calls *)
- let tailrec_entry_point = ref 0
-
-@@ -234,12 +263,14 @@ let emit_instr i =
- ` mv {emit_reg dst}, {emit_reg src}\n`
- | {loc = Reg _; typ = Float}, {loc = Reg _; typ = Float} ->
- ` fmv.d {emit_reg dst}, {emit_reg src}\n`
-- | {loc = Reg _; typ = (Val | Int | Addr)}, {loc = Stack _} ->
-- ` {emit_string stg} {emit_reg src}, {emit_stack dst}\n`
-+ | {loc = Reg _; typ = (Val | Int | Addr)}, {loc = Stack s} ->
-+ let ofs = slot_offset s (register_class dst) in
-+ emit_store src ofs
- | {loc = Reg _; typ = Float}, {loc = Stack _} ->
- ` fsd {emit_reg src}, {emit_stack dst}\n`
-- | {loc = Stack _; typ = (Val | Int | Addr)}, {loc = Reg _ } ->
-- ` {emit_string lg} {emit_reg dst}, {emit_stack src}\n`
-+ | {loc = Stack s; typ = (Val | Int | Addr)}, {loc = Reg _} ->
-+ let ofs = slot_offset s (register_class src) in
-+ emit_load dst ofs
- | {loc = Stack _; typ = Float}, {loc = Reg _} ->
- ` fld {emit_reg dst}, {emit_stack src}\n`
- | _ ->
-@@ -263,8 +294,7 @@ let emit_instr i =
- let n = frame_size() in
- if !contains_calls then
- ` {emit_string lg} ra, {emit_int(n - size_addr)}(sp)\n`;
-- if n > 0 then
-- ` addi sp, sp, {emit_int n}\n`;
-+ emit_stack_adjustment n;
- ` jr {emit_reg i.arg.(0)}\n`
- | Lop(Itailcall_imm {func; label_after = _}) ->
- if func = !function_name then begin
-@@ -273,8 +303,7 @@ let emit_instr i =
- let n = frame_size() in
- if !contains_calls then
- ` {emit_string lg} ra, {emit_int(n - size_addr)}(sp)\n`;
-- if n > 0 then
-- ` addi sp, sp, {emit_int n}\n`;
-+ emit_stack_adjustment n;
- ` tail {emit_symbol func}\n`
- end
- | Lop(Iextcall{func; alloc = true; label_after = label}) ->
-@@ -285,7 +314,7 @@ let emit_instr i =
- ` call {emit_symbol func}\n`
- | Lop(Istackoffset n) ->
- assert (n mod 16 = 0);
-- ` addi sp, sp, {emit_int (-n)}\n`;
-+ emit_stack_adjustment (-n);
- stack_offset := !stack_offset + n
- | Lop(Iload(Single, Iindexed ofs)) ->
- ` flw {emit_reg i.res.(0)}, {emit_int ofs}({emit_reg i.arg.(0)})\n`;
-@@ -398,8 +427,7 @@ let emit_instr i =
- ` {emit_string lg} ra, {emit_int(n - size_addr)}(sp)\n`
- | Lreturn ->
- let n = frame_size() in
-- if n > 0 then
-- ` addi sp, sp, {emit_int n}\n`;
-+ emit_stack_adjustment n;
- ` ret\n`
- | Llabel lbl ->
- `{emit_label lbl}:\n`
-@@ -513,8 +541,7 @@ let fundecl fundecl =
- ` .align 2\n`;
- `{emit_symbol fundecl.fun_name}:\n`;
- let n = frame_size() in
-- if n > 0 then
-- ` addi sp, sp, {emit_int(-n)}\n`;
-+ emit_stack_adjustment (-n);
- if !contains_calls then
- ` {emit_string stg} ra, {emit_int(n - size_addr)}(sp)\n`;
- `{emit_label !tailrec_entry_point}:\n`;
-diff --git a/asmcomp/riscv/selection.ml b/asmcomp/riscv/selection.ml
-index ad2b26e9b..283233679 100644
---- a/asmcomp/riscv/selection.ml
-+++ b/asmcomp/riscv/selection.ml
-@@ -22,7 +22,7 @@ class selector = object (self)
-
- inherit Selectgen.selector_generic as super
-
--method is_immediate n = (n <= 0x7FF) && (n >= -0x800)
-+method is_immediate n = is_immediate n
-
- method select_addressing _ = function
- | Cop(Cadda, [arg; Cconst_int n]) when self#is_immediate n ->
---
-2.13.1
-
diff --git a/0007-Try-fix-for-andi-ori-xori-immediates-1.patch b/0007-Try-fix-for-andi-ori-xori-immediates-1.patch
new file mode 100644
index 0000000..1a5f503
--- /dev/null
+++ b/0007-Try-fix-for-andi-ori-xori-immediates-1.patch
@@ -0,0 +1,43 @@
+From 80e5cd3dc503319490761a705e14f3fa421ff760 Mon Sep 17 00:00:00 2001
+From: Nicolas Ojeda Bar <n.oje.bar(a)gmail.com>
+Date: Thu, 10 Nov 2016 14:12:53 +0100
+Subject: [PATCH 7/9] Try fix for andi/ori/xori immediates (#1)
+
+---
+ asmcomp/riscv/selection.ml | 13 -------------
+ 1 file changed, 13 deletions(-)
+
+diff --git a/asmcomp/riscv/selection.ml b/asmcomp/riscv/selection.ml
+index 60ec5cb4e..ad2b26e9b 100644
+--- a/asmcomp/riscv/selection.ml
++++ b/asmcomp/riscv/selection.ml
+@@ -36,11 +36,6 @@ method! select_operation op args =
+ match (op, args) with
+ (* RISC-V does not support immediate operands for multiply high *)
+ | (Cmulhi, _) -> (Iintop Imulh, args)
+- (* The and, or and xor instructions have a different range of immediate
+- operands than the other instructions *)
+- | (Cand, _) -> self#select_logical Iand args
+- | (Cor, _) -> self#select_logical Ior args
+- | (Cxor, _) -> self#select_logical Ixor args
+ (* Recognize (neg-)mult-add and (neg-)mult-sub instructions *)
+ | (Caddf, [Cop(Cmulf, [arg1; arg2]); arg3])
+ | (Caddf, [arg3; Cop(Cmulf, [arg1; arg2])]) ->
+@@ -58,14 +53,6 @@ method! select_operation op args =
+ | _ ->
+ super#select_operation op args
+
+-method select_logical op = function
+- | [arg; Cconst_int n] when n >= 0 && n <= 0xFFF ->
+- (Iintop_imm(op, n), [arg])
+- | [Cconst_int n; arg] when n >= 0 && n <= 0xFFF ->
+- (Iintop_imm(op, n), [arg])
+- | args ->
+- (Iintop op, args)
+-
+ (* Instruction selection for conditionals *)
+
+ method! select_condition = function
+--
+2.13.1
+
diff --git a/0008-Another-immediate-range-fix.patch b/0008-Another-immediate-range-fix.patch
deleted file mode 100644
index 48b7cd5..0000000
--- a/0008-Another-immediate-range-fix.patch
+++ /dev/null
@@ -1,131 +0,0 @@
-From f1a94da0563eb4bc0fea86a3c83c7c152ec93ae8 Mon Sep 17 00:00:00 2001
-From: Nicolas Ojeda Bar <n.oje.bar(a)gmail.com>
-Date: Wed, 23 Nov 2016 12:38:28 +0100
-Subject: [PATCH 8/8] Another immediate range fix
-
----
- asmcomp/riscv/emit.mlp | 57 ++++++++++++++++++++++++++++++--------------------
- 1 file changed, 34 insertions(+), 23 deletions(-)
-
-diff --git a/asmcomp/riscv/emit.mlp b/asmcomp/riscv/emit.mlp
-index 97c49ce80..6cc190864 100644
---- a/asmcomp/riscv/emit.mlp
-+++ b/asmcomp/riscv/emit.mlp
-@@ -85,14 +85,6 @@ let emit_reg = function
- | {loc = Reg r} -> emit_string (register_name r)
- | _ -> fatal_error "Emit.emit_reg"
-
--(* Output a stack reference *)
--
--let emit_stack r =
-- match r.loc with
-- Stack s ->
-- let ofs = slot_offset s (register_class r) in `{emit_int ofs}(sp)`
-- | _ -> fatal_error "Emit.emit_stack"
--
- (* Adjust sp by the given byte amount *)
-
- let emit_stack_adjustment = function
-@@ -103,7 +95,27 @@ let emit_stack_adjustment = function
- ` li {emit_reg reg_tmp1}, {emit_int n}\n`;
- ` add sp, sp, {emit_reg reg_tmp1}\n`
-
--let emit_store src ofs =
-+let reload_ra n =
-+ let ofs = n - size_addr in
-+ if is_immediate ofs then
-+ ` {emit_string lg} ra, {emit_int ofs}(sp)\n`
-+ else begin
-+ ` li {emit_reg reg_tmp1}, {emit_int ofs}\n`;
-+ ` add {emit_reg reg_tmp1}, sp, {emit_reg reg_tmp1}\n`;
-+ ` {emit_string lg} ra, 0({emit_reg reg_tmp1})\n`
-+ end
-+
-+let store_ra n =
-+ let ofs = n - size_addr in
-+ if is_immediate ofs then
-+ ` {emit_string stg} ra, {emit_int(n - size_addr)}(sp)\n`
-+ else begin
-+ ` li {emit_reg reg_tmp1}, {emit_int ofs}\n`;
-+ ` add {emit_reg reg_tmp1}, sp, {emit_reg reg_tmp1}\n`;
-+ ` {emit_string stg} ra, 0({emit_reg reg_tmp1})\n`
-+ end
-+
-+let emit_store stg src ofs =
- if is_immediate ofs then
- ` {emit_string stg} {emit_reg src}, {emit_int ofs}(sp)\n`
- else begin
-@@ -112,7 +124,7 @@ let emit_store src ofs =
- ` {emit_string stg} {emit_reg src}, 0({emit_reg reg_tmp1})\n`
- end
-
--let emit_load dst ofs =
-+let emit_load lg dst ofs =
- if is_immediate ofs then
- ` {emit_string lg} {emit_reg dst}, {emit_int ofs}(sp)\n`
- else begin
-@@ -265,14 +277,16 @@ let emit_instr i =
- ` fmv.d {emit_reg dst}, {emit_reg src}\n`
- | {loc = Reg _; typ = (Val | Int | Addr)}, {loc = Stack s} ->
- let ofs = slot_offset s (register_class dst) in
-- emit_store src ofs
-- | {loc = Reg _; typ = Float}, {loc = Stack _} ->
-- ` fsd {emit_reg src}, {emit_stack dst}\n`
-+ emit_store stg src ofs
-+ | {loc = Reg _; typ = Float}, {loc = Stack s} ->
-+ let ofs = slot_offset s (register_class dst) in
-+ emit_store "fsd" src ofs
- | {loc = Stack s; typ = (Val | Int | Addr)}, {loc = Reg _} ->
- let ofs = slot_offset s (register_class src) in
-- emit_load dst ofs
-- | {loc = Stack _; typ = Float}, {loc = Reg _} ->
-- ` fld {emit_reg dst}, {emit_stack src}\n`
-+ emit_load lg dst ofs
-+ | {loc = Stack s; typ = Float}, {loc = Reg _} ->
-+ let ofs = slot_offset s (register_class src) in
-+ emit_load "fld" dst ofs
- | _ ->
- fatal_error "Emit: Imove"
- end
-@@ -292,8 +306,7 @@ let emit_instr i =
- record_frame ~label i.live false i.dbg
- | Lop(Itailcall_ind {label_after = _}) ->
- let n = frame_size() in
-- if !contains_calls then
-- ` {emit_string lg} ra, {emit_int(n - size_addr)}(sp)\n`;
-+ if !contains_calls then reload_ra n;
- emit_stack_adjustment n;
- ` jr {emit_reg i.arg.(0)}\n`
- | Lop(Itailcall_imm {func; label_after = _}) ->
-@@ -301,8 +314,7 @@ let emit_instr i =
- ` j {emit_label !tailrec_entry_point}\n`
- end else begin
- let n = frame_size() in
-- if !contains_calls then
-- ` {emit_string lg} ra, {emit_int(n - size_addr)}(sp)\n`;
-+ if !contains_calls then reload_ra n;
- emit_stack_adjustment n;
- ` tail {emit_symbol func}\n`
- end
-@@ -424,7 +436,7 @@ let emit_instr i =
- ` {emit_string instr} {emit_reg i.res.(0)}, {emit_reg i.arg.(0)}, {emit_reg i.arg.(1)}, {emit_reg i.arg.(2)}\n`
- | Lreloadretaddr ->
- let n = frame_size () in
-- ` {emit_string lg} ra, {emit_int(n - size_addr)}(sp)\n`
-+ reload_ra n
- | Lreturn ->
- let n = frame_size() in
- emit_stack_adjustment n;
-@@ -542,8 +554,7 @@ let fundecl fundecl =
- `{emit_symbol fundecl.fun_name}:\n`;
- let n = frame_size() in
- emit_stack_adjustment (-n);
-- if !contains_calls then
-- ` {emit_string stg} ra, {emit_int(n - size_addr)}(sp)\n`;
-+ if !contains_calls then store_ra n;
- `{emit_label !tailrec_entry_point}:\n`;
- emit_all fundecl.fun_body;
- List.iter emit_call_gc !call_gc_sites;
---
-2.13.1
-
diff --git a/0008-Fix-immediates-range-when-adjusting-indexing-sp.patch b/0008-Fix-immediates-range-when-adjusting-indexing-sp.patch
new file mode 100644
index 0000000..da19b82
--- /dev/null
+++ b/0008-Fix-immediates-range-when-adjusting-indexing-sp.patch
@@ -0,0 +1,156 @@
+From ded14c206a5e73ba5eae6d84ed4ee82c11ce6245 Mon Sep 17 00:00:00 2001
+From: Nicolas Ojeda Bar <n.oje.bar(a)gmail.com>
+Date: Tue, 22 Nov 2016 22:30:35 +0100
+Subject: [PATCH 8/9] Fix immediates' range when adjusting/indexing sp
+
+---
+ asmcomp/riscv/arch.ml | 3 +++
+ asmcomp/riscv/emit.mlp | 53 ++++++++++++++++++++++++++++++++++------------
+ asmcomp/riscv/selection.ml | 2 +-
+ 3 files changed, 44 insertions(+), 14 deletions(-)
+
+diff --git a/asmcomp/riscv/arch.ml b/asmcomp/riscv/arch.ml
+index 61a38b1dd..22c807c49 100644
+--- a/asmcomp/riscv/arch.ml
++++ b/asmcomp/riscv/arch.ml
+@@ -32,6 +32,9 @@ let spacetime_node_hole_pointer_is_live_before = function
+ type addressing_mode =
+ | Iindexed of int (* reg + displ *)
+
++let is_immediate n =
++ (n <= 2047) && (n >= -2048)
++
+ (* Sizes, endianness *)
+
+ let big_endian = false
+diff --git a/asmcomp/riscv/emit.mlp b/asmcomp/riscv/emit.mlp
+index 6d0e3aefd..97c49ce80 100644
+--- a/asmcomp/riscv/emit.mlp
++++ b/asmcomp/riscv/emit.mlp
+@@ -93,6 +93,34 @@ let emit_stack r =
+ let ofs = slot_offset s (register_class r) in `{emit_int ofs}(sp)`
+ | _ -> fatal_error "Emit.emit_stack"
+
++(* Adjust sp by the given byte amount *)
++
++let emit_stack_adjustment = function
++ | 0 -> ()
++ | n when is_immediate n ->
++ ` addi sp, sp, {emit_int n}\n`
++ | n ->
++ ` li {emit_reg reg_tmp1}, {emit_int n}\n`;
++ ` add sp, sp, {emit_reg reg_tmp1}\n`
++
++let emit_store src ofs =
++ if is_immediate ofs then
++ ` {emit_string stg} {emit_reg src}, {emit_int ofs}(sp)\n`
++ else begin
++ ` li {emit_reg reg_tmp1}, {emit_int ofs}\n`;
++ ` add {emit_reg reg_tmp1}, sp, {emit_reg reg_tmp1}\n`;
++ ` {emit_string stg} {emit_reg src}, 0({emit_reg reg_tmp1})\n`
++ end
++
++let emit_load dst ofs =
++ if is_immediate ofs then
++ ` {emit_string lg} {emit_reg dst}, {emit_int ofs}(sp)\n`
++ else begin
++ ` li {emit_reg reg_tmp1}, {emit_int ofs}\n`;
++ ` add {emit_reg reg_tmp1}, sp, {emit_reg reg_tmp1}\n`;
++ ` {emit_string lg} {emit_reg dst}, 0({emit_reg reg_tmp1})\n`
++ end
++
+ (* Record live pointers at call points *)
+
+ let record_frame_label ?label live raise_ dbg =
+@@ -218,6 +246,7 @@ let name_for_specific = function
+
+ (* Name of current function *)
+ let function_name = ref ""
++
+ (* Entry point for tail recursive calls *)
+ let tailrec_entry_point = ref 0
+
+@@ -234,12 +263,14 @@ let emit_instr i =
+ ` mv {emit_reg dst}, {emit_reg src}\n`
+ | {loc = Reg _; typ = Float}, {loc = Reg _; typ = Float} ->
+ ` fmv.d {emit_reg dst}, {emit_reg src}\n`
+- | {loc = Reg _; typ = (Val | Int | Addr)}, {loc = Stack _} ->
+- ` {emit_string stg} {emit_reg src}, {emit_stack dst}\n`
++ | {loc = Reg _; typ = (Val | Int | Addr)}, {loc = Stack s} ->
++ let ofs = slot_offset s (register_class dst) in
++ emit_store src ofs
+ | {loc = Reg _; typ = Float}, {loc = Stack _} ->
+ ` fsd {emit_reg src}, {emit_stack dst}\n`
+- | {loc = Stack _; typ = (Val | Int | Addr)}, {loc = Reg _ } ->
+- ` {emit_string lg} {emit_reg dst}, {emit_stack src}\n`
++ | {loc = Stack s; typ = (Val | Int | Addr)}, {loc = Reg _} ->
++ let ofs = slot_offset s (register_class src) in
++ emit_load dst ofs
+ | {loc = Stack _; typ = Float}, {loc = Reg _} ->
+ ` fld {emit_reg dst}, {emit_stack src}\n`
+ | _ ->
+@@ -263,8 +294,7 @@ let emit_instr i =
+ let n = frame_size() in
+ if !contains_calls then
+ ` {emit_string lg} ra, {emit_int(n - size_addr)}(sp)\n`;
+- if n > 0 then
+- ` addi sp, sp, {emit_int n}\n`;
++ emit_stack_adjustment n;
+ ` jr {emit_reg i.arg.(0)}\n`
+ | Lop(Itailcall_imm {func; label_after = _}) ->
+ if func = !function_name then begin
+@@ -273,8 +303,7 @@ let emit_instr i =
+ let n = frame_size() in
+ if !contains_calls then
+ ` {emit_string lg} ra, {emit_int(n - size_addr)}(sp)\n`;
+- if n > 0 then
+- ` addi sp, sp, {emit_int n}\n`;
++ emit_stack_adjustment n;
+ ` tail {emit_symbol func}\n`
+ end
+ | Lop(Iextcall{func; alloc = true; label_after = label}) ->
+@@ -285,7 +314,7 @@ let emit_instr i =
+ ` call {emit_symbol func}\n`
+ | Lop(Istackoffset n) ->
+ assert (n mod 16 = 0);
+- ` addi sp, sp, {emit_int (-n)}\n`;
++ emit_stack_adjustment (-n);
+ stack_offset := !stack_offset + n
+ | Lop(Iload(Single, Iindexed ofs)) ->
+ ` flw {emit_reg i.res.(0)}, {emit_int ofs}({emit_reg i.arg.(0)})\n`;
+@@ -398,8 +427,7 @@ let emit_instr i =
+ ` {emit_string lg} ra, {emit_int(n - size_addr)}(sp)\n`
+ | Lreturn ->
+ let n = frame_size() in
+- if n > 0 then
+- ` addi sp, sp, {emit_int n}\n`;
++ emit_stack_adjustment n;
+ ` ret\n`
+ | Llabel lbl ->
+ `{emit_label lbl}:\n`
+@@ -513,8 +541,7 @@ let fundecl fundecl =
+ ` .align 2\n`;
+ `{emit_symbol fundecl.fun_name}:\n`;
+ let n = frame_size() in
+- if n > 0 then
+- ` addi sp, sp, {emit_int(-n)}\n`;
++ emit_stack_adjustment (-n);
+ if !contains_calls then
+ ` {emit_string stg} ra, {emit_int(n - size_addr)}(sp)\n`;
+ `{emit_label !tailrec_entry_point}:\n`;
+diff --git a/asmcomp/riscv/selection.ml b/asmcomp/riscv/selection.ml
+index ad2b26e9b..283233679 100644
+--- a/asmcomp/riscv/selection.ml
++++ b/asmcomp/riscv/selection.ml
+@@ -22,7 +22,7 @@ class selector = object (self)
+
+ inherit Selectgen.selector_generic as super
+
+-method is_immediate n = (n <= 0x7FF) && (n >= -0x800)
++method is_immediate n = is_immediate n
+
+ method select_addressing _ = function
+ | Cop(Cadda, [arg; Cconst_int n]) when self#is_immediate n ->
+--
+2.13.1
+
diff --git a/0009-Another-immediate-range-fix.patch b/0009-Another-immediate-range-fix.patch
new file mode 100644
index 0000000..5ad114e
--- /dev/null
+++ b/0009-Another-immediate-range-fix.patch
@@ -0,0 +1,131 @@
+From 664a26d436919be1fe3a33094aa44403b4bf710d Mon Sep 17 00:00:00 2001
+From: Nicolas Ojeda Bar <n.oje.bar(a)gmail.com>
+Date: Wed, 23 Nov 2016 12:38:28 +0100
+Subject: [PATCH 9/9] Another immediate range fix
+
+---
+ asmcomp/riscv/emit.mlp | 57 ++++++++++++++++++++++++++++++--------------------
+ 1 file changed, 34 insertions(+), 23 deletions(-)
+
+diff --git a/asmcomp/riscv/emit.mlp b/asmcomp/riscv/emit.mlp
+index 97c49ce80..6cc190864 100644
+--- a/asmcomp/riscv/emit.mlp
++++ b/asmcomp/riscv/emit.mlp
+@@ -85,14 +85,6 @@ let emit_reg = function
+ | {loc = Reg r} -> emit_string (register_name r)
+ | _ -> fatal_error "Emit.emit_reg"
+
+-(* Output a stack reference *)
+-
+-let emit_stack r =
+- match r.loc with
+- Stack s ->
+- let ofs = slot_offset s (register_class r) in `{emit_int ofs}(sp)`
+- | _ -> fatal_error "Emit.emit_stack"
+-
+ (* Adjust sp by the given byte amount *)
+
+ let emit_stack_adjustment = function
+@@ -103,7 +95,27 @@ let emit_stack_adjustment = function
+ ` li {emit_reg reg_tmp1}, {emit_int n}\n`;
+ ` add sp, sp, {emit_reg reg_tmp1}\n`
+
+-let emit_store src ofs =
++let reload_ra n =
++ let ofs = n - size_addr in
++ if is_immediate ofs then
++ ` {emit_string lg} ra, {emit_int ofs}(sp)\n`
++ else begin
++ ` li {emit_reg reg_tmp1}, {emit_int ofs}\n`;
++ ` add {emit_reg reg_tmp1}, sp, {emit_reg reg_tmp1}\n`;
++ ` {emit_string lg} ra, 0({emit_reg reg_tmp1})\n`
++ end
++
++let store_ra n =
++ let ofs = n - size_addr in
++ if is_immediate ofs then
++ ` {emit_string stg} ra, {emit_int(n - size_addr)}(sp)\n`
++ else begin
++ ` li {emit_reg reg_tmp1}, {emit_int ofs}\n`;
++ ` add {emit_reg reg_tmp1}, sp, {emit_reg reg_tmp1}\n`;
++ ` {emit_string stg} ra, 0({emit_reg reg_tmp1})\n`
++ end
++
++let emit_store stg src ofs =
+ if is_immediate ofs then
+ ` {emit_string stg} {emit_reg src}, {emit_int ofs}(sp)\n`
+ else begin
+@@ -112,7 +124,7 @@ let emit_store src ofs =
+ ` {emit_string stg} {emit_reg src}, 0({emit_reg reg_tmp1})\n`
+ end
+
+-let emit_load dst ofs =
++let emit_load lg dst ofs =
+ if is_immediate ofs then
+ ` {emit_string lg} {emit_reg dst}, {emit_int ofs}(sp)\n`
+ else begin
+@@ -265,14 +277,16 @@ let emit_instr i =
+ ` fmv.d {emit_reg dst}, {emit_reg src}\n`
+ | {loc = Reg _; typ = (Val | Int | Addr)}, {loc = Stack s} ->
+ let ofs = slot_offset s (register_class dst) in
+- emit_store src ofs
+- | {loc = Reg _; typ = Float}, {loc = Stack _} ->
+- ` fsd {emit_reg src}, {emit_stack dst}\n`
++ emit_store stg src ofs
++ | {loc = Reg _; typ = Float}, {loc = Stack s} ->
++ let ofs = slot_offset s (register_class dst) in
++ emit_store "fsd" src ofs
+ | {loc = Stack s; typ = (Val | Int | Addr)}, {loc = Reg _} ->
+ let ofs = slot_offset s (register_class src) in
+- emit_load dst ofs
+- | {loc = Stack _; typ = Float}, {loc = Reg _} ->
+- ` fld {emit_reg dst}, {emit_stack src}\n`
++ emit_load lg dst ofs
++ | {loc = Stack s; typ = Float}, {loc = Reg _} ->
++ let ofs = slot_offset s (register_class src) in
++ emit_load "fld" dst ofs
+ | _ ->
+ fatal_error "Emit: Imove"
+ end
+@@ -292,8 +306,7 @@ let emit_instr i =
+ record_frame ~label i.live false i.dbg
+ | Lop(Itailcall_ind {label_after = _}) ->
+ let n = frame_size() in
+- if !contains_calls then
+- ` {emit_string lg} ra, {emit_int(n - size_addr)}(sp)\n`;
++ if !contains_calls then reload_ra n;
+ emit_stack_adjustment n;
+ ` jr {emit_reg i.arg.(0)}\n`
+ | Lop(Itailcall_imm {func; label_after = _}) ->
+@@ -301,8 +314,7 @@ let emit_instr i =
+ ` j {emit_label !tailrec_entry_point}\n`
+ end else begin
+ let n = frame_size() in
+- if !contains_calls then
+- ` {emit_string lg} ra, {emit_int(n - size_addr)}(sp)\n`;
++ if !contains_calls then reload_ra n;
+ emit_stack_adjustment n;
+ ` tail {emit_symbol func}\n`
+ end
+@@ -424,7 +436,7 @@ let emit_instr i =
+ ` {emit_string instr} {emit_reg i.res.(0)}, {emit_reg i.arg.(0)}, {emit_reg i.arg.(1)}, {emit_reg i.arg.(2)}\n`
+ | Lreloadretaddr ->
+ let n = frame_size () in
+- ` {emit_string lg} ra, {emit_int(n - size_addr)}(sp)\n`
++ reload_ra n
+ | Lreturn ->
+ let n = frame_size() in
+ emit_stack_adjustment n;
+@@ -542,8 +554,7 @@ let fundecl fundecl =
+ `{emit_symbol fundecl.fun_name}:\n`;
+ let n = frame_size() in
+ emit_stack_adjustment (-n);
+- if !contains_calls then
+- ` {emit_string stg} ra, {emit_int(n - size_addr)}(sp)\n`;
++ if !contains_calls then store_ra n;
+ `{emit_label !tailrec_entry_point}:\n`;
+ emit_all fundecl.fun_body;
+ List.iter emit_call_gc !call_gc_sites;
+--
+2.13.1
+
diff --git a/ocaml.spec b/ocaml.spec
index 1939da7..1e50711 100644
--- a/ocaml.spec
+++ b/ocaml.spec
@@ -23,10 +23,10 @@
%global test_arches_required aarch64 %{power64} x86_64
# Architectures where parallel builds fail.
-#%global no_parallel_build_arches aarch64
+%global no_parallel_build_arches aarch64
Name: ocaml
-Version: 4.05.0
+Version: 4.04.2
Release: 1%{?dist}
Summary: OCaml compiler and programming environment
@@ -35,11 +35,11 @@ License: QPL and (LGPLv2+ with exceptions)
URL: http://www.ocaml.org
-Source0: http://caml.inria.fr/pub/distrib/ocaml-4.05/ocaml-%{version}.tar.xz
+Source0: http://caml.inria.fr/pub/distrib/ocaml-4.04/ocaml-%{version}.tar.xz
-Source1: http://caml.inria.fr/pub/distrib/ocaml-4.05/ocaml-4.05-refman-html.tar.gz
-Source2: http://caml.inria.fr/pub/distrib/ocaml-4.05/ocaml-4.05-refman.pdf
-Source3: http://caml.inria.fr/pub/distrib/ocaml-4.05/ocaml-4.05-refman.info.tar.gz
+Source1: http://caml.inria.fr/pub/distrib/ocaml-4.04/ocaml-4.04-refman-html.tar.gz
+Source2: http://caml.inria.fr/pub/distrib/ocaml-4.04/ocaml-4.04-refman.pdf
+Source3: http://caml.inria.fr/pub/distrib/ocaml-4.04/ocaml-4.04-refman.info.tar.gz
# IMPORTANT NOTE:
#
@@ -50,7 +50,7 @@ Source3: http://caml.inria.fr/pub/distrib/ocaml-4.05/ocaml-4.05-refman.in
#
# https://pagure.io/fedora-ocaml
#
-# Current branch: fedora-27-4.05.0
+# Current branch: fedora-27-4.04.1
#
# ALTERNATIVELY add a patch to the end of the list (leaving the
# existing patches unchanged) adding a comment to note that it should
@@ -59,13 +59,14 @@ Source3: http://caml.inria.fr/pub/distrib/ocaml-4.05/ocaml-4.05-refman.in
Patch0001: 0001-Don-t-add-rpaths-to-libraries.patch
Patch0002: 0002-ocamlbyteinfo-ocamlplugininfo-Useful-utilities-from-.patch
Patch0003: 0003-configure-Allow-user-defined-C-compiler-flags.patch
+Patch0004: 0004-Don-t-rewrite-Werror.patch
# Out of tree patches from
# https://github.com/nojb/riscv-ocaml
-Patch0004: 0004-Adapt-config.guess-for-RISC-V.patch
-Patch0005: 0005-Add-RISC-V-backend-runtime.patch
-Patch0006: 0006-Try-fix-for-andi-ori-xori-immediates-1.patch
-Patch0007: 0007-Fix-immediates-range-when-adjusting-indexing-sp.patch
-Patch0008: 0008-Another-immediate-range-fix.patch
+Patch0005: 0005-Adapt-config.guess-for-RISC-V.patch
+Patch0006: 0006-Add-RISC-V-backend-runtime.patch
+Patch0007: 0007-Try-fix-for-andi-ori-xori-immediates-1.patch
+Patch0008: 0008-Fix-immediates-range-when-adjusting-indexing-sp.patch
+Patch0009: 0009-Another-immediate-range-fix.patch
BuildRequires: binutils-devel
BuildRequires: ncurses-devel
@@ -204,14 +205,12 @@ cp %{SOURCE2} refman.pdf
%build
-# Parallel builds are broken in 4.05.0, see
-# https://caml.inria.fr/mantis/view.php?id=7587
-#%ifnarch %{no_parallel_build_arches}
-#make="make %{?_smp_mflags}"
-#%else
+%ifnarch %{no_parallel_build_arches}
+make="make %{?_smp_mflags}"
+%else
unset MAKEFLAGS
make=make
-#%endif
+%endif
CFLAGS="$RPM_OPT_FLAGS -fno-strict-aliasing" \
./configure \
@@ -442,7 +441,6 @@ fi
%files compiler-libs
%doc LICENSE
%dir %{_libdir}/ocaml/compiler-libs
-%{_libdir}/ocaml/compiler-libs/*.mli
%{_libdir}/ocaml/compiler-libs/*.cmi
%{_libdir}/ocaml/compiler-libs/*.cmo
%{_libdir}/ocaml/compiler-libs/*.cma
@@ -455,11 +453,6 @@ fi
%changelog
-* Mon Jul 17 2017 Richard W.M. Jones <rjones(a)redhat.com> - 4.05.0-1
-- New upstream version 4.05.0.
-- Disable parallel builds for now.
-- *.mli files are now included in ocaml-compiler-libs.
-
* Mon Jun 26 2017 Richard W.M. Jones <rjones(a)redhat.com> - 4.04.2-1
- New upstream version 4.04.2.
- Fix: ocaml: Insufficient sanitisation allows privilege escalation for
diff --git a/sources b/sources
index f70e4d9..34ba1de 100644
--- a/sources
+++ b/sources
@@ -1,4 +1,4 @@
-SHA512 (ocaml-4.05.0.tar.xz) = e87bb25d8a580f608ea3c8308129c4e4f4513e9bb3d218a5038a67b3f39b06656ff6ebe08a4b6f36960fb603be62e6bef2694fc3cf1b0fa0df3a1ca177d4e004
-SHA512 (ocaml-4.05-refman-html.tar.gz) = a01aef22015cfcb1d230e63f24f2deeba6a8bc1a1225152e346a15e3a52be261d7f22430e561c7cbf64fbc53d3fa13606b87823efb56d139cf5e988c9a326af8
-SHA512 (ocaml-4.05-refman.info.tar.gz) = 49cd780445576061e89cf46690a5f7297d5b2c92446e6fc0e2d8878089e6b18e235785d5eb658e508a15c2bfbdd4a1c990b6eca7dadb4b4a7f313e1a8f3d0642
-SHA512 (ocaml-4.05-refman.pdf) = 2190deef5f89064774236790a130c036fe7d615177ce7e17c17a60b4d8500f78a75e15157fe13cf47125219ad731d04fb1339692047aced1ee9d768aae2a8038
+SHA512 (ocaml-4.04-refman-html.tar.gz) = 027ad5ea08488beb5ce65ec97a8aaf04197317d7d3194de771a4170dea9f8b90fc4309fd917b4176cd930dd0835c84448771b84fa92a735cfc60668ef0a6a413
+SHA512 (ocaml-4.04-refman.info.tar.gz) = e83a28e8fb6af198471d26e790ce64ae11d6a2262110ecd5a7b150f9248c221847b1bde3e076b38a7e412ea1d709e0c1bfbf890ccbd5721869ea98d6d9dcc052
+SHA512 (ocaml-4.04-refman.pdf) = 9194d0a9cddb1cde3f86f90fbe6e23740ef0e4e49515f40708fe5a2acc3318f6c3839377f93163e2520770357ad0ce7145c5cfb1424503e8873106b17338e4b6
+SHA512 (ocaml-4.04.2.tar.xz) = 0449f650388fe63e1f96c6f63d994855cf76bac5b52d3f76e781c8d9f5fddb657a24a88063c1280d45ccc741c372085bad46cdb3dbc186e1861627d500290629
6 years, 8 months
[Report] Packages Restricting Arches
by root
New package excluding arches (2)
============================
- gdb-exploitable
ExclusiveArch: x86_64 i386
ExclusiveArch: x86_64 noarch
- golang-github-cznic-lex
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
List of packages currently excluding arches (1879)
===========================================
- 0ad
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64
- GtkAda
ExclusiveArch: %{GNAT_arches}
- GtkAda3
ExclusiveArch: %{GPRbuild_arches}
- LuxRender
ExclusiveArch: x86_64
- OpenTK
ExclusiveArch: %mono_arches
- PragmARC
ExclusiveArch: %{GNAT_arches}
- R-DynDoc
ExclusiveArch: armv7, ppc, go_arch
- RdRand
ExclusiveArch: %{ix86} x86_64
- YafaRay
ExclusiveArch: %{ix86} x86_64
- aboot
ExclusiveArch: alpha
- acpid
ExclusiveArch: ia64 x86_64 %{ix86} %{arm} aarch64
- ahven
ExclusiveArch: %{GNAT_arches}
- alleyoop
ExclusiveArch: %{ix86} x86_64 ppc ppc64 ppc64le s390x %{arm} aarch64
- american-fuzzy-lop
ExclusiveArch: %{ix86} x86_64
- anet
ExclusiveArch: %{GNAT_arches}
- apmd
ExclusiveArch: %{ix86}
- apmud
ExclusiveArch: ppc
- arm-boot-config
ExclusiveArch: %{arm}
- arm-trusted-firmware
ExclusiveArch: aarch64
- atomic
ExclusiveArch: i386 i486 i586 i686 pentium3 pentium4 athlon geode x86_64 armv3l armv4b armv4l armv4tl armv5tel armv5tejl armv6l armv6hl armv7l armv7hl armv7hnl aarch64 ppc64le s390x mips mipsel mipsr6 mipsr6el mips64 mips64el mips64r6 mips64r6el
ExclusiveArch: x86_64 ppc64le
- 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}
- bcc
ExclusiveArch: x86_64
- bcm283x-firmware
ExclusiveArch: %{arm} aarch64
- beignet
ExclusiveArch: x86_64 %{ix86}
- berusky2
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64 %{mips}
- biosdevname
ExclusiveArch: %{ix86} x86_64 ia64
- bless
ExclusiveArch: %mono_arches
- boo
ExclusiveArch: %{mono_arches}
- buildah
ExclusiveArch: x86_64 aarch64 ppc64le
- bwa
ExclusiveArch: x86_64
- cadvisor
ExclusiveArch: %{ix86} x86_64 aarch64 ppc64le
- calamares
ExclusiveArch: %{ix86} x86_64
- cargo
ExclusiveArch: %{rust_arches}
- carto
ExclusiveArch: %{nodejs_arches} noarch
- ccdciel
ExclusiveArch: %{fpc_arches}
- cdcollect
ExclusiveArch: %{mono_arches}
- ceph
ExclusiveArch: x86_64 aarch64 ppc64 ppc64le
ExclusiveArch: x86_64 aarch64
- chromium
ExclusiveArch: x86_64 i686
- chromium-native_client
ExclusiveArch: x86_64
- cjdns
ExclusiveArch: %{nodejs_arches}
- cmospwd
ExclusiveArch: %{ix86} x86_64
- coffee-script
ExclusiveArch: %{nodejs_arches} noarch
- colorful
ExclusiveArch: %{fpc_arches}
- compat-gcc-296
ExclusiveArch: %{ix86} ia64 ppc
- consul
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- corosync
ExclusiveArch: i686 x86_64
- cpuid
ExclusiveArch: %{ix86} x86_64
- cqrlog
ExclusiveArch: %{fpc_arches}
- crash
ExclusiveArch: %{ix86} ia64 x86_64 ppc ppc64 s390 s390x %{arm} aarch64 ppc64le
- criu
ExclusiveArch: x86_64 %{arm} ppc64le aarch64
ExclusiveArch: x86_64 ppc64le
- cryptlib
ExclusiveArch: x86_64 %{ix86} aarch64
- cryptobone
ExclusiveArch: x86_64 %{ix86}
- daq
ExclusiveArch: x86_64 aarch64
- darktable
ExclusiveArch: x86_64 aarch64
- dbus-sharp
ExclusiveArch: %mono_arches
- dbus-sharp-glib
ExclusiveArch: %mono_arches
- dbxtool
ExclusiveArch: i386 x86_64 aarch64
- derelict
ExclusiveArch: %{ldc_arches}
- direnv
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- dlm
ExclusiveArch: i686 x86_64
- dmidecode
ExclusiveArch: %{ix86} x86_64 ia64 aarch64
- dmtcp
ExclusiveArch: %ix86 x86_64 aarch64
- docco
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- docker
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64 ppc64le s390x %{mips}
- docker-anaconda-addon
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64 ppc64le s390x %{mips}
- docker-distribution
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- docker-latest
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64 ppc64le s390x %{mips}
- dolphin-emu
ExclusiveArch: x86_64 armv7l aarch64
- dpdk
ExclusiveArch: x86_64 i686 aarch64 ppc64le
- dssi-vst
ExclusiveArch: %{ix86} x86_64
- dustmite
ExclusiveArch: %{ldc_arches}
- dyninst
ExclusiveArch: %{ix86} x86_64 ppc ppc64
- 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
- efibootmgr
ExclusiveArch: %{ix86} x86_64 aarch64 arm
- efivar
ExclusiveArch: %{ix86} x86_64 aarch64
- 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
- envytools
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64
- etcd
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64 ppc64le s390x
- exciting
ExclusiveArch: x86_64 %{ix86}
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}
- fedora-gnat-project-common
ExclusiveArch: noarch %{GNAT_arches}
- fence-virt
ExclusiveArch: i686 x86_64
- fes
ExclusiveArch: x86_64
- ffcall
ExclusiveArch: %{ffcall_arches}
- firmware-addon-dell
ExclusiveArch: x86_64 ia64 %{ix86}
- flannel
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64 ppc64le s390x
- florist
ExclusiveArch: %GPRbuild_arches
- fpc
ExclusiveArch: %{arm} %{ix86} x86_64 ppc ppc64
- frysk
ExclusiveArch: %{ix86} x86_64 ppc64
- fst
ExclusiveArch: i686
- fwupdate
ExclusiveArch: x86_64 %{ix86} aarch64
- 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: %{GNAT_arches}
- ghdl
ExclusiveArch: %{GNAT_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
- gl3n
ExclusiveArch: %{ldc_arches}
- glibc32
ExclusiveArch: x86_64 ppc64 s390x
- glide
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- gmqcc
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64
- gnatcoll
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: x86_64 aarch64 %{arm} %{ix86}
- gnu-smalltalk
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64 ppc64le
- go-bindata
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- go-compilers
ExclusiveArch: %{go_arches}
- go-i18n
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- godep
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- gofed
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64 ppc64le s390x %{mips}
- golang
ExclusiveArch: %{golang_arches}
- golang-bitbucket-kardianos-osext
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-bitbucket-ww-goautoneg
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-10gen-openssl
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64 ppc64le s390x
- golang-github-3rf-mongo-lint
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-AdRoll-goamz
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-AudriusButkevicius-cli
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-AudriusButkevicius-go-nat-pmp
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-AudriusButkevicius-pfilter
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-Azure-azure-sdk-for-go
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-BurntSushi-toml
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-BurntSushi-toml-test
ExclusiveArch: %{go_arches}
- golang-github-DATA-DOG-go-sqlmock
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-DataDog-datadog-go
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-MakeNowJust-heredoc
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-Masterminds-semver
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-Masterminds-vcs
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-PuerkitoBio-purell
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-PuerkitoBio-urlesc
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-RangelReale-osin
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-RangelReale-osincli
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-SeanDolphin-bqschema
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- golang-github-Shopify-sarama
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-Shopify-toxiproxy
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-Sirupsen-logrus
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- golang-github-abbot-go-http-auth
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-agl-ed25519
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-akrennmair-gopcap
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-appc-spec
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-armon-circbuf
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-armon-go-metrics
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-armon-go-radix
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-armon-gomdb
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-asaskevich-govalidator
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-auth0-go-jwt-middleware
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-aws-aws-sdk-go
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-beorn7-perks
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-bep-gitmap
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-bep-inflect
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-bgentry-speakeasy
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-bkaradzic-go-lz4
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-blang-semver
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-bmizerany-assert
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-bmizerany-pat
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-bmizerany-perks
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-boltdb-bolt
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-bradfitz-http2
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-bugsnag-bugsnag-go
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-bugsnag-panicwrap
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-calmh-du
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-calmh-luhn
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-calmh-xdr
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-ccding-go-stun
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-cenkalti-backoff
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-chaseadamsio-goorgeous
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-cheggaaa-pb
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-chmduquesne-rollinghash
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-circonus-labs-circonus-gometrics
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-circonus-labs-circonusllhist
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-cloudfoundry-incubator-candiedyaml
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-cockroachdb-cmux
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-codegangsta-cli
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-codegangsta-negroni
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-collectd-go-collectd
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-coreos-gexpect
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-coreos-go-etcd
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-coreos-go-iptables
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-coreos-go-log
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-coreos-go-oidc
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-coreos-go-semver
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-coreos-go-systemd
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-coreos-pkg
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-cpuguy83-go-md2man
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-cznic-b
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-cznic-fileutil
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-cznic-internal
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-cznic-lex
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-cznic-lexer
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-cznic-lldb
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-cznic-mathutil
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-cznic-sortutil
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-cznic-strutil
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-cznic-zappy
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-d2g-dhcp4
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-d2g-dhcp4client
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-d4l3k-messagediff
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-davecgh-go-spew
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-daviddengcn-go-colortext
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-dchest-cssmin
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-denverdino-aliyungo
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-dgnorton-goback
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-dgrijalva-jwt-go
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-digitalocean-godo
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-docker-go
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-docker-go-connections
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-docker-go-units
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-docker-libcontainer
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-docker-libkv
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-docker-libtrust
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-docker-spdystream
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-docopt-docopt-go
ExclusiveArch: %{ix86} x86_64 %{arm}
- golang-github-dustin-go-humanize
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-dvsekhvalnov-jose2go
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-eapache-go-resiliency
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-eapache-queue
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-edsrzf-mmap-go
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-eknkc-amber
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-elazarl-go-bindata-assetfs
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-emicklei-go-restful
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-endophage-gotuf
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-evanphx-json-patch
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-fatih-pool
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-fortytw2-leaktest
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-fsnotify-fsnotify
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-fsouza-go-dockerclient
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-garyburd-redigo
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-gengo-grpc-gateway
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-getsentry-raven-go
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-ghodss-yaml
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-glacjay-goini
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-go-asn1-ber-asn1-ber
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-go-errors-errors
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-go-fsnotify-fsnotify
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-go-ini-ini
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-go-ldap-ldap
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-go-macaron-inject
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-go-mgo-mgo
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-go-sql-driver-mysql
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-go-tomb-tomb
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-gobwas-glob
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-godbus-dbus
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-golang-appengine
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-golang-glog
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-golang-groupcache
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-golang-sys
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-golang-time
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-gonum-blas
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-gonum-floats
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-gonum-graph
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-gonum-internal
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-gonum-lapack
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-gonum-matrix
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-google-btree
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-google-go-github
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-google-go-querystring
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-google-gofuzz
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-goraft-raft
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-gorilla-context
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-gorilla-handlers
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-gorilla-mux
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-gorilla-securecookie
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-gorilla-sessions
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-gorilla-websocket
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-gosexy-gettext
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-grpc-ecosystem-go-grpc-prometheus
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-grpc-ecosystem-grpc-gateway
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-grpc-grpc-go
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-hashicorp-consul-migrate
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-hashicorp-errwrap
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-hashicorp-go-checkpoint
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-hashicorp-go-cleanhttp
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-hashicorp-go-immutable-radix
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-hashicorp-go-memdb
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-hashicorp-go-msgpack
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-hashicorp-go-multierror
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-hashicorp-go-retryablehttp
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-hashicorp-go-sockaddr
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-hashicorp-go-syslog
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-hashicorp-go-uuid
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-hashicorp-golang-lru
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-hashicorp-hcl
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-hashicorp-hil
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-hashicorp-logutils
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-hashicorp-mdns
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-hashicorp-memberlist
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-hashicorp-net-rpc-msgpackrpc
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-hashicorp-raft
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-hashicorp-raft-boltdb
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-hashicorp-raft-mdb
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-hashicorp-scada-client
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-hashicorp-serf
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-hashicorp-yamux
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-hawkular-hawkular-client-go
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-howeyc-gopass
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-imdario-mergo
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-inconshreveable-mousetrap
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-inconshreveable-muxado
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-influxdb-hyperleveldb-go
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-influxdb-influxdb
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-influxdb-rocksdb
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-jackpal-gateway
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-jacobsa-oglematchers
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-jessevdk-go-flags
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-jfrazelle-go
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-jinzhu-gorm
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-jmespath-go-jmespath
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-jmhodges-levigo
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-jonboulle-clockwork
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-jtolds-gls
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-juju-ratelimit
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-julienschmidt-httprouter
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-karlseguin-ccache
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-karlseguin-expect
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-kballard-go-shellquote
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-kdar-factorlog
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-kimor79-gollectd
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-klauspost-cpuid
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-klauspost-crc32
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-klauspost-reedsolomon
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-knieriem-markdown
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-kr-fs
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-kr-pretty
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-kr-pty
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-kr-text
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-kyokomi-emoji
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-lib-pq
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-lpabon-godbc
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-lsegal-gucumber
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-magiconair-properties
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-mattn-go-isatty
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-mattn-go-runewidth
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-mattn-go-sqlite3
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-matttproud-golang_protobuf_extensions
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-mesos-mesos-go
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-miekg-dns
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-miekg-mmark
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-miekg-pkcs11
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-milochristiansen-axis2
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-milochristiansen-lua
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-minio-sha256-simd
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-mistifyio-go-zfs
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-mitchellh-cli
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-mitchellh-copystructure
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-mitchellh-go-homedir
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-mitchellh-go-wordwrap
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-mitchellh-goamz
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-mitchellh-mapstructure
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-mitchellh-reflectwalk
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-mreiferson-go-httpclient
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- golang-github-mvo5-goconfigparser
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-mvo5-uboot-go
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-mxk-go-flowrate
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-ncw-swift
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-noahdesu-go-ceph
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-ojii-gettext.go
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-olekukonko-tablewriter
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-olekukonko-ts
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-olivere-elastic
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-onsi-ginkgo
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-onsi-gomega
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-opencontainers-runtime-spec
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-opencontainers-specs
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-openshift-go-json-rest
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- golang-github-openshift-go-systemd
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- golang-github-openshift-openshift-sdn
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-oschwald-geoip2-golang
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-oschwald-maxminddb-golang
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-pelletier-go-buffruneio
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-pelletier-go-toml
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-petar-GoLLRB
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-peterh-liner
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-petermattis-goid
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-pkg-errors
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-pkg-profile
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-pkg-sftp
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-pmezard-go-difflib
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-prometheus-client_golang
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-prometheus-client_model
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- golang-github-prometheus-common
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-prometheus-procfs
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-prometheus-prometheus
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- golang-github-racker-perigee
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- golang-github-rackspace-gophercloud
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-rakyll-globalconf
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- golang-github-rakyll-pb
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-rakyll-statik
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- golang-github-rcrowley-go-metrics
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- golang-github-remyoudompheng-bigfft
ExclusiveArch: %{ix86} x86_64 %{arm}
- golang-github-russross-blackfriday
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-ryanuber-columnize
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- golang-github-samalba-dockerclient
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-samuel-go-zookeeper
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- golang-github-sasha-s-go-deadlock
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-seccomp-libseccomp-golang
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-shiena-ansicolor
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-shurcooL-sanitized_anchor_name
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-skarademir-naturalsort
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- golang-github-skratchdot-open-golang
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- golang-github-skynetservices-skydns
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- golang-github-smartystreets-assertions
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-smartystreets-go-aws-auth
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- golang-github-smartystreets-goconvey
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-spacejam-loghisto
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-spacemonkeygo-flagfile
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- golang-github-spacemonkeygo-spacelog
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- golang-github-spf13-afero
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-spf13-cast
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-spf13-cobra
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-spf13-fsync
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-spf13-jWalterWeatherman
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-spf13-nitro
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-spf13-pflag
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-spf13-viper
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-stathat-go
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- golang-github-stevvooe-resumable
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-stretchr-objx
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-stretchr-testify
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-syndtr-gocapability
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- golang-github-syndtr-goleveldb
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- golang-github-syndtr-gosnappy
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-tent-http-link-go
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- golang-github-thejerf-suture
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-tonnerre-golang-pretty
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- golang-github-ugorji-go
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-urfave-cli
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-vaughan0-go-ini
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- golang-github-vbatts-tar-split
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-vishvananda-netlink
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} aarch64 x86_64 %{arm}}
- golang-github-vishvananda-netns
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-vitrun-qart
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-vjeantet-asn1-ber
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-vmware-govcloudair
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- golang-github-wsxiaoys-terminal
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-xeipuuv-gojsonpointer
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-xeipuuv-gojsonreference
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-xeipuuv-gojsonschema
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-xiang90-probing
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-xtaci-kcp-go
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-xtaci-smux
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-yosssi-ace
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-yosssi-gohtml
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-yvasiyarov-go-metrics
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-yvasiyarov-gorelic
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-yvasiyarov-newrelic_platform_go
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-zillode-notify
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-google-golangorg-cloud
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-googlecode-gcfg
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- golang-googlecode-go-crypto
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-googlecode-go-decimal-inf
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-googlecode-go-exp
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-googlecode-goauth2
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-googlecode-gogoprotobuf
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-googlecode-gomock
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- golang-googlecode-google-api-client
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-googlecode-goprotobuf
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-googlecode-log4go
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- golang-googlecode-net
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-googlecode-sqlite
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- golang-googlecode-text
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-googlecode-tools
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-googlecode-uuid
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-gopkg-check
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-gopkg-go-check-check
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-gopkg-go-macaroon-macaroon
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-gopkg-retry-v1
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-gopkg-yaml
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golint
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- gomtree
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- gotags
ExclusiveArch: %{go_arches}
- 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
- gsf-sharp
ExclusiveArch: %mono_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
- hedgewars
ExclusiveArch: %{fpc_arches}
- heketi
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- hub
ExclusiveArch: %{go_arches}
- hyena
ExclusiveArch: %{mono_arches}
- hyperscan
ExclusiveArch: x86_64
- hyperv-daemons
ExclusiveArch: i686 x86_64
- icaro
ExclusiveArch: %{ix86} %{arm} x86_64 noarch
- ikarus
ExclusiveArch: %{ix86}
- imvirt
ExclusiveArch: %{ix86} x86_64 ia64
- indistarter
ExclusiveArch: %{fpc_arches}
- infinipath-psm
ExclusiveArch: x86_64
- intel-cmt-cat
ExclusiveArch: x86_64 i686 i586
ExclusiveArch: x86_64 i686 i586
- ioport
ExclusiveArch: %{ix86} x86_64
- ipw2100-firmware
ExclusiveArch: noarch i386 x86_64
- ipw2200-firmware
ExclusiveArch: noarch i386 x86_64
- ispc
ExclusiveArch: %{arm} %{ix86} x86_64
- iwyu
ExclusiveArch: %{ix86} x86_64
- ixpdimm_sw
ExclusiveArch: 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}
- julia
ExclusiveArch: %{ix86} x86_64
- keepass
ExclusiveArch: %{mono_arches}
- kernel
ExclusiveArch: %{all_x86} x86_64 ppc64 ppc64p7 s390x %{arm} aarch64 ppc64le
- knot-resolver
ExclusiveArch: %{arm} aarch64 %{ix86} x86_64
- kompose
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- kosmtik
ExclusiveArch: %{nodejs_arches} noarch
- kubernetes
ExclusiveArch: x86_64 aarch64 ppc64le s390x
- latrace
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64 %{power64}
- lazarus
ExclusiveArch: %{fpc_arches}
- ldc
ExclusiveArch: %{ldc_arches}
- libbsr
ExclusiveArch: %{power64}
- libclc
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64 %{power64} s390x
- libcxl
ExclusiveArch: %{power64}
- libflatarray
ExclusiveArch: %{ix86} x86_64
- libhfi1
ExclusiveArch: x86_64
- libica
ExclusiveArch: s390 s390x
- libinvm-cim
ExclusiveArch: x86_64
- libinvm-cli
ExclusiveArch: x86_64
- libinvm-i18n
ExclusiveArch: x86_64
- libipathverbs
ExclusiveArch: x86_64
- libipt
ExclusiveArch: %{ix86} x86_64
ExclusiveArch: %{ix86} x86_64
- libjingle
ExclusiveArch: %{ix86} x86_64 %{arm}
- libmfx
ExclusiveArch: %{ix86} x86_64
- libpsm2
ExclusiveArch: x86_64
- librtas
ExclusiveArch: ppc %{power64}
- libseccomp
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64 mipsel mips64el ppc64 ppc64le s390 s390x
- libservicelog
ExclusiveArch: ppc %{power64}
- libsmbios
ExclusiveArch: x86_64 ia64 %{ix86}
- libunwind
ExclusiveArch: %{arm} aarch64 hppa ia64 mips ppc %{power64} %{ix86} x86_64
- libvmi
ExclusiveArch: x86_64
- libvpd
ExclusiveArch: ppc %{power64}
- libxsmm
ExclusiveArch: x86_64
- libzfcphbaapi
ExclusiveArch: s390 s390x
- lldb
ExclusiveArch: %{arm} aarch64 %{ix86} x86_64
- lodash
ExclusiveArch: %{nodejs_arches} noarch
- log4net
ExclusiveArch: %mono_arches
- lrmi
ExclusiveArch: %{ix86}
- lsvpd
ExclusiveArch: ppc %{power64}
- luajit
ExclusiveArch: %{arm} %{ix86} x86_64 %{mips} aarch64
- mactel-boot
ExclusiveArch: x86_64
- manifest-tool
ExclusiveArch: x86_64 aarch64 ppc64le s390x
- marked
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- matreshka
ExclusiveArch: %GPRbuild_arches
- 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
- 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: %{GNAT_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
- mokutil
ExclusiveArch: %{ix86} x86_64 aarch64
- mongo-tools
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64 ppc64le s390x
- 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-debugger
ExclusiveArch: %ix86 x86_64
- mono-reflection
ExclusiveArch: %mono_arches
- mono-tools
ExclusiveArch: %mono_arches
- mono-zeroconf
ExclusiveArch: %mono_arches
- monobristol
ExclusiveArch: %{mono_arches}
- monodevelop
ExclusiveArch: %mono_arches
- monodevelop-debugger-gdb
ExclusiveArch: %{mono_arches}
- monosim
ExclusiveArch: %mono_arches
- mrrescue
ExclusiveArch: %{arm} %{ix86} x86_64 %{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-arm-gcc
ExclusiveArch: x86_64
- nacl-arm-newlib
ExclusiveArch: x86_64
- nacl-binutils
ExclusiveArch: x86_64
- nacl-gcc
ExclusiveArch: x86_64
- nacl-newlib
ExclusiveArch: x86_64
- nant
ExclusiveArch: %mono_arches
- nbc
ExclusiveArch: %{fpc_arches}
- ndesk-dbus
ExclusiveArch: %{mono_arches}
- ndesk-dbus-glib
ExclusiveArch: %{mono_arches}
- newtonsoft-json
ExclusiveArch: %{mono_arches}
- nini
ExclusiveArch: %{mono_arches}
- node-gyp
ExclusiveArch: %{nodejs_arches} noarch
- nodejs
ExclusiveArch: %{nodejs_arches}
- nodejs-abbrev
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-accepts
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-acorn
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-after
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-agent-base
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-alter
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-ansi
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ansi-cyan
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-ansi-font
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ansi-green
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-ansi-magenta
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-ansi-regex
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ansi-styles
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} 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-ansidiff
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-ansistyles
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-transform
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-aproba
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-archiver
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-archiver-utils
ExclusiveArch: %{nodejs_arches} 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-differ
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-array-filter
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} 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-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-uniq
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-array-unique
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-arrify
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-as-number
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-ast-traverse
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-ast-types
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-astral
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-astral-angular-annotate
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-astral-pass
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-cache
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-async-each
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-async-queue
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-async-some
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-aws-sign
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-aws-sign2
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-babel-runtime
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-backbone
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-balanced-match
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-base64-js
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-base64-url
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-basic-auth
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-basic-auth-connect
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-basic-auth-parser
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-batch
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-bcrypt
ExclusiveArch: %{nodejs_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- 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-bignumber-js
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-bindings
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-bl
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-breakable
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-browser-request
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-bson
ExclusiveArch: %{nodejs_arches} 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-shims
ExclusiveArch: %{nodejs_arches} 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-bytes
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-caching-transform
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-call-signature
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} 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-camel-case
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-camelcase
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-camelcase-keys
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-caniuse-db
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-capture-stack-trace
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-carrier
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-caseless
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-chai
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-chai-connect-middleware
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-chai-passport-strategy
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-chainsaw
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-chalk
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-change-case
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-char-spinner
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-character-parser
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-charm
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-child-process-close
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-chmodr
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-chownr
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-chrono
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-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-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-cliui
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-clone
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-cls
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} 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-code-point-at
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-codemirror
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-collections
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-colors
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} 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-commondir
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-commoner
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-commonmark
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-component-emitter
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-component-indexof
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-compress-commons
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-compressible
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-compression
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-concat-map
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-concat-stream
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-config-chain
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-connect
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-connect-livereload
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-connect-timeout
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-console-browserify
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-console-dot-log
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-constant-case
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-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-signature
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-cookiejar
ExclusiveArch: %{nodejs_arches} 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-couch-login
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-coveralls
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-crc32-stream
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-create-error-class
ExclusiveArch: %{nodejs_arches} 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-cryptiles
ExclusiveArch: %{nodejs_arches} 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-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-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-generate
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-csv-spectrum
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-d
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-dashdash
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-data-uri-to-buffer
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-date-now
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-dateformat
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-debug
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-debuglog
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-decamelize
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-decompress-response
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-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-deferred
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-define-properties
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-defined
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-defs
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-degenerator
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-dep-graph
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-depd
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-dependency-lister
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-detective
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-dezalgo
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-docopt
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-doctrine
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-dom-serializer
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-domelementtype
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-domhandler
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-domutils
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-dot-case
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-dotfile-regex
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-dreamopt
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-dryice
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-dtree
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-duplex
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-duplexer
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-duplexer2
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-duplexer3
ExclusiveArch: %{nodejs_arches} 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-each-async
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ebnf-parser
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-ecstatic
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-encodeurl
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-encoding
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-end-of-stream
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-entities
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-error-ex
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-errorhandler
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-errs
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-map
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-es6-promise
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-es6-set
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} 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-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-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-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-esutils
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-etag
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-event-emitter
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-event-stream
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-eventemitter2
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-eventemitter3
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-events
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-events-to-array
ExclusiveArch: %{nodejs_arches} 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-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
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-extend-shallow
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-extglob
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-extsprintf
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-eyes
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-fancy-log
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-far
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-fast-levenshtein
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-faye-websocket
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-fd
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-fd-slicer
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-fg-lodash
ExclusiveArch: %{nodejs_arches} 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-file-uri-to-path
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-filed
ExclusiveArch: %{nodejs_arches} 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-flot
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-fn-dot-name
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-fn-name
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-follow
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-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-freetree
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-fresh
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-from
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-from2
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-extra
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-fs-vacuum
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-fs-write-stream-atomic
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-fs2
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
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-ftp
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-function-bind
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-pkg-repo
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-get-port
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-get-stdin
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-get-stream
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-get-uri
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-getobject
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-gettext-parser
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-parent
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-gonzales-pe
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-got
ExclusiveArch: %{nodejs_arches} 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-angular-templates
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-connect
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-grunt-contrib-copy
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-grunt-contrib-csslint
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-grunt-contrib-cssmin
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-grunt-contrib-htmlmin
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-grunt-contrib-internal
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-grunt-contrib-less
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-grunt-contrib-nodeunit
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-grunt-contrib-requirejs
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-html-validation
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-saucelabs
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-grunt-sed
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-grunt-simple-mocha
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-grunt-util-args
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-grunt-util-options
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-grunt-util-process
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-grunt-util-property
ExclusiveArch: %{nodejs_arches} 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: %{ix86} x86_64 %{arm} noarch
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-has
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-has-ansi
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-has-color
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} 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-unicode
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-he
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-heap
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-highlight-js
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-hock
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-hoek
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-html-minifier
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-htmlparser2
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-http-errors
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-http-proxy
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-http-proxy-agent
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-http-server
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-http-signature
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-https-proxy-agent
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} 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-imurmurhash
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-indent-string
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-infinity-agent
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-inflight
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-init-package-json
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-inline-source-map
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-install
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-int64-buffer
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-interpret
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-into-stream
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-invert-kv
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ip
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-irc-colors
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-absolute
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} 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-date-object
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
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-equal-shallow
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} 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-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-lower-case
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-my-json-valid
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-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-property
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-redirect
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-regex
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-regexp
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-relative
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-is-retry-allowed
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-stream
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-string
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-is-symbol
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-text-path
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-typedarray
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-unc-path
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-is-upper-case
ExclusiveArch: %{nodejs_arches} 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-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
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
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-jison
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-jison-lex
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-jju
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-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-jshint
ExclusiveArch: %{nodejs_arches} 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-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: %{ix86} x86_64 %{arm} noarch
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-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-langdetect
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-latest-version
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-levn
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-lex-parser
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-libxmljs
ExclusiveArch: %{nodejs_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- nodejs-line-reader
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-load-json-file
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-symbols
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-lolex
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-loud-rejection
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-lower-case
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-lower-case-first
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-lowercase-keys
ExclusiveArch: %{nodejs_arches} 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-make-arrow-function
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-make-generator-function
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-map-obj
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-map-stream
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-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-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-mdurl
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-media-typer
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-memoizee
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-meow
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-merge-descriptors
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-merge-stream
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} 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-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-minimatch
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-minimist
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-minstache
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-mkdirp
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-mkfiletree
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-mock-fs
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
ExclusiveArch: %{ix86} x86_64 %{arm} 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-multiline
ExclusiveArch: %{nodejs_arches} 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-mustache
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-nano
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-native-or-bluebird
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-negotiator
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-nested-error-stacks
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-net-browserify-alt
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-netmask
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-next
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-next-tick
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} 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-print
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-node-static
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-node-status-codes
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-node-stringprep
ExclusiveArch: %{nodejs_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- nodejs-node-uuid
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-nomnom
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-package-data
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-registry-client
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-npm-run-path
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-npm-stats
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-npm-user-validate
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-npmlog
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-nsp-api
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-nsp-audit-shrinkwrap
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-object-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-inspect
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-object-is
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-object-keys
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-onetime
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-only-shallow
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-oop
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-open
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-opener
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-opn
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
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-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-p-finally
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-p-is-promise
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-p-limit
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-p-locate
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-pac-proxy-agent
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-pac-resolver
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-package
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-package-info
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-package-json
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-param-case
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-json
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-parse-ms
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-parserlib
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-parseurl
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-pascal-case
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-strategy
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-path-array
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-path-case
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-path-exists
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-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-pause-stream
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-pedding
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-pegjs
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-pem
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-pend
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-pff
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-pg
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-pg-connection-string
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-pg-escape
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-pg-types
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-pgpass
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-pify
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-portfinder
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-portscanner
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-posix-getopt
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-prelude-ls
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-prepend-http
ExclusiveArch: %{nodejs_arches} 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-private
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-process-nextick-args
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
ExclusiveArch: %{ix86} x86_64 %{arm} 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-proto-list
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-proxy
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-proxy-agent
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-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-qunit-extras
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-qunitjs
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-rainbowsocks
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} 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-rc
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-dir-files
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-installed
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-package-tree
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-read-pkg
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-read-pkg-up
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-readable-stream
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-readdir-scoped-modules
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-readdirp
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-realize-package-specifier
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-recast
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} 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-regenerator
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-regex-cache
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-registry-url
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-relateurl
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-requestretry
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-require-cs
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-require-directory
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-require-inject
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-requires-port
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-resolve
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-resolve-from
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-resolve-pkg
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-response-time
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-resumer
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-retry
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-revalidator
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-rewire
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-rhea
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-rimraf
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-rndm
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-ronn
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-run-parallel-limit
ExclusiveArch: %{nodejs_arches} 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-safecb
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-samsam
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-sauce-tunnel
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-saucelabs
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-sax
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-scmp
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-secure-random
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-semver
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-send
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-sentence-case
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-seq
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-serve-static
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} 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-setimmediate
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-sha
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-sigmund
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-signal-exit
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-silent-npm-registry-client
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-simple-assert
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-restore
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-slide
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-smart-buffer
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-snake-case
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-snockets
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-sntp
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-socks-client
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-socks-proxy-agent
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-sort-keys
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-sparkles
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-spdx-correct
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-spdx-exceptions
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-spdx-expression-parse
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-spdx-license-ids
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-speedometer
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-split
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-st
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-favicon
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-statuses
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-std-mocks
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-equal
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-stream-reduce
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-to-array
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-streamsink
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-indent
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-strip-json-comments
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-strip-path
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-strscanner
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-stylus
ExclusiveArch: %{ix86} x86_64 %{arm} 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-superagent-proxy
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-swap-case
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-symbol-observable
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-tad
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-parser
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-tape
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-tar
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-tar-stream
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-temp
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-temporary
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-tern
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-test
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-testjs
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-testswarm
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} 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-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-stamp
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-timed-out
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-title-case
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-to-absolute-glob
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-to-object-path
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} 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-trim-newlines
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-try-open
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-tryor
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-tsscmp
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-ttembed-js
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-tunnel-agent
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-typedarray
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: %{ix86} x86_64 %{arm} 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-7.0.0
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-unicode-length
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-union
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-unpipe
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-unzip-response
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-upper-case
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-upper-case-first
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-uri-path
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-url-join
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-url-parse-lax
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-url2
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-utfx
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-util
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-util-deprecate
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-util-extend
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-utile
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-utilities
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-utils-merge
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-vali-date
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-validate-npm-package-license
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-validate-npm-package-name
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-vary
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-vasync
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-verror
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-vhost
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-vinyl
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
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-w3cjs
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-walkdir
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-watchit
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} 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-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-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-file-atomic
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-write-json-file
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-write-pkg
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ws
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-xml2js
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-xmlbuilder
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-xmldom
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-xregexp
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} 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-yargs
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-yauzl
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-zap
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-zip-stream
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
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- notify-sharp
ExclusiveArch: %{mono_arches}
- notify-sharp3
ExclusiveArch: %{mono_arches}
- nuget
ExclusiveArch: %{mono_arches}
- numatop
ExclusiveArch: %{ix86} x86_64
- nunit
ExclusiveArch: %{mono_arches}
- nunit2
ExclusiveArch: %{mono_arches}
- nvml
ExclusiveArch: x86_64
- nwchem
ExclusiveArch: x86_64 %{ix86}
- oci-register-machine
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- ocitools
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- odcs
ExclusiveArch: %{ix86} x86_64
- olpc-kbdshim
ExclusiveArch: %{ix86} %{arm}
- olpc-netutils
ExclusiveArch: %{ix86} %{arm}
- olpc-powerd
ExclusiveArch: %{ix86} %{arm}
- olpc-utils
ExclusiveArch: %{ix86} %{arm}
- 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}
- openmx
ExclusiveArch: x86_64 %{ix86}
- 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
- orocos-bfl
ExclusiveArch: %{ix86} x86_64
- orthorobot
ExclusiveArch: %{arm} %{ix86} x86_64 %{mips} aarch64 ppc64
- paflib
ExclusiveArch: ppc %{power64}
- pcc
ExclusiveArch: %{ix86} x86_64
- pcmciautils
ExclusiveArch: %{ix86} x86_64 ia64 ppc ppc64 %{arm}
- pdfmod
ExclusiveArch: %mono_arches
- perl-Dumbbench
ExclusiveArch: %{ix86} x86_64 noarch
- perl-Parse-DMIDecode
ExclusiveArch: %{ix86} x86_64 ia64 aarch64
- pesign
ExclusiveArch: %{ix86} x86_64 ia64 aarch64 arm
- pesign-test-app
ExclusiveArch: i686 x86_64 ia64 aarch64
- pinta
ExclusiveArch: %mono_arches
- pioneer
ExclusiveArch: %{ix86} x86_64
- playonlinux
ExclusiveArch: %{arm} aarch64 %{ix86} x86_64
- polyml
ExclusiveArch: %{ix86} x86_64 sparc sparcv8 sparcv9 sparcv9v ppc %{power64} %{arm} aarch64 ia64 mips mipsel
- poppler-sharp
ExclusiveArch: %mono_arches
- powerpc-utils
ExclusiveArch: ppc %{power64}
- ppc64-diag
ExclusiveArch: ppc %{power64}
- ppc64-utils
ExclusiveArch: ppc %{power64}
- prelude-correlator
ExclusiveArch: %{ix86} x86_64
- prewikka
ExclusiveArch: %{ix86} x86_64
- publican-jboss
ExclusiveArch: i686 x86_64
- pvs-sbcl
ExclusiveArch: %{ix86} x86_64 ppc sparcv9
- python-afl
ExclusiveArch: %{ix86} x86_64
- 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-ovirt-register
ExclusiveArch: %{ix86} 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
- qt4pas
ExclusiveArch: %{fpc_arches}
- qt5-qtwebengine
ExclusiveArch: %{qt5_qtwebengine_arches}
- quantum-espresso
ExclusiveArch: x86_64 %{ix86}
ExclusiveArch: %{openblas_arches}
- 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
- reptyr
ExclusiveArch: %{ix86} x86_64 %{arm}
- rescene
ExclusiveArch: %{mono_arches}
- restsharp
ExclusiveArch: %{mono_arches}
- rhythmbox-alternative-toolbar
ExclusiveArch: %{ix86} %{arm} x86_64 ppc64 ppc64le
- rkt
ExclusiveArch: x86_64 aarch64 %{arm} %{ix86}
- runc
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64 ppc64le %{mips} s390x
- rust
ExclusiveArch: %{rust_arches}
- rust-packaging
ExclusiveArch: %{rust_arches} noarch
- s390utils
ExclusiveArch: s390 s390x
- sagemath
ExclusiveArch: aarch64 %{arm} %{ix86} x86_64 ppc sparcv9
- sbcl
ExclusiveArch: %{arm} %{ix86} x86_64 ppc sparcv9 aarch64
- sbd
ExclusiveArch: i686 x86_64 s390x
- seamonkey
ExclusiveArch: %{ix86} x86_64
- servicelog
ExclusiveArch: ppc %{power64}
- sharpfont
ExclusiveArch: %mono_arches
- sharpziplib
ExclusiveArch: %{mono_arches}
- shim
ExclusiveArch: x86_64
- shim-signed
ExclusiveArch: x86_64 aarch64
- shim-unsigned-aarch64
ExclusiveArch: aarch64
- sigul
ExclusiveArch: x86_64
- skychart
ExclusiveArch: %{fpc_arches}
- slapi-nis
ExclusiveArch: x86_64 %{ix86}
- smuxi
ExclusiveArch: %{ix86} x86_64 %{arm} ppc64le
- snapd
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64 ppc64le s390x
- 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
- spice-xpi
ExclusiveArch: i686 x86_64 armv6l armv7l armv7hl aarch64
- spring
ExclusiveArch: %{ix86} x86_64
- springlobby
ExclusiveArch: %{ix86} x86_64
- statsd
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- stripesnoop
ExclusiveArch: %{ix86} x86_64
- supermin
ExclusiveArch: x86_64
- sysbench
ExclusiveArch: %{arm} %{ix86} x86_64 %{mips}
ExclusiveArch: %{arm} %{ix86} x86_64 %{mips} aarch64
- syslinux
ExclusiveArch: %{ix86} x86_64
ExclusiveArch: %{ix86} x86_64
ExclusiveArch: %{ix86} x86_64
ExclusiveArch: %{ix86} x86_64
- taglib-sharp
ExclusiveArch: %{mono_arches}
- tarantool
ExclusiveArch: %{ix86} x86_64 armv7hl armv7hnl aarch64
- tboot
ExclusiveArch: %{ix86} x86_64
- templates_parser
ExclusiveArch: %GPRbuild_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
- thunderbird-enigmail
ExclusiveArch: %{ix86} %{arm} ppc64 ppc64le s390x x86_64 noarch
- tilix
ExclusiveArch: %{ldc_arches}
- tmux-top
ExclusiveArch: %{go_arches}
- tomboy
ExclusiveArch: %{mono_arches}
- tpm2-tools
ExclusiveArch: %{ix86} x86_64
- tpm2-tss
ExclusiveArch: %{ix86} x86_64
- uClibc
ExclusiveArch: %{arm} %{ix86} x86_64 %{mips}
- 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
- v8
ExclusiveArch: %{ix86} x86_64 ppc ppc64 aarch64 %{mips} s390 s390x
- 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
- vdsm
ExclusiveArch: x86_64 %{power64} aarch64
- vim-go
ExclusiveArch: %{?golang_arches:%{golang_arches} noarch}%{!?golang_arches:%{ix86} x86_64 %{arm}}
- virtualplanet
ExclusiveArch: %{fpc_arches}
- vrq
ExclusiveArch: %{ix86} x86_64
- warsow
ExclusiveArch: %{ix86} x86_64 %{arm}
- warsow-data
ExclusiveArch: %{ix86} x86_64 %{arm}
- webkit-sharp
ExclusiveArch: %mono_arches
- wine
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64
ExclusiveArch: %{ix86} %{arm}
- winetricks
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64
- wiredtiger
ExclusiveArch: x86_64 aarch64 ppc64le
- wraplinux
ExclusiveArch: %{ix86} x86_64
- wxMaxima
ExclusiveArch: %{arm} %{ix86} x86_64 aarch64 ppc sparcv9
- x86info
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-freedreno
ExclusiveArch: %{arm} aarch64
- xorg-x11-drv-geode
ExclusiveArch: %{ix86}
- xorg-x11-drv-intel
ExclusiveArch: %{ix86} x86_64 ia64
- xorg-x11-drv-omap
ExclusiveArch: %{arm}
- xorg-x11-drv-openchrome
ExclusiveArch: %{ix86} x86_64
- xorg-x11-drv-opentegra
ExclusiveArch: %{arm}
- xorg-x11-drv-vesa
ExclusiveArch: %{ix86} x86_64
- xorg-x11-drv-vmware
ExclusiveArch: %{ix86} x86_64 ia64
- xsp
ExclusiveArch: %mono_arches
- xsupplicant
ExclusiveArch: %{ix86} x86_64 ppc %{power64}
- ycssmin
ExclusiveArch: %{nodejs_arches} noarch
- zeromq-ada
ExclusiveArch: %{GNAT_arches}
- zlib-ada
ExclusiveArch: %{GNAT_arches}
6 years, 8 months
Architecture specific change in rpms/mediaconch.git
by githook-noreply@fedoraproject.org
The package rpms/mediaconch.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/mediaconch.git/commit/?id=f82b57a....
Change:
+ExclusiveArch: %{qt5_qtwebengine_arches}
Thanks.
Full change:
============
commit f82b57a8840d1a17b5cfdb245e5c0133f3a8db04
Author: Vascom <vascom2(a)gmail.com>
Date: Fri Jul 21 09:31:31 2017 +0300
Exclusive arches for qt5_qtwebengine_arches.
diff --git a/mediaconch.spec b/mediaconch.spec
index 9b7411f..8db469e 100644
--- a/mediaconch.spec
+++ b/mediaconch.spec
@@ -29,6 +29,8 @@ BuildRequires: pkgconfig(jansson)
BuildRequires: systemd
BuildRequires: libappstream-glib
+ExclusiveArch: %{qt5_qtwebengine_arches}
+
%description
MediaConch is an implementation checker, policy checker, reporter,
commit d44e29730343f256b292dc5f1868846c2cd34241
Author: Vascom <vascom2(a)gmail.com>
Date: Fri Jul 21 09:22:16 2017 +0300
Initial commit.
diff --git a/.gitignore b/.gitignore
index e69de29..0e5d764 100644
--- a/.gitignore
+++ b/.gitignore
@@ -0,0 +1 @@
+/mediaconch_17.06.tar.xz
diff --git a/mediaconch.spec b/mediaconch.spec
new file mode 100644
index 0000000..9b7411f
--- /dev/null
+++ b/mediaconch.spec
@@ -0,0 +1,256 @@
+%global libmediainfo_version 0.7.94
+%global libzen_version 0.4.35
+
+Name: mediaconch
+Version: 17.06
+Release: 3%{?dist}
+Summary: Most relevant technical and tag data for video and audio files (CLI)
+
+License: GPLv3+ and MPLv2.0
+URL: https://mediaarea.net/MediaConch/
+Source0: https://mediaarea.net/download/source/%{name}/%{version}/%{name}_%{versio...
+
+BuildRequires: gcc-c++
+BuildRequires: pkgconfig(libmediainfo) >= %{libmediainfo_version}
+BuildRequires: pkgconfig(libzen) >= %{libzen_version}
+BuildRequires: pkgconfig(zlib)
+BuildRequires: libtool
+BuildRequires: automake
+BuildRequires: autoconf
+BuildRequires: pkgconfig(libxml-2.0)
+BuildRequires: pkgconfig(libxslt)
+BuildRequires: pkgconfig(libcurl)
+BuildRequires: pkgconfig(sqlite3)
+BuildRequires: pkgconfig(libevent)
+BuildRequires: qt5-qtbase-devel
+BuildRequires: qt5-qtwebengine-devel
+BuildRequires: desktop-file-utils
+BuildRequires: pkgconfig(jansson)
+BuildRequires: systemd
+BuildRequires: libappstream-glib
+
+
+%description
+MediaConch is an implementation checker, policy checker, reporter,
+and fixer that targets preservation-level audiovisual files
+(specifically Matroska, Linear Pulse Code Modulation (LPCM)
+and FF Video Codec 1 (FFV1)).
+
+This project is maintained by MediaArea and funded by PREFORMA.
+
+This package includes the command line interface.
+
+%package gui
+Summary: Supplies technical and tag information about a video or audio file (GUI)
+Requires: hicolor-icon-theme
+
+%description gui
+MediaConch is an implementation checker, policy checker, reporter,
+and fixer that targets preservation-level audiovisual files
+(specifically Matroska, Linear Pulse Code Modulation (LPCM)
+and FF Video Codec 1 (FFV1)).
+
+This project is maintained by MediaArea and funded by PREFORMA.
+
+This package includes the graphical user interface.
+
+%package server
+Summary: Supplies technical and tag information about a video or audio file (Server)
+%{?systemd_requires}
+
+%description server
+MediaConch is an implementation checker, policy checker, reporter,
+and fixer that targets preservation-level audiovisual files
+(specifically Matroska, Linear Pulse Code Modulation (LPCM)
+and FF Video Codec 1 (FFV1)).
+
+This project is maintained by MediaArea and funded by PREFORMA.
+
+This package includes the server.
+
+%prep
+%autosetup -n MediaConch
+rm -rf Source/ThirdParty
+sed -i 's/.$//' *.txt *.html Release/*.txt
+
+sed -i 's/AC_PROG_LIBTOOL/LT_INIT([disable-static])/' Project/GNU/CLI/configure.ac
+sed -i 's/AC_PROG_LIBTOOL/LT_INIT([disable-static])/' Project/GNU/Server/configure.ac
+# sed -i 's/INCLUDES/AM_CPPFLAGS/' Project/GNU/CLI/Makefile.am
+# sed -i 's/INCLUDES/AM_CPPFLAGS/' Project/GNU/Server/Makefile.am
+
+pushd Project/GNU/CLI
+ autoreconf -fiv
+popd
+
+pushd Project/GNU/Server
+ autoreconf -fiv
+popd
+
+
+%build
+# build CLI
+pushd Project/GNU/CLI
+ %configure --enable-static=no
+ %make_build
+popd
+
+# build server
+pushd Project/GNU/Server
+ %configure --enable-static=no
+ %make_build
+popd
+
+# now build GUI
+pushd Project/Qt
+ %{qmake_qt5}
+ %make_build
+popd
+
+
+%install
+pushd Project/GNU/CLI
+ %make_install
+popd
+
+pushd Project/GNU/Server
+ %make_install
+popd
+
+pushd Project/Qt
+ install -dm 755 %{buildroot}%{_bindir}
+ install -m 755 -p mediaconch-gui %{buildroot}%{_bindir}
+popd
+
+# icon
+install -dm 755 %{buildroot}%{_datadir}/icons/hicolor/256x256/apps
+install -m 644 -p Source/Resource/Image/MediaConch.png %{buildroot}%{_datadir}/icons/hicolor/256x256/apps/%{name}.png
+install -dm 755 %{buildroot}%{_datadir}/pixmaps
+install -m 644 -p Source/Resource/Image/MediaConch.png %{buildroot}%{_datadir}/pixmaps/%{name}.png
+
+# menu-entry
+install -dm 755 %{buildroot}%{_datadir}/applications
+install -m 644 -p Project/GNU/GUI/mediaconch-gui.desktop %{buildroot}%{_datadir}/applications
+
+desktop-file-install --dir="%{buildroot}%{_datadir}/applications" -m 644 Project/GNU/GUI/mediaconch-gui.desktop
+
+install -dm 755 %{buildroot}%{_datadir}/appdata/
+install -m 644 -p Project/GNU/GUI/mediaconch-gui.appdata.xml %{buildroot}%{_datadir}/appdata/mediaconch-gui.appdata.xml
+
+install -dm 755 %{buildroot}%{_unitdir}
+install -m 644 -p Project/GNU/Server/mediaconchd.service %{buildroot}%{_unitdir}/mediaconchd.service
+
+install -dm 755 %{buildroot}%{_sysconfdir}/%{name}
+install -m 644 -p Project/GNU/Server/MediaConch.rc %{buildroot}%{_sysconfdir}/%{name}/MediaConch.rc
+
+%check
+appstream-util validate-relax --nonet %{buildroot}/%{_datadir}/appdata/*.appdata.xml
+
+%post gui
+/bin/touch --no-create %{_datadir}/icons/hicolor &>/dev/null || :
+
+%postun gui
+if [ $1 -eq 0 ] ; then
+ /bin/touch --no-create %{_datadir}/icons/hicolor &>/dev/null
+ /usr/bin/gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || :
+fi
+
+%posttrans gui
+/usr/bin/gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || :
+
+%post server
+%systemd_post mediaconchd.service
+
+%preun server
+%systemd_preun mediaconchd.service
+
+%postun server
+%systemd_postun_with_restart mediaconchd.service
+
+%files
+%doc Release/ReadMe_CLI_Linux.txt History_CLI.txt
+%license License.html License.GPLv3.html License.MPLv2.html
+%{_bindir}/mediaconch
+
+%files server
+%doc Documentation/Daemon.md Documentation/Config.md
+%config(noreplace) %{_sysconfdir}/%{name}
+%{_bindir}/mediaconchd
+%{_unitdir}/mediaconchd.service
+
+
+%files gui
+%doc Release/ReadMe_GUI_Linux.txt History_GUI.txt
+%license License.html License.GPLv3.html License.MPLv2.html
+%{_bindir}/mediaconch-gui
+%{_datadir}/applications/*.desktop
+%{_datadir}/pixmaps/*.png
+%{_datadir}/icons/hicolor/256x256/apps/*.png
+%{_datadir}/appdata/mediaconch-gui.appdata.xml
+
+
+%changelog
+* Thu Jul 20 2017 Vasiliy N. Glazov <vascom2(a)gmail.com> - 17.06-3
+- AC_PROG_LIBTOOL -> LT_INIT
+
+* Wed Jul 19 2017 Vasiliy N. Glazov <vascom2(a)gmail.com> - 17.06-2
+- Clean spec
+
+* Fri Jul 14 2017 Vasiliy N. Glazov <vascom2(a)gmail.com> - 17.06-1
+- Update to 17.06
+
+* Thu Jun 29 2017 Vasiliy N. Glazov <vascom2(a)gmail.com> - 17.05-1
+- Update to 17.05
+
+* Thu Apr 13 2017 Vasiliy N. Glazov <vascom2(a)gmail.com> - 17.03-1
+- Update to 17.03
+
+* Thu Apr 06 2017 Vasiliy N. Glazov <vascom2(a)gmail.com> - 17.02-1
+- Update to 17.02
+
+* Thu Feb 09 2017 Vasiliy N. Glazov <vascom2(a)gmail.com> - 17.01-1
+- Update to 17.01
+
+* Mon Jan 09 2017 Vasiliy N. Glazov <vascom2(a)gmail.com> - 16.12-1
+- Update to 16.12
+
+* Fri Dec 09 2016 Vasiliy N. Glazov <vascom2(a)gmail.com> - 16.11-1
+- Update to 16.11
+
+* Thu Nov 24 2016 Vasiliy N. Glazov <vascom2(a)gmail.com> - 16.10-1
+- Update to 16.10
+
+* Fri Oct 28 2016 Vasiliy N. Glazov <vascom2(a)gmail.com> - 16.09-1
+- Update to 16.09
+
+* Wed Sep 21 2016 Vasiliy N. Glazov <vascom2(a)gmail.com> - 16.08-1
+- Update to 16.08
+
+* Mon Aug 01 2016 Vasiliy N. Glazov <vascom2(a)gmail.com> - 16.07-1
+- Update to 16.07
+
+* Wed Jul 06 2016 Vasiliy N. Glazov <vascom2(a)gmail.com> - 16.06-1
+- Update to 16.06
+
+* Wed Jun 01 2016 Vasiliy N. Glazov <vascom2(a)gmail.com> - 16.05-1
+- Update to 16.05
+
+* Thu May 05 2016 Vasiliy N. Glazov <vascom2(a)gmail.com> - 16.04-1
+- Update to 16.04
+
+* Tue Apr 26 2016 Vasiliy N. Glazov <vascom2(a)gmail.com> - 16.03-3
+- Add validate appdata XML
+
+* Tue Apr 26 2016 Vasiliy N. Glazov <vascom2(a)gmail.com> - 16.03-2
+- Add appdata XML
+- Switch BRs to use pkgconfig
+- Add systemd unit for mediaconchd
+
+* Tue Apr 12 2016 Vasiliy N. Glazov <vascom2(a)gmail.com> - 16.03-1
+- Update to 16.03
+
+* Wed Mar 02 2016 Vasiliy N. Glazov <vascom2(a)gmail.com> - 16.02-1
+- Update to 16.02
+- add %%license macro
+
+* Wed Feb 10 2016 Vasiliy N. Glazov <vascom2(a)gmail.com> 16.01-1
+- Initial release
diff --git a/sources b/sources
index e69de29..c9d5c03 100644
--- a/sources
+++ b/sources
@@ -0,0 +1 @@
+SHA512 (mediaconch_17.06.tar.xz) = df3aa715290621078e52b1f311df096ab1928aeed5e66d38a8742b88d8f4a1a27716a9d36c175babd5322a9930968b3495d958a0db7deec68d6d2083759f4aab
6 years, 8 months
Architecture specific change in rpms/mediaconch.git
by githook-noreply@fedoraproject.org
The package rpms/mediaconch.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/mediaconch.git/commit/?id=f82b57a....
Change:
+ExclusiveArch: %{qt5_qtwebengine_arches}
Thanks.
Full change:
============
commit f82b57a8840d1a17b5cfdb245e5c0133f3a8db04
Author: Vascom <vascom2(a)gmail.com>
Date: Fri Jul 21 09:31:31 2017 +0300
Exclusive arches for qt5_qtwebengine_arches.
diff --git a/mediaconch.spec b/mediaconch.spec
index 9b7411f..8db469e 100644
--- a/mediaconch.spec
+++ b/mediaconch.spec
@@ -29,6 +29,8 @@ BuildRequires: pkgconfig(jansson)
BuildRequires: systemd
BuildRequires: libappstream-glib
+ExclusiveArch: %{qt5_qtwebengine_arches}
+
%description
MediaConch is an implementation checker, policy checker, reporter,
commit d44e29730343f256b292dc5f1868846c2cd34241
Author: Vascom <vascom2(a)gmail.com>
Date: Fri Jul 21 09:22:16 2017 +0300
Initial commit.
diff --git a/.gitignore b/.gitignore
index e69de29..0e5d764 100644
--- a/.gitignore
+++ b/.gitignore
@@ -0,0 +1 @@
+/mediaconch_17.06.tar.xz
diff --git a/mediaconch.spec b/mediaconch.spec
new file mode 100644
index 0000000..9b7411f
--- /dev/null
+++ b/mediaconch.spec
@@ -0,0 +1,256 @@
+%global libmediainfo_version 0.7.94
+%global libzen_version 0.4.35
+
+Name: mediaconch
+Version: 17.06
+Release: 3%{?dist}
+Summary: Most relevant technical and tag data for video and audio files (CLI)
+
+License: GPLv3+ and MPLv2.0
+URL: https://mediaarea.net/MediaConch/
+Source0: https://mediaarea.net/download/source/%{name}/%{version}/%{name}_%{versio...
+
+BuildRequires: gcc-c++
+BuildRequires: pkgconfig(libmediainfo) >= %{libmediainfo_version}
+BuildRequires: pkgconfig(libzen) >= %{libzen_version}
+BuildRequires: pkgconfig(zlib)
+BuildRequires: libtool
+BuildRequires: automake
+BuildRequires: autoconf
+BuildRequires: pkgconfig(libxml-2.0)
+BuildRequires: pkgconfig(libxslt)
+BuildRequires: pkgconfig(libcurl)
+BuildRequires: pkgconfig(sqlite3)
+BuildRequires: pkgconfig(libevent)
+BuildRequires: qt5-qtbase-devel
+BuildRequires: qt5-qtwebengine-devel
+BuildRequires: desktop-file-utils
+BuildRequires: pkgconfig(jansson)
+BuildRequires: systemd
+BuildRequires: libappstream-glib
+
+
+%description
+MediaConch is an implementation checker, policy checker, reporter,
+and fixer that targets preservation-level audiovisual files
+(specifically Matroska, Linear Pulse Code Modulation (LPCM)
+and FF Video Codec 1 (FFV1)).
+
+This project is maintained by MediaArea and funded by PREFORMA.
+
+This package includes the command line interface.
+
+%package gui
+Summary: Supplies technical and tag information about a video or audio file (GUI)
+Requires: hicolor-icon-theme
+
+%description gui
+MediaConch is an implementation checker, policy checker, reporter,
+and fixer that targets preservation-level audiovisual files
+(specifically Matroska, Linear Pulse Code Modulation (LPCM)
+and FF Video Codec 1 (FFV1)).
+
+This project is maintained by MediaArea and funded by PREFORMA.
+
+This package includes the graphical user interface.
+
+%package server
+Summary: Supplies technical and tag information about a video or audio file (Server)
+%{?systemd_requires}
+
+%description server
+MediaConch is an implementation checker, policy checker, reporter,
+and fixer that targets preservation-level audiovisual files
+(specifically Matroska, Linear Pulse Code Modulation (LPCM)
+and FF Video Codec 1 (FFV1)).
+
+This project is maintained by MediaArea and funded by PREFORMA.
+
+This package includes the server.
+
+%prep
+%autosetup -n MediaConch
+rm -rf Source/ThirdParty
+sed -i 's/.$//' *.txt *.html Release/*.txt
+
+sed -i 's/AC_PROG_LIBTOOL/LT_INIT([disable-static])/' Project/GNU/CLI/configure.ac
+sed -i 's/AC_PROG_LIBTOOL/LT_INIT([disable-static])/' Project/GNU/Server/configure.ac
+# sed -i 's/INCLUDES/AM_CPPFLAGS/' Project/GNU/CLI/Makefile.am
+# sed -i 's/INCLUDES/AM_CPPFLAGS/' Project/GNU/Server/Makefile.am
+
+pushd Project/GNU/CLI
+ autoreconf -fiv
+popd
+
+pushd Project/GNU/Server
+ autoreconf -fiv
+popd
+
+
+%build
+# build CLI
+pushd Project/GNU/CLI
+ %configure --enable-static=no
+ %make_build
+popd
+
+# build server
+pushd Project/GNU/Server
+ %configure --enable-static=no
+ %make_build
+popd
+
+# now build GUI
+pushd Project/Qt
+ %{qmake_qt5}
+ %make_build
+popd
+
+
+%install
+pushd Project/GNU/CLI
+ %make_install
+popd
+
+pushd Project/GNU/Server
+ %make_install
+popd
+
+pushd Project/Qt
+ install -dm 755 %{buildroot}%{_bindir}
+ install -m 755 -p mediaconch-gui %{buildroot}%{_bindir}
+popd
+
+# icon
+install -dm 755 %{buildroot}%{_datadir}/icons/hicolor/256x256/apps
+install -m 644 -p Source/Resource/Image/MediaConch.png %{buildroot}%{_datadir}/icons/hicolor/256x256/apps/%{name}.png
+install -dm 755 %{buildroot}%{_datadir}/pixmaps
+install -m 644 -p Source/Resource/Image/MediaConch.png %{buildroot}%{_datadir}/pixmaps/%{name}.png
+
+# menu-entry
+install -dm 755 %{buildroot}%{_datadir}/applications
+install -m 644 -p Project/GNU/GUI/mediaconch-gui.desktop %{buildroot}%{_datadir}/applications
+
+desktop-file-install --dir="%{buildroot}%{_datadir}/applications" -m 644 Project/GNU/GUI/mediaconch-gui.desktop
+
+install -dm 755 %{buildroot}%{_datadir}/appdata/
+install -m 644 -p Project/GNU/GUI/mediaconch-gui.appdata.xml %{buildroot}%{_datadir}/appdata/mediaconch-gui.appdata.xml
+
+install -dm 755 %{buildroot}%{_unitdir}
+install -m 644 -p Project/GNU/Server/mediaconchd.service %{buildroot}%{_unitdir}/mediaconchd.service
+
+install -dm 755 %{buildroot}%{_sysconfdir}/%{name}
+install -m 644 -p Project/GNU/Server/MediaConch.rc %{buildroot}%{_sysconfdir}/%{name}/MediaConch.rc
+
+%check
+appstream-util validate-relax --nonet %{buildroot}/%{_datadir}/appdata/*.appdata.xml
+
+%post gui
+/bin/touch --no-create %{_datadir}/icons/hicolor &>/dev/null || :
+
+%postun gui
+if [ $1 -eq 0 ] ; then
+ /bin/touch --no-create %{_datadir}/icons/hicolor &>/dev/null
+ /usr/bin/gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || :
+fi
+
+%posttrans gui
+/usr/bin/gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || :
+
+%post server
+%systemd_post mediaconchd.service
+
+%preun server
+%systemd_preun mediaconchd.service
+
+%postun server
+%systemd_postun_with_restart mediaconchd.service
+
+%files
+%doc Release/ReadMe_CLI_Linux.txt History_CLI.txt
+%license License.html License.GPLv3.html License.MPLv2.html
+%{_bindir}/mediaconch
+
+%files server
+%doc Documentation/Daemon.md Documentation/Config.md
+%config(noreplace) %{_sysconfdir}/%{name}
+%{_bindir}/mediaconchd
+%{_unitdir}/mediaconchd.service
+
+
+%files gui
+%doc Release/ReadMe_GUI_Linux.txt History_GUI.txt
+%license License.html License.GPLv3.html License.MPLv2.html
+%{_bindir}/mediaconch-gui
+%{_datadir}/applications/*.desktop
+%{_datadir}/pixmaps/*.png
+%{_datadir}/icons/hicolor/256x256/apps/*.png
+%{_datadir}/appdata/mediaconch-gui.appdata.xml
+
+
+%changelog
+* Thu Jul 20 2017 Vasiliy N. Glazov <vascom2(a)gmail.com> - 17.06-3
+- AC_PROG_LIBTOOL -> LT_INIT
+
+* Wed Jul 19 2017 Vasiliy N. Glazov <vascom2(a)gmail.com> - 17.06-2
+- Clean spec
+
+* Fri Jul 14 2017 Vasiliy N. Glazov <vascom2(a)gmail.com> - 17.06-1
+- Update to 17.06
+
+* Thu Jun 29 2017 Vasiliy N. Glazov <vascom2(a)gmail.com> - 17.05-1
+- Update to 17.05
+
+* Thu Apr 13 2017 Vasiliy N. Glazov <vascom2(a)gmail.com> - 17.03-1
+- Update to 17.03
+
+* Thu Apr 06 2017 Vasiliy N. Glazov <vascom2(a)gmail.com> - 17.02-1
+- Update to 17.02
+
+* Thu Feb 09 2017 Vasiliy N. Glazov <vascom2(a)gmail.com> - 17.01-1
+- Update to 17.01
+
+* Mon Jan 09 2017 Vasiliy N. Glazov <vascom2(a)gmail.com> - 16.12-1
+- Update to 16.12
+
+* Fri Dec 09 2016 Vasiliy N. Glazov <vascom2(a)gmail.com> - 16.11-1
+- Update to 16.11
+
+* Thu Nov 24 2016 Vasiliy N. Glazov <vascom2(a)gmail.com> - 16.10-1
+- Update to 16.10
+
+* Fri Oct 28 2016 Vasiliy N. Glazov <vascom2(a)gmail.com> - 16.09-1
+- Update to 16.09
+
+* Wed Sep 21 2016 Vasiliy N. Glazov <vascom2(a)gmail.com> - 16.08-1
+- Update to 16.08
+
+* Mon Aug 01 2016 Vasiliy N. Glazov <vascom2(a)gmail.com> - 16.07-1
+- Update to 16.07
+
+* Wed Jul 06 2016 Vasiliy N. Glazov <vascom2(a)gmail.com> - 16.06-1
+- Update to 16.06
+
+* Wed Jun 01 2016 Vasiliy N. Glazov <vascom2(a)gmail.com> - 16.05-1
+- Update to 16.05
+
+* Thu May 05 2016 Vasiliy N. Glazov <vascom2(a)gmail.com> - 16.04-1
+- Update to 16.04
+
+* Tue Apr 26 2016 Vasiliy N. Glazov <vascom2(a)gmail.com> - 16.03-3
+- Add validate appdata XML
+
+* Tue Apr 26 2016 Vasiliy N. Glazov <vascom2(a)gmail.com> - 16.03-2
+- Add appdata XML
+- Switch BRs to use pkgconfig
+- Add systemd unit for mediaconchd
+
+* Tue Apr 12 2016 Vasiliy N. Glazov <vascom2(a)gmail.com> - 16.03-1
+- Update to 16.03
+
+* Wed Mar 02 2016 Vasiliy N. Glazov <vascom2(a)gmail.com> - 16.02-1
+- Update to 16.02
+- add %%license macro
+
+* Wed Feb 10 2016 Vasiliy N. Glazov <vascom2(a)gmail.com> 16.01-1
+- Initial release
diff --git a/sources b/sources
index e69de29..c9d5c03 100644
--- a/sources
+++ b/sources
@@ -0,0 +1 @@
+SHA512 (mediaconch_17.06.tar.xz) = df3aa715290621078e52b1f311df096ab1928aeed5e66d38a8742b88d8f4a1a27716a9d36c175babd5322a9930968b3495d958a0db7deec68d6d2083759f4aab
6 years, 8 months