This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "IPFire 3.x development tree".
The branch, master has been updated via f57a528060244ef159467d3ba671f5a360ee450d (commit) via 2bccf29a53cdfcfdaa6cffd88ddb17638abffb8f (commit) via 5c05b5f7e661889fad8e7a002ff8c2549dd11bb6 (commit) via c7be36215a8ff8b62960c7d1a3f208e84a9020fd (commit) via cc917d0d1396c59344dbc43ff7dfc8e199d1939c (commit) via fab1cfe0e257a01f2f55607116a3365ae1ca241a (commit) via 682e99fb5b7860ce397e2bf80e21b4b6d3e062ff (commit) via dd380882e9fd3debdc049412146467b6e239de95 (commit) via 0d7519536863ae17704496739ed5dbe38c9ce672 (commit) via 9f9357eaecf2ed66de5950638a4387ac36bd3b1b (commit) via 9c66d2ecf338edb9c1529bfd7b8e9e27ffd3b6ee (commit) via e2da3dffc79f172aae3a5b3679556dfbf5fb3643 (commit) via 6fa7ec2136f62c6978d1f3485785d397e6e33a84 (commit) via 986f57b71c731ecee695655d0e7f41a54f4da00a (commit) via 4e76fdc0732ee76ad70d71484fd04b0ae7c41e66 (commit) via f72c34fc8579fb84d31d8a32e9b233572b63755c (commit) via dbc4cd15053cc286c7790d0eea213118446a5708 (commit) via 3f54d58fc400286405472710cef0402e724e9a87 (commit) via a23a06d9acf15fcece3aec232666c6b57724c04d (commit) via 29ed087a69aa99dbcbc6402a8695186d5fdaafef (commit) via 431d4c6513cd103f8bc9f76376703f8514d7f8b1 (commit) via 371ab945660c089216ea64c48e3b5aef696f64f9 (commit) via 694930ab448f4ff507162e6485e002adaf83c092 (commit) via 2f82b73bb88e86b8ce9fad9573f4c51e11af914a (commit) via d59330e48741323690a8f0466ff620ba2abfa503 (commit) via c30208ed2dabeed1ecbf54a9cbe945efa55bf335 (commit) via b87052f9981157ac5eb950f558734cc3d7c619fc (commit) via ea100fcaa2d13bc272db3cfaed5e6a67cf2fc006 (commit) via cc7e87ecca48758b13f47c6c318fab7910f3ef3e (commit) via a52b3ac858290f59a618d9a1f82a3a632475a78e (commit) via 955189f0ddd2751a0fad0321c0fe907ed9985c83 (commit) via 9353997c8b0883a255a3f879829ae4cfc8092f3f (commit) via f7664dac823c425be6cda7d29de12ee814ced036 (commit) via 1e4b76d4ffb65a22d2ca2eaea2f1c9207c39bab1 (commit) via b7bb75a27be86e8991736230c4d839be0591b03a (commit) via 0cb653dfbe26a4c0c5b67e873bea80af56b4e476 (commit) via 94991619e047db4072107b3d0d6ed7888e13c85d (commit) via fe0d834e7e66b1b35658c73a5f8b199a6a7ecacb (commit) via f51167f4a84d286875b84beadfb93ab524569435 (commit) via 033aa36668d607e143491a566ceee3cec44c16e6 (commit) from d62776ed14914cd0ecd0251c0279174a39e7a965 (commit)
Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below.
- Log ----------------------------------------------------------------- commit f57a528060244ef159467d3ba671f5a360ee450d Author: Michael Tremer michael.tremer@ipfire.org Date: Fri Dec 30 18:49:14 2022 +0000
unzip: Import latest patches from Fedora
There have been no releases for unzip since 2009.
Signed-off-by: Michael Tremer michael.tremer@ipfire.org
commit 2bccf29a53cdfcfdaa6cffd88ddb17638abffb8f Author: Michael Tremer michael.tremer@ipfire.org Date: Fri Dec 30 18:32:52 2022 +0000
joe: Drop package
Nobody uses this at the moment.
Signed-off-by: Michael Tremer michael.tremer@ipfire.org
commit 5c05b5f7e661889fad8e7a002ff8c2549dd11bb6 Author: Michael Tremer michael.tremer@ipfire.org Date: Fri Dec 30 18:31:41 2022 +0000
gdbm: Update to 1.23
Signed-off-by: Michael Tremer michael.tremer@ipfire.org
commit c7be36215a8ff8b62960c7d1a3f208e84a9020fd Author: Michael Tremer michael.tremer@ipfire.org Date: Fri Dec 30 18:28:01 2022 +0000
vala: Update to 0.56.3
Signed-off-by: Michael Tremer michael.tremer@ipfire.org
commit cc917d0d1396c59344dbc43ff7dfc8e199d1939c Author: Michael Tremer michael.tremer@ipfire.org Date: Fri Dec 30 18:22:32 2022 +0000
libdaq: Remove any statically linked libraries
Signed-off-by: Michael Tremer michael.tremer@ipfire.org
commit fab1cfe0e257a01f2f55607116a3365ae1ca241a Author: Michael Tremer michael.tremer@ipfire.org Date: Fri Dec 30 18:18:59 2022 +0000
curl: Link against nghttp2 for HTTP/2.0 support
Signed-off-by: Michael Tremer michael.tremer@ipfire.org
commit 682e99fb5b7860ce397e2bf80e21b4b6d3e062ff Author: Michael Tremer michael.tremer@ipfire.org Date: Fri Dec 30 18:18:05 2022 +0000
nghttp2: New package
Required by bind but will be used universally.
Signed-off-by: Michael Tremer michael.tremer@ipfire.org
commit dd380882e9fd3debdc049412146467b6e239de95 Author: Michael Tremer michael.tremer@ipfire.org Date: Fri Dec 30 18:10:06 2022 +0000
dracut: Implement some reasonable defaults
Signed-off-by: Michael Tremer michael.tremer@ipfire.org
commit 0d7519536863ae17704496739ed5dbe38c9ce672 Author: Michael Tremer michael.tremer@ipfire.org Date: Fri Dec 30 17:42:48 2022 +0000
dracut: Require device-mapper for dmsetup
We need dmsetup which is in the device-mapper package.
Signed-off-by: Michael Tremer michael.tremer@ipfire.org
commit 9f9357eaecf2ed66de5950638a4387ac36bd3b1b Author: Stefan Schantl stefan.schantl@ipfire.org Date: Wed Dec 28 21:43:22 2022 +0100
perl: Update to 5.36.0
Signed-off-by: Stefan Schantl stefan.schantl@ipfire.org
commit 9c66d2ecf338edb9c1529bfd7b8e9e27ffd3b6ee Author: Michael Tremer michael.tremer@ipfire.org Date: Fri Dec 30 17:34:03 2022 +0000
sudo: Update to 1.9.12p1
Signed-off-by: Michael Tremer michael.tremer@ipfire.org
commit e2da3dffc79f172aae3a5b3679556dfbf5fb3643 Author: Michael Tremer michael.tremer@ipfire.org Date: Fri Dec 30 17:00:57 2022 +0000
dracut: Drop network package & some more modules
Signed-off-by: Michael Tremer michael.tremer@ipfire.org
commit 6fa7ec2136f62c6978d1f3485785d397e6e33a84 Author: Michael Tremer michael.tremer@ipfire.org Date: Fri Dec 30 17:00:20 2022 +0000
rhash: Update to 1.4.3
Signed-off-by: Michael Tremer michael.tremer@ipfire.org
commit 986f57b71c731ecee695655d0e7f41a54f4da00a Author: Michael Tremer michael.tremer@ipfire.org Date: Fri Dec 30 16:41:23 2022 +0000
dracut: Add a -debuuginfo package
Some parts are binary and their debug stuff needs to be in a -debuginfo package.
Signed-off-by: Michael Tremer michael.tremer@ipfire.org
commit 4e76fdc0732ee76ad70d71484fd04b0ae7c41e66 Author: Michael Tremer michael.tremer@ipfire.org Date: Fri Dec 30 16:40:53 2022 +0000
c-ares: Update to 1.18.1
Signed-off-by: Michael Tremer michael.tremer@ipfire.org
commit f72c34fc8579fb84d31d8a32e9b233572b63755c Author: Michael Tremer michael.tremer@ipfire.org Date: Fri Dec 30 16:38:15 2022 +0000
dmraid: Drop package
We currently don't support this
Signed-off-by: Michael Tremer michael.tremer@ipfire.org
commit dbc4cd15053cc286c7790d0eea213118446a5708 Author: Michael Tremer michael.tremer@ipfire.org Date: Fri Dec 30 16:35:10 2022 +0000
dejagnu: Update to 1.6.3
Signed-off-by: Michael Tremer michael.tremer@ipfire.org
commit 3f54d58fc400286405472710cef0402e724e9a87 Author: Michael Tremer michael.tremer@ipfire.org Date: Fri Dec 30 16:29:19 2022 +0000
acpid: Update to 2.0.34
Signed-off-by: Michael Tremer michael.tremer@ipfire.org
commit a23a06d9acf15fcece3aec232666c6b57724c04d Author: Michael Tremer michael.tremer@ipfire.org Date: Fri Dec 30 16:27:27 2022 +0000
apr-util: Update to 1.6.1
Signed-off-by: Michael Tremer michael.tremer@ipfire.org
commit 29ed087a69aa99dbcbc6402a8695186d5fdaafef Author: Michael Tremer michael.tremer@ipfire.org Date: Fri Dec 30 16:24:35 2022 +0000
snort: New package
Signed-off-by: Michael Tremer michael.tremer@ipfire.org
commit 431d4c6513cd103f8bc9f76376703f8514d7f8b1 Author: Michael Tremer michael.tremer@ipfire.org Date: Fri Dec 30 16:21:42 2022 +0000
autogen: Drop package
Nothing depends on this
Signed-off-by: Michael Tremer michael.tremer@ipfire.org
commit 371ab945660c089216ea64c48e3b5aef696f64f9 Author: Michael Tremer michael.tremer@ipfire.org Date: Fri Dec 30 16:18:37 2022 +0000
dialog: Drop package
Nothing depends on this
Signed-off-by: Michael Tremer michael.tremer@ipfire.org
commit 694930ab448f4ff507162e6485e002adaf83c092 Author: Michael Tremer michael.tremer@ipfire.org Date: Fri Dec 30 16:17:39 2022 +0000
tree: Update to 2.1.0
Signed-off-by: Michael Tremer michael.tremer@ipfire.org
commit 2f82b73bb88e86b8ce9fad9573f4c51e11af914a Author: Michael Tremer michael.tremer@ipfire.org Date: Fri Dec 30 15:35:02 2022 +0000
bash-completion: Update to 2.11
Signed-off-by: Michael Tremer michael.tremer@ipfire.org
commit d59330e48741323690a8f0466ff620ba2abfa503 Author: Michael Tremer michael.tremer@ipfire.org Date: Fri Dec 30 15:34:44 2022 +0000
p11-kit: Update to 0.24.1
Signed-off-by: Michael Tremer michael.tremer@ipfire.org
commit c30208ed2dabeed1ecbf54a9cbe945efa55bf335 Author: Michael Tremer michael.tremer@ipfire.org Date: Thu Dec 29 18:55:39 2022 +0000
transmission: Drop package
Signed-off-by: Michael Tremer michael.tremer@ipfire.org
commit b87052f9981157ac5eb950f558734cc3d7c619fc Author: Michael Tremer michael.tremer@ipfire.org Date: Thu Dec 29 18:50:53 2022 +0000
libdaq: New package
Required by snort
Signed-off-by: Michael Tremer michael.tremer@ipfire.org
commit ea100fcaa2d13bc272db3cfaed5e6a67cf2fc006 Author: Michael Tremer michael.tremer@ipfire.org Date: Thu Dec 29 18:50:38 2022 +0000
check: New package
Required by libdnet
Signed-off-by: Michael Tremer michael.tremer@ipfire.org
commit cc7e87ecca48758b13f47c6c318fab7910f3ef3e Author: Michael Tremer michael.tremer@ipfire.org Date: Thu Dec 29 18:47:51 2022 +0000
luajit: New package
Required by snort
Signed-off-by: Michael Tremer michael.tremer@ipfire.org
commit a52b3ac858290f59a618d9a1f82a3a632475a78e Author: Michael Tremer michael.tremer@ipfire.org Date: Thu Dec 29 18:43:30 2022 +0000
libdnet: Update to 1.16.1
Signed-off-by: Michael Tremer michael.tremer@ipfire.org
commit 955189f0ddd2751a0fad0321c0fe907ed9985c83 Author: Michael Tremer michael.tremer@ipfire.org Date: Thu Dec 29 18:20:35 2022 +0000
hwloc: New package
Required by snort
Signed-off-by: Michael Tremer michael.tremer@ipfire.org
commit 9353997c8b0883a255a3f879829ae4cfc8092f3f Author: Michael Tremer michael.tremer@ipfire.org Date: Thu Dec 29 17:07:05 2022 +0000
texinfo: Update to 7.0.1
Signed-off-by: Michael Tremer michael.tremer@ipfire.org
commit f7664dac823c425be6cda7d29de12ee814ced036 Author: Michael Tremer michael.tremer@ipfire.org Date: Thu Dec 29 16:56:11 2022 +0000
cpio: Update to 2.13
Signed-off-by: Michael Tremer michael.tremer@ipfire.org
commit 1e4b76d4ffb65a22d2ca2eaea2f1c9207c39bab1 Author: Michael Tremer michael.tremer@ipfire.org Date: Thu Dec 29 16:48:20 2022 +0000
directfb: Drop package
Signed-off-by: Michael Tremer michael.tremer@ipfire.org
commit b7bb75a27be86e8991736230c4d839be0591b03a Author: Michael Tremer michael.tremer@ipfire.org Date: Thu Dec 29 16:47:12 2022 +0000
libunwind: Update to 1.4.0
Signed-off-by: Michael Tremer michael.tremer@ipfire.org
commit 0cb653dfbe26a4c0c5b67e873bea80af56b4e476 Author: Michael Tremer michael.tremer@ipfire.org Date: Thu Dec 29 16:35:05 2022 +0000
graphviz: New package
Signed-off-by: Michael Tremer michael.tremer@ipfire.org
commit 94991619e047db4072107b3d0d6ed7888e13c85d Author: Michael Tremer michael.tremer@ipfire.org Date: Thu Dec 29 16:24:24 2022 +0000
suricata-update: Drop package
Signed-off-by: Michael Tremer michael.tremer@ipfire.org
commit fe0d834e7e66b1b35658c73a5f8b199a6a7ecacb Author: Michael Tremer michael.tremer@ipfire.org Date: Thu Dec 29 16:24:05 2022 +0000
suricata: Drop package
Signed-off-by: Michael Tremer michael.tremer@ipfire.org
commit f51167f4a84d286875b84beadfb93ab524569435 Author: Michael Tremer michael.tremer@ipfire.org Date: Thu Dec 29 16:23:07 2022 +0000
librsvg2: Drop package
Newer versions need a Rust compiler which we currently don't have.
Signed-off-by: Michael Tremer michael.tremer@ipfire.org
commit 033aa36668d607e143491a566ceee3cec44c16e6 Author: Michael Tremer michael.tremer@ipfire.org Date: Thu Dec 29 16:22:20 2022 +0000
ImageMagick: Update to 7.1.0-56
This patch compiles in support for a lot of stuff and drops a dependency on librsvg.
Signed-off-by: Michael Tremer michael.tremer@ipfire.org
-----------------------------------------------------------------------
Summary of changes: ImageMagick/ImageMagick.nm | 44 +- acpid/acpid.nm | 11 +- acpid/patches/acpid-2.0.15-makefile.patch | 24 - apr-util/apr-util.nm | 20 +- autogen/autogen.nm | 62 - .../patches/autogen-5.9.4-autoopts-config.patch | 25 - autogen/patches/autogen-5.9.4-pkgconfig.patch | 11 - bash-completion/bash-completion.nm | 29 +- c-ares/c-ares.nm | 8 +- check/check.nm | 41 + compat-gdbm/compat-gdbm.nm | 29 +- compat-gdbm/patches/gdbm-1.8.3-fhs.patch | 138 - compat-gdbm/patches/gdbm-1.8.3-filestruct.patch | 12 - compat-gdbm/patches/gdbm-1.8.3-ndbmlock.patch | 94 - compat-gdbm/patches/gdbm-1.8.3-shortread.patch | 113 - compat-gdbm/patches/gdbm-1.8.3-zeroheaders.patch | 44 - cpio/cpio.nm | 19 +- curl/curl.nm | 3 +- dejagnu/dejagnu.nm | 12 +- dialog/dialog.nm | 61 - dialog/patches/dialog-incdir.patch | 23 - dialog/patches/dialog-libs.patch | 17 - dialog/patches/dialog-multilib.patch | 32 - directfb/directfb.nm | 62 - .../DirectFB-1.5.3-add-missing-davinci-files.patch | 1697 -------- .../DirectFB-1.5.3-gcc-atomics-on-arm.patch | 64 - directfb/patches/DirectFB-1.5.3-lm.patch | 33 - dmraid/dmraid.nm | 71 - dracut/dracut.nm | 70 +- dracut/ipfire.conf | 18 +- gdbm/gdbm.nm | 14 +- gdbm/patches/gdbm-1.10-fedora.patch | 14 - gdbm/patches/gdbm-1.10-zeroheaders.patch | 33 - graphviz/graphviz.nm | 69 + hwloc/hwloc.nm | 66 + joe/joe.nm | 34 - libdaq/libdaq.nm | 68 + libdnet/libdnet.nm | 26 +- libdnet/patches/libdnet-1.12-shrext.patch | 327 -- librsvg2/librsvg2.nm | 68 - libunwind/libunwind.nm | 32 +- libunwind/patches/libunwind-aarch64.patch | 2562 ------------ libunwind/patches/libunwind-disable-setjmp.patch | 185 - luajit/luajit.nm | 57 + pixman/pixman.nm => nghttp2/nghttp2.nm | 21 +- p11-kit/p11-kit.nm | 22 +- perl/patches/perl-USE_MM_LD_RUN_PATH.patch | 28 +- perl/patches/perl-disable_test_hosts.patch | 12 - perl/perl.nm | 4140 +++++++++++++++----- rhash/rhash.nm | 4 +- snort/snort.nm | 60 + sudo/sudo.nm | 10 +- suricata-update/suricata-update.nm | 40 - suricata/suricata.conf | 523 --- suricata/suricata.logrotate | 9 - suricata/suricata.nm | 100 - suricata/systemd/suricata.service | 14 - texinfo/texinfo.nm | 8 +- transmission/systemd/transmission-daemon.service | 11 - transmission/transmission.nm | 120 - tree/tree.nm | 8 +- .../0001-Fix-CVE-2016-9844-rhbz-1404283.patch | 39 + ...unzip-6.0-COVSCAN-fix-unterminated-string.patch | 131 + unzip/patches/unzip-6.0-alt-iconv-utf8-print.patch | 381 ++ unzip/patches/unzip-6.0-alt-iconv-utf8.patch | 398 ++ unzip/patches/unzip-6.0-bzip2-configure.patch | 3 +- unzip/patches/unzip-6.0-caseinsensitive.patch | 131 + ...6.0-nostrip.patch => unzip-6.0-configure.patch} | 2 +- unzip/patches/unzip-6.0-cve-2014-8139.patch | 79 + unzip/patches/unzip-6.0-cve-2014-8140.patch | 25 + unzip/patches/unzip-6.0-cve-2014-8141.patch | 138 + ...-6.0-cve-2018-1000035-heap-based-overflow.patch | 34 + unzip/patches/unzip-6.0-cve-2018-18384.patch | 35 + unzip/patches/unzip-6.0-fix-recmatch.patch | 477 +++ .../patches/unzip-6.0-heap-overflow-infloop.patch | 104 + unzip/patches/unzip-6.0-manpage-fix.patch | 11 + unzip/patches/unzip-6.0-overflow-long-fsize.patch | 34 + unzip/patches/unzip-6.0-overflow.patch | 25 + unzip/patches/unzip-6.0-symlink.patch | 17 + unzip/patches/unzip-6.0-timestamp.patch | 41 + unzip/patches/unzip-6.0-valgrind.patch | 26 + unzip/patches/unzip-6.0-x-option.patch | 28 + unzip/patches/unzip-gnu89-build.patch | 15 + unzip/patches/unzip-zipbomb-manpage.patch | 25 + unzip/patches/unzip-zipbomb-part1.patch | 25 + unzip/patches/unzip-zipbomb-part2.patch | 349 ++ unzip/patches/unzip-zipbomb-part3.patch | 112 + unzip/patches/unzip-zipbomb-part4.patch | 25 + unzip/patches/unzip-zipbomb-part5.patch | 26 + unzip/patches/unzip-zipbomb-part6.patch | 95 + unzip/patches/unzip-zipbomb-switch.patch | 215 + unzip/unzip.nm | 50 +- vala/vala.nm | 9 +- 93 files changed, 6744 insertions(+), 7933 deletions(-) delete mode 100644 acpid/patches/acpid-2.0.15-makefile.patch delete mode 100644 autogen/autogen.nm delete mode 100644 autogen/patches/autogen-5.9.4-autoopts-config.patch delete mode 100644 autogen/patches/autogen-5.9.4-pkgconfig.patch create mode 100644 check/check.nm delete mode 100644 compat-gdbm/patches/gdbm-1.8.3-fhs.patch delete mode 100644 compat-gdbm/patches/gdbm-1.8.3-filestruct.patch delete mode 100644 compat-gdbm/patches/gdbm-1.8.3-ndbmlock.patch delete mode 100644 compat-gdbm/patches/gdbm-1.8.3-shortread.patch delete mode 100644 compat-gdbm/patches/gdbm-1.8.3-zeroheaders.patch delete mode 100644 dialog/dialog.nm delete mode 100644 dialog/patches/dialog-incdir.patch delete mode 100644 dialog/patches/dialog-libs.patch delete mode 100644 dialog/patches/dialog-multilib.patch delete mode 100644 directfb/directfb.nm delete mode 100644 directfb/patches/DirectFB-1.5.3-add-missing-davinci-files.patch delete mode 100644 directfb/patches/DirectFB-1.5.3-gcc-atomics-on-arm.patch delete mode 100644 directfb/patches/DirectFB-1.5.3-lm.patch delete mode 100644 dmraid/dmraid.nm delete mode 100644 gdbm/patches/gdbm-1.10-fedora.patch delete mode 100644 gdbm/patches/gdbm-1.10-zeroheaders.patch create mode 100644 graphviz/graphviz.nm create mode 100644 hwloc/hwloc.nm delete mode 100644 joe/joe.nm create mode 100644 libdaq/libdaq.nm delete mode 100644 libdnet/patches/libdnet-1.12-shrext.patch delete mode 100644 librsvg2/librsvg2.nm delete mode 100644 libunwind/patches/libunwind-aarch64.patch delete mode 100644 libunwind/patches/libunwind-disable-setjmp.patch create mode 100644 luajit/luajit.nm copy pixman/pixman.nm => nghttp2/nghttp2.nm (62%) delete mode 100644 perl/patches/perl-disable_test_hosts.patch create mode 100644 snort/snort.nm delete mode 100644 suricata-update/suricata-update.nm delete mode 100644 suricata/suricata.conf delete mode 100644 suricata/suricata.logrotate delete mode 100644 suricata/suricata.nm delete mode 100644 suricata/systemd/suricata.service delete mode 100644 transmission/systemd/transmission-daemon.service delete mode 100644 transmission/transmission.nm create mode 100644 unzip/patches/0001-Fix-CVE-2016-9844-rhbz-1404283.patch create mode 100644 unzip/patches/unzip-6.0-COVSCAN-fix-unterminated-string.patch create mode 100644 unzip/patches/unzip-6.0-alt-iconv-utf8-print.patch create mode 100644 unzip/patches/unzip-6.0-alt-iconv-utf8.patch create mode 100644 unzip/patches/unzip-6.0-caseinsensitive.patch rename unzip/patches/{unzip-6.0-nostrip.patch => unzip-6.0-configure.patch} (93%) create mode 100644 unzip/patches/unzip-6.0-cve-2014-8139.patch create mode 100644 unzip/patches/unzip-6.0-cve-2014-8140.patch create mode 100644 unzip/patches/unzip-6.0-cve-2014-8141.patch create mode 100644 unzip/patches/unzip-6.0-cve-2018-1000035-heap-based-overflow.patch create mode 100644 unzip/patches/unzip-6.0-cve-2018-18384.patch create mode 100644 unzip/patches/unzip-6.0-fix-recmatch.patch create mode 100644 unzip/patches/unzip-6.0-heap-overflow-infloop.patch create mode 100644 unzip/patches/unzip-6.0-manpage-fix.patch create mode 100644 unzip/patches/unzip-6.0-overflow-long-fsize.patch create mode 100644 unzip/patches/unzip-6.0-overflow.patch create mode 100644 unzip/patches/unzip-6.0-symlink.patch create mode 100644 unzip/patches/unzip-6.0-timestamp.patch create mode 100644 unzip/patches/unzip-6.0-valgrind.patch create mode 100644 unzip/patches/unzip-6.0-x-option.patch create mode 100644 unzip/patches/unzip-gnu89-build.patch create mode 100644 unzip/patches/unzip-zipbomb-manpage.patch create mode 100644 unzip/patches/unzip-zipbomb-part1.patch create mode 100644 unzip/patches/unzip-zipbomb-part2.patch create mode 100644 unzip/patches/unzip-zipbomb-part3.patch create mode 100644 unzip/patches/unzip-zipbomb-part4.patch create mode 100644 unzip/patches/unzip-zipbomb-part5.patch create mode 100644 unzip/patches/unzip-zipbomb-part6.patch create mode 100644 unzip/patches/unzip-zipbomb-switch.patch
Difference in files: diff --git a/ImageMagick/ImageMagick.nm b/ImageMagick/ImageMagick.nm index 92037ffc8..f240d11a7 100644 --- a/ImageMagick/ImageMagick.nm +++ b/ImageMagick/ImageMagick.nm @@ -4,12 +4,12 @@ ###############################################################################
name = ImageMagick -version = 6.9.3 +version = 7.1.0 +patchlevel = 56 release = 1 -patchlevel = 7
groups = Application/Multimedia -url = http://www.imagemagick.org/ +url = https://www.imagemagick.org/ license = ImageMagick summary = Command line programm to create and convert several image formats.
@@ -21,30 +21,60 @@ end
thisapp = %{name}-%{version}-%{patchlevel}
-source_dl = ftp://ftp.ImageMagick.org/pub/%{name}/ +source_dl = https://imagemagick.org/archive/releases/ sources = %{thisapp}.tar.xz
build requires + bzip2-devel + fontconfig-devel + freetype-devel + ghostscript-devel + graphviz-devel + lcms2-devel libjpeg-devel libpng-devel - librsvg2-devel libtiff-devel libxml2-devel + pango-devel + xz-devel + zlib-devel + zstd-devel end
configure_options += \ - --sysconfdir=/etc \ --enable-shared \ --disable-static \ - --with-threads + --with-threads \ + --with-bzlib=yes \ + --with-fontconfig=yes \ + --with-freetype=yes \ + --with-gslib=yes \ + --with-gvc=yes \ + --with-jpeg=yes \ + --with-lcms=yes \ + --with-lzma=yes \ + --with-pango=yes \ + --with-png=yes \ + --with-tiff=yes \ + --with-xml=yes \ + --with-zlib=yes \ + --with-zstd=yes end
packages package %{name}
+ package %{name}-libs + template LIBS + end + package %{name}-devel template DEVEL + + requires + ImageMagick-libs = %{thisver} + end end
package %{name}-debuginfo diff --git a/acpid/acpid.nm b/acpid/acpid.nm index f13dfe406..43d508f18 100644 --- a/acpid/acpid.nm +++ b/acpid/acpid.nm @@ -4,16 +4,13 @@ ###############################################################################
name = acpid -version = 2.0.27 +version = 2.0.34 release = 1
-# ACPI is only available on x86 architectures. -sup_arches = x86_64 i686 - groups = System/Daemons -url = http://tedfelix.com/linux/acpid-netlink.html +url = https://sourceforge.net/projects/acpid2/ license = GPLv2+ -summary = ACPI Event Daemon. +summary = ACPI Event Daemon
description acpid is a daemon that dispatches ACPI events to user-space programs. @@ -32,8 +29,6 @@ end
packages package %{name} - groups += Base - script postin /usr/bin/systemctl daemon-reload >/dev/null 2>&1 || :
diff --git a/acpid/patches/acpid-2.0.15-makefile.patch b/acpid/patches/acpid-2.0.15-makefile.patch deleted file mode 100644 index 0168986a6..000000000 --- a/acpid/patches/acpid-2.0.15-makefile.patch +++ /dev/null @@ -1,24 +0,0 @@ -diff -up acpid-2.0.15/Makefile.am.mk acpid-2.0.15/Makefile.am ---- acpid-2.0.15/Makefile.am.mk 2012-02-17 04:37:12.109907134 +0100 -+++ acpid-2.0.15/Makefile.am 2012-03-16 11:27:15.127573044 +0100 -@@ -20,7 +20,7 @@ acpi_listen_SOURCES = acpi_listen.c log. - - dist_man8_MANS = acpid.8 acpi_listen.8 - --dist_doc_DATA = COPYING Changelog README TESTPLAN TODO -+dist_doc_DATA = - - # Just docs to add to the dist. - # One problem with this is that it includes all files in the samples dir -diff -up acpid-2.0.15/Makefile.in.mk acpid-2.0.15/Makefile.in ---- acpid-2.0.15/Makefile.in.mk 2012-03-16 11:28:53.568421905 +0100 -+++ acpid-2.0.15/Makefile.in 2012-03-16 11:29:21.679378750 +0100 -@@ -276,7 +276,7 @@ acpid_SOURCES = acpid.c acpi_ids.c conne - - acpi_listen_SOURCES = acpi_listen.c log.c ud_socket.c - dist_man8_MANS = acpid.8 acpi_listen.8 --dist_doc_DATA = COPYING Changelog README TESTPLAN TODO -+dist_doc_DATA = - - # Just docs to add to the dist. - # One problem with this is that it includes all files in the samples dir diff --git a/apr-util/apr-util.nm b/apr-util/apr-util.nm index b2ab0233f..ebd24b287 100644 --- a/apr-util/apr-util.nm +++ b/apr-util/apr-util.nm @@ -4,13 +4,13 @@ ###############################################################################
name = apr-util -version = 1.5.4 +version = 1.6.1 release = 1
groups = System/Libraries -url = http://apr.apache.org/ +url = https://apr.apache.org/ license = ASL 2.0 -summary = Apache Portable Runtime library. +summary = Apache Portable Runtime library
description The mission of the Apache Portable Runtime (APR) is to provide a @@ -18,8 +18,7 @@ description portability layer to as many operating systems as possible. end
-source_dl = http://www.apache.org/dist/apr/ - +source_dl = https://www.apache.org/dist/apr/
build requires @@ -46,17 +45,6 @@ end packages package %{name}
- package %{name}-openssl - summary = APR utility library OpenSSL crytpo support. - description = %{summary} - - requires - apr-util = %{thisver} - end - - files = %{libdir}/apr-util*/apr_crypto_openssl* - end - package %{name}-devel template DEVEL end diff --git a/autogen/autogen.nm b/autogen/autogen.nm deleted file mode 100644 index a8d83aba0..000000000 --- a/autogen/autogen.nm +++ /dev/null @@ -1,62 +0,0 @@ -############################################################################### -# IPFire.org - An Open Source Firewall Solution # -# Copyright (C) - IPFire Development Team info@ipfire.org # -############################################################################### - -name = autogen -version = 5.18.12 -release = 1 - -groups = Development/Tools -url = http://www.gnu.org/software/autogen/ -license = GPLv3 -summary = Automated text file generator. - -description - AutoGen is a tool designed to simplify the creation and maintenance of - programs that contain large amounts of repetitious text. It is especially - valuable in programs that have several blocks of text that must be kept - synchronised. -end - -source_dl = ftp://ftp.gnu.org/gnu/autogen/rel%{version}/ - -build - requires - guile-devel >= 2.0.9-3 - libtool - libxml2-devel - end - - export LD_LIBRARY_PATH = %{DIR_APP}/autoopts/.libs - - prepare_cmds - # Fix Libtool to remove rpaths. - rm -vf libtool - cp -vf $(which libtool) libtool - - # Omit unused direct shared library dependencies. - sed --in-place --expression 's! -shared ! -Wl,--as-needed\0!g' ./libtool - end - - test - make check - end - - install_cmds - rm -vf %{BUILDROOT}%{datadir}/%{name}/autoopts.m4 - rm -vf %{BUILDROOT}%{datadir}/%{name}/libopts-31.0.6.tar.gz - end -end - -packages - package %{name} - - package %{name}-libs - template LIBS - end - - package %{name}-debuginfo - template DEBUGINFO - end -end diff --git a/autogen/patches/autogen-5.9.4-autoopts-config.patch b/autogen/patches/autogen-5.9.4-autoopts-config.patch deleted file mode 100644 index 6f63077c9..000000000 --- a/autogen/patches/autogen-5.9.4-autoopts-config.patch +++ /dev/null @@ -1,25 +0,0 @@ -diff -urNp autogen-5.9.4.orig/autoopts/autoopts-config.in autogen-5.9.4/autoopts/autoopts-config.in ---- autogen-5.9.4.orig/autoopts/autoopts-config.in 2007-12-24 02:33:16.000000000 +0530 -+++ autogen-5.9.4/autoopts/autoopts-config.in 2008-02-25 00:38:27.000000000 +0530 -@@ -17,17 +17,17 @@ - includedir="@includedir@" - exec_prefix="@exec_prefix@" - bindir="@bindir@" -- libdir="@libdir@" -- ldopts="@AG_LDFLAGS@" -+ libdir="" -+ ldopts="" - exeext="@EXEEXT@" - version="@AO_CURRENT@:@AO_REVISION@:@AO_AGE@" - dotver="@AO_CURRENT@.@AO_REVISION@.@AO_AGE@" - pkgdatadir="${datadir}/${package}" - autogen="${bindir}/autogen${exeext}" -- ldflags="-L${libdir} -lopts" -+ ldflags="-lopts" - libs="${ldflags}" - libsrc="${pkgdatadir}/libopts-${dotver}.tar.gz" -- static_libs="${libdir}/libopts.a" -+ static_libs="" - cflags="-I${includedir}" - test -n "${ldopts}" && ldflags="${ldopts}${libdir} ${ldflags}" - test "${includedir}" = "/usr/include" && cflags="" diff --git a/autogen/patches/autogen-5.9.4-pkgconfig.patch b/autogen/patches/autogen-5.9.4-pkgconfig.patch deleted file mode 100644 index 087de3447..000000000 --- a/autogen/patches/autogen-5.9.4-pkgconfig.patch +++ /dev/null @@ -1,11 +0,0 @@ -diff -urNp autogen-5.9.4.orig/autoopts/mk-autoopts-pc.in autogen-5.9.4/autoopts/mk-autoopts-pc.in ---- autogen-5.9.4.orig/autoopts/mk-autoopts-pc.in 2007-12-24 02:33:16.000000000 +0530 -+++ autogen-5.9.4/autoopts/mk-autoopts-pc.in 2008-02-24 21:21:13.000000000 +0530 -@@ -18,7 +18,6 @@ - exec_prefix="@exec_prefix@" - bindir="@bindir@" - libdir="@libdir@" -- ldopts="@AG_LDFLAGS@" - exeext="@EXEEXT@" - version="@AO_CURRENT@:@AO_REVISION@:@AO_AGE@" - dotver="@AO_CURRENT@.@AO_REVISION@.@AO_AGE@" diff --git a/bash-completion/bash-completion.nm b/bash-completion/bash-completion.nm index f0c3f51f8..faabcfa62 100644 --- a/bash-completion/bash-completion.nm +++ b/bash-completion/bash-completion.nm @@ -4,14 +4,14 @@ ###############################################################################
name = bash-completion -version = 2.4 -release = 3 +version = 2.11 +release = 1 arch = noarch
groups = Development/Languages url = https://github.com/scop/bash-completion license = GPLv2+ -summary = Programmable completion for Bash. +summary = Programmable completion for Bash
description bash-completion is a collection of shell functions that take advantage @@ -21,24 +21,19 @@ end source_dl = https://github.com/scop/bash-completion/releases/download/%%7Bversion%7D/ sources = %{thisapp}.tar.xz
-build - install_cmds - rm -rvf %{BUILDROOT}%{datadir}/bash-completion/completions/{cawsay,cowthink} - - # Drop files which are provided by util-linux >= 2.28 and 2.34 - rm -rvf %{BUILDROOT}%{datadir}/bash-completion/completions/{mount,umount,rfkill} - - install -Dpm 644 %{DIR_SOURCE}/bash-completion-1.99-redefine_filedir.bash \ - %{BUILDROOT}%{sysconfdir}/bash_completion.d/redefine_filedir - end -end - packages package %{name} - groups += Base - requires bash >= 4.1 end + + # Recommend to install this package when bash is being installed + supplements + bash + end + end + + package %{name}-devel + template DEVEL end end diff --git a/c-ares/c-ares.nm b/c-ares/c-ares.nm index ff05d531c..d28b8ac7b 100644 --- a/c-ares/c-ares.nm +++ b/c-ares/c-ares.nm @@ -4,13 +4,13 @@ ###############################################################################
name = c-ares -version = 1.12.0 +version = 1.18.1 release = 1
groups = System/Libraries -url = http://c-ares.haxx.se/ +url = https://c-ares.org license = MIT -summary = A library that performs asynchronous DNS operations. +summary = A library that performs asynchronous DNS operations
description c-ares is a C library that performs DNS requests and name resolves @@ -18,7 +18,7 @@ description by Greg Hudson at MIT. end
-source_dl = http://c-ares.haxx.se/download/ +source_dl = https://c-ares.org/download/
build configure_options += \ diff --git a/check/check.nm b/check/check.nm new file mode 100644 index 000000000..f2753c637 --- /dev/null +++ b/check/check.nm @@ -0,0 +1,41 @@ +############################################################################### +# IPFire.org - An Open Source Firewall Solution # +# Copyright (C) - IPFire Development Team info@ipfire.org # +############################################################################### + +name = check +version = 0.15.2 +release = 1 + +groups = System/Libraries +url = https://github.com/libcheck/check +license = LGPLv2.1 +summary = A unit testing framework for C + +description + Check is a unit testing framework for C. It features a simple + interface for defining unit tests, putting little in the way of + the developer. Tests are run in a separate address space, so + Check can catch both assertion failures and code errors that + cause segmentation faults or other signals. +end + +source_dl = https://github.com/libcheck/check/releases/download/%%7Bversion%7D/ + +build + test + LD_LIBRARY_PATH="%{DIR_APP}/src/.libs" make check + end +end + +packages + package %{name} + + package %{name}-devel + template DEVEL + end + + package %{name}-debuginfo + template DEBUGINFO + end +end diff --git a/compat-gdbm/compat-gdbm.nm b/compat-gdbm/compat-gdbm.nm index e00b58f2f..c86db05db 100644 --- a/compat-gdbm/compat-gdbm.nm +++ b/compat-gdbm/compat-gdbm.nm @@ -4,7 +4,7 @@ ###############################################################################
name = compat-gdbm -version = 1.8.3 +version = 1.12 release = 1 thisapp = gdbm-%{version}
@@ -20,39 +20,20 @@ description retrieved in less time than if it was stored in a text file. end
-source_dl = http://ftp.gnu.org/gnu/gdbm/ +source_dl = https://ftp.gnu.org/gnu/gdbm/
build - requires - autoconf - automake - libtool - end - - prepare_cmds - libtoolize --force --copy - aclocal - autoconf - - # Don't use flock, because it doesn't work on NFS. - # Use fcntl instead. - echo "#undef HAVE_FLOCK" >> autoconf.h.in - end - - PARALLELISMFLAGS = # Not supported. + CFLAGS += -fcommon
install - make install install-compat \ + make install \ prefix=%{BUILDROOT}%{prefix} \ libdir=%{BUILDROOT}%{libdir} \ includedir=%{BUILDROOT}%{includedir} \ mandir=%{BUILDROOT}%{mandir} \ infodir=%{BUILDROOT}%{infodir}
- mkdir -pv %{BUILDROOT}%{includedir}/gdbm - ln -svf gdbm/gdbm.h %{BUILDROOT}%{includedir}/gdbm.h - - # Remove all man pages provided by gdbm-devel. + # Remove all man pages provided by gdbm-devel rm -rfv %{BUILDROOT}%{mandir}/man3 end end diff --git a/compat-gdbm/patches/gdbm-1.8.3-fhs.patch b/compat-gdbm/patches/gdbm-1.8.3-fhs.patch deleted file mode 100644 index 58ce4de0b..000000000 --- a/compat-gdbm/patches/gdbm-1.8.3-fhs.patch +++ /dev/null @@ -1,138 +0,0 @@ -diff -up gdbm-1.8.3/Makefile.in.fhs gdbm-1.8.3/Makefile.in ---- gdbm-1.8.3/Makefile.in.fhs 2002-10-08 18:09:12.000000000 +0200 -+++ gdbm-1.8.3/Makefile.in 2010-03-10 15:41:01.516025096 +0100 -@@ -1,7 +1,7 @@ - #### Start of system configuration section. #### - - srcdir = @srcdir@ --top_builddir = . -+top_builddir = @top_builddir@ - VPATH = @srcdir@ - - CC = @CC@ -@@ -14,17 +14,13 @@ INSTALL = @INSTALL@ - INSTALL_PROGRAM = @INSTALL_PROGRAM@ - INSTALL_DATA = @INSTALL_DATA@ - --# File ownership and group --BINOWN = bin --BINGRP = bin -- - MAKEINFO = makeinfo - TEXI2DVI = texi2dvi - --DEFS = -+DEFS = @DEFS@ - - # Where the system [n]dbm routines are... --LIBS = @LIBS@ -lc -+LIBS = @LIBS@ - - CFLAGS = @CFLAGS@ - LDFLAGS = @LDFLAGS@ -@@ -32,16 +28,17 @@ LDFLAGS = @LDFLAGS@ - # Common prefix for installation directories - prefix = @prefix@ - exec_prefix = @exec_prefix@ --binprefix = $(exec_prefix) --manprefix = $(prefix) -+datarootdir = @datarootdir@ - - # Directory in which to put libgdbm.a. - libdir = @libdir@ - # The include directory for gdbm.h and dbm.h. - includedir = @includedir@ -+pkgincludedir = $(includedir)/gdbm - # Info and man directories. - infodir = @infodir@ --man3dir = @mandir@/man3 -+mandir = @mandir@ -+man3dir = $(mandir)/man3 - manext = 3 - - #### End of system configuration section. #### -@@ -57,7 +54,7 @@ manext = 3 - - SHELL = /bin/sh - --PROGS = libgdbm.la testgdbm testdbm testndbm tndbm tdbm conv2gdbm -+PROGS = libgdbm.la testgdbm testdbm testndbm conv2gdbm - - DBM_CF = dbminit.c delete.c fetch.c store.c seq.c close.c - -@@ -127,26 +124,17 @@ all: libgdbm.la libgdbm_compat.la - progs: $(PROGS) - - install: libgdbm.la gdbm.h gdbm.info -- $(srcdir)/mkinstalldirs $(INSTALL_ROOT)$(libdir) \ -- $(INSTALL_ROOT)$(includedir) $(INSTALL_ROOT)$(man3dir) \ -- $(INSTALL_ROOT)$(infodir) -- $(LIBTOOL) $(INSTALL) -c libgdbm.la $(INSTALL_ROOT)$(libdir)/libgdbm.la -- $(INSTALL_DATA) -o $(BINOWN) -g $(BINGRP) gdbm.h \ -- $(INSTALL_ROOT)$(includedir)/gdbm.h -- $(INSTALL_DATA) -o $(BINOWN) -g $(BINGRP) $(srcdir)/gdbm.3 \ -- $(INSTALL_ROOT)$(man3dir)/gdbm.3 -- $(INSTALL_DATA) -o $(BINOWN) -g $(BINGRP) $(srcdir)/gdbm.info \ -- $(INSTALL_ROOT)$(infodir)/gdbm.info -+ $(srcdir)/mkinstalldirs $(libdir) $(pkgincludedir) $(man3dir) $(infodir) -+ $(LIBTOOL) install install libgdbm.la $(libdir)/libgdbm.la -+ $(INSTALL_DATA) gdbm.h $(pkgincludedir)/gdbm.h -+ $(INSTALL_DATA) $(srcdir)/gdbm.3 $(man3dir)/gdbm.3 -+ $(INSTALL_DATA) $(srcdir)/gdbm.info $(infodir)/gdbm.info - - install-compat: -- $(srcdir)/mkinstalldirs $(INSTALL_ROOT)$(libdir) \ -- $(INSTALL_ROOT)$(includedir) -- $(LIBTOOL) $(INSTALL) -c libgdbm_compat.la \ -- $(INSTALL_ROOT)$(libdir)/libgdbm_compat.la -- $(INSTALL_DATA) -o $(BINOWN) -g $(BINGRP) $(srcdir)/dbm.h \ -- $(INSTALL_ROOT)$(includedir)/dbm.h -- $(INSTALL_DATA) -o $(BINOWN) -g $(BINGRP) $(srcdir)/ndbm.h \ -- $(INSTALL_ROOT)$(includedir)/ndbm.h -+ $(srcdir)/mkinstalldirs $(libdir) $(pkgincludedir) -+ $(LIBTOOL) install install libgdbm_compat.la $(libdir)/libgdbm_compat.la -+ $(INSTALL_DATA) $(srcdir)/dbm.h $(pkgincludedir)/dbm.h -+ $(INSTALL_DATA) $(srcdir)/ndbm.h $(pkgincludedir)/ndbm.h - - #libgdbm.a: $(OBJS) gdbm.h - # rm -f libgdbm.a -@@ -161,7 +149,7 @@ libgdbm.la: $(LOBJS) gdbm.h - libgdbm_compat.la: $(C_LOBJS) gdbm.h - rm -f libgdbm_compat.la - $(LIBTOOL) --mode=link $(CC) -o libgdbm_compat.la -rpath $(libdir) \ -- -version-info $(SHLIB_VER) $(C_LOBJS) -+ -version-info $(SHLIB_VER) $(C_LOBJS) -lgdbm - - gdbm.h: gdbm.proto gdbmerrno.h gdbm.proto2 - rm -f gdbm.h -@@ -172,10 +160,10 @@ gdbm.h: gdbm.proto gdbmerrno.h gdbm.prot - chmod -w gdbm.h - - testgdbm: testgdbm.o libgdbm.la @LIBOBJS@ -- $(LIBTOOL) $(CC) $(LDFLAGS) -o testgdbm testgdbm.o libgdbm.la @LIBOBJS@ -+ $(LIBTOOL) link $(CC) $(LDFLAGS) -o testgdbm testgdbm.o libgdbm.la @LIBOBJS@ - - testdbm: testdbm.o libgdbm.la libgdbm_compat.la -- $(LIBTOOL) $(CC) $(LDFLAGS) -o testdbm testdbm.o libgdbm.la libgdbm_compat.la -+ $(LIBTOOL) link $(CC) $(LDFLAGS) -o testdbm testdbm.o $(LIBS) libgdbm_compat.la - - tdbm: testdbm.o - $(CC) $(LDFLAGS) -o tdbm testdbm.o $(LIBS) -@@ -184,7 +172,7 @@ testndbm.o: testndbm.c - $(CC) -c -I. -I$(srcdir) $(CFLAGS) $(DEFS) -DGNU $(srcdir)/testndbm.c - - testndbm: testndbm.o libgdbm.la libgdbm_compat.la -- $(LIBTOOL) $(CC) $(LDFLAGS) -o testndbm testndbm.o libgdbm.la libgdbm_compat.la -+ $(LIBTOOL) link $(CC) $(LDFLAGS) -o testndbm testndbm.o libgdbm_compat.la - - tndbm.o: testndbm.c - cp $(srcdir)/testndbm.c ./tndbm.c -@@ -195,7 +183,7 @@ tndbm: tndbm.o - $(CC) $(LDFLAGS) -o tndbm tndbm.o $(LIBS) - - conv2gdbm: conv2gdbm.o libgdbm.la @LIBOBJS@ -- $(LIBTOOL) $(CC) $(LDFLAGS) -o conv2gdbm conv2gdbm.o $(LIBS) libgdbm.la @LIBOBJS@ -+ $(LIBTOOL) link $(CC) $(LDFLAGS) -o conv2gdbm conv2gdbm.o $(LIBS) libgdbm_compat.la @LIBOBJS@ - - lintgdbm: - lint $(DEFS) $(LFLAGS) $(DBM_CF) $(NDBM_CF) $(GDBM_CF) testgdbm.c diff --git a/compat-gdbm/patches/gdbm-1.8.3-filestruct.patch b/compat-gdbm/patches/gdbm-1.8.3-filestruct.patch deleted file mode 100644 index 3e27db8ec..000000000 --- a/compat-gdbm/patches/gdbm-1.8.3-filestruct.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff -up gdbm-1.8.3/gdbm.proto.filestruct gdbm-1.8.3/gdbm.proto ---- gdbm-1.8.3/gdbm.proto.filestruct 2011-01-13 09:54:03.004907454 +0100 -+++ gdbm-1.8.3/gdbm.proto 2011-01-13 09:54:24.881714834 +0100 -@@ -60,7 +60,7 @@ typedef struct { - - - /* The file information header. This is good enough for most applications. */ --typedef struct {int dummy[10];} *GDBM_FILE; -+typedef struct __GDBM_FILE_STRUC {int dummy[10];} *GDBM_FILE; - - /* Determine if the C(++) compiler requires complete function prototype */ - #ifndef __P diff --git a/compat-gdbm/patches/gdbm-1.8.3-ndbmlock.patch b/compat-gdbm/patches/gdbm-1.8.3-ndbmlock.patch deleted file mode 100644 index 7bc86c3e9..000000000 --- a/compat-gdbm/patches/gdbm-1.8.3-ndbmlock.patch +++ /dev/null @@ -1,94 +0,0 @@ -diff -up gdbm-1.8.3/dbmopen.c.dbmlock gdbm-1.8.3/dbmopen.c ---- gdbm-1.8.3/dbmopen.c.dbmlock 1999-05-19 02:16:05.000000000 +0200 -+++ gdbm-1.8.3/dbmopen.c 2011-01-03 16:17:13.847173371 +0100 -@@ -35,6 +35,28 @@ - #include "gdbmerrno.h" - #include "extern.h" - -+static int -+get_env_bool(env_var, def) -+ const char *env_var; -+ int def; -+{ -+ const char *v = getenv(env_var); -+ if (!v) -+ return def; -+ -+ if (!strcasecmp(v, "yes") || -+ !strcasecmp(v, "true") || -+ !strcasecmp(v, "on")) -+ return 1; -+ -+ if (!strcasecmp(v, "no") || -+ !strcasecmp(v, "false") || -+ !strcasecmp(v, "off")) -+ return 0; -+ -+ return !!atoi(v); -+} -+ - /* Initialize ndbm system. FILE is a pointer to the file name. In - standard dbm, the database is found in files called FILE.pag and - FILE.dir. To make gdbm compatable with dbm using the dbminit call, -@@ -62,7 +84,7 @@ dbm_open (file, flags, mode) - char* dir_file; /* Used to construct "file.dir". */ - struct stat dir_stat; /* Stat information for "file.dir". */ - gdbm_file_info *temp_dbf; /* Temporary file pointer storage. */ -- -+ int gdbm_mode = 0; - - /* Prepare the correct names of "file.pag" and "file.dir". */ - pag_file = (char *) malloc (strlen (file)+5); -@@ -77,26 +99,22 @@ dbm_open (file, flags, mode) - strcat (pag_file, ".pag"); - strcpy (dir_file, file); - strcat (dir_file, ".dir"); -- -+ -+ if (!get_env_bool("NDBM_LOCK", 1)) -+ gdbm_mode |= GDBM_NOLOCK; - - /* Call the actual routine, saving the pointer to the file information. */ - flags &= O_RDONLY | O_RDWR | O_CREAT | O_TRUNC; - if (flags == O_RDONLY) -- { -- temp_dbf = gdbm_open (pag_file, 0, GDBM_READER, 0, NULL); -- } -+ gdbm_mode |= GDBM_READER; - else if (flags == (O_RDWR | O_CREAT)) -- { -- temp_dbf = gdbm_open (pag_file, 0, GDBM_WRCREAT, mode, NULL); -- } -- else if ( (flags & O_TRUNC) == O_TRUNC) -- { -- temp_dbf = gdbm_open (pag_file, 0, GDBM_NEWDB, mode, NULL); -- } -+ gdbm_mode |= GDBM_WRCREAT; -+ else if ((flags & O_TRUNC) == O_TRUNC) -+ gdbm_mode |= GDBM_NEWDB; - else -- { -- temp_dbf = gdbm_open (pag_file, 0, GDBM_WRITER, 0, NULL); -- } -+ gdbm_mode |= GDBM_WRITER; -+ -+ temp_dbf = gdbm_open (pag_file, 0, gdbm_mode, mode, NULL); - - /* Did we successfully open the file? */ - if (temp_dbf == NULL) -diff -up gdbm-1.8.3/gdbm.3.dbmlock gdbm-1.8.3/gdbm.3 ---- gdbm-1.8.3/gdbm.3.dbmlock 2011-01-03 15:59:15.684729255 +0100 -+++ gdbm-1.8.3/gdbm.3 2011-01-03 16:17:49.957570637 +0100 -@@ -543,7 +543,11 @@ you must link in the \fIgdbm_compat\fR l - .sp - gcc -o prog proc.c -lgdbm -lgdbm_compat - --.SH BUGS -+.SH "ENVIRONMENT VARIABLES" -+\fINDBM_LOCK\fR - When the NDBM interface is used, the database file -+is locked by default. Locking might degrade performance when used on a -+NFS share. This environment variable can be set to false to tell GDBM -+not to lock the database file. - - .SH "SEE ALSO" - dbm, ndbm diff --git a/compat-gdbm/patches/gdbm-1.8.3-shortread.patch b/compat-gdbm/patches/gdbm-1.8.3-shortread.patch deleted file mode 100644 index 5b6455bec..000000000 --- a/compat-gdbm/patches/gdbm-1.8.3-shortread.patch +++ /dev/null @@ -1,113 +0,0 @@ -05_handle-short-read.patch - -diff -urNad a/bucket.c b/bucket.c ---- a/bucket.c 1999-05-19 01:16:05.000000000 +0100 -+++ b/bucket.c 2006-04-24 03:18:01.000000000 +0100 -@@ -31,7 +31,7 @@ - #include "autoconf.h" - - #include "gdbmdefs.h" -- -+#include <errno.h> - - /* Initializing a new hash buckets sets all bucket entries to -1 hash value. */ - void -@@ -68,7 +68,8 @@ - int dir_index; - { - off_t bucket_adr; /* The address of the correct hash bucket. */ -- int num_bytes; /* The number of bytes read. */ -+ int num_bytes = 0; /* The total number of bytes read. */ -+ int bytes_read; /* Number of bytes read in this syscall */ - off_t file_pos; /* The return address for lseek. */ - register int index; /* Loop index. */ - -@@ -111,7 +112,12 @@ - if (file_pos != bucket_adr) - _gdbm_fatal (dbf, "lseek error"); - -- num_bytes = read (dbf->desc, dbf->bucket, dbf->header->bucket_size); -+ do -+ { -+ bytes_read = read (dbf->desc, dbf->bucket+num_bytes, dbf->header->bucket_size-num_bytes); -+ if (bytes_read > 0) num_bytes += bytes_read; -+ } -+ while ((bytes_read > 0 || (bytes_read == -1 && errno == EINTR)) && num_bytes < dbf->header->bucket_size); - if (num_bytes != dbf->header->bucket_size) - _gdbm_fatal (dbf, "read error"); - } -diff -urNad a/falloc.c b/falloc.c ---- a/falloc.c 2006-04-24 03:17:54.000000000 +0100 -+++ b/falloc.c 2006-04-24 03:18:01.000000000 +0100 -@@ -31,7 +31,7 @@ - #include "autoconf.h" - - #include "gdbmdefs.h" -- -+#include <errno.h> - - /* The forward definitions for this file. See the functions for - the definition of the function. */ -@@ -174,7 +174,8 @@ - pop_avail_block (dbf) - gdbm_file_info *dbf; - { -- int num_bytes; /* For use with the read system call. */ -+ int num_bytes = 0; /* For use with the read system call. */ -+ int bytes_read; /* For use with the read system call. */ - off_t file_pos; /* For use with the lseek system call. */ - avail_elem new_el; - avail_block *new_blk; -@@ -199,7 +200,12 @@ - /* Read the block. */ - file_pos = lseek (dbf->desc, new_el.av_adr, L_SET); - if (file_pos != new_el.av_adr) _gdbm_fatal (dbf, "lseek error"); -- num_bytes = read (dbf->desc, new_blk, new_el.av_size); -+ do -+ { -+ bytes_read = read (dbf->desc, new_blk+num_bytes, new_el.av_size-num_bytes); -+ if (bytes_read > 0) num_bytes += bytes_read; -+ } -+ while ((bytes_read > 0 || (bytes_read == -1 && errno == EINTR)) && num_bytes < new_el.av_size); - if (num_bytes != new_el.av_size) _gdbm_fatal (dbf, "read error"); - - /* Add the elements from the new block to the header. */ -diff -urNad a/findkey.c b/findkey.c ---- a/findkey.c 1999-05-19 01:16:06.000000000 +0100 -+++ b/findkey.c 2006-04-24 03:18:01.000000000 +0100 -@@ -31,6 +31,7 @@ - #include "autoconf.h" - - #include "gdbmdefs.h" -+#include <errno.h> - - - /* Read the data found in bucket entry ELEM_LOC in file DBF and -@@ -41,11 +42,12 @@ - gdbm_file_info *dbf; - int elem_loc; - { -- int num_bytes; /* For seeking and reading. */ -+ int num_bytes = 0; /* For seeking and reading. */ - int key_size; - int data_size; - off_t file_pos; - data_cache_elem *data_ca; -+ int bytes_read; - - /* Is it already in the cache? */ - if (dbf->cache_entry->ca_data.elem_loc == elem_loc) -@@ -74,7 +76,12 @@ - dbf->bucket->h_table[elem_loc].data_pointer, L_SET); - if (file_pos != dbf->bucket->h_table[elem_loc].data_pointer) - _gdbm_fatal (dbf, "lseek error"); -- num_bytes = read (dbf->desc, data_ca->dptr, key_size+data_size); -+ do -+ { -+ bytes_read = read (dbf->desc, data_ca->dptr+num_bytes, key_size+data_size-num_bytes); -+ if (bytes_read > 0) num_bytes += bytes_read; -+ } -+ while ((bytes_read > 0 || (bytes_read == -1 && errno == EINTR)) && num_bytes < key_size+data_size); - if (num_bytes != key_size+data_size) _gdbm_fatal (dbf, "read error"); - - return data_ca->dptr; diff --git a/compat-gdbm/patches/gdbm-1.8.3-zeroheaders.patch b/compat-gdbm/patches/gdbm-1.8.3-zeroheaders.patch deleted file mode 100644 index 088956aef..000000000 --- a/compat-gdbm/patches/gdbm-1.8.3-zeroheaders.patch +++ /dev/null @@ -1,44 +0,0 @@ -02_zero-headers.patch by Jeff Johnson jbj@redhat.com and Colin Watson cjwatson@debian.org - -diff -urNad a/falloc.c b/falloc.c ---- a/falloc.c 2001-02-28 06:52:33.000000000 +0000 -+++ b/falloc.c 2003-09-08 23:58:43.000000000 +0100 -@@ -272,7 +272,7 @@ - - - /* Split the header block. */ -- temp = (avail_block *) malloc (av_size); -+ temp = (avail_block *) calloc (1, av_size); - if (temp == NULL) _gdbm_fatal (dbf, "malloc error"); - /* Set the size to be correct AFTER the pop_avail_block. */ - temp->size = dbf->header->avail.size; -diff -urNad a/gdbmopen.c b/gdbmopen.c ---- a/gdbmopen.c 2003-09-08 23:58:01.000000000 +0100 -+++ b/gdbmopen.c 2003-09-08 23:58:43.000000000 +0100 -@@ -212,7 +212,7 @@ - file_block_size = block_size; - - /* Get space for the file header. */ -- dbf->header = (gdbm_file_header *) malloc (file_block_size); -+ dbf->header = (gdbm_file_header *) calloc (1, file_block_size); - if (dbf->header == NULL) - { - gdbm_close (dbf); -@@ -256,7 +256,7 @@ - (dbf->header->block_size - sizeof (hash_bucket)) - / sizeof (bucket_element) + 1; - dbf->header->bucket_size = dbf->header->block_size; -- dbf->bucket = (hash_bucket *) malloc (dbf->header->bucket_size); -+ dbf->bucket = (hash_bucket *) calloc (1, dbf->header->bucket_size); - if (dbf->bucket == NULL) - { - gdbm_close (dbf); -@@ -420,7 +420,7 @@ - for(index = 0; index < size; index++) - { - (dbf->bucket_cache[index]).ca_bucket -- = (hash_bucket *) malloc (dbf->header->bucket_size); -+ = (hash_bucket *) calloc (1, dbf->header->bucket_size); - if ((dbf->bucket_cache[index]).ca_bucket == NULL) - { - gdbm_errno = GDBM_MALLOC_ERROR; diff --git a/cpio/cpio.nm b/cpio/cpio.nm index af5deca80..c9589b611 100644 --- a/cpio/cpio.nm +++ b/cpio/cpio.nm @@ -4,26 +4,27 @@ ###############################################################################
name = cpio -version = 2.12 +version = 2.13 release = 1
groups = System/Packaging -url = http://www.gnu.org/software/cpio/ +url = https://www.gnu.org/software/cpio/ license = GPLv3+ -summary = A GNU archiving program. +summary = A GNU archiving program
description - GNU cpio copies files into or out of a cpio or tar archive. Archives \ - are files which contain a collection of other files plus information \ - about them, such as their file name, owner, timestamps, and access \ - permissions. The archive can be another file on the disk, a magnetic \ + GNU cpio copies files into or out of a cpio or tar archive. Archives + are files which contain a collection of other files plus information + about them, such as their file name, owner, timestamps, and access + permissions. The archive can be another file on the disk, a magnetic tape, or a pipe. end
-source_dl = http://ftp.gnu.org/gnu/cpio/ -sources = %{thisapp}.tar.bz2 +source_dl = https://ftp.gnu.org/gnu/cpio/
build + CFLAGS += -fcommon + configure_options += \ --libexecdir=/tmp \ --with-rmt=/usr/sbin/rmt diff --git a/curl/curl.nm b/curl/curl.nm index 70da50d2b..c0e01165f 100644 --- a/curl/curl.nm +++ b/curl/curl.nm @@ -5,7 +5,7 @@
name = curl version = 7.86.0 -release = 1 +release = 2
groups = Application/Internet url = https://curl.haxx.se/ @@ -29,6 +29,7 @@ build libssh2-devel libtool-devel net-tools + nghttp2-devel openldap-devel openssl-devel zlib-devel diff --git a/dejagnu/dejagnu.nm b/dejagnu/dejagnu.nm index d6e0a6e3e..b043d0644 100644 --- a/dejagnu/dejagnu.nm +++ b/dejagnu/dejagnu.nm @@ -4,12 +4,12 @@ ###############################################################################
name = dejagnu -version = 1.6 +version = 1.6.3 release = 1 arch = noarch
groups = Development/Tools -url = http://www.gnu.org/software/dejagnu/ +url = https://www.gnu.org/software/dejagnu/ license = GPLv2+ summary = A front end for testing other programs
@@ -17,24 +17,20 @@ description DejaGnu is an Expect/Tcl based framework for testing other programs. end
-source_dl = http://mirror.netcologne.de/gnu/dejagnu/ -sources = %{thisapp}.tar.gz +source_dl = https://ftp.gnu.org/gnu/dejagnu/
build requires bison expect end - - configure_options += \ - --mandir=/usr/share/man - end
packages package %{name} requires expect + gawk tcl end end diff --git a/dialog/dialog.nm b/dialog/dialog.nm deleted file mode 100644 index 17d5d9f6b..000000000 --- a/dialog/dialog.nm +++ /dev/null @@ -1,61 +0,0 @@ -############################################################################### -# IPFire.org - An Open Source Firewall Solution # -# Copyright (C) - IPFire Development Team info@ipfire.org # -############################################################################### - -name = dialog -version = 1.1 -svn_ver = 20111020 -release = 2.%{svn_ver} -thisapp = %{name}-%{version}-%{svn_ver} - -groups = Applications/System -url = http://invisible-island.net/dialog/dialog.html -license = LGPLv2 -summary = A utility for creating TTY dialog boxes. - -description - Dialog is a utility that allows you to show dialog boxes (containing - questions or messages) in TTY (text mode) interfaces. Dialog is called - from within a shell script. The following dialog boxes are implemented: - yes/no, menu, input, message, text, info, checklist, radiolist, and - gauge. -end - -source_dl = ftp://invisible-island.net/dialog/ -sources = %{thisapp}.tgz - -build - requires - chrpath - findutils - gettext - libtool - ncurses-devel - end - - configure_options += \ - --enable-nls \ - --with-libtool \ - --with-ncursesw \ - --includedir=/usr/include/dialog - - install_cmds - chmod -v 755 %{BUILDROOT}%{libdir}/libdialog.so.*.*.* - - # Remove RPATH. - chrpath --delete %{BUILDROOT}%{bindir}/dialog - end -end - -packages - package %{name} - - package %{name}-devel - template DEVEL - end - - package %{name}-debuginfo - template DEBUGINFO - end -end diff --git a/dialog/patches/dialog-incdir.patch b/dialog/patches/dialog-incdir.patch deleted file mode 100644 index f31f57bfb..000000000 --- a/dialog/patches/dialog-incdir.patch +++ /dev/null @@ -1,23 +0,0 @@ -diff -up dialog-1.1-20110707/dialog-config.in.incdir dialog-1.1-20110707/dialog-config.in ---- dialog-1.1-20110707/dialog-config.in.incdir 2011-01-06 10:38:03.000000000 +0100 -+++ dialog-1.1-20110707/dialog-config.in 2011-07-26 13:00:02.692038027 +0200 -@@ -35,6 +35,7 @@ bindir="@bindir@" - libdir="@libdir@" - datadir="@datadir@" - mandir="@mandir@" -+includedir="@includedir@" - - THIS="@PACKAGE@" - -@@ -67,10 +68,7 @@ while test $# -gt 0; do - ;; - # compile/link - --cflags) -- INCS= -- if test "${prefix}/include" != /usr/include ; then -- INCS="-I${prefix}/include" -- fi -+ INCS="-I$includedir" - sed -e 's,^[ ]*,,' -e 's, [ ]*, ,g' -e 's,[ ]*$,,' <<-ENDECHO - $INCS - ENDECHO diff --git a/dialog/patches/dialog-libs.patch b/dialog/patches/dialog-libs.patch deleted file mode 100644 index 866933640..000000000 --- a/dialog/patches/dialog-libs.patch +++ /dev/null @@ -1,17 +0,0 @@ -diff -up dialog-1.1-20110707/makefile.in.libs dialog-1.1-20110707/makefile.in ---- dialog-1.1-20110707/makefile.in.libs 2011-06-25 02:27:56.000000000 +0200 -+++ dialog-1.1-20110707/makefile.in 2011-07-26 13:04:50.389183890 +0200 -@@ -176,11 +176,11 @@ dialog$o \ - $(OBJECTS) : $(srcdir)/dialog.h $(srcdir)/dlg_keys.h dlg_config.h VERSION - - $(LIB) : $(LIB_OBJECT) -- $(LIBTOOL_CREATE) $(LIB) $(LIB_OBJECT) -+ $(LIBTOOL_CREATE) $(LIB) $(LIB_OBJECT) $(LIBS) - $(RANLIB) $@ - - dialog$x : $(LIB) dialog$o @INTLDIR_MAKE@ @INTLLIBS@ -- $(LINK) -o $@ dialog$o -L. -l@PACKAGE@ $(LDFLAGS) $(LIBS) -+ $(LINK) -o $@ dialog$o -L. -l@PACKAGE@ $(LDFLAGS) - - clean \ - distclean \ diff --git a/dialog/patches/dialog-multilib.patch b/dialog/patches/dialog-multilib.patch deleted file mode 100644 index fc35c76a9..000000000 --- a/dialog/patches/dialog-multilib.patch +++ /dev/null @@ -1,32 +0,0 @@ -diff -up dialog-1.1-20110707/dialog-config.in.multilib dialog-1.1-20110707/dialog-config.in ---- dialog-1.1-20110707/dialog-config.in.multilib 2011-07-26 13:01:29.929082616 +0200 -+++ dialog-1.1-20110707/dialog-config.in 2011-07-26 13:01:29.932082618 +0200 -@@ -32,7 +32,7 @@ prefix="@prefix@" - exec_prefix="@exec_prefix@" - - bindir="@bindir@" --libdir="@libdir@" -+libdir= - datadir="@datadir@" - mandir="@mandir@" - includedir="@includedir@" -@@ -75,7 +75,7 @@ ENDECHO - ;; - --libs) - sed -e 's,^[ ]*,,' -e 's, [ ]*, ,g' -e 's,[ ]*$,,' <<-ENDECHO -- -L${exec_prefix}/lib -l${THIS} @LIBS@ -+ -l${THIS} - ENDECHO - ;; - # identification -diff -up dialog-1.1-20110707/headers-sh.in.multilib dialog-1.1-20110707/headers-sh.in ---- dialog-1.1-20110707/headers-sh.in.multilib 2011-01-06 10:38:25.000000000 +0100 -+++ dialog-1.1-20110707/headers-sh.in 2011-07-26 13:02:44.177120225 +0200 -@@ -127,6 +127,7 @@ EOF - echo "s,#include <${pkgname}_,#include <${PACKAGE}/${pkgname}_," >>$TMPSED - fi - -+ echo '/_FILE_OFFSET_BITS/d' >>$TMPSED - # reduce the count if possible, since some old sed's limit is 100 lines - sort -u $TMPSED >headers.tmp - mv headers.tmp $TMPSED diff --git a/directfb/directfb.nm b/directfb/directfb.nm deleted file mode 100644 index 8867297ba..000000000 --- a/directfb/directfb.nm +++ /dev/null @@ -1,62 +0,0 @@ -############################################################################### -# IPFire.org - An Open Source Firewall Solution # -# Copyright (C) - IPFire Development Team info@ipfire.org # -############################################################################### - -name = directfb -version = %{ver_major}.%{ver_minor} -release = 1 -thisapp = DirectFB-%{version} - -ver_major = 1.5 -ver_minor = 3 - -groups = System/Graphics -url = http://www.directfb.org/ -license = LGPLv2+ -summary = Graphics abstraction library for the Linux Framebuffer Device. - -description - DirectFB is a thin library that provides hardware graphics acceleration, - input device handling and abstraction, integrated windowing system with - support for translucent windows and multiple display layers on top of the - Linux Framebuffer Device. -end - -source_dl = http://www.directfb.org/download/DirectFBGL/DirectFB-%%7Bver_major%7D/ - -build - requires - freetype-devel - libjpeg-devel - libVNCServer-devel - perl - sysfsutils-devel - zlib-devel - end - - LDFLAGS += \ - -Wl,-z,relro \ - -Wl,-z,noexecstack - - configure_options += \ - --disable-x11 \ - --enable-sdl \ - --enable-video4linux2 \ - --enable-zlib \ - --with-dither-rgb16=advanced \ - --disable-mmx \ - --disable-sse -end - -packages - package %{name} - - package %{name}-devel - template DEVEL - end - - package %{name}-debuginfo - template DEBUGINFO - end -end diff --git a/directfb/patches/DirectFB-1.5.3-add-missing-davinci-files.patch b/directfb/patches/DirectFB-1.5.3-add-missing-davinci-files.patch deleted file mode 100644 index bdea60105..000000000 --- a/directfb/patches/DirectFB-1.5.3-add-missing-davinci-files.patch +++ /dev/null @@ -1,1697 +0,0 @@ -diff -urNp DirectFB-1.5.3_orig/gfxdrivers/davinci/davinci_c64x.h DirectFB-1.5.3/gfxdrivers/davinci/davinci_c64x.h ---- DirectFB-1.5.3_orig/gfxdrivers/davinci/davinci_c64x.h 1969-12-31 19:00:00.000000000 -0500 -+++ DirectFB-1.5.3/gfxdrivers/davinci/davinci_c64x.h 2012-05-09 02:20:38.342006623 -0400 -@@ -0,0 +1,935 @@ -+/* -+ TI Davinci driver - C64X+ DSP Library -+ -+ (c) Copyright 2008 directfb.org -+ (c) Copyright 2007 Telio AG -+ -+ Written by Denis Oliver Kropp dok@directfb.org and -+ Olaf Dreesen olaf@directfb.org. -+ -+ All rights reserved. -+ -+ This library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU General Public License -+ version 2 as published by the Free Software Foundation. -+ -+ This library is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ General Public License for more details. -+ -+ You should have received a copy of the GNU General Public -+ License along with this library; if not, write to the -+ Free Software Foundation, Inc., 59 Temple Place - Suite 330, -+ Boston, MA 02111-1307, USA. -+*/ -+ -+#ifndef __DAVINCI_C64X_H__ -+#define __DAVINCI_C64X_H__ -+ -+#include <unistd.h> -+ -+#include <directfb.h> -+ -+#include <direct/messages.h> -+#include <direct/trace.h> -+ -+#include <linux/c64x.h> -+ -+#define mb() __asm__ __volatile__ ("" : : : "memory") -+ -+/**********************************************************************************************************************/ -+ -+typedef struct { -+ int magic; -+ -+ int fd; -+ c64xTaskControl *ctl; -+ void *mem; -+ -+ c64xTask *QueueL; -+} DavinciC64x; -+ -+typedef struct { -+ int magic; -+ unsigned int max_tasks; -+ unsigned int num_tasks; -+ c64xTask *tasks; -+} DavinciC64xTasks; -+ -+typedef enum { -+ C64X_TEF_NONE = 0x0000, -+ C64X_TEF_RESET = 0x0001 -+} DavinciC64xEmitFlags; -+ -+/**********************************************************************************************************************/ -+ -+DFBResult davinci_c64x_open ( DavinciC64x *c64x ); -+ -+DFBResult davinci_c64x_close ( DavinciC64x *c64x ); -+ -+DFBResult davinci_c64x_wait_low( DavinciC64x *c64x ); -+ -+/**********************************************************************************************************************/ -+ -+DFBResult davinci_c64x_tasks_init ( DavinciC64xTasks *tasks, -+ unsigned int size ); -+ -+DFBResult davinci_c64x_tasks_destroy( DavinciC64xTasks *tasks ); -+ -+/**********************************************************************************************************************/ -+ -+DFBResult davinci_c64x_emit_tasks( DavinciC64x *c64x, -+ DavinciC64xTasks *tasks, -+ DavinciC64xEmitFlags flags ); -+ -+/**********************************************************************************************************************/ -+ -+static const char *state_names[] = { "DONE", "ERROR", "TODO", "RUNNING" }; -+ -+static inline c64xTask * -+c64x_get_task( DavinciC64x *c64x ) -+{ -+ c64xTaskControl *ctl = c64x->ctl; -+ uint32_t idx = ctl->QL_arm; -+ uint32_t next = (idx + 1) & C64X_QUEUE_MASK; -+ c64xTask *task = &c64x->QueueL[idx]; -+ int loops = 0; -+ uint32_t idle = 0; -+ -+ /* Wait for the entry (and next) to be processed by the DSP (rare case). */ -+ while (task->c64x_flags & C64X_FLAG_TODO || ctl->QL_dsp == next) { -+ if (loops > 666 || (idle && ctl->idlecounter - idle > 666)) { -+ c64xTask *dsp_task = &c64x->QueueL[ctl->QL_dsp]; -+ -+ D_PERROR( "Davinci/C64X+: Blocked! [DSP %d / %d (%s), ARM %d / %d (%s)]\n", -+ ctl->QL_dsp, -+ (dsp_task->c64x_function >> 2) & 0x3fff, -+ state_names[dsp_task->c64x_function & 3], -+ ctl->QL_arm, -+ (task->c64x_function >> 2) & 0x3fff, -+ state_names[task->c64x_function & 3] ); -+ -+ break; -+ } -+ -+ idle = ctl->idlecounter; -+ -+ /* Queue is full, waiting 10-20ms should not be too bad. */ -+ if (loops++ > 10) -+ usleep( 5000 ); -+ } -+ -+ return task; -+} -+ -+static inline void -+c64x_submit_task( DavinciC64x *c64x, c64xTask *task ) -+{ -+ c64xTaskControl *ctl = c64x->ctl; -+ uint32_t idx = ctl->QL_arm; -+ uint32_t next = (idx + 1) & C64X_QUEUE_MASK; -+ -+ mb(); -+ -+ ctl->QL_arm = next; -+ -+ mb(); -+} -+ -+/**********************************************************************************************************************/ -+ -+static inline void -+davinci_c64x_wb_inv_range( DavinciC64x *c64x, -+ unsigned long start, -+ u32 length, -+ u32 func ) -+{ -+ c64xTask *task = c64x_get_task( c64x ); -+ -+ task->c64x_arg[0] = start; -+ task->c64x_arg[1] = length; -+ task->c64x_arg[2] = func; -+ -+ task->c64x_function = C64X_WB_INV_RANGE | C64X_FLAG_TODO; -+ -+ c64x_submit_task( c64x, task ); -+} -+ -+static inline void -+davinci_c64x_write_back_all( DavinciC64x *c64x ) -+{ -+ c64xTask *task = c64x_get_task( c64x ); -+ -+ task->c64x_function = C64X_WRITE_BACK_ALL | C64X_FLAG_TODO; -+ -+ c64x_submit_task( c64x, task ); -+} -+ -+/**********************************************************************************************************************/ -+ -+static inline void -+davinci_c64x_load_block__L( DavinciC64xTasks *tasks, -+ unsigned long words, -+ u32 num, -+ u32 flags ) -+{ -+ c64xTask *task = &tasks->tasks[tasks->num_tasks]; -+ -+ D_ASSERT( tasks->num_tasks < tasks->max_tasks ); -+ -+ task->c64x_arg[0] = words; -+ task->c64x_arg[1] = num; -+ task->c64x_arg[2] = flags; -+ -+ task->c64x_function = C64X_LOAD_BLOCK | C64X_FLAG_TODO; -+ -+ tasks->num_tasks++; -+} -+ -+static inline void -+davinci_c64x_load_block( DavinciC64x *c64x, -+ unsigned long words, -+ u32 num, -+ u32 flags ) -+{ -+ c64xTask *task = c64x_get_task( c64x ); -+ -+ task->c64x_arg[0] = words; -+ task->c64x_arg[1] = num; -+ task->c64x_arg[2] = flags; -+ -+ task->c64x_function = C64X_LOAD_BLOCK | C64X_FLAG_TODO; -+ -+ c64x_submit_task( c64x, task ); -+} -+ -+static inline void -+davinci_c64x_fetch_uyvy( DavinciC64x *c64x, -+ unsigned long dest, -+ unsigned long source, -+ u32 pitch, -+ u32 height, -+ u32 flags ) -+{ -+ c64xTask *task = c64x_get_task( c64x ); -+ -+ task->c64x_arg[0] = dest; -+ task->c64x_arg[1] = source; -+ task->c64x_arg[2] = pitch; -+ task->c64x_arg[3] = height; -+ task->c64x_arg[4] = flags; -+ -+ task->c64x_function = C64X_FETCH_UYVY | C64X_FLAG_TODO; -+ -+ c64x_submit_task( c64x, task ); -+} -+ -+static inline void -+davinci_c64x_mc( DavinciC64x *c64x, -+ unsigned long dest, -+ u32 dpitch, -+ unsigned long source0, -+ unsigned long source1, -+ u32 spitch, -+ u32 height, -+ int func ) -+{ -+ c64xTask *task = c64x_get_task( c64x ); -+ -+ task->c64x_arg[0] = dest; -+ task->c64x_arg[1] = dpitch; -+ task->c64x_arg[2] = source0; -+ task->c64x_arg[3] = source1; -+ task->c64x_arg[4] = spitch; -+ task->c64x_arg[5] = height; -+ -+ task->c64x_function = func | C64X_FLAG_TODO; -+ -+ c64x_submit_task( c64x, task ); -+} -+ -+static inline void -+davinci_c64x_put_idct_uyvy_16x16__L( DavinciC64xTasks *tasks, -+ unsigned long dest, -+ u32 pitch, -+ u32 flags ) -+{ -+ c64xTask *task = &tasks->tasks[tasks->num_tasks]; -+ -+ D_ASSERT( tasks->num_tasks < tasks->max_tasks ); -+ -+ task->c64x_arg[0] = dest; -+ task->c64x_arg[1] = pitch; -+ task->c64x_arg[2] = flags; -+ -+ task->c64x_function = C64X_PUT_IDCT_UYVY_16x16 | C64X_FLAG_TODO; -+ -+ tasks->num_tasks++; -+} -+ -+static inline void -+davinci_c64x_put_idct_uyvy_16x16( DavinciC64x *c64x, -+ unsigned long dest, -+ u32 pitch, -+ u32 flags ) -+{ -+ c64xTask *task = c64x_get_task( c64x ); -+ -+ task->c64x_arg[0] = dest; -+ task->c64x_arg[1] = pitch; -+ task->c64x_arg[2] = flags; -+ -+ task->c64x_function = C64X_PUT_IDCT_UYVY_16x16 | C64X_FLAG_TODO; -+ -+ c64x_submit_task( c64x, task ); -+} -+ -+static inline void -+davinci_c64x_put_mc_uyvy_16x16__L( DavinciC64xTasks *tasks, -+ unsigned long dest, -+ u32 pitch, -+ u32 flags ) -+{ -+ c64xTask *task = &tasks->tasks[tasks->num_tasks]; -+ -+ D_ASSERT( tasks->num_tasks < tasks->max_tasks ); -+ -+ task->c64x_arg[0] = dest; -+ task->c64x_arg[1] = pitch; -+ task->c64x_arg[2] = flags; -+ -+ task->c64x_function = C64X_PUT_MC_UYVY_16x16 | C64X_FLAG_TODO; -+ -+ tasks->num_tasks++; -+} -+ -+static inline void -+davinci_c64x_put_mc_uyvy_16x16( DavinciC64x *c64x, -+ unsigned long dest, -+ u32 pitch, -+ u32 flags ) -+{ -+ c64xTask *task = c64x_get_task( c64x ); -+ -+ task->c64x_arg[0] = dest; -+ task->c64x_arg[1] = pitch; -+ task->c64x_arg[2] = flags; -+ -+ task->c64x_function = C64X_PUT_MC_UYVY_16x16 | C64X_FLAG_TODO; -+ -+ c64x_submit_task( c64x, task ); -+} -+ -+static inline void -+davinci_c64x_put_sum_uyvy_16x16__L( DavinciC64xTasks *tasks, -+ unsigned long dest, -+ u32 pitch, -+ u32 flags ) -+{ -+ c64xTask *task = &tasks->tasks[tasks->num_tasks]; -+ -+ D_ASSERT( tasks->num_tasks < tasks->max_tasks ); -+ -+ task->c64x_arg[0] = dest; -+ task->c64x_arg[1] = pitch; -+ task->c64x_arg[2] = flags; -+ -+ task->c64x_function = C64X_PUT_SUM_UYVY_16x16 | C64X_FLAG_TODO; -+ -+ tasks->num_tasks++; -+} -+ -+static inline void -+davinci_c64x_put_sum_uyvy_16x16( DavinciC64x *c64x, -+ unsigned long dest, -+ u32 pitch, -+ u32 flags ) -+{ -+ c64xTask *task = c64x_get_task( c64x ); -+ -+ task->c64x_arg[0] = dest; -+ task->c64x_arg[1] = pitch; -+ task->c64x_arg[2] = flags; -+ -+ task->c64x_function = C64X_PUT_SUM_UYVY_16x16 | C64X_FLAG_TODO; -+ -+ c64x_submit_task( c64x, task ); -+} -+ -+static inline void -+davinci_c64x_dva_begin_frame__L( DavinciC64xTasks *tasks, -+ u32 pitch, -+ unsigned long current, -+ unsigned long past, -+ unsigned long future, -+ u32 flags ) -+{ -+ c64xTask *task = &tasks->tasks[tasks->num_tasks]; -+ -+ D_ASSERT( tasks->num_tasks < tasks->max_tasks ); -+ -+ task->c64x_arg[0] = pitch; -+ task->c64x_arg[1] = current; -+ task->c64x_arg[2] = past; -+ task->c64x_arg[3] = future; -+ task->c64x_arg[4] = flags; -+ -+ task->c64x_function = C64X_DVA_BEGIN_FRAME | C64X_FLAG_TODO; -+ -+ tasks->num_tasks++; -+} -+ -+static inline void -+davinci_c64x_dva_begin_frame( DavinciC64x *c64x, -+ u32 pitch, -+ unsigned long current, -+ unsigned long past, -+ unsigned long future, -+ u32 flags ) -+{ -+ c64xTask *task = c64x_get_task( c64x ); -+ -+ task->c64x_arg[0] = pitch; -+ task->c64x_arg[1] = current; -+ task->c64x_arg[2] = past; -+ task->c64x_arg[3] = future; -+ task->c64x_arg[4] = flags; -+ -+ task->c64x_function = C64X_DVA_BEGIN_FRAME | C64X_FLAG_TODO; -+ -+ c64x_submit_task( c64x, task ); -+} -+ -+static inline void -+davinci_c64x_dva_motion_block__L( DavinciC64xTasks *tasks, -+ unsigned long macroblock ) -+{ -+ c64xTask *task = &tasks->tasks[tasks->num_tasks]; -+ -+ D_ASSERT( tasks->num_tasks < tasks->max_tasks ); -+ -+ task->c64x_arg[0] = macroblock; -+ -+ task->c64x_function = C64X_DVA_MOTION_BLOCK | C64X_FLAG_TODO; -+ -+ tasks->num_tasks++; -+} -+ -+static inline void -+davinci_c64x_dva_motion_block( DavinciC64x *c64x, -+ unsigned long macroblock ) -+{ -+ c64xTask *task = c64x_get_task( c64x ); -+ -+ task->c64x_arg[0] = macroblock; -+ -+ task->c64x_function = C64X_DVA_MOTION_BLOCK | C64X_FLAG_TODO; -+ -+ c64x_submit_task( c64x, task ); -+} -+ -+/**********************************************************************************************************************/ -+ -+static inline void -+davinci_c64x_dva_idct( DavinciC64x *c64x, -+ unsigned long dest, -+ u32 pitch, -+ unsigned long source ) -+{ -+ c64xTask *task = c64x_get_task( c64x ); -+ -+ task->c64x_arg[0] = dest; -+ task->c64x_arg[1] = pitch; -+ task->c64x_arg[2] = source; -+ -+ task->c64x_function = C64X_DVA_IDCT | C64X_FLAG_TODO; -+ -+ c64x_submit_task( c64x, task ); -+} -+ -+/**********************************************************************************************************************/ -+ -+static inline void -+davinci_c64x_put_uyvy_16x16( DavinciC64x *c64x, -+ unsigned long dest, -+ u32 pitch, -+ unsigned long source, -+ u32 flags ) -+{ -+ c64xTask *task = c64x_get_task( c64x ); -+ -+ task->c64x_arg[0] = dest; -+ task->c64x_arg[1] = pitch; -+ task->c64x_arg[2] = source; -+ task->c64x_arg[3] = flags; -+ -+ task->c64x_function = C64X_PUT_UYVY_16x16 | C64X_FLAG_TODO; -+ -+ c64x_submit_task( c64x, task ); -+} -+ -+static inline void -+davinci_c64x_dither_argb__L( DavinciC64xTasks *tasks, -+ unsigned long dst_rgb, -+ unsigned long dst_alpha, -+ u32 dst_pitch, -+ unsigned long source, -+ u32 src_pitch, -+ u32 width, -+ u32 height ) -+{ -+ c64xTask *task = &tasks->tasks[tasks->num_tasks]; -+ -+ D_ASSERT( tasks->num_tasks < tasks->max_tasks ); -+ -+ task->c64x_arg[0] = dst_rgb; -+ task->c64x_arg[1] = dst_alpha; -+ task->c64x_arg[2] = dst_pitch; -+ task->c64x_arg[3] = source; -+ task->c64x_arg[4] = src_pitch; -+ task->c64x_arg[5] = width; -+ task->c64x_arg[6] = height; -+ -+ task->c64x_function = C64X_DITHER_ARGB | C64X_FLAG_TODO; -+ -+ tasks->num_tasks++; -+} -+ -+static inline void -+davinci_c64x_dither_argb( DavinciC64x *c64x, -+ unsigned long dst_rgb, -+ unsigned long dst_alpha, -+ u32 dst_pitch, -+ unsigned long source, -+ u32 src_pitch, -+ u32 width, -+ u32 height ) -+{ -+ c64xTask *task = c64x_get_task( c64x ); -+ -+ task->c64x_arg[0] = dst_rgb; -+ task->c64x_arg[1] = dst_alpha; -+ task->c64x_arg[2] = dst_pitch; -+ task->c64x_arg[3] = source; -+ task->c64x_arg[4] = src_pitch; -+ task->c64x_arg[5] = width; -+ task->c64x_arg[6] = height; -+ -+ task->c64x_function = C64X_DITHER_ARGB | C64X_FLAG_TODO; -+ -+ c64x_submit_task( c64x, task ); -+} -+ -+static inline void -+davinci_c64x_fill_16__L( DavinciC64xTasks *tasks, -+ unsigned long dest, -+ u32 pitch, -+ u32 width, -+ u32 height, -+ u32 value ) -+{ -+ c64xTask *task = &tasks->tasks[tasks->num_tasks]; -+ -+ D_ASSERT( tasks->num_tasks < tasks->max_tasks ); -+ -+ task->c64x_arg[0] = dest; -+ task->c64x_arg[1] = pitch; -+ task->c64x_arg[2] = width; -+ task->c64x_arg[3] = height; -+ task->c64x_arg[4] = value; -+ -+ task->c64x_function = C64X_FILL_16 | C64X_FLAG_TODO; -+ -+ tasks->num_tasks++; -+} -+ -+static inline void -+davinci_c64x_fill_16( DavinciC64x *c64x, -+ unsigned long dest, -+ u32 pitch, -+ u32 width, -+ u32 height, -+ u32 value ) -+{ -+ c64xTask *task = c64x_get_task( c64x ); -+ -+ task->c64x_arg[0] = dest; -+ task->c64x_arg[1] = pitch; -+ task->c64x_arg[2] = width; -+ task->c64x_arg[3] = height; -+ task->c64x_arg[4] = value; -+ -+ task->c64x_function = C64X_FILL_16 | C64X_FLAG_TODO; -+ -+ c64x_submit_task( c64x, task ); -+} -+ -+static inline void -+davinci_c64x_fill_32__L( DavinciC64xTasks *tasks, -+ unsigned long dest, -+ u32 pitch, -+ u32 width, -+ u32 height, -+ u32 value ) -+{ -+ c64xTask *task = &tasks->tasks[tasks->num_tasks]; -+ -+ D_ASSERT( tasks->num_tasks < tasks->max_tasks ); -+ -+ task->c64x_arg[0] = dest; -+ task->c64x_arg[1] = pitch; -+ task->c64x_arg[2] = width; -+ task->c64x_arg[3] = height; -+ task->c64x_arg[4] = value; -+ -+ task->c64x_function = C64X_FILL_32 | C64X_FLAG_TODO; -+ -+ tasks->num_tasks++; -+} -+ -+static inline void -+davinci_c64x_fill_32( DavinciC64x *c64x, -+ unsigned long dest, -+ u32 pitch, -+ u32 width, -+ u32 height, -+ u32 value ) -+{ -+ c64xTask *task = c64x_get_task( c64x ); -+ -+ task->c64x_arg[0] = dest; -+ task->c64x_arg[1] = pitch; -+ task->c64x_arg[2] = width; -+ task->c64x_arg[3] = height; -+ task->c64x_arg[4] = value; -+ -+ task->c64x_function = C64X_FILL_32 | C64X_FLAG_TODO; -+ -+ c64x_submit_task( c64x, task ); -+} -+ -+static inline void -+davinci_c64x_blit_16__L( DavinciC64xTasks *tasks, -+ unsigned long dest, -+ u32 dpitch, -+ unsigned long src, -+ u32 spitch, -+ u32 width, -+ u32 height ) -+{ -+ c64xTask *task = &tasks->tasks[tasks->num_tasks]; -+ -+ D_ASSERT( tasks->num_tasks < tasks->max_tasks ); -+ -+ task->c64x_arg[0] = dest; -+ task->c64x_arg[1] = dpitch; -+ task->c64x_arg[2] = src; -+ task->c64x_arg[3] = spitch; -+ task->c64x_arg[4] = width; -+ task->c64x_arg[5] = height; -+ -+ task->c64x_function = C64X_COPY_16 | C64X_FLAG_TODO; -+ -+ tasks->num_tasks++; -+} -+ -+static inline void -+davinci_c64x_blit_16( DavinciC64x *c64x, -+ unsigned long dest, -+ u32 dpitch, -+ unsigned long src, -+ u32 spitch, -+ u32 width, -+ u32 height ) -+{ -+ c64xTask *task = c64x_get_task( c64x ); -+ -+ task->c64x_arg[0] = dest; -+ task->c64x_arg[1] = dpitch; -+ task->c64x_arg[2] = src; -+ task->c64x_arg[3] = spitch; -+ task->c64x_arg[4] = width; -+ task->c64x_arg[5] = height; -+ -+ task->c64x_function = C64X_COPY_16 | C64X_FLAG_TODO; -+ -+ c64x_submit_task( c64x, task ); -+} -+ -+static inline void -+davinci_c64x_blit_32__L( DavinciC64xTasks *tasks, -+ unsigned long dest, -+ u32 dpitch, -+ unsigned long src, -+ u32 spitch, -+ u32 width, -+ u32 height ) -+{ -+ c64xTask *task = &tasks->tasks[tasks->num_tasks]; -+ -+ D_ASSERT( tasks->num_tasks < tasks->max_tasks ); -+ -+ task->c64x_arg[0] = dest; -+ task->c64x_arg[1] = dpitch; -+ task->c64x_arg[2] = src; -+ task->c64x_arg[3] = spitch; -+ task->c64x_arg[4] = width; -+ task->c64x_arg[5] = height; -+ -+ task->c64x_function = C64X_COPY_32 | C64X_FLAG_TODO; -+ -+ tasks->num_tasks++; -+} -+ -+static inline void -+davinci_c64x_blit_32( DavinciC64x *c64x, -+ unsigned long dest, -+ u32 dpitch, -+ unsigned long src, -+ u32 spitch, -+ u32 width, -+ u32 height ) -+{ -+ c64xTask *task = c64x_get_task( c64x ); -+ -+ task->c64x_arg[0] = dest; -+ task->c64x_arg[1] = dpitch; -+ task->c64x_arg[2] = src; -+ task->c64x_arg[3] = spitch; -+ task->c64x_arg[4] = width; -+ task->c64x_arg[5] = height; -+ -+ task->c64x_function = C64X_COPY_32 | C64X_FLAG_TODO; -+ -+ c64x_submit_task( c64x, task ); -+} -+ -+static inline void -+davinci_c64x_stretch_32__L( DavinciC64xTasks *tasks, -+ unsigned long dest, -+ u32 dpitch, -+ unsigned long src, -+ u32 spitch, -+ u32 dw, -+ u32 dh, -+ u32 sw, -+ u32 sh, -+ const DFBRegion *clip ) -+{ -+ c64xTask *task = &tasks->tasks[tasks->num_tasks]; -+ -+ D_ASSERT( tasks->num_tasks < tasks->max_tasks ); -+ -+ task->c64x_arg[0] = dest; -+ task->c64x_arg[1] = src; -+ task->c64x_arg[2] = dpitch | (spitch << 16); -+ task->c64x_arg[3] = dh | (dw << 16); -+ task->c64x_arg[4] = sh | (sw << 16); -+ task->c64x_arg[5] = clip->x2 | (clip->y2 << 16); -+ task->c64x_arg[6] = clip->x1 | (clip->y1 << 16); -+ -+ if (sw > dw && sh > dh) -+ task->c64x_function = C64X_STRETCH_32_down | C64X_FLAG_TODO; -+ else -+ task->c64x_function = C64X_STRETCH_32_up | C64X_FLAG_TODO; -+ -+ tasks->num_tasks++; -+} -+ -+static inline void -+davinci_c64x_stretch_32( DavinciC64x *c64x, -+ unsigned long dest, -+ u32 dpitch, -+ unsigned long src, -+ u32 spitch, -+ u32 dw, -+ u32 dh, -+ u32 sw, -+ u32 sh, -+ const DFBRegion *clip ) -+{ -+ c64xTask *task = c64x_get_task( c64x ); -+ -+ task->c64x_arg[0] = dest; -+ task->c64x_arg[1] = src; -+ task->c64x_arg[2] = dpitch | (spitch << 16); -+ task->c64x_arg[3] = dh | (dw << 16); -+ task->c64x_arg[4] = sh | (sw << 16); -+ task->c64x_arg[5] = clip->x2 | (clip->y2 << 16); -+ task->c64x_arg[6] = clip->x1 | (clip->y1 << 16); -+ -+ if (sw > dw && sh > dh) -+ task->c64x_function = C64X_STRETCH_32_down | C64X_FLAG_TODO; -+ else -+ task->c64x_function = C64X_STRETCH_32_up | C64X_FLAG_TODO; -+ -+ c64x_submit_task( c64x, task ); -+} -+ -+static inline void -+davinci_c64x_blit_blend_32__L( DavinciC64xTasks *tasks, -+ u32 sub_func, -+ unsigned long dest, -+ u32 dpitch, -+ unsigned long src, -+ u32 spitch, -+ u32 width, -+ u32 height, -+ u32 argb, -+ u8 alpha ) -+{ -+ c64xTask *task = &tasks->tasks[tasks->num_tasks]; -+ -+ D_ASSERT( tasks->num_tasks < tasks->max_tasks ); -+ -+ task->c64x_arg[0] = dest; -+ task->c64x_arg[1] = dpitch; -+ task->c64x_arg[2] = src; -+ task->c64x_arg[3] = spitch; -+ task->c64x_arg[4] = width | (height << 16); -+ task->c64x_arg[5] = argb; -+ task->c64x_arg[6] = alpha; -+ -+ task->c64x_function = (sub_func << 16) | C64X_BLEND_32 | C64X_FLAG_TODO; -+ -+ tasks->num_tasks++; -+} -+ -+static inline void -+davinci_c64x_blit_blend_32( DavinciC64x *c64x, -+ u32 sub_func, -+ unsigned long dest, -+ u32 dpitch, -+ unsigned long src, -+ u32 spitch, -+ u32 width, -+ u32 height, -+ u32 argb, -+ u8 alpha ) -+{ -+ c64xTask *task = c64x_get_task( c64x ); -+ -+ task->c64x_arg[0] = dest; -+ task->c64x_arg[1] = dpitch; -+ task->c64x_arg[2] = src; -+ task->c64x_arg[3] = spitch; -+ task->c64x_arg[4] = width | (height << 16); -+ task->c64x_arg[5] = argb; -+ task->c64x_arg[6] = alpha; -+ -+ task->c64x_function = (sub_func << 16) | C64X_BLEND_32 | C64X_FLAG_TODO; -+ -+ c64x_submit_task( c64x, task ); -+} -+ -+static inline void -+davinci_c64x_blit_keyed_16__L( DavinciC64xTasks *tasks, -+ unsigned long dest, -+ u32 dpitch, -+ unsigned long src, -+ u32 spitch, -+ u32 width, -+ u32 height, -+ u32 key, -+ u32 mask ) -+{ -+ c64xTask *task = &tasks->tasks[tasks->num_tasks]; -+ -+ D_ASSERT( tasks->num_tasks < tasks->max_tasks ); -+ -+ task->c64x_arg[0] = dest; -+ task->c64x_arg[1] = (dpitch << 16) | (spitch & 0xffff); -+ task->c64x_arg[2] = src; -+ task->c64x_arg[3] = width; -+ task->c64x_arg[4] = height; -+ task->c64x_arg[5] = key; -+ task->c64x_arg[6] = mask; -+ -+ task->c64x_function = C64X_COPY_KEYED_16 | C64X_FLAG_TODO; -+ -+ tasks->num_tasks++; -+} -+ -+static inline void -+davinci_c64x_blit_keyed_16( DavinciC64x *c64x, -+ unsigned long dest, -+ u32 dpitch, -+ unsigned long src, -+ u32 spitch, -+ u32 width, -+ u32 height, -+ u32 key, -+ u32 mask ) -+{ -+ c64xTask *task = c64x_get_task( c64x ); -+ -+ task->c64x_arg[0] = dest; -+ task->c64x_arg[1] = (dpitch << 16) | (spitch & 0xffff); -+ task->c64x_arg[2] = src; -+ task->c64x_arg[3] = width; -+ task->c64x_arg[4] = height; -+ task->c64x_arg[5] = key; -+ task->c64x_arg[6] = mask; -+ -+ task->c64x_function = C64X_COPY_KEYED_16 | C64X_FLAG_TODO; -+ -+ c64x_submit_task( c64x, task ); -+} -+ -+static inline void -+davinci_c64x_blit_keyed_32__L( DavinciC64xTasks *tasks, -+ unsigned long dest, -+ u32 dpitch, -+ unsigned long src, -+ u32 spitch, -+ u32 width, -+ u32 height, -+ u32 key, -+ u32 mask ) -+{ -+ c64xTask *task = &tasks->tasks[tasks->num_tasks]; -+ -+ D_ASSERT( tasks->num_tasks < tasks->max_tasks ); -+ -+ task->c64x_arg[0] = dest; -+ task->c64x_arg[1] = (dpitch << 16) | (spitch & 0xffff); -+ task->c64x_arg[2] = src; -+ task->c64x_arg[3] = width; -+ task->c64x_arg[4] = height; -+ task->c64x_arg[5] = key; -+ task->c64x_arg[6] = mask; -+ -+ task->c64x_function = C64X_COPY_KEYED_32 | C64X_FLAG_TODO; -+ -+ tasks->num_tasks++; -+} -+ -+static inline void -+davinci_c64x_blit_keyed_32( DavinciC64x *c64x, -+ unsigned long dest, -+ u32 dpitch, -+ unsigned long src, -+ u32 spitch, -+ u32 width, -+ u32 height, -+ u32 key, -+ u32 mask ) -+{ -+ c64xTask *task = c64x_get_task( c64x ); -+ -+ task->c64x_arg[0] = dest; -+ task->c64x_arg[1] = (dpitch << 16) | (spitch & 0xffff); -+ task->c64x_arg[2] = src; -+ task->c64x_arg[3] = width; -+ task->c64x_arg[4] = height; -+ task->c64x_arg[5] = key; -+ task->c64x_arg[6] = mask; -+ -+ task->c64x_function = C64X_COPY_KEYED_32 | C64X_FLAG_TODO; -+ -+ c64x_submit_task( c64x, task ); -+} -+ -+#endif -+ -diff -urNp DirectFB-1.5.3_orig/gfxdrivers/davinci/davincifb.h DirectFB-1.5.3/gfxdrivers/davinci/davincifb.h ---- DirectFB-1.5.3_orig/gfxdrivers/davinci/davincifb.h 1969-12-31 19:00:00.000000000 -0500 -+++ DirectFB-1.5.3/gfxdrivers/davinci/davincifb.h 2012-05-09 02:20:07.271230380 -0400 -@@ -0,0 +1,581 @@ -+/* -+ * Copyright (C) 2006 Texas Instruments Inc -+ * -+ * This program is free software; you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License as published by -+ * the Free Software Foundation; either version 2 of the License, or -+ * (at your option)any later version. -+ * -+ * This program is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License -+ * along with this program; if not, write to the Free Software -+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -+ * -+ * File: davincifb.h -+ */ -+ -+#ifndef DAVINVI_VPBE_H -+#define DAVINVI_VPBE_H -+ -+/* include Linux files */ -+#include <linux/fb.h> -+ -+/* define the custom FBIO_WAITFORVSYNC ioctl */ -+#define FBIO_WAITFORVSYNC _IOW('F', 0x20, u_int32_t) -+#define FBIO_SETATTRIBUTE _IOW('F', 0x21, struct fb_fillrect) -+ -+/* Backported IOCTLS. */ -+#define FBIO_SETPOSX _IOW('F', 0x22, u_int32_t) -+#define FBIO_SETPOSY _IOW('F', 0x23, u_int32_t) -+#define FBIO_SETZOOM _IOW('F', 0x24, struct zoom_params) -+#define FBIO_GETSTD _IOR('F', 0x25, u_int32_t) -+#define FBIO_RESIZER _IOW('F', 0x26, struct vpfe_resizer_params) -+#define FBIO_SYNC _IOW('F', 0x27, u_int32_t) -+ -+typedef struct zoom_params { -+ u_int32_t window_id; -+ u_int32_t zoom_h; -+ u_int32_t zoom_v; -+} zoom_params_t; -+ -+typedef struct vpfe_resizer_params -+{ -+ u_int32_t rsz_cnt; //busy-lock -+ u_int32_t out_size; //busy-lock -+ u_int32_t in_start; //busy-lock -+ u_int32_t in_size; //busy-lock -+ u_int32_t sdr_inadd; //shadowed -+ u_int32_t sdr_inoff; //shadowed -+ u_int32_t sdr_outadd; //shadowed -+ u_int32_t sdr_outoff; //shadowed -+ u_int32_t hfilt[16]; //busy-lock -+ u_int32_t vfilt[16]; //busy-lock -+ u_int32_t yenh; //busy-lock -+} vpfe_resizer_params_t; -+ -+typedef struct fb_set_start { -+ int offset; /* offset from smem_start */ -+ unsigned long physical; /* absolute physical address when offset < 0 */ -+ -+ u_int64_t sync; /* input: target sync counter for change or 0 for no sync at all, -+ output: sync counter of actual change or 0 if still pending */ -+} fb_set_start_t; -+ -+ -+#ifdef _IOC_TYPECHECK -+#undef _IOC_TYPECHECK -+#define _IOC_TYPECHECK(x) (sizeof(x)) -+#endif -+ -+#define RAM_CLUT_SIZE 256*3 -+#define FBIO_ENABLE_DISABLE_WIN \ -+ _IOW('F', 0x30, unsigned char) -+#define FBIO_SET_BITMAP_BLEND_FACTOR \ -+ _IOW('F', 0x31, vpbe_bitmap_blend_params_t) -+#define FBIO_SET_BITMAP_WIN_RAM_CLUT \ -+ _IOW('F', 0x32, unsigned char)*RAM_CLUT_SIZE) -+#define FBIO_ENABLE_DISABLE_ATTRIBUTE_WIN \ -+ _IOW('F', 0x33, unsigned int) -+#define FBIO_GET_BLINK_INTERVAL \ -+ _IOR('F', 0x34, vpbe_blink_option_t) -+#define FBIO_SET_BLINK_INTERVAL \ -+ _IOW('F', 0x35, vpbe_blink_option_t) -+#define FBIO_GET_VIDEO_CONFIG_PARAMS \ -+ _IOR('F', 0x36, vpbe_video_config_params_t) -+#define FBIO_SET_VIDEO_CONFIG_PARAMS \ -+ _IOW('F', 0x37, vpbe_video_config_params_t) -+#define FBIO_GET_BITMAP_CONFIG_PARAMS \ -+ _IOR('F', 0x38, vpbe_bitmap_config_params_t) -+#define FBIO_SET_BITMAP_CONFIG_PARAMS \ -+ _IOW('F', 0x39, vpbe_bitmap_config_params_t) -+#define FBIO_SET_DCLK \ -+ _IOW('F', 0x40, vpbe_dclk_t) -+#define FBIO_SET_INTERFACE \ -+ _IOW('F', 0x41, unsigned char) -+#define FBIO_GET_INTERFACE \ -+ _IOR('F', 0x42, unsigned char) -+#define FBIO_QUERY_TIMING \ -+ _IOWR('F', 0x43, struct vpbe_mode_info) -+#define FBIO_SET_TIMING \ -+ _IOW('F', 0x44, struct vpbe_fb_videomode) -+#define FBIO_GET_TIMING \ -+ _IOR('F', 0x45, struct vpbe_fb_videomode) -+#define FBIO_SET_VENC_CLK_SOURCE \ -+ _IOW('F', 0x46, unsigned char) -+#define FBIO_SET_BACKG_COLOR \ -+ _IOW('F', 0x47, vpbe_backg_color_t) -+#define FBIO_ENABLE_DISPLAY \ -+ _IOW('F', 0x48, unsigned char) -+#define FBIO_SETPOS \ -+ _IOW('F', 0x49, u_int32_t) -+#define FBIO_SET_CURSOR \ -+ _IOW('F', 0x50, struct fb_cursor) -+#define FBIO_SET_START \ -+ _IOW('F', 0x66, struct fb_set_start) -+ -+/* -+ * Defines and Constants -+ */ -+#ifdef __KERNEL__ -+#define DAVINCIFB_DEVICE "davincifb" -+#define DAVINCIFB_DRIVER "davincifb" -+ -+#define MULTIPLE_BUFFERING 1 -+ -+#ifdef MULTIPLE_BUFFERING -+#define DOUBLE_BUF 2 -+#define TRIPLE_BUF 3 -+#else -+#define DOUBLE_BUF 1 -+#define TRIPLE_BUF 1 -+#endif -+ -+/* usage: if (is_win(info->fix.id, OSD0)) ... */ -+#define is_win(name, x) ((strcmp(name, x ## _FBNAME) == 0) ? 1 : 0) -+ -+/* -+ * display controller register I/O routines -+ */ -+u32 dispc_reg_in(u32 offset); -+u32 dispc_reg_out(u32 offset, u32 val); -+u32 dispc_reg_merge(u32 offset, u32 val, u32 mask); -+ -+#endif /*__KERNEL__*/ -+ -+/* Error return codes */ -+#define VPBE_INVALID_PARA_VALUE 700 -+#define VPBE_WRONG_WINDOW_ID 701 -+#define VPBE_CURRENTLY_IN_REQUIRED_MODE 702 -+#define VPBE_INSUFFICIENT_CLUT_VALUES 703 -+#define VPBE_CLUT_WRITE_TIMEOUT 704 -+#define VPBE_VID0_BUF_ADR_NULL 705 -+#define VPBE_WINDOW_NOT_DISABLED 706 -+#define VPBE_WINDOW_NOT_ENABLED 707 -+ -+#ifndef __KERNEL__ -+/* Window ID definations */ -+#define OSD0 0 -+#define VID0 1 -+#define OSD1 2 -+#define VID1 3 -+#endif -+ -+/* There are 4 framebuffers, each represented by an fb_info and -+ * a dm_win_info structure */ -+#define OSD0_FBNAME "dm_osd0_fb" -+#define OSD1_FBNAME "dm_osd1_fb" -+#define VID0_FBNAME "dm_vid0_fb" -+#define VID1_FBNAME "dm_vid1_fb" -+ -+/* FIXME: Digital LCD RGB matrix coefficients */ -+#define DLCD_DGY_VAL 0 -+#define DLCD_DRV_VAL 0 -+#define DLCD_DGU_VAL 0 -+#define DLCD_DBU_VAL 0 -+ -+/* Defines for bitmap format */ -+#define VPBE_BITMAP_BIT_1 1 -+#define VPBE_BITMAP_BIT_2 2 -+#define VPBE_BITMAP_BIT_4 4 -+#define VPBE_BITMAP_BIT_8 8 -+#define VPBE_BITMAP_RGB565 16 -+#define VPBE_VIDEO_YUV422 16 -+#define VPBE_VIDEO_RGB888 24 -+ -+/* Defines foe cursor parameter validation*/ -+#define MAX_CURSOR_WIDTH 0x3FF -+#define MAX_CURSOR_HEIGHT 0x1FF -+#define MAX_CURSOR_LINEWIDTH 7 -+ -+#define BASEX 0x80 -+#define BASEY 0x12 -+#define BASEX_DLCD 0x59 -+#define BASEY_DLCD 0x22 -+ -+/* -+ * Enumerations -+ */ -+/* Enum for blending factor */ -+typedef enum vpbe_blend_factor { -+ OSD_CONTRIBUTION_ZERO = 0, -+ OSD_CONTRIBUTION_1_BY_8 = 1, -+ OSD_CONTRIBUTION_2_BY_8 = 2, -+ OSD_CONTRIBUTION_3_BY_8 = 3, -+ OSD_CONTRIBUTION_4_BY_8 = 4, -+ OSD_CONTRIBUTION_5_BY_8 = 5, -+ OSD_CONTRIBUTION_6_BY_8 = 6, -+ OSD_CONTRIBUTION_ONE = 7 -+} vpbe_blend_factor_t; -+ -+/* Enum for Boolean variables */ -+typedef enum { -+ SET_0 = 0, -+ SET_1 = 1 -+} CB_CR_ORDER, ATTRIBUTE, ROM_RAM_CLUT; -+ -+/* Defines for Display Interface */ -+#define PRGB 0 -+#define COMPOSITE 1 -+#define SVIDEO 2 -+#define COMPONENT 3 -+#define RGB 4 -+#define YCC16 5 -+#define YCC8 6 -+#define SRGB 7 -+#define EPSON 8 -+#define CASIO1G 9 -+#define UDISP 10 -+#define STN 11 -+#define VPBE_MAX_INTERFACES 12 -+ -+/* Defines for Display Mode */ -+#define LCD 0 -+#define NTSC 1 -+#define PAL 2 -+#define P525 3 -+#define P625 4 -+ -+#define DEFAULT_MODE 0 -+#define P480 0 -+#define P400 1 -+#define P350 2 -+#define NON_EXISTING_MODE 255 -+/* Enable/Disable enum */ -+typedef enum { -+ VPBE_DISABLE = 0, -+ VPBE_ENABLE = 1 -+} ATTENUATION, TRANSPARENCY, EXPANSION, BLINKING; -+ -+typedef enum clk_source { -+ CLK_SOURCE_CLK27 = 0, -+ CLK_SOURCE_CLK54 = 1, -+ CLK_SOURCE_VPBECLK = 2 -+} CLK_SOURCE; -+ -+/* -+ * Structures and Union Definitions -+ */ -+ -+/* Structure for transparency and the blending factor for the bitmap window */ -+typedef struct vpbe_bitmap_blend_params { -+ unsigned int colorkey; /* color key to be blend */ -+ unsigned int enable_colorkeying; /* enable color keying */ -+ unsigned int bf; /* valid range from 0 to 7 only. */ -+} vpbe_bitmap_blend_params_t; -+ -+/* Structure for window expansion */ -+typedef struct vpbe_win_expansion { -+ EXPANSION horizontal; -+ EXPANSION vertical; /* 1: Enable 0:disable */ -+} vpbe_win_expansion_t; -+ -+/* Structure for OSD window blinking options */ -+typedef struct vpbe_blink_option { -+ BLINKING blinking; /* 1: Enable blinking 0: Disable */ -+ unsigned int interval; /* Valid only if blinking is 1 */ -+} vpbe_blink_option_t; -+ -+/* Structure for DCLK parameters */ -+typedef struct vpbe_dclk { -+ unsigned char dclk_pattern_width; -+ unsigned int dclk_pattern0; -+ unsigned int dclk_pattern1; -+ unsigned int dclk_pattern2; -+ unsigned int dclk_pattern3; -+} vpbe_dclk_t; -+ -+/* Structure for display format */ -+typedef struct vpbe_display_format { -+ unsigned char interface; /* Output interface type */ -+ unsigned char mode; /* output mode */ -+} vpbe_display_format_t; -+ -+/* Structure for background color */ -+typedef struct vpbe_backg_color { -+ unsigned char clut_select; /* 2: RAM CLUT 1:ROM1 CLUT 0:ROM0 CLUT */ -+ unsigned char color_offset; /* index of color */ -+} vpbe_backg_color_t; -+ -+/* Structure for Video window configurable parameters */ -+typedef struct vpbe_video_config_params { -+ CB_CR_ORDER cb_cr_order; /*Cb/Cr order in input data for a pixel. */ -+ /* 0: cb cr 1: cr cb */ -+ vpbe_win_expansion_t exp_info; /* HZ/VT Expansion enable disable */ -+} vpbe_video_config_params_t; -+ -+/*Union of structures giving the CLUT index for the 1, 2, 4 bit bitmap values.*/ -+typedef union vpbe_clut_idx { -+ struct _for_4bit_bimap { -+ unsigned char bitmap_val_0; -+ unsigned char bitmap_val_1; -+ unsigned char bitmap_val_2; -+ unsigned char bitmap_val_3; -+ unsigned char bitmap_val_4; -+ unsigned char bitmap_val_5; -+ unsigned char bitmap_val_6; -+ unsigned char bitmap_val_7; -+ unsigned char bitmap_val_8; -+ unsigned char bitmap_val_9; -+ unsigned char bitmap_val_10; -+ unsigned char bitmap_val_11; -+ unsigned char bitmap_val_12; -+ unsigned char bitmap_val_13; -+ unsigned char bitmap_val_14; -+ unsigned char bitmap_val_15; -+ } for_4bit_bimap; -+ struct _for_2bit_bimap { -+ unsigned char bitmap_val_0; -+ unsigned char dummy0[4]; -+ unsigned char bitmap_val_1; -+ unsigned char dummy1[4]; -+ unsigned char bitmap_val_2; -+ unsigned char dummy2[4]; -+ unsigned char bitmap_val_3; -+ } for_2bit_bimap; -+ struct _for_1bit_bimap { -+ unsigned char bitmap_val_0; -+ unsigned char dummy0[14]; -+ unsigned char bitmap_val_1; -+ } for_1bit_bimap; -+} vpbe_clut_idx_t; -+ -+/* Structure for bitmap window configurable parameters */ -+typedef struct vpbe_bitmap_config_params { -+ /* Only for bitmap width = 1,2,4 bits */ -+ vpbe_clut_idx_t clut_idx; -+ /* Attenuation value for YUV o/p for bitmap window */ -+ unsigned char attenuation_enable; -+ /* 0: ROM DM270, 1:ROM DM320, 2:RAM CLUT */ -+ unsigned char clut_select; -+} vpbe_bitmap_config_params_t; -+ -+/* Unioun for video/OSD configuration parameters */ -+typedef union vpbe_conf_params { -+ -+ struct vpbe_video_params { -+ CB_CR_ORDER cb_cr_order; -+ /* HZ/VT Expansion enable disable */ -+ vpbe_win_expansion_t exp_info; -+ } video_params; -+ -+ struct vpbe_bitmap_params { -+ /* Attenuation value for YUV o/p */ -+ ATTENUATION attenuation_enable; -+ /* 0: ROM DM270, 1: ROM DM320, 2:RAM CLUT */ -+ unsigned char clut_select; -+ /* Only for bitmap width = 1,2,4 bits */ -+ vpbe_clut_idx_t clut_idx; -+ /* 0: OSD window is bitmap window */ -+ /* 1: OSD window is attribute window */ -+ ATTRIBUTE enable_attribute; -+ /* To hold bps value. -+ Used to switch back from attribute to bitmap. */ -+ unsigned int stored_bits_per_pixel; -+ /* Blending information */ -+ vpbe_bitmap_blend_params_t blend_info; -+ /* OSD Blinking information */ -+ vpbe_blink_option_t blink_info; -+ } bitmap_params; -+ -+} vpbe_conf_params_t; -+ -+typedef struct vpbe_video_params vpbe_video_params_t; -+typedef struct vpbe_bitmap_params vpbe_bitmap_params_t; -+ -+/* Structure to hold window position */ -+typedef struct vpbe_window_position { -+ unsigned int xpos; /* X position of the window */ -+ unsigned int ypos; /* Y position of the window */ -+} vpbe_window_position_t; -+ -+#ifdef __KERNEL__ -+/* Structure for each window */ -+typedef struct vpbe_dm_win_info { -+ struct fb_info info; -+ vpbe_window_position_t win_pos; /* X,Y position of window */ -+ /* Size of window is already there in var_info structure. */ -+ -+ dma_addr_t fb_base_phys; /*framebuffer area */ -+ unsigned int fb_base; /*window memory pointer */ -+ unsigned int fb_size; /*memory size */ -+ unsigned int pseudo_palette[17]; -+ int alloc_fb_mem; -+ /*flag to identify if framebuffer area is fixed or not */ -+ unsigned long sdram_address; -+ struct vpbe_dm_info *dm; -+ unsigned char window_enable; /*Additions for all windows */ -+ zoom_params_t zoom; /*Zooming parameters */ -+ unsigned char field_frame_select; /*To select Field or frame */ -+ unsigned char numbufs; /*Number of buffers valid 2 or 3 */ -+ vpbe_conf_params_t conf_params; -+ /*window configuration parameter union pointer */ -+} vpbe_dm_win_info_t; -+#endif /*__KERNEL__*/ -+ -+/* -+ * Videmode structure for display interface and mode settings -+ */ -+typedef struct vpbe_fb_videomode { -+ unsigned char name[10]; /* Mode name ( NTSC , PAL) */ -+ unsigned int vmode; /* FB_MODE_INTERLACED or FB_MODE_NON_INTERLACED */ -+ unsigned int xres; /* X Resolution of the display */ -+ unsigned int yres; /* Y Resolution of the display */ -+ unsigned int fps; /* frames per second */ -+ /* Timing Parameters applicable for std = 0 only */ -+ unsigned int left_margin; -+ unsigned int right_margin; -+ unsigned int upper_margin; -+ unsigned int lower_margin; -+ unsigned int hsync_len; -+ unsigned int vsync_len; -+ unsigned int sync; /* 0: hsync -ve/vsync -ve */ -+ /*1: hsync -ve/vsync +ve */ -+ /*2: hsync +ve/vsync -ve */ -+ /*3: hsync +ve/vsync +ve */ -+ unsigned int basepx; /* Display x,y start position */ -+ unsigned int basepy; -+/* 1= Mode s available in modelist 0=Mode is not available in modelist */ -+ unsigned int std; -+} vpbe_fb_videomode_t; -+ -+/* Structure to interface videomode to application*/ -+typedef struct vpbe_mode_info { -+ vpbe_fb_videomode_t vid_mode; -+ unsigned char interface; -+ unsigned char mode_idx; -+} vpbe_mode_info_t; -+ -+#ifdef __KERNEL__ -+/* -+ * Structure for the driver holding information of windows, -+ * memory base addresses etc. -+ */ -+typedef struct vpbe_dm_info { -+ vpbe_dm_win_info_t *osd0; -+ vpbe_dm_win_info_t *osd1; -+ vpbe_dm_win_info_t *vid0; -+ vpbe_dm_win_info_t *vid1; -+ -+/* to map the registers */ -+ dma_addr_t mmio_base_phys; -+ unsigned int mmio_base; -+ unsigned int mmio_size; -+ -+ wait_queue_head_t vsync_wait; -+ unsigned int vsync_cnt; -+ int timeout; -+ -+ /* this is the function that configures the output device (NTSC/PAL/LCD) -+ * for the required output format (composite/s-video/component/rgb) -+ */ -+ void (*output_device_config) (void); -+ -+ struct device *dev; -+ -+ vpbe_backg_color_t backg; /* background color */ -+ vpbe_dclk_t dclk; /*DCLK parameters */ -+ vpbe_display_format_t display; /*Display interface and mode */ -+ vpbe_fb_videomode_t videomode; /*Cuurent videomode */ -+ char ram_clut[256][3]; /*RAM CLUT array */ -+ struct fb_cursor cursor; /* cursor config params from fb.h */ -+/*Flag that indicates whether any of the display is enabled or not*/ -+ int display_enable; -+} vpbe_dm_info_t; -+ -+/* -+ * Functions Definitions for 'davincifb' module -+ */ -+int vpbe_mem_alloc_window_buf(vpbe_dm_win_info_t *); -+int vpbe_mem_release_window_buf(vpbe_dm_win_info_t *); -+void init_display_function(vpbe_display_format_t *); -+int vpbe_mem_alloc_struct(vpbe_dm_win_info_t **); -+void set_vid0_default_conf(void); -+void set_vid1_default_conf(void); -+void set_osd0_default_conf(void); -+void set_osd1_default_conf(void); -+void set_cursor_default_conf(void); -+void set_dm_default_conf(void); -+void set_win_enable(char *, unsigned int); -+int within_vid0_limits(u32, u32, u32, u32); -+void vpbe_set_display_default(void); -+#ifdef __KERNEL__ -+void set_win_position(char *, u32, u32, u32, u32); -+void change_win_param(int); -+void set_interlaced(char *, unsigned int); -+#endif /* __KERNEL__ */ -+ -+/* -+ * Function definations for 'osd' module -+ */ -+ -+int vpbe_enable_window(vpbe_dm_win_info_t *); -+int vpbe_disable_window(vpbe_dm_win_info_t *); -+int vpbe_vid_osd_select_field_frame(u8 *, u8); -+int vpbe_bitmap_set_blend_factor(u8 *, vpbe_bitmap_blend_params_t *); -+int vpbe_bitmap_set_ram_clut(void); -+int vpbe_enable_disable_attribute_window(u32); -+int vpbe_get_blinking(u8 *, vpbe_blink_option_t *); -+int vpbe_set_blinking(u8 *, vpbe_blink_option_t *); -+int vpbe_set_vid_params(u8 *, vpbe_video_config_params_t *); -+int vpbe_get_vid_params(u8 *, vpbe_video_config_params_t *); -+int vpbe_bitmap_get_params(u8 *, vpbe_bitmap_config_params_t *); -+int vpbe_bitmap_set_params(u8 *, vpbe_bitmap_config_params_t *); -+int vpbe_set_cursor_params(struct fb_cursor *); -+int vpbe_set_vid_expansion(vpbe_win_expansion_t *); -+int vpbe_set_dclk(vpbe_dclk_t *); -+int vpbe_set_display_format(vpbe_display_format_t *); -+int vpbe_set_backg_color(vpbe_backg_color_t *); -+int vpbe_set_interface(u8); -+int vpbe_query_mode(vpbe_mode_info_t *); -+int vpbe_set_mode(struct vpbe_fb_videomode *); -+int vpbe_set_venc_clk_source(u8); -+void set_vid0_default_conf(void); -+void set_osd0_default_conf(void); -+void set_vid1_default_conf(void); -+void set_osd1_default_conf(void); -+void set_cursor_default_conf(void); -+void set_dm_default_conf(void); -+/* -+ * Function definations for 'venc' module -+ */ -+ -+void davincifb_ntsc_composite_config(void); -+void davincifb_ntsc_svideo_config(void); -+void davincifb_ntsc_component_config(void); -+void davincifb_pal_composite_config(void); -+void davincifb_pal_svideo_config(void); -+void davincifb_pal_component_config(void); -+ -+void vpbe_davincifb_ntsc_rgb_config(void); -+void vpbe_davincifb_pal_rgb_config(void); -+void vpbe_davincifb_525p_component_config(void); -+void vpbe_davincifb_625p_component_config(void); -+ -+void vpbe_enable_venc(int); -+void vpbe_enable_dacs(int); -+/* -+ * Function definations for 'dlcd' module -+ */ -+void vpbe_davincifb_480p_prgb_config(void); -+void vpbe_davincifb_400p_prgb_config(void); -+void vpbe_davincifb_350p_prgb_config(void); -+void vpbe_set_display_timing(struct vpbe_fb_videomode *); -+ -+void vpbe_enable_lcd(int); -+/* -+ * Following functions are not implemented -+ */ -+void vpbe_davincifb_default_ycc16_config(void); -+void vpbe_davincifb_default_ycc8_config(void); -+void vpbe_davincifb_default_srgb_config(void); -+void vpbe_davincifb_default_epson_config(void); -+void vpbe_davincifb_default_casio_config(void); -+void vpbe_davincifb_default_UDISP_config(void); -+void vpbe_davincifb_default_STN_config(void); -+#endif /*__KERNEL__*/ -+ -+#endif /* End of #ifndef DAVINCI_VPBE_H */ -diff -urNp DirectFB-1.5.3_orig/gfxdrivers/davinci/davinci_gfxdriver.h DirectFB-1.5.3/gfxdrivers/davinci/davinci_gfxdriver.h ---- DirectFB-1.5.3_orig/gfxdrivers/davinci/davinci_gfxdriver.h 1969-12-31 19:00:00.000000000 -0500 -+++ DirectFB-1.5.3/gfxdrivers/davinci/davinci_gfxdriver.h 2012-05-09 02:19:40.797421031 -0400 -@@ -0,0 +1,169 @@ -+/* -+ TI Davinci driver - Graphics Driver -+ -+ (c) Copyright 2007 Telio AG -+ -+ Written by Denis Oliver Kropp dok@directfb.org -+ -+ Code is derived from VMWare driver. -+ -+ (c) Copyright 2001-2009 The world wide DirectFB Open Source Community (directfb.org) -+ (c) Copyright 2000-2004 Convergence (integrated media) GmbH -+ -+ All rights reserved. -+ -+ This library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Lesser General Public -+ License as published by the Free Software Foundation; either -+ version 2 of the License, or (at your option) any later version. -+ -+ This library is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public -+ License along with this library; if not, write to the -+ Free Software Foundation, Inc., 59 Temple Place - Suite 330, -+ Boston, MA 02111-1307, USA. -+*/ -+ -+#ifndef __DAVINCI_GFXDRIVER_H__ -+#define __DAVINCI_GFXDRIVER_H__ -+ -+#include <sys/ioctl.h> -+#include <davincifb.h> -+ -+#include <core/surface_buffer.h> -+ -+#include "davincifb.h" -+ -+#include "davinci_c64x.h" -+ -+ -+typedef struct { -+ /* validation flags */ -+ int v_flags; -+ -+ /* cached/computed values */ -+ void *dst_addr; -+ unsigned long dst_phys; -+ unsigned int dst_size; -+ unsigned long dst_pitch; -+ DFBSurfacePixelFormat dst_format; -+ unsigned long dst_bpp; -+ -+ void *src_addr; -+ unsigned long src_phys; -+ unsigned long src_pitch; -+ DFBSurfacePixelFormat src_format; -+ unsigned long src_bpp; -+ -+ unsigned long source_mult; -+ -+ unsigned long fillcolor; -+ -+ int blit_blend_sub_function; -+ int draw_blend_sub_function; -+ -+ DFBColor color; -+ unsigned long color_argb; -+ unsigned long colorkey; -+ -+ DFBSurfaceBlittingFlags blitting_flags; -+ -+ DFBRegion clip; -+ -+ /** Add shared data here... **/ -+ struct fb_fix_screeninfo fix[4]; -+ -+ CoreSurfacePool *osd_pool; -+ CoreSurfacePool *video_pool; -+ -+ bool synced; -+} DavinciDeviceData; -+ -+ -+typedef struct { -+ int num; -+ int fd; -+ void *mem; -+ int size; -+} DavinciFB; -+ -+typedef struct { -+ DavinciDeviceData *ddev; -+ -+ CoreDFB *core; -+ -+ CoreScreen *screen; -+ CoreLayer *osd; -+ CoreLayer *video; -+ -+ DavinciFB fb[4]; -+ -+ DavinciC64x c64x; -+ bool c64x_present; -+ -+ DavinciC64xTasks tasks; -+} DavinciDriverData; -+ -+ -+static inline DFBResult -+davincifb_pan_display( const DavinciFB *fb, -+ struct fb_var_screeninfo *var, -+ const CoreSurfaceBufferLock *lock, -+ DFBSurfaceFlipFlags flags, -+ int x, -+ int y ) -+{ -+ int ret; -+ -+ if (lock) { -+#ifdef FBIO_SET_START -+ CoreSurfaceBuffer *buffer = lock->buffer; -+ struct fb_set_start set_start; -+ -+ /* physical mode */ -+ set_start.offset = -1; -+ set_start.sync = (flags & DSFLIP_ONSYNC) ? 1 : 0; -+ -+ /* life's so easy */ -+ set_start.physical = lock->phys + DFB_BYTES_PER_LINE( buffer->format, x ) + y * lock->pitch; -+ -+ ret = ioctl( fb->fd, FBIO_SET_START, &set_start ); -+ if (ret < 0) -+ D_DEBUG( "FBIO_SET_START (0x%08lx, sync %llu) failed!\n", -+ set_start.physical, set_start.sync ); -+ -+ if (ret == 0) { -+ if (flags & DSFLIP_WAIT) -+ ioctl( fb->fd, FBIO_WAITFORVSYNC ); -+ -+ return DFB_OK; -+ } -+ -+ /* fallback */ -+#endif -+ var->xoffset = x; /* poor version */ -+ var->yoffset = y + lock->offset / lock->pitch; -+ } -+ else { -+ var->xoffset = x; -+ var->yoffset = y; -+ } -+ -+ var->activate = /*(flags & DSFLIP_ONSYNC) ? FB_ACTIVATE_VBL :*/ FB_ACTIVATE_NOW; -+ -+ ret = ioctl( fb->fd, FBIOPAN_DISPLAY, var ); -+ if (ret) -+ D_PERROR( "Davinci/FB: FBIOPAN_DISPLAY (fb%d - %d,%d) failed!\n", -+ fb->num, var->xoffset, var->yoffset ); -+ -+ if (flags & DSFLIP_WAIT) -+ ioctl( fb->fd, FBIO_WAITFORVSYNC ); -+ -+ return DFB_OK; -+} -+ -+#endif diff --git a/directfb/patches/DirectFB-1.5.3-gcc-atomics-on-arm.patch b/directfb/patches/DirectFB-1.5.3-gcc-atomics-on-arm.patch deleted file mode 100644 index 1f488e952..000000000 --- a/directfb/patches/DirectFB-1.5.3-gcc-atomics-on-arm.patch +++ /dev/null @@ -1,64 +0,0 @@ ---- DirectFB-1.5.3_orig/lib/direct/atomic.h 2011-07-31 14:51:06.000000000 -0400 -+++ DirectFB-1.5.3/lib/direct/atomic.h 2012-05-09 01:24:02.692169840 -0400 -@@ -185,20 +185,13 @@ - - #if defined(ARCH_ARM) && !defined(ARCH_IWMMXT) - --static inline int _D__atomic_cmpxchg(volatile int *ptr, int old, int new) -+static inline int _D__atomic_cmpxchg(volatile int *ptr, int old, int _new) - { -- unsigned long oldval, res; - -- do { -- __asm__ __volatile__("@ atomic_cmpxchg\n" -- "ldrex %1, [%2]\n" -- "mov %0, #0\n" -- "teq %1, %3\n" -- "strexeq %0, %4, [%2]\n" -- : "=&r" (res), "=&r" (oldval) -- : "r" (ptr), "Ir" (old), "r" (new) -- : "cc"); -- } while (res); -+ unsigned long oldval = old; -+ -+ __atomic_compare_exchange_n(ptr, &oldval, _new, -+ false, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST); - - return oldval; - } -@@ -220,24 +213,14 @@ static inline int _D__atomic_cmpxchg(vol - - static inline int _D__atomic_add_return(int i, volatile int *v) - { -- unsigned long tmp; -- int result; - -- __asm__ __volatile__("@ atomic_add_return\n" --"1: ldrex %0, [%2]\n" --" add %0, %0, %3\n" --" strex %1, %0, [%2]\n" --" teq %1, #0\n" --" bne 1b" -- : "=&r" (result), "=&r" (tmp) -- : "r" (v), "Ir" (i) -- : "cc"); -+ int result = __atomic_add_fetch(v, i, __ATOMIC_SEQ_CST); - - return result; - } - - #define D_SYNC_ADD_AND_FETCH( ptr, value ) \ -- (_D__atomic_add_return( (int) (value), (void*) (ptr) )) -+ (_D__atomic_add_return( (int) (value), (volatile int*) (ptr) )) - - #endif - -@@ -308,7 +291,7 @@ static inline int _D__atomic_add_return( - } - - #define D_SYNC_ADD_AND_FETCH( ptr, value ) \ -- (_D__atomic_add_return( (int) (value), (void*) (ptr) )) -+ (_D__atomic_add_return( (int) (value), (volatile int*) (ptr) )) - - #endif - diff --git a/directfb/patches/DirectFB-1.5.3-lm.patch b/directfb/patches/DirectFB-1.5.3-lm.patch deleted file mode 100644 index 440213764..000000000 --- a/directfb/patches/DirectFB-1.5.3-lm.patch +++ /dev/null @@ -1,33 +0,0 @@ -diff -up DirectFB-1.5.3/tests/Makefile.am.lm DirectFB-1.5.3/tests/Makefile.am ---- DirectFB-1.5.3/tests/Makefile.am.lm 2011-08-23 23:43:18.208040936 +0200 -+++ DirectFB-1.5.3/tests/Makefile.am 2011-08-23 23:46:11.940784728 +0200 -@@ -98,11 +98,11 @@ dfbtest_gl1_LDADD = $(libdirectfb) $(l - - dfbtest_gl2_SOURCES = dfbtest_gl2.c - dfbtest_gl2_CFLAGS = $(GLES2_CFLAGS) --dfbtest_gl2_LDADD = $(libdirectfb) $(libvoodoo) $(libfusion) $(libdirect) $(GLES2_LIBS) -+dfbtest_gl2_LDADD = $(libdirectfb) $(libvoodoo) $(libfusion) $(libdirect) $(GLES2_LIBS) -lm - - dfbtest_gl3_SOURCES = dfbtest_gl3.c - dfbtest_gl3_CFLAGS = $(GLES2_CFLAGS) --dfbtest_gl3_LDADD = $(libdirectfb) $(libvoodoo) $(libfusion) $(libdirect) $(GLES2_LIBS) -+dfbtest_gl3_LDADD = $(libdirectfb) $(libvoodoo) $(libfusion) $(libdirect) $(GLES2_LIBS) -lm - - dfbtest_mirror_SOURCES = dfbtest_mirror.c - dfbtest_mirror_LDADD = $(libdirectfb) $(libvoodoo) $(libfusion) $(libdirect) -diff -up DirectFB-1.5.3/tests/Makefile.in.lm DirectFB-1.5.3/tests/Makefile.in ---- DirectFB-1.5.3/tests/Makefile.in.lm 2011-08-07 10:17:49.000000000 +0200 -+++ DirectFB-1.5.3/tests/Makefile.in 2011-08-23 23:46:54.616981247 +0200 -@@ -575,10 +575,10 @@ dfbtest_gl1_CFLAGS = $(GLES2_CFLAGS) - dfbtest_gl1_LDADD = $(libdirectfb) $(libvoodoo) $(libfusion) $(libdirect) $(GLES2_LIBS) - dfbtest_gl2_SOURCES = dfbtest_gl2.c - dfbtest_gl2_CFLAGS = $(GLES2_CFLAGS) --dfbtest_gl2_LDADD = $(libdirectfb) $(libvoodoo) $(libfusion) $(libdirect) $(GLES2_LIBS) -+dfbtest_gl2_LDADD = $(libdirectfb) $(libvoodoo) $(libfusion) $(libdirect) $(GLES2_LIBS) -lm - dfbtest_gl3_SOURCES = dfbtest_gl3.c - dfbtest_gl3_CFLAGS = $(GLES2_CFLAGS) --dfbtest_gl3_LDADD = $(libdirectfb) $(libvoodoo) $(libfusion) $(libdirect) $(GLES2_LIBS) -+dfbtest_gl3_LDADD = $(libdirectfb) $(libvoodoo) $(libfusion) $(libdirect) $(GLES2_LIBS) -lm - dfbtest_mirror_SOURCES = dfbtest_mirror.c - dfbtest_mirror_LDADD = $(libdirectfb) $(libvoodoo) $(libfusion) $(libdirect) - dfbtest_reinit_SOURCES = dfbtest_reinit.c diff --git a/dmraid/dmraid.nm b/dmraid/dmraid.nm deleted file mode 100644 index 5581d0344..000000000 --- a/dmraid/dmraid.nm +++ /dev/null @@ -1,71 +0,0 @@ -############################################################################### -# IPFire.org - An Open Source Firewall Solution # -# Copyright (C) - IPFire Development Team info@ipfire.org # -############################################################################### - -name = dmraid -version = 1.0.0.rc16 -release = 1 - -groups = System/Filesystems -url = http://people.redhat.com/heinzm/sw/dmraid -license = GPLv2+ -summary = Device-mapper RAID tool and library. - -description - DMRAID supports RAID device discovery, RAID set activation, creation, - removal, rebuild and display of properties for ATARAID/DDF1 metadata on - Linux >= 2.4 using device-mapper. -end - -source_dl = http://people.redhat.com/heinzm/sw/dmraid/src/old/ -sources = %{thisapp}.tar.bz2 - -build - requires - libdevmapper-devel >= 2.02.166 - end - - DIR_APP = %{DIR_SRC}/%{name}/%{version} - PARALLELISMFLAGS = # Disabled - - make_install_targets += sbindir=%{BUILDROOT}%{sbindir} - - configure_options += \ - --disable-static \ - --disable-static_link - - # Dmraid doesn't automatically build and install a versioned library - # so we do it on or own. - build_cmds - make -C lib libdmraid.so - end - - test - # Package does not offer any kind of testsuite. - end - - install_cmds - # Install development headers. - mkdir -pv %{BUILDROOT}%{includedir}/dmraid - install -m 644 include/dmraid/*.h %{BUILDROOT}%{includedir}/dmraid/ - - # Manually install versioned library and create symlinks. - mkdir -pv %{BUILDROOT}%{libdir} - install -m 755 lib/libdmraid.so %{BUILDROOT}%{libdir}/libdmraid.so.%{version} - ln -sv libdmraid.so.%{version} %{BUILDROOT}%{libdir}/libdmraid.so.1 - ln -sv libdmraid.so.%{version} %{BUILDROOT}%{libdir}/libdmraid.so - end -end - -packages - package %{name} - - package %{name}-devel - template DEVEL - end - - package %{name}-debuginfo - template DEBUGINFO - end -end diff --git a/dracut/dracut.nm b/dracut/dracut.nm index abd0323c8..195e3f555 100644 --- a/dracut/dracut.nm +++ b/dracut/dracut.nm @@ -5,12 +5,12 @@
name = dracut version = 048 -release = 3 +release = 8
groups = System/Boot url = http://sourceforge.net/apps/trac/dracut/wiki license = GPLv2+ -summary = Initramfs generator using udev. +summary = Initramfs generator using udev
description dracut is a new, event-driven initramfs infrastructure based around udev. @@ -45,18 +45,34 @@ build mandir=%{mandir}
install_cmds + # Remove unneeded/unsupported modules + rm -rfv \ + %{BUILDROOT}%{dracutlibdir}/modules.d/00dash \ + %{BUILDROOT}%{dracutlibdir}/modules.d/00systemd-network-management \ + %{BUILDROOT}%{dracutlibdir}/modules.d/01fips \ + %{BUILDROOT}%{dracutlibdir}/modules.d/05busybox \ + %{BUILDROOT}%{dracutlibdir}/modules.d/35network-* \ + %{BUILDROOT}%{dracutlibdir}/modules.d/40network \ + %{BUILDROOT}%{dracutlibdir}/modules.d/45url-lib \ + %{BUILDROOT}%{dracutlibdir}/modules.d/45ifcfg \ + %{BUILDROOT}%{dracutlibdir}/modules.d/50gensplash \ + %{BUILDROOT}%{dracutlibdir}/modules.d/62bluetooth \ + %{BUILDROOT}%{dracutlibdir}/modules.d/95fcoe* \ + %{BUILDROOT}%{dracutlibdir}/modules.d/95iscsi \ + %{BUILDROOT}%{dracutlibdir}/modules.d/95nbd \ + %{BUILDROOT}%{dracutlibdir}/modules.d/95nfs \ + %{BUILDROOT}%{dracutlibdir}/modules.d/95znet + # Install local configuration - mkdir -pv %{BUILDROOT}/etc/dracut.conf.d - cp -vf %{DIR_SOURCE}/ipfire.conf %{BUILDROOT}/etc/dracut.conf.d/ipfire.conf + mkdir -pv %{BUILDROOT}%{dracutlibdir}/dracut.conf.d + install -v -m 644 %{DIR_SOURCE}/ipfire.conf \ + %{BUILDROOT}%{dracutlibdir}/dracut.conf.d/ipfire.conf
# Save package version mkdir -pv %{BUILDROOT}/%{dracutlibdir}/dracut echo "DRACUT_VERSION=%{version}-%{release}" > \ %{BUILDROOT}/%{dracutlibdir}/dracut/dracut-version.sh
- # Remove Gentoo specific module - rm -rvf %{BUILDROOT}%{dracutlibdir}/modules.d/50gensplash - mkdir -pv %{BUILDROOT}/boot/dracut mkdir -pv %{BUILDROOT}/var/lib/dracut/overlay mkdir -pv %{BUILDROOT}/var/lib/initramfs @@ -75,7 +91,7 @@ packages bzip2 cpio coreutils - dmraid + device-mapper e2fsprogs eject findutils @@ -84,7 +100,6 @@ packages kbd kpartx less - lvm2 mdadm sysvinit systemd >= 187 @@ -92,42 +107,11 @@ packages udev util-linux which + zstd end end
- package %{name}-network - summary = Network support for the initramdisk. - description - This package requires everything which is needed to build a generic - all purpose initramfs with network support with dracut. - end - - requires - dhclient - iproute2 - nfs-utils - end - - files - /usr/lib/dracut/modules.d/40network - /usr/lib/dracut/modules.d/95fcoe - /usr/lib/dracut/modules.d/95iscsi - /usr/lib/dracut/modules.d/95nbd - /usr/lib/dracut/modules.d/95nfs - /usr/lib/dracut/modules.d/45ifcfg - /usr/lib/dracut/modules.d/95znet - end - end - - package %{name}-utils - summary = Command line utils for dracut. - description = %{summary} - - files - /boot/dracut - /usr/bin/dracut-* - /usr/share/man/man8/dracut-* - /var/lib/dracut - end + package %{name}-debuginfo + template DEBUGINFO end end diff --git a/dracut/ipfire.conf b/dracut/ipfire.conf index a6b717c60..0f866c6d2 100644 --- a/dracut/ipfire.conf +++ b/dracut/ipfire.conf @@ -1,13 +1,7 @@ -# Dracut config file customized for IPFire. +# Dracut config file customized for IPFire
-# i18n -i18n_vars="/etc/vconsole.conf:KEYTABLE-KEYMAP,SYSFONT-FONT,FONTACM-FONT_MAP,FONT_UNIMAP" -#add_dracutmodules+=" " -stdloglvl=3 -prefix="/" -systemdutildir=/usr/lib/systemd -systemdsystemunitdir=/usr/lib/systemd/system -udevdir=/usr/lib/udev -add_dracutmodules+=" systemd " -realinitpath="/usr/lib/systemd/systemd" -kernel_cmdline+=" rd.auto=1 " +# Load microcode for the CPU early +early_microcode="yes" + +# Compress using Zstandard +compress="zstd" diff --git a/gdbm/gdbm.nm b/gdbm/gdbm.nm index 29cd94e8e..41502010b 100644 --- a/gdbm/gdbm.nm +++ b/gdbm/gdbm.nm @@ -4,22 +4,22 @@ ###############################################################################
name = gdbm -version = 1.12 +version = 1.23 release = 1
groups = Development/Tools -url = http://www.gnu.org/software/gdbm/ +url = https://www.gnu.org.ua/software/gdbm/ license = GPLv3+ -summary = The GDBM package contains the GNU Database Manager. +summary = The GDBM package contains the GNU Database Manager
description - The GDBM package contains the GNU Database Manager. This is a disk file \ - format database which stores key/data-pairs in single files. The actual \ - data of any record being stored is indexed by a unique key, which can be \ + The GDBM package contains the GNU Database Manager. This is a disk file + format database which stores key/data-pairs in single files. The actual + data of any record being stored is indexed by a unique key, which can be retrieved in less time than if it was stored in a text file. end
-source_dl = http://ftp.gnu.org/gnu/gdbm/ +source_dl = https://ftp.gnu.org/gnu/gdbm/
build requires diff --git a/gdbm/patches/gdbm-1.10-fedora.patch b/gdbm/patches/gdbm-1.10-fedora.patch deleted file mode 100644 index 18a4d5e01..000000000 --- a/gdbm/patches/gdbm-1.10-fedora.patch +++ /dev/null @@ -1,14 +0,0 @@ -diff -up gdbm-1.10/NOTE-WARNING.fedora gdbm-1.10/NOTE-WARNING ---- gdbm-1.10/NOTE-WARNING.fedora 2011-11-14 17:43:41.267566501 +0100 -+++ gdbm-1.10/NOTE-WARNING 2011-11-14 17:47:53.312549265 +0100 -@@ -12,8 +12,8 @@ systems where it is not the default. `L - when a system uses 64bit file offsets. Gdbm has, of course, supported `large - files' on systems where it was the default for a very long time. - --On some systems, such as Solaris, this functionality is not enabled by --default. Gdbm will now enable it. THIS MEANS THAT GDBM 1.9 MAY NOT BE -+On some systems this functionality is not enabled by default. To enable it, -+build rpm with option --with=largefile. THIS MEANS THAT GDBM 1.9 MAY NOT BE - ABLE TO ACCESS DATABASES CREATED BY PREVIOUS VERIONS ON THE SAME SYSTEM. - - Running the `configure' script with the `--disable-largefile' flag should diff --git a/gdbm/patches/gdbm-1.10-zeroheaders.patch b/gdbm/patches/gdbm-1.10-zeroheaders.patch deleted file mode 100644 index a268f6bdf..000000000 --- a/gdbm/patches/gdbm-1.10-zeroheaders.patch +++ /dev/null @@ -1,33 +0,0 @@ -diff -up gdbm-1.10/src/falloc.c.zeroheaders gdbm-1.10/src/falloc.c ---- gdbm-1.10/src/falloc.c.zeroheaders 2011-11-11 11:59:11.000000000 +0100 -+++ gdbm-1.10/src/falloc.c 2011-11-14 17:34:32.487604027 +0100 -@@ -255,7 +255,7 @@ push_avail_block (GDBM_FILE dbf) - - - /* Split the header block. */ -- temp = (avail_block *) malloc (av_size); -+ temp = (avail_block *) calloc (1, av_size); - if (temp == NULL) _gdbm_fatal (dbf, _("malloc error")); - /* Set the size to be correct AFTER the pop_avail_block. */ - temp->size = dbf->header->avail.size; -diff -up gdbm-1.10/src/gdbmopen.c.zeroheaders gdbm-1.10/src/gdbmopen.c ---- gdbm-1.10/src/gdbmopen.c.zeroheaders 2011-11-11 19:39:42.000000000 +0100 -+++ gdbm-1.10/src/gdbmopen.c 2011-11-14 17:33:24.867608650 +0100 -@@ -264,7 +264,7 @@ gdbm_open (const char *file, int block_s - (dbf->header->block_size - sizeof (hash_bucket)) - / sizeof (bucket_element) + 1; - dbf->header->bucket_size = dbf->header->block_size; -- dbf->bucket = (hash_bucket *) malloc (dbf->header->bucket_size); -+ dbf->bucket = (hash_bucket *) calloc (1, dbf->header->bucket_size); - if (dbf->bucket == NULL) - { - gdbm_close (dbf); -@@ -456,7 +456,7 @@ _gdbm_init_cache(GDBM_FILE dbf, size_t s - for(index = 0; index < size; index++) - { - (dbf->bucket_cache[index]).ca_bucket -- = (hash_bucket *) malloc (dbf->header->bucket_size); -+ = (hash_bucket *) calloc (1, dbf->header->bucket_size); - if ((dbf->bucket_cache[index]).ca_bucket == NULL) - { - gdbm_errno = GDBM_MALLOC_ERROR; diff --git a/graphviz/graphviz.nm b/graphviz/graphviz.nm new file mode 100644 index 000000000..625c554b2 --- /dev/null +++ b/graphviz/graphviz.nm @@ -0,0 +1,69 @@ +############################################################################### +# IPFire.org - An Open Source Firewall Solution # +# Copyright (C) - IPFire Development Team info@ipfire.org # +############################################################################### + +name = graphviz +version = 7.0.4 +release = 1 + +groups = Development/Tools +url = https://gitlab.com/graphviz/graphviz +license = EPL +summary = Graph Visualization Tools + +description + Graph visualization is a way of representing structural information + as diagrams of abstract graphs and networks. It has important + applications in networking, bioinformatics, software engineering, + database and web design, machine learning, and in visual interfaces + for other technical domains. +end + +source_dl = https://gitlab.com/graphviz/graphviz/-/archive/%%7Bversion%7D/ +sources = %{thisapp}.tar.bz2 + +build + requires + autoconf + automake + bison + cairo-devel + flex + fontconfig-devel + ghostscript-devel + libjpeg-devel + libpng-devel + libtool + pango-devel + end + + prepare_cmds + ./autogen.sh + end + + test + make check + end +end + +packages + package %{name} + + package %{name}-libs + template LIBS + end + + package %{name}-devel + template DEVEL + + requires + graphviz = %{thisver} + graphviz-libs = %{thisver} + end + end + + package %{name}-debuginfo + template DEBUGINFO + end +end diff --git a/hwloc/hwloc.nm b/hwloc/hwloc.nm new file mode 100644 index 000000000..a8b8b6137 --- /dev/null +++ b/hwloc/hwloc.nm @@ -0,0 +1,66 @@ +############################################################################### +# IPFire.org - An Open Source Firewall Solution # +# Copyright (C) - IPFire Development Team info@ipfire.org # +############################################################################### + +name = hwloc +version = %{ver_maj}.0 +ver_maj = 2.9 +release = 1 + +groups = System/Libraries +url = https://www.open-mpi.org/projects/hwloc/ +license = BSD +summary = Portable Hardware Locality + +description + The Portable Hardware Locality (hwloc) software package provides + a portable abstraction (across OS, versions, architectures, ...) + of the hierarchical topology of modern architectures, including NUMA + memory nodes, sockets, shared caches, cores and simultaneous + multithreading. It also gathers various system attributes such as + cache and memory information as well as the locality of I/O devices + such as network interfaces, InfiniBand HCAs or GPUs. +end + +source_dl = https://download.open-mpi.org/release/hwloc/v%%7Bver_maj%7D + +build + requires + cairo-devel + diffutils + libpciaccess-devel + libtool + libudev-devel + libxml2-devel + pciutils + end + + configure_options += \ + --enable-plugins + + test + LD_LIBRARY_PATH="%{DIR_APP}/hwloc/.libs" \ + make check XFAIL_TESTS="test-gather-topology.sh" + end +end + +packages + package %{name} + + package %{name}-libs + template LIBS + end + + package %{name}-devel + template DEVEL + + requires + hwloc-libs = %{thisver} + end + end + + package %{name}-debuginfo + template DEBUGINFO + end +end diff --git a/libdaq/libdaq.nm b/libdaq/libdaq.nm new file mode 100644 index 000000000..80c27f1a8 --- /dev/null +++ b/libdaq/libdaq.nm @@ -0,0 +1,68 @@ +############################################################################### +# IPFire.org - An Open Source Firewall Solution # +# Copyright (C) - IPFire Development Team info@ipfire.org # +############################################################################### + +name = libdaq +version = 3.0.10 +release = 2 + +groups = System/Libraries +url = https://github.com/snort3/libdaq +license = GPLv2 +summary = LibDAQ: The Data AcQuisition Library + +description + LibDAQ is a pluggable abstraction layer for interacting with a data + source (traditionally a network interface or network data plane). + Applications using LibDAQ use the library API defined in daq.h to load, + configure, and interact with pluggable DAQ modules. +end + +source_dl = https://github.com/snort3/libdaq/archive/refs/tags/v%%7Bversion%7D.tar.gz#/ + +build + requires + autoconf + automake + cmocka-devel + libdnet-devel + libmnl-devel + libnetfilter_queue-devel + libpcap-devel + libtool + end + + prepare_cmds + ./bootstrap + end + + configure_options += \ + --disable-static + + # TODO Sadly the testsuite does not compile: + # /usr/bin/ld: ../api/.libs/libdaq.a(libdaq_la-daq_base.o): in function `daq_load_dynamic_module': + # /usr/src/debug/libdaq-3.0.10/api/daq_base.c:207: undefined reference to `__wrap_stat' + + test + make check || : + end + + install_cmds + # Remove all static libraries + rm -rvf %{BUILDROOT}%{libdir}/*.a + rm -rvf %{BUILDROOT}%{libdir}/pkgconfig/libdaq_static*.pc + end +end + +packages + package %{name} + + package %{name}-devel + template DEVEL + end + + package %{name}-debuginfo + template DEBUGINFO + end +end diff --git a/libdnet/libdnet.nm b/libdnet/libdnet.nm index 65036b393..3d7065341 100644 --- a/libdnet/libdnet.nm +++ b/libdnet/libdnet.nm @@ -4,39 +4,35 @@ ###############################################################################
name = libdnet -version = 1.12 +version = 1.16.1 release = 1 +thisapp = libdnet-libdnet-%{version}
groups = System/Libraries -url = http://code.google.com/p/libdnet/ +url = https://github.com/ofalk/libdnet license = BSD -summary = Simple portable interface to lowlevel networking routines. +summary = Simple portable interface to lowlevel networking routines
description - libdnet provides a simplified, portable interface to several \ - low-level networking routines, including network address \ - manipulation, kernel arp(4) cache and route(4) table lookup and \ - manipulation, network firewalling (IP filter, ipfw, ipchains, \ - pf, ...), network interface lookup and manipulation, raw IP \ + libdnet provides a simplified, portable interface to several + low-level networking routines, including network address + manipulation, kernel arp(4) cache and route(4) table lookup and + manipulation, network firewalling (IP filter, ipfw, ipchains, + pf, ...), network interface lookup and manipulation, raw IP packet and Ethernet frame, and data transmission. end
-source_dl = -sources = %{thisapp}.tgz +source_dl = https://github.com/ofalk/libdnet/archive/refs/tags/libdnet-%%7Bversion%7D.ta...
build requires + check-devel gcc-c++ end - - configure_options += \ - --sbindir=/sbin \ - --mandir=/usr/share end
packages package %{name} - end
package %{name}-devel template DEVEL diff --git a/libdnet/patches/libdnet-1.12-shrext.patch b/libdnet/patches/libdnet-1.12-shrext.patch deleted file mode 100644 index 6d8df2319..000000000 --- a/libdnet/patches/libdnet-1.12-shrext.patch +++ /dev/null @@ -1,327 +0,0 @@ -diff -urN libdnet-1.12/configure libdnet-1.12-patched/configure ---- libdnet-1.12/configure 2007-01-20 05:39:54.000000000 -0600 -+++ libdnet-1.12-patched/configure 2007-02-15 09:06:27.000000000 -0600 -@@ -7053,7 +7053,7 @@ - # Tell ltmain to make .lib files, not .a files. - libext=lib - # Tell ltmain to make .dll files, not .so files. -- shrext=".dll" -+ shrext_cmds=".dll" - # FIXME: Setting linknames here is a bad hack. - archive_cmds='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '''s/ -lc$//'''` -link -dll${_S_}linknames=' - # The linker will automatically build a .lib file if we build a DLL. -@@ -7580,7 +7580,7 @@ - library_names_spec= - libname_spec='lib$name' - soname_spec= --shrext=".so" -+shrext_cmds=".so" - postinstall_cmds= - postuninstall_cmds= - finish_cmds= -@@ -7693,7 +7693,7 @@ - - cygwin* | mingw* | pw32*) - version_type=windows -- shrext=".dll" -+ shrext_cmds=".dll" - need_version=no - need_lib_prefix=no - -@@ -7761,7 +7761,7 @@ - soname_spec='${libname}${release}${major}$shared_ext' - shlibpath_overrides_runpath=yes - shlibpath_var=DYLD_LIBRARY_PATH -- shrext='$(test .$module = .yes && echo .so || echo .dylib)' -+ shrext_cmds='$(test .$module = .yes && echo .so || echo .dylib)' - # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same. - if $CC -v 2>&1 | grep 'Apple' >/dev/null ; then - sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"` -@@ -7830,7 +7830,7 @@ - need_version=no - case "$host_cpu" in - ia64*) -- shrext='.so' -+ shrext_cmds='.so' - hardcode_into_libs=yes - dynamic_linker="$host_os dld.so" - shlibpath_var=LD_LIBRARY_PATH -@@ -7845,7 +7845,7 @@ - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec - ;; - hppa*64*) -- shrext='.sl' -+ shrext_cmds='.sl' - hardcode_into_libs=yes - dynamic_linker="$host_os dld.sl" - shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH -@@ -7856,7 +7856,7 @@ - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec - ;; - *) -- shrext='.sl' -+ shrext_cmds='.sl' - dynamic_linker="$host_os dld.sl" - shlibpath_var=SHLIB_PATH - shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH -@@ -7992,7 +7992,7 @@ - - os2*) - libname_spec='$name' -- shrext=".dll" -+ shrext_cmds=".dll" - need_lib_prefix=no - library_names_spec='$libname${shared_ext} $libname.a' - dynamic_linker='OS/2 ld.exe' -@@ -9201,7 +9201,7 @@ - libext="$libext" - - # Shared library suffix (normally ".so"). --shrext='$shrext' -+shrext_cmds='$shrext_cmds' - - # Executable file suffix (normally ""). - exeext="$exeext" -@@ -11257,7 +11257,7 @@ - library_names_spec= - libname_spec='lib$name' - soname_spec= --shrext=".so" -+shrext_cmds=".so" - postinstall_cmds= - postuninstall_cmds= - finish_cmds= -@@ -11370,7 +11370,7 @@ - - cygwin* | mingw* | pw32*) - version_type=windows -- shrext=".dll" -+ shrext_cmds=".dll" - need_version=no - need_lib_prefix=no - -@@ -11438,7 +11438,7 @@ - soname_spec='${libname}${release}${major}$shared_ext' - shlibpath_overrides_runpath=yes - shlibpath_var=DYLD_LIBRARY_PATH -- shrext='$(test .$module = .yes && echo .so || echo .dylib)' -+ shrext_cmds='$(test .$module = .yes && echo .so || echo .dylib)' - # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same. - if $CC -v 2>&1 | grep 'Apple' >/dev/null ; then - sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"` -@@ -11507,7 +11507,7 @@ - need_version=no - case "$host_cpu" in - ia64*) -- shrext='.so' -+ shrext_cmds='.so' - hardcode_into_libs=yes - dynamic_linker="$host_os dld.so" - shlibpath_var=LD_LIBRARY_PATH -@@ -11522,7 +11522,7 @@ - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec - ;; - hppa*64*) -- shrext='.sl' -+ shrext_cmds='.sl' - hardcode_into_libs=yes - dynamic_linker="$host_os dld.sl" - shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH -@@ -11533,7 +11533,7 @@ - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec - ;; - *) -- shrext='.sl' -+ shrext_cmds='.sl' - dynamic_linker="$host_os dld.sl" - shlibpath_var=SHLIB_PATH - shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH -@@ -11669,7 +11669,7 @@ - - os2*) - libname_spec='$name' -- shrext=".dll" -+ shrext_cmds=".dll" - need_lib_prefix=no - library_names_spec='$libname${shared_ext} $libname.a' - dynamic_linker='OS/2 ld.exe' -@@ -12751,7 +12751,7 @@ - libext="$libext" - - # Shared library suffix (normally ".so"). --shrext='$shrext' -+shrext_cmds='$shrext_cmds' - - # Executable file suffix (normally ""). - exeext="$exeext" -@@ -13832,7 +13832,7 @@ - # Tell ltmain to make .lib files, not .a files. - libext=lib - # Tell ltmain to make .dll files, not .so files. -- shrext=".dll" -+ shrext_cmds=".dll" - # FIXME: Setting linknames here is a bad hack. - archive_cmds_F77='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '''s/ -lc$//'''` -link -dll${_S_}linknames=' - # The linker will automatically build a .lib file if we build a DLL. -@@ -14359,7 +14359,7 @@ - library_names_spec= - libname_spec='lib$name' - soname_spec= --shrext=".so" -+shrext_cmds=".so" - postinstall_cmds= - postuninstall_cmds= - finish_cmds= -@@ -14472,7 +14472,7 @@ - - cygwin* | mingw* | pw32*) - version_type=windows -- shrext=".dll" -+ shrext_cmds=".dll" - need_version=no - need_lib_prefix=no - -@@ -14540,7 +14540,7 @@ - soname_spec='${libname}${release}${major}$shared_ext' - shlibpath_overrides_runpath=yes - shlibpath_var=DYLD_LIBRARY_PATH -- shrext='$(test .$module = .yes && echo .so || echo .dylib)' -+ shrext_cmds='$(test .$module = .yes && echo .so || echo .dylib)' - # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same. - if $CC -v 2>&1 | grep 'Apple' >/dev/null ; then - sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"` -@@ -14609,7 +14609,7 @@ - need_version=no - case "$host_cpu" in - ia64*) -- shrext='.so' -+ shrext_cmds='.so' - hardcode_into_libs=yes - dynamic_linker="$host_os dld.so" - shlibpath_var=LD_LIBRARY_PATH -@@ -14624,7 +14624,7 @@ - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec - ;; - hppa*64*) -- shrext='.sl' -+ shrext_cmds='.sl' - hardcode_into_libs=yes - dynamic_linker="$host_os dld.sl" - shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH -@@ -14635,7 +14635,7 @@ - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec - ;; - *) -- shrext='.sl' -+ shrext_cmds='.sl' - dynamic_linker="$host_os dld.sl" - shlibpath_var=SHLIB_PATH - shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH -@@ -14771,7 +14771,7 @@ - - os2*) - libname_spec='$name' -- shrext=".dll" -+ shrext_cmds=".dll" - need_lib_prefix=no - library_names_spec='$libname${shared_ext} $libname.a' - dynamic_linker='OS/2 ld.exe' -@@ -15047,7 +15047,7 @@ - libext="$libext" - - # Shared library suffix (normally ".so"). --shrext='$shrext' -+shrext_cmds='$shrext_cmds' - - # Executable file suffix (normally ""). - exeext="$exeext" -@@ -16130,7 +16130,7 @@ - # Tell ltmain to make .lib files, not .a files. - libext=lib - # Tell ltmain to make .dll files, not .so files. -- shrext=".dll" -+ shrext_cmds=".dll" - # FIXME: Setting linknames here is a bad hack. - archive_cmds_GCJ='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '''s/ -lc$//'''` -link -dll${_S_}linknames=' - # The linker will automatically build a .lib file if we build a DLL. -@@ -16657,7 +16657,7 @@ - library_names_spec= - libname_spec='lib$name' - soname_spec= --shrext=".so" -+shrext_cmds=".so" - postinstall_cmds= - postuninstall_cmds= - finish_cmds= -@@ -16770,7 +16770,7 @@ - - cygwin* | mingw* | pw32*) - version_type=windows -- shrext=".dll" -+ shrext_cmds=".dll" - need_version=no - need_lib_prefix=no - -@@ -16838,7 +16838,7 @@ - soname_spec='${libname}${release}${major}$shared_ext' - shlibpath_overrides_runpath=yes - shlibpath_var=DYLD_LIBRARY_PATH -- shrext='$(test .$module = .yes && echo .so || echo .dylib)' -+ shrext_cmds='$(test .$module = .yes && echo .so || echo .dylib)' - # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same. - if $CC -v 2>&1 | grep 'Apple' >/dev/null ; then - sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"` -@@ -16907,7 +16907,7 @@ - need_version=no - case "$host_cpu" in - ia64*) -- shrext='.so' -+ shrext_cmds='.so' - hardcode_into_libs=yes - dynamic_linker="$host_os dld.so" - shlibpath_var=LD_LIBRARY_PATH -@@ -16922,7 +16922,7 @@ - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec - ;; - hppa*64*) -- shrext='.sl' -+ shrext_cmds='.sl' - hardcode_into_libs=yes - dynamic_linker="$host_os dld.sl" - shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH -@@ -16933,7 +16933,7 @@ - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec - ;; - *) -- shrext='.sl' -+ shrext_cmds='.sl' - dynamic_linker="$host_os dld.sl" - shlibpath_var=SHLIB_PATH - shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH -@@ -17069,7 +17069,7 @@ - - os2*) - libname_spec='$name' -- shrext=".dll" -+ shrext_cmds=".dll" - need_lib_prefix=no - library_names_spec='$libname${shared_ext} $libname.a' - dynamic_linker='OS/2 ld.exe' -@@ -18151,7 +18151,7 @@ - libext="$libext" - - # Shared library suffix (normally ".so"). --shrext='$shrext' -+shrext_cmds='$shrext_cmds' - - # Executable file suffix (normally ""). - exeext="$exeext" -@@ -18595,7 +18595,7 @@ - libext="$libext" - - # Shared library suffix (normally ".so"). --shrext='$shrext' -+shrext_cmds='$shrext_cmds' - - # Executable file suffix (normally ""). - exeext="$exeext" diff --git a/librsvg2/librsvg2.nm b/librsvg2/librsvg2.nm deleted file mode 100644 index ca36275fd..000000000 --- a/librsvg2/librsvg2.nm +++ /dev/null @@ -1,68 +0,0 @@ -############################################################################### -# IPFire.org - An Open Source Firewall Solution # -# Copyright (C) - IPFire Development Team info@ipfire.org # -############################################################################### - -name = librsvg2 -version = 2.40.15 -major_ver = 2.40 -release = 2 - -groups = System/Libraries -url = -license = LGPLv2+ -summary = A SVG library based on cairo. - -description - librsvg is a SVG library based on cairo. -end - -thisapp = librsvg-%{version} - -source_dl = http://download.gnome.org/sources/librsvg/%%7Bmajor_ver%7D/ -sources = %{thisapp}.tar.xz - -build - requires - cairo-devel - cairo-gobject-devel - gdk-pixbuf2-devel - gobject-introspection-devel - libcroco-devel - libxml2-devel - pango-devel - end - - export GDK_PIXBUF_QUERYLOADERS=%{bindir}/gdk-pixbuf-query-loaders - export LD_LIBRARY_PATH = %{DIR_APP}/.libs - - configure_options += \ - --disable-static \ - --disable-gtk-theme \ - --disable-gtk-doc \ - enable_pixbuf_loader=yes -end - -packages - package %{name} - script postin - gdk-pixbuf-query-loaders --update-cache || : - end - - script postun - gdk-pixbuf-query-loaders --update-cache || : - end - - script postup - gdk-pixbuf-query-loaders --update-cache || : - end - end - - package %{name}-devel - template DEVEL - end - - package %{name}-debuginfo - template DEBUGINFO - end -end diff --git a/libunwind/libunwind.nm b/libunwind/libunwind.nm index 3ae49ecc7..80e5851b4 100644 --- a/libunwind/libunwind.nm +++ b/libunwind/libunwind.nm @@ -4,19 +4,19 @@ ###############################################################################
name = libunwind -version = 1.1 +version = 1.4.0 release = 1
groups = Development/Debuggers -url = http://savannah.nongnu.org/projects/libunwind +url = https://savannah.nongnu.org/projects/libunwind license = BSD -summary = An unwinding library. +summary = An unwinding library
description Libunwind provides a C ABI to determine the call-chain of a program. end
-source_dl = http://download.savannah.gnu.org/releases/libunwind/ +source_dl = https://download.savannah.gnu.org/releases/libunwind/
build requires @@ -25,32 +25,16 @@ build libtool end
- prepare_cmds - aclocal - libtoolize --force - autoheader - automake --add-missing - autoconf + CFLAGS += -fcommon
- # for aarch64 - for i in $(find . -name config.guess -or -name config.sub); do - cp -vf %{datadir}/automake-*/config.{guess,sub} $(dirname ${i}) - done - end + export LD_LIBRARY_PATH = %{DIR_APP}/src/.libs
configure_options += \ --enable-static \ --enable-shared
- keep_libraries = %{libdir}/libunwind-ptrace.a - - # Does not work very well. - #test - # make check - #end - - install_cmds - rm -vf %{BUILDROOT}%{libdir}/libunwind-ptrace.so* + test + make check || : end end
diff --git a/libunwind/patches/libunwind-aarch64.patch b/libunwind/patches/libunwind-aarch64.patch deleted file mode 100644 index c8816b0d3..000000000 --- a/libunwind/patches/libunwind-aarch64.patch +++ /dev/null @@ -1,2562 +0,0 @@ -diff --git a/Makefile.am b/Makefile.am -index d7278df..e24fe1e 100644 ---- a/Makefile.am -+++ b/Makefile.am -@@ -2,6 +2,9 @@ include_HEADERS = include/libunwind-dynamic.h \ - include/libunwind-ptrace.h \ - include/libunwind-coredump.h - -+if ARCH_AARCH64 -+include_HEADERS += include/libunwind-aarch64.h -+endif - if ARCH_ARM - include_HEADERS += include/libunwind-arm.h - endif -@@ -41,6 +44,9 @@ SUBDIRS = src tests doc - noinst_HEADERS = include/dwarf.h include/dwarf_i.h include/dwarf-eh.h \ - include/compiler.h include/libunwind_i.h include/mempool.h \ - include/remote.h \ -+ include/tdep-aarch64/dwarf-config.h \ -+ include/tdep-aarch64/jmpbuf.h \ -+ include/tdep-aarch64/libunwind_i.h \ - include/tdep-arm/dwarf-config.h include/tdep-arm/ex_tables.h \ - include/tdep-arm/jmpbuf.h include/tdep-arm/libunwind_i.h \ - include/tdep-ia64/jmpbuf.h include/tdep-ia64/rse.h \ -diff --git a/README b/README -index 71a631f..511fb0c 100644 ---- a/README -+++ b/README -@@ -9,6 +9,7 @@ several architecture/operating-system combinations: - Linux/IA-64: Fully tested and supported. - Linux/PARISC: Works well, but C library missing unwind-info. - HP-UX/IA-64: Mostly works but known to have some serious limitations. -+ Linux/AArch64: Newly added. - Linux/PPC64: Newly added. - Linux/SuperH: Newly added. - FreeBSD/i386: Newly added. -diff --git a/configure.ac b/configure.ac -index cffe19b..096ca7b 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -104,7 +104,7 @@ SET_ARCH([$target_cpu],[target_arch]) - - AC_ARG_ENABLE(coredump, - AS_HELP_STRING([--enable-coredump],[building libunwind-coredump library]),, -- [AS_CASE([$host_arch], [arm*|mips*|sh*|x86*], [enable_coredump=yes], [enable_coredump=no])] -+ [AS_CASE([$host_arch], [aarch64*|arm*|mips*|sh*|x86*], [enable_coredump=yes], [enable_coredump=no])] - ) - - AC_MSG_CHECKING([if we should build libunwind-coredump]) -@@ -121,6 +121,7 @@ AC_MSG_RESULT([$target_os]) - - AM_CONDITIONAL(BUILD_COREDUMP, test x$enable_coredump = xyes) - AM_CONDITIONAL(REMOTE_ONLY, test x$target_arch != x$host_arch) -+AM_CONDITIONAL(ARCH_AARCH64, test x$target_arch = xaarch64) - AM_CONDITIONAL(ARCH_ARM, test x$target_arch = xarm) - AM_CONDITIONAL(ARCH_IA64, test x$target_arch = xia64) - AM_CONDITIONAL(ARCH_HPPA, test x$target_arch = xhppa) -@@ -137,7 +138,7 @@ AM_CONDITIONAL(OS_FREEBSD, expr x$target_os : xfreebsd >/dev/null) - AC_MSG_CHECKING([for ELF helper width]) - case "${target_arch}" in - (arm|hppa|ppc32|x86|sh) use_elf32=yes; AC_MSG_RESULT([32]);; --(ia64|ppc64|x86_64) use_elf64=yes; AC_MSG_RESULT([64]);; -+(aarch64|ia64|ppc64|x86_64) use_elf64=yes; AC_MSG_RESULT([64]);; - (mips) use_elfxx=yes; AC_MSG_RESULT([xx]);; - *) AC_MSG_ERROR([Unknown ELF target: ${target_arch}]) - esac -@@ -186,6 +187,7 @@ AS_HELP_STRING([--enable-cxx-exceptions],[use libunwind to handle C++ exceptions - # C++ exception handling doesn't work too well on x86 - case $target_arch in - x86*) enable_cxx_exceptions=no;; -+ aarch64*) enable_cxx_exceptions=no;; - arm*) enable_cxx_exceptions=no;; - mips*) enable_cxx_exceptions=no;; - *) enable_cxx_exceptions=yes;; -diff --git a/include/libunwind-aarch64.h b/include/libunwind-aarch64.h -new file mode 100644 -index 0000000..d50da8f ---- /dev/null -+++ b/include/libunwind-aarch64.h -@@ -0,0 +1,187 @@ -+/* libunwind - a platform-independent unwind library -+ Copyright (C) 2001-2004 Hewlett-Packard Co -+ Contributed by David Mosberger-Tang davidm@hpl.hp.com -+ Copyright (C) 2013 Linaro Limited -+ -+This file is part of libunwind. -+ -+Permission is hereby granted, free of charge, to any person obtaining -+a copy of this software and associated documentation files (the -+"Software"), to deal in the Software without restriction, including -+without limitation the rights to use, copy, modify, merge, publish, -+distribute, sublicense, and/or sell copies of the Software, and to -+permit persons to whom the Software is furnished to do so, subject to -+the following conditions: -+ -+The above copyright notice and this permission notice shall be -+included in all copies or substantial portions of the Software. -+ -+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -+ -+#ifndef LIBUNWIND_H -+#define LIBUNWIND_H -+ -+#if defined(__cplusplus) || defined(c_plusplus) -+extern "C" { -+#endif -+ -+#include <inttypes.h> -+#include <stddef.h> -+#include <ucontext.h> -+ -+#define UNW_TARGET aarch64 -+#define UNW_TARGET_AARCH64 1 -+ -+#define _U_TDEP_QP_TRUE 0 /* see libunwind-dynamic.h */ -+ -+/* This needs to be big enough to accommodate "struct cursor", while -+ leaving some slack for future expansion. Changing this value will -+ require recompiling all users of this library. Stack allocation is -+ relatively cheap and unwind-state copying is relatively rare, so we -+ want to err on making it rather too big than too small. */ -+ -+#define UNW_TDEP_CURSOR_LEN 4096 -+ -+typedef uint64_t unw_word_t; -+typedef int64_t unw_sword_t; -+ -+typedef long double unw_tdep_fpreg_t; -+ -+typedef struct -+ { -+ /* no aarch64-specific auxiliary proc-info */ -+ } -+unw_tdep_proc_info_t; -+ -+typedef enum -+ { -+ /* 64-bit general registers. */ -+ UNW_AARCH64_X0, -+ UNW_AARCH64_X1, -+ UNW_AARCH64_X2, -+ UNW_AARCH64_X3, -+ UNW_AARCH64_X4, -+ UNW_AARCH64_X5, -+ UNW_AARCH64_X6, -+ UNW_AARCH64_X7, -+ UNW_AARCH64_X8, -+ -+ /* Temporary registers. */ -+ UNW_AARCH64_X9, -+ UNW_AARCH64_X10, -+ UNW_AARCH64_X11, -+ UNW_AARCH64_X12, -+ UNW_AARCH64_X13, -+ UNW_AARCH64_X14, -+ UNW_AARCH64_X15, -+ -+ /* Intra-procedure-call temporary registers. */ -+ UNW_AARCH64_X16, -+ UNW_AARCH64_X17, -+ -+ /* Callee-saved registers. */ -+ UNW_AARCH64_X18, -+ UNW_AARCH64_X19, -+ UNW_AARCH64_X20, -+ UNW_AARCH64_X21, -+ UNW_AARCH64_X22, -+ UNW_AARCH64_X23, -+ UNW_AARCH64_X24, -+ UNW_AARCH64_X25, -+ UNW_AARCH64_X26, -+ UNW_AARCH64_X27, -+ UNW_AARCH64_X28, -+ -+ /* 64-bit frame pointer. */ -+ UNW_AARCH64_X29, -+ -+ /* 64-bit link register. */ -+ UNW_AARCH64_X30, -+ -+ /* 64-bit stack pointer. */ -+ UNW_AARCH64_SP = 31, -+ UNW_AARCH64_PC, -+ UNW_AARCH64_PSTATE, -+ -+ /* 128-bit FP/Advanced SIMD registers. */ -+ UNW_AARCH64_V0 = 64, -+ UNW_AARCH64_V1, -+ UNW_AARCH64_V2, -+ UNW_AARCH64_V3, -+ UNW_AARCH64_V4, -+ UNW_AARCH64_V5, -+ UNW_AARCH64_V6, -+ UNW_AARCH64_V7, -+ UNW_AARCH64_V8, -+ UNW_AARCH64_V9, -+ UNW_AARCH64_V10, -+ UNW_AARCH64_V11, -+ UNW_AARCH64_V12, -+ UNW_AARCH64_V13, -+ UNW_AARCH64_V14, -+ UNW_AARCH64_V15, -+ UNW_AARCH64_V16, -+ UNW_AARCH64_V17, -+ UNW_AARCH64_V18, -+ UNW_AARCH64_V19, -+ UNW_AARCH64_V20, -+ UNW_AARCH64_V21, -+ UNW_AARCH64_V22, -+ UNW_AARCH64_V23, -+ UNW_AARCH64_V24, -+ UNW_AARCH64_V25, -+ UNW_AARCH64_V26, -+ UNW_AARCH64_V27, -+ UNW_AARCH64_V28, -+ UNW_AARCH64_V29, -+ UNW_AARCH64_V30, -+ UNW_AARCH64_V31, -+ -+ UNW_AARCH64_FPSR, -+ UNW_AARCH64_FPCR, -+ -+ /* For AArch64, the CFA is the value of SP (x31) at the call site of the -+ previous frame. */ -+ UNW_AARCH64_CFA = UNW_AARCH64_SP, -+ -+ UNW_TDEP_LAST_REG = UNW_AARCH64_FPCR, -+ -+ UNW_TDEP_IP = UNW_AARCH64_X30, -+ UNW_TDEP_SP = UNW_AARCH64_SP, -+ UNW_TDEP_EH = UNW_AARCH64_X0, -+ -+ } -+aarch64_regnum_t; -+ -+/* Use R0 through R3 to pass exception handling information. */ -+#define UNW_TDEP_NUM_EH_REGS 4 -+ -+typedef struct unw_tdep_save_loc -+ { -+ /* Additional target-dependent info on a save location. */ -+ } -+unw_tdep_save_loc_t; -+ -+ -+/* On AArch64, we can directly use ucontext_t as the unwind context. */ -+typedef ucontext_t unw_tdep_context_t; -+ -+#include "libunwind-common.h" -+#include "libunwind-dynamic.h" -+ -+#define unw_tdep_getcontext(uc) (getcontext (uc), 0) -+#define unw_tdep_is_fpreg UNW_ARCH_OBJ(is_fpreg) -+ -+extern int unw_tdep_is_fpreg (int); -+ -+#if defined(__cplusplus) || defined(c_plusplus) -+} -+#endif -+ -+#endif /* LIBUNWIND_H */ -diff --git a/include/libunwind.h.in b/include/libunwind.h.in -index 25c4e3b..64b1457 100644 ---- a/include/libunwind.h.in -+++ b/include/libunwind.h.in -@@ -3,7 +3,9 @@ - - #ifndef UNW_REMOTE_ONLY - --#if defined __arm__ -+#if defined __aarch64__ -+#include "libunwind-aarch64.h" -+#elif defined __arm__ - # include "libunwind-arm.h" - #elif defined __hppa__ - # include "libunwind-hppa.h" -diff --git a/include/tdep-aarch64/dwarf-config.h b/include/tdep-aarch64/dwarf-config.h -new file mode 100644 -index 0000000..c3bbed5 ---- /dev/null -+++ b/include/tdep-aarch64/dwarf-config.h -@@ -0,0 +1,52 @@ -+/* libunwind - a platform-independent unwind library -+ Copyright (C) 2008 CodeSourcery -+ Copyright (C) 2012 Tommi Rantala tt.rantala@gmail.com -+ Copyright (C) 2013 Linaro Limited -+ -+This file is part of libunwind. -+ -+Permission is hereby granted, free of charge, to any person obtaining -+a copy of this software and associated documentation files (the -+"Software"), to deal in the Software without restriction, including -+without limitation the rights to use, copy, modify, merge, publish, -+distribute, sublicense, and/or sell copies of the Software, and to -+permit persons to whom the Software is furnished to do so, subject to -+the following conditions: -+ -+The above copyright notice and this permission notice shall be -+included in all copies or substantial portions of the Software. -+ -+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -+ -+#ifndef dwarf_config_h -+#define dwarf_config_h -+ -+/* This matches the value udes by GCC (see -+ gcc/config/aarch64/aarch64.h:DWARF_FRAME_REGISTERS. */ -+#define DWARF_NUM_PRESERVED_REGS 97 -+ -+/* Return TRUE if the ADDR_SPACE uses big-endian byte-order. */ -+#define dwarf_is_big_endian(addr_space) 0 -+ -+#define dwarf_to_unw_regnum(reg) (((reg) <= UNW_AARCH64_V31) ? (reg) : 0) -+ -+/* Convert a pointer to a dwarf_cursor structure to a pointer to -+ unw_cursor_t. */ -+#define dwarf_to_cursor(c) ((unw_cursor_t *) (c)) -+ -+typedef struct dwarf_loc -+ { -+ unw_word_t val; -+#ifndef UNW_LOCAL_ONLY -+ unw_word_t type; /* see DWARF_LOC_TYPE_* macros. */ -+#endif -+ } -+dwarf_loc_t; -+ -+#endif /* dwarf_config_h */ -diff --git a/include/tdep-aarch64/jmpbuf.h b/include/tdep-aarch64/jmpbuf.h -new file mode 100644 -index 0000000..2eb53a7 ---- /dev/null -+++ b/include/tdep-aarch64/jmpbuf.h -@@ -0,0 +1,33 @@ -+/* libunwind - a platform-independent unwind library -+ Copyright (C) 2008 CodeSourcery -+ Copyright (C) 2013 Linaro Limited -+ -+This file is part of libunwind. -+ -+Permission is hereby granted, free of charge, to any person obtaining -+a copy of this software and associated documentation files (the -+"Software"), to deal in the Software without restriction, including -+without limitation the rights to use, copy, modify, merge, publish, -+distribute, sublicense, and/or sell copies of the Software, and to -+permit persons to whom the Software is furnished to do so, subject to -+the following conditions: -+ -+The above copyright notice and this permission notice shall be -+included in all copies or substantial portions of the Software. -+ -+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -+ -+/* Use glibc's jump-buffer indices; NPTL peeks at SP: */ -+ -+/* FIXME for AArch64 */ -+ -+#define JB_SP 13 -+#define JB_RP 14 -+#define JB_MASK_SAVED 15 -+#define JB_MASK 16 -diff --git a/include/tdep-aarch64/libunwind_i.h b/include/tdep-aarch64/libunwind_i.h -new file mode 100644 -index 0000000..28943db ---- /dev/null -+++ b/include/tdep-aarch64/libunwind_i.h -@@ -0,0 +1,294 @@ -+/* libunwind - a platform-independent unwind library -+ Copyright (C) 2001-2005 Hewlett-Packard Co -+ Contributed by David Mosberger-Tang davidm@hpl.hp.com -+ Copyright (C) 2013 Linaro Limited -+ -+This file is part of libunwind. -+ -+Permission is hereby granted, free of charge, to any person obtaining -+a copy of this software and associated documentation files (the -+"Software"), to deal in the Software without restriction, including -+without limitation the rights to use, copy, modify, merge, publish, -+distribute, sublicense, and/or sell copies of the Software, and to -+permit persons to whom the Software is furnished to do so, subject to -+the following conditions: -+ -+The above copyright notice and this permission notice shall be -+included in all copies or substantial portions of the Software. -+ -+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -+ -+#ifndef AARCH64_LIBUNWIND_I_H -+#define AARCH64_LIBUNWIND_I_H -+ -+/* Target-dependent definitions that are internal to libunwind but need -+ to be shared with target-independent code. */ -+ -+#include <stdlib.h> -+#include <libunwind.h> -+ -+#include "elf64.h" -+#include "mempool.h" -+#include "dwarf.h" -+ -+typedef struct -+ { -+ /* no aarch64-specific fast trace */ -+ } -+unw_tdep_frame_t; -+ -+#ifdef UNW_LOCAL_ONLY -+ -+typedef unw_word_t aarch64_loc_t; -+ -+#else /* !UNW_LOCAL_ONLY */ -+ -+typedef struct aarch64_loc -+ { -+ unw_word_t w0, w1; -+ } -+aarch64_loc_t; -+ -+#endif /* !UNW_LOCAL_ONLY */ -+ -+struct unw_addr_space -+ { -+ struct unw_accessors acc; -+ int big_endian; -+ unw_caching_policy_t caching_policy; -+#ifdef HAVE_ATOMIC_OPS_H -+ AO_t cache_generation; -+#else -+ uint32_t cache_generation; -+#endif -+ unw_word_t dyn_generation; /* see dyn-common.h */ -+ unw_word_t dyn_info_list_addr; /* (cached) dyn_info_list_addr */ -+ struct dwarf_rs_cache global_cache; -+ struct unw_debug_frame_list *debug_frames; -+ }; -+ -+struct cursor -+ { -+ struct dwarf_cursor dwarf; /* must be first */ -+ enum -+ { -+ AARCH64_SCF_NONE, -+ AARCH64_SCF_LINUX_RT_SIGFRAME, -+ } -+ sigcontext_format; -+ unw_word_t sigcontext_addr; -+ unw_word_t sigcontext_sp; -+ unw_word_t sigcontext_pc; -+ }; -+ -+#define DWARF_GET_LOC(l) ((l).val) -+ -+#ifdef UNW_LOCAL_ONLY -+# define DWARF_NULL_LOC DWARF_LOC (0, 0) -+# define DWARF_IS_NULL_LOC(l) (DWARF_GET_LOC (l) == 0) -+# define DWARF_LOC(r, t) ((dwarf_loc_t) { .val = (r) }) -+# define DWARF_IS_REG_LOC(l) 0 -+# define DWARF_REG_LOC(c,r) (DWARF_LOC((unw_word_t) \ -+ tdep_uc_addr((c)->as_arg, (r)), 0)) -+# define DWARF_MEM_LOC(c,m) DWARF_LOC ((m), 0) -+# define DWARF_FPREG_LOC(c,r) (DWARF_LOC((unw_word_t) \ -+ tdep_uc_addr((c)->as_arg, (r)), 0)) -+ -+static inline int -+dwarf_getfp (struct dwarf_cursor *c, dwarf_loc_t loc, unw_fpreg_t *val) -+{ -+ if (!DWARF_GET_LOC (loc)) -+ return -1; -+ *val = *(unw_fpreg_t *) DWARF_GET_LOC (loc); -+ return 0; -+} -+ -+static inline int -+dwarf_putfp (struct dwarf_cursor *c, dwarf_loc_t loc, unw_fpreg_t val) -+{ -+ if (!DWARF_GET_LOC (loc)) -+ return -1; -+ *(unw_fpreg_t *) DWARF_GET_LOC (loc) = val; -+ return 0; -+} -+ -+static inline int -+dwarf_get (struct dwarf_cursor *c, dwarf_loc_t loc, unw_word_t *val) -+{ -+ if (!DWARF_GET_LOC (loc)) -+ return -1; -+ *val = *(unw_word_t *) DWARF_GET_LOC (loc); -+ return 0; -+} -+ -+static inline int -+dwarf_put (struct dwarf_cursor *c, dwarf_loc_t loc, unw_word_t val) -+{ -+ if (!DWARF_GET_LOC (loc)) -+ return -1; -+ *(unw_word_t *) DWARF_GET_LOC (loc) = val; -+ return 0; -+} -+ -+#else /* !UNW_LOCAL_ONLY */ -+# define DWARF_LOC_TYPE_FP (1 << 0) -+# define DWARF_LOC_TYPE_REG (1 << 1) -+# define DWARF_NULL_LOC DWARF_LOC (0, 0) -+# define DWARF_IS_NULL_LOC(l) \ -+ ({ dwarf_loc_t _l = (l); _l.val == 0 && _l.type == 0; }) -+# define DWARF_LOC(r, t) ((dwarf_loc_t) { .val = (r), .type = (t) }) -+# define DWARF_IS_REG_LOC(l) (((l).type & DWARF_LOC_TYPE_REG) != 0) -+# define DWARF_IS_FP_LOC(l) (((l).type & DWARF_LOC_TYPE_FP) != 0) -+# define DWARF_REG_LOC(c,r) DWARF_LOC((r), DWARF_LOC_TYPE_REG) -+# define DWARF_MEM_LOC(c,m) DWARF_LOC ((m), 0) -+# define DWARF_FPREG_LOC(c,r) DWARF_LOC((r), (DWARF_LOC_TYPE_REG \ -+ | DWARF_LOC_TYPE_FP)) -+ -+static inline int -+dwarf_getfp (struct dwarf_cursor *c, dwarf_loc_t loc, unw_fpreg_t *val) -+{ -+ char *valp = (char *) &val; -+ unw_word_t addr; -+ int ret; -+ -+ if (DWARF_IS_NULL_LOC (loc)) -+ return -UNW_EBADREG; -+ -+ if (DWARF_IS_REG_LOC (loc)) -+ return (*c->as->acc.access_fpreg) (c->as, DWARF_GET_LOC (loc), -+ val, 0, c->as_arg); -+ -+ addr = DWARF_GET_LOC (loc); -+ if ((ret = (*c->as->acc.access_mem) (c->as, addr + 0, (unw_word_t *) valp, -+ 0, c->as_arg)) < 0) -+ return ret; -+ -+ return (*c->as->acc.access_mem) (c->as, addr + 4, (unw_word_t *) valp + 1, 0, -+ c->as_arg); -+} -+ -+static inline int -+dwarf_putfp (struct dwarf_cursor *c, dwarf_loc_t loc, unw_fpreg_t val) -+{ -+ char *valp = (char *) &val; -+ unw_word_t addr; -+ int ret; -+ -+ if (DWARF_IS_NULL_LOC (loc)) -+ return -UNW_EBADREG; -+ -+ if (DWARF_IS_REG_LOC (loc)) -+ return (*c->as->acc.access_fpreg) (c->as, DWARF_GET_LOC (loc), -+ &val, 1, c->as_arg); -+ -+ addr = DWARF_GET_LOC (loc); -+ if ((ret = (*c->as->acc.access_mem) (c->as, addr + 0, (unw_word_t *) valp, -+ 1, c->as_arg)) < 0) -+ return ret; -+ -+ return (*c->as->acc.access_mem) (c->as, addr + 4, (unw_word_t *) valp + 1, -+ 1, c->as_arg); -+} -+ -+static inline int -+dwarf_get (struct dwarf_cursor *c, dwarf_loc_t loc, unw_word_t *val) -+{ -+ if (DWARF_IS_NULL_LOC (loc)) -+ return -UNW_EBADREG; -+ -+ /* If a code-generator were to save a value of type unw_word_t in a -+ floating-point register, we would have to support this case. I -+ suppose it could happen with MMX registers, but does it really -+ happen? */ -+ assert (!DWARF_IS_FP_LOC (loc)); -+ -+ if (DWARF_IS_REG_LOC (loc)) -+ return (*c->as->acc.access_reg) (c->as, DWARF_GET_LOC (loc), val, -+ 0, c->as_arg); -+ else -+ return (*c->as->acc.access_mem) (c->as, DWARF_GET_LOC (loc), val, -+ 0, c->as_arg); -+} -+ -+static inline int -+dwarf_put (struct dwarf_cursor *c, dwarf_loc_t loc, unw_word_t val) -+{ -+ if (DWARF_IS_NULL_LOC (loc)) -+ return -UNW_EBADREG; -+ -+ /* If a code-generator were to save a value of type unw_word_t in a -+ floating-point register, we would have to support this case. I -+ suppose it could happen with MMX registers, but does it really -+ happen? */ -+ assert (!DWARF_IS_FP_LOC (loc)); -+ -+ if (DWARF_IS_REG_LOC (loc)) -+ return (*c->as->acc.access_reg) (c->as, DWARF_GET_LOC (loc), &val, -+ 1, c->as_arg); -+ else -+ return (*c->as->acc.access_mem) (c->as, DWARF_GET_LOC (loc), &val, -+ 1, c->as_arg); -+} -+ -+#endif /* !UNW_LOCAL_ONLY */ -+ -+ -+ -+#define tdep_getcontext_trace unw_getcontext -+#define tdep_init_done UNW_OBJ(init_done) -+#define tdep_init UNW_OBJ(init) -+/* Platforms that support UNW_INFO_FORMAT_TABLE need to define -+ tdep_search_unwind_table. */ -+#define tdep_search_unwind_table dwarf_search_unwind_table -+#define tdep_find_unwind_table dwarf_find_unwind_table -+#define tdep_uc_addr UNW_OBJ(uc_addr) -+#define tdep_get_elf_image UNW_ARCH_OBJ(get_elf_image) -+#define tdep_access_reg UNW_OBJ(access_reg) -+#define tdep_access_fpreg UNW_OBJ(access_fpreg) -+#define tdep_fetch_frame(c,ip,n) do {} while(0) -+#define tdep_cache_frame(c,rs) do {} while(0) -+#define tdep_reuse_frame(c,rs) do {} while(0) -+#define tdep_stash_frame(c,rs) do {} while(0) -+#define tdep_trace(cur,addr,n) (-UNW_ENOINFO) -+ -+#ifdef UNW_LOCAL_ONLY -+# define tdep_find_proc_info(c,ip,n) \ -+ dwarf_find_proc_info((c)->as, (ip), &(c)->pi, (n), \ -+ (c)->as_arg) -+# define tdep_put_unwind_info(as,pi,arg) \ -+ dwarf_put_unwind_info((as), (pi), (arg)) -+#else -+# define tdep_find_proc_info(c,ip,n) \ -+ (*(c)->as->acc.find_proc_info)((c)->as, (ip), &(c)->pi, (n), \ -+ (c)->as_arg) -+# define tdep_put_unwind_info(as,pi,arg) \ -+ (*(as)->acc.put_unwind_info)((as), (pi), (arg)) -+#endif -+ -+#define tdep_get_as(c) ((c)->dwarf.as) -+#define tdep_get_as_arg(c) ((c)->dwarf.as_arg) -+#define tdep_get_ip(c) ((c)->dwarf.ip) -+#define tdep_big_endian(as) ((as)->big_endian) -+ -+extern int tdep_init_done; -+ -+extern void tdep_init (void); -+extern int tdep_search_unwind_table (unw_addr_space_t as, unw_word_t ip, -+ unw_dyn_info_t *di, unw_proc_info_t *pi, -+ int need_unwind_info, void *arg); -+extern void *tdep_uc_addr (unw_tdep_context_t *uc, int reg); -+extern int tdep_get_elf_image (struct elf_image *ei, pid_t pid, unw_word_t ip, -+ unsigned long *segbase, unsigned long *mapoff, -+ char *path, size_t pathlen); -+extern int tdep_access_reg (struct cursor *c, unw_regnum_t reg, -+ unw_word_t *valp, int write); -+extern int tdep_access_fpreg (struct cursor *c, unw_regnum_t reg, -+ unw_fpreg_t *valp, int write); -+ -+#endif /* AARCH64_LIBUNWIND_I_H */ -diff --git a/include/tdep/dwarf-config.h b/include/tdep/dwarf-config.h -index 1da268b..5b09fc1 100644 ---- a/include/tdep/dwarf-config.h -+++ b/include/tdep/dwarf-config.h -@@ -1,7 +1,9 @@ - /* Provide a real file - not a symlink - as it would cause multiarch conflicts - when multiple different arch releases are installed simultaneously. */ - --#if defined __arm__ -+#if defined __aarch64__ -+# include "tdep-aarch64/dwarf-config.h" -+#elif defined __arm__ - # include "tdep-arm/dwarf-config.h" - #elif defined __hppa__ - # include "tdep-hppa/dwarf-config.h" -diff --git a/include/tdep/jmpbuf.h b/include/tdep/jmpbuf.h -index 7d04a42..684d0d9 100644 ---- a/include/tdep/jmpbuf.h -+++ b/include/tdep/jmpbuf.h -@@ -3,6 +3,8 @@ - - #ifndef UNW_REMOTE_ONLY - -+#if defined __aarch64__ -+# include "tdep-aarch64/jmpbuf.h" - #if defined __arm__ - # include "tdep-arm/jmpbuf.h" - #elif defined __hppa__ -diff --git a/include/tdep/libunwind_i.h.in b/include/tdep/libunwind_i.h.in -index 2ad6269..475f828 100644 ---- a/include/tdep/libunwind_i.h.in -+++ b/include/tdep/libunwind_i.h.in -@@ -3,7 +3,9 @@ - - #ifndef UNW_REMOTE_ONLY - --#if defined __arm__ -+#if defined __aarch64__ -+# include "tdep-aarch64/libunwind_i.h" -+#elif defined __arm__ - # include "tdep-arm/libunwind_i.h" - #elif defined __hppa__ - # include "tdep-hppa/libunwind_i.h" -diff --git a/src/Makefile.am b/src/Makefile.am -index 08d2870..f104214 100644 ---- a/src/Makefile.am -+++ b/src/Makefile.am -@@ -170,6 +170,28 @@ libunwind_elfxx_la_SOURCES = elfxx.c - noinst_LTLIBRARIES += $(LIBUNWIND_ELF) - libunwind_la_LIBADD += $(LIBUNWIND_ELF) - -+# The list of files that go into libunwind and libunwind-aarch64: -+noinst_HEADERS += aarch64/init.h aarch64/offsets.h aarch64/unwind_i.h -+libunwind_la_SOURCES_aarch64_common = $(libunwind_la_SOURCES_common) \ -+ aarch64/is_fpreg.c aarch64/regname.c -+ -+# The list of files that go into libunwind: -+libunwind_la_SOURCES_aarch64 = $(libunwind_la_SOURCES_aarch64_common) \ -+ $(libunwind_la_SOURCES_local) \ -+ aarch64/Lcreate_addr_space.c aarch64/Lget_proc_info.c \ -+ aarch64/Lget_save_loc.c aarch64/Lglobal.c aarch64/Linit.c \ -+ aarch64/Linit_local.c aarch64/Linit_remote.c \ -+ aarch64/Lis_signal_frame.c aarch64/Lregs.c aarch64/Lresume.c \ -+ aarch64/Lstep.c -+ -+libunwind_aarch64_la_SOURCES_aarch64 = $(libunwind_la_SOURCES_aarch64_common) \ -+ $(libunwind_la_SOURCES_generic) \ -+ aarch64/Gcreate_addr_space.c aarch64/Gget_proc_info.c \ -+ aarch64/Gget_save_loc.c aarch64/Gglobal.c aarch64/Ginit.c \ -+ aarch64/Ginit_local.c aarch64/Ginit_remote.c \ -+ aarch64/Gis_signal_frame.c aarch64/Gregs.c aarch64/Gresume.c \ -+ aarch64/Gstep.c -+ - # The list of files that go into libunwind and libunwind-arm: - noinst_HEADERS += arm/init.h arm/offsets.h arm/unwind_i.h - libunwind_la_SOURCES_arm_common = $(libunwind_la_SOURCES_common) \ -@@ -418,6 +440,18 @@ if OS_FREEBSD - libunwind_coredump_la_SOURCES += coredump/_UCD_access_reg_freebsd.c - endif - -+if ARCH_AARCH64 -+ lib_LTLIBRARIES += libunwind-aarch64.la -+ libunwind_la_SOURCES = $(libunwind_la_SOURCES_aarch64) -+ libunwind_aarch64_la_SOURCES = $(libunwind_aarch64_la_SOURCES_aarch64) -+ libunwind_aarch64_la_LDFLAGS = $(COMMON_SO_LDFLAGS) -version-info $(SOVERSION) -+ libunwind_aarch64_la_LIBADD = libunwind-dwarf-generic.la -+ libunwind_aarch64_la_LIBADD += libunwind-elf64.la -+if !REMOTE_ONLY -+ libunwind_aarch64_la_LIBADD += libunwind.la -lc -+endif -+# libunwind_setjmp_la_SOURCES += aarch64/siglongjmp.S -+else - if ARCH_ARM - lib_LTLIBRARIES += libunwind-arm.la - libunwind_la_SOURCES = $(libunwind_la_SOURCES_arm) -@@ -545,6 +579,7 @@ endif # ARCH_MIPS - endif # ARCH_HPPA - endif # ARCH_IA64 - endif # ARCH_ARM -+endif # ARCH_AARCH64 - - # libunwind-setjmp depends on libunwind-$(arch). Therefore must be added - # at the end. -@@ -567,7 +602,8 @@ AM_CPPFLAGS = -I$(top_srcdir)/include -I$(top_srcdir)/include/tdep-$(arch) -I. - AM_CCASFLAGS = $(AM_CPPFLAGS) - noinst_HEADERS += unwind/unwind-internal.h - --EXTRA_DIST = $(libunwind_la_SOURCES_arm) \ -+EXTRA_DIST = $(libunwind_la_SOURCES_aarch64) \ -+ $(libunwind_la_SOURCES_arm) \ - $(libunwind_la_SOURCES_hppa) \ - $(libunwind_la_SOURCES_ia64) \ - $(libunwind_la_SOURCES_mips) \ -@@ -579,6 +615,7 @@ EXTRA_DIST = $(libunwind_la_SOURCES_arm) \ - $(libunwind_la_SOURCES_common) \ - $(libunwind_la_SOURCES_local) \ - $(libunwind_la_SOURCES_generic) \ -+ $(libunwind_aarch64_la_SOURCES_aarch64) \ - $(libunwind_arm_la_SOURCES_arm) \ - $(libunwind_hppa_la_SOURCES_hppa) \ - $(libunwind_ia64_la_SOURCES_ia64) \ -diff --git a/src/aarch64/Gcreate_addr_space.c b/src/aarch64/Gcreate_addr_space.c -new file mode 100644 -index 0000000..b0f2b04 ---- /dev/null -+++ b/src/aarch64/Gcreate_addr_space.c -@@ -0,0 +1,60 @@ -+/* libunwind - a platform-independent unwind library -+ Copyright (C) 2012 Tommi Rantala tt.rantala@gmail.com -+ Copyright (C) 2013 Linaro Limited -+ -+This file is part of libunwind. -+ -+Permission is hereby granted, free of charge, to any person obtaining -+a copy of this software and associated documentation files (the -+"Software"), to deal in the Software without restriction, including -+without limitation the rights to use, copy, modify, merge, publish, -+distribute, sublicense, and/or sell copies of the Software, and to -+permit persons to whom the Software is furnished to do so, subject to -+the following conditions: -+ -+The above copyright notice and this permission notice shall be -+included in all copies or substantial portions of the Software. -+ -+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -+ -+#include <string.h> -+#include <stdlib.h> -+ -+#include "unwind_i.h" -+ -+PROTECTED unw_addr_space_t -+unw_create_addr_space (unw_accessors_t *a, int byte_order) -+{ -+#ifdef UNW_LOCAL_ONLY -+ return NULL; -+#else -+ unw_addr_space_t as; -+ -+ /* AArch64 supports little-endian and big-endian. */ -+ if (byte_order != 0 && byte_order != __LITTLE_ENDIAN -+ && byte_order != __BIG_ENDIAN) -+ return NULL; -+ -+ as = malloc (sizeof (*as)); -+ if (!as) -+ return NULL; -+ -+ memset (as, 0, sizeof (*as)); -+ -+ as->acc = *a; -+ -+ /* Default to little-endian for AArch64. */ -+ if (byte_order == 0 || byte_order == __LITTLE_ENDIAN) -+ as->big_endian = 0; -+ else -+ as->big_endian = 1; -+ -+ return as; -+#endif -+} -diff --git a/src/aarch64/Gget_proc_info.c b/src/aarch64/Gget_proc_info.c -new file mode 100644 -index 0000000..de9199f ---- /dev/null -+++ b/src/aarch64/Gget_proc_info.c -@@ -0,0 +1,39 @@ -+/* libunwind - a platform-independent unwind library -+ Copyright (C) 2008 CodeSourcery -+ -+This file is part of libunwind. -+ -+Permission is hereby granted, free of charge, to any person obtaining -+a copy of this software and associated documentation files (the -+"Software"), to deal in the Software without restriction, including -+without limitation the rights to use, copy, modify, merge, publish, -+distribute, sublicense, and/or sell copies of the Software, and to -+permit persons to whom the Software is furnished to do so, subject to -+the following conditions: -+ -+The above copyright notice and this permission notice shall be -+included in all copies or substantial portions of the Software. -+ -+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -+ -+#include "unwind_i.h" -+ -+PROTECTED int -+unw_get_proc_info (unw_cursor_t *cursor, unw_proc_info_t *pi) -+{ -+ struct cursor *c = (struct cursor *) cursor; -+ int ret; -+ -+ ret = dwarf_make_proc_info (&c->dwarf); -+ if (ret < 0) -+ return ret; -+ -+ *pi = c->dwarf.pi; -+ return 0; -+} -diff --git a/src/aarch64/Gget_save_loc.c b/src/aarch64/Gget_save_loc.c -new file mode 100644 -index 0000000..c76eb9c ---- /dev/null -+++ b/src/aarch64/Gget_save_loc.c -@@ -0,0 +1,100 @@ -+/* libunwind - a platform-independent unwind library -+ Copyright (C) 2008 CodeSourcery -+ Copyright (C) 2012 Tommi Rantala tt.rantala@gmail.com -+ Copyright (C) 2013 Linaro Limited -+ -+This file is part of libunwind. -+ -+Permission is hereby granted, free of charge, to any person obtaining -+a copy of this software and associated documentation files (the -+"Software"), to deal in the Software without restriction, including -+without limitation the rights to use, copy, modify, merge, publish, -+distribute, sublicense, and/or sell copies of the Software, and to -+permit persons to whom the Software is furnished to do so, subject to -+the following conditions: -+ -+The above copyright notice and this permission notice shall be -+included in all copies or substantial portions of the Software. -+ -+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -+ -+#include "unwind_i.h" -+ -+PROTECTED int -+unw_get_save_loc (unw_cursor_t *cursor, int reg, unw_save_loc_t *sloc) -+{ -+ struct cursor *c = (struct cursor *) cursor; -+ dwarf_loc_t loc; -+ -+ switch (reg) -+ { -+ case UNW_AARCH64_X0: -+ case UNW_AARCH64_X1: -+ case UNW_AARCH64_X2: -+ case UNW_AARCH64_X3: -+ case UNW_AARCH64_X4: -+ case UNW_AARCH64_X5: -+ case UNW_AARCH64_X6: -+ case UNW_AARCH64_X7: -+ case UNW_AARCH64_X8: -+ case UNW_AARCH64_X9: -+ case UNW_AARCH64_X10: -+ case UNW_AARCH64_X11: -+ case UNW_AARCH64_X12: -+ case UNW_AARCH64_X13: -+ case UNW_AARCH64_X14: -+ case UNW_AARCH64_X15: -+ case UNW_AARCH64_X16: -+ case UNW_AARCH64_X17: -+ case UNW_AARCH64_X18: -+ case UNW_AARCH64_X19: -+ case UNW_AARCH64_X20: -+ case UNW_AARCH64_X21: -+ case UNW_AARCH64_X22: -+ case UNW_AARCH64_X23: -+ case UNW_AARCH64_X24: -+ case UNW_AARCH64_X25: -+ case UNW_AARCH64_X26: -+ case UNW_AARCH64_X27: -+ case UNW_AARCH64_X28: -+ case UNW_AARCH64_X29: -+ case UNW_AARCH64_X30: -+ case UNW_AARCH64_SP: -+ case UNW_AARCH64_PC: -+ case UNW_AARCH64_PSTATE: -+ loc = c->dwarf.loc[reg]; -+ break; -+ -+ default: -+ loc = DWARF_NULL_LOC; /* default to "not saved" */ -+ break; -+ } -+ -+ memset (sloc, 0, sizeof (*sloc)); -+ -+ if (DWARF_IS_NULL_LOC (loc)) -+ { -+ sloc->type = UNW_SLT_NONE; -+ return 0; -+ } -+ -+#if !defined(UNW_LOCAL_ONLY) -+ if (DWARF_IS_REG_LOC (loc)) -+ { -+ sloc->type = UNW_SLT_REG; -+ sloc->u.regnum = DWARF_GET_LOC (loc); -+ } -+ else -+#endif -+ { -+ sloc->type = UNW_SLT_MEMORY; -+ sloc->u.addr = DWARF_GET_LOC (loc); -+ } -+ return 0; -+} -diff --git a/src/aarch64/Gglobal.c b/src/aarch64/Gglobal.c -new file mode 100644 -index 0000000..b0a7e26 ---- /dev/null -+++ b/src/aarch64/Gglobal.c -@@ -0,0 +1,57 @@ -+/* libunwind - a platform-independent unwind library -+ Copyright (C) 2008 CodeSourcery -+ Copyright (C) 2012 Tommi Rantala tt.rantala@gmail.com -+ Copyright (C) 2013 Linaro Limited -+ -+This file is part of libunwind. -+ -+Permission is hereby granted, free of charge, to any person obtaining -+a copy of this software and associated documentation files (the -+"Software"), to deal in the Software without restriction, including -+without limitation the rights to use, copy, modify, merge, publish, -+distribute, sublicense, and/or sell copies of the Software, and to -+permit persons to whom the Software is furnished to do so, subject to -+the following conditions: -+ -+The above copyright notice and this permission notice shall be -+included in all copies or substantial portions of the Software. -+ -+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -+ -+#include "unwind_i.h" -+#include "dwarf_i.h" -+ -+HIDDEN define_lock (aarch64_lock); -+HIDDEN int tdep_init_done; -+ -+HIDDEN void -+tdep_init (void) -+{ -+ intrmask_t saved_mask; -+ -+ sigfillset (&unwi_full_mask); -+ -+ lock_acquire (&aarch64_lock, saved_mask); -+ { -+ if (tdep_init_done) -+ /* another thread else beat us to it... */ -+ goto out; -+ -+ mi_init (); -+ -+ dwarf_init (); -+ -+#ifndef UNW_REMOTE_ONLY -+ aarch64_local_addr_space_init (); -+#endif -+ tdep_init_done = 1; /* signal that we're initialized... */ -+ } -+ out: -+ lock_release (&aarch64_lock, saved_mask); -+} -diff --git a/src/aarch64/Ginit.c b/src/aarch64/Ginit.c -new file mode 100644 -index 0000000..449b417 ---- /dev/null -+++ b/src/aarch64/Ginit.c -@@ -0,0 +1,187 @@ -+/* libunwind - a platform-independent unwind library -+ Copyright (C) 2008 CodeSourcery -+ Copyright (C) 2012 Tommi Rantala tt.rantala@gmail.com -+ Copyright (C) 2013 Linaro Limited -+ -+This file is part of libunwind. -+ -+Permission is hereby granted, free of charge, to any person obtaining -+a copy of this software and associated documentation files (the -+"Software"), to deal in the Software without restriction, including -+without limitation the rights to use, copy, modify, merge, publish, -+distribute, sublicense, and/or sell copies of the Software, and to -+permit persons to whom the Software is furnished to do so, subject to -+the following conditions: -+ -+The above copyright notice and this permission notice shall be -+included in all copies or substantial portions of the Software. -+ -+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -+ -+#include <stdlib.h> -+#include <string.h> -+ -+#include "unwind_i.h" -+ -+#ifdef UNW_REMOTE_ONLY -+ -+/* unw_local_addr_space is a NULL pointer in this case. */ -+PROTECTED unw_addr_space_t unw_local_addr_space; -+ -+#else /* !UNW_REMOTE_ONLY */ -+ -+static struct unw_addr_space local_addr_space; -+ -+PROTECTED unw_addr_space_t unw_local_addr_space = &local_addr_space; -+ -+static inline void * -+uc_addr (ucontext_t *uc, int reg) -+{ -+ if (reg >= UNW_AARCH64_X0 && reg <= UNW_AARCH64_V31) -+ return &uc->uc_mcontext.regs[reg]; -+ else -+ return NULL; -+} -+ -+# ifdef UNW_LOCAL_ONLY -+ -+HIDDEN void * -+tdep_uc_addr (ucontext_t *uc, int reg) -+{ -+ return uc_addr (uc, reg); -+} -+ -+# endif /* UNW_LOCAL_ONLY */ -+ -+HIDDEN unw_dyn_info_list_t _U_dyn_info_list; -+ -+/* XXX fix me: there is currently no way to locate the dyn-info list -+ by a remote unwinder. On ia64, this is done via a special -+ unwind-table entry. Perhaps something similar can be done with -+ DWARF2 unwind info. */ -+ -+static void -+put_unwind_info (unw_addr_space_t as, unw_proc_info_t *proc_info, void *arg) -+{ -+ /* it's a no-op */ -+} -+ -+static int -+get_dyn_info_list_addr (unw_addr_space_t as, unw_word_t *dyn_info_list_addr, -+ void *arg) -+{ -+ *dyn_info_list_addr = (unw_word_t) &_U_dyn_info_list; -+ return 0; -+} -+ -+static int -+access_mem (unw_addr_space_t as, unw_word_t addr, unw_word_t *val, int write, -+ void *arg) -+{ -+ if (write) -+ { -+ Debug (16, "mem[%x] <- %x\n", addr, *val); -+ *(unw_word_t *) addr = *val; -+ } -+ else -+ { -+ *val = *(unw_word_t *) addr; -+ Debug (16, "mem[%x] -> %x\n", addr, *val); -+ } -+ return 0; -+} -+ -+static int -+access_reg (unw_addr_space_t as, unw_regnum_t reg, unw_word_t *val, int write, -+ void *arg) -+{ -+ unw_word_t *addr; -+ ucontext_t *uc = arg; -+ -+ if (unw_is_fpreg (reg)) -+ goto badreg; -+ -+ if (!(addr = uc_addr (uc, reg))) -+ goto badreg; -+ -+ if (write) -+ { -+ *(unw_word_t *) addr = *val; -+ Debug (12, "%s <- %x\n", unw_regname (reg), *val); -+ } -+ else -+ { -+ *val = *(unw_word_t *) addr; -+ Debug (12, "%s -> %x\n", unw_regname (reg), *val); -+ } -+ return 0; -+ -+ badreg: -+ Debug (1, "bad register number %u\n", reg); -+ return -UNW_EBADREG; -+} -+ -+static int -+access_fpreg (unw_addr_space_t as, unw_regnum_t reg, unw_fpreg_t *val, -+ int write, void *arg) -+{ -+ ucontext_t *uc = arg; -+ unw_fpreg_t *addr; -+ -+ if (!unw_is_fpreg (reg)) -+ goto badreg; -+ -+ if (!(addr = uc_addr (uc, reg))) -+ goto badreg; -+ -+ if (write) -+ { -+ Debug (12, "%s <- %08lx.%08lx.%08lx\n", unw_regname (reg), -+ ((long *)val)[0], ((long *)val)[1], ((long *)val)[2]); -+ *(unw_fpreg_t *) addr = *val; -+ } -+ else -+ { -+ *val = *(unw_fpreg_t *) addr; -+ Debug (12, "%s -> %08lx.%08lx.%08lx\n", unw_regname (reg), -+ ((long *)val)[0], ((long *)val)[1], ((long *)val)[2]); -+ } -+ return 0; -+ -+ badreg: -+ Debug (1, "bad register number %u\n", reg); -+ /* attempt to access a non-preserved register */ -+ return -UNW_EBADREG; -+} -+ -+static int -+get_static_proc_name (unw_addr_space_t as, unw_word_t ip, -+ char *buf, size_t buf_len, unw_word_t *offp, -+ void *arg) -+{ -+ return _Uelf64_get_proc_name (as, getpid (), ip, buf, buf_len, offp); -+} -+ -+HIDDEN void -+aarch64_local_addr_space_init (void) -+{ -+ memset (&local_addr_space, 0, sizeof (local_addr_space)); -+ local_addr_space.caching_policy = UNW_CACHE_GLOBAL; -+ local_addr_space.acc.find_proc_info = dwarf_find_proc_info; -+ local_addr_space.acc.put_unwind_info = put_unwind_info; -+ local_addr_space.acc.get_dyn_info_list_addr = get_dyn_info_list_addr; -+ local_addr_space.acc.access_mem = access_mem; -+ local_addr_space.acc.access_reg = access_reg; -+ local_addr_space.acc.access_fpreg = access_fpreg; -+ local_addr_space.acc.resume = aarch64_local_resume; -+ local_addr_space.acc.get_proc_name = get_static_proc_name; -+ unw_flush_cache (&local_addr_space, 0, 0); -+} -+ -+#endif /* !UNW_REMOTE_ONLY */ -diff --git a/src/aarch64/Ginit_local.c b/src/aarch64/Ginit_local.c -new file mode 100644 -index 0000000..dee6fd3 ---- /dev/null -+++ b/src/aarch64/Ginit_local.c -@@ -0,0 +1,55 @@ -+/* libunwind - a platform-independent unwind library -+ Copyright (C) 2008 CodeSourcery -+ Copyright (C) 2011-2013 Linaro Limited -+ -+This file is part of libunwind. -+ -+Permission is hereby granted, free of charge, to any person obtaining -+a copy of this software and associated documentation files (the -+"Software"), to deal in the Software without restriction, including -+without limitation the rights to use, copy, modify, merge, publish, -+distribute, sublicense, and/or sell copies of the Software, and to -+permit persons to whom the Software is furnished to do so, subject to -+the following conditions: -+ -+The above copyright notice and this permission notice shall be -+included in all copies or substantial portions of the Software. -+ -+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -+ -+#include "unwind_i.h" -+#include "init.h" -+ -+#ifdef UNW_REMOTE_ONLY -+ -+PROTECTED int -+unw_init_local (unw_cursor_t *cursor, unw_context_t *uc) -+{ -+ return -UNW_EINVAL; -+} -+ -+#else /* !UNW_REMOTE_ONLY */ -+ -+PROTECTED int -+unw_init_local (unw_cursor_t *cursor, unw_context_t *uc) -+{ -+ struct cursor *c = (struct cursor *) cursor; -+ -+ if (!tdep_init_done) -+ tdep_init (); -+ -+ Debug (1, "(cursor=%p)\n", c); -+ -+ c->dwarf.as = unw_local_addr_space; -+ c->dwarf.as_arg = uc; -+ -+ return common_init (c, 1); -+} -+ -+#endif /* !UNW_REMOTE_ONLY */ -diff --git a/src/aarch64/Ginit_remote.c b/src/aarch64/Ginit_remote.c -new file mode 100644 -index 0000000..f284e99 ---- /dev/null -+++ b/src/aarch64/Ginit_remote.c -@@ -0,0 +1,45 @@ -+/* libunwind - a platform-independent unwind library -+ Copyright (C) 2008 CodeSourcery -+ -+This file is part of libunwind. -+ -+Permission is hereby granted, free of charge, to any person obtaining -+a copy of this software and associated documentation files (the -+"Software"), to deal in the Software without restriction, including -+without limitation the rights to use, copy, modify, merge, publish, -+distribute, sublicense, and/or sell copies of the Software, and to -+permit persons to whom the Software is furnished to do so, subject to -+the following conditions: -+ -+The above copyright notice and this permission notice shall be -+included in all copies or substantial portions of the Software. -+ -+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -+ -+#include "init.h" -+#include "unwind_i.h" -+ -+PROTECTED int -+unw_init_remote (unw_cursor_t *cursor, unw_addr_space_t as, void *as_arg) -+{ -+#ifdef UNW_LOCAL_ONLY -+ return -UNW_EINVAL; -+#else /* !UNW_LOCAL_ONLY */ -+ struct cursor *c = (struct cursor *) cursor; -+ -+ if (!tdep_init_done) -+ tdep_init (); -+ -+ Debug (1, "(cursor=%p)\n", c); -+ -+ c->dwarf.as = as; -+ c->dwarf.as_arg = as_arg; -+ return common_init (c, 0); -+#endif /* !UNW_LOCAL_ONLY */ -+} -diff --git a/src/aarch64/Gis_signal_frame.c b/src/aarch64/Gis_signal_frame.c -new file mode 100644 -index 0000000..53e32de ---- /dev/null -+++ b/src/aarch64/Gis_signal_frame.c -@@ -0,0 +1,64 @@ -+/* libunwind - a platform-independent unwind library -+ Copyright (C) 2012 Tommi Rantala tt.rantala@gmail.com -+ Copyright (C) 2013 Linaro Limited -+ -+This file is part of libunwind. -+ -+Permission is hereby granted, free of charge, to any person obtaining -+a copy of this software and associated documentation files (the -+"Software"), to deal in the Software without restriction, including -+without limitation the rights to use, copy, modify, merge, publish, -+distribute, sublicense, and/or sell copies of the Software, and to -+permit persons to whom the Software is furnished to do so, subject to -+the following conditions: -+ -+The above copyright notice and this permission notice shall be -+included in all copies or substantial portions of the Software. -+ -+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -+ -+#include "unwind_i.h" -+ -+/* The restorer stub will always have the form: -+ -+ d2801168 movz x8, #0x8b -+ d4000001 svc #0x0 -+*/ -+ -+PROTECTED int -+unw_is_signal_frame (unw_cursor_t *cursor) -+{ -+#ifdef __linux__ -+ struct cursor *c = (struct cursor *) cursor; -+ unw_word_t w0, ip; -+ unw_addr_space_t as; -+ unw_accessors_t *a; -+ void *arg; -+ int ret; -+ -+ as = c->dwarf.as; -+ a = unw_get_accessors (as); -+ arg = c->dwarf.as_arg; -+ -+ ip = c->dwarf.ip; -+ -+ ret = (*a->access_mem) (as, ip, &w0, 0, arg); -+ if (ret < 0) -+ return ret; -+ -+ /* FIXME: distinguish 32bit insn vs 64bit registers. */ -+ if (w0 != 0xd4000001d2801168) -+ return 0; -+ -+ return 1; -+ -+#else -+ return -UNW_ENOINFO; -+#endif -+} -diff --git a/src/aarch64/Gregs.c b/src/aarch64/Gregs.c -new file mode 100644 -index 0000000..0f6b9c6 ---- /dev/null -+++ b/src/aarch64/Gregs.c -@@ -0,0 +1,113 @@ -+/* libunwind - a platform-independent unwind library -+ Copyright (C) 2008 CodeSourcery -+ Copyright (C) 2012 Tommi Rantala tt.rantala@gmail.com -+ Copyright (C) 2013 Linaro Limited -+ -+This file is part of libunwind. -+ -+Permission is hereby granted, free of charge, to any person obtaining -+a copy of this software and associated documentation files (the -+"Software"), to deal in the Software without restriction, including -+without limitation the rights to use, copy, modify, merge, publish, -+distribute, sublicense, and/or sell copies of the Software, and to -+permit persons to whom the Software is furnished to do so, subject to -+the following conditions: -+ -+The above copyright notice and this permission notice shall be -+included in all copies or substantial portions of the Software. -+ -+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -+ -+#include "unwind_i.h" -+ -+HIDDEN int -+tdep_access_reg (struct cursor *c, unw_regnum_t reg, unw_word_t *valp, -+ int write) -+{ -+ dwarf_loc_t loc = DWARF_NULL_LOC; -+ unsigned int mask; -+ -+ switch (reg) -+ { -+ case UNW_AARCH64_X0: -+ case UNW_AARCH64_X1: -+ case UNW_AARCH64_X2: -+ case UNW_AARCH64_X3: -+ mask = 1 << reg; -+ if (write) -+ { -+ c->dwarf.eh_args[reg] = *valp; -+ c->dwarf.eh_valid_mask |= mask; -+ return 0; -+ } -+ else if ((c->dwarf.eh_valid_mask & mask) != 0) -+ { -+ *valp = c->dwarf.eh_args[reg]; -+ return 0; -+ } -+ else -+ loc = c->dwarf.loc[reg]; -+ break; -+ -+ case UNW_AARCH64_X4: -+ case UNW_AARCH64_X5: -+ case UNW_AARCH64_X6: -+ case UNW_AARCH64_X7: -+ case UNW_AARCH64_X8: -+ case UNW_AARCH64_X9: -+ case UNW_AARCH64_X10: -+ case UNW_AARCH64_X11: -+ case UNW_AARCH64_X12: -+ case UNW_AARCH64_X13: -+ case UNW_AARCH64_X14: -+ case UNW_AARCH64_X15: -+ case UNW_AARCH64_X16: -+ case UNW_AARCH64_X17: -+ case UNW_AARCH64_X18: -+ case UNW_AARCH64_X19: -+ case UNW_AARCH64_X20: -+ case UNW_AARCH64_X21: -+ case UNW_AARCH64_X22: -+ case UNW_AARCH64_X23: -+ case UNW_AARCH64_X24: -+ case UNW_AARCH64_X25: -+ case UNW_AARCH64_X26: -+ case UNW_AARCH64_X27: -+ case UNW_AARCH64_X28: -+ case UNW_AARCH64_X29: -+ case UNW_AARCH64_X30: -+ case UNW_AARCH64_PC: -+ case UNW_AARCH64_PSTATE: -+ loc = c->dwarf.loc[reg]; -+ break; -+ -+ case UNW_AARCH64_SP: -+ if (write) -+ return -UNW_EREADONLYREG; -+ *valp = c->dwarf.cfa; -+ return 0; -+ -+ default: -+ Debug (1, "bad register number %u\n", reg); -+ return -UNW_EBADREG; -+ } -+ -+ if (write) -+ return dwarf_put (&c->dwarf, loc, *valp); -+ else -+ return dwarf_get (&c->dwarf, loc, valp); -+} -+ -+HIDDEN int -+tdep_access_fpreg (struct cursor *c, unw_regnum_t reg, unw_fpreg_t *valp, -+ int write) -+{ -+ Debug (1, "bad register number %u\n", reg); -+ return -UNW_EBADREG; -+} -diff --git a/src/aarch64/Gresume.c b/src/aarch64/Gresume.c -new file mode 100644 -index 0000000..908646b ---- /dev/null -+++ b/src/aarch64/Gresume.c -@@ -0,0 +1,177 @@ -+/* libunwind - a platform-independent unwind library -+ Copyright (C) 2008 CodeSourcery -+ Copyright (C) 2011-2013 Linaro Limited -+ Copyright (C) 2012 Tommi Rantala tt.rantala@gmail.com -+ -+This file is part of libunwind. -+ -+Permission is hereby granted, free of charge, to any person obtaining -+a copy of this software and associated documentation files (the -+"Software"), to deal in the Software without restriction, including -+without limitation the rights to use, copy, modify, merge, publish, -+distribute, sublicense, and/or sell copies of the Software, and to -+permit persons to whom the Software is furnished to do so, subject to -+the following conditions: -+ -+The above copyright notice and this permission notice shall be -+included in all copies or substantial portions of the Software. -+ -+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -+ -+#include "unwind_i.h" -+#include "offsets.h" -+ -+#ifndef UNW_REMOTE_ONLY -+ -+HIDDEN inline int -+aarch64_local_resume (unw_addr_space_t as, unw_cursor_t *cursor, void *arg) -+{ -+#ifdef __linux__ -+ struct cursor *c = (struct cursor *) cursor; -+ unw_tdep_context_t *uc = c->dwarf.as_arg; -+ -+ if (c->sigcontext_format == AARCH64_SCF_NONE) -+ { -+ /* Since there are no signals involved here we restore the non scratch -+ registers only. */ -+ unsigned long regs[11]; -+ regs[0] = uc->uc_mcontext.regs[19]; -+ regs[1] = uc->uc_mcontext.regs[20]; -+ regs[2] = uc->uc_mcontext.regs[21]; -+ regs[3] = uc->uc_mcontext.regs[22]; -+ regs[4] = uc->uc_mcontext.regs[23]; -+ regs[5] = uc->uc_mcontext.regs[24]; -+ regs[6] = uc->uc_mcontext.regs[25]; -+ regs[7] = uc->uc_mcontext.regs[26]; -+ regs[8] = uc->uc_mcontext.regs[27]; -+ regs[9] = uc->uc_mcontext.regs[28]; -+ regs[10] = uc->uc_mcontext.regs[30]; /* LR */ -+ unsigned long sp = uc->uc_mcontext.sp; -+ -+ struct regs_overlay { -+ char x[sizeof(regs)]; -+ }; -+ -+ asm volatile ( -+ "ldp x19, x20, [%0]\n" -+ "ldp x21, x22, [%0,16]\n" -+ "ldp x23, x24, [%0,32]\n" -+ "ldp x25, x26, [%0,48]\n" -+ "ldp x27, x28, [%0,64]\n" -+ "ldr x30, [%0,80]\n" -+ "mov sp, %1\n" -+ "ret \n" -+ : -+ : "r" (regs), -+ "r" (sp), -+ "m" (*(struct regs_overlay *)regs) -+ ); -+ } -+ else -+ { -+ struct sigcontext *sc = (struct sigcontext *) c->sigcontext_addr; -+ -+ if (c->dwarf.eh_valid_mask & 0x1) sc->regs[0] = c->dwarf.eh_args[0]; -+ if (c->dwarf.eh_valid_mask & 0x2) sc->regs[1] = c->dwarf.eh_args[1]; -+ if (c->dwarf.eh_valid_mask & 0x4) sc->regs[2] = c->dwarf.eh_args[2]; -+ if (c->dwarf.eh_valid_mask & 0x8) sc->regs[3] = c->dwarf.eh_args[3]; -+ -+ sc->regs[4] = uc->uc_mcontext.regs[4]; -+ sc->regs[5] = uc->uc_mcontext.regs[5]; -+ sc->regs[6] = uc->uc_mcontext.regs[6]; -+ sc->regs[7] = uc->uc_mcontext.regs[7]; -+ sc->regs[8] = uc->uc_mcontext.regs[8]; -+ sc->regs[9] = uc->uc_mcontext.regs[9]; -+ sc->regs[10] = uc->uc_mcontext.regs[10]; -+ sc->regs[11] = uc->uc_mcontext.regs[11]; -+ sc->regs[12] = uc->uc_mcontext.regs[12]; -+ sc->regs[13] = uc->uc_mcontext.regs[13]; -+ sc->regs[14] = uc->uc_mcontext.regs[14]; -+ sc->regs[15] = uc->uc_mcontext.regs[15]; -+ sc->regs[16] = uc->uc_mcontext.regs[16]; -+ sc->regs[17] = uc->uc_mcontext.regs[17]; -+ sc->regs[18] = uc->uc_mcontext.regs[18]; -+ sc->regs[19] = uc->uc_mcontext.regs[19]; -+ sc->regs[20] = uc->uc_mcontext.regs[20]; -+ sc->regs[21] = uc->uc_mcontext.regs[21]; -+ sc->regs[22] = uc->uc_mcontext.regs[22]; -+ sc->regs[23] = uc->uc_mcontext.regs[23]; -+ sc->regs[24] = uc->uc_mcontext.regs[24]; -+ sc->regs[25] = uc->uc_mcontext.regs[25]; -+ sc->regs[26] = uc->uc_mcontext.regs[26]; -+ sc->regs[27] = uc->uc_mcontext.regs[27]; -+ sc->regs[28] = uc->uc_mcontext.regs[28]; -+ sc->regs[29] = uc->uc_mcontext.regs[29]; -+ sc->regs[30] = uc->uc_mcontext.regs[30]; -+ sc->sp = uc->uc_mcontext.sp; -+ sc->pc = uc->uc_mcontext.pc; -+ sc->pstate = uc->uc_mcontext.pstate; -+ -+ asm volatile ( -+ "mov sp, %0\n" -+ "ret %1\n" -+ : : "r" (c->sigcontext_sp), "r" (c->sigcontext_pc) -+ ); -+ } -+ __builtin_unreachable(); -+#else -+ printf ("%s: implement me\n", __FUNCTION__); -+#endif -+ return -UNW_EINVAL; -+} -+ -+#endif /* !UNW_REMOTE_ONLY */ -+ -+static inline void -+establish_machine_state (struct cursor *c) -+{ -+ unw_addr_space_t as = c->dwarf.as; -+ void *arg = c->dwarf.as_arg; -+ unw_fpreg_t fpval; -+ unw_word_t val; -+ int reg; -+ -+ Debug (8, "copying out cursor state\n"); -+ -+ for (reg = 0; reg <= UNW_AARCH64_PSTATE; ++reg) -+ { -+ Debug (16, "copying %s %d\n", unw_regname (reg), reg); -+ if (unw_is_fpreg (reg)) -+ { -+ if (tdep_access_fpreg (c, reg, &fpval, 0) >= 0) -+ as->acc.access_fpreg (as, reg, &fpval, 1, arg); -+ } -+ else -+ { -+ if (tdep_access_reg (c, reg, &val, 0) >= 0) -+ as->acc.access_reg (as, reg, &val, 1, arg); -+ } -+ } -+} -+ -+PROTECTED int -+unw_resume (unw_cursor_t *cursor) -+{ -+ struct cursor *c = (struct cursor *) cursor; -+ -+ Debug (1, "(cursor=%p)\n", c); -+ -+ if (!c->dwarf.ip) -+ { -+ /* This can happen easily when the frame-chain gets truncated -+ due to bad or missing unwind-info. */ -+ Debug (1, "refusing to resume execution at address 0\n"); -+ return -UNW_EINVAL; -+ } -+ -+ establish_machine_state (c); -+ -+ return (*c->dwarf.as->acc.resume) (c->dwarf.as, (unw_cursor_t *) c, -+ c->dwarf.as_arg); -+} -diff --git a/src/aarch64/Gstep.c b/src/aarch64/Gstep.c -new file mode 100644 -index 0000000..4aa15d1 ---- /dev/null -+++ b/src/aarch64/Gstep.c -@@ -0,0 +1,129 @@ -+/* libunwind - a platform-independent unwind library -+ Copyright (C) 2008 CodeSourcery -+ Copyright (C) 2011-2013 Linaro Limited -+ Copyright (C) 2012 Tommi Rantala tt.rantala@gmail.com -+ -+This file is part of libunwind. -+ -+Permission is hereby granted, free of charge, to any person obtaining -+a copy of this software and associated documentation files (the -+"Software"), to deal in the Software without restriction, including -+without limitation the rights to use, copy, modify, merge, publish, -+distribute, sublicense, and/or sell copies of the Software, and to -+permit persons to whom the Software is furnished to do so, subject to -+the following conditions: -+ -+The above copyright notice and this permission notice shall be -+included in all copies or substantial portions of the Software. -+ -+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -+ -+#include "unwind_i.h" -+#include "offsets.h" -+ -+PROTECTED int -+unw_handle_signal_frame (unw_cursor_t *cursor) -+{ -+ struct cursor *c = (struct cursor *) cursor; -+ int ret; -+ unw_word_t sc_addr, sp, sp_addr = c->dwarf.cfa; -+ struct dwarf_loc sp_loc = DWARF_LOC (sp_addr, 0); -+ -+ if ((ret = dwarf_get (&c->dwarf, sp_loc, &sp)) < 0) -+ return -UNW_EUNSPEC; -+ -+ ret = unw_is_signal_frame (cursor); -+ Debug(1, "unw_is_signal_frame()=%d\n", ret); -+ -+ /* Save the SP and PC to be able to return execution at this point -+ later in time (unw_resume). */ -+ c->sigcontext_sp = c->dwarf.cfa; -+ c->sigcontext_pc = c->dwarf.ip; -+ -+ if (ret) -+ { -+ c->sigcontext_format = AARCH64_SCF_LINUX_RT_SIGFRAME; -+ sc_addr = sp_addr + sizeof (siginfo_t) + LINUX_UC_MCONTEXT_OFF; -+ } -+ else -+ return -UNW_EUNSPEC; -+ -+ c->sigcontext_addr = sc_addr; -+ -+ /* Update the dwarf cursor. -+ Set the location of the registers to the corresponding addresses of the -+ uc_mcontext / sigcontext structure contents. */ -+ c->dwarf.loc[UNW_AARCH64_X0] = DWARF_LOC (sc_addr + LINUX_SC_X0_OFF, 0); -+ c->dwarf.loc[UNW_AARCH64_X1] = DWARF_LOC (sc_addr + LINUX_SC_X1_OFF, 0); -+ c->dwarf.loc[UNW_AARCH64_X2] = DWARF_LOC (sc_addr + LINUX_SC_X2_OFF, 0); -+ c->dwarf.loc[UNW_AARCH64_X3] = DWARF_LOC (sc_addr + LINUX_SC_X3_OFF, 0); -+ c->dwarf.loc[UNW_AARCH64_X4] = DWARF_LOC (sc_addr + LINUX_SC_X4_OFF, 0); -+ c->dwarf.loc[UNW_AARCH64_X5] = DWARF_LOC (sc_addr + LINUX_SC_X5_OFF, 0); -+ c->dwarf.loc[UNW_AARCH64_X6] = DWARF_LOC (sc_addr + LINUX_SC_X6_OFF, 0); -+ c->dwarf.loc[UNW_AARCH64_X7] = DWARF_LOC (sc_addr + LINUX_SC_X7_OFF, 0); -+ c->dwarf.loc[UNW_AARCH64_X8] = DWARF_LOC (sc_addr + LINUX_SC_X8_OFF, 0); -+ c->dwarf.loc[UNW_AARCH64_X9] = DWARF_LOC (sc_addr + LINUX_SC_X9_OFF, 0); -+ c->dwarf.loc[UNW_AARCH64_X10] = DWARF_LOC (sc_addr + LINUX_SC_X10_OFF, 0); -+ c->dwarf.loc[UNW_AARCH64_X11] = DWARF_LOC (sc_addr + LINUX_SC_X11_OFF, 0); -+ c->dwarf.loc[UNW_AARCH64_X12] = DWARF_LOC (sc_addr + LINUX_SC_X12_OFF, 0); -+ c->dwarf.loc[UNW_AARCH64_X13] = DWARF_LOC (sc_addr + LINUX_SC_X13_OFF, 0); -+ c->dwarf.loc[UNW_AARCH64_X14] = DWARF_LOC (sc_addr + LINUX_SC_X14_OFF, 0); -+ c->dwarf.loc[UNW_AARCH64_X15] = DWARF_LOC (sc_addr + LINUX_SC_X15_OFF, 0); -+ c->dwarf.loc[UNW_AARCH64_X16] = DWARF_LOC (sc_addr + LINUX_SC_X16_OFF, 0); -+ c->dwarf.loc[UNW_AARCH64_X17] = DWARF_LOC (sc_addr + LINUX_SC_X17_OFF, 0); -+ c->dwarf.loc[UNW_AARCH64_X18] = DWARF_LOC (sc_addr + LINUX_SC_X18_OFF, 0); -+ c->dwarf.loc[UNW_AARCH64_X19] = DWARF_LOC (sc_addr + LINUX_SC_X19_OFF, 0); -+ c->dwarf.loc[UNW_AARCH64_X20] = DWARF_LOC (sc_addr + LINUX_SC_X20_OFF, 0); -+ c->dwarf.loc[UNW_AARCH64_X21] = DWARF_LOC (sc_addr + LINUX_SC_X21_OFF, 0); -+ c->dwarf.loc[UNW_AARCH64_X22] = DWARF_LOC (sc_addr + LINUX_SC_X22_OFF, 0); -+ c->dwarf.loc[UNW_AARCH64_X23] = DWARF_LOC (sc_addr + LINUX_SC_X23_OFF, 0); -+ c->dwarf.loc[UNW_AARCH64_X24] = DWARF_LOC (sc_addr + LINUX_SC_X24_OFF, 0); -+ c->dwarf.loc[UNW_AARCH64_X25] = DWARF_LOC (sc_addr + LINUX_SC_X25_OFF, 0); -+ c->dwarf.loc[UNW_AARCH64_X26] = DWARF_LOC (sc_addr + LINUX_SC_X26_OFF, 0); -+ c->dwarf.loc[UNW_AARCH64_X27] = DWARF_LOC (sc_addr + LINUX_SC_X27_OFF, 0); -+ c->dwarf.loc[UNW_AARCH64_X28] = DWARF_LOC (sc_addr + LINUX_SC_X28_OFF, 0); -+ c->dwarf.loc[UNW_AARCH64_X29] = DWARF_LOC (sc_addr + LINUX_SC_X29_OFF, 0); -+ c->dwarf.loc[UNW_AARCH64_X30] = DWARF_LOC (sc_addr + LINUX_SC_X30_OFF, 0); -+ c->dwarf.loc[UNW_AARCH64_SP] = DWARF_LOC (sc_addr + LINUX_SC_SP_OFF, 0); -+ c->dwarf.loc[UNW_AARCH64_PC] = DWARF_LOC (sc_addr + LINUX_SC_PC_OFF, 0); -+ c->dwarf.loc[UNW_AARCH64_PSTATE] = DWARF_LOC (sc_addr + LINUX_SC_PSTATE_OFF, 0); -+ -+ /* Set SP/CFA and PC/IP. */ -+ dwarf_get (&c->dwarf, c->dwarf.loc[UNW_AARCH64_SP], &c->dwarf.cfa); -+ dwarf_get (&c->dwarf, c->dwarf.loc[UNW_AARCH64_PC], &c->dwarf.ip); -+ -+ c->dwarf.pi_valid = 0; -+ -+ return 1; -+} -+ -+PROTECTED int -+unw_step (unw_cursor_t *cursor) -+{ -+ struct cursor *c = (struct cursor *) cursor; -+ int ret; -+ -+ Debug (1, "(cursor=%p, ip=0x%016lx, cfa=0x%016lx))\n", -+ c, c->dwarf.ip, c->dwarf.cfa); -+ -+ /* Check if this is a signal frame. */ -+ if (unw_is_signal_frame (cursor)) -+ return unw_handle_signal_frame (cursor); -+ -+ ret = dwarf_step (&c->dwarf); -+ Debug(1, "dwarf_step()=%d\n", ret); -+ -+ if (unlikely (ret == -UNW_ESTOPUNWIND)) -+ return ret; -+ -+ if (unlikely (ret < 0)) -+ return 0; -+ -+ return (c->dwarf.ip == 0) ? 0 : 1; -+} -diff --git a/src/aarch64/Lcreate_addr_space.c b/src/aarch64/Lcreate_addr_space.c -new file mode 100644 -index 0000000..0f2dc6b ---- /dev/null -+++ b/src/aarch64/Lcreate_addr_space.c -@@ -0,0 +1,5 @@ -+#define UNW_LOCAL_ONLY -+#include <libunwind.h> -+#if defined(UNW_LOCAL_ONLY) && !defined(UNW_REMOTE_ONLY) -+#include "Gcreate_addr_space.c" -+#endif -diff --git a/src/aarch64/Lget_proc_info.c b/src/aarch64/Lget_proc_info.c -new file mode 100644 -index 0000000..69028b0 ---- /dev/null -+++ b/src/aarch64/Lget_proc_info.c -@@ -0,0 +1,5 @@ -+#define UNW_LOCAL_ONLY -+#include <libunwind.h> -+#if defined(UNW_LOCAL_ONLY) && !defined(UNW_REMOTE_ONLY) -+#include "Gget_proc_info.c" -+#endif -diff --git a/src/aarch64/Lget_save_loc.c b/src/aarch64/Lget_save_loc.c -new file mode 100644 -index 0000000..9ea048a ---- /dev/null -+++ b/src/aarch64/Lget_save_loc.c -@@ -0,0 +1,5 @@ -+#define UNW_LOCAL_ONLY -+#include <libunwind.h> -+#if defined(UNW_LOCAL_ONLY) && !defined(UNW_REMOTE_ONLY) -+#include "Gget_save_loc.c" -+#endif -diff --git a/src/aarch64/Lglobal.c b/src/aarch64/Lglobal.c -new file mode 100644 -index 0000000..6d7b489 ---- /dev/null -+++ b/src/aarch64/Lglobal.c -@@ -0,0 +1,5 @@ -+#define UNW_LOCAL_ONLY -+#include <libunwind.h> -+#if defined(UNW_LOCAL_ONLY) && !defined(UNW_REMOTE_ONLY) -+#include "Gglobal.c" -+#endif -diff --git a/src/aarch64/Linit.c b/src/aarch64/Linit.c -new file mode 100644 -index 0000000..e9abfdd ---- /dev/null -+++ b/src/aarch64/Linit.c -@@ -0,0 +1,5 @@ -+#define UNW_LOCAL_ONLY -+#include <libunwind.h> -+#if defined(UNW_LOCAL_ONLY) && !defined(UNW_REMOTE_ONLY) -+#include "Ginit.c" -+#endif -diff --git a/src/aarch64/Linit_local.c b/src/aarch64/Linit_local.c -new file mode 100644 -index 0000000..68a1687 ---- /dev/null -+++ b/src/aarch64/Linit_local.c -@@ -0,0 +1,5 @@ -+#define UNW_LOCAL_ONLY -+#include <libunwind.h> -+#if defined(UNW_LOCAL_ONLY) && !defined(UNW_REMOTE_ONLY) -+#include "Ginit_local.c" -+#endif -diff --git a/src/aarch64/Linit_remote.c b/src/aarch64/Linit_remote.c -new file mode 100644 -index 0000000..58cb04a ---- /dev/null -+++ b/src/aarch64/Linit_remote.c -@@ -0,0 +1,5 @@ -+#define UNW_LOCAL_ONLY -+#include <libunwind.h> -+#if defined(UNW_LOCAL_ONLY) && !defined(UNW_REMOTE_ONLY) -+#include "Ginit_remote.c" -+#endif -diff --git a/src/aarch64/Lis_signal_frame.c b/src/aarch64/Lis_signal_frame.c -new file mode 100644 -index 0000000..b9a7c4f ---- /dev/null -+++ b/src/aarch64/Lis_signal_frame.c -@@ -0,0 +1,5 @@ -+#define UNW_LOCAL_ONLY -+#include <libunwind.h> -+#if defined(UNW_LOCAL_ONLY) && !defined(UNW_REMOTE_ONLY) -+#include "Gis_signal_frame.c" -+#endif -diff --git a/src/aarch64/Lregs.c b/src/aarch64/Lregs.c -new file mode 100644 -index 0000000..2c9c75c ---- /dev/null -+++ b/src/aarch64/Lregs.c -@@ -0,0 +1,5 @@ -+#define UNW_LOCAL_ONLY -+#include <libunwind.h> -+#if defined(UNW_LOCAL_ONLY) && !defined(UNW_REMOTE_ONLY) -+#include "Gregs.c" -+#endif -diff --git a/src/aarch64/Lresume.c b/src/aarch64/Lresume.c -new file mode 100644 -index 0000000..41a8cf0 ---- /dev/null -+++ b/src/aarch64/Lresume.c -@@ -0,0 +1,5 @@ -+#define UNW_LOCAL_ONLY -+#include <libunwind.h> -+#if defined(UNW_LOCAL_ONLY) && !defined(UNW_REMOTE_ONLY) -+#include "Gresume.c" -+#endif -diff --git a/src/aarch64/Lstep.c b/src/aarch64/Lstep.c -new file mode 100644 -index 0000000..c1ac3c7 ---- /dev/null -+++ b/src/aarch64/Lstep.c -@@ -0,0 +1,5 @@ -+#define UNW_LOCAL_ONLY -+#include <libunwind.h> -+#if defined(UNW_LOCAL_ONLY) && !defined(UNW_REMOTE_ONLY) -+#include "Gstep.c" -+#endif -diff --git a/src/aarch64/gen-offsets.c b/src/aarch64/gen-offsets.c -new file mode 100644 -index 0000000..eadc237 ---- /dev/null -+++ b/src/aarch64/gen-offsets.c -@@ -0,0 +1,68 @@ -+#include <stdio.h> -+#include <stddef.h> -+#include <ucontext.h> -+#include <asm/sigcontext.h> -+ -+#define UC(N,X) \ -+ printf ("#define LINUX_UC_" N "_OFF\t0x%X\n", offsetof (ucontext_t, X)) -+ -+#define SC(N,X) \ -+ printf ("#define LINUX_SC_" N "_OFF\t0x%X\n", offsetof (struct sigcontext, X)) -+ -+int -+main (void) -+{ -+ printf ( -+"/* Linux-specific definitions: */\n\n" -+ -+"/* Define various structure offsets to simplify cross-compilation. */\n\n" -+ -+"/* Offsets for AArch64 Linux "ucontext_t": */\n\n"); -+ -+ UC ("FLAGS", uc_flags); -+ UC ("LINK", uc_link); -+ UC ("STACK", uc_stack); -+ UC ("MCONTEXT", uc_mcontext); -+ UC ("SIGMASK", uc_sigmask); -+ -+ printf ("\n/* Offsets for AArch64 Linux "struct sigcontext": */\n\n"); -+ -+ SC ("R0", regs[0]); -+ SC ("R1", regs[1]); -+ SC ("R2", regs[2]); -+ SC ("R3", regs[3]); -+ SC ("R4", regs[4]); -+ SC ("R5", regs[5]); -+ SC ("R6", regs[6]); -+ SC ("R7", regs[7]); -+ SC ("R8", regs[8]); -+ SC ("R9", regs[9]); -+ SC ("R10", regs[10]); -+ SC ("R11", regs[11]); -+ SC ("R12", regs[12]); -+ SC ("R13", regs[13]); -+ SC ("R14", regs[14]); -+ SC ("R15", regs[15]); -+ SC ("R16", regs[16]); -+ SC ("R17", regs[17]); -+ SC ("R18", regs[18]); -+ SC ("R19", regs[19]); -+ SC ("R20", regs[20]); -+ SC ("R21", regs[21]); -+ SC ("R22", regs[22]); -+ SC ("R23", regs[23]); -+ SC ("R24", regs[24]); -+ SC ("R25", regs[25]); -+ SC ("R26", regs[26]); -+ SC ("R27", regs[27]); -+ SC ("R28", regs[28]); -+ SC ("R29", regs[29]); -+ SC ("R30", regs[30]); -+ SC ("R31", regs[31]); -+ -+ SC ("PC", pc); -+ SC ("SP", sp); -+ SC ("Fault", fault_address); -+ SC ("state", pstate); -+ return 0; -+} -diff --git a/src/aarch64/init.h b/src/aarch64/init.h -new file mode 100644 -index 0000000..0cedc1a ---- /dev/null -+++ b/src/aarch64/init.h -@@ -0,0 +1,127 @@ -+/* libunwind - a platform-independent unwind library -+ Copyright (C) 2012 Tommi Rantala tt.rantala@gmail.com -+ Copyright (C) 2013 Linaro Limited -+ -+This file is part of libunwind. -+ -+Permission is hereby granted, free of charge, to any person obtaining -+a copy of this software and associated documentation files (the -+"Software"), to deal in the Software without restriction, including -+without limitation the rights to use, copy, modify, merge, publish, -+distribute, sublicense, and/or sell copies of the Software, and to -+permit persons to whom the Software is furnished to do so, subject to -+the following conditions: -+ -+The above copyright notice and this permission notice shall be -+included in all copies or substantial portions of the Software. -+ -+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -+ -+#include "unwind_i.h" -+ -+static inline int -+common_init (struct cursor *c, unsigned use_prev_instr) -+{ -+ int ret, i; -+ -+ c->dwarf.loc[UNW_AARCH64_X0] = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_X0); -+ c->dwarf.loc[UNW_AARCH64_X1] = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_X1); -+ c->dwarf.loc[UNW_AARCH64_X2] = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_X2); -+ c->dwarf.loc[UNW_AARCH64_X3] = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_X3); -+ c->dwarf.loc[UNW_AARCH64_X4] = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_X4); -+ c->dwarf.loc[UNW_AARCH64_X5] = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_X5); -+ c->dwarf.loc[UNW_AARCH64_X6] = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_X6); -+ c->dwarf.loc[UNW_AARCH64_X7] = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_X7); -+ c->dwarf.loc[UNW_AARCH64_X8] = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_X8); -+ c->dwarf.loc[UNW_AARCH64_X9] = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_X9); -+ c->dwarf.loc[UNW_AARCH64_X10] = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_X10); -+ c->dwarf.loc[UNW_AARCH64_X11] = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_X11); -+ c->dwarf.loc[UNW_AARCH64_X12] = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_X12); -+ c->dwarf.loc[UNW_AARCH64_X13] = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_X13); -+ c->dwarf.loc[UNW_AARCH64_X14] = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_X14); -+ c->dwarf.loc[UNW_AARCH64_X15] = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_X15); -+ c->dwarf.loc[UNW_AARCH64_X16] = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_X16); -+ c->dwarf.loc[UNW_AARCH64_X17] = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_X17); -+ c->dwarf.loc[UNW_AARCH64_X18] = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_X18); -+ c->dwarf.loc[UNW_AARCH64_X19] = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_X19); -+ c->dwarf.loc[UNW_AARCH64_X20] = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_X20); -+ c->dwarf.loc[UNW_AARCH64_X21] = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_X21); -+ c->dwarf.loc[UNW_AARCH64_X22] = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_X22); -+ c->dwarf.loc[UNW_AARCH64_X23] = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_X23); -+ c->dwarf.loc[UNW_AARCH64_X24] = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_X24); -+ c->dwarf.loc[UNW_AARCH64_X25] = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_X25); -+ c->dwarf.loc[UNW_AARCH64_X26] = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_X26); -+ c->dwarf.loc[UNW_AARCH64_X27] = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_X27); -+ c->dwarf.loc[UNW_AARCH64_X28] = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_X28); -+ c->dwarf.loc[UNW_AARCH64_X29] = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_X29); -+ c->dwarf.loc[UNW_AARCH64_X30] = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_X30); -+ c->dwarf.loc[UNW_AARCH64_SP] = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_SP); -+ c->dwarf.loc[UNW_AARCH64_PC] = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_PC); -+ c->dwarf.loc[UNW_AARCH64_PSTATE] = DWARF_REG_LOC (&c->dwarf, -+ UNW_AARCH64_PSTATE); -+ c->dwarf.loc[UNW_AARCH64_V0] = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_V0); -+ c->dwarf.loc[UNW_AARCH64_V1] = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_V1); -+ c->dwarf.loc[UNW_AARCH64_V2] = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_V2); -+ c->dwarf.loc[UNW_AARCH64_V3] = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_V3); -+ c->dwarf.loc[UNW_AARCH64_V4] = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_V4); -+ c->dwarf.loc[UNW_AARCH64_V5] = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_V5); -+ c->dwarf.loc[UNW_AARCH64_V6] = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_V6); -+ c->dwarf.loc[UNW_AARCH64_V7] = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_V7); -+ c->dwarf.loc[UNW_AARCH64_V8] = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_V8); -+ c->dwarf.loc[UNW_AARCH64_V9] = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_V9); -+ c->dwarf.loc[UNW_AARCH64_V10] = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_V10); -+ c->dwarf.loc[UNW_AARCH64_V11] = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_V11); -+ c->dwarf.loc[UNW_AARCH64_V12] = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_V12); -+ c->dwarf.loc[UNW_AARCH64_V13] = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_V13); -+ c->dwarf.loc[UNW_AARCH64_V14] = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_V14); -+ c->dwarf.loc[UNW_AARCH64_V15] = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_V15); -+ c->dwarf.loc[UNW_AARCH64_V16] = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_V16); -+ c->dwarf.loc[UNW_AARCH64_V17] = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_V17); -+ c->dwarf.loc[UNW_AARCH64_V18] = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_V18); -+ c->dwarf.loc[UNW_AARCH64_V19] = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_V19); -+ c->dwarf.loc[UNW_AARCH64_V20] = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_V20); -+ c->dwarf.loc[UNW_AARCH64_V21] = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_V21); -+ c->dwarf.loc[UNW_AARCH64_V22] = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_V22); -+ c->dwarf.loc[UNW_AARCH64_V23] = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_V23); -+ c->dwarf.loc[UNW_AARCH64_V24] = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_V24); -+ c->dwarf.loc[UNW_AARCH64_V25] = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_V25); -+ c->dwarf.loc[UNW_AARCH64_V26] = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_V26); -+ c->dwarf.loc[UNW_AARCH64_V27] = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_V27); -+ c->dwarf.loc[UNW_AARCH64_V28] = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_V28); -+ c->dwarf.loc[UNW_AARCH64_V29] = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_V29); -+ c->dwarf.loc[UNW_AARCH64_V30] = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_V30); -+ c->dwarf.loc[UNW_AARCH64_V31] = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_V31); -+ -+ for (i = UNW_AARCH64_PSTATE + 1; i < UNW_AARCH64_V0; ++i) -+ c->dwarf.loc[i] = DWARF_NULL_LOC; -+ -+ ret = dwarf_get (&c->dwarf, c->dwarf.loc[UNW_AARCH64_PC], &c->dwarf.ip); -+ if (ret < 0) -+ return ret; -+ -+ ret = dwarf_get (&c->dwarf, c->dwarf.loc[UNW_AARCH64_SP], &c->dwarf.cfa); -+ if (ret < 0) -+ return ret; -+ -+ c->sigcontext_format = AARCH64_SCF_NONE; -+ c->sigcontext_addr = 0; -+ c->sigcontext_sp = 0; -+ c->sigcontext_pc = 0; -+ -+ c->dwarf.args_size = 0; -+ c->dwarf.ret_addr_column = 0; -+ c->dwarf.stash_frames = 0; -+ c->dwarf.use_prev_instr = use_prev_instr; -+ c->dwarf.pi_valid = 0; -+ c->dwarf.pi_is_dynamic = 0; -+ c->dwarf.hint = 0; -+ c->dwarf.prev_rs = 0; -+ -+ return 0; -+} -diff --git a/src/aarch64/is_fpreg.c b/src/aarch64/is_fpreg.c -new file mode 100644 -index 0000000..7c32693 ---- /dev/null -+++ b/src/aarch64/is_fpreg.c -@@ -0,0 +1,32 @@ -+/* libunwind - a platform-independent unwind library -+ Copyright (C) 2008 CodeSourcery -+ Copyright (C) 2013 Linaro Limited -+ -+This file is part of libunwind. -+ -+Permission is hereby granted, free of charge, to any person obtaining -+a copy of this software and associated documentation files (the -+"Software"), to deal in the Software without restriction, including -+without limitation the rights to use, copy, modify, merge, publish, -+distribute, sublicense, and/or sell copies of the Software, and to -+permit persons to whom the Software is furnished to do so, subject to -+the following conditions: -+ -+The above copyright notice and this permission notice shall be -+included in all copies or substantial portions of the Software. -+ -+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -+ -+#include "libunwind_i.h" -+ -+PROTECTED int -+unw_is_fpreg (int regnum) -+{ -+ return (regnum >= UNW_AARCH64_V0 && regnum <= UNW_AARCH64_V31); -+} -diff --git a/src/aarch64/offsets.h b/src/aarch64/offsets.h -new file mode 100644 -index 0000000..81aa74f ---- /dev/null -+++ b/src/aarch64/offsets.h -@@ -0,0 +1,49 @@ -+/* Linux-specific definitions: */ -+ -+/* Define various structure offsets to simplify cross-compilation. */ -+ -+/* Offsets for AArch64 Linux "ucontext_t": */ -+ -+#define LINUX_UC_FLAGS_OFF 0x0 -+#define LINUX_UC_LINK_OFF 0x8 -+#define LINUX_UC_STACK_OFF 0x10 -+#define LINUX_UC_SIGMASK_OFF 0x28 -+#define LINUX_UC_MCONTEXT_OFF 0xb0 -+ -+/* Offsets for AArch64 Linux "struct sigcontext": */ -+ -+#define LINUX_SC_FAULTADDRESS_OFF 0x00 -+#define LINUX_SC_X0_OFF 0x008 -+#define LINUX_SC_X1_OFF 0x010 -+#define LINUX_SC_X2_OFF 0x018 -+#define LINUX_SC_X3_OFF 0x020 -+#define LINUX_SC_X4_OFF 0x028 -+#define LINUX_SC_X5_OFF 0x030 -+#define LINUX_SC_X6_OFF 0x038 -+#define LINUX_SC_X7_OFF 0x040 -+#define LINUX_SC_X8_OFF 0x048 -+#define LINUX_SC_X9_OFF 0x050 -+#define LINUX_SC_X10_OFF 0x058 -+#define LINUX_SC_X11_OFF 0x060 -+#define LINUX_SC_X12_OFF 0x068 -+#define LINUX_SC_X13_OFF 0x070 -+#define LINUX_SC_X14_OFF 0x078 -+#define LINUX_SC_X15_OFF 0x080 -+#define LINUX_SC_X16_OFF 0x088 -+#define LINUX_SC_X17_OFF 0x090 -+#define LINUX_SC_X18_OFF 0x098 -+#define LINUX_SC_X19_OFF 0x0a0 -+#define LINUX_SC_X20_OFF 0x0a8 -+#define LINUX_SC_X21_OFF 0x0b0 -+#define LINUX_SC_X22_OFF 0x0b8 -+#define LINUX_SC_X23_OFF 0x0c0 -+#define LINUX_SC_X24_OFF 0x0c8 -+#define LINUX_SC_X25_OFF 0x0d0 -+#define LINUX_SC_X26_OFF 0x0d8 -+#define LINUX_SC_X27_OFF 0x0e0 -+#define LINUX_SC_X28_OFF 0x0e8 -+#define LINUX_SC_X29_OFF 0x0f0 -+#define LINUX_SC_X30_OFF 0x0f8 -+#define LINUX_SC_SP_OFF 0x100 -+#define LINUX_SC_PC_OFF 0x108 -+#define LINUX_SC_PSTATE_OFF 0x110 -diff --git a/src/aarch64/regname.c b/src/aarch64/regname.c -new file mode 100644 -index 0000000..8c97342 ---- /dev/null -+++ b/src/aarch64/regname.c -@@ -0,0 +1,106 @@ -+/* libunwind - a platform-independent unwind library -+ Copyright (C) 2012 Tommi Rantala tt.rantala@gmail.com -+ Copyright (C) 2013 Linaro Limited -+ -+This file is part of libunwind. -+ -+Permission is hereby granted, free of charge, to any person obtaining -+a copy of this software and associated documentation files (the -+"Software"), to deal in the Software without restriction, including -+without limitation the rights to use, copy, modify, merge, publish, -+distribute, sublicense, and/or sell copies of the Software, and to -+permit persons to whom the Software is furnished to do so, subject to -+the following conditions: -+ -+The above copyright notice and this permission notice shall be -+included in all copies or substantial portions of the Software. -+ -+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -+ -+#include "unwind_i.h" -+ -+static const char *const regname[] = -+ { -+ [UNW_AARCH64_X0] = "x0", -+ [UNW_AARCH64_X1] = "x1", -+ [UNW_AARCH64_X2] = "x2", -+ [UNW_AARCH64_X3] = "x3", -+ [UNW_AARCH64_X4] = "x4", -+ [UNW_AARCH64_X5] = "x5", -+ [UNW_AARCH64_X6] = "x6", -+ [UNW_AARCH64_X7] = "x7", -+ [UNW_AARCH64_X8] = "x8", -+ [UNW_AARCH64_X9] = "x9", -+ [UNW_AARCH64_X10] = "x10", -+ [UNW_AARCH64_X11] = "x11", -+ [UNW_AARCH64_X12] = "x12", -+ [UNW_AARCH64_X13] = "x13", -+ [UNW_AARCH64_X14] = "x14", -+ [UNW_AARCH64_X15] = "x15", -+ [UNW_AARCH64_X16] = "ip0", -+ [UNW_AARCH64_X17] = "ip1", -+ [UNW_AARCH64_X18] = "x18", -+ [UNW_AARCH64_X19] = "x19", -+ [UNW_AARCH64_X20] = "x20", -+ [UNW_AARCH64_X21] = "x21", -+ [UNW_AARCH64_X22] = "x22", -+ [UNW_AARCH64_X23] = "x23", -+ [UNW_AARCH64_X24] = "x24", -+ [UNW_AARCH64_X25] = "x25", -+ [UNW_AARCH64_X26] = "x26", -+ [UNW_AARCH64_X27] = "x27", -+ [UNW_AARCH64_X28] = "x28", -+ [UNW_AARCH64_X29] = "fp", -+ [UNW_AARCH64_X30] = "lr", -+ [UNW_AARCH64_SP] = "sp", -+ [UNW_AARCH64_PC] = "pc", -+ [UNW_AARCH64_V0] = "v0", -+ [UNW_AARCH64_V1] = "v1", -+ [UNW_AARCH64_V2] = "v2", -+ [UNW_AARCH64_V3] = "v3", -+ [UNW_AARCH64_V4] = "v4", -+ [UNW_AARCH64_V5] = "v5", -+ [UNW_AARCH64_V6] = "v6", -+ [UNW_AARCH64_V7] = "v7", -+ [UNW_AARCH64_V8] = "v8", -+ [UNW_AARCH64_V9] = "v9", -+ [UNW_AARCH64_V10] = "v10", -+ [UNW_AARCH64_V11] = "v11", -+ [UNW_AARCH64_V12] = "v12", -+ [UNW_AARCH64_V13] = "v13", -+ [UNW_AARCH64_V14] = "v14", -+ [UNW_AARCH64_V15] = "v15", -+ [UNW_AARCH64_V16] = "v16", -+ [UNW_AARCH64_V17] = "v17", -+ [UNW_AARCH64_V18] = "v18", -+ [UNW_AARCH64_V19] = "v19", -+ [UNW_AARCH64_V20] = "v20", -+ [UNW_AARCH64_V21] = "v21", -+ [UNW_AARCH64_V22] = "v22", -+ [UNW_AARCH64_V23] = "v23", -+ [UNW_AARCH64_V24] = "v24", -+ [UNW_AARCH64_V25] = "v25", -+ [UNW_AARCH64_V26] = "v26", -+ [UNW_AARCH64_V27] = "v27", -+ [UNW_AARCH64_V28] = "v28", -+ [UNW_AARCH64_V29] = "v29", -+ [UNW_AARCH64_V30] = "v30", -+ [UNW_AARCH64_V31] = "v31", -+ [UNW_AARCH64_FPSR] = "fpsr", -+ [UNW_AARCH64_FPCR] = "fpcr", -+ }; -+ -+PROTECTED const char * -+unw_regname (unw_regnum_t reg) -+{ -+ if (reg < (unw_regnum_t) ARRAY_SIZE (regname) && regname[reg] != NULL) -+ return regname[reg]; -+ else -+ return "???"; -+} -diff --git a/src/aarch64/siglongjmp.S b/src/aarch64/siglongjmp.S -new file mode 100644 -index 0000000..9985c4b ---- /dev/null -+++ b/src/aarch64/siglongjmp.S -@@ -0,0 +1,12 @@ -+ /* Dummy implementation for now. */ -+ -+ .global _UI_siglongjmp_cont -+ .global _UI_longjmp_cont -+ -+_UI_siglongjmp_cont: -+_UI_longjmp_cont: -+ ret -+#ifdef __linux__ -+ /* We do not need executable stack. */ -+ .section .note.GNU-stack,"",%progbits -+#endif -diff --git a/src/aarch64/unwind_i.h b/src/aarch64/unwind_i.h -new file mode 100644 -index 0000000..e4947a3 ---- /dev/null -+++ b/src/aarch64/unwind_i.h -@@ -0,0 +1,43 @@ -+/* libunwind - a platform-independent unwind library -+ Copyright (C) 2008 CodeSourcery -+ Copyright (C) 2013 Linaro Limited -+ -+This file is part of libunwind. -+ -+Permission is hereby granted, free of charge, to any person obtaining -+a copy of this software and associated documentation files (the -+"Software"), to deal in the Software without restriction, including -+without limitation the rights to use, copy, modify, merge, publish, -+distribute, sublicense, and/or sell copies of the Software, and to -+permit persons to whom the Software is furnished to do so, subject to -+the following conditions: -+ -+The above copyright notice and this permission notice shall be -+included in all copies or substantial portions of the Software. -+ -+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -+ -+#ifndef unwind_i_h -+#define unwind_i_h -+ -+#include <stdint.h> -+ -+#include <libunwind-aarch64.h> -+ -+#include "libunwind_i.h" -+ -+#define aarch64_lock UNW_OBJ(lock) -+#define aarch64_local_resume UNW_OBJ(local_resume) -+#define aarch64_local_addr_space_init UNW_OBJ(local_addr_space_init) -+ -+extern void aarch64_local_addr_space_init (void); -+extern int aarch64_local_resume (unw_addr_space_t as, unw_cursor_t *cursor, -+ void *arg); -+ -+#endif /* unwind_i_h */ -diff --git a/src/coredump/_UCD_access_reg_linux.c b/src/coredump/_UCD_access_reg_linux.c -index bc360ad..9dc0904 100644 ---- a/src/coredump/_UCD_access_reg_linux.c -+++ b/src/coredump/_UCD_access_reg_linux.c -@@ -39,7 +39,10 @@ _UCD_access_reg (unw_addr_space_t as, - return -UNW_EINVAL; - } - --#if defined(UNW_TARGET_ARM) -+#if defined(UNW_TARGET_AARCH64) -+ if (regnum < 0 || regnum >= UNW_AARCH64_FPCR) -+ goto badreg; -+#elif defined(UNW_TARGET_ARM) - if (regnum < 0 || regnum >= 16) - goto badreg; - #elif defined(UNW_TARGET_SH) -diff --git a/src/ptrace/_UPT_reg_offset.c b/src/ptrace/_UPT_reg_offset.c -index 765f7d5..ced4896 100644 ---- a/src/ptrace/_UPT_reg_offset.c -+++ b/src/ptrace/_UPT_reg_offset.c -@@ -1,6 +1,7 @@ - /* libunwind - a platform-independent unwind library - Copyright (C) 2003-2004 Hewlett-Packard Co - Contributed by David Mosberger-Tang davidm@hpl.hp.com -+ Copyright (C) 2013 Linaro Limited - - This file is part of libunwind. - -@@ -501,6 +502,41 @@ const int _UPT_reg_offset[UNW_REG_LAST + 1] = - [UNW_ARM_R15] = 0x3c, - #elif defined(UNW_TARGET_MIPS) - #elif defined(UNW_TARGET_SH) -+#elif defined(UNW_TARGET_AARCH64) -+ [UNW_AARCH64_X0] = 0x00, -+ [UNW_AARCH64_X1] = 0x08, -+ [UNW_AARCH64_X2] = 0x10, -+ [UNW_AARCH64_X3] = 0x18, -+ [UNW_AARCH64_X4] = 0x20, -+ [UNW_AARCH64_X5] = 0x28, -+ [UNW_AARCH64_X6] = 0x30, -+ [UNW_AARCH64_X7] = 0x38, -+ [UNW_AARCH64_X8] = 0x40, -+ [UNW_AARCH64_X9] = 0x48, -+ [UNW_AARCH64_X10] = 0x50, -+ [UNW_AARCH64_X11] = 0x58, -+ [UNW_AARCH64_X12] = 0x60, -+ [UNW_AARCH64_X13] = 0x68, -+ [UNW_AARCH64_X14] = 0x70, -+ [UNW_AARCH64_X15] = 0x78, -+ [UNW_AARCH64_X16] = 0x80, -+ [UNW_AARCH64_X17] = 0x88, -+ [UNW_AARCH64_X18] = 0x90, -+ [UNW_AARCH64_X19] = 0x98, -+ [UNW_AARCH64_X20] = 0xa0, -+ [UNW_AARCH64_X21] = 0xa8, -+ [UNW_AARCH64_X22] = 0xb0, -+ [UNW_AARCH64_X23] = 0xb8, -+ [UNW_AARCH64_X24] = 0xc0, -+ [UNW_AARCH64_X25] = 0xc8, -+ [UNW_AARCH64_X26] = 0xd0, -+ [UNW_AARCH64_X27] = 0xd8, -+ [UNW_AARCH64_X28] = 0xe0, -+ [UNW_AARCH64_X29] = 0xe8, -+ [UNW_AARCH64_X30] = 0xf0, -+ [UNW_AARCH64_SP] = 0xf8, -+ [UNW_AARCH64_PC] = 0x100, -+ [UNW_AARCH64_PSTATE] = 0x108 - #else - # error Fix me. - #endif diff --git a/libunwind/patches/libunwind-disable-setjmp.patch b/libunwind/patches/libunwind-disable-setjmp.patch deleted file mode 100644 index a463f49bf..000000000 --- a/libunwind/patches/libunwind-disable-setjmp.patch +++ /dev/null @@ -1,185 +0,0 @@ -At least x86_64 version cannot work, src/setjmp/setjmp.c and -src/setjmp/sigsetjmp.c are not even compiled, src/x86_64/longjmp.S does not -match src/setjmp/setjmp.c + include/tdep-x86_64/jmpbuf.h . - -google-perftools link only with libunwind.so.7 . - -diff --git a/src/Makefile.am b/src/Makefile.am -index adfbef3..08d2870 100644 ---- a/src/Makefile.am -+++ b/src/Makefile.am -@@ -1,5 +1,5 @@ - SOVERSION=8:1:0 # See comments at end of file. --SETJMP_SO_VERSION=0:0:0 -+#SETJMP_SO_VERSION=0:0:0 - COREDUMP_SO_VERSION=0:0:0 - # - # Don't link with start-files since we don't use any constructors/destructors: -@@ -22,8 +22,8 @@ pkgconfigdir = $(libdir)/pkgconfig - pkgconfig_DATA = libunwind-generic.pc - - if !REMOTE_ONLY --pkgconfig_DATA += unwind/libunwind.pc ptrace/libunwind-ptrace.pc \ -- setjmp/libunwind-setjmp.pc -+pkgconfig_DATA += unwind/libunwind.pc ptrace/libunwind-ptrace.pc -+# setjmp/libunwind-setjmp.pc - endif - - if BUILD_COREDUMP -@@ -61,8 +61,8 @@ libunwind_coredump_la_LDFLAGS = $(COMMON_SO_LDFLAGS) \ - noinst_HEADERS += coredump/_UCD_internal.h - - ### libunwind-setjmp: --libunwind_setjmp_la_LDFLAGS = $(COMMON_SO_LDFLAGS) \ -- -version-info $(SETJMP_SO_VERSION) -+#libunwind_setjmp_la_LDFLAGS = $(COMMON_SO_LDFLAGS) \ -+# -version-info $(SETJMP_SO_VERSION) - - if USE_ELF32 - LIBUNWIND_ELF = libunwind-elf32.la -@@ -74,12 +74,12 @@ if USE_ELFXX - LIBUNWIND_ELF = libunwind-elfxx.la - endif - --libunwind_setjmp_la_LIBADD = $(LIBUNWIND_ELF) \ -- libunwind-$(arch).la \ -- libunwind.la -lc --libunwind_setjmp_la_SOURCES = setjmp/longjmp.c \ -- setjmp/siglongjmp.c --noinst_HEADERS += setjmp/setjmp_i.h -+#libunwind_setjmp_la_LIBADD = $(LIBUNWIND_ELF) \ -+# libunwind-$(arch).la \ -+# libunwind.la -lc -+#libunwind_setjmp_la_SOURCES = setjmp/longjmp.c \ -+# setjmp/siglongjmp.c -+#noinst_HEADERS += setjmp/setjmp_i.h - - ### libunwind: - libunwind_la_LIBADD = -@@ -428,7 +428,7 @@ if ARCH_ARM - if !REMOTE_ONLY - libunwind_arm_la_LIBADD += libunwind.la -lc - endif -- libunwind_setjmp_la_SOURCES += arm/siglongjmp.S -+# libunwind_setjmp_la_SOURCES += arm/siglongjmp.S - else - if ARCH_IA64 - BUILT_SOURCES = Gcursor_i.h Lcursor_i.h -@@ -449,8 +449,8 @@ Lcursor_i.h: mk_Lcursor_i.s - if !REMOTE_ONLY - libunwind_ia64_la_LIBADD += libunwind.la -lc - endif -- libunwind_setjmp_la_SOURCES += ia64/setjmp.S ia64/sigsetjmp.S \ -- ia64/longjmp.S ia64/siglongjmp.S -+# libunwind_setjmp_la_SOURCES += ia64/setjmp.S ia64/sigsetjmp.S \ -+# ia64/longjmp.S ia64/siglongjmp.S - else - if ARCH_HPPA - lib_LTLIBRARIES += libunwind-hppa.la -@@ -462,7 +462,7 @@ if ARCH_HPPA - if !REMOTE_ONLY - libunwind_hppa_la_LIBADD += libunwind.la -lc - endif -- libunwind_setjmp_la_SOURCES += hppa/siglongjmp.S -+# libunwind_setjmp_la_SOURCES += hppa/siglongjmp.S - else - if ARCH_MIPS - lib_LTLIBRARIES += libunwind-mips.la -@@ -474,7 +474,7 @@ if ARCH_MIPS - if !REMOTE_ONLY - libunwind_mips_la_LIBADD += libunwind.la -lc - endif -- libunwind_setjmp_la_SOURCES += mips/siglongjmp.S -+# libunwind_setjmp_la_SOURCES += mips/siglongjmp.S - else - if ARCH_X86 - lib_LTLIBRARIES += libunwind-x86.la -@@ -486,7 +486,7 @@ if ARCH_X86 - if !REMOTE_ONLY - libunwind_x86_la_LIBADD += libunwind.la -lc - endif -- libunwind_setjmp_la_SOURCES += x86/longjmp.S x86/siglongjmp.S -+# libunwind_setjmp_la_SOURCES += x86/longjmp.S x86/siglongjmp.S - else - if ARCH_X86_64 - lib_LTLIBRARIES += libunwind-x86_64.la -@@ -498,7 +498,7 @@ if ARCH_X86_64 - if !REMOTE_ONLY - libunwind_x86_64_la_LIBADD += libunwind.la -lc - endif -- libunwind_setjmp_la_SOURCES += x86_64/longjmp.S x86_64/siglongjmp.S -+# libunwind_setjmp_la_SOURCES += x86_64/longjmp.S x86_64/siglongjmp.S - else - if ARCH_PPC32 - lib_LTLIBRARIES += libunwind-ppc32.la -@@ -510,7 +510,7 @@ if ARCH_PPC32 - if !REMOTE_ONLY - libunwind_ppc32_la_LIBADD += libunwind.la -lc - endif -- libunwind_setjmp_la_SOURCES += ppc/longjmp.S ppc/siglongjmp.S -+# libunwind_setjmp_la_SOURCES += ppc/longjmp.S ppc/siglongjmp.S - else - if ARCH_PPC64 - lib_LTLIBRARIES += libunwind-ppc64.la -@@ -522,7 +522,7 @@ if ARCH_PPC64 - if !REMOTE_ONLY - libunwind_ppc64_la_LIBADD += libunwind.la -lc - endif -- libunwind_setjmp_la_SOURCES += ppc/longjmp.S ppc/siglongjmp.S -+# libunwind_setjmp_la_SOURCES += ppc/longjmp.S ppc/siglongjmp.S - else - if ARCH_SH - lib_LTLIBRARIES += libunwind-sh.la -@@ -534,7 +534,7 @@ if ARCH_SH - if !REMOTE_ONLY - libunwind_sh_la_LIBADD += libunwind.la -lc - endif -- libunwind_setjmp_la_SOURCES += sh/siglongjmp.S -+# libunwind_setjmp_la_SOURCES += sh/siglongjmp.S - - endif # ARCH_SH - endif # ARCH_PPC64 -@@ -549,7 +549,7 @@ endif # ARCH_ARM - # libunwind-setjmp depends on libunwind-$(arch). Therefore must be added - # at the end. - if !REMOTE_ONLY --lib_LTLIBRARIES += libunwind-setjmp.la -+#lib_LTLIBRARIES += libunwind-setjmp.la - endif - - # -diff --git a/tests/Makefile.am b/tests/Makefile.am -index a367eed..3f47e80 100644 ---- a/tests/Makefile.am -+++ b/tests/Makefile.am -@@ -45,7 +45,7 @@ endif #!ARCH_IA64 - Gtest-dyn1 Ltest-dyn1 \ - Gtest-trace Ltest-trace \ - test-async-sig test-flush-cache test-init-remote \ -- test-mem test-setjmp test-ptrace Ltest-varargs \ -+ test-mem test-ptrace Ltest-varargs \ - Ltest-nomalloc Ltest-nocalloc Lrs-race - noinst_PROGRAMS_cdep = forker crasher mapper test-ptrace-misc \ - Gperf-simple Lperf-simple -@@ -134,8 +134,8 @@ if USE_ELFXX - LIBUNWIND_ELF = $(top_builddir)/src/libunwind-elfxx.la - endif - --LIBUNWIND_setjmp = $(top_builddir)/src/libunwind-setjmp.la \ -- $(LIBUNWIND_ELF) $(LIBUNWIND) -+#LIBUNWIND_setjmp = $(top_builddir)/src/libunwind-setjmp.la \ -+# $(LIBUNWIND_ELF) $(LIBUNWIND) - - test_async_sig_LDADD = $(LIBUNWIND_local) -lpthread - test_flush_cache_LDADD = $(LIBUNWIND_local) -@@ -172,8 +172,8 @@ Lperf_simple_LDADD = $(LIBUNWIND_local) - Ltest_trace_LDADD = $(LIBUNWIND_local) - Lperf_trace_LDADD = $(LIBUNWIND_local) - --test_setjmp_LDADD = $(LIBUNWIND_setjmp) --ia64_test_setjmp_LDADD = $(LIBUNWIND_setjmp) -+#test_setjmp_LDADD = $(LIBUNWIND_setjmp) -+#ia64_test_setjmp_LDADD = $(LIBUNWIND_setjmp) - - if BUILD_COREDUMP - test_coredump_unwind_LDADD = $(LIBUNWIND_coredump) $(LIBUNWIND) diff --git a/luajit/luajit.nm b/luajit/luajit.nm new file mode 100644 index 000000000..ac94acd63 --- /dev/null +++ b/luajit/luajit.nm @@ -0,0 +1,57 @@ +############################################################################### +# IPFire.org - An Open Source Firewall Solution # +# Copyright (C) - IPFire Development Team info@ipfire.org # +############################################################################### + +name = luajit +version = 2.1.0 +release = 0.1-beta3-%{commit} +thisapp = luajit-2.0-%{commit} + +# LuaJIT no longer tags releases: +# https://github.com/LuaJIT/LuaJIT/issues/665#issuecomment-784452583 +commit = a04480e + +groups = System/Libraries +url = https://luajit.org/ +license = MIT +summary = A Just-In-Time Compiler for Lua + +description + LuaJIT is a Just-In-Time Compiler (JIT) for the Lua programming language. + Lua is a powerful, dynamic and light-weight programming language. + It may be embedded or used as a general-purpose, stand-alone language. +end + +source_dl = https://repo.or.cz/luajit-2.0.git/snapshot/ +sources = %{commit}.tar.gz + +build + build + make amalg PREFIX="%{prefix}" BUILDMODE=dynamic TARGET_STRIP=" @:" + end + + install + make install \ + DESTDIR="%{BUILDROOT}" \ + PREFIX="%{prefix}" \ + INSTALL_BIN="%{BUILDROOT}%{bindir}" \ + INSTALL_LIB="%{BUILDROOT}%{libdir}" \ + INSTALL_SHARE="%{BUILDROOT}%{datadir}" \ + INSTALL_DEFINC="%{BUILDROOT}%{includedir}/luajit-2.1" + + ln -svf luajit-2.1.0-beta3 "%{BUILDROOT}%{bindir}/luajit" + end +end + +packages + package %{name} + + package %{name}-devel + template DEVEL + end + + package %{name}-debuginfo + template DEBUGINFO + end +end diff --git a/joe/joe.nm b/nghttp2/nghttp2.nm similarity index 50% rename from joe/joe.nm rename to nghttp2/nghttp2.nm index f11a48d11..261012ef3 100644 --- a/joe/joe.nm +++ b/nghttp2/nghttp2.nm @@ -3,31 +3,34 @@ # Copyright (C) - IPFire Development Team info@ipfire.org # ###############################################################################
-name = joe -version = 4.3 +name = nghttp2 +version = 1.51.0 release = 1
-groups = Applications/Editors -url = http://joe-editor.sourceforge.net/ -license = GPLv2+ -summary = A small text editor similar to wordstar in matter of usage. +groups = System/Libraries +url = https://nghttp2.org/ +license = MIT +summary = Framing layer of HTTP/2 is implemented as a reusable C library
description - Joe is a small and friendly text editor which provides the look \ - and feel of the good old wordstar. + nghttp2 is an implementation of HTTP/2 and its header compression + algorithm HPACK in C. end
-source_dl = https://sourceforge.net/projects/joe-editor/files/JOE%20sources/%%7Bthisapp%... +source_dl = https://github.com/nghttp2/nghttp2/releases/download/v%%7Bversion%7D/
build - requires - ncurses-devel - end + configure_options += \ + --enable-lib-only end
packages package %{name}
+ package %{name}-devel + template DEVEL + end + package %{name}-debuginfo template DEBUGINFO end diff --git a/p11-kit/p11-kit.nm b/p11-kit/p11-kit.nm index 3b5945c59..5470a6136 100644 --- a/p11-kit/p11-kit.nm +++ b/p11-kit/p11-kit.nm @@ -4,13 +4,13 @@ ###############################################################################
name = p11-kit -version = 0.23.2 +version = 0.24.1 release = 1
groups = System/Libraries -url = http://p11-glue.freedesktop.org/p11-kit.html +url = https://p11-glue.github.io/p11-glue/p11-kit.html license = BSD -summary = Provides a way to load and enumerate PKCS#11 modules. +summary = Provides a way to load and enumerate PKCS#11 modules
description Provides a way to load and enumerate PKCS#11 modules. Provides a standard @@ -21,12 +21,26 @@ description components or libraries living in the same process. end
-source_dl = http://p11-glue.freedesktop.org/releases/ +source_dl = https://github.com/p11-glue/p11-kit/releases/download/%%7Bversion%7D/ +sources = %{thisapp}.tar.xz
build requires + bash-completion-devel libffi-devel >= 3.0.0 libtasn1-devel >= 2.3 + meson + ninja + systemd-devel + end + + build + %{meson} + %{meson_build} + end + + install + %{meson_install} end end
diff --git a/perl/patches/perl-USE_MM_LD_RUN_PATH.patch b/perl/patches/perl-USE_MM_LD_RUN_PATH.patch index 5b86af84e..c982eb4d9 100644 --- a/perl/patches/perl-USE_MM_LD_RUN_PATH.patch +++ b/perl/patches/perl-USE_MM_LD_RUN_PATH.patch @@ -1,7 +1,7 @@ diff -up perl-5.14.0/cpan/ExtUtils-MakeMaker/lib/ExtUtils/Liblist.pm.usem perl-5.14.0/cpan/ExtUtils-MakeMaker/lib/ExtUtils/Liblist.pm --- perl-5.14.0/cpan/ExtUtils-MakeMaker/lib/ExtUtils/Liblist.pm.usem 2011-05-08 05:10:08.000000000 +0200 +++ perl-5.14.0/cpan/ExtUtils-MakeMaker/lib/ExtUtils/Liblist.pm 2011-05-17 11:14:22.169115984 +0200 -@@ -88,6 +88,11 @@ libraries. LD_RUN_PATH is a colon separ +@@ -89,6 +89,11 @@ libraries. LD_RUN_PATH is a colon separ in LDLOADLIBS. It is passed as an environment variable to the process that links the shared library.
@@ -16,16 +16,16 @@ diff -up perl-5.14.0/cpan/ExtUtils-MakeMaker/lib/ExtUtils/Liblist.pm.usem perl-5 diff -up perl-5.14.0/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker.pm.usem perl-5.14.0/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker.pm --- perl-5.14.0/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker.pm.usem 2011-05-08 05:10:08.000000000 +0200 +++ perl-5.14.0/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker.pm 2011-05-17 13:39:26.912586030 +0200 -@@ -278,7 +278,7 @@ sub full_setup { - PERL_SRC PERM_DIR PERM_RW PERM_RWX MAGICXS - PL_FILES PM PM_FILTER PMLIBDIRS PMLIBPARENTDIRS POLLUTE PPM_INSTALL_EXEC PPM_UNINSTALL_EXEC - PPM_INSTALL_SCRIPT PPM_UNINSTALL_SCRIPT PREREQ_FATAL PREREQ_PM PREREQ_PRINT PRINT_PREREQ -- SIGN SKIP TEST_REQUIRES TYPEMAPS UNINST VERSION VERSION_FROM XS XSOPT XSPROTOARG -+ SIGN SKIP TEST_REQUIRES TYPEMAPS UNINST USE_MM_LD_RUN_PATH VERSION VERSION_FROM XS XSOPT XSPROTOARG - XS_VERSION clean depend dist dynamic_lib linkext macro realclean - tool_autosplit +@@ -317,7 +317,7 @@ sub full_setup { + PERM_DIR PERM_RW PERM_RWX MAGICXS + PL_FILES PM PM_FILTER PMLIBDIRS PMLIBPARENTDIRS POLLUTE + PREREQ_FATAL PREREQ_PM PREREQ_PRINT PRINT_PREREQ PUREPERL_ONLY +- SIGN SKIP TEST_REQUIRES TYPEMAPS UNINST VERSION VERSION_FROM XS ++ SIGN SKIP TEST_REQUIRES TYPEMAPS UNINST USE_MM_LD_RUN_PATH VERSION VERSION_FROM XS + XSBUILD XSMULTI XSOPT XSPROTOARG XS_VERSION + clean depend dist dynamic_lib linkext macro realclean tool_autosplit
-@@ -422,7 +422,27 @@ sub new { +@@ -501,7 +501,27 @@ sub new { # PRINT_PREREQ is RedHatism. if ("@ARGV" =~ /\bPRINT_PREREQ\b/) { $self->_PRINT_PREREQ; @@ -53,8 +53,8 @@ diff -up perl-5.14.0/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker.pm.usem perl + };
print "MakeMaker (v$VERSION)\n" if $Verbose; - if (-f "MANIFEST" && ! -f "Makefile" && ! $ENV{PERL_CORE}){ -@@ -2352,6 +2372,40 @@ precedence. A typemap in the current di + if (-f "MANIFEST" && ! -f "Makefile" && ! $UNDER_CORE){ +@@ -2821,6 +2841,40 @@ precedence. A typemap in the current di precedence, even if it isn't listed in TYPEMAPS. The default system typemap has lowest precedence.
@@ -98,12 +98,12 @@ diff -up perl-5.14.0/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker.pm.usem perl diff -up perl-5.14.0/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Unix.pm.usem perl-5.14.0/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Unix.pm --- perl-5.14.0/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Unix.pm.usem 2011-05-08 05:10:08.000000000 +0200 +++ perl-5.14.0/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Unix.pm 2011-05-17 11:14:22.172115972 +0200 -@@ -944,7 +944,7 @@ $(INST_DYNAMIC): $(OBJECT) $(MYEXTLIB) $ +@@ -1045,7 +1045,7 @@ $(INST_DYNAMIC): $(OBJECT) $(MYEXTLIB) $ }
my $ld_run_path_shell = ""; - if ($self->{LD_RUN_PATH} ne "") { + if (($self->{LD_RUN_PATH} ne "") && ($self->{USE_MM_LD_RUN_PATH})) { - $ld_run_path_shell = 'LD_RUN_PATH="$(LD_RUN_PATH)" '; + $ld_run_path_shell = 'LD_RUN_PATH="$(LD_RUN_PATH)" '; }
diff --git a/perl/patches/perl-disable_test_hosts.patch b/perl/patches/perl-disable_test_hosts.patch deleted file mode 100644 index dc86a3462..000000000 --- a/perl/patches/perl-disable_test_hosts.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff -up perl-5.12.0/cpan/libnet/Net/Config.pm.disable perl-5.12.0/cpan/libnet/Net/Config.pm ---- perl-5.12.0/cpan/libnet/Net/Config.pm.disable 2010-01-18 19:52:49.000000000 +0100 -+++ perl-5.12.0/cpan/libnet/Net/Config.pm 2010-04-13 16:03:50.090770813 +0200 -@@ -29,7 +29,7 @@ eval { local $SIG{__DIE__}; require Net: - ftp_firewall => undef, - ftp_ext_passive => 1, - ftp_int_passive => 1, -- test_hosts => 1, -+ test_hosts => 0, - test_exist => 1, - ); - diff --git a/perl/perl.nm b/perl/perl.nm index 71537a217..3216986fa 100644 --- a/perl/perl.nm +++ b/perl/perl.nm @@ -4,12 +4,15 @@ ###############################################################################
name = perl -version = 5.20.3 +ver_major = 5 +ver_minor = 36 +ver_plevel = 0 +version = %{ver_major}.%{ver_minor}.%{ver_plevel} + # Never reset release in this package, just increase. -release = 15 +release = 1
-perl_epoch = 2 -thisver = %{perl_epoch}:%{version}-%{_release} +thisver = %{version}-%{_release}
maintainer = Michael Tremer michael.tremer@ipfire.org groups = Development/Languages @@ -33,6 +36,7 @@ source_dl = http://www.cpan.org/src/5.0/
build requires + bzip2-devel gcc-c++ gdbm-devel iana-etc @@ -47,6 +51,11 @@ build # So we need to pass it explicitely. CFLAGS += -fstack-protector-all
+ export FILTER_PERL_REQUIRES = \ + VMS:: \ + Mac:: \ + unicore::Name + prepare_cmds sed -i 's/command /command[ -]/' makedepend.SH end @@ -66,17 +75,17 @@ build -Dcf_by="%{DISTRO_VENDOR}" \ -Dprefix=/usr \ -Dvendorprefix=/usr \ - -Dsiteprefix="/usr/local" \ - -Dsitelib="/usr/local/share/perl5" \ - -Dsitearch="/usr/local/lib/perl5" \ - -Dprivlib="/usr/share/perl5" \ - -Dvendorlib="/usr/share/perl5/vendor_perl" \ + -Dsiteprefix="%{libdir}" \ + -Dsitelib="%{libdir}/perl5/site_perl" \ + -Dsitearch="%{libdir}/perl5/site_perl" \ + -Dprivlib="%{datadir}/perl5" \ + -Dvendorlib="%{datadir}/perl5/vendor_perl" \ -Darchlib="%{libdir}/perl5" \ -Dvendorarch="%{libdir}/perl5/vendor_perl" \ -Darchname=%{arch}-linux-thread-multi \ - -Dpager="/usr/bin/less -isr" \ - -Dman1dir=/usr/share/man/man1 \ - -Dman3dir=/usr/share/man/man3 \ + -Dpager="%{bindir}/less -isr" \ + -Dman1dir=%{mandir}/man1 \ + -Dman3dir=%{mandir}/man3 \ -Duseshrplib \ -Dusethreads \ -Duseithreads \ @@ -99,26 +108,37 @@ build -Ud_setprotoent_r_proto \ -Ud_endservent_r_proto \ -Ud_setservent_r_proto \ - -Dscriptdir="/usr/bin" + -Dscriptdir="%{bindir}"
if "%{DISTRO_ARCH}" == "x86_64" configure_options += \ - -Dlibpth="/usr/local/lib64 /lib64 %{prefix}/lib64" + -Dlibpth="/lib64 %{prefix}/lib64" end
build + # Do not use internal compressing libraries. + export BUILD_ZLIB=False + export BUILD_BZIP2=0 + + # Configure Compress::Zlib to use system zlib sed -i -e "s|BUILD_ZLIB\s*= True|BUILD_ZLIB = False|" \ -e "s|INCLUDE\s*= ./zlib-src|INCLUDE = /usr/include|" \ -e "s|LIB\s*= ./zlib-src|LIB = %{libdir}|" \ cpan/Compress-Raw-Zlib/config.in
+ # Ensure that we never accidentally bundle zlib or bzip2 + rm -rf cpan/Compress-Raw-Zlib/zlib-src + rm -rf cpan/Compress-Raw-Bzip2/bzip2-src + sed -i '/(bzip2|zlib)-src/d' MANIFEST + sh ./Configure %{configure_options}
make %{PARALLELISMFLAGS} end
test - make test || true + # Net::Ping test is known to fail. + #make test || true end
install_cmds @@ -129,7 +149,6 @@ end
quality-agent whitelist_rpath - /%{lib} %{libdir} %{libdir}/perl5/CORE end @@ -137,23 +156,27 @@ end
# This variable contains the constant version string # of this perl package. -perl_requires := %{name} = %{thisver} +perl_version = %{ver_major}.%{ver_minor}.%{ver_plevel}
packages package perl - # Increase epoch because of automatic dependencies. - epoch = 2 - requires perl-libs = %{version}-%{_release} end
+ conflicts + perl = 2:5.20.3-15 + end + + obsoletes + perl = 2:5.20.3-15 + end + provides + perl(%{ver_major}) + # Compat provides - perl(:MODULE_COMPAT_5.20.3) - perl(:MODULE_COMPAT_5.20.2) - perl(:MODULE_COMPAT_5.20.1) - perl(:MODULE_COMPAT_5.20.0) + perl(:MODULE_COMPAT_5.36.0)
# Threading provides perl(:WITH_ITHREADS) @@ -166,67 +189,43 @@ packages perl(:WITH_PERLIO)
# File provides - perl(abbrev.pl) - perl(assert.pl) - perl(bigfloat.pl) - perl(bigint.pl) - perl(bigrat.pl) - perl(bytes_heavy.pl) - perl(cacheout.pl) - perl(complete.pl) - perl(ctime.pl) - perl(dotsh.pl) - perl(dumpvar.pl) - perl(exceptions.pl) - perl(fastcwd.pl) - perl(find.pl) - perl(finddepth.pl) - perl(flush.pl) - perl(ftp.pl) - perl(getcwd.pl) - perl(getopt.pl) - perl(getopts.pl) - perl(hostname.pl) - perl(importenv.pl) - perllook.pl) - perl(newgetopt.pl) - perl(open2.pl) - perl(open3.pl) - perl(perl5db.pl) - perl(pwd.pl) - perl(shellwords.pl) - perl(stat.pl) - perl(syslog.pl) - perl(tainted.pl) - perl(termcap.pl) - perl(timelocal.pl) - perl(utf8_heavy.pl) - perl(validate.pl) - perl(File::Basename) - perl(strict) - perl(vars) - end - - filter_requires - DBIx - InternetConfig - Mac:: - NDBM_File - Tk - unicore::Name - VMS:: - end - - obsoletes - perl-Archive-Extract - perl-Class-ISA - perl-CPANPLUS - perl-Log-Message - perl-Log-Message-Simple - perl-Module-Plugable - perl-Object-Accessor - perl-Term-UI - perl-Version-Requirements + #perl(abbrev.pl) + #perl(assert.pl) + #perl(bigfloat.pl) + #perl(bigint.pl) + #perl(bigrat.pl) + #perl(bytes_heavy.pl) + #perl(cacheout.pl) + #perl(complete.pl) + #perl(ctime.pl) + #perl(dotsh.pl) + #perl(dumpvar.pl) + #perl(exceptions.pl) + #perl(fastcwd.pl) + #perl(find.pl) + #perl(finddepth.pl) + #perl(flush.pl) + #perl(ftp.pl) + #perl(getcwd.pl) + #perl(getopt.pl) + #perl(getopts.pl) + #perl(hostname.pl) + #perl(importenv.pl) + #perl(look.pl) + #perl(newgetopt.pl) + #perl(open2.pl) + #perl(open3.pl) + #perl(perl5db.pl) + #perl(pwd.pl) + #perl(shellwords.pl) + #perl(stat.pl) + #perl(syslog.pl) + #perl(tainted.pl) + #perl(termcap.pl) + #perl(timelocal.pl) + #perl(utf8_heavy.pl) + #perl(validate.pl) + #perl(strict) end end
@@ -238,6 +237,7 @@ packages end
files + %{libdir}/libperl.* %{libdir}/perl5/CORE/libperl.so end end @@ -245,104 +245,60 @@ packages package perl-devel template DEVEL
- files - /usr/bin/enc2xs - /usr/share/man/man1/enc2xs* - /usr/share/perl5/Encode/ - /usr/bin/h2xs - /usr/share/man/man1/h2xs* - /usr/bin/libnetcfg - /usr/share/man/man1/libnetcfg* - /usr/bin/perlivp - /usr/share/man/man1/perlivp* - %{libdir}/perl5/CORE/*.h - /usr/bin/xsubpp - /usr/share/man/man1/xsubpp* - /usr/share/man/man1/perlxs* - end - end - - #package perl-tests - # summary = Testsuite to check your Perl installation. - # description-perl-tests - # This package contains the test suite included with perl %{thisver}. - # Install this if you want to test your Perl installation (binary and core - # modules). - # end - # - # files - # %{libdir}/perl5-tests - # end - #end - - package perl-App-a2p - epoch = 0 - version = 1.000 - - summary = Awk to Perl translator. - description - This package delivers a2p tool which takes an awk script specified on the - command line and produces a comparable Perl script. - end - - requires - %{perl_requires} - end - - files - %{bindir}/a2p - %{datadir}/perl5/pod/a2p.pod - %{mandir}/man1/a2p.1* - end - end - - package perl-App-find2perl - epoch = 0 - version = 0.001 - arch = noarch - - summary = Translate find command lines to Perl code. - description - This package delivers find2perl tool which is a little translator to convert - find command lines to equivalent Perl code. - end - requires - %{perl_requires} + perl = %{perl_version} end
files - %{bindir}/find2perl - %{mandir}/man1/find2perl.1* + %{bindir}/enc2xs + %{mandir}/man1/enc2xs* + %{datadir}/perl5/Encode/ + %{datadir}/perl5/ExtUtils + %{bindir}/h2xs + %{mandir}/man1/h2xs* + %{bindir}/libnetcfg + %{mandir}/man1/libnetcfg* + %{bindir}/perlivp + %{mandir}/man1/perlivp* + %{libdir}/perl5/CORE/*.h + %{bindir}/xsubpp + %{mandir}/man1/xsubpp* + %{mandir}/man1/perlxs* end end
- package perl-App-s2p - epoch = 0 - version = 1.000 + package perl-utils + version = %{perl_version} arch = noarch
- summary = Convert sed scripts to Perl programm. + summary = Utilities packaged with the Perl distribution. description - This package delivers the s2p tool, which converts sed scripts to - Perl programms. + Several utilities which come with Perl distribution like h2ph, perlbug, + perlthanks, and pl2pm. Some utilities are provided by more specific + packages like perldoc by perl-Pod-Perldoc and splain by perl-diagnostics. end
requires - %{perl_requires} + perl = %{perl_version} + perl-libs = %{thisver} end
files - %{bindir}/psed - %{bindir}/s2p - %{mandir}/man1/psed.1* - %{mandir}/man1/s2p.1* + %{bindir}/h2ph + %{bindir}/perlbug + %{bindir}/perlthanks + %{bindir}/pl2pm + %{datadir}/perl5/pod/perlutil.pod + %{mandir}/man1/h2ph.* + %{mandir}/man1/perlbug.* + %{mandir}/man1/perlthanks.* + %{mandir}/man1/perlutil.* + %{mandir}/man1/pl2pm.* end end
package perl-Archive-Tar - epoch = 0 - version = 1.96 + version = 2.40 arch = noarch
summary = A module for Perl manipulation of .tar files. @@ -355,7 +311,7 @@ packages end
requires - %{perl_requires} + perl = %{perl_version} perl(IO::Zlib) >= 1.01 perl(IO::Compress::Bzip2) >= 2.015 perl(IO::Uncompress::Bunzip2) >= 2.015 @@ -374,9 +330,31 @@ packages end end
+ package perl-Attribute-Handlers + version = 1.02 + arch = noarch + + summary = Simpler definition of attribute handlers. + description + This Perl module, when inherited by a package, allows that package's class to + define attribute handler subroutines for specific attributes. Variables and + subroutines subsequently defined in that package, or in packages derived from + that package may be given attributes with the same names as the attribute + handler subroutines, which will then be called in one of the compilation + phases (i.e. in a "BEGIN", "CHECK", "INIT", or "END" block). + end + + requires += \ + perl = %{perl_version} + + files + %{datadir}/perl5/Attribute/ + %{mandir}/man3/Attribute::Handlers.* + end + end + package perl-autodie - epoch = 0 - version = 2.23 + version = 2.34 arch = noarch
summary = Replace functions with ones that succeed or die. @@ -390,7 +368,7 @@ packages end
requires - %{perl_requires} + perl = %{perl_version} perl(B) perl(Fcntl) perl(overload) @@ -407,111 +385,267 @@ packages end end
- package perl-B-Debug - epoch = 0 - version = 1.19 + package perl-AutoLoader + version = 5.74 arch = noarch
- summary = Walk Perl syntax tree, print debug information about op-codes. + summary = Load subroutines only on demand description - Walk Perl syntax tree and print debug information about op-codes. See - B::Concise and B::Terse for other details. + The AutoLoader module works with the AutoSplit module and the "__END__" token + to defer the loading of some subroutines until they are used rather than + loading them all at once end
requires - %{perl_requires} + perl = %{perl_version} + perl(Carp) end
files - %{datadir}/perl5/B/Debug.pm - %{mandir}/man3/B::Debug.3* + %{datadir}/perl5/AutoLoader.pm + %{mandir}/man3/AutoLoader.3* end end
- package perl-Compress-Raw-Bzip2 - epoch = 0 - version = 2.064 + package perl-AutoSplit + version = 5.74 + arch = noarch
- summary = Low-Level Interface to bzip2 compression library. + summary = Split a package for automatic loading description - This module provides a Perl interface to the bzip2 compression library. - It is used by IO::Compress::Bzip2. + Split up your program into files that the AutoLoader module can handle. It is + used by both the standard Perl libraries and by the ExtUtils::MakeMaker + utility, to automatically configure libraries for automatic loading. end
requires - %{perl_requires} - perl(Exporter) - perl(File::Temp) + perl = %{perl_version} + perl(Carp) end
files - %{libdir}/perl5/Compress/Raw/Bzip2.pm - %{libdir}/perl5/auto/Compress/Raw/Bzip2 - %{mandir}/man3/Compress::Raw::Bzip2* + %{datadir}/perl5/AutoSplit.pm + %{mandir}/AutoSplit.3* end end
- package perl-Compress-Raw-Zlib - epoch = 0 - version = 2.065 + package perl-autouse + version = 1.11 + arch = noarch
- summary = Low-Level Interface to the zlib compression library. + summary = Postpone load of modules until a function is used description - This module provides a Perl interface to the zlib compression library. - It is used by IO::Compress::Zlib. + If a module is not loaded yet, then the autouse declaration declares functions + in the current package. When these functions are called, they load the package + and substitute themselves with the correct definitions. end
requires - %{perl_requires} + perl = %{perl_version} + perl(Carp) + perl(warnings) end
files - %{libdir}/perl5/Compress/Raw/Zlib.pm - %{libdir}/perl5/auto/Compress/Raw/Zlib - %{mandir}/man3/Compress::Raw::Zlib* + %{datadir}/perl5/autouse.pm + %{mandir}/man3/autouse.3* end end
- package perl-CGI - epoch = 0 - version = 3.63 + package perl-B + version = 1.83 arch = noarch
- summary = Handle Common Gateway Interface requests and responses + summary = Perl compiler backend description - CGI.pm is a stable, complete and mature solution for processing and preparing - HTTP requests and responses. Major features including processing form - submissions, file uploads, reading and writing cookies, query string generation - and manipulation, and processing and preparing HTTP headers. Some HTML - generation utilities are included as well. + The "B" module supplies classes which allow a Perl program to delve into its + own innards. It is the module used to implement the backends of the Perl + compiler. + end + + requires + perl = %{perl_version} + perl(Data::Dumper) + perl(overloading) + perl(XSLoader) + end + + files + %{libdir}/perl5/auto/B + %{libdir}/perl5/B + %{libdir}/perl5/B.pm + %{libdir}/perl5/O.pm + %{datadir}/perl5/B + %{mandir}/man3/B.* + %{mandir}/man3/B::* + %{mandir}/man3/O.* + end + end + + package perl-base + version = 2.27 + arch = noarch
- CGI.pm performs very well in in a vanilla CGI.pm environment and also comes - with built-in support for mod_perl and mod_perl2 as well as FastCGI. + summary = Establish an ISA relationship with base classes at compile time. + description + "base" module allows you to both load one or more modules, while setting up + inheritance from those modules at the same time. Unless you are using the + "fields" pragma, consider this module discouraged in favor of the + lighter-weight "parent". end
requires - %{perl_requires} + perl = %{perl_version} + perl(Carp) end
- provides - perl(CGI)=%{version} + files + %{datadir}/perl5/base.pm + %{mandir}/man3/base.3* + end + end + + package perl-Benchmark + version = 1.23 + arch = noarch + + summary = Benchmark running times of Perl code + description + The Benchmark module encapsulates a number of routines to help you figure out + how long it takes to execute some code. + end + + requires + perl = %{perl_version} + end + + files + %{datadir}/perl5/Benchmark.pm + %{mandir}/man3/Benchmark.* + end + end + + package perl-bignum + version = 0.65 + arch = noarch + + summary = Transparent big number support for Perl. + description + This package attempts to make it easier to write scripts that use BigInts and + BigFloats in a transparent way. + end + + requires + perl = %{perl_version} + perl(Carp) + perl(Math::BigRat) + perl(warnings) + end + + files + %{datadir}/perl5/bigfloat.pm + %{datadir}/perl5/bigint.pm + %{datadir}/perl5/bignum.pm + %{datadir}/perl5/bigrat.pm + %{datadir}/perl5/Math/BigFloat + %{datadir}/perl5/Math/BigInt + %{datadir}/perl5/Math/BigInt/Trace.pm + %{datadir}/perl5/Math/BigRat + %{datadir}/perl5/Math/BigRat/Trace.pm + %{mandir}/man3/bigfloat.* + %{mandir}/man3/bigint.* + %{mandir}/man3/bignum.* + %{mandir}/man3/bigrat.* + end + end + + package perl-blib + version = 1.07 + arch = noarch + + summary = Use uninstalled version of a package. + description + This module looks for MakeMaker-like "blib" directory structure starting in + given or current directory and working back up to five levels of directories. + It is intended for use on command line with -M option as a way of testing + arbitrary scripts against an uninstalled version of a package. + end + + requires + perl = %{perl_version} + end + + files + %{datadir}/perl5/blib.pm + %{mandir}/man3/blib.* + end + end + + package perl-Class-Struct + version = 0.66 + arch = noarch + + summary = Declare struct-like data types as Perl classes. + description + Class::Struct module exports a single function struct(). Given a list of + element names and types, and optionally a class name, struct() creates a + Perl 5 class that implements a struct-like data structure. + end + + requires + perl = %{perl_version} + end + + files + %{datadir}/perl5/Class + %{mandir}/man3/Class::Struct.* + end + end + + package perl-Compress-Raw-Bzip2 + version = 2.103 + + summary = Low-Level Interface to bzip2 compression library. + description + This module provides a Perl interface to the bzip2 compression library. + It is used by IO::Compress::Bzip2. + end + + requires + perl = %{perl_version} + perl(Exporter) + perl(File::Temp) + end + + files + %{libdir}/perl5/Compress/Raw/Bzip2.pm + %{libdir}/perl5/auto/Compress/Raw/Bzip2 + %{mandir}/man3/Compress::Raw::Bzip2* + end + end + + package perl-Compress-Raw-Zlib + version = 2.105 + + summary = Low-Level Interface to the zlib compression library. + description + This module provides a Perl interface to the zlib compression library. + It is used by IO::Compress::Zlib. end
- filter_requires - FCGI + requires + perl = %{perl_version} end
files - /usr/share/perl5/CGI - /usr/share/perl5/CGI.pm - /usr/share/man/man3/CGI.3* - /usr/share/man/man3/CGI::*.3* + %{libdir}/perl5/Compress/Raw/Zlib.pm + %{libdir}/perl5/auto/Compress/Raw/Zlib + %{mandir}/man3/Compress::Raw::Zlib* end end
package perl-CPAN - epoch = 0 - version = 2.05 + version = 2.33 arch = noarch
summary = Query, download and build perl modules from CPAN sites. @@ -520,30 +654,30 @@ packages end
requires - %{perl_requires} + make + perl = %{perl_version} perl(Digest::SHA) end
provides cpan - cpan=$(version-perl-CPAN) - end - - filter_requires - Mac::BuildTools + cpan = %{version} end
files - /usr/bin/cpan - /usr/share/perl5/CPAN* - /usr/share/man/man1/cpan.1* - /usr/share/man/man3/CPAN* + %{bindir}/cpan + %{datadir}/perl5/App/Cpan.pm + %{datadir}/perl5/CPAN + %{datadir}/perl5/CPAN.pm + %{mandir}/man1/cpan.1* + %{mandir}/man3/App::Cpan.* + %{mandir}/man3/CPAN.* + %{mandir}/man3/CPAN:* end end
package perl-CPAN-Meta - epoch = 0 - version = 2.140640 + version = 2.150010 arch = noarch
summary = Distribution metadata for a CPAN dist. @@ -556,25 +690,24 @@ packages end
requires - %{perl_requires} + perl = %{perl_version} end
files - /usr/share/perl5/CPAN/Meta.pm - /usr/share/perl5/CPAN/Meta - /usr/share/perl5/CPAN/Meta/Converter.pm - /usr/share/perl5/CPAN/Meta/Feature.pm - /usr/share/perl5/CPAN/Meta/History.pm - /usr/share/perl5/CPAN/Meta/Prereqs.pm - /usr/share/perl5/CPAN/Meta/Spec.pm - /usr/share/perl5/CPAN/Meta/Validator.pm - /usr/share/man/man5/CPAN::Meta.* + %{datadir}/perl5/CPAN/Meta.pm + %{datadir}/perl5/CPAN/Meta + %{datadir}/perl5/CPAN/Meta/Converter.pm + %{datadir}/perl5/CPAN/Meta/Feature.pm + %{datadir}/perl5/CPAN/Meta/History.pm + %{datadir}/perl5/CPAN/Meta/Prereqs.pm + %{datadir}/perl5/CPAN/Meta/Spec.pm + %{datadir}/perl5/CPAN/Meta/Validator.pm + %{mandir}/man5/CPAN::Meta.* end end
package perl-CPAN-Meta-Requirements - epoch = 0 - version = 2.122 + version = 2.140 arch = noarch
summary = Set of version requirements for a CPAN dist. @@ -586,7 +719,7 @@ packages end
requires - %{perl_requires} + perl = %{perl_version} end
files @@ -596,8 +729,7 @@ packages end
package perl-CPAN-Meta-YAML - epoch = 0 - version = 0.012 + version = 0.018 arch = noarch
summary = Read and write a subset of YAML for CPAN Meta files. @@ -608,17 +740,16 @@ packages end
requires - %{perl_requires} + perl = %{perl_version} end
files - /usr/share/perl5/CPAN/Meta/YAML.pm - /usr/share/man/man5/CPAN::Meta::YAML* + %{datadir}/perl5/CPAN/Meta/YAML.pm + %{mandir}/man5/CPAN::Meta::YAML* end end
package perl-Carp - epoch = 0 version = 1.33.01 arch = noarch
@@ -634,7 +765,7 @@ packages end
requires - %{perl_requires} + perl = %{perl_version} end
provides @@ -642,18 +773,15 @@ packages perl(Carp::Heavy) = %{version} end
- # Do not export unversioned module - #filter_provides = ^perl(Carp)\s*$ - files - /usr/share/perl5/Carp* - /usr/share/man3/Carp* + %{datadir}/perl5/Carp* + %{datadir}/perl5/Carp + %{mandir}3/Carp* end end
package perl-constant - epoch = 0 - version = 1.31 + version = 1.33 arch = noarch
summary = Perl pragma to declare constants. @@ -662,7 +790,7 @@ packages end
requires - %{perl_requires} + perl = %{perl_version} end
files @@ -672,8 +800,7 @@ packages end
package perl-Data-Dumper - epoch = 0 - version = 2.151 + version = 2.184
summary = Stringify perl data structures, suitable for printing and eval. description @@ -684,7 +811,7 @@ packages end
requires - %{perl_requires} + perl = %{perl_version} perl(Scalar::Util) perl(XSLoader) end @@ -697,8 +824,7 @@ packages end
package perl-DB_File - epoch = 0 - version = 1.831 + version = 1.857
summary = Perl5 access to Berkeley DB version 1.x. description @@ -709,7 +835,7 @@ packages end
requires - %{perl_requires} + perl = %{perl_version} perl(Fcntl) perl(XSLoader) end @@ -721,9 +847,54 @@ packages end end
+ package perl-DBM_Filter + version = 0.06 + arch = noarch + + summary = Filter DBM keys and values + description + This module provides an interface that allows filters to be applied to tied + hashes associated with DBM files. + end + + requires + perl = %{perl_version} + perl(Compress::Zlib) + perl(Encode) + end + + files + %{datadir}/perl5/DBM_Filter + %{datadir}/perl5/DBM_Filter.pm + %{mandir}/man3/DBM_Filter.* + %{mandir}/man3/DBM_Filter::* + end + end + + package perl-Devel-Peek + version = 1.32 + + summary = A data debugging tool for the XS programmer + description + Devel::Peek contains functions which allows raw Perl data types to be + manipulated from a Perl script. This is used by those who do XS programming to + check that the data they are sending from C to Perl looks as they think it + should look. + end + + requires + perl = %{perl_version} + end + + files + %{libdir}/perl5/Devel/Peek.pm + %{libidr}/perl5/auto/Devel/Peek + %{mandir}/man3/Devel::Peek.* + end + end + package perl-Devel-PPPort - epoch = 0 - version = 3.21 + version = 3.68
summary = Perl Pollution Portability header generator. description @@ -736,7 +907,7 @@ packages end
requires - %{perl_requires} + perl = %{perl_version} end
files @@ -746,9 +917,30 @@ packages end end
+ package perl-Devel-SelfStubber + version = 1.06 + arch = noarch + + summary = Generate stubs for a SelfLoading module + description + Devel::SelfStubber prints the stubs you need to put in the module before the + __DATA__ token (or you can get it to print the entire module with stubs + correctly placed). The stubs ensure that if a method is called, it will get + loaded. They are needed specifically for inherited autoloaded methods. + end + + requires + perl = %{perl_version} + end + + files + %{datadir}/perl5/Devel/SelfStubber.pm + %{mandir}/man3/Devel::SelfStubber.* + end + end + package perl-Digest - epoch = 0 - version = 1.17 + version = 1.20 arch = noarch
summary = Modules that calculate message digests. @@ -761,25 +953,24 @@ packages end
requires - %{perl_requires} + perl = %{perl_version} perl(MIME::Base64) end
files %{libdir}/perl5/Digest !%{libdir}/perl5/Digest/* - /usr/share/perl5/Digest.pm - /usr/share/perl5/Digest/base.pm - /usr/share/perl5/Digest/file.pm - /usr/share/man/man3/Digest.3* - /usr/share/man/man3/Digest::base.3* - /usr/share/man/man3/Digest::file.3* + %{datadir}/perl5/Digest.pm + %{datadir}/perl5/Digest/base.pm + %{datadir}/perl5/Digest/file.pm + %{mandir}/man3/Digest.3* + %{mandir}/man3/Digest::base.3* + %{mandir}/man3/Digest::file.3* end end
package perl-Digest-MD5 - epoch = 0 - version = 2.53 + version = 2.58
summary = Perl Interface to the MD5 Algorithm. description @@ -790,20 +981,19 @@ packages end
requires - %{perl_requires} + perl = %{perl_version} perl(Digest::base)>=1.00 end
files %{libdir}/perl5/Digest/MD5.pm %{libdir}/perl5/auto/Digest/MD5 - /usr/share/man/man3/Digest::MD5.3* + %{mandir}/man3/Digest::MD5.3* end end
package perl-Digest-SHA - epoch = 0 - version = 5.88 + version = 6.02
summary = Perl extension for SHA-1/224/256/384/512. description @@ -814,118 +1004,253 @@ packages end
requires - %{perl_requires} + perl = %{perl_version} perl(Digest::base) perl(MIME::Base64) end
files - /usr/bin/shasum + %{bindir}/shasum %{libdir}/perl5/Digest/SHA* - %{libdir}/perl5/auto/Digest/SHA* - /usr/share/perl5/Digest/SHA* - /usr/share/man/man1/shasum.1* - /usr/share/man/man3/Digest::SHA.3* + %{libdir}/perl5/auto/Digest/SHA + %{datadir}/perl5/Digest/SHA* + %{mandir}/man1/shasum.1* + %{mandir}/man3/Digest::SHA.3* end end
- package perl-Encode - epoch = 0 - version = 2.60 + package perl-Dumpvalue + version = 2.27 + arch = noarch
- summary = Character encodings in Perl. + summary = Sceen dump of Perl data description - The Encode module provides the interface between Perl strings and the rest - of the system. Perl strings are sequences of characters. + Dumpvalue module enables you to print a content of variables and other Perl + data structures. end
requires - %{perl_requires} + perl = %{perl_version} + end + + recommends + perl(Devel::Peek) end
files - %{bindir}/piconv - %{libdir}/perl5/Encode* - %{libdir}/perl5/auto/Encode* - %{datadir}/perl5/Encode - !%{datadir}/perl5/Encode/*.e2x - !%{datadir}/perl5/Encode/encode.h - %{mandir}/man1/piconv.1* - %{mandir}/man3/Encode*.3* + %{datadir}/perl5/Dumpvalue.pm + %{mandir}/man3/Dumpvalue.3* end end
- package perl-Env - epoch = 0 - version = 1.04 - arch = noarch + package perl-DynaLoader + version = 1.52
- summary = Perl module that imports environment variables as scalars or arrays. + summary = Dynamically load C libraries into Perl code description - Perl maintains environment variables in a special hash named %%ENV. For when - this access method is inconvenient, the Perl module Env allows environment - variables to be treated as scalar or array variables. + The DynaLoader module defines a standard generic interface to the dynamic + linking mechanisms available on many platforms. Its primary purpose is to + implement automatic dynamic loading of Perl modules. For a simpler interface, + see XSLoader module. end
requires - %{perl_requires} + perl = %{perl_version} + perl(Carp) end
files - %{datadir}/perl5/Env.pm - %{mandir}/man3/Env.3* + %{libdir}/perl5/DynaLoader.pm + %{mandir}/man3/DynaLoader.3* end end
- package perl-experimental - epoch = 0 - version = 0.007 + package perl-doc + version = %{perl_version} arch = noarch
- summary = Experimental features made easy. + summary = Perl language documentation description - This pragma provides an easy and convenient way to enable or disable - experimental features. + This package contains the documentation for the Perl language. + It is provides in POD and manual page format. end
requires - %{perl_requires} + perl = %{perl_version} end
files - %{datadir}/perl5/experimental* - %{mandir}/man3/experimental* + %{datadir}/perl5/pod/*.pod + %{mandir}/man1/perl*.* end end
- package perl-Exporter - epoch = 0 - version = 5.71 - arch = noarch + package perl-Encode + version = 3.17
- summary = Implements default import method for modules. + summary = Character encodings in Perl. description - The Exporter module implements an import method which allows a module to - export functions and variables to its users' name spaces. Many modules use - Exporter rather than implementing their own import method because Exporter - provides a highly flexible interface, with an implementation optimized for + The Encode module provides the interface between Perl strings and the rest + of the system. Perl strings are sequences of characters. + end + + requires + perl = %{perl_version} + end + + files + %{bindir}/piconv + %{libdir}/perl5/Encode + %{libdir}/perl5/Encode* + %{libdir}/perl5/auto/Encode* + %{libdir}/perl5/auto/Encode + %{datadir}/perl5/Encode + !%{datadir}/perl5/Encode/*.e2x + !%{datadir}/perl5/Encode/encode.h + %{mandir}/man1/piconv.1* + %{mandir}/man3/Encode*.3* + end + end + + package perl-encoding + version = 3.00 + + summary = Write your Perl script in non-ASCII or non-UTF-8. + description + With the encoding pragma, you can write your Perl script in any encoding you + like (so long as the Encode module supports it) and still enjoy Unicode + support. + + This module is deprecated under perl 5.18 and may be removed in a future version. + + The easiest and best alternative is to write your scripts in UTF-8. + end + + requires + perl = %{perl_version} + perl(Carp) + perl(Filter::Util::Call) + perl(utf8) + end + + files + %{libdir}/perl5/encoding.pm + %{mandir}/man3/encoding.3* + end + end + + package perl-encoding-warnings + version = 0.13 + arch = noarch + + summary = Warn on implicit encoding conversions. + descripton + As of Perl 5.26.0, this module has no effect. The internal Perl feature that + was used to implement this module has been removed. Hence, if you load this + module on Perl 5.26.0, you will get one warning that the module is no longer + supported; and the module will do nothing thereafter. + end + + requires + perl = %{perl_version} + perl(Carp) + end + + files + %{datadir}/perl5/encoding + %{datadir}/perl5/encoding/warnings.pm + %{mandir}/man3/encoding::warnings.3* + end + end + + package perl-English + version = 1.11 + arch = noarch + + summary = Nice English or awk names for ugly punctuation variables. + description + This module provides aliases for the built-in variables whose names no one + seems to like to read. + end + + requires + perl = %{perl_version} + end + + files + %{datadir}/perl5/English.pm + %{mandir}/man3/English.3* + end + end + + package perl-Env + version = 1.05 + arch = noarch + + summary = Perl module that imports environment variables as scalars or arrays. + description + Perl maintains environment variables in a special hash named %%ENV. For when + this access method is inconvenient, the Perl module Env allows environment + variables to be treated as scalar or array variables. + end + + requires + perl = %{perl_version} + end + + files + %{datadir}/perl5/Env.pm + %{mandir}/man3/Env.3* + end + end + + package perl-experimental + version = 0.028 + arch = noarch + + summary = Experimental features made easy. + description + This pragma provides an easy and convenient way to enable or disable + experimental features. + end + + requires + perl = %{perl_version} + end + + files + %{datadir}/perl5/experimental* + %{mandir}/man3/experimental* + end + end + + package perl-Exporter + version = 5.77 + arch = noarch + + summary = Implements default import method for modules. + description + The Exporter module implements an import method which allows a module to + export functions and variables to its users' name spaces. Many modules use + Exporter rather than implementing their own import method because Exporter + provides a highly flexible interface, with an implementation optimized for the common case. end
requires - %{perl_requires} + perl = %{perl_version} perl(Carp) >= 1.05 end
files + %{datadir}/perl5/Exporter %{datadir}/perl5/Exporter* %{mandir}/man3/Exporter* end end
package perl-ExtUtils-CBuilder - epoch = 0 - version = 0.280217 + version = 0.280236 arch = noarch
summary = Compile and link C code for Perl modules. @@ -937,19 +1262,47 @@ packages end
requires - %{perl_requires} + perl = %{perl_version} + gcc + gcc-c++ perl-devel + perl(DynaLoader) + perl(ExtUtils::Mksymlists) + perl(File::Spec) + perl(Perl::OSType) + end + + files + %{datadir}/perl5/ExtUtils/CBuilder + %{mandir}/man3/ExtUtils::CBuilder* + end + end + + package perl-ExtUtils-Constant + version = 0.25 + arch = noarch + + summary = Generate XS code to import C header constants + description + ExtUtils::Constant facilitates generating C and XS wrapper code to allow + Perl modules to AUTOLOAD constants defined in C library header files. + end + + requires + perl = %{perl_version} + perl(Data::Dumper) end
files - /usr/share/perl5/ExtUtils/CBuilder* - /usr/share/man/man3/ExtUtils::CBuilder* + %{datadir}/perl5/ExtUtils/Constant + %{datadir}/perl5/ExtUtils/Constant.pm + %{mandir}/man3/ExtUtils::Constant::* + %{mandir}/man3/ExtUtils::Constant.3* end end
package perl-ExtUtils-Command - epoch = 0 - version = 1.18 + version = 7.64 arch = noarch
summary = Perl routines to replace common UNIX commands in Makefiles. @@ -960,7 +1313,7 @@ packages end
requires - %{perl_requires} + perl = %{perl_version} perl(File::Find) end
@@ -971,8 +1324,7 @@ packages end
package perl-ExtUtils-Embed - epoch = 0 - version = 1.32 + version = 1.35 arch = noarch
summary = Utilities for embedding Perl in C/C++ applications. @@ -981,19 +1333,18 @@ packages end
requires - %{perl_requires} + perl = %{perl_version} perl-devel end
files - /usr/share/perl5/ExtUtils/Embed* - /usr/share/man/man3/ExtUtils::Embed* + %{datadir}/perl5/ExtUtils/Embed* + %{mandir}/man3/ExtUtils::Embed* end end
package perl-ExtUtils-Install - epoch = 0 - version = 1.67 + version = 2.20 arch = noarch
summary = Install files from here to there. @@ -1003,13 +1354,12 @@ packages end
requires - %{perl_requires} + perl = %{perl_version} perl-devel + perl(AutoSplit) perl(Data::Dumper) - end - - filter_requires - VMS::Filespec + perl(File::Compare) + perl(POSIX) end
files @@ -1023,8 +1373,7 @@ packages end
package perl-ExtUtils-MakeMaker - epoch = 0 - version = 6.98 + version = 7.64 arch = noarch
summary = Create a module Makefile. @@ -1033,52 +1382,51 @@ packages end
requires - %{perl_requires} - /usr/bin/xsubpp + perl = %{perl_version} perl-devel perl(Data::Dumper) + perl(DynaLoader) perl(ExtUtils::Command) perl(ExtUtils::Install) perl(ExtUtils::Manifest) perl(File::Find) perl(Getopt::Long) + perl(Pod::Man) perl(Test::Harness) - end - - filter_requires - VMS::Filespec + perl(version) + perl-ExtUtils-ParseXS end
files - /usr/bin/instmodsh - /usr/share/perl5/ExtUtils/Command/ - /usr/share/perl5/ExtUtils/Liblist/ - /usr/share/perl5/ExtUtils/Liblist.pm - /usr/share/perl5/ExtUtils/MakeMaker/ - /usr/share/perl5/ExtUtils/MakeMaker.pm - /usr/share/perl5/ExtUtils/MANIFEST.SKIP - /usr/share/perl5/ExtUtils/MM*.pm - /usr/share/perl5/ExtUtils/MY.pm - /usr/share/perl5/ExtUtils/Manifest.pm - /usr/share/perl5/ExtUtils/Mkbootstrap.pm - /usr/share/perl5/ExtUtils/Packlist.pm - /usr/share/perl5/ExtUtils/testlib.pm - /usr/share/man/man1/instmodsh.1* - /usr/share/man/man3/ExtUtils::Command::MM* - /usr/share/man/man3/ExtUtils::Liblist.3* - /usr/share/man/man3/ExtUtils::MM* - /usr/share/man/man3/ExtUtils::MY.3* - /usr/share/man/man3/ExtUtils::MakeMaker* - /usr/share/man/man3/ExtUtils::Manifest.3* - /usr/share/man/man3/ExtUtils::Mkbootstrap.3* - /usr/share/man/man3/ExtUtils::Mksymlists.3* - /usr/share/man/man3/ExtUtils::testlib.3* + %{bindir}/instmodsh + %{datadir}/perl5/ExtUtils/Command/ + %{datadir}/perl5/ExtUtils/Liblist/ + %{datadir}/perl5/ExtUtils/Liblist.pm + %{datadir}/perl5/ExtUtils/MakeMaker/ + %{datadir}/perl5/ExtUtils/MakeMaker.pm + %{datadir}/perl5/ExtUtils/MANIFEST.SKIP + %{datadir}/perl5/ExtUtils/MM + %{datadir}/perl5/ExtUtils/MM*.pm + %{datadir}/perl5/ExtUtils/MY.pm + %{datadir}/perl5/ExtUtils/Manifest.pm + %{datadir}/perl5/ExtUtils/Mkbootstrap.pm + %{datadir}/perl5/ExtUtils/Packlist.pm + %{datadir}/perl5/ExtUtils/testlib.pm + %{mandir}/man1/instmodsh.1* + %{mandir}/man3/ExtUtils::Command::MM* + %{mandir}/man3/ExtUtils::Liblist.3* + %{mandir}/man3/ExtUtils::MM* + %{mandir}/man3/ExtUtils::MY.3* + %{mandir}/man3/ExtUtils::MakeMaker* + %{mandir}/man3/ExtUtils::Manifest.3* + %{mandir}/man3/ExtUtils::Mkbootstrap.3* + %{mandir}/man3/ExtUtils::Mksymlists.3* + %{mandir}/man3/ExtUtils::testlib.3* end end
package perl-ExtUtils-Manifest - epoch = 0 - version = 1.63 + version = 1.73 arch = noarch
summary = Utilities to write and check a MANIFEST file. @@ -1087,7 +1435,8 @@ packages end
requires - %{perl_requires} + perl = %{perl_version} + perl(File::Path) end
files @@ -1098,8 +1447,7 @@ packages end
package perl-ExtUtils-Miniperl - epoch = 0 - version = 1.01 + version = 1.11 arch = noarch
summary = Write the C code for perlmain.c. @@ -1114,7 +1462,7 @@ packages end
requires - %{perl_requires} + perl = %{perl_version} perl-devel end
@@ -1124,9 +1472,30 @@ packages end end
+ package perl-ExtUtils-MM-Utils + version = 7.44 + arch = noarch + + summary = ExtUtils::MM methods without dependency on ExtUtils::MakeMaker + description + This is a collection of ExtUtils::MM subroutines that are used by many + other modules but that do not need full-featured ExtUtils::MakeMaker. The + issue with ExtUtils::MakeMaker is it pulls in Perl header files and that + is an overkill for small subroutines. + end + + requires + perl = %{perl_version} + end + + files + %{datadir}/perl5/ExtUtils/MM/Utils.pm + %{mandir}/man3/ExtUtils::MM::Utils.* + end + end + package perl-ExtUtils-ParseXS - epoch = 0 - version = 3.24 + version = 3.45 arch = noarch
summary = Module and a script for converting Perl XS code into C code. @@ -1137,7 +1506,7 @@ packages end
requires - %{perl_requires} + perl = %{perl_version} perl-devel end
@@ -1168,1136 +1537,2577 @@ packages end end
- package perl-File-Fetch - epoch = 1 - version = 0.48 + package perl-Fcntl + version = 1.15 arch = noarch
- summary = Generic file fetching mechanism. + summary = File operation options. description - File::Fetch is a generic file fetching mechanism. + Fcntl module provides file operation related options. end
requires - %{perl_requires} - perl(IPC::Cmd)>=0.36 - perl(Module::Load::Conditional)>=0.04 - perl(Params::Check)>=0.07 + perl = %{perl_version} end
files - /usr/share/perl5/File/Fetch.pm - /usr/share/man/man3/File::Fetch.3* + %{libdir}/perl5/Fcntl.pm + %{libdir}/perl5/auto/Fcntl + %{mandir}/man3/Fcntl.3* end end
- package perl-File-Path - epoch = 0 - version = 2.09 + package perl-fields + version = 2.27 arch = noarch
- summary = Create or remove directory trees. + summary = Compile-time class fields. description - This module provides a convenient way to create directories of arbitrary - depth and to delete an entire directory subtree from the file system. + The "fields" pragma enables compile-time and run-time verified class fields. end
requires - %{perl_requires} + perl = %{perl_version} + perl(base) perl(Carp) + perl(Hash::Util) end
files - %{datadir}/perl5/File/Path.pm - %{mandir}/man3/File::Path.3* + %{datadir}/perl5/fields.pm + %{mandir}/man3/fields.3* end end
- package perl-File-Temp - epoch = 0 - version = 0.23.04 + package perl-File-Basename + version = 2.85 arch = noarch
- summary = Return name and handle of a temporary file safely. + summary = Parse file paths into directory, file name, and suffix description - File::Temp can be used to create and open temporary files in a safe way. - There is both a function interface and an object-oriented interface. The - File::Temp constructor or the tempfile() function can be used to return the - name and the open file handle of a temporary file. The tempdir() function - can be used to create a temporary directory. + These routines allow you to parse file paths into their directory, file name, + and suffix. end
requires - %{perl_requires} - perl(File::Path) >= 2.06 - perl(POSIX) - end - - filter_requires - VMS::Stdio + perl = %{perl_version} + perl(Carp) + perl(re) end
files - %{datadir}/perl5/File/Temp.pm - %{mandir}/man3/File::Temp.3* + %{datadir}/perl5/File/Basename.pm + %{mandir}/man3/File::Basename.3* end end
- package perl-Filter - epoch = 0 - version = 1.49 + package perl-File-Compare + version = 1.100.700 + arch = noarch
- summary = Perl source filters. + summary = Compare files or file handles description - Source filters alter the program text of a module before Perl sees it, much as - a C preprocessor alters the source text of a C program before the compiler - sees it. + A File::Compare Perl module provides functions for comparing a content of two + files specified by a file name or a file handle. end
requires - %{perl_requires} + perl = %{perl_version} + perl(Carp) end
files - %{libdir}/perl5/auto/Filter/Util - %{libdir}/perl5/Filter/Util - %{datadir}/perl5/pod/perlfilter.pod - %{mandir}/man1/perlfilter.* - %{mandir}/man3/Filter::Util::* + %{datadir}/perl5/File/Compare.pm + %{mandir}/man3/File::Compare.3* end end
- package perl-Filter-Simple - epoch = 0 - version = 0.91 + package perl-File-Copy + version = 2.39 arch = noarch
- summary = Simplified Perl source filtering. + summary = Copy files or file handles description - The Filter::Simple Perl module provides a simplified interface to - Filter::Util::Call; one that is sufficient for most common cases. + A File::Copy module provides two basic functions, copy and move, which are + useful for getting the contents of a file from one place to another. end
requires - %{perl_requires} - perl(Text::Balanced) >= 1.97 + perl = %{perl_version} + perl(Carp) + perl(File::Basename) end
files - %{datadir}/perl5/Filter/Simple.pm - %{mandir}/man3/Filter::Simple.3* + %{datadir}/perl5/File/Copy.pm + %{mandir}/man3/File::Copy.3* end end
- package perl-Getopt-Long - epoch = 0 - version = 2.42 - arch = noarch + package perl-File-DosGlob + version = 1.12
- summary = Extended processing of command line options. + summary = DOS-like globbing description - The Getopt::Long module implements an extended getopt function called - GetOptions(). It parses the command line from @ARGV, recognizing and removing - specified options and their possible values. + This Perl module implements DOS-like globbing with a few enhancements. It + is largely compatible with perlglob.exe in all but one respect--it understands + wild cards in directory components. end
requires - %{perl_requires} + perl = %{perl_version} perl(Text::ParseWords) - perl(Pod::Usage) >= 1.14 end
files - %{datadir}/perl5/Getopt/Long.pm - %{mandir}/man3/Getopt::Long.3* + %{libdir}/perl5/File/DosGlob.pm + %{libdir}/perl5/auto/File/DosGlob + %{mandir}/man3/File::DosGlob.3* end end
- package perl-HTTP-Tiny - epoch = 0 - version = 0.043 + package perl-File-Fetch + version = 1.04 arch = noarch
- summary = A small, simple, correct HTTP/1.1 client. + summary = Generic file fetching mechanism. description - This is a very simple HTTP/1.1 client, designed primarily for doing simple GET - requests without the overhead of a large framework like LWP::UserAgent. - It is more correct and more complete than HTTP::Lite. It supports proxies - (currently only non-authenticating ones) and redirection. It also correctly - resumes after EINTR. + File::Fetch is a generic file fetching mechanism. end
requires - %{perl_requires} - perl(Carp) - perl(IO::Socket) + perl = %{perl_version} + perl(IPC::Cmd)>=0.36 + perl(Module::Load::Conditional)>=0.04 + perl(Params::Check)>=0.07 end
files - /usr/share/perl5/HTTP/Tiny.pm - /usr/share/man/man5/HTTP::Tiny* + %{datadir}/perl5/File/Fetch.pm + %{mandir}/man3/File::Fetch.3* end end
- package perl-IO-Compress - epoch = 0 - version = 2.064 + package perl-File-Find + version = 1.40 arch = noarch
- summary = IO::Compress wrapper for modules. + summary = Travers a directory tree description - This module is the base class for all IO::Compress and IO::Uncompress - modules. This module is not intended for direct use in application code. - Its sole purpose is to to be sub-classed by IO::Compress modules. + These are functions for searching through directory trees doing work on each + file found similar to the Unix find command. end
requires - %{perl_requires} - end - - provides - perl(IO::Uncompress::Bunzip2) + perl = %{perl_version} + perl(Scalar::Util) end
files - /usr/share/perl5/Compress/Zlib.pm - %{libdir}/perl5/auto/Compress/Zlib/ - /usr/share/man/man3/Compress::Zlib* - /usr/share/perl5/File/GlobMapper.pm - /usr/share/perl5/IO/Compress/Base/ - /usr/share/perl5/IO/Compress/Base.pm - /usr/share/perl5/IO/Uncompress/AnyUncompress.pm - /usr/share/perl5/IO/Uncompress/Base.pm - /usr/share/man/man3/File::GlobMapper.* - /usr/share/man/man3/IO::Compress::Base.* - /usr/share/man/man3/IO::Uncompress::AnyUncompress.* - /usr/share/man/man3/IO::Uncompress::Base.* + %{datadir}/perl5/File/Find.pm + %{mandir}/man3/File::Find.3* end end
- package perl-IO-Socket-IP - epoch = 0 - version = 0.29 + package perl-File-Path + version = 2.18 arch = noarch
- summary = Drop-in replacement for IO::Socket::INET supporting both IPv4 and IPv6. + summary = Create or remove directory trees. description - This module provides a protocol-independent way to use IPv4 and IPv6 - sockets, as a drop-in replacement for IO::Socket::INET. Most constructor - arguments and methods are provided in a backward-compatible way. + This module provides a convenient way to create directories of arbitrary + depth and to delete an entire directory subtree from the file system. end
requires - %{perl_requires} + perl = %{perl_version} + perl(Carp) end
files - %{datadir}/perl5/IO/Socket/IP.pm - %{mandir}/man3/IO::Socket::IP.* + %{datadir}/perl5/File/Path.pm + %{mandir}/man3/File::Path.3* end end
- package perl-IO-Zlib - epoch = 0 - version = 1.10 + package perl-File-stat + version = 1.12 arch = noarch
- summary = Perl IO:: style interface to Compress::Zlib. + summary = By-Name interface to Perl build-in stat functions description - This modules provides an IO:: style interface to the Compress::Zlib - package. The main advantage is that you can use an IO::Zlib object in much - the same way as an IO::File object so you can have common code that doesn't - know which sort of file it is using. + This module overrides the core stat() and lstat() functions, replacing them + with versions that return File::stat objects. This object has methods that + return the similarly named structure field name from the stat(2) function. end
requires - %{perl_requires} - perl(Compress::Zlib) + perl = %{perl_version} + perl(Symbol) end
files - /usr/share/perl5/IO/Zlib.pm - /usr/share/man/man3/IO::Zlib.* + %{datadir}/perl5/File/stat.pm + %{mandir}/man3/File::stat.3* end end
- package perl-IPC-Cmd - epoch = 0 - version = 0.92 + package perl-File-Temp + version = 0.231.100 arch = noarch
- summary = Finding and running system commands made easy. + summary = Return name and handle of a temporary file safely. description - IPC::Cmd allows you to run commands, interactively if desired, in a - platform independent way, but have them still work. + File::Temp can be used to create and open temporary files in a safe way. + There is both a function interface and an object-oriented interface. The + File::Temp constructor or the tempfile() function can be used to return the + name and the open file handle of a temporary file. The tempdir() function + can be used to create a temporary directory. end
requires - %{perl_requires} - perl(ExtUtils::MakeMaker) + perl = %{perl_version} + perl(File::Path) >= 2.06 + perl(POSIX) end
files - /usr/share/perl5/IPC/Cmd.pm - /usr/share/man/man3/IPC::Cmd.3* + %{datadir}/perl5/File/Temp.pm + %{mandir}/man3/File::Temp.3* end end
- package perl-JSON-PP - epoch = 0 - version = 2.27203 + package perl-FileCache + version = 1.10 arch = noarch
- summary = JSON::XS compatible pure-Perl module. + summary = Keep more files open than the system permits. description - JSON::XS is the fastest and most proper JSON module on CPAN. It is written by - Marc Lehmann in C, so must be compiled and installed in the used environment. - JSON::PP is a pure-Perl module and is compatible with JSON::XS. + The "cacheout" function will make sure that there's a file handle open + for reading or writing available as the path name you give it. It + automatically closes and re-opens files if you exceed your system + maximum number of file descriptors, or the suggested maximum. end
requires - %{perl_requires} + perl = %{perl_version} end
files - /usr/bin/json_pp - /usr/share/perl5/JSON/PP - /usr/share/perl5/JSON/PP.pm - /usr/share/man/man1/json_pp.1* - /usr/share/man/man3/JSON::PP.3* - /usr/share/man/man3/JSON::PP::Boolean.3pm* + %{datadir}/perl5/FileCache.pm + %{mandir}/man3/FileCache.3* end end
- package perl-Locale-Codes - epoch = 0 - version = 3.25 + package perl-FileHandle + version = 2.03 arch = noarch
- summary = Distribution of modules to handle locale codes. + summary = Object methods for file handles. description - Locale-Codes is a distribution containing a set of modules. The modules - each deal with different types of codes which identify parts of the locale - including languages, countries, currency, etc. + This is an object-oriented interface for opening files and performing + input/output operations on them. end
requires - %{perl_requires} + perl = %{perl_version} + perl(Exporter) + perl(Fcntl) end
- filter_requires - Locale::Codes::Country_Retired - Locale::Codes::LangFam_Retired - Locale::Codes::Script_Retired - Locale::Codes::LangExt_Codes - Locale::Codes::LangFam_Codes - Locale::Codes::Script_Codes - Locale::Codes::Language_Codes - Locale::Codes::LangExt_Retired - Locale::Codes::Currency_Codes - Locale::Codes::LangVar_Retired - Locale::Codes::Language_Retired - Locale::Codes::Country_Codes - Locale::Codes::LangVar_Codes - Locale::Codes::Currency_Retired + files + %{datadir}/perl5/FileHandle.pm + %{mandir}/man3/FileHandle.3* end + end
- provides - perl(Locale::Codes) = %{version} + package perl-filetest + version = 1.03 + arch = noarch + + summary = Perl pragma to control the filetest permission operators. + description + The default behavior of file test operators (e.g. "-r") is to use the simple + mode bits as returned by the stat() family of system calls. However, many + operating systems have additional features to define more complex access + rights, for example ACLs (Access Control Lists). For such environments, "use + filetest" may help the permission operators to return results more consistent + with other tools. + end + + requires + perl = %{perl_version} end
files - %{datadir}/perl5/Locale/Codes - %{datadir}/perl5/Locale/Codes.* - %{datadir}/perl5/Locale/Country.* - %{datadir}/perl5/Locale/Currency.* - %{datadir}/perl5/Locale/Language.* - %{datadir}/perl5/Locale/Script.* - %{mandir}/man3/Locale::Codes::* - %{mandir}/man3/Locale::Codes.* - %{mandir}/man3/Locale::Country.* - %{mandir}/man3/Locale::Currency.* - %{mandir}/man3/Locale::Language.* - %{mandir}/man3/Locale::Script.* + %{datadir}/perl5/filetest.pm + %{mandir}/man3/filetest.3* end end
- package perl-Locale-Maketext - epoch = 0 - version = 1.25 - arch = noarch + package perl-Filter + version = 1.60
- summary = Framework for localization. + summary = Perl source filters. description - It is a common feature of applications (whether run directly, or via the Web) - for them to be "localized" -- i.e., for them to present an English interface - to an English-speaker, a German interface to a German-speaker, and so on for - all languages it's programmed with. Locale::Maketext is a framework for - software localization; it provides you with the tools for organizing and - accessing the bits of text and text-processing code that you need for - producing localized applications. + Source filters alter the program text of a module before Perl sees it, much as + a C preprocessor alters the source text of a C program before the compiler + sees it. end
requires - %{perl_requires} + perl = %{perl_version} end
files - %{datadir}/perl5//Locale/Maketext.* - %{datadir}/perl5/Locale/Maketext/Cookbook.* - %{datadir}/perl5/Locale/Maketext/Guts.* - %{datadir}/perl5/Locale/Maketext/GutsLoader.* - %{datadir}/perl5/Locale/Maketext/TPJ13.* - %{mandir}/man3/Locale::Maketext.* - %{mandir}/man3/Locale::Maketext::Cookbook.* - %{mandir}/man3/Locale::Maketext::Guts.* - %{mandir}/man3/Locale::Maketext::GutsLoader.* - %{mandir}/man3/Locale::Maketext::TPJ13.* + %{libdir}/perl5/auto/Filter/Util + %{libdir}/perl5/Filter/Util + %{datadir}/perl5/pod/perlfilter.pod + %{mandir}/man1/perlfilter.* + %{mandir}/man3/Filter::Util::* end end
- package perl-Locale-Maketext-Simple - epoch = 0 - version = 0.21 + package perl-Filter-Simple + version = 0.96 arch = noarch - license = MIT
- summary = Simple interface to Locale::Maketext::Lexicon. + summary = Simplified Perl source filtering. description - This module is a simple wrapper around Locale::Maketext::Lexicon, designed - to alleviate the need of creating Language Classes for module authors. + The Filter::Simple Perl module provides a simplified interface to + Filter::Util::Call; one that is sufficient for most common cases. end
requires - %{perl_requires} + perl = %{perl_version} + perl(Text::Balanced) >= 1.97 end
files - %{datadir}/perl5/Locale/Maketext/Simple.pm - %{mandir}/man3/Locale::Maketext::Simple.* + %{datadir}/perl5/Filter/Simple.pm + %{mandir}/man3/Filter::Simple.3* end end
- package perl-Module-Build - epoch = 0 - version = 0.42.05 + package perl-FindBin + version = 1.53 arch = noarch
- summary = Perl module for building and installing Perl modules. + summary = Locate a directory of an original Perl script description - Module::Build is a system for building, testing, and installing Perl modules. - It is meant to be an alternative to ExtUtils::MakeMaker. Developers may alter - the behavior of the module through subclassing in a much more straightforward - way than with MakeMaker. It also does not require a make on your system - most - of the Module::Build code is pure-perl and written in a very cross-platform - way. In fact, you don't even need a shell, so even platforms like MacOS - (traditional) can use it fairly easily. Its only prerequisites are modules that - are included with perl 5.6.0, and it works fine on perl 5.005 if you can - install a few additional modules. + Locates the full path to the script bin directory to allow the use of paths + relative to the bin directory. end
requires - %{perl_requires} - perl(Archive::Tar)>=1.08 - perl(CPAN::Meta)>=2.110420 - perl(ExtUtils::CBuilder)>=0.15 - perl(ExtUtils::ParseXS)>=1.02 + perl = %{perl_version} end
files - %{bindir}/config_data - %{datadir}/perl5/inc/ - %{datadir}/perl5/Module/Build* - %{mandir}/man1/config_data.1* - %{mandir}/man3/Module::Build* - %{mandir}/man3/inc::latest.3* + %{datadir}/perl5/FindBin.pm + %{mandir}/man3/FindBin.* end end
- package perl-Module-CoreList - epoch = 0 - version = 5.20150214 - arch = noarch + package perl-GDBM_File + version = 1.23
- summary = Perl core modules indexed by perl versions. + summary = Perl5 access to the gdbm library. description - Module::CoreList contains the hash of hashes %Module::CoreList::version, this - is keyed on perl version as indicated in $]. The second level hash is module - => version pairs. + GDBM_File is a module which allows Perl programs to make use of the facilities + provided by the GNU gdbm library. end
requires - %{perl_requires} + perl = %{perl_version} end
files - %{datadir}/perl5/Module/CoreList - %{datadir}/perl5/Module/CoreList.pm - %{datadir}/perl5/Module/CoreList.pod - %{mandir}/man3/Module::CoreList* + %{libdir}/perl5/GDBM_File.pm + %{libdir}/perl5/auto/GDBM_File + %{mandir}/man3/GDBM_File.3* end end
- package perl-Module-CoreList-tools - epoch = 0 - version = 5.020001 + package perl-Getopt-Long + version = 2.52 arch = noarch
- summary = Tool for listing modules shipped with perl. + summary = Extended processing of command line options. description - This package provides a corelist(1) tool which can be used to query what - modules were shipped with given perl version. + The Getopt::Long module implements an extended getopt function called + GetOptions(). It parses the command line from @ARGV, recognizing and removing + specified options and their possible values. end
requires - %{perl_requires} - perl-Module-CoreList + perl = %{perl_version} + perl(Text::ParseWords) + perl(Pod::Usage) >= 1.14 end
files - %{bindir}/corelist - %{mandir}/man1/corelist* + %{datadir}/perl5/Getopt/Long.pm + %{mandir}/man3/Getopt::Long.3* end end
- package perl-Module-Load - epoch = 0 - version = 0.32 + package perl-Getopt-Std + version = 1.13 arch = noarch
- summary = Runtime require of both modules and files. + summary = Process single-character switches with switch clustering description - Module::Load eliminates the need to know whether you are trying to require - either a file or a module. + The Getopt::Std module provides functions for processing single-character + switches with switch clustering. Pass one argument which is a string + containing all switches to be recognized. end
requires - %{perl_requires} + perl = %{perl_version} end
files - %{datadir}/perl5/Module/Load.pm - %{mandir}/man3/Module::Load.* + %{datadir}/perl5/Getopt/Std.pm + %{mandir}/man3/Getopt::Std.3* end end
- package perl-Module-Load-Conditional - epoch = 0 - version = 0.62 - arch = noarch + package perl-Hash-Util + version = 0.28
- summary = Looking up module information / loading at runtime. + summary = General-utility hash subroutines description - Module::Load::Conditional provides simple ways to query and possibly load - any of the modules you have installed on your system during runtime. + Hash::Util contains special functions for manipulating hashes that don't + really warrant a keyword. end
requires - %{perl_requires} + perl = %{perl_version} + perl(Hash::Util::FieldHash) + perl(XSLoader) end
files - %{datadir}/perl5/Module/Load/ - %{mandir}/man3/Module::Load::Conditional* + %{libdir}/perl5/Hash/Util.pm + %{libdir}/perl5/auto/Hash/Util + %{libdir}/perl5/auto/Hash/Util/Util.so + %{mandir}/man3/Hash::Util.3* end end
- package perl-Module-Loaded - epoch = 0 - version = 0.08 - arch = noarch + package perl-Hash-Util-FieldHash + version = 1.26
- summary = Mark modules as loaded or unloaded. + summary = Support for inside-out classes description - When testing applications, often you find yourself needing to provide - functionality in your test environment that would usually be provided by - external modules. Rather than munging the %INC by hand to mark these external - modules as loaded, so they are not attempted to be loaded by perl, this module - offers you a very simple way to mark modules as loaded and/or unloaded. + Hash::Util::FieldHash offers a number of functions in support of the + inside-out technique of class construction. end
requires - %{perl_requires} + perl = %{perl_version} + perl(XSLoader) end
files - %{datadir}/perl5/Module/Loaded.pm - %{mandir}/man3/Module::Loaded* + %{libdir}/perl5/auto/Hash/Util/FieldHash + %{libdir}/perl5/Hash/Util/FieldHash.pm + %{mandir}/man3/Hash::Util::FieldHash.3* end end
- package perl-Module-Metadata - epoch = 0 - version = 1.000019 + package perl-HTTP-Tiny + version = 0.080 arch = noarch
- summary = Gather package and POD information from perl module files. + summary = A small, simple, correct HTTP/1.1 client. description - Gather package and POD information from perl module files. + This is a very simple HTTP/1.1 client, designed primarily for doing simple GET + requests without the overhead of a large framework like LWP::UserAgent. + It is more correct and more complete than HTTP::Lite. It supports proxies + (currently only non-authenticating ones) and redirection. It also correctly + resumes after EINTR. end
requires - %{perl_requires} + perl = %{perl_version} + perl(Carp) + perl(IO::Socket) + perl(Time::Local) end
files - /usr/share/perl5/Module/Metadata.pm - /usr/share/man/man3/Module::Metadata.3pm* + %{datadir}/perl5/HTTP/Tiny.pm + %{mandir}/man5/HTTP::Tiny* end end
- package perl-Package-Constants - epoch = 0 - version = 0.04 + package perl-if + version = 0.61.000 arch = noarch
- summary = List all constants declared in a package. + summary = Use a Perl module if a condition holds description - Package::Constants lists all the constants defined in a certain package. This - can be useful for, among others, setting up an autogenerated @EXPORT/@EXPORT_OK - for a Constants.pm file. + The "if" module is used to conditionally load another module. end
requires - %{perl_requires} + perl = %{perl_version} end
files - /usr/share/perl5/Package/ - /usr/share/man/man3/Package::Constants* + %{datadir}/perl5/if.pm + %{mandir}/man3/if.3* end end
- package perl-Params-Check - epoch = 0 - version = 0.38 + package perl-IO + version = 1.50 + + summary = Perl input/output modules + description + This is a collection of Perl input/output modules. + end + + requires + perl = %{perl_version} + end + + files + %{datadir}/perl5/IO + %{datadir}/perl5/IO.pm + %{datadir}/perl5/IO/Dir.pm + %{datadir}/perl5/IO/File.pm + %{datadir}/perl5/IO/Handle.pm + %{datadir}/perl5/IO/Pipe.pm + %{datadir}/perl5/IO/Poll.pm + %{datadir}/perl5/IO/Seekable.pm + %{datadir}/perl5/IO/Select.pm + %{datadir}/perl5/IO/Socket + %{datadir}/perl5/IO/Socket/INET.pm + %{datadir}/perl5/IO/Socket/UNIX.pm + %{datadir}/perl5/IO/Socket.pm + %{datadir}/perl5/auto/IO + %{datadir}/perl5/auto/IO/IO.so + %{mandir}/man3/IO.* + %{mandir}/man3/IO::Dir.* + %{mandir}/man3/IO::File.* + %{mandir}/man3/IO::Handle.* + %{mandir}/man3/IO::Pipe.* + %{mandir}/man3/IO::Poll.* + %{mandir}/man3/IO::Seekable.* + %{mandir}/man3/IO::Select.* + %{mandir}/man3/IO::Socket::INET.* + %{mandir}/man3/IO::Socket::UNIX.* + %{mandir}/man3/IO::Socket.* + end + end + + package perl-IO-Compress + version = 2.106 arch = noarch
- summary = Generic input parsing/checking mechanism. + summary = IO::Compress wrapper for modules. description - Params::Check is a generic input parsing/checking mechanism. + This module is the base class for all IO::Compress and IO::Uncompress + modules. This module is not intended for direct use in application code. + Its sole purpose is to to be sub-classed by IO::Compress modules. end
requires - %{perl_requires} + perl = %{perl_version} end
provides - perl(Params::Check) + perl(IO::Uncompress::Bunzip2) end
files - /usr/share/perl5/Params/ - /usr/share/man/man3/Params::Check* + %{datadir}/perl5/Compress/Zlib.pm + %{libdir}/perl5/auto/Compress/Zlib/ + %{mandir}/man3/Compress::Zlib* + %{datadir}/perl5/File/GlobMapper.pm + %{datadir}/perl5/IO/Compress/Base/ + %{datadir}/perl5/IO/Compress/Base.pm + %{datadir}/perl5/IO/Uncompress/AnyUncompress.pm + %{datadir}/perl5/IO/Uncompress/Base.pm + %{mandir}/man3/File::GlobMapper.* + %{mandir}/man3/IO::Compress::Base.* + %{mandir}/man3/IO::Uncompress::AnyUncompress.* + %{mandir}/man3/IO::Uncompress::Base.* end end
- package perl-Parse-CPAN-Meta - epoch = 0 - version = 1.4414 + package perl-IO-Socket-IP + version = 0.41 arch = noarch
- summary = Parse META.yml and other similar CPAN metadata files. + summary = Drop-in replacement for IO::Socket::INET supporting both IPv4 and IPv6. description - Parse::CPAN::Meta is a parser for META.yml files, based on the parser half of - YAML::Tiny. + This module provides a protocol-independent way to use IPv4 and IPv6 + sockets, as a drop-in replacement for IO::Socket::INET. Most constructor + arguments and methods are provided in a backward-compatible way. end
requires - %{perl_requires} + perl = %{perl_version} end
files - /usr/share/perl5/Parse/CPAN/Meta.pm - /usr/share/man/man3/Parse::CPAN::Meta.3* + %{datadir}/perl5/IO/Socket/IP.pm + %{mandir}/man3/IO::Socket::IP.* end end
- package perl-Path-Tools - epoch = 0 - version = 3.48 - license = (GPL+ or Artistic) and BSD + package perl-IO-Zlib + version = 1.11 + arch = noarch
- summary = PathTools Perl module (Cwd, File::Spec). + summary = Perl IO:: style interface to Compress::Zlib. description - PathTools Perl module (Cwd, File::Spec). + This modules provides an IO:: style interface to the Compress::Zlib + package. The main advantage is that you can use an IO::Zlib object in much + the same way as an IO::File object so you can have common code that doesn't + know which sort of file it is using. end
requires - %{perl_requires} + perl = %{perl_version} + perl(Compress::Zlib) + end + + files + %{datadir}/perl5/IO/Zlib.pm + %{mandir}/man3/IO::Zlib.* + end + end + + package perl-IPC-Cmd + version = 1.04 + arch = noarch + + summary = Finding and running system commands made easy. + description + IPC::Cmd allows you to run commands, interactively if desired, in a + platform independent way, but have them still work. end
- filter_requires - VMS::Filespec + requires + perl = %{perl_version} + perl(ExtUtils::MakeMaker) end
files - %{libdir}/perl5/Cwd.pm - %{libdir}/perl5/File/Spec* - /usr/share/man/man3/Cwd* - /usr/share/man/man3/File::Spec* + %{datadir}/perl5/IPC/Cmd.pm + %{mandir}/man3/IPC::Cmd.3* end end
- package perl-Perl-OSType - epoch = 0 - version = 1.007 + package perl-IPC-Open3 + version = 1.22 arch = noarch
- summary = Map perl operating system names to generic types. + summary = Open a process for reading, writing, and error handling. description - Modules that provide OS-specific behaviors often need to know if the current - operating system matches a more generic type of operating systems. For example, - 'linux' is a type of 'Unix' operating system and so is 'freebsd'. - This module provides a mapping between an operating system name as given by $^O - and a more generic type. The initial version is based on the OS type mappings - provided in Module::Build and ExtUtils::CBuilder (thus, Microsoft operating - systems are given the type 'Windows' rather than 'Win32'). + These are functions that spawn a given command and connects the standard + output of the command for reading, standard output for writing, and standard + error output for handling the errors. end
requires - %{perl_requires} + perl = %{perl_version} + perl(Fcntl) + perl(IO::Pipe) + perl(POSIX) + perl(warnings) end
files - /usr/share/perl5/Perl/OSType.pm - /usr/share/man/man3/Perl::OSType.3pm* + %{datadir}/perl5/IPC/Open2.pm + %{datadir}/perl5/IPC/Open3.pm + %{mandir}/man3/IPC::Open2.3* + %{mandir}/man3/IPC::Open3.3* end end
- package perl-Pod-Checker - epoch = 0 - version = 1.60 + package perl-IPC-SysV + version = 2.08 + + summary = Object interface to System V IPC. + description + This is an object interface for System V messages, semaphores, and + inter-process calls. + end + + requires + perl = %{perl_version} + perl(DynaLoader) + end + + files + %{libdir}/perl5/auto/IPC + %{libdir}/perl5/IPC + %{libdir}/perl5/IPC/Msg.pm + %{libdir}/perl5/IPC/Semaphore.pm + %{libdir}/perl5/IPC/SharedMem.pm + %{libdir}/perl5/IPC/SysV.pm + %{mandir}/man3/IPC::Msg.* + %{mandir}/man3/IPC::Semaphore.* + %{mandir}/man3/IPC::SharedMem.* + %{mandir}/man3/IPC::SysV.* + end + end + + package perl-I18N-Collate + version = 1.02 arch = noarch
- summary = Check POD documents for syntax errors. + summary = Compare 8-bit scalar data according to the current locale description - Module and tools to verify POD documentation contents for compliance with the - Plain Old Documentation format specifications. + This module provides you with objects that will collate according to your + national character set. This module is deprecated. See the perllocale manual + page for further information. end
requires - %{perl_requires} + perl = %{perl_version} end
files - %{bindir}/podchecker - %{datadir}/perl5/Pod/Checker.pm - %{mandir}/man1/podchecker.* - %{mandir}/man3/Pod::Checker.* + %{datadir}/perl5/I18N/Collate.pm + %{mandir}/man3/I18N::Collate.* end end
- package perl-Pod-Escapes - epoch = 0 - version = 1.06 + package perl-I18N-Langinfo + version = 0.21 arch = noarch
- summary = Perl module for resolving POD escape sequences. + summary = Query locale information description - This module provides things that are useful in decoding Pod E<...> sequences. - Presumably, it should be used only by Pod parsers and/or formatters. + The langinfo() function queries various locale information that can be used to + localize output and user interfaces. It uses the current underlying locale, + regardless of whether or not it was called from within the scope of "use + locale". end
requires - %{perl_requires} + perl = %{perl_version} end
files - /usr/share/perl5/Pod/Escapes.pm - /usr/share/man/man3/Pod::Escapes.* + %{libdir}/perl5/auto/I18N + %{libdir}/perl5/I18N + %{mandir}/man3/I18N::Langinfo.* end end
- package perl-Pod-Parser - epoch = 0 - version = 1.62 + package perl-I18N-LangTags + version = 0.45 arch = noarch
- summary = Basic perl modules for handling Plain Old Documentation (POD). + summary = Functions for dealing with RFC 3066 language tags. description - This software distribution contains the packages for using Perl5 POD (Plain - Old Documentation). See the "perlpod" and "perlsyn" manual pages from your - Perl5 distribution for more information about POD. + Language tags are a formalism, described in RFC 3066, for declaring what + language form (language and possibly dialect) a given chunk of information is + in. This library provides functions for common tasks involving language tags + as they are needed in a variety of protocols and applications. end
requires - %{perl_requires} + perl = %{perl_version} + perl(integer) + perl(warnings) end
files - %{bindir}/podselect - %{datadir}/perl5/Pod/Find.pm - %{datadir}/perl5/Pod/InputObjects.pm - %{datadir}/perl5/Pod/ParseUtils.pm - %{datadir}/perl5/Pod/Parser.pm - %{datadir}/perl5/Pod/PlainText.pm - %{datadir}/perl5/Pod/Select.pm - %{mandir}/man1/podselect.1* - %{mandir}/man3/Pod::Find.* - %{mandir}/man3/Pod::InputObjects.* - %{mandir}/man3/Pod::ParseUtils.* - %{mandir}/man3/Pod::Parser.* - %{mandir}/man3/Pod::PlainText.* - %{mandir}/man3/Pod::Select.* + %{datadir}/perl5/I18N/LangTags + %{datadir}/perl5/I18N/LangTags.pm + %{mandir}/man3/I18N::LangTags.* + %{mandir}/man3/I18N::LangTags::* end end
- package perl-Pod-Perldoc - epoch = 0 - version = 3.23 + package perl-JSON-PP + version = 4.07 arch = noarch
- summary = Look up Perl documentation in Pod format. + summary = JSON::XS compatible pure-Perl module. description - perldoc looks up a piece of documentation in .pod format that is embedded - in the perl installation tree or in a perl script, and displays it via - "groff -man | $PAGER". This is primarily used for the documentation for - the perl library modules. + JSON::XS is the fastest and most proper JSON module on CPAN. It is written by + Marc Lehmann in C, so must be compiled and installed in the used environment. + JSON::PP is a pure-Perl module and is compatible with JSON::XS. + end + + requires + perl = %{perl_version} + perl(Data::Dumper) + perl(Encode) + perl(Math::BigFloat) + perl(Math::BigInt) + perl(Scalar::Util) + perl(subs) + end + + files + %{bindir}/json_pp + %{datadir}/perl5/JSON/PP + %{datadir}/perl5/JSON/PP.pm + %{mandir}/man1/json_pp.1* + %{mandir}/man3/JSON::PP.3* + %{mandir}/man3/JSON::PP::Boolean.3pm* + end + end + + package perl-libnet + version = 3.14 + arch = noarch + + summary = Perl clients for various network protocols + description + This is a collection of Perl modules which provides a simple and + consistent programming interface (API) to the client side of various + protocols used in the internet community. + end + + requires + perl = %{perl_version} + perl(File::Basename) + perl(IO::Socket) >= 1.05 + perl(IO::Socket::IP) >= 0.20 + perl(POSIX) + perl(Socket) >= 2.016 + perl(utf8) + end + + files + %{datadir}/perl5/Net/Cmd.pm + %{datadir}/perl5/Net/Config.pm + %{datadir}/perl5/Net/Domain.pm + %{datadir}/perl5/Net/FTP + %{datadir}/perl5/Net/FTP.pm + %{datadir}/perl5/Net/libnetFAQ.pod + %{datadir}/perl5/Net/NNTP.pm + %{datadir}/perl5/Net/Netrc.pm + %{datadir}/perl5/Net/POP3.pm + %{datadir}/perl5/Net/SMTP.pm + %{datadir}/perl5/Net/Time.pm + %{mandir}/man3/Net::Cmd.* + %{mandir}/man3/Net::Config.* + %{mandir}/man3/Net::Domain.* + %{mandir}/man3/Net::FTP.* + %{mandir}/man3/Net::libnetFAQ.* + %{mandir}/man3/Net::NNTP.* + %{mandir}/man3/Net::Netrc.* + %{mandir}/man3/Net::POP3.* + %{mandir}/man3/Net::SMTP.* + %{mandir}/man3/Net::Time.* + end + end + + package perl-libnetcfg + version = %{perl_version} + arch = noarch + + summary = Configure libnet + description + The libnetcfg utility can be used to configure the libnet. + end + + requires + perl = %{perl_version} + end + + files + %{bindir}/libnetcfg + %{mandir}/man1/libnetcfg* + end + end + + package perl-locale + version = 1.10 + arch = noarch + + summary = Pragma to use or avoid POSIX locales for built-in operations. + description + This pragma tells the compiler to enable (or disable) the use of POSIX locales + for built-in operations (for example, LC_CTYPE for regular expressions, + LC_COLLATE for string comparison, and LC_NUMERIC for number formatting). Each + "use locale" or "no locale" affects statements to the end of the enclosing + block. + end + + requires + perl = %{perl_version} + perl(Carp) + perl(POSIX) + end + + files + %{datadir}/perl5/locale.pm + %{mandir}/man3/locale.* + end + end + + package perl-Locale-Maketext + version = 1.31 + arch = noarch + + summary = Framework for localization. + description + It is a common feature of applications (whether run directly, or via the Web) + for them to be "localized" -- i.e., for them to present an English interface + to an English-speaker, a German interface to a German-speaker, and so on for + all languages it's programmed with. Locale::Maketext is a framework for + software localization; it provides you with the tools for organizing and + accessing the bits of text and text-processing code that you need for + producing localized applications. + end + + requires + perl = %{perl_version} + end + + files + %{datadir}/perl5/Locale/Maketext.* + %{datadir}/perl5/Locale/Maketext/Cookbook.* + %{datadir}/perl5/Locale/Maketext/Guts.* + %{datadir}/perl5/Locale/Maketext/GutsLoader.* + %{datadir}/perl5/Locale/Maketext/TPJ13.* + %{mandir}/man3/Locale::Maketext.* + %{mandir}/man3/Locale::Maketext::Cookbook.* + %{mandir}/man3/Locale::Maketext::Guts.* + %{mandir}/man3/Locale::Maketext::GutsLoader.* + %{mandir}/man3/Locale::Maketext::TPJ13.* + end + end + + package perl-Locale-Maketext-Simple + version = 0.21 + arch = noarch + license = MIT + + summary = Simple interface to Locale::Maketext::Lexicon. + description + This module is a simple wrapper around Locale::Maketext::Lexicon, designed + to alleviate the need of creating Language Classes for module authors. + end + + requires + perl = %{perl_version} + end + + files + %{datadir}/perl5/Locale/Maketext/Simple.pm + %{mandir}/man3/Locale::Maketext::Simple.* + end + end + + package perl-Math-BigInt + version = 1.9998.30 + arch = noarch + + summary = Arbitrary-size integer and float mathematics. + description + This provides Perl modules for arbitrary-size integer and float mathematics. + end + + requires + perl = %{perl_version} + perl(Carp) + end + + files + %{datadir}/perl5/Math/BigFloat.pm + %{datadir}/perl5/Math/BigInt.pm + %{datadir}/perl5/Math/BigInt + %{datadir}/perl5/Math/BigInt/Calc.pm + %{datadir}/perl5/Math/BigInt/Lib.pm + %{mandir}/man3/Math::BigFloat.* + %{mandir}/man3/Math::BigInt.* + %{mandir}/man3/Math::BigInt::Calc.* + %{mandir}/man3/Math::BigInt::Lib.* + end + end + + package perl-Math-BigInt-FastCalc + version = 0.501.200 + + summary = Math::BigInt::Calc XS implementation + description + This package provides support for faster big integer calculations. + end + + requires + perl = %{perl_version} + end + + files + %{libdir}/perl5/Math + %{libdir}/perl5/auto/Math + %{mandir}/man3/Math::BigInt::FastCalc.* + end + end + + package perl-Math-BigRat + version = 0.2621 + arch = noarch + + summary = Arbitrary big rational numbers + description + Math::BigRat complements Math::BigInt and Math::BigFloat by providing support + for arbitrary big rational numbers. + end + + requires + perl = %{perl_version} + perl(Math::BigInt) + end + + files + %{datadir}/perl5/Math/BigRat.pm + %{mandir}/man3/Math::BigRat.* + end + end + + package perl-Math-Complex + version = 1.59 + arch = noarch + + summary = Complex numbers and trigonometric functions. + description + This package lets you create and manipulate complex numbers. By default, Perl + limits itself to real numbers, but an extra "use" statement brings full + complex support, along with a full set of mathematical functions typically + associated with and/or extended to complex numbers. + end + + requires + perl = %{perl_version} + end + + files + %{datadir}/perl5/Math/Complex.pm + %{datadir}/perl5/Math/Trig.pm + %{mandir}/man3/Math::Complex.* + %{mandir}/man3/Math::Trig.* + end + end + + package perl-Memoize + version = 1.03 + arch = noarch + + summary = Transparently speed up functions by caching return values. + description + Memoizing a function makes it faster by trading space for time. It does + this by caching the return values of the function in a table. If you call + the function again with the same arguments, memoize jumps in and gives + you the value out of the table, instead of letting the function compute + the value all over again. + end + + requires + perl = %{perl_version} + end + + files + %{datadir}/perl5/Memoize + %{datadir}/perl5/Memoize.pm + %{mandir}/man3/Memoize::* + %{mandir}/man3/Memoize.* + end + end + + package perl-meta-notation + version = %{perl_version} + arch = noarch + + summary = Change nonprintable characters below 0x100 into printables. + description + Returns a copy of the input string with the nonprintable characters below + 0x100 changed into printables. Any ASCII printables or above 0xFF are + unchanged. + end + + requires + perl = %{perl_version} + end + + files + %{datadir}/perl5/meta_notation.pm + end + end + + package perl-MIME-Base64 + version = 3.16 + + summary = Encoding and decoding of Base64 and quoted-printable strings. + description + This package contains a Base64 encoder/decoder and a quoted-printable + encoder/decoder. These encoding methods are specified in RFC 2045 - MIME + (Multipurpose Internet Mail Extensions). + end + + requires + perl = %{perl_version} + end + + files + %{libdir}/perl5/auto/MIME + %{libdir}/perl5/MIME + %{mandir}/man3/MIME::* + end + end + + package perl-Module-CoreList + version = 5.20220520 + arch = noarch + + summary = Perl core modules indexed by perl versions. + description + Module::CoreList contains the hash of hashes %Module::CoreList::version, this + is keyed on perl version as indicated in $]. The second level hash is module + => version pairs. + end + + requires + perl = %{perl_version} + end + + files + %{datadir}/perl5/Module/CoreList + %{datadir}/perl5/Module/CoreList.pm + %{datadir}/perl5/Module/CoreList.pod + %{mandir}/man3/Module::CoreList* + end + end + + package perl-Module-CoreList-tools + version = 5.20220520 + arch = noarch + + summary = Tool for listing modules shipped with perl. + description + This package provides a corelist(1) tool which can be used to query what + modules were shipped with given perl version. + end + + requires + perl = %{perl_version} + perl-Module-CoreList + end + + files + %{bindir}/corelist + %{mandir}/man1/corelist* + end + end + + package perl-Module-Load + version = 0.36 + arch = noarch + + summary = Runtime require of both modules and files. + description + Module::Load eliminates the need to know whether you are trying to require + either a file or a module. + end + + requires + perl = %{perl_version} + end + + files + %{datadir}/perl5/Module/Load.pm + %{mandir}/man3/Module::Load.* + end + end + + package perl-Module-Load-Conditional + version = 0.74 + arch = noarch + + summary = Looking up module information / loading at runtime. + description + Module::Load::Conditional provides simple ways to query and possibly load + any of the modules you have installed on your system during runtime. + end + + requires + perl = %{perl_version} + end + + files + %{datadir}/perl5/Module/Load/ + %{mandir}/man3/Module::Load::Conditional* + end + end + + package perl-Module-Loaded + version = 0.08 + arch = noarch + + summary = Mark modules as loaded or unloaded. + description + When testing applications, often you find yourself needing to provide + functionality in your test environment that would usually be provided by + external modules. Rather than munging the %INC by hand to mark these external + modules as loaded, so they are not attempted to be loaded by perl, this module + offers you a very simple way to mark modules as loaded and/or unloaded. + end + + requires + perl = %{perl_version} + end + + files + %{datadir}/perl5/Module/Loaded.pm + %{mandir}/man3/Module::Loaded* + end + end + + package perl-Module-Metadata + version = 1.000037 + arch = noarch + + summary = Gather package and POD information from perl module files. + description + Gather package and POD information from perl module files. + end + + requires + perl = %{perl_version} + end + + files + %{datadir}/perl5/Module/Metadata.pm + %{mandir}/man3/Module::Metadata.3pm* + end + end + + package perl-mro + version = 1.26 + + summary = Method resolution order + description + The "mro" name space provides several utilities for dealing with method + resolution order and method caching in general. + end + + requires + perl = %{perl_version} + end + + files + %{libdir}/perl5/auto/mro + %{libdir}/perl5/mro.pm + %{mandir}/man3/mro.3* + end + end + + package perl-NDBM_File + version = 1.15 + + summary = Tied access to ndbm files. + description + NDBM_File establishes a connection between a Perl hash variable and a file in + ndbm format. You can manipulate the data in the file just as if it were in + a Perl hash, but when your program exits, the data will remain in the file, to + be used the next time your program runs. + end + + requires + perl = %{perl_version} + end + + files + %{libdir}/perl5/NDBM_File.pm + %{libdir}/perl5/auto/NDBM_File + %{mandir}/man3/NDBM_File.3* + end + end + + package perl-Net + version = 1.03 + arch = noarch + + summary = By-name interface to Perl built-in network resolver. + description + This package provide object-oriented interface to Perl built-in gethost*(), + getnet*(), getproto*(), and getserv*() functions. + end + + requires + perl = %{perl_version} + perl(Socket) + end + + files + %{datadir}/perl5/Net/hostent.pm + %{datadir}/perl5/Net/netent.pm + %{datadir}/perl5/Net/protoent.pm + %{datadir}/perl5/Net/servent.pm + %{mandir}/man3/Net::hostent.3* + %{mandir}/man3/Net::netent.3* + %{mandir}/man3/Net::protoent.3* + %{mandir}/man3/Net::servent.3* + end + end + + package perl-Net-Ping + version = 2.74 + arch = noarch + + summary = Check a remote host for reachability. + description + Net::Ping module contains methods to test the reachability of remote hosts on + a network. + end + + requires + perl = %{perl_version} + perl(IO::Socket::INET) + end + + # Keep Net::Ping::External optional + suggests + perl(Net::Ping::External) + end + + files + %{datadir}/perl5/Net/Ping.pm + %{mandir}/man3/Net::Ping.* + end + end + + package perl-NEXT + version = 0.69 + arch = noarch + + summary = Pseudo-class that allows method redispatch. + description + The NEXT module adds a pseudo-class named "NEXT" to any program that uses it. + If a method "m" calls "$self->NEXT::m()", the call to "m" is redispatched as + if the calling method had not originally been found. + end + + requires + perl = %{perl_version} + end + + files + %{datadir}/perl5/NEXT.pm + %{mandir}/man3/NEXT.* + end + end + + package perl-ODBM_File + version = 1.17 + + summary = Tied access to odbm files + description + ODBM_File establishes a connection between a Perl hash variable and a file in + odbm format. You can manipulate the data in the file just as if it were in + a Perl hash, but when your program exits, the data will remain in the file, to + be used the next time your program runs. + end + + requires + perl = %{perl_version} + end + + files + %{libdir}/perl5/ODBM_File.pm + %{libdir}/perl5/auto/ODBM_File + %{mandir}/man3/ODBM_File.3* + end + end + + package perl-Opcode + version = 1.57 + + summary = Disable named opcodes when compiling a perl code. + description + The Opcode module allows you to define an operator mask to be in effect when + perl next compiles any code. Attempting to compile code which contains + a masked opcode will cause the compilation to fail with an error. The code + will not be executed. + end + + requires + perl = %{perl_version} + end + + files + %{libdir}/perl5/auto/Opcode + %{libdir}/perl5/Opcode.pm + %{libdir}/perl5/ops.pm + %{mandir}/man3/Opcode.3* + %{mandir}/man3/ops.3* + end + end + + package perl-open + version = 1.13 + arch = noarch + + summary = Perl pragma to set default PerlIO layers for input and output. + description + The "open" pragma serves as one of the interfaces to declare default "layers" + (also known as "disciplines") for all I/O. + end + + requires + perl = %{perl_version} + perl(Carp) + perl(Encode) + perl(encoding) + end + + files + %{datadir}/perl5/open.pm + %{mandir}/man3/open.3* + end + end + + package perl-overload + version = 1.35 + arch = noarch + + summary = Overloading Perl operations. + description + The "overload" pragma allows overloading of Perl operators for a class. To + overload built-in functions, see "Overriding Built-in Functions" in perlsub + POD instead. + end + + requires + perl = %{perl_version} + perl(mro) + perl(Scalar::Util) + perl(overloading) + end + + files + %{datadir}/perl5/overload.pm + %{mandir}/man3/overload.3* + end + end + + package perl-overloading + version = 0.02 + arch = noarch + + summary = Perl pragma to lexically control overloading. + description + Overloading pragma allows you to lexically disable or enable overloading. + end + + requires + perl = %{perl_version} + perl(Carp) + end + + files + %{datadir}/perl5/overload/numbers.pm + %{datadir}/perl5/overloading.pm + %{mandir}/man3/overloading.3* + end + end + + package perl-Params-Check + version = 0.38 + arch = noarch + + summary = Generic input parsing/checking mechanism. + description + Params::Check is a generic input parsing/checking mechanism. + end + + requires + perl = %{perl_version} + end + + provides + perl(Params::Check) + end + + files + %{datadir}/perl5/Params/ + %{mandir}/man3/Params::Check* + end + end + + package perl-Parse-CPAN-Meta + version = 1.4414 + arch = noarch + + summary = Parse META.yml and other similar CPAN metadata files. + description + Parse::CPAN::Meta is a parser for META.yml files, based on the parser half of + YAML::Tiny. + end + + requires + perl = %{perl_version} + end + + files + %{datadir}/perl5/Parse/CPAN/Meta.pm + %{mandir}/man3/Parse::CPAN::Meta.3* + end + end + + package perl-Path-Tools + version = 3.84 + license = (GPL+ or Artistic) and BSD + + summary = PathTools Perl module (Cwd, File::Spec). + description + PathTools Perl module (Cwd, File::Spec). + end + + requires + perl = %{perl_version} + perl(Carp) + perl(Errno) + perl(Scalar::Util) + perl(XSLoader) + end + + files + %{libdir}/perl5/Cwd.pm + %{libdir}/perl5/File/Spec + %{libdir}/perl5/File/Spec* + %{libdir}/perl5/auto/Cwd + %{mandir}/man3/Cwd* + %{mandir}/man3/File::Spec* + end + end + + package perl-PerlIO-via-QuotedPrint + version = 0.09 + arch = noarch + + summary = PerlIO layer for quoted-printable strings. + description + This module implements a PerlIO layer that works on files encoded in the + quoted-printable format. It will decode from quoted-printable while + reading from a handle, and it will encode as quoted-printable while + writing to a handle. + end + + requires + perl = %{perl_version} + end + + files + %{datadir}/perl5/PerlIO/via/ + %{datadir}/perl5/PerlIO/via/QuotedPrint.pm + %{mandir}/man3/PerlIO::via::QuotedPrint.* + end + end + + package perl-Perl-OSType + version = 1.010 + arch = noarch + + summary = Map perl operating system names to generic types. + description + Modules that provide OS-specific behaviors often need to know if the current + operating system matches a more generic type of operating systems. For example, + 'linux' is a type of 'Unix' operating system and so is 'freebsd'. + This module provides a mapping between an operating system name as given by $^O + and a more generic type. The initial version is based on the OS type mappings + provided in Module::Build and ExtUtils::CBuilder (thus, Microsoft operating + systems are given the type 'Windows' rather than 'Win32'). + end + + requires + perl = %{perl_version} + end + + files + %{datadir}/perl5/Perl/OSType.pm + %{mandir}/man3/Perl::OSType.3pm* + end + end + + package perl-ph + version = %{perl_version} + + summary = Selected system header files converted to Perl headers. + description + Contemporary Perl still refers to some Perl header (ph) files although it does + not build them anymore. This is a prebuilt collection of the referred files. + If you miss other ones, you can generate them with h2ph tool from perl-utils + package. + end + + provides + perl(sys/ioctl.ph) = %{perl_version} + perl(sys/syscall.ph) = %{perl_version} + perl(syscall.ph) = %{perl_version} + end + + requires + perl = %{perl_version} + perl-libs = %{perl_version} + perl(warnings) + end + + files + %{libdir}/perl5/asm + %{libdir}/perl5/asm-generic + %{libdir}/perl5/bits + %{libdir}/perl5/features*.ph + %{libdir}/perl5/gnu + %{libdir}/perl5/_h2ph_pre.ph + %{libdir}/perl5/linux + %{libdir}/perl5/stdc-predef.ph + %{libdir}/perl5/sys + %{libdir}/perl5/syscall.ph + end + end + + package perl-Pod-Checker + version = 1.74 + arch = noarch + + summary = Check POD documents for syntax errors. + description + Module and tools to verify POD documentation contents for compliance with the + Plain Old Documentation format specifications. + end + + requires + perl = %{perl_version} + end + + files + %{bindir}/podchecker + %{datadir}/perl5/Pod/Checker.pm + %{mandir}/man1/podchecker.* + %{mandir}/man3/Pod::Checker.* + end + end + + package perl-Pod-Escapes + version = 1.07 + arch = noarch + + summary = Perl module for resolving POD escape sequences. + description + This module provides things that are useful in decoding Pod E<...> sequences. + Presumably, it should be used only by Pod parsers and/or formatters. + end + + requires + perl = %{perl_version} + end + + files + %{datadir}/perl5/Pod/Escapes.pm + %{mandir}/man3/Pod::Escapes.* + end + end + + package perl-Pod-Functions + version = 1.14 + arch = noarch + + summary = Group Perl functions as in perlfunc POD. + description + This module enumerates the Perl functions that are documented in perlfunc POD. + end + + requires + perl = %{perl_version} + perl-libs = %{perl_version} + end + + files + %{datadir}/perl5/Pod/Functions.pm + end + end + + package perl-Pod-HTML + version = 1.33 + arch = noarch + + summary = Convert POD files to HTML. + description + This package converts files from POD format (see perlpod) to HTML format. It + can automatically generate indexes and cross-references, and it keeps a cache + of things it knows how to cross-reference. + end + + requires + perl = %{perl_version} + end + + files + %{bindir}/pod2html + %{datadir}/perl5/Pod/Html + %{datadir}/perl5/Pod/Html.pm + %{mandir}/man1/pod2html.1* + %{mandir}/man3/Pod::Html* + end + end + + package perl-Pod-Perldoc + version = 3.28.1 + arch = noarch + + summary = Look up Perl documentation in Pod format. + description + perldoc looks up a piece of documentation in .pod format that is embedded + in the perl installation tree or in a perl script, and displays it via + "groff -man | $PAGER". This is primarily used for the documentation for + the perl library modules. + end + + requires + perl = %{perl_version} + end + + files + %{bindir}/perldoc + %{datadir}/perl5/pod/perldoc.pod + %{datadir}/perl5/Pod/Perldoc + %{datadir}/perl5/Pod/Perldoc.pm + %{mandir}/man1/perldoc.1* + %{mandir}/man3/Pod::Perldoc* + end + end + + package perl-Pod-Simple + version = 3.43 + arch = noarch + + summary = Framework for parsing POD documentation. + description + Pod::Simple is a Perl library for parsing text in the Pod (plain old + documentation) markup language that is typically used for writing + documentation for Perl and for Perl modules. + end + + requires + perl = %{perl_version} + end + + files + %{datadir}/perl5/Pod/Simple/ + %{datadir}/perl5/Pod/Simple.pm + %{datadir}/perl5/Pod/Simple.pod + %{mandir}/man3/Pod::Simple* + end + end + + package perl-Pod-Usage + version = 2.01 + arch = noarch + + summary = Print a usage message from embedded pod documentation. + description + pod2usage will print a usage message for the invoking script (using its + embedded POD documentation) and then exit the script with the desired exit + status. The usage message printed may have any one of three levels of + "verboseness": If the verbose level is 0, then only a synopsis is printed. + If the verbose level is 1, then the synopsis is printed along with a + description (if present) of the command line options and arguments. If the + verbose level is 2, then the entire manual page is printed. + end + + requires + perl = %{perl_version} + perl(Pod::Text) + end + + files + %{bindir}/pod2usage + %{datadir}/perl5/Pod/Usage.pm + %{mandir}/man1/pod2usage.* + %{mandir}/man3/Pod::Usage.* + end + end + + package perl-parent + version = 0.238 + arch = noarch + + summary = Establish an ISA relationship with base classes at compile time. + description + parent allows you to both load one or more modules, while setting up + inheritance from those modules at the same time. + end + + requires + perl = %{perl_version} + end + + files + %{datadir}/perl5/parent.pm + %{mandir}/man3/parent.3* + end + end + + package perl-podlators + version = 4.14 + arch = noarch + + summary = Format POD source into various output formats. + description + This package contains Pod::Man and Pod::Text modules which convert POD input + to *roff source output, suitable for man pages, or plain text. It also + includes several sub-classes of Pod::Text for formatted output to terminals + with various capabilities. + end + + requires += \ + perl = %{perl_version} \ + perl(File::Spec) >= 0.8 \ + perl(Pod::Simple) >= 3.06 + + files + %{bindir}/pod2man + %{bindir}/pod2text + %{datadir}/perl5/pod/perlpodstyle.pod + %{datadir}/perl5/Pod/Man.pm + %{datadir}/perl5/Pod/ParseLink.pm + %{datadir}/perl5/Pod/Text + %{datadir}/perl5/Pod/Text.pm + %{mandir}/man1/pod2man.1* + %{mandir}/man1/pod2text.1* + %{mandir}/man1/perlpodstyle.1* + %{mandir}/man3/Pod::Man* + %{mandir}/man3/Pod::ParseLink* + %{mandir}/man3/Pod::Text* + end + end + + package perl-POSIX + version = 2.03 + + summary = Perl interface to IEEE Std 1003.1. + description + The POSIX module permits you to access all (or nearly all) the standard POSIX + 1003.1 identifiers. Many of these identifiers have been given Perl interfaces. + end + + requires + perl = %{perl_version} + end + + files + %{libdir}/perl5/auto/POSIX + %{libdir}/perl5/POSIX.* + %{mandir}/man3/POSIX.* + end + end + + package perl-Safe + version = 2.43 + arch = noarch + + summary = Compile and execute code in restricted compartments. + description + The Safe extension module allows the creation of compartments in which Perl + code can be evaluated. Please note that the restriction is not suitable for + security purposes. + end + + requires + perl = %{perl_version} + end + + files + %{datadir}/perl5/Safe.pm + %{mandir}/man3/Safe.* + end + end + + package perl-Scalar-List-Utils + version = 1.62 + + summary = A selection of general-utility scalar and list subroutines. + description + Scalar::Util and List::Util contain a selection of subroutines that people have + expressed would be nice to have in the perl core, but the usage would not + really be high enough to warrant the use of a keyword, and the size so small + such that being individual extensions would be wasteful. + end + + requires + perl = %{perl_version} + end + + files + %{libdir}/perl5/List + %{libdir}/perl5/Scalar + %{libdir}/perl5/Sub + %{libdir}/perl5/auto/List + %{mandir}/man3/List::Util* + %{mandir}/man3/Scalar::Util* + %{mandir}/man3/Sub::Util* + end + end + + package perl-Search-Dict + version = 1.07 + arch = noarch + + summary = Search for a key in a dictionary file. + description + This module sets file position in a file handle to be first line greater than + or equal (string-wise) to a key. + end + + requires + perl = %{perl_version} + end + + files + %{datadir}/perl5/Search + %{mandir}/man3/Search::* + end + end + + package perl-SelectSaver + version = 1.02 + arch = noarch + + summary = Save and restore selected file handle. + description + A "SelectSaver" object contains a reference to the file handle that was + selected when it was created. When the object is destroyed, it re-selects the + file handle that was selected when it was created. + end + + requires + perl = %{perl_version} + end + + files + %{datadir}/perl5/SelectSaver.pm + %{mandir}/man3/SelectSaver.* + end + end + + package perl-SelfLoader + version = 1.26 + arch = noarch + + summary = Load functions only on demand. + description + This Perl module tells its users that functions in a package are to be + autoloaded from after the "__DATA__" token. See also "Autoloading" in + perlsub. + end + + requires + perl = %{perl_version} + perl(Carp) + end + + files + %{datadir}/perl5/SelfLoader.pm + %{mandir}/man3/SelfLoader.* + end + end + + package perl-sigtrap + version = 1.10 + arch = noarch + + summary = Perl pragma to enable simple signal handling. + description + The sigtrap pragma is a simple interface for installing signal handlers. + end + + requires + perl = %{perl_version} + perl(Symbol) + end + + files + %{datadir}/perl5/sigtrap.pm + %{mandir}/man3/sigtrap.* + end + end + + package perl-Socket + version = 2.033 + + summary = C socket.h defines and structure manipulators. + description + This module is just a translation of the C socket.h file. Unlike the old + mechanism of requiring a translated socket.ph file, this uses the h2xs program + (see the Perl source distribution) and your native C compiler. This means + that it has a far more likely chance of getting the numbers right. This + includes all of the commonly used pound-defines like AF_INET, SOCK_STREAM, etc. + end + + requires + perl = %{perl_version} + perl(Carp) + perl(warnings) + end + + files + %{libdir}/perl5/auto/Socket/Socket.* + %{libdir}/perl5/Socket.pm + %{mandir}/man3/Socket.3* + end + end + + package perl-sort + version = 2.05 + arch = noarch + + summary = Perl pragma to control sort() behavior. + description + With the "sort" pragma you can control the behavior of the builtin "sort()" + function. + end + + requires + perl = %{perl_version} + perl(Carp) + perl(warnings) + end + + files + %{datadir}/perl5/sort.pm + %{mandir}/man3/sort.* + end + end + + package perl-Storable + version = 3.26 + + summary = Persistence for Perl data structures. + description + The Storable package brings persistence to your Perl data structures + containing scalar, array, hash or reference objects, i.e. anything that + can be conveniently stored to disk and retrieved at a later time. + end + + requires + perl = %{perl_version} + perl(Carp) + perl(Fcntl) + perl(IO::File) + end + + files + %{libdir}/perl5/Storable.pm + %{libdir}/perl5/auto/Storable + %{mandir}/man3/Storable.* + end + end + + package perl-subs + version = 1.04 + arch = noarch + + summary = Perl pragma to predeclare subroutine names. + description + This will predeclare all the subroutines whose names are in the list, + allowing you to use them without parentheses (as list operators) even + before they're declared. + end + + requires + perl = %{perl_version} + end + + files + %{datadir}/perl5/subs.pm + %{mandir}/man3/subs.* + end + end + + package perl-Symbol + version = 1.09 + arch = noarch + + summary = Manipulate Perl symbols and their names. + description + The Symbol module provides functions for manipulating Perl symbols. + end + + requires + perl = %{perl_version} + end + + files + %{datadir}/perl5/Symbol.pm + %{mandir}/man3/Symbol.* + end + end + + package perl-Sys-Hostname + version = 1.24 + + summary = Try every conceivable way to get a hostname. + description + It attempts several methods of getting the system hostname and then caches the + result. + end + + requires + perl = %{perl_version} + perl(POSIX) + perl(XSLoader) + end + + files + %{libdir}/perl5/auto/Sys/Hostname + %{libdir}/perl5/Sys/Hostname.pm + %{mandir}/man3/Sys::Hostname.* + end + end + + package perl-Sys-Syslog + version = 0.36 + + summary = Perl interface to the UNIX syslog(3) calls. + description + Sys::Syslog is an interface to the UNIX syslog(3) function. Call syslog() with + a string priority and a list of printf() arguments just like at syslog(3). + end + + requires + perl = %{perl_version} + perl(XSLoader) + end + + files + %{libdir}/perl5/Sys/Syslog.pm + %{libdir}/perl5/auto/Sys/Syslog + %{mandir}/man3/Sys::Syslog.* + end + end + + package perl-Term-ANSIColor + version = 5.01 + arch = noarch + + summary = Color screen output using ANSI escape sequences. + description + This module has two interfaces, one through color() and colored() and the + other through constants. It also offers the utility functions uncolor(), + colorstrip(), colorvalid(), and coloralias(), which have to be explicitly + imported to be used. + end + + requires + perl = %{perl_version} + perl(Carp) + end + + files + %{datadir}/perl5/Term/ANSIColor.pm + %{mandir}/man3/Term::ANSIColor* + end + end + + package perl-Term-Cap + version = 2.27 + arch = noarch + + summary = Perl termcap interface. + description + These are low-level functions to extract and use capabilities from a terminal + capability (termcap) database. + end + + requires + perl = %{perl_version} + perl(Carp) + ncurses + end + + files + %{datadir}/perl5/Term/Cap.pm + %{mandir}/man3/Term::Cap.* + end + end + + package perl-Term-Complete + version = 1.403 + arch = noarch + + summary = Perl word completion. + description + "Complete" routine provides word completion on a list of words in the array. + end + + requires + perl = %{perl_version} + end + + files + %{datadir}/perl5/Term/Complete.pm + %{mandir}/man3/Term::Complete.* + end + end + + package perl-Term-ReadLine + version = 1.17 + arch = noarch + + summary = Perl interface to various read-line packages. + description + This package is just a front end to some other packages. It's a stub to + set up a common interface to the various read-line implementations found + on CPAN (under the "Term::ReadLine::*" name space). + end + + requires + perl = %{perl_version} + perl(Term::Cap) + end + + files + %{datadir}/perl5/Term/ReadLine.pm + %{mandir}/man3/Term::ReadLine.* + end + end + + package perl-Test + version = 1.31 + arch = noarch + + summary = Simple framework for writing test scripts. + description + The Test Perl module simplifies the task of writing test files for Perl modules, + such that their output is in the format that Test::Harness expects to see. end
requires - %{perl_requires} + perl = %{perl_version} + perl(File::Temp) end
files - %{bindir}/perldoc - %{datadir}/perl5/pod/perldoc.pod - %{datadir}/perl5/Pod/Perldoc - %{datadir}/perl5/Pod/Perldoc.pm - %{mandir}/man1/perldoc.1* - %{mandir}/man3/Pod::Perldoc* + %{datadir}/perl5/Test.pm + %{mandir}/man3/Test.* end end
- package perl-Pod-Simple - epoch = 0 - version = 3.28 + package perl-Test-Harness + version = 3.44 arch = noarch
- summary = Framework for parsing POD documentation. + summary = Run Perl standard test scripts with statistics. description - Pod::Simple is a Perl library for parsing text in the Pod (plain old - documentation) markup language that is typically used for writing - documentation for Perl and for Perl modules. + Run Perl standard test scripts with statistics. + Use TAP::Parser, Test::Harness package was whole rewritten. end
requires - %{perl_requires} + perl = %{perl_version} end
files - /usr/share/perl5/Pod/Simple/ - /usr/share/perl5/Pod/Simple.pm - /usr/share/perl5/Pod/Simple.pod - /usr/share/man/man3/Pod::Simple* + %{bindir}/prove + %{datadir}/perl5/App/Prove + %{datadir}/perl5/App/Prove* + %{datadir}/perl5/TAP + %{datadir}/perl5/TAP* + %{datadir}/perl5/Test/Harness* + %{mandir}/man1/prove.1* + %{mandir}/man3/App::Prove* + %{mandir}/man3/TAP* + %{mandir}/man3/Test::Harness* end end
- package perl-Pod-Usage - epoch = 0 - version = 1.63 + package perl-Test-Simple + version = 1.302190 arch = noarch
- summary = Print a usage message from embedded pod documentation. + summary = Basic utilities for writing tests. description - pod2usage will print a usage message for the invoking script (using its - embedded POD documentation) and then exit the script with the desired exit - status. The usage message printed may have any one of three levels of - "verboseness": If the verbose level is 0, then only a synopsis is printed. - If the verbose level is 1, then the synopsis is printed along with a - description (if present) of the command line options and arguments. If the - verbose level is 2, then the entire manual page is printed. + Basic utilities for writing tests. end
requires - %{perl_requires} - perl(Pod::Text) + perl = %{perl_version} + perl(Data::Dumper) end
files - %{bindir}/pod2usage - %{datadir}/perl5/Pod/Usage.pm - %{mandir}/man1/pod2usage.* - %{mandir}/man3/Pod::Usage.* + !%{datadir}/perl5/Test/Harness* + !%{mandir}/man3/Test::Harness* + %{datadir}/perl5/ok* + %{datadir}/perl5/Test + %{datadir}/perl5/Test2* + %{datadir}/perl5/Test2 + %{mandir}/man3/ok* + %{mandir}/man3/Test::* + %{mandir}/man3/Test2* end end
- package perl-parent - epoch = 0 - version = 0.228 + package perl-Text-Abbrev + version = 1.02 arch = noarch
- summary = Establish an ISA relationship with base classes at compile time. + summary = Create an abbreviation table from a list. description - parent allows you to both load one or more modules, while setting up - inheritance from those modules at the same time. + It stores all unambiguous truncations of each element of a list as keys in + an associative array. The values are the original list elements. end
requires - %{perl_requires} + perl = %{perl_version} end
files - %{datadir}/perl5/parent.pm - %{mandir}/man3/parent.3* + %{datadir}/perl5/Text/Abbrev.pm + %{mandir}/man3/Text::Abbrev.* end end
- package perl-podlators - epoch = 0 - version = 2.5.1 + package perl-Text-Balanced + version = 2.04 arch = noarch
- summary = Format POD source into various output formats. + summary = Extract delimited text sequences from strings. description - This package contains Pod::Man and Pod::Text modules which convert POD input - to *roff source output, suitable for man pages, or plain text. It also - includes several sub-classes of Pod::Text for formatted output to terminals - with various capabilities. + These Perl subroutines may be used to extract a delimited substring, possibly + after skipping a specified prefix string. end
requires - %{perl_requires} - perl(File::Spec) >= 0.8 - perl(Pod::Simple) >= 3.06 + perl = %{perl_version} end
files - %{bindir}/pod2man - %{bindir}/pod2text - %{datadir}/perl5/pod/perlpodstyle.pod - %{datadir}/perl5/Pod/Man.pm - %{datadir}/perl5/Pod/ParseLink.pm - %{datadir}/perl5/Pod/Text - %{datadir}/perl5/Pod/Text.pm - %{mandir}/man1/pod2man.1* - %{mandir}/man1/pod2text.1* - %{mandir}/man1/perlpodstyle.1* - %{mandir}/man3/Pod::Man* - %{mandir}/man3/Pod::ParseLink* - %{mandir}/man3/Pod::Text* + %{datadir}/perl5/Text/Balanced.pm + %{mandir}/man3/Text::Balanced.* end end
- package perl-Scalar-List-Utils - epoch = 0 - version = 1.28 + package perl-Text-ParseWords + version = 3.31 + arch = noarch
- summary = A selection of general-utility scalar and list subroutines. + summary = Parse text into an array of tokens or array of arrays. description - Scalar::Util and List::Util contain a selection of subroutines that people have - expressed would be nice to have in the perl core, but the usage would not - really be high enough to warrant the use of a keyword, and the size so small - such that being individual extensions would be wasteful. + Parse text into an array of tokens or array of arrays. end
requires - %{perl_requires} + perl = %{perl_version} + perl(Carp) end
files - %{libdir}/perl5/List - %{libdir}/perl5/Scalar - %{libdir}/perl5/auto/List - /usr/share/man/man3/List::Util* - /usr/share/man/man3/Scalar::Util* + %{datadir}/perl5/Text/ParseWords.pm + %{mandir}/man3/Text::ParseWords.* end end
- package perl-Socket - epoch = 0 - version = 2.013 + package perl-Text-Tabs+Wrap + version = 2021.0814 + arch = noarch
- summary = C socket.h defines and structure manipulators. + summary = Expand tabs and do simple line wrapping. description - This module is just a translation of the C socket.h file. Unlike the old - mechanism of requiring a translated socket.ph file, this uses the h2xs program - (see the Perl source distribution) and your native C compiler. This means - that it has a far more likely chance of getting the numbers right. This - includes all of the commonly used pound-defines like AF_INET, SOCK_STREAM, etc. + Text::Tabs performs the same job that the UNIX expand(1) and unexpand(1) + commands do: adding or removing tabs from a document. + + Text::Wrap::wrap() will reformat lines into paragraphs. All it does is break + up long lines, it will not join short lines together. end
requires - %{perl_requires} + perl = %{perl_version} end
files - %{libdir}/perl5/auto/Socket/Socket.* - %{libdir}/perl5/Socket.pm - %{mandir}/man3/Socket.3* + %{datadir}/perl5/Text/Tabs.pm + %{datadir}/perl5/Text/Wrap.pm + %{mandir}/man3/Text::Tabs.* + %{mandir}/man3/Text::Wrap.* end end
- package perl-Storable - epoch = 0 - version = 2.49 + package perl-Thread + version = 3.05 + arch = noarch
- summary = Persistence for Perl data structures. + summary = Manipulate threads in Perl (for old code only). description - The Storable package brings persistence to your Perl data structures - containing scalar, array, hash or reference objects, i.e. anything that - can be conveniently stored to disk and retrieved at a later time. + This Thread module served as the front end to the old-style thread model, + called 5005threads, that has been removed in version 5.10. + + For old code and interim backwards compatibility, the Thread module has been + reworked to function as a front end for the new interpreter threads (ithreads) + model. end
requires - %{perl_requires} - perl(Carp) - perl(Fcntl) - perl(IO::File) + perl = %{perl_version} end
files - %{libdir}/perl5/Storable.pm - %{libdir}/perl5/auto/Storable - %{mandir}/man3/Storable.* + %{datadir}/perl5/Thread.pm + %{mandir}/man3/Thread.* end end
- package perl-Sys-Syslog - epoch = 0 - version = 0.33 + package perl-Thread-Queue + version = 3.14 + arch = noarch
- summary = Perl interface to the UNIX syslog(3) calls. + summary = Thread-safe queues. description - Sys::Syslog is an interface to the UNIX syslog(3) function. Call syslog() with - a string priority and a list of printf() arguments just like at syslog(3). + This module provides thread-safe FIFO queues that can be accessed safely by + any number of threads. end
requires - %{perl_requires} + perl = %{perl_version} + perl(Carp) end
files - %{libdir}/perl5/Sys/Syslog.pm - %{libdir}/perl5/auto/Sys/Syslog - %{mandir}/man3/Sys::Syslog.* + %{datadir}/perl5/Thread/Queue.pm + %{mandir}/man3/Thread::Queue.* end end
- package perl-Term-ANSIColor - epoch = 0 - version = 4.02 + package perl-Tie + version = 4.6 arch = noarch
- summary = Color screen output using ANSI escape sequences. + summary = Base classes for tying variables. description - This module has two interfaces, one through color() and colored() and the - other through constants. It also offers the utility functions uncolor(), - colorstrip(), colorvalid(), and coloralias(), which have to be explicitly - imported to be used. + These are Perl modules that helps connecting classes with arrays, hashes, + handles, and scalars. end
requires - %{perl_requires} + perl = %{perl_version} end
files - %{datadir}/perl5/Term/ANSIColor.pm - %{mandir}/man3/Term::ANSIColor* + %{datadir}/perl5/Tie/Array.pm + %{datadir}/perl5/Tie/Handle.pm + %{datadir}/perl5/Tie/Scalar.pm + %{datadir}/perl5/Tie/StdHandle.pm + %{datadir}/perl5/Tie/SubstrHash.pm + %{mandir}/man3/Tie::Array.* + %{mandir}/man3/Tie::Handle.* + %{mandir}/man3/Tie::Scalar.* + %{mandir}/man3/Tie::StdHandle.* + %{mandir}/man3/Tie::SubstrHash.* end end
- package perl-Test-Harness - epoch = 0 - version = 3.30 + package perl-Tie-File + version = 1.06 arch = noarch
- summary = Run Perl standard test scripts with statistics. + summary = Access the lines of a disk file via a Perl array. description - Run Perl standard test scripts with statistics. - Use TAP::Parser, Test::Harness package was whole rewritten. + Tie::File represents a regular text file as a Perl array. Each element in the + array corresponds to a record in the file. The first line of the file is + element 0 of the array; the second line is element 1, and so on. The file is + not loaded into memory, so this will work even for gigantic files. Changes to + the array are reflected in the file immediately. end
requires - %{perl_requires} + perl = %{perl_version} end
files - /usr/bin/prove - /usr/share/perl5/App* - /usr/share/perl5/TAP* - /usr/share/perl5/Test/Harness* - /usr/share/man/man1/prove.1* - /usr/share/man/man3/App* - /usr/share/man/man3/TAP* - /usr/share/man/man3/Test::Harness* + %{datadir}/perl5/Tie/File.pm + %{mandir}/man3/Tie::File.* end end
- package perl-Test-Simple - epoch = 0 - version = 1.001002 + package perl-Tie-Memoize + version = 1.1 arch = noarch
- summary = Basic utilities for writing tests. + summary = Add data to a hash when needed. description - Basic utilities for writing tests. + This package allows a tied hash to load its values automatically on the first + access, and to use the cached value on the following accesses. end
requires - %{perl_requires} - perl(Data::Dumper) + perl = %{perl_version} + perl(Carp) + perl(Tie::ExtraHash) end
files - /usr/share/perl5/Test/More* - /usr/share/perl5/Test/Builder* - /usr/share/perl5/Test/Simple* - /usr/share/perl5/Test/Tutorial* - /usr/share/man/man3/Test::More* - /usr/share/man/man3/Test::Builder* - /usr/share/man/man3/Test::Simple* - /usr/share/man/man3/Test::Tutorial* + %{datadir}/perl5/Tie/Memoize.pm + %{mandir}/man3/Tie::Memoize.* end end
- package perl-Text-ParseWords - epoch = 0 - version = 3.29 + package perl-Tie-RefHash + version = 1.40 arch = noarch
- summary = Parse text into an array of tokens or array of arrays. + summary = Use references as hash keys. description - Parse text into an array of tokens or array of arrays. + This module provides the ability to use references as hash keys if you first + "tie" the hash variable to this module. Normally, only the keys of the tied + hash itself are preserved as references; to use references as keys in + hashes-of-hashes, use Tie::RefHash::Nestable, included as part of + Tie::RefHash. end
requires - %{perl_requires} - perl(Carp) + perl = %{perl_version} + perl(overload) + perl(Scalar::Util) end
files - %{datadir}/perl5/Text/ParseWords.pm - %{mandir}/man3/Text::ParseWords.* + %{datadir}/perl5/Tie/RefHash.pm + %{mandir}/man3/Tie::RefHash.* end end
- package perl-Thread-Queue - epoch = 0 - version = 3.05 + package perl-Time + version = 1.03 arch = noarch
- summary = Thread-safe queues. + summary = By-name interface to Perl built-in time functions. description - This module provides thread-safe FIFO queues that can be accessed safely by - any number of threads. + This package provides an object-oriented interface to Perl built-in gmtime() + and localtime () functions. end
requires - %{perl_requires} - perl(Carp) + perl = %{perl_version} end
files - %{datadir}/perl5/Thread/Queue.pm - %{mandir}/man3/Thread::Queue.* + %{datadir}/perl5/Time/gmtime.pm + %{datadir}/perl5/Time/localtime.pm + %{datadir}/perl5/Time/tm.pm + %{mandir}/man3/Time::gmtime.* + %{mandir}/man3/Time::localtime.* + %{mandir}/man3/Time::tm.* end end
package perl-Time-HiRes - epoch = 0 - version = 1.9726 + version = 1.9770
summary = High resolution alarm, sleep, gettimeofday, interval timers. description @@ -2307,7 +4117,7 @@ packages end
requires - %{perl_requires} + perl = %{perl_version} perl(Carp) end
@@ -2319,8 +4129,7 @@ packages end
package perl-Time-Local - epoch = 0 - version = 1.2300 + version = 1.300 arch = noarch
summary = Efficiently compute time from local and GMT time. @@ -2334,7 +4143,7 @@ packages end
requires - %{perl_requires} + perl = %{perl_version} end
files @@ -2344,8 +4153,7 @@ packages end
package perl-Time-Piece - epoch = 0 - version = 1.27 + version = 1.3401
summary = Time objects from localtime and gmtime. description @@ -2356,21 +4164,20 @@ packages end
requires - %{perl_requires} + perl = %{perl_version} end
files %{libdir}/perl5/Time/Piece.pm %{libdir}/perl5/Time/Seconds.pm %{libdir}/perl5/auto/Time/Piece/ - /usr/share/man/man3/Time::Piece.3* - /usr/share/man/man3/Time::Seconds.3* + %{mandir}/man3/Time::Piece.3* + %{mandir}/man3/Time::Seconds.3* end end
package perl-threads - epoch = 0 - version = 1.93 + version = 2.27
summary = Perl interpreter-based threads. description @@ -2384,19 +4191,18 @@ packages end
requires - %{perl_requires} + perl = %{perl_version} end
files %{libdir}/perl5/auto/threads/threads* %{libdir}/perl5/threads.pm - /usr/share/man/man3/threads.3* + %{mandir}/man3/threads.3* end end
package perl-threads-shared - epoch = 0 - version = 1.46 + version = 1.64
summary = Perl extension for sharing data structures between threads. description @@ -2409,19 +4215,156 @@ packages end
requires - %{perl_requires} + perl = %{perl_version} end
files - %{libdir}/perl5/auto/threads/shared* + %{libdir}/perl5/auto/threads/shared %{libdir}/perl5/threads/shared* - /usr/share/man/man3/threads::shared* + %{mandir}/man3/threads::shared* + end + end + + package perl-Thread-Semaphore + version = 2.13 + arch = noarch + + summary = Thread-safe semaphores. + description + Semaphores provide a mechanism to regulate access to resources. Unlike locks, + semaphores aren't tied to particular scalars, and so may be used to control + access to anything you care to use them for. Semaphores don't limit their + values to zero and one, so they can be used to control access to some resource + that there may be more than one of (e.g., file handles). Increment and + decrement amounts aren't fixed at one either, so threads can reserve or return + multiple resources at once. + end + + requires + perl = %{perl_version} + perl(Carp) + end + + files + %{datadir}/perl5/Thread/Semaphore.pm + %{mandir}/man3/Thread::Semaphore.* + end + end + + package perl-Unicode-Collate + version = 1.31 + + summary = Unicode Collation Algorithm. + description + This package is Perl implementation of Unicode Technical Standard #10 (Unicode + Collation Algorithm). + end + + requires + perl = %{perl_version} + perl(Unicode::Normalize) + end + + files + %{libdir}/perl5/auto/Unicode/Collate + %{libdir}/perl5/Unicode/Collate + %{libdir}/perl5/Unicode/Collate.pm + %{datadir}/perl5/Unicode/Collate + %{mandir}/man3/Unicode::Collate.* + %{mandir}/man3/Unicode::Collate::* + end + end + + package perl-Unicode-Normalize + version = 1.31 + + summary = Unicode Normalization Forms. + description + This package provides Perl functions that can convert strings into various + Unicode normalization forms as defined in Unicode Standard Annex #15. + end + + requires + perl = %{perl_version} + end + + files + %{libdir}/perl5/auto/Unicode/Normalize + %{libdir}/perl5/Unicode/Normalize.pm + %{mandir}/man3/Unicode::Normalize.* + end + end + + package perl-Unicode-UCD + version = 0.78 + arch = noarch + + summary = Unicode character database. + description + The Unicode::UCD module offers a series of functions that provide a simple + interface to the Unicode Character Database. + end + + requires + perl = %{perl_version} + perl(Storable) + end + + files + %{datadir}/perl5/Unicode/UCD.pm + %{mandir}/man3/Unicode::UCD.* + end + end + + package perl-User-pwent + version = 1.03 + arch = noarch + + summary = By-name interface to Perl built-in user name resolver. + description + This package provides an object-oriented interface to Perl build-in getgr*() + and getpw*() functions. + end + + requires + perl = %{perl_version} + end + + files + %{datadir}/perl5/User + %{mandir}/man3/User::* + end + end + + package perl-vars + version = 1.05 + arch = noarch + + summary = Perl pragma to predeclare global variable names. + description + This pragma will predeclare all the variables whose names are in the + list, allowing you to use them under "use strict", and disabling any + typo warnings for them. + + For use with variables in the current package for a single scope, the + functionality provided by this pragma has been superseded by "our" + declarations, available in Perl v5.6.0 or later, and use of this pragma is + discouraged. + end + + requires + perl = %{perl_version} + perl(Carp) + end + + files + %{datadir}/perl5/vars.pm + %{mandir}/man3/vars.* end end
package perl-version - epoch = 0 - version = 0.99.09 + version = 0.99.29 arch = noarch
summary = Perl extension for Version Objects. @@ -2430,21 +4373,39 @@ packages end
requires - %{perl_requires} + perl = %{perl_version} end
files - /usr/share/perl5/version.pm - /usr/share/perl5/version.pod - /usr/share/perl5/version/ - /usr/share/man/man3/version.3* - /usr/share/man/man3/version::Internals.3* + %{datadir}/perl5/version.pm + %{datadir}/perl5/version.pod + %{datadir}/perl5/version/ + %{mandir}/man3/version.3* + %{mandir}/man3/version::Internals.3* end end
- package perl-core - epoch = 0 + package perl-vmsish + version = 1.04 + arch = noarch + + summary = Perl pragma to control VMS-specific language features. + description + The "vmsish" pragma control VMS-specific features of the Perl language. If + you're not running VMS, this module does nothing. + end
+ requires + perl = %{perl_version} + end + + files + %{datadir}/perl5/vmsish.pm + %{mandir}/man3/vmsish.* + end + end + + package perl-core summary = Base perl metapackage. description A metapackage which requires all of the perl bits and modules in the upstream @@ -2452,94 +4413,183 @@ packages end
requires - %{perl_requires} + perl = %{perl_version} perl-libs perl-devel - perl-App-a2p - perl-App-find2perl - perl-App-s2p perl-Archive-Tar - perl-autodie + perl-Attribute-Handlers + perl-autodie, + perl-AutoLoader + perl-AutoSplit + perl-autouse, + perl-B + perl-base + perl-Benchmark + perl-bignum + perl-blib, + perl-Carp + perl-Class-Struct perl-Compress-Raw-Bzip2 - perl-Compress-Raw-Zlib - perl-CGI + perl-Compress-Raw-Zlib, + perl-constant perl-CPAN perl-CPAN-Meta - perl-CPAN-Meta-YAML perl-CPAN-Meta-Requirements - perl-Carp - perl-constant + perl-CPAN-Meta-YAML perl-Data-Dumper perl-DB_File + perl-DBM_Filter + perl-Devel-Peek perl-Devel-PPPort + perl-Devel-SelfStubber perl-Digest perl-Digest-MD5 perl-Digest-SHA + perl-doc + perl-Dumpvalue + perl-DynaLoader perl-Encode + perl-encoding + perl-encoding-warnings + perl-English perl-Env + perl-experimental perl-Exporter perl-ExtUtils-CBuilder + perl-ExtUtils-Constant perl-ExtUtils-Command perl-ExtUtils-Embed perl-ExtUtils-Install perl-ExtUtils-MakeMaker perl-ExtUtils-Manifest perl-ExtUtils-Miniperl + perl-ExtUtils-MM-Utils perl-ExtUtils-ParseXS - perl-experimental + perl-Fcntl + perl-fields + perl-File-Basename + perl-File-Compare + perl-File-Copy + perl-File-DosGlob perl-File-Fetch + perl-File-Find perl-File-Path + perl-File-stat perl-File-Temp + perl-FileCache + perl-FileHandle + perl-filetest perl-Filter perl-Filter-Simple + perl-FindBin + perl-GDBM_File perl-Getopt-Long + perl-Getopt-Std + perl-Hash-Util + perl-Hash-Util-FieldHash perl-HTTP-Tiny + perl-if + perl-IO perl-IO-Compress perl-IO-Socket-IP perl-IO-Zlib perl-IPC-Cmd + perl-IPC-Open3 + perl-IPC-SysV + perl-I18N-Collate + perl-I18N-Langinfo + perl-I18N-LangTags perl-JSON-PP - perl-Locale-Codes + perl-libnet + perl-libnetcfg + perl-locale perl-Locale-Maketext perl-Locale-Maketext-Simple - perl-Module-Build + perl-Math-BigInt + perl-Math-BigInt-FastCalc + perl-Math-BigRat + perl-Math-Complex + perl-Memoize + perl-MIME-Base64 perl-Module-CoreList perl-Module-CoreList-tools perl-Module-Load perl-Module-Load-Conditional perl-Module-Loaded perl-Module-Metadata - perl-Package-Constants + perl-mro + perl-NDBM_File + perl-Net + perl-Net-Ping + perl-NEXT + perl-ODBM_File + perl-Opcode + perl-open + perl-overload + perl-overloading + perl-parent + perl-Path-Tools perl-Params-Check - perl-Parse-CPAN-Meta + perl-PerlIO-via-QuotedPrint perl-Perl-OSType - perl-Path-Tools + perl-ph perl-Pod-Checker - perl-Pod-Parser + perl-Pod-Escapes + perl-Pod-Functions + perl-Pod-HTML perl-Pod-Perldoc perl-Pod-Simple perl-Pod-Usage - perl-parent perl-podlators + perl-POSIX + perl-Safe perl-Scalar-List-Utils + perl-Search-Dict + perl-SelectSaver + perl-SelfLoader + perl-sigtrap perl-Socket + perl-sort perl-Storable + perl-subs + perl-Symbol + perl-Sys-Hostname perl-Sys-Syslog perl-Term-ANSIColor + perl-Term-Cap + perl-Term-Complete + perl-Term-ReadLine + perl-Test perl-Test-Harness perl-Test-Simple + perl-Text-Abbrev + perl-Text-Balanced perl-Text-ParseWords + perl-Text-Tabs+Wrap + perl-Thread perl-Thread-Queue + perl-Thread-Semaphore + perl-threads + perl-threads-shared + perl-Tie + perl-Tie-File + perl-Tie-Memoize + perl-Tie-RefHash + perl-Time perl-Time-HiRes perl-Time-Local perl-Time-Piece - perl-threads - perl-threads-shared + perl-Unicode-Collate + perl-Unicode-Normalize + perl-Unicode-UCD + perl-User-pwent + perl-vars perl-version + perl-vmsish end
- # Nothing. Nada. Zilch. Zarro. Uh uh. Nope. Sorry. files + # Nothing. Nada. Zilch. Zarro. Uh uh. Nope. Sorry. end end
diff --git a/rhash/rhash.nm b/rhash/rhash.nm index ddb420dcd..534a2aa6b 100644 --- a/rhash/rhash.nm +++ b/rhash/rhash.nm @@ -4,12 +4,12 @@ ###############################################################################
name = rhash -version = 1.3.8 +version = 1.4.3 release = 1 thisapp = RHash-%{version}
groups = Development/Tools -url = http://rhash.sf.net/ +url = https://rhash.sf.net/ license = BSD summary = Great utility for computing hash sums
diff --git a/snort/snort.nm b/snort/snort.nm new file mode 100644 index 000000000..3334d5b9b --- /dev/null +++ b/snort/snort.nm @@ -0,0 +1,60 @@ +############################################################################### +# IPFire.org - An Open Source Firewall Solution # +# Copyright (C) - IPFire Development Team info@ipfire.org # +############################################################################### + +name = snort +version = 3.1.50.0 +release = 1 +thisapp = snort3-%{version} + +groups = Networking/Tools +url = https://github.com/snort3/snort3 +license = GPLv2 +summary = A Network Intrusion Detection/Prevention System + +description + Snort 3 is the next generation Snort IPS (Intrusion Prevention System). +end + +source_dl = https://github.com/snort3/snort3/archive/refs/tags/%%7Bversion%7D.tar.gz#/ + +build + requires + cmake + flex-devel >= 2.6.0 + hwloc-devel + libdaq-devel >= 3.0.10 + libdnet-devel + libpcap-devel + libtirpc-devel + libunwind-devel + libuuid-devel + luajit-devel + openssl-devel + pcre-devel + xz-devel + zlib-devel + + # Hyperscan only exists on x86_64 + (hyperscan-devel if arch(x86_64)) + end + + build + %{cmake} . + + make %{PARALLELISMFLAGS} + end +end + +packages + package %{name} + + package %{name}-devel + template DEVEL + end + + package %{name}-debuginfo + template DEBUGINFO + end +end diff --git a/sudo/sudo.nm b/sudo/sudo.nm index 4cfedd29f..1ccd04f3c 100644 --- a/sudo/sudo.nm +++ b/sudo/sudo.nm @@ -4,13 +4,13 @@ ###############################################################################
name = sudo -version = 1.8.20p2 +version = 1.9.12p1 release = 1
groups = Applications/System -url = http://www.sudo.ws/ +url = https://www.sudo.ws/ license = BSD -summary = Allows restricted root access for specified users. +summary = Allows restricted root access for specified users
description Sudo (superuser do) allows a system administrator to give certain @@ -24,7 +24,7 @@ description on many different machines. end
-source_dl = http://www.sudo.ws/sudo/dist/ +source_dl = https://www.sudo.ws/sudo/dist/
build requires @@ -66,8 +66,6 @@ end
packages package %{name} - groups += Base - configfiles %{sysconfdir}/sudoers end diff --git a/suricata-update/suricata-update.nm b/suricata-update/suricata-update.nm deleted file mode 100644 index 35bd9599d..000000000 --- a/suricata-update/suricata-update.nm +++ /dev/null @@ -1,40 +0,0 @@ -############################################################################### -# IPFire.org - An Open Source Firewall Solution # -# Copyright (C) - IPFire Development Team info@ipfire.org # -############################################################################### - -name = suricata-update -version = 1.0.5 -release = 1 -thisapp = %{name}-%{version} -arch = noarch - -groups = Development/Tools -url = https://github.com/OISF/suricata-update -license = LGPLv2+ -summary = A tool for updating Suricata rules. - -description - This package contains a Python written tool to update the used rules for - suricata. -end - -source_dl = https://github.com/OISF/%%7Bname%7D/archive/%%7Bversion%7D.tar.gz#/ - -build - build - %{python3} setup.py build - end - - install - %{python3} setup.py install --root=%{BUILDROOT} - end -end - -packages - package %{name} - - package %{name}-debuginfo - template DEBUGINFO - end -end diff --git a/suricata/suricata.conf b/suricata/suricata.conf deleted file mode 100644 index 3fc11c704..000000000 --- a/suricata/suricata.conf +++ /dev/null @@ -1,523 +0,0 @@ -%YAML 1.1 ---- -# Suricata Emergingthreats Pro Open Rulesets Recommended -reference-config-file: /etc/suricata/rules/reference.config - -# Number of packets allowed to be processed simultaneously. Default is a -# conservative 50. a higher number will make sure CPU's/CPU cores will be -# more easily kept busy, but will negatively impact caching. -# -# If you are using the CUDA pattern matcher (b2g_cuda below), different rules -# apply. In that case try something like 4000 or more. This is because the CUDA -# pattern matcher scans many packets in parallel. -#max-pending-packets: 50 - -# Set the order of alerts bassed on actions -# The default order is pass, drop, reject, alert -action-order: - - pass - - drop - - reject - - alert - - -# The default logging directory. Any log or output file will be -# placed here if its not specified with a full path name. This can be -# overridden with the -l command line parameter. -default-log-dir: /var/log/suricata - -# Configure the type of alert (and other) logging you would like. -outputs: - - # a line based alerts log similar to Snort's fast.log - - fast: - enabled: yes - filename: fast.log - - # log output for use with Barnyard - - unified-log: - enabled: no - filename: unified.log - - #limit: 32mb - - # alert output for use with Barnyard - - unified-alert: - enabled: no - filename: unified.alert - - #limit: 32mb - - # alert output for use with Barnyard2 - - unified2-alert: - enabled: no - filename: unified2.alert - - #limit: 32mb - - # a line based log of HTTP requests (no alerts) - - http-log: - enabled: yes - filename: http.log - - # a full alerts log containing much information for signature writers - # or for investigating suspected false positives. - - alert-debug: - enabled: no - filename: alert-debug.log - - # alert output to prelude (http://www.prelude-technologies.com/) only - # available if Suricata has been compiled with --enable-prelude - - alert-prelude: - enabled: no - profile: suricata - -defrag: - max-frags: 65535 - prealloc: yes - timeout: 60 - -# You can specify a threshold config file by setting "threshold-file" -# to the path of the threshold config file: -# threshold-file: /etc/suricata/threshold.config - -# The detection engine builds internal groups of signatures. The engine -# allow us to specify the profile to use for them, to manage memory on an -# efficient way keeping a good performance. For the profile keyword you -# can use the words "low", "medium", "high" or "custom". If you use custom -# make sure to define the values at "- custom-values" as your convenience. -# Usually you would prefer medium/high/low -detect-engine: - - profile: medium - - custom-values: - toclient_src_groups: 2 - toclient_dst_groups: 2 - toclient_sp_groups: 2 - toclient_dp_groups: 3 - toserver_src_groups: 2 - toserver_dst_groups: 4 - toserver_sp_groups: 2 - toserver_dp_groups: 25 - -# Suricata is multi-threaded. Here the threading can be influenced. -threading: - # On some cpu's/architectures it is beneficial to tie individual threads - # to specific CPU's/CPU cores. In this case all threads are tied to CPU0, - # and each extra CPU/core has one "detect" thread. - # - # On Intel Core2 and Nehalem CPU's enabling this will degrade performance. - # - set_cpu_affinity: no - # - # By default Suricata creates one "detect" thread per available CPU/CPU core. - # This setting allows controlling this behaviour. A ratio setting of 2 will - # create 2 detect threads for each CPU/CPU core. So for a dual core CPU this - # will result in 4 detect threads. If values below 1 are used, less threads - # are created. So on a dual core CPU a setting of 0.5 results in 1 detect - # thread being created. Regardless of the setting at a minimum 1 detect - # thread will always be created. - # - detect_thread_ratio: 1.5 - -# Select the cuda device to use. The device_id identifies the device to be used -# if one has multiple devices on the system. To find out device_id associated -# with the card(s) on the system run "suricata --list-cuda-cards". -cuda: - device_id: 0 - -# Select the multi pattern algorithm you want to run for scan/search the -# in the engine. The supported algorithms are b2g, b3g and wumanber. -# -# There is also a CUDA pattern matcher (only available if Suricata was -# compiled with --enable-cuda: b2g_cuda. Make sure to update your -# max-pending-packets setting above as well if you use b2g_cuda. - -mpm-algo: b2g - -# The memory settings for hash size of these algorithms can vary from lowest -# (2048) - low (4096) - medium (8192) - high (16384) - highest (32768) - max -# (65536). The bloomfilter sizes of these algorithms can vary from low (512) - -# medium (1024) - high (2048). -# -# For B2g/B3g algorithms, there is a support for two different scan/search -# algorithms. For B2g the scan algorithms are B2gScan & B2gScanBNDMq, and -# search algorithms are B2gSearch & B2gSearchBNDMq. For B3g scan algorithms -# are B3gScan & B3gScanBNDMq, and search algorithms are B3gSearch & -# B3gSearchBNDMq. -# -# For B2g the different scan/search algorithms and, hash and bloom -# filter size settings. For B3g the different scan/search algorithms and, hash -# and bloom filter size settings. For wumanber the hash and bloom filter size -# settings. - -pattern-matcher: - - b2g: - scan_algo: B2gScanBNDMq - search_algo: B2gSearchBNDMq - hash_size: low - bf_size: medium - - b3g: - scan_algo: B3gScanBNDMq - search_algo: B3gSearchBNDMq - hash_size: low - bf_size: medium - - wumanber: - hash_size: low - bf_size: medium - -# Flow settings: -# By default, the reserved memory (memcap) for flows is 32MB. This is the limit -# for flow allocation inside the engine. You can change this value to allow -# more memory usage for flows. -# The hash_size determine the size of the hash used to identify flows inside -# the engine, and by default the value is 65536. -# At the startup, the engine can preallocate a number of flows, to get a better -# performance. The number of flows preallocated is 10000 by default. -# emergency_recovery is the percentage of flows that the engine need to -# prune before unsetting the emergency state. The emergency state is activated -# when the memcap limit is reached, allowing to create new flows, but -# prunning them with the emergency timeouts (they are defined below). -# If the memcap is reached, the engine will try to prune prune_flows -# with the default timeouts. If it doens't find a flow to prune, it will set -# the emergency bit and it will try again with more agressive timeouts. -# If that doesn't work, then it will try to kill the last time seen flows -# not in use. - -flow: - memcap: 33554432 - hash_size: 65536 - prealloc: 10000 - emergency_recovery: 30 - prune_flows: 5 - -# Specific timeouts for flows. Here you can specify the timeouts that the -# active flows will wait to transit from the current state to another, on each -# protocol. The value of "new" determine the seconds to wait after a hanshake or -# stream startup before the engine free the data of that flow it doesn't -# change the state to established (usually if we don't receive more packets -# of that flow). The value of "established" is the amount of -# seconds that the engine will wait to free the flow if it spend that amount -# without receiving new packets or closing the connection. "closed" is the -# amount of time to wait after a flow is closed (usually zero). -# -# There's an emergency mode that will become active under attack circumstances, -# making the engine to check flow status faster. This configuration variables -# use the prefix "emergency_" and work similar as the normal ones. -# Some timeouts doesn't apply to all the protocols, like "closed", for udp and -# icmp. - -flow-timeouts: - - default: - new: 30 - established: 300 - closed: 0 - emergency_new: 10 - emergency_established: 100 - emergency_closed: 0 - tcp: - new: 60 - established: 3600 - closed: 120 - emergency_new: 10 - emergency_established: 300 - emergency_closed: 20 - udp: - new: 30 - established: 300 - emergency_new: 10 - emergency_established: 100 - icmp: - new: 30 - established: 300 - emergency_new: 10 - emergency_established: 100 - -# Stream engine settings. Here the TCP stream tracking and reaasembly -# engine is configured. -# -# stream: -# memcap: 33554432 # 32mb tcp session memcap -# checksum_validation: yes # To validate the checksum of received - # packet. If csum validation is specified as - # "yes", then packet with invalid csum will not - # be processed by the engine stream/app layer. -# max_sessions: 262144 # 256k concurrent sessions -# prealloc_sessions: 32768 # 32k sessions prealloc'd -# midstream: false # don't allow midstream session pickups -# async_oneside: false # don't enable async stream handling -# reassembly: -# memcap: 67108864 # 64mb tcp reassembly memcap -# depth: 1048576 # 1 MB reassembly depth -stream: - memcap: 33554432 - checksum_validation: yes - inline: yes - reassembly: - memcap: 67108864 - depth: 1048576 - -# Logging configuration. This is not about logging IDS alerts, but -# IDS output about what its doing, errors, etc. -logging: - - # The default log level, can be overridden in an output section. - # Note that debug level logging will only be emitted if Suricata was - # compiled with the --enable-debug configure option. - # - # This value is overriden by the SC_LOG_LEVEL env var. - default-log-level: info - - # The default output format. Optional parameter, should default to - # something reasonable if not provided. Can be overriden in an - # output section. You can leave this out to get the default. - # - # This value is overriden by the SC_LOG_FORMAT env var. - #default-log-format: "[%i] %t - (%f:%l) <%d> (%n) -- " - - # A regex to filter output. Can be overridden in an output section. - # Defaults to empty (no filter). - # - # This value is overriden by the SC_LOG_OP_FILTER env var. - default-output-filter: - - # Define your logging outputs. If none are defined, or they are all - # disabled you will get the default - console output. - outputs: - - console: - enabled: yes - - file: - enabled: yes - filename: /var/log/suricata.log - - syslog: - enabled: no - facility: local5 - format: "[%i] <%d> -- " - - drop: - enabled: yes - filename: drop.log - append: yes - -nfq: - mode: repeat - repeat_mark: 1 - repeat_mask: 1 - -# PF_RING configuration. for use with native PF_RING support -# for more info see http://www.ntop.org/PF_RING.html -pfring: - - # Default interface we will listen on. - interface: eth0 - - # Default clusterid. PF_RING will load balance packets based on flow. - # All threads/processes that will participate need to have the same - # clusterid. - cluster-id: 99 - - # Default PF_RING cluster type. PF_RING can load balance per flow or per hash. - # This is only supported in versions of PF_RING > 4.1.1. - cluster-type: cluster_round_robin - -# For FreeBSD ipfw(8) divert(4) support. -# Please make sure you have ipfw_load="YES" and ipdivert_load="YES" -# in /etc/loader.conf or kldload'ing the appropriate kernel modules. -# Additionally, you need to have an ipfw rule for the engine to see -# the packets from ipfw. For Example: -# -# ipfw add 100 divert 8000 ip from any to any -# -# The 8000 above should be the same number you passed on the command -# line, i.e. -d 8000 -# -ipfw: - - # Reinject packets at the specified ipfw rule number. This config - # option is the ipfw rule number AT WHICH rule processing continues - # in the ipfw processing system after the engine has finished - # inspecting the packet for acceptance. If no rule number is specified, - # accepted packets are reinjected at the divert rule which they entered - # and IPFW rule processing continues. No check is done to verify - # this will rule makes sense so care must be taken to avoid loops in ipfw. - # - ## The following example tells the engine to reinject packets - # back into the ipfw firewall AT rule number 5500: - # - # ipfw-reinjection-rule-number: 5500 - -# Set the default rule path here to search for the files. -# if not set, it will look at the current working dir -default-rule-path: /etc/suricata/rules/ -rule-files: -# - emerging-ftp.rules -# - emerging-policy.rules -# - emerging-trojan.rules -# - emerging-games.rules -# - emerging-pop3.rules -# - emerging-user_agents.rules -# - emerging-activex.rules -# - emerging-rpc.rules -# - emerging-virus.rules -# - emerging-attack_response.rules -# - emerging-icmp.rules -# - emerging-scan.rules -# - emerging-scada.rules -# - emerging-voip.rules -# - emerging-chat.rules -# - emerging-icmp_info.rules -# - emerging-shellcode.rules -# - emerging-web_client.rules -# - emerging-imap.rules -# - emerging-web_server.rules -# - emerging-current_events.rules -# - emerging-inappropriate.rules -# - emerging-smtp.rules -# - emerging-web_specific_apps.rules -# - emerging-deleted.rules -# - emerging-malware.rules -# - emerging-snmp.rules -# - emerging-worm.rules -# - emerging-dns.rules -# - emerging-misc.rules -# - emerging-sql.rules -# - emerging-dos.rules -# - emerging-netbios.rules -# - emerging-telnet.rules -# - emerging-exploit.rules -# - emerging-p2p.rules -# - emerging-tftp.rules -# - emerging-botcc.rules -# - emerging-compromised.rules -# - emerging-drop.rules -# - emerging-dshield.rules -# - emerging-rbn.rules -# - emerging-rbn-malvertisers.rules -# - emerging-tor.rules -# - emerging-mobile_malware.rules - -classification-file: /etc/suricata/rules/classification.config - -# Holds variables that would be used by the engine. -vars: - - # Holds the address group vars that would be passed in a Signature. - # These would be retrieved during the Signature address parsing stage. - address-groups: - - HOME_NET: "[192.168.0.0/16,10.0.0.0/8,172.16.0.0/12]" - - EXTERNAL_NET: any - - HTTP_SERVERS: "$HOME_NET" - - SMTP_SERVERS: "$HOME_NET" - - SQL_SERVERS: "$HOME_NET" - - DNS_SERVERS: "$HOME_NET" - - TELNET_SERVERS: "$HOME_NET" - - AIM_SERVERS: any - -#These vars are required if you're using the Digitalbond Scada signatures in the scada.rules category -# DNP3_SERVER: "$HOME_NET" -# DNP3_CLIENT: "$HOME_NET" -# MODBUS_CLIENT: "$HOME_NET" -# MODBUS_SERVER: "$HOME_NET" -# ENIP_CLIENT: "$HOME_NET" -# ENIP_SERVER: "$HOME_NET" - - - # Holds the port group vars that would be passed in a Signature. - # These would be retrieved during the Signature port parsing stage. - port-groups: - - HTTP_PORTS: "80" - - SHELLCODE_PORTS: "!80" - - ORACLE_PORTS: 1521 - - SSH_PORTS: 22 - -# DNP3_PORTS: 20000 - -# Host specific policies for defragmentation and TCP stream -# reassembly. The host OS lookup is done using a radix tree, just -# like a routing table so the most specific entry matches. -host-os-policy: - # Make the default policy windows. - windows: [0.0.0.0/0] - bsd: [] - bsd_right: [] - old_linux: [] - linux: [10.0.0.0/8, 192.168.1.100, "8762:2352:6241:7245:E000:0000:0000:0000"] - old_solaris: [] - solaris: ["::1"] - hpux10: [] - hpux11: [] - irix: [] - macos: [] - vista: [] - windows2k3: [] - -########################################################################### -# Configure libhtp. -# -# -# default-config: Used when no server-config matches -# personality: List of personalities used by default -# -# server-config: List of server configurations to use if address matches -# address: List of ip addresses or networks for this block -# personalitiy: List of personalities used by this block -# -# Currently Available Personalities: -# Minimal -# Generic -# IDS (default) -# IIS_4_0 -# IIS_5_0 -# IIS_5_1 -# IIS_6_0 -# IIS_7_0 -# IIS_7_5 -# Apache -# Apache_2_2 -########################################################################### -libhtp: - - default-config: - personality: IDS - - server-config: - - - apache: - address: [192.168.1.0/24, 127.0.0.0/8, "::1"] - personality: Apache_2_2 - - - iis7: - address: - - 192.168.0.0/24 - - 192.168.10.0/24 - personality: IIS_7_0 - -# rule profiling settings. Only effective if Suricata has been built with the -# the --enable-profiling configure flag. -# -profiling: - - rules: - - # Profiling can be disabled here, but it will still have a - # performance impact if compiled in. - enabled: yes - - # Sort options: ticks, avgticks, checks, matches - sort: avgticks - - # Limit the number of items printed at exit. - limit: 100 - - diff --git a/suricata/suricata.logrotate b/suricata/suricata.logrotate deleted file mode 100644 index c4ece8c08..000000000 --- a/suricata/suricata.logrotate +++ /dev/null @@ -1,9 +0,0 @@ -/var/log/suricata/*.log { - daily - missingok - rotate 5 - compress - delaycompress - copytruncate - minsize 500k -} diff --git a/suricata/suricata.nm b/suricata/suricata.nm deleted file mode 100644 index 4825612e2..000000000 --- a/suricata/suricata.nm +++ /dev/null @@ -1,100 +0,0 @@ -############################################################################### -# IPFire.org - An Open Source Firewall Solution # -# Copyright (C) - IPFire Development Team info@ipfire.org # -############################################################################### - -name = suricata -version = 4.0.6 -release = 3 - -groups = Networking/IDS -url = http://www.openinfosecfoundation.org/ -license = GPLv2 -summary = Open Source Next Generation Intrusion Detection and Prevention Engine. - -description - The suricata engine is not intended to just replace or emulate the - existing tools in the industry, but provides new ideas and - technologies. -end - -source_dl = http://www.openinfosecfoundation.org/download/ - -build - requires - file-devel - libcap-ng-devel - libnfnetlink-devel - libnetfilter_queue-devel - libnet-devel - libpcap-devel - libyaml-devel - libhtp-devel >= 0.5.20 - pcre-devel - pkg-config - zlib-devel >= 1.2.5-2 - end - - configure_options += \ - --enable-gccprotect \ - --enable-nfqueue \ - --disable-gccmarch-native \ - --disable-static \ - --enable-non-bundled-htp \ - --with-libhtp-includes=%{includedir}/htp \ - --with-libhtp-libraries=%{libdir} - - # Enable hyperscan only on x86 - if "%{DISTRO_PLATFORM}" == "x86" - requires += hyperscan-devel - configure_options += --enable-hyperscan - end - - install_cmds - mkdir -pv %{BUILDROOT}%{sysconfdir} - mkdir -pv %{BUILDROOT}%{sysconfdir}/suricata - mkdir -pv %{BUILDROOT}%{sysconfdir}/suricata/rules - cp -vf %{DIR_SOURCE}/%{name}.conf %{BUILDROOT}%{sysconfdir}/suricata - mkdir -pv %{BUILDROOT}%{localstatedir}/log/suricata - end - -end - - -packages - package %{name} - - prerquires = systemd-units - - configfiles - %{sysconfdir}/suricata/suricata.conf - end - - script postin - systemctl daemon-reload >/dev/null 2>&1 || : - end - - script preun - systemctl --no-reload disable suricata.service >/dev/null 2>&1 || : - systemctl stop suricata.service >/dev/null 2>&1 || : - end - - script postun - systemctl daemon-reload >/dev/null 2>&1 || : - end - - script postup - systemctl daemon-reload >/dev/null 2>&1 || : - systemctl try-restart suricata.service >/dev/null 2>&1 || : - end - - end - - package %{name}-devel - template DEVEL - end - - package %{name}-debuginfo - template DEBUGINFO - end -end diff --git a/suricata/systemd/suricata.service b/suricata/systemd/suricata.service deleted file mode 100644 index 24cfa98cc..000000000 --- a/suricata/systemd/suricata.service +++ /dev/null @@ -1,14 +0,0 @@ -[Unit] -Description=Open Source Next Generation Intrusion Detection and Prevention Engine -After=syslog.target network.target - -[Service] -Type=forking -ExecStart=/usr/bin/suricata -c /etc/suricata/suricata.conf -q 0 -q 1 -D -ExecStartPost=/sbin/iptables -I INPUT -mark ! --mark 1/1 -j NFQUEUE -–queue-balance 0:1 -ExecReload=/bin/kill -HUP $MAINPID -ExecStop=/sbin/iptables -D INPUT -j NFQUEUE -–queue-balance 0:1 -ExecStopPost=/bin/kill $MAINPID - -[Install] -WantedBy=multi-user.target diff --git a/texinfo/texinfo.nm b/texinfo/texinfo.nm index b1b6d821c..166d68e1d 100644 --- a/texinfo/texinfo.nm +++ b/texinfo/texinfo.nm @@ -4,11 +4,11 @@ ###############################################################################
name = texinfo -version = 6.1 -release = 2 +version = 7.0.1 +release = 1
groups = Applications/Publishing -url = http://www.gnu.org/software/texinfo/ +url = https://www.gnu.org/software/texinfo/ license = GPLv3 summary = Tools needed to create Texinfo format documentation files.
@@ -18,7 +18,7 @@ description Project uses the Texinfo file format for most of its documentation. end
-source_dl = http://ftp.gnu.org/gnu/texinfo/ +source_dl = https://ftp.gnu.org/gnu/texinfo/
build requires diff --git a/transmission/systemd/transmission-daemon.service b/transmission/systemd/transmission-daemon.service deleted file mode 100644 index 8692007ef..000000000 --- a/transmission/systemd/transmission-daemon.service +++ /dev/null @@ -1,11 +0,0 @@ -[Unit] -Description=Transmission Daemon -After=network.target - -[Service] -User=transmission -ExecStart=/usr/bin/transmission-daemon -f --blocklist -g /var/lib/transmission/.config/transmission - -[Install] -WantedBy=multi-user.target - diff --git a/transmission/transmission.nm b/transmission/transmission.nm deleted file mode 100644 index 8790aca2b..000000000 --- a/transmission/transmission.nm +++ /dev/null @@ -1,120 +0,0 @@ -############################################################################### -# IPFire.org - An Open Source Firewall Solution # -# Copyright (C) - IPFire Development Team info@ipfire.org # -############################################################################### - -name = transmission -version = 2.84 -release = 1 - -groups = Internet/P2P -url = https://trac.transmissionbt.com -license = GPLv3 -summary = A BitTorrent client. - -description - Transmission is a BitTorrent client which features a simple - interface on top of a cross-platform back-end. -end - -source_dl = http://download.transmissionbt.com/files/ -sources = %{thisapp}.tar.xz - -build - requires - intltool - libcurl-devel - libevent-devel - openssl-devel - shadow-utils - zlib-devel - end - - prepare_cmds - # Create transmission user and group. - %{create_user} - end - - install_cmds - # Create missing folders and set correct ownership. - mkdir -pv %{BUILDROOT}%{sharedstatedir}/transmission - chown transmission:transmission %{BUILDROOT}%{sharedstatedir}/transmission - end -end - -create_user - getent group transmission >/dev/null || groupadd -r transmission - getent passwd transmission >/dev/null || \ - useradd -r -g transmission -d %{sharedstatedir}/transmission -s /sbin/nologin \ - -c "transmission daemon" transmission -end - -packages - package %{name} - - package %{name}-cli - summary = Transmission command line implementation. - description - Command line version of Transmission BitTorrent client. - end - - requires - transmission = %{thisver} - end - - files - %{bindir}/transmission-cli - %{mandir}/man1/transmission-cli* - end - end - - package %{name}-daemon - summary = Transmission daemon. - description - Transmission BitTorrent client daemon. - end - - prerequires += shadow-utils - - requires - transmission = %{thisver} - end - - datadir - %{sharedstatedir}/transmission - end - - files - %{bindir}/transmission-daemon - %{mandir}/man1/transmission-daemon* - %{unitdir}/transmission-daemon.service - %{sharedstatedir}/transmission - end - - script prein - %{create_user} - end - - script postin - systemctl daemon-reload >/dev/null 2>&1 || : - end - - script preun - systemctl --no-reload disable transmission-daemon.service >/dev/null 2>&1 || : - systemctl stop transmission-daemon.service >/dev/null 2>&1 || : - end - - script postun - systemctl daemon-reload >/dev/null 2>&1 || : - end - - script postup - systemctl daemon-reload >/dev/null 2>&1 || : - systemctl try-restart transmission-daemon.service >/dev/null 2>&1 || : - end - end - - package %{name}-debuginfo - template DEBUGINFO - end -end diff --git a/tree/tree.nm b/tree/tree.nm index 7a7352e38..5c3cb32b1 100644 --- a/tree/tree.nm +++ b/tree/tree.nm @@ -4,11 +4,11 @@ ###############################################################################
name = tree -version = 1.7.0 -release = 2 +version = 2.1.0 +release = 1
groups = Applications/File -url = http://mama.indstate.edu/users/ice/tree/ +url = https://mama.indstate.edu/users/ice/tree/ license = GPLv2+ summary = File system tree viewer.
@@ -18,7 +18,7 @@ description utility. end
-source_dl = ftp://mama.indstate.edu/linux/tree/ +source_dl = https://mama.indstate.edu/users/ice/tree/src/ sources = %{thisapp}.tgz
build diff --git a/unzip/patches/0001-Fix-CVE-2016-9844-rhbz-1404283.patch b/unzip/patches/0001-Fix-CVE-2016-9844-rhbz-1404283.patch new file mode 100644 index 000000000..0e4a17339 --- /dev/null +++ b/unzip/patches/0001-Fix-CVE-2016-9844-rhbz-1404283.patch @@ -0,0 +1,39 @@ +From 754137e70cf58a64ad524b704a86b651ba0cde07 Mon Sep 17 00:00:00 2001 +From: Petr Stodulka pstodulk@redhat.com +Date: Wed, 14 Dec 2016 16:30:36 +0100 +Subject: [PATCH] Fix CVE-2016-9844 (rhbz#1404283) + +Fixes buffer overflow in zipinfo in similar way like fix for +CVE-2014-9913 provided by upstream. +--- + zipinfo.c | 14 +++++++++++++- + 1 file changed, 13 insertions(+), 1 deletion(-) + +diff --git a/zipinfo.c b/zipinfo.c +index c03620e..accca2a 100644 +--- a/zipinfo.c ++++ b/zipinfo.c +@@ -1984,7 +1984,19 @@ static int zi_short(__G) /* return PK-type error code */ + ush dnum=(ush)((G.crec.general_purpose_bit_flag>>1) & 3); + methbuf[3] = dtype[dnum]; + } else if (methnum >= NUM_METHODS) { /* unknown */ +- sprintf(&methbuf[1], "%03u", G.crec.compression_method); ++ /* 2016-12-05 SMS. ++ * https://launchpad.net/bugs/1643750 ++ * Unexpectedly large compression methods overflow ++ * &methbuf[]. Use the old, three-digit decimal format ++ * for values which fit. Otherwise, sacrifice the "u", ++ * and use four-digit hexadecimal. ++ */ ++ if (G.crec.compression_method <= 999) { ++ sprintf( &methbuf[ 1], "%03u", G.crec.compression_method); ++ } else { ++ sprintf( &methbuf[ 0], "%04X", G.crec.compression_method); ++ } ++ + } + + for (k = 0; k < 15; ++k) +-- +2.5.5 + diff --git a/unzip/patches/unzip-6.0-COVSCAN-fix-unterminated-string.patch b/unzip/patches/unzip-6.0-COVSCAN-fix-unterminated-string.patch new file mode 100644 index 000000000..717377119 --- /dev/null +++ b/unzip/patches/unzip-6.0-COVSCAN-fix-unterminated-string.patch @@ -0,0 +1,131 @@ +From 06d1b08aef94984256cad3c5a54cedb10295681f Mon Sep 17 00:00:00 2001 +From: Jakub Martisko jamartis@redhat.com +Date: Thu, 8 Nov 2018 09:31:18 +0100 +Subject: [PATCH] Possible unterminated string fix + +--- + unix/unix.c | 4 +++- + unix/unxcfg.h | 2 +- + unzip.c | 12 ++++++++---- + zipinfo.c | 12 ++++++++---- + 4 files changed, 20 insertions(+), 10 deletions(-) + +diff --git a/unix/unix.c b/unix/unix.c +index 59b622d..cd57f80 100644 +--- a/unix/unix.c ++++ b/unix/unix.c +@@ -1945,7 +1945,9 @@ void init_conversion_charsets() + for(i = 0; i < sizeof(dos_charset_map)/sizeof(CHARSET_MAP); i++) + if(!strcasecmp(local_charset, dos_charset_map[i].local_charset)) { + strncpy(OEM_CP, dos_charset_map[i].archive_charset, +- sizeof(OEM_CP)); ++ MAX_CP_NAME - 1); ++ ++ OEM_CP[MAX_CP_NAME - 1] = '\0'; + break; + } + } +diff --git a/unix/unxcfg.h b/unix/unxcfg.h +index 8729de2..9ee8cfe 100644 +--- a/unix/unxcfg.h ++++ b/unix/unxcfg.h +@@ -228,7 +228,7 @@ typedef struct stat z_stat; + /* and notfirstcall are used by do_wild(). */ + + +-#define MAX_CP_NAME 25 ++#define MAX_CP_NAME 25 + 1 + + #ifdef SETLOCALE + # undef SETLOCALE +diff --git a/unzip.c b/unzip.c +index 2d94a38..a485f2b 100644 +--- a/unzip.c ++++ b/unzip.c +@@ -1561,7 +1561,8 @@ int uz_opts(__G__ pargc, pargv) + "error: a valid character encoding should follow the -I argument")); + return(PK_PARAM); + } +- strncpy(ISO_CP, s, sizeof(ISO_CP)); ++ strncpy(ISO_CP, s, MAX_CP_NAME - 1); ++ ISO_CP[MAX_CP_NAME - 1] = '\0'; + } else { /* -I charset */ + ++argv; + if(!(--argc > 0 && *argv != NULL && **argv != '-')) { +@@ -1570,7 +1571,8 @@ int uz_opts(__G__ pargc, pargv) + return(PK_PARAM); + } + s = *argv; +- strncpy(ISO_CP, s, sizeof(ISO_CP)); ++ strncpy(ISO_CP, s, MAX_CP_NAME - 1); ++ ISO_CP[MAX_CP_NAME - 1] = '\0'; + } + while(*(++s)); /* No params straight after charset name */ + } +@@ -1665,7 +1667,8 @@ int uz_opts(__G__ pargc, pargv) + "error: a valid character encoding should follow the -I argument")); + return(PK_PARAM); + } +- strncpy(OEM_CP, s, sizeof(OEM_CP)); ++ strncpy(OEM_CP, s, MAX_CP_NAME - 1); ++ OEM_CP[MAX_CP_NAME - 1] = '\0'; + } else { /* -O charset */ + ++argv; + if(!(--argc > 0 && *argv != NULL && **argv != '-')) { +@@ -1674,7 +1677,8 @@ int uz_opts(__G__ pargc, pargv) + return(PK_PARAM); + } + s = *argv; +- strncpy(OEM_CP, s, sizeof(OEM_CP)); ++ strncpy(OEM_CP, s, MAX_CP_NAME - 1); ++ OEM_CP[MAX_CP_NAME - 1] = '\0'; + } + while(*(++s)); /* No params straight after charset name */ + } +diff --git a/zipinfo.c b/zipinfo.c +index accca2a..cb7e08d 100644 +--- a/zipinfo.c ++++ b/zipinfo.c +@@ -519,7 +519,8 @@ int zi_opts(__G__ pargc, pargv) + "error: a valid character encoding should follow the -I argument")); + return(PK_PARAM); + } +- strncpy(ISO_CP, s, sizeof(ISO_CP)); ++ strncpy(ISO_CP, s, MAX_CP_NAME - 1); ++ ISO_CP[MAX_CP_NAME - 1] = '\0'; + } else { /* -I charset */ + ++argv; + if(!(--argc > 0 && *argv != NULL && **argv != '-')) { +@@ -528,7 +529,8 @@ int zi_opts(__G__ pargc, pargv) + return(PK_PARAM); + } + s = *argv; +- strncpy(ISO_CP, s, sizeof(ISO_CP)); ++ strncpy(ISO_CP, s, MAX_CP_NAME - 1); ++ ISO_CP[MAX_CP_NAME - 1] = '\0'; + } + while(*(++s)); /* No params straight after charset name */ + } +@@ -568,7 +570,8 @@ int zi_opts(__G__ pargc, pargv) + "error: a valid character encoding should follow the -I argument")); + return(PK_PARAM); + } +- strncpy(OEM_CP, s, sizeof(OEM_CP)); ++ strncpy(OEM_CP, s, MAX_CP_NAME - 1); ++ OEM_CP[MAX_CP_NAME - 1] = '\0'; + } else { /* -O charset */ + ++argv; + if(!(--argc > 0 && *argv != NULL && **argv != '-')) { +@@ -577,7 +580,8 @@ int zi_opts(__G__ pargc, pargv) + return(PK_PARAM); + } + s = *argv; +- strncpy(OEM_CP, s, sizeof(OEM_CP)); ++ strncpy(OEM_CP, s, MAX_CP_NAME - 1); ++ OEM_CP[MAX_CP_NAME - 1] = '\0'; + } + while(*(++s)); /* No params straight after charset name */ + } +-- +2.14.5 + diff --git a/unzip/patches/unzip-6.0-alt-iconv-utf8-print.patch b/unzip/patches/unzip-6.0-alt-iconv-utf8-print.patch new file mode 100644 index 000000000..0b0153ba5 --- /dev/null +++ b/unzip/patches/unzip-6.0-alt-iconv-utf8-print.patch @@ -0,0 +1,381 @@ +From ca0212ba19b64488b9e8459a762c11ecd6e7d0bd Mon Sep 17 00:00:00 2001 +From: Petr Stodulka pstodulk@redhat.com +Date: Tue, 24 Nov 2015 17:56:11 +0100 +Subject: [PATCH] print correctly non-ascii filenames + +--- + extract.c | 289 ++++++++++++++++++++++++++++++++++++++++++++++++-------------- + unzpriv.h | 7 ++ + 2 files changed, 233 insertions(+), 63 deletions(-) + +diff --git a/extract.c b/extract.c +index 0ee4e93..741b7e0 100644 +--- a/extract.c ++++ b/extract.c +@@ -2648,8 +2648,21 @@ static void set_deferred_symlink(__G__ slnk_entry) + } /* end function set_deferred_symlink() */ + #endif /* SYMLINKS */ + ++/* ++ * If Unicode is supported, assume we have what we need to do this ++ * check using wide characters, avoiding MBCS issues. ++ */ + +- ++#ifndef UZ_FNFILTER_REPLACECHAR ++ /* A convenient choice for the replacement of unprintable char codes is ++ * the "single char wildcard", as this character is quite unlikely to ++ * appear in filenames by itself. The following default definition ++ * sets the replacement char to a question mark as the most common ++ * "single char wildcard"; this setting should be overridden in the ++ * appropiate system-specific configuration header when needed. ++ */ ++# define UZ_FNFILTER_REPLACECHAR '?' ++#endif + + /*************************/ + /* Function fnfilter() */ /* here instead of in list.c for SFX */ +@@ -2661,48 +2674,168 @@ char *fnfilter(raw, space, size) /* convert name to safely printable form */ + extent size; + { + #ifndef NATIVE /* ASCII: filter ANSI escape codes, etc. */ +- ZCONST uch *r=(ZCONST uch *)raw; ++ ZCONST uch *r; // =(ZCONST uch *)raw; + uch *s=space; + uch *slim=NULL; + uch *se=NULL; + int have_overflow = FALSE; + +- if (size > 0) { +- slim = space + size +-#ifdef _MBCS +- - (MB_CUR_MAX - 1) +-#endif +- - 4; ++# if defined( UNICODE_SUPPORT) && defined( _MBCS) ++/* If Unicode support is enabled, and we have multi-byte characters, ++ * then do the isprint() checks by first converting to wide characters ++ * and checking those. This avoids our having to parse multi-byte ++ * characters for ourselves. After the wide-char replacements have been ++ * made, the wide string is converted back to the local character set. ++ */ ++ wchar_t *wstring; /* wchar_t version of raw */ ++ size_t wslen; /* length of wstring */ ++ wchar_t *wostring; /* wchar_t version of output string */ ++ size_t woslen; /* length of wostring */ ++ char *newraw; /* new raw */ ++ ++ /* 2012-11-06 SMS. ++ * Changed to check the value returned by mbstowcs(), and bypass the ++ * Unicode processing if it fails. This seems to fix a problem ++ * reported in the SourceForge forum, but it's not clear that we ++ * should be doing any Unicode processing without some evidence that ++ * the name actually is Unicode. (Check bit 11 in the flags before ++ * coming here?) ++ * http://sourceforge.net/p/infozip/bugs/40/ ++ */ ++ ++ if (MB_CUR_MAX <= 1) ++ { ++ /* There's no point to converting multi-byte chars if there are ++ * no multi-byte chars. ++ */ ++ wslen = (size_t)-1; + } +- while (*r) { +- if (size > 0 && s >= slim && se == NULL) { +- se = s; ++ else ++ { ++ /* Get Unicode wide character count (for storage allocation). */ ++ wslen = mbstowcs( NULL, raw, 0); ++ } ++ ++ if (wslen != (size_t)-1) ++ { ++ /* Apparently valid Unicode. Allocate wide-char storage. */ ++ wstring = (wchar_t *)malloc((wslen + 1) * sizeof(wchar_t)); ++ if (wstring == NULL) { ++ strcpy( (char *)space, raw); ++ return (char *)space; + } +-#ifdef QDOS +- if (qlflag & 2) { +- if (*r == '/' || *r == '.') { ++ wostring = (wchar_t *)malloc(2 * (wslen + 1) * sizeof(wchar_t)); ++ if (wostring == NULL) { ++ free(wstring); ++ strcpy( (char *)space, raw); ++ return (char *)space; ++ } ++ ++ /* Convert the multi-byte Unicode to wide chars. */ ++ wslen = mbstowcs(wstring, raw, wslen + 1); ++ ++ /* Filter the wide-character string. */ ++ fnfilterw( wstring, wostring, (2 * (wslen + 1) * sizeof(wchar_t))); ++ ++ /* Convert filtered wide chars back to multi-byte. */ ++ woslen = wcstombs( NULL, wostring, 0); ++ if ((newraw = malloc(woslen + 1)) == NULL) { ++ free(wstring); ++ free(wostring); ++ strcpy( (char *)space, raw); ++ return (char *)space; ++ } ++ woslen = wcstombs( newraw, wostring, (woslen * MB_CUR_MAX) + 1); ++ ++ if (size > 0) { ++ slim = space + size - 4; ++ } ++ r = (ZCONST uch *)newraw; ++ while (*r) { ++ if (size > 0 && s >= slim && se == NULL) { ++ se = s; ++ } ++# ifdef QDOS ++ if (qlflag & 2) { ++ if (*r == '/' || *r == '.') { ++ if (se != NULL && (s > (space + (size-3)))) { ++ have_overflow = TRUE; ++ break; ++ } ++ ++r; ++ *s++ = '_'; ++ continue; ++ } ++ } else ++# endif ++ { + if (se != NULL && (s > (space + (size-3)))) { + have_overflow = TRUE; + break; + } +- ++r; +- *s++ = '_'; +- continue; ++ *s++ = *r++; + } +- } else ++ } ++ if (have_overflow) { ++ strcpy((char *)se, "..."); ++ } else { ++ *s = '\0'; ++ } ++ ++ free(wstring); ++ free(wostring); ++ free(newraw); ++ } ++ else ++# endif /* defined( UNICODE_SUPPORT) && defined( _MBCS) */ ++ { ++ /* No Unicode support, or apparently invalid Unicode. */ ++ r = (ZCONST uch *)raw; ++ ++ if (size > 0) { ++ slim = space + size ++#ifdef _MBCS ++ - (MB_CUR_MAX - 1) ++#endif ++ - 4; ++ } ++ while (*r) { ++ if (size > 0 && s >= slim && se == NULL) { ++ se = s; ++ } ++#ifdef QDOS ++ if (qlflag & 2) { ++ if (*r == '/' || *r == '.') { ++ if (se != NULL && (s > (space + (size-3)))) { ++ have_overflow = TRUE; ++ break; ++ } ++ ++r; ++ *s++ = '_'; ++ continue; ++ } ++ } else + #endif + #ifdef HAVE_WORKING_ISPRINT +-# ifndef UZ_FNFILTER_REPLACECHAR +- /* A convenient choice for the replacement of unprintable char codes is +- * the "single char wildcard", as this character is quite unlikely to +- * appear in filenames by itself. The following default definition +- * sets the replacement char to a question mark as the most common +- * "single char wildcard"; this setting should be overridden in the +- * appropiate system-specific configuration header when needed. +- */ +-# define UZ_FNFILTER_REPLACECHAR '?' +-# endif +- if (!isprint(*r)) { ++ if (!isprint(*r)) { ++ if (*r < 32) { ++ /* ASCII control codes are escaped as "^{letter}". */ ++ if (se != NULL && (s > (space + (size-4)))) { ++ have_overflow = TRUE; ++ break; ++ } ++ *s++ = '^', *s++ = (uch)(64 + *r++); ++ } else { ++ /* Other unprintable codes are replaced by the ++ * placeholder character. */ ++ if (se != NULL && (s > (space + (size-3)))) { ++ have_overflow = TRUE; ++ break; ++ } ++ *s++ = UZ_FNFILTER_REPLACECHAR; ++ INCSTR(r); ++ } ++#else /* !HAVE_WORKING_ISPRINT */ + if (*r < 32) { + /* ASCII control codes are escaped as "^{letter}". */ + if (se != NULL && (s > (space + (size-4)))) { +@@ -2710,47 +2843,30 @@ char *fnfilter(raw, space, size) /* convert name to safely printable form */ + break; + } + *s++ = '^', *s++ = (uch)(64 + *r++); ++#endif /* ?HAVE_WORKING_ISPRINT */ + } else { +- /* Other unprintable codes are replaced by the +- * placeholder character. */ ++#ifdef _MBCS ++ unsigned i = CLEN(r); ++ if (se != NULL && (s > (space + (size-i-2)))) { ++ have_overflow = TRUE; ++ break; ++ } ++ for (; i > 0; i--) ++ *s++ = *r++; ++#else + if (se != NULL && (s > (space + (size-3)))) { + have_overflow = TRUE; + break; + } +- *s++ = UZ_FNFILTER_REPLACECHAR; +- INCSTR(r); +- } +-#else /* !HAVE_WORKING_ISPRINT */ +- if (*r < 32) { +- /* ASCII control codes are escaped as "^{letter}". */ +- if (se != NULL && (s > (space + (size-4)))) { +- have_overflow = TRUE; +- break; +- } +- *s++ = '^', *s++ = (uch)(64 + *r++); +-#endif /* ?HAVE_WORKING_ISPRINT */ +- } else { +-#ifdef _MBCS +- unsigned i = CLEN(r); +- if (se != NULL && (s > (space + (size-i-2)))) { +- have_overflow = TRUE; +- break; +- } +- for (; i > 0; i--) + *s++ = *r++; +-#else +- if (se != NULL && (s > (space + (size-3)))) { +- have_overflow = TRUE; +- break; +- } +- *s++ = *r++; + #endif +- } +- } +- if (have_overflow) { +- strcpy((char *)se, "..."); +- } else { +- *s = '\0'; ++ } ++ } ++ if (have_overflow) { ++ strcpy((char *)se, "..."); ++ } else { ++ *s = '\0'; ++ } + } + + #ifdef WINDLL +@@ -2772,6 +2888,53 @@ char *fnfilter(raw, space, size) /* convert name to safely printable form */ + } /* end function fnfilter() */ + + ++#if defined( UNICODE_SUPPORT) && defined( _MBCS) ++ ++/****************************/ ++/* Function fnfilter[w]() */ /* (Here instead of in list.c for SFX.) */ ++/****************************/ ++ ++/* fnfilterw() - Convert wide name to safely printable form. */ ++ ++/* fnfilterw() - Convert wide-character name to safely printable form. */ ++ ++wchar_t *fnfilterw( src, dst, siz) ++ ZCONST wchar_t *src; /* Pointer to source char (string). */ ++ wchar_t *dst; /* Pointer to destination char (string). */ ++ extent siz; /* Not used (!). */ ++{ ++ wchar_t *dsx = dst; ++ ++ /* Filter the wide chars. */ ++ while (*src) ++ { ++ if (iswprint( *src)) ++ { ++ /* Printable code. Copy it. */ ++ *dst++ = *src; ++ } ++ else ++ { ++ /* Unprintable code. Substitute something printable for it. */ ++ if (*src < 32) ++ { ++ /* Replace ASCII control code with "^{letter}". */ ++ *dst++ = (wchar_t)'^'; ++ *dst++ = (wchar_t)(64 + *src); ++ } ++ else ++ { ++ /* Replace other unprintable code with the placeholder. */ ++ *dst++ = (wchar_t)UZ_FNFILTER_REPLACECHAR; ++ } ++ } ++ src++; ++ } ++ *dst = (wchar_t)0; /* NUL-terminate the destination string. */ ++ return dsx; ++} /* fnfilterw(). */ ++ ++#endif /* defined( UNICODE_SUPPORT) && defined( _MBCS) */ + + + #ifdef SET_DIR_ATTRIB +diff --git a/unzpriv.h b/unzpriv.h +index 22d3923..e48a652 100644 +--- a/unzpriv.h ++++ b/unzpriv.h +@@ -1212,6 +1212,7 @@ + # ifdef UNICODE_WCHAR + # if !(defined(_WIN32_WCE) || defined(POCKET_UNZIP)) + # include <wchar.h> ++# include <wctype.h> + # endif + # endif + # ifndef _MBCS /* no need to include <locale.h> twice, see below */ +@@ -2410,6 +2411,12 @@ int memflush OF((__GPRO__ ZCONST uch *rawbuf, ulg size)); + char *fnfilter OF((ZCONST char *raw, uch *space, + extent size)); + ++# if defined( UNICODE_SUPPORT) && defined( _MBCS) ++wchar_t *fnfilterw OF((ZCONST wchar_t *src, wchar_t *dst, ++ extent siz)); ++#endif ++ ++ + /*--------------------------------------------------------------------------- + Decompression functions: + ---------------------------------------------------------------------------*/ +-- +2.4.3 + diff --git a/unzip/patches/unzip-6.0-alt-iconv-utf8.patch b/unzip/patches/unzip-6.0-alt-iconv-utf8.patch new file mode 100644 index 000000000..b9e37774e --- /dev/null +++ b/unzip/patches/unzip-6.0-alt-iconv-utf8.patch @@ -0,0 +1,398 @@ +From: Giovanni Scafora <giovanni.archlinux.org> +Subject: unzip files encoded with non-latin, non-unicode file names +Last-Update: 2015-02-11 + +Updated 2015-02-11 by Marc Deslauriers marc.deslauriers@canonical.com +to fix buffer overflow in charset_to_intern() + +Index: unzip-6.0/unix/unix.c +=================================================================== +--- unzip-6.0.orig/unix/unix.c 2015-02-11 08:46:43.675324290 -0500 ++++ unzip-6.0/unix/unix.c 2015-02-11 09:18:04.902081319 -0500 +@@ -30,6 +30,9 @@ + #define UNZIP_INTERNAL + #include "unzip.h" + ++#include <iconv.h> ++#include <langinfo.h> ++ + #ifdef SCO_XENIX + # define SYSNDIR + #else /* SCO Unix, AIX, DNIX, TI SysV, Coherent 4.x, ... */ +@@ -1874,3 +1877,102 @@ + } + } + #endif /* QLZIP */ ++ ++ ++typedef struct { ++ char *local_charset; ++ char *archive_charset; ++} CHARSET_MAP; ++ ++/* A mapping of local <-> archive charsets used by default to convert filenames ++ * of DOS/Windows Zip archives. Currently very basic. */ ++static CHARSET_MAP dos_charset_map[] = { ++ { "ANSI_X3.4-1968", "CP850" }, ++ { "ISO-8859-1", "CP850" }, ++ { "CP1252", "CP850" }, ++ { "UTF-8", "CP866" }, ++ { "KOI8-R", "CP866" }, ++ { "KOI8-U", "CP866" }, ++ { "ISO-8859-5", "CP866" } ++}; ++ ++char OEM_CP[MAX_CP_NAME] = ""; ++char ISO_CP[MAX_CP_NAME] = ""; ++ ++/* Try to guess the default value of OEM_CP based on the current locale. ++ * ISO_CP is left alone for now. */ ++void init_conversion_charsets() ++{ ++ const char *local_charset; ++ int i; ++ ++ /* Make a guess only if OEM_CP not already set. */ ++ if(*OEM_CP == '\0') { ++ local_charset = nl_langinfo(CODESET); ++ for(i = 0; i < sizeof(dos_charset_map)/sizeof(CHARSET_MAP); i++) ++ if(!strcasecmp(local_charset, dos_charset_map[i].local_charset)) { ++ strncpy(OEM_CP, dos_charset_map[i].archive_charset, ++ sizeof(OEM_CP)); ++ break; ++ } ++ } ++} ++ ++/* Convert a string from one encoding to the current locale using iconv(). ++ * Be as non-intrusive as possible. If error is encountered during covertion ++ * just leave the string intact. */ ++static void charset_to_intern(char *string, char *from_charset) ++{ ++ iconv_t cd; ++ char *s,*d, *buf; ++ size_t slen, dlen, buflen; ++ const char *local_charset; ++ ++ if(*from_charset == '\0') ++ return; ++ ++ buf = NULL; ++ local_charset = nl_langinfo(CODESET); ++ ++ if((cd = iconv_open(local_charset, from_charset)) == (iconv_t)-1) ++ return; ++ ++ slen = strlen(string); ++ s = string; ++ ++ /* Make sure OUTBUFSIZ + 1 never ends up smaller than FILNAMSIZ ++ * as this function also gets called with G.outbuf in fileio.c ++ */ ++ buflen = FILNAMSIZ; ++ if (OUTBUFSIZ + 1 < FILNAMSIZ) ++ { ++ buflen = OUTBUFSIZ + 1; ++ } ++ ++ d = buf = malloc(buflen); ++ if(!d) ++ goto cleanup; ++ ++ bzero(buf,buflen); ++ dlen = buflen - 1; ++ ++ if(iconv(cd, &s, &slen, &d, &dlen) == (size_t)-1) ++ goto cleanup; ++ strncpy(string, buf, buflen); ++ ++ cleanup: ++ free(buf); ++ iconv_close(cd); ++} ++ ++/* Convert a string from OEM_CP to the current locale charset. */ ++inline void oem_intern(char *string) ++{ ++ charset_to_intern(string, OEM_CP); ++} ++ ++/* Convert a string from ISO_CP to the current locale charset. */ ++inline void iso_intern(char *string) ++{ ++ charset_to_intern(string, ISO_CP); ++} +Index: unzip-6.0/unix/unxcfg.h +=================================================================== +--- unzip-6.0.orig/unix/unxcfg.h 2015-02-11 08:46:43.675324290 -0500 ++++ unzip-6.0/unix/unxcfg.h 2015-02-11 08:46:43.671324260 -0500 +@@ -228,4 +228,30 @@ + /* wild_dir, dirname, wildname, matchname[], dirnamelen, have_dirname, */ + /* and notfirstcall are used by do_wild(). */ + ++ ++#define MAX_CP_NAME 25 ++ ++#ifdef SETLOCALE ++# undef SETLOCALE ++#endif ++#define SETLOCALE(category, locale) setlocale(category, locale) ++#include <locale.h> ++ ++#ifdef _ISO_INTERN ++# undef _ISO_INTERN ++#endif ++#define _ISO_INTERN(str1) iso_intern(str1) ++ ++#ifdef _OEM_INTERN ++# undef _OEM_INTERN ++#endif ++#ifndef IZ_OEM2ISO_ARRAY ++# define IZ_OEM2ISO_ARRAY ++#endif ++#define _OEM_INTERN(str1) oem_intern(str1) ++ ++void iso_intern(char *); ++void oem_intern(char *); ++void init_conversion_charsets(void); ++ + #endif /* !__unxcfg_h */ +Index: unzip-6.0/unzip.c +=================================================================== +--- unzip-6.0.orig/unzip.c 2015-02-11 08:46:43.675324290 -0500 ++++ unzip-6.0/unzip.c 2015-02-11 08:46:43.675324290 -0500 +@@ -327,11 +327,21 @@ + -2 just filenames but allow -h/-t/-z -l long Unix "ls -l" format\n\ + -v verbose, multi-page format\n"; + ++#ifndef UNIX + static ZCONST char Far ZipInfoUsageLine3[] = "miscellaneous options:\n\ + -h print header line -t print totals for listed files or for all\n\ + -z print zipfile comment -T print file times in sortable decimal format\ + \n -C be case-insensitive %s\ + -x exclude filenames that follow from listing\n"; ++#else /* UNIX */ ++static ZCONST char Far ZipInfoUsageLine3[] = "miscellaneous options:\n\ ++ -h print header line -t print totals for listed files or for all\n\ ++ -z print zipfile comment %c-T%c print file times in sortable decimal format\ ++\n %c-C%c be case-insensitive %s\ ++ -x exclude filenames that follow from listing\n\ ++ -O CHARSET specify a character encoding for DOS, Windows and OS/2 archives\n\ ++ -I CHARSET specify a character encoding for UNIX and other archives\n"; ++#endif /* !UNIX */ + #ifdef MORE + static ZCONST char Far ZipInfoUsageLine4[] = + " -M page output through built-in "more"\n"; +@@ -664,6 +674,17 @@ + -U use escapes for all non-ASCII Unicode -UU ignore any Unicode fields\n\ + -C match filenames case-insensitively -L make (some) names \ + lowercase\n %-42s -V retain VMS version numbers\n%s"; ++#elif (defined UNIX) ++static ZCONST char Far UnzipUsageLine4[] = "\ ++modifiers:\n\ ++ -n never overwrite existing files -q quiet mode (-qq => quieter)\n\ ++ -o overwrite files WITHOUT prompting -a auto-convert any text files\n\ ++ -j junk paths (do not make directories) -aa treat ALL files as text\n\ ++ -U use escapes for all non-ASCII Unicode -UU ignore any Unicode fields\n\ ++ -C match filenames case-insensitively -L make (some) names \ ++lowercase\n %-42s -V retain VMS version numbers\n%s\ ++ -O CHARSET specify a character encoding for DOS, Windows and OS/2 archives\n\ ++ -I CHARSET specify a character encoding for UNIX and other archives\n\n"; + #else /* !VMS */ + static ZCONST char Far UnzipUsageLine4[] = "\ + modifiers:\n\ +@@ -802,6 +823,10 @@ + #endif /* UNICODE_SUPPORT */ + + ++#ifdef UNIX ++ init_conversion_charsets(); ++#endif ++ + #if (defined(__IBMC__) && defined(__DEBUG_ALLOC__)) + extern void DebugMalloc(void); + +@@ -1335,6 +1360,11 @@ + argc = *pargc; + argv = *pargv; + ++#ifdef UNIX ++ extern char OEM_CP[MAX_CP_NAME]; ++ extern char ISO_CP[MAX_CP_NAME]; ++#endif ++ + while (++argv, (--argc > 0 && *argv != NULL && **argv == '-')) { + s = *argv + 1; + while ((c = *s++) != 0) { /* "!= 0": prevent Turbo C warning */ +@@ -1516,6 +1546,35 @@ + } + break; + #endif /* MACOS */ ++#ifdef UNIX ++ case ('I'): ++ if (negative) { ++ Info(slide, 0x401, ((char *)slide, ++ "error: encodings can't be negated")); ++ return(PK_PARAM); ++ } else { ++ if(*s) { /* Handle the -Icharset case */ ++ /* Assume that charsets can't start with a dash to spot arguments misuse */ ++ if(*s == '-') { ++ Info(slide, 0x401, ((char *)slide, ++ "error: a valid character encoding should follow the -I argument")); ++ return(PK_PARAM); ++ } ++ strncpy(ISO_CP, s, sizeof(ISO_CP)); ++ } else { /* -I charset */ ++ ++argv; ++ if(!(--argc > 0 && *argv != NULL && **argv != '-')) { ++ Info(slide, 0x401, ((char *)slide, ++ "error: a valid character encoding should follow the -I argument")); ++ return(PK_PARAM); ++ } ++ s = *argv; ++ strncpy(ISO_CP, s, sizeof(ISO_CP)); ++ } ++ while(*(++s)); /* No params straight after charset name */ ++ } ++ break; ++#endif /* ?UNIX */ + case ('j'): /* junk pathnames/directory structure */ + if (negative) + uO.jflag = FALSE, negative = 0; +@@ -1591,6 +1650,35 @@ + } else + ++uO.overwrite_all; + break; ++#ifdef UNIX ++ case ('O'): ++ if (negative) { ++ Info(slide, 0x401, ((char *)slide, ++ "error: encodings can't be negated")); ++ return(PK_PARAM); ++ } else { ++ if(*s) { /* Handle the -Ocharset case */ ++ /* Assume that charsets can't start with a dash to spot arguments misuse */ ++ if(*s == '-') { ++ Info(slide, 0x401, ((char *)slide, ++ "error: a valid character encoding should follow the -I argument")); ++ return(PK_PARAM); ++ } ++ strncpy(OEM_CP, s, sizeof(OEM_CP)); ++ } else { /* -O charset */ ++ ++argv; ++ if(!(--argc > 0 && *argv != NULL && **argv != '-')) { ++ Info(slide, 0x401, ((char *)slide, ++ "error: a valid character encoding should follow the -O argument")); ++ return(PK_PARAM); ++ } ++ s = *argv; ++ strncpy(OEM_CP, s, sizeof(OEM_CP)); ++ } ++ while(*(++s)); /* No params straight after charset name */ ++ } ++ break; ++#endif /* ?UNIX */ + case ('p'): /* pipes: extract to stdout, no messages */ + if (negative) { + uO.cflag = FALSE; +Index: unzip-6.0/unzpriv.h +=================================================================== +--- unzip-6.0.orig/unzpriv.h 2015-02-11 08:46:43.675324290 -0500 ++++ unzip-6.0/unzpriv.h 2015-02-11 08:46:43.675324290 -0500 +@@ -3008,7 +3008,7 @@ + !(((islochdr) || (isuxatt)) && \ + ((hostver) == 25 || (hostver) == 26 || (hostver) == 40))) || \ + (hostnum) == FS_HPFS_ || \ +- ((hostnum) == FS_NTFS_ && (hostver) == 50)) { \ ++ ((hostnum) == FS_NTFS_ /* && (hostver) == 50 */ )) { \ + _OEM_INTERN((string)); \ + } else { \ + _ISO_INTERN((string)); \ +Index: unzip-6.0/zipinfo.c +=================================================================== +--- unzip-6.0.orig/zipinfo.c 2015-02-11 08:46:43.675324290 -0500 ++++ unzip-6.0/zipinfo.c 2015-02-11 08:46:43.675324290 -0500 +@@ -457,6 +457,10 @@ + int tflag_slm=TRUE, tflag_2v=FALSE; + int explicit_h=FALSE, explicit_t=FALSE; + ++#ifdef UNIX ++ extern char OEM_CP[MAX_CP_NAME]; ++ extern char ISO_CP[MAX_CP_NAME]; ++#endif + + #ifdef MACOS + uO.lflag = LFLAG; /* reset default on each call */ +@@ -501,6 +505,35 @@ + uO.lflag = 0; + } + break; ++#ifdef UNIX ++ case ('I'): ++ if (negative) { ++ Info(slide, 0x401, ((char *)slide, ++ "error: encodings can't be negated")); ++ return(PK_PARAM); ++ } else { ++ if(*s) { /* Handle the -Icharset case */ ++ /* Assume that charsets can't start with a dash to spot arguments misuse */ ++ if(*s == '-') { ++ Info(slide, 0x401, ((char *)slide, ++ "error: a valid character encoding should follow the -I argument")); ++ return(PK_PARAM); ++ } ++ strncpy(ISO_CP, s, sizeof(ISO_CP)); ++ } else { /* -I charset */ ++ ++argv; ++ if(!(--argc > 0 && *argv != NULL && **argv != '-')) { ++ Info(slide, 0x401, ((char *)slide, ++ "error: a valid character encoding should follow the -I argument")); ++ return(PK_PARAM); ++ } ++ s = *argv; ++ strncpy(ISO_CP, s, sizeof(ISO_CP)); ++ } ++ while(*(++s)); /* No params straight after charset name */ ++ } ++ break; ++#endif /* ?UNIX */ + case 'l': /* longer form of "ls -l" type listing */ + if (negative) + uO.lflag = -2, negative = 0; +@@ -521,6 +554,35 @@ + G.M_flag = TRUE; + break; + #endif ++#ifdef UNIX ++ case ('O'): ++ if (negative) { ++ Info(slide, 0x401, ((char *)slide, ++ "error: encodings can't be negated")); ++ return(PK_PARAM); ++ } else { ++ if(*s) { /* Handle the -Ocharset case */ ++ /* Assume that charsets can't start with a dash to spot arguments misuse */ ++ if(*s == '-') { ++ Info(slide, 0x401, ((char *)slide, ++ "error: a valid character encoding should follow the -I argument")); ++ return(PK_PARAM); ++ } ++ strncpy(OEM_CP, s, sizeof(OEM_CP)); ++ } else { /* -O charset */ ++ ++argv; ++ if(!(--argc > 0 && *argv != NULL && **argv != '-')) { ++ Info(slide, 0x401, ((char *)slide, ++ "error: a valid character encoding should follow the -O argument")); ++ return(PK_PARAM); ++ } ++ s = *argv; ++ strncpy(OEM_CP, s, sizeof(OEM_CP)); ++ } ++ while(*(++s)); /* No params straight after charset name */ ++ } ++ break; ++#endif /* ?UNIX */ + case 's': /* default: shorter "ls -l" type listing */ + if (negative) + uO.lflag = -2, negative = 0; diff --git a/unzip/patches/unzip-6.0-bzip2-configure.patch b/unzip/patches/unzip-6.0-bzip2-configure.patch index 9cf006b8c..b99bb4e44 100644 --- a/unzip/patches/unzip-6.0-bzip2-configure.patch +++ b/unzip/patches/unzip-6.0-bzip2-configure.patch @@ -19,7 +19,7 @@ diff -up unzip60/unix/configure.bzip2-configure unzip60/unix/configure + $CC $CFLAGS -o conftest conftest.c -lbz2 > /dev/null 2>/dev/null + if test $? -eq 0; then + echo "-- OS supports bzip2 - linking in bzip2" -+ D_USE_BZ2="-DBZIP2_SUPPORT" ++ D_USE_BZ2="-DUSE_BZIP2" + L_BZ2="${BZLF} -lbz2" + else + echo "-- Either bzlib.h or libbz2.a not found - no bzip2" @@ -27,3 +27,4 @@ diff -up unzip60/unix/configure.bzip2-configure unzip60/unix/configure fi fi
+ \ No newline at end of file diff --git a/unzip/patches/unzip-6.0-caseinsensitive.patch b/unzip/patches/unzip-6.0-caseinsensitive.patch new file mode 100644 index 000000000..3cb68450b --- /dev/null +++ b/unzip/patches/unzip-6.0-caseinsensitive.patch @@ -0,0 +1,131 @@ +diff --git a/match.c b/match.c +index 6cd656f..4e569f5 100644 +--- a/match.c ++++ b/match.c +@@ -190,10 +190,10 @@ char *___tmp_ptr; + + #endif + +-static int recmatch(p, s, cs) ++static int recmatch(p, s, ci) + ZCONST char *p; /* sh pattern to match */ + ZCONST char *s; /* string to match it to */ +-int cs; /* flag: force case-sensitive matching */ ++int ci; /* flag: force case-insensitive matching */ + /* Recursively compare the sh pattern p with the string s and return 1 if + they match, and 0 or 2 if they don't or if there is a syntax error in the + pattern. This routine recurses on itself no deeper than the number of +@@ -214,7 +214,7 @@ int cs; /* flag: force case-sensitive matching */ + if (CLEN(p) == 2) { + if (CLEN(s) == 2) { + return (*p == *s && *(p+1) == *(s+1)) ? +- recmatch(p + 2, s + 2, cs) : 0; ++ recmatch(p + 2, s + 2, ci) : 0; + } else { + return 0; + } +@@ -230,9 +230,9 @@ int cs; /* flag: force case-sensitive matching */ + /* '?' (or '%' or '#') matches any character (but not an empty string) */ + if (c == WILDCHR_SINGLE) { + if (wild_stop_at_dir) +- return (*s && *s != DIRSEP_CHR) ? recmatch(p, s + CLEN(s), cs) : 0; ++ return (*s && *s != DIRSEP_CHR) ? recmatch(p, s + CLEN(s), ci) : 0; + else +- return *s ? recmatch(p, s + CLEN(s), cs) : 0; ++ return *s ? recmatch(p, s + CLEN(s), ci) : 0; + } + + /* WILDCHR_MULTI ('*') matches any number of characters, including zero */ +@@ -253,14 +253,14 @@ int cs; /* flag: force case-sensitive matching */ + # endif /* ?AMIGA */ + /* Single WILDCHR_MULTI ('*'): this doesn't match slashes */ + for (; *s && *s != DIRSEP_CHR; INCSTR(s)) +- if ((c = recmatch(p, s, cs)) != 0) ++ if ((c = recmatch(p, s, ci)) != 0) + return c; + /* end of pattern: matched if at end of string, else continue */ + if (*p == 0) + return (*s == 0); + /* continue to match if at DIRSEP_CHR in pattern, else give up */ + return (*p == DIRSEP_CHR || (*p == '\' && p[1] == DIRSEP_CHR)) +- ? recmatch(p, s, cs) : 2; ++ ? recmatch(p, s, ci) : 2; + } + /* Two consecutive WILDCHR_MULTI ("**"): this matches DIRSEP_CHR ('/') */ + p++; /* move p past the second WILDCHR_MULTI */ +@@ -308,17 +308,17 @@ int cs; /* flag: force case-sensitive matching */ + */ + if (q != srest) + return 0; +- return ((cs ? strcmp(p, q) : namecmp(p, q)) == 0); ++ return ((!ci ? strcmp(p, q) : namecmp(p, q)) == 0); + } + #else /* !_MBCS */ +- return ((cs ? strcmp(p, srest) : namecmp(p, srest)) == 0); ++ return ((!ci ? strcmp(p, srest) : namecmp(p, srest)) == 0); + #endif /* ?_MBCS */ + } + else + { + /* pattern contains more wildcards, continue with recursion... */ + for (; *s; INCSTR(s)) +- if ((c = recmatch(p, s, cs)) != 0) ++ if ((c = recmatch(p, s, ci)) != 0) + return c; + return 2; /* 2 means give up--shmatch will return false */ + } +@@ -353,17 +353,17 @@ int cs; /* flag: force case-sensitive matching */ + c = *(p-1); + else + { +- uch cc = (cs ? (uch)*s : case_map((uch)*s)); ++ uch cc = (!ci ? (uch)*s : to_up((uch)*s)); + uch uc = (uch) c; + if (*(p+1) != '-') + for (uc = uc ? uc : (uch)*p; uc <= (uch)*p; uc++) + /* compare range */ +- if ((cs ? uc : case_map(uc)) == cc) +- return r ? 0 : recmatch(q + CLEN(q), s + CLEN(s), cs); ++ if ((!ci ? uc : to_up(uc)) == cc) ++ return r ? 0 : recmatch(q + CLEN(q), s + CLEN(s), ci); + c = e = 0; /* clear range, escape flags */ + } + } +- return r ? recmatch(q + CLEN(q), s + CLEN(s), cs) : 0; ++ return r ? recmatch(q + CLEN(q), s + CLEN(s), ci) : 0; + /* bracket match failed */ + } + #endif /* !VMS */ +@@ -382,18 +382,18 @@ int cs; /* flag: force case-sensitive matching */ + { + /* Match "...]" with "]". Continue after "]" in both. */ + if ((*(p+ 2* CLEN( p)) == ']') && (*s == ']')) +- return recmatch( (p+ 3* CLEN( p)), (s+ CLEN( s)), cs); ++ return recmatch( (p+ 3* CLEN( p)), (s+ CLEN( s)), ci); + + /* Else, look for a reduced match in s, until "]" in or end of s. */ + for (; *s && (*s != ']'); INCSTR(s)) + if (*s == '.') + /* If reduced match, then continue after "..." in p, "." in s. */ +- if ((c = recmatch( (p+ CLEN( p)), s, cs)) != 0) ++ if ((c = recmatch( (p+ CLEN( p)), s, ci)) != 0) + return (int)c; + + /* Match "...]" with "]". Continue after "]" in both. */ + if ((*(p+ 2* CLEN( p)) == ']') && (*s == ']')) +- return recmatch( (p+ 3* CLEN( p)), (s+ CLEN( s)), cs); ++ return recmatch( (p+ 3* CLEN( p)), (s+ CLEN( s)), ci); + + /* No reduced match. Quit. */ + return 2; +@@ -402,8 +402,8 @@ int cs; /* flag: force case-sensitive matching */ + #endif /* def VMS */ + + /* Just a character--compare it */ +- return (cs ? c == *s : case_map((uch)c) == case_map((uch)*s)) ? +- recmatch(p, s + CLEN(s), cs) : 0; ++ return (!ci ? c == *s : to_up((uch)c) == to_up((uch)*s)) ? ++ recmatch(p, s + CLEN(s), ci) : 0; + } + + diff --git a/unzip/patches/unzip-6.0-nostrip.patch b/unzip/patches/unzip-6.0-configure.patch similarity index 93% rename from unzip/patches/unzip-6.0-nostrip.patch rename to unzip/patches/unzip-6.0-configure.patch index 71c263f69..9eead4227 100644 --- a/unzip/patches/unzip-6.0-nostrip.patch +++ b/unzip/patches/unzip-6.0-configure.patch @@ -6,7 +6,7 @@ diff -up unzip60/unix/configure.nostrip unzip60/unix/configure CFLAGS="${CFLAGS} -I. -DUNIX" LFLAGS1="" -LFLAGS2="-s" -+LFLAGS2="" ++LFLAGS2="${LFLAGS2}" LN="ln -s"
CFLAGS_OPT='' diff --git a/unzip/patches/unzip-6.0-cve-2014-8139.patch b/unzip/patches/unzip-6.0-cve-2014-8139.patch new file mode 100644 index 000000000..226b35ac6 --- /dev/null +++ b/unzip/patches/unzip-6.0-cve-2014-8139.patch @@ -0,0 +1,79 @@ +diff --git a/extract.c b/extract.c +index 9ef80b3..c741b5f 100644 +--- a/extract.c ++++ b/extract.c +@@ -1,5 +1,5 @@ + /* +- Copyright (c) 1990-2009 Info-ZIP. All rights reserved. ++ Copyright (c) 1990-2014 Info-ZIP. All rights reserved. + + See the accompanying file LICENSE, version 2009-Jan-02 or later + (the contents of which are also included in unzip.h) for terms of use. +@@ -298,6 +298,8 @@ char ZCONST Far TruncNTSD[] = + #ifndef SFX + static ZCONST char Far InconsistEFlength[] = "bad extra-field entry:\n \ + EF block length (%u bytes) exceeds remaining EF data (%u bytes)\n"; ++ static ZCONST char Far TooSmallEBlength[] = "bad extra-field entry:\n \ ++ EF block length (%u bytes) invalid (< %d)\n"; + static ZCONST char Far InvalidComprDataEAs[] = + " invalid compressed data for EAs\n"; + # if (defined(WIN32) && defined(NTSD_EAS)) +@@ -2020,7 +2022,8 @@ static int TestExtraField(__G__ ef, ef_len) + ebID = makeword(ef); + ebLen = (unsigned)makeword(ef+EB_LEN); + +- if (ebLen > (ef_len - EB_HEADSIZE)) { ++ if (ebLen > (ef_len - EB_HEADSIZE)) ++ { + /* Discovered some extra field inconsistency! */ + if (uO.qflag) + Info(slide, 1, ((char *)slide, "%-22s ", +@@ -2155,11 +2158,29 @@ static int TestExtraField(__G__ ef, ef_len) + } + break; + case EF_PKVMS: +- if (makelong(ef+EB_HEADSIZE) != +- crc32(CRCVAL_INITIAL, ef+(EB_HEADSIZE+4), +- (extent)(ebLen-4))) +- Info(slide, 1, ((char *)slide, +- LoadFarString(BadCRC_EAs))); ++ /* 2015-01-30 SMS. Added sufficient-bytes test/message ++ * here. (Removed defective ebLen test above.) ++ * ++ * If sufficient bytes (EB_PKVMS_MINLEN) are available, ++ * then compare the stored CRC value with the calculated ++ * CRC for the remainder of the data (and complain about ++ * a mismatch). ++ */ ++ if (ebLen < EB_PKVMS_MINLEN) ++ { ++ /* Insufficient bytes available. */ ++ Info( slide, 1, ++ ((char *)slide, LoadFarString( TooSmallEBlength), ++ ebLen, EB_PKVMS_MINLEN)); ++ } ++ else if (makelong(ef+ EB_HEADSIZE) != ++ crc32(CRCVAL_INITIAL, ++ (ef+ EB_HEADSIZE+ EB_PKVMS_MINLEN), ++ (extent)(ebLen- EB_PKVMS_MINLEN))) ++ { ++ Info(slide, 1, ((char *)slide, ++ LoadFarString(BadCRC_EAs))); ++ } + break; + case EF_PKW32: + case EF_PKUNIX: +diff --git a/unzpriv.h b/unzpriv.h +index 005cee0..5c83a6e 100644 +--- a/unzpriv.h ++++ b/unzpriv.h +@@ -1806,6 +1806,8 @@ + #define EB_NTSD_VERSION 4 /* offset of NTSD version byte */ + #define EB_NTSD_MAX_VER (0) /* maximum version # we know how to handle */ + ++#define EB_PKVMS_MINLEN 4 /* minimum data length of PKVMS extra block */ ++ + #define EB_ASI_CRC32 0 /* offset of ASI Unix field's crc32 checksum */ + #define EB_ASI_MODE 4 /* offset of ASI Unix permission mode field */ + + diff --git a/unzip/patches/unzip-6.0-cve-2014-8140.patch b/unzip/patches/unzip-6.0-cve-2014-8140.patch new file mode 100644 index 000000000..b9eba92b1 --- /dev/null +++ b/unzip/patches/unzip-6.0-cve-2014-8140.patch @@ -0,0 +1,25 @@ +diff --git a/extract.c b/extract.c +index c741b5f..e4a4c7b 100644 +--- a/extract.c ++++ b/extract.c +@@ -2240,10 +2240,17 @@ static int test_compr_eb(__G__ eb, eb_size, compr_offset, test_uc_ebdata) + if (compr_offset < 4) /* field is not compressed: */ + return PK_OK; /* do nothing and signal OK */ + ++ /* Return no/bad-data error status if any problem is found: ++ * 1. eb_size is too small to hold the uncompressed size ++ * (eb_ucsize). (Else extract eb_ucsize.) ++ * 2. eb_ucsize is zero (invalid). 2014-12-04 SMS. ++ * 3. eb_ucsize is positive, but eb_size is too small to hold ++ * the compressed data header. ++ */ + if ((eb_size < (EB_UCSIZE_P + 4)) || +- ((eb_ucsize = makelong(eb+(EB_HEADSIZE+EB_UCSIZE_P))) > 0L && +- eb_size <= (compr_offset + EB_CMPRHEADLEN))) +- return IZ_EF_TRUNC; /* no compressed data! */ ++ ((eb_ucsize = makelong( eb+ (EB_HEADSIZE+ EB_UCSIZE_P))) == 0L) || ++ ((eb_ucsize > 0L) && (eb_size <= (compr_offset + EB_CMPRHEADLEN)))) ++ return IZ_EF_TRUNC; /* no/bad compressed data! */ + + method = makeword(eb + (EB_HEADSIZE + compr_offset)); + if ((method == STORED) && (eb_size != compr_offset + EB_CMPRHEADLEN + eb_ucsize)) diff --git a/unzip/patches/unzip-6.0-cve-2014-8141.patch b/unzip/patches/unzip-6.0-cve-2014-8141.patch new file mode 100644 index 000000000..584c576f7 --- /dev/null +++ b/unzip/patches/unzip-6.0-cve-2014-8141.patch @@ -0,0 +1,138 @@ +diff --git a/fileio.c b/fileio.c +index 03fc4be..2a61a30 100644 +--- a/fileio.c ++++ b/fileio.c +@@ -176,6 +176,8 @@ static ZCONST char Far FilenameTooLongTrunc[] = + #endif + static ZCONST char Far ExtraFieldTooLong[] = + "warning: extra field too long (%d). Ignoring...\n"; ++static ZCONST char Far ExtraFieldCorrupt[] = ++ "warning: extra field (type: 0x%04x) corrupt. Continuing...\n"; + + #ifdef WINDLL + static ZCONST char Far DiskFullQuery[] = +@@ -2300,7 +2302,13 @@ int do_string(__G__ length, option) /* return PK-type error code */ + length = length2; + } + /* Looks like here is where extra fields are read */ +- getZip64Data(__G__ G.extra_field, length); ++ if (getZip64Data(__G__ G.extra_field, length) != PK_COOL) ++ { ++ Info(slide, 0x401, ((char *)slide, ++ LoadFarString( ExtraFieldCorrupt), EF_PKSZ64)); ++ error = PK_WARN; ++ } ++ + #ifdef UNICODE_SUPPORT + G.unipath_filename = NULL; + if (G.UzO.U_flag < 2) { +diff --git a/process.c b/process.c +index be6e006..0d57ab4 100644 +--- a/process.c ++++ b/process.c +@@ -1,5 +1,5 @@ + /* +- Copyright (c) 1990-2009 Info-ZIP. All rights reserved. ++ Copyright (c) 1990-2014 Info-ZIP. All rights reserved. + + See the accompanying file LICENSE, version 2009-Jan-02 or later + (the contents of which are also included in unzip.h) for terms of use. +@@ -1894,48 +1894,83 @@ int getZip64Data(__G__ ef_buf, ef_len) + and a 4-byte version of disk start number. + Sets both local header and central header fields. Not terribly clever, + but it means that this procedure is only called in one place. ++ ++ 2014-12-05 SMS. ++ Added checks to ensure that enough data are available before calling ++ makeint64() or makelong(). Replaced various sizeof() values with ++ simple ("4" or "8") constants. (The Zip64 structures do not depend ++ on our variable sizes.) Error handling is crude, but we should now ++ stay within the buffer. + ---------------------------------------------------------------------------*/ + ++#define Z64FLGS 0xffff ++#define Z64FLGL 0xffffffff ++ + if (ef_len == 0 || ef_buf == NULL) + return PK_COOL; + + Trace((stderr,"\ngetZip64Data: scanning extra field of length %u\n", + ef_len)); + +- while (ef_len >= EB_HEADSIZE) { ++ while (ef_len >= EB_HEADSIZE) ++ { + eb_id = makeword(EB_ID + ef_buf); + eb_len = makeword(EB_LEN + ef_buf); + +- if (eb_len > (ef_len - EB_HEADSIZE)) { +- /* discovered some extra field inconsistency! */ ++ if (eb_len > (ef_len - EB_HEADSIZE)) ++ { ++ /* Extra block length exceeds remaining extra field length. */ + Trace((stderr, + "getZip64Data: block length %u > rest ef_size %u\n", eb_len, + ef_len - EB_HEADSIZE)); + break; + } +- if (eb_id == EF_PKSZ64) { + ++ if (eb_id == EF_PKSZ64) ++ { + int offset = EB_HEADSIZE; + +- if (G.crec.ucsize == 0xffffffff || G.lrec.ucsize == 0xffffffff){ +- G.lrec.ucsize = G.crec.ucsize = makeint64(offset + ef_buf); +- offset += sizeof(G.crec.ucsize); ++ if ((G.crec.ucsize == Z64FLGL) || (G.lrec.ucsize == Z64FLGL)) ++ { ++ if (offset+ 8 > ef_len) ++ return PK_ERR; ++ ++ G.crec.ucsize = G.lrec.ucsize = makeint64(offset + ef_buf); ++ offset += 8; + } +- if (G.crec.csize == 0xffffffff || G.lrec.csize == 0xffffffff){ +- G.csize = G.lrec.csize = G.crec.csize = makeint64(offset + ef_buf); +- offset += sizeof(G.crec.csize); ++ ++ if ((G.crec.csize == Z64FLGL) || (G.lrec.csize == Z64FLGL)) ++ { ++ if (offset+ 8 > ef_len) ++ return PK_ERR; ++ ++ G.csize = G.crec.csize = G.lrec.csize = makeint64(offset + ef_buf); ++ offset += 8; + } +- if (G.crec.relative_offset_local_header == 0xffffffff){ ++ ++ if (G.crec.relative_offset_local_header == Z64FLGL) ++ { ++ if (offset+ 8 > ef_len) ++ return PK_ERR; ++ + G.crec.relative_offset_local_header = makeint64(offset + ef_buf); +- offset += sizeof(G.crec.relative_offset_local_header); ++ offset += 8; + } +- if (G.crec.disk_number_start == 0xffff){ ++ ++ if (G.crec.disk_number_start == Z64FLGS) ++ { ++ if (offset+ 4 > ef_len) ++ return PK_ERR; ++ + G.crec.disk_number_start = (zuvl_t)makelong(offset + ef_buf); +- offset += sizeof(G.crec.disk_number_start); ++ offset += 4; + } ++#if 0 ++ break; /* Expect only one EF_PKSZ64 block. */ ++#endif /* 0 */ + } + +- /* Skip this extra field block */ ++ /* Skip this extra field block. */ + ef_buf += (eb_len + EB_HEADSIZE); + ef_len -= (eb_len + EB_HEADSIZE); + } diff --git a/unzip/patches/unzip-6.0-cve-2018-1000035-heap-based-overflow.patch b/unzip/patches/unzip-6.0-cve-2018-1000035-heap-based-overflow.patch new file mode 100644 index 000000000..8ca713865 --- /dev/null +++ b/unzip/patches/unzip-6.0-cve-2018-1000035-heap-based-overflow.patch @@ -0,0 +1,34 @@ +--- a/fileio.c 2014-12-05 05:06:05 -0600 ++++ b/fileio.c 2017-11-14 01:06:28 -0600 +@@ -1,5 +1,5 @@ + /* +- Copyright (c) 1990-2009 Info-ZIP. All rights reserved. ++ Copyright (c) 1990-2017 Info-ZIP. All rights reserved. + + See the accompanying file LICENSE, version 2009-Jan-02 or later + (the contents of which are also included in unzip.h) for terms of use. +@@ -1582,6 +1582,8 @@ + int r = IZ_PW_ENTERED; + char *m; + char *prompt; ++ char *ep; ++ char *zp; + + #ifndef REENTRANT + /* tell picky compilers to shut up about "unused variable" warnings */ +@@ -1590,9 +1592,12 @@ + + if (*rcnt == 0) { /* First call for current entry */ + *rcnt = 2; +- if ((prompt = (char *)malloc(2*FILNAMSIZ + 15)) != (char *)NULL) { +- sprintf(prompt, LoadFarString(PasswPrompt), +- FnFilter1(zfn), FnFilter2(efn)); ++ zp = FnFilter1( zfn); ++ ep = FnFilter2( efn); ++ prompt = (char *)malloc( /* Slightly too long (2* "%s"). */ ++ sizeof( PasswPrompt)+ strlen( zp)+ strlen( ep)); ++ if (prompt != (char *)NULL) { ++ sprintf(prompt, LoadFarString(PasswPrompt), zp, ep); + m = prompt; + } else + m = (char *)LoadFarString(PasswPrompt2); diff --git a/unzip/patches/unzip-6.0-cve-2018-18384.patch b/unzip/patches/unzip-6.0-cve-2018-18384.patch new file mode 100644 index 000000000..54d4b8cb6 --- /dev/null +++ b/unzip/patches/unzip-6.0-cve-2018-18384.patch @@ -0,0 +1,35 @@ +--- unzip60/list.c ++++ unzip60/list.c +@@ -97,7 +97,7 @@ int list_files(__G) /* return PK-type + { + int do_this_file=FALSE, cfactor, error, error_in_archive=PK_COOL; + #ifndef WINDLL +- char sgn, cfactorstr[13]; ++ char sgn, cfactorstr[1+10+1+1]; /* <sgn><int>%NUL */ + int longhdr=(uO.vflag>1); + #endif + int date_format; +@@ -389,9 +389,9 @@ int list_files(__G) /* return PK-type + } + #else /* !WINDLL */ + if (cfactor == 100) +- sprintf(cfactorstr, LoadFarString(CompFactor100)); ++ snprintf(cfactorstr, sizeof(cfactorstr), LoadFarString(CompFactor100)); + else +- sprintf(cfactorstr, LoadFarString(CompFactorStr), sgn, cfactor); ++ snprintf(cfactorstr, sizeof(cfactorstr), LoadFarString(CompFactorStr), sgn, cfactor); + if (longhdr) + Info(slide, 0, ((char *)slide, LoadFarString(LongHdrStats), + FmZofft(G.crec.ucsize, "8", "u"), methbuf, +@@ -471,9 +471,9 @@ int list_files(__G) /* return PK-type + + #else /* !WINDLL */ + if (cfactor == 100) +- sprintf(cfactorstr, LoadFarString(CompFactor100)); ++ snprintf(cfactorstr, sizeof(cfactorstr), LoadFarString(CompFactor100)); + else +- sprintf(cfactorstr, LoadFarString(CompFactorStr), sgn, cfactor); ++ snprintf(cfactorstr, sizeof(cfactorstr), LoadFarString(CompFactorStr), sgn, cfactor); + if (longhdr) { + Info(slide, 0, ((char *)slide, LoadFarString(LongFileTrailer), + FmZofft(tot_ucsize, "8", "u"), FmZofft(tot_csize, "8", "u"), diff --git a/unzip/patches/unzip-6.0-fix-recmatch.patch b/unzip/patches/unzip-6.0-fix-recmatch.patch new file mode 100644 index 000000000..2a8583c8c --- /dev/null +++ b/unzip/patches/unzip-6.0-fix-recmatch.patch @@ -0,0 +1,477 @@ +diff -up unzip60/match.c.recmatch unzip60/match.c +--- unzip60/match.c.recmatch 2005-08-14 13:00:36.000000000 -0400 ++++ unzip60/match.c 2013-05-28 10:29:57.949077543 -0400 +@@ -27,16 +27,14 @@ + + --------------------------------------------------------------------------- + +- Copyright on recmatch() from Zip's util.c (although recmatch() was almost +- certainly written by Mark Adler...ask me how I can tell :-) ): ++ Copyright on recmatch() from Zip's util.c ++ Copyright (c) 1990-2005 Info-ZIP. All rights reserved. + +- Copyright (C) 1990-1992 Mark Adler, Richard B. Wales, Jean-loup Gailly, +- Kai Uwe Rommel and Igor Mandrichenko. ++ See the accompanying file LICENSE, version 2004-May-22 or later ++ for terms of use. ++ If, for some reason, both of these files are missing, the Info-ZIP license ++ also may be found at: ftp://ftp.info-zip.org/pub/infozip/license.html + +- Permission is granted to any individual or institution to use, copy, +- or redistribute this software so long as all of the original files are +- included unmodified, that it is not sold for profit, and that this copy- +- right notice is retained. + + --------------------------------------------------------------------------- + +@@ -53,7 +51,7 @@ + + A set is composed of characters or ranges; a range looks like ``character + hyphen character'' (as in 0-9 or A-Z). [0-9a-zA-Z_] is the minimal set of +- characters allowed in the [..] pattern construct. Other characters are ++ characters ALlowed in the [..] pattern construct. Other characters are + allowed (i.e., 8-bit characters) if your system will support them. + + To suppress the special syntactic significance of any of ``[]*?!^-'', in- +@@ -101,8 +99,32 @@ + # define WILDCHAR '?' + # define BEG_RANGE '[' + # define END_RANGE ']' ++# define WILDCHR_SINGLE '?' ++# define DIRSEP_CHR '/' ++# define WILDCHR_MULTI '*' + #endif + ++#ifdef WILD_STOP_AT_DIR ++ int wild_stop_at_dir = 1; /* default wildcards do not include / in matches */ ++#else ++ int wild_stop_at_dir = 0; /* default wildcards do include / in matches */ ++#endif ++ ++ ++ ++/* ++ * case mapping functions. case_map is used to ignore case in comparisons, ++ * to_up is used to force upper case even on Unix (for dosify option). ++ */ ++#ifdef USE_CASE_MAP ++# define case_map(c) upper[(c) & 0xff] ++# define to_up(c) upper[(c) & 0xff] ++#else ++# define case_map(c) (c) ++# define to_up(c) ((c) >= 'a' && (c) <= 'z' ? (c)-'a'+'A' : (c)) ++#endif /* USE_CASE_MAP */ ++ ++ + #if 0 /* GRR: add this to unzip.h someday... */ + #if !(defined(MSDOS) && defined(DOSWILD)) + #ifdef WILD_STOP_AT_DIR +@@ -114,8 +136,8 @@ int recmatch OF((ZCONST uch *pattern, ZC + int ignore_case __WDLPRO)); + #endif + #endif /* 0 */ +-static int recmatch OF((ZCONST uch *pattern, ZCONST uch *string, +- int ignore_case __WDLPRO)); ++static int recmatch OF((ZCONST char *, ZCONST char *, ++ int)); + static char *isshexp OF((ZCONST char *p)); + static int namecmp OF((ZCONST char *s1, ZCONST char *s2)); + +@@ -154,192 +176,240 @@ int match(string, pattern, ignore_case _ + } + dospattern[j-1] = '\0'; /* nuke the end "." */ + } +- j = recmatch((uch *)dospattern, (uch *)string, ignore_case __WDL); ++ j = recmatch(dospattern, string, ignore_case); + free(dospattern); + return j == 1; + } else + #endif /* MSDOS && DOSWILD */ +- return recmatch((uch *)pattern, (uch *)string, ignore_case __WDL) == 1; ++ return recmatch(pattern, string, ignore_case) == 1; + } + ++#ifdef _MBCS ++ ++char *___tmp_ptr; + ++#endif + +-static int recmatch(p, s, ic __WDL) +- ZCONST uch *p; /* sh pattern to match */ +- ZCONST uch *s; /* string to which to match it */ +- int ic; /* true for case insensitivity */ +- __WDLDEF /* directory sepchar for WildStopAtDir mode, or 0 */ ++static int recmatch(p, s, cs) ++ZCONST char *p; /* sh pattern to match */ ++ZCONST char *s; /* string to match it to */ ++int cs; /* flag: force case-sensitive matching */ + /* Recursively compare the sh pattern p with the string s and return 1 if +- * they match, and 0 or 2 if they don't or if there is a syntax error in the +- * pattern. This routine recurses on itself no more deeply than the number +- * of characters in the pattern. */ ++ they match, and 0 or 2 if they don't or if there is a syntax error in the ++ pattern. This routine recurses on itself no deeper than the number of ++ characters in the pattern. */ + { +- unsigned int c; /* pattern char or start of range in [-] loop */ ++ int c; /* pattern char or start of range in [-] loop */ ++ /* Get first character, the pattern for new recmatch calls follows */ ++ /* borrowed from Zip's global.c */ ++ int no_wild = 0; ++ int allow_regex=1; ++ /* This fix provided by akt@m5.dion.ne.jp for Japanese. ++ See 21 July 2006 mail. ++ It only applies when p is pointing to a doublebyte character and ++ things like / and wildcards are not doublebyte. This probably ++ should not be needed. */ + +- /* Get first character, the pattern for new recmatch calls follows */ +- c = *p; INCSTR(p); ++#ifdef _MBCS ++ if (CLEN(p) == 2) { ++ if (CLEN(s) == 2) { ++ return (*p == *s && *(p+1) == *(s+1)) ? ++ recmatch(p + 2, s + 2, cs) : 0; ++ } else { ++ return 0; ++ } ++ } ++#endif /* ?_MBCS */ + +- /* If that was the end of the pattern, match if string empty too */ +- if (c == 0) +- return *s == 0; ++ c = *POSTINCSTR(p); + +- /* '?' (or '%') matches any character (but not an empty string). */ +- if (c == WILDCHAR) +-#ifdef WILD_STOP_AT_DIR +- /* If uO.W_flag is non-zero, it won't match '/' */ +- return (*s && (!sepc || *s != (uch)sepc)) +- ? recmatch(p, s + CLEN(s), ic, sepc) : 0; +-#else +- return *s ? recmatch(p, s + CLEN(s), ic) : 0; +-#endif ++ /* If that was the end of the pattern, match if string empty too */ ++ if (c == 0) ++ return *s == 0; ++ ++ /* '?' (or '%' or '#') matches any character (but not an empty string) */ ++ if (c == WILDCHR_SINGLE) { ++ if (wild_stop_at_dir) ++ return (*s && *s != DIRSEP_CHR) ? recmatch(p, s + CLEN(s), cs) : 0; ++ else ++ return *s ? recmatch(p, s + CLEN(s), cs) : 0; ++ } + +- /* '*' matches any number of characters, including zero */ ++ /* WILDCHR_MULTI ('*') matches any number of characters, including zero */ + #ifdef AMIGA +- if (c == '#' && *p == '?') /* "#?" is Amiga-ese for "*" */ +- c = '*', p++; ++ if (!no_wild && c == '#' && *p == '?') /* "#?" is Amiga-ese for "*" */ ++ c = WILDCHR_MULTI, p++; + #endif /* AMIGA */ +- if (c == '*') { +-#ifdef WILD_STOP_AT_DIR +- if (sepc) { +- /* check for single "*" or double "**" */ +-# ifdef AMIGA +- if ((c = p[0]) == '#' && p[1] == '?') /* "#?" is Amiga-ese for "*" */ +- c = '*', p++; +- if (c != '*') { +-# else /* !AMIGA */ +- if (*p != '*') { +-# endif /* ?AMIGA */ +- /* single "*": this doesn't match the dirsep character */ +- for (; *s && *s != (uch)sepc; INCSTR(s)) +- if ((c = recmatch(p, s, ic, sepc)) != 0) +- return (int)c; +- /* end of pattern: matched if at end of string, else continue */ +- if (*p == '\0') +- return (*s == 0); +- /* continue to match if at sepc in pattern, else give up */ +- return (*p == (uch)sepc || (*p == '\' && p[1] == (uch)sepc)) +- ? recmatch(p, s, ic, sepc) : 2; +- } +- /* "**": this matches slashes */ +- ++p; /* move p behind the second '*' */ +- /* and continue with the non-W_flag code variant */ +- } +-#endif /* WILD_STOP_AT_DIR */ ++ if (!no_wild && c == WILDCHR_MULTI) ++ { ++ if (wild_stop_at_dir) { ++ /* Check for an immediately following WILDCHR_MULTI */ ++# ifdef AMIGA ++ if ((c = p[0]) == '#' && p[1] == '?') /* "#?" is Amiga-ese for "*" */ ++ c = WILDCHR_MULTI, p++; ++ if (c != WILDCHR_MULTI) { ++# else /* !AMIGA */ ++ if (*p != WILDCHR_MULTI) { ++# endif /* ?AMIGA */ ++ /* Single WILDCHR_MULTI ('*'): this doesn't match slashes */ ++ for (; *s && *s != DIRSEP_CHR; INCSTR(s)) ++ if ((c = recmatch(p, s, cs)) != 0) ++ return c; ++ /* end of pattern: matched if at end of string, else continue */ + if (*p == 0) +- return 1; +- if (isshexp((ZCONST char *)p) == NULL) { +- /* Optimization for rest of pattern being a literal string: +- * If there are no other shell expression chars in the rest +- * of the pattern behind the multi-char wildcard, then just +- * compare the literal string tail. +- */ +- ZCONST uch *srest; +- +- srest = s + (strlen((ZCONST char *)s) - strlen((ZCONST char *)p)); +- if (srest - s < 0) +- /* remaining literal string from pattern is longer than rest +- * of test string, there can't be a match +- */ +- return 0; +- else +- /* compare the remaining literal pattern string with the last +- * bytes of the test string to check for a match +- */ ++ return (*s == 0); ++ /* continue to match if at DIRSEP_CHR in pattern, else give up */ ++ return (*p == DIRSEP_CHR || (*p == '\' && p[1] == DIRSEP_CHR)) ++ ? recmatch(p, s, cs) : 2; ++ } ++ /* Two consecutive WILDCHR_MULTI ("**"): this matches DIRSEP_CHR ('/') */ ++ p++; /* move p past the second WILDCHR_MULTI */ ++ /* continue with the normal non-WILD_STOP_AT_DIR code */ ++ } /* wild_stop_at_dir */ ++ ++ /* Not wild_stop_at_dir */ ++ if (*p == 0) ++ return 1; ++ if (!isshexp((char *)p)) ++ { ++ /* optimization for rest of pattern being a literal string */ ++ ++ /* optimization to handle patterns like *.txt */ ++ /* if the first char in the pattern is '*' and there */ ++ /* are no other shell expression chars, i.e. a literal string */ ++ /* then just compare the literal string at the end */ ++ ++ ZCONST char *srest; ++ ++ srest = s + (strlen(s) - strlen(p)); ++ if (srest - s < 0) ++ /* remaining literal string from pattern is longer than rest of ++ test string, there can't be a match ++ */ ++ return 0; ++ else ++ /* compare the remaining literal pattern string with the last bytes ++ of the test string to check for a match */ + #ifdef _MBCS +- { +- ZCONST uch *q = s; ++ { ++ ZCONST char *q = s; + +- /* MBCS-aware code must not scan backwards into a string from +- * the end. +- * So, we have to move forward by character from our well-known +- * character position s in the test string until we have +- * advanced to the srest position. +- */ +- while (q < srest) +- INCSTR(q); +- /* In case the byte *srest is a trailing byte of a multibyte +- * character in the test string s, we have actually advanced +- * past the position (srest). +- * For this case, the match has failed! +- */ +- if (q != srest) +- return 0; +- return ((ic +- ? namecmp((ZCONST char *)p, (ZCONST char *)q) +- : strcmp((ZCONST char *)p, (ZCONST char *)q) +- ) == 0); +- } ++ /* MBCS-aware code must not scan backwards into a string from ++ * the end. ++ * So, we have to move forward by character from our well-known ++ * character position s in the test string until we have advanced ++ * to the srest position. ++ */ ++ while (q < srest) ++ INCSTR(q); ++ /* In case the byte *srest is a trailing byte of a multibyte ++ * character, we have actually advanced past the position (srest). ++ * For this case, the match has failed! ++ */ ++ if (q != srest) ++ return 0; ++ return ((cs ? strcmp(p, q) : namecmp(p, q)) == 0); ++ } + #else /* !_MBCS */ +- return ((ic +- ? namecmp((ZCONST char *)p, (ZCONST char *)srest) +- : strcmp((ZCONST char *)p, (ZCONST char *)srest) +- ) == 0); ++ return ((cs ? strcmp(p, srest) : namecmp(p, srest)) == 0); + #endif /* ?_MBCS */ +- } else { +- /* pattern contains more wildcards, continue with recursion... */ +- for (; *s; INCSTR(s)) +- if ((c = recmatch(p, s, ic __WDL)) != 0) +- return (int)c; +- return 2; /* 2 means give up--match will return false */ +- } + } +- +- /* Parse and process the list of characters and ranges in brackets */ +- if (c == BEG_RANGE) { +- int e; /* flag true if next char to be taken literally */ +- ZCONST uch *q; /* pointer to end of [-] group */ +- int r; /* flag true to match anything but the range */ +- +- if (*s == 0) /* need a character to match */ +- return 0; +- p += (r = (*p == '!' || *p == '^')); /* see if reverse */ +- for (q = p, e = 0; *q; INCSTR(q)) /* find closing bracket */ +- if (e) +- e = 0; +- else +- if (*q == '\') /* GRR: change to ^ for MS-DOS, OS/2? */ +- e = 1; +- else if (*q == END_RANGE) +- break; +- if (*q != END_RANGE) /* nothing matches if bad syntax */ +- return 0; +- for (c = 0, e = (*p == '-'); p < q; INCSTR(p)) { +- /* go through the list */ +- if (!e && *p == '\') /* set escape flag if \ */ +- e = 1; +- else if (!e && *p == '-') /* set start of range if - */ +- c = *(p-1); +- else { +- unsigned int cc = Case(*s); +- +- if (*(p+1) != '-') +- for (c = c ? c : *p; c <= *p; c++) /* compare range */ +- if ((unsigned)Case(c) == cc) /* typecast for MSC bug */ +- return r ? 0 : recmatch(q + 1, s + 1, ic __WDL); +- c = e = 0; /* clear range, escape flags */ +- } +- } +- return r ? recmatch(q + CLEN(q), s + CLEN(s), ic __WDL) : 0; +- /* bracket match failed */ ++ else ++ { ++ /* pattern contains more wildcards, continue with recursion... */ ++ for (; *s; INCSTR(s)) ++ if ((c = recmatch(p, s, cs)) != 0) ++ return c; ++ return 2; /* 2 means give up--shmatch will return false */ + } ++ } + +- /* if escape ('\'), just compare next character */ +- if (c == '\' && (c = *p++) == 0) /* if \ at end, then syntax error */ +- return 0; ++#ifndef VMS /* No bracket matching in VMS */ ++ /* Parse and process the list of characters and ranges in brackets */ ++ if (!no_wild && allow_regex && c == '[') ++ { ++ int e; /* flag true if next char to be taken literally */ ++ ZCONST char *q; /* pointer to end of [-] group */ ++ int r; /* flag true to match anything but the range */ ++ ++ if (*s == 0) /* need a character to match */ ++ return 0; ++ p += (r = (*p == '!' || *p == '^')); /* see if reverse */ ++ for (q = p, e = 0; *q; q++) /* find closing bracket */ ++ if (e) ++ e = 0; ++ else ++ if (*q == '\') ++ e = 1; ++ else if (*q == ']') ++ break; ++ if (*q != ']') /* nothing matches if bad syntax */ ++ return 0; ++ for (c = 0, e = *p == '-'; p < q; p++) /* go through the list */ ++ { ++ if (e == 0 && *p == '\') /* set escape flag if \ */ ++ e = 1; ++ else if (e == 0 && *p == '-') /* set start of range if - */ ++ c = *(p-1); ++ else ++ { ++ uch cc = (cs ? (uch)*s : case_map((uch)*s)); ++ uch uc = (uch) c; ++ if (*(p+1) != '-') ++ for (uc = uc ? uc : (uch)*p; uc <= (uch)*p; uc++) ++ /* compare range */ ++ if ((cs ? uc : case_map(uc)) == cc) ++ return r ? 0 : recmatch(q + CLEN(q), s + CLEN(s), cs); ++ c = e = 0; /* clear range, escape flags */ ++ } ++ } ++ return r ? recmatch(q + CLEN(q), s + CLEN(s), cs) : 0; ++ /* bracket match failed */ ++ } ++#endif /* !VMS */ + +- /* just a character--compare it */ +-#ifdef QDOS +- return QMatch(Case((uch)c), Case(*s)) ? +- recmatch(p, s + CLEN(s), ic __WDL) : 0; +-#else +- return Case((uch)c) == Case(*s) ? +- recmatch(p, s + CLEN(s), ic __WDL) : 0; +-#endif ++ /* If escape (''), just compare next character */ ++ if (!no_wild && c == '\') ++ if ((c = *p++) == '\0') /* if \ at end, then syntax error */ ++ return 0; ++ ++#ifdef VMS ++ /* 2005-11-06 SMS. ++ Handle "..." wildcard in p with "." or "]" in s. ++ */ ++ if ((c == '.') && (*p == '.') && (*(p+ CLEN( p)) == '.') && ++ ((*s == '.') || (*s == ']'))) ++ { ++ /* Match "...]" with "]". Continue after "]" in both. */ ++ if ((*(p+ 2* CLEN( p)) == ']') && (*s == ']')) ++ return recmatch( (p+ 3* CLEN( p)), (s+ CLEN( s)), cs); ++ ++ /* Else, look for a reduced match in s, until "]" in or end of s. */ ++ for (; *s && (*s != ']'); INCSTR(s)) ++ if (*s == '.') ++ /* If reduced match, then continue after "..." in p, "." in s. */ ++ if ((c = recmatch( (p+ CLEN( p)), s, cs)) != 0) ++ return (int)c; ++ ++ /* Match "...]" with "]". Continue after "]" in both. */ ++ if ((*(p+ 2* CLEN( p)) == ']') && (*s == ']')) ++ return recmatch( (p+ 3* CLEN( p)), (s+ CLEN( s)), cs); ++ ++ /* No reduced match. Quit. */ ++ return 2; ++ } ++ ++#endif /* def VMS */ ++ ++ /* Just a character--compare it */ ++ return (cs ? c == *s : case_map((uch)c) == case_map((uch)*s)) ? ++ recmatch(p, s + CLEN(s), cs) : 0; ++} + +-} /* end function recmatch() */ + + + ++/*************************************************************************************************/ + static char *isshexp(p) + ZCONST char *p; + /* If p is a sh expression, a pointer to the first special character is diff --git a/unzip/patches/unzip-6.0-heap-overflow-infloop.patch b/unzip/patches/unzip-6.0-heap-overflow-infloop.patch new file mode 100644 index 000000000..b517c403e --- /dev/null +++ b/unzip/patches/unzip-6.0-heap-overflow-infloop.patch @@ -0,0 +1,104 @@ +From bdd4a0cecd745cb4825e4508b5bdf2579731086a Mon Sep 17 00:00:00 2001 +From: Petr Stodulka pstodulk@redhat.com +Date: Mon, 14 Sep 2015 18:23:17 +0200 +Subject: [PATCH 1/3] upstream fix for heap overflow + +https://bugzilla.redhat.com/attachment.cgi?id=1073002 +--- + crypt.c | 12 +++++++++++- + 1 file changed, 11 insertions(+), 1 deletion(-) + +diff --git a/crypt.c b/crypt.c +index 784e411..a8975f2 100644 +--- a/crypt.c ++++ b/crypt.c +@@ -465,7 +465,17 @@ int decrypt(__G__ passwrd) + GLOBAL(pInfo->encrypted) = FALSE; + defer_leftover_input(__G); + for (n = 0; n < RAND_HEAD_LEN; n++) { +- b = NEXTBYTE; ++ /* 2012-11-23 SMS. (OUSPG report.) ++ * Quit early if compressed size < HEAD_LEN. The resulting ++ * error message ("unable to get password") could be improved, ++ * but it's better than trying to read nonexistent data, and ++ * then continuing with a negative G.csize. (See ++ * fileio.c:readbyte()). ++ */ ++ if ((b = NEXTBYTE) == (ush)EOF) ++ { ++ return PK_ERR; ++ } + h[n] = (uch)b; + Trace((stdout, " (%02x)", h[n])); + } +-- +2.4.6 + + +From 4b48844661ff9569f2ecf582a387d46a5775b5d8 Mon Sep 17 00:00:00 2001 +From: Kamil Dudka kdudka@redhat.com +Date: Mon, 14 Sep 2015 18:24:56 +0200 +Subject: [PATCH 2/3] fix infinite loop when extracting empty bzip2 data + +Bug: https://sourceforge.net/p/infozip/patches/23/ +--- + extract.c | 6 ++++++ + 1 file changed, 6 insertions(+) + +diff --git a/extract.c b/extract.c +index 7134bfe..29db027 100644 +--- a/extract.c ++++ b/extract.c +@@ -2733,6 +2733,12 @@ __GDEF + int repeated_buf_err; + bz_stream bstrm; + ++ if (G.incnt <= 0 && G.csize <= 0L) { ++ /* avoid an infinite loop */ ++ Trace((stderr, "UZbunzip2() got empty input\n")); ++ return 2; ++ } ++ + #if (defined(DLL) && !defined(NO_SLIDE_REDIR)) + if (G.redirect_slide) + wsize = G.redirect_size, redirSlide = G.redirect_buffer; +-- +2.4.6 + + +From bd150334fb4084f5555a6be26b015a0671cb5b74 Mon Sep 17 00:00:00 2001 +From: Kamil Dudka kdudka@redhat.com +Date: Tue, 22 Sep 2015 18:52:23 +0200 +Subject: [PATCH 3/3] extract: prevent unsigned overflow on invalid input + +Suggested-by: Stefan Cornelius +--- + extract.c | 11 ++++++++++- + 1 file changed, 10 insertions(+), 1 deletion(-) + +diff --git a/extract.c b/extract.c +index 29db027..b9ae667 100644 +--- a/extract.c ++++ b/extract.c +@@ -1257,8 +1257,17 @@ static int extract_or_test_entrylist(__G__ numchunk, + if (G.lrec.compression_method == STORED) { + zusz_t csiz_decrypted = G.lrec.csize; + +- if (G.pInfo->encrypted) ++ if (G.pInfo->encrypted) { ++ if (csiz_decrypted < 12) { ++ /* handle the error now to prevent unsigned overflow */ ++ Info(slide, 0x401, ((char *)slide, ++ LoadFarStringSmall(ErrUnzipNoFile), ++ LoadFarString(InvalidComprData), ++ LoadFarStringSmall2(Inflate))); ++ return PK_ERR; ++ } + csiz_decrypted -= 12; ++ } + if (G.lrec.ucsize != csiz_decrypted) { + Info(slide, 0x401, ((char *)slide, + LoadFarStringSmall2(WrnStorUCSizCSizDiff), +-- +2.5.2 + diff --git a/unzip/patches/unzip-6.0-manpage-fix.patch b/unzip/patches/unzip-6.0-manpage-fix.patch new file mode 100644 index 000000000..ec06516bb --- /dev/null +++ b/unzip/patches/unzip-6.0-manpage-fix.patch @@ -0,0 +1,11 @@ +--- unzip60/man/unzip.1 2011-01-11 11:59:59.000000000 +0000 ++++ unzip60/man/unzip_new 2011-02-05 18:45:55.000000000 +0000 +@@ -424,7 +424,7 @@ + ." Amiga support possible eventually, but not yet + [MS-DOS, OS/2, NT] restore the volume label if the extraction medium is + removable (e.g., a diskette). Doubling the option (\fB-$$\fP) allows fixed +-media (hard disks) to be labelled as well. By default, volume labels are ++media (hard disks) to be labeled as well. By default, volume labels are + ignored. + .IP \fB-/\fP\ \fIextensions\fP + [Acorn only] overrides the extension list supplied by Unzip$Ext environment diff --git a/unzip/patches/unzip-6.0-overflow-long-fsize.patch b/unzip/patches/unzip-6.0-overflow-long-fsize.patch new file mode 100644 index 000000000..80cd708f3 --- /dev/null +++ b/unzip/patches/unzip-6.0-overflow-long-fsize.patch @@ -0,0 +1,34 @@ +diff --git a/list.c b/list.c +index f7359c3..4c3d703 100644 +--- a/list.c ++++ b/list.c +@@ -97,7 +97,7 @@ int list_files(__G) /* return PK-type error code */ + { + int do_this_file=FALSE, cfactor, error, error_in_archive=PK_COOL; + #ifndef WINDLL +- char sgn, cfactorstr[10]; ++ char sgn, cfactorstr[13]; + int longhdr=(uO.vflag>1); + #endif + int date_format; +@@ -339,7 +339,19 @@ int list_files(__G) /* return PK-type error code */ + G.crec.compression_method == ENHDEFLATED) { + methbuf[5] = dtype[(G.crec.general_purpose_bit_flag>>1) & 3]; + } else if (methnum >= NUM_METHODS) { +- sprintf(&methbuf[4], "%03u", G.crec.compression_method); ++ /* 2013-02-26 SMS. ++ * http://sourceforge.net/tracker/?func=detail ++ * &aid=2861648&group_id=118012&atid=679786 ++ * Unexpectedly large compression methods overflow ++ * &methbuf[]. Use the old, three-digit decimal format ++ * for values which fit. Otherwise, sacrifice the ++ * colon, and use four-digit hexadecimal. ++ */ ++ if (G.crec.compression_method <= 999) { ++ sprintf( &methbuf[ 4], "%03u", G.crec.compression_method); ++ } else { ++ sprintf( &methbuf[ 3], "%04X", G.crec.compression_method); ++ } + } + + #if 0 /* GRR/Euro: add this? */ diff --git a/unzip/patches/unzip-6.0-overflow.patch b/unzip/patches/unzip-6.0-overflow.patch new file mode 100644 index 000000000..228c28377 --- /dev/null +++ b/unzip/patches/unzip-6.0-overflow.patch @@ -0,0 +1,25 @@ +diff --git a/extract.c b/extract.c +index a0a4929..9ef80b3 100644 +--- a/extract.c ++++ b/extract.c +@@ -2214,6 +2214,7 @@ static int test_compr_eb(__G__ eb, eb_size, compr_offset, test_uc_ebdata) + ulg eb_ucsize; + uch *eb_ucptr; + int r; ++ ush method; + + if (compr_offset < 4) /* field is not compressed: */ + return PK_OK; /* do nothing and signal OK */ +@@ -2223,6 +2224,12 @@ static int test_compr_eb(__G__ eb, eb_size, compr_offset, test_uc_ebdata) + eb_size <= (compr_offset + EB_CMPRHEADLEN))) + return IZ_EF_TRUNC; /* no compressed data! */ + ++ method = makeword(eb + (EB_HEADSIZE + compr_offset)); ++ if ((method == STORED) && (eb_size != compr_offset + EB_CMPRHEADLEN + eb_ucsize)) ++ return PK_ERR; /* compressed & uncompressed ++ * should match in STORED ++ * method */ ++ + if ( + #ifdef INT_16BIT + (((ulg)(extent)eb_ucsize) != eb_ucsize) || diff --git a/unzip/patches/unzip-6.0-symlink.patch b/unzip/patches/unzip-6.0-symlink.patch new file mode 100644 index 000000000..d7eaf160b --- /dev/null +++ b/unzip/patches/unzip-6.0-symlink.patch @@ -0,0 +1,17 @@ +diff --git a/process.c b/process.c +index 1e9a1e1..905732b 100644 +--- a/process.c ++++ b/process.c +@@ -1751,6 +1751,12 @@ int process_cdir_file_hdr(__G) /* return PK-type error code */ + = (G.crec.general_purpose_bit_flag & (1 << 11)) == (1 << 11); + #endif + ++#ifdef SYMLINKS ++ /* Initialize the symlink flag, may be set by the platform-specific ++ mapattr function. */ ++ G.pInfo->symlink = 0; ++#endif ++ + return PK_COOL; + + } /* end function process_cdir_file_hdr() */ diff --git a/unzip/patches/unzip-6.0-timestamp.patch b/unzip/patches/unzip-6.0-timestamp.patch new file mode 100644 index 000000000..2aa9424eb --- /dev/null +++ b/unzip/patches/unzip-6.0-timestamp.patch @@ -0,0 +1,41 @@ +From: "Steven M. Schweda" sms@antinode.info +Subject: Do not ignore extra fields containing Unix Timestamps +Bug-Debian: https://bugs.debian.org/842993 +X-Debian-version: 6.0-21 + +--- a/process.c ++++ b/process.c +@@ -2914,10 +2914,13 @@ + break; + + case EF_IZUNIX2: +- if (have_new_type_eb == 0) { +- flags &= ~0x0ff; /* ignore any previous IZUNIX field */ ++ if (have_new_type_eb == 0) { /* (< 1) */ + have_new_type_eb = 1; + } ++ if (have_new_type_eb <= 1) { ++ /* Ignore any prior (EF_IZUNIX/EF_PKUNIX) UID/GID. */ ++ flags &= 0x0ff; ++ } + #ifdef IZ_HAVE_UXUIDGID + if (have_new_type_eb > 1) + break; /* IZUNIX3 overrides IZUNIX2 e.f. block ! */ +@@ -2933,6 +2936,8 @@ + /* new 3rd generation Unix ef */ + have_new_type_eb = 2; + ++ /* Ignore any prior EF_IZUNIX/EF_PKUNIX/EF_IZUNIX2 UID/GID. */ ++ flags &= 0x0ff; + /* + Version 1 byte version of this extra field, currently 1 + UIDSize 1 byte Size of UID field +@@ -2953,8 +2958,6 @@ + uid_size = *((EB_HEADSIZE + 1) + ef_buf); + gid_size = *((EB_HEADSIZE + uid_size + 2) + ef_buf); + +- flags &= ~0x0ff; /* ignore any previous UNIX field */ +- + if ( read_ux3_value((EB_HEADSIZE + 2) + ef_buf, + uid_size, &z_uidgid[0]) + && diff --git a/unzip/patches/unzip-6.0-valgrind.patch b/unzip/patches/unzip-6.0-valgrind.patch new file mode 100644 index 000000000..41a752023 --- /dev/null +++ b/unzip/patches/unzip-6.0-valgrind.patch @@ -0,0 +1,26 @@ +diff --git a/fileio.c b/fileio.c +index ba0a1d0..03fc4be 100644 +--- a/fileio.c ++++ b/fileio.c +@@ -2006,6 +2006,7 @@ int do_string(__G__ length, option) /* return PK-type error code */ + unsigned comment_bytes_left; + unsigned int block_len; + int error=PK_OK; ++ unsigned int length2; + #ifdef AMIGA + char tmp_fnote[2 * AMIGA_FILENOTELEN]; /* extra room for squozen chars */ + #endif +@@ -2292,8 +2293,12 @@ int do_string(__G__ length, option) /* return PK-type error code */ + seek_zipf(__G__ G.cur_zipfile_bufstart - G.extra_bytes + + (G.inptr-G.inbuf) + length); + } else { +- if (readbuf(__G__ (char *)G.extra_field, length) == 0) ++ if ((length2 = readbuf(__G__ (char *)G.extra_field, length)) == 0) + return PK_EOF; ++ if(length2 < length) { ++ memset (__G__ (char *)G.extra_field+length2, 0 , length-length2); ++ length = length2; ++ } + /* Looks like here is where extra fields are read */ + getZip64Data(__G__ G.extra_field, length); + #ifdef UNICODE_SUPPORT diff --git a/unzip/patches/unzip-6.0-x-option.patch b/unzip/patches/unzip-6.0-x-option.patch new file mode 100644 index 000000000..72c77aeb7 --- /dev/null +++ b/unzip/patches/unzip-6.0-x-option.patch @@ -0,0 +1,28 @@ +--- ./process.c.orig 2009-03-06 02:25:10.000000000 +0100 ++++ ./process.c 2013-09-12 10:51:16.000000000 +0200 +@@ -2901,9 +2901,9 @@ + */ + + #ifdef IZ_HAVE_UXUIDGID +- if (eb_len >= EB_UX3_MINLEN +- && z_uidgid != NULL +- && (*((EB_HEADSIZE + 0) + ef_buf) == 1) ++ if ((eb_len >= EB_UX3_MINLEN) ++ && (z_uidgid != NULL) ++ && ((*((EB_HEADSIZE + 0) + ef_buf) == 1))) + /* only know about version 1 */ + { + uch uid_size; +@@ -2915,10 +2915,10 @@ + flags &= ~0x0ff; /* ignore any previous UNIX field */ + + if ( read_ux3_value((EB_HEADSIZE + 2) + ef_buf, +- uid_size, z_uidgid[0]) ++ uid_size, &z_uidgid[0]) + && + read_ux3_value((EB_HEADSIZE + uid_size + 3) + ef_buf, +- gid_size, z_uidgid[1]) ) ++ gid_size, &z_uidgid[1]) ) + { + flags |= EB_UX2_VALID; /* signal success */ + } diff --git a/unzip/patches/unzip-gnu89-build.patch b/unzip/patches/unzip-gnu89-build.patch new file mode 100644 index 000000000..706f12531 --- /dev/null +++ b/unzip/patches/unzip-gnu89-build.patch @@ -0,0 +1,15 @@ +unzip uses C89-only features, so it needs to be built in C89 mode. + +diff --git a/unix/Makefile b/unix/Makefile +index ab32270cf4b9b2cf..5eabbe13095e1f58 100644 +--- a/unix/Makefile ++++ b/unix/Makefile +@@ -545,7 +545,7 @@ generic: flags # now try autoconfigure first + # make $(MAKEF) unzips CF="${CF} `cat flags`" + + generic_gcc: +- $(MAKE) $(MAKEF) generic CC=gcc IZ_BZIP2="$(IZ_BZIP2)" ++ $(MAKE) $(MAKEF) generic CC="gcc -std=gnu89" IZ_BZIP2="$(IZ_BZIP2)" + + # extensions to perform SVR4 package-creation after compilation + generic_pkg: generic svr4package diff --git a/unzip/patches/unzip-zipbomb-manpage.patch b/unzip/patches/unzip-zipbomb-manpage.patch new file mode 100644 index 000000000..bcee827a0 --- /dev/null +++ b/unzip/patches/unzip-zipbomb-manpage.patch @@ -0,0 +1,25 @@ +From 6fe72291a5563cdbcd2bdd87e36528537b7cdcfb Mon Sep 17 00:00:00 2001 +From: Jakub Martisko jamartis@redhat.com +Date: Mon, 18 Nov 2019 14:17:46 +0100 +Subject: [PATCH] update the man page + +--- + man/unzip.1 | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/man/unzip.1 b/man/unzip.1 +index 21816d1..4d66073 100644 +--- a/man/unzip.1 ++++ b/man/unzip.1 +@@ -850,6 +850,8 @@ the specified zipfiles were not found. + invalid options were specified on the command line. + .IP 11 + no matching files were found. ++.IP 12 ++invalid zip file with overlapped components (possible zip-bomb). The zip-bomb checks can be disabled by using the UNZIP_DISABLE_ZIPBOMB_DETECTION=TRUE environment variable. + .IP 50 + the disk is (or was) full during extraction. + .IP 51 +-- +2.23.0 + diff --git a/unzip/patches/unzip-zipbomb-part1.patch b/unzip/patches/unzip-zipbomb-part1.patch new file mode 100644 index 000000000..35cf85652 --- /dev/null +++ b/unzip/patches/unzip-zipbomb-part1.patch @@ -0,0 +1,25 @@ +From 41beb477c5744bc396fa1162ee0c14218ec12213 Mon Sep 17 00:00:00 2001 +From: Mark Adler madler@alumni.caltech.edu +Date: Mon, 27 May 2019 08:20:32 -0700 +Subject: [PATCH] Fix bug in undefer_input() that misplaced the input state. + +--- + fileio.c | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +diff --git a/fileio.c b/fileio.c +index c042987..bc00d74 100644 +--- a/fileio.c ++++ b/fileio.c +@@ -530,8 +530,10 @@ void undefer_input(__G) + * This condition was checked when G.incnt_leftover was set > 0 in + * defer_leftover_input(), and it is NOT allowed to touch G.csize + * before calling undefer_input() when (G.incnt_leftover > 0) +- * (single exception: see read_byte()'s "G.csize <= 0" handling) !! ++ * (single exception: see readbyte()'s "G.csize <= 0" handling) !! + */ ++ if (G.csize < 0L) ++ G.csize = 0L; + G.incnt = G.incnt_leftover + (int)G.csize; + G.inptr = G.inptr_leftover - (int)G.csize; + G.incnt_leftover = 0; diff --git a/unzip/patches/unzip-zipbomb-part2.patch b/unzip/patches/unzip-zipbomb-part2.patch new file mode 100644 index 000000000..903c84576 --- /dev/null +++ b/unzip/patches/unzip-zipbomb-part2.patch @@ -0,0 +1,349 @@ +From 47b3ceae397d21bf822bc2ac73052a4b1daf8e1c Mon Sep 17 00:00:00 2001 +From: Mark Adler madler@alumni.caltech.edu +Date: Tue, 11 Jun 2019 22:01:18 -0700 +Subject: [PATCH] Detect and reject a zip bomb using overlapped entries. + +This detects an invalid zip file that has at least one entry that +overlaps with another entry or with the central directory to the +end of the file. A Fifield zip bomb uses overlapped local entries +to vastly increase the potential inflation ratio. Such an invalid +zip file is rejected. + +See https://www.bamsoftware.com/hacks/zipbomb/ for David Fifield's +analysis, construction, and examples of such zip bombs. + +The detection maintains a list of covered spans of the zip files +so far, where the central directory to the end of the file and any +bytes preceding the first entry at zip file offset zero are +considered covered initially. Then as each entry is decompressed +or tested, it is considered covered. When a new entry is about to +be processed, its initial offset is checked to see if it is +contained by a covered span. If so, the zip file is rejected as +invalid. + +This commit depends on a preceding commit: "Fix bug in +undefer_input() that misplaced the input state." +--- + extract.c | 190 +++++++++++++++++++++++++++++++++++++++++++++++++++++- + globals.c | 1 + + globals.h | 3 + + process.c | 11 ++++ + unzip.h | 1 + + 5 files changed, 205 insertions(+), 1 deletion(-) + +diff --git a/extract.c b/extract.c +index 1acd769..0973a33 100644 +--- a/extract.c ++++ b/extract.c +@@ -319,6 +319,125 @@ static ZCONST char Far UnsupportedExtraField[] = + "\nerror: unsupported extra-field compression type (%u)--skipping\n"; + static ZCONST char Far BadExtraFieldCRC[] = + "error [%s]: bad extra-field CRC %08lx (should be %08lx)\n"; ++static ZCONST char Far NotEnoughMemCover[] = ++ "error: not enough memory for bomb detection\n"; ++static ZCONST char Far OverlappedComponents[] = ++ "error: invalid zip file with overlapped components (possible zip bomb)\n"; ++ ++ ++ ++ ++ ++/* A growable list of spans. */ ++typedef zoff_t bound_t; ++typedef struct { ++ bound_t beg; /* start of the span */ ++ bound_t end; /* one past the end of the span */ ++} span_t; ++typedef struct { ++ span_t *span; /* allocated, distinct, and sorted list of spans */ ++ size_t num; /* number of spans in the list */ ++ size_t max; /* allocated number of spans (num <= max) */ ++} cover_t; ++ ++/* ++ * Return the index of the first span in cover whose beg is greater than val. ++ * If there is no such span, then cover->num is returned. ++ */ ++static size_t cover_find(cover, val) ++ cover_t *cover; ++ bound_t val; ++{ ++ size_t lo = 0, hi = cover->num; ++ while (lo < hi) { ++ size_t mid = (lo + hi) >> 1; ++ if (val < cover->span[mid].beg) ++ hi = mid; ++ else ++ lo = mid + 1; ++ } ++ return hi; ++} ++ ++/* Return true if val lies within any one of the spans in cover. */ ++static int cover_within(cover, val) ++ cover_t *cover; ++ bound_t val; ++{ ++ size_t pos = cover_find(cover, val); ++ return pos > 0 && val < cover->span[pos - 1].end; ++} ++ ++/* ++ * Add a new span to the list, but only if the new span does not overlap any ++ * spans already in the list. The new span covers the values beg..end-1. beg ++ * must be less than end. ++ * ++ * Keep the list sorted and merge adjacent spans. Grow the allocated space for ++ * the list as needed. On success, 0 is returned. If the new span overlaps any ++ * existing spans, then 1 is returned and the new span is not added to the ++ * list. If the new span is invalid because beg is greater than or equal to ++ * end, then -1 is returned. If the list needs to be grown but the memory ++ * allocation fails, then -2 is returned. ++ */ ++static int cover_add(cover, beg, end) ++ cover_t *cover; ++ bound_t beg; ++ bound_t end; ++{ ++ size_t pos; ++ int prec, foll; ++ ++ if (beg >= end) ++ /* The new span is invalid. */ ++ return -1; ++ ++ /* Find where the new span should go, and make sure that it does not ++ overlap with any existing spans. */ ++ pos = cover_find(cover, beg); ++ if ((pos > 0 && beg < cover->span[pos - 1].end) || ++ (pos < cover->num && end > cover->span[pos].beg)) ++ return 1; ++ ++ /* Check for adjacencies. */ ++ prec = pos > 0 && beg == cover->span[pos - 1].end; ++ foll = pos < cover->num && end == cover->span[pos].beg; ++ if (prec && foll) { ++ /* The new span connects the preceding and following spans. Merge the ++ following span into the preceding span, and delete the following ++ span. */ ++ cover->span[pos - 1].end = cover->span[pos].end; ++ cover->num--; ++ memmove(cover->span + pos, cover->span + pos + 1, ++ (cover->num - pos) * sizeof(span_t)); ++ } ++ else if (prec) ++ /* The new span is adjacent only to the preceding span. Extend the end ++ of the preceding span. */ ++ cover->span[pos - 1].end = end; ++ else if (foll) ++ /* The new span is adjacent only to the following span. Extend the ++ beginning of the following span. */ ++ cover->span[pos].beg = beg; ++ else { ++ /* The new span has gaps between both the preceding and the following ++ spans. Assure that there is room and insert the span. */ ++ if (cover->num == cover->max) { ++ size_t max = cover->max == 0 ? 16 : cover->max << 1; ++ span_t *span = realloc(cover->span, max * sizeof(span_t)); ++ if (span == NULL) ++ return -2; ++ cover->span = span; ++ cover->max = max; ++ } ++ memmove(cover->span + pos + 1, cover->span + pos, ++ (cover->num - pos) * sizeof(span_t)); ++ cover->num++; ++ cover->span[pos].beg = beg; ++ cover->span[pos].end = end; ++ } ++ return 0; ++} + + + +@@ -374,6 +493,29 @@ int extract_or_test_files(__G) /* return PK-type error code */ + } + #endif /* !SFX || SFX_EXDIR */ + ++ /* One more: initialize cover structure for bomb detection. Start with a ++ span that covers the central directory though the end of the file. */ ++ if (G.cover == NULL) { ++ G.cover = malloc(sizeof(cover_t)); ++ if (G.cover == NULL) { ++ Info(slide, 0x401, ((char *)slide, ++ LoadFarString(NotEnoughMemCover))); ++ return PK_MEM; ++ } ++ ((cover_t *)G.cover)->span = NULL; ++ ((cover_t *)G.cover)->max = 0; ++ } ++ ((cover_t *)G.cover)->num = 0; ++ if ((G.extra_bytes != 0 && ++ cover_add((cover_t *)G.cover, 0, G.extra_bytes) != 0) || ++ cover_add((cover_t *)G.cover, ++ G.extra_bytes + G.ecrec.offset_start_central_directory, ++ G.ziplen) != 0) { ++ Info(slide, 0x401, ((char *)slide, ++ LoadFarString(NotEnoughMemCover))); ++ return PK_MEM; ++ } ++ + /*--------------------------------------------------------------------------- + The basic idea of this function is as follows. Since the central di- + rectory lies at the end of the zipfile and the member files lie at the +@@ -591,7 +733,8 @@ int extract_or_test_files(__G) /* return PK-type error code */ + if (error > error_in_archive) + error_in_archive = error; + /* ...and keep going (unless disk full or user break) */ +- if (G.disk_full > 1 || error_in_archive == IZ_CTRLC) { ++ if (G.disk_full > 1 || error_in_archive == IZ_CTRLC || ++ error == PK_BOMB) { + /* clear reached_end to signal premature stop ... */ + reached_end = FALSE; + /* ... and cancel scanning the central directory */ +@@ -1060,6 +1203,11 @@ static int extract_or_test_entrylist(__G__ numchunk, + + /* seek_zipf(__G__ pInfo->offset); */ + request = G.pInfo->offset + G.extra_bytes; ++ if (cover_within((cover_t *)G.cover, request)) { ++ Info(slide, 0x401, ((char *)slide, ++ LoadFarString(OverlappedComponents))); ++ return PK_BOMB; ++ } + inbuf_offset = request % INBUFSIZ; + bufstart = request - inbuf_offset; + +@@ -1591,6 +1739,18 @@ static int extract_or_test_entrylist(__G__ numchunk, + return IZ_CTRLC; /* cancel operation by user request */ + } + #endif ++ error = cover_add((cover_t *)G.cover, request, ++ G.cur_zipfile_bufstart + (G.inptr - G.inbuf)); ++ if (error < 0) { ++ Info(slide, 0x401, ((char *)slide, ++ LoadFarString(NotEnoughMemCover))); ++ return PK_MEM; ++ } ++ if (error != 0) { ++ Info(slide, 0x401, ((char *)slide, ++ LoadFarString(OverlappedComponents))); ++ return PK_BOMB; ++ } + #ifdef MACOS /* MacOS is no preemptive OS, thus call event-handling by hand */ + UserStop(); + #endif +@@ -1992,6 +2152,34 @@ static int extract_or_test_member(__G) /* return PK-type error code */ + } + + undefer_input(__G); ++ ++ if ((G.lrec.general_purpose_bit_flag & 8) != 0) { ++ /* skip over data descriptor (harder than it sounds, due to signature ++ * ambiguity) ++ */ ++# define SIG 0x08074b50 ++# define LOW 0xffffffff ++ uch buf[12]; ++ unsigned shy = 12 - readbuf((char *)buf, 12); ++ ulg crc = shy ? 0 : makelong(buf); ++ ulg clen = shy ? 0 : makelong(buf + 4); ++ ulg ulen = shy ? 0 : makelong(buf + 8); /* or high clen if ZIP64 */ ++ if (crc == SIG && /* if not SIG, no signature */ ++ (G.lrec.crc32 != SIG || /* if not SIG, have signature */ ++ (clen == SIG && /* if not SIG, no signature */ ++ ((G.lrec.csize & LOW) != SIG || /* if not SIG, have signature */ ++ (ulen == SIG && /* if not SIG, no signature */ ++ (G.zip64 ? G.lrec.csize >> 32 : G.lrec.ucsize) != SIG ++ /* if not SIG, have signature */ ++ ))))) ++ /* skip four more bytes to account for signature */ ++ shy += 4 - readbuf((char *)buf, 4); ++ if (G.zip64) ++ shy += 8 - readbuf((char *)buf, 8); /* skip eight more for ZIP64 */ ++ if (shy) ++ error = PK_ERR; ++ } ++ + return error; + + } /* end function extract_or_test_member() */ +diff --git a/globals.c b/globals.c +index fa8cca5..1e0f608 100644 +--- a/globals.c ++++ b/globals.c +@@ -181,6 +181,7 @@ Uz_Globs *globalsCtor() + # if (!defined(NO_TIMESTAMPS)) + uO.D_flag=1; /* default to '-D', no restoration of dir timestamps */ + # endif ++ G.cover = NULL; /* not allocated yet */ + #endif + + uO.lflag=(-1); +diff --git a/globals.h b/globals.h +index 11b7215..2bdcdeb 100644 +--- a/globals.h ++++ b/globals.h +@@ -260,12 +260,15 @@ typedef struct Globals { + ecdir_rec ecrec; /* used in unzip.c, extract.c */ + z_stat statbuf; /* used by main, mapname, check_for_newer */ + ++ int zip64; /* true if Zip64 info in extra field */ ++ + int mem_mode; + uch *outbufptr; /* extract.c static */ + ulg outsize; /* extract.c static */ + int reported_backslash; /* extract.c static */ + int disk_full; + int newfile; ++ void **cover; /* used in extract.c for bomb detection */ + + int didCRlast; /* fileio static */ + ulg numlines; /* fileio static: number of lines printed */ +diff --git a/process.c b/process.c +index 1e9a1e1..d2e4dc3 100644 +--- a/process.c ++++ b/process.c +@@ -637,6 +637,13 @@ void free_G_buffers(__G) /* releases all memory allocated in global vars */ + } + #endif + ++ /* Free the cover span list and the cover structure. */ ++ if (G.cover != NULL) { ++ free(*(G.cover)); ++ free(G.cover); ++ G.cover = NULL; ++ } ++ + } /* end function free_G_buffers() */ + + +@@ -1890,6 +1897,8 @@ int getZip64Data(__G__ ef_buf, ef_len) + #define Z64FLGS 0xffff + #define Z64FLGL 0xffffffff + ++ G.zip64 = FALSE; ++ + if (ef_len == 0 || ef_buf == NULL) + return PK_COOL; + +@@ -1927,6 +1936,8 @@ int getZip64Data(__G__ ef_buf, ef_len) + #if 0 + break; /* Expect only one EF_PKSZ64 block. */ + #endif /* 0 */ ++ ++ G.zip64 = TRUE; + } + + /* Skip this extra field block. */ +diff --git a/unzip.h b/unzip.h +index 5b2a326..ed24a5b 100644 +--- a/unzip.h ++++ b/unzip.h +@@ -645,6 +645,7 @@ typedef struct _Uzp_cdir_Rec { + #define PK_NOZIP 9 /* zipfile not found */ + #define PK_PARAM 10 /* bad or illegal parameters specified */ + #define PK_FIND 11 /* no files found */ ++#define PK_BOMB 12 /* likely zip bomb */ + #define PK_DISK 50 /* disk full */ + #define PK_EOF 51 /* unexpected EOF */ + diff --git a/unzip/patches/unzip-zipbomb-part3.patch b/unzip/patches/unzip-zipbomb-part3.patch new file mode 100644 index 000000000..3b8d67b77 --- /dev/null +++ b/unzip/patches/unzip-zipbomb-part3.patch @@ -0,0 +1,112 @@ +From 6d351831be705cc26d897db44f878a978f4138fc Mon Sep 17 00:00:00 2001 +From: Mark Adler madler@alumni.caltech.edu +Date: Thu, 25 Jul 2019 20:43:17 -0700 +Subject: [PATCH] Do not raise a zip bomb alert for a misplaced central + directory. + +There is a zip-like file in the Firefox distribution, omni.ja, +which is a zip container with the central directory placed at the +start of the file instead of after the local entries as required +by the zip standard. This commit marks the actual location of the +central directory, as well as the end of central directory records, +as disallowed locations. This now permits such containers to not +raise a zip bomb alert, where in fact there are no overlaps. +--- + extract.c | 25 +++++++++++++++++++------ + process.c | 6 ++++++ + unzpriv.h | 10 ++++++++++ + 3 files changed, 35 insertions(+), 6 deletions(-) + +diff --git a/extract.c b/extract.c +index 0973a33..1b73cb0 100644 +--- a/extract.c ++++ b/extract.c +@@ -493,8 +493,11 @@ int extract_or_test_files(__G) /* return PK-type error code */ + } + #endif /* !SFX || SFX_EXDIR */ + +- /* One more: initialize cover structure for bomb detection. Start with a +- span that covers the central directory though the end of the file. */ ++ /* One more: initialize cover structure for bomb detection. Start with ++ spans that cover any extra bytes at the start, the central directory, ++ the end of central directory record (including the Zip64 end of central ++ directory locator, if present), and the Zip64 end of central directory ++ record, if present. */ + if (G.cover == NULL) { + G.cover = malloc(sizeof(cover_t)); + if (G.cover == NULL) { +@@ -506,15 +509,25 @@ int extract_or_test_files(__G) /* return PK-type error code */ + ((cover_t *)G.cover)->max = 0; + } + ((cover_t *)G.cover)->num = 0; +- if ((G.extra_bytes != 0 && +- cover_add((cover_t *)G.cover, 0, G.extra_bytes) != 0) || +- cover_add((cover_t *)G.cover, ++ if (cover_add((cover_t *)G.cover, + G.extra_bytes + G.ecrec.offset_start_central_directory, +- G.ziplen) != 0) { ++ G.extra_bytes + G.ecrec.offset_start_central_directory + ++ G.ecrec.size_central_directory) != 0) { + Info(slide, 0x401, ((char *)slide, + LoadFarString(NotEnoughMemCover))); + return PK_MEM; + } ++ if ((G.extra_bytes != 0 && ++ cover_add((cover_t *)G.cover, 0, G.extra_bytes) != 0) || ++ (G.ecrec.have_ecr64 && ++ cover_add((cover_t *)G.cover, G.ecrec.ec64_start, ++ G.ecrec.ec64_end) != 0) || ++ cover_add((cover_t *)G.cover, G.ecrec.ec_start, ++ G.ecrec.ec_end) != 0) { ++ Info(slide, 0x401, ((char *)slide, ++ LoadFarString(OverlappedComponents))); ++ return PK_BOMB; ++ } + + /*--------------------------------------------------------------------------- + The basic idea of this function is as follows. Since the central di- +diff --git a/process.c b/process.c +index d2e4dc3..d75d405 100644 +--- a/process.c ++++ b/process.c +@@ -1408,6 +1408,10 @@ static int find_ecrec64(__G__ searchlen) /* return PK-class error */ + + /* Now, we are (almost) sure that we have a Zip64 archive. */ + G.ecrec.have_ecr64 = 1; ++ G.ecrec.ec_start -= ECLOC64_SIZE+4; ++ G.ecrec.ec64_start = ecrec64_start_offset; ++ G.ecrec.ec64_end = ecrec64_start_offset + ++ 12 + makeint64(&byterec[ECREC64_LENGTH]); + + /* Update the "end-of-central-dir offset" for later checks. */ + G.real_ecrec_offset = ecrec64_start_offset; +@@ -1542,6 +1546,8 @@ static int find_ecrec(__G__ searchlen) /* return PK-class error */ + makelong(&byterec[OFFSET_START_CENTRAL_DIRECTORY]); + G.ecrec.zipfile_comment_length = + makeword(&byterec[ZIPFILE_COMMENT_LENGTH]); ++ G.ecrec.ec_start = G.real_ecrec_offset; ++ G.ecrec.ec_end = G.ecrec.ec_start + 22 + G.ecrec.zipfile_comment_length; + + /* Now, we have to read the archive comment, BEFORE the file pointer + is moved away backwards to seek for a Zip64 ECLOC64 structure. +diff --git a/unzpriv.h b/unzpriv.h +index dc9eff5..297b3c7 100644 +--- a/unzpriv.h ++++ b/unzpriv.h +@@ -2185,6 +2185,16 @@ typedef struct VMStimbuf { + int have_ecr64; /* valid Zip64 ecdir-record exists */ + int is_zip64_archive; /* Zip64 ecdir-record is mandatory */ + ush zipfile_comment_length; ++ zusz_t ec_start, ec_end; /* offsets of start and end of the ++ end of central directory record, ++ including if present the Zip64 ++ end of central directory locator, ++ which immediately precedes the ++ end of central directory record */ ++ zusz_t ec64_start, ec64_end; /* if have_ecr64 is true, then these ++ are the offsets of the start and ++ end of the Zip64 end of central ++ directory record */ + } ecdir_rec; + + diff --git a/unzip/patches/unzip-zipbomb-part4.patch b/unzip/patches/unzip-zipbomb-part4.patch new file mode 100644 index 000000000..beffa2c99 --- /dev/null +++ b/unzip/patches/unzip-zipbomb-part4.patch @@ -0,0 +1,25 @@ +From 5e2efcd633a4a1fb95a129a75508e7d769e767be Mon Sep 17 00:00:00 2001 +From: Mark Adler madler@alumni.caltech.edu +Date: Sun, 9 Feb 2020 20:36:28 -0800 +Subject: [PATCH] Fix bug in UZbunzip2() that incorrectly updated G.incnt. + +The update assumed a full buffer, which is not always full. This +could result in a false overlapped element detection when a small +bzip2-compressed file was unzipped. This commit remedies that. +--- + extract.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/extract.c b/extract.c +index d9866f9..0cb7bfc 100644 +--- a/extract.c ++++ b/extract.c +@@ -3010,7 +3010,7 @@ __GDEF + #endif + + G.inptr = (uch *)bstrm.next_in; +- G.incnt = (G.inbuf + INBUFSIZ) - G.inptr; /* reset for other routines */ ++ G.incnt -= G.inptr - G.inbuf; /* reset for other routines */ + + uzbunzip_cleanup_exit: + err = BZ2_bzDecompressEnd(&bstrm); diff --git a/unzip/patches/unzip-zipbomb-part5.patch b/unzip/patches/unzip-zipbomb-part5.patch new file mode 100644 index 000000000..ca6a43a7c --- /dev/null +++ b/unzip/patches/unzip-zipbomb-part5.patch @@ -0,0 +1,26 @@ +From 5c572555cf5d80309a07c30cf7a54b2501493720 Mon Sep 17 00:00:00 2001 +From: Mark Adler madler@alumni.caltech.edu +Date: Sun, 9 Feb 2020 21:39:09 -0800 +Subject: [PATCH] Fix bug in UZinflate() that incorrectly updated G.incnt. + +The update assumed a full buffer, which is not always full. This +could result in a false overlapped element detection when a small +deflate-compressed file was unzipped using an old zlib. This +commit remedies that. +--- + inflate.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/inflate.c b/inflate.c +index 2f5a015..70e3cc0 100644 +--- a/inflate.c ++++ b/inflate.c +@@ -700,7 +700,7 @@ int UZinflate(__G__ is_defl64) + G.dstrm.total_out)); + + G.inptr = (uch *)G.dstrm.next_in; +- G.incnt = (G.inbuf + INBUFSIZ) - G.inptr; /* reset for other routines */ ++ G.incnt -= G.inptr - G.inbuf; /* reset for other routines */ + + uzinflate_cleanup_exit: + err = inflateReset(&G.dstrm); diff --git a/unzip/patches/unzip-zipbomb-part6.patch b/unzip/patches/unzip-zipbomb-part6.patch new file mode 100644 index 000000000..3dce6e342 --- /dev/null +++ b/unzip/patches/unzip-zipbomb-part6.patch @@ -0,0 +1,95 @@ +From 122050bac16fae82a460ff739fb1ca0f106e9d85 Mon Sep 17 00:00:00 2001 +From: Mark Adler madler@alumni.caltech.edu +Date: Sat, 2 Jan 2021 13:09:34 -0800 +Subject: [PATCH] Determine Zip64 status entry-by-entry instead of for entire + file. + +Fixes a bug for zip files with mixed Zip64 and not Zip64 entries, +which resulted in an incorrect data descriptor length. The bug is +seen when a Zip64 entry precedes a non-Zip64 entry, in which case +the data descriptor would have been assumed to be larger than it +is, resulting in an incorrect bomb warning due to a perceived +overlap with the next entry. This commit determines and saves the +Zip64 status for each entry based on the central directory, and +then computes the length of each data descriptor accordingly. +--- + extract.c | 5 +++-- + globals.h | 2 -- + process.c | 4 +--- + unzpriv.h | 1 + + 4 files changed, 5 insertions(+), 7 deletions(-) + +diff --git a/extract.c b/extract.c +index 504afd6..878817d 100644 +--- a/extract.c ++++ b/extract.c +@@ -658,6 +658,7 @@ int extract_or_test_files(__G) /* return PK-type error code */ + break; + } + } ++ G.pInfo->zip64 = FALSE; + if ((error = do_string(__G__ G.crec.extra_field_length, + EXTRA_FIELD)) != 0) + { +@@ -2187,12 +2188,12 @@ static int extract_or_test_member(__G) /* return PK-type error code */ + (clen == SIG && /* if not SIG, no signature */ + ((G.lrec.csize & LOW) != SIG || /* if not SIG, have signature */ + (ulen == SIG && /* if not SIG, no signature */ +- (G.zip64 ? G.lrec.csize >> 32 : G.lrec.ucsize) != SIG ++ (G.pInfo->zip64 ? G.lrec.csize >> 32 : G.lrec.ucsize) != SIG + /* if not SIG, have signature */ + ))))) + /* skip four more bytes to account for signature */ + shy += 4 - readbuf((char *)buf, 4); +- if (G.zip64) ++ if (G.pInfo->zip64) + shy += 8 - readbuf((char *)buf, 8); /* skip eight more for ZIP64 */ + if (shy) + error = PK_ERR; +diff --git a/globals.h b/globals.h +index f9c6daf..a883c90 100644 +--- a/globals.h ++++ b/globals.h +@@ -261,8 +261,6 @@ typedef struct Globals { + ecdir_rec ecrec; /* used in unzip.c, extract.c */ + z_stat statbuf; /* used by main, mapname, check_for_newer */ + +- int zip64; /* true if Zip64 info in extra field */ +- + int mem_mode; + uch *outbufptr; /* extract.c static */ + ulg outsize; /* extract.c static */ +diff --git a/process.c b/process.c +index d75d405..d643c6f 100644 +--- a/process.c ++++ b/process.c +@@ -1903,8 +1903,6 @@ int getZip64Data(__G__ ef_buf, ef_len) + #define Z64FLGS 0xffff + #define Z64FLGL 0xffffffff + +- G.zip64 = FALSE; +- + if (ef_len == 0 || ef_buf == NULL) + return PK_COOL; + +@@ -1943,7 +1941,7 @@ int getZip64Data(__G__ ef_buf, ef_len) + break; /* Expect only one EF_PKSZ64 block. */ + #endif /* 0 */ + +- G.zip64 = TRUE; ++ G.pInfo->zip64 = TRUE; + } + + /* Skip this extra field block. */ +diff --git a/unzpriv.h b/unzpriv.h +index 09f288e..75b3359 100644 +--- a/unzpriv.h ++++ b/unzpriv.h +@@ -2034,6 +2034,7 @@ typedef struct min_info { + #ifdef UNICODE_SUPPORT + unsigned GPFIsUTF8: 1; /* crec gen_purpose_flag UTF-8 bit 11 is set */ + #endif ++ unsigned zip64: 1; /* true if entry has Zip64 extra block */ + #ifndef SFX + char Far *cfilname; /* central header version of filename */ + #endif diff --git a/unzip/patches/unzip-zipbomb-switch.patch b/unzip/patches/unzip-zipbomb-switch.patch new file mode 100644 index 000000000..c6d33c026 --- /dev/null +++ b/unzip/patches/unzip-zipbomb-switch.patch @@ -0,0 +1,215 @@ +From 5b44c818b96193b3e240f38f61985fa2bc780eb7 Mon Sep 17 00:00:00 2001 +From: Jakub Martisko jamartis@redhat.com +Date: Tue, 30 Nov 2021 15:42:17 +0100 +Subject: [PATCH] Add an option to disable the zipbomb detection + +This can be done by settting a newly introduced environment variable +UNZIP_DISABLE_ZIPBOMB_DETECTION to {TRUE,True,true}. If the variable is unset, or +set to any other value the zipbomb detection is left enabled. + +Example: + UNZIP_DISABLE_ZIPBOMB_DETECTION=True unzip ./zbsm.zip -d ./test +--- + extract.c | 85 ++++++++++++++++++++++++++++++------------------------- + unzip.c | 15 ++++++++-- + unzip.h | 1 + + 3 files changed, 60 insertions(+), 41 deletions(-) + +diff --git a/extract.c b/extract.c +index 878817d..3e58071 100644 +--- a/extract.c ++++ b/extract.c +@@ -322,7 +322,8 @@ static ZCONST char Far BadExtraFieldCRC[] = + static ZCONST char Far NotEnoughMemCover[] = + "error: not enough memory for bomb detection\n"; + static ZCONST char Far OverlappedComponents[] = +- "error: invalid zip file with overlapped components (possible zip bomb)\n"; ++ "error: invalid zip file with overlapped components (possible zip bomb)\n \ ++To unzip the file anyway, rerun the command with UNZIP_DISABLE_ZIPBOMB_DETECTION=TRUE environmnent variable\n"; + + + +@@ -502,35 +503,37 @@ int extract_or_test_files(__G) /* return PK-type error code */ + the end of central directory record (including the Zip64 end of central + directory locator, if present), and the Zip64 end of central directory + record, if present. */ +- if (G.cover == NULL) { ++ if (uO.zipbomb == TRUE) { ++ if (G.cover == NULL) { + G.cover = malloc(sizeof(cover_t)); + if (G.cover == NULL) { +- Info(slide, 0x401, ((char *)slide, +- LoadFarString(NotEnoughMemCover))); +- return PK_MEM; ++ Info(slide, 0x401, ((char *)slide, ++ LoadFarString(NotEnoughMemCover))); ++ return PK_MEM; + } + ((cover_t *)G.cover)->span = NULL; + ((cover_t *)G.cover)->max = 0; +- } +- ((cover_t *)G.cover)->num = 0; +- if (cover_add((cover_t *)G.cover, +- G.extra_bytes + G.ecrec.offset_start_central_directory, +- G.extra_bytes + G.ecrec.offset_start_central_directory + +- G.ecrec.size_central_directory) != 0) { ++ } ++ ((cover_t *)G.cover)->num = 0; ++ if (cover_add((cover_t *)G.cover, ++ G.extra_bytes + G.ecrec.offset_start_central_directory, ++ G.extra_bytes + G.ecrec.offset_start_central_directory + ++ G.ecrec.size_central_directory) != 0) { + Info(slide, 0x401, ((char *)slide, +- LoadFarString(NotEnoughMemCover))); ++ LoadFarString(NotEnoughMemCover))); + return PK_MEM; +- } +- if ((G.extra_bytes != 0 && +- cover_add((cover_t *)G.cover, 0, G.extra_bytes) != 0) || +- (G.ecrec.have_ecr64 && +- cover_add((cover_t *)G.cover, G.ecrec.ec64_start, +- G.ecrec.ec64_end) != 0) || +- cover_add((cover_t *)G.cover, G.ecrec.ec_start, +- G.ecrec.ec_end) != 0) { ++ } ++ if ((G.extra_bytes != 0 && ++ cover_add((cover_t *)G.cover, 0, G.extra_bytes) != 0) || ++ (G.ecrec.have_ecr64 && ++ cover_add((cover_t *)G.cover, G.ecrec.ec64_start, ++ G.ecrec.ec64_end) != 0) || ++ cover_add((cover_t *)G.cover, G.ecrec.ec_start, ++ G.ecrec.ec_end) != 0) { + Info(slide, 0x401, ((char *)slide, +- LoadFarString(OverlappedComponents))); ++ LoadFarString(OverlappedComponents))); + return PK_BOMB; ++ } + } + + /*--------------------------------------------------------------------------- +@@ -1222,10 +1225,12 @@ static int extract_or_test_entrylist(__G__ numchunk, + + /* seek_zipf(__G__ pInfo->offset); */ + request = G.pInfo->offset + G.extra_bytes; +- if (cover_within((cover_t *)G.cover, request)) { ++ if (uO.zipbomb == TRUE) { ++ if (cover_within((cover_t *)G.cover, request)) { + Info(slide, 0x401, ((char *)slide, +- LoadFarString(OverlappedComponents))); ++ LoadFarString(OverlappedComponents))); + return PK_BOMB; ++ } + } + inbuf_offset = request % INBUFSIZ; + bufstart = request - inbuf_offset; +@@ -1758,17 +1763,19 @@ reprompt: + return IZ_CTRLC; /* cancel operation by user request */ + } + #endif +- error = cover_add((cover_t *)G.cover, request, +- G.cur_zipfile_bufstart + (G.inptr - G.inbuf)); +- if (error < 0) { ++ if (uO.zipbomb == TRUE) { ++ error = cover_add((cover_t *)G.cover, request, ++ G.cur_zipfile_bufstart + (G.inptr - G.inbuf)); ++ if (error < 0) { + Info(slide, 0x401, ((char *)slide, +- LoadFarString(NotEnoughMemCover))); ++ LoadFarString(NotEnoughMemCover))); + return PK_MEM; +- } +- if (error != 0) { ++ } ++ if (error != 0) { + Info(slide, 0x401, ((char *)slide, +- LoadFarString(OverlappedComponents))); ++ LoadFarString(OverlappedComponents))); + return PK_BOMB; ++ } + } + #ifdef MACOS /* MacOS is no preemptive OS, thus call event-handling by hand */ + UserStop(); +@@ -2171,8 +2178,8 @@ static int extract_or_test_member(__G) /* return PK-type error code */ + } + + undefer_input(__G); +- +- if ((G.lrec.general_purpose_bit_flag & 8) != 0) { ++ if (uO.zipbomb == TRUE) { ++ if ((G.lrec.general_purpose_bit_flag & 8) != 0) { + /* skip over data descriptor (harder than it sounds, due to signature + * ambiguity) + */ +@@ -2189,16 +2196,16 @@ static int extract_or_test_member(__G) /* return PK-type error code */ + ((G.lrec.csize & LOW) != SIG || /* if not SIG, have signature */ + (ulen == SIG && /* if not SIG, no signature */ + (G.pInfo->zip64 ? G.lrec.csize >> 32 : G.lrec.ucsize) != SIG +- /* if not SIG, have signature */ ++ /* if not SIG, have signature */ + ))))) +- /* skip four more bytes to account for signature */ +- shy += 4 - readbuf((char *)buf, 4); ++ /* skip four more bytes to account for signature */ ++ shy += 4 - readbuf((char *)buf, 4); + if (G.pInfo->zip64) +- shy += 8 - readbuf((char *)buf, 8); /* skip eight more for ZIP64 */ ++ shy += 8 - readbuf((char *)buf, 8); /* skip eight more for ZIP64 */ + if (shy) +- error = PK_ERR; ++ error = PK_ERR; ++ } + } +- + return error; + + } /* end function extract_or_test_member() */ +diff --git a/unzip.c b/unzip.c +index 8dbfc95..abb3644 100644 +--- a/unzip.c ++++ b/unzip.c +@@ -1329,10 +1329,9 @@ int uz_opts(__G__ pargc, pargv) + int *pargc; + char ***pargv; + { +- char **argv, *s; ++ char **argv, *s, *zipbomb_envar; + int argc, c, error=FALSE, negative=0, showhelp=0; + +- + argc = *pargc; + argv = *pargv; + +@@ -1923,6 +1922,18 @@ opts_done: /* yes, very ugly...but only used by UnZipSFX with -x xlist */ + else + G.extract_flag = TRUE; + ++ /* Disable the zipbomb detection, this is the only option set only via the shell variables but it should at least not clash with something in the future. */ ++ zipbomb_envar = getenv("UNZIP_DISABLE_ZIPBOMB_DETECTION"); ++ uO.zipbomb = TRUE; ++ if (zipbomb_envar != NULL) { ++ /* strcasecmp might be a better approach here but it is POSIX-only */ ++ if ((strcmp ("TRUE", zipbomb_envar) == 0) ++ || (strcmp ("True", zipbomb_envar) == 0) ++ || (strcmp ("true",zipbomb_envar) == 0)) { ++ uO.zipbomb = FALSE; ++ } ++ } ++ + *pargc = argc; + *pargv = argv; + return PK_OK; +diff --git a/unzip.h b/unzip.h +index ed24a5b..e7665e8 100644 +--- a/unzip.h ++++ b/unzip.h +@@ -559,6 +559,7 @@ typedef struct _UzpOpts { + #ifdef UNIX + int cflxflag; /* -^: allow control chars in extracted filenames */ + #endif ++ int zipbomb; + #endif /* !FUNZIP */ + } UzpOpts; + +-- +2.33.0 + diff --git a/unzip/unzip.nm b/unzip/unzip.nm index ea4581544..664790074 100644 --- a/unzip/unzip.nm +++ b/unzip/unzip.nm @@ -5,10 +5,11 @@
name = unzip version = 6.0 -release = 5 +release = 6 +thisapp = %{name}60
groups = Applications/Archiving -url = ftp://ftp.info-zip.org/pub/infozip/src/ +url = https://infozip.sourceforge.net/UnZip.html license = BSD summary = A utility for unpacking zip files.
@@ -21,14 +22,53 @@ description in some respects. end
-thisapp = %{name}60
-source_dl += ftp://ftp.info-zip.org/pub/infozip/src/ -sources = %{thisapp}.tgz +source_dl += https://downloads.sourceforge.net/infozip/ + +patches + unzip-6.0-bzip2-configure.patch + unzip-6.0-exec-shield.patch + unzip-6.0-close.patch + unzip-6.0-attribs-overflow.patch + unzip-6.0-configure.patch + unzip-6.0-manpage-fix.patch + unzip-6.0-fix-recmatch.patch + unzip-6.0-symlink.patch + unzip-6.0-caseinsensitive.patch + unzip-6.0-format-secure.patch + unzip-6.0-valgrind.patch + unzip-6.0-x-option.patch + unzip-6.0-overflow.patch + unzip-6.0-cve-2014-8139.patch + unzip-6.0-cve-2014-8140.patch + unzip-6.0-cve-2014-8141.patch + unzip-6.0-overflow-long-fsize.patch + unzip-6.0-heap-overflow-infloop.patch + unzip-6.0-alt-iconv-utf8.patch + unzip-6.0-alt-iconv-utf8-print.patch + 0001-Fix-CVE-2016-9844-rhbz-1404283.patch + unzip-6.0-timestamp.patch + unzip-6.0-cve-2018-1000035-heap-based-overflow.patch + unzip-6.0-cve-2018-18384.patch + unzip-6.0-COVSCAN-fix-unterminated-string.patch + unzip-zipbomb-part1.patch + unzip-zipbomb-part2.patch + unzip-zipbomb-part3.patch + unzip-zipbomb-manpage.patch + unzip-zipbomb-part4.patch + unzip-zipbomb-part5.patch + unzip-zipbomb-part6.patch + unzip-zipbomb-switch.patch + unzip-gnu89-build.patch +end
CFLAGS += -D_LARGEFILE64_SOURCE
build + requires + bzip2-devel + end + DIR_APP = %{DIR_SRC}/%{thisapp}
build diff --git a/vala/vala.nm b/vala/vala.nm index fac47145e..e11bf0194 100644 --- a/vala/vala.nm +++ b/vala/vala.nm @@ -4,15 +4,15 @@ ###############################################################################
name = vala -ver_major = 0.32 -ver_minor = 0 +ver_major = 0.56 +ver_minor = 3 version = %{ver_major}.%{ver_minor} release = 1
groups = Development/Languages url = http://live.gnome.org/Vala license = LGPLv2+ and BSD -summary = A modern programming language. +summary = A modern programming language
description Vala is a new programming language that aims to bring modern @@ -21,7 +21,7 @@ description ABI compared to applications and libraries written in C. end
-source_dl = http://artfiles.org/gnome.org/sources/vala/0.32/ +source_dl = https://download.gnome.org/sources/vala/%%7Bver_major%7D/ sources = %{thisapp}.tar.xz
build @@ -30,6 +30,7 @@ build dbus dbus-glib-devel flex + graphviz-devel pkg-config end
hooks/post-receive -- IPFire 3.x development tree