'\" t .\" Title: makepkg .\" Author: [see the "Authors" section] .\" Generator: DocBook XSL Stylesheets vsnapshot .\" Date: 2023-08-16 .\" Manual: Pacman Manual .\" Source: Pacman 6.0.2 .\" Language: English .\" .TH "MAKEPKG" "8" "2023\-08\-16" "Pacman 6\&.0\&.2" "Pacman Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" makepkg \- package build utility .SH "SYNOPSIS" .sp \fImakepkg\fR [options] [ENVVAR=value] [ENVVAR+=value] \&... .SH "DESCRIPTION" .sp \fImakepkg\fR is a script to automate the building of packages\&. The requirements for using the script are a build\-capable *nix platform and a custom build script for each package you wish to build (known as a PKGBUILD)\&. See \fBPKGBUILD\fR(5) for details on creating your own build scripts\&. .sp The advantage to a script\-based build is that the work is only done once\&. Once you have the build script for a package, \fImakepkg\fR will do the rest: download and validate source files, check dependencies, configure the build\-time settings, build the package, install the package into a temporary root, make customizations, generate meta\-info, and package the whole thing up for pacman to use\&. .if n \{\ .sp .\} .RS 4 .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBNote\fR .ps -1 .br .sp \fImakepkg\fR uses your current locale by default and does not unset it when building packages\&. If you wish to share your build output with others when seeking help or for other purposes, you may wish to run "LC_ALL=C makepkg" so your logs and output are not localized\&. .sp .5v .RE .SH "OPTIONS" .PP \fB\-A, \-\-ignorearch\fR .RS 4 Ignore a missing or incomplete arch field in the build script\&. This is for rebuilding packages from source when the PKGBUILD may be slightly outdated and not updated with an arch=(\*(Aqyourarch\*(Aq) field\&. .RE .PP \fB\-c, \-\-clean\fR .RS 4 Clean up leftover work files and directories after a successful build\&. .RE .PP \fB\-\-config\fR .RS 4 Use an alternate configuration file instead of the /etc/makepkg\&.conf default\&. .RE .PP \fB\-d, \-\-nodeps\fR .RS 4 Do not perform any dependency checks\&. This will let you override and ignore any dependencies required\&. There is a good chance this option will break the build process if all of the dependencies are not installed\&. .RE .PP \fB\-e, \-\-noextract\fR .RS 4 Do not extract source files or run the prepare() function (if present); use whatever source already exists in the $srcdir/ directory\&. This is handy if you want to go into $srcdir/ and manually patch or tweak code, then make a package out of the result\&. Keep in mind that creating a patch may be a better solution to allow others to use your PKGBUILD\&. .RE .PP \fB\-\-verifysource\fR .RS 4 For each source file in the source array of PKGBUILD, download the file if required and perform the integrity checks\&. No extraction or build is performed\&. Dependencies specified in the PKGBUILD will not be handled unless \-\-syncdeps is used\&. Useful for performing subsequent offline builds\&. .RE .PP \fB\-f, \-\-force\fR .RS 4 makepkg will not build a package if a built package already exists in the PKGDEST (set in \fBmakepkg.conf\fR(5)) directory, which may default to the current directory\&. This allows the built package to be overwritten\&. .RE .PP \fB\-g, \-\-geninteg\fR .RS 4 For each source file in the source array of PKGBUILD, download the file if required and generate integrity checks\&. The integrity checks generated are determined by the checks present in the PKGBUILD, falling back to the value of the INTEGRITY_CHECK array in makepkg\&.conf(5) if these are absent This output can be redirected into your PKGBUILD for source validation using "makepkg \-g >> PKGBUILD"\&. .RE .PP \fB\-\-skipinteg\fR .RS 4 Do not perform any integrity checks (checksum and PGP) on source files\&. .RE .PP \fB\-\-skipchecksums\fR .RS 4 Do not verify checksums of source files\&. .RE .PP \fB\-\-skippgpcheck\fR .RS 4 Do not verify PGP signatures of source files\&. .RE .PP \fB\-h, \-\-help\fR .RS 4 Output syntax and command line options\&. .RE .PP \fB\-\-holdver\fR .RS 4 When using VCS sources (\fBPKGBUILD\fR(5)) any currently checked out source will not be updated to the latest revision\&. .RE .PP \fB\-i, \-\-install\fR .RS 4 Install or upgrade the package after a successful build using \fBpacman\fR(8)\&. .RE .PP \fB\-L, \-\-log\fR .RS 4 Enable logging\&. This will use the \fBtee\fR program to send the output of each of the PKGBUILD functions to both the console and to a text file in the build directory named pkgbase\-pkgver\-pkgrel\-arch\-\&.log\&. As mentioned above, the logs will be localized so you may want to set your locale accordingly if sharing the log output with others\&. .RE .PP \fB\-m, \-\-nocolor\fR .RS 4 Disable color in output messages\&. .RE .PP \fB\-o, \-\-nobuild\fR .RS 4 Download and extract files, run the prepare() function, but do not build them\&. Useful with the \fI\-\-noextract\fR option if you wish to tweak the files in $srcdir/ before building\&. .RE .PP \fB\-p\fR .RS 4 Read the package script buildscript instead of the PKGBUILD default; see \fBPKGBUILD\fR(5)\&. The buildscript must be located in the directory makepkg is called from\&. .RE .PP \fB\-r, \-\-rmdeps\fR .RS 4 Upon successful build, remove any dependencies installed by makepkg during dependency auto\-resolution and installation when using \-s\&. .RE .PP \fB\-R, \-\-repackage\fR .RS 4 Repackage contents of the package without rebuilding the package\&. This is useful if you forgot, for example, a dependency or install file in your PKGBUILD and the build itself will not change\&. .RE .PP \fB\-s, \-\-syncdeps\fR .RS 4 Install missing dependencies using pacman\&. When build\-time or run\-time dependencies are not found, pacman will try to resolve them\&. If successful, the missing packages will be downloaded and installed\&. .RE .PP \fB\-S, \-\-source\fR .RS 4 Do not actually build the package, but build a source\-only tarball that does not include sources that can be fetched via a download URL\&. This is useful for passing a single tarball to another program such as a chroot, remote builder, or a tarball upload\&. Because integrity checks are verified, all source files of the package need to be present or downloadable\&. .RE .PP \fB\-V, \-\-version\fR .RS 4 Display version information\&. .RE .PP \fB\-C, \-\-cleanbuild\fR .RS 4 Remove the $srcdir before building the package\&. .RE .PP \fB\-\-allsource\fR .RS 4 Do not actually build the package, but build a source\-only tarball that includes all sources, including those that are normally downloaded via makepkg\&. This is useful for passing a single tarball to another program such as a chroot or remote builder\&. It will also satisfy requirements of the GPL when distributing binary packages\&. .RE .PP \fB\-\-check\fR .RS 4 Run the check() function in the PKGBUILD, overriding the setting in \fBmakepkg.conf\fR(5)\&. .RE .PP \fB\-\-noarchive\fR .RS 4 Do not create the archive at the end of the build process\&. This can be useful to test the package() function or if your target distribution does not use pacman\&. .RE .PP \fB\-\-nocheck\fR .RS 4 Do not run the check() function in the PKGBUILD or handle the checkdepends\&. .RE .PP \fB\-\-noprepare\fR .RS 4 Do not run the prepare() function in the PKGBUILD\&. .RE .PP \fB\-\-sign\fR .RS 4 Sign the resulting package with gpg, overriding the setting in \fBmakepkg.conf\fR(5)\&. .RE .PP \fB\-\-nosign\fR .RS 4 Do not create a signature for the built package\&. .RE .PP \fB\-\-key\fR .RS 4 Specify a key to use when signing packages, overriding the GPGKEY setting in \fBmakepkg.conf\fR(5)\&. If not specified in either location, the default key from the keyring will be used\&. .RE .PP \fB\-\-noconfirm\fR .RS 4 (Passed to pacman) Prevent pacman from waiting for user input before proceeding with operations\&. .RE .PP \fB\-\-needed\fR .RS 4 (Passed to pacman) Tell pacman not to reinstall a target if it is already up\-to\-date\&. (used with \fI\-i\fR / \fI\-\-install\fR)\&. .RE .PP \fB\-\-asdeps\fR .RS 4 (Passed to pacman) Install packages as non\-explicitly installed (used with \fI\-i\fR / \fI\-\-install\fR)\&. .RE .PP \fB\-\-noprogressbar\fR .RS 4 (Passed to pacman) Prevent pacman from displaying a progress bar; useful if you are redirecting makepkg output to file\&. .RE .PP \fB\-\-packagelist\fR .RS 4 List the package filenames that would be produced without building\&. Listed package filenames include PKGDEST and PKGEXT\&. .RE .PP \fB\-\-printsrcinfo\fR .RS 4 Generate and print the SRCINFO file to stdout\&. .RE .SH "ADDITIONAL FEATURES" .sp makepkg supports building development versions of packages without having to manually update the pkgver in the PKGBUILD\&. This was formerly done using the separate utility \fIversionpkg\fR\&. See \fBPKGBUILD\fR(5) for details on how to set up a development PKGBUILD\&. .SH "REPRODUCIBILITY" .sp makepkg is designed to be compatible with Reproducible Builds\&. If the \fBSOURCE_DATE_EPOCH\fR environment variable is set, it will be exported to subprocesses, and source and package file modification times and package metadata will be unified based on the timestamp specified\&. .sp If the \fBSOURCE_DATE_EPOCH\fR environment variable is not set, makepkg will use its own start date for internal use, but will not unify source file timestamps before building\&. .SH "ENVIRONMENT VARIABLES" .PP \fBPACMAN\fR .RS 4 The command that will be used to check for missing dependencies and to install and remove packages\&. Pacman\(cqs \fI\-Qq\fR, \fI\-Rns\fR, \fI\-S\fR, \fI\-T\fR, and \fI\-U\fR operations must be supported by this command\&. If the variable is not set or empty, makepkg will fall back to \(oqpacman\(cq\&. .RE .PP \fBMAKEPKG_CONF=\fR"/path/to/file" .RS 4 Use an alternate config file instead of the /etc/makepkg\&.conf default\&. .RE .PP \fBPKGDEST=\fR"/path/to/directory" .RS 4 Directory where the resulting packages will be stored\&. Overrides the corresponding value defined in \fBmakepkg.conf\fR(5)\&. .RE .PP \fBSRCDEST=\fR"/path/to/directory" .RS 4 Directory where the downloaded sources will be stored\&. Overrides the corresponding value defined in \fBmakepkg.conf\fR(5)\&. .RE .PP \fBSRCPKGDEST=\fR"/path/to/directory" .RS 4 Directory where source package files will be stored\&. Overrides the corresponding value defined in \fBmakepkg.conf\fR(5)\&. .RE .PP \fBLOGDEST=\fR"/path/to/directory" .RS 4 Directory where generated log files will be stored\&. Overrides the corresponding value defined in \fBmakepkg.conf\fR(5)\&. .RE .PP \fBPACKAGER=\fR"John Doe " .RS 4 String to identify the creator of the resulting package\&. Overrides the corresponding value defined in \fBmakepkg.conf\fR(5)\&. .RE .PP \fBBUILDDIR=\fR"/path/to/directory" .RS 4 Directory where the package will be built\&. Overrides the corresponding value defined in \fBmakepkg.conf\fR(5)\&. .RE .PP \fBCARCH=\fR"(i686|x86_64)" .RS 4 Force build for a specific architecture\&. Useful for cross\-compiling\&. Overrides the corresponding value defined in \fBmakepkg.conf\fR(5)\&. .RE .PP \fBPKGEXT=\fR"\&.pkg\&.tar\&.gz", \fBSRCEXT=\fR"\&.src\&.tar\&.gz" .RS 4 Sets the compression used when making compiled or source packages\&. Overrides the corresponding value defined in \fBmakepkg.conf\fR(5)\&. .RE .PP \fBGNUPGHOME=\fR"/path/to/directory" .RS 4 Directory where the gpg keyring for signing the built package is stored\&. .RE .PP \fBGPGKEY=\fR"keyid" .RS 4 Specify a key to use when signing packages, overriding the GPGKEY setting in \fBmakepkg.conf\fR(5)\&. .RE .PP \fBSOURCE_DATE_EPOCH=\fR"" .RS 4 Used for Reproducible Builds\&. .RE .PP \fBBUILDTOOL=\fR"" .RS 4 The name of a tool ecosystem used to set up the build environment\&. Used for defining a spec for reproducible builds, e\&.g\&. the \fBmakepkg.conf\fR(5) used\&. .RE .PP \fBBUILDTOOLVER=\fR"" .RS 4 The version of the \fI$BUILDTOOL\fR used\&. .RE .SH "CONFIGURATION" .sp See \fBmakepkg.conf\fR(5) for more details on configuring makepkg using the \fImakepkg\&.conf\fR file\&. .SH "ERRORS" .sp On exit, makepkg will return one of the following error codes\&. .PP 0 .RS 4 Normal exit condition\&. .RE .PP 1 .RS 4 Unknown cause of failure\&. .RE .PP 2 .RS 4 Error in configuration file\&. .RE .PP 3 .RS 4 User specified an invalid option\&. .RE .PP 4 .RS 4 Error in user\-supplied function in PKGBUILD\&. .RE .PP 5 .RS 4 Failed to create a viable package\&. .RE .PP 6 .RS 4 A source or auxiliary file specified in the PKGBUILD is missing\&. .RE .PP 7 .RS 4 The PKGDIR is missing\&. .RE .PP 8 .RS 4 Failed to install dependencies\&. .RE .PP 9 .RS 4 Failed to remove dependencies\&. .RE .PP 10 .RS 4 User attempted to run makepkg as root\&. .RE .PP 11 .RS 4 User lacks permissions to build or install to a given location\&. .RE .PP 12 .RS 4 Error parsing PKGBUILD\&. .RE .PP 13 .RS 4 A package has already been built\&. .RE .PP 14 .RS 4 The package failed to install\&. .RE .PP 15 .RS 4 Programs necessary to run makepkg are missing\&. .RE .PP 16 .RS 4 Specified GPG key does not exist or failed to sign package\&. .RE .SH "SEE ALSO" .sp \fBmakepkg.conf\fR(5), \fBPKGBUILD\fR(5), \fBpacman\fR(8) .sp See the pacman website at https://archlinux\&.org/pacman/ for current information on pacman and its related tools\&. .SH "BUGS" .sp Bugs? You must be kidding; there are no bugs in this software\&. But if we happen to be wrong, submit a bug report with as much detail as possible at the Arch Linux Bug Tracker in the Pacman section\&. .SH "AUTHORS" .sp Current maintainers: .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} Allan McRae .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} Andrew Gregory .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} Eli Schwartz .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} Morgan Adamiec .RE .sp Past major contributors: .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} Judd Vinet .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} Aurelien Foret .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} Aaron Griffin .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} Dan McGee .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} Xavier Chantry .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} Nagy Gabor .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} Dave Reisner .RE .sp For additional contributors, use git shortlog \-s on the pacman\&.git repository\&.