MAKEPKG.CONF(5)

πŸ’– MAKEPKG.CONF(5) πŸ’–

okay bestie, welcome to makepkg.conf β€” the config file that tells makepkg how to serve looks. πŸ’… This is the manual page for it, and we are going through every single variable, no skips, no cap. ✨


🌸 NAME 🌸

makepkg.conf - makepkg configuration file


πŸ¦‹ SYNOPSIS πŸ¦‹

/etc/makepkg.conf, $XDG_CONFIG_HOME/pacman/makepkg.conf, ~/.makepkg.conf

✨ DESCRIPTION ✨

Configuration options for makepkg are stored in makepkg.conf. This file is sourced so you can include any special compiler flags you wish to use. This is helpful when building for different architectures or with different optimizations. However, only the variables described below are exported to the build environment.

⚠️ Note β€” This does not guarantee that all package Makefiles will use your exported variables. Some of them are non-standard.

The system-wide configuration file is found in /etc/makepkg.conf. Specific additions (e.g. build flags for additional languages) can be placed in /etc/makepkg.conf.d/*.conf.

Individual options can be overridden (or added to) on a per-user basis in $XDG_CONFIG_HOME/pacman/makepkg.conf or ~/.makepkg.conf, with the former taking priority.

The default file is fairly well commented, so it may be easiest to simply follow directions given there for customization.


πŸ‘‘ OPTIONS πŸ‘‘

  • DLAGENTS=('protocol::/path/to/command [options]' ...) β€” Sets the download agents used to fetch source files specified with a URL in the PKGBUILD(5) file. Options can be specified for each command as well, and any protocol can have a download agent. Any spaces in option arguments are required to be escaped to avoid being split. Several examples are provided in the default makepkg.conf.

If present, %u will be replaced with the download URL. Otherwise, the download URL will be placed on the end of the command. If present, %o will be replaced with the local file name, plus a β€œ.part” extension, which allows makepkg to handle resuming file downloads.

  • VCSCLIENTS=('protocol::package' ...) β€” Sets the packages required to fetch version controlled source files. When required, makepkg will check that these packages are installed or are included in the depends or makedepends arrays in the PKGBUILD.
  • CARCH="carch" β€” Specifies your computer architecture; possible values include such things as β€œi686”, β€œx86_64”, β€œppc”, etc. This should be automatically set on installation.
  • CHOST="chost" β€” A string such as β€œi686-pc-linux-gnu”; do not touch this unless you know what you are doing. This can be commented out by most users if desired.
  • NPROC="" β€” Sets the number of processors to use for parallel jobs in makepkg. Note: this does not affect parallelization of tasks during build() and related functions.
  • CPPFLAGS="cppflags" β€” Flags used for the C preprocessor; see CFLAGS for more information.
  • CFLAGS="cflags" β€” Flags used for the C compiler. This is a key part to the use of makepkg. Usually several options are specified, and the most common string resembles something like this: β€œ-march=i686 -O2 -pipe”. Another useful option may be -mcpu in place of -march. Read gcc(1) for more details on the wide variety of compiler flags available.
  • CXXFLAGS="cxxflags" β€” Flags used for the C++ compiler; see CFLAGS for more info.
  • LDFLAGS="ldflags" β€” Flags used for the linker. Several options may be specified with common usage resembling β€œ-Wl,--hash-style=gnu”. Read ld(1) for more details on available linker flags.
  • LTOFLAGS="ltoflags" β€” Additional compiler and linker flags appended to CFLAGS, CXXFLAGS and LDFLAGS when building with link time optimization. If empty, β€œ-flto” is used.
  • MAKEFLAGS="makeflags" β€” This is often used to set the number of jobs used; for example, -j2. Other flags that make accepts can also be passed.
  • DEBUG_CFLAGS="debug_cflags" β€” Additional compiler flags appended to CFLAGS for use in debugging. Usually this would include: β€œ-g”. Read gcc(1) for more details on the wide variety of compiler flags available.
  • DEBUG_CXXFLAGS="debug_cxxflags" β€” Debug flags used for the C++ compiler; see DEBUG_CFLAGS for more info.
  • BUILDENV=(!distcc !color !ccache check !sign) β€” This array contains options that affect the build environment; the defaults are shown here. All options should always be left in the array; to enable or disable an option, simply remove or add an β€œ!” at the front of the option. If an option is specified multiple times, the final value takes precedence. Each option works as follows:
    • distcc β€” Use the distributed C/C++/ObjC compiler to spread compilation among multiple machines. If this is enabled, DISTCC_HOSTS must be specified as well.
    • color β€” Colorize output messages, making output easier to read.
    • ccache β€” Use ccache to cache compilation by default. This allows for faster compiles if you are continuously recompiling the same packages. It can be disabled for individual packages by placing !ccache in the PKGBUILD options array.
    • check β€” Run the check() function if present in the PKGBUILD. This can be enabled or disabled for individual packages through the use of makepkg’s --check and --nocheck options, respectively.
    • sign β€” Generate a PGP signature file using GnuPG. This will execute gpg --detach-sign on the built package to generate a detached signature file, using the GPG agent, if it is available. The signature file will be the entire file name of the package with a β€œ.sig” extension.
  • DISTCC_HOSTS="host1 ..." β€” If using DistCC, this is used to specify a space-delimited list of hosts running in the DistCC cluster. In addition, you will want to modify your MAKEFLAGS.
  • BUILDDIR="/path/to/directory" β€” If this value is not set, packages will, by default, be built in subdirectories of the directory that makepkg is called from. This option allows setting the build location to another directory. Incorrect use of $startdir in a PKGBUILD may cause building with this option to fail.
  • GPGKEY="" β€” Specify a key to use for GPG signing instead of the default key in the keyring. Can be overridden with makepkg’s --key option.
  • OPTIONS=(!strip docs libtool staticlibs emptydirs ...) β€” This array contains options that affect default packaging. They are equivalent to options that can be placed in the PKGBUILD; the defaults are shown here. All options should always be left in the array; to enable or disable an option, simply remove or add an β€œ!” at the front of the option. If an option is specified multiple times, the final value takes precedence. Each option works as follows:
    • strip β€” Strip symbols from binaries and libraries. If you frequently use a debugger on programs or libraries, it may be helpful to disable this option.
    • docs β€” Save doc directories. If you wish to delete doc directories, specify !docs in the array. The directories affected are specified by the DOC_DIRS variable.
    • libtool β€” Leave libtool (.la) files in packages. Specify !libtool to remove them.
    • staticlibs β€” Leave static library (.a) files in packages. Specify !staticlibs to remove them, if they have a shared counterpart.
    • emptydirs β€” Leave empty directories in packages.
    • zipman β€” Compress manual (man and info) pages with gzip. The directories affected are specified by the MAN_DIRS variable.
    • purge β€” Remove files specified by the PURGE_TARGETS variable from the package.
    • debug β€” Add the user-specified debug flags as specified in DEBUG_CFLAGS and DEBUG_CXXFLAGS to their counterpart buildflags. Creates a separate package containing the debug symbols when used with β€˜strip’.
    • lto β€” Enable building packages using link time optimization. Adds the flags specified in LTOFLAGS to CFLAGS, CXXFLAGS and LDFLAGS (or β€œ-flto” if LTOFLAGS is empty).
    • autodeps β€” Enable the automatic addition of libraries to the depends and provides arrays. Search library directories are controlled by the LIB_DIRS variable defined below.
  • INTEGRITY_CHECK=(check1 ...) β€” File integrity checks to use. Multiple checks may be specified; this affects both generation and checking. The current valid options are: ck, md5, sha1, sha224, sha256, sha384, sha512, and b2.
  • STRIP_BINARIES="--strip-all" β€” Options to be used when stripping binaries. See strip(1) for details.
  • STRIP_SHARED="--strip-unneeded" β€” Options to be used when stripping shared libraries or PIE executables. See strip(1) for details.
  • STRIP_STATIC="--strip-debug" β€” Options to be used when stripping static libraries. See strip(1) for details.
  • MAN_DIRS=(usr{,/local}{,/share}/{man,info} ...) β€” If zipman is specified in the OPTIONS array, this variable will instruct makepkg where to look to compress manual (man and info) pages. If you build packages that are located in opt/, you may need to add the directory to this array. NOTE: Do not add the leading slash to the directory name.
  • DOC_DIRS=(usr/{,share/}{doc,gtk-doc} ...) β€” If !docs is specified in the OPTIONS array, this variable will instruct makepkg where to look to remove docs. If you build packages that are located in opt/, you may need to add the directory to this array. NOTE: Do not add the leading slash to the directory name.
  • LIB_DIRS=(lib:usr/lib ...) β€” If autodeps is specified in the OPTIONS array, this variable will instruct makepkg where to look to find libraries to add to the provides array. The format is "prefix:path", where provides will be added for libraries found in "path" with the specified prefix added.
  • PURGE_TARGETS=(usr/{,share}/info/dir .podlist *.pod...) β€” If purge is specified in the OPTIONS array, this variable will instruct makepkg which files to remove from the package. This is useful for index files that are added by multiple packages.
  • DBGSRCDIR="/usr/src/debug" β€” If strip and debug are specified in the OPTIONS array, this variable will instruct makepkg where to place source files for installed binaries. The binaries will be modified to link this directory for the debugger search path.
  • PKGDEST="/path/to/directory" β€” where your shiny finished packages go πŸŽ€ if you don't set this, they just get dumped in the current directory (aka wherever the PKGBUILD(5) is chillin'). Lots of people love having one single home for all their packages, so this is the setting for that vibe. A common pick is /home/packages. so organized, so slay ✨
  • SRCDEST="/path/to/directory" β€” where downloaded source files land πŸ¦‹ leave it unset and they only ever live in the current directory. If you're the type who wants all your source tarballs in one central spot for easy cleanup (bestie, same), set the path here. centralized chaos is still chaos, but cuter πŸ’…
  • SRCPKGDEST="/path/to/directory" β€” same deal but for source package files πŸ“¦ unset means they sit in the current directory. Lots of people keep all their source package files in one central location so cleanup is easy, so you can set that path right here. iykyk
  • LOGDEST="/path/to/directory" β€” where the log files go πŸ“ if you don't set it, logs get written to the current directory. Setting it centralizes your log location, which makes cleanup and compression so much easier. future you says thank you 🫢
  • PACKAGER="John Doe <john@example.com>" β€” this is what gets used when someone queries a package to see who built it πŸ‘‘ the format shown is required for PGP key lookup through WKD, so don't freestyle it. Highly recommended: swap in your own name and email. main character credit, but make it you ✨
  • COMPRESSGZ="(gzip -c -f -n)", COMPRESSBZ2="(bzip2 -c -f)", COMPRESSXZ="(xz -c -z -)", COMPRESSZST="(zstd -c -z -)", COMPRESSLZO"(lzop -q)", COMPRESSLRZ="(lrzip -q)", COMPRESSLZ4="(lz4 -q)", COMPRESSZ="(compress -c -f)", COMPRESSLZ="(lzip -c -f)" β€” these set the command and the options used when compressing compiled or source packages in the named format πŸ—œοΈ
  • PKGEXT=".pkg.tar.gz", SRCEXT=".src.tar.gz" β€” sets the compression used when making compiled or source packages 🌸 valid suffixes are .pkg or .src (for PKGEXT and SRCEXT respectively) followed by one of .tar.gz, .tar.bz2, .tar.xz, .tar.zst, .tar.lzo, .tar.lrz, .tar.lz4, .tar.lz and .tar.Z, or just plain .tar to disable compression entirely. pick your fighter πŸ’–
  • PACMAN_AUTH=() β€” specify a command prefix for running pacman as root πŸ” if it's unset, makepkg will check for the presence of sudo(8) and su(1) in turn, and try the first one it finds. detective mode activated πŸ•΅οΈ

If present, %c will be replaced with the shell-quoted form of the command to run. Otherwise, the command to run is just appended to the auth command. simple as that, no cap


✨ SEE ALSO ✨

makepkg(8), pacman(8), PKGBUILD(5) πŸ‘―

Peep the pacman website at https://archlinux.org/pacman/ for current info on pacman and its related tools. bookmark it fr fr πŸ”–


πŸ’€ BUGS πŸ’€

Bugs? Bestie, you must be kidding β€” there are no bugs in this software 😌 iconic behavior honestly.

But if we happen to be wrong (rude), please report them to the issue tracker at https://gitlab.archlinux.org/pacman/pacman/-/issues and bring specific info: your command-line, the nature of the bug, and even the package database if it helps πŸ› receipts, we need receipts πŸ“Έ


πŸ‘‘ AUTHORS πŸ‘‘

Current maintainers:

  • Allan McRae <allan@archlinux.org>
  • Andrew Gregory <andrew.gregory.8@gmail.com>
  • Morgan Adamiec <morganamilo@archlinux.org>

Past major contributors:

  • Judd Vinet <jvinet@zeroflux.org>
  • Aurelien Foret <aurelien@archlinux.org>
  • Aaron Griffin <aaron@archlinux.org>
  • Dan McGee <dan@archlinux.org>
  • Xavier Chantry <shiningxc@gmail.com>
  • Nagy Gabor <ngaba@bibl.u-szeged.hu>
  • Dave Reisner <dreisner@archlinux.org>
  • Eli Schwartz <eschwartz@archlinux.org>

For additional contributors, run git shortlog -s on the pacman.git repository 🧚 legends, every single one


okay that's the whole page bestie, you ate that 🫢 this was Pacman 7.1.0, dated 2026-10-15, and it's the MAKEPKG.CONF(5) manual β€” go forth and build something gorgeous πŸŒˆβœ¨πŸ’…

πŸ“¦ where this page comes from