.gear/rules | 2 + .../tags/bbbb31e81c36282b43d14d3ecf28d070ea66a895 | 23 +++ .gear/tags/list | 1 + Makefile.am | 2 +- README | 2 +- doc/examples/01_compress_easy.c | 2 +- src/liblzma/api/lzma/base.h | 2 +- src/liblzma/check/crc32_x86.S | 2 +- src/liblzma/common/index.c | 2 +- src/xz/hardware.c | 6 + src/xz/xz.1 | 4 +- xz.spec | 219 +++++++++++++++++++++ 12 files changed, 259 insertions(+), 8 deletions(-) diff --git a/.gear/rules b/.gear/rules new file mode 100644 index 0000000..69aaefc --- /dev/null +++ b/.gear/rules @@ -0,0 +1,2 @@ +tar: v@version@:. name=@name@-@version@ +diff: v@version@:. . name=@name@-@version@-@release@.patch diff --git a/.gear/tags/bbbb31e81c36282b43d14d3ecf28d070ea66a895 b/.gear/tags/bbbb31e81c36282b43d14d3ecf28d070ea66a895 new file mode 100644 index 0000000..470bf45 --- /dev/null +++ b/.gear/tags/bbbb31e81c36282b43d14d3ecf28d070ea66a895 @@ -0,0 +1,23 @@ +object 2327a461e1afce862c22269b80d3517801103c1b +type commit +tag v5.2.5 +tagger Lasse Collin 1584471335 +0200 + +XZ Utils 5.2.5 +-----BEGIN PGP SIGNATURE----- + +iQJNBAABCgA3FiEENpDCQM5RtGcNMK0cOO51fWkYRiAFAl5xHS4ZHGxhc3NlLmNv +bGxpbkB0dWthYW5pLm9yZwAKCRA47nV9aRhGIJ9bD/94kkm5aRdQGgIOr1Lk1/I9 +YkQFCRig/pm5bTTr0VpAqlogjnrwYi8BdhCpBC19cWuAre3T6wtMPIMFpEEoXBG9 +LOO3f6KkNeFQPVFOiNEJBCRNvszYYm3N33Z9U37nDEgqMODgkzaffeHDGxfOlcYv +ogZX+B9okFem9UF4/bwI+ae3JvikSvDJnBZyN1rBsZOTW2ygBt+K7KJG3ltcarO8 +LOIZYelqmg4qvk+ANOHN697JfBV+oCQpakjFLp/g7fqvnGAZWL3kw9KsvWpihfxL +DcujGUSwEj6AVvOaxXfS3vwlHrjl3ixioQuJjp+XOTonB4aE5qeFsJiHEhMd08Sc +a8X0NjCpYpdROg3laox93zqpIpwiMCA9qPqEvcA5z9XhQWyjCTWBz0Mpf8vrFxJG +7wJlbv0xIsxkovE4Q6+8xAhFVqrjhiBCZkRRz6oy2+A9t2sh0nNys0nUuk7M5/5T +lhKflYN2UNkiq4mwQpYY59PKcpwvnzspo6xbqi2I6cK8/e1NVgHs3IiFalbRvk+U +8bFBxplh9ZAZSJUrNK7yhuJLzYSfBFzPBwFt4oIrLAu7xjEBzcr3+RpeiVB8gHZi +aTyhaooTGwgQw34zzgaQ7k0Ueh4bEkS+iCJN5nSugBFGXEF1XMZNmVUeDByo1bQZ +UvPVU6O8bMnV86iv+R7eeA== +=bgjN +-----END PGP SIGNATURE----- diff --git a/.gear/tags/list b/.gear/tags/list new file mode 100644 index 0000000..bc6c158 --- /dev/null +++ b/.gear/tags/list @@ -0,0 +1 @@ +bbbb31e81c36282b43d14d3ecf28d070ea66a895 v5.2.5 diff --git a/Makefile.am b/Makefile.am index 3a63499..e5b1265 100644 --- a/Makefile.am +++ b/Makefile.am @@ -64,7 +64,7 @@ EXTRA_DIST = \ ACLOCAL_AMFLAGS = -I m4 -# List of man pages to conver to PDF and plain text in the dist-hook target. +# List of man pages to convert to PDF and plain text in the dist-hook target. manfiles = \ src/xz/xz.1 \ src/xzdec/xzdec.1 \ diff --git a/README b/README index 3f0c38d..110d242 100644 --- a/README +++ b/README @@ -204,7 +204,7 @@ XZ Utils Several strings will change in a future version of xz so if you wish to start a new translation, look at the code in the xz git - repostiory instead of a 5.2.x release. + repository instead of a 5.2.x release. 5. Other implementations of the .xz format diff --git a/doc/examples/01_compress_easy.c b/doc/examples/01_compress_easy.c index e6dd2b0..ec32a37 100644 --- a/doc/examples/01_compress_easy.c +++ b/doc/examples/01_compress_easy.c @@ -173,7 +173,7 @@ compress(lzma_stream *strm, FILE *infile, FILE *outfile) lzma_ret ret = lzma_code(strm, action); // If the output buffer is full or if the compression finished - // successfully, write the data from the output bufffer to + // successfully, write the data from the output buffer to // the output file. if (strm->avail_out == 0 || ret == LZMA_STREAM_END) { // When lzma_code() has returned LZMA_STREAM_END, diff --git a/src/liblzma/api/lzma/base.h b/src/liblzma/api/lzma/base.h index a6005ac..7daeddb 100644 --- a/src/liblzma/api/lzma/base.h +++ b/src/liblzma/api/lzma/base.h @@ -447,7 +447,7 @@ typedef struct lzma_internal_s lzma_internal; * * The lzma_stream structure is used for * - passing pointers to input and output buffers to liblzma; - * - defining custom memory hander functions; and + * - defining custom memory handler functions; and * - holding a pointer to coder-specific internal data structures. * * Typical usage: diff --git a/src/liblzma/check/crc32_x86.S b/src/liblzma/check/crc32_x86.S index 67f68a4..632c7b3 100644 --- a/src/liblzma/check/crc32_x86.S +++ b/src/liblzma/check/crc32_x86.S @@ -195,7 +195,7 @@ LZMA_CRC32: /* * Read the next four bytes, for which the CRC is calculated - * on the next interation of the loop. + * on the next iteration of the loop. */ movl 12(%esi), %ecx diff --git a/src/liblzma/common/index.c b/src/liblzma/common/index.c index a41e8f3..86c1054 100644 --- a/src/liblzma/common/index.c +++ b/src/liblzma/common/index.c @@ -1226,7 +1226,7 @@ lzma_index_iter_locate(lzma_index_iter *iter, lzma_vli target) // Use binary search to locate the exact Record. It is the first // Record whose uncompressed_sum is greater than target. - // This is because we want the rightmost Record that fullfills the + // This is because we want the rightmost Record that fulfills the // search criterion. It is possible that there are empty Blocks; // we don't want to return them. size_t left = 0; diff --git a/src/xz/hardware.c b/src/xz/hardware.c index e746cf9..da3ed3f 100644 --- a/src/xz/hardware.c +++ b/src/xz/hardware.c @@ -91,7 +91,13 @@ hardware_memlimit_set(uint64_t new_memlimit, // Use a value less than SIZE_MAX so that there's some room // for the xz program and so on. Don't use 4000 MiB because // it could look like someone mixed up base-2 and base-10. +#ifdef __mips__ + // For MIPS32, due to architectural pecularities, + // the limit is even lower. + const uint64_t limit_max = UINT64_C(2000) << 20; +#else const uint64_t limit_max = UINT64_C(4020) << 20; +#endif // UINT64_MAX is a special case for the string "max" so // that has to be handled specially. diff --git a/src/xz/xz.1 b/src/xz/xz.1 index 540d136..f81278f 100644 --- a/src/xz/xz.1 +++ b/src/xz/xz.1 @@ -5,7 +5,7 @@ .\" This file has been put into the public domain. .\" You can do whatever you want with this file. .\" -.TH XZ 1 "2020-02-01" "Tukaani" "XZ Utils" +.TH XZ 1 "2020-03-23" "Tukaani" "XZ Utils" . .SH NAME xz, unxz, xzcat, lzma, unlzma, lzcat \- Compress or decompress .xz and .lzma files @@ -1294,7 +1294,7 @@ The default means four-byte alignment .RI (2^ pb =2^2=4), which is often a good choice when there's no better guess. .IP "" -When the aligment is known, setting +When the alignment is known, setting .I pb accordingly may reduce the file size a little. E.g. with text files having one-byte diff --git a/xz.spec b/xz.spec new file mode 100644 index 0000000..c040172 --- /dev/null +++ b/xz.spec @@ -0,0 +1,219 @@ +Name: xz +Version: 5.2.5 +Release: alt3.1 + +Summary: LZMA/XZ compression programs +# We don't package scripts to grep, diff, and view compressed files here +# because they are already packaged in gzip-utils. +# see COPYING +License: ALT-Public-Domain +Group: Archiving/Compression +URL: http://tukaani.org/xz/ +Source: %name-%version.tar +Patch: %name-%version-%release.patch + +Requires: liblzma = %version-%release + +# Last lzma-utils version was 4.32.7 +Provides: lzma-utils = 4.32.9 +Obsoletes: lzma-utils < 4.32.9 + +# Automatically added by buildreq on Fri Jul 20 2012 +# optimized out: xz +BuildRequires: glibc-devel-static + +%description +This package provides a set of gzip-style tools for working with +files compressed with the Lempel-Ziv/Markov-chain compression method. +It supports two formats: .xz and the older .lzma format. + +%package -n liblzma +Summary: LZMA/XZ compression library +Group: System/Libraries + +%package -n liblzma-devel +Summary: API headers and other development files related to liblzma +Group: Development/C +Requires: liblzma = %version-%release +Conflicts: lzmalib-devel + +%package -n liblzma-devel-static +Summary: Static liblzma compression library +Group: Development/C +Requires: liblzma-devel = %version-%release + +%description -n liblzma +This package provides data compression library for working with +files compressed with the Lempel-Ziv/Markov-chain compression method. +It supports two formats: .xz and the older .lzma format. + +%description -n liblzma-devel +This package contains the API headers, development library, and +other development files related to liblzma + +%description -n liblzma-devel-static +This package contains static liblzma compression library. + +%prep +%setup -q +%patch -p1 +%ifarch e2kv5 e2kv6 +# 15%% faster lzma decompression (idea by Alexander Troosh from MCST) +sed -i -E 's/rc_bound = (.*) [*] (.*);/rc_bound = __builtin_e2k_pmullw(\1,\2);/' \ + src/liblzma/rangecoder/range_decoder.h +%endif + +%build +%{?optflags_lto:%global optflags_lto %optflags_lto -ffat-lto-objects} +%ifarch %ix86 +# liblzma uses crc*_x86.S asm code on i686 +%add_optflags -Wa,--generate-missing-build-notes=yes +%endif + +%autoreconf +%define docdir %_docdir/%name-%version +%configure --enable-dynamic --disable-scripts --docdir=%docdir +cflags=$(sed -n 's/^CFLAGS = //p' src/liblzma/Makefile) +%make_build -C src/liblzma CFLAGS="${cflags:?} %{!?_enable_debug:-O3}" liblzma_la-lzma_decoder.lo +%make_build + +%def_enable profile +%if_enabled profile +# 5-10%% faster on x86_64 +# 15%% faster compression and 40%% faster decompression on e2k +tar cf .tar */*/*.o */*.[ch] */*/*.[ch] */*/*/*.[ch] */*/*/*/*.[ch] \ + */*.txt tests/files */*/.libs/*.{o,so*} --sort=name --mtime=@2718281828 +stat --printf=".tar size: %%s\n" .tar +md5sum .tar +rm src/liblzma/{*.lo,liblzma.la} +%make_build -C src/liblzma CFLAGS="$cflags -fprofile-generate %{!?_enable_debug:-O3}" liblzma_la-lzma_decoder.lo +%make_build -C src/liblzma CFLAGS="$cflags -fprofile-generate" +./libtool --tag=CC --mode=link gcc %optflags -fprofile-generate -static src/xz/xz-*.o src/liblzma/liblzma.la -o xz.static +# ./xz.static collect profiles from src/liblzma/*.o +# ./src/xz/xz collect profiles from src/liblzma/.libs/*.o compiled with -fPIC -DPIC +# doesn't matter which to use for LCC 1.25 on E2K +for i in '0 -C none' '2 -C crc32' '6 --arm --lzma2 -C crc64' '6 --x86 --lzma2=lc=4 -C sha256' '7e --format=lzma'; do + # .tmp needed to workaround LCC bug with corrupted profile written by several apps concurrently + ./src/xz/xz -$i <.tar >.tmp ; ./xz.static -d <.tmp >/dev/null + ./xz.static -$i <.tar >.tmp ; ./src/xz/xz -d <.tmp >/dev/null +done +rm src/liblzma/{*.lo,liblzma.la} .tmp xz.static +%ifarch %e2k +eprof_helper +# lcc needs special paths handling, MCST is not willing to fix this +%define profile_file '=../../eprof.sum' +%else +%define profile_file %nil +%endif +%make_build -C src/liblzma CFLAGS="$cflags -fprofile-use%profile_file %{!?_enable_debug:-O3}" liblzma_la-lzma_decoder.lo +%make_build -C src/liblzma CFLAGS="$cflags -fprofile-use%profile_file" +%make_build +readelf -n src/liblzma/.libs/*.so +%endif + +%install +%makeinstall_std + +# Relocate shared library from %_libdir/ to /lib/. +mkdir -p %buildroot/%_lib +for f in %buildroot%_libdir/liblzma.so; do + t=$(readlink "$f") + ln -snf ../../%_lib/"$t" "$f" +done +mv %buildroot%_libdir/*.so.* %buildroot/%_lib/ + +# GPL'ed files are not packaged. +rm %buildroot%docdir/COPYING.GPL* + +%find_lang xz + +%check +make -k check + +%files -f xz.lang +%_bindir/*lz* +%_bindir/*xz* +%_man1dir/*lz*.1* +%_man1dir/*xz*.1* + +%files -n liblzma +/%_lib/liblzma.so.* +%docdir +%exclude %docdir/examples* +%exclude %docdir/*-file-format.txt + +%files -n liblzma-devel +%_includedir/lzma.h +%_includedir/lzma/ +%_libdir/liblzma.so +%_pkgconfigdir/liblzma.pc +%dir %docdir +%docdir/examples* +%docdir/*-file-format.txt + +%files -n liblzma-devel-static +%_libdir/liblzma.a + +%changelog +* Sat Dec 04 2021 Ilya Kurdyukov 5.2.5-alt3.1 +- 15%% faster lzma decompression on e2k-v5 and e2k-v6. +- Extra comments on profiling, style editing, .tar size print. + +* Thu Aug 26 2021 Dmitry V. Levin 5.2.5-alt3 +- Reduced maximum possible memory limit on MIPS32 (by Ivan A. Melnikov). +- Added -ffat-lto-objects to %%optflags_lto. + +* Thu Apr 15 2021 Andrew Savchenko 5.2.5-alt2 +- Fix profiling on e2k by adapting to lcc peculiarities. + +* Mon Mar 23 2020 Dmitry V. Levin 5.2.5-alt1 +- 5.2.4 -> v5.2.5-2-gcf1ec551. + +* Sat Dec 29 2018 Dmitry V. Levin 5.2.4-alt1 +- 5.2.3 -> 5.2.4. + +* Sat Jan 27 2018 Alexey Tourbin 5.2.3-alt2 +- Fixed liblzma.so non-reproducible build due to -fprofile-* options. + +* Sat Jul 15 2017 Vladimir D. Seleznev 5.2.3-alt1 +- 5.0.7 -> 5.2.3. + +* Sat Nov 15 2014 Dmitry V. Levin 5.0.7-alt1 +- 5.0.5 -> 5.0.7. + +* Sun Sep 29 2013 Dmitry V. Levin 5.0.5-alt1 +- Updated to 5.0.5 (closes: #29406). + +* Fri Jul 20 2012 Alexey Tourbin 5.0.4-alt1 +- 5.0.3 -> 5.0.4 + +* Mon May 30 2011 Alexey Tourbin 5.0.3-alt1 +- Updated to v5.0.3. + +* Mon Feb 07 2011 Alexey Tourbin 5.0.1-alt1 +- Updated to v5.0.1. + +* Wed Jan 05 2011 Alexey Tourbin 5.0.0-alt2 +- Compiled lzma_decoder.c with -O3; compiled liblzma with -fprofile-* + options (3%% speed-up). + +* Wed Nov 17 2010 Dmitry V. Levin 5.0.0-alt1 +- Updated to v5.0.0-3-g3e56470. +- Updated summaries and descriptions. +- Enabled test suite. + +* Sun Oct 10 2010 Alexey Tourbin 4.999.9-alt1.1 +- rebuilt for soname set-versions + +* Thu Sep 24 2009 Alexey Tourbin 4.999.9-alt1 +- updated to v4.999.9beta-22-g49cfc8d +- the code is now under Public Domain +- new package xz replaces older lzma-utils +- packaged liblzma shared library + +* Sun May 10 2009 Alexey Tourbin 4.999.3alpha-alt2 +- rebuilt with gcc-4.4 + +* Sat May 24 2008 Alexey Tourbin 4.999.3alpha-alt1 +- initial revision, based on v4.999.3alpha-6-g11de5d5 +- only static liblzma.a library is packaged, due to alpha status