Mon, 28 Jan 2013 17:37:18 +0100
Correct socket error reporting improvement with IPv6 portable code,
after helpful recommendation by Saúl Ibarra Corretgé on OSips devlist.
michael@13 | 1 | ## |
michael@13 | 2 | ## rpmtool.pod -- OpenPKG RPM Auxiliary Tool (Manual Page) |
michael@13 | 3 | ## |
michael@428 | 4 | ## Copyright (c) 2000-2012 OpenPKG GmbH <http://openpkg.com/> |
michael@13 | 5 | ## |
michael@428 | 6 | ## This software is property of the OpenPKG GmbH, DE MUC HRB 160208. |
michael@428 | 7 | ## All rights reserved. Licenses which grant limited permission to use, |
michael@428 | 8 | ## copy, modify and distribute this software are available from the |
michael@428 | 9 | ## OpenPKG GmbH. |
michael@428 | 10 | ## |
michael@428 | 11 | ## THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED |
michael@13 | 12 | ## WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF |
michael@13 | 13 | ## MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. |
michael@13 | 14 | ## IN NO EVENT SHALL THE AUTHORS AND COPYRIGHT HOLDERS AND THEIR |
michael@13 | 15 | ## CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
michael@13 | 16 | ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
michael@13 | 17 | ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF |
michael@13 | 18 | ## USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND |
michael@13 | 19 | ## ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, |
michael@13 | 20 | ## OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT |
michael@13 | 21 | ## OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF |
michael@13 | 22 | ## SUCH DAMAGE. |
michael@13 | 23 | ## |
michael@13 | 24 | |
michael@13 | 25 | =pod |
michael@13 | 26 | |
michael@13 | 27 | =head1 NAME |
michael@13 | 28 | |
michael@13 | 29 | B<rpmtool> - RPM Auxiliary Tool |
michael@13 | 30 | |
michael@13 | 31 | =head1 SYNOPSIS |
michael@13 | 32 | |
michael@13 | 33 | B<rpmtool> |
michael@13 | 34 | I<command> |
michael@13 | 35 | [I<command-options>] |
michael@13 | 36 | |
michael@13 | 37 | =head1 DESCRIPTION |
michael@13 | 38 | |
michael@13 | 39 | This is an auxiliary tool to the RedHat Package Manager (RPM). It |
michael@13 | 40 | provides additional functionality for use in RPM I<spec> files while |
michael@13 | 41 | building packages. The following I<command>s are available: |
michael@13 | 42 | |
michael@13 | 43 | =over 4 |
michael@13 | 44 | |
michael@13 | 45 | =item B<platform> |
michael@13 | 46 | |
michael@13 | 47 | This command outputs a unique platform id in the format |
michael@13 | 48 | "<architecture>-<system><release>". For instance, the output on a |
michael@13 | 49 | FreeBSD platform can be "i386-freebsd4.2", the output on a Linux |
michael@13 | 50 | platform can be "i686-linux2.2.16", the output on a Solaris platform can |
michael@13 | 51 | be "sun4u-sunos5.8", etc. |
michael@13 | 52 | |
michael@13 | 53 | Example: |
michael@13 | 54 | |
michael@13 | 55 | case `rpmtool platform`; in |
michael@13 | 56 | *-freebsd[34].* ) ... ;; |
michael@13 | 57 | *-sunos5.[678] ) ... ;; |
michael@13 | 58 | *-linux2.[24].* ) ... ;; |
michael@13 | 59 | esac |
michael@13 | 60 | |
michael@13 | 61 | =item B<mflags> [B<-O>] I<tool> |
michael@13 | 62 | |
michael@13 | 63 | This command outputs additional flags for make(1) for |
michael@13 | 64 | use with the program I<tool>. It provides only standard flags which |
michael@13 | 65 | always can be used. In conjunction with B<-O> (optimization), it also provides |
michael@13 | 66 | reasonable job control for use on multi-processor platforms (for instance it |
michael@13 | 67 | outputs "-j4" on an SMP system with 2 CPUs if GNU make or BSD pmake is used). |
michael@13 | 68 | |
michael@13 | 69 | Example: |
michael@13 | 70 | |
michael@13 | 71 | make `rpmtool mflags -O make` |
michael@13 | 72 | |
michael@13 | 73 | =item B<cflags> [B<-O>] I<tool> |
michael@13 | 74 | |
michael@13 | 75 | This command outputs additional flags for cc(1) for use with the program |
michael@13 | 76 | I<tool>. It provides only standard flags which always can be used. |
michael@13 | 77 | conjunction with B<-O> it provides also optimization flags (for instance |
michael@13 | 78 | it outputs "-O2 -pipe" for GNU C/C++ compiler). |
michael@13 | 79 | |
michael@13 | 80 | Example: |
michael@13 | 81 | |
michael@13 | 82 | CC="$CC" CFLAGS=`rpmtool cflags -O $CC` ./configure ... |
michael@13 | 83 | |
michael@13 | 84 | =item B<cppflags> [B<-p> I<prefix>] [[C<+|->I<subdir> ...] |
michael@13 | 85 | |
michael@13 | 86 | This command output cpp(1) C<-I> options for the OpenPKG instance |
michael@13 | 87 | I<prefix>. It optionally can prefix or suffix with one or more I<subdir> |
michael@13 | 88 | related options, too. If I<subdir> is prefixed with C<+> (or not |
michael@13 | 89 | prefixed at all), the generated option is appended. If I<subdir> is |
michael@13 | 90 | prefixed with C<-> the generated option is prepended. |
michael@13 | 91 | |
michael@13 | 92 | Example: |
michael@13 | 93 | |
michael@13 | 94 | rpmtool cppflags -p /foo bar -baz +quux |
michael@13 | 95 | |
michael@13 | 96 | =item B<ldflags> [B<-p> I<prefix>] [[C<+|->I<subdir> ...] |
michael@13 | 97 | |
michael@13 | 98 | This command output ld(1) C<-L> options for the OpenPKG instance |
michael@13 | 99 | I<prefix>. It optionally can prefix or suffix with one or more I<subdir> |
michael@13 | 100 | related options, too. If I<subdir> is prefixed with C<+> (or not |
michael@13 | 101 | prefixed at all), the generated option is appended. If I<subdir> is |
michael@13 | 102 | prefixed with C<-> the generated option is prepended. |
michael@13 | 103 | |
michael@13 | 104 | Example: |
michael@13 | 105 | |
michael@13 | 106 | rpmtool ldflags -p /foo bar -baz +quux |
michael@13 | 107 | |
michael@13 | 108 | =item B<files> [B<-v>] [B<-o> I<outfile>] [B<-r> I<build-root>] [I<entry> ...] |
michael@13 | 109 | |
michael@13 | 110 | This is a dynamic variant of the RPM C<%files> section, i.e., it |
michael@13 | 111 | dynamically creates the contents of the C<%files> section for use with |
michael@13 | 112 | the C<%files -f> command. For this the file list entries are read from |
michael@13 | 113 | the command line (or from stdin if no arguments are given or a single |
michael@13 | 114 | argument C<-> is given) and written to stdout (if no B<-o> option is |
michael@13 | 115 | given or its I<outfile> argument is C<->) or to I<outfile>. |
michael@13 | 116 | |
michael@13 | 117 | The trick of this approach is to be able to use additional features in |
michael@13 | 118 | the file list which RPM does not provide. The following features are |
michael@13 | 119 | provided: |
michael@13 | 120 | |
michael@13 | 121 | =over 4 |
michael@13 | 122 | |
michael@13 | 123 | =item B<Trailing Tags> |
michael@13 | 124 | |
michael@13 | 125 | RPM requires that all tags (like C<%attr(...)> or C<%dir>) preceed the |
michael@13 | 126 | path in a file list entry. This sometimes leads to ugly and unreadable |
michael@13 | 127 | file lists, because all paths cannot be left-aligned. With rpmtool(8) |
michael@13 | 128 | tags in the input file list can be at leading and trailing positions. |
michael@13 | 129 | The output file list will nevertheless have all tags in leading |
michael@13 | 130 | positions for RPM. |
michael@13 | 131 | |
michael@13 | 132 | =item B<Syntactical Set Pattern> |
michael@13 | 133 | |
michael@13 | 134 | RPM supports simple wildcard patterns like C</path/*> or C</path/[a-z]>, |
michael@13 | 135 | etc. Sometimes it is convenient, to also have (in addition to character |
michael@13 | 136 | sets) string sets like C</path/{foo,bar,quux}>. rpmtool(8) provides this |
michael@13 | 137 | by syntactically (without checking the filesystem) expanding those |
michael@13 | 138 | string sets. |
michael@13 | 139 | |
michael@13 | 140 | =item B<Overriding Entries> |
michael@13 | 141 | |
michael@13 | 142 | This is the most important feature and the reason why shtool(1)'s |
michael@13 | 143 | B<files> command was implemented. Although RPM allows one to specify a |
michael@13 | 144 | directory in a file list and then implicitly expands this recursively |
michael@13 | 145 | into its contents, it unfortunately does not allow one to later |
michael@13 | 146 | explcitly override particular entries (usually if an individual |
michael@13 | 147 | C<%attr(...)> tag is required). rpmtool(8) now supports overriding |
michael@13 | 148 | entries, i.e., if a path occurs multiple times, only the last occurance |
michael@13 | 149 | is kept. |
michael@13 | 150 | |
michael@13 | 151 | =item B<Negation Tag> |
michael@13 | 152 | |
michael@13 | 153 | This provides an additional tag C<%not> which can be used to explicitly |
michael@13 | 154 | exclude a previously implicitly added entry. |
michael@13 | 155 | |
michael@13 | 156 | =back |
michael@13 | 157 | |
michael@13 | 158 | Example: |
michael@13 | 159 | |
michael@13 | 160 | %install |
michael@13 | 161 | : |
michael@13 | 162 | rpmtool files -o files -r$RPM_BUILD_ROOT \ |
michael@13 | 163 | '%defattr(-,foo,foo)' \ |
michael@13 | 164 | '%{prefix}' \ |
michael@13 | 165 | '%attr(1755,root,foo) %{prefix}/bin/bar' \ |
michael@13 | 166 | '%not %dir {%{prefix},%{prefix}/*,%{prefix}/man/*}' \ |
michael@13 | 167 | '%not %{prefix}/info/dir' |
michael@13 | 168 | |
michael@13 | 169 | %files -f files |
michael@13 | 170 | |
michael@13 | 171 | =item B<msg> [B<-b>] |
michael@13 | 172 | |
michael@13 | 173 | This displays the contents of F<stdin> as a boxed message. If option |
michael@13 | 174 | B<-b> is given it additionally beeps once before displaying the box. |
michael@13 | 175 | |
michael@13 | 176 | =back |
michael@13 | 177 | |
michael@13 | 178 | =head1 HISTORY |
michael@13 | 179 | |
michael@13 | 180 | This tool was created in November 2000 for use in OpenPKG, the |
michael@13 | 181 | cross-platform RPM-based Unix software packaging facility. |
michael@13 | 182 | |
michael@13 | 183 | =head1 AUTHOR |
michael@13 | 184 | |
michael@13 | 185 | Ralf S. Engelschall |
michael@13 | 186 | rse@engelschall.com |
michael@13 | 187 | www.engelschall.com |
michael@13 | 188 | |
michael@13 | 189 | =cut |
michael@13 | 190 |