rpm-build/README.ALT

90 lines
5.2 KiB
Plaintext

There are few noticeable for packager differences of this version
of the RPM from ALT Linux Team from the version from MandrakeSoft on which
this one is based upon:
Features and incompatibilities:
0. Many bug fixes still missing in public release of rpm-3.0.6.
1. Advanced and enhanced macros designed to simplify work of packager, including
+ add_optflags, remove_optflags, and many others (for easy compilation
tuning);
+ make_compile, make_install, make (aliases for make in %build and %install
sections);
+ install_info, uninstall_info (advanced variants of _install_info and
_remove_install_info from MDK for work with info pages);
+ various macros aliasing well-known directories;
2. Automatic lookup for dependencies in shell scripts (use "Autoreq: no" to
disable).
3. By default, info and man pages are compressed with either "gzip -9n" or
"bzip2 -9", depending on result size; it means that numerous ".bz2"s in
%files section should be replaced with "*"; same changes should be done in
other sections of spec file.
This behavior of rpm is handled by %_compress_method macro; currently defined
methods are:
+ auto: compression as described above;
+ bzip2: compression with "bzip2 -9" program;
+ gzip: compression with "gzip -9n" program;
+ none: all pages will be uncompressed;
+ skip: just skip this phase, do not (un)compress at all, only check links.
4. At the post-install stage, ELF binaries are stripped, depending on file type.
This behavior of rpm is handled by %_strip_method macro which is set of
recognizable ELF file types:
+ executable (ELF executable);
+ relocatable (ELF relocatable);
+ shared (ELF shared object);
+ static (current ar archive);
+ no, none, off, false - designates no stripping at all.
Value of %_strip_method macro can be set by %set_strip_method macro or
defined directly.
By default, only ELF executables and ELF shared objects will be stripped.
Also, there are 4 macros designed for manual stripping from .spec file:
%strip_executable, %strip_relocatable, %strip_shared, %strip_static.
Syntax of these macros described in '/usr/lib/rpm/brp-strip --help'.
5. At the post-install stage, RPM performs lookup for dependencies.
This behavior of rpm is handled by standard tags: AutoReq, AutoProv,
AutoReqProv. Unlike original yes/no rule, these tags now define set of
methods to be used for lookup. Currently, following methods are recognized:
+ files - enable lookup for external files dependencies;
+ nofiles - disable lookup for external files dependencies;
+ lib - enable lookup for shared library dependencies;
+ nolib - disable lookup for shared library dependencies;
+ pam - enable lookup for pam dependencies;
+ nopam - disable lookup for pam dependencies;
+ perl - enable lookup for dependencies found in perl scripts;
+ noperl - disable lookup for dependencies found in perl scripts;
+ shell - enable lookup for dependencies found in Bourne shell scripts;
+ noshell - disable lookup for dependencies found in Bourne shell scripts;
+ default, yes, true - enable lookup using default methods (see rcfiles for details).
+ all - enable lookup using all known methods (files, lib, pam, perl, shell).
+ no, none, off, false - disable lookup;
By default, both AutoReq and AutoProv defined to "yes" - it means that
values of %_findreq_default_method and %_findprov_default_method macros will
be used to define lookup methods.
In addition, macro _perl_lib_path can be defined to customize
RPM_PERL_LIB_PATH variable used to find perl provides/requires.
6. At the post-install stage, RPM performs recompilation of python modules
if found in BuildRoot, using value of __python macro as python compiler.
By default, it's equal to /usr/bin/python; to bypass the procedure, just
undefine this macro.
Rationale: if not compiled properly, compiled python modules will be useless
after package installation.
7. BuildRoot now defined in /usr/lib/rpm/macros; that is, BuildRoot tag
defined in specfile will have no effect and may be omitted. More even,
building packages without proper defined BuildRoot is impossible.
%buildroot macro can be redefined in any rcfile.
8. Before executing %install and after executing %clean sections, BuildRoot will
be automatically purged; that is, you don't need to specify this pesky
"rpm -rf" any more. Note, however, that any activity in BuildRoot before
%install section will be lost.
If you need to keep BuildRoot before %install section, you should use
%buildmulti macro instead of %build. In this case, BuildRoot will be purged
right before %build section.
9. Default %defattr value in all %files sections is %{_defattr}.
This macro have been defined to %defattr(-,root,root,755) by default.
That is, most of %defattr entries in spec file may be omitted.
10.POPT library now distributed in separate package; also, files required only
for packaging have been moved to rpm-build subpackage.
11.By default, rpm now blocks if package database lock cannot be obtained.
This wait-for-lock behavior can be disabled with --nowait-lock option.
12.By default, root no longer allowed to build packages. This behavior can be
changed by _allow_root_build macro.