annotate CSP2/CSP2_env/env-d9b9114564458d9d-741b3de822f2aaca6c6caa4325c4afce/share/doc/xz/README @ 68:5028fdace37b

planemo upload commit 2e9511a184a1ca667c7be0c6321a36dc4e3d116d
author jpayne
date Tue, 18 Mar 2025 16:23:26 -0400
parents
children
rev   line source
jpayne@68 1
jpayne@68 2 XZ Utils
jpayne@68 3 ========
jpayne@68 4
jpayne@68 5 0. Overview
jpayne@68 6 1. Documentation
jpayne@68 7 1.1. Overall documentation
jpayne@68 8 1.2. Documentation for command-line tools
jpayne@68 9 1.3. Documentation for liblzma
jpayne@68 10 2. Version numbering
jpayne@68 11 3. Reporting bugs
jpayne@68 12 4. Translations
jpayne@68 13 5. Other implementations of the .xz format
jpayne@68 14 6. Contact information
jpayne@68 15
jpayne@68 16
jpayne@68 17 0. Overview
jpayne@68 18 -----------
jpayne@68 19
jpayne@68 20 XZ Utils provide a general-purpose data-compression library plus
jpayne@68 21 command-line tools. The native file format is the .xz format, but
jpayne@68 22 also the legacy .lzma format is supported. The .xz format supports
jpayne@68 23 multiple compression algorithms, which are called "filters" in the
jpayne@68 24 context of XZ Utils. The primary filter is currently LZMA2. With
jpayne@68 25 typical files, XZ Utils create about 30 % smaller files than gzip.
jpayne@68 26
jpayne@68 27 To ease adapting support for the .xz format into existing applications
jpayne@68 28 and scripts, the API of liblzma is somewhat similar to the API of the
jpayne@68 29 popular zlib library. For the same reason, the command-line tool xz
jpayne@68 30 has a command-line syntax similar to that of gzip.
jpayne@68 31
jpayne@68 32 When aiming for the highest compression ratio, the LZMA2 encoder uses
jpayne@68 33 a lot of CPU time and may use, depending on the settings, even
jpayne@68 34 hundreds of megabytes of RAM. However, in fast modes, the LZMA2 encoder
jpayne@68 35 competes with bzip2 in compression speed, RAM usage, and compression
jpayne@68 36 ratio.
jpayne@68 37
jpayne@68 38 LZMA2 is reasonably fast to decompress. It is a little slower than
jpayne@68 39 gzip, but a lot faster than bzip2. Being fast to decompress means
jpayne@68 40 that the .xz format is especially nice when the same file will be
jpayne@68 41 decompressed very many times (usually on different computers), which
jpayne@68 42 is the case e.g. when distributing software packages. In such
jpayne@68 43 situations, it's not too bad if the compression takes some time,
jpayne@68 44 since that needs to be done only once to benefit many people.
jpayne@68 45
jpayne@68 46 With some file types, combining (or "chaining") LZMA2 with an
jpayne@68 47 additional filter can improve the compression ratio. A filter chain may
jpayne@68 48 contain up to four filters, although usually only one or two are used.
jpayne@68 49 For example, putting a BCJ (Branch/Call/Jump) filter before LZMA2
jpayne@68 50 in the filter chain can improve compression ratio of executable files.
jpayne@68 51
jpayne@68 52 Since the .xz format allows adding new filter IDs, it is possible that
jpayne@68 53 some day there will be a filter that is, for example, much faster to
jpayne@68 54 compress than LZMA2 (but probably with worse compression ratio).
jpayne@68 55 Similarly, it is possible that some day there is a filter that will
jpayne@68 56 compress better than LZMA2.
jpayne@68 57
jpayne@68 58 XZ Utils supports multithreaded compression. XZ Utils doesn't support
jpayne@68 59 multithreaded decompression yet. It has been planned though and taken
jpayne@68 60 into account when designing the .xz file format. In the future, files
jpayne@68 61 that were created in threaded mode can be decompressed in threaded
jpayne@68 62 mode too.
jpayne@68 63
jpayne@68 64
jpayne@68 65 1. Documentation
jpayne@68 66 ----------------
jpayne@68 67
jpayne@68 68 1.1. Overall documentation
jpayne@68 69
jpayne@68 70 README This file
jpayne@68 71
jpayne@68 72 INSTALL.generic Generic install instructions for those not
jpayne@68 73 familiar with packages using GNU Autotools
jpayne@68 74 INSTALL Installation instructions specific to XZ Utils
jpayne@68 75 PACKAGERS Information to packagers of XZ Utils
jpayne@68 76
jpayne@68 77 COPYING XZ Utils copyright and license information
jpayne@68 78 COPYING.0BSD BSD Zero Clause License
jpayne@68 79 COPYING.GPLv2 GNU General Public License version 2
jpayne@68 80 COPYING.GPLv3 GNU General Public License version 3
jpayne@68 81 COPYING.LGPLv2.1 GNU Lesser General Public License version 2.1
jpayne@68 82
jpayne@68 83 AUTHORS The main authors of XZ Utils
jpayne@68 84 THANKS Incomplete list of people who have helped making
jpayne@68 85 this software
jpayne@68 86 NEWS User-visible changes between XZ Utils releases
jpayne@68 87 ChangeLog Detailed list of changes (commit log)
jpayne@68 88 TODO Known bugs and some sort of to-do list
jpayne@68 89
jpayne@68 90 Note that only some of the above files are included in binary
jpayne@68 91 packages.
jpayne@68 92
jpayne@68 93
jpayne@68 94 1.2. Documentation for command-line tools
jpayne@68 95
jpayne@68 96 The command-line tools are documented as man pages. In source code
jpayne@68 97 releases (and possibly also in some binary packages), the man pages
jpayne@68 98 are also provided in plain text (ASCII only) format in the directory
jpayne@68 99 "doc/man" to make the man pages more accessible to those whose
jpayne@68 100 operating system doesn't provide an easy way to view man pages.
jpayne@68 101
jpayne@68 102
jpayne@68 103 1.3. Documentation for liblzma
jpayne@68 104
jpayne@68 105 The liblzma API headers include short docs about each function
jpayne@68 106 and data type as Doxygen tags. These docs should be quite OK as
jpayne@68 107 a quick reference.
jpayne@68 108
jpayne@68 109 There are a few example/tutorial programs that should help in
jpayne@68 110 getting started with liblzma. In the source package the examples
jpayne@68 111 are in "doc/examples" and in binary packages they may be under
jpayne@68 112 "examples" in the same directory as this README.
jpayne@68 113
jpayne@68 114 Since the liblzma API has similarities to the zlib API, some people
jpayne@68 115 may find it useful to read the zlib docs and tutorial too:
jpayne@68 116
jpayne@68 117 https://zlib.net/manual.html
jpayne@68 118 https://zlib.net/zlib_how.html
jpayne@68 119
jpayne@68 120
jpayne@68 121 2. Version numbering
jpayne@68 122 --------------------
jpayne@68 123
jpayne@68 124 The version number format of XZ Utils is X.Y.ZS:
jpayne@68 125
jpayne@68 126 - X is the major version. When this is incremented, the library
jpayne@68 127 API and ABI break.
jpayne@68 128
jpayne@68 129 - Y is the minor version. It is incremented when new features
jpayne@68 130 are added without breaking the existing API or ABI. An even Y
jpayne@68 131 indicates a stable release and an odd Y indicates unstable
jpayne@68 132 (alpha or beta version).
jpayne@68 133
jpayne@68 134 - Z is the revision. This has a different meaning for stable and
jpayne@68 135 unstable releases:
jpayne@68 136
jpayne@68 137 * Stable: Z is incremented when bugs get fixed without adding
jpayne@68 138 any new features. This is intended to be convenient for
jpayne@68 139 downstream distributors that want bug fixes but don't want
jpayne@68 140 any new features to minimize the risk of introducing new bugs.
jpayne@68 141
jpayne@68 142 * Unstable: Z is just a counter. API or ABI of features added
jpayne@68 143 in earlier unstable releases having the same X.Y may break.
jpayne@68 144
jpayne@68 145 - S indicates stability of the release. It is missing from the
jpayne@68 146 stable releases, where Y is an even number. When Y is odd, S
jpayne@68 147 is either "alpha" or "beta" to make it very clear that such
jpayne@68 148 versions are not stable releases. The same X.Y.Z combination is
jpayne@68 149 not used for more than one stability level, i.e. after X.Y.Zalpha,
jpayne@68 150 the next version can be X.Y.(Z+1)beta but not X.Y.Zbeta.
jpayne@68 151
jpayne@68 152
jpayne@68 153 3. Reporting bugs
jpayne@68 154 -----------------
jpayne@68 155
jpayne@68 156 Naturally it is easiest for me if you already know what causes the
jpayne@68 157 unexpected behavior. Even better if you have a patch to propose.
jpayne@68 158 However, quite often the reason for unexpected behavior is unknown,
jpayne@68 159 so here are a few things to do before sending a bug report:
jpayne@68 160
jpayne@68 161 1. Try to create a small example how to reproduce the issue.
jpayne@68 162
jpayne@68 163 2. Compile XZ Utils with debugging code using configure switches
jpayne@68 164 --enable-debug and, if possible, --disable-shared. If you are
jpayne@68 165 using GCC, use CFLAGS='-O0 -ggdb3'. Don't strip the resulting
jpayne@68 166 binaries.
jpayne@68 167
jpayne@68 168 3. Turn on core dumps. The exact command depends on your shell;
jpayne@68 169 for example in GNU bash it is done with "ulimit -c unlimited",
jpayne@68 170 and in tcsh with "limit coredumpsize unlimited".
jpayne@68 171
jpayne@68 172 4. Try to reproduce the suspected bug. If you get "assertion failed"
jpayne@68 173 message, be sure to include the complete message in your bug
jpayne@68 174 report. If the application leaves a coredump, get a backtrace
jpayne@68 175 using gdb:
jpayne@68 176 $ gdb /path/to/app-binary # Load the app to the debugger.
jpayne@68 177 (gdb) core core # Open the coredump.
jpayne@68 178 (gdb) bt # Print the backtrace. Copy & paste to bug report.
jpayne@68 179 (gdb) quit # Quit gdb.
jpayne@68 180
jpayne@68 181 Report your bug via email or IRC (see Contact information below).
jpayne@68 182 Don't send core dump files or any executables. If you have a small
jpayne@68 183 example file(s) (total size less than 256 KiB), please include
jpayne@68 184 it/them as an attachment. If you have bigger test files, put them
jpayne@68 185 online somewhere and include a URL to the file(s) in the bug report.
jpayne@68 186
jpayne@68 187 Always include the exact version number of XZ Utils in the bug report.
jpayne@68 188 If you are using a snapshot from the git repository, use "git describe"
jpayne@68 189 to get the exact snapshot version. If you are using XZ Utils shipped
jpayne@68 190 in an operating system distribution, mention the distribution name,
jpayne@68 191 distribution version, and exact xz package version; if you cannot
jpayne@68 192 repeat the bug with the code compiled from unpatched source code,
jpayne@68 193 you probably need to report a bug to your distribution's bug tracking
jpayne@68 194 system.
jpayne@68 195
jpayne@68 196
jpayne@68 197 4. Translations
jpayne@68 198 ---------------
jpayne@68 199
jpayne@68 200 The xz command line tool and all man pages can be translated.
jpayne@68 201 The translations are handled via the Translation Project. If you
jpayne@68 202 wish to help translating xz, please join the Translation Project:
jpayne@68 203
jpayne@68 204 https://translationproject.org/html/translators.html
jpayne@68 205
jpayne@68 206 Below are notes and testing instructions specific to xz
jpayne@68 207 translations.
jpayne@68 208
jpayne@68 209 Testing can be done by installing xz into a temporary directory:
jpayne@68 210
jpayne@68 211 ./configure --disable-shared --prefix=/tmp/xz-test
jpayne@68 212 # <Edit the .po file in the po directory.>
jpayne@68 213 make -C po update-po
jpayne@68 214 make install
jpayne@68 215 bash debug/translation.bash | less
jpayne@68 216 bash debug/translation.bash | less -S # For --list outputs
jpayne@68 217
jpayne@68 218 Repeat the above as needed (no need to re-run configure though).
jpayne@68 219
jpayne@68 220 Note especially the following:
jpayne@68 221
jpayne@68 222 - The output of --help and --long-help must look nice on
jpayne@68 223 an 80-column terminal. It's OK to add extra lines if needed.
jpayne@68 224
jpayne@68 225 - In contrast, don't add extra lines to error messages and such.
jpayne@68 226 They are often preceded with e.g. a filename on the same line,
jpayne@68 227 so you have no way to predict where to put a \n. Let the terminal
jpayne@68 228 do the wrapping even if it looks ugly. Adding new lines will be
jpayne@68 229 even uglier in the generic case even if it looks nice in a few
jpayne@68 230 limited examples.
jpayne@68 231
jpayne@68 232 - Be careful with column alignment in tables and table-like output
jpayne@68 233 (--list, --list --verbose --verbose, --info-memory, --help, and
jpayne@68 234 --long-help):
jpayne@68 235
jpayne@68 236 * All descriptions of options in --help should start in the
jpayne@68 237 same column (but it doesn't need to be the same column as
jpayne@68 238 in the English messages; just be consistent if you change it).
jpayne@68 239 Check that both --help and --long-help look OK, since they
jpayne@68 240 share several strings.
jpayne@68 241
jpayne@68 242 * --list --verbose and --info-memory print lines that have
jpayne@68 243 the format "Description: %s". If you need a longer
jpayne@68 244 description, you can put extra space between the colon
jpayne@68 245 and %s. Then you may need to add extra space to other
jpayne@68 246 strings too so that the result as a whole looks good (all
jpayne@68 247 values start at the same column).
jpayne@68 248
jpayne@68 249 * The columns of the actual tables in --list --verbose --verbose
jpayne@68 250 should be aligned properly. Abbreviate if necessary. It might
jpayne@68 251 be good to keep at least 2 or 3 spaces between column headings
jpayne@68 252 and avoid spaces in the headings so that the columns stand out
jpayne@68 253 better, but this is a matter of opinion. Do what you think
jpayne@68 254 looks best.
jpayne@68 255
jpayne@68 256 - Be careful to put a period at the end of a sentence when the
jpayne@68 257 original version has it, and don't put it when the original
jpayne@68 258 doesn't have it. Similarly, be careful with \n characters
jpayne@68 259 at the beginning and end of the strings.
jpayne@68 260
jpayne@68 261 - Read the TRANSLATORS comments that have been extracted from the
jpayne@68 262 source code and included in xz.pot. Some comments suggest
jpayne@68 263 testing with a specific command which needs an .xz file. You
jpayne@68 264 may use e.g. any tests/files/good-*.xz. However, these test
jpayne@68 265 commands are included in translations.bash output, so reading
jpayne@68 266 translations.bash output carefully can be enough.
jpayne@68 267
jpayne@68 268 - If you find language problems in the original English strings,
jpayne@68 269 feel free to suggest improvements. Ask if something is unclear.
jpayne@68 270
jpayne@68 271 - The translated messages should be understandable (sometimes this
jpayne@68 272 may be a problem with the original English messages too). Don't
jpayne@68 273 make a direct word-by-word translation from English especially if
jpayne@68 274 the result doesn't sound good in your language.
jpayne@68 275
jpayne@68 276 Thanks for your help!
jpayne@68 277
jpayne@68 278
jpayne@68 279 5. Other implementations of the .xz format
jpayne@68 280 ------------------------------------------
jpayne@68 281
jpayne@68 282 7-Zip and the p7zip port of 7-Zip support the .xz format starting
jpayne@68 283 from the version 9.00alpha.
jpayne@68 284
jpayne@68 285 https://7-zip.org/
jpayne@68 286 https://p7zip.sourceforge.net/
jpayne@68 287
jpayne@68 288 XZ Embedded is a limited implementation written for use in the Linux
jpayne@68 289 kernel, but it is also suitable for other embedded use.
jpayne@68 290
jpayne@68 291 https://tukaani.org/xz/embedded.html
jpayne@68 292
jpayne@68 293 XZ for Java is a complete implementation written in pure Java.
jpayne@68 294
jpayne@68 295 https://tukaani.org/xz/java.html
jpayne@68 296
jpayne@68 297
jpayne@68 298 6. Contact information
jpayne@68 299 ----------------------
jpayne@68 300
jpayne@68 301 XZ Utils in general:
jpayne@68 302 - Home page: https://tukaani.org/xz/
jpayne@68 303 - Email to maintainer(s): xz@tukaani.org
jpayne@68 304 - IRC: #tukaani on Libera Chat
jpayne@68 305 - GitHub: https://github.com/tukaani-project/xz
jpayne@68 306
jpayne@68 307 Lead maintainer:
jpayne@68 308 - Email: Lasse Collin <lasse.collin@tukaani.org>
jpayne@68 309 - IRC: Larhzu on Libera Chat
jpayne@68 310