diff options
Diffstat (limited to 'DOCS/tech/binary-packaging.txt')
-rw-r--r-- | DOCS/tech/binary-packaging.txt | 207 |
1 files changed, 0 insertions, 207 deletions
diff --git a/DOCS/tech/binary-packaging.txt b/DOCS/tech/binary-packaging.txt deleted file mode 100644 index 6cc485ef2b..0000000000 --- a/DOCS/tech/binary-packaging.txt +++ /dev/null @@ -1,207 +0,0 @@ - ________________________________________________ - How to make good binary package(s) of MPlayer? - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - by Dominik 'Rathann' Mierzejewski - -About this document -~~~~~~~~~~~~~~~~~~~ - -With the release of MPlayer 0.90pre9, all licensing issues have been -eliminated and all code is licensed under the GPL, which allows -independent packagers to create and distribute binary packages. At first, -this was discouraged by some of the developers, but the users' demand for -ready-to-use binary packages convinced some people to create them. -Unfortunately, many currently available packages are crippled, include -their own obsolete config files or are mispackaged in some other way. This -document aims to establish a common set of packaging guidelines so that -proper official binary packages for various Linux distributions and other -operating systems can be maintained. - - -Conventions -~~~~~~~~~~~ -Whenever you see "MUST", it means that following the mentioned guideline -is required. Whenever you see "SHOULD", it means that following the -guideline is highly recommended, but not required. - - -Minimum feature set -~~~~~~~~~~~~~~~~~~~ -Due to MPlayer design, it is impossible to simply include all possible -features and enable or disable them at runtime. That is why packagers -SHOULD avoid "dependency hell" by retaining a reasonable, limited default -feature set. After some discussion with other developers, we agreed that -the following features MUST be included in any official binary package: - -* audio/video output - - fbdev - - JPEG/PNG/TGA - - (X)MGA - - OSS - - tdfxfb - - (c/x)vidix - - X11/Xvideo - -* codecs - - FAAD(internal) - - libavcodec(internal) - - native codecs (libmpeg2/mp3lib) - - Vorbis Tremor codec(internal) - - RealPlayer codecs support (*) - - Win32/VfW/DShow/QT codecs support (*) - - XAnim codecs support (*) - -* general: - - FreeType fonts support - - HTML documentation - - large file support - - man page(s) - -* input/demuxers: - - DVD(libdvdread4/libdvdnav) - - streaming - - Matroska(internal) - - (S)VCD - - tv(v4l/v4l2) - -(*) if available for your OS/hardware - -Including other features, like LIVE.COM streaming or JACK support, is -acceptable. They SHOULD, however, be build-time configurable, with the -default build configuration containing the above set. - -It seems there are some packages in the wild which lack included docs. -This is VERY BAD, as it forces users to look for outside support when most -of the common problems are easy to solve and are already described in the -docs, thus increasing the number of repeated posts in MPlayer mailing -lists. Binary packages MUST include both the man page and HTML -documentation. Translated versions SHOULD be included, even if your -package management system does not provide specific support for -internationalization. - -Libavcodec MUST always be in the latest development version and it SHOULD -be linked statically into the mplayer binary, because MPlayer requires a -recent libavcodec snapshot. It is acceptable to use a shared (again, recent) -version of libavcodec, but you must be aware that this disables some of -MPlayer's functions (for example, some postprocessing filters) and sacrifices -speed. - -Support for binary codecs SHOULD be present to the extent that the combination -of operating system and CPU architecture permits, but it MUST NOT result in a -hard dependency on a binary codecs package. MPlayer is fully functional without -external binary codecs. If you package binary codecs yourself, package the -essential codecs package, not the all codecs package. - -Bitmap fonts are deprecated, don't package them. Use scalable (Type1/TrueType) -fonts instead. - - -File locations -~~~~~~~~~~~~~~ -In general, you SHOULD follow your distribution guidelines. For example, -for Red Hat and Fedora RPMs I am using FHS-compliant paths: - -/etc/mplayer/ system-wide configs -/usr/bin/ binaries -/usr/lib/codecs/ binary codecs -/usr/lib64/codecs/ binary codecs on 64bit Linux -/usr/share/doc/mplayer-version/ docs -/usr/share/man/man1/ man page -/usr/share/man/XX/man1/ translated man page - -You MUST NOT include the codecs.conf file in your package. It is useful -only for development purposes and often causes obscure problems for users. - -Please avoid using the deprecated paths for binary codecs (/usr/lib/win32/) -and skins (/usr/share/mplayer/Skin/). - - -One package or many packages? -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -Although it is tempting to simply provide a single all-in-one package, -I think it is best to split MPlayer into several packages. It may be -a little more troublesome for less clueful users, but it allows you to -install only what you need. This is the layout I am using for Red Hat and -Fedora RPMs: - -mencoder contains MEncoder binary (mencoder) -mplayer contains MPlayer binary config files, man pages and - documentation; -mplayer-codecs-* contain binary codecs available from MPlayer's site - -There is no strict policy for now, just use your common sense. - - -Compilation -~~~~~~~~~~~ -While it is acceptable to provide packages optimized for specific CPUs, -you MUST provide at least one "lowest common denominator" package set -that will work on all CPUs. This means it MUST be configured with the ---enable-runtime-cpudetection option. Building for specific CPUs requires -disabling this option, but try to make sure that users cannot accidentally -install a package not suitable for their CPU. With RPMs, for example, this -is handled automatically, when building with the "--target arch" rpm option. - -Compiler flags MUST be set to either configure-generated CFLAGS or something -as close to them as possible. - -Users MUST be able to rebuild your source package without hand-editing on -any system with the same distribution installed. Remember to disable -(--disable-xxx) any optional features, because MPlayer's configure script -autodetects most of them. This ensures that binary package builds are -deterministic -- that is, provided they have at least the required -development packages installed, two different people using the same -distribution will get binaries with the same dependencies. - -You SHOULD provide an option to rebuild the package with full debug -information enabled (by passing --enable-debug=3 to ./configure and -disabling any stripping of binaries and libs during the build process). -For example my source RPM can be rebuilt with a "--with debug" option, which -does just that, making it easier to supply gdb information along with any -bug reports, while retaining all benefits of using binary packages. - - -Modifications -~~~~~~~~~~~~~ - -You MUST modify `mplayer -v` output so that it is clear that a user is -using your binary package, by patching version.h and modifying the version -string inside. Suggested convention is to include distribution name and, -possibly, the signature of the packager or the repository. For example: - -original: - MPlayer 1.0pre5-3.3.2 (C) 2000-2004 MPlayer Team -modified: - MPlayer 1.0pre5-Fedora-GS-3.3.2 (C) 2000-2004 MPlayer Team - MPlayer 1.0pre5-Mandrake-PLF-3.2.3 (C) 2000-2004 MPlayer Team - MPlayer 1.0pre5-Solaris-3.4.0 (C) 2000-2004 MPlayer Team - -If you patch MPlayer, send your patches to us! We will try to integrate them. -Furthermore, we're often able to come up with a cleaner or more general -solution to your problem. - -If you have modified configuration files or similar, please patch the official -one instead of copying it into your package. This way you will automatically -pick up changes we make to it. - -Do not override video and audio output selection in the system-wide config -file. MPlayer will try to pick the best VO and AO itself and fall back -gracefully. If you want to give priority to some AO, add a comma at the end -of the line so that MPlayer can still fall back on others, for example: -ao=alsa, - -Tips and tricks -~~~~~~~~~~~~~~~ -To provide man pages for all MPlayer suite binaries (mplayer, mencoder), you -can use man-links instead of regular symbolic links. -Creating a mencoder man page linked to mplayer is as simple as: - - echo ".so mplayer.1" >> mencoder.1 - -A similar trick can be used for "man gmplayer". This avoids problems with -gzipped man pages and symbolic links. - -Newer Red Hat and Fedora distributions keep localized man pages encoded in -UTF-8. If your distribution does the same, make sure you convert MPlayer's -translated man pages to UTF-8 so that man mplayer works for locales other -than English. |