Architecture specific change in rpms/nodejs-generic-pool.git
by githook-noreply@fedoraproject.org
The package rpms/nodejs-generic-pool.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/nodejs-generic-pool.git/commit/?i...
https://src.fedoraproject.org/cgit/rpms/nodejs-generic-pool.git/commit/?i...
https://src.fedoraproject.org/cgit/rpms/nodejs-generic-pool.git/commit/?i...
https://src.fedoraproject.org/cgit/rpms/nodejs-generic-pool.git/commit/?i....
Change:
-ExclusiveArch: %{ix86} x86_64 %{arm} noarch
+ExclusiveArch: %{ix86} x86_64 %{arm} noarch
-ExclusiveArch: %{ix86} x86_64 %{arm} noarch
+ExclusiveArch: %{ix86} x86_64 %{arm} noarch
Thanks.
Full change:
============
commit aecdfc99bdd5a4bb3d0646013789a2018772c25c
Author: Piotr <piotr1212(a)gmail.com>
Date: Tue Aug 25 18:48:52 2020 +0200
Unretire and update to 2.2.0
diff --git a/.gitignore b/.gitignore
index 883ece8..67fb776 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1 +1,2 @@
/generic-pool-2.0.3.tgz
+/generic-pool-2.2.2.tgz
diff --git a/nodejs-generic-pool.spec b/nodejs-generic-pool.spec
index 4c29036..44334a4 100644
--- a/nodejs-generic-pool.spec
+++ b/nodejs-generic-pool.spec
@@ -3,8 +3,8 @@
%global enable_tests 0
Name: nodejs-generic-pool
-Version: 2.0.3
-Release: 13%{?dist}
+Version: 2.2.2
+Release: 1%{?dist}
Summary: Generic resource pooling for Node.js
# License text is included in README.md.
License: MIT
@@ -12,13 +12,9 @@ URL: https://github.com/coopernurse/node-pool
Source0: http://registry.npmjs.org/generic-pool/-/generic-pool-%{version}.tgz
BuildArch: noarch
-%if 0%{?fedora} >= 19
ExclusiveArch: %{nodejs_arches} noarch
-%else
-ExclusiveArch: %{ix86} x86_64 %{arm} noarch
-%endif
-BuildRequires: nodejs-packaging
+BuildRequires: nodejs
%if 0%{?enable_tests}
BuildRequires: npm(expresso)
@@ -44,8 +40,10 @@ cp -pr package.json lib/ \
%nodejs_symlink_deps
-%if 0%{?enable_tests}
%check
+%{__nodejs} -e 'require("./")'
+
+%if 0%{?enable_tests}
%{nodejs_sitelib}/expresso/bin/expresso -I lib test/*.js
%endif
@@ -56,6 +54,9 @@ cp -pr package.json lib/ \
%changelog
+* Tue Aug 25 2020 Piotr Popieluch <piotr1212(a)gmail.com> - 2.2.2-1
+- Unretire and update to 2.2.0
+
* Wed Jan 29 2020 Fedora Release Engineering <releng(a)fedoraproject.org> - 2.0.3-13
- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
diff --git a/sources b/sources
index d71c2ed..4f0ed6b 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-8a60e95fbe1f683799fcb2658678e648 generic-pool-2.0.3.tgz
+SHA512 (generic-pool-2.2.2.tgz) = c0e0a73d9f8a31677d00d5e4a1d1c928a23d49d9778b54eb1853c5287f29a64c59e7b96be97b4621fa02063a555b3f0341c36aaf3d447ffa92efd8780a2b0f3d
commit 75289504f2c33216932e9b7e482ab5eab4d888c4
Author: Mohan Boddu <mboddu(a)bhujji.com>
Date: Mon Aug 24 18:22:50 2020 -0400
Revert "Orphaned for 6+ weeks"
Unretirement for https://pagure.io/releng/issue/9710
This reverts commit c04e488d1a1511d24a0b0a6745273e94c8e34e5a.
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..883ece8
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1 @@
+/generic-pool-2.0.3.tgz
diff --git a/dead.package b/dead.package
deleted file mode 100644
index 5204a84..0000000
--- a/dead.package
+++ /dev/null
@@ -1 +0,0 @@
-Orphaned for 6+ weeks
diff --git a/nodejs-generic-pool.spec b/nodejs-generic-pool.spec
new file mode 100644
index 0000000..4c29036
--- /dev/null
+++ b/nodejs-generic-pool.spec
@@ -0,0 +1,96 @@
+%{?nodejs_find_provides_and_requires}
+
+%global enable_tests 0
+
+Name: nodejs-generic-pool
+Version: 2.0.3
+Release: 13%{?dist}
+Summary: Generic resource pooling for Node.js
+# License text is included in README.md.
+License: MIT
+URL: https://github.com/coopernurse/node-pool
+Source0: http://registry.npmjs.org/generic-pool/-/generic-pool-%{version}.tgz
+
+BuildArch: noarch
+%if 0%{?fedora} >= 19
+ExclusiveArch: %{nodejs_arches} noarch
+%else
+ExclusiveArch: %{ix86} x86_64 %{arm} noarch
+%endif
+
+BuildRequires: nodejs-packaging
+
+%if 0%{?enable_tests}
+BuildRequires: npm(expresso)
+%endif
+
+%description
+%{summary}
+
+
+%prep
+%setup -q -n package
+
+
+%build
+#nothing to do
+
+
+%install
+mkdir -p %{buildroot}%{nodejs_sitelib}/generic-pool
+cp -pr package.json lib/ \
+ %{buildroot}%{nodejs_sitelib}/generic-pool
+
+%nodejs_symlink_deps
+
+
+%if 0%{?enable_tests}
+%check
+%{nodejs_sitelib}/expresso/bin/expresso -I lib test/*.js
+%endif
+
+
+%files
+%doc README.md
+%{nodejs_sitelib}/generic-pool
+
+
+%changelog
+* Wed Jan 29 2020 Fedora Release Engineering <releng(a)fedoraproject.org> - 2.0.3-13
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
+
+* Thu Jul 25 2019 Fedora Release Engineering <releng(a)fedoraproject.org> - 2.0.3-12
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
+
+* Fri Feb 01 2019 Fedora Release Engineering <releng(a)fedoraproject.org> - 2.0.3-11
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild
+
+* Fri Jul 13 2018 Fedora Release Engineering <releng(a)fedoraproject.org> - 2.0.3-10
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild
+
+* Thu Feb 08 2018 Fedora Release Engineering <releng(a)fedoraproject.org> - 2.0.3-9
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild
+
+* Wed Jul 26 2017 Fedora Release Engineering <releng(a)fedoraproject.org> - 2.0.3-8
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild
+
+* Fri Feb 10 2017 Fedora Release Engineering <releng(a)fedoraproject.org> - 2.0.3-7
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild
+
+* Thu Feb 04 2016 Fedora Release Engineering <releng(a)fedoraproject.org> - 2.0.3-6
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild
+
+* Wed Jun 17 2015 Fedora Release Engineering <rel-eng(a)lists.fedoraproject.org> - 2.0.3-5
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild
+
+* Sat Jun 07 2014 Fedora Release Engineering <rel-eng(a)lists.fedoraproject.org> - 2.0.3-4
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild
+
+* Sat Aug 03 2013 Fedora Release Engineering <rel-eng(a)lists.fedoraproject.org> - 2.0.3-3
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild
+
+* Mon Jul 08 2013 Jamie Nguyen <jamielinux(a)fedoraproject.org> - 2.0.3-2
+- restrict to compatible arches
+
+* Wed Feb 13 2013 Jamie Nguyen <jamielinux(a)fedoraproject.org> - 2.0.3-1
+- initial package
diff --git a/sources b/sources
new file mode 100644
index 0000000..d71c2ed
--- /dev/null
+++ b/sources
@@ -0,0 +1 @@
+8a60e95fbe1f683799fcb2658678e648 generic-pool-2.0.3.tgz
commit c04e488d1a1511d24a0b0a6745273e94c8e34e5a
Author: Miro Hrončok <miro(a)hroncok.cz>
Date: Wed Jun 24 20:20:42 2020 +0200
Orphaned for 6+ weeks
diff --git a/.gitignore b/.gitignore
deleted file mode 100644
index 883ece8..0000000
--- a/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-/generic-pool-2.0.3.tgz
diff --git a/dead.package b/dead.package
new file mode 100644
index 0000000..5204a84
--- /dev/null
+++ b/dead.package
@@ -0,0 +1 @@
+Orphaned for 6+ weeks
diff --git a/nodejs-generic-pool.spec b/nodejs-generic-pool.spec
deleted file mode 100644
index 4c29036..0000000
--- a/nodejs-generic-pool.spec
+++ /dev/null
@@ -1,96 +0,0 @@
-%{?nodejs_find_provides_and_requires}
-
-%global enable_tests 0
-
-Name: nodejs-generic-pool
-Version: 2.0.3
-Release: 13%{?dist}
-Summary: Generic resource pooling for Node.js
-# License text is included in README.md.
-License: MIT
-URL: https://github.com/coopernurse/node-pool
-Source0: http://registry.npmjs.org/generic-pool/-/generic-pool-%{version}.tgz
-
-BuildArch: noarch
-%if 0%{?fedora} >= 19
-ExclusiveArch: %{nodejs_arches} noarch
-%else
-ExclusiveArch: %{ix86} x86_64 %{arm} noarch
-%endif
-
-BuildRequires: nodejs-packaging
-
-%if 0%{?enable_tests}
-BuildRequires: npm(expresso)
-%endif
-
-%description
-%{summary}
-
-
-%prep
-%setup -q -n package
-
-
-%build
-#nothing to do
-
-
-%install
-mkdir -p %{buildroot}%{nodejs_sitelib}/generic-pool
-cp -pr package.json lib/ \
- %{buildroot}%{nodejs_sitelib}/generic-pool
-
-%nodejs_symlink_deps
-
-
-%if 0%{?enable_tests}
-%check
-%{nodejs_sitelib}/expresso/bin/expresso -I lib test/*.js
-%endif
-
-
-%files
-%doc README.md
-%{nodejs_sitelib}/generic-pool
-
-
-%changelog
-* Wed Jan 29 2020 Fedora Release Engineering <releng(a)fedoraproject.org> - 2.0.3-13
-- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
-
-* Thu Jul 25 2019 Fedora Release Engineering <releng(a)fedoraproject.org> - 2.0.3-12
-- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
-
-* Fri Feb 01 2019 Fedora Release Engineering <releng(a)fedoraproject.org> - 2.0.3-11
-- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild
-
-* Fri Jul 13 2018 Fedora Release Engineering <releng(a)fedoraproject.org> - 2.0.3-10
-- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild
-
-* Thu Feb 08 2018 Fedora Release Engineering <releng(a)fedoraproject.org> - 2.0.3-9
-- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild
-
-* Wed Jul 26 2017 Fedora Release Engineering <releng(a)fedoraproject.org> - 2.0.3-8
-- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild
-
-* Fri Feb 10 2017 Fedora Release Engineering <releng(a)fedoraproject.org> - 2.0.3-7
-- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild
-
-* Thu Feb 04 2016 Fedora Release Engineering <releng(a)fedoraproject.org> - 2.0.3-6
-- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild
-
-* Wed Jun 17 2015 Fedora Release Engineering <rel-eng(a)lists.fedoraproject.org> - 2.0.3-5
-- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild
-
-* Sat Jun 07 2014 Fedora Release Engineering <rel-eng(a)lists.fedoraproject.org> - 2.0.3-4
-- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild
-
-* Sat Aug 03 2013 Fedora Release Engineering <rel-eng(a)lists.fedoraproject.org> - 2.0.3-3
-- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild
-
-* Mon Jul 08 2013 Jamie Nguyen <jamielinux(a)fedoraproject.org> - 2.0.3-2
-- restrict to compatible arches
-
-* Wed Feb 13 2013 Jamie Nguyen <jamielinux(a)fedoraproject.org> - 2.0.3-1
-- initial package
diff --git a/sources b/sources
deleted file mode 100644
index d71c2ed..0000000
--- a/sources
+++ /dev/null
@@ -1 +0,0 @@
-8a60e95fbe1f683799fcb2658678e648 generic-pool-2.0.3.tgz
commit 22c27fb4b0a8faf93f2e368b79a4ac066c121cc8
Author: Fedora Release Engineering <releng(a)fedoraproject.org>
Date: Wed Jan 29 16:31:28 2020 +0000
- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng(a)fedoraproject.org>
diff --git a/nodejs-generic-pool.spec b/nodejs-generic-pool.spec
index 964f954..4c29036 100644
--- a/nodejs-generic-pool.spec
+++ b/nodejs-generic-pool.spec
@@ -4,7 +4,7 @@
Name: nodejs-generic-pool
Version: 2.0.3
-Release: 12%{?dist}
+Release: 13%{?dist}
Summary: Generic resource pooling for Node.js
# License text is included in README.md.
License: MIT
@@ -56,6 +56,9 @@ cp -pr package.json lib/ \
%changelog
+* Wed Jan 29 2020 Fedora Release Engineering <releng(a)fedoraproject.org> - 2.0.3-13
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
+
* Thu Jul 25 2019 Fedora Release Engineering <releng(a)fedoraproject.org> - 2.0.3-12
- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
commit 402748de30ce9ca7344eb3607442cc7fe6ac96a7
Author: Fedora Release Engineering <releng(a)fedoraproject.org>
Date: Thu Jul 25 20:05:21 2019 +0000
- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng(a)fedoraproject.org>
diff --git a/nodejs-generic-pool.spec b/nodejs-generic-pool.spec
index 4409d2c..964f954 100644
--- a/nodejs-generic-pool.spec
+++ b/nodejs-generic-pool.spec
@@ -4,7 +4,7 @@
Name: nodejs-generic-pool
Version: 2.0.3
-Release: 11%{?dist}
+Release: 12%{?dist}
Summary: Generic resource pooling for Node.js
# License text is included in README.md.
License: MIT
@@ -56,6 +56,9 @@ cp -pr package.json lib/ \
%changelog
+* Thu Jul 25 2019 Fedora Release Engineering <releng(a)fedoraproject.org> - 2.0.3-12
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
+
* Fri Feb 01 2019 Fedora Release Engineering <releng(a)fedoraproject.org> - 2.0.3-11
- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild
commit 59c69a80dcfec35d26733e2fa164f8b29d821700
Author: Fedora Release Engineering <releng(a)fedoraproject.org>
Date: Fri Feb 1 13:49:59 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/nodejs-generic-pool.spec b/nodejs-generic-pool.spec
index 213fe6a..4409d2c 100644
--- a/nodejs-generic-pool.spec
+++ b/nodejs-generic-pool.spec
@@ -4,7 +4,7 @@
Name: nodejs-generic-pool
Version: 2.0.3
-Release: 10%{?dist}
+Release: 11%{?dist}
Summary: Generic resource pooling for Node.js
# License text is included in README.md.
License: MIT
@@ -56,6 +56,9 @@ cp -pr package.json lib/ \
%changelog
+* Fri Feb 01 2019 Fedora Release Engineering <releng(a)fedoraproject.org> - 2.0.3-11
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild
+
* Fri Jul 13 2018 Fedora Release Engineering <releng(a)fedoraproject.org> - 2.0.3-10
- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild
commit 47e689381c68e358a0cd2557e29ecdd0648954a0
Author: Igor Gnatenko <ignatenkobrain(a)fedoraproject.org>
Date: Mon Jan 28 20:17:56 2019 +0100
Remove obsolete Group tag
References: https://fedoraproject.org/wiki/Changes/Remove_Group_Tag
diff --git a/nodejs-generic-pool.spec b/nodejs-generic-pool.spec
index 6023c0b..213fe6a 100644
--- a/nodejs-generic-pool.spec
+++ b/nodejs-generic-pool.spec
@@ -8,7 +8,6 @@ Release: 10%{?dist}
Summary: Generic resource pooling for Node.js
# License text is included in README.md.
License: MIT
-Group: System Environment/Libraries
URL: https://github.com/coopernurse/node-pool
Source0: http://registry.npmjs.org/generic-pool/-/generic-pool-%{version}.tgz
commit 4a91f9bfddd77ae816e0d5e30b4c1fe6e77f579c
Author: Fedora Release Engineering <releng(a)fedoraproject.org>
Date: Fri Jul 13 12:39:09 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/nodejs-generic-pool.spec b/nodejs-generic-pool.spec
index 4de0e20..6023c0b 100644
--- a/nodejs-generic-pool.spec
+++ b/nodejs-generic-pool.spec
@@ -4,7 +4,7 @@
Name: nodejs-generic-pool
Version: 2.0.3
-Release: 9%{?dist}
+Release: 10%{?dist}
Summary: Generic resource pooling for Node.js
# License text is included in README.md.
License: MIT
@@ -57,6 +57,9 @@ cp -pr package.json lib/ \
%changelog
+* Fri Jul 13 2018 Fedora Release Engineering <releng(a)fedoraproject.org> - 2.0.3-10
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild
+
* Thu Feb 08 2018 Fedora Release Engineering <releng(a)fedoraproject.org> - 2.0.3-9
- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild
commit 4e5d5872016edc284a29194937fd497353693e3f
Author: Fedora Release Engineering <releng(a)fedoraproject.org>
Date: Thu Feb 8 05:43:42 2018 +0000
- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng(a)fedoraproject.org>
diff --git a/nodejs-generic-pool.spec b/nodejs-generic-pool.spec
index f9d7a76..4de0e20 100644
--- a/nodejs-generic-pool.spec
+++ b/nodejs-generic-pool.spec
@@ -4,7 +4,7 @@
Name: nodejs-generic-pool
Version: 2.0.3
-Release: 8%{?dist}
+Release: 9%{?dist}
Summary: Generic resource pooling for Node.js
# License text is included in README.md.
License: MIT
@@ -57,6 +57,9 @@ cp -pr package.json lib/ \
%changelog
+* Thu Feb 08 2018 Fedora Release Engineering <releng(a)fedoraproject.org> - 2.0.3-9
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild
+
* Wed Jul 26 2017 Fedora Release Engineering <releng(a)fedoraproject.org> - 2.0.3-8
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild
commit c1993a33d28ef11aca494cde3e38cc3923b10338
Author: Fedora Release Engineering <releng(a)fedoraproject.org>
Date: Wed Jul 26 23:46:11 2017 +0000
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild
diff --git a/nodejs-generic-pool.spec b/nodejs-generic-pool.spec
index c56b50c..f9d7a76 100644
--- a/nodejs-generic-pool.spec
+++ b/nodejs-generic-pool.spec
@@ -4,7 +4,7 @@
Name: nodejs-generic-pool
Version: 2.0.3
-Release: 7%{?dist}
+Release: 8%{?dist}
Summary: Generic resource pooling for Node.js
# License text is included in README.md.
License: MIT
@@ -57,6 +57,9 @@ cp -pr package.json lib/ \
%changelog
+* Wed Jul 26 2017 Fedora Release Engineering <releng(a)fedoraproject.org> - 2.0.3-8
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild
+
* Fri Feb 10 2017 Fedora Release Engineering <releng(a)fedoraproject.org> - 2.0.3-7
- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild
commit 3edc8616e6b7d567adb732d22d00233dfbde8983
Author: Fedora Release Engineering <releng(a)fedoraproject.org>
Date: Fri Feb 10 22:59:29 2017 +0000
- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild
diff --git a/nodejs-generic-pool.spec b/nodejs-generic-pool.spec
index 5dd1574..c56b50c 100644
--- a/nodejs-generic-pool.spec
+++ b/nodejs-generic-pool.spec
@@ -4,7 +4,7 @@
Name: nodejs-generic-pool
Version: 2.0.3
-Release: 6%{?dist}
+Release: 7%{?dist}
Summary: Generic resource pooling for Node.js
# License text is included in README.md.
License: MIT
@@ -57,6 +57,9 @@ cp -pr package.json lib/ \
%changelog
+* Fri Feb 10 2017 Fedora Release Engineering <releng(a)fedoraproject.org> - 2.0.3-7
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild
+
* Thu Feb 04 2016 Fedora Release Engineering <releng(a)fedoraproject.org> - 2.0.3-6
- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild
commit c9d6b32dd5248d77724989ccc43516054e8fd5ab
Author: Fedora Release Engineering <releng(a)fedoraproject.org>
Date: Thu Feb 4 09:54:12 2016 +0000
- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild
diff --git a/nodejs-generic-pool.spec b/nodejs-generic-pool.spec
index 88e763e..5dd1574 100644
--- a/nodejs-generic-pool.spec
+++ b/nodejs-generic-pool.spec
@@ -4,7 +4,7 @@
Name: nodejs-generic-pool
Version: 2.0.3
-Release: 5%{?dist}
+Release: 6%{?dist}
Summary: Generic resource pooling for Node.js
# License text is included in README.md.
License: MIT
@@ -57,6 +57,9 @@ cp -pr package.json lib/ \
%changelog
+* Thu Feb 04 2016 Fedora Release Engineering <releng(a)fedoraproject.org> - 2.0.3-6
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild
+
* Wed Jun 17 2015 Fedora Release Engineering <rel-eng(a)lists.fedoraproject.org> - 2.0.3-5
- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild
commit d2a87654153044c7185e86324e90fe5058de781a
Author: Dennis Gilmore <dennis(a)ausil.us>
Date: Wed Jun 17 22:21:27 2015 +0000
- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild
diff --git a/nodejs-generic-pool.spec b/nodejs-generic-pool.spec
index 4011656..88e763e 100644
--- a/nodejs-generic-pool.spec
+++ b/nodejs-generic-pool.spec
@@ -4,7 +4,7 @@
Name: nodejs-generic-pool
Version: 2.0.3
-Release: 4%{?dist}
+Release: 5%{?dist}
Summary: Generic resource pooling for Node.js
# License text is included in README.md.
License: MIT
@@ -57,6 +57,9 @@ cp -pr package.json lib/ \
%changelog
+* Wed Jun 17 2015 Fedora Release Engineering <rel-eng(a)lists.fedoraproject.org> - 2.0.3-5
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild
+
* Sat Jun 07 2014 Fedora Release Engineering <rel-eng(a)lists.fedoraproject.org> - 2.0.3-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild
commit 3ac21d577ea8d69433e73ac30b9bd6cc7016979c
Author: Dennis Gilmore <dennis(a)ausil.us>
Date: Sat Jun 7 08:35:53 2014 -0500
- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild
diff --git a/nodejs-generic-pool.spec b/nodejs-generic-pool.spec
index 121b74a..4011656 100644
--- a/nodejs-generic-pool.spec
+++ b/nodejs-generic-pool.spec
@@ -4,7 +4,7 @@
Name: nodejs-generic-pool
Version: 2.0.3
-Release: 3%{?dist}
+Release: 4%{?dist}
Summary: Generic resource pooling for Node.js
# License text is included in README.md.
License: MIT
@@ -57,6 +57,9 @@ cp -pr package.json lib/ \
%changelog
+* Sat Jun 07 2014 Fedora Release Engineering <rel-eng(a)lists.fedoraproject.org> - 2.0.3-4
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild
+
* Sat Aug 03 2013 Fedora Release Engineering <rel-eng(a)lists.fedoraproject.org> - 2.0.3-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild
commit 99b2359b167ddcaab4f9865c71ea544e8a59d838
Author: Dennis Gilmore <dennis(a)ausil.us>
Date: Sat Aug 3 08:49:06 2013 -0500
- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild
diff --git a/nodejs-generic-pool.spec b/nodejs-generic-pool.spec
index 20cd2bf..121b74a 100644
--- a/nodejs-generic-pool.spec
+++ b/nodejs-generic-pool.spec
@@ -4,7 +4,7 @@
Name: nodejs-generic-pool
Version: 2.0.3
-Release: 2%{?dist}
+Release: 3%{?dist}
Summary: Generic resource pooling for Node.js
# License text is included in README.md.
License: MIT
@@ -57,6 +57,9 @@ cp -pr package.json lib/ \
%changelog
+* Sat Aug 03 2013 Fedora Release Engineering <rel-eng(a)lists.fedoraproject.org> - 2.0.3-3
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild
+
* Mon Jul 08 2013 Jamie Nguyen <jamielinux(a)fedoraproject.org> - 2.0.3-2
- restrict to compatible arches
commit 5885c282ad337c4748179b6d62471dd511ca12d3
Author: Jamie Nguyen <j(a)jamielinux.com>
Date: Mon Jul 8 11:21:42 2013 +0100
Restrict to compatible arches
diff --git a/nodejs-generic-pool.spec b/nodejs-generic-pool.spec
index 3724437..20cd2bf 100644
--- a/nodejs-generic-pool.spec
+++ b/nodejs-generic-pool.spec
@@ -4,16 +4,22 @@
Name: nodejs-generic-pool
Version: 2.0.3
-Release: 1%{?dist}
+Release: 2%{?dist}
Summary: Generic resource pooling for Node.js
# License text is included in README.md.
License: MIT
Group: System Environment/Libraries
URL: https://github.com/coopernurse/node-pool
Source0: http://registry.npmjs.org/generic-pool/-/generic-pool-%{version}.tgz
+
BuildArch: noarch
+%if 0%{?fedora} >= 19
+ExclusiveArch: %{nodejs_arches} noarch
+%else
+ExclusiveArch: %{ix86} x86_64 %{arm} noarch
+%endif
-BuildRequires: nodejs-devel
+BuildRequires: nodejs-packaging
%if 0%{?enable_tests}
BuildRequires: npm(expresso)
@@ -51,5 +57,8 @@ cp -pr package.json lib/ \
%changelog
+* Mon Jul 08 2013 Jamie Nguyen <jamielinux(a)fedoraproject.org> - 2.0.3-2
+- restrict to compatible arches
+
* Wed Feb 13 2013 Jamie Nguyen <jamielinux(a)fedoraproject.org> - 2.0.3-1
- initial package
commit baea83e321a7ade8cb6ad232cf0e935547259fae
Author: Jamie Nguyen <j(a)jamielinux.com>
Date: Mon Apr 15 17:40:23 2013 +0100
Add macro to enable dependency generation on EPEL
diff --git a/nodejs-generic-pool.spec b/nodejs-generic-pool.spec
index c597e70..3724437 100644
--- a/nodejs-generic-pool.spec
+++ b/nodejs-generic-pool.spec
@@ -1,3 +1,5 @@
+%{?nodejs_find_provides_and_requires}
+
%global enable_tests 0
Name: nodejs-generic-pool
@@ -18,7 +20,7 @@ BuildRequires: npm(expresso)
%endif
%description
-%summary
+%{summary}
%prep
commit 2c035a80da66f9841d5d3cd57122f08caf189012
Author: Jamie Nguyen <j(a)jamielinux.com>
Date: Thu Feb 21 07:37:50 2013 +0000
Initial commit
diff --git a/.gitignore b/.gitignore
index e69de29..883ece8 100644
--- a/.gitignore
+++ b/.gitignore
@@ -0,0 +1 @@
+/generic-pool-2.0.3.tgz
diff --git a/nodejs-generic-pool.spec b/nodejs-generic-pool.spec
new file mode 100644
index 0000000..c597e70
--- /dev/null
+++ b/nodejs-generic-pool.spec
@@ -0,0 +1,53 @@
+%global enable_tests 0
+
+Name: nodejs-generic-pool
+Version: 2.0.3
+Release: 1%{?dist}
+Summary: Generic resource pooling for Node.js
+# License text is included in README.md.
+License: MIT
+Group: System Environment/Libraries
+URL: https://github.com/coopernurse/node-pool
+Source0: http://registry.npmjs.org/generic-pool/-/generic-pool-%{version}.tgz
+BuildArch: noarch
+
+BuildRequires: nodejs-devel
+
+%if 0%{?enable_tests}
+BuildRequires: npm(expresso)
+%endif
+
+%description
+%summary
+
+
+%prep
+%setup -q -n package
+
+
+%build
+#nothing to do
+
+
+%install
+mkdir -p %{buildroot}%{nodejs_sitelib}/generic-pool
+cp -pr package.json lib/ \
+ %{buildroot}%{nodejs_sitelib}/generic-pool
+
+%nodejs_symlink_deps
+
+
+%if 0%{?enable_tests}
+%check
+%{nodejs_sitelib}/expresso/bin/expresso -I lib test/*.js
+%endif
+
+
+%files
+%doc README.md
+%{nodejs_sitelib}/generic-pool
+
+
+%changelog
+* Wed Feb 13 2013 Jamie Nguyen <jamielinux(a)fedoraproject.org> - 2.0.3-1
+- initial package
diff --git a/sources b/sources
index e69de29..d71c2ed 100644
--- a/sources
+++ b/sources
@@ -0,0 +1 @@
+8a60e95fbe1f683799fcb2658678e648 generic-pool-2.0.3.tgz
3 years, 7 months
Architecture specific change in rpms/rust-tracing-attributes.git
by githook-noreply@fedoraproject.org
The package rpms/rust-tracing-attributes.git has added or updated architecture specific content in its
spec file (ExclusiveArch/ExcludeArch or %ifarch/%ifnarch) in commit(s):
https://src.fedoraproject.org/cgit/rpms/rust-tracing-attributes.git/commi....
Change:
+ExclusiveArch: %{rust_arches}
Thanks.
Full change:
============
commit 76a58e288a0bad7fa3ab91c9723c844b4ee8942d
Author: Josh Stone <cuviper(a)gmail.com>
Date: Tue Aug 25 11:14:00 2020 -0700
Actually commit the new spec
diff --git a/rust-tracing-attributes.spec b/rust-tracing-attributes.spec
new file mode 100644
index 0000000..a81d13d
--- /dev/null
+++ b/rust-tracing-attributes.spec
@@ -0,0 +1,91 @@
+# Generated by rust2rpm 13
+# dev-dependencies form a loop
+%bcond_with check
+%global debug_package %{nil}
+
+%global crate tracing-attributes
+
+Name: rust-%{crate}
+Version: 0.1.11
+Release: 1%{?dist}
+Summary: Procedural macro attributes for automatically instrumenting functions
+
+# Upstream license specification: MIT
+License: MIT
+URL: https://crates.io/crates/tracing-attributes
+Source: %{crates_source}
+
+ExclusiveArch: %{rust_arches}
+%if %{__cargo_skip_build}
+BuildArch: noarch
+%endif
+
+BuildRequires: rust-packaging
+
+%global _description %{expand:
+Procedural macro attributes for automatically instrumenting functions.}
+
+%description %{_description}
+
+%package devel
+Summary: %{summary}
+BuildArch: noarch
+
+%description devel %{_description}
+
+This package contains library source intended for building other packages
+which use "%{crate}" crate.
+
+%files devel
+%license LICENSE
+%doc README.md CHANGELOG.md
+%{cargo_registry}/%{crate}-%{version_no_tilde}/
+
+%package -n %{name}+default-devel
+Summary: %{summary}
+BuildArch: noarch
+
+%description -n %{name}+default-devel %{_description}
+
+This package contains library source intended for building other packages
+which use "default" feature of "%{crate}" crate.
+
+%files -n %{name}+default-devel
+%ghost %{cargo_registry}/%{crate}-%{version_no_tilde}/Cargo.toml
+
+%package -n %{name}+async-await-devel
+Summary: %{summary}
+BuildArch: noarch
+
+%description -n %{name}+async-await-devel %{_description}
+
+This package contains library source intended for building other packages
+which use "async-await" feature of "%{crate}" crate.
+
+%files -n %{name}+async-await-devel
+%ghost %{cargo_registry}/%{crate}-%{version_no_tilde}/Cargo.toml
+
+%prep
+%autosetup -n %{crate}-%{version_no_tilde} -p1
+%cargo_prep
+
+%generate_buildrequires
+%cargo_generate_buildrequires
+
+%build
+%cargo_build
+
+%install
+%cargo_install
+
+%if %{with check}
+%check
+%cargo_test
+%endif
+
+%changelog
+* Tue Aug 25 2020 Josh Stone <jistone(a)redhat.com> - 0.1.11-1
+- Update to 0.1.11
+
+* Thu Jul 23 2020 Josh Stone <jistone(a)redhat.com> - 0.1.9-1
+- Initial package
3 years, 7 months
Architecture specific change in rpms/rust-tracing-core.git
by githook-noreply@fedoraproject.org
The package rpms/rust-tracing-core.git has added or updated architecture specific content in its
spec file (ExclusiveArch/ExcludeArch or %ifarch/%ifnarch) in commit(s):
https://src.fedoraproject.org/cgit/rpms/rust-tracing-core.git/commit/?id=....
Change:
+ExclusiveArch: %{rust_arches}
Thanks.
Full change:
============
commit 634d10bca0a447c4ef4cafd97a5b0f4d611a9484
Author: Josh Stone <cuviper(a)gmail.com>
Date: Tue Aug 25 11:14:00 2020 -0700
Actually commit the new spec
diff --git a/rust-tracing-core.spec b/rust-tracing-core.spec
new file mode 100644
index 0000000..c1f21f3
--- /dev/null
+++ b/rust-tracing-core.spec
@@ -0,0 +1,109 @@
+# Generated by rust2rpm 13
+%bcond_without check
+%global debug_package %{nil}
+
+%global crate tracing-core
+
+Name: rust-%{crate}
+Version: 0.1.15
+Release: 1%{?dist}
+Summary: Core primitives for application-level tracing
+
+# Upstream license specification: MIT
+License: MIT
+URL: https://crates.io/crates/tracing-core
+Source: %{crates_source}
+
+ExclusiveArch: %{rust_arches}
+%if %{__cargo_skip_build}
+BuildArch: noarch
+%endif
+
+BuildRequires: rust-packaging
+
+%global _description %{expand:
+Core primitives for application-level tracing.}
+
+%description %{_description}
+
+%package devel
+Summary: %{summary}
+BuildArch: noarch
+
+%description devel %{_description}
+
+This package contains library source intended for building other packages
+which use "%{crate}" crate.
+
+%files devel
+%license LICENSE LICENSE-lazy_static LICENSE-spin
+%doc README.md CHANGELOG.md
+%{cargo_registry}/%{crate}-%{version_no_tilde}/
+# Don't ship our manual license copies in the devel package.
+%exclude %{cargo_registry}/%{crate}-%{version_no_tilde}/LICENSE-*
+
+%package -n %{name}+default-devel
+Summary: %{summary}
+BuildArch: noarch
+
+%description -n %{name}+default-devel %{_description}
+
+This package contains library source intended for building other packages
+which use "default" feature of "%{crate}" crate.
+
+%files -n %{name}+default-devel
+%ghost %{cargo_registry}/%{crate}-%{version_no_tilde}/Cargo.toml
+
+%package -n %{name}+lazy_static-devel
+Summary: %{summary}
+BuildArch: noarch
+
+%description -n %{name}+lazy_static-devel %{_description}
+
+This package contains library source intended for building other packages
+which use "lazy_static" feature of "%{crate}" crate.
+
+%files -n %{name}+lazy_static-devel
+%ghost %{cargo_registry}/%{crate}-%{version_no_tilde}/Cargo.toml
+
+%package -n %{name}+std-devel
+Summary: %{summary}
+BuildArch: noarch
+
+%description -n %{name}+std-devel %{_description}
+
+This package contains library source intended for building other packages
+which use "std" feature of "%{crate}" crate.
+
+%files -n %{name}+std-devel
+%ghost %{cargo_registry}/%{crate}-%{version_no_tilde}/Cargo.toml
+
+%prep
+%autosetup -n %{crate}-%{version_no_tilde} -p1
+%cargo_prep
+
+# These "inner" licenses are also MIT, but with different copyright statements.
+# Copy them to distinct names for normal license installation.
+cp -p src/lazy_static/LICENSE LICENSE-lazy_static
+cp -p src/spin/LICENSE LICENSE-spin
+
+%generate_buildrequires
+%cargo_generate_buildrequires
+
+%build
+%cargo_build
+
+%install
+%cargo_install
+
+%if %{with check}
+%check
+%cargo_test
+%endif
+
+%changelog
+* Tue Aug 25 2020 Josh Stone <jistone(a)redhat.com> - 0.1.15-1
+- Update to 0.1.15
+
+* Thu Jul 23 2020 Josh Stone <jistone(a)redhat.com> - 0.1.11-1
+- Initial package
3 years, 7 months
Architecture specific change in rpms/rust-tracing-futures.git
by githook-noreply@fedoraproject.org
The package rpms/rust-tracing-futures.git has added or updated architecture specific content in its
spec file (ExclusiveArch/ExcludeArch or %ifarch/%ifnarch) in commit(s):
https://src.fedoraproject.org/cgit/rpms/rust-tracing-futures.git/commit/?....
Change:
+ExclusiveArch: %{rust_arches}
Thanks.
Full change:
============
commit 8b4dcc051b7b80d7e0999e7010a91b92713f7b40
Author: Josh Stone <cuviper(a)gmail.com>
Date: Tue Aug 25 11:14:00 2020 -0700
Actually commit the new spec
diff --git a/rust-tracing-futures.spec b/rust-tracing-futures.spec
new file mode 100644
index 0000000..97d7b10
--- /dev/null
+++ b/rust-tracing-futures.spec
@@ -0,0 +1,197 @@
+# Generated by rust2rpm 13
+# Some of the tests use relative paths into other crates in the workspace
+%bcond_with check
+%global debug_package %{nil}
+
+%global crate tracing-futures
+
+Name: rust-%{crate}
+Version: 0.2.4
+Release: 1%{?dist}
+Summary: Utilities for instrumenting `futures` with `tracing`
+
+# Upstream license specification: MIT
+# https://github.com/tokio-rs/tracing/pull/842
+License: MIT
+URL: https://crates.io/crates/tracing-futures
+Source: %{crates_source}
+
+ExclusiveArch: %{rust_arches}
+%if %{__cargo_skip_build}
+BuildArch: noarch
+%endif
+
+BuildRequires: rust-packaging
+
+%global _description %{expand:
+Utilities for instrumenting `futures` with `tracing`.}
+
+%description %{_description}
+
+%package devel
+Summary: %{summary}
+BuildArch: noarch
+
+%description devel %{_description}
+
+This package contains library source intended for building other packages
+which use "%{crate}" crate.
+
+%files devel
+#license LICENSE
+%doc README.md CHANGELOG.md
+%{cargo_registry}/%{crate}-%{version_no_tilde}/
+
+%package -n %{name}+default-devel
+Summary: %{summary}
+BuildArch: noarch
+
+%description -n %{name}+default-devel %{_description}
+
+This package contains library source intended for building other packages
+which use "default" feature of "%{crate}" crate.
+
+%files -n %{name}+default-devel
+%ghost %{cargo_registry}/%{crate}-%{version_no_tilde}/Cargo.toml
+
+%package -n %{name}+futures-devel
+Summary: %{summary}
+BuildArch: noarch
+
+%description -n %{name}+futures-devel %{_description}
+
+This package contains library source intended for building other packages
+which use "futures" feature of "%{crate}" crate.
+
+%files -n %{name}+futures-devel
+%ghost %{cargo_registry}/%{crate}-%{version_no_tilde}/Cargo.toml
+
+%package -n %{name}+futures-01-devel
+Summary: %{summary}
+BuildArch: noarch
+
+%description -n %{name}+futures-01-devel %{_description}
+
+This package contains library source intended for building other packages
+which use "futures-01" feature of "%{crate}" crate.
+
+%files -n %{name}+futures-01-devel
+%ghost %{cargo_registry}/%{crate}-%{version_no_tilde}/Cargo.toml
+
+%package -n %{name}+futures-03-devel
+Summary: %{summary}
+BuildArch: noarch
+
+%description -n %{name}+futures-03-devel %{_description}
+
+This package contains library source intended for building other packages
+which use "futures-03" feature of "%{crate}" crate.
+
+%files -n %{name}+futures-03-devel
+%ghost %{cargo_registry}/%{crate}-%{version_no_tilde}/Cargo.toml
+
+%package -n %{name}+futures-task-devel
+Summary: %{summary}
+BuildArch: noarch
+
+%description -n %{name}+futures-task-devel %{_description}
+
+This package contains library source intended for building other packages
+which use "futures-task" feature of "%{crate}" crate.
+
+%files -n %{name}+futures-task-devel
+%ghost %{cargo_registry}/%{crate}-%{version_no_tilde}/Cargo.toml
+
+%package -n %{name}+futures_01-devel
+Summary: %{summary}
+BuildArch: noarch
+
+%description -n %{name}+futures_01-devel %{_description}
+
+This package contains library source intended for building other packages
+which use "futures_01" feature of "%{crate}" crate.
+
+%files -n %{name}+futures_01-devel
+%ghost %{cargo_registry}/%{crate}-%{version_no_tilde}/Cargo.toml
+
+%package -n %{name}+pin-project-devel
+Summary: %{summary}
+BuildArch: noarch
+
+%description -n %{name}+pin-project-devel %{_description}
+
+This package contains library source intended for building other packages
+which use "pin-project" feature of "%{crate}" crate.
+
+%files -n %{name}+pin-project-devel
+%ghost %{cargo_registry}/%{crate}-%{version_no_tilde}/Cargo.toml
+
+%package -n %{name}+std-devel
+Summary: %{summary}
+BuildArch: noarch
+
+%description -n %{name}+std-devel %{_description}
+
+This package contains library source intended for building other packages
+which use "std" feature of "%{crate}" crate.
+
+%files -n %{name}+std-devel
+%ghost %{cargo_registry}/%{crate}-%{version_no_tilde}/Cargo.toml
+
+%package -n %{name}+std-future-devel
+Summary: %{summary}
+BuildArch: noarch
+
+%description -n %{name}+std-future-devel %{_description}
+
+This package contains library source intended for building other packages
+which use "std-future" feature of "%{crate}" crate.
+
+%files -n %{name}+std-future-devel
+%ghost %{cargo_registry}/%{crate}-%{version_no_tilde}/Cargo.toml
+
+%package -n %{name}+tokio-devel
+Summary: %{summary}
+BuildArch: noarch
+
+%description -n %{name}+tokio-devel %{_description}
+
+This package contains library source intended for building other packages
+which use "tokio" feature of "%{crate}" crate.
+
+%files -n %{name}+tokio-devel
+%ghost %{cargo_registry}/%{crate}-%{version_no_tilde}/Cargo.toml
+
+%package -n %{name}+tokio-executor-devel
+Summary: %{summary}
+BuildArch: noarch
+
+%description -n %{name}+tokio-executor-devel %{_description}
+
+This package contains library source intended for building other packages
+which use "tokio-executor" feature of "%{crate}" crate.
+
+%files -n %{name}+tokio-executor-devel
+%ghost %{cargo_registry}/%{crate}-%{version_no_tilde}/Cargo.toml
+
+%prep
+%autosetup -n %{crate}-%{version_no_tilde} -p1
+%cargo_prep
+
+%generate_buildrequires
+%cargo_generate_buildrequires
+
+%build
+%cargo_build
+
+%install
+%cargo_install
+
+%if %{with check}
+%check
+%cargo_test
+%endif
+
+%changelog
+* Thu Jul 23 2020 Josh Stone <jistone(a)redhat.com> - 0.2.4-1
+- Initial package
3 years, 7 months
Architecture specific change in rpms/rust-tracing.git
by githook-noreply@fedoraproject.org
The package rpms/rust-tracing.git has added or updated architecture specific content in its
spec file (ExclusiveArch/ExcludeArch or %ifarch/%ifnarch) in commit(s):
https://src.fedoraproject.org/cgit/rpms/rust-tracing.git/commit/?id=b11a0....
Change:
+ExclusiveArch: %{rust_arches}
Thanks.
Full change:
============
commit b11a0c2f707e1c0dc14a9bc787a6e05f74b02b9d
Author: Josh Stone <cuviper(a)gmail.com>
Date: Tue Aug 25 11:14:00 2020 -0700
Actually commit the new spec
diff --git a/rust-tracing.spec b/rust-tracing.spec
new file mode 100644
index 0000000..8aa2d0a
--- /dev/null
+++ b/rust-tracing.spec
@@ -0,0 +1,294 @@
+# Generated by rust2rpm 13
+%bcond_without check
+%global debug_package %{nil}
+
+%global crate tracing
+
+Name: rust-%{crate}
+Version: 0.1.19
+Release: 1%{?dist}
+Summary: Application-level tracing for Rust
+
+# Upstream license specification: MIT
+License: MIT
+URL: https://crates.io/crates/tracing
+Source: %{crates_source}
+
+ExclusiveArch: %{rust_arches}
+%if %{__cargo_skip_build}
+BuildArch: noarch
+%endif
+
+BuildRequires: rust-packaging
+
+%global _description %{expand:
+Application-level tracing for Rust.}
+
+%description %{_description}
+
+%package devel
+Summary: %{summary}
+BuildArch: noarch
+
+%description devel %{_description}
+
+This package contains library source intended for building other packages
+which use "%{crate}" crate.
+
+%files devel
+%license LICENSE
+%doc README.md CHANGELOG.md
+%{cargo_registry}/%{crate}-%{version_no_tilde}/
+
+%package -n %{name}+default-devel
+Summary: %{summary}
+BuildArch: noarch
+
+%description -n %{name}+default-devel %{_description}
+
+This package contains library source intended for building other packages
+which use "default" feature of "%{crate}" crate.
+
+%files -n %{name}+default-devel
+%ghost %{cargo_registry}/%{crate}-%{version_no_tilde}/Cargo.toml
+
+%package -n %{name}+async-await-devel
+Summary: %{summary}
+BuildArch: noarch
+
+%description -n %{name}+async-await-devel %{_description}
+
+This package contains library source intended for building other packages
+which use "async-await" feature of "%{crate}" crate.
+
+%files -n %{name}+async-await-devel
+%ghost %{cargo_registry}/%{crate}-%{version_no_tilde}/Cargo.toml
+
+%package -n %{name}+attributes-devel
+Summary: %{summary}
+BuildArch: noarch
+
+%description -n %{name}+attributes-devel %{_description}
+
+This package contains library source intended for building other packages
+which use "attributes" feature of "%{crate}" crate.
+
+%files -n %{name}+attributes-devel
+%ghost %{cargo_registry}/%{crate}-%{version_no_tilde}/Cargo.toml
+
+%package -n %{name}+log-devel
+Summary: %{summary}
+BuildArch: noarch
+
+%description -n %{name}+log-devel %{_description}
+
+This package contains library source intended for building other packages
+which use "log" feature of "%{crate}" crate.
+
+%files -n %{name}+log-devel
+%ghost %{cargo_registry}/%{crate}-%{version_no_tilde}/Cargo.toml
+
+%package -n %{name}+log-always-devel
+Summary: %{summary}
+BuildArch: noarch
+
+%description -n %{name}+log-always-devel %{_description}
+
+This package contains library source intended for building other packages
+which use "log-always" feature of "%{crate}" crate.
+
+%files -n %{name}+log-always-devel
+%ghost %{cargo_registry}/%{crate}-%{version_no_tilde}/Cargo.toml
+
+%package -n %{name}+max_level_debug-devel
+Summary: %{summary}
+BuildArch: noarch
+
+%description -n %{name}+max_level_debug-devel %{_description}
+
+This package contains library source intended for building other packages
+which use "max_level_debug" feature of "%{crate}" crate.
+
+%files -n %{name}+max_level_debug-devel
+%ghost %{cargo_registry}/%{crate}-%{version_no_tilde}/Cargo.toml
+
+%package -n %{name}+max_level_error-devel
+Summary: %{summary}
+BuildArch: noarch
+
+%description -n %{name}+max_level_error-devel %{_description}
+
+This package contains library source intended for building other packages
+which use "max_level_error" feature of "%{crate}" crate.
+
+%files -n %{name}+max_level_error-devel
+%ghost %{cargo_registry}/%{crate}-%{version_no_tilde}/Cargo.toml
+
+%package -n %{name}+max_level_info-devel
+Summary: %{summary}
+BuildArch: noarch
+
+%description -n %{name}+max_level_info-devel %{_description}
+
+This package contains library source intended for building other packages
+which use "max_level_info" feature of "%{crate}" crate.
+
+%files -n %{name}+max_level_info-devel
+%ghost %{cargo_registry}/%{crate}-%{version_no_tilde}/Cargo.toml
+
+%package -n %{name}+max_level_off-devel
+Summary: %{summary}
+BuildArch: noarch
+
+%description -n %{name}+max_level_off-devel %{_description}
+
+This package contains library source intended for building other packages
+which use "max_level_off" feature of "%{crate}" crate.
+
+%files -n %{name}+max_level_off-devel
+%ghost %{cargo_registry}/%{crate}-%{version_no_tilde}/Cargo.toml
+
+%package -n %{name}+max_level_trace-devel
+Summary: %{summary}
+BuildArch: noarch
+
+%description -n %{name}+max_level_trace-devel %{_description}
+
+This package contains library source intended for building other packages
+which use "max_level_trace" feature of "%{crate}" crate.
+
+%files -n %{name}+max_level_trace-devel
+%ghost %{cargo_registry}/%{crate}-%{version_no_tilde}/Cargo.toml
+
+%package -n %{name}+max_level_warn-devel
+Summary: %{summary}
+BuildArch: noarch
+
+%description -n %{name}+max_level_warn-devel %{_description}
+
+This package contains library source intended for building other packages
+which use "max_level_warn" feature of "%{crate}" crate.
+
+%files -n %{name}+max_level_warn-devel
+%ghost %{cargo_registry}/%{crate}-%{version_no_tilde}/Cargo.toml
+
+%package -n %{name}+release_max_level_debug-devel
+Summary: %{summary}
+BuildArch: noarch
+
+%description -n %{name}+release_max_level_debug-devel %{_description}
+
+This package contains library source intended for building other packages
+which use "release_max_level_debug" feature of "%{crate}" crate.
+
+%files -n %{name}+release_max_level_debug-devel
+%ghost %{cargo_registry}/%{crate}-%{version_no_tilde}/Cargo.toml
+
+%package -n %{name}+release_max_level_error-devel
+Summary: %{summary}
+BuildArch: noarch
+
+%description -n %{name}+release_max_level_error-devel %{_description}
+
+This package contains library source intended for building other packages
+which use "release_max_level_error" feature of "%{crate}" crate.
+
+%files -n %{name}+release_max_level_error-devel
+%ghost %{cargo_registry}/%{crate}-%{version_no_tilde}/Cargo.toml
+
+%package -n %{name}+release_max_level_info-devel
+Summary: %{summary}
+BuildArch: noarch
+
+%description -n %{name}+release_max_level_info-devel %{_description}
+
+This package contains library source intended for building other packages
+which use "release_max_level_info" feature of "%{crate}" crate.
+
+%files -n %{name}+release_max_level_info-devel
+%ghost %{cargo_registry}/%{crate}-%{version_no_tilde}/Cargo.toml
+
+%package -n %{name}+release_max_level_off-devel
+Summary: %{summary}
+BuildArch: noarch
+
+%description -n %{name}+release_max_level_off-devel %{_description}
+
+This package contains library source intended for building other packages
+which use "release_max_level_off" feature of "%{crate}" crate.
+
+%files -n %{name}+release_max_level_off-devel
+%ghost %{cargo_registry}/%{crate}-%{version_no_tilde}/Cargo.toml
+
+%package -n %{name}+release_max_level_trace-devel
+Summary: %{summary}
+BuildArch: noarch
+
+%description -n %{name}+release_max_level_trace-devel %{_description}
+
+This package contains library source intended for building other packages
+which use "release_max_level_trace" feature of "%{crate}" crate.
+
+%files -n %{name}+release_max_level_trace-devel
+%ghost %{cargo_registry}/%{crate}-%{version_no_tilde}/Cargo.toml
+
+%package -n %{name}+release_max_level_warn-devel
+Summary: %{summary}
+BuildArch: noarch
+
+%description -n %{name}+release_max_level_warn-devel %{_description}
+
+This package contains library source intended for building other packages
+which use "release_max_level_warn" feature of "%{crate}" crate.
+
+%files -n %{name}+release_max_level_warn-devel
+%ghost %{cargo_registry}/%{crate}-%{version_no_tilde}/Cargo.toml
+
+%package -n %{name}+std-devel
+Summary: %{summary}
+BuildArch: noarch
+
+%description -n %{name}+std-devel %{_description}
+
+This package contains library source intended for building other packages
+which use "std" feature of "%{crate}" crate.
+
+%files -n %{name}+std-devel
+%ghost %{cargo_registry}/%{crate}-%{version_no_tilde}/Cargo.toml
+
+%package -n %{name}+tracing-attributes-devel
+Summary: %{summary}
+BuildArch: noarch
+
+%description -n %{name}+tracing-attributes-devel %{_description}
+
+This package contains library source intended for building other packages
+which use "tracing-attributes" feature of "%{crate}" crate.
+
+%files -n %{name}+tracing-attributes-devel
+%ghost %{cargo_registry}/%{crate}-%{version_no_tilde}/Cargo.toml
+
+%prep
+%autosetup -n %{crate}-%{version_no_tilde} -p1
+%cargo_prep
+
+%generate_buildrequires
+%cargo_generate_buildrequires
+
+%build
+%cargo_build
+
+%install
+%cargo_install
+
+%if %{with check}
+%check
+%cargo_test
+%endif
+
+%changelog
+* Tue Aug 25 2020 Josh Stone <jistone(a)redhat.com> - 0.1.19-1
+- Update to 0.1.19
+
+* Thu Jul 23 2020 Josh Stone <jistone(a)redhat.com> - 0.1.17-1
+- Initial package
3 years, 7 months
Architecture specific change in rpms/nodejs-generic-pool.git
by githook-noreply@fedoraproject.org
The package rpms/nodejs-generic-pool.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/nodejs-generic-pool.git/commit/?i....
Change:
-ExclusiveArch: %{ix86} x86_64 %{arm} noarch
Thanks.
Full change:
============
commit aecdfc99bdd5a4bb3d0646013789a2018772c25c
Author: Piotr <piotr1212(a)gmail.com>
Date: Tue Aug 25 18:48:52 2020 +0200
Unretire and update to 2.2.0
diff --git a/.gitignore b/.gitignore
index 883ece8..67fb776 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1 +1,2 @@
/generic-pool-2.0.3.tgz
+/generic-pool-2.2.2.tgz
diff --git a/nodejs-generic-pool.spec b/nodejs-generic-pool.spec
index 4c29036..44334a4 100644
--- a/nodejs-generic-pool.spec
+++ b/nodejs-generic-pool.spec
@@ -3,8 +3,8 @@
%global enable_tests 0
Name: nodejs-generic-pool
-Version: 2.0.3
-Release: 13%{?dist}
+Version: 2.2.2
+Release: 1%{?dist}
Summary: Generic resource pooling for Node.js
# License text is included in README.md.
License: MIT
@@ -12,13 +12,9 @@ URL: https://github.com/coopernurse/node-pool
Source0: http://registry.npmjs.org/generic-pool/-/generic-pool-%{version}.tgz
BuildArch: noarch
-%if 0%{?fedora} >= 19
ExclusiveArch: %{nodejs_arches} noarch
-%else
-ExclusiveArch: %{ix86} x86_64 %{arm} noarch
-%endif
-BuildRequires: nodejs-packaging
+BuildRequires: nodejs
%if 0%{?enable_tests}
BuildRequires: npm(expresso)
@@ -44,8 +40,10 @@ cp -pr package.json lib/ \
%nodejs_symlink_deps
-%if 0%{?enable_tests}
%check
+%{__nodejs} -e 'require("./")'
+
+%if 0%{?enable_tests}
%{nodejs_sitelib}/expresso/bin/expresso -I lib test/*.js
%endif
@@ -56,6 +54,9 @@ cp -pr package.json lib/ \
%changelog
+* Tue Aug 25 2020 Piotr Popieluch <piotr1212(a)gmail.com> - 2.2.2-1
+- Unretire and update to 2.2.0
+
* Wed Jan 29 2020 Fedora Release Engineering <releng(a)fedoraproject.org> - 2.0.3-13
- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
diff --git a/sources b/sources
index d71c2ed..4f0ed6b 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-8a60e95fbe1f683799fcb2658678e648 generic-pool-2.0.3.tgz
+SHA512 (generic-pool-2.2.2.tgz) = c0e0a73d9f8a31677d00d5e4a1d1c928a23d49d9778b54eb1853c5287f29a64c59e7b96be97b4621fa02063a555b3f0341c36aaf3d447ffa92efd8780a2b0f3d
3 years, 7 months
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=642af4d65a6ae8....
Change:
+%ifarch s390
Thanks.
Full change:
============
commit 642af4d65a6ae8825306305765a595a6f10eba47
Author: Siteshwar Vashisht <svashisht(a)redhat.com>
Date: Thu Aug 13 16:44:02 2020 +0200
Restore ksh to version 20120801
But keep alternatives as they are used in RHEL
Resolves: #1868715
diff --git a/.gitignore b/.gitignore
index ccf4b18..6be3080 100644
--- a/.gitignore
+++ b/.gitignore
@@ -59,6 +59,3 @@ 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
-/ksh-2020.0.0-beta1.tar.gz
-/ksh-2020.0.0.tar.gz
diff --git a/ksh-20070328-builtins.patch b/ksh-20070328-builtins.patch
new file mode 100644
index 0000000..061bf9a
--- /dev/null
+++ b/ksh-20070328-builtins.patch
@@ -0,0 +1,11 @@
+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
new file mode 100644
index 0000000..8fe4225
--- /dev/null
+++ b/ksh-20080202-manfix.patch
@@ -0,0 +1,47 @@
+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
new file mode 100644
index 0000000..5086499
--- /dev/null
+++ b/ksh-20100202-pathvar.patch
@@ -0,0 +1,20 @@
+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
new file mode 100644
index 0000000..99abb55
--- /dev/null
+++ b/ksh-20100621-fdstatus.patch
@@ -0,0 +1,54 @@
+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
new file mode 100644
index 0000000..bced575
--- /dev/null
+++ b/ksh-20100621-manfix3.patch
@@ -0,0 +1,12 @@
+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
new file mode 100644
index 0000000..87cb13c
--- /dev/null
+++ b/ksh-20100826-fixregr.patch
@@ -0,0 +1,68 @@
+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
new file mode 100644
index 0000000..7a034b3
--- /dev/null
+++ b/ksh-20120801-F_dupfd_cloexec.patch
@@ -0,0 +1,22 @@
+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
new file mode 100644
index 0000000..88b0ba9
--- /dev/null
+++ b/ksh-20120801-alarmifs.patch
@@ -0,0 +1,33 @@
+--- 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-annocheck.patch b/ksh-20120801-annocheck.patch
new file mode 100644
index 0000000..0aa148b
--- /dev/null
+++ b/ksh-20120801-annocheck.patch
@@ -0,0 +1,150 @@
+diff --git a/src/lib/libast/Mamfile b/src/lib/libast/Mamfile
+--- a/src/lib/libast/Mamfile
++++ b/src/lib/libast/Mamfile
+@@ -535,7 +535,7 @@ done misc/findlib.h
+ done misc/fastfind.c
+ meta fastfind.o %.c>%.o misc/fastfind.c fastfind
+ prev misc/fastfind.c
+-exec - ${CC} ${mam_cc_FLAGS} ${-debug-symbols?1?${mam_cc_DEBUG} -D_BLD_DEBUG?${CCFLAGS.FORCE}?} -I. -Icomp -Imisc -Iinclude -Istd -D_PACKAGE_ast -c misc/fastfind.c
++exec - ${CC} ${mam_cc_FLAGS} ${CCFLAGS} ${-debug-symbols?1?${mam_cc_DEBUG} -D_BLD_DEBUG?${CCFLAGS.FORCE}?} -I. -Icomp -Imisc -Iinclude -Istd -D_PACKAGE_ast -c misc/fastfind.c
+ done fastfind.o generated
+ make hashalloc.o
+ make hash/hashalloc.c
+@@ -1641,7 +1641,7 @@ done sfio/sfhdr.h
+ done port/mc.c
+ meta mc.o %.c>%.o port/mc.c mc
+ prev port/mc.c
+-exec - ${CC} ${mam_cc_FLAGS} ${-debug-symbols?1?${mam_cc_DEBUG} -D_BLD_DEBUG?${CCFLAGS.FORCE}?} ${DEBUG+-DDEBUG=${DEBUG}} -I. -Icomp -Iport -Isfio -Iinclude -Istd -I${INSTALLROOT}/include -D_PACKAGE_ast -c port/mc.c
++exec - ${CC} ${mam_cc_FLAGS} ${CCFLAGS} ${-debug-symbols?1?${mam_cc_DEBUG} -D_BLD_DEBUG?${CCFLAGS.FORCE}?} ${DEBUG+-DDEBUG=${DEBUG}} -I. -Icomp -Iport -Isfio -Iinclude -Istd -I${INSTALLROOT}/include -D_PACKAGE_ast -c port/mc.c
+ done mc.o generated
+ make base64.o
+ make string/base64.c
+@@ -2349,7 +2349,7 @@ prev tmx.h implicit
+ done tm/tmxfmt.c
+ meta tmxfmt.o %.c>%.o tm/tmxfmt.c tmxfmt
+ prev tm/tmxfmt.c
+-exec - ${CC} ${mam_cc_FLAGS} ${-debug-symbols?1?${mam_cc_DEBUG} -D_BLD_DEBUG?${CCFLAGS.FORCE}?} -I. -Icomp -Iinclude -Istd -D_PACKAGE_ast -c tm/tmxfmt.c
++exec - ${CC} ${mam_cc_FLAGS} ${CCFLAGS} ${-debug-symbols?1?${mam_cc_DEBUG} -D_BLD_DEBUG?${CCFLAGS.FORCE}?} -I. -Icomp -Iinclude -Istd -D_PACKAGE_ast -c tm/tmxfmt.c
+ done tmxfmt.o generated
+ make tmxgettime.o
+ make tm/tmxgettime.c
+@@ -3011,7 +3011,7 @@ prev include/ast.h implicit
+ done comp/spawnveg.c
+ meta spawnveg.o %.c>%.o comp/spawnveg.c spawnveg
+ prev comp/spawnveg.c
+-exec - ${CC} ${mam_cc_FLAGS} ${-debug-symbols?1?${mam_cc_DEBUG} -D_BLD_DEBUG?${CCFLAGS.FORCE}?} -I. -Icomp -Iinclude -Istd -D_PACKAGE_ast -c comp/spawnveg.c
++exec - ${CC} ${mam_cc_FLAGS} ${CCFLAGS} ${-debug-symbols?1?${mam_cc_DEBUG} -D_BLD_DEBUG?${CCFLAGS.FORCE}?} -I. -Icomp -Iinclude -Istd -D_PACKAGE_ast -c comp/spawnveg.c
+ done spawnveg.o generated
+ make vfork.o
+ make comp/vfork.c
+@@ -3812,7 +3812,7 @@ prev regex/reglib.h implicit
+ done regex/regcomp.c
+ meta regcomp.o %.c>%.o regex/regcomp.c regcomp
+ prev regex/regcomp.c
+-exec - ${CC} ${mam_cc_FLAGS} ${-debug-symbols?1?${mam_cc_DEBUG} -D_BLD_DEBUG?${CCFLAGS.FORCE}?} -I. -Icomp -Iport -Iregex -Iinclude -Istd -I${INSTALLROOT}/include -D_PACKAGE_ast -c regex/regcomp.c
++exec - ${CC} ${mam_cc_FLAGS} ${CCFLAGS} ${-debug-symbols?1?${mam_cc_DEBUG} -D_BLD_DEBUG?${CCFLAGS.FORCE}?} -I. -Icomp -Iport -Iregex -Iinclude -Istd -I${INSTALLROOT}/include -D_PACKAGE_ast -c regex/regcomp.c
+ done regcomp.o generated
+ make regcache.o
+ make regex/regcache.c
+@@ -4251,7 +4251,7 @@ prev sfio/sfhdr.h implicit
+ done sfio/sfprintf.c
+ meta sfprintf.o %.c>%.o sfio/sfprintf.c sfprintf
+ prev sfio/sfprintf.c
+-exec - ${CC} ${mam_cc_FLAGS} ${CCFLAGS.FORCE} ${mam_cc_NOPROTECT} -I. -Icomp -Iport -Isfio -Iinclude -Istd -I${INSTALLROOT}/include -D_PACKAGE_ast -c sfio/sfprintf.c
++exec - ${CC} ${mam_cc_FLAGS} ${CCFLAGS} ${CCFLAGS.FORCE} ${mam_cc_NOPROTECT} -I. -Icomp -Iport -Isfio -Iinclude -Istd -I${INSTALLROOT}/include -D_PACKAGE_ast -c sfio/sfprintf.c
+ done sfprintf.o generated
+ make sfputd.o
+ make sfio/sfputd.c
+@@ -4291,7 +4291,7 @@ prev sfio/sfhdr.h implicit
+ done sfio/sfrd.c
+ meta sfrd.o %.c>%.o sfio/sfrd.c sfrd
+ prev sfio/sfrd.c
+-exec - ${CC} ${mam_cc_FLAGS} ${-debug-symbols?1?${mam_cc_DEBUG} -D_BLD_DEBUG?${CCFLAGS.FORCE}?} ${DEBUG+-DDEBUG=${DEBUG}} -I. -Icomp -Iport -Isfio -Iinclude -Istd -I${INSTALLROOT}/include -D_PACKAGE_ast -c sfio/sfrd.c
++exec - ${CC} ${mam_cc_FLAGS} ${CCFLAGS} ${-debug-symbols?1?${mam_cc_DEBUG} -D_BLD_DEBUG?${CCFLAGS.FORCE}?} ${DEBUG+-DDEBUG=${DEBUG}} -I. -Icomp -Iport -Isfio -Iinclude -Istd -I${INSTALLROOT}/include -D_PACKAGE_ast -c sfio/sfrd.c
+ done sfrd.o generated
+ make sfread.o
+ make sfio/sfread.c
+@@ -4315,7 +4315,7 @@ prev sfio/sfhdr.h implicit
+ done sfio/sfscanf.c
+ meta sfscanf.o %.c>%.o sfio/sfscanf.c sfscanf
+ prev sfio/sfscanf.c
+-exec - ${CC} ${mam_cc_FLAGS} ${CCFLAGS.FORCE} ${mam_cc_NOPROTECT} -I. -Icomp -Iport -Isfio -Iinclude -Istd -I${INSTALLROOT}/include -D_PACKAGE_ast -c sfio/sfscanf.c
++exec - ${CC} ${mam_cc_FLAGS} ${CCFLAGS} ${CCFLAGS.FORCE} ${mam_cc_NOPROTECT} -I. -Icomp -Iport -Isfio -Iinclude -Istd -I${INSTALLROOT}/include -D_PACKAGE_ast -c sfio/sfscanf.c
+ done sfscanf.o generated
+ make sfseek.o
+ make sfio/sfseek.c
+@@ -4331,7 +4331,7 @@ prev sfio/sfhdr.h implicit
+ done sfio/sfset.c
+ meta sfset.o %.c>%.o sfio/sfset.c sfset
+ prev sfio/sfset.c
+-exec - ${CC} ${mam_cc_FLAGS} ${-debug-symbols?1?${mam_cc_DEBUG} -D_BLD_DEBUG?${CCFLAGS.FORCE}?} ${DEBUG+-DDEBUG=${DEBUG}} -I. -Icomp -Iport -Isfio -Iinclude -Istd -I${INSTALLROOT}/include -D_PACKAGE_ast -c sfio/sfset.c
++exec - ${CC} ${mam_cc_FLAGS} ${CCFLAGS} ${-debug-symbols?1?${mam_cc_DEBUG} -D_BLD_DEBUG?${CCFLAGS.FORCE}?} ${DEBUG+-DDEBUG=${DEBUG}} -I. -Icomp -Iport -Isfio -Iinclude -Istd -I${INSTALLROOT}/include -D_PACKAGE_ast -c sfio/sfset.c
+ done sfset.o generated
+ make sfsetbuf.o
+ make sfio/sfsetbuf.c
+@@ -4445,7 +4445,7 @@ prev sfio/sfhdr.h implicit
+ done sfio/sfvprintf.c
+ meta sfvprintf.o %.c>%.o sfio/sfvprintf.c sfvprintf
+ prev sfio/sfvprintf.c
+-exec - ${CC} ${mam_cc_FLAGS} ${-debug-symbols?1?${mam_cc_DEBUG} -D_BLD_DEBUG?${CCFLAGS.FORCE}?} ${mam_cc_NOPROTECT} ${DEBUG+-DDEBUG=${DEBUG}} -I. -Icomp -Iport -Isfio -Iinclude -Istd -I${INSTALLROOT}/include -D_PACKAGE_ast -c sfio/sfvprintf.c
++exec - ${CC} ${mam_cc_FLAGS} ${CCFLAGS} ${-debug-symbols?1?${mam_cc_DEBUG} -D_BLD_DEBUG?${CCFLAGS.FORCE}?} ${mam_cc_NOPROTECT} ${DEBUG+-DDEBUG=${DEBUG}} -I. -Icomp -Iport -Isfio -Iinclude -Istd -I${INSTALLROOT}/include -D_PACKAGE_ast -c sfio/sfvprintf.c
+ done sfvprintf.o generated
+ make sfvscanf.o
+ make sfio/sfvscanf.c
+@@ -4454,7 +4454,7 @@ prev sfio/sfhdr.h implicit
+ done sfio/sfvscanf.c
+ meta sfvscanf.o %.c>%.o sfio/sfvscanf.c sfvscanf
+ prev sfio/sfvscanf.c
+-exec - ${CC} ${mam_cc_FLAGS} ${CCFLAGS.FORCE} ${mam_cc_NOPROTECT} -I. -Icomp -Iport -Isfio -Iinclude -Istd -I${INSTALLROOT}/include -D_PACKAGE_ast -c sfio/sfvscanf.c
++exec - ${CC} ${mam_cc_FLAGS} ${CCFLAGS} ${CCFLAGS.FORCE} ${mam_cc_NOPROTECT} -I. -Icomp -Iport -Isfio -Iinclude -Istd -I${INSTALLROOT}/include -D_PACKAGE_ast -c sfio/sfvscanf.c
+ done sfvscanf.o generated
+ make sfwr.o
+ make sfio/sfwr.c
+diff --git a/src/lib/libast/string/strdup.c b/src/lib/libast/string/strdup.c
+--- a/src/lib/libast/string/strdup.c
++++ b/src/lib/libast/string/strdup.c
+@@ -50,18 +50,11 @@ __STDPP__directive pragma pp:nohide strdup
+ #define extern __EXPORT__
+ #endif
+
+-#pragma GCC push_options
+-#pragma GCC optimize ("O0")
+-
+-
+ extern char*
+-strdup(register const char* s)
++_ast_strdup(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/src/lib/libcmd/Mamfile b/src/lib/libcmd/Mamfile
+--- a/src/lib/libcmd/Mamfile
++++ b/src/lib/libcmd/Mamfile
+@@ -611,7 +611,7 @@ make id.o
+ prev id.c
+ meta id.o %.c>%.o id.c id
+ prev id.c
+-exec - ${CC} ${mam_cc_FLAGS} ${-debug-symbols?1?${mam_cc_DEBUG} -D_BLD_DEBUG?${CCFLAGS.FORCE}?} -I. -I${PACKAGE_ast_INCLUDE} -DERROR_CATALOG=\""libcmd"\" -D_BLD_cmd -D_PACKAGE_ast -DUSAGE_LICENSE=\""[-author?Glenn Fowler <gsf(a)research.att.com>][-author?David Korn <dgk(a)research.att.com>][-copyright?Copyright (c) 1992-2012 AT&T Intellectual Property][-license?http://www.eclipse.org/org/documents/epl-v10.html][--c...]"\" -c id.c
++exec - ${CC} ${mam_cc_FLAGS} ${CCFLAGS} ${-debug-symbols?1?${mam_cc_DEBUG} -D_BLD_DEBUG?${CCFLAGS.FORCE}?} -I. -I${PACKAGE_ast_INCLUDE} -DERROR_CATALOG=\""libcmd"\" -D_BLD_cmd -D_PACKAGE_ast -DUSAGE_LICENSE=\""[-author?Glenn Fowler <gsf(a)research.att.com>][-author?David Korn <dgk(a)research.att.com>][-copyright?Copyright (c) 1992-2012 AT&T Intellectual Property][-license?http://www.eclipse.org/org/documents/epl-v10.html][--c...]"\" -c id.c
+ done id.o generated
+ make join.o
+ prev join.c
+diff --git a/src/lib/libdll/Mamfile b/src/lib/libdll/Mamfile
+index fbeea49..a392d55 100644
+--- a/src/lib/libdll/Mamfile
++++ b/src/lib/libdll/Mamfile
+@@ -259,7 +259,7 @@ prev ${PACKAGE_ast_INCLUDE}/ast.h implicit
+ done dllscan.c
+ meta dllscan.o %.c>%.o dllscan.c dllscan
+ prev dllscan.c
+-exec - ${CC} ${mam_cc_FLAGS} ${-debug-symbols?1?${mam_cc_DEBUG} -D_BLD_DEBUG?${CCFLAGS.FORCE}?} -I. -I${PACKAGE_ast_INCLUDE} -D_BLD_dll -D_PACKAGE_ast -c dllscan.c
++exec - ${CC} ${mam_cc_FLAGS} ${CCFLAGS} ${-debug-symbols?1?${mam_cc_DEBUG} -D_BLD_DEBUG?${CCFLAGS.FORCE}?} -I. -I${PACKAGE_ast_INCLUDE} -D_BLD_dll -D_PACKAGE_ast -c dllscan.c
+ done dllscan.o generated
+ make dllcheck.o
+ make dllcheck.c
diff --git a/ksh-20120801-argvfix.patch b/ksh-20120801-argvfix.patch
new file mode 100644
index 0000000..b0e1a78
--- /dev/null
+++ b/ksh-20120801-argvfix.patch
@@ -0,0 +1,13 @@
+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
new file mode 100644
index 0000000..1af7d16
--- /dev/null
+++ b/ksh-20120801-assoc-unset-leak.patch
@@ -0,0 +1,20 @@
+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
new file mode 100644
index 0000000..cd26316
--- /dev/null
+++ b/ksh-20120801-badgcc.patch
@@ -0,0 +1,22 @@
+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
new file mode 100644
index 0000000..b95db66
--- /dev/null
+++ b/ksh-20120801-ccflags.patch
@@ -0,0 +1,21 @@
+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
new file mode 100644
index 0000000..59265dd
--- /dev/null
+++ b/ksh-20120801-cdfix.patch
@@ -0,0 +1,14 @@
+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
new file mode 100644
index 0000000..84bb491
--- /dev/null
+++ b/ksh-20120801-cdfix2.patch
@@ -0,0 +1,25 @@
+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
new file mode 100644
index 0000000..7e47f71
--- /dev/null
+++ b/ksh-20120801-cdfix3.patch
@@ -0,0 +1,12 @@
+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
new file mode 100644
index 0000000..c82cb4c
--- /dev/null
+++ b/ksh-20120801-cdfork.patch
@@ -0,0 +1,40 @@
+--- 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
new file mode 100644
index 0000000..c64e2a7
--- /dev/null
+++ b/ksh-20120801-covsfix.patch
@@ -0,0 +1,58 @@
+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-covsfix2.patch b/ksh-20120801-covsfix2.patch
new file mode 100644
index 0000000..9060b2a
--- /dev/null
+++ b/ksh-20120801-covsfix2.patch
@@ -0,0 +1,57 @@
+diff --git a/src/cmd/ksh93/edit/edit.c b/src/cmd/ksh93/edit/edit.c
+--- a/src/cmd/ksh93/edit/edit.c
++++ b/src/cmd/ksh93/edit/edit.c
+@@ -46,6 +46,8 @@
+ extern char ed_errbuf[];
+ char e_version[] = "\n@(#)$Id: Editlib version 1993-12-28 r $\0\n";
+ #endif /* KSHELL */
++
++#include <sys/ioctl.h>
+ #include "io.h"
+ #include "terminal.h"
+ #include "history.h"
+diff --git a/src/cmd/ksh93/include/defs.h b/src/cmd/ksh93/include/defs.h
+--- a/src/cmd/ksh93/include/defs.h
++++ b/src/cmd/ksh93/include/defs.h
+@@ -449,6 +449,8 @@ extern int sh_whence(char**,int);
+ extern Namval_t *sh_fsearch(Shell_t*,const char *,int);
+ #endif /* SHOPT_NAMESPACE */
+
++extern int sh_diropenat(Shell_t *, int, const char *, bool xattr);
++
+ #ifndef ERROR_dictionary
+ # define ERROR_dictionary(s) (s)
+ #endif
+diff --git a/src/lib/libast/port/astwinsize.c b/src/lib/libast/port/astwinsize.c
+--- a/src/lib/libast/port/astwinsize.c
++++ b/src/lib/libast/port/astwinsize.c
+@@ -28,6 +28,7 @@
+
+ #include <ast.h>
+ #include <ast_tty.h>
++#include <sys/ioctl.h>
+
+ #if defined(__STDPP__directive) && defined(__STDPP__hide)
+ __STDPP__directive pragma pp:hide ioctl sleep
+@@ -36,10 +37,6 @@ __STDPP__directive pragma pp:hide ioctl sleep
+ #define sleep ______sleep
+ #endif
+
+-#if _sys_ioctl
+-#include <sys/ioctl.h>
+-#endif
+-
+ #if defined(TIOCGWINSZ)
+ #if _sys_stream && _sys_ptem
+ #include <sys/stream.h>
+diff --git a/src/lib/libcmd/tail.c b/src/lib/libcmd/tail.c
+--- a/src/lib/libcmd/tail.c
++++ b/src/lib/libcmd/tail.c
+@@ -104,6 +104,7 @@ USAGE_LICENSE
+ #include <ls.h>
+ #include <tv.h>
+ #include <rev.h>
++#include <time.h>
+
+ #define COUNT (1<<0)
+ #define ERROR (1<<1)
diff --git a/ksh-20120801-crash.patch b/ksh-20120801-crash.patch
new file mode 100644
index 0000000..37b7962
--- /dev/null
+++ b/ksh-20120801-crash.patch
@@ -0,0 +1,64 @@
+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-cve-2019-14868.patch b/ksh-20120801-cve-2019-14868.patch
new file mode 100644
index 0000000..b0703f3
--- /dev/null
+++ b/ksh-20120801-cve-2019-14868.patch
@@ -0,0 +1,52 @@
+diff --git a/src/cmd/ksh93/sh/arith.c b/src/cmd/ksh93/sh/arith.c
+--- a/src/cmd/ksh93/sh/arith.c
++++ b/src/cmd/ksh93/sh/arith.c
+@@ -513,21 +513,34 @@ Sfdouble_t sh_strnum(register const char *str, char** ptr, int mode)
+ char base=(shp->inarith?0:10), *last;
+ if(*str==0)
+ {
+- if(ptr)
+- *ptr = (char*)str;
+- return(0);
+- }
+- errno = 0;
+- d = strtonll(str,&last,&base,-1);
+- if(*last || errno)
+- {
+- if(!last || *last!='.' || last[1]!='.')
+- d = strval(shp,str,&last,arith,mode);
+- if(!ptr && *last && mode>0)
+- errormsg(SH_DICT,ERROR_exit(1),e_lexbadchar,*last,str);
++ d = 0.0;
++ last = (char*)str;
++ } else {
++ errno = 0;
++ d = strtonll(str,&last,&base,-1);
++ if (*last && !shp->inarith && sh_isstate(SH_INIT)) {
++ // This call is to handle "base#value" literals if we're importing untrusted env vars.
++ errno = 0;
++ d = strtonll(str, &last, NULL, -1);
++ }
++
++ if(*last || errno)
++ {
++ if (sh_isstate(SH_INIT)) {
++ // Initializing means importing untrusted env vars. Since the string does not appear
++ // to be a recognized numeric literal give up. We can't safely call strval() since
++ // that allows arbitrary expressions which would create a security vulnerability.
++ d = 0.0;
++ } else {
++ if(!last || *last!='.' || last[1]!='.')
++ d = strval(shp,str,&last,arith,mode);
++ if(!ptr && *last && mode>0)
++ errormsg(SH_DICT,ERROR_exit(1),e_lexbadchar,*last,str);
++ }
++ } else if (!d && *str=='-') {
++ d = -0.0;
++ }
+ }
+- else if (!d && *str=='-')
+- d = -0.0;
+ if(ptr)
+ *ptr = last;
+ return(d);
diff --git a/ksh-20120801-dotdoublefree.patch b/ksh-20120801-dotdoublefree.patch
new file mode 100644
index 0000000..bf29cb1
--- /dev/null
+++ b/ksh-20120801-dotdoublefree.patch
@@ -0,0 +1,19 @@
+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
new file mode 100644
index 0000000..c888b31
--- /dev/null
+++ b/ksh-20120801-emptyarrayinit.patch
@@ -0,0 +1,11 @@
+--- 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
new file mode 100644
index 0000000..0605f6e
--- /dev/null
+++ b/ksh-20120801-fd2lost.patch
@@ -0,0 +1,72 @@
+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
new file mode 100644
index 0000000..676cc27
--- /dev/null
+++ b/ksh-20120801-filecomsubst.patch
@@ -0,0 +1,11 @@
+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
new file mode 100644
index 0000000..7a1a5c1
--- /dev/null
+++ b/ksh-20120801-forkbomb.patch
@@ -0,0 +1,12 @@
+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
new file mode 100644
index 0000000..1f5cb17
--- /dev/null
+++ b/ksh-20120801-fununset.patch
@@ -0,0 +1,12 @@
+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
new file mode 100644
index 0000000..28be43b
--- /dev/null
+++ b/ksh-20120801-glibc-build-fix.patch
@@ -0,0 +1,38 @@
+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
new file mode 100644
index 0000000..880071c
--- /dev/null
+++ b/ksh-20120801-heresub.patch
@@ -0,0 +1,32 @@
+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
new file mode 100644
index 0000000..8f3a355
--- /dev/null
+++ b/ksh-20120801-iso8859.patch
@@ -0,0 +1,74 @@
+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
new file mode 100644
index 0000000..1749288
--- /dev/null
+++ b/ksh-20120801-jobwait-sigstop.patch
@@ -0,0 +1,11 @@
+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
new file mode 100644
index 0000000..9b4b972
--- /dev/null
+++ b/ksh-20120801-kia.patch
@@ -0,0 +1,12 @@
+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
new file mode 100644
index 0000000..cc68406
--- /dev/null
+++ b/ksh-20120801-kshmfix.patch
@@ -0,0 +1,66 @@
+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
new file mode 100644
index 0000000..9150da8
--- /dev/null
+++ b/ksh-20120801-lexfix.patch
@@ -0,0 +1,56 @@
+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
new file mode 100644
index 0000000..189d254
--- /dev/null
+++ b/ksh-20120801-locking.patch
@@ -0,0 +1,26 @@
+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
new file mode 100644
index 0000000..004a5eb
--- /dev/null
+++ b/ksh-20120801-macro.patch
@@ -0,0 +1,178 @@
+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
new file mode 100644
index 0000000..6355445
--- /dev/null
+++ b/ksh-20120801-manfix4.patch
@@ -0,0 +1,12 @@
+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
new file mode 100644
index 0000000..1b71a57
--- /dev/null
+++ b/ksh-20120801-mb-after-argvar.patch
@@ -0,0 +1,15 @@
+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
new file mode 100644
index 0000000..31f1eb9
--- /dev/null
+++ b/ksh-20120801-memlik.patch
@@ -0,0 +1,37 @@
+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
new file mode 100644
index 0000000..9df57d2
--- /dev/null
+++ b/ksh-20120801-memlik3.patch
@@ -0,0 +1,76 @@
+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
new file mode 100644
index 0000000..fbf016a
--- /dev/null
+++ b/ksh-20120801-mlikfiks.patch
@@ -0,0 +1,34 @@
+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
new file mode 100644
index 0000000..d992a88
--- /dev/null
+++ b/ksh-20120801-mtty.patch
@@ -0,0 +1,12 @@
+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
new file mode 100644
index 0000000..47128e0
--- /dev/null
+++ b/ksh-20120801-noexeccdfix.patch
@@ -0,0 +1,40 @@
+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
new file mode 100644
index 0000000..20cdeb9
--- /dev/null
+++ b/ksh-20120801-nohupfork.patch
@@ -0,0 +1,11 @@
+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
new file mode 100644
index 0000000..5d7e7a4
--- /dev/null
+++ b/ksh-20120801-nomulti.patch
@@ -0,0 +1,11 @@
+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
new file mode 100644
index 0000000..93b7e15
--- /dev/null
+++ b/ksh-20120801-nv_open-memcmp.patch
@@ -0,0 +1,12 @@
+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
new file mode 100644
index 0000000..8ee0863
--- /dev/null
+++ b/ksh-20120801-oldenvinit.patch
@@ -0,0 +1,95 @@
+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
new file mode 100644
index 0000000..1dc7695
--- /dev/null
+++ b/ksh-20120801-parserfix.patch
@@ -0,0 +1,26 @@
+--- 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
new file mode 100644
index 0000000..a4b44d0
--- /dev/null
+++ b/ksh-20120801-posix-exit.patch
@@ -0,0 +1,24 @@
+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
new file mode 100644
index 0000000..5af1053
--- /dev/null
+++ b/ksh-20120801-retfix.patch
@@ -0,0 +1,14 @@
+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
new file mode 100644
index 0000000..ae9dfd7
--- /dev/null
+++ b/ksh-20120801-rmdirfix.patch
@@ -0,0 +1,505 @@
+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
new file mode 100644
index 0000000..015bc85
--- /dev/null
+++ b/ksh-20120801-roundit.patch
@@ -0,0 +1,12 @@
+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
new file mode 100644
index 0000000..bdd9154
--- /dev/null
+++ b/ksh-20120801-sh_iovalidfd.patch
@@ -0,0 +1,79 @@
+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
new file mode 100644
index 0000000..8dac4a1
--- /dev/null
+++ b/ksh-20120801-subshell-jobwait.patch
@@ -0,0 +1,14 @@
+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
new file mode 100644
index 0000000..24c7f6b
--- /dev/null
+++ b/ksh-20120801-subshell-leak.patch
@@ -0,0 +1,20 @@
+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
new file mode 100644
index 0000000..b820e1c
--- /dev/null
+++ b/ksh-20120801-sufix.patch
@@ -0,0 +1,11 @@
+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
new file mode 100644
index 0000000..aaeef77
--- /dev/null
+++ b/ksh-20120801-syntax-error.patch
@@ -0,0 +1,12 @@
+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
new file mode 100644
index 0000000..962763e
--- /dev/null
+++ b/ksh-20120801-tabfix.patch
@@ -0,0 +1,18 @@
+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
new file mode 100644
index 0000000..41e17c8
--- /dev/null
+++ b/ksh-20120801-tpstl.patch
@@ -0,0 +1,12 @@
+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
new file mode 100644
index 0000000..91cb1a8
--- /dev/null
+++ b/ksh-20120801-trapcom.patch
@@ -0,0 +1,98 @@
+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
new file mode 100644
index 0000000..03b56b8
--- /dev/null
+++ b/ksh-20120801-typeset.patch
@@ -0,0 +1,16 @@
+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
new file mode 100644
index 0000000..7777270
--- /dev/null
+++ b/ksh-20120801-unset-param.patch
@@ -0,0 +1,17 @@
+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
new file mode 100644
index 0000000..a0bc7d2
--- /dev/null
+++ b/ksh-20120801-validate-fd.patch
@@ -0,0 +1,11 @@
+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
new file mode 100644
index 0000000..496e0bf
--- /dev/null
+++ b/ksh-20120801-xufix.patch
@@ -0,0 +1,29 @@
+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
new file mode 100644
index 0000000..0862880
--- /dev/null
+++ b/ksh-20130214-fixkill.patch
@@ -0,0 +1,21 @@
+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
new file mode 100644
index 0000000..5b29017
--- /dev/null
+++ b/ksh-20130613-cdfix4.patch
@@ -0,0 +1,15 @@
+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
new file mode 100644
index 0000000..4761a34
--- /dev/null
+++ b/ksh-20130628-longer.patch
@@ -0,0 +1,58 @@
+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
new file mode 100644
index 0000000..9899392
--- /dev/null
+++ b/ksh-20140301-fikspand.patch
@@ -0,0 +1,12 @@
+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
new file mode 100644
index 0000000..5ff6927
--- /dev/null
+++ b/ksh-20140415-hokaido.patch
@@ -0,0 +1,37 @@
+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
new file mode 100644
index 0000000..34c9b6b
--- /dev/null
+++ b/ksh-20140801-arraylen.patch
@@ -0,0 +1,11 @@
+--- 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
new file mode 100644
index 0000000..7276363
--- /dev/null
+++ b/ksh-20140801-diskfull.patch
@@ -0,0 +1,21 @@
+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
new file mode 100644
index 0000000..80db205
--- /dev/null
+++ b/ksh-20140929-safefd.patch
@@ -0,0 +1,52 @@
+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-2020.0.0-cve-2019-14868.patch b/ksh-2020.0.0-cve-2019-14868.patch
deleted file mode 100644
index b8ff83c..0000000
--- a/ksh-2020.0.0-cve-2019-14868.patch
+++ /dev/null
@@ -1,78 +0,0 @@
-diff --git a/src/cmd/ksh93/sh/arith.c b/src/cmd/ksh93/sh/arith.c
---- a/src/cmd/ksh93/sh/arith.c
-+++ b/src/cmd/ksh93/sh/arith.c
-@@ -567,19 +567,32 @@ Sfdouble_t sh_strnum(Shell_t *shp, const char *str, char **ptr, int mode) {
- char *last;
-
- if (*str == 0) {
-- if (ptr) *ptr = (char *)str;
-- return 0;
-- }
-- errno = 0;
-- d = number(str, &last, shp->inarith ? 0 : 10, NULL);
-- if (*last) {
-- if (*last != '.' || last[1] != '.') {
-- d = strval(shp, str, &last, arith, mode);
-- Varsubscript = true;
-+ d = 0.0;
-+ last = (char *)str;
-+ } else {
-+ d = number(str, &last, shp->inarith ? 0 : 10, NULL);
-+ if (*last && !shp->inarith && sh_isstate(shp, SH_INIT)) {
-+ // This call is to handle "base#value" literals if we're importing untrusted env vars.
-+ d = number(str, &last, 0, NULL);
-+ }
-+ if (*last) {
-+ if (sh_isstate(shp, SH_INIT)) {
-+ // Initializing means importing untrusted env vars. Since the string does not appear
-+ // to be a recognized numeric literal give up. We can't safely call strval() since
-+ // that allows arbitrary expressions which would create a security vulnerability.
-+ d = 0.0;
-+ } else {
-+ if (*last != '.' || last[1] != '.') {
-+ d = strval(shp, str, &last, arith, mode);
-+ Varsubscript = true;
-+ }
-+ if (!ptr && *last && mode > 0) {
-+ errormsg(SH_DICT, ERROR_exit(1), e_lexbadchar, *last, str);
-+ }
-+ }
-+ } else if (d == 0.0 && *str == '-') {
-+ d = -0.0;
- }
-- if (!ptr && *last && mode > 0) errormsg(SH_DICT, ERROR_exit(1), e_lexbadchar, *last, str);
-- } else if (!d && *str == '-') {
-- d = -0.0;
- }
- if (ptr) *ptr = last;
- return d;
-diff --git a/src/cmd/ksh93/tests/subshell.sh b/src/cmd/ksh93/tests/subshell.sh
---- a/src/cmd/ksh93/tests/subshell.sh
-+++ b/src/cmd/ksh93/tests/subshell.sh
-@@ -856,3 +856,26 @@ for exp in 65535 65536
- do got=$($SHELL -c 'x=$(printf "%.*c" '$exp' x); print ${#x}' 2>&1)
- [[ $got == $exp ]] || log_error "large command substitution failed" "$exp" "$got"
- done
-+
-+# ==========
-+# Verify that importing untrusted env vars does not allow evaluating arbitrary expressions but does
-+# recognize all integer literals recognized by ksh.
-+expect=8
-+actual=$(env SHLVL='7' $SHELL -c 'echo $SHLVL')
-+[[ $actual == $expect ]] || log_error "decimal int literal not recognized" "$expect" "$actual"
-+
-+expect=14
-+actual=$(env SHLVL='013' $SHELL -c 'echo $SHLVL')
-+[[ $actual == $expect ]] || log_error "leading zeros int literal not recognized" "$expect" "$actual"
-+
-+expect=4
-+actual=$(env SHLVL='2#11' $SHELL -c 'echo $SHLVL')
-+[[ $actual == $expect ]] || log_error "base#value int literal not recognized" "$expect" "$actual"
-+
-+expect=12
-+actual=$(env SHLVL='16#B' $SHELL -c 'echo $SHLVL')
-+[[ $actual == $expect ]] || log_error "base#value int literal not recognized" "$expect" "$actual"
-+
-+expect=1
-+actual=$(env SHLVL="2#11+x[\$($bin_echo DANGER WILL ROBINSON >&2)0]" $SHELL -c 'echo $SHLVL')
-+[[ $actual == $expect ]] || log_error "expression allowed on env var import" "$expect" "$actual"
diff --git a/ksh.spec b/ksh.spec
index 5cea99e..88eb59f 100644
--- a/ksh.spec
+++ b/ksh.spec
@@ -1,115 +1,379 @@
+%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: 2020.0.0
-Release: 4%{?dist}
-# We are upgrading from ksh-20120801-250, so set epoch.
-Epoch: 1
-Source0: https://github.com/att/ast/releases/download/%{version}/%{name}-%{version...
-Source1: kshcomp.conf
-Source2: kshrc.rhs
-Source3: dotkshrc
+Epoch: 2
+Version: %{releasedate}
+Release: 251%{?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
-Patch1: ksh-2020.0.0-cve-2019-14868.patch
+# expected results of test suite
+Source5: expectedresults.log
-Provides: /bin/ksh
+# 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
+
+# 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
-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
+# 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
+
+Patch87: ksh-20120801-covsfix2.patch
+
+# rhbz#1624125
+Patch88: ksh-20120801-annocheck.patch
+
+# rhbz#1790547
+Patch89: ksh-20120801-cve-2019-14868.patch
+
+Conflicts: pdksh
+Requires: coreutils, diffutils
+BuildRequires: gcc
+BuildRequires: bison
+# regression test suite uses 'ps' from procps
+BuildRequires: procps
+Requires(post): grep, coreutils, systemd
Requires(postun): sed
-Provides: /bin/ksh
-Provides: /usr/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
-%autosetup -n %{name}-%{version} -p1
+%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
%build
-%meson -Dbuild-api-tests=false
-%meson_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
%install
-%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 ]]
+mkdir -p %{buildroot}{/bin,%{_bindir},%{_mandir}/man1}
+install -p -m 755 arch/*/bin/ksh %{buildroot}%{_bindir}/ksh93
+install -p -m 755 arch/*/bin/shcomp %{buildroot}%{_bindir}/shcomp
+install -p -m 644 arch/*/man/man1/sh.1 %{buildroot}%{_mandir}/man1/ksh93.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
+
+ln -s %{_bindir}/ksh93 %{buildroot}/%{_bindir}/rksh
+
+touch %{buildroot}%{_bindir}/ksh
+touch %{buildroot}%{_mandir}/man1/ksh.1.gz
+
+%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 ]
then
- 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
+ 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
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
-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
+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
- fi
-done
+ if ! grep -q '^/usr/bin/ksh$' /etc/shells ; then
+ echo "/usr/bin/ksh" >> /etc/shells
+ fi
+fi
+
+%{_sbindir}/alternatives --install %{_bindir}/ksh ksh \
+ %{_bindir}/ksh93 50 \
+ --slave %{_mandir}/man1/ksh.1.gz ksh-man \
+ %{_mandir}/man1/ksh93.1.gz
+
+#if not symlink we are updating ksh where there was no alternatives before
+#so replace with symlink and set alternatives
+if [ ! -L %{_bindir}/ksh ]; then
+ %{_sbindir}/alternatives --auto ksh
+ ln -sf /etc/alternatives/ksh %{_bindir}/ksh
+ ln -sf /etc/alternatives/ksh-man %{_mandir}/man1/ksh.1.gz
+fi
/bin/systemctl try-restart systemd-binfmt.service >/dev/null 2>&1 || :
-# 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
+%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
+fi
%preun
-# Do not remove ksh from alternatives on upgrades
-if [ $1 -eq 0 ]; then
- %{_sbindir}/alternatives --remove ksh /bin/ksh93
+if [ $1 = 0 ]; then
+ %{_sbindir}/alternatives --remove ksh %{_bindir}/ksh93
fi
-%postun
-for s in /bin/ksh /usr/bin/ksh
-do
- if [ ! -f $s ]; then
- sed -i '\|^'"$s"'$|d' /etc/shells
- fi
-done
-
-# 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
+%verifyscript
+echo -n "Looking for ksh in /etc/shells... "
+if ! grep '^/bin/ksh$' /etc/shells > /dev/null; then
+ echo "missing"
+ echo "ksh missing from /etc/shells" >&2
+else
+ echo "found"
+fi
%files
%doc src/cmd/ksh93/COMPATIBILITY src/cmd/ksh93/RELEASE src/cmd/ksh93/TYPES
# LICENSE file is missing, temporarily?
%{_bindir}/ksh93
-%{_bindir}/shcomp93
+%ghost %{_bindir}/ksh
+%{_bindir}/rksh
+%{_bindir}/shcomp
%{_mandir}/man1/*
+%ghost %{_mandir}/man1/ksh.1.gz
%config(noreplace) %{_sysconfdir}/skel/.kshrc
%config(noreplace) %{_sysconfdir}/kshrc
%config(noreplace) %{_sysconfdir}/binfmt.d/kshcomp.conf
%changelog
+* Thu Aug 13 2020 Siteshwar Vashisht <svashisht(a)redhat.com> - 2:20120801-251
+- Restore ksh to version 20120801
+ Resolves: #1868715
+
* Tue Jul 28 2020 Fedora Release Engineering <releng(a)fedoraproject.org> - 1:2020.0.0-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
diff --git a/sources b/sources
index 168a303..935961b 100644
--- a/sources
+++ b/sources
@@ -1 +1,2 @@
-SHA512 (ksh-2020.0.0.tar.gz) = 7d6da3af341a62718d691ddc52e10bdf3b7290d74f1cd01610093c587af47b6d6d04b74b210eb31f93a3559855a5bc5155f9b188d2f8bb4444042c26bfaf1792
+3a6e2d01b1b049bdef968dc5a24c1ea7 ast-ksh.2012-08-01.tgz
+af699318bea7398f0f413b839bfcd762 INIT.2012-08-01.tgz
3 years, 7 months
Architecture specific change in rpms/eclipse.git
by githook-noreply@fedoraproject.org
The package rpms/eclipse.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/eclipse.git/commit/?id=357eef5d66....
Change:
-%ifarch %{arm}
Thanks.
Full change:
============
commit 357eef5d66af8f861332aefc2a0ed11f6a530819
Author: Mat Booth <mat.booth(a)redhat.com>
Date: Tue Aug 25 17:06:20 2020 +0100
Rebuild against new jakarta-el,-jsp packages
Fix javadoc generation relying on Windows version of SWT
diff --git a/eclipse-feature-plugins-to-category-ius.patch b/eclipse-feature-plugins-to-category-ius.patch
index dbf2b48..305eede 100644
--- a/eclipse-feature-plugins-to-category-ius.patch
+++ b/eclipse-feature-plugins-to-category-ius.patch
@@ -164,28 +164,6 @@ index d1e74d8ee..788b4202d 100644
<plugin
id="org.eclipse.pde.api.tools"
download-size="0"
-diff --git a/eclipse.platform.common/bundles/org.eclipse.platform.doc.isv/pom.xml b/eclipse.platform.common/bundles/org.eclipse.platform.doc.isv/pom.xml
-index 616bfa0b6..603dc94d6 100644
---- a/eclipse.platform.common/bundles/org.eclipse.platform.doc.isv/pom.xml
-+++ b/eclipse.platform.common/bundles/org.eclipse.platform.doc.isv/pom.xml
-@@ -83,7 +83,7 @@
- </requirement>
- <requirement>
- <type>eclipse-plugin</type>
-- <id>javax.el</id>
-+ <id>javax.el-api</id>
- <versionRange>0.0.0</versionRange>
- </requirement>
- <requirement>
-@@ -118,7 +118,7 @@
- </requirement>
- <requirement>
- <type>eclipse-plugin</type>
-- <id>org.apache.jasper.glassfish</id>
-+ <id>org.glassfish.web.javax.servlet.jsp</id>
- <versionRange>0.0.0</versionRange>
- </requirement>
- <requirement>
diff --git a/eclipse.platform.releng/features/org.eclipse.help-feature/feature.xml b/eclipse.platform.releng/features/org.eclipse.help-feature/feature.xml
index c5ddcaf13..57b485135 100644
--- a/eclipse.platform.releng/features/org.eclipse.help-feature/feature.xml
@@ -321,12 +299,12 @@ index c5ddcaf13..57b485135 100644
unpack="false"/>
+ <requires>
-+ <import plugin="javax.el-api" />
++ <import plugin="javax.el" />
+ <import plugin="javax.servlet" />
+ <import plugin="javax.servlet.jsp" />
-+ <import plugin="com.sun.el.javax.el" />
++ <import plugin="com.sun.el" />
+ <import plugin="org.apache.commons.logging" />
-+ <import plugin="org.glassfish.web.javax.servlet.jsp" />
++ <import plugin="org.apache.jasper.glassfish" />
+ <import plugin="org.apache.lucene.analyzers-common" />
+ <import plugin="org.apache.lucene.core" />
+ <import plugin="org.apache.lucene.analyzers-smartcn" />
diff --git a/eclipse-pde-tp-support-droplets.patch b/eclipse-pde-tp-support-droplets.patch
index 59ae65d..d4003b8 100644
--- a/eclipse-pde-tp-support-droplets.patch
+++ b/eclipse-pde-tp-support-droplets.patch
@@ -1,4 +1,4 @@
-From 7843458db4b359cbee040c17ddda21d5fa6ddd35 Mon Sep 17 00:00:00 2001
+From 6c608cd76dfabdc7cd57fe581eee1533ff82130a Mon Sep 17 00:00:00 2001
From: Roland Grunberg <rgrunber(a)redhat.com>
Date: Thu, 7 Apr 2016 10:23:49 -0400
Subject: [PATCH] Support reading BundleInfo from p2 Droplets enabled
@@ -8,10 +8,11 @@ Subject: [PATCH] Support reading BundleInfo from p2 Droplets enabled
---
.../org.eclipse.pde.core/META-INF/MANIFEST.MF | 1 +
.../eclipse/pde/internal/core/P2Utils.java | 50 +++++++++++++++++--
- 2 files changed, 46 insertions(+), 5 deletions(-)
+ .../org.eclipse.pde.doc.user/pdeOptions.txt | 1 +
+ 3 files changed, 47 insertions(+), 5 deletions(-)
diff --git a/eclipse.pde.ui/ui/org.eclipse.pde.core/META-INF/MANIFEST.MF b/eclipse.pde.ui/ui/org.eclipse.pde.core/META-INF/MANIFEST.MF
-index f045abd5b..864665785 100644
+index 27e51faa6..0735dc414 100644
--- a/eclipse.pde.ui/ui/org.eclipse.pde.core/META-INF/MANIFEST.MF
+++ b/eclipse.pde.ui/ui/org.eclipse.pde.core/META-INF/MANIFEST.MF
@@ -102,5 +102,6 @@ Require-Bundle:
@@ -114,6 +115,18 @@ index 696d2318f..7ab4596d5 100644
} catch (IOException e) {
PDECore.log(e);
return null;
+diff --git a/eclipse.platform.common/bundles/org.eclipse.pde.doc.user/pdeOptions.txt b/eclipse.platform.common/bundles/org.eclipse.pde.doc.user/pdeOptions.txt
+index 523019ede..d25d89549 100644
+--- a/eclipse.platform.common/bundles/org.eclipse.pde.doc.user/pdeOptions.txt
++++ b/eclipse.platform.common/bundles/org.eclipse.pde.doc.user/pdeOptions.txt
+@@ -76,6 +76,7 @@
+ ;${rt.equinox.p2.bundles}/org.eclipse.equinox.p2.repository.tools/${dot.classes}
+ ;${rt.equinox.p2.bundles}/org.eclipse.equinox.p2.touchpoint.eclipse/${dot.classes}
+ ;${rt.equinox.p2.bundles}/org.eclipse.equinox.simpleconfigurator.manipulator/${dot.classes}
++;${rt.equinox.p2.bundles}/org.eclipse.equinox.simpleconfigurator/${dot.classes}
+
+ -breakiterator
+ -use
--
-2.21.1
+2.26.2
diff --git a/eclipse.spec b/eclipse.spec
index 8638b3f..dd78c99 100644
--- a/eclipse.spec
+++ b/eclipse.spec
@@ -8,7 +8,7 @@
Epoch: 1
-%global eb_commit d041687bcf34d6c11f4ad2cf43aab5ad5a4c02a1
+%global eb_commit 2f6d1ff5950edd8c0b55bbcc93491bce269e4272
%global eclipse_rel %{version}
%global eclipse_tag R-%{eclipse_rel}-202006040540
@@ -16,12 +16,6 @@ Epoch: 1
%global _lucene_version 8.4.1
%global _batik_version 1.13
-%ifarch %{ix86}
- %global eclipse_arch x86
-%endif
-%ifarch %{arm}
- %global eclipse_arch arm
-%endif
%ifarch s390x x86_64 aarch64 ppc64le
%global eclipse_arch %{_arch}
%endif
@@ -42,16 +36,24 @@ Epoch: 1
# Glassfish EE APIs that moved to jakarta namespace
%if 0%{?fedora} >= 33
%global _jakarta_annotations jakarta.annotation-api
-%global _jakarta_servlet jakarta.servlet-api
+%global _jakarta_servlet_api jakarta.servlet-api
+%global _jakarta_jsp_api javax.servlet.jsp-api
+%global _jakarta_jsp org.glassfish.web.jakarta.servlet.jsp
+%global _jakarta_el_api jakarta.el-api
+%global _jakarta_el org.glassfish.jakarta.el
%else
%global _jakarta_annotations javax.annotation-api
-%global _jakarta_servlet javax.servlet-api
+%global _jakarta_servlet_api javax.servlet-api
+%global _jakarta_jsp_api javax.servlet.jsp
+%global _jakarta_jsp org.glassfish.web.javax.servlet.jsp
+%global _jakarta_el_api javax.el-api
+%global _jakarta_el com.sun.el.javax.el
%endif
Summary: An open, extensible IDE
Name: eclipse
Version: 4.16
-Release: 11%{?dist}
+Release: 12%{?dist}
License: EPL-2.0
URL: http://www.eclipse.org/
@@ -89,12 +91,6 @@ Patch12: eclipse-fix-dropins.patch
# Feature plugin definitions lock onto version of plugin at build-time.
# If plugin is external, updating it breaks the feature. (version changes)
# Workaround : Change <plugin> definition to a 'requirement'
-# Also makes the following BSN changes at the same time:
-# com.sun.el -> com.sun.el.javax.el
-# javax.el -> javax.el-api
-# javax.servlet -> javax.servlet-api
-# org.apache.jasper.glassfish -> org.glassfish.web.javax.servlet.jsp
-# org.w3c.dom.smil -> removed
Patch13: eclipse-feature-plugins-to-category-ius.patch
Patch14: eclipse-support-symlink-bundles.patch
@@ -398,9 +394,6 @@ rm -rf rt.equinox.binaries/org.eclipse.equinox.executable/{bin,contributed}/
# Optional (unused) multipart support (see patch 25)
rm rt.equinox.bundles/bundles/org.eclipse.equinox.http.servlet/src/org/eclipse/equinox/http/servlet/internal/multipart/MultipartSupport{Impl,FactoryImpl,Part}.java
-# No strict bin includes
-sed -i -e '/jgit.dirtyWorkingTree>/a<strictSrcIncludes>false</strictSrcIncludes><strictBinIncludes>false</strictBinIncludes>' eclipse-platform-parent/pom.xml
-
# Remove jgit deps because building from source tarball, not a git repo
%pom_remove_dep :tycho-buildtimestamp-jgit eclipse-platform-parent
%pom_remove_dep :tycho-sourceref-jgit eclipse-platform-parent
@@ -444,16 +437,18 @@ sed -i -e '/jgit.dirtyWorkingTree>/a<strictSrcIncludes>false</strictSrcIncludes>
%pom_xpath_remove "plugin[@version='1.1.500.qualifier']" eclipse.jdt/org.eclipse.jdt-feature/feature.xml
# javax.annotation -> jakarta.annotation-api
-sed -i -e 's/javax.annotation/%{_jakarta_annotations}/' eclipse-platform-parent/pom.xml \
- eclipse.platform.ui/features/org.eclipse.e4.rcp/feature.xml \
- eclipse.platform.common/bundles/org.eclipse.jdt.doc.isv/pom.xml \
- eclipse.platform.common/bundles/org.eclipse.pde.doc.user/pom.xml \
- eclipse.platform.common/bundles/org.eclipse.platform.doc.isv/pom.xml
# javax.servlet -> jakarta.servlet-api
-sed -i -e 's/javax.servlet\([^.]\)/%{_jakarta_servlet}\1/' \
- rt.equinox.bundles/features/org.eclipse.equinox.server.{jetty,simple}/feature.xml \
+# javax.el -> jakarta.el-api
+# javax.servlet.jsp -> jakarta.servlet.jsp-api
+sed -i -e 's/javax.annotation/%{_jakarta_annotations}/' -e 's/javax.servlet\([^.]\)/%{_jakarta_servlet_api}\1/' \
+ -e 's/javax.el/%{_jakarta_el_api}/' -e 's/com.sun.el/%{_jakarta_el}/' \
+ -e 's/javax.servlet.jsp/%{_jakarta_jsp_api}/' -e 's/org.apache.jasper.glassfish/%{_jakarta_jsp}/' \
+ eclipse-platform-parent/pom.xml \
eclipse.platform.releng/features/org.eclipse.help-feature/feature.xml \
- eclipse.platform.common/bundles/org.eclipse.platform.doc.isv/pom.xml
+ eclipse.platform.common/bundles/org.eclipse.*/pom.xml \
+ eclipse.platform.common/bundles/org.eclipse.platform.doc.isv/platformOptions.txt \
+ eclipse.platform.ui/features/org.eclipse.e4.rcp/feature.xml \
+ rt.equinox.bundles/features/org.eclipse.equinox.server.{jetty,simple}/feature.xml
# Fix requirement on junit 4
sed -i -e 's/4.13.0,5.0.0/4.12.0,5.0.0/' eclipse.jdt.ui/org.eclipse.jdt.junit.core/src/org/eclipse/jdt/internal/junit/buildpath/BuildPathSupport.java
@@ -570,6 +565,9 @@ for f in eclipse.jdt/org.eclipse.jdt-feature/feature.xml \
done
done
+# Fix javadoc generation relying on Windows version of SWT
+sed -i -e '/swt/s/swt.win32.win32.x86_64/swt.gtk.linux.%{eclipse_arch}/' eclipse.platform.common/bundles/org.eclipse*/*Options.txt
+
%if %{with bootstrap} || %{without contrib_tools}
# Disable contributor tools that have external dependencies during bootstrap
%pom_disable_module eclipse.platform.ui.tools
@@ -885,10 +883,14 @@ echo "%{version}-%{release}" > %{buildroot}%{_eclipsedir}/.pkgs/Distro%{?dist}
%{_eclipsedir}/features/org.eclipse.rcp_*
%{_eclipsedir}/plugins/com.ibm.icu_*
%{_eclipsedir}/plugins/com.jcraft.jsch_*
-%{_eclipsedir}/plugins/com.sun.el.javax.el_*
%{_eclipsedir}/plugins/javax.*
%if 0%{?fedora} >= 33
%{_eclipsedir}/plugins/jakarta.*
+%{_eclipsedir}/plugins/org.glassfish.jakarta.el_*
+%{_eclipsedir}/plugins/org.glassfish.web.jakarta.servlet.jsp_*
+%else
+%{_eclipsedir}/plugins/com.sun.el.javax.el_*
+%{_eclipsedir}/plugins/org.glassfish.web.javax.servlet.jsp_*
%endif
%{_eclipsedir}/plugins/org.apache.*
%{_eclipsedir}/plugins/org.eclipse.ant.core_*
@@ -1031,7 +1033,6 @@ echo "%{version}-%{release}" > %{buildroot}%{_eclipsedir}/.pkgs/Distro%{?dist}
%{_eclipsedir}/plugins/org.eclipse.ui.workbench.texteditor_*
%{_eclipsedir}/plugins/org.eclipse.update.configurator_*
%{_eclipsedir}/plugins/org.eclipse.urischeme_*
-%{_eclipsedir}/plugins/org.glassfish.web.javax.servlet.jsp_*
%{_eclipsedir}/plugins/org.sat4j.core_*
%{_eclipsedir}/plugins/org.sat4j.pb_*
%{_eclipsedir}/plugins/org.tukaani.xz_*
@@ -1062,6 +1063,10 @@ echo "%{version}-%{release}" > %{buildroot}%{_eclipsedir}/.pkgs/Distro%{?dist}
%{_eclipsedir}/plugins/org.eclipse.osgi.util_*
%changelog
+* Mon Aug 24 2020 Mat Booth <mat.booth(a)redhat.com> - 1:4.16-12
+- Rebuild against new jakarta-el,-jsp packages
+- Fix javadoc generation relying on Windows version of SWT
+
* Fri Aug 21 2020 Mat Booth <mat.booth(a)redhat.com> - 1:4.16-11
- Rebuild with a dependency on obsolete log4j package
- Run mvn_install with Java 11
diff --git a/sources b/sources
index 2a9ba70..c3c126e 100644
--- a/sources
+++ b/sources
@@ -1,2 +1,2 @@
-SHA512 (org.eclipse.linuxtools.eclipse-build-d041687bcf34d6c11f4ad2cf43aab5ad5a4c02a1.tar.xz) = 6dbf351457c08c0b3865e4efdd79ff9aaa404d4b2aeeb531a750a9e59c54ba70f8765c8679b04bf1cb43d047b7214dad6de878a2bac54d33614abdda9f730ad8
+SHA512 (org.eclipse.linuxtools.eclipse-build-2f6d1ff5950edd8c0b55bbcc93491bce269e4272.tar.xz) = 39821ad15f0e6058ee0af4bfd791ed3e3bf415aad2c40458ce14848c91d6d795257084e033d33d25b4cee32df8c94ef705c5df9f102a4bb81e913723b5ea9fe5
SHA512 (eclipse-platform-sources-4.16.tar.xz) = e97d56f4ff7accca82993ebb8edf6cd012f20273f063c764134753dafb38972497521f2a3150c2650655c17149e135eccf781b536d50b382cd1e2fb41ec4a692
3 years, 7 months
Architecture specific change in rpms/eclipse.git
by githook-noreply@fedoraproject.org
The package rpms/eclipse.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/eclipse.git/commit/?id=357eef5d66....
Change:
-%ifarch %{arm}
Thanks.
Full change:
============
commit 357eef5d66af8f861332aefc2a0ed11f6a530819
Author: Mat Booth <mat.booth(a)redhat.com>
Date: Tue Aug 25 17:06:20 2020 +0100
Rebuild against new jakarta-el,-jsp packages
Fix javadoc generation relying on Windows version of SWT
diff --git a/eclipse-feature-plugins-to-category-ius.patch b/eclipse-feature-plugins-to-category-ius.patch
index dbf2b48..305eede 100644
--- a/eclipse-feature-plugins-to-category-ius.patch
+++ b/eclipse-feature-plugins-to-category-ius.patch
@@ -164,28 +164,6 @@ index d1e74d8ee..788b4202d 100644
<plugin
id="org.eclipse.pde.api.tools"
download-size="0"
-diff --git a/eclipse.platform.common/bundles/org.eclipse.platform.doc.isv/pom.xml b/eclipse.platform.common/bundles/org.eclipse.platform.doc.isv/pom.xml
-index 616bfa0b6..603dc94d6 100644
---- a/eclipse.platform.common/bundles/org.eclipse.platform.doc.isv/pom.xml
-+++ b/eclipse.platform.common/bundles/org.eclipse.platform.doc.isv/pom.xml
-@@ -83,7 +83,7 @@
- </requirement>
- <requirement>
- <type>eclipse-plugin</type>
-- <id>javax.el</id>
-+ <id>javax.el-api</id>
- <versionRange>0.0.0</versionRange>
- </requirement>
- <requirement>
-@@ -118,7 +118,7 @@
- </requirement>
- <requirement>
- <type>eclipse-plugin</type>
-- <id>org.apache.jasper.glassfish</id>
-+ <id>org.glassfish.web.javax.servlet.jsp</id>
- <versionRange>0.0.0</versionRange>
- </requirement>
- <requirement>
diff --git a/eclipse.platform.releng/features/org.eclipse.help-feature/feature.xml b/eclipse.platform.releng/features/org.eclipse.help-feature/feature.xml
index c5ddcaf13..57b485135 100644
--- a/eclipse.platform.releng/features/org.eclipse.help-feature/feature.xml
@@ -321,12 +299,12 @@ index c5ddcaf13..57b485135 100644
unpack="false"/>
+ <requires>
-+ <import plugin="javax.el-api" />
++ <import plugin="javax.el" />
+ <import plugin="javax.servlet" />
+ <import plugin="javax.servlet.jsp" />
-+ <import plugin="com.sun.el.javax.el" />
++ <import plugin="com.sun.el" />
+ <import plugin="org.apache.commons.logging" />
-+ <import plugin="org.glassfish.web.javax.servlet.jsp" />
++ <import plugin="org.apache.jasper.glassfish" />
+ <import plugin="org.apache.lucene.analyzers-common" />
+ <import plugin="org.apache.lucene.core" />
+ <import plugin="org.apache.lucene.analyzers-smartcn" />
diff --git a/eclipse-pde-tp-support-droplets.patch b/eclipse-pde-tp-support-droplets.patch
index 59ae65d..d4003b8 100644
--- a/eclipse-pde-tp-support-droplets.patch
+++ b/eclipse-pde-tp-support-droplets.patch
@@ -1,4 +1,4 @@
-From 7843458db4b359cbee040c17ddda21d5fa6ddd35 Mon Sep 17 00:00:00 2001
+From 6c608cd76dfabdc7cd57fe581eee1533ff82130a Mon Sep 17 00:00:00 2001
From: Roland Grunberg <rgrunber(a)redhat.com>
Date: Thu, 7 Apr 2016 10:23:49 -0400
Subject: [PATCH] Support reading BundleInfo from p2 Droplets enabled
@@ -8,10 +8,11 @@ Subject: [PATCH] Support reading BundleInfo from p2 Droplets enabled
---
.../org.eclipse.pde.core/META-INF/MANIFEST.MF | 1 +
.../eclipse/pde/internal/core/P2Utils.java | 50 +++++++++++++++++--
- 2 files changed, 46 insertions(+), 5 deletions(-)
+ .../org.eclipse.pde.doc.user/pdeOptions.txt | 1 +
+ 3 files changed, 47 insertions(+), 5 deletions(-)
diff --git a/eclipse.pde.ui/ui/org.eclipse.pde.core/META-INF/MANIFEST.MF b/eclipse.pde.ui/ui/org.eclipse.pde.core/META-INF/MANIFEST.MF
-index f045abd5b..864665785 100644
+index 27e51faa6..0735dc414 100644
--- a/eclipse.pde.ui/ui/org.eclipse.pde.core/META-INF/MANIFEST.MF
+++ b/eclipse.pde.ui/ui/org.eclipse.pde.core/META-INF/MANIFEST.MF
@@ -102,5 +102,6 @@ Require-Bundle:
@@ -114,6 +115,18 @@ index 696d2318f..7ab4596d5 100644
} catch (IOException e) {
PDECore.log(e);
return null;
+diff --git a/eclipse.platform.common/bundles/org.eclipse.pde.doc.user/pdeOptions.txt b/eclipse.platform.common/bundles/org.eclipse.pde.doc.user/pdeOptions.txt
+index 523019ede..d25d89549 100644
+--- a/eclipse.platform.common/bundles/org.eclipse.pde.doc.user/pdeOptions.txt
++++ b/eclipse.platform.common/bundles/org.eclipse.pde.doc.user/pdeOptions.txt
+@@ -76,6 +76,7 @@
+ ;${rt.equinox.p2.bundles}/org.eclipse.equinox.p2.repository.tools/${dot.classes}
+ ;${rt.equinox.p2.bundles}/org.eclipse.equinox.p2.touchpoint.eclipse/${dot.classes}
+ ;${rt.equinox.p2.bundles}/org.eclipse.equinox.simpleconfigurator.manipulator/${dot.classes}
++;${rt.equinox.p2.bundles}/org.eclipse.equinox.simpleconfigurator/${dot.classes}
+
+ -breakiterator
+ -use
--
-2.21.1
+2.26.2
diff --git a/eclipse.spec b/eclipse.spec
index 8638b3f..dd78c99 100644
--- a/eclipse.spec
+++ b/eclipse.spec
@@ -8,7 +8,7 @@
Epoch: 1
-%global eb_commit d041687bcf34d6c11f4ad2cf43aab5ad5a4c02a1
+%global eb_commit 2f6d1ff5950edd8c0b55bbcc93491bce269e4272
%global eclipse_rel %{version}
%global eclipse_tag R-%{eclipse_rel}-202006040540
@@ -16,12 +16,6 @@ Epoch: 1
%global _lucene_version 8.4.1
%global _batik_version 1.13
-%ifarch %{ix86}
- %global eclipse_arch x86
-%endif
-%ifarch %{arm}
- %global eclipse_arch arm
-%endif
%ifarch s390x x86_64 aarch64 ppc64le
%global eclipse_arch %{_arch}
%endif
@@ -42,16 +36,24 @@ Epoch: 1
# Glassfish EE APIs that moved to jakarta namespace
%if 0%{?fedora} >= 33
%global _jakarta_annotations jakarta.annotation-api
-%global _jakarta_servlet jakarta.servlet-api
+%global _jakarta_servlet_api jakarta.servlet-api
+%global _jakarta_jsp_api javax.servlet.jsp-api
+%global _jakarta_jsp org.glassfish.web.jakarta.servlet.jsp
+%global _jakarta_el_api jakarta.el-api
+%global _jakarta_el org.glassfish.jakarta.el
%else
%global _jakarta_annotations javax.annotation-api
-%global _jakarta_servlet javax.servlet-api
+%global _jakarta_servlet_api javax.servlet-api
+%global _jakarta_jsp_api javax.servlet.jsp
+%global _jakarta_jsp org.glassfish.web.javax.servlet.jsp
+%global _jakarta_el_api javax.el-api
+%global _jakarta_el com.sun.el.javax.el
%endif
Summary: An open, extensible IDE
Name: eclipse
Version: 4.16
-Release: 11%{?dist}
+Release: 12%{?dist}
License: EPL-2.0
URL: http://www.eclipse.org/
@@ -89,12 +91,6 @@ Patch12: eclipse-fix-dropins.patch
# Feature plugin definitions lock onto version of plugin at build-time.
# If plugin is external, updating it breaks the feature. (version changes)
# Workaround : Change <plugin> definition to a 'requirement'
-# Also makes the following BSN changes at the same time:
-# com.sun.el -> com.sun.el.javax.el
-# javax.el -> javax.el-api
-# javax.servlet -> javax.servlet-api
-# org.apache.jasper.glassfish -> org.glassfish.web.javax.servlet.jsp
-# org.w3c.dom.smil -> removed
Patch13: eclipse-feature-plugins-to-category-ius.patch
Patch14: eclipse-support-symlink-bundles.patch
@@ -398,9 +394,6 @@ rm -rf rt.equinox.binaries/org.eclipse.equinox.executable/{bin,contributed}/
# Optional (unused) multipart support (see patch 25)
rm rt.equinox.bundles/bundles/org.eclipse.equinox.http.servlet/src/org/eclipse/equinox/http/servlet/internal/multipart/MultipartSupport{Impl,FactoryImpl,Part}.java
-# No strict bin includes
-sed -i -e '/jgit.dirtyWorkingTree>/a<strictSrcIncludes>false</strictSrcIncludes><strictBinIncludes>false</strictBinIncludes>' eclipse-platform-parent/pom.xml
-
# Remove jgit deps because building from source tarball, not a git repo
%pom_remove_dep :tycho-buildtimestamp-jgit eclipse-platform-parent
%pom_remove_dep :tycho-sourceref-jgit eclipse-platform-parent
@@ -444,16 +437,18 @@ sed -i -e '/jgit.dirtyWorkingTree>/a<strictSrcIncludes>false</strictSrcIncludes>
%pom_xpath_remove "plugin[@version='1.1.500.qualifier']" eclipse.jdt/org.eclipse.jdt-feature/feature.xml
# javax.annotation -> jakarta.annotation-api
-sed -i -e 's/javax.annotation/%{_jakarta_annotations}/' eclipse-platform-parent/pom.xml \
- eclipse.platform.ui/features/org.eclipse.e4.rcp/feature.xml \
- eclipse.platform.common/bundles/org.eclipse.jdt.doc.isv/pom.xml \
- eclipse.platform.common/bundles/org.eclipse.pde.doc.user/pom.xml \
- eclipse.platform.common/bundles/org.eclipse.platform.doc.isv/pom.xml
# javax.servlet -> jakarta.servlet-api
-sed -i -e 's/javax.servlet\([^.]\)/%{_jakarta_servlet}\1/' \
- rt.equinox.bundles/features/org.eclipse.equinox.server.{jetty,simple}/feature.xml \
+# javax.el -> jakarta.el-api
+# javax.servlet.jsp -> jakarta.servlet.jsp-api
+sed -i -e 's/javax.annotation/%{_jakarta_annotations}/' -e 's/javax.servlet\([^.]\)/%{_jakarta_servlet_api}\1/' \
+ -e 's/javax.el/%{_jakarta_el_api}/' -e 's/com.sun.el/%{_jakarta_el}/' \
+ -e 's/javax.servlet.jsp/%{_jakarta_jsp_api}/' -e 's/org.apache.jasper.glassfish/%{_jakarta_jsp}/' \
+ eclipse-platform-parent/pom.xml \
eclipse.platform.releng/features/org.eclipse.help-feature/feature.xml \
- eclipse.platform.common/bundles/org.eclipse.platform.doc.isv/pom.xml
+ eclipse.platform.common/bundles/org.eclipse.*/pom.xml \
+ eclipse.platform.common/bundles/org.eclipse.platform.doc.isv/platformOptions.txt \
+ eclipse.platform.ui/features/org.eclipse.e4.rcp/feature.xml \
+ rt.equinox.bundles/features/org.eclipse.equinox.server.{jetty,simple}/feature.xml
# Fix requirement on junit 4
sed -i -e 's/4.13.0,5.0.0/4.12.0,5.0.0/' eclipse.jdt.ui/org.eclipse.jdt.junit.core/src/org/eclipse/jdt/internal/junit/buildpath/BuildPathSupport.java
@@ -570,6 +565,9 @@ for f in eclipse.jdt/org.eclipse.jdt-feature/feature.xml \
done
done
+# Fix javadoc generation relying on Windows version of SWT
+sed -i -e '/swt/s/swt.win32.win32.x86_64/swt.gtk.linux.%{eclipse_arch}/' eclipse.platform.common/bundles/org.eclipse*/*Options.txt
+
%if %{with bootstrap} || %{without contrib_tools}
# Disable contributor tools that have external dependencies during bootstrap
%pom_disable_module eclipse.platform.ui.tools
@@ -885,10 +883,14 @@ echo "%{version}-%{release}" > %{buildroot}%{_eclipsedir}/.pkgs/Distro%{?dist}
%{_eclipsedir}/features/org.eclipse.rcp_*
%{_eclipsedir}/plugins/com.ibm.icu_*
%{_eclipsedir}/plugins/com.jcraft.jsch_*
-%{_eclipsedir}/plugins/com.sun.el.javax.el_*
%{_eclipsedir}/plugins/javax.*
%if 0%{?fedora} >= 33
%{_eclipsedir}/plugins/jakarta.*
+%{_eclipsedir}/plugins/org.glassfish.jakarta.el_*
+%{_eclipsedir}/plugins/org.glassfish.web.jakarta.servlet.jsp_*
+%else
+%{_eclipsedir}/plugins/com.sun.el.javax.el_*
+%{_eclipsedir}/plugins/org.glassfish.web.javax.servlet.jsp_*
%endif
%{_eclipsedir}/plugins/org.apache.*
%{_eclipsedir}/plugins/org.eclipse.ant.core_*
@@ -1031,7 +1033,6 @@ echo "%{version}-%{release}" > %{buildroot}%{_eclipsedir}/.pkgs/Distro%{?dist}
%{_eclipsedir}/plugins/org.eclipse.ui.workbench.texteditor_*
%{_eclipsedir}/plugins/org.eclipse.update.configurator_*
%{_eclipsedir}/plugins/org.eclipse.urischeme_*
-%{_eclipsedir}/plugins/org.glassfish.web.javax.servlet.jsp_*
%{_eclipsedir}/plugins/org.sat4j.core_*
%{_eclipsedir}/plugins/org.sat4j.pb_*
%{_eclipsedir}/plugins/org.tukaani.xz_*
@@ -1062,6 +1063,10 @@ echo "%{version}-%{release}" > %{buildroot}%{_eclipsedir}/.pkgs/Distro%{?dist}
%{_eclipsedir}/plugins/org.eclipse.osgi.util_*
%changelog
+* Mon Aug 24 2020 Mat Booth <mat.booth(a)redhat.com> - 1:4.16-12
+- Rebuild against new jakarta-el,-jsp packages
+- Fix javadoc generation relying on Windows version of SWT
+
* Fri Aug 21 2020 Mat Booth <mat.booth(a)redhat.com> - 1:4.16-11
- Rebuild with a dependency on obsolete log4j package
- Run mvn_install with Java 11
diff --git a/sources b/sources
index 2a9ba70..c3c126e 100644
--- a/sources
+++ b/sources
@@ -1,2 +1,2 @@
-SHA512 (org.eclipse.linuxtools.eclipse-build-d041687bcf34d6c11f4ad2cf43aab5ad5a4c02a1.tar.xz) = 6dbf351457c08c0b3865e4efdd79ff9aaa404d4b2aeeb531a750a9e59c54ba70f8765c8679b04bf1cb43d047b7214dad6de878a2bac54d33614abdda9f730ad8
+SHA512 (org.eclipse.linuxtools.eclipse-build-2f6d1ff5950edd8c0b55bbcc93491bce269e4272.tar.xz) = 39821ad15f0e6058ee0af4bfd791ed3e3bf415aad2c40458ce14848c91d6d795257084e033d33d25b4cee32df8c94ef705c5df9f102a4bb81e913723b5ea9fe5
SHA512 (eclipse-platform-sources-4.16.tar.xz) = e97d56f4ff7accca82993ebb8edf6cd012f20273f063c764134753dafb38972497521f2a3150c2650655c17149e135eccf781b536d50b382cd1e2fb41ec4a692
3 years, 7 months
Architecture specific change in rpms/blender.git
by githook-noreply@fedoraproject.org
The package rpms/blender.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/blender.git/commit/?id=95322b3658....
Change:
+ExcludeArch: s390x
Thanks.
Full change:
============
commit 95322b36583dd42f7d3569bc1b995c6276bf28b1
Author: Luya Tshimbalanga <luya(a)fedoraproject.org>
Date: Tue Aug 25 08:55:14 2020 -0700
Temporarily exclude s390x second architecutre
diff --git a/blender.spec b/blender.spec
index c2fcc29..93d42d4 100644
--- a/blender.spec
+++ b/blender.spec
@@ -28,7 +28,7 @@
Name: blender
Epoch: 1
Version: %{blender_api}.5
-Release: 3%{?dist}
+Release: 4%{?dist}
Summary: 3D modeling, animation, rendering and post-production
License: GPLv2
@@ -159,10 +159,9 @@ Provides: blender(ABI) = %{blender_api}
Obsoletes: blenderplayer < 1:2.80-1
Provides: blenderplayer = 1:2.80-1
-# Temporarily exclude ARM32 architecture due to build failure
-# https://koji.fedoraproject.org/koji/taskinfo?taskID=45594704
-# https://bugzilla.redhat.com/show_bug.cgi?id=1843100
-# ExcludeArch: armv7hl
+# Temporarily exclude s390x architecture due to build failure
+# https://koji.fedoraproject.org/koji/taskinfo?taskID=50141926
+ExcludeArch: s390x
%description
Blender is the essential software solution you need for 3D, from modeling,
@@ -309,6 +308,9 @@ appstream-util validate-relax --nonet %{buildroot}%{_metainfodir}/%{name}-fonts.
%{_metainfodir}/%{name}-fonts.metainfo.xml
%changelog
+* Tue Aug 25 2020 Luya Tshimbalanga <luya(a)fedoraproject.org> - 1:2.83.5-3
+- Temporarily exclude s390x second architecutre
+
* Tue Aug 25 2020 Charalampos Stratakis <cstratak(a)redhat.com> - 1:2.83.5-3
- Use c++14 for properly building with the latest version of openvdb
3 years, 7 months