|
@@ -1,6 +1,6 @@
|
|
|
-This is qi.info, produced by makeinfo version 6.7 from qi-header.texi.
|
|
|
+This is qi.info, produced by makeinfo version 7.1 from qi-header.texi.
|
|
|
|
|
|
-Copyright © 2019-2023 Matias Andres Fonzo, Santiago del Estero,
|
|
|
+Copyright © 2019-2023 Matias Andres Fonzo, Santiago del Estero,
|
|
|
Argentina.
|
|
|
|
|
|
Permission is granted to copy, distribute and/or modify this document
|
|
@@ -18,7 +18,7 @@ File: qi.info, Node: Top, Next: Introduction to Qi, Up: (dir)
|
|
|
Qi user guide
|
|
|
*************
|
|
|
|
|
|
-This user guide is for Qi (version 2.12-rc2, 11 Apr 2023).
|
|
|
+This user guide is for Qi (version 2.12-rc2, 1 Apr 2024).
|
|
|
|
|
|
* Menu:
|
|
|
|
|
@@ -34,7 +34,7 @@ This user guide is for Qi (version 2.12-rc2, 11 Apr 2023).
|
|
|
* Index::
|
|
|
|
|
|
|
|
|
- Copyright © 2019-2023 Matias Andres Fonzo, Santiago del Estero,
|
|
|
+ Copyright © 2019-2023 Matias Andres Fonzo, Santiago del Estero,
|
|
|
Argentina.
|
|
|
|
|
|
Permission is granted to copy, distribute and/or modify this document
|
|
@@ -77,68 +77,68 @@ This chapter describes the synopsis for invoking Qi.
|
|
|
|
|
|
Usage: qi COMMAND [OPTION...] [FILE]...
|
|
|
|
|
|
-One mandatory command specifies the operation that 'qi' should perform,
|
|
|
+One mandatory command specifies the operation that ‘qi’ should perform,
|
|
|
options are meant to detail how this operation should be performed
|
|
|
during or after the process.
|
|
|
|
|
|
Qi supports the following commands:
|
|
|
|
|
|
-'warn'
|
|
|
+‘warn’
|
|
|
Warn about files that will be installed.
|
|
|
|
|
|
-'install'
|
|
|
+‘install’
|
|
|
Install packages.
|
|
|
|
|
|
-'remove'
|
|
|
+‘remove’
|
|
|
Remove packages.
|
|
|
|
|
|
-'upgrade'
|
|
|
+‘upgrade’
|
|
|
Upgrade packages.
|
|
|
|
|
|
-'extract'
|
|
|
+‘extract’
|
|
|
Extract packages for debugging purposes.
|
|
|
|
|
|
-'create'
|
|
|
+‘create’
|
|
|
Create a .tlz package from directory.
|
|
|
|
|
|
-'build'
|
|
|
+‘build’
|
|
|
Build packages using recipe names.
|
|
|
|
|
|
-'order'
|
|
|
+‘order’
|
|
|
Resolve build order through .order files
|
|
|
|
|
|
Options when installing, removing, or upgrading software packages:
|
|
|
|
|
|
-'-f'
|
|
|
-'--force'
|
|
|
+‘-f’
|
|
|
+‘--force’
|
|
|
Force upgrade of pre-existing packages.
|
|
|
|
|
|
-'-k'
|
|
|
-'--keep'
|
|
|
+‘-k’
|
|
|
+‘--keep’
|
|
|
Keep directories when build/remove/upgrade.
|
|
|
|
|
|
Keep (don't delete) the package directory when using remove/upgrade
|
|
|
command.
|
|
|
|
|
|
- This will also try to preserve the directories '${srcdir}' and
|
|
|
- '${destdir}' when using build command. Its effect is available in
|
|
|
- recipes as '${keep_srcdir}' and '${keep_destdir}'. See *note
|
|
|
+ This will also try to preserve the directories ‘${srcdir}’ and
|
|
|
+ ‘${destdir}’ when using build command. Its effect is available in
|
|
|
+ recipes as ‘${keep_srcdir}’ and ‘${keep_destdir}’. See *note
|
|
|
Special variables: Recipes. for details.
|
|
|
|
|
|
-'-p'
|
|
|
-'--prune'
|
|
|
+‘-p’
|
|
|
+‘--prune’
|
|
|
Prune conflicts.
|
|
|
|
|
|
-'-P'
|
|
|
-'--packagedir=<dir>'
|
|
|
+‘-P’
|
|
|
+‘--packagedir=<dir>’
|
|
|
Set directory for package installations.
|
|
|
|
|
|
-'-t'
|
|
|
-'--targetdir=<dir>'
|
|
|
+‘-t’
|
|
|
+‘--targetdir=<dir>’
|
|
|
Set target directory for symbolic links.
|
|
|
|
|
|
-'-r'
|
|
|
-'--rootdir=<dir>'
|
|
|
+‘-r’
|
|
|
+‘--rootdir=<dir>’
|
|
|
Use the fully qualified named directory as the root directory for
|
|
|
all qi operations.
|
|
|
|
|
@@ -147,62 +147,62 @@ Options when installing, removing, or upgrading software packages:
|
|
|
|
|
|
Options when building software packages using recipes:
|
|
|
|
|
|
-'-a'
|
|
|
-'--architecture'
|
|
|
+‘-a’
|
|
|
+‘--architecture’
|
|
|
Set architecture name for the package.
|
|
|
|
|
|
-'-j'
|
|
|
-'--jobs'
|
|
|
+‘-j’
|
|
|
+‘--jobs’
|
|
|
Parallel jobs for the compiler.
|
|
|
|
|
|
- This option sets the variable '${jobs}'. If not specified, default
|
|
|
+ This option sets the variable ‘${jobs}’. If not specified, default
|
|
|
sets to 1.
|
|
|
|
|
|
-'-S'
|
|
|
-'--skip-questions'
|
|
|
+‘-S’
|
|
|
+‘--skip-questions’
|
|
|
Skip questions on completed recipes.
|
|
|
|
|
|
-'-1'
|
|
|
-'--increment'
|
|
|
- Increment release number ('${release}' + 1).
|
|
|
+‘-1’
|
|
|
+‘--increment’
|
|
|
+ Increment release number (‘${release}’ + 1).
|
|
|
|
|
|
The effect of this option will be omitted if -no-package is being
|
|
|
used.
|
|
|
|
|
|
-'-n'
|
|
|
-'--no-package'
|
|
|
+‘-n’
|
|
|
+‘--no-package’
|
|
|
Do not create a .tlz package.
|
|
|
|
|
|
-'-i'
|
|
|
-'--install'
|
|
|
+‘-i’
|
|
|
+‘--install’
|
|
|
Install package after the build.
|
|
|
|
|
|
-'-u'
|
|
|
-'--upgrade'
|
|
|
+‘-u’
|
|
|
+‘--upgrade’
|
|
|
Upgrade package after the build.
|
|
|
|
|
|
-'-o'
|
|
|
-'--outdir=<dir>'
|
|
|
+‘-o’
|
|
|
+‘--outdir=<dir>’
|
|
|
Where the packages produced will be written.
|
|
|
|
|
|
- This option sets the variable '${outdir}'.
|
|
|
+ This option sets the variable ‘${outdir}’.
|
|
|
|
|
|
-'-w'
|
|
|
-'--worktree=<dir>'
|
|
|
+‘-w’
|
|
|
+‘--worktree=<dir>’
|
|
|
Where archives, patches, recipes are expected.
|
|
|
|
|
|
- This option sets the variable '${worktree}'.
|
|
|
+ This option sets the variable ‘${worktree}’.
|
|
|
|
|
|
-'-s'
|
|
|
-'--sourcedir=<dir>'
|
|
|
+‘-s’
|
|
|
+‘--sourcedir=<dir>’
|
|
|
Where compressed sources will be found.
|
|
|
|
|
|
- This option sets the variable '${tardir}'.
|
|
|
+ This option sets the variable ‘${tardir}’.
|
|
|
|
|
|
Other options:
|
|
|
|
|
|
-'-v'
|
|
|
-'--verbose'
|
|
|
+‘-v’
|
|
|
+‘--verbose’
|
|
|
Be verbose (an extra -v gives more).
|
|
|
|
|
|
It sets the verbosity level, default sets to 0.
|
|
@@ -211,14 +211,14 @@ Other options:
|
|
|
detailed. Although at the moment it is limited to graft(1)
|
|
|
verbosity.
|
|
|
|
|
|
-'-N'
|
|
|
-'--no-rc'
|
|
|
+‘-N’
|
|
|
+‘--no-rc’
|
|
|
Do not read the configuration file.
|
|
|
|
|
|
This will ignore reading the qirc file.
|
|
|
|
|
|
-'-L'
|
|
|
-'--show-location'
|
|
|
+‘-L’
|
|
|
+‘--show-location’
|
|
|
Print default directory locations and exit.
|
|
|
|
|
|
This will print the target directory, package directory, working
|
|
@@ -234,29 +234,29 @@ Other options:
|
|
|
You can set these environment variables using one of the following
|
|
|
methods:
|
|
|
|
|
|
- 'eval "$(qi -L)"'
|
|
|
+ ‘eval "$(qi -L)"’
|
|
|
|
|
|
This will display the default locations taking into account the
|
|
|
values set from the qirc configuration file. You can deny the
|
|
|
- influence of the configuration file by setting the option '-N'.
|
|
|
+ influence of the configuration file by setting the option ‘-N’.
|
|
|
|
|
|
- 'eval "$(qi -N -L)"'
|
|
|
+ ‘eval "$(qi -N -L)"’
|
|
|
|
|
|
Or you can adjust the new locations using the command-line options,
|
|
|
e.g:
|
|
|
|
|
|
- 'eval "$(qi -N --targetdir=/directory -L)"'
|
|
|
+ ‘eval "$(qi -N --targetdir=/directory -L)"’
|
|
|
|
|
|
-'-h'
|
|
|
-'--help'
|
|
|
+‘-h’
|
|
|
+‘--help’
|
|
|
Display the usage and exit.
|
|
|
|
|
|
-'-V'
|
|
|
-'--version'
|
|
|
+‘-V’
|
|
|
+‘--version’
|
|
|
|
|
|
This will print the (short) version information and then exit.
|
|
|
|
|
|
- The same can be achieved if Qi is invoked as 'qi version'.
|
|
|
+ The same can be achieved if Qi is invoked as ‘qi version’.
|
|
|
|
|
|
When FILE is -, qi can read from the standard input. See examples
|
|
|
from the *note Packages:: section.
|
|
@@ -274,7 +274,7 @@ File: qi.info, Node: The qirc file, Next: Packages, Prev: Invoking qi, Up: T
|
|
|
3 The qirc file
|
|
|
***************
|
|
|
|
|
|
-The global 'qirc' file offers a way to define variables and tools (such
|
|
|
+The global ‘qirc’ file offers a way to define variables and tools (such
|
|
|
as a download manager) for default use. This file is used by qi at
|
|
|
runtime, e.g., to build, install, remove or upgrade packages.
|
|
|
|
|
@@ -283,18 +283,18 @@ variable in the shell.
|
|
|
|
|
|
The command line options related to the package directory and target
|
|
|
directory and some of the command line options used for the build
|
|
|
-command, have the power to override the values declared on 'qirc'. See
|
|
|
+command, have the power to override the values declared on ‘qirc’. See
|
|
|
*note Invoking qi::.
|
|
|
|
|
|
The order in which qi looks for this file is:
|
|
|
|
|
|
- 1. '${HOME}/.qirc' Effective user.
|
|
|
+ 1. ‘${HOME}/.qirc’ Effective user.
|
|
|
|
|
|
- 2. '${sysconfdir}/qirc' System-wide.
|
|
|
+ 2. ‘${sysconfdir}/qirc’ System-wide.
|
|
|
|
|
|
If you intend to run qi as effective user, the file
|
|
|
-'${sysconfdir}/qirc' could be copied to '${HOME}/.qirc' setting the
|
|
|
-paths for '${packagedir}' and '${targetdir}' according to the '$HOME'.
|
|
|
+‘${sysconfdir}/qirc’ could be copied to ‘${HOME}/.qirc’ setting the
|
|
|
+paths for ‘${packagedir}’ and ‘${targetdir}’ according to the ‘$HOME’.
|
|
|
|
|
|
|
|
|
File: qi.info, Node: Packages, Next: Recipes, Prev: The qirc file, Up: Top
|
|
@@ -308,17 +308,17 @@ associated to a specific software.
|
|
|
|
|
|
The package format used by qi is a simplified POSIX pax archive
|
|
|
compressed using lzip(1). The file extension for packages ends in
|
|
|
-'.tlz'.
|
|
|
+‘.tlz’.
|
|
|
|
|
|
Both package installation and package de-installation are managed using
|
|
|
-two important (internal) variables: '${packagedir}' and '${targetdir}',
|
|
|
+two important (internal) variables: ‘${packagedir}’ and ‘${targetdir}’,
|
|
|
these values can be changed in the configuration file or via options.
|
|
|
|
|
|
- '${packagedir}' is a common directory tree where the package contents
|
|
|
+ ‘${packagedir}’ is a common directory tree where the package contents
|
|
|
will be decompressed (will reside).
|
|
|
|
|
|
- '${targetdir}' is a target directory where the links will be made by
|
|
|
-graft(1) taking '${packagedir}/package_name' into account.
|
|
|
+ ‘${targetdir}’ is a target directory where the links will be made by
|
|
|
+graft(1) taking ‘${packagedir}/package_name’ into account.
|
|
|
|
|
|
Packages are installed in self-contained directory trees and symbolic
|
|
|
links from a common area are made to the package files. This allows
|
|
@@ -333,13 +333,13 @@ certain conflicts may arise between the packages.
|
|
|
|
|
|
graft(2) defines a CONFLICT as one of the following conditions:
|
|
|
|
|
|
- * If the package object is a directory and the target object exists
|
|
|
+ • If the package object is a directory and the target object exists
|
|
|
but is not a directory.
|
|
|
|
|
|
- * If the package object is not a directory and the target object
|
|
|
+ • If the package object is not a directory and the target object
|
|
|
exists and is not a symbolic link.
|
|
|
|
|
|
- * If the package object is not a directory and the target object
|
|
|
+ • If the package object is not a directory and the target object
|
|
|
exists and is a symbolic link to something other than the package
|
|
|
object.
|
|
|
|
|
@@ -376,17 +376,17 @@ Installing package in a different location:
|
|
|
|
|
|
qi install --rootdir=/media/floppy lzip_1.21_i586-1@compressors.tlz
|
|
|
|
|
|
- Important: the -rootdir option assumes '${targetdir}' and
|
|
|
-'${packagedir}'. See the following example:
|
|
|
+ Important: the -rootdir option assumes ‘${targetdir}’ and
|
|
|
+‘${packagedir}’. See the following example:
|
|
|
|
|
|
qi install --rootdir=/home/selk lzip_1.21_i586-1@compressors.tlz
|
|
|
|
|
|
The content of "lzip_1.21_i586-1@compressors.tlz" will be
|
|
|
-decompressed into '/home/selk/pkgs/lzip_1.21_i586-1@compressors'.
|
|
|
+decompressed into ‘/home/selk/pkgs/lzip_1.21_i586-1@compressors’.
|
|
|
Assuming that the main binary for lzip is under
|
|
|
-'/home/selk/pkgs/lzip_1.21_i586-1@compressors/usr/bin/' the target for
|
|
|
-"usr/bin" will be created at '/home/selk'. Considering that you have
|
|
|
-exported the 'PATH' as '${HOME}/usr/bin', now the system is able to see
|
|
|
+‘/home/selk/pkgs/lzip_1.21_i586-1@compressors/usr/bin/’ the target for
|
|
|
+"usr/bin" will be created at ‘/home/selk’. Considering that you have
|
|
|
+exported the ‘PATH’ as ‘${HOME}/usr/bin’, now the system is able to see
|
|
|
the recent lzip command.
|
|
|
|
|
|
Installing from a list of packages using standard input:
|
|
@@ -412,8 +412,8 @@ To remove a package, simply type:
|
|
|
|
|
|
qi remove xz_5.2.4_i586-1@compressors.tlz
|
|
|
|
|
|
-Remove command will match the package name using '${packagedir}' as
|
|
|
-prefix. For example, if the value of '${packagedir}' has been set to
|
|
|
+Remove command will match the package name using ‘${packagedir}’ as
|
|
|
+prefix. For example, if the value of ‘${packagedir}’ has been set to
|
|
|
/usr/pkg, this will be equal to:
|
|
|
|
|
|
qi remove /usr/pkg/xz_5.2.4_i586-1@compressors
|
|
@@ -425,7 +425,7 @@ Detailed output:
|
|
|
A second -verbose or -v option gives more (very verbose).
|
|
|
|
|
|
By default the remove command does not preserve a package directory
|
|
|
-after removing its links from '${targetdir}', but this behavior can be
|
|
|
+after removing its links from ‘${targetdir}’, but this behavior can be
|
|
|
changed if the -keep option is passed:
|
|
|
|
|
|
qi remove --keep /usr/pkg/lzip_1.21_i586-1@compressors
|
|
@@ -449,7 +449,7 @@ Removing a package using standard input:
|
|
|
|
|
|
The upgrade command inherits the properties of the installation and
|
|
|
removal process. To make sure that a package is updated, the package is
|
|
|
-installed in a temporary directory taking '${packagedir}' into account.
|
|
|
+installed in a temporary directory taking ‘${packagedir}’ into account.
|
|
|
Once the incoming package is pre-installed, qi can proceed to search and
|
|
|
delete packages that have the same name (considered as previous ones).
|
|
|
Finally, the package is re-installed at its final location and the
|
|
@@ -501,8 +501,8 @@ ones, such as the C library.
|
|
|
The blacklist is related to the upgrade command only, consists in
|
|
|
installing a package instead of updating it or removing previous
|
|
|
versions of it; the content of the package will be updated over the
|
|
|
-existing content at '${packagedir}', while the existing links from
|
|
|
-'${targetdir}' will be preserved. A pruning of links will be carried
|
|
|
+existing content at ‘${packagedir}’, while the existing links from
|
|
|
+‘${targetdir}’ will be preserved. A pruning of links will be carried
|
|
|
out in order to re-link possible differences with the recent content,
|
|
|
this helps to avoid leaving dead links in the target directory.
|
|
|
|
|
@@ -510,7 +510,7 @@ Package names for the blacklist to be declared must be set from the
|
|
|
configuration file. By default, it is declared using the package name,
|
|
|
which is more than enough for critical system packages, but if you want
|
|
|
to be more specific, you can declare a package using:
|
|
|
-'${pkgname}_${pkgversion}_${arch}-${release}' where the package category
|
|
|
+‘${pkgname}_${pkgversion}_${arch}-${release}’ where the package category
|
|
|
is avoided for common matching. See *note Special variables: Recipes.
|
|
|
for a description of these variables.
|
|
|
|
|
@@ -542,9 +542,9 @@ sections. By convention, the syntax of a section is:
|
|
|
The section name is followed by parentheses, one newline and an
|
|
|
opening brace. The line finishing the section contains just a closing
|
|
|
brace. The section names or the function names currently recognized are
|
|
|
-'build'.
|
|
|
+‘build’.
|
|
|
|
|
|
- The 'build' section (or *shell function*) is an augmented shell
|
|
|
+ The ‘build’ section (or *shell function*) is an augmented shell
|
|
|
script that contains the main instructions to build software from
|
|
|
source.
|
|
|
|
|
@@ -554,7 +554,7 @@ for later execution.
|
|
|
5.1 Variables
|
|
|
=============
|
|
|
|
|
|
-A "variable" is a *shell variable* defined either in 'qirc' or in a
|
|
|
+A "variable" is a *shell variable* defined either in ‘qirc’ or in a
|
|
|
recipe to represent a string of text, called the variable's "value".
|
|
|
These values are substituted by explicit request in the definitions of
|
|
|
other variables or in calls to external commands.
|
|
@@ -565,78 +565,78 @@ directories to write output to, or anything else you can imagine.
|
|
|
|
|
|
Definitions of variables in qi have four levels of precedence.
|
|
|
Options which define variables from the command-line override those
|
|
|
-specified in the 'qirc' file, while variables defined in the recipe
|
|
|
-override those specified in 'qirc', taking priority over those variables
|
|
|
+specified in the ‘qirc’ file, while variables defined in the recipe
|
|
|
+override those specified in ‘qirc’, taking priority over those variables
|
|
|
set by command-line options. Finally, the variables have default values
|
|
|
if they are not defined anywhere.
|
|
|
|
|
|
Options that set variables through the command-line can only
|
|
|
-reference variables defined in 'qirc' and variables with default values.
|
|
|
+reference variables defined in ‘qirc’ and variables with default values.
|
|
|
|
|
|
- Definitions of variables in 'qirc' can only reference variables
|
|
|
-previously defined in 'qirc' and variables with default values.
|
|
|
+ Definitions of variables in ‘qirc’ can only reference variables
|
|
|
+previously defined in ‘qirc’ and variables with default values.
|
|
|
|
|
|
Definitions of variables in the recipe can only reference variables
|
|
|
set by the command-line, variables previously defined in the recipe,
|
|
|
-variables defined in 'qirc', and variables with default values.
|
|
|
+variables defined in ‘qirc’, and variables with default values.
|
|
|
|
|
|
5.2 Special variables
|
|
|
=====================
|
|
|
|
|
|
There are variables which can only be set using the command line options
|
|
|
-or via 'qirc', there are other special variables which can be defined or
|
|
|
+or via ‘qirc’, there are other special variables which can be defined or
|
|
|
redefined in a recipe. See the following definitions:
|
|
|
|
|
|
- 'outdir' is the directory where the packages produced are written.
|
|
|
+ ‘outdir’ is the directory where the packages produced are written.
|
|
|
This variable can be redefined per-recipe. Default sets to
|
|
|
-'/var/cache/qi/packages'.
|
|
|
+‘/var/cache/qi/packages’.
|
|
|
|
|
|
- 'worktree' is the working tree where archives, patches, and recipes
|
|
|
+ ‘worktree’ is the working tree where archives, patches, and recipes
|
|
|
are expected. This variable can not be redefined in the recipe.
|
|
|
-Default sets to '/usr/src/qi'.
|
|
|
+Default sets to ‘/usr/src/qi’.
|
|
|
|
|
|
- 'tardir' is defined in the recipe to the directory where the tarball
|
|
|
+ ‘tardir’ is defined in the recipe to the directory where the tarball
|
|
|
containing the source can be found. The full name of the tarball is
|
|
|
-composed as '${tardir}/$tarname'. Its value is available in the recipe
|
|
|
-as '${tardir}'; a value of . for 'tardir' sets it to the value of CWD
|
|
|
+composed as ‘${tardir}/$tarname’. Its value is available in the recipe
|
|
|
+as ‘${tardir}’; a value of . for ‘tardir’ sets it to the value of CWD
|
|
|
(Current Working Directory), this is where the recipe lives.
|
|
|
|
|
|
- 'arch' is the architecture to compose the package name. Its value is
|
|
|
-available in the recipe as '${arch}'. Default value is the one that was
|
|
|
+ ‘arch’ is the architecture to compose the package name. Its value is
|
|
|
+available in the recipe as ‘${arch}’. Default value is the one that was
|
|
|
set in the Qi configuration.
|
|
|
|
|
|
- 'jobs' is the number of parallel jobs to pass to the compiler. Its
|
|
|
-value is available in the recipe as '${jobs}'. The default value is 1.
|
|
|
+ ‘jobs’ is the number of parallel jobs to pass to the compiler. Its
|
|
|
+value is available in the recipe as ‘${jobs}’. The default value is 1.
|
|
|
|
|
|
- The two variables '${srcdir}' and '${destdir}' can be set in the
|
|
|
+ The two variables ‘${srcdir}’ and ‘${destdir}’ can be set in the
|
|
|
recipe, as any other variable, but if they are not, qi uses default
|
|
|
values for them when building a package.
|
|
|
|
|
|
- 'srcdir' contains the source code to be compiled, and defaults to
|
|
|
-'${program}-${version}'. 'destdir' is the place where the built package
|
|
|
-will be installed, and defaults to '${TMPDIR}/package-${program}'.
|
|
|
+ ‘srcdir’ contains the source code to be compiled, and defaults to
|
|
|
+‘${program}-${version}’. ‘destdir’ is the place where the built package
|
|
|
+will be installed, and defaults to ‘${TMPDIR}/package-${program}’.
|
|
|
|
|
|
- If 'pkgname' is left undefined, the special variable 'program' is
|
|
|
-assigned by default. If 'pkgversion' is left undefined, the special
|
|
|
-variable 'version' is assigned by default.
|
|
|
+ If ‘pkgname’ is left undefined, the special variable ‘program’ is
|
|
|
+assigned by default. If ‘pkgversion’ is left undefined, the special
|
|
|
+variable ‘version’ is assigned by default.
|
|
|
|
|
|
- 'pkgname' and 'pkgversion' along with: 'version', 'arch', 'release',
|
|
|
-and (optionally) 'pkgcategory' are used to produce the package name in
|
|
|
+ ‘pkgname’ and ‘pkgversion’ along with: ‘version’, ‘arch’, ‘release’,
|
|
|
+and (optionally) ‘pkgcategory’ are used to produce the package name in
|
|
|
the form:
|
|
|
-'${pkgname}_${pkgversion}_${arch}-${release}[@${pkgcategory}].tlz'
|
|
|
+‘${pkgname}_${pkgversion}_${arch}-${release}[@${pkgcategory}].tlz’
|
|
|
|
|
|
- 'pkgcategory' is an optional special variable that can be defined on
|
|
|
+ ‘pkgcategory’ is an optional special variable that can be defined on
|
|
|
the recipe to categorize the package name. If it is defined, then the
|
|
|
package output will be composed as
|
|
|
-'${pkgname}_${pkgversion}_${arch}-${release}[@${pkgcategory}.tlz'.
|
|
|
-Automatically, the value of 'pkgcategory' will be prefixed using the '@'
|
|
|
+‘${pkgname}_${pkgversion}_${arch}-${release}[@${pkgcategory}.tlz’.
|
|
|
+Automatically, the value of ‘pkgcategory’ will be prefixed using the ‘@’
|
|
|
(at) symbol which will be added to the last part of the package name.
|
|
|
|
|
|
- A special variable called 'replace' can be used to declare package
|
|
|
+ A special variable called ‘replace’ can be used to declare package
|
|
|
names that will be replaced at installation time.
|
|
|
|
|
|
- The special variables 'keep_srcdir' and 'keep_destdir' are provided
|
|
|
-in order to preserve the directories '${srcdir}' or '${destdir}', if
|
|
|
+ The special variables ‘keep_srcdir’ and ‘keep_destdir’ are provided
|
|
|
+in order to preserve the directories ‘${srcdir}’ or ‘${destdir}’, if
|
|
|
those exists as such. Note: The declaration of these variables are
|
|
|
subject to manual deactivation; its purpose in recipes is to preserve
|
|
|
the directories that relate to the package's build (source) and
|
|
@@ -656,19 +656,19 @@ must deactivate the variables at the end:
|
|
|
This will leave the 'keep_srcdir' and 'keep_destdir' variables blank
|
|
|
to continue with the rest of the recipes.
|
|
|
|
|
|
- The special variable 'opt_skiprecipe' is available when you need to
|
|
|
+ The special variable ‘opt_skiprecipe’ is available when you need to
|
|
|
ignore a recipe cleanly, continuing with the next recipe. May you add a
|
|
|
-conditional test then set it as 'opt_skiprecipe=opt_skiprecipe'.
|
|
|
+conditional test then set it as ‘opt_skiprecipe=opt_skiprecipe’.
|
|
|
|
|
|
- The variable 'tarlz_compression_options' can be used to change the
|
|
|
-default compression options in tarlz(1), default sets to '-9 --solid'.
|
|
|
+ The variable ‘tarlz_compression_options’ can be used to change the
|
|
|
+default compression options in tarlz(1), default sets to ‘-9 --solid’.
|
|
|
For example if the variable is declared as:
|
|
|
|
|
|
tarlz_compression_options="-0 --bsolid"
|
|
|
|
|
|
- It will change the granularity of tarlz(1) by using the '--bsolid'
|
|
|
+ It will change the granularity of tarlz(1) by using the ‘--bsolid’
|
|
|
option (1), as well as increasing the compression speed by lowering the
|
|
|
-compression level with '-0'.
|
|
|
+compression level with ‘-0’.
|
|
|
|
|
|
This is only recommended for recipes where testing, or faster
|
|
|
processing is desired to create the packaged file more quickly. It is
|
|
@@ -677,50 +677,50 @@ packages.
|
|
|
|
|
|
A typical recipe contains the following variables:
|
|
|
|
|
|
- * 'program': Software name.
|
|
|
+ • ‘program’: Software name.
|
|
|
|
|
|
It matches the source name. It is also used to compose the name of
|
|
|
- the package if '${pkgname}' is not specified.
|
|
|
+ the package if ‘${pkgname}’ is not specified.
|
|
|
|
|
|
- * 'version': Software version.
|
|
|
+ • ‘version’: Software version.
|
|
|
|
|
|
It matches the source name. It is also used to compose the version
|
|
|
- of the package if '${pkgversion}' is not specified.
|
|
|
+ of the package if ‘${pkgversion}’ is not specified.
|
|
|
|
|
|
- * 'arch': Software architecture.
|
|
|
+ • ‘arch’: Software architecture.
|
|
|
|
|
|
It is used to compose the architecture of the package in which it
|
|
|
is build.
|
|
|
|
|
|
- * 'release': Release number.
|
|
|
+ • ‘release’: Release number.
|
|
|
|
|
|
This is used to reflect the release number of the package. It is
|
|
|
recommended to increase this number after any significant change in
|
|
|
the recipe or post-install script.
|
|
|
|
|
|
- * 'pkgcategory': Package category.
|
|
|
+ • ‘pkgcategory’: Package category.
|
|
|
|
|
|
Optional but recommended variable to categorize the package name
|
|
|
when it is created.
|
|
|
|
|
|
Obtaining sources over the network must be declared in the recipe using
|
|
|
-the 'fetch' variable.
|
|
|
+the ‘fetch’ variable.
|
|
|
|
|
|
- The variables 'netget' and 'rsync' can be defined in 'qirc' to
|
|
|
+ The variables ‘netget’ and ‘rsync’ can be defined in ‘qirc’ to
|
|
|
establish a network downloader in order to get the sources. If they are
|
|
|
not defined, qi uses default values:
|
|
|
|
|
|
- 'netget' is the general network downloader tool, defaults sets to
|
|
|
-'wget2 -c -w1 -t3 --no-check-certificate'.
|
|
|
+ ‘netget’ is the general network downloader tool, defaults sets to
|
|
|
+‘wget2 -c -w1 -t3 --no-check-certificate’.
|
|
|
|
|
|
- 'rsync' is the network tool for sources containing the prefix for the
|
|
|
-RSYNC protocol, default sets to 'rsync -v -a -L -z -i --progress'.
|
|
|
+ ‘rsync’ is the network tool for sources containing the prefix for the
|
|
|
+RSYNC protocol, default sets to ‘rsync -v -a -L -z -i --progress’.
|
|
|
|
|
|
- The variable 'description' is used to print the package description
|
|
|
+ The variable ‘description’ is used to print the package description
|
|
|
when a package is installed.
|
|
|
|
|
|
A description has two parts: a brief description, and a long
|
|
|
-description. By convention, the syntax of 'description' is:
|
|
|
+description. By convention, the syntax of ‘description’ is:
|
|
|
|
|
|
description="
|
|
|
Brief description.
|
|
@@ -747,12 +747,12 @@ An example looks like:
|
|
|
the same one would be used on the meta file creation. See *note The
|
|
|
meta file: Recipes. section.
|
|
|
|
|
|
- The 'homepage' variable is used to declare the main site or home
|
|
|
+ The ‘homepage’ variable is used to declare the main site or home
|
|
|
page:
|
|
|
|
|
|
homepage=https://www.gnu.org/software/gcc
|
|
|
|
|
|
- The variable 'license' is used for license information(2). Some code
|
|
|
+ The variable ‘license’ is used for license information(2). Some code
|
|
|
in the program can be covered by license A, license B, or license C. For
|
|
|
"separate licensing" or "heterogeneous licensing", we suggest using *|*
|
|
|
for a disjunction, *&* for a conjunction (if that ever happens in a
|
|
@@ -769,10 +769,10 @@ this doesn't mean you can't use it in another distribution, just that if
|
|
|
you do, you'll have to try it out for yourself. To help with this, here
|
|
|
are some references to well-written recipes:
|
|
|
|
|
|
- * <https://git.savannah.nongnu.org/cgit/dragora.git/tree/recipes>
|
|
|
- * <https://notabug.org/dragora/dragora/src/master/recipes>
|
|
|
- * <https://notabug.org/dragora/dragora-extras/src/master/recipes>
|
|
|
- *
|
|
|
+ • <https://git.savannah.nongnu.org/cgit/dragora.git/tree/recipes>
|
|
|
+ • <https://notabug.org/dragora/dragora/src/master/recipes>
|
|
|
+ • <https://notabug.org/dragora/dragora-extras/src/master/recipes>
|
|
|
+ •
|
|
|
<https://git.savannah.nongnu.org/cgit/dragora/dragora-extras.git/tree/recipes>
|
|
|
|
|
|
5.4 Building packages
|
|
@@ -788,7 +788,7 @@ recipe, the order in which qi looks for a recipe is:
|
|
|
name.
|
|
|
|
|
|
3. If the recipe is not in the current working directory, it will be
|
|
|
- searched under '${worktree}/recipes'. The last component will be
|
|
|
+ searched under ‘${worktree}/recipes’. The last component will be
|
|
|
completed adding "recipe" to the specified path name.
|
|
|
|
|
|
To build a single package, type:
|
|
@@ -826,17 +826,17 @@ output to tee(1).
|
|
|
|
|
|
Qi has environment variables which can be used at build time:
|
|
|
|
|
|
- The variable 'TMPDIR' sets the temporary directory for sources, which
|
|
|
+ The variable ‘TMPDIR’ sets the temporary directory for sources, which
|
|
|
is used for package extractions (see *note Examining packages::) and is
|
|
|
-prepended to the value of '${srcdir}' and '${destdir}' in build command.
|
|
|
-By convention its default value is equal to '/usr/src/qi/build'.
|
|
|
+prepended to the value of ‘${srcdir}’ and ‘${destdir}’ in build command.
|
|
|
+By convention its default value is equal to ‘/usr/src/qi/build’.
|
|
|
|
|
|
- The variables 'QICFLAGS', 'QICXXFLAGS', 'QILDFLAGS', and 'QICPPFLAGS'
|
|
|
-have no effect by default. The environment variables such as 'CFLAGS',
|
|
|
-'CXXFLAGS', 'LDFLAGS', and 'CPPFLAGS' are unset at compile time:
|
|
|
+ The variables ‘QICFLAGS’, ‘QICXXFLAGS’, ‘QILDFLAGS’, and ‘QICPPFLAGS’
|
|
|
+have no effect by default. The environment variables such as ‘CFLAGS’,
|
|
|
+‘CXXFLAGS’, ‘LDFLAGS’, and ‘CPPFLAGS’ are unset at compile time:
|
|
|
|
|
|
Recommended practice is to set variables in the command line of
|
|
|
-'configure' or _make(1)_ instead of exporting to the environment. As
|
|
|
+‘configure’ or _make(1)_ instead of exporting to the environment. As
|
|
|
follows:
|
|
|
|
|
|
<https://www.gnu.org/software/make/manual/html_node/Environment.html>
|
|
@@ -853,25 +853,25 @@ running configure in varying environments can be dangerous.
|
|
|
environment passed to configure. However, some packages may run
|
|
|
configure again during the build, and the customized values of
|
|
|
these variables may be lost. In order to avoid this problem, you
|
|
|
- should set them in the configure command line, using 'VAR=value'.
|
|
|
+ should set them in the configure command line, using ‘VAR=value’.
|
|
|
For example:
|
|
|
|
|
|
- './configure CC=/usr/local2/bin/gcc'
|
|
|
+ ‘./configure CC=/usr/local2/bin/gcc’
|
|
|
|
|
|
<https://www.gnu.org/savannah-checkouts/gnu/autoconf/manual/autoconf-2.69/html_node/Setting-Output-Variables.html>
|
|
|
- If for instance the user runs 'CC=bizarre-cc ./configure', then the
|
|
|
+ If for instance the user runs ‘CC=bizarre-cc ./configure’, then the
|
|
|
cache, config.h, and many other output files depend upon bizarre-cc
|
|
|
being the C compiler. If for some reason the user runs ./configure
|
|
|
- again, or if it is run via './config.status --recheck', (See
|
|
|
+ again, or if it is run via ‘./config.status --recheck’, (See
|
|
|
Automatic Remaking, and see config.status Invocation), then the
|
|
|
configuration can be inconsistent, composed of results depending
|
|
|
upon two different compilers. [...] Indeed, while configure can
|
|
|
- notice the definition of CC in './configure CC=bizarre-cc', it is
|
|
|
- impossible to notice it in 'CC=bizarre-cc ./configure', which,
|
|
|
+ notice the definition of CC in ‘./configure CC=bizarre-cc’, it is
|
|
|
+ impossible to notice it in ‘CC=bizarre-cc ./configure’, which,
|
|
|
unfortunately, is what most users do. [...] configure: error:
|
|
|
changes in the environment can compromise the build.
|
|
|
|
|
|
- If the 'SOURCE_DATE_EPOCH' environment variable is set to a UNIX
|
|
|
+ If the ‘SOURCE_DATE_EPOCH’ environment variable is set to a UNIX
|
|
|
timestamp (defined as the number of seconds, excluding leap seconds,
|
|
|
since 01 Jan 1970 00:00:00 UTC.); then the given timestamp will be used
|
|
|
to overwrite any newer timestamps on the package contents (when it is
|
|
@@ -885,7 +885,7 @@ The "meta file" is a regular file created during the build process, it
|
|
|
contains information about the package such as package name, package
|
|
|
version, architecture, release, fetch address, description, and other
|
|
|
minor data extracted from processed recipes. The name of the file is
|
|
|
-generated as '${full_pkgname}.tlz.txt', and its purpose is to reflect
|
|
|
+generated as ‘${full_pkgname}.tlz.txt’, and its purpose is to reflect
|
|
|
essential information to the user without having to look inside the
|
|
|
package content. The file format is also intended to be used by other
|
|
|
scripts or by common Unix tools.
|
|
@@ -919,28 +919,28 @@ scripts or by common Unix tools.
|
|
|
fetch="https://ftp.gnu.org/gnu/gawk/gawk-5.0.1.tar.lz"
|
|
|
replace=""
|
|
|
|
|
|
- A package descriptions is extracted from the variable 'description'
|
|
|
+ A package descriptions is extracted from the variable ‘description’
|
|
|
where each line is interpreted literally and pre-formatted to fit in
|
|
|
-(exactly) *80 columns*, plus the character '#' and a blank space is
|
|
|
+(exactly) *80 columns*, plus the character ‘#’ and a blank space is
|
|
|
prefixed to every line (shell comments).
|
|
|
|
|
|
In addition to the Special variables, there are implicit variables such
|
|
|
-as 'blurb':
|
|
|
+as ‘blurb’:
|
|
|
|
|
|
- The 'blurb' variable is related to the special variable
|
|
|
-'description'. Its value is made from the first (substantial) line of
|
|
|
-'description', mentioned as the "brief description".
|
|
|
+ The ‘blurb’ variable is related to the special variable
|
|
|
+‘description’. Its value is made from the first (substantial) line of
|
|
|
+‘description’, mentioned as the "brief description".
|
|
|
|
|
|
- The build flags such as 'QICFLAGS', 'QICXXFLAGS', 'QILDFLAGS', and
|
|
|
-'QICPPFLAGS' are only added to the meta file if the declared variable
|
|
|
-'arch' is not equal to the "noarch" value.
|
|
|
+ The build flags such as ‘QICFLAGS’, ‘QICXXFLAGS’, ‘QILDFLAGS’, and
|
|
|
+‘QICPPFLAGS’ are only added to the meta file if the declared variable
|
|
|
+‘arch’ is not equal to the "noarch" value.
|
|
|
|
|
|
---------- Footnotes ----------
|
|
|
|
|
|
- (1) About the '--bsolid' granularity option of tarlz(1),
|
|
|
+ (1) About the ‘--bsolid’ granularity option of tarlz(1),
|
|
|
<https://www.nongnu.org/lzip/manual/tarlz_manual.html#g_t_002d_002dbsolid>.
|
|
|
|
|
|
- (2) The proposal for 'license' was made by Richard M. Stallman at
|
|
|
+ (2) The proposal for ‘license’ was made by Richard M. Stallman at
|
|
|
<https://lists.gnu.org/archive/html/gnu-linux-libre/2016-05/msg00003.html>.
|
|
|
|
|
|
|
|
@@ -970,7 +970,7 @@ right to left, and removed from left to right:
|
|
|
a
|
|
|
|
|
|
Blank lines, colons and parentheses are simply ignored. Comment
|
|
|
-lines beginning with '#' are allowed.
|
|
|
+lines beginning with ‘#’ are allowed.
|
|
|
|
|
|
An order file could be used to build a series of packages, for example,
|
|
|
if the content is:
|
|
@@ -985,7 +985,7 @@ if the content is:
|
|
|
|
|
|
qi order imglibs.order | qi build --install -
|
|
|
|
|
|
- The output of 'qi order imglibs.order' tells to qi in which order it
|
|
|
+ The output of ‘qi order imglibs.order’ tells to qi in which order it
|
|
|
should build the recipes:
|
|
|
|
|
|
devel/nasm
|
|
@@ -1017,7 +1017,7 @@ full name: name-version-architecture-release[@pkgcategory].tlz
|
|
|
qi create /var/cache/qi/packages/claws-mail_3.17.1_amd64-1@x-apps
|
|
|
|
|
|
In this case, the package "claws-mail_3.17.1_amd64-1@x-apps" will be
|
|
|
-written into '/var/cache/qi/packages/'.
|
|
|
+written into ‘/var/cache/qi/packages/’.
|
|
|
|
|
|
All packages produced are complemented by a checksum file (.sha256).
|
|
|
|
|
@@ -1045,7 +1045,7 @@ requested the action, creation operation will be equal to *u=rwx,g=,o=
|
|
|
to deploy the content will be equal to *u=rwx,g=rwx,o=rwx (0000)*.
|
|
|
|
|
|
Note: the creation of the custom directory is influenced by the value of
|
|
|
-the 'TMPDIR' variable.
|
|
|
+the ‘TMPDIR’ variable.
|
|
|
|
|
|
|
|
|
File: qi.info, Node: Qi exit status, Next: Index, Prev: Examining packages, Up: Top
|
|
@@ -1055,71 +1055,71 @@ File: qi.info, Node: Qi exit status, Next: Index, Prev: Examining packages,
|
|
|
|
|
|
All the exit codes are described in this chapter.
|
|
|
|
|
|
-'0'
|
|
|
+‘0’
|
|
|
Successful completion (no errors).
|
|
|
|
|
|
-'1'
|
|
|
+‘1’
|
|
|
Minor common errors:
|
|
|
|
|
|
- * Help usage on invalid options or required arguments.
|
|
|
+ • Help usage on invalid options or required arguments.
|
|
|
|
|
|
- * Program needed by qi (prerequisite) is not available.
|
|
|
+ • Program needed by qi (prerequisite) is not available.
|
|
|
|
|
|
-'2'
|
|
|
+‘2’
|
|
|
Command execution error:
|
|
|
|
|
|
This code is used to return the evaluation of an external command
|
|
|
or shell arguments in case of failure.
|
|
|
|
|
|
-'3'
|
|
|
+‘3’
|
|
|
Integrity check error for compressed files.
|
|
|
|
|
|
Compressed files means:
|
|
|
|
|
|
- * A tarball file from tar(1), typically handled by the GNU tar
|
|
|
+ • A tarball file from tar(1), typically handled by the GNU tar
|
|
|
implementation. Supported extensions: .tar, .tar.gz, .tgz,
|
|
|
.tar.Z, .tar.bz2, .tbz2, .tbz, .tar.xz, .txz, .tar.zst, .tzst
|
|
|
|
|
|
- * A tarball file from tarlz(1). Supported extensions: .tar.lz,
|
|
|
+ • A tarball file from tarlz(1). Supported extensions: .tar.lz,
|
|
|
.tlz
|
|
|
|
|
|
- * Zip files from unzip(1). Supported extensions: .zip, .ZIP
|
|
|
+ • Zip files from unzip(1). Supported extensions: .zip, .ZIP
|
|
|
|
|
|
- * Gzip files from gzip(1). Supported extensions: .gz, .Z
|
|
|
+ • Gzip files from gzip(1). Supported extensions: .gz, .Z
|
|
|
|
|
|
- * Bzip2 files from bzip2(1). Supported extension: .bz2
|
|
|
+ • Bzip2 files from bzip2(1). Supported extension: .bz2
|
|
|
|
|
|
- * Lzip files from lzip(1). Supported extension: .lz
|
|
|
+ • Lzip files from lzip(1). Supported extension: .lz
|
|
|
|
|
|
- * Xz files from xz(1). Supported extension: .xz
|
|
|
+ • Xz files from xz(1). Supported extension: .xz
|
|
|
|
|
|
- * Zstd files from zstd(1). Supported extension: .zst
|
|
|
+ • Zstd files from zstd(1). Supported extension: .zst
|
|
|
|
|
|
-'4'
|
|
|
+‘4’
|
|
|
File empty, not regular, or expected.
|
|
|
|
|
|
It's commonly expected:
|
|
|
|
|
|
- * An argument for giving commands.
|
|
|
+ • An argument for giving commands.
|
|
|
|
|
|
- * A regular file or readable directory.
|
|
|
+ • A regular file or readable directory.
|
|
|
|
|
|
- * An expected extension: .tlz, .sha256, .order.
|
|
|
+ • An expected extension: .tlz, .sha256, .order.
|
|
|
|
|
|
- * A protocol supported by the network downloader tool.
|
|
|
+ • A protocol supported by the network downloader tool.
|
|
|
|
|
|
-'5'
|
|
|
+‘5’
|
|
|
Empty or not defined variable:
|
|
|
|
|
|
This code is used to report empty or undefined variables (usually
|
|
|
variables coming from a recipe or assigned arrays that are tested).
|
|
|
|
|
|
-'6'
|
|
|
+‘6’
|
|
|
Package already installed:
|
|
|
|
|
|
The package directory for an incoming .tlz package already exists.
|
|
|
|
|
|
-'10'
|
|
|
+‘10’
|
|
|
Network manager error:
|
|
|
|
|
|
This code is used if the network downloader tool fails for some
|
|
@@ -1158,25 +1158,25 @@ Index
|
|
|
|
|
|
|
|
|
Tag Table:
|
|
|
-Node: Top567
|
|
|
-Node: Introduction to Qi1551
|
|
|
-Node: Invoking qi2755
|
|
|
-Node: The qirc file7600
|
|
|
-Node: Packages8564
|
|
|
-Ref: Packages-Footnote-116600
|
|
|
-Ref: Packages-Footnote-216702
|
|
|
-Node: Recipes16816
|
|
|
-Ref: Recipes-Footnote-133481
|
|
|
-Ref: Recipes-Footnote-233618
|
|
|
-Node: Order files33764
|
|
|
-Node: Creating packages35085
|
|
|
-Node: Examining packages36073
|
|
|
-Node: Qi exit status36991
|
|
|
-Node: Index39000
|
|
|
+Node: Top568
|
|
|
+Node: Introduction to Qi1552
|
|
|
+Node: Invoking qi2756
|
|
|
+Node: The qirc file7861
|
|
|
+Node: Packages8861
|
|
|
+Ref: Packages-Footnote-116983
|
|
|
+Ref: Packages-Footnote-217085
|
|
|
+Node: Recipes17199
|
|
|
+Ref: Recipes-Footnote-134306
|
|
|
+Ref: Recipes-Footnote-234447
|
|
|
+Node: Order files34597
|
|
|
+Node: Creating packages35926
|
|
|
+Node: Examining packages36918
|
|
|
+Node: Qi exit status37840
|
|
|
+Node: Index39909
|
|
|
|
|
|
End Tag Table
|
|
|
|
|
|
|
|
|
Local Variables:
|
|
|
-coding: iso-8859-1
|
|
|
+coding: utf-8
|
|
|
End:
|