qi: minor changes on code, documentation
[dragora.git] / qi / doc / qi.info
blob90ed4fd573921aee64ab5fdefe52aaf933596c03
1 This is qi.info, produced by makeinfo version 6.6 from qi.texi.
3 This user guide is for Qi (version 1.0-rc59, 1 April 2019), which is a
4 simple but well-integrated package manager.
6    Copyright © 2019 Matias Andres Fonzo, Santiago del Estero, Argentina.
8      Permission is granted to copy, distribute and/or modify this
9      document under the terms of the GNU Free Documentation License,
10      Version 1.3 or any later version published by the Free Software
11      Foundation; with no Invariant Sections, with no Front-Cover Texts,
12      and with no Back-Cover Texts.  A copy of the license is included in
13      the section entitled "GNU Free Documentation License".
14 INFO-DIR-SECTION Package management
15 START-INFO-DIR-ENTRY
16 * Qi: (qi).                   A user-friendly package manager.
17 END-INFO-DIR-ENTRY
19 \x1f
20 File: qi.info,  Node: Top,  Next: Introduction,  Up: (dir)
22 Qi user guide
23 *************
25 This user guide is for Qi (version 1.0-rc59, 1 April 2019).
27 * Menu:
29 * Introduction::              Description and features of qi
30 * Invoking qi::               Command-line options
31 * The qirc file::             Configuration file
32 * Packages::                  Managing packages
33 * Recipes::                   Building packages
34 * Order files::               Handling build order
35 * Creating packages::         Making Qi packages
36 * Examining packages::        Debugging purposes
37 * Exit status::               Exit codes
38 * License::                   GNU Free Documentation License
39 * Index::
42    Copyright (C) 2019 Matias Fonzo.
44    Qi's home page can be found at <http://www.dragora.org>.
45 Send bug reports or suggestions to <dragora-users@nongnu.org>.
47 \x1f
48 File: qi.info,  Node: Introduction,  Next: Invoking qi,  Prev: Top,  Up: Top
50 1 Introduction
51 **************
53 Qi is a simple but well-integrated package manager.  It can creates,
54 install, remove, and upgrade software packages.  Qi produces binary
55 packages using recipe names, these are files containing specific
56 instructions to build every source.  Qi can manage multiple packages
57 under a single directory hierarchy, this method allows to maintain a set
58 of packages and multiple versions of them.  This means that Qi could be
59 used as the main package manager or complement the existing one.
61    Qi offers a friendly command line interface, a global configuration
62 file, a simple recipe layout to deploy software packages; also works
63 with binary packages in parallel, speeding up installations and packages
64 in production.  The used format for packages is a simplified but safe
65 POSIX pax archive compressed with lzip.
67    Qi is a modern (POSIX-compliant) shell script released under the
68 terms of the GNU General Public License.  There are only two major
69 dependencies for the magic: graft(1) and tarlz(1), the rest is expected
70 to be found in any Unix-like system.
72 \x1f
73 File: qi.info,  Node: Invoking qi,  Next: The qirc file,  Prev: Introduction,  Up: Top
75 2 Invoking qi
76 *************
78 This chapter describes the synopsis and command line options for invoke
79 Qi.
81      Usage: qi [OPTION]... [FILE]...
83 One mandatory option specifies the operation that 'qi' should perform,
84 other options are meant to detail how this operation should be
85 performed.
87 qi supports the following options to operate:
89 '-b'
90      Build package using recipe names.
92 '-c'
93      Create .tlz package from directory.
95 '-d'
96      Delete packages.
98 '-i'
99      Install packages.
101 '-o'
102      Resolve build order through .order files.
104 '-u'
105      Update packages (implies -i, -d and -p options).
107 '-w'
108      Warn about files that will be linked.
110 '-x'
111      Extract a package for debugging purposes.
113 There are common options between modes:
115 '-N'
116      Do not read the configuration file.
118      This will omit any value on the qirc file.
120 '-P <DIR>'
121      Package directory for installations.
123      This option sets '${packagedir}'.
125      Only valid for -i, -d, or -u options.
127 '-f'
128      Force option.
130      This option can force the build of a recipe, or force the update of
131      a pre-existing package.
133      Only valid for -b, -u options.
135 '-t <DIR>'
136      Target directory for symbolic links.
138      This option sets '${targetdir}'.
140      Only valid for -i, -d, or -u options.
142 '-k'
143      Keep (don't delete) '${srcdir}' or '${destdir}' on build mode, keep
144      (don't delete) package directory on delete mode.
146      Only valid for -b, -d or -u options.
148 '-p'
149      Prune conflicts on package installations.
151      This option may proceed with the package installation if one or
152      more conflicts occur.
154 '-r /rootdir'
155      Use the fully qualified named directory as the root directory for
156      all qi operations.  The target directory and package directory will
157      be relative to the specified directory, including the log file for
158      graft.
160 '-v'
161      Be verbose (a 2nd -v gives more).
163 Options for build mode (-b):
165 '-O <DIR>'
166      Where the produced packages are written.
168      This option sets '${outdir}'.
170 '-W <DIR>'
171      Where archives, patches, and recipes are expected.
173      This option sets '${worktree}'.
175 '-Z <DIR>'
176      Where (compressed) sources will be found.
178      This option sets '${tardir}'.
180 '-a'
181      Architecture to use.
183      Default value is obtained via uname(1) as 'uname -m'.
185 '-j'
186      Parallel jobs for the compiler.
188      If not specified, default sets to 1.
190 '-1'
191      Increment release number ('${release}' + 1).
193      It will be omitted if the -n option is being used.
195 '-n'
196      Don't create a .tlz package.
198 '-S'
199      Selects the option to skip completed recipes.
201      This means, in interactive mode, when the dialog to summarize
202      recipes is showed.
204 Informative options:
206 '-L'
207      Print default directory locations.
209      This will print the target directory, package directory, working
210      tree, the directory for tarballs, and the output directory for
211      produced packages.
213 '-h'
214      Display the help describing the options and then exit.
216 '-V'
217      Print the version number and license information.  The version
218      number should be included in all bug reports.
220 Expected arguments beyond of options are package directories and regular
221 files: recipes or files ending in .tlz, .order.  When FILE is -, qi can
222 read from the standard input.  See examples in *note Packages::.
224 \x1f
225 File: qi.info,  Node: The qirc file,  Next: Packages,  Prev: Invoking qi,  Up: Top
227 3 The qirc file
228 ***************
230 The global 'qirc' file offers a way to define variables and tools (such
231 as a download manager) for default use.  This file is used by qi at
232 runtime for e.g to build, install, remove or upgrade packages.
234 It has the following rules:
236    * Variables must be declared as 'name=value'.
238    * Declaration of values should only take one line, no line break.
240    * For security reasons, assignments like 'name=$var' are only
241      interpreted as literal.
243 The command line options related to the package directory and target
244 directory plus some of the options used for the build mode can override
245 some values in 'qirc'.  See *note Invoking qi::.
247 The order in which qi looks for this file is:
249   1. '${HOME}/.qirc' Effective user.
251   2. '${sysconfdir}/qirc' System-wide.
253    If you intend to run qi as effective user, the file
254 '${sysconfdir}/qirc' could be copied to '${HOME}/.qirc' setting the
255 paths for '${packagedir}' and '${targetdir}' according to the '$HOME'.
257 \x1f
258 File: qi.info,  Node: Packages,  Next: Recipes,  Prev: The qirc file,  Up: Top
260 4 Packages
261 **********
263 A package is a suite of programs usually distributed in binary form
264 which may also contain manual pages, documentation, or any other file
265 associated to a specific software.
267    The package format used by qi is a simplified POSIX pax archive
268 compressed with lzip.  The file extension for packages ends in .tlz
270 Both package installation and package de-installation are managed using
271 two important (internal) variables: '${packagedir}' and '${targetdir}',
272 these values can be changed in the configuration file or via options.
274    '${packagedir}' is a common directory tree where the package contents
275 will be decompressed (will reside).
277    '${targetdir}' is a target directory where the links will be made by
278 graft(1) taking '${packagedir}/package_name' into account.
280 Packages are installed in self-contained directory trees and symbolic
281 links from a common area are made to the package files.  This allows
282 multiple versions of the same package to co-exist on the one system.
284 4.1 Package conflicts
285 =====================
287 All the links to install or remove a package are handled by graft(1).
288 Since multiple packages can be installed or removed at the same time,
289 certain conflicts may arise between the packages.
291 graft(1) defines a CONFLICT as one of the following conditions:
293    * If the package object is a directory and the target object exists
294      but is not a directory.
296    * If the package object is not a directory and the target object
297      exists and is not a symbolic link.
299    * If the package object is not a directory and the target object
300      exists and is a symbolic link to something other than the package
301      object.
303 The default behavior of qi for an incoming package is to ABORT if a
304 conflict arises.  When a package is going to be deleted, qi tells to
305 graft(1) to remove those parts that are not in conflict, leaving the
306 links to the belonging package.  This behavior can be forced if the -p
307 option is given.
309 4.2 Installing packages
310 =======================
312 To install a single package, simply type:
314      qi -i coreutils-8.30-i586+1.tlz
316 To install multiple packages at once, type:
318      qi -i gcc-8.3.0-i586+1.tlz rafaela-2.2-i586+1.tlz ...
320 Warn about the files that will be linked:
322      qi -w bash-5.0-i586+1.tlz
324    This is to verify the content of a package before installing it.
326 See the process of an installation (very verbose):
328      qi -i -v mariana-3.0-i586+1.tlz
330    A second -v gives more.
332 Installing package in a different location:
334      qi -r /media/floppy -i lzip-1.21-i586+1.tlz
336    The -r option assumes '${targetdir}' and '${packagedir}'.  See:
338      qi -r /home/selk -P /pkgs -t / -i lzip-1.21-i586+1.tlz
340    In this case the content of "lzip-1.21-i586+1.tlz" will be
341 decompressed into '/home/selk/pkgs/lzip-1.21-i586+1'.  Assuming that the
342 main binary for lzip is under
343 '/home/selk/pkgs/lzip-1.21-i586+1/usr/bin/' the target for "usr/bin"
344 will be created at '/home/selk'.  Considering that you have exported the
345 'PATH' as '${HOME}/usr/bin', now the system is able to see the recent
346 lzip.
348 Installing from a list of packages using standard input:
350      cat FILELIST.txt | qi -i -
352    The list of packages must contain full path names to be passed in the
353 installation, e.g:
354 /var/cache/qi/packages/x86_64/devel/tcl-8.6.9-x86_64+1.tlz
355 /var/cache/qi/packages/x86_64/devel/tk-8.6.9.1-x86_64+1.tlz
356 /var/cache/qi/packages/x86_64/devel/vala-0.42.3-x86_64+1.tlz
358 4.3 Removing packages
359 =====================
361 To remove a package, simply type:
363      qi -d xz-5.2.4-i586+1.tlz
365 Delete mode will match the package name using '${packagedir}' as prefix.
366 For example, if the value of '${packagedir}' is set to /usr/local/pkgs,
367 this will be equal to:
369      qi -d /usr/local/pkgs/xz-5.2.4-i586+1
371 Detailed output (very verbose):
373      qi -d -v /usr/local/pkgs/xz-5.2.4-i586+1
375    A second -v gives more.
377 By default the delete mode does not preserve a package directory after
378 removing its links from '${targetdir}', but this behavior can be changed
379 if the -k option is passed:
381      qi -d -k /usr/local/pkgs/lzip-1.21-i586+1
383    This means that the links to the package can be reactivated, later:
385      cd /usr/local/pkgs && graft -i lzip-1.21-i586+1
387 Removing package from a different location:
389      qi -r /home/cthulhu -P /pkgs -t / -d xz-5.2.4-i586+1
391 Removing a package using standard input:
393      echo "vala-0.42.3-x86_64+1" | qi -d -
395    This will match with the package directory.
397 4.4 Upgrading packages
398 ======================
400 The upgrade mode inherits the properties of the installation and removal
401 process.  To make sure that a package is updated, the package is
402 installed in a temporary directory taking '${packagedir}' into account.
403 Once the incoming package is pre-installed, qi can proceed to search and
404 delete packages that have the same name (considered as previous ones).
405 Finally, the package is re-installed at its final location and the
406 temporary directory is removed.
408 To upgrade a package, just type:
410      qi -u gcc-9.0.1-i586+1.tlz
412    This will proceed to update "gcc-9.0.1-i586+1" removing other
413 versions of "gcc" (if any).
415 If you want to keep the package directory of found versions during the
416 upgrade process, just pass:
418      qi -u -k gcc-9.0.1-i586+1.tlz
420 To see the upgrade process (very verbose):
422      qi -u -v gcc-9.0.1-i586+1.tlz
424    A second -v gives more.
426 To force the upgrade of an existing package:
428      qi -u -f gcc-9.0.1-i586+1.tlz
430 4.4.1 Package blacklist
431 -----------------------
433 To enforce general package facilities, either to install, remove or
434 maintain the hierarchy of packages in a clean manner, qi makes use of
435 the pruning operation via graft(1):
437    There is a risk if those are crucial packages for the proper
438 functioning of the system, because it implies to deactivate symbolic
439 links from the target directory, _especially_ when transitioning an
440 incoming package into its final location during upgrade.
442 A blacklist for declare package names has been devised for this cases,
443 in case that a user decides to upgrade all packages in the system or,
444 just the crucial ones, such as the C library.
446    The blacklist is related to the upgrade mode only, consists in
447 installing a package instead of updating it or removing previous
448 versions of it; the content of the package will be updated over the
449 existing content at '${packagedir}', while the existing links from
450 '${targetdir}' will be preserved.  A pruning of links will carried out
451 in order to re-link possible differences with the recent content, this
452 helps to avoid having dead links in the target directory.
454 Since the upgrade mode is also used to install a new package, the
455 mechanism for blacklist is to install a declared package if it does not
456 already exist, if it already exists, it is verified that the binary
457 package is newer than the package directory in order to perform an
458 update.
460    Package names for the blacklist can be set from the configuration
461 file.
463    ---------- Footnotes ----------
465    (1) The official guide for Graft can be found at
466 <http://peters.gormand.com.au/Home/tools/graft/graft.html>.
468 \x1f
469 File: qi.info,  Node: Recipes,  Next: Order files,  Prev: Packages,  Up: Top
471 5 Recipes
472 *********
474 A recipe is a file telling qi what to do.  Most often, the recipe tells
475 to qi how to build a binary package from a source tarball.
477    A recipe has two parts: a list of variable definitions and a list of
478 sections.  By convention, the syntax of a section is:
480      section_name()
481      {
482          section lines
483      }
485    The section name is followed by parentheses, one newline and an
486 opening brace.  The line finishing the section contains just a closing
487 brace.  The section names or the function names currently recognized are
488 'build'.
490    The 'build' section is an augmented shell script.  This is the main
491 section (or *shell function*) which contains the instructions to build
492 and produce a package.
494 5.1 Variables
495 =============
497 A "variable" is a *shell variable* defined either in 'qirc' or in a
498 recipe to represent a string of text, called the variable's "value".
499 These values are substituted by explicit request in the definitions of
500 other variables or in calls to external commands.
502    Variables can represent lists of file names, options to pass to
503 compilers, programs to run, directories to look in for source files,
504 directories to write output in, or anything else you can imagine.
506    Definitions of variables in qi have four levels of precedence.
507 Options which define variables from the command-line override those
508 specified in the 'qirc' file, while variables defined in the recipe
509 override those specified in 'qirc', taking priority over those variables
510 settled by options via command-line.  Finally, the variables have
511 default values if they are not defined anywhere.
513    Options that set variables through the command-line can only
514 reference variables defined in 'qirc' and variables with default values.
516    Definitions of variables in 'qirc' can only reference variables
517 previously defined in 'qirc' and variables with default values.
519    Definitions of variables in the recipe can only reference variables
520 settled by command-line, variables previously defined in the recipe,
521 variables defined in 'qirc', and variables with default values.
523 5.2 Special variables
524 =====================
526 There are variables which can only be set using the command line options
527 or via 'qirc', there are other special variables which can be defined or
528 redefined in a recipe.  See the following definitions:
530    'outdir' is the directory where the produced packages are written.
531 This variable can not be redefined in the recipe.  Default sets to
532 '/var/cache/qi/packages'.
534    'worktree' is the working tree where archives, patches, and recipes
535 are expected.  This variable can not be redefined in the recipe.
536 Default sets to '/usr/src/qi'.
538    'tardir' is defined in the recipe to the directory where the tarball
539 containing the source can be found.  The full name of the tarball is
540 composed as '${tardir}/$tarname'.  Its value is available in the recipe
541 as '${tardir}'; a value of .  for 'tardir' sets it to the value of CWD
542 (Current Working Directory), this is where the recipe lives.
544    'arch' is the architecture to compose the package name.  Its value is
545 available in the recipe as '${arch}'.  Default value is the output of
546 'uname -m'.
548    'jobs' is the number of parallel jobs to pass to the compiler.  Its
549 value is available in the recipe as '${jobs}'.  Default sets to '1'.
551    The two variables '${srcdir}' and '${destdir}' can be set in the
552 recipe, as any other variable, but if they are not, qi uses default
553 values for them when building a package.
555    'srcdir' contains the source code to be compiled, and defaults to
556 '${program}-${version}'.  'destdir' is the place where the built package
557 will be installed, and defaults to '${TMPDIR}/package-${program}'.
559    If 'pkgname' is left undefined, the special variable 'program' is
560 assigned by default.  If 'pkgversion' is left undefined, the special
561 variable 'version' is assigned by default.
563    'pkgname' and 'pkgversion' along with: 'version', 'arch', and
564 'release' are used to produce the name of the package in the form:
565 '${pkgname}-${pkgversion}-${arch}+${release}.tlz'
567    A special variable called 'replace' can be used to declare package
568 names that will be replaced at the time of installation.
570 A typical recipe contains the following variables:
572    * 'program': software name.
574      It matches the source name.  It is also used to compose the name of
575      the package if '${pkgname}' is not specified.
577    * 'version': software version.
579      It matches the source name.  It is also used to compose the version
580      of the package if '${pkgversion}' is not specified.
582    * 'arch': software architecture.
584      It is used to compose the architecture of the package in which it
585      is build.
587    * 'release': release number.
589      This is used to reflect the release number of the package.  It is
590      recommended to increase this number after any significant change in
591      the recipe or post-install script.
593 Obtaining sources over the network must be declared in the recipe using
594 the 'fetch' variable.  Use double quotes for separated values.
596    The variables 'netget' and 'rsync' can be defined in 'qirc' to
597 establish a network downloader in order to get the sources.  If they are
598 not defined, qi uses default values:
600    'netget' is the general network downloader tool, defaults sets to
601 'wget -c -w1 -t3 --no-check-certificate'.
603    'rsync' is the network tool for sources containing the prefix for the
604 RSYNC protocol, default sets to 'rsync -v -a -L -z -i --progress'.
606    The variable 'description' is used to print the package description
607 when a package is installed.
609    A description has two parts: a brief description, and a long
610 description.  By convention, the syntax of 'description' is:
612      description="
613      Brief description.
615      Long description.
616      "
618    The first (substantial) line of the value is a brief description of
619 the software (called "blurb").  A newline follows to separate the _brief
620 description_ from the _long description_.
622 An example looks like:
624      description="
625      The GNU core utilities.
627      The GNU core utilities are the basic file, shell and text manipulation
628      utilities of the GNU operating system.  These are the core utilities
629      which are expected to exist on every operating system.
630      "
632    Please consider a length limit of 78 characters as maximum, because
633 the same one would be used on the meta file creation.  See *note The
634 meta file: Recipes. section.
636    The 'homepage' variable is used to declare the main site or home
637 page:
639      homepage=http://www.gnu.org/software/gcc
641    The variable 'license' is used for license information(1).  Some code
642 in the program can be covered by license A, license B, or license C. For
643 "separate licensing" or "heterogeneous licensing", we suggest using *|*
644 for a disjunction, *&* for a conjunction (if that ever happens in a
645 significant way), and comma for heterogeneous licensing.  Comma would
646 have lower precedence, plus added special terms.
648      license="LGPL, GPL | Artistic + added permission"
650 5.3 Building packages
651 =====================
653 A recipe is any valid regular file, qi sets priorities to read a recipe,
654 for example, the Current Working Directory has priority over the working
655 tree (or where the recipes reside); the '${worktree}/recipes' is the
656 second place where to find a recipe, we complete the possibility of
657 using the directory name to invoke a recipe if it contains "recipe" as a
658 valid file name.
660 To build a single package, type:
662      qi -b x-apps/xterm
664 Multiple jobs can be passed to the compiler for speed up the build
665 process:
667      qi -b -j3 x-apps/xterm
669 Update or install the produced package (if it is not already installed)
670 when finish:
672      qi -b -j3 -u x-apps/xterm
674 Only process a recipe but do not create the binary package:
676      qi -b -n dict/aspell
678    The options -i or -u have no effect when -n is given.
680 This can be useful to inspect the build process of recipe:
682    qi -b -k -n dict/aspell 2>&1 | tee aspell-buildlog.txt
684    The -k option could preserve the source directory and the destination
685 directory for later inspection.  A log file of the build process will be
686 created redirecting both, standard error and standard output to tee(1).
688 5.4 Variables from the environment
689 ==================================
691 Qi has environment variables which can be used at build time:
693    The variable 'TMPDIR' sets the temporary directory for sources, which
694 is used for package extractions (see *note Examining packages::) and to
695 prepend the value of '${srcdir}' and '${destdir}' on build mode.  By
696 convention its default value is equal to '/usr/src/qi/build'.
698    The variables 'QICFLAGS', 'QICXXFLAGS', and 'QILDFLAGS' have no
699 effect by default.  The environment variables such as 'CFLAGS',
700 'CXXFLAGS', and 'LDFLAGS' are unset at compile time:
702 Recommended practices is to set variables in front of 'configure' or in
703 front of _make(1)_ instead of exporting to the environment.  As follows:
705      Variables not defined in a site shell script can be set in the
706      environment passed to configure.  However, some packages may run
707      configure again during the build, and the customized values of
708      these variables may be lost.  In order to avoid this problem, you
709      should set them in the configure command line, using 'VAR=value'.
710      For example:
712      './configure CC=/usr/local2/bin/gcc'
714      <http://gnu.org/savannah-checkouts/gnu/autoconf/manual/autoconf-2.69/html_node/Defining-Variables.html>
716      Indeed, while configure can notice the definition of CC in
717      './configure CC=bizarre-cc', it is impossible to notice it in
718      'CC=bizarre-cc ./configure', which, unfortunately, is what most
719      users do.
721      [...]
723      configure: error: changes in the environment can compromise the
724      build.
726      <http://gnu.org/savannah-checkouts/gnu/autoconf/manual/autoconf-2.69/html_node/Setting-Output-Variables.html>
728      It is not wise for makefiles to depend for their functioning on
729      environment variables set up outside their control, since this
730      would cause different users to get different results from the same
731      makefile.  This is against the whole purpose of most makefiles.
733      <http://gnu.org/software/make/manual/make.html#Environment>
735 5.5 The meta file
736 =================
738 The "meta file" is a regular file created during the build mode, it
739 contains information about the package such as program name, program
740 version, release, fetch address, description, and other minor data
741 extracted from processed recipes.  The name of the file is generated as
742 '${full_pkgname}.tlz.txt', it has the purpose to reflect essential
743 information to the user without having to look inside the package
744 content.
746    The content of a meta file looks like:
748      #
749      # The Bourne Again SHell.
750      #
751      # Bash is an sh-compatible shell that incorporates useful features from
752      # the Korn shell (ksh) and C shell (csh).  It is intended to conform to
753      # the IEEE POSIX P1003.2/ISO 9945.2 shell and tools standard.
754      #
755      # It offers functional improvements over sh for both programming and
756      # interactive use.
757      #
759      QICFLAGS="-g0 -Os -mtune=generic -pipe"
760      QICXXFLAGS="-g0 -Os -mtune=generic -pipe"
761      QILDFLAGS="-s"
762      program=bash
763      version=5.0
764      release=1
765      blurb="The Bourne Again SHell."
766      homepage="http://www.gnu.org/software/bash"
767      license="GPLv3+"
768      fetch="ftp://ftp.gnu.org/gnu/bash/bash-5.0.tar.gz"
769      replace=""
771    Package descriptions are extracted from the variable 'description':
772 each line is interpreted literally and pre-formatted to fit in (exactly)
773 *80 columns*, plus the character '#' and a space is prefixed to every
774 line.
776 In addition to the Special variables, there are implicit variables such
777 as 'blurb':
779    The 'blurb' variable is related to the special variable
780 'description'.  Its value is composed using the first (substantial) line
781 of 'description', mentioned as the "brief description".
783    ---------- Footnotes ----------
785    (1) The proposal for 'license' was made by Richard M. Stallman at
786 <http://lists.gnu.org/archive/html/gnu-linux-libre/2016-05/msg00003.html>.
788 \x1f
789 File: qi.info,  Node: Order files,  Next: Creating packages,  Prev: Recipes,  Up: Top
791 6 Order files
792 *************
794 The order mode has the purpose to resolve the build order through .order
795 files.  An order file contains a list of recipe names, by default does
796 not perform any action other than to print a resolved list in descending
797 order.  For example, if *a* depends on *b* and *c*, and *c* depends on
798 *b* as well, the file might look like:
800      a: c b
801      b:
802      c: b
804    Each letter represents a recipe name, complete dependencies for the
805 first recipe name are listed in descending order, which is printed from
806 right to left, and removed from left to right:
808    OUTPUT
810      b
811      c
812      a
814    Declaration of blank lines, colons, parentheses, and end of line are
815 simply ignored.  Comments are allowed for lines that begin with '#'.
817 An order file could be used to build a serie of packages, for example,
818 if the content is:
820      # Image handling libraries
822      libs/libjpeg-turbo: devel/nasm
823      x-libs/jasper: libs/libjpeg-turbo
824      libs/tiff: libs/libjpeg-turbo
826    To proceed with each recipe, we can type:
828      qi -o imglibs.order | qi -b -i -
830    The output of 'qi -o imglibs.order' tells to qi in which order it
831 should build the recipes:
833      devel/nasm
834      libs/libjpeg-turbo
835      x-libs/jasper
836      libs/tiff
838 \x1f
839 File: qi.info,  Node: Creating packages,  Next: Examining packages,  Prev: Order files,  Up: Top
841 7 Creating packages
842 *******************
844 The "creation mode" is an internal function of qi to make new Qi
845 compatible packages, the creation mode is available through the -c
846 option.  A package is produced using the contents of the Current
847 Directory, finally the package is written out to the file name.
849      Usage: qi -c [OUTPUT/PACKAGENAME.TLZ]...
851    The argument for the file name to be written must contain a fully
852 qualified named directory as the output directory where the produced
853 package will be written.  The file name should be composed using the
854 full name: name-version-architecture+release.tlz
856    EXAMPLE
858      cd /usr/local/pkgs
859      cd claws-mail-3.17.1-x86_64+1
860      qi -c /var/cache/qi/packages/x86_64/local/claws-mail-3.17.1-x86_64+1.tlz
862    In this case, the package "claws-mail-3.17.1-x86_64+1.tlz" will be
863 written into '/var/cache/qi/packages/x86_64/local/'.
865 All produced packages are complemented by a checksum file (.sha256).
867 \x1f
868 File: qi.info,  Node: Examining packages,  Next: Exit status,  Prev: Creating packages,  Up: Top
870 8 Examining packages
871 ********************
873 There is an option to make use of the "extraction mode" which serves to
874 examine binary packages for debugging purposes.  The extraction mode
875 consists of decompressing a package into a single directory, verifying
876 its integrity and preserving its properties.
878      qi -x mksh-R56c-x86_64+1.tlz
880    This action will put the content of "mksh-R56c-x86_64+1.tlz" into a
881 single directory, which is a private directory for the user who
882 requested the action, creation mode will be equal to *u=,g=rwx,o=rwx
883 (0700)*.  The package content will reside on this location, default mask
884 to deploy the content will be equal to *u=rwx,g=rwx,o=rwx (0000)*.
886 The creation of the custom directory is influenced by the value of the
887 'TMPDIR' variable.
889 \x1f
890 File: qi.info,  Node: Exit status,  Next: License,  Prev: Examining packages,  Up: Top
892 9 Exit status
893 *************
895 All the conditions of exit codes are described in this chapter.
898      Successful completion (no errors).
901      Minor common errors:
903         - Help usage on illegal options or required arguments.
905         - Program needed by qi (prerequisite) is not available.
908      Command execution error:
910      This code is used to return the evaluation of external commands and
911      shell arguments in case of error.
914      Integrity check error for compressed files.
916      Compressed files means:
918         - Tarball files from tar(1).  Supported extensions: .tar,
919           .tar.gz, .tgz, .tar.Z, .tar.bz2, .tbz2, .tbz, .tar.xz, .txz
921         - Tarballs files from tarlz(1).  Supported extensions: .tar.lz,
922           .tlz
924         - Zip files from unzip(1).  Supported extensions: .zip, .ZIP
926         - Gzip files from gzip(1).  Supported extensions: .gz, .Z
928         - Bzip2 files from bzip2(1).  Supported extensions: .bz2
930         - Lzip files from lzip(1).  Supported extensions: .lz
932         - Xz files from xz(1).  Supported extensions: .xz
935      File empty, not regular, or expected.
937      Commonly, it is expected:
939         - An argument for the mode of operation.
941         - A readable file or directory.
943         - A binary package (.tlz).
945         - A valid recipe.
947         - An order file (.order).
949         - A protocol supported by the network downloader tool.
951         - A checksum file (.sha256).
954      Empty or not defined variable:
956      This code is used to report empty or undefined variables; usually,
957      variables coming from a recipe or assigned arrays that are tested.
960      Package already installed:
962      The package directory for an incoming .tlz package that already
963      exists.
965 '10'
966      Network manager error:
968      This code is used if the network downloader tool fails for some
969      reason.
971 \x1f
972 File: qi.info,  Node: License,  Next: Index,  Prev: Exit status,  Up: Top
974 Appendix A GNU Free Documentation License
975 *****************************************
977                      Version 1.3, 3 November 2008
979      Copyright © 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc.
980      <http://fsf.org/>
982      Everyone is permitted to copy and distribute verbatim copies
983      of this license document, but changing it is not allowed.
985   0. PREAMBLE
987      The purpose of this License is to make a manual, textbook, or other
988      functional and useful document "free" in the sense of freedom: to
989      assure everyone the effective freedom to copy and redistribute it,
990      with or without modifying it, either commercially or
991      noncommercially.  Secondarily, this License preserves for the
992      author and publisher a way to get credit for their work, while not
993      being considered responsible for modifications made by others.
995      This License is a kind of "copyleft", which means that derivative
996      works of the document must themselves be free in the same sense.
997      It complements the GNU General Public License, which is a copyleft
998      license designed for free software.
1000      We have designed this License in order to use it for manuals for
1001      free software, because free software needs free documentation: a
1002      free program should come with manuals providing the same freedoms
1003      that the software does.  But this License is not limited to
1004      software manuals; it can be used for any textual work, regardless
1005      of subject matter or whether it is published as a printed book.  We
1006      recommend this License principally for works whose purpose is
1007      instruction or reference.
1009   1. APPLICABILITY AND DEFINITIONS
1011      This License applies to any manual or other work, in any medium,
1012      that contains a notice placed by the copyright holder saying it can
1013      be distributed under the terms of this License.  Such a notice
1014      grants a world-wide, royalty-free license, unlimited in duration,
1015      to use that work under the conditions stated herein.  The
1016      "Document", below, refers to any such manual or work.  Any member
1017      of the public is a licensee, and is addressed as "you".  You accept
1018      the license if you copy, modify or distribute the work in a way
1019      requiring permission under copyright law.
1021      A "Modified Version" of the Document means any work containing the
1022      Document or a portion of it, either copied verbatim, or with
1023      modifications and/or translated into another language.
1025      A "Secondary Section" is a named appendix or a front-matter section
1026      of the Document that deals exclusively with the relationship of the
1027      publishers or authors of the Document to the Document's overall
1028      subject (or to related matters) and contains nothing that could
1029      fall directly within that overall subject.  (Thus, if the Document
1030      is in part a textbook of mathematics, a Secondary Section may not
1031      explain any mathematics.)  The relationship could be a matter of
1032      historical connection with the subject or with related matters, or
1033      of legal, commercial, philosophical, ethical or political position
1034      regarding them.
1036      The "Invariant Sections" are certain Secondary Sections whose
1037      titles are designated, as being those of Invariant Sections, in the
1038      notice that says that the Document is released under this License.
1039      If a section does not fit the above definition of Secondary then it
1040      is not allowed to be designated as Invariant.  The Document may
1041      contain zero Invariant Sections.  If the Document does not identify
1042      any Invariant Sections then there are none.
1044      The "Cover Texts" are certain short passages of text that are
1045      listed, as Front-Cover Texts or Back-Cover Texts, in the notice
1046      that says that the Document is released under this License.  A
1047      Front-Cover Text may be at most 5 words, and a Back-Cover Text may
1048      be at most 25 words.
1050      A "Transparent" copy of the Document means a machine-readable copy,
1051      represented in a format whose specification is available to the
1052      general public, that is suitable for revising the document
1053      straightforwardly with generic text editors or (for images composed
1054      of pixels) generic paint programs or (for drawings) some widely
1055      available drawing editor, and that is suitable for input to text
1056      formatters or for automatic translation to a variety of formats
1057      suitable for input to text formatters.  A copy made in an otherwise
1058      Transparent file format whose markup, or absence of markup, has
1059      been arranged to thwart or discourage subsequent modification by
1060      readers is not Transparent.  An image format is not Transparent if
1061      used for any substantial amount of text.  A copy that is not
1062      "Transparent" is called "Opaque".
1064      Examples of suitable formats for Transparent copies include plain
1065      ASCII without markup, Texinfo input format, LaTeX input format,
1066      SGML or XML using a publicly available DTD, and standard-conforming
1067      simple HTML, PostScript or PDF designed for human modification.
1068      Examples of transparent image formats include PNG, XCF and JPG.
1069      Opaque formats include proprietary formats that can be read and
1070      edited only by proprietary word processors, SGML or XML for which
1071      the DTD and/or processing tools are not generally available, and
1072      the machine-generated HTML, PostScript or PDF produced by some word
1073      processors for output purposes only.
1075      The "Title Page" means, for a printed book, the title page itself,
1076      plus such following pages as are needed to hold, legibly, the
1077      material this License requires to appear in the title page.  For
1078      works in formats which do not have any title page as such, "Title
1079      Page" means the text near the most prominent appearance of the
1080      work's title, preceding the beginning of the body of the text.
1082      The "publisher" means any person or entity that distributes copies
1083      of the Document to the public.
1085      A section "Entitled XYZ" means a named subunit of the Document
1086      whose title either is precisely XYZ or contains XYZ in parentheses
1087      following text that translates XYZ in another language.  (Here XYZ
1088      stands for a specific section name mentioned below, such as
1089      "Acknowledgements", "Dedications", "Endorsements", or "History".)
1090      To "Preserve the Title" of such a section when you modify the
1091      Document means that it remains a section "Entitled XYZ" according
1092      to this definition.
1094      The Document may include Warranty Disclaimers next to the notice
1095      which states that this License applies to the Document.  These
1096      Warranty Disclaimers are considered to be included by reference in
1097      this License, but only as regards disclaiming warranties: any other
1098      implication that these Warranty Disclaimers may have is void and
1099      has no effect on the meaning of this License.
1101   2. VERBATIM COPYING
1103      You may copy and distribute the Document in any medium, either
1104      commercially or noncommercially, provided that this License, the
1105      copyright notices, and the license notice saying this License
1106      applies to the Document are reproduced in all copies, and that you
1107      add no other conditions whatsoever to those of this License.  You
1108      may not use technical measures to obstruct or control the reading
1109      or further copying of the copies you make or distribute.  However,
1110      you may accept compensation in exchange for copies.  If you
1111      distribute a large enough number of copies you must also follow the
1112      conditions in section 3.
1114      You may also lend copies, under the same conditions stated above,
1115      and you may publicly display copies.
1117   3. COPYING IN QUANTITY
1119      If you publish printed copies (or copies in media that commonly
1120      have printed covers) of the Document, numbering more than 100, and
1121      the Document's license notice requires Cover Texts, you must
1122      enclose the copies in covers that carry, clearly and legibly, all
1123      these Cover Texts: Front-Cover Texts on the front cover, and
1124      Back-Cover Texts on the back cover.  Both covers must also clearly
1125      and legibly identify you as the publisher of these copies.  The
1126      front cover must present the full title with all words of the title
1127      equally prominent and visible.  You may add other material on the
1128      covers in addition.  Copying with changes limited to the covers, as
1129      long as they preserve the title of the Document and satisfy these
1130      conditions, can be treated as verbatim copying in other respects.
1132      If the required texts for either cover are too voluminous to fit
1133      legibly, you should put the first ones listed (as many as fit
1134      reasonably) on the actual cover, and continue the rest onto
1135      adjacent pages.
1137      If you publish or distribute Opaque copies of the Document
1138      numbering more than 100, you must either include a machine-readable
1139      Transparent copy along with each Opaque copy, or state in or with
1140      each Opaque copy a computer-network location from which the general
1141      network-using public has access to download using public-standard
1142      network protocols a complete Transparent copy of the Document, free
1143      of added material.  If you use the latter option, you must take
1144      reasonably prudent steps, when you begin distribution of Opaque
1145      copies in quantity, to ensure that this Transparent copy will
1146      remain thus accessible at the stated location until at least one
1147      year after the last time you distribute an Opaque copy (directly or
1148      through your agents or retailers) of that edition to the public.
1150      It is requested, but not required, that you contact the authors of
1151      the Document well before redistributing any large number of copies,
1152      to give them a chance to provide you with an updated version of the
1153      Document.
1155   4. MODIFICATIONS
1157      You may copy and distribute a Modified Version of the Document
1158      under the conditions of sections 2 and 3 above, provided that you
1159      release the Modified Version under precisely this License, with the
1160      Modified Version filling the role of the Document, thus licensing
1161      distribution and modification of the Modified Version to whoever
1162      possesses a copy of it.  In addition, you must do these things in
1163      the Modified Version:
1165        A. Use in the Title Page (and on the covers, if any) a title
1166           distinct from that of the Document, and from those of previous
1167           versions (which should, if there were any, be listed in the
1168           History section of the Document).  You may use the same title
1169           as a previous version if the original publisher of that
1170           version gives permission.
1172        B. List on the Title Page, as authors, one or more persons or
1173           entities responsible for authorship of the modifications in
1174           the Modified Version, together with at least five of the
1175           principal authors of the Document (all of its principal
1176           authors, if it has fewer than five), unless they release you
1177           from this requirement.
1179        C. State on the Title page the name of the publisher of the
1180           Modified Version, as the publisher.
1182        D. Preserve all the copyright notices of the Document.
1184        E. Add an appropriate copyright notice for your modifications
1185           adjacent to the other copyright notices.
1187        F. Include, immediately after the copyright notices, a license
1188           notice giving the public permission to use the Modified
1189           Version under the terms of this License, in the form shown in
1190           the Addendum below.
1192        G. Preserve in that license notice the full lists of Invariant
1193           Sections and required Cover Texts given in the Document's
1194           license notice.
1196        H. Include an unaltered copy of this License.
1198        I. Preserve the section Entitled "History", Preserve its Title,
1199           and add to it an item stating at least the title, year, new
1200           authors, and publisher of the Modified Version as given on the
1201           Title Page.  If there is no section Entitled "History" in the
1202           Document, create one stating the title, year, authors, and
1203           publisher of the Document as given on its Title Page, then add
1204           an item describing the Modified Version as stated in the
1205           previous sentence.
1207        J. Preserve the network location, if any, given in the Document
1208           for public access to a Transparent copy of the Document, and
1209           likewise the network locations given in the Document for
1210           previous versions it was based on.  These may be placed in the
1211           "History" section.  You may omit a network location for a work
1212           that was published at least four years before the Document
1213           itself, or if the original publisher of the version it refers
1214           to gives permission.
1216        K. For any section Entitled "Acknowledgements" or "Dedications",
1217           Preserve the Title of the section, and preserve in the section
1218           all the substance and tone of each of the contributor
1219           acknowledgements and/or dedications given therein.
1221        L. Preserve all the Invariant Sections of the Document, unaltered
1222           in their text and in their titles.  Section numbers or the
1223           equivalent are not considered part of the section titles.
1225        M. Delete any section Entitled "Endorsements".  Such a section
1226           may not be included in the Modified Version.
1228        N. Do not retitle any existing section to be Entitled
1229           "Endorsements" or to conflict in title with any Invariant
1230           Section.
1232        O. Preserve any Warranty Disclaimers.
1234      If the Modified Version includes new front-matter sections or
1235      appendices that qualify as Secondary Sections and contain no
1236      material copied from the Document, you may at your option designate
1237      some or all of these sections as invariant.  To do this, add their
1238      titles to the list of Invariant Sections in the Modified Version's
1239      license notice.  These titles must be distinct from any other
1240      section titles.
1242      You may add a section Entitled "Endorsements", provided it contains
1243      nothing but endorsements of your Modified Version by various
1244      parties--for example, statements of peer review or that the text
1245      has been approved by an organization as the authoritative
1246      definition of a standard.
1248      You may add a passage of up to five words as a Front-Cover Text,
1249      and a passage of up to 25 words as a Back-Cover Text, to the end of
1250      the list of Cover Texts in the Modified Version.  Only one passage
1251      of Front-Cover Text and one of Back-Cover Text may be added by (or
1252      through arrangements made by) any one entity.  If the Document
1253      already includes a cover text for the same cover, previously added
1254      by you or by arrangement made by the same entity you are acting on
1255      behalf of, you may not add another; but you may replace the old
1256      one, on explicit permission from the previous publisher that added
1257      the old one.
1259      The author(s) and publisher(s) of the Document do not by this
1260      License give permission to use their names for publicity for or to
1261      assert or imply endorsement of any Modified Version.
1263   5. COMBINING DOCUMENTS
1265      You may combine the Document with other documents released under
1266      this License, under the terms defined in section 4 above for
1267      modified versions, provided that you include in the combination all
1268      of the Invariant Sections of all of the original documents,
1269      unmodified, and list them all as Invariant Sections of your
1270      combined work in its license notice, and that you preserve all
1271      their Warranty Disclaimers.
1273      The combined work need only contain one copy of this License, and
1274      multiple identical Invariant Sections may be replaced with a single
1275      copy.  If there are multiple Invariant Sections with the same name
1276      but different contents, make the title of each such section unique
1277      by adding at the end of it, in parentheses, the name of the
1278      original author or publisher of that section if known, or else a
1279      unique number.  Make the same adjustment to the section titles in
1280      the list of Invariant Sections in the license notice of the
1281      combined work.
1283      In the combination, you must combine any sections Entitled
1284      "History" in the various original documents, forming one section
1285      Entitled "History"; likewise combine any sections Entitled
1286      "Acknowledgements", and any sections Entitled "Dedications".  You
1287      must delete all sections Entitled "Endorsements."
1289   6. COLLECTIONS OF DOCUMENTS
1291      You may make a collection consisting of the Document and other
1292      documents released under this License, and replace the individual
1293      copies of this License in the various documents with a single copy
1294      that is included in the collection, provided that you follow the
1295      rules of this License for verbatim copying of each of the documents
1296      in all other respects.
1298      You may extract a single document from such a collection, and
1299      distribute it individually under this License, provided you insert
1300      a copy of this License into the extracted document, and follow this
1301      License in all other respects regarding verbatim copying of that
1302      document.
1304   7. AGGREGATION WITH INDEPENDENT WORKS
1306      A compilation of the Document or its derivatives with other
1307      separate and independent documents or works, in or on a volume of a
1308      storage or distribution medium, is called an "aggregate" if the
1309      copyright resulting from the compilation is not used to limit the
1310      legal rights of the compilation's users beyond what the individual
1311      works permit.  When the Document is included in an aggregate, this
1312      License does not apply to the other works in the aggregate which
1313      are not themselves derivative works of the Document.
1315      If the Cover Text requirement of section 3 is applicable to these
1316      copies of the Document, then if the Document is less than one half
1317      of the entire aggregate, the Document's Cover Texts may be placed
1318      on covers that bracket the Document within the aggregate, or the
1319      electronic equivalent of covers if the Document is in electronic
1320      form.  Otherwise they must appear on printed covers that bracket
1321      the whole aggregate.
1323   8. TRANSLATION
1325      Translation is considered a kind of modification, so you may
1326      distribute translations of the Document under the terms of section
1327      4.  Replacing Invariant Sections with translations requires special
1328      permission from their copyright holders, but you may include
1329      translations of some or all Invariant Sections in addition to the
1330      original versions of these Invariant Sections.  You may include a
1331      translation of this License, and all the license notices in the
1332      Document, and any Warranty Disclaimers, provided that you also
1333      include the original English version of this License and the
1334      original versions of those notices and disclaimers.  In case of a
1335      disagreement between the translation and the original version of
1336      this License or a notice or disclaimer, the original version will
1337      prevail.
1339      If a section in the Document is Entitled "Acknowledgements",
1340      "Dedications", or "History", the requirement (section 4) to
1341      Preserve its Title (section 1) will typically require changing the
1342      actual title.
1344   9. TERMINATION
1346      You may not copy, modify, sublicense, or distribute the Document
1347      except as expressly provided under this License.  Any attempt
1348      otherwise to copy, modify, sublicense, or distribute it is void,
1349      and will automatically terminate your rights under this License.
1351      However, if you cease all violation of this License, then your
1352      license from a particular copyright holder is reinstated (a)
1353      provisionally, unless and until the copyright holder explicitly and
1354      finally terminates your license, and (b) permanently, if the
1355      copyright holder fails to notify you of the violation by some
1356      reasonable means prior to 60 days after the cessation.
1358      Moreover, your license from a particular copyright holder is
1359      reinstated permanently if the copyright holder notifies you of the
1360      violation by some reasonable means, this is the first time you have
1361      received notice of violation of this License (for any work) from
1362      that copyright holder, and you cure the violation prior to 30 days
1363      after your receipt of the notice.
1365      Termination of your rights under this section does not terminate
1366      the licenses of parties who have received copies or rights from you
1367      under this License.  If your rights have been terminated and not
1368      permanently reinstated, receipt of a copy of some or all of the
1369      same material does not give you any rights to use it.
1371   10. FUTURE REVISIONS OF THIS LICENSE
1373      The Free Software Foundation may publish new, revised versions of
1374      the GNU Free Documentation License from time to time.  Such new
1375      versions will be similar in spirit to the present version, but may
1376      differ in detail to address new problems or concerns.  See
1377      <http://www.gnu.org/copyleft/>.
1379      Each version of the License is given a distinguishing version
1380      number.  If the Document specifies that a particular numbered
1381      version of this License "or any later version" applies to it, you
1382      have the option of following the terms and conditions either of
1383      that specified version or of any later version that has been
1384      published (not as a draft) by the Free Software Foundation.  If the
1385      Document does not specify a version number of this License, you may
1386      choose any version ever published (not as a draft) by the Free
1387      Software Foundation.  If the Document specifies that a proxy can
1388      decide which future versions of this License can be used, that
1389      proxy's public statement of acceptance of a version permanently
1390      authorizes you to choose that version for the Document.
1392   11. RELICENSING
1394      "Massive Multiauthor Collaboration Site" (or "MMC Site") means any
1395      World Wide Web server that publishes copyrightable works and also
1396      provides prominent facilities for anybody to edit those works.  A
1397      public wiki that anybody can edit is an example of such a server.
1398      A "Massive Multiauthor Collaboration" (or "MMC") contained in the
1399      site means any set of copyrightable works thus published on the MMC
1400      site.
1402      "CC-BY-SA" means the Creative Commons Attribution-Share Alike 3.0
1403      license published by Creative Commons Corporation, a not-for-profit
1404      corporation with a principal place of business in San Francisco,
1405      California, as well as future copyleft versions of that license
1406      published by that same organization.
1408      "Incorporate" means to publish or republish a Document, in whole or
1409      in part, as part of another Document.
1411      An MMC is "eligible for relicensing" if it is licensed under this
1412      License, and if all works that were first published under this
1413      License somewhere other than this MMC, and subsequently
1414      incorporated in whole or in part into the MMC, (1) had no cover
1415      texts or invariant sections, and (2) were thus incorporated prior
1416      to November 1, 2008.
1418      The operator of an MMC Site may republish an MMC contained in the
1419      site under CC-BY-SA on the same site at any time before August 1,
1420      2009, provided the MMC is eligible for relicensing.
1422 ADDENDUM: How to use this License for your documents
1423 ====================================================
1425 To use this License in a document you have written, include a copy of
1426 the License in the document and put the following copyright and license
1427 notices just after the title page:
1429        Copyright (C)  YEAR  YOUR NAME.
1430        Permission is granted to copy, distribute and/or modify this document
1431        under the terms of the GNU Free Documentation License, Version 1.3
1432        or any later version published by the Free Software Foundation;
1433        with no Invariant Sections, no Front-Cover Texts, and no Back-Cover
1434        Texts.  A copy of the license is included in the section entitled ``GNU
1435        Free Documentation License''.
1437    If you have Invariant Sections, Front-Cover Texts and Back-Cover
1438 Texts, replace the "with...Texts." line with this:
1440          with the Invariant Sections being LIST THEIR TITLES, with
1441          the Front-Cover Texts being LIST, and with the Back-Cover Texts
1442          being LIST.
1444    If you have Invariant Sections without Cover Texts, or some other
1445 combination of the three, merge those two alternatives to suit the
1446 situation.
1448    If your document contains nontrivial examples of program code, we
1449 recommend releasing these examples in parallel under your choice of free
1450 software license, such as the GNU General Public License, to permit
1451 their use in free software.
1453 \x1f
1454 File: qi.info,  Node: Index,  Prev: License,  Up: Top
1456 Index
1457 *****
1459 \0\b[index\0\b]
1460 * Menu:
1462 * configuration file:                    The qirc file.       (line   6)
1463 * environment variables:                 Recipes.             (line 223)
1464 * exit codes:                            Exit status.         (line   6)
1465 * handling build order:                  Order files.         (line   6)
1466 * introduction:                          Introduction.        (line   6)
1467 * invocation:                            Invoking qi.         (line   6)
1468 * managing packages:                     Packages.            (line   6)
1469 * package blacklist:                     Packages.            (line 176)
1470 * package build:                         Recipes.             (line 185)
1471 * package conflicts:                     Packages.            (line  30)
1472 * package creation:                      Creating packages.   (line   6)
1473 * package de-installation:               Packages.            (line 104)
1474 * package examination:                   Examining packages.  (line   6)
1475 * package installation:                  Packages.            (line  55)
1476 * package upgrade:                       Packages.            (line 143)
1477 * recipes:                               Recipes.             (line   6)
1478 * special variables:                     Recipes.             (line  58)
1479 * the meta file:                         Recipes.             (line 270)
1480 * variables:                             Recipes.             (line  29)
1483 \x1f
1484 Tag Table:
1485 Node: Top\x7f804
1486 Node: Introduction\x7f1646
1487 Node: Invoking qi\x7f2808
1488 Node: The qirc file\x7f6228
1489 Node: Packages\x7f7306
1490 Ref: Packages-Footnote-1\x7f14353
1491 Node: Recipes\x7f14466
1492 Ref: Recipes-Footnote-1\x7f26519
1493 Node: Order files\x7f26664
1494 Node: Creating packages\x7f27998
1495 Node: Examining packages\x7f29049
1496 Node: Exit status\x7f29921
1497 Node: License\x7f31886
1498 Node: Index\x7f57002
1499 \x1f
1500 End Tag Table
1502 \x1f
1503 Local Variables:
1504 coding: iso-8859-1
1505 End: