Architecture specific change in rpms/rubygem-unf_ext.git
by githook-noreply@fedoraproject.org
The package rpms/rubygem-unf_ext.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/rubygem-unf_ext.git/commit/?id=b7....
Change:
-%ifarch %arm
Thanks.
Full change:
============
commit b7a544a375f67e596f4dd705426b9fbe74185378
Author: Mamoru TASAKA <mtasaka(a)fedoraproject.org>
Date: Wed Apr 24 13:35:50 2019 +0900
0.0.7.6
diff --git a/.gitignore b/.gitignore
index 6254a85..2837c55 100644
--- a/.gitignore
+++ b/.gitignore
@@ -3,3 +3,4 @@
/unf_ext-0.0.7.2.gem
/unf_ext-0.0.7.4.gem
/unf_ext-0.0.7.5.gem
+/unf_ext-0.0.7.6.gem
diff --git a/rubygem-unf_ext.spec b/rubygem-unf_ext.spec
index a061563..0de9919 100644
--- a/rubygem-unf_ext.spec
+++ b/rubygem-unf_ext.spec
@@ -5,8 +5,8 @@
Summary: Unicode Normalization Form support library for CRuby
Name: rubygem-%{gem_name}
-Version: 0.0.7.5
-Release: 4%{?dist}
+Version: 0.0.7.6
+Release: 1%{?dist}
# LICENSE.txt
License: MIT
URL: http://github.com/knu/ruby-unf_ext
@@ -60,24 +60,6 @@ popd
rm -rf tmpunpackdir
%build
-%if 0
-%if 0%{?fedora} >= 24
-# https://github.com/knu/ruby-unf_ext/issues/15
-# F-24(C++14): pass -Wno-narrowing for now on arm due to char
-# being unsigned by default and narrowing initializer issue
-%ifarch %arm
-RBCONFIGFILE=$(ruby -e 'puts $:' | while read dir ; do ff=$dir/rbconfig.rb ; if [ -f $ff ] ; then echo $ff ; break ; fi ; done)
-rm -rf TMPINCDIR
-mkdir TMPINCDIR
-cp -p $RBCONFIGFILE TMPINCDIR
-
-sed -i TMPINCDIR/rbconfig.rb \
- -e 's@\(CONFIG\["C[(XX)]*FLAGS"\][ \t]*=[ \t]*\)".*"@\1"%optflags -Wno-narrowing"@'
-export RUBYLIB=$(pwd)/TMPINCDIR
-%endif
-%endif
-%endif
-
%gem_install
%install
@@ -85,7 +67,6 @@ mkdir -p %{buildroot}%{gem_dir}
cp -a .%{gem_dir}/* \
%{buildroot}%{gem_dir}/
-%if 0%{?fedora} >= 21
mkdir -p %{buildroot}%{gem_extdir_mri}
cp -a ./%{gem_extdir_mri}/* %{buildroot}%{gem_extdir_mri}/
@@ -93,14 +74,6 @@ pushd %{buildroot}
rm -f .%{gem_extdir_mri}/{gem_make.out,mkmf.log}
popd
-%else
-mkdir -p %{buildroot}%{gem_extdir_mri}/lib
-mv \
- %{buildroot}%{gem_libdir}/%{gem_name}.so \
- %{buildroot}%{gem_extdir_mri}/lib/
-
-%endif
-
# Remove the binary extension sources and build leftovers.
rm -rf %{buildroot}%{gem_instdir}/ext
rm -f %{buildroot}%{gem_instdir}/{.document,.gitignore}
@@ -116,12 +89,8 @@ sed -i.orig \
sed -i -e '2i gem "test-unit"' test/helper.rb
ruby \
-%if 0%{?fedora} >= 21
-Ilib:test:.:ext/%{gem_name} \
-%else
- -Ilib:test \
-%endif
-test/test_unf_ext.rb
+ test/test_unf_ext.rb
%files
%dir %{gem_instdir}
@@ -134,13 +103,7 @@ test/test_unf_ext.rb
%{gem_libdir}/%{gem_name}.rb
%{gem_libdir}/%{gem_name}/
-%if 0%{?fedora} >= 21
%{gem_extdir_mri}/
-%else
-%dir %{gem_extdir_mri}
-%dir %{gem_extdir_mri}/lib
-%{gem_extdir_mri}/lib/%{gem_name}.so
-%endif
%exclude %{gem_cache}
%{gem_spec}
@@ -150,6 +113,9 @@ test/test_unf_ext.rb
%exclude %{gem_instdir}/test/
%changelog
+* Wed Apr 24 2019 Mamoru TASAKA <mtasaka(a)fedoraproject.org> - 0.0.7.6-1
+- 0.0.7.6
+
* Sat Feb 02 2019 Fedora Release Engineering <releng(a)fedoraproject.org> - 0.0.7.5-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild
diff --git a/sources b/sources
index 1687760..d1a588c 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-SHA512 (unf_ext-0.0.7.5.gem) = 5d60740172034253fec9659bec49e60f639e93d8f147582e26a012712ec2e5fca30674efc52695def0c3cd145c5ddd93a56a6d0f854ab04e7fc81544e6aede16
+SHA512 (unf_ext-0.0.7.6.gem) = c6b6bc797015875b0a3422dc1e9656eae6c42d2263fd6e73ba41a1789ac1ffe927f81d5d9874973fd8d9bd9486494efa725b081e553954121588818d454db7f2
5 years, 1 month
[Report] Packages Restricting Arches
by root
New package excluding arches (1)
============================
- mozilla-iot-gateway
ExclusiveArch: %{nodejs_arches} noarch
List of packages currently excluding arches (2707)
===========================================
- 0ad
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64
- 90-Second-Portraits
ExclusiveArch: %{arm} %{ix86} x86_64 %{mips} aarch64 ppc64
- GoldenCheetah
ExclusiveArch: %{qt5_qtwebengine_arches}
- GtkAda
ExclusiveArch: %{GPRbuild_arches}
- GtkAda3
ExclusiveArch: %{GPRbuild_arches}
- PragmARC
ExclusiveArch: %{GPRbuild_arches}
- R-V8
ExclusiveArch: %{nodejs_arches}
- RdRand
ExclusiveArch: %{ix86} x86_64
- SLOF
ExclusiveArch: ppc64le
- YafaRay
ExclusiveArch: %{ix86} x86_64
- aboot
ExclusiveArch: alpha
- acpid
ExclusiveArch: ia64 x86_64 %{ix86} %{arm} aarch64
- ahven
ExclusiveArch: %{GPRbuild_arches}
- alleyoop
ExclusiveArch: %{ix86} x86_64 ppc ppc64 ppc64le s390x %{arm} aarch64
- american-fuzzy-lop
ExclusiveArch: %{ix86} x86_64
- anet
ExclusiveArch: %{GPRbuild_arches}
- apmd
ExclusiveArch: %{ix86}
- appstream-generator
ExclusiveArch: x86_64 %{ix86} %{arm}
- arduino
ExclusiveArch: %{go_arches}
- arduino-builder
ExclusiveArch: %{go_arches}
- arm-trusted-firmware
ExclusiveArch: aarch64
- aunit
ExclusiveArch: %GPRbuild_arches
- avgtime
ExclusiveArch: %{ldc_arches}
- aws
ExclusiveArch: %GPRbuild_arches
- banshee
ExclusiveArch: %{mono_arches}
- banshee-community-extensions
ExclusiveArch: %ix86 x86_64 ppc ppc64 ia64 %{arm} sparcv9 alpha s390x
- bareftp
ExclusiveArch: %{mono_arches}
- bcal
ExclusiveArch: x86_64 aarch64 ia64 ppc64 ppc64le s390x
- bcc
ExclusiveArch: x86_64 %{power64} aarch64 s390x
- bcm283x-firmware
ExclusiveArch: %{arm} aarch64
- berusky2
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64 %{mips}
- biosdevname
ExclusiveArch: %{ix86} x86_64
- bless
ExclusiveArch: %mono_arches
- boo
ExclusiveArch: %{mono_arches}
- bpftrace
ExclusiveArch: x86_64 %{power64} aarch64 s390x
- buildah
ExclusiveArch: x86_64 %{arm} aarch64 ppc64le s390x
- bwa
ExclusiveArch: x86_64
- caddy
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm} aarch64 ppc64le s390x %{mips}}
- cadvisor
ExclusiveArch: %{ix86} x86_64 aarch64 ppc64le
- calamares
ExclusiveArch: %{ix86} x86_64
- carto
ExclusiveArch: %{nodejs_arches} noarch
- ccdciel
ExclusiveArch: %{fpc_arches}
- cdcollect
ExclusiveArch: %{mono_arches}
- chromium
ExclusiveArch: x86_64 i686
ExclusiveArch: x86_64 i686 aarch64
- cjdns
ExclusiveArch: %{nodejs_arches}
- cmospwd
ExclusiveArch: %{ix86} x86_64
- cmrt
ExclusiveArch: %{ix86} x86_64 ia64
- coffee-script
ExclusiveArch: %{nodejs_arches} noarch
- colorful
ExclusiveArch: %{fpc_arches}
- compat-gcc-296
ExclusiveArch: %{ix86} ia64 ppc
- consul
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- containerd
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm} aarch64 ppc64le s390x %{mips}}
- containers
ExclusiveArch: %{ldc_arches}
- cpuid
ExclusiveArch: %{ix86} x86_64
- cqrlog
ExclusiveArch: %{fpc_arches}
- crash
ExclusiveArch: %{ix86} ia64 x86_64 ppc ppc64 s390 s390x %{arm} aarch64 ppc64le
- cri-tools
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- criu
ExclusiveArch: x86_64 %{arm} ppc64le aarch64 s390x
- cryptlib
ExclusiveArch: x86_64 %{ix86} aarch64 ppc64 ppc64le
- cryptobone
ExclusiveArch: x86_64 %{ix86} ppc64 ppc64le aarch64
- daq
ExclusiveArch: x86_64 aarch64
- darktable
ExclusiveArch: x86_64 aarch64 ppc64le
- dbus-sharp
ExclusiveArch: %mono_arches
- dbus-sharp-glib
ExclusiveArch: %mono_arches
- dbxtool
ExclusiveArch: i386 x86_64 aarch64
- deepin-clone
ExclusiveArch: x86_64 %{ix86} aarch64
- deepin-daemon
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- deepin-dbus-generator
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- deepin-gir-generator
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- derelict
ExclusiveArch: %{ldc_arches}
- direnv
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- discord-irc
ExclusiveArch: %{nodejs_arches} noarch
- 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-anaconda-addon
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64 ppc64le s390x %{mips}
- docker-distribution
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- dolphin-emu
ExclusiveArch: x86_64 armv7l aarch64
- douceur
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- dpdk
ExclusiveArch: x86_64 i686 aarch64 ppc64le
- dssi-vst
ExclusiveArch: %{ix86} x86_64
- dsymbol
ExclusiveArch: %{ldc_arches}
- dustmite
ExclusiveArch: %{ldc_arches}
- dyninst
ExclusiveArch: %{ix86} x86_64 ppc64le
- e3
ExclusiveArch: %{ix86} x86_64
- edac-utils
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64 %{power64}
- edb
ExclusiveArch: %{ix86} x86_64
- edk2
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64
ExclusiveArch: x86_64 aarch64
- efibootmgr
ExclusiveArch: %{efi}
- efivar
ExclusiveArch: %{efi}
- elasticdump
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
ExclusiveArch: %{nodejs_arches} noarch
- elk
ExclusiveArch: x86_64 %{ix86}
ExclusiveArch: x86_64 %{ix86} aarch64 %{arm} %{power64}
- embree
ExclusiveArch: x86_64
- embree2
ExclusiveArch: x86_64
- envytools
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64
- exciting
ExclusiveArch: x86_64 %{ix86}
ExclusiveArch: x86_64 %{ix86} aarch64 %{power64}
ExclusiveArch: x86_64 %{ix86} aarch64 %{arm} %{power64}
- exercism
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- 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: %{ix86} x86_64
- flannel
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64 ppc64le s390x
- florist
ExclusiveArch: %{GPRbuild_arches}
- fluxcapacitor
ExclusiveArch: %{ix86} x86_64 %{arm}
- fpc
ExclusiveArch: %{arm} %{ix86} x86_64 ppc ppc64
- freshmaker
ExclusiveArch: %{ix86} x86_64
- frysk
ExclusiveArch: %{ix86} x86_64 ppc64
- fst
ExclusiveArch: i686
- fwts
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64 s390x %{power64}
- fwupdate
ExclusiveArch: %{efi}
- ga
ExclusiveArch: %{ix86} x86_64
- gbrainy
ExclusiveArch: %mono_arches
- gdata-sharp
ExclusiveArch: %mono_arches
- gdb-exploitable
ExclusiveArch: x86_64 i386
ExclusiveArch: x86_64 noarch
- gela-asis
ExclusiveArch: %GPRbuild_arches
- geoipupdate
ExclusiveArch: %{go_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
- glibd
ExclusiveArch: %{ldc_arches}
- glusterd2
ExclusiveArch: %{go_arches}
- gmqcc
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64
- gnatcoll
ExclusiveArch: %{GPRbuild_arches}
- gnatcoll-bindings
ExclusiveArch: %{GPRbuild_arches}
- gnome-boxes
ExclusiveArch: x86_64
- gnome-desktop-sharp
ExclusiveArch: %mono_arches
- gnome-do
ExclusiveArch: %mono_arches
- gnome-guitar
ExclusiveArch: %{mono_arches}
- gnome-keyring-sharp
ExclusiveArch: %mono_arches
- gnome-rdp
ExclusiveArch: %{mono_arches}
- gnome-sharp
ExclusiveArch: %mono_arches
- gnome-subtitles
ExclusiveArch: %mono_arches
- gnu-efi
ExclusiveArch: %{efi}
- go-bindata
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- go-compilers
ExclusiveArch: %{go_arches}
- go-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}}
- godotenv
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{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-deepin-dbus-factory
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-BurntSushi-toml-test
ExclusiveArch: %{go_arches}
- golang-github-PuerkitoBio-goquery
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{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-SermoDigital-jose
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-Shopify-sarama
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-andybalholm-cascadia
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-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-client9-gospell
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-codegangsta-negroni
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-danwakefield-fnmatch
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-dchest-cssmin
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-dchest-siphash
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-dlclark-regexp2
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-docker-libkv
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-duosecurity-duo_api_golang
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-flynn-go-shlex
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-fortytw2-leaktest
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-fullsailor-pkcs7
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-errors-errors
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-gobuffalo-envy
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-css
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-gosexy-gettext
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-hailocab-go-hostpool
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-hashicorp-go-hclog
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-hashicorp-go-rootcerts
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-howeyc-fsnotify
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-inconshreveable-go-vhost
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-influxdb-influxdb
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-jdkato-prose
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-jdkato-syllables
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-jefferai-jsonx
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-justinas-alice
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-klauspost-cpuid
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-kyokomi-emoji
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-lpabon-godbc
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-mgutz-ansi
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-mgutz-logxi
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-michaelklishin-rabbit-hole
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-miekg-mmark
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{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 aarch64 %{arm}}
- golang-github-mitchellh-go-testing-interface
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-montanaflynn-stats
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-muesli-smartcrop
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{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-neurosnap-sentences
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{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-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-paulrosania-go-charset
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-prometheus-prometheus
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{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-rasky-go-xdr
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-remeh-sizedwaitgroup
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-samuel-go-zookeeper
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- golang-github-shiena-ansicolor
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-shogo82148-go-shuffle
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-skynetservices-skydns
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{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-spacejam-loghisto
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-spacemonkeygo-openssl
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm} ppc64le s390x}
- golang-github-spaolacci-murmur3
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-spf13-fsync
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-sstarcher-go-okta
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-streadway-amqp
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-stretchr-objx
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-tent-http-link-go
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- golang-github-tonnerre-golang-pretty
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- golang-github-vaughan0-go-ini
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
ExclusiveArch: %{go_arches}
ExclusiveArch: %{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-vjeantet-asn1-ber
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{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-xrash-smetrics
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-googlecode-gcfg
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{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-log4go
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- golang-googlecode-sqlite
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- golang-googlecode-uuid
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-torproject-pluggable-transports-goptlib
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
- hcc
ExclusiveArch: x86_64 aarch64
- hedgewars
ExclusiveArch: %{fpc_arches}
- heketi
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- hsakmt
ExclusiveArch: x86_64 aarch64
- 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
- ignition
ExclusiveArch: x86_64 ppc64le aarch64 s390x
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- ikarus
ExclusiveArch: %{ix86}
- imvirt
ExclusiveArch: %{ix86} x86_64 ia64
- indistarter
ExclusiveArch: %{fpc_arches}
- infinipath-psm
ExclusiveArch: x86_64
- insect
ExclusiveArch: %{nodejs_arches} noarch
- intel-cmt-cat
ExclusiveArch: x86_64 i686 i586
ExclusiveArch: x86_64 i686 i586
- intel-gmmlib
ExclusiveArch: x86_64 i686
- ioport
ExclusiveArch: %{ix86} x86_64
- ipmctl
ExclusiveArch: x86_64
- ipw2100-firmware
ExclusiveArch: noarch i386 x86_64
- ipw2200-firmware
ExclusiveArch: noarch i386 x86_64
- ispc
ExclusiveArch: %{arm} %{ix86} x86_64
- iucode-tool
ExclusiveArch: %{ix86} x86_64
- iwyu
ExclusiveArch: %{ix86} x86_64
- jake
ExclusiveArch: %{nodejs_arches} noarch
- jasmine-node
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- java-1.8.0-openjdk-aarch32
ExclusiveArch: %{arm}
- josm
ExclusiveArch: %{ix86} x86_64
- keepass
ExclusiveArch: %{mono_arches}
- kernel
ExclusiveArch: %{all_x86} x86_64 s390x %{arm} aarch64 ppc64le
- kicad
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64
- knot-resolver
ExclusiveArch: %{ix86} x86_64
ExclusiveArch: %{arm} aarch64 %{ix86} x86_64
- kompose
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64 s390x
- kosmtik
ExclusiveArch: %{nodejs_arches} noarch
- kubernetes
ExclusiveArch: x86_64 aarch64 ppc64le s390x %{arm}
- 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}
- libdparse
ExclusiveArch: %{ldc_arches}
- libflatarray
ExclusiveArch: %{ix86} x86_64
- libica
ExclusiveArch: s390 s390x
- libipt
ExclusiveArch: %{ix86} x86_64
ExclusiveArch: %{ix86} x86_64
- libmfx
ExclusiveArch: %{ix86} x86_64
- libocxl
ExclusiveArch: ppc64le
- libpmemobj-cpp
ExclusiveArch: x86_64
- libpsm2
ExclusiveArch: x86_64
- libquentier
ExclusiveArch: %{qt5_qtwebengine_arches}
- librtas
ExclusiveArch: %{power64}
- libseccomp
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64 mipsel mips64el ppc64 ppc64le s390 s390x
- libservicelog
ExclusiveArch: ppc %{power64}
- libsmbios
ExclusiveArch: x86_64 %{ix86}
- libunwind
ExclusiveArch: %{arm} aarch64 hppa ia64 mips ppc %{power64} %{ix86} x86_64
- libva-intel-hybrid-driver
ExclusiveArch: %{ix86} x86_64 ia64
- libvmi
ExclusiveArch: x86_64
- libvpd
ExclusiveArch: %{power64}
- libxsmm
ExclusiveArch: x86_64
- libzfcphbaapi
ExclusiveArch: s390 s390x
- lodash
ExclusiveArch: %{nodejs_arches} noarch
- log4net
ExclusiveArch: %mono_arches
- lrmi
ExclusiveArch: %{ix86}
- lsvpd
ExclusiveArch: %{power64}
- luajit
ExclusiveArch: %{arm} %{ix86} x86_64 %{mips} aarch64
- luxcorerender
ExclusiveArch: x86_64
- mactel-boot
ExclusiveArch: x86_64
- manifest-tool
ExclusiveArch: x86_64 aarch64 ppc64le s390x
- mantle
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- marked
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- matreshka
ExclusiveArch: %GPRbuild_arches
- maven-eclipse-plugin
ExclusiveArch: %{ix86} x86_64
- maxima
ExclusiveArch: %{arm} %{ix86} x86_64 aarch64 ppc sparcv9
ExclusiveArch: %{ix86} x86_64 ppc sparcv9
- mcelog
ExclusiveArch: i686 x86_64
- mediaconch
ExclusiveArch: %{qt5_qtwebengine_arches}
- mellowplayer
ExclusiveArch: %{qt5_qtwebengine_arches}
- memkind
ExclusiveArch: x86_64
- memtest86+
ExclusiveArch: %{ix86} x86_64
- microcode_ctl
ExclusiveArch: %{ix86} x86_64
- micropython
ExclusiveArch: %{arm} %{ix86} x86_64
- mine_detector
ExclusiveArch: %{GPRbuild_arches}
- minetest
ExclusiveArch: %{ix86} x86_64
ExclusiveArch: %{arm} %{ix86} x86_64 %{mips} aarch64
- mingw-wine-gecko
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64
- mkbootdisk
ExclusiveArch: %{ix86} sparc sparc64 x86_64
- mnemosyne
ExclusiveArch: noarch %{qt5_qtwebengine_arches}
- mocha
ExclusiveArch: %{nodejs_arches} noarch
- mod_mono
ExclusiveArch: %mono_arches
- module-build-service
ExclusiveArch: %{ix86} x86_64 noarch
- mokutil
ExclusiveArch: %{ix86} x86_64 aarch64
- mono
ExclusiveArch: %mono_arches
- mono-addins
ExclusiveArch: %mono_arches
- mono-basic
ExclusiveArch: %{mono_arches}
- mono-bouncycastle
ExclusiveArch: %mono_arches
- mono-cecil
ExclusiveArch: %mono_arches
- mono-cecil-flowanalysis
ExclusiveArch: %mono_arches
- mono-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
- mozilla-iot-gateway
ExclusiveArch: %{nodejs_arches} noarch
- mozilla-iot-gateway-addon-node
ExclusiveArch: %{nodejs_arches} noarch
- mrrescue
ExclusiveArch: %{arm} %{ix86} x86_64 %{mips} aarch64 ppc64
- msgpack-d
ExclusiveArch: %{ldc_arches}
- msr-tools
ExclusiveArch: %{ix86} x86_64
- mustache-d
ExclusiveArch: %{ldc_arches}
- mysql-connector-net
ExclusiveArch: %{mono_arches}
- nacl-arm-binutils
ExclusiveArch: x86_64
- nacl-binutils
ExclusiveArch: x86_64
- nacl-gcc
ExclusiveArch: x86_64
- nacl-newlib
ExclusiveArch: x86_64
- nant
ExclusiveArch: %mono_arches
- nbc
ExclusiveArch: %{fpc_arches}
- nbdkit
ExclusiveArch: x86_64
- ndesk-dbus
ExclusiveArch: %{mono_arches}
- ndesk-dbus-glib
ExclusiveArch: %{mono_arches}
- newtonsoft-json
ExclusiveArch: %{mono_arches}
- nim
ExclusiveArch: %{nim_arches}
- node-gyp
ExclusiveArch: %{nodejs_arches} noarch
- nodejs
ExclusiveArch: %{nodejs_arches}
- nodejs-Base64
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-abbrev
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-acorn
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-acorn-dynamic-import
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-acorn-jsx
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-acorn-object-spread
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-add-stream
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-after
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-agentkeepalive
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ain2
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-align-text
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-alter
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-ansi
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ansi-bgblack
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ansi-bgblue
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ansi-bgcyan
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ansi-bggreen
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ansi-bgmagenta
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ansi-bgred
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ansi-bgwhite
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ansi-bgyellow
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ansi-black
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ansi-blue
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ansi-bold
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ansi-colors
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ansi-cyan
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-ansi-dim
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ansi-escapes
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ansi-font
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ansi-gray
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ansi-green
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-ansi-grey
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ansi-hidden
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ansi-inverse
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ansi-italic
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ansi-magenta
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-ansi-red
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ansi-regex
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ansi-reset
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ansi-strikethrough
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ansi-styles
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-ansi-underline
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ansi-white
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ansi-wrap
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-ansi-yellow
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-ansicolors
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-ansidiff
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-ansistyles
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-any-path
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-any-promise
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-ap
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-append-field
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-append-transform
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-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-buffer-from-string
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-array-differ
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-array-events
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-array-filter
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-array-find
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-array-find-index
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-array-flatten
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-array-foreach
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-array-ify
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-array-index
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-array-map
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-array-reduce
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-array-union
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-array-uniq
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-array-unique
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-arraybuffer-dot-slice
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-arraybuffer-equal
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-arrify
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-asap
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-ascii-tree
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ascli
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-asn1
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-assert-plus
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-assertion-error
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-assume
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-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-arrays
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-async-cache
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-async-each
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-async-limiter
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-async-queue
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-async-some
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-asynckit
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-atob
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-auto-bind
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-autoresolve
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ava-init
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-aws-sign
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-aws-sign2
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-aws4
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-babel-code-frame
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-babel-messages
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-babel-plugin-syntax-async-functions
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-babel-plugin-syntax-async-generators
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-babel-runtime
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-babylon
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-backbone
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-backoff
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-balanced-match
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-base
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-base-option
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-base-plugins
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-base32-encode
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-base64-arraybuffer
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-base64-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-base64id
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-bash-match
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-basic-auth
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-basic-auth-connect
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-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-bcryptjs
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-beeper
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-benchmark
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-better-assert
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-better-than-before
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-bignumber-js
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-bind-obj-methods
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-bindings
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-bit-mask
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-bl
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-blob
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-block-stream
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-bluebird
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-body-parser
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-boolbase
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-boom
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-brace-expansion
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-braces
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-breakable
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-browser-stdout
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-bson
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-buble
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-buf-compare
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-buffer-crc32
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-buffer-equal
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-buffer-writer
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-buffertools
ExclusiveArch: %{nodejs_arches}
- nodejs-bufferutil
ExclusiveArch: %{nodejs_arches}
- nodejs-builtin-modules
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-builtins
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-bundle-dependencies
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-bunker
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-bunyan
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-burrito
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-busboy
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-byline
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-bytes
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-cache-base
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-caching-transform
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-call-delayed
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-call-matcher
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-call-me-maybe
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-call-signature
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-callback-stream
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-caller-callsite
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-caller-path
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-callsite
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-callsites
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-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-carrier
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-caseless
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-center-align
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-chai
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-chai-as-promised
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-chai-cheerio
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-chai-connect-middleware
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-chai-fs
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-chai-json-schema
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-chai-oauth2orize-grant
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-chai-passport-strategy
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-chai-spies-next
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-chainer
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-chalk
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-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-chardet
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-charenc
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-charm
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-check-env
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-check-error
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-cheerio
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-child-process-close
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-chmodr
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-chownr
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-chroma-js
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-chrono
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ci-info
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-circular-json
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-cjson
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-clap
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-class-utils
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-clean-css
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-clean-yaml-object
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-clear-require
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-cli
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-cli-color
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-cli-spinner
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-cli-table
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-cliui
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-clone
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-clone-deep
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-clone-stats
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-closure-compiler
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-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-co-with-promise
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-coa
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-code-point-at
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-codemirror
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-coffee-coverage
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-collection-visit
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-collections
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-color-support
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-colors
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-colour
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-columnify
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-combined-stream
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-commander
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-common-path-prefix
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-commondir
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-commoner
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-commonmark
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-compare-func
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-compare-versions
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-component-emitter
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-component-indexof
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-component-inherit
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-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-console-group
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-consolemd
ExclusiveArch: %{nodejs_arches} 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-conventional-changelog
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-conventional-changelog-angular
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-conventional-changelog-atom
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-conventional-changelog-codemirror
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-conventional-changelog-core
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-conventional-changelog-ember
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-conventional-changelog-eslint
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-conventional-changelog-express
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-conventional-changelog-jquery
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-conventional-changelog-jscs
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-conventional-changelog-jshint
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-conventional-changelog-preset-loader
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-conventional-changelog-writer
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-conventional-commits-filter
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-conventional-commits-parser
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-conventional-recommended-bump
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-convert-hex
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-convert-source-map
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-cookie
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-cookie-jar
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-cookie-parser
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-cookie-session
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-cookie-signature
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-cookiejar
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-cookies
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-copy-descriptor
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-core-assert
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-core-js
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-core-util-is
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-cors
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-couch-login
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-coveralls
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-crc
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-crc32-stream
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-crypt
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-cryptiles
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-csrf
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-css
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-css-parse
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-css-select
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-css-stringify
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-css-tree
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-css-what
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-csscomb-core
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-csslint
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-csso
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-cssom
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-csurf
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-csv
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-csv-generate
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-csv-parse
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-csv-spectrum
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-csv-stringify
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-ctype
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-currently-unhandled
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-cycle
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-cyclist
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-d
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-dargs
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-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-death
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-debug
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-debug-fabulous
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-debug-log
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-debuglog
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-decamelize
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-decamelize-keys
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-decimal-js
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-dedent
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-deep-eql
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-deep-equal
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-deep-extend
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-deep-is
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-deeper
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-default-require-extensions
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-default-resolution
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-defaults
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-defence
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-defence-cli
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-deferred
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-define-properties
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-define-property
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-delete
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-dep-graph
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-depd
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-deprecated
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-destroy
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-detect-file
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-detect-indent
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-detect-newline
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-detect-node
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-detective
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-dezalgo
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-dicer
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-diff
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-difflet
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-difflib
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-dirty-chai
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-discord-js
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-docopt
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-doctrine
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-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-dot-prop
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-duplexer
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-duplexer2
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-duplexify
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-duration
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-each
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-each-async
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ebnf-parser
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-echomd
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-editor
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ee-first
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ejs
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-emojione
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-empty-dir
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-encodeurl
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-end-of-stream
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-engine-dot-io
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-engine-dot-io-client
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-engine-dot-io-parser
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-entities
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-error-ex
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-error-symbol
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-errorhandler
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-promisify
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-escallmatch
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-escape-html
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-escape-regexp-component
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-escape-string-regexp
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-escodegen
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-escope
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-espower
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-espower-location-detector
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-esprima
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-esprima-fb
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-esprima-harmony-jscs
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-espurify
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-esrecurse
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-estraverse
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-estraverse-fb
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-estree-walker
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-esutils
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-etag
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-event-emitter
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-eventemitter2
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-events
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-events-to-array
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-everything-dot-js
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-execa
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-range
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-expand-tilde
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-expect
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-expect-dot-js
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-express
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-express-session
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-extend
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-extend-shallow
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-extended-emitter
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-extglob
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-extsprintf
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-eyes
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-fake
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-fancy-log
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-far
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-fast-levenshtein
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-fastfall
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-faucet
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-faye-websocket
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-fd
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-filelist
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-filename-regex
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-fileset
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-fill-keys
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-fill-range
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-finalhandler
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-find-cache-dir
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-find-up
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-findup-sync
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-first-chunk-stream
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-flagged-respawn
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-flat-cache
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-flot
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-flush-write-stream
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-fmix
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-fn-dot-name
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-fn-name
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-follow-redirects
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-for-each
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-for-in
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-for-own
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-foreach
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-foreground-child
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-forever-agent
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-form-data
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-formatio
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-formidable
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-forwarded
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-fragment-cache
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-freetree
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-fresh
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-from
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-fs-dot-notify
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-fs-exists-cached
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-fs-exists-sync
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-fs-ext
ExclusiveArch: %{nodejs_arches}
- nodejs-fs-extra
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-fs-promise
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-fs-temp
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-fs-vacuum
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-fs-write-stream-atomic
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-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-function-loop
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-gauge
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-gaze
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-gdal
ExclusiveArch: %{nodejs_arches}
- nodejs-generate-function
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-generate-object-property
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-generic-pool
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-get-pkg-repo
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-get-port
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-get-stdin
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-get-uri
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-get-value
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-getobject
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-git-dummy-commit
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-git-raw-commits
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-git-remote-origin-url
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-git-semver-tags
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-git-tails
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-gitconfiglocal
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-github-url-from-git
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-github-url-from-username-repo
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-glob
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-glob-base
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-glob-expand
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-glob-parent
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-glob-to-regexp
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-global-modules
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-global-prefix
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-globals
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-globby
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-globule
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-glogg
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-gnode
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-gonzales-pe
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-graceful-fs
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-graceful-readlink
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-grip
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-growl
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-grunt
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-grunt-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-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-svgmin
ExclusiveArch: %{nodejs_arches} 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-gulp-mocha
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-gulp-ng-classify
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-gulp-util
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} 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-handle-thing
ExclusiveArch: %{nodejs_arches} 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-binary
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-has-binary2
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-has-color
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-has-cors
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-has-flag
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-has-glob
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-has-gulplog
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-has-symbols
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-has-unicode
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-has-value
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-has-values
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-has-yarn
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-hash_file
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-hawk
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-heap
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-hex-to-array-buffer
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-highlight-js
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-historic-readline
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-hock
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-hoek
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-homedir-polyfill
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-hook-std
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-hooker
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-hosted-git-info
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-hsluv
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-html-minifier
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-htmlparser2
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-http-deceiver
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-http-errors
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-http-signature
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-http2
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-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-image-size
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-immutable
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-import-local
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-imul
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-imurmurhash
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-indent-string
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-indexof
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-inflight
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-info-symbol
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-inherit
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-inherits
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-inherits1
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ini
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-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-intercept-require
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-interpret
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-invert-kv
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ip
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ipaddr-dot-js
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-irc-colors
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-irc-formatting
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-irc-upd
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-irregular-plurals
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-is
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-absolute
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-is-accessor-descriptor
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-arrayish
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-arrow-function
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-is-boolean-object
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-is-buffer
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-is-builtin-module
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-callable
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-data-descriptor
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-date-object
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-descriptor
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-dir
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-is-dotfile
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-is-equal
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-equal-shallow
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-is-error
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-extendable
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-is-extglob
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-is-finite
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-fullwidth-code-point
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-function
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-generator
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-is-generator-fn
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-is-generator-function
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-is-glob
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-is-lower-case
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-module
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-my-json-valid
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-negated-glob
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-node
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-number
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-is-number-object
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-is-obj
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-object
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-observable
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-is-odd
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-path-cwd
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-is-path-in-cwd
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-is-path-inside
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-is-plain-obj
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-plain-object
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-primitive
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-is-promise
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-property
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-regex
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-regexp
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-registered
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-relative
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-is-stream
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-string
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-is-subset
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-symbol
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-text-path
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-typedarray
ExclusiveArch: %{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-valid-instance
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-windows
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-isarray
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-isexe
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-iso8601
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-isobject
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-isodate
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-isstream
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-istanbul
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-istanbul-lib-coverage
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-istanbul-lib-hook
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-istanbul-lib-report
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-istanbul-lib-source-maps
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-istanbul-reports
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-jade
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-jasmine-growl-reporter
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-jasmine-reporters
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-jest-mock
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-jison
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-string-escape
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-js-tokens
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-js-yaml
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-jschardet
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-jscoverage
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-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-json3
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-jsonfile
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-jsonify
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-jsonm
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-jsonparse
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-jsonpointer
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-jsonpointer-dot-js
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-jsonselect
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-jwt-simple
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-keep-alive-agent
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-keygrip
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-keypress
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-kind-of
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-klaw
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-kuler2gpl
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-latest-version
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-lazy-cache
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-lazystream
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-lcid
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-lcov-parse
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-leaflet
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-leaflet-formbuilder
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-leaflet-hash
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-leche
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-left-pad
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-less
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-less-plugin-clean-css
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-levn
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-lex-parser
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-libpq
ExclusiveArch: %{nodejs_arches}
- nodejs-libxmljs
ExclusiveArch: %{nodejs_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- nodejs-line-numbers
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-line-reader
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-linefix
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-linkify-it
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-load-grunt-tasks
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-load-json-file
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-locate-character
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-locate-path
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-lockfile
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-log-driver
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-log-ok
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-log-symbols
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-log-utils
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-lolex
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-long
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-longest
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-loophole
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-loud-rejection
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-lower-case
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-lower-case-first
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-magic-string
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-make-arrow-function
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-make-dir
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-make-error
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-make-generator-function
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-make-node
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-makedir
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-makeerror
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-map-cache
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-map-obj
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-map-visit
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-mapnik
ExclusiveArch: %{nodejs_arches}
- nodejs-mapnik-pool
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-mapnik-vector-tile
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-markdown
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-markdown-it-testgen
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-marked
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-matched
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-max-timeout
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-maxmin
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-mbtiles
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-md5
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-md5-hex
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-md5-o-matic
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-mdn-data
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-mdurl
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-media-typer
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-memoize-path
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-memoizee
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-memwatch-next
ExclusiveArch: %{nodejs_arches}
- nodejs-meow
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-merge-descriptors
ExclusiveArch: %{nodejs_arches} 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-micromatch
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-millstone
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-mime
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-mime-db
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-mime-types
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-mimeparse
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-minimalistic-assert
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-minimatch
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-minimist
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-minimist-options
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-minipass
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-mixin-deep
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-mixin-object
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-mkdirp
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-mkfiletree
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-mock-bin
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-mock-fs
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-mock-git
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-modify-values
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-module-not-found-error
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-moment
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-moment-timezone
ExclusiveArch: %{nodejs_arches} 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-multipipe
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-murmur-32
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-mustache
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-mutate-fs
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-mute-stream
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-mv
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-mysql
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-mz
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-nan
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-nan0
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-nan1
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-nanomatch
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-nanomsg
ExclusiveArch: %{nodejs_arches}
- nodejs-nanoseconds
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ncp
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-needle
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-negative-zero
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-negotiator
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-net-browserify-alt
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-netmask
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-next
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-next-tick
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-ng-classify
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-node-dot-extend
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-node-expat
ExclusiveArch: %{nodejs_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- nodejs-node-int64
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-node-markdown
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-node-static
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-node-stringprep
ExclusiveArch: %{nodejs_arches}
- nodejs-node-uuid
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-nomnom
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-noncharacters
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-nopt
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-nopt-usage
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-noptify
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-normalize-git-url
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-normalize-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-user-validate
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-npmlog
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-nth-check
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-number-is-nan
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-numeral
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-oauth
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-oauth-sign
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-oauth2orize
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-object-assign
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-object-copy
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-object-dot-assign
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-object-dot-entries
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-object-dot-omit
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-object-dot-pick
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-object-inspect
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-object-is
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-object-keys
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-object-visit
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-observable-to-promise
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-obuf
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-okay
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-on-finished
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-on-headers
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-once
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-onetime
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-only-shallow
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-oop
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-opal-runtime
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-open
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-opener
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-opn
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-option-cache
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-option-chain
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-optionator
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-options
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-optjs
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-opts
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-orchestrator
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-ordered-read-streams
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-os-homedir
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-os-locale
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-os-shim
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-os-tmpdir
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-osenv
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-output-file-sync
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-own-or
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-own-or-env
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-p-finally
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-p-limit
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-p-locate
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-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-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-parallel-transform
ExclusiveArch: %{nodejs_arches} 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-ms
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-parse-passwd
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-parsejson
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-parseqs
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-parserlib
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-parseuri
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-parseurl
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-pascal-case
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-pascalcase
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-passport-http-bearer
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-passport-oauth
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-passport-oauth1
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-passport-oauth2
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-passport-oauth2-client-password
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-passport-strategy
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-path-array
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-path-case
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-path-dirname
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-path-exists
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-path-extra
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-path-is-absolute
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-path-is-inside
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-path-key
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-path-parse
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-path-to-regexp
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-path-type
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-path2
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-pathval
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-pause
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-pbkdf2-password
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-pedding
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-pend
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-pff
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-pg
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-pg-connection-string
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-pg-cursor
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-pg-escape
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-pg-int8
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-pg-native
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-pg-pool
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-pg-types
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-pgpass
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-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-portscanner
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-posix-character-classes
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-postgres-array
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-postgres-bytea
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-postgres-date
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-postgres-interval
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-precond
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-prelude-ls
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-preserve
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-pretty-bytes
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-pretty-hrtime
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-pretty-ms
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-pretty-time
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-prism-media
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-private
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-process-nextick-args
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-proclaim
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-progress
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-progress-stream
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-promise
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-promises-aplus-tests
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-prompt
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-promzard
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-propagate
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-propget
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-proto-list
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-proxy
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-proxy-addr
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-proxyquire
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-pruddy-error
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-pseudomap
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-pubcontrol
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-pump
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-pumpify
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-q
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-q-io
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-qs
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-qtdatastream
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-queue-async
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-quick-lru
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-qunit-extras
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-qunitjs
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-rainbowsocks
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-random-bytes
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-random-path
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-randomatic
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-range-parser
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-raw-body
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-re-emitter
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-read
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-read-all-stream
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-read-cmd-shim
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-read-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-json-sync
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-read-package-json
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-read-pkg
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-read-pkg-up
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-readable-stream
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-readdir-enhanced
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-readdir-scoped-modules
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-readdirp
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-realize-package-specifier
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-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-regex-not
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-relateurl
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-remove-trailing-separator
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-repeat-element
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-repeat-string
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-repeating
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-repl
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-replace
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-replace-ext
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-replace-require-self
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-request
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-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-main-filename
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-require-relative
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-require-uncached
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-require-yaml
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-requirejs
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-resolve
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-resolve-cwd
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-resolve-dir
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-resolve-from
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-resolve-pkg
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-resolve-url
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-response-time
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-resumer
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ret
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-retry
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-reusify
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-revalidator
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-rewire
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-rfile
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-rhea
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-right-align
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-rimraf
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-rndm
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-rollup
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-rollup-plugin-buble
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-rollup-plugin-commonjs
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-rollup-plugin-json
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-rollup-plugin-node-resolve
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-rollup-plugin-typescript
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-rollup-pluginutils
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-ronn
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-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-safe-regex
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-safecb
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-samsam
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-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-seedrandom
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-select-hose
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-semver
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-send
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-sentence-case
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-sentiment
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-sequencify
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-serialize-error
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-serve-index
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-serve-static
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-server-destroy
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-set-blocking
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-set-getter
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-set-immediate
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-set-immediate-shim
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-set-value
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-setimmediate
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-setprototypeof
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-sha
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-shallow-clone
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-shebang-command
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-shebang-regex
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-shelljs
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-shelljs-nodecli
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-should
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-should-equal
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-should-format
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-should-http
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-should-type
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-showdown
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-sift
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-sigmund
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-signal-exit
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-simple-assert
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-simple-asyncify
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-simple-fmt
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-simple-is
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-simple-markdown
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-single-line-log
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-sinon
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-sinon-chai
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-sinon-restore
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-slash
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-sliced
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-slide
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-smart-buffer
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-snake-case
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-snapdragon
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-snapdragon-capture
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-snapdragon-capture-set
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-snapdragon-node
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-snapdragon-util
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-snekfetch
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-snockets
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-sntp
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-socket-dot-io-parser
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-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-source-map-resolve
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-source-map-support
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-source-map-url
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-sparkles
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-spawn-sync
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-spawn-wrap
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-spdx-correct
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-spdx-exceptions
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-spdx-license-ids
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-spec
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-spec-js
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-speedometer
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-split
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-split-string
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-split2
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-sprintf
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-sprintf-js
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-sqlite3
ExclusiveArch: %{nodejs_arches}
- nodejs-srs
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ssri
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-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-extend
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-static-favicon
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-statuses
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-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-each
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-stream-equal
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-stream-pair
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-stream-replace
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-stream-shift
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-stream-spigot
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-stream-to-array
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-stream-transform
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-streamsearch
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-bom-string
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-strip-color
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-strip-eof
ExclusiveArch: %{nodejs_arches} 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-strong-log-transformer
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-stylus
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-success-symbol
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-superagent
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-supertest
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-supervisor
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-supports-color
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-suspend
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-svgmin
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-svgo
ExclusiveArch: %{nodejs_arches} 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-out
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-tap-parser
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-tap-spec
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-tape
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-tapes
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-tar
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-tar-pack
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-tar-stream
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-temp
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-temp-dir
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-temp-write
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-tempfile
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-temporary
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-tern
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-exclude
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-testdata-w3c-json-form
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-testutil
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-text-extensions
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-text-table
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-thenify
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-thenify-all
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-thread-sleep
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-through
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-through2
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-through2-filter
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-thunkify
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-tildify
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-tilejson
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-tilelive
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-tilelive-mapnik
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-tiletype
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-time-diff
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-time-stamp
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-timekeeper
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-timers-ext
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-tiny-lr-fork
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-tippex
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-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-tmpl
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-to-absolute-glob
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-to-array
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-to-object-path
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-to-regex
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-to-regex-range
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-touch
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-tough-cookie
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-tracejs
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-transformers
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-traverse
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-treeify
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-tressa
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-trim
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-trim-newlines
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-trim-off-newlines
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-trivial-deferred
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-try-open
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-try-thread-sleep
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-tryor
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-tsame
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-tslib
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-tsscmp
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-tunnel-agent
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-tv4
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-tweetnacl
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-tweetnacl-util
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-type-check
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-type-detect
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-type-is
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-type-name
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-typeahead.js
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-typescript
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-uc-dot-micro
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-uglify-to-browserify
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-uid-number
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-uid-safe
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-uid2
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-ultron
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-umask
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-unc-path-regex
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-underscore
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-underscore-dot-logger
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-unicode-length
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-union-value
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-unique-filename
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-unique-slug
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-unique-stream
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-unique-temp-dir
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-unpipe
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-unset-value
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-upper-case
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-upper-case-first
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-uri-path
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-urix
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-url2
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-use
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-user-home
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-utf8
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-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-util-inspect
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
- nodejs-uuid
ExclusiveArch: %{nodejs_arches} 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-vlq
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-vow
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-vow-fs
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-vow-queue
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-vows
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-walkdir
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-walker
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ware
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-warning-symbol
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-watchit
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-watershed
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-wbuf
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-wcwidth
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-weak-map
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-websocket-driver
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-when
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-whet-dot-extend
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-which
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-win-spawn
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-window-size
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-winston
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-with
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-wolfy87-eventemitter
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-woothee
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-wordwrap
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-wrap-ansi
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-wrap-fn
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-wrappy
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-write
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-write-file-atomic
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-write-json-file
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-write-pkg
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ws
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-xdg-basedir
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-xml2js
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-xmlbuilder
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-xmlhttprequest
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-xmlhttprequest-ssl
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-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-yapool
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-yargs
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-yargs-parser
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-yarn
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-yeast
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-yn
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-zap
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-zeropad
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-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: x86_64 ppc64le
- nunit
ExclusiveArch: %{mono_arches}
- nunit2
ExclusiveArch: %{mono_arches}
- nvml
ExclusiveArch: x86_64
- nwchem
ExclusiveArch: x86_64 %{ix86}
- obfs4
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- oci-kvm-hook
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- oci-register-machine
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- oci-umount
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64 ppc64le s390x %{mips}
- ocitools
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- oidn
ExclusiveArch: x86_64
- olpc-kbdshim
ExclusiveArch: %{ix86} %{arm}
- olpc-netutils
ExclusiveArch: %{ix86} %{arm}
- olpc-powerd
ExclusiveArch: %{ix86} %{arm}
- olpc-utils
ExclusiveArch: %{ix86} %{arm}
- onedrive
ExclusiveArch: %{ldc_arches}
- opal-prd
ExclusiveArch: ppc64le
- open-vm-tools
ExclusiveArch: x86_64
ExclusiveArch: %{ix86} x86_64
- openblas
ExclusiveArch: %{openblas_arches}
- openjfx
ExclusiveArch: %{ix86} x86_64
- openlibm
ExclusiveArch: %{arm} %{ix86} x86_64 aarch64 %{power64}
- openni
ExclusiveArch: %{ix86} x86_64 %{arm}
- openni-primesense
ExclusiveArch: %{ix86} x86_64 %{arm}
- openssl-ibmca
ExclusiveArch: s390 s390x
- origin
ExclusiveArch: %{go_arches}
ExclusiveArch: x86_64 aarch64 ppc64le s390x
- orion
ExclusiveArch: %{qt5_qtwebengine_arches}
- orthorobot
ExclusiveArch: %{arm} %{ix86} x86_64 %{mips} aarch64 ppc64
- oshinko-cli
ExclusiveArch: %{go_arches}
ExclusiveArch: x86_64 aarch64 ppc64le s390x
- paflib
ExclusiveArch: ppc %{power64}
- pcc
ExclusiveArch: %{ix86} x86_64
- pcmciautils
ExclusiveArch: %{ix86} x86_64 ia64 ppc ppc64 %{arm}
- pdfmod
ExclusiveArch: %mono_arches
- peripety
ExclusiveArch: %{rust_arches}
- perl-Dumbbench
ExclusiveArch: %{ix86} x86_64 noarch
- perl-Parse-DMIDecode
ExclusiveArch: %{ix86} x86_64 ia64 aarch64
- pesign
ExclusiveArch: %{ix86} x86_64 ia64 aarch64 %{arm}
- pesign-test-app
ExclusiveArch: i686 x86_64 ia64 aarch64
- pinta
ExclusiveArch: %mono_arches
- pioneer
ExclusiveArch: %{ix86} x86_64
- playonlinux
ExclusiveArch: %{arm} aarch64 %{ix86} x86_64
- pmdk-convert
ExclusiveArch: x86_64
- pocl
ExclusiveArch: %{arm} aarch64 %{ix86} x86_64
- podman
ExclusiveArch: aarch64 %{arm} ppc64le s390x x86_64
- poppler-sharp
ExclusiveArch: %mono_arches
- popub
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- powerpc-utils
ExclusiveArch: ppc %{power64}
- ppc64-diag
ExclusiveArch: ppc %{power64}
- publican-jboss
ExclusiveArch: i686 x86_64
- pvs-sbcl
ExclusiveArch: %{ix86} x86_64 ppc sparcv9
- pyqtwebengine
ExclusiveArch: %{qt5_qtwebengine_arches}
- python-etcd
ExclusiveArch: noarch %{ix86} x86_64 %{arm} aarch64 ppc64le s390x
- python-healpy
ExclusiveArch: aarch64 ppc64 ppc64le x86_64 s390x
- python-openoffice
ExclusiveArch: noarch x86_64
- python-pymoc
ExclusiveArch: aarch64 ppc64 ppc64le x86_64 s390x
- python-rpi-gpio
ExclusiveArch: %{arm} aarch64
- q4wine
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64
- qcint
ExclusiveArch: x86_64
- qclib
ExclusiveArch: s390 s390x
- qevercloud
ExclusiveArch: %{qt5_qtwebengine_arches}
- qmapshack
ExclusiveArch: %{qt5_qtwebengine_arches}
- qt4pas
ExclusiveArch: %{fpc_arches}
- qt5-qtwebengine
ExclusiveArch: %{qt5_qtwebengine_arches}
- quantum-espresso
ExclusiveArch: x86_64 %{ix86}
ExclusiveArch: %{openblas_arches}
- quentier
ExclusiveArch: %{qt5_qtwebengine_arches}
- reactfx
ExclusiveArch: %{ix86} x86_64 noarch
- rear
ExclusiveArch: %ix86 x86_64 ppc ppc64 ppc64le ia64
- redhat-lsb
ExclusiveArch: %{ix86} ia64 x86_64 ppc ppc64 s390 s390x %{arm} aarch64 ppc64le
- reg
ExclusiveArch: x86_64
- renderdoc
ExclusiveArch: %{ix86} x86_64
- reptyr
ExclusiveArch: %{ix86} x86_64 %{arm}
- rescene
ExclusiveArch: %{mono_arches}
- restsharp
ExclusiveArch: %{mono_arches}
- rhythmbox-alternative-toolbar
ExclusiveArch: %{ix86} %{arm} x86_64 ppc64 ppc64le
- rkt
ExclusiveArch: x86_64 aarch64 %{arm} %{ix86}
- rocm-runtime
ExclusiveArch: x86_64 aarch64
- rocminfo
ExclusiveArch: x86_64 aarch64
- rpm-ostree
ExclusiveArch: %{rust_arches}
- rssguard
ExclusiveArch: %{qt5_qtwebengine_arches}
- runc
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64 ppc64le %{mips} s390x
- rust
ExclusiveArch: %{rust_arches}
- rust-abomonation
ExclusiveArch: %{rust_arches}
- rust-addr2line
ExclusiveArch: %{rust_arches}
- rust-adler32
ExclusiveArch: %{rust_arches}
- rust-aho-corasick
ExclusiveArch: %{rust_arches}
- rust-alga
ExclusiveArch: %{rust_arches}
- rust-alga_derive
ExclusiveArch: %{rust_arches}
- rust-ammonia
ExclusiveArch: %{rust_arches}
- rust-ansi_colours
ExclusiveArch: %{rust_arches}
- rust-ansi_term
ExclusiveArch: %{rust_arches}
- rust-antidote
ExclusiveArch: %{rust_arches}
- rust-aom-sys
ExclusiveArch: %{rust_arches}
- rust-approx
ExclusiveArch: %{rust_arches}
- rust-arc-swap
ExclusiveArch: %{rust_arches}
- rust-arg_enum_proc_macro
ExclusiveArch: %{rust_arches}
- rust-arraydeque
ExclusiveArch: %{rust_arches}
- rust-arrayref
ExclusiveArch: %{rust_arches}
- rust-arrayvec
ExclusiveArch: %{rust_arches}
- rust-ascii
ExclusiveArch: %{rust_arches}
- rust-askalono
ExclusiveArch: %{rust_arches}
- rust-askalono-cli
ExclusiveArch: %{rust_arches}
- rust-atk-sys
ExclusiveArch: %{rust_arches}
- rust-atom
ExclusiveArch: %{rust_arches}
- rust-atomicwrites
ExclusiveArch: %{rust_arches}
- rust-atty
ExclusiveArch: %{rust_arches}
- rust-autocfg
ExclusiveArch: %{rust_arches}
- rust-backtrace
ExclusiveArch: %{rust_arches}
- rust-backtrace-sys
ExclusiveArch: %{rust_arches}
- rust-base100
ExclusiveArch: %{rust_arches}
- rust-base64
ExclusiveArch: %{rust_arches}
- rust-bat
ExclusiveArch: %{rust_arches}
- rust-bencher
ExclusiveArch: %{rust_arches}
- rust-bincode
ExclusiveArch: %{rust_arches}
- rust-bindgen
ExclusiveArch: %{rust_arches}
- rust-bit-set
ExclusiveArch: %{rust_arches}
- rust-bit-vec
ExclusiveArch: %{rust_arches}
- rust-bitflags
ExclusiveArch: %{rust_arches}
- rust-bitstream-io
ExclusiveArch: %{rust_arches}
- rust-blake2
ExclusiveArch: %{rust_arches}
- rust-blobby
ExclusiveArch: %{rust_arches}
- rust-block-buffer
ExclusiveArch: %{rust_arches}
- rust-block-padding
ExclusiveArch: %{rust_arches}
- rust-brev
ExclusiveArch: %{rust_arches}
- rust-bstr
ExclusiveArch: %{rust_arches}
- rust-bufstream
ExclusiveArch: %{rust_arches}
- rust-build_const
ExclusiveArch: %{rust_arches}
- rust-byte-tools
ExclusiveArch: %{rust_arches}
- rust-bytecount
ExclusiveArch: %{rust_arches}
- rust-byteorder
ExclusiveArch: %{rust_arches}
- rust-bytes
ExclusiveArch: %{rust_arches}
- rust-bytes0.3
ExclusiveArch: %{rust_arches}
- rust-bytesize
ExclusiveArch: %{rust_arches}
- rust-c_vec
ExclusiveArch: %{rust_arches}
- rust-cairo-rs
ExclusiveArch: %{rust_arches}
- rust-cairo-sys-rs
ExclusiveArch: %{rust_arches}
- rust-cargo
ExclusiveArch: %{rust_arches}
- rust-cargo_metadata
ExclusiveArch: %{rust_arches}
- rust-cargo_metadata0.6
ExclusiveArch: %{rust_arches}
- rust-cast
ExclusiveArch: %{rust_arches}
- rust-cbindgen
ExclusiveArch: %{rust_arches}
- rust-cc
ExclusiveArch: %{rust_arches}
- rust-cexpr
ExclusiveArch: %{rust_arches}
- rust-cfg-if
ExclusiveArch: %{rust_arches}
- rust-chainerror
ExclusiveArch: %{rust_arches}
- rust-chbs
ExclusiveArch: %{rust_arches}
- rust-checked_int_cast
ExclusiveArch: %{rust_arches}
- rust-chrono
ExclusiveArch: %{rust_arches}
- rust-clang-sys
ExclusiveArch: %{rust_arches}
- rust-clap
ExclusiveArch: %{rust_arches}
- rust-clicolors-control
ExclusiveArch: %{rust_arches}
- rust-cmake
ExclusiveArch: %{rust_arches}
- rust-color_quant
ExclusiveArch: %{rust_arches}
- rust-colored
ExclusiveArch: %{rust_arches}
- rust-colored_json
ExclusiveArch: %{rust_arches}
- rust-config
ExclusiveArch: %{rust_arches}
- rust-console
ExclusiveArch: %{rust_arches}
- rust-content_inspector
ExclusiveArch: %{rust_arches}
- rust-cpp_demangle
ExclusiveArch: %{rust_arches}
- rust-crates-io
ExclusiveArch: %{rust_arches}
- rust-crc
ExclusiveArch: %{rust_arches}
- rust-crc-core
ExclusiveArch: %{rust_arches}
- rust-crc32fast
ExclusiveArch: %{rust_arches}
- rust-criterion
ExclusiveArch: %{rust_arches}
- rust-criterion-plot
ExclusiveArch: %{rust_arches}
- rust-crossbeam
ExclusiveArch: %{rust_arches}
- rust-crossbeam-channel
ExclusiveArch: %{rust_arches}
- rust-crossbeam-deque
ExclusiveArch: %{rust_arches}
- rust-crossbeam-deque0.4
ExclusiveArch: %{rust_arches}
- rust-crossbeam-epoch
ExclusiveArch: %{rust_arches}
- rust-crossbeam-queue
ExclusiveArch: %{rust_arches}
- rust-crossbeam-utils
ExclusiveArch: %{rust_arches}
- rust-crossterm
ExclusiveArch: %{rust_arches}
- rust-crossterm_cursor
ExclusiveArch: %{rust_arches}
- rust-crossterm_input
ExclusiveArch: %{rust_arches}
- rust-crossterm_screen
ExclusiveArch: %{rust_arches}
- rust-crossterm_style
ExclusiveArch: %{rust_arches}
- rust-crossterm_terminal
ExclusiveArch: %{rust_arches}
- rust-crossterm_utils
ExclusiveArch: %{rust_arches}
- rust-crypto-hash
ExclusiveArch: %{rust_arches}
- rust-crypto-mac
ExclusiveArch: %{rust_arches}
- rust-cryptovec
ExclusiveArch: %{rust_arches}
- rust-cssparser
ExclusiveArch: %{rust_arches}
- rust-cssparser-macros
ExclusiveArch: %{rust_arches}
- rust-csv
ExclusiveArch: %{rust_arches}
- rust-csv-core
ExclusiveArch: %{rust_arches}
- rust-ctrlc
ExclusiveArch: %{rust_arches}
- rust-curl
ExclusiveArch: %{rust_arches}
- rust-curl-sys
ExclusiveArch: %{rust_arches}
- rust-custom_derive
ExclusiveArch: %{rust_arches}
- rust-darling
ExclusiveArch: %{rust_arches}
- rust-darling_core
ExclusiveArch: %{rust_arches}
- rust-darling_macro
ExclusiveArch: %{rust_arches}
- rust-data-encoding
ExclusiveArch: %{rust_arches}
- rust-data-url
ExclusiveArch: %{rust_arches}
- rust-datetime
ExclusiveArch: %{rust_arches}
- rust-dav1d-sys
ExclusiveArch: %{rust_arches}
- rust-dbus
ExclusiveArch: %{rust_arches}
- rust-decimal
ExclusiveArch: %{rust_arches}
- rust-deflate
ExclusiveArch: %{rust_arches}
- rust-delta_e
ExclusiveArch: %{rust_arches}
- rust-derive_builder
ExclusiveArch: %{rust_arches}
- rust-derive_builder_core
ExclusiveArch: %{rust_arches}
- rust-devicemapper
ExclusiveArch: %{rust_arches}
- rust-diff
ExclusiveArch: %{rust_arches}
- rust-difference
ExclusiveArch: %{rust_arches}
- rust-digest
ExclusiveArch: %{rust_arches}
- rust-directories
ExclusiveArch: %{rust_arches}
- rust-dirs
ExclusiveArch: %{rust_arches}
- rust-dns-parser
ExclusiveArch: %{rust_arches}
- rust-docopt
ExclusiveArch: %{rust_arches}
- rust-downcast-rs
ExclusiveArch: %{rust_arches}
- rust-dtoa
ExclusiveArch: %{rust_arches}
- rust-dtoa-short
ExclusiveArch: %{rust_arches}
- rust-edit-distance
ExclusiveArch: %{rust_arches}
- rust-either
ExclusiveArch: %{rust_arches}
- rust-encode_unicode
ExclusiveArch: %{rust_arches}
- rust-encoding
ExclusiveArch: %{rust_arches}
- rust-encoding-index-japanese
ExclusiveArch: %{rust_arches}
- rust-encoding-index-korean
ExclusiveArch: %{rust_arches}
- rust-encoding-index-simpchinese
ExclusiveArch: %{rust_arches}
- rust-encoding-index-singlebyte
ExclusiveArch: %{rust_arches}
- rust-encoding-index-tradchinese
ExclusiveArch: %{rust_arches}
- rust-encoding_index_tests
ExclusiveArch: %{rust_arches}
- rust-encoding_rs
ExclusiveArch: %{rust_arches}
- rust-encoding_rs_io
ExclusiveArch: %{rust_arches}
- rust-entities
ExclusiveArch: %{rust_arches}
- rust-enum_primitive
ExclusiveArch: %{rust_arches}
- rust-env_logger
ExclusiveArch: %{rust_arches}
- rust-env_logger0.4
ExclusiveArch: %{rust_arches}
- rust-env_logger0.5
ExclusiveArch: %{rust_arches}
- rust-erased-serde
ExclusiveArch: %{rust_arches}
- rust-errln
ExclusiveArch: %{rust_arches}
- rust-errno
ExclusiveArch: %{rust_arches}
- rust-error-chain
ExclusiveArch: %{rust_arches}
- rust-exa
ExclusiveArch: %{rust_arches}
- rust-extprim
ExclusiveArch: %{rust_arches}
- rust-extprim_literals_macros
ExclusiveArch: %{rust_arches}
- rust-failure
ExclusiveArch: %{rust_arches}
- rust-failure_derive
ExclusiveArch: %{rust_arches}
- rust-fake-simd
ExclusiveArch: %{rust_arches}
- rust-fake_clock
ExclusiveArch: %{rust_arches}
- rust-fallible-iterator
ExclusiveArch: %{rust_arches}
- rust-fd-find
ExclusiveArch: %{rust_arches}
- rust-ffsend
ExclusiveArch: %{rust_arches}
- rust-ffsend-api
ExclusiveArch: %{rust_arches}
- rust-filetime
ExclusiveArch: %{rust_arches}
- rust-fixedbitset
ExclusiveArch: %{rust_arches}
- rust-flame
ExclusiveArch: %{rust_arches}
- rust-flate2
ExclusiveArch: %{rust_arches}
- rust-float-cmp
ExclusiveArch: %{rust_arches}
- rust-fnv
ExclusiveArch: %{rust_arches}
- rust-foreign-types
ExclusiveArch: %{rust_arches}
- rust-foreign-types-shared
ExclusiveArch: %{rust_arches}
- rust-fragile
ExclusiveArch: %{rust_arches}
- rust-fs2
ExclusiveArch: %{rust_arches}
- rust-fuse
ExclusiveArch: %{rust_arches}
- rust-futf
ExclusiveArch: %{rust_arches}
- rust-futures-async-runtime-preview
ExclusiveArch: %{rust_arches}
- rust-futures-channel-preview
ExclusiveArch: %{rust_arches}
- rust-futures-core
ExclusiveArch: %{rust_arches}
- rust-futures-core-preview
ExclusiveArch: %{rust_arches}
- rust-futures-cpupool
ExclusiveArch: %{rust_arches}
- rust-futures-executor-preview
ExclusiveArch: %{rust_arches}
- rust-futures-io-preview
ExclusiveArch: %{rust_arches}
- rust-futures-preview
ExclusiveArch: %{rust_arches}
- rust-futures-sink-preview
ExclusiveArch: %{rust_arches}
- rust-futures-stable-preview
ExclusiveArch: %{rust_arches}
- rust-futures-util-preview
ExclusiveArch: %{rust_arches}
- rust-futures0.1
ExclusiveArch: %{rust_arches}
- rust-fuzzy-matcher
ExclusiveArch: %{rust_arches}
- rust-gcsf
ExclusiveArch: %{rust_arches}
- rust-gdk
ExclusiveArch: %{rust_arches}
- rust-gdk-pixbuf
ExclusiveArch: %{rust_arches}
- rust-gdk-pixbuf-sys
ExclusiveArch: %{rust_arches}
- rust-gdk-sys
ExclusiveArch: %{rust_arches}
- rust-generic-array
ExclusiveArch: %{rust_arches}
- rust-getopts
ExclusiveArch: %{rust_arches}
- rust-gettext-sys
ExclusiveArch: %{rust_arches}
- rust-gif
ExclusiveArch: %{rust_arches}
- rust-gimli
ExclusiveArch: %{rust_arches}
- rust-gio
ExclusiveArch: %{rust_arches}
- rust-gio-sys
ExclusiveArch: %{rust_arches}
- rust-gir-format-check
ExclusiveArch: %{rust_arches}
- rust-git2
ExclusiveArch: %{rust_arches}
- rust-git2-curl
ExclusiveArch: %{rust_arches}
- rust-glib
ExclusiveArch: %{rust_arches}
- rust-glib-sys
ExclusiveArch: %{rust_arches}
- rust-glob
ExclusiveArch: %{rust_arches}
- rust-globset
ExclusiveArch: %{rust_arches}
- rust-gobject-sys
ExclusiveArch: %{rust_arches}
- rust-goblin
ExclusiveArch: %{rust_arches}
- rust-google-drive3-fork
ExclusiveArch: %{rust_arches}
- rust-grep
ExclusiveArch: %{rust_arches}
- rust-grep-cli
ExclusiveArch: %{rust_arches}
- rust-grep-matcher
ExclusiveArch: %{rust_arches}
- rust-grep-pcre2
ExclusiveArch: %{rust_arches}
- rust-grep-printer
ExclusiveArch: %{rust_arches}
- rust-grep-regex
ExclusiveArch: %{rust_arches}
- rust-grep-searcher
ExclusiveArch: %{rust_arches}
- rust-gtk
ExclusiveArch: %{rust_arches}
- rust-gtk-rs-lgpl-docs
ExclusiveArch: %{rust_arches}
- rust-gtk-source-sys
ExclusiveArch: %{rust_arches}
- rust-gtk-sys
ExclusiveArch: %{rust_arches}
- rust-gzip-header
ExclusiveArch: %{rust_arches}
- rust-h2
ExclusiveArch: %{rust_arches}
- rust-half
ExclusiveArch: %{rust_arches}
- rust-hamcrest
ExclusiveArch: %{rust_arches}
- rust-handlebars
ExclusiveArch: %{rust_arches}
- rust-hashbrown
ExclusiveArch: %{rust_arches}
- rust-headers
ExclusiveArch: %{rust_arches}
- rust-headers-core
ExclusiveArch: %{rust_arches}
- rust-headers-derive
ExclusiveArch: %{rust_arches}
- rust-heapsize
ExclusiveArch: %{rust_arches}
- rust-heatseeker
ExclusiveArch: %{rust_arches}
- rust-heck
ExclusiveArch: %{rust_arches}
- rust-hex
ExclusiveArch: %{rust_arches}
- rust-hexyl
ExclusiveArch: %{rust_arches}
- rust-hkdf
ExclusiveArch: %{rust_arches}
- rust-hmac
ExclusiveArch: %{rust_arches}
- rust-home
ExclusiveArch: %{rust_arches}
- rust-horrorshow
ExclusiveArch: %{rust_arches}
- rust-hostname
ExclusiveArch: %{rust_arches}
- rust-html5ever
ExclusiveArch: %{rust_arches}
- rust-http
ExclusiveArch: %{rust_arches}
- rust-httparse
ExclusiveArch: %{rust_arches}
- rust-humantime
ExclusiveArch: %{rust_arches}
- rust-hyper
ExclusiveArch: %{rust_arches}
- rust-hyper-native-tls
ExclusiveArch: %{rust_arches}
- rust-hyper-tls
ExclusiveArch: %{rust_arches}
- rust-hyper0.10
ExclusiveArch: %{rust_arches}
- rust-hyperfine
ExclusiveArch: %{rust_arches}
- rust-id_tree
ExclusiveArch: %{rust_arches}
- rust-ident_case
ExclusiveArch: %{rust_arches}
- rust-idna
ExclusiveArch: %{rust_arches}
- rust-ignore
ExclusiveArch: %{rust_arches}
- rust-image
ExclusiveArch: %{rust_arches}
- rust-indexmap
ExclusiveArch: %{rust_arches}
- rust-indicatif
ExclusiveArch: %{rust_arches}
- rust-inflate
ExclusiveArch: %{rust_arches}
- rust-inotify
ExclusiveArch: %{rust_arches}
- rust-inotify-sys
ExclusiveArch: %{rust_arches}
- rust-input_buffer
ExclusiveArch: %{rust_arches}
- rust-interpolate_name
ExclusiveArch: %{rust_arches}
- rust-intervaltree
ExclusiveArch: %{rust_arches}
- rust-iovec
ExclusiveArch: %{rust_arches}
- rust-ipnetwork
ExclusiveArch: %{rust_arches}
- rust-iso8601
ExclusiveArch: %{rust_arches}
- rust-itertools
ExclusiveArch: %{rust_arches}
- rust-itertools-num
ExclusiveArch: %{rust_arches}
- rust-itoa
ExclusiveArch: %{rust_arches}
- rust-jobserver
ExclusiveArch: %{rust_arches}
- rust-jpeg-decoder
ExclusiveArch: %{rust_arches}
- rust-lab
ExclusiveArch: %{rust_arches}
- rust-language-tags
ExclusiveArch: %{rust_arches}
- rust-lazy-init
ExclusiveArch: %{rust_arches}
- rust-lazy_static
ExclusiveArch: %{rust_arches}
- rust-lazycell
ExclusiveArch: %{rust_arches}
- rust-libc
ExclusiveArch: %{rust_arches}
- rust-libdbus-sys
ExclusiveArch: %{rust_arches}
- rust-libflate
ExclusiveArch: %{rust_arches}
- rust-libgit2-sys
ExclusiveArch: %{rust_arches}
- rust-libloading
ExclusiveArch: %{rust_arches}
- rust-libm
ExclusiveArch: %{rust_arches}
- rust-libmount
ExclusiveArch: %{rust_arches}
- rust-libssh2-sys
ExclusiveArch: %{rust_arches}
- rust-libudev
ExclusiveArch: %{rust_arches}
- rust-libudev-sys
ExclusiveArch: %{rust_arches}
- rust-libz-sys
ExclusiveArch: %{rust_arches}
- rust-line-wrap
ExclusiveArch: %{rust_arches}
- rust-linked-hash-map
ExclusiveArch: %{rust_arches}
- rust-lipsum
ExclusiveArch: %{rust_arches}
- rust-locale
ExclusiveArch: %{rust_arches}
- rust-locale_config
ExclusiveArch: %{rust_arches}
- rust-lock_api
ExclusiveArch: %{rust_arches}
- rust-log
ExclusiveArch: %{rust_arches}
- rust-log0.3
ExclusiveArch: %{rust_arches}
- rust-loopdev
ExclusiveArch: %{rust_arches}
- rust-lru_time_cache
ExclusiveArch: %{rust_arches}
- rust-lzma-sys
ExclusiveArch: %{rust_arches}
- rust-lzw
ExclusiveArch: %{rust_arches}
- rust-mac
ExclusiveArch: %{rust_arches}
- rust-macro-attr
ExclusiveArch: %{rust_arches}
- rust-maplit
ExclusiveArch: %{rust_arches}
- rust-markup5ever
ExclusiveArch: %{rust_arches}
- rust-matches
ExclusiveArch: %{rust_arches}
- rust-matrixmultiply
ExclusiveArch: %{rust_arches}
- rust-md-5
ExclusiveArch: %{rust_arches}
- rust-md5
ExclusiveArch: %{rust_arches}
- rust-memchr
ExclusiveArch: %{rust_arches}
- rust-memmap
ExclusiveArch: %{rust_arches}
- rust-memoffset
ExclusiveArch: %{rust_arches}
- rust-metadeps
ExclusiveArch: %{rust_arches}
- rust-mime
ExclusiveArch: %{rust_arches}
- rust-mime-sniffer
ExclusiveArch: %{rust_arches}
- rust-mime0.2
ExclusiveArch: %{rust_arches}
- rust-mime_guess
ExclusiveArch: %{rust_arches}
- rust-mime_guess1
ExclusiveArch: %{rust_arches}
- rust-miniz-sys
ExclusiveArch: %{rust_arches}
- rust-miniz_oxide
ExclusiveArch: %{rust_arches}
- rust-miniz_oxide_c_api
ExclusiveArch: %{rust_arches}
- rust-mint
ExclusiveArch: %{rust_arches}
- rust-mio
ExclusiveArch: %{rust_arches}
- rust-mio-extras
ExclusiveArch: %{rust_arches}
- rust-mio-uds
ExclusiveArch: %{rust_arches}
- rust-mktemp
ExclusiveArch: %{rust_arches}
- rust-mnt
ExclusiveArch: %{rust_arches}
- rust-modifier
ExclusiveArch: %{rust_arches}
- rust-multimap
ExclusiveArch: %{rust_arches}
- rust-nalgebra
ExclusiveArch: %{rust_arches}
- rust-nasm-rs
ExclusiveArch: %{rust_arches}
- rust-native-tls
ExclusiveArch: %{rust_arches}
- rust-natord
ExclusiveArch: %{rust_arches}
- rust-net2
ExclusiveArch: %{rust_arches}
- rust-netmap_sys
ExclusiveArch: %{rust_arches}
- rust-new_debug_unreachable
ExclusiveArch: %{rust_arches}
- rust-newtype_derive
ExclusiveArch: %{rust_arches}
- rust-nix
ExclusiveArch: %{rust_arches}
- rust-no-panic
ExclusiveArch: %{rust_arches}
- rust-nodrop
ExclusiveArch: %{rust_arches}
- rust-nom
ExclusiveArch: %{rust_arches}
- rust-notify
ExclusiveArch: %{rust_arches}
- rust-num
ExclusiveArch: %{rust_arches}
- rust-num-bigint
ExclusiveArch: %{rust_arches}
- rust-num-complex
ExclusiveArch: %{rust_arches}
- rust-num-derive
ExclusiveArch: %{rust_arches}
- rust-num-integer
ExclusiveArch: %{rust_arches}
- rust-num-iter
ExclusiveArch: %{rust_arches}
- rust-num-rational
ExclusiveArch: %{rust_arches}
- rust-num-traits
ExclusiveArch: %{rust_arches}
- rust-num-traits0.1
ExclusiveArch: %{rust_arches}
- rust-num_cpus
ExclusiveArch: %{rust_arches}
- rust-number_prefix
ExclusiveArch: %{rust_arches}
- rust-object
ExclusiveArch: %{rust_arches}
- rust-once_cell
ExclusiveArch: %{rust_arches}
- rust-onig
ExclusiveArch: %{rust_arches}
- rust-onig_sys
ExclusiveArch: %{rust_arches}
- rust-opaque-debug
ExclusiveArch: %{rust_arches}
- rust-open
ExclusiveArch: %{rust_arches}
- rust-opener
ExclusiveArch: %{rust_arches}
- rust-openssl
ExclusiveArch: %{rust_arches}
- rust-openssl-probe
ExclusiveArch: %{rust_arches}
- rust-openssl-sys
ExclusiveArch: %{rust_arches}
- rust-ord_subset
ExclusiveArch: %{rust_arches}
- rust-owning_ref
ExclusiveArch: %{rust_arches}
- rust-packaging
ExclusiveArch: %{rust_arches}
- rust-pad
ExclusiveArch: %{rust_arches}
- rust-pager
ExclusiveArch: %{rust_arches}
- rust-pango
ExclusiveArch: %{rust_arches}
- rust-pango-sys
ExclusiveArch: %{rust_arches}
- rust-pangocairo
ExclusiveArch: %{rust_arches}
- rust-pangocairo-sys
ExclusiveArch: %{rust_arches}
- rust-parity-wasm
ExclusiveArch: %{rust_arches}
- rust-parking_lot
ExclusiveArch: %{rust_arches}
- rust-parking_lot_core
ExclusiveArch: %{rust_arches}
- rust-paste
ExclusiveArch: %{rust_arches}
- rust-paste-impl
ExclusiveArch: %{rust_arches}
- rust-pbr
ExclusiveArch: %{rust_arches}
- rust-pcap
ExclusiveArch: %{rust_arches}
- rust-pcre2
ExclusiveArch: %{rust_arches}
- rust-pcre2-sys
ExclusiveArch: %{rust_arches}
- rust-peeking_take_while
ExclusiveArch: %{rust_arches}
- rust-peg
ExclusiveArch: %{rust_arches}
- rust-percent-encoding
ExclusiveArch: %{rust_arches}
- rust-permutate
ExclusiveArch: %{rust_arches}
- rust-permutohedron
ExclusiveArch: %{rust_arches}
- rust-pest
ExclusiveArch: %{rust_arches}
- rust-pest_derive
ExclusiveArch: %{rust_arches}
- rust-pest_generator
ExclusiveArch: %{rust_arches}
- rust-pest_meta
ExclusiveArch: %{rust_arches}
- rust-phf
ExclusiveArch: %{rust_arches}
- rust-phf_codegen
ExclusiveArch: %{rust_arches}
- rust-phf_generator
ExclusiveArch: %{rust_arches}
- rust-phf_shared
ExclusiveArch: %{rust_arches}
- rust-pkg-config
ExclusiveArch: %{rust_arches}
- rust-plain
ExclusiveArch: %{rust_arches}
- rust-plist
ExclusiveArch: %{rust_arches}
- rust-plugin
ExclusiveArch: %{rust_arches}
- rust-pnet_base
ExclusiveArch: %{rust_arches}
- rust-pnet_sys
ExclusiveArch: %{rust_arches}
- rust-png
ExclusiveArch: %{rust_arches}
- rust-precomputed-hash
ExclusiveArch: %{rust_arches}
- rust-pretty-git-prompt
ExclusiveArch: %{rust_arches}
- rust-pretty_assertions
ExclusiveArch: %{rust_arches}
- rust-pretty_env_logger
ExclusiveArch: %{rust_arches}
- rust-prettytable-rs
ExclusiveArch: %{rust_arches}
- rust-proc-macro-hack
ExclusiveArch: %{rust_arches}
- rust-proc-macro2
ExclusiveArch: %{rust_arches}
- rust-proc-macro2-0.3
ExclusiveArch: %{rust_arches}
- rust-procedural-masquerade
ExclusiveArch: %{rust_arches}
- rust-proptest
ExclusiveArch: %{rust_arches}
- rust-pulldown-cmark
ExclusiveArch: %{rust_arches}
- rust-pulse
ExclusiveArch: %{rust_arches}
- rust-qr2term
ExclusiveArch: %{rust_arches}
- rust-qrcode
ExclusiveArch: %{rust_arches}
- rust-quick-error
ExclusiveArch: %{rust_arches}
- rust-quickcheck
ExclusiveArch: %{rust_arches}
- rust-quickcheck0.6
ExclusiveArch: %{rust_arches}
- rust-quickersort
ExclusiveArch: %{rust_arches}
- rust-quote
ExclusiveArch: %{rust_arches}
- rust-quote0.3
ExclusiveArch: %{rust_arches}
- rust-quote0.5
ExclusiveArch: %{rust_arches}
- rust-rand
ExclusiveArch: %{rust_arches}
- rust-rand0.4
ExclusiveArch: %{rust_arches}
- rust-rand0.5
ExclusiveArch: %{rust_arches}
- rust-rand_chacha
ExclusiveArch: %{rust_arches}
- rust-rand_core
ExclusiveArch: %{rust_arches}
- rust-rand_core0.2
ExclusiveArch: %{rust_arches}
- rust-rand_core0.3
ExclusiveArch: %{rust_arches}
- rust-rand_hc
ExclusiveArch: %{rust_arches}
- rust-rand_isaac
ExclusiveArch: %{rust_arches}
- rust-rand_jitter
ExclusiveArch: %{rust_arches}
- rust-rand_os
ExclusiveArch: %{rust_arches}
- rust-rand_pcg
ExclusiveArch: %{rust_arches}
- rust-rand_xorshift
ExclusiveArch: %{rust_arches}
- rust-rand_xoshiro
ExclusiveArch: %{rust_arches}
- rust-rawpointer
ExclusiveArch: %{rust_arches}
- rust-rayon
ExclusiveArch: %{rust_arches}
- rust-rayon-core
ExclusiveArch: %{rust_arches}
- rust-recycler
ExclusiveArch: %{rust_arches}
- rust-regex
ExclusiveArch: %{rust_arches}
- rust-regex-automata
ExclusiveArch: %{rust_arches}
- rust-regex-syntax
ExclusiveArch: %{rust_arches}
- rust-relay
ExclusiveArch: %{rust_arches}
- rust-remove_dir_all
ExclusiveArch: %{rust_arches}
- rust-reqwest
ExclusiveArch: %{rust_arches}
- rust-resize
ExclusiveArch: %{rust_arches}
- rust-ripgrep
ExclusiveArch: %{rust_arches}
- rust-rmp
ExclusiveArch: %{rust_arches}
- rust-rmp-serde
ExclusiveArch: %{rust_arches}
- rust-rpassword
ExclusiveArch: %{rust_arches}
- rust-rpick
ExclusiveArch: %{rust_arches}
- rust-rust-ini
ExclusiveArch: %{rust_arches}
- rust-rustc-demangle
ExclusiveArch: %{rust_arches}
- rust-rustc-serialize
ExclusiveArch: %{rust_arches}
- rust-rustc-test
ExclusiveArch: %{rust_arches}
- rust-rustc_version
ExclusiveArch: %{rust_arches}
- rust-rustdoc-stripper
ExclusiveArch: %{rust_arches}
- rust-rustfilt
ExclusiveArch: %{rust_arches}
- rust-rustfix
ExclusiveArch: %{rust_arches}
- rust-rusty-fork
ExclusiveArch: %{rust_arches}
- rust-ryu
ExclusiveArch: %{rust_arches}
- rust-safe-transmute
ExclusiveArch: %{rust_arches}
- rust-safemem
ExclusiveArch: %{rust_arches}
- rust-same-file
ExclusiveArch: %{rust_arches}
- rust-scan_fmt
ExclusiveArch: %{rust_arches}
- rust-scoped-tls
ExclusiveArch: %{rust_arches}
- rust-scoped_threadpool
ExclusiveArch: %{rust_arches}
- rust-scopeguard
ExclusiveArch: %{rust_arches}
- rust-scroll
ExclusiveArch: %{rust_arches}
- rust-scroll_derive
ExclusiveArch: %{rust_arches}
- rust-sd
ExclusiveArch: %{rust_arches}
- rust-seahash
ExclusiveArch: %{rust_arches}
- rust-semver
ExclusiveArch: %{rust_arches}
- rust-semver-parser
ExclusiveArch: %{rust_arches}
- rust-semver-parser0.7
ExclusiveArch: %{rust_arches}
- rust-serde
ExclusiveArch: %{rust_arches}
- rust-serde0.8
ExclusiveArch: %{rust_arches}
- rust-serde_bytes
ExclusiveArch: %{rust_arches}
- rust-serde_cbor
ExclusiveArch: %{rust_arches}
- rust-serde_derive
ExclusiveArch: %{rust_arches}
- rust-serde_ignored
ExclusiveArch: %{rust_arches}
- rust-serde_json
ExclusiveArch: %{rust_arches}
- rust-serde_json0.8
ExclusiveArch: %{rust_arches}
- rust-serde_stacker
ExclusiveArch: %{rust_arches}
- rust-serde_test
ExclusiveArch: %{rust_arches}
- rust-serde_urlencoded
ExclusiveArch: %{rust_arches}
- rust-serde_yaml
ExclusiveArch: %{rust_arches}
- rust-sha-1
ExclusiveArch: %{rust_arches}
- rust-sha1
ExclusiveArch: %{rust_arches}
- rust-sha2
ExclusiveArch: %{rust_arches}
- rust-shell-escape
ExclusiveArch: %{rust_arches}
- rust-shell-words
ExclusiveArch: %{rust_arches}
- rust-shlex
ExclusiveArch: %{rust_arches}
- rust-signal-hook
ExclusiveArch: %{rust_arches}
- rust-simplelog
ExclusiveArch: %{rust_arches}
- rust-siphasher
ExclusiveArch: %{rust_arches}
- rust-skeptic
ExclusiveArch: %{rust_arches}
- rust-slab
ExclusiveArch: %{rust_arches}
- rust-slog
ExclusiveArch: %{rust_arches}
- rust-smallvec
ExclusiveArch: %{rust_arches}
- rust-snowflake
ExclusiveArch: %{rust_arches}
- rust-socket2
ExclusiveArch: %{rust_arches}
- rust-sourceview
ExclusiveArch: %{rust_arches}
- rust-spin
ExclusiveArch: %{rust_arches}
- rust-spmc
ExclusiveArch: %{rust_arches}
- rust-stable_deref_trait
ExclusiveArch: %{rust_arches}
- rust-stacker
ExclusiveArch: %{rust_arches}
- rust-static_assertions
ExclusiveArch: %{rust_arches}
- rust-statistical
ExclusiveArch: %{rust_arches}
- rust-stb_truetype
ExclusiveArch: %{rust_arches}
- rust-streaming-stats
ExclusiveArch: %{rust_arches}
- rust-string
ExclusiveArch: %{rust_arches}
- rust-string_cache
ExclusiveArch: %{rust_arches}
- rust-string_cache_codegen
ExclusiveArch: %{rust_arches}
- rust-string_cache_shared
ExclusiveArch: %{rust_arches}
- rust-strings
ExclusiveArch: %{rust_arches}
- rust-strsim
ExclusiveArch: %{rust_arches}
- rust-structopt
ExclusiveArch: %{rust_arches}
- rust-structopt-derive
ExclusiveArch: %{rust_arches}
- rust-subtle
ExclusiveArch: %{rust_arches}
- rust-syn
ExclusiveArch: %{rust_arches}
- rust-syn0.11
ExclusiveArch: %{rust_arches}
- rust-synom
ExclusiveArch: %{rust_arches}
- rust-synstructure
ExclusiveArch: %{rust_arches}
- rust-syntect
ExclusiveArch: %{rust_arches}
- rust-sys-info
ExclusiveArch: %{rust_arches}
- rust-tabwriter
ExclusiveArch: %{rust_arches}
- rust-take
ExclusiveArch: %{rust_arches}
- rust-take_mut
ExclusiveArch: %{rust_arches}
- rust-tar
ExclusiveArch: %{rust_arches}
- rust-tempdir
ExclusiveArch: %{rust_arches}
- rust-tempfile
ExclusiveArch: %{rust_arches}
- rust-tendril
ExclusiveArch: %{rust_arches}
- rust-term
ExclusiveArch: %{rust_arches}
- rust-term_grid
ExclusiveArch: %{rust_arches}
- rust-term_size
ExclusiveArch: %{rust_arches}
- rust-termcolor
ExclusiveArch: %{rust_arches}
- rust-terminfo
ExclusiveArch: %{rust_arches}
- rust-termion
ExclusiveArch: %{rust_arches}
- rust-termios
ExclusiveArch: %{rust_arches}
- rust-test-assembler
ExclusiveArch: %{rust_arches}
- rust-textwrap
ExclusiveArch: %{rust_arches}
- rust-thread-id
ExclusiveArch: %{rust_arches}
- rust-thread-scoped
ExclusiveArch: %{rust_arches}
- rust-thread_local
ExclusiveArch: %{rust_arches}
- rust-threadpool
ExclusiveArch: %{rust_arches}
- rust-tiff
ExclusiveArch: %{rust_arches}
- rust-time
ExclusiveArch: %{rust_arches}
- rust-timer
ExclusiveArch: %{rust_arches}
- rust-timerfd
ExclusiveArch: %{rust_arches}
- rust-tinytemplate
ExclusiveArch: %{rust_arches}
- rust-tokei
ExclusiveArch: %{rust_arches}
- rust-tokio
ExclusiveArch: %{rust_arches}
- rust-tokio-codec
ExclusiveArch: %{rust_arches}
- rust-tokio-core
ExclusiveArch: %{rust_arches}
- rust-tokio-current-thread
ExclusiveArch: %{rust_arches}
- rust-tokio-executor
ExclusiveArch: %{rust_arches}
- rust-tokio-fs
ExclusiveArch: %{rust_arches}
- rust-tokio-io
ExclusiveArch: %{rust_arches}
- rust-tokio-mock-task
ExclusiveArch: %{rust_arches}
- rust-tokio-mockstream
ExclusiveArch: %{rust_arches}
- rust-tokio-process
ExclusiveArch: %{rust_arches}
- rust-tokio-reactor
ExclusiveArch: %{rust_arches}
- rust-tokio-service
ExclusiveArch: %{rust_arches}
- rust-tokio-signal
ExclusiveArch: %{rust_arches}
- rust-tokio-sync
ExclusiveArch: %{rust_arches}
- rust-tokio-tcp
ExclusiveArch: %{rust_arches}
- rust-tokio-threadpool
ExclusiveArch: %{rust_arches}
- rust-tokio-timer
ExclusiveArch: %{rust_arches}
- rust-tokio-tls
ExclusiveArch: %{rust_arches}
- rust-tokio-trace-core
ExclusiveArch: %{rust_arches}
- rust-tokio-udp
ExclusiveArch: %{rust_arches}
- rust-tokio-uds
ExclusiveArch: %{rust_arches}
- rust-toml
ExclusiveArch: %{rust_arches}
- rust-toml0.4
ExclusiveArch: %{rust_arches}
- rust-traitobject
ExclusiveArch: %{rust_arches}
- rust-try-lock
ExclusiveArch: %{rust_arches}
- rust-tungstenite
ExclusiveArch: %{rust_arches}
- rust-typeable
ExclusiveArch: %{rust_arches}
- rust-typed-arena
ExclusiveArch: %{rust_arches}
- rust-typemap
ExclusiveArch: %{rust_arches}
- rust-typenum
ExclusiveArch: %{rust_arches}
- rust-ucd-parse
ExclusiveArch: %{rust_arches}
- rust-ucd-trie
ExclusiveArch: %{rust_arches}
- rust-ucd-util
ExclusiveArch: %{rust_arches}
- rust-unescape
ExclusiveArch: %{rust_arches}
- rust-unicase
ExclusiveArch: %{rust_arches}
- rust-unicase1
ExclusiveArch: %{rust_arches}
- rust-unicode-bidi
ExclusiveArch: %{rust_arches}
- rust-unicode-normalization
ExclusiveArch: %{rust_arches}
- rust-unicode-segmentation
ExclusiveArch: %{rust_arches}
- rust-unicode-width
ExclusiveArch: %{rust_arches}
- rust-unicode-xid
ExclusiveArch: %{rust_arches}
- rust-unicode_categories
ExclusiveArch: %{rust_arches}
- rust-unindent
ExclusiveArch: %{rust_arches}
- rust-unix_socket
ExclusiveArch: %{rust_arches}
- rust-unreachable
ExclusiveArch: %{rust_arches}
- rust-unsafe-any
ExclusiveArch: %{rust_arches}
- rust-untrusted
ExclusiveArch: %{rust_arches}
- rust-url
ExclusiveArch: %{rust_arches}
- rust-url_serde
ExclusiveArch: %{rust_arches}
- rust-urlencoding
ExclusiveArch: %{rust_arches}
- rust-urlshortener
ExclusiveArch: %{rust_arches}
- rust-users
ExclusiveArch: %{rust_arches}
- rust-utf-8
ExclusiveArch: %{rust_arches}
- rust-utf8-ranges
ExclusiveArch: %{rust_arches}
- rust-utf8parse
ExclusiveArch: %{rust_arches}
- rust-uuid
ExclusiveArch: %{rust_arches}
- rust-varlink
ExclusiveArch: %{rust_arches}
- rust-varlink-cli
ExclusiveArch: %{rust_arches}
- rust-varlink_generator
ExclusiveArch: %{rust_arches}
- rust-varlink_parser
ExclusiveArch: %{rust_arches}
- rust-varlink_stdinterfaces
ExclusiveArch: %{rust_arches}
- rust-vec_map
ExclusiveArch: %{rust_arches}
- rust-version-compare
ExclusiveArch: %{rust_arches}
- rust-version-sync
ExclusiveArch: %{rust_arches}
- rust-version_check
ExclusiveArch: %{rust_arches}
- rust-void
ExclusiveArch: %{rust_arches}
- rust-wait-timeout
ExclusiveArch: %{rust_arches}
- rust-walkdir
ExclusiveArch: %{rust_arches}
- rust-want
ExclusiveArch: %{rust_arches}
- rust-warp
ExclusiveArch: %{rust_arches}
- rust-websocket
ExclusiveArch: %{rust_arches}
- rust-which
ExclusiveArch: %{rust_arches}
- rust-which1
ExclusiveArch: %{rust_arches}
- rust-wild
ExclusiveArch: %{rust_arches}
- rust-x11
ExclusiveArch: %{rust_arches}
- rust-xattr
ExclusiveArch: %{rust_arches}
- rust-xdg
ExclusiveArch: %{rust_arches}
- rust-xml-rs
ExclusiveArch: %{rust_arches}
- rust-xz2
ExclusiveArch: %{rust_arches}
- rust-y4m
ExclusiveArch: %{rust_arches}
- rust-yaml-rust
ExclusiveArch: %{rust_arches}
- rust-yaml-rust0.3
ExclusiveArch: %{rust_arches}
- rust-ybaas
ExclusiveArch: %{rust_arches}
- rust-yubibomb
ExclusiveArch: %{rust_arches}
- rust-yup-oauth2
ExclusiveArch: %{rust_arches}
- rust-zoneinfo_compiled
ExclusiveArch: %{rust_arches}
- rust-zram-generator
ExclusiveArch: %{rust_arches}
- s390utils
ExclusiveArch: s390 s390x
- safetyblanket
ExclusiveArch: %{arm} %{ix86} x86_64 %{mips} aarch64 ppc64
- sagemath
ExclusiveArch: aarch64 %{arm} %{ix86} x86_64 ppc sparcv9
- sbcl
ExclusiveArch: %{arm} %{ix86} x86_64 ppc sparcv9 aarch64
- sbd
ExclusiveArch: i686 x86_64 s390x aarch64 ppc64le
- sbsigntools
ExclusiveArch: x86_64 aarch64 %{arm} %{ix86}
- seabios
ExclusiveArch: x86_64
- seamonkey
ExclusiveArch: %{ix86} x86_64
- servicelog
ExclusiveArch: ppc %{power64}
- sgabios
ExclusiveArch: %{ix86} x86_64
- sharpfont
ExclusiveArch: %mono_arches
- sharpziplib
ExclusiveArch: %{mono_arches}
- shim
ExclusiveArch: %{efi}
- shim-unsigned-aarch64
ExclusiveArch: aarch64
- shim-unsigned-x64
ExclusiveArch: x86_64
- sigul
ExclusiveArch: x86_64
- skychart
ExclusiveArch: %{fpc_arches}
- snapd
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64 ppc64le s390x
- 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
- spring
ExclusiveArch: %{ix86} x86_64
- springlobby
ExclusiveArch: %{ix86} x86_64
- startdde
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- statsd
ExclusiveArch: %{nodejs_arches} noarch
- stdx-allocator
ExclusiveArch: %{ldc_arches}
- stratisd
ExclusiveArch: %{rust_arches}
- stripesnoop
ExclusiveArch: %{ix86} x86_64
- supermin
ExclusiveArch: x86_64
- swift-lang
ExclusiveArch: x86_64 aarch64
- sysbench
ExclusiveArch: %{arm} %{ix86} x86_64 %{mips}
ExclusiveArch: %{arm} %{ix86} x86_64 %{mips} aarch64
- syslinux
ExclusiveArch: %{ix86} x86_64
ExclusiveArch: %{ix86} x86_64
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
- tdlib
ExclusiveArch: x86_64
- templates_parser
ExclusiveArch: %GPRbuild_arches
- termy-qt
ExclusiveArch: %{ix86} x86_64
- ternimal
ExclusiveArch: %{rust_arches}
- themonospot-base
ExclusiveArch: %mono_arches
- themonospot-console
ExclusiveArch: %mono_arches
- themonospot-gui-gtk
ExclusiveArch: %mono_arches
- themonospot-plugin-avi
ExclusiveArch: %mono_arches
- themonospot-plugin-mkv
ExclusiveArch: %mono_arches
- thermald
ExclusiveArch: %{ix86} x86_64
- tilix
ExclusiveArch: %{ldc_arches}
- tmux-top
ExclusiveArch: %{go_arches}
- tomboy
ExclusiveArch: %{mono_arches}
- toolbox
ExclusiveArch: aarch64 %{arm} ppc64le s390x x86_64
- tuned-profiles-nfv-host-bin
ExclusiveArch: %{ix86} x86_64
- uClibc
ExclusiveArch: %{arm} %{ix86} x86_64 %{mips}
- ucx
ExclusiveArch: aarch64 ppc64le x86_64
- ugene
ExclusiveArch: %{ix86} x86_64
- uglify-js
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- uglify-js1
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- unetbootin
ExclusiveArch: %{ix86} x86_64
- ursa-major
ExclusiveArch: %{ix86} x86_64 noarch
- v8-314
ExclusiveArch: %{ix86} x86_64 %{arm} mips mipsel ppc ppc64
- valgrind
ExclusiveArch: %{ix86} x86_64 ppc ppc64 ppc64le s390x armv7hl aarch64
- vboot-utils
ExclusiveArch: %{arm} aarch64 %{ix86} x86_64
- vdsm
ExclusiveArch: x86_64 %{power64} aarch64
- vim-go
ExclusiveArch: %{?golang_arches}%{!?golang_arches:%{ix86} x86_64 %{arm}}
- virtio-forwarder
ExclusiveArch: x86_64 aarch64 ppc64le %ix86
- virtualbox-guest-additions
ExclusiveArch: i686 x86_64
- virtualplanet
ExclusiveArch: %{fpc_arches}
- vkd3d
ExclusiveArch: %{ix86} x86_64 %{arm}
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64
- vmaf
ExclusiveArch: x86_64
- vrq
ExclusiveArch: %{ix86} x86_64
- warsow
ExclusiveArch: %{ix86} x86_64 %{arm}
- warsow-data
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
ExclusiveArch: %{ix86} x86_64 %{arm}
- webkit2-sharp
ExclusiveArch: %mono_arches
- wine
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64
ExclusiveArch: %{ix86} %{arm}
- winetricks
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64
- wraplinux
ExclusiveArch: %{ix86} x86_64
- wxMaxima
ExclusiveArch: %{arm} %{ix86} x86_64 aarch64 ppc sparcv9
- x2goclient
ExclusiveArch: x86_64
- 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-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
- ycssmin
ExclusiveArch: %{nodejs_arches} noarch
- zeromq-ada
ExclusiveArch: %{GPRbuild_arches}
- zlib-ada
ExclusiveArch: %{GPRbuild_arches}
5 years, 1 month
Architecture specific change in rpms/gap.git
by githook-noreply@fedoraproject.org
The package rpms/gap.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/gap.git/commit/?id=ac34d6a95cf8d2....
Change:
+%ifarch s390x
Thanks.
Full change:
============
commit ac34d6a95cf8d22267f9314fb0d7ef44ac5d65ef
Author: Jerry James <loganjerry(a)gmail.com>
Date: Tue Apr 23 18:32:28 2019 -0600
Fix expected test outputs on big endian architectures.
diff --git a/gap.spec b/gap.spec
index cc258fd..087aee5 100644
--- a/gap.spec
+++ b/gap.spec
@@ -370,6 +370,16 @@ fi
%if %{without bootstrap}
%check
+%ifarch s390x
+# Some test results depend on the results of a hash algorithm. The algorithm
+# output depends on the exact order of the bytes fed into it. We feed in the
+# same bytes, but in different orders, on little and big endian machines.
+# However, the test checks for the little endian output. Fix that on big
+# endian machines.
+sed -e 's/260581/402746/;s/773594/109657/;s/567548/351540/' \
+ -i tst/testinstall/pperm.tst
+%endif
+
export LC_ALL=C.UTF-8
sed -e "s|GAP_DIR=.*|GAP_DIR=$PWD|" \
-e "s|GAP_EXE=.*|GAP_EXE=$PWD|" \
5 years, 1 month
Architecture specific change in rpms/mozilla-iot-gateway.git
by githook-noreply@fedoraproject.org
The package rpms/mozilla-iot-gateway.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/mozilla-iot-gateway.git/commit/?i....
Change:
+ExclusiveArch: %{nodejs_arches} noarch
Thanks.
Full change:
============
commit 98c0d0ea47fafd44d15d127e19bc3fe648360984
Author: Troy Dawson <tdawson(a)redhat.com>
Date: Tue Apr 23 07:27:31 2019 -0700
Initial import (#1673125).
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..f17197a
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1 @@
+/gateway-v0.7.0.tar.gz
diff --git a/gateway-tarball.sh b/gateway-tarball.sh
new file mode 100644
index 0000000..df4b641
--- /dev/null
+++ b/gateway-tarball.sh
@@ -0,0 +1,34 @@
+#!/bin/sh
+# Setup for this script:
+# dnf install nodejs-yarn $(cat gateway-unbundle.list | while read line; do echo "nodejs-$line"; done)
+#
+#version=$(rpm -q --specfile --qf='%{version}\n' gateway.spec | head -n1)
+version=0.7.0
+## Download gateway
+wget https://github.com/mozilla-iot/gateway/archive/v$version.tar.gz
+tar zxf v$version.tar.gz
+cd gateway-$version
+## Download npm libraries
+yarnpkg --ignore-optional
+## Clean out binary modules (and deps) and link to rpm packages
+echo "Removing modules that we already have as packages "
+for module in $(cat ../gateway-unbundle.list)
+do
+ echo -n "."
+ rm -rf node_modules/$module
+ ln -s /usr/lib/node_modules/$module node_modules/
+ for line in $(find . -type d -name $module | grep node_modules/$module$)
+ do
+ if ! [ -L $line ] ; then
+ echo -n "$(echo $line | tr -cd '/' | wc -c)"
+ rm -rf $line
+ ln -s /usr/lib/node_modules/$module $line
+ fi
+ done
+done
+echo
+echo "Starting Webpack"
+PATH="/usr/lib/node_modules/npm/node_modules/npm-lifecycle/node-gyp-bin:$PWD/node_modules/.bin:/usr/lib/node_modules/.bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin"
+webpack
+cd ..
+tar cfz gateway-v$version.tar.gz gateway-$version
diff --git a/gateway-unbundle.list b/gateway-unbundle.list
new file mode 100644
index 0000000..a09c9ae
--- /dev/null
+++ b/gateway-unbundle.list
@@ -0,0 +1,4 @@
+bindings
+nan
+nanomsg
+sqlite3
diff --git a/mozilla-iot-gateway.service b/mozilla-iot-gateway.service
new file mode 100644
index 0000000..8827dfc
--- /dev/null
+++ b/mozilla-iot-gateway.service
@@ -0,0 +1,21 @@
+[Unit]
+Description=Mozilla IoT Gateway Client
+After=network.target
+OnFailure=mozilla-iot-gateway.update-rollback.service
+
+[Service]
+Type=simple
+StandardOutput=journal
+StandardError=journal
+# Edit this line, if needed, to specify what user to run Vaani as
+# If you delete this line, it will run as root
+User=moz-iot-gateway
+# Edit this line, if needed, to specify where you installed the server
+WorkingDirectory=/usr/lib/node_modules/gateway
+# Edit this line, if needed, to set the correct path to node
+ExecStart=node build/gateway.js
+Restart=always
+RestartSec=10s
+
+[Install]
+WantedBy=multi-user.target
diff --git a/mozilla-iot-gateway.spec b/mozilla-iot-gateway.spec
new file mode 100644
index 0000000..89f7971
--- /dev/null
+++ b/mozilla-iot-gateway.spec
@@ -0,0 +1,1374 @@
+%global npm_name gateway
+%global debug_package %{nil}
+%{?nodejs_find_provides_and_requires}
+
+# don't require bundled modules
+%global __requires_exclude_from ^%{_prefix}/lib/node_modules/gateway/.*$
+
+Name: mozilla-iot-gateway
+Version: 0.7.0
+Release: 2%{?dist}
+Summary: Mozilla's Web of Things gateway
+License: MPLv2.0 and ASL 2.0 AND BSD AND (BSD OR AFL 2.1) AND (BSD OR ASL 2.0 OR MIT) AND (BSD OR GPLv2) AND (BSD OR MIT) AND CC-BY 4.0 AND MPLv2.0 AND MIT AND Public Domain AND ISC AND LGPLv2.1+ AND (MIT AND BSD) AND (MIT AND CC-BY 3.0) AND (MIT AND zlib) AND (MIT OR ASL 2.0) AND (MIT OR GPLv2) AND (MIT OR GPLv3) AND Unlicense AND WTFPL AND (WTFPL OR MIT)
+URL: https://github.com/mozilla-iot/gateway
+# Source was generated by running gateway-tarball.sh,
+# with gateway-unbundle.list in the same directory.
+# This downloads the release tarball from the github repo,
+# bundles all the nodejs libraries, then unbundles the binary
+# libraries (listed in gateway-unbundle.list).
+Source0: %{npm_name}-v%{version}.tar.gz
+Source1: gateway-tarball.sh
+Source2: gateway-unbundle.list
+Source3: mozilla-iot-gateway.service
+ExclusiveArch: %{nodejs_arches} noarch
+BuildArch: noarch
+BuildRequires: nodejs-packaging
+%if 0%{?fedora} >= 30
+BuildRequires: systemd-rpm-macros
+%else
+BuildRequires: systemd
+%endif
+## Normal requires
+Requires(pre): shadow-utils
+%{?systemd_requires}
+## Requires for live-building Add-Ons
+Requires: gcc
+Requires: python3-devel
+## All the unbundled node modules - Required
+Requires: npm(bindings)
+Requires: npm(nan)
+Requires: npm(nanomsg)
+Requires: npm(sqlite3)
+## All the bundled node modules - Provides: bundled
+Provides: bundled(abab) = 2.0.0
+Provides: bundled(abbrev) = 1.1.1
+Provides: bundled(accepts) = 1.3.5
+Provides: bundled(acme) = 1.0.12
+Provides: bundled(acme-v2) = 1.0.7
+Provides: bundled(acme-v2) = 1.0.8
+Provides: bundled(acorn) = 5.7.1
+Provides: bundled(acorn) = 5.7.3
+Provides: bundled(acorn) = 6.0.2
+Provides: bundled(acorn) = 6.0.4
+Provides: bundled(acorn-dynamic-import) = 3.0.0
+Provides: bundled(acorn-globals) = 4.3.0
+Provides: bundled(acorn-jsx) = 5.0.0
+Provides: bundled(acorn-walk) = 6.1.0
+Provides: bundled(agent-base) = 4.2.1
+Provides: bundled(ajv) = 5.3.0
+Provides: bundled(ajv) = 5.5.2
+Provides: bundled(ajv) = 6.4.0
+Provides: bundled(ajv) = 6.5.1
+Provides: bundled(ajv) = 6.5.4
+Provides: bundled(ajv) = 6.6.2
+Provides: bundled(ajv-errors) = 1.0.0
+Provides: bundled(ajv-keywords) = 3.2.0
+Provides: bundled(amdefine) = 1.0.1
+Provides: bundled(ansi-escapes) = 3.0.0
+Provides: bundled(ansi-regex) = 2.1.1
+Provides: bundled(ansi-regex) = 3.0.0
+Provides: bundled(ansi-styles) = 2.2.1
+Provides: bundled(ansi-styles) = 3.2.0
+Provides: bundled(ansi-styles) = 3.2.1
+Provides: bundled(anymatch) = 1.3.0
+Provides: bundled(anymatch) = 2.0.0
+Provides: bundled(any-promise) = 1.3.0
+Provides: bundled(append-transform) = 0.4.0
+Provides: bundled(aproba) = 1.2.0
+Provides: bundled(archiver) = 2.1.1
+Provides: bundled(archiver) = 3.0.0
+Provides: bundled(archiver-utils) = 1.3.0
+Provides: bundled(archiver-utils) = 2.0.0
+Provides: bundled(are-we-there-yet) = 1.1.5
+Provides: bundled(argparse) = 1.0.9
+Provides: bundled(argv) = 0.0.2
+Provides: bundled(array-equal) = 1.0.0
+Provides: bundled(array-filter) = 0.0.1
+Provides: bundled(array-flatten) = 1.1.1
+Provides: bundled(array-from) = 2.1.1
+Provides: bundled(array-map) = 0.0.0
+Provides: bundled(array-reduce) = 0.0.0
+Provides: bundled(array-union) = 1.0.2
+Provides: bundled(array-uniq) = 1.0.3
+Provides: bundled(array-unique) = 0.2.1
+Provides: bundled(array-unique) = 0.3.2
+Provides: bundled(arr-diff) = 2.0.0
+Provides: bundled(arr-diff) = 4.0.0
+Provides: bundled(arr-flatten) = 1.0.3
+Provides: bundled(arr-flatten) = 1.1.0
+Provides: bundled(arrify) = 1.0.1
+Provides: bundled(arr-union) = 3.1.0
+Provides: bundled(asap) = 2.0.6
+Provides: bundled(asn1) = 0.2.3
+Provides: bundled(asn1js) = 1.2.12
+Provides: bundled(asn1.js) = 4.10.1
+Provides: bundled(asn1.js) = 5.0.1
+Provides: bundled(assert) = 1.4.1
+Provides: bundled(assertion-error) = 1.0.2
+Provides: bundled(assertion-error) = 1.1.0
+Provides: bundled(assert-plus) = 1.0.0
+Provides: bundled(assign-symbols) = 1.0.0
+Provides: bundled(astral-regex) = 1.0.0
+Provides: bundled(ast-types) = 0.9.6
+Provides: bundled(async) = 1.5.2
+Provides: bundled(async) = 2.5.0
+Provides: bundled(async) = 2.6.0
+Provides: bundled(async) = 2.6.1
+Provides: bundled(async-each) = 1.0.1
+Provides: bundled(asynckit) = 0.4.0
+Provides: bundled(async-limiter) = 1.0.0
+Provides: bundled(atob) = 1.1.3
+Provides: bundled(atob) = 2.1.1
+Provides: bundled(awesome-typescript-loader) = 5.2.1
+Provides: bundled(aws4) = 1.6.0
+Provides: bundled(aws4) = 1.8.0
+Provides: bundled(aws-sign2) = 0.7.0
+Provides: bundled(babel-code-frame) = 6.22.0
+Provides: bundled(babel-code-frame) = 6.26.0
+Provides: bundled(babel-core) = 6.25.0
+Provides: bundled(babel-eslint) = 10.0.1
+Provides: bundled(babel-generator) = 6.25.0
+Provides: bundled(@babel/generator) = 7.1.3
+Provides: bundled(babel-helper-builder-binary-assignment-operator-visitor) = 6.24.1
+Provides: bundled(babel-helper-call-delegate) = 6.24.1
+Provides: bundled(babel-helper-define-map) = 6.26.0
+Provides: bundled(babel-helper-explode-assignable-expression) = 6.24.1
+Provides: bundled(babel-helper-function-name) = 6.24.1
+Provides: bundled(@babel/helper-function-name) = 7.1.0
+Provides: bundled(babel-helper-get-function-arity) = 6.24.1
+Provides: bundled(@babel/helper-get-function-arity) = 7.0.0
+Provides: bundled(babel-helper-hoist-variables) = 6.24.1
+Provides: bundled(babel-helper-optimise-call-expression) = 6.24.1
+Provides: bundled(babel-helper-regex) = 6.26.0
+Provides: bundled(babel-helper-remap-async-to-generator) = 6.24.1
+Provides: bundled(babel-helper-replace-supers) = 6.24.1
+Provides: bundled(babel-helpers) = 6.24.1
+Provides: bundled(@babel/helper-split-export-declaration) = 7.0.0
+Provides: bundled(babel-jest) = 23.6.0
+Provides: bundled(babel-loader) = 8.0.0-beta.3
+Provides: bundled(babel-messages) = 6.23.0
+Provides: bundled(@babel/parser) = 7.1.3
+Provides: bundled(babel-plugin-check-es2015-constants) = 6.22.0
+Provides: bundled(babel-plugin-dynamic-import-node) = 1.2.0
+Provides: bundled(babel-plugin-istanbul) = 4.1.6
+Provides: bundled(babel-plugin-jest-hoist) = 23.2.0
+Provides: bundled(babel-plugin-syntax-async-functions) = 6.13.0
+Provides: bundled(babel-plugin-syntax-dynamic-import) = 6.18.0
+Provides: bundled(babel-plugin-syntax-exponentiation-operator) = 6.13.0
+Provides: bundled(babel-plugin-syntax-object-rest-spread) = 6.13.0
+Provides: bundled(babel-plugin-syntax-trailing-function-commas) = 6.22.0
+Provides: bundled(babel-plugin-transform-async-to-generator) = 6.24.1
+Provides: bundled(babel-plugin-transform-es2015-arrow-functions) = 6.22.0
+Provides: bundled(babel-plugin-transform-es2015-block-scoped-functions) = 6.22.0
+Provides: bundled(babel-plugin-transform-es2015-block-scoping) = 6.26.0
+Provides: bundled(babel-plugin-transform-es2015-classes) = 6.24.1
+Provides: bundled(babel-plugin-transform-es2015-computed-properties) = 6.24.1
+Provides: bundled(babel-plugin-transform-es2015-destructuring) = 6.23.0
+Provides: bundled(babel-plugin-transform-es2015-duplicate-keys) = 6.24.1
+Provides: bundled(babel-plugin-transform-es2015-for-of) = 6.23.0
+Provides: bundled(babel-plugin-transform-es2015-function-name) = 6.24.1
+Provides: bundled(babel-plugin-transform-es2015-literals) = 6.22.0
+Provides: bundled(babel-plugin-transform-es2015-modules-amd) = 6.24.1
+Provides: bundled(babel-plugin-transform-es2015-modules-commonjs) = 6.24.1
+Provides: bundled(babel-plugin-transform-es2015-modules-commonjs) = 6.26.2
+Provides: bundled(babel-plugin-transform-es2015-modules-systemjs) = 6.24.1
+Provides: bundled(babel-plugin-transform-es2015-modules-umd) = 6.24.1
+Provides: bundled(babel-plugin-transform-es2015-object-super) = 6.24.1
+Provides: bundled(babel-plugin-transform-es2015-parameters) = 6.24.1
+Provides: bundled(babel-plugin-transform-es2015-shorthand-properties) = 6.24.1
+Provides: bundled(babel-plugin-transform-es2015-spread) = 6.22.0
+Provides: bundled(babel-plugin-transform-es2015-sticky-regex) = 6.24.1
+Provides: bundled(babel-plugin-transform-es2015-template-literals) = 6.22.0
+Provides: bundled(babel-plugin-transform-es2015-typeof-symbol) = 6.23.0
+Provides: bundled(babel-plugin-transform-es2015-unicode-regex) = 6.24.1
+Provides: bundled(babel-plugin-transform-exponentiation-operator) = 6.24.1
+Provides: bundled(babel-plugin-transform-object-rest-spread) = 6.26.0
+Provides: bundled(babel-plugin-transform-regenerator) = 6.26.0
+Provides: bundled(babel-plugin-transform-strict-mode) = 6.24.1
+Provides: bundled(babel-preset-env) = 1.7.0
+Provides: bundled(babel-preset-jest) = 23.2.0
+Provides: bundled(babel-register) = 6.24.1
+Provides: bundled(babel-runtime) = 6.23.0
+Provides: bundled(babel-runtime) = 6.26.0
+Provides: bundled(babel-template) = 6.25.0
+Provides: bundled(babel-template) = 6.26.0
+Provides: bundled(@babel/template) = 7.1.2
+Provides: bundled(babel-traverse) = 6.25.0
+Provides: bundled(babel-traverse) = 6.26.0
+Provides: bundled(@babel/traverse) = 7.1.4
+Provides: bundled(babel-types) = 6.25.0
+Provides: bundled(babel-types) = 6.26.0
+Provides: bundled(@babel/types) = 7.1.3
+Provides: bundled(babylon) = 6.17.4
+Provides: bundled(babylon) = 6.18.0
+Provides: bundled(balanced-match) = 1.0.0
+Provides: bundled(base) = 0.11.2
+Provides: bundled(base64-js) = 1.3.0
+Provides: bundled(bcryptjs) = 2.4.3
+Provides: bundled(private) = 0.1.7
+Provides: bundled(private) = 0.1.8
+Provides: bundled(big.js) = 3.2.0
+Provides: bundled(binary-extensions) = 1.11.0
+Provides: bundled(bl) = 1.2.1
+Provides: bundled(bluebird) = 3.5.1
+Provides: bundled(bn.js) = 4.11.8
+Provides: bundled(body-parser) = 1.18.3
+Provides: bundled(boolbase) = 1.0.0
+Provides: bundled(boom) = 4.3.1
+Provides: bundled(boom) = 5.2.0
+Provides: bundled(boom) = 7.2.0
+Provides: bundled(brace-expansion) = 1.1.11
+Provides: bundled(braces) = 1.8.5
+Provides: bundled(braces) = 2.3.2
+Provides: bundled(brorand) = 1.1.0
+Provides: bundled(browserify-aes) = 1.2.0
+Provides: bundled(browserify-cipher) = 1.0.1
+Provides: bundled(browserify-des) = 1.0.1
+Provides: bundled(browserify-rsa) = 4.0.1
+Provides: bundled(browserify-sign) = 4.0.4
+Provides: bundled(browserify-zlib) = 0.2.0
+Provides: bundled(browser-process-hrtime) = 0.1.2
+Provides: bundled(browser-resolve) = 1.11.3
+Provides: bundled(browserslist) = 3.2.8
+Provides: bundled(bser) = 2.0.0
+Provides: bundled(bs-logger) = 0.2.5
+Provides: bundled(buffer) = 4.9.1
+Provides: bundled(buffer-alloc) = 1.2.0
+Provides: bundled(buffer-alloc-unsafe) = 1.1.0
+Provides: bundled(buffer-crc32) = 0.2.13
+Provides: bundled(buffer-equal-constant-time) = 1.0.1
+Provides: bundled(buffer-fill) = 1.0.0
+Provides: bundled(buffer-from) = 1.1.0
+Provides: bundled(buffer-from) = 1.1.1
+Provides: bundled(buffer-v6-polyfill) = 1.0.3
+Provides: bundled(buffer-xor) = 1.0.3
+Provides: bundled(builtin-modules) = 1.1.1
+Provides: bundled(builtin-status-codes) = 3.0.0
+Provides: bundled(busboy) = 0.2.14
+Provides: bundled(bytes) = 3.0.0
+Provides: bundled(cacache) = 10.0.4
+Provides: bundled(cache-base) = 1.0.1
+Provides: bundled(cache-loader) = 1.2.2
+Provides: bundled(caller-path) = 0.1.0
+Provides: bundled(callsites) = 0.2.0
+Provides: bundled(callsites) = 2.0.0
+Provides: bundled(camel-case) = 3.0.0
+Provides: bundled(camelcase) = 4.1.0
+Provides: bundled(caniuse-lite) = 1.0.30000846
+Provides: bundled(caseless) = 0.12.0
+Provides: bundled(certpem) = 1.0.1
+Provides: bundled(chai) = 4.1.2
+Provides: bundled(chai) = 4.2.0
+Provides: bundled(chai-http) = 3.0.0
+Provides: bundled(chalk) = 1.1.3
+Provides: bundled(chalk) = 2.3.0
+Provides: bundled(chalk) = 2.3.2
+Provides: bundled(chalk) = 2.4.1
+Provides: bundled(chardet) = 0.7.0
+Provides: bundled(charenc) = 0.0.2
+Provides: bundled(check-error) = 1.0.2
+Provides: bundled(chokidar) = 2.0.4
+Provides: bundled(chownr) = 1.0.1
+Provides: bundled(chrome-trace-event) = 1.0.0
+Provides: bundled(ci-info) = 1.0.0
+Provides: bundled(cipher-base) = 1.0.4
+Provides: bundled(circular-json) = 0.3.1
+Provides: bundled(class-utils) = 0.3.6
+Provides: bundled(clean-css) = 4.1.11
+Provides: bundled(clean-webpack-plugin) = 0.1.19
+Provides: bundled(cli-cursor) = 2.1.0
+Provides: bundled(cliui) = 4.0.0
+Provides: bundled(cli-width) = 2.1.0
+Provides: bundled(co) = 4.6.0
+Provides: bundled(codecov) = 3.1.0
+Provides: bundled(code-point-at) = 1.1.0
+Provides: bundled(collection-visit) = 1.0.0
+Provides: bundled(color) = 3.0.0
+Provides: bundled(color-convert) = 1.9.0
+Provides: bundled(color-convert) = 1.9.3
+Provides: bundled(color-name) = 1.1.2
+Provides: bundled(color-name) = 1.1.3
+Provides: bundled(colornames) = 1.1.1
+Provides: bundled(colors) = 1.3.2
+Provides: bundled(colorspace) = 1.1.1
+Provides: bundled(color-string) = 1.5.3
+Provides: bundled(combined-stream) = 1.0.6
+Provides: bundled(combined-stream) = 1.0.7
+Provides: bundled(commander) = 2.13.0
+Provides: bundled(commander) = 2.15.1
+Provides: bundled(commondir) = 1.0.1
+Provides: bundled(component-emitter) = 1.2.1
+Provides: bundled(compress-commons) = 1.2.2
+Provides: bundled(compressible) = 2.0.15
+Provides: bundled(compression) = 1.7.3
+Provides: bundled(concat-map) = 0.0.1
+Provides: bundled(concat-stream) = 1.6.2
+Provides: bundled(config) = 2.0.1
+Provides: bundled(console-browserify) = 1.1.0
+Provides: bundled(console-control-strings) = 1.1.0
+Provides: bundled(constants-browserify) = 1.0.0
+Provides: bundled(content-disposition) = 0.5.2
+Provides: bundled(content-type) = 1.0.4
+Provides: bundled(convert-source-map) = 1.5.0
+Provides: bundled(cookie) = 0.3.1
+Provides: bundled(cookiejar) = 2.0.6
+Provides: bundled(cookiejar) = 2.1.2
+Provides: bundled(cookie-signature) = 1.0.6
+Provides: bundled(copy-concurrently) = 1.0.5
+Provides: bundled(copy-descriptor) = 0.1.1
+Provides: bundled(copy-webpack-plugin) = 4.5.4
+Provides: bundled(core-js) = 2.3.0
+Provides: bundled(core-js) = 2.4.1
+Provides: bundled(core-util-is) = 1.0.2
+Provides: bundled(crc32-stream) = 2.0.0
+Provides: bundled(crc) = 3.5.0
+Provides: bundled(create-ecdh) = 4.0.3
+Provides: bundled(create-hash) = 1.2.0
+Provides: bundled(create-hmac) = 1.1.7
+Provides: bundled(cross-spawn) = 4.0.2
+Provides: bundled(cross-spawn) = 6.0.5
+Provides: bundled(crypt) = 0.0.2
+Provides: bundled(cryptiles) = 3.1.2
+Provides: bundled(crypto-browserify) = 3.12.0
+Provides: bundled(css) = 2.2.1
+Provides: bundled(cssesc) = 0.1.0
+Provides: bundled(css-loader) = 1.0.0
+Provides: bundled(cssom) = 0.3.2
+Provides: bundled(cssom) = 0.3.4
+Provides: bundled(css-parse) = 2.0.0
+Provides: bundled(css-select) = 1.2.0
+Provides: bundled(css-selector-tokenizer) = 0.7.0
+Provides: bundled(cssstyle) = 1.1.1
+Provides: bundled(css-value) = 0.0.1
+Provides: bundled(css-what) = 2.1.0
+Provides: bundled(cycle) = 1.0.3
+Provides: bundled(cyclist) = 0.2.2
+Provides: bundled(d) = 1.0.0
+Provides: bundled(dashdash) = 1.14.1
+Provides: bundled(data-urls) = 1.1.0
+Provides: bundled(date-fns) = 1.29.0
+Provides: bundled(date-now) = 0.1.4
+Provides: bundled(debug) = 2.2.0
+Provides: bundled(debug) = 2.6.9
+Provides: bundled(debug) = 3.1.0
+Provides: bundled(debug) = 4.1.0
+Provides: bundled(decamelize) = 1.2.0
+Provides: bundled(decamelize) = 2.0.0
+Provides: bundled(decode-uri-component) = 0.2.0
+Provides: bundled(deep) = 1.2.3
+Provides: bundled(deep-eql) = 3.0.1
+Provides: bundled(deep-equal) = 1.0.1
+Provides: bundled(deep-extend) = 0.6.0
+Provides: bundled(deep-is) = 0.1.3
+Provides: bundled(deepmerge) = 2.0.1
+Provides: bundled(default-require-extensions) = 1.0.0
+Provides: bundled(define-properties) = 1.1.2
+Provides: bundled(define-property) = 0.2.5
+Provides: bundled(define-property) = 1.0.0
+Provides: bundled(define-property) = 2.0.2
+Provides: bundled(del) = 2.2.2
+Provides: bundled(delayed-stream) = 1.0.0
+Provides: bundled(delegates) = 1.0.0
+Provides: bundled(depd) = 1.1.2
+Provides: bundled(des.js) = 1.0.0
+Provides: bundled(destroy) = 1.0.4
+Provides: bundled(detect-indent) = 4.0.0
+Provides: bundled(detect-libc) = 1.0.3
+Provides: bundled(detect-newline) = 2.1.0
+Provides: bundled(diagnostics) = 1.1.1
+Provides: bundled(dicer) = 0.2.5
+Provides: bundled(diff) = 3.2.0
+Provides: bundled(diff) = 3.5.0
+Provides: bundled(diffie-hellman) = 5.0.3
+Provides: bundled(dir-glob) = 2.0.0
+Provides: bundled(dnssd) = 0.4.1
+Provides: bundled(doctrine) = 2.1.0
+Provides: bundled(domain-browser) = 1.2.0
+Provides: bundled(dom-converter) = 0.1.4
+Provides: bundled(domelementtype) = 1.1.3
+Provides: bundled(domelementtype) = 1.3.0
+Provides: bundled(domexception) = 1.0.1
+Provides: bundled(domhandler) = 2.1.0
+Provides: bundled(domhandler) = 2.4.1
+Provides: bundled(dom-serializer) = 0.1.0
+Provides: bundled(domutils) = 1.1.6
+Provides: bundled(domutils) = 1.5.1
+Provides: bundled(domutils) = 1.6.2
+Provides: bundled(duplexer) = 0.1.1
+Provides: bundled(duplexify) = 3.6.0
+Provides: bundled(ecdsa-sig-formatter) = 1.0.10
+Provides: bundled(ee-first) = 1.1.1
+Provides: bundled(ejs) = 2.5.7
+Provides: bundled(electron-to-chromium) = 1.3.48
+Provides: bundled(elliptic) = 6.4.0
+Provides: bundled(emojis-list) = 2.1.0
+Provides: bundled(enabled) = 1.0.2
+Provides: bundled(encodeurl) = 1.0.2
+Provides: bundled(end-of-stream) = 1.4.1
+Provides: bundled(enhanced-resolve) = 4.0.0
+Provides: bundled(enhanced-resolve) = 4.1.0
+Provides: bundled(entities) = 1.1.1
+Provides: bundled(env-variable) = 0.0.5
+Provides: bundled(errno) = 0.1.7
+Provides: bundled(error-ex) = 1.3.1
+Provides: bundled(es5-ext) = 0.10.46
+Provides: bundled(es6-iterator) = 2.0.3
+Provides: bundled(es6-promise) = 3.0.2
+Provides: bundled(es6-promise) = 4.2.5
+Provides: bundled(es6-promisify) = 5.0.0
+Provides: bundled(es6-symbol) = 3.1.1
+Provides: bundled(es6-templates) = 0.2.3
+Provides: bundled(es-abstract) = 1.10.0
+Provides: bundled(es-abstract) = 1.11.0
+Provides: bundled(escape-html) = 1.0.3
+Provides: bundled(escape-string-regexp) = 1.0.5
+Provides: bundled(escodegen) = 1.11.0
+Provides: bundled(eslint) = 5.8.0
+Provides: bundled(eslint-plugin-html) = 4.0.6
+Provides: bundled(eslint-scope) = 3.7.1
+Provides: bundled(eslint-scope) = 4.0.0
+Provides: bundled(eslint-utils) = 1.3.1
+Provides: bundled(eslint-visitor-keys) = 1.0.0
+Provides: bundled(espree) = 4.1.0
+Provides: bundled(esprima) = 3.1.3
+Provides: bundled(esprima) = 4.0.0
+Provides: bundled(esquery) = 1.0.1
+Provides: bundled(esrecurse) = 4.2.1
+Provides: bundled(es-to-primitive) = 1.1.1
+Provides: bundled(estraverse) = 4.2.0
+Provides: bundled(esutils) = 2.0.2
+Provides: bundled(etag) = 1.8.1
+Provides: bundled(eventemitter3) = 3.1.0
+Provides: bundled(events) = 1.1.1
+Provides: bundled(event-stream) = 3.3.4
+Provides: bundled(event-to-promise) = 0.8.0
+Provides: bundled(evp_bytestokey) = 1.0.3
+Provides: bundled(execa) = 0.10.0
+Provides: bundled(execa) = 0.5.1
+Provides: bundled(exec-sh) = 0.2.0
+Provides: bundled(exit) = 0.1.2
+Provides: bundled(expand-brackets) = 0.1.5
+Provides: bundled(expand-brackets) = 2.1.4
+Provides: bundled(expand-range) = 1.8.2
+Provides: bundled(expect) = 23.6.0
+Provides: bundled(express) = 4.16.4
+Provides: bundled(express-fileupload) = 1.0.0
+Provides: bundled(express-handlebars) = 3.0.0
+Provides: bundled(express-promise-router) = 3.0.3
+Provides: bundled(express-ws) = 4.0.0
+Provides: bundled(extend) = 3.0.1
+Provides: bundled(extend) = 3.0.2
+Provides: bundled(extend-shallow) = 2.0.1
+Provides: bundled(extend-shallow) = 3.0.2
+Provides: bundled(external-editor) = 2.0.4
+Provides: bundled(external-editor) = 3.0.3
+Provides: bundled(extglob) = 0.3.2
+Provides: bundled(extglob) = 2.0.4
+Provides: bundled(extract-text-webpack-plugin) = 4.0.0-beta.0
+Provides: bundled(extsprintf) = 1.3.0
+Provides: bundled(extsprintf) = 1.4.0
+Provides: bundled(fast-deep-equal) = 1.1.0
+Provides: bundled(fast-deep-equal) = 2.0.1
+Provides: bundled(fast-json-stable-stringify) = 2.0.0
+Provides: bundled(fast-levenshtein) = 2.0.6
+Provides: bundled(fastparse) = 1.1.1
+Provides: bundled(fast-safe-stringify) = 2.0.6
+Provides: bundled(fb-watchman) = 2.0.0
+Provides: bundled(fd-slicer) = 1.0.1
+Provides: bundled(fecha) = 2.3.3
+Provides: bundled(figures) = 2.0.0
+Provides: bundled(file-entry-cache) = 2.0.0
+Provides: bundled(file-loader) = 2.0.0
+Provides: bundled(filename-regex) = 2.0.1
+Provides: bundled(fileset) = 2.0.3
+Provides: bundled(file-stream-rotator) = 0.4.1
+Provides: bundled(fill-range) = 2.2.3
+Provides: bundled(fill-range) = 4.0.0
+Provides: bundled(finalhandler) = 1.1.1
+Provides: bundled(find-cache-dir) = 1.0.0
+Provides: bundled(find-up) = 1.1.2
+Provides: bundled(find-up) = 2.1.0
+Provides: bundled(find-up) = 3.0.0
+Provides: bundled(flat-cache) = 1.2.2
+Provides: bundled(flush-write-stream) = 1.0.3
+Provides: bundled(follow-redirects) = 1.2.4
+Provides: bundled(follow-redirects) = 1.6.1
+Provides: bundled(foreach) = 2.0.5
+Provides: bundled(forever-agent) = 0.6.1
+Provides: bundled(for-in) = 1.0.2
+Provides: bundled(form-data) = 1.0.0-rc4
+Provides: bundled(form-data) = 2.3.2
+Provides: bundled(form-data) = 2.3.3
+Provides: bundled(formidable) = 1.2.1
+Provides: bundled(for-own) = 0.1.5
+Provides: bundled(forwarded) = 0.1.2
+Provides: bundled(fragment-cache) = 0.2.1
+Provides: bundled(fresh) = 0.5.2
+Provides: bundled(from) = 0.1.7
+Provides: bundled(from2) = 2.3.0
+Provides: bundled(fs-constants) = 1.0.0
+Provides: bundled(fs-minipass) = 1.2.5
+Provides: bundled(fs.realpath) = 1.0.0
+Provides: bundled(fs-symlink) = 1.2.1
+Provides: bundled(fs-write-stream-atomic) = 1.0.10
+Provides: bundled(functional-red-black-tree) = 1.0.1
+Provides: bundled(function-bind) = 1.1.1
+Provides: bundled(Gajus Kuizinas) = 5.1.0
+Provides: bundled(gateway-addon) = 0.4.0
+Provides: bundled(gauge) = 2.7.4
+Provides: bundled(gaze) = 1.1.2
+Provides: bundled(get-caller-file) = 1.0.2
+Provides: bundled(get-func-name) = 2.0.0
+Provides: bundled(getpass) = 0.1.7
+Provides: bundled(get-stream) = 2.3.1
+Provides: bundled(get-stream) = 3.0.0
+Provides: bundled(get-value) = 2.0.6
+Provides: bundled(glob) = 6.0.4
+Provides: bundled(glob) = 7.1.2
+Provides: bundled(global-modules-path) = 2.3.0
+Provides: bundled(globals) = 11.4.0
+Provides: bundled(globals) = 11.8.0
+Provides: bundled(globals) = 9.18.0
+Provides: bundled(glob-base) = 0.3.0
+Provides: bundled(globby) = 5.0.0
+Provides: bundled(globby) = 7.1.1
+Provides: bundled(glob-parent) = 2.0.0
+Provides: bundled(glob-parent) = 3.1.0
+Provides: bundled(globule) = 1.2.0
+Provides: bundled(graceful-fs) = 4.1.11
+Provides: bundled(grapheme-splitter) = 1.0.4
+Provides: bundled(greenlock) = 2.2.19
+Provides: bundled(growly) = 1.3.0
+Provides: bundled(handlebars) = 4.0.10
+Provides: bundled(handlebars) = 4.0.11
+Provides: bundled(handlebars) = 4.0.12
+Provides: bundled(har-schema) = 2.0.0
+Provides: bundled(har-validator) = 5.0.3
+Provides: bundled(has) = 1.0.1
+Provides: bundled(has-ansi) = 2.0.0
+Provides: bundled(has-flag) = 1.0.0
+Provides: bundled(has-flag) = 2.0.0
+Provides: bundled(has-flag) = 3.0.0
+Provides: bundled(hash-base) = 3.0.4
+Provides: bundled(hash.js) = 1.1.4
+Provides: bundled(has-symbols) = 1.0.0
+Provides: bundled(has-unicode) = 2.0.1
+Provides: bundled(has-value) = 0.3.1
+Provides: bundled(has-value) = 1.0.0
+Provides: bundled(has-values) = 0.1.4
+Provides: bundled(has-values) = 1.0.0
+Provides: bundled(hawk) = 6.0.2
+Provides: bundled(he) = 1.1.1
+Provides: bundled(highlightjs) = 9.12.0
+Provides: bundled(hmac-drbg) = 1.0.1
+Provides: bundled(hoek) = 4.2.0
+Provides: bundled(hoek) = 5.0.4
+Provides: bundled(home-or-tmp) = 2.0.0
+Provides: bundled(hosted-git-info) = 2.4.2
+Provides: bundled(html-encoding-sniffer) = 1.0.2
+Provides: bundled(html-loader) = 0.5.5
+Provides: bundled(html-minifier) = 3.5.12
+Provides: bundled(html-minifier) = 3.5.15
+Provides: bundled(htmlparser2) = 3.3.0
+Provides: bundled(htmlparser2) = 3.9.2
+Provides: bundled(html-webpack-plugin) = 3.2.0
+Provides: bundled(http_ece) = 1.0.5
+Provides: bundled(http-errors) = 1.6.3
+Provides: bundled(http-proxy) = 1.17.0
+Provides: bundled(https-browserify) = 1.0.0
+Provides: bundled(http-signature) = 1.2.0
+Provides: bundled(https-proxy-agent) = 2.2.1
+Provides: bundled(iconv-lite) = 0.4.13
+Provides: bundled(iconv-lite) = 0.4.18
+Provides: bundled(iconv-lite) = 0.4.23
+Provides: bundled(iconv-lite) = 0.4.24
+Provides: bundled(icss-replace-symbols) = 1.1.0
+Provides: bundled(icss-utils) = 2.1.0
+Provides: bundled(ieee754) = 1.1.12
+Provides: bundled(iferr) = 0.1.5
+Provides: bundled(ignore) = 3.3.7
+Provides: bundled(ignore) = 4.0.6
+Provides: bundled(ignore-walk) = 3.0.1
+Provides: bundled(immediate) = 3.0.6
+Provides: bundled(import-local) = 1.0.0
+Provides: bundled(import-local) = 2.0.0
+Provides: bundled(imurmurhash) = 0.1.4
+Provides: bundled(indexof) = 0.0.1
+Provides: bundled(inflight) = 1.0.6
+Provides: bundled(inherits) = 2.0.1
+Provides: bundled(inherits) = 2.0.3
+Provides: bundled(ini) = 1.3.5
+Provides: bundled(inquirer) = 3.3.0
+Provides: bundled(inquirer) = 6.2.0
+Provides: bundled(interpret) = 1.1.0
+Provides: bundled(invariant) = 2.2.2
+Provides: bundled(invariant) = 2.2.3
+Provides: bundled(invariant) = 2.2.4
+Provides: bundled(invert-kv) = 1.0.0
+Provides: bundled(invert-kv) = 2.0.0
+Provides: bundled(ipaddr.js) = 1.8.0
+Provides: bundled(ip-regex) = 1.0.3
+Provides: bundled(ip-regex) = 3.0.0
+Provides: bundled(is) = 3.2.1
+Provides: bundled(is-accessor-descriptor) = 0.1.6
+Provides: bundled(is-accessor-descriptor) = 1.0.0
+Provides: bundled(isarray) = 0.0.1
+Provides: bundled(isarray) = 1.0.0
+Provides: bundled(is-arrayish) = 0.2.1
+Provides: bundled(is-arrayish) = 0.3.2
+Provides: bundled(is-binary-path) = 1.0.1
+Provides: bundled(is-buffer) = 1.1.6
+Provides: bundled(is-builtin-module) = 1.0.0
+Provides: bundled(is-callable) = 1.1.3
+Provides: bundled(is-ci) = 1.0.10
+Provides: bundled(is-data-descriptor) = 0.1.4
+Provides: bundled(is-data-descriptor) = 1.0.0
+Provides: bundled(is-date-object) = 1.0.1
+Provides: bundled(is-descriptor) = 0.1.6
+Provides: bundled(is-descriptor) = 1.0.2
+Provides: bundled(is-dotfile) = 1.0.3
+Provides: bundled(isemail) = 3.0.0
+Provides: bundled(is-equal-shallow) = 0.1.3
+Provides: bundled(isexe) = 2.0.0
+Provides: bundled(is-extendable) = 0.1.1
+Provides: bundled(is-extendable) = 1.0.1
+Provides: bundled(is-extglob) = 1.0.0
+Provides: bundled(is-extglob) = 2.1.1
+Provides: bundled(is-finite) = 1.0.2
+Provides: bundled(is-fullwidth-code-point) = 1.0.0
+Provides: bundled(is-fullwidth-code-point) = 2.0.0
+Provides: bundled(is-generator-fn) = 1.0.0
+Provides: bundled(is-glob) = 2.0.1
+Provides: bundled(is-glob) = 3.1.0
+Provides: bundled(is-glob) = 4.0.0
+Provides: bundled(is-ip) = 1.0.0
+Provides: bundled(is-number) = 2.1.0
+Provides: bundled(is-number) = 3.0.0
+Provides: bundled(is-number) = 4.0.0
+Provides: bundled(isobject) = 2.1.0
+Provides: bundled(isobject) = 3.0.1
+Provides: bundled(is-odd) = 2.0.0
+Provides: bundled(is-path-cwd) = 1.0.0
+Provides: bundled(is-path-in-cwd) = 1.0.0
+Provides: bundled(is-path-inside) = 1.0.0
+Provides: bundled(is-plain-object) = 2.0.4
+Provides: bundled(is-posix-bracket) = 0.1.1
+Provides: bundled(is-primitive) = 2.0.0
+Provides: bundled(is-promise) = 2.1.0
+Provides: bundled(is-regex) = 1.0.4
+Provides: bundled(is-resolvable) = 1.1.0
+Provides: bundled(isstream) = 0.1.2
+Provides: bundled(is-stream) = 1.1.0
+Provides: bundled(is-symbol) = 1.0.1
+Provides: bundled(istanbul-api) = 1.3.7
+Provides: bundled(istanbul-lib-coverage) = 1.2.1
+Provides: bundled(istanbul-lib-hook) = 1.2.2
+Provides: bundled(istanbul-lib-instrument) = 1.10.2
+Provides: bundled(istanbul-lib-report) = 1.1.5
+Provides: bundled(istanbul-lib-source-maps) = 1.2.6
+Provides: bundled(istanbul-reports) = 1.5.1
+Provides: bundled(is-typedarray) = 1.0.0
+Provides: bundled(is-utf8) = 0.2.1
+Provides: bundled(is-windows) = 1.0.2
+Provides: bundled(tough-cookie) = 2.3.4
+Provides: bundled(tough-cookie) = 2.4.3
+Provides: bundled(tough-cookie) = 2.5.0
+Provides: bundled(jest) = 23.6.0
+Provides: bundled(jest-changed-files) = 23.4.2
+Provides: bundled(jest-cli) = 23.6.0
+Provides: bundled(jest-config) = 23.6.0
+Provides: bundled(jest-diff) = 23.6.0
+Provides: bundled(jest-docblock) = 23.2.0
+Provides: bundled(jest-each) = 23.6.0
+Provides: bundled(jest-environment-jsdom) = 23.4.0
+Provides: bundled(jest-environment-node) = 23.4.0
+Provides: bundled(jest-get-type) = 22.4.3
+Provides: bundled(jest-haste-map) = 23.6.0
+Provides: bundled(jest-jasmine2) = 23.6.0
+Provides: bundled(jest-leak-detector) = 23.6.0
+Provides: bundled(jest-matcher-utils) = 23.6.0
+Provides: bundled(jest-message-util) = 23.4.0
+Provides: bundled(jest-mock) = 23.2.0
+Provides: bundled(jest-regex-util) = 23.3.0
+Provides: bundled(jest-resolve) = 23.6.0
+Provides: bundled(jest-resolve-dependencies) = 23.6.0
+Provides: bundled(jest-runner) = 23.6.0
+Provides: bundled(jest-runtime) = 23.6.0
+Provides: bundled(jest-serializer) = 23.0.1
+Provides: bundled(jest-snapshot) = 23.6.0
+Provides: bundled(jest-util) = 23.4.0
+Provides: bundled(jest-validate) = 23.6.0
+Provides: bundled(jest-watcher) = 23.4.0
+Provides: bundled(jest-worker) = 23.2.0
+Provides: bundled(joi) = 13.7.0
+Provides: bundled(util) = 0.10.3
+Provides: bundled(util) = 0.10.4
+Provides: bundled(jschardet) = 1.4.2
+Provides: bundled(jsdom) = 11.12.0
+Provides: bundled(jsdom) = 13.1.0
+Provides: bundled(jsesc) = 0.5.0
+Provides: bundled(jsesc) = 1.3.0
+Provides: bundled(jsesc) = 2.5.1
+Provides: bundled(json5) = 0.5.1
+Provides: bundled(json5) = 1.0.1
+Provides: bundled(json5) = 2.1.0
+Provides: bundled(jsonfile) = 5.0.0
+Provides: bundled(jsonify) = 0.0.0
+Provides: bundled(json-parse-better-errors) = 1.0.2
+Provides: bundled(json-schema) = 0.2.3
+Provides: bundled(json-schema-traverse) = 0.3.1
+Provides: bundled(json-schema-traverse) = 0.4.1
+Provides: bundled(json-stable-stringify-without-jsonify) = 1.0.1
+Provides: bundled(json-stringify-safe) = 5.0.1
+Provides: bundled(jsonwebtoken) = 8.3.0
+Provides: bundled(jsprim) = 1.4.1
+Provides: bundled(js-tokens) = 3.0.1
+Provides: bundled(js-tokens) = 3.0.2
+Provides: bundled(js-yaml) = 3.12.0
+Provides: bundled(js-yaml) = 3.8.4
+Provides: bundled(jszip) = 3.1.5
+Provides: bundled(isarray) = 0.0.1
+Provides: bundled(just-extend) = 3.0.0
+Provides: bundled(jwa) = 1.1.6
+Provides: bundled(jws) = 3.1.5
+Provides: bundled(kind-of) = 3.2.2
+Provides: bundled(kind-of) = 4.0.0
+Provides: bundled(kind-of) = 5.1.0
+Provides: bundled(kind-of) = 6.0.2
+Provides: bundled(kleur) = 2.0.2
+Provides: bundled(kuler) = 1.0.1
+Provides: bundled(lazystream) = 1.0.0
+Provides: bundled(lcid) = 1.0.0
+Provides: bundled(lcid) = 2.0.0
+Provides: bundled(le-acme-core) = 2.1.3
+Provides: bundled(le-challenge-dns) = 2.3.2
+Provides: bundled(le-challenge-fs) = 2.0.8
+Provides: bundled(left-pad) = 1.3.0
+Provides: bundled(le-sni-auto) = 2.1.5
+Provides: bundled(le-store-certbot) = 2.1.2
+Provides: bundled(leven) = 2.1.0
+Provides: bundled(levn) = 0.3.0
+Provides: bundled(lie) = 3.1.1
+Provides: bundled(loader-runner) = 2.3.0
+Provides: bundled(loader-utils) = 0.2.17
+Provides: bundled(loader-utils) = 1.1.0
+Provides: bundled(load-json-file) = 1.1.0
+Provides: bundled(load-json-file) = 4.0.0
+Provides: bundled(locate-path) = 2.0.0
+Provides: bundled(locate-path) = 3.0.0
+Provides: bundled(lodash) = 4.17.10
+Provides: bundled(lodash) = 4.17.4
+Provides: bundled(lodash) = 4.17.5
+Provides: bundled(lodash.assign) = 4.2.0
+Provides: bundled(lodash.camelcase) = 4.3.0
+Provides: bundled(lodash.debounce) = 4.0.8
+Provides: bundled(lodash.defaults) = 4.2.0
+Provides: bundled(lodash.difference) = 4.5.0
+Provides: bundled(lodash.flatten) = 4.4.0
+Provides: bundled(lodash.flattendeep) = 4.4.0
+Provides: bundled(lodash.get) = 4.4.2
+Provides: bundled(lodash.includes) = 4.3.0
+Provides: bundled(lodash.isboolean) = 3.0.3
+Provides: bundled(lodash.isinteger) = 4.0.4
+Provides: bundled(lodash.isnumber) = 3.0.3
+Provides: bundled(lodash.isplainobject) = 4.0.6
+Provides: bundled(lodash.isstring) = 4.0.1
+Provides: bundled(lodash.once) = 4.1.1
+Provides: bundled(lodash.sortby) = 4.7.0
+Provides: bundled(lodash.toarray) = 4.4.0
+Provides: bundled(lodash.union) = 4.6.0
+Provides: bundled(logform) = 1.10.0
+Provides: bundled(loglevelnext) = 1.0.5
+Provides: bundled(log-symbols) = 2.2.0
+Provides: bundled(lolex) = 2.3.2
+Provides: bundled(lolex) = 3.0.0
+Provides: bundled(loose-envify) = 1.3.1
+Provides: bundled(lower-case) = 1.1.4
+Provides: bundled(lru-cache) = 4.1.1
+Provides: bundled(lru-cache) = 4.1.3
+Provides: bundled(make-dir) = 1.3.0
+Provides: bundled(makeerror) = 1.0.11
+Provides: bundled(make-error) = 1.3.5
+Provides: bundled(map-age-cleaner) = 0.1.2
+Provides: bundled(map-cache) = 0.2.2
+Provides: bundled(map-stream) = 0.1.0
+Provides: bundled(map-visit) = 1.0.0
+Provides: bundled(md5) = 2.2.1
+Provides: bundled(md5.js) = 1.3.4
+Provides: bundled(media-typer) = 0.3.0
+Provides: bundled(mem) = 1.1.0
+Provides: bundled(mem) = 4.0.0
+Provides: bundled(memory-fs) = 0.4.1
+Provides: bundled(memorystream) = 0.3.1
+Provides: bundled(merge) = 1.2.0
+Provides: bundled(merge-descriptors) = 1.0.1
+Provides: bundled(merge-stream) = 1.0.1
+Provides: bundled(methods) = 1.1.2
+Provides: bundled(micromatch) = 2.3.11
+Provides: bundled(micromatch) = 3.1.10
+Provides: bundled(miller-rabin) = 4.0.1
+Provides: bundled(mime-db) = 1.33.0
+Provides: bundled(mime-db) = 1.36.0
+Provides: bundled(mime-db) = 1.37.0
+Provides: bundled(mime-types) = 2.1.18
+Provides: bundled(mime-types) = 2.1.20
+Provides: bundled(mimic-fn) = 1.1.0
+Provides: bundled(mini-css-extract-plugin) = 0.4.4
+Provides: bundled(minimalistic-assert) = 1.0.1
+Provides: bundled(minimalistic-crypto-utils) = 1.0.1
+Provides: bundled(minimatch) = 3.0.4
+Provides: bundled(minimist) = 0.0.8
+Provides: bundled(minimist) = 1.2.0
+Provides: bundled(minipass) = 2.3.3
+Provides: bundled(minizlib) = 1.1.0
+Provides: bundled(mississippi) = 2.0.0
+Provides: bundled(mixin-deep) = 1.3.1
+Provides: bundled(mkdirp) = 0.5.1
+Provides: bundled(mkdirp-then) = 1.2.0
+Provides: bundled(moment) = 2.22.2
+Provides: bundled(move-concurrently) = 1.0.1
+Provides: bundled(ms) = 0.7.1
+Provides: bundled(ms) = 2.0.0
+Provides: bundled(ms) = 2.1.1
+Provides: bundled(mute-stream) = 0.0.7
+Provides: bundled(mz) = 2.7.0
+Provides: bundled(nanomatch) = 1.2.9
+Provides: bundled(natural-compare) = 1.4.0
+Provides: bundled(ncname) = 1.0.0
+Provides: bundled(ncp) = 2.0.0
+Provides: bundled(needle) = 2.2.1
+Provides: bundled(needle) = 2.2.4
+Provides: bundled(negotiator) = 0.6.1
+Provides: bundled(neo-async) = 2.5.1
+Provides: bundled(next-tick) = 1.0.0
+Provides: bundled(nice-try) = 1.0.4
+Provides: bundled(nise) = 1.4.6
+Provides: bundled(nocache) = 2.0.0
+Provides: bundled(no-case) = 2.3.2
+Provides: bundled(nock) = 10.0.1
+Provides: bundled(node.extend) = 1.1.6
+Provides: bundled(node-fetch) = 2.2.0
+Provides: bundled(node-forge) = 0.6.49
+Provides: bundled(node-getopt) = 0.3.2
+Provides: bundled(node-int64) = 0.4.0
+Provides: bundled(node-libs-browser) = 2.1.0
+Provides: bundled(node-notifier) = 5.3.0
+Provides: bundled(node-pre-gyp) = 0.10.3
+Provides: bundled(node-pre-gyp) = 0.9.0
+Provides: bundled(node-rest-client) = 3.1.0
+Provides: bundled(nopt) = 4.0.1
+Provides: bundled(normalize-package-data) = 2.3.8
+Provides: bundled(normalize-path) = 2.1.1
+Provides: bundled(normalize-path) = 3.0.0
+Provides: bundled(npm-bundled) = 1.0.3
+Provides: bundled(npm-install-package) = 2.1.0
+Provides: bundled(npmlog) = 4.1.2
+Provides: bundled(npm-packlist) = 1.1.10
+Provides: bundled(npm-run-all) = 4.1.3
+Provides: bundled(npm-run-path) = 2.0.2
+Provides: bundled(nth-check) = 1.0.1
+Provides: bundled(number-is-nan) = 1.0.1
+Provides: bundled(nw-pre-gyp-module-test) = 0.0.1
+Provides: bundled(nwsapi) = 2.0.9
+Provides: bundled(oauth-sign) = 0.8.2
+Provides: bundled(oauth-sign) = 0.9.0
+Provides: bundled(object.assign) = 4.1.0
+Provides: bundled(object-assign) = 4.1.1
+Provides: bundled(object-copy) = 0.1.0
+Provides: bundled(object.getownpropertydescriptors) = 2.0.3
+Provides: bundled(object-hash) = 1.3.0
+Provides: bundled(object-keys) = 1.0.11
+Provides: bundled(object-keys) = 1.0.12
+Provides: bundled(object.omit) = 2.0.1
+Provides: bundled(object.pick) = 1.3.0
+Provides: bundled(object-visit) = 1.0.1
+Provides: bundled(once) = 1.4.0
+Provides: bundled(one-time) = 0.0.4
+Provides: bundled(onetime) = 2.0.1
+Provides: bundled(on-finished) = 2.3.0
+Provides: bundled(on-headers) = 1.0.1
+Provides: bundled(optimist) = 0.6.1
+Provides: bundled(optionator) = 0.8.2
+Provides: bundled(os-browserify) = 0.3.0
+Provides: bundled(osenv) = 0.1.5
+Provides: bundled(os-homedir) = 1.0.2
+Provides: bundled(os-locale) = 2.0.0
+Provides: bundled(os-locale) = 3.0.1
+Provides: bundled(os-tmpdir) = 1.0.2
+Provides: bundled(page) = 1.11.0
+Provides: bundled(pako) = 1.0.6
+Provides: bundled(parallel-transform) = 1.1.0
+Provides: bundled(param-case) = 2.1.1
+Provides: bundled(parse5) = 4.0.0
+Provides: bundled(parse5) = 5.1.0
+Provides: bundled(parse-asn1) = 5.1.1
+Provides: bundled(parse-glob) = 3.0.4
+Provides: bundled(parse-json) = 2.2.0
+Provides: bundled(parse-json) = 4.0.0
+Provides: bundled(parseurl) = 1.3.2
+Provides: bundled(pascalcase) = 0.1.1
+Provides: bundled(path-browserify) = 0.0.0
+Provides: bundled(path-dirname) = 1.0.2
+Provides: bundled(path-exists) = 2.1.0
+Provides: bundled(path-exists) = 3.0.0
+Provides: bundled(path-is-absolute) = 1.0.1
+Provides: bundled(path-is-inside) = 1.0.2
+Provides: bundled(path-key) = 2.0.1
+Provides: bundled(path-parse) = 1.0.5
+Provides: bundled(path-to-regexp) = 0.1.7
+Provides: bundled(path-to-regexp) = 1.2.1
+Provides: bundled(path-to-regexp) = 1.7.0
+Provides: bundled(path-type) = 1.1.0
+Provides: bundled(path-type) = 3.0.0
+Provides: bundled(pathval) = 1.1.0
+Provides: bundled(pause-stream) = 0.0.11
+Provides: bundled(pbkdf2) = 3.0.16
+Provides: bundled(p-defer) = 1.0.0
+Provides: bundled(pend) = 1.2.0
+Provides: bundled(performance-now) = 2.1.0
+Provides: bundled(p-finally) = 1.0.0
+Provides: bundled(pify) = 2.3.0
+Provides: bundled(pify) = 3.0.0
+Provides: bundled(pinkie) = 2.0.4
+Provides: bundled(pinkie-promise) = 2.0.1
+Provides: bundled(p-is-promise) = 1.1.0
+Provides: bundled(pixelmatch) = 4.0.2
+Provides: bundled(pkg-dir) = 2.0.0
+Provides: bundled(pkg-dir) = 3.0.0
+Provides: bundled(pkijs) = 1.3.33
+Provides: bundled(p-limit) = 1.2.0
+Provides: bundled(p-limit) = 1.3.0
+Provides: bundled(p-limit) = 2.0.0
+Provides: bundled(p-locate) = 2.0.0
+Provides: bundled(p-locate) = 3.0.0
+Provides: bundled(pluralize) = 7.0.0
+Provides: bundled(pn) = 1.1.0
+Provides: bundled(pngjs) = 3.3.3
+Provides: bundled(posix-character-classes) = 0.1.1
+Provides: bundled(postcss) = 6.0.21
+Provides: bundled(postcss) = 6.0.23
+Provides: bundled(postcss-modules-extract-imports) = 1.2.0
+Provides: bundled(postcss-modules-local-by-default) = 1.2.0
+Provides: bundled(postcss-modules-scope) = 1.1.0
+Provides: bundled(postcss-modules-values) = 1.3.0
+Provides: bundled(postcss-value-parser) = 3.3.0
+Provides: bundled(prelude-ls) = 1.1.2
+Provides: bundled(preserve) = 0.2.0
+Provides: bundled(pretty-error) = 2.1.1
+Provides: bundled(pretty-format) = 23.6.0
+Provides: bundled(process) = 0.11.10
+Provides: bundled(process-nextick-args) = 1.0.7
+Provides: bundled(process-nextick-args) = 2.0.0
+Provides: bundled(progress) = 2.0.0
+Provides: bundled(promise) = 7.3.1
+Provides: bundled(promise-inflight) = 1.0.1
+Provides: bundled(promisepipe) = 3.0.0
+Provides: bundled(prompts) = 0.1.14
+Provides: bundled(propagate) = 1.0.0
+Provides: bundled(proxy-addr) = 2.0.4
+Provides: bundled(prr) = 1.0.1
+Provides: bundled(pseudomap) = 1.0.2
+Provides: bundled(psl) = 1.1.29
+Provides: bundled(psl) = 1.1.31
+Provides: bundled(ps-tree) = 1.1.0
+Provides: bundled(p-try) = 1.0.0
+Provides: bundled(p-try) = 2.0.0
+Provides: bundled(public-encrypt) = 4.0.2
+Provides: bundled(pump) = 2.0.1
+Provides: bundled(pumpify) = 1.5.1
+Provides: bundled(punycode) = 1.3.2
+Provides: bundled(punycode) = 1.4.1
+Provides: bundled(punycode) = 2.1.0
+Provides: bundled(punycode) = 2.1.1
+Provides: bundled(pyconf) = 1.1.5
+Provides: bundled(q) = 1.5.1
+Provides: bundled(qs) = 6.5.1
+Provides: bundled(qs) = 6.5.2
+Provides: bundled(querystring) = 0.2.0
+Provides: bundled(querystring-es3) = 0.2.1
+Provides: bundled(randomatic) = 1.1.7
+Provides: bundled(randombytes) = 2.0.6
+Provides: bundled(randomfill) = 1.0.4
+Provides: bundled(range-parser) = 1.2.0
+Provides: bundled(raw-body) = 2.3.3
+Provides: bundled(raw-loader) = 0.5.1
+Provides: bundled(rc) = 1.2.8
+Provides: bundled(readable-stream) = 1.0.34
+Provides: bundled(readable-stream) = 1.1.14
+Provides: bundled(readable-stream) = 2.0.6
+Provides: bundled(readable-stream) = 2.3.6
+Provides: bundled(readdirp) = 2.1.0
+Provides: bundled(read-pkg) = 1.1.0
+Provides: bundled(read-pkg) = 3.0.0
+Provides: bundled(read-pkg-up) = 1.0.1
+Provides: bundled(realpath-native) = 1.0.2
+Provides: bundled(recast) = 0.11.23
+Provides: bundled(regenerate) = 1.3.3
+Provides: bundled(regenerate) = 1.4.0
+Provides: bundled(regenerate-unicode-properties) = 6.0.0
+Provides: bundled(regenerator-runtime) = 0.10.5
+Provides: bundled(regenerator-runtime) = 0.11.1
+Provides: bundled(regenerator-transform) = 0.10.1
+Provides: bundled(regex-cache) = 0.4.3
+Provides: bundled(regex-not) = 1.0.2
+Provides: bundled(regexpp) = 2.0.1
+Provides: bundled(regexpu-core) = 1.0.0
+Provides: bundled(regexpu-core) = 2.0.0
+Provides: bundled(regexpu-core) = 4.1.5
+Provides: bundled(regjsgen) = 0.2.0
+Provides: bundled(regjsgen) = 0.4.0
+Provides: bundled(regjsparser) = 0.1.5
+Provides: bundled(regjsparser) = 0.3.0
+Provides: bundled(relateurl) = 0.2.7
+Provides: bundled(remove-trailing-separator) = 1.1.0
+Provides: bundled(renderkid) = 2.0.1
+Provides: bundled(repeat-element) = 1.1.2
+Provides: bundled(repeating) = 2.0.1
+Provides: bundled(repeat-string) = 1.6.1
+Provides: bundled(request) = 2.85.0
+Provides: bundled(request) = 2.86.0
+Provides: bundled(request) = 2.88.0
+Provides: bundled(request-promise-core) = 1.1.1
+Provides: bundled(request-promise-native) = 1.0.5
+Provides: bundled(require-directory) = 2.1.1
+Provides: bundled(require-main-filename) = 1.0.1
+Provides: bundled(requires-port) = 1.0.0
+Provides: bundled(require-uncached) = 1.0.3
+Provides: bundled(resolve) = 1.1.7
+Provides: bundled(resolve) = 1.7.1
+Provides: bundled(resolve-cwd) = 2.0.0
+Provides: bundled(resolve-from) = 1.0.1
+Provides: bundled(resolve-from) = 3.0.0
+Provides: bundled(resolve-url) = 0.2.1
+Provides: bundled(restore-cursor) = 2.0.0
+Provides: bundled(ret) = 0.1.15
+Provides: bundled(rgb2hex) = 0.1.9
+Provides: bundled(rimraf) = 2.6.1
+Provides: bundled(rimraf) = 2.6.2
+Provides: bundled(ripemd160) = 2.0.2
+Provides: bundled(mime) = 1.4.1
+Provides: bundled(mime) = 1.6.0
+Provides: bundled(mime) = 2.2.0
+Provides: bundled(rsa-compat) = 1.3.2
+Provides: bundled(run-async) = 2.3.0
+Provides: bundled(run-queue) = 1.0.3
+Provides: bundled(rxjs) = 6.3.3
+Provides: bundled(rx-lite) = 4.0.8
+Provides: bundled(rx-lite-aggregates) = 4.0.8
+Provides: bundled(safe-buffer) = 5.1.2
+Provides: bundled(safer-buffer) = 2.1.2
+Provides: bundled(safe-regex) = 1.1.0
+Provides: bundled(safe-replace) = 1.0.2
+Provides: bundled(sane) = 2.2.0
+Provides: bundled(sax) = 1.2.4
+Provides: bundled(saxes) = 3.1.4
+Provides: bundled(schema-utils) = 0.4.5
+Provides: bundled(schema-utils) = 1.0.0
+Provides: bundled(selenium-standalone) = 6.15.3
+Provides: bundled(semver) = 5.3.0
+Provides: bundled(semver) = 5.5.0
+Provides: bundled(semver) = 5.6.0
+Provides: bundled(send) = 0.16.2
+Provides: bundled(serialize-javascript) = 1.5.0
+Provides: bundled(serve-static) = 1.13.2
+Provides: bundled(set-blocking) = 2.0.0
+Provides: bundled(setimmediate) = 1.0.5
+Provides: bundled(set-immediate-shim) = 1.0.1
+Provides: bundled(setprototypeof) = 1.1.0
+Provides: bundled(set-value) = 0.4.3
+Provides: bundled(set-value) = 2.0.0
+Provides: bundled(sha.js) = 2.4.11
+Provides: bundled(shaka-player) = 2.5.0-beta2
+Provides: bundled(shebang-command) = 1.2.0
+Provides: bundled(shebang-regex) = 1.0.0
+Provides: bundled(shell-quote) = 1.6.1
+Provides: bundled(shellwords) = 0.1.1
+Provides: bundled(signal-exit) = 3.0.2
+Provides: bundled(simple-oauth2) = 2.2.1
+Provides: bundled(simple-swizzle) = 0.2.2
+Provides: bundled(sinon) = 7.1.0
+Provides: bundled(sisteransi) = 0.1.1
+Provides: bundled(slash) = 1.0.0
+Provides: bundled(slice-ansi) = 1.0.0
+Provides: bundled(snapdragon) = 0.8.2
+Provides: bundled(snapdragon-node) = 2.1.1
+Provides: bundled(snapdragon-util) = 3.0.1
+Provides: bundled(sntp) = 2.1.0
+Provides: bundled(source-list-map) = 2.0.0
+Provides: bundled(source-map) = 0.1.43
+Provides: bundled(source-map) = 0.4.4
+Provides: bundled(source-map) = 0.5.6
+Provides: bundled(source-map) = 0.5.7
+Provides: bundled(source-map) = 0.6.1
+Provides: bundled(source-map-resolve) = 0.3.1
+Provides: bundled(source-map-resolve) = 0.5.2
+Provides: bundled(source-map-support) = 0.4.15
+Provides: bundled(source-map-support) = 0.5.3
+Provides: bundled(source-map-support) = 0.5.9
+Provides: bundled(source-map-url) = 0.3.0
+Provides: bundled(source-map-url) = 0.4.0
+Provides: bundled(spdx-correct) = 1.0.2
+Provides: bundled(spdx-expression-parse) = 1.0.4
+Provides: bundled(spdx-license-ids) = 1.2.2
+Provides: bundled(speaktome-api) = 0.2.1
+Provides: bundled(split) = 0.3.3
+Provides: bundled(split-string) = 3.1.0
+Provides: bundled(sprintf-js) = 1.0.3
+Provides: bundled(sshpk) = 1.14.1
+Provides: bundled(ssri) = 5.3.0
+Provides: bundled(stack-trace) = 0.0.10
+Provides: bundled(stack-utils) = 1.0.1
+Provides: bundled(static-extend) = 0.1.2
+Provides: bundled(statuses) = 1.4.0
+Provides: bundled(statuses) = 1.5.0
+Provides: bundled(stealthy-require) = 1.1.1
+Provides: bundled(stream-browserify) = 2.0.1
+Provides: bundled(stream-combiner) = 0.0.4
+Provides: bundled(stream-each) = 1.2.2
+Provides: bundled(stream-http) = 2.8.3
+Provides: bundled(streamifier) = 0.1.1
+Provides: bundled(streamsearch) = 0.1.2
+Provides: bundled(stream-shift) = 1.0.0
+Provides: bundled(string_decoder) = 0.10.31
+Provides: bundled(string_decoder) = 1.1.1
+Provides: bundled(string-format) = 2.0.0
+Provides: bundled(string-length) = 2.0.0
+Provides: bundled(string.prototype.padend) = 3.0.0
+Provides: bundled(stringstream) = 0.0.5
+Provides: bundled(string-width) = 1.0.2
+Provides: bundled(string-width) = 2.0.0
+Provides: bundled(string-width) = 2.1.1
+Provides: bundled(strip-ansi) = 3.0.1
+Provides: bundled(strip-ansi) = 4.0.0
+Provides: bundled(strip-bom) = 2.0.0
+Provides: bundled(strip-bom) = 3.0.0
+Provides: bundled(strip-eof) = 1.0.0
+Provides: bundled(strip-json-comments) = 2.0.1
+Provides: bundled(style-loader) = 0.23.1
+Provides: bundled(superagent) = 2.3.0
+Provides: bundled(supports-color) = 2.0.0
+Provides: bundled(supports-color) = 3.1.2
+Provides: bundled(supports-color) = 4.5.0
+Provides: bundled(supports-color) = 5.0.1
+Provides: bundled(supports-color) = 5.3.0
+Provides: bundled(supports-color) = 5.4.0
+Provides: bundled(supports-color) = 5.5.0
+Provides: bundled(symbol-tree) = 3.2.2
+Provides: bundled(tapable) = 1.0.0
+Provides: bundled(tapable) = 1.1.0
+Provides: bundled(tar) = 4.4.4
+Provides: bundled(tar) = 4.4.6
+Provides: bundled(tar-stream) = 1.5.5
+Provides: bundled(tar-stream) = 1.6.1
+Provides: bundled(test-exclude) = 4.2.3
+Provides: bundled(text-encoding) = 0.6.4
+Provides: bundled(text-hex) = 1.0.0
+Provides: bundled(text-table) = 0.2.0
+Provides: bundled(thenify) = 3.3.0
+Provides: bundled(thenify-all) = 1.6.0
+Provides: bundled(throat) = 4.1.0
+Provides: bundled(through2) = 2.0.3
+Provides: bundled(through) = 2.3.8
+Provides: bundled(timers-browserify) = 2.0.10
+Provides: bundled(tmp) = 0.0.31
+Provides: bundled(tmp) = 0.0.33
+Provides: bundled(tmpl) = 1.0.4
+Provides: bundled(to-arraybuffer) = 1.0.1
+Provides: bundled(to-buffer) = 1.1.1
+Provides: bundled(to-fast-properties) = 1.0.3
+Provides: bundled(to-fast-properties) = 2.0.0
+Provides: bundled(to-object-path) = 0.3.0
+Provides: bundled(topo) = 3.0.0
+Provides: bundled(toposort) = 1.0.6
+Provides: bundled(to-regex) = 3.0.2
+Provides: bundled(to-regex-range) = 2.1.1
+Provides: bundled(tr46) = 1.0.1
+Provides: bundled(trim-right) = 1.0.1
+Provides: bundled(triple-beam) = 1.3.0
+Provides: bundled(ts-jest) = 23.10.4
+Provides: bundled(tslib) = 1.9.2
+Provides: bundled(tty-browserify) = 0.0.0
+Provides: bundled(tunnel-agent) = 0.6.0
+Provides: bundled(type-check) = 0.3.2
+Provides: bundled(typedarray) = 0.0.6
+Provides: bundled(type-detect) = 4.0.3
+Provides: bundled(type-detect) = type-detect
+Provides: bundled(type-is) = 1.6.16
+Provides: bundled(typescript) = 2.9.2
+Provides: bundled(uglify-es) = 3.3.9
+Provides: bundled(uglify-js) = 3.3.16
+Provides: bundled(uglifyjs-webpack-plugin) = 1.2.6
+Provides: bundled(unicode-canonical-property-names-ecmascript) = 1.0.3
+Provides: bundled(unicode-match-property-ecmascript) = 1.0.3
+Provides: bundled(unicode-match-property-value-ecmascript) = 1.0.1
+Provides: bundled(unicode-property-aliases-ecmascript) = 1.0.3
+Provides: bundled(union-value) = 1.0.0
+Provides: bundled(unique-filename) = 1.1.0
+Provides: bundled(unique-slug) = 2.0.0
+Provides: bundled(universalify) = 0.1.2
+Provides: bundled(unpipe) = 1.0.0
+Provides: bundled(unset-value) = 1.0.0
+Provides: bundled(upath) = 1.1.0
+Provides: bundled(upper-case) = 1.1.3
+Provides: bundled(urijs) = 1.19.1
+Provides: bundled(uri-js) = 3.0.2
+Provides: bundled(uri-js) = 4.2.2
+Provides: bundled(urix) = 0.1.0
+Provides: bundled(url) = 0.11.0
+Provides: bundled(urlgrey) = 0.4.4
+Provides: bundled(url-loader) = 1.1.2
+Provides: bundled(urlsafe-base64) = 1.0.0
+Provides: bundled(use) = 3.1.0
+Provides: bundled(utila) = 0.3.3
+Provides: bundled(utila) = 0.4.0
+Provides: bundled(util-deprecate) = 1.0.2
+Provides: bundled(util.promisify) = 1.0.0
+Provides: bundled(utils-merge) = 1.0.1
+Provides: bundled(uuid) = 3.1.0
+Provides: bundled(uuid) = 3.3.2
+Provides: bundled(v8-compile-cache) = 2.0.2
+Provides: bundled(validate-npm-package-license) = 3.0.1
+Provides: bundled(vary) = 1.1.2
+Provides: bundled(verror) = 1.10.0
+Provides: bundled(vm-browserify) = 0.0.4
+Provides: bundled(w3c-hr-time) = 1.0.1
+Provides: bundled(w3c-xmlserializer) = 1.0.1
+Provides: bundled(walker) = 1.0.7
+Provides: bundled(watch) = 0.18.0
+Provides: bundled(watchpack) = 1.6.0
+Provides: bundled(wdio-dot-reporter) = 0.0.9
+Provides: bundled(webdriverio) = 4.14.0
+Provides: bundled(webidl-conversions) = 4.0.2
+Provides: bundled(webpack) = 4.23.1
+Provides: bundled(webpack-cli) = 3.1.2
+Provides: bundled(webpack-log) = 1.2.0
+Provides: bundled(webpack-sources) = 1.1.0
+Provides: bundled(webpack-sources) = 1.3.0
+Provides: bundled(web-push) = 3.3.3
+Provides: bundled(wgxpath) = 1.0.0
+Provides: bundled(whatwg-encoding) = 1.0.1
+Provides: bundled(whatwg-encoding) = 1.0.5
+Provides: bundled(whatwg-mimetype) = 2.2.0
+Provides: bundled(whatwg-mimetype) = 2.3.0
+Provides: bundled(whatwg-url) = 6.5.0
+Provides: bundled(whatwg-url) = 7.0.0
+Provides: bundled(which) = 1.2.14
+Provides: bundled(which) = 1.3.0
+Provides: bundled(which-module) = 2.0.0
+Provides: bundled(wide-align) = 1.1.3
+Provides: bundled(winston) = 3.1.0
+Provides: bundled(winston-compat) = 0.1.4
+Provides: bundled(winston-daily-rotate-file) = 3.3.5
+Provides: bundled(winston-transport) = 4.2.0
+Provides: bundled(wordwrap) = 0.0.3
+Provides: bundled(wordwrap) = 1.0.0
+Provides: bundled(worker-farm) = 1.6.0
+Provides: bundled(wrap-ansi) = 2.1.0
+Provides: bundled(wrappy) = 1.0.2
+Provides: bundled(wreck) = 14.1.0
+Provides: bundled(write) = 0.2.1
+Provides: bundled(write-file-atomic) = 2.3.0
+Provides: bundled(ws) = 5.2.0
+Provides: bundled(ws) = 6.1.0
+Provides: bundled(ws) = 6.1.2
+Provides: bundled(xml2js) = 0.4.17
+Provides: bundled(xmlbuilder) = 4.2.1
+Provides: bundled(xml-char-classes) = 1.0.0
+Provides: bundled(xmlchars) = 1.3.1
+Provides: bundled(xml-name-validator) = 3.0.0
+Provides: bundled(xregexp) = 4.0.0
+Provides: bundled(xtend) = 4.0.1
+Provides: bundled(y18n) = 3.2.1
+Provides: bundled(y18n) = 4.0.0
+Provides: bundled(yallist) = 2.1.2
+Provides: bundled(yallist) = 3.0.2
+Provides: bundled(yargs) = 11.1.0
+Provides: bundled(yargs) = 12.0.2
+Provides: bundled(yargs-parser) = 10.1.0
+Provides: bundled(yargs-parser) = 9.0.2
+Provides: bundled(yauzl) = 2.9.1
+Provides: bundled(zip-stream) = 1.2.0
+Provides: bundled(zip-stream) = 2.0.1
+
+
+%description
+Web of Things gateway
+
+Example firewall setup (as root):
+firewall-cmd --add-port=4443/tcp --permanent
+firewall-cmd --add-port=8080/tcp --permanent
+firewall-cmd --add-port=5353/udp --permanent
+firewall-cmd --reload
+
+See README.md for configuration options
+
+
+%prep
+%autosetup -n %{npm_name}-%{version}
+
+#Fixup bad shebangs
+sed -i "s|/usr/bin/python$|/usr/bin/python3|" pagekite.py
+sed -i "s|/usr/bin/env python$|/usr/bin/python3|" $(grep -rl "/usr/bin/env python$" *)
+
+# Cleanup hidden files, backup files, permissions
+find . -type f -name '.*' -delete
+find . -name '*~' -delete
+find . -name '*.tgz' -delete
+rm -rf $(find . -type d -name '.[a-z]*' | grep -v .bin)
+rm -f $(find . -size 0 | grep -e package-lock -e core-js -e awesome -e lint.log -e output$)
+find . -name '*sh' ! -executable -exec chmod ugo+x {} \;
+find . -name '*sh' ! -executable -exec chmod ugo+x {} \;
+find . -name package.json -executable -exec chmod 644 {} \;
+chmod ugo+x $(grep -lr '#!/usr/bin/env node' * | grep -v -i readme)
+
+%build
+#nothing to do
+
+
+%install
+mkdir -p %{buildroot}%{nodejs_sitelib}/%{npm_name}
+cp -pr build config global.d.ts node_modules \
+ package.json pagekite.py run-app.sh src static tools \
+ %{buildroot}%{nodejs_sitelib}/%{npm_name}
+
+# Install systemd service file
+mkdir -p %{buildroot}%{_unitdir}
+install -p -m 644 %{SOURCE3} %{buildroot}%{_unitdir}/
+
+%pre
+getent group moz-iot-gateway >/dev/null || \
+ groupadd -r moz-iot-gateway
+getent passwd moz-iot-gateway >/dev/null || \
+ useradd -r -m -g moz-iot-gateway -s /sbin/nologin \
+ -c "user that runs mozilla-iot-gateway" moz-iot-gateway
+getent group dialout | grep -q moz-iot-gateway || \
+ usermod -aG dialout moz-iot-gateway
+exit 0
+
+%post
+%systemd_post mozilla-iot-gateway.service
+
+%preun
+%systemd_preun mozilla-iot-gateway.service
+
+%postun
+%systemd_postun_with_restart mozilla-iot-gateway.service
+
+%files
+%doc README.md
+%license LICENSE
+%{nodejs_sitelib}/%{npm_name}
+%{_unitdir}/mozilla-iot-gateway.service
+
+%changelog
+* Wed Mar 06 2019 Troy Dawson <tdawson(a)redhat.com> - 0.7.0-2
+- Cleanup hidden files, backup files, permissions
+- Cleanup some empty files, but not all
+
+* Fri Feb 01 2019 Troy Dawson <tdawson(a)redhat.com> - 0.7.0-1
+- Initial build with 0.7.0
+- Bundle nodejs dependencies
+- Unbundle binary (arch dependant) modules, add Requires for these.
+- Include licenses and Provides for bundled modules
+- Create user to run service in pre
+- Fix bad shebangs
diff --git a/sources b/sources
new file mode 100644
index 0000000..f8938cb
--- /dev/null
+++ b/sources
@@ -0,0 +1 @@
+SHA512 (gateway-v0.7.0.tar.gz) = 50e51526b873f74d83a6969eb92b519cc99ed40378d94c48a5ebe8c2fe4ae04269ac2b7407ad3d9bcf1a5eb1f26e8d16b807c58c685e4d5ded168c932e02fd8f
5 years, 1 month
Architecture specific change in rpms/mozilla-iot-gateway.git
by githook-noreply@fedoraproject.org
The package rpms/mozilla-iot-gateway.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/mozilla-iot-gateway.git/commit/?i....
Change:
+ExclusiveArch: %{nodejs_arches} noarch
Thanks.
Full change:
============
commit 98c0d0ea47fafd44d15d127e19bc3fe648360984
Author: Troy Dawson <tdawson(a)redhat.com>
Date: Tue Apr 23 07:27:31 2019 -0700
Initial import (#1673125).
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..f17197a
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1 @@
+/gateway-v0.7.0.tar.gz
diff --git a/gateway-tarball.sh b/gateway-tarball.sh
new file mode 100644
index 0000000..df4b641
--- /dev/null
+++ b/gateway-tarball.sh
@@ -0,0 +1,34 @@
+#!/bin/sh
+# Setup for this script:
+# dnf install nodejs-yarn $(cat gateway-unbundle.list | while read line; do echo "nodejs-$line"; done)
+#
+#version=$(rpm -q --specfile --qf='%{version}\n' gateway.spec | head -n1)
+version=0.7.0
+## Download gateway
+wget https://github.com/mozilla-iot/gateway/archive/v$version.tar.gz
+tar zxf v$version.tar.gz
+cd gateway-$version
+## Download npm libraries
+yarnpkg --ignore-optional
+## Clean out binary modules (and deps) and link to rpm packages
+echo "Removing modules that we already have as packages "
+for module in $(cat ../gateway-unbundle.list)
+do
+ echo -n "."
+ rm -rf node_modules/$module
+ ln -s /usr/lib/node_modules/$module node_modules/
+ for line in $(find . -type d -name $module | grep node_modules/$module$)
+ do
+ if ! [ -L $line ] ; then
+ echo -n "$(echo $line | tr -cd '/' | wc -c)"
+ rm -rf $line
+ ln -s /usr/lib/node_modules/$module $line
+ fi
+ done
+done
+echo
+echo "Starting Webpack"
+PATH="/usr/lib/node_modules/npm/node_modules/npm-lifecycle/node-gyp-bin:$PWD/node_modules/.bin:/usr/lib/node_modules/.bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin"
+webpack
+cd ..
+tar cfz gateway-v$version.tar.gz gateway-$version
diff --git a/gateway-unbundle.list b/gateway-unbundle.list
new file mode 100644
index 0000000..a09c9ae
--- /dev/null
+++ b/gateway-unbundle.list
@@ -0,0 +1,4 @@
+bindings
+nan
+nanomsg
+sqlite3
diff --git a/mozilla-iot-gateway.service b/mozilla-iot-gateway.service
new file mode 100644
index 0000000..8827dfc
--- /dev/null
+++ b/mozilla-iot-gateway.service
@@ -0,0 +1,21 @@
+[Unit]
+Description=Mozilla IoT Gateway Client
+After=network.target
+OnFailure=mozilla-iot-gateway.update-rollback.service
+
+[Service]
+Type=simple
+StandardOutput=journal
+StandardError=journal
+# Edit this line, if needed, to specify what user to run Vaani as
+# If you delete this line, it will run as root
+User=moz-iot-gateway
+# Edit this line, if needed, to specify where you installed the server
+WorkingDirectory=/usr/lib/node_modules/gateway
+# Edit this line, if needed, to set the correct path to node
+ExecStart=node build/gateway.js
+Restart=always
+RestartSec=10s
+
+[Install]
+WantedBy=multi-user.target
diff --git a/mozilla-iot-gateway.spec b/mozilla-iot-gateway.spec
new file mode 100644
index 0000000..89f7971
--- /dev/null
+++ b/mozilla-iot-gateway.spec
@@ -0,0 +1,1374 @@
+%global npm_name gateway
+%global debug_package %{nil}
+%{?nodejs_find_provides_and_requires}
+
+# don't require bundled modules
+%global __requires_exclude_from ^%{_prefix}/lib/node_modules/gateway/.*$
+
+Name: mozilla-iot-gateway
+Version: 0.7.0
+Release: 2%{?dist}
+Summary: Mozilla's Web of Things gateway
+License: MPLv2.0 and ASL 2.0 AND BSD AND (BSD OR AFL 2.1) AND (BSD OR ASL 2.0 OR MIT) AND (BSD OR GPLv2) AND (BSD OR MIT) AND CC-BY 4.0 AND MPLv2.0 AND MIT AND Public Domain AND ISC AND LGPLv2.1+ AND (MIT AND BSD) AND (MIT AND CC-BY 3.0) AND (MIT AND zlib) AND (MIT OR ASL 2.0) AND (MIT OR GPLv2) AND (MIT OR GPLv3) AND Unlicense AND WTFPL AND (WTFPL OR MIT)
+URL: https://github.com/mozilla-iot/gateway
+# Source was generated by running gateway-tarball.sh,
+# with gateway-unbundle.list in the same directory.
+# This downloads the release tarball from the github repo,
+# bundles all the nodejs libraries, then unbundles the binary
+# libraries (listed in gateway-unbundle.list).
+Source0: %{npm_name}-v%{version}.tar.gz
+Source1: gateway-tarball.sh
+Source2: gateway-unbundle.list
+Source3: mozilla-iot-gateway.service
+ExclusiveArch: %{nodejs_arches} noarch
+BuildArch: noarch
+BuildRequires: nodejs-packaging
+%if 0%{?fedora} >= 30
+BuildRequires: systemd-rpm-macros
+%else
+BuildRequires: systemd
+%endif
+## Normal requires
+Requires(pre): shadow-utils
+%{?systemd_requires}
+## Requires for live-building Add-Ons
+Requires: gcc
+Requires: python3-devel
+## All the unbundled node modules - Required
+Requires: npm(bindings)
+Requires: npm(nan)
+Requires: npm(nanomsg)
+Requires: npm(sqlite3)
+## All the bundled node modules - Provides: bundled
+Provides: bundled(abab) = 2.0.0
+Provides: bundled(abbrev) = 1.1.1
+Provides: bundled(accepts) = 1.3.5
+Provides: bundled(acme) = 1.0.12
+Provides: bundled(acme-v2) = 1.0.7
+Provides: bundled(acme-v2) = 1.0.8
+Provides: bundled(acorn) = 5.7.1
+Provides: bundled(acorn) = 5.7.3
+Provides: bundled(acorn) = 6.0.2
+Provides: bundled(acorn) = 6.0.4
+Provides: bundled(acorn-dynamic-import) = 3.0.0
+Provides: bundled(acorn-globals) = 4.3.0
+Provides: bundled(acorn-jsx) = 5.0.0
+Provides: bundled(acorn-walk) = 6.1.0
+Provides: bundled(agent-base) = 4.2.1
+Provides: bundled(ajv) = 5.3.0
+Provides: bundled(ajv) = 5.5.2
+Provides: bundled(ajv) = 6.4.0
+Provides: bundled(ajv) = 6.5.1
+Provides: bundled(ajv) = 6.5.4
+Provides: bundled(ajv) = 6.6.2
+Provides: bundled(ajv-errors) = 1.0.0
+Provides: bundled(ajv-keywords) = 3.2.0
+Provides: bundled(amdefine) = 1.0.1
+Provides: bundled(ansi-escapes) = 3.0.0
+Provides: bundled(ansi-regex) = 2.1.1
+Provides: bundled(ansi-regex) = 3.0.0
+Provides: bundled(ansi-styles) = 2.2.1
+Provides: bundled(ansi-styles) = 3.2.0
+Provides: bundled(ansi-styles) = 3.2.1
+Provides: bundled(anymatch) = 1.3.0
+Provides: bundled(anymatch) = 2.0.0
+Provides: bundled(any-promise) = 1.3.0
+Provides: bundled(append-transform) = 0.4.0
+Provides: bundled(aproba) = 1.2.0
+Provides: bundled(archiver) = 2.1.1
+Provides: bundled(archiver) = 3.0.0
+Provides: bundled(archiver-utils) = 1.3.0
+Provides: bundled(archiver-utils) = 2.0.0
+Provides: bundled(are-we-there-yet) = 1.1.5
+Provides: bundled(argparse) = 1.0.9
+Provides: bundled(argv) = 0.0.2
+Provides: bundled(array-equal) = 1.0.0
+Provides: bundled(array-filter) = 0.0.1
+Provides: bundled(array-flatten) = 1.1.1
+Provides: bundled(array-from) = 2.1.1
+Provides: bundled(array-map) = 0.0.0
+Provides: bundled(array-reduce) = 0.0.0
+Provides: bundled(array-union) = 1.0.2
+Provides: bundled(array-uniq) = 1.0.3
+Provides: bundled(array-unique) = 0.2.1
+Provides: bundled(array-unique) = 0.3.2
+Provides: bundled(arr-diff) = 2.0.0
+Provides: bundled(arr-diff) = 4.0.0
+Provides: bundled(arr-flatten) = 1.0.3
+Provides: bundled(arr-flatten) = 1.1.0
+Provides: bundled(arrify) = 1.0.1
+Provides: bundled(arr-union) = 3.1.0
+Provides: bundled(asap) = 2.0.6
+Provides: bundled(asn1) = 0.2.3
+Provides: bundled(asn1js) = 1.2.12
+Provides: bundled(asn1.js) = 4.10.1
+Provides: bundled(asn1.js) = 5.0.1
+Provides: bundled(assert) = 1.4.1
+Provides: bundled(assertion-error) = 1.0.2
+Provides: bundled(assertion-error) = 1.1.0
+Provides: bundled(assert-plus) = 1.0.0
+Provides: bundled(assign-symbols) = 1.0.0
+Provides: bundled(astral-regex) = 1.0.0
+Provides: bundled(ast-types) = 0.9.6
+Provides: bundled(async) = 1.5.2
+Provides: bundled(async) = 2.5.0
+Provides: bundled(async) = 2.6.0
+Provides: bundled(async) = 2.6.1
+Provides: bundled(async-each) = 1.0.1
+Provides: bundled(asynckit) = 0.4.0
+Provides: bundled(async-limiter) = 1.0.0
+Provides: bundled(atob) = 1.1.3
+Provides: bundled(atob) = 2.1.1
+Provides: bundled(awesome-typescript-loader) = 5.2.1
+Provides: bundled(aws4) = 1.6.0
+Provides: bundled(aws4) = 1.8.0
+Provides: bundled(aws-sign2) = 0.7.0
+Provides: bundled(babel-code-frame) = 6.22.0
+Provides: bundled(babel-code-frame) = 6.26.0
+Provides: bundled(babel-core) = 6.25.0
+Provides: bundled(babel-eslint) = 10.0.1
+Provides: bundled(babel-generator) = 6.25.0
+Provides: bundled(@babel/generator) = 7.1.3
+Provides: bundled(babel-helper-builder-binary-assignment-operator-visitor) = 6.24.1
+Provides: bundled(babel-helper-call-delegate) = 6.24.1
+Provides: bundled(babel-helper-define-map) = 6.26.0
+Provides: bundled(babel-helper-explode-assignable-expression) = 6.24.1
+Provides: bundled(babel-helper-function-name) = 6.24.1
+Provides: bundled(@babel/helper-function-name) = 7.1.0
+Provides: bundled(babel-helper-get-function-arity) = 6.24.1
+Provides: bundled(@babel/helper-get-function-arity) = 7.0.0
+Provides: bundled(babel-helper-hoist-variables) = 6.24.1
+Provides: bundled(babel-helper-optimise-call-expression) = 6.24.1
+Provides: bundled(babel-helper-regex) = 6.26.0
+Provides: bundled(babel-helper-remap-async-to-generator) = 6.24.1
+Provides: bundled(babel-helper-replace-supers) = 6.24.1
+Provides: bundled(babel-helpers) = 6.24.1
+Provides: bundled(@babel/helper-split-export-declaration) = 7.0.0
+Provides: bundled(babel-jest) = 23.6.0
+Provides: bundled(babel-loader) = 8.0.0-beta.3
+Provides: bundled(babel-messages) = 6.23.0
+Provides: bundled(@babel/parser) = 7.1.3
+Provides: bundled(babel-plugin-check-es2015-constants) = 6.22.0
+Provides: bundled(babel-plugin-dynamic-import-node) = 1.2.0
+Provides: bundled(babel-plugin-istanbul) = 4.1.6
+Provides: bundled(babel-plugin-jest-hoist) = 23.2.0
+Provides: bundled(babel-plugin-syntax-async-functions) = 6.13.0
+Provides: bundled(babel-plugin-syntax-dynamic-import) = 6.18.0
+Provides: bundled(babel-plugin-syntax-exponentiation-operator) = 6.13.0
+Provides: bundled(babel-plugin-syntax-object-rest-spread) = 6.13.0
+Provides: bundled(babel-plugin-syntax-trailing-function-commas) = 6.22.0
+Provides: bundled(babel-plugin-transform-async-to-generator) = 6.24.1
+Provides: bundled(babel-plugin-transform-es2015-arrow-functions) = 6.22.0
+Provides: bundled(babel-plugin-transform-es2015-block-scoped-functions) = 6.22.0
+Provides: bundled(babel-plugin-transform-es2015-block-scoping) = 6.26.0
+Provides: bundled(babel-plugin-transform-es2015-classes) = 6.24.1
+Provides: bundled(babel-plugin-transform-es2015-computed-properties) = 6.24.1
+Provides: bundled(babel-plugin-transform-es2015-destructuring) = 6.23.0
+Provides: bundled(babel-plugin-transform-es2015-duplicate-keys) = 6.24.1
+Provides: bundled(babel-plugin-transform-es2015-for-of) = 6.23.0
+Provides: bundled(babel-plugin-transform-es2015-function-name) = 6.24.1
+Provides: bundled(babel-plugin-transform-es2015-literals) = 6.22.0
+Provides: bundled(babel-plugin-transform-es2015-modules-amd) = 6.24.1
+Provides: bundled(babel-plugin-transform-es2015-modules-commonjs) = 6.24.1
+Provides: bundled(babel-plugin-transform-es2015-modules-commonjs) = 6.26.2
+Provides: bundled(babel-plugin-transform-es2015-modules-systemjs) = 6.24.1
+Provides: bundled(babel-plugin-transform-es2015-modules-umd) = 6.24.1
+Provides: bundled(babel-plugin-transform-es2015-object-super) = 6.24.1
+Provides: bundled(babel-plugin-transform-es2015-parameters) = 6.24.1
+Provides: bundled(babel-plugin-transform-es2015-shorthand-properties) = 6.24.1
+Provides: bundled(babel-plugin-transform-es2015-spread) = 6.22.0
+Provides: bundled(babel-plugin-transform-es2015-sticky-regex) = 6.24.1
+Provides: bundled(babel-plugin-transform-es2015-template-literals) = 6.22.0
+Provides: bundled(babel-plugin-transform-es2015-typeof-symbol) = 6.23.0
+Provides: bundled(babel-plugin-transform-es2015-unicode-regex) = 6.24.1
+Provides: bundled(babel-plugin-transform-exponentiation-operator) = 6.24.1
+Provides: bundled(babel-plugin-transform-object-rest-spread) = 6.26.0
+Provides: bundled(babel-plugin-transform-regenerator) = 6.26.0
+Provides: bundled(babel-plugin-transform-strict-mode) = 6.24.1
+Provides: bundled(babel-preset-env) = 1.7.0
+Provides: bundled(babel-preset-jest) = 23.2.0
+Provides: bundled(babel-register) = 6.24.1
+Provides: bundled(babel-runtime) = 6.23.0
+Provides: bundled(babel-runtime) = 6.26.0
+Provides: bundled(babel-template) = 6.25.0
+Provides: bundled(babel-template) = 6.26.0
+Provides: bundled(@babel/template) = 7.1.2
+Provides: bundled(babel-traverse) = 6.25.0
+Provides: bundled(babel-traverse) = 6.26.0
+Provides: bundled(@babel/traverse) = 7.1.4
+Provides: bundled(babel-types) = 6.25.0
+Provides: bundled(babel-types) = 6.26.0
+Provides: bundled(@babel/types) = 7.1.3
+Provides: bundled(babylon) = 6.17.4
+Provides: bundled(babylon) = 6.18.0
+Provides: bundled(balanced-match) = 1.0.0
+Provides: bundled(base) = 0.11.2
+Provides: bundled(base64-js) = 1.3.0
+Provides: bundled(bcryptjs) = 2.4.3
+Provides: bundled(private) = 0.1.7
+Provides: bundled(private) = 0.1.8
+Provides: bundled(big.js) = 3.2.0
+Provides: bundled(binary-extensions) = 1.11.0
+Provides: bundled(bl) = 1.2.1
+Provides: bundled(bluebird) = 3.5.1
+Provides: bundled(bn.js) = 4.11.8
+Provides: bundled(body-parser) = 1.18.3
+Provides: bundled(boolbase) = 1.0.0
+Provides: bundled(boom) = 4.3.1
+Provides: bundled(boom) = 5.2.0
+Provides: bundled(boom) = 7.2.0
+Provides: bundled(brace-expansion) = 1.1.11
+Provides: bundled(braces) = 1.8.5
+Provides: bundled(braces) = 2.3.2
+Provides: bundled(brorand) = 1.1.0
+Provides: bundled(browserify-aes) = 1.2.0
+Provides: bundled(browserify-cipher) = 1.0.1
+Provides: bundled(browserify-des) = 1.0.1
+Provides: bundled(browserify-rsa) = 4.0.1
+Provides: bundled(browserify-sign) = 4.0.4
+Provides: bundled(browserify-zlib) = 0.2.0
+Provides: bundled(browser-process-hrtime) = 0.1.2
+Provides: bundled(browser-resolve) = 1.11.3
+Provides: bundled(browserslist) = 3.2.8
+Provides: bundled(bser) = 2.0.0
+Provides: bundled(bs-logger) = 0.2.5
+Provides: bundled(buffer) = 4.9.1
+Provides: bundled(buffer-alloc) = 1.2.0
+Provides: bundled(buffer-alloc-unsafe) = 1.1.0
+Provides: bundled(buffer-crc32) = 0.2.13
+Provides: bundled(buffer-equal-constant-time) = 1.0.1
+Provides: bundled(buffer-fill) = 1.0.0
+Provides: bundled(buffer-from) = 1.1.0
+Provides: bundled(buffer-from) = 1.1.1
+Provides: bundled(buffer-v6-polyfill) = 1.0.3
+Provides: bundled(buffer-xor) = 1.0.3
+Provides: bundled(builtin-modules) = 1.1.1
+Provides: bundled(builtin-status-codes) = 3.0.0
+Provides: bundled(busboy) = 0.2.14
+Provides: bundled(bytes) = 3.0.0
+Provides: bundled(cacache) = 10.0.4
+Provides: bundled(cache-base) = 1.0.1
+Provides: bundled(cache-loader) = 1.2.2
+Provides: bundled(caller-path) = 0.1.0
+Provides: bundled(callsites) = 0.2.0
+Provides: bundled(callsites) = 2.0.0
+Provides: bundled(camel-case) = 3.0.0
+Provides: bundled(camelcase) = 4.1.0
+Provides: bundled(caniuse-lite) = 1.0.30000846
+Provides: bundled(caseless) = 0.12.0
+Provides: bundled(certpem) = 1.0.1
+Provides: bundled(chai) = 4.1.2
+Provides: bundled(chai) = 4.2.0
+Provides: bundled(chai-http) = 3.0.0
+Provides: bundled(chalk) = 1.1.3
+Provides: bundled(chalk) = 2.3.0
+Provides: bundled(chalk) = 2.3.2
+Provides: bundled(chalk) = 2.4.1
+Provides: bundled(chardet) = 0.7.0
+Provides: bundled(charenc) = 0.0.2
+Provides: bundled(check-error) = 1.0.2
+Provides: bundled(chokidar) = 2.0.4
+Provides: bundled(chownr) = 1.0.1
+Provides: bundled(chrome-trace-event) = 1.0.0
+Provides: bundled(ci-info) = 1.0.0
+Provides: bundled(cipher-base) = 1.0.4
+Provides: bundled(circular-json) = 0.3.1
+Provides: bundled(class-utils) = 0.3.6
+Provides: bundled(clean-css) = 4.1.11
+Provides: bundled(clean-webpack-plugin) = 0.1.19
+Provides: bundled(cli-cursor) = 2.1.0
+Provides: bundled(cliui) = 4.0.0
+Provides: bundled(cli-width) = 2.1.0
+Provides: bundled(co) = 4.6.0
+Provides: bundled(codecov) = 3.1.0
+Provides: bundled(code-point-at) = 1.1.0
+Provides: bundled(collection-visit) = 1.0.0
+Provides: bundled(color) = 3.0.0
+Provides: bundled(color-convert) = 1.9.0
+Provides: bundled(color-convert) = 1.9.3
+Provides: bundled(color-name) = 1.1.2
+Provides: bundled(color-name) = 1.1.3
+Provides: bundled(colornames) = 1.1.1
+Provides: bundled(colors) = 1.3.2
+Provides: bundled(colorspace) = 1.1.1
+Provides: bundled(color-string) = 1.5.3
+Provides: bundled(combined-stream) = 1.0.6
+Provides: bundled(combined-stream) = 1.0.7
+Provides: bundled(commander) = 2.13.0
+Provides: bundled(commander) = 2.15.1
+Provides: bundled(commondir) = 1.0.1
+Provides: bundled(component-emitter) = 1.2.1
+Provides: bundled(compress-commons) = 1.2.2
+Provides: bundled(compressible) = 2.0.15
+Provides: bundled(compression) = 1.7.3
+Provides: bundled(concat-map) = 0.0.1
+Provides: bundled(concat-stream) = 1.6.2
+Provides: bundled(config) = 2.0.1
+Provides: bundled(console-browserify) = 1.1.0
+Provides: bundled(console-control-strings) = 1.1.0
+Provides: bundled(constants-browserify) = 1.0.0
+Provides: bundled(content-disposition) = 0.5.2
+Provides: bundled(content-type) = 1.0.4
+Provides: bundled(convert-source-map) = 1.5.0
+Provides: bundled(cookie) = 0.3.1
+Provides: bundled(cookiejar) = 2.0.6
+Provides: bundled(cookiejar) = 2.1.2
+Provides: bundled(cookie-signature) = 1.0.6
+Provides: bundled(copy-concurrently) = 1.0.5
+Provides: bundled(copy-descriptor) = 0.1.1
+Provides: bundled(copy-webpack-plugin) = 4.5.4
+Provides: bundled(core-js) = 2.3.0
+Provides: bundled(core-js) = 2.4.1
+Provides: bundled(core-util-is) = 1.0.2
+Provides: bundled(crc32-stream) = 2.0.0
+Provides: bundled(crc) = 3.5.0
+Provides: bundled(create-ecdh) = 4.0.3
+Provides: bundled(create-hash) = 1.2.0
+Provides: bundled(create-hmac) = 1.1.7
+Provides: bundled(cross-spawn) = 4.0.2
+Provides: bundled(cross-spawn) = 6.0.5
+Provides: bundled(crypt) = 0.0.2
+Provides: bundled(cryptiles) = 3.1.2
+Provides: bundled(crypto-browserify) = 3.12.0
+Provides: bundled(css) = 2.2.1
+Provides: bundled(cssesc) = 0.1.0
+Provides: bundled(css-loader) = 1.0.0
+Provides: bundled(cssom) = 0.3.2
+Provides: bundled(cssom) = 0.3.4
+Provides: bundled(css-parse) = 2.0.0
+Provides: bundled(css-select) = 1.2.0
+Provides: bundled(css-selector-tokenizer) = 0.7.0
+Provides: bundled(cssstyle) = 1.1.1
+Provides: bundled(css-value) = 0.0.1
+Provides: bundled(css-what) = 2.1.0
+Provides: bundled(cycle) = 1.0.3
+Provides: bundled(cyclist) = 0.2.2
+Provides: bundled(d) = 1.0.0
+Provides: bundled(dashdash) = 1.14.1
+Provides: bundled(data-urls) = 1.1.0
+Provides: bundled(date-fns) = 1.29.0
+Provides: bundled(date-now) = 0.1.4
+Provides: bundled(debug) = 2.2.0
+Provides: bundled(debug) = 2.6.9
+Provides: bundled(debug) = 3.1.0
+Provides: bundled(debug) = 4.1.0
+Provides: bundled(decamelize) = 1.2.0
+Provides: bundled(decamelize) = 2.0.0
+Provides: bundled(decode-uri-component) = 0.2.0
+Provides: bundled(deep) = 1.2.3
+Provides: bundled(deep-eql) = 3.0.1
+Provides: bundled(deep-equal) = 1.0.1
+Provides: bundled(deep-extend) = 0.6.0
+Provides: bundled(deep-is) = 0.1.3
+Provides: bundled(deepmerge) = 2.0.1
+Provides: bundled(default-require-extensions) = 1.0.0
+Provides: bundled(define-properties) = 1.1.2
+Provides: bundled(define-property) = 0.2.5
+Provides: bundled(define-property) = 1.0.0
+Provides: bundled(define-property) = 2.0.2
+Provides: bundled(del) = 2.2.2
+Provides: bundled(delayed-stream) = 1.0.0
+Provides: bundled(delegates) = 1.0.0
+Provides: bundled(depd) = 1.1.2
+Provides: bundled(des.js) = 1.0.0
+Provides: bundled(destroy) = 1.0.4
+Provides: bundled(detect-indent) = 4.0.0
+Provides: bundled(detect-libc) = 1.0.3
+Provides: bundled(detect-newline) = 2.1.0
+Provides: bundled(diagnostics) = 1.1.1
+Provides: bundled(dicer) = 0.2.5
+Provides: bundled(diff) = 3.2.0
+Provides: bundled(diff) = 3.5.0
+Provides: bundled(diffie-hellman) = 5.0.3
+Provides: bundled(dir-glob) = 2.0.0
+Provides: bundled(dnssd) = 0.4.1
+Provides: bundled(doctrine) = 2.1.0
+Provides: bundled(domain-browser) = 1.2.0
+Provides: bundled(dom-converter) = 0.1.4
+Provides: bundled(domelementtype) = 1.1.3
+Provides: bundled(domelementtype) = 1.3.0
+Provides: bundled(domexception) = 1.0.1
+Provides: bundled(domhandler) = 2.1.0
+Provides: bundled(domhandler) = 2.4.1
+Provides: bundled(dom-serializer) = 0.1.0
+Provides: bundled(domutils) = 1.1.6
+Provides: bundled(domutils) = 1.5.1
+Provides: bundled(domutils) = 1.6.2
+Provides: bundled(duplexer) = 0.1.1
+Provides: bundled(duplexify) = 3.6.0
+Provides: bundled(ecdsa-sig-formatter) = 1.0.10
+Provides: bundled(ee-first) = 1.1.1
+Provides: bundled(ejs) = 2.5.7
+Provides: bundled(electron-to-chromium) = 1.3.48
+Provides: bundled(elliptic) = 6.4.0
+Provides: bundled(emojis-list) = 2.1.0
+Provides: bundled(enabled) = 1.0.2
+Provides: bundled(encodeurl) = 1.0.2
+Provides: bundled(end-of-stream) = 1.4.1
+Provides: bundled(enhanced-resolve) = 4.0.0
+Provides: bundled(enhanced-resolve) = 4.1.0
+Provides: bundled(entities) = 1.1.1
+Provides: bundled(env-variable) = 0.0.5
+Provides: bundled(errno) = 0.1.7
+Provides: bundled(error-ex) = 1.3.1
+Provides: bundled(es5-ext) = 0.10.46
+Provides: bundled(es6-iterator) = 2.0.3
+Provides: bundled(es6-promise) = 3.0.2
+Provides: bundled(es6-promise) = 4.2.5
+Provides: bundled(es6-promisify) = 5.0.0
+Provides: bundled(es6-symbol) = 3.1.1
+Provides: bundled(es6-templates) = 0.2.3
+Provides: bundled(es-abstract) = 1.10.0
+Provides: bundled(es-abstract) = 1.11.0
+Provides: bundled(escape-html) = 1.0.3
+Provides: bundled(escape-string-regexp) = 1.0.5
+Provides: bundled(escodegen) = 1.11.0
+Provides: bundled(eslint) = 5.8.0
+Provides: bundled(eslint-plugin-html) = 4.0.6
+Provides: bundled(eslint-scope) = 3.7.1
+Provides: bundled(eslint-scope) = 4.0.0
+Provides: bundled(eslint-utils) = 1.3.1
+Provides: bundled(eslint-visitor-keys) = 1.0.0
+Provides: bundled(espree) = 4.1.0
+Provides: bundled(esprima) = 3.1.3
+Provides: bundled(esprima) = 4.0.0
+Provides: bundled(esquery) = 1.0.1
+Provides: bundled(esrecurse) = 4.2.1
+Provides: bundled(es-to-primitive) = 1.1.1
+Provides: bundled(estraverse) = 4.2.0
+Provides: bundled(esutils) = 2.0.2
+Provides: bundled(etag) = 1.8.1
+Provides: bundled(eventemitter3) = 3.1.0
+Provides: bundled(events) = 1.1.1
+Provides: bundled(event-stream) = 3.3.4
+Provides: bundled(event-to-promise) = 0.8.0
+Provides: bundled(evp_bytestokey) = 1.0.3
+Provides: bundled(execa) = 0.10.0
+Provides: bundled(execa) = 0.5.1
+Provides: bundled(exec-sh) = 0.2.0
+Provides: bundled(exit) = 0.1.2
+Provides: bundled(expand-brackets) = 0.1.5
+Provides: bundled(expand-brackets) = 2.1.4
+Provides: bundled(expand-range) = 1.8.2
+Provides: bundled(expect) = 23.6.0
+Provides: bundled(express) = 4.16.4
+Provides: bundled(express-fileupload) = 1.0.0
+Provides: bundled(express-handlebars) = 3.0.0
+Provides: bundled(express-promise-router) = 3.0.3
+Provides: bundled(express-ws) = 4.0.0
+Provides: bundled(extend) = 3.0.1
+Provides: bundled(extend) = 3.0.2
+Provides: bundled(extend-shallow) = 2.0.1
+Provides: bundled(extend-shallow) = 3.0.2
+Provides: bundled(external-editor) = 2.0.4
+Provides: bundled(external-editor) = 3.0.3
+Provides: bundled(extglob) = 0.3.2
+Provides: bundled(extglob) = 2.0.4
+Provides: bundled(extract-text-webpack-plugin) = 4.0.0-beta.0
+Provides: bundled(extsprintf) = 1.3.0
+Provides: bundled(extsprintf) = 1.4.0
+Provides: bundled(fast-deep-equal) = 1.1.0
+Provides: bundled(fast-deep-equal) = 2.0.1
+Provides: bundled(fast-json-stable-stringify) = 2.0.0
+Provides: bundled(fast-levenshtein) = 2.0.6
+Provides: bundled(fastparse) = 1.1.1
+Provides: bundled(fast-safe-stringify) = 2.0.6
+Provides: bundled(fb-watchman) = 2.0.0
+Provides: bundled(fd-slicer) = 1.0.1
+Provides: bundled(fecha) = 2.3.3
+Provides: bundled(figures) = 2.0.0
+Provides: bundled(file-entry-cache) = 2.0.0
+Provides: bundled(file-loader) = 2.0.0
+Provides: bundled(filename-regex) = 2.0.1
+Provides: bundled(fileset) = 2.0.3
+Provides: bundled(file-stream-rotator) = 0.4.1
+Provides: bundled(fill-range) = 2.2.3
+Provides: bundled(fill-range) = 4.0.0
+Provides: bundled(finalhandler) = 1.1.1
+Provides: bundled(find-cache-dir) = 1.0.0
+Provides: bundled(find-up) = 1.1.2
+Provides: bundled(find-up) = 2.1.0
+Provides: bundled(find-up) = 3.0.0
+Provides: bundled(flat-cache) = 1.2.2
+Provides: bundled(flush-write-stream) = 1.0.3
+Provides: bundled(follow-redirects) = 1.2.4
+Provides: bundled(follow-redirects) = 1.6.1
+Provides: bundled(foreach) = 2.0.5
+Provides: bundled(forever-agent) = 0.6.1
+Provides: bundled(for-in) = 1.0.2
+Provides: bundled(form-data) = 1.0.0-rc4
+Provides: bundled(form-data) = 2.3.2
+Provides: bundled(form-data) = 2.3.3
+Provides: bundled(formidable) = 1.2.1
+Provides: bundled(for-own) = 0.1.5
+Provides: bundled(forwarded) = 0.1.2
+Provides: bundled(fragment-cache) = 0.2.1
+Provides: bundled(fresh) = 0.5.2
+Provides: bundled(from) = 0.1.7
+Provides: bundled(from2) = 2.3.0
+Provides: bundled(fs-constants) = 1.0.0
+Provides: bundled(fs-minipass) = 1.2.5
+Provides: bundled(fs.realpath) = 1.0.0
+Provides: bundled(fs-symlink) = 1.2.1
+Provides: bundled(fs-write-stream-atomic) = 1.0.10
+Provides: bundled(functional-red-black-tree) = 1.0.1
+Provides: bundled(function-bind) = 1.1.1
+Provides: bundled(Gajus Kuizinas) = 5.1.0
+Provides: bundled(gateway-addon) = 0.4.0
+Provides: bundled(gauge) = 2.7.4
+Provides: bundled(gaze) = 1.1.2
+Provides: bundled(get-caller-file) = 1.0.2
+Provides: bundled(get-func-name) = 2.0.0
+Provides: bundled(getpass) = 0.1.7
+Provides: bundled(get-stream) = 2.3.1
+Provides: bundled(get-stream) = 3.0.0
+Provides: bundled(get-value) = 2.0.6
+Provides: bundled(glob) = 6.0.4
+Provides: bundled(glob) = 7.1.2
+Provides: bundled(global-modules-path) = 2.3.0
+Provides: bundled(globals) = 11.4.0
+Provides: bundled(globals) = 11.8.0
+Provides: bundled(globals) = 9.18.0
+Provides: bundled(glob-base) = 0.3.0
+Provides: bundled(globby) = 5.0.0
+Provides: bundled(globby) = 7.1.1
+Provides: bundled(glob-parent) = 2.0.0
+Provides: bundled(glob-parent) = 3.1.0
+Provides: bundled(globule) = 1.2.0
+Provides: bundled(graceful-fs) = 4.1.11
+Provides: bundled(grapheme-splitter) = 1.0.4
+Provides: bundled(greenlock) = 2.2.19
+Provides: bundled(growly) = 1.3.0
+Provides: bundled(handlebars) = 4.0.10
+Provides: bundled(handlebars) = 4.0.11
+Provides: bundled(handlebars) = 4.0.12
+Provides: bundled(har-schema) = 2.0.0
+Provides: bundled(har-validator) = 5.0.3
+Provides: bundled(has) = 1.0.1
+Provides: bundled(has-ansi) = 2.0.0
+Provides: bundled(has-flag) = 1.0.0
+Provides: bundled(has-flag) = 2.0.0
+Provides: bundled(has-flag) = 3.0.0
+Provides: bundled(hash-base) = 3.0.4
+Provides: bundled(hash.js) = 1.1.4
+Provides: bundled(has-symbols) = 1.0.0
+Provides: bundled(has-unicode) = 2.0.1
+Provides: bundled(has-value) = 0.3.1
+Provides: bundled(has-value) = 1.0.0
+Provides: bundled(has-values) = 0.1.4
+Provides: bundled(has-values) = 1.0.0
+Provides: bundled(hawk) = 6.0.2
+Provides: bundled(he) = 1.1.1
+Provides: bundled(highlightjs) = 9.12.0
+Provides: bundled(hmac-drbg) = 1.0.1
+Provides: bundled(hoek) = 4.2.0
+Provides: bundled(hoek) = 5.0.4
+Provides: bundled(home-or-tmp) = 2.0.0
+Provides: bundled(hosted-git-info) = 2.4.2
+Provides: bundled(html-encoding-sniffer) = 1.0.2
+Provides: bundled(html-loader) = 0.5.5
+Provides: bundled(html-minifier) = 3.5.12
+Provides: bundled(html-minifier) = 3.5.15
+Provides: bundled(htmlparser2) = 3.3.0
+Provides: bundled(htmlparser2) = 3.9.2
+Provides: bundled(html-webpack-plugin) = 3.2.0
+Provides: bundled(http_ece) = 1.0.5
+Provides: bundled(http-errors) = 1.6.3
+Provides: bundled(http-proxy) = 1.17.0
+Provides: bundled(https-browserify) = 1.0.0
+Provides: bundled(http-signature) = 1.2.0
+Provides: bundled(https-proxy-agent) = 2.2.1
+Provides: bundled(iconv-lite) = 0.4.13
+Provides: bundled(iconv-lite) = 0.4.18
+Provides: bundled(iconv-lite) = 0.4.23
+Provides: bundled(iconv-lite) = 0.4.24
+Provides: bundled(icss-replace-symbols) = 1.1.0
+Provides: bundled(icss-utils) = 2.1.0
+Provides: bundled(ieee754) = 1.1.12
+Provides: bundled(iferr) = 0.1.5
+Provides: bundled(ignore) = 3.3.7
+Provides: bundled(ignore) = 4.0.6
+Provides: bundled(ignore-walk) = 3.0.1
+Provides: bundled(immediate) = 3.0.6
+Provides: bundled(import-local) = 1.0.0
+Provides: bundled(import-local) = 2.0.0
+Provides: bundled(imurmurhash) = 0.1.4
+Provides: bundled(indexof) = 0.0.1
+Provides: bundled(inflight) = 1.0.6
+Provides: bundled(inherits) = 2.0.1
+Provides: bundled(inherits) = 2.0.3
+Provides: bundled(ini) = 1.3.5
+Provides: bundled(inquirer) = 3.3.0
+Provides: bundled(inquirer) = 6.2.0
+Provides: bundled(interpret) = 1.1.0
+Provides: bundled(invariant) = 2.2.2
+Provides: bundled(invariant) = 2.2.3
+Provides: bundled(invariant) = 2.2.4
+Provides: bundled(invert-kv) = 1.0.0
+Provides: bundled(invert-kv) = 2.0.0
+Provides: bundled(ipaddr.js) = 1.8.0
+Provides: bundled(ip-regex) = 1.0.3
+Provides: bundled(ip-regex) = 3.0.0
+Provides: bundled(is) = 3.2.1
+Provides: bundled(is-accessor-descriptor) = 0.1.6
+Provides: bundled(is-accessor-descriptor) = 1.0.0
+Provides: bundled(isarray) = 0.0.1
+Provides: bundled(isarray) = 1.0.0
+Provides: bundled(is-arrayish) = 0.2.1
+Provides: bundled(is-arrayish) = 0.3.2
+Provides: bundled(is-binary-path) = 1.0.1
+Provides: bundled(is-buffer) = 1.1.6
+Provides: bundled(is-builtin-module) = 1.0.0
+Provides: bundled(is-callable) = 1.1.3
+Provides: bundled(is-ci) = 1.0.10
+Provides: bundled(is-data-descriptor) = 0.1.4
+Provides: bundled(is-data-descriptor) = 1.0.0
+Provides: bundled(is-date-object) = 1.0.1
+Provides: bundled(is-descriptor) = 0.1.6
+Provides: bundled(is-descriptor) = 1.0.2
+Provides: bundled(is-dotfile) = 1.0.3
+Provides: bundled(isemail) = 3.0.0
+Provides: bundled(is-equal-shallow) = 0.1.3
+Provides: bundled(isexe) = 2.0.0
+Provides: bundled(is-extendable) = 0.1.1
+Provides: bundled(is-extendable) = 1.0.1
+Provides: bundled(is-extglob) = 1.0.0
+Provides: bundled(is-extglob) = 2.1.1
+Provides: bundled(is-finite) = 1.0.2
+Provides: bundled(is-fullwidth-code-point) = 1.0.0
+Provides: bundled(is-fullwidth-code-point) = 2.0.0
+Provides: bundled(is-generator-fn) = 1.0.0
+Provides: bundled(is-glob) = 2.0.1
+Provides: bundled(is-glob) = 3.1.0
+Provides: bundled(is-glob) = 4.0.0
+Provides: bundled(is-ip) = 1.0.0
+Provides: bundled(is-number) = 2.1.0
+Provides: bundled(is-number) = 3.0.0
+Provides: bundled(is-number) = 4.0.0
+Provides: bundled(isobject) = 2.1.0
+Provides: bundled(isobject) = 3.0.1
+Provides: bundled(is-odd) = 2.0.0
+Provides: bundled(is-path-cwd) = 1.0.0
+Provides: bundled(is-path-in-cwd) = 1.0.0
+Provides: bundled(is-path-inside) = 1.0.0
+Provides: bundled(is-plain-object) = 2.0.4
+Provides: bundled(is-posix-bracket) = 0.1.1
+Provides: bundled(is-primitive) = 2.0.0
+Provides: bundled(is-promise) = 2.1.0
+Provides: bundled(is-regex) = 1.0.4
+Provides: bundled(is-resolvable) = 1.1.0
+Provides: bundled(isstream) = 0.1.2
+Provides: bundled(is-stream) = 1.1.0
+Provides: bundled(is-symbol) = 1.0.1
+Provides: bundled(istanbul-api) = 1.3.7
+Provides: bundled(istanbul-lib-coverage) = 1.2.1
+Provides: bundled(istanbul-lib-hook) = 1.2.2
+Provides: bundled(istanbul-lib-instrument) = 1.10.2
+Provides: bundled(istanbul-lib-report) = 1.1.5
+Provides: bundled(istanbul-lib-source-maps) = 1.2.6
+Provides: bundled(istanbul-reports) = 1.5.1
+Provides: bundled(is-typedarray) = 1.0.0
+Provides: bundled(is-utf8) = 0.2.1
+Provides: bundled(is-windows) = 1.0.2
+Provides: bundled(tough-cookie) = 2.3.4
+Provides: bundled(tough-cookie) = 2.4.3
+Provides: bundled(tough-cookie) = 2.5.0
+Provides: bundled(jest) = 23.6.0
+Provides: bundled(jest-changed-files) = 23.4.2
+Provides: bundled(jest-cli) = 23.6.0
+Provides: bundled(jest-config) = 23.6.0
+Provides: bundled(jest-diff) = 23.6.0
+Provides: bundled(jest-docblock) = 23.2.0
+Provides: bundled(jest-each) = 23.6.0
+Provides: bundled(jest-environment-jsdom) = 23.4.0
+Provides: bundled(jest-environment-node) = 23.4.0
+Provides: bundled(jest-get-type) = 22.4.3
+Provides: bundled(jest-haste-map) = 23.6.0
+Provides: bundled(jest-jasmine2) = 23.6.0
+Provides: bundled(jest-leak-detector) = 23.6.0
+Provides: bundled(jest-matcher-utils) = 23.6.0
+Provides: bundled(jest-message-util) = 23.4.0
+Provides: bundled(jest-mock) = 23.2.0
+Provides: bundled(jest-regex-util) = 23.3.0
+Provides: bundled(jest-resolve) = 23.6.0
+Provides: bundled(jest-resolve-dependencies) = 23.6.0
+Provides: bundled(jest-runner) = 23.6.0
+Provides: bundled(jest-runtime) = 23.6.0
+Provides: bundled(jest-serializer) = 23.0.1
+Provides: bundled(jest-snapshot) = 23.6.0
+Provides: bundled(jest-util) = 23.4.0
+Provides: bundled(jest-validate) = 23.6.0
+Provides: bundled(jest-watcher) = 23.4.0
+Provides: bundled(jest-worker) = 23.2.0
+Provides: bundled(joi) = 13.7.0
+Provides: bundled(util) = 0.10.3
+Provides: bundled(util) = 0.10.4
+Provides: bundled(jschardet) = 1.4.2
+Provides: bundled(jsdom) = 11.12.0
+Provides: bundled(jsdom) = 13.1.0
+Provides: bundled(jsesc) = 0.5.0
+Provides: bundled(jsesc) = 1.3.0
+Provides: bundled(jsesc) = 2.5.1
+Provides: bundled(json5) = 0.5.1
+Provides: bundled(json5) = 1.0.1
+Provides: bundled(json5) = 2.1.0
+Provides: bundled(jsonfile) = 5.0.0
+Provides: bundled(jsonify) = 0.0.0
+Provides: bundled(json-parse-better-errors) = 1.0.2
+Provides: bundled(json-schema) = 0.2.3
+Provides: bundled(json-schema-traverse) = 0.3.1
+Provides: bundled(json-schema-traverse) = 0.4.1
+Provides: bundled(json-stable-stringify-without-jsonify) = 1.0.1
+Provides: bundled(json-stringify-safe) = 5.0.1
+Provides: bundled(jsonwebtoken) = 8.3.0
+Provides: bundled(jsprim) = 1.4.1
+Provides: bundled(js-tokens) = 3.0.1
+Provides: bundled(js-tokens) = 3.0.2
+Provides: bundled(js-yaml) = 3.12.0
+Provides: bundled(js-yaml) = 3.8.4
+Provides: bundled(jszip) = 3.1.5
+Provides: bundled(isarray) = 0.0.1
+Provides: bundled(just-extend) = 3.0.0
+Provides: bundled(jwa) = 1.1.6
+Provides: bundled(jws) = 3.1.5
+Provides: bundled(kind-of) = 3.2.2
+Provides: bundled(kind-of) = 4.0.0
+Provides: bundled(kind-of) = 5.1.0
+Provides: bundled(kind-of) = 6.0.2
+Provides: bundled(kleur) = 2.0.2
+Provides: bundled(kuler) = 1.0.1
+Provides: bundled(lazystream) = 1.0.0
+Provides: bundled(lcid) = 1.0.0
+Provides: bundled(lcid) = 2.0.0
+Provides: bundled(le-acme-core) = 2.1.3
+Provides: bundled(le-challenge-dns) = 2.3.2
+Provides: bundled(le-challenge-fs) = 2.0.8
+Provides: bundled(left-pad) = 1.3.0
+Provides: bundled(le-sni-auto) = 2.1.5
+Provides: bundled(le-store-certbot) = 2.1.2
+Provides: bundled(leven) = 2.1.0
+Provides: bundled(levn) = 0.3.0
+Provides: bundled(lie) = 3.1.1
+Provides: bundled(loader-runner) = 2.3.0
+Provides: bundled(loader-utils) = 0.2.17
+Provides: bundled(loader-utils) = 1.1.0
+Provides: bundled(load-json-file) = 1.1.0
+Provides: bundled(load-json-file) = 4.0.0
+Provides: bundled(locate-path) = 2.0.0
+Provides: bundled(locate-path) = 3.0.0
+Provides: bundled(lodash) = 4.17.10
+Provides: bundled(lodash) = 4.17.4
+Provides: bundled(lodash) = 4.17.5
+Provides: bundled(lodash.assign) = 4.2.0
+Provides: bundled(lodash.camelcase) = 4.3.0
+Provides: bundled(lodash.debounce) = 4.0.8
+Provides: bundled(lodash.defaults) = 4.2.0
+Provides: bundled(lodash.difference) = 4.5.0
+Provides: bundled(lodash.flatten) = 4.4.0
+Provides: bundled(lodash.flattendeep) = 4.4.0
+Provides: bundled(lodash.get) = 4.4.2
+Provides: bundled(lodash.includes) = 4.3.0
+Provides: bundled(lodash.isboolean) = 3.0.3
+Provides: bundled(lodash.isinteger) = 4.0.4
+Provides: bundled(lodash.isnumber) = 3.0.3
+Provides: bundled(lodash.isplainobject) = 4.0.6
+Provides: bundled(lodash.isstring) = 4.0.1
+Provides: bundled(lodash.once) = 4.1.1
+Provides: bundled(lodash.sortby) = 4.7.0
+Provides: bundled(lodash.toarray) = 4.4.0
+Provides: bundled(lodash.union) = 4.6.0
+Provides: bundled(logform) = 1.10.0
+Provides: bundled(loglevelnext) = 1.0.5
+Provides: bundled(log-symbols) = 2.2.0
+Provides: bundled(lolex) = 2.3.2
+Provides: bundled(lolex) = 3.0.0
+Provides: bundled(loose-envify) = 1.3.1
+Provides: bundled(lower-case) = 1.1.4
+Provides: bundled(lru-cache) = 4.1.1
+Provides: bundled(lru-cache) = 4.1.3
+Provides: bundled(make-dir) = 1.3.0
+Provides: bundled(makeerror) = 1.0.11
+Provides: bundled(make-error) = 1.3.5
+Provides: bundled(map-age-cleaner) = 0.1.2
+Provides: bundled(map-cache) = 0.2.2
+Provides: bundled(map-stream) = 0.1.0
+Provides: bundled(map-visit) = 1.0.0
+Provides: bundled(md5) = 2.2.1
+Provides: bundled(md5.js) = 1.3.4
+Provides: bundled(media-typer) = 0.3.0
+Provides: bundled(mem) = 1.1.0
+Provides: bundled(mem) = 4.0.0
+Provides: bundled(memory-fs) = 0.4.1
+Provides: bundled(memorystream) = 0.3.1
+Provides: bundled(merge) = 1.2.0
+Provides: bundled(merge-descriptors) = 1.0.1
+Provides: bundled(merge-stream) = 1.0.1
+Provides: bundled(methods) = 1.1.2
+Provides: bundled(micromatch) = 2.3.11
+Provides: bundled(micromatch) = 3.1.10
+Provides: bundled(miller-rabin) = 4.0.1
+Provides: bundled(mime-db) = 1.33.0
+Provides: bundled(mime-db) = 1.36.0
+Provides: bundled(mime-db) = 1.37.0
+Provides: bundled(mime-types) = 2.1.18
+Provides: bundled(mime-types) = 2.1.20
+Provides: bundled(mimic-fn) = 1.1.0
+Provides: bundled(mini-css-extract-plugin) = 0.4.4
+Provides: bundled(minimalistic-assert) = 1.0.1
+Provides: bundled(minimalistic-crypto-utils) = 1.0.1
+Provides: bundled(minimatch) = 3.0.4
+Provides: bundled(minimist) = 0.0.8
+Provides: bundled(minimist) = 1.2.0
+Provides: bundled(minipass) = 2.3.3
+Provides: bundled(minizlib) = 1.1.0
+Provides: bundled(mississippi) = 2.0.0
+Provides: bundled(mixin-deep) = 1.3.1
+Provides: bundled(mkdirp) = 0.5.1
+Provides: bundled(mkdirp-then) = 1.2.0
+Provides: bundled(moment) = 2.22.2
+Provides: bundled(move-concurrently) = 1.0.1
+Provides: bundled(ms) = 0.7.1
+Provides: bundled(ms) = 2.0.0
+Provides: bundled(ms) = 2.1.1
+Provides: bundled(mute-stream) = 0.0.7
+Provides: bundled(mz) = 2.7.0
+Provides: bundled(nanomatch) = 1.2.9
+Provides: bundled(natural-compare) = 1.4.0
+Provides: bundled(ncname) = 1.0.0
+Provides: bundled(ncp) = 2.0.0
+Provides: bundled(needle) = 2.2.1
+Provides: bundled(needle) = 2.2.4
+Provides: bundled(negotiator) = 0.6.1
+Provides: bundled(neo-async) = 2.5.1
+Provides: bundled(next-tick) = 1.0.0
+Provides: bundled(nice-try) = 1.0.4
+Provides: bundled(nise) = 1.4.6
+Provides: bundled(nocache) = 2.0.0
+Provides: bundled(no-case) = 2.3.2
+Provides: bundled(nock) = 10.0.1
+Provides: bundled(node.extend) = 1.1.6
+Provides: bundled(node-fetch) = 2.2.0
+Provides: bundled(node-forge) = 0.6.49
+Provides: bundled(node-getopt) = 0.3.2
+Provides: bundled(node-int64) = 0.4.0
+Provides: bundled(node-libs-browser) = 2.1.0
+Provides: bundled(node-notifier) = 5.3.0
+Provides: bundled(node-pre-gyp) = 0.10.3
+Provides: bundled(node-pre-gyp) = 0.9.0
+Provides: bundled(node-rest-client) = 3.1.0
+Provides: bundled(nopt) = 4.0.1
+Provides: bundled(normalize-package-data) = 2.3.8
+Provides: bundled(normalize-path) = 2.1.1
+Provides: bundled(normalize-path) = 3.0.0
+Provides: bundled(npm-bundled) = 1.0.3
+Provides: bundled(npm-install-package) = 2.1.0
+Provides: bundled(npmlog) = 4.1.2
+Provides: bundled(npm-packlist) = 1.1.10
+Provides: bundled(npm-run-all) = 4.1.3
+Provides: bundled(npm-run-path) = 2.0.2
+Provides: bundled(nth-check) = 1.0.1
+Provides: bundled(number-is-nan) = 1.0.1
+Provides: bundled(nw-pre-gyp-module-test) = 0.0.1
+Provides: bundled(nwsapi) = 2.0.9
+Provides: bundled(oauth-sign) = 0.8.2
+Provides: bundled(oauth-sign) = 0.9.0
+Provides: bundled(object.assign) = 4.1.0
+Provides: bundled(object-assign) = 4.1.1
+Provides: bundled(object-copy) = 0.1.0
+Provides: bundled(object.getownpropertydescriptors) = 2.0.3
+Provides: bundled(object-hash) = 1.3.0
+Provides: bundled(object-keys) = 1.0.11
+Provides: bundled(object-keys) = 1.0.12
+Provides: bundled(object.omit) = 2.0.1
+Provides: bundled(object.pick) = 1.3.0
+Provides: bundled(object-visit) = 1.0.1
+Provides: bundled(once) = 1.4.0
+Provides: bundled(one-time) = 0.0.4
+Provides: bundled(onetime) = 2.0.1
+Provides: bundled(on-finished) = 2.3.0
+Provides: bundled(on-headers) = 1.0.1
+Provides: bundled(optimist) = 0.6.1
+Provides: bundled(optionator) = 0.8.2
+Provides: bundled(os-browserify) = 0.3.0
+Provides: bundled(osenv) = 0.1.5
+Provides: bundled(os-homedir) = 1.0.2
+Provides: bundled(os-locale) = 2.0.0
+Provides: bundled(os-locale) = 3.0.1
+Provides: bundled(os-tmpdir) = 1.0.2
+Provides: bundled(page) = 1.11.0
+Provides: bundled(pako) = 1.0.6
+Provides: bundled(parallel-transform) = 1.1.0
+Provides: bundled(param-case) = 2.1.1
+Provides: bundled(parse5) = 4.0.0
+Provides: bundled(parse5) = 5.1.0
+Provides: bundled(parse-asn1) = 5.1.1
+Provides: bundled(parse-glob) = 3.0.4
+Provides: bundled(parse-json) = 2.2.0
+Provides: bundled(parse-json) = 4.0.0
+Provides: bundled(parseurl) = 1.3.2
+Provides: bundled(pascalcase) = 0.1.1
+Provides: bundled(path-browserify) = 0.0.0
+Provides: bundled(path-dirname) = 1.0.2
+Provides: bundled(path-exists) = 2.1.0
+Provides: bundled(path-exists) = 3.0.0
+Provides: bundled(path-is-absolute) = 1.0.1
+Provides: bundled(path-is-inside) = 1.0.2
+Provides: bundled(path-key) = 2.0.1
+Provides: bundled(path-parse) = 1.0.5
+Provides: bundled(path-to-regexp) = 0.1.7
+Provides: bundled(path-to-regexp) = 1.2.1
+Provides: bundled(path-to-regexp) = 1.7.0
+Provides: bundled(path-type) = 1.1.0
+Provides: bundled(path-type) = 3.0.0
+Provides: bundled(pathval) = 1.1.0
+Provides: bundled(pause-stream) = 0.0.11
+Provides: bundled(pbkdf2) = 3.0.16
+Provides: bundled(p-defer) = 1.0.0
+Provides: bundled(pend) = 1.2.0
+Provides: bundled(performance-now) = 2.1.0
+Provides: bundled(p-finally) = 1.0.0
+Provides: bundled(pify) = 2.3.0
+Provides: bundled(pify) = 3.0.0
+Provides: bundled(pinkie) = 2.0.4
+Provides: bundled(pinkie-promise) = 2.0.1
+Provides: bundled(p-is-promise) = 1.1.0
+Provides: bundled(pixelmatch) = 4.0.2
+Provides: bundled(pkg-dir) = 2.0.0
+Provides: bundled(pkg-dir) = 3.0.0
+Provides: bundled(pkijs) = 1.3.33
+Provides: bundled(p-limit) = 1.2.0
+Provides: bundled(p-limit) = 1.3.0
+Provides: bundled(p-limit) = 2.0.0
+Provides: bundled(p-locate) = 2.0.0
+Provides: bundled(p-locate) = 3.0.0
+Provides: bundled(pluralize) = 7.0.0
+Provides: bundled(pn) = 1.1.0
+Provides: bundled(pngjs) = 3.3.3
+Provides: bundled(posix-character-classes) = 0.1.1
+Provides: bundled(postcss) = 6.0.21
+Provides: bundled(postcss) = 6.0.23
+Provides: bundled(postcss-modules-extract-imports) = 1.2.0
+Provides: bundled(postcss-modules-local-by-default) = 1.2.0
+Provides: bundled(postcss-modules-scope) = 1.1.0
+Provides: bundled(postcss-modules-values) = 1.3.0
+Provides: bundled(postcss-value-parser) = 3.3.0
+Provides: bundled(prelude-ls) = 1.1.2
+Provides: bundled(preserve) = 0.2.0
+Provides: bundled(pretty-error) = 2.1.1
+Provides: bundled(pretty-format) = 23.6.0
+Provides: bundled(process) = 0.11.10
+Provides: bundled(process-nextick-args) = 1.0.7
+Provides: bundled(process-nextick-args) = 2.0.0
+Provides: bundled(progress) = 2.0.0
+Provides: bundled(promise) = 7.3.1
+Provides: bundled(promise-inflight) = 1.0.1
+Provides: bundled(promisepipe) = 3.0.0
+Provides: bundled(prompts) = 0.1.14
+Provides: bundled(propagate) = 1.0.0
+Provides: bundled(proxy-addr) = 2.0.4
+Provides: bundled(prr) = 1.0.1
+Provides: bundled(pseudomap) = 1.0.2
+Provides: bundled(psl) = 1.1.29
+Provides: bundled(psl) = 1.1.31
+Provides: bundled(ps-tree) = 1.1.0
+Provides: bundled(p-try) = 1.0.0
+Provides: bundled(p-try) = 2.0.0
+Provides: bundled(public-encrypt) = 4.0.2
+Provides: bundled(pump) = 2.0.1
+Provides: bundled(pumpify) = 1.5.1
+Provides: bundled(punycode) = 1.3.2
+Provides: bundled(punycode) = 1.4.1
+Provides: bundled(punycode) = 2.1.0
+Provides: bundled(punycode) = 2.1.1
+Provides: bundled(pyconf) = 1.1.5
+Provides: bundled(q) = 1.5.1
+Provides: bundled(qs) = 6.5.1
+Provides: bundled(qs) = 6.5.2
+Provides: bundled(querystring) = 0.2.0
+Provides: bundled(querystring-es3) = 0.2.1
+Provides: bundled(randomatic) = 1.1.7
+Provides: bundled(randombytes) = 2.0.6
+Provides: bundled(randomfill) = 1.0.4
+Provides: bundled(range-parser) = 1.2.0
+Provides: bundled(raw-body) = 2.3.3
+Provides: bundled(raw-loader) = 0.5.1
+Provides: bundled(rc) = 1.2.8
+Provides: bundled(readable-stream) = 1.0.34
+Provides: bundled(readable-stream) = 1.1.14
+Provides: bundled(readable-stream) = 2.0.6
+Provides: bundled(readable-stream) = 2.3.6
+Provides: bundled(readdirp) = 2.1.0
+Provides: bundled(read-pkg) = 1.1.0
+Provides: bundled(read-pkg) = 3.0.0
+Provides: bundled(read-pkg-up) = 1.0.1
+Provides: bundled(realpath-native) = 1.0.2
+Provides: bundled(recast) = 0.11.23
+Provides: bundled(regenerate) = 1.3.3
+Provides: bundled(regenerate) = 1.4.0
+Provides: bundled(regenerate-unicode-properties) = 6.0.0
+Provides: bundled(regenerator-runtime) = 0.10.5
+Provides: bundled(regenerator-runtime) = 0.11.1
+Provides: bundled(regenerator-transform) = 0.10.1
+Provides: bundled(regex-cache) = 0.4.3
+Provides: bundled(regex-not) = 1.0.2
+Provides: bundled(regexpp) = 2.0.1
+Provides: bundled(regexpu-core) = 1.0.0
+Provides: bundled(regexpu-core) = 2.0.0
+Provides: bundled(regexpu-core) = 4.1.5
+Provides: bundled(regjsgen) = 0.2.0
+Provides: bundled(regjsgen) = 0.4.0
+Provides: bundled(regjsparser) = 0.1.5
+Provides: bundled(regjsparser) = 0.3.0
+Provides: bundled(relateurl) = 0.2.7
+Provides: bundled(remove-trailing-separator) = 1.1.0
+Provides: bundled(renderkid) = 2.0.1
+Provides: bundled(repeat-element) = 1.1.2
+Provides: bundled(repeating) = 2.0.1
+Provides: bundled(repeat-string) = 1.6.1
+Provides: bundled(request) = 2.85.0
+Provides: bundled(request) = 2.86.0
+Provides: bundled(request) = 2.88.0
+Provides: bundled(request-promise-core) = 1.1.1
+Provides: bundled(request-promise-native) = 1.0.5
+Provides: bundled(require-directory) = 2.1.1
+Provides: bundled(require-main-filename) = 1.0.1
+Provides: bundled(requires-port) = 1.0.0
+Provides: bundled(require-uncached) = 1.0.3
+Provides: bundled(resolve) = 1.1.7
+Provides: bundled(resolve) = 1.7.1
+Provides: bundled(resolve-cwd) = 2.0.0
+Provides: bundled(resolve-from) = 1.0.1
+Provides: bundled(resolve-from) = 3.0.0
+Provides: bundled(resolve-url) = 0.2.1
+Provides: bundled(restore-cursor) = 2.0.0
+Provides: bundled(ret) = 0.1.15
+Provides: bundled(rgb2hex) = 0.1.9
+Provides: bundled(rimraf) = 2.6.1
+Provides: bundled(rimraf) = 2.6.2
+Provides: bundled(ripemd160) = 2.0.2
+Provides: bundled(mime) = 1.4.1
+Provides: bundled(mime) = 1.6.0
+Provides: bundled(mime) = 2.2.0
+Provides: bundled(rsa-compat) = 1.3.2
+Provides: bundled(run-async) = 2.3.0
+Provides: bundled(run-queue) = 1.0.3
+Provides: bundled(rxjs) = 6.3.3
+Provides: bundled(rx-lite) = 4.0.8
+Provides: bundled(rx-lite-aggregates) = 4.0.8
+Provides: bundled(safe-buffer) = 5.1.2
+Provides: bundled(safer-buffer) = 2.1.2
+Provides: bundled(safe-regex) = 1.1.0
+Provides: bundled(safe-replace) = 1.0.2
+Provides: bundled(sane) = 2.2.0
+Provides: bundled(sax) = 1.2.4
+Provides: bundled(saxes) = 3.1.4
+Provides: bundled(schema-utils) = 0.4.5
+Provides: bundled(schema-utils) = 1.0.0
+Provides: bundled(selenium-standalone) = 6.15.3
+Provides: bundled(semver) = 5.3.0
+Provides: bundled(semver) = 5.5.0
+Provides: bundled(semver) = 5.6.0
+Provides: bundled(send) = 0.16.2
+Provides: bundled(serialize-javascript) = 1.5.0
+Provides: bundled(serve-static) = 1.13.2
+Provides: bundled(set-blocking) = 2.0.0
+Provides: bundled(setimmediate) = 1.0.5
+Provides: bundled(set-immediate-shim) = 1.0.1
+Provides: bundled(setprototypeof) = 1.1.0
+Provides: bundled(set-value) = 0.4.3
+Provides: bundled(set-value) = 2.0.0
+Provides: bundled(sha.js) = 2.4.11
+Provides: bundled(shaka-player) = 2.5.0-beta2
+Provides: bundled(shebang-command) = 1.2.0
+Provides: bundled(shebang-regex) = 1.0.0
+Provides: bundled(shell-quote) = 1.6.1
+Provides: bundled(shellwords) = 0.1.1
+Provides: bundled(signal-exit) = 3.0.2
+Provides: bundled(simple-oauth2) = 2.2.1
+Provides: bundled(simple-swizzle) = 0.2.2
+Provides: bundled(sinon) = 7.1.0
+Provides: bundled(sisteransi) = 0.1.1
+Provides: bundled(slash) = 1.0.0
+Provides: bundled(slice-ansi) = 1.0.0
+Provides: bundled(snapdragon) = 0.8.2
+Provides: bundled(snapdragon-node) = 2.1.1
+Provides: bundled(snapdragon-util) = 3.0.1
+Provides: bundled(sntp) = 2.1.0
+Provides: bundled(source-list-map) = 2.0.0
+Provides: bundled(source-map) = 0.1.43
+Provides: bundled(source-map) = 0.4.4
+Provides: bundled(source-map) = 0.5.6
+Provides: bundled(source-map) = 0.5.7
+Provides: bundled(source-map) = 0.6.1
+Provides: bundled(source-map-resolve) = 0.3.1
+Provides: bundled(source-map-resolve) = 0.5.2
+Provides: bundled(source-map-support) = 0.4.15
+Provides: bundled(source-map-support) = 0.5.3
+Provides: bundled(source-map-support) = 0.5.9
+Provides: bundled(source-map-url) = 0.3.0
+Provides: bundled(source-map-url) = 0.4.0
+Provides: bundled(spdx-correct) = 1.0.2
+Provides: bundled(spdx-expression-parse) = 1.0.4
+Provides: bundled(spdx-license-ids) = 1.2.2
+Provides: bundled(speaktome-api) = 0.2.1
+Provides: bundled(split) = 0.3.3
+Provides: bundled(split-string) = 3.1.0
+Provides: bundled(sprintf-js) = 1.0.3
+Provides: bundled(sshpk) = 1.14.1
+Provides: bundled(ssri) = 5.3.0
+Provides: bundled(stack-trace) = 0.0.10
+Provides: bundled(stack-utils) = 1.0.1
+Provides: bundled(static-extend) = 0.1.2
+Provides: bundled(statuses) = 1.4.0
+Provides: bundled(statuses) = 1.5.0
+Provides: bundled(stealthy-require) = 1.1.1
+Provides: bundled(stream-browserify) = 2.0.1
+Provides: bundled(stream-combiner) = 0.0.4
+Provides: bundled(stream-each) = 1.2.2
+Provides: bundled(stream-http) = 2.8.3
+Provides: bundled(streamifier) = 0.1.1
+Provides: bundled(streamsearch) = 0.1.2
+Provides: bundled(stream-shift) = 1.0.0
+Provides: bundled(string_decoder) = 0.10.31
+Provides: bundled(string_decoder) = 1.1.1
+Provides: bundled(string-format) = 2.0.0
+Provides: bundled(string-length) = 2.0.0
+Provides: bundled(string.prototype.padend) = 3.0.0
+Provides: bundled(stringstream) = 0.0.5
+Provides: bundled(string-width) = 1.0.2
+Provides: bundled(string-width) = 2.0.0
+Provides: bundled(string-width) = 2.1.1
+Provides: bundled(strip-ansi) = 3.0.1
+Provides: bundled(strip-ansi) = 4.0.0
+Provides: bundled(strip-bom) = 2.0.0
+Provides: bundled(strip-bom) = 3.0.0
+Provides: bundled(strip-eof) = 1.0.0
+Provides: bundled(strip-json-comments) = 2.0.1
+Provides: bundled(style-loader) = 0.23.1
+Provides: bundled(superagent) = 2.3.0
+Provides: bundled(supports-color) = 2.0.0
+Provides: bundled(supports-color) = 3.1.2
+Provides: bundled(supports-color) = 4.5.0
+Provides: bundled(supports-color) = 5.0.1
+Provides: bundled(supports-color) = 5.3.0
+Provides: bundled(supports-color) = 5.4.0
+Provides: bundled(supports-color) = 5.5.0
+Provides: bundled(symbol-tree) = 3.2.2
+Provides: bundled(tapable) = 1.0.0
+Provides: bundled(tapable) = 1.1.0
+Provides: bundled(tar) = 4.4.4
+Provides: bundled(tar) = 4.4.6
+Provides: bundled(tar-stream) = 1.5.5
+Provides: bundled(tar-stream) = 1.6.1
+Provides: bundled(test-exclude) = 4.2.3
+Provides: bundled(text-encoding) = 0.6.4
+Provides: bundled(text-hex) = 1.0.0
+Provides: bundled(text-table) = 0.2.0
+Provides: bundled(thenify) = 3.3.0
+Provides: bundled(thenify-all) = 1.6.0
+Provides: bundled(throat) = 4.1.0
+Provides: bundled(through2) = 2.0.3
+Provides: bundled(through) = 2.3.8
+Provides: bundled(timers-browserify) = 2.0.10
+Provides: bundled(tmp) = 0.0.31
+Provides: bundled(tmp) = 0.0.33
+Provides: bundled(tmpl) = 1.0.4
+Provides: bundled(to-arraybuffer) = 1.0.1
+Provides: bundled(to-buffer) = 1.1.1
+Provides: bundled(to-fast-properties) = 1.0.3
+Provides: bundled(to-fast-properties) = 2.0.0
+Provides: bundled(to-object-path) = 0.3.0
+Provides: bundled(topo) = 3.0.0
+Provides: bundled(toposort) = 1.0.6
+Provides: bundled(to-regex) = 3.0.2
+Provides: bundled(to-regex-range) = 2.1.1
+Provides: bundled(tr46) = 1.0.1
+Provides: bundled(trim-right) = 1.0.1
+Provides: bundled(triple-beam) = 1.3.0
+Provides: bundled(ts-jest) = 23.10.4
+Provides: bundled(tslib) = 1.9.2
+Provides: bundled(tty-browserify) = 0.0.0
+Provides: bundled(tunnel-agent) = 0.6.0
+Provides: bundled(type-check) = 0.3.2
+Provides: bundled(typedarray) = 0.0.6
+Provides: bundled(type-detect) = 4.0.3
+Provides: bundled(type-detect) = type-detect
+Provides: bundled(type-is) = 1.6.16
+Provides: bundled(typescript) = 2.9.2
+Provides: bundled(uglify-es) = 3.3.9
+Provides: bundled(uglify-js) = 3.3.16
+Provides: bundled(uglifyjs-webpack-plugin) = 1.2.6
+Provides: bundled(unicode-canonical-property-names-ecmascript) = 1.0.3
+Provides: bundled(unicode-match-property-ecmascript) = 1.0.3
+Provides: bundled(unicode-match-property-value-ecmascript) = 1.0.1
+Provides: bundled(unicode-property-aliases-ecmascript) = 1.0.3
+Provides: bundled(union-value) = 1.0.0
+Provides: bundled(unique-filename) = 1.1.0
+Provides: bundled(unique-slug) = 2.0.0
+Provides: bundled(universalify) = 0.1.2
+Provides: bundled(unpipe) = 1.0.0
+Provides: bundled(unset-value) = 1.0.0
+Provides: bundled(upath) = 1.1.0
+Provides: bundled(upper-case) = 1.1.3
+Provides: bundled(urijs) = 1.19.1
+Provides: bundled(uri-js) = 3.0.2
+Provides: bundled(uri-js) = 4.2.2
+Provides: bundled(urix) = 0.1.0
+Provides: bundled(url) = 0.11.0
+Provides: bundled(urlgrey) = 0.4.4
+Provides: bundled(url-loader) = 1.1.2
+Provides: bundled(urlsafe-base64) = 1.0.0
+Provides: bundled(use) = 3.1.0
+Provides: bundled(utila) = 0.3.3
+Provides: bundled(utila) = 0.4.0
+Provides: bundled(util-deprecate) = 1.0.2
+Provides: bundled(util.promisify) = 1.0.0
+Provides: bundled(utils-merge) = 1.0.1
+Provides: bundled(uuid) = 3.1.0
+Provides: bundled(uuid) = 3.3.2
+Provides: bundled(v8-compile-cache) = 2.0.2
+Provides: bundled(validate-npm-package-license) = 3.0.1
+Provides: bundled(vary) = 1.1.2
+Provides: bundled(verror) = 1.10.0
+Provides: bundled(vm-browserify) = 0.0.4
+Provides: bundled(w3c-hr-time) = 1.0.1
+Provides: bundled(w3c-xmlserializer) = 1.0.1
+Provides: bundled(walker) = 1.0.7
+Provides: bundled(watch) = 0.18.0
+Provides: bundled(watchpack) = 1.6.0
+Provides: bundled(wdio-dot-reporter) = 0.0.9
+Provides: bundled(webdriverio) = 4.14.0
+Provides: bundled(webidl-conversions) = 4.0.2
+Provides: bundled(webpack) = 4.23.1
+Provides: bundled(webpack-cli) = 3.1.2
+Provides: bundled(webpack-log) = 1.2.0
+Provides: bundled(webpack-sources) = 1.1.0
+Provides: bundled(webpack-sources) = 1.3.0
+Provides: bundled(web-push) = 3.3.3
+Provides: bundled(wgxpath) = 1.0.0
+Provides: bundled(whatwg-encoding) = 1.0.1
+Provides: bundled(whatwg-encoding) = 1.0.5
+Provides: bundled(whatwg-mimetype) = 2.2.0
+Provides: bundled(whatwg-mimetype) = 2.3.0
+Provides: bundled(whatwg-url) = 6.5.0
+Provides: bundled(whatwg-url) = 7.0.0
+Provides: bundled(which) = 1.2.14
+Provides: bundled(which) = 1.3.0
+Provides: bundled(which-module) = 2.0.0
+Provides: bundled(wide-align) = 1.1.3
+Provides: bundled(winston) = 3.1.0
+Provides: bundled(winston-compat) = 0.1.4
+Provides: bundled(winston-daily-rotate-file) = 3.3.5
+Provides: bundled(winston-transport) = 4.2.0
+Provides: bundled(wordwrap) = 0.0.3
+Provides: bundled(wordwrap) = 1.0.0
+Provides: bundled(worker-farm) = 1.6.0
+Provides: bundled(wrap-ansi) = 2.1.0
+Provides: bundled(wrappy) = 1.0.2
+Provides: bundled(wreck) = 14.1.0
+Provides: bundled(write) = 0.2.1
+Provides: bundled(write-file-atomic) = 2.3.0
+Provides: bundled(ws) = 5.2.0
+Provides: bundled(ws) = 6.1.0
+Provides: bundled(ws) = 6.1.2
+Provides: bundled(xml2js) = 0.4.17
+Provides: bundled(xmlbuilder) = 4.2.1
+Provides: bundled(xml-char-classes) = 1.0.0
+Provides: bundled(xmlchars) = 1.3.1
+Provides: bundled(xml-name-validator) = 3.0.0
+Provides: bundled(xregexp) = 4.0.0
+Provides: bundled(xtend) = 4.0.1
+Provides: bundled(y18n) = 3.2.1
+Provides: bundled(y18n) = 4.0.0
+Provides: bundled(yallist) = 2.1.2
+Provides: bundled(yallist) = 3.0.2
+Provides: bundled(yargs) = 11.1.0
+Provides: bundled(yargs) = 12.0.2
+Provides: bundled(yargs-parser) = 10.1.0
+Provides: bundled(yargs-parser) = 9.0.2
+Provides: bundled(yauzl) = 2.9.1
+Provides: bundled(zip-stream) = 1.2.0
+Provides: bundled(zip-stream) = 2.0.1
+
+
+%description
+Web of Things gateway
+
+Example firewall setup (as root):
+firewall-cmd --add-port=4443/tcp --permanent
+firewall-cmd --add-port=8080/tcp --permanent
+firewall-cmd --add-port=5353/udp --permanent
+firewall-cmd --reload
+
+See README.md for configuration options
+
+
+%prep
+%autosetup -n %{npm_name}-%{version}
+
+#Fixup bad shebangs
+sed -i "s|/usr/bin/python$|/usr/bin/python3|" pagekite.py
+sed -i "s|/usr/bin/env python$|/usr/bin/python3|" $(grep -rl "/usr/bin/env python$" *)
+
+# Cleanup hidden files, backup files, permissions
+find . -type f -name '.*' -delete
+find . -name '*~' -delete
+find . -name '*.tgz' -delete
+rm -rf $(find . -type d -name '.[a-z]*' | grep -v .bin)
+rm -f $(find . -size 0 | grep -e package-lock -e core-js -e awesome -e lint.log -e output$)
+find . -name '*sh' ! -executable -exec chmod ugo+x {} \;
+find . -name '*sh' ! -executable -exec chmod ugo+x {} \;
+find . -name package.json -executable -exec chmod 644 {} \;
+chmod ugo+x $(grep -lr '#!/usr/bin/env node' * | grep -v -i readme)
+
+%build
+#nothing to do
+
+
+%install
+mkdir -p %{buildroot}%{nodejs_sitelib}/%{npm_name}
+cp -pr build config global.d.ts node_modules \
+ package.json pagekite.py run-app.sh src static tools \
+ %{buildroot}%{nodejs_sitelib}/%{npm_name}
+
+# Install systemd service file
+mkdir -p %{buildroot}%{_unitdir}
+install -p -m 644 %{SOURCE3} %{buildroot}%{_unitdir}/
+
+%pre
+getent group moz-iot-gateway >/dev/null || \
+ groupadd -r moz-iot-gateway
+getent passwd moz-iot-gateway >/dev/null || \
+ useradd -r -m -g moz-iot-gateway -s /sbin/nologin \
+ -c "user that runs mozilla-iot-gateway" moz-iot-gateway
+getent group dialout | grep -q moz-iot-gateway || \
+ usermod -aG dialout moz-iot-gateway
+exit 0
+
+%post
+%systemd_post mozilla-iot-gateway.service
+
+%preun
+%systemd_preun mozilla-iot-gateway.service
+
+%postun
+%systemd_postun_with_restart mozilla-iot-gateway.service
+
+%files
+%doc README.md
+%license LICENSE
+%{nodejs_sitelib}/%{npm_name}
+%{_unitdir}/mozilla-iot-gateway.service
+
+%changelog
+* Wed Mar 06 2019 Troy Dawson <tdawson(a)redhat.com> - 0.7.0-2
+- Cleanup hidden files, backup files, permissions
+- Cleanup some empty files, but not all
+
+* Fri Feb 01 2019 Troy Dawson <tdawson(a)redhat.com> - 0.7.0-1
+- Initial build with 0.7.0
+- Bundle nodejs dependencies
+- Unbundle binary (arch dependant) modules, add Requires for these.
+- Include licenses and Provides for bundled modules
+- Create user to run service in pre
+- Fix bad shebangs
diff --git a/sources b/sources
new file mode 100644
index 0000000..f8938cb
--- /dev/null
+++ b/sources
@@ -0,0 +1 @@
+SHA512 (gateway-v0.7.0.tar.gz) = 50e51526b873f74d83a6969eb92b519cc99ed40378d94c48a5ebe8c2fe4ae04269ac2b7407ad3d9bcf1a5eb1f26e8d16b807c58c685e4d5ded168c932e02fd8f
5 years, 1 month
Architecture specific change in rpms/java-openjdk.git
by githook-noreply@fedoraproject.org
The package rpms/java-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-openjdk.git/commit/?id=c7d5e....
Change:
-%ifarch x86_64
Thanks.
Full change:
============
commit c7d5e956567f0a6618b73beee6d14543ed639a05
Author: pmikova <pmikova(a)redhat.com>
Date: Tue Apr 23 16:37:18 2019 +0200
Emptied the package due to the renaming
This package is being renamed to java-latest-openjdk and therefore this package is now empty and only requires java-latest-openjdk.
diff --git a/README.md b/README.md
index c21900a..853954d 100644
--- a/README.md
+++ b/README.md
@@ -1,12 +1 @@
-Rolling release of (usually) STSs OpenJDK
-OpenJDK have release cadence of 6 months. but 3/4 of them are Short Term Supported for 6 months only. This package is designed to harbore them. Currently it is build on openJDK 10. LTSs (next is 11) will go as separate packages.
-
-JDK11 is last release of Java platform. It is bringing many cool improvements - http://openjdk.java.net/projects/jdk/11/ and is landing to your Fedora. Where it will be maintained for f27 and newer. Unluckily, this package is STS (short term support) version. Between individual LTS will be always several STS. Again, please See announcement: http://mail.openjdk.java.net/pipermail/discuss/2017-September/004281.html and See java SIG plans: https://jvanek.fedorapeople.org/devconf/2018/changesInjavaReleaseProcess.pdf . So this is rolling release of all STSs to come. Its fate during the release of fresh LTS is yet to be decided. You will always be allowed to install Used LTS in fedora build root, alongside with latest STS via alternatives.
-
-
-See announcement: http://mail.openjdk.java.net/pipermail/discuss/2017-September/004281.html
-See java SIG plans: https://jvanek.fedorapeople.org/devconf/2018/changesInjavaReleaseProcess.pdf
-
-https://bugzilla.redhat.com/show_bug.cgi?id=1557371#c0
-https://fedoraproject.org/wiki/Changes/java-openjdk-10
-https://fedoraproject.org/wiki/Changes/java-11-openjdk-TechPreview
+This package was containing STS release of OpenJDK. This package was renamed to java-latest-openjdk due numerous issues with provides. Now, this package is empty and only requires java-latest-openjdk to ensure, users get the new STS OpenJDK package with next update. This package will be eventually deleted so it is recommended to remove java-openjdk package and use java-latest-openjdk instead - this package is no longer maintained.
diff --git a/TestCryptoLevel.java b/TestCryptoLevel.java
deleted file mode 100644
index b32b7ae..0000000
--- a/TestCryptoLevel.java
+++ /dev/null
@@ -1,72 +0,0 @@
-/* TestCryptoLevel -- Ensure unlimited crypto policy is in use.
- Copyright (C) 2012 Red Hat, Inc.
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU Affero General Public License as
-published by the Free Software Foundation, either version 3 of the
-License, or (at your option) any later version.
-
-This program 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 Affero General Public License for more details.
-
-You should have received a copy of the GNU Affero General Public License
-along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-import java.lang.reflect.Field;
-import java.lang.reflect.Method;
-import java.lang.reflect.InvocationTargetException;
-
-import java.security.Permission;
-import java.security.PermissionCollection;
-
-public class TestCryptoLevel
-{
- public static void main(String[] args)
- throws NoSuchFieldException, ClassNotFoundException,
- IllegalAccessException, InvocationTargetException
- {
- Class<?> cls = null;
- Method def = null, exempt = null;
-
- try
- {
- cls = Class.forName("javax.crypto.JceSecurity");
- }
- catch (ClassNotFoundException ex)
- {
- System.err.println("Running a non-Sun JDK.");
- System.exit(0);
- }
- try
- {
- def = cls.getDeclaredMethod("getDefaultPolicy");
- exempt = cls.getDeclaredMethod("getExemptPolicy");
- }
- catch (NoSuchMethodException ex)
- {
- System.err.println("Running IcedTea with the original crypto patch.");
- System.exit(0);
- }
- def.setAccessible(true);
- exempt.setAccessible(true);
- PermissionCollection defPerms = (PermissionCollection) def.invoke(null);
- PermissionCollection exemptPerms = (PermissionCollection) exempt.invoke(null);
- Class<?> apCls = Class.forName("javax.crypto.CryptoAllPermission");
- Field apField = apCls.getDeclaredField("INSTANCE");
- apField.setAccessible(true);
- Permission allPerms = (Permission) apField.get(null);
- if (defPerms.implies(allPerms) && (exemptPerms == null || exemptPerms.implies(allPerms)))
- {
- System.err.println("Running with the unlimited policy.");
- System.exit(0);
- }
- else
- {
- System.err.println("WARNING: Running with a restricted crypto policy.");
- System.exit(-1);
- }
- }
-}
diff --git a/TestECDSA.java b/TestECDSA.java
deleted file mode 100644
index 6eb9cb2..0000000
--- a/TestECDSA.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/* TestECDSA -- Ensure ECDSA signatures are working.
- Copyright (C) 2016 Red Hat, Inc.
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU Affero General Public License as
-published by the Free Software Foundation, either version 3 of the
-License, or (at your option) any later version.
-
-This program 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 Affero General Public License for more details.
-
-You should have received a copy of the GNU Affero General Public License
-along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-import java.math.BigInteger;
-import java.security.KeyPair;
-import java.security.KeyPairGenerator;
-import java.security.Signature;
-
-/**
- * @test
- */
-public class TestECDSA {
-
- public static void main(String[] args) throws Exception {
- KeyPairGenerator keyGen = KeyPairGenerator.getInstance("EC");
- KeyPair key = keyGen.generateKeyPair();
-
- byte[] data = "This is a string to sign".getBytes("UTF-8");
-
- Signature dsa = Signature.getInstance("NONEwithECDSA");
- dsa.initSign(key.getPrivate());
- dsa.update(data);
- byte[] sig = dsa.sign();
- System.out.println("Signature: " + new BigInteger(1, sig).toString(16));
-
- Signature dsaCheck = Signature.getInstance("NONEwithECDSA");
- dsaCheck.initVerify(key.getPublic());
- dsaCheck.update(data);
- boolean success = dsaCheck.verify(sig);
- if (!success) {
- throw new RuntimeException("Test failed. Signature verification error");
- }
- System.out.println("Test passed.");
- }
-}
diff --git a/generate_source_tarball.sh b/generate_source_tarball.sh
deleted file mode 100644
index fa6d11f..0000000
--- a/generate_source_tarball.sh
+++ /dev/null
@@ -1,145 +0,0 @@
-#!/bin/bash
-# Generates the 'source tarball' for JDK projects.
-#
-# Example:
-# When used from local repo set REPO_ROOT pointing to file:// with your repo
-# if your local repo follows upstream forests conventions, you may be enough by setting OPENJDK_URL
-# if you wont to use local copy of patch PR2126 set path to it to PR2126 variable
-#
-# In any case you have to set PROJECT_NAME REPO_NAME and VERSION. eg:
-# PROJECT_NAME=jdk
-# REPO_NAME=jdk
-# VERSION=tip
-# or to eg prepare systemtap:
-# icedtea7's jstack and other tapsets
-# VERSION=6327cf1cea9e
-# REPO_NAME=icedtea7-2.6
-# PROJECT_NAME=release
-# OPENJDK_URL=http://icedtea.classpath.org/hg/
-# TO_COMPRESS="*/tapset"
-#
-# They are used to create correct name and are used in construction of sources url (unless REPO_ROOT is set)
-
-# This script creates a single source tarball out of the repository
-# based on the given tag and removes code not allowed in fedora/rhel. For
-# consistency, the source tarball will always contain 'openjdk' as the top
-# level folder, name is created, based on parameter
-#
-
-if [ ! "x$PR2126" = "x" ] ; then
- if [ ! -f "$PR2126" ] ; then
- echo "You have specified PR2126 as $PR2126 but it does not exists. exiting"
- exit 1
- fi
-fi
-
-set -e
-
-OPENJDK_URL_DEFAULT=http://hg.openjdk.java.net
-COMPRESSION_DEFAULT=xz
-
-if [ "x$1" = "xhelp" ] ; then
- echo -e "Behaviour may be specified by setting the following variables:\n"
- echo "VERSION - the version of the specified OpenJDK project"
- echo "PROJECT_NAME -- the name of the OpenJDK project being archived (optional; only needed by defaults)"
- echo "REPO_NAME - the name of the OpenJDK repository (optional; only needed by defaults)"
- echo "OPENJDK_URL - the URL to retrieve code from (optional; defaults to ${OPENJDK_URL_DEFAULT})"
- echo "COMPRESSION - the compression type to use (optional; defaults to ${COMPRESSION_DEFAULT})"
- echo "FILE_NAME_ROOT - name of the archive, minus extensions (optional; defaults to PROJECT_NAME-REPO_NAME-VERSION)"
- echo "REPO_ROOT - the location of the Mercurial repository to archive (optional; defaults to OPENJDK_URL/PROJECT_NAME/REPO_NAME)"
- echo "TO_COMPRESS - what part of clone to pack (default is openjdk)"
- echo "PR2126 - the path to the PR2126 patch to apply (optional; downloaded if unavailable)"
- exit 1;
-fi
-
-
-if [ "x$VERSION" = "x" ] ; then
- echo "No VERSION specified"
- exit -2
-fi
-echo "Version: ${VERSION}"
-
-# REPO_NAME is only needed when we default on REPO_ROOT and FILE_NAME_ROOT
-if [ "x$FILE_NAME_ROOT" = "x" -o "x$REPO_ROOT" = "x" ] ; then
- if [ "x$PROJECT_NAME" = "x" ] ; then
- echo "No PROJECT_NAME specified"
- exit -1
- fi
- echo "Project name: ${PROJECT_NAME}"
- if [ "x$REPO_NAME" = "x" ] ; then
- echo "No REPO_NAME specified"
- exit -3
- fi
- echo "Repository name: ${REPO_NAME}"
-fi
-
-if [ "x$OPENJDK_URL" = "x" ] ; then
- OPENJDK_URL=${OPENJDK_URL_DEFAULT}
- echo "No OpenJDK URL specified; defaulting to ${OPENJDK_URL}"
-else
- echo "OpenJDK URL: ${OPENJDK_URL}"
-fi
-
-if [ "x$COMPRESSION" = "x" ] ; then
- # rhel 5 needs tar.gz
- COMPRESSION=${COMPRESSION_DEFAULT}
-fi
-echo "Creating a tar.${COMPRESSION} archive"
-
-if [ "x$FILE_NAME_ROOT" = "x" ] ; then
- FILE_NAME_ROOT=${PROJECT_NAME}-${REPO_NAME}-${VERSION}
- echo "No file name root specified; default to ${FILE_NAME_ROOT}"
-fi
-if [ "x$REPO_ROOT" = "x" ] ; then
- REPO_ROOT="${OPENJDK_URL}/${PROJECT_NAME}/${REPO_NAME}"
- echo "No repository root specified; default to ${REPO_ROOT}"
-fi;
-
-if [ "x$TO_COMPRESS" = "x" ] ; then
- TO_COMPRESS="openjdk"
- echo "No to be compressed targets specified, ; default to ${TO_COMPRESS}"
-fi;
-
-if [ -d ${FILE_NAME_ROOT} ] ; then
- echo "exists exists exists exists exists exists exists "
- echo "reusing reusing reusing reusing reusing reusing "
- echo ${FILE_NAME_ROOT}
-else
- mkdir "${FILE_NAME_ROOT}"
- pushd "${FILE_NAME_ROOT}"
- echo "Cloning ${VERSION} root repository from ${REPO_ROOT}"
- hg clone ${REPO_ROOT} openjdk -r ${VERSION}
- popd
-fi
-pushd "${FILE_NAME_ROOT}"
- if [ -d openjdk/src ]; then
- pushd openjdk
- echo "Removing EC source code we don't build"
- CRYPTO_PATH=src/jdk.crypto.ec/share/native/libsunec/impl
- rm -vrf $CRYPTO_PATH
- echo "Syncing EC list with NSS"
- if [ "x$PR2126" = "x" ] ; then
- # orriginally for 8:
- # get pr2126.patch (from http://icedtea.classpath.org/hg/icedtea?cmd=changeset;node=8d2c9a898f50) from most correct tag
- # Do not push it or publish it (see http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=2126)
- # there is currnetly no "upstram version of this patch, hardcoding custom version
- PR2126="../../pr2126-synchronise_elliptic_curves_in_sun_security_ec_namedcurve_with_those_listed_by_nss.patch"
- fi;
- echo "Applying ${PR2126}"
- patch -Np1 < $PR2126
- find . -name '*.orig' -exec rm -vf '{}' ';'
- popd
- fi
-
- echo "Compressing remaining forest"
- if [ "X$COMPRESSION" = "Xxz" ] ; then
- SWITCH=cJf
- else
- SWITCH=czf
- fi
- tar --exclude-vcs -$SWITCH ${FILE_NAME_ROOT}.tar.${COMPRESSION} $TO_COMPRESS
- mv ${FILE_NAME_ROOT}.tar.${COMPRESSION} ..
-popd
-echo "Done. You may want to remove the uncompressed version - $FILE_NAME_ROOT."
-
-
diff --git a/java-openjdk.spec b/java-openjdk.spec
index c366c29..3e44062 100644
--- a/java-openjdk.spec
+++ b/java-openjdk.spec
@@ -126,30 +126,6 @@
%global targets images docs
%endif
-
-# Filter out flags from the optflags macro that cause problems with the OpenJDK build
-# We filter out -O flags so that the optimization of HotSpot is not lowered from O3 to O2
-# We filter out -Wall which will otherwise cause HotSpot to produce hundreds of thousands of warnings (100+mb logs)
-# We replace it with -Wformat (required by -Werror=format-security) and -Wno-cpp to avoid FORTIFY_SOURCE warnings
-# We filter out -fexceptions as the HotSpot build explicitly does -fno-exceptions and it's otherwise the default for C++
-%global ourflags %(echo %optflags | sed -e 's|-Wall|-Wformat -Wno-cpp|' | sed -r -e 's|-O[0-9]*||')
-%global ourcppflags %(echo %ourflags | sed -e 's|-fexceptions||')
-%global ourldflags %{__global_ldflags}
-
-# With disabled nss is NSS deactivated, so NSS_LIBDIR can contain the wrong path
-# the initialization must be here. Later the pkg-config have buggy behavior
-# looks like openjdk RPM specific bug
-# Always set this so the nss.cfg file is not broken
-%global NSS_LIBDIR %(pkg-config --variable=libdir nss)
-%global NSS_LIBS %(pkg-config --libs nss)
-%global NSS_CFLAGS %(pkg-config --cflags nss-softokn)
-# see https://bugzilla.redhat.com/show_bug.cgi?id=1332456
-%global NSSSOFTOKN_BUILDTIME_NUMBER %(pkg-config --modversion nss-softokn || : )
-%global NSS_BUILDTIME_NUMBER %(pkg-config --modversion nss || : )
-# this is workaround for processing of requires during srpm creation
-%global NSSSOFTOKN_BUILDTIME_VERSION %(if [ "x%{NSSSOFTOKN_BUILDTIME_NUMBER}" == "x" ] ; then echo "" ;else echo ">= %{NSSSOFTOKN_BUILDTIME_NUMBER}" ;fi)
-%global NSS_BUILDTIME_VERSION %(if [ "x%{NSS_BUILDTIME_NUMBER}" == "x" ] ; then echo "" ;else echo ">= %{NSS_BUILDTIME_NUMBER}" ;fi)
-
# In some cases, the arch used by the JDK does
# not match _arch.
# Also, in some cases, the machine name used by SystemTap
@@ -196,14 +172,6 @@
%global archinstall %{_arch}
%endif
-
-
-%ifarch %{jit_arches}
-%global with_systemtap 1
-%else
-%global with_systemtap 0
-%endif
-
# New Version-String scheme-style defines
%global majorver 12
%global securityver 0
@@ -214,10 +182,6 @@
# Used via new version scheme. JDK 11 was
# GA'ed in March 2019 => 19.3
%global vendor_version_string 19.3
-# We don't add any LTS designator for STS packages (this package).
-# Neither for Fedora nor EPEL which would have %%{rhel} macro defined.
- %global lts_designator ""
- %global lts_designator_zip ""
# Standard JPackage naming and versioning defines
%global origin openjdk
@@ -225,13 +189,7 @@
%global top_level_dir_name %{origin}
%global minorver 0
%global buildver 33
-# priority must be 8 digits in total; up to openjdk 1.8, we were using 18..... so when we moved to 11, we had to add another digit
-%if %is_system_jdk
-%global priority %( printf '%02d%02d%02d%02d' %{majorver} %{minorver} %{securityver} %{buildver} )
-%else
-# for techpreview, using 1, so slowdebugs can have 0
-%global priority %( printf '%08d' 1 )
-%endif
+
%global newjavaver %{majorver}.%{minorver}.%{securityver}
%global javaver %{majorver}
@@ -248,642 +206,25 @@
# main id and dir of this jdk
%define uniquesuffix() %{expand:%{fullversion}.%{_arch}%{?1}}
-# fix for https://bugzilla.redhat.com/show_bug.cgi?id=1111349
-# https://bugzilla.redhat.com/show_bug.cgi?id=1590796#c14
-# https://bugzilla.redhat.com/show_bug.cgi?id=1655938
-%if %is_system_jdk
-%global _privatelibs libsplashscreen[.]so.*|libawt_xawt[.]so.*|libjli[.]so.*|libattach[.]so.*|libawt[.]so.*|libextnet[.]so.*|libawt_headless[.]so.*|libdt_socket[.]so.*|libfontmanager[.]so.*|libinstrument[.]so.*|libj2gss[.]so.*|libj2pcsc[.]so.*|libj2pkcs11[.]so.*|libjaas[.]so.*|libjavajpeg[.]so.*|libjdwp[.]so.*|libjimage[.]so.*|libjsound[.]so.*|liblcms[.]so.*|libmanagement[.]so.*|libmanagement_agent[.]so.*|libmanagement_ext[.]so.*|libmlib_image[.]so.*|libnet[.]so.*|libnio[.]so.*|libprefs[.]so.*|librmi[.]so.*|libsaproc[.]so.*|libsctp[.]so.*|libsunec[.]so.*|libunpack[.]so.*|libzip[.]so.*
-%global __provides_exclude ^(%{_privatelibs})$
-%global __requires_exclude ^(%{_privatelibs})$
-%global __provides_exclude_from ^.*/%{uniquesuffix -- %{debug_suffix_unquoted}}/.*$
-%else
-%global __provides_exclude lib.*[.]so.*
-%global __requires_exclude lib.*[.]so.*
-%endif
-
-
-%global etcjavasubdir %{_sysconfdir}/java/java-%{javaver}-%{origin}
-%define etcjavadir() %{expand:%{etcjavasubdir}/%{uniquesuffix -- %{?1}}}
-# Standard JPackage directories and symbolic links.
-%define sdkdir() %{expand:%{uniquesuffix -- %{?1}}}
-%define jrelnk() %{expand:jre-%{javaver}-%{origin}-%{version}-%{release}.%{_arch}%{?1}}
-
-%define sdkbindir() %{expand:%{_jvmdir}/%{sdkdir -- %{?1}}/bin}
-%define jrebindir() %{expand:%{_jvmdir}/%{sdkdir -- %{?1}}/bin}
-
%global rpm_state_dir %{_localstatedir}/lib/rpm-state/
-%if %{with_systemtap}
-# Where to install systemtap tapset (links)
-# We would like these to be in a package specific sub-dir,
-# but currently systemtap doesn't support that, so we have to
-# use the root tapset dir for now. To distinguish between 64
-# and 32 bit architectures we place the tapsets under the arch
-# specific dir (note that systemtap will only pickup the tapset
-# for the primary arch for now). Systemtap uses the machine name
-# aka build_cpu as architecture specific directory name.
-%global tapsetroot /usr/share/systemtap
-%global tapsetdirttapset %{tapsetroot}/tapset/
-%global tapsetdir %{tapsetdirttapset}/%{_build_cpu}
-%endif
-
-# not-duplicated scriptlets for normal/debug packages
-%global update_desktop_icons /usr/bin/gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || :
-
-
-%define post_script() %{expand:
-update-desktop-database %{_datadir}/applications &> /dev/null || :
-/bin/touch --no-create %{_datadir}/icons/hicolor &>/dev/null || :
-exit 0
-}
-
-
-%define post_headless() %{expand:
-%ifarch %{jit_arches}
-# MetaspaceShared::generate_vtable_methods not implemented for PPC JIT
-%ifnarch %{ppc64le}
-# see https://bugzilla.redhat.com/show_bug.cgi?id=513605
-%{jrebindir -- %{?1}}/java -Xshare:dump >/dev/null 2>/dev/null
-%endif
-%endif
-
-PRIORITY=%{priority}
-if [ "%{?1}" == %{debug_suffix} ]; then
- let PRIORITY=PRIORITY-1
-fi
-
-ext=.gz
-alternatives \\
- --install %{_bindir}/java java %{jrebindir -- %{?1}}/java $PRIORITY --family %{name}.%{_arch} \\
- --slave %{_jvmdir}/jre jre %{_jvmdir}/%{sdkdir -- %{?1}} \\
- --slave %{_bindir}/jjs jjs %{jrebindir -- %{?1}}/jjs \\
- --slave %{_bindir}/keytool keytool %{jrebindir -- %{?1}}/keytool \\
- --slave %{_bindir}/pack200 pack200 %{jrebindir -- %{?1}}/pack200 \\
- --slave %{_bindir}/rmid rmid %{jrebindir -- %{?1}}/rmid \\
- --slave %{_bindir}/rmiregistry rmiregistry %{jrebindir -- %{?1}}/rmiregistry \\
- --slave %{_bindir}/unpack200 unpack200 %{jrebindir -- %{?1}}/unpack200 \\
- --slave %{_mandir}/man1/java.1$ext java.1$ext \\
- %{_mandir}/man1/java-%{uniquesuffix -- %{?1}}.1$ext \\
- --slave %{_mandir}/man1/jjs.1$ext jjs.1$ext \\
- %{_mandir}/man1/jjs-%{uniquesuffix -- %{?1}}.1$ext \\
- --slave %{_mandir}/man1/keytool.1$ext keytool.1$ext \\
- %{_mandir}/man1/keytool-%{uniquesuffix -- %{?1}}.1$ext \\
- --slave %{_mandir}/man1/pack200.1$ext pack200.1$ext \\
- %{_mandir}/man1/pack200-%{uniquesuffix -- %{?1}}.1$ext \\
- --slave %{_mandir}/man1/rmid.1$ext rmid.1$ext \\
- %{_mandir}/man1/rmid-%{uniquesuffix -- %{?1}}.1$ext \\
- --slave %{_mandir}/man1/rmiregistry.1$ext rmiregistry.1$ext \\
- %{_mandir}/man1/rmiregistry-%{uniquesuffix -- %{?1}}.1$ext \\
- --slave %{_mandir}/man1/unpack200.1$ext unpack200.1$ext \\
- %{_mandir}/man1/unpack200-%{uniquesuffix -- %{?1}}.1$ext
-
-for X in %{origin} %{javaver} ; do
- alternatives --install %{_jvmdir}/jre-"$X" jre_"$X" %{_jvmdir}/%{sdkdir -- %{?1}} $PRIORITY --family %{name}.%{_arch}
-done
-
-update-alternatives --install %{_jvmdir}/jre-%{javaver}-%{origin} jre_%{javaver}_%{origin} %{_jvmdir}/%{jrelnk -- %{?1}} $PRIORITY --family %{name}.%{_arch}
-
-
-update-desktop-database %{_datadir}/applications &> /dev/null || :
-/bin/touch --no-create %{_datadir}/icons/hicolor &>/dev/null || :
-
-# see pretrans where this file is declared
-# also see that pretrans is only for non-debug
-if [ ! "%{?1}" == %{debug_suffix} ]; then
- if [ -f %{_libexecdir}/copy_jdk_configs_fixFiles.sh ] ; then
- sh %{_libexecdir}/copy_jdk_configs_fixFiles.sh %{rpm_state_dir}/%{name}.%{_arch} %{_jvmdir}/%{sdkdir -- %{?1}}
- fi
-fi
-
-exit 0
-}
-
-%define postun_script() %{expand:
-update-desktop-database %{_datadir}/applications &> /dev/null || :
-if [ $1 -eq 0 ] ; then
- /bin/touch --no-create %{_datadir}/icons/hicolor &>/dev/null
- %{update_desktop_icons}
-fi
-exit 0
-}
-
-
-%define postun_headless() %{expand:
- alternatives --remove java %{jrebindir -- %{?1}}/java
- alternatives --remove jre_%{origin} %{_jvmdir}/%{sdkdir -- %{?1}}
- alternatives --remove jre_%{javaver} %{_jvmdir}/%{sdkdir -- %{?1}}
- alternatives --remove jre_%{javaver}_%{origin} %{_jvmdir}/%{jrelnk -- %{?1}}
-}
-
-%define posttrans_script() %{expand:
-%{update_desktop_icons}
-}
-
-%define post_devel() %{expand:
-
-PRIORITY=%{priority}
-if [ "%{?1}" == %{debug_suffix} ]; then
- let PRIORITY=PRIORITY-1
-fi
-
-ext=.gz
-alternatives \\
- --install %{_bindir}/javac javac %{sdkbindir -- %{?1}}/javac $PRIORITY --family %{name}.%{_arch} \\
- --slave %{_jvmdir}/java java_sdk %{_jvmdir}/%{sdkdir -- %{?1}} \\
-%ifarch %{aot_arches}
- --slave %{_bindir}/jaotc jaotc %{sdkbindir -- %{?1}}/jaotc \\
-%endif
- --slave %{_bindir}/jlink jlink %{sdkbindir -- %{?1}}/jlink \\
- --slave %{_bindir}/jmod jmod %{sdkbindir -- %{?1}}/jmod \\
-%ifarch %{jit_arches}
-%ifnarch s390x
- --slave %{_bindir}/jhsdb jhsdb %{sdkbindir -- %{?1}}/jhsdb \\
-%endif
-%endif
- --slave %{_bindir}/jar jar %{sdkbindir -- %{?1}}/jar \\
- --slave %{_bindir}/jarsigner jarsigner %{sdkbindir -- %{?1}}/jarsigner \\
- --slave %{_bindir}/javadoc javadoc %{sdkbindir -- %{?1}}/javadoc \\
- --slave %{_bindir}/javap javap %{sdkbindir -- %{?1}}/javap \\
- --slave %{_bindir}/jcmd jcmd %{sdkbindir -- %{?1}}/jcmd \\
- --slave %{_bindir}/jconsole jconsole %{sdkbindir -- %{?1}}/jconsole \\
- --slave %{_bindir}/jdb jdb %{sdkbindir -- %{?1}}/jdb \\
- --slave %{_bindir}/jdeps jdeps %{sdkbindir -- %{?1}}/jdeps \\
- --slave %{_bindir}/jdeprscan jdeprscan %{sdkbindir -- %{?1}}/jdeprscan \\
- --slave %{_bindir}/jimage jimage %{sdkbindir -- %{?1}}/jimage \\
- --slave %{_bindir}/jinfo jinfo %{sdkbindir -- %{?1}}/jinfo \\
- --slave %{_bindir}/jmap jmap %{sdkbindir -- %{?1}}/jmap \\
- --slave %{_bindir}/jps jps %{sdkbindir -- %{?1}}/jps \\
- --slave %{_bindir}/jrunscript jrunscript %{sdkbindir -- %{?1}}/jrunscript \\
- --slave %{_bindir}/jshell jshell %{sdkbindir -- %{?1}}/jshell \\
- --slave %{_bindir}/jstack jstack %{sdkbindir -- %{?1}}/jstack \\
- --slave %{_bindir}/jstat jstat %{sdkbindir -- %{?1}}/jstat \\
- --slave %{_bindir}/jstatd jstatd %{sdkbindir -- %{?1}}/jstatd \\
- --slave %{_bindir}/rmic rmic %{sdkbindir -- %{?1}}/rmic \\
- --slave %{_bindir}/serialver serialver %{sdkbindir -- %{?1}}/serialver \\
- --slave %{_mandir}/man1/jar.1$ext jar.1$ext \\
- %{_mandir}/man1/jar-%{uniquesuffix -- %{?1}}.1$ext \\
- --slave %{_mandir}/man1/jarsigner.1$ext jarsigner.1$ext \\
- %{_mandir}/man1/jarsigner-%{uniquesuffix -- %{?1}}.1$ext \\
- --slave %{_mandir}/man1/javac.1$ext javac.1$ext \\
- %{_mandir}/man1/javac-%{uniquesuffix -- %{?1}}.1$ext \\
- --slave %{_mandir}/man1/javadoc.1$ext javadoc.1$ext \\
- %{_mandir}/man1/javadoc-%{uniquesuffix -- %{?1}}.1$ext \\
- --slave %{_mandir}/man1/javap.1$ext javap.1$ext \\
- %{_mandir}/man1/javap-%{uniquesuffix -- %{?1}}.1$ext \\
- --slave %{_mandir}/man1/jcmd.1$ext jcmd.1$ext \\
- %{_mandir}/man1/jcmd-%{uniquesuffix -- %{?1}}.1$ext \\
- --slave %{_mandir}/man1/jconsole.1$ext jconsole.1$ext \\
- %{_mandir}/man1/jconsole-%{uniquesuffix -- %{?1}}.1$ext \\
- --slave %{_mandir}/man1/jdb.1$ext jdb.1$ext \\
- %{_mandir}/man1/jdb-%{uniquesuffix -- %{?1}}.1$ext \\
- --slave %{_mandir}/man1/jdeps.1$ext jdeps.1$ext \\
- %{_mandir}/man1/jdeps-%{uniquesuffix -- %{?1}}.1$ext \\
- --slave %{_mandir}/man1/jinfo.1$ext jinfo.1$ext \\
- %{_mandir}/man1/jinfo-%{uniquesuffix -- %{?1}}.1$ext \\
- --slave %{_mandir}/man1/jmap.1$ext jmap.1$ext \\
- %{_mandir}/man1/jmap-%{uniquesuffix -- %{?1}}.1$ext \\
- --slave %{_mandir}/man1/jps.1$ext jps.1$ext \\
- %{_mandir}/man1/jps-%{uniquesuffix -- %{?1}}.1$ext \\
- --slave %{_mandir}/man1/jrunscript.1$ext jrunscript.1$ext \\
- %{_mandir}/man1/jrunscript-%{uniquesuffix -- %{?1}}.1$ext \\
- --slave %{_mandir}/man1/jstack.1$ext jstack.1$ext \\
- %{_mandir}/man1/jstack-%{uniquesuffix -- %{?1}}.1$ext \\
- --slave %{_mandir}/man1/jstat.1$ext jstat.1$ext \\
- %{_mandir}/man1/jstat-%{uniquesuffix -- %{?1}}.1$ext \\
- --slave %{_mandir}/man1/jstatd.1$ext jstatd.1$ext \\
- %{_mandir}/man1/jstatd-%{uniquesuffix -- %{?1}}.1$ext \\
- --slave %{_mandir}/man1/rmic.1$ext rmic.1$ext \\
- %{_mandir}/man1/rmic-%{uniquesuffix -- %{?1}}.1$ext \\
- --slave %{_mandir}/man1/serialver.1$ext serialver.1$ext \\
- %{_mandir}/man1/serialver-%{uniquesuffix -- %{?1}}.1$ext \\
-
-for X in %{origin} %{javaver} ; do
- alternatives \\
- --install %{_jvmdir}/java-"$X" java_sdk_"$X" %{_jvmdir}/%{sdkdir -- %{?1}} $PRIORITY --family %{name}.%{_arch}
-done
-
-update-alternatives --install %{_jvmdir}/java-%{javaver}-%{origin} java_sdk_%{javaver}_%{origin} %{_jvmdir}/%{sdkdir -- %{?1}} $PRIORITY --family %{name}.%{_arch}
-
-update-desktop-database %{_datadir}/applications &> /dev/null || :
-/bin/touch --no-create %{_datadir}/icons/hicolor &>/dev/null || :
-
-exit 0
-}
-
-%define postun_devel() %{expand:
- alternatives --remove javac %{sdkbindir -- %{?1}}/javac
- alternatives --remove java_sdk_%{origin} %{_jvmdir}/%{sdkdir -- %{?1}}
- alternatives --remove java_sdk_%{javaver} %{_jvmdir}/%{sdkdir -- %{?1}}
- alternatives --remove java_sdk_%{javaver}_%{origin} %{_jvmdir}/%{sdkdir -- %{?1}}
-
-update-desktop-database %{_datadir}/applications &> /dev/null || :
-
-if [ $1 -eq 0 ] ; then
- /bin/touch --no-create %{_datadir}/icons/hicolor &>/dev/null
- %{update_desktop_icons}
-fi
-exit 0
-}
-
-%define posttrans_devel() %{expand:
-%{update_desktop_icons}
-}
-
-%define post_javadoc() %{expand:
-
-PRIORITY=%{priority}
-if [ "%{?1}" == %{debug_suffix} ]; then
- let PRIORITY=PRIORITY-1
-fi
-
-alternatives \\
- --install %{_javadocdir}/java javadocdir %{_javadocdir}/%{uniquejavadocdir -- %{?1}}/api \\
- $PRIORITY --family %{name}
-exit 0
-}
-
-%define postun_javadoc() %{expand:
- alternatives --remove javadocdir %{_javadocdir}/%{uniquejavadocdir -- %{?1}}/api
-exit 0
-}
-
-%define post_javadoc_zip() %{expand:
-
-PRIORITY=%{priority}
-if [ "%{?1}" == %{debug_suffix} ]; then
- let PRIORITY=PRIORITY-1
-fi
-
-alternatives \\
- --install %{_javadocdir}/java-zip javadoczip %{_javadocdir}/%{uniquejavadocdir -- %{?1}}.zip \\
- $PRIORITY --family %{name}
-exit 0
-}
-
-%define postun_javadoc_zip() %{expand:
- alternatives --remove javadoczip %{_javadocdir}/%{uniquejavadocdir -- %{?1}}.zip
-exit 0
-}
-
-%define files_jre() %{expand:
-%{_datadir}/icons/hicolor/*x*/apps/java-%{javaver}-%{origin}.png
-%{_jvmdir}/%{sdkdir -- %{?1}}/lib/libsplashscreen.so
-%{_jvmdir}/%{sdkdir -- %{?1}}/lib/libawt_xawt.so
-%{_jvmdir}/%{sdkdir -- %{?1}}/lib/libjawt.so
-}
-
-
-%define files_jre_headless() %{expand:
-%license %{_jvmdir}/%{sdkdir -- %{?1}}/legal
-%dir %{_sysconfdir}/.java/.systemPrefs
-%dir %{_sysconfdir}/.java
-%dir %{_jvmdir}/%{sdkdir -- %{?1}}
-%{_jvmdir}/%{sdkdir -- %{?1}}/release
-%{_jvmdir}/%{jrelnk -- %{?1}}
-%dir %{_jvmdir}/%{sdkdir -- %{?1}}/bin
-%{_jvmdir}/%{sdkdir -- %{?1}}/bin/java
-%{_jvmdir}/%{sdkdir -- %{?1}}/bin/jjs
-%{_jvmdir}/%{sdkdir -- %{?1}}/bin/keytool
-%{_jvmdir}/%{sdkdir -- %{?1}}/bin/pack200
-%{_jvmdir}/%{sdkdir -- %{?1}}/bin/rmid
-%{_jvmdir}/%{sdkdir -- %{?1}}/bin/rmiregistry
-%{_jvmdir}/%{sdkdir -- %{?1}}/bin/unpack200
-%dir %{_jvmdir}/%{sdkdir -- %{?1}}/lib
-%ifarch %{jit_arches}
-%{_jvmdir}/%{sdkdir -- %{?1}}/lib/classlist
-%endif
-%{_jvmdir}/%{sdkdir -- %{?1}}/lib/jexec
-%{_jvmdir}/%{sdkdir -- %{?1}}/lib/jspawnhelper
-%{_jvmdir}/%{sdkdir -- %{?1}}/lib/jrt-fs.jar
-%{_jvmdir}/%{sdkdir -- %{?1}}/lib/modules
-%{_jvmdir}/%{sdkdir -- %{?1}}/lib/psfont.properties.ja
-%{_jvmdir}/%{sdkdir -- %{?1}}/lib/psfontj2d.properties
-%{_jvmdir}/%{sdkdir -- %{?1}}/lib/tzdb.dat
-%{_jvmdir}/%{sdkdir -- %{?1}}/lib/libjli.so
-%{_jvmdir}/%{sdkdir -- %{?1}}/lib/jvm.cfg
-%{_jvmdir}/%{sdkdir -- %{?1}}/lib/libattach.so
-%{_jvmdir}/%{sdkdir -- %{?1}}/lib/libawt.so
-%{_jvmdir}/%{sdkdir -- %{?1}}/lib/libextnet.so
-%{_jvmdir}/%{sdkdir -- %{?1}}/lib/libjsig.so
-%{_jvmdir}/%{sdkdir -- %{?1}}/lib/libawt_headless.so
-%{_jvmdir}/%{sdkdir -- %{?1}}/lib/libdt_socket.so
-%{_jvmdir}/%{sdkdir -- %{?1}}/lib/libfontmanager.so
-%{_jvmdir}/%{sdkdir -- %{?1}}/lib/libinstrument.so
-%{_jvmdir}/%{sdkdir -- %{?1}}/lib/libj2gss.so
-%{_jvmdir}/%{sdkdir -- %{?1}}/lib/libj2pcsc.so
-%{_jvmdir}/%{sdkdir -- %{?1}}/lib/libj2pkcs11.so
-%{_jvmdir}/%{sdkdir -- %{?1}}/lib/libjaas.so
-%{_jvmdir}/%{sdkdir -- %{?1}}/lib/libjava.so
-%{_jvmdir}/%{sdkdir -- %{?1}}/lib/libjavajpeg.so
-%{_jvmdir}/%{sdkdir -- %{?1}}/lib/libjdwp.so
-%{_jvmdir}/%{sdkdir -- %{?1}}/lib/libjimage.so
-%{_jvmdir}/%{sdkdir -- %{?1}}/lib/libjsound.so
-%{_jvmdir}/%{sdkdir -- %{?1}}/lib/liblcms.so
-%{_jvmdir}/%{sdkdir -- %{?1}}/lib/libmanagement.so
-%{_jvmdir}/%{sdkdir -- %{?1}}/lib/libmanagement_agent.so
-%{_jvmdir}/%{sdkdir -- %{?1}}/lib/libmanagement_ext.so
-%{_jvmdir}/%{sdkdir -- %{?1}}/lib/libmlib_image.so
-%{_jvmdir}/%{sdkdir -- %{?1}}/lib/libnet.so
-%{_jvmdir}/%{sdkdir -- %{?1}}/lib/libnio.so
-%{_jvmdir}/%{sdkdir -- %{?1}}/lib/libprefs.so
-%{_jvmdir}/%{sdkdir -- %{?1}}/lib/librmi.so
-# Zero and S390x don't have SA
-%ifarch %{jit_arches}
-%ifnarch s390x
-%{_jvmdir}/%{sdkdir -- %{?1}}/lib/libsaproc.so
-%endif
-%endif
-%{_jvmdir}/%{sdkdir -- %{?1}}/lib/libsctp.so
-%{_jvmdir}/%{sdkdir -- %{?1}}/lib/libsunec.so
-%{_jvmdir}/%{sdkdir -- %{?1}}/lib/libunpack.so
-%{_jvmdir}/%{sdkdir -- %{?1}}/lib/libverify.so
-%{_jvmdir}/%{sdkdir -- %{?1}}/lib/libzip.so
-%dir %{_jvmdir}/%{sdkdir -- %{?1}}/lib/jfr
-%{_jvmdir}/%{sdkdir -- %{?1}}/lib/jfr/default.jfc
-%{_jvmdir}/%{sdkdir -- %{?1}}/lib/jfr/profile.jfc
-%{_mandir}/man1/java-%{uniquesuffix -- %{?1}}.1*
-%{_mandir}/man1/jjs-%{uniquesuffix -- %{?1}}.1*
-%{_mandir}/man1/keytool-%{uniquesuffix -- %{?1}}.1*
-%{_mandir}/man1/pack200-%{uniquesuffix -- %{?1}}.1*
-%{_mandir}/man1/rmid-%{uniquesuffix -- %{?1}}.1*
-%{_mandir}/man1/rmiregistry-%{uniquesuffix -- %{?1}}.1*
-%{_mandir}/man1/unpack200-%{uniquesuffix -- %{?1}}.1*
-%{_jvmdir}/%{sdkdir -- %{?1}}/lib/server/
-%{_jvmdir}/%{sdkdir -- %{?1}}/lib/client/
-%ifarch %{jit_arches}
-%ifnarch %{power64}
-%attr(444, root, root) %ghost %{_jvmdir}/%{sdkdir -- %{?1}}/lib/server/classes.jsa
-%attr(444, root, root) %ghost %{_jvmdir}/%{sdkdir -- %{?1}}/lib/client/classes.jsa
-%endif
-%endif
-%dir %{etcjavasubdir}
-%dir %{etcjavadir -- %{?1}}
-%dir %{etcjavadir -- %{?1}}/lib
-%dir %{etcjavadir -- %{?1}}/lib/security
-%{etcjavadir -- %{?1}}/lib/security/cacerts
-%dir %{etcjavadir -- %{?1}}/conf
-%dir %{etcjavadir -- %{?1}}/conf/sdp
-%dir %{etcjavadir -- %{?1}}/conf/management
-%dir %{etcjavadir -- %{?1}}/conf/security
-%dir %{etcjavadir -- %{?1}}/conf/security/policy
-%dir %{etcjavadir -- %{?1}}/conf/security/policy/limited
-%dir %{etcjavadir -- %{?1}}/conf/security/policy/unlimited
-%config(noreplace) %{etcjavadir -- %{?1}}/lib/security/default.policy
-%config(noreplace) %{etcjavadir -- %{?1}}/lib/security/blacklisted.certs
-%config(noreplace) %{etcjavadir -- %{?1}}/lib/security/public_suffix_list.dat
-%config(noreplace) %{etcjavadir -- %{?1}}/conf/security/policy/limited/exempt_local.policy
-%config(noreplace) %{etcjavadir -- %{?1}}/conf/security/policy/limited/default_local.policy
-%config(noreplace) %{etcjavadir -- %{?1}}/conf/security/policy/limited/default_US_export.policy
-%config(noreplace) %{etcjavadir -- %{?1}}/conf/security/policy/unlimited/default_local.policy
-%config(noreplace) %{etcjavadir -- %{?1}}/conf/security/policy/unlimited/default_US_export.policy
- %{etcjavadir -- %{?1}}/conf/security/policy/README.txt
-%config(noreplace) %{etcjavadir -- %{?1}}/conf/security/java.policy
-%config(noreplace) %{etcjavadir -- %{?1}}/conf/security/java.security
-%config(noreplace) %{etcjavadir -- %{?1}}/conf/logging.properties
-%config(noreplace) %{etcjavadir -- %{?1}}/conf/security/nss.cfg
-%config(noreplace) %{etcjavadir -- %{?1}}/conf/management/jmxremote.access
-# these are config templates, thus not config-noreplace
-%config %{etcjavadir -- %{?1}}/conf/management/jmxremote.password.template
-%config %{etcjavadir -- %{?1}}/conf/sdp/sdp.conf.template
-%config(noreplace) %{etcjavadir -- %{?1}}/conf/management/management.properties
-%config(noreplace) %{etcjavadir -- %{?1}}/conf/net.properties
-%config(noreplace) %{etcjavadir -- %{?1}}/conf/sound.properties
-%{_jvmdir}/%{sdkdir -- %{?1}}/conf
-%{_jvmdir}/%{sdkdir -- %{?1}}/lib/security
-%if %is_system_jdk
-%if %{is_release_build -- %{?1}}
-%ghost %{_bindir}/java
-%ghost %{_jvmdir}/jre
-# https://bugzilla.redhat.com/show_bug.cgi?id=1312019
-%ghost %{_bindir}/jjs
-%ghost %{_bindir}/keytool
-%ghost %{_bindir}/pack200
-%ghost %{_bindir}/rmid
-%ghost %{_bindir}/rmiregistry
-%ghost %{_bindir}/unpack200
-%ghost %{_jvmdir}/jre-%{origin}
-%ghost %{_jvmdir}/jre-%{javaver}
-%ghost %{_jvmdir}/jre-%{javaver}-%{origin}
-%endif
-%endif
-}
-
-%define files_devel() %{expand:
-%dir %{_jvmdir}/%{sdkdir -- %{?1}}/bin
-%{_jvmdir}/%{sdkdir -- %{?1}}/bin/jar
-%{_jvmdir}/%{sdkdir -- %{?1}}/bin/jarsigner
-%{_jvmdir}/%{sdkdir -- %{?1}}/bin/javac
-%{_jvmdir}/%{sdkdir -- %{?1}}/bin/javadoc
-%{_jvmdir}/%{sdkdir -- %{?1}}/bin/javap
-%{_jvmdir}/%{sdkdir -- %{?1}}/bin/jconsole
-%{_jvmdir}/%{sdkdir -- %{?1}}/bin/jcmd
-%{_jvmdir}/%{sdkdir -- %{?1}}/bin/jfr
-%{_jvmdir}/%{sdkdir -- %{?1}}/bin/jdb
-%{_jvmdir}/%{sdkdir -- %{?1}}/bin/jdeps
-%{_jvmdir}/%{sdkdir -- %{?1}}/bin/jdeprscan
-%{_jvmdir}/%{sdkdir -- %{?1}}/bin/jimage
-# Zero and S390x don't have SA
-%ifarch %{jit_arches}
-%ifnarch s390x
-%{_jvmdir}/%{sdkdir -- %{?1}}/bin/jhsdb
-%endif
-%endif
-%{_jvmdir}/%{sdkdir -- %{?1}}/bin/jinfo
-%{_jvmdir}/%{sdkdir -- %{?1}}/bin/jlink
-%{_jvmdir}/%{sdkdir -- %{?1}}/bin/jmap
-%{_jvmdir}/%{sdkdir -- %{?1}}/bin/jmod
-%{_jvmdir}/%{sdkdir -- %{?1}}/bin/jps
-%{_jvmdir}/%{sdkdir -- %{?1}}/bin/jrunscript
-%{_jvmdir}/%{sdkdir -- %{?1}}/bin/jshell
-%{_jvmdir}/%{sdkdir -- %{?1}}/bin/jstack
-%{_jvmdir}/%{sdkdir -- %{?1}}/bin/jstat
-%{_jvmdir}/%{sdkdir -- %{?1}}/bin/jstatd
-%{_jvmdir}/%{sdkdir -- %{?1}}/bin/rmic
-%{_jvmdir}/%{sdkdir -- %{?1}}/bin/serialver
-%ifarch %{aot_arches}
-%{_jvmdir}/%{sdkdir -- %{?1}}/bin/jaotc
-%endif
-%{_jvmdir}/%{sdkdir -- %{?1}}/include
-%{_jvmdir}/%{sdkdir -- %{?1}}/lib/ct.sym
-%if %{with_systemtap}
-%{_jvmdir}/%{sdkdir -- %{?1}}/tapset
-%endif
-%{_datadir}/applications/*jconsole%{?1}.desktop
-%{_mandir}/man1/jar-%{uniquesuffix -- %{?1}}.1*
-%{_mandir}/man1/jarsigner-%{uniquesuffix -- %{?1}}.1*
-%{_mandir}/man1/javac-%{uniquesuffix -- %{?1}}.1*
-%{_mandir}/man1/javadoc-%{uniquesuffix -- %{?1}}.1*
-%{_mandir}/man1/javap-%{uniquesuffix -- %{?1}}.1*
-%{_mandir}/man1/jconsole-%{uniquesuffix -- %{?1}}.1*
-%{_mandir}/man1/jcmd-%{uniquesuffix -- %{?1}}.1*
-%{_mandir}/man1/jdb-%{uniquesuffix -- %{?1}}.1*
-%{_mandir}/man1/jdeps-%{uniquesuffix -- %{?1}}.1*
-%{_mandir}/man1/jinfo-%{uniquesuffix -- %{?1}}.1*
-%{_mandir}/man1/jmap-%{uniquesuffix -- %{?1}}.1*
-%{_mandir}/man1/jps-%{uniquesuffix -- %{?1}}.1*
-%{_mandir}/man1/jrunscript-%{uniquesuffix -- %{?1}}.1*
-%{_mandir}/man1/jstack-%{uniquesuffix -- %{?1}}.1*
-%{_mandir}/man1/jstat-%{uniquesuffix -- %{?1}}.1*
-%{_mandir}/man1/jstatd-%{uniquesuffix -- %{?1}}.1*
-%{_mandir}/man1/rmic-%{uniquesuffix -- %{?1}}.1*
-%{_mandir}/man1/serialver-%{uniquesuffix -- %{?1}}.1*
-%if %{with_systemtap}
-%dir %{tapsetroot}
-%dir %{tapsetdirttapset}
-%dir %{tapsetdir}
-%{tapsetdir}/*%{_arch}%{?1}.stp
-%endif
-%if %is_system_jdk
-%if %{is_release_build -- %{?1}}
-%ghost %{_bindir}/javac
-%ghost %{_jvmdir}/java
-%ghost %{_bindir}/jaotc
-%ghost %{_bindir}/jlink
-%ghost %{_bindir}/jmod
-%ghost %{_bindir}/jhsdb
-%ghost %{_bindir}/jar
-%ghost %{_bindir}/jarsigner
-%ghost %{_bindir}/javadoc
-%ghost %{_bindir}/javap
-%ghost %{_bindir}/jcmd
-%ghost %{_bindir}/jconsole
-%ghost %{_bindir}/jdb
-%ghost %{_bindir}/jdeps
-%ghost %{_bindir}/jdeprscan
-%ghost %{_bindir}/jimage
-%ghost %{_bindir}/jinfo
-%ghost %{_bindir}/jmap
-%ghost %{_bindir}/jps
-%ghost %{_bindir}/jrunscript
-%ghost %{_bindir}/jshell
-%ghost %{_bindir}/jstack
-%ghost %{_bindir}/jstat
-%ghost %{_bindir}/jstatd
-%ghost %{_bindir}/rmic
-%ghost %{_bindir}/serialver
-%ghost %{_jvmdir}/java-%{origin}
-%ghost %{_jvmdir}/java-%{javaver}
-%ghost %{_jvmdir}/java-%{javaver}-%{origin}
-%endif
-%endif
-}
-
-%define files_jmods() %{expand:
-%{_jvmdir}/%{sdkdir -- %{?1}}/jmods
-}
-
-%define files_demo() %{expand:
-%license %{_jvmdir}/%{sdkdir -- %{?1}}/legal
-%{_jvmdir}/%{sdkdir -- %{?1}}/demo
-%{_jvmdir}/%{sdkdir -- %{?1}}/sample
-}
-
-%define files_src() %{expand:
-%license %{_jvmdir}/%{sdkdir -- %{?1}}/legal
-%{_jvmdir}/%{sdkdir -- %{?1}}/lib/src.zip
-}
-
-%define files_javadoc() %{expand:
-%doc %{_javadocdir}/%{uniquejavadocdir -- %{?1}}
-%license %{buildoutputdir -- %{?1}}/images/%{jdkimage}/legal
-%if %is_system_jdk
-%if %{is_release_build -- %{?1}}
-%ghost %{_javadocdir}/java
-%endif
-%endif
-}
-
-%define files_javadoc_zip() %{expand:
-%doc %{_javadocdir}/%{uniquejavadocdir -- %{?1}}.zip
-%license %{buildoutputdir -- %{?1}}/images/%{jdkimage}/legal
-%if %is_system_jdk
-%if %{is_release_build -- %{?1}}
-%ghost %{_javadocdir}/java-zip
-%endif
-%endif
-}
-
# not-duplicated requires/provides/obsoletes for normal/debug packages
%define java_rpo() %{expand:
-Requires: fontconfig%{?_isa}
-Requires: xorg-x11-fonts-Type1
# Requires rest of java
Requires: %{name}-headless%{?1}%{?_isa} = %{epoch}:%{version}-%{release}
OrderWithRequires: %{name}-headless%{?1}%{?_isa} = %{epoch}:%{version}-%{release}
-# for java-X-openjdk package's desktop binding
-Recommends: gtk3%{?_isa}
-
-Provides: java-%{javaver}-%{origin}%{?1} = %{epoch}:%{version}-%{release}
-
-# Standard JPackage base provides
-Provides: jre-%{javaver}%{?1} = %{epoch}:%{version}-%{release}
-Provides: jre-%{javaver}-%{origin}%{?1} = %{epoch}:%{version}-%{release}
-Provides: java-%{javaver}%{?1} = %{epoch}:%{version}-%{release}
-%if %is_system_jdk
-Provides: java-%{origin}%{?1} = %{epoch}:%{version}-%{release}
-Provides: jre-%{origin}%{?1} = %{epoch}:%{version}-%{release}
-Provides: java%{?1} = %{epoch}:%{version}-%{release}
-Provides: jre%{?1} = %{epoch}:%{version}-%{release}
-%endif
+Requires: java-latest-openjdk%{?1}%{?_isa}
}
%define java_headless_rpo() %{expand:
-# Require /etc/pki/java/cacerts
-Requires: ca-certificates
-# Require javapackages-filesystem for ownership of /usr/lib/jvm/ and macros
-Requires: javapackages-filesystem
-# Require zone-info data provided by tzdata-java sub-package
-Requires: tzdata-java >= 2015d
-# there is a need to depend on the exact version of NSS
-Requires: nss%{?_isa} %{NSS_BUILDTIME_VERSION}
-Requires: nss-softokn%{?_isa} %{NSSSOFTOKN_BUILDTIME_VERSION}
-# tool to copy jdk's configs - should be Recommends only, but then only dnf/yum enforce it,
-# not rpm transaction and so no configs are persisted when pure rpm -u is run. It may be
-# considered as regression
-Requires: copy-jdk-configs >= 3.3
-OrderWithRequires: copy-jdk-configs
-# for printing support
-Requires: cups-libs
-# Post requires alternatives to install tool alternatives
-Requires(post): %{_sbindir}/alternatives
-# Postun requires alternatives to uninstall tool alternatives
-Requires(postun): %{_sbindir}/alternatives
-# for optional support of kernel stream control, card reader and printing bindings
-Suggests: lksctp-tools%{?_isa}, pcsc-lite-libs%{?_isa}
-
-# Standard JPackage base provides
-Provides: jre-%{javaver}-%{origin}-headless%{?1} = %{epoch}:%{version}-%{release}
-Provides: jre-%{javaver}-headless%{?1} = %{epoch}:%{version}-%{release}
-Provides: java-%{javaver}-%{origin}-headless%{?1} = %{epoch}:%{version}-%{release}
-Provides: java-%{javaver}-headless%{?1} = %{epoch}:%{version}-%{release}
-%if %is_system_jdk
-Provides: java-%{origin}-headless%{?1} = %{epoch}:%{version}-%{release}
-Provides: jre-%{origin}-headless%{?1} = %{epoch}:%{version}-%{release}
-Provides: jre-headless%{?1} = %{epoch}:%{version}-%{release}
-Provides: java-headless%{?1} = %{epoch}:%{version}-%{release}
-%endif
+Requires: java-latest-openjdk-headless%{?1}%{?_isa}
}
%define java_devel_rpo() %{expand:
# Requires base package
Requires: %{name}%{?1}%{?_isa} = %{epoch}:%{version}-%{release}
OrderWithRequires: %{name}-headless%{?1}%{?_isa} = %{epoch}:%{version}-%{release}
-# Post requires alternatives to install tool alternatives
-Requires(post): %{_sbindir}/alternatives
-# Postun requires alternatives to uninstall tool alternatives
-Requires(postun): %{_sbindir}/alternatives
-
-# Standard JPackage devel provides
-Provides: java-sdk-%{javaver}-%{origin}%{?1} = %{epoch}:%{version}-%{release}
-Provides: java-sdk-%{javaver}%{?1} = %{epoch}:%{version}-%{release}
-Provides: java-%{javaver}-devel%{?1} = %{epoch}:%{version}-%{release}
-Provides: java-%{javaver}-%{origin}-devel%{?1} = %{epoch}:%{version}-%{release}
-%if %is_system_jdk
-Provides: java-devel-%{origin}%{?1} = %{epoch}:%{version}-%{release}
-Provides: java-sdk-%{origin}%{?1} = %{epoch}:%{version}-%{release}
-Provides: java-devel%{?1} = %{epoch}:%{version}-%{release}
-Provides: java-sdk%{?1} = %{epoch}:%{version}-%{release}
-%endif
+Requires: java-latest-openjdk-devel%{?1}%{?_isa}
}
%define java_jmods_rpo() %{expand:
@@ -891,49 +232,23 @@ Provides: java-sdk%{?1} = %{epoch}:%{version}-%{release}
# as jmods are bytecode, they should be OK without any _isa
Requires: %{name}-devel%{?1} = %{epoch}:%{version}-%{release}
OrderWithRequires: %{name}-headless%{?1} = %{epoch}:%{version}-%{release}
-
-Provides: java-%{javaver}-jmods%{?1} = %{epoch}:%{version}-%{release}
-Provides: java-%{javaver}-%{origin}-jmods%{?1} = %{epoch}:%{version}-%{release}
-%if %is_system_jdk
-Provides: java-jmods%{?1} = %{epoch}:%{version}-%{release}
-%endif
+Requires: java-latest-openjdk-jmods%{?1}%{?_isa}
}
%define java_demo_rpo() %{expand:
Requires: %{name}%{?1}%{?_isa} = %{epoch}:%{version}-%{release}
OrderWithRequires: %{name}-headless%{?1}%{?_isa} = %{epoch}:%{version}-%{release}
-
-Provides: java-%{javaver}-demo%{?1} = %{epoch}:%{version}-%{release}
-Provides: java-%{javaver}-%{origin}-demo%{?1} = %{epoch}:%{version}-%{release}
-%if %is_system_jdk
-Provides: java-demo%{?1} = %{epoch}:%{version}-%{release}
-%endif
+Requires: java-latest-openjdk-demo%{?1}%{?_isa}
}
%define java_javadoc_rpo() %{expand:
OrderWithRequires: %{name}-headless%{?1}%{?_isa} = %{epoch}:%{version}-%{release}
-# Post requires alternatives to install javadoc alternative
-Requires(post): %{_sbindir}/alternatives
-# Postun requires alternatives to uninstall javadoc alternative
-Requires(postun): %{_sbindir}/alternatives
-
-# Standard JPackage javadoc provides
-Provides: java-%{javaver}-javadoc%{?1} = %{epoch}:%{version}-%{release}
-Provides: java-%{javaver}-%{origin}-javadoc%{?1} = %{epoch}:%{version}-%{release}
-%if %is_system_jdk
-Provides: java-javadoc%{?1} = %{epoch}:%{version}-%{release}
-%endif
+Requires: java-latest-openjdk-javadoc%{?1}%{?_isa}
}
%define java_src_rpo() %{expand:
Requires: %{name}-headless%{?1}%{?_isa} = %{epoch}:%{version}-%{release}
-
-# Standard JPackage sources provides
-Provides: java-%{javaver}-src%{?1} = %{epoch}:%{version}-%{release}
-Provides: java-%{javaver}-%{origin}-src%{?1} = %{epoch}:%{version}-%{release}
-%if %is_system_jdk
-Provides: java-src%{?1} = %{epoch}:%{version}-%{release}
-%endif
+Requires: java-latest-openjdk-src%{?1}%{?_isa}
}
# Prevent brp-java-repack-jars from being run
@@ -944,7 +259,7 @@ Version: %{newjavaver}.%{buildver}
# This package needs `.rolling` as part of Release so as to not conflict on install with
# java-X-openjdk. I.e. when latest rolling release is also an LTS release packaged as
# java-X-openjdk. See: https://bugzilla.redhat.com/show_bug.cgi?id=1647298
-Release: 3.rolling%{?dist}
+Release: 4.rolling%{?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
@@ -956,7 +271,7 @@ Release: 3.rolling%{?dist}
# provides >= 1.6.0 must specify the epoch, "java >= 1:1.6.0".
Epoch: 1
-Summary: %{origin_nice} Runtime Environment %{majorver}
+Summary: Renamed to java-latest-openjdk
# HotSpot code is licensed under GPLv2
# JDK library code is licensed under GPLv2 with the Classpath exception
@@ -975,850 +290,219 @@ Summary: %{origin_nice} Runtime Environment %{majorver}
License: ASL 1.1 and ASL 2.0 and BSD and BSD with advertising and GPL+ and GPLv2 and GPLv2 with exceptions and IJG and LGPLv2+ and MIT and MPLv2.0 and Public Domain and W3C and zlib and ISC and FTL and RSA
URL: http://openjdk.java.net/
-
-# to regenerate source0 (jdk) and source8 (jdk's taspets) run update_package.sh
-# update_package.sh contains hard-coded repos, revisions, tags, and projects to regenerate the source archives
-Source0: jdk-jdk%{majorver}-jdk-%{majorver}+%{buildver}.tar.xz
-Source8: systemtap_3.2_tapsets_hg-icedtea8-9d464368e06d.tar.xz
-
-# Desktop files. Adapted from IcedTea
-Source9: jconsole.desktop.in
-
-# nss configuration file
-Source11: nss.cfg.in
-
-# Removed libraries that we link instead
-Source12: remove-intree-libraries.sh
-
-# Ensure we aren't using the limited crypto policy
-Source13: TestCryptoLevel.java
-
-# Ensure ECDSA is working
-Source14: TestECDSA.java
-
-############################################
-#
-# RPM/distribution specific patches
-#
-############################################
-
-# NSS via SunPKCS11 Provider (disabled comment
-# due to memory leak).
-Patch1000: rh1648249-add_commented_out_nss_cfg_provider_to_java_security.patch
-
-# Ignore AWTError when assistive technologies are loaded
-Patch1: rh1648242-accessible_toolkit_crash_do_not_break_jvm.patch
-# Restrict access to java-atk-wrapper classes
-Patch2: rh1648644-java_access_bridge_privileged_security.patch
-Patch3: rh649512-remove_uses_of_far_in_jpeg_libjpeg_turbo_1_4_compat_for_jdk10_and_up.patch
-# Follow system wide crypto policy RHBZ#1249083
-Patch4: pr3183-rh1340845-support_fedora_rhel_system_crypto_policy.patch
-# System NSS via SunEC Provider
-Patch5: pr1983-rh1565658-support_using_the_system_installation_of_nss_with_the_sunec_provider_jdk12.patch
-# Depend on pcs-lite-libs instead of pcs-lite-devel as this is only in optional repo
-Patch6: rh1684077-openjdk_should_depend_on_pcsc-lite-libs_instead_of_pcsc-lite-devel.patch
-
-BuildRequires: autoconf
-BuildRequires: automake
-BuildRequires: alsa-lib-devel
-BuildRequires: binutils
-BuildRequires: cups-devel
-BuildRequires: desktop-file-utils
-# elfutils only are OK for build without AOT
-BuildRequires: elfutils-devel
-BuildRequires: fontconfig
-BuildRequires: freetype-devel
-BuildRequires: giflib-devel
-BuildRequires: gcc-c++
-BuildRequires: gdb
-BuildRequires: gtk3-devel
-BuildRequires: lcms2-devel
-BuildRequires: libjpeg-devel
-BuildRequires: libpng-devel
-BuildRequires: libxslt
-BuildRequires: libX11-devel
-BuildRequires: libXi-devel
-BuildRequires: libXinerama-devel
-BuildRequires: libXt-devel
-BuildRequires: libXtst-devel
-# Requirements for setting up the nss.cfg
-BuildRequires: nss-devel
-BuildRequires: pkgconfig
-BuildRequires: xorg-x11-proto-devel
-BuildRequires: zip
-BuildRequires: javapackages-filesystem
-BuildRequires: java-%{buildjdkver}-openjdk-devel
-# Zero-assembler build requirement
-%ifnarch %{jit_arches}
-BuildRequires: libffi-devel
-%endif
-BuildRequires: tzdata-java >= 2015d
-# Earlier versions have a bug in tree vectorization on PPC
-BuildRequires: gcc >= 4.8.3-8
-# Build requirements for SunEC system NSS support
-BuildRequires: nss-softokn-freebl-devel >= 3.16.1
-
-%if %{with_systemtap}
-BuildRequires: systemtap-sdt-devel
-%endif
-
# this is always built, also during debug-only build
# when it is built in debug-only this package is just placeholder
%{java_rpo %{nil}}
%description
-The %{origin_nice} runtime environment.
+This package was renamed to java-latest-openjdk and is empty, it only requires java-latest-openjdk for update purposes. This package will be eventually deleted.
%if %{include_debug_build}
%package slowdebug
-Summary: %{origin_nice} Runtime Environment %{majorver} %{debug_on}
+Summary: Renamed to java-latest-openjdk-slowdebug
%{java_rpo -- %{debug_suffix_unquoted}}
%description slowdebug
-The %{origin_nice} runtime environment.
+This package was renamed to java-latest-openjdk-slowdebug and is empty, it only requires java-latest-openjdk for update purposes. This package will be eventually deleted.
%{debug_warning}
%endif
%if %{include_normal_build}
%package headless
-Summary: %{origin_nice} Headless Runtime Environment %{majorver}
+Summary: Renamed to java-latest-openjdk-headless
%{java_headless_rpo %{nil}}
%description headless
-The %{origin_nice} runtime environment %{majorver} without audio and video support.
+This package was renamed to java-latest-openjdk-headless and is empty, it only requires java-latest-openjdk for update purposes. This package will be eventually deleted.
%endif
%if %{include_debug_build}
%package headless-slowdebug
-Summary: %{origin_nice} Runtime Environment %{debug_on}
+Summary: Renamed to java-latest-openjdk-headless-slowdebug
%{java_headless_rpo -- %{debug_suffix_unquoted}}
%description headless-slowdebug
-The %{origin_nice} runtime environment %{majorver} without audio and video support.
+This package was renamed to java-latest-openjdk-headless-slowdebug and is empty, it only requires java-latest-openjdk for update purposes. This package will be eventually deleted.
%{debug_warning}
%endif
%if %{include_normal_build}
%package devel
-Summary: %{origin_nice} Development Environment %{majorver}
+Summary: Renamed to java-latest-openjdk-devel
%{java_devel_rpo %{nil}}
%description devel
-The %{origin_nice} development tools %{majorver}.
+This package was renamed to java-latest-openjdk-devel and is empty, it only requires java-latest-openjdk for update purposes. This package will be eventually deleted.
%endif
%if %{include_debug_build}
%package devel-slowdebug
-Summary: %{origin_nice} Development Environment %{majorver} %{debug_on}
+Summary: Renamed to java-latest-openjdk-devel-slowdebug
%{java_devel_rpo -- %{debug_suffix_unquoted}}
%description devel-slowdebug
-The %{origin_nice} development tools %{majorver}.
+This package was renamed to java-latest-openjdk-devel-slowdebug and is empty, it only requires java-latest-openjdk for update purposes. This package will be eventually deleted.
%{debug_warning}
%endif
%if %{include_normal_build}
%package jmods
-Summary: JMods for %{origin_nice} %{majorver}
+Summary: Renamed to java-latest-openjdk-jmods
%{java_jmods_rpo %{nil}}
%description jmods
-The JMods for %{origin_nice}.
+This package was renamed to java-latest-openjdk-jmods and is empty, it only requires java-latest-openjdk for update purposes. This package will be eventually deleted.
%endif
%if %{include_debug_build}
%package jmods-slowdebug
-Summary: JMods for %{origin_nice} %{majorver} %{debug_on}
+Summary: Renamed to java-latest-openjdk-jmods-slowdebug
%{java_jmods_rpo -- %{debug_suffix_unquoted}}
%description jmods-slowdebug
-The JMods for %{origin_nice} %{majorver}.
+This package was renamed to java-latest-openjdk-jmods-slowdebug and is empty, it only requires java-latest-openjdk for update purposes. This package will be eventually deleted.
%{debug_warning}
%endif
%if %{include_normal_build}
%package demo
-Summary: %{origin_nice} Demos %{majorver}
+Summary: Renamed to java-latest-openjdk-demo
%{java_demo_rpo %{nil}}
%description demo
-The %{origin_nice} demos %{majorver}.
+This package was renamed to java-latest-openjdk-demo and is empty, it only requires java-latest-openjdk for update purposes. This package will be eventually deleted.
%endif
%if %{include_debug_build}
%package demo-slowdebug
-Summary: %{origin_nice} Demos %{majorver} %{debug_on}
+Summary: Renamed to java-latest-openjdk-demo-slowdebug
%{java_demo_rpo -- %{debug_suffix_unquoted}}
%description demo-slowdebug
-The %{origin_nice} demos %{majorver}.
+This package was renamed to java-latest-openjdk-demo-slowdebug and is empty, it only requires java-latest-openjdk for update purposes. This package will be eventually deleted.
%{debug_warning}
%endif
%if %{include_normal_build}
%package src
-Summary: %{origin_nice} Source Bundle %{majorver}
+Summary: Renamed to java-latest-openjdk-src
%{java_src_rpo %{nil}}
%description src
-The java-%{origin}-src sub-package contains the complete %{origin_nice} %{majorver}
-class library source code for use by IDE indexers and debuggers.
+This package was renamed to java-latest-openjdk-src and is empty, it only requires java-latest-openjdk for update purposes. This package will be eventually deleted.
%endif
%if %{include_debug_build}
%package src-slowdebug
-Summary: %{origin_nice} Source Bundle %{majorver} %{for_debug}
+Summary: Renamed to java-latest-openjdk-src-slowdebug
%{java_src_rpo -- %{debug_suffix_unquoted}}
%description src-slowdebug
-The java-%{origin}-src-slowdebug sub-package contains the complete %{origin_nice} %{majorver}
- class library source code for use by IDE indexers and debuggers. Debugging %{for_debug}.
+This package was renamed to java-latest-openjdk-src-slowdebug and is empty, it only requires java-latest-openjdk for update purposes. This package will be eventually deleted.
%endif
%if %{include_normal_build}
%package javadoc
-Summary: %{origin_nice} %{majorver} API documentation
-Requires: javapackages-filesystem
+Summary: Renamed to java-latest-openjdk-javadoc
%{java_javadoc_rpo %{nil}}
%description javadoc
-The %{origin_nice} %{majorver} API documentation.
+This package was renamed to java-latest-openjdk-javadoc and is empty, it only requires java-latest-openjdk for update purposes. This package will be eventually deleted.
%endif
%if %{include_normal_build}
%package javadoc-zip
-Summary: %{origin_nice} %{majorver} API documentation compressed in single archive
-Requires: javapackages-filesystem
-
-%{java_javadoc_rpo %{nil}}
+Summary: Renamed to java-latest-openjdk-javadoc-zip
+OrderWithRequires: %{name}-headless%{?1}%{?_isa} = %{epoch}:%{version}-%{release}
+Requires: java-latest-openjdk-javadoc-zip%{?_isa}
%description javadoc-zip
-The %{origin_nice} %{majorver} API documentation compressed in single archive.
+This package was renamed to java-latest-openjdk-javadoc-zip and is empty, it only requires java-latest-openjdk for update purposes. This package will be eventually deleted.
%endif
%if %{include_debug_build}
%package javadoc-slowdebug
-Summary: %{origin_nice} %{majorver} API documentation %{for_debug}
-Requires: javapackages-filesystem
+Summary: Renamed to java-latest-openjdk-javadoc-slowdebug
%{java_javadoc_rpo -- %{debug_suffix_unquoted}}
%description javadoc-slowdebug
-The %{origin_nice} %{majorver} API documentation %{for_debug}.
+This package was renamed to java-latest-openjdk-javadoc-slowdebug and is empty, it only requires java-latest-openjdk for update purposes. This package will be eventually deleted.
%endif
%if %{include_debug_build}
%package javadoc-zip-slowdebug
-Summary: %{origin_nice} %{majorver} API documentation compressed in single archive %{for_debug}
-Requires: javapackages-filesystem
-
-%{java_javadoc_rpo -- %{debug_suffix_unquoted}}
+Summary: Renamed to java-latest-openjdk-javadoc-zip-slowdebug
+OrderWithRequires: %{name}-headless%{?1}%{?_isa} = %{epoch}:%{version}-%{release}
+Requires: java-latest-openjdk-javadoc-zip-slowdebug%{?_isa}
%description javadoc-zip-slowdebug
-The %{origin_nice} %{majorver} API documentation compressed in single archive %{for_debug}.
-%endif
-
-
-%prep
-if [ %{include_normal_build} -eq 0 -o %{include_normal_build} -eq 1 ] ; then
- echo "include_normal_build is %{include_normal_build}"
-else
- echo "include_normal_build is %{include_normal_build}, thats invalid. Use 1 for yes or 0 for no"
- exit 11
-fi
-if [ %{include_debug_build} -eq 0 -o %{include_debug_build} -eq 1 ] ; then
- echo "include_debug_build is %{include_debug_build}"
-else
- echo "include_debug_build is %{include_debug_build}, thats invalid. Use 1 for yes or 0 for no"
- exit 12
-fi
-if [ %{include_debug_build} -eq 0 -a %{include_normal_build} -eq 0 ] ; then
- echo "You have disabled both include_debug_build and include_normal_build. That is a no go."
- exit 13
-fi
-%setup -q -c -n %{uniquesuffix ""} -T -a 0
-# https://bugzilla.redhat.com/show_bug.cgi?id=1189084
-prioritylength=`expr length %{priority}`
-if [ $prioritylength -ne 8 ] ; then
- echo "priority must be 8 digits in total, violated"
- exit 14
-fi
-
-# OpenJDK patches
-
-# Remove libraries that are linked
-sh %{SOURCE12}
-pushd %{top_level_dir_name}
-%patch1 -p1
-%patch2 -p1
-%patch3 -p1
-%patch4 -p1
-%patch5 -p1
-%patch6 -p1
-popd # openjdk
-
-%patch1000
-
-# Extract systemtap tapsets
-%if %{with_systemtap}
-tar --strip-components=1 -x -I xz -f %{SOURCE8}
-%if %{include_debug_build}
-cp -r tapset tapset%{debug_suffix}
-%endif
-
-
-for suffix in %{build_loop} ; do
- for file in "tapset"$suffix/*.in; do
- OUTPUT_FILE=`echo $file | sed -e "s:\.stp\.in$:%{version}-%{release}.%{_arch}.stp:g"`
- sed -e "s:@ABS_SERVER_LIBJVM_SO@:%{_jvmdir}/%{sdkdir -- $suffix}/lib/server/libjvm.so:g" $file > $file.1
-# TODO find out which architectures other than i686 have a client vm
-%ifarch %{ix86}
- sed -e "s:@ABS_CLIENT_LIBJVM_SO@:%{_jvmdir}/%{sdkdir -- $suffix}/lib/client/libjvm.so:g" $file.1 > $OUTPUT_FILE
-%else
- sed -e "/@ABS_CLIENT_LIBJVM_SO@/d" $file.1 > $OUTPUT_FILE
-%endif
- sed -i -e "s:@ABS_JAVA_HOME_DIR@:%{_jvmdir}/%{sdkdir -- $suffix}:g" $OUTPUT_FILE
- sed -i -e "s:@INSTALL_ARCH_DIR@:%{archinstall}:g" $OUTPUT_FILE
- sed -i -e "s:@prefix@:%{_jvmdir}/%{sdkdir -- $suffix}/:g" $OUTPUT_FILE
- done
-done
-# systemtap tapsets ends
-%endif
-
-# Prepare desktop files
-for suffix in %{build_loop} ; do
-for file in %{SOURCE9}; do
- FILE=`basename $file | sed -e s:\.in$::g`
- EXT="${FILE##*.}"
- NAME="${FILE%.*}"
- OUTPUT_FILE=$NAME$suffix.$EXT
- sed -e "s:@JAVA_HOME@:%{sdkbindir -- $suffix}:g" $file > $OUTPUT_FILE
- sed -i -e "s:@JRE_HOME@:%{jrebindir -- $suffix}:g" $OUTPUT_FILE
- sed -i -e "s:@ARCH@:%{version}-%{release}.%{_arch}$suffix:g" $OUTPUT_FILE
- sed -i -e "s:@JAVA_MAJOR_VERSION@:%{majorver}:g" $OUTPUT_FILE
- sed -i -e "s:@JAVA_VENDOR@:%{origin}:g" $OUTPUT_FILE
-done
-done
-
-# Setup nss.cfg
-sed -e "s:@NSS_LIBDIR@:%{NSS_LIBDIR}:g" %{SOURCE11} > nss.cfg
-
-
-%build
-# How many CPU's do we have?
-export NUM_PROC=%(/usr/bin/getconf _NPROCESSORS_ONLN 2> /dev/null || :)
-export NUM_PROC=${NUM_PROC:-1}
-%if 0%{?_smp_ncpus_max}
-# Honor %%_smp_ncpus_max
-[ ${NUM_PROC} -gt %{?_smp_ncpus_max} ] && export NUM_PROC=%{?_smp_ncpus_max}
-%endif
-
-%ifarch s390x sparc64 alpha %{power64} %{aarch64}
-export ARCH_DATA_MODEL=64
-%endif
-%ifarch alpha
-export CFLAGS="$CFLAGS -mieee"
-%endif
-
-# We use ourcppflags because the OpenJDK build seems to
-# pass EXTRA_CFLAGS to the HotSpot C++ compiler...
-# Explicitly set the C++ standard as the default has changed on GCC >= 6
-EXTRA_CFLAGS="%ourcppflags -std=gnu++98 -Wno-error -fno-delete-null-pointer-checks -fno-lifetime-dse"
-EXTRA_CPP_FLAGS="%ourcppflags -std=gnu++98 -fno-delete-null-pointer-checks -fno-lifetime-dse"
-
-%ifarch %{power64} ppc
-# fix rpmlint warnings
-EXTRA_CFLAGS="$EXTRA_CFLAGS -fno-strict-aliasing"
-%endif
-export EXTRA_CFLAGS
-
-for suffix in %{build_loop} ; do
-if [ "x$suffix" = "x" ] ; then
- debugbuild=release
-else
- # change --something to something
- debugbuild=`echo $suffix | sed "s/-//g"`
-fi
-
-# Variable used in hs_err hook on build failures
-top_dir_abs_path=$(pwd)/%{top_level_dir_name}
-
-mkdir -p %{buildoutputdir -- $suffix}
-pushd %{buildoutputdir -- $suffix}
-
-bash ../configure \
-%ifnarch %{jit_arches}
- --with-jvm-variants=zero \
-%endif
-%ifarch %{ppc64le}
- --with-jobs=1 \
-%endif
- --with-version-build=%{buildver} \
- --with-version-pre="" \
- --with-version-opt=%{lts_designator} \
- --with-vendor-version-string="%{vendor_version_string}" \
- --with-boot-jdk=/usr/lib/jvm/java-%{buildjdkver}-openjdk \
- --with-debug-level=$debugbuild \
- --with-native-debug-symbols=internal \
- --enable-unlimited-crypto \
- --enable-system-nss \
- --with-zlib=system \
- --with-libjpeg=system \
- --with-giflib=system \
- --with-libpng=system \
- --with-lcms=system \
- --with-stdc++lib=dynamic \
- --with-extra-cxxflags="$EXTRA_CPP_FLAGS" \
- --with-extra-cflags="$EXTRA_CFLAGS" \
- --with-extra-ldflags="%{ourldflags}" \
- --with-num-cores="$NUM_PROC" \
- --disable-javac-server \
-%ifarch x86_64
- --with-jvm-features=zgc \
-%endif
- --disable-warnings-as-errors
-
-# use --no-print-directory as workaround for build failure
-# https://bugs.openjdk.java.net/browse/JDK-8215213
-make --no-print-directory \
- JAVAC_FLAGS=-g \
- LOG=trace \
- WARNINGS_ARE_ERRORS="-Wno-error" \
- CFLAGS_WARNINGS_ARE_ERRORS="-Wno-error" \
- %{targets} || ( pwd; find $top_dir_abs_path -name "hs_err_pid*.log" | xargs cat && false )
-
-make docs-zip
-
-# the build (erroneously) removes read permissions from some jars
-# this is a regression in OpenJDK 7 (our compiler):
-# http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=1437
-find images/%{jdkimage} -iname '*.jar' -exec chmod ugo+r {} \;
-
-# Build screws up permissions on binaries
-# https://bugs.openjdk.java.net/browse/JDK-8173610
-find images/%{jdkimage} -iname '*.so' -exec chmod +x {} \;
-find images/%{jdkimage}/bin/ -exec chmod +x {} \;
-
-popd >& /dev/null
-
-# Install nss.cfg right away as we will be using the JRE above
-export JAVA_HOME=$(pwd)/%{buildoutputdir -- $suffix}/images/%{jdkimage}
-
-# Install nss.cfg right away as we will be using the JRE above
-install -m 644 nss.cfg $JAVA_HOME/conf/security/
-
-# Use system-wide tzdata
-rm $JAVA_HOME/lib/tzdb.dat
-ln -s %{_datadir}/javazi-1.8/tzdb.dat $JAVA_HOME/lib/tzdb.dat
-
-# build cycles
-done
-
-%check
-
-# We test debug first as it will give better diagnostics on a crash
-for suffix in %{rev_build_loop} ; do
-
-export JAVA_HOME=$(pwd)/%{buildoutputdir -- $suffix}/images/%{jdkimage}
-
-#check sheandoah is enabled
-%if %{use_shenandoah_hotspot}
-$JAVA_HOME//bin/java -XX:+UnlockExperimentalVMOptions -XX:+UseShenandoahGC -version
-%endif
-
-# Check unlimited policy has been used
-$JAVA_HOME/bin/javac -d . %{SOURCE13}
-$JAVA_HOME/bin/java --add-opens java.base/javax.crypto=ALL-UNNAMED TestCryptoLevel
-
-# Check ECC is working
-$JAVA_HOME/bin/javac -d . %{SOURCE14}
-$JAVA_HOME/bin/java $(echo $(basename %{SOURCE14})|sed "s|\.java||")
-
-# Check debug symbols are present and can identify code
-find "$JAVA_HOME" -iname '*.so' -print0 | while read -d $'\0' lib
-do
- if [ -f "$lib" ] ; then
- echo "Testing $lib for debug symbols"
- # All these tests rely on RPM failing the build if the exit code of any set
- # of piped commands is non-zero.
-
- # Test for .debug_* sections in the shared object. This is the main test
- # Stripped objects will not contain these
- eu-readelf -S "$lib" | grep "] .debug_"
- test $(eu-readelf -S "$lib" | grep -E "\]\ .debug_(info|abbrev)" | wc --lines) == 2
-
- # Test FILE symbols. These will most likely be removed by anything that
- # manipulates symbol tables because it's generally useless. So a nice test
- # that nothing has messed with symbols
- old_IFS="$IFS"
- IFS=$'\n'
- for line in $(eu-readelf -s "$lib" | grep "00000000 0 FILE LOCAL DEFAULT")
- do
- # We expect to see .cpp files, except for architectures like aarch64 and
- # s390 where we expect .o and .oS files
- echo "$line" | grep -E "ABS ((.*/)?[-_a-zA-Z0-9]+\.(c|cc|cpp|cxx|o|oS))?$"
- done
- IFS="$old_IFS"
-
- # If this is the JVM, look for javaCalls.(cpp|o) in FILEs, for extra sanity checking
- if [ "`basename $lib`" = "libjvm.so" ]; then
- eu-readelf -s "$lib" | \
- grep -E "00000000 0 FILE LOCAL DEFAULT ABS javaCalls.(cpp|o)$"
- fi
-
- # Test that there are no .gnu_debuglink sections pointing to another
- # debuginfo file. There shouldn't be any debuginfo files, so the link makes
- # no sense either
- eu-readelf -S "$lib" | grep 'gnu'
- if eu-readelf -S "$lib" | grep '] .gnu_debuglink' | grep PROGBITS; then
- echo "bad .gnu_debuglink section."
- eu-readelf -x .gnu_debuglink "$lib"
- false
- fi
- fi
-done
-
-# Make sure gdb can do a backtrace based on line numbers on libjvm.so
-# javaCalls.cpp:58 should map to:
-# http://hg.openjdk.java.net/jdk8u/jdk8u/hotspot/file/ff3b27e6bcc2/src/shar...
-# Using line number 1 might cause build problems. See:
-# https://bugzilla.redhat.com/show_bug.cgi?id=1539664
-# https://bugzilla.redhat.com/show_bug.cgi?id=1538767
-gdb -q "$JAVA_HOME/bin/java" <<EOF | tee gdb.out
-handle SIGSEGV pass nostop noprint
-handle SIGILL pass nostop noprint
-set breakpoint pending on
-break javaCalls.cpp:1
-commands 1
-backtrace
-quit
-end
-run -version
-EOF
-grep 'JavaCallWrapper::JavaCallWrapper' gdb.out
-
-# Check src.zip has all sources. See RHBZ#1130490
-jar -tf $JAVA_HOME/lib/src.zip | grep 'sun.misc.Unsafe'
-
-# Check class files include useful debugging information
-$JAVA_HOME/bin/javap -l java.lang.Object | grep "Compiled from"
-$JAVA_HOME/bin/javap -l java.lang.Object | grep LineNumberTable
-$JAVA_HOME/bin/javap -l java.lang.Object | grep LocalVariableTable
-
-# Check generated class files include useful debugging information
-$JAVA_HOME/bin/javap -l java.nio.ByteBuffer | grep "Compiled from"
-$JAVA_HOME/bin/javap -l java.nio.ByteBuffer | grep LineNumberTable
-$JAVA_HOME/bin/javap -l java.nio.ByteBuffer | grep LocalVariableTable
-
-# build cycles check
-done
-
-%install
-STRIP_KEEP_SYMTAB=libjvm*
-
-for suffix in %{build_loop} ; do
-
-# Install the jdk
-mkdir -p $RPM_BUILD_ROOT%{_jvmdir}
-cp -a %{buildoutputdir -- $suffix}/images/%{jdkimage} \
- $RPM_BUILD_ROOT%{_jvmdir}/%{sdkdir -- $suffix}
-
-# Install jsa directories so we can owe them
-mkdir -p $RPM_BUILD_ROOT%{_jvmdir}/%{sdkdir -- $suffix}/lib/%{archinstall}/server/
-mkdir -p $RPM_BUILD_ROOT%{_jvmdir}/%{sdkdir -- $suffix}/lib/%{archinstall}/client/
-mkdir -p $RPM_BUILD_ROOT%{_jvmdir}/%{sdkdir -- $suffix}/lib/client/ || true ; # sometimes is here, sometimes not, ifout it or || true it out
-
-pushd %{buildoutputdir $suffix}/images/%{jdkimage}
-
-%if %{with_systemtap}
- # Install systemtap support files
- install -dm 755 $RPM_BUILD_ROOT%{_jvmdir}/%{sdkdir -- $suffix}/tapset
- # note, that uniquesuffix is in BUILD dir in this case
- cp -a $RPM_BUILD_DIR/%{uniquesuffix ""}/tapset$suffix/*.stp $RPM_BUILD_ROOT%{_jvmdir}/%{sdkdir -- $suffix}/tapset/
- pushd $RPM_BUILD_ROOT%{_jvmdir}/%{sdkdir -- $suffix}/tapset/
- tapsetFiles=`ls *.stp`
- popd
- install -d -m 755 $RPM_BUILD_ROOT%{tapsetdir}
- for name in $tapsetFiles ; do
- targetName=`echo $name | sed "s/.stp/$suffix.stp/"`
- ln -sf %{_jvmdir}/%{sdkdir -- $suffix}/tapset/$name $RPM_BUILD_ROOT%{tapsetdir}/$targetName
- done
-%endif
-
- # Remove empty cacerts database
- rm -f $RPM_BUILD_ROOT%{_jvmdir}/%{sdkdir -- $suffix}/lib/security/cacerts
- # Install cacerts symlink needed by some apps which hard-code the path
- pushd $RPM_BUILD_ROOT%{_jvmdir}/%{sdkdir -- $suffix}/lib/security
- ln -sf /etc/pki/java/cacerts .
- popd
-
- # Install version-ed symlinks
- pushd $RPM_BUILD_ROOT%{_jvmdir}
- ln -sf %{sdkdir -- $suffix} %{jrelnk -- $suffix}
- popd
-
-
- # Install man pages
- install -d -m 755 $RPM_BUILD_ROOT%{_mandir}/man1
- for manpage in man/man1/*
- do
- # Convert man pages to UTF8 encoding
- iconv -f ISO_8859-1 -t UTF8 $manpage -o $manpage.tmp
- mv -f $manpage.tmp $manpage
- install -m 644 -p $manpage $RPM_BUILD_ROOT%{_mandir}/man1/$(basename \
- $manpage .1)-%{uniquesuffix -- $suffix}.1
- done
- # Remove man pages from jdk image
- rm -rf $RPM_BUILD_ROOT%{_jvmdir}/%{sdkdir -- $suffix}/man
-
-popd
-
-
-# Install Javadoc documentation
-install -d -m 755 $RPM_BUILD_ROOT%{_javadocdir}
-cp -a %{buildoutputdir -- $suffix}/images/docs $RPM_BUILD_ROOT%{_javadocdir}/%{uniquejavadocdir -- $suffix}
-cp -a %{buildoutputdir -- $suffix}/bundles/jdk-%{majorver}+%{buildver}%{lts_designator_zip}-docs.zip $RPM_BUILD_ROOT%{_javadocdir}/%{uniquejavadocdir -- $suffix}.zip
-
-# Install icons and menu entries
-for s in 16 24 32 48 ; do
- install -D -p -m 644 \
- %{top_level_dir_name}/src/java.desktop/unix/classes/sun/awt/X11/java-icon${s}.png \
- $RPM_BUILD_ROOT%{_datadir}/icons/hicolor/${s}x${s}/apps/java-%{javaver}-%{origin}.png
-done
-
-# Install desktop files
-install -d -m 755 $RPM_BUILD_ROOT%{_datadir}/{applications,pixmaps}
-for e in jconsole$suffix ; do
- desktop-file-install --vendor=%{uniquesuffix -- $suffix} --mode=644 \
- --dir=$RPM_BUILD_ROOT%{_datadir}/applications $e.desktop
-done
-
-# Install /etc/.java/.systemPrefs/ directory
-# See https://bugzilla.redhat.com/show_bug.cgi?id=741821
-mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/.java/.systemPrefs
-
-# copy samples next to demos; samples are mostly js files
-cp -r %{top_level_dir_name}/src/sample $RPM_BUILD_ROOT/%{_jvmdir}/%{sdkdir -- $suffix}/
-
-
-# moving config files to /etc
-mkdir -p $RPM_BUILD_ROOT/%{etcjavadir -- $suffix}
-mkdir -p $RPM_BUILD_ROOT/%{etcjavadir -- $suffix}/lib
-mv $RPM_BUILD_ROOT/%{_jvmdir}/%{sdkdir -- $suffix}/conf/ $RPM_BUILD_ROOT/%{etcjavadir -- $suffix}
-mv $RPM_BUILD_ROOT/%{_jvmdir}/%{sdkdir -- $suffix}/lib/security $RPM_BUILD_ROOT/%{etcjavadir -- $suffix}/lib
-pushd $RPM_BUILD_ROOT/%{_jvmdir}/%{sdkdir -- $suffix}
- ln -s %{etcjavadir -- $suffix}/conf ./conf
-popd
-pushd $RPM_BUILD_ROOT/%{_jvmdir}/%{sdkdir -- $suffix}/lib
- ln -s %{etcjavadir -- $suffix}/lib/security ./security
-popd
-# end moving files to /etc
-
-# stabilize permissions
-find $RPM_BUILD_ROOT/%{_jvmdir}/%{sdkdir -- $suffix}/ -name "*.so" -exec chmod 755 {} \; ;
-find $RPM_BUILD_ROOT/%{_jvmdir}/%{sdkdir -- $suffix}/ -type d -exec chmod 755 {} \; ;
-find $RPM_BUILD_ROOT/%{_jvmdir}/%{sdkdir -- $suffix}/legal -type f -exec chmod 644 {} \; ;
-
-# end, dual install
-done
-
-%if %{include_normal_build}
-# intentionally only for non-debug
-%pretrans headless -p <lua>
--- see https://bugzilla.redhat.com/show_bug.cgi?id=1038092 for whole issue
--- see https://bugzilla.redhat.com/show_bug.cgi?id=1290388 for pretrans over pre
--- if copy-jdk-configs is in transaction, it installs in pretrans to temp
--- if copy_jdk_configs is in temp, then it means that copy-jdk-configs is in transaction and so is
--- preferred over one in %%{_libexecdir}. If it is not in transaction, then depends
--- whether copy-jdk-configs is installed or not. If so, then configs are copied
--- (copy_jdk_configs from %%{_libexecdir} used) or not copied at all
-local posix = require "posix"
-local debug = false
-
-SOURCE1 = "%{rpm_state_dir}/copy_jdk_configs.lua"
-SOURCE2 = "%{_libexecdir}/copy_jdk_configs.lua"
-
-local stat1 = posix.stat(SOURCE1, "type");
-local stat2 = posix.stat(SOURCE2, "type");
-
- if (stat1 ~= nil) then
- if (debug) then
- print(SOURCE1 .." exists - copy-jdk-configs in transaction, using this one.")
- end;
- package.path = package.path .. ";" .. SOURCE1
-else
- if (stat2 ~= nil) then
- if (debug) then
- print(SOURCE2 .." exists - copy-jdk-configs already installed and NOT in transaction. Using.")
- end;
- package.path = package.path .. ";" .. SOURCE2
- else
- if (debug) then
- print(SOURCE1 .." does NOT exists")
- print(SOURCE2 .." does NOT exists")
- print("No config files will be copied")
- end
- return
- end
-end
--- run content of included file with fake args
-arg = {"--currentjvm", "%{uniquesuffix %{nil}}", "--jvmdir", "%{_jvmdir %{nil}}", "--origname", "%{name}", "--origjavaver", "%{javaver}", "--arch", "%{_arch}", "--temp", "%{rpm_state_dir}/%{name}.%{_arch}"}
-require "copy_jdk_configs.lua"
-
-%post
-%{post_script %{nil}}
-
-%post headless
-%{post_headless %{nil}}
-
-%postun
-%{postun_script %{nil}}
-
-%postun headless
-%{postun_headless %{nil}}
-
-%posttrans
-%{posttrans_script %{nil}}
-
-%post devel
-%{post_devel %{nil}}
-
-%postun devel
-%{postun_devel %{nil}}
-
-%posttrans devel
-%{posttrans_devel %{nil}}
-
-%post javadoc
-%{post_javadoc %{nil}}
-
-%postun javadoc
-%{postun_javadoc %{nil}}
-
-%post javadoc-zip
-%{post_javadoc_zip %{nil}}
-
-%postun javadoc-zip
-%{postun_javadoc_zip %{nil}}
-%endif
-
-%if %{include_debug_build}
-%post slowdebug
-%{post_script -- %{debug_suffix_unquoted}}
-
-%post headless-slowdebug
-%{post_headless -- %{debug_suffix_unquoted}}
-
-%postun slowdebug
-%{postun_script -- %{debug_suffix_unquoted}}
-
-%postun headless-slowdebug
-%{postun_headless -- %{debug_suffix_unquoted}}
-
-%posttrans slowdebug
-%{posttrans_script -- %{debug_suffix_unquoted}}
-
-%post devel-slowdebug
-%{post_devel -- %{debug_suffix_unquoted}}
-
-%postun devel-slowdebug
-%{postun_devel -- %{debug_suffix_unquoted}}
-
-%posttrans devel-slowdebug
-%{posttrans_devel -- %{debug_suffix_unquoted}}
-
-%post javadoc-slowdebug
-%{post_javadoc -- %{debug_suffix_unquoted}}
-
-%postun javadoc-slowdebug
-%{postun_javadoc -- %{debug_suffix_unquoted}}
-
-%post javadoc-zip-slowdebug
-%{post_javadoc_zip -- %{debug_suffix_unquoted}}
-
-%postun javadoc-zip-slowdebug
-%{postun_javadoc_zip -- %{debug_suffix_unquoted}}
+This package was renamed to java-latest-openjdk-javadoc-zip-slowdebug and is empty, it only requires java-latest-openjdk for update purposes. This package will be eventually deleted.
%endif
%if %{include_normal_build}
%files
# main package builds always
-%{files_jre %{nil}}
%else
%files
# placeholder
%endif
-
%if %{include_normal_build}
%files headless
-# important note, see https://bugzilla.redhat.com/show_bug.cgi?id=1038092 for whole issue
-# all config/noreplace files (and more) have to be declared in pretrans. See pretrans
-%{files_jre_headless %{nil}}
%files devel
-%{files_devel %{nil}}
%files jmods
-%{files_jmods %{nil}}
%files demo
-%{files_demo %{nil}}
%files src
-%{files_src %{nil}}
%files javadoc
-%{files_javadoc %{nil}}
-# this puts huge file to /usr/share
-# unluckily it is really a documentation file
-# and unluckily it really is architecture-dependent, as eg. aot and grail are now x86_64 only
-# same for debug variant
%files javadoc-zip
-%{files_javadoc_zip %{nil}}
+
%endif
%if %{include_debug_build}
%files slowdebug
-%{files_jre -- %{debug_suffix_unquoted}}
%files headless-slowdebug
-%{files_jre_headless -- %{debug_suffix_unquoted}}
%files devel-slowdebug
-%{files_devel -- %{debug_suffix_unquoted}}
%files jmods-slowdebug
-%{files_jmods -- %{debug_suffix_unquoted}}
%files demo-slowdebug
-%{files_demo -- %{debug_suffix_unquoted}}
%files src-slowdebug
-%{files_src -- %{debug_suffix_unquoted}}
%files javadoc-slowdebug
-%{files_javadoc -- %{debug_suffix_unquoted}}
%files javadoc-zip-slowdebug
-%{files_javadoc_zip -- %{debug_suffix_unquoted}}
%endif
%changelog
-* Thu Mar 21 2019 Petra Mikova <pmikova(a)redhat.com - 1:12.0.0.33-3.rolling
+* Thu Apr 18 2019 Petra Mikova <pmikova(a)redhat.com> - 1:12.0.0.33-4.rolling
+- the package is now completely emptied, only requires java-latest-openjdk
+- this has to happen due to the conflict of this package with other java packages
+- the package is being renamed to java-latest-openjdk
+- https://bugzilla.redhat.com/show_bug.cgi?id=1693987
+
+* Thu Mar 21 2019 Petra Mikova <pmikova(a)redhat.com> - 1:12.0.0.33-3.rolling
- Replaced pcsc-lite-devel (which is in optional channel) with pcsc-lite-libs.
- added rh1684077-openjdk_should_depend_on_pcsc-lite-libs_instead_of_pcsc-lite-devel.patch to make jdk work with pcsc
- removed LTS string from LTS designator, because epel builds get identified as rhel and JDK 12 is not LTS
diff --git a/jconsole.desktop.in b/jconsole.desktop.in
deleted file mode 100644
index a8917c1..0000000
--- a/jconsole.desktop.in
+++ /dev/null
@@ -1,10 +0,0 @@
-[Desktop Entry]
-Name=OpenJDK @JAVA_MAJOR_VERSION@ Monitoring & Management Console @ARCH@
-Comment=Monitor and manage OpenJDK @JAVA_MAJOR_VERSION@ applications for @ARCH@
-Exec=@JAVA_HOME@/jconsole
-Icon=java-@JAVA_MAJOR_VERSION@-@JAVA_VENDOR@
-Terminal=false
-Type=Application
-StartupWMClass=sun-tools-jconsole-JConsole
-Categories=Development;Profiling;Java;
-Version=1.0
diff --git a/jdk8210416-rh1632174-compile_fdlibm_with_o2_ffp_contract_off_on_gcc_clang_arches.patch b/jdk8210416-rh1632174-compile_fdlibm_with_o2_ffp_contract_off_on_gcc_clang_arches.patch
deleted file mode 100644
index 7876089..0000000
--- a/jdk8210416-rh1632174-compile_fdlibm_with_o2_ffp_contract_off_on_gcc_clang_arches.patch
+++ /dev/null
@@ -1,51 +0,0 @@
-# HG changeset patch
-# User sgehwolf
-# Date 1536142767 -7200
-# Wed Sep 05 12:19:27 2018 +0200
-# Node ID 7ea57274e55054579d1532e757edb21e67beed83
-# Parent 3ee91722550680c18b977f0e00b1013323b5c9ef
-8210416: [linux] Poor StrictMath performance due to non-optimized compilation
-Summary: Compile fdlibm with -O2 -ffp-contract=off on gcc/clang arches.
-Reviewed-by: aph, erikj, dholmes, darcy
-
-diff --git a/make/lib/CoreLibraries.gmk b/make/lib/CoreLibraries.gmk
---- a/make/lib/CoreLibraries.gmk
-+++ b/make/lib/CoreLibraries.gmk
-@@ -39,20 +39,15 @@
- BUILD_LIBFDLIBM_OPTIMIZATION := HIGH
- endif
-
--ifeq ($(OPENJDK_TARGET_OS), linux)
-- ifeq ($(OPENJDK_TARGET_CPU), ppc64)
-- BUILD_LIBFDLIBM_OPTIMIZATION := HIGH
-- else ifeq ($(OPENJDK_TARGET_CPU), ppc64le)
-- BUILD_LIBFDLIBM_OPTIMIZATION := HIGH
-- else ifeq ($(OPENJDK_TARGET_CPU), s390x)
-- BUILD_LIBFDLIBM_OPTIMIZATION := HIGH
-- else ifeq ($(OPENJDK_TARGET_CPU), aarch64)
-- BUILD_LIBFDLIBM_OPTIMIZATION := HIGH
-- endif
-+# If FDLIBM_CFLAGS is non-empty we know that we can optimize
-+# fdlibm by adding those extra C flags. Currently GCC,
-+# and clang only.
-+ifneq ($(FDLIBM_CFLAGS), )
-+ BUILD_LIBFDLIBM_OPTIMIZATION := LOW
- endif
-
- LIBFDLIBM_SRC := $(TOPDIR)/src/java.base/share/native/libfdlibm
--LIBFDLIBM_CFLAGS := -I$(LIBFDLIBM_SRC)
-+LIBFDLIBM_CFLAGS := -I$(LIBFDLIBM_SRC) $(FDLIBM_CFLAGS)
-
- ifneq ($(OPENJDK_TARGET_OS), macosx)
- $(eval $(call SetupNativeCompilation, BUILD_LIBFDLIBM, \
-@@ -64,10 +59,6 @@
- CFLAGS := $(CFLAGS_JDKLIB) $(LIBFDLIBM_CFLAGS), \
- CFLAGS_windows_debug := -DLOGGING, \
- CFLAGS_aix := -qfloat=nomaf, \
-- CFLAGS_linux_ppc64 := -ffp-contract=off, \
-- CFLAGS_linux_ppc64le := -ffp-contract=off, \
-- CFLAGS_linux_s390x := -ffp-contract=off, \
-- CFLAGS_linux_aarch64 := -ffp-contract=off, \
- DISABLED_WARNINGS_gcc := sign-compare misleading-indentation, \
- DISABLED_WARNINGS_microsoft := 4146 4244 4018, \
- ARFLAGS := $(ARFLAGS), \
diff --git a/nss.cfg.in b/nss.cfg.in
deleted file mode 100644
index 377a39c..0000000
--- a/nss.cfg.in
+++ /dev/null
@@ -1,5 +0,0 @@
-name = NSS
-nssLibraryDirectory = @NSS_LIBDIR@
-nssDbMode = noDb
-attributes = compatibility
-handleStartupErrors = ignoreMultipleInitialisation
diff --git a/pr1983-rh1565658-support_using_the_system_installation_of_nss_with_the_sunec_provider_jdk12.patch b/pr1983-rh1565658-support_using_the_system_installation_of_nss_with_the_sunec_provider_jdk12.patch
deleted file mode 100644
index edd3480..0000000
--- a/pr1983-rh1565658-support_using_the_system_installation_of_nss_with_the_sunec_provider_jdk12.patch
+++ /dev/null
@@ -1,649 +0,0 @@
-diff --git a/make/autoconf/jdk-options.m4 b/make/autoconf/jdk-options.m4
---- a/make/autoconf/jdk-options.m4
-+++ b/make/autoconf/jdk-options.m4
-@@ -267,9 +267,10 @@
- #
- AC_DEFUN_ONCE([JDKOPT_DETECT_INTREE_EC],
- [
-+ AC_REQUIRE([LIB_SETUP_MISC_LIBS])
- AC_MSG_CHECKING([if elliptic curve crypto implementation is present])
-
-- if test -d "${TOPDIR}/src/jdk.crypto.ec/share/native/libsunec/impl"; then
-+ if test "x${system_nss}" = "xyes" -o -d "${TOPDIR}/src/jdk.crypto.ec/share/native/libsunec/impl"; then
- ENABLE_INTREE_EC=true
- AC_MSG_RESULT([yes])
- else
-diff --git a/make/autoconf/libraries.m4 b/make/autoconf/libraries.m4
---- a/make/autoconf/libraries.m4
-+++ b/make/autoconf/libraries.m4
-@@ -178,6 +178,48 @@
- AC_SUBST(LIBDL)
- LIBS="$save_LIBS"
-
-+ ###############################################################################
-+ #
-+ # Check for the NSS libraries
-+ #
-+
-+ AC_MSG_CHECKING([whether to build the Sun EC provider against the system NSS libraries])
-+
-+ # default is bundled
-+ DEFAULT_SYSTEM_NSS=no
-+
-+ AC_ARG_ENABLE([system-nss], [AS_HELP_STRING([--enable-system-nss],
-+ [build the SunEC provider using the system NSS libraries @<:@disabled@:>@])],
-+ [
-+ case "${enableval}" in
-+ yes)
-+ system_nss=yes
-+ ;;
-+ *)
-+ system_nss=no
-+ ;;
-+ esac
-+ ],
-+ [
-+ system_nss=${DEFAULT_SYSTEM_NSS}
-+ ])
-+ AC_MSG_RESULT([$system_nss])
-+
-+ if test "x${system_nss}" = "xyes"; then
-+ PKG_CHECK_MODULES(NSS_SOFTTKN, nss-softokn >= 3.16.1, [NSS_SOFTOKN_FOUND=yes], [NSS_SOFTOKN_FOUND=no])
-+ PKG_CHECK_MODULES(NSS, nss >= 3.16.1, [NSS_FOUND=yes], [NSS_FOUND=no])
-+ if test "x${NSS_SOFTOKN_FOUND}" = "xyes" -a "x${NSS_FOUND}" = "xyes"; then
-+ NSS_LIBS="$NSS_SOFTOKN_LIBS $NSS_LIBS -lfreebl";
-+ USE_EXTERNAL_NSS=true
-+ else
-+ AC_MSG_ERROR([--enable-system-nss specified, but NSS not found.])
-+ fi
-+ else
-+ USE_EXTERNAL_NSS=false
-+ fi
-+ AC_SUBST(USE_EXTERNAL_NSS)
-+
-+
- # Control if libzip can use mmap. Available for purposes of overriding.
- LIBZIP_CAN_USE_MMAP=true
- AC_SUBST(LIBZIP_CAN_USE_MMAP)
-diff --git a/make/autoconf/spec.gmk.in b/make/autoconf/spec.gmk.in
---- a/make/autoconf/spec.gmk.in
-+++ b/make/autoconf/spec.gmk.in
-@@ -795,6 +795,10 @@
- # Libraries
- #
-
-+USE_EXTERNAL_NSS:=@USE_EXTERNAL_NSS@
-+NSS_LIBS:=@NSS_LIBS@
-+NSS_CFLAGS:=@NSS_CFLAGS@
-+
- USE_EXTERNAL_LCMS:=@USE_EXTERNAL_LCMS@
- LCMS_CFLAGS:=@LCMS_CFLAGS@
- LCMS_LIBS:=@LCMS_LIBS@
-diff --git a/make/lib/Lib-jdk.crypto.ec.gmk b/make/lib/Lib-jdk.crypto.ec.gmk
---- a/make/lib/Lib-jdk.crypto.ec.gmk
-+++ b/make/lib/Lib-jdk.crypto.ec.gmk
-@@ -28,19 +28,26 @@
- ################################################################################
-
- ifeq ($(ENABLE_INTREE_EC), true)
-+ ifeq ($(USE_EXTERNAL_NSS), true)
-+ BUILD_LIBSUNEC_CFLAGS_JDKLIB := $(NSS_CFLAGS) -DSYSTEM_NSS -DNSS_ENABLE_ECC
-+ BUILD_LIBSUNEC_CXXFLAGS_JDKLIB := $(NSS_CFLAGS) -DSYSTEM_NSS -DNSS_ENABLE_ECC
-+ endif
-+
- $(eval $(call SetupJdkLibrary, BUILD_LIBSUNEC, \
- NAME := sunec, \
- TOOLCHAIN := TOOLCHAIN_LINK_CXX, \
- OPTIMIZATION := LOW, \
-- CFLAGS := $(CFLAGS_JDKLIB) \
-+ CFLAGS := $(BUILD_LIBSUNEC_CFLAGS_JDKLIB) $(CFLAGS_JDKLIB) \
- -DMP_API_COMPATIBLE -DNSS_ECC_MORE_THAN_SUITE_B, \
-- CXXFLAGS := $(CXXFLAGS_JDKLIB), \
-+ CXXFLAGS := $(BUILD_LIBSUNEC_CXXFLAGS_JDKLIB) $(CXXFLAGS_JDKLIB), \
- DISABLED_WARNINGS_gcc := sign-compare implicit-fallthrough unused-value, \
- DISABLED_WARNINGS_clang := sign-compare, \
- DISABLED_WARNINGS_microsoft := 4101 4244 4146 4018, \
-- LDFLAGS := $(LDFLAGS_JDKLIB) $(LDFLAGS_CXX_JDK), \
-+ LDFLAGS := $(subst -Xlinker --as-needed,, \
-+ $(subst -Wl$(COMMA)--as-needed,, $(LDFLAGS_JDKLIB))) $(LDFLAGS_CXX_JDK), \
- LDFLAGS_macosx := $(call SET_SHARED_LIBRARY_ORIGIN), \
- LIBS := $(LIBCXX), \
-+ LIBS_linux := -lc $(NSS_LIBS), \
- ))
-
- TARGETS += $(BUILD_LIBSUNEC)
-diff --git a/src/java.base/unix/native/include/jni_md.h b/src/java.base/unix/native/include/jni_md.h
---- a/src/java.base/unix/native/include/jni_md.h
-+++ b/src/java.base/unix/native/include/jni_md.h
-@@ -41,6 +41,11 @@
- #define JNIEXPORT
- #define JNIIMPORT
- #endif
-+#if (defined(__GNUC__)) || __has_attribute(unused)
-+ #define UNUSED(x) UNUSED_ ## x __attribute__((__unused__))
-+#else
-+ #define UNUSED(x) UNUSED_ ## x
-+#endif
-
- #define JNICALL
-
-diff --git a/src/jdk.crypto.ec/share/classes/sun/security/ec/SunEC.java b/src/jdk.crypto.ec/share/classes/sun/security/ec/SunEC.java
---- a/src/jdk.crypto.ec/share/classes/sun/security/ec/SunEC.java
-+++ b/src/jdk.crypto.ec/share/classes/sun/security/ec/SunEC.java
-@@ -61,6 +61,7 @@
- AccessController.doPrivileged(new PrivilegedAction<Void>() {
- public Void run() {
- System.loadLibrary("sunec"); // check for native library
-+ initialize();
- return null;
- }
- });
-@@ -293,6 +294,11 @@
- "ECDH", "sun.security.ec.ECDHKeyAgreement", null, ATTRS));
- }
-
-+ /**
-+ * Initialize the native code.
-+ */
-+ private static native void initialize();
-+
- private void putXDHEntries() {
-
- HashMap<String, String> ATTRS = new HashMap<>(1);
-diff --git a/src/jdk.crypto.ec/share/native/libsunec/ECC_JNI.cpp b/src/jdk.crypto.ec/share/native/libsunec/ECC_JNI.cpp
---- a/src/jdk.crypto.ec/share/native/libsunec/ECC_JNI.cpp
-+++ b/src/jdk.crypto.ec/share/native/libsunec/ECC_JNI.cpp
-@@ -25,7 +25,11 @@
-
- #include <jni.h>
- #include "jni_util.h"
-+#ifdef SYSTEM_NSS
-+#include "ecc_impl.h"
-+#else
- #include "impl/ecc_impl.h"
-+#endif
- #include "sun_security_ec_ECDHKeyAgreement.h"
- #include "sun_security_ec_ECKeyPairGenerator.h"
- #include "sun_security_ec_ECDSASignature.h"
-@@ -33,6 +37,13 @@
- #define INVALID_PARAMETER_EXCEPTION \
- "java/security/InvalidParameterException"
- #define KEY_EXCEPTION "java/security/KeyException"
-+#define INTERNAL_ERROR "java/lang/InternalError"
-+
-+#ifdef SYSTEM_NSS
-+#define SYSTEM_UNUSED(x) UNUSED(x)
-+#else
-+#define SYSTEM_UNUSED(x) x
-+#endif
-
- extern "C" {
-
-@@ -55,8 +66,13 @@
- /*
- * Deep free of the ECParams struct
- */
--void FreeECParams(ECParams *ecparams, jboolean freeStruct)
-+void FreeECParams(ECParams *ecparams, jboolean SYSTEM_UNUSED(freeStruct))
- {
-+#ifdef SYSTEM_NSS
-+ // Needs to be freed using the matching method to the one
-+ // that allocated it. PR_TRUE means the memory is zeroed.
-+ PORT_FreeArena(ecparams->arena, PR_TRUE);
-+#else
- // Use B_FALSE to free the SECItem->data element, but not the SECItem itself
- // Use B_TRUE to free both
-
-@@ -70,6 +86,7 @@
- SECITEM_FreeItem(&ecparams->curveOID, B_FALSE);
- if (freeStruct)
- free(ecparams);
-+#endif
- }
-
- jbyteArray getEncodedBytes(JNIEnv *env, SECItem *hSECItem)
-@@ -139,7 +156,7 @@
- */
- JNIEXPORT jobjectArray
- JNICALL Java_sun_security_ec_ECKeyPairGenerator_generateECKeyPair
-- (JNIEnv *env, jclass clazz, jint keySize, jbyteArray encodedParams, jbyteArray seed)
-+ (JNIEnv *env, jclass UNUSED(clazz), jint UNUSED(keySize), jbyteArray encodedParams, jbyteArray seed)
- {
- ECPrivateKey *privKey = NULL; // contains both public and private values
- ECParams *ecparams = NULL;
-@@ -171,8 +188,17 @@
- env->GetByteArrayRegion(seed, 0, jSeedLength, pSeedBuffer);
-
- // Generate the new keypair (using the supplied seed)
-+#ifdef SYSTEM_NSS
-+ if (RNG_RandomUpdate((unsigned char *) pSeedBuffer, jSeedLength)
-+ != SECSuccess) {
-+ ThrowException(env, KEY_EXCEPTION);
-+ goto cleanup;
-+ }
-+ if (EC_NewKey(ecparams, &privKey) != SECSuccess) {
-+#else
- if (EC_NewKey(ecparams, &privKey, (unsigned char *) pSeedBuffer,
- jSeedLength, 0) != SECSuccess) {
-+#endif
- ThrowException(env, KEY_EXCEPTION);
- goto cleanup;
- }
-@@ -219,10 +245,15 @@
- }
- if (privKey) {
- FreeECParams(&privKey->ecParams, false);
-+#ifndef SYSTEM_NSS
-+ // The entire ECPrivateKey is allocated in the arena
-+ // when using system NSS, so only the in-tree version
-+ // needs to clear these manually.
- SECITEM_FreeItem(&privKey->version, B_FALSE);
- SECITEM_FreeItem(&privKey->privateValue, B_FALSE);
- SECITEM_FreeItem(&privKey->publicValue, B_FALSE);
- free(privKey);
-+#endif
- }
-
- if (pSeedBuffer) {
-@@ -240,7 +271,7 @@
- */
- JNIEXPORT jbyteArray
- JNICALL Java_sun_security_ec_ECDSASignature_signDigest
-- (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);
-@@ -299,8 +330,18 @@
- env->GetByteArrayRegion(seed, 0, jSeedLength, pSeedBuffer);
-
- // Sign the digest (using the supplied seed)
-+#ifdef SYSTEM_NSS
-+ if (RNG_RandomUpdate((unsigned char *) pSeedBuffer, jSeedLength)
-+ != SECSuccess) {
-+ ThrowException(env, KEY_EXCEPTION);
-+ goto cleanup;
-+ }
-+ if (ECDSA_SignDigest(&privKey, &signature_item, &digest_item)
-+ != SECSuccess) {
-+#else
- if (ECDSA_SignDigest(&privKey, &signature_item, &digest_item,
- (unsigned char *) pSeedBuffer, jSeedLength, 0, timing) != SECSuccess) {
-+#endif
- ThrowException(env, KEY_EXCEPTION);
- goto cleanup;
- }
-@@ -349,7 +390,7 @@
- */
- JNIEXPORT jboolean
- JNICALL Java_sun_security_ec_ECDSASignature_verifySignedDigest
-- (JNIEnv *env, jclass clazz, jbyteArray signedDigest, jbyteArray digest, jbyteArray publicKey, jbyteArray encodedParams)
-+ (JNIEnv *env, jclass UNUSED(clazz), jbyteArray signedDigest, jbyteArray digest, jbyteArray publicKey, jbyteArray encodedParams)
- {
- jboolean isValid = false;
-
-@@ -406,9 +447,10 @@
-
- cleanup:
- {
-- if (params_item.data)
-+ if (params_item.data) {
- env->ReleaseByteArrayElements(encodedParams,
- (jbyte *) params_item.data, JNI_ABORT);
-+ }
-
- if (pubKey.publicValue.data)
- env->ReleaseByteArrayElements(publicKey,
-@@ -434,7 +476,7 @@
- */
- JNIEXPORT jbyteArray
- JNICALL Java_sun_security_ec_ECDHKeyAgreement_deriveKey
-- (JNIEnv *env, jclass clazz, jbyteArray privateKey, jbyteArray publicKey, jbyteArray encodedParams)
-+ (JNIEnv *env, jclass UNUSED(clazz), jbyteArray privateKey, jbyteArray publicKey, jbyteArray encodedParams)
- {
- jbyteArray jSecret = NULL;
- ECParams *ecparams = NULL;
-@@ -510,9 +552,10 @@
- env->ReleaseByteArrayElements(publicKey,
- (jbyte *) publicValue_item.data, JNI_ABORT);
-
-- if (params_item.data)
-+ if (params_item.data) {
- env->ReleaseByteArrayElements(encodedParams,
- (jbyte *) params_item.data, JNI_ABORT);
-+ }
-
- if (ecparams)
- FreeECParams(ecparams, true);
-@@ -521,4 +564,28 @@
- return jSecret;
- }
-
-+JNIEXPORT void
-+JNICALL Java_sun_security_ec_SunEC_initialize
-+ (JNIEnv *env, jclass UNUSED(clazz))
-+{
-+#ifdef SYSTEM_NSS
-+ if (SECOID_Init() != SECSuccess) {
-+ ThrowException(env, INTERNAL_ERROR);
-+ }
-+ if (RNG_RNGInit() != SECSuccess) {
-+ ThrowException(env, INTERNAL_ERROR);
-+ }
-+#endif
-+}
-+
-+JNIEXPORT void
-+JNICALL JNI_OnUnload
-+ (JavaVM *vm, void *reserved)
-+{
-+#ifdef SYSTEM_NSS
-+ RNG_RNGShutdown();
-+ SECOID_Shutdown();
-+#endif
-+}
-+
- } /* extern "C" */
-diff --git a/src/jdk.crypto.ec/share/native/libsunec/ecc_impl.h b/src/jdk.crypto.ec/share/native/libsunec/ecc_impl.h
-new file mode 100644
---- /dev/null
-+++ b/src/jdk.crypto.ec/share/native/libsunec/ecc_impl.h
-@@ -0,0 +1,298 @@
-+/*
-+ * 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
-+ * modify it under the terms of the GNU Lesser General Public
-+ * License as published by the Free Software Foundation; either
-+ * version 2.1 of the License, or (at your option) any later version.
-+ *
-+ * This library 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
-+ * Lesser General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU Lesser General Public License
-+ * along with this library; if not, write to the Free Software Foundation,
-+ * Inc., 51 Franklin Street, 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.
-+ */
-+
-+/* *********************************************************************
-+ *
-+ * The Original Code is the Netscape security libraries.
-+ *
-+ * The Initial Developer of the Original Code is
-+ * Netscape Communications Corporation.
-+ * Portions created by the Initial Developer are Copyright (C) 1994-2000
-+ * the Initial Developer. All Rights Reserved.
-+ *
-+ * Contributor(s):
-+ * 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: May 2017
-+ *********************************************************************** */
-+
-+#ifndef _ECC_IMPL_H
-+#define _ECC_IMPL_H
-+
-+#ifdef __cplusplus
-+extern "C" {
-+#endif
-+
-+#include <sys/types.h>
-+
-+#ifdef SYSTEM_NSS
-+#include <secitem.h>
-+#include <secerr.h>
-+#include <keythi.h>
-+#ifdef LEGACY_NSS
-+#include <softoken.h>
-+#else
-+#include <blapi.h>
-+#endif
-+#else
-+#include "ecl-exp.h"
-+#endif
-+
-+/*
-+ * Multi-platform definitions
-+ */
-+#ifdef __linux__
-+#define B_FALSE FALSE
-+#define B_TRUE TRUE
-+typedef unsigned char uint8_t;
-+typedef unsigned long ulong_t;
-+typedef enum { B_FALSE, B_TRUE } boolean_t;
-+#endif /* __linux__ */
-+
-+#ifdef _ALLBSD_SOURCE
-+#include <stdint.h>
-+#define B_FALSE FALSE
-+#define B_TRUE TRUE
-+typedef unsigned long ulong_t;
-+typedef enum boolean { B_FALSE, B_TRUE } boolean_t;
-+#endif /* _ALLBSD_SOURCE */
-+
-+#ifdef AIX
-+#define B_FALSE FALSE
-+#define B_TRUE TRUE
-+typedef unsigned char uint8_t;
-+typedef unsigned long ulong_t;
-+#endif /* AIX */
-+
-+#ifdef _WIN32
-+typedef unsigned char uint8_t;
-+typedef unsigned long ulong_t;
-+typedef enum boolean { B_FALSE, B_TRUE } boolean_t;
-+#define strdup _strdup /* Replace POSIX name with ISO C++ name */
-+#endif /* _WIN32 */
-+
-+#ifndef _KERNEL
-+#include <stdlib.h>
-+#endif /* _KERNEL */
-+
-+#define EC_MAX_DIGEST_LEN 1024 /* max digest that can be signed */
-+#define EC_MAX_POINT_LEN 145 /* max len of DER encoded Q */
-+#define EC_MAX_VALUE_LEN 72 /* max len of ANSI X9.62 private value d */
-+#define EC_MAX_SIG_LEN 144 /* max signature len for supported curves */
-+#define EC_MIN_KEY_LEN 112 /* min key length in bits */
-+#define EC_MAX_KEY_LEN 571 /* max key length in bits */
-+#define EC_MAX_OID_LEN 10 /* max length of OID buffer */
-+
-+/*
-+ * Various structures and definitions from NSS are here.
-+ */
-+
-+#ifndef SYSTEM_NSS
-+#ifdef _KERNEL
-+#define PORT_ArenaAlloc(a, n, f) kmem_alloc((n), (f))
-+#define PORT_ArenaZAlloc(a, n, f) kmem_zalloc((n), (f))
-+#define PORT_ArenaGrow(a, b, c, d) NULL
-+#define PORT_ZAlloc(n, f) kmem_zalloc((n), (f))
-+#define PORT_Alloc(n, f) kmem_alloc((n), (f))
-+#else
-+#define PORT_ArenaAlloc(a, n, f) malloc((n))
-+#define PORT_ArenaZAlloc(a, n, f) calloc(1, (n))
-+#define PORT_ArenaGrow(a, b, c, d) NULL
-+#define PORT_ZAlloc(n, f) calloc(1, (n))
-+#define PORT_Alloc(n, f) malloc((n))
-+#endif
-+
-+#define PORT_NewArena(b) (char *)12345
-+#define PORT_ArenaMark(a) NULL
-+#define PORT_ArenaUnmark(a, b)
-+#define PORT_ArenaRelease(a, m)
-+#define PORT_FreeArena(a, b)
-+#define PORT_Strlen(s) strlen((s))
-+#define PORT_SetError(e)
-+
-+#define PRBool boolean_t
-+#define PR_TRUE B_TRUE
-+#define PR_FALSE B_FALSE
-+
-+#ifdef _KERNEL
-+#define PORT_Assert ASSERT
-+#define PORT_Memcpy(t, f, l) bcopy((f), (t), (l))
-+#else
-+#define PORT_Assert assert
-+#define PORT_Memcpy(t, f, l) memcpy((t), (f), (l))
-+#endif
-+
-+#endif
-+
-+#define CHECK_OK(func) if (func == NULL) goto cleanup
-+#define CHECK_SEC_OK(func) if (SECSuccess != (rv = func)) goto cleanup
-+
-+#ifndef SYSTEM_NSS
-+typedef enum {
-+ siBuffer = 0,
-+ siClearDataBuffer = 1,
-+ siCipherDataBuffer = 2,
-+ siDERCertBuffer = 3,
-+ siEncodedCertBuffer = 4,
-+ siDERNameBuffer = 5,
-+ siEncodedNameBuffer = 6,
-+ siAsciiNameString = 7,
-+ siAsciiString = 8,
-+ siDEROID = 9,
-+ siUnsignedInteger = 10,
-+ siUTCTime = 11,
-+ siGeneralizedTime = 12
-+} SECItemType;
-+
-+typedef struct SECItemStr SECItem;
-+
-+struct SECItemStr {
-+ SECItemType type;
-+ unsigned char *data;
-+ unsigned int len;
-+};
-+
-+typedef SECItem SECKEYECParams;
-+
-+typedef enum { ec_params_explicit,
-+ ec_params_named
-+} ECParamsType;
-+
-+typedef enum { ec_field_GFp = 1,
-+ ec_field_GF2m
-+} ECFieldType;
-+
-+struct ECFieldIDStr {
-+ int size; /* field size in bits */
-+ ECFieldType type;
-+ union {
-+ SECItem prime; /* prime p for (GFp) */
-+ SECItem poly; /* irreducible binary polynomial for (GF2m) */
-+ } u;
-+ int k1; /* first coefficient of pentanomial or
-+ * the only coefficient of trinomial
-+ */
-+ int k2; /* two remaining coefficients of pentanomial */
-+ int k3;
-+};
-+typedef struct ECFieldIDStr ECFieldID;
-+
-+struct ECCurveStr {
-+ SECItem a; /* contains octet stream encoding of
-+ * field element (X9.62 section 4.3.3)
-+ */
-+ SECItem b;
-+ SECItem seed;
-+};
-+typedef struct ECCurveStr ECCurve;
-+
-+typedef void PRArenaPool;
-+
-+struct ECParamsStr {
-+ PRArenaPool * arena;
-+ ECParamsType type;
-+ ECFieldID fieldID;
-+ ECCurve curve;
-+ SECItem base;
-+ SECItem order;
-+ int cofactor;
-+ SECItem DEREncoding;
-+ ECCurveName name;
-+ SECItem curveOID;
-+};
-+typedef struct ECParamsStr ECParams;
-+
-+struct ECPublicKeyStr {
-+ ECParams ecParams;
-+ SECItem publicValue; /* elliptic curve point encoded as
-+ * octet stream.
-+ */
-+};
-+typedef struct ECPublicKeyStr ECPublicKey;
-+
-+struct ECPrivateKeyStr {
-+ ECParams ecParams;
-+ SECItem publicValue; /* encoded ec point */
-+ SECItem privateValue; /* private big integer */
-+ SECItem version; /* As per SEC 1, Appendix C, Section C.4 */
-+};
-+typedef struct ECPrivateKeyStr ECPrivateKey;
-+
-+typedef enum _SECStatus {
-+ SECBufferTooSmall = -3,
-+ SECWouldBlock = -2,
-+ SECFailure = -1,
-+ SECSuccess = 0
-+} SECStatus;
-+#endif
-+
-+#ifdef _KERNEL
-+#define RNG_GenerateGlobalRandomBytes(p,l) ecc_knzero_random_generator((p), (l))
-+#else
-+/*
-+ This function is no longer required because the random bytes are now
-+ supplied by the caller. Force a failure.
-+*/
-+#ifndef SYSTEM_NSS
-+#define RNG_GenerateGlobalRandomBytes(p,l) SECFailure
-+#endif
-+#endif
-+#define CHECK_MPI_OK(func) if (MP_OKAY > (err = func)) goto cleanup
-+#define MP_TO_SEC_ERROR(err)
-+
-+#define SECITEM_TO_MPINT(it, mp) \
-+ CHECK_MPI_OK(mp_read_unsigned_octets((mp), (it).data, (it).len))
-+
-+extern int ecc_knzero_random_generator(uint8_t *, size_t);
-+extern ulong_t soft_nzero_random_generator(uint8_t *, ulong_t);
-+
-+#ifdef SYSTEM_NSS
-+#define EC_DecodeParams(a,b,c) EC_DecodeParams(a,b)
-+#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
-+extern SECStatus EC_DecodeParams(const SECItem *, ECParams **, int);
-+
-+extern SECItem * SECITEM_AllocItem(PRArenaPool *, SECItem *, unsigned int, int);
-+extern SECStatus SECITEM_CopyItem(PRArenaPool *, SECItem *, const SECItem *,
-+ int);
-+extern void SECITEM_FreeItem(SECItem *, boolean_t);
-+
-+/* This function has been modified to accept an array of random bytes */
-+extern SECStatus EC_NewKey(ECParams *ecParams, ECPrivateKey **privKey,
-+ 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, int timing);
-+extern SECStatus ECDSA_VerifyDigest(ECPublicKey *, const SECItem *,
-+ const SECItem *, int);
-+extern SECStatus ECDH_Derive(SECItem *, ECParams *, SECItem *, boolean_t,
-+ SECItem *, int);
-+#endif
-+
-+#ifdef __cplusplus
-+}
-+#endif
-+
-+#endif /* _ECC_IMPL_H */
diff --git a/pr2126-synchronise_elliptic_curves_in_sun_security_ec_namedcurve_with_those_listed_by_nss.patch b/pr2126-synchronise_elliptic_curves_in_sun_security_ec_namedcurve_with_those_listed_by_nss.patch
deleted file mode 100644
index 6a1da4c..0000000
--- a/pr2126-synchronise_elliptic_curves_in_sun_security_ec_namedcurve_with_those_listed_by_nss.patch
+++ /dev/null
@@ -1,687 +0,0 @@
-diff --git a/src/java.base/share/classes/sun/security/ssl/SupportedGroupsExtension.java b/src/java.base/share/classes/sun/security/ssl/SupportedGroupsExtension.java
---- openjdk/src/java.base/share/classes/sun/security/ssl/SupportedGroupsExtension.java
-+++ openjdk/src/java.base/share/classes/sun/security/ssl/SupportedGroupsExtension.java
-@@ -180,72 +180,6 @@
- // Elliptic Curves (RFC 4492)
- //
- // See sun.security.util.CurveDB for the OIDs
-- // NIST K-163
-- SECT163_K1 (0x0001, "sect163k1", "1.3.132.0.1", true,
-- ProtocolVersion.PROTOCOLS_TO_12),
-- SECT163_R1 (0x0002, "sect163r1", "1.3.132.0.2", false,
-- ProtocolVersion.PROTOCOLS_TO_12),
--
-- // NIST B-163
-- SECT163_R2 (0x0003, "sect163r2", "1.3.132.0.15", true,
-- ProtocolVersion.PROTOCOLS_TO_12),
-- SECT193_R1 (0x0004, "sect193r1", "1.3.132.0.24", false,
-- ProtocolVersion.PROTOCOLS_TO_12),
-- SECT193_R2 (0x0005, "sect193r2", "1.3.132.0.25", false,
-- ProtocolVersion.PROTOCOLS_TO_12),
--
-- // NIST K-233
-- SECT233_K1 (0x0006, "sect233k1", "1.3.132.0.26", true,
-- ProtocolVersion.PROTOCOLS_TO_12),
--
-- // NIST B-233
-- SECT233_R1 (0x0007, "sect233r1", "1.3.132.0.27", true,
-- ProtocolVersion.PROTOCOLS_TO_12),
-- SECT239_K1 (0x0008, "sect239k1", "1.3.132.0.3", false,
-- ProtocolVersion.PROTOCOLS_TO_12),
--
-- // NIST K-283
-- SECT283_K1 (0x0009, "sect283k1", "1.3.132.0.16", true,
-- ProtocolVersion.PROTOCOLS_TO_12),
--
-- // NIST B-283
-- SECT283_R1 (0x000A, "sect283r1", "1.3.132.0.17", true,
-- ProtocolVersion.PROTOCOLS_TO_12),
--
-- // NIST K-409
-- SECT409_K1 (0x000B, "sect409k1", "1.3.132.0.36", true,
-- ProtocolVersion.PROTOCOLS_TO_12),
--
-- // NIST B-409
-- SECT409_R1 (0x000C, "sect409r1", "1.3.132.0.37", true,
-- ProtocolVersion.PROTOCOLS_TO_12),
--
-- // NIST K-571
-- SECT571_K1 (0x000D, "sect571k1", "1.3.132.0.38", true,
-- ProtocolVersion.PROTOCOLS_TO_12),
--
-- // NIST B-571
-- SECT571_R1 (0x000E, "sect571r1", "1.3.132.0.39", true,
-- ProtocolVersion.PROTOCOLS_TO_12),
-- SECP160_K1 (0x000F, "secp160k1", "1.3.132.0.9", false,
-- ProtocolVersion.PROTOCOLS_TO_12),
-- SECP160_R1 (0x0010, "secp160r1", "1.3.132.0.8", false,
-- ProtocolVersion.PROTOCOLS_TO_12),
-- SECP160_R2 (0x0011, "secp160r2", "1.3.132.0.30", false,
-- ProtocolVersion.PROTOCOLS_TO_12),
-- SECP192_K1 (0x0012, "secp192k1", "1.3.132.0.31", false,
-- ProtocolVersion.PROTOCOLS_TO_12),
--
-- // NIST P-192
-- SECP192_R1 (0x0013, "secp192r1", "1.2.840.10045.3.1.1", true,
-- ProtocolVersion.PROTOCOLS_TO_12),
-- SECP224_K1 (0x0014, "secp224k1", "1.3.132.0.32", false,
-- ProtocolVersion.PROTOCOLS_TO_12),
-- // NIST P-224
-- SECP224_R1 (0x0015, "secp224r1", "1.3.132.0.33", true,
-- ProtocolVersion.PROTOCOLS_TO_12),
-- SECP256_K1 (0x0016, "secp256k1", "1.3.132.0.10", false,
-- ProtocolVersion.PROTOCOLS_TO_12),
-
- // NIST P-256
- SECP256_R1 (0x0017, "secp256r1", "1.2.840.10045.3.1.7", true,
-@@ -116,12 +116,6 @@
- NamedGroup.SECP256_R1,
- NamedGroup.SECP384_R1,
- NamedGroup.SECP521_R1,
-- NamedGroup.SECT283_K1,
-- NamedGroup.SECT283_R1,
-- NamedGroup.SECT409_K1,
-- NamedGroup.SECT409_R1,
-- NamedGroup.SECT571_K1,
-- NamedGroup.SECT571_R1,
-
- // FFDHE 2048
- NamedGroup.FFDHE_2048,
-@@ -136,15 +130,6 @@
- NamedGroup.SECP256_R1,
- NamedGroup.SECP384_R1,
- NamedGroup.SECP521_R1,
-- NamedGroup.SECT283_K1,
-- NamedGroup.SECT283_R1,
-- NamedGroup.SECT409_K1,
-- NamedGroup.SECT409_R1,
-- NamedGroup.SECT571_K1,
-- NamedGroup.SECT571_R1,
--
-- // non-NIST curves
-- NamedGroup.SECP256_K1,
-
- // FFDHE 2048
- NamedGroup.FFDHE_2048,
-diff --git a/src/java.base/share/classes/sun/security/util/CurveDB.java b/src/java.base/share/classes/sun/security/util/CurveDB.java
---- openjdk/src/java.base/share/classes/sun/security/util/CurveDB.java
-+++ openjdk/src/java.base/share/classes/sun/security/util/CurveDB.java
-@@ -168,114 +168,6 @@
- Pattern nameSplitPattern = Pattern.compile(SPLIT_PATTERN);
-
- /* SEC2 prime curves */
-- add("secp112r1", "1.3.132.0.6", P,
-- "DB7C2ABF62E35E668076BEAD208B",
-- "DB7C2ABF62E35E668076BEAD2088",
-- "659EF8BA043916EEDE8911702B22",
-- "09487239995A5EE76B55F9C2F098",
-- "A89CE5AF8724C0A23E0E0FF77500",
-- "DB7C2ABF62E35E7628DFAC6561C5",
-- 1, nameSplitPattern);
--
-- add("secp112r2", "1.3.132.0.7", P,
-- "DB7C2ABF62E35E668076BEAD208B",
-- "6127C24C05F38A0AAAF65C0EF02C",
-- "51DEF1815DB5ED74FCC34C85D709",
-- "4BA30AB5E892B4E1649DD0928643",
-- "adcd46f5882e3747def36e956e97",
-- "36DF0AAFD8B8D7597CA10520D04B",
-- 4, nameSplitPattern);
--
-- add("secp128r1", "1.3.132.0.28", P,
-- "FFFFFFFDFFFFFFFFFFFFFFFFFFFFFFFF",
-- "FFFFFFFDFFFFFFFFFFFFFFFFFFFFFFFC",
-- "E87579C11079F43DD824993C2CEE5ED3",
-- "161FF7528B899B2D0C28607CA52C5B86",
-- "CF5AC8395BAFEB13C02DA292DDED7A83",
-- "FFFFFFFE0000000075A30D1B9038A115",
-- 1, nameSplitPattern);
--
-- add("secp128r2", "1.3.132.0.29", P,
-- "FFFFFFFDFFFFFFFFFFFFFFFFFFFFFFFF",
-- "D6031998D1B3BBFEBF59CC9BBFF9AEE1",
-- "5EEEFCA380D02919DC2C6558BB6D8A5D",
-- "7B6AA5D85E572983E6FB32A7CDEBC140",
-- "27B6916A894D3AEE7106FE805FC34B44",
-- "3FFFFFFF7FFFFFFFBE0024720613B5A3",
-- 4, nameSplitPattern);
--
-- add("secp160k1", "1.3.132.0.9", P,
-- "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFAC73",
-- "0000000000000000000000000000000000000000",
-- "0000000000000000000000000000000000000007",
-- "3B4C382CE37AA192A4019E763036F4F5DD4D7EBB",
-- "938CF935318FDCED6BC28286531733C3F03C4FEE",
-- "0100000000000000000001B8FA16DFAB9ACA16B6B3",
-- 1, nameSplitPattern);
--
-- add("secp160r1", "1.3.132.0.8", P,
-- "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7FFFFFFF",
-- "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7FFFFFFC",
-- "1C97BEFC54BD7A8B65ACF89F81D4D4ADC565FA45",
-- "4A96B5688EF573284664698968C38BB913CBFC82",
-- "23A628553168947D59DCC912042351377AC5FB32",
-- "0100000000000000000001F4C8F927AED3CA752257",
-- 1, nameSplitPattern);
--
-- add("secp160r2", "1.3.132.0.30", P,
-- "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFAC73",
-- "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFAC70",
-- "B4E134D3FB59EB8BAB57274904664D5AF50388BA",
-- "52DCB034293A117E1F4FF11B30F7199D3144CE6D",
-- "FEAFFEF2E331F296E071FA0DF9982CFEA7D43F2E",
-- "0100000000000000000000351EE786A818F3A1A16B",
-- 1, nameSplitPattern);
--
-- add("secp192k1", "1.3.132.0.31", P,
-- "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFEE37",
-- "000000000000000000000000000000000000000000000000",
-- "000000000000000000000000000000000000000000000003",
-- "DB4FF10EC057E9AE26B07D0280B7F4341DA5D1B1EAE06C7D",
-- "9B2F2F6D9C5628A7844163D015BE86344082AA88D95E2F9D",
-- "FFFFFFFFFFFFFFFFFFFFFFFE26F2FC170F69466A74DEFD8D",
-- 1, nameSplitPattern);
--
-- add("secp192r1 [NIST P-192, X9.62 prime192v1]", "1.2.840.10045.3.1.1", PD,
-- "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFFFFFFFFFF",
-- "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFFFFFFFFFC",
-- "64210519E59C80E70FA7E9AB72243049FEB8DEECC146B9B1",
-- "188DA80EB03090F67CBF20EB43A18800F4FF0AFD82FF1012",
-- "07192B95FFC8DA78631011ED6B24CDD573F977A11E794811",
-- "FFFFFFFFFFFFFFFFFFFFFFFF99DEF836146BC9B1B4D22831",
-- 1, nameSplitPattern);
--
-- add("secp224k1", "1.3.132.0.32", P,
-- "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFE56D",
-- "00000000000000000000000000000000000000000000000000000000",
-- "00000000000000000000000000000000000000000000000000000005",
-- "A1455B334DF099DF30FC28A169A467E9E47075A90F7E650EB6B7A45C",
-- "7E089FED7FBA344282CAFBD6F7E319F7C0B0BD59E2CA4BDB556D61A5",
-- "010000000000000000000000000001DCE8D2EC6184CAF0A971769FB1F7",
-- 1, nameSplitPattern);
--
-- add("secp224r1 [NIST P-224]", "1.3.132.0.33", PD,
-- "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000001",
-- "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFE",
-- "B4050A850C04B3ABF54132565044B0B7D7BFD8BA270B39432355FFB4",
-- "B70E0CBD6BB4BF7F321390B94A03C1D356C21122343280D6115C1D21",
-- "BD376388B5F723FB4C22DFE6CD4375A05A07476444D5819985007E34",
-- "FFFFFFFFFFFFFFFFFFFFFFFFFFFF16A2E0B8F03E13DD29455C5C2A3D",
-- 1, nameSplitPattern);
--
-- add("secp256k1", "1.3.132.0.10", P,
-- "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFC2F",
-- "0000000000000000000000000000000000000000000000000000000000000000",
-- "0000000000000000000000000000000000000000000000000000000000000007",
-- "79BE667EF9DCBBAC55A06295CE870B07029BFCDB2DCE28D959F2815B16F81798",
-- "483ADA7726A3C4655DA4FBFC0E1108A8FD17B448A68554199C47D08FFB10D4B8",
-- "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141",
-- 1, nameSplitPattern);
--
- add("secp256r1 [NIST P-256, X9.62 prime256v1]", "1.2.840.10045.3.1.7", PD,
- "FFFFFFFF00000001000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFF",
- "FFFFFFFF00000001000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFC",
-@@ -303,435 +195,6 @@
- "01FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA51868783BF2F966B7FCC0148F709A5D03BB5C9B8899C47AEBB6FB71E91386409",
- 1, nameSplitPattern);
-
-- /* ANSI X9.62 prime curves */
-- add("X9.62 prime192v2", "1.2.840.10045.3.1.2", P,
-- "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFFFFFFFFFF",
-- "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFFFFFFFFFC",
-- "CC22D6DFB95C6B25E49C0D6364A4E5980C393AA21668D953",
-- "EEA2BAE7E1497842F2DE7769CFE9C989C072AD696F48034A",
-- "6574D11D69B6EC7A672BB82A083DF2F2B0847DE970B2DE15",
-- "FFFFFFFFFFFFFFFFFFFFFFFE5FB1A724DC80418648D8DD31",
-- 1, nameSplitPattern);
--
-- add("X9.62 prime192v3", "1.2.840.10045.3.1.3", P,
-- "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFFFFFFFFFF",
-- "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFFFFFFFFFC",
-- "22123DC2395A05CAA7423DAECCC94760A7D462256BD56916",
-- "7D29778100C65A1DA1783716588DCE2B8B4AEE8E228F1896",
-- "38A90F22637337334B49DCB66A6DC8F9978ACA7648A943B0",
-- "FFFFFFFFFFFFFFFFFFFFFFFF7A62D031C83F4294F640EC13",
-- 1, nameSplitPattern);
--
-- add("X9.62 prime239v1", "1.2.840.10045.3.1.4", P,
-- "7FFFFFFFFFFFFFFFFFFFFFFF7FFFFFFFFFFF8000000000007FFFFFFFFFFF",
-- "7FFFFFFFFFFFFFFFFFFFFFFF7FFFFFFFFFFF8000000000007FFFFFFFFFFC",
-- "6B016C3BDCF18941D0D654921475CA71A9DB2FB27D1D37796185C2942C0A",
-- "0FFA963CDCA8816CCC33B8642BEDF905C3D358573D3F27FBBD3B3CB9AAAF",
-- "7DEBE8E4E90A5DAE6E4054CA530BA04654B36818CE226B39FCCB7B02F1AE",
-- "7FFFFFFFFFFFFFFFFFFFFFFF7FFFFF9E5E9A9F5D9071FBD1522688909D0B",
-- 1, nameSplitPattern);
--
-- add("X9.62 prime239v2", "1.2.840.10045.3.1.5", P,
-- "7FFFFFFFFFFFFFFFFFFFFFFF7FFFFFFFFFFF8000000000007FFFFFFFFFFF",
-- "7FFFFFFFFFFFFFFFFFFFFFFF7FFFFFFFFFFF8000000000007FFFFFFFFFFC",
-- "617FAB6832576CBBFED50D99F0249C3FEE58B94BA0038C7AE84C8C832F2C",
-- "38AF09D98727705120C921BB5E9E26296A3CDCF2F35757A0EAFD87B830E7",
-- "5B0125E4DBEA0EC7206DA0FC01D9B081329FB555DE6EF460237DFF8BE4BA",
-- "7FFFFFFFFFFFFFFFFFFFFFFF800000CFA7E8594377D414C03821BC582063",
-- 1, nameSplitPattern);
--
-- add("X9.62 prime239v3", "1.2.840.10045.3.1.6", P,
-- "7FFFFFFFFFFFFFFFFFFFFFFF7FFFFFFFFFFF8000000000007FFFFFFFFFFF",
-- "7FFFFFFFFFFFFFFFFFFFFFFF7FFFFFFFFFFF8000000000007FFFFFFFFFFC",
-- "255705FA2A306654B1F4CB03D6A750A30C250102D4988717D9BA15AB6D3E",
-- "6768AE8E18BB92CFCF005C949AA2C6D94853D0E660BBF854B1C9505FE95A",
-- "1607E6898F390C06BC1D552BAD226F3B6FCFE48B6E818499AF18E3ED6CF3",
-- "7FFFFFFFFFFFFFFFFFFFFFFF7FFFFF975DEB41B3A6057C3C432146526551",
-- 1, nameSplitPattern);
--
-- /* SEC2 binary curves */
-- add("sect113r1", "1.3.132.0.4", B,
-- "020000000000000000000000000201",
-- "003088250CA6E7C7FE649CE85820F7",
-- "00E8BEE4D3E2260744188BE0E9C723",
-- "009D73616F35F4AB1407D73562C10F",
-- "00A52830277958EE84D1315ED31886",
-- "0100000000000000D9CCEC8A39E56F",
-- 2, nameSplitPattern);
--
-- add("sect113r2", "1.3.132.0.5", B,
-- "020000000000000000000000000201",
-- "00689918DBEC7E5A0DD6DFC0AA55C7",
-- "0095E9A9EC9B297BD4BF36E059184F",
-- "01A57A6A7B26CA5EF52FCDB8164797",
-- "00B3ADC94ED1FE674C06E695BABA1D",
-- "010000000000000108789B2496AF93",
-- 2, nameSplitPattern);
--
-- add("sect131r1", "1.3.132.0.22", B,
-- "080000000000000000000000000000010D",
-- "07A11B09A76B562144418FF3FF8C2570B8",
-- "0217C05610884B63B9C6C7291678F9D341",
-- "0081BAF91FDF9833C40F9C181343638399",
-- "078C6E7EA38C001F73C8134B1B4EF9E150",
-- "0400000000000000023123953A9464B54D",
-- 2, nameSplitPattern);
--
-- add("sect131r2", "1.3.132.0.23", B,
-- "080000000000000000000000000000010D",
-- "03E5A88919D7CAFCBF415F07C2176573B2",
-- "04B8266A46C55657AC734CE38F018F2192",
-- "0356DCD8F2F95031AD652D23951BB366A8",
-- "0648F06D867940A5366D9E265DE9EB240F",
-- "0400000000000000016954A233049BA98F",
-- 2, nameSplitPattern);
--
-- add("sect163k1 [NIST K-163]", "1.3.132.0.1", BD,
-- "0800000000000000000000000000000000000000C9",
-- "000000000000000000000000000000000000000001",
-- "000000000000000000000000000000000000000001",
-- "02FE13C0537BBC11ACAA07D793DE4E6D5E5C94EEE8",
-- "0289070FB05D38FF58321F2E800536D538CCDAA3D9",
-- "04000000000000000000020108A2E0CC0D99F8A5EF",
-- 2, nameSplitPattern);
--
-- add("sect163r1", "1.3.132.0.2", B,
-- "0800000000000000000000000000000000000000C9",
-- "07B6882CAAEFA84F9554FF8428BD88E246D2782AE2",
-- "0713612DCDDCB40AAB946BDA29CA91F73AF958AFD9",
-- "0369979697AB43897789566789567F787A7876A654",
-- "00435EDB42EFAFB2989D51FEFCE3C80988F41FF883",
-- "03FFFFFFFFFFFFFFFFFFFF48AAB689C29CA710279B",
-- 2, nameSplitPattern);
--
-- add("sect163r2 [NIST B-163]", "1.3.132.0.15", BD,
-- "0800000000000000000000000000000000000000C9",
-- "000000000000000000000000000000000000000001",
-- "020A601907B8C953CA1481EB10512F78744A3205FD",
-- "03F0EBA16286A2D57EA0991168D4994637E8343E36",
-- "00D51FBC6C71A0094FA2CDD545B11C5C0C797324F1",
-- "040000000000000000000292FE77E70C12A4234C33",
-- 2, nameSplitPattern);
--
-- add("sect193r1", "1.3.132.0.24", B,
-- "02000000000000000000000000000000000000000000008001",
-- "0017858FEB7A98975169E171F77B4087DE098AC8A911DF7B01",
-- "00FDFB49BFE6C3A89FACADAA7A1E5BBC7CC1C2E5D831478814",
-- "01F481BC5F0FF84A74AD6CDF6FDEF4BF6179625372D8C0C5E1",
-- "0025E399F2903712CCF3EA9E3A1AD17FB0B3201B6AF7CE1B05",
-- "01000000000000000000000000C7F34A778F443ACC920EBA49",
-- 2, nameSplitPattern);
--
-- add("sect193r2", "1.3.132.0.25", B,
-- "02000000000000000000000000000000000000000000008001",
-- "0163F35A5137C2CE3EA6ED8667190B0BC43ECD69977702709B",
-- "00C9BB9E8927D4D64C377E2AB2856A5B16E3EFB7F61D4316AE",
-- "00D9B67D192E0367C803F39E1A7E82CA14A651350AAE617E8F",
-- "01CE94335607C304AC29E7DEFBD9CA01F596F927224CDECF6C",
-- "010000000000000000000000015AAB561B005413CCD4EE99D5",
-- 2, nameSplitPattern);
--
-- add("sect233k1 [NIST K-233]", "1.3.132.0.26", BD,
-- "020000000000000000000000000000000000000004000000000000000001",
-- "000000000000000000000000000000000000000000000000000000000000",
-- "000000000000000000000000000000000000000000000000000000000001",
-- "017232BA853A7E731AF129F22FF4149563A419C26BF50A4C9D6EEFAD6126",
-- "01DB537DECE819B7F70F555A67C427A8CD9BF18AEB9B56E0C11056FAE6A3",
-- "008000000000000000000000000000069D5BB915BCD46EFB1AD5F173ABDF",
-- 4, nameSplitPattern);
--
-- add("sect233r1 [NIST B-233]", "1.3.132.0.27", B,
-- "020000000000000000000000000000000000000004000000000000000001",
-- "000000000000000000000000000000000000000000000000000000000001",
-- "0066647EDE6C332C7F8C0923BB58213B333B20E9CE4281FE115F7D8F90AD",
-- "00FAC9DFCBAC8313BB2139F1BB755FEF65BC391F8B36F8F8EB7371FD558B",
-- "01006A08A41903350678E58528BEBF8A0BEFF867A7CA36716F7E01F81052",
-- "01000000000000000000000000000013E974E72F8A6922031D2603CFE0D7",
-- 2, nameSplitPattern);
--
-- add("sect239k1", "1.3.132.0.3", B,
-- "800000000000000000004000000000000000000000000000000000000001",
-- "000000000000000000000000000000000000000000000000000000000000",
-- "000000000000000000000000000000000000000000000000000000000001",
-- "29A0B6A887A983E9730988A68727A8B2D126C44CC2CC7B2A6555193035DC",
-- "76310804F12E549BDB011C103089E73510ACB275FC312A5DC6B76553F0CA",
-- "2000000000000000000000000000005A79FEC67CB6E91F1C1DA800E478A5",
-- 4, nameSplitPattern);
--
-- add("sect283k1 [NIST K-283]", "1.3.132.0.16", BD,
-- "0800000000000000000000000000000000000000000000000000000000000000000010A1",
-- "000000000000000000000000000000000000000000000000000000000000000000000000",
-- "000000000000000000000000000000000000000000000000000000000000000000000001",
-- "0503213F78CA44883F1A3B8162F188E553CD265F23C1567A16876913B0C2AC2458492836",
-- "01CCDA380F1C9E318D90F95D07E5426FE87E45C0E8184698E45962364E34116177DD2259",
-- "01FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE9AE2ED07577265DFF7F94451E061E163C61",
-- 4, nameSplitPattern);
--
-- add("sect283r1 [NIST B-283]", "1.3.132.0.17", B,
-- "0800000000000000000000000000000000000000000000000000000000000000000010A1",
-- "000000000000000000000000000000000000000000000000000000000000000000000001",
-- "027B680AC8B8596DA5A4AF8A19A0303FCA97FD7645309FA2A581485AF6263E313B79A2F5",
-- "05F939258DB7DD90E1934F8C70B0DFEC2EED25B8557EAC9C80E2E198F8CDBECD86B12053",
-- "03676854FE24141CB98FE6D4B20D02B4516FF702350EDDB0826779C813F0DF45BE8112F4",
-- "03FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEF90399660FC938A90165B042A7CEFADB307",
-- 2, nameSplitPattern);
--
-- add("sect409k1 [NIST K-409]", "1.3.132.0.36", BD,
-- "02000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000001",
-- "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
-- "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001",
-- "0060F05F658F49C1AD3AB1890F7184210EFD0987E307C84C27ACCFB8F9F67CC2C460189EB5AAAA62EE222EB1B35540CFE9023746",
-- "01E369050B7C4E42ACBA1DACBF04299C3460782F918EA427E6325165E9EA10E3DA5F6C42E9C55215AA9CA27A5863EC48D8E0286B",
-- "007FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE5F83B2D4EA20400EC4557D5ED3E3E7CA5B4B5C83B8E01E5FCF",
-- 4, nameSplitPattern);
--
-- add("sect409r1 [NIST B-409]", "1.3.132.0.37", B,
-- "02000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000001",
-- "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001",
-- "0021A5C2C8EE9FEB5C4B9A753B7B476B7FD6422EF1F3DD674761FA99D6AC27C8A9A197B272822F6CD57A55AA4F50AE317B13545F",
-- "015D4860D088DDB3496B0C6064756260441CDE4AF1771D4DB01FFE5B34E59703DC255A868A1180515603AEAB60794E54BB7996A7",
-- "0061B1CFAB6BE5F32BBFA78324ED106A7636B9C5A7BD198D0158AA4F5488D08F38514F1FDF4B4F40D2181B3681C364BA0273C706",
-- "010000000000000000000000000000000000000000000000000001E2AAD6A612F33307BE5FA47C3C9E052F838164CD37D9A21173",
-- 2, nameSplitPattern);
--
-- add("sect571k1 [NIST K-571]", "1.3.132.0.38", BD,
-- "080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000425",
-- "000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
-- "000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001",
-- "026EB7A859923FBC82189631F8103FE4AC9CA2970012D5D46024804801841CA44370958493B205E647DA304DB4CEB08CBBD1BA39494776FB988B47174DCA88C7E2945283A01C8972",
-- "0349DC807F4FBF374F4AEADE3BCA95314DD58CEC9F307A54FFC61EFC006D8A2C9D4979C0AC44AEA74FBEBBB9F772AEDCB620B01A7BA7AF1B320430C8591984F601CD4C143EF1C7A3",
-- "020000000000000000000000000000000000000000000000000000000000000000000000131850E1F19A63E4B391A8DB917F4138B630D84BE5D639381E91DEB45CFE778F637C1001",
-- 4, nameSplitPattern);
--
-- add("sect571r1 [NIST B-571]", "1.3.132.0.39", B,
-- "080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000425",
-- "000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001",
-- "02F40E7E2221F295DE297117B7F3D62F5C6A97FFCB8CEFF1CD6BA8CE4A9A18AD84FFABBD8EFA59332BE7AD6756A66E294AFD185A78FF12AA520E4DE739BACA0C7FFEFF7F2955727A",
-- "0303001D34B856296C16C0D40D3CD7750A93D1D2955FA80AA5F40FC8DB7B2ABDBDE53950F4C0D293CDD711A35B67FB1499AE60038614F1394ABFA3B4C850D927E1E7769C8EEC2D19",
-- "037BF27342DA639B6DCCFFFEB73D69D78C6C27A6009CBBCA1980F8533921E8A684423E43BAB08A576291AF8F461BB2A8B3531D2F0485C19B16E2F1516E23DD3C1A4827AF1B8AC15B",
-- "03FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE661CE18FF55987308059B186823851EC7DD9CA1161DE93D5174D66E8382E9BB2FE84E47",
-- 2, nameSplitPattern);
--
-- /* ANSI X9.62 binary curves */
-- add("X9.62 c2tnb191v1", "1.2.840.10045.3.0.5", B,
-- "800000000000000000000000000000000000000000000201",
-- "2866537B676752636A68F56554E12640276B649EF7526267",
-- "2E45EF571F00786F67B0081B9495A3D95462F5DE0AA185EC",
-- "36B3DAF8A23206F9C4F299D7B21A9C369137F2C84AE1AA0D",
-- "765BE73433B3F95E332932E70EA245CA2418EA0EF98018FB",
-- "40000000000000000000000004A20E90C39067C893BBB9A5",
-- 2, nameSplitPattern);
--
-- add("X9.62 c2tnb191v2", "1.2.840.10045.3.0.6", B,
-- "800000000000000000000000000000000000000000000201",
-- "401028774D7777C7B7666D1366EA432071274F89FF01E718",
-- "0620048D28BCBD03B6249C99182B7C8CD19700C362C46A01",
-- "3809B2B7CC1B28CC5A87926AAD83FD28789E81E2C9E3BF10",
-- "17434386626D14F3DBF01760D9213A3E1CF37AEC437D668A",
-- "20000000000000000000000050508CB89F652824E06B8173",
-- 4, nameSplitPattern);
--
-- add("X9.62 c2tnb191v3", "1.2.840.10045.3.0.7", B,
-- "800000000000000000000000000000000000000000000201",
-- "6C01074756099122221056911C77D77E77A777E7E7E77FCB",
-- "71FE1AF926CF847989EFEF8DB459F66394D90F32AD3F15E8",
-- "375D4CE24FDE434489DE8746E71786015009E66E38A926DD",
-- "545A39176196575D985999366E6AD34CE0A77CD7127B06BE",
-- "155555555555555555555555610C0B196812BFB6288A3EA3",
-- 6, nameSplitPattern);
--
-- add("X9.62 c2tnb239v1", "1.2.840.10045.3.0.11", B,
-- "800000000000000000000000000000000000000000000000001000000001",
-- "32010857077C5431123A46B808906756F543423E8D27877578125778AC76",
-- "790408F2EEDAF392B012EDEFB3392F30F4327C0CA3F31FC383C422AA8C16",
-- "57927098FA932E7C0A96D3FD5B706EF7E5F5C156E16B7E7C86038552E91D",
-- "61D8EE5077C33FECF6F1A16B268DE469C3C7744EA9A971649FC7A9616305",
-- "2000000000000000000000000000000F4D42FFE1492A4993F1CAD666E447",
-- 4, nameSplitPattern);
--
-- add("X9.62 c2tnb239v2", "1.2.840.10045.3.0.12", B,
-- "800000000000000000000000000000000000000000000000001000000001",
-- "4230017757A767FAE42398569B746325D45313AF0766266479B75654E65F",
-- "5037EA654196CFF0CD82B2C14A2FCF2E3FF8775285B545722F03EACDB74B",
-- "28F9D04E900069C8DC47A08534FE76D2B900B7D7EF31F5709F200C4CA205",
-- "5667334C45AFF3B5A03BAD9DD75E2C71A99362567D5453F7FA6E227EC833",
-- "1555555555555555555555555555553C6F2885259C31E3FCDF154624522D",
-- 6, nameSplitPattern);
--
-- add("X9.62 c2tnb239v3", "1.2.840.10045.3.0.13", B,
-- "800000000000000000000000000000000000000000000000001000000001",
-- "01238774666A67766D6676F778E676B66999176666E687666D8766C66A9F",
-- "6A941977BA9F6A435199ACFC51067ED587F519C5ECB541B8E44111DE1D40",
-- "70F6E9D04D289C4E89913CE3530BFDE903977D42B146D539BF1BDE4E9C92",
-- "2E5A0EAF6E5E1305B9004DCE5C0ED7FE59A35608F33837C816D80B79F461",
-- "0CCCCCCCCCCCCCCCCCCCCCCCCCCCCCAC4912D2D9DF903EF9888B8A0E4CFF",
-- 0xA, nameSplitPattern);
--
-- add("X9.62 c2tnb359v1", "1.2.840.10045.3.0.18", B,
-- "800000000000000000000000000000000000000000000000000000000000000000000000100000000000000001",
-- "5667676A654B20754F356EA92017D946567C46675556F19556A04616B567D223A5E05656FB549016A96656A557",
-- "2472E2D0197C49363F1FE7F5B6DB075D52B6947D135D8CA445805D39BC345626089687742B6329E70680231988",
-- "3C258EF3047767E7EDE0F1FDAA79DAEE3841366A132E163ACED4ED2401DF9C6BDCDE98E8E707C07A2239B1B097",
-- "53D7E08529547048121E9C95F3791DD804963948F34FAE7BF44EA82365DC7868FE57E4AE2DE211305A407104BD",
-- "01AF286BCA1AF286BCA1AF286BCA1AF286BCA1AF286BC9FB8F6B85C556892C20A7EB964FE7719E74F490758D3B",
-- 0x4C, nameSplitPattern);
--
-- add("X9.62 c2tnb431r1", "1.2.840.10045.3.0.20", B,
-- "800000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000001",
-- "1A827EF00DD6FC0E234CAF046C6A5D8A85395B236CC4AD2CF32A0CADBDC9DDF620B0EB9906D0957F6C6FEACD615468DF104DE296CD8F",
-- "10D9B4A3D9047D8B154359ABFB1B7F5485B04CEB868237DDC9DEDA982A679A5A919B626D4E50A8DD731B107A9962381FB5D807BF2618",
-- "120FC05D3C67A99DE161D2F4092622FECA701BE4F50F4758714E8A87BBF2A658EF8C21E7C5EFE965361F6C2999C0C247B0DBD70CE6B7",
-- "20D0AF8903A96F8D5FA2C255745D3C451B302C9346D9B7E485E7BCE41F6B591F3E8F6ADDCBB0BC4C2F947A7DE1A89B625D6A598B3760",
-- "0340340340340340340340340340340340340340340340340340340323C313FAB50589703B5EC68D3587FEC60D161CC149C1AD4A91",
-- 0x2760, nameSplitPattern);
--
-- /* ANSI X9.62 binary curves from the 1998 standard but forbidden
-- * in the 2005 version of the standard.
-- * We don't register them but leave them here for the time being in
-- * case we need to support them after all.
-- */
--/*
-- add("X9.62 c2pnb163v1", "1.2.840.10045.3.0.1", B,
-- "080000000000000000000000000000000000000107",
-- "072546B5435234A422E0789675F432C89435DE5242",
-- "00C9517D06D5240D3CFF38C74B20B6CD4D6F9DD4D9",
-- "07AF69989546103D79329FCC3D74880F33BBE803CB",
-- "01EC23211B5966ADEA1D3F87F7EA5848AEF0B7CA9F",
-- "0400000000000000000001E60FC8821CC74DAEAFC1",
-- 2, nameSplitPattern);
--
-- add("X9.62 c2pnb163v2", "1.2.840.10045.3.0.2", B,
-- "080000000000000000000000000000000000000107",
-- "0108B39E77C4B108BED981ED0E890E117C511CF072",
-- "0667ACEB38AF4E488C407433FFAE4F1C811638DF20",
-- "0024266E4EB5106D0A964D92C4860E2671DB9B6CC5",
-- "079F684DDF6684C5CD258B3890021B2386DFD19FC5",
-- "03FFFFFFFFFFFFFFFFFFFDF64DE1151ADBB78F10A7",
-- 2, nameSplitPattern);
--
-- add("X9.62 c2pnb163v3", "1.2.840.10045.3.0.3", B,
-- "080000000000000000000000000000000000000107",
-- "07A526C63D3E25A256A007699F5447E32AE456B50E",
-- "03F7061798EB99E238FD6F1BF95B48FEEB4854252B",
-- "02F9F87B7C574D0BDECF8A22E6524775F98CDEBDCB",
-- "05B935590C155E17EA48EB3FF3718B893DF59A05D0",
-- "03FFFFFFFFFFFFFFFFFFFE1AEE140F110AFF961309",
-- 2, nameSplitPattern);
--
-- add("X9.62 c2pnb176w1", "1.2.840.10045.3.0.4", B,
-- "0100000000000000000000000000000000080000000007",
-- "E4E6DB2995065C407D9D39B8D0967B96704BA8E9C90B",
-- "5DDA470ABE6414DE8EC133AE28E9BBD7FCEC0AE0FFF2",
-- "8D16C2866798B600F9F08BB4A8E860F3298CE04A5798",
-- "6FA4539C2DADDDD6BAB5167D61B436E1D92BB16A562C",
-- "00010092537397ECA4F6145799D62B0A19CE06FE26AD",
-- 0xFF6E, nameSplitPattern);
--
-- add("X9.62 c2pnb208w1", "1.2.840.10045.3.0.10", B,
-- "010000000000000000000000000000000800000000000000000007",
-- "0000000000000000000000000000000000000000000000000000",
-- "C8619ED45A62E6212E1160349E2BFA844439FAFC2A3FD1638F9E",
-- "89FDFBE4ABE193DF9559ECF07AC0CE78554E2784EB8C1ED1A57A",
-- "0F55B51A06E78E9AC38A035FF520D8B01781BEB1A6BB08617DE3",
-- "000101BAF95C9723C57B6C21DA2EFF2D5ED588BDD5717E212F9D",
-- 0xFE48, nameSplitPattern);
--
-- add("X9.62 c2pnb272w1", "1.2.840.10045.3.0.16", B,
-- "010000000000000000000000000000000000000000000000000000010000000000000B",
-- "91A091F03B5FBA4AB2CCF49C4EDD220FB028712D42BE752B2C40094DBACDB586FB20",
-- "7167EFC92BB2E3CE7C8AAAFF34E12A9C557003D7C73A6FAF003F99F6CC8482E540F7",
-- "6108BABB2CEEBCF787058A056CBE0CFE622D7723A289E08A07AE13EF0D10D171DD8D",
-- "10C7695716851EEF6BA7F6872E6142FBD241B830FF5EFCACECCAB05E02005DDE9D23",
-- "000100FAF51354E0E39E4892DF6E319C72C8161603FA45AA7B998A167B8F1E629521",
-- 0xFF06, nameSplitPattern);
--
-- add("X9.62 c2pnb304w1", "1.2.840.10045.3.0.17", B,
-- "010000000000000000000000000000000000000000000000000000000000000000000000000807",
-- "FD0D693149A118F651E6DCE6802085377E5F882D1B510B44160074C1288078365A0396C8E681",
-- "BDDB97E555A50A908E43B01C798EA5DAA6788F1EA2794EFCF57166B8C14039601E55827340BE",
-- "197B07845E9BE2D96ADB0F5F3C7F2CFFBD7A3EB8B6FEC35C7FD67F26DDF6285A644F740A2614",
-- "E19FBEB76E0DA171517ECF401B50289BF014103288527A9B416A105E80260B549FDC1B92C03B",
-- "000101D556572AABAC800101D556572AABAC8001022D5C91DD173F8FB561DA6899164443051D",
-- 0xFE2E, nameSplitPattern);
--
-- add("X9.62 c2pnb368w1", "1.2.840.10045.3.0.19", B,
-- "0100000000000000000000000000000000000000000000000000000000000000000000002000000000000000000007",
-- "E0D2EE25095206F5E2A4F9ED229F1F256E79A0E2B455970D8D0D865BD94778C576D62F0AB7519CCD2A1A906AE30D",
-- "FC1217D4320A90452C760A58EDCD30C8DD069B3C34453837A34ED50CB54917E1C2112D84D164F444F8F74786046A",
-- "1085E2755381DCCCE3C1557AFA10C2F0C0C2825646C5B34A394CBCFA8BC16B22E7E789E927BE216F02E1FB136A5F",
-- "7B3EB1BDDCBA62D5D8B2059B525797FC73822C59059C623A45FF3843CEE8F87CD1855ADAA81E2A0750B80FDA2310",
-- "00010090512DA9AF72B08349D98A5DD4C7B0532ECA51CE03E2D10F3B7AC579BD87E909AE40A6F131E9CFCE5BD967",
-- 0xFF70, nameSplitPattern);
--*/
--
-- /*
-- * Brainpool curves (RFC 5639)
-- * (Twisted curves are not included)
-- */
--
-- add("brainpoolP160r1", "1.3.36.3.3.2.8.1.1.1", P,
-- "E95E4A5F737059DC60DFC7AD95B3D8139515620F",
-- "340E7BE2A280EB74E2BE61BADA745D97E8F7C300",
-- "1E589A8595423412134FAA2DBDEC95C8D8675E58",
-- "BED5AF16EA3F6A4F62938C4631EB5AF7BDBCDBC3",
-- "1667CB477A1A8EC338F94741669C976316DA6321",
-- "E95E4A5F737059DC60DF5991D45029409E60FC09",
-- 1, nameSplitPattern);
--
-- add("brainpoolP192r1", "1.3.36.3.3.2.8.1.1.3", P,
-- "C302F41D932A36CDA7A3463093D18DB78FCE476DE1A86297",
-- "6A91174076B1E0E19C39C031FE8685C1CAE040E5C69A28EF",
-- "469A28EF7C28CCA3DC721D044F4496BCCA7EF4146FBF25C9",
-- "C0A0647EAAB6A48753B033C56CB0F0900A2F5C4853375FD6",
-- "14B690866ABD5BB88B5F4828C1490002E6773FA2FA299B8F",
-- "C302F41D932A36CDA7A3462F9E9E916B5BE8F1029AC4ACC1",
-- 1, nameSplitPattern);
--
-- add("brainpoolP224r1", "1.3.36.3.3.2.8.1.1.5", P,
-- "D7C134AA264366862A18302575D1D787B09F075797DA89F57EC8C0FF",
-- "68A5E62CA9CE6C1C299803A6C1530B514E182AD8B0042A59CAD29F43",
-- "2580F63CCFE44138870713B1A92369E33E2135D266DBB372386C400B",
-- "0D9029AD2C7E5CF4340823B2A87DC68C9E4CE3174C1E6EFDEE12C07D",
-- "58AA56F772C0726F24C6B89E4ECDAC24354B9E99CAA3F6D3761402CD",
-- "D7C134AA264366862A18302575D0FB98D116BC4B6DDEBCA3A5A7939F",
-- 1, nameSplitPattern);
--
-- add("brainpoolP256r1", "1.3.36.3.3.2.8.1.1.7", P,
-- "A9FB57DBA1EEA9BC3E660A909D838D726E3BF623D52620282013481D1F6E5377",
-- "7D5A0975FC2C3057EEF67530417AFFE7FB8055C126DC5C6CE94A4B44F330B5D9",
-- "26DC5C6CE94A4B44F330B5D9BBD77CBF958416295CF7E1CE6BCCDC18FF8C07B6",
-- "8BD2AEB9CB7E57CB2C4B482FFC81B7AFB9DE27E1E3BD23C23A4453BD9ACE3262",
-- "547EF835C3DAC4FD97F8461A14611DC9C27745132DED8E545C1D54C72F046997",
-- "A9FB57DBA1EEA9BC3E660A909D838D718C397AA3B561A6F7901E0E82974856A7",
-- 1, nameSplitPattern);
--
-- add("brainpoolP320r1", "1.3.36.3.3.2.8.1.1.9", P,
-- "D35E472036BC4FB7E13C785ED201E065F98FCFA6F6F40DEF4F92B9EC7893EC28FCD412B1F1B32E27",
-- "3EE30B568FBAB0F883CCEBD46D3F3BB8A2A73513F5EB79DA66190EB085FFA9F492F375A97D860EB4",
-- "520883949DFDBC42D3AD198640688A6FE13F41349554B49ACC31DCCD884539816F5EB4AC8FB1F1A6",
-- "43BD7E9AFB53D8B85289BCC48EE5BFE6F20137D10A087EB6E7871E2A10A599C710AF8D0D39E20611",
-- "14FDD05545EC1CC8AB4093247F77275E0743FFED117182EAA9C77877AAAC6AC7D35245D1692E8EE1",
-- "D35E472036BC4FB7E13C785ED201E065F98FCFA5B68F12A32D482EC7EE8658E98691555B44C59311",
-- 1, nameSplitPattern);
--
-- add("brainpoolP384r1", "1.3.36.3.3.2.8.1.1.11", P,
-- "8CB91E82A3386D280F5D6F7E50E641DF152F7109ED5456B412B1DA197FB71123ACD3A729901D1A71874700133107EC53",
-- "7BC382C63D8C150C3C72080ACE05AFA0C2BEA28E4FB22787139165EFBA91F90F8AA5814A503AD4EB04A8C7DD22CE2826",
-- "04A8C7DD22CE28268B39B55416F0447C2FB77DE107DCD2A62E880EA53EEB62D57CB4390295DBC9943AB78696FA504C11",
-- "1D1C64F068CF45FFA2A63A81B7C13F6B8847A3E77EF14FE3DB7FCAFE0CBD10E8E826E03436D646AAEF87B2E247D4AF1E",
-- "8ABE1D7520F9C2A45CB1EB8E95CFD55262B70B29FEEC5864E19C054FF99129280E4646217791811142820341263C5315",
-- "8CB91E82A3386D280F5D6F7E50E641DF152F7109ED5456B31F166E6CAC0425A7CF3AB6AF6B7FC3103B883202E9046565",
-- 1, nameSplitPattern);
--
-- add("brainpoolP512r1", "1.3.36.3.3.2.8.1.1.13", P,
-- "AADD9DB8DBE9C48B3FD4E6AE33C9FC07CB308DB3B3C9D20ED6639CCA703308717D4D9B009BC66842AECDA12AE6A380E62881FF2F2D82C68528AA6056583A48F3",
-- "7830A3318B603B89E2327145AC234CC594CBDD8D3DF91610A83441CAEA9863BC2DED5D5AA8253AA10A2EF1C98B9AC8B57F1117A72BF2C7B9E7C1AC4D77FC94CA",
-- "3DF91610A83441CAEA9863BC2DED5D5AA8253AA10A2EF1C98B9AC8B57F1117A72BF2C7B9E7C1AC4D77FC94CADC083E67984050B75EBAE5DD2809BD638016F723",
-- "81AEE4BDD82ED9645A21322E9C4C6A9385ED9F70B5D916C1B43B62EEF4D0098EFF3B1F78E2D0D48D50D1687B93B97D5F7C6D5047406A5E688B352209BCB9F822",
-- "7DDE385D566332ECC0EABFA9CF7822FDF209F70024A57B1AA000C55B881F8111B2DCDE494A5F485E5BCA4BD88A2763AED1CA2B2FA8F0540678CD1E0F3AD80892",
-- "AADD9DB8DBE9C48B3FD4E6AE33C9FC07CB308DB3B3C9D20ED6639CCA70330870553E5C414CA92619418661197FAC10471DB1D381085DDADDB58796829CA90069",
-- 1, nameSplitPattern);
--
- specCollection = Collections.unmodifiableCollection(oidMap.values());
- }
- }
-diff --git a/test/jdk/sun/security/ec/TestEC.java b/test/jdk/sun/security/ec/TestEC.java
---- openjdk/test/jdk/sun/security/ec/TestEC.java
-+++ openjdk/test/jdk/sun/security/ec/TestEC.java
-@@ -35,8 +35,8 @@
- * @library ../pkcs11/sslecc
- * @library ../../../java/security/testlibrary
- * @modules jdk.crypto.cryptoki/sun.security.pkcs11.wrapper
-- * @run main/othervm -Djdk.tls.namedGroups="secp256r1,sect193r1" TestEC
-- * @run main/othervm/java.security.policy=TestEC.policy -Djdk.tls.namedGroups="secp256r1,sect193r1" TestEC
-+ * @run main/othervm -Djdk.tls.namedGroups="secp256r1" TestEC
-+ * @run main/othervm/java.security.policy=TestEC.policy -Djdk.tls.namedGroups="secp256r1" TestEC
- */
-
- import java.security.NoSuchProviderException;
-diff -r bd66ea2fdde3 test/jdk/sun/security/pkcs11/sslecc/ClientJSSEServerJSSE.java
---- openjdk/test/jdk/sun/security/pkcs11/sslecc/ClientJSSEServerJSSE.java Thu Jul 27 18:04:48 2017 +0000
-+++ openjdk/test/jdk/sun/security/pkcs11/sslecc/ClientJSSEServerJSSE.java Fri Oct 06 13:18:47 2017 +0200
-@@ -34,9 +34,9 @@
- * @library ..
- * @library ../../../../java/security/testlibrary
- * @modules jdk.crypto.cryptoki
-- * @run main/othervm -Djdk.tls.namedGroups="secp256r1,sect193r1"
-+ * @run main/othervm -Djdk.tls.namedGroups="secp256r1"
- * ClientJSSEServerJSSE
-- * @run main/othervm -Djdk.tls.namedGroups="secp256r1,sect193r1"
-+ * @run main/othervm -Djdk.tls.namedGroups="secp256r1"
- * ClientJSSEServerJSSE sm policy
- */
diff --git a/pr3183-rh1340845-support_fedora_rhel_system_crypto_policy.patch b/pr3183-rh1340845-support_fedora_rhel_system_crypto_policy.patch
deleted file mode 100644
index 4efbe9a..0000000
--- a/pr3183-rh1340845-support_fedora_rhel_system_crypto_policy.patch
+++ /dev/null
@@ -1,88 +0,0 @@
-
-# HG changeset patch
-# User andrew
-# Date 1478057514 0
-# Node ID 1c4d5cb2096ae55106111da200b0bcad304f650c
-# Parent 3d53f19b48384e5252f4ec8891f7a3a82d77af2a
-PR3183: Support Fedora/RHEL system crypto policy
-diff -r 3d53f19b4838 -r 1c4d5cb2096a src/java.base/share/classes/java/security/Security.java
---- a/src/java.base/share/classes/java/security/Security.java Wed Oct 26 03:51:39 2016 +0100
-+++ b/src/java.base/share/classes/java/security/Security.java Wed Nov 02 03:31:54 2016 +0000
-@@ -43,6 +43,9 @@
- * implementation-specific location, which is typically the properties file
- * {@code conf/security/java.security} in the Java installation directory.
- *
-+ * <p>Additional default values of security properties are read from a
-+ * system-specific location, if available.</p>
-+ *
- * @author Benjamin Renaud
- * @since 1.1
- */
-@@ -52,6 +55,10 @@
- private static final Debug sdebug =
- Debug.getInstance("properties");
-
-+ /* System property file*/
-+ private static final String SYSTEM_PROPERTIES =
-+ "/etc/crypto-policies/back-ends/java.config";
-+
- /* The java.security properties */
- private static Properties props;
-
-@@ -93,6 +100,7 @@
- if (sdebug != null) {
- sdebug.println("reading security properties file: " +
- propFile);
-+ sdebug.println(props.toString());
- }
- } catch (IOException e) {
- if (sdebug != null) {
-@@ -114,6 +122,31 @@
- }
-
- if ("true".equalsIgnoreCase(props.getProperty
-+ ("security.useSystemPropertiesFile"))) {
-+
-+ // now load the system file, if it exists, so its values
-+ // will win if they conflict with the earlier values
-+ try (BufferedInputStream bis =
-+ new BufferedInputStream(new FileInputStream(SYSTEM_PROPERTIES))) {
-+ props.load(bis);
-+ loadedProps = true;
-+
-+ if (sdebug != null) {
-+ sdebug.println("reading system security properties file " +
-+ SYSTEM_PROPERTIES);
-+ sdebug.println(props.toString());
-+ }
-+ } catch (IOException e) {
-+ if (sdebug != null) {
-+ sdebug.println
-+ ("unable to load security properties from " +
-+ SYSTEM_PROPERTIES);
-+ e.printStackTrace();
-+ }
-+ }
-+ }
-+
-+ if ("true".equalsIgnoreCase(props.getProperty
- ("security.overridePropertiesFile"))) {
-
- String extraPropFile = System.getProperty
-diff -r 3d53f19b4838 -r 1c4d5cb2096a src/java.base/share/conf/security/java.security
---- a/src/java.base/share/conf/security/java.security Wed Oct 26 03:51:39 2016 +0100
-+++ b/src/java.base/share/conf/security/java.security Wed Nov 02 03:31:54 2016 +0000
-@@ -276,6 +276,13 @@
- security.overridePropertiesFile=true
-
- #
-+# Determines whether this properties file will be appended to
-+# using the system properties file stored at
-+# /etc/crypto-policies/back-ends/java.config
-+#
-+security.useSystemPropertiesFile=true
-+
-+#
- # Determines the default key and trust manager factory algorithms for
- # the javax.net.ssl package.
- #
diff --git a/remove-intree-libraries.sh b/remove-intree-libraries.sh
deleted file mode 100644
index 635da8a..0000000
--- a/remove-intree-libraries.sh
+++ /dev/null
@@ -1,129 +0,0 @@
-#!/bin/sh
-
-ZIP_SRC=src/java.base/share/native/libzip/zlib/
-JPEG_SRC=src/java.desktop/share/native/libjavajpeg/
-GIF_SRC=src/java.desktop/share/native/libsplashscreen/giflib/
-PNG_SRC=src/java.desktop/share/native/libsplashscreen/libpng/
-LCMS_SRC=src/java.desktop/share/native/liblcms/
-
-cd openjdk
-
-echo "Removing built-in libs (they will be linked)"
-
-echo "Removing zlib"
-if [ ! -d ${ZIP_SRC} ]; then
- echo "${ZIP_SRC} does not exist. Refusing to proceed."
- exit 1
-fi
-rm -rvf ${ZIP_SRC}
-
-echo "Removing libjpeg"
-if [ ! -f ${JPEG_SRC}/jdhuff.c ]; then # some file that sound definitely exist
- echo "${JPEG_SRC} does not contain jpeg sources. Refusing to proceed."
- exit 1
-fi
-
-rm -vf ${JPEG_SRC}/jcomapi.c
-rm -vf ${JPEG_SRC}/jdapimin.c
-rm -vf ${JPEG_SRC}/jdapistd.c
-rm -vf ${JPEG_SRC}/jdcoefct.c
-rm -vf ${JPEG_SRC}/jdcolor.c
-rm -vf ${JPEG_SRC}/jdct.h
-rm -vf ${JPEG_SRC}/jddctmgr.c
-rm -vf ${JPEG_SRC}/jdhuff.c
-rm -vf ${JPEG_SRC}/jdhuff.h
-rm -vf ${JPEG_SRC}/jdinput.c
-rm -vf ${JPEG_SRC}/jdmainct.c
-rm -vf ${JPEG_SRC}/jdmarker.c
-rm -vf ${JPEG_SRC}/jdmaster.c
-rm -vf ${JPEG_SRC}/jdmerge.c
-rm -vf ${JPEG_SRC}/jdphuff.c
-rm -vf ${JPEG_SRC}/jdpostct.c
-rm -vf ${JPEG_SRC}/jdsample.c
-rm -vf ${JPEG_SRC}/jerror.c
-rm -vf ${JPEG_SRC}/jerror.h
-rm -vf ${JPEG_SRC}/jidctflt.c
-rm -vf ${JPEG_SRC}/jidctfst.c
-rm -vf ${JPEG_SRC}/jidctint.c
-rm -vf ${JPEG_SRC}/jidctred.c
-rm -vf ${JPEG_SRC}/jinclude.h
-rm -vf ${JPEG_SRC}/jmemmgr.c
-rm -vf ${JPEG_SRC}/jmemsys.h
-rm -vf ${JPEG_SRC}/jmemnobs.c
-rm -vf ${JPEG_SRC}/jmorecfg.h
-rm -vf ${JPEG_SRC}/jpegint.h
-rm -vf ${JPEG_SRC}/jpeglib.h
-rm -vf ${JPEG_SRC}/jquant1.c
-rm -vf ${JPEG_SRC}/jquant2.c
-rm -vf ${JPEG_SRC}/jutils.c
-rm -vf ${JPEG_SRC}/jcapimin.c
-rm -vf ${JPEG_SRC}/jcapistd.c
-rm -vf ${JPEG_SRC}/jccoefct.c
-rm -vf ${JPEG_SRC}/jccolor.c
-rm -vf ${JPEG_SRC}/jcdctmgr.c
-rm -vf ${JPEG_SRC}/jchuff.c
-rm -vf ${JPEG_SRC}/jchuff.h
-rm -vf ${JPEG_SRC}/jcinit.c
-rm -vf ${JPEG_SRC}/jconfig.h
-rm -vf ${JPEG_SRC}/jcmainct.c
-rm -vf ${JPEG_SRC}/jcmarker.c
-rm -vf ${JPEG_SRC}/jcmaster.c
-rm -vf ${JPEG_SRC}/jcparam.c
-rm -vf ${JPEG_SRC}/jcphuff.c
-rm -vf ${JPEG_SRC}/jcprepct.c
-rm -vf ${JPEG_SRC}/jcsample.c
-rm -vf ${JPEG_SRC}/jctrans.c
-rm -vf ${JPEG_SRC}/jdtrans.c
-rm -vf ${JPEG_SRC}/jfdctflt.c
-rm -vf ${JPEG_SRC}/jfdctfst.c
-rm -vf ${JPEG_SRC}/jfdctint.c
-rm -vf ${JPEG_SRC}/jversion.h
-rm -vf ${JPEG_SRC}/README
-
-echo "Removing giflib"
-if [ ! -d ${GIF_SRC} ]; then
- echo "${GIF_SRC} does not exist. Refusing to proceed."
- exit 1
-fi
-rm -rvf ${GIF_SRC}
-
-echo "Removing libpng"
-if [ ! -d ${PNG_SRC} ]; then
- echo "${PNG_SRC} does not exist. Refusing to proceed."
- exit 1
-fi
-rm -rvf ${PNG_SRC}
-
-echo "Removing lcms"
-if [ ! -d ${LCMS_SRC} ]; then
- echo "${LCMS_SRC} does not exist. Refusing to proceed."
- exit 1
-fi
-rm -vf ${LCMS_SRC}/cmscam02.c
-rm -vf ${LCMS_SRC}/cmscgats.c
-rm -vf ${LCMS_SRC}/cmscnvrt.c
-rm -vf ${LCMS_SRC}/cmserr.c
-rm -vf ${LCMS_SRC}/cmsgamma.c
-rm -vf ${LCMS_SRC}/cmsgmt.c
-rm -vf ${LCMS_SRC}/cmshalf.c
-rm -vf ${LCMS_SRC}/cmsintrp.c
-rm -vf ${LCMS_SRC}/cmsio0.c
-rm -vf ${LCMS_SRC}/cmsio1.c
-rm -vf ${LCMS_SRC}/cmslut.c
-rm -vf ${LCMS_SRC}/cmsmd5.c
-rm -vf ${LCMS_SRC}/cmsmtrx.c
-rm -vf ${LCMS_SRC}/cmsnamed.c
-rm -vf ${LCMS_SRC}/cmsopt.c
-rm -vf ${LCMS_SRC}/cmspack.c
-rm -vf ${LCMS_SRC}/cmspcs.c
-rm -vf ${LCMS_SRC}/cmsplugin.c
-rm -vf ${LCMS_SRC}/cmsps2.c
-rm -vf ${LCMS_SRC}/cmssamp.c
-rm -vf ${LCMS_SRC}/cmssm.c
-rm -vf ${LCMS_SRC}/cmstypes.c
-rm -vf ${LCMS_SRC}/cmsvirt.c
-rm -vf ${LCMS_SRC}/cmswtpnt.c
-rm -vf ${LCMS_SRC}/cmsxform.c
-rm -vf ${LCMS_SRC}/lcms2.h
-rm -vf ${LCMS_SRC}/lcms2_internal.h
-rm -vf ${LCMS_SRC}/lcms2_plugin.h
diff --git a/rh1648242-accessible_toolkit_crash_do_not_break_jvm.patch b/rh1648242-accessible_toolkit_crash_do_not_break_jvm.patch
deleted file mode 100644
index a877506..0000000
--- a/rh1648242-accessible_toolkit_crash_do_not_break_jvm.patch
+++ /dev/null
@@ -1,18 +0,0 @@
-diff -uNr openjdk/src/java.desktop/share/classes/java/awt/Toolkit.java jdk8/jdk/src/java.desktop/share/classes/java/awt/Toolkit.java
---- openjdk/src/java.desktop/share/classes/java/awt/Toolkit.java
-+++ openjdk/src/java.desktop/share/classes/java/awt/Toolkit.java
-@@ -883,9 +883,13 @@
- return null;
- }
- });
- if (!GraphicsEnvironment.isHeadless()) {
-- loadAssistiveTechnologies();
-+ try {
-+ loadAssistiveTechnologies();
-+ } catch (AWTError error) {
-+ // ignore silently
-+ }
- }
- }
- return toolkit;
- }
diff --git a/rh1648249-add_commented_out_nss_cfg_provider_to_java_security.patch b/rh1648249-add_commented_out_nss_cfg_provider_to_java_security.patch
deleted file mode 100644
index 1b92ddc..0000000
--- a/rh1648249-add_commented_out_nss_cfg_provider_to_java_security.patch
+++ /dev/null
@@ -1,11 +0,0 @@
-diff -r 5b86f66575b7 src/share/lib/security/java.security-linux
---- openjdk/src/java.base/share/conf/security/java.security Tue May 16 13:29:05 2017 -0700
-+++ openjdk/src/java.base/share/conf/security/java.security Tue Jun 06 14:05:12 2017 +0200
-@@ -83,6 +83,7 @@
- #ifndef solaris
- security.provider.tbd=SunPKCS11
- #endif
-+#security.provider.tbd=SunPKCS11 ${java.home}/lib/security/nss.cfg
-
- #
- # A list of preferred providers for specific algorithms. These providers will
diff --git a/rh1648644-java_access_bridge_privileged_security.patch b/rh1648644-java_access_bridge_privileged_security.patch
deleted file mode 100644
index 53026ad..0000000
--- a/rh1648644-java_access_bridge_privileged_security.patch
+++ /dev/null
@@ -1,20 +0,0 @@
---- openjdk/src/java.base/share/conf/security/java.security
-+++ openjdk/src/java.base/share/conf/security/java.security
-@@ -304,6 +304,8 @@
- #
- package.access=sun.misc.,\
- sun.reflect.,\
-+ org.GNOME.Accessibility.,\
-+ org.GNOME.Bonobo.,\
-
- #
- # List of comma-separated packages that start with or equal this string
-@@ -316,6 +318,8 @@
- #
- package.definition=sun.misc.,\
- sun.reflect.,\
-+ org.GNOME.Accessibility.,\
-+ org.GNOME.Bonobo.,\
-
- #
- # Determines whether this properties file can be appended to
diff --git a/rh1684077-openjdk_should_depend_on_pcsc-lite-libs_instead_of_pcsc-lite-devel.patch b/rh1684077-openjdk_should_depend_on_pcsc-lite-libs_instead_of_pcsc-lite-devel.patch
deleted file mode 100644
index 5e2b254..0000000
--- a/rh1684077-openjdk_should_depend_on_pcsc-lite-libs_instead_of_pcsc-lite-devel.patch
+++ /dev/null
@@ -1,13 +0,0 @@
---- openjdk/src/java.smartcardio/unix/classes/sun/security/smartcardio/PlatformPCSC.java 2013-03-01 10:48:12.038189968 +0100
-+++ openjdk/src/java.smartcardio/unix/classes/sun/security/smartcardio/PlatformPCSC.java 2013-03-01 10:48:11.913188505 +0100
-@@ -48,8 +48,8 @@
-
- private final static String PROP_NAME = "sun.security.smartcardio.library";
-
-- private final static String LIB1 = "/usr/$LIBISA/libpcsclite.so";
-- private final static String LIB2 = "/usr/local/$LIBISA/libpcsclite.so";
-+ private final static String LIB1 = "/usr/$LIBISA/libpcsclite.so.1";
-+ private final static String LIB2 = "/usr/local/$LIBISA/libpcsclite.so.1";
- private final static String PCSC_FRAMEWORK = "/System/Library/Frameworks/PCSC.framework/Versions/Current/PCSC";
-
- PlatformPCSC() {
diff --git a/rh649512-remove_uses_of_far_in_jpeg_libjpeg_turbo_1_4_compat_for_jdk10_and_up.patch b/rh649512-remove_uses_of_far_in_jpeg_libjpeg_turbo_1_4_compat_for_jdk10_and_up.patch
deleted file mode 100644
index 1b706a1..0000000
--- a/rh649512-remove_uses_of_far_in_jpeg_libjpeg_turbo_1_4_compat_for_jdk10_and_up.patch
+++ /dev/null
@@ -1,19 +0,0 @@
-Remove uses of FAR in jpeg code
-
-Upstream libjpeg-trubo removed the (empty) FAR macro:
-http://sourceforge.net/p/libjpeg-turbo/code/1312/
-
-Adjust our code to not use the undefined FAR macro anymore.
-
-diff --git a/jdk/src/java.desktop/share/native/libjavajpeg/imageioJPEG.c b/jdk/src/java.desktop/share/native/libjavajpeg/imageioJPEG.c
---- openjdk/src/java.desktop/share/native/libjavajpeg/imageioJPEG.c
-+++ openjdk/src/java.desktop/share/native/libjavajpeg/imageioJPEG.c
-@@ -1385,7 +1385,7 @@
- /* and fill it in */
- dst_ptr = icc_data;
- for (seq_no = first; seq_no < last; seq_no++) {
-- JOCTET FAR *src_ptr = icc_markers[seq_no]->data + ICC_OVERHEAD_LEN;
-+ JOCTET *src_ptr = icc_markers[seq_no]->data + ICC_OVERHEAD_LEN;
- unsigned int length =
- icc_markers[seq_no]->data_length - ICC_OVERHEAD_LEN;
-
diff --git a/sources b/sources
index 635ac8b..e69de29 100644
--- a/sources
+++ b/sources
@@ -1,2 +0,0 @@
-SHA512 (systemtap_3.2_tapsets_hg-icedtea8-9d464368e06d.tar.xz) = cf578221b77d8c7e019f69909bc86c419c5fb5e10bceba9592ff6e7f96887b0a7f07c9cefe90800975247a078785ca190fdec5c2d0f841bb447cee784b570f7d
-SHA512 (jdk-jdk12-jdk-12+33.tar.xz) = e2dea9585fe07ae87fb313d090e9850a547e2ba84a7447d42acd0a04874599ef240f7b6ccaa69955cab5d12f646711cb4467e1b24e090af476e9ff708cc168fe
diff --git a/update_package.sh b/update_package.sh
deleted file mode 100644
index 51cb6de..0000000
--- a/update_package.sh
+++ /dev/null
@@ -1,70 +0,0 @@
-#!/bin/bash -x
-# this file contains defaults for currently generated source tarballs
-
-set -e
-
-# TAPSET
-export PROJECT_NAME="hg"
-export REPO_NAME="icedtea8"
-export VERSION="9d464368e06d"
-export COMPRESSION=xz
-export OPENJDK_URL=http://icedtea.classpath.org
-export FILE_NAME_ROOT=${PROJECT_NAME}-${REPO_NAME}-${VERSION}
-export TO_COMPRESS="*/tapset"
-# warning, filename and filenameroot creation is duplicated here from generate_source_tarball.sh
-CLONED_FILENAME=${FILE_NAME_ROOT}.tar.${COMPRESSION}
-TAPSET_VERSION=3.2
-TAPSET=systemtap_"$TAPSET_VERSION"_tapsets_$CLONED_FILENAME
-if [ ! -f ${TAPSET} ] ; then
- if [ ! -f ${CLONED_FILENAME} ] ; then
- echo "Generating ${CLONED_FILENAME}"
- sh ./generate_source_tarball.sh
- else
- echo "exists exists exists exists exists exists exists "
- echo "reusing reusing reusing reusing reusing reusing "
- echo ${CLONED_FILENAME}
- fi
- mv -v $CLONED_FILENAME $TAPSET
-else
- echo "exists exists exists exists exists exists exists "
- echo "reusing reusing reusing reusing reusing reusing "
- echo ${TAPSET}
-fi
-
-# OpenJDK from Shenandoah project
-export PROJECT_NAME="jdk"
-export REPO_NAME="jdk12"
-# warning, clonning without shenadnaoh suffix, you will clone pure jdk - thus without shenandaoh GC
-export VERSION="jdk-12+25"
-export COMPRESSION=xz
-# unset tapsets overrides
-export OPENJDK_URL=""
-export TO_COMPRESS=""
-# warning, filename and filenameroot creation is duplicated here from generate_source_tarball.sh
-export FILE_NAME_ROOT=${PROJECT_NAME}-${REPO_NAME}-${VERSION}
-FILENAME=${FILE_NAME_ROOT}.tar.${COMPRESSION}
-
-if [ ! -f ${FILENAME} ] ; then
-echo "Generating ${FILENAME}"
- sh ./generate_source_tarball.sh
-else
- echo "exists exists exists exists exists exists exists "
- echo "reusing reusing reusing reusing reusing reusing "
- echo ${FILENAME}
-fi
-
-set +e
-
-major=`echo $REPO_NAME | sed 's/[a-zA-Z]*//g'`
-build=`echo $VERSION | sed 's/.*+//g'`
-name_helper=`echo $FILENAME | sed s/$major/'%{majorver}'/g `
-name_helper=`echo $name_helper | sed s/$build/'%{buildver}'/g `
-echo "align specfile acordingly:"
-echo " sed 's/^Source0:.*/Source0: $name_helper/' -i *.spec"
-echo " sed 's/^Source8:.*/Source8: $TAPSET/' -i *.spec"
-echo " sed 's/^%global buildver.*/%global buildver $build/' -i *.spec"
-echo " sed 's/Release:.*/Release: 1%{?dist}/' -i *.spec"
-echo "and maybe others...."
-echo "you should fedpkg/rhpkg new-sources $TAPSET $FILENAME"
-echo "you should fedpkg/rhpkg prep --arch XXXX on all architectures: x86_64 i386 i586 i686 ppc ppc64 ppc64le s390 s390x aarch64 armv7hl"
-
5 years, 1 month
Architecture specific change in rpms/mozilla-iot-gateway.git
by githook-noreply@fedoraproject.org
The package rpms/mozilla-iot-gateway.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/mozilla-iot-gateway.git/commit/?i....
Change:
+ExclusiveArch: %{nodejs_arches} noarch
Thanks.
Full change:
============
commit 98c0d0ea47fafd44d15d127e19bc3fe648360984
Author: Troy Dawson <tdawson(a)redhat.com>
Date: Tue Apr 23 07:27:31 2019 -0700
Initial import (#1673125).
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..f17197a
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1 @@
+/gateway-v0.7.0.tar.gz
diff --git a/gateway-tarball.sh b/gateway-tarball.sh
new file mode 100644
index 0000000..df4b641
--- /dev/null
+++ b/gateway-tarball.sh
@@ -0,0 +1,34 @@
+#!/bin/sh
+# Setup for this script:
+# dnf install nodejs-yarn $(cat gateway-unbundle.list | while read line; do echo "nodejs-$line"; done)
+#
+#version=$(rpm -q --specfile --qf='%{version}\n' gateway.spec | head -n1)
+version=0.7.0
+## Download gateway
+wget https://github.com/mozilla-iot/gateway/archive/v$version.tar.gz
+tar zxf v$version.tar.gz
+cd gateway-$version
+## Download npm libraries
+yarnpkg --ignore-optional
+## Clean out binary modules (and deps) and link to rpm packages
+echo "Removing modules that we already have as packages "
+for module in $(cat ../gateway-unbundle.list)
+do
+ echo -n "."
+ rm -rf node_modules/$module
+ ln -s /usr/lib/node_modules/$module node_modules/
+ for line in $(find . -type d -name $module | grep node_modules/$module$)
+ do
+ if ! [ -L $line ] ; then
+ echo -n "$(echo $line | tr -cd '/' | wc -c)"
+ rm -rf $line
+ ln -s /usr/lib/node_modules/$module $line
+ fi
+ done
+done
+echo
+echo "Starting Webpack"
+PATH="/usr/lib/node_modules/npm/node_modules/npm-lifecycle/node-gyp-bin:$PWD/node_modules/.bin:/usr/lib/node_modules/.bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin"
+webpack
+cd ..
+tar cfz gateway-v$version.tar.gz gateway-$version
diff --git a/gateway-unbundle.list b/gateway-unbundle.list
new file mode 100644
index 0000000..a09c9ae
--- /dev/null
+++ b/gateway-unbundle.list
@@ -0,0 +1,4 @@
+bindings
+nan
+nanomsg
+sqlite3
diff --git a/mozilla-iot-gateway.service b/mozilla-iot-gateway.service
new file mode 100644
index 0000000..8827dfc
--- /dev/null
+++ b/mozilla-iot-gateway.service
@@ -0,0 +1,21 @@
+[Unit]
+Description=Mozilla IoT Gateway Client
+After=network.target
+OnFailure=mozilla-iot-gateway.update-rollback.service
+
+[Service]
+Type=simple
+StandardOutput=journal
+StandardError=journal
+# Edit this line, if needed, to specify what user to run Vaani as
+# If you delete this line, it will run as root
+User=moz-iot-gateway
+# Edit this line, if needed, to specify where you installed the server
+WorkingDirectory=/usr/lib/node_modules/gateway
+# Edit this line, if needed, to set the correct path to node
+ExecStart=node build/gateway.js
+Restart=always
+RestartSec=10s
+
+[Install]
+WantedBy=multi-user.target
diff --git a/mozilla-iot-gateway.spec b/mozilla-iot-gateway.spec
new file mode 100644
index 0000000..89f7971
--- /dev/null
+++ b/mozilla-iot-gateway.spec
@@ -0,0 +1,1374 @@
+%global npm_name gateway
+%global debug_package %{nil}
+%{?nodejs_find_provides_and_requires}
+
+# don't require bundled modules
+%global __requires_exclude_from ^%{_prefix}/lib/node_modules/gateway/.*$
+
+Name: mozilla-iot-gateway
+Version: 0.7.0
+Release: 2%{?dist}
+Summary: Mozilla's Web of Things gateway
+License: MPLv2.0 and ASL 2.0 AND BSD AND (BSD OR AFL 2.1) AND (BSD OR ASL 2.0 OR MIT) AND (BSD OR GPLv2) AND (BSD OR MIT) AND CC-BY 4.0 AND MPLv2.0 AND MIT AND Public Domain AND ISC AND LGPLv2.1+ AND (MIT AND BSD) AND (MIT AND CC-BY 3.0) AND (MIT AND zlib) AND (MIT OR ASL 2.0) AND (MIT OR GPLv2) AND (MIT OR GPLv3) AND Unlicense AND WTFPL AND (WTFPL OR MIT)
+URL: https://github.com/mozilla-iot/gateway
+# Source was generated by running gateway-tarball.sh,
+# with gateway-unbundle.list in the same directory.
+# This downloads the release tarball from the github repo,
+# bundles all the nodejs libraries, then unbundles the binary
+# libraries (listed in gateway-unbundle.list).
+Source0: %{npm_name}-v%{version}.tar.gz
+Source1: gateway-tarball.sh
+Source2: gateway-unbundle.list
+Source3: mozilla-iot-gateway.service
+ExclusiveArch: %{nodejs_arches} noarch
+BuildArch: noarch
+BuildRequires: nodejs-packaging
+%if 0%{?fedora} >= 30
+BuildRequires: systemd-rpm-macros
+%else
+BuildRequires: systemd
+%endif
+## Normal requires
+Requires(pre): shadow-utils
+%{?systemd_requires}
+## Requires for live-building Add-Ons
+Requires: gcc
+Requires: python3-devel
+## All the unbundled node modules - Required
+Requires: npm(bindings)
+Requires: npm(nan)
+Requires: npm(nanomsg)
+Requires: npm(sqlite3)
+## All the bundled node modules - Provides: bundled
+Provides: bundled(abab) = 2.0.0
+Provides: bundled(abbrev) = 1.1.1
+Provides: bundled(accepts) = 1.3.5
+Provides: bundled(acme) = 1.0.12
+Provides: bundled(acme-v2) = 1.0.7
+Provides: bundled(acme-v2) = 1.0.8
+Provides: bundled(acorn) = 5.7.1
+Provides: bundled(acorn) = 5.7.3
+Provides: bundled(acorn) = 6.0.2
+Provides: bundled(acorn) = 6.0.4
+Provides: bundled(acorn-dynamic-import) = 3.0.0
+Provides: bundled(acorn-globals) = 4.3.0
+Provides: bundled(acorn-jsx) = 5.0.0
+Provides: bundled(acorn-walk) = 6.1.0
+Provides: bundled(agent-base) = 4.2.1
+Provides: bundled(ajv) = 5.3.0
+Provides: bundled(ajv) = 5.5.2
+Provides: bundled(ajv) = 6.4.0
+Provides: bundled(ajv) = 6.5.1
+Provides: bundled(ajv) = 6.5.4
+Provides: bundled(ajv) = 6.6.2
+Provides: bundled(ajv-errors) = 1.0.0
+Provides: bundled(ajv-keywords) = 3.2.0
+Provides: bundled(amdefine) = 1.0.1
+Provides: bundled(ansi-escapes) = 3.0.0
+Provides: bundled(ansi-regex) = 2.1.1
+Provides: bundled(ansi-regex) = 3.0.0
+Provides: bundled(ansi-styles) = 2.2.1
+Provides: bundled(ansi-styles) = 3.2.0
+Provides: bundled(ansi-styles) = 3.2.1
+Provides: bundled(anymatch) = 1.3.0
+Provides: bundled(anymatch) = 2.0.0
+Provides: bundled(any-promise) = 1.3.0
+Provides: bundled(append-transform) = 0.4.0
+Provides: bundled(aproba) = 1.2.0
+Provides: bundled(archiver) = 2.1.1
+Provides: bundled(archiver) = 3.0.0
+Provides: bundled(archiver-utils) = 1.3.0
+Provides: bundled(archiver-utils) = 2.0.0
+Provides: bundled(are-we-there-yet) = 1.1.5
+Provides: bundled(argparse) = 1.0.9
+Provides: bundled(argv) = 0.0.2
+Provides: bundled(array-equal) = 1.0.0
+Provides: bundled(array-filter) = 0.0.1
+Provides: bundled(array-flatten) = 1.1.1
+Provides: bundled(array-from) = 2.1.1
+Provides: bundled(array-map) = 0.0.0
+Provides: bundled(array-reduce) = 0.0.0
+Provides: bundled(array-union) = 1.0.2
+Provides: bundled(array-uniq) = 1.0.3
+Provides: bundled(array-unique) = 0.2.1
+Provides: bundled(array-unique) = 0.3.2
+Provides: bundled(arr-diff) = 2.0.0
+Provides: bundled(arr-diff) = 4.0.0
+Provides: bundled(arr-flatten) = 1.0.3
+Provides: bundled(arr-flatten) = 1.1.0
+Provides: bundled(arrify) = 1.0.1
+Provides: bundled(arr-union) = 3.1.0
+Provides: bundled(asap) = 2.0.6
+Provides: bundled(asn1) = 0.2.3
+Provides: bundled(asn1js) = 1.2.12
+Provides: bundled(asn1.js) = 4.10.1
+Provides: bundled(asn1.js) = 5.0.1
+Provides: bundled(assert) = 1.4.1
+Provides: bundled(assertion-error) = 1.0.2
+Provides: bundled(assertion-error) = 1.1.0
+Provides: bundled(assert-plus) = 1.0.0
+Provides: bundled(assign-symbols) = 1.0.0
+Provides: bundled(astral-regex) = 1.0.0
+Provides: bundled(ast-types) = 0.9.6
+Provides: bundled(async) = 1.5.2
+Provides: bundled(async) = 2.5.0
+Provides: bundled(async) = 2.6.0
+Provides: bundled(async) = 2.6.1
+Provides: bundled(async-each) = 1.0.1
+Provides: bundled(asynckit) = 0.4.0
+Provides: bundled(async-limiter) = 1.0.0
+Provides: bundled(atob) = 1.1.3
+Provides: bundled(atob) = 2.1.1
+Provides: bundled(awesome-typescript-loader) = 5.2.1
+Provides: bundled(aws4) = 1.6.0
+Provides: bundled(aws4) = 1.8.0
+Provides: bundled(aws-sign2) = 0.7.0
+Provides: bundled(babel-code-frame) = 6.22.0
+Provides: bundled(babel-code-frame) = 6.26.0
+Provides: bundled(babel-core) = 6.25.0
+Provides: bundled(babel-eslint) = 10.0.1
+Provides: bundled(babel-generator) = 6.25.0
+Provides: bundled(@babel/generator) = 7.1.3
+Provides: bundled(babel-helper-builder-binary-assignment-operator-visitor) = 6.24.1
+Provides: bundled(babel-helper-call-delegate) = 6.24.1
+Provides: bundled(babel-helper-define-map) = 6.26.0
+Provides: bundled(babel-helper-explode-assignable-expression) = 6.24.1
+Provides: bundled(babel-helper-function-name) = 6.24.1
+Provides: bundled(@babel/helper-function-name) = 7.1.0
+Provides: bundled(babel-helper-get-function-arity) = 6.24.1
+Provides: bundled(@babel/helper-get-function-arity) = 7.0.0
+Provides: bundled(babel-helper-hoist-variables) = 6.24.1
+Provides: bundled(babel-helper-optimise-call-expression) = 6.24.1
+Provides: bundled(babel-helper-regex) = 6.26.0
+Provides: bundled(babel-helper-remap-async-to-generator) = 6.24.1
+Provides: bundled(babel-helper-replace-supers) = 6.24.1
+Provides: bundled(babel-helpers) = 6.24.1
+Provides: bundled(@babel/helper-split-export-declaration) = 7.0.0
+Provides: bundled(babel-jest) = 23.6.0
+Provides: bundled(babel-loader) = 8.0.0-beta.3
+Provides: bundled(babel-messages) = 6.23.0
+Provides: bundled(@babel/parser) = 7.1.3
+Provides: bundled(babel-plugin-check-es2015-constants) = 6.22.0
+Provides: bundled(babel-plugin-dynamic-import-node) = 1.2.0
+Provides: bundled(babel-plugin-istanbul) = 4.1.6
+Provides: bundled(babel-plugin-jest-hoist) = 23.2.0
+Provides: bundled(babel-plugin-syntax-async-functions) = 6.13.0
+Provides: bundled(babel-plugin-syntax-dynamic-import) = 6.18.0
+Provides: bundled(babel-plugin-syntax-exponentiation-operator) = 6.13.0
+Provides: bundled(babel-plugin-syntax-object-rest-spread) = 6.13.0
+Provides: bundled(babel-plugin-syntax-trailing-function-commas) = 6.22.0
+Provides: bundled(babel-plugin-transform-async-to-generator) = 6.24.1
+Provides: bundled(babel-plugin-transform-es2015-arrow-functions) = 6.22.0
+Provides: bundled(babel-plugin-transform-es2015-block-scoped-functions) = 6.22.0
+Provides: bundled(babel-plugin-transform-es2015-block-scoping) = 6.26.0
+Provides: bundled(babel-plugin-transform-es2015-classes) = 6.24.1
+Provides: bundled(babel-plugin-transform-es2015-computed-properties) = 6.24.1
+Provides: bundled(babel-plugin-transform-es2015-destructuring) = 6.23.0
+Provides: bundled(babel-plugin-transform-es2015-duplicate-keys) = 6.24.1
+Provides: bundled(babel-plugin-transform-es2015-for-of) = 6.23.0
+Provides: bundled(babel-plugin-transform-es2015-function-name) = 6.24.1
+Provides: bundled(babel-plugin-transform-es2015-literals) = 6.22.0
+Provides: bundled(babel-plugin-transform-es2015-modules-amd) = 6.24.1
+Provides: bundled(babel-plugin-transform-es2015-modules-commonjs) = 6.24.1
+Provides: bundled(babel-plugin-transform-es2015-modules-commonjs) = 6.26.2
+Provides: bundled(babel-plugin-transform-es2015-modules-systemjs) = 6.24.1
+Provides: bundled(babel-plugin-transform-es2015-modules-umd) = 6.24.1
+Provides: bundled(babel-plugin-transform-es2015-object-super) = 6.24.1
+Provides: bundled(babel-plugin-transform-es2015-parameters) = 6.24.1
+Provides: bundled(babel-plugin-transform-es2015-shorthand-properties) = 6.24.1
+Provides: bundled(babel-plugin-transform-es2015-spread) = 6.22.0
+Provides: bundled(babel-plugin-transform-es2015-sticky-regex) = 6.24.1
+Provides: bundled(babel-plugin-transform-es2015-template-literals) = 6.22.0
+Provides: bundled(babel-plugin-transform-es2015-typeof-symbol) = 6.23.0
+Provides: bundled(babel-plugin-transform-es2015-unicode-regex) = 6.24.1
+Provides: bundled(babel-plugin-transform-exponentiation-operator) = 6.24.1
+Provides: bundled(babel-plugin-transform-object-rest-spread) = 6.26.0
+Provides: bundled(babel-plugin-transform-regenerator) = 6.26.0
+Provides: bundled(babel-plugin-transform-strict-mode) = 6.24.1
+Provides: bundled(babel-preset-env) = 1.7.0
+Provides: bundled(babel-preset-jest) = 23.2.0
+Provides: bundled(babel-register) = 6.24.1
+Provides: bundled(babel-runtime) = 6.23.0
+Provides: bundled(babel-runtime) = 6.26.0
+Provides: bundled(babel-template) = 6.25.0
+Provides: bundled(babel-template) = 6.26.0
+Provides: bundled(@babel/template) = 7.1.2
+Provides: bundled(babel-traverse) = 6.25.0
+Provides: bundled(babel-traverse) = 6.26.0
+Provides: bundled(@babel/traverse) = 7.1.4
+Provides: bundled(babel-types) = 6.25.0
+Provides: bundled(babel-types) = 6.26.0
+Provides: bundled(@babel/types) = 7.1.3
+Provides: bundled(babylon) = 6.17.4
+Provides: bundled(babylon) = 6.18.0
+Provides: bundled(balanced-match) = 1.0.0
+Provides: bundled(base) = 0.11.2
+Provides: bundled(base64-js) = 1.3.0
+Provides: bundled(bcryptjs) = 2.4.3
+Provides: bundled(private) = 0.1.7
+Provides: bundled(private) = 0.1.8
+Provides: bundled(big.js) = 3.2.0
+Provides: bundled(binary-extensions) = 1.11.0
+Provides: bundled(bl) = 1.2.1
+Provides: bundled(bluebird) = 3.5.1
+Provides: bundled(bn.js) = 4.11.8
+Provides: bundled(body-parser) = 1.18.3
+Provides: bundled(boolbase) = 1.0.0
+Provides: bundled(boom) = 4.3.1
+Provides: bundled(boom) = 5.2.0
+Provides: bundled(boom) = 7.2.0
+Provides: bundled(brace-expansion) = 1.1.11
+Provides: bundled(braces) = 1.8.5
+Provides: bundled(braces) = 2.3.2
+Provides: bundled(brorand) = 1.1.0
+Provides: bundled(browserify-aes) = 1.2.0
+Provides: bundled(browserify-cipher) = 1.0.1
+Provides: bundled(browserify-des) = 1.0.1
+Provides: bundled(browserify-rsa) = 4.0.1
+Provides: bundled(browserify-sign) = 4.0.4
+Provides: bundled(browserify-zlib) = 0.2.0
+Provides: bundled(browser-process-hrtime) = 0.1.2
+Provides: bundled(browser-resolve) = 1.11.3
+Provides: bundled(browserslist) = 3.2.8
+Provides: bundled(bser) = 2.0.0
+Provides: bundled(bs-logger) = 0.2.5
+Provides: bundled(buffer) = 4.9.1
+Provides: bundled(buffer-alloc) = 1.2.0
+Provides: bundled(buffer-alloc-unsafe) = 1.1.0
+Provides: bundled(buffer-crc32) = 0.2.13
+Provides: bundled(buffer-equal-constant-time) = 1.0.1
+Provides: bundled(buffer-fill) = 1.0.0
+Provides: bundled(buffer-from) = 1.1.0
+Provides: bundled(buffer-from) = 1.1.1
+Provides: bundled(buffer-v6-polyfill) = 1.0.3
+Provides: bundled(buffer-xor) = 1.0.3
+Provides: bundled(builtin-modules) = 1.1.1
+Provides: bundled(builtin-status-codes) = 3.0.0
+Provides: bundled(busboy) = 0.2.14
+Provides: bundled(bytes) = 3.0.0
+Provides: bundled(cacache) = 10.0.4
+Provides: bundled(cache-base) = 1.0.1
+Provides: bundled(cache-loader) = 1.2.2
+Provides: bundled(caller-path) = 0.1.0
+Provides: bundled(callsites) = 0.2.0
+Provides: bundled(callsites) = 2.0.0
+Provides: bundled(camel-case) = 3.0.0
+Provides: bundled(camelcase) = 4.1.0
+Provides: bundled(caniuse-lite) = 1.0.30000846
+Provides: bundled(caseless) = 0.12.0
+Provides: bundled(certpem) = 1.0.1
+Provides: bundled(chai) = 4.1.2
+Provides: bundled(chai) = 4.2.0
+Provides: bundled(chai-http) = 3.0.0
+Provides: bundled(chalk) = 1.1.3
+Provides: bundled(chalk) = 2.3.0
+Provides: bundled(chalk) = 2.3.2
+Provides: bundled(chalk) = 2.4.1
+Provides: bundled(chardet) = 0.7.0
+Provides: bundled(charenc) = 0.0.2
+Provides: bundled(check-error) = 1.0.2
+Provides: bundled(chokidar) = 2.0.4
+Provides: bundled(chownr) = 1.0.1
+Provides: bundled(chrome-trace-event) = 1.0.0
+Provides: bundled(ci-info) = 1.0.0
+Provides: bundled(cipher-base) = 1.0.4
+Provides: bundled(circular-json) = 0.3.1
+Provides: bundled(class-utils) = 0.3.6
+Provides: bundled(clean-css) = 4.1.11
+Provides: bundled(clean-webpack-plugin) = 0.1.19
+Provides: bundled(cli-cursor) = 2.1.0
+Provides: bundled(cliui) = 4.0.0
+Provides: bundled(cli-width) = 2.1.0
+Provides: bundled(co) = 4.6.0
+Provides: bundled(codecov) = 3.1.0
+Provides: bundled(code-point-at) = 1.1.0
+Provides: bundled(collection-visit) = 1.0.0
+Provides: bundled(color) = 3.0.0
+Provides: bundled(color-convert) = 1.9.0
+Provides: bundled(color-convert) = 1.9.3
+Provides: bundled(color-name) = 1.1.2
+Provides: bundled(color-name) = 1.1.3
+Provides: bundled(colornames) = 1.1.1
+Provides: bundled(colors) = 1.3.2
+Provides: bundled(colorspace) = 1.1.1
+Provides: bundled(color-string) = 1.5.3
+Provides: bundled(combined-stream) = 1.0.6
+Provides: bundled(combined-stream) = 1.0.7
+Provides: bundled(commander) = 2.13.0
+Provides: bundled(commander) = 2.15.1
+Provides: bundled(commondir) = 1.0.1
+Provides: bundled(component-emitter) = 1.2.1
+Provides: bundled(compress-commons) = 1.2.2
+Provides: bundled(compressible) = 2.0.15
+Provides: bundled(compression) = 1.7.3
+Provides: bundled(concat-map) = 0.0.1
+Provides: bundled(concat-stream) = 1.6.2
+Provides: bundled(config) = 2.0.1
+Provides: bundled(console-browserify) = 1.1.0
+Provides: bundled(console-control-strings) = 1.1.0
+Provides: bundled(constants-browserify) = 1.0.0
+Provides: bundled(content-disposition) = 0.5.2
+Provides: bundled(content-type) = 1.0.4
+Provides: bundled(convert-source-map) = 1.5.0
+Provides: bundled(cookie) = 0.3.1
+Provides: bundled(cookiejar) = 2.0.6
+Provides: bundled(cookiejar) = 2.1.2
+Provides: bundled(cookie-signature) = 1.0.6
+Provides: bundled(copy-concurrently) = 1.0.5
+Provides: bundled(copy-descriptor) = 0.1.1
+Provides: bundled(copy-webpack-plugin) = 4.5.4
+Provides: bundled(core-js) = 2.3.0
+Provides: bundled(core-js) = 2.4.1
+Provides: bundled(core-util-is) = 1.0.2
+Provides: bundled(crc32-stream) = 2.0.0
+Provides: bundled(crc) = 3.5.0
+Provides: bundled(create-ecdh) = 4.0.3
+Provides: bundled(create-hash) = 1.2.0
+Provides: bundled(create-hmac) = 1.1.7
+Provides: bundled(cross-spawn) = 4.0.2
+Provides: bundled(cross-spawn) = 6.0.5
+Provides: bundled(crypt) = 0.0.2
+Provides: bundled(cryptiles) = 3.1.2
+Provides: bundled(crypto-browserify) = 3.12.0
+Provides: bundled(css) = 2.2.1
+Provides: bundled(cssesc) = 0.1.0
+Provides: bundled(css-loader) = 1.0.0
+Provides: bundled(cssom) = 0.3.2
+Provides: bundled(cssom) = 0.3.4
+Provides: bundled(css-parse) = 2.0.0
+Provides: bundled(css-select) = 1.2.0
+Provides: bundled(css-selector-tokenizer) = 0.7.0
+Provides: bundled(cssstyle) = 1.1.1
+Provides: bundled(css-value) = 0.0.1
+Provides: bundled(css-what) = 2.1.0
+Provides: bundled(cycle) = 1.0.3
+Provides: bundled(cyclist) = 0.2.2
+Provides: bundled(d) = 1.0.0
+Provides: bundled(dashdash) = 1.14.1
+Provides: bundled(data-urls) = 1.1.0
+Provides: bundled(date-fns) = 1.29.0
+Provides: bundled(date-now) = 0.1.4
+Provides: bundled(debug) = 2.2.0
+Provides: bundled(debug) = 2.6.9
+Provides: bundled(debug) = 3.1.0
+Provides: bundled(debug) = 4.1.0
+Provides: bundled(decamelize) = 1.2.0
+Provides: bundled(decamelize) = 2.0.0
+Provides: bundled(decode-uri-component) = 0.2.0
+Provides: bundled(deep) = 1.2.3
+Provides: bundled(deep-eql) = 3.0.1
+Provides: bundled(deep-equal) = 1.0.1
+Provides: bundled(deep-extend) = 0.6.0
+Provides: bundled(deep-is) = 0.1.3
+Provides: bundled(deepmerge) = 2.0.1
+Provides: bundled(default-require-extensions) = 1.0.0
+Provides: bundled(define-properties) = 1.1.2
+Provides: bundled(define-property) = 0.2.5
+Provides: bundled(define-property) = 1.0.0
+Provides: bundled(define-property) = 2.0.2
+Provides: bundled(del) = 2.2.2
+Provides: bundled(delayed-stream) = 1.0.0
+Provides: bundled(delegates) = 1.0.0
+Provides: bundled(depd) = 1.1.2
+Provides: bundled(des.js) = 1.0.0
+Provides: bundled(destroy) = 1.0.4
+Provides: bundled(detect-indent) = 4.0.0
+Provides: bundled(detect-libc) = 1.0.3
+Provides: bundled(detect-newline) = 2.1.0
+Provides: bundled(diagnostics) = 1.1.1
+Provides: bundled(dicer) = 0.2.5
+Provides: bundled(diff) = 3.2.0
+Provides: bundled(diff) = 3.5.0
+Provides: bundled(diffie-hellman) = 5.0.3
+Provides: bundled(dir-glob) = 2.0.0
+Provides: bundled(dnssd) = 0.4.1
+Provides: bundled(doctrine) = 2.1.0
+Provides: bundled(domain-browser) = 1.2.0
+Provides: bundled(dom-converter) = 0.1.4
+Provides: bundled(domelementtype) = 1.1.3
+Provides: bundled(domelementtype) = 1.3.0
+Provides: bundled(domexception) = 1.0.1
+Provides: bundled(domhandler) = 2.1.0
+Provides: bundled(domhandler) = 2.4.1
+Provides: bundled(dom-serializer) = 0.1.0
+Provides: bundled(domutils) = 1.1.6
+Provides: bundled(domutils) = 1.5.1
+Provides: bundled(domutils) = 1.6.2
+Provides: bundled(duplexer) = 0.1.1
+Provides: bundled(duplexify) = 3.6.0
+Provides: bundled(ecdsa-sig-formatter) = 1.0.10
+Provides: bundled(ee-first) = 1.1.1
+Provides: bundled(ejs) = 2.5.7
+Provides: bundled(electron-to-chromium) = 1.3.48
+Provides: bundled(elliptic) = 6.4.0
+Provides: bundled(emojis-list) = 2.1.0
+Provides: bundled(enabled) = 1.0.2
+Provides: bundled(encodeurl) = 1.0.2
+Provides: bundled(end-of-stream) = 1.4.1
+Provides: bundled(enhanced-resolve) = 4.0.0
+Provides: bundled(enhanced-resolve) = 4.1.0
+Provides: bundled(entities) = 1.1.1
+Provides: bundled(env-variable) = 0.0.5
+Provides: bundled(errno) = 0.1.7
+Provides: bundled(error-ex) = 1.3.1
+Provides: bundled(es5-ext) = 0.10.46
+Provides: bundled(es6-iterator) = 2.0.3
+Provides: bundled(es6-promise) = 3.0.2
+Provides: bundled(es6-promise) = 4.2.5
+Provides: bundled(es6-promisify) = 5.0.0
+Provides: bundled(es6-symbol) = 3.1.1
+Provides: bundled(es6-templates) = 0.2.3
+Provides: bundled(es-abstract) = 1.10.0
+Provides: bundled(es-abstract) = 1.11.0
+Provides: bundled(escape-html) = 1.0.3
+Provides: bundled(escape-string-regexp) = 1.0.5
+Provides: bundled(escodegen) = 1.11.0
+Provides: bundled(eslint) = 5.8.0
+Provides: bundled(eslint-plugin-html) = 4.0.6
+Provides: bundled(eslint-scope) = 3.7.1
+Provides: bundled(eslint-scope) = 4.0.0
+Provides: bundled(eslint-utils) = 1.3.1
+Provides: bundled(eslint-visitor-keys) = 1.0.0
+Provides: bundled(espree) = 4.1.0
+Provides: bundled(esprima) = 3.1.3
+Provides: bundled(esprima) = 4.0.0
+Provides: bundled(esquery) = 1.0.1
+Provides: bundled(esrecurse) = 4.2.1
+Provides: bundled(es-to-primitive) = 1.1.1
+Provides: bundled(estraverse) = 4.2.0
+Provides: bundled(esutils) = 2.0.2
+Provides: bundled(etag) = 1.8.1
+Provides: bundled(eventemitter3) = 3.1.0
+Provides: bundled(events) = 1.1.1
+Provides: bundled(event-stream) = 3.3.4
+Provides: bundled(event-to-promise) = 0.8.0
+Provides: bundled(evp_bytestokey) = 1.0.3
+Provides: bundled(execa) = 0.10.0
+Provides: bundled(execa) = 0.5.1
+Provides: bundled(exec-sh) = 0.2.0
+Provides: bundled(exit) = 0.1.2
+Provides: bundled(expand-brackets) = 0.1.5
+Provides: bundled(expand-brackets) = 2.1.4
+Provides: bundled(expand-range) = 1.8.2
+Provides: bundled(expect) = 23.6.0
+Provides: bundled(express) = 4.16.4
+Provides: bundled(express-fileupload) = 1.0.0
+Provides: bundled(express-handlebars) = 3.0.0
+Provides: bundled(express-promise-router) = 3.0.3
+Provides: bundled(express-ws) = 4.0.0
+Provides: bundled(extend) = 3.0.1
+Provides: bundled(extend) = 3.0.2
+Provides: bundled(extend-shallow) = 2.0.1
+Provides: bundled(extend-shallow) = 3.0.2
+Provides: bundled(external-editor) = 2.0.4
+Provides: bundled(external-editor) = 3.0.3
+Provides: bundled(extglob) = 0.3.2
+Provides: bundled(extglob) = 2.0.4
+Provides: bundled(extract-text-webpack-plugin) = 4.0.0-beta.0
+Provides: bundled(extsprintf) = 1.3.0
+Provides: bundled(extsprintf) = 1.4.0
+Provides: bundled(fast-deep-equal) = 1.1.0
+Provides: bundled(fast-deep-equal) = 2.0.1
+Provides: bundled(fast-json-stable-stringify) = 2.0.0
+Provides: bundled(fast-levenshtein) = 2.0.6
+Provides: bundled(fastparse) = 1.1.1
+Provides: bundled(fast-safe-stringify) = 2.0.6
+Provides: bundled(fb-watchman) = 2.0.0
+Provides: bundled(fd-slicer) = 1.0.1
+Provides: bundled(fecha) = 2.3.3
+Provides: bundled(figures) = 2.0.0
+Provides: bundled(file-entry-cache) = 2.0.0
+Provides: bundled(file-loader) = 2.0.0
+Provides: bundled(filename-regex) = 2.0.1
+Provides: bundled(fileset) = 2.0.3
+Provides: bundled(file-stream-rotator) = 0.4.1
+Provides: bundled(fill-range) = 2.2.3
+Provides: bundled(fill-range) = 4.0.0
+Provides: bundled(finalhandler) = 1.1.1
+Provides: bundled(find-cache-dir) = 1.0.0
+Provides: bundled(find-up) = 1.1.2
+Provides: bundled(find-up) = 2.1.0
+Provides: bundled(find-up) = 3.0.0
+Provides: bundled(flat-cache) = 1.2.2
+Provides: bundled(flush-write-stream) = 1.0.3
+Provides: bundled(follow-redirects) = 1.2.4
+Provides: bundled(follow-redirects) = 1.6.1
+Provides: bundled(foreach) = 2.0.5
+Provides: bundled(forever-agent) = 0.6.1
+Provides: bundled(for-in) = 1.0.2
+Provides: bundled(form-data) = 1.0.0-rc4
+Provides: bundled(form-data) = 2.3.2
+Provides: bundled(form-data) = 2.3.3
+Provides: bundled(formidable) = 1.2.1
+Provides: bundled(for-own) = 0.1.5
+Provides: bundled(forwarded) = 0.1.2
+Provides: bundled(fragment-cache) = 0.2.1
+Provides: bundled(fresh) = 0.5.2
+Provides: bundled(from) = 0.1.7
+Provides: bundled(from2) = 2.3.0
+Provides: bundled(fs-constants) = 1.0.0
+Provides: bundled(fs-minipass) = 1.2.5
+Provides: bundled(fs.realpath) = 1.0.0
+Provides: bundled(fs-symlink) = 1.2.1
+Provides: bundled(fs-write-stream-atomic) = 1.0.10
+Provides: bundled(functional-red-black-tree) = 1.0.1
+Provides: bundled(function-bind) = 1.1.1
+Provides: bundled(Gajus Kuizinas) = 5.1.0
+Provides: bundled(gateway-addon) = 0.4.0
+Provides: bundled(gauge) = 2.7.4
+Provides: bundled(gaze) = 1.1.2
+Provides: bundled(get-caller-file) = 1.0.2
+Provides: bundled(get-func-name) = 2.0.0
+Provides: bundled(getpass) = 0.1.7
+Provides: bundled(get-stream) = 2.3.1
+Provides: bundled(get-stream) = 3.0.0
+Provides: bundled(get-value) = 2.0.6
+Provides: bundled(glob) = 6.0.4
+Provides: bundled(glob) = 7.1.2
+Provides: bundled(global-modules-path) = 2.3.0
+Provides: bundled(globals) = 11.4.0
+Provides: bundled(globals) = 11.8.0
+Provides: bundled(globals) = 9.18.0
+Provides: bundled(glob-base) = 0.3.0
+Provides: bundled(globby) = 5.0.0
+Provides: bundled(globby) = 7.1.1
+Provides: bundled(glob-parent) = 2.0.0
+Provides: bundled(glob-parent) = 3.1.0
+Provides: bundled(globule) = 1.2.0
+Provides: bundled(graceful-fs) = 4.1.11
+Provides: bundled(grapheme-splitter) = 1.0.4
+Provides: bundled(greenlock) = 2.2.19
+Provides: bundled(growly) = 1.3.0
+Provides: bundled(handlebars) = 4.0.10
+Provides: bundled(handlebars) = 4.0.11
+Provides: bundled(handlebars) = 4.0.12
+Provides: bundled(har-schema) = 2.0.0
+Provides: bundled(har-validator) = 5.0.3
+Provides: bundled(has) = 1.0.1
+Provides: bundled(has-ansi) = 2.0.0
+Provides: bundled(has-flag) = 1.0.0
+Provides: bundled(has-flag) = 2.0.0
+Provides: bundled(has-flag) = 3.0.0
+Provides: bundled(hash-base) = 3.0.4
+Provides: bundled(hash.js) = 1.1.4
+Provides: bundled(has-symbols) = 1.0.0
+Provides: bundled(has-unicode) = 2.0.1
+Provides: bundled(has-value) = 0.3.1
+Provides: bundled(has-value) = 1.0.0
+Provides: bundled(has-values) = 0.1.4
+Provides: bundled(has-values) = 1.0.0
+Provides: bundled(hawk) = 6.0.2
+Provides: bundled(he) = 1.1.1
+Provides: bundled(highlightjs) = 9.12.0
+Provides: bundled(hmac-drbg) = 1.0.1
+Provides: bundled(hoek) = 4.2.0
+Provides: bundled(hoek) = 5.0.4
+Provides: bundled(home-or-tmp) = 2.0.0
+Provides: bundled(hosted-git-info) = 2.4.2
+Provides: bundled(html-encoding-sniffer) = 1.0.2
+Provides: bundled(html-loader) = 0.5.5
+Provides: bundled(html-minifier) = 3.5.12
+Provides: bundled(html-minifier) = 3.5.15
+Provides: bundled(htmlparser2) = 3.3.0
+Provides: bundled(htmlparser2) = 3.9.2
+Provides: bundled(html-webpack-plugin) = 3.2.0
+Provides: bundled(http_ece) = 1.0.5
+Provides: bundled(http-errors) = 1.6.3
+Provides: bundled(http-proxy) = 1.17.0
+Provides: bundled(https-browserify) = 1.0.0
+Provides: bundled(http-signature) = 1.2.0
+Provides: bundled(https-proxy-agent) = 2.2.1
+Provides: bundled(iconv-lite) = 0.4.13
+Provides: bundled(iconv-lite) = 0.4.18
+Provides: bundled(iconv-lite) = 0.4.23
+Provides: bundled(iconv-lite) = 0.4.24
+Provides: bundled(icss-replace-symbols) = 1.1.0
+Provides: bundled(icss-utils) = 2.1.0
+Provides: bundled(ieee754) = 1.1.12
+Provides: bundled(iferr) = 0.1.5
+Provides: bundled(ignore) = 3.3.7
+Provides: bundled(ignore) = 4.0.6
+Provides: bundled(ignore-walk) = 3.0.1
+Provides: bundled(immediate) = 3.0.6
+Provides: bundled(import-local) = 1.0.0
+Provides: bundled(import-local) = 2.0.0
+Provides: bundled(imurmurhash) = 0.1.4
+Provides: bundled(indexof) = 0.0.1
+Provides: bundled(inflight) = 1.0.6
+Provides: bundled(inherits) = 2.0.1
+Provides: bundled(inherits) = 2.0.3
+Provides: bundled(ini) = 1.3.5
+Provides: bundled(inquirer) = 3.3.0
+Provides: bundled(inquirer) = 6.2.0
+Provides: bundled(interpret) = 1.1.0
+Provides: bundled(invariant) = 2.2.2
+Provides: bundled(invariant) = 2.2.3
+Provides: bundled(invariant) = 2.2.4
+Provides: bundled(invert-kv) = 1.0.0
+Provides: bundled(invert-kv) = 2.0.0
+Provides: bundled(ipaddr.js) = 1.8.0
+Provides: bundled(ip-regex) = 1.0.3
+Provides: bundled(ip-regex) = 3.0.0
+Provides: bundled(is) = 3.2.1
+Provides: bundled(is-accessor-descriptor) = 0.1.6
+Provides: bundled(is-accessor-descriptor) = 1.0.0
+Provides: bundled(isarray) = 0.0.1
+Provides: bundled(isarray) = 1.0.0
+Provides: bundled(is-arrayish) = 0.2.1
+Provides: bundled(is-arrayish) = 0.3.2
+Provides: bundled(is-binary-path) = 1.0.1
+Provides: bundled(is-buffer) = 1.1.6
+Provides: bundled(is-builtin-module) = 1.0.0
+Provides: bundled(is-callable) = 1.1.3
+Provides: bundled(is-ci) = 1.0.10
+Provides: bundled(is-data-descriptor) = 0.1.4
+Provides: bundled(is-data-descriptor) = 1.0.0
+Provides: bundled(is-date-object) = 1.0.1
+Provides: bundled(is-descriptor) = 0.1.6
+Provides: bundled(is-descriptor) = 1.0.2
+Provides: bundled(is-dotfile) = 1.0.3
+Provides: bundled(isemail) = 3.0.0
+Provides: bundled(is-equal-shallow) = 0.1.3
+Provides: bundled(isexe) = 2.0.0
+Provides: bundled(is-extendable) = 0.1.1
+Provides: bundled(is-extendable) = 1.0.1
+Provides: bundled(is-extglob) = 1.0.0
+Provides: bundled(is-extglob) = 2.1.1
+Provides: bundled(is-finite) = 1.0.2
+Provides: bundled(is-fullwidth-code-point) = 1.0.0
+Provides: bundled(is-fullwidth-code-point) = 2.0.0
+Provides: bundled(is-generator-fn) = 1.0.0
+Provides: bundled(is-glob) = 2.0.1
+Provides: bundled(is-glob) = 3.1.0
+Provides: bundled(is-glob) = 4.0.0
+Provides: bundled(is-ip) = 1.0.0
+Provides: bundled(is-number) = 2.1.0
+Provides: bundled(is-number) = 3.0.0
+Provides: bundled(is-number) = 4.0.0
+Provides: bundled(isobject) = 2.1.0
+Provides: bundled(isobject) = 3.0.1
+Provides: bundled(is-odd) = 2.0.0
+Provides: bundled(is-path-cwd) = 1.0.0
+Provides: bundled(is-path-in-cwd) = 1.0.0
+Provides: bundled(is-path-inside) = 1.0.0
+Provides: bundled(is-plain-object) = 2.0.4
+Provides: bundled(is-posix-bracket) = 0.1.1
+Provides: bundled(is-primitive) = 2.0.0
+Provides: bundled(is-promise) = 2.1.0
+Provides: bundled(is-regex) = 1.0.4
+Provides: bundled(is-resolvable) = 1.1.0
+Provides: bundled(isstream) = 0.1.2
+Provides: bundled(is-stream) = 1.1.0
+Provides: bundled(is-symbol) = 1.0.1
+Provides: bundled(istanbul-api) = 1.3.7
+Provides: bundled(istanbul-lib-coverage) = 1.2.1
+Provides: bundled(istanbul-lib-hook) = 1.2.2
+Provides: bundled(istanbul-lib-instrument) = 1.10.2
+Provides: bundled(istanbul-lib-report) = 1.1.5
+Provides: bundled(istanbul-lib-source-maps) = 1.2.6
+Provides: bundled(istanbul-reports) = 1.5.1
+Provides: bundled(is-typedarray) = 1.0.0
+Provides: bundled(is-utf8) = 0.2.1
+Provides: bundled(is-windows) = 1.0.2
+Provides: bundled(tough-cookie) = 2.3.4
+Provides: bundled(tough-cookie) = 2.4.3
+Provides: bundled(tough-cookie) = 2.5.0
+Provides: bundled(jest) = 23.6.0
+Provides: bundled(jest-changed-files) = 23.4.2
+Provides: bundled(jest-cli) = 23.6.0
+Provides: bundled(jest-config) = 23.6.0
+Provides: bundled(jest-diff) = 23.6.0
+Provides: bundled(jest-docblock) = 23.2.0
+Provides: bundled(jest-each) = 23.6.0
+Provides: bundled(jest-environment-jsdom) = 23.4.0
+Provides: bundled(jest-environment-node) = 23.4.0
+Provides: bundled(jest-get-type) = 22.4.3
+Provides: bundled(jest-haste-map) = 23.6.0
+Provides: bundled(jest-jasmine2) = 23.6.0
+Provides: bundled(jest-leak-detector) = 23.6.0
+Provides: bundled(jest-matcher-utils) = 23.6.0
+Provides: bundled(jest-message-util) = 23.4.0
+Provides: bundled(jest-mock) = 23.2.0
+Provides: bundled(jest-regex-util) = 23.3.0
+Provides: bundled(jest-resolve) = 23.6.0
+Provides: bundled(jest-resolve-dependencies) = 23.6.0
+Provides: bundled(jest-runner) = 23.6.0
+Provides: bundled(jest-runtime) = 23.6.0
+Provides: bundled(jest-serializer) = 23.0.1
+Provides: bundled(jest-snapshot) = 23.6.0
+Provides: bundled(jest-util) = 23.4.0
+Provides: bundled(jest-validate) = 23.6.0
+Provides: bundled(jest-watcher) = 23.4.0
+Provides: bundled(jest-worker) = 23.2.0
+Provides: bundled(joi) = 13.7.0
+Provides: bundled(util) = 0.10.3
+Provides: bundled(util) = 0.10.4
+Provides: bundled(jschardet) = 1.4.2
+Provides: bundled(jsdom) = 11.12.0
+Provides: bundled(jsdom) = 13.1.0
+Provides: bundled(jsesc) = 0.5.0
+Provides: bundled(jsesc) = 1.3.0
+Provides: bundled(jsesc) = 2.5.1
+Provides: bundled(json5) = 0.5.1
+Provides: bundled(json5) = 1.0.1
+Provides: bundled(json5) = 2.1.0
+Provides: bundled(jsonfile) = 5.0.0
+Provides: bundled(jsonify) = 0.0.0
+Provides: bundled(json-parse-better-errors) = 1.0.2
+Provides: bundled(json-schema) = 0.2.3
+Provides: bundled(json-schema-traverse) = 0.3.1
+Provides: bundled(json-schema-traverse) = 0.4.1
+Provides: bundled(json-stable-stringify-without-jsonify) = 1.0.1
+Provides: bundled(json-stringify-safe) = 5.0.1
+Provides: bundled(jsonwebtoken) = 8.3.0
+Provides: bundled(jsprim) = 1.4.1
+Provides: bundled(js-tokens) = 3.0.1
+Provides: bundled(js-tokens) = 3.0.2
+Provides: bundled(js-yaml) = 3.12.0
+Provides: bundled(js-yaml) = 3.8.4
+Provides: bundled(jszip) = 3.1.5
+Provides: bundled(isarray) = 0.0.1
+Provides: bundled(just-extend) = 3.0.0
+Provides: bundled(jwa) = 1.1.6
+Provides: bundled(jws) = 3.1.5
+Provides: bundled(kind-of) = 3.2.2
+Provides: bundled(kind-of) = 4.0.0
+Provides: bundled(kind-of) = 5.1.0
+Provides: bundled(kind-of) = 6.0.2
+Provides: bundled(kleur) = 2.0.2
+Provides: bundled(kuler) = 1.0.1
+Provides: bundled(lazystream) = 1.0.0
+Provides: bundled(lcid) = 1.0.0
+Provides: bundled(lcid) = 2.0.0
+Provides: bundled(le-acme-core) = 2.1.3
+Provides: bundled(le-challenge-dns) = 2.3.2
+Provides: bundled(le-challenge-fs) = 2.0.8
+Provides: bundled(left-pad) = 1.3.0
+Provides: bundled(le-sni-auto) = 2.1.5
+Provides: bundled(le-store-certbot) = 2.1.2
+Provides: bundled(leven) = 2.1.0
+Provides: bundled(levn) = 0.3.0
+Provides: bundled(lie) = 3.1.1
+Provides: bundled(loader-runner) = 2.3.0
+Provides: bundled(loader-utils) = 0.2.17
+Provides: bundled(loader-utils) = 1.1.0
+Provides: bundled(load-json-file) = 1.1.0
+Provides: bundled(load-json-file) = 4.0.0
+Provides: bundled(locate-path) = 2.0.0
+Provides: bundled(locate-path) = 3.0.0
+Provides: bundled(lodash) = 4.17.10
+Provides: bundled(lodash) = 4.17.4
+Provides: bundled(lodash) = 4.17.5
+Provides: bundled(lodash.assign) = 4.2.0
+Provides: bundled(lodash.camelcase) = 4.3.0
+Provides: bundled(lodash.debounce) = 4.0.8
+Provides: bundled(lodash.defaults) = 4.2.0
+Provides: bundled(lodash.difference) = 4.5.0
+Provides: bundled(lodash.flatten) = 4.4.0
+Provides: bundled(lodash.flattendeep) = 4.4.0
+Provides: bundled(lodash.get) = 4.4.2
+Provides: bundled(lodash.includes) = 4.3.0
+Provides: bundled(lodash.isboolean) = 3.0.3
+Provides: bundled(lodash.isinteger) = 4.0.4
+Provides: bundled(lodash.isnumber) = 3.0.3
+Provides: bundled(lodash.isplainobject) = 4.0.6
+Provides: bundled(lodash.isstring) = 4.0.1
+Provides: bundled(lodash.once) = 4.1.1
+Provides: bundled(lodash.sortby) = 4.7.0
+Provides: bundled(lodash.toarray) = 4.4.0
+Provides: bundled(lodash.union) = 4.6.0
+Provides: bundled(logform) = 1.10.0
+Provides: bundled(loglevelnext) = 1.0.5
+Provides: bundled(log-symbols) = 2.2.0
+Provides: bundled(lolex) = 2.3.2
+Provides: bundled(lolex) = 3.0.0
+Provides: bundled(loose-envify) = 1.3.1
+Provides: bundled(lower-case) = 1.1.4
+Provides: bundled(lru-cache) = 4.1.1
+Provides: bundled(lru-cache) = 4.1.3
+Provides: bundled(make-dir) = 1.3.0
+Provides: bundled(makeerror) = 1.0.11
+Provides: bundled(make-error) = 1.3.5
+Provides: bundled(map-age-cleaner) = 0.1.2
+Provides: bundled(map-cache) = 0.2.2
+Provides: bundled(map-stream) = 0.1.0
+Provides: bundled(map-visit) = 1.0.0
+Provides: bundled(md5) = 2.2.1
+Provides: bundled(md5.js) = 1.3.4
+Provides: bundled(media-typer) = 0.3.0
+Provides: bundled(mem) = 1.1.0
+Provides: bundled(mem) = 4.0.0
+Provides: bundled(memory-fs) = 0.4.1
+Provides: bundled(memorystream) = 0.3.1
+Provides: bundled(merge) = 1.2.0
+Provides: bundled(merge-descriptors) = 1.0.1
+Provides: bundled(merge-stream) = 1.0.1
+Provides: bundled(methods) = 1.1.2
+Provides: bundled(micromatch) = 2.3.11
+Provides: bundled(micromatch) = 3.1.10
+Provides: bundled(miller-rabin) = 4.0.1
+Provides: bundled(mime-db) = 1.33.0
+Provides: bundled(mime-db) = 1.36.0
+Provides: bundled(mime-db) = 1.37.0
+Provides: bundled(mime-types) = 2.1.18
+Provides: bundled(mime-types) = 2.1.20
+Provides: bundled(mimic-fn) = 1.1.0
+Provides: bundled(mini-css-extract-plugin) = 0.4.4
+Provides: bundled(minimalistic-assert) = 1.0.1
+Provides: bundled(minimalistic-crypto-utils) = 1.0.1
+Provides: bundled(minimatch) = 3.0.4
+Provides: bundled(minimist) = 0.0.8
+Provides: bundled(minimist) = 1.2.0
+Provides: bundled(minipass) = 2.3.3
+Provides: bundled(minizlib) = 1.1.0
+Provides: bundled(mississippi) = 2.0.0
+Provides: bundled(mixin-deep) = 1.3.1
+Provides: bundled(mkdirp) = 0.5.1
+Provides: bundled(mkdirp-then) = 1.2.0
+Provides: bundled(moment) = 2.22.2
+Provides: bundled(move-concurrently) = 1.0.1
+Provides: bundled(ms) = 0.7.1
+Provides: bundled(ms) = 2.0.0
+Provides: bundled(ms) = 2.1.1
+Provides: bundled(mute-stream) = 0.0.7
+Provides: bundled(mz) = 2.7.0
+Provides: bundled(nanomatch) = 1.2.9
+Provides: bundled(natural-compare) = 1.4.0
+Provides: bundled(ncname) = 1.0.0
+Provides: bundled(ncp) = 2.0.0
+Provides: bundled(needle) = 2.2.1
+Provides: bundled(needle) = 2.2.4
+Provides: bundled(negotiator) = 0.6.1
+Provides: bundled(neo-async) = 2.5.1
+Provides: bundled(next-tick) = 1.0.0
+Provides: bundled(nice-try) = 1.0.4
+Provides: bundled(nise) = 1.4.6
+Provides: bundled(nocache) = 2.0.0
+Provides: bundled(no-case) = 2.3.2
+Provides: bundled(nock) = 10.0.1
+Provides: bundled(node.extend) = 1.1.6
+Provides: bundled(node-fetch) = 2.2.0
+Provides: bundled(node-forge) = 0.6.49
+Provides: bundled(node-getopt) = 0.3.2
+Provides: bundled(node-int64) = 0.4.0
+Provides: bundled(node-libs-browser) = 2.1.0
+Provides: bundled(node-notifier) = 5.3.0
+Provides: bundled(node-pre-gyp) = 0.10.3
+Provides: bundled(node-pre-gyp) = 0.9.0
+Provides: bundled(node-rest-client) = 3.1.0
+Provides: bundled(nopt) = 4.0.1
+Provides: bundled(normalize-package-data) = 2.3.8
+Provides: bundled(normalize-path) = 2.1.1
+Provides: bundled(normalize-path) = 3.0.0
+Provides: bundled(npm-bundled) = 1.0.3
+Provides: bundled(npm-install-package) = 2.1.0
+Provides: bundled(npmlog) = 4.1.2
+Provides: bundled(npm-packlist) = 1.1.10
+Provides: bundled(npm-run-all) = 4.1.3
+Provides: bundled(npm-run-path) = 2.0.2
+Provides: bundled(nth-check) = 1.0.1
+Provides: bundled(number-is-nan) = 1.0.1
+Provides: bundled(nw-pre-gyp-module-test) = 0.0.1
+Provides: bundled(nwsapi) = 2.0.9
+Provides: bundled(oauth-sign) = 0.8.2
+Provides: bundled(oauth-sign) = 0.9.0
+Provides: bundled(object.assign) = 4.1.0
+Provides: bundled(object-assign) = 4.1.1
+Provides: bundled(object-copy) = 0.1.0
+Provides: bundled(object.getownpropertydescriptors) = 2.0.3
+Provides: bundled(object-hash) = 1.3.0
+Provides: bundled(object-keys) = 1.0.11
+Provides: bundled(object-keys) = 1.0.12
+Provides: bundled(object.omit) = 2.0.1
+Provides: bundled(object.pick) = 1.3.0
+Provides: bundled(object-visit) = 1.0.1
+Provides: bundled(once) = 1.4.0
+Provides: bundled(one-time) = 0.0.4
+Provides: bundled(onetime) = 2.0.1
+Provides: bundled(on-finished) = 2.3.0
+Provides: bundled(on-headers) = 1.0.1
+Provides: bundled(optimist) = 0.6.1
+Provides: bundled(optionator) = 0.8.2
+Provides: bundled(os-browserify) = 0.3.0
+Provides: bundled(osenv) = 0.1.5
+Provides: bundled(os-homedir) = 1.0.2
+Provides: bundled(os-locale) = 2.0.0
+Provides: bundled(os-locale) = 3.0.1
+Provides: bundled(os-tmpdir) = 1.0.2
+Provides: bundled(page) = 1.11.0
+Provides: bundled(pako) = 1.0.6
+Provides: bundled(parallel-transform) = 1.1.0
+Provides: bundled(param-case) = 2.1.1
+Provides: bundled(parse5) = 4.0.0
+Provides: bundled(parse5) = 5.1.0
+Provides: bundled(parse-asn1) = 5.1.1
+Provides: bundled(parse-glob) = 3.0.4
+Provides: bundled(parse-json) = 2.2.0
+Provides: bundled(parse-json) = 4.0.0
+Provides: bundled(parseurl) = 1.3.2
+Provides: bundled(pascalcase) = 0.1.1
+Provides: bundled(path-browserify) = 0.0.0
+Provides: bundled(path-dirname) = 1.0.2
+Provides: bundled(path-exists) = 2.1.0
+Provides: bundled(path-exists) = 3.0.0
+Provides: bundled(path-is-absolute) = 1.0.1
+Provides: bundled(path-is-inside) = 1.0.2
+Provides: bundled(path-key) = 2.0.1
+Provides: bundled(path-parse) = 1.0.5
+Provides: bundled(path-to-regexp) = 0.1.7
+Provides: bundled(path-to-regexp) = 1.2.1
+Provides: bundled(path-to-regexp) = 1.7.0
+Provides: bundled(path-type) = 1.1.0
+Provides: bundled(path-type) = 3.0.0
+Provides: bundled(pathval) = 1.1.0
+Provides: bundled(pause-stream) = 0.0.11
+Provides: bundled(pbkdf2) = 3.0.16
+Provides: bundled(p-defer) = 1.0.0
+Provides: bundled(pend) = 1.2.0
+Provides: bundled(performance-now) = 2.1.0
+Provides: bundled(p-finally) = 1.0.0
+Provides: bundled(pify) = 2.3.0
+Provides: bundled(pify) = 3.0.0
+Provides: bundled(pinkie) = 2.0.4
+Provides: bundled(pinkie-promise) = 2.0.1
+Provides: bundled(p-is-promise) = 1.1.0
+Provides: bundled(pixelmatch) = 4.0.2
+Provides: bundled(pkg-dir) = 2.0.0
+Provides: bundled(pkg-dir) = 3.0.0
+Provides: bundled(pkijs) = 1.3.33
+Provides: bundled(p-limit) = 1.2.0
+Provides: bundled(p-limit) = 1.3.0
+Provides: bundled(p-limit) = 2.0.0
+Provides: bundled(p-locate) = 2.0.0
+Provides: bundled(p-locate) = 3.0.0
+Provides: bundled(pluralize) = 7.0.0
+Provides: bundled(pn) = 1.1.0
+Provides: bundled(pngjs) = 3.3.3
+Provides: bundled(posix-character-classes) = 0.1.1
+Provides: bundled(postcss) = 6.0.21
+Provides: bundled(postcss) = 6.0.23
+Provides: bundled(postcss-modules-extract-imports) = 1.2.0
+Provides: bundled(postcss-modules-local-by-default) = 1.2.0
+Provides: bundled(postcss-modules-scope) = 1.1.0
+Provides: bundled(postcss-modules-values) = 1.3.0
+Provides: bundled(postcss-value-parser) = 3.3.0
+Provides: bundled(prelude-ls) = 1.1.2
+Provides: bundled(preserve) = 0.2.0
+Provides: bundled(pretty-error) = 2.1.1
+Provides: bundled(pretty-format) = 23.6.0
+Provides: bundled(process) = 0.11.10
+Provides: bundled(process-nextick-args) = 1.0.7
+Provides: bundled(process-nextick-args) = 2.0.0
+Provides: bundled(progress) = 2.0.0
+Provides: bundled(promise) = 7.3.1
+Provides: bundled(promise-inflight) = 1.0.1
+Provides: bundled(promisepipe) = 3.0.0
+Provides: bundled(prompts) = 0.1.14
+Provides: bundled(propagate) = 1.0.0
+Provides: bundled(proxy-addr) = 2.0.4
+Provides: bundled(prr) = 1.0.1
+Provides: bundled(pseudomap) = 1.0.2
+Provides: bundled(psl) = 1.1.29
+Provides: bundled(psl) = 1.1.31
+Provides: bundled(ps-tree) = 1.1.0
+Provides: bundled(p-try) = 1.0.0
+Provides: bundled(p-try) = 2.0.0
+Provides: bundled(public-encrypt) = 4.0.2
+Provides: bundled(pump) = 2.0.1
+Provides: bundled(pumpify) = 1.5.1
+Provides: bundled(punycode) = 1.3.2
+Provides: bundled(punycode) = 1.4.1
+Provides: bundled(punycode) = 2.1.0
+Provides: bundled(punycode) = 2.1.1
+Provides: bundled(pyconf) = 1.1.5
+Provides: bundled(q) = 1.5.1
+Provides: bundled(qs) = 6.5.1
+Provides: bundled(qs) = 6.5.2
+Provides: bundled(querystring) = 0.2.0
+Provides: bundled(querystring-es3) = 0.2.1
+Provides: bundled(randomatic) = 1.1.7
+Provides: bundled(randombytes) = 2.0.6
+Provides: bundled(randomfill) = 1.0.4
+Provides: bundled(range-parser) = 1.2.0
+Provides: bundled(raw-body) = 2.3.3
+Provides: bundled(raw-loader) = 0.5.1
+Provides: bundled(rc) = 1.2.8
+Provides: bundled(readable-stream) = 1.0.34
+Provides: bundled(readable-stream) = 1.1.14
+Provides: bundled(readable-stream) = 2.0.6
+Provides: bundled(readable-stream) = 2.3.6
+Provides: bundled(readdirp) = 2.1.0
+Provides: bundled(read-pkg) = 1.1.0
+Provides: bundled(read-pkg) = 3.0.0
+Provides: bundled(read-pkg-up) = 1.0.1
+Provides: bundled(realpath-native) = 1.0.2
+Provides: bundled(recast) = 0.11.23
+Provides: bundled(regenerate) = 1.3.3
+Provides: bundled(regenerate) = 1.4.0
+Provides: bundled(regenerate-unicode-properties) = 6.0.0
+Provides: bundled(regenerator-runtime) = 0.10.5
+Provides: bundled(regenerator-runtime) = 0.11.1
+Provides: bundled(regenerator-transform) = 0.10.1
+Provides: bundled(regex-cache) = 0.4.3
+Provides: bundled(regex-not) = 1.0.2
+Provides: bundled(regexpp) = 2.0.1
+Provides: bundled(regexpu-core) = 1.0.0
+Provides: bundled(regexpu-core) = 2.0.0
+Provides: bundled(regexpu-core) = 4.1.5
+Provides: bundled(regjsgen) = 0.2.0
+Provides: bundled(regjsgen) = 0.4.0
+Provides: bundled(regjsparser) = 0.1.5
+Provides: bundled(regjsparser) = 0.3.0
+Provides: bundled(relateurl) = 0.2.7
+Provides: bundled(remove-trailing-separator) = 1.1.0
+Provides: bundled(renderkid) = 2.0.1
+Provides: bundled(repeat-element) = 1.1.2
+Provides: bundled(repeating) = 2.0.1
+Provides: bundled(repeat-string) = 1.6.1
+Provides: bundled(request) = 2.85.0
+Provides: bundled(request) = 2.86.0
+Provides: bundled(request) = 2.88.0
+Provides: bundled(request-promise-core) = 1.1.1
+Provides: bundled(request-promise-native) = 1.0.5
+Provides: bundled(require-directory) = 2.1.1
+Provides: bundled(require-main-filename) = 1.0.1
+Provides: bundled(requires-port) = 1.0.0
+Provides: bundled(require-uncached) = 1.0.3
+Provides: bundled(resolve) = 1.1.7
+Provides: bundled(resolve) = 1.7.1
+Provides: bundled(resolve-cwd) = 2.0.0
+Provides: bundled(resolve-from) = 1.0.1
+Provides: bundled(resolve-from) = 3.0.0
+Provides: bundled(resolve-url) = 0.2.1
+Provides: bundled(restore-cursor) = 2.0.0
+Provides: bundled(ret) = 0.1.15
+Provides: bundled(rgb2hex) = 0.1.9
+Provides: bundled(rimraf) = 2.6.1
+Provides: bundled(rimraf) = 2.6.2
+Provides: bundled(ripemd160) = 2.0.2
+Provides: bundled(mime) = 1.4.1
+Provides: bundled(mime) = 1.6.0
+Provides: bundled(mime) = 2.2.0
+Provides: bundled(rsa-compat) = 1.3.2
+Provides: bundled(run-async) = 2.3.0
+Provides: bundled(run-queue) = 1.0.3
+Provides: bundled(rxjs) = 6.3.3
+Provides: bundled(rx-lite) = 4.0.8
+Provides: bundled(rx-lite-aggregates) = 4.0.8
+Provides: bundled(safe-buffer) = 5.1.2
+Provides: bundled(safer-buffer) = 2.1.2
+Provides: bundled(safe-regex) = 1.1.0
+Provides: bundled(safe-replace) = 1.0.2
+Provides: bundled(sane) = 2.2.0
+Provides: bundled(sax) = 1.2.4
+Provides: bundled(saxes) = 3.1.4
+Provides: bundled(schema-utils) = 0.4.5
+Provides: bundled(schema-utils) = 1.0.0
+Provides: bundled(selenium-standalone) = 6.15.3
+Provides: bundled(semver) = 5.3.0
+Provides: bundled(semver) = 5.5.0
+Provides: bundled(semver) = 5.6.0
+Provides: bundled(send) = 0.16.2
+Provides: bundled(serialize-javascript) = 1.5.0
+Provides: bundled(serve-static) = 1.13.2
+Provides: bundled(set-blocking) = 2.0.0
+Provides: bundled(setimmediate) = 1.0.5
+Provides: bundled(set-immediate-shim) = 1.0.1
+Provides: bundled(setprototypeof) = 1.1.0
+Provides: bundled(set-value) = 0.4.3
+Provides: bundled(set-value) = 2.0.0
+Provides: bundled(sha.js) = 2.4.11
+Provides: bundled(shaka-player) = 2.5.0-beta2
+Provides: bundled(shebang-command) = 1.2.0
+Provides: bundled(shebang-regex) = 1.0.0
+Provides: bundled(shell-quote) = 1.6.1
+Provides: bundled(shellwords) = 0.1.1
+Provides: bundled(signal-exit) = 3.0.2
+Provides: bundled(simple-oauth2) = 2.2.1
+Provides: bundled(simple-swizzle) = 0.2.2
+Provides: bundled(sinon) = 7.1.0
+Provides: bundled(sisteransi) = 0.1.1
+Provides: bundled(slash) = 1.0.0
+Provides: bundled(slice-ansi) = 1.0.0
+Provides: bundled(snapdragon) = 0.8.2
+Provides: bundled(snapdragon-node) = 2.1.1
+Provides: bundled(snapdragon-util) = 3.0.1
+Provides: bundled(sntp) = 2.1.0
+Provides: bundled(source-list-map) = 2.0.0
+Provides: bundled(source-map) = 0.1.43
+Provides: bundled(source-map) = 0.4.4
+Provides: bundled(source-map) = 0.5.6
+Provides: bundled(source-map) = 0.5.7
+Provides: bundled(source-map) = 0.6.1
+Provides: bundled(source-map-resolve) = 0.3.1
+Provides: bundled(source-map-resolve) = 0.5.2
+Provides: bundled(source-map-support) = 0.4.15
+Provides: bundled(source-map-support) = 0.5.3
+Provides: bundled(source-map-support) = 0.5.9
+Provides: bundled(source-map-url) = 0.3.0
+Provides: bundled(source-map-url) = 0.4.0
+Provides: bundled(spdx-correct) = 1.0.2
+Provides: bundled(spdx-expression-parse) = 1.0.4
+Provides: bundled(spdx-license-ids) = 1.2.2
+Provides: bundled(speaktome-api) = 0.2.1
+Provides: bundled(split) = 0.3.3
+Provides: bundled(split-string) = 3.1.0
+Provides: bundled(sprintf-js) = 1.0.3
+Provides: bundled(sshpk) = 1.14.1
+Provides: bundled(ssri) = 5.3.0
+Provides: bundled(stack-trace) = 0.0.10
+Provides: bundled(stack-utils) = 1.0.1
+Provides: bundled(static-extend) = 0.1.2
+Provides: bundled(statuses) = 1.4.0
+Provides: bundled(statuses) = 1.5.0
+Provides: bundled(stealthy-require) = 1.1.1
+Provides: bundled(stream-browserify) = 2.0.1
+Provides: bundled(stream-combiner) = 0.0.4
+Provides: bundled(stream-each) = 1.2.2
+Provides: bundled(stream-http) = 2.8.3
+Provides: bundled(streamifier) = 0.1.1
+Provides: bundled(streamsearch) = 0.1.2
+Provides: bundled(stream-shift) = 1.0.0
+Provides: bundled(string_decoder) = 0.10.31
+Provides: bundled(string_decoder) = 1.1.1
+Provides: bundled(string-format) = 2.0.0
+Provides: bundled(string-length) = 2.0.0
+Provides: bundled(string.prototype.padend) = 3.0.0
+Provides: bundled(stringstream) = 0.0.5
+Provides: bundled(string-width) = 1.0.2
+Provides: bundled(string-width) = 2.0.0
+Provides: bundled(string-width) = 2.1.1
+Provides: bundled(strip-ansi) = 3.0.1
+Provides: bundled(strip-ansi) = 4.0.0
+Provides: bundled(strip-bom) = 2.0.0
+Provides: bundled(strip-bom) = 3.0.0
+Provides: bundled(strip-eof) = 1.0.0
+Provides: bundled(strip-json-comments) = 2.0.1
+Provides: bundled(style-loader) = 0.23.1
+Provides: bundled(superagent) = 2.3.0
+Provides: bundled(supports-color) = 2.0.0
+Provides: bundled(supports-color) = 3.1.2
+Provides: bundled(supports-color) = 4.5.0
+Provides: bundled(supports-color) = 5.0.1
+Provides: bundled(supports-color) = 5.3.0
+Provides: bundled(supports-color) = 5.4.0
+Provides: bundled(supports-color) = 5.5.0
+Provides: bundled(symbol-tree) = 3.2.2
+Provides: bundled(tapable) = 1.0.0
+Provides: bundled(tapable) = 1.1.0
+Provides: bundled(tar) = 4.4.4
+Provides: bundled(tar) = 4.4.6
+Provides: bundled(tar-stream) = 1.5.5
+Provides: bundled(tar-stream) = 1.6.1
+Provides: bundled(test-exclude) = 4.2.3
+Provides: bundled(text-encoding) = 0.6.4
+Provides: bundled(text-hex) = 1.0.0
+Provides: bundled(text-table) = 0.2.0
+Provides: bundled(thenify) = 3.3.0
+Provides: bundled(thenify-all) = 1.6.0
+Provides: bundled(throat) = 4.1.0
+Provides: bundled(through2) = 2.0.3
+Provides: bundled(through) = 2.3.8
+Provides: bundled(timers-browserify) = 2.0.10
+Provides: bundled(tmp) = 0.0.31
+Provides: bundled(tmp) = 0.0.33
+Provides: bundled(tmpl) = 1.0.4
+Provides: bundled(to-arraybuffer) = 1.0.1
+Provides: bundled(to-buffer) = 1.1.1
+Provides: bundled(to-fast-properties) = 1.0.3
+Provides: bundled(to-fast-properties) = 2.0.0
+Provides: bundled(to-object-path) = 0.3.0
+Provides: bundled(topo) = 3.0.0
+Provides: bundled(toposort) = 1.0.6
+Provides: bundled(to-regex) = 3.0.2
+Provides: bundled(to-regex-range) = 2.1.1
+Provides: bundled(tr46) = 1.0.1
+Provides: bundled(trim-right) = 1.0.1
+Provides: bundled(triple-beam) = 1.3.0
+Provides: bundled(ts-jest) = 23.10.4
+Provides: bundled(tslib) = 1.9.2
+Provides: bundled(tty-browserify) = 0.0.0
+Provides: bundled(tunnel-agent) = 0.6.0
+Provides: bundled(type-check) = 0.3.2
+Provides: bundled(typedarray) = 0.0.6
+Provides: bundled(type-detect) = 4.0.3
+Provides: bundled(type-detect) = type-detect
+Provides: bundled(type-is) = 1.6.16
+Provides: bundled(typescript) = 2.9.2
+Provides: bundled(uglify-es) = 3.3.9
+Provides: bundled(uglify-js) = 3.3.16
+Provides: bundled(uglifyjs-webpack-plugin) = 1.2.6
+Provides: bundled(unicode-canonical-property-names-ecmascript) = 1.0.3
+Provides: bundled(unicode-match-property-ecmascript) = 1.0.3
+Provides: bundled(unicode-match-property-value-ecmascript) = 1.0.1
+Provides: bundled(unicode-property-aliases-ecmascript) = 1.0.3
+Provides: bundled(union-value) = 1.0.0
+Provides: bundled(unique-filename) = 1.1.0
+Provides: bundled(unique-slug) = 2.0.0
+Provides: bundled(universalify) = 0.1.2
+Provides: bundled(unpipe) = 1.0.0
+Provides: bundled(unset-value) = 1.0.0
+Provides: bundled(upath) = 1.1.0
+Provides: bundled(upper-case) = 1.1.3
+Provides: bundled(urijs) = 1.19.1
+Provides: bundled(uri-js) = 3.0.2
+Provides: bundled(uri-js) = 4.2.2
+Provides: bundled(urix) = 0.1.0
+Provides: bundled(url) = 0.11.0
+Provides: bundled(urlgrey) = 0.4.4
+Provides: bundled(url-loader) = 1.1.2
+Provides: bundled(urlsafe-base64) = 1.0.0
+Provides: bundled(use) = 3.1.0
+Provides: bundled(utila) = 0.3.3
+Provides: bundled(utila) = 0.4.0
+Provides: bundled(util-deprecate) = 1.0.2
+Provides: bundled(util.promisify) = 1.0.0
+Provides: bundled(utils-merge) = 1.0.1
+Provides: bundled(uuid) = 3.1.0
+Provides: bundled(uuid) = 3.3.2
+Provides: bundled(v8-compile-cache) = 2.0.2
+Provides: bundled(validate-npm-package-license) = 3.0.1
+Provides: bundled(vary) = 1.1.2
+Provides: bundled(verror) = 1.10.0
+Provides: bundled(vm-browserify) = 0.0.4
+Provides: bundled(w3c-hr-time) = 1.0.1
+Provides: bundled(w3c-xmlserializer) = 1.0.1
+Provides: bundled(walker) = 1.0.7
+Provides: bundled(watch) = 0.18.0
+Provides: bundled(watchpack) = 1.6.0
+Provides: bundled(wdio-dot-reporter) = 0.0.9
+Provides: bundled(webdriverio) = 4.14.0
+Provides: bundled(webidl-conversions) = 4.0.2
+Provides: bundled(webpack) = 4.23.1
+Provides: bundled(webpack-cli) = 3.1.2
+Provides: bundled(webpack-log) = 1.2.0
+Provides: bundled(webpack-sources) = 1.1.0
+Provides: bundled(webpack-sources) = 1.3.0
+Provides: bundled(web-push) = 3.3.3
+Provides: bundled(wgxpath) = 1.0.0
+Provides: bundled(whatwg-encoding) = 1.0.1
+Provides: bundled(whatwg-encoding) = 1.0.5
+Provides: bundled(whatwg-mimetype) = 2.2.0
+Provides: bundled(whatwg-mimetype) = 2.3.0
+Provides: bundled(whatwg-url) = 6.5.0
+Provides: bundled(whatwg-url) = 7.0.0
+Provides: bundled(which) = 1.2.14
+Provides: bundled(which) = 1.3.0
+Provides: bundled(which-module) = 2.0.0
+Provides: bundled(wide-align) = 1.1.3
+Provides: bundled(winston) = 3.1.0
+Provides: bundled(winston-compat) = 0.1.4
+Provides: bundled(winston-daily-rotate-file) = 3.3.5
+Provides: bundled(winston-transport) = 4.2.0
+Provides: bundled(wordwrap) = 0.0.3
+Provides: bundled(wordwrap) = 1.0.0
+Provides: bundled(worker-farm) = 1.6.0
+Provides: bundled(wrap-ansi) = 2.1.0
+Provides: bundled(wrappy) = 1.0.2
+Provides: bundled(wreck) = 14.1.0
+Provides: bundled(write) = 0.2.1
+Provides: bundled(write-file-atomic) = 2.3.0
+Provides: bundled(ws) = 5.2.0
+Provides: bundled(ws) = 6.1.0
+Provides: bundled(ws) = 6.1.2
+Provides: bundled(xml2js) = 0.4.17
+Provides: bundled(xmlbuilder) = 4.2.1
+Provides: bundled(xml-char-classes) = 1.0.0
+Provides: bundled(xmlchars) = 1.3.1
+Provides: bundled(xml-name-validator) = 3.0.0
+Provides: bundled(xregexp) = 4.0.0
+Provides: bundled(xtend) = 4.0.1
+Provides: bundled(y18n) = 3.2.1
+Provides: bundled(y18n) = 4.0.0
+Provides: bundled(yallist) = 2.1.2
+Provides: bundled(yallist) = 3.0.2
+Provides: bundled(yargs) = 11.1.0
+Provides: bundled(yargs) = 12.0.2
+Provides: bundled(yargs-parser) = 10.1.0
+Provides: bundled(yargs-parser) = 9.0.2
+Provides: bundled(yauzl) = 2.9.1
+Provides: bundled(zip-stream) = 1.2.0
+Provides: bundled(zip-stream) = 2.0.1
+
+
+%description
+Web of Things gateway
+
+Example firewall setup (as root):
+firewall-cmd --add-port=4443/tcp --permanent
+firewall-cmd --add-port=8080/tcp --permanent
+firewall-cmd --add-port=5353/udp --permanent
+firewall-cmd --reload
+
+See README.md for configuration options
+
+
+%prep
+%autosetup -n %{npm_name}-%{version}
+
+#Fixup bad shebangs
+sed -i "s|/usr/bin/python$|/usr/bin/python3|" pagekite.py
+sed -i "s|/usr/bin/env python$|/usr/bin/python3|" $(grep -rl "/usr/bin/env python$" *)
+
+# Cleanup hidden files, backup files, permissions
+find . -type f -name '.*' -delete
+find . -name '*~' -delete
+find . -name '*.tgz' -delete
+rm -rf $(find . -type d -name '.[a-z]*' | grep -v .bin)
+rm -f $(find . -size 0 | grep -e package-lock -e core-js -e awesome -e lint.log -e output$)
+find . -name '*sh' ! -executable -exec chmod ugo+x {} \;
+find . -name '*sh' ! -executable -exec chmod ugo+x {} \;
+find . -name package.json -executable -exec chmod 644 {} \;
+chmod ugo+x $(grep -lr '#!/usr/bin/env node' * | grep -v -i readme)
+
+%build
+#nothing to do
+
+
+%install
+mkdir -p %{buildroot}%{nodejs_sitelib}/%{npm_name}
+cp -pr build config global.d.ts node_modules \
+ package.json pagekite.py run-app.sh src static tools \
+ %{buildroot}%{nodejs_sitelib}/%{npm_name}
+
+# Install systemd service file
+mkdir -p %{buildroot}%{_unitdir}
+install -p -m 644 %{SOURCE3} %{buildroot}%{_unitdir}/
+
+%pre
+getent group moz-iot-gateway >/dev/null || \
+ groupadd -r moz-iot-gateway
+getent passwd moz-iot-gateway >/dev/null || \
+ useradd -r -m -g moz-iot-gateway -s /sbin/nologin \
+ -c "user that runs mozilla-iot-gateway" moz-iot-gateway
+getent group dialout | grep -q moz-iot-gateway || \
+ usermod -aG dialout moz-iot-gateway
+exit 0
+
+%post
+%systemd_post mozilla-iot-gateway.service
+
+%preun
+%systemd_preun mozilla-iot-gateway.service
+
+%postun
+%systemd_postun_with_restart mozilla-iot-gateway.service
+
+%files
+%doc README.md
+%license LICENSE
+%{nodejs_sitelib}/%{npm_name}
+%{_unitdir}/mozilla-iot-gateway.service
+
+%changelog
+* Wed Mar 06 2019 Troy Dawson <tdawson(a)redhat.com> - 0.7.0-2
+- Cleanup hidden files, backup files, permissions
+- Cleanup some empty files, but not all
+
+* Fri Feb 01 2019 Troy Dawson <tdawson(a)redhat.com> - 0.7.0-1
+- Initial build with 0.7.0
+- Bundle nodejs dependencies
+- Unbundle binary (arch dependant) modules, add Requires for these.
+- Include licenses and Provides for bundled modules
+- Create user to run service in pre
+- Fix bad shebangs
diff --git a/sources b/sources
new file mode 100644
index 0000000..f8938cb
--- /dev/null
+++ b/sources
@@ -0,0 +1 @@
+SHA512 (gateway-v0.7.0.tar.gz) = 50e51526b873f74d83a6969eb92b519cc99ed40378d94c48a5ebe8c2fe4ae04269ac2b7407ad3d9bcf1a5eb1f26e8d16b807c58c685e4d5ded168c932e02fd8f
5 years, 1 month
Architecture specific change in rpms/ksh.git
by githook-noreply@fedoraproject.org
The package rpms/ksh.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/ksh.git/commit/?id=5a27982f5681c2....
Change:
-%ifarch s390
Thanks.
Full change:
============
commit 5a27982f5681c2738cc9155a0d4d9036f6c8e726
Author: Siteshwar Vashisht <svashisht(a)redhat.com>
Date: Wed Apr 17 14:00:25 2019 +0200
Rebase to 2020.0.0-alpha1
* All the downstream patches have been upstreamed, so they are being
removed with this commit.
* It introduces alternatives to switch between different versions of
ksh.
Resolves: #1700777
diff --git a/.gitignore b/.gitignore
index 6be3080..2d4ea2b 100644
--- a/.gitignore
+++ b/.gitignore
@@ -59,3 +59,4 @@ INIT.2010-07-01.tgz
/ast-ksh.2012-08-01.tgz
/INIT.2012-08-01.tgz
/ast-ksh.2012-08-01b.tgz
+/ksh-2020.0.0-alpha1.tar.gz
diff --git a/ksh-20070328-builtins.patch b/ksh-20070328-builtins.patch
deleted file mode 100644
index 061bf9a..0000000
--- a/ksh-20070328-builtins.patch
+++ /dev/null
@@ -1,11 +0,0 @@
-diff -up ksh-20080202/src/cmd/ksh93/data/builtins.c.builtins ksh-20080202/src/cmd/ksh93/data/builtins.c
---- ksh-20080202/src/cmd/ksh93/data/builtins.c.builtins 2008-10-01 09:24:46.000000000 +0200
-+++ ksh-20080202/src/cmd/ksh93/data/builtins.c 2008-10-01 09:24:58.000000000 +0200
-@@ -129,7 +129,6 @@ const struct shtable3 shtab_builtins[] =
- CMDLIST(dirname)
- CMDLIST(getconf)
- CMDLIST(head)
-- CMDLIST(mkdir)
- CMDLIST(logname)
- CMDLIST(cat)
- CMDLIST(cmp)
diff --git a/ksh-20080202-manfix.patch b/ksh-20080202-manfix.patch
deleted file mode 100644
index 8fe4225..0000000
--- a/ksh-20080202-manfix.patch
+++ /dev/null
@@ -1,47 +0,0 @@
-diff -up ksh-20120801/src/cmd/ksh93/sh.1.manfix ksh-20120801/src/cmd/ksh93/sh.1
---- ksh-20120801/src/cmd/ksh93/sh.1.manfix 2012-06-18 16:16:22.000000000 +0200
-+++ ksh-20120801/src/cmd/ksh93/sh.1 2013-04-30 13:35:17.393909479 +0200
-@@ -39,7 +39,7 @@ ksh93, rksh93, pfksh93 \- KornShell, a s
- .B ksh93
- .\}
- [
--.B \(+-abcefhikmnoprstuvxBCDP
-+.B \(+-abcefhiknoprstuvxBCDP
- ] [
- .B \-R
- file ] [
-@@ -47,25 +47,6 @@ file ] [
- option ] .\|.\|. [
- .B \-
- ] [ arg .\|.\|. ]
--.br
--.if \nZ=0 \{\
--.B rsh
--.\}
--.if \nZ=1 \{\
--.B rksh
--.\}
--.if \nZ=2 \{\
--.B rksh93
--.\}
--[
--.B \(+-abcefhikmnoprstuvxBCD
--] [
--.B \-R
--file ] [
--.B \(+-o
--option ] .\|.\|. [
--.B \-
--] [ arg .\|.\|. ]
- .SH DESCRIPTION
- .if \nZ=0 .I Sh\^
- .if \nZ=1 .I Ksh\^
-@@ -7963,6 +7944,8 @@ option is used
- to generate a cross reference database
- that can be used by a separate utility
- to find definitions and references for variables and commands.
-+The filename argument specifies the generated database. A script file must be
-+provided on the command line as well.
- .PP
- The remaining options and arguments are described under the
- .B set
diff --git a/ksh-20100202-pathvar.patch b/ksh-20100202-pathvar.patch
deleted file mode 100644
index 5086499..0000000
--- a/ksh-20100202-pathvar.patch
+++ /dev/null
@@ -1,20 +0,0 @@
-diff -up ksh-20100202/src/cmd/ksh93/sh.1.pathvar ksh-20100202/src/cmd/ksh93/sh.1
---- ksh-20100202/src/cmd/ksh93/sh.1.pathvar 2011-04-26 16:42:08.000000000 +0200
-+++ ksh-20100202/src/cmd/ksh93/sh.1 2011-04-27 09:09:00.315883280 +0200
-@@ -4025,13 +4025,9 @@ the directory containing the command.
- Alternative directory names are separated by
- a colon
- .RB ( : ).
--The default path is
--.B /bin:/usr/bin:
--(specifying
--.BR /bin ,
--.BR /usr/bin ,
--and the current directory
--in that order).
-+The default path is equal to
-+.BI getconf\ PATH
-+output.
- The current directory can be specified by
- two or more adjacent colons, or by a colon
- at the beginning or end of the path list.
diff --git a/ksh-20100621-fdstatus.patch b/ksh-20100621-fdstatus.patch
deleted file mode 100644
index 99abb55..0000000
--- a/ksh-20100621-fdstatus.patch
+++ /dev/null
@@ -1,54 +0,0 @@
-diff -up ksh-20120801/src/cmd/ksh93/sh/io.c.fdstatus ksh-20120801/src/cmd/ksh93/sh/io.c
---- ksh-20120801/src/cmd/ksh93/sh/io.c.fdstatus 2013-07-04 18:01:27.187516655 +0200
-+++ ksh-20120801/src/cmd/ksh93/sh/io.c 2013-07-04 18:01:38.249607392 +0200
-@@ -1508,7 +1508,7 @@ int sh_redirect(Shell_t *shp,struct iono
- fn = fd;
- if(fd<10)
- {
-- if((fn=fcntl(fd,F_DUPFD,10)) < 0)
-+ if((fn=sh_fcntl(fd,F_DUPFD,10)) < 0)
- goto fail;
- if(fn>=shp->gd->lim.open_max && !sh_iovalidfd(shp,fn))
- goto fail;
-diff -up ksh-20120801/src/cmd/ksh93/sh/subshell.c.fdstatus ksh-20120801/src/cmd/ksh93/sh/subshell.c
---- ksh-20120801/src/cmd/ksh93/sh/subshell.c.fdstatus 2012-07-17 23:54:21.000000000 +0200
-+++ ksh-20120801/src/cmd/ksh93/sh/subshell.c 2013-07-04 17:56:20.342000310 +0200
-@@ -122,7 +122,7 @@ void sh_subtmpfile(Shell_t *shp)
- register struct checkpt *pp = (struct checkpt*)shp->jmplist;
- register struct subshell *sp = subshell_data->pipe;
- /* save file descriptor 1 if open */
-- if((sp->tmpfd = fd = fcntl(1,F_DUPFD,10)) >= 0)
-+ if((sp->tmpfd = fd = sh_fcntl(1,F_DUPFD,10)) >= 0)
- {
- fcntl(fd,F_SETFD,FD_CLOEXEC);
- shp->fdstatus[fd] = shp->fdstatus[1]|IOCLEX;
-@@ -554,7 +554,7 @@ Sfio_t *sh_subshell(Shell_t *shp,Shnode_
- sp->pwdfd = n;
- if(n<10)
- {
-- sp->pwdfd = fcntl(n,F_DUPFD,10);
-+ sp->pwdfd = sh_fcntl(n,F_DUPFD,10);
- close(n);
- }
- if(sp->pwdfd>0)
-diff -up ksh-20120801/src/cmd/ksh93/sh/xec.c.fdstatus ksh-20120801/src/cmd/ksh93/sh/xec.c
---- ksh-20120801/src/cmd/ksh93/sh/xec.c.fdstatus 2012-07-23 16:49:32.000000000 +0200
-+++ ksh-20120801/src/cmd/ksh93/sh/xec.c 2013-07-04 17:57:47.153712116 +0200
-@@ -116,7 +116,7 @@ static int iousepipe(Shell_t *shp)
- return(0);
- usepipe++;
- fcntl(subpipe[0],F_SETFD,FD_CLOEXEC);
-- subpipe[2] = fcntl(1,F_DUPFD,10);
-+ subpipe[2] = sh_fcntl(1,F_DUPFD,10);
- fcntl(subpipe[2],F_SETFD,FD_CLOEXEC);
- shp->fdstatus[subpipe[2]] = shp->fdstatus[1];
- close(1);
-@@ -3622,7 +3622,7 @@ static void coproc_init(Shell_t *shp, in
- sh_pipe(shp->cpipe);
- if((outfd=shp->cpipe[1]) < 10)
- {
-- int fd=fcntl(shp->cpipe[1],F_DUPFD,10);
-+ int fd=sh_fcntl(shp->cpipe[1],F_DUPFD,10);
- if(fd>=10)
- {
- shp->fdstatus[fd] = (shp->fdstatus[outfd]&~IOCLEX);
diff --git a/ksh-20100621-manfix3.patch b/ksh-20100621-manfix3.patch
deleted file mode 100644
index bced575..0000000
--- a/ksh-20100621-manfix3.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -up ksh-20100621/src/cmd/ksh93/sh.1.manfix3 ksh-20100621/src/cmd/ksh93/sh.1
---- ksh-20100621/src/cmd/ksh93/sh.1.manfix3 2013-05-02 13:07:51.180529762 +0200
-+++ ksh-20100621/src/cmd/ksh93/sh.1 2013-05-02 13:11:30.469327199 +0200
-@@ -7585,7 +7585,7 @@ file descriptor 2.
- If the
- .B \-i
- option is present or
--if the shell input and output are attached to a terminal (as told by
-+if the shell input and error output are attached to a terminal (as told by
- .IR tcgetattr (2)),
- then this shell is
- .IR interactive .
diff --git a/ksh-20100826-fixregr.patch b/ksh-20100826-fixregr.patch
deleted file mode 100644
index 87cb13c..0000000
--- a/ksh-20100826-fixregr.patch
+++ /dev/null
@@ -1,68 +0,0 @@
-diff -up ksh-20120801/src/cmd/ksh93/tests/builtins.sh.fixregr ksh-20120801/src/cmd/ksh93/tests/builtins.sh
---- ksh-20120801/src/cmd/ksh93/tests/builtins.sh.fixregr 2012-07-16 17:23:56.000000000 +0200
-+++ ksh-20120801/src/cmd/ksh93/tests/builtins.sh 2012-08-08 12:29:00.733243019 +0200
-@@ -303,9 +303,9 @@ then err_exit "printf '%..*s' not workin
- fi
- [[ $(printf '%q\n') == '' ]] || err_exit 'printf "%q" with missing arguments'
- # we won't get hit by the one second boundary twice, right?
--[[ $(printf '%T\n' now) == "$(date)" ]] ||
--[[ $(printf '%T\n' now) == "$(date)" ]] ||
--err_exit 'printf "%T" now'
-+[[ $(printf '%T\n' now | sed 's/GMT/UTC/') == "$(date)" ]] ||
-+[[ $(printf '%T\n' now | sed 's/GMT/UTC/') == "$(date)" ]] ||
-+err_exit 'printf "%T" now = '"$(printf '%T\n' now) != $(date)"
- behead()
- {
- read line
-diff -up ksh-20120801/src/cmd/ksh93/tests/locale.sh.fixregr ksh-20120801/src/cmd/ksh93/tests/locale.sh
---- ksh-20120801/src/cmd/ksh93/tests/locale.sh.fixregr 2012-06-26 21:57:46.000000000 +0200
-+++ ksh-20120801/src/cmd/ksh93/tests/locale.sh 2012-08-08 12:29:20.039405240 +0200
-@@ -104,6 +104,7 @@ if (( $($SHELL -c $'export LC_ALL='$loca
- then LC_ALL=$locale $SHELL -c b1=$'"\342\202\254\342\202\254\342\202\254\342\202\254w\342\202\254\342\202\254\342\202\254\342\202\254"; [[ ${b1:4:1} == w ]]' || err_exit 'multibyte ${var:offset:len} not working correctly'
- fi
-
-+locale=en_US.UTF-8
- #$SHELL -c 'export LANG='$locale'; printf "\u[20ac]\u[20ac]" > $tmp/two_euro_chars.txt'
- printf $'\342\202\254\342\202\254' > $tmp/two_euro_chars.txt
- exp="6 2 6"
-@@ -111,11 +112,11 @@ set -- $($SHELL -c "
- unset LC_CTYPE
- export LANG=$locale
- export LC_ALL=C
-- command wc -C < $tmp/two_euro_chars.txt
-+ command wc -m < $tmp/two_euro_chars.txt
- unset LC_ALL
-- command wc -C < $tmp/two_euro_chars.txt
-+ command wc -m < $tmp/two_euro_chars.txt
- export LC_ALL=C
-- command wc -C < $tmp/two_euro_chars.txt
-+ command wc -m < $tmp/two_euro_chars.txt
- ")
- got=$*
- [[ $got == $exp ]] || err_exit "command wc LC_ALL default failed -- expected '$exp', got '$got'"
-@@ -134,6 +135,8 @@ set -- $($SHELL -c "
- got=$*
- [[ $got == $exp ]] || err_exit "builtin wc LC_ALL default failed -- expected '$exp', got '$got'"
-
-+locale=C_EU.UTF-8
-+
- # multibyte char straddling buffer boundary
-
- {
-@@ -190,6 +193,7 @@ do exp=$1
- done
-
- # setocale(LC_ALL,"") after setlocale() initialization
-+locale=en_US.UTF-8
-
- printf 'f1\357\274\240f2\n' > input1
- printf 't2\357\274\240f1\n' > input2
-@@ -336,7 +340,7 @@ then LC_ALL=en_US.UTF-8
- [[ $(print -r -- "$x") == $'hello\u[20ac]\xee world' ]] || err_exit '%q with unicode and non-unicode not working'
- if [[ $(whence od) ]]
- then got='68 65 6c 6c 6f e2 82 ac ee 20 77 6f 72 6c 64 0a'
-- [[ $(print -r -- "$x" | od -An -tx1) == "$got" ]] || err_exit "incorrect string from printf %q"
-+ [[ $(print -r -- "$x" | od -An -tx1) =~ $got ]] || err_exit "incorrect string from printf %q"
- fi
-
- fi
diff --git a/ksh-20120801-F_dupfd_cloexec.patch b/ksh-20120801-F_dupfd_cloexec.patch
deleted file mode 100644
index 7a034b3..0000000
--- a/ksh-20120801-F_dupfd_cloexec.patch
+++ /dev/null
@@ -1,22 +0,0 @@
-diff -up ksh-20120801/src/cmd/ksh93/sh/io.c.orig ksh-20120801/src/cmd/ksh93/sh/io.c
---- ksh-20120801/src/cmd/ksh93/sh/io.c.orig 2015-08-12 11:35:36.882268954 -0300
-+++ ksh-20120801/src/cmd/ksh93/sh/io.c 2015-08-12 11:44:06.324587019 -0300
-@@ -2580,10 +2580,18 @@ int sh_fcntl(register int fd, int op, ..
- if(newfd>=0) switch(op)
- {
- case F_DUPFD:
-+#if F_dupfd_cloexec != F_DUPFD
-+ case F_dupfd_cloexec:
-+#endif
- if(shp->fdstatus[fd] == IOCLOSE)
- shp->fdstatus[fd] = 0;
- if(newfd>=shp->gd->lim.open_max)
- sh_iovalidfd(shp,newfd);
-+#if F_dupfd_cloexec != F_DUPFD
-+ if(op==F_dupfd_cloexec)
-+ shp->fdstatus[newfd] = (shp->fdstatus[fd]|IOCLEX);
-+ else
-+#endif
- shp->fdstatus[newfd] = (shp->fdstatus[fd]&~IOCLEX);
- if(fdnotify)
- (*fdnotify)(fd,newfd);
diff --git a/ksh-20120801-alarmifs.patch b/ksh-20120801-alarmifs.patch
deleted file mode 100644
index 88b0ba9..0000000
--- a/ksh-20120801-alarmifs.patch
+++ /dev/null
@@ -1,33 +0,0 @@
---- ksh-20120801/src/cmd/ksh93/sh/init.c 2014-12-10 20:11:17.693446084 -0200
-+++ ksh-20120801/src/cmd/ksh93/sh/init.c 2014-12-10 20:11:24.753442619 -0200
-@@ -576,6 +576,7 @@ static char* get_ifs(register Namval_t*
- shp->ifstable[' '] = shp->ifstable['\t'] = S_SPACE;
- shp->ifstable['\n'] = S_NL;
- }
-+ shp->ifstable[0] = S_EOF;
- }
- return(value);
- }
---- ksh-20120801/src/cmd/ksh93/bltins/alarm.c 2014-12-18 12:03:39.198461933 -0200
-+++ ksh-20120801/src/cmd/ksh93/bltins/alarm.c 2014-12-18 12:04:32.464421268 -0200
-@@ -130,6 +130,7 @@ void sh_timetraps(Shell_t *shp)
- {
- register struct tevent *tp, *tpnext;
- register struct tevent *tptop;
-+ char ifstable[256];
- while(1)
- {
- shp->sigflag[SIGALRM] &= ~SH_SIGALRM;
-@@ -141,7 +142,11 @@ void sh_timetraps(Shell_t *shp)
- {
- tp->flags &= ~L_FLAG;
- if(tp->action)
-+ {
-+ memcpy(ifstable,shp->ifstable,sizeof(ifstable));
- sh_fun(tp->action,tp->node,(char**)0);
-+ memcpy(shp->ifstable,ifstable,sizeof(ifstable));
-+ }
- tp->flags &= ~L_FLAG;
- if(!tp->flags)
- {
-
diff --git a/ksh-20120801-argvfix.patch b/ksh-20120801-argvfix.patch
deleted file mode 100644
index b0e1a78..0000000
--- a/ksh-20120801-argvfix.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-diff -up ksh-20120801/src/cmd/ksh93/sh/main.c.fixargs ksh-20120801/src/cmd/ksh93/sh/main.c
---- ksh-20120801/src/cmd/ksh93/sh/main.c.fixargs 2013-12-31 11:32:14.917874134 +0100
-+++ ksh-20120801/src/cmd/ksh93/sh/main.c 2013-12-31 11:32:58.028847126 +0100
-@@ -757,7 +757,7 @@ static void fixargs(char **argv, int mod
- offset += size;
- buff[offset++] = ' ';
- }
-- buff[offset-1] = 0;
-+ memset(&buff[offset - 1], 0, command_len - offset + 1);
- # ifdef PSTAT
- un.pst_command = stakptr(0);
- pstat(PSTAT_SETCMD,un,0,0,0);
-
diff --git a/ksh-20120801-assoc-unset-leak.patch b/ksh-20120801-assoc-unset-leak.patch
deleted file mode 100644
index 1af7d16..0000000
--- a/ksh-20120801-assoc-unset-leak.patch
+++ /dev/null
@@ -1,20 +0,0 @@
-diff -up ksh-20120801/src/cmd/ksh93/sh/name.c.orig ksh-20120801/src/cmd/ksh93/sh/name.c
---- ksh-20120801/src/cmd/ksh93/sh/name.c.orig 2015-02-10 17:15:37.180783550 -0200
-+++ ksh-20120801/src/cmd/ksh93/sh/name.c 2015-02-10 18:25:51.726228437 -0200
-@@ -1298,7 +1298,16 @@ void nv_delete(Namval_t* np, Dt_t *root,
- if(dtdelete(root,np))
- {
- if(!(flags&NV_NOFREE) && ((flags&NV_FUNCTION) || !nv_subsaved(np,flags&NV_TABLE)))
-+ {
-+ Namarr_t *ap;
-+ if(nv_isarray(np) && np->nvfun && (ap=nv_arrayptr(np)) && array_assoc(ap)) {
-+ while(nv_associative(np,0,NV_ANEXT))
-+ nv_associative(np, 0, NV_ADELETE);
-+ nv_associative(np, 0, NV_AFREE);
-+ free((void*)np->nvfun);
-+ }
- free((void*)np);
-+ }
- }
- #if 0
- else
diff --git a/ksh-20120801-badgcc.patch b/ksh-20120801-badgcc.patch
deleted file mode 100644
index cd26316..0000000
--- a/ksh-20120801-badgcc.patch
+++ /dev/null
@@ -1,22 +0,0 @@
-diff -up ksh-20120801/src/lib/libast/string/strdup.c.badgcc ksh-20120801/src/lib/libast/string/strdup.c
---- ksh-20120801/src/lib/libast/string/strdup.c.badgcc 2012-05-21 15:04:46.000000000 +0200
-+++ ksh-20120801/src/lib/libast/string/strdup.c 2015-06-17 10:12:52.693922581 +0200
-@@ -50,11 +50,18 @@ __STDPP__directive pragma pp:nohide strd
- #define extern __EXPORT__
- #endif
-
-+#pragma GCC push_options
-+#pragma GCC optimize ("O0")
-+
-+
- extern char*
- strdup(register const char* s)
- {
- register char* t;
- register int n;
-
- return (s && (t = oldof(0, char, n = strlen(s) + 1, 0))) ? (char*)memcpy(t, s, n) : (char*)0;
- }
-+
-+#pragma GCC pop_options
-+
diff --git a/ksh-20120801-ccflags.patch b/ksh-20120801-ccflags.patch
deleted file mode 100644
index b95db66..0000000
--- a/ksh-20120801-ccflags.patch
+++ /dev/null
@@ -1,21 +0,0 @@
-diff --git a/src/cmd/ksh93/Mamfile b/src/cmd/ksh93/Mamfile
---- a/src/cmd/ksh93/Mamfile
-+++ b/src/cmd/ksh93/Mamfile
-@@ -1111,7 +1111,7 @@ prev include/defs.h implicit
- done sh/trestore.c
- meta trestore.o %.c>%.o sh/trestore.c trestore
- prev sh/trestore.c
--exec - ${CC} ${mam_cc_FLAGS} ${-debug-symbols?1?${mam_cc_DEBUG} -D_BLD_DEBUG?${CCFLAGS.FORCE}?} ${SHOPT_BASH+-DSHOPT_BASH=${SHOPT_BASH}} ${SHOPT_SYSRC+-DSHOPT_SYSRC=${SHOPT_SYSRC}} ${SHOPT_ACCT+-DSHOPT_ACCT=${SHOPT_ACCT}} ${SHOPT_SPAWN+-DSHOPT_SPAWN=${SHOPT_SPAWN}} ${SH_CMDLIB_DIR+-DSH_CMDLIB_DIR=${SH_CMDLIB_DIR}} ${SH_DICT+-DSH_DICT=${SH_DICT}} ${SHOPT_P_SUID+-DSHOPT_P_SUID=${SHOPT_P_SUID}} ${SHOPT_REGRESS+-DSHOPT_REGRESS=${SHOPT_REGRESS}} -I. -Iinclude -I${PACKAGE_ast_INCLUDE} -D_BLD_shell -DKSHELL -D_API_ast=20100309 -D_PACKAGE_ast -DSHOPT_SUID_EXEC -DSHOPT_BRACEPAT -DSHOPT_STATS -DSHOPT_NAMESPACE -DSHOPT_COSHELL -DSHOPT_PFSH -DSHOPT_HISTEXPAND -DERROR_CONTEXT_T=Error_context_t -DSHOPT_FIXEDARRAY -DSHOPT_ESH -DSHOPT_MULTIBYTE -c sh/trestore.c
-+exec - ${CC} ${mam_cc_FLAGS} ${CCFLAGS} ${-debug-symbols?1?${mam_cc_DEBUG} -D_BLD_DEBUG?${CCFLAGS.FORCE}?} ${SHOPT_BASH+-DSHOPT_BASH=${SHOPT_BASH}} ${SHOPT_SYSRC+-DSHOPT_SYSRC=${SHOPT_SYSRC}} ${SHOPT_ACCT+-DSHOPT_ACCT=${SHOPT_ACCT}} ${SHOPT_SPAWN+-DSHOPT_SPAWN=${SHOPT_SPAWN}} ${SH_CMDLIB_DIR+-DSH_CMDLIB_DIR=${SH_CMDLIB_DIR}} ${SH_DICT+-DSH_DICT=${SH_DICT}} ${SHOPT_P_SUID+-DSHOPT_P_SUID=${SHOPT_P_SUID}} ${SHOPT_REGRESS+-DSHOPT_REGRESS=${SHOPT_REGRESS}} -I. -Iinclude -I${PACKAGE_ast_INCLUDE} -D_BLD_shell -DKSHELL -D_API_ast=20100309 -D_PACKAGE_ast -DSHOPT_SUID_EXEC -DSHOPT_BRACEPAT -DSHOPT_STATS -DSHOPT_NAMESPACE -DSHOPT_COSHELL -DSHOPT_PFSH -DSHOPT_HISTEXPAND -DERROR_CONTEXT_T=Error_context_t -DSHOPT_FIXEDARRAY -DSHOPT_ESH -DSHOPT_MULTIBYTE -c sh/trestore.c
- done trestore.o generated
- make waitevent.o
- make sh/waitevent.c
-@@ -1199,7 +1199,7 @@ prev ${PACKAGE_ast_INCLUDE}/ast_standards.h implicit
- done data/strdata.c
- meta strdata.o %.c>%.o data/strdata.c strdata
- prev data/strdata.c
--exec - ${CC} ${mam_cc_FLAGS} ${-debug-symbols?1?${mam_cc_DEBUG} -D_BLD_DEBUG?${CCFLAGS.FORCE}?} ${SHOPT_BASH+-DSHOPT_BASH=${SHOPT_BASH}} ${SH_CMDLIB_DIR+-DSH_CMDLIB_DIR=${SH_CMDLIB_DIR}} ${SH_DICT+-DSH_DICT=${SH_DICT}} ${SHOPT_P_SUID+-DSHOPT_P_SUID=${SHOPT_P_SUID}} ${SHOPT_REGRESS+-DSHOPT_REGRESS=${SHOPT_REGRESS}} -I. -Iinclude -I${PACKAGE_ast_INCLUDE} -DSHOPT_STATS -DSHOPT_NAMESPACE -DSHOPT_COSHELL -DSHOPT_PFSH -DSHOPT_HISTEXPAND -D_BLD_shell -D_API_ast=20100309 -D_PACKAGE_ast -DERROR_CONTEXT_T=Error_context_t -DSHOPT_FIXEDARRAY -DSHOPT_ESH -DSHOPT_MULTIBYTE -c data/strdata.c
-+exec - ${CC} ${mam_cc_FLAGS} ${CCFLAGS} ${-debug-symbols?1?${mam_cc_DEBUG} -D_BLD_DEBUG?${CCFLAGS.FORCE}?} ${SHOPT_BASH+-DSHOPT_BASH=${SHOPT_BASH}} ${SH_CMDLIB_DIR+-DSH_CMDLIB_DIR=${SH_CMDLIB_DIR}} ${SH_DICT+-DSH_DICT=${SH_DICT}} ${SHOPT_P_SUID+-DSHOPT_P_SUID=${SHOPT_P_SUID}} ${SHOPT_REGRESS+-DSHOPT_REGRESS=${SHOPT_REGRESS}} -I. -Iinclude -I${PACKAGE_ast_INCLUDE} -DSHOPT_STATS -DSHOPT_NAMESPACE -DSHOPT_COSHELL -DSHOPT_PFSH -DSHOPT_HISTEXPAND -D_BLD_shell -D_API_ast=20100309 -D_PACKAGE_ast -DERROR_CONTEXT_T=Error_context_t -DSHOPT_FIXEDARRAY -DSHOPT_ESH -DSHOPT_MULTIBYTE -c data/strdata.c
- done strdata.o generated
- make testops.o
- make data/testops.c
diff --git a/ksh-20120801-cdfix.patch b/ksh-20120801-cdfix.patch
deleted file mode 100644
index 59265dd..0000000
--- a/ksh-20120801-cdfix.patch
+++ /dev/null
@@ -1,14 +0,0 @@
-diff -up ksh-20120801/src/cmd/ksh93/bltins/cd_pwd.c.cdfix ksh-20120801/src/cmd/ksh93/bltins/cd_pwd.c
---- ksh-20120801/src/cmd/ksh93/bltins/cd_pwd.c.cdfix 2013-02-01 16:04:55.507150242 +0100
-+++ ksh-20120801/src/cmd/ksh93/bltins/cd_pwd.c 2013-02-01 16:06:39.361007641 +0100
-@@ -214,7 +214,10 @@ int b_cd(int argc, char *argv[],Shbltin_
- if(*++dp=='.' && (*++dp=='/' || *dp==0))
- n++;
- else if(*dp && *dp!='/')
-+ {
-+ dp--;
- break;
-+ }
- if(*dp==0)
- break;
- }
diff --git a/ksh-20120801-cdfix2.patch b/ksh-20120801-cdfix2.patch
deleted file mode 100644
index 84bb491..0000000
--- a/ksh-20120801-cdfix2.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-diff -up ksh-20120801/src/cmd/ksh93/bltins/cd_pwd.c.cdfix2 ksh-20120801/src/cmd/ksh93/bltins/cd_pwd.c
---- ksh-20120801/src/cmd/ksh93/bltins/cd_pwd.c.cdfix2 2013-02-01 16:46:50.441771371 +0100
-+++ ksh-20120801/src/cmd/ksh93/bltins/cd_pwd.c 2013-02-01 16:57:43.241784024 +0100
-@@ -61,6 +61,7 @@ int sh_diropenat(Shell_t *shp, int dir,
- {
- int fd,shfd;
- int savederrno=errno;
-+ struct stat fs;
- #ifndef AT_FDCWD
- NOT_USED(dir);
- #endif
-@@ -133,6 +134,13 @@ int sh_diropenat(Shell_t *shp, int dir,
-
- if(fd < 0)
- return fd;
-+
-+ if (!fstat(fd, &fs) && !S_ISDIR(fs.st_mode))
-+ {
-+ close(fd);
-+ errno = ENOTDIR;
-+ return -1;
-+ }
-
- /* Move fd to a number > 10 and *register* the fd number with the shell */
- shfd = sh_fcntl(fd, F_dupfd_cloexec, 10);
diff --git a/ksh-20120801-cdfix3.patch b/ksh-20120801-cdfix3.patch
deleted file mode 100644
index 7e47f71..0000000
--- a/ksh-20120801-cdfix3.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -up ksh-20120801/src/cmd/ksh93/bltins/cd_pwd.c.cdfix3 ksh-20120801/src/cmd/ksh93/bltins/cd_pwd.c
---- ksh-20120801/src/cmd/ksh93/bltins/cd_pwd.c.cdfix3 2014-06-20 12:39:02.757407689 +0200
-+++ ksh-20120801/src/cmd/ksh93/bltins/cd_pwd.c 2014-06-20 12:40:19.530998070 +0200
-@@ -290,7 +290,7 @@ int b_cd(int argc, char *argv[],Shbltin_
- if(newdirfd >=0)
- {
- /* chdir for directories on HSM/tapeworms may take minutes */
-- if(fchdir(newdirfd) >= 0)
-+ if((rval=fchdir(newdirfd)) >= 0)
- {
- if(shp->pwdfd >= 0)
- sh_close(shp->pwdfd);
diff --git a/ksh-20120801-cdfork.patch b/ksh-20120801-cdfork.patch
deleted file mode 100644
index c82cb4c..0000000
--- a/ksh-20120801-cdfork.patch
+++ /dev/null
@@ -1,40 +0,0 @@
---- ksh-20120801/src/cmd/ksh93/sh/path.c 2014-09-01 15:08:06.738969962 -0300
-+++ ksh-20120801/src/cmd/ksh93/sh/path.c 2014-09-01 15:13:51.321459978 -0300
-@@ -229,13 +229,12 @@ static pid_t path_xargs(Shell_t *shp,con
- /*
- * make sure PWD is set up correctly
- * Return the present working directory
-- * Invokes getcwd() if flag==0 and if necessary
-+ * Invokes getcwd() if necessary
- * Sets the PWD variable to this value
- */
- char *path_pwd(Shell_t *shp,int flag)
- {
- register char *cp;
-- register char *dfault = (char*)e_dot;
- register int count = 0;
- if(shp->pwd)
- return((char*)shp->pwd);
-@@ -254,11 +253,6 @@ char *path_pwd(Shell_t *shp,int flag)
- cp = "/";
- break;
- case 3:
-- cp = (char*)e_crondir;
-- if(flag) /* skip next case when non-zero flag */
-- ++count;
-- break;
-- case 4:
- {
- if(cp=getcwd(NIL(char*),0))
- {
-@@ -269,8 +263,8 @@ char *path_pwd(Shell_t *shp,int flag)
- }
- break;
- }
-- case 5:
-+ case 4:
-- return(dfault);
-+ return((char*)e_dot);
- }
- if(cp && *cp=='/' && test_inode(cp,e_dot))
- break;
diff --git a/ksh-20120801-covsfix.patch b/ksh-20120801-covsfix.patch
deleted file mode 100644
index c64e2a7..0000000
--- a/ksh-20120801-covsfix.patch
+++ /dev/null
@@ -1,58 +0,0 @@
-diff -up ksh-20120801/src/cmd/ksh93/sh/init.c.covsfix ksh-20120801/src/cmd/ksh93/sh/init.c
---- ksh-20120801/src/cmd/ksh93/sh/init.c.covsfix 2013-07-22 17:41:34.674054068 +0200
-+++ ksh-20120801/src/cmd/ksh93/sh/init.c 2013-07-22 17:42:50.761361921 +0200
-@@ -1237,9 +1237,11 @@ static void put_mode(Namval_t* np, const
- mode = *(double*)val;
- }
- else
-+ {
- mode = strperm(val, &last,0);
-- if(*last)
-- errormsg(SH_DICT,ERROR_exit(1),"%s: invalid mode string",val);
-+ if(*last)
-+ errormsg(SH_DICT,ERROR_exit(1),"%s: invalid mode string",val);
-+ }
- nv_putv(np,(char*)&mode,NV_INTEGER,nfp);
- }
- else
-diff -up ksh-20120801/src/cmd/ksh93/sh/io.c.covsfix ksh-20120801/src/cmd/ksh93/sh/io.c
---- ksh-20120801/src/cmd/ksh93/sh/io.c.covsfix 2013-07-22 17:06:30.282927080 +0200
-+++ ksh-20120801/src/cmd/ksh93/sh/io.c 2013-07-22 17:08:49.645721280 +0200
-@@ -954,6 +954,7 @@ int sh_pipe(register int pv[])
- socklen_t slen;
- if ((pv[out] = socket (AF_INET, SOCK_STREAM, 0)) < 0)
- errormsg(SH_DICT,ERROR_system(1),e_pipe);
-+ memset(&sin.sin_zero, 0, sizeof(sin.sin_zero));
- do
- {
- sin.sin_family = AF_INET;
-diff -up ksh-20120801/src/cmd/ksh93/sh/name.c.covsfix ksh-20120801/src/cmd/ksh93/sh/name.c
---- ksh-20120801/src/cmd/ksh93/sh/name.c.covsfix 2013-07-22 17:40:31.644635604 +0200
-+++ ksh-20120801/src/cmd/ksh93/sh/name.c 2013-07-22 17:41:15.828227073 +0200
-@@ -3094,6 +3094,7 @@ void nv_newattr (register Namval_t *np,
- if(!mp)
- nv_putval (np, cp, NV_RDONLY);
- free(cp);
-+ cp = NULL;
- }
- }
- while(ap && nv_nextsub(np));
-diff -up ksh-20120801/src/cmd/ksh93/sh/subshell.c.covsfix ksh-20120801/src/cmd/ksh93/sh/subshell.c
---- ksh-20120801/src/cmd/ksh93/sh/subshell.c.covsfix 2013-07-22 17:46:15.607533423 +0200
-+++ ksh-20120801/src/cmd/ksh93/sh/subshell.c 2013-07-22 17:48:36.739290968 +0200
-@@ -205,7 +205,14 @@ void sh_subfork(void)
- shp->comsub = 0;
- SH_SUBSHELLNOD->nvalue.s = 0;
- sp->subpid=0;
-- shp->st.trapcom[0] = (comsub==2?NULL:trap);
-+ if (comsub==2)
-+ {
-+ shp->st.trapcom[0] = NULL;
-+ if(trap)
-+ free((void*)trap);
-+ }
-+ else
-+ shp->st.trapcom[0] = (comsub==2?NULL:trap);
- shp->savesig = 0;
- }
- }
diff --git a/ksh-20120801-crash.patch b/ksh-20120801-crash.patch
deleted file mode 100644
index 37b7962..0000000
--- a/ksh-20120801-crash.patch
+++ /dev/null
@@ -1,64 +0,0 @@
-diff -up ksh-20120801/src/cmd/ksh93/include/jobs.h.crash ksh-20120801/src/cmd/ksh93/include/jobs.h
---- ksh-20120801/src/cmd/ksh93/include/jobs.h.crash 2014-07-22 11:48:57.205062905 +0200
-+++ ksh-20120801/src/cmd/ksh93/include/jobs.h 2014-07-22 11:48:57.243062711 +0200
-@@ -118,6 +118,7 @@ struct jobs
- char jobcontrol; /* turned on for real job control */
- char waitsafe; /* wait will not block */
- char waitall; /* wait for all jobs in pipe */
-+ char hack1_waitall;
- char toclear; /* job table needs clearing */
- unsigned char *freejobs; /* free jobs numbers */
- #if SHOPT_COSHELL
-diff -up ksh-20120801/src/cmd/ksh93/sh/jobs.c.crash ksh-20120801/src/cmd/ksh93/sh/jobs.c
---- ksh-20120801/src/cmd/ksh93/sh/jobs.c.crash 2014-07-22 11:48:57.190062982 +0200
-+++ ksh-20120801/src/cmd/ksh93/sh/jobs.c 2014-07-22 11:48:57.243062711 +0200
-@@ -1957,6 +1957,7 @@ again:
- {
- count = bp->count;
- jp = bp->list;
-+ jpold = 0;
- goto again;
- }
- if(jp)
-diff -up ksh-20120801/src/cmd/ksh93/sh/subshell.c.crash ksh-20120801/src/cmd/ksh93/sh/subshell.c
---- ksh-20120801/src/cmd/ksh93/sh/subshell.c.crash 2014-07-22 11:48:57.234062758 +0200
-+++ ksh-20120801/src/cmd/ksh93/sh/subshell.c 2014-07-22 11:54:04.164491483 +0200
-@@ -492,6 +492,7 @@ Sfio_t *sh_subshell(Shell_t *shp,Shnode_
- struct sh_scoped savst;
- struct dolnod *argsav=0;
- int argcnt;
-+ int pipefail = 0;
- memset((char*)sp, 0, sizeof(*sp));
- sfsync(shp->outpool);
- sh_sigcheck(shp);
-@@ -541,7 +542,10 @@ Sfio_t *sh_subshell(Shell_t *shp,Shnode_
- sp->comsub = shp->comsub;
- shp->subshare = comsub==2 || (comsub==1 && sh_isoption(SH_SUBSHARE));
- if(comsub)
-+ {
- shp->comsub = comsub;
-+ job.hack1_waitall=(comsub==1);
-+ }
- sp->shpwdfd=-1;
- if(!comsub || !shp->subshare)
- {
-@@ -648,6 +652,7 @@ Sfio_t *sh_subshell(Shell_t *shp,Shnode_
- }
- else
- {
-+ job.hack1_waitall=0;
- if(comsub!=1 && shp->spid)
- {
- job_wait(shp->spid);
-diff -up ksh-20120801/src/cmd/ksh93/sh/xec.c.crash ksh-20120801/src/cmd/ksh93/sh/xec.c
---- ksh-20120801/src/cmd/ksh93/sh/xec.c.crash 2014-07-22 11:48:57.228062787 +0200
-+++ ksh-20120801/src/cmd/ksh93/sh/xec.c 2014-07-22 11:48:57.245062700 +0200
-@@ -2125,7 +2125,7 @@ int sh_exec(register const Shnode_t *t,
- memset(exitval,0,job.waitall*sizeof(int));
- }
- else
-- job.waitall |= !pipejob && sh_isstate(SH_MONITOR);
-+ job.waitall |= job.hack1_waitall || !pipejob && sh_isstate(SH_MONITOR);
- job_lock();
- nlock++;
- do
diff --git a/ksh-20120801-dotdoublefree.patch b/ksh-20120801-dotdoublefree.patch
deleted file mode 100644
index bf29cb1..0000000
--- a/ksh-20120801-dotdoublefree.patch
+++ /dev/null
@@ -1,19 +0,0 @@
-diff --git a/src/cmd/ksh93/sh/xec.c b/src/cmd/ksh93/sh/xec.c
-index 1ba7347..ab745d4 100644
---- a/src/cmd/ksh93/sh/xec.c
-+++ b/src/cmd/ksh93/sh/xec.c
-@@ -640,7 +640,11 @@ int sh_eval(register Sfio_t *iop, int mode)
- if(lineno)
- shp->inlineno = lineno;
- if(io_save)
-+ {
- sfclose(io_save);
-+ io_save = 0;
-+ }
-+
- sh_freeup(shp);
- shp->st.staklist = saveslp;
- shp->fn_reset = 0;
---
-2.9.3
-
diff --git a/ksh-20120801-emptyarrayinit.patch b/ksh-20120801-emptyarrayinit.patch
deleted file mode 100644
index c888b31..0000000
--- a/ksh-20120801-emptyarrayinit.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- ksh-20120801/src/cmd/ksh93/sh/array.c 2014-12-11 16:39:34.253860675 -0200
-+++ ksh-20120801/src/cmd/ksh93/sh/array.c 2014-12-11 16:39:40.794857083 -0200
-@@ -1003,7 +1003,7 @@ Namarr_t *nv_setarray(Namval_t *np, void
- ap->nelem = nelem;
- ap->fun = fun;
- nv_onattr(np,NV_ARRAY);
-- if(fp || value)
-+ if(fp || (value && value != Empty))
- {
- nv_putsub(np, "0", ARRAY_ADD);
- if(value)
diff --git a/ksh-20120801-fd2lost.patch b/ksh-20120801-fd2lost.patch
deleted file mode 100644
index 0605f6e..0000000
--- a/ksh-20120801-fd2lost.patch
+++ /dev/null
@@ -1,72 +0,0 @@
-diff -up ksh-20120801/src/cmd/ksh93/sh/macro.c.fd2lost ksh-20120801/src/cmd/ksh93/sh/macro.c
---- ksh-20120801/src/cmd/ksh93/sh/macro.c.fd2lost 2014-01-22 16:23:21.211658984 +0100
-+++ ksh-20120801/src/cmd/ksh93/sh/macro.c 2014-01-22 16:23:21.243658703 +0100
-@@ -391,7 +391,7 @@ void sh_machere(Shell_t *shp,Sfio_t *inf
- break;
- }
- case S_PAR:
-- comsubst(mp,(Shnode_t*)0,1);
-+ comsubst(mp,(Shnode_t*)0,3);
- break;
- case S_EOF:
- if((c=fcfill()) > 0)
-@@ -1165,7 +1165,7 @@ retry1:
- case S_PAR:
- if(type)
- goto nosub;
-- comsubst(mp,(Shnode_t*)0,1);
-+ comsubst(mp,(Shnode_t*)0,3);
- return(1);
- case S_DIG:
- var = 0;
-diff -up ksh-20120801/src/cmd/ksh93/sh/subshell.c.fd2lost ksh-20120801/src/cmd/ksh93/sh/subshell.c
---- ksh-20120801/src/cmd/ksh93/sh/subshell.c.fd2lost 2014-01-22 16:23:21.222658887 +0100
-+++ ksh-20120801/src/cmd/ksh93/sh/subshell.c 2014-01-22 16:23:21.243658703 +0100
-@@ -122,7 +122,8 @@ void sh_subtmpfile(Shell_t *shp)
- else if(errno!=EBADF)
- errormsg(SH_DICT,ERROR_system(1),e_toomany);
- /* popping a discipline forces a /tmp file create */
-- sfdisc(sfstdout,SF_POPDISC);
-+ if(shp->comsub != 1)
-+ sfdisc(sfstdout,SF_POPDISC);
- if((fd=sffileno(sfstdout))<0)
- {
- /* unable to create the /tmp file so use a pipe */
-@@ -635,6 +636,13 @@ Sfio_t *sh_subshell(Shell_t *shp,Shnode_
- }
- else
- {
-+ if(comsub!=1 && shp->spid)
-+ {
-+ job_wait(shp->spid);
-+ if(shp->pipepid==shp->spid)
-+ shp->spid = 0;
-+ shp->pipepid = 0;
-+ }
- /* move tmp file to iop and restore sfstdout */
- iop = sfswap(sfstdout,NIL(Sfio_t*));
- if(!iop)
-diff -up ksh-20120801/src/cmd/ksh93/sh/xec.c.fd2lost ksh-20120801/src/cmd/ksh93/sh/xec.c
---- ksh-20120801/src/cmd/ksh93/sh/xec.c.fd2lost 2014-01-22 16:23:21.237658756 +0100
-+++ ksh-20120801/src/cmd/ksh93/sh/xec.c 2014-01-22 16:38:36.374666019 +0100
-@@ -1756,6 +1756,8 @@ int sh_exec(register const Shnode_t *t,
- nlock--;
- job_unlock();
- }
-+ if(shp->subshell)
-+ shp->spid = parent;
- if(type&FPCL)
- sh_close(shp->inpipe[0]);
- if(type&(FCOOP|FAMP))
-@@ -1771,7 +1773,11 @@ int sh_exec(register const Shnode_t *t,
- if(shp->pipepid)
- shp->pipepid = parent;
- else
-+ {
- job_wait(parent);
-+ if(parent==shp->spid)
-+ shp->spid = 0;
-+ }
- if(shp->topfd > topfd)
- sh_iorestore(shp,topfd,0);
- if(usepipe && tsetio && subdup && unpipe)
diff --git a/ksh-20120801-filecomsubst.patch b/ksh-20120801-filecomsubst.patch
deleted file mode 100644
index 676cc27..0000000
--- a/ksh-20120801-filecomsubst.patch
+++ /dev/null
@@ -1,11 +0,0 @@
-diff -up ksh-20120801/src/cmd/ksh93/sh/io.c.tryfix01 ksh-20120801/src/cmd/ksh93/sh/io.c
---- ksh-20120801/src/cmd/ksh93/sh/io.c.tryfix01 2014-02-26 16:15:52.355391420 +0100
-+++ ksh-20120801/src/cmd/ksh93/sh/io.c 2014-02-26 16:23:55.588148801 +0100
-@@ -1326,6 +1326,7 @@ int sh_redirect(Shell_t *shp,struct iono
- if(flag==SH_SHOWME)
- goto traceit;
- fd=sh_chkopen(fname);
-+ fd=sh_iomovefd(fd);
- }
- else if(sh_isoption(SH_RESTRICTED))
- errormsg(SH_DICT,ERROR_exit(1),e_restricted,fname);
diff --git a/ksh-20120801-forkbomb.patch b/ksh-20120801-forkbomb.patch
deleted file mode 100644
index 7a1a5c1..0000000
--- a/ksh-20120801-forkbomb.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -up ksh-20120801/src/cmd/ksh93/sh/fault.c.forkbomb ksh-20120801/src/cmd/ksh93/sh/fault.c
---- ksh-20120801/src/cmd/ksh93/sh/fault.c.forkbomb 2013-04-30 16:20:40.237490109 +0200
-+++ ksh-20120801/src/cmd/ksh93/sh/fault.c 2013-04-30 16:21:49.961068778 +0200
-@@ -519,7 +519,7 @@ void sh_exit(register int xno)
- if(pp && pp->mode>1)
- cursig = -1;
- #ifdef SIGTSTP
-- if(shp->trapnote&SH_SIGTSTP)
-+ if((shp->trapnote&SH_SIGTSTP) && job.jobcontrol)
- {
- /* ^Z detected by the shell */
- shp->trapnote = 0;
diff --git a/ksh-20120801-fununset.patch b/ksh-20120801-fununset.patch
deleted file mode 100644
index 1f5cb17..0000000
--- a/ksh-20120801-fununset.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -up ksh-20120801/src/cmd/ksh93/sh/xec.c.fununset ksh-20120801/src/cmd/ksh93/sh/xec.c
---- ksh-20120801/src/cmd/ksh93/sh/xec.c.fununset 2014-06-16 14:21:09.293513844 +0200
-+++ ksh-20120801/src/cmd/ksh93/sh/xec.c 2014-06-16 14:21:09.309513760 +0200
-@@ -3570,7 +3570,7 @@ static void sh_funct(Shell_t *shp,Namval
- #endif
- nv_putval(SH_PATHNAMENOD,shp->st.filename,NV_NOFREE);
- shp->pipepid = pipepid;
-- np->nvalue.rp->running -= 2;
-+ if (np->nvalue.rp) np->nvalue.rp->running -= 2;
- }
-
- /*
diff --git a/ksh-20120801-glibc-build-fix.patch b/ksh-20120801-glibc-build-fix.patch
deleted file mode 100644
index 28be43b..0000000
--- a/ksh-20120801-glibc-build-fix.patch
+++ /dev/null
@@ -1,38 +0,0 @@
-diff --git a/src/lib/libast/features/stdio b/src/lib/libast/features/stdio
---- a/src/lib/libast/features/stdio
-+++ b/src/lib/libast/features/stdio
-@@ -6,6 +6,8 @@ cat{
- #define _FILE_DEFINED 1
- #define _FILE_defined 1
- #define _FILEDEFED 1
-+ #define __FILE_defined 1
-+ #define ____FILE_defined 1
-
- #ifndef __FILE_TAG
- #define __FILE_TAG _sfio_s
-diff --git a/src/lib/libast/include/ast.h b/src/lib/libast/include/ast.h
-index ebf82d7..f4bbe6d 100644
---- a/src/lib/libast/include/ast.h
-+++ b/src/lib/libast/include/ast.h
-@@ -59,9 +59,21 @@ struct _sfio_s;
- #ifndef __FILE_typedef
- #define __FILE_typedef 1
- #endif
-+#ifndef _FILE_DEFINED
-+#define _FILE_DEFINED 1
-+#endif
-+#ifndef _FILE_defined
-+#define _FILE_defined 1
-+#endif
- #ifndef _FILEDEFED
- #define _FILEDEFED 1
- #endif
-+#ifndef __FILE_defined
-+#define __FILE_defined 1
-+#endif
-+#ifndef ____FILE_defined
-+#define ____FILE_defined 1
-+#endif
- #endif
-
- /*
diff --git a/ksh-20120801-heresub.patch b/ksh-20120801-heresub.patch
deleted file mode 100644
index 880071c..0000000
--- a/ksh-20120801-heresub.patch
+++ /dev/null
@@ -1,32 +0,0 @@
-diff -up ksh-20120801/src/cmd/ksh93/sh/lex.c.heresub ksh-20120801/src/cmd/ksh93/sh/lex.c
---- ksh-20120801/src/cmd/ksh93/sh/lex.c.heresub 2014-05-21 16:48:42.635700984 +0200
-+++ ksh-20120801/src/cmd/ksh93/sh/lex.c 2014-05-21 16:48:42.678700772 +0200
-@@ -1557,6 +1557,7 @@ static int comsub(register Lex_t *lp, in
- {
- register int n,c,count=1;
- register int line=lp->sh->inlineno;
-+ struct ionod *inheredoc = lp->heredoc;
- char *first,*cp=fcseek(0),word[5];
- int off, messages=0, assignok=lp->assignok, csub;
- struct lexstate save;
-@@ -1683,7 +1684,7 @@ done:
- lp->lexd.dolparen--;
- lp->lex = save;
- lp->assignok = (endchar(lp)==RBRACT?assignok:0);
-- if(lp->heredoc)
-+ if(lp->heredoc && !inheredoc)
- errormsg(SH_DICT,ERROR_exit(SYNBAD),e_lexsyntax5,lp->sh->inlineno,lp->heredoc->ioname);
- return(messages);
- }
-diff -up ksh-20120801/src/cmd/ksh93/sh/macro.c.heresub ksh-20120801/src/cmd/ksh93/sh/macro.c
---- ksh-20120801/src/cmd/ksh93/sh/macro.c.heresub 2014-05-21 16:48:42.650700910 +0200
-+++ ksh-20120801/src/cmd/ksh93/sh/macro.c 2014-05-21 16:48:42.678700772 +0200
-@@ -2085,7 +2085,7 @@ static void comsubst(Mac_t *mp,register
- }
- sfputc(stkp,c);
- }
-- sfputc(stkp,' ');
-+ sfputc(stkp,'\n');
- c = stktell(stkp);
- str=stkfreeze(stkp,1);
- /* disable verbose and don't save in history file */
diff --git a/ksh-20120801-iso8859.patch b/ksh-20120801-iso8859.patch
deleted file mode 100644
index 8f3a355..0000000
--- a/ksh-20120801-iso8859.patch
+++ /dev/null
@@ -1,74 +0,0 @@
-diff --git a/src/cmd/ksh93/sh/fcin.c b/src/cmd/ksh93/sh/fcin.c
-index ea6ea6b..08c1f2a 100644
---- a/src/cmd/ksh93/sh/fcin.c
-+++ b/src/cmd/ksh93/sh/fcin.c
-@@ -150,63 +150,19 @@ extern void fcrestore(Fcin_t *fp)
- _Fcin = *fp;
- }
-
--/* for testing purposes with small buffers */
--#if defined(IOBSIZE) && (IOBSIZE < 2*MB_LEN_MAX)
--# undef MB_LEN_MAX
--# define MB_LEN_MAX (IOBSIZE/2)
--#endif
--
--struct Extra
--{
-- unsigned char buff[2*MB_LEN_MAX];
-- unsigned char *next;
--};
--
- int _fcmbget(short *len)
- {
-- static struct Extra extra;
-- register int i, c, n;
-- if(_Fcin.fcleft)
-- {
-- if((c = mbsize(extra.next)) < 0)
-- c = 1;
-- if((_Fcin.fcleft -= c) <=0)
-- {
-- _Fcin.fcptr = (unsigned char*)fcfirst() - _Fcin.fcleft;
-- _Fcin.fcleft = 0;
-- }
-- *len = c;
-- if(c==1)
-- c = *extra.next++;
-- else if(c==0)
-- _Fcin.fcleft = 0;
-- else
-- c = mbchar(extra.next);
-- return(c);
-- }
-- switch(*len = mbsize(_Fcin.fcptr))
-+ register int c;
-+ switch (*len = mbsize(_Fcin.fcptr))
- {
-- case -1:
-- if(_Fcin._fcfile && (n=(_Fcin.fclast-_Fcin.fcptr)) < MB_LEN_MAX)
-- {
-- memcpy(extra.buff, _Fcin.fcptr, n);
-- _Fcin.fcptr = _Fcin.fclast;
-- for(i=n; i < MB_LEN_MAX+n; i++)
-- {
-- if((extra.buff[i] = fcgetc(c))==0)
-- break;
-- }
-- _Fcin.fcleft = n;
-- extra.next = extra.buff;
-- return(fcmbget(len));
-- }
-+ case -1:
- *len = 1;
- /* fall through */
-- case 0:
-- case 1:
-+ case 0:
-+ case 1:
- c=fcget();
- break;
-- default:
-+ default:
- c = mbchar(_Fcin.fcptr);
- }
- return(c);
diff --git a/ksh-20120801-jobwait-sigstop.patch b/ksh-20120801-jobwait-sigstop.patch
deleted file mode 100644
index 1749288..0000000
--- a/ksh-20120801-jobwait-sigstop.patch
+++ /dev/null
@@ -1,11 +0,0 @@
-diff --git a/src/cmd/ksh93/sh/jobs.c b/src/cmd/ksh93/sh/jobs.c
---- a/src/cmd/ksh93/sh/jobs.c
-+++ b/src/cmd/ksh93/sh/jobs.c
-@@ -1579,6 +1579,7 @@ int job_wait(register pid_t pid)
- if( pw->p_exit!=SIGTTIN && pw->p_exit!=SIGTTOU)
- break;
-
-+ tcsetpgrp(JOBTTY,pw->p_pgrp);
- killpg(pw->p_pgrp,SIGCONT);
- }
- else /* ignore stop when non-interactive */
diff --git a/ksh-20120801-kia.patch b/ksh-20120801-kia.patch
deleted file mode 100644
index 9b4b972..0000000
--- a/ksh-20120801-kia.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff --git a/src/cmd/ksh93/sh/parse.c b/src/cmd/ksh93/sh/parse.c
-index d139389..5a02af7 100644
---- a/src/cmd/ksh93/sh/parse.c
-+++ b/src/cmd/ksh93/sh/parse.c
-@@ -2032,6 +2032,7 @@ unsigned long kiaentity(Lex_t *lexp,const char *name,int len,int type,int first,
- else
- sfputr(stkp,name,0);
- }
-+ sfputc(stkp,'\0');
- np = nv_search(stakptr(offset),lexp->entity_tree,NV_ADD);
- stkseek(stkp,offset);
- np->nvalue.i = pkind;
diff --git a/ksh-20120801-kshmfix.patch b/ksh-20120801-kshmfix.patch
deleted file mode 100644
index cc68406..0000000
--- a/ksh-20120801-kshmfix.patch
+++ /dev/null
@@ -1,66 +0,0 @@
-diff -up ksh-20120801/src/cmd/ksh93/sh/main.c.monintoron ksh-20120801/src/cmd/ksh93/sh/main.c
---- ksh-20120801/src/cmd/ksh93/sh/main.c.monintoron 2013-05-31 10:15:02.738828102 +0200
-+++ ksh-20120801/src/cmd/ksh93/sh/main.c 2013-05-31 10:15:36.057095262 +0200
-@@ -406,10 +406,10 @@ static void exfile(register Shell_t *shp
- {
- buff.mode = SH_JMPEXIT;
- sh_onoption(SH_TRACKALL);
-- sh_offoption(SH_MONITOR);
- }
- sh_offstate(SH_INTERACTIVE);
-- sh_offstate(SH_MONITOR);
-+ if(sh_isoption(SH_MONITOR))
-+ sh_onstate(SH_MONITOR);
- sh_offstate(SH_HISTORY);
- sh_offoption(SH_HISTORY);
- }
-diff -up ksh-20120801/src/cmd/ksh93/sh/jobs.c.orig ksh-20120801/src/cmd/ksh93/sh/jobs.c
---- ksh-20120801/src/cmd/ksh93/sh/jobs.c.orig 2013-05-31 10:12:28.358590452 +0200
-+++ ksh-20120801/src/cmd/ksh93/sh/jobs.c 2013-05-31 10:16:51.203697890 +0200
-@@ -548,7 +548,7 @@ int job_reap(register int sig)
- {
- px = job_byjid((int)pw->p_job);
- for(; px && (px->p_flag&P_DONE); px=px->p_nxtproc);
-- if(!px)
-+ if(!px && sh_isoption(SH_INTERACTIVE))
- tcsetpgrp(JOBTTY,job.mypid);
- }
- #ifndef SHOPT_BGX
-@@ -842,10 +842,11 @@ static void job_set(register struct proc
-
- static void job_reset(register struct process *pw)
- {
-+ Shell_t *shp = pw->p_shp;
- /* save the terminal state for current job */
- #ifdef SIGTSTP
- job_fgrp(pw,tcgetpgrp(job.fd));
-- if(tcsetpgrp(job.fd,job.mypid) !=0)
-+ if(sh_isoption(SH_INTERACTIVE) && tcsetpgrp(job.fd,job.mypid) !=0)
- return;
- #endif /* SIGTSTP */
- /* force the following tty_get() to do a tcgetattr() unless fg */
-diff -up ksh-20120801/src/cmd/ksh93/sh/xec.c.orig ksh-20120801/src/cmd/ksh93/sh/xec.c
---- ksh-20120801/src/cmd/ksh93/sh/xec.c.orig 2013-05-31 10:12:27.000000000 +0200
-+++ ksh-20120801/src/cmd/ksh93/sh/xec.c 2013-05-31 10:18:14.650367185 +0200
-@@ -2201,7 +2201,7 @@ int sh_exec(register const Shnode_t *t,
- }
- shp->exitval = n;
- #ifdef SIGTSTP
-- if(!pipejob && sh_isstate(SH_MONITOR))
-+ if(!pipejob && sh_isstate(SH_MONITOR) && sh_isoption(SH_INTERACTIVE))
- tcsetpgrp(JOBTTY,shp->gd->pid);
- #endif /*SIGTSTP */
- job.curpgid = savepgid;
-diff -up ksh-20120801/src/cmd/ksh93/edit/edit.c.kshmfix ksh-20120801/src/cmd/ksh93/edit/edit.c
---- ksh-20120801/src/cmd/ksh93/edit/edit.c.kshmfix 2013-09-23 10:46:57.007256192 +0200
-+++ ksh-20120801/src/cmd/ksh93/edit/edit.c 2013-09-23 10:47:43.988937610 +0200
-@@ -1050,7 +1050,7 @@ int ed_getchar(register Edit_t *ep,int m
- {
- if(mode<=0 && -c == ep->e_intr)
- {
-- sh_fault(SIGINT);
-+ killpg(getpgrp(),SIGINT);
- siglongjmp(ep->e_env, UINTR);
- }
- if(mode<=0 && ep->sh->st.trap[SH_KEYTRAP])
-
diff --git a/ksh-20120801-lexfix.patch b/ksh-20120801-lexfix.patch
deleted file mode 100644
index 9150da8..0000000
--- a/ksh-20120801-lexfix.patch
+++ /dev/null
@@ -1,56 +0,0 @@
-diff -up ksh-20120801/src/cmd/ksh93/edit/edit.c.trajfiks ksh-20120801/src/cmd/ksh93/edit/edit.c
---- ksh-20120801/src/cmd/ksh93/edit/edit.c.trajfiks 2012-08-02 00:18:19.000000000 +0200
-+++ ksh-20120801/src/cmd/ksh93/edit/edit.c 2014-02-06 12:12:11.570942651 +0100
-@@ -53,6 +53,7 @@
-
- static char CURSOR_UP[20] = { ESC, '[', 'A', 0 };
- static char KILL_LINE[20] = { ESC, '[', 'J', 0 };
-+static char *savelex;
-
-
-
-@@ -232,6 +233,8 @@ int tty_set(int fd, int action, struct t
- void tty_cooked(register int fd)
- {
- register Edit_t *ep = (Edit_t*)(shgd->ed_context);
-+ if(ep->sh->st.trap[SH_KEYTRAP] && savelex)
-+ memcpy(ep->sh->lex_context,savelex,ep->sh->lexsize);
- ep->e_keytrap = 0;
- if(ep->e_raw==0)
- return;
-@@ -783,6 +786,13 @@ void ed_setup(register Edit_t *ep, int f
- ep->e_lbuf[n] = *pp++;
- ep->e_default = 0;
- }
-+ if(ep->sh->st.trap[SH_KEYTRAP])
-+ {
-+ if(!savelex)
-+ savelex = (char*)malloc(shp->lexsize);
-+ if(savelex)
-+ memcpy(savelex, ep->sh->lex_context, ep->sh->lexsize);
-+ }
- }
-
- static void ed_putstring(register Edit_t *ep, const char *str)
-diff -up ksh-20120801/src/cmd/ksh93/include/defs.h.trajfiks ksh-20120801/src/cmd/ksh93/include/defs.h
---- ksh-20120801/src/cmd/ksh93/include/defs.h.trajfiks 2014-02-06 12:18:13.149091836 +0100
-+++ ksh-20120801/src/cmd/ksh93/include/defs.h 2014-02-06 12:18:13.175091784 +0100
-@@ -224,6 +224,7 @@ struct shared
- int xargexit; \
- int nenv; \
- mode_t mask; \
-+ int lexsize; \
- Env_t *env; \
- void *init_context; \
- void *mac_context; \
-diff -up ksh-20120801/src/cmd/ksh93/sh/lex.c.trajfiks ksh-20120801/src/cmd/ksh93/sh/lex.c
---- ksh-20120801/src/cmd/ksh93/sh/lex.c.trajfiks 2014-02-06 12:19:13.587950320 +0100
-+++ ksh-20120801/src/cmd/ksh93/sh/lex.c 2014-02-06 12:19:13.623950219 +0100
-@@ -268,6 +268,7 @@ Lex_t *sh_lexopen(Lex_t *lp, Shell_t *sp
- {
- lp = (Lex_t*)newof(0,Lex_t,1,0);
- lp->sh = sp;
-+ sp->lexsize = sizeof(Lex_t);
- }
- fcnotify(lex_advance,lp);
- lp->lex.intest = lp->lex.incase = lp->lex.skipword = lp->lexd.warn = 0;
diff --git a/ksh-20120801-locking.patch b/ksh-20120801-locking.patch
deleted file mode 100644
index 189d254..0000000
--- a/ksh-20120801-locking.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-diff -up ksh-20120801/src/cmd/ksh93/include/jobs.h.locking ksh-20120801/src/cmd/ksh93/include/jobs.h
---- ksh-20120801/src/cmd/ksh93/include/jobs.h.locking 2014-06-27 15:51:07.144923719 +0200
-+++ ksh-20120801/src/cmd/ksh93/include/jobs.h 2014-06-27 15:52:56.463272276 +0200
-@@ -149,15 +149,18 @@ extern struct jobs job;
- #define vmbusy() 0
- #endif
-
--#define job_lock() (job.in_critical++)
-+#define asoincint(p) __sync_fetch_and_add(p,1)
-+#define asodecint(p) __sync_fetch_and_sub(p,1)
-+
-+#define job_lock() asoincint(&job.in_critical)
- #define job_unlock() \
- do { \
- int sig; \
-- if (!--job.in_critical && (sig = job.savesig)) \
-+ if (asodecint(&job.in_critical)==1 && (sig = job.savesig)) \
- { \
-- if (!job.in_critical++ && !vmbusy()) \
-+ if (!asoincint(&job.in_critical) && !vmbusy()) \
- job_reap(sig); \
-- job.in_critical--; \
-+ asodecint(&job.in_critical); \
- } \
- } while(0)
-
diff --git a/ksh-20120801-macro.patch b/ksh-20120801-macro.patch
deleted file mode 100644
index 004a5eb..0000000
--- a/ksh-20120801-macro.patch
+++ /dev/null
@@ -1,178 +0,0 @@
-diff -up ksh-20120801/src/cmd/ksh93/include/io.h.macro ksh-20120801/src/cmd/ksh93/include/io.h
---- ksh-20120801/src/cmd/ksh93/include/io.h.macro 2012-07-18 16:12:38.000000000 +0200
-+++ ksh-20120801/src/cmd/ksh93/include/io.h 2013-07-04 16:14:05.809595966 +0200
-@@ -81,6 +81,7 @@ extern void sh_iosave(Shell_t *, int,in
- extern int sh_iovalidfd(Shell_t*, int);
- extern int sh_inuse(Shell_t*, int);
- extern void sh_iounsave(Shell_t*);
-+extern void iounpipe(Shell_t*);
- extern int sh_chkopen(const char*);
- extern int sh_ioaccess(int,int);
- extern int sh_devtofd(const char*);
-diff -up ksh-20120801/src/cmd/ksh93/sh/subshell.c.macro ksh-20120801/src/cmd/ksh93/sh/subshell.c
---- ksh-20120801/src/cmd/ksh93/sh/subshell.c.macro 2013-07-04 16:14:05.783595751 +0200
-+++ ksh-20120801/src/cmd/ksh93/sh/subshell.c 2013-07-04 16:15:46.673432991 +0200
-@@ -171,7 +171,7 @@ void sh_subfork(void)
- {
- register struct subshell *sp = subshell_data;
- Shell_t *shp = sp->shp;
-- int curenv = shp->curenv;
-+ int curenv = shp->curenv, comsub=shp->comsub;
- pid_t pid;
- char *trap = shp->st.trapcom[0];
- if(trap)
-@@ -204,7 +204,7 @@ void sh_subfork(void)
- shp->comsub = 0;
- SH_SUBSHELLNOD->nvalue.s = 0;
- sp->subpid=0;
-- shp->st.trapcom[0] = trap;
-+ shp->st.trapcom[0] = (comsub==2?NULL:trap);
- shp->savesig = 0;
- }
- }
-@@ -743,7 +743,6 @@ Sfio_t *sh_subshell(Shell_t *shp,Shnode_
- fchdir(shp->pwdfd);
- }
- shp->subshare = sp->subshare;
-- shp->comsub = sp->comsub;
- shp->subdup = sp->subdup;
- #if SHOPT_COSHELL
- shp->coshell = sp->coshell;
-@@ -773,7 +772,12 @@ Sfio_t *sh_subshell(Shell_t *shp,Shnode_
- if(nsig>0)
- kill(getpid(),nsig);
- if(sp->subpid)
-+ {
- job_wait(sp->subpid);
-+ if(comsub>1)
-+ iounpipe(shp);
-+ }
-+ shp->comsub = sp->comsub;
- if(comsub && iop && sp->pipefd<0)
- sfseek(iop,(off_t)0,SEEK_SET);
- if(shp->trapnote)
-diff -up ksh-20120801/src/cmd/ksh93/sh/xec.c.macro ksh-20120801/src/cmd/ksh93/sh/xec.c
---- ksh-20120801/src/cmd/ksh93/sh/xec.c.macro 2013-07-04 16:14:05.800595891 +0200
-+++ ksh-20120801/src/cmd/ksh93/sh/xec.c 2013-07-04 16:14:05.810595975 +0200
-@@ -102,11 +102,11 @@ struct funenv
- * temp file.
- */
- static int subpipe[3],subdup,tsetio,usepipe;
--static void iounpipe(Shell_t*);
-+void iounpipe(Shell_t*);
-
--static int iousepipe(Shell_t *shp)
-+int iousepipe(Shell_t *shp)
- {
-- int i;
-+ int fd=sffileno(sfstdout),i,err=errno;
- if(usepipe)
- {
- usepipe++;
-@@ -115,13 +115,18 @@ static int iousepipe(Shell_t *shp)
- if(sh_rpipe(subpipe) < 0)
- return(0);
- usepipe++;
-- fcntl(subpipe[0],F_SETFD,FD_CLOEXEC);
-- subpipe[2] = sh_fcntl(1,F_DUPFD,10);
-- fcntl(subpipe[2],F_SETFD,FD_CLOEXEC);
-+ if(shp->comsub!=1)
-+ {
-+ subpipe[2] = sh_fcntl(subpipe[1],F_DUPFD,10);
-+ sh_close(subpipe[1]);
-+ return(1);
-+ }
-+ subpipe[2] = sh_fcntl(fd,F_dupfd_cloexec,10);
- shp->fdstatus[subpipe[2]] = shp->fdstatus[1];
-- close(1);
-- fcntl(subpipe[1],F_DUPFD,1);
-- shp->fdstatus[1] = shp->fdstatus[subpipe[1]];
-+ while(close(fd)<0 && errno==EINTR)
-+ errno = err;
-+ fcntl(subpipe[1],F_DUPFD,fd);
-+ shp->fdstatus[1] = shp->fdstatus[subpipe[1]]&~IOCLEX;
- sh_close(subpipe[1]);
- if(subdup=shp->subdup) for(i=0; i < 10; i++)
- {
-@@ -135,14 +140,23 @@ static int iousepipe(Shell_t *shp)
- return(1);
- }
-
--static void iounpipe(Shell_t *shp)
-+void iounpipe(Shell_t *shp)
- {
-- int n;
-+ int fd=sffileno(sfstdout),n,err=errno;
- char buff[SF_BUFSIZE];
-- close(1);
-- fcntl(subpipe[2], F_DUPFD, 1);
-- shp->fdstatus[1] = shp->fdstatus[subpipe[2]];
-+ if(!usepipe)
-+ return;
- --usepipe;
-+ if(shp->comsub>1)
-+ {
-+ sh_close(subpipe[2]);
-+ while(read(subpipe[0],buff,sizeof(buff))>0);
-+ goto done;
-+ }
-+ while(close(fd)<0 && errno==EINTR)
-+ errno = err;
-+ fcntl(subpipe[2], F_DUPFD, fd);
-+ shp->fdstatus[1] = shp->fdstatus[subpipe[2]];
- if(subdup) for(n=0; n < 10; n++)
- {
- if(subdup&(1<<n))
-@@ -174,6 +188,7 @@ static void iounpipe(Shell_t *shp)
- else if(errno!=EINTR)
- break;
- }
-+done:
- sh_close(subpipe[0]);
- subpipe[0] = -1;
- tsetio = 0;
-@@ -725,7 +740,7 @@ static void unset_instance(Namval_t *nq,
- }
-
- #if SHOPT_COSHELL
--uintmax_t coused;
-+static uintmax_t coused;
- /*
- * print out function definition
- */
-@@ -1619,10 +1634,14 @@ int sh_exec(register const Shnode_t *t,
- if(shp->subshell)
- {
- sh_subtmpfile(shp);
-- if(shp->comsub==1 && !(shp->fdstatus[1]&IONOSEEK))
-- unpipe=iousepipe(shp);
- if((type&(FAMP|TFORK))==(FAMP|TFORK))
-- sh_subfork();
-+ {
-+ if(shp->comsub && !(shp->fdstatus[1]&IONOSEEK))
-+ {
-+ unpipe = iousepipe(shp);
-+ sh_subfork();
-+ }
-+ }
- }
- no_fork = !ntflag && !(type&(FAMP|FPOU)) && !shp->subshell &&
- !(shp->st.trapcom[SIGINT] && *shp->st.trapcom[SIGINT]) &&
-@@ -3495,8 +3514,7 @@ static void sh_funct(Shell_t *shp,Namval
- struct funenv fun;
- char *fname = nv_getval(SH_FUNNAMENOD);
- struct Level *lp =(struct Level*)(SH_LEVELNOD->nvfun);
-- int level, pipepid=shp->pipepid, comsub=shp->comsub;
-- shp->comsub = 0;
-+ int level, pipepid=shp->pipepid;
- shp->pipepid = 0;
- sh_stats(STAT_FUNCT);
- if(!lp->hdr.disc)
-@@ -3539,7 +3557,6 @@ static void sh_funct(Shell_t *shp,Namval
- lp->maxlevel = level;
- SH_LEVELNOD->nvalue.s = lp->maxlevel;
- shp->last_root = nv_dict(DOTSHNOD);
-- shp->comsub = comsub;
- #if 0
- nv_putval(SH_FUNNAMENOD,shp->st.funname,NV_NOFREE);
- #else
diff --git a/ksh-20120801-manfix4.patch b/ksh-20120801-manfix4.patch
deleted file mode 100644
index 6355445..0000000
--- a/ksh-20120801-manfix4.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -up ksh-20120801/src/cmd/ksh93/sh.1.manfix4 ksh-20120801/src/cmd/ksh93/sh.1
---- ksh-20120801/src/cmd/ksh93/sh.1.manfix4 2014-05-22 12:04:51.593750721 +0200
-+++ ksh-20120801/src/cmd/ksh93/sh.1 2014-05-22 12:05:32.561556452 +0200
-@@ -4147,7 +4147,7 @@ command are ignored if the command is fo
- .B &
- and the
- .B monitor
--option is not active.
-+option is active.
- Otherwise, signals have the values
- inherited by the shell from its parent
- (but see also
diff --git a/ksh-20120801-mb-after-argvar.patch b/ksh-20120801-mb-after-argvar.patch
deleted file mode 100644
index 1b71a57..0000000
--- a/ksh-20120801-mb-after-argvar.patch
+++ /dev/null
@@ -1,15 +0,0 @@
-diff -up ksh-20120801/src/cmd/ksh93/sh/macro.c.orig ksh-20120801/src/cmd/ksh93/sh/macro.c
---- ksh-20120801/src/cmd/ksh93/sh/macro.c.orig 2015-08-24 14:29:58.602967855 -0300
-+++ ksh-20120801/src/cmd/ksh93/sh/macro.c 2015-08-24 14:31:13.682850008 -0300
-@@ -1479,7 +1479,10 @@ retry1:
- default:
- goto nosub;
- }
-- c = fcmbget(&LEN);
-+ if(type)
-+ c = fcmbget(&LEN);
-+ else
-+ c = fcget();
- if(type>M_TREE)
- {
- if(c!=RBRACE)
diff --git a/ksh-20120801-memlik.patch b/ksh-20120801-memlik.patch
deleted file mode 100644
index 31f1eb9..0000000
--- a/ksh-20120801-memlik.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-diff -up ksh-20120801/src/cmd/ksh93/sh/array.c.memlik ksh-20120801/src/cmd/ksh93/sh/array.c
---- ksh-20120801/src/cmd/ksh93/sh/array.c.memlik 2012-06-07 00:00:42.000000000 +0200
-+++ ksh-20120801/src/cmd/ksh93/sh/array.c 2013-06-11 16:52:47.557123973 +0200
-@@ -1701,7 +1701,11 @@ void *nv_associative(register Namval_t *
- ap->header.scope = 0;
- }
- else
-- dtclose(ap->header.table);
-+ {
-+ if((ap->header.nelem&ARRAY_MASK)==0 && (ap->cur=nv_search("0",ap->header.table,0)))
-+ nv_associative(np,(char*)0,NV_ADELETE);
-+ dtclose(ap->header.table);
-+ }
- return((void*)ap);
- case NV_ANEXT:
- if(!ap->pos)
-diff -up ksh-20120801/src/cmd/ksh93/sh/name.c.memlik ksh-20120801/src/cmd/ksh93/sh/name.c
---- ksh-20120801/src/cmd/ksh93/sh/name.c.memlik 2012-07-23 18:21:57.000000000 +0200
-+++ ksh-20120801/src/cmd/ksh93/sh/name.c 2013-06-11 16:19:41.036648218 +0200
-@@ -2465,6 +2465,8 @@ static void table_unset(Shell_t *shp, re
- }
- }
- npnext = (Namval_t*)dtnext(root,np);
-+ if(nv_arrayptr(np))
-+ nv_putsub(np,NIL(char*),ARRAY_SCAN);
- _nv_unset(np,flags);
- nv_delete(np,root,0);
- }
-@@ -3326,7 +3328,7 @@ int nv_rename(register Namval_t *np, int
- shp->last_root = last_root;
- if(flags&NV_MOVE)
- {
-- if(arraynp && !nv_isattr(np,NV_MINIMAL) && (mp=(Namval_t*)np->nvenv) && (ap=nv_arrayptr(mp)))
-+ if(arraynp && !nv_isattr(np,NV_MINIMAL) && (mp=(Namval_t*)np->nvenv) && (ap=nv_arrayptr(mp)) && !ap->fun)
- ap->nelem++;
- }
- if((nv_arrayptr(nr) && !arraynr) || nv_isvtree(nr))
diff --git a/ksh-20120801-memlik3.patch b/ksh-20120801-memlik3.patch
deleted file mode 100644
index 9df57d2..0000000
--- a/ksh-20120801-memlik3.patch
+++ /dev/null
@@ -1,76 +0,0 @@
-diff -up ksh-20120801/src/cmd/ksh93/include/name.h.memlik3 ksh-20120801/src/cmd/ksh93/include/name.h
---- ksh-20120801/src/cmd/ksh93/include/name.h.memlik3 2012-05-10 18:33:41.000000000 +0200
-+++ ksh-20120801/src/cmd/ksh93/include/name.h 2014-01-22 14:14:32.774483776 +0100
-@@ -215,7 +215,7 @@ extern Namval_t *nv_mount(Namval_t*, co
- extern Namval_t *nv_arraychild(Namval_t*, Namval_t*, int);
- extern int nv_compare(Dt_t*, Void_t*, Void_t*, Dtdisc_t*);
- extern void nv_outnode(Namval_t*,Sfio_t*, int, int);
--extern int nv_subsaved(Namval_t*);
-+extern int nv_subsaved(Namval_t*,int);
- extern void nv_typename(Namval_t*, Sfio_t*);
- extern void nv_newtype(Namval_t*);
- extern int nv_istable(Namval_t*);
-diff -up ksh-20120801/src/cmd/ksh93/sh/name.c.memlik3 ksh-20120801/src/cmd/ksh93/sh/name.c
---- ksh-20120801/src/cmd/ksh93/sh/name.c.memlik3 2014-01-22 14:14:32.751483987 +0100
-+++ ksh-20120801/src/cmd/ksh93/sh/name.c 2014-01-22 14:14:32.775483767 +0100
-@@ -1297,7 +1297,7 @@ void nv_delete(Namval_t* np, Dt_t *root,
- {
- if(dtdelete(root,np))
- {
-- if(!(flags&NV_NOFREE) && ((flags&NV_FUNCTION) || !nv_subsaved(np)))
-+ if(!(flags&NV_NOFREE) && ((flags&NV_FUNCTION) || !nv_subsaved(np,flags&NV_TABLE)))
- free((void*)np);
- }
- #if 0
-@@ -2461,14 +2461,14 @@ static void table_unset(Shell_t *shp, re
- {
- _nv_unset(nq,flags);
- npnext = (Namval_t*)dtnext(root,nq);
-- nv_delete(nq,root,0);
-+ nv_delete(nq,root,NV_TABLE);
- }
- }
- npnext = (Namval_t*)dtnext(root,np);
- if(nv_arrayptr(np))
- nv_putsub(np,NIL(char*),ARRAY_SCAN);
- _nv_unset(np,flags);
-- nv_delete(np,root,0);
-+ nv_delete(np,root,NV_TABLE);
- }
- }
-
-diff -up ksh-20120801/src/cmd/ksh93/sh/subshell.c.memlik3 ksh-20120801/src/cmd/ksh93/sh/subshell.c
---- ksh-20120801/src/cmd/ksh93/sh/subshell.c.memlik3 2014-01-22 14:14:32.768483831 +0100
-+++ ksh-20120801/src/cmd/ksh93/sh/subshell.c 2014-01-22 14:20:50.810236676 +0100
-@@ -218,16 +218,28 @@ void sh_subfork(void)
- }
- }
-
--int nv_subsaved(register Namval_t *np)
-+int nv_subsaved(register Namval_t *np,int table)
- {
- register struct subshell *sp;
-- register struct Link *lp;
-+ register struct Link *lp, *lpprev;
- for(sp = (struct subshell*)subshell_data; sp; sp=sp->prev)
- {
-- for(lp=sp->svar; lp; lp = lp->next)
-+ lpprev = 0;
-+ for(lp=sp->svar; lp; lpprev=lp, lp=lp->next)
- {
- if(lp->node==np)
-+ {
-+ if(table&NV_TABLE)
-+ {
-+ if(lpprev)
-+ lpprev->next = lp->next;
-+ else
-+ sp->svar = lp->next;
-+ free((void*)np);
-+ free((void*)lp);
-+ }
- return(1);
-+ }
- }
- }
- return(0);
diff --git a/ksh-20120801-mlikfiks.patch b/ksh-20120801-mlikfiks.patch
deleted file mode 100644
index fbf016a..0000000
--- a/ksh-20120801-mlikfiks.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-diff -up ksh-20120801/src/cmd/ksh93/sh/lex.c.mlikfiks ksh-20120801/src/cmd/ksh93/sh/lex.c
---- ksh-20120801/src/cmd/ksh93/sh/lex.c.mlikfiks 2013-07-22 12:45:30.923170264 +0200
-+++ ksh-20120801/src/cmd/ksh93/sh/lex.c 2013-07-22 12:46:25.235556905 +0200
-@@ -2465,7 +2465,7 @@ static int alias_exceptf(Sfio_t *iop,int
- if(dp!=handle)
- sfdisc(iop,dp);
- }
-- else if(type==SF_FINAL)
-+ else if(type==SF_DPOP || type==SF_FINAL)
- free((void*)ap);
- goto done;
- }
-diff -up ksh-20120801/src/cmd/ksh93/sh/path.c.mlikfiks ksh-20120801/src/cmd/ksh93/sh/path.c
---- ksh-20120801/src/cmd/ksh93/sh/path.c.mlikfiks 2013-07-22 12:47:23.149990016 +0200
-+++ ksh-20120801/src/cmd/ksh93/sh/path.c 2013-07-22 12:48:33.363283877 +0200
-@@ -613,6 +613,7 @@ static void funload(Shell_t *shp,int fno
- }
- while((rp=dtnext(shp->fpathdict,rp)) && strcmp(pname,rp->fname)==0);
- sh_close(fno);
-+ free((void*)pname);
- return;
- }
- sh_onstate(SH_NOLOG);
-diff -up ksh-20120801/src/cmd/ksh93/sh/macro.c.aliasfix ksh-20120801/src/cmd/ksh93/sh/macro.c
---- ksh-20120801/src/cmd/ksh93/sh/macro.c.aliasfix 2013-07-29 15:03:45.841680475 +0200
-+++ ksh-20120801/src/cmd/ksh93/sh/macro.c 2013-07-29 15:04:23.871336821 +0200
-@@ -2085,6 +2085,7 @@ static void comsubst(Mac_t *mp,register
- }
- sfputc(stkp,c);
- }
-+ sfputc(stkp,' ');
- c = stktell(stkp);
- str=stkfreeze(stkp,1);
- /* disable verbose and don't save in history file */
diff --git a/ksh-20120801-mtty.patch b/ksh-20120801-mtty.patch
deleted file mode 100644
index d992a88..0000000
--- a/ksh-20120801-mtty.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -up ksh-20120801/src/cmd/ksh93/sh/xec.c.mtty ksh-20120801/src/cmd/ksh93/sh/xec.c
---- ksh-20120801/src/cmd/ksh93/sh/xec.c.mtty 2014-01-22 16:52:06.441608750 +0100
-+++ ksh-20120801/src/cmd/ksh93/sh/xec.c 2014-01-22 16:52:06.485608361 +0100
-@@ -3163,7 +3169,7 @@ pid_t _sh_fork(Shell_t *shp,register pid
- * completed. Make parent the job group id.
- */
- if(postid==0)
-- job.curpgid = parent;
-+ job.curpgid = job.jobcontrol?parent:getpid();
- if(job.jobcontrol || (flags&FAMP))
- {
- if(setpgid(parent,job.curpgid)<0 && errno==EPERM)
diff --git a/ksh-20120801-noexeccdfix.patch b/ksh-20120801-noexeccdfix.patch
deleted file mode 100644
index 47128e0..0000000
--- a/ksh-20120801-noexeccdfix.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-From b8260293a8ed7849a358291faae7b58f4a05dcc9 Mon Sep 17 00:00:00 2001
-From: Kamil Dudka <kdudka(a)redhat.com>
-Date: Mon, 10 Nov 2014 18:23:34 +0100
-Subject: [PATCH] Resolves: #1160923 - handle failure of fchdir()
-
-... and chdir()
----
- src/cmd/ksh93/bltins/cd_pwd.c | 6 ++++--
- 1 file changed, 4 insertions(+), 2 deletions(-)
-
-diff --git a/src/cmd/ksh93/bltins/cd_pwd.c b/src/cmd/ksh93/bltins/cd_pwd.c
-index a972da6..c20959c 100644
---- a/src/cmd/ksh93/bltins/cd_pwd.c
-+++ b/src/cmd/ksh93/bltins/cd_pwd.c
-@@ -329,18 +329,20 @@ int b_cd(int argc, char *argv[],Shbltin_t *context)
- if(newdirfd >=0)
- {
- /* chdir for directories on HSM/tapeworms may take minutes */
-- if(fchdir(newdirfd) >= 0)
-+ if((rval=fchdir(newdirfd)) >= 0)
- {
- if(shp->pwdfd >= 0)
- sh_close(shp->pwdfd);
- shp->pwdfd=newdirfd;
- goto success;
- }
-+ else
-+ sh_close(newdirfd);
- }
- #ifndef O_SEARCH
- else
- {
-- if(chdir(dir) >=0)
-+ if((rval=chdir(dir)) >=0)
- {
- if(shp->pwdfd >= 0)
- {
---
-2.1.0
-
diff --git a/ksh-20120801-nohupfork.patch b/ksh-20120801-nohupfork.patch
deleted file mode 100644
index 20cdeb9..0000000
--- a/ksh-20120801-nohupfork.patch
+++ /dev/null
@@ -1,11 +0,0 @@
-diff -up ksh-20120801/src/cmd/ksh93/sh/xec.c.nohupfork ksh-20120801/src/cmd/ksh93/sh/xec.c
---- ksh-20120801/src/cmd/ksh93/sh/xec.c.nohupfork 2015-08-27 14:25:38.925378019 +0200
-+++ ksh-20120801/src/cmd/ksh93/sh/xec.c 2015-08-27 14:30:42.267058087 +0200
-@@ -2067,6 +2067,7 @@ int sh_exec(register const Shnode_t *t,
- {
- sh_exec(t->par.partre,flags);
- shp->st.trapcom[0]=0;
-+ sh_offoption(SH_INTERACTIVE);
- sh_done(shp,0);
- }
- }
diff --git a/ksh-20120801-nomulti.patch b/ksh-20120801-nomulti.patch
deleted file mode 100644
index 5d7e7a4..0000000
--- a/ksh-20120801-nomulti.patch
+++ /dev/null
@@ -1,11 +0,0 @@
-diff -up ksh-20120801/src/cmd/ksh93/sh/init.c.nomulti ksh-20120801/src/cmd/ksh93/sh/init.c
---- ksh-20120801/src/cmd/ksh93/sh/init.c.nomulti 2013-10-08 20:46:46.202471042 +0200
-+++ ksh-20120801/src/cmd/ksh93/sh/init.c 2013-10-08 20:46:57.912331483 +0200
-@@ -1446,7 +1446,6 @@ Shell_t *sh_init(register int argc,regis
- #endif /* SHOPT_TIMEOUT */
- /* initialize jobs table */
- job_clear();
-- sh_onoption(SH_MULTILINE);
- if(argc>0)
- {
- /* check for restricted shell */
diff --git a/ksh-20120801-nv_open-memcmp.patch b/ksh-20120801-nv_open-memcmp.patch
deleted file mode 100644
index 93b7e15..0000000
--- a/ksh-20120801-nv_open-memcmp.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff --git a/src/cmd/ksh93/sh/name.c b/src/cmd/ksh93/sh/name.c
---- a/src/cmd/ksh93/sh/name.c
-+++ b/src/cmd/ksh93/sh/name.c
-@@ -1425,7 +1425,7 @@ Namval_t *nv_open(const char *name, Dt_t *root, int flags)
- {
- if(xp->root!=root)
- continue;
-- if(*name==*xp->name && xp->namespace==shp->namespace && (flags&(NV_ARRAY|NV_NOSCOPE))==xp->flags && memcmp(xp->name,name,xp->len)==0 && (name[xp->len]==0 || name[xp->len]=='=' || name[xp->len]=='+'))
-+ if(*name==*xp->name && xp->namespace==shp->namespace && (flags&(NV_ARRAY|NV_NOSCOPE))==xp->flags && strncmp(xp->name,name,xp->len)==0 && (name[xp->len]==0 || name[xp->len]=='=' || name[xp->len]=='+'))
- {
- sh_stats(STAT_NVHITS);
- np = xp->np;
diff --git a/ksh-20120801-oldenvinit.patch b/ksh-20120801-oldenvinit.patch
deleted file mode 100644
index 8ee0863..0000000
--- a/ksh-20120801-oldenvinit.patch
+++ /dev/null
@@ -1,95 +0,0 @@
-diff -up ksh-20120801/src/cmd/ksh93/sh/init.c.fixset ksh-20120801/src/cmd/ksh93/sh/init.c
---- ksh-20120801/src/cmd/ksh93/sh/init.c.fixset 2014-11-03 15:45:36.510997271 +0100
-+++ ksh-20120801/src/cmd/ksh93/sh/init.c 2014-11-03 16:20:44.398917280 +0100
-@@ -2003,8 +2003,91 @@ static Dt_t *inittree(Shell_t *shp,const
- * skip over items that are not name-value pairs
- */
-
-+
- static void env_init(Shell_t *shp)
- {
-+ register char *cp;
-+ register Namval_t *np;
-+ register char **ep=environ;
-+ register char *next=0;
-+#ifdef _ENV_H
-+ shp->env = env_open(environ,3);
-+ env_delete(shp->env,"_");
-+#endif
-+ if(ep)
-+ {
-+ while(cp= *ep++)
-+ {
-+ if(*cp=='A' && cp[1]=='_' && cp[2]=='_' && cp[3]=='z' && cp[4]=='=')
-+ next = cp+4;
-+ else if(np=nv_open(cp,shp->var_tree,(NV_EXPORT|NV_IDENT|NV_ASSIGN|NV_NOFAIL)))
-+ {
-+ nv_onattr(np,NV_IMPORT);
-+ np->nvenv = cp;
-+ nv_close(np);
-+ }
-+ else /* swap with front */
-+ {
-+ ep[-1] = environ[shp->nenv];
-+ environ[shp->nenv++] = cp;
-+ }
-+ }
-+ while(cp=next)
-+ {
-+ if(next = strchr(++cp,'='))
-+ *next = 0;
-+ np = nv_search(cp+2,shp->var_tree,NV_ADD);
-+ if(np!=SHLVL && nv_isattr(np,NV_IMPORT|NV_EXPORT))
-+ {
-+ int flag = *(unsigned char*)cp-' ';
-+ int size = *(unsigned char*)(cp+1)-' ';
-+ if((flag&NV_INTEGER) && size==0)
-+ {
-+ /* check for floating*/
-+ char *ep,*val = nv_getval(np);
-+ strtol(val,&ep,10);
-+ if(*ep=='.' || *ep=='e' || *ep=='E')
-+ {
-+ char *lp;
-+ flag |= NV_DOUBLE;
-+ if(*ep=='.')
-+ {
-+ strtol(ep+1,&lp,10);
-+ if(*lp)
-+ ep = lp;
-+ }
-+ if(*ep && *ep!='.')
-+ {
-+ flag |= NV_EXPNOTE;
-+ size = ep-val;
-+ }
-+ else
-+ size = strlen(ep);
-+ size--;
-+ }
-+ }
-+ nv_newattr(np,flag|NV_IMPORT|NV_EXPORT,size);
-+ }
-+ else
-+ cp += 2;
-+ }
-+ }
-+#ifdef _ENV_H
-+ env_delete(shp->env,e_envmarker);
-+#endif
-+ if(nv_isnull(PWDNOD) || nv_isattr(PWDNOD,NV_TAGGED))
-+ {
-+ nv_offattr(PWDNOD,NV_TAGGED);
-+ path_pwd(shp,0);
-+ }
-+ if((cp = nv_getval(SHELLNOD)) && (sh_type(cp)&SH_TYPE_RESTRICTED))
-+ sh_onoption(SH_RESTRICTED); /* restricted shell */
-+ return;
-+}
-+
-+
-+static void env_init_backup(Shell_t *shp)
-+{
- register char *cp;
- register Namval_t *np,*mp;
- register char **ep=environ;
diff --git a/ksh-20120801-parserfix.patch b/ksh-20120801-parserfix.patch
deleted file mode 100644
index 1dc7695..0000000
--- a/ksh-20120801-parserfix.patch
+++ /dev/null
@@ -1,26 +0,0 @@
---- ksh_20120801/src/cmd/ksh93/sh/lex.c 2012-06-12 21:05:18.000000000 +0200
-+++ ksh_20120801/src/cmd/ksh93/sh/lex.c 2015-08-18 17:42:06.138076565 +0200
-@@ -1603,7 +1603,14 @@ static int comsub(register Lex_t *lp, in
- if(n==4)
- break;
- if(sh_lexstates[ST_NAME][c])
-+ {
-+ if(c==' ' || c=='\t')
-+ {
-+ n = 0;
-+ continue;
-+ }
- goto skip;
-+ }
- word[n++] = c;
- }
- if(sh_lexstates[ST_NAME][c]==S_BREAK)
---- ksh_20120801/src/cmd/ksh93/tests/subshell.sh 2012-07-25 23:40:29.000000000 +0200
-+++ ksh_20120801/src/cmd/ksh93/tests/subshell.sh 2015-08-18 17:42:06.143076553 +0200
-@@ -617,4 +617,6 @@ do if [[ -e $f ]]
- fi
- done
-
-+$SHELL > /dev/null -c 'echo $(for x in whatever; do case y in *) true;; esac; done)' || err_exit 'syntax error with case in command substitution'
-+
- exit $((Errors<125?Errors:125))
diff --git a/ksh-20120801-posix-exit.patch b/ksh-20120801-posix-exit.patch
deleted file mode 100644
index a4b44d0..0000000
--- a/ksh-20120801-posix-exit.patch
+++ /dev/null
@@ -1,24 +0,0 @@
-diff --git a/src/cmd/ksh93/sh/fault.c b/src/cmd/ksh93/sh/fault.c
---- a/src/cmd/ksh93/sh/fault.c
-+++ b/src/cmd/ksh93/sh/fault.c
-@@ -643,7 +643,7 @@ void sh_done(void *ptr, register int sig)
- sfsync((Sfio_t*)sfstdin);
- sfsync((Sfio_t*)shp->outpool);
- sfsync((Sfio_t*)sfstdout);
-- if(savxit&SH_EXITSIG)
-+ if((savxit&SH_EXITMASK) == shp->lastsig)
- sig = savxit&SH_EXITMASK;
- if(sig)
- {
-@@ -668,6 +668,12 @@ void sh_done(void *ptr, register int sig)
- if(sh_isoption(SH_NOEXEC))
- kiaclose((Lex_t*)shp->lex_context);
- #endif /* SHOPT_KIA */
-+
-+ /* Return POSIX exit code if last process exits due to signal */
-+ if (savxit & SH_EXITSIG) {
-+ exit(128 + (savxit&SH_EXITMASK));
-+ }
-+
- exit(savxit&SH_EXITMASK);
- }
diff --git a/ksh-20120801-retfix.patch b/ksh-20120801-retfix.patch
deleted file mode 100644
index 5af1053..0000000
--- a/ksh-20120801-retfix.patch
+++ /dev/null
@@ -1,14 +0,0 @@
-diff -up ksh-20120801/src/cmd/ksh93/sh/subshell.c.retfix ksh-20120801/src/cmd/ksh93/sh/subshell.c
---- ksh-20120801/src/cmd/ksh93/sh/subshell.c.retfix 2014-10-01 17:34:47.720532950 +0200
-+++ ksh-20120801/src/cmd/ksh93/sh/subshell.c 2014-10-01 17:35:25.850350378 +0200
-@@ -655,7 +655,10 @@ Sfio_t *sh_subshell(Shell_t *shp,Shnode_
- job.hack1_waitall=0;
- if(comsub!=1 && shp->spid)
- {
-+ int c = shp->exitval;
- job_wait(shp->spid);
-+ shp->exitval = c;
-+ exitset();
- if(shp->pipepid==shp->spid)
- shp->spid = 0;
- shp->pipepid = 0;
diff --git a/ksh-20120801-rmdirfix.patch b/ksh-20120801-rmdirfix.patch
deleted file mode 100644
index ae9dfd7..0000000
--- a/ksh-20120801-rmdirfix.patch
+++ /dev/null
@@ -1,505 +0,0 @@
-diff -up ksh20120801/src/cmd/ksh93/sh/subshell.c.orig ksh20120801/src/cmd/ksh93/sh/subshell.c
---- ksh20120801/src/cmd/ksh93/sh/subshell.c.orig 2012-07-17 23:54:21.000000000 +0200
-+++ ksh20120801/src/cmd/ksh93/sh/subshell.c 2012-10-24 15:03:44.436870792 +0200
-@@ -40,14 +40,6 @@
- # define PIPE_BUF 512
- #endif
-
--#ifndef O_SEARCH
--# ifdef O_PATH
--# define O_SEARCH O_PATH
--# else
--# define O_SEARCH 0
--# endif
--#endif
--
- /*
- * Note that the following structure must be the same
- * size as the Dtlink_t structure
-@@ -84,7 +76,7 @@ static struct subshell
- char *pwd; /* present working directory */
- const char *shpwd; /* saved pointer to sh.pwd */
- void *jobs; /* save job info */
-- int pwdfd; /* file descritor for pwd */
-+ int shpwdfd;/* fd for present working directory */
- mode_t mask; /* saved umask */
- short tmpfd; /* saved tmp file descriptor */
- short pipefd; /* read fd if pipe is created */
-@@ -101,7 +93,6 @@ static struct subshell
- int subdup;
- char subshare;
- char comsub;
-- char pwdclose;
- #if SHOPT_COSHELL
- void *coshell;
- #endif /* SHOPT_COSHELL */
-@@ -518,7 +509,6 @@ Sfio_t *sh_subshell(Shell_t *shp,Shnode_
- shp->pathinit = 0;
- }
- sp->pathlist = path_dup((Pathcomp_t*)shp->pathlist);
-- sp->pwdfd = -1;
- if(!shp->pwd)
- path_pwd(shp,0);
- sp->bckpid = shp->bckpid;
-@@ -531,39 +521,14 @@ Sfio_t *sh_subshell(Shell_t *shp,Shnode_
- shp->subshare = comsub==2 || (comsub==1 && sh_isoption(SH_SUBSHARE));
- if(comsub)
- shp->comsub = comsub;
-+ sp->shpwdfd=-1;
- if(!comsub || !shp->subshare)
- {
-- struct subshell *xp;
- sp->shpwd = shp->pwd;
--#ifdef _lib_fchdir
-- for(xp=sp->prev; xp; xp=xp->prev)
-- {
-- if(xp->pwdfd>0 && strcmp(xp->pwd,shp->pwd)==0)
-- {
-- sp->pwdfd = xp->pwdfd;
-- break;
-- }
-- }
-- if(sp->pwdfd<0)
-- {
-- int n = open(".",O_RDONLY);
-- if(O_SEARCH && errno==EACCES)
-- n = open(".",O_RDONLY);
-- if(n>=0)
-- {
-- sp->pwdfd = n;
-- if(n<10)
-- {
-- sp->pwdfd = sh_fcntl(n,F_DUPFD,10);
-- close(n);
-- }
-- if(sp->pwdfd>0)
-- {
-- fcntl(sp->pwdfd,F_SETFD,FD_CLOEXEC);
-- sp->pwdclose = 1;
-- }
-- }
-- }
-+ sp->shpwdfd=((shp->pwdfd >= 0))?sh_fcntl(shp->pwdfd, F_dupfd_cloexec, 10):-1;
-+#ifdef O_SEARCH
-+ if(sp->shpwdfd<0)
-+ errormsg(SH_DICT,ERROR_system(1), "Can't obtain directory fd.");
- #endif
- sp->pwd = (shp->pwd?strdup(shp->pwd):0);
- sp->mask = shp->mask;
-@@ -741,14 +706,11 @@ Sfio_t *sh_subshell(Shell_t *shp,Shnode_
- Namval_t *pwdnod = sh_scoped(shp,PWDNOD);
- if(shp->pwd)
- {
-- if(sp->pwdfd >=0)
-- {
-- if(fchdir(sp->pwdfd)<0)
-- chdir(sp->pwd);
-- }
-- else
-- chdir(sp->pwd);
- shp->pwd=sp->pwd;
-+#ifndef O_SEARCH
-+ if (sp->shpwdfd < 0)
-+ chdir(shp->pwd);
-+#endif
- path_newdir(shp,shp->pathlist);
- }
- if(nv_isattr(pwdnod,NV_NOFREE))
-@@ -762,8 +724,6 @@ Sfio_t *sh_subshell(Shell_t *shp,Shnode_
- }
- else
- free((void*)sp->pwd);
-- if(sp->pwdclose)
-- close(sp->pwdfd);
- if(sp->mask!=shp->mask)
- umask(shp->mask=sp->mask);
- if(shp->coutpipe!=sp->coutpipe)
-@@ -775,6 +735,13 @@ Sfio_t *sh_subshell(Shell_t *shp,Shnode_
- shp->cpipe[1] = sp->cpipe;
- shp->coutpipe = sp->coutpipe;
- }
-+ if(sp->shpwdfd >=0)
-+ {
-+ if(shp->pwdfd >=0)
-+ sh_close(shp->pwdfd);
-+ shp->pwdfd=sp->shpwdfd;
-+ fchdir(shp->pwdfd);
-+ }
- shp->subshare = sp->subshare;
- shp->comsub = sp->comsub;
- shp->subdup = sp->subdup;
-diff -up ksh-20120801/src/cmd/ksh93/bltins/cd_pwd.c.orig ksh-20120801/src/cmd/ksh93/bltins/cd_pwd.c
---- ksh-20120801/src/cmd/ksh93/bltins/cd_pwd.c.orig 2012-08-02 16:50:40.000000000 +0200
-+++ ksh-20120801/src/cmd/ksh93/bltins/cd_pwd.c 2012-10-24 15:37:46.814469045 +0200
-@@ -38,6 +38,10 @@
- #include "builtins.h"
- #include <ls.h>
-
-+#ifndef EINTR_REPEAT
-+# define EINTR_REPEAT(expr) while((expr) && (errno == EINTR)) errno=0;
-+#endif
-+
- /*
- * Invalidate path name bindings to relative paths
- */
-@@ -49,6 +53,95 @@ static void rehash(register Namval_t *np
- _nv_unset(np,0);
- }
-
-+/*
-+ * Obtain a file handle to the directory "path" relative to directory
-+ * "dir", or open a NFSv4 xattr directory handle for file dir/path.
-+ */
-+int sh_diropenat(Shell_t *shp, int dir, const char *path, bool xattr)
-+{
-+ int fd,shfd;
-+ int savederrno=errno;
-+#ifndef AT_FDCWD
-+ NOT_USED(dir);
-+#endif
-+#ifndef O_XATTR
-+ NOT_USED(xattr);
-+#endif
-+
-+#ifdef O_XATTR
-+ if(xattr)
-+ {
-+ int apfd; /* attribute parent fd */
-+ /* open parent node... */
-+ EINTR_REPEAT((apfd = openat(dir, path, O_RDONLY|O_NONBLOCK|O_cloexec)) < 0);
-+ if(apfd < 0)
-+ return -1;
-+
-+ /* ... and then open a fd to the attribute directory */
-+ EINTR_REPEAT((fd = openat(apfd, e_dot, O_XATTR|O_cloexec)) < 0);
-+
-+ savederrno = errno;
-+ EINTR_REPEAT(close(apfd) < 0);
-+ errno = savederrno;
-+ }
-+ else
-+#endif
-+ {
-+#ifdef AT_FDCWD
-+ /*
-+ * Open directory. First we try without |O_SEARCH| and
-+ * if this fails with EACCESS we try with |O_SEARCH|
-+ * again.
-+ * This is required ...
-+ * - ... because some platforms may require that it can
-+ * only be used for directories while some filesystems
-+ * (e.g. Reiser4 or HSM systems) allow a |fchdir()| into
-+ * files, too)
-+ * - ... to preserve the semantics of "cd", e.g.
-+ * otherwise "cd" would return [No access] instead of
-+ * [Not a directory] for files on filesystems which do
-+ * not allow a "cd" into files.
-+ * - ... to allow that a
-+ * $ redirect {n}</etc ; cd /dev/fd/$n # works on most
-+ * platforms.
-+ */
-+ EINTR_REPEAT((fd = openat(dir, path, O_RDONLY|O_NONBLOCK|O_cloexec)) < 0);
-+# ifdef O_SEARCH
-+ if((fd < 0) && (errno == EACCES))
-+ {
-+ EINTR_REPEAT((fd = openat(dir, path, O_SEARCH|O_cloexec)) < 0)
-+ }
-+# endif
-+#else
-+ /*
-+ * Version of openat() call above for systems without
-+ * openat API. This only works because we basically
-+ * gurantee that |dir| is always the same place as
-+ * |cwd| on such machines (but this won't be the case
-+ * in the future).
-+ */
-+ /*
-+ * This |fchdir()| call is not needed (yet) since
-+ * all consumers do not use |dir| when |AT_FDCWD|
-+ * is not available.
-+ *
-+ * fchdir(dir);
-+ */
-+ EINTR_REPEAT((fd = open(path, O_cloexec)) < 0);
-+#endif
-+ }
-+
-+ if(fd < 0)
-+ return fd;
-+
-+ /* Move fd to a number > 10 and *register* the fd number with the shell */
-+ shfd = sh_fcntl(fd, F_dupfd_cloexec, 10);
-+ savederrno=errno;
-+ sh_close(fd);
-+ errno=savederrno;
-+ return(shfd);
-+}
-+
- int b_cd(int argc, char *argv[],Shbltin_t *context)
- {
- register char *dir;
-@@ -56,18 +149,20 @@ int b_cd(int argc, char *argv[],Shbltin_
- register const char *dp;
- register Shell_t *shp = context->shp;
- int saverrno=0;
-- int rval,flag=0;
-+ int rval;
-+ bool flag=false,xattr=false;
- char *oldpwd;
-+ int newdirfd;
- Namval_t *opwdnod, *pwdnod;
- if(sh_isoption(SH_RESTRICTED))
- errormsg(SH_DICT,ERROR_exit(1),e_restricted+4);
- while((rval = optget(argv,sh_optcd))) switch(rval)
- {
- case 'L':
-- flag = 0;
-+ flag = false;
- break;
- case 'P':
-- flag = 1;
-+ flag = true;
- break;
- case ':':
- errormsg(SH_DICT,2, "%s", opt_info.arg);
-@@ -179,14 +274,72 @@ int b_cd(int argc, char *argv[],Shbltin_
- continue;
- #endif /* SHOPT_FS_3D */
- }
-+ rval = newdirfd = sh_diropenat(shp, shp->pwdfd,
-+ path_relative(shp,stakptr(PATH_OFFSET)), xattr);
-+ if(newdirfd >=0)
-+ {
-+ /* chdir for directories on HSM/tapeworms may take minutes */
-+ if(fchdir(newdirfd) >= 0)
-+ {
-+ if(shp->pwdfd >= 0)
-+ sh_close(shp->pwdfd);
-+ shp->pwdfd=newdirfd;
-+ goto success;
-+ }
-+ }
-+#ifndef O_SEARCH
-+ else
-+ {
- if((rval=chdir(path_relative(shp,stakptr(PATH_OFFSET)))) >= 0)
-- goto success;
-- if(errno!=ENOENT && saverrno==0)
-+ {
-+ if(shp->pwdfd >= 0)
-+ {
-+ sh_close(shp->pwdfd);
-+#ifdef AT_FDCWD
-+ shp->pwdfd = AT_FDCWD;
-+#else
-+ shp->pwdfd = -1;
-+#endif
-+ }
-+ }
-+ }
-+#endif
-+ if(saverrno==0)
- saverrno=errno;
-+ if(newdirfd >=0)
-+ sh_close(newdirfd);
- }
- while(cdpath);
- if(rval<0 && *dir=='/' && *(path_relative(shp,stakptr(PATH_OFFSET)))!='/')
-- rval = chdir(dir);
-+ {
-+ rval = newdirfd = sh_diropenat(shp,
-+ shp->pwdfd,
-+ dir, xattr);
-+ if(newdirfd >=0)
-+ {
-+ /* chdir for directories on HSM/tapeworms may take minutes */
-+ if(fchdir(newdirfd) >= 0)
-+ {
-+ if(shp->pwdfd >= 0)
-+ sh_close(shp->pwdfd);
-+ shp->pwdfd=newdirfd;
-+ goto success;
-+ }
-+ }
-+#ifndef O_SEARCH
-+ else
-+ {
-+ if(chdir(dir) >=0)
-+ {
-+ if(shp->pwdfd >= 0)
-+ {
-+ sh_close(shp->pwdfd);
-+ shp->pwdfd=-1;
-+ }
-+ }
-+ }
-+#endif
-+ }
- /* use absolute chdir() if relative chdir() fails */
- if(rval<0)
- {
-@@ -213,7 +366,7 @@ success:
- if(*dir != '/')
- return(0);
- nv_putval(opwdnod,oldpwd,NV_RDONLY);
-- flag = strlen(dir);
-+ flag = (strlen(dir)>0)?true:false;
- /* delete trailing '/' */
- while(--flag>0 && dir[flag]=='/')
- dir[flag] = 0;
-diff -up ksh-20120801/src/cmd/ksh93/include/shell.h.orig ksh-20120801/src/cmd/ksh93/include/shell.h
---- ksh-20120801/src/cmd/ksh93/include/shell.h.orig 2012-07-17 22:07:40.000000000 +0200
-+++ ksh-20120801/src/cmd/ksh93/include/shell.h 2012-10-24 15:42:10.756987230 +0200
-@@ -145,6 +145,7 @@ struct Shell_s
- unsigned char trapnote; /* set when trap/signal is pending */
- char shcomp; /* set when runing shcomp */
- short subshell; /* set for virtual subshell */
-+ int pwdfd; /* file descriptor for pwd */
- #ifdef _SH_PRIVATE
- _SH_PRIVATE
- #endif /* _SH_PRIVATE */
-diff -up ksh-20120801/src/cmd/ksh93/sh/init.c.orig ksh-20120801/src/cmd/ksh93/sh/init.c
---- ksh-20120801/src/cmd/ksh93/sh/init.c.orig 2012-05-11 19:19:10.000000000 +0200
-+++ ksh-20120801/src/cmd/ksh93/sh/init.c 2012-10-24 15:31:59.659485151 +0200
-@@ -1365,6 +1365,18 @@ Shell_t *sh_init(register int argc,regis
- }
- }
- sh_ioinit(shp);
-+#ifdef AT_FDCWD
-+ shp->pwdfd = sh_diropenat(shp, AT_FDCWD, e_dot, false);
-+#else
-+ /* Systems without AT_FDCWD/openat() do not use the |dir| argument */
-+ shp->pwdfd = sh_diropenat(shp, -1, e_dot, false);
-+#endif
-+#ifdef O_SEARCH
-+ /* This should _never_ happen, guranteed by design and goat sacrifice */
-+ if(shp->pwdfd < 0)
-+ errormsg(SH_DICT,ERROR_system(1), "Can't obtain directory fd.");
-+#endif
-+
- /* initialize signal handling */
- sh_siginit(shp);
- stakinstall(NIL(Stak_t*),nospace);
-diff -up ksh-20120801/src/cmd/ksh93/sh/xec.c.orig ksh-20120801/src/cmd/ksh93/sh/xec.c
---- ksh-20120801/src/cmd/ksh93/sh/xec.c.orig 2012-07-23 16:49:32.000000000 +0200
-+++ ksh-20120801/src/cmd/ksh93/sh/xec.c 2012-10-24 15:35:02.209539671 +0200
-@@ -1348,8 +1348,12 @@ int sh_exec(register const Shnode_t *t,
- {
- if(!shp->pwd)
- path_pwd(shp,0);
-- if(shp->pwd)
-- stat(".",&statb);
-+#ifndef O_SEARCH
-+ else if (shp->pwdfd>=0)
-+ fstat(shp->pwdfd,&statb);
-+ else if (shp->pwd)
-+ stat(e_dot,&statb);
-+#endif
- sfsync(NULL);
- share = sfset(sfstdin,SF_SHARE,0);
- sh_onstate(SH_STOPOK);
-@@ -1428,14 +1432,32 @@ int sh_exec(register const Shnode_t *t,
- sh_offstate(SH_NOFORK);
- if(!(nv_isattr(np,BLT_ENV)))
- {
-- if(shp->pwd)
-+#ifdef O_SEARCH
-+ while((fchdir(shp->pwdfd) < 0) && errno==EINTR)
-+ errno = 0;
-+#else
-+ if(shp->pwd || (shp->pwdfd >= 0))
- {
- struct stat stata;
- stat(".",&stata);
- /* restore directory changed */
- if(statb.st_ino!=stata.st_ino || statb.st_dev!=stata.st_dev)
-- chdir(shp->pwd);
-+ {
-+ /* chdir for directories on HSM/tapeworms may take minutes */
-+ int err=errno;
-+ if(shp->pwdfd >= 0)
-+ {
-+ while((fchdir(shp->pwdfd) < 0) && errno==EINTR)
-+ errno = err;
-+ }
-+ else
-+ {
-+ while((chdir(shp->pwd) < 0) && errno==EINTR)
-+ errno = err;
-+ }
-+ }
- }
-+#endif /* O_SEARCH */
- sh_offstate(SH_STOPOK);
- if(share&SF_SHARE)
- sfset(sfstdin,SF_PUBLIC|SF_SHARE,1);
-diff -up ksh-20120801/src/lib/libast/features/common.orig ksh-20120801/src/lib/libast/features/common
---- ksh-20120801/src/lib/libast/features/common.orig 2011-12-12 20:55:33.000000000 +0100
-+++ ksh-20120801/src/lib/libast/features/common 2012-10-24 15:54:35.433885131 +0200
-@@ -463,6 +463,66 @@ typ uintptr_t stdint.h inttypes.h no{
- typedef unsigned _ast_int4_t uintptr_t;
- #endif
- }end
-+typ _Bool = uint8_t
-+cat{
-+ #if defined(_STDC_C99) || __STDC_VERSION__ >= 199901L
-+ #include <stdbool.h>
-+ #else
-+ #define bool _Bool
-+ #define false 0
-+ #define true 1
-+ #endif
-+}end
-+tst key __thread -lpthread note{ __thread keyword exists and works with -lpthread }end execute{
-+ #include <pthread.h>
-+
-+ #define INITIAL 1
-+ #define LOOP 100
-+
-+ static __thread int specific = INITIAL;
-+ static int global = 0;
-+
-+ static void* worker(void* arg)
-+ {
-+ int k;
-+ int v;
-+ v = (int)(arg - 0);
-+ for (k = 0; k < LOOP; ++k)
-+ {
-+ specific += v;
-+ usleep(1);
-+ }
-+ if (specific != (INITIAL + LOOP * v))
-+ global = 1;
-+ return 0;
-+ }
-+ int main()
-+ {
-+ pthread_t th[2];
-+
-+ if (pthread_create(&th[0], 0, worker, (void*)0 + 5) ||
-+ pthread_create(&th[1], 0, worker, (void*)0 + 7))
-+ {
-+ NOTE("pthread_create failed");
-+ return 1;
-+ }
-+ pthread_join(th[0], 0);
-+ pthread_join(th[1], 0);
-+ if (global)
-+ {
-+ NOTE("__thread variable not thread specific");
-+ return 1;
-+ }
-+ if (specific != INITIAL)
-+ {
-+ NOTE("main __thread variable changed by another thread");
-+ return 1;
-+ }
-+ return 0;
-+ }
-+}end no{
-+ #define __thread /* __thread keyword does not exist or does not work with -lpthread */
-+}end
-
- tst - -DTRY=1 - -DTRY=1 -Dvoid=char - -DTRY=2 - -DTRY=3 - -DTRY=4 output{
- #if _STD_ && _hdr_stdarg
diff --git a/ksh-20120801-roundit.patch b/ksh-20120801-roundit.patch
deleted file mode 100644
index 015bc85..0000000
--- a/ksh-20120801-roundit.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -up ksh-20120801/src/lib/libast/sfio/sfcvt.c.rounditgood ksh-20120801/src/lib/libast/sfio/sfcvt.c
---- ksh-20120801/src/lib/libast/sfio/sfcvt.c.rounditgood 2014-02-27 16:45:54.630161032 +0100
-+++ ksh-20120801/src/lib/libast/sfio/sfcvt.c 2014-02-27 16:45:54.658161205 +0100
-@@ -491,7 +491,7 @@ int format; /* conversion format */
- *decpt += 1;
- if(!(format&SFFMT_EFORMAT))
- { /* add one more 0 for %f precision */
-- ep[-1] = '0';
-+ if(ep-sp>1) ep[-1] = '0';
- ep += 1;
- }
- }
diff --git a/ksh-20120801-sh_iovalidfd.patch b/ksh-20120801-sh_iovalidfd.patch
deleted file mode 100644
index bdd9154..0000000
--- a/ksh-20120801-sh_iovalidfd.patch
+++ /dev/null
@@ -1,79 +0,0 @@
-diff --git a/src/cmd/ksh93/include/io.h b/src/cmd/ksh93/include/io.h
---- a/src/cmd/ksh93/include/io.h
-+++ b/src/cmd/ksh93/include/io.h
-@@ -79,7 +79,7 @@ extern Sfio_t *sh_iostream(Shell_t*,int);
- extern int sh_redirect(Shell_t*,struct ionod*,int);
- extern void sh_iosave(Shell_t *, int,int,char*);
- extern int safefdnumber(Shell_t* shp, int sfd);
--extern int sh_iovalidfd(Shell_t*, int);
-+extern bool sh_iovalidfd(Shell_t*, int);
- extern int sh_inuse(Shell_t*, int);
- extern void sh_iounsave(Shell_t*);
- extern void iounpipe(Shell_t*);
-diff --git a/src/cmd/ksh93/sh/io.c b/src/cmd/ksh93/sh/io.c
---- a/src/cmd/ksh93/sh/io.c
-+++ b/src/cmd/ksh93/sh/io.c
-@@ -403,38 +403,50 @@ static short filemapsize;
-
- /* ======== input output and file copying ======== */
-
--int sh_iovalidfd(Shell_t *shp, int fd)
-+bool sh_iovalidfd(Shell_t *shp, int fd)
- {
- Sfio_t **sftable = shp->sftable;
- int max,n, **fdptrs = shp->fdptrs;
- unsigned char *fdstatus = shp->fdstatus;
- if(fd<0)
-- return(0);
-+ return(false);
- if(fd < shp->gd->lim.open_max)
-- return(1);
-+ return(true);
- max = strtol(astconf("OPEN_MAX",NiL,NiL),NiL,0);
- if(fd >= max)
- {
- errno = EBADF;
-- return(0);
-+ return(false);
- }
- n = (fd+16)&~0xf;
-- if(n > max)
-- n = max;
-+ if(n++ > max)
-+ n = max+1;
- max = shp->gd->lim.open_max;
-- shp->sftable = (Sfio_t**)calloc((n+1)*(sizeof(int*)+sizeof(Sfio_t*)+1),1);
-- if(max)
-- memcpy(shp->sftable,sftable,max*sizeof(Sfio_t*));
-+ shp->sftable = (Sfio_t**)calloc((n+1)*(sizeof(int*)+sizeof(Sfio_t*)+sizeof(*fdstatus)),1);
-+
-+ if(sftable)
-+ {
-+ --sftable;
-+ if(max)
-+ memcpy(shp->sftable,sftable,++max*sizeof(Sfio_t*));
-+
-+ }
-+
- shp->fdptrs = (int**)(&shp->sftable[n]);
- if(max)
-- memcpy(shp->fdptrs,fdptrs,max*sizeof(int*));
-+ memcpy(shp->fdptrs,--fdptrs,max*sizeof(int*));
- shp->fdstatus = (unsigned char*)(&shp->fdptrs[n]);
- if(max)
-- memcpy(shp->fdstatus,fdstatus,max);
-+ memcpy(shp->fdstatus,--fdstatus,max);
-+
- if(sftable)
- free((void*)sftable);
-- shp->gd->lim.open_max = n;
-- return(1);
-+
-+ shp->sftable++;
-+ shp->fdptrs++;
-+ shp->fdstatus++;
-+ shp->gd->lim.open_max = n-1;
-+ return(true);
- }
-
- int sh_inuse(Shell_t *shp, int fd)
diff --git a/ksh-20120801-subshell-jobwait.patch b/ksh-20120801-subshell-jobwait.patch
deleted file mode 100644
index 8dac4a1..0000000
--- a/ksh-20120801-subshell-jobwait.patch
+++ /dev/null
@@ -1,14 +0,0 @@
-diff --git a/src/cmd/ksh93/sh/xec.c b/src/cmd/ksh93/sh/xec.c
---- a/src/cmd/ksh93/sh/xec.c
-+++ b/src/cmd/ksh93/sh/xec.c
-@@ -1647,8 +1647,9 @@ int sh_exec(register const Shnode_t *t, int flags)
- {
- if (!unpipe)
- unpipe = iousepipe(shp);
-- sh_subfork();
- }
-+
-+ sh_subfork();
- }
- }
- no_fork = !ntflag && !(type&(FAMP|FPOU)) && !shp->subshell &&
diff --git a/ksh-20120801-subshell-leak.patch b/ksh-20120801-subshell-leak.patch
deleted file mode 100644
index 24c7f6b..0000000
--- a/ksh-20120801-subshell-leak.patch
+++ /dev/null
@@ -1,20 +0,0 @@
-diff --git a/src/cmd/ksh93/sh/path.c b/src/cmd/ksh93/sh/path.c
-index d723987..9965bf5 100644
---- a/src/cmd/ksh93/sh/path.c
-+++ b/src/cmd/ksh93/sh/path.c
-@@ -1791,8 +1791,12 @@ void path_alias(register Namval_t *np,register Pathcomp_t *pp)
- {
- struct stat statb;
- char *sp;
-+ Pathcomp_t *old = 0;
- nv_offattr(np,NV_NOPRINT);
- nv_stack(np,&talias_init);
-+ old = (Pathcomp_t*)np->nvalue.cp;
-+ if (old && (--old->refcount <= 0))
-+ free((void*)old);
- np->nvalue.cp = (char*)pp;
- pp->refcount++;
- nv_setattr(np,NV_TAGGED|NV_NOFREE);
---
-2.9.3
-
diff --git a/ksh-20120801-sufix.patch b/ksh-20120801-sufix.patch
deleted file mode 100644
index b820e1c..0000000
--- a/ksh-20120801-sufix.patch
+++ /dev/null
@@ -1,11 +0,0 @@
-diff -up ksh-20120801/src/cmd/ksh93/sh/io.c.sufix ksh-20120801/src/cmd/ksh93/sh/io.c
---- ksh-20120801/src/cmd/ksh93/sh/io.c.sufix 2014-04-08 14:30:14.412343555 +0200
-+++ ksh-20120801/src/cmd/ksh93/sh/io.c 2014-04-08 14:31:18.403876587 +0200
-@@ -2144,6 +2144,7 @@ static int io_prompt(Shell_t *shp,Sfio_t
- }
- #endif /* TIOCLBIC */
- cp = sh_mactry(shp,nv_getval(sh_scoped(shp,PS1NOD)));
-+ shp->exitval = 0;
- for(;c= *cp;cp++)
- {
- if(c==HIST_CHAR)
diff --git a/ksh-20120801-syntax-error.patch b/ksh-20120801-syntax-error.patch
deleted file mode 100644
index aaeef77..0000000
--- a/ksh-20120801-syntax-error.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff --git a/src/cmd/ksh93/sh/parse.c b/src/cmd/ksh93/sh/parse.c
---- a/src/cmd/ksh93/sh/parse.c
-+++ b/src/cmd/ksh93/sh/parse.c
-@@ -742,7 +742,7 @@ static Shnode_t *funct(Lex_t *lexp)
- register Shnode_t *t;
- register int flag;
- struct slnod *volatile slp=0;
-- Stak_t *savstak;
-+ Stak_t *volatile savstak=0;
- Sfoff_t first, last;
- struct functnod *volatile fp;
- Sfio_t *iop;
diff --git a/ksh-20120801-tabfix.patch b/ksh-20120801-tabfix.patch
deleted file mode 100644
index 962763e..0000000
--- a/ksh-20120801-tabfix.patch
+++ /dev/null
@@ -1,18 +0,0 @@
-diff -up ksh-20120801/src/cmd/ksh93/edit/emacs.c.tabfix ksh-20120801/src/cmd/ksh93/edit/emacs.c
---- ksh-20120801/src/cmd/ksh93/edit/emacs.c.tabfix 2012-07-17 22:44:44.000000000 +0200
-+++ ksh-20120801/src/cmd/ksh93/edit/emacs.c 2013-03-07 15:58:59.902161711 +0100
-@@ -1011,10 +1011,13 @@ static int escape(register Emacs_t* ep,r
- ep->ed->e_tabcount=0;
- else
- {
-+ int oldi = i;
- i=ed_getchar(ep->ed,0);
- ed_ungetchar(ep->ed,i);
-- if(isdigit(i))
-+ if(isdigit(i) && oldi=='=')
- ed_ungetchar(ep->ed,ESC);
-+ else if (isdigit(i) || i=='\t')
-+ ep->ed->e_tabcount=0;
- }
- }
- else
diff --git a/ksh-20120801-tpstl.patch b/ksh-20120801-tpstl.patch
deleted file mode 100644
index 41e17c8..0000000
--- a/ksh-20120801-tpstl.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -up ksh-20120801/src/cmd/ksh93/sh/init.c.tpstl ksh-20120801/src/cmd/ksh93/sh/init.c
---- ksh-20120801/src/cmd/ksh93/sh/init.c.tpstl 2014-04-03 11:21:25.395547276 +0200
-+++ ksh-20120801/src/cmd/ksh93/sh/init.c 2014-04-03 11:26:03.908867208 +0200
-@@ -332,7 +332,7 @@ static Namfun_t *clone_optindex(Namval_t
- /* Trap for restricted variables FPATH, PATH, SHELL, ENV */
- static void put_restricted(register Namval_t* np,const char *val,int flags,Namfun_t *fp)
- {
-- Shell_t *shp = nv_shell(np);
-+ Shell_t *shp = sh_getinterp();
- int path_scoped = 0, fpath_scoped=0;
- Pathcomp_t *pp;
- char *name = nv_name(np);
diff --git a/ksh-20120801-trapcom.patch b/ksh-20120801-trapcom.patch
deleted file mode 100644
index 91cb1a8..0000000
--- a/ksh-20120801-trapcom.patch
+++ /dev/null
@@ -1,98 +0,0 @@
-diff -up ksh-20120801/src/cmd/ksh93/sh/subshell.c.orig ksh-20120801/src/cmd/ksh93/sh/subshell.c
---- ksh-20120801/src/cmd/ksh93/sh/subshell.c.orig 2015-08-13 15:20:14.022167794 -0300
-+++ ksh-20120801/src/cmd/ksh93/sh/subshell.c 2015-08-13 15:21:43.263088168 -0300
-@@ -481,12 +481,12 @@ Sfio_t *sh_subshell(Shell_t *shp,Shnode_
- {
- struct subshell sub_data;
- register struct subshell *sp = &sub_data;
-- int jmpval,nsig=0,duped=0;
-+ int jmpval,isig,nsig=0,duped=0;
- long savecurenv = shp->curenv;
- int savejobpgid = job.curpgid;
- int *saveexitval = job.exitval;
- int16_t subshell;
-- char *savsig;
-+ char **savsig;
- Sfio_t *iop=0;
- struct checkpt buff;
- struct sh_scoped savst;
-@@ -561,10 +561,13 @@ Sfio_t *sh_subshell(Shell_t *shp,Shnode_
- /* save trap table */
- shp->st.otrapcom = 0;
- shp->st.otrap = savst.trap;
-- if((nsig=shp->st.trapmax*sizeof(char*))>0 || shp->st.trapcom[0])
-+ if((nsig=shp->st.trapmax)>0 || shp->st.trapcom[0])
- {
-- nsig += sizeof(char*);
-- memcpy(savsig=malloc(nsig),(char*)&shp->st.trapcom[0],nsig);
-+ ++nsig;
-+ savsig = malloc(nsig * sizeof(char*));
-+ /* contents of shp->st.trapcom may change */
-+ for (isig = 0; isig < nsig; ++isig)
-+ savsig[isig] = shp->st.trapcom[isig] == Empty ? Empty : (shp->st.trapcom[isig] ? strdup(shp->st.trapcom[isig]) : NULL);
- /* this nonsense needed for $(trap) */
- shp->st.otrapcom = (char**)savsig;
- }
-@@ -732,7 +735,10 @@ Sfio_t *sh_subshell(Shell_t *shp,Shnode_
- shp->st.otrap = 0;
- if(nsig)
- {
-- memcpy((char*)&shp->st.trapcom[0],savsig,nsig);
-+ for (isig = 0; isig < nsig; ++isig)
-+ if (shp->st.trapcom[isig] && shp->st.trapcom[isig]!=Empty)
-+ free(shp->st.trapcom[isig]);
-+ memcpy((char*)&shp->st.trapcom[0],savsig,nsig*sizeof(char*));
- free((void*)savsig);
- }
- shp->options = sp->options;
-diff -up ksh-20120801/src/cmd/ksh93/sh/xec.c.orig ksh-20120801/src/cmd/ksh93/sh/xec.c
---- ksh-20120801/src/cmd/ksh93/sh/xec.c.orig 2015-08-13 15:22:09.821062351 -0300
-+++ ksh-20120801/src/cmd/ksh93/sh/xec.c 2015-08-13 15:28:06.166662530 -0300
-@@ -3383,10 +3383,10 @@ int sh_funscope(int argn, char *argv[],i
- struct dolnod *argsav=0,*saveargfor;
- struct sh_scoped savst, *prevscope = shp->st.self;
- struct argnod *envlist=0;
-- int jmpval;
-+ int isig,jmpval;
- volatile int r = 0;
- int n;
-- char *savstak;
-+ char **savsig;
- struct funenv *fp = 0;
- struct checkpt *buffp = (struct checkpt*)stkalloc(shp->stk,sizeof(struct checkpt));
- Namval_t *nspace = shp->namespace;
-@@ -3435,10 +3435,13 @@ int sh_funscope(int argn, char *argv[],i
- }
- shp->st.cmdname = argv[0];
- /* save trap table */
-- if((nsig=shp->st.trapmax*sizeof(char*))>0 || shp->st.trapcom[0])
-+ if((nsig=shp->st.trapmax)>0 || shp->st.trapcom[0])
- {
-- nsig += sizeof(char*);
-- memcpy(savstak=stakalloc(nsig),(char*)&shp->st.trapcom[0],nsig);
-+ ++nsig;
-+ savsig = malloc(nsig * sizeof(char*));
-+ /* contents of shp->st.trapcom may change */
-+ for (isig = 0; isig < nsig; ++isig)
-+ savsig[isig] = shp->st.trapcom[isig] == Empty ? Empty : (shp->st.trapcom[isig] ? strdup(shp->st.trapcom[isig]) : NULL);
- }
- sh_sigreset(0);
- argsav = sh_argnew(shp,argv,&saveargfor);
-@@ -3502,10 +3505,14 @@ int sh_funscope(int argn, char *argv[],i
- shp->topscope = (Shscope_t*)prevscope;
- nv_getval(sh_scoped(shp,IFSNOD));
- if(nsig)
-- memcpy((char*)&shp->st.trapcom[0],savstak,nsig);
-+ {
-+ for (isig = 0; isig < nsig; ++isig)
-+ if (shp->st.trapcom[isig] && shp->st.trapcom[isig]!=Empty)
-+ free(shp->st.trapcom[isig]);
-+ memcpy((char*)&shp->st.trapcom[0],savsig,nsig*sizeof(char*));
-+ free((void*)savsig);
-+ }
- shp->trapnote=0;
-- if(nsig)
-- stakset(savstak,0);
- shp->options = options;
- shp->last_root = last_root;
- if(jmpval == SH_JMPSUB)
diff --git a/ksh-20120801-typeset.patch b/ksh-20120801-typeset.patch
deleted file mode 100644
index 03b56b8..0000000
--- a/ksh-20120801-typeset.patch
+++ /dev/null
@@ -1,16 +0,0 @@
-diff --git a/src/cmd/ksh93/bltins/typeset.c b/src/cmd/ksh93/bltins/typeset.c
-index 15fcd58..8939011 100644
---- a/src/cmd/ksh93/bltins/typeset.c
-+++ b/src/cmd/ksh93/bltins/typeset.c
-@@ -1442,7 +1442,7 @@ static void print_scan(Sfio_t *file, int flag, Dt_t *root, int option,struct tda
- tp->scanmask |= (NV_DOUBLE|NV_EXPNOTE);
- if(flag==NV_LTOU || flag==NV_UTOL)
- tp->scanmask |= NV_UTOL|NV_LTOU;
-- namec = nv_scan(root,nullscan,(void*)tp,tp->scanmask,flag);
-+ namec = nv_scan(root,nullscan,(void*)tp,tp->scanmask,flag&~NV_IARRAY);
- argv = tp->argnam = (char**)stkalloc(tp->sh->stk,(namec+1)*sizeof(char*));
- namec = nv_scan(root, pushname, (void*)tp, tp->scanmask, flag&~NV_IARRAY);
- if(mbcoll())
---
-2.9.3
-
diff --git a/ksh-20120801-unset-param.patch b/ksh-20120801-unset-param.patch
deleted file mode 100644
index 7777270..0000000
--- a/ksh-20120801-unset-param.patch
+++ /dev/null
@@ -1,17 +0,0 @@
-diff -up ksh-20120801/src/cmd/ksh93/sh/macro.c.bz1222025 ksh-20120801/src/cmd/ksh93/sh/macro.c
---- ksh-20120801/src/cmd/ksh93/sh/macro.c.bz1222025 2015-09-15 17:28:47.304722569 +0200
-+++ ksh-20120801/src/cmd/ksh93/sh/macro.c 2015-09-17 17:49:46.842891942 +0200
-@@ -1195,6 +1195,13 @@ retry1:
- }
- else
- v = 0;
-+ if(!v && sh_isoption(SH_NOUNSET))
-+ {
-+ d=fcget();
-+ fcseek(-1);
-+ if(!(d && strchr(":+-?=",d)))
-+ errormsg(SH_DICT,ERROR_exit(1),e_notset,ltos(c));
-+ }
- break;
- case S_ALP:
- if(c=='.' && type==0)
diff --git a/ksh-20120801-validate-fd.patch b/ksh-20120801-validate-fd.patch
deleted file mode 100644
index a0bc7d2..0000000
--- a/ksh-20120801-validate-fd.patch
+++ /dev/null
@@ -1,11 +0,0 @@
-diff --git a/src/cmd/ksh93/sh/xec.c b/src/cmd/ksh93/sh/xec.c
---- a/src/cmd/ksh93/sh/xec.c
-+++ b/src/cmd/ksh93/sh/xec.c
-@@ -122,6 +122,7 @@ int iousepipe(Shell_t *shp)
- return(1);
- }
- subpipe[2] = sh_fcntl(fd,F_dupfd_cloexec,10);
-+ sh_iovalidfd(shp,subpipe[2]);
- shp->fdstatus[subpipe[2]] = shp->fdstatus[1];
- while(close(fd)<0 && errno==EINTR)
- errno = err;
diff --git a/ksh-20120801-xufix.patch b/ksh-20120801-xufix.patch
deleted file mode 100644
index 496e0bf..0000000
--- a/ksh-20120801-xufix.patch
+++ /dev/null
@@ -1,29 +0,0 @@
-diff -up ksh-20120801/src/cmd/ksh93/bltins/typeset.c.xufix ksh-20120801/src/cmd/ksh93/bltins/typeset.c
---- ksh-20120801/src/cmd/ksh93/bltins/typeset.c.xufix 2015-02-03 14:47:23.266022137 +0100
-+++ ksh-20120801/src/cmd/ksh93/bltins/typeset.c 2015-02-03 14:47:23.308022046 +0100
-@@ -93,6 +93,8 @@ int b_readonly(int argc,char *argv[],
- memset((void*)&tdata,0,sizeof(tdata));
- tdata.sh = context->shp;
- tdata.aflag = '-';
-+ /* do not change size */
-+ tdata.argnum = -1;
- while((flag = optget(argv,*command=='e'?sh_optexport:sh_optreadonly))) switch(flag)
- {
- case 'p':
-diff -up ksh-20120801/src/cmd/ksh93/sh/name.c.xufix ksh-20120801/src/cmd/ksh93/sh/name.c
---- ksh-20120801/src/cmd/ksh93/sh/name.c.xufix 2015-02-03 14:47:23.281022105 +0100
-+++ ksh-20120801/src/cmd/ksh93/sh/name.c 2015-02-03 14:52:08.768404194 +0100
-@@ -3019,10 +3019,12 @@ void nv_newattr (register Namval_t *np,
- nv_onattr(np,NV_EXPORT);
- sh_envput(shp->env,np);
- }
-- if((n^newatts)==NV_EXPORT)
-+ if((n^newatts)==NV_EXPORT && size==-1)
- return;
- }
- oldsize = nv_size(np);
-+ if (size == -1)
-+ size = oldsize;
- if((size==oldsize|| (n&NV_INTEGER)) && !trans && ((n^newatts)&~NV_NOCHANGE)==0)
- {
- if(size)
diff --git a/ksh-20130214-fixkill.patch b/ksh-20130214-fixkill.patch
deleted file mode 100644
index 0862880..0000000
--- a/ksh-20130214-fixkill.patch
+++ /dev/null
@@ -1,21 +0,0 @@
-diff -up ksh-20130214/src/cmd/ksh93/sh/jobs.c.fixkill ksh-20130214/src/cmd/ksh93/sh/jobs.c
---- ksh-20130214/src/cmd/ksh93/sh/jobs.c.fixkill 2012-09-26 17:43:04.000000000 +0200
-+++ ksh-20130214/src/cmd/ksh93/sh/jobs.c 2013-02-22 16:38:05.080161740 +0100
-@@ -1104,6 +1104,8 @@ static struct process *job_bystring(regi
-
- int job_kill(register struct process *pw,register int sig)
- {
-+ if(pw==0)
-+ goto error;
- Shell_t *shp = pw->p_shp;
- register pid_t pid;
- register int r;
-@@ -1127,8 +1129,6 @@ int job_kill(register struct process *pw
- #endif /* SIGTSTP */
- job_lock();
- errno = ECHILD;
-- if(pw==0)
-- goto error;
- pid = pw->p_pid;
- #if SHOPT_COSHELL
- if(pw->p_cojob)
diff --git a/ksh-20130613-cdfix4.patch b/ksh-20130613-cdfix4.patch
deleted file mode 100644
index 5b29017..0000000
--- a/ksh-20130613-cdfix4.patch
+++ /dev/null
@@ -1,15 +0,0 @@
-diff -up ksh-20120801/src/cmd/ksh93/bltins/cd_pwd.c.cdfix4 ksh-20120801/src/cmd/ksh93/bltins/cd_pwd.c
---- ksh-20120801/src/cmd/ksh93/bltins/cd_pwd.c.cdfix4 2014-08-26 15:24:57.276953822 +0200
-+++ ksh-20120801/src/cmd/ksh93/bltins/cd_pwd.c 2014-08-26 15:25:34.738770361 +0200
-@@ -143,9 +143,9 @@ int sh_diropenat(Shell_t *shp, int dir,
- }
-
- /* Move fd to a number > 10 and *register* the fd number with the shell */
-- shfd = sh_fcntl(fd, F_dupfd_cloexec, 10);
-+ shfd = fcntl(fd, F_dupfd_cloexec, 10);
- savederrno=errno;
-- sh_close(fd);
-+ close(fd);
- errno=savederrno;
- return(shfd);
- }
diff --git a/ksh-20130628-longer.patch b/ksh-20130628-longer.patch
deleted file mode 100644
index 4761a34..0000000
--- a/ksh-20130628-longer.patch
+++ /dev/null
@@ -1,58 +0,0 @@
-diff -up ksh-20120801/src/cmd/ksh93/include/defs.h.longer ksh-20120801/src/cmd/ksh93/include/defs.h
---- ksh-20120801/src/cmd/ksh93/include/defs.h.longer 2012-06-25 20:47:47.000000000 +0200
-+++ ksh-20120801/src/cmd/ksh93/include/defs.h 2013-07-08 17:33:42.238534376 +0200
-@@ -162,8 +162,8 @@ struct shared
- Namval_t *prev_table; /* previous table used in nv_open */ \
- Sfio_t *outpool; /* ouput stream pool */ \
- long timeout; /* read timeout */ \
-- short curenv; /* current subshell number */ \
-- short jobenv; /* subshell number for jobs */ \
-+ long curenv; /* current subshell number */ \
-+ long jobenv; /* subshell number for jobs */ \
- int infd; /* input file descriptor */ \
- short nextprompt; /* next prompt is PS<nextprompt> */ \
- short poolfiles; \
-diff -up ksh-20120801/src/cmd/ksh93/include/jobs.h.longer ksh-20120801/src/cmd/ksh93/include/jobs.h
---- ksh-20120801/src/cmd/ksh93/include/jobs.h.longer 2011-12-19 13:36:37.000000000 +0100
-+++ ksh-20120801/src/cmd/ksh93/include/jobs.h 2013-07-08 17:32:52.881124147 +0200
-@@ -87,7 +87,7 @@ struct process
- unsigned short p_exit; /* exit value or signal number */
- unsigned short p_exitmin; /* minimum exit value for xargs */
- unsigned short p_flag; /* flags - see below */
-- int p_env; /* subshell environment number */
-+ long p_env; /* subshell environment number */
- #ifdef JOBS
- off_t p_name; /* history file offset for command */
- struct termios p_stty; /* terminal state for job */
-diff -up ksh-20120801/src/cmd/ksh93/sh/jobs.c.longer ksh-20120801/src/cmd/ksh93/sh/jobs.c
-diff -up ksh-20120801/src/cmd/ksh93/sh/subshell.c.longer ksh-20120801/src/cmd/ksh93/sh/subshell.c
---- ksh-20120801/src/cmd/ksh93/sh/subshell.c.longer 2013-07-08 17:32:52.874124090 +0200
-+++ ksh-20120801/src/cmd/ksh93/sh/subshell.c 2013-07-08 17:32:52.882124156 +0200
-@@ -98,7 +98,7 @@ static struct subshell
- #endif /* SHOPT_COSHELL */
- } *subshell_data;
-
--static int subenv;
-+static long subenv;
-
-
- /*
-@@ -171,7 +171,8 @@ void sh_subfork(void)
- {
- register struct subshell *sp = subshell_data;
- Shell_t *shp = sp->shp;
-- int curenv = shp->curenv, comsub=shp->comsub;
-+ long curenv = shp->curenv;
-+ int comsub=shp->comsub;
- pid_t pid;
- char *trap = shp->st.trapcom[0];
- if(trap)
-@@ -461,7 +462,7 @@ Sfio_t *sh_subshell(Shell_t *shp,Shnode_
- struct subshell sub_data;
- register struct subshell *sp = &sub_data;
- int jmpval,nsig=0,duped=0;
-- int savecurenv = shp->curenv;
-+ long savecurenv = shp->curenv;
- int savejobpgid = job.curpgid;
- int *saveexitval = job.exitval;
- int16_t subshell;
diff --git a/ksh-20140301-fikspand.patch b/ksh-20140301-fikspand.patch
deleted file mode 100644
index 9899392..0000000
--- a/ksh-20140301-fikspand.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -up ksh-20120801/src/cmd/ksh93/sh/expand.c.fikspand ksh-20120801/src/cmd/ksh93/sh/expand.c
---- ksh-20120801/src/cmd/ksh93/sh/expand.c.fikspand 2010-11-24 05:46:30.000000000 +0100
-+++ ksh-20120801/src/cmd/ksh93/sh/expand.c 2014-05-22 12:55:46.252717371 +0200
-@@ -278,6 +278,8 @@ int path_generate(Shell_t *shp,struct ar
- char comma, range=0;
- int first, last, incr, count = 0;
- char tmp[32], end[1];
-+ if(!sh_isoption(SH_BRACEEXPAND))
-+ return path_expand(shp,todo->argval,arghead);
- todo->argchn.ap = 0;
- again:
- apin = ap = todo;
diff --git a/ksh-20140415-hokaido.patch b/ksh-20140415-hokaido.patch
deleted file mode 100644
index 5ff6927..0000000
--- a/ksh-20140415-hokaido.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-diff -up ksh-20120801/src/cmd/ksh93/sh/xec.c.hokaido ksh-20120801/src/cmd/ksh93/sh/xec.c
---- ksh-20120801/src/cmd/ksh93/sh/xec.c.hokaido 2014-09-18 14:41:57.696756230 +0200
-+++ ksh-20120801/src/cmd/ksh93/sh/xec.c 2014-09-18 14:43:55.439205247 +0200
-@@ -1633,12 +1633,20 @@ int sh_exec(register const Shnode_t *t,
- #endif /* SHOPT_COSHELL */
- if(shp->subshell)
- {
-+ int comsubsave = shp->comsub;
-+ if(comsubsave==1)
-+ shp->comsub = 2;
- sh_subtmpfile(shp);
-+ shp->comsub = comsubsave;
-+ if(shp->comsub==1 && (!(shp->fdstatus[1]&IONOSEEK)))
-+ unpipe = iousepipe(shp);
-+
- if((type&(FAMP|TFORK))==(FAMP|TFORK))
- {
- if(shp->comsub && !(shp->fdstatus[1]&IONOSEEK))
- {
-- unpipe = iousepipe(shp);
-+ if (!unpipe)
-+ unpipe = iousepipe(shp);
- sh_subfork();
- }
- }
-@@ -2107,7 +2115,11 @@ int sh_exec(register const Shnode_t *t,
- job.curjobid = 0;
- if(shp->subshell)
- {
-+ int comsubsave = shp->comsub;
-+ if(comsubsave==1)
-+ shp->comsub = 2;
- sh_subtmpfile(shp);
-+ shp->comsub = comsubsave;
- if(shp->comsub==1 && !(shp->fdstatus[1]&IONOSEEK))
- iousepipe(shp);
- }
diff --git a/ksh-20140801-arraylen.patch b/ksh-20140801-arraylen.patch
deleted file mode 100644
index 34c9b6b..0000000
--- a/ksh-20140801-arraylen.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- ksh-20120801/src/cmd/ksh93/sh/xec.c 2015-04-02 10:55:26.228017873 -0400
-+++ ksh-20120801/src/cmd/ksh93/sh/xec.c 2015-04-02 10:56:04.099017700 -0400
-@@ -1234,7 +1234,7 @@ int sh_exec(register const Shnode_t *t,
- if((io||argn))
- {
- Shbltin_t *bp=0;
-- static char *argv[1];
-+ static char *argv[2];
- int tflags = 1;
- if(np && nv_isattr(np,BLT_DCL))
- tflags |= 2;
diff --git a/ksh-20140801-diskfull.patch b/ksh-20140801-diskfull.patch
deleted file mode 100644
index 7276363..0000000
--- a/ksh-20140801-diskfull.patch
+++ /dev/null
@@ -1,21 +0,0 @@
-diff -up ksh-20120801/src/cmd/ksh93/sh/main.c.orig ksh-20120801/src/cmd/ksh93/sh/main.c
---- ksh-20120801/src/cmd/ksh93/sh/main.c.orig 2015-04-29 16:49:11.502958000 -0300
-+++ ksh-20120801/src/cmd/ksh93/sh/main.c 2015-05-08 18:19:55.688776922 -0300
-@@ -423,7 +423,7 @@ static void exfile(register Shell_t *shp
- sfsync(shp->outpool);
- shp->st.execbrk = shp->st.breakcnt = 0;
- /* check for return from profile or env file */
-- if(sh_isstate(SH_PROFILE) && (jmpval==SH_JMPFUN || jmpval==SH_JMPEXIT))
-+ if(sh_isstate(SH_PROFILE) && (jmpval==SH_JMPFUN || jmpval==SH_JMPEXIT || jmpval==SH_JMPERREXIT))
- {
- sh_setstate(states);
- goto done;
-@@ -598,7 +598,7 @@ done:
- }
- if(jmpval == SH_JMPSCRIPT)
- siglongjmp(*shp->jmplist,jmpval);
-- else if(jmpval == SH_JMPEXIT)
-+ else if(jmpval == SH_JMPEXIT || jmpval == SH_JMPERREXIT)
- sh_done(shp,0);
- if(fno>0)
- sh_close(fno);
diff --git a/ksh-20140929-safefd.patch b/ksh-20140929-safefd.patch
deleted file mode 100644
index 80db205..0000000
--- a/ksh-20140929-safefd.patch
+++ /dev/null
@@ -1,52 +0,0 @@
-diff -up ksh-20120801/src/cmd/ksh93/include/io.h.safefd ksh-20120801/src/cmd/ksh93/include/io.h
---- ksh-20120801/src/cmd/ksh93/include/io.h.safefd 2015-03-03 18:21:40.544732158 +0100
-+++ ksh-20120801/src/cmd/ksh93/include/io.h 2015-03-03 18:22:16.284447849 +0100
-@@ -78,6 +78,7 @@ extern void sh_iorestore(Shell_t*,int,i
- extern Sfio_t *sh_iostream(Shell_t*,int);
- extern int sh_redirect(Shell_t*,struct ionod*,int);
- extern void sh_iosave(Shell_t *, int,int,char*);
-+extern int safefdnumber(Shell_t* shp, int sfd);
- extern int sh_iovalidfd(Shell_t*, int);
- extern int sh_inuse(Shell_t*, int);
- extern void sh_iounsave(Shell_t*);
-diff -up ksh-20120801/src/cmd/ksh93/sh/io.c.safefd ksh-20120801/src/cmd/ksh93/sh/io.c
---- ksh-20120801/src/cmd/ksh93/sh/io.c.safefd 2015-03-03 18:21:40.511732421 +0100
-+++ ksh-20120801/src/cmd/ksh93/sh/io.c 2015-03-03 18:21:40.544732158 +0100
-@@ -1724,6 +1724,25 @@ void sh_iosave(Shell_t *shp, register in
- }
- }
-
-+int safefdnumber(Shell_t* shp, int sfd)
-+{
-+ register int fd;
-+
-+ while(1)
-+ {
-+ for(fd=0; fd < shp->topfd; fd++)
-+ {
-+ if (filemap[fd].save_fd==sfd || filemap[fd].orig_fd==sfd || (fcntl(sfd, F_GETFD) != -1 || errno != EBADF))
-+ {
-+ sfd++;
-+ continue;
-+ }
-+ }
-+ break;
-+ }
-+ return sfd;
-+}
-+
- /*
- * close all saved file descriptors
- */
-diff -up ksh-20120801/src/cmd/ksh93/sh/subshell.c.safefd ksh-20120801/src/cmd/ksh93/sh/subshell.c
---- ksh-20120801/src/cmd/ksh93/sh/subshell.c.safefd 2015-03-03 18:21:40.531732261 +0100
-+++ ksh-20120801/src/cmd/ksh93/sh/subshell.c 2015-03-03 18:21:40.544732158 +0100
-@@ -673,7 +673,7 @@ Sfio_t *sh_subshell(Shell_t *shp,Shnode_
- }
- if(iop && sffileno(iop)==1)
- {
-- int fd=sfsetfd(iop,3);
-+ int fd=sfsetfd(iop,safefdnumber(shp,3));
- if(fd<0)
- {
- shp->toomany = 1;
diff --git a/ksh.spec b/ksh.spec
index b591ee4..b73280c 100644
--- a/ksh.spec
+++ b/ksh.spec
@@ -1,321 +1,96 @@
-%global releasedate 20120801
-%global release_date %{lua:reldate=rpm.expand("%{releasedate}");print(("%s-%s-%s"):format(reldate:sub(0,4),reldate:sub(5,6),reldate:sub(7)))}
-
Name: ksh
Summary: The Original ATT Korn Shell
URL: http://www.kornshell.com/
License: EPL
-Version: %{releasedate}
-Release: 250%{?dist}
-Source0: http://www.research.att.com/~gsf/download/tgz/ast-ksh.%{release_date}.tgz
-Source1: http://www.research.att.com/~gsf/download/tgz/INIT.%{release_date}.tgz
-Source2: kshcomp.conf
-Source3: kshrc.rhs
-Source4: dotkshrc
-
-# expected results of test suite
-Source5: expectedresults.log
-
-# don't use not wanted/needed builtins - Fedora/RHEL specific
-Patch1: ksh-20070328-builtins.patch
-
-# fix regression test suite to be usable during packagebuild - Fedora/RHEL specific
-Patch2: ksh-20100826-fixregr.patch
-
-# fedora/rhel specific, rhbz#619692
-Patch6: ksh-20080202-manfix.patch
-
-# rhbz#702008
-Patch17: ksh-20100202-pathvar.patch
-
-# rhbz#924440
-Patch18: ksh-20100621-fdstatus.patch
-
-# fixes for regressions found in ksh-20120801 rebase
-Patch19: ksh-20120801-rmdirfix.patch
-Patch20: ksh-20120801-cdfix.patch
-Patch21: ksh-20120801-cdfix2.patch
-Patch22: ksh-20120801-tabfix.patch
-Patch23: ksh-20130214-fixkill.patch
-
-# for ksh <= 2013-05-31, rhbz#960034
-Patch24: ksh-20120801-kshmfix.patch
-
-# for ksh <= 2016-06-28, rhbz#921455
-Patch25: ksh-20120801-memlik.patch
-
-# for ksh <= 2013-03-20, rhbz#922851
-Patch26: ksh-20120801-forkbomb.patch
-
-# for ksh <= 2013-04-19, rhbz#913110
-Patch27: ksh-20120801-macro.patch
-
-# not completely upstream yet, rhbz#858263
-Patch29: ksh-20130628-longer.patch
-
-# for ksh <= 2013-07-19, rhbz#982142
-Patch30: ksh-20120801-mlikfiks.patch
-
-# not yet upstream, related to 2012-08-01 rebase
-Patch31: ksh-20120801-covsfix.patch
-
-# rhbz#1007816
-Patch32: ksh-20100621-manfix3.patch
-
-# rhbz#1016611
-Patch33: ksh-20120801-nomulti.patch
-
-# for ksh <= 2014-01-14, rhbz#
-Patch34: ksh-20120801-mtty.patch
-
-# from upstream, rbzh#1048272
-Patch35: ksh-20120801-fd2lost.patch
-
-# sent upstream 2014-01, rhbz#1047507
-Patch36: ksh-20120801-argvfix.patch
-
-# for ksh <= 2014-01-14, rhbz#1048995
-Patch37: ksh-20120801-memlik3.patch
-
-# for ksh <= 2013-04-09, rhbz#960371
-Patch38: ksh-20120801-lexfix.patch
-
-# not yet upstream, for ksh <= 2014-02-26, rhbz#1070328
-Patch39: ksh-20120801-filecomsubst.patch
-
-# for ksh <= 2014-06-25, rhbz#825520,rhbz#1084406
-Patch40: ksh-20120801-crash.patch
-
-# for ksh < 2013-03-19, rhbz#1085385
-Patch41: ksh-20120801-sufix.patch
-
-# sent upstream, rhbz#1099935
-Patch42: ksh-20140301-fikspand.patch
-
-# for ksh < 2014-04-15, rhbz#1070871
-Patch43: ksh-20120801-roundit.patch
-
-# for ksh < 2014-04-15, rhbz#1111120
-Patch44: ksh-20120801-heresub.patch
-
-# not included upstream yet, rhbz#1077090
-Patch45: ksh-20140415-hokaido.patch
-
-# for ksh < 2012-10-04, rhbz#1121960
-Patch46: ksh-20120801-tpstl.patch
-
-# sent upstream, rhbz#1100215
-Patch47: ksh-20120801-manfix4.patch
-
-# not upstream yet, rhbz#1100215
-Patch48: ksh-20120801-fununset.patch
-
-# for ksh < 2014-06-25, rhbz#1109893
-Patch49: ksh-20120801-cdfix3.patch
-
-# sent upstream, rhbz#1116506
-Patch50: ksh-20120801-locking.patch
-
-# for ksh <= 2013-06-13, rhbz#1133585
-Patch51: ksh-20130613-cdfix4.patch
-
-Patch52: ksh-20120801-retfix.patch
-
-# sent upstream, for ksh <= 2014-09-30
-Patch53: ksh-20120801-cdfork.patch
-
-# not upstream yet, for ksh <= 2015-04-03, rhbz#1200534
-Patch54: ksh-20140801-arraylen.patch
-
-# sent upstream, for ksh <= 2014-09-29, rhbz#1212993
-Patch55: ksh-20140801-diskfull.patch
-
-# not upstream yet, rhbz#1192026
-Patch56: ksh-20120801-xufix.patch
-
-# sent upstream, for ksh <= 2014-12-18, rhbz#1192119
-Patch58: ksh-20120801-alarmifs.patch
-
-# not yet upstream, rhbz#1202439
-Patch59: ksh-20140929-safefd.patch
-
-# workaround, for ksh < 2013-05-24, rhbz#1211540
-Patch60: ksh-20120801-trapcom.patch
-
-# not yet upstream, rhbz#1217237
-Patch64: ksh-20120801-nohupfork.patch
-
-# from upstream, for ksh <= 20130409, rhbz#1241014
-Patch65: ksh-20120801-parserfix.patch
+Version: 2020.0.0
+Release: 0.1%{?dist}
+# We are upgrading from ksh-20120801-250, so set epoch.
+Epoch: 1
+Source0: https://github.com/att/ast/releases/download/%{version}-alpha1/%{name}-%{...
+Source1: kshcomp.conf
+Source2: kshrc.rhs
+Source3: dotkshrc
-# not upstream yet, rhbz#1211538
-Patch66: ksh-20120801-oldenvinit.patch
-
-# from upsteam, for ksh < 2012-10-04, rhbz#1193557
-Patch67: ksh-20120801-emptyarrayinit.patch
-
-# not upstream yet, rhbz#1371630
-Patch68: ksh-20120801-typeset.patch
-
-# not upstream yet, rhbz#1321443
-Patch69: ksh-20120801-dotdoublefree.patch
-
-# not upstream yet, rhbz#1405784
-Patch70: ksh-20120801-subshell-leak.patch
-
-# rhbz#1189297
-Patch71: ksh-20120801-assoc-unset-leak.patch
-
-# rhbz#1222025
-Patch72: ksh-20120801-unset-param.patch
-
-# rhbz#1269088
-Patch73: ksh-20120801-badgcc.patch
-
-# rhbz#1299484
-Patch74: ksh-20120801-mb-after-argvar.patch
-Patch75: ksh-20120801-F_dupfd_cloexec.patch
-
-# rhbz#1441142
-Patch76: ksh-20120801-kia.patch
-
-# rhbz#1417886
-Patch77: ksh-20120801-iso8859.patch
-
-# rhbz#1451057
-Patch78: ksh-20120801-syntax-error.patch
-
-# rhbz#1477082
-Patch79: ksh-20120801-glibc-build-fix.patch
-
-# rhbz#1459000
-Patch80: ksh-20120801-jobwait-sigstop.patch
-
-# rhbz#1462347
-Patch81: ksh-20120801-subshell-jobwait.patch
-
-# rhbz#1471874
-Patch82: ksh-20120801-posix-exit.patch
-
-# rhbz#1464409
-Patch83: ksh-20120801-sh_iovalidfd.patch
-
-# rhbz#1537053
-Patch84: ksh-20120801-validate-fd.patch
-
-# There were couple of places where CCFLAGS variable was not passed while
-# compiling binaries. This patch fixes it. Loosely related to rhbz#1548549.
-Patch85: ksh-20120801-ccflags.patch
-
-Patch86: ksh-20120801-nv_open-memcmp.patch
+Provides: /bin/ksh
-Conflicts: pdksh
-Requires: coreutils, diffutils
-BuildRequires: gcc
-BuildRequires: bison
-# regression test suite uses 'ps' from procps
-BuildRequires: procps
-Requires(post): grep, coreutils, systemd
+BuildRequires: meson
+BuildRequires: gcc
+BuildRequires: glibc-devel
+# This package is require by test cases
+# It should be enabled when we start running test cases in package builds
+# BuildRequires: glibc-langpack-zh
+BuildRequires: ed
+Conflicts: pdksh
+Requires(post): grep, coreutils, systemd-units
Requires(postun): sed
-Provides: /bin/ksh
+Provides: /bin/ksh
%description
-KSH-93 is the most recent version of the KornShell by David Korn of
-AT&T Bell Laboratories.
KornShell is a shell programming language, which is upward compatible
with "sh" (the Bourne Shell).
%prep
-%setup -q -c
-%setup -q -T -D -a 1
-%autopatch -p1
-
-#/dev/fd test does not work because of mock
-sed -i 's|ls /dev/fd|ls /proc/self/fd|' src/cmd/ksh93/features/options
-
-# sh/main.c was not using CCFLAGS
-sed -i '/-c sh\/main.c/s|${mam_cc_FLAGS} |${mam_cc_FLAGS} ${CCFLAGS} |p' src/cmd/ksh93/Mamfile
-
-# disable register for debugging
-sed -i 1i"#define register" src/lib/libast/include/ast.h
+%autosetup -n %{name}-%{version}-alpha1
%build
-XTRAFLAGS=""
-for f in -Wno-unknown-pragmas -Wno-missing-braces -Wno-unused-result -Wno-return-type -Wno-int-to-pointer-cast -Wno-parentheses -Wno-unused -Wno-unused-but-set-variable -Wno-cpp -P
-do
- gcc $f -E - </dev/null >/dev/null 2>&1 && XTRAFLAGS="$XTRAFLAGS $f"
-done
-./bin/package
-./bin/package make mamake ||:
-./bin/package make mamake ||:
-export CCFLAGS="$RPM_OPT_FLAGS $RPM_LD_FLAGS -fno-strict-aliasing $XTRAFLAGS"
-export CC=gcc
-./bin/package make -S
-
-#cp lib/package/LICENSES/epl LICENSE
+%meson -Dbuild-api-tests=false
+%meson_build
%install
-mkdir -p %{buildroot}{/bin,%{_bindir},%{_mandir}/man1}
-install -p -m 755 arch/*/bin/ksh %{buildroot}%{_bindir}/ksh
-install -p -m 755 arch/*/bin/shcomp %{buildroot}%{_bindir}/shcomp
-install -p -m 644 arch/*/man/man1/sh.1 %{buildroot}%{_mandir}/man1/ksh.1
-mkdir -p %{buildroot}%{_sysconfdir}/skel
-install -p -m 644 %{SOURCE4} %{buildroot}%{_sysconfdir}/skel/.kshrc
-install -p -m 644 %{SOURCE3} %{buildroot}%{_sysconfdir}/kshrc
-install -p -D -m 644 %{SOURCE2} %{buildroot}%{_sysconfdir}/binfmt.d/kshcomp.conf
-
-%check
-[ -f ./skipcheck -o -f ./../skipcheck ] && exit 0 ||:
-%if 0%{?rhel} > 6
-%ifarch s390
-exit 0
-%endif
-%endif
-
-export SHELL=$(ls $(pwd)/arch/*/bin/ksh)
-cd src/cmd/ksh93/tests/
-ulimit -c unlimited
-if [ ! -e /dev/fd ]
+%meson_install
+# Allow switching between different ksh implementations (for e.g. mksh) through alternatives.
+mv %{buildroot}/%{_bindir}/ksh %{buildroot}/%{_bindir}/ksh93
+mv %{buildroot}/%{_bindir}/shcomp %{buildroot}/%{_bindir}/shcomp93
+# http://mesonbuild.com/Release-notes-for-0-49-0.html#manpages-are-no-longe...
+# meson 0.49 does not compress man pages
+if [[ -e %{buildroot}/%{_mandir}/man1/ksh.1.gz ]]
then
- echo "ERROR: /dev/fd does not exist, regression tests skipped"
- exit 0
-fi
-$SHELL ./shtests 2>&1 | tee testresults.log
-ls core.* 2>/dev/null ||:
-exit 0
-sed -e '/begins at/d' -e '/ 0 error/d' -e 's/at [^\[]*\[/\[/' testresults.log -e '/tests skipped/d' >filteredresults.log
-if ! cmp filteredresults.log %{SOURCE5} >/dev/null || ls core.*
-then
- echo "Regression tests failed"
- diff -Naurp %{SOURCE5} filteredresults.log
- exit -1
+ mv %{buildroot}/%{_mandir}/man1/ksh.1.gz %{buildroot}/%{_mandir}/man1/ksh93.1.gz
+else
+ mv %{buildroot}/%{_mandir}/man1/ksh.1 %{buildroot}/%{_mandir}/man1/ksh93.1
fi
+install -p -D -m 644 %{SOURCE1} %{buildroot}%{_sysconfdir}/binfmt.d/kshcomp.conf
+install -p -m 644 %{SOURCE2} %{buildroot}%{_sysconfdir}/kshrc
+install -p -D -m 644 %{SOURCE3} %{buildroot}%{_sysconfdir}/skel/.kshrc
+
%post
-if [ ! -f /etc/shells ]; then
- echo "/bin/ksh" > /etc/shells
- echo "/usr/bin/ksh" >> /etc/shells
-else
- if ! grep -q '^/bin/ksh$' /etc/shells ; then
- echo "/bin/ksh" >> /etc/shells
- fi
- if ! grep -q '^/usr/bin/ksh$' /etc/shells ; then
- echo "/usr/bin/ksh" >> /etc/shells
+for s in /bin/ksh /usr/bin/ksh
+do
+ if [ ! -f /etc/shells ]; then
+ echo "$s" > /etc/shells
+ else
+ if ! grep -q '^'"$s"'$' /etc/shells ; then
+ echo "$s" >> /etc/shells
fi
-fi
+ fi
+done
/bin/systemctl try-restart systemd-binfmt.service >/dev/null 2>&1 || :
-%postun
-if [ ! -f /bin/ksh ]; then
- sed -i '/^\/bin\/ksh$/ d' /etc/shells
-fi
-if [ ! -f /usr/bin/ksh ]; then
- sed -i '/^\/usr\/bin\/ksh$/ d' /etc/shells
+# Suppress any error encountered while upgrading from ksh-20120801-250
+%{_sbindir}/alternatives --install /bin/ksh ksh \
+ /bin/ksh93 50 \
+ --slave %{_mandir}/man1/ksh.1.gz ksh-man \
+ %{_mandir}/man1/ksh93.1.gz \
+ --slave /bin/shcomp shcomp93 \
+ /bin/shcomp93 2>/dev/null
+
+%preun
+# Do not remove ksh from alternatives on upgrades
+if [ $1 -eq 0 ]; then
+ %{_sbindir}/alternatives --remove ksh /bin/ksh93
fi
-%verifyscript
+%postun
+for s in /bin/ksh /usr/bin/ksh
+do
+ if [ ! -f $s ]; then
+ sed -i '\|^'"$s"'$|d' /etc/shells
+ fi
+done
+
echo -n "Looking for ksh in /etc/shells... "
if ! grep '^/bin/ksh$' /etc/shells > /dev/null; then
echo "missing"
@@ -324,26 +99,29 @@ else
echo "found"
fi
+# ksh-20120801-250 did not use alternatives, so while upgrading ensure that
+# alternatives are set correctly
+%triggerpostun -- ksh < 1:2020.0.0-0.1
+%{_sbindir}/alternatives --auto ksh
+
%files
%doc src/cmd/ksh93/COMPATIBILITY src/cmd/ksh93/RELEASE src/cmd/ksh93/TYPES
# LICENSE file is missing, temporarily?
-%{_bindir}/ksh
-%{_bindir}/shcomp
+%{_bindir}/ksh93
+%{_bindir}/shcomp93
%{_mandir}/man1/*
%config(noreplace) %{_sysconfdir}/skel/.kshrc
%config(noreplace) %{_sysconfdir}/kshrc
%config(noreplace) %{_sysconfdir}/binfmt.d/kshcomp.conf
%changelog
-* Fri Feb 01 2019 Fedora Release Engineering <releng(a)fedoraproject.org> - 20120801-250
-- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild
+* Wed Apr 17 2019 Siteshwar Vashisht <svashisht(a)redhat.com> - 2020.0.0-0.1
+- Rebase to 2020.0.0-alpha1
+ Resolves: #1700777
-* Sun Oct 14 2018 Peter Robinson <pbrobinson(a)fedoraproject.org> 20120801-249
+* Sun Oct 14 2018 Peter Robinson <pbrobinson(a)fedoraproject.org> 20120801-248
- chkconfig is no longer needed
-* Fri Jul 13 2018 Fedora Release Engineering <releng(a)fedoraproject.org> - 20120801-248
-- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild
-
* Mon Jun 04 2018 Siteshwar Vashisht <svashisht(a)redhat.com> - 20120801-247
- Fix a crash caused by memcmp()
Resolves: #1583226
diff --git a/sources b/sources
index 935961b..9fd6ceb 100644
--- a/sources
+++ b/sources
@@ -1,2 +1 @@
-3a6e2d01b1b049bdef968dc5a24c1ea7 ast-ksh.2012-08-01.tgz
-af699318bea7398f0f413b839bfcd762 INIT.2012-08-01.tgz
+SHA512 (ksh-2020.0.0-alpha1.tar.gz) = 56c805bebe963dee7c27ba0357e26957fd8439f42c26f290ab32488ddde99f4b824e403c5dc097194eaf600e7379a010b1be4bf1e70bee76402e84909b38d981
commit 66346e7b07dab65a091832eab2c5e2b73389a78f
Author: Fedora Release Engineering <releng(a)fedoraproject.org>
Date: Fri Feb 1 06:05:28 2019 +0000
- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng(a)fedoraproject.org>
diff --git a/ksh.spec b/ksh.spec
index 2d6ab80..b591ee4 100644
--- a/ksh.spec
+++ b/ksh.spec
@@ -6,7 +6,7 @@ Summary: The Original ATT Korn Shell
URL: http://www.kornshell.com/
License: EPL
Version: %{releasedate}
-Release: 249%{?dist}
+Release: 250%{?dist}
Source0: http://www.research.att.com/~gsf/download/tgz/ast-ksh.%{release_date}.tgz
Source1: http://www.research.att.com/~gsf/download/tgz/INIT.%{release_date}.tgz
Source2: kshcomp.conf
@@ -335,6 +335,9 @@ fi
%config(noreplace) %{_sysconfdir}/binfmt.d/kshcomp.conf
%changelog
+* Fri Feb 01 2019 Fedora Release Engineering <releng(a)fedoraproject.org> - 20120801-250
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild
+
* Sun Oct 14 2018 Peter Robinson <pbrobinson(a)fedoraproject.org> 20120801-249
- chkconfig is no longer needed
commit 4e8c001ae97c7f5144dc48f6788f620b24d9f52e
Author: Peter Robinson <pbrobinson(a)gmail.com>
Date: Sun Oct 14 22:44:09 2018 +0100
chkconfig is no longer needed
diff --git a/ksh.spec b/ksh.spec
index 78db6bf..2d6ab80 100644
--- a/ksh.spec
+++ b/ksh.spec
@@ -6,7 +6,7 @@ Summary: The Original ATT Korn Shell
URL: http://www.kornshell.com/
License: EPL
Version: %{releasedate}
-Release: 248%{?dist}
+Release: 249%{?dist}
Source0: http://www.research.att.com/~gsf/download/tgz/ast-ksh.%{release_date}.tgz
Source1: http://www.research.att.com/~gsf/download/tgz/INIT.%{release_date}.tgz
Source2: kshcomp.conf
@@ -210,12 +210,12 @@ Patch85: ksh-20120801-ccflags.patch
Patch86: ksh-20120801-nv_open-memcmp.patch
Conflicts: pdksh
-Requires: coreutils, diffutils, chkconfig
+Requires: coreutils, diffutils
BuildRequires: gcc
BuildRequires: bison
# regression test suite uses 'ps' from procps
BuildRequires: procps
-Requires(post): grep, coreutils, systemd-units
+Requires(post): grep, coreutils, systemd
Requires(postun): sed
Provides: /bin/ksh
@@ -335,6 +335,9 @@ fi
%config(noreplace) %{_sysconfdir}/binfmt.d/kshcomp.conf
%changelog
+* Sun Oct 14 2018 Peter Robinson <pbrobinson(a)fedoraproject.org> 20120801-249
+- chkconfig is no longer needed
+
* Fri Jul 13 2018 Fedora Release Engineering <releng(a)fedoraproject.org> - 20120801-248
- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild
commit 82ac4c503a23661f6db658ed463b531e40595eed
Author: Petr plchal <psplicha(a)redhat.com>
Date: Wed Sep 12 09:04:27 2018 +0200
Use FMF filter instead of listing tests manually
There is a new feature in the Standard Test Roles which allows to
use an FMF filter instead of listing all tests manually. This
commit includes all Tier1 and Tier2 tests for respective targets.
diff --git a/tests/tests.yml b/tests/tests.yml
index b551d00..e483864 100644
--- a/tests/tests.yml
+++ b/tests/tests.yml
@@ -9,10 +9,7 @@
repositories:
- repo: "https://src.fedoraproject.org/tests/shell.git"
dest: "shell"
- tests:
- - shell/func
- - shell/login
- - shell/smoke
+ fmf_filter: "tier: 1, 2 & tags: classic"
environment:
PACKAGES: ksh
SH_BIN: ksh
@@ -30,9 +27,7 @@
repositories:
- repo: "https://src.fedoraproject.org/tests/shell.git"
dest: "shell"
- tests:
- - shell/func
- - shell/smoke
+ fmf_filter: "tier: 1, 2 & tags: container, atomic"
environment:
PACKAGES: ksh
SH_BIN: ksh
commit 1be92b2a9a0dddc246fb7b39b841666b1372a6f0
Author: Siteshwar Vashisht <svashisht(a)redhat.com>
Date: Fri Jul 20 17:31:29 2018 +0200
Add gcc as build dependency
Reference: https://fedoraproject.org/wiki/Changes/Remove_GCC_from_BuildRoot
Resolves: #1604523
diff --git a/ksh.spec b/ksh.spec
index e54cd52..78db6bf 100644
--- a/ksh.spec
+++ b/ksh.spec
@@ -211,6 +211,7 @@ Patch86: ksh-20120801-nv_open-memcmp.patch
Conflicts: pdksh
Requires: coreutils, diffutils, chkconfig
+BuildRequires: gcc
BuildRequires: bison
# regression test suite uses 'ps' from procps
BuildRequires: procps
commit 56858f0380067bc828700ccb05bfa75600643912
Author: Fedora Release Engineering <releng(a)fedoraproject.org>
Date: Fri Jul 13 07:25:36 2018 +0000
- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng(a)fedoraproject.org>
diff --git a/ksh.spec b/ksh.spec
index c6c7fdd..e54cd52 100644
--- a/ksh.spec
+++ b/ksh.spec
@@ -6,7 +6,7 @@ Summary: The Original ATT Korn Shell
URL: http://www.kornshell.com/
License: EPL
Version: %{releasedate}
-Release: 247%{?dist}
+Release: 248%{?dist}
Source0: http://www.research.att.com/~gsf/download/tgz/ast-ksh.%{release_date}.tgz
Source1: http://www.research.att.com/~gsf/download/tgz/INIT.%{release_date}.tgz
Source2: kshcomp.conf
@@ -334,6 +334,9 @@ fi
%config(noreplace) %{_sysconfdir}/binfmt.d/kshcomp.conf
%changelog
+* Fri Jul 13 2018 Fedora Release Engineering <releng(a)fedoraproject.org> - 20120801-248
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild
+
* Mon Jun 04 2018 Siteshwar Vashisht <svashisht(a)redhat.com> - 20120801-247
- Fix a crash caused by memcmp()
Resolves: #1583226
5 years, 1 month
Architecture specific change in rpms/ksh.git
by githook-noreply@fedoraproject.org
The package rpms/ksh.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/ksh.git/commit/?id=da51c676393df7....
Change:
-%ifarch s390
Thanks.
Full change:
============
commit da51c676393df765d3829c5fae08450185e25939
Author: Siteshwar Vashisht <svashisht(a)redhat.com>
Date: Wed Apr 17 14:00:25 2019 +0200
Rebase to 2020.0.0-alpha1
* All the downstream patches have been upstreamed, so they are being
removed with this commit.
* It introduces alternatives to switch between different versions of
ksh.
Resolves: #1700777
diff --git a/.gitignore b/.gitignore
index 6be3080..2d4ea2b 100644
--- a/.gitignore
+++ b/.gitignore
@@ -59,3 +59,4 @@ INIT.2010-07-01.tgz
/ast-ksh.2012-08-01.tgz
/INIT.2012-08-01.tgz
/ast-ksh.2012-08-01b.tgz
+/ksh-2020.0.0-alpha1.tar.gz
diff --git a/ksh-20070328-builtins.patch b/ksh-20070328-builtins.patch
deleted file mode 100644
index 061bf9a..0000000
--- a/ksh-20070328-builtins.patch
+++ /dev/null
@@ -1,11 +0,0 @@
-diff -up ksh-20080202/src/cmd/ksh93/data/builtins.c.builtins ksh-20080202/src/cmd/ksh93/data/builtins.c
---- ksh-20080202/src/cmd/ksh93/data/builtins.c.builtins 2008-10-01 09:24:46.000000000 +0200
-+++ ksh-20080202/src/cmd/ksh93/data/builtins.c 2008-10-01 09:24:58.000000000 +0200
-@@ -129,7 +129,6 @@ const struct shtable3 shtab_builtins[] =
- CMDLIST(dirname)
- CMDLIST(getconf)
- CMDLIST(head)
-- CMDLIST(mkdir)
- CMDLIST(logname)
- CMDLIST(cat)
- CMDLIST(cmp)
diff --git a/ksh-20080202-manfix.patch b/ksh-20080202-manfix.patch
deleted file mode 100644
index 8fe4225..0000000
--- a/ksh-20080202-manfix.patch
+++ /dev/null
@@ -1,47 +0,0 @@
-diff -up ksh-20120801/src/cmd/ksh93/sh.1.manfix ksh-20120801/src/cmd/ksh93/sh.1
---- ksh-20120801/src/cmd/ksh93/sh.1.manfix 2012-06-18 16:16:22.000000000 +0200
-+++ ksh-20120801/src/cmd/ksh93/sh.1 2013-04-30 13:35:17.393909479 +0200
-@@ -39,7 +39,7 @@ ksh93, rksh93, pfksh93 \- KornShell, a s
- .B ksh93
- .\}
- [
--.B \(+-abcefhikmnoprstuvxBCDP
-+.B \(+-abcefhiknoprstuvxBCDP
- ] [
- .B \-R
- file ] [
-@@ -47,25 +47,6 @@ file ] [
- option ] .\|.\|. [
- .B \-
- ] [ arg .\|.\|. ]
--.br
--.if \nZ=0 \{\
--.B rsh
--.\}
--.if \nZ=1 \{\
--.B rksh
--.\}
--.if \nZ=2 \{\
--.B rksh93
--.\}
--[
--.B \(+-abcefhikmnoprstuvxBCD
--] [
--.B \-R
--file ] [
--.B \(+-o
--option ] .\|.\|. [
--.B \-
--] [ arg .\|.\|. ]
- .SH DESCRIPTION
- .if \nZ=0 .I Sh\^
- .if \nZ=1 .I Ksh\^
-@@ -7963,6 +7944,8 @@ option is used
- to generate a cross reference database
- that can be used by a separate utility
- to find definitions and references for variables and commands.
-+The filename argument specifies the generated database. A script file must be
-+provided on the command line as well.
- .PP
- The remaining options and arguments are described under the
- .B set
diff --git a/ksh-20100202-pathvar.patch b/ksh-20100202-pathvar.patch
deleted file mode 100644
index 5086499..0000000
--- a/ksh-20100202-pathvar.patch
+++ /dev/null
@@ -1,20 +0,0 @@
-diff -up ksh-20100202/src/cmd/ksh93/sh.1.pathvar ksh-20100202/src/cmd/ksh93/sh.1
---- ksh-20100202/src/cmd/ksh93/sh.1.pathvar 2011-04-26 16:42:08.000000000 +0200
-+++ ksh-20100202/src/cmd/ksh93/sh.1 2011-04-27 09:09:00.315883280 +0200
-@@ -4025,13 +4025,9 @@ the directory containing the command.
- Alternative directory names are separated by
- a colon
- .RB ( : ).
--The default path is
--.B /bin:/usr/bin:
--(specifying
--.BR /bin ,
--.BR /usr/bin ,
--and the current directory
--in that order).
-+The default path is equal to
-+.BI getconf\ PATH
-+output.
- The current directory can be specified by
- two or more adjacent colons, or by a colon
- at the beginning or end of the path list.
diff --git a/ksh-20100621-fdstatus.patch b/ksh-20100621-fdstatus.patch
deleted file mode 100644
index 99abb55..0000000
--- a/ksh-20100621-fdstatus.patch
+++ /dev/null
@@ -1,54 +0,0 @@
-diff -up ksh-20120801/src/cmd/ksh93/sh/io.c.fdstatus ksh-20120801/src/cmd/ksh93/sh/io.c
---- ksh-20120801/src/cmd/ksh93/sh/io.c.fdstatus 2013-07-04 18:01:27.187516655 +0200
-+++ ksh-20120801/src/cmd/ksh93/sh/io.c 2013-07-04 18:01:38.249607392 +0200
-@@ -1508,7 +1508,7 @@ int sh_redirect(Shell_t *shp,struct iono
- fn = fd;
- if(fd<10)
- {
-- if((fn=fcntl(fd,F_DUPFD,10)) < 0)
-+ if((fn=sh_fcntl(fd,F_DUPFD,10)) < 0)
- goto fail;
- if(fn>=shp->gd->lim.open_max && !sh_iovalidfd(shp,fn))
- goto fail;
-diff -up ksh-20120801/src/cmd/ksh93/sh/subshell.c.fdstatus ksh-20120801/src/cmd/ksh93/sh/subshell.c
---- ksh-20120801/src/cmd/ksh93/sh/subshell.c.fdstatus 2012-07-17 23:54:21.000000000 +0200
-+++ ksh-20120801/src/cmd/ksh93/sh/subshell.c 2013-07-04 17:56:20.342000310 +0200
-@@ -122,7 +122,7 @@ void sh_subtmpfile(Shell_t *shp)
- register struct checkpt *pp = (struct checkpt*)shp->jmplist;
- register struct subshell *sp = subshell_data->pipe;
- /* save file descriptor 1 if open */
-- if((sp->tmpfd = fd = fcntl(1,F_DUPFD,10)) >= 0)
-+ if((sp->tmpfd = fd = sh_fcntl(1,F_DUPFD,10)) >= 0)
- {
- fcntl(fd,F_SETFD,FD_CLOEXEC);
- shp->fdstatus[fd] = shp->fdstatus[1]|IOCLEX;
-@@ -554,7 +554,7 @@ Sfio_t *sh_subshell(Shell_t *shp,Shnode_
- sp->pwdfd = n;
- if(n<10)
- {
-- sp->pwdfd = fcntl(n,F_DUPFD,10);
-+ sp->pwdfd = sh_fcntl(n,F_DUPFD,10);
- close(n);
- }
- if(sp->pwdfd>0)
-diff -up ksh-20120801/src/cmd/ksh93/sh/xec.c.fdstatus ksh-20120801/src/cmd/ksh93/sh/xec.c
---- ksh-20120801/src/cmd/ksh93/sh/xec.c.fdstatus 2012-07-23 16:49:32.000000000 +0200
-+++ ksh-20120801/src/cmd/ksh93/sh/xec.c 2013-07-04 17:57:47.153712116 +0200
-@@ -116,7 +116,7 @@ static int iousepipe(Shell_t *shp)
- return(0);
- usepipe++;
- fcntl(subpipe[0],F_SETFD,FD_CLOEXEC);
-- subpipe[2] = fcntl(1,F_DUPFD,10);
-+ subpipe[2] = sh_fcntl(1,F_DUPFD,10);
- fcntl(subpipe[2],F_SETFD,FD_CLOEXEC);
- shp->fdstatus[subpipe[2]] = shp->fdstatus[1];
- close(1);
-@@ -3622,7 +3622,7 @@ static void coproc_init(Shell_t *shp, in
- sh_pipe(shp->cpipe);
- if((outfd=shp->cpipe[1]) < 10)
- {
-- int fd=fcntl(shp->cpipe[1],F_DUPFD,10);
-+ int fd=sh_fcntl(shp->cpipe[1],F_DUPFD,10);
- if(fd>=10)
- {
- shp->fdstatus[fd] = (shp->fdstatus[outfd]&~IOCLEX);
diff --git a/ksh-20100621-manfix3.patch b/ksh-20100621-manfix3.patch
deleted file mode 100644
index bced575..0000000
--- a/ksh-20100621-manfix3.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -up ksh-20100621/src/cmd/ksh93/sh.1.manfix3 ksh-20100621/src/cmd/ksh93/sh.1
---- ksh-20100621/src/cmd/ksh93/sh.1.manfix3 2013-05-02 13:07:51.180529762 +0200
-+++ ksh-20100621/src/cmd/ksh93/sh.1 2013-05-02 13:11:30.469327199 +0200
-@@ -7585,7 +7585,7 @@ file descriptor 2.
- If the
- .B \-i
- option is present or
--if the shell input and output are attached to a terminal (as told by
-+if the shell input and error output are attached to a terminal (as told by
- .IR tcgetattr (2)),
- then this shell is
- .IR interactive .
diff --git a/ksh-20100826-fixregr.patch b/ksh-20100826-fixregr.patch
deleted file mode 100644
index 87cb13c..0000000
--- a/ksh-20100826-fixregr.patch
+++ /dev/null
@@ -1,68 +0,0 @@
-diff -up ksh-20120801/src/cmd/ksh93/tests/builtins.sh.fixregr ksh-20120801/src/cmd/ksh93/tests/builtins.sh
---- ksh-20120801/src/cmd/ksh93/tests/builtins.sh.fixregr 2012-07-16 17:23:56.000000000 +0200
-+++ ksh-20120801/src/cmd/ksh93/tests/builtins.sh 2012-08-08 12:29:00.733243019 +0200
-@@ -303,9 +303,9 @@ then err_exit "printf '%..*s' not workin
- fi
- [[ $(printf '%q\n') == '' ]] || err_exit 'printf "%q" with missing arguments'
- # we won't get hit by the one second boundary twice, right?
--[[ $(printf '%T\n' now) == "$(date)" ]] ||
--[[ $(printf '%T\n' now) == "$(date)" ]] ||
--err_exit 'printf "%T" now'
-+[[ $(printf '%T\n' now | sed 's/GMT/UTC/') == "$(date)" ]] ||
-+[[ $(printf '%T\n' now | sed 's/GMT/UTC/') == "$(date)" ]] ||
-+err_exit 'printf "%T" now = '"$(printf '%T\n' now) != $(date)"
- behead()
- {
- read line
-diff -up ksh-20120801/src/cmd/ksh93/tests/locale.sh.fixregr ksh-20120801/src/cmd/ksh93/tests/locale.sh
---- ksh-20120801/src/cmd/ksh93/tests/locale.sh.fixregr 2012-06-26 21:57:46.000000000 +0200
-+++ ksh-20120801/src/cmd/ksh93/tests/locale.sh 2012-08-08 12:29:20.039405240 +0200
-@@ -104,6 +104,7 @@ if (( $($SHELL -c $'export LC_ALL='$loca
- then LC_ALL=$locale $SHELL -c b1=$'"\342\202\254\342\202\254\342\202\254\342\202\254w\342\202\254\342\202\254\342\202\254\342\202\254"; [[ ${b1:4:1} == w ]]' || err_exit 'multibyte ${var:offset:len} not working correctly'
- fi
-
-+locale=en_US.UTF-8
- #$SHELL -c 'export LANG='$locale'; printf "\u[20ac]\u[20ac]" > $tmp/two_euro_chars.txt'
- printf $'\342\202\254\342\202\254' > $tmp/two_euro_chars.txt
- exp="6 2 6"
-@@ -111,11 +112,11 @@ set -- $($SHELL -c "
- unset LC_CTYPE
- export LANG=$locale
- export LC_ALL=C
-- command wc -C < $tmp/two_euro_chars.txt
-+ command wc -m < $tmp/two_euro_chars.txt
- unset LC_ALL
-- command wc -C < $tmp/two_euro_chars.txt
-+ command wc -m < $tmp/two_euro_chars.txt
- export LC_ALL=C
-- command wc -C < $tmp/two_euro_chars.txt
-+ command wc -m < $tmp/two_euro_chars.txt
- ")
- got=$*
- [[ $got == $exp ]] || err_exit "command wc LC_ALL default failed -- expected '$exp', got '$got'"
-@@ -134,6 +135,8 @@ set -- $($SHELL -c "
- got=$*
- [[ $got == $exp ]] || err_exit "builtin wc LC_ALL default failed -- expected '$exp', got '$got'"
-
-+locale=C_EU.UTF-8
-+
- # multibyte char straddling buffer boundary
-
- {
-@@ -190,6 +193,7 @@ do exp=$1
- done
-
- # setocale(LC_ALL,"") after setlocale() initialization
-+locale=en_US.UTF-8
-
- printf 'f1\357\274\240f2\n' > input1
- printf 't2\357\274\240f1\n' > input2
-@@ -336,7 +340,7 @@ then LC_ALL=en_US.UTF-8
- [[ $(print -r -- "$x") == $'hello\u[20ac]\xee world' ]] || err_exit '%q with unicode and non-unicode not working'
- if [[ $(whence od) ]]
- then got='68 65 6c 6c 6f e2 82 ac ee 20 77 6f 72 6c 64 0a'
-- [[ $(print -r -- "$x" | od -An -tx1) == "$got" ]] || err_exit "incorrect string from printf %q"
-+ [[ $(print -r -- "$x" | od -An -tx1) =~ $got ]] || err_exit "incorrect string from printf %q"
- fi
-
- fi
diff --git a/ksh-20120801-F_dupfd_cloexec.patch b/ksh-20120801-F_dupfd_cloexec.patch
deleted file mode 100644
index 7a034b3..0000000
--- a/ksh-20120801-F_dupfd_cloexec.patch
+++ /dev/null
@@ -1,22 +0,0 @@
-diff -up ksh-20120801/src/cmd/ksh93/sh/io.c.orig ksh-20120801/src/cmd/ksh93/sh/io.c
---- ksh-20120801/src/cmd/ksh93/sh/io.c.orig 2015-08-12 11:35:36.882268954 -0300
-+++ ksh-20120801/src/cmd/ksh93/sh/io.c 2015-08-12 11:44:06.324587019 -0300
-@@ -2580,10 +2580,18 @@ int sh_fcntl(register int fd, int op, ..
- if(newfd>=0) switch(op)
- {
- case F_DUPFD:
-+#if F_dupfd_cloexec != F_DUPFD
-+ case F_dupfd_cloexec:
-+#endif
- if(shp->fdstatus[fd] == IOCLOSE)
- shp->fdstatus[fd] = 0;
- if(newfd>=shp->gd->lim.open_max)
- sh_iovalidfd(shp,newfd);
-+#if F_dupfd_cloexec != F_DUPFD
-+ if(op==F_dupfd_cloexec)
-+ shp->fdstatus[newfd] = (shp->fdstatus[fd]|IOCLEX);
-+ else
-+#endif
- shp->fdstatus[newfd] = (shp->fdstatus[fd]&~IOCLEX);
- if(fdnotify)
- (*fdnotify)(fd,newfd);
diff --git a/ksh-20120801-alarmifs.patch b/ksh-20120801-alarmifs.patch
deleted file mode 100644
index 88b0ba9..0000000
--- a/ksh-20120801-alarmifs.patch
+++ /dev/null
@@ -1,33 +0,0 @@
---- ksh-20120801/src/cmd/ksh93/sh/init.c 2014-12-10 20:11:17.693446084 -0200
-+++ ksh-20120801/src/cmd/ksh93/sh/init.c 2014-12-10 20:11:24.753442619 -0200
-@@ -576,6 +576,7 @@ static char* get_ifs(register Namval_t*
- shp->ifstable[' '] = shp->ifstable['\t'] = S_SPACE;
- shp->ifstable['\n'] = S_NL;
- }
-+ shp->ifstable[0] = S_EOF;
- }
- return(value);
- }
---- ksh-20120801/src/cmd/ksh93/bltins/alarm.c 2014-12-18 12:03:39.198461933 -0200
-+++ ksh-20120801/src/cmd/ksh93/bltins/alarm.c 2014-12-18 12:04:32.464421268 -0200
-@@ -130,6 +130,7 @@ void sh_timetraps(Shell_t *shp)
- {
- register struct tevent *tp, *tpnext;
- register struct tevent *tptop;
-+ char ifstable[256];
- while(1)
- {
- shp->sigflag[SIGALRM] &= ~SH_SIGALRM;
-@@ -141,7 +142,11 @@ void sh_timetraps(Shell_t *shp)
- {
- tp->flags &= ~L_FLAG;
- if(tp->action)
-+ {
-+ memcpy(ifstable,shp->ifstable,sizeof(ifstable));
- sh_fun(tp->action,tp->node,(char**)0);
-+ memcpy(shp->ifstable,ifstable,sizeof(ifstable));
-+ }
- tp->flags &= ~L_FLAG;
- if(!tp->flags)
- {
-
diff --git a/ksh-20120801-argvfix.patch b/ksh-20120801-argvfix.patch
deleted file mode 100644
index b0e1a78..0000000
--- a/ksh-20120801-argvfix.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-diff -up ksh-20120801/src/cmd/ksh93/sh/main.c.fixargs ksh-20120801/src/cmd/ksh93/sh/main.c
---- ksh-20120801/src/cmd/ksh93/sh/main.c.fixargs 2013-12-31 11:32:14.917874134 +0100
-+++ ksh-20120801/src/cmd/ksh93/sh/main.c 2013-12-31 11:32:58.028847126 +0100
-@@ -757,7 +757,7 @@ static void fixargs(char **argv, int mod
- offset += size;
- buff[offset++] = ' ';
- }
-- buff[offset-1] = 0;
-+ memset(&buff[offset - 1], 0, command_len - offset + 1);
- # ifdef PSTAT
- un.pst_command = stakptr(0);
- pstat(PSTAT_SETCMD,un,0,0,0);
-
diff --git a/ksh-20120801-assoc-unset-leak.patch b/ksh-20120801-assoc-unset-leak.patch
deleted file mode 100644
index 1af7d16..0000000
--- a/ksh-20120801-assoc-unset-leak.patch
+++ /dev/null
@@ -1,20 +0,0 @@
-diff -up ksh-20120801/src/cmd/ksh93/sh/name.c.orig ksh-20120801/src/cmd/ksh93/sh/name.c
---- ksh-20120801/src/cmd/ksh93/sh/name.c.orig 2015-02-10 17:15:37.180783550 -0200
-+++ ksh-20120801/src/cmd/ksh93/sh/name.c 2015-02-10 18:25:51.726228437 -0200
-@@ -1298,7 +1298,16 @@ void nv_delete(Namval_t* np, Dt_t *root,
- if(dtdelete(root,np))
- {
- if(!(flags&NV_NOFREE) && ((flags&NV_FUNCTION) || !nv_subsaved(np,flags&NV_TABLE)))
-+ {
-+ Namarr_t *ap;
-+ if(nv_isarray(np) && np->nvfun && (ap=nv_arrayptr(np)) && array_assoc(ap)) {
-+ while(nv_associative(np,0,NV_ANEXT))
-+ nv_associative(np, 0, NV_ADELETE);
-+ nv_associative(np, 0, NV_AFREE);
-+ free((void*)np->nvfun);
-+ }
- free((void*)np);
-+ }
- }
- #if 0
- else
diff --git a/ksh-20120801-badgcc.patch b/ksh-20120801-badgcc.patch
deleted file mode 100644
index cd26316..0000000
--- a/ksh-20120801-badgcc.patch
+++ /dev/null
@@ -1,22 +0,0 @@
-diff -up ksh-20120801/src/lib/libast/string/strdup.c.badgcc ksh-20120801/src/lib/libast/string/strdup.c
---- ksh-20120801/src/lib/libast/string/strdup.c.badgcc 2012-05-21 15:04:46.000000000 +0200
-+++ ksh-20120801/src/lib/libast/string/strdup.c 2015-06-17 10:12:52.693922581 +0200
-@@ -50,11 +50,18 @@ __STDPP__directive pragma pp:nohide strd
- #define extern __EXPORT__
- #endif
-
-+#pragma GCC push_options
-+#pragma GCC optimize ("O0")
-+
-+
- extern char*
- strdup(register const char* s)
- {
- register char* t;
- register int n;
-
- return (s && (t = oldof(0, char, n = strlen(s) + 1, 0))) ? (char*)memcpy(t, s, n) : (char*)0;
- }
-+
-+#pragma GCC pop_options
-+
diff --git a/ksh-20120801-ccflags.patch b/ksh-20120801-ccflags.patch
deleted file mode 100644
index b95db66..0000000
--- a/ksh-20120801-ccflags.patch
+++ /dev/null
@@ -1,21 +0,0 @@
-diff --git a/src/cmd/ksh93/Mamfile b/src/cmd/ksh93/Mamfile
---- a/src/cmd/ksh93/Mamfile
-+++ b/src/cmd/ksh93/Mamfile
-@@ -1111,7 +1111,7 @@ prev include/defs.h implicit
- done sh/trestore.c
- meta trestore.o %.c>%.o sh/trestore.c trestore
- prev sh/trestore.c
--exec - ${CC} ${mam_cc_FLAGS} ${-debug-symbols?1?${mam_cc_DEBUG} -D_BLD_DEBUG?${CCFLAGS.FORCE}?} ${SHOPT_BASH+-DSHOPT_BASH=${SHOPT_BASH}} ${SHOPT_SYSRC+-DSHOPT_SYSRC=${SHOPT_SYSRC}} ${SHOPT_ACCT+-DSHOPT_ACCT=${SHOPT_ACCT}} ${SHOPT_SPAWN+-DSHOPT_SPAWN=${SHOPT_SPAWN}} ${SH_CMDLIB_DIR+-DSH_CMDLIB_DIR=${SH_CMDLIB_DIR}} ${SH_DICT+-DSH_DICT=${SH_DICT}} ${SHOPT_P_SUID+-DSHOPT_P_SUID=${SHOPT_P_SUID}} ${SHOPT_REGRESS+-DSHOPT_REGRESS=${SHOPT_REGRESS}} -I. -Iinclude -I${PACKAGE_ast_INCLUDE} -D_BLD_shell -DKSHELL -D_API_ast=20100309 -D_PACKAGE_ast -DSHOPT_SUID_EXEC -DSHOPT_BRACEPAT -DSHOPT_STATS -DSHOPT_NAMESPACE -DSHOPT_COSHELL -DSHOPT_PFSH -DSHOPT_HISTEXPAND -DERROR_CONTEXT_T=Error_context_t -DSHOPT_FIXEDARRAY -DSHOPT_ESH -DSHOPT_MULTIBYTE -c sh/trestore.c
-+exec - ${CC} ${mam_cc_FLAGS} ${CCFLAGS} ${-debug-symbols?1?${mam_cc_DEBUG} -D_BLD_DEBUG?${CCFLAGS.FORCE}?} ${SHOPT_BASH+-DSHOPT_BASH=${SHOPT_BASH}} ${SHOPT_SYSRC+-DSHOPT_SYSRC=${SHOPT_SYSRC}} ${SHOPT_ACCT+-DSHOPT_ACCT=${SHOPT_ACCT}} ${SHOPT_SPAWN+-DSHOPT_SPAWN=${SHOPT_SPAWN}} ${SH_CMDLIB_DIR+-DSH_CMDLIB_DIR=${SH_CMDLIB_DIR}} ${SH_DICT+-DSH_DICT=${SH_DICT}} ${SHOPT_P_SUID+-DSHOPT_P_SUID=${SHOPT_P_SUID}} ${SHOPT_REGRESS+-DSHOPT_REGRESS=${SHOPT_REGRESS}} -I. -Iinclude -I${PACKAGE_ast_INCLUDE} -D_BLD_shell -DKSHELL -D_API_ast=20100309 -D_PACKAGE_ast -DSHOPT_SUID_EXEC -DSHOPT_BRACEPAT -DSHOPT_STATS -DSHOPT_NAMESPACE -DSHOPT_COSHELL -DSHOPT_PFSH -DSHOPT_HISTEXPAND -DERROR_CONTEXT_T=Error_context_t -DSHOPT_FIXEDARRAY -DSHOPT_ESH -DSHOPT_MULTIBYTE -c sh/trestore.c
- done trestore.o generated
- make waitevent.o
- make sh/waitevent.c
-@@ -1199,7 +1199,7 @@ prev ${PACKAGE_ast_INCLUDE}/ast_standards.h implicit
- done data/strdata.c
- meta strdata.o %.c>%.o data/strdata.c strdata
- prev data/strdata.c
--exec - ${CC} ${mam_cc_FLAGS} ${-debug-symbols?1?${mam_cc_DEBUG} -D_BLD_DEBUG?${CCFLAGS.FORCE}?} ${SHOPT_BASH+-DSHOPT_BASH=${SHOPT_BASH}} ${SH_CMDLIB_DIR+-DSH_CMDLIB_DIR=${SH_CMDLIB_DIR}} ${SH_DICT+-DSH_DICT=${SH_DICT}} ${SHOPT_P_SUID+-DSHOPT_P_SUID=${SHOPT_P_SUID}} ${SHOPT_REGRESS+-DSHOPT_REGRESS=${SHOPT_REGRESS}} -I. -Iinclude -I${PACKAGE_ast_INCLUDE} -DSHOPT_STATS -DSHOPT_NAMESPACE -DSHOPT_COSHELL -DSHOPT_PFSH -DSHOPT_HISTEXPAND -D_BLD_shell -D_API_ast=20100309 -D_PACKAGE_ast -DERROR_CONTEXT_T=Error_context_t -DSHOPT_FIXEDARRAY -DSHOPT_ESH -DSHOPT_MULTIBYTE -c data/strdata.c
-+exec - ${CC} ${mam_cc_FLAGS} ${CCFLAGS} ${-debug-symbols?1?${mam_cc_DEBUG} -D_BLD_DEBUG?${CCFLAGS.FORCE}?} ${SHOPT_BASH+-DSHOPT_BASH=${SHOPT_BASH}} ${SH_CMDLIB_DIR+-DSH_CMDLIB_DIR=${SH_CMDLIB_DIR}} ${SH_DICT+-DSH_DICT=${SH_DICT}} ${SHOPT_P_SUID+-DSHOPT_P_SUID=${SHOPT_P_SUID}} ${SHOPT_REGRESS+-DSHOPT_REGRESS=${SHOPT_REGRESS}} -I. -Iinclude -I${PACKAGE_ast_INCLUDE} -DSHOPT_STATS -DSHOPT_NAMESPACE -DSHOPT_COSHELL -DSHOPT_PFSH -DSHOPT_HISTEXPAND -D_BLD_shell -D_API_ast=20100309 -D_PACKAGE_ast -DERROR_CONTEXT_T=Error_context_t -DSHOPT_FIXEDARRAY -DSHOPT_ESH -DSHOPT_MULTIBYTE -c data/strdata.c
- done strdata.o generated
- make testops.o
- make data/testops.c
diff --git a/ksh-20120801-cdfix.patch b/ksh-20120801-cdfix.patch
deleted file mode 100644
index 59265dd..0000000
--- a/ksh-20120801-cdfix.patch
+++ /dev/null
@@ -1,14 +0,0 @@
-diff -up ksh-20120801/src/cmd/ksh93/bltins/cd_pwd.c.cdfix ksh-20120801/src/cmd/ksh93/bltins/cd_pwd.c
---- ksh-20120801/src/cmd/ksh93/bltins/cd_pwd.c.cdfix 2013-02-01 16:04:55.507150242 +0100
-+++ ksh-20120801/src/cmd/ksh93/bltins/cd_pwd.c 2013-02-01 16:06:39.361007641 +0100
-@@ -214,7 +214,10 @@ int b_cd(int argc, char *argv[],Shbltin_
- if(*++dp=='.' && (*++dp=='/' || *dp==0))
- n++;
- else if(*dp && *dp!='/')
-+ {
-+ dp--;
- break;
-+ }
- if(*dp==0)
- break;
- }
diff --git a/ksh-20120801-cdfix2.patch b/ksh-20120801-cdfix2.patch
deleted file mode 100644
index 84bb491..0000000
--- a/ksh-20120801-cdfix2.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-diff -up ksh-20120801/src/cmd/ksh93/bltins/cd_pwd.c.cdfix2 ksh-20120801/src/cmd/ksh93/bltins/cd_pwd.c
---- ksh-20120801/src/cmd/ksh93/bltins/cd_pwd.c.cdfix2 2013-02-01 16:46:50.441771371 +0100
-+++ ksh-20120801/src/cmd/ksh93/bltins/cd_pwd.c 2013-02-01 16:57:43.241784024 +0100
-@@ -61,6 +61,7 @@ int sh_diropenat(Shell_t *shp, int dir,
- {
- int fd,shfd;
- int savederrno=errno;
-+ struct stat fs;
- #ifndef AT_FDCWD
- NOT_USED(dir);
- #endif
-@@ -133,6 +134,13 @@ int sh_diropenat(Shell_t *shp, int dir,
-
- if(fd < 0)
- return fd;
-+
-+ if (!fstat(fd, &fs) && !S_ISDIR(fs.st_mode))
-+ {
-+ close(fd);
-+ errno = ENOTDIR;
-+ return -1;
-+ }
-
- /* Move fd to a number > 10 and *register* the fd number with the shell */
- shfd = sh_fcntl(fd, F_dupfd_cloexec, 10);
diff --git a/ksh-20120801-cdfix3.patch b/ksh-20120801-cdfix3.patch
deleted file mode 100644
index 7e47f71..0000000
--- a/ksh-20120801-cdfix3.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -up ksh-20120801/src/cmd/ksh93/bltins/cd_pwd.c.cdfix3 ksh-20120801/src/cmd/ksh93/bltins/cd_pwd.c
---- ksh-20120801/src/cmd/ksh93/bltins/cd_pwd.c.cdfix3 2014-06-20 12:39:02.757407689 +0200
-+++ ksh-20120801/src/cmd/ksh93/bltins/cd_pwd.c 2014-06-20 12:40:19.530998070 +0200
-@@ -290,7 +290,7 @@ int b_cd(int argc, char *argv[],Shbltin_
- if(newdirfd >=0)
- {
- /* chdir for directories on HSM/tapeworms may take minutes */
-- if(fchdir(newdirfd) >= 0)
-+ if((rval=fchdir(newdirfd)) >= 0)
- {
- if(shp->pwdfd >= 0)
- sh_close(shp->pwdfd);
diff --git a/ksh-20120801-cdfork.patch b/ksh-20120801-cdfork.patch
deleted file mode 100644
index c82cb4c..0000000
--- a/ksh-20120801-cdfork.patch
+++ /dev/null
@@ -1,40 +0,0 @@
---- ksh-20120801/src/cmd/ksh93/sh/path.c 2014-09-01 15:08:06.738969962 -0300
-+++ ksh-20120801/src/cmd/ksh93/sh/path.c 2014-09-01 15:13:51.321459978 -0300
-@@ -229,13 +229,12 @@ static pid_t path_xargs(Shell_t *shp,con
- /*
- * make sure PWD is set up correctly
- * Return the present working directory
-- * Invokes getcwd() if flag==0 and if necessary
-+ * Invokes getcwd() if necessary
- * Sets the PWD variable to this value
- */
- char *path_pwd(Shell_t *shp,int flag)
- {
- register char *cp;
-- register char *dfault = (char*)e_dot;
- register int count = 0;
- if(shp->pwd)
- return((char*)shp->pwd);
-@@ -254,11 +253,6 @@ char *path_pwd(Shell_t *shp,int flag)
- cp = "/";
- break;
- case 3:
-- cp = (char*)e_crondir;
-- if(flag) /* skip next case when non-zero flag */
-- ++count;
-- break;
-- case 4:
- {
- if(cp=getcwd(NIL(char*),0))
- {
-@@ -269,8 +263,8 @@ char *path_pwd(Shell_t *shp,int flag)
- }
- break;
- }
-- case 5:
-+ case 4:
-- return(dfault);
-+ return((char*)e_dot);
- }
- if(cp && *cp=='/' && test_inode(cp,e_dot))
- break;
diff --git a/ksh-20120801-covsfix.patch b/ksh-20120801-covsfix.patch
deleted file mode 100644
index c64e2a7..0000000
--- a/ksh-20120801-covsfix.patch
+++ /dev/null
@@ -1,58 +0,0 @@
-diff -up ksh-20120801/src/cmd/ksh93/sh/init.c.covsfix ksh-20120801/src/cmd/ksh93/sh/init.c
---- ksh-20120801/src/cmd/ksh93/sh/init.c.covsfix 2013-07-22 17:41:34.674054068 +0200
-+++ ksh-20120801/src/cmd/ksh93/sh/init.c 2013-07-22 17:42:50.761361921 +0200
-@@ -1237,9 +1237,11 @@ static void put_mode(Namval_t* np, const
- mode = *(double*)val;
- }
- else
-+ {
- mode = strperm(val, &last,0);
-- if(*last)
-- errormsg(SH_DICT,ERROR_exit(1),"%s: invalid mode string",val);
-+ if(*last)
-+ errormsg(SH_DICT,ERROR_exit(1),"%s: invalid mode string",val);
-+ }
- nv_putv(np,(char*)&mode,NV_INTEGER,nfp);
- }
- else
-diff -up ksh-20120801/src/cmd/ksh93/sh/io.c.covsfix ksh-20120801/src/cmd/ksh93/sh/io.c
---- ksh-20120801/src/cmd/ksh93/sh/io.c.covsfix 2013-07-22 17:06:30.282927080 +0200
-+++ ksh-20120801/src/cmd/ksh93/sh/io.c 2013-07-22 17:08:49.645721280 +0200
-@@ -954,6 +954,7 @@ int sh_pipe(register int pv[])
- socklen_t slen;
- if ((pv[out] = socket (AF_INET, SOCK_STREAM, 0)) < 0)
- errormsg(SH_DICT,ERROR_system(1),e_pipe);
-+ memset(&sin.sin_zero, 0, sizeof(sin.sin_zero));
- do
- {
- sin.sin_family = AF_INET;
-diff -up ksh-20120801/src/cmd/ksh93/sh/name.c.covsfix ksh-20120801/src/cmd/ksh93/sh/name.c
---- ksh-20120801/src/cmd/ksh93/sh/name.c.covsfix 2013-07-22 17:40:31.644635604 +0200
-+++ ksh-20120801/src/cmd/ksh93/sh/name.c 2013-07-22 17:41:15.828227073 +0200
-@@ -3094,6 +3094,7 @@ void nv_newattr (register Namval_t *np,
- if(!mp)
- nv_putval (np, cp, NV_RDONLY);
- free(cp);
-+ cp = NULL;
- }
- }
- while(ap && nv_nextsub(np));
-diff -up ksh-20120801/src/cmd/ksh93/sh/subshell.c.covsfix ksh-20120801/src/cmd/ksh93/sh/subshell.c
---- ksh-20120801/src/cmd/ksh93/sh/subshell.c.covsfix 2013-07-22 17:46:15.607533423 +0200
-+++ ksh-20120801/src/cmd/ksh93/sh/subshell.c 2013-07-22 17:48:36.739290968 +0200
-@@ -205,7 +205,14 @@ void sh_subfork(void)
- shp->comsub = 0;
- SH_SUBSHELLNOD->nvalue.s = 0;
- sp->subpid=0;
-- shp->st.trapcom[0] = (comsub==2?NULL:trap);
-+ if (comsub==2)
-+ {
-+ shp->st.trapcom[0] = NULL;
-+ if(trap)
-+ free((void*)trap);
-+ }
-+ else
-+ shp->st.trapcom[0] = (comsub==2?NULL:trap);
- shp->savesig = 0;
- }
- }
diff --git a/ksh-20120801-crash.patch b/ksh-20120801-crash.patch
deleted file mode 100644
index 37b7962..0000000
--- a/ksh-20120801-crash.patch
+++ /dev/null
@@ -1,64 +0,0 @@
-diff -up ksh-20120801/src/cmd/ksh93/include/jobs.h.crash ksh-20120801/src/cmd/ksh93/include/jobs.h
---- ksh-20120801/src/cmd/ksh93/include/jobs.h.crash 2014-07-22 11:48:57.205062905 +0200
-+++ ksh-20120801/src/cmd/ksh93/include/jobs.h 2014-07-22 11:48:57.243062711 +0200
-@@ -118,6 +118,7 @@ struct jobs
- char jobcontrol; /* turned on for real job control */
- char waitsafe; /* wait will not block */
- char waitall; /* wait for all jobs in pipe */
-+ char hack1_waitall;
- char toclear; /* job table needs clearing */
- unsigned char *freejobs; /* free jobs numbers */
- #if SHOPT_COSHELL
-diff -up ksh-20120801/src/cmd/ksh93/sh/jobs.c.crash ksh-20120801/src/cmd/ksh93/sh/jobs.c
---- ksh-20120801/src/cmd/ksh93/sh/jobs.c.crash 2014-07-22 11:48:57.190062982 +0200
-+++ ksh-20120801/src/cmd/ksh93/sh/jobs.c 2014-07-22 11:48:57.243062711 +0200
-@@ -1957,6 +1957,7 @@ again:
- {
- count = bp->count;
- jp = bp->list;
-+ jpold = 0;
- goto again;
- }
- if(jp)
-diff -up ksh-20120801/src/cmd/ksh93/sh/subshell.c.crash ksh-20120801/src/cmd/ksh93/sh/subshell.c
---- ksh-20120801/src/cmd/ksh93/sh/subshell.c.crash 2014-07-22 11:48:57.234062758 +0200
-+++ ksh-20120801/src/cmd/ksh93/sh/subshell.c 2014-07-22 11:54:04.164491483 +0200
-@@ -492,6 +492,7 @@ Sfio_t *sh_subshell(Shell_t *shp,Shnode_
- struct sh_scoped savst;
- struct dolnod *argsav=0;
- int argcnt;
-+ int pipefail = 0;
- memset((char*)sp, 0, sizeof(*sp));
- sfsync(shp->outpool);
- sh_sigcheck(shp);
-@@ -541,7 +542,10 @@ Sfio_t *sh_subshell(Shell_t *shp,Shnode_
- sp->comsub = shp->comsub;
- shp->subshare = comsub==2 || (comsub==1 && sh_isoption(SH_SUBSHARE));
- if(comsub)
-+ {
- shp->comsub = comsub;
-+ job.hack1_waitall=(comsub==1);
-+ }
- sp->shpwdfd=-1;
- if(!comsub || !shp->subshare)
- {
-@@ -648,6 +652,7 @@ Sfio_t *sh_subshell(Shell_t *shp,Shnode_
- }
- else
- {
-+ job.hack1_waitall=0;
- if(comsub!=1 && shp->spid)
- {
- job_wait(shp->spid);
-diff -up ksh-20120801/src/cmd/ksh93/sh/xec.c.crash ksh-20120801/src/cmd/ksh93/sh/xec.c
---- ksh-20120801/src/cmd/ksh93/sh/xec.c.crash 2014-07-22 11:48:57.228062787 +0200
-+++ ksh-20120801/src/cmd/ksh93/sh/xec.c 2014-07-22 11:48:57.245062700 +0200
-@@ -2125,7 +2125,7 @@ int sh_exec(register const Shnode_t *t,
- memset(exitval,0,job.waitall*sizeof(int));
- }
- else
-- job.waitall |= !pipejob && sh_isstate(SH_MONITOR);
-+ job.waitall |= job.hack1_waitall || !pipejob && sh_isstate(SH_MONITOR);
- job_lock();
- nlock++;
- do
diff --git a/ksh-20120801-dotdoublefree.patch b/ksh-20120801-dotdoublefree.patch
deleted file mode 100644
index bf29cb1..0000000
--- a/ksh-20120801-dotdoublefree.patch
+++ /dev/null
@@ -1,19 +0,0 @@
-diff --git a/src/cmd/ksh93/sh/xec.c b/src/cmd/ksh93/sh/xec.c
-index 1ba7347..ab745d4 100644
---- a/src/cmd/ksh93/sh/xec.c
-+++ b/src/cmd/ksh93/sh/xec.c
-@@ -640,7 +640,11 @@ int sh_eval(register Sfio_t *iop, int mode)
- if(lineno)
- shp->inlineno = lineno;
- if(io_save)
-+ {
- sfclose(io_save);
-+ io_save = 0;
-+ }
-+
- sh_freeup(shp);
- shp->st.staklist = saveslp;
- shp->fn_reset = 0;
---
-2.9.3
-
diff --git a/ksh-20120801-emptyarrayinit.patch b/ksh-20120801-emptyarrayinit.patch
deleted file mode 100644
index c888b31..0000000
--- a/ksh-20120801-emptyarrayinit.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- ksh-20120801/src/cmd/ksh93/sh/array.c 2014-12-11 16:39:34.253860675 -0200
-+++ ksh-20120801/src/cmd/ksh93/sh/array.c 2014-12-11 16:39:40.794857083 -0200
-@@ -1003,7 +1003,7 @@ Namarr_t *nv_setarray(Namval_t *np, void
- ap->nelem = nelem;
- ap->fun = fun;
- nv_onattr(np,NV_ARRAY);
-- if(fp || value)
-+ if(fp || (value && value != Empty))
- {
- nv_putsub(np, "0", ARRAY_ADD);
- if(value)
diff --git a/ksh-20120801-fd2lost.patch b/ksh-20120801-fd2lost.patch
deleted file mode 100644
index 0605f6e..0000000
--- a/ksh-20120801-fd2lost.patch
+++ /dev/null
@@ -1,72 +0,0 @@
-diff -up ksh-20120801/src/cmd/ksh93/sh/macro.c.fd2lost ksh-20120801/src/cmd/ksh93/sh/macro.c
---- ksh-20120801/src/cmd/ksh93/sh/macro.c.fd2lost 2014-01-22 16:23:21.211658984 +0100
-+++ ksh-20120801/src/cmd/ksh93/sh/macro.c 2014-01-22 16:23:21.243658703 +0100
-@@ -391,7 +391,7 @@ void sh_machere(Shell_t *shp,Sfio_t *inf
- break;
- }
- case S_PAR:
-- comsubst(mp,(Shnode_t*)0,1);
-+ comsubst(mp,(Shnode_t*)0,3);
- break;
- case S_EOF:
- if((c=fcfill()) > 0)
-@@ -1165,7 +1165,7 @@ retry1:
- case S_PAR:
- if(type)
- goto nosub;
-- comsubst(mp,(Shnode_t*)0,1);
-+ comsubst(mp,(Shnode_t*)0,3);
- return(1);
- case S_DIG:
- var = 0;
-diff -up ksh-20120801/src/cmd/ksh93/sh/subshell.c.fd2lost ksh-20120801/src/cmd/ksh93/sh/subshell.c
---- ksh-20120801/src/cmd/ksh93/sh/subshell.c.fd2lost 2014-01-22 16:23:21.222658887 +0100
-+++ ksh-20120801/src/cmd/ksh93/sh/subshell.c 2014-01-22 16:23:21.243658703 +0100
-@@ -122,7 +122,8 @@ void sh_subtmpfile(Shell_t *shp)
- else if(errno!=EBADF)
- errormsg(SH_DICT,ERROR_system(1),e_toomany);
- /* popping a discipline forces a /tmp file create */
-- sfdisc(sfstdout,SF_POPDISC);
-+ if(shp->comsub != 1)
-+ sfdisc(sfstdout,SF_POPDISC);
- if((fd=sffileno(sfstdout))<0)
- {
- /* unable to create the /tmp file so use a pipe */
-@@ -635,6 +636,13 @@ Sfio_t *sh_subshell(Shell_t *shp,Shnode_
- }
- else
- {
-+ if(comsub!=1 && shp->spid)
-+ {
-+ job_wait(shp->spid);
-+ if(shp->pipepid==shp->spid)
-+ shp->spid = 0;
-+ shp->pipepid = 0;
-+ }
- /* move tmp file to iop and restore sfstdout */
- iop = sfswap(sfstdout,NIL(Sfio_t*));
- if(!iop)
-diff -up ksh-20120801/src/cmd/ksh93/sh/xec.c.fd2lost ksh-20120801/src/cmd/ksh93/sh/xec.c
---- ksh-20120801/src/cmd/ksh93/sh/xec.c.fd2lost 2014-01-22 16:23:21.237658756 +0100
-+++ ksh-20120801/src/cmd/ksh93/sh/xec.c 2014-01-22 16:38:36.374666019 +0100
-@@ -1756,6 +1756,8 @@ int sh_exec(register const Shnode_t *t,
- nlock--;
- job_unlock();
- }
-+ if(shp->subshell)
-+ shp->spid = parent;
- if(type&FPCL)
- sh_close(shp->inpipe[0]);
- if(type&(FCOOP|FAMP))
-@@ -1771,7 +1773,11 @@ int sh_exec(register const Shnode_t *t,
- if(shp->pipepid)
- shp->pipepid = parent;
- else
-+ {
- job_wait(parent);
-+ if(parent==shp->spid)
-+ shp->spid = 0;
-+ }
- if(shp->topfd > topfd)
- sh_iorestore(shp,topfd,0);
- if(usepipe && tsetio && subdup && unpipe)
diff --git a/ksh-20120801-filecomsubst.patch b/ksh-20120801-filecomsubst.patch
deleted file mode 100644
index 676cc27..0000000
--- a/ksh-20120801-filecomsubst.patch
+++ /dev/null
@@ -1,11 +0,0 @@
-diff -up ksh-20120801/src/cmd/ksh93/sh/io.c.tryfix01 ksh-20120801/src/cmd/ksh93/sh/io.c
---- ksh-20120801/src/cmd/ksh93/sh/io.c.tryfix01 2014-02-26 16:15:52.355391420 +0100
-+++ ksh-20120801/src/cmd/ksh93/sh/io.c 2014-02-26 16:23:55.588148801 +0100
-@@ -1326,6 +1326,7 @@ int sh_redirect(Shell_t *shp,struct iono
- if(flag==SH_SHOWME)
- goto traceit;
- fd=sh_chkopen(fname);
-+ fd=sh_iomovefd(fd);
- }
- else if(sh_isoption(SH_RESTRICTED))
- errormsg(SH_DICT,ERROR_exit(1),e_restricted,fname);
diff --git a/ksh-20120801-forkbomb.patch b/ksh-20120801-forkbomb.patch
deleted file mode 100644
index 7a1a5c1..0000000
--- a/ksh-20120801-forkbomb.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -up ksh-20120801/src/cmd/ksh93/sh/fault.c.forkbomb ksh-20120801/src/cmd/ksh93/sh/fault.c
---- ksh-20120801/src/cmd/ksh93/sh/fault.c.forkbomb 2013-04-30 16:20:40.237490109 +0200
-+++ ksh-20120801/src/cmd/ksh93/sh/fault.c 2013-04-30 16:21:49.961068778 +0200
-@@ -519,7 +519,7 @@ void sh_exit(register int xno)
- if(pp && pp->mode>1)
- cursig = -1;
- #ifdef SIGTSTP
-- if(shp->trapnote&SH_SIGTSTP)
-+ if((shp->trapnote&SH_SIGTSTP) && job.jobcontrol)
- {
- /* ^Z detected by the shell */
- shp->trapnote = 0;
diff --git a/ksh-20120801-fununset.patch b/ksh-20120801-fununset.patch
deleted file mode 100644
index 1f5cb17..0000000
--- a/ksh-20120801-fununset.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -up ksh-20120801/src/cmd/ksh93/sh/xec.c.fununset ksh-20120801/src/cmd/ksh93/sh/xec.c
---- ksh-20120801/src/cmd/ksh93/sh/xec.c.fununset 2014-06-16 14:21:09.293513844 +0200
-+++ ksh-20120801/src/cmd/ksh93/sh/xec.c 2014-06-16 14:21:09.309513760 +0200
-@@ -3570,7 +3570,7 @@ static void sh_funct(Shell_t *shp,Namval
- #endif
- nv_putval(SH_PATHNAMENOD,shp->st.filename,NV_NOFREE);
- shp->pipepid = pipepid;
-- np->nvalue.rp->running -= 2;
-+ if (np->nvalue.rp) np->nvalue.rp->running -= 2;
- }
-
- /*
diff --git a/ksh-20120801-glibc-build-fix.patch b/ksh-20120801-glibc-build-fix.patch
deleted file mode 100644
index 28be43b..0000000
--- a/ksh-20120801-glibc-build-fix.patch
+++ /dev/null
@@ -1,38 +0,0 @@
-diff --git a/src/lib/libast/features/stdio b/src/lib/libast/features/stdio
---- a/src/lib/libast/features/stdio
-+++ b/src/lib/libast/features/stdio
-@@ -6,6 +6,8 @@ cat{
- #define _FILE_DEFINED 1
- #define _FILE_defined 1
- #define _FILEDEFED 1
-+ #define __FILE_defined 1
-+ #define ____FILE_defined 1
-
- #ifndef __FILE_TAG
- #define __FILE_TAG _sfio_s
-diff --git a/src/lib/libast/include/ast.h b/src/lib/libast/include/ast.h
-index ebf82d7..f4bbe6d 100644
---- a/src/lib/libast/include/ast.h
-+++ b/src/lib/libast/include/ast.h
-@@ -59,9 +59,21 @@ struct _sfio_s;
- #ifndef __FILE_typedef
- #define __FILE_typedef 1
- #endif
-+#ifndef _FILE_DEFINED
-+#define _FILE_DEFINED 1
-+#endif
-+#ifndef _FILE_defined
-+#define _FILE_defined 1
-+#endif
- #ifndef _FILEDEFED
- #define _FILEDEFED 1
- #endif
-+#ifndef __FILE_defined
-+#define __FILE_defined 1
-+#endif
-+#ifndef ____FILE_defined
-+#define ____FILE_defined 1
-+#endif
- #endif
-
- /*
diff --git a/ksh-20120801-heresub.patch b/ksh-20120801-heresub.patch
deleted file mode 100644
index 880071c..0000000
--- a/ksh-20120801-heresub.patch
+++ /dev/null
@@ -1,32 +0,0 @@
-diff -up ksh-20120801/src/cmd/ksh93/sh/lex.c.heresub ksh-20120801/src/cmd/ksh93/sh/lex.c
---- ksh-20120801/src/cmd/ksh93/sh/lex.c.heresub 2014-05-21 16:48:42.635700984 +0200
-+++ ksh-20120801/src/cmd/ksh93/sh/lex.c 2014-05-21 16:48:42.678700772 +0200
-@@ -1557,6 +1557,7 @@ static int comsub(register Lex_t *lp, in
- {
- register int n,c,count=1;
- register int line=lp->sh->inlineno;
-+ struct ionod *inheredoc = lp->heredoc;
- char *first,*cp=fcseek(0),word[5];
- int off, messages=0, assignok=lp->assignok, csub;
- struct lexstate save;
-@@ -1683,7 +1684,7 @@ done:
- lp->lexd.dolparen--;
- lp->lex = save;
- lp->assignok = (endchar(lp)==RBRACT?assignok:0);
-- if(lp->heredoc)
-+ if(lp->heredoc && !inheredoc)
- errormsg(SH_DICT,ERROR_exit(SYNBAD),e_lexsyntax5,lp->sh->inlineno,lp->heredoc->ioname);
- return(messages);
- }
-diff -up ksh-20120801/src/cmd/ksh93/sh/macro.c.heresub ksh-20120801/src/cmd/ksh93/sh/macro.c
---- ksh-20120801/src/cmd/ksh93/sh/macro.c.heresub 2014-05-21 16:48:42.650700910 +0200
-+++ ksh-20120801/src/cmd/ksh93/sh/macro.c 2014-05-21 16:48:42.678700772 +0200
-@@ -2085,7 +2085,7 @@ static void comsubst(Mac_t *mp,register
- }
- sfputc(stkp,c);
- }
-- sfputc(stkp,' ');
-+ sfputc(stkp,'\n');
- c = stktell(stkp);
- str=stkfreeze(stkp,1);
- /* disable verbose and don't save in history file */
diff --git a/ksh-20120801-iso8859.patch b/ksh-20120801-iso8859.patch
deleted file mode 100644
index 8f3a355..0000000
--- a/ksh-20120801-iso8859.patch
+++ /dev/null
@@ -1,74 +0,0 @@
-diff --git a/src/cmd/ksh93/sh/fcin.c b/src/cmd/ksh93/sh/fcin.c
-index ea6ea6b..08c1f2a 100644
---- a/src/cmd/ksh93/sh/fcin.c
-+++ b/src/cmd/ksh93/sh/fcin.c
-@@ -150,63 +150,19 @@ extern void fcrestore(Fcin_t *fp)
- _Fcin = *fp;
- }
-
--/* for testing purposes with small buffers */
--#if defined(IOBSIZE) && (IOBSIZE < 2*MB_LEN_MAX)
--# undef MB_LEN_MAX
--# define MB_LEN_MAX (IOBSIZE/2)
--#endif
--
--struct Extra
--{
-- unsigned char buff[2*MB_LEN_MAX];
-- unsigned char *next;
--};
--
- int _fcmbget(short *len)
- {
-- static struct Extra extra;
-- register int i, c, n;
-- if(_Fcin.fcleft)
-- {
-- if((c = mbsize(extra.next)) < 0)
-- c = 1;
-- if((_Fcin.fcleft -= c) <=0)
-- {
-- _Fcin.fcptr = (unsigned char*)fcfirst() - _Fcin.fcleft;
-- _Fcin.fcleft = 0;
-- }
-- *len = c;
-- if(c==1)
-- c = *extra.next++;
-- else if(c==0)
-- _Fcin.fcleft = 0;
-- else
-- c = mbchar(extra.next);
-- return(c);
-- }
-- switch(*len = mbsize(_Fcin.fcptr))
-+ register int c;
-+ switch (*len = mbsize(_Fcin.fcptr))
- {
-- case -1:
-- if(_Fcin._fcfile && (n=(_Fcin.fclast-_Fcin.fcptr)) < MB_LEN_MAX)
-- {
-- memcpy(extra.buff, _Fcin.fcptr, n);
-- _Fcin.fcptr = _Fcin.fclast;
-- for(i=n; i < MB_LEN_MAX+n; i++)
-- {
-- if((extra.buff[i] = fcgetc(c))==0)
-- break;
-- }
-- _Fcin.fcleft = n;
-- extra.next = extra.buff;
-- return(fcmbget(len));
-- }
-+ case -1:
- *len = 1;
- /* fall through */
-- case 0:
-- case 1:
-+ case 0:
-+ case 1:
- c=fcget();
- break;
-- default:
-+ default:
- c = mbchar(_Fcin.fcptr);
- }
- return(c);
diff --git a/ksh-20120801-jobwait-sigstop.patch b/ksh-20120801-jobwait-sigstop.patch
deleted file mode 100644
index 1749288..0000000
--- a/ksh-20120801-jobwait-sigstop.patch
+++ /dev/null
@@ -1,11 +0,0 @@
-diff --git a/src/cmd/ksh93/sh/jobs.c b/src/cmd/ksh93/sh/jobs.c
---- a/src/cmd/ksh93/sh/jobs.c
-+++ b/src/cmd/ksh93/sh/jobs.c
-@@ -1579,6 +1579,7 @@ int job_wait(register pid_t pid)
- if( pw->p_exit!=SIGTTIN && pw->p_exit!=SIGTTOU)
- break;
-
-+ tcsetpgrp(JOBTTY,pw->p_pgrp);
- killpg(pw->p_pgrp,SIGCONT);
- }
- else /* ignore stop when non-interactive */
diff --git a/ksh-20120801-kia.patch b/ksh-20120801-kia.patch
deleted file mode 100644
index 9b4b972..0000000
--- a/ksh-20120801-kia.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff --git a/src/cmd/ksh93/sh/parse.c b/src/cmd/ksh93/sh/parse.c
-index d139389..5a02af7 100644
---- a/src/cmd/ksh93/sh/parse.c
-+++ b/src/cmd/ksh93/sh/parse.c
-@@ -2032,6 +2032,7 @@ unsigned long kiaentity(Lex_t *lexp,const char *name,int len,int type,int first,
- else
- sfputr(stkp,name,0);
- }
-+ sfputc(stkp,'\0');
- np = nv_search(stakptr(offset),lexp->entity_tree,NV_ADD);
- stkseek(stkp,offset);
- np->nvalue.i = pkind;
diff --git a/ksh-20120801-kshmfix.patch b/ksh-20120801-kshmfix.patch
deleted file mode 100644
index cc68406..0000000
--- a/ksh-20120801-kshmfix.patch
+++ /dev/null
@@ -1,66 +0,0 @@
-diff -up ksh-20120801/src/cmd/ksh93/sh/main.c.monintoron ksh-20120801/src/cmd/ksh93/sh/main.c
---- ksh-20120801/src/cmd/ksh93/sh/main.c.monintoron 2013-05-31 10:15:02.738828102 +0200
-+++ ksh-20120801/src/cmd/ksh93/sh/main.c 2013-05-31 10:15:36.057095262 +0200
-@@ -406,10 +406,10 @@ static void exfile(register Shell_t *shp
- {
- buff.mode = SH_JMPEXIT;
- sh_onoption(SH_TRACKALL);
-- sh_offoption(SH_MONITOR);
- }
- sh_offstate(SH_INTERACTIVE);
-- sh_offstate(SH_MONITOR);
-+ if(sh_isoption(SH_MONITOR))
-+ sh_onstate(SH_MONITOR);
- sh_offstate(SH_HISTORY);
- sh_offoption(SH_HISTORY);
- }
-diff -up ksh-20120801/src/cmd/ksh93/sh/jobs.c.orig ksh-20120801/src/cmd/ksh93/sh/jobs.c
---- ksh-20120801/src/cmd/ksh93/sh/jobs.c.orig 2013-05-31 10:12:28.358590452 +0200
-+++ ksh-20120801/src/cmd/ksh93/sh/jobs.c 2013-05-31 10:16:51.203697890 +0200
-@@ -548,7 +548,7 @@ int job_reap(register int sig)
- {
- px = job_byjid((int)pw->p_job);
- for(; px && (px->p_flag&P_DONE); px=px->p_nxtproc);
-- if(!px)
-+ if(!px && sh_isoption(SH_INTERACTIVE))
- tcsetpgrp(JOBTTY,job.mypid);
- }
- #ifndef SHOPT_BGX
-@@ -842,10 +842,11 @@ static void job_set(register struct proc
-
- static void job_reset(register struct process *pw)
- {
-+ Shell_t *shp = pw->p_shp;
- /* save the terminal state for current job */
- #ifdef SIGTSTP
- job_fgrp(pw,tcgetpgrp(job.fd));
-- if(tcsetpgrp(job.fd,job.mypid) !=0)
-+ if(sh_isoption(SH_INTERACTIVE) && tcsetpgrp(job.fd,job.mypid) !=0)
- return;
- #endif /* SIGTSTP */
- /* force the following tty_get() to do a tcgetattr() unless fg */
-diff -up ksh-20120801/src/cmd/ksh93/sh/xec.c.orig ksh-20120801/src/cmd/ksh93/sh/xec.c
---- ksh-20120801/src/cmd/ksh93/sh/xec.c.orig 2013-05-31 10:12:27.000000000 +0200
-+++ ksh-20120801/src/cmd/ksh93/sh/xec.c 2013-05-31 10:18:14.650367185 +0200
-@@ -2201,7 +2201,7 @@ int sh_exec(register const Shnode_t *t,
- }
- shp->exitval = n;
- #ifdef SIGTSTP
-- if(!pipejob && sh_isstate(SH_MONITOR))
-+ if(!pipejob && sh_isstate(SH_MONITOR) && sh_isoption(SH_INTERACTIVE))
- tcsetpgrp(JOBTTY,shp->gd->pid);
- #endif /*SIGTSTP */
- job.curpgid = savepgid;
-diff -up ksh-20120801/src/cmd/ksh93/edit/edit.c.kshmfix ksh-20120801/src/cmd/ksh93/edit/edit.c
---- ksh-20120801/src/cmd/ksh93/edit/edit.c.kshmfix 2013-09-23 10:46:57.007256192 +0200
-+++ ksh-20120801/src/cmd/ksh93/edit/edit.c 2013-09-23 10:47:43.988937610 +0200
-@@ -1050,7 +1050,7 @@ int ed_getchar(register Edit_t *ep,int m
- {
- if(mode<=0 && -c == ep->e_intr)
- {
-- sh_fault(SIGINT);
-+ killpg(getpgrp(),SIGINT);
- siglongjmp(ep->e_env, UINTR);
- }
- if(mode<=0 && ep->sh->st.trap[SH_KEYTRAP])
-
diff --git a/ksh-20120801-lexfix.patch b/ksh-20120801-lexfix.patch
deleted file mode 100644
index 9150da8..0000000
--- a/ksh-20120801-lexfix.patch
+++ /dev/null
@@ -1,56 +0,0 @@
-diff -up ksh-20120801/src/cmd/ksh93/edit/edit.c.trajfiks ksh-20120801/src/cmd/ksh93/edit/edit.c
---- ksh-20120801/src/cmd/ksh93/edit/edit.c.trajfiks 2012-08-02 00:18:19.000000000 +0200
-+++ ksh-20120801/src/cmd/ksh93/edit/edit.c 2014-02-06 12:12:11.570942651 +0100
-@@ -53,6 +53,7 @@
-
- static char CURSOR_UP[20] = { ESC, '[', 'A', 0 };
- static char KILL_LINE[20] = { ESC, '[', 'J', 0 };
-+static char *savelex;
-
-
-
-@@ -232,6 +233,8 @@ int tty_set(int fd, int action, struct t
- void tty_cooked(register int fd)
- {
- register Edit_t *ep = (Edit_t*)(shgd->ed_context);
-+ if(ep->sh->st.trap[SH_KEYTRAP] && savelex)
-+ memcpy(ep->sh->lex_context,savelex,ep->sh->lexsize);
- ep->e_keytrap = 0;
- if(ep->e_raw==0)
- return;
-@@ -783,6 +786,13 @@ void ed_setup(register Edit_t *ep, int f
- ep->e_lbuf[n] = *pp++;
- ep->e_default = 0;
- }
-+ if(ep->sh->st.trap[SH_KEYTRAP])
-+ {
-+ if(!savelex)
-+ savelex = (char*)malloc(shp->lexsize);
-+ if(savelex)
-+ memcpy(savelex, ep->sh->lex_context, ep->sh->lexsize);
-+ }
- }
-
- static void ed_putstring(register Edit_t *ep, const char *str)
-diff -up ksh-20120801/src/cmd/ksh93/include/defs.h.trajfiks ksh-20120801/src/cmd/ksh93/include/defs.h
---- ksh-20120801/src/cmd/ksh93/include/defs.h.trajfiks 2014-02-06 12:18:13.149091836 +0100
-+++ ksh-20120801/src/cmd/ksh93/include/defs.h 2014-02-06 12:18:13.175091784 +0100
-@@ -224,6 +224,7 @@ struct shared
- int xargexit; \
- int nenv; \
- mode_t mask; \
-+ int lexsize; \
- Env_t *env; \
- void *init_context; \
- void *mac_context; \
-diff -up ksh-20120801/src/cmd/ksh93/sh/lex.c.trajfiks ksh-20120801/src/cmd/ksh93/sh/lex.c
---- ksh-20120801/src/cmd/ksh93/sh/lex.c.trajfiks 2014-02-06 12:19:13.587950320 +0100
-+++ ksh-20120801/src/cmd/ksh93/sh/lex.c 2014-02-06 12:19:13.623950219 +0100
-@@ -268,6 +268,7 @@ Lex_t *sh_lexopen(Lex_t *lp, Shell_t *sp
- {
- lp = (Lex_t*)newof(0,Lex_t,1,0);
- lp->sh = sp;
-+ sp->lexsize = sizeof(Lex_t);
- }
- fcnotify(lex_advance,lp);
- lp->lex.intest = lp->lex.incase = lp->lex.skipword = lp->lexd.warn = 0;
diff --git a/ksh-20120801-locking.patch b/ksh-20120801-locking.patch
deleted file mode 100644
index 189d254..0000000
--- a/ksh-20120801-locking.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-diff -up ksh-20120801/src/cmd/ksh93/include/jobs.h.locking ksh-20120801/src/cmd/ksh93/include/jobs.h
---- ksh-20120801/src/cmd/ksh93/include/jobs.h.locking 2014-06-27 15:51:07.144923719 +0200
-+++ ksh-20120801/src/cmd/ksh93/include/jobs.h 2014-06-27 15:52:56.463272276 +0200
-@@ -149,15 +149,18 @@ extern struct jobs job;
- #define vmbusy() 0
- #endif
-
--#define job_lock() (job.in_critical++)
-+#define asoincint(p) __sync_fetch_and_add(p,1)
-+#define asodecint(p) __sync_fetch_and_sub(p,1)
-+
-+#define job_lock() asoincint(&job.in_critical)
- #define job_unlock() \
- do { \
- int sig; \
-- if (!--job.in_critical && (sig = job.savesig)) \
-+ if (asodecint(&job.in_critical)==1 && (sig = job.savesig)) \
- { \
-- if (!job.in_critical++ && !vmbusy()) \
-+ if (!asoincint(&job.in_critical) && !vmbusy()) \
- job_reap(sig); \
-- job.in_critical--; \
-+ asodecint(&job.in_critical); \
- } \
- } while(0)
-
diff --git a/ksh-20120801-macro.patch b/ksh-20120801-macro.patch
deleted file mode 100644
index 004a5eb..0000000
--- a/ksh-20120801-macro.patch
+++ /dev/null
@@ -1,178 +0,0 @@
-diff -up ksh-20120801/src/cmd/ksh93/include/io.h.macro ksh-20120801/src/cmd/ksh93/include/io.h
---- ksh-20120801/src/cmd/ksh93/include/io.h.macro 2012-07-18 16:12:38.000000000 +0200
-+++ ksh-20120801/src/cmd/ksh93/include/io.h 2013-07-04 16:14:05.809595966 +0200
-@@ -81,6 +81,7 @@ extern void sh_iosave(Shell_t *, int,in
- extern int sh_iovalidfd(Shell_t*, int);
- extern int sh_inuse(Shell_t*, int);
- extern void sh_iounsave(Shell_t*);
-+extern void iounpipe(Shell_t*);
- extern int sh_chkopen(const char*);
- extern int sh_ioaccess(int,int);
- extern int sh_devtofd(const char*);
-diff -up ksh-20120801/src/cmd/ksh93/sh/subshell.c.macro ksh-20120801/src/cmd/ksh93/sh/subshell.c
---- ksh-20120801/src/cmd/ksh93/sh/subshell.c.macro 2013-07-04 16:14:05.783595751 +0200
-+++ ksh-20120801/src/cmd/ksh93/sh/subshell.c 2013-07-04 16:15:46.673432991 +0200
-@@ -171,7 +171,7 @@ void sh_subfork(void)
- {
- register struct subshell *sp = subshell_data;
- Shell_t *shp = sp->shp;
-- int curenv = shp->curenv;
-+ int curenv = shp->curenv, comsub=shp->comsub;
- pid_t pid;
- char *trap = shp->st.trapcom[0];
- if(trap)
-@@ -204,7 +204,7 @@ void sh_subfork(void)
- shp->comsub = 0;
- SH_SUBSHELLNOD->nvalue.s = 0;
- sp->subpid=0;
-- shp->st.trapcom[0] = trap;
-+ shp->st.trapcom[0] = (comsub==2?NULL:trap);
- shp->savesig = 0;
- }
- }
-@@ -743,7 +743,6 @@ Sfio_t *sh_subshell(Shell_t *shp,Shnode_
- fchdir(shp->pwdfd);
- }
- shp->subshare = sp->subshare;
-- shp->comsub = sp->comsub;
- shp->subdup = sp->subdup;
- #if SHOPT_COSHELL
- shp->coshell = sp->coshell;
-@@ -773,7 +772,12 @@ Sfio_t *sh_subshell(Shell_t *shp,Shnode_
- if(nsig>0)
- kill(getpid(),nsig);
- if(sp->subpid)
-+ {
- job_wait(sp->subpid);
-+ if(comsub>1)
-+ iounpipe(shp);
-+ }
-+ shp->comsub = sp->comsub;
- if(comsub && iop && sp->pipefd<0)
- sfseek(iop,(off_t)0,SEEK_SET);
- if(shp->trapnote)
-diff -up ksh-20120801/src/cmd/ksh93/sh/xec.c.macro ksh-20120801/src/cmd/ksh93/sh/xec.c
---- ksh-20120801/src/cmd/ksh93/sh/xec.c.macro 2013-07-04 16:14:05.800595891 +0200
-+++ ksh-20120801/src/cmd/ksh93/sh/xec.c 2013-07-04 16:14:05.810595975 +0200
-@@ -102,11 +102,11 @@ struct funenv
- * temp file.
- */
- static int subpipe[3],subdup,tsetio,usepipe;
--static void iounpipe(Shell_t*);
-+void iounpipe(Shell_t*);
-
--static int iousepipe(Shell_t *shp)
-+int iousepipe(Shell_t *shp)
- {
-- int i;
-+ int fd=sffileno(sfstdout),i,err=errno;
- if(usepipe)
- {
- usepipe++;
-@@ -115,13 +115,18 @@ static int iousepipe(Shell_t *shp)
- if(sh_rpipe(subpipe) < 0)
- return(0);
- usepipe++;
-- fcntl(subpipe[0],F_SETFD,FD_CLOEXEC);
-- subpipe[2] = sh_fcntl(1,F_DUPFD,10);
-- fcntl(subpipe[2],F_SETFD,FD_CLOEXEC);
-+ if(shp->comsub!=1)
-+ {
-+ subpipe[2] = sh_fcntl(subpipe[1],F_DUPFD,10);
-+ sh_close(subpipe[1]);
-+ return(1);
-+ }
-+ subpipe[2] = sh_fcntl(fd,F_dupfd_cloexec,10);
- shp->fdstatus[subpipe[2]] = shp->fdstatus[1];
-- close(1);
-- fcntl(subpipe[1],F_DUPFD,1);
-- shp->fdstatus[1] = shp->fdstatus[subpipe[1]];
-+ while(close(fd)<0 && errno==EINTR)
-+ errno = err;
-+ fcntl(subpipe[1],F_DUPFD,fd);
-+ shp->fdstatus[1] = shp->fdstatus[subpipe[1]]&~IOCLEX;
- sh_close(subpipe[1]);
- if(subdup=shp->subdup) for(i=0; i < 10; i++)
- {
-@@ -135,14 +140,23 @@ static int iousepipe(Shell_t *shp)
- return(1);
- }
-
--static void iounpipe(Shell_t *shp)
-+void iounpipe(Shell_t *shp)
- {
-- int n;
-+ int fd=sffileno(sfstdout),n,err=errno;
- char buff[SF_BUFSIZE];
-- close(1);
-- fcntl(subpipe[2], F_DUPFD, 1);
-- shp->fdstatus[1] = shp->fdstatus[subpipe[2]];
-+ if(!usepipe)
-+ return;
- --usepipe;
-+ if(shp->comsub>1)
-+ {
-+ sh_close(subpipe[2]);
-+ while(read(subpipe[0],buff,sizeof(buff))>0);
-+ goto done;
-+ }
-+ while(close(fd)<0 && errno==EINTR)
-+ errno = err;
-+ fcntl(subpipe[2], F_DUPFD, fd);
-+ shp->fdstatus[1] = shp->fdstatus[subpipe[2]];
- if(subdup) for(n=0; n < 10; n++)
- {
- if(subdup&(1<<n))
-@@ -174,6 +188,7 @@ static void iounpipe(Shell_t *shp)
- else if(errno!=EINTR)
- break;
- }
-+done:
- sh_close(subpipe[0]);
- subpipe[0] = -1;
- tsetio = 0;
-@@ -725,7 +740,7 @@ static void unset_instance(Namval_t *nq,
- }
-
- #if SHOPT_COSHELL
--uintmax_t coused;
-+static uintmax_t coused;
- /*
- * print out function definition
- */
-@@ -1619,10 +1634,14 @@ int sh_exec(register const Shnode_t *t,
- if(shp->subshell)
- {
- sh_subtmpfile(shp);
-- if(shp->comsub==1 && !(shp->fdstatus[1]&IONOSEEK))
-- unpipe=iousepipe(shp);
- if((type&(FAMP|TFORK))==(FAMP|TFORK))
-- sh_subfork();
-+ {
-+ if(shp->comsub && !(shp->fdstatus[1]&IONOSEEK))
-+ {
-+ unpipe = iousepipe(shp);
-+ sh_subfork();
-+ }
-+ }
- }
- no_fork = !ntflag && !(type&(FAMP|FPOU)) && !shp->subshell &&
- !(shp->st.trapcom[SIGINT] && *shp->st.trapcom[SIGINT]) &&
-@@ -3495,8 +3514,7 @@ static void sh_funct(Shell_t *shp,Namval
- struct funenv fun;
- char *fname = nv_getval(SH_FUNNAMENOD);
- struct Level *lp =(struct Level*)(SH_LEVELNOD->nvfun);
-- int level, pipepid=shp->pipepid, comsub=shp->comsub;
-- shp->comsub = 0;
-+ int level, pipepid=shp->pipepid;
- shp->pipepid = 0;
- sh_stats(STAT_FUNCT);
- if(!lp->hdr.disc)
-@@ -3539,7 +3557,6 @@ static void sh_funct(Shell_t *shp,Namval
- lp->maxlevel = level;
- SH_LEVELNOD->nvalue.s = lp->maxlevel;
- shp->last_root = nv_dict(DOTSHNOD);
-- shp->comsub = comsub;
- #if 0
- nv_putval(SH_FUNNAMENOD,shp->st.funname,NV_NOFREE);
- #else
diff --git a/ksh-20120801-manfix4.patch b/ksh-20120801-manfix4.patch
deleted file mode 100644
index 6355445..0000000
--- a/ksh-20120801-manfix4.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -up ksh-20120801/src/cmd/ksh93/sh.1.manfix4 ksh-20120801/src/cmd/ksh93/sh.1
---- ksh-20120801/src/cmd/ksh93/sh.1.manfix4 2014-05-22 12:04:51.593750721 +0200
-+++ ksh-20120801/src/cmd/ksh93/sh.1 2014-05-22 12:05:32.561556452 +0200
-@@ -4147,7 +4147,7 @@ command are ignored if the command is fo
- .B &
- and the
- .B monitor
--option is not active.
-+option is active.
- Otherwise, signals have the values
- inherited by the shell from its parent
- (but see also
diff --git a/ksh-20120801-mb-after-argvar.patch b/ksh-20120801-mb-after-argvar.patch
deleted file mode 100644
index 1b71a57..0000000
--- a/ksh-20120801-mb-after-argvar.patch
+++ /dev/null
@@ -1,15 +0,0 @@
-diff -up ksh-20120801/src/cmd/ksh93/sh/macro.c.orig ksh-20120801/src/cmd/ksh93/sh/macro.c
---- ksh-20120801/src/cmd/ksh93/sh/macro.c.orig 2015-08-24 14:29:58.602967855 -0300
-+++ ksh-20120801/src/cmd/ksh93/sh/macro.c 2015-08-24 14:31:13.682850008 -0300
-@@ -1479,7 +1479,10 @@ retry1:
- default:
- goto nosub;
- }
-- c = fcmbget(&LEN);
-+ if(type)
-+ c = fcmbget(&LEN);
-+ else
-+ c = fcget();
- if(type>M_TREE)
- {
- if(c!=RBRACE)
diff --git a/ksh-20120801-memlik.patch b/ksh-20120801-memlik.patch
deleted file mode 100644
index 31f1eb9..0000000
--- a/ksh-20120801-memlik.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-diff -up ksh-20120801/src/cmd/ksh93/sh/array.c.memlik ksh-20120801/src/cmd/ksh93/sh/array.c
---- ksh-20120801/src/cmd/ksh93/sh/array.c.memlik 2012-06-07 00:00:42.000000000 +0200
-+++ ksh-20120801/src/cmd/ksh93/sh/array.c 2013-06-11 16:52:47.557123973 +0200
-@@ -1701,7 +1701,11 @@ void *nv_associative(register Namval_t *
- ap->header.scope = 0;
- }
- else
-- dtclose(ap->header.table);
-+ {
-+ if((ap->header.nelem&ARRAY_MASK)==0 && (ap->cur=nv_search("0",ap->header.table,0)))
-+ nv_associative(np,(char*)0,NV_ADELETE);
-+ dtclose(ap->header.table);
-+ }
- return((void*)ap);
- case NV_ANEXT:
- if(!ap->pos)
-diff -up ksh-20120801/src/cmd/ksh93/sh/name.c.memlik ksh-20120801/src/cmd/ksh93/sh/name.c
---- ksh-20120801/src/cmd/ksh93/sh/name.c.memlik 2012-07-23 18:21:57.000000000 +0200
-+++ ksh-20120801/src/cmd/ksh93/sh/name.c 2013-06-11 16:19:41.036648218 +0200
-@@ -2465,6 +2465,8 @@ static void table_unset(Shell_t *shp, re
- }
- }
- npnext = (Namval_t*)dtnext(root,np);
-+ if(nv_arrayptr(np))
-+ nv_putsub(np,NIL(char*),ARRAY_SCAN);
- _nv_unset(np,flags);
- nv_delete(np,root,0);
- }
-@@ -3326,7 +3328,7 @@ int nv_rename(register Namval_t *np, int
- shp->last_root = last_root;
- if(flags&NV_MOVE)
- {
-- if(arraynp && !nv_isattr(np,NV_MINIMAL) && (mp=(Namval_t*)np->nvenv) && (ap=nv_arrayptr(mp)))
-+ if(arraynp && !nv_isattr(np,NV_MINIMAL) && (mp=(Namval_t*)np->nvenv) && (ap=nv_arrayptr(mp)) && !ap->fun)
- ap->nelem++;
- }
- if((nv_arrayptr(nr) && !arraynr) || nv_isvtree(nr))
diff --git a/ksh-20120801-memlik3.patch b/ksh-20120801-memlik3.patch
deleted file mode 100644
index 9df57d2..0000000
--- a/ksh-20120801-memlik3.patch
+++ /dev/null
@@ -1,76 +0,0 @@
-diff -up ksh-20120801/src/cmd/ksh93/include/name.h.memlik3 ksh-20120801/src/cmd/ksh93/include/name.h
---- ksh-20120801/src/cmd/ksh93/include/name.h.memlik3 2012-05-10 18:33:41.000000000 +0200
-+++ ksh-20120801/src/cmd/ksh93/include/name.h 2014-01-22 14:14:32.774483776 +0100
-@@ -215,7 +215,7 @@ extern Namval_t *nv_mount(Namval_t*, co
- extern Namval_t *nv_arraychild(Namval_t*, Namval_t*, int);
- extern int nv_compare(Dt_t*, Void_t*, Void_t*, Dtdisc_t*);
- extern void nv_outnode(Namval_t*,Sfio_t*, int, int);
--extern int nv_subsaved(Namval_t*);
-+extern int nv_subsaved(Namval_t*,int);
- extern void nv_typename(Namval_t*, Sfio_t*);
- extern void nv_newtype(Namval_t*);
- extern int nv_istable(Namval_t*);
-diff -up ksh-20120801/src/cmd/ksh93/sh/name.c.memlik3 ksh-20120801/src/cmd/ksh93/sh/name.c
---- ksh-20120801/src/cmd/ksh93/sh/name.c.memlik3 2014-01-22 14:14:32.751483987 +0100
-+++ ksh-20120801/src/cmd/ksh93/sh/name.c 2014-01-22 14:14:32.775483767 +0100
-@@ -1297,7 +1297,7 @@ void nv_delete(Namval_t* np, Dt_t *root,
- {
- if(dtdelete(root,np))
- {
-- if(!(flags&NV_NOFREE) && ((flags&NV_FUNCTION) || !nv_subsaved(np)))
-+ if(!(flags&NV_NOFREE) && ((flags&NV_FUNCTION) || !nv_subsaved(np,flags&NV_TABLE)))
- free((void*)np);
- }
- #if 0
-@@ -2461,14 +2461,14 @@ static void table_unset(Shell_t *shp, re
- {
- _nv_unset(nq,flags);
- npnext = (Namval_t*)dtnext(root,nq);
-- nv_delete(nq,root,0);
-+ nv_delete(nq,root,NV_TABLE);
- }
- }
- npnext = (Namval_t*)dtnext(root,np);
- if(nv_arrayptr(np))
- nv_putsub(np,NIL(char*),ARRAY_SCAN);
- _nv_unset(np,flags);
-- nv_delete(np,root,0);
-+ nv_delete(np,root,NV_TABLE);
- }
- }
-
-diff -up ksh-20120801/src/cmd/ksh93/sh/subshell.c.memlik3 ksh-20120801/src/cmd/ksh93/sh/subshell.c
---- ksh-20120801/src/cmd/ksh93/sh/subshell.c.memlik3 2014-01-22 14:14:32.768483831 +0100
-+++ ksh-20120801/src/cmd/ksh93/sh/subshell.c 2014-01-22 14:20:50.810236676 +0100
-@@ -218,16 +218,28 @@ void sh_subfork(void)
- }
- }
-
--int nv_subsaved(register Namval_t *np)
-+int nv_subsaved(register Namval_t *np,int table)
- {
- register struct subshell *sp;
-- register struct Link *lp;
-+ register struct Link *lp, *lpprev;
- for(sp = (struct subshell*)subshell_data; sp; sp=sp->prev)
- {
-- for(lp=sp->svar; lp; lp = lp->next)
-+ lpprev = 0;
-+ for(lp=sp->svar; lp; lpprev=lp, lp=lp->next)
- {
- if(lp->node==np)
-+ {
-+ if(table&NV_TABLE)
-+ {
-+ if(lpprev)
-+ lpprev->next = lp->next;
-+ else
-+ sp->svar = lp->next;
-+ free((void*)np);
-+ free((void*)lp);
-+ }
- return(1);
-+ }
- }
- }
- return(0);
diff --git a/ksh-20120801-mlikfiks.patch b/ksh-20120801-mlikfiks.patch
deleted file mode 100644
index fbf016a..0000000
--- a/ksh-20120801-mlikfiks.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-diff -up ksh-20120801/src/cmd/ksh93/sh/lex.c.mlikfiks ksh-20120801/src/cmd/ksh93/sh/lex.c
---- ksh-20120801/src/cmd/ksh93/sh/lex.c.mlikfiks 2013-07-22 12:45:30.923170264 +0200
-+++ ksh-20120801/src/cmd/ksh93/sh/lex.c 2013-07-22 12:46:25.235556905 +0200
-@@ -2465,7 +2465,7 @@ static int alias_exceptf(Sfio_t *iop,int
- if(dp!=handle)
- sfdisc(iop,dp);
- }
-- else if(type==SF_FINAL)
-+ else if(type==SF_DPOP || type==SF_FINAL)
- free((void*)ap);
- goto done;
- }
-diff -up ksh-20120801/src/cmd/ksh93/sh/path.c.mlikfiks ksh-20120801/src/cmd/ksh93/sh/path.c
---- ksh-20120801/src/cmd/ksh93/sh/path.c.mlikfiks 2013-07-22 12:47:23.149990016 +0200
-+++ ksh-20120801/src/cmd/ksh93/sh/path.c 2013-07-22 12:48:33.363283877 +0200
-@@ -613,6 +613,7 @@ static void funload(Shell_t *shp,int fno
- }
- while((rp=dtnext(shp->fpathdict,rp)) && strcmp(pname,rp->fname)==0);
- sh_close(fno);
-+ free((void*)pname);
- return;
- }
- sh_onstate(SH_NOLOG);
-diff -up ksh-20120801/src/cmd/ksh93/sh/macro.c.aliasfix ksh-20120801/src/cmd/ksh93/sh/macro.c
---- ksh-20120801/src/cmd/ksh93/sh/macro.c.aliasfix 2013-07-29 15:03:45.841680475 +0200
-+++ ksh-20120801/src/cmd/ksh93/sh/macro.c 2013-07-29 15:04:23.871336821 +0200
-@@ -2085,6 +2085,7 @@ static void comsubst(Mac_t *mp,register
- }
- sfputc(stkp,c);
- }
-+ sfputc(stkp,' ');
- c = stktell(stkp);
- str=stkfreeze(stkp,1);
- /* disable verbose and don't save in history file */
diff --git a/ksh-20120801-mtty.patch b/ksh-20120801-mtty.patch
deleted file mode 100644
index d992a88..0000000
--- a/ksh-20120801-mtty.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -up ksh-20120801/src/cmd/ksh93/sh/xec.c.mtty ksh-20120801/src/cmd/ksh93/sh/xec.c
---- ksh-20120801/src/cmd/ksh93/sh/xec.c.mtty 2014-01-22 16:52:06.441608750 +0100
-+++ ksh-20120801/src/cmd/ksh93/sh/xec.c 2014-01-22 16:52:06.485608361 +0100
-@@ -3163,7 +3169,7 @@ pid_t _sh_fork(Shell_t *shp,register pid
- * completed. Make parent the job group id.
- */
- if(postid==0)
-- job.curpgid = parent;
-+ job.curpgid = job.jobcontrol?parent:getpid();
- if(job.jobcontrol || (flags&FAMP))
- {
- if(setpgid(parent,job.curpgid)<0 && errno==EPERM)
diff --git a/ksh-20120801-noexeccdfix.patch b/ksh-20120801-noexeccdfix.patch
deleted file mode 100644
index 47128e0..0000000
--- a/ksh-20120801-noexeccdfix.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-From b8260293a8ed7849a358291faae7b58f4a05dcc9 Mon Sep 17 00:00:00 2001
-From: Kamil Dudka <kdudka(a)redhat.com>
-Date: Mon, 10 Nov 2014 18:23:34 +0100
-Subject: [PATCH] Resolves: #1160923 - handle failure of fchdir()
-
-... and chdir()
----
- src/cmd/ksh93/bltins/cd_pwd.c | 6 ++++--
- 1 file changed, 4 insertions(+), 2 deletions(-)
-
-diff --git a/src/cmd/ksh93/bltins/cd_pwd.c b/src/cmd/ksh93/bltins/cd_pwd.c
-index a972da6..c20959c 100644
---- a/src/cmd/ksh93/bltins/cd_pwd.c
-+++ b/src/cmd/ksh93/bltins/cd_pwd.c
-@@ -329,18 +329,20 @@ int b_cd(int argc, char *argv[],Shbltin_t *context)
- if(newdirfd >=0)
- {
- /* chdir for directories on HSM/tapeworms may take minutes */
-- if(fchdir(newdirfd) >= 0)
-+ if((rval=fchdir(newdirfd)) >= 0)
- {
- if(shp->pwdfd >= 0)
- sh_close(shp->pwdfd);
- shp->pwdfd=newdirfd;
- goto success;
- }
-+ else
-+ sh_close(newdirfd);
- }
- #ifndef O_SEARCH
- else
- {
-- if(chdir(dir) >=0)
-+ if((rval=chdir(dir)) >=0)
- {
- if(shp->pwdfd >= 0)
- {
---
-2.1.0
-
diff --git a/ksh-20120801-nohupfork.patch b/ksh-20120801-nohupfork.patch
deleted file mode 100644
index 20cdeb9..0000000
--- a/ksh-20120801-nohupfork.patch
+++ /dev/null
@@ -1,11 +0,0 @@
-diff -up ksh-20120801/src/cmd/ksh93/sh/xec.c.nohupfork ksh-20120801/src/cmd/ksh93/sh/xec.c
---- ksh-20120801/src/cmd/ksh93/sh/xec.c.nohupfork 2015-08-27 14:25:38.925378019 +0200
-+++ ksh-20120801/src/cmd/ksh93/sh/xec.c 2015-08-27 14:30:42.267058087 +0200
-@@ -2067,6 +2067,7 @@ int sh_exec(register const Shnode_t *t,
- {
- sh_exec(t->par.partre,flags);
- shp->st.trapcom[0]=0;
-+ sh_offoption(SH_INTERACTIVE);
- sh_done(shp,0);
- }
- }
diff --git a/ksh-20120801-nomulti.patch b/ksh-20120801-nomulti.patch
deleted file mode 100644
index 5d7e7a4..0000000
--- a/ksh-20120801-nomulti.patch
+++ /dev/null
@@ -1,11 +0,0 @@
-diff -up ksh-20120801/src/cmd/ksh93/sh/init.c.nomulti ksh-20120801/src/cmd/ksh93/sh/init.c
---- ksh-20120801/src/cmd/ksh93/sh/init.c.nomulti 2013-10-08 20:46:46.202471042 +0200
-+++ ksh-20120801/src/cmd/ksh93/sh/init.c 2013-10-08 20:46:57.912331483 +0200
-@@ -1446,7 +1446,6 @@ Shell_t *sh_init(register int argc,regis
- #endif /* SHOPT_TIMEOUT */
- /* initialize jobs table */
- job_clear();
-- sh_onoption(SH_MULTILINE);
- if(argc>0)
- {
- /* check for restricted shell */
diff --git a/ksh-20120801-nv_open-memcmp.patch b/ksh-20120801-nv_open-memcmp.patch
deleted file mode 100644
index 93b7e15..0000000
--- a/ksh-20120801-nv_open-memcmp.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff --git a/src/cmd/ksh93/sh/name.c b/src/cmd/ksh93/sh/name.c
---- a/src/cmd/ksh93/sh/name.c
-+++ b/src/cmd/ksh93/sh/name.c
-@@ -1425,7 +1425,7 @@ Namval_t *nv_open(const char *name, Dt_t *root, int flags)
- {
- if(xp->root!=root)
- continue;
-- if(*name==*xp->name && xp->namespace==shp->namespace && (flags&(NV_ARRAY|NV_NOSCOPE))==xp->flags && memcmp(xp->name,name,xp->len)==0 && (name[xp->len]==0 || name[xp->len]=='=' || name[xp->len]=='+'))
-+ if(*name==*xp->name && xp->namespace==shp->namespace && (flags&(NV_ARRAY|NV_NOSCOPE))==xp->flags && strncmp(xp->name,name,xp->len)==0 && (name[xp->len]==0 || name[xp->len]=='=' || name[xp->len]=='+'))
- {
- sh_stats(STAT_NVHITS);
- np = xp->np;
diff --git a/ksh-20120801-oldenvinit.patch b/ksh-20120801-oldenvinit.patch
deleted file mode 100644
index 8ee0863..0000000
--- a/ksh-20120801-oldenvinit.patch
+++ /dev/null
@@ -1,95 +0,0 @@
-diff -up ksh-20120801/src/cmd/ksh93/sh/init.c.fixset ksh-20120801/src/cmd/ksh93/sh/init.c
---- ksh-20120801/src/cmd/ksh93/sh/init.c.fixset 2014-11-03 15:45:36.510997271 +0100
-+++ ksh-20120801/src/cmd/ksh93/sh/init.c 2014-11-03 16:20:44.398917280 +0100
-@@ -2003,8 +2003,91 @@ static Dt_t *inittree(Shell_t *shp,const
- * skip over items that are not name-value pairs
- */
-
-+
- static void env_init(Shell_t *shp)
- {
-+ register char *cp;
-+ register Namval_t *np;
-+ register char **ep=environ;
-+ register char *next=0;
-+#ifdef _ENV_H
-+ shp->env = env_open(environ,3);
-+ env_delete(shp->env,"_");
-+#endif
-+ if(ep)
-+ {
-+ while(cp= *ep++)
-+ {
-+ if(*cp=='A' && cp[1]=='_' && cp[2]=='_' && cp[3]=='z' && cp[4]=='=')
-+ next = cp+4;
-+ else if(np=nv_open(cp,shp->var_tree,(NV_EXPORT|NV_IDENT|NV_ASSIGN|NV_NOFAIL)))
-+ {
-+ nv_onattr(np,NV_IMPORT);
-+ np->nvenv = cp;
-+ nv_close(np);
-+ }
-+ else /* swap with front */
-+ {
-+ ep[-1] = environ[shp->nenv];
-+ environ[shp->nenv++] = cp;
-+ }
-+ }
-+ while(cp=next)
-+ {
-+ if(next = strchr(++cp,'='))
-+ *next = 0;
-+ np = nv_search(cp+2,shp->var_tree,NV_ADD);
-+ if(np!=SHLVL && nv_isattr(np,NV_IMPORT|NV_EXPORT))
-+ {
-+ int flag = *(unsigned char*)cp-' ';
-+ int size = *(unsigned char*)(cp+1)-' ';
-+ if((flag&NV_INTEGER) && size==0)
-+ {
-+ /* check for floating*/
-+ char *ep,*val = nv_getval(np);
-+ strtol(val,&ep,10);
-+ if(*ep=='.' || *ep=='e' || *ep=='E')
-+ {
-+ char *lp;
-+ flag |= NV_DOUBLE;
-+ if(*ep=='.')
-+ {
-+ strtol(ep+1,&lp,10);
-+ if(*lp)
-+ ep = lp;
-+ }
-+ if(*ep && *ep!='.')
-+ {
-+ flag |= NV_EXPNOTE;
-+ size = ep-val;
-+ }
-+ else
-+ size = strlen(ep);
-+ size--;
-+ }
-+ }
-+ nv_newattr(np,flag|NV_IMPORT|NV_EXPORT,size);
-+ }
-+ else
-+ cp += 2;
-+ }
-+ }
-+#ifdef _ENV_H
-+ env_delete(shp->env,e_envmarker);
-+#endif
-+ if(nv_isnull(PWDNOD) || nv_isattr(PWDNOD,NV_TAGGED))
-+ {
-+ nv_offattr(PWDNOD,NV_TAGGED);
-+ path_pwd(shp,0);
-+ }
-+ if((cp = nv_getval(SHELLNOD)) && (sh_type(cp)&SH_TYPE_RESTRICTED))
-+ sh_onoption(SH_RESTRICTED); /* restricted shell */
-+ return;
-+}
-+
-+
-+static void env_init_backup(Shell_t *shp)
-+{
- register char *cp;
- register Namval_t *np,*mp;
- register char **ep=environ;
diff --git a/ksh-20120801-parserfix.patch b/ksh-20120801-parserfix.patch
deleted file mode 100644
index 1dc7695..0000000
--- a/ksh-20120801-parserfix.patch
+++ /dev/null
@@ -1,26 +0,0 @@
---- ksh_20120801/src/cmd/ksh93/sh/lex.c 2012-06-12 21:05:18.000000000 +0200
-+++ ksh_20120801/src/cmd/ksh93/sh/lex.c 2015-08-18 17:42:06.138076565 +0200
-@@ -1603,7 +1603,14 @@ static int comsub(register Lex_t *lp, in
- if(n==4)
- break;
- if(sh_lexstates[ST_NAME][c])
-+ {
-+ if(c==' ' || c=='\t')
-+ {
-+ n = 0;
-+ continue;
-+ }
- goto skip;
-+ }
- word[n++] = c;
- }
- if(sh_lexstates[ST_NAME][c]==S_BREAK)
---- ksh_20120801/src/cmd/ksh93/tests/subshell.sh 2012-07-25 23:40:29.000000000 +0200
-+++ ksh_20120801/src/cmd/ksh93/tests/subshell.sh 2015-08-18 17:42:06.143076553 +0200
-@@ -617,4 +617,6 @@ do if [[ -e $f ]]
- fi
- done
-
-+$SHELL > /dev/null -c 'echo $(for x in whatever; do case y in *) true;; esac; done)' || err_exit 'syntax error with case in command substitution'
-+
- exit $((Errors<125?Errors:125))
diff --git a/ksh-20120801-posix-exit.patch b/ksh-20120801-posix-exit.patch
deleted file mode 100644
index a4b44d0..0000000
--- a/ksh-20120801-posix-exit.patch
+++ /dev/null
@@ -1,24 +0,0 @@
-diff --git a/src/cmd/ksh93/sh/fault.c b/src/cmd/ksh93/sh/fault.c
---- a/src/cmd/ksh93/sh/fault.c
-+++ b/src/cmd/ksh93/sh/fault.c
-@@ -643,7 +643,7 @@ void sh_done(void *ptr, register int sig)
- sfsync((Sfio_t*)sfstdin);
- sfsync((Sfio_t*)shp->outpool);
- sfsync((Sfio_t*)sfstdout);
-- if(savxit&SH_EXITSIG)
-+ if((savxit&SH_EXITMASK) == shp->lastsig)
- sig = savxit&SH_EXITMASK;
- if(sig)
- {
-@@ -668,6 +668,12 @@ void sh_done(void *ptr, register int sig)
- if(sh_isoption(SH_NOEXEC))
- kiaclose((Lex_t*)shp->lex_context);
- #endif /* SHOPT_KIA */
-+
-+ /* Return POSIX exit code if last process exits due to signal */
-+ if (savxit & SH_EXITSIG) {
-+ exit(128 + (savxit&SH_EXITMASK));
-+ }
-+
- exit(savxit&SH_EXITMASK);
- }
diff --git a/ksh-20120801-retfix.patch b/ksh-20120801-retfix.patch
deleted file mode 100644
index 5af1053..0000000
--- a/ksh-20120801-retfix.patch
+++ /dev/null
@@ -1,14 +0,0 @@
-diff -up ksh-20120801/src/cmd/ksh93/sh/subshell.c.retfix ksh-20120801/src/cmd/ksh93/sh/subshell.c
---- ksh-20120801/src/cmd/ksh93/sh/subshell.c.retfix 2014-10-01 17:34:47.720532950 +0200
-+++ ksh-20120801/src/cmd/ksh93/sh/subshell.c 2014-10-01 17:35:25.850350378 +0200
-@@ -655,7 +655,10 @@ Sfio_t *sh_subshell(Shell_t *shp,Shnode_
- job.hack1_waitall=0;
- if(comsub!=1 && shp->spid)
- {
-+ int c = shp->exitval;
- job_wait(shp->spid);
-+ shp->exitval = c;
-+ exitset();
- if(shp->pipepid==shp->spid)
- shp->spid = 0;
- shp->pipepid = 0;
diff --git a/ksh-20120801-rmdirfix.patch b/ksh-20120801-rmdirfix.patch
deleted file mode 100644
index ae9dfd7..0000000
--- a/ksh-20120801-rmdirfix.patch
+++ /dev/null
@@ -1,505 +0,0 @@
-diff -up ksh20120801/src/cmd/ksh93/sh/subshell.c.orig ksh20120801/src/cmd/ksh93/sh/subshell.c
---- ksh20120801/src/cmd/ksh93/sh/subshell.c.orig 2012-07-17 23:54:21.000000000 +0200
-+++ ksh20120801/src/cmd/ksh93/sh/subshell.c 2012-10-24 15:03:44.436870792 +0200
-@@ -40,14 +40,6 @@
- # define PIPE_BUF 512
- #endif
-
--#ifndef O_SEARCH
--# ifdef O_PATH
--# define O_SEARCH O_PATH
--# else
--# define O_SEARCH 0
--# endif
--#endif
--
- /*
- * Note that the following structure must be the same
- * size as the Dtlink_t structure
-@@ -84,7 +76,7 @@ static struct subshell
- char *pwd; /* present working directory */
- const char *shpwd; /* saved pointer to sh.pwd */
- void *jobs; /* save job info */
-- int pwdfd; /* file descritor for pwd */
-+ int shpwdfd;/* fd for present working directory */
- mode_t mask; /* saved umask */
- short tmpfd; /* saved tmp file descriptor */
- short pipefd; /* read fd if pipe is created */
-@@ -101,7 +93,6 @@ static struct subshell
- int subdup;
- char subshare;
- char comsub;
-- char pwdclose;
- #if SHOPT_COSHELL
- void *coshell;
- #endif /* SHOPT_COSHELL */
-@@ -518,7 +509,6 @@ Sfio_t *sh_subshell(Shell_t *shp,Shnode_
- shp->pathinit = 0;
- }
- sp->pathlist = path_dup((Pathcomp_t*)shp->pathlist);
-- sp->pwdfd = -1;
- if(!shp->pwd)
- path_pwd(shp,0);
- sp->bckpid = shp->bckpid;
-@@ -531,39 +521,14 @@ Sfio_t *sh_subshell(Shell_t *shp,Shnode_
- shp->subshare = comsub==2 || (comsub==1 && sh_isoption(SH_SUBSHARE));
- if(comsub)
- shp->comsub = comsub;
-+ sp->shpwdfd=-1;
- if(!comsub || !shp->subshare)
- {
-- struct subshell *xp;
- sp->shpwd = shp->pwd;
--#ifdef _lib_fchdir
-- for(xp=sp->prev; xp; xp=xp->prev)
-- {
-- if(xp->pwdfd>0 && strcmp(xp->pwd,shp->pwd)==0)
-- {
-- sp->pwdfd = xp->pwdfd;
-- break;
-- }
-- }
-- if(sp->pwdfd<0)
-- {
-- int n = open(".",O_RDONLY);
-- if(O_SEARCH && errno==EACCES)
-- n = open(".",O_RDONLY);
-- if(n>=0)
-- {
-- sp->pwdfd = n;
-- if(n<10)
-- {
-- sp->pwdfd = sh_fcntl(n,F_DUPFD,10);
-- close(n);
-- }
-- if(sp->pwdfd>0)
-- {
-- fcntl(sp->pwdfd,F_SETFD,FD_CLOEXEC);
-- sp->pwdclose = 1;
-- }
-- }
-- }
-+ sp->shpwdfd=((shp->pwdfd >= 0))?sh_fcntl(shp->pwdfd, F_dupfd_cloexec, 10):-1;
-+#ifdef O_SEARCH
-+ if(sp->shpwdfd<0)
-+ errormsg(SH_DICT,ERROR_system(1), "Can't obtain directory fd.");
- #endif
- sp->pwd = (shp->pwd?strdup(shp->pwd):0);
- sp->mask = shp->mask;
-@@ -741,14 +706,11 @@ Sfio_t *sh_subshell(Shell_t *shp,Shnode_
- Namval_t *pwdnod = sh_scoped(shp,PWDNOD);
- if(shp->pwd)
- {
-- if(sp->pwdfd >=0)
-- {
-- if(fchdir(sp->pwdfd)<0)
-- chdir(sp->pwd);
-- }
-- else
-- chdir(sp->pwd);
- shp->pwd=sp->pwd;
-+#ifndef O_SEARCH
-+ if (sp->shpwdfd < 0)
-+ chdir(shp->pwd);
-+#endif
- path_newdir(shp,shp->pathlist);
- }
- if(nv_isattr(pwdnod,NV_NOFREE))
-@@ -762,8 +724,6 @@ Sfio_t *sh_subshell(Shell_t *shp,Shnode_
- }
- else
- free((void*)sp->pwd);
-- if(sp->pwdclose)
-- close(sp->pwdfd);
- if(sp->mask!=shp->mask)
- umask(shp->mask=sp->mask);
- if(shp->coutpipe!=sp->coutpipe)
-@@ -775,6 +735,13 @@ Sfio_t *sh_subshell(Shell_t *shp,Shnode_
- shp->cpipe[1] = sp->cpipe;
- shp->coutpipe = sp->coutpipe;
- }
-+ if(sp->shpwdfd >=0)
-+ {
-+ if(shp->pwdfd >=0)
-+ sh_close(shp->pwdfd);
-+ shp->pwdfd=sp->shpwdfd;
-+ fchdir(shp->pwdfd);
-+ }
- shp->subshare = sp->subshare;
- shp->comsub = sp->comsub;
- shp->subdup = sp->subdup;
-diff -up ksh-20120801/src/cmd/ksh93/bltins/cd_pwd.c.orig ksh-20120801/src/cmd/ksh93/bltins/cd_pwd.c
---- ksh-20120801/src/cmd/ksh93/bltins/cd_pwd.c.orig 2012-08-02 16:50:40.000000000 +0200
-+++ ksh-20120801/src/cmd/ksh93/bltins/cd_pwd.c 2012-10-24 15:37:46.814469045 +0200
-@@ -38,6 +38,10 @@
- #include "builtins.h"
- #include <ls.h>
-
-+#ifndef EINTR_REPEAT
-+# define EINTR_REPEAT(expr) while((expr) && (errno == EINTR)) errno=0;
-+#endif
-+
- /*
- * Invalidate path name bindings to relative paths
- */
-@@ -49,6 +53,95 @@ static void rehash(register Namval_t *np
- _nv_unset(np,0);
- }
-
-+/*
-+ * Obtain a file handle to the directory "path" relative to directory
-+ * "dir", or open a NFSv4 xattr directory handle for file dir/path.
-+ */
-+int sh_diropenat(Shell_t *shp, int dir, const char *path, bool xattr)
-+{
-+ int fd,shfd;
-+ int savederrno=errno;
-+#ifndef AT_FDCWD
-+ NOT_USED(dir);
-+#endif
-+#ifndef O_XATTR
-+ NOT_USED(xattr);
-+#endif
-+
-+#ifdef O_XATTR
-+ if(xattr)
-+ {
-+ int apfd; /* attribute parent fd */
-+ /* open parent node... */
-+ EINTR_REPEAT((apfd = openat(dir, path, O_RDONLY|O_NONBLOCK|O_cloexec)) < 0);
-+ if(apfd < 0)
-+ return -1;
-+
-+ /* ... and then open a fd to the attribute directory */
-+ EINTR_REPEAT((fd = openat(apfd, e_dot, O_XATTR|O_cloexec)) < 0);
-+
-+ savederrno = errno;
-+ EINTR_REPEAT(close(apfd) < 0);
-+ errno = savederrno;
-+ }
-+ else
-+#endif
-+ {
-+#ifdef AT_FDCWD
-+ /*
-+ * Open directory. First we try without |O_SEARCH| and
-+ * if this fails with EACCESS we try with |O_SEARCH|
-+ * again.
-+ * This is required ...
-+ * - ... because some platforms may require that it can
-+ * only be used for directories while some filesystems
-+ * (e.g. Reiser4 or HSM systems) allow a |fchdir()| into
-+ * files, too)
-+ * - ... to preserve the semantics of "cd", e.g.
-+ * otherwise "cd" would return [No access] instead of
-+ * [Not a directory] for files on filesystems which do
-+ * not allow a "cd" into files.
-+ * - ... to allow that a
-+ * $ redirect {n}</etc ; cd /dev/fd/$n # works on most
-+ * platforms.
-+ */
-+ EINTR_REPEAT((fd = openat(dir, path, O_RDONLY|O_NONBLOCK|O_cloexec)) < 0);
-+# ifdef O_SEARCH
-+ if((fd < 0) && (errno == EACCES))
-+ {
-+ EINTR_REPEAT((fd = openat(dir, path, O_SEARCH|O_cloexec)) < 0)
-+ }
-+# endif
-+#else
-+ /*
-+ * Version of openat() call above for systems without
-+ * openat API. This only works because we basically
-+ * gurantee that |dir| is always the same place as
-+ * |cwd| on such machines (but this won't be the case
-+ * in the future).
-+ */
-+ /*
-+ * This |fchdir()| call is not needed (yet) since
-+ * all consumers do not use |dir| when |AT_FDCWD|
-+ * is not available.
-+ *
-+ * fchdir(dir);
-+ */
-+ EINTR_REPEAT((fd = open(path, O_cloexec)) < 0);
-+#endif
-+ }
-+
-+ if(fd < 0)
-+ return fd;
-+
-+ /* Move fd to a number > 10 and *register* the fd number with the shell */
-+ shfd = sh_fcntl(fd, F_dupfd_cloexec, 10);
-+ savederrno=errno;
-+ sh_close(fd);
-+ errno=savederrno;
-+ return(shfd);
-+}
-+
- int b_cd(int argc, char *argv[],Shbltin_t *context)
- {
- register char *dir;
-@@ -56,18 +149,20 @@ int b_cd(int argc, char *argv[],Shbltin_
- register const char *dp;
- register Shell_t *shp = context->shp;
- int saverrno=0;
-- int rval,flag=0;
-+ int rval;
-+ bool flag=false,xattr=false;
- char *oldpwd;
-+ int newdirfd;
- Namval_t *opwdnod, *pwdnod;
- if(sh_isoption(SH_RESTRICTED))
- errormsg(SH_DICT,ERROR_exit(1),e_restricted+4);
- while((rval = optget(argv,sh_optcd))) switch(rval)
- {
- case 'L':
-- flag = 0;
-+ flag = false;
- break;
- case 'P':
-- flag = 1;
-+ flag = true;
- break;
- case ':':
- errormsg(SH_DICT,2, "%s", opt_info.arg);
-@@ -179,14 +274,72 @@ int b_cd(int argc, char *argv[],Shbltin_
- continue;
- #endif /* SHOPT_FS_3D */
- }
-+ rval = newdirfd = sh_diropenat(shp, shp->pwdfd,
-+ path_relative(shp,stakptr(PATH_OFFSET)), xattr);
-+ if(newdirfd >=0)
-+ {
-+ /* chdir for directories on HSM/tapeworms may take minutes */
-+ if(fchdir(newdirfd) >= 0)
-+ {
-+ if(shp->pwdfd >= 0)
-+ sh_close(shp->pwdfd);
-+ shp->pwdfd=newdirfd;
-+ goto success;
-+ }
-+ }
-+#ifndef O_SEARCH
-+ else
-+ {
- if((rval=chdir(path_relative(shp,stakptr(PATH_OFFSET)))) >= 0)
-- goto success;
-- if(errno!=ENOENT && saverrno==0)
-+ {
-+ if(shp->pwdfd >= 0)
-+ {
-+ sh_close(shp->pwdfd);
-+#ifdef AT_FDCWD
-+ shp->pwdfd = AT_FDCWD;
-+#else
-+ shp->pwdfd = -1;
-+#endif
-+ }
-+ }
-+ }
-+#endif
-+ if(saverrno==0)
- saverrno=errno;
-+ if(newdirfd >=0)
-+ sh_close(newdirfd);
- }
- while(cdpath);
- if(rval<0 && *dir=='/' && *(path_relative(shp,stakptr(PATH_OFFSET)))!='/')
-- rval = chdir(dir);
-+ {
-+ rval = newdirfd = sh_diropenat(shp,
-+ shp->pwdfd,
-+ dir, xattr);
-+ if(newdirfd >=0)
-+ {
-+ /* chdir for directories on HSM/tapeworms may take minutes */
-+ if(fchdir(newdirfd) >= 0)
-+ {
-+ if(shp->pwdfd >= 0)
-+ sh_close(shp->pwdfd);
-+ shp->pwdfd=newdirfd;
-+ goto success;
-+ }
-+ }
-+#ifndef O_SEARCH
-+ else
-+ {
-+ if(chdir(dir) >=0)
-+ {
-+ if(shp->pwdfd >= 0)
-+ {
-+ sh_close(shp->pwdfd);
-+ shp->pwdfd=-1;
-+ }
-+ }
-+ }
-+#endif
-+ }
- /* use absolute chdir() if relative chdir() fails */
- if(rval<0)
- {
-@@ -213,7 +366,7 @@ success:
- if(*dir != '/')
- return(0);
- nv_putval(opwdnod,oldpwd,NV_RDONLY);
-- flag = strlen(dir);
-+ flag = (strlen(dir)>0)?true:false;
- /* delete trailing '/' */
- while(--flag>0 && dir[flag]=='/')
- dir[flag] = 0;
-diff -up ksh-20120801/src/cmd/ksh93/include/shell.h.orig ksh-20120801/src/cmd/ksh93/include/shell.h
---- ksh-20120801/src/cmd/ksh93/include/shell.h.orig 2012-07-17 22:07:40.000000000 +0200
-+++ ksh-20120801/src/cmd/ksh93/include/shell.h 2012-10-24 15:42:10.756987230 +0200
-@@ -145,6 +145,7 @@ struct Shell_s
- unsigned char trapnote; /* set when trap/signal is pending */
- char shcomp; /* set when runing shcomp */
- short subshell; /* set for virtual subshell */
-+ int pwdfd; /* file descriptor for pwd */
- #ifdef _SH_PRIVATE
- _SH_PRIVATE
- #endif /* _SH_PRIVATE */
-diff -up ksh-20120801/src/cmd/ksh93/sh/init.c.orig ksh-20120801/src/cmd/ksh93/sh/init.c
---- ksh-20120801/src/cmd/ksh93/sh/init.c.orig 2012-05-11 19:19:10.000000000 +0200
-+++ ksh-20120801/src/cmd/ksh93/sh/init.c 2012-10-24 15:31:59.659485151 +0200
-@@ -1365,6 +1365,18 @@ Shell_t *sh_init(register int argc,regis
- }
- }
- sh_ioinit(shp);
-+#ifdef AT_FDCWD
-+ shp->pwdfd = sh_diropenat(shp, AT_FDCWD, e_dot, false);
-+#else
-+ /* Systems without AT_FDCWD/openat() do not use the |dir| argument */
-+ shp->pwdfd = sh_diropenat(shp, -1, e_dot, false);
-+#endif
-+#ifdef O_SEARCH
-+ /* This should _never_ happen, guranteed by design and goat sacrifice */
-+ if(shp->pwdfd < 0)
-+ errormsg(SH_DICT,ERROR_system(1), "Can't obtain directory fd.");
-+#endif
-+
- /* initialize signal handling */
- sh_siginit(shp);
- stakinstall(NIL(Stak_t*),nospace);
-diff -up ksh-20120801/src/cmd/ksh93/sh/xec.c.orig ksh-20120801/src/cmd/ksh93/sh/xec.c
---- ksh-20120801/src/cmd/ksh93/sh/xec.c.orig 2012-07-23 16:49:32.000000000 +0200
-+++ ksh-20120801/src/cmd/ksh93/sh/xec.c 2012-10-24 15:35:02.209539671 +0200
-@@ -1348,8 +1348,12 @@ int sh_exec(register const Shnode_t *t,
- {
- if(!shp->pwd)
- path_pwd(shp,0);
-- if(shp->pwd)
-- stat(".",&statb);
-+#ifndef O_SEARCH
-+ else if (shp->pwdfd>=0)
-+ fstat(shp->pwdfd,&statb);
-+ else if (shp->pwd)
-+ stat(e_dot,&statb);
-+#endif
- sfsync(NULL);
- share = sfset(sfstdin,SF_SHARE,0);
- sh_onstate(SH_STOPOK);
-@@ -1428,14 +1432,32 @@ int sh_exec(register const Shnode_t *t,
- sh_offstate(SH_NOFORK);
- if(!(nv_isattr(np,BLT_ENV)))
- {
-- if(shp->pwd)
-+#ifdef O_SEARCH
-+ while((fchdir(shp->pwdfd) < 0) && errno==EINTR)
-+ errno = 0;
-+#else
-+ if(shp->pwd || (shp->pwdfd >= 0))
- {
- struct stat stata;
- stat(".",&stata);
- /* restore directory changed */
- if(statb.st_ino!=stata.st_ino || statb.st_dev!=stata.st_dev)
-- chdir(shp->pwd);
-+ {
-+ /* chdir for directories on HSM/tapeworms may take minutes */
-+ int err=errno;
-+ if(shp->pwdfd >= 0)
-+ {
-+ while((fchdir(shp->pwdfd) < 0) && errno==EINTR)
-+ errno = err;
-+ }
-+ else
-+ {
-+ while((chdir(shp->pwd) < 0) && errno==EINTR)
-+ errno = err;
-+ }
-+ }
- }
-+#endif /* O_SEARCH */
- sh_offstate(SH_STOPOK);
- if(share&SF_SHARE)
- sfset(sfstdin,SF_PUBLIC|SF_SHARE,1);
-diff -up ksh-20120801/src/lib/libast/features/common.orig ksh-20120801/src/lib/libast/features/common
---- ksh-20120801/src/lib/libast/features/common.orig 2011-12-12 20:55:33.000000000 +0100
-+++ ksh-20120801/src/lib/libast/features/common 2012-10-24 15:54:35.433885131 +0200
-@@ -463,6 +463,66 @@ typ uintptr_t stdint.h inttypes.h no{
- typedef unsigned _ast_int4_t uintptr_t;
- #endif
- }end
-+typ _Bool = uint8_t
-+cat{
-+ #if defined(_STDC_C99) || __STDC_VERSION__ >= 199901L
-+ #include <stdbool.h>
-+ #else
-+ #define bool _Bool
-+ #define false 0
-+ #define true 1
-+ #endif
-+}end
-+tst key __thread -lpthread note{ __thread keyword exists and works with -lpthread }end execute{
-+ #include <pthread.h>
-+
-+ #define INITIAL 1
-+ #define LOOP 100
-+
-+ static __thread int specific = INITIAL;
-+ static int global = 0;
-+
-+ static void* worker(void* arg)
-+ {
-+ int k;
-+ int v;
-+ v = (int)(arg - 0);
-+ for (k = 0; k < LOOP; ++k)
-+ {
-+ specific += v;
-+ usleep(1);
-+ }
-+ if (specific != (INITIAL + LOOP * v))
-+ global = 1;
-+ return 0;
-+ }
-+ int main()
-+ {
-+ pthread_t th[2];
-+
-+ if (pthread_create(&th[0], 0, worker, (void*)0 + 5) ||
-+ pthread_create(&th[1], 0, worker, (void*)0 + 7))
-+ {
-+ NOTE("pthread_create failed");
-+ return 1;
-+ }
-+ pthread_join(th[0], 0);
-+ pthread_join(th[1], 0);
-+ if (global)
-+ {
-+ NOTE("__thread variable not thread specific");
-+ return 1;
-+ }
-+ if (specific != INITIAL)
-+ {
-+ NOTE("main __thread variable changed by another thread");
-+ return 1;
-+ }
-+ return 0;
-+ }
-+}end no{
-+ #define __thread /* __thread keyword does not exist or does not work with -lpthread */
-+}end
-
- tst - -DTRY=1 - -DTRY=1 -Dvoid=char - -DTRY=2 - -DTRY=3 - -DTRY=4 output{
- #if _STD_ && _hdr_stdarg
diff --git a/ksh-20120801-roundit.patch b/ksh-20120801-roundit.patch
deleted file mode 100644
index 015bc85..0000000
--- a/ksh-20120801-roundit.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -up ksh-20120801/src/lib/libast/sfio/sfcvt.c.rounditgood ksh-20120801/src/lib/libast/sfio/sfcvt.c
---- ksh-20120801/src/lib/libast/sfio/sfcvt.c.rounditgood 2014-02-27 16:45:54.630161032 +0100
-+++ ksh-20120801/src/lib/libast/sfio/sfcvt.c 2014-02-27 16:45:54.658161205 +0100
-@@ -491,7 +491,7 @@ int format; /* conversion format */
- *decpt += 1;
- if(!(format&SFFMT_EFORMAT))
- { /* add one more 0 for %f precision */
-- ep[-1] = '0';
-+ if(ep-sp>1) ep[-1] = '0';
- ep += 1;
- }
- }
diff --git a/ksh-20120801-sh_iovalidfd.patch b/ksh-20120801-sh_iovalidfd.patch
deleted file mode 100644
index bdd9154..0000000
--- a/ksh-20120801-sh_iovalidfd.patch
+++ /dev/null
@@ -1,79 +0,0 @@
-diff --git a/src/cmd/ksh93/include/io.h b/src/cmd/ksh93/include/io.h
---- a/src/cmd/ksh93/include/io.h
-+++ b/src/cmd/ksh93/include/io.h
-@@ -79,7 +79,7 @@ extern Sfio_t *sh_iostream(Shell_t*,int);
- extern int sh_redirect(Shell_t*,struct ionod*,int);
- extern void sh_iosave(Shell_t *, int,int,char*);
- extern int safefdnumber(Shell_t* shp, int sfd);
--extern int sh_iovalidfd(Shell_t*, int);
-+extern bool sh_iovalidfd(Shell_t*, int);
- extern int sh_inuse(Shell_t*, int);
- extern void sh_iounsave(Shell_t*);
- extern void iounpipe(Shell_t*);
-diff --git a/src/cmd/ksh93/sh/io.c b/src/cmd/ksh93/sh/io.c
---- a/src/cmd/ksh93/sh/io.c
-+++ b/src/cmd/ksh93/sh/io.c
-@@ -403,38 +403,50 @@ static short filemapsize;
-
- /* ======== input output and file copying ======== */
-
--int sh_iovalidfd(Shell_t *shp, int fd)
-+bool sh_iovalidfd(Shell_t *shp, int fd)
- {
- Sfio_t **sftable = shp->sftable;
- int max,n, **fdptrs = shp->fdptrs;
- unsigned char *fdstatus = shp->fdstatus;
- if(fd<0)
-- return(0);
-+ return(false);
- if(fd < shp->gd->lim.open_max)
-- return(1);
-+ return(true);
- max = strtol(astconf("OPEN_MAX",NiL,NiL),NiL,0);
- if(fd >= max)
- {
- errno = EBADF;
-- return(0);
-+ return(false);
- }
- n = (fd+16)&~0xf;
-- if(n > max)
-- n = max;
-+ if(n++ > max)
-+ n = max+1;
- max = shp->gd->lim.open_max;
-- shp->sftable = (Sfio_t**)calloc((n+1)*(sizeof(int*)+sizeof(Sfio_t*)+1),1);
-- if(max)
-- memcpy(shp->sftable,sftable,max*sizeof(Sfio_t*));
-+ shp->sftable = (Sfio_t**)calloc((n+1)*(sizeof(int*)+sizeof(Sfio_t*)+sizeof(*fdstatus)),1);
-+
-+ if(sftable)
-+ {
-+ --sftable;
-+ if(max)
-+ memcpy(shp->sftable,sftable,++max*sizeof(Sfio_t*));
-+
-+ }
-+
- shp->fdptrs = (int**)(&shp->sftable[n]);
- if(max)
-- memcpy(shp->fdptrs,fdptrs,max*sizeof(int*));
-+ memcpy(shp->fdptrs,--fdptrs,max*sizeof(int*));
- shp->fdstatus = (unsigned char*)(&shp->fdptrs[n]);
- if(max)
-- memcpy(shp->fdstatus,fdstatus,max);
-+ memcpy(shp->fdstatus,--fdstatus,max);
-+
- if(sftable)
- free((void*)sftable);
-- shp->gd->lim.open_max = n;
-- return(1);
-+
-+ shp->sftable++;
-+ shp->fdptrs++;
-+ shp->fdstatus++;
-+ shp->gd->lim.open_max = n-1;
-+ return(true);
- }
-
- int sh_inuse(Shell_t *shp, int fd)
diff --git a/ksh-20120801-subshell-jobwait.patch b/ksh-20120801-subshell-jobwait.patch
deleted file mode 100644
index 8dac4a1..0000000
--- a/ksh-20120801-subshell-jobwait.patch
+++ /dev/null
@@ -1,14 +0,0 @@
-diff --git a/src/cmd/ksh93/sh/xec.c b/src/cmd/ksh93/sh/xec.c
---- a/src/cmd/ksh93/sh/xec.c
-+++ b/src/cmd/ksh93/sh/xec.c
-@@ -1647,8 +1647,9 @@ int sh_exec(register const Shnode_t *t, int flags)
- {
- if (!unpipe)
- unpipe = iousepipe(shp);
-- sh_subfork();
- }
-+
-+ sh_subfork();
- }
- }
- no_fork = !ntflag && !(type&(FAMP|FPOU)) && !shp->subshell &&
diff --git a/ksh-20120801-subshell-leak.patch b/ksh-20120801-subshell-leak.patch
deleted file mode 100644
index 24c7f6b..0000000
--- a/ksh-20120801-subshell-leak.patch
+++ /dev/null
@@ -1,20 +0,0 @@
-diff --git a/src/cmd/ksh93/sh/path.c b/src/cmd/ksh93/sh/path.c
-index d723987..9965bf5 100644
---- a/src/cmd/ksh93/sh/path.c
-+++ b/src/cmd/ksh93/sh/path.c
-@@ -1791,8 +1791,12 @@ void path_alias(register Namval_t *np,register Pathcomp_t *pp)
- {
- struct stat statb;
- char *sp;
-+ Pathcomp_t *old = 0;
- nv_offattr(np,NV_NOPRINT);
- nv_stack(np,&talias_init);
-+ old = (Pathcomp_t*)np->nvalue.cp;
-+ if (old && (--old->refcount <= 0))
-+ free((void*)old);
- np->nvalue.cp = (char*)pp;
- pp->refcount++;
- nv_setattr(np,NV_TAGGED|NV_NOFREE);
---
-2.9.3
-
diff --git a/ksh-20120801-sufix.patch b/ksh-20120801-sufix.patch
deleted file mode 100644
index b820e1c..0000000
--- a/ksh-20120801-sufix.patch
+++ /dev/null
@@ -1,11 +0,0 @@
-diff -up ksh-20120801/src/cmd/ksh93/sh/io.c.sufix ksh-20120801/src/cmd/ksh93/sh/io.c
---- ksh-20120801/src/cmd/ksh93/sh/io.c.sufix 2014-04-08 14:30:14.412343555 +0200
-+++ ksh-20120801/src/cmd/ksh93/sh/io.c 2014-04-08 14:31:18.403876587 +0200
-@@ -2144,6 +2144,7 @@ static int io_prompt(Shell_t *shp,Sfio_t
- }
- #endif /* TIOCLBIC */
- cp = sh_mactry(shp,nv_getval(sh_scoped(shp,PS1NOD)));
-+ shp->exitval = 0;
- for(;c= *cp;cp++)
- {
- if(c==HIST_CHAR)
diff --git a/ksh-20120801-syntax-error.patch b/ksh-20120801-syntax-error.patch
deleted file mode 100644
index aaeef77..0000000
--- a/ksh-20120801-syntax-error.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff --git a/src/cmd/ksh93/sh/parse.c b/src/cmd/ksh93/sh/parse.c
---- a/src/cmd/ksh93/sh/parse.c
-+++ b/src/cmd/ksh93/sh/parse.c
-@@ -742,7 +742,7 @@ static Shnode_t *funct(Lex_t *lexp)
- register Shnode_t *t;
- register int flag;
- struct slnod *volatile slp=0;
-- Stak_t *savstak;
-+ Stak_t *volatile savstak=0;
- Sfoff_t first, last;
- struct functnod *volatile fp;
- Sfio_t *iop;
diff --git a/ksh-20120801-tabfix.patch b/ksh-20120801-tabfix.patch
deleted file mode 100644
index 962763e..0000000
--- a/ksh-20120801-tabfix.patch
+++ /dev/null
@@ -1,18 +0,0 @@
-diff -up ksh-20120801/src/cmd/ksh93/edit/emacs.c.tabfix ksh-20120801/src/cmd/ksh93/edit/emacs.c
---- ksh-20120801/src/cmd/ksh93/edit/emacs.c.tabfix 2012-07-17 22:44:44.000000000 +0200
-+++ ksh-20120801/src/cmd/ksh93/edit/emacs.c 2013-03-07 15:58:59.902161711 +0100
-@@ -1011,10 +1011,13 @@ static int escape(register Emacs_t* ep,r
- ep->ed->e_tabcount=0;
- else
- {
-+ int oldi = i;
- i=ed_getchar(ep->ed,0);
- ed_ungetchar(ep->ed,i);
-- if(isdigit(i))
-+ if(isdigit(i) && oldi=='=')
- ed_ungetchar(ep->ed,ESC);
-+ else if (isdigit(i) || i=='\t')
-+ ep->ed->e_tabcount=0;
- }
- }
- else
diff --git a/ksh-20120801-tpstl.patch b/ksh-20120801-tpstl.patch
deleted file mode 100644
index 41e17c8..0000000
--- a/ksh-20120801-tpstl.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -up ksh-20120801/src/cmd/ksh93/sh/init.c.tpstl ksh-20120801/src/cmd/ksh93/sh/init.c
---- ksh-20120801/src/cmd/ksh93/sh/init.c.tpstl 2014-04-03 11:21:25.395547276 +0200
-+++ ksh-20120801/src/cmd/ksh93/sh/init.c 2014-04-03 11:26:03.908867208 +0200
-@@ -332,7 +332,7 @@ static Namfun_t *clone_optindex(Namval_t
- /* Trap for restricted variables FPATH, PATH, SHELL, ENV */
- static void put_restricted(register Namval_t* np,const char *val,int flags,Namfun_t *fp)
- {
-- Shell_t *shp = nv_shell(np);
-+ Shell_t *shp = sh_getinterp();
- int path_scoped = 0, fpath_scoped=0;
- Pathcomp_t *pp;
- char *name = nv_name(np);
diff --git a/ksh-20120801-trapcom.patch b/ksh-20120801-trapcom.patch
deleted file mode 100644
index 91cb1a8..0000000
--- a/ksh-20120801-trapcom.patch
+++ /dev/null
@@ -1,98 +0,0 @@
-diff -up ksh-20120801/src/cmd/ksh93/sh/subshell.c.orig ksh-20120801/src/cmd/ksh93/sh/subshell.c
---- ksh-20120801/src/cmd/ksh93/sh/subshell.c.orig 2015-08-13 15:20:14.022167794 -0300
-+++ ksh-20120801/src/cmd/ksh93/sh/subshell.c 2015-08-13 15:21:43.263088168 -0300
-@@ -481,12 +481,12 @@ Sfio_t *sh_subshell(Shell_t *shp,Shnode_
- {
- struct subshell sub_data;
- register struct subshell *sp = &sub_data;
-- int jmpval,nsig=0,duped=0;
-+ int jmpval,isig,nsig=0,duped=0;
- long savecurenv = shp->curenv;
- int savejobpgid = job.curpgid;
- int *saveexitval = job.exitval;
- int16_t subshell;
-- char *savsig;
-+ char **savsig;
- Sfio_t *iop=0;
- struct checkpt buff;
- struct sh_scoped savst;
-@@ -561,10 +561,13 @@ Sfio_t *sh_subshell(Shell_t *shp,Shnode_
- /* save trap table */
- shp->st.otrapcom = 0;
- shp->st.otrap = savst.trap;
-- if((nsig=shp->st.trapmax*sizeof(char*))>0 || shp->st.trapcom[0])
-+ if((nsig=shp->st.trapmax)>0 || shp->st.trapcom[0])
- {
-- nsig += sizeof(char*);
-- memcpy(savsig=malloc(nsig),(char*)&shp->st.trapcom[0],nsig);
-+ ++nsig;
-+ savsig = malloc(nsig * sizeof(char*));
-+ /* contents of shp->st.trapcom may change */
-+ for (isig = 0; isig < nsig; ++isig)
-+ savsig[isig] = shp->st.trapcom[isig] == Empty ? Empty : (shp->st.trapcom[isig] ? strdup(shp->st.trapcom[isig]) : NULL);
- /* this nonsense needed for $(trap) */
- shp->st.otrapcom = (char**)savsig;
- }
-@@ -732,7 +735,10 @@ Sfio_t *sh_subshell(Shell_t *shp,Shnode_
- shp->st.otrap = 0;
- if(nsig)
- {
-- memcpy((char*)&shp->st.trapcom[0],savsig,nsig);
-+ for (isig = 0; isig < nsig; ++isig)
-+ if (shp->st.trapcom[isig] && shp->st.trapcom[isig]!=Empty)
-+ free(shp->st.trapcom[isig]);
-+ memcpy((char*)&shp->st.trapcom[0],savsig,nsig*sizeof(char*));
- free((void*)savsig);
- }
- shp->options = sp->options;
-diff -up ksh-20120801/src/cmd/ksh93/sh/xec.c.orig ksh-20120801/src/cmd/ksh93/sh/xec.c
---- ksh-20120801/src/cmd/ksh93/sh/xec.c.orig 2015-08-13 15:22:09.821062351 -0300
-+++ ksh-20120801/src/cmd/ksh93/sh/xec.c 2015-08-13 15:28:06.166662530 -0300
-@@ -3383,10 +3383,10 @@ int sh_funscope(int argn, char *argv[],i
- struct dolnod *argsav=0,*saveargfor;
- struct sh_scoped savst, *prevscope = shp->st.self;
- struct argnod *envlist=0;
-- int jmpval;
-+ int isig,jmpval;
- volatile int r = 0;
- int n;
-- char *savstak;
-+ char **savsig;
- struct funenv *fp = 0;
- struct checkpt *buffp = (struct checkpt*)stkalloc(shp->stk,sizeof(struct checkpt));
- Namval_t *nspace = shp->namespace;
-@@ -3435,10 +3435,13 @@ int sh_funscope(int argn, char *argv[],i
- }
- shp->st.cmdname = argv[0];
- /* save trap table */
-- if((nsig=shp->st.trapmax*sizeof(char*))>0 || shp->st.trapcom[0])
-+ if((nsig=shp->st.trapmax)>0 || shp->st.trapcom[0])
- {
-- nsig += sizeof(char*);
-- memcpy(savstak=stakalloc(nsig),(char*)&shp->st.trapcom[0],nsig);
-+ ++nsig;
-+ savsig = malloc(nsig * sizeof(char*));
-+ /* contents of shp->st.trapcom may change */
-+ for (isig = 0; isig < nsig; ++isig)
-+ savsig[isig] = shp->st.trapcom[isig] == Empty ? Empty : (shp->st.trapcom[isig] ? strdup(shp->st.trapcom[isig]) : NULL);
- }
- sh_sigreset(0);
- argsav = sh_argnew(shp,argv,&saveargfor);
-@@ -3502,10 +3505,14 @@ int sh_funscope(int argn, char *argv[],i
- shp->topscope = (Shscope_t*)prevscope;
- nv_getval(sh_scoped(shp,IFSNOD));
- if(nsig)
-- memcpy((char*)&shp->st.trapcom[0],savstak,nsig);
-+ {
-+ for (isig = 0; isig < nsig; ++isig)
-+ if (shp->st.trapcom[isig] && shp->st.trapcom[isig]!=Empty)
-+ free(shp->st.trapcom[isig]);
-+ memcpy((char*)&shp->st.trapcom[0],savsig,nsig*sizeof(char*));
-+ free((void*)savsig);
-+ }
- shp->trapnote=0;
-- if(nsig)
-- stakset(savstak,0);
- shp->options = options;
- shp->last_root = last_root;
- if(jmpval == SH_JMPSUB)
diff --git a/ksh-20120801-typeset.patch b/ksh-20120801-typeset.patch
deleted file mode 100644
index 03b56b8..0000000
--- a/ksh-20120801-typeset.patch
+++ /dev/null
@@ -1,16 +0,0 @@
-diff --git a/src/cmd/ksh93/bltins/typeset.c b/src/cmd/ksh93/bltins/typeset.c
-index 15fcd58..8939011 100644
---- a/src/cmd/ksh93/bltins/typeset.c
-+++ b/src/cmd/ksh93/bltins/typeset.c
-@@ -1442,7 +1442,7 @@ static void print_scan(Sfio_t *file, int flag, Dt_t *root, int option,struct tda
- tp->scanmask |= (NV_DOUBLE|NV_EXPNOTE);
- if(flag==NV_LTOU || flag==NV_UTOL)
- tp->scanmask |= NV_UTOL|NV_LTOU;
-- namec = nv_scan(root,nullscan,(void*)tp,tp->scanmask,flag);
-+ namec = nv_scan(root,nullscan,(void*)tp,tp->scanmask,flag&~NV_IARRAY);
- argv = tp->argnam = (char**)stkalloc(tp->sh->stk,(namec+1)*sizeof(char*));
- namec = nv_scan(root, pushname, (void*)tp, tp->scanmask, flag&~NV_IARRAY);
- if(mbcoll())
---
-2.9.3
-
diff --git a/ksh-20120801-unset-param.patch b/ksh-20120801-unset-param.patch
deleted file mode 100644
index 7777270..0000000
--- a/ksh-20120801-unset-param.patch
+++ /dev/null
@@ -1,17 +0,0 @@
-diff -up ksh-20120801/src/cmd/ksh93/sh/macro.c.bz1222025 ksh-20120801/src/cmd/ksh93/sh/macro.c
---- ksh-20120801/src/cmd/ksh93/sh/macro.c.bz1222025 2015-09-15 17:28:47.304722569 +0200
-+++ ksh-20120801/src/cmd/ksh93/sh/macro.c 2015-09-17 17:49:46.842891942 +0200
-@@ -1195,6 +1195,13 @@ retry1:
- }
- else
- v = 0;
-+ if(!v && sh_isoption(SH_NOUNSET))
-+ {
-+ d=fcget();
-+ fcseek(-1);
-+ if(!(d && strchr(":+-?=",d)))
-+ errormsg(SH_DICT,ERROR_exit(1),e_notset,ltos(c));
-+ }
- break;
- case S_ALP:
- if(c=='.' && type==0)
diff --git a/ksh-20120801-validate-fd.patch b/ksh-20120801-validate-fd.patch
deleted file mode 100644
index a0bc7d2..0000000
--- a/ksh-20120801-validate-fd.patch
+++ /dev/null
@@ -1,11 +0,0 @@
-diff --git a/src/cmd/ksh93/sh/xec.c b/src/cmd/ksh93/sh/xec.c
---- a/src/cmd/ksh93/sh/xec.c
-+++ b/src/cmd/ksh93/sh/xec.c
-@@ -122,6 +122,7 @@ int iousepipe(Shell_t *shp)
- return(1);
- }
- subpipe[2] = sh_fcntl(fd,F_dupfd_cloexec,10);
-+ sh_iovalidfd(shp,subpipe[2]);
- shp->fdstatus[subpipe[2]] = shp->fdstatus[1];
- while(close(fd)<0 && errno==EINTR)
- errno = err;
diff --git a/ksh-20120801-xufix.patch b/ksh-20120801-xufix.patch
deleted file mode 100644
index 496e0bf..0000000
--- a/ksh-20120801-xufix.patch
+++ /dev/null
@@ -1,29 +0,0 @@
-diff -up ksh-20120801/src/cmd/ksh93/bltins/typeset.c.xufix ksh-20120801/src/cmd/ksh93/bltins/typeset.c
---- ksh-20120801/src/cmd/ksh93/bltins/typeset.c.xufix 2015-02-03 14:47:23.266022137 +0100
-+++ ksh-20120801/src/cmd/ksh93/bltins/typeset.c 2015-02-03 14:47:23.308022046 +0100
-@@ -93,6 +93,8 @@ int b_readonly(int argc,char *argv[],
- memset((void*)&tdata,0,sizeof(tdata));
- tdata.sh = context->shp;
- tdata.aflag = '-';
-+ /* do not change size */
-+ tdata.argnum = -1;
- while((flag = optget(argv,*command=='e'?sh_optexport:sh_optreadonly))) switch(flag)
- {
- case 'p':
-diff -up ksh-20120801/src/cmd/ksh93/sh/name.c.xufix ksh-20120801/src/cmd/ksh93/sh/name.c
---- ksh-20120801/src/cmd/ksh93/sh/name.c.xufix 2015-02-03 14:47:23.281022105 +0100
-+++ ksh-20120801/src/cmd/ksh93/sh/name.c 2015-02-03 14:52:08.768404194 +0100
-@@ -3019,10 +3019,12 @@ void nv_newattr (register Namval_t *np,
- nv_onattr(np,NV_EXPORT);
- sh_envput(shp->env,np);
- }
-- if((n^newatts)==NV_EXPORT)
-+ if((n^newatts)==NV_EXPORT && size==-1)
- return;
- }
- oldsize = nv_size(np);
-+ if (size == -1)
-+ size = oldsize;
- if((size==oldsize|| (n&NV_INTEGER)) && !trans && ((n^newatts)&~NV_NOCHANGE)==0)
- {
- if(size)
diff --git a/ksh-20130214-fixkill.patch b/ksh-20130214-fixkill.patch
deleted file mode 100644
index 0862880..0000000
--- a/ksh-20130214-fixkill.patch
+++ /dev/null
@@ -1,21 +0,0 @@
-diff -up ksh-20130214/src/cmd/ksh93/sh/jobs.c.fixkill ksh-20130214/src/cmd/ksh93/sh/jobs.c
---- ksh-20130214/src/cmd/ksh93/sh/jobs.c.fixkill 2012-09-26 17:43:04.000000000 +0200
-+++ ksh-20130214/src/cmd/ksh93/sh/jobs.c 2013-02-22 16:38:05.080161740 +0100
-@@ -1104,6 +1104,8 @@ static struct process *job_bystring(regi
-
- int job_kill(register struct process *pw,register int sig)
- {
-+ if(pw==0)
-+ goto error;
- Shell_t *shp = pw->p_shp;
- register pid_t pid;
- register int r;
-@@ -1127,8 +1129,6 @@ int job_kill(register struct process *pw
- #endif /* SIGTSTP */
- job_lock();
- errno = ECHILD;
-- if(pw==0)
-- goto error;
- pid = pw->p_pid;
- #if SHOPT_COSHELL
- if(pw->p_cojob)
diff --git a/ksh-20130613-cdfix4.patch b/ksh-20130613-cdfix4.patch
deleted file mode 100644
index 5b29017..0000000
--- a/ksh-20130613-cdfix4.patch
+++ /dev/null
@@ -1,15 +0,0 @@
-diff -up ksh-20120801/src/cmd/ksh93/bltins/cd_pwd.c.cdfix4 ksh-20120801/src/cmd/ksh93/bltins/cd_pwd.c
---- ksh-20120801/src/cmd/ksh93/bltins/cd_pwd.c.cdfix4 2014-08-26 15:24:57.276953822 +0200
-+++ ksh-20120801/src/cmd/ksh93/bltins/cd_pwd.c 2014-08-26 15:25:34.738770361 +0200
-@@ -143,9 +143,9 @@ int sh_diropenat(Shell_t *shp, int dir,
- }
-
- /* Move fd to a number > 10 and *register* the fd number with the shell */
-- shfd = sh_fcntl(fd, F_dupfd_cloexec, 10);
-+ shfd = fcntl(fd, F_dupfd_cloexec, 10);
- savederrno=errno;
-- sh_close(fd);
-+ close(fd);
- errno=savederrno;
- return(shfd);
- }
diff --git a/ksh-20130628-longer.patch b/ksh-20130628-longer.patch
deleted file mode 100644
index 4761a34..0000000
--- a/ksh-20130628-longer.patch
+++ /dev/null
@@ -1,58 +0,0 @@
-diff -up ksh-20120801/src/cmd/ksh93/include/defs.h.longer ksh-20120801/src/cmd/ksh93/include/defs.h
---- ksh-20120801/src/cmd/ksh93/include/defs.h.longer 2012-06-25 20:47:47.000000000 +0200
-+++ ksh-20120801/src/cmd/ksh93/include/defs.h 2013-07-08 17:33:42.238534376 +0200
-@@ -162,8 +162,8 @@ struct shared
- Namval_t *prev_table; /* previous table used in nv_open */ \
- Sfio_t *outpool; /* ouput stream pool */ \
- long timeout; /* read timeout */ \
-- short curenv; /* current subshell number */ \
-- short jobenv; /* subshell number for jobs */ \
-+ long curenv; /* current subshell number */ \
-+ long jobenv; /* subshell number for jobs */ \
- int infd; /* input file descriptor */ \
- short nextprompt; /* next prompt is PS<nextprompt> */ \
- short poolfiles; \
-diff -up ksh-20120801/src/cmd/ksh93/include/jobs.h.longer ksh-20120801/src/cmd/ksh93/include/jobs.h
---- ksh-20120801/src/cmd/ksh93/include/jobs.h.longer 2011-12-19 13:36:37.000000000 +0100
-+++ ksh-20120801/src/cmd/ksh93/include/jobs.h 2013-07-08 17:32:52.881124147 +0200
-@@ -87,7 +87,7 @@ struct process
- unsigned short p_exit; /* exit value or signal number */
- unsigned short p_exitmin; /* minimum exit value for xargs */
- unsigned short p_flag; /* flags - see below */
-- int p_env; /* subshell environment number */
-+ long p_env; /* subshell environment number */
- #ifdef JOBS
- off_t p_name; /* history file offset for command */
- struct termios p_stty; /* terminal state for job */
-diff -up ksh-20120801/src/cmd/ksh93/sh/jobs.c.longer ksh-20120801/src/cmd/ksh93/sh/jobs.c
-diff -up ksh-20120801/src/cmd/ksh93/sh/subshell.c.longer ksh-20120801/src/cmd/ksh93/sh/subshell.c
---- ksh-20120801/src/cmd/ksh93/sh/subshell.c.longer 2013-07-08 17:32:52.874124090 +0200
-+++ ksh-20120801/src/cmd/ksh93/sh/subshell.c 2013-07-08 17:32:52.882124156 +0200
-@@ -98,7 +98,7 @@ static struct subshell
- #endif /* SHOPT_COSHELL */
- } *subshell_data;
-
--static int subenv;
-+static long subenv;
-
-
- /*
-@@ -171,7 +171,8 @@ void sh_subfork(void)
- {
- register struct subshell *sp = subshell_data;
- Shell_t *shp = sp->shp;
-- int curenv = shp->curenv, comsub=shp->comsub;
-+ long curenv = shp->curenv;
-+ int comsub=shp->comsub;
- pid_t pid;
- char *trap = shp->st.trapcom[0];
- if(trap)
-@@ -461,7 +462,7 @@ Sfio_t *sh_subshell(Shell_t *shp,Shnode_
- struct subshell sub_data;
- register struct subshell *sp = &sub_data;
- int jmpval,nsig=0,duped=0;
-- int savecurenv = shp->curenv;
-+ long savecurenv = shp->curenv;
- int savejobpgid = job.curpgid;
- int *saveexitval = job.exitval;
- int16_t subshell;
diff --git a/ksh-20140301-fikspand.patch b/ksh-20140301-fikspand.patch
deleted file mode 100644
index 9899392..0000000
--- a/ksh-20140301-fikspand.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -up ksh-20120801/src/cmd/ksh93/sh/expand.c.fikspand ksh-20120801/src/cmd/ksh93/sh/expand.c
---- ksh-20120801/src/cmd/ksh93/sh/expand.c.fikspand 2010-11-24 05:46:30.000000000 +0100
-+++ ksh-20120801/src/cmd/ksh93/sh/expand.c 2014-05-22 12:55:46.252717371 +0200
-@@ -278,6 +278,8 @@ int path_generate(Shell_t *shp,struct ar
- char comma, range=0;
- int first, last, incr, count = 0;
- char tmp[32], end[1];
-+ if(!sh_isoption(SH_BRACEEXPAND))
-+ return path_expand(shp,todo->argval,arghead);
- todo->argchn.ap = 0;
- again:
- apin = ap = todo;
diff --git a/ksh-20140415-hokaido.patch b/ksh-20140415-hokaido.patch
deleted file mode 100644
index 5ff6927..0000000
--- a/ksh-20140415-hokaido.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-diff -up ksh-20120801/src/cmd/ksh93/sh/xec.c.hokaido ksh-20120801/src/cmd/ksh93/sh/xec.c
---- ksh-20120801/src/cmd/ksh93/sh/xec.c.hokaido 2014-09-18 14:41:57.696756230 +0200
-+++ ksh-20120801/src/cmd/ksh93/sh/xec.c 2014-09-18 14:43:55.439205247 +0200
-@@ -1633,12 +1633,20 @@ int sh_exec(register const Shnode_t *t,
- #endif /* SHOPT_COSHELL */
- if(shp->subshell)
- {
-+ int comsubsave = shp->comsub;
-+ if(comsubsave==1)
-+ shp->comsub = 2;
- sh_subtmpfile(shp);
-+ shp->comsub = comsubsave;
-+ if(shp->comsub==1 && (!(shp->fdstatus[1]&IONOSEEK)))
-+ unpipe = iousepipe(shp);
-+
- if((type&(FAMP|TFORK))==(FAMP|TFORK))
- {
- if(shp->comsub && !(shp->fdstatus[1]&IONOSEEK))
- {
-- unpipe = iousepipe(shp);
-+ if (!unpipe)
-+ unpipe = iousepipe(shp);
- sh_subfork();
- }
- }
-@@ -2107,7 +2115,11 @@ int sh_exec(register const Shnode_t *t,
- job.curjobid = 0;
- if(shp->subshell)
- {
-+ int comsubsave = shp->comsub;
-+ if(comsubsave==1)
-+ shp->comsub = 2;
- sh_subtmpfile(shp);
-+ shp->comsub = comsubsave;
- if(shp->comsub==1 && !(shp->fdstatus[1]&IONOSEEK))
- iousepipe(shp);
- }
diff --git a/ksh-20140801-arraylen.patch b/ksh-20140801-arraylen.patch
deleted file mode 100644
index 34c9b6b..0000000
--- a/ksh-20140801-arraylen.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- ksh-20120801/src/cmd/ksh93/sh/xec.c 2015-04-02 10:55:26.228017873 -0400
-+++ ksh-20120801/src/cmd/ksh93/sh/xec.c 2015-04-02 10:56:04.099017700 -0400
-@@ -1234,7 +1234,7 @@ int sh_exec(register const Shnode_t *t,
- if((io||argn))
- {
- Shbltin_t *bp=0;
-- static char *argv[1];
-+ static char *argv[2];
- int tflags = 1;
- if(np && nv_isattr(np,BLT_DCL))
- tflags |= 2;
diff --git a/ksh-20140801-diskfull.patch b/ksh-20140801-diskfull.patch
deleted file mode 100644
index 7276363..0000000
--- a/ksh-20140801-diskfull.patch
+++ /dev/null
@@ -1,21 +0,0 @@
-diff -up ksh-20120801/src/cmd/ksh93/sh/main.c.orig ksh-20120801/src/cmd/ksh93/sh/main.c
---- ksh-20120801/src/cmd/ksh93/sh/main.c.orig 2015-04-29 16:49:11.502958000 -0300
-+++ ksh-20120801/src/cmd/ksh93/sh/main.c 2015-05-08 18:19:55.688776922 -0300
-@@ -423,7 +423,7 @@ static void exfile(register Shell_t *shp
- sfsync(shp->outpool);
- shp->st.execbrk = shp->st.breakcnt = 0;
- /* check for return from profile or env file */
-- if(sh_isstate(SH_PROFILE) && (jmpval==SH_JMPFUN || jmpval==SH_JMPEXIT))
-+ if(sh_isstate(SH_PROFILE) && (jmpval==SH_JMPFUN || jmpval==SH_JMPEXIT || jmpval==SH_JMPERREXIT))
- {
- sh_setstate(states);
- goto done;
-@@ -598,7 +598,7 @@ done:
- }
- if(jmpval == SH_JMPSCRIPT)
- siglongjmp(*shp->jmplist,jmpval);
-- else if(jmpval == SH_JMPEXIT)
-+ else if(jmpval == SH_JMPEXIT || jmpval == SH_JMPERREXIT)
- sh_done(shp,0);
- if(fno>0)
- sh_close(fno);
diff --git a/ksh-20140929-safefd.patch b/ksh-20140929-safefd.patch
deleted file mode 100644
index 80db205..0000000
--- a/ksh-20140929-safefd.patch
+++ /dev/null
@@ -1,52 +0,0 @@
-diff -up ksh-20120801/src/cmd/ksh93/include/io.h.safefd ksh-20120801/src/cmd/ksh93/include/io.h
---- ksh-20120801/src/cmd/ksh93/include/io.h.safefd 2015-03-03 18:21:40.544732158 +0100
-+++ ksh-20120801/src/cmd/ksh93/include/io.h 2015-03-03 18:22:16.284447849 +0100
-@@ -78,6 +78,7 @@ extern void sh_iorestore(Shell_t*,int,i
- extern Sfio_t *sh_iostream(Shell_t*,int);
- extern int sh_redirect(Shell_t*,struct ionod*,int);
- extern void sh_iosave(Shell_t *, int,int,char*);
-+extern int safefdnumber(Shell_t* shp, int sfd);
- extern int sh_iovalidfd(Shell_t*, int);
- extern int sh_inuse(Shell_t*, int);
- extern void sh_iounsave(Shell_t*);
-diff -up ksh-20120801/src/cmd/ksh93/sh/io.c.safefd ksh-20120801/src/cmd/ksh93/sh/io.c
---- ksh-20120801/src/cmd/ksh93/sh/io.c.safefd 2015-03-03 18:21:40.511732421 +0100
-+++ ksh-20120801/src/cmd/ksh93/sh/io.c 2015-03-03 18:21:40.544732158 +0100
-@@ -1724,6 +1724,25 @@ void sh_iosave(Shell_t *shp, register in
- }
- }
-
-+int safefdnumber(Shell_t* shp, int sfd)
-+{
-+ register int fd;
-+
-+ while(1)
-+ {
-+ for(fd=0; fd < shp->topfd; fd++)
-+ {
-+ if (filemap[fd].save_fd==sfd || filemap[fd].orig_fd==sfd || (fcntl(sfd, F_GETFD) != -1 || errno != EBADF))
-+ {
-+ sfd++;
-+ continue;
-+ }
-+ }
-+ break;
-+ }
-+ return sfd;
-+}
-+
- /*
- * close all saved file descriptors
- */
-diff -up ksh-20120801/src/cmd/ksh93/sh/subshell.c.safefd ksh-20120801/src/cmd/ksh93/sh/subshell.c
---- ksh-20120801/src/cmd/ksh93/sh/subshell.c.safefd 2015-03-03 18:21:40.531732261 +0100
-+++ ksh-20120801/src/cmd/ksh93/sh/subshell.c 2015-03-03 18:21:40.544732158 +0100
-@@ -673,7 +673,7 @@ Sfio_t *sh_subshell(Shell_t *shp,Shnode_
- }
- if(iop && sffileno(iop)==1)
- {
-- int fd=sfsetfd(iop,3);
-+ int fd=sfsetfd(iop,safefdnumber(shp,3));
- if(fd<0)
- {
- shp->toomany = 1;
diff --git a/ksh.spec b/ksh.spec
index b591ee4..330bd81 100644
--- a/ksh.spec
+++ b/ksh.spec
@@ -1,321 +1,96 @@
-%global releasedate 20120801
-%global release_date %{lua:reldate=rpm.expand("%{releasedate}");print(("%s-%s-%s"):format(reldate:sub(0,4),reldate:sub(5,6),reldate:sub(7)))}
-
Name: ksh
Summary: The Original ATT Korn Shell
URL: http://www.kornshell.com/
License: EPL
-Version: %{releasedate}
-Release: 250%{?dist}
-Source0: http://www.research.att.com/~gsf/download/tgz/ast-ksh.%{release_date}.tgz
-Source1: http://www.research.att.com/~gsf/download/tgz/INIT.%{release_date}.tgz
-Source2: kshcomp.conf
-Source3: kshrc.rhs
-Source4: dotkshrc
-
-# expected results of test suite
-Source5: expectedresults.log
-
-# don't use not wanted/needed builtins - Fedora/RHEL specific
-Patch1: ksh-20070328-builtins.patch
-
-# fix regression test suite to be usable during packagebuild - Fedora/RHEL specific
-Patch2: ksh-20100826-fixregr.patch
-
-# fedora/rhel specific, rhbz#619692
-Patch6: ksh-20080202-manfix.patch
-
-# rhbz#702008
-Patch17: ksh-20100202-pathvar.patch
-
-# rhbz#924440
-Patch18: ksh-20100621-fdstatus.patch
-
-# fixes for regressions found in ksh-20120801 rebase
-Patch19: ksh-20120801-rmdirfix.patch
-Patch20: ksh-20120801-cdfix.patch
-Patch21: ksh-20120801-cdfix2.patch
-Patch22: ksh-20120801-tabfix.patch
-Patch23: ksh-20130214-fixkill.patch
-
-# for ksh <= 2013-05-31, rhbz#960034
-Patch24: ksh-20120801-kshmfix.patch
-
-# for ksh <= 2016-06-28, rhbz#921455
-Patch25: ksh-20120801-memlik.patch
-
-# for ksh <= 2013-03-20, rhbz#922851
-Patch26: ksh-20120801-forkbomb.patch
-
-# for ksh <= 2013-04-19, rhbz#913110
-Patch27: ksh-20120801-macro.patch
-
-# not completely upstream yet, rhbz#858263
-Patch29: ksh-20130628-longer.patch
-
-# for ksh <= 2013-07-19, rhbz#982142
-Patch30: ksh-20120801-mlikfiks.patch
-
-# not yet upstream, related to 2012-08-01 rebase
-Patch31: ksh-20120801-covsfix.patch
-
-# rhbz#1007816
-Patch32: ksh-20100621-manfix3.patch
-
-# rhbz#1016611
-Patch33: ksh-20120801-nomulti.patch
-
-# for ksh <= 2014-01-14, rhbz#
-Patch34: ksh-20120801-mtty.patch
-
-# from upstream, rbzh#1048272
-Patch35: ksh-20120801-fd2lost.patch
-
-# sent upstream 2014-01, rhbz#1047507
-Patch36: ksh-20120801-argvfix.patch
-
-# for ksh <= 2014-01-14, rhbz#1048995
-Patch37: ksh-20120801-memlik3.patch
-
-# for ksh <= 2013-04-09, rhbz#960371
-Patch38: ksh-20120801-lexfix.patch
-
-# not yet upstream, for ksh <= 2014-02-26, rhbz#1070328
-Patch39: ksh-20120801-filecomsubst.patch
-
-# for ksh <= 2014-06-25, rhbz#825520,rhbz#1084406
-Patch40: ksh-20120801-crash.patch
-
-# for ksh < 2013-03-19, rhbz#1085385
-Patch41: ksh-20120801-sufix.patch
-
-# sent upstream, rhbz#1099935
-Patch42: ksh-20140301-fikspand.patch
-
-# for ksh < 2014-04-15, rhbz#1070871
-Patch43: ksh-20120801-roundit.patch
-
-# for ksh < 2014-04-15, rhbz#1111120
-Patch44: ksh-20120801-heresub.patch
-
-# not included upstream yet, rhbz#1077090
-Patch45: ksh-20140415-hokaido.patch
-
-# for ksh < 2012-10-04, rhbz#1121960
-Patch46: ksh-20120801-tpstl.patch
-
-# sent upstream, rhbz#1100215
-Patch47: ksh-20120801-manfix4.patch
-
-# not upstream yet, rhbz#1100215
-Patch48: ksh-20120801-fununset.patch
-
-# for ksh < 2014-06-25, rhbz#1109893
-Patch49: ksh-20120801-cdfix3.patch
-
-# sent upstream, rhbz#1116506
-Patch50: ksh-20120801-locking.patch
-
-# for ksh <= 2013-06-13, rhbz#1133585
-Patch51: ksh-20130613-cdfix4.patch
-
-Patch52: ksh-20120801-retfix.patch
-
-# sent upstream, for ksh <= 2014-09-30
-Patch53: ksh-20120801-cdfork.patch
-
-# not upstream yet, for ksh <= 2015-04-03, rhbz#1200534
-Patch54: ksh-20140801-arraylen.patch
-
-# sent upstream, for ksh <= 2014-09-29, rhbz#1212993
-Patch55: ksh-20140801-diskfull.patch
-
-# not upstream yet, rhbz#1192026
-Patch56: ksh-20120801-xufix.patch
-
-# sent upstream, for ksh <= 2014-12-18, rhbz#1192119
-Patch58: ksh-20120801-alarmifs.patch
-
-# not yet upstream, rhbz#1202439
-Patch59: ksh-20140929-safefd.patch
-
-# workaround, for ksh < 2013-05-24, rhbz#1211540
-Patch60: ksh-20120801-trapcom.patch
-
-# not yet upstream, rhbz#1217237
-Patch64: ksh-20120801-nohupfork.patch
-
-# from upstream, for ksh <= 20130409, rhbz#1241014
-Patch65: ksh-20120801-parserfix.patch
+Version: 2020.0.0
+Release: 0.1%{?dist}
+# We are upgrading from ksh-20120801-250, so set epoch.
+Epoch: 1
+Source0: https://github.com/att/ast/releases/download/%{version}-alpha1/%{name}-%{...
+Source1: kshcomp.conf
+Source2: kshrc.rhs
+Source3: dotkshrc
-# not upstream yet, rhbz#1211538
-Patch66: ksh-20120801-oldenvinit.patch
-
-# from upsteam, for ksh < 2012-10-04, rhbz#1193557
-Patch67: ksh-20120801-emptyarrayinit.patch
-
-# not upstream yet, rhbz#1371630
-Patch68: ksh-20120801-typeset.patch
-
-# not upstream yet, rhbz#1321443
-Patch69: ksh-20120801-dotdoublefree.patch
-
-# not upstream yet, rhbz#1405784
-Patch70: ksh-20120801-subshell-leak.patch
-
-# rhbz#1189297
-Patch71: ksh-20120801-assoc-unset-leak.patch
-
-# rhbz#1222025
-Patch72: ksh-20120801-unset-param.patch
-
-# rhbz#1269088
-Patch73: ksh-20120801-badgcc.patch
-
-# rhbz#1299484
-Patch74: ksh-20120801-mb-after-argvar.patch
-Patch75: ksh-20120801-F_dupfd_cloexec.patch
-
-# rhbz#1441142
-Patch76: ksh-20120801-kia.patch
-
-# rhbz#1417886
-Patch77: ksh-20120801-iso8859.patch
-
-# rhbz#1451057
-Patch78: ksh-20120801-syntax-error.patch
-
-# rhbz#1477082
-Patch79: ksh-20120801-glibc-build-fix.patch
-
-# rhbz#1459000
-Patch80: ksh-20120801-jobwait-sigstop.patch
-
-# rhbz#1462347
-Patch81: ksh-20120801-subshell-jobwait.patch
-
-# rhbz#1471874
-Patch82: ksh-20120801-posix-exit.patch
-
-# rhbz#1464409
-Patch83: ksh-20120801-sh_iovalidfd.patch
-
-# rhbz#1537053
-Patch84: ksh-20120801-validate-fd.patch
-
-# There were couple of places where CCFLAGS variable was not passed while
-# compiling binaries. This patch fixes it. Loosely related to rhbz#1548549.
-Patch85: ksh-20120801-ccflags.patch
-
-Patch86: ksh-20120801-nv_open-memcmp.patch
+Provides: /bin/ksh
-Conflicts: pdksh
-Requires: coreutils, diffutils
-BuildRequires: gcc
-BuildRequires: bison
-# regression test suite uses 'ps' from procps
-BuildRequires: procps
-Requires(post): grep, coreutils, systemd
+BuildRequires: meson
+BuildRequires: gcc
+BuildRequires: glibc-devel
+# This package is require by test cases
+# It should be enabled when we start running test cases in package builds
+# BuildRequires: glibc-langpack-zh
+BuildRequires: ed
+Conflicts: pdksh
+Requires(post): grep, coreutils, systemd-units
Requires(postun): sed
-Provides: /bin/ksh
+Provides: /bin/ksh
%description
-KSH-93 is the most recent version of the KornShell by David Korn of
-AT&T Bell Laboratories.
KornShell is a shell programming language, which is upward compatible
with "sh" (the Bourne Shell).
%prep
-%setup -q -c
-%setup -q -T -D -a 1
-%autopatch -p1
-
-#/dev/fd test does not work because of mock
-sed -i 's|ls /dev/fd|ls /proc/self/fd|' src/cmd/ksh93/features/options
-
-# sh/main.c was not using CCFLAGS
-sed -i '/-c sh\/main.c/s|${mam_cc_FLAGS} |${mam_cc_FLAGS} ${CCFLAGS} |p' src/cmd/ksh93/Mamfile
-
-# disable register for debugging
-sed -i 1i"#define register" src/lib/libast/include/ast.h
+%autosetup -n %{name}-%{version}-alpha1
%build
-XTRAFLAGS=""
-for f in -Wno-unknown-pragmas -Wno-missing-braces -Wno-unused-result -Wno-return-type -Wno-int-to-pointer-cast -Wno-parentheses -Wno-unused -Wno-unused-but-set-variable -Wno-cpp -P
-do
- gcc $f -E - </dev/null >/dev/null 2>&1 && XTRAFLAGS="$XTRAFLAGS $f"
-done
-./bin/package
-./bin/package make mamake ||:
-./bin/package make mamake ||:
-export CCFLAGS="$RPM_OPT_FLAGS $RPM_LD_FLAGS -fno-strict-aliasing $XTRAFLAGS"
-export CC=gcc
-./bin/package make -S
-
-#cp lib/package/LICENSES/epl LICENSE
+%meson -Dbuild-api-tests=false
+%meson_build
%install
-mkdir -p %{buildroot}{/bin,%{_bindir},%{_mandir}/man1}
-install -p -m 755 arch/*/bin/ksh %{buildroot}%{_bindir}/ksh
-install -p -m 755 arch/*/bin/shcomp %{buildroot}%{_bindir}/shcomp
-install -p -m 644 arch/*/man/man1/sh.1 %{buildroot}%{_mandir}/man1/ksh.1
-mkdir -p %{buildroot}%{_sysconfdir}/skel
-install -p -m 644 %{SOURCE4} %{buildroot}%{_sysconfdir}/skel/.kshrc
-install -p -m 644 %{SOURCE3} %{buildroot}%{_sysconfdir}/kshrc
-install -p -D -m 644 %{SOURCE2} %{buildroot}%{_sysconfdir}/binfmt.d/kshcomp.conf
-
-%check
-[ -f ./skipcheck -o -f ./../skipcheck ] && exit 0 ||:
-%if 0%{?rhel} > 6
-%ifarch s390
-exit 0
-%endif
-%endif
-
-export SHELL=$(ls $(pwd)/arch/*/bin/ksh)
-cd src/cmd/ksh93/tests/
-ulimit -c unlimited
-if [ ! -e /dev/fd ]
+%meson_install
+# Allow switching between different ksh implementations (for e.g. mksh) through alternatives.
+mv %{buildroot}/%{_bindir}/ksh %{buildroot}/%{_bindir}/ksh93
+mv %{buildroot}/%{_bindir}/shcomp %{buildroot}/%{_bindir}/shcomp93
+# http://mesonbuild.com/Release-notes-for-0-49-0.html#manpages-are-no-longe...
+# meson 0.49 does not compress man pages
+if [[ -e %{buildroot}/%{_mandir}/man1/ksh.1.gz ]]
then
- echo "ERROR: /dev/fd does not exist, regression tests skipped"
- exit 0
-fi
-$SHELL ./shtests 2>&1 | tee testresults.log
-ls core.* 2>/dev/null ||:
-exit 0
-sed -e '/begins at/d' -e '/ 0 error/d' -e 's/at [^\[]*\[/\[/' testresults.log -e '/tests skipped/d' >filteredresults.log
-if ! cmp filteredresults.log %{SOURCE5} >/dev/null || ls core.*
-then
- echo "Regression tests failed"
- diff -Naurp %{SOURCE5} filteredresults.log
- exit -1
+ mv %{buildroot}/%{_mandir}/man1/ksh.1.gz %{buildroot}/%{_mandir}/man1/ksh93.1.gz
+else
+ mv %{buildroot}/%{_mandir}/man1/ksh.1 %{buildroot}/%{_mandir}/man1/ksh93.1
fi
+install -p -D -m 644 %{SOURCE1} %{buildroot}%{_sysconfdir}/binfmt.d/kshcomp.conf
+install -p -m 644 %{SOURCE2} %{buildroot}%{_sysconfdir}/kshrc
+install -p -D -m 644 %{SOURCE3} %{buildroot}%{_sysconfdir}/skel/.kshrc
+
%post
-if [ ! -f /etc/shells ]; then
- echo "/bin/ksh" > /etc/shells
- echo "/usr/bin/ksh" >> /etc/shells
-else
- if ! grep -q '^/bin/ksh$' /etc/shells ; then
- echo "/bin/ksh" >> /etc/shells
- fi
- if ! grep -q '^/usr/bin/ksh$' /etc/shells ; then
- echo "/usr/bin/ksh" >> /etc/shells
+for s in /bin/ksh /usr/bin/ksh
+do
+ if [ ! -f /etc/shells ]; then
+ echo "$s" > /etc/shells
+ else
+ if ! grep -q '^'"$s"'$' /etc/shells ; then
+ echo "$s" >> /etc/shells
fi
-fi
+ fi
+done
/bin/systemctl try-restart systemd-binfmt.service >/dev/null 2>&1 || :
-%postun
-if [ ! -f /bin/ksh ]; then
- sed -i '/^\/bin\/ksh$/ d' /etc/shells
-fi
-if [ ! -f /usr/bin/ksh ]; then
- sed -i '/^\/usr\/bin\/ksh$/ d' /etc/shells
+# Suppress any error encountered while upgrading from ksh-20120801-250
+%{_sbindir}/alternatives --install /bin/ksh ksh \
+ /bin/ksh93 50 \
+ --slave %{_mandir}/man1/ksh.1.gz ksh-man \
+ %{_mandir}/man1/ksh93.1.gz \
+ --slave /bin/shcomp shcomp93 \
+ /bin/shcomp93 2>/dev/null
+
+%preun
+# Do not remove ksh from alternatives on upgrades
+if [ $1 -eq 0 ]; then
+ %{_sbindir}/alternatives --remove ksh /bin/ksh93
fi
-%verifyscript
+%postun
+for s in /bin/ksh /usr/bin/ksh
+do
+ if [ ! -f $s ]; then
+ sed -i '\|^'"$s"'$|d' /etc/shells
+ fi
+done
+
echo -n "Looking for ksh in /etc/shells... "
if ! grep '^/bin/ksh$' /etc/shells > /dev/null; then
echo "missing"
@@ -324,17 +99,26 @@ else
echo "found"
fi
+# ksh-20120801-250 did not use alternatives, so while upgrading ensure that
+# alternatives are set correctly
+%triggerpostun -- ksh < 1:2020.0.0-0.1
+%{_sbindir}/alternatives --auto ksh
+
%files
%doc src/cmd/ksh93/COMPATIBILITY src/cmd/ksh93/RELEASE src/cmd/ksh93/TYPES
# LICENSE file is missing, temporarily?
-%{_bindir}/ksh
-%{_bindir}/shcomp
+%{_bindir}/ksh93
+%{_bindir}/shcomp93
%{_mandir}/man1/*
%config(noreplace) %{_sysconfdir}/skel/.kshrc
%config(noreplace) %{_sysconfdir}/kshrc
%config(noreplace) %{_sysconfdir}/binfmt.d/kshcomp.conf
%changelog
+* Wed Apr 17 2019 Siteshwar Vashisht <svashisht(a)redhat.com> - 2020.0.0-0.1
+- Rebase to 2020.0.0-alpha1
+ Resolves: #1700777
+
* Fri Feb 01 2019 Fedora Release Engineering <releng(a)fedoraproject.org> - 20120801-250
- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild
diff --git a/sources b/sources
index 935961b..9fd6ceb 100644
--- a/sources
+++ b/sources
@@ -1,2 +1 @@
-3a6e2d01b1b049bdef968dc5a24c1ea7 ast-ksh.2012-08-01.tgz
-af699318bea7398f0f413b839bfcd762 INIT.2012-08-01.tgz
+SHA512 (ksh-2020.0.0-alpha1.tar.gz) = 56c805bebe963dee7c27ba0357e26957fd8439f42c26f290ab32488ddde99f4b824e403c5dc097194eaf600e7379a010b1be4bf1e70bee76402e84909b38d981
commit 66346e7b07dab65a091832eab2c5e2b73389a78f
Author: Fedora Release Engineering <releng(a)fedoraproject.org>
Date: Fri Feb 1 06:05:28 2019 +0000
- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng(a)fedoraproject.org>
diff --git a/ksh.spec b/ksh.spec
index 2d6ab80..b591ee4 100644
--- a/ksh.spec
+++ b/ksh.spec
@@ -6,7 +6,7 @@ Summary: The Original ATT Korn Shell
URL: http://www.kornshell.com/
License: EPL
Version: %{releasedate}
-Release: 249%{?dist}
+Release: 250%{?dist}
Source0: http://www.research.att.com/~gsf/download/tgz/ast-ksh.%{release_date}.tgz
Source1: http://www.research.att.com/~gsf/download/tgz/INIT.%{release_date}.tgz
Source2: kshcomp.conf
@@ -335,6 +335,9 @@ fi
%config(noreplace) %{_sysconfdir}/binfmt.d/kshcomp.conf
%changelog
+* Fri Feb 01 2019 Fedora Release Engineering <releng(a)fedoraproject.org> - 20120801-250
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild
+
* Sun Oct 14 2018 Peter Robinson <pbrobinson(a)fedoraproject.org> 20120801-249
- chkconfig is no longer needed
commit 4e8c001ae97c7f5144dc48f6788f620b24d9f52e
Author: Peter Robinson <pbrobinson(a)gmail.com>
Date: Sun Oct 14 22:44:09 2018 +0100
chkconfig is no longer needed
diff --git a/ksh.spec b/ksh.spec
index 78db6bf..2d6ab80 100644
--- a/ksh.spec
+++ b/ksh.spec
@@ -6,7 +6,7 @@ Summary: The Original ATT Korn Shell
URL: http://www.kornshell.com/
License: EPL
Version: %{releasedate}
-Release: 248%{?dist}
+Release: 249%{?dist}
Source0: http://www.research.att.com/~gsf/download/tgz/ast-ksh.%{release_date}.tgz
Source1: http://www.research.att.com/~gsf/download/tgz/INIT.%{release_date}.tgz
Source2: kshcomp.conf
@@ -210,12 +210,12 @@ Patch85: ksh-20120801-ccflags.patch
Patch86: ksh-20120801-nv_open-memcmp.patch
Conflicts: pdksh
-Requires: coreutils, diffutils, chkconfig
+Requires: coreutils, diffutils
BuildRequires: gcc
BuildRequires: bison
# regression test suite uses 'ps' from procps
BuildRequires: procps
-Requires(post): grep, coreutils, systemd-units
+Requires(post): grep, coreutils, systemd
Requires(postun): sed
Provides: /bin/ksh
@@ -335,6 +335,9 @@ fi
%config(noreplace) %{_sysconfdir}/binfmt.d/kshcomp.conf
%changelog
+* Sun Oct 14 2018 Peter Robinson <pbrobinson(a)fedoraproject.org> 20120801-249
+- chkconfig is no longer needed
+
* Fri Jul 13 2018 Fedora Release Engineering <releng(a)fedoraproject.org> - 20120801-248
- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild
commit 82ac4c503a23661f6db658ed463b531e40595eed
Author: Petr plchal <psplicha(a)redhat.com>
Date: Wed Sep 12 09:04:27 2018 +0200
Use FMF filter instead of listing tests manually
There is a new feature in the Standard Test Roles which allows to
use an FMF filter instead of listing all tests manually. This
commit includes all Tier1 and Tier2 tests for respective targets.
diff --git a/tests/tests.yml b/tests/tests.yml
index b551d00..e483864 100644
--- a/tests/tests.yml
+++ b/tests/tests.yml
@@ -9,10 +9,7 @@
repositories:
- repo: "https://src.fedoraproject.org/tests/shell.git"
dest: "shell"
- tests:
- - shell/func
- - shell/login
- - shell/smoke
+ fmf_filter: "tier: 1, 2 & tags: classic"
environment:
PACKAGES: ksh
SH_BIN: ksh
@@ -30,9 +27,7 @@
repositories:
- repo: "https://src.fedoraproject.org/tests/shell.git"
dest: "shell"
- tests:
- - shell/func
- - shell/smoke
+ fmf_filter: "tier: 1, 2 & tags: container, atomic"
environment:
PACKAGES: ksh
SH_BIN: ksh
5 years, 1 month
Architecture specific change in rpms/ksh.git
by githook-noreply@fedoraproject.org
The package rpms/ksh.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/ksh.git/commit/?id=da51c676393df7....
Change:
-%ifarch s390
Thanks.
Full change:
============
commit da51c676393df765d3829c5fae08450185e25939
Author: Siteshwar Vashisht <svashisht(a)redhat.com>
Date: Wed Apr 17 14:00:25 2019 +0200
Rebase to 2020.0.0-alpha1
* All the downstream patches have been upstreamed, so they are being
removed with this commit.
* It introduces alternatives to switch between different versions of
ksh.
Resolves: #1700777
diff --git a/.gitignore b/.gitignore
index 6be3080..2d4ea2b 100644
--- a/.gitignore
+++ b/.gitignore
@@ -59,3 +59,4 @@ INIT.2010-07-01.tgz
/ast-ksh.2012-08-01.tgz
/INIT.2012-08-01.tgz
/ast-ksh.2012-08-01b.tgz
+/ksh-2020.0.0-alpha1.tar.gz
diff --git a/ksh-20070328-builtins.patch b/ksh-20070328-builtins.patch
deleted file mode 100644
index 061bf9a..0000000
--- a/ksh-20070328-builtins.patch
+++ /dev/null
@@ -1,11 +0,0 @@
-diff -up ksh-20080202/src/cmd/ksh93/data/builtins.c.builtins ksh-20080202/src/cmd/ksh93/data/builtins.c
---- ksh-20080202/src/cmd/ksh93/data/builtins.c.builtins 2008-10-01 09:24:46.000000000 +0200
-+++ ksh-20080202/src/cmd/ksh93/data/builtins.c 2008-10-01 09:24:58.000000000 +0200
-@@ -129,7 +129,6 @@ const struct shtable3 shtab_builtins[] =
- CMDLIST(dirname)
- CMDLIST(getconf)
- CMDLIST(head)
-- CMDLIST(mkdir)
- CMDLIST(logname)
- CMDLIST(cat)
- CMDLIST(cmp)
diff --git a/ksh-20080202-manfix.patch b/ksh-20080202-manfix.patch
deleted file mode 100644
index 8fe4225..0000000
--- a/ksh-20080202-manfix.patch
+++ /dev/null
@@ -1,47 +0,0 @@
-diff -up ksh-20120801/src/cmd/ksh93/sh.1.manfix ksh-20120801/src/cmd/ksh93/sh.1
---- ksh-20120801/src/cmd/ksh93/sh.1.manfix 2012-06-18 16:16:22.000000000 +0200
-+++ ksh-20120801/src/cmd/ksh93/sh.1 2013-04-30 13:35:17.393909479 +0200
-@@ -39,7 +39,7 @@ ksh93, rksh93, pfksh93 \- KornShell, a s
- .B ksh93
- .\}
- [
--.B \(+-abcefhikmnoprstuvxBCDP
-+.B \(+-abcefhiknoprstuvxBCDP
- ] [
- .B \-R
- file ] [
-@@ -47,25 +47,6 @@ file ] [
- option ] .\|.\|. [
- .B \-
- ] [ arg .\|.\|. ]
--.br
--.if \nZ=0 \{\
--.B rsh
--.\}
--.if \nZ=1 \{\
--.B rksh
--.\}
--.if \nZ=2 \{\
--.B rksh93
--.\}
--[
--.B \(+-abcefhikmnoprstuvxBCD
--] [
--.B \-R
--file ] [
--.B \(+-o
--option ] .\|.\|. [
--.B \-
--] [ arg .\|.\|. ]
- .SH DESCRIPTION
- .if \nZ=0 .I Sh\^
- .if \nZ=1 .I Ksh\^
-@@ -7963,6 +7944,8 @@ option is used
- to generate a cross reference database
- that can be used by a separate utility
- to find definitions and references for variables and commands.
-+The filename argument specifies the generated database. A script file must be
-+provided on the command line as well.
- .PP
- The remaining options and arguments are described under the
- .B set
diff --git a/ksh-20100202-pathvar.patch b/ksh-20100202-pathvar.patch
deleted file mode 100644
index 5086499..0000000
--- a/ksh-20100202-pathvar.patch
+++ /dev/null
@@ -1,20 +0,0 @@
-diff -up ksh-20100202/src/cmd/ksh93/sh.1.pathvar ksh-20100202/src/cmd/ksh93/sh.1
---- ksh-20100202/src/cmd/ksh93/sh.1.pathvar 2011-04-26 16:42:08.000000000 +0200
-+++ ksh-20100202/src/cmd/ksh93/sh.1 2011-04-27 09:09:00.315883280 +0200
-@@ -4025,13 +4025,9 @@ the directory containing the command.
- Alternative directory names are separated by
- a colon
- .RB ( : ).
--The default path is
--.B /bin:/usr/bin:
--(specifying
--.BR /bin ,
--.BR /usr/bin ,
--and the current directory
--in that order).
-+The default path is equal to
-+.BI getconf\ PATH
-+output.
- The current directory can be specified by
- two or more adjacent colons, or by a colon
- at the beginning or end of the path list.
diff --git a/ksh-20100621-fdstatus.patch b/ksh-20100621-fdstatus.patch
deleted file mode 100644
index 99abb55..0000000
--- a/ksh-20100621-fdstatus.patch
+++ /dev/null
@@ -1,54 +0,0 @@
-diff -up ksh-20120801/src/cmd/ksh93/sh/io.c.fdstatus ksh-20120801/src/cmd/ksh93/sh/io.c
---- ksh-20120801/src/cmd/ksh93/sh/io.c.fdstatus 2013-07-04 18:01:27.187516655 +0200
-+++ ksh-20120801/src/cmd/ksh93/sh/io.c 2013-07-04 18:01:38.249607392 +0200
-@@ -1508,7 +1508,7 @@ int sh_redirect(Shell_t *shp,struct iono
- fn = fd;
- if(fd<10)
- {
-- if((fn=fcntl(fd,F_DUPFD,10)) < 0)
-+ if((fn=sh_fcntl(fd,F_DUPFD,10)) < 0)
- goto fail;
- if(fn>=shp->gd->lim.open_max && !sh_iovalidfd(shp,fn))
- goto fail;
-diff -up ksh-20120801/src/cmd/ksh93/sh/subshell.c.fdstatus ksh-20120801/src/cmd/ksh93/sh/subshell.c
---- ksh-20120801/src/cmd/ksh93/sh/subshell.c.fdstatus 2012-07-17 23:54:21.000000000 +0200
-+++ ksh-20120801/src/cmd/ksh93/sh/subshell.c 2013-07-04 17:56:20.342000310 +0200
-@@ -122,7 +122,7 @@ void sh_subtmpfile(Shell_t *shp)
- register struct checkpt *pp = (struct checkpt*)shp->jmplist;
- register struct subshell *sp = subshell_data->pipe;
- /* save file descriptor 1 if open */
-- if((sp->tmpfd = fd = fcntl(1,F_DUPFD,10)) >= 0)
-+ if((sp->tmpfd = fd = sh_fcntl(1,F_DUPFD,10)) >= 0)
- {
- fcntl(fd,F_SETFD,FD_CLOEXEC);
- shp->fdstatus[fd] = shp->fdstatus[1]|IOCLEX;
-@@ -554,7 +554,7 @@ Sfio_t *sh_subshell(Shell_t *shp,Shnode_
- sp->pwdfd = n;
- if(n<10)
- {
-- sp->pwdfd = fcntl(n,F_DUPFD,10);
-+ sp->pwdfd = sh_fcntl(n,F_DUPFD,10);
- close(n);
- }
- if(sp->pwdfd>0)
-diff -up ksh-20120801/src/cmd/ksh93/sh/xec.c.fdstatus ksh-20120801/src/cmd/ksh93/sh/xec.c
---- ksh-20120801/src/cmd/ksh93/sh/xec.c.fdstatus 2012-07-23 16:49:32.000000000 +0200
-+++ ksh-20120801/src/cmd/ksh93/sh/xec.c 2013-07-04 17:57:47.153712116 +0200
-@@ -116,7 +116,7 @@ static int iousepipe(Shell_t *shp)
- return(0);
- usepipe++;
- fcntl(subpipe[0],F_SETFD,FD_CLOEXEC);
-- subpipe[2] = fcntl(1,F_DUPFD,10);
-+ subpipe[2] = sh_fcntl(1,F_DUPFD,10);
- fcntl(subpipe[2],F_SETFD,FD_CLOEXEC);
- shp->fdstatus[subpipe[2]] = shp->fdstatus[1];
- close(1);
-@@ -3622,7 +3622,7 @@ static void coproc_init(Shell_t *shp, in
- sh_pipe(shp->cpipe);
- if((outfd=shp->cpipe[1]) < 10)
- {
-- int fd=fcntl(shp->cpipe[1],F_DUPFD,10);
-+ int fd=sh_fcntl(shp->cpipe[1],F_DUPFD,10);
- if(fd>=10)
- {
- shp->fdstatus[fd] = (shp->fdstatus[outfd]&~IOCLEX);
diff --git a/ksh-20100621-manfix3.patch b/ksh-20100621-manfix3.patch
deleted file mode 100644
index bced575..0000000
--- a/ksh-20100621-manfix3.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -up ksh-20100621/src/cmd/ksh93/sh.1.manfix3 ksh-20100621/src/cmd/ksh93/sh.1
---- ksh-20100621/src/cmd/ksh93/sh.1.manfix3 2013-05-02 13:07:51.180529762 +0200
-+++ ksh-20100621/src/cmd/ksh93/sh.1 2013-05-02 13:11:30.469327199 +0200
-@@ -7585,7 +7585,7 @@ file descriptor 2.
- If the
- .B \-i
- option is present or
--if the shell input and output are attached to a terminal (as told by
-+if the shell input and error output are attached to a terminal (as told by
- .IR tcgetattr (2)),
- then this shell is
- .IR interactive .
diff --git a/ksh-20100826-fixregr.patch b/ksh-20100826-fixregr.patch
deleted file mode 100644
index 87cb13c..0000000
--- a/ksh-20100826-fixregr.patch
+++ /dev/null
@@ -1,68 +0,0 @@
-diff -up ksh-20120801/src/cmd/ksh93/tests/builtins.sh.fixregr ksh-20120801/src/cmd/ksh93/tests/builtins.sh
---- ksh-20120801/src/cmd/ksh93/tests/builtins.sh.fixregr 2012-07-16 17:23:56.000000000 +0200
-+++ ksh-20120801/src/cmd/ksh93/tests/builtins.sh 2012-08-08 12:29:00.733243019 +0200
-@@ -303,9 +303,9 @@ then err_exit "printf '%..*s' not workin
- fi
- [[ $(printf '%q\n') == '' ]] || err_exit 'printf "%q" with missing arguments'
- # we won't get hit by the one second boundary twice, right?
--[[ $(printf '%T\n' now) == "$(date)" ]] ||
--[[ $(printf '%T\n' now) == "$(date)" ]] ||
--err_exit 'printf "%T" now'
-+[[ $(printf '%T\n' now | sed 's/GMT/UTC/') == "$(date)" ]] ||
-+[[ $(printf '%T\n' now | sed 's/GMT/UTC/') == "$(date)" ]] ||
-+err_exit 'printf "%T" now = '"$(printf '%T\n' now) != $(date)"
- behead()
- {
- read line
-diff -up ksh-20120801/src/cmd/ksh93/tests/locale.sh.fixregr ksh-20120801/src/cmd/ksh93/tests/locale.sh
---- ksh-20120801/src/cmd/ksh93/tests/locale.sh.fixregr 2012-06-26 21:57:46.000000000 +0200
-+++ ksh-20120801/src/cmd/ksh93/tests/locale.sh 2012-08-08 12:29:20.039405240 +0200
-@@ -104,6 +104,7 @@ if (( $($SHELL -c $'export LC_ALL='$loca
- then LC_ALL=$locale $SHELL -c b1=$'"\342\202\254\342\202\254\342\202\254\342\202\254w\342\202\254\342\202\254\342\202\254\342\202\254"; [[ ${b1:4:1} == w ]]' || err_exit 'multibyte ${var:offset:len} not working correctly'
- fi
-
-+locale=en_US.UTF-8
- #$SHELL -c 'export LANG='$locale'; printf "\u[20ac]\u[20ac]" > $tmp/two_euro_chars.txt'
- printf $'\342\202\254\342\202\254' > $tmp/two_euro_chars.txt
- exp="6 2 6"
-@@ -111,11 +112,11 @@ set -- $($SHELL -c "
- unset LC_CTYPE
- export LANG=$locale
- export LC_ALL=C
-- command wc -C < $tmp/two_euro_chars.txt
-+ command wc -m < $tmp/two_euro_chars.txt
- unset LC_ALL
-- command wc -C < $tmp/two_euro_chars.txt
-+ command wc -m < $tmp/two_euro_chars.txt
- export LC_ALL=C
-- command wc -C < $tmp/two_euro_chars.txt
-+ command wc -m < $tmp/two_euro_chars.txt
- ")
- got=$*
- [[ $got == $exp ]] || err_exit "command wc LC_ALL default failed -- expected '$exp', got '$got'"
-@@ -134,6 +135,8 @@ set -- $($SHELL -c "
- got=$*
- [[ $got == $exp ]] || err_exit "builtin wc LC_ALL default failed -- expected '$exp', got '$got'"
-
-+locale=C_EU.UTF-8
-+
- # multibyte char straddling buffer boundary
-
- {
-@@ -190,6 +193,7 @@ do exp=$1
- done
-
- # setocale(LC_ALL,"") after setlocale() initialization
-+locale=en_US.UTF-8
-
- printf 'f1\357\274\240f2\n' > input1
- printf 't2\357\274\240f1\n' > input2
-@@ -336,7 +340,7 @@ then LC_ALL=en_US.UTF-8
- [[ $(print -r -- "$x") == $'hello\u[20ac]\xee world' ]] || err_exit '%q with unicode and non-unicode not working'
- if [[ $(whence od) ]]
- then got='68 65 6c 6c 6f e2 82 ac ee 20 77 6f 72 6c 64 0a'
-- [[ $(print -r -- "$x" | od -An -tx1) == "$got" ]] || err_exit "incorrect string from printf %q"
-+ [[ $(print -r -- "$x" | od -An -tx1) =~ $got ]] || err_exit "incorrect string from printf %q"
- fi
-
- fi
diff --git a/ksh-20120801-F_dupfd_cloexec.patch b/ksh-20120801-F_dupfd_cloexec.patch
deleted file mode 100644
index 7a034b3..0000000
--- a/ksh-20120801-F_dupfd_cloexec.patch
+++ /dev/null
@@ -1,22 +0,0 @@
-diff -up ksh-20120801/src/cmd/ksh93/sh/io.c.orig ksh-20120801/src/cmd/ksh93/sh/io.c
---- ksh-20120801/src/cmd/ksh93/sh/io.c.orig 2015-08-12 11:35:36.882268954 -0300
-+++ ksh-20120801/src/cmd/ksh93/sh/io.c 2015-08-12 11:44:06.324587019 -0300
-@@ -2580,10 +2580,18 @@ int sh_fcntl(register int fd, int op, ..
- if(newfd>=0) switch(op)
- {
- case F_DUPFD:
-+#if F_dupfd_cloexec != F_DUPFD
-+ case F_dupfd_cloexec:
-+#endif
- if(shp->fdstatus[fd] == IOCLOSE)
- shp->fdstatus[fd] = 0;
- if(newfd>=shp->gd->lim.open_max)
- sh_iovalidfd(shp,newfd);
-+#if F_dupfd_cloexec != F_DUPFD
-+ if(op==F_dupfd_cloexec)
-+ shp->fdstatus[newfd] = (shp->fdstatus[fd]|IOCLEX);
-+ else
-+#endif
- shp->fdstatus[newfd] = (shp->fdstatus[fd]&~IOCLEX);
- if(fdnotify)
- (*fdnotify)(fd,newfd);
diff --git a/ksh-20120801-alarmifs.patch b/ksh-20120801-alarmifs.patch
deleted file mode 100644
index 88b0ba9..0000000
--- a/ksh-20120801-alarmifs.patch
+++ /dev/null
@@ -1,33 +0,0 @@
---- ksh-20120801/src/cmd/ksh93/sh/init.c 2014-12-10 20:11:17.693446084 -0200
-+++ ksh-20120801/src/cmd/ksh93/sh/init.c 2014-12-10 20:11:24.753442619 -0200
-@@ -576,6 +576,7 @@ static char* get_ifs(register Namval_t*
- shp->ifstable[' '] = shp->ifstable['\t'] = S_SPACE;
- shp->ifstable['\n'] = S_NL;
- }
-+ shp->ifstable[0] = S_EOF;
- }
- return(value);
- }
---- ksh-20120801/src/cmd/ksh93/bltins/alarm.c 2014-12-18 12:03:39.198461933 -0200
-+++ ksh-20120801/src/cmd/ksh93/bltins/alarm.c 2014-12-18 12:04:32.464421268 -0200
-@@ -130,6 +130,7 @@ void sh_timetraps(Shell_t *shp)
- {
- register struct tevent *tp, *tpnext;
- register struct tevent *tptop;
-+ char ifstable[256];
- while(1)
- {
- shp->sigflag[SIGALRM] &= ~SH_SIGALRM;
-@@ -141,7 +142,11 @@ void sh_timetraps(Shell_t *shp)
- {
- tp->flags &= ~L_FLAG;
- if(tp->action)
-+ {
-+ memcpy(ifstable,shp->ifstable,sizeof(ifstable));
- sh_fun(tp->action,tp->node,(char**)0);
-+ memcpy(shp->ifstable,ifstable,sizeof(ifstable));
-+ }
- tp->flags &= ~L_FLAG;
- if(!tp->flags)
- {
-
diff --git a/ksh-20120801-argvfix.patch b/ksh-20120801-argvfix.patch
deleted file mode 100644
index b0e1a78..0000000
--- a/ksh-20120801-argvfix.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-diff -up ksh-20120801/src/cmd/ksh93/sh/main.c.fixargs ksh-20120801/src/cmd/ksh93/sh/main.c
---- ksh-20120801/src/cmd/ksh93/sh/main.c.fixargs 2013-12-31 11:32:14.917874134 +0100
-+++ ksh-20120801/src/cmd/ksh93/sh/main.c 2013-12-31 11:32:58.028847126 +0100
-@@ -757,7 +757,7 @@ static void fixargs(char **argv, int mod
- offset += size;
- buff[offset++] = ' ';
- }
-- buff[offset-1] = 0;
-+ memset(&buff[offset - 1], 0, command_len - offset + 1);
- # ifdef PSTAT
- un.pst_command = stakptr(0);
- pstat(PSTAT_SETCMD,un,0,0,0);
-
diff --git a/ksh-20120801-assoc-unset-leak.patch b/ksh-20120801-assoc-unset-leak.patch
deleted file mode 100644
index 1af7d16..0000000
--- a/ksh-20120801-assoc-unset-leak.patch
+++ /dev/null
@@ -1,20 +0,0 @@
-diff -up ksh-20120801/src/cmd/ksh93/sh/name.c.orig ksh-20120801/src/cmd/ksh93/sh/name.c
---- ksh-20120801/src/cmd/ksh93/sh/name.c.orig 2015-02-10 17:15:37.180783550 -0200
-+++ ksh-20120801/src/cmd/ksh93/sh/name.c 2015-02-10 18:25:51.726228437 -0200
-@@ -1298,7 +1298,16 @@ void nv_delete(Namval_t* np, Dt_t *root,
- if(dtdelete(root,np))
- {
- if(!(flags&NV_NOFREE) && ((flags&NV_FUNCTION) || !nv_subsaved(np,flags&NV_TABLE)))
-+ {
-+ Namarr_t *ap;
-+ if(nv_isarray(np) && np->nvfun && (ap=nv_arrayptr(np)) && array_assoc(ap)) {
-+ while(nv_associative(np,0,NV_ANEXT))
-+ nv_associative(np, 0, NV_ADELETE);
-+ nv_associative(np, 0, NV_AFREE);
-+ free((void*)np->nvfun);
-+ }
- free((void*)np);
-+ }
- }
- #if 0
- else
diff --git a/ksh-20120801-badgcc.patch b/ksh-20120801-badgcc.patch
deleted file mode 100644
index cd26316..0000000
--- a/ksh-20120801-badgcc.patch
+++ /dev/null
@@ -1,22 +0,0 @@
-diff -up ksh-20120801/src/lib/libast/string/strdup.c.badgcc ksh-20120801/src/lib/libast/string/strdup.c
---- ksh-20120801/src/lib/libast/string/strdup.c.badgcc 2012-05-21 15:04:46.000000000 +0200
-+++ ksh-20120801/src/lib/libast/string/strdup.c 2015-06-17 10:12:52.693922581 +0200
-@@ -50,11 +50,18 @@ __STDPP__directive pragma pp:nohide strd
- #define extern __EXPORT__
- #endif
-
-+#pragma GCC push_options
-+#pragma GCC optimize ("O0")
-+
-+
- extern char*
- strdup(register const char* s)
- {
- register char* t;
- register int n;
-
- return (s && (t = oldof(0, char, n = strlen(s) + 1, 0))) ? (char*)memcpy(t, s, n) : (char*)0;
- }
-+
-+#pragma GCC pop_options
-+
diff --git a/ksh-20120801-ccflags.patch b/ksh-20120801-ccflags.patch
deleted file mode 100644
index b95db66..0000000
--- a/ksh-20120801-ccflags.patch
+++ /dev/null
@@ -1,21 +0,0 @@
-diff --git a/src/cmd/ksh93/Mamfile b/src/cmd/ksh93/Mamfile
---- a/src/cmd/ksh93/Mamfile
-+++ b/src/cmd/ksh93/Mamfile
-@@ -1111,7 +1111,7 @@ prev include/defs.h implicit
- done sh/trestore.c
- meta trestore.o %.c>%.o sh/trestore.c trestore
- prev sh/trestore.c
--exec - ${CC} ${mam_cc_FLAGS} ${-debug-symbols?1?${mam_cc_DEBUG} -D_BLD_DEBUG?${CCFLAGS.FORCE}?} ${SHOPT_BASH+-DSHOPT_BASH=${SHOPT_BASH}} ${SHOPT_SYSRC+-DSHOPT_SYSRC=${SHOPT_SYSRC}} ${SHOPT_ACCT+-DSHOPT_ACCT=${SHOPT_ACCT}} ${SHOPT_SPAWN+-DSHOPT_SPAWN=${SHOPT_SPAWN}} ${SH_CMDLIB_DIR+-DSH_CMDLIB_DIR=${SH_CMDLIB_DIR}} ${SH_DICT+-DSH_DICT=${SH_DICT}} ${SHOPT_P_SUID+-DSHOPT_P_SUID=${SHOPT_P_SUID}} ${SHOPT_REGRESS+-DSHOPT_REGRESS=${SHOPT_REGRESS}} -I. -Iinclude -I${PACKAGE_ast_INCLUDE} -D_BLD_shell -DKSHELL -D_API_ast=20100309 -D_PACKAGE_ast -DSHOPT_SUID_EXEC -DSHOPT_BRACEPAT -DSHOPT_STATS -DSHOPT_NAMESPACE -DSHOPT_COSHELL -DSHOPT_PFSH -DSHOPT_HISTEXPAND -DERROR_CONTEXT_T=Error_context_t -DSHOPT_FIXEDARRAY -DSHOPT_ESH -DSHOPT_MULTIBYTE -c sh/trestore.c
-+exec - ${CC} ${mam_cc_FLAGS} ${CCFLAGS} ${-debug-symbols?1?${mam_cc_DEBUG} -D_BLD_DEBUG?${CCFLAGS.FORCE}?} ${SHOPT_BASH+-DSHOPT_BASH=${SHOPT_BASH}} ${SHOPT_SYSRC+-DSHOPT_SYSRC=${SHOPT_SYSRC}} ${SHOPT_ACCT+-DSHOPT_ACCT=${SHOPT_ACCT}} ${SHOPT_SPAWN+-DSHOPT_SPAWN=${SHOPT_SPAWN}} ${SH_CMDLIB_DIR+-DSH_CMDLIB_DIR=${SH_CMDLIB_DIR}} ${SH_DICT+-DSH_DICT=${SH_DICT}} ${SHOPT_P_SUID+-DSHOPT_P_SUID=${SHOPT_P_SUID}} ${SHOPT_REGRESS+-DSHOPT_REGRESS=${SHOPT_REGRESS}} -I. -Iinclude -I${PACKAGE_ast_INCLUDE} -D_BLD_shell -DKSHELL -D_API_ast=20100309 -D_PACKAGE_ast -DSHOPT_SUID_EXEC -DSHOPT_BRACEPAT -DSHOPT_STATS -DSHOPT_NAMESPACE -DSHOPT_COSHELL -DSHOPT_PFSH -DSHOPT_HISTEXPAND -DERROR_CONTEXT_T=Error_context_t -DSHOPT_FIXEDARRAY -DSHOPT_ESH -DSHOPT_MULTIBYTE -c sh/trestore.c
- done trestore.o generated
- make waitevent.o
- make sh/waitevent.c
-@@ -1199,7 +1199,7 @@ prev ${PACKAGE_ast_INCLUDE}/ast_standards.h implicit
- done data/strdata.c
- meta strdata.o %.c>%.o data/strdata.c strdata
- prev data/strdata.c
--exec - ${CC} ${mam_cc_FLAGS} ${-debug-symbols?1?${mam_cc_DEBUG} -D_BLD_DEBUG?${CCFLAGS.FORCE}?} ${SHOPT_BASH+-DSHOPT_BASH=${SHOPT_BASH}} ${SH_CMDLIB_DIR+-DSH_CMDLIB_DIR=${SH_CMDLIB_DIR}} ${SH_DICT+-DSH_DICT=${SH_DICT}} ${SHOPT_P_SUID+-DSHOPT_P_SUID=${SHOPT_P_SUID}} ${SHOPT_REGRESS+-DSHOPT_REGRESS=${SHOPT_REGRESS}} -I. -Iinclude -I${PACKAGE_ast_INCLUDE} -DSHOPT_STATS -DSHOPT_NAMESPACE -DSHOPT_COSHELL -DSHOPT_PFSH -DSHOPT_HISTEXPAND -D_BLD_shell -D_API_ast=20100309 -D_PACKAGE_ast -DERROR_CONTEXT_T=Error_context_t -DSHOPT_FIXEDARRAY -DSHOPT_ESH -DSHOPT_MULTIBYTE -c data/strdata.c
-+exec - ${CC} ${mam_cc_FLAGS} ${CCFLAGS} ${-debug-symbols?1?${mam_cc_DEBUG} -D_BLD_DEBUG?${CCFLAGS.FORCE}?} ${SHOPT_BASH+-DSHOPT_BASH=${SHOPT_BASH}} ${SH_CMDLIB_DIR+-DSH_CMDLIB_DIR=${SH_CMDLIB_DIR}} ${SH_DICT+-DSH_DICT=${SH_DICT}} ${SHOPT_P_SUID+-DSHOPT_P_SUID=${SHOPT_P_SUID}} ${SHOPT_REGRESS+-DSHOPT_REGRESS=${SHOPT_REGRESS}} -I. -Iinclude -I${PACKAGE_ast_INCLUDE} -DSHOPT_STATS -DSHOPT_NAMESPACE -DSHOPT_COSHELL -DSHOPT_PFSH -DSHOPT_HISTEXPAND -D_BLD_shell -D_API_ast=20100309 -D_PACKAGE_ast -DERROR_CONTEXT_T=Error_context_t -DSHOPT_FIXEDARRAY -DSHOPT_ESH -DSHOPT_MULTIBYTE -c data/strdata.c
- done strdata.o generated
- make testops.o
- make data/testops.c
diff --git a/ksh-20120801-cdfix.patch b/ksh-20120801-cdfix.patch
deleted file mode 100644
index 59265dd..0000000
--- a/ksh-20120801-cdfix.patch
+++ /dev/null
@@ -1,14 +0,0 @@
-diff -up ksh-20120801/src/cmd/ksh93/bltins/cd_pwd.c.cdfix ksh-20120801/src/cmd/ksh93/bltins/cd_pwd.c
---- ksh-20120801/src/cmd/ksh93/bltins/cd_pwd.c.cdfix 2013-02-01 16:04:55.507150242 +0100
-+++ ksh-20120801/src/cmd/ksh93/bltins/cd_pwd.c 2013-02-01 16:06:39.361007641 +0100
-@@ -214,7 +214,10 @@ int b_cd(int argc, char *argv[],Shbltin_
- if(*++dp=='.' && (*++dp=='/' || *dp==0))
- n++;
- else if(*dp && *dp!='/')
-+ {
-+ dp--;
- break;
-+ }
- if(*dp==0)
- break;
- }
diff --git a/ksh-20120801-cdfix2.patch b/ksh-20120801-cdfix2.patch
deleted file mode 100644
index 84bb491..0000000
--- a/ksh-20120801-cdfix2.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-diff -up ksh-20120801/src/cmd/ksh93/bltins/cd_pwd.c.cdfix2 ksh-20120801/src/cmd/ksh93/bltins/cd_pwd.c
---- ksh-20120801/src/cmd/ksh93/bltins/cd_pwd.c.cdfix2 2013-02-01 16:46:50.441771371 +0100
-+++ ksh-20120801/src/cmd/ksh93/bltins/cd_pwd.c 2013-02-01 16:57:43.241784024 +0100
-@@ -61,6 +61,7 @@ int sh_diropenat(Shell_t *shp, int dir,
- {
- int fd,shfd;
- int savederrno=errno;
-+ struct stat fs;
- #ifndef AT_FDCWD
- NOT_USED(dir);
- #endif
-@@ -133,6 +134,13 @@ int sh_diropenat(Shell_t *shp, int dir,
-
- if(fd < 0)
- return fd;
-+
-+ if (!fstat(fd, &fs) && !S_ISDIR(fs.st_mode))
-+ {
-+ close(fd);
-+ errno = ENOTDIR;
-+ return -1;
-+ }
-
- /* Move fd to a number > 10 and *register* the fd number with the shell */
- shfd = sh_fcntl(fd, F_dupfd_cloexec, 10);
diff --git a/ksh-20120801-cdfix3.patch b/ksh-20120801-cdfix3.patch
deleted file mode 100644
index 7e47f71..0000000
--- a/ksh-20120801-cdfix3.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -up ksh-20120801/src/cmd/ksh93/bltins/cd_pwd.c.cdfix3 ksh-20120801/src/cmd/ksh93/bltins/cd_pwd.c
---- ksh-20120801/src/cmd/ksh93/bltins/cd_pwd.c.cdfix3 2014-06-20 12:39:02.757407689 +0200
-+++ ksh-20120801/src/cmd/ksh93/bltins/cd_pwd.c 2014-06-20 12:40:19.530998070 +0200
-@@ -290,7 +290,7 @@ int b_cd(int argc, char *argv[],Shbltin_
- if(newdirfd >=0)
- {
- /* chdir for directories on HSM/tapeworms may take minutes */
-- if(fchdir(newdirfd) >= 0)
-+ if((rval=fchdir(newdirfd)) >= 0)
- {
- if(shp->pwdfd >= 0)
- sh_close(shp->pwdfd);
diff --git a/ksh-20120801-cdfork.patch b/ksh-20120801-cdfork.patch
deleted file mode 100644
index c82cb4c..0000000
--- a/ksh-20120801-cdfork.patch
+++ /dev/null
@@ -1,40 +0,0 @@
---- ksh-20120801/src/cmd/ksh93/sh/path.c 2014-09-01 15:08:06.738969962 -0300
-+++ ksh-20120801/src/cmd/ksh93/sh/path.c 2014-09-01 15:13:51.321459978 -0300
-@@ -229,13 +229,12 @@ static pid_t path_xargs(Shell_t *shp,con
- /*
- * make sure PWD is set up correctly
- * Return the present working directory
-- * Invokes getcwd() if flag==0 and if necessary
-+ * Invokes getcwd() if necessary
- * Sets the PWD variable to this value
- */
- char *path_pwd(Shell_t *shp,int flag)
- {
- register char *cp;
-- register char *dfault = (char*)e_dot;
- register int count = 0;
- if(shp->pwd)
- return((char*)shp->pwd);
-@@ -254,11 +253,6 @@ char *path_pwd(Shell_t *shp,int flag)
- cp = "/";
- break;
- case 3:
-- cp = (char*)e_crondir;
-- if(flag) /* skip next case when non-zero flag */
-- ++count;
-- break;
-- case 4:
- {
- if(cp=getcwd(NIL(char*),0))
- {
-@@ -269,8 +263,8 @@ char *path_pwd(Shell_t *shp,int flag)
- }
- break;
- }
-- case 5:
-+ case 4:
-- return(dfault);
-+ return((char*)e_dot);
- }
- if(cp && *cp=='/' && test_inode(cp,e_dot))
- break;
diff --git a/ksh-20120801-covsfix.patch b/ksh-20120801-covsfix.patch
deleted file mode 100644
index c64e2a7..0000000
--- a/ksh-20120801-covsfix.patch
+++ /dev/null
@@ -1,58 +0,0 @@
-diff -up ksh-20120801/src/cmd/ksh93/sh/init.c.covsfix ksh-20120801/src/cmd/ksh93/sh/init.c
---- ksh-20120801/src/cmd/ksh93/sh/init.c.covsfix 2013-07-22 17:41:34.674054068 +0200
-+++ ksh-20120801/src/cmd/ksh93/sh/init.c 2013-07-22 17:42:50.761361921 +0200
-@@ -1237,9 +1237,11 @@ static void put_mode(Namval_t* np, const
- mode = *(double*)val;
- }
- else
-+ {
- mode = strperm(val, &last,0);
-- if(*last)
-- errormsg(SH_DICT,ERROR_exit(1),"%s: invalid mode string",val);
-+ if(*last)
-+ errormsg(SH_DICT,ERROR_exit(1),"%s: invalid mode string",val);
-+ }
- nv_putv(np,(char*)&mode,NV_INTEGER,nfp);
- }
- else
-diff -up ksh-20120801/src/cmd/ksh93/sh/io.c.covsfix ksh-20120801/src/cmd/ksh93/sh/io.c
---- ksh-20120801/src/cmd/ksh93/sh/io.c.covsfix 2013-07-22 17:06:30.282927080 +0200
-+++ ksh-20120801/src/cmd/ksh93/sh/io.c 2013-07-22 17:08:49.645721280 +0200
-@@ -954,6 +954,7 @@ int sh_pipe(register int pv[])
- socklen_t slen;
- if ((pv[out] = socket (AF_INET, SOCK_STREAM, 0)) < 0)
- errormsg(SH_DICT,ERROR_system(1),e_pipe);
-+ memset(&sin.sin_zero, 0, sizeof(sin.sin_zero));
- do
- {
- sin.sin_family = AF_INET;
-diff -up ksh-20120801/src/cmd/ksh93/sh/name.c.covsfix ksh-20120801/src/cmd/ksh93/sh/name.c
---- ksh-20120801/src/cmd/ksh93/sh/name.c.covsfix 2013-07-22 17:40:31.644635604 +0200
-+++ ksh-20120801/src/cmd/ksh93/sh/name.c 2013-07-22 17:41:15.828227073 +0200
-@@ -3094,6 +3094,7 @@ void nv_newattr (register Namval_t *np,
- if(!mp)
- nv_putval (np, cp, NV_RDONLY);
- free(cp);
-+ cp = NULL;
- }
- }
- while(ap && nv_nextsub(np));
-diff -up ksh-20120801/src/cmd/ksh93/sh/subshell.c.covsfix ksh-20120801/src/cmd/ksh93/sh/subshell.c
---- ksh-20120801/src/cmd/ksh93/sh/subshell.c.covsfix 2013-07-22 17:46:15.607533423 +0200
-+++ ksh-20120801/src/cmd/ksh93/sh/subshell.c 2013-07-22 17:48:36.739290968 +0200
-@@ -205,7 +205,14 @@ void sh_subfork(void)
- shp->comsub = 0;
- SH_SUBSHELLNOD->nvalue.s = 0;
- sp->subpid=0;
-- shp->st.trapcom[0] = (comsub==2?NULL:trap);
-+ if (comsub==2)
-+ {
-+ shp->st.trapcom[0] = NULL;
-+ if(trap)
-+ free((void*)trap);
-+ }
-+ else
-+ shp->st.trapcom[0] = (comsub==2?NULL:trap);
- shp->savesig = 0;
- }
- }
diff --git a/ksh-20120801-crash.patch b/ksh-20120801-crash.patch
deleted file mode 100644
index 37b7962..0000000
--- a/ksh-20120801-crash.patch
+++ /dev/null
@@ -1,64 +0,0 @@
-diff -up ksh-20120801/src/cmd/ksh93/include/jobs.h.crash ksh-20120801/src/cmd/ksh93/include/jobs.h
---- ksh-20120801/src/cmd/ksh93/include/jobs.h.crash 2014-07-22 11:48:57.205062905 +0200
-+++ ksh-20120801/src/cmd/ksh93/include/jobs.h 2014-07-22 11:48:57.243062711 +0200
-@@ -118,6 +118,7 @@ struct jobs
- char jobcontrol; /* turned on for real job control */
- char waitsafe; /* wait will not block */
- char waitall; /* wait for all jobs in pipe */
-+ char hack1_waitall;
- char toclear; /* job table needs clearing */
- unsigned char *freejobs; /* free jobs numbers */
- #if SHOPT_COSHELL
-diff -up ksh-20120801/src/cmd/ksh93/sh/jobs.c.crash ksh-20120801/src/cmd/ksh93/sh/jobs.c
---- ksh-20120801/src/cmd/ksh93/sh/jobs.c.crash 2014-07-22 11:48:57.190062982 +0200
-+++ ksh-20120801/src/cmd/ksh93/sh/jobs.c 2014-07-22 11:48:57.243062711 +0200
-@@ -1957,6 +1957,7 @@ again:
- {
- count = bp->count;
- jp = bp->list;
-+ jpold = 0;
- goto again;
- }
- if(jp)
-diff -up ksh-20120801/src/cmd/ksh93/sh/subshell.c.crash ksh-20120801/src/cmd/ksh93/sh/subshell.c
---- ksh-20120801/src/cmd/ksh93/sh/subshell.c.crash 2014-07-22 11:48:57.234062758 +0200
-+++ ksh-20120801/src/cmd/ksh93/sh/subshell.c 2014-07-22 11:54:04.164491483 +0200
-@@ -492,6 +492,7 @@ Sfio_t *sh_subshell(Shell_t *shp,Shnode_
- struct sh_scoped savst;
- struct dolnod *argsav=0;
- int argcnt;
-+ int pipefail = 0;
- memset((char*)sp, 0, sizeof(*sp));
- sfsync(shp->outpool);
- sh_sigcheck(shp);
-@@ -541,7 +542,10 @@ Sfio_t *sh_subshell(Shell_t *shp,Shnode_
- sp->comsub = shp->comsub;
- shp->subshare = comsub==2 || (comsub==1 && sh_isoption(SH_SUBSHARE));
- if(comsub)
-+ {
- shp->comsub = comsub;
-+ job.hack1_waitall=(comsub==1);
-+ }
- sp->shpwdfd=-1;
- if(!comsub || !shp->subshare)
- {
-@@ -648,6 +652,7 @@ Sfio_t *sh_subshell(Shell_t *shp,Shnode_
- }
- else
- {
-+ job.hack1_waitall=0;
- if(comsub!=1 && shp->spid)
- {
- job_wait(shp->spid);
-diff -up ksh-20120801/src/cmd/ksh93/sh/xec.c.crash ksh-20120801/src/cmd/ksh93/sh/xec.c
---- ksh-20120801/src/cmd/ksh93/sh/xec.c.crash 2014-07-22 11:48:57.228062787 +0200
-+++ ksh-20120801/src/cmd/ksh93/sh/xec.c 2014-07-22 11:48:57.245062700 +0200
-@@ -2125,7 +2125,7 @@ int sh_exec(register const Shnode_t *t,
- memset(exitval,0,job.waitall*sizeof(int));
- }
- else
-- job.waitall |= !pipejob && sh_isstate(SH_MONITOR);
-+ job.waitall |= job.hack1_waitall || !pipejob && sh_isstate(SH_MONITOR);
- job_lock();
- nlock++;
- do
diff --git a/ksh-20120801-dotdoublefree.patch b/ksh-20120801-dotdoublefree.patch
deleted file mode 100644
index bf29cb1..0000000
--- a/ksh-20120801-dotdoublefree.patch
+++ /dev/null
@@ -1,19 +0,0 @@
-diff --git a/src/cmd/ksh93/sh/xec.c b/src/cmd/ksh93/sh/xec.c
-index 1ba7347..ab745d4 100644
---- a/src/cmd/ksh93/sh/xec.c
-+++ b/src/cmd/ksh93/sh/xec.c
-@@ -640,7 +640,11 @@ int sh_eval(register Sfio_t *iop, int mode)
- if(lineno)
- shp->inlineno = lineno;
- if(io_save)
-+ {
- sfclose(io_save);
-+ io_save = 0;
-+ }
-+
- sh_freeup(shp);
- shp->st.staklist = saveslp;
- shp->fn_reset = 0;
---
-2.9.3
-
diff --git a/ksh-20120801-emptyarrayinit.patch b/ksh-20120801-emptyarrayinit.patch
deleted file mode 100644
index c888b31..0000000
--- a/ksh-20120801-emptyarrayinit.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- ksh-20120801/src/cmd/ksh93/sh/array.c 2014-12-11 16:39:34.253860675 -0200
-+++ ksh-20120801/src/cmd/ksh93/sh/array.c 2014-12-11 16:39:40.794857083 -0200
-@@ -1003,7 +1003,7 @@ Namarr_t *nv_setarray(Namval_t *np, void
- ap->nelem = nelem;
- ap->fun = fun;
- nv_onattr(np,NV_ARRAY);
-- if(fp || value)
-+ if(fp || (value && value != Empty))
- {
- nv_putsub(np, "0", ARRAY_ADD);
- if(value)
diff --git a/ksh-20120801-fd2lost.patch b/ksh-20120801-fd2lost.patch
deleted file mode 100644
index 0605f6e..0000000
--- a/ksh-20120801-fd2lost.patch
+++ /dev/null
@@ -1,72 +0,0 @@
-diff -up ksh-20120801/src/cmd/ksh93/sh/macro.c.fd2lost ksh-20120801/src/cmd/ksh93/sh/macro.c
---- ksh-20120801/src/cmd/ksh93/sh/macro.c.fd2lost 2014-01-22 16:23:21.211658984 +0100
-+++ ksh-20120801/src/cmd/ksh93/sh/macro.c 2014-01-22 16:23:21.243658703 +0100
-@@ -391,7 +391,7 @@ void sh_machere(Shell_t *shp,Sfio_t *inf
- break;
- }
- case S_PAR:
-- comsubst(mp,(Shnode_t*)0,1);
-+ comsubst(mp,(Shnode_t*)0,3);
- break;
- case S_EOF:
- if((c=fcfill()) > 0)
-@@ -1165,7 +1165,7 @@ retry1:
- case S_PAR:
- if(type)
- goto nosub;
-- comsubst(mp,(Shnode_t*)0,1);
-+ comsubst(mp,(Shnode_t*)0,3);
- return(1);
- case S_DIG:
- var = 0;
-diff -up ksh-20120801/src/cmd/ksh93/sh/subshell.c.fd2lost ksh-20120801/src/cmd/ksh93/sh/subshell.c
---- ksh-20120801/src/cmd/ksh93/sh/subshell.c.fd2lost 2014-01-22 16:23:21.222658887 +0100
-+++ ksh-20120801/src/cmd/ksh93/sh/subshell.c 2014-01-22 16:23:21.243658703 +0100
-@@ -122,7 +122,8 @@ void sh_subtmpfile(Shell_t *shp)
- else if(errno!=EBADF)
- errormsg(SH_DICT,ERROR_system(1),e_toomany);
- /* popping a discipline forces a /tmp file create */
-- sfdisc(sfstdout,SF_POPDISC);
-+ if(shp->comsub != 1)
-+ sfdisc(sfstdout,SF_POPDISC);
- if((fd=sffileno(sfstdout))<0)
- {
- /* unable to create the /tmp file so use a pipe */
-@@ -635,6 +636,13 @@ Sfio_t *sh_subshell(Shell_t *shp,Shnode_
- }
- else
- {
-+ if(comsub!=1 && shp->spid)
-+ {
-+ job_wait(shp->spid);
-+ if(shp->pipepid==shp->spid)
-+ shp->spid = 0;
-+ shp->pipepid = 0;
-+ }
- /* move tmp file to iop and restore sfstdout */
- iop = sfswap(sfstdout,NIL(Sfio_t*));
- if(!iop)
-diff -up ksh-20120801/src/cmd/ksh93/sh/xec.c.fd2lost ksh-20120801/src/cmd/ksh93/sh/xec.c
---- ksh-20120801/src/cmd/ksh93/sh/xec.c.fd2lost 2014-01-22 16:23:21.237658756 +0100
-+++ ksh-20120801/src/cmd/ksh93/sh/xec.c 2014-01-22 16:38:36.374666019 +0100
-@@ -1756,6 +1756,8 @@ int sh_exec(register const Shnode_t *t,
- nlock--;
- job_unlock();
- }
-+ if(shp->subshell)
-+ shp->spid = parent;
- if(type&FPCL)
- sh_close(shp->inpipe[0]);
- if(type&(FCOOP|FAMP))
-@@ -1771,7 +1773,11 @@ int sh_exec(register const Shnode_t *t,
- if(shp->pipepid)
- shp->pipepid = parent;
- else
-+ {
- job_wait(parent);
-+ if(parent==shp->spid)
-+ shp->spid = 0;
-+ }
- if(shp->topfd > topfd)
- sh_iorestore(shp,topfd,0);
- if(usepipe && tsetio && subdup && unpipe)
diff --git a/ksh-20120801-filecomsubst.patch b/ksh-20120801-filecomsubst.patch
deleted file mode 100644
index 676cc27..0000000
--- a/ksh-20120801-filecomsubst.patch
+++ /dev/null
@@ -1,11 +0,0 @@
-diff -up ksh-20120801/src/cmd/ksh93/sh/io.c.tryfix01 ksh-20120801/src/cmd/ksh93/sh/io.c
---- ksh-20120801/src/cmd/ksh93/sh/io.c.tryfix01 2014-02-26 16:15:52.355391420 +0100
-+++ ksh-20120801/src/cmd/ksh93/sh/io.c 2014-02-26 16:23:55.588148801 +0100
-@@ -1326,6 +1326,7 @@ int sh_redirect(Shell_t *shp,struct iono
- if(flag==SH_SHOWME)
- goto traceit;
- fd=sh_chkopen(fname);
-+ fd=sh_iomovefd(fd);
- }
- else if(sh_isoption(SH_RESTRICTED))
- errormsg(SH_DICT,ERROR_exit(1),e_restricted,fname);
diff --git a/ksh-20120801-forkbomb.patch b/ksh-20120801-forkbomb.patch
deleted file mode 100644
index 7a1a5c1..0000000
--- a/ksh-20120801-forkbomb.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -up ksh-20120801/src/cmd/ksh93/sh/fault.c.forkbomb ksh-20120801/src/cmd/ksh93/sh/fault.c
---- ksh-20120801/src/cmd/ksh93/sh/fault.c.forkbomb 2013-04-30 16:20:40.237490109 +0200
-+++ ksh-20120801/src/cmd/ksh93/sh/fault.c 2013-04-30 16:21:49.961068778 +0200
-@@ -519,7 +519,7 @@ void sh_exit(register int xno)
- if(pp && pp->mode>1)
- cursig = -1;
- #ifdef SIGTSTP
-- if(shp->trapnote&SH_SIGTSTP)
-+ if((shp->trapnote&SH_SIGTSTP) && job.jobcontrol)
- {
- /* ^Z detected by the shell */
- shp->trapnote = 0;
diff --git a/ksh-20120801-fununset.patch b/ksh-20120801-fununset.patch
deleted file mode 100644
index 1f5cb17..0000000
--- a/ksh-20120801-fununset.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -up ksh-20120801/src/cmd/ksh93/sh/xec.c.fununset ksh-20120801/src/cmd/ksh93/sh/xec.c
---- ksh-20120801/src/cmd/ksh93/sh/xec.c.fununset 2014-06-16 14:21:09.293513844 +0200
-+++ ksh-20120801/src/cmd/ksh93/sh/xec.c 2014-06-16 14:21:09.309513760 +0200
-@@ -3570,7 +3570,7 @@ static void sh_funct(Shell_t *shp,Namval
- #endif
- nv_putval(SH_PATHNAMENOD,shp->st.filename,NV_NOFREE);
- shp->pipepid = pipepid;
-- np->nvalue.rp->running -= 2;
-+ if (np->nvalue.rp) np->nvalue.rp->running -= 2;
- }
-
- /*
diff --git a/ksh-20120801-glibc-build-fix.patch b/ksh-20120801-glibc-build-fix.patch
deleted file mode 100644
index 28be43b..0000000
--- a/ksh-20120801-glibc-build-fix.patch
+++ /dev/null
@@ -1,38 +0,0 @@
-diff --git a/src/lib/libast/features/stdio b/src/lib/libast/features/stdio
---- a/src/lib/libast/features/stdio
-+++ b/src/lib/libast/features/stdio
-@@ -6,6 +6,8 @@ cat{
- #define _FILE_DEFINED 1
- #define _FILE_defined 1
- #define _FILEDEFED 1
-+ #define __FILE_defined 1
-+ #define ____FILE_defined 1
-
- #ifndef __FILE_TAG
- #define __FILE_TAG _sfio_s
-diff --git a/src/lib/libast/include/ast.h b/src/lib/libast/include/ast.h
-index ebf82d7..f4bbe6d 100644
---- a/src/lib/libast/include/ast.h
-+++ b/src/lib/libast/include/ast.h
-@@ -59,9 +59,21 @@ struct _sfio_s;
- #ifndef __FILE_typedef
- #define __FILE_typedef 1
- #endif
-+#ifndef _FILE_DEFINED
-+#define _FILE_DEFINED 1
-+#endif
-+#ifndef _FILE_defined
-+#define _FILE_defined 1
-+#endif
- #ifndef _FILEDEFED
- #define _FILEDEFED 1
- #endif
-+#ifndef __FILE_defined
-+#define __FILE_defined 1
-+#endif
-+#ifndef ____FILE_defined
-+#define ____FILE_defined 1
-+#endif
- #endif
-
- /*
diff --git a/ksh-20120801-heresub.patch b/ksh-20120801-heresub.patch
deleted file mode 100644
index 880071c..0000000
--- a/ksh-20120801-heresub.patch
+++ /dev/null
@@ -1,32 +0,0 @@
-diff -up ksh-20120801/src/cmd/ksh93/sh/lex.c.heresub ksh-20120801/src/cmd/ksh93/sh/lex.c
---- ksh-20120801/src/cmd/ksh93/sh/lex.c.heresub 2014-05-21 16:48:42.635700984 +0200
-+++ ksh-20120801/src/cmd/ksh93/sh/lex.c 2014-05-21 16:48:42.678700772 +0200
-@@ -1557,6 +1557,7 @@ static int comsub(register Lex_t *lp, in
- {
- register int n,c,count=1;
- register int line=lp->sh->inlineno;
-+ struct ionod *inheredoc = lp->heredoc;
- char *first,*cp=fcseek(0),word[5];
- int off, messages=0, assignok=lp->assignok, csub;
- struct lexstate save;
-@@ -1683,7 +1684,7 @@ done:
- lp->lexd.dolparen--;
- lp->lex = save;
- lp->assignok = (endchar(lp)==RBRACT?assignok:0);
-- if(lp->heredoc)
-+ if(lp->heredoc && !inheredoc)
- errormsg(SH_DICT,ERROR_exit(SYNBAD),e_lexsyntax5,lp->sh->inlineno,lp->heredoc->ioname);
- return(messages);
- }
-diff -up ksh-20120801/src/cmd/ksh93/sh/macro.c.heresub ksh-20120801/src/cmd/ksh93/sh/macro.c
---- ksh-20120801/src/cmd/ksh93/sh/macro.c.heresub 2014-05-21 16:48:42.650700910 +0200
-+++ ksh-20120801/src/cmd/ksh93/sh/macro.c 2014-05-21 16:48:42.678700772 +0200
-@@ -2085,7 +2085,7 @@ static void comsubst(Mac_t *mp,register
- }
- sfputc(stkp,c);
- }
-- sfputc(stkp,' ');
-+ sfputc(stkp,'\n');
- c = stktell(stkp);
- str=stkfreeze(stkp,1);
- /* disable verbose and don't save in history file */
diff --git a/ksh-20120801-iso8859.patch b/ksh-20120801-iso8859.patch
deleted file mode 100644
index 8f3a355..0000000
--- a/ksh-20120801-iso8859.patch
+++ /dev/null
@@ -1,74 +0,0 @@
-diff --git a/src/cmd/ksh93/sh/fcin.c b/src/cmd/ksh93/sh/fcin.c
-index ea6ea6b..08c1f2a 100644
---- a/src/cmd/ksh93/sh/fcin.c
-+++ b/src/cmd/ksh93/sh/fcin.c
-@@ -150,63 +150,19 @@ extern void fcrestore(Fcin_t *fp)
- _Fcin = *fp;
- }
-
--/* for testing purposes with small buffers */
--#if defined(IOBSIZE) && (IOBSIZE < 2*MB_LEN_MAX)
--# undef MB_LEN_MAX
--# define MB_LEN_MAX (IOBSIZE/2)
--#endif
--
--struct Extra
--{
-- unsigned char buff[2*MB_LEN_MAX];
-- unsigned char *next;
--};
--
- int _fcmbget(short *len)
- {
-- static struct Extra extra;
-- register int i, c, n;
-- if(_Fcin.fcleft)
-- {
-- if((c = mbsize(extra.next)) < 0)
-- c = 1;
-- if((_Fcin.fcleft -= c) <=0)
-- {
-- _Fcin.fcptr = (unsigned char*)fcfirst() - _Fcin.fcleft;
-- _Fcin.fcleft = 0;
-- }
-- *len = c;
-- if(c==1)
-- c = *extra.next++;
-- else if(c==0)
-- _Fcin.fcleft = 0;
-- else
-- c = mbchar(extra.next);
-- return(c);
-- }
-- switch(*len = mbsize(_Fcin.fcptr))
-+ register int c;
-+ switch (*len = mbsize(_Fcin.fcptr))
- {
-- case -1:
-- if(_Fcin._fcfile && (n=(_Fcin.fclast-_Fcin.fcptr)) < MB_LEN_MAX)
-- {
-- memcpy(extra.buff, _Fcin.fcptr, n);
-- _Fcin.fcptr = _Fcin.fclast;
-- for(i=n; i < MB_LEN_MAX+n; i++)
-- {
-- if((extra.buff[i] = fcgetc(c))==0)
-- break;
-- }
-- _Fcin.fcleft = n;
-- extra.next = extra.buff;
-- return(fcmbget(len));
-- }
-+ case -1:
- *len = 1;
- /* fall through */
-- case 0:
-- case 1:
-+ case 0:
-+ case 1:
- c=fcget();
- break;
-- default:
-+ default:
- c = mbchar(_Fcin.fcptr);
- }
- return(c);
diff --git a/ksh-20120801-jobwait-sigstop.patch b/ksh-20120801-jobwait-sigstop.patch
deleted file mode 100644
index 1749288..0000000
--- a/ksh-20120801-jobwait-sigstop.patch
+++ /dev/null
@@ -1,11 +0,0 @@
-diff --git a/src/cmd/ksh93/sh/jobs.c b/src/cmd/ksh93/sh/jobs.c
---- a/src/cmd/ksh93/sh/jobs.c
-+++ b/src/cmd/ksh93/sh/jobs.c
-@@ -1579,6 +1579,7 @@ int job_wait(register pid_t pid)
- if( pw->p_exit!=SIGTTIN && pw->p_exit!=SIGTTOU)
- break;
-
-+ tcsetpgrp(JOBTTY,pw->p_pgrp);
- killpg(pw->p_pgrp,SIGCONT);
- }
- else /* ignore stop when non-interactive */
diff --git a/ksh-20120801-kia.patch b/ksh-20120801-kia.patch
deleted file mode 100644
index 9b4b972..0000000
--- a/ksh-20120801-kia.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff --git a/src/cmd/ksh93/sh/parse.c b/src/cmd/ksh93/sh/parse.c
-index d139389..5a02af7 100644
---- a/src/cmd/ksh93/sh/parse.c
-+++ b/src/cmd/ksh93/sh/parse.c
-@@ -2032,6 +2032,7 @@ unsigned long kiaentity(Lex_t *lexp,const char *name,int len,int type,int first,
- else
- sfputr(stkp,name,0);
- }
-+ sfputc(stkp,'\0');
- np = nv_search(stakptr(offset),lexp->entity_tree,NV_ADD);
- stkseek(stkp,offset);
- np->nvalue.i = pkind;
diff --git a/ksh-20120801-kshmfix.patch b/ksh-20120801-kshmfix.patch
deleted file mode 100644
index cc68406..0000000
--- a/ksh-20120801-kshmfix.patch
+++ /dev/null
@@ -1,66 +0,0 @@
-diff -up ksh-20120801/src/cmd/ksh93/sh/main.c.monintoron ksh-20120801/src/cmd/ksh93/sh/main.c
---- ksh-20120801/src/cmd/ksh93/sh/main.c.monintoron 2013-05-31 10:15:02.738828102 +0200
-+++ ksh-20120801/src/cmd/ksh93/sh/main.c 2013-05-31 10:15:36.057095262 +0200
-@@ -406,10 +406,10 @@ static void exfile(register Shell_t *shp
- {
- buff.mode = SH_JMPEXIT;
- sh_onoption(SH_TRACKALL);
-- sh_offoption(SH_MONITOR);
- }
- sh_offstate(SH_INTERACTIVE);
-- sh_offstate(SH_MONITOR);
-+ if(sh_isoption(SH_MONITOR))
-+ sh_onstate(SH_MONITOR);
- sh_offstate(SH_HISTORY);
- sh_offoption(SH_HISTORY);
- }
-diff -up ksh-20120801/src/cmd/ksh93/sh/jobs.c.orig ksh-20120801/src/cmd/ksh93/sh/jobs.c
---- ksh-20120801/src/cmd/ksh93/sh/jobs.c.orig 2013-05-31 10:12:28.358590452 +0200
-+++ ksh-20120801/src/cmd/ksh93/sh/jobs.c 2013-05-31 10:16:51.203697890 +0200
-@@ -548,7 +548,7 @@ int job_reap(register int sig)
- {
- px = job_byjid((int)pw->p_job);
- for(; px && (px->p_flag&P_DONE); px=px->p_nxtproc);
-- if(!px)
-+ if(!px && sh_isoption(SH_INTERACTIVE))
- tcsetpgrp(JOBTTY,job.mypid);
- }
- #ifndef SHOPT_BGX
-@@ -842,10 +842,11 @@ static void job_set(register struct proc
-
- static void job_reset(register struct process *pw)
- {
-+ Shell_t *shp = pw->p_shp;
- /* save the terminal state for current job */
- #ifdef SIGTSTP
- job_fgrp(pw,tcgetpgrp(job.fd));
-- if(tcsetpgrp(job.fd,job.mypid) !=0)
-+ if(sh_isoption(SH_INTERACTIVE) && tcsetpgrp(job.fd,job.mypid) !=0)
- return;
- #endif /* SIGTSTP */
- /* force the following tty_get() to do a tcgetattr() unless fg */
-diff -up ksh-20120801/src/cmd/ksh93/sh/xec.c.orig ksh-20120801/src/cmd/ksh93/sh/xec.c
---- ksh-20120801/src/cmd/ksh93/sh/xec.c.orig 2013-05-31 10:12:27.000000000 +0200
-+++ ksh-20120801/src/cmd/ksh93/sh/xec.c 2013-05-31 10:18:14.650367185 +0200
-@@ -2201,7 +2201,7 @@ int sh_exec(register const Shnode_t *t,
- }
- shp->exitval = n;
- #ifdef SIGTSTP
-- if(!pipejob && sh_isstate(SH_MONITOR))
-+ if(!pipejob && sh_isstate(SH_MONITOR) && sh_isoption(SH_INTERACTIVE))
- tcsetpgrp(JOBTTY,shp->gd->pid);
- #endif /*SIGTSTP */
- job.curpgid = savepgid;
-diff -up ksh-20120801/src/cmd/ksh93/edit/edit.c.kshmfix ksh-20120801/src/cmd/ksh93/edit/edit.c
---- ksh-20120801/src/cmd/ksh93/edit/edit.c.kshmfix 2013-09-23 10:46:57.007256192 +0200
-+++ ksh-20120801/src/cmd/ksh93/edit/edit.c 2013-09-23 10:47:43.988937610 +0200
-@@ -1050,7 +1050,7 @@ int ed_getchar(register Edit_t *ep,int m
- {
- if(mode<=0 && -c == ep->e_intr)
- {
-- sh_fault(SIGINT);
-+ killpg(getpgrp(),SIGINT);
- siglongjmp(ep->e_env, UINTR);
- }
- if(mode<=0 && ep->sh->st.trap[SH_KEYTRAP])
-
diff --git a/ksh-20120801-lexfix.patch b/ksh-20120801-lexfix.patch
deleted file mode 100644
index 9150da8..0000000
--- a/ksh-20120801-lexfix.patch
+++ /dev/null
@@ -1,56 +0,0 @@
-diff -up ksh-20120801/src/cmd/ksh93/edit/edit.c.trajfiks ksh-20120801/src/cmd/ksh93/edit/edit.c
---- ksh-20120801/src/cmd/ksh93/edit/edit.c.trajfiks 2012-08-02 00:18:19.000000000 +0200
-+++ ksh-20120801/src/cmd/ksh93/edit/edit.c 2014-02-06 12:12:11.570942651 +0100
-@@ -53,6 +53,7 @@
-
- static char CURSOR_UP[20] = { ESC, '[', 'A', 0 };
- static char KILL_LINE[20] = { ESC, '[', 'J', 0 };
-+static char *savelex;
-
-
-
-@@ -232,6 +233,8 @@ int tty_set(int fd, int action, struct t
- void tty_cooked(register int fd)
- {
- register Edit_t *ep = (Edit_t*)(shgd->ed_context);
-+ if(ep->sh->st.trap[SH_KEYTRAP] && savelex)
-+ memcpy(ep->sh->lex_context,savelex,ep->sh->lexsize);
- ep->e_keytrap = 0;
- if(ep->e_raw==0)
- return;
-@@ -783,6 +786,13 @@ void ed_setup(register Edit_t *ep, int f
- ep->e_lbuf[n] = *pp++;
- ep->e_default = 0;
- }
-+ if(ep->sh->st.trap[SH_KEYTRAP])
-+ {
-+ if(!savelex)
-+ savelex = (char*)malloc(shp->lexsize);
-+ if(savelex)
-+ memcpy(savelex, ep->sh->lex_context, ep->sh->lexsize);
-+ }
- }
-
- static void ed_putstring(register Edit_t *ep, const char *str)
-diff -up ksh-20120801/src/cmd/ksh93/include/defs.h.trajfiks ksh-20120801/src/cmd/ksh93/include/defs.h
---- ksh-20120801/src/cmd/ksh93/include/defs.h.trajfiks 2014-02-06 12:18:13.149091836 +0100
-+++ ksh-20120801/src/cmd/ksh93/include/defs.h 2014-02-06 12:18:13.175091784 +0100
-@@ -224,6 +224,7 @@ struct shared
- int xargexit; \
- int nenv; \
- mode_t mask; \
-+ int lexsize; \
- Env_t *env; \
- void *init_context; \
- void *mac_context; \
-diff -up ksh-20120801/src/cmd/ksh93/sh/lex.c.trajfiks ksh-20120801/src/cmd/ksh93/sh/lex.c
---- ksh-20120801/src/cmd/ksh93/sh/lex.c.trajfiks 2014-02-06 12:19:13.587950320 +0100
-+++ ksh-20120801/src/cmd/ksh93/sh/lex.c 2014-02-06 12:19:13.623950219 +0100
-@@ -268,6 +268,7 @@ Lex_t *sh_lexopen(Lex_t *lp, Shell_t *sp
- {
- lp = (Lex_t*)newof(0,Lex_t,1,0);
- lp->sh = sp;
-+ sp->lexsize = sizeof(Lex_t);
- }
- fcnotify(lex_advance,lp);
- lp->lex.intest = lp->lex.incase = lp->lex.skipword = lp->lexd.warn = 0;
diff --git a/ksh-20120801-locking.patch b/ksh-20120801-locking.patch
deleted file mode 100644
index 189d254..0000000
--- a/ksh-20120801-locking.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-diff -up ksh-20120801/src/cmd/ksh93/include/jobs.h.locking ksh-20120801/src/cmd/ksh93/include/jobs.h
---- ksh-20120801/src/cmd/ksh93/include/jobs.h.locking 2014-06-27 15:51:07.144923719 +0200
-+++ ksh-20120801/src/cmd/ksh93/include/jobs.h 2014-06-27 15:52:56.463272276 +0200
-@@ -149,15 +149,18 @@ extern struct jobs job;
- #define vmbusy() 0
- #endif
-
--#define job_lock() (job.in_critical++)
-+#define asoincint(p) __sync_fetch_and_add(p,1)
-+#define asodecint(p) __sync_fetch_and_sub(p,1)
-+
-+#define job_lock() asoincint(&job.in_critical)
- #define job_unlock() \
- do { \
- int sig; \
-- if (!--job.in_critical && (sig = job.savesig)) \
-+ if (asodecint(&job.in_critical)==1 && (sig = job.savesig)) \
- { \
-- if (!job.in_critical++ && !vmbusy()) \
-+ if (!asoincint(&job.in_critical) && !vmbusy()) \
- job_reap(sig); \
-- job.in_critical--; \
-+ asodecint(&job.in_critical); \
- } \
- } while(0)
-
diff --git a/ksh-20120801-macro.patch b/ksh-20120801-macro.patch
deleted file mode 100644
index 004a5eb..0000000
--- a/ksh-20120801-macro.patch
+++ /dev/null
@@ -1,178 +0,0 @@
-diff -up ksh-20120801/src/cmd/ksh93/include/io.h.macro ksh-20120801/src/cmd/ksh93/include/io.h
---- ksh-20120801/src/cmd/ksh93/include/io.h.macro 2012-07-18 16:12:38.000000000 +0200
-+++ ksh-20120801/src/cmd/ksh93/include/io.h 2013-07-04 16:14:05.809595966 +0200
-@@ -81,6 +81,7 @@ extern void sh_iosave(Shell_t *, int,in
- extern int sh_iovalidfd(Shell_t*, int);
- extern int sh_inuse(Shell_t*, int);
- extern void sh_iounsave(Shell_t*);
-+extern void iounpipe(Shell_t*);
- extern int sh_chkopen(const char*);
- extern int sh_ioaccess(int,int);
- extern int sh_devtofd(const char*);
-diff -up ksh-20120801/src/cmd/ksh93/sh/subshell.c.macro ksh-20120801/src/cmd/ksh93/sh/subshell.c
---- ksh-20120801/src/cmd/ksh93/sh/subshell.c.macro 2013-07-04 16:14:05.783595751 +0200
-+++ ksh-20120801/src/cmd/ksh93/sh/subshell.c 2013-07-04 16:15:46.673432991 +0200
-@@ -171,7 +171,7 @@ void sh_subfork(void)
- {
- register struct subshell *sp = subshell_data;
- Shell_t *shp = sp->shp;
-- int curenv = shp->curenv;
-+ int curenv = shp->curenv, comsub=shp->comsub;
- pid_t pid;
- char *trap = shp->st.trapcom[0];
- if(trap)
-@@ -204,7 +204,7 @@ void sh_subfork(void)
- shp->comsub = 0;
- SH_SUBSHELLNOD->nvalue.s = 0;
- sp->subpid=0;
-- shp->st.trapcom[0] = trap;
-+ shp->st.trapcom[0] = (comsub==2?NULL:trap);
- shp->savesig = 0;
- }
- }
-@@ -743,7 +743,6 @@ Sfio_t *sh_subshell(Shell_t *shp,Shnode_
- fchdir(shp->pwdfd);
- }
- shp->subshare = sp->subshare;
-- shp->comsub = sp->comsub;
- shp->subdup = sp->subdup;
- #if SHOPT_COSHELL
- shp->coshell = sp->coshell;
-@@ -773,7 +772,12 @@ Sfio_t *sh_subshell(Shell_t *shp,Shnode_
- if(nsig>0)
- kill(getpid(),nsig);
- if(sp->subpid)
-+ {
- job_wait(sp->subpid);
-+ if(comsub>1)
-+ iounpipe(shp);
-+ }
-+ shp->comsub = sp->comsub;
- if(comsub && iop && sp->pipefd<0)
- sfseek(iop,(off_t)0,SEEK_SET);
- if(shp->trapnote)
-diff -up ksh-20120801/src/cmd/ksh93/sh/xec.c.macro ksh-20120801/src/cmd/ksh93/sh/xec.c
---- ksh-20120801/src/cmd/ksh93/sh/xec.c.macro 2013-07-04 16:14:05.800595891 +0200
-+++ ksh-20120801/src/cmd/ksh93/sh/xec.c 2013-07-04 16:14:05.810595975 +0200
-@@ -102,11 +102,11 @@ struct funenv
- * temp file.
- */
- static int subpipe[3],subdup,tsetio,usepipe;
--static void iounpipe(Shell_t*);
-+void iounpipe(Shell_t*);
-
--static int iousepipe(Shell_t *shp)
-+int iousepipe(Shell_t *shp)
- {
-- int i;
-+ int fd=sffileno(sfstdout),i,err=errno;
- if(usepipe)
- {
- usepipe++;
-@@ -115,13 +115,18 @@ static int iousepipe(Shell_t *shp)
- if(sh_rpipe(subpipe) < 0)
- return(0);
- usepipe++;
-- fcntl(subpipe[0],F_SETFD,FD_CLOEXEC);
-- subpipe[2] = sh_fcntl(1,F_DUPFD,10);
-- fcntl(subpipe[2],F_SETFD,FD_CLOEXEC);
-+ if(shp->comsub!=1)
-+ {
-+ subpipe[2] = sh_fcntl(subpipe[1],F_DUPFD,10);
-+ sh_close(subpipe[1]);
-+ return(1);
-+ }
-+ subpipe[2] = sh_fcntl(fd,F_dupfd_cloexec,10);
- shp->fdstatus[subpipe[2]] = shp->fdstatus[1];
-- close(1);
-- fcntl(subpipe[1],F_DUPFD,1);
-- shp->fdstatus[1] = shp->fdstatus[subpipe[1]];
-+ while(close(fd)<0 && errno==EINTR)
-+ errno = err;
-+ fcntl(subpipe[1],F_DUPFD,fd);
-+ shp->fdstatus[1] = shp->fdstatus[subpipe[1]]&~IOCLEX;
- sh_close(subpipe[1]);
- if(subdup=shp->subdup) for(i=0; i < 10; i++)
- {
-@@ -135,14 +140,23 @@ static int iousepipe(Shell_t *shp)
- return(1);
- }
-
--static void iounpipe(Shell_t *shp)
-+void iounpipe(Shell_t *shp)
- {
-- int n;
-+ int fd=sffileno(sfstdout),n,err=errno;
- char buff[SF_BUFSIZE];
-- close(1);
-- fcntl(subpipe[2], F_DUPFD, 1);
-- shp->fdstatus[1] = shp->fdstatus[subpipe[2]];
-+ if(!usepipe)
-+ return;
- --usepipe;
-+ if(shp->comsub>1)
-+ {
-+ sh_close(subpipe[2]);
-+ while(read(subpipe[0],buff,sizeof(buff))>0);
-+ goto done;
-+ }
-+ while(close(fd)<0 && errno==EINTR)
-+ errno = err;
-+ fcntl(subpipe[2], F_DUPFD, fd);
-+ shp->fdstatus[1] = shp->fdstatus[subpipe[2]];
- if(subdup) for(n=0; n < 10; n++)
- {
- if(subdup&(1<<n))
-@@ -174,6 +188,7 @@ static void iounpipe(Shell_t *shp)
- else if(errno!=EINTR)
- break;
- }
-+done:
- sh_close(subpipe[0]);
- subpipe[0] = -1;
- tsetio = 0;
-@@ -725,7 +740,7 @@ static void unset_instance(Namval_t *nq,
- }
-
- #if SHOPT_COSHELL
--uintmax_t coused;
-+static uintmax_t coused;
- /*
- * print out function definition
- */
-@@ -1619,10 +1634,14 @@ int sh_exec(register const Shnode_t *t,
- if(shp->subshell)
- {
- sh_subtmpfile(shp);
-- if(shp->comsub==1 && !(shp->fdstatus[1]&IONOSEEK))
-- unpipe=iousepipe(shp);
- if((type&(FAMP|TFORK))==(FAMP|TFORK))
-- sh_subfork();
-+ {
-+ if(shp->comsub && !(shp->fdstatus[1]&IONOSEEK))
-+ {
-+ unpipe = iousepipe(shp);
-+ sh_subfork();
-+ }
-+ }
- }
- no_fork = !ntflag && !(type&(FAMP|FPOU)) && !shp->subshell &&
- !(shp->st.trapcom[SIGINT] && *shp->st.trapcom[SIGINT]) &&
-@@ -3495,8 +3514,7 @@ static void sh_funct(Shell_t *shp,Namval
- struct funenv fun;
- char *fname = nv_getval(SH_FUNNAMENOD);
- struct Level *lp =(struct Level*)(SH_LEVELNOD->nvfun);
-- int level, pipepid=shp->pipepid, comsub=shp->comsub;
-- shp->comsub = 0;
-+ int level, pipepid=shp->pipepid;
- shp->pipepid = 0;
- sh_stats(STAT_FUNCT);
- if(!lp->hdr.disc)
-@@ -3539,7 +3557,6 @@ static void sh_funct(Shell_t *shp,Namval
- lp->maxlevel = level;
- SH_LEVELNOD->nvalue.s = lp->maxlevel;
- shp->last_root = nv_dict(DOTSHNOD);
-- shp->comsub = comsub;
- #if 0
- nv_putval(SH_FUNNAMENOD,shp->st.funname,NV_NOFREE);
- #else
diff --git a/ksh-20120801-manfix4.patch b/ksh-20120801-manfix4.patch
deleted file mode 100644
index 6355445..0000000
--- a/ksh-20120801-manfix4.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -up ksh-20120801/src/cmd/ksh93/sh.1.manfix4 ksh-20120801/src/cmd/ksh93/sh.1
---- ksh-20120801/src/cmd/ksh93/sh.1.manfix4 2014-05-22 12:04:51.593750721 +0200
-+++ ksh-20120801/src/cmd/ksh93/sh.1 2014-05-22 12:05:32.561556452 +0200
-@@ -4147,7 +4147,7 @@ command are ignored if the command is fo
- .B &
- and the
- .B monitor
--option is not active.
-+option is active.
- Otherwise, signals have the values
- inherited by the shell from its parent
- (but see also
diff --git a/ksh-20120801-mb-after-argvar.patch b/ksh-20120801-mb-after-argvar.patch
deleted file mode 100644
index 1b71a57..0000000
--- a/ksh-20120801-mb-after-argvar.patch
+++ /dev/null
@@ -1,15 +0,0 @@
-diff -up ksh-20120801/src/cmd/ksh93/sh/macro.c.orig ksh-20120801/src/cmd/ksh93/sh/macro.c
---- ksh-20120801/src/cmd/ksh93/sh/macro.c.orig 2015-08-24 14:29:58.602967855 -0300
-+++ ksh-20120801/src/cmd/ksh93/sh/macro.c 2015-08-24 14:31:13.682850008 -0300
-@@ -1479,7 +1479,10 @@ retry1:
- default:
- goto nosub;
- }
-- c = fcmbget(&LEN);
-+ if(type)
-+ c = fcmbget(&LEN);
-+ else
-+ c = fcget();
- if(type>M_TREE)
- {
- if(c!=RBRACE)
diff --git a/ksh-20120801-memlik.patch b/ksh-20120801-memlik.patch
deleted file mode 100644
index 31f1eb9..0000000
--- a/ksh-20120801-memlik.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-diff -up ksh-20120801/src/cmd/ksh93/sh/array.c.memlik ksh-20120801/src/cmd/ksh93/sh/array.c
---- ksh-20120801/src/cmd/ksh93/sh/array.c.memlik 2012-06-07 00:00:42.000000000 +0200
-+++ ksh-20120801/src/cmd/ksh93/sh/array.c 2013-06-11 16:52:47.557123973 +0200
-@@ -1701,7 +1701,11 @@ void *nv_associative(register Namval_t *
- ap->header.scope = 0;
- }
- else
-- dtclose(ap->header.table);
-+ {
-+ if((ap->header.nelem&ARRAY_MASK)==0 && (ap->cur=nv_search("0",ap->header.table,0)))
-+ nv_associative(np,(char*)0,NV_ADELETE);
-+ dtclose(ap->header.table);
-+ }
- return((void*)ap);
- case NV_ANEXT:
- if(!ap->pos)
-diff -up ksh-20120801/src/cmd/ksh93/sh/name.c.memlik ksh-20120801/src/cmd/ksh93/sh/name.c
---- ksh-20120801/src/cmd/ksh93/sh/name.c.memlik 2012-07-23 18:21:57.000000000 +0200
-+++ ksh-20120801/src/cmd/ksh93/sh/name.c 2013-06-11 16:19:41.036648218 +0200
-@@ -2465,6 +2465,8 @@ static void table_unset(Shell_t *shp, re
- }
- }
- npnext = (Namval_t*)dtnext(root,np);
-+ if(nv_arrayptr(np))
-+ nv_putsub(np,NIL(char*),ARRAY_SCAN);
- _nv_unset(np,flags);
- nv_delete(np,root,0);
- }
-@@ -3326,7 +3328,7 @@ int nv_rename(register Namval_t *np, int
- shp->last_root = last_root;
- if(flags&NV_MOVE)
- {
-- if(arraynp && !nv_isattr(np,NV_MINIMAL) && (mp=(Namval_t*)np->nvenv) && (ap=nv_arrayptr(mp)))
-+ if(arraynp && !nv_isattr(np,NV_MINIMAL) && (mp=(Namval_t*)np->nvenv) && (ap=nv_arrayptr(mp)) && !ap->fun)
- ap->nelem++;
- }
- if((nv_arrayptr(nr) && !arraynr) || nv_isvtree(nr))
diff --git a/ksh-20120801-memlik3.patch b/ksh-20120801-memlik3.patch
deleted file mode 100644
index 9df57d2..0000000
--- a/ksh-20120801-memlik3.patch
+++ /dev/null
@@ -1,76 +0,0 @@
-diff -up ksh-20120801/src/cmd/ksh93/include/name.h.memlik3 ksh-20120801/src/cmd/ksh93/include/name.h
---- ksh-20120801/src/cmd/ksh93/include/name.h.memlik3 2012-05-10 18:33:41.000000000 +0200
-+++ ksh-20120801/src/cmd/ksh93/include/name.h 2014-01-22 14:14:32.774483776 +0100
-@@ -215,7 +215,7 @@ extern Namval_t *nv_mount(Namval_t*, co
- extern Namval_t *nv_arraychild(Namval_t*, Namval_t*, int);
- extern int nv_compare(Dt_t*, Void_t*, Void_t*, Dtdisc_t*);
- extern void nv_outnode(Namval_t*,Sfio_t*, int, int);
--extern int nv_subsaved(Namval_t*);
-+extern int nv_subsaved(Namval_t*,int);
- extern void nv_typename(Namval_t*, Sfio_t*);
- extern void nv_newtype(Namval_t*);
- extern int nv_istable(Namval_t*);
-diff -up ksh-20120801/src/cmd/ksh93/sh/name.c.memlik3 ksh-20120801/src/cmd/ksh93/sh/name.c
---- ksh-20120801/src/cmd/ksh93/sh/name.c.memlik3 2014-01-22 14:14:32.751483987 +0100
-+++ ksh-20120801/src/cmd/ksh93/sh/name.c 2014-01-22 14:14:32.775483767 +0100
-@@ -1297,7 +1297,7 @@ void nv_delete(Namval_t* np, Dt_t *root,
- {
- if(dtdelete(root,np))
- {
-- if(!(flags&NV_NOFREE) && ((flags&NV_FUNCTION) || !nv_subsaved(np)))
-+ if(!(flags&NV_NOFREE) && ((flags&NV_FUNCTION) || !nv_subsaved(np,flags&NV_TABLE)))
- free((void*)np);
- }
- #if 0
-@@ -2461,14 +2461,14 @@ static void table_unset(Shell_t *shp, re
- {
- _nv_unset(nq,flags);
- npnext = (Namval_t*)dtnext(root,nq);
-- nv_delete(nq,root,0);
-+ nv_delete(nq,root,NV_TABLE);
- }
- }
- npnext = (Namval_t*)dtnext(root,np);
- if(nv_arrayptr(np))
- nv_putsub(np,NIL(char*),ARRAY_SCAN);
- _nv_unset(np,flags);
-- nv_delete(np,root,0);
-+ nv_delete(np,root,NV_TABLE);
- }
- }
-
-diff -up ksh-20120801/src/cmd/ksh93/sh/subshell.c.memlik3 ksh-20120801/src/cmd/ksh93/sh/subshell.c
---- ksh-20120801/src/cmd/ksh93/sh/subshell.c.memlik3 2014-01-22 14:14:32.768483831 +0100
-+++ ksh-20120801/src/cmd/ksh93/sh/subshell.c 2014-01-22 14:20:50.810236676 +0100
-@@ -218,16 +218,28 @@ void sh_subfork(void)
- }
- }
-
--int nv_subsaved(register Namval_t *np)
-+int nv_subsaved(register Namval_t *np,int table)
- {
- register struct subshell *sp;
-- register struct Link *lp;
-+ register struct Link *lp, *lpprev;
- for(sp = (struct subshell*)subshell_data; sp; sp=sp->prev)
- {
-- for(lp=sp->svar; lp; lp = lp->next)
-+ lpprev = 0;
-+ for(lp=sp->svar; lp; lpprev=lp, lp=lp->next)
- {
- if(lp->node==np)
-+ {
-+ if(table&NV_TABLE)
-+ {
-+ if(lpprev)
-+ lpprev->next = lp->next;
-+ else
-+ sp->svar = lp->next;
-+ free((void*)np);
-+ free((void*)lp);
-+ }
- return(1);
-+ }
- }
- }
- return(0);
diff --git a/ksh-20120801-mlikfiks.patch b/ksh-20120801-mlikfiks.patch
deleted file mode 100644
index fbf016a..0000000
--- a/ksh-20120801-mlikfiks.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-diff -up ksh-20120801/src/cmd/ksh93/sh/lex.c.mlikfiks ksh-20120801/src/cmd/ksh93/sh/lex.c
---- ksh-20120801/src/cmd/ksh93/sh/lex.c.mlikfiks 2013-07-22 12:45:30.923170264 +0200
-+++ ksh-20120801/src/cmd/ksh93/sh/lex.c 2013-07-22 12:46:25.235556905 +0200
-@@ -2465,7 +2465,7 @@ static int alias_exceptf(Sfio_t *iop,int
- if(dp!=handle)
- sfdisc(iop,dp);
- }
-- else if(type==SF_FINAL)
-+ else if(type==SF_DPOP || type==SF_FINAL)
- free((void*)ap);
- goto done;
- }
-diff -up ksh-20120801/src/cmd/ksh93/sh/path.c.mlikfiks ksh-20120801/src/cmd/ksh93/sh/path.c
---- ksh-20120801/src/cmd/ksh93/sh/path.c.mlikfiks 2013-07-22 12:47:23.149990016 +0200
-+++ ksh-20120801/src/cmd/ksh93/sh/path.c 2013-07-22 12:48:33.363283877 +0200
-@@ -613,6 +613,7 @@ static void funload(Shell_t *shp,int fno
- }
- while((rp=dtnext(shp->fpathdict,rp)) && strcmp(pname,rp->fname)==0);
- sh_close(fno);
-+ free((void*)pname);
- return;
- }
- sh_onstate(SH_NOLOG);
-diff -up ksh-20120801/src/cmd/ksh93/sh/macro.c.aliasfix ksh-20120801/src/cmd/ksh93/sh/macro.c
---- ksh-20120801/src/cmd/ksh93/sh/macro.c.aliasfix 2013-07-29 15:03:45.841680475 +0200
-+++ ksh-20120801/src/cmd/ksh93/sh/macro.c 2013-07-29 15:04:23.871336821 +0200
-@@ -2085,6 +2085,7 @@ static void comsubst(Mac_t *mp,register
- }
- sfputc(stkp,c);
- }
-+ sfputc(stkp,' ');
- c = stktell(stkp);
- str=stkfreeze(stkp,1);
- /* disable verbose and don't save in history file */
diff --git a/ksh-20120801-mtty.patch b/ksh-20120801-mtty.patch
deleted file mode 100644
index d992a88..0000000
--- a/ksh-20120801-mtty.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -up ksh-20120801/src/cmd/ksh93/sh/xec.c.mtty ksh-20120801/src/cmd/ksh93/sh/xec.c
---- ksh-20120801/src/cmd/ksh93/sh/xec.c.mtty 2014-01-22 16:52:06.441608750 +0100
-+++ ksh-20120801/src/cmd/ksh93/sh/xec.c 2014-01-22 16:52:06.485608361 +0100
-@@ -3163,7 +3169,7 @@ pid_t _sh_fork(Shell_t *shp,register pid
- * completed. Make parent the job group id.
- */
- if(postid==0)
-- job.curpgid = parent;
-+ job.curpgid = job.jobcontrol?parent:getpid();
- if(job.jobcontrol || (flags&FAMP))
- {
- if(setpgid(parent,job.curpgid)<0 && errno==EPERM)
diff --git a/ksh-20120801-noexeccdfix.patch b/ksh-20120801-noexeccdfix.patch
deleted file mode 100644
index 47128e0..0000000
--- a/ksh-20120801-noexeccdfix.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-From b8260293a8ed7849a358291faae7b58f4a05dcc9 Mon Sep 17 00:00:00 2001
-From: Kamil Dudka <kdudka(a)redhat.com>
-Date: Mon, 10 Nov 2014 18:23:34 +0100
-Subject: [PATCH] Resolves: #1160923 - handle failure of fchdir()
-
-... and chdir()
----
- src/cmd/ksh93/bltins/cd_pwd.c | 6 ++++--
- 1 file changed, 4 insertions(+), 2 deletions(-)
-
-diff --git a/src/cmd/ksh93/bltins/cd_pwd.c b/src/cmd/ksh93/bltins/cd_pwd.c
-index a972da6..c20959c 100644
---- a/src/cmd/ksh93/bltins/cd_pwd.c
-+++ b/src/cmd/ksh93/bltins/cd_pwd.c
-@@ -329,18 +329,20 @@ int b_cd(int argc, char *argv[],Shbltin_t *context)
- if(newdirfd >=0)
- {
- /* chdir for directories on HSM/tapeworms may take minutes */
-- if(fchdir(newdirfd) >= 0)
-+ if((rval=fchdir(newdirfd)) >= 0)
- {
- if(shp->pwdfd >= 0)
- sh_close(shp->pwdfd);
- shp->pwdfd=newdirfd;
- goto success;
- }
-+ else
-+ sh_close(newdirfd);
- }
- #ifndef O_SEARCH
- else
- {
-- if(chdir(dir) >=0)
-+ if((rval=chdir(dir)) >=0)
- {
- if(shp->pwdfd >= 0)
- {
---
-2.1.0
-
diff --git a/ksh-20120801-nohupfork.patch b/ksh-20120801-nohupfork.patch
deleted file mode 100644
index 20cdeb9..0000000
--- a/ksh-20120801-nohupfork.patch
+++ /dev/null
@@ -1,11 +0,0 @@
-diff -up ksh-20120801/src/cmd/ksh93/sh/xec.c.nohupfork ksh-20120801/src/cmd/ksh93/sh/xec.c
---- ksh-20120801/src/cmd/ksh93/sh/xec.c.nohupfork 2015-08-27 14:25:38.925378019 +0200
-+++ ksh-20120801/src/cmd/ksh93/sh/xec.c 2015-08-27 14:30:42.267058087 +0200
-@@ -2067,6 +2067,7 @@ int sh_exec(register const Shnode_t *t,
- {
- sh_exec(t->par.partre,flags);
- shp->st.trapcom[0]=0;
-+ sh_offoption(SH_INTERACTIVE);
- sh_done(shp,0);
- }
- }
diff --git a/ksh-20120801-nomulti.patch b/ksh-20120801-nomulti.patch
deleted file mode 100644
index 5d7e7a4..0000000
--- a/ksh-20120801-nomulti.patch
+++ /dev/null
@@ -1,11 +0,0 @@
-diff -up ksh-20120801/src/cmd/ksh93/sh/init.c.nomulti ksh-20120801/src/cmd/ksh93/sh/init.c
---- ksh-20120801/src/cmd/ksh93/sh/init.c.nomulti 2013-10-08 20:46:46.202471042 +0200
-+++ ksh-20120801/src/cmd/ksh93/sh/init.c 2013-10-08 20:46:57.912331483 +0200
-@@ -1446,7 +1446,6 @@ Shell_t *sh_init(register int argc,regis
- #endif /* SHOPT_TIMEOUT */
- /* initialize jobs table */
- job_clear();
-- sh_onoption(SH_MULTILINE);
- if(argc>0)
- {
- /* check for restricted shell */
diff --git a/ksh-20120801-nv_open-memcmp.patch b/ksh-20120801-nv_open-memcmp.patch
deleted file mode 100644
index 93b7e15..0000000
--- a/ksh-20120801-nv_open-memcmp.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff --git a/src/cmd/ksh93/sh/name.c b/src/cmd/ksh93/sh/name.c
---- a/src/cmd/ksh93/sh/name.c
-+++ b/src/cmd/ksh93/sh/name.c
-@@ -1425,7 +1425,7 @@ Namval_t *nv_open(const char *name, Dt_t *root, int flags)
- {
- if(xp->root!=root)
- continue;
-- if(*name==*xp->name && xp->namespace==shp->namespace && (flags&(NV_ARRAY|NV_NOSCOPE))==xp->flags && memcmp(xp->name,name,xp->len)==0 && (name[xp->len]==0 || name[xp->len]=='=' || name[xp->len]=='+'))
-+ if(*name==*xp->name && xp->namespace==shp->namespace && (flags&(NV_ARRAY|NV_NOSCOPE))==xp->flags && strncmp(xp->name,name,xp->len)==0 && (name[xp->len]==0 || name[xp->len]=='=' || name[xp->len]=='+'))
- {
- sh_stats(STAT_NVHITS);
- np = xp->np;
diff --git a/ksh-20120801-oldenvinit.patch b/ksh-20120801-oldenvinit.patch
deleted file mode 100644
index 8ee0863..0000000
--- a/ksh-20120801-oldenvinit.patch
+++ /dev/null
@@ -1,95 +0,0 @@
-diff -up ksh-20120801/src/cmd/ksh93/sh/init.c.fixset ksh-20120801/src/cmd/ksh93/sh/init.c
---- ksh-20120801/src/cmd/ksh93/sh/init.c.fixset 2014-11-03 15:45:36.510997271 +0100
-+++ ksh-20120801/src/cmd/ksh93/sh/init.c 2014-11-03 16:20:44.398917280 +0100
-@@ -2003,8 +2003,91 @@ static Dt_t *inittree(Shell_t *shp,const
- * skip over items that are not name-value pairs
- */
-
-+
- static void env_init(Shell_t *shp)
- {
-+ register char *cp;
-+ register Namval_t *np;
-+ register char **ep=environ;
-+ register char *next=0;
-+#ifdef _ENV_H
-+ shp->env = env_open(environ,3);
-+ env_delete(shp->env,"_");
-+#endif
-+ if(ep)
-+ {
-+ while(cp= *ep++)
-+ {
-+ if(*cp=='A' && cp[1]=='_' && cp[2]=='_' && cp[3]=='z' && cp[4]=='=')
-+ next = cp+4;
-+ else if(np=nv_open(cp,shp->var_tree,(NV_EXPORT|NV_IDENT|NV_ASSIGN|NV_NOFAIL)))
-+ {
-+ nv_onattr(np,NV_IMPORT);
-+ np->nvenv = cp;
-+ nv_close(np);
-+ }
-+ else /* swap with front */
-+ {
-+ ep[-1] = environ[shp->nenv];
-+ environ[shp->nenv++] = cp;
-+ }
-+ }
-+ while(cp=next)
-+ {
-+ if(next = strchr(++cp,'='))
-+ *next = 0;
-+ np = nv_search(cp+2,shp->var_tree,NV_ADD);
-+ if(np!=SHLVL && nv_isattr(np,NV_IMPORT|NV_EXPORT))
-+ {
-+ int flag = *(unsigned char*)cp-' ';
-+ int size = *(unsigned char*)(cp+1)-' ';
-+ if((flag&NV_INTEGER) && size==0)
-+ {
-+ /* check for floating*/
-+ char *ep,*val = nv_getval(np);
-+ strtol(val,&ep,10);
-+ if(*ep=='.' || *ep=='e' || *ep=='E')
-+ {
-+ char *lp;
-+ flag |= NV_DOUBLE;
-+ if(*ep=='.')
-+ {
-+ strtol(ep+1,&lp,10);
-+ if(*lp)
-+ ep = lp;
-+ }
-+ if(*ep && *ep!='.')
-+ {
-+ flag |= NV_EXPNOTE;
-+ size = ep-val;
-+ }
-+ else
-+ size = strlen(ep);
-+ size--;
-+ }
-+ }
-+ nv_newattr(np,flag|NV_IMPORT|NV_EXPORT,size);
-+ }
-+ else
-+ cp += 2;
-+ }
-+ }
-+#ifdef _ENV_H
-+ env_delete(shp->env,e_envmarker);
-+#endif
-+ if(nv_isnull(PWDNOD) || nv_isattr(PWDNOD,NV_TAGGED))
-+ {
-+ nv_offattr(PWDNOD,NV_TAGGED);
-+ path_pwd(shp,0);
-+ }
-+ if((cp = nv_getval(SHELLNOD)) && (sh_type(cp)&SH_TYPE_RESTRICTED))
-+ sh_onoption(SH_RESTRICTED); /* restricted shell */
-+ return;
-+}
-+
-+
-+static void env_init_backup(Shell_t *shp)
-+{
- register char *cp;
- register Namval_t *np,*mp;
- register char **ep=environ;
diff --git a/ksh-20120801-parserfix.patch b/ksh-20120801-parserfix.patch
deleted file mode 100644
index 1dc7695..0000000
--- a/ksh-20120801-parserfix.patch
+++ /dev/null
@@ -1,26 +0,0 @@
---- ksh_20120801/src/cmd/ksh93/sh/lex.c 2012-06-12 21:05:18.000000000 +0200
-+++ ksh_20120801/src/cmd/ksh93/sh/lex.c 2015-08-18 17:42:06.138076565 +0200
-@@ -1603,7 +1603,14 @@ static int comsub(register Lex_t *lp, in
- if(n==4)
- break;
- if(sh_lexstates[ST_NAME][c])
-+ {
-+ if(c==' ' || c=='\t')
-+ {
-+ n = 0;
-+ continue;
-+ }
- goto skip;
-+ }
- word[n++] = c;
- }
- if(sh_lexstates[ST_NAME][c]==S_BREAK)
---- ksh_20120801/src/cmd/ksh93/tests/subshell.sh 2012-07-25 23:40:29.000000000 +0200
-+++ ksh_20120801/src/cmd/ksh93/tests/subshell.sh 2015-08-18 17:42:06.143076553 +0200
-@@ -617,4 +617,6 @@ do if [[ -e $f ]]
- fi
- done
-
-+$SHELL > /dev/null -c 'echo $(for x in whatever; do case y in *) true;; esac; done)' || err_exit 'syntax error with case in command substitution'
-+
- exit $((Errors<125?Errors:125))
diff --git a/ksh-20120801-posix-exit.patch b/ksh-20120801-posix-exit.patch
deleted file mode 100644
index a4b44d0..0000000
--- a/ksh-20120801-posix-exit.patch
+++ /dev/null
@@ -1,24 +0,0 @@
-diff --git a/src/cmd/ksh93/sh/fault.c b/src/cmd/ksh93/sh/fault.c
---- a/src/cmd/ksh93/sh/fault.c
-+++ b/src/cmd/ksh93/sh/fault.c
-@@ -643,7 +643,7 @@ void sh_done(void *ptr, register int sig)
- sfsync((Sfio_t*)sfstdin);
- sfsync((Sfio_t*)shp->outpool);
- sfsync((Sfio_t*)sfstdout);
-- if(savxit&SH_EXITSIG)
-+ if((savxit&SH_EXITMASK) == shp->lastsig)
- sig = savxit&SH_EXITMASK;
- if(sig)
- {
-@@ -668,6 +668,12 @@ void sh_done(void *ptr, register int sig)
- if(sh_isoption(SH_NOEXEC))
- kiaclose((Lex_t*)shp->lex_context);
- #endif /* SHOPT_KIA */
-+
-+ /* Return POSIX exit code if last process exits due to signal */
-+ if (savxit & SH_EXITSIG) {
-+ exit(128 + (savxit&SH_EXITMASK));
-+ }
-+
- exit(savxit&SH_EXITMASK);
- }
diff --git a/ksh-20120801-retfix.patch b/ksh-20120801-retfix.patch
deleted file mode 100644
index 5af1053..0000000
--- a/ksh-20120801-retfix.patch
+++ /dev/null
@@ -1,14 +0,0 @@
-diff -up ksh-20120801/src/cmd/ksh93/sh/subshell.c.retfix ksh-20120801/src/cmd/ksh93/sh/subshell.c
---- ksh-20120801/src/cmd/ksh93/sh/subshell.c.retfix 2014-10-01 17:34:47.720532950 +0200
-+++ ksh-20120801/src/cmd/ksh93/sh/subshell.c 2014-10-01 17:35:25.850350378 +0200
-@@ -655,7 +655,10 @@ Sfio_t *sh_subshell(Shell_t *shp,Shnode_
- job.hack1_waitall=0;
- if(comsub!=1 && shp->spid)
- {
-+ int c = shp->exitval;
- job_wait(shp->spid);
-+ shp->exitval = c;
-+ exitset();
- if(shp->pipepid==shp->spid)
- shp->spid = 0;
- shp->pipepid = 0;
diff --git a/ksh-20120801-rmdirfix.patch b/ksh-20120801-rmdirfix.patch
deleted file mode 100644
index ae9dfd7..0000000
--- a/ksh-20120801-rmdirfix.patch
+++ /dev/null
@@ -1,505 +0,0 @@
-diff -up ksh20120801/src/cmd/ksh93/sh/subshell.c.orig ksh20120801/src/cmd/ksh93/sh/subshell.c
---- ksh20120801/src/cmd/ksh93/sh/subshell.c.orig 2012-07-17 23:54:21.000000000 +0200
-+++ ksh20120801/src/cmd/ksh93/sh/subshell.c 2012-10-24 15:03:44.436870792 +0200
-@@ -40,14 +40,6 @@
- # define PIPE_BUF 512
- #endif
-
--#ifndef O_SEARCH
--# ifdef O_PATH
--# define O_SEARCH O_PATH
--# else
--# define O_SEARCH 0
--# endif
--#endif
--
- /*
- * Note that the following structure must be the same
- * size as the Dtlink_t structure
-@@ -84,7 +76,7 @@ static struct subshell
- char *pwd; /* present working directory */
- const char *shpwd; /* saved pointer to sh.pwd */
- void *jobs; /* save job info */
-- int pwdfd; /* file descritor for pwd */
-+ int shpwdfd;/* fd for present working directory */
- mode_t mask; /* saved umask */
- short tmpfd; /* saved tmp file descriptor */
- short pipefd; /* read fd if pipe is created */
-@@ -101,7 +93,6 @@ static struct subshell
- int subdup;
- char subshare;
- char comsub;
-- char pwdclose;
- #if SHOPT_COSHELL
- void *coshell;
- #endif /* SHOPT_COSHELL */
-@@ -518,7 +509,6 @@ Sfio_t *sh_subshell(Shell_t *shp,Shnode_
- shp->pathinit = 0;
- }
- sp->pathlist = path_dup((Pathcomp_t*)shp->pathlist);
-- sp->pwdfd = -1;
- if(!shp->pwd)
- path_pwd(shp,0);
- sp->bckpid = shp->bckpid;
-@@ -531,39 +521,14 @@ Sfio_t *sh_subshell(Shell_t *shp,Shnode_
- shp->subshare = comsub==2 || (comsub==1 && sh_isoption(SH_SUBSHARE));
- if(comsub)
- shp->comsub = comsub;
-+ sp->shpwdfd=-1;
- if(!comsub || !shp->subshare)
- {
-- struct subshell *xp;
- sp->shpwd = shp->pwd;
--#ifdef _lib_fchdir
-- for(xp=sp->prev; xp; xp=xp->prev)
-- {
-- if(xp->pwdfd>0 && strcmp(xp->pwd,shp->pwd)==0)
-- {
-- sp->pwdfd = xp->pwdfd;
-- break;
-- }
-- }
-- if(sp->pwdfd<0)
-- {
-- int n = open(".",O_RDONLY);
-- if(O_SEARCH && errno==EACCES)
-- n = open(".",O_RDONLY);
-- if(n>=0)
-- {
-- sp->pwdfd = n;
-- if(n<10)
-- {
-- sp->pwdfd = sh_fcntl(n,F_DUPFD,10);
-- close(n);
-- }
-- if(sp->pwdfd>0)
-- {
-- fcntl(sp->pwdfd,F_SETFD,FD_CLOEXEC);
-- sp->pwdclose = 1;
-- }
-- }
-- }
-+ sp->shpwdfd=((shp->pwdfd >= 0))?sh_fcntl(shp->pwdfd, F_dupfd_cloexec, 10):-1;
-+#ifdef O_SEARCH
-+ if(sp->shpwdfd<0)
-+ errormsg(SH_DICT,ERROR_system(1), "Can't obtain directory fd.");
- #endif
- sp->pwd = (shp->pwd?strdup(shp->pwd):0);
- sp->mask = shp->mask;
-@@ -741,14 +706,11 @@ Sfio_t *sh_subshell(Shell_t *shp,Shnode_
- Namval_t *pwdnod = sh_scoped(shp,PWDNOD);
- if(shp->pwd)
- {
-- if(sp->pwdfd >=0)
-- {
-- if(fchdir(sp->pwdfd)<0)
-- chdir(sp->pwd);
-- }
-- else
-- chdir(sp->pwd);
- shp->pwd=sp->pwd;
-+#ifndef O_SEARCH
-+ if (sp->shpwdfd < 0)
-+ chdir(shp->pwd);
-+#endif
- path_newdir(shp,shp->pathlist);
- }
- if(nv_isattr(pwdnod,NV_NOFREE))
-@@ -762,8 +724,6 @@ Sfio_t *sh_subshell(Shell_t *shp,Shnode_
- }
- else
- free((void*)sp->pwd);
-- if(sp->pwdclose)
-- close(sp->pwdfd);
- if(sp->mask!=shp->mask)
- umask(shp->mask=sp->mask);
- if(shp->coutpipe!=sp->coutpipe)
-@@ -775,6 +735,13 @@ Sfio_t *sh_subshell(Shell_t *shp,Shnode_
- shp->cpipe[1] = sp->cpipe;
- shp->coutpipe = sp->coutpipe;
- }
-+ if(sp->shpwdfd >=0)
-+ {
-+ if(shp->pwdfd >=0)
-+ sh_close(shp->pwdfd);
-+ shp->pwdfd=sp->shpwdfd;
-+ fchdir(shp->pwdfd);
-+ }
- shp->subshare = sp->subshare;
- shp->comsub = sp->comsub;
- shp->subdup = sp->subdup;
-diff -up ksh-20120801/src/cmd/ksh93/bltins/cd_pwd.c.orig ksh-20120801/src/cmd/ksh93/bltins/cd_pwd.c
---- ksh-20120801/src/cmd/ksh93/bltins/cd_pwd.c.orig 2012-08-02 16:50:40.000000000 +0200
-+++ ksh-20120801/src/cmd/ksh93/bltins/cd_pwd.c 2012-10-24 15:37:46.814469045 +0200
-@@ -38,6 +38,10 @@
- #include "builtins.h"
- #include <ls.h>
-
-+#ifndef EINTR_REPEAT
-+# define EINTR_REPEAT(expr) while((expr) && (errno == EINTR)) errno=0;
-+#endif
-+
- /*
- * Invalidate path name bindings to relative paths
- */
-@@ -49,6 +53,95 @@ static void rehash(register Namval_t *np
- _nv_unset(np,0);
- }
-
-+/*
-+ * Obtain a file handle to the directory "path" relative to directory
-+ * "dir", or open a NFSv4 xattr directory handle for file dir/path.
-+ */
-+int sh_diropenat(Shell_t *shp, int dir, const char *path, bool xattr)
-+{
-+ int fd,shfd;
-+ int savederrno=errno;
-+#ifndef AT_FDCWD
-+ NOT_USED(dir);
-+#endif
-+#ifndef O_XATTR
-+ NOT_USED(xattr);
-+#endif
-+
-+#ifdef O_XATTR
-+ if(xattr)
-+ {
-+ int apfd; /* attribute parent fd */
-+ /* open parent node... */
-+ EINTR_REPEAT((apfd = openat(dir, path, O_RDONLY|O_NONBLOCK|O_cloexec)) < 0);
-+ if(apfd < 0)
-+ return -1;
-+
-+ /* ... and then open a fd to the attribute directory */
-+ EINTR_REPEAT((fd = openat(apfd, e_dot, O_XATTR|O_cloexec)) < 0);
-+
-+ savederrno = errno;
-+ EINTR_REPEAT(close(apfd) < 0);
-+ errno = savederrno;
-+ }
-+ else
-+#endif
-+ {
-+#ifdef AT_FDCWD
-+ /*
-+ * Open directory. First we try without |O_SEARCH| and
-+ * if this fails with EACCESS we try with |O_SEARCH|
-+ * again.
-+ * This is required ...
-+ * - ... because some platforms may require that it can
-+ * only be used for directories while some filesystems
-+ * (e.g. Reiser4 or HSM systems) allow a |fchdir()| into
-+ * files, too)
-+ * - ... to preserve the semantics of "cd", e.g.
-+ * otherwise "cd" would return [No access] instead of
-+ * [Not a directory] for files on filesystems which do
-+ * not allow a "cd" into files.
-+ * - ... to allow that a
-+ * $ redirect {n}</etc ; cd /dev/fd/$n # works on most
-+ * platforms.
-+ */
-+ EINTR_REPEAT((fd = openat(dir, path, O_RDONLY|O_NONBLOCK|O_cloexec)) < 0);
-+# ifdef O_SEARCH
-+ if((fd < 0) && (errno == EACCES))
-+ {
-+ EINTR_REPEAT((fd = openat(dir, path, O_SEARCH|O_cloexec)) < 0)
-+ }
-+# endif
-+#else
-+ /*
-+ * Version of openat() call above for systems without
-+ * openat API. This only works because we basically
-+ * gurantee that |dir| is always the same place as
-+ * |cwd| on such machines (but this won't be the case
-+ * in the future).
-+ */
-+ /*
-+ * This |fchdir()| call is not needed (yet) since
-+ * all consumers do not use |dir| when |AT_FDCWD|
-+ * is not available.
-+ *
-+ * fchdir(dir);
-+ */
-+ EINTR_REPEAT((fd = open(path, O_cloexec)) < 0);
-+#endif
-+ }
-+
-+ if(fd < 0)
-+ return fd;
-+
-+ /* Move fd to a number > 10 and *register* the fd number with the shell */
-+ shfd = sh_fcntl(fd, F_dupfd_cloexec, 10);
-+ savederrno=errno;
-+ sh_close(fd);
-+ errno=savederrno;
-+ return(shfd);
-+}
-+
- int b_cd(int argc, char *argv[],Shbltin_t *context)
- {
- register char *dir;
-@@ -56,18 +149,20 @@ int b_cd(int argc, char *argv[],Shbltin_
- register const char *dp;
- register Shell_t *shp = context->shp;
- int saverrno=0;
-- int rval,flag=0;
-+ int rval;
-+ bool flag=false,xattr=false;
- char *oldpwd;
-+ int newdirfd;
- Namval_t *opwdnod, *pwdnod;
- if(sh_isoption(SH_RESTRICTED))
- errormsg(SH_DICT,ERROR_exit(1),e_restricted+4);
- while((rval = optget(argv,sh_optcd))) switch(rval)
- {
- case 'L':
-- flag = 0;
-+ flag = false;
- break;
- case 'P':
-- flag = 1;
-+ flag = true;
- break;
- case ':':
- errormsg(SH_DICT,2, "%s", opt_info.arg);
-@@ -179,14 +274,72 @@ int b_cd(int argc, char *argv[],Shbltin_
- continue;
- #endif /* SHOPT_FS_3D */
- }
-+ rval = newdirfd = sh_diropenat(shp, shp->pwdfd,
-+ path_relative(shp,stakptr(PATH_OFFSET)), xattr);
-+ if(newdirfd >=0)
-+ {
-+ /* chdir for directories on HSM/tapeworms may take minutes */
-+ if(fchdir(newdirfd) >= 0)
-+ {
-+ if(shp->pwdfd >= 0)
-+ sh_close(shp->pwdfd);
-+ shp->pwdfd=newdirfd;
-+ goto success;
-+ }
-+ }
-+#ifndef O_SEARCH
-+ else
-+ {
- if((rval=chdir(path_relative(shp,stakptr(PATH_OFFSET)))) >= 0)
-- goto success;
-- if(errno!=ENOENT && saverrno==0)
-+ {
-+ if(shp->pwdfd >= 0)
-+ {
-+ sh_close(shp->pwdfd);
-+#ifdef AT_FDCWD
-+ shp->pwdfd = AT_FDCWD;
-+#else
-+ shp->pwdfd = -1;
-+#endif
-+ }
-+ }
-+ }
-+#endif
-+ if(saverrno==0)
- saverrno=errno;
-+ if(newdirfd >=0)
-+ sh_close(newdirfd);
- }
- while(cdpath);
- if(rval<0 && *dir=='/' && *(path_relative(shp,stakptr(PATH_OFFSET)))!='/')
-- rval = chdir(dir);
-+ {
-+ rval = newdirfd = sh_diropenat(shp,
-+ shp->pwdfd,
-+ dir, xattr);
-+ if(newdirfd >=0)
-+ {
-+ /* chdir for directories on HSM/tapeworms may take minutes */
-+ if(fchdir(newdirfd) >= 0)
-+ {
-+ if(shp->pwdfd >= 0)
-+ sh_close(shp->pwdfd);
-+ shp->pwdfd=newdirfd;
-+ goto success;
-+ }
-+ }
-+#ifndef O_SEARCH
-+ else
-+ {
-+ if(chdir(dir) >=0)
-+ {
-+ if(shp->pwdfd >= 0)
-+ {
-+ sh_close(shp->pwdfd);
-+ shp->pwdfd=-1;
-+ }
-+ }
-+ }
-+#endif
-+ }
- /* use absolute chdir() if relative chdir() fails */
- if(rval<0)
- {
-@@ -213,7 +366,7 @@ success:
- if(*dir != '/')
- return(0);
- nv_putval(opwdnod,oldpwd,NV_RDONLY);
-- flag = strlen(dir);
-+ flag = (strlen(dir)>0)?true:false;
- /* delete trailing '/' */
- while(--flag>0 && dir[flag]=='/')
- dir[flag] = 0;
-diff -up ksh-20120801/src/cmd/ksh93/include/shell.h.orig ksh-20120801/src/cmd/ksh93/include/shell.h
---- ksh-20120801/src/cmd/ksh93/include/shell.h.orig 2012-07-17 22:07:40.000000000 +0200
-+++ ksh-20120801/src/cmd/ksh93/include/shell.h 2012-10-24 15:42:10.756987230 +0200
-@@ -145,6 +145,7 @@ struct Shell_s
- unsigned char trapnote; /* set when trap/signal is pending */
- char shcomp; /* set when runing shcomp */
- short subshell; /* set for virtual subshell */
-+ int pwdfd; /* file descriptor for pwd */
- #ifdef _SH_PRIVATE
- _SH_PRIVATE
- #endif /* _SH_PRIVATE */
-diff -up ksh-20120801/src/cmd/ksh93/sh/init.c.orig ksh-20120801/src/cmd/ksh93/sh/init.c
---- ksh-20120801/src/cmd/ksh93/sh/init.c.orig 2012-05-11 19:19:10.000000000 +0200
-+++ ksh-20120801/src/cmd/ksh93/sh/init.c 2012-10-24 15:31:59.659485151 +0200
-@@ -1365,6 +1365,18 @@ Shell_t *sh_init(register int argc,regis
- }
- }
- sh_ioinit(shp);
-+#ifdef AT_FDCWD
-+ shp->pwdfd = sh_diropenat(shp, AT_FDCWD, e_dot, false);
-+#else
-+ /* Systems without AT_FDCWD/openat() do not use the |dir| argument */
-+ shp->pwdfd = sh_diropenat(shp, -1, e_dot, false);
-+#endif
-+#ifdef O_SEARCH
-+ /* This should _never_ happen, guranteed by design and goat sacrifice */
-+ if(shp->pwdfd < 0)
-+ errormsg(SH_DICT,ERROR_system(1), "Can't obtain directory fd.");
-+#endif
-+
- /* initialize signal handling */
- sh_siginit(shp);
- stakinstall(NIL(Stak_t*),nospace);
-diff -up ksh-20120801/src/cmd/ksh93/sh/xec.c.orig ksh-20120801/src/cmd/ksh93/sh/xec.c
---- ksh-20120801/src/cmd/ksh93/sh/xec.c.orig 2012-07-23 16:49:32.000000000 +0200
-+++ ksh-20120801/src/cmd/ksh93/sh/xec.c 2012-10-24 15:35:02.209539671 +0200
-@@ -1348,8 +1348,12 @@ int sh_exec(register const Shnode_t *t,
- {
- if(!shp->pwd)
- path_pwd(shp,0);
-- if(shp->pwd)
-- stat(".",&statb);
-+#ifndef O_SEARCH
-+ else if (shp->pwdfd>=0)
-+ fstat(shp->pwdfd,&statb);
-+ else if (shp->pwd)
-+ stat(e_dot,&statb);
-+#endif
- sfsync(NULL);
- share = sfset(sfstdin,SF_SHARE,0);
- sh_onstate(SH_STOPOK);
-@@ -1428,14 +1432,32 @@ int sh_exec(register const Shnode_t *t,
- sh_offstate(SH_NOFORK);
- if(!(nv_isattr(np,BLT_ENV)))
- {
-- if(shp->pwd)
-+#ifdef O_SEARCH
-+ while((fchdir(shp->pwdfd) < 0) && errno==EINTR)
-+ errno = 0;
-+#else
-+ if(shp->pwd || (shp->pwdfd >= 0))
- {
- struct stat stata;
- stat(".",&stata);
- /* restore directory changed */
- if(statb.st_ino!=stata.st_ino || statb.st_dev!=stata.st_dev)
-- chdir(shp->pwd);
-+ {
-+ /* chdir for directories on HSM/tapeworms may take minutes */
-+ int err=errno;
-+ if(shp->pwdfd >= 0)
-+ {
-+ while((fchdir(shp->pwdfd) < 0) && errno==EINTR)
-+ errno = err;
-+ }
-+ else
-+ {
-+ while((chdir(shp->pwd) < 0) && errno==EINTR)
-+ errno = err;
-+ }
-+ }
- }
-+#endif /* O_SEARCH */
- sh_offstate(SH_STOPOK);
- if(share&SF_SHARE)
- sfset(sfstdin,SF_PUBLIC|SF_SHARE,1);
-diff -up ksh-20120801/src/lib/libast/features/common.orig ksh-20120801/src/lib/libast/features/common
---- ksh-20120801/src/lib/libast/features/common.orig 2011-12-12 20:55:33.000000000 +0100
-+++ ksh-20120801/src/lib/libast/features/common 2012-10-24 15:54:35.433885131 +0200
-@@ -463,6 +463,66 @@ typ uintptr_t stdint.h inttypes.h no{
- typedef unsigned _ast_int4_t uintptr_t;
- #endif
- }end
-+typ _Bool = uint8_t
-+cat{
-+ #if defined(_STDC_C99) || __STDC_VERSION__ >= 199901L
-+ #include <stdbool.h>
-+ #else
-+ #define bool _Bool
-+ #define false 0
-+ #define true 1
-+ #endif
-+}end
-+tst key __thread -lpthread note{ __thread keyword exists and works with -lpthread }end execute{
-+ #include <pthread.h>
-+
-+ #define INITIAL 1
-+ #define LOOP 100
-+
-+ static __thread int specific = INITIAL;
-+ static int global = 0;
-+
-+ static void* worker(void* arg)
-+ {
-+ int k;
-+ int v;
-+ v = (int)(arg - 0);
-+ for (k = 0; k < LOOP; ++k)
-+ {
-+ specific += v;
-+ usleep(1);
-+ }
-+ if (specific != (INITIAL + LOOP * v))
-+ global = 1;
-+ return 0;
-+ }
-+ int main()
-+ {
-+ pthread_t th[2];
-+
-+ if (pthread_create(&th[0], 0, worker, (void*)0 + 5) ||
-+ pthread_create(&th[1], 0, worker, (void*)0 + 7))
-+ {
-+ NOTE("pthread_create failed");
-+ return 1;
-+ }
-+ pthread_join(th[0], 0);
-+ pthread_join(th[1], 0);
-+ if (global)
-+ {
-+ NOTE("__thread variable not thread specific");
-+ return 1;
-+ }
-+ if (specific != INITIAL)
-+ {
-+ NOTE("main __thread variable changed by another thread");
-+ return 1;
-+ }
-+ return 0;
-+ }
-+}end no{
-+ #define __thread /* __thread keyword does not exist or does not work with -lpthread */
-+}end
-
- tst - -DTRY=1 - -DTRY=1 -Dvoid=char - -DTRY=2 - -DTRY=3 - -DTRY=4 output{
- #if _STD_ && _hdr_stdarg
diff --git a/ksh-20120801-roundit.patch b/ksh-20120801-roundit.patch
deleted file mode 100644
index 015bc85..0000000
--- a/ksh-20120801-roundit.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -up ksh-20120801/src/lib/libast/sfio/sfcvt.c.rounditgood ksh-20120801/src/lib/libast/sfio/sfcvt.c
---- ksh-20120801/src/lib/libast/sfio/sfcvt.c.rounditgood 2014-02-27 16:45:54.630161032 +0100
-+++ ksh-20120801/src/lib/libast/sfio/sfcvt.c 2014-02-27 16:45:54.658161205 +0100
-@@ -491,7 +491,7 @@ int format; /* conversion format */
- *decpt += 1;
- if(!(format&SFFMT_EFORMAT))
- { /* add one more 0 for %f precision */
-- ep[-1] = '0';
-+ if(ep-sp>1) ep[-1] = '0';
- ep += 1;
- }
- }
diff --git a/ksh-20120801-sh_iovalidfd.patch b/ksh-20120801-sh_iovalidfd.patch
deleted file mode 100644
index bdd9154..0000000
--- a/ksh-20120801-sh_iovalidfd.patch
+++ /dev/null
@@ -1,79 +0,0 @@
-diff --git a/src/cmd/ksh93/include/io.h b/src/cmd/ksh93/include/io.h
---- a/src/cmd/ksh93/include/io.h
-+++ b/src/cmd/ksh93/include/io.h
-@@ -79,7 +79,7 @@ extern Sfio_t *sh_iostream(Shell_t*,int);
- extern int sh_redirect(Shell_t*,struct ionod*,int);
- extern void sh_iosave(Shell_t *, int,int,char*);
- extern int safefdnumber(Shell_t* shp, int sfd);
--extern int sh_iovalidfd(Shell_t*, int);
-+extern bool sh_iovalidfd(Shell_t*, int);
- extern int sh_inuse(Shell_t*, int);
- extern void sh_iounsave(Shell_t*);
- extern void iounpipe(Shell_t*);
-diff --git a/src/cmd/ksh93/sh/io.c b/src/cmd/ksh93/sh/io.c
---- a/src/cmd/ksh93/sh/io.c
-+++ b/src/cmd/ksh93/sh/io.c
-@@ -403,38 +403,50 @@ static short filemapsize;
-
- /* ======== input output and file copying ======== */
-
--int sh_iovalidfd(Shell_t *shp, int fd)
-+bool sh_iovalidfd(Shell_t *shp, int fd)
- {
- Sfio_t **sftable = shp->sftable;
- int max,n, **fdptrs = shp->fdptrs;
- unsigned char *fdstatus = shp->fdstatus;
- if(fd<0)
-- return(0);
-+ return(false);
- if(fd < shp->gd->lim.open_max)
-- return(1);
-+ return(true);
- max = strtol(astconf("OPEN_MAX",NiL,NiL),NiL,0);
- if(fd >= max)
- {
- errno = EBADF;
-- return(0);
-+ return(false);
- }
- n = (fd+16)&~0xf;
-- if(n > max)
-- n = max;
-+ if(n++ > max)
-+ n = max+1;
- max = shp->gd->lim.open_max;
-- shp->sftable = (Sfio_t**)calloc((n+1)*(sizeof(int*)+sizeof(Sfio_t*)+1),1);
-- if(max)
-- memcpy(shp->sftable,sftable,max*sizeof(Sfio_t*));
-+ shp->sftable = (Sfio_t**)calloc((n+1)*(sizeof(int*)+sizeof(Sfio_t*)+sizeof(*fdstatus)),1);
-+
-+ if(sftable)
-+ {
-+ --sftable;
-+ if(max)
-+ memcpy(shp->sftable,sftable,++max*sizeof(Sfio_t*));
-+
-+ }
-+
- shp->fdptrs = (int**)(&shp->sftable[n]);
- if(max)
-- memcpy(shp->fdptrs,fdptrs,max*sizeof(int*));
-+ memcpy(shp->fdptrs,--fdptrs,max*sizeof(int*));
- shp->fdstatus = (unsigned char*)(&shp->fdptrs[n]);
- if(max)
-- memcpy(shp->fdstatus,fdstatus,max);
-+ memcpy(shp->fdstatus,--fdstatus,max);
-+
- if(sftable)
- free((void*)sftable);
-- shp->gd->lim.open_max = n;
-- return(1);
-+
-+ shp->sftable++;
-+ shp->fdptrs++;
-+ shp->fdstatus++;
-+ shp->gd->lim.open_max = n-1;
-+ return(true);
- }
-
- int sh_inuse(Shell_t *shp, int fd)
diff --git a/ksh-20120801-subshell-jobwait.patch b/ksh-20120801-subshell-jobwait.patch
deleted file mode 100644
index 8dac4a1..0000000
--- a/ksh-20120801-subshell-jobwait.patch
+++ /dev/null
@@ -1,14 +0,0 @@
-diff --git a/src/cmd/ksh93/sh/xec.c b/src/cmd/ksh93/sh/xec.c
---- a/src/cmd/ksh93/sh/xec.c
-+++ b/src/cmd/ksh93/sh/xec.c
-@@ -1647,8 +1647,9 @@ int sh_exec(register const Shnode_t *t, int flags)
- {
- if (!unpipe)
- unpipe = iousepipe(shp);
-- sh_subfork();
- }
-+
-+ sh_subfork();
- }
- }
- no_fork = !ntflag && !(type&(FAMP|FPOU)) && !shp->subshell &&
diff --git a/ksh-20120801-subshell-leak.patch b/ksh-20120801-subshell-leak.patch
deleted file mode 100644
index 24c7f6b..0000000
--- a/ksh-20120801-subshell-leak.patch
+++ /dev/null
@@ -1,20 +0,0 @@
-diff --git a/src/cmd/ksh93/sh/path.c b/src/cmd/ksh93/sh/path.c
-index d723987..9965bf5 100644
---- a/src/cmd/ksh93/sh/path.c
-+++ b/src/cmd/ksh93/sh/path.c
-@@ -1791,8 +1791,12 @@ void path_alias(register Namval_t *np,register Pathcomp_t *pp)
- {
- struct stat statb;
- char *sp;
-+ Pathcomp_t *old = 0;
- nv_offattr(np,NV_NOPRINT);
- nv_stack(np,&talias_init);
-+ old = (Pathcomp_t*)np->nvalue.cp;
-+ if (old && (--old->refcount <= 0))
-+ free((void*)old);
- np->nvalue.cp = (char*)pp;
- pp->refcount++;
- nv_setattr(np,NV_TAGGED|NV_NOFREE);
---
-2.9.3
-
diff --git a/ksh-20120801-sufix.patch b/ksh-20120801-sufix.patch
deleted file mode 100644
index b820e1c..0000000
--- a/ksh-20120801-sufix.patch
+++ /dev/null
@@ -1,11 +0,0 @@
-diff -up ksh-20120801/src/cmd/ksh93/sh/io.c.sufix ksh-20120801/src/cmd/ksh93/sh/io.c
---- ksh-20120801/src/cmd/ksh93/sh/io.c.sufix 2014-04-08 14:30:14.412343555 +0200
-+++ ksh-20120801/src/cmd/ksh93/sh/io.c 2014-04-08 14:31:18.403876587 +0200
-@@ -2144,6 +2144,7 @@ static int io_prompt(Shell_t *shp,Sfio_t
- }
- #endif /* TIOCLBIC */
- cp = sh_mactry(shp,nv_getval(sh_scoped(shp,PS1NOD)));
-+ shp->exitval = 0;
- for(;c= *cp;cp++)
- {
- if(c==HIST_CHAR)
diff --git a/ksh-20120801-syntax-error.patch b/ksh-20120801-syntax-error.patch
deleted file mode 100644
index aaeef77..0000000
--- a/ksh-20120801-syntax-error.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff --git a/src/cmd/ksh93/sh/parse.c b/src/cmd/ksh93/sh/parse.c
---- a/src/cmd/ksh93/sh/parse.c
-+++ b/src/cmd/ksh93/sh/parse.c
-@@ -742,7 +742,7 @@ static Shnode_t *funct(Lex_t *lexp)
- register Shnode_t *t;
- register int flag;
- struct slnod *volatile slp=0;
-- Stak_t *savstak;
-+ Stak_t *volatile savstak=0;
- Sfoff_t first, last;
- struct functnod *volatile fp;
- Sfio_t *iop;
diff --git a/ksh-20120801-tabfix.patch b/ksh-20120801-tabfix.patch
deleted file mode 100644
index 962763e..0000000
--- a/ksh-20120801-tabfix.patch
+++ /dev/null
@@ -1,18 +0,0 @@
-diff -up ksh-20120801/src/cmd/ksh93/edit/emacs.c.tabfix ksh-20120801/src/cmd/ksh93/edit/emacs.c
---- ksh-20120801/src/cmd/ksh93/edit/emacs.c.tabfix 2012-07-17 22:44:44.000000000 +0200
-+++ ksh-20120801/src/cmd/ksh93/edit/emacs.c 2013-03-07 15:58:59.902161711 +0100
-@@ -1011,10 +1011,13 @@ static int escape(register Emacs_t* ep,r
- ep->ed->e_tabcount=0;
- else
- {
-+ int oldi = i;
- i=ed_getchar(ep->ed,0);
- ed_ungetchar(ep->ed,i);
-- if(isdigit(i))
-+ if(isdigit(i) && oldi=='=')
- ed_ungetchar(ep->ed,ESC);
-+ else if (isdigit(i) || i=='\t')
-+ ep->ed->e_tabcount=0;
- }
- }
- else
diff --git a/ksh-20120801-tpstl.patch b/ksh-20120801-tpstl.patch
deleted file mode 100644
index 41e17c8..0000000
--- a/ksh-20120801-tpstl.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -up ksh-20120801/src/cmd/ksh93/sh/init.c.tpstl ksh-20120801/src/cmd/ksh93/sh/init.c
---- ksh-20120801/src/cmd/ksh93/sh/init.c.tpstl 2014-04-03 11:21:25.395547276 +0200
-+++ ksh-20120801/src/cmd/ksh93/sh/init.c 2014-04-03 11:26:03.908867208 +0200
-@@ -332,7 +332,7 @@ static Namfun_t *clone_optindex(Namval_t
- /* Trap for restricted variables FPATH, PATH, SHELL, ENV */
- static void put_restricted(register Namval_t* np,const char *val,int flags,Namfun_t *fp)
- {
-- Shell_t *shp = nv_shell(np);
-+ Shell_t *shp = sh_getinterp();
- int path_scoped = 0, fpath_scoped=0;
- Pathcomp_t *pp;
- char *name = nv_name(np);
diff --git a/ksh-20120801-trapcom.patch b/ksh-20120801-trapcom.patch
deleted file mode 100644
index 91cb1a8..0000000
--- a/ksh-20120801-trapcom.patch
+++ /dev/null
@@ -1,98 +0,0 @@
-diff -up ksh-20120801/src/cmd/ksh93/sh/subshell.c.orig ksh-20120801/src/cmd/ksh93/sh/subshell.c
---- ksh-20120801/src/cmd/ksh93/sh/subshell.c.orig 2015-08-13 15:20:14.022167794 -0300
-+++ ksh-20120801/src/cmd/ksh93/sh/subshell.c 2015-08-13 15:21:43.263088168 -0300
-@@ -481,12 +481,12 @@ Sfio_t *sh_subshell(Shell_t *shp,Shnode_
- {
- struct subshell sub_data;
- register struct subshell *sp = &sub_data;
-- int jmpval,nsig=0,duped=0;
-+ int jmpval,isig,nsig=0,duped=0;
- long savecurenv = shp->curenv;
- int savejobpgid = job.curpgid;
- int *saveexitval = job.exitval;
- int16_t subshell;
-- char *savsig;
-+ char **savsig;
- Sfio_t *iop=0;
- struct checkpt buff;
- struct sh_scoped savst;
-@@ -561,10 +561,13 @@ Sfio_t *sh_subshell(Shell_t *shp,Shnode_
- /* save trap table */
- shp->st.otrapcom = 0;
- shp->st.otrap = savst.trap;
-- if((nsig=shp->st.trapmax*sizeof(char*))>0 || shp->st.trapcom[0])
-+ if((nsig=shp->st.trapmax)>0 || shp->st.trapcom[0])
- {
-- nsig += sizeof(char*);
-- memcpy(savsig=malloc(nsig),(char*)&shp->st.trapcom[0],nsig);
-+ ++nsig;
-+ savsig = malloc(nsig * sizeof(char*));
-+ /* contents of shp->st.trapcom may change */
-+ for (isig = 0; isig < nsig; ++isig)
-+ savsig[isig] = shp->st.trapcom[isig] == Empty ? Empty : (shp->st.trapcom[isig] ? strdup(shp->st.trapcom[isig]) : NULL);
- /* this nonsense needed for $(trap) */
- shp->st.otrapcom = (char**)savsig;
- }
-@@ -732,7 +735,10 @@ Sfio_t *sh_subshell(Shell_t *shp,Shnode_
- shp->st.otrap = 0;
- if(nsig)
- {
-- memcpy((char*)&shp->st.trapcom[0],savsig,nsig);
-+ for (isig = 0; isig < nsig; ++isig)
-+ if (shp->st.trapcom[isig] && shp->st.trapcom[isig]!=Empty)
-+ free(shp->st.trapcom[isig]);
-+ memcpy((char*)&shp->st.trapcom[0],savsig,nsig*sizeof(char*));
- free((void*)savsig);
- }
- shp->options = sp->options;
-diff -up ksh-20120801/src/cmd/ksh93/sh/xec.c.orig ksh-20120801/src/cmd/ksh93/sh/xec.c
---- ksh-20120801/src/cmd/ksh93/sh/xec.c.orig 2015-08-13 15:22:09.821062351 -0300
-+++ ksh-20120801/src/cmd/ksh93/sh/xec.c 2015-08-13 15:28:06.166662530 -0300
-@@ -3383,10 +3383,10 @@ int sh_funscope(int argn, char *argv[],i
- struct dolnod *argsav=0,*saveargfor;
- struct sh_scoped savst, *prevscope = shp->st.self;
- struct argnod *envlist=0;
-- int jmpval;
-+ int isig,jmpval;
- volatile int r = 0;
- int n;
-- char *savstak;
-+ char **savsig;
- struct funenv *fp = 0;
- struct checkpt *buffp = (struct checkpt*)stkalloc(shp->stk,sizeof(struct checkpt));
- Namval_t *nspace = shp->namespace;
-@@ -3435,10 +3435,13 @@ int sh_funscope(int argn, char *argv[],i
- }
- shp->st.cmdname = argv[0];
- /* save trap table */
-- if((nsig=shp->st.trapmax*sizeof(char*))>0 || shp->st.trapcom[0])
-+ if((nsig=shp->st.trapmax)>0 || shp->st.trapcom[0])
- {
-- nsig += sizeof(char*);
-- memcpy(savstak=stakalloc(nsig),(char*)&shp->st.trapcom[0],nsig);
-+ ++nsig;
-+ savsig = malloc(nsig * sizeof(char*));
-+ /* contents of shp->st.trapcom may change */
-+ for (isig = 0; isig < nsig; ++isig)
-+ savsig[isig] = shp->st.trapcom[isig] == Empty ? Empty : (shp->st.trapcom[isig] ? strdup(shp->st.trapcom[isig]) : NULL);
- }
- sh_sigreset(0);
- argsav = sh_argnew(shp,argv,&saveargfor);
-@@ -3502,10 +3505,14 @@ int sh_funscope(int argn, char *argv[],i
- shp->topscope = (Shscope_t*)prevscope;
- nv_getval(sh_scoped(shp,IFSNOD));
- if(nsig)
-- memcpy((char*)&shp->st.trapcom[0],savstak,nsig);
-+ {
-+ for (isig = 0; isig < nsig; ++isig)
-+ if (shp->st.trapcom[isig] && shp->st.trapcom[isig]!=Empty)
-+ free(shp->st.trapcom[isig]);
-+ memcpy((char*)&shp->st.trapcom[0],savsig,nsig*sizeof(char*));
-+ free((void*)savsig);
-+ }
- shp->trapnote=0;
-- if(nsig)
-- stakset(savstak,0);
- shp->options = options;
- shp->last_root = last_root;
- if(jmpval == SH_JMPSUB)
diff --git a/ksh-20120801-typeset.patch b/ksh-20120801-typeset.patch
deleted file mode 100644
index 03b56b8..0000000
--- a/ksh-20120801-typeset.patch
+++ /dev/null
@@ -1,16 +0,0 @@
-diff --git a/src/cmd/ksh93/bltins/typeset.c b/src/cmd/ksh93/bltins/typeset.c
-index 15fcd58..8939011 100644
---- a/src/cmd/ksh93/bltins/typeset.c
-+++ b/src/cmd/ksh93/bltins/typeset.c
-@@ -1442,7 +1442,7 @@ static void print_scan(Sfio_t *file, int flag, Dt_t *root, int option,struct tda
- tp->scanmask |= (NV_DOUBLE|NV_EXPNOTE);
- if(flag==NV_LTOU || flag==NV_UTOL)
- tp->scanmask |= NV_UTOL|NV_LTOU;
-- namec = nv_scan(root,nullscan,(void*)tp,tp->scanmask,flag);
-+ namec = nv_scan(root,nullscan,(void*)tp,tp->scanmask,flag&~NV_IARRAY);
- argv = tp->argnam = (char**)stkalloc(tp->sh->stk,(namec+1)*sizeof(char*));
- namec = nv_scan(root, pushname, (void*)tp, tp->scanmask, flag&~NV_IARRAY);
- if(mbcoll())
---
-2.9.3
-
diff --git a/ksh-20120801-unset-param.patch b/ksh-20120801-unset-param.patch
deleted file mode 100644
index 7777270..0000000
--- a/ksh-20120801-unset-param.patch
+++ /dev/null
@@ -1,17 +0,0 @@
-diff -up ksh-20120801/src/cmd/ksh93/sh/macro.c.bz1222025 ksh-20120801/src/cmd/ksh93/sh/macro.c
---- ksh-20120801/src/cmd/ksh93/sh/macro.c.bz1222025 2015-09-15 17:28:47.304722569 +0200
-+++ ksh-20120801/src/cmd/ksh93/sh/macro.c 2015-09-17 17:49:46.842891942 +0200
-@@ -1195,6 +1195,13 @@ retry1:
- }
- else
- v = 0;
-+ if(!v && sh_isoption(SH_NOUNSET))
-+ {
-+ d=fcget();
-+ fcseek(-1);
-+ if(!(d && strchr(":+-?=",d)))
-+ errormsg(SH_DICT,ERROR_exit(1),e_notset,ltos(c));
-+ }
- break;
- case S_ALP:
- if(c=='.' && type==0)
diff --git a/ksh-20120801-validate-fd.patch b/ksh-20120801-validate-fd.patch
deleted file mode 100644
index a0bc7d2..0000000
--- a/ksh-20120801-validate-fd.patch
+++ /dev/null
@@ -1,11 +0,0 @@
-diff --git a/src/cmd/ksh93/sh/xec.c b/src/cmd/ksh93/sh/xec.c
---- a/src/cmd/ksh93/sh/xec.c
-+++ b/src/cmd/ksh93/sh/xec.c
-@@ -122,6 +122,7 @@ int iousepipe(Shell_t *shp)
- return(1);
- }
- subpipe[2] = sh_fcntl(fd,F_dupfd_cloexec,10);
-+ sh_iovalidfd(shp,subpipe[2]);
- shp->fdstatus[subpipe[2]] = shp->fdstatus[1];
- while(close(fd)<0 && errno==EINTR)
- errno = err;
diff --git a/ksh-20120801-xufix.patch b/ksh-20120801-xufix.patch
deleted file mode 100644
index 496e0bf..0000000
--- a/ksh-20120801-xufix.patch
+++ /dev/null
@@ -1,29 +0,0 @@
-diff -up ksh-20120801/src/cmd/ksh93/bltins/typeset.c.xufix ksh-20120801/src/cmd/ksh93/bltins/typeset.c
---- ksh-20120801/src/cmd/ksh93/bltins/typeset.c.xufix 2015-02-03 14:47:23.266022137 +0100
-+++ ksh-20120801/src/cmd/ksh93/bltins/typeset.c 2015-02-03 14:47:23.308022046 +0100
-@@ -93,6 +93,8 @@ int b_readonly(int argc,char *argv[],
- memset((void*)&tdata,0,sizeof(tdata));
- tdata.sh = context->shp;
- tdata.aflag = '-';
-+ /* do not change size */
-+ tdata.argnum = -1;
- while((flag = optget(argv,*command=='e'?sh_optexport:sh_optreadonly))) switch(flag)
- {
- case 'p':
-diff -up ksh-20120801/src/cmd/ksh93/sh/name.c.xufix ksh-20120801/src/cmd/ksh93/sh/name.c
---- ksh-20120801/src/cmd/ksh93/sh/name.c.xufix 2015-02-03 14:47:23.281022105 +0100
-+++ ksh-20120801/src/cmd/ksh93/sh/name.c 2015-02-03 14:52:08.768404194 +0100
-@@ -3019,10 +3019,12 @@ void nv_newattr (register Namval_t *np,
- nv_onattr(np,NV_EXPORT);
- sh_envput(shp->env,np);
- }
-- if((n^newatts)==NV_EXPORT)
-+ if((n^newatts)==NV_EXPORT && size==-1)
- return;
- }
- oldsize = nv_size(np);
-+ if (size == -1)
-+ size = oldsize;
- if((size==oldsize|| (n&NV_INTEGER)) && !trans && ((n^newatts)&~NV_NOCHANGE)==0)
- {
- if(size)
diff --git a/ksh-20130214-fixkill.patch b/ksh-20130214-fixkill.patch
deleted file mode 100644
index 0862880..0000000
--- a/ksh-20130214-fixkill.patch
+++ /dev/null
@@ -1,21 +0,0 @@
-diff -up ksh-20130214/src/cmd/ksh93/sh/jobs.c.fixkill ksh-20130214/src/cmd/ksh93/sh/jobs.c
---- ksh-20130214/src/cmd/ksh93/sh/jobs.c.fixkill 2012-09-26 17:43:04.000000000 +0200
-+++ ksh-20130214/src/cmd/ksh93/sh/jobs.c 2013-02-22 16:38:05.080161740 +0100
-@@ -1104,6 +1104,8 @@ static struct process *job_bystring(regi
-
- int job_kill(register struct process *pw,register int sig)
- {
-+ if(pw==0)
-+ goto error;
- Shell_t *shp = pw->p_shp;
- register pid_t pid;
- register int r;
-@@ -1127,8 +1129,6 @@ int job_kill(register struct process *pw
- #endif /* SIGTSTP */
- job_lock();
- errno = ECHILD;
-- if(pw==0)
-- goto error;
- pid = pw->p_pid;
- #if SHOPT_COSHELL
- if(pw->p_cojob)
diff --git a/ksh-20130613-cdfix4.patch b/ksh-20130613-cdfix4.patch
deleted file mode 100644
index 5b29017..0000000
--- a/ksh-20130613-cdfix4.patch
+++ /dev/null
@@ -1,15 +0,0 @@
-diff -up ksh-20120801/src/cmd/ksh93/bltins/cd_pwd.c.cdfix4 ksh-20120801/src/cmd/ksh93/bltins/cd_pwd.c
---- ksh-20120801/src/cmd/ksh93/bltins/cd_pwd.c.cdfix4 2014-08-26 15:24:57.276953822 +0200
-+++ ksh-20120801/src/cmd/ksh93/bltins/cd_pwd.c 2014-08-26 15:25:34.738770361 +0200
-@@ -143,9 +143,9 @@ int sh_diropenat(Shell_t *shp, int dir,
- }
-
- /* Move fd to a number > 10 and *register* the fd number with the shell */
-- shfd = sh_fcntl(fd, F_dupfd_cloexec, 10);
-+ shfd = fcntl(fd, F_dupfd_cloexec, 10);
- savederrno=errno;
-- sh_close(fd);
-+ close(fd);
- errno=savederrno;
- return(shfd);
- }
diff --git a/ksh-20130628-longer.patch b/ksh-20130628-longer.patch
deleted file mode 100644
index 4761a34..0000000
--- a/ksh-20130628-longer.patch
+++ /dev/null
@@ -1,58 +0,0 @@
-diff -up ksh-20120801/src/cmd/ksh93/include/defs.h.longer ksh-20120801/src/cmd/ksh93/include/defs.h
---- ksh-20120801/src/cmd/ksh93/include/defs.h.longer 2012-06-25 20:47:47.000000000 +0200
-+++ ksh-20120801/src/cmd/ksh93/include/defs.h 2013-07-08 17:33:42.238534376 +0200
-@@ -162,8 +162,8 @@ struct shared
- Namval_t *prev_table; /* previous table used in nv_open */ \
- Sfio_t *outpool; /* ouput stream pool */ \
- long timeout; /* read timeout */ \
-- short curenv; /* current subshell number */ \
-- short jobenv; /* subshell number for jobs */ \
-+ long curenv; /* current subshell number */ \
-+ long jobenv; /* subshell number for jobs */ \
- int infd; /* input file descriptor */ \
- short nextprompt; /* next prompt is PS<nextprompt> */ \
- short poolfiles; \
-diff -up ksh-20120801/src/cmd/ksh93/include/jobs.h.longer ksh-20120801/src/cmd/ksh93/include/jobs.h
---- ksh-20120801/src/cmd/ksh93/include/jobs.h.longer 2011-12-19 13:36:37.000000000 +0100
-+++ ksh-20120801/src/cmd/ksh93/include/jobs.h 2013-07-08 17:32:52.881124147 +0200
-@@ -87,7 +87,7 @@ struct process
- unsigned short p_exit; /* exit value or signal number */
- unsigned short p_exitmin; /* minimum exit value for xargs */
- unsigned short p_flag; /* flags - see below */
-- int p_env; /* subshell environment number */
-+ long p_env; /* subshell environment number */
- #ifdef JOBS
- off_t p_name; /* history file offset for command */
- struct termios p_stty; /* terminal state for job */
-diff -up ksh-20120801/src/cmd/ksh93/sh/jobs.c.longer ksh-20120801/src/cmd/ksh93/sh/jobs.c
-diff -up ksh-20120801/src/cmd/ksh93/sh/subshell.c.longer ksh-20120801/src/cmd/ksh93/sh/subshell.c
---- ksh-20120801/src/cmd/ksh93/sh/subshell.c.longer 2013-07-08 17:32:52.874124090 +0200
-+++ ksh-20120801/src/cmd/ksh93/sh/subshell.c 2013-07-08 17:32:52.882124156 +0200
-@@ -98,7 +98,7 @@ static struct subshell
- #endif /* SHOPT_COSHELL */
- } *subshell_data;
-
--static int subenv;
-+static long subenv;
-
-
- /*
-@@ -171,7 +171,8 @@ void sh_subfork(void)
- {
- register struct subshell *sp = subshell_data;
- Shell_t *shp = sp->shp;
-- int curenv = shp->curenv, comsub=shp->comsub;
-+ long curenv = shp->curenv;
-+ int comsub=shp->comsub;
- pid_t pid;
- char *trap = shp->st.trapcom[0];
- if(trap)
-@@ -461,7 +462,7 @@ Sfio_t *sh_subshell(Shell_t *shp,Shnode_
- struct subshell sub_data;
- register struct subshell *sp = &sub_data;
- int jmpval,nsig=0,duped=0;
-- int savecurenv = shp->curenv;
-+ long savecurenv = shp->curenv;
- int savejobpgid = job.curpgid;
- int *saveexitval = job.exitval;
- int16_t subshell;
diff --git a/ksh-20140301-fikspand.patch b/ksh-20140301-fikspand.patch
deleted file mode 100644
index 9899392..0000000
--- a/ksh-20140301-fikspand.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -up ksh-20120801/src/cmd/ksh93/sh/expand.c.fikspand ksh-20120801/src/cmd/ksh93/sh/expand.c
---- ksh-20120801/src/cmd/ksh93/sh/expand.c.fikspand 2010-11-24 05:46:30.000000000 +0100
-+++ ksh-20120801/src/cmd/ksh93/sh/expand.c 2014-05-22 12:55:46.252717371 +0200
-@@ -278,6 +278,8 @@ int path_generate(Shell_t *shp,struct ar
- char comma, range=0;
- int first, last, incr, count = 0;
- char tmp[32], end[1];
-+ if(!sh_isoption(SH_BRACEEXPAND))
-+ return path_expand(shp,todo->argval,arghead);
- todo->argchn.ap = 0;
- again:
- apin = ap = todo;
diff --git a/ksh-20140415-hokaido.patch b/ksh-20140415-hokaido.patch
deleted file mode 100644
index 5ff6927..0000000
--- a/ksh-20140415-hokaido.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-diff -up ksh-20120801/src/cmd/ksh93/sh/xec.c.hokaido ksh-20120801/src/cmd/ksh93/sh/xec.c
---- ksh-20120801/src/cmd/ksh93/sh/xec.c.hokaido 2014-09-18 14:41:57.696756230 +0200
-+++ ksh-20120801/src/cmd/ksh93/sh/xec.c 2014-09-18 14:43:55.439205247 +0200
-@@ -1633,12 +1633,20 @@ int sh_exec(register const Shnode_t *t,
- #endif /* SHOPT_COSHELL */
- if(shp->subshell)
- {
-+ int comsubsave = shp->comsub;
-+ if(comsubsave==1)
-+ shp->comsub = 2;
- sh_subtmpfile(shp);
-+ shp->comsub = comsubsave;
-+ if(shp->comsub==1 && (!(shp->fdstatus[1]&IONOSEEK)))
-+ unpipe = iousepipe(shp);
-+
- if((type&(FAMP|TFORK))==(FAMP|TFORK))
- {
- if(shp->comsub && !(shp->fdstatus[1]&IONOSEEK))
- {
-- unpipe = iousepipe(shp);
-+ if (!unpipe)
-+ unpipe = iousepipe(shp);
- sh_subfork();
- }
- }
-@@ -2107,7 +2115,11 @@ int sh_exec(register const Shnode_t *t,
- job.curjobid = 0;
- if(shp->subshell)
- {
-+ int comsubsave = shp->comsub;
-+ if(comsubsave==1)
-+ shp->comsub = 2;
- sh_subtmpfile(shp);
-+ shp->comsub = comsubsave;
- if(shp->comsub==1 && !(shp->fdstatus[1]&IONOSEEK))
- iousepipe(shp);
- }
diff --git a/ksh-20140801-arraylen.patch b/ksh-20140801-arraylen.patch
deleted file mode 100644
index 34c9b6b..0000000
--- a/ksh-20140801-arraylen.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- ksh-20120801/src/cmd/ksh93/sh/xec.c 2015-04-02 10:55:26.228017873 -0400
-+++ ksh-20120801/src/cmd/ksh93/sh/xec.c 2015-04-02 10:56:04.099017700 -0400
-@@ -1234,7 +1234,7 @@ int sh_exec(register const Shnode_t *t,
- if((io||argn))
- {
- Shbltin_t *bp=0;
-- static char *argv[1];
-+ static char *argv[2];
- int tflags = 1;
- if(np && nv_isattr(np,BLT_DCL))
- tflags |= 2;
diff --git a/ksh-20140801-diskfull.patch b/ksh-20140801-diskfull.patch
deleted file mode 100644
index 7276363..0000000
--- a/ksh-20140801-diskfull.patch
+++ /dev/null
@@ -1,21 +0,0 @@
-diff -up ksh-20120801/src/cmd/ksh93/sh/main.c.orig ksh-20120801/src/cmd/ksh93/sh/main.c
---- ksh-20120801/src/cmd/ksh93/sh/main.c.orig 2015-04-29 16:49:11.502958000 -0300
-+++ ksh-20120801/src/cmd/ksh93/sh/main.c 2015-05-08 18:19:55.688776922 -0300
-@@ -423,7 +423,7 @@ static void exfile(register Shell_t *shp
- sfsync(shp->outpool);
- shp->st.execbrk = shp->st.breakcnt = 0;
- /* check for return from profile or env file */
-- if(sh_isstate(SH_PROFILE) && (jmpval==SH_JMPFUN || jmpval==SH_JMPEXIT))
-+ if(sh_isstate(SH_PROFILE) && (jmpval==SH_JMPFUN || jmpval==SH_JMPEXIT || jmpval==SH_JMPERREXIT))
- {
- sh_setstate(states);
- goto done;
-@@ -598,7 +598,7 @@ done:
- }
- if(jmpval == SH_JMPSCRIPT)
- siglongjmp(*shp->jmplist,jmpval);
-- else if(jmpval == SH_JMPEXIT)
-+ else if(jmpval == SH_JMPEXIT || jmpval == SH_JMPERREXIT)
- sh_done(shp,0);
- if(fno>0)
- sh_close(fno);
diff --git a/ksh-20140929-safefd.patch b/ksh-20140929-safefd.patch
deleted file mode 100644
index 80db205..0000000
--- a/ksh-20140929-safefd.patch
+++ /dev/null
@@ -1,52 +0,0 @@
-diff -up ksh-20120801/src/cmd/ksh93/include/io.h.safefd ksh-20120801/src/cmd/ksh93/include/io.h
---- ksh-20120801/src/cmd/ksh93/include/io.h.safefd 2015-03-03 18:21:40.544732158 +0100
-+++ ksh-20120801/src/cmd/ksh93/include/io.h 2015-03-03 18:22:16.284447849 +0100
-@@ -78,6 +78,7 @@ extern void sh_iorestore(Shell_t*,int,i
- extern Sfio_t *sh_iostream(Shell_t*,int);
- extern int sh_redirect(Shell_t*,struct ionod*,int);
- extern void sh_iosave(Shell_t *, int,int,char*);
-+extern int safefdnumber(Shell_t* shp, int sfd);
- extern int sh_iovalidfd(Shell_t*, int);
- extern int sh_inuse(Shell_t*, int);
- extern void sh_iounsave(Shell_t*);
-diff -up ksh-20120801/src/cmd/ksh93/sh/io.c.safefd ksh-20120801/src/cmd/ksh93/sh/io.c
---- ksh-20120801/src/cmd/ksh93/sh/io.c.safefd 2015-03-03 18:21:40.511732421 +0100
-+++ ksh-20120801/src/cmd/ksh93/sh/io.c 2015-03-03 18:21:40.544732158 +0100
-@@ -1724,6 +1724,25 @@ void sh_iosave(Shell_t *shp, register in
- }
- }
-
-+int safefdnumber(Shell_t* shp, int sfd)
-+{
-+ register int fd;
-+
-+ while(1)
-+ {
-+ for(fd=0; fd < shp->topfd; fd++)
-+ {
-+ if (filemap[fd].save_fd==sfd || filemap[fd].orig_fd==sfd || (fcntl(sfd, F_GETFD) != -1 || errno != EBADF))
-+ {
-+ sfd++;
-+ continue;
-+ }
-+ }
-+ break;
-+ }
-+ return sfd;
-+}
-+
- /*
- * close all saved file descriptors
- */
-diff -up ksh-20120801/src/cmd/ksh93/sh/subshell.c.safefd ksh-20120801/src/cmd/ksh93/sh/subshell.c
---- ksh-20120801/src/cmd/ksh93/sh/subshell.c.safefd 2015-03-03 18:21:40.531732261 +0100
-+++ ksh-20120801/src/cmd/ksh93/sh/subshell.c 2015-03-03 18:21:40.544732158 +0100
-@@ -673,7 +673,7 @@ Sfio_t *sh_subshell(Shell_t *shp,Shnode_
- }
- if(iop && sffileno(iop)==1)
- {
-- int fd=sfsetfd(iop,3);
-+ int fd=sfsetfd(iop,safefdnumber(shp,3));
- if(fd<0)
- {
- shp->toomany = 1;
diff --git a/ksh.spec b/ksh.spec
index b591ee4..330bd81 100644
--- a/ksh.spec
+++ b/ksh.spec
@@ -1,321 +1,96 @@
-%global releasedate 20120801
-%global release_date %{lua:reldate=rpm.expand("%{releasedate}");print(("%s-%s-%s"):format(reldate:sub(0,4),reldate:sub(5,6),reldate:sub(7)))}
-
Name: ksh
Summary: The Original ATT Korn Shell
URL: http://www.kornshell.com/
License: EPL
-Version: %{releasedate}
-Release: 250%{?dist}
-Source0: http://www.research.att.com/~gsf/download/tgz/ast-ksh.%{release_date}.tgz
-Source1: http://www.research.att.com/~gsf/download/tgz/INIT.%{release_date}.tgz
-Source2: kshcomp.conf
-Source3: kshrc.rhs
-Source4: dotkshrc
-
-# expected results of test suite
-Source5: expectedresults.log
-
-# don't use not wanted/needed builtins - Fedora/RHEL specific
-Patch1: ksh-20070328-builtins.patch
-
-# fix regression test suite to be usable during packagebuild - Fedora/RHEL specific
-Patch2: ksh-20100826-fixregr.patch
-
-# fedora/rhel specific, rhbz#619692
-Patch6: ksh-20080202-manfix.patch
-
-# rhbz#702008
-Patch17: ksh-20100202-pathvar.patch
-
-# rhbz#924440
-Patch18: ksh-20100621-fdstatus.patch
-
-# fixes for regressions found in ksh-20120801 rebase
-Patch19: ksh-20120801-rmdirfix.patch
-Patch20: ksh-20120801-cdfix.patch
-Patch21: ksh-20120801-cdfix2.patch
-Patch22: ksh-20120801-tabfix.patch
-Patch23: ksh-20130214-fixkill.patch
-
-# for ksh <= 2013-05-31, rhbz#960034
-Patch24: ksh-20120801-kshmfix.patch
-
-# for ksh <= 2016-06-28, rhbz#921455
-Patch25: ksh-20120801-memlik.patch
-
-# for ksh <= 2013-03-20, rhbz#922851
-Patch26: ksh-20120801-forkbomb.patch
-
-# for ksh <= 2013-04-19, rhbz#913110
-Patch27: ksh-20120801-macro.patch
-
-# not completely upstream yet, rhbz#858263
-Patch29: ksh-20130628-longer.patch
-
-# for ksh <= 2013-07-19, rhbz#982142
-Patch30: ksh-20120801-mlikfiks.patch
-
-# not yet upstream, related to 2012-08-01 rebase
-Patch31: ksh-20120801-covsfix.patch
-
-# rhbz#1007816
-Patch32: ksh-20100621-manfix3.patch
-
-# rhbz#1016611
-Patch33: ksh-20120801-nomulti.patch
-
-# for ksh <= 2014-01-14, rhbz#
-Patch34: ksh-20120801-mtty.patch
-
-# from upstream, rbzh#1048272
-Patch35: ksh-20120801-fd2lost.patch
-
-# sent upstream 2014-01, rhbz#1047507
-Patch36: ksh-20120801-argvfix.patch
-
-# for ksh <= 2014-01-14, rhbz#1048995
-Patch37: ksh-20120801-memlik3.patch
-
-# for ksh <= 2013-04-09, rhbz#960371
-Patch38: ksh-20120801-lexfix.patch
-
-# not yet upstream, for ksh <= 2014-02-26, rhbz#1070328
-Patch39: ksh-20120801-filecomsubst.patch
-
-# for ksh <= 2014-06-25, rhbz#825520,rhbz#1084406
-Patch40: ksh-20120801-crash.patch
-
-# for ksh < 2013-03-19, rhbz#1085385
-Patch41: ksh-20120801-sufix.patch
-
-# sent upstream, rhbz#1099935
-Patch42: ksh-20140301-fikspand.patch
-
-# for ksh < 2014-04-15, rhbz#1070871
-Patch43: ksh-20120801-roundit.patch
-
-# for ksh < 2014-04-15, rhbz#1111120
-Patch44: ksh-20120801-heresub.patch
-
-# not included upstream yet, rhbz#1077090
-Patch45: ksh-20140415-hokaido.patch
-
-# for ksh < 2012-10-04, rhbz#1121960
-Patch46: ksh-20120801-tpstl.patch
-
-# sent upstream, rhbz#1100215
-Patch47: ksh-20120801-manfix4.patch
-
-# not upstream yet, rhbz#1100215
-Patch48: ksh-20120801-fununset.patch
-
-# for ksh < 2014-06-25, rhbz#1109893
-Patch49: ksh-20120801-cdfix3.patch
-
-# sent upstream, rhbz#1116506
-Patch50: ksh-20120801-locking.patch
-
-# for ksh <= 2013-06-13, rhbz#1133585
-Patch51: ksh-20130613-cdfix4.patch
-
-Patch52: ksh-20120801-retfix.patch
-
-# sent upstream, for ksh <= 2014-09-30
-Patch53: ksh-20120801-cdfork.patch
-
-# not upstream yet, for ksh <= 2015-04-03, rhbz#1200534
-Patch54: ksh-20140801-arraylen.patch
-
-# sent upstream, for ksh <= 2014-09-29, rhbz#1212993
-Patch55: ksh-20140801-diskfull.patch
-
-# not upstream yet, rhbz#1192026
-Patch56: ksh-20120801-xufix.patch
-
-# sent upstream, for ksh <= 2014-12-18, rhbz#1192119
-Patch58: ksh-20120801-alarmifs.patch
-
-# not yet upstream, rhbz#1202439
-Patch59: ksh-20140929-safefd.patch
-
-# workaround, for ksh < 2013-05-24, rhbz#1211540
-Patch60: ksh-20120801-trapcom.patch
-
-# not yet upstream, rhbz#1217237
-Patch64: ksh-20120801-nohupfork.patch
-
-# from upstream, for ksh <= 20130409, rhbz#1241014
-Patch65: ksh-20120801-parserfix.patch
+Version: 2020.0.0
+Release: 0.1%{?dist}
+# We are upgrading from ksh-20120801-250, so set epoch.
+Epoch: 1
+Source0: https://github.com/att/ast/releases/download/%{version}-alpha1/%{name}-%{...
+Source1: kshcomp.conf
+Source2: kshrc.rhs
+Source3: dotkshrc
-# not upstream yet, rhbz#1211538
-Patch66: ksh-20120801-oldenvinit.patch
-
-# from upsteam, for ksh < 2012-10-04, rhbz#1193557
-Patch67: ksh-20120801-emptyarrayinit.patch
-
-# not upstream yet, rhbz#1371630
-Patch68: ksh-20120801-typeset.patch
-
-# not upstream yet, rhbz#1321443
-Patch69: ksh-20120801-dotdoublefree.patch
-
-# not upstream yet, rhbz#1405784
-Patch70: ksh-20120801-subshell-leak.patch
-
-# rhbz#1189297
-Patch71: ksh-20120801-assoc-unset-leak.patch
-
-# rhbz#1222025
-Patch72: ksh-20120801-unset-param.patch
-
-# rhbz#1269088
-Patch73: ksh-20120801-badgcc.patch
-
-# rhbz#1299484
-Patch74: ksh-20120801-mb-after-argvar.patch
-Patch75: ksh-20120801-F_dupfd_cloexec.patch
-
-# rhbz#1441142
-Patch76: ksh-20120801-kia.patch
-
-# rhbz#1417886
-Patch77: ksh-20120801-iso8859.patch
-
-# rhbz#1451057
-Patch78: ksh-20120801-syntax-error.patch
-
-# rhbz#1477082
-Patch79: ksh-20120801-glibc-build-fix.patch
-
-# rhbz#1459000
-Patch80: ksh-20120801-jobwait-sigstop.patch
-
-# rhbz#1462347
-Patch81: ksh-20120801-subshell-jobwait.patch
-
-# rhbz#1471874
-Patch82: ksh-20120801-posix-exit.patch
-
-# rhbz#1464409
-Patch83: ksh-20120801-sh_iovalidfd.patch
-
-# rhbz#1537053
-Patch84: ksh-20120801-validate-fd.patch
-
-# There were couple of places where CCFLAGS variable was not passed while
-# compiling binaries. This patch fixes it. Loosely related to rhbz#1548549.
-Patch85: ksh-20120801-ccflags.patch
-
-Patch86: ksh-20120801-nv_open-memcmp.patch
+Provides: /bin/ksh
-Conflicts: pdksh
-Requires: coreutils, diffutils
-BuildRequires: gcc
-BuildRequires: bison
-# regression test suite uses 'ps' from procps
-BuildRequires: procps
-Requires(post): grep, coreutils, systemd
+BuildRequires: meson
+BuildRequires: gcc
+BuildRequires: glibc-devel
+# This package is require by test cases
+# It should be enabled when we start running test cases in package builds
+# BuildRequires: glibc-langpack-zh
+BuildRequires: ed
+Conflicts: pdksh
+Requires(post): grep, coreutils, systemd-units
Requires(postun): sed
-Provides: /bin/ksh
+Provides: /bin/ksh
%description
-KSH-93 is the most recent version of the KornShell by David Korn of
-AT&T Bell Laboratories.
KornShell is a shell programming language, which is upward compatible
with "sh" (the Bourne Shell).
%prep
-%setup -q -c
-%setup -q -T -D -a 1
-%autopatch -p1
-
-#/dev/fd test does not work because of mock
-sed -i 's|ls /dev/fd|ls /proc/self/fd|' src/cmd/ksh93/features/options
-
-# sh/main.c was not using CCFLAGS
-sed -i '/-c sh\/main.c/s|${mam_cc_FLAGS} |${mam_cc_FLAGS} ${CCFLAGS} |p' src/cmd/ksh93/Mamfile
-
-# disable register for debugging
-sed -i 1i"#define register" src/lib/libast/include/ast.h
+%autosetup -n %{name}-%{version}-alpha1
%build
-XTRAFLAGS=""
-for f in -Wno-unknown-pragmas -Wno-missing-braces -Wno-unused-result -Wno-return-type -Wno-int-to-pointer-cast -Wno-parentheses -Wno-unused -Wno-unused-but-set-variable -Wno-cpp -P
-do
- gcc $f -E - </dev/null >/dev/null 2>&1 && XTRAFLAGS="$XTRAFLAGS $f"
-done
-./bin/package
-./bin/package make mamake ||:
-./bin/package make mamake ||:
-export CCFLAGS="$RPM_OPT_FLAGS $RPM_LD_FLAGS -fno-strict-aliasing $XTRAFLAGS"
-export CC=gcc
-./bin/package make -S
-
-#cp lib/package/LICENSES/epl LICENSE
+%meson -Dbuild-api-tests=false
+%meson_build
%install
-mkdir -p %{buildroot}{/bin,%{_bindir},%{_mandir}/man1}
-install -p -m 755 arch/*/bin/ksh %{buildroot}%{_bindir}/ksh
-install -p -m 755 arch/*/bin/shcomp %{buildroot}%{_bindir}/shcomp
-install -p -m 644 arch/*/man/man1/sh.1 %{buildroot}%{_mandir}/man1/ksh.1
-mkdir -p %{buildroot}%{_sysconfdir}/skel
-install -p -m 644 %{SOURCE4} %{buildroot}%{_sysconfdir}/skel/.kshrc
-install -p -m 644 %{SOURCE3} %{buildroot}%{_sysconfdir}/kshrc
-install -p -D -m 644 %{SOURCE2} %{buildroot}%{_sysconfdir}/binfmt.d/kshcomp.conf
-
-%check
-[ -f ./skipcheck -o -f ./../skipcheck ] && exit 0 ||:
-%if 0%{?rhel} > 6
-%ifarch s390
-exit 0
-%endif
-%endif
-
-export SHELL=$(ls $(pwd)/arch/*/bin/ksh)
-cd src/cmd/ksh93/tests/
-ulimit -c unlimited
-if [ ! -e /dev/fd ]
+%meson_install
+# Allow switching between different ksh implementations (for e.g. mksh) through alternatives.
+mv %{buildroot}/%{_bindir}/ksh %{buildroot}/%{_bindir}/ksh93
+mv %{buildroot}/%{_bindir}/shcomp %{buildroot}/%{_bindir}/shcomp93
+# http://mesonbuild.com/Release-notes-for-0-49-0.html#manpages-are-no-longe...
+# meson 0.49 does not compress man pages
+if [[ -e %{buildroot}/%{_mandir}/man1/ksh.1.gz ]]
then
- echo "ERROR: /dev/fd does not exist, regression tests skipped"
- exit 0
-fi
-$SHELL ./shtests 2>&1 | tee testresults.log
-ls core.* 2>/dev/null ||:
-exit 0
-sed -e '/begins at/d' -e '/ 0 error/d' -e 's/at [^\[]*\[/\[/' testresults.log -e '/tests skipped/d' >filteredresults.log
-if ! cmp filteredresults.log %{SOURCE5} >/dev/null || ls core.*
-then
- echo "Regression tests failed"
- diff -Naurp %{SOURCE5} filteredresults.log
- exit -1
+ mv %{buildroot}/%{_mandir}/man1/ksh.1.gz %{buildroot}/%{_mandir}/man1/ksh93.1.gz
+else
+ mv %{buildroot}/%{_mandir}/man1/ksh.1 %{buildroot}/%{_mandir}/man1/ksh93.1
fi
+install -p -D -m 644 %{SOURCE1} %{buildroot}%{_sysconfdir}/binfmt.d/kshcomp.conf
+install -p -m 644 %{SOURCE2} %{buildroot}%{_sysconfdir}/kshrc
+install -p -D -m 644 %{SOURCE3} %{buildroot}%{_sysconfdir}/skel/.kshrc
+
%post
-if [ ! -f /etc/shells ]; then
- echo "/bin/ksh" > /etc/shells
- echo "/usr/bin/ksh" >> /etc/shells
-else
- if ! grep -q '^/bin/ksh$' /etc/shells ; then
- echo "/bin/ksh" >> /etc/shells
- fi
- if ! grep -q '^/usr/bin/ksh$' /etc/shells ; then
- echo "/usr/bin/ksh" >> /etc/shells
+for s in /bin/ksh /usr/bin/ksh
+do
+ if [ ! -f /etc/shells ]; then
+ echo "$s" > /etc/shells
+ else
+ if ! grep -q '^'"$s"'$' /etc/shells ; then
+ echo "$s" >> /etc/shells
fi
-fi
+ fi
+done
/bin/systemctl try-restart systemd-binfmt.service >/dev/null 2>&1 || :
-%postun
-if [ ! -f /bin/ksh ]; then
- sed -i '/^\/bin\/ksh$/ d' /etc/shells
-fi
-if [ ! -f /usr/bin/ksh ]; then
- sed -i '/^\/usr\/bin\/ksh$/ d' /etc/shells
+# Suppress any error encountered while upgrading from ksh-20120801-250
+%{_sbindir}/alternatives --install /bin/ksh ksh \
+ /bin/ksh93 50 \
+ --slave %{_mandir}/man1/ksh.1.gz ksh-man \
+ %{_mandir}/man1/ksh93.1.gz \
+ --slave /bin/shcomp shcomp93 \
+ /bin/shcomp93 2>/dev/null
+
+%preun
+# Do not remove ksh from alternatives on upgrades
+if [ $1 -eq 0 ]; then
+ %{_sbindir}/alternatives --remove ksh /bin/ksh93
fi
-%verifyscript
+%postun
+for s in /bin/ksh /usr/bin/ksh
+do
+ if [ ! -f $s ]; then
+ sed -i '\|^'"$s"'$|d' /etc/shells
+ fi
+done
+
echo -n "Looking for ksh in /etc/shells... "
if ! grep '^/bin/ksh$' /etc/shells > /dev/null; then
echo "missing"
@@ -324,17 +99,26 @@ else
echo "found"
fi
+# ksh-20120801-250 did not use alternatives, so while upgrading ensure that
+# alternatives are set correctly
+%triggerpostun -- ksh < 1:2020.0.0-0.1
+%{_sbindir}/alternatives --auto ksh
+
%files
%doc src/cmd/ksh93/COMPATIBILITY src/cmd/ksh93/RELEASE src/cmd/ksh93/TYPES
# LICENSE file is missing, temporarily?
-%{_bindir}/ksh
-%{_bindir}/shcomp
+%{_bindir}/ksh93
+%{_bindir}/shcomp93
%{_mandir}/man1/*
%config(noreplace) %{_sysconfdir}/skel/.kshrc
%config(noreplace) %{_sysconfdir}/kshrc
%config(noreplace) %{_sysconfdir}/binfmt.d/kshcomp.conf
%changelog
+* Wed Apr 17 2019 Siteshwar Vashisht <svashisht(a)redhat.com> - 2020.0.0-0.1
+- Rebase to 2020.0.0-alpha1
+ Resolves: #1700777
+
* Fri Feb 01 2019 Fedora Release Engineering <releng(a)fedoraproject.org> - 20120801-250
- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild
diff --git a/sources b/sources
index 935961b..9fd6ceb 100644
--- a/sources
+++ b/sources
@@ -1,2 +1 @@
-3a6e2d01b1b049bdef968dc5a24c1ea7 ast-ksh.2012-08-01.tgz
-af699318bea7398f0f413b839bfcd762 INIT.2012-08-01.tgz
+SHA512 (ksh-2020.0.0-alpha1.tar.gz) = 56c805bebe963dee7c27ba0357e26957fd8439f42c26f290ab32488ddde99f4b824e403c5dc097194eaf600e7379a010b1be4bf1e70bee76402e84909b38d981
5 years, 1 month