.\" $NetBSD: packages.7,v 1.86 2004/01/14 07:22:40 wiz Exp $ .\" .\" from: NetBSD: bsd.pkg.mk,v 1.89 1998/06/01 21:30:10 hubertf Exp .\" .\" This file is in the public domain. .\" .Dd January 14, 2004 .Dt PACKAGES 7 .Os .Sh NAME .Nm packages .Nd .Nx user package variables .Sh DESCRIPTION This manual page describes the variables that users of the .Nx packages system can set to alter the configuration of the package system, and individual packages. .Sh COMMON VARIABLES This section documents variables that typically apply to all packages. Many of these may be set in .Xr mk.conf 5 . .Bl -tag -offset indent -width XXXXXXXXX .It ARCH The architecture, as returned by .Dq uname -m . See .Xr uname 1 . .It OPSYS The operating system name, as returned by .Dq uname -s . .It LOCALBASE Where non-X11 based packages will be installed. The default is .Pa /usr/pkg . .It CROSSBASE Where .Dq cross category packages will be installed. The default is .Pa ${LOCALBASE}/cross . .It X11BASE Where X11 is installed on the system, and where .Dq X11 category packages will be installed. The default is .Pa /usr/X11R6 . .It DISTDIR Where to get gzip'd, tar-balled copies of original sources. The default is .Pa ${PKGSRCDIR}/distfiles . .It MASTER_SITE_BACKUP Backup location(s) for distribution files and patch files if not found locally and ${MASTER_SITES}/${PATCH_SITES}. The defaults are .Pa ftp://ftp.NetBSD.org/pub/NetBSD/packages/distfiles/${DIST_SUBDIR}/ and .Pa ftp://ftp.freebsd.org/pub/FreeBSD/distfiles/${DIST_SUBDIR}/ . .It MASTER_SITE_OVERRIDE If set, override the MASTER_SITES setting with this value. .It PACKAGES A top level directory where all packages go (rather than going locally to each package). The default is .Pa ${PKGSRCDIR}/packages . .It GMAKE Set to path of GNU make if not in $PATH (default: gmake). .It PKG_FC Set to the path of the desired Fortran compiler (default: f2c-f77). .It XMKMF Set to path of .Dq xmkmf if not in $PATH (default: xmkmf -a). .It WRKOBJDIR A top level directory where, if defined, the separate working directories will get created, and symbolically linked to from .Pa ${WRKDIR} (see below). This is useful for building packages on several architectures, then .Pa ${PKGSRCDIR} can be NFS-mounted while .Pa ${WRKOBJDIR} is local to every arch. (It should be noted that .Pa ${PKGSRCDIR} should not be set by the user - it is an internal definition which refers to the root of the pkgsrc tree. It is possible to have many pkgsrc tree instances.) .It PKG_DEVELOPER Run some sanity checks that package developers want: .Bl -bullet .It make sure patches apply with zero fuzz .It run check-shlibs to see that all binaries will find their shared libs. .El .It USE_GLX Says that if Mesa is requested, a package should preferably use a GLX (hardware-accelerated) version of the Mesa library. .It BINPKG_SITES List of sites carrying binary pkgs. .It LOCALPATCHES Directory for local patches that aren't part of pkgsrc. See .Pa pkgsrc/Packages.txt for more information. .Dq rel and .Dq arch are replaced with OS release ( .Dq 1.5 , etc.) and architecture ( .Dq mipsel , etc.). .It PKGMAKECONF Location of the .Pa mk.conf file used by a package's BSD-style Makefile. If this is not set, MAKECONF is set to .Pa /dev/null to avoid picking up settings used by builds in .Pa /usr/src . .El .Sh PACKAGE SPECIFIC VARIABLES This section documents variables that typically apply to an individual package. Non-Boolean variables without defaults are *mandatory*. .Bl -tag -offset indent -width XXXXXXXX .It ONLY_FOR_PLATFORM If set, it lists the values of OS triples (OS-version-platform) that the package will build under. It can be a glob-style wildcard. .It NOT_FOR_PLATFORM If set, it lists the values of OS triples (OS-version-platform) that the package will not build under. It can be a glob-style wildcard. .It MAINTAINER The e-mail address of the contact person for this package. The person who feels responsible for this package, and who is most likely to look at problems or questions regarding this package which have been reported with .Xr send-pr 1 . The right person to contact before making major changes to the package. The default is tech-pkg@NetBSD.org. .It CATEGORIES A list of descriptive categories into which this package falls. .It COMMENT A one-line description of the package (should not include the package name). .It MASTER_SITES Primary location(s) for distribution files if not found locally. .It PATCH_SITES Primary location(s) for distribution patch files (see .Dv PATCHFILES below) if not found locally. .It PKG_DEBUG_LEVEL The level of debugging output which is displayed whilst making and installing the package. The default value for this is 0, which will not display the commands as they are executed (normal, default, quiet operation); the value 1 will display all shell commands before their invocation, and the value 2 will display both the shell commands before their invocation, and their actual execution progress with .Ic set -x will be displayed. .It WRKDIR A temporary working directory that gets *clobbered* on clean. The default is .Pa ${.CURDIR}/work or .Pa ${.CURDIR}/work.${MACHINE_ARCH} if .Dv OBJMACHINE is set. .It WRKSRC A subdirectory of ${WRKDIR} where the distribution actually unpacks to. The default is .Pa ${WRKDIR}/${DISTNAME} . The value of WRKSRC should be set explicitly if the package does not follow standard conventions and include the package's name as a subdirectory. Please note that the old .Dv NO_WRKSUBDIR definition has been deprecated and should not be used. .It DISTNAME Name of package or distribution. .It DISTFILES Name(s) of archive file(s) containing distribution. The default is .Pa ${DISTNAME}${EXTRACT_SUFX} . .It PATCHFILES Name(s) of additional files that contain distribution patches. There is no default. Make will look for them at .Dv PATCH_SITES (see above). They will automatically be uncompressed before patching if the names end with .Dq .gz or .Dq .Z . .It DIST_SUBDIR Suffix to .Pa ${DISTDIR} . If set, all .Pa ${DISTFILES} and .Pa ${PATCHFILES} will be put in this subdirectory of .Pa ${DISTDIR}. .It ALLFILES All of .Pa ${DISTFILES} and .Pa ${PATCHFILES} . .It IGNOREFILES If some of the .Pa ${ALLFILES} are not checksum-able, set this variable to their names. .It PKGNAME Name of the package file to create if the .Pa ${DISTNAME} isn't really relevant for the package. The default is .Pa ${DISTNAME} . .It SVR4_PKGNAME Name of the package file to create if the .Pa ${PKGNAME} isn't unique enough on a SVR4 system. The default is .Pa ${PKGNAME} which may be shortened when you use gensolpkg. Only add SVR4_PKGNAME if .Pa ${PKGNAME} does not produce an unique package name on a SVR4 system. The length of SVR4_PKGNAME is limited to 5 characters. .It PKGREVISION This number indicates the package's revision within the .Nx Packages Collection (pkgsrc). If set, this will be attached to the PKGNAME variable separated by a .Dq nb . .It EXTRACT_ONLY If defined, a subset of .Pa ${DISTFILES} you want to actually extract. .It PATCHDIR A directory containing any additional patches you made to package this software. The default is .Pa ${.CURDIR}/patches . .It SCRIPTDIR A directory containing any auxiliary scripts. The default is .Pa ${.CURDIR}/scripts . .It FILESDIR A directory containing any miscellaneous additional files. The default is .Pa ${.CURDIR}/files . .It PKGDIR A direction containing any package creation files. The default is .Pa ${.CURDIR}/pkg . .It PKG_DBDIR Where package installation is recorded. The default is .Pa /var/db/pkg . .It FORCE_PKG_REGISTER If set, it will overwrite any existing package registration information in .Pa ${PKG_DBDIR}/${PKGNAME} . .It NO_MTREE If set, will not invoke mtree from .Pa bsd.pkg.mk from the .Dq install target. .It MTREE_FILE The name of the mtree file. The default is .Pa /etc/mtree/BSD.x11.dist if .Dv USE_IMAKE or .Dv USE_X11BASE is set, or .Pa /etc/mtree/BSD.pkg.dist otherwise. .It USE_X11 Instructs the package system that the package will use headers and libraries from .Dv X11BASE and so a check must be made that these are available. If they are not, an IGNORE message will be displayed, and the package will not be built. .It PLIST_SRC Which file(s) to use to build .Pa ${PLIST} . Default is .Pa ${PKGDIR}/PLIST . .It PLIST_SUBST Patterns that get automatically expanded during the PLIST creation. Takes arguments of the form .Li VARNAME = .Dq value and subsequently replaces every occurrence of .Li ${VARNAME} with .Li value . .It INSTALL_FILE The name of a script which will be invoked when installing binary packages. If there is a file called .Pa ${PKGDIR}/INSTALL , that file will be used. .It DEINSTALL_FILE The name of a script which will be invoked when de-installing binary packages. If there is a file called .Pa ${PKGDIR}/DEINSTALL , that file will be used. .It MESSAGE The name of a file which will be displayed during the installation of a package. No substitution according to MESSAGE_SUBST takes place. Overrides MESSAGE_SRC. Should not be used. .It MESSAGE_SRC The name of a file which will be displayed when installing a package. If neither MESSAGE_SRC nor MESSAGE are set, and there is a file called .Pa ${PKGDIR}/MESSAGE , that file will be used. Before displaying the file, substitution according to MESSAGE_SUBST takes place. .It MESSAGE_SUBST This variable takes equations of the form .Li VARNAME = .Dq value , and replaces all occurrences of .Li ${VARNAME} in MESSAGE_SRC with .Li value . By default, substitution is performed for .Li LOCALBASE , .Li PKGNAME , .Li PREFIX , .Li X11BASE , and .Li X11PREFIX . .It NO_BIN_ON_CDROM Binaries of this package may not be placed on CDROM. Set this string to .Pa ${RESTRICTED} . .It NO_BIN_ON_FTP Binaries of this package may not be made available via ftp. Set this string to .Pa ${RESTRICTED} . .It NO_BUILD Use a dummy (do-nothing) build target. .It NO_CONFIGURE Use a dummy (do-nothing) configure target. .It NO_INSTALL Use a dummy (do-nothing) install target. .It NO_PACKAGE Use a dummy (do-nothing) package target. .It NO_PKG_REGISTER Don't register a package install as a package. .It NO_SRC_ON_CDROM Distfile(s) of this package may not be placed on CDROM. Set this string to .Pa ${RESTRICTED} . .It NO_SRC_ON_FTP Distfile(s) of this package may not be made available via ftp. Set this string to .Pa ${RESTRICTED} . If this variable is set, the distfile will not be mirrored by ftp.NetBSD.org. .It NO_DEPENDS Don't verify build of dependencies. .It CHECK_SHLIBS Do not run 'check-shlibs' even if PKG_DEVELOPER is set. This prevents errors on emul/compat packages (e.g., Linux binaries, ...). .It MAKEFILE Name of the Makefile in ${WRKSRC}, used in the default build and install targets. Default: .Dq Makefile . .It BROKEN Package is broken. Set this string to the reason why. .It RESTRICTED Package is restricted. Set this string to the reason why. .It LICENCE The package has a non-standard licence, such as shareware, or non-commercial-use only. This string should be set to the type of licence the package has, like "shareware", or "non-commercial-use". If LICENCE is set, the .Dv ACCEPTABLE_LICENCES variable will be searched, if set, for a string matching the licence. .It PASSIVE_FETCH Uses passive .Xr ftp 1 to retrieve distribution files. .It REPLACE_PERL Takes a list of files and replaces each occurrence of "/usr/bin/perl", "/usr/local/bin/perl" and "/usr/pkg/bin/perl" in the named files with the value of ${PERL5}. This can be used to point perl scripts to the proper interpreter that pkgsrc installs. Note: it looks for the listed files in ${WRKSRC}. .It UNLIMIT_RESOURCES List of process limits which need to be raised to hard limits for building this package. So far "datasize" and "stacksize" are supported. .It USE_LIBTOOL Says that the package uses .Pa libtool to manage building of libraries and shared objects, where applicable. .It LTCONFIG_OVERRIDE If set, override the specified .Pa ltconfig for using the .Pa libtool package instead of the pkg's own .Pa libtool . .It USE_FORTRAN Says that the package uses a Fortran compiler for building. .It USE_GMAKE Says that the package uses .Pa gmake . .It USE_JAVA Says that the package uses a Java virtual machine. .It USE_PERL5 Says that the package uses .Pa perl5 for building and running. .It PERL5_REQD Sets the minimum .Pa perl5 version required. The default is 5.0. .It USE_IMAKE Says that the package uses .Pa imake . .It USE_MESA Says that the package uses the Mesa library. This will include all Mesa components that are not included in the installed X11 distribution. .It USE_SSL Says that the package uses a SSL library. The location of the SSL installation can be found in .Dv ${SSLBASE} . .It USE_X11BASE Says that the package installs itself into the X11 base directory .Dv ${X11BASE} . This is necessary for packages that install X11 fonts, application default files or Imake rule or template files. .It USE_XAW Says that the package uses the Athena widget set. .It USE_XPM Says that the package uses the Xpm library. If it is not included in the installed X11 distribution the xpm package will be used. .It USE_GTEXINFO Says that the package uses gtexinfo. .It NO_INSTALL_MANPAGES For imake packages that don't like the install.man target. .It HAS_CONFIGURE Says that the package has its own configure script. .It GNU_CONFIGURE Set if you are using GNU configure (optional). .It CONFIGURE_SCRIPT Name of configure script, defaults to .Pa configure . .It CONFIGURE_ARGS Pass these args to configure if ${HAS_CONFIGURE} is set. .It CONFIGURE_ENV Pass these env (shell-like) to configure if .Pa ${HAS_CONFIGURE} is set. .It SCRIPTS_ENV Additional environment variables passed to scripts in .Pa ${SCRIPTDIR} executed by .Pa bsd.pkg.mk . .It MAKE_ENV Additional environment variables passed to sub-make in build stage. .It CFLAGS Any CFLAGS you wish passed to the configure script and/or sub-make in build stage. .It LDFLAGS Any LDFLAGS you wish passed to the configure script and/or sub-make in build stage. LDFLAGS is pre-loaded with rpath settings for ELF machines depending on the setting of USE_IMAKE or USE_X11BASE. If you do not wish to override these settings, use LDFLAGS+=. .It MAKE_ENV Additional environment variables passed to sub-make in build stage. .It INTERACTIVE_STAGE Set this if your package needs to interact with the user during its fetch, configure, build or install stages. Multiple stages may be specified. The user can then decide to skip this package by setting .Dv ${BATCH} . .It FETCH_DEPENDS A list of .Dq path:dir pairs of other packages this package depends upon in the .Dq fetch stage. .Dq path is the name of a file if it starts with a slash (/), an executable otherwise. make will test for the existence (if it is a full pathname) or search for it in your .Dv $PATH (if it is an executable) and go into .Dq dir to do a .Dq make all install if it's not found. .It BUILD_DEPENDS A list of .Dq path:dir pairs of other packages this package depends upon to build (between the .Dq extract and .Dq build stages, inclusive). The test done to determine the existence of the dependency is the same as .Dv FETCH_DEPENDS . .It RUN_DEPENDS This definition is deprecated, and is no longer used in the packages collection. It should be replaced by a simple .Dq DEPENDS definition. .It LIB_DEPENDS This definition is deprecated, and is no longer used in the packages collection. It should be replaced by a simple .Dq DEPENDS definition. .It DEPENDS A list of pre-requisite packages. The format of this entry is .Dq pkgname:dir . If the .Dq pkgname package is not installed, then it will be built and installed from the source package in .Dq dir . .It CONFLICTS A list of other ports this package conflicts with. Use this for packages that install identical set of files. The format of this entry is .Dq pkgname . .It RECOMMENDED A list of recommended versions of pre-requisite packages. This should be used together with .Dq DEPENDS to denote which version of a pre-requisite is required and which version is recommended. The format of this entry is .Dq pkgname:dir , the same as for .Dq DEPENDS . .It IGNORE_RECOMMENDED If this is set to .Dq NO (the default), then RECOMMENDED pre-requisites will be turned into dependencies. If set to .Dq YES , recommendations will be ignored and a warning will be printed that packages created with this option are not suitable for distribution. .It EXTRACT_CMD Command for extracting archive. The default is .Xr tar 1 . .It EXTRACT_SUFX Suffix for archive names. The default is .Dq .tar.gz . .It FETCH_CMD Full path to ftp/http command if not in .Dv $PATH . The default is .Pa /usr/bin/ftp . .It NO_IGNORE Set this to .Dq YES (most probably in a .Dq make fetch in .Pa ${PKGSRCDIR} ) if you want to fetch all distfiles, even for packages not built due to limitation by absent X or Motif. .\" XXXmrg -- this shouldn't be documented; if we want to export the .\" feature, give it a different name, or something. .It __PLATFORM_OK Internal variable set if the package is ok to build on this architecture. Set to .Dq YES to insist on e.g. fetching all distfiles (for interactive use in .Pa ${PKGSRCDIR} , mostly. .It ALL_TARGET The target to pass to make in the package when building. The default is .Dq all . .It INSTALL_TARGET The target to pass to make in the package when installing. The default is .Dq install . .It MASTER_SORT List of suffixes for preferred download locations to sort the MASTER_SITES accordingly. .It MASTER_SORT_REGEX Similar to MASTER_SORT, but takes a list of regular expressions for finer grained control. .It OSVERSION_SPECIFIC Used to denote packages, such as LKM's, which are tightly bound to a specific version of the OS. Such binary packages are not backwards compatible with other versions of the OS, and should be uploaded to a version specific directory on the FTP. This variable is not currently used by any of the package system internals, but may be used in the future. Set this to .Dq YES to denote such a package. .El .Sh MOTIF SUPPORT This section documents variables related to the use and installation of Motif and/or LessTif. Also, packages that require a Motif installation need to include motif.buildlink.mk. .Bl -tag -offset indent -width XXXXXXXX .It USE_MOTIF12 Set this in your package if it requires Motif-1.2 headers and/or libraries. If Motif is not present on your system, the lesstif12 package will be installed for you. .It MOTIFBASE If set, it points to an existing Motif-2.0 installation. Otherwise, this is set automatically to the directory of the Motif-2.0 installation used. .It MOTIF12BASE If set, it points to an existing Motif-1.2 installation. Otherwise, this is set automatically to the directory of the Motif-1.2 installation used. .It MOTIFLIB Set automatically to the flags and libraries needed to link the Motif or LessTif library. .El .Sh PACKAGE DISTFILE REPOSITORIES The following variables allow to override the default package repositories, they define a space separated list of mirror sites to be used instead of the defaults to retrieve packages from (usually if there's a closer or cheaper site). .Pp .Sq %SUBDIR% and .Sq ${DIST_SUBDIR} are replaced by a package specific strings. .Pp .Bl -tag -width OBJMACHINE .It Sy MASTER_SITE_BACKUP Backup sites for packages that are maintained in .Sq ftp.NetBSD.org:/pub/NetBSD/packages/distfiles/${DIST_SUBDIR} . .It Sy MASTER_SITE_GNU GNU source mirror. .It Sy MASTER_SITE_LOCAL Local package source distributions that are maintained in .Sq ftp.NetBSD.org:/pub/NetBSD/packages/distfiles/LOCAL_PORTS/ . .It Sy MASTER_SITE_PERL_CPAN Perl CPAN mirror. .It Sy MASTER_SITE_SOURCEFORGE download.sourceforge.net mirror. .It Sy MASTER_SITE_SUNSITE sunsite.unc.edu mirror. .It Sy MASTER_SITE_TEX_CTAN TeX CTAN mirror. .It Sy MASTER_SITE_XCONTRIB X Window System contributed source mirror. .El .Sh SPECIAL VARIABLES Variables to change if you want a special behavior: .Bl -tag -offset indent -width XXXXXXXX .It ECHO_MSG Used to print all the .Dq ===\*[Gt] style prompts - override this to turn them off. The default is .Pa /bin/echo . .It CLEAR_DIRLIST If set, cause the .Dq clean-update target to completely clean up and lose the list of dependent packages. Use with care! .It DEPENDS_TARGET The target to execute when a package is calling a dependency. The default depends on the target that is used: .Dq package for .Dq make package , .Dq update for .Dq make update , and .Dq reinstall for all other targets. .It NOCLEAN If set, prevent the .Dq update target from cleaning up after itself. .It PKG_VERBOSE If set, print out more information about the automatic manual page handling, and package deletion (see the .Dq install , .Dq deinstall and .Dq update targets), and also sets PATCH_DEBUG as well. .It REINSTALL During update, deinstall each package before calling .Sq ${DEPENDS_TARGET} (see the .Dq update target for more information). .It UPDATE_TARGET The target to execute for building a package during .Dq make update . Defaults to .Dq install . Other good targets are .Dq package or .Dq bin-install . Do not set this to .Dq update or you will get stuck in an endless loop! .El .Sh INSTALL VARIABLES This section documents variables that serve as convenient aliases. for your *-install targets. .Bl -tag -offset indent -width XXXXXXXX .It INSTALL_PROGRAM A command to install binary executables. Use these like: .Dq ${INSTALL_PROGRAM} ${WRKSRC}/prog ${PREFIX}/bin . .It INSTALL_SCRIPT A command to install executable scripts. .It INSTALL_DATA A command to install sharable data. .It INSTALL_MAN A command to install man pages (doesn't compress). .It INSTALL_PROGRAM_DIR Create a directory for storing programs. .It INSTALL_SCRIPT_DIR Create a directory for storing scripts. .It INSTALL_DATA_DIR Create a directory for storing arbitrary data. .It INSTALL_MAN_DIR Create a directory for storing man pages. .El .Sh MANUAL PAGE VARIABLES This section documents variables used to configure the way manual pages are installed by this package. .Bl -tag -offset indent -width XXXXXXXX .It MANCOMPRESSED Indicates that the package installs man pages in a compressed form. The default package installs man pages uncompressed. .It INFO_FILES set to the base names of the info files you wish to be installed in the info dir file. Automatically sets .Dv USE_GTEXINFO . .El .Sh PACKAGE TARGETS This section documents the default targets and their behaviors. If any target relies on another target for completion (e.g., the .Dq install target relies on the .Dq build target), then these targets will be executed beforehand. .Bl -tag -offset indent -width XXXXXXXX .It fetch Retrieves .Dv ${DISTFILES} and .Dv ${PATCHFILES} into .Pa ${DISTDIR} as necessary. .It fetch-list Show list of files that would be retrieved by fetch. .It extract Unpacks .Dv ${DISTFILES} into .Pa ${WRKDIR}. .It patch Apply any provided patches to the source. .It configure Runs either GNU configure, one or more local configure scripts or nothing, depending on what's available. .It build Actually compile the sources. .It install Install the results of a build. .It bin-install Install a binary package from local disk and via FTP from a list of sites (see .Dq BINPKG_SITES variable), and do a .Dq make package if no binary package is available anywhere. The arguments given to .Xr pkg_add 1 can be set via .Dq BIN_INSTALL_FLAGS , e.g., to do verbose operation, etc. .It reinstall Install the results of a build, ignoring .Dq already installed flag. .It deinstall Remove the installation. .It update Update the installation of the current package and all dependent packages that are installed on the system. .It replace Update the installation of the current package. This differs from update in that it does not replace dependent packages. You will need to install .Pa pkgsrc/pkgtools/pkg_tarup for this target to work. .It package Create a binary package other people can use. .It clean Clean the source tree for a package. .It clean-depends Clean the source tree for a package and the packages it depends upon. .It clean-update Clean the source tree for a package and all dependent packages that are installed on the system. .It describe Try to generate a one-line description for each package for use in INDEX files and the like. .It checksum Use .Pa files/md5 to ensure that your distfiles are valid. .It makesum Generate .Pa files/md5 (only do this for your own packages!). .It readme Create a README.html file describing the category or package. See .Pa ${PKGSRCDIR}/Packages.txt for more details. .It mirror-distfiles Mirror the distfile(s) if they are freely re-distributable. If .Dv NO_SRC_ON_FTP is set in the package's Makefile (usually to .Pa ${RESTRICTED} ) then that reason is printed, and the distfile is not mirrored. .El .Pp Default sequence for .Dq all is: fetch checksum extract patch configure build. .Pp NEVER override the .Dq regular targets unless you want to open a major can of worms. .Sh SEE ALSO .Xr make 1 , .Xr mk.conf 5 , .Pa ${PKGSRCDIR}/mk/bsd.pkg.defaults.mk and .Rs .%T "Documentation on the NetBSD Package System" .Re .Pa ${PKGSRCDIR}/Packages.txt .Sh HISTORY This manual page is based upon the comments in the .Pa bsd.pkg.mk file, as distributed with .Nx . The sources to this are far and varied across all free BSD projects.