dpkg-buildflags(1) | dpkg suite | dpkg-buildflags(1) |
NOM¶
dpkg-buildflags - Renvoie les options de compilation à utiliser pour la construction du paquet
SYNOPSIS¶
dpkg-buildflags [option...] [commande]
DESCRIPTION¶
dpkg-buildflags est un script qui permet de récupérer les options de compilation à utiliser pour la construction d'un paquet.
Les drapeaux par défaut sont définis par le distributeur mais peuvent être étendus ou remplacés de plusieurs façons :
- 1.
- pour tout le système avec /etc/dpkg/buildflags.conf ;
- 2.
- pour l'utilisateur courant avec $XDG_CONFIG_HOME/dpkg/buildflags.conf où la valeur par défaut de $XDG_CONFIG_HOME est $HOME/.config ;
- 3.
- temporairement par l'utilisateur avec des variables d'environnement (voir VARIABLES D'ENVIRONNEMENT) ;
- 4.
- dynamiquement par le responsable du paquet avec des variables d'environnement à l'aide de debian/rules (voir VARIABLES D'ENVIRONNEMENT).
Les fichiers de configuration peuvent contenir quatre types de directives :
- SET drapeau valeur
- Remplace le drapeau drapeau par la valeur valeur.
- STRIP drapeau valeur
- Strip from the flag named flag all the build flags listed in value. Since dpkg 1.16.1.
- APPEND drapeau valeur
- Étend le drapeau drapeau avec les options indiquées dans valeur. Une espace est ajoutée au début de ce qui est ajouté si la valeur actuelle du drapeau n'est pas vide.
- PREPEND drapeau valeur
- Extend the flag named flag by prepending the options given in value. A space is appended to the prepended value if the flag's current value is non-empty. Since dpkg 1.16.1.
Les fichiers de configuration peuvent contenir des commentaires sur les lignes commençant par un dièse (#). Les lignes vides sont également ignorées.
This program was introduced in dpkg 1.15.7.
COMMANDES¶
- --dump
- Affiche sur la sortie standard tous les drapeaux de compilation et leurs valeurs. Un drapeau par ligne est affiché, suivi de sa valeur, séparée par le caractère « égal » (« drapeau=valeur »). Il s'agit de l'action par défaut.
- --list
- Affiche la liste des drapeaux gérés par le distributeur actuel (un par ligne). Voir la section DRAPEAUX GÉRÉS pour plus d'informations sur chacun d'eux.
- --status
- Display any information that can be useful to explain the behavior of
dpkg-buildflags (since dpkg 1.16.5): relevant environment
variables, current vendor, state of all feature flags. Also print the
resulting compiler flags with their origin.
Cette option est destinée à être utilisée depuis debian/rules, afin de garder dans le journal de construction une trace claire des drapeaux de compilation utilisés. Cela peut être utile pour diagnostiquer des problèmes qui y seraient liés.
- --export=format
- Affiche sur la sortie standard les commandes qui permettent d'exporter tous les drapeaux de compilation pour un outil particulier. Si format n'est pas spécifié, sa valeur est sh. Seuls les drapeaux de compilation commençant par une majuscule sont inclus, les autres étant supposés inadaptés à l'environnement. Formats pris en charge :
- sh
- Commandes shell pour définir et exporter tous les drapeaux de compilation dans l'environnement. Les valeurs drapeau sont protégées et ainsi la sortie est prête à être évaluée par un shell.
- cmdline
- Arguments à passer à la ligne de commande d'un programme de construction pour utiliser tous les drapeaux de compilation (depuis dpkg 1.17.0). Les valeurs drapeau sont protégées dans la syntaxe du shell.
- configure
- C'est un ancien alias pour cmdline.
- make
- Directives de make pour définir et exporter tous les drapeaux de compilation dans l'environnement. La sortie peut être écrite dans un fragment de Makefile et évaluée en utilisant une directive include.
- --get drapeau
- Affiche la valeur de ce drapeau sur la sortie standard. Retourne un code de sortie 0 si le drapeau est connu et 1 s'il est inconnu.
- --origin drapeau
- Affiche l'origine de la valeur renvoyée par --get. Retourne un code de sortie 0 si le drapeau est connu et 1 s'il est inconnu. L'origine est une des valeurs suivantes :
- vendor
- le drapeau défini à l'origine par le distributeur est renvoyé ;
- system
- le drapeau est placé ou modifié par un réglage système ;
- user
- le drapeau est placé ou modifié par une configuration spécifique à l'utilisateur ;
- env
- le drapeau est placé ou modifié par une configuration spécifique dans l'environnement.
- --query
- Print any information that can be useful to explain the behavior of the
program: current vendor, relevant environment variables, feature areas,
state of all feature flags, whether a feature is handled as a builtin
default by the compiler (since dpkg 1.21.14), and the compiler flags with
their origin (since dpkg 1.19.0).
Par exemple :
Vendor: Debian Environment: DEB_CFLAGS_SET=-O0 -Wall Area: qa Features: bug=no canary=no Builtins: Area: hardening Features: pie=no Builtins: pie=yes Area: reproducible Features: timeless=no Builtins: Flag: CFLAGS Value: -O0 -Wall Origin: env Flag: CPPFLAGS Value: -D_FORTIFY_SOURCE=2 Origin: vendor
- --query-features domaine
- Affiche les fonctionnalités activées pour un domaine
donné (depuis dpkg 1.16.2). Si la fonctionnalité est
gérée par le compilateur (même seulement sur quelques
architectures) comme une fonction par défaut, alors un champ
Builtin est affiché (depuis dpkg 1.21.14). Les seuls
domaines reconnus actuellement sur Debian et ses dérivés
sont future, qa, reproducible, sanitize et
hardening, voir la section ZONES D'OPTION pour plus de
détails. Renvoie un code de sortie 0 si le domaine est connu
et 1 s'il est inconnu.
L'affichage est dans le format RFC822, avec une section par fonctionnalité. Par exemple :
Feature: pie Enabled: yes Builtin: yes Feature: stackprotector Enabled: yes
- --help
- Afficher un message d'aide puis quitter.
- --version
- Afficher le numéro de version puis quitter.
DRAPEAUX GÉRÉS¶
- ASFLAGS
- Options de l'assembleur. Valeur par défaut : aucune. Depuis dpkg 1.21.0.
- CFLAGS
- Options du compilateur C. La valeur par défaut définie par le distributeur comporte -g et le niveau d'optimisation par défaut (-O2 en général, ou -O0 si la variable d'environnement DEB_BUILD_OPTIONS contient noopt).
- CPPFLAGS
- Options du préprocesseur C. Valeur par défaut : aucune.
- CXXFLAGS
- Options du compilateur C++. Analogue à CFLAGS.
- OBJCFLAGS
- Options for the Objective C compiler. Same as CFLAGS. Since dpkg 1.17.7.
- OBJCXXFLAGS
- Options for the Objective C++ compiler. Same as CXXFLAGS. Since dpkg 1.17.7.
- GCJFLAGS
- Options du compilateur Java GNU (gcj). Un sous-ensemble de CFLAGS.
- DFLAGS
- Options du compilateur D (ldc ou gdc). Depuis dpkg 1.20.6.
- FFLAGS
- Options du compilateur Fortran 77. Un sous-ensemble de CFLAGS.
- FCFLAGS
- Options for the Fortran 9x compiler. Same as FFLAGS. Since dpkg 1.17.7.
- LDFLAGS
- Options passées au compilateur lors du processus de liaison des exécutables ou des objets partagés (si le linker est appelé directement, alors -Wl et , doivent être retirés de ces options). Valeur par défaut : aucune.
De nouveaux drapeaux pourront être ajoutés si besoin est (par exemple pour la prise en charge de nouveaux langages).
ZONES D'OPTION¶
Chaque option de zone peut être activée ou désactivée avec les valeurs DEB_BUILD_OPTIONS et DEB_BUIL_MAINT_OPTIONS de l'espace de variables d'environnement grâce aux modificateurs « + » et « - ». Par exemple, pour activer l'option hardening « pie » et désactiver l'option « fortify », il est possible d'indiquer cela dans debian/rules :
export DEB_BUILD_MAINT_OPTIONS=hardening=+pie,-fortify
L'option spéciale all (valable dans toutes les zones) peut être utilisée pour activer ou désactiver toutes les options de la zone à la fois. Ainsi, tout désactiver dans la zone hardening en n'activant que « format » et « fortify » peut être réalisé avec :
export DEB_BUILD_MAINT_OPTIONS=hardening=-all,+format,+fortify
abi¶
Several compile-time options (detailed below) can be used to enable features that can change the ABI of a package, but cannot be enabled by default due to backwards compatibility reasons unless coordinated or checked individually.
- lfs
- This setting (since dpkg 1.22.0; disabled by default) enables Large File
Support on 32-bit architectures where their ABI does not include LFS by
default, by adding -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 to
CPPFLAGS.
When this feature is enabled it will override the value from the same feature in the future feature area.
- time64
- This setting (since dpkg 1.22.0; disabled by default) enables 64-bit time_t support on 32-bit architectures where their ABI does not include it by default, by adding -D_TIME_BITS=64 to CPPFLAGS. This setting automatically enables the lfs feature as it requires it.
future¶
Plusieurs options de compilation (détaillées ci-dessous) peuvent être utilisées pour activer des fonctionnalités qui devraient être activées par défaut, mais ne peuvent pas l'être pour des raisons de compatibilité avec les versions précédentes.
- lfs
- This setting (since dpkg 1.19.0; disabled by default) is now an alias for the lfs feature in the abi area, use that instead. The feature from the abi area overrides this setting.
qa¶
Plusieurs options de compilation (détaillées ci-dessous) peuvent être utilisées pour détecter des problèmes dans le code source ou dans le système de construction.
- bug
- This setting (since dpkg 1.17.4; disabled by default) adds any warning option that reliably detects problematic source code. The warnings are fatal. The only currently supported flags are CFLAGS and CXXFLAGS with flags set to -Werror=array-bounds, -Werror=clobbered, -Werror=implicit-function-declaration and -Werror=volatile-register-var.
- canary
- This setting (since dpkg 1.17.14; disabled by default) adds dummy canary options to the build flags, so that the build logs can be checked for how the build flags propagate and to allow finding any omission of normal build flag settings. The only currently supported flags are CPPFLAGS, CFLAGS, OBJCFLAGS, CXXFLAGS and OBJCXXFLAGS with flags set to -D__DEB_CANARY_flag_random-id__, and LDFLAGS set to -Wl,-z,deb-canary-random-id.
optimize¶
Plusieurs options de compilation (détaillées ci-dessous) peuvent être utilisées pour aider à optimiser un binaire produit (depuis dpkg 1.21.0). Note : activer toutes ces options peuvent aboutir à des objets binaires non-reproductibles.
- lto
- Ce réglage (depuis dpkg 1.21.0 ; désactivé par défaut) active « Link Time Optimization » en ajoutant -flto=auto -ffat-lto-objects à CFLAGS, CXXFLAGS, OBJCFLAGS, OBJCXXFLAGS, GCJFLAGS, FFLAGS, FCFLAGS et LDFLAGS.
sanitize¶
Plusieurs options de compilation (détaillées ci-dessous) peuvent être utilisées pour aider à nettoyer le binaire compilé face aux corruptions de la mémoire, aux fuites de mémoire, à l'utilisation de mémoire après libération et à des bogues au comportement indéfini. Note : ces options ne devraient pas être utilisées pour des constructions en production, car elles peuvent réduire la fiabilité du code, réduire la sécurité ou même les fonctionnalités.
- address
- This setting (since dpkg 1.18.0; disabled by default) adds -fsanitize=address to LDFLAGS and -fsanitize=address -fno-omit-frame-pointer to CFLAGS and CXXFLAGS.
- thread
- This setting (since dpkg 1.18.0; disabled by default) adds -fsanitize=thread to CFLAGS, CXXFLAGS and LDFLAGS.
- leak
- This setting (since dpkg 1.18.0; disabled by default) adds -fsanitize=leak to LDFLAGS. It gets automatically disabled if either the address or the thread features are enabled, as they imply it.
- undefined
- This setting (since dpkg 1.18.0; disabled by default) adds -fsanitize=undefined to CFLAGS, CXXFLAGS and LDFLAGS.
hardening¶
Plusieurs options de compilation (détaillées ci-dessous) peuvent être utilisées pour accroître la résistance du binaire compilé face aux attaques par corruption de la mémoire ou fournir des messages d'avertissement supplémentaires lors de la compilation. Sauf mention contraire (voir ci-dessous), ces options sont activées par défaut pour les architectures qui les gèrent.
- format
- This setting (since dpkg 1.16.1; enabled by default) adds -Wformat -Werror=format-security to CFLAGS, CXXFLAGS, OBJCFLAGS and OBJCXXFLAGS. This will warn about improper format string uses, and will fail when format functions are used in a way that represent possible security problems. At present, this warns about calls to printf and scanf functions where the format string is not a string literal and there are no format arguments, as in printf(foo); instead of printf("%s", foo); This may be a security hole if the format string came from untrusted input and contains ‘%n’.
- fortify
- This setting (since dpkg 1.16.1; enabled by default) adds
-D_FORTIFY_SOURCE=2 to CPPFLAGS. During code generation the
compiler knows a great deal of information about buffer sizes (where
possible), and attempts to replace insecure unlimited length buffer
function calls with length-limited ones. This is especially useful for
old, crufty code. Additionally, format strings in writable memory that
contain ‘%n’ are blocked. If an application depends on such
a format string, it will need to be worked around.
Veuillez noter que pour que cette option fasse effet, le source devra aussi être compilée avec -O1 ou plus. Si la variable d'environnement DEB_BUILD_OPTIONS contient noopt, la prise en charge de fortify sera désactivée du fait des nouveaux avertissements émis par la glibc version 2.16 et ultérieure.
- stackprotector
- This setting (since dpkg 1.16.1; enabled by default if
stackprotectorstrong is not in use) adds -fstack-protector
--param=ssp-buffer-size=4 to CFLAGS, CXXFLAGS,
OBJCFLAGS, OBJCXXFLAGS, GCJFLAGS, FFLAGS and
FCFLAGS. This adds safety checks against stack overwrites. This
renders many potential code injection attacks into aborting situations. In
the best case this turns code injection vulnerabilities into denial of
service or into non-issues (depending on the application).
Cette fonctionnalité impose de lier le code à la glibc (ou toute autre bibliothèque fournissant __stack_chk_fail) et doit donc être désactivée lorsque le code est construit avec -nostdlib, -ffreestanding ou équivalents.
- stackprotectorstrong
- This setting (since dpkg 1.17.11; enabled by default) adds
-fstack-protector-strong to CFLAGS, CXXFLAGS,
OBJCFLAGS, OBJCXXFLAGS, GCJFLAGS, FFLAGS and
FCFLAGS. This is a stronger variant of stackprotector, but
without significant performance penalties.
Désactiver stackprotector désactive également ce paramètre.
Cette fonctionnalité a les même exigences que stackprotector, en plus de nécessiter gcc 4.9 ou plus récent.
- stackclask
- This setting (since dpkg 1.22.0; enabled by default) adds -fstack-clash-protection on amd64, arm64, armhf and armel to CFLAGS, CXXFLAGS, OBJCFLAGS, OBJCXXFLAGS, GCJFLAGS, FFLAGS and FCFLAGS. This adds code to prevent stack clash style attacks.
- branch
- This setting (since dpkg 1.22.0; enabled by default) adds -fcf-protection on amd64 and -mbranch-protection=standard on arm64 to CFLAGS, CXXFLAGS, OBJCFLAGS, OBJCXXFLAGS, GCJFLAGS, FFLAGS and FCFLAGS. This adds branch protection to indirect calls, jumps and returns to check whether these are valid at run-time.
- relro
- This setting (since dpkg 1.16.1; enabled by default) adds -Wl,-z,relro to LDFLAGS. During program load, several ELF memory sections need to be written to by the linker. This flags the loader to turn these sections read-only before turning over control to the program. Most notably this prevents GOT overwrite attacks. If this option is disabled, bindnow will become disabled as well.
- bindnow
- This setting (since dpkg 1.16.1; disabled by default) adds -Wl,-z,now to LDFLAGS. During program load, all dynamic symbols are resolved, allowing for the entire PLT to be marked read-only (due to relro above). The option cannot become enabled if relro is not enabled.
- pie
- This setting (since dpkg 1.16.1; with no global default since dpkg
1.18.23, as it is enabled by default now by gcc on the amd64, arm64,
armel, armhf, hurd-i386, i386, kfreebsd-amd64, kfreebsd-i386, mips,
mipsel, mips64el, powerpc, ppc64, ppc64el, riscv64, s390x, sparc and
sparc64 Debian architectures) adds the required options to enable or
disable PIE via gcc specs files, if needed, depending on whether gcc
injects on that architecture the flags by itself or not. When the setting
is enabled and gcc injects the flags, it adds nothing. When the setting is
enabled and gcc does not inject the flags, it adds -fPIE (via
/usr/share/dpkg/pie-compiler.specs) to CFLAGS,
CXXFLAGS, OBJCFLAGS, OBJCXXFLAGS, GCJFLAGS,
FFLAGS and FCFLAGS, and -fPIE -pie (via
/usr/share/dpkg/pie-link.specs) to LDFLAGS. When the setting
is disabled and gcc injects the flags, it adds -fno-PIE (via
/usr/share/dpkg/no-pie-compile.specs) to CFLAGS,
CXXFLAGS, OBJCFLAGS, OBJCXXFLAGS, GCJFLAGS,
FFLAGS and FCFLAGS, and -fno-PIE -no-pie (via
/usr/share/dpkg/no-pie-link.specs) to LDFLAGS.
Les exécutables à position indépendante (« Position Independent Executable ») permettent d'utiliser la randomisation de l'organisation de l'espace d'adressage (ASLR : « Address Space Layout Randomization »), qui est gérée par certaines versions du noyau. Bien que ASLR puisse déjà être mise en œuvre pour les zones de données dans la pile et le tampon (brk et mmap), les zones de codes doivent être compilées comme indépendantes de la position. Les bibliothèques partagées font déjà cela (-fPIC) ce qui permet automatiquement d'utiliser ASLR. Par contre les régions .text binaires doivent être construites en mode PIE pour mettre en œuvre ASLR. Une fois cela réalisé, les attaques ROP (« Return Oriented Programming ») deviennent plus difficiles, car il n'existe pas d'emplacement statique d'où rebondir pendant une attaque par corruption de la mémoire.
PIE n'est pas compatible avec fPIC, aussi, en général, des précautions doivent être prises lors de la construction d'objets partagés. Mais comme les drapeaux PIE émis sont injectés par des fichiers de spécifications de gcc, il devrait toujours être sûr de les définir sans condition indépendamment du type d'objet en train d'être compilé ou lié.
Les bibliothèques statiques peuvent être utilisées par des programmes ou d'autres bibliothèques partagées. Selon les drapeaux utilisés pour compiler tous les objets d'une bibliothèque statique, ces bibliothèques seront utilisables par divers ensembles d'objets :
If there is a need to set these flags manually, bypassing the gcc specs injection, there are several things to take into account. Unconditionally and explicitly passing -fPIE, -fpie or -pie to a build-system using libtool is safe as these flags will get stripped when building shared libraries. Otherwise on projects that build both programs and shared libraries you might need to make sure that when building the shared libraries -fPIC is always passed last (so that it overrides any previous -PIE) to compilation flags such as CFLAGS, and -shared is passed last (so that it overrides any previous -pie) to linking flags such as LDFLAGS. Note: This should not be needed with the default gcc specs machinery.
De plus, comme la protection PIE est mise en œuvre à l'aide d'un registre global, certaines architectures privées de registre (mais plus i386 depuis les optimisations mises en œuvre dans gcc >= 5) peuvent souffrir de pertes de performances allant jusqu'à 15 % sur des charges d'applications utilisant largement les segments de texte ; le plus souvent, cette perte de performances n’excédera pas 1 %. Pour des architectures offrant plus de registres globaux (par exemple amd64), cette pénalisation n'existe pratiquement pas.
reproducible¶
Les options de compilation (détaillées ci-dessous) peuvent aider à améliorer la reproductibilité de la construction ou fournir des messages d'avertissement supplémentaires lors de la compilation. Sauf mention contraire (voir ci-dessous), ces options sont activées par défaut pour les architectures qui les gèrent.
- timeless
- This setting (since dpkg 1.17.14; enabled by default) adds -Wdate-time to CPPFLAGS. This will cause warnings when the __TIME__, __DATE__ and __TIMESTAMP__ macros are used.
- fixfilepath
- This setting (since dpkg 1.19.1; enabled by default) adds
-ffile-prefix-map=BUILDPATH=. to CFLAGS,
CXXFLAGS, OBJCFLAGS, OBJCXXFLAGS, GCJFLAGS,
FFLAGS and FCFLAGS where BUILDPATH is set to the
top-level directory of the package being built. This has the effect of
removing the build path from any generated file.
Si à la fois fixdebugpath et fixfilepath sont définis, cette option a la priorité parce c'est un sur-ensemble du premier.
Note: If the build process captures the build flags into the resulting built objects, that will make the package unreproducible. And while disabling this option might make some of the objects reproducible again this would also require disabling fixdebugpath, which might make any generated debug symbols objects unreproducible. The ideal fix is to stop capturing build flags.
- fixdebugpath
- This setting (since dpkg 1.18.5; enabled by default) adds
-fdebug-prefix-map=BUILDPATH=. to CFLAGS,
CXXFLAGS, OBJCFLAGS, OBJCXXFLAGS, GCJFLAGS,
FFLAGS and FCFLAGS where BUILDPATH is set to the
top-level directory of the package being built. This has the effect of
removing the build path from any generated debug symbols.
Note: This feature has similar reproducible properties as fixfilepath.
ENVIRONNEMENT¶
Deux jeux de variables d'environnement effectuent les mêmes opérations. Le premier (DEB_drapeau_opération) ne devrait jamais être utilisé depuis debian/rules. Il est destiné aux utilisateurs souhaitant recompiler le paquet source avec des drapeaux de compilation modifiés. Le second (DEB_drapeau_MAINT_opération) ne doit être utilisé que dans debian/rules par les responsables de paquets pour modifier les drapeaux de compilation concernés.
- DEB_drapeau_SET
- DEB_flag_MAINT_SET (since dpkg 1.16.1)
- Cette variable permet de forcer la valeur renvoyée pour le drapeau indiqué.
- DEB_flag_STRIP (since dpkg 1.16.1)
- DEB_flag_MAINT_STRIP (since dpkg 1.16.1)
- Cette variable peut être utilisée pour fournir une liste d'options (séparées par des espaces) qui seront retirées du jeu de drapeaux renvoyé pour le drapeau indiqué.
- DEB_drapeau_APPEND
- DEB_flag_MAINT_APPEND (since dpkg 1.16.1)
- Cette variable permet d'ajouter des options à la valeur renvoyée pour le drapeau indiqué.
- DEB_flag_PREPEND (since dpkg 1.16.1)
- DEB_flag_MAINT_PREPEND (since dpkg 1.16.1)
- Cette variable permet de préfixer la valeur renvoyée pour le drapeau indiqué par des options supplémentaires.
- DEB_BUILD_OPTIONS
- DEB_BUILD_MAINT_OPTIONS (since dpkg 1.16.1)
- Ces variables peuvent être utilisées par un utilisateur ou un responsable de paquet pour activer ou désactiver différentes options de zone qui affectent les drapeaux de construction. La variable DEB_BUILD_MAINT_OPTIONS outrepasse tous les paramètres de la zone d'options DEB_BUILD_OPTIONS. Voir la section ZONES D'OPTION pour plus de détails.
- DEB_VENDOR
- Ce réglage définit l'éditeur (« vendor ») actuel. Si cette valeur est vide, le contenu du fichier /etc/dpkg/origins/default est utilisé.
- DEB_BUILD_PATH
- Cette variable configure le chemin de construction (depuis dpkg 1.18.8) à utiliser avec des fonctions telles que fixdebugpath de telle sorte qu'elles soient contrôlées par l'appelant. Cette variable est actuellement spécifique à Debian et à ses dérivés.
- DPKG_COLORS
- Définit le mode de couleur (depuis dpkg 1.18.5). Les valeurs actuellement acceptées sont auto (par défaut), always et never.
- DPKG_NLS
- Si cette variable est définie, elle sera utilisée pour décider l'activation de la prise en charge des langues (NLS – Native Language Support), connu aussi comme la gestion de l'internationalisation (ou i18n) (depuis dpkg 1.19.0). Les valeurs permises sont : 0 et 1 (par défaut).
FICHIERS¶
Fichiers de configuration.¶
- /etc/dpkg/buildflags.conf
- Fichier de configuration pour l'ensemble du système.
- $XDG_CONFIG_HOME/dpkg/buildflags.conf ou
- $HOME/.config/dpkg/buildflags.conf
- Fichier de configuration propre à l'utilisateur
Gestion de l'empaquetage¶
- /usr/share/dpkg/buildflags.mk
- Fragment de fichier Makefile qui chargera (et facultativement exportera) dans les variables (depuis dpkg 1.16.1) tous les drapeaux pris en charge par dpkg-buildflags.
EXEMPLES¶
Pour passer des drapeaux de compilation à une commande de compilation dans un Makefile :
$(MAKE) $(shell dpkg-buildflags --export=cmdline) ./configure $(shell dpkg-buildflags --export=cmdline)
Pour définir les drapeaux de compilation dans un script shell ou un fragment de shell, on peut utiliser eval pour interpréter la sortie et exporter les drapeaux dans l'environnement :
eval "$(dpkg-buildflags --export=sh)" && make
ou définir les paramètres de position à passer à la commande :
eval "set -- $(dpkg-buildflags --export=cmdline)" for dir in a b c; do (cd $dir && ./configure "$@" && make); done
Utilisation dans debian/rules¶
Il faut appeler dpkg-buildflags ou inclure buildflags.mk à partir du fichier debian/rules pour obtenir les drapeaux de compilation nécessaires à passer au système de construction. Veuillez noter que les anciennes versions de dpkg-buildpackage (antérieures à dpkg 1.16.1) exportaient ces drapeaux automatiquement. Néanmoins, il est déconseillé de dépendre de ce comportement parce qu'il casse l'appel manuel de debian/rules.
Pour les paquets avec des systèmes de construction du style autoconf, il est possible de passer les options appropriées à configure ou make(1) directement, comme vu ci-dessus.
Pour d'autres systèmes de construction ou si on souhaite un contrôle extrêmement précis sur le choix et la position où sont passés les drapeaux, --get peut être utilisé. Autrement, il est possible d'inclure buildflags.mk qui s'occupe de l'appel de dpkg-buildflags et du placement des drapeaux de compilation dans les variables de make.
Si vous voulez exporter tous les drapeaux de compilation dans l'environnement (où le système de construction peut les récupérer) :
DPKG_EXPORT_BUILDFLAGS = 1 include /usr/share/dpkg/buildflags.mk
Pour un contrôle supplémentaire sur ce qui est exporté, vous pouvez exporter manuellement les variables (puisque aucune n'est exportée par défaut) :
include /usr/share/dpkg/buildflags.mk export CPPFLAGS CFLAGS LDFLAGS
Et enfin, vous pouvez bien sûr passer manuellement les drapeaux aux commandes :
include /usr/share/dpkg/buildflags.mk build-arch: $(CC) -o hello hello.c $(CPPFLAGS) $(CFLAGS) $(LDFLAGS)
TRADUCTION¶
Ariel VARDI <ariel.vardi@freesbee.fr>, 2002. Philippe Batailler, 2006. Nicolas François, 2006. Veuillez signaler toute erreur à <debian-l10n-french@lists.debian.org>.
2023-08-30 | 1.22.0 |