openpkg/dev.pod

Thu, 04 Oct 2012 20:30:05 +0200

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Thu, 04 Oct 2012 20:30:05 +0200
changeset 715
c10fb90893b9
permissions
-rw-r--r--

Correct out of date build configuration, porting to Solaris 11 network
link infrastructure and new libpcap logic. This additionally allows for
device drivers in subdirectories of /dev. Correct packaged nmap
personalities and signatures to work out of the box. Finally, hack
arpd logic to properly close sockets and quit on TERM by repeating
signaling in the run command script. Sadly, all this fails to correct
the run time behaviour of honeyd which fails to bind to the IP layer.

michael@428 1 ##
michael@428 2 ## openpkg dev -- OpenPKG Package Development Tool
michael@428 3 ## Copyright (c) 2008-2012 OpenPKG GmbH <http://openpkg.com/>
michael@428 4 ##
michael@428 5 ## This software is property of the OpenPKG GmbH, DE MUC HRB 160208.
michael@428 6 ## All rights reserved. Licenses which grant limited permission to use,
michael@428 7 ## copy, modify and distribute this software are available from the
michael@428 8 ## OpenPKG GmbH.
michael@428 9 ##
michael@428 10 ## THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED
michael@428 11 ## WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
michael@428 12 ## MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
michael@428 13 ## IN NO EVENT SHALL THE AUTHORS AND COPYRIGHT HOLDERS AND THEIR
michael@428 14 ## CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
michael@428 15 ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
michael@428 16 ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
michael@428 17 ## USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
michael@428 18 ## ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
michael@428 19 ## OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
michael@428 20 ## OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
michael@428 21 ## SUCH DAMAGE.
michael@428 22 ##
michael@428 23
michael@428 24 =pod
michael@428 25
michael@428 26 B<openpkg dev> - OpenPKG Package Development Tool
michael@428 27
michael@428 28 =head1 DESCRIPTION
michael@428 29
michael@428 30 B<openpkg dev> is a package development tool for B<OpenPKG>.
michael@428 31
michael@428 32 =head2 SOURCE PACKAGE HANDLING
michael@428 33
michael@428 34 =over 4
michael@428 35
michael@428 36 =item B<openpkg dev unpack>
michael@428 37 [C<-l> I<layout>]
michael@428 38 [C<-b> I<basedir>]
michael@428 39 [C<-s>]
michael@428 40 [C<-d>]
michael@428 41 I<name>C<->I<version>C<->I<release>C<.src.rpm>
michael@428 42
michael@428 43 Unpacks an OpenPKG source RPM package
michael@428 44 I<name>C<->I<version>C<->I<release>C<.src.rpm> into I<basedir>
michael@428 45 (default is I<name>C<->I<version>C<->I<release>)
michael@428 46 using I<layout> (default is I<structured>).
michael@428 47 Additionally,
michael@428 48 I<file-rpmmacros>
michael@428 49 configuration file is generated where
michael@428 50 C<-s> enables shared mode and
michael@428 51 C<-d> enables debug mode, see I<file-rpmmacros>.
michael@428 52
michael@428 53 =back
michael@428 54
michael@428 55 =head2 SOURCE PACKAGE DEVELOPMENT
michael@428 56
michael@428 57 =over 4
michael@428 58
michael@428 59 =item B<openpkg dev shell>
michael@428 60
michael@428 61 This is a convenience command which enters an interactive B<GNU Bash>
michael@428 62 shell which provides the following work environment:
michael@428 63
michael@428 64 =over 4
michael@428 65
michael@428 66 =item B<Environment Variables:>
michael@428 67
michael@428 68 OPENPKG_PREFIX "<prefix>"
michael@428 69 PS1 "\\[\\e[31;1m\\]\\u\\[\\e[0m\\]@\\h:\\w [OPENPKG_PREFIX=$OPENPKG_PREFIX]\n\\\$ "
michael@428 70 T %{_tmppath}
michael@428 71 S %{_specdir}
michael@428 72 D %{_sourcedir}
michael@428 73
michael@428 74 =item B<Command-Line Aliases:>
michael@428 75
michael@428 76 openpkg "${OPENPKG_PREFIX}/bin/openpkg"
michael@428 77 opd "${OPENPKG_PREFIX}/bin/openpkg dev"
michael@428 78
michael@428 79 =item B<Command-Line Keystrokes:>
michael@428 80
michael@428 81 ESC+x "opd unpack\n"
michael@428 82 ESC+v "opd edit\n"
michael@428 83 ESC+t "opd build -s track\n"
michael@428 84 ESC+f "opd build -s fetch\n"
michael@428 85 ESC+b "opd build\n"
michael@428 86 ESC+1 "opd build -s prep\n"
michael@428 87 ESC+2 "opd build -s compile\n"
michael@428 88 ESC+3 "opd build -s install\n"
michael@428 89 ESC+4 "opd build -s binary\n"
michael@428 90 ESC+s "opd build -s source\n"
michael@428 91 ESC+p "opd peek\n"
michael@428 92 ESC+d "opd diff\n"
michael@428 93 ESC+i "opd install\n"
michael@428 94 ESC+e "opd erase\n"
michael@428 95 ESC+l "opd lint\n"
michael@428 96 ESC+r "opd release\n"
michael@428 97
michael@428 98 =back
michael@428 99
michael@428 100 If option C<-s> is passed to B<openpkg dev shell> and screen(1) is
michael@428 101 available in C<$PATH>, the interactive development shell is started up
michael@428 102 in a convenient virtual screen environment.
michael@428 103
michael@428 104 =item B<openpkg dev edit>
michael@428 105
michael@428 106 Load spec file into editor.
michael@428 107
michael@428 108 =over 4
michael@428 109
michael@428 110 =item B<Environment Variables:>
michael@428 111
michael@428 112 EDITOR "vi"
michael@428 113
michael@428 114 =back
michael@428 115
michael@428 116 =item B<openpkg dev build>
michael@428 117 [C<-s> I<step>]
michael@428 118 [C<-D> I<define>[=I<value>]]
michael@428 119 [C<-w> I<variant>]
michael@428 120
michael@428 121 Builds package steps. Default I<step> is C<all>. Option C<-D> translated
michael@428 122 into "C<--define 'I<define> I<value>'>" while option C<-w> translated
michael@428 123 into "C<--with> I<variant>". The I<step> arguments translate into the
michael@428 124 following RPM options:
michael@428 125
michael@428 126 track: -bt
michael@428 127 fetch: -bf
michael@428 128 prep: -bp
michael@428 129 compile: -bc --short-circuit
michael@428 130 install: -bi --short-circuit
michael@428 131 binary: -bb --short-circuit
michael@428 132 source: -bs
michael@428 133 all: -ba
michael@428 134
michael@428 135 =item B<openpkg dev peek>
michael@428 136
michael@428 137 Peeks file list from package and tags configuration and documentation files.
michael@428 138
michael@428 139 =item B<openpkg dev diff>
michael@428 140
michael@428 141 Shows modifications with the help of a possibly underlying Version
michael@428 142 Control System (VCS) like CVS, Subversion, Monotone, Git, Mercurial or
michael@428 143 (as a fallback ) OSSP svs.
michael@428 144
michael@428 145 =item B<openpkg dev install>
michael@428 146 [C<-f>]
michael@428 147 [C<-o>]
michael@428 148 [C<-n>]
michael@428 149 [C<-s>]
michael@428 150
michael@428 151 Installs package.
michael@428 152 Option
michael@428 153 C<-f> adds C<--force>,
michael@428 154 C<-n> adds C<--nodeps> and
michael@428 155 C<-o> adds C<--oldpackage>
michael@428 156 to the underlying C<rpm> call.
michael@428 157 Option C<-s> prefixes the command with sudo(1).
michael@428 158
michael@428 159 =item B<openpkg dev erase>
michael@428 160 [C<-f>]
michael@428 161 [C<-o>]
michael@428 162 [C<-a>]
michael@428 163 [C<-s>]
michael@428 164
michael@428 165 Erases package.
michael@428 166 Option
michael@428 167 C<-f> adds C<--force>,
michael@428 168 C<-n> adds C<--nodeps> and
michael@428 169 C<-a> adds C<--allmatches>
michael@428 170 to the underlying C<rpm> call.
michael@428 171 Option C<-s> prefixes the command with sudo(1).
michael@428 172
michael@428 173 =item B<openpkg dev lint>
michael@428 174 [C<-v>]
michael@428 175 [C<-b>]
michael@428 176
michael@428 177 Lints package sources C<*.spec>, C<fsl.*>, C<rc.*> and binary package files.
michael@428 178 Option C<-v> enables verboseness.
michael@428 179 Option C<-b> disables the linting of an existing binary package file.
michael@428 180
michael@428 181 =item B<openpkg dev release>
michael@428 182 [C<-m> I<message>]
michael@428 183 [C<-n>]
michael@428 184
michael@428 185 Releases package specification to the repository. Unlike previous
michael@428 186 incarnations of "openpkg dev" this one is not tied to any repository or
michael@428 187 structure. The default message is created using the difference between
michael@428 188 the previous and current version of the package specification. In order
michael@428 189 to grab the previous version, the working directory and three levels
michael@428 190 towards root are checked for signs of CVS, Subversion, Monotone, Git,
michael@428 191 Mercurial or SVS information, in that order. The appropriate command is
michael@428 192 then executed to retrieve the data and the VCS found is passed to the
michael@428 193 actual release command.
michael@428 194
michael@428 195 Finally, the command specified by the environment variable
michael@428 196 C<OPENPKG_DEV_RELEASE> or, if omitted, specified by the rpm macro
michael@428 197 C<%{openpkg_dev_release}> is run and passed the following positional
michael@428 198 arguments:
michael@428 199
michael@428 200 =over 4
michael@428 201
michael@428 202 openpkg-prefix
michael@428 203 spec-dir
michael@428 204 source-dir
michael@428 205 binary-rpm-file
michael@428 206 source-rpm-file
michael@428 207 package-name
michael@428 208 package-version
michael@428 209 package-release
michael@428 210 package-version-old
michael@428 211 package-release-old
michael@428 212 commit-message
michael@428 213 vcs
michael@428 214
michael@428 215 =back
michael@428 216
michael@428 217 For a dry run, set C<$OPENPKG_DEV_RELEASE> to "echo" or use option "C<-n>".
michael@428 218
michael@428 219 =back
michael@428 220
michael@428 221 =head1 UNPACKED SOURCE RPM PACKAGE FILESYSTEM LAYOUT
michael@428 222
michael@428 223 When an OpenPKG source RPM package
michael@428 224 I<name>C<->I<version>C<->I<release>C<.src.rpm> is unpacked to the
michael@428 225 filesystem, the following distinct filesystem layouts are known:
michael@428 226
michael@428 227 =over 4
michael@428 228
michael@428 229 =item B<global>
michael@428 230
michael@428 231 =over 4
michael@428 232
michael@428 233 =item I<prefix>C</RPM/SRC/>I<name>C</.openpkg/rpmmacros>
michael@428 234
michael@428 235 =item I<prefix>C</RPM/SRC/>I<name>C</>I<name>C<.spec>
michael@428 236
michael@428 237 =item I<prefix>C</RPM/SRC/>I<name>C</>I<packaging-source-file>
michael@428 238
michael@428 239 =item I<prefix>C</RPM/SRC/>I<name>C</>I<thirdparty-distribution-file>
michael@428 240
michael@428 241 =item I<prefix>C</RPM/PKG/>I<binary-rpm-package-file>
michael@428 242
michael@428 243 =item I<prefix>C</RPM/PKG/>I<source-rpm-package-file>
michael@428 244
michael@428 245 =item I<prefix>C</RPM/TMP/>I<temporary-file>
michael@428 246
michael@428 247 =back
michael@428 248
michael@428 249 This is just the "simple" filesystem layout (see below) with the
michael@428 250 I<base-dir> set to I<prefix>C</RPM/SRC/>.
michael@428 251
michael@428 252 This is the filesystem layout used by default for building OpenPKG
michael@428 253 packages during C<openpkg build> or the underlying C<openpkg rpm
michael@428 254 --rebuild> commands.
michael@428 255
michael@428 256 =item B<local>
michael@428 257
michael@428 258 =over 4
michael@428 259
michael@428 260 =item I<base-dir>C</.openpkg/rpmmacros>
michael@428 261
michael@428 262 =item I<base-dir>C</>I<name>C<.spec>
michael@428 263
michael@428 264 =item I<base-dir>C</>I<packaging-source-file>
michael@428 265
michael@428 266 =item I<base-dir>C</>I<thirdparty-distribution-file>
michael@428 267
michael@428 268 =item I<base-dir>C</>I<binary-rpm-package-file>
michael@428 269
michael@428 270 =item I<base-dir>C</>I<source-rpm-package-file>
michael@428 271
michael@428 272 =item I<base-dir>C</>I<temporary-file>
michael@428 273
michael@428 274 =back
michael@428 275
michael@428 276 This puts everything into one directory.
michael@428 277
michael@428 278 =item B<simple>
michael@428 279
michael@428 280 =over 4
michael@428 281
michael@428 282 =item I<base-dir>C</>I<name>C</.openpkg/rpmmacros>
michael@428 283
michael@428 284 =item I<base-dir>C</>I<name>C</>I<name>C<.spec>
michael@428 285
michael@428 286 =item I<base-dir>C</>I<name>C</>I<packaging-source-file>
michael@428 287
michael@428 288 =item I<base-dir>C</>I<name>C</>I<thirdparty-distribution-file>
michael@428 289
michael@428 290 =item I<base-dir>C</>I<binary-rpm-package-file>
michael@428 291
michael@428 292 =item I<base-dir>C</>I<source-rpm-package-file>
michael@428 293
michael@428 294 =item I<$TMPDIR>C</openpkg/>I<temporary-file>
michael@428 295
michael@428 296 =back
michael@428 297
michael@428 298 This is the simple filesystem layout of an unpacked
michael@428 299 OpenPKG package. All files are simply put into a sub-directory with the
michael@428 300 I<name> of the package.
michael@428 301
michael@428 302 This is the filesystem layout used for the quick patching of a single
michael@428 303 OpenPKG package in a stand-alone environment.
michael@428 304
michael@428 305 =item B<structured>
michael@428 306
michael@428 307 =over 4
michael@428 308
michael@428 309 =item I<base-dir>C</>I<name>C</.openpkg/rpmmacros>
michael@428 310
michael@428 311 =item I<base-dir>C</>I<name>C</src/>I<name>C<.spec>
michael@428 312
michael@428 313 =item I<base-dir>C</>I<name>C</src/>I<packaging-source-file>
michael@428 314
michael@428 315 =item I<base-dir>C</>I<name>C</dst/>I<thirdparty-distribution-file>
michael@428 316
michael@428 317 =item I<base-dir>C</>I<name>C</pkg/>[C<bin/>]I<binary-rpm-package-file>
michael@428 318
michael@428 319 =item I<base-dir>C</>I<name>C</pkg/>[C<src/>]I<source-rpm-package-file>
michael@428 320
michael@428 321 =item I<base-dir>C</>I<name>C</tmp/>I<temporary-file>
michael@428 322
michael@428 323 =back
michael@428 324
michael@428 325 This is the structured (and default) filesystem layout of an unpacked
michael@428 326 OpenPKG package. A top-level sub-directory with the I<name> of the
michael@428 327 package is created. There the package specification and all packaging
michael@428 328 source files are put into the sub-directory I<src> and all the
michael@428 329 third-party distribution files are put into the sub-directory I<dst>.
michael@428 330
michael@428 331 This is the filesystem layout used for the development of a single
michael@428 332 OpenPKG package in a stand-alone environment.
michael@428 333
michael@428 334 =item B<distributed>
michael@428 335
michael@428 336 =over 4
michael@428 337
michael@428 338 =item I<base-dir>C</>C<.openpkg/rpmmacros>
michael@428 339
michael@428 340 =item I<base-dir>C</>C<src/>I<name>C</>I<name>C<.spec>
michael@428 341
michael@428 342 =item I<base-dir>C</>C<src/>I<name>C</>I<packaging-source-file>
michael@428 343
michael@428 344 =item I<base-dir>C</>C<dst/>I<name>C</>I<thirdparty-distribution-file>
michael@428 345
michael@428 346 =item I<base-dir>C</>C<pkg/>[C<bin/>]I<binary-rpm-package-file>
michael@428 347
michael@428 348 =item I<base-dir>C</>C<pkg/>[C<src/>]I<source-rpm-package-file>
michael@428 349
michael@428 350 =item I<base-dir>C</>C<tmp/>I<temporary-file>
michael@428 351
michael@428 352 =back
michael@428 353
michael@428 354 This is the distributed filesystem layout of an unpacked OpenPKG
michael@428 355 package. It is similar to the structured filesystem layout but the
michael@428 356 C<src> and C<dst> directories and the I<name> directory are swapped,
michael@428 357 mainly with the intention of bundling together all third-party
michael@428 358 distribution files of a large number of packages.
michael@428 359
michael@428 360 This is the filesystem layout used for regular OpenPKG package
michael@428 361 development.
michael@428 362
michael@428 363 =back
michael@428 364
michael@428 365
michael@428 366 =head1 LOCAL RPM MACROS FILE (.openpkg/rpmmacros)
michael@428 367
michael@428 368 OpenPKG supports local RPM macros files F<.openpkg/rpmmacros> which
michael@428 369 can be used to configure RPM in a local scope. This is especially
michael@428 370 interesting to configure a local (even per-package) build environment
michael@428 371 with the help of the C<%openpkg_layout> macro.
michael@428 372
michael@428 373 C<%openpkg_layout>
michael@428 374 [C<macrosfile=>I<filename>]
michael@428 375 [C<basedir=>I<directory>]
michael@428 376 [C<specdir=>I<directory>]
michael@428 377 [C<sourcedir=>I<directory>]
michael@428 378 [C<builddir=>I<directory>]
michael@428 379 [C<tmpdir=>I<directory>]
michael@428 380 [C<binrpmdir=>I<directory>]
michael@428 381 [C<srcrpmdir=>I<directory>]
michael@428 382 [C<shared=>I<yes-or-no>]
michael@428 383 [C<debug=>I<yes-or-no>]
michael@428 384
michael@428 385 =over 4
michael@428 386
michael@428 387 =item C<macrosfile=>I<filename>
michael@428 388
michael@428 389 Absolute file path of the C<.openpkg/rpmmacros> file where this
michael@428 390 C<%openpkg_layout> macro is defined. Usually, the intended usage is to
michael@428 391 leverage from OpenPKG RPM's special C<%{macrosfile}> macro by simply
michael@428 392 using C<macrosfile=%{macrosfile}>. This parameter is important as
michael@428 393 the default C<basename> is derived from it.
michael@428 394
michael@428 395 =item C<basedir=>I<directory>
michael@428 396
michael@428 397 Absolute directory path where the C<.openpkg/rpmmacros> file is
michael@428 398 located under. Usually, the intended usage is to not explicitly
michael@428 399 set this parameter but let it be determined indirectly via
michael@428 400 C<macrosfile>. The effective default value is equal to a value like
michael@428 401 C<%{realpath:%{dirname:%{realpath:%{macrosfile}}}/..}> This parameter is
michael@428 402 important as all standard filesystem layouts (see parameter C<layout>)
michael@428 403 are always at least partially based on this base directory in order
michael@428 404 to provide absolute-path-independent flexible filesystem layouts.
michael@428 405
michael@428 406 =item C<layout=>I<layout>
michael@428 407
michael@428 408 The name of the filesystem layout type to use. The following standard
michael@428 409 filesystem layout types are pre-defined: C<global>, C<local>, C<simple>,
michael@428 410 C<structured> (default) and C<distributed>.
michael@428 411
michael@428 412 global macrosdir <openpkg_prefix>/etc/openpkg
michael@428 413 global macrosfile <openpkg_prefix>/etc/openpkg/rpmmacros
michael@428 414 global specdir <openpkg_prefix>/RPM/SRC/$name
michael@428 415 global sourcedir <openpkg_prefix>/RPM/SRC/$name
michael@428 416 global builddir <openpkg_prefix>/RPM/TMP
michael@428 417 global tmpdir <openpkg_prefix>/RPM/TMP
michael@428 418 global binrpmdir <openpkg_prefix>/RPM/PKG
michael@428 419 global srcrpmdir <openpkg_prefix>/RPM/PKG
michael@428 420
michael@428 421 local macrosdir <basedir>/.openpkg
michael@428 422 local macrosfile <basedir>/.openpkg/rpmmacros
michael@428 423 local specdir <basedir>
michael@428 424 local sourcedir <basedir>
michael@428 425 local builddir <basedir>
michael@428 426 local tmpdir <basedir>
michael@428 427 local binrpmdir <basedir>
michael@428 428 local srcrpmdir <basedir>
michael@428 429
michael@428 430 simple macrosdir <basedir>/.openpkg
michael@428 431 simple macrosfile <basedir>/.openpkg/rpmmacros
michael@428 432 simple specdir <basedir>
michael@428 433 simple sourcedir <basedir>
michael@428 434 simple builddir <tmpdir>
michael@428 435 simple tmpdir <tmpdir>
michael@428 436 simple binrpmdir <basedir>/..
michael@428 437 simple srcrpmdir <basedir>/..
michael@428 438
michael@428 439 structured macrosdir <basedir>/.openpkg
michael@428 440 structured macrosfile <basedir>/.openpkg/rpmmacros
michael@428 441 structured specdir <basedir>/src
michael@428 442 structured sourcedir <basedir>/dst
michael@428 443 structured builddir <basedir>/tmp
michael@428 444 structured tmpdir <basedir>/tmp
michael@428 445 structured binrpmdir <basedir>/pkg/bin
michael@428 446 structured srcrpmdir <basedir>/pkg/src
michael@428 447
michael@428 448 distributed macrosdir <basedir>/.openpkg
michael@428 449 distributed macrosfile <basedir>/.openpkg/rpmmacros
michael@428 450 distributed specdir <basedir>/src/<name>
michael@428 451 distributed sourcedir <basedir>/dst/<name>
michael@428 452 distributed builddir <basedir>/tmp
michael@428 453 distributed tmpdir <basedir>/tmp
michael@428 454 distributed binrpmdir <basedir>/pkg/bin
michael@428 455 distributed srcrpmdir <basedir>/pkg/src
michael@428 456
michael@428 457
michael@428 458 =item C<specdir=>I<directory-list>
michael@428 459
michael@428 460 =item C<sourcedir=>I<directory-list>
michael@428 461
michael@428 462 =item C<builddir=>I<directory-list>
michael@428 463
michael@428 464 =item C<tmpdir=>I<directory-list>
michael@428 465
michael@428 466 =item C<binrpmdir=>I<directory-list>
michael@428 467
michael@428 468 =item C<srcrpmdir=>I<directory-list>
michael@428 469
michael@428 470 These parameters correspond to the six individual directories provided
michael@428 471 by a standard layout and allow you to selectively adjust parts of a
michael@428 472 standard layout to local needs and without having to define a full
michael@428 473 standard layout yourself.
michael@428 474
michael@428 475 The I<directory-list> is a whitespace-separated list of
michael@428 476 I<directory>[C<:>[C<+>]I<directory>] specifications which are
michael@428 477 "first-match" searched for existence. The last directory in the list
michael@428 478 is always taken as the fallback and if it is not existing it is
michael@428 479 even created on-the-fly. The I<directory-check>C<:>I<directory-use>
michael@428 480 syntax variant allows the existence test to use I<directory-check>,
michael@428 481 but expands to I<directory-use> (replace mode). The
michael@428 482 I<directory-check>C<:+>I<directory-use> syntax variant allows
michael@428 483 the existence test to use I<directory-check>, but expands to
michael@428 484 I<directory-check>I<directory-use> (append mode). For instance
michael@428 485 C<tmpdir="%{getenv:HOME)/tmp:+/openpkg %{getenv:TMPDIR}:+/openpkg
michael@428 486 /tmp/%(echo $LOGNAME)/openpkg"> will first check for ~/tmp (and then use
michael@428 487 ~/tmp/openpkg), then for $TMPDIR (and use $TMPDIR/openpkg) and finally
michael@428 488 it will use /tmp/$LOGNAME/openpkg at last resort.
michael@428 489
michael@428 490 Paths are usually assembled by using RPM macros like
michael@428 491 C<%{l_prefix}> (the instance prefix), C<%{__openpkg_basename}> (the
michael@428 492 I<basename> parameter), C<%{realpath:<path>} (path resolution),
michael@428 493 C<%{dirname:<path>} (directory name extraction), C<%{basename:<path>}
michael@428 494 (file name extraction), etc.
michael@428 495
michael@428 496 =item C<shared=>I<yes-or-no>
michael@428 497
michael@428 498 This enables the I<subdir> components in the standard filesystem
michael@428 499 layouts by setting it to an automatically generated sub-directory named
michael@428 500 I<host>C<->I<arch>-I<os>. This allows one to build the same OpenPKG
michael@428 501 package in parallel on multiple hosts in a shared environment (usually
michael@428 502 on an NFS based filesystem).
michael@428 503
michael@428 504 =item C<debug=>I<yes-or-no>
michael@428 505
michael@428 506 This enables debug outputs which shows the effectively used directory
michael@428 507 paths.
michael@428 508
michael@428 509 =back
michael@428 510
michael@428 511 The generated C<.openpkg/rpmmacros> file contains the generic filesystem
michael@428 512 layout glue configuration for the particular filesystem I<layout>.
michael@428 513
michael@428 514 =over 1
michael@428 515
michael@428 516 =item C<%openpkg_layout macrosfile=%{macrosfile} layout=>I<type>
michael@428 517
michael@428 518 =back
michael@428 519
michael@428 520 =head1 CONFIGURATION
michael@428 521
michael@428 522 =over 4
michael@428 523
michael@428 524 OPENPKG_NAME="Ralf S. Engelschall"
michael@428 525 OPENPKG_MAIL="rse@openpkg.net"
michael@428 526 OPENPKG_MODE="developer"
michael@428 527
michael@428 528 OPENPKG_PREFIX="/openpkg"
michael@428 529 OPENPKG_TMPDIR="${TMPDIR-/tmp}/openpkg"
michael@428 530
michael@428 531 OPENPKG_VCS="cvs ci -m '<msg>' ."
michael@428 532 OPENPKG_UPLD="scp <srpm> openpkg-ftp@ftp.openpkg.org:/current/SRC/00UPLOAD/"
michael@428 533
michael@428 534 =back
michael@428 535
michael@428 536 =head1 ABOUT
michael@428 537
michael@428 538 OpenPKG B<dev> is Ralf S. Engelschall's Perl-based clean-room partial
michael@428 539 re-implementation of 2008 for OpenPKG 4.0 of Thomas Lotterer's original
michael@428 540 OpenPKG B<dev> Bash-based shell from 2002.
michael@428 541
michael@428 542 =cut
michael@428 543

mercurial