diff options
-rw-r--r-- | mk/bsd.pkg.mk | 3 | ||||
-rw-r--r-- | mk/build/bsd.build-vars.mk | 3 | ||||
-rw-r--r-- | mk/defaults/mk.conf | 10 | ||||
-rw-r--r-- | mk/install/install.mk | 10 | ||||
-rw-r--r-- | mk/plist/plist-gnu.awk | 50 | ||||
-rw-r--r-- | mk/plist/plist.mk | 5 | ||||
-rw-r--r-- | mk/plist/print-plist.mk | 4 |
7 files changed, 76 insertions, 9 deletions
diff --git a/mk/bsd.pkg.mk b/mk/bsd.pkg.mk index 15944e01deb..c0a5e6d2d62 100644 --- a/mk/bsd.pkg.mk +++ b/mk/bsd.pkg.mk @@ -1,4 +1,4 @@ -# $NetBSD: bsd.pkg.mk,v 1.1982 2012/07/18 12:29:12 obache Exp $ +# $NetBSD: bsd.pkg.mk,v 1.1983 2012/12/06 11:36:30 jperkin Exp $ # # This file is in the public domain. # @@ -194,6 +194,7 @@ BSD_MAKE_ENV+= MKHTML=no _BUILD_DEFS= ${BUILD_DEFS} _BUILD_DEFS+= LOCALBASE +_BUILD_DEFS+= PKGGNUDIR _BUILD_DEFS+= PKGINFODIR _BUILD_DEFS+= PKGMANDIR _BUILD_DEFS+= _USE_DESTDIR diff --git a/mk/build/bsd.build-vars.mk b/mk/build/bsd.build-vars.mk index fe63c62a338..c86c9a9a052 100644 --- a/mk/build/bsd.build-vars.mk +++ b/mk/build/bsd.build-vars.mk @@ -1,4 +1,4 @@ -# $NetBSD: bsd.build-vars.mk,v 1.7 2011/09/08 20:17:15 abs Exp $ +# $NetBSD: bsd.build-vars.mk,v 1.8 2012/12/06 11:36:31 jperkin Exp $ # # Package-settable variables: # @@ -40,6 +40,7 @@ MAKE_ENV+= X11BASE=${X11BASE:Q} MAKE_ENV+= X11PREFIX=${X11PREFIX:Q} MAKE_ENV+= PKGMANDIR=${PKGMANDIR:Q} MAKE_ENV+= PKGINFODIR=${PKGINFODIR:Q} +MAKE_ENV+= PKGGNUDIR=${PKGGNUDIR:Q} # Provide a consistent environment for packages using (Net)BSD-style # Makefiles. diff --git a/mk/defaults/mk.conf b/mk/defaults/mk.conf index 50d4b3bc8fe..227d413108b 100644 --- a/mk/defaults/mk.conf +++ b/mk/defaults/mk.conf @@ -1,4 +1,4 @@ -# $NetBSD: mk.conf,v 1.217 2012/11/10 17:13:37 ryoon Exp $ +# $NetBSD: mk.conf,v 1.218 2012/12/06 11:36:31 jperkin Exp $ # # This file provides default values for variables that may be overridden @@ -307,6 +307,14 @@ PKGMANDIR?= man # # See also: PKGINFODIR +PKGGNUDIR?= gnu/ +# The subdirectory of PREFIX that holds gnu programs and manual pages. +# Making this value empty can be useful when trying to build a fully +# GNU environment. +# +# Possible: Any sane pathname including a trailing slash, or empty to +# install into LOCALBASE + BSDSRCDIR?= /usr/src # Where the NetBSD src module source tree is located # used in the emulators/plex86, emulators/vmware-module{,3}, net/arla, diff --git a/mk/install/install.mk b/mk/install/install.mk index f41cff58d0b..1894657dc5a 100644 --- a/mk/install/install.mk +++ b/mk/install/install.mk @@ -1,4 +1,4 @@ -# $NetBSD: install.mk,v 1.64 2012/07/28 21:33:48 reed Exp $ +# $NetBSD: install.mk,v 1.65 2012/12/06 11:36:31 jperkin Exp $ # # This file provides the code for the "install" phase. # @@ -39,8 +39,9 @@ # INSTALLATION_DIRS # A list of directories that should be created at the very # beginning of the install phase. These directories are relative -# to ${PREFIX}. As a convenience, a leading man/ is transformed -# to ${PKGMANDIR}, to save package authors from typing too much. +# to ${PREFIX}. As a convenience, a leading gnu/ is transformed +# to ${PKGGNUDIR} and a leading man/ is transformed to +# ${PKGMANDIR}, to save package authors from typing too much. # # AUTO_MKDIRS # INSTALLATION_DIRS_FROM_PLIST @@ -268,7 +269,7 @@ install-makedirs: .if defined(INSTALLATION_DIRS) && !empty(INSTALLATION_DIRS) @${STEP_MSG} "Creating installation directories" ${RUN} \ - for dir in ${INSTALLATION_DIRS:C,^man/,${PKGMANDIR}/,}; do \ + for dir in ${INSTALLATION_DIRS:C,^gnu/,${PKGGNUDIR},:C,^man/,${PKGMANDIR}/,}; do \ case "$$dir" in \ ${PREFIX}/*) \ dir=`${ECHO} "$$dir" | ${SED} "s|^${PREFIX}/||"` ;; \ @@ -292,6 +293,7 @@ install-dirs-from-PLIST: ${CAT} ${PLIST_SRC} \ | sed -n \ -e 's,\\,\\\\,' \ + -e 's,^gnu/,${PKGGNUDIR},' \ -e 's,^man/,${PKGMANDIR}/,' \ -e 's,^info/,${PKGINFODIR}/,' \ -e 's,^share/locale/,${PKGLOCALEDIR}/locale/,' \ diff --git a/mk/plist/plist-gnu.awk b/mk/plist/plist-gnu.awk new file mode 100644 index 00000000000..4613ec0f6e1 --- /dev/null +++ b/mk/plist/plist-gnu.awk @@ -0,0 +1,50 @@ +# $NetBSD: plist-gnu.awk,v 1.1 2012/12/06 11:36:31 jperkin Exp $ +# +# Copyright (c) 2012 The NetBSD Foundation, Inc. +# All rights reserved. +# +# This code is derived from software contributed to The NetBSD Foundation +# by Jonathan Perkin +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# +# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS +# ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED +# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS +# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. + +### This awk script handles gnu entries in PLISTs. This script +### requires the following scripts to be included: +### +### plist-functions.awk (print_entry) +### +### Certain environment variables must be set prior to running this script: +### +### PKGGNUDIR is the ${PREFIX}-relative path to the installed GNU files. +### +BEGIN { + # PKGGNUDIR is allowed to be empty so we do not provide a default. + PKGGNUDIR = ENVIRON["PKGGNUDIR"] +} + +### +### Convert gnu/ to ${PKGGNUDIR} for all GNU file entries. +### +/^[^@]/ && \ +/^gnu\// { + sub("^gnu/", PKGGNUDIR) +} diff --git a/mk/plist/plist.mk b/mk/plist/plist.mk index ff0417fa580..ad2a9c2c5f6 100644 --- a/mk/plist/plist.mk +++ b/mk/plist/plist.mk @@ -1,4 +1,4 @@ -# $NetBSD: plist.mk,v 1.43 2012/05/27 14:32:28 cheusov Exp $ +# $NetBSD: plist.mk,v 1.44 2012/12/06 11:36:31 jperkin Exp $ # # This Makefile fragment handles the creation of PLISTs for use by # pkg_create(8). @@ -136,6 +136,7 @@ _PLIST_AWK_ENV+= LIBTOOL_EXPAND=${_LIBTOOL_EXPAND:Q} _PLIST_AWK_ENV+= LS=${TOOLS_LS:Q} _PLIST_AWK_ENV+= MANINSTALL=${_PLIST_MANINSTALL:Q} _PLIST_AWK_ENV+= MANZ=${_MANZ:Q} +_PLIST_AWK_ENV+= PKGGNUDIR=${PKGGNUDIR:Q} _PLIST_AWK_ENV+= PKGMANDIR=${PKGMANDIR:Q} _PLIST_AWK_ENV+= PREFIX=${DESTDIR:Q}${PREFIX:Q} _PLIST_AWK_ENV+= TEST=${TOOLS_TEST:Q} @@ -169,6 +170,7 @@ PLIST_SUBST+= OPSYS=${OPSYS:Q} \ RMDIR=${RMDIR:Q} \ RM=${RM:Q} \ TRUE=${TRUE:Q} \ + PKGGNUDIR=${PKGGNUDIR:Q} \ PKGMANDIR=${PKGMANDIR:Q} .for _var_ in ${PLIST_VARS} @@ -187,6 +189,7 @@ _PLIST_1_AWK+= -f ${PKGSRCDIR}/mk/plist/plist-macros.awk _PLIST_AWK+= -f ${.CURDIR}/../../mk/plist/plist-functions.awk _PLIST_AWK+= -f ${.CURDIR}/../../mk/plist/plist-locale.awk +_PLIST_AWK+= -f ${.CURDIR}/../../mk/plist/plist-gnu.awk _PLIST_AWK+= -f ${.CURDIR}/../../mk/plist/plist-info.awk _PLIST_AWK+= -f ${.CURDIR}/../../mk/plist/plist-man.awk _PLIST_AWK+= -f ${.CURDIR}/../../mk/plist/plist-libtool.awk diff --git a/mk/plist/print-plist.mk b/mk/plist/print-plist.mk index 2caee62d6f8..3874dfad973 100644 --- a/mk/plist/print-plist.mk +++ b/mk/plist/print-plist.mk @@ -1,4 +1,4 @@ -# $NetBSD: print-plist.mk,v 1.20 2012/03/08 23:12:16 wiz Exp $ +# $NetBSD: print-plist.mk,v 1.21 2012/12/06 11:36:31 jperkin Exp $ ### ### Automatic PLIST generation @@ -28,6 +28,7 @@ _PRINT_PLIST_AWK_SUBST+= \ gsub(/${PKGNAME_NOREV}/, "$${PKGNAME}"); \ gsub(/${PKGVERSION:S/./\./g:C/nb[0-9]*$$//}/, "$${PKGVERSION}");\ gsub(/^${PKGLOCALEDIR}\/locale/, "share/locale"); \ + gsub("^${PKGGNUDIR}", "gnu/"); \ gsub("^${PKGINFODIR}/", "info/"); \ gsub("^${PKGMANDIR}/", "man/"); _PRINT_PLIST_AWK_SUBST+=} @@ -176,6 +177,7 @@ print-PLIST: /${DESTDIR:S|/|\\/|g:S/+/\\\\+/g}${PREFIX:S|/|\\/|g}\/\.$$/ { next; } \ /${PKG_DBDIR:S|/|\\/|g}\// { next; } \ { sub("${DESTDIR:S/+/\\\\\\+/g}${PREFIX}/\\\\./", ""); } \ + { sub("^${PKGGNUDIR}", "gnu/"); } \ { sub("^${PKGINFODIR}/", "info/"); } \ { sub("^${PKGMANDIR}/", "man/"); } \ /^${PKG_DBDIR:S|^${PREFIX}/||:S|/|\\/|g}(\/|$$)/ { next; } \ |