| Index: xz/PACKAGERS
|
| ===================================================================
|
| --- xz/PACKAGERS (revision 0)
|
| +++ xz/PACKAGERS (revision 0)
|
| @@ -0,0 +1,279 @@
|
| +
|
| +Information to packagers of XZ Utils
|
| +====================================
|
| +
|
| + 0. Preface
|
| + 1. Package naming
|
| + 2. Package description
|
| + 3. License
|
| + 4. configure options
|
| + 4.1. Static vs. dynamic linking of liblzma
|
| + 4.2. Optimizing xzdec and lzmadec
|
| + 5. Additional documentation
|
| + 6. Extra files
|
| + 7. Installing XZ Utils and LZMA Utils in parallel
|
| + 8. Example
|
| +
|
| +
|
| +0. Preface
|
| +----------
|
| +
|
| + This document is meant for people who create and maintain XZ Utils
|
| + packages for operating system distributions. The focus is on GNU/Linux
|
| + systems, but most things apply to other systems too.
|
| +
|
| + While the standard "configure && make DESTDIR=$PKG install" should
|
| + give a pretty good package, there are some details which packagers
|
| + may want to tweak.
|
| +
|
| + Packagers should also read the INSTALL file.
|
| +
|
| +
|
| +1. Package naming
|
| +-----------------
|
| +
|
| + The preferred name for the XZ Utils package is "xz", because that's
|
| + the name of the upstream tarball. Naturally you may have good reasons
|
| + to use some other name; I won't get angry about it. ;-) It's just nice
|
| + to be able to point people to the correct package name without asking
|
| + what distro they have.
|
| +
|
| + If your distro policy is to split things into small pieces, here is
|
| + one suggestion:
|
| +
|
| + xz xz, xzdec, scripts (xzdiff, xzgrep, etc.), docs
|
| + xz-lzma lzma, unlzma, lzcat, lzgrep etc. symlinks and
|
| + lzmadec binary for compatibility with LZMA Utils
|
| + liblzma liblzma.so.*
|
| + liblzma-devel liblzma.so, liblzma.a, API headers
|
| +
|
| +
|
| +2. Package description
|
| +----------------------
|
| +
|
| + Here is a suggestion which you may use as the package description.
|
| + If you can use only one-line description, pick only the first line.
|
| + Naturally, feel free to use some other description if you find it
|
| + better, and maybe send it to me too.
|
| +
|
| + Library and command line tools for XZ and LZMA compressed files
|
| +
|
| + XZ Utils provide a general purpose data compression library
|
| + and command line tools. The native file format is the .xz
|
| + format, but also the legacy .lzma format is supported. The .xz
|
| + format supports multiple compression algorithms, of which LZMA2
|
| + is currently the primary algorithm. With typical files, XZ Utils
|
| + create about 30 % smaller files than gzip.
|
| +
|
| + If you are splitting XZ Utils into multiple packages, here are some
|
| + suggestions for package descriptions:
|
| +
|
| + xz:
|
| +
|
| + Command line tools for XZ and LZMA compressed files
|
| +
|
| + This package includes the xz compression tool and other command
|
| + line tools from XZ Utils. xz has command line syntax similar to
|
| + that of gzip. The native file format is the .xz format, but also
|
| + the legacy .lzma format is supported. The .xz format supports
|
| + multiple compression algorithms, of which LZMA2 is currently the
|
| + primary algorithm. With typical files, XZ Utils create about 30 %
|
| + smaller files than gzip.
|
| +
|
| + Note that this package doesn't include the files needed for
|
| + LZMA Utils 4.32.x compatibility. Install also the xz-lzma
|
| + package to make XZ Utils emulate LZMA Utils 4.32.x.
|
| +
|
| + xz-lzma:
|
| +
|
| + LZMA Utils emulation with XZ Utils
|
| +
|
| + This package includes executables and symlinks to make
|
| + XZ Utils emulate lzma, unlzma, lzcat, and other command
|
| + line tools found from the legacy LZMA Utils 4.32.x package.
|
| +
|
| + liblzma:
|
| +
|
| + Library for XZ and LZMA compressed files
|
| +
|
| + liblzma is a general purpose data compression library with
|
| + an API similar to that of zlib. liblzma supports multiple
|
| + algorithms, of which LZMA2 is currently the primary algorithm.
|
| + The native file format is .xz, but also the legacy .lzma
|
| + format and raw streams (no headers at all) are supported.
|
| +
|
| + This package includes the shared library.
|
| +
|
| + liblzma-devel:
|
| +
|
| + Library for XZ and LZMA compressed files
|
| +
|
| + This package includes the API headers, static library, and
|
| + other development files related to liblzma.
|
| +
|
| +
|
| +3. License
|
| +----------
|
| +
|
| + If the package manager supports a license field, you probably should
|
| + put GPLv2+ there (GNU GPL v2 or later). The interesting parts of
|
| + XZ Utils are in the public domain, but some less important files
|
| + ending up into the binary package are under GPLv2+. So it is simplest
|
| + to just say GPLv2+ if you cannot specify "public domain and GPLv2+".
|
| +
|
| + If you split XZ Utils into multiple packages as described earlier
|
| + in this file, liblzma and liblzma-dev packages will contain only
|
| + public domain code (from XZ Utils at least; compiler or linker may
|
| + add some third-party code, which may be copyrighted).
|
| +
|
| +
|
| +4. configure options
|
| +--------------------
|
| +
|
| + Unless you are building a package for a distribution that is meant
|
| + only for embedded systems, don't use the following configure options:
|
| +
|
| + --enable-debug
|
| + --enable-encoders (*)
|
| + --enable-decoders
|
| + --enable-match-finders
|
| + --enable-checks
|
| + --enable-small (*)
|
| + --disable-threads (*)
|
| +
|
| + (*) These are OK when building xzdec and lzmadec as explained later.
|
| +
|
| + You may use --enable-werror but be careful with it since it may break
|
| + the build due to some useless warning when the build environment
|
| + changes (like CPU architecture or compiler version).
|
| +
|
| +
|
| +4.1. Static vs. dynamic linking of liblzma
|
| +
|
| + The default is to link the most important command line tools against
|
| + static liblzma, and the less important tools against shared liblzma.
|
| + This can be changed by passing --enable-dynamic to configure, or by
|
| + not building static libraries at all by passing --disable-static
|
| + to configure. It is mildly recommended that you use the default, but
|
| + the configure options make it easy to do otherwise if the distro policy
|
| + so requires.
|
| +
|
| + On 32-bit x86, linking against static liblzma can give a minor
|
| + speed improvement. Static libraries on x86 are usually compiled as
|
| + position-dependent code (non-PIC) and shared libraries are built as
|
| + position-independent code (PIC). PIC wastes one register, which can
|
| + make the code slightly slower compared to a non-PIC version. (Note
|
| + that this doesn't apply to x86-64.)
|
| +
|
| + Linking against static liblzma avoids a dependency on liblzma shared
|
| + library, and makes it slightly easier to copy the command line tools
|
| + between systems (e.g. quick 'n' dirty emergency recovery of some
|
| + files). It also allows putting the command line tools to /bin while
|
| + leaving liblzma to /usr/lib (assuming that your distribution uses
|
| + such a file system hierarchy), if no other file in /bin would require
|
| + liblzma.
|
| +
|
| + If you don't want to distribute static libraries but you still
|
| + want to link the command line tools against static liblzma, it is
|
| + probably easiest to build both static and shared liblzma, but after
|
| + "make DESTDIR=$PKG install" remove liblzma.a and modify liblzma.la
|
| + to not contain a reference to liblzma.a.
|
| +
|
| +
|
| +4.2. Optimizing xzdec and lzmadec
|
| +
|
| + xzdec and lzmadec are intended to be relatively small instead of
|
| + optimizing for the best speed. Thus, it is a good idea to build
|
| + xzdec and lzmadec separately:
|
| +
|
| + - Only decoder code is needed, so you can speed up the build
|
| + slightly by passing --disable-encoders to configure. This
|
| + shouldn't affect the final size of the executables though,
|
| + because the linker is able to omit the encoder code anyway.
|
| +
|
| + - xzdec and lzmadec will never use multithreading capabilities of
|
| + liblzma. You can avoid dependency on libpthread by passing
|
| + --disable-threads to configure.
|
| +
|
| + - There are and will be no translated messages for xzdec and
|
| + lzmadec, so it is fine to pass also --disable-nls to configure.
|
| +
|
| + - To select somewhat size-optimized variant of some things in
|
| + liblzma, pass --enable-small to configure.
|
| +
|
| + - Tell the compiler to optimize for size instead of speed.
|
| + E.g. with GCC, put -Os into CFLAGS.
|
| +
|
| +
|
| +5. Additional documentation
|
| +---------------------------
|
| +
|
| + "make install" copies some additional documentation to $docdir
|
| + (--docdir in configure). These a copy of the GNU GPL v2, which can
|
| + be replaced with a symlink if your distro ships with shared copies
|
| + of the common license texts.
|
| +
|
| +
|
| +6. Extra files
|
| +--------------
|
| +
|
| + The "extra" directory contains some small extra tools or other files.
|
| + The exact set of extra files can vary between XZ Utils releases. The
|
| + extra files have only limited use or they are too dangerous to be
|
| + put directly to $bindir (7z2lzma.sh is a good example, since it can
|
| + silently create corrupt output if certain conditions are not met).
|
| +
|
| + If you feel like it, you may copy the extra directory under the doc
|
| + directory (e.g. /usr/share/doc/xz/extra). Maybe some people will find
|
| + them useful. However, most people needing these tools probably are
|
| + able to find them from the source package too.
|
| +
|
| + The "debug" directory contains some tools that are useful only when
|
| + hacking on XZ Utils. Don't package these tools.
|
| +
|
| +
|
| +7. Installing XZ Utils and LZMA Utils in parallel
|
| +-------------------------------------------------
|
| +
|
| + XZ Utils and LZMA Utils 4.32.x can be installed in parallel by
|
| + omitting the compatibility symlinks (lzma, unlzma, lzcat, lzgrep etc.)
|
| + from the XZ Utils package. It's probably a good idea to still package
|
| + the symlinks into a separate package so that users may choose if they
|
| + want to use XZ Utils or LZMA Utils for handling .lzma files.
|
| +
|
| +
|
| +8. Example
|
| +----------
|
| +
|
| + Here is an example for i686 GNU/Linux that
|
| + - links xz against static liblzma;
|
| + - includes only shared liblzma in the final package;
|
| + - links xzdec and lzmadec against static liblzma while
|
| + avoiding libpthread dependency.
|
| +
|
| + PKG=/tmp/xz-pkg
|
| + tar xf xz-x.y.z.tar.gz
|
| + cd xz-x.y.z
|
| + ./configure \
|
| + --prefix=/usr \
|
| + --sysconfdir=/etc \
|
| + CFLAGS='-march=i686 -O2'
|
| + make
|
| + make DESTDIR=$PKG install-strip
|
| + rm -f $PKG/usr/lib/lib*.a
|
| + sed -i "s/^old_library=.*$/old_library=''/" $PKG/usr/lib/lib*.la
|
| + make clean
|
| + ./configure \
|
| + --prefix=/usr \
|
| + --sysconfdir=/etc \
|
| + --disable-shared \
|
| + --disable-nls \
|
| + --disable-encoders \
|
| + --enable-small \
|
| + --disable-threads \
|
| + CFLAGS='-march=i686 -Os'
|
| + make -C src/liblzma
|
| + make -C src/xzdec
|
| + make -C src/xzdec DESTDIR=$PKG install-strip
|
| + cp -a extra $PKG/usr/share/doc/xz
|
| +
|
|
|
| Property changes on: xz/PACKAGERS
|
| ___________________________________________________________________
|
| Added: svn:eol-style
|
| + LF
|
|
|
|
|